<?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>234925</bug_id>
          
          <creation_ts>2022-01-06 09:43:06 -0800</creation_ts>
          <short_desc>Manage IndexedDB storage by origin</short_desc>
          <delta_ts>2022-03-31 16:56:21 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=236425</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=237066</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=237335</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=238636</see_also>
          <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>
          <dependson>235236</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sihui Liu">sihui_liu</reporter>
          <assigned_to name="Sihui Liu">sihui_liu</assigned_to>
          <cc>alecflett</cc>
    
    <cc>annulen</cc>
    
    <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jsbell</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1828651</commentid>
    <comment_count>0</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-01-06 09:43:06 -0800</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828716</commentid>
    <comment_count>1</comment_count>
      <attachid>448525</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-01-06 12:28:21 -0800</bug_when>
    <thetext>Created attachment 448525
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829972</commentid>
    <comment_count>2</comment_count>
      <attachid>448895</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-01-11 17:43:28 -0800</bug_when>
    <thetext>Created attachment 448895
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1830582</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-01-13 09:44:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/87555014&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836964</commentid>
    <comment_count>4</comment_count>
      <attachid>450778</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-02-03 09:15:26 -0800</bug_when>
    <thetext>Created attachment 450778
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837063</commentid>
    <comment_count>5</comment_count>
      <attachid>450805</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-02-03 13:02:54 -0800</bug_when>
    <thetext>Created attachment 450805
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837248</commentid>
    <comment_count>6</comment_count>
      <attachid>450863</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-02-03 21:12:52 -0800</bug_when>
    <thetext>Created attachment 450863
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837268</commentid>
    <comment_count>7</comment_count>
      <attachid>450867</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-02-03 22:31:35 -0800</bug_when>
    <thetext>Created attachment 450867
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837277</commentid>
    <comment_count>8</comment_count>
      <attachid>450868</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-02-03 23:02:38 -0800</bug_when>
    <thetext>Created attachment 450868
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837963</commentid>
    <comment_count>9</comment_count>
      <attachid>451054</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-02-06 17:12:13 -0800</bug_when>
    <thetext>Created attachment 451054
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838199</commentid>
    <comment_count>10</comment_count>
      <attachid>451054</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-07 09:05:23 -0800</bug_when>
    <thetext>Comment on attachment 451054
Patch

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

Only a partial review for now as I need to go to a meeting. Will resume later today unless someone else beats me to it.

&gt; Source/WTF/wtf/FileSystem.cpp:663
&gt; +String getSymbolicLinkTarget(const String&amp; symbolicLinkPath)

Why can&apos;t you use the existing FileSystem::realPath() function which already resolves symlinks if present?

Also, no &quot;get&quot; prefix please. And we should add API test coverage (we already have plenty for the FileSytem API) if we do really need a new function here for some reason.

&gt; Source/WTF/wtf/FileSystem.cpp:666
&gt; +    if (!std::filesystem::is_symlink(fileSystemPath))

You need to pass an &apos;ec&apos; parameter to is_symlink() or the function call may throw.

&gt; Source/WTF/wtf/FileSystem.cpp:669
&gt; +    return fromStdFileSystemPath(std::filesystem::read_symlink(fileSystemPath));

You need to pass an &apos;ec&apos; parameter to std::filesystem::read_symlink() or it may throw exceptions.

&gt; Source/WebCore/Modules/indexeddb/server/IDBServer.cpp:742
&gt; +void IDBServer::requestSpace(const ClientOrigin&amp; origin, uint64_t taskSize, CompletionHandler&lt;void(bool)&gt;&amp;&amp; completionHandler) WTF_IGNORES_THREAD_SAFETY_ANALYSIS

Since it is synchronous, it is unclear to me why adding a completion handler is better.

&gt; Source/WebCore/Modules/indexeddb/server/IDBServer.h:91
&gt; +    void registerConnection(UniqueIDBDatabaseConnection&amp;) final;

We usually have a `// UniqueIDBDatabaseManager.` comment before the flow of functions to indicate that those are overrides for UniqueIDBDatabaseManager.

&gt; Source/WebCore/Modules/indexeddb/server/MemoryIDBBackingStore.h:43
&gt; +    WEBCORE_EXPORT MemoryIDBBackingStore(const IDBDatabaseIdentifier&amp;);

Can we please mark this as explicit now that it has a single parameter?

&gt; Source/WebCore/Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:920
&gt;      filename.replace(&apos;.&apos;, &quot;%2E&quot;);

replaceWithLiteral() would probably be more efficient here.

&gt; Source/WebCore/Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:928
&gt; +        return { };

This returns a null String, not an empty string, did you mean to return emptyString() here?

Otherwise, it doesn&apos;t match the encodeDatabaseName() function, which is confusing.

&gt; Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp:840
&gt; +static int myCount = 0;

Unused? Please remove.

&gt; Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp:893
&gt; +        indexKeys = generateIndexKeyMapForValue(globalObject, objectStoreInfo, key, value);

What&apos;s the type of indexKeys? Don&apos;t we need to crossThreadCopy() it?

&gt; Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.h:84
&gt; +    using SpaceCheckResult = std::optional&lt;bool&gt;;

Personally, I find std::optional&lt;bool&gt; a little confusing, especially with a typedef. I find it makes the code using it a little opaque. 
It might look better with an enum class that has 3 values?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838269</commentid>
    <comment_count>11</comment_count>
      <attachid>451054</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-07 11:52:14 -0800</bug_when>
    <thetext>Comment on attachment 451054
Patch

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

r=me with fixes.

&gt; Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabaseConnection.cpp:51
&gt; +        m_manager = WeakPtr { *manager };

WeakPtr { } is not needed, you can just assign `*manager`.

&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:2212
&gt; +    if (auto* storageManager = session-&gt;storageManager())

You are failing to call the completion handler in the else case.

&gt; Source/WebKit/NetworkProcess/cache/CacheStorageEngine.cpp:248
&gt; +    if (auto* storageManager = session-&gt;storageManager())

Callback is not getting called in the else case.

&gt; Source/WebKit/NetworkProcess/storage/IDBStorageManager.cpp:45
&gt; +    for (auto name : fileNames) {

auto&amp;, assuming this is a String.

&gt; Source/WebKit/NetworkProcess/storage/IDBStorageManager.cpp:244
&gt; +    if (identifier.isTransient())

Probably can merge with the previous if condition given that the return is the same.

&gt; Source/WebKit/NetworkProcess/storage/IDBStorageManager.h:53
&gt; +    ~IDBStorageManager() final { }

Seem we shouldn&apos;t need this?

&gt; Source/WebKit/NetworkProcess/storage/IDBStorageRegistry.h:47
&gt; +    WebCore::IDBServer::IDBConnectionToClient&amp; getOrCreateConnectionToClient(IPC::Connection::UniqueID, WebCore::IDBConnectionIdentifier);

Maybe ensureConnectionToClient() would look better?

&gt; Source/WebKit/NetworkProcess/storage/IDBStorageRegistry.h:51
&gt; +    WebCore::IDBServer::UniqueIDBDatabaseConnection* getConnection(uint64_t identifier);

No &quot;get&quot; prefixes in getters.

&gt; Source/WebKit/NetworkProcess/storage/IDBStorageRegistry.h:54
&gt; +    WebCore::IDBServer::UniqueIDBDatabaseTransaction* getTransaction(WebCore::IDBResourceIdentifier);

ditto.

&gt; Source/WebKit/NetworkProcess/storage/QuotaManager.cpp:59
&gt; +    auto clearIsHandlingRequests = makeScopeExit([&amp;] {

I think this is a clear use case for SetForScope?

SetForScope&lt;bool&gt; isHandlingRequests(m_isHandlingRequests, true);

&gt; Source/WebKit/NetworkProcess/storage/QuotaManager.cpp:83
&gt; +    bool shouldUpdateQuotaBasedonUsage = !m_usage;

OnUsage (case issue)

&gt; Source/WebKit/NetworkProcess/storage/QuotaManager.cpp:125
&gt; +    m_quotaCountdown = 0;

Maybe this could call resetQuotaForTesting()?

&gt; Source/WebKit/NetworkProcess/storage/QuotaManager.h:41
&gt; +    enum class Decision { Deny, Grant };

enum class Decision : bool { Deny, Grant };

&gt; Tools/ChangeLog:17
&gt; +2022-02-03  Sihui Liu  &lt;sihui_liu@apple.com&gt;

Double changelog issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838437</commentid>
    <comment_count>12</comment_count>
      <attachid>451054</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-02-07 17:01:51 -0800</bug_when>
    <thetext>Comment on attachment 451054
Patch

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

&gt;&gt; Source/WTF/wtf/FileSystem.cpp:663
&gt;&gt; +String getSymbolicLinkTarget(const String&amp; symbolicLinkPath)
&gt; 
&gt; Why can&apos;t you use the existing FileSystem::realPath() function which already resolves symlinks if present?
&gt; 
&gt; Also, no &quot;get&quot; prefix please. And we should add API test coverage (we already have plenty for the FileSytem API) if we do really need a new function here for some reason.

Didn&apos;t see that. I will use realPath instead.

&gt;&gt; Source/WTF/wtf/FileSystem.cpp:666
&gt;&gt; +    if (!std::filesystem::is_symlink(fileSystemPath))
&gt; 
&gt; You need to pass an &apos;ec&apos; parameter to is_symlink() or the function call may throw.

Will remove this change.

&gt;&gt; Source/WTF/wtf/FileSystem.cpp:669
&gt;&gt; +    return fromStdFileSystemPath(std::filesystem::read_symlink(fileSystemPath));
&gt; 
&gt; You need to pass an &apos;ec&apos; parameter to std::filesystem::read_symlink() or it may throw exceptions.

Will remove this change.

&gt;&gt; Source/WebCore/Modules/indexeddb/server/IDBServer.cpp:742
&gt;&gt; +void IDBServer::requestSpace(const ClientOrigin&amp; origin, uint64_t taskSize, CompletionHandler&lt;void(bool)&gt;&amp;&amp; completionHandler) WTF_IGNORES_THREAD_SAFETY_ANALYSIS
&gt; 
&gt; Since it is synchronous, it is unclear to me why adding a completion handler is better.

This is the virtual function in UniqueIDBDatabaseManager; IDBServer just implements the function in a synchronous way now.

&gt;&gt; Source/WebCore/Modules/indexeddb/server/IDBServer.h:91
&gt;&gt; +    void registerConnection(UniqueIDBDatabaseConnection&amp;) final;
&gt; 
&gt; We usually have a `// UniqueIDBDatabaseManager.` comment before the flow of functions to indicate that those are overrides for UniqueIDBDatabaseManager.

Sure.

&gt;&gt; Source/WebCore/Modules/indexeddb/server/MemoryIDBBackingStore.h:43
&gt;&gt; +    WEBCORE_EXPORT MemoryIDBBackingStore(const IDBDatabaseIdentifier&amp;);
&gt; 
&gt; Can we please mark this as explicit now that it has a single parameter?

Sure.

&gt;&gt; Source/WebCore/Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:920
&gt;&gt;      filename.replace(&apos;.&apos;, &quot;%2E&quot;);
&gt; 
&gt; replaceWithLiteral() would probably be more efficient here.

Sure.

&gt;&gt; Source/WebCore/Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:928
&gt;&gt; +        return { };
&gt; 
&gt; This returns a null String, not an empty string, did you mean to return emptyString() here?
&gt; 
&gt; Otherwise, it doesn&apos;t match the encodeDatabaseName() function, which is confusing.

Sure, will change to emptyString().

&gt;&gt; Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp:840
&gt;&gt; +static int myCount = 0;
&gt; 
&gt; Unused? Please remove.

ouch.. will remove

&gt;&gt; Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp:893
&gt;&gt; +        indexKeys = generateIndexKeyMapForValue(globalObject, objectStoreInfo, key, value);
&gt; 
&gt; What&apos;s the type of indexKeys? Don&apos;t we need to crossThreadCopy() it?

It&apos;s map of IDBKeyDatas. Will add crossThreadCopy().

&gt;&gt; Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.h:84
&gt;&gt; +    using SpaceCheckResult = std::optional&lt;bool&gt;;
&gt; 
&gt; Personally, I find std::optional&lt;bool&gt; a little confusing, especially with a typedef. I find it makes the code using it a little opaque. 
&gt; It might look better with an enum class that has 3 values?

Okay, will change it to a enum class.

&gt;&gt; Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabaseConnection.cpp:51
&gt;&gt; +        m_manager = WeakPtr { *manager };
&gt; 
&gt; WeakPtr { } is not needed, you can just assign `*manager`.

Will change.

&gt;&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:2212
&gt;&gt; +    if (auto* storageManager = session-&gt;storageManager())
&gt; 
&gt; You are failing to call the completion handler in the else case.

Will add!

&gt;&gt; Source/WebKit/NetworkProcess/cache/CacheStorageEngine.cpp:248
&gt;&gt; +    if (auto* storageManager = session-&gt;storageManager())
&gt; 
&gt; Callback is not getting called in the else case.

Oops, wil change.

&gt;&gt; Source/WebKit/NetworkProcess/storage/IDBStorageManager.cpp:45
&gt;&gt; +    for (auto name : fileNames) {
&gt; 
&gt; auto&amp;, assuming this is a String.

Okay.

&gt;&gt; Source/WebKit/NetworkProcess/storage/IDBStorageManager.cpp:244
&gt;&gt; +    if (identifier.isTransient())
&gt; 
&gt; Probably can merge with the previous if condition given that the return is the same.

Sure.

&gt;&gt; Source/WebKit/NetworkProcess/storage/IDBStorageManager.h:53
&gt;&gt; +    ~IDBStorageManager() final { }
&gt; 
&gt; Seem we shouldn&apos;t need this?

Will remove.

&gt;&gt; Source/WebKit/NetworkProcess/storage/IDBStorageRegistry.h:47
&gt;&gt; +    WebCore::IDBServer::IDBConnectionToClient&amp; getOrCreateConnectionToClient(IPC::Connection::UniqueID, WebCore::IDBConnectionIdentifier);
&gt; 
&gt; Maybe ensureConnectionToClient() would look better?

Sure.

&gt;&gt; Source/WebKit/NetworkProcess/storage/IDBStorageRegistry.h:51
&gt;&gt; +    WebCore::IDBServer::UniqueIDBDatabaseConnection* getConnection(uint64_t identifier);
&gt; 
&gt; No &quot;get&quot; prefixes in getters.

Will remove.

&gt;&gt; Source/WebKit/NetworkProcess/storage/IDBStorageRegistry.h:54
&gt;&gt; +    WebCore::IDBServer::UniqueIDBDatabaseTransaction* getTransaction(WebCore::IDBResourceIdentifier);
&gt; 
&gt; ditto.

Will remove.

&gt;&gt; Source/WebKit/NetworkProcess/storage/QuotaManager.cpp:59
&gt;&gt; +    auto clearIsHandlingRequests = makeScopeExit([&amp;] {
&gt; 
&gt; I think this is a clear use case for SetForScope?
&gt; 
&gt; SetForScope&lt;bool&gt; isHandlingRequests(m_isHandlingRequests, true);

Yes!

&gt;&gt; Source/WebKit/NetworkProcess/storage/QuotaManager.cpp:83
&gt;&gt; +    bool shouldUpdateQuotaBasedonUsage = !m_usage;
&gt; 
&gt; OnUsage (case issue)

Will update.

&gt;&gt; Source/WebKit/NetworkProcess/storage/QuotaManager.cpp:125
&gt;&gt; +    m_quotaCountdown = 0;
&gt; 
&gt; Maybe this could call resetQuotaForTesting()?

Sure.

&gt;&gt; Source/WebKit/NetworkProcess/storage/QuotaManager.h:41
&gt;&gt; +    enum class Decision { Deny, Grant };
&gt; 
&gt; enum class Decision : bool { Deny, Grant };

Sure.

&gt;&gt; Tools/ChangeLog:17
&gt;&gt; +2022-02-03  Sihui Liu  &lt;sihui_liu@apple.com&gt;
&gt; 
&gt; Double changelog issue.

Will remove.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838448</commentid>
    <comment_count>13</comment_count>
      <attachid>451180</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-02-07 17:16:48 -0800</bug_when>
    <thetext>Created attachment 451180
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838479</commentid>
    <comment_count>14</comment_count>
      <attachid>451190</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-02-07 18:43:48 -0800</bug_when>
    <thetext>Created attachment 451190
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838495</commentid>
    <comment_count>15</comment_count>
      <attachid>451197</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-02-07 19:37:17 -0800</bug_when>
    <thetext>Created attachment 451197
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838554</commentid>
    <comment_count>16</comment_count>
      <attachid>451216</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-02-08 00:43:34 -0800</bug_when>
    <thetext>Created attachment 451216
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838704</commentid>
    <comment_count>17</comment_count>
      <attachid>451257</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-02-08 09:04:54 -0800</bug_when>
    <thetext>Created attachment 451257
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838774</commentid>
    <comment_count>18</comment_count>
      <attachid>451278</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-02-08 11:00:48 -0800</bug_when>
    <thetext>Created attachment 451278
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838929</commentid>
    <comment_count>19</comment_count>
      <attachid>451316</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-02-08 15:48:19 -0800</bug_when>
    <thetext>Created attachment 451316
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839162</commentid>
    <comment_count>20</comment_count>
      <attachid>451380</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-02-09 08:12:31 -0800</bug_when>
    <thetext>Created attachment 451380
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839191</commentid>
    <comment_count>21</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-09 08:56:30 -0800</bug_when>
    <thetext>Committed r289474 (247017@main): &lt;https://commits.webkit.org/247017@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 451380.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448525</attachid>
            <date>2022-01-06 12:28:21 -0800</date>
            <delta_ts>2022-01-11 17:43:26 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>WIP_idb</filename>
            <type>text/plain</type>
            <size>241775</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dURi93
dGYvRmlsZVN5c3RlbS5jcHAKaW5kZXggZjZlZmQzZTcwNzY1Li42OWUwNTkxYTE1YjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L0ZpbGVTeXN0ZW0uY3BwCkBAIC02NTYsNiArNjU2LDE1IEBAIGJvb2wgY3JlYXRlU3ltYm9saWNM
aW5rKGNvbnN0IFN0cmluZyYgdGFyZ2V0UGF0aCwgY29uc3QgU3RyaW5nJiBzeW1ib2xpY0xpbmtQ
YXRoCiAgICAgcmV0dXJuICFlYzsKIH0KIAorU3RyaW5nIHJlYWRTeW1ib2xpY0xpbmsoY29uc3Qg
U3RyaW5nJiBzeW1ib2xpY0xpbmtQYXRoKQoreworICAgIGF1dG8gZmlsZVN5c3RlbVBhdGggPSB0
b1N0ZEZpbGVTeXN0ZW1QYXRoKHN5bWJvbGljTGlua1BhdGgpOworICAgIGlmICghc3RkOjpmaWxl
c3lzdGVtOjppc19zeW1saW5rKGZpbGVTeXN0ZW1QYXRoKSkKKyAgICAgICAgcmV0dXJuIHN5bWJv
bGljTGlua1BhdGg7CisKKyAgICByZXR1cm4gZnJvbVN0ZEZpbGVTeXN0ZW1QYXRoKHN0ZDo6Zmls
ZXN5c3RlbTo6cmVhZF9zeW1saW5rKGZpbGVTeXN0ZW1QYXRoKSk7Cit9CisKIGJvb2wgaGFyZExp
bmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIGxpbmtQYXRoKQogewog
ICAgIHN0ZDo6ZXJyb3JfY29kZSBlYzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVT
eXN0ZW0uaCBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaAppbmRleCBjZTY4MTI4NjBhMDAu
LjZhMGFhZmFlZWY0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaApAQCAtMTI3LDYgKzEyNyw3IEBAIFdURl9F
WFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB2b2x1bWVGcmVlU3BhY2UoY29u
c3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4g
dm9sdW1lRmlsZUJsb2NrU2l6ZShjb25zdCBTdHJpbmcmKTsKIFdURl9FWFBPUlRfUFJJVkFURSBz
dGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJik7CiBX
VEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjcmVhdGVTeW1ib2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0
YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGljTGlua1BhdGgpOworV1RGX0VYUE9SVF9Q
UklWQVRFIFN0cmluZyByZWFkU3ltYm9saWNMaW5rKGNvbnN0IFN0cmluZyYgc3ltYm9saWNMaW5r
UGF0aCk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGNyZWF0ZVRlbXBvcmFyeVppcEFyY2hp
dmUoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpOwogCiBlbnVtIGNsYXNzIEZpbGVUeXBlIHsgUmVn
dWxhciwgRGlyZWN0b3J5LCBTeW1ib2xpY0xpbmsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmgKaW5kZXggNmMw
YjFiNGYyYWIwLi43ZjA5YmZiMzJkNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oCkBAIC04Miw3ICs4Miw3
IEBAIHB1YmxpYzoKICAgICBib29sIGlzVHJhbnNpZW50KCkgY29uc3QgeyByZXR1cm4gbV9pc1Ry
YW5zaWVudDsgfQogCiAgICAgU3RyaW5nIGRhdGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVUb1Jvb3Qo
Y29uc3QgU3RyaW5nJiByb290RGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIHZlcnNpb25TdHJpbmc9
InYxIikgY29uc3Q7Ci0gICAgc3RhdGljIFN0cmluZyBkYXRhYmFzZURpcmVjdG9yeVJlbGF0aXZl
VG9Sb290KGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgdG9wTGV2ZWxPcmlnaW4sIGNvbnN0IFNl
Y3VyaXR5T3JpZ2luRGF0YSYgb3BlbmluZ09yaWdpbiwgY29uc3QgU3RyaW5nJiByb290RGlyZWN0
b3J5LCBjb25zdCBTdHJpbmcmIHZlcnNpb25TdHJpbmcpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBTdHJpbmcgZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9vdChjb25zdCBTZWN1cml0
eU9yaWdpbkRhdGEmIHRvcExldmVsT3JpZ2luLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9w
ZW5pbmdPcmlnaW4sIGNvbnN0IFN0cmluZyYgcm9vdERpcmVjdG9yeSwgY29uc3QgU3RyaW5nJiB2
ZXJzaW9uU3RyaW5nKTsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2Rl
KEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxJREJEYXRhYmFzZUlkZW50aWZpZXI+IGRlY29kZShEZWNvZGVyJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQ29ubmVj
dGlvblRvQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
SURCQ29ubmVjdGlvblRvQ2xpZW50LmgKaW5kZXggMjdmNzI2OTE5ZjE0Li5lZDQ3YTBiZDAyODEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJD
b25uZWN0aW9uVG9DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvSURCQ29ubmVjdGlvblRvQ2xpZW50LmgKQEAgLTc0LDcgKzc0LDcgQEAgcHVibGlj
OgogCiAgICAgdm9pZCBub3RpZnlPcGVuREJSZXF1ZXN0QmxvY2tlZChjb25zdCBJREJSZXNvdXJj
ZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBvbGRWZXJzaW9uLCB1aW50
NjRfdCBuZXdWZXJzaW9uKTsKIAotICAgIHZvaWQgZGlkR2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZl
cnNpb25zKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYsIFZlY3RvcjxJREJEYXRhYmFzZU5h
bWVBbmRWZXJzaW9uPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZEdldEFsbERhdGFi
YXNlTmFtZXNBbmRWZXJzaW9ucyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImLCBWZWN0b3I8
SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbj4mJik7CiAKICAgICB2b2lkIHJlZ2lzdGVyRGF0YWJh
c2VDb25uZWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYpOwogICAgIHZvaWQgdW5y
ZWdpc3RlckRhdGFiYXNlQ29ubmVjdGlvbihVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJT
ZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNl
cnZlci5jcHAKaW5kZXggNzQ1NmE5M2M1YTMzLi4yNzQyZTJjOWI4YmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwCkBA
IC0xMDEsMTMgKzEwMSwxMyBAQCB2b2lkIElEQlNlcnZlcjo6dW5yZWdpc3RlclRyYW5zYWN0aW9u
KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQogICAgIG1fdHJhbnNh
Y3Rpb25zLnJlbW92ZSh0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpKTsKIH0KIAotdm9p
ZCBJREJTZXJ2ZXI6OnJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNl
Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKK3ZvaWQgSURCU2VydmVyOjpyZWdpc3RlckNvbm5lY3Rp
b24oVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogewogICAgIEFTU0VS
VCghbV9kYXRhYmFzZUNvbm5lY3Rpb25zLmNvbnRhaW5zKGNvbm5lY3Rpb24uaWRlbnRpZmllcigp
KSk7CiAgICAgbV9kYXRhYmFzZUNvbm5lY3Rpb25zLnNldChjb25uZWN0aW9uLmlkZW50aWZpZXIo
KSwgJmNvbm5lY3Rpb24pOwogfQogCi12b2lkIElEQlNlcnZlcjo6dW5yZWdpc3RlckRhdGFiYXNl
Q29ubmVjdGlvbihVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCit2b2lk
IElEQlNlcnZlcjo6dW5yZWdpc3RlckNvbm5lY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0
aW9uJiBjb25uZWN0aW9uKQogewogICAgIEFTU0VSVChtX2RhdGFiYXNlQ29ubmVjdGlvbnMuY29u
dGFpbnMoY29ubmVjdGlvbi5pZGVudGlmaWVyKCkpKTsKICAgICBtX2RhdGFiYXNlQ29ubmVjdGlv
bnMucmVtb3ZlKGNvbm5lY3Rpb24uaWRlbnRpZmllcigpKTsKQEAgLTEyOCwxMyArMTI4LDEzIEBA
IHN0ZDo6dW5pcXVlX3B0cjxJREJCYWNraW5nU3RvcmU+IElEQlNlcnZlcjo6Y3JlYXRlQmFja2lu
Z1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7
CiAgICAgaWYgKG1fZGF0YWJhc2VEaXJlY3RvcnlQYXRoLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8TWVtb3J5SURCQmFja2luZ1N0b3JlPihtX3Nlc3Npb25JRCwgaWRlbnRp
Zmllcik7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPE1lbW9yeUlEQkJhY2tpbmdTdG9yZT4o
aWRlbnRpZmllcik7CiAKICAgICBBU1NFUlQoIW1fc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpOwog
ICAgIGlmIChpZGVudGlmaWVyLmlzVHJhbnNpZW50KCkpCi0gICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPE1lbW9yeUlEQkJhY2tpbmdTdG9yZT4obV9zZXNzaW9uSUQsIGlkZW50aWZpZXIpOworICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxNZW1vcnlJREJCYWNraW5nU3RvcmU+KGlkZW50aWZpZXIp
OwogCi0gICAgcmV0dXJuIG1ha2VVbmlxdWU8U1FMaXRlSURCQmFja2luZ1N0b3JlPihtX3Nlc3Np
b25JRCwgaWRlbnRpZmllciwgbV9kYXRhYmFzZURpcmVjdG9yeVBhdGgpOworICAgIHJldHVybiBt
YWtlVW5pcXVlPFNRTGl0ZUlEQkJhY2tpbmdTdG9yZT4oaWRlbnRpZmllciwgdXBncmFkZWREYXRh
YmFzZURpcmVjdG9yeShpZGVudGlmaWVyKSk7CiB9CiAKIHZvaWQgSURCU2VydmVyOjpvcGVuRGF0
YWJhc2UoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhKQpAQCAtMTc3LDE3ICsxNzcs
NiBAQCB2b2lkIElEQlNlcnZlcjo6ZGVsZXRlRGF0YWJhc2UoY29uc3QgSURCUmVxdWVzdERhdGEm
IHJlcXVlc3REYXRhKQogICAgICAgICBtX3VuaXF1ZUlEQkRhdGFiYXNlTWFwLnJlbW92ZShkYXRh
YmFzZS0+aWRlbnRpZmllcigpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPFVuaXF1ZUlEQkRhdGFi
YXNlPiBJREJTZXJ2ZXI6OmNsb3NlQW5kVGFrZVVuaXF1ZUlEQkRhdGFiYXNlKFVuaXF1ZUlEQkRh
dGFiYXNlJiBkYXRhYmFzZSkKLXsKLSAgICBMT0coSW5kZXhlZERCLCAiSURCU2VydmVyOjpjbG9z
ZVVuaXF1ZUlEQkRhdGFiYXNlIik7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLQotICAg
IGF1dG8gdW5pcXVlUG9pbnRlciA9IG1fdW5pcXVlSURCRGF0YWJhc2VNYXAudGFrZShkYXRhYmFz
ZS5pZGVudGlmaWVyKCkpOwotICAgIEFTU0VSVCh1bmlxdWVQb2ludGVyKTsKLQotICAgIHJldHVy
biB1bmlxdWVQb2ludGVyOwotfQotCiB2b2lkIElEQlNlcnZlcjo6YWJvcnRUcmFuc2FjdGlvbihj
b25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcikKIHsKICAg
ICBMT0coSW5kZXhlZERCLCAiSURCU2VydmVyOjphYm9ydFRyYW5zYWN0aW9uIik7CkBAIC03NDcs
NyArNzM2LDcgQEAgdm9pZCBJREJTZXJ2ZXI6OnJlbmFtZU9yaWdpbihjb25zdCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEmIG9sZE9yaWdpbiwgY29uc3QKICAgICAgICAgRmlsZVN5c3RlbTo6
bW92ZUZpbGUob2xkT3JpZ2luUGF0aCwgbmV3T3JpZ2luUGF0aCk7CiB9CiAKLVN0b3JhZ2VRdW90
YU1hbmFnZXI6OkRlY2lzaW9uIElEQlNlcnZlcjo6cmVxdWVzdFNwYWNlKGNvbnN0IENsaWVudE9y
aWdpbiYgb3JpZ2luLCB1aW50NjRfdCB0YXNrU2l6ZSkgV1RGX0lHTk9SRVNfVEhSRUFEX1NBRkVU
WV9BTkFMWVNJUwordm9pZCBJREJTZXJ2ZXI6OnJlcXVlc3RTcGFjZShjb25zdCBDbGllbnRPcmln
aW4mIG9yaWdpbiwgdWludDY0X3QgdGFza1NpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIFdURl9JR05PUkVTX1RIUkVBRF9TQUZFVFlfQU5BTFlT
SVMKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQobV9sb2NrLmlz
SGVsZCgpKTsKQEAgLTc1OSw3ICs3NDgsNyBAQCBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lv
biBJREJTZXJ2ZXI6OnJlcXVlc3RTcGFjZShjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbgogICAg
IHJlc3VsdCA9IG1fc3BhY2VSZXF1ZXN0ZXIob3JpZ2luLCB0YXNrU2l6ZSk7CiAgICAgbV9sb2Nr
LmxvY2soKTsKIAotICAgIHJldHVybiByZXN1bHQ7CisgICAgY29tcGxldGlvbkhhbmRsZXIocmVz
dWx0ID09IFN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uOjpHcmFudCk7CiB9CiAKIHVpbnQ2
NF90IElEQlNlcnZlcjo6ZGlza1VzYWdlKGNvbnN0IFN0cmluZyYgcm9vdERpcmVjdG9yeSwgY29u
c3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4pCkBAIC03ODEsNiArNzcwLDIzIEBAIHZvaWQgSURCU2Vy
dmVyOjp1cGdyYWRlRmlsZXNJZk5lY2Vzc2FyeSgpCiAgICAgICAgIEZpbGVTeXN0ZW06Om1ha2VB
bGxEaXJlY3RvcmllcyhuZXdWZXJzaW9uRGlyZWN0b3J5KTsKIH0KIAorU3RyaW5nIElEQlNlcnZl
cjo6dXBncmFkZWREYXRhYmFzZURpcmVjdG9yeShjb25zdCBXZWJDb3JlOjpJREJEYXRhYmFzZUlk
ZW50aWZpZXImIGlkZW50aWZpZXIpCit7CisgICAgU3RyaW5nIG9sZE9yaWdpbkRpcmVjdG9yeSA9
IGlkZW50aWZpZXIuZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9vdChtX2RhdGFiYXNlRGly
ZWN0b3J5UGF0aCwgInYwIik7CisgICAgU3RyaW5nIG9sZERhdGFiYXNlRGlyZWN0b3J5ID0gRmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG9sZE9yaWdpbkRpcmVjdG9yeSwgU1FM
aXRlSURCQmFja2luZ1N0b3JlOjplbmNvZGVEYXRhYmFzZU5hbWUoaWRlbnRpZmllci5kYXRhYmFz
ZU5hbWUoKSkpOworICAgIFN0cmluZyBuZXdPcmlnaW5EaXJlY3RvcnkgPSBpZGVudGlmaWVyLmRh
dGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVUb1Jvb3QobV9kYXRhYmFzZURpcmVjdG9yeVBhdGgsICJ2
MSIpOworICAgIFN0cmluZyBmaWxlTmFtZUhhc2ggPSBTUUxpdGVGaWxlU3lzdGVtOjpjb21wdXRl
SGFzaEZvckZpbGVOYW1lKGlkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCkpOworICAgIFN0cmluZyBu
ZXdEYXRhYmFzZURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChuZXdPcmlnaW5EaXJlY3RvcnksIGZpbGVOYW1lSGFzaCk7CisgICAgRmlsZVN5c3RlbTo6bWFr
ZUFsbERpcmVjdG9yaWVzKG5ld0RhdGFiYXNlRGlyZWN0b3J5KTsKKworICAgIGlmIChGaWxlU3lz
dGVtOjpmaWxlRXhpc3RzKG9sZERhdGFiYXNlRGlyZWN0b3J5KSkgeworICAgICAgICBGaWxlU3lz
dGVtOjptb3ZlRmlsZShvbGREYXRhYmFzZURpcmVjdG9yeSwgbmV3RGF0YWJhc2VEaXJlY3Rvcnkp
OworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeShvbGRPcmlnaW5EaXJl
Y3RvcnkpOworICAgIH0KKworICAgIHJldHVybiBuZXdEYXRhYmFzZURpcmVjdG9yeTsKK30KKwog
Ym9vbCBJREJTZXJ2ZXI6Omhhc0RhdGFiYXNlQWN0aXZpdGllc09uTWFpblRocmVhZCgpIGNvbnN0
CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaAppbmRleCBkODgzNjQ5YTVjOGQu
LmU5NzQ2ZmU3NTU3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0lEQlNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9JREJTZXJ2ZXIuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIlN0b3Jh
Z2VRdW90YU1hbmFnZXIuaCIKICNpbmNsdWRlICJVbmlxdWVJREJEYXRhYmFzZS5oIgogI2luY2x1
ZGUgIlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIlVuaXF1ZUlEQkRh
dGFiYXNlTWFuYWdlci5oIgogI2luY2x1ZGUgPHBhbC9IeXN0ZXJlc2lzQWN0aXZpdHkuaD4KICNp
bmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkVGFza0hh
bmRsZXIuaD4KQEAgLTQ4LDggKzQ5LDcgQEAgc3RydWN0IElEQkdldFJlY29yZERhdGE7CiAKIG5h
bWVzcGFjZSBJREJTZXJ2ZXIgewogCi1jbGFzcyBJREJTZXJ2ZXIgewotICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOworY2xhc3MgSURCU2VydmVyIDogcHVibGljIFVuaXF1ZUlEQkRhdGFiYXNl
TWFuYWdlciB7CiBwdWJsaWM6CiAgICAgdXNpbmcgU3RvcmFnZVF1b3RhTWFuYWdlclNwYWNlUmVx
dWVzdGVyID0gRnVuY3Rpb248U3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb24oY29uc3QgQ2xp
ZW50T3JpZ2luJiwgdWludDY0X3Qgc3BhY2VSZXF1ZXN0ZWQpPjsKICAgICBXRUJDT1JFX0VYUE9S
VCBJREJTZXJ2ZXIoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXJlY3Rv
cnlQYXRoLCBTdG9yYWdlUXVvdGFNYW5hZ2VyU3BhY2VSZXF1ZXN0ZXImJiwgTG9jayYpOwpAQCAt
ODksMTQgKzg5LDExIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldEFsbERh
dGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhJREJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURC
UmVzb3VyY2VJZGVudGlmaWVyJiwgY29uc3QgQ2xpZW50T3JpZ2luJik7CiAKIAotICAgIHZvaWQg
cmVnaXN0ZXJEYXRhYmFzZUNvbm5lY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJik7
Ci0gICAgdm9pZCB1bnJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNl
Q29ubmVjdGlvbiYpOwotICAgIHZvaWQgcmVnaXN0ZXJUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRh
YmFzZVRyYW5zYWN0aW9uJik7Ci0gICAgdm9pZCB1bnJlZ2lzdGVyVHJhbnNhY3Rpb24oVW5pcXVl
SURCRGF0YWJhc2VUcmFuc2FjdGlvbiYpOwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPFVuaXF1ZUlE
QkRhdGFiYXNlPiBjbG9zZUFuZFRha2VVbmlxdWVJREJEYXRhYmFzZShVbmlxdWVJREJEYXRhYmFz
ZSYpOwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPElEQkJhY2tpbmdTdG9yZT4gY3JlYXRlQmFja2lu
Z1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYpOworICAgIHZvaWQgcmVnaXN0ZXJD
b25uZWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYpIGZpbmFsOworICAgIHZvaWQg
dW5yZWdpc3RlckNvbm5lY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJikgZmluYWw7
CisgICAgdm9pZCByZWdpc3RlclRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rp
b24mKSBmaW5hbDsKKyAgICB2b2lkIHVucmVnaXN0ZXJUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRh
YmFzZVRyYW5zYWN0aW9uJikgZmluYWw7CisgICAgc3RkOjp1bmlxdWVfcHRyPElEQkJhY2tpbmdT
dG9yZT4gY3JlYXRlQmFja2luZ1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYpIGZp
bmFsOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgSGFzaFNldDxTZWN1cml0eU9yaWdpbkRhdGE+IGdl
dE9yaWdpbnMoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsb3NlQW5kRGVsZXRl
RGF0YWJhc2VzTW9kaWZpZWRTaW5jZShXYWxsVGltZSk7CkBAIC0xMDQsNyArMTAxLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgY2xvc2VEYXRhYmFzZXNGb3JPcmlnaW5zKGNvbnN0IFZlY3RvcjxTZWN1
cml0eU9yaWdpbkRhdGE+JiwgRnVuY3Rpb248Ym9vbChjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEm
LCBjb25zdCBDbGllbnRPcmlnaW4mKT4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW5h
bWVPcmlnaW4oY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhJik7CiAKLSAgICBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNp
c2lvbiByZXF1ZXN0U3BhY2UoY29uc3QgQ2xpZW50T3JpZ2luJiwgdWludDY0X3QgdGFza1NpemUp
OworICAgIHZvaWQgcmVxdWVzdFNwYWNlKGNvbnN0IENsaWVudE9yaWdpbiYsIHVpbnQ2NF90IHNp
emUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZpbmFsOwogICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyB1aW50NjRfdCBkaXNrVXNhZ2UoY29uc3QgU3RyaW5nJiByb290RGlyZWN0
b3J5LCBjb25zdCBDbGllbnRPcmlnaW4mKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFz
RGF0YWJhc2VBY3Rpdml0aWVzT25NYWluVGhyZWFkKCkgY29uc3Q7CkBAIC0xMTQsNiArMTExLDcg
QEAgcHJpdmF0ZToKICAgICBVbmlxdWVJREJEYXRhYmFzZSYgZ2V0T3JDcmVhdGVVbmlxdWVJREJE
YXRhYmFzZShjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImKTsKIAogICAgIHZvaWQgdXBncmFk
ZUZpbGVzSWZOZWNlc3NhcnkoKTsKKyAgICBTdHJpbmcgdXBncmFkZWREYXRhYmFzZURpcmVjdG9y
eShjb25zdCBXZWJDb3JlOjpJREJEYXRhYmFzZUlkZW50aWZpZXImKTsKICAgICB2b2lkIHJlbW92
ZURhdGFiYXNlc01vZGlmaWVkU2luY2VGb3JWZXJzaW9uKFdhbGxUaW1lLCBjb25zdCBTdHJpbmcm
KTsKICAgICB2b2lkIHJlbW92ZURhdGFiYXNlc1dpdGhPcmlnaW5zRm9yVmVyc2lvbihjb25zdCBW
ZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiYsIGNvbnN0IFN0cmluZyYpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2lu
Z1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1v
cnlJREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDdlZTQxNDBhOGFmMS4uZDYzMzUwMzA5OTMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5
SURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcApAQCAtNDQsOSArNDQsOCBAQCBuYW1l
c3BhY2UgSURCU2VydmVyIHsKIC8vIFRoZSBJbmRleGVkREIgc3BlYyBzdGF0ZXMgdGhlIG1heGlt
dW0gdmFsdWUgeW91IGNhbiBnZXQgZnJvbSB0aGUga2V5IGdlbmVyYXRvciBpcyAyXjUzLgogY29u
c3RleHByIHVpbnQ2NF90IG1heEdlbmVyYXRlZEtleVZhbHVlID0gMHgyMDAwMDAwMDAwMDAwMDsK
IAotTWVtb3J5SURCQmFja2luZ1N0b3JlOjpNZW1vcnlJREJCYWNraW5nU3RvcmUoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImIGlkZW50aWZpZXIp
CitNZW1vcnlJREJCYWNraW5nU3RvcmU6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZShjb25zdCBJREJE
YXRhYmFzZUlkZW50aWZpZXImIGlkZW50aWZpZXIpCiAgICAgOiBtX2lkZW50aWZpZXIoaWRlbnRp
ZmllcikKLSAgICAsIG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKIHsKIH0KIApAQCAtMTM0LDcgKzEz
Myw3IEBAIElEQkVycm9yIE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUo
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7
IENvbnN0cmFpbnRFcnJvciB9OwogCiAgICAgQVNTRVJUKCFtX29iamVjdFN0b3Jlc0J5SWRlbnRp
Zmllci5jb250YWlucyhpbmZvLmlkZW50aWZpZXIoKSkpOwotICAgIGF1dG8gb2JqZWN0U3RvcmUg
PSBNZW1vcnlPYmplY3RTdG9yZTo6Y3JlYXRlKG1fc2Vzc2lvbklELCBpbmZvKTsKKyAgICBhdXRv
IG9iamVjdFN0b3JlID0gTWVtb3J5T2JqZWN0U3RvcmU6OmNyZWF0ZShpbmZvKTsKIAogICAgIG1f
ZGF0YWJhc2VJbmZvLT5hZGRFeGlzdGluZ09iamVjdFN0b3JlKGluZm8pOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2lu
Z1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5
SURCQmFja2luZ1N0b3JlLmgKaW5kZXggOTJhYTc2MGQyMDczLi40MTFhZGY2MTdjMGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJC
YWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmgKQEAgLTQxLDggKzQxLDggQEAgY2xhc3MgTWVtb3J5
T2JqZWN0U3RvcmU7CiBjbGFzcyBNZW1vcnlJREJCYWNraW5nU3RvcmUgZmluYWwgOiBwdWJsaWMg
SURCQmFja2luZ1N0b3JlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
LSAgICBNZW1vcnlJREJCYWNraW5nU3RvcmUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IElEQkRhdGFi
YXNlSWRlbnRpZmllciYpOwotICAgIH5NZW1vcnlJREJCYWNraW5nU3RvcmUoKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBNZW1vcnlJREJCYWNraW5nU3RvcmUoY29uc3QgSURCRGF0YWJhc2VJZGVudGlm
aWVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgfk1lbW9yeUlEQkJhY2tpbmdTdG9yZSgpOwogCiAg
ICAgSURCRXJyb3IgZ2V0T3JFc3RhYmxpc2hEYXRhYmFzZUluZm8oSURCRGF0YWJhc2VJbmZvJikg
ZmluYWw7CiAgICAgdWludDY0X3QgZGF0YWJhc2VWZXJzaW9uKCkgZmluYWw7CkBAIC05Miw3ICs5
Miw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1bnJlZ2lzdGVyT2JqZWN0U3RvcmUoTWVtb3J5T2Jq
ZWN0U3RvcmUmKTsKIAogICAgIElEQkRhdGFiYXNlSWRlbnRpZmllciBtX2lkZW50aWZpZXI7Ci0g
ICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPElEQkRh
dGFiYXNlSW5mbz4gbV9kYXRhYmFzZUluZm87CiAKICAgICBIYXNoTWFwPElEQlJlc291cmNlSWRl
bnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uPj4g
bV90cmFuc2FjdGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmNwcAppbmRleCA1YTUzZTIzMTUy
NjguLjc2Yjk5ZTdlZTY2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuY3BwCkBAIC00NCwxMiAr
NDQsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIG5hbWVz
cGFjZSBJREJTZXJ2ZXIgewogCi1SZWY8TWVtb3J5T2JqZWN0U3RvcmU+IE1lbW9yeU9iamVjdFN0
b3JlOjpjcmVhdGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBJREJPYmplY3RTdG9y
ZUluZm8mIGluZm8pCitSZWY8TWVtb3J5T2JqZWN0U3RvcmU+IE1lbW9yeU9iamVjdFN0b3JlOjpj
cmVhdGUoY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiBpbmZvKQogewotICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IE1lbW9yeU9iamVjdFN0b3JlKHNlc3Npb25JRCwgaW5mbykpOworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IE1lbW9yeU9iamVjdFN0b3JlKGluZm8pKTsKIH0KIAotTWVtb3J5T2Jq
ZWN0U3RvcmU6Ok1lbW9yeU9iamVjdFN0b3JlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBJREJPYmpl
Y3RTdG9yZUluZm8mIGluZm8pCitNZW1vcnlPYmplY3RTdG9yZTo6TWVtb3J5T2JqZWN0U3RvcmUo
Y29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiBpbmZvKQogICAgIDogbV9pbmZvKGluZm8pCiB7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVt
b3J5T2JqZWN0U3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9NZW1vcnlPYmplY3RTdG9yZS5oCmluZGV4IDg3MWRlYjVlNGFlMC4uZjAzYTNhMWIwYWQ1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5
T2JqZWN0U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvTWVtb3J5T2JqZWN0U3RvcmUuaApAQCAtMzQsMTAgKzM0LDYgQEAKICNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKLW5hbWVzcGFjZSBQQUwg
ewotY2xhc3MgU2Vzc2lvbklEOwotfQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIElE
QkN1cnNvckluZm87CkBAIC02MSw3ICs1Nyw3IEBAIHR5cGVkZWYgSGFzaE1hcDxJREJLZXlEYXRh
LCBUaHJlYWRTYWZlRGF0YUJ1ZmZlciwgSURCS2V5RGF0YUhhc2gsIElEQktleURhdGFIYXNoCiAK
IGNsYXNzIE1lbW9yeU9iamVjdFN0b3JlIDogcHVibGljIFJlZkNvdW50ZWQ8TWVtb3J5T2JqZWN0
U3RvcmU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPE1lbW9yeU9iamVjdFN0b3JlPiBjcmVh
dGUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYpOworICAgIHN0YXRp
YyBSZWY8TWVtb3J5T2JqZWN0U3RvcmU+IGNyZWF0ZShjb25zdCBJREJPYmplY3RTdG9yZUluZm8m
KTsKIAogICAgIH5NZW1vcnlPYmplY3RTdG9yZSgpOwogCkBAIC0xMDgsNyArMTA0LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgcmVuYW1lSW5kZXgoTWVtb3J5SW5kZXgmLCBjb25zdCBTdHJpbmcmIG5l
d05hbWUpOwogCiBwcml2YXRlOgotICAgIE1lbW9yeU9iamVjdFN0b3JlKFBBTDo6U2Vzc2lvbklE
LCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mKTsKKyAgICBNZW1vcnlPYmplY3RTdG9yZShjb25z
dCBJREJPYmplY3RTdG9yZUluZm8mKTsKIAogICAgIElEQktleURhdGFTZXQ6Oml0ZXJhdG9yIGxv
d2VzdEl0ZXJhdG9ySW5SYW5nZShjb25zdCBJREJLZXlSYW5nZURhdGEmLCBib29sIHJldmVyc2Up
IGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDI3Y2Q4ZWVj
NTNlMS4uYTk5ZTc1YjhkYjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcApA
QCAtMjM2LDEyICsyMzYsMTAgQEAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBpbmRleEluZm9UYWJsZVNj
aGVtYVRlbXAoKQogICAgIHJldHVybiBUQUJMRV9TQ0hFTUFfUFJFRklYICJfVGVtcF9JbmRleElu
Zm8iIElOREVYX0lORk9fVEFCTEVfU0NIRU1BX1NVRkZJWDsKIH0KIAotU1FMaXRlSURCQmFja2lu
Z1N0b3JlOjpTUUxpdGVJREJCYWNraW5nU3RvcmUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBj
b25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZGF0
YWJhc2VSb290RGlyZWN0b3J5KQotICAgIDogbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQotICAgICwg
bV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCi0gICAgLCBtX2RhdGFiYXNlUm9vdERpcmVjdG9yeShk
YXRhYmFzZVJvb3REaXJlY3RvcnkpCitTUUxpdGVJREJCYWNraW5nU3RvcmU6OlNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZShjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImIGlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgZGF0YWJhc2VEaXJlY3RvcnkpCisgICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmll
cikKKyAgICAsIG1fZGF0YWJhc2VEaXJlY3RvcnkoZGF0YWJhc2VEaXJlY3RvcnkpCiB7Ci0gICAg
bV9kYXRhYmFzZURpcmVjdG9yeSA9IGZ1bGxEYXRhYmFzZURpcmVjdG9yeVdpdGhVcGdyYWRlKCk7
CiB9CiAKIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6flNRTGl0ZUlEQkJhY2tpbmdTdG9yZSgpCkBA
IC05MTIsMTkgKzkxMCwyOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8SURCRGF0YWJhc2VJbmZvPiBTUUxp
dGVJREJCYWNraW5nU3RvcmU6OmV4dHJhY3RFeGlzdGluZ0RhdGFiYXNlSQogICAgIHJldHVybiBk
YXRhYmFzZUluZm87CiB9CiAKLVN0cmluZyBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmZpbGVuYW1l
Rm9yRGF0YWJhc2VOYW1lKCkgY29uc3QKK1N0cmluZyBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmVu
Y29kZURhdGFiYXNlTmFtZShjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSkKIHsKLSAgICBBU1NF
UlQoIW1faWRlbnRpZmllci5kYXRhYmFzZU5hbWUoKS5pc051bGwoKSk7Ci0KLSAgICBpZiAobV9p
ZGVudGlmaWVyLmRhdGFiYXNlTmFtZSgpLmlzRW1wdHkoKSkKKyAgICBBU1NFUlQoIWRhdGFiYXNl
TmFtZS5pc051bGwoKSk7CisgICAgaWYgKGRhdGFiYXNlTmFtZS5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiAiJTAwIjsKIAotICAgIFN0cmluZyBmaWxlbmFtZSA9IEZpbGVTeXN0ZW06OmVuY29k
ZUZvckZpbGVOYW1lKG1faWRlbnRpZmllci5kYXRhYmFzZU5hbWUoKSk7CisgICAgU3RyaW5nIGZp
bGVuYW1lID0gRmlsZVN5c3RlbTo6ZW5jb2RlRm9yRmlsZU5hbWUoZGF0YWJhc2VOYW1lKTsKICAg
ICBmaWxlbmFtZS5yZXBsYWNlKCcuJywgIiUyRSIpOwogCiAgICAgcmV0dXJuIGZpbGVuYW1lOwog
fQogCitTdHJpbmcgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWNvZGVEYXRhYmFzZU5hbWUoY29u
c3QgU3RyaW5nJiBlbmNvZGVkTmFtZSkKK3sKKyAgICBpZiAoZW5jb2RlZE5hbWUgPT0gIiUwMCJf
cykKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIFN0cmluZyBuYW1lID0gZW5jb2RlZE5hbWU7
CisgICAgbmFtZS5yZXBsYWNlKCIlMkUiX3MsICIuIl9zKTsKKworICAgIHJldHVybiBGaWxlU3lz
dGVtOjpkZWNvZGVGcm9tRmlsZW5hbWUobmFtZSk7Cit9CisKIFN0cmluZyBTUUxpdGVJREJCYWNr
aW5nU3RvcmU6OmZ1bGxEYXRhYmFzZVBhdGhGb3JEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBmdWxs
RGF0YWJhc2VEaXJlY3RvcnkpCiB7CiAgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChmdWxsRGF0YWJhc2VEaXJlY3RvcnksICJJbmRleGVkREIuc3FsaXRlMyIp
OwpAQCAtOTY1LDIzICs5NzMsNiBAQCBzdGQ6Om9wdGlvbmFsPElEQkRhdGFiYXNlTmFtZUFuZFZl
cnNpb24+IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGF0YWJhc2VOYW1lQW5kVgogICAgIHJldHVy
biBJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uIHsgZGF0YWJhc2VOYW1lLCAqZGF0YWJhc2VWZXJz
aW9uIH07CiB9CiAKLVN0cmluZyBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmZ1bGxEYXRhYmFzZURp
cmVjdG9yeVdpdGhVcGdyYWRlKCkKLXsKLSAgICBTdHJpbmcgb2xkT3JpZ2luRGlyZWN0b3J5ID0g
bV9pZGVudGlmaWVyLmRhdGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVUb1Jvb3QobV9kYXRhYmFzZVJv
b3REaXJlY3RvcnksICJ2MCIpOwotICAgIFN0cmluZyBvbGREYXRhYmFzZURpcmVjdG9yeSA9IEZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChvbGRPcmlnaW5EaXJlY3RvcnksIGZp
bGVuYW1lRm9yRGF0YWJhc2VOYW1lKCkpOwotICAgIFN0cmluZyBuZXdPcmlnaW5EaXJlY3Rvcnkg
PSBtX2lkZW50aWZpZXIuZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9vdChtX2RhdGFiYXNl
Um9vdERpcmVjdG9yeSwgInYxIik7Ci0gICAgU3RyaW5nIGZpbGVOYW1lSGFzaCA9IFNRTGl0ZUZp
bGVTeXN0ZW06OmNvbXB1dGVIYXNoRm9yRmlsZU5hbWUobV9pZGVudGlmaWVyLmRhdGFiYXNlTmFt
ZSgpKTsKLSAgICBTdHJpbmcgbmV3RGF0YWJhc2VEaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQobmV3T3JpZ2luRGlyZWN0b3J5LCBmaWxlTmFtZUhhc2gpOwot
ICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhuZXdEYXRhYmFzZURpcmVjdG9yeSk7
Ci0KLSAgICBpZiAoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhvbGREYXRhYmFzZURpcmVjdG9yeSkp
IHsKLSAgICAgICAgRmlsZVN5c3RlbTo6bW92ZUZpbGUob2xkRGF0YWJhc2VEaXJlY3RvcnksIG5l
d0RhdGFiYXNlRGlyZWN0b3J5KTsKLSAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJl
Y3Rvcnkob2xkT3JpZ2luRGlyZWN0b3J5KTsKLSAgICB9Ci0KLSAgICByZXR1cm4gbmV3RGF0YWJh
c2VEaXJlY3Rvcnk7Ci19Ci0KIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0T3JF
c3RhYmxpc2hEYXRhYmFzZUluZm8oSURCRGF0YWJhc2VJbmZvJiBpbmZvKQogewogICAgIExPRyhJ
bmRleGVkREIsICJTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldE9yRXN0YWJsaXNoRGF0YWJhc2VJ
bmZvIC0gZGF0YWJhc2UgJXMiLCBtX2lkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCkudXRmOCgpLmRh
dGEoKSk7CkBAIC05OTEsMTEgKzk4MiwxMSBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3Rv
cmU6OmdldE9yRXN0YWJsaXNoRGF0YWJhc2VJbmZvKElEQkRhdGFiYXNlSW5mbyYgaW5mbwogICAg
ICAgICByZXR1cm4gSURCRXJyb3IgeyB9OwogICAgIH0KIAotICAgIFN0cmluZyBkYkZpbGVuYW1l
ID0gZnVsbERhdGFiYXNlUGF0aCgpOwotCisgICAgU3RyaW5nIGRhdGFiYXNlUGF0aCA9IGZ1bGxE
YXRhYmFzZVBhdGgoKTsKKyAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoRmlsZVN5
c3RlbTo6cGFyZW50UGF0aChkYXRhYmFzZVBhdGgpKTsKICAgICBtX3NxbGl0ZURCID0gbWFrZVVu
aXF1ZTxTUUxpdGVEYXRhYmFzZT4oKTsKLSAgICBpZiAoIW1fc3FsaXRlREItPm9wZW4oZGJGaWxl
bmFtZSkpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gb3BlbiBTUUxpdGUgZGF0YWJh
c2UgYXQgcGF0aCAnJXMnIiwgZGJGaWxlbmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICBpZiAoIW1f
c3FsaXRlREItPm9wZW4oZGF0YWJhc2VQYXRoKSkgeworICAgICAgICBMT0dfRVJST1IoIkZhaWxl
ZCB0byBvcGVuIFNRTGl0ZSBkYXRhYmFzZSBhdCBwYXRoICclcyciLCBkYXRhYmFzZVBhdGgudXRm
OCgpLmRhdGEoKSk7CiAgICAgICAgIGNsb3NlU1FMaXRlREIoKTsKICAgICB9CiAKQEAgLTEwNDQs
NyArMTAzNSw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0T3JFc3RhYmxp
c2hEYXRhYmFzZUluZm8oSURCRGF0YWJhc2VJbmZvJiBpbmZvCiAgICAgICAgIGRhdGFiYXNlSW5m
byA9IGNyZWF0ZUFuZFBvcHVsYXRlSW5pdGlhbERhdGFiYXNlSW5mbygpOwogCiAgICAgaWYgKCFk
YXRhYmFzZUluZm8pIHsKLSAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gZXN0YWJsaXNoIElE
QiBkYXRhYmFzZSBhdCBwYXRoICclcyciLCBkYkZpbGVuYW1lLnV0ZjgoKS5kYXRhKCkpOworICAg
ICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBlc3RhYmxpc2ggSURCIGRhdGFiYXNlIGF0IHBhdGgg
JyVzJyIsIGRhdGFiYXNlUGF0aC51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgY2xvc2VTUUxpdGVE
QigpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8g
ZXN0YWJsaXNoIElEQiBkYXRhYmFzZSBmaWxlIl9zIH07CiAgICAgfQpAQCAtMjc5OCw3ICsyNzg5
LDYgQEAgdm9pZCBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRlbGV0ZUJhY2tpbmdTdG9yZSgpCiAK
ICAgICBTUUxpdGVGaWxlU3lzdGVtOjpkZWxldGVEYXRhYmFzZUZpbGUoZGF0YWJhc2VQYXRoKTsK
ICAgICBTUUxpdGVGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURhdGFiYXNlRGlyZWN0b3J5KG1fZGF0
YWJhc2VEaXJlY3RvcnkpOwotICAgIFNRTGl0ZUZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGF0YWJh
c2VEaXJlY3RvcnkobV9pZGVudGlmaWVyLmRhdGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVUb1Jvb3Qo
bV9kYXRhYmFzZVJvb3REaXJlY3RvcnkpKTsKIH0KIAogdm9pZCBTUUxpdGVJREJCYWNraW5nU3Rv
cmU6OnVucmVnaXN0ZXJDdXJzb3IoU1FMaXRlSURCQ3Vyc29yJiBjdXJzb3IpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2lu
Z1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRl
SURCQmFja2luZ1N0b3JlLmgKaW5kZXggMmVmZTZiMmEzNDE5Li43MzFhOWE0MTkzODYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJC
YWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmgKQEAgLTUxLDkgKzUxLDggQEAgY2xhc3MgU1FMaXRl
SURCQ3Vyc29yOwogY2xhc3MgU1FMaXRlSURCQmFja2luZ1N0b3JlIGZpbmFsIDogcHVibGljIElE
QkJhY2tpbmdTdG9yZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0g
ICAgU1FMaXRlSURCQmFja2luZ1N0b3JlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBJREJEYXRhYmFz
ZUlkZW50aWZpZXImLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlUm9vdERpcmVjdG9yeSk7Ci0gICAg
Ci0gICAgflNRTGl0ZUlEQkJhY2tpbmdTdG9yZSgpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JU
IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZShjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImLCBjb25z
dCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB+U1FMaXRl
SURCQmFja2luZ1N0b3JlKCkgZmluYWw7CiAKICAgICBJREJFcnJvciBnZXRPckVzdGFibGlzaERh
dGFiYXNlSW5mbyhJREJEYXRhYmFzZUluZm8mKSBmaW5hbDsKICAgICB1aW50NjRfdCBkYXRhYmFz
ZVZlcnNpb24oKSBmaW5hbDsKQEAgLTk0LDE4ICs5MywxNSBAQCBwdWJsaWM6CiAKICAgICBJREJF
cnJvciBnZXRCbG9iUmVjb3Jkc0Zvck9iamVjdFN0b3JlUmVjb3JkKGludDY0X3Qgb2JqZWN0U3Rv
cmVSZWNvcmQsIFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgVmVjdG9yPFN0cmluZz4mIGJsb2JG
aWxlUGF0aHMpOwogCi0gICAgc3RhdGljIHVpbnQ2NF90IGRhdGFiYXNlc1NpemVGb3JEaXJlY3Rv
cnkoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpOwotCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IHVpbnQ2NF90IGRhdGFiYXNlc1NpemVGb3JEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXJlY3Rv
cnkpOwogICAgIFN0cmluZyBkYXRhYmFzZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0
YWJhc2VEaXJlY3Rvcnk7IH07Ci0gICAgc3RhdGljIFN0cmluZyBmdWxsRGF0YWJhc2VQYXRoRm9y
RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpOwotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPElEQkRh
dGFiYXNlTmFtZUFuZFZlcnNpb24+IGRhdGFiYXNlTmFtZUFuZFZlcnNpb25Gcm9tRmlsZShjb25z
dCBTdHJpbmcmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIGZ1bGxEYXRhYmFz
ZVBhdGhGb3JEaXJlY3RvcnkoY29uc3QgU3RyaW5nJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFN0cmluZyBlbmNvZGVEYXRhYmFzZU5hbWUoY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUp
OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcgZGVjb2RlRGF0YWJhc2VOYW1lKGNv
bnN0IFN0cmluZyYgZW5jb2RlZERhdGFiYXNlTmFtZSk7CiAKLSAgICBQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQoKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb25JRDsgfQorICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPElEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24+IGRhdGFi
YXNlTmFtZUFuZFZlcnNpb25Gcm9tRmlsZShjb25zdCBTdHJpbmcmKTsKIAogcHJpdmF0ZToKLSAg
ICBTdHJpbmcgZmlsZW5hbWVGb3JEYXRhYmFzZU5hbWUoKSBjb25zdDsKLSAgICBTdHJpbmcgZnVs
bERhdGFiYXNlRGlyZWN0b3J5V2l0aFVwZ3JhZGUoKTsKLQogICAgIElEQkVycm9yIGVuc3VyZVZh
bGlkUmVjb3Jkc1RhYmxlKCk7CiAgICAgSURCRXJyb3IgZW5zdXJlVmFsaWRJbmRleFJlY29yZHNU
YWJsZSgpOwogICAgIElEQkVycm9yIGVuc3VyZVZhbGlkSW5kZXhSZWNvcmRzSW5kZXgoKTsKQEAg
LTIwNiw3ICsyMDIsNiBAQCBwcml2YXRlOgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNRTGl0ZVN0
YXRlbWVudD4gbV9jYWNoZWRTdGF0ZW1lbnRzW3N0YXRpY19jYXN0PGludD4oU1FMOjpJbnZhbGlk
KV07CiAKLSAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKICAgICBJREJEYXRhYmFzZUlk
ZW50aWZpZXIgbV9pZGVudGlmaWVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJREJEYXRhYmFzZUlu
Zm8+IG1fZGF0YWJhc2VJbmZvOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJREJEYXRhYmFzZUluZm8+
IG1fb3JpZ2luYWxEYXRhYmFzZUluZm9CZWZvcmVWZXJzaW9uQ2hhbmdlOwpAQCAtMjE2LDcgKzIx
MSw2IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxJREJSZXNvdXJjZUlkZW50aWZpZXIsIHN0ZDo6
dW5pcXVlX3B0cjxTUUxpdGVJREJUcmFuc2FjdGlvbj4+IG1fdHJhbnNhY3Rpb25zOwogICAgIEhh
c2hNYXA8SURCUmVzb3VyY2VJZGVudGlmaWVyLCBTUUxpdGVJREJDdXJzb3IqPiBtX2N1cnNvcnM7
CiAKLSAgICBTdHJpbmcgbV9kYXRhYmFzZVJvb3REaXJlY3Rvcnk7CiAgICAgU3RyaW5nIG1fZGF0
YWJhc2VEaXJlY3Rvcnk7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcAppbmRleCAyYjFl
YWRiOWVhNWMuLjMxMzQwNzhkZDE1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCkBAIC00
Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlN0b3JhZ2VRdW90
YU1hbmFnZXIuaCIKICNpbmNsdWRlICJVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uaCIKKyNp
bmNsdWRlICJVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuaCIKICNpbmNsdWRlIDx3dGYvU2NvcGUu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTM0LDggKzEzNSw4IEBAIHN0YXRpYyBpbmxp
bmUgdWludDY0X3QgZXN0aW1hdGVTaXplKGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYgaW5mbykK
ICAgICByZXR1cm4gc2l6ZTsKIH0KIAotVW5pcXVlSURCRGF0YWJhc2U6OlVuaXF1ZUlEQkRhdGFi
YXNlKElEQlNlcnZlciYgc2VydmVyLCBjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImIGlkZW50
aWZpZXIpCi0gICAgOiBtX3NlcnZlcihzZXJ2ZXIpCitVbmlxdWVJREJEYXRhYmFzZTo6VW5pcXVl
SURCRGF0YWJhc2UoVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyJiBtYW5hZ2VyLCBjb25zdCBJREJE
YXRhYmFzZUlkZW50aWZpZXImIGlkZW50aWZpZXIpCisgICAgOiBtX21hbmFnZXIobWFuYWdlcikK
ICAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogewogICAgIEFTU0VSVCghaXNNYWluVGhy
ZWFkKCkpOwpAQCAtMTU3LDYgKzE1OCwxMSBAQCBVbmlxdWVJREJEYXRhYmFzZTo6flVuaXF1ZUlE
QkRhdGFiYXNlKCkKICAgICBSRUxFQVNFX0FTU0VSVCghbV9iYWNraW5nU3RvcmUpOwogfQogCitV
bmlxdWVJREJEYXRhYmFzZU1hbmFnZXIqIFVuaXF1ZUlEQkRhdGFiYXNlOjptYW5hZ2VyKCkKK3sK
KyAgICByZXR1cm4gbV9tYW5hZ2VyLmdldCgpOworfQorCiBjb25zdCBJREJEYXRhYmFzZUluZm8m
IFVuaXF1ZUlEQkRhdGFiYXNlOjppbmZvKCkgY29uc3QKIHsKICAgICBSRUxFQVNFX0FTU0VSVCht
X2RhdGFiYXNlSW5mbyk7CkBAIC0xODUsMTcgKzE5MSw0NSBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFi
YXNlOjpwZXJmb3JtQ3VycmVudE9wZW5PcGVyYXRpb24oKQogICAgIEFTU0VSVChtX2N1cnJlbnRP
cGVuREJSZXF1ZXN0KTsKICAgICBBU1NFUlQobV9jdXJyZW50T3BlbkRCUmVxdWVzdC0+aXNPcGVu
UmVxdWVzdCgpKTsKIAorICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gY3JlYXRlIHRoZSBmaWxlIHNv
IG5vIG5lZWQgdG8gZG8gc3BhY2UgY2hlY2suCisgICAgaWYgKG1fYmFja2luZ1N0b3JlKQorICAg
ICAgICByZXR1cm4gcGVyZm9ybUN1cnJlbnRPcGVuT3BlcmF0aW9uQWZ0ZXJTcGFjZUNoZWNrKHRy
dWUpOworCisgICAgaWYgKCFtX21hbmFnZXIpCisgICAgICAgIHJldHVybiBwZXJmb3JtQ3VycmVu
dE9wZW5PcGVyYXRpb25BZnRlclNwYWNlQ2hlY2soZmFsc2UpOworCisgICAgYXV0byByZXF1ZXN0
SWRlbnRpZmllciA9IG1fY3VycmVudE9wZW5EQlJlcXVlc3QtPnJlcXVlc3REYXRhKCkucmVxdWVz
dElkZW50aWZpZXIoKTsKKyAgICBpZiAobV9vcGVuREJSZXF1ZXN0c0ZvclNwYWNlQ2hlY2suY29u
dGFpbnMocmVxdWVzdElkZW50aWZpZXIpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX29wZW5E
QlJlcXVlc3RzRm9yU3BhY2VDaGVjay5hZGQocmVxdWVzdElkZW50aWZpZXIpOworICAgIG1fbWFu
YWdlci0+cmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwgZGVmYXVsdFdyaXRlT3Bl
cmF0aW9uQ29zdCwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHJlcXVlc3RJ
ZGVudGlmaWVyXShib29sIGdyYW50ZWQpIG11dGFibGUgeworICAgICAgICBpZiAoIXdlYWtUaGlz
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIG1fb3BlbkRCUmVxdWVzdHNGb3JTcGFj
ZUNoZWNrLnJlbW92ZShyZXF1ZXN0SWRlbnRpZmllcik7CisgICAgICAgIGlmIChtX2N1cnJlbnRP
cGVuREJSZXF1ZXN0LT5yZXF1ZXN0RGF0YSgpLnJlcXVlc3RJZGVudGlmaWVyKCkgIT0gcmVxdWVz
dElkZW50aWZpZXIpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgcGVyZm9ybUN1cnJl
bnRPcGVuT3BlcmF0aW9uQWZ0ZXJTcGFjZUNoZWNrKGdyYW50ZWQpOworICAgIH0pOworfQorCit2
b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtQ3VycmVudE9wZW5PcGVyYXRpb25BZnRlclNw
YWNlQ2hlY2soYm9vbCBpc0dyYW50ZWQpCit7CisgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlE
QkRhdGFiYXNlOjpwZXJmb3JtQ3VycmVudE9wZW5PcGVyYXRpb25BZnRlclNwYWNlUmVxdWVzdCAo
JXApIiwgdGhpcyk7CisKICAgICBJREJFcnJvciBiYWNraW5nU3RvcmVPcGVuRXJyb3I7CiAgICAg
aWYgKCFtX2JhY2tpbmdTdG9yZSkgewotICAgICAgICAvLyBRdW90YSBjaGVjay4KLSAgICAgICAg
YXV0byBkZWNpc2lvbiA9IG1fc2VydmVyLnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2lu
KCksIGRlZmF1bHRXcml0ZU9wZXJhdGlvbkNvc3QpOwotICAgICAgICBpZiAoZGVjaXNpb24gPT0g
U3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb246OkRlbnkpCisgICAgICAgIGlmICghbV9tYW5h
Z2VyKQorICAgICAgICAgICAgYmFja2luZ1N0b3JlT3BlbkVycm9yID0gSURCRXJyb3IgeyBJbnZh
bGlkU3RhdGVFcnJvciB9OworICAgICAgICBlbHNlIGlmICghaXNHcmFudGVkKQogICAgICAgICAg
ICAgYmFja2luZ1N0b3JlT3BlbkVycm9yID0gSURCRXJyb3IgeyBRdW90YUV4Y2VlZGVkRXJyb3Is
IHF1b3RhRXJyb3JNZXNzYWdlTmFtZSgiT3BlbkJhY2tpbmdTdG9yZSIpIH07CiAgICAgICAgIGVs
c2UgewotICAgICAgICAgICAgbV9iYWNraW5nU3RvcmUgPSBtX3NlcnZlci5jcmVhdGVCYWNraW5n
U3RvcmUobV9pZGVudGlmaWVyKTsKKyAgICAgICAgICAgIG1fYmFja2luZ1N0b3JlID0gbV9tYW5h
Z2VyLT5jcmVhdGVCYWNraW5nU3RvcmUobV9pZGVudGlmaWVyKTsKICAgICAgICAgICAgIElEQkRh
dGFiYXNlSW5mbyBkYXRhYmFzZUluZm87CiAgICAgICAgICAgICBiYWNraW5nU3RvcmVPcGVuRXJy
b3IgPSBtX2JhY2tpbmdTdG9yZS0+Z2V0T3JFc3RhYmxpc2hEYXRhYmFzZUluZm8oZGF0YWJhc2VJ
bmZvKTsKLSAgICAgICAgICAgIGlmIChiYWNraW5nU3RvcmVPcGVuRXJyb3IuaXNOdWxsKCkpCisg
ICAgICAgICAgICBpZiAoIWJhY2tpbmdTdG9yZU9wZW5FcnJvcikKICAgICAgICAgICAgICAgICBt
X2RhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPihkYXRhYmFzZUluZm8p
OwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQg
dG8gZ2V0IGRhdGFiYXNlIGluZm8gJyVzJyIsIGJhY2tpbmdTdG9yZU9wZW5FcnJvci5tZXNzYWdl
KCkudXRmOCgpLmRhdGEoKSk7CkBAIC0yMDQsNyArMjM4LDcgQEAgdm9pZCBVbmlxdWVJREJEYXRh
YmFzZTo6cGVyZm9ybUN1cnJlbnRPcGVuT3BlcmF0aW9uKCkKICAgICAgICAgfQogICAgIH0KIAot
ICAgIGlmICghYmFja2luZ1N0b3JlT3BlbkVycm9yLmlzTnVsbCgpKSB7CisgICAgaWYgKGJhY2tp
bmdTdG9yZU9wZW5FcnJvcikgewogICAgICAgICBhdXRvIHJlc3VsdCA9IElEQlJlc3VsdERhdGE6
OmVycm9yKG1fY3VycmVudE9wZW5EQlJlcXVlc3QtPnJlcXVlc3REYXRhKCkucmVxdWVzdElkZW50
aWZpZXIoKSwgYmFja2luZ1N0b3JlT3BlbkVycm9yKTsKICAgICAgICAgbV9jdXJyZW50T3BlbkRC
UmVxdWVzdC0+Y29ubmVjdGlvbigpLmRpZE9wZW5EYXRhYmFzZShyZXN1bHQpOwogICAgICAgICBt
X2N1cnJlbnRPcGVuREJSZXF1ZXN0ID0gbnVsbHB0cjsKQEAgLTI5NCw3ICszMjgsNyBAQCB2b2lk
IFVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVCYWNraW5nU3RvcmUoKQogICAgIEFTU0VSVCghaXNN
YWluVGhyZWFkKCkpOwogICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6ZGVs
ZXRlQmFja2luZ1N0b3JlIik7CiAgICAgCi0gICAgYXV0byBiYWNraW5nU3RvcmUgPSBtX2JhY2tp
bmdTdG9yZSA/IHN0ZDo6ZXhjaGFuZ2UobV9iYWNraW5nU3RvcmUsIG51bGxwdHIpIDogbV9zZXJ2
ZXIuY3JlYXRlQmFja2luZ1N0b3JlKG1faWRlbnRpZmllcik7CisgICAgYXV0byBiYWNraW5nU3Rv
cmUgPSBtX2JhY2tpbmdTdG9yZSA/IHN0ZDo6ZXhjaGFuZ2UobV9iYWNraW5nU3RvcmUsIG51bGxw
dHIpIDogbV9tYW5hZ2VyLT5jcmVhdGVCYWNraW5nU3RvcmUobV9pZGVudGlmaWVyKTsKICAgICB1
aW50NjRfdCBkZWxldGVkVmVyc2lvbiA9IGJhY2tpbmdTdG9yZS0+ZGF0YWJhc2VWZXJzaW9uKCk7
CiAgICAgYmFja2luZ1N0b3JlLT5kZWxldGVCYWNraW5nU3RvcmUoKTsKICAgICBkaWREZWxldGVC
YWNraW5nU3RvcmUoZGVsZXRlZFZlcnNpb24pOwpAQCAtNTQyLDIwICs1NzYsMzMgQEAgdm9pZCBV
bmlxdWVJREJEYXRhYmFzZTo6YWRkT3BlbkRhdGFiYXNlQ29ubmVjdGlvbihSZWY8VW5pcXVlSURC
RGF0YWJhc2VDb25uZWN0aW8KICAgICBtX29wZW5EYXRhYmFzZUNvbm5lY3Rpb25zLmFkZChhZG9w
dFJlZihjb25uZWN0aW9uLmxlYWtSZWYoKSkpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNl
OjpjcmVhdGVPYmplY3RTdG9yZShVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2Fj
dGlvbiwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiBpbmZvLCBFcnJvckNhbGxiYWNrIGNhbGxi
YWNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUoVW5pcXVlSURC
RGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIGNvbnN0IElEQk9iamVjdFN0b3JlSW5m
byYgaW5mbywgRXJyb3JDYWxsYmFjayBjYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCBzcGFjZUNo
ZWNrUmVzdWx0KQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIExPRyhJbmRl
eGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUiKTsKIAotICAgIEFT
U0VSVChtX2JhY2tpbmdTdG9yZSk7CisgICAgaWYgKCFzcGFjZUNoZWNrUmVzdWx0KSB7CisgICAg
ICAgIGlmICghbV9tYW5hZ2VyKQorICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9y
IHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7CiAKLSAgICAvLyBRdW90YSBjaGVjay4KLSAgICBhdXRv
IHRhc2tTaXplID0gZGVmYXVsdFdyaXRlT3BlcmF0aW9uQ29zdCArIGVzdGltYXRlU2l6ZShpbmZv
KTsKLSAgICBpZiAobV9zZXJ2ZXIucmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwg
dGFza1NpemUpID09IFN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uOjpEZW55KSB7CisgICAg
ICAgIGF1dG8gdGFza1NpemUgPSBkZWZhdWx0V3JpdGVPcGVyYXRpb25Db3N0ICsgZXN0aW1hdGVT
aXplKGluZm8pOworICAgICAgICBtX21hbmFnZXItPnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIu
b3JpZ2luKCksIHRhc2tTaXplLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwg
d2Vha1RyYW5zYWN0aW9uID0gV2Vha1B0ciB7IHRyYW5zYWN0aW9uIH0sIGluZm8sIGNhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgZ3JhbnRlZCkgbXV0YWJsZSB7CisgICAgICAgICAg
ICBpZiAoIXdlYWtUaGlzIHx8ICF3ZWFrVHJhbnNhY3Rpb24pCisgICAgICAgICAgICAgICAgcmV0
dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJEYXRhYmFzZSBvciB0
cmFuc2FjdGlvbiBpcyBjbG9zZWQiIH0pOworCisgICAgICAgICAgICBjcmVhdGVPYmplY3RTdG9y
ZSgqd2Vha1RyYW5zYWN0aW9uLCBpbmZvLCBXVEZNb3ZlKGNhbGxiYWNrKSwgZ3JhbnRlZCk7Cisg
ICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFzcGFjZUNoZWNr
UmVzdWx0LnZhbHVlKCkpIHsKICAgICAgICAgY2FsbGJhY2soSURCRXJyb3IgeyBRdW90YUV4Y2Vl
ZGVkRXJyb3IsIHF1b3RhRXJyb3JNZXNzYWdlTmFtZSgiQ3JlYXRlT2JqZWN0U3RvcmUiKSB9KTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIGlmICghbV9iYWNraW5nU3RvcmUpCisgICAg
ICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiQmFja2lu
ZyBzdG9yZSBoYXMgY2xvc2VkIiB9KTsKKwogICAgIGF1dG8gZXJyb3IgPSBtX2JhY2tpbmdTdG9y
ZS0+Y3JlYXRlT2JqZWN0U3RvcmUodHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSwgaW5m
byk7CiAgICAgaWYgKGVycm9yLmlzTnVsbCgpKQogICAgICAgICBtX2RhdGFiYXNlSW5mby0+YWRk
RXhpc3RpbmdPYmplY3RTdG9yZShpbmZvKTsKQEAgLTU2MywxOCArNjEwLDM0IEBAIHZvaWQgVW5p
cXVlSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNh
Y3Rpb24mIHRyYW5zYWN0CiAgICAgY2FsbGJhY2soZXJyb3IpOwogfQogCi12b2lkIFVuaXF1ZUlE
QkRhdGFiYXNlOjpkZWxldGVPYmplY3RTdG9yZShVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9u
JiB0cmFuc2FjdGlvbiwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUsIEVycm9yQ2FsbGJh
Y2sgY2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVPYmplY3RTdG9yZShV
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgY29uc3QgU3RyaW5nJiBv
YmplY3RTdG9yZU5hbWUsIEVycm9yQ2FsbGJhY2sgY2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQg
c3BhY2VDaGVja1Jlc3VsdCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBM
T0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZU9iamVjdFN0b3JlIik7CiAK
KyAgICBpZiAoIXNwYWNlQ2hlY2tSZXN1bHQpIHsKKyAgICAgICAgaWYgKCFtX21hbmFnZXIpCisg
ICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciB9
KTsKKworICAgICAgICBtX21hbmFnZXItPnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2lu
KCksIDAsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCB3ZWFrVHJhbnNhY3Rp
b24gPSBXZWFrUHRyIHsgdHJhbnNhY3Rpb24gfSwgb2JqZWN0U3RvcmVOYW1lLCBjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spXShib29sIGdyYW50ZWQpIG11dGFibGUgeworICAgICAgICAgICAg
aWYgKCF3ZWFrVGhpcyB8fCAhd2Vha1RyYW5zYWN0aW9uKQorICAgICAgICAgICAgICAgIHJldHVy
biBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiRGF0YWJhc2Ugb3IgdHJh
bnNhY3Rpb24gaXMgY2xvc2VkIiB9KTsKKworICAgICAgICAgICAgZGVsZXRlT2JqZWN0U3RvcmUo
KndlYWtUcmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVOYW1lLCBXVEZNb3ZlKGNhbGxiYWNrKSwgZ3Jh
bnRlZCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJU
KHNwYWNlQ2hlY2tSZXN1bHQudmFsdWUoKSk7CiAgICAgYXV0byogaW5mbyA9IG1fZGF0YWJhc2VJ
bmZvLT5pbmZvRm9yRXhpc3RpbmdPYmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUpOwogICAgIGlm
ICghaW5mbykgewogICAgICAgICBjYWxsYmFjayhJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0
dGVtcHQgdG8gZGVsZXRlIG5vbi1leGlzdGFudCBvYmplY3Qgc3RvcmUiX3MgfSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBBU1NFUlQobV9iYWNraW5nU3RvcmUpOworICAgIGlmICgh
bV9iYWNraW5nU3RvcmUpCisgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFs
aWRTdGF0ZUVycm9yLCAiQmFja2luZyBzdG9yZSBpcyBjbG9zZWQiIH0pOworCiAgICAgYXV0byBl
cnJvciA9IG1fYmFja2luZ1N0b3JlLT5kZWxldGVPYmplY3RTdG9yZSh0cmFuc2FjdGlvbi5pbmZv
KCkuaWRlbnRpZmllcigpLCBpbmZvLT5pZGVudGlmaWVyKCkpOwogICAgIGlmIChlcnJvci5pc051
bGwoKSkKICAgICAgICAgbV9kYXRhYmFzZUluZm8tPmRlbGV0ZU9iamVjdFN0b3JlKGluZm8tPmlk
ZW50aWZpZXIoKSk7CkBAIC01ODIsMTQgKzY0NSwyNiBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNl
OjpkZWxldGVPYmplY3RTdG9yZShVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2Fj
dAogICAgIGNhbGxiYWNrKGVycm9yKTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cmVu
YW1lT2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24s
IHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lLCBF
cnJvckNhbGxiYWNrIGNhbGxiYWNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cmVuYW1lT2Jq
ZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIHVpbnQ2
NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lLCBFcnJvckNh
bGxiYWNrIGNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0IHNwYWNlQ2hlY2tSZXN1bHQpCiB7CiAg
ICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlE
QkRhdGFiYXNlOjpyZW5hbWVPYmplY3RTdG9yZSIpOwogCi0gICAgLy8gUXVvdGEgY2hlY2suCi0g
ICAgYXV0byB0YXNrU2l6ZSA9IGRlZmF1bHRXcml0ZU9wZXJhdGlvbkNvc3QgKyBuZXdOYW1lLnNp
emVJbkJ5dGVzKCk7Ci0gICAgaWYgKG1fc2VydmVyLnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIu
b3JpZ2luKCksIHRhc2tTaXplKSA9PSBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbjo6RGVu
eSkgeworICAgIGlmICghc3BhY2VDaGVja1Jlc3VsdCkgeworICAgICAgICBpZiAoIW1fbWFuYWdl
cikKKyAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVy
cm9yIH0pOworCisgICAgICAgIGF1dG8gdGFza1NpemUgPSBkZWZhdWx0V3JpdGVPcGVyYXRpb25D
b3N0ICsgbmV3TmFtZS5zaXplSW5CeXRlcygpOworICAgICAgICBtX21hbmFnZXItPnJlcXVlc3RT
cGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIHRhc2tTaXplLCBbdGhpcywgd2Vha1RoaXMgPSBX
ZWFrUHRyIHsgKnRoaXMgfSwgd2Vha1RyYW5zYWN0aW9uID0gV2Vha1B0ciB7IHRyYW5zYWN0aW9u
IH0sIG9iamVjdFN0b3JlSWRlbnRpZmllciwgbmV3TmFtZSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKV0oYm9vbCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghd2Vha1Ro
aXMgfHwgIXdlYWtUcmFuc2FjdGlvbikKKyAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2so
SURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkRhdGFiYXNlIG9yIHRyYW5zYWN0aW9uIGlz
IGNsb3NlZCIgfSk7CisKKyAgICAgICAgICAgIHJlbmFtZU9iamVjdFN0b3JlKCp3ZWFrVHJhbnNh
Y3Rpb24sIG9iamVjdFN0b3JlSWRlbnRpZmllciwgbmV3TmFtZSwgV1RGTW92ZShjYWxsYmFjayks
IGdyYW50ZWQpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlm
ICghc3BhY2VDaGVja1Jlc3VsdC52YWx1ZSgpKSB7CiAgICAgICAgIGNhbGxiYWNrKElEQkVycm9y
KFF1b3RhRXhjZWVkZWRFcnJvciwgcXVvdGFFcnJvck1lc3NhZ2VOYW1lKCJSZW5hbWVPYmplY3RT
dG9yZSIpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC02MDAsNyArNjc1LDkgQEAgdm9p
ZCBVbmlxdWVJREJEYXRhYmFzZTo6cmVuYW1lT2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VU
cmFuc2FjdGlvbiYgdHJhbnNhY3QKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VS
VChtX2JhY2tpbmdTdG9yZSk7CisgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkKKyAgICAgICAgcmV0
dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJCYWNraW5nIHN0b3Jl
IGlzIGNsb3NlZCIgfSk7CisKICAgICBhdXRvIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPnJlbmFt
ZU9iamVjdFN0b3JlKHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCksIG9iamVjdFN0b3Jl
SWRlbnRpZmllciwgbmV3TmFtZSk7CiAgICAgaWYgKGVycm9yLmlzTnVsbCgpKQogICAgICAgICBt
X2RhdGFiYXNlSW5mby0+cmVuYW1lT2JqZWN0U3RvcmUob2JqZWN0U3RvcmVJZGVudGlmaWVyLCBu
ZXdOYW1lKTsKQEAgLTYwOCwzMCArNjg1LDU5IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnJl
bmFtZU9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0CiAg
ICAgY2FsbGJhY2soZXJyb3IpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjbGVhck9i
amVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCB1aW50
NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIEVycm9yQ2FsbGJhY2sgY2FsbGJhY2spCit2b2lk
IFVuaXF1ZUlEQkRhdGFiYXNlOjpjbGVhck9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJh
bnNhY3Rpb24mIHRyYW5zYWN0aW9uLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIEVy
cm9yQ2FsbGJhY2sgY2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgc3BhY2VDaGVja1Jlc3VsdCkK
IHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAiVW5p
cXVlSURCRGF0YWJhc2U6OmNsZWFyT2JqZWN0U3RvcmUiKTsKIAotICAgIEFTU0VSVChtX2JhY2tp
bmdTdG9yZSk7Ci0gICAgYXV0byBlcnJvciA9IG1fYmFja2luZ1N0b3JlLT5jbGVhck9iamVjdFN0
b3JlKHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCksIG9iamVjdFN0b3JlSWRlbnRpZmll
cik7CisgICAgaWYgKCFzcGFjZUNoZWNrUmVzdWx0KSB7CisgICAgICAgIGlmICghbV9tYW5hZ2Vy
KQorICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJy
b3IgfSk7CisKKyAgICAgICAgbV9tYW5hZ2VyLT5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9y
aWdpbigpLCAwLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgd2Vha1RyYW5z
YWN0aW9uID0gV2Vha1B0ciB7IHRyYW5zYWN0aW9uIH0sIG9iamVjdFN0b3JlSWRlbnRpZmllciwg
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBncmFudGVkKSBtdXRhYmxlIHsKKyAg
ICAgICAgICAgIGlmICghd2Vha1RoaXMgfHwgIXdlYWtUcmFuc2FjdGlvbikKKyAgICAgICAgICAg
ICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkRhdGFi
YXNlIG9yIHRyYW5zYWN0aW9uIGlzIGNsb3NlZCIgfSk7CisKKyAgICAgICAgICAgIGNsZWFyT2Jq
ZWN0U3RvcmUoKndlYWtUcmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBXVEZNb3Zl
KGNhbGxiYWNrKSwgZ3JhbnRlZCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgQVNTRVJUKHNwYWNlQ2hlY2tSZXN1bHQudmFsdWUoKSk7CisgICAgaWYgKCFtX2Jh
Y2tpbmdTdG9yZSkKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0
YXRlRXJyb3IsICJCYWNraW5nIHN0b3JlIGlzIGNsb3NlZCIgfSk7CiAKKyAgICBhdXRvIGVycm9y
ID0gbV9iYWNraW5nU3RvcmUtPmNsZWFyT2JqZWN0U3RvcmUodHJhbnNhY3Rpb24uaW5mbygpLmlk
ZW50aWZpZXIoKSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKICAgICBjYWxsYmFjayhlcnJvcik7
CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZUluZGV4KFVuaXF1ZUlEQkRhdGFi
YXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBjb25zdCBJREJJbmRleEluZm8mIGluZm8sIEVy
cm9yQ2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVJbmRl
eChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgY29uc3QgSURCSW5k
ZXhJbmZvJiBpbmZvLCBFcnJvckNhbGxiYWNrIGNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0IHNw
YWNlQ2hlY2tSZXN1bHQpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgTE9H
KEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVJbmRleCIpOwogCi0gICAgLy8g
UXVvdGEgY2hlY2suCi0gICAgYXV0byB0YXNrU2l6ZSA9IGRlZmF1bHRXcml0ZU9wZXJhdGlvbkNv
c3QgKyBlc3RpbWF0ZVNpemUoaW5mbyk7Ci0gICAgaWYgKG1fc2VydmVyLnJlcXVlc3RTcGFjZSht
X2lkZW50aWZpZXIub3JpZ2luKCksIHRhc2tTaXplKSA9PSBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpE
ZWNpc2lvbjo6RGVueSkgeworICAgIGlmICghc3BhY2VDaGVja1Jlc3VsdCkgeworICAgICAgICBp
ZiAoIW1fbWFuYWdlcikKKyAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IElu
dmFsaWRTdGF0ZUVycm9yIH0pOworCisgICAgICAgIGF1dG8gdGFza1NpemUgPSBkZWZhdWx0V3Jp
dGVPcGVyYXRpb25Db3N0ICsgZXN0aW1hdGVTaXplKGluZm8pOworICAgICAgICBtX21hbmFnZXIt
PnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIHRhc2tTaXplLCBbdGhpcywgd2Vh
a1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgd2Vha1RyYW5zYWN0aW9uID0gV2Vha1B0ciB7IHRy
YW5zYWN0aW9uIH0sIGluZm8sIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgZ3Jh
bnRlZCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICF3ZWFrVHJhbnNh
Y3Rpb24pCisgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxp
ZFN0YXRlRXJyb3IsICJEYXRhYmFzZSBvciB0cmFuc2FjdGlvbiBpcyBjbG9zZWQiIH0pOworCisg
ICAgICAgICAgICBjcmVhdGVJbmRleCgqd2Vha1RyYW5zYWN0aW9uLCBpbmZvLCBXVEZNb3ZlKGNh
bGxiYWNrKSwgZ3JhbnRlZCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgaWYgKCFzcGFjZUNoZWNrUmVzdWx0LnZhbHVlKCkpIHsKICAgICAgICAgY2FsbGJhY2so
SURCRXJyb3IgeyBRdW90YUV4Y2VlZGVkRXJyb3IsIHF1b3RhRXJyb3JNZXNzYWdlTmFtZSgiQ3Jl
YXRlSW5kZXgiKSB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VSVChtX2Jh
Y2tpbmdTdG9yZSk7CisgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkKKyAgICAgICAgcmV0dXJuIGNh
bGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJCYWNraW5nIHN0b3JlIGlzIGNs
b3NlZCIgfSk7CisKICAgICBhdXRvIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPmNyZWF0ZUluZGV4
KHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCksIGluZm8pOwogICAgIGlmIChlcnJvci5p
c051bGwoKSkgewogICAgICAgICBBU1NFUlQobV9kYXRhYmFzZUluZm8pOwpAQCAtNjQ0LDExICs3
NTAsMjggQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlSW5kZXgoVW5pcXVlSURCRGF0
YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIGMKICAgICBjYWxsYmFjayhlcnJvcik7CiB9
CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZUluZGV4KFVuaXF1ZUlEQkRhdGFiYXNl
VHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lLCBFcnJvckNhbGxiYWNrIGNhbGxiYWNrKQordm9pZCBV
bmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlSW5kZXgoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlv
biYgdHJhbnNhY3Rpb24sIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBpbmRleE5hbWUsIEVycm9yQ2FsbGJhY2sgY2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQg
c3BhY2VDaGVja1Jlc3VsdCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBM
T0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZUluZGV4Iik7CiAKKyAgICBp
ZiAoIXNwYWNlQ2hlY2tSZXN1bHQpIHsKKyAgICAgICAgaWYgKCFtX21hbmFnZXIpCisgICAgICAg
ICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciB9KTsKKwor
ICAgICAgICBtX21hbmFnZXItPnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIDAs
IFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCB3ZWFrVHJhbnNhY3Rpb24gPSBX
ZWFrUHRyIHsgdHJhbnNhY3Rpb24gfSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleE5hbWUs
IGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgZ3JhbnRlZCkgbXV0YWJsZSB7Cisg
ICAgICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICF3ZWFrVHJhbnNhY3Rpb24pCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJEYXRh
YmFzZSBvciB0cmFuc2FjdGlvbiBpcyBjbG9zZWQiIH0pOworCisgICAgICAgICAgICBkZWxldGVJ
bmRleCgqd2Vha1RyYW5zYWN0aW9uLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4TmFtZSwg
V1RGTW92ZShjYWxsYmFjayksIGdyYW50ZWQpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIEFTU0VSVChzcGFjZUNoZWNrUmVzdWx0LnZhbHVlKCkpOworICAgIGlm
ICghbV9iYWNraW5nU3RvcmUpCisgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IElu
dmFsaWRTdGF0ZUVycm9yLCAiQmFja2luZyBzdG9yZSBpcyBjbG9zZWQiIH0pOworCiAgICAgYXV0
byogb2JqZWN0U3RvcmVJbmZvID0gbV9kYXRhYmFzZUluZm8tPmluZm9Gb3JFeGlzdGluZ09iamVj
dFN0b3JlKG9iamVjdFN0b3JlSWRlbnRpZmllcik7CiAgICAgaWYgKCFvYmplY3RTdG9yZUluZm8p
IHsKICAgICAgICAgY2FsbGJhY2soSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRv
IGRlbGV0ZSBpbmRleCBmcm9tIG5vbi1leGlzdGFudCBvYmplY3Qgc3RvcmUiX3MgfSk7CkBAIC02
NjAsOSArNzgzLDggQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlSW5kZXgoVW5pcXVl
SURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIHUKICAgICAgICAgY2FsbGJhY2so
SURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIGRlbGV0ZSBub24tZXhpc3RhbnQg
aW5kZXgiX3MgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byBpbmRleElkZW50
aWZpZXIgPSBpbmRleEluZm8tPmlkZW50aWZpZXIoKTsKIAotICAgIEFTU0VSVChtX2JhY2tpbmdT
dG9yZSk7CisgICAgYXV0byBpbmRleElkZW50aWZpZXIgPSBpbmRleEluZm8tPmlkZW50aWZpZXIo
KTsKICAgICBhdXRvIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPmRlbGV0ZUluZGV4KHRyYW5zYWN0
aW9uLmluZm8oKS5pZGVudGlmaWVyKCksIG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhJZGVu
dGlmaWVyKTsKICAgICBpZiAoZXJyb3IuaXNOdWxsKCkpCiAgICAgICAgIG9iamVjdFN0b3JlSW5m
by0+ZGVsZXRlSW5kZXgoaW5kZXhJZGVudGlmaWVyKTsKQEAgLTY3MCwxOCArNzkyLDMzIEBAIHZv
aWQgVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZUluZGV4KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNh
Y3Rpb24mIHRyYW5zYWN0aW9uLCB1CiAgICAgY2FsbGJhY2soZXJyb3IpOwogfQogCi12b2lkIFVu
aXF1ZUlEQkRhdGFiYXNlOjpyZW5hbWVJbmRleChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9u
JiB0cmFuc2FjdGlvbiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50NjRfdCBp
bmRleElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSwgRXJyb3JDYWxsYmFjayBjYWxs
YmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnJlbmFtZUluZGV4KFVuaXF1ZUlEQkRhdGFi
YXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZp
ZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lLCBFcnJv
ckNhbGxiYWNrIGNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0IHNwYWNlQ2hlY2tSZXN1bHQpCiB7
CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1
ZUlEQkRhdGFiYXNlOjpyZW5hbWVJbmRleCIpOwogCi0gICAgLy8gUXVvdGEgY2hlY2suCi0gICAg
YXV0byB0YXNrU2l6ZSA9IGRlZmF1bHRXcml0ZU9wZXJhdGlvbkNvc3QgKyBuZXdOYW1lLnNpemVJ
bkJ5dGVzKCk7Ci0gICAgaWYgKG1fc2VydmVyLnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3Jp
Z2luKCksIHRhc2tTaXplKSA9PSBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbjo6RGVueSkg
eworICAgIGlmICghc3BhY2VDaGVja1Jlc3VsdCkgeworICAgICAgICBpZiAoIW1fbWFuYWdlcikK
KyAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9y
IH0pOworCisgICAgICAgIGF1dG8gdGFza1NpemUgPSBkZWZhdWx0V3JpdGVPcGVyYXRpb25Db3N0
ICsgbmV3TmFtZS5zaXplSW5CeXRlcygpOworICAgICAgICBtX21hbmFnZXItPnJlcXVlc3RTcGFj
ZShtX2lkZW50aWZpZXIub3JpZ2luKCksIHRhc2tTaXplLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFr
UHRyIHsgKnRoaXMgfSwgd2Vha1RyYW5zYWN0aW9uID0gV2Vha1B0ciB7IHRyYW5zYWN0aW9uIH0s
IG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhJZGVudGlmaWVyLCBuZXdOYW1lLCBjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIGdyYW50ZWQpIG11dGFibGUgeworICAgICAgICAg
ICAgaWYgKCF3ZWFrVGhpcyB8fCAhd2Vha1RyYW5zYWN0aW9uKQorICAgICAgICAgICAgICAgIHJl
dHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiRGF0YWJhc2Ugb3Ig
dHJhbnNhY3Rpb24gaXMgY2xvc2VkIiB9KTsKKworICAgICAgICAgICAgcmVuYW1lSW5kZXgoKndl
YWtUcmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleElkZW50aWZpZXIsIG5l
d05hbWUsIFdURk1vdmUoY2FsbGJhY2spLCBncmFudGVkKTsKKyAgICAgICAgfSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIXNwYWNlQ2hlY2tSZXN1bHQudmFsdWUoKSkgewog
ICAgICAgICBjYWxsYmFjayhJREJFcnJvciB7IFF1b3RhRXhjZWVkZWRFcnJvciwgcXVvdGFFcnJv
ck1lc3NhZ2VOYW1lKCJSZW5hbWVJbmRleCIpIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CisgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVy
cm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJCYWNraW5nIHN0b3JlIGlzIGNsb3NlZCIgfSk7CisK
ICAgICBhdXRvKiBvYmplY3RTdG9yZUluZm8gPSBtX2RhdGFiYXNlSW5mby0+aW5mb0ZvckV4aXN0
aW5nT2JqZWN0U3RvcmUob2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKICAgICBpZiAoIW9iamVjdFN0
b3JlSW5mbykgewogICAgICAgICBjYWxsYmFjayhJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0
dGVtcHQgdG8gcmVuYW1lIGluZGV4IGluIG5vbi1leGlzdGFudCBvYmplY3Qgc3RvcmUiX3MgfSk7
CkBAIC02OTQsNyArODMxLDYgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cmVuYW1lSW5kZXgo
VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIHUKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CiAgICAgYXV0byBlcnJv
ciA9IG1fYmFja2luZ1N0b3JlLT5yZW5hbWVJbmRleCh0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRp
ZmllcigpLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4SWRlbnRpZmllciwgbmV3TmFtZSk7
CiAgICAgaWYgKGVycm9yLmlzTnVsbCgpKQogICAgICAgICBpbmRleEluZm8tPnJlbmFtZShuZXdO
YW1lKTsKQEAgLTcwMiw3ICs4MzgsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpyZW5hbWVJ
bmRleChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgdQogICAgIGNh
bGxiYWNrKGVycm9yKTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cHV0T3JBZGQoY29u
c3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXlEYXRhJiBrZXlEYXRh
LCBjb25zdCBJREJWYWx1ZSYgdmFsdWUsIEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVN
b2RlIG92ZXJ3cml0ZU1vZGUsIEtleURhdGFDYWxsYmFjayBjYWxsYmFjaykKK3ZvaWQgVW5pcXVl
SURCRGF0YWJhc2U6OnB1dE9yQWRkKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwg
Y29uc3QgSURCS2V5RGF0YSYga2V5RGF0YSwgY29uc3QgSURCVmFsdWUmIHZhbHVlLCBJbmRleGVk
REI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSBvdmVyd3JpdGVNb2RlLCBLZXlEYXRhQ2FsbGJh
Y2sgY2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgc3BhY2VDaGVja1Jlc3VsdCkKIHsKICAgICBB
U1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0
YWJhc2U6OnB1dE9yQWRkIik7CkBAIC03MTIsNyArODQ4LDkgQEAgdm9pZCBVbmlxdWVJREJEYXRh
YmFzZTo6cHV0T3JBZGQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJ
REJLZXkKICAgICBJREJLZXlEYXRhIHVzZWRLZXk7CiAgICAgSURCRXJyb3IgZXJyb3I7CiAKLSAg
ICBBU1NFUlQobV9iYWNraW5nU3RvcmUpOworICAgIGlmICghbV9iYWNraW5nU3RvcmUpCisgICAg
ICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiQmFja2lu
ZyBzdG9yZSBpcyBjbG9zZWQiIH0sIHVzZWRLZXkpOworCiAgICAgYXV0byBvYmplY3RTdG9yZUlk
ZW50aWZpZXIgPSByZXF1ZXN0RGF0YS5vYmplY3RTdG9yZUlkZW50aWZpZXIoKTsKICAgICBhdXRv
KiBvYmplY3RTdG9yZUluZm8gPSBtX2JhY2tpbmdTdG9yZS0+aW5mb0Zvck9iamVjdFN0b3JlKG9i
amVjdFN0b3JlSWRlbnRpZmllcik7CiAgICAgaWYgKCFvYmplY3RTdG9yZUluZm8pIHsKQEAgLTc1
OCwxNCArODk2LDI1IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnB1dE9yQWRkKGNvbnN0IElE
QlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5CiAgICAgfQogCiAgICAgLy8g
UXVvdGEgY2hlY2suCi0gICAgYXV0byBrZXlTaXplID0gZXN0aW1hdGVTaXplKHVzZWRLZXkpOwot
ICAgIGF1dG8gdmFsdWVTaXplID0gZXN0aW1hdGVTaXplKHZhbHVlKTsKLSAgICBhdXRvIGluZGV4
U2l6ZSA9IGVzdGltYXRlU2l6ZSgqb2JqZWN0U3RvcmVJbmZvLCBpbmRleEtleXMsIGtleVNpemUp
OwotICAgIGF1dG8gdGFza1NpemUgPSBkZWZhdWx0V3JpdGVPcGVyYXRpb25Db3N0ICsga2V5U2l6
ZSArIHZhbHVlU2l6ZSArIGluZGV4U2l6ZTsKLQotICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJ
REJEYXRhYmFzZTo6cHV0T3JBZGQgcXVvdGEgY2hlY2sgd2l0aCB0YXNrIHNpemU6ICUiIFBSSXU2
NCAiIGtleSBzaXplOiAlIiBQUkl1NjQgIiB2YWx1ZSBzaXplOiAlIiBQUkl1NjQgIiBpbmRleCBz
aXplOiAlIiBQUkl1NjQsIHRhc2tTaXplLCBrZXlTaXplLCB2YWx1ZVNpemUsIGluZGV4U2l6ZSk7
CisgICAgaWYgKCFzcGFjZUNoZWNrUmVzdWx0KSB7CisgICAgICAgIGlmICghbV9tYW5hZ2VyKQor
ICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3Ig
fSwgdXNlZEtleSk7CisKKyAgICAgICAgYXV0byBrZXlTaXplID0gZXN0aW1hdGVTaXplKHVzZWRL
ZXkpOworICAgICAgICBhdXRvIHZhbHVlU2l6ZSA9IGVzdGltYXRlU2l6ZSh2YWx1ZSk7CisgICAg
ICAgIGF1dG8gaW5kZXhTaXplID0gZXN0aW1hdGVTaXplKCpvYmplY3RTdG9yZUluZm8sIGluZGV4
S2V5cywga2V5U2l6ZSk7CisgICAgICAgIGF1dG8gdGFza1NpemUgPSBkZWZhdWx0V3JpdGVPcGVy
YXRpb25Db3N0ICsga2V5U2l6ZSArIHZhbHVlU2l6ZSArIGluZGV4U2l6ZTsKKyAgICAgICAgTE9H
KEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpwdXRPckFkZCBxdW90YSBjaGVjayB3aXRo
IHRhc2sgc2l6ZTogJSIgUFJJdTY0ICIga2V5IHNpemU6ICUiIFBSSXU2NCAiIHZhbHVlIHNpemU6
ICUiIFBSSXU2NCAiIGluZGV4IHNpemU6ICUiIFBSSXU2NCwgdGFza1NpemUsIGtleVNpemUsIHZh
bHVlU2l6ZSwgaW5kZXhTaXplKTsKKyAgICAgICAgbV9tYW5hZ2VyLT5yZXF1ZXN0U3BhY2UobV9p
ZGVudGlmaWVyLm9yaWdpbigpLCB0YXNrU2l6ZSwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7
ICp0aGlzIH0sIHJlcXVlc3REYXRhLCBrZXlEYXRhLCB2YWx1ZSwgb3ZlcndyaXRlTW9kZSwgY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICAg
ICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElE
QkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJEYXRhYmFzZSBvciB0cmFuc2FjdGlvbiBpcyBj
bG9zZWQiIH0sIElEQktleURhdGEgeyB9KTsKKworICAgICAgICAgICAgcHV0T3JBZGQocmVxdWVz
dERhdGEsIGtleURhdGEsIHZhbHVlLCBvdmVyd3JpdGVNb2RlLCBXVEZNb3ZlKGNhbGxiYWNrKSwg
Z3JhbnRlZCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAgaWYg
KG1fc2VydmVyLnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIHRhc2tTaXplKSA9
PSBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbjo6RGVueSkgeworICAgIGlmICghc3BhY2VD
aGVja1Jlc3VsdC52YWx1ZSgpKSB7CiAgICAgICAgIGNhbGxiYWNrKElEQkVycm9yIHsgUXVvdGFF
eGNlZWRlZEVycm9yLCBxdW90YUVycm9yTWVzc2FnZU5hbWUoIlB1dE9yQWRkIikgfSwgdXNlZEtl
eSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC03OTEsMTUgKzk0MCwzMCBAQCB2b2lkIFVu
aXF1ZUlEQkRhdGFiYXNlOjpwdXRPckFkZChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERh
dGEsIGNvbnN0IElEQktleQogICAgIGNhbGxiYWNrKGVycm9yLCB1c2VkS2V5KTsKIH0KIAotdm9p
ZCBVbmlxdWVJREJEYXRhYmFzZTo6Z2V0UmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1
ZXN0RGF0YSwgY29uc3QgSURCR2V0UmVjb3JkRGF0YSYgZ2V0UmVjb3JkRGF0YSwgR2V0UmVzdWx0
Q2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRSZWNvcmQoY29u
c3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJHZXRSZWNvcmREYXRhJiBn
ZXRSZWNvcmREYXRhLCBHZXRSZXN1bHRDYWxsYmFjayBjYWxsYmFjaywgU3BhY2VDaGVja1Jlc3Vs
dCBzcGFjZUNoZWNrUmVzdWx0KQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAg
IExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6Z2V0UmVjb3JkIik7CiAKKyAgICBp
ZiAoIXNwYWNlQ2hlY2tSZXN1bHQpIHsKKyAgICAgICAgaWYgKCFtX21hbmFnZXIpCisgICAgICAg
ICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciB9LCBJREJH
ZXRSZXN1bHQgeyB9KTsKKworICAgICAgICBtX21hbmFnZXItPnJlcXVlc3RTcGFjZShtX2lkZW50
aWZpZXIub3JpZ2luKCksIDAsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBy
ZXF1ZXN0RGF0YSwgZ2V0UmVjb3JkRGF0YSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0o
Ym9vbCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3Is
ICJEYXRhYmFzZSBpcyBjbG9zZWQiIH0sIElEQkdldFJlc3VsdCB7IH0pOworCisgICAgICAgICAg
ICBnZXRSZWNvcmQocmVxdWVzdERhdGEsIGdldFJlY29yZERhdGEsIFdURk1vdmUoY2FsbGJhY2sp
LCBncmFudGVkKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBB
U1NFUlQoc3BhY2VDaGVja1Jlc3VsdC52YWx1ZSgpKTsKKyAgICBpZiAoIW1fYmFja2luZ1N0b3Jl
KQorICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwg
IkJhY2tpbmcgc3RvcmUgaXMgY2xvc2VkIiB9LCBJREJHZXRSZXN1bHQgeyB9KTsKKwogICAgIElE
QkdldFJlc3VsdCByZXN1bHQ7CiAgICAgSURCRXJyb3IgZXJyb3I7Ci0KLSAgICBBU1NFUlQobV9i
YWNraW5nU3RvcmUpOwogICAgIGlmICh1aW50NjRfdCBpbmRleElkZW50aWZpZXIgPSByZXF1ZXN0
RGF0YS5pbmRleElkZW50aWZpZXIoKSkKICAgICAgICAgZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+
Z2V0SW5kZXhSZWNvcmQocmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCksIHJlcXVl
c3REYXRhLm9iamVjdFN0b3JlSWRlbnRpZmllcigpLCBpbmRleElkZW50aWZpZXIsIHJlcXVlc3RE
YXRhLmluZGV4UmVjb3JkVHlwZSgpLCBnZXRSZWNvcmREYXRhLmtleVJhbmdlRGF0YSwgcmVzdWx0
KTsKICAgICBlbHNlCkBAIC04MDgsNDcgKzk3MiwxMTAgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFz
ZTo6Z2V0UmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURC
R2UKICAgICBjYWxsYmFjayhlcnJvciwgcmVzdWx0KTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRh
YmFzZTo6Z2V0QWxsUmVjb3Jkcyhjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNv
bnN0IElEQkdldEFsbFJlY29yZHNEYXRhJiBnZXRBbGxSZWNvcmRzRGF0YSwgR2V0QWxsUmVzdWx0
c0NhbGxiYWNrIGNhbGxiYWNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Z2V0QWxsUmVjb3Jk
cyhjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkdldEFsbFJlY29y
ZHNEYXRhJiBnZXRBbGxSZWNvcmRzRGF0YSwgR2V0QWxsUmVzdWx0c0NhbGxiYWNrIGNhbGxiYWNr
LCBTcGFjZUNoZWNrUmVzdWx0IHNwYWNlQ2hlY2tSZXN1bHQpCiB7CiAgICAgQVNTRVJUKCFpc01h
aW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRB
bGxSZWNvcmRzIik7CiAKLSAgICBBU1NFUlQobV9iYWNraW5nU3RvcmUpOworICAgIGlmICghc3Bh
Y2VDaGVja1Jlc3VsdCkgeworICAgICAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAgICAgICAgIHJl
dHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yIH0sIElEQkdldEFsbFJl
c3VsdCB7IH0pOworCisgICAgICAgIG1fbWFuYWdlci0+cmVxdWVzdFNwYWNlKG1faWRlbnRpZmll
ci5vcmlnaW4oKSwgMCwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHJlcXVl
c3REYXRhLCBnZXRBbGxSZWNvcmRzRGF0YSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0o
Ym9vbCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3Is
ICJEYXRhYmFzZSBpcyBjbG9zZWQiIH0sIElEQkdldEFsbFJlc3VsdCB7IH0pOworCisgICAgICAg
ICAgICBnZXRBbGxSZWNvcmRzKHJlcXVlc3REYXRhLCBnZXRBbGxSZWNvcmRzRGF0YSwgV1RGTW92
ZShjYWxsYmFjayksIGdyYW50ZWQpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIEFTU0VSVChzcGFjZUNoZWNrUmVzdWx0LnZhbHVlKCkpOworICAgIGlmICghbV9i
YWNraW5nU3RvcmUpCisgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRT
dGF0ZUVycm9yLCAiQmFja2luZyBzdG9yZSBpcyBjbG9zZWQiIH0sIElEQkdldEFsbFJlc3VsdCB7
IH0pOworCiAgICAgSURCR2V0QWxsUmVzdWx0IHJlc3VsdDsKICAgICBhdXRvIGVycm9yID0gbV9i
YWNraW5nU3RvcmUtPmdldEFsbFJlY29yZHMocmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlm
aWVyKCksIGdldEFsbFJlY29yZHNEYXRhLCByZXN1bHQpOwogCiAgICAgY2FsbGJhY2soZXJyb3Is
IHJlc3VsdCk7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmdldENvdW50KGNvbnN0IElE
QlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiByYW5nZSwg
Q291bnRDYWxsYmFjayBjYWxsYmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmdldENvdW50
KGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5UmFuZ2VEYXRh
JiByYW5nZSwgQ291bnRDYWxsYmFjayBjYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCBzcGFjZUNo
ZWNrUmVzdWx0KQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIExPRyhJbmRl
eGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6Z2V0Q291bnQiKTsKIAotICAgIEFTU0VSVChtX2Jh
Y2tpbmdTdG9yZSk7CisgICAgaWYgKCFzcGFjZUNoZWNrUmVzdWx0KSB7CisgICAgICAgIGlmICgh
bV9tYW5hZ2VyKQorICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxp
ZFN0YXRlRXJyb3IgfSwgMCk7CisKKyAgICAgICAgbV9tYW5hZ2VyLT5yZXF1ZXN0U3BhY2UobV9p
ZGVudGlmaWVyLm9yaWdpbigpLCAwLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMg
fSwgcmVxdWVzdERhdGEsIHJhbmdlLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29s
IGdyYW50ZWQpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAg
ICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkRh
dGFiYXNlIGlzIGNsb3NlZCIgfSwgMCk7CisKKyAgICAgICAgICAgIGdldENvdW50KHJlcXVlc3RE
YXRhLCByYW5nZSwgV1RGTW92ZShjYWxsYmFjayksIGdyYW50ZWQpOworICAgICAgICB9KTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChzcGFjZUNoZWNrUmVzdWx0LnZhbHVl
KCkpOworICAgIGlmICghbV9iYWNraW5nU3RvcmUpCisgICAgICAgIHJldHVybiBjYWxsYmFjayhJ
REJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiQmFja2luZyBzdG9yZSBpcyBjbG9zZWQiIH0s
IDApOworCiAgICAgdWludDY0X3QgY291bnQgPSAwOwogICAgIGF1dG8gZXJyb3IgPSBtX2JhY2tp
bmdTdG9yZS0+Z2V0Q291bnQocmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCksIHJl
cXVlc3REYXRhLm9iamVjdFN0b3JlSWRlbnRpZmllcigpLCByZXF1ZXN0RGF0YS5pbmRleElkZW50
aWZpZXIoKSwgcmFuZ2UsIGNvdW50KTsKIAogICAgIGNhbGxiYWNrKGVycm9yLCBjb3VudCk7CiB9
CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZVJlY29yZChjb25zdCBJREJSZXF1ZXN0
RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQktleVJhbmdlRGF0YSYga2V5UmFuZ2VEYXRhLCBF
cnJvckNhbGxiYWNrIGNhbGxiYWNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlUmVj
b3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5UmFuZ2VE
YXRhJiBrZXlSYW5nZURhdGEsIEVycm9yQ2FsbGJhY2sgY2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1
bHQgc3BhY2VDaGVja1Jlc3VsdCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAg
ICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZVJlY29yZCIpOwogCi0g
ICAgQVNTRVJUKG1fYmFja2luZ1N0b3JlKTsKKyAgICBpZiAoIXNwYWNlQ2hlY2tSZXN1bHQpIHsK
KyAgICAgICAgaWYgKCFtX21hbmFnZXIpCisgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURC
RXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciB9KTsKKworICAgICAgICBtX21hbmFnZXItPnJlcXVl
c3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIDAsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQ
dHIgeyAqdGhpcyB9LCByZXF1ZXN0RGF0YSwga2V5UmFuZ2VEYXRhLCBjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spXShib29sIGdyYW50ZWQpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCF3
ZWFrVGhpcykKKyAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZh
bGlkU3RhdGVFcnJvciwgIkRhdGFiYXNlIGlzIGNsb3NlZCIgfSk7CisKKyAgICAgICAgICAgIGRl
bGV0ZVJlY29yZChyZXF1ZXN0RGF0YSwga2V5UmFuZ2VEYXRhLCBXVEZNb3ZlKGNhbGxiYWNrKSwg
Z3JhbnRlZCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNT
RVJUKHNwYWNlQ2hlY2tSZXN1bHQudmFsdWUoKSk7CisgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkK
KyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJC
YWNraW5nIHN0b3JlIGlzIGNsb3NlZCIgfSk7CisKICAgICBhdXRvIGVycm9yID0gbV9iYWNraW5n
U3RvcmUtPmRlbGV0ZVJhbmdlKHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpLCBy
ZXF1ZXN0RGF0YS5vYmplY3RTdG9yZUlkZW50aWZpZXIoKSwga2V5UmFuZ2VEYXRhKTsKIAogICAg
IGNhbGxiYWNrKGVycm9yKTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6b3BlbkN1cnNv
cihjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkN1cnNvckluZm8m
IGluZm8sIEdldFJlc3VsdENhbGxiYWNrIGNhbGxiYWNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFz
ZTo6b3BlbkN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElE
QkN1cnNvckluZm8mIGluZm8sIEdldFJlc3VsdENhbGxiYWNrIGNhbGxiYWNrLCBTcGFjZUNoZWNr
UmVzdWx0IHNwYWNlQ2hlY2tSZXN1bHQpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7
CiAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuQ3Vyc29yIik7CiAK
LSAgICBBU1NFUlQobV9iYWNraW5nU3RvcmUpOworICAgIGlmICghc3BhY2VDaGVja1Jlc3VsdCkg
eworICAgICAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJ
REJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yIH0sIElEQkdldFJlc3VsdCB7IH0pOworCisgICAg
ICAgIG1fbWFuYWdlci0+cmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwgMCwgW3Ro
aXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHJlcXVlc3REYXRhLCBpbmZvLCBjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIGdyYW50ZWQpIG11dGFibGUgeworICAgICAg
ICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURC
RXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkRhdGFiYXNlIG9yIHRyYW5zYWN0aW9uIGlzIGNs
b3NlZCIgfSwgSURCR2V0UmVzdWx0IHsgfSk7CisKKyAgICAgICAgICAgIG9wZW5DdXJzb3IocmVx
dWVzdERhdGEsIGluZm8sIFdURk1vdmUoY2FsbGJhY2spLCBncmFudGVkKTsKKyAgICAgICAgfSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQoc3BhY2VDaGVja1Jlc3VsdC52
YWx1ZSgpKTsKKyAgICBpZiAoIW1fYmFja2luZ1N0b3JlKQorICAgICAgICByZXR1cm4gY2FsbGJh
Y2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkJhY2tpbmcgc3RvcmUgaXMgY2xvc2Vk
IiB9LCBJREJHZXRSZXN1bHQgeyB9KTsKIAogICAgIElEQkdldFJlc3VsdCByZXN1bHQ7CiAgICAg
YXV0byBlcnJvciA9IG1fYmFja2luZ1N0b3JlLT5vcGVuQ3Vyc29yKHJlcXVlc3REYXRhLnRyYW5z
YWN0aW9uSWRlbnRpZmllcigpLCBpbmZvLCByZXN1bHQpOwpAQCAtODU2LDEyICsxMDgzLDI3IEBA
IHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6Om9wZW5DdXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEm
IHJlcXVlc3REYXRhLCBjb25zdCBJREJDCiAgICAgY2FsbGJhY2soZXJyb3IsIHJlc3VsdCk7CiB9
CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6Oml0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVxdWVz
dERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJJdGVyYXRlQ3Vyc29yRGF0YSYgZGF0YSwgR2V0
UmVzdWx0Q2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjppdGVyYXRl
Q3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCSXRlcmF0
ZUN1cnNvckRhdGEmIGRhdGEsIEdldFJlc3VsdENhbGxiYWNrIGNhbGxiYWNrLCBTcGFjZUNoZWNr
UmVzdWx0IHNwYWNlQ2hlY2tSZXN1bHQpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7
CiAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjppdGVyYXRlQ3Vyc29yIik7
CiAKLSAgICBBU1NFUlQobV9iYWNraW5nU3RvcmUpOworICAgIGlmICghc3BhY2VDaGVja1Jlc3Vs
dCkgeworICAgICAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAgICAgICAgIHJldHVybiBjYWxsYmFj
ayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yIH0sIElEQkdldFJlc3VsdCB7IH0pOworCisg
ICAgICAgIG1fbWFuYWdlci0+cmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwgMCwg
W3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHJlcXVlc3REYXRhLCBkYXRhLCBj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIGdyYW50ZWQpIG11dGFibGUgeworICAg
ICAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2so
SURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkRhdGFiYXNlIG9yIHRyYW5zYWN0aW9uIGlz
IGNsb3NlZCIgfSwgSURCR2V0UmVzdWx0IHsgfSk7CisKKyAgICAgICAgICAgIGl0ZXJhdGVDdXJz
b3IocmVxdWVzdERhdGEsIGRhdGEsIFdURk1vdmUoY2FsbGJhY2spLCBncmFudGVkKTsKKyAgICAg
ICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQoc3BhY2VDaGVja1Jl
c3VsdC52YWx1ZSgpKTsKKyAgICBpZiAoIW1fYmFja2luZ1N0b3JlKQorICAgICAgICByZXR1cm4g
Y2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkJhY2tpbmcgc3RvcmUgaXMg
Y2xvc2VkIiB9LCBJREJHZXRSZXN1bHQgeyB9KTsKIAogICAgIElEQkdldFJlc3VsdCByZXN1bHQ7
CiAgICAgYXV0byB0cmFuc2FjdGlvbklkZW50aWZpZXIgPSByZXF1ZXN0RGF0YS50cmFuc2FjdGlv
bklkZW50aWZpZXIoKTsKQEAgLTg3MSwxMyArMTExMywyOSBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFi
YXNlOjppdGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29u
c3QgSQogICAgIGNhbGxiYWNrKGVycm9yLCByZXN1bHQpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRh
dGFiYXNlOjpjb21taXRUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0
cmFuc2FjdGlvbiwgRXJyb3JDYWxsYmFjayBjYWxsYmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJh
c2U6OmNvbW1pdFRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5z
YWN0aW9uLCBFcnJvckNhbGxiYWNrIGNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0IHNwYWNlQ2hl
Y2tSZXN1bHQpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4
ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpjb21taXRUcmFuc2FjdGlvbiAtICVzIiwgdHJhbnNh
Y3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7
CiAKKyAgICBpZiAoIXNwYWNlQ2hlY2tSZXN1bHQpIHsKKyAgICAgICAgaWYgKCFtX21hbmFnZXIp
CisgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJv
ciB9KTsKKworICAgICAgICBtX21hbmFnZXItPnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3Jp
Z2luKCksIDAsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCB3ZWFrVHJhbnNh
Y3Rpb24gPSBXZWFrUHRyIHsgdHJhbnNhY3Rpb24gfSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKV0oYm9vbCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMg
fHwgIXdlYWtUcmFuc2FjdGlvbikKKyAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURC
RXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkRhdGFiYXNlIG9yIHRyYW5zYWN0aW9uIGlzIGNs
b3NlZCIgfSk7CisKKyAgICAgICAgICAgIGNvbW1pdFRyYW5zYWN0aW9uKCp3ZWFrVHJhbnNhY3Rp
b24sIFdURk1vdmUoY2FsbGJhY2spLCBncmFudGVkKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQoc3BhY2VDaGVja1Jlc3VsdC52YWx1ZSgpKTsKICAg
ICBBU1NFUlQodHJhbnNhY3Rpb24uZGF0YWJhc2VDb25uZWN0aW9uKCkuZGF0YWJhc2UoKSA9PSB0
aGlzKTsKLSAgICBBU1NFUlQobV9iYWNraW5nU3RvcmUpOworICAgIGlmICghbV9iYWNraW5nU3Rv
cmUpCisgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9y
LCAiQmFja2luZyBzdG9yZSBpcyBjbG9zZWQiIH0pOworICAgIAogICAgIGF1dG8gdGFrZW5UcmFu
c2FjdGlvbiA9IG1faW5Qcm9ncmVzc1RyYW5zYWN0aW9ucy50YWtlKHRyYW5zYWN0aW9uLmluZm8o
KS5pZGVudGlmaWVyKCkpOwogICAgIGlmICghdGFrZW5UcmFuc2FjdGlvbikgewogICAgICAgICBp
ZiAoIW1fb3BlbkRhdGFiYXNlQ29ubmVjdGlvbnMuY29udGFpbnMoJnRyYW5zYWN0aW9uLmRhdGFi
YXNlQ29ubmVjdGlvbigpKSkKQEAgLTg5MywxMSArMTE1MSwyNSBAQCB2b2lkIFVuaXF1ZUlEQkRh
dGFiYXNlOjpjb21taXRUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0
cmFuc2FjdAogICAgIHRyYW5zYWN0aW9uQ29tcGxldGVkKFdURk1vdmUodGFrZW5UcmFuc2FjdGlv
bikpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjphYm9ydFRyYW5zYWN0aW9uKFVuaXF1
ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBFcnJvckNhbGxiYWNrIGNhbGxi
YWNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6YWJvcnRUcmFuc2FjdGlvbihVbmlxdWVJREJE
YXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgRXJyb3JDYWxsYmFjayBjYWxsYmFjaywg
U3BhY2VDaGVja1Jlc3VsdCBzcGFjZUNoZWNrUmVzdWx0KQogewogICAgIEFTU0VSVCghaXNNYWlu
VGhyZWFkKCkpOwogICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6YWJvcnRU
cmFuc2FjdGlvbiAtICVzIiwgdHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKS5sb2dnaW5n
U3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKKyAgICBpZiAoIXNwYWNlQ2hlY2tSZXN1bHQpIHsK
KyAgICAgICAgaWYgKCFtX21hbmFnZXIpCisgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURC
RXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciB9KTsKKworICAgICAgICBtX21hbmFnZXItPnJlcXVl
c3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIDAsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQ
dHIgeyAqdGhpcyB9LCB3ZWFrVHJhbnNhY3Rpb24gPSBXZWFrUHRyIHsgdHJhbnNhY3Rpb24gfSwg
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBncmFudGVkKSBtdXRhYmxlIHsKKyAg
ICAgICAgICAgIGlmICghd2Vha1RoaXMgfHwgIXdlYWtUcmFuc2FjdGlvbikKKyAgICAgICAgICAg
ICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkRhdGFi
YXNlIG9yIHRyYW5zYWN0aW9uIGlzIGNsb3NlZCIgfSk7CisKKyAgICAgICAgICAgIGFib3J0VHJh
bnNhY3Rpb24oKndlYWtUcmFuc2FjdGlvbiwgV1RGTW92ZShjYWxsYmFjayksIGdyYW50ZWQpOwor
ICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChzcGFjZUNo
ZWNrUmVzdWx0LnZhbHVlKCkpOwogICAgIEFTU0VSVCh0cmFuc2FjdGlvbi5kYXRhYmFzZUNvbm5l
Y3Rpb24oKS5kYXRhYmFzZSgpID09IHRoaXMpOwogCiAgICAgYXV0byB0YWtlblRyYW5zYWN0aW9u
ID0gbV9pblByb2dyZXNzVHJhbnNhY3Rpb25zLnRha2UodHJhbnNhY3Rpb24uaW5mbygpLmlkZW50
aWZpZXIoKSk7CkBAIC05MjUsNyArMTE5NywxMSBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjph
Ym9ydFRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aQog
ICAgICAgICBtX2RhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPigqbV92
ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24tPm9yaWdpbmFsRGF0YWJhc2VJbmZvKCkpOwogICAgIH0K
IAotICAgIGF1dG8gZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+YWJvcnRUcmFuc2FjdGlvbih0cmFu
c2FjdGlvbklkZW50aWZpZXIpOworICAgIElEQkVycm9yIGVycm9yOworICAgIGlmICghbV9iYWNr
aW5nU3RvcmUpCisgICAgICAgIGVycm9yID0gSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwg
IkJhY2tpbmcgc3RvcmUgaXMgY2xvc2VkIiB9OworICAgIGVsc2UKKyAgICAgICAgZXJyb3IgPSBt
X2JhY2tpbmdTdG9yZS0+YWJvcnRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbklkZW50aWZpZXIpOwog
CiAgICAgY2FsbGJhY2soZXJyb3IpOwogICAgIHRyYW5zYWN0aW9uQ29tcGxldGVkKFdURk1vdmUo
dGFrZW5UcmFuc2FjdGlvbikpOwpAQCAtMTIwNCw2ICsxNDgwLDEyIEBAIHZvaWQgVW5pcXVlSURC
RGF0YWJhc2U6OmFib3J0QWN0aXZlVHJhbnNhY3Rpb25zKCkKICAgICB9CiB9CiAKK3ZvaWQgVW5p
cXVlSURCRGF0YWJhc2U6OmFib3J0SW5Qcm9ncmVzc1RyYW5zYWN0aW9ucygpCit7CisgICAgZm9y
IChhdXRvJiBpZGVudGlmaWVyIDogY29weVRvVmVjdG9yKG1faW5Qcm9ncmVzc1RyYW5zYWN0aW9u
cy5rZXlzKCkpKQorICAgICAgICBtX2luUHJvZ3Jlc3NUcmFuc2FjdGlvbnMuZ2V0KGlkZW50aWZp
ZXIpLT5hYm9ydFdpdGhvdXRDYWxsYmFjaygpOworfQorCiB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNl
OjpjbG9zZSgpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpjbG9z
ZSIpOwpAQCAtMTI2NSw1ICsxNTQ3LDEwIEBAIHN0ZDo6b3B0aW9uYWw8SURCRGF0YWJhc2VOYW1l
QW5kVmVyc2lvbj4gVW5pcXVlSURCRGF0YWJhc2U6Om5hbWVBbmRWZXJzaW9uKCkgY29uCiAgICAg
cmV0dXJuIElEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24geyBtX2RhdGFiYXNlSW5mby0+bmFtZSgp
LCBtX2RhdGFiYXNlSW5mby0+dmVyc2lvbigpIH07CiB9CiAKK2Jvb2wgVW5pcXVlSURCRGF0YWJh
c2U6Omhhc0RhdGFJbk1lbW9yeSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYmFja2luZ1N0b3Jl
ID8gbV9iYWNraW5nU3RvcmUtPmlzRXBoZW1lcmFsKCkgOiBmYWxzZTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgSURCU2VydmVyCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFz
ZS5oCmluZGV4IGIyYTc0MTdmOWM4MS4uNWVjN2I1NjgxZmI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJh
c2UuaApAQCAtNTksOCArNTksOCBAQCBlbnVtIGNsYXNzIEluZGV4UmVjb3JkVHlwZSA6IGJvb2w7
CiBuYW1lc3BhY2UgSURCU2VydmVyIHsKIAogY2xhc3MgSURCQ29ubmVjdGlvblRvQ2xpZW50Owot
Y2xhc3MgSURCU2VydmVyOwogY2xhc3MgVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uOworY2xh
c3MgVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyOwogCiB0eXBlZGVmIEZ1bmN0aW9uPHZvaWQoY29u
c3QgSURCRXJyb3ImKT4gRXJyb3JDYWxsYmFjazsKIHR5cGVkZWYgRnVuY3Rpb248dm9pZChjb25z
dCBJREJFcnJvciYsIGNvbnN0IElEQktleURhdGEmKT4gS2V5RGF0YUNhbGxiYWNrOwpAQCAtNzEs
NTQgKzcxLDU4IEBAIHR5cGVkZWYgRnVuY3Rpb248dm9pZChjb25zdCBJREJFcnJvciYsIHVpbnQ2
NF90KT4gQ291bnRDYWxsYmFjazsKIGNsYXNzIFVuaXF1ZUlEQkRhdGFiYXNlIDogcHVibGljIENh
bk1ha2VXZWFrUHRyPFVuaXF1ZUlEQkRhdGFiYXNlPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6Ci0gICAgVW5pcXVlSURCRGF0YWJhc2UoSURCU2VydmVyJiwgY29uc3Qg
SURCRGF0YWJhc2VJZGVudGlmaWVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgVW5pcXVlSURCRGF0
YWJhc2UoVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyJiwgY29uc3QgSURCRGF0YWJhc2VJZGVudGlm
aWVyJik7CiAgICAgVW5pcXVlSURCRGF0YWJhc2UoVW5pcXVlSURCRGF0YWJhc2UmKSA9IGRlbGV0
ZTsKICAgICBXRUJDT1JFX0VYUE9SVCB+VW5pcXVlSURCRGF0YWJhc2UoKTsKIAotICAgIHZvaWQg
b3BlbkRhdGFiYXNlQ29ubmVjdGlvbihJREJDb25uZWN0aW9uVG9DbGllbnQmLCBjb25zdCBJREJS
ZXF1ZXN0RGF0YSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgb3BlbkRhdGFiYXNlQ29ubmVj
dGlvbihJREJDb25uZWN0aW9uVG9DbGllbnQmLCBjb25zdCBJREJSZXF1ZXN0RGF0YSYpOwogCiAg
ICAgY29uc3QgSURCRGF0YWJhc2VJbmZvJiBpbmZvKCkgY29uc3Q7Ci0gICAgSURCU2VydmVyJiBz
ZXJ2ZXIoKSB7IHJldHVybiBtX3NlcnZlcjsgfQorICAgIFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdl
ciogbWFuYWdlcigpOwogICAgIGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYgaWRlbnRpZmll
cigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogCi0gICAgdm9pZCBjcmVhdGVPYmpl
Y3RTdG9yZShVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgY29uc3QgSURCT2JqZWN0U3Rv
cmVJbmZvJiwgRXJyb3JDYWxsYmFjayk7Ci0gICAgdm9pZCBkZWxldGVPYmplY3RTdG9yZShVbmlx
dWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUs
IEVycm9yQ2FsbGJhY2spOwotICAgIHZvaWQgcmVuYW1lT2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0
YWJhc2VUcmFuc2FjdGlvbiYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBuZXdOYW1lLCBFcnJvckNhbGxiYWNrKTsKLSAgICB2b2lkIGNsZWFyT2JqZWN0U3Rv
cmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRl
bnRpZmllciwgRXJyb3JDYWxsYmFjayk7Ci0gICAgdm9pZCBjcmVhdGVJbmRleChVbmlxdWVJREJE
YXRhYmFzZVRyYW5zYWN0aW9uJiwgY29uc3QgSURCSW5kZXhJbmZvJiwgRXJyb3JDYWxsYmFjayk7
Ci0gICAgdm9pZCBkZWxldGVJbmRleChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgdWlu
dDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGluZGV4TmFtZSwgRXJy
b3JDYWxsYmFjayk7Ci0gICAgdm9pZCByZW5hbWVJbmRleChVbmlxdWVJREJEYXRhYmFzZVRyYW5z
YWN0aW9uJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRleElk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSwgRXJyb3JDYWxsYmFjayk7Ci0gICAgdm9p
ZCBwdXRPckFkZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleURhdGEmLCBjb25z
dCBJREJWYWx1ZSYsIEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlLCBLZXlEYXRh
Q2FsbGJhY2spOwotICAgIHZvaWQgZ2V0UmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29u
c3QgSURCR2V0UmVjb3JkRGF0YSYsIEdldFJlc3VsdENhbGxiYWNrKTsKLSAgICB2b2lkIGdldEFs
bFJlY29yZHMoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJHZXRBbGxSZWNvcmRzRGF0
YSYsIEdldEFsbFJlc3VsdHNDYWxsYmFjayk7Ci0gICAgdm9pZCBnZXRDb3VudChjb25zdCBJREJS
ZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYsIENvdW50Q2FsbGJhY2spOwotICAg
IHZvaWQgZGVsZXRlUmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5UmFu
Z2VEYXRhJiwgRXJyb3JDYWxsYmFjayk7Ci0gICAgdm9pZCBvcGVuQ3Vyc29yKGNvbnN0IElEQlJl
cXVlc3REYXRhJiwgY29uc3QgSURCQ3Vyc29ySW5mbyYsIEdldFJlc3VsdENhbGxiYWNrKTsKLSAg
ICB2b2lkIGl0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJJdGVy
YXRlQ3Vyc29yRGF0YSYsIEdldFJlc3VsdENhbGxiYWNrKTsKLSAgICB2b2lkIGNvbW1pdFRyYW5z
YWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCBFcnJvckNhbGxiYWNrKTsKLSAg
ICB2b2lkIGFib3J0VHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIEVy
cm9yQ2FsbGJhY2spOworICAgIHVzaW5nIFNwYWNlQ2hlY2tSZXN1bHQgPSBzdGQ6Om9wdGlvbmFs
PGJvb2w+OworICAgIHZvaWQgY3JlYXRlT2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFu
c2FjdGlvbiYsIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYsIEVycm9yQ2FsbGJhY2ssIFNwYWNl
Q2hlY2tSZXN1bHQgPSBzdGQ6Om51bGxvcHQpOworICAgIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUo
VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVO
YW1lLCBFcnJvckNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0ID0gc3RkOjpudWxsb3B0KTsKKyAg
ICB2b2lkIHJlbmFtZU9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCB1
aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSwgRXJy
b3JDYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCA9IHN0ZDo6bnVsbG9wdCk7CisgICAgdm9pZCBj
bGVhck9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCB1aW50NjRfdCBv
YmplY3RTdG9yZUlkZW50aWZpZXIsIEVycm9yQ2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgPSBz
dGQ6Om51bGxvcHQpOworICAgIHZvaWQgY3JlYXRlSW5kZXgoVW5pcXVlSURCRGF0YWJhc2VUcmFu
c2FjdGlvbiYsIGNvbnN0IElEQkluZGV4SW5mbyYsIEVycm9yQ2FsbGJhY2ssIFNwYWNlQ2hlY2tS
ZXN1bHQgPSBzdGQ6Om51bGxvcHQpOworICAgIHZvaWQgZGVsZXRlSW5kZXgoVW5pcXVlSURCRGF0
YWJhc2VUcmFuc2FjdGlvbiYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBpbmRleE5hbWUsIEVycm9yQ2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgPSBzdGQ6
Om51bGxvcHQpOworICAgIHZvaWQgcmVuYW1lSW5kZXgoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2Fj
dGlvbiYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgdWludDY0X3QgaW5kZXhJZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUsIEVycm9yQ2FsbGJhY2ssIFNwYWNlQ2hlY2tS
ZXN1bHQgPSBzdGQ6Om51bGxvcHQpOworICAgIHZvaWQgcHV0T3JBZGQoY29uc3QgSURCUmVxdWVz
dERhdGEmLCBjb25zdCBJREJLZXlEYXRhJiwgY29uc3QgSURCVmFsdWUmLCBJbmRleGVkREI6Ok9i
amVjdFN0b3JlT3ZlcndyaXRlTW9kZSwgS2V5RGF0YUNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0
ID0gc3RkOjpudWxsb3B0KTsKKyAgICB2b2lkIGdldFJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0
YSYsIGNvbnN0IElEQkdldFJlY29yZERhdGEmLCBHZXRSZXN1bHRDYWxsYmFjaywgU3BhY2VDaGVj
a1Jlc3VsdCA9IHN0ZDo6bnVsbG9wdCk7CisgICAgdm9pZCBnZXRBbGxSZWNvcmRzKGNvbnN0IElE
QlJlcXVlc3REYXRhJiwgY29uc3QgSURCR2V0QWxsUmVjb3Jkc0RhdGEmLCBHZXRBbGxSZXN1bHRz
Q2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgPSBzdGQ6Om51bGxvcHQpOworICAgIHZvaWQgZ2V0
Q291bnQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmLCBDb3Vu
dENhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0ID0gc3RkOjpudWxsb3B0KTsKKyAgICB2b2lkIGRl
bGV0ZVJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYs
IEVycm9yQ2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgPSBzdGQ6Om51bGxvcHQpOworICAgIHZv
aWQgb3BlbkN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkN1cnNvckluZm8m
LCBHZXRSZXN1bHRDYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCA9IHN0ZDo6bnVsbG9wdCk7Cisg
ICAgdm9pZCBpdGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCSXRl
cmF0ZUN1cnNvckRhdGEmLCBHZXRSZXN1bHRDYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCA9IHN0
ZDo6bnVsbG9wdCk7CisgICAgdm9pZCBjb21taXRUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFz
ZVRyYW5zYWN0aW9uJiwgRXJyb3JDYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCA9IHN0ZDo6bnVs
bG9wdCk7CisgICAgdm9pZCBhYm9ydFRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNh
Y3Rpb24mLCBFcnJvckNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0ID0gc3RkOjpudWxsb3B0KTsK
IAogICAgIHZvaWQgZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlKFVuaXF1ZUlEQkRhdGFi
YXNlQ29ubmVjdGlvbiYsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25J
ZGVudGlmaWVyKTsKICAgICB2b2lkIGNvbm5lY3Rpb25DbG9zZWRGcm9tQ2xpZW50KFVuaXF1ZUlE
QkRhdGFiYXNlQ29ubmVjdGlvbiYpOwogICAgIHZvaWQgZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVu
dChVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZp
ZXImIHJlcXVlc3RJZGVudGlmaWVyLCBJbmRleGVkREI6OkNvbm5lY3Rpb25DbG9zZWRPbkJlaGFs
Zk9mU2VydmVyKTsKLSAgICB2b2lkIG9wZW5EQlJlcXVlc3RDYW5jZWxsZWQoY29uc3QgSURCUmVz
b3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllcik7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBvcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYg
cmVxdWVzdElkZW50aWZpZXIpOwogCiAgICAgdm9pZCBlbnF1ZXVlVHJhbnNhY3Rpb24oUmVmPFVu
aXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24+JiYpOwogCi0gICAgdm9pZCBoYW5kbGVEZWxldGUo
SURCQ29ubmVjdGlvblRvQ2xpZW50JiwgY29uc3QgSURCUmVxdWVzdERhdGEmKTsKLSAgICB2b2lk
IGltbWVkaWF0ZUNsb3NlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBoYW5kbGVEZWxldGUo
SURCQ29ubmVjdGlvblRvQ2xpZW50JiwgY29uc3QgSURCUmVxdWVzdERhdGEmKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGltbWVkaWF0ZUNsb3NlKCk7CiAKICAgICBib29sIGhhc0FjdGl2ZVRy
YW5zYWN0aW9ucygpIGNvbnN0OwogICAgIHZvaWQgYWJvcnRBY3RpdmVUcmFuc2FjdGlvbnMoKTsK
LSAgICBib29sIHRyeUNsb3NlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhYm9ydEluUHJv
Z3Jlc3NUcmFuc2FjdGlvbnMoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIHRyeUNsb3NlKCk7
CiAKLSAgICBTdHJpbmcgZmlsZVBhdGgoKSBjb25zdDsKLSAgICBzdGQ6Om9wdGlvbmFsPElEQkRh
dGFiYXNlTmFtZUFuZFZlcnNpb24+IG5hbWVBbmRWZXJzaW9uKCkgY29uc3Q7CisgICAgV0VCQ09S
RV9FWFBPUlQgU3RyaW5nIGZpbGVQYXRoKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rk
OjpvcHRpb25hbDxJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiBuYW1lQW5kVmVyc2lvbigpIGNv
bnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzRGF0YUluTWVtb3J5KCkgY29uc3Q7CiAK
IHByaXZhdGU6CiAgICAgdm9pZCBoYW5kbGVEYXRhYmFzZU9wZXJhdGlvbnMoKTsKICAgICB2b2lk
IGhhbmRsZUN1cnJlbnRPcGVyYXRpb24oKTsKICAgICB2b2lkIHBlcmZvcm1DdXJyZW50T3Blbk9w
ZXJhdGlvbigpOworICAgIHZvaWQgcGVyZm9ybUN1cnJlbnRPcGVuT3BlcmF0aW9uQWZ0ZXJTcGFj
ZUNoZWNrKGJvb2wgaXNHcmFudGVkKTsKICAgICB2b2lkIHBlcmZvcm1DdXJyZW50RGVsZXRlT3Bl
cmF0aW9uKCk7CiAgICAgZW51bSBjbGFzcyBSZXF1ZXN0VHlwZSB7IERlbGV0ZSwgQW55IH07CiAg
ICAgUmVmUHRyPFNlcnZlck9wZW5EQlJlcXVlc3Q+IHRha2VOZXh0UnVubmFibGVSZXF1ZXN0KFJl
cXVlc3RUeXBlID0gUmVxdWVzdFR5cGU6OkFueSk7CkBAIC0xNDYsMTEgKzE1MCwxMyBAQCBwcml2
YXRlOgogCiAgICAgdm9pZCBjbGVhclRyYW5zYWN0aW9uc09uQ29ubmVjdGlvbihVbmlxdWVJREJE
YXRhYmFzZUNvbm5lY3Rpb24mKTsKIAotICAgIElEQlNlcnZlciYgbV9zZXJ2ZXI7CisgICAgSURC
U2VydmVyKiBtX3NlcnZlcjsKKyAgICBXZWFrUHRyPFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlcj4g
bV9tYW5hZ2VyOwogICAgIElEQkRhdGFiYXNlSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAKICAg
ICBMaXN0SGFzaFNldDxSZWZQdHI8U2VydmVyT3BlbkRCUmVxdWVzdD4+IG1fcGVuZGluZ09wZW5E
QlJlcXVlc3RzOwogICAgIFJlZlB0cjxTZXJ2ZXJPcGVuREJSZXF1ZXN0PiBtX2N1cnJlbnRPcGVu
REJSZXF1ZXN0OworICAgIEhhc2hTZXQ8SURCUmVzb3VyY2VJZGVudGlmaWVyPiBtX29wZW5EQlJl
cXVlc3RzRm9yU3BhY2VDaGVjazsKIAogICAgIExpc3RIYXNoU2V0PFJlZlB0cjxVbmlxdWVJREJE
YXRhYmFzZUNvbm5lY3Rpb24+PiBtX29wZW5EYXRhYmFzZUNvbm5lY3Rpb25zOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0
YWJhc2VDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uY3BwCmluZGV4IDc0M2VkY2MzYjhjNS4u
NGQ1YmU1NzE2NTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9u
LmNwcApAQCAtNDIsMTEgKzQyLDE0IEBAIFJlZjxVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24+
IFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbjo6Y3JlYXRlKFVuaXF1ZUlEQkRhCiAKIFVuaXF1
ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uKFVuaXF1
ZUlEQkRhdGFiYXNlJiBkYXRhYmFzZSwgU2VydmVyT3BlbkRCUmVxdWVzdCYgcmVxdWVzdCkKICAg
ICA6IG1fZGF0YWJhc2UoZGF0YWJhc2UpCi0gICAgLCBtX3NlcnZlcihkYXRhYmFzZS5zZXJ2ZXIo
KSkKKyAgICAsIG1fbWFuYWdlcihkYXRhYmFzZS5tYW5hZ2VyKCkpCiAgICAgLCBtX2Nvbm5lY3Rp
b25Ub0NsaWVudChyZXF1ZXN0LmNvbm5lY3Rpb24oKSkKICAgICAsIG1fb3BlblJlcXVlc3RJZGVu
dGlmaWVyKHJlcXVlc3QucmVxdWVzdERhdGEoKS5yZXF1ZXN0SWRlbnRpZmllcigpKQogewotICAg
IG1fc2VydmVyLnJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0aW9uKCp0aGlzKTsKKyAgICBpZiAoYXV0
byogbWFuYWdlciA9IGRhdGFiYXNlLm1hbmFnZXIoKSkgeworICAgICAgICBtX21hbmFnZXIgPSBX
ZWFrUHRyIHsgKm1hbmFnZXIgfTsKKyAgICAgICAgbV9tYW5hZ2VyLT5yZWdpc3RlckNvbm5lY3Rp
b24oKnRoaXMpOworICAgIH0KICAgICBtX2Nvbm5lY3Rpb25Ub0NsaWVudC0+cmVnaXN0ZXJEYXRh
YmFzZUNvbm5lY3Rpb24oKnRoaXMpOwogfQogCkBAIC01NCwxMCArNTcsMTYgQEAgVW5pcXVlSURC
RGF0YWJhc2VDb25uZWN0aW9uOjp+VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uKCkKIHsKICAg
ICBBU1NFUlQobV90cmFuc2FjdGlvbk1hcC5pc0VtcHR5KCkpOwogCi0gICAgbV9zZXJ2ZXIudW5y
ZWdpc3RlckRhdGFiYXNlQ29ubmVjdGlvbigqdGhpcyk7CisgICAgaWYgKG1fbWFuYWdlcikKKyAg
ICAgICAgbV9tYW5hZ2VyLT51bnJlZ2lzdGVyQ29ubmVjdGlvbigqdGhpcyk7CiAgICAgbV9jb25u
ZWN0aW9uVG9DbGllbnQtPnVucmVnaXN0ZXJEYXRhYmFzZUNvbm5lY3Rpb24oKnRoaXMpOwogfQog
CitVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIqIFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbjo6
bWFuYWdlcigpCit7CisgICAgcmV0dXJuIG1fbWFuYWdlci5nZXQoKTsKK30KKwogYm9vbCBVbmlx
dWVJREJEYXRhYmFzZUNvbm5lY3Rpb246Omhhc05vbkZpbmlzaGVkVHJhbnNhY3Rpb25zKCkgY29u
c3QKIHsKICAgICByZXR1cm4gIW1fdHJhbnNhY3Rpb25NYXAuaXNFbXB0eSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFi
YXNlQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L1VuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5oCmluZGV4IDJlMTlkZmQyZGM5MS4uOThmZWI1
OWM3NmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5oCkBAIC0y
NSw3ICsyNSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiSURCU2VydmVyLmgiCiAj
aW5jbHVkZSAiVW5pcXVlSURCRGF0YWJhc2UuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgog
I2luY2x1ZGUgPHd0Zi9JZGVudGlmaWVkLmg+CkBAIC0zNiw2ICszNSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgSURCRXJyb3I7CiBjbGFzcyBJREJSZXN1bHREYXRhOworY2xhc3Mg
VW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyOwogCiBuYW1lc3BhY2UgSURCU2VydmVyIHsKIApAQCAt
NTIsMTEgKzUyLDExIEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmll
ciYgb3BlblJlcXVlc3RJZGVudGlmaWVyKCkgeyByZXR1cm4gbV9vcGVuUmVxdWVzdElkZW50aWZp
ZXI7IH0KICAgICBVbmlxdWVJREJEYXRhYmFzZSogZGF0YWJhc2UoKSB7IHJldHVybiBtX2RhdGFi
YXNlLmdldCgpOyB9Ci0gICAgSURCU2VydmVyKiBzZXJ2ZXIoKSB7IHJldHVybiAmbV9zZXJ2ZXI7
IH0KKyAgICBVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIqIG1hbmFnZXIoKTsKICAgICBJREJDb25u
ZWN0aW9uVG9DbGllbnQmIGNvbm5lY3Rpb25Ub0NsaWVudCgpIHsgcmV0dXJuIG1fY29ubmVjdGlv
blRvQ2xpZW50OyB9CiAKLSAgICB2b2lkIGNvbm5lY3Rpb25QZW5kaW5nQ2xvc2VGcm9tQ2xpZW50
KCk7Ci0gICAgdm9pZCBjb25uZWN0aW9uQ2xvc2VkRnJvbUNsaWVudCgpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgY29ubmVjdGlvblBlbmRpbmdDbG9zZUZyb21DbGllbnQoKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGNvbm5lY3Rpb25DbG9zZWRGcm9tQ2xpZW50KCk7CiAKICAgICBib29s
IGNsb3NlUGVuZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fY2xvc2VQZW5kaW5nOyB9CiAKQEAgLTY1
LDcgKzY1LDcgQEAgcHVibGljOgogICAgIHZvaWQgZmlyZVZlcnNpb25DaGFuZ2VFdmVudChjb25z
dCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCByZXF1
ZXN0ZWRWZXJzaW9uKTsKICAgICBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiBjcmVhdGVW
ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24odWludDY0X3QgbmV3VmVyc2lvbik7CiAKLSAgICB2b2lk
IGVzdGFibGlzaFRyYW5zYWN0aW9uKGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYpOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgZXN0YWJsaXNoVHJhbnNhY3Rpb24oY29uc3QgSURCVHJhbnNhY3Rp
b25JbmZvJik7CiAgICAgdm9pZCBkaWRBYm9ydFRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNl
VHJhbnNhY3Rpb24mLCBjb25zdCBJREJFcnJvciYpOwogICAgIHZvaWQgZGlkQ29tbWl0VHJhbnNh
Y3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIGNvbnN0IElEQkVycm9yJik7CiAg
ICAgdm9pZCBkaWRDcmVhdGVPYmplY3RTdG9yZShjb25zdCBJREJSZXN1bHREYXRhJik7CkBAIC03
NSw4ICs3NSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZENyZWF0ZUluZGV4KGNvbnN0IElEQlJl
c3VsdERhdGEmKTsKICAgICB2b2lkIGRpZERlbGV0ZUluZGV4KGNvbnN0IElEQlJlc3VsdERhdGEm
KTsKICAgICB2b2lkIGRpZFJlbmFtZUluZGV4KGNvbnN0IElEQlJlc3VsdERhdGEmKTsKLSAgICB2
b2lkIGRpZEZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVy
JiByZXF1ZXN0SWRlbnRpZmllciwgSW5kZXhlZERCOjpDb25uZWN0aW9uQ2xvc2VkT25CZWhhbGZP
ZlNlcnZlcik7Ci0gICAgdm9pZCBkaWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2UoY29uc3Qg
SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudChjb25zdCBJREJSZXNvdXJj
ZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBJbmRleGVkREI6OkNvbm5lY3Rpb25DbG9z
ZWRPbkJlaGFsZk9mU2VydmVyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZEZpbmlzaEhh
bmRsaW5nVmVyc2lvbkNoYW5nZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0
aW9uSWRlbnRpZmllcik7CiAKICAgICB2b2lkIGFib3J0VHJhbnNhY3Rpb25XaXRob3V0Q2FsbGJh
Y2soVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYpOwogCkBAIC04OCw3ICs4OCw3IEBAIHBy
aXZhdGU6CiAgICAgVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNl
JiwgU2VydmVyT3BlbkRCUmVxdWVzdCYpOwogCiAgICAgV2Vha1B0cjxVbmlxdWVJREJEYXRhYmFz
ZT4gbV9kYXRhYmFzZTsKLSAgICBJREJTZXJ2ZXImIG1fc2VydmVyOworICAgIFdlYWtQdHI8VW5p
cXVlSURCRGF0YWJhc2VNYW5hZ2VyPiBtX21hbmFnZXI7CiAgICAgUmVmPElEQkNvbm5lY3Rpb25U
b0NsaWVudD4gbV9jb25uZWN0aW9uVG9DbGllbnQ7CiAgICAgSURCUmVzb3VyY2VJZGVudGlmaWVy
IG1fb3BlblJlcXVlc3RJZGVudGlmaWVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VNYW5h
Z2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5hY2RjZmU0N2Uz
YTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyLmgKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSURCRGF0YWJhc2VJZGVudGlmaWVyLmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IENsaWVudE9yaWdpbjsKKworbmFtZXNw
YWNlIElEQlNlcnZlciB7CisKK2NsYXNzIElEQkJhY2tpbmdTdG9yZTsKK2NsYXNzIFVuaXF1ZUlE
QkRhdGFiYXNlQ29ubmVjdGlvbjsKKworY2xhc3MgVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyIDog
cHVibGljIENhbk1ha2VXZWFrUHRyPFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlcj4geworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1
YWwgflVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlcigpIHsgfQorICAgIHZpcnR1YWwgdm9pZCByZWdp
c3RlckNvbm5lY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCB1bnJlZ2lzdGVyQ29ubmVjdGlvbihVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rp
b24mKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyVHJhbnNhY3Rpb24oVW5pcXVlSURC
RGF0YWJhc2VUcmFuc2FjdGlvbiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlclRy
YW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mKSA9IDA7CisgICAgdmlydHVh
bCBzdGQ6OnVuaXF1ZV9wdHI8SURCQmFja2luZ1N0b3JlPiBjcmVhdGVCYWNraW5nU3RvcmUoY29u
c3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0
U3BhY2UoY29uc3QgQ2xpZW50T3JpZ2luJiwgdWludDY0X3Qgc2l6ZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJikgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgSURCU2VydmVyCisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRy
YW5zYWN0aW9uLmNwcAppbmRleCAxY2MwMjgxN2ExMjQuLmExM2Q1Y2Y2NjI2YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFi
YXNlVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcApAQCAtNTAsMTIgKzUwLDE0
IEBAIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNh
Y3Rpb24oVW5pcXVlSURCRGF0YWJhc2VDb25uCiAgICAgaWYgKG1fdHJhbnNhY3Rpb25JbmZvLm1v
ZGUoKSA9PSBJREJUcmFuc2FjdGlvbk1vZGU6OlZlcnNpb25jaGFuZ2UpCiAgICAgICAgIG1fb3Jp
Z2luYWxEYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oZGF0YWJhc2Ut
PmluZm8oKSk7CiAKLSAgICBkYXRhYmFzZUNvbm5lY3Rpb24oKS5zZXJ2ZXIoKS0+cmVnaXN0ZXJU
cmFuc2FjdGlvbigqdGhpcyk7CisgICAgaWYgKGF1dG8qIG1hbmFnZXIgPSBkYXRhYmFzZUNvbm5l
Y3Rpb24oKS5tYW5hZ2VyKCkpCisgICAgICAgIG1hbmFnZXItPnJlZ2lzdGVyVHJhbnNhY3Rpb24o
KnRoaXMpOwogfQogCiBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjp+VW5pcXVlSURCRGF0
YWJhc2VUcmFuc2FjdGlvbigpCiB7Ci0gICAgZGF0YWJhc2VDb25uZWN0aW9uKCkuc2VydmVyKCkt
PnVucmVnaXN0ZXJUcmFuc2FjdGlvbigqdGhpcyk7CisgICAgaWYgKGF1dG8qIG1hbmFnZXIgPSBk
YXRhYmFzZUNvbm5lY3Rpb24oKS5tYW5hZ2VyKCkpCisgICAgICAgIG1hbmFnZXItPnVucmVnaXN0
ZXJUcmFuc2FjdGlvbigqdGhpcyk7CiB9CiAKIFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYg
VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6ZGF0YWJhc2VDb25uZWN0aW9uKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJE
YXRhYmFzZVRyYW5zYWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5oCmluZGV4IDk1OTY2NTJhZGNkYi4u
ZmJhODVjMTczOGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9u
LmgKQEAgLTUxLDcgKzUxLDcgQEAgbmFtZXNwYWNlIElEQlNlcnZlciB7CiBjbGFzcyBJREJTZXJ2
ZXI7CiBjbGFzcyBVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb247CiAKLWNsYXNzIFVuaXF1ZUlE
QkRhdGFiYXNlVHJhbnNhY3Rpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxVbmlxdWVJREJEYXRhYmFz
ZVRyYW5zYWN0aW9uPiB7CitjbGFzcyBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uIDogcHVi
bGljIENhbk1ha2VXZWFrUHRyPFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24+LCBwdWJsaWMg
UmVmQ291bnRlZDxVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uPiB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIFJlZjxVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uPiBjcmVhdGUoVW5pcXVlSURC
RGF0YWJhc2VDb25uZWN0aW9uJiwgY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJik7CiAKQEAgLTU5
LDI5ICs1OSwyOSBAQCBwdWJsaWM6CiAKICAgICBVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24m
IGRhdGFiYXNlQ29ubmVjdGlvbigpOwogICAgIGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYgaW5m
bygpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNhY3Rpb25JbmZvOyB9Ci0gICAgYm9vbCBpc1ZlcnNp
b25DaGFuZ2UoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzVmVyc2lvbkNoYW5n
ZSgpIGNvbnN0OwogICAgIGJvb2wgaXNSZWFkT25seSgpIGNvbnN0OwogCiAgICAgSURCRGF0YWJh
c2VJbmZvKiBvcmlnaW5hbERhdGFiYXNlSW5mbygpIGNvbnN0OwogCi0gICAgdm9pZCBhYm9ydCgp
OwotICAgIHZvaWQgYWJvcnRXaXRob3V0Q2FsbGJhY2soKTsKLSAgICB2b2lkIGNvbW1pdCh1aW50
NjRfdCBwZW5kaW5nUmVxdWVzdENvdW50KTsKLQotICAgIHZvaWQgY3JlYXRlT2JqZWN0U3RvcmUo
Y29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mKTsKLSAgICB2
b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgU3RyaW5n
JiBvYmplY3RTdG9yZU5hbWUpOwotICAgIHZvaWQgcmVuYW1lT2JqZWN0U3RvcmUoY29uc3QgSURC
UmVxdWVzdERhdGEmLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgbmV3TmFtZSk7Ci0gICAgdm9pZCBjbGVhck9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3RE
YXRhJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKLSAgICB2b2lkIGNyZWF0ZUlu
ZGV4KGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCSW5kZXhJbmZvJik7Ci0gICAgdm9p
ZCBkZWxldGVJbmRleChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIHVpbnQ2NF90IG9iamVjdFN0b3Jl
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpbmRleE5hbWUpOwotICAgIHZvaWQgcmVuYW1lSW5k
ZXgoY29uc3QgSURCUmVxdWVzdERhdGEmLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIs
IHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lKTsKLSAgICB2
b2lkIHB1dE9yQWRkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5RGF0YSYsIGNv
bnN0IElEQlZhbHVlJiwgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUpOwotICAg
IHZvaWQgZ2V0UmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCR2V0UmVjb3Jk
RGF0YSYpOwotICAgIHZvaWQgZ2V0QWxsUmVjb3Jkcyhjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNv
bnN0IElEQkdldEFsbFJlY29yZHNEYXRhJik7Ci0gICAgdm9pZCBnZXRDb3VudChjb25zdCBJREJS
ZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYpOwotICAgIHZvaWQgZGVsZXRlUmVj
b3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJik7Ci0gICAg
dm9pZCBvcGVuQ3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCQ3Vyc29ySW5m
byYpOwotICAgIHZvaWQgaXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0
IElEQkl0ZXJhdGVDdXJzb3JEYXRhJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhYm9ydCgp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWJvcnRXaXRob3V0Q2FsbGJhY2soKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGNvbW1pdCh1aW50NjRfdCBwZW5kaW5nUmVxdWVzdENvdW50KTsK
KworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVx
dWVzdERhdGEmLCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgU3Ry
aW5nJiBvYmplY3RTdG9yZU5hbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVuYW1lT2Jq
ZWN0U3RvcmUoY29uc3QgSURCUmVxdWVzdERhdGEmLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBj
bGVhck9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgdWludDY0X3Qgb2JqZWN0U3Rv
cmVJZGVudGlmaWVyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNyZWF0ZUluZGV4KGNvbnN0
IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCSW5kZXhJbmZvJik7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBkZWxldGVJbmRleChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIHVpbnQ2NF90IG9iamVj
dFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpbmRleE5hbWUpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgcmVuYW1lSW5kZXgoY29uc3QgSURCUmVxdWVzdERhdGEmLCB1aW50NjRfdCBv
YmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBuZXdOYW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHB1dE9yQWRkKGNvbnN0IElE
QlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5RGF0YSYsIGNvbnN0IElEQlZhbHVlJiwgSW5kZXhl
ZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
Z2V0UmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCR2V0UmVjb3JkRGF0YSYp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0QWxsUmVjb3Jkcyhjb25zdCBJREJSZXF1ZXN0
RGF0YSYsIGNvbnN0IElEQkdldEFsbFJlY29yZHNEYXRhJik7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBnZXRDb3VudChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleVJhbmdlRGF0
YSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGVsZXRlUmVjb3JkKGNvbnN0IElEQlJlcXVl
c3REYXRhJiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBvcGVuQ3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCQ3Vyc29ySW5mbyYp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXF1ZXN0
RGF0YSYsIGNvbnN0IElEQkl0ZXJhdGVDdXJzb3JEYXRhJik7CiAKICAgICB2b2lkIGRpZEFjdGl2
YXRlSW5CYWNraW5nU3RvcmUoY29uc3QgSURCRXJyb3ImKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkVycm9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3IuaAppbmRleCBmZjE3Yzk4YTQx
MTUuLmIzMGFkMzkxNzZmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2hhcmVkL0lEQkVycm9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2hhcmVkL0lEQkVycm9yLmgKQEAgLTUyLDYgKzUyLDcgQEAgcHVibGljOgogICAgIFN0
cmluZyBtZXNzYWdlKCkgY29uc3Q7CiAKICAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJu
ICFtX2NvZGU7IH0KKyAgICBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gIWlzTnVsbCgp
OyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCBJREJFcnJvciBpc29sYXRlZENvcHkoKSBjb25zdDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lE
QlJlcXVlc3REYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQv
SURCUmVxdWVzdERhdGEuaAppbmRleCAwMThjYjEzZTc1ZWIuLjAwMTc4N2E2NjU4YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3RE
YXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJl
cXVlc3REYXRhLmgKQEAgLTU2LDggKzU2LDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JU
IElEQlJlcXVlc3REYXRhIGlzb2xhdGVkQ29weSgpIGNvbnN0OwogCiAgICAgSURCQ29ubmVjdGlv
bklkZW50aWZpZXIgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoKSBjb25zdDsKLSAgICBJREJS
ZXNvdXJjZUlkZW50aWZpZXIgcmVxdWVzdElkZW50aWZpZXIoKSBjb25zdDsKLSAgICBJREJSZXNv
dXJjZUlkZW50aWZpZXIgdHJhbnNhY3Rpb25JZGVudGlmaWVyKCkgY29uc3Q7CisgICAgV0VCQ09S
RV9FWFBPUlQgSURCUmVzb3VyY2VJZGVudGlmaWVyIHJlcXVlc3RJZGVudGlmaWVyKCkgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgSURCUmVzb3VyY2VJZGVudGlmaWVyIHRyYW5zYWN0aW9uSWRl
bnRpZmllcigpIGNvbnN0OwogICAgIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllcigpIGNv
bnN0OwogICAgIHVpbnQ2NF90IGluZGV4SWRlbnRpZmllcigpIGNvbnN0OwogICAgIEluZGV4ZWRE
Qjo6SW5kZXhSZWNvcmRUeXBlIGluZGV4UmVjb3JkVHlwZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc291cmNlSWRlbnRp
Zmllci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc291
cmNlSWRlbnRpZmllci5oCmluZGV4IGJlMTYxOTdmNjM0YS4uYWZmOTFmNDBkYTE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzb3VyY2VJ
ZGVudGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVk
L0lEQlJlc291cmNlSWRlbnRpZmllci5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICBJ
REJSZXNvdXJjZUlkZW50aWZpZXIoY29uc3QgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkm
LCBjb25zdCBJREJSZXF1ZXN0Jik7CiAgICAgZXhwbGljaXQgSURCUmVzb3VyY2VJZGVudGlmaWVy
KGNvbnN0IElEQlNlcnZlcjo6SURCQ29ubmVjdGlvblRvQ2xpZW50Jik7CiAKLSAgICBzdGF0aWMg
SURCUmVzb3VyY2VJZGVudGlmaWVyIGVtcHR5VmFsdWUoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgSURCUmVzb3VyY2VJZGVudGlmaWVyIGVtcHR5VmFsdWUoKTsKICAgICBib29sIGlzRW1w
dHkoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuICFtX3Jlc291cmNlTnVtYmVyICYmICFt
X2lkYkNvbm5lY3Rpb25JZGVudGlmaWVyOwpAQCAtNjEsNiArNjEsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBTdHJpbmdIYXNoZXI6Omhhc2hNZW1vcnk8c2l6ZW9mKGhhc2hDb2Rlcyk+KGhh
c2hDb2Rlcyk7CiAgICAgfQogICAgIAorICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBJREJSZXNv
dXJjZUlkZW50aWZpZXImIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsg
fQogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIG90aGVy
KSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1faWRiQ29ubmVjdGlvbklkZW50aWZpZXIg
PT0gb3RoZXIubV9pZGJDb25uZWN0aW9uSWRlbnRpZmllcgpAQCAtNzIsNyArNzMsOCBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgSURCUmVzb3VyY2VJZGVudGlmaWVyIGlzb2xhdGVkQ29w
eSgpIGNvbnN0OwogCiAjaWYgIUxPR19ESVNBQkxFRAotICAgIFN0cmluZyBsb2dnaW5nU3RyaW5n
KCkgY29uc3Q7CisgICAgLy8gc2lodWlsOiByZW1vdmUgdGhpcworICAgIFdFQkNPUkVfRVhQT1JU
IFN0cmluZyBsb2dnaW5nU3RyaW5nKCkgY29uc3Q7CiAjZW5kaWYKIAogICAgIFdFQkNPUkVfRVhQ
T1JUIElEQlJlc291cmNlSWRlbnRpZmllcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDdmMmRmMDQ1MTE3NC4uYjk3OGRhYTFm
ZTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0xMjQzLDcgKzEyNDMsNiBAQAogCQk0MzY3MDhDNzEyRDlDQTRCMDAwNDQyMzQg
LyogUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MzY3MDg4ODEyRDlDQTRBMDAwNDQyMzQgLyogUmVuZGVyU1ZH
SGlkZGVuQ29udGFpbmVyLmggKi87IH07CiAJCTQzNjcwOEM5MTJEOUNBNEIwMDA0NDIzNCAvKiBS
ZW5kZXJTVkdJbWFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDM2NzA4OEExMkQ5Q0E0QTAwMDQ0MjM0IC8qIFJlbmRlclNWR0ltYWdlLmggKi87IH07
CiAJCTQzNjcwOENCMTJEOUNBNEIwMDA0NDIzNCAvKiBMZWdhY3lSZW5kZXJTVkdNb2RlbE9iamVj
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM2NzA4
OEMxMkQ5Q0E0QTAwMDQ0MjM0IC8qIExlZ2FjeVJlbmRlclNWR01vZGVsT2JqZWN0LmggKi87IH07
Ci0JCTQzNjcwQzkzNDJEOUJDNEIwMDA0NDIzNCAvKiBSZW5kZXJTVkdNb2RlbE9iamVjdC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM2NzA4RkQxMkQ5
Q0E0QTAwMDMyMTE0IC8qIFJlbmRlclNWR01vZGVsT2JqZWN0LmggKi87IH07CiAJCTQzNjcwOENE
MTJEOUNBNEIwMDA0NDIzNCAvKiBSZW5kZXJTVkdSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM2NzA4OEUxMkQ5Q0E0QTAwMDQ0MjM0IC8q
IFJlbmRlclNWR1Jlc291cmNlLmggKi87IH07CiAJCTQzNjcwOENGMTJEOUNBNEIwMDA0NDIzNCAv
KiBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQzNjcwODkwMTJEOUNBNEEwMDA0NDIzNCAvKiBSZW5kZXJTVkdS
ZXNvdXJjZUNsaXBwZXIuaCAqLzsgfTsKIAkJNDM2NzA4RDExMkQ5Q0E0QjAwMDQ0MjM0IC8qIFJl
bmRlclNWR1Jlc291cmNlQ29udGFpbmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MzY3MDg5MjEyRDlDQTRBMDAwNDQyMzQgLyogUmVuZGVyU1ZHUmVz
b3VyY2VDb250YWluZXIuaCAqLzsgfTsKQEAgLTEyNjYsNiArMTI2NSw3IEBACiAJCTQzNjcwOEY2
MTJEOUNBNEIwMDA0NDIzNCAvKiBTVkdSZXNvdXJjZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzNjcwOEI3MTJEOUNBNEIwMDA0NDIzNCAvKiBTVkdS
ZXNvdXJjZXMuaCAqLzsgfTsKIAkJNDM2NzA4RjgxMkQ5Q0E0QjAwMDQ0MjM0IC8qIFNWR1Jlc291
cmNlc0NhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MzY3MDhCOTEyRDlDQTRCMDAwNDQyMzQgLyogU1ZHUmVzb3VyY2VzQ2FjaGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MzY3MDhGQTEyRDlD
QTRCMDAwNDQyMzQgLyogU1ZHUmVzb3VyY2VzQ3ljbGVTb2x2ZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzNjcwOEJCMTJEOUNBNEIwMDA0NDIzNCAv
KiBTVkdSZXNvdXJjZXNDeWNsZVNvbHZlci5oICovOyB9OworCQk0MzY3MEM5MzQyRDlCQzRCMDAw
NDQyMzQgLyogUmVuZGVyU1ZHTW9kZWxPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzNjcwOEZEMTJEOUNBNEEwMDAzMjExNCAvKiBSZW5kZXJT
VkdNb2RlbE9iamVjdC5oICovOyB9OwogCQk0MzkwNDZEODEyREEyNUU4MDBBRjgwQTIgLyogUmVu
ZGVyTWF0aE1MQmxvY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQzOTA0NkM0MTJEQTI1RTgwMEFGODBBMiAvKiBSZW5kZXJNYXRoTUxCbG9jay5oICov
OyB9OwogCQk0MzkwNDZEQTEyREEyNUU4MDBBRjgwQTIgLyogUmVuZGVyTWF0aE1MRmVuY2VkLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzkwNDZDNjEy
REEyNUU4MDBBRjgwQTIgLyogUmVuZGVyTWF0aE1MRmVuY2VkLmggKi87IH07CiAJCTQzOTA0NkRB
MTJEQTI1RTgwMEFGODFCMyAvKiBSZW5kZXJNYXRoTUxGZW5jZWRPcGVyYXRvci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM5MDQ2QzYxMkRBMjVFODAw
QUY4MUIzIC8qIFJlbmRlck1hdGhNTEZlbmNlZE9wZXJhdG9yLmggKi87IH07CkBAIC0xNTMxLDEw
ICsxNTMxLDEwIEBACiAJCTUxMTIzRTJGMjc2OTQwQ0EwMEY5RDQxQiAvKiBOb3RpZmljYXRpb25E
YXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTEy
M0UyQzI3NjkzQzMyMDBGOUQ0MUIgLyogTm90aWZpY2F0aW9uRGF0YS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxMTdGMzBFMjVFNjEwMjAwMDJB
OUYxRSAvKiBSZW1vdGVDb21tYW5kTGlzdGVuZXJDb2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExN0YzMEMyNUU2MTAxRjAwMkE5RjFFIC8qIFJl
bW90ZUNvbW1hbmRMaXN0ZW5lckNvY29hLmggKi87IH07CiAJCTUxMUVDMTI4MUM1MEFBQ0EwMDMy
Rjk4MyAvKiBJREJTZXJpYWxpemF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MTFFQzEyNjFDNTBBQTU3MDAzMkY5ODMgLyogSURCU2VyaWFsaXph
dGlvbi5oICovOyB9OwotCQk1MTFFQzEyQzFDNTBBQkJGMDAzMkY5ODMgLyogU1FMaXRlSURCVHJh
bnNhY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxMUVDMTJBMUM1MEFCQkEwMDMyRjk4MyAvKiBTUUxpdGVJREJUcmFuc2FjdGlvbi5oICovOyB9
OworCQk1MTFFQzEyQzFDNTBBQkJGMDAzMkY5ODMgLyogU1FMaXRlSURCVHJhbnNhY3Rpb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMUVDMTJBMUM1
MEFCQkEwMDMyRjk4MyAvKiBTUUxpdGVJREJUcmFuc2FjdGlvbi5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxMUVDMTMwMUM1MEFCRjUwMDMyRjk4
MyAvKiBTUUxpdGVJREJDdXJzb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxMUVDMTJFMUM1MEFCRUMwMDMyRjk4MyAvKiBTUUxpdGVJREJDdXJzb3Iu
aCAqLzsgfTsKIAkJNTEyMEJCQUYxRjFDRUNFNzAwRUZFQkYxIC8qIENvb2tpZVN0b3JhZ2VPYnNl
cnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEy
MEJCQUQxRjFDRTc3MDAwRUZFQkYxIC8qIENvb2tpZVN0b3JhZ2VPYnNlcnZlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTUxMkJEQjRCMUM0NTZG
RkEwMDY0OTRERiAvKiBTUUxpdGVJREJCYWNraW5nU3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMkJEQjQ5MUM0NTZGQUIwMDY0OTRERiAvKiBT
UUxpdGVJREJCYWNraW5nU3RvcmUuaCAqLzsgfTsKKwkJNTEyQkRCNEIxQzQ1NkZGQTAwNjQ5NERG
IC8qIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTEyQkRCNDkxQzQ1NkZBQjAwNjQ5NERGIC8qIFNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTUxMkREOEY1MEQ5MUU2QUYwMDBGODlFRSAvKiBMZWdhY3lXZWJBcmNoaXZlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTJERDhFQjBEOTFF
NkFGMDAwRjg5RUUgLyogTGVnYWN5V2ViQXJjaGl2ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxMkREOEY2MEQ5MUU2QUYwMDBGODlFRSAvKiBB
cmNoaXZlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTJERDhFQzBEOTFFNkFGMDAwRjg5RUUgLyogQXJjaGl2ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxMkREOEY4MEQ5MUU2QUYwMDBGODlFRSAv
KiBBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTJERDhFRTBEOTFFNkFGMDAwRjg5RUUgLyogQXJjaGl2ZVJl
c291cmNlQ29sbGVjdGlvbi5oICovOyB9OwpAQCAtMTU4MCw3ICsxNTgwLDcgQEAKIAkJNTE2RDdE
NzIxQkI1RjBCRDAwQUY3Qzc3IC8qIElEQkNvbm5lY3Rpb25Ub0NsaWVudERlbGVnYXRlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTZEN0Q2RTFCQjVG
MDY1MDBBRjdDNzcgLyogSURCQ29ubmVjdGlvblRvQ2xpZW50RGVsZWdhdGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTZGN0Y2RDFDMzFFMzlB
MDBGMTExREMgLyogU2VydmVyT3BlbkRCUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE2RjdGNkMxQzMxQzc5RDAwRjExMURDIC8qIFNlcnZl
ck9wZW5EQlJlcXVlc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk1MTcxMzhGMDFCRUQxRDFBMDAwRDVGMDEgLyogSW5kZXhLZXkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNzEzOEVFMUJFRDFEMTcw
MDBENUYwMSAvKiBJbmRleEtleS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07Ci0JCTUxNzEzOEY4MUJGMTI4QkIwMDBENUYwMSAvKiBJbmRleFZhbHVlU3Rv
cmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNzEz
OEY2MUJGMTIyNjIwMDBENUYwMSAvKiBJbmRleFZhbHVlU3RvcmUuaCAqLzsgfTsKKwkJNTE3MTM4
RjgxQkYxMjhCQjAwMEQ1RjAxIC8qIEluZGV4VmFsdWVTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3MTM4RjYxQkYxMjI2MjAwMEQ1RjAxIC8q
IEluZGV4VmFsdWVTdG9yZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTUxNzEzOEZDMUJGM0FERjQwMDBENUYwMSAvKiBJREJDdXJzb3JJbmZvLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTcxMzhGQTFC
RjNBREFDMDAwRDVGMDEgLyogSURCQ3Vyc29ySW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxNzEzOTA2MUJGNjRERUMwMDBENUYwMSAvKiBN
ZW1vcnlPYmplY3RTdG9yZUN1cnNvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTE3MTM5MDQxQkY2NERFMzAwMEQ1RjAxIC8qIE1lbW9yeU9iamVjdFN0
b3JlQ3Vyc29yLmggKi87IH07CiAJCTUxNzEzOTA4MUJGNjRERUYwMDBENUYwMSAvKiBNZW1vcnlD
dXJzb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
NzEzOTAyMUJGNjRERTMwMDBENUYwMSAvKiBNZW1vcnlDdXJzb3IuaCAqLzsgfTsKQEAgLTE2NTcs
NyArMTY1Nyw3IEBACiAJCTUxQjkxNDEwMUZEMjc4MkQwMEVFMjg1OSAvKiBSZWdpc3RyYXRpb25E
YXRhYmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTFCOTE0MEMxRkQyNzgyNTAwRUUyODU5IC8qIFJlZ2lzdHJhdGlvbkRhdGFiYXNlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFCOTE0MTExRkQy
NzgyRDAwRUUyODU5IC8qIFJlZ2lzdHJhdGlvblN0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUI5MTQwQjFGRDI3ODI1MDBFRTI4NTkgLyogUmVn
aXN0cmF0aW9uU3RvcmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk1MUJBNEFDNDFCQkI1Q0Q4MDBERjNENkQgLyogSURCRGF0YWJhc2VJbmZvLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJBNEFDMjFC
QkI1Q0JGMDBERjNENkQgLyogSURCRGF0YWJhc2VJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNTFCQTRBQ0IxQkJDNUJEOTAwREYzRDZEIC8q
IE1lbW9yeUlEQkJhY2tpbmdTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTFCQTRBQzkxQkJDNUI5RTAwREYzRDZEIC8qIE1lbW9yeUlEQkJhY2tp
bmdTdG9yZS5oICovOyB9OworCQk1MUJBNEFDQjFCQkM1QkQ5MDBERjNENkQgLyogTWVtb3J5SURC
QmFja2luZ1N0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MUJBNEFDOTFCQkM1QjlFMDBERjNENkQgLyogTWVtb3J5SURCQmFja2luZ1N0b3JlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFCQTRB
Q0MxQkJDNUJERDAwREYzRDZEIC8qIElEQkJhY2tpbmdTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCQTRBQzcxQkJDNUFENjAwREYzRDZEIC8q
IElEQkJhY2tpbmdTdG9yZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTUxQkE5NDcxMjNBQzMwNTMwMDQ0NDg0NiAvKiBSdW5KYXZhU2NyaXB0UGFy
YW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTFCQTk0NkYyM0FDMzA1MDAwNDQ0ODQ2IC8qIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFCQ0NFMzAx
RjhGMTc5RTAwNkJBMEVEIC8qIFNlcnZpY2VXb3JrZXJUaHJlYWQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0M4NzEwMUY4RUU3MkUwMEVCODA3NiAv
KiBTZXJ2aWNlV29ya2VyVGhyZWFkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTE2NzMsNyArMTY3Myw3IEBACiAJCTUxRTBCQUJCMERBNTU0NzEw
MEE5RTQxNyAvKiBTdG9yYWdlRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxRTBCQUI5MERBNTU0NzEwMEE5RTQxNyAvKiBTdG9yYWdlRXZlbnQu
aCAqLzsgfTsKIAkJNTFFMEJBRUIwREE1NUQ0QTAwQTlFNDE3IC8qIEpTU3RvcmFnZUV2ZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUwQkFFOTBE
QTU1RDRBMDBBOUU0MTcgLyogSlNTdG9yYWdlRXZlbnQuaCAqLzsgfTsKIAkJNTFFMEJCMzgwREE1
QUNCNjAwQTlFNDE3IC8qIFN0b3JhZ2VNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTBCQjM2MERBNUFDQjYwMEE5RTQxNyAvKiBTdG9yYWdlTWFw
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNTFF
MUJBQzMxQkQ4MDY0RTAwNTVEODFGIC8qIE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUxQkFDMTFC
RDgwNjQ3MDA1NUQ4MUYgLyogTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uaCAqLzsgfTsK
KwkJNTFFMUJBQzMxQkQ4MDY0RTAwNTVEODFGIC8qIE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUx
QkFDMTFCRDgwNjQ3MDA1NUQ4MUYgLyogTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUUyNjkz
NzFERDNCRDlCMDA2QjZBNTggLyogSURCSXRlcmF0ZUN1cnNvckRhdGEuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTI2OTM1MUREM0JEOTEwMDZCNkE1
OCAvKiBJREJJdGVyYXRlQ3Vyc29yRGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTUxRTM5OTAwMUQ2RTQ3NTAwMDlDODgzMSAvKiBHYW1lQ29u
dHJvbGxlckdhbWVwYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxRTM5OEZDMUQ2RTQ3NEIwMDlDODgzMSAvKiBHYW1lQ29udHJvbGxlckdhbWVwYWQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUUz
OTkwMjFENkU0NzUwMDA5Qzg4MzEgLyogR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTM5OEZFMUQ2
RTQ3NEIwMDlDODgzMSAvKiBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNjgzLDcgKzE2ODMs
NyBAQAogCQk1MUVDQzNGODIwMDU4N0JGMDA0ODNFQUUgLyogTWVzc2FnZVBvcnRDaGFubmVsUmVn
aXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
RUNDM0YxMjAwNTg3QjUwMDQ4M0VBRSAvKiBNZXNzYWdlUG9ydENoYW5uZWxSZWdpc3RyeS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxRUNDM0ZE
MjAwNTkzMEQwMDQ4M0VBRSAvKiBNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFQ0MzRkIyMDA1OTMwMTAw
NDgzRUFFIC8qIE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFFRTdCMzgxQUE1MEIwNTAwRjkyQjIx
IC8qIFJlc291cmNlTG9hZEluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxRUU3QjM3MUFBNTBCMDUwMEY5MkIyMSAvKiBSZXNvdXJjZUxvYWRJbmZv
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNTFF
RUFBNzQxQkVGRkFCMTAwMjE4MDA4IC8qIEluZGV4VmFsdWVFbnRyeS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFRUFBNzIxQkVGRkE3OTAwMjE4MDA4
IC8qIEluZGV4VmFsdWVFbnRyeS5oICovOyB9OworCQk1MUVFQUE3NDFCRUZGQUIxMDAyMTgwMDgg
LyogSW5kZXhWYWx1ZUVudHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MUVFQUE3MjFCRUZGQTc5MDAyMTgwMDggLyogSW5kZXhWYWx1ZUVudHJ5Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFGMTc0
RkUxRjM1ODk5MjAwQzc0OTUwIC8qIFdvcmtlclR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjE3NEZDMUYzNTg5ODgwMEM3NDk1MCAvKiBXb3Jr
ZXJUeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNTFGMTc1MDMxRjM1OEIzQjAwQzc0OTUwIC8qIEpTU2VydmljZVdvcmtlclVwZGF0ZVZpYUNh
Y2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUYx
NzUwMTFGMzU4QjM2MDBDNzQ5NTAgLyogSlNTZXJ2aWNlV29ya2VyVXBkYXRlVmlhQ2FjaGUuaCAq
LzsgfTsKIAkJNTFGMTc1MDYxRjM1OEJGNzAwQzc0OTUwIC8qIEpTV29ya2VyVHlwZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGMTc1MDUxRjM1OEJE
RTAwQzc0OTUwIC8qIEpTV29ya2VyVHlwZS5oICovOyB9OwpAQCAtMzAwNiw2ICszMDA2LDcgQEAK
IAkJOTNEOUQ1M0MwREEyN0UxODAwNzcyMTZDIC8qIFJhbmdlQm91bmRhcnlQb2ludC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNEOUQ1M0IwREEyN0Ux
ODAwNzcyMTZDIC8qIFJhbmdlQm91bmRhcnlQb2ludC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzRTI0MUZGMEIyQjRFNDAwMEM3MzJBMSAvKiBI
VE1MRnJhbWVPd25lckVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDkzRTI0MUZFMEIyQjRFNDAwMEM3MzJBMSAvKiBIVE1MRnJhbWVPd25lckVs
ZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk5M0UyNjlBMjI3MEE1RDVEMDAyQzRGRjAgLyogRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRTI2OTlG
MjcwQTVENUMwMDJDNEZGMCAvKiBGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTkzRTI5NjIxMjc4MzZG
NDMwMDA5OUI4QiAvKiBVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRTI5NjFGMjc4MzZGNDMwMDA5OUI4QiAv
KiBVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0UyQTMwNzEyM0U5REMwMDA5RkUxMkEgLyogSFRNTFBh
cnNlcklkaW9tcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTNFMkEzMDUxMjNFOURDMDAwOUZFMTJBIC8qIEhUTUxQYXJzZXJJZGlvbXMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0U1QjI2NTI0NTVF
OTZGMDA1QzUyRDAgLyogQXR0cmlidXRlZFN0cmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNFNUIyNjMyNDU1RTk2RjAwNUM1MkQwIC8qIEF0dHJp
YnV0ZWRTdHJpbmcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk5M0YxOThFNTA4MjQ1RTU5MDAxRTlBQkMgLyogSFRNTERvY3VtZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTIzRDIzQzAyREU0Mzk2
MDE4NjM1Q0EgLyogSFRNTERvY3VtZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTg5ODEsMTEgKzg5ODIsMTAgQEAKIAkJNDM2NzA4ODgxMkQ5
Q0E0QTAwMDQ0MjM0IC8qIFJlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJTVkdIaWRkZW5Db250YWluZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDM2NzA4ODkxMkQ5Q0E0QTAwMDQ0MjM0IC8qIFJlbmRlclNW
R0ltYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclNW
R0ltYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDM2NzA4OEExMkQ5Q0E0
QTAwMDQ0MjM0IC8qIFJlbmRlclNWR0ltYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlbmRlclNWR0ltYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQz
NjcwODhEMzRFOUNBNEEwMDA0NDIzNCAvKiBSZW5kZXJTVkdNb2RlbE9iamVjdC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJTVkdNb2RlbE9iamVjdC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQzNjcwOEZEMTJEOUNBNEEwMDAzMjExNCAv
KiBSZW5kZXJTVkdNb2RlbE9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZW5kZXJTVkdNb2RlbE9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
MzY3MDg4QjEyRDlDQTRBMDAwNDQyMzQgLyogTGVnYWN5UmVuZGVyU1ZHTW9kZWxPYmplY3QuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGVnYWN5UmVuZGVyU1ZHTW9k
ZWxPYmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MzY3MDg4QzEyRDlD
QTRBMDAwNDQyMzQgLyogTGVnYWN5UmVuZGVyU1ZHTW9kZWxPYmplY3QuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTGVnYWN5UmVuZGVyU1ZHTW9kZWxPYmplY3QuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDM2NzA4OEQxMkQ5Q0E0QTAwMDQ0MjM0IC8qIFJlbmRl
clNWR1Jlc291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJl
bmRlclNWR1Jlc291cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDM2NzA4
OEQzNEU5Q0E0QTAwMDQ0MjM0IC8qIFJlbmRlclNWR01vZGVsT2JqZWN0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclNWR01vZGVsT2JqZWN0LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDM2NzA4OEUxMkQ5Q0E0QTAwMDQ0MjM0IC8qIFJl
bmRlclNWR1Jlc291cmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRl
clNWR1Jlc291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzNjcwODhGMTJE
OUNBNEEwMDA0NDIzNCAvKiBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDM2NzA4OTAxMkQ5Q0E0QTAwMDQ0MjM0IC8q
IFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTkwMjgsNiArOTAyOCw3IEBACiAJCTQzNjcwOEI5MTJEOUNBNEIwMDA0NDIzNCAvKiBT
VkdSZXNvdXJjZXNDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdS
ZXNvdXJjZXNDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MzY3MDhCQTEy
RDlDQTRCMDAwNDQyMzQgLyogU1ZHUmVzb3VyY2VzQ3ljbGVTb2x2ZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHUmVzb3VyY2VzQ3ljbGVTb2x2ZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MzY3MDhCQjEyRDlDQTRCMDAwNDQyMzQgLyog
U1ZHUmVzb3VyY2VzQ3ljbGVTb2x2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU1ZHUmVzb3VyY2VzQ3ljbGVTb2x2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNDM2NzA4RkQxMkQ5Q0E0QTAwMDMyMTE0IC8qIFJlbmRlclNWR01vZGVsT2JqZWN0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlclNWR01vZGVsT2JqZWN0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzOTA0NkMzMTJEQTI1RTgwMEFGODBBMiAvKiBS
ZW5kZXJNYXRoTUxCbG9jay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBSZW5kZXJNYXRoTUxCbG9jay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQz
OTA0NkM0MTJEQTI1RTgwMEFGODBBMiAvKiBSZW5kZXJNYXRoTUxCbG9jay5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJNYXRoTUxCbG9jay5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0MzkwNDZDNTEyREEyNUU4MDBBRjgwQTIgLyogUmVuZGVyTWF0aE1M
RmVuY2VkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlck1h
dGhNTEZlbmNlZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjc5OCw2ICsx
Mjc5OSw3IEBACiAJCTkzRTI2OTlEMjcwQTVENUIwMDJDNEZGMCAvKiBGaWxlU3lzdGVtU3luY0Fj
Y2Vzc0hhbmRsZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRmlsZVN5c3RlbVN5bmNBY2Nl
c3NIYW5kbGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0UyNjk5RjI3MEE1
RDVDMDAyQzRGRjAgLyogRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNFMjY5QTAyNzBBNUQ1QzAwMkM0RkYwIC8qIEZpbGVT
eXN0ZW1TeW5jQWNjZXNzSGFuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJOTNFMjk2MUYyNzgzNkY0MzAwMDk5QjhCIC8qIFVuaXF1ZUlEQkRhdGFiYXNl
TWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVbmlxdWVJREJEYXRh
YmFzZU1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNFMkEzMDQxMjNF
OURDMDAwOUZFMTJBIC8qIEhUTUxQYXJzZXJJZGlvbXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSFRNTFBhcnNlcklkaW9tcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkzRTJBMzA1MTIzRTlEQzAwMDlGRTEyQSAvKiBIVE1MUGFyc2VySWRpb21z
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxQYXJzZXJJZGlvbXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNFNUIyNTQyNDUzNkIxRTAwNUM1MkQwIC8q
IFVSTERlY29tcG9zaXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gVVJMRGVjb21wb3NpdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0y
MTk3OSw2ICsyMTk4MSw3IEBACiAJCTUxMEE1OEVFMUJBQjcxRTAwMEMxOTI4MiAvKiBzZXJ2ZXIg
Ki8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTkzRTI5NjFG
Mjc4MzZGNDMwMDA5OUI4QiAvKiBVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuaCAqLywKIAkJCQk1
MUJBNEFDNzFCQkM1QUQ2MDBERjNENkQgLyogSURCQmFja2luZ1N0b3JlLmggKi8sCiAJCQkJNTE2
RDdENkQxQkI1RjA2NTAwQUY3Qzc3IC8qIElEQkNvbm5lY3Rpb25Ub0NsaWVudC5jcHAgKi8sCiAJ
CQkJNTEwQTU4RkUxQkIwN0FBNTAwQzE5MjgyIC8qIElEQkNvbm5lY3Rpb25Ub0NsaWVudC5oICov
LApAQCAtMzY5MDYsNiArMzY5MDksNyBAQAogCQkJCTQxRkNENkI5MjNDRTAxNTUwMEM2MjU2NyAv
KiBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNERDcwODk3
MTgzNTlGNkYwMDJCM0RDNiAvKiBTYW1wbGVNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RTkx
MUNCMEVGODZENDcwMDlEMENBRiAvKiBTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbi5oIGluIEhlYWRl
cnMgKi8sCisJCQkJOTNFMjk2MjEyNzgzNkY0MzAwMDk5QjhCIC8qIFVuaXF1ZUlEQkRhdGFiYXNl
TWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM0REREOTcyNzNEOTRBODAwNjYwRUJCIC8q
IFNjZW5lS2l0TW9kZWxMb2FkZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNERERDk2
MjczRDk0OTkwMDY2MEVCQiAvKiBTY2VuZUtpdE1vZGVsUGxheWVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1REZFOEY1NzBEMTY0NzdDMDA3NkU5MzcgLyogU2NoZWR1bGVkQWN0aW9uLmggaW4gSGVh
ZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggOWM2ZGQ4Y2U0ZDhmLi5k
YTM4ZGExM2M0NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC01MiwxMyArNTIs
MTMgQEAKICNpbmNsdWRlICJOZXR3b3JrU29ja2V0Q2hhbm5lbE1lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiTmV0d29ya1NvY2tldFN0cmVhbS5oIgogI2luY2x1ZGUgIk5ldHdvcmtTb2NrZXRTdHJlYW1N
ZXNzYWdlcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtTdG9yYWdlTWFuYWdlci5oIgogI2luY2x1ZGUg
IlBpbmdMb2FkLmgiCiAjaW5jbHVkZSAiUHJlY29ubmVjdFRhc2suaCIKICNpbmNsdWRlICJSVENE
YXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2tNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgog
I2luY2x1ZGUgIldlYkVycm9ycy5oIgotI2luY2x1ZGUgIldlYklEQlNlcnZlci5oIgogI2luY2x1
ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sTWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCIKQEAgLTk0
MSw4ICs5NDEsMTAgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6d3JpdGVC
bG9ic1RvVGVtcG9yYXJ5RmlsZXNGb3JJbmRleGVkREIoY29uc3QKICAgICAgICAgZm9yIChhdXRv
JiBmaWxlIDogZmlsZVJlZmVyZW5jZXMpCiAgICAgICAgICAgICBmaWxlLT5yZXZva2VGaWxlQWNj
ZXNzKCk7CiAKLSAgICAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpKQot
ICAgICAgICAgICAgc2Vzc2lvbi0+ZW5zdXJlV2ViSURCU2VydmVyKCkucmVnaXN0ZXJUZW1wb3Jh
cnlCbG9iRmlsZVBhdGhzKG1fY29ubmVjdGlvbiwgZmlsZVBhdGhzKTsKKyAgICAgICAgaWYgKGF1
dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpKSB7CisgICAgICAgICAgICBpZiAoYXV0byog
c3RvcmFnZU1hbmFnZXIgPSBzZXNzaW9uLT5zdG9yYWdlTWFuYWdlcigpKQorICAgICAgICAgICAg
ICAgIHN0b3JhZ2VNYW5hZ2VyLT5yZWdpc3RlclRlbXBvcmFyeUJsb2JGaWxlUGF0aHMobV9jb25u
ZWN0aW9uLCBmaWxlUGF0aHMpOworICAgICAgICB9CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KFdURk1vdmUoZmlsZVBhdGhzKSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDI2YmQxMDcxOTk0Yi4uZjdiNThh
ZmZiZDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcApAQCAtNTYsNyArNTYsNiBAQAogI2luY2x1ZGUgIlN0b3JhZ2VBY2Nlc3NTdGF0dXMu
aCIKICNpbmNsdWRlICJTdG9yYWdlTWFuYWdlclNldC5oIgogI2luY2x1ZGUgIldlYkNvb2tpZU1h
bmFnZXIuaCIKLSNpbmNsdWRlICJXZWJJREJTZXJ2ZXIuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJv
eHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sTWVzc2FnZXMuaCIKICNpbmNs
dWRlICJXZWJQdXNoTWVzc2FnZS5oIgpAQCAtMjY0LDggKzI2Myw2IEBAIHZvaWQgTmV0d29ya1By
b2Nlc3M6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpCiAgICAgLy8gTWFrZSBzdXJlIHdlIGZs
dXNoIGFsbCBjb29raWVzIHRvIGRpc2sgYmVmb3JlIGV4aXRpbmcuCiAgICAgZm9yRWFjaE5ldHdv
cmtTZXNzaW9uKFsmXSAoYXV0byYgc2Vzc2lvbikgewogICAgICAgICBwbGF0Zm9ybUZsdXNoQ29v
a2llcyhzZXNzaW9uLnNlc3Npb25JRCgpLCBbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwotICAg
ICAgICAvLyBNYWtlIHN1cmUgcmVmZXJlbmNlIHRvIE5ldHdvcmtQcm9jZXNzIGluIHNwYWNlUmVx
dWVzdGVyIGlzIHJlbW92ZWQuCi0gICAgICAgIHNlc3Npb24uY2xvc2VJREJTZXJ2ZXIoW2NhbGxi
YWNrQWdncmVnYXRvcl0geyB9KTsKICAgICB9KTsKIH0KIApAQCAtMzgyLDcgKzM3OSw2IEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKFBy
b2Nlc3NJZGVudGlmaWVyIGlkZW50CiAgICAgY29ubmVjdGlvbi5zZXRPbkxpbmVTdGF0ZShOZXR3
b3JrU3RhdGVOb3RpZmllcjo6c2luZ2xldG9uKCkub25MaW5lKCkpOwogCiAgICAgaWYgKGF1dG8q
IHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIHNlc3Npb24t
PmVuc3VyZVdlYklEQlNlcnZlcigpLmFkZENvbm5lY3Rpb24oY29ubmVjdGlvbi5jb25uZWN0aW9u
KCksIGlkZW50aWZpZXIpOwogICAgICAgICBpZiAoYXV0byogbWFuYWdlciA9IHNlc3Npb24tPnN0
b3JhZ2VNYW5hZ2VyKCkpCiAgICAgICAgICAgICBtYW5hZ2VyLT5zdGFydFJlY2VpdmluZ01lc3Nh
Z2VGcm9tQ29ubmVjdGlvbihjb25uZWN0aW9uLmNvbm5lY3Rpb24oKSk7CiAgICAgfQpAQCAtNDA2
LDggKzQwMiw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmFkZFdlYnNpdGVEYXRhU3RvcmUoV2Vi
c2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzCiAgICAgYWRkU2Vzc2lvblN0b3Jh
Z2VRdW90YU1hbmFnZXIoc2Vzc2lvbklELCBwYXJhbWV0ZXJzLnBlck9yaWdpblN0b3JhZ2VRdW90
YSwgcGFyYW1ldGVycy5wZXJUaGlyZFBhcnR5T3JpZ2luU3RvcmFnZVF1b3RhLCBwYXJhbWV0ZXJz
LmNhY2hlU3RvcmFnZURpcmVjdG9yeSwgcGFyYW1ldGVycy5jYWNoZVN0b3JhZ2VEaXJlY3RvcnlF
eHRlbnNpb25IYW5kbGUpOwogCiAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lv
bihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIHNlc3Npb24tPmFkZFN0b3JhZ2VNYW5hZ2VyU2Vzc2lv
bihwYXJhbWV0ZXJzLmdlbmVyYWxTdG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmdlbmVyYWxT
dG9yYWdlRGlyZWN0b3J5SGFuZGxlLCBwYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeSwg
cGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwotICAgICAg
ICBzZXNzaW9uLT5hZGRJbmRleGVkRGF0YWJhc2VTZXNzaW9uKHBhcmFtZXRlcnMuaW5kZXhlZERh
dGFiYXNlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeUV4dGVu
c2lvbkhhbmRsZSk7CisgICAgICAgIHNlc3Npb24tPmFkZFN0b3JhZ2VNYW5hZ2VyU2Vzc2lvbihw
YXJhbWV0ZXJzLmdlbmVyYWxTdG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmdlbmVyYWxTdG9y
YWdlRGlyZWN0b3J5SGFuZGxlLCBwYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeSwgcGFy
YW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUsIHBhcmFtZXRlcnMu
aW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVj
dG9yeUV4dGVuc2lvbkhhbmRsZSk7CisgICAgICAgIC8vIHNlc3Npb24tPmFkZEluZGV4ZWREYXRh
YmFzZVNlc3Npb24ocGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnksIHBhcmFtZXRl
cnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKICNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCiAgICAgICAgIHNlc3Npb24tPmFkZFNlcnZpY2VXb3JrZXJTZXNzaW9u
KHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCwg
V1RGTW92ZShwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkpLCBw
YXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5k
bGUpOwogI2VuZGlmCkBAIC0xNDUyLDEzICsxNDQ4LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
ZmV0Y2hXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJz
aXQKICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX3dlYnNpdGVEYXRhLmhvc3ROYW1lc1dp
dGhIU1RTQ2FjaGUgPSBob3N0TmFtZXNXaXRoSFNUU0NhY2hlKHNlc3Npb25JRCk7CiAjZW5kaWYK
IAotICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5k
ZXhlZERCRGF0YWJhc2VzKSAmJiBzZXNzaW9uICYmIHNlc3Npb24tPmhhc0lEQkRhdGFiYXNlUGF0
aCgpKSB7Ci0gICAgICAgIHNlc3Npb24tPmVuc3VyZVdlYklEQlNlcnZlcigpLmdldE9yaWdpbnMo
W2NhbGxiYWNrQWdncmVnYXRvcl0oYXV0byYmIG9yaWdpbnMpIHsKLSAgICAgICAgICAgIHdoaWxl
ICghb3JpZ2lucy5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9y
LT5tX3dlYnNpdGVEYXRhLmVudHJpZXMuYXBwZW5kKHsgb3JpZ2lucy50YWtlQW55KCksIFdlYnNp
dGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzLCAwIH0pOwotICAgICAgICB9KTsKLSAgICB9
Ci0KICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMu
Y29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucykgJiYg
c2Vzc2lvbiAmJiBzZXNzaW9uLT5oYXNTZXJ2aWNlV29ya2VyRGF0YWJhc2VQYXRoKCkpIHsKICAg
ICAgICAgc2Vzc2lvbi0+ZW5zdXJlU1dTZXJ2ZXIoKS5nZXRPcmlnaW5zV2l0aFJlZ2lzdHJhdGlv
bnMoW2NhbGxiYWNrQWdncmVnYXRvcl0oY29uc3QgSGFzaFNldDxTZWN1cml0eU9yaWdpbkRhdGE+
JiBzZWN1cml0eU9yaWdpbnMpIG11dGFibGUgewpAQCAtMTUyNSw5ICsxNTE0LDYgQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBPcHRpb25TZXQ8V2Vic2kKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJz
aXRlRGF0YVR5cGU6OkRPTUNhY2hlKSAmJiBzZXNzaW9uKQogICAgICAgICBDYWNoZVN0b3JhZ2U6
OkVuZ2luZTo6Y2xlYXJBbGxDYWNoZXMoKnNlc3Npb24sIFtjbGVhclRhc2tzSGFuZGxlcl0geyB9
KTsKIAotICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6
SW5kZXhlZERCRGF0YWJhc2VzKSAmJiAhc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkgJiYgc2Vzc2lv
bikKLSAgICAgICAgc2Vzc2lvbi0+ZW5zdXJlV2ViSURCU2VydmVyKCkuY2xvc2VBbmREZWxldGVE
YXRhYmFzZXNNb2RpZmllZFNpbmNlKG1vZGlmaWVkU2luY2UsIFtjbGVhclRhc2tzSGFuZGxlcl0g
eyB9KTsKLQogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBib29sIGNsZWFyU2Vydmlj
ZVdvcmtlcnMgPSB3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6RE9N
Q2FjaGUpIHx8IHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9ucyk7CiAgICAgaWYgKGNsZWFyU2VydmljZVdvcmtlcnMgJiYg
IXNlc3Npb25JRC5pc0VwaGVtZXJhbCgpICYmIHNlc3Npb24pCkBAIC0xNjIwLDkgKzE2MDYsNiBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpbwogICAgICAgICAgICAgQ2FjaGVTdG9yYWdlOjpFbmdp
bmU6OmNsZWFyQ2FjaGVzRm9yT3JpZ2luKCpzZXNzaW9uLCBTZWN1cml0eU9yaWdpbkRhdGEgeyBv
cmlnaW5EYXRhIH0sIFtjbGVhclRhc2tzSGFuZGxlcl0geyB9KTsKICAgICB9CiAKLSAgICBpZiAo
d2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFi
YXNlcykgJiYgIXNlc3Npb25JRC5pc0VwaGVtZXJhbCgpICYmIHNlc3Npb24pCi0gICAgICAgIHNl
c3Npb24tPmVuc3VyZVdlYklEQlNlcnZlcigpLmNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzRm9yT3Jp
Z2lucyhvcmlnaW5EYXRhcywgW2NsZWFyVGFza3NIYW5kbGVyXSB7IH0pOwotCiAjaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQogICAgIGJvb2wgY2xlYXJTZXJ2aWNlV29ya2VycyA9IHdlYnNpdGVE
YXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSkgfHwgd2Vic2l0ZURh
dGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25zKTsKICAgICBpZiAoY2xlYXJTZXJ2aWNlV29ya2VycyAmJiAhc2Vzc2lvbklELmlzRXBoZW1l
cmFsKCkgJiYgc2Vzc2lvbikgewpAQCAtMTgxMSwxNyArMTc5NCw2IEBAIHZvaWQgTmV0d29ya1By
b2Nlc3M6OmRlbGV0ZUFuZFJlc3RyaWN0V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMo
UEFMOjpTZXNzCiAgICAgICAgICAgICB9CiAgICAgICAgIH0pOwogICAgIH0KLQotICAgIGlmICh3
ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJh
c2VzKSAmJiBzZXNzaW9uICYmIHNlc3Npb24tPmhhc0lEQkRhdGFiYXNlUGF0aCgpKSB7Ci0gICAg
ICAgIHNlc3Npb24tPmVuc3VyZVdlYklEQlNlcnZlcigpLmdldE9yaWdpbnMoW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBzZXNzaW9uSUQsIGNhbGxiYWNrQWdncmVnYXRvciwg
ZG9tYWluc1RvRGVsZXRlQWxsTm9uQ29va2llV2Vic2l0ZURhdGFGb3JdKGF1dG8mJiBvcmlnaW5z
KSB7Ci0gICAgICAgICAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklE
KTsKLSAgICAgICAgICAgIGlmICghc2Vzc2lvbiB8fCAhc2Vzc2lvbi0+d2ViSURCU2VydmVyKCkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICBhdXRvIG9yaWdpbnNUb0Rl
bGV0ZSA9IGZpbHRlckZvclJlZ2lzdHJhYmxlRG9tYWlucyhvcmlnaW5zLCBkb21haW5zVG9EZWxl
dGVBbGxOb25Db29raWVXZWJzaXRlRGF0YUZvciwgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX2RvbWFp
bnMpOwotICAgICAgICAgICAgc2Vzc2lvbi0+d2ViSURCU2VydmVyKCktPmNsb3NlQW5kRGVsZXRl
RGF0YWJhc2VzRm9yT3JpZ2lucyhvcmlnaW5zVG9EZWxldGUsIFtjYWxsYmFja0FnZ3JlZ2F0b3Jd
IHsgfSk7Ci0gICAgICAgIH0pOwotICAgIH0KICAgICAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCiAgICAgYm9vbCBjbGVhclNlcnZpY2VXb3JrZXJzID0gd2Vic2l0ZURhdGFUeXBlcy5jb250
YWlucyhXZWJzaXRlRGF0YVR5cGU6OkRPTUNhY2hlKSB8fCB3ZWJzaXRlRGF0YVR5cGVzLmNvbnRh
aW5zKFdlYnNpdGVEYXRhVHlwZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMpOwpAQCAtMTk1
NywxNCArMTkyOSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlZ2lzdHJhYmxlRG9tYWluc1dp
dGhXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsCiAgICAgICAgICAgICBjYWxs
YmFja0FnZ3JlZ2F0b3ItPm1fd2Vic2l0ZURhdGEuZW50cmllcy5hcHBlbmRWZWN0b3IoZW50cmll
cyk7CiAgICAgICAgIH0pOwogICAgIH0KLSAgICAKLSAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5j
b250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykgJiYgc2Vzc2lvbiAm
JiBzZXNzaW9uLT5oYXNJREJEYXRhYmFzZVBhdGgoKSkgewotICAgICAgICBzZXNzaW9uLT5lbnN1
cmVXZWJJREJTZXJ2ZXIoKS5nZXRPcmlnaW5zKFtjYWxsYmFja0FnZ3JlZ2F0b3JdKGF1dG8mJiBv
cmlnaW5zKSB7Ci0gICAgICAgICAgICB3aGlsZSAoIW9yaWdpbnMuaXNFbXB0eSgpKQotICAgICAg
ICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVu
ZCh7IG9yaWdpbnMudGFrZUFueSgpLCBXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNl
cywgMCB9KTsKLSAgICAgICAgfSk7Ci0gICAgfQotICAgIAorCiAjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlw
ZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMpICYmIHNlc3Npb24gJiYgc2Vzc2lvbi0+aGFz
U2VydmljZVdvcmtlckRhdGFiYXNlUGF0aCgpKSB7CiAgICAgICAgIHNlc3Npb24tPmVuc3VyZVNX
U2VydmVyKCkuZ2V0T3JpZ2luc1dpdGhSZWdpc3RyYXRpb25zKFtjYWxsYmFja0FnZ3JlZ2F0b3Jd
KGNvbnN0IEhhc2hTZXQ8U2VjdXJpdHlPcmlnaW5EYXRhPiYgc2VjdXJpdHlPcmlnaW5zKSBtdXRh
YmxlIHsKQEAgLTIxMjksNDMgKzIwOTQsMTAgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJvY2Vz
c1dpbGxTdXNwZW5kSW1taW5lbnRseUZvclRlc3RpbmdTeW5jKENvbXBsZXRpb25IYW5kbGUKICAg
ICBwcmVwYXJlVG9TdXNwZW5kKHRydWUsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0K
IAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6c3VzcGVuZElEQlNlcnZlcnMoYm9vbCBpc1N1c3BlbnNp
b25JbW1pbmVudCkKLXsKLSAgICBtX3Nob3VsZFN1c3BlbmRJREJTZXJ2ZXJzID0gdHJ1ZTsKLSAg
ICArK21fc3VzcGVuc2lvbklkZW50aWZpZXI7Ci0KLSAgICBib29sIGFsbFN1c3BlbmRlZCA9IHRy
dWU7Ci0gICAgYXV0byBjb25kaXRpb24gPSBpc1N1c3BlbnNpb25JbW1pbmVudCA/IFdlYklEQlNl
cnZlcjo6U3VzcGVuc2lvbkNvbmRpdGlvbjo6QWx3YXlzIDogV2ViSURCU2VydmVyOjpTdXNwZW5z
aW9uQ29uZGl0aW9uOjpJZklkbGU7Ci0gICAgZm9yRWFjaE5ldHdvcmtTZXNzaW9uKFsmXShhdXRv
JiBzZXNzaW9uKSB7Ci0gICAgICAgIGlmIChhdXRvKiBzZXJ2ZXIgPSBzZXNzaW9uLndlYklEQlNl
cnZlcigpKQotICAgICAgICAgICAgYWxsU3VzcGVuZGVkICY9IHNlcnZlci0+c3VzcGVuZChjb25k
aXRpb24pOwotICAgIH0pOwotCi0gICAgaWYgKGFsbFN1c3BlbmRlZCkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoQWZ0ZXIoNV9zLCBbdGhpcywgd2Vha1Ro
aXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgc3VzcGVuc2lvbklkZW50aWZpZXIgPSBtX3N1c3BlbnNp
b25JZGVudGlmaWVyXSB7Ci0gICAgICAgIGlmICghd2Vha1RoaXMpCi0gICAgICAgICAgICByZXR1
cm47Ci0KLSAgICAgICAgaWYgKCFtX3Nob3VsZFN1c3BlbmRJREJTZXJ2ZXJzIHx8IHN1c3BlbnNp
b25JZGVudGlmaWVyICE9IG1fc3VzcGVuc2lvbklkZW50aWZpZXIpCi0gICAgICAgICAgICByZXR1
cm47Ci0KLSAgICAgICAgZm9yRWFjaE5ldHdvcmtTZXNzaW9uKFtdKGF1dG8mIHNlc3Npb24pIHsK
LSAgICAgICAgICAgIGlmIChhdXRvKiBzZXJ2ZXIgPSBzZXNzaW9uLndlYklEQlNlcnZlcigpKQot
ICAgICAgICAgICAgICAgIHNlcnZlci0+c3VzcGVuZChXZWJJREJTZXJ2ZXI6OlN1c3BlbnNpb25D
b25kaXRpb246OkFsd2F5cyk7Ci0gICAgICAgIH0pOwotICAgIH0pOwotfQotCiB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5kKGJvb2wgaXNTdXNwZW5zaW9uSW1taW5lbnQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBSRUxF
QVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gTmV0d29ya1Byb2Nlc3M6OnByZXBhcmVU
b1N1c3BlbmQoKSwgaXNTdXNwZW5zaW9uSW1taW5lbnQ9JWQiLCB0aGlzLCBpc1N1c3BlbnNpb25J
bW1pbmVudCk7CiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIHN1c3BlbmRJREJTZXJ2
ZXJzKGlzU3VzcGVuc2lvbkltbWluZW50KTsKLSNlbmRpZgotCiAgICAgbG93TWVtb3J5SGFuZGxl
cihDcml0aWNhbDo6WWVzKTsKIAogICAgIFJlZlB0cjxDYWxsYmFja0FnZ3JlZ2F0b3I+IGNhbGxi
YWNrQWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFt0aGlzLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewpAQCAt
MjIyNSwxNiArMjE1NywxMCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZXN1bWUoKQogICAgICAg
ICAgICAgc3dTZXJ2ZXItPmVuZFN1c3BlbnNpb24oKTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCi0gICAgICAgIGlmIChhdXRvKiBzZXJ2ZXIgPSBzZXNzaW9uLndlYklEQlNlcnZl
cigpKQotICAgICAgICAgICAgc2VydmVyLT5yZXN1bWUoKTsKLSNlbmRpZgogICAgICAgICBpZiAo
YXV0byogbWFuYWdlciA9IHNlc3Npb24uc3RvcmFnZU1hbmFnZXIoKSkKICAgICAgICAgICAgIG1h
bmFnZXItPnJlc3VtZSgpOwotICAgIH0pOwotCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAg
ICBtX3Nob3VsZFN1c3BlbmRJREJTZXJ2ZXJzID0gZmFsc2U7CiAjZW5kaWYKKyAgICB9KTsKIH0K
IAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJiBob3N0bmFt
ZSkKQEAgLTIyOTgsNiArMjIyNCwxNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVhclN0b3Jh
Z2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2bwogICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpkaWRJbmNy
ZWFzZVF1b3RhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgQ2xpZW50T3JpZ2luJiBv
cmlnaW4sIFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllciBpZGVudGlmaWVyLCBzdGQ6Om9w
dGlvbmFsPHVpbnQ2NF90PiBuZXdRdW90YSkKK3sKKyAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29y
a1Nlc3Npb24oc2Vzc2lvbklEKTsKKyAgICBpZiAoIXNlc3Npb24pCisgICAgICAgIHJldHVybjsK
KworICAgIGlmIChhdXRvKiBtYW5hZ2VyID0gc2Vzc2lvbi0+c3RvcmFnZU1hbmFnZXIoKSkKKyAg
ICAgICAgbWFuYWdlci0+ZGlkSW5jcmVhc2VRdW90YShvcmlnaW4sIGlkZW50aWZpZXIsIG5ld1F1
b3RhKTsKK30KKwogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVuYW1lT3JpZ2luSW5XZWJzaXRlRGF0
YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgb2xkTmFtZSwgY29uc3QgVVJM
JiBuZXdOYW1lLCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvIGFnZ3Jl
Z2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CkBAIC0yMzEwLDkgKzIyNDYsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZW5hbWVP
cmlnaW5JbldlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVQogICAg
IGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOwogICAgIGlmIChhdXRv
KiBtYW5hZ2VyID0gc2Vzc2lvbiA/IHNlc3Npb24tPnN0b3JhZ2VNYW5hZ2VyKCkgOiBudWxscHRy
KQogICAgICAgICBtYW5hZ2VyLT5tb3ZlRGF0YShvbGRPcmlnaW4sIG5ld09yaWdpbiwgW2FnZ3Jl
Z2F0b3JdIHsgfSk7Ci0KLSAgICBpZiAoZGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlw
ZTo6SW5kZXhlZERCRGF0YWJhc2VzKSAmJiBzZXNzaW9uICYmIHNlc3Npb24tPmhhc0lEQkRhdGFi
YXNlUGF0aCgpKQotICAgICAgICBzZXNzaW9uLT5lbnN1cmVXZWJJREJTZXJ2ZXIoKS5yZW5hbWVP
cmlnaW4ob2xkT3JpZ2luLCBuZXdPcmlnaW4sIFthZ2dyZWdhdG9yXSB7IH0pOwogfQogCiAjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpAQCAtMjU4Niw4ICsyNTE5LDYgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6cmVtb3ZlS2VwdEFsaXZlTG9hZChOZXR3b3JrUmVzb3VyY2VMb2FkZXImIGxvYWRl
cikKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NDbG9zZWQoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7CiAg
ICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAg
ICAgIGlmIChhdXRvKiBzZXJ2ZXIgPSBzZXNzaW9uLT53ZWJJREJTZXJ2ZXIoKSkKLSAgICAgICAg
ICAgIHNlcnZlci0+cmVtb3ZlQ29ubmVjdGlvbihjb25uZWN0aW9uKTsKICAgICAgICAgaWYgKGF1
dG8qIG1hbmFnZXIgPSBzZXNzaW9uLT5zdG9yYWdlTWFuYWdlcigpKQogICAgICAgICAgICAgbWFu
YWdlci0+c3RvcFJlY2VpdmluZ01lc3NhZ2VGcm9tQ29ubmVjdGlvbihjb25uZWN0aW9uKTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5k
ZXggNzg3NzkyN2ExN2M1Li44Zjc1MjUxOTRiMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJM
b2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrQ29udGVudFJ1
bGVMaXN0TWFuYWdlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVy
LmgiCisjaW5jbHVkZSAiUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLmgiCiAjaW5jbHVk
ZSAiUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJTYW5kYm94
RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5SWRlbnRpZmllci5oIgpAQCAtMjk0
LDYgKzI5NSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVzZXRRdW90YShQQUw6OlNlc3Npb25J
RCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGNsZWFyU3RvcmFnZShQ
QUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGRp
ZEluY3JlYXNlUXVvdGEoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdp
biYsIFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gbmV3UXVvdGEpOwogICAgIHZvaWQgcmVuYW1lT3JpZ2luSW5XZWJzaXRlRGF0YShQQUw6OlNl
c3Npb25JRCwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlw
ZT4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQpAQCAtNDczLDggKzQ3NSw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWdpc3RlclVSTFNj
aGVtZUFzTm9BY2Nlc3MoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAgdm9pZCByZWdpc3RlclVS
TFNjaGVtZUFzQ09SU0VuYWJsZWQoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAKLSAgICB2b2lkIHN1
c3BlbmRJREJTZXJ2ZXJzKGJvb2wgaXNTdXNwZW5zaW9uSW1taW5lbnQpOwotCiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIHNldElzSG9sZGluZ0xvY2tlZEZpbGVzKGJvb2wpOwog
I2VuZGlmCkBAIC01NDksOSArNTQ5LDYgQEAgcHJpdmF0ZToKICAgICBXZWJTUUxpdGVEYXRhYmFz
ZVRyYWNrZXIgbV93ZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXI7CiAgICAgUmVmUHRyPFByb2Nlc3NB
c3NlcnRpb24+IG1faG9sZGluZ0xvY2tlZEZpbGVBc3NlcnRpb247CiAjZW5kaWYKLQotICAgIGJv
b2wgbV9zaG91bGRTdXNwZW5kSURCU2VydmVycyB7IGZhbHNlIH07Ci0gICAgdWludDY0X3QgbV9z
dXNwZW5zaW9uSWRlbnRpZmllciB7IDAgfTsKICAgICAKICNpZiBFTkFCTEUoV0VCX1JUQykKICAg
ICBSZWZQdHI8UlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyUHJveHk+IG1fcnRjRGF0YUNoYW5u
ZWxQcm94eTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDYzN2UxNTlmMTg2My4uNjMxZTJiNjA3M2MwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MubWVzc2FnZXMuaW4KQEAgLTE3OSw2ICsxNzksNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJv
Y2VzcyBMZWdhY3lSZWNlaXZlciB7CiAKICAgICBSZXNldFF1b3RhKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCkgLT4gKCkgQXN5bmMKICAgICBDbGVhclN0b3JhZ2UoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklEKSAtPiAoKSBBc3luYworICAgIERpZEluY3JlYXNlUXVvdGEoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBzdHJ1Y3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbiwgV2ViS2l0OjpR
dW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1
aW50NjRfdD4gbmV3UXVvdGEpCiAgICAgCiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQog
ICAgIEhhc0FwcEJvdW5kU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+IChib29s
IGhhc0FwcEJvdW5kU2Vzc2lvbikgQXN5bmMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKaW5kZXggODc5MWU3MjkyN2VkLi4xZTczYTM0ZjE4YjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3Bw
CkBAIC0yMDEsOCArMjAxLDYgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbjo6aW52YWxpZGF0ZUFuZENh
bmNlbCgpCiAgICAgaWYgKG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcykKICAgICAgICAgbV9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzLT5pbnZhbGlkYXRlQW5kQ2FuY2VsKCk7CiAjZW5kaWYKLSAgICBp
ZiAoYXV0byBzZXJ2ZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fd2ViSURCU2VydmVyLCBudWxscHRyKSkK
LSAgICAgICAgc2VydmVyLT5jbG9zZSgpOwogICAgIGlmIChhdXRvIG1hbmFnZXIgPSBzdGQ6OmV4
Y2hhbmdlKG1fc3RvcmFnZU1hbmFnZXIsIG51bGxwdHIpKQogICAgICAgICBtYW5hZ2VyLT5jbG9z
ZSgpOwogICAgIG1fY2FjaGVFbmdpbmUgPSBudWxscHRyOwpAQCAtNjQ4LDU1ICs2NDYsMTggQEAg
Ym9vbCBOZXR3b3JrU2Vzc2lvbjo6aGFzU2VydmljZVdvcmtlckRhdGFiYXNlUGF0aCgpIGNvbnN0
CiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKLVdlYklEQlNlcnZlciYgTmV0
d29ya1Nlc3Npb246OmVuc3VyZVdlYklEQlNlcnZlcigpCi17Ci0gICAgaWYgKCFtX3dlYklEQlNl
cnZlcikgewotICAgICAgICBTdHJpbmcgcGF0aDsKLSAgICAgICAgaWYgKCFzZXNzaW9uSUQoKS5p
c0VwaGVtZXJhbCgpKSB7Ci0gICAgICAgICAgICBBU1NFUlQoIW1faWRiRGF0YWJhc2VQYXRoLmlz
TnVsbCgpKTsKLSAgICAgICAgICAgIHBhdGggPSBtX2lkYkRhdGFiYXNlUGF0aDsKLSAgICAgICAg
fQotCi0gICAgICAgIGF1dG8gc3BhY2VSZXF1ZXN0ZXIgPSBbbmV0d29ya1Byb2Nlc3MgPSBSZWYg
eyBuZXR3b3JrUHJvY2VzcygpIH0sIHNlc3Npb25JRCA9IHNlc3Npb25JRCgpXShjb25zdCBhdXRv
JiBvcmlnaW4sIHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkKSB7Ci0gICAgICAgICAgICByZXR1cm4g
bmV0d29ya1Byb2Nlc3MtPnN0b3JhZ2VRdW90YU1hbmFnZXIoc2Vzc2lvbklELCBvcmlnaW4pLT5y
ZXF1ZXN0U3BhY2VPbkJhY2tncm91bmRUaHJlYWQoc3BhY2VSZXF1ZXN0ZWQpOwotICAgICAgICB9
OwotCi0gICAgICAgIG1fd2ViSURCU2VydmVyID0gV2ViSURCU2VydmVyOjpjcmVhdGUoc2Vzc2lv
bklEKCksIHBhdGgsIFdURk1vdmUoc3BhY2VSZXF1ZXN0ZXIpKTsKLSAgICAgICAgaWYgKG5ldHdv
cmtQcm9jZXNzKCkuc2hvdWxkU3VzcGVuZElEQlNlcnZlcnMoKSkKLSAgICAgICAgICAgIG1fd2Vi
SURCU2VydmVyLT5zdXNwZW5kKFdlYklEQlNlcnZlcjo6U3VzcGVuc2lvbkNvbmRpdGlvbjo6QWx3
YXlzKTsKLSAgICB9Ci0gICAgcmV0dXJuICptX3dlYklEQlNlcnZlcjsKLX0KLQotdm9pZCBOZXR3
b3JrU2Vzc2lvbjo6Y2xvc2VJREJTZXJ2ZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQotewotICAgIGlmICghbV93ZWJJREJTZXJ2ZXIpCi0gICAgICAgIHJl
dHVybiBjb21wbGV0aW9uSGFuZGxlcigpOwotCi0gICAgc3RkOjpleGNoYW5nZShtX3dlYklEQlNl
cnZlciwgbnVsbHB0ciktPmNsb3NlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLX0KLQot
dm9pZCBOZXR3b3JrU2Vzc2lvbjo6YWRkSW5kZXhlZERhdGFiYXNlU2Vzc2lvbihjb25zdCBTdHJp
bmcmIGluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBo
YW5kbGUpCi17Ci0gICAgLy8gKioqKioqKioqCi0gICAgLy8gSU1QT1JUQU5UOiBEbyBub3QgY2hh
bmdlIHRoZSBkaXJlY3Rvcnkgc3RydWN0dXJlIGZvciBpbmRleGVkIGRhdGFiYXNlcyBvbiBkaXNr
IHdpdGhvdXQgZmlyc3QgY29uc3VsdGluZyBhIHJldmlld2VyIGZyb20gQXBwbGUgKDxyZGFyOi8v
cHJvYmxlbS8xNzQ1NDcxMj4pCi0gICAgLy8gKioqKioqKioqCi0gICAgYXV0byBpc05ldyA9IG1f
aWRiRGF0YWJhc2VQYXRoLmlzTnVsbCgpOwotICAgIG1faWRiRGF0YWJhc2VQYXRoID0gaW5kZXhl
ZERhdGFiYXNlRGlyZWN0b3J5OwotICAgIGlmIChpc05ldykgewotICAgICAgICBTYW5kYm94RXh0
ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkoaGFuZGxlKTsKLSAgICAgICAgbmV0d29ya1Byb2Nl
c3MoKS5zZXRTZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlcklEQlJvb3RQYXRoKHNlc3Npb25JRCgp
LCBpbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkpOwotICAgIH0KLX0KLQotdm9pZCBOZXR3b3JrU2Vz
c2lvbjo6YWRkU3RvcmFnZU1hbmFnZXJTZXNzaW9uKGNvbnN0IFN0cmluZyYgZ2VuZXJhbFN0b3Jh
Z2VQYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIGdlbmVyYWxTdG9yYWdlUGF0aEhhbmRs
ZSwgY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VQYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUmIGxvY2FsU3RvcmFnZVBhdGhIYW5kbGUpCit2b2lkIE5ldHdvcmtTZXNzaW9uOjphZGRTdG9y
YWdlTWFuYWdlclNlc3Npb24oY29uc3QgU3RyaW5nJiBnZW5lcmFsU3RvcmFnZVBhdGgsIFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSYgZ2VuZXJhbFN0b3JhZ2VQYXRoSGFuZGxlLCBjb25zdCBTdHJp
bmcmIGxvY2FsU3RvcmFnZVBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgbG9jYWxTdG9y
YWdlUGF0aEhhbmRsZSwgY29uc3QgU3RyaW5nJiBpZGJTdG9yYWdlUGF0aCwgU2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlJiBpZGJTdG9yYWdlUGF0aEhhbmRsZSkKIHsKICAgICBpZiAobV9zdG9yYWdl
TWFuYWdlcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3Vt
ZVBlcm1hbmVudGx5KGdlbmVyYWxTdG9yYWdlUGF0aEhhbmRsZSk7CiAgICAgU2FuZGJveEV4dGVu
c2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KGxvY2FsU3RvcmFnZVBhdGhIYW5kbGUpOwotICAgIG1f
c3RvcmFnZU1hbmFnZXIgPSBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZShzZXNzaW9uSUQo
KSwgZ2VuZXJhbFN0b3JhZ2VQYXRoLCBsb2NhbFN0b3JhZ2VQYXRoKTsKKyAgICBTYW5kYm94RXh0
ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkoaWRiU3RvcmFnZVBhdGhIYW5kbGUpOworICAgIElQ
Qzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgY29ubmVjdGlvbklEOworICAgIGlmIChhdXRvKiBjb25u
ZWN0aW9uID0gbmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpKQorICAg
ICAgICBjb25uZWN0aW9uSUQgPSBjb25uZWN0aW9uLT51bmlxdWVJRCgpOworICAgIG1fc3RvcmFn
ZU1hbmFnZXIgPSBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZShzZXNzaW9uSUQoKSwgY29u
bmVjdGlvbklELCBnZW5lcmFsU3RvcmFnZVBhdGgsIGxvY2FsU3RvcmFnZVBhdGgsIGlkYlN0b3Jh
Z2VQYXRoKTsKIH0KIAogdm9pZCBOZXR3b3JrU2Vzc2lvbjo6ZW5zdXJlQ2FjaGVFbmdpbmUoRnVu
Y3Rpb248dm9pZChDYWNoZVN0b3JhZ2U6OkVuZ2luZSYpPiYmIGNhbGxiYWNrKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCmluZGV4IGMyZGUxZGM1MzU2
Mi4uMTQyMzhmYWQzZTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrU2Vzc2lvbi5oCkBAIC0yMDksMTQgKzIwOSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZFNl
cnZpY2VXb3JrZXJTZXNzaW9uKGJvb2wgcHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkLCBT
dHJpbmcmJiBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5LCBjb25zdCBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGUmKTsKICNlbmRpZgogCi0gICAgV2ViSURCU2VydmVyKiB3ZWJJREJT
ZXJ2ZXIoKSB7IHJldHVybiBtX3dlYklEQlNlcnZlci5nZXQoKTsgfQotICAgIFdlYklEQlNlcnZl
ciYgZW5zdXJlV2ViSURCU2VydmVyKCk7Ci0gICAgdm9pZCBjbG9zZUlEQlNlcnZlcihDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgYWRkSW5kZXhlZERhdGFiYXNlU2Vzc2lv
bihjb25zdCBTdHJpbmcmIGluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSwgU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlJik7Ci0gICAgYm9vbCBoYXNJREJEYXRhYmFzZVBhdGgoKSBjb25zdCB7IHJldHVy
biAhbV9pZGJEYXRhYmFzZVBhdGguaXNFbXB0eSgpOyB9Ci0KICAgICBOZXR3b3JrU3RvcmFnZU1h
bmFnZXIqIHN0b3JhZ2VNYW5hZ2VyKCkgeyByZXR1cm4gbV9zdG9yYWdlTWFuYWdlci5nZXQoKTsg
fQotICAgIHZvaWQgYWRkU3RvcmFnZU1hbmFnZXJTZXNzaW9uKGNvbnN0IFN0cmluZyYgZ2VuZXJh
bFN0b3JhZ2VQYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIGdlbmVyYWxTdG9yYWdlUGF0
aEhhbmRsZSwgY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VQYXRoLCBTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGUmIGxvY2FsU3RvcmFnZVBhdGhIYW5kbGUpOworICAgIHZvaWQgYWRkU3RvcmFnZU1h
bmFnZXJTZXNzaW9uKGNvbnN0IFN0cmluZyYgZ2VuZXJhbFN0b3JhZ2VQYXRoLCBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGUmIGdlbmVyYWxTdG9yYWdlUGF0aEhhbmRsZSwgY29uc3QgU3RyaW5nJiBs
b2NhbFN0b3JhZ2VQYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIGxvY2FsU3RvcmFnZVBh
dGhIYW5kbGUsIGNvbnN0IFN0cmluZyYgaWRiU3RvcmFnZVBhdGgsIFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZSYgaWRiU3RvcmFnZVBhdGhIYW5kbGUpOwogCiAgICAgQ2FjaGVTdG9yYWdlOjpFbmdp
bmUqIGNhY2hlRW5naW5lKCkgeyByZXR1cm4gbV9jYWNoZUVuZ2luZS5nZXQoKTsgfQogICAgIHZv
aWQgZW5zdXJlQ2FjaGVFbmdpbmUoRnVuY3Rpb248dm9pZChDYWNoZVN0b3JhZ2U6OkVuZ2luZSYp
PiYmKTsKQEAgLTMxNCw5ICszMDgsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RkOjp1bmlxdWVfcHRy
PFdlYkNvcmU6OlNXU2VydmVyPiBtX3N3U2VydmVyOwogI2VuZGlmCiAKLSAgICBTdHJpbmcgbV9p
ZGJEYXRhYmFzZVBhdGg7Ci0gICAgUmVmUHRyPFdlYklEQlNlcnZlcj4gbV93ZWJJREJTZXJ2ZXI7
Ci0KICAgICBSZWZQdHI8TmV0d29ya1N0b3JhZ2VNYW5hZ2VyPiBtX3N0b3JhZ2VNYW5hZ2VyOwog
ICAgIFJlZlB0cjxDYWNoZVN0b3JhZ2U6OkVuZ2luZT4gbV9jYWNoZUVuZ2luZTsKICAgICBWZWN0
b3I8RnVuY3Rpb248dm9pZChDYWNoZVN0b3JhZ2U6OkVuZ2luZSYpPj4gbV9jYWNoZVN0b3JhZ2VQ
YXJhbWV0ZXJzQ2FsbGJhY2tzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9pb3MvTmV0d29ya1Byb2Nlc3NJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lPUy5tbQppbmRleCBhODdhZDgwNWI1ZGYuLjRmMWIzOTk5
NGZkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29y
a1Byb2Nlc3NJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9pb3MvTmV0
d29ya1Byb2Nlc3NJT1MubW0KQEAgLTExNCwxMyArMTE0LDEzIEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OnNldElzSG9sZGluZ0xvY2tlZEZpbGVzKGJvb2wgaXNIb2xkaW5nTG9ja2VkRmlsZXMpCiAg
ICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYg
KCFtX3Nob3VsZFN1c3BlbmRJREJTZXJ2ZXJzKQorICAgICAgICAvKiBpZiAoIW1fc2hvdWxkU3Vz
cGVuZElEQlNlcnZlcnMpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgZm9yRWFjaE5l
dHdvcmtTZXNzaW9uKFtdKGF1dG8mIHNlc3Npb24pIHsKICAgICAgICAgICAgIGlmIChhdXRvKiBz
ZXJ2ZXIgPSBzZXNzaW9uLndlYklEQlNlcnZlcigpKQogICAgICAgICAgICAgICAgIHNlcnZlci0+
c3VzcGVuZCgpOwotICAgICAgICB9KTsKKyAgICAgICAgfSk7ICovCiAgICAgfSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdl
Q29ubmVjdGlvblRvQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3Rv
cmFnZS9JREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAuLjZjZjk5YTc5YmUzMgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlQ29ubmVjdGlvblRv
Q2xpZW50LmNwcApAQCAtMCwwICsxLDE5MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50LmgiCisKKyNpbmNs
dWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJXZWJJREJDb25uZWN0aW9u
VG9TZXJ2ZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYklEQlJlc3VsdC5oIgorI2luY2x1ZGUg
PFdlYkNvcmUvSURCUmVxdWVzdERhdGEuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0lEQlJlc3VsdERh
dGEuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1VuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5oPgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6SURC
U3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudChJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGNvbm5l
Y3Rpb24sIFdlYkNvcmU6OklEQkNvbm5lY3Rpb25JZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAg
OiBtX2Nvbm5lY3Rpb24oY29ubmVjdGlvbikKKyAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVy
KQorICAgICwgbV9jb25uZWN0aW9uVG9DbGllbnQoV2ViQ29yZTo6SURCU2VydmVyOjpJREJDb25u
ZWN0aW9uVG9DbGllbnQ6OmNyZWF0ZSgqdGhpcykpCit7Cit9CisKK0lEQlN0b3JhZ2VDb25uZWN0
aW9uVG9DbGllbnQ6On5JREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50KCkKK3sKKyAgICBtX2Nv
bm5lY3Rpb25Ub0NsaWVudC0+Y2xlYXJEZWxlZ2F0ZSgpOworfQorCitXZWJDb3JlOjpJREJTZXJ2
ZXI6OklEQkNvbm5lY3Rpb25Ub0NsaWVudCYgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6
Y29ubmVjdGlvblRvQ2xpZW50KCkKK3sKKyAgICByZXR1cm4gbV9jb25uZWN0aW9uVG9DbGllbnQ7
Cit9CisKK3RlbXBsYXRlPGNsYXNzIE1lc3NhZ2VUeXBlPiB2b2lkIElEQlN0b3JhZ2VDb25uZWN0
aW9uVG9DbGllbnQ6OmRpZEdldFJlc3VsdChjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJiBy
ZXN1bHREYXRhKQoreworICAgIGlmIChyZXN1bHREYXRhLnR5cGUoKSA9PSBXZWJDb3JlOjpJREJS
ZXN1bHRUeXBlOjpFcnJvcikgeworICAgICAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQobV9jb25u
ZWN0aW9uLCBNZXNzYWdlVHlwZShyZXN1bHREYXRhKSwgMCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBpZiAocmVzdWx0RGF0YS50eXBlKCkgPT0gV2ViQ29yZTo6SURCUmVzdWx0VHlw
ZTo6R2V0QWxsUmVjb3Jkc1N1Y2Nlc3MgJiYgcmVzdWx0RGF0YS5nZXRBbGxSZXN1bHQoKS50eXBl
KCkgPT0gV2ViQ29yZTo6SW5kZXhlZERCOjpHZXRBbGxUeXBlOjpLZXlzKSB7CisgICAgICAgIElQ
Qzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VUeXBlKHJlc3VsdERhdGEp
LCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gYmxvYkZpbGVQYXRocyA9
IHJlc3VsdERhdGEudHlwZSgpID09IFdlYkNvcmU6OklEQlJlc3VsdFR5cGU6OkdldEFsbFJlY29y
ZHNTdWNjZXNzID8gcmVzdWx0RGF0YS5nZXRBbGxSZXN1bHQoKS5hbGxCbG9iRmlsZVBhdGhzKCkg
OiByZXN1bHREYXRhLmdldFJlc3VsdCgpLnZhbHVlKCkuYmxvYkZpbGVQYXRocygpOworICAgIGlm
IChibG9iRmlsZVBhdGhzLmlzRW1wdHkoKSkgeworICAgICAgICBJUEM6OkNvbm5lY3Rpb246OnNl
bmQobV9jb25uZWN0aW9uLCBNZXNzYWdlVHlwZShyZXN1bHREYXRhKSwgMCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQobV9jb25uZWN0aW9uLCBN
ZXNzYWdlVHlwZShyZXN1bHREYXRhKSwgMCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rp
b25Ub0NsaWVudDo6ZGlkRGVsZXRlRGF0YWJhc2UoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0
YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQobV9jb25uZWN0aW9u
LCBNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWREZWxldGVEYXRhYmFzZShy
ZXN1bHREYXRhKSwgMCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6
ZGlkT3BlbkRhdGFiYXNlKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEp
Cit7CisgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwgTWVzc2FnZXM6Oldl
YklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6RGlkT3BlbkRhdGFiYXNlKHJlc3VsdERhdGEpLCAwKTsK
K30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRTdGFydFRyYW5zYWN0
aW9uKGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVu
dGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJREJFcnJvciYgZXJyb3IpCit7CisgICAgSVBDOjpDb25u
ZWN0aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwgTWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub1Nl
cnZlcjo6RGlkU3RhcnRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbklkZW50aWZpZXIsIGVycm9yKSwg
MCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkQWJvcnRUcmFu
c2FjdGlvbihjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9u
SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCRXJyb3ImIGVycm9yKQoreworICAgIElQQzo6
Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0aW9u
VG9TZXJ2ZXI6OkRpZEFib3J0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZGVudGlmaWVyLCBlcnJv
ciksIDApOworfQorCit2b2lkIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZENvbW1p
dFRyYW5zYWN0aW9uKGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNh
Y3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJREJFcnJvciYgZXJyb3IpCit7CisgICAg
SVBDOjpDb25uZWN0aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwgTWVzc2FnZXM6OldlYklEQkNvbm5l
Y3Rpb25Ub1NlcnZlcjo6RGlkQ29tbWl0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZGVudGlmaWVy
LCBlcnJvciksIDApOworfQorCit2b2lkIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRp
ZENyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmIHJlc3VsdERh
dGEpCit7CisgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwgTWVzc2FnZXM6
OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6RGlkQ3JlYXRlT2JqZWN0U3RvcmUocmVzdWx0RGF0
YSksIDApOworfQorCit2b2lkIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZERlbGV0
ZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCit7
CisgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwgTWVzc2FnZXM6OldlYklE
QkNvbm5lY3Rpb25Ub1NlcnZlcjo6RGlkRGVsZXRlT2JqZWN0U3RvcmUocmVzdWx0RGF0YSksIDAp
OworfQorCit2b2lkIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZFJlbmFtZU9iamVj
dFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCit7CisgICAg
SVBDOjpDb25uZWN0aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwgTWVzc2FnZXM6OldlYklEQkNvbm5l
Y3Rpb25Ub1NlcnZlcjo6RGlkUmVuYW1lT2JqZWN0U3RvcmUocmVzdWx0RGF0YSksIDApOworfQor
Cit2b2lkIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZENsZWFyT2JqZWN0U3RvcmUo
Y29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBJUEM6OkNv
bm5lY3Rpb246OnNlbmQobV9jb25uZWN0aW9uLCBNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRv
U2VydmVyOjpEaWRDbGVhck9iamVjdFN0b3JlKHJlc3VsdERhdGEpLCAwKTsKK30KKwordm9pZCBJ
REJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRDcmVhdGVJbmRleChjb25zdCBXZWJDb3Jl
OjpJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIElQQzo6Q29ubmVjdGlvbjo6c2Vu
ZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZENy
ZWF0ZUluZGV4KHJlc3VsdERhdGEpLCAwKTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlv
blRvQ2xpZW50OjpkaWREZWxldGVJbmRleChjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJiBy
ZXN1bHREYXRhKQoreworICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1l
c3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZERlbGV0ZUluZGV4KHJlc3VsdERh
dGEpLCAwKTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRSZW5h
bWVJbmRleChjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAg
IElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJJREJDb25u
ZWN0aW9uVG9TZXJ2ZXI6OkRpZFJlbmFtZUluZGV4KHJlc3VsdERhdGEpLCAwKTsKK30KKwordm9p
ZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRQdXRPckFkZChjb25zdCBXZWJDb3Jl
OjpJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIElQQzo6Q29ubmVjdGlvbjo6c2Vu
ZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZFB1
dE9yQWRkKHJlc3VsdERhdGEpLCAwKTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRv
Q2xpZW50OjpkaWRHZXRSZWNvcmQoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYgcmVzdWx0
RGF0YSkKK3sKKyAgICBkaWRHZXRSZXN1bHQ8TWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub1Nl
cnZlcjo6RGlkR2V0UmVjb3JkPihyZXN1bHREYXRhKTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29u
bmVjdGlvblRvQ2xpZW50OjpkaWRHZXRBbGxSZWNvcmRzKGNvbnN0IFdlYkNvcmU6OklEQlJlc3Vs
dERhdGEmIHJlc3VsdERhdGEpCit7CisgICAgZGlkR2V0UmVzdWx0PE1lc3NhZ2VzOjpXZWJJREJD
b25uZWN0aW9uVG9TZXJ2ZXI6OkRpZEdldEFsbFJlY29yZHM+KHJlc3VsdERhdGEpOworfQorCit2
b2lkIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZEdldENvdW50KGNvbnN0IFdlYkNv
cmU6OklEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCit7CisgICAgSVBDOjpDb25uZWN0aW9uOjpz
ZW5kKG1fY29ubmVjdGlvbiwgTWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6RGlk
R2V0Q291bnQocmVzdWx0RGF0YSksIDApOworfQorCit2b2lkIElEQlN0b3JhZ2VDb25uZWN0aW9u
VG9DbGllbnQ6OmRpZERlbGV0ZVJlY29yZChjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJiBy
ZXN1bHREYXRhKQoreworICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1l
c3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZERlbGV0ZVJlY29yZChyZXN1bHRE
YXRhKSwgMCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkT3Bl
bkN1cnNvcihjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAg
IGRpZEdldFJlc3VsdDxNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWRPcGVu
Q3Vyc29yPihyZXN1bHREYXRhKTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xp
ZW50OjpkaWRJdGVyYXRlQ3Vyc29yKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmIHJlc3Vs
dERhdGEpCit7CisgICAgZGlkR2V0UmVzdWx0PE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9T
ZXJ2ZXI6OkRpZEl0ZXJhdGVDdXJzb3I+KHJlc3VsdERhdGEpOworfQorCit2b2lkIElEQlN0b3Jh
Z2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZEdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhj
b25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBj
b25zdCBWZWN0b3I8V2ViQ29yZTo6SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbj4mIGRhdGFiYXNl
cykKK3sKKyAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQobV9jb25uZWN0aW9uLCBNZXNzYWdlczo6
V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWRHZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lv
bnMocmVxdWVzdElkZW50aWZpZXIsIGRhdGFiYXNlcyksIDApOworfQorCit2b2lkIElEQlN0b3Jh
Z2VDb25uZWN0aW9uVG9DbGllbnQ6OmZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQoV2ViQ29yZTo6SURC
U2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFdl
YkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90
IHJlcXVlc3RlZFZlcnNpb24pCit7CisgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKG1fY29ubmVj
dGlvbiwgTWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6RmlyZVZlcnNpb25DaGFu
Z2VFdmVudChjb25uZWN0aW9uLmlkZW50aWZpZXIoKSwgcmVxdWVzdElkZW50aWZpZXIsIHJlcXVl
c3RlZFZlcnNpb24pLCAwKTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50
OjpkaWRDbG9zZUZyb21TZXJ2ZXIoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFz
ZUNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OklEQkVycm9yJiBlcnJvcikK
K3sKKyAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQobV9jb25uZWN0aW9uLCBNZXNzYWdlczo6V2Vi
SURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWRDbG9zZUZyb21TZXJ2ZXIoY29ubmVjdGlvbi5pZGVu
dGlmaWVyKCksIGVycm9yKSwgMCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0Ns
aWVudDo6bm90aWZ5T3BlbkRCUmVxdWVzdEJsb2NrZWQoY29uc3QgV2ViQ29yZTo6SURCUmVzb3Vy
Y2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3Qgb2xkVmVyc2lvbiwgdWlu
dDY0X3QgbmV3VmVyc2lvbikKK3sKKyAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQobV9jb25uZWN0
aW9uLCBNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpOb3RpZnlPcGVuREJSZXF1
ZXN0QmxvY2tlZChyZXF1ZXN0SWRlbnRpZmllciwgb2xkVmVyc2lvbiwgbmV3VmVyc2lvbiksIDAp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZUNvbm5lY3Rpb25U
b0NsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZjQ4ZDQz
ZGRkMjllCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
dG9yYWdlL0lEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQuaApAQCAtMCwwICsxLDc3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9JREJDb25uZWN0aW9uVG9DbGllbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L0lEQkNvbm5lY3Rpb25Ub0NsaWVudERlbGVnYXRlLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitjbGFzcyBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50IGZpbmFsIDogcHVibGljIFdlYkNv
cmU6OklEQlNlcnZlcjo6SURCQ29ubmVjdGlvblRvQ2xpZW50RGVsZWdhdGUgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9D
bGllbnQoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCwgV2ViQ29yZTo6SURCQ29ubmVjdGlvbklk
ZW50aWZpZXIpOworICAgIH5JREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50KCk7CisKKyAgICBX
ZWJDb3JlOjpJREJDb25uZWN0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisgICAgSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBp
cGNDb25uZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb25uZWN0aW9uOyB9CisgICAgV2ViQ29y
ZTo6SURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnQmIGNvbm5lY3Rpb25Ub0NsaWVudCgp
OworCitwcml2YXRlOgorICAgIHRlbXBsYXRlPGNsYXNzIE1lc3NhZ2VUeXBlPiB2b2lkIGRpZEdl
dFJlc3VsdChjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJik7CisKKyAgICAvLyBJREJDb25u
ZWN0aW9uVG9DbGllbnREZWxlZ2F0ZQorICAgIHZvaWQgZGlkRGVsZXRlRGF0YWJhc2UoY29uc3Qg
V2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkT3BlbkRhdGFiYXNl
KGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBmaW5hbDsKKyAgICB2b2lkIGRpZEFib3J0
VHJhbnNhY3Rpb24oY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2Fj
dGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OklEQkVycm9yJikgZmluYWw7CisgICAgdm9p
ZCBkaWRDb21taXRUcmFuc2FjdGlvbihjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZp
ZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCRXJyb3ImKSBmaW5h
bDsKKyAgICB2b2lkIGRpZFN0YXJ0VHJhbnNhY3Rpb24oY29uc3QgV2ViQ29yZTo6SURCUmVzb3Vy
Y2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OklEQkVy
cm9yJikgZmluYWw7CisgICAgdm9pZCBkaWRDcmVhdGVPYmplY3RTdG9yZShjb25zdCBXZWJDb3Jl
OjpJREJSZXN1bHREYXRhJikgZmluYWw7CisgICAgdm9pZCBkaWREZWxldGVPYmplY3RTdG9yZShj
b25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJikgZmluYWw7CisgICAgdm9pZCBkaWRSZW5hbWVP
YmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJikgZmluYWw7CisgICAgdm9p
ZCBkaWRDbGVhck9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBmaW5h
bDsKKyAgICB2b2lkIGRpZENyZWF0ZUluZGV4KGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEm
KSBmaW5hbDsKKyAgICB2b2lkIGRpZERlbGV0ZUluZGV4KGNvbnN0IFdlYkNvcmU6OklEQlJlc3Vs
dERhdGEmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlbmFtZUluZGV4KGNvbnN0IFdlYkNvcmU6OklE
QlJlc3VsdERhdGEmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFB1dE9yQWRkKGNvbnN0IFdlYkNvcmU6
OklEQlJlc3VsdERhdGEmKSBmaW5hbDsKKyAgICB2b2lkIGRpZEdldFJlY29yZChjb25zdCBXZWJD
b3JlOjpJREJSZXN1bHREYXRhJikgZmluYWw7CisgICAgdm9pZCBkaWRHZXRBbGxSZWNvcmRzKGNv
bnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBmaW5hbDsKKyAgICB2b2lkIGRpZEdldENvdW50
KGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBmaW5hbDsKKyAgICB2b2lkIGRpZERlbGV0
ZVJlY29yZChjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJikgZmluYWw7CisgICAgdm9pZCBk
aWRPcGVuQ3Vyc29yKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBmaW5hbDsKKyAgICB2
b2lkIGRpZEl0ZXJhdGVDdXJzb3IoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFs
OworICAgIHZvaWQgZGlkR2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKGNvbnN0IFdlYkNv
cmU6OklEQlJlc291cmNlSWRlbnRpZmllciYsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJREJEYXRh
YmFzZU5hbWVBbmRWZXJzaW9uPiYpIGZpbmFsOworICAgIHZvaWQgbm90aWZ5T3BlbkRCUmVxdWVz
dEJsb2NrZWQoY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRl
bnRpZmllciwgdWludDY0X3Qgb2xkVmVyc2lvbiwgdWludDY0X3QgbmV3VmVyc2lvbikgZmluYWw7
CisgICAgdm9pZCBmaXJlVmVyc2lvbkNoYW5nZUV2ZW50KFdlYkNvcmU6OklEQlNlcnZlcjo6VW5p
cXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVu
dGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgcmVxdWVzdGVkVmVyc2lvbikgZmlu
YWw7CisgICAgdm9pZCBkaWRDbG9zZUZyb21TZXJ2ZXIoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlx
dWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpJREJFcnJvciYpIGZpbmFs
OworCisgICAgSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBtX2Nvbm5lY3Rpb247CisgICAgV2Vi
Q29yZTo6SURCQ29ubmVjdGlvbklkZW50aWZpZXIgbV9pZGVudGlmaWVyOworICAgIFJlZjxXZWJD
b3JlOjpJREJTZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub0NsaWVudD4gbV9jb25uZWN0aW9uVG9DbGll
bnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlTWFuYWdlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZU1hbmFnZXIuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNDVmMjk1ZDI4MDI2Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3Jh
Z2VNYW5hZ2VyLmNwcApAQCAtMCwwICsxLDIzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJJREJTdG9yYWdlTWFuYWdlci5oIgorCisjaW5jbHVkZSAiSURC
U3RvcmFnZVJlZ2lzdHJ5LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9NZW1vcnlJREJCYWNraW5nU3Rv
cmUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZUZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
c3RhdGljIHZvaWQgbWlncmF0ZU9yaWdpbkRhdGEoY29uc3QgU3RyaW5nJiBvbGRPcmlnaW5EaXJl
Y3RvcnksIGNvbnN0IFN0cmluZyYgbmV3T3JpZ2luRGlyZWN0b3J5KQoreworICAgIGlmICghRmls
ZVN5c3RlbTo6ZmlsZUV4aXN0cyhvbGRPcmlnaW5EaXJlY3RvcnkpKQorICAgICAgICByZXR1cm47
CisKKyAgICBhdXRvIGZpbGVOYW1lcyA9IEZpbGVTeXN0ZW06Omxpc3REaXJlY3Rvcnkob2xkT3Jp
Z2luRGlyZWN0b3J5KTsKKyAgICBmb3IgKGF1dG8gbmFtZSA6IGZpbGVOYW1lcykgeworICAgICAg
ICBTdHJpbmcgY2hpbGRQYXRoID0gRmlsZVN5c3RlbTo6cmVhZFN5bWJvbGljTGluayhGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQob2xkT3JpZ2luRGlyZWN0b3J5LCBuYW1lKSk7
CisgICAgICAgIFN0cmluZyBuZXdOYW1lID0gV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6Y29t
cHV0ZUhhc2hGb3JGaWxlTmFtZShXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6ZGVjb2RlRGF0YWJhc2VOYW1lKG5hbWUpKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6bW92
ZUZpbGUoY2hpbGRQYXRoLCBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobmV3
T3JpZ2luRGlyZWN0b3J5LCBuZXdOYW1lKSk7CisgICAgfQorCisgICAgRmlsZVN5c3RlbTo6ZGVs
ZXRlRW1wdHlEaXJlY3Rvcnkob2xkT3JpZ2luRGlyZWN0b3J5KTsKK30KKworU3RyaW5nIElEQlN0
b3JhZ2VNYW5hZ2VyOjppZGJTdG9yYWdlT3JpZ2luRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcm9v
dERpcmVjdG9yeSwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4pCit7CisgICAg
aWYgKHJvb3REaXJlY3RvcnkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmco
KTsKKworICAgIFN0cmluZyBvcmlnaW5EaXJlY3RvcnkgPSBXZWJDb3JlOjpJREJEYXRhYmFzZUlk
ZW50aWZpZXI6OmRhdGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVUb1Jvb3Qob3JpZ2luLnRvcE9yaWdp
biwgb3JpZ2luLmNsaWVudE9yaWdpbiwgcm9vdERpcmVjdG9yeSwgInYxIik7CisgICAgRmlsZVN5
c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKG9yaWdpbkRpcmVjdG9yeSk7CisKKyAgICBTdHJpbmcg
b2xkT3JpZ2luRGlyZWN0b3J5ID0gV2ViQ29yZTo6SURCRGF0YWJhc2VJZGVudGlmaWVyOjpkYXRh
YmFzZURpcmVjdG9yeVJlbGF0aXZlVG9Sb290KG9yaWdpbi50b3BPcmlnaW4sIG9yaWdpbi5jbGll
bnRPcmlnaW4sIHJvb3REaXJlY3RvcnksICJ2MCIpOworICAgIG1pZ3JhdGVPcmlnaW5EYXRhKG9s
ZE9yaWdpbkRpcmVjdG9yeSwgb3JpZ2luRGlyZWN0b3J5KTsKKworICAgIHJldHVybiBvcmlnaW5E
aXJlY3Rvcnk7Cit9CisKK3VpbnQ2NF90IElEQlN0b3JhZ2VNYW5hZ2VyOjppZGJTdG9yYWdlU2l6
ZShjb25zdCBTdHJpbmcmIG9yaWdpbkRpcmVjdG9yeSkKK3sKKyAgICByZXR1cm4gV2ViQ29yZTo6
SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRhdGFiYXNlc1NpemVGb3JEaXJlY3Rv
cnkob3JpZ2luRGlyZWN0b3J5KTsKK30KKworc3RhdGljIHZvaWQgZ2V0T3JpZ2luc0ZvclZlcnNp
b24oY29uc3QgU3RyaW5nJiB2ZXJzaW9uUGF0aCwgSGFzaFNldDxXZWJDb3JlOjpDbGllbnRPcmln
aW4+JiBvcmlnaW5zKQoreworICAgIGZvciAoYXV0byYgdG9wRGF0YWJhc2VJZGVudGlmaWVyIDog
RmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeSh2ZXJzaW9uUGF0aCkpIHsKKyAgICAgICAgYXV0byB0
b3BPcmlnaW4gPSBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50
aWZpZXIodG9wRGF0YWJhc2VJZGVudGlmaWVyKTsKKyAgICAgICAgaWYgKCF0b3BPcmlnaW4pCisg
ICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBmb3IgKGF1dG8mIGRhdGFiYXNlSWRlbnRp
ZmllciA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KHZlcnNpb25QYXRoLCB0b3BEYXRhYmFzZUlkZW50aWZpZXIpKSkgeworICAg
ICAgICAgICAgaWYgKGF1dG8gY2xpZW50T3JpZ2luID0gV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKGRhdGFiYXNlSWRlbnRpZmllcikpCisgICAgICAg
ICAgICAgICAgb3JpZ2lucy5hZGQoV2ViQ29yZTo6Q2xpZW50T3JpZ2luIHsgKnRvcE9yaWdpbiwg
KmNsaWVudE9yaWdpbiB9KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBvcmln
aW5zLmFkZChXZWJDb3JlOjpDbGllbnRPcmlnaW4geyAqdG9wT3JpZ2luLCAqdG9wT3JpZ2luIH0p
OworICAgICAgICB9CisgICAgfQorfQorCitIYXNoU2V0PFdlYkNvcmU6OkNsaWVudE9yaWdpbj4g
SURCU3RvcmFnZU1hbmFnZXI6Om9yaWdpbnNPZklEQlN0b3JhZ2VEYXRhKGNvbnN0IFN0cmluZyYg
cm9vdERpcmVjdG9yeSkKK3sKKyAgICBIYXNoU2V0PFdlYkNvcmU6OkNsaWVudE9yaWdpbj4gb3Jp
Z2luczsKKyAgICBpZiAocm9vdERpcmVjdG9yeS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBv
cmlnaW5zOworCisgICAgZ2V0T3JpZ2luc0ZvclZlcnNpb24oRmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KHJvb3REaXJlY3RvcnksICJ2MCIpLCBvcmlnaW5zKTsKKyAgICBnZXRP
cmlnaW5zRm9yVmVyc2lvbihGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocm9v
dERpcmVjdG9yeSwgInYxIiksIG9yaWdpbnMpOworICAgIHJldHVybiBvcmlnaW5zOworfQorCitJ
REJTdG9yYWdlTWFuYWdlcjo6SURCU3RvcmFnZU1hbmFnZXIoY29uc3QgU3RyaW5nJiBwYXRoLCBJ
REJTdG9yYWdlUmVnaXN0cnkmIHJlZ2lzdHJ5LCBRdW90YUNoZWNrRnVuY3Rpb24mJiBxdW90YUNo
ZWNrRnVuY3Rpb24pCisgICAgOiBtX3BhdGgocGF0aCkKKyAgICAsIG1fcmVnaXN0cnkocmVnaXN0
cnkpCisgICAgLCBtX3F1b3RhQ2hlY2tGdW5jdGlvbihXVEZNb3ZlKHF1b3RhQ2hlY2tGdW5jdGlv
bikpCit7CisgICAgV1RGTG9nQWx3YXlzKCJzaWh1aWw6IFslcF1JREJTdG9yYWdlTWFuYWdlcjo6
SURCU3RvcmFnZU1hbmFnZXIgbV9wYXRoWyVzXSIsIHRoaXMsIG1fcGF0aC51dGY4KCkuZGF0YSgp
KTsKK30KKworYm9vbCBJREJTdG9yYWdlTWFuYWdlcjo6aGFzRGF0YUluTWVtb3J5KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gV1RGOjphbnlPZihtX2RhdGFiYXNlcy52YWx1ZXMoKSwgWyZdIChhdXRv
JiBkYXRhYmFzZSkgeworICAgICAgICByZXR1cm4gZGF0YWJhc2UtPmhhc0RhdGFJbk1lbW9yeSgp
OworICAgIH0pOworfQorCit2b2lkIElEQlN0b3JhZ2VNYW5hZ2VyOjpjbG9zZURhdGFiYXNlc0Zv
ckRlbGV0aW9uKCkKK3sKKyAgICBmb3IgKGF1dG8mIGRhdGFiYXNlIDogbV9kYXRhYmFzZXMudmFs
dWVzKCkpIHsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJzaWh1aWw6IFslcF1JREJTdG9yYWdlTWFu
YWdlcjo6Y2xvc2VEYXRhYmFzZXNGb3JEZWxldGlvbigpIGRhdGFiYXNlWyVzXSIsIHRoaXMsIGRh
dGFiYXNlLT5pZGVudGlmaWVyKCkuZGF0YWJhc2VOYW1lKCkudXRmOCgpLmRhdGEoKSk7CisgICAg
ICAgIGRhdGFiYXNlLT5pbW1lZGlhdGVDbG9zZSgpOworICAgIH0KKworICAgIG1fZGF0YWJhc2Vz
LmNsZWFyKCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZU1hbmFnZXI6OnN0b3BEYXRhYmFzZUFjdGl2
aXRpZXNGb3JTdXNwZW5kKCkKK3sKKyAgICBpZiAobV9wYXRoLmlzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgZm9yIChhdXRvJiBkYXRhYmFzZSA6IG1fZGF0YWJhc2VzLnZhbHVlcygp
KSB7CisgICAgICAgIC8vIE9ubHkgc3RvcCBkYXRhYmFzZXMgd2l0aCBub24tZXBoZW1lcmFsIGJh
Y2tpbmcgc3RvcmUgdGhhdCBjYW4gaG9sZCBkYXRhYmFzZSBmaWxlIGxvY2suCisgICAgICAgIGlm
ICghZGF0YWJhc2UtPmlkZW50aWZpZXIoKS5pc1RyYW5zaWVudCgpKQorICAgICAgICAgICAgZGF0
YWJhc2UtPmFib3J0SW5Qcm9ncmVzc1RyYW5zYWN0aW9ucygpOworICAgIH0KK30KKworV2ViQ29y
ZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZSYgSURCU3RvcmFnZU1hbmFnZXI6OmdldE9y
Q3JlYXRlVW5pcXVlSURCRGF0YWJhc2UoY29uc3QgV2ViQ29yZTo6SURCRGF0YWJhc2VJZGVudGlm
aWVyJiBpZGVudGlmaWVyKQoreworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9kYXRhYmFzZXMuYWRk
KGlkZW50aWZpZXIsIG51bGxwdHIpOworICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkKKyAg
ICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6SURC
U2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZT4oKnRoaXMsIGlkZW50aWZpZXIpOworCisgICAgcmV0
dXJuICphZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOworfQorCit2b2lkIElEQlN0b3JhZ2VNYW5h
Z2VyOjpvcGVuRGF0YWJhc2UoV2ViQ29yZTo6SURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGll
bnQmIGNvbm5lY3Rpb25Ub0NsaWVudCwgY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJl
cXVlc3REYXRhKQoreworICAgIGF1dG8mIGRhdGFiYXNlID0gZ2V0T3JDcmVhdGVVbmlxdWVJREJE
YXRhYmFzZShyZXF1ZXN0RGF0YS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAgZGF0YWJhc2Uu
b3BlbkRhdGFiYXNlQ29ubmVjdGlvbihjb25uZWN0aW9uVG9DbGllbnQsIHJlcXVlc3REYXRhKTsK
K30KKwordm9pZCBJREJTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlRGF0YWJhc2UoV2ViQ29yZTo6SURC
U2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnQmIGNvbm5lY3Rpb25Ub0NsaWVudCwgY29uc3Qg
V2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhKQoreworICAgIGF1dG8mIGRhdGFi
YXNlID0gZ2V0T3JDcmVhdGVVbmlxdWVJREJEYXRhYmFzZShyZXF1ZXN0RGF0YS5kYXRhYmFzZUlk
ZW50aWZpZXIoKSk7CisgICAgZGF0YWJhc2UuaGFuZGxlRGVsZXRlKGNvbm5lY3Rpb25Ub0NsaWVu
dCwgcmVxdWVzdERhdGEpOworCisgICAgLy8gVGhpcyBkYXRhYmFzZSBpcyBjcmVhdGVkIGZvciBk
ZWxldGlvbi4KKyAgICBpZiAoZGF0YWJhc2UudHJ5Q2xvc2UoKSkKKyAgICAgICAgbV9kYXRhYmFz
ZXMucmVtb3ZlKGRhdGFiYXNlLmlkZW50aWZpZXIoKSk7Cit9CisKK1ZlY3RvcjxXZWJDb3JlOjpJ
REJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiBJREJTdG9yYWdlTWFuYWdlcjo6Z2V0QWxsRGF0YWJh
c2VOYW1lc0FuZFZlcnNpb25zKCkKK3sKKyAgICBWZWN0b3I8V2ViQ29yZTo6SURCRGF0YWJhc2VO
YW1lQW5kVmVyc2lvbj4gcmVzdWx0OworICAgIEhhc2hTZXQ8U3RyaW5nPiB2aXNpdGVkRGF0YWJh
c2VQYXRoczsKKyAgICBmb3IgKGF1dG8mIGRhdGFiYXNlIDogbV9kYXRhYmFzZXMudmFsdWVzKCkp
IHsKKyAgICAgICAgYXV0byBuYW1lQW5kVmVyc2lvbiA9IGRhdGFiYXNlLT5uYW1lQW5kVmVyc2lv
bigpOworICAgICAgICBpZiAoIW5hbWVBbmRWZXJzaW9uKQorICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgIAorICAgICAgICByZXN1bHQuYXBwZW5kKFdURk1vdmUoKm5hbWVBbmRWZXJzaW9u
KSk7CisgICAgICAgIGlmIChhdXRvIHBhdGggPSBkYXRhYmFzZS0+ZmlsZVBhdGgoKTsgIXBhdGgu
aXNFbXB0eSgpKQorICAgICAgICAgICAgdmlzaXRlZERhdGFiYXNlUGF0aHMuYWRkKHBhdGgpOwor
ICAgIH0KKworICAgIGF1dG8gZGF0YWJhc2VJZGVudGlmaWVycyA9IEZpbGVTeXN0ZW06Omxpc3RE
aXJlY3RvcnkobV9wYXRoKTsKKyAgICBmb3IgKGF1dG8gaWRlbnRpZmllciA6IGRhdGFiYXNlSWRl
bnRpZmllcnMpIHsKKyAgICAgICAgYXV0byBkYXRhYmFzZURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3BhdGgsIGlkZW50aWZpZXIpOworICAgICAgICBh
dXRvIGRhdGFiYXNlUGF0aCA9IFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0
b3JlOjpmdWxsRGF0YWJhc2VQYXRoRm9yRGlyZWN0b3J5KGRhdGFiYXNlRGlyZWN0b3J5KTsKKyAg
ICAgICAgaWYgKHZpc2l0ZWREYXRhYmFzZVBhdGhzLmNvbnRhaW5zKGRhdGFiYXNlUGF0aCkpCisg
ICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAoYXV0byBuYW1lQW5kVmVyc2lvbiA9
IFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpkYXRhYmFzZU5hbWVB
bmRWZXJzaW9uRnJvbUZpbGUoZGF0YWJhc2VQYXRoKSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmQoV1RGTW92ZSgqbmFtZUFuZFZlcnNpb24pKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0
OworfQorCit2b2lkIElEQlN0b3JhZ2VNYW5hZ2VyOjpvcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKGNv
bnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkKK3sKKyAgICBhdXRvKiBk
YXRhYmFzZSA9IG1fZGF0YWJhc2VzLmdldChyZXF1ZXN0RGF0YS5kYXRhYmFzZUlkZW50aWZpZXIo
KSk7CisgICAgaWYgKCFkYXRhYmFzZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZGF0YWJhc2Ut
Pm9wZW5EQlJlcXVlc3RDYW5jZWxsZWQocmVxdWVzdERhdGEucmVxdWVzdElkZW50aWZpZXIoKSk7
CisKKyAgICAvLyBEYXRhYmFzZSBiZWNvbWVzIGlkbGUgYWZ0ZXIgcmVxdWVzdCBpcyBjYW5jZWxs
ZWQuCisgICAgaWYgKGRhdGFiYXNlLT50cnlDbG9zZSgpKQorICAgICAgICBtX2RhdGFiYXNlcy5y
ZW1vdmUoZGF0YWJhc2UtPmlkZW50aWZpZXIoKSk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZU1hbmFn
ZXI6OnJlZ2lzdGVyQ29ubmVjdGlvbihXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFi
YXNlQ29ubmVjdGlvbiYgY29ubmVjdGlvbikKK3sKKyAgICBtX3JlZ2lzdHJ5LnJlZ2lzdGVyQ29u
bmVjdGlvbihjb25uZWN0aW9uKTsKK30KKwordm9pZCBJREJTdG9yYWdlTWFuYWdlcjo6dW5yZWdp
c3RlckNvbm5lY3Rpb24oV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24pCit7CisgICAgbV9yZWdpc3RyeS51bnJlZ2lzdGVyQ29ubmVjdGlv
bihjb25uZWN0aW9uKTsKK30KKwordm9pZCBJREJTdG9yYWdlTWFuYWdlcjo6cmVnaXN0ZXJUcmFu
c2FjdGlvbihXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24m
IHRyYW5zYWN0aW9uKQoreworICAgIG1fcmVnaXN0cnkucmVnaXN0ZXJUcmFuc2FjdGlvbih0cmFu
c2FjdGlvbik7Cit9CisKK3ZvaWQgSURCU3RvcmFnZU1hbmFnZXI6OnVucmVnaXN0ZXJUcmFuc2Fj
dGlvbihXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRy
YW5zYWN0aW9uKQoreworICAgIG1fcmVnaXN0cnkudW5yZWdpc3RlclRyYW5zYWN0aW9uKHRyYW5z
YWN0aW9uKTsKK30KKworc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklEQlNlcnZlcjo6SURCQmFj
a2luZ1N0b3JlPiBJREJTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlQmFja2luZ1N0b3JlKGNvbnN0IFdl
YkNvcmU6OklEQkRhdGFiYXNlSWRlbnRpZmllciYgaWRlbnRpZmllcikKK3sKKyAgICBXVEZMb2dB
bHdheXMoInNpaHVpbDogWyVwXUlEQlN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVCYWNraW5nU3RvcmUg
bV9wYXRoWyVzXSwgbmFtZVslc10iLCB0aGlzLCBtX3BhdGgudXRmOCgpLmRhdGEoKSwgaWRlbnRp
Zmllci5kYXRhYmFzZU5hbWUoKS51dGY4KCkuZGF0YSgpKTsKKworICAgIGlmIChtX3BhdGguaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1l
bW9yeUlEQkJhY2tpbmdTdG9yZT4oaWRlbnRpZmllcik7CisKKyAgICBpZiAoaWRlbnRpZmllci5p
c1RyYW5zaWVudCgpKQorICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJDb3JlOjpJREJTZXJ2
ZXI6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZT4oaWRlbnRpZmllcik7CisKKyAgICBhdXRvIG5hbWUg
PSBXZWJDb3JlOjpTUUxpdGVGaWxlU3lzdGVtOjpjb21wdXRlSGFzaEZvckZpbGVOYW1lKGlkZW50
aWZpZXIuZGF0YWJhc2VOYW1lKCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYkNvcmU6OklE
QlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlPihpZGVudGlmaWVyLCBGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9wYXRoLCBuYW1lKSk7Cit9CisKK3ZvaWQgSURCU3Rv
cmFnZU1hbmFnZXI6OnJlcXVlc3RTcGFjZShjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCB1
aW50NjRfdCBzaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQoreworICAgIG1fcXVvdGFDaGVja0Z1bmN0aW9uKHNpemUsIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZU1hbmFnZXIuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlTWFuYWdlci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMGM3MjFiNTY5YmY0Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lE
QlN0b3JhZ2VNYW5hZ2VyLmgKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSA8V2ViQ29yZS9VbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIElEQlNlcnZlciB7CitjbGFzcyBJREJCYWNr
aW5nU3RvcmU7CitjbGFzcyBJREJDb25uZWN0aW9uVG9DbGllbnQ7CitjbGFzcyBVbmlxdWVJREJE
YXRhYmFzZTsKK30KK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIElEQlN0b3JhZ2VS
ZWdpc3RyeTsKKworY2xhc3MgSURCU3RvcmFnZU1hbmFnZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29y
ZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIgeworcHVibGljOgorICAgIHN0
YXRpYyBTdHJpbmcgaWRiU3RvcmFnZU9yaWdpbkRpcmVjdG9yeShjb25zdCBTdHJpbmcmIHJvb3RE
aXJlY3RvcnksIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYpOworICAgIHN0YXRpYyB1aW50
NjRfdCBpZGJTdG9yYWdlU2l6ZShjb25zdCBTdHJpbmcmIG9yaWdpbkRpcmVjdG9yeSk7CisgICAg
c3RhdGljIEhhc2hTZXQ8V2ViQ29yZTo6Q2xpZW50T3JpZ2luPiBvcmlnaW5zT2ZJREJTdG9yYWdl
RGF0YShjb25zdCBTdHJpbmcmIHJvb3REaXJlY3RvcnkpOworCisgICAgdXNpbmcgUXVvdGFDaGVj
a0Z1bmN0aW9uID0gRnVuY3Rpb248dm9pZCh1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik+OworICAgIElEQlN0b3JhZ2VNYW5hZ2VyKGNvbnN0
IFN0cmluZyYgcGF0aCwgSURCU3RvcmFnZVJlZ2lzdHJ5JiwgUXVvdGFDaGVja0Z1bmN0aW9uJiYp
OworICAgIH5JREJTdG9yYWdlTWFuYWdlcigpIGZpbmFsIHsgfQorICAgIGJvb2wgaGFzRGF0YUlu
TWVtb3J5KCkgY29uc3Q7CisgICAgdm9pZCBjbG9zZURhdGFiYXNlc0ZvckRlbGV0aW9uKCk7Cisg
ICAgdm9pZCBzdG9wRGF0YWJhc2VBY3Rpdml0aWVzRm9yU3VzcGVuZCgpOworCisgICAgdm9pZCBv
cGVuRGF0YWJhc2UoV2ViQ29yZTo6SURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnQmLCBj
b25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYpOworICAgIHZvaWQgb3BlbkRCUmVxdWVzdENh
bmNlbGxlZChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYpOworICAgIHZvaWQgZGVsZXRl
RGF0YWJhc2UoV2ViQ29yZTo6SURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnQmLCBjb25z
dCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYpOworICAgIFZlY3RvcjxXZWJDb3JlOjpJREJEYXRh
YmFzZU5hbWVBbmRWZXJzaW9uPiBnZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMoKTsKKwor
cHJpdmF0ZToKKyAgICBXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlJiBnZXRP
ckNyZWF0ZVVuaXF1ZUlEQkRhdGFiYXNlKGNvbnN0IFdlYkNvcmU6OklEQkRhdGFiYXNlSWRlbnRp
ZmllciYpOworCisgICAgLy8gV2ViQ29yZTo6VW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyCisgICAg
dm9pZCByZWdpc3RlckNvbm5lY3Rpb24oV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRh
YmFzZUNvbm5lY3Rpb24mKSBmaW5hbDsKKyAgICB2b2lkIHVucmVnaXN0ZXJDb25uZWN0aW9uKFdl
YkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJikgZmluYWw7Cisg
ICAgdm9pZCByZWdpc3RlclRyYW5zYWN0aW9uKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURC
RGF0YWJhc2VUcmFuc2FjdGlvbiYpIGZpbmFsOworICAgIHZvaWQgdW5yZWdpc3RlclRyYW5zYWN0
aW9uKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYpIGZp
bmFsOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQkJhY2tpbmdT
dG9yZT4gY3JlYXRlQmFja2luZ1N0b3JlKGNvbnN0IFdlYkNvcmU6OklEQkRhdGFiYXNlSWRlbnRp
ZmllciYpIGZpbmFsOworICAgIHZvaWQgcmVxdWVzdFNwYWNlKGNvbnN0IFdlYkNvcmU6OkNsaWVu
dE9yaWdpbiYsIHVpbnQ2NF90IHNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYp
IGZpbmFsOworCisgICAgU3RyaW5nIG1fcGF0aDsKKyAgICBJREJTdG9yYWdlUmVnaXN0cnkmIG1f
cmVnaXN0cnk7CisgICAgUXVvdGFDaGVja0Z1bmN0aW9uIG1fcXVvdGFDaGVja0Z1bmN0aW9uOwor
ICAgIEhhc2hNYXA8V2ViQ29yZTo6SURCRGF0YWJhc2VJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9w
dHI8V2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZT4+IG1fZGF0YWJhc2VzOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlUmVnaXN0cnkuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNDUxNTFhMTAyNzI3Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VS
ZWdpc3RyeS5jcHAKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJJREJTdG9yYWdlUmVnaXN0cnkuaCIKKworI2luY2x1ZGUgPFdlYkNv
cmUvVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Vbmlx
dWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitJREJT
dG9yYWdlUmVnaXN0cnk6OklEQlN0b3JhZ2VSZWdpc3RyeSgpID0gZGVmYXVsdDsKKworV2ViQ29y
ZTo6SURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnQmIElEQlN0b3JhZ2VSZWdpc3RyeTo6
Z2V0T3JDcmVhdGVDb25uZWN0aW9uVG9DbGllbnQoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBj
b25uZWN0aW9uLCBXZWJDb3JlOjpJREJDb25uZWN0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKQor
eworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9jb25uZWN0aW9uc1RvQ2xpZW50LmFkZChpZGVudGlm
aWVyLCBudWxscHRyKTsKKyAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgIGFk
ZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPElEQlN0b3JhZ2VDb25uZWN0aW9u
VG9DbGllbnQ+KGNvbm5lY3Rpb24sIGlkZW50aWZpZXIpOworCisgICAgQVNTRVJUKGFkZFJlc3Vs
dC5pdGVyYXRvci0+dmFsdWUtPmlwY0Nvbm5lY3Rpb24oKSA9PSBjb25uZWN0aW9uKTsKKyAgICBy
ZXR1cm4gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+Y29ubmVjdGlvblRvQ2xpZW50KCk7Cit9
CisKK3ZvaWQgSURCU3RvcmFnZVJlZ2lzdHJ5OjpyZWdpc3RlckNvbm5lY3Rpb24oV2ViQ29yZTo6
SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCit7Cisg
ICAgYXV0byBpZGVudGlmaWVyID0gY29ubmVjdGlvbi5pZGVudGlmaWVyKCk7CisgICAgQVNTRVJU
KCFtX2Nvbm5lY3Rpb25zLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKKworICAgIG1fY29ubmVjdGlv
bnMuYWRkKGlkZW50aWZpZXIsIGNvbm5lY3Rpb24pOworfQorCit2b2lkIElEQlN0b3JhZ2VSZWdp
c3RyeTo6dW5yZWdpc3RlckNvbm5lY3Rpb24oV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJE
YXRhYmFzZUNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCit7CisgICAgYXV0byBpZGVudGlmaWVyID0g
Y29ubmVjdGlvbi5pZGVudGlmaWVyKCk7CisgICAgQVNTRVJUKG1fY29ubmVjdGlvbnMuY29udGFp
bnMoaWRlbnRpZmllcikpOworCisgICAgbV9jb25uZWN0aW9ucy5yZW1vdmUoaWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgSURCU3RvcmFnZVJlZ2lzdHJ5OjpyZWdpc3RlclRyYW5zYWN0aW9uKFdlYkNv
cmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24p
Cit7CisgICAgYXV0byBpZGVudGlmaWVyID0gdHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIo
KTsKKyAgICBBU1NFUlQoIW1fdHJhbnNhY3Rpb25zLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKKwor
ICAgIG1fdHJhbnNhY3Rpb25zLmFkZChpZGVudGlmaWVyLCB0cmFuc2FjdGlvbik7Cit9CisKK3Zv
aWQgSURCU3RvcmFnZVJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyVHJhbnNhY3Rpb24oV2ViQ29yZTo6SURC
U2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKK3sKKyAg
ICBhdXRvIGlkZW50aWZpZXIgPSB0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpOworICAg
IEFTU0VSVChtX3RyYW5zYWN0aW9ucy5jb250YWlucyhpZGVudGlmaWVyKSk7CisKKyAgICBtX3Ry
YW5zYWN0aW9ucy5yZW1vdmUoaWRlbnRpZmllcik7Cit9CisKK1dlYkNvcmU6OklEQlNlcnZlcjo6
VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uKiBJREJTdG9yYWdlUmVnaXN0cnk6OmdldENvbm5l
Y3Rpb24odWludDY0X3QgaWRlbnRpZmllcikKK3sKKyAgICByZXR1cm4gbV9jb25uZWN0aW9ucy5n
ZXQoaWRlbnRpZmllcikuZ2V0KCk7Cit9CisKK1dlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURC
RGF0YWJhc2VUcmFuc2FjdGlvbiogSURCU3RvcmFnZVJlZ2lzdHJ5OjpnZXRUcmFuc2FjdGlvbihX
ZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICByZXR1cm4g
bV90cmFuc2FjdGlvbnMuZ2V0KGlkZW50aWZpZXIpLmdldCgpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9y
YWdlL0lEQlN0b3JhZ2VSZWdpc3RyeS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
dG9yYWdlL0lEQlN0b3JhZ2VSZWdpc3RyeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uNmQ3NTc1YTdmOTE0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VSZWdpc3RyeS5oCkBAIC0wLDAgKzEs
NTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPFdlYkNvcmUvSURC
UmVzb3VyY2VJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIElEQlNlcnZlciB7CitjbGFzcyBVbmlxdWVJREJEYXRh
YmFzZUNvbm5lY3Rpb247CitjbGFzcyBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOworfQor
fQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgSURCU3RvcmFnZVJlZ2lzdHJ5IHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBJREJTdG9yYWdlUmVnaXN0
cnkoKTsKKyAgICBXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub0NsaWVudCYgZ2V0
T3JDcmVhdGVDb25uZWN0aW9uVG9DbGllbnQoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCwgV2Vi
Q29yZTo6SURCQ29ubmVjdGlvbklkZW50aWZpZXIpOworICAgIHZvaWQgcmVnaXN0ZXJDb25uZWN0
aW9uKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJik7Cisg
ICAgdm9pZCB1bnJlZ2lzdGVyQ29ubmVjdGlvbihXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlE
QkRhdGFiYXNlQ29ubmVjdGlvbiYpOworICAgIFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURC
RGF0YWJhc2VDb25uZWN0aW9uKiBnZXRDb25uZWN0aW9uKHVpbnQ2NF90IGlkZW50aWZpZXIpOwor
ICAgIHZvaWQgcmVnaXN0ZXJUcmFuc2FjdGlvbihXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlE
QkRhdGFiYXNlVHJhbnNhY3Rpb24mKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJUcmFuc2FjdGlvbihX
ZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mKTsKKyAgICBX
ZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24qIGdldFRyYW5z
YWN0aW9uKFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllcik7CisKK3ByaXZhdGU6CisgICAg
SGFzaE1hcDxXZWJDb3JlOjpJREJDb25uZWN0aW9uSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRy
PElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ+PiBtX2Nvbm5lY3Rpb25zVG9DbGllbnQ7Cisg
ICAgSGFzaE1hcDx1aW50NjRfdCwgV2Vha1B0cjxXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlE
QkRhdGFiYXNlQ29ubmVjdGlvbj4+IG1fY29ubmVjdGlvbnM7CisgICAgSGFzaE1hcDxXZWJDb3Jl
OjpJREJSZXNvdXJjZUlkZW50aWZpZXIsIFdlYWtQdHI8V2ViQ29yZTo6SURCU2VydmVyOjpVbmlx
dWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uPj4gbV90cmFuc2FjdGlvbnM7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmNwcAppbmRleCBlMjE4MTFl
NzYyODUuLjYxNWJhYzllY2FjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAKQEAgLTMw
LDYgKzMwLDkgQEAKICNpbmNsdWRlICJGaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIuaCIKICNpbmNs
dWRlICJMb2NhbFN0b3JhZ2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1
ZGUgIklEQlN0b3JhZ2VNYW5hZ2VyLmgiCisjaW5jbHVkZSAiSURCU3RvcmFnZVJlZ2lzdHJ5Lmgi
CisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTmV0
d29ya1N0b3JhZ2VNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJPcmlnaW5TdG9yYWdlTWFu
YWdlci5oIgogI2luY2x1ZGUgIlNlc3Npb25TdG9yYWdlTWFuYWdlci5oIgpAQCAtMzgsNiArNDEs
OCBAQAogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhUmVnaXN0cnkuaCIKICNpbmNsdWRlICJXZWJzaXRl
RGF0YVR5cGUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmg+CiAjaW5jbHVkZSA8cGFsL2Ny
eXB0by9DcnlwdG9EaWdlc3QuaD4KICNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KICNpbmNsdWRlIDx3
dGYvU3VzcGVuZGFibGVXb3JrUXVldWUuaD4KQEAgLTQ2LDYgKzUxLDkgQEAKIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKK2NvbnN0ZXhwciB1bnNpZ25lZCBkZWZhdWx0UXVvdGEgPSAxMDAwICogTUI7
Citjb25zdGV4cHIgdW5zaWduZWQgZGVmYXVsdFRoaXJkUGFydHlRdW90YSA9IDEwMCAqIE1COwor
CiBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpDbGllbnRPcmlnaW4+IHJlYWRPcmlnaW5G
cm9tRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6
aXNNYWluKCkpOwpAQCAtMTAwLDIyICsxMDgsMjggQEAgc3RhdGljIHZvaWQgZGVsZXRlT3JpZ2lu
RmlsZUlmTmVjZXNzYXJ5KGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiAgICAgICAgIEZpbGVTeXN0
ZW06OmRlbGV0ZUZpbGUoZmlsZVBhdGgpOwogfQogCi1SZWY8TmV0d29ya1N0b3JhZ2VNYW5hZ2Vy
PiBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21Mb2NhbFN0b3JhZ2VQYXRo
KQorUmVmPE5ldHdvcmtTdG9yYWdlTWFuYWdlcj4gTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjcmVh
dGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGNv
bm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21Mb2NhbFN0
b3JhZ2VQYXRoLCBjb25zdCBTdHJpbmcmIGN1c3RvbUlEQlN0b3JhZ2VQYXRoKQogewotICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IE5ldHdvcmtTdG9yYWdlTWFuYWdlcihzZXNzaW9uSUQsIHBhdGgs
IGN1c3RvbUxvY2FsU3RvcmFnZVBhdGgpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXR3
b3JrU3RvcmFnZU1hbmFnZXIoc2Vzc2lvbklELCBjb25uZWN0aW9uLCBwYXRoLCBjdXN0b21Mb2Nh
bFN0b3JhZ2VQYXRoLCBjdXN0b21JREJTdG9yYWdlUGF0aCkpOwogfQogCi1OZXR3b3JrU3RvcmFn
ZU1hbmFnZXI6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21Mb2NhbFN0b3JhZ2VQYXRo
KQorTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXIoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGNvbm5lY3Rpb24sIGNv
bnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21Mb2NhbFN0b3JhZ2VQYXRoLCBj
b25zdCBTdHJpbmcmIGN1c3RvbUlEQlN0b3JhZ2VQYXRoKQogICAgIDogbV9zZXNzaW9uSUQoc2Vz
c2lvbklEKQogICAgICwgbV9xdWV1ZShTdXNwZW5kYWJsZVdvcmtRdWV1ZTo6Y3JlYXRlKCJjb20u
YXBwbGUuV2ViS2l0LlN0b3JhZ2UiKSkKKyAgICAsIG1fZGVmYXVsdFF1b3RhKGRlZmF1bHRRdW90
YSkKKyAgICAsIG1fZGVmYXVsdFRoaXJkUGFydHlRdW90YShkZWZhdWx0VGhpcmRQYXJ0eVF1b3Rh
KQorICAgICwgbV9wYXJlbnRDb25uZWN0aW9uKGNvbm5lY3Rpb24pCiB7CisgICAgV1RGTG9nQWx3
YXlzKCJzaWh1aWw6IFslcF1OZXR3b3JrU3RvcmFnZU1hbmFnZXI6Ok5ldHdvcmtTdG9yYWdlTWFu
YWdlciBtX2RlZmF1bHRRdW90YVslbGx1XSBtX2N1c3RvbUlEQlN0b3JhZ2VQYXRoWyVzXSIsIHRo
aXMsIG1fZGVmYXVsdFF1b3RhLCBtX2N1c3RvbUlEQlN0b3JhZ2VQYXRoLnV0ZjgoKS5kYXRhKCkp
OwogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBtX3F1ZXVlLT5kaXNwYXRj
aChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHBhdGggPSBwYXRoLmlzb2xh
dGVkQ29weSgpLCBjdXN0b21Mb2NhbFN0b3JhZ2VQYXRoID0gY3Jvc3NUaHJlYWRDb3B5KGN1c3Rv
bUxvY2FsU3RvcmFnZVBhdGgpXSgpIG11dGFibGUgeworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgcGF0aCA9IHBhdGguaXNvbGF0ZWRD
b3B5KCksIGN1c3RvbUxvY2FsU3RvcmFnZVBhdGggPSBjcm9zc1RocmVhZENvcHkoY3VzdG9tTG9j
YWxTdG9yYWdlUGF0aCksIGN1c3RvbUlEQlN0b3JhZ2VQYXRoID0gY3Jvc3NUaHJlYWRDb3B5KGN1
c3RvbUlEQlN0b3JhZ2VQYXRoKV0oKSBtdXRhYmxlIHsKICAgICAgICAgbV9maWxlU3lzdGVtU3Rv
cmFnZUhhbmRsZVJlZ2lzdHJ5ID0gbWFrZVVuaXF1ZTxGaWxlU3lzdGVtU3RvcmFnZUhhbmRsZVJl
Z2lzdHJ5PigpOwogICAgICAgICBtX3N0b3JhZ2VBcmVhUmVnaXN0cnkgPSBtYWtlVW5pcXVlPFN0
b3JhZ2VBcmVhUmVnaXN0cnk+KCk7CisgICAgICAgIG1faWRiU3RvcmFnZVJlZ2lzdHJ5ID0gbWFr
ZVVuaXF1ZTxJREJTdG9yYWdlUmVnaXN0cnk+KCk7CiAgICAgICAgIG1fcGF0aCA9IHBhdGg7CiAg
ICAgICAgIG1fY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCA9IGN1c3RvbUxvY2FsU3RvcmFnZVBhdGg7
CisgICAgICAgIG1fY3VzdG9tSURCU3RvcmFnZVBhdGggPSBjdXN0b21JREJTdG9yYWdlUGF0aDsK
ICAgICAgICAgaWYgKCFtX3BhdGguaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBhdXRvIHNhbHRQ
YXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fcGF0aCwgInNhbHQi
KTsKICAgICAgICAgICAgIG1fc2FsdCA9IEZpbGVTeXN0ZW06OnJlYWRPck1ha2VTYWx0KHNhbHRQ
YXRoKS52YWx1ZV9vcihGaWxlU3lzdGVtOjpTYWx0KCkpOwpAQCAtMTMxLDcgKzE0NSwxMCBAQCBO
ZXR3b3JrU3RvcmFnZU1hbmFnZXI6On5OZXR3b3JrU3RvcmFnZU1hbmFnZXIoKQogCiBib29sIE5l
dHdvcmtTdG9yYWdlTWFuYWdlcjo6Y2FuSGFuZGxlVHlwZXMoT3B0aW9uU2V0PFdlYnNpdGVEYXRh
VHlwZT4gdHlwZXMpCiB7Ci0gICAgcmV0dXJuIHR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlw
ZTo6TG9jYWxTdG9yYWdlKSB8fCB0eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlNlc3Np
b25TdG9yYWdlKSB8fCB0eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkZpbGVTeXN0ZW0p
OworICAgIHJldHVybiB0eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkxvY2FsU3RvcmFn
ZSkKKyAgICAgICAgfHwgdHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpTZXNzaW9uU3Rv
cmFnZSkKKyAgICAgICAgfHwgdHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpGaWxlU3lz
dGVtKQorICAgICAgICB8fCB0eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWRE
QkRhdGFiYXNlcyk7CiB9CiAKIHZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjbG9zZSgpCkBA
IC0yMDksOSArMjI2LDE1IEBAIE9yaWdpblN0b3JhZ2VNYW5hZ2VyJiBOZXR3b3JrU3RvcmFnZU1h
bmFnZXI6OmxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIoY29uc3QgV2ViCiAgICAgQVNTRVJUKCFS
dW5Mb29wOjppc01haW4oKSk7CiAKICAgICByZXR1cm4gKm1fbG9jYWxPcmlnaW5TdG9yYWdlTWFu
YWdlcnMuZW5zdXJlKG9yaWdpbiwgWyZdIHsKKyAgICAgICAgdWludDY0X3QgcXVvdGEgPSBvcmln
aW4udG9wT3JpZ2luID09IG9yaWdpbi5jbGllbnRPcmlnaW4gPyBtX2RlZmF1bHRRdW90YSA6IG1f
ZGVmYXVsdFRoaXJkUGFydHlRdW90YTsKKyAgICAgICAgUXVvdGFNYW5hZ2VyOjpJbmNyZWFzZVF1
b3RhRnVuY3Rpb24gaW5jcmVhc2VRdW90YUZ1bmN0aW9uID0gW3Nlc3Npb25JRCA9IG1fc2Vzc2lv
bklELCBvcmlnaW4sIGNvbm5lY3Rpb24gPSBtX3BhcmVudENvbm5lY3Rpb25dIChhdXRvIGlkZW50
aWZpZXIsIGF1dG8gY3VycmVudFF1b3RhLCBhdXRvIGN1cnJlbnRVc2FnZSwgYXV0byByZXF1ZXN0
ZWRJbmNyZWFzZSkgbXV0YWJsZSB7CisgICAgICAgICAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQo
Y29ubmVjdGlvbiwgTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkluY3JlYXNlUXVvdGEo
c2Vzc2lvbklELCBvcmlnaW4sIGlkZW50aWZpZXIsIGN1cnJlbnRRdW90YSwgY3VycmVudFVzYWdl
LCByZXF1ZXN0ZWRJbmNyZWFzZSksIDApOworICAgICAgICB9OwogICAgICAgICBhdXRvIG9yaWdp
bkRpcmVjdG9yeSA9IG9yaWdpbkRpcmVjdG9yeVBhdGgobV9wYXRoLCBvcmlnaW4sIG1fc2FsdCk7
CiAgICAgICAgIHdyaXRlT3JpZ2luVG9GaWxlSWZOZWNlc3Nhcnkob3JpZ2luRmlsZVBhdGgob3Jp
Z2luRGlyZWN0b3J5KSwgb3JpZ2luKTsKLSAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8T3JpZ2lu
U3RvcmFnZU1hbmFnZXI+KFdURk1vdmUob3JpZ2luRGlyZWN0b3J5KSwgTG9jYWxTdG9yYWdlTWFu
YWdlcjo6bG9jYWxTdG9yYWdlRmlsZVBhdGgobV9jdXN0b21Mb2NhbFN0b3JhZ2VQYXRoLCBvcmln
aW4pKTsKKyAgICAgICAgYXV0byBsb2NhbFN0b3JhZ2VQYXRoID0gTG9jYWxTdG9yYWdlTWFuYWdl
cjo6bG9jYWxTdG9yYWdlRmlsZVBhdGgobV9jdXN0b21Mb2NhbFN0b3JhZ2VQYXRoLCBvcmlnaW4p
OworICAgICAgICBhdXRvIGlkYlN0b3JhZ2VQYXRoID0gSURCU3RvcmFnZU1hbmFnZXI6OmlkYlN0
b3JhZ2VPcmlnaW5EaXJlY3RvcnkobV9jdXN0b21JREJTdG9yYWdlUGF0aCwgb3JpZ2luKTsKKyAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8T3JpZ2luU3RvcmFnZU1hbmFnZXI+KHF1b3RhLCBXVEZN
b3ZlKGluY3JlYXNlUXVvdGFGdW5jdGlvbiksIFdURk1vdmUob3JpZ2luRGlyZWN0b3J5KSwgV1RG
TW92ZShsb2NhbFN0b3JhZ2VQYXRoKSwgV1RGTW92ZShpZGJTdG9yYWdlUGF0aCkpOwogICAgIH0p
Lml0ZXJhdG9yLT52YWx1ZTsKIH0KIApAQCAtMjcxLDYgKzI5NCwxMiBAQCB2b2lkIE5ldHdvcmtT
dG9yYWdlTWFuYWdlcjo6Y2xlYXJTdG9yYWdlRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgYwogICAgIH0pOwogfQogCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGlk
SW5jcmVhc2VRdW90YShjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgUXVvdGFJ
bmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0
X3Q+IG5ld1F1b3RhKQoreworICAgIGlmIChhdXRvIG1hbmFnZXIgPSBtX2xvY2FsT3JpZ2luU3Rv
cmFnZU1hbmFnZXJzLmdldChvcmlnaW4pKQorICAgICAgICBtYW5hZ2VyLT5xdW90YU1hbmFnZXIo
KS5kaWRJbmNyZWFzZVF1b3RhKGlkZW50aWZpZXIsIG5ld1F1b3RhKTsKK30KKwogdm9pZCBOZXR3
b3JrU3RvcmFnZU1hbmFnZXI6OmZpbGVTeXN0ZW1HZXREaXJlY3RvcnkoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRp
ZmllciwgRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAtNDQxLDYgKzQ3MCw5IEBAIEhhc2hT
ZXQ8V2ViQ29yZTo6Q2xpZW50T3JpZ2luPiBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmdldEFsbE9y
aWdpbnMoKQogICAgIGZvciAoYXV0byYgb3JpZ2luIDogTG9jYWxTdG9yYWdlTWFuYWdlcjo6b3Jp
Z2luc09mTG9jYWxTdG9yYWdlRGF0YShtX2N1c3RvbUxvY2FsU3RvcmFnZVBhdGgpKQogICAgICAg
ICBhbGxPcmlnaW5zLmFkZChXZWJDb3JlOjpDbGllbnRPcmlnaW4geyBvcmlnaW4sIG9yaWdpbiB9
KTsKIAorICAgIGZvciAoYXV0byYgb3JpZ2luIDogSURCU3RvcmFnZU1hbmFnZXI6Om9yaWdpbnNP
ZklEQlN0b3JhZ2VEYXRhKG1fY3VzdG9tSURCU3RvcmFnZVBhdGgpKQorICAgICAgICBhbGxPcmln
aW5zLmFkZChvcmlnaW4pOworCiAgICAgcmV0dXJuIGFsbE9yaWdpbnM7CiB9CiAKQEAgLTU2OCwx
MiArNjAwLDEyIEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjptb3ZlRGF0YShjb25zdCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHNvdXJjZSwKICAgICAgICAgYXV0byB0YXJnZXRP
cmlnaW4gPSBXZWJDb3JlOjpDbGllbnRPcmlnaW4geyB0YXJnZXQsIHRhcmdldCB9OwogICAgICAg
ICAKICAgICAgICAgLy8gQ2xlYXIgZXhpc3RpbmcgZGF0YSBvZiB0YXJnZXQgb3JpZ2luLgotICAg
ICAgICBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB0eXBlcyA9IHsgV2Vic2l0ZURhdGFUeXBl
OjpGaWxlU3lzdGVtLCBXZWJzaXRlRGF0YVR5cGU6OkxvY2FsU3RvcmFnZSwgV2Vic2l0ZURhdGFU
eXBlOjpTZXNzaW9uU3RvcmFnZSAgfTsKKyAgICAgICAgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlw
ZT4gdHlwZXMgPSB7IFdlYnNpdGVEYXRhVHlwZTo6RmlsZVN5c3RlbSwgV2Vic2l0ZURhdGFUeXBl
OjpMb2NhbFN0b3JhZ2UsIFdlYnNpdGVEYXRhVHlwZTo6U2Vzc2lvblN0b3JhZ2UsIFdlYnNpdGVE
YXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzICB9OwogICAgICAgICBsb2NhbE9yaWdpblN0b3Jh
Z2VNYW5hZ2VyKHRhcmdldE9yaWdpbikuZGVsZXRlRGF0YSh0eXBlcywgLVdhbGxUaW1lOjppbmZp
bml0eSgpKTsKICAgICAgICAgcmVtb3ZlT3JpZ2luU3RvcmFnZU1hbmFnZXJJZlBvc3NpYmxlKHRh
cmdldE9yaWdpbik7CiAKICAgICAgICAgLy8gTW92ZSBkYXRhIGZyb20gc291cmNlIG9yaWdpbiB0
byB0YXJnZXQgb3JpZ2luLgotICAgICAgICBsb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2VyKHNvdXJj
ZU9yaWdpbikubW92ZURhdGEob3JpZ2luRGlyZWN0b3J5UGF0aChtX3BhdGgsIHRhcmdldE9yaWdp
biwgbV9zYWx0KSwgTG9jYWxTdG9yYWdlTWFuYWdlcjo6bG9jYWxTdG9yYWdlRmlsZVBhdGgobV9j
dXN0b21Mb2NhbFN0b3JhZ2VQYXRoLCB0YXJnZXRPcmlnaW4pKTsKKyAgICAgICAgbG9jYWxPcmln
aW5TdG9yYWdlTWFuYWdlcihzb3VyY2VPcmlnaW4pLm1vdmVEYXRhKG9yaWdpbkRpcmVjdG9yeVBh
dGgobV9wYXRoLCB0YXJnZXRPcmlnaW4sIG1fc2FsdCksIExvY2FsU3RvcmFnZU1hbmFnZXI6Omxv
Y2FsU3RvcmFnZUZpbGVQYXRoKG1fY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCwgdGFyZ2V0T3JpZ2lu
KSwgSURCU3RvcmFnZU1hbmFnZXI6OmlkYlN0b3JhZ2VPcmlnaW5EaXJlY3RvcnkobV9jdXN0b21J
REJTdG9yYWdlUGF0aCwgdGFyZ2V0T3JpZ2luKSk7CiAgICAgICAgIHJlbW92ZU9yaWdpblN0b3Jh
Z2VNYW5hZ2VySWZQb3NzaWJsZShzb3VyY2VPcmlnaW4pOwogCiAgICAgICAgIFJ1bkxvb3A6Om1h
aW4oKS5kaXNwYXRjaChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CkBAIC01ODgsNiArNjIw
LDggQEAgdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnN1c3BlbmQoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGUKICAgICAgICAgZm9yIChhdXRvJiBtYW5hZ2Vy
IDogbV9sb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2Vycy52YWx1ZXMoKSkgewogICAgICAgICAgICAg
aWYgKGF1dG8gbG9jYWxTdG9yYWdlTWFuYWdlciA9IG1hbmFnZXItPmV4aXN0aW5nTG9jYWxTdG9y
YWdlTWFuYWdlcigpKQogICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZU1hbmFnZXItPnN5bmNM
b2NhbFN0b3JhZ2UoKTsKKyAgICAgICAgICAgIGlmIChhdXRvIGlkYlN0b3JhZ2VNYW5hZ2VyID0g
bWFuYWdlci0+ZXhpc3RpbmdJREJTdG9yYWdlTWFuYWdlcigpKQorICAgICAgICAgICAgICAgIGlk
YlN0b3JhZ2VNYW5hZ2VyLT5zdG9wRGF0YWJhc2VBY3Rpdml0aWVzRm9yU3VzcGVuZCgpOwogICAg
ICAgICB9CiAgICAgfSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQpAQCAtNjI1LDYg
KzY1OSwxNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6c3luY0xvY2FsU3RvcmFnZShD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldAogICAgIH0pOwogfQogCit2b2lkIE5l
dHdvcmtTdG9yYWdlTWFuYWdlcjo6cmVnaXN0ZXJUZW1wb3JhcnlCbG9iRmlsZVBhdGhzKElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVQYXRocykK
K3sKKyAgICBXVEZMb2dBbHdheXMoInNpaHVpbDogWyVwXU5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6
cmVnaXN0ZXJUZW1wb3JhcnlCbG9iRmlsZVBhdGhzIGNvbm5lY3Rpb25JRFslbGx1XSwgZmlsZVBh
dGhzWyV6dV0iLCB0aGlzLCBjb25uZWN0aW9uLnVuaXF1ZUlEKCkudG9VSW50NjQoKSwgZmlsZVBh
dGhzLnNpemUoKSk7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIG1fcXVl
dWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY29ubmVj
dGlvbklEID0gY29ubmVjdGlvbi51bmlxdWVJRCgpLCBmaWxlUGF0aHMgPSBjcm9zc1RocmVhZENv
cHkoZmlsZVBhdGhzKV0geworICAgICAgICBhdXRvJiB0ZW1wb3JhcnlCbG9iUGF0aHMgPSBtX3Rl
bXBvcmFyeUJsb2JQYXRoc0J5Q29ubmVjdGlvbi5lbnN1cmUoY29ubmVjdGlvbklELCBbXSB7IHJl
dHVybiBIYXNoU2V0PFN0cmluZz4geyB9OyB9KS5pdGVyYXRvci0+dmFsdWU7CisgICAgICAgIHRl
bXBvcmFyeUJsb2JQYXRocy5hZGQoZmlsZVBhdGhzLmJlZ2luKCksIGZpbGVQYXRocy5lbmQoKSk7
CisgICAgfSk7Cit9CisKIHZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjb25uZWN0VG9Mb2Nh
bFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU3RvcmFnZU5hbWVzcGFj
ZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIHRvcE9yaWdpbiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQXJlYUlkZW50aWZpZXIpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAtNzEzLDUgKzc1
OCwyMTcgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNsZWFyKElQQzo6Q29ubmVjdGlv
biYgY29ubmVjdGlvbiwgU3RvcmFnZUFyZWFJZGVudGkKICAgICBjb25uZWN0aW9uLnNlbmQoTWVz
c2FnZXM6OlN0b3JhZ2VBcmVhTWFwOjpEaWRDbGVhcihzdG9yYWdlTWFwU2VlZCksIGlkZW50aWZp
ZXIpOwogfQogCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6b3BlbkRhdGFiYXNlKElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJl
cXVlc3REYXRhKQoreworICAgIFdURkxvZ0Fsd2F5cygic2lodWlsOiBbJXBdTmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyOjpvcGVuRGF0YWJhc2Ugb3JpZ2luWyVzLSVzXSwgbmFtZVslc10iLCB0aGlzLCBy
ZXF1ZXN0RGF0YS5kYXRhYmFzZUlkZW50aWZpZXIoKS5vcmlnaW4oKS50b3BPcmlnaW4udG9TdHJp
bmcoKS51dGY4KCkuZGF0YSgpLCByZXF1ZXN0RGF0YS5kYXRhYmFzZUlkZW50aWZpZXIoKS5vcmln
aW4oKS5jbGllbnRPcmlnaW4udG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpLCByZXF1ZXN0RGF0YS5k
YXRhYmFzZUlkZW50aWZpZXIoKS5kYXRhYmFzZU5hbWUoKS51dGY4KCkuZGF0YSgpKTsKKworICAg
IGF1dG8mIGNvbm5lY3Rpb25Ub0NsaWVudCA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT5nZXRPckNy
ZWF0ZUNvbm5lY3Rpb25Ub0NsaWVudChjb25uZWN0aW9uLnVuaXF1ZUlEKCksIHJlcXVlc3REYXRh
LnJlcXVlc3RJZGVudGlmaWVyKCkuY29ubmVjdGlvbklkZW50aWZpZXIoKSk7CisgICAgbG9jYWxP
cmlnaW5TdG9yYWdlTWFuYWdlcihyZXF1ZXN0RGF0YS5kYXRhYmFzZUlkZW50aWZpZXIoKS5vcmln
aW4oKSkuaWRiU3RvcmFnZU1hbmFnZXIoKm1faWRiU3RvcmFnZVJlZ2lzdHJ5KS5vcGVuRGF0YWJh
c2UoY29ubmVjdGlvblRvQ2xpZW50LCByZXF1ZXN0RGF0YSk7Cit9CisKK3ZvaWQgTmV0d29ya1N0
b3JhZ2VNYW5hZ2VyOjpvcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKGNvbnN0IFdlYkNvcmU6OklEQlJl
cXVlc3REYXRhJiByZXF1ZXN0RGF0YSkKK3sKKyAgICBXVEZMb2dBbHdheXMoInNpaHVpbDogWyVw
XU5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6b3BlbkRCUmVxdWVzdENhbmNlbGxlZCBvcmlnaW5bJXMt
JXNdLCBuYW1lWyVzXSIsIHRoaXMsIHJlcXVlc3REYXRhLmRhdGFiYXNlSWRlbnRpZmllcigpLm9y
aWdpbigpLnRvcE9yaWdpbi50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIHJlcXVlc3REYXRhLmRh
dGFiYXNlSWRlbnRpZmllcigpLm9yaWdpbigpLmNsaWVudE9yaWdpbi50b1N0cmluZygpLnV0Zjgo
KS5kYXRhKCksIHJlcXVlc3REYXRhLmRhdGFiYXNlSWRlbnRpZmllcigpLmRhdGFiYXNlTmFtZSgp
LnV0ZjgoKS5kYXRhKCkpOworCisgICAgbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcihyZXF1ZXN0
RGF0YS5kYXRhYmFzZUlkZW50aWZpZXIoKS5vcmlnaW4oKSkuaWRiU3RvcmFnZU1hbmFnZXIoKm1f
aWRiU3RvcmFnZVJlZ2lzdHJ5KS5vcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKHJlcXVlc3REYXRhKTsK
K30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmRlbGV0ZURhdGFiYXNlKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVl
c3REYXRhKQoreworICAgIFdURkxvZ0Fsd2F5cygic2lodWlsOiBbJXBdTmV0d29ya1N0b3JhZ2VN
YW5hZ2VyOjpkZWxldGVEYXRhYmFzZSBvcmlnaW5bJXMtJXNdLCBuYW1lWyVzXSIsIHRoaXMsIHJl
cXVlc3REYXRhLmRhdGFiYXNlSWRlbnRpZmllcigpLm9yaWdpbigpLnRvcE9yaWdpbi50b1N0cmlu
ZygpLnV0ZjgoKS5kYXRhKCksIHJlcXVlc3REYXRhLmRhdGFiYXNlSWRlbnRpZmllcigpLm9yaWdp
bigpLmNsaWVudE9yaWdpbi50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIHJlcXVlc3REYXRhLmRh
dGFiYXNlSWRlbnRpZmllcigpLmRhdGFiYXNlTmFtZSgpLnV0ZjgoKS5kYXRhKCkpOworCisgICAg
YXV0byYgY29ubmVjdGlvblRvQ2xpZW50ID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPmdldE9yQ3Jl
YXRlQ29ubmVjdGlvblRvQ2xpZW50KGNvbm5lY3Rpb24udW5pcXVlSUQoKSwgcmVxdWVzdERhdGEu
cmVxdWVzdElkZW50aWZpZXIoKS5jb25uZWN0aW9uSWRlbnRpZmllcigpKTsKKyAgICBsb2NhbE9y
aWdpblN0b3JhZ2VNYW5hZ2VyKHJlcXVlc3REYXRhLmRhdGFiYXNlSWRlbnRpZmllcigpLm9yaWdp
bigpKS5pZGJTdG9yYWdlTWFuYWdlcigqbV9pZGJTdG9yYWdlUmVnaXN0cnkpLmRlbGV0ZURhdGFi
YXNlKGNvbm5lY3Rpb25Ub0NsaWVudCwgcmVxdWVzdERhdGEpOworfQorCit2b2lkIE5ldHdvcmtT
dG9yYWdlTWFuYWdlcjo6ZXN0YWJsaXNoVHJhbnNhY3Rpb24odWludDY0X3QgZGF0YWJhc2VDb25u
ZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25JbmZvJiB0cmFu
c2FjdGlvbkluZm8pCit7CisgICAgV1RGTG9nQWx3YXlzKCJzaWh1aWw6IFslcF1OZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6OmVzdGFibGlzaFRyYW5zYWN0aW9uIGRhdGFiYXNlQ29ubmVjdGlvbklkZW50
aWZpZXJbJWxsdV0iLCB0aGlzLCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKTsKKworICAg
IGlmIChhdXRvIGNvbm5lY3Rpb24gPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+Z2V0Q29ubmVjdGlv
bihkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKSkKKyAgICAgICAgY29ubmVjdGlvbi0+ZXN0
YWJsaXNoVHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JbmZvKTsKK30KKwordm9pZCBOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6OmRhdGFiYXNlQ29ubmVjdGlvblBlbmRpbmdDbG9zZSh1aW50NjRfdCBkYXRh
YmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKQoreworICAgIFdURkxvZ0Fsd2F5cygic2lodWlsOiBb
JXBdTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkYXRhYmFzZUNvbm5lY3Rpb25QZW5kaW5nQ2xvc2Ug
ZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllclslbGx1XSIsIHRoaXMsIGRhdGFiYXNlQ29ubmVj
dGlvbklkZW50aWZpZXIpOworCisgICAgaWYgKGF1dG8gY29ubmVjdGlvbiA9IG1faWRiU3RvcmFn
ZVJlZ2lzdHJ5LT5nZXRDb25uZWN0aW9uKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpKQor
ICAgICAgICBjb25uZWN0aW9uLT5jb25uZWN0aW9uUGVuZGluZ0Nsb3NlRnJvbUNsaWVudCgpOwor
fQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGF0YWJhc2VDb25uZWN0aW9uQ2xvc2Vk
KHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpCit7CisgICAgV1RGTG9nQWx3
YXlzKCJzaWh1aWw6IFslcF1OZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmRhdGFiYXNlQ29ubmVjdGlv
bkNsb3NlZCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyWyVsbHVdIiwgdGhpcywgZGF0YWJh
c2VDb25uZWN0aW9uSWRlbnRpZmllcik7CisKKyAgICBpZiAoYXV0byBjb25uZWN0aW9uID0gbV9p
ZGJTdG9yYWdlUmVnaXN0cnktPmdldENvbm5lY3Rpb24oZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRp
ZmllcikpCisgICAgICAgIGNvbm5lY3Rpb24tPmNvbm5lY3Rpb25DbG9zZWRGcm9tQ2xpZW50KCk7
Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjphYm9ydE9wZW5BbmRVcGdyYWRlTmVl
ZGVkKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6
OklEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKQoreworICAgIFdU
RkxvZ0Fsd2F5cygic2lodWlsOiBbJXBdTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkYXRhYmFzZUNv
bm5lY3Rpb25DbG9zZWQgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllclslbGx1XSB0cmFuc2Fj
dGlvbklkZW50aWZpZXJbJXNdIiwgdGhpcywgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwg
dHJhbnNhY3Rpb25JZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKwor
ICAgIGlmIChhdXRvIHRyYW5zYWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPmdldFRyYW5z
YWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllcikpCisgICAgICAgIHRyYW5zYWN0aW9uLT5hYm9y
dFdpdGhvdXRDYWxsYmFjaygpOworCisgICAgaWYgKGF1dG8gY29ubmVjdGlvbiA9IG1faWRiU3Rv
cmFnZVJlZ2lzdHJ5LT5nZXRDb25uZWN0aW9uKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIp
KQorICAgICAgICBjb25uZWN0aW9uLT5jb25uZWN0aW9uQ2xvc2VkRnJvbUNsaWVudCgpOworfQor
Cit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudCh1
aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJREJS
ZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJbmRl
eGVkREI6OkNvbm5lY3Rpb25DbG9zZWRPbkJlaGFsZk9mU2VydmVyIGNvbm5lY3Rpb25DbG9zZWQp
Cit7CisgICAgV1RGTG9nQWx3YXlzKCJzaWh1aWw6IFslcF1OZXR3b3JrU3RvcmFnZU1hbmFnZXI6
OmRpZEZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllclsl
bGx1XSByZXF1ZXN0SWRlbnRpZmllclslc10iLCB0aGlzLCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVu
dGlmaWVyLCByZXF1ZXN0SWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7
CisKKyAgICBpZiAoYXV0byBjb25uZWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPmdldENv
bm5lY3Rpb24oZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcikpCisgICAgICAgIGNvbm5lY3Rp
b24tPmRpZEZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQocmVxdWVzdElkZW50aWZpZXIsIGNvbm5lY3Rp
b25DbG9zZWQpOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6YWJvcnRUcmFuc2Fj
dGlvbihjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRl
bnRpZmllcikKK3sKKyAgICBXVEZMb2dBbHdheXMoInNpaHVpbDogWyVwXU5ldHdvcmtTdG9yYWdl
TWFuYWdlcjo6YWJvcnRUcmFuc2FjdGlvbiB0cmFuc2FjdGlvbklkZW50aWZpZXJbJXNdIiwgdGhp
cywgdHJhbnNhY3Rpb25JZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
KworICAgIGlmIChhdXRvIHRyYW5zYWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPmdldFRy
YW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllcikpCisgICAgICAgIHRyYW5zYWN0aW9uLT5h
Ym9ydCgpOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y29tbWl0VHJhbnNhY3Rp
b24oY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50
aWZpZXIsIHVpbnQ2NF90IHBlbmRpbmdSZXF1ZXN0Q291bnQpCit7CisgICAgV1RGTG9nQWx3YXlz
KCJzaWh1aWw6IFslcF1OZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNvbW1pdFRyYW5zYWN0aW9uIHRy
YW5zYWN0aW9uSWRlbnRpZmllclslc10iLCB0aGlzLCB0cmFuc2FjdGlvbklkZW50aWZpZXIubG9n
Z2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworCisgICAgaWYgKGF1dG8gdHJhbnNhY3Rpb24g
PSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+Z2V0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZGVudGlm
aWVyKSkKKyAgICAgICAgdHJhbnNhY3Rpb24tPmNvbW1pdChwZW5kaW5nUmVxdWVzdENvdW50KTsK
K30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmRpZEZpbmlzaEhhbmRsaW5nVmVyc2lv
bkNoYW5nZVRyYW5zYWN0aW9uKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIs
IGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlm
aWVyKQoreworICAgIFdURkxvZ0Fsd2F5cygic2lodWlsOiBbJXBdTmV0d29ya1N0b3JhZ2VNYW5h
Z2VyOjpkaWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbiBkYXRhYmFzZUNv
bm5lY3Rpb25JZGVudGlmaWVyWyVsbHVdIHRyYW5zYWN0aW9uSWRlbnRpZmllclslc10iLCB0aGlz
LCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCB0cmFuc2FjdGlvbklkZW50aWZpZXIubG9n
Z2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworCisgICAgaWYgKGF1dG8gY29ubmVjdGlvbiA9
IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT5nZXRDb25uZWN0aW9uKGRhdGFiYXNlQ29ubmVjdGlvbklk
ZW50aWZpZXIpKQorICAgICAgICBjb25uZWN0aW9uLT5kaWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25D
aGFuZ2UodHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1h
bmFnZXI6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiBy
ZXF1ZXN0RGF0YSwgY29uc3QgV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVJbmZvJiBvYmplY3RTdG9y
ZUluZm8pCit7CisgICAgaWYgKGF1dG8gdHJhbnNhY3Rpb24gPSBtX2lkYlN0b3JhZ2VSZWdpc3Ry
eS0+Z2V0VHJhbnNhY3Rpb24ocmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCkpKSB7
CisgICAgICAgIEFTU0VSVCh0cmFuc2FjdGlvbi0+aXNWZXJzaW9uQ2hhbmdlKCkpOworICAgICAg
ICB0cmFuc2FjdGlvbi0+Y3JlYXRlT2JqZWN0U3RvcmUocmVxdWVzdERhdGEsIG9iamVjdFN0b3Jl
SW5mbyk7CisgICAgfQorfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlT2Jq
ZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25z
dCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSkKK3sKKyAgICBpZiAoYXV0byB0cmFuc2FjdGlvbiA9
IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT5nZXRUcmFuc2FjdGlvbihyZXF1ZXN0RGF0YS50cmFuc2Fj
dGlvbklkZW50aWZpZXIoKSkpIHsKKyAgICAgICAgQVNTRVJUKHRyYW5zYWN0aW9uLT5pc1ZlcnNp
b25DaGFuZ2UoKSk7CisgICAgICAgIHRyYW5zYWN0aW9uLT5kZWxldGVPYmplY3RTdG9yZShyZXF1
ZXN0RGF0YSwgb2JqZWN0U3RvcmVOYW1lKTsKKyAgICB9Cit9CisKK3ZvaWQgTmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyOjpyZW5hbWVPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0
YSYgcmVxdWVzdERhdGEsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBuZXdOYW1lKQoreworICAgIGlmIChhdXRvIHRyYW5zYWN0aW9uID0gbV9pZGJTdG9yYWdl
UmVnaXN0cnktPmdldFRyYW5zYWN0aW9uKHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmll
cigpKSkgeworICAgICAgICBBU1NFUlQodHJhbnNhY3Rpb24tPmlzVmVyc2lvbkNoYW5nZSgpKTsK
KyAgICAgICAgdHJhbnNhY3Rpb24tPnJlbmFtZU9iamVjdFN0b3JlKHJlcXVlc3REYXRhLCBvYmpl
Y3RTdG9yZUlkZW50aWZpZXIsIG5ld05hbWUpOworICAgIH0KK30KKwordm9pZCBOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6OmNsZWFyT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERh
dGEmIHJlcXVlc3REYXRhLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIpCit7CisgICAg
aWYgKGF1dG8gdHJhbnNhY3Rpb24gPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+Z2V0VHJhbnNhY3Rp
b24ocmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCkpKQorICAgICAgICB0cmFuc2Fj
dGlvbi0+Y2xlYXJPYmplY3RTdG9yZShyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVy
KTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZUluZGV4KGNvbnN0IFdl
YkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgV2ViQ29yZTo6SURCSW5k
ZXhJbmZvJiBpbmRleEluZm8pCit7CisgICAgaWYgKGF1dG8gdHJhbnNhY3Rpb24gPSBtX2lkYlN0
b3JhZ2VSZWdpc3RyeS0+Z2V0VHJhbnNhY3Rpb24ocmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVu
dGlmaWVyKCkpKQorICAgICAgICB0cmFuc2FjdGlvbi0+Y3JlYXRlSW5kZXgocmVxdWVzdERhdGEs
IGluZGV4SW5mbyk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVJbmRl
eChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIHVpbnQ2NF90IG9i
amVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpbmRleE5hbWUpCit7CisgICAgaWYg
KGF1dG8gdHJhbnNhY3Rpb24gPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+Z2V0VHJhbnNhY3Rpb24o
cmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCkpKQorICAgICAgICB0cmFuc2FjdGlv
bi0+ZGVsZXRlSW5kZXgocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhO
YW1lKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnJlbmFtZUluZGV4KGNvbnN0
IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgdWludDY0X3Qgb2JqZWN0U3Rv
cmVJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRleElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3
TmFtZSkKK3sKKyAgICBpZiAoYXV0byB0cmFuc2FjdGlvbiA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5
LT5nZXRUcmFuc2FjdGlvbihyZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSkpCisg
ICAgICAgIHRyYW5zYWN0aW9uLT5yZW5hbWVJbmRleChyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJ
ZGVudGlmaWVyLCBpbmRleElkZW50aWZpZXIsIG5ld05hbWUpOworfQorCit2b2lkIE5ldHdvcmtT
dG9yYWdlTWFuYWdlcjo6cHV0T3JBZGQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25z
dCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IFdlYkNvcmU6OklE
QktleURhdGEmIGtleURhdGEsIGNvbnN0IFdlYkNvcmU6OklEQlZhbHVlJiB2YWx1ZSwgV2ViQ29y
ZTo6SW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUgb3ZlcndyaXRlTW9kZSkKK3sK
KyAgICBpZiAodmFsdWUuYmxvYlVSTHMoKS5zaXplKCkgIT0gdmFsdWUuYmxvYkZpbGVQYXRocygp
LnNpemUoKSkgeworICAgICAgICBSRUxFQVNFX0xPR19GQVVMVChJbmRleGVkREIsICJOZXR3b3Jr
U3RvcmFnZU1hbmFnZXI6OnB1dE9yQWRkOiBOdW1iZXIgb2YgYmxvYiBVUkxzIGRvZXNuJ3QgbWF0
Y2ggdGhlIG51bWJlciBvZiBibG9iIGZpbGUgcGF0aHMuIik7CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gVmFsaWRhdGUgdGVt
cG9yYXJ5IGJsb2IgcGF0aHMgaW4gfHZhbHVlfCB0byBtYWtlIHN1cmUgdGhleSBiZWxvbmcgdG8g
dGhlIHNvdXJjZSBwcm9jZXNzLgorICAgIGlmICghdmFsdWUuYmxvYkZpbGVQYXRocygpLmlzRW1w
dHkoKSkgeworICAgICAgICBhdXRvIGl0ID0gbV90ZW1wb3JhcnlCbG9iUGF0aHNCeUNvbm5lY3Rp
b24uZmluZChjb25uZWN0aW9uLnVuaXF1ZUlEKCkpOworICAgICAgICBpZiAoaXQgPT0gbV90ZW1w
b3JhcnlCbG9iUGF0aHNCeUNvbm5lY3Rpb24uZW5kKCkpIHsKKyAgICAgICAgICAgIFJFTEVBU0Vf
TE9HX0ZBVUxUKEluZGV4ZWREQiwgIk5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6cHV0T3JBZGQ6IElE
QlZhbHVlIGNvbnRhaW5zIGJsb2IgcGF0aHMgYnV0IG5vbmUgYXJlIGFsbG93ZWQgZm9yIHRoaXMg
cHJvY2VzcyIpOworICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBhdXRvJiB0ZW1wb3JhcnlCbG9iUGF0aHNG
b3JDb25uZWN0aW9uID0gaXQtPnZhbHVlOworICAgICAgICBmb3IgKGF1dG8mIGJsb2JGaWxlUGF0
aCA6IHZhbHVlLmJsb2JGaWxlUGF0aHMoKSkgeworICAgICAgICAgICAgaWYgKCF0ZW1wb3JhcnlC
bG9iUGF0aHNGb3JDb25uZWN0aW9uLnJlbW92ZShibG9iRmlsZVBhdGgpKSB7CisgICAgICAgICAg
ICAgICAgUkVMRUFTRV9MT0dfRkFVTFQoSW5kZXhlZERCLCAiTmV0d29ya1N0b3JhZ2VNYW5hZ2Vy
OjpwdXRPckFkZDogQmxvYiBwYXRoIHdhcyBub3QgY3JlYXRlZCBmb3IgdGhpcyBXZWJQcm9jZXNz
Iik7CisgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGF1
dG8gdHJhbnNhY3Rpb24gPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+Z2V0VHJhbnNhY3Rpb24ocmVx
dWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCkpKQorICAgICAgICB0cmFuc2FjdGlvbi0+
cHV0T3JBZGQocmVxdWVzdERhdGEsIGtleURhdGEsIHZhbHVlLCBvdmVyd3JpdGVNb2RlKTsKK30K
Kwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmdldFJlY29yZChjb25zdCBXZWJDb3JlOjpJ
REJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IFdlYkNvcmU6OklEQkdldFJlY29yZERh
dGEmIGdldFJlY29yZERhdGEpCit7CisgICAgaWYgKGF1dG8gdHJhbnNhY3Rpb24gPSBtX2lkYlN0
b3JhZ2VSZWdpc3RyeS0+Z2V0VHJhbnNhY3Rpb24ocmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVu
dGlmaWVyKCkpKQorICAgICAgICB0cmFuc2FjdGlvbi0+Z2V0UmVjb3JkKHJlcXVlc3REYXRhLCBn
ZXRSZWNvcmREYXRhKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmdldEFsbFJl
Y29yZHMoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBX
ZWJDb3JlOjpJREJHZXRBbGxSZWNvcmRzRGF0YSYgZ2V0QWxsUmVjb3Jkc0RhdGEpCit7CisgICAg
aWYgKGF1dG8gdHJhbnNhY3Rpb24gPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+Z2V0VHJhbnNhY3Rp
b24ocmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCkpKQorICAgICAgICB0cmFuc2Fj
dGlvbi0+Z2V0QWxsUmVjb3JkcyhyZXF1ZXN0RGF0YSwgZ2V0QWxsUmVjb3Jkc0RhdGEpOworfQor
Cit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Z2V0Q291bnQoY29uc3QgV2ViQ29yZTo6SURC
UmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBXZWJDb3JlOjpJREJLZXlSYW5nZURhdGEm
IGtleVJhbmdlRGF0YSkKK3sKKyAgICBpZiAoYXV0byB0cmFuc2FjdGlvbiA9IG1faWRiU3RvcmFn
ZVJlZ2lzdHJ5LT5nZXRUcmFuc2FjdGlvbihyZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZp
ZXIoKSkpCisgICAgICAgIHRyYW5zYWN0aW9uLT5nZXRDb3VudChyZXF1ZXN0RGF0YSwga2V5UmFu
Z2VEYXRhKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmRlbGV0ZVJlY29yZChj
b25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IFdlYkNvcmU6
OklEQktleVJhbmdlRGF0YSYga2V5UmFuZ2VEYXRhKQoreworICAgIGlmIChhdXRvIHRyYW5zYWN0
aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPmdldFRyYW5zYWN0aW9uKHJlcXVlc3REYXRhLnRy
YW5zYWN0aW9uSWRlbnRpZmllcigpKSkKKyAgICAgICAgdHJhbnNhY3Rpb24tPmRlbGV0ZVJlY29y
ZChyZXF1ZXN0RGF0YSwga2V5UmFuZ2VEYXRhKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1h
bmFnZXI6Om9wZW5DdXJzb3IoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3RE
YXRhLCBjb25zdCBXZWJDb3JlOjpJREJDdXJzb3JJbmZvJiBjdXJzb3JJbmZvKQoreworICAgIGlm
IChhdXRvIHRyYW5zYWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPmdldFRyYW5zYWN0aW9u
KHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpKSkKKyAgICAgICAgdHJhbnNhY3Rp
b24tPm9wZW5DdXJzb3IocmVxdWVzdERhdGEsIGN1cnNvckluZm8pOworfQorCit2b2lkIE5ldHdv
cmtTdG9yYWdlTWFuYWdlcjo6aXRlcmF0ZUN1cnNvcihjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0
RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IFdlYkNvcmU6OklEQkl0ZXJhdGVDdXJzb3JEYXRhJiBj
dXJzb3JEYXRhKQoreworICAgIGlmIChhdXRvIHRyYW5zYWN0aW9uID0gbV9pZGJTdG9yYWdlUmVn
aXN0cnktPmdldFRyYW5zYWN0aW9uKHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigp
KSkKKyAgICAgICAgdHJhbnNhY3Rpb24tPml0ZXJhdGVDdXJzb3IocmVxdWVzdERhdGEsIGN1cnNv
ckRhdGEpOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Z2V0QWxsRGF0YWJhc2VO
YW1lc0FuZFZlcnNpb25zKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgV2ViQ29y
ZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgV2ViQ29y
ZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4pCit7CisgICAgYXV0byYgY29ubmVjdGlvblRvQ2xpZW50
ID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPmdldE9yQ3JlYXRlQ29ubmVjdGlvblRvQ2xpZW50KGNv
bm5lY3Rpb24udW5pcXVlSUQoKSwgcmVxdWVzdElkZW50aWZpZXIuY29ubmVjdGlvbklkZW50aWZp
ZXIoKSk7CisgICAgYXV0byByZXN1bHQgPSBsb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2VyKG9yaWdp
bikuaWRiU3RvcmFnZU1hbmFnZXIoKm1faWRiU3RvcmFnZVJlZ2lzdHJ5KS5nZXRBbGxEYXRhYmFz
ZU5hbWVzQW5kVmVyc2lvbnMoKTsKKyAgICBjb25uZWN0aW9uVG9DbGllbnQuZGlkR2V0QWxsRGF0
YWJhc2VOYW1lc0FuZFZlcnNpb25zKHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKHJlc3VsdCkp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5oCmlu
ZGV4IGQyMWQ2NTZkM2E2Ny4uY2RmNDk4NDNjZmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5o
CkBAIC0zNSw2ICszNSw4IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9DbGllbnRPcmlnaW4uaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9GaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL0lEQlJlc291cmNlSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSW5k
ZXhlZERCLmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CiAKQEAgLTQzLDE3ICs0NSwzMCBAQCBjbGFzcyBTaGFyZWRGaWxlSGFuZGxlOwogfQog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBJREJDdXJzb3JJbmZvOworY2xhc3MgSURCS2V5
RGF0YTsKK2NsYXNzIElEQkluZGV4SW5mbzsKK2NsYXNzIElEQk9iamVjdFN0b3JlSW5mbzsKK2Ns
YXNzIElEQlJlcXVlc3REYXRhOworY2xhc3MgSURCVHJhbnNhY3Rpb25JbmZvOworY2xhc3MgSURC
VmFsdWU7CiBzdHJ1Y3QgQ2xpZW50T3JpZ2luOworc3RydWN0IElEQkdldEFsbFJlY29yZHNEYXRh
Oworc3RydWN0IElEQkdldFJlY29yZERhdGE7CitzdHJ1Y3QgSURCR2V0QWxsUmVjb3Jkc0RhdGE7
CitzdHJ1Y3QgSURCSXRlcmF0ZUN1cnNvckRhdGE7CitzdHJ1Y3QgSURCS2V5UmFuZ2VEYXRhOwog
fQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVS
ZWdpc3RyeTsKK2NsYXNzIElEQlN0b3JhZ2VSZWdpc3RyeTsKIGNsYXNzIFN0b3JhZ2VBcmVhUmVn
aXN0cnk7CiAKIGNsYXNzIE5ldHdvcmtTdG9yYWdlTWFuYWdlciBmaW5hbCA6IHB1YmxpYyBJUEM6
OkNvbm5lY3Rpb246OldvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxOZXR3b3JrU3RvcmFnZU1hbmFnZXI+IGNyZWF0ZShQQUw6OlNlc3Npb25JRCwgY29u
c3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGN1c3RvbUxvY2FsU3RvcmFnZVBhdGgpOwor
ICAgIHN0YXRpYyBSZWY8TmV0d29ya1N0b3JhZ2VNYW5hZ2VyPiBjcmVhdGUoUEFMOjpTZXNzaW9u
SUQsIElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3Qg
U3RyaW5nJiBjdXN0b21Mb2NhbFN0b3JhZ2VQYXRoLCBjb25zdCBTdHJpbmcmIGN1c3RvbUlEQlN0
b3JhZ2VQYXRoKTsKICAgICBzdGF0aWMgYm9vbCBjYW5IYW5kbGVUeXBlcyhPcHRpb25TZXQ8V2Vi
c2l0ZURhdGFUeXBlPik7CiAKICAgICB2b2lkIHN0YXJ0UmVjZWl2aW5nTWVzc2FnZUZyb21Db25u
ZWN0aW9uKElQQzo6Q29ubmVjdGlvbiYpOwpAQCAtNjIsNiArNzcsNyBAQCBwdWJsaWM6CiAgICAg
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0K
ICAgICB2b2lkIGNsb3NlKCk7CiAgICAgdm9pZCBjbGVhclN0b3JhZ2VGb3JUZXN0aW5nKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBkaWRJbmNyZWFzZVF1b3RhKGNvbnN0
IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllciwg
c3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbmV3UXVvdGEpOwogICAgIHZvaWQgZmV0Y2hEYXRhKE9w
dGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxX
ZWJzaXRlRGF0YTo6RW50cnk+JiYpPiYmKTsKICAgICB2b2lkIGRlbGV0ZURhdGEoT3B0aW9uU2V0
PFdlYnNpdGVEYXRhVHlwZT4sIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGE+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGRlbGV0ZURhdGFN
b2RpZmllZFNpbmNlKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBXYWxsVGltZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKQEAgLTcxLDE0ICs4NywxNCBAQCBwdWJsaWM6CiAgICAg
dm9pZCByZXN1bWUoKTsKICAgICB2b2lkIGhhbmRsZUxvd01lbW9yeVdhcm5pbmcoKTsKICAgICB2
b2lkIHN5bmNMb2NhbFN0b3JhZ2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2
b2lkIHJlZ2lzdGVyVGVtcG9yYXJ5QmxvYkZpbGVQYXRocyhJUEM6OkNvbm5lY3Rpb24mLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYpOwogCiBwcml2YXRlOgotICAgIE5ldHdvcmtTdG9yYWdlTWFuYWdl
cihQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGN1c3Rv
bUxvY2FsU3RvcmFnZVBhdGgpOworICAgIE5ldHdvcmtTdG9yYWdlTWFuYWdlcihQQUw6OlNlc3Np
b25JRCwgSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25z
dCBTdHJpbmcmIGN1c3RvbUxvY2FsU3RvcmFnZVBhdGgsIGNvbnN0IFN0cmluZyYgY3VzdG9tSURC
U3RvcmFnZVBhdGgpOwogICAgIH5OZXR3b3JrU3RvcmFnZU1hbmFnZXIoKTsKICAgICBPcmlnaW5T
dG9yYWdlTWFuYWdlciYgbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcihjb25zdCBXZWJDb3JlOjpD
bGllbnRPcmlnaW4mKTsKICAgICBib29sIHJlbW92ZU9yaWdpblN0b3JhZ2VNYW5hZ2VySWZQb3Nz
aWJsZShjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKICAgICB2b2lkIGRlbGV0ZU9yaWdp
bkRpcmVjdG9yeUlmUG9zc2libGUoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJik7Ci0gICAg
RmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeSYgZmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVS
ZWdpc3RyeSgpOwogCiAgICAgdm9pZCBmb3JFYWNoT3JpZ2luRGlyZWN0b3J5KGNvbnN0IEZ1bmN0
aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+Jik7CiAgICAgSGFzaFNldDxXZWJDb3JlOjpDbGllbnRP
cmlnaW4+IGdldEFsbE9yaWdpbnMoKTsKQEAgLTExOCw2ICsxMzQsMzQgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHJlbW92ZUl0ZW0oSVBDOjpDb25uZWN0aW9uJiwgU3RvcmFnZUFyZWFJZGVudGlmaWVy
LCBTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyLCB1aW50NjRfdCBzZWVkLCBTdHJpbmcmJiBrZXks
IFN0cmluZyYmIHVybFN0cmluZyk7CiAgICAgdm9pZCBjbGVhcihJUEM6OkNvbm5lY3Rpb24mLCBT
dG9yYWdlQXJlYUlkZW50aWZpZXIsIFN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXIsIHVpbnQ2NF90
IHNlZWQsIFN0cmluZyYmIHVybFN0cmluZyk7CiAKKyAgICAvLyBNZXNzYWdlIGhhbmRsZXJzIGZv
ciBJbmRleGVkREIuCisgICAgdm9pZCBvcGVuRGF0YWJhc2UoSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYpOworICAgIHZvaWQgb3BlbkRC
UmVxdWVzdENhbmNlbGxlZChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYpOworICAgIHZv
aWQgZGVsZXRlRGF0YWJhc2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBXZWJD
b3JlOjpJREJSZXF1ZXN0RGF0YSYpOworICAgIHZvaWQgZXN0YWJsaXNoVHJhbnNhY3Rpb24odWlu
dDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCVHJh
bnNhY3Rpb25JbmZvJik7CisgICAgdm9pZCBkYXRhYmFzZUNvbm5lY3Rpb25QZW5kaW5nQ2xvc2Uo
dWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcik7CisgICAgdm9pZCBkYXRhYmFz
ZUNvbm5lY3Rpb25DbG9zZWQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcik7
CisgICAgdm9pZCBhYm9ydE9wZW5BbmRVcGdyYWRlTmVlZGVkKHVpbnQ2NF90IGRhdGFiYXNlQ29u
bmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYg
dHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKKyAgICB2b2lkIGRpZEZpcmVWZXJzaW9uQ2hhbmdlRXZl
bnQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6
SURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6
SW5kZXhlZERCOjpDb25uZWN0aW9uQ2xvc2VkT25CZWhhbGZPZlNlcnZlcik7CisgICAgdm9pZCBh
Ym9ydFRyYW5zYWN0aW9uKGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYpOwor
ICAgIHZvaWQgY29tbWl0VHJhbnNhY3Rpb24oY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVu
dGlmaWVyJiwgdWludDY0X3QgcGVuZGluZ1JlcXVlc3RDb3VudCk7CisgICAgdm9pZCBkaWRGaW5p
c2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbih1aW50NjRfdCBkYXRhYmFzZUNvbm5l
Y3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImKTsK
KyAgICB2b2lkIGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRh
JiwgY29uc3QgV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVJbmZvJik7CisgICAgdm9pZCBkZWxldGVP
YmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IFN0cmluZyYg
b2JqZWN0U3RvcmVOYW1lKTsKKyAgICB2b2lkIHJlbmFtZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNv
cmU6OklEQlJlcXVlc3REYXRhJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIG5ld05hbWUpOworICAgIHZvaWQgY2xlYXJPYmplY3RTdG9yZShjb25zdCBXZWJD
b3JlOjpJREJSZXF1ZXN0RGF0YSYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllcik7Cisg
ICAgdm9pZCBjcmVhdGVJbmRleChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYsIGNvbnN0
IFdlYkNvcmU6OklEQkluZGV4SW5mbyYpOworICAgIHZvaWQgZGVsZXRlSW5kZXgoY29uc3QgV2Vi
Q29yZTo6SURCUmVxdWVzdERhdGEmLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgaW5kZXhOYW1lKTsKKyAgICB2b2lkIHJlbmFtZUluZGV4KGNvbnN0IFdlYkNv
cmU6OklEQlJlcXVlc3REYXRhJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50
NjRfdCBpbmRleElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSk7CisgICAgdm9pZCBw
dXRPckFkZChJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYs
IGNvbnN0IFdlYkNvcmU6OklEQktleURhdGEmLCBjb25zdCBXZWJDb3JlOjpJREJWYWx1ZSYsIFdl
YkNvcmU6OkluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlKTsKKyAgICB2b2lkIGdl
dFJlY29yZChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IFdlYkNvcmU6OklE
QkdldFJlY29yZERhdGEmKTsKKyAgICB2b2lkIGdldEFsbFJlY29yZHMoY29uc3QgV2ViQ29yZTo6
SURCUmVxdWVzdERhdGEmLCBjb25zdCBXZWJDb3JlOjpJREJHZXRBbGxSZWNvcmRzRGF0YSYpOwor
ICAgIHZvaWQgZ2V0Q291bnQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmLCBjb25zdCBX
ZWJDb3JlOjpJREJLZXlSYW5nZURhdGEmKTsKKyAgICB2b2lkIGRlbGV0ZVJlY29yZChjb25zdCBX
ZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IFdlYkNvcmU6OklEQktleVJhbmdlRGF0YSYp
OworICAgIHZvaWQgb3BlbkN1cnNvcihjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYsIGNv
bnN0IFdlYkNvcmU6OklEQkN1cnNvckluZm8mKTsKKyAgICB2b2lkIGl0ZXJhdGVDdXJzb3IoY29u
c3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmLCBjb25zdCBXZWJDb3JlOjpJREJJdGVyYXRlQ3Vy
c29yRGF0YSYpOworICAgIHZvaWQgZ2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKElQQzo6
Q29ubmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYsIGNvbnN0
IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYpOworICAgIAogICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vz
c2lvbklEOwogICAgIFJlZjxTdXNwZW5kYWJsZVdvcmtRdWV1ZT4gbV9xdWV1ZTsKICAgICBTdHJp
bmcgbV9wYXRoOwpAQCAtMTI3LDcgKzE3MSwxMyBAQCBwcml2YXRlOgogICAgIFdlYWtIYXNoU2V0
PElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uczsgLy8gTWFpbiB0aHJlYWQgb25seS4KICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8RmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeT4gbV9maWxl
U3lzdGVtU3RvcmFnZUhhbmRsZVJlZ2lzdHJ5OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTdG9yYWdl
QXJlYVJlZ2lzdHJ5PiBtX3N0b3JhZ2VBcmVhUmVnaXN0cnk7CisgICAgc3RkOjp1bmlxdWVfcHRy
PElEQlN0b3JhZ2VSZWdpc3RyeT4gbV9pZGJTdG9yYWdlUmVnaXN0cnk7CiAgICAgU3RyaW5nIG1f
Y3VzdG9tTG9jYWxTdG9yYWdlUGF0aDsKKyAgICBTdHJpbmcgbV9jdXN0b21JREJTdG9yYWdlUGF0
aDsKKyAgICB1aW50NjRfdCBtX2RlZmF1bHRRdW90YTsKKyAgICB1aW50NjRfdCBtX2RlZmF1bHRU
aGlyZFBhcnR5UXVvdGE7CisgICAgSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBtX3BhcmVudENv
bm5lY3Rpb247CisgICAgSGFzaE1hcDxJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBIYXNoU2V0
PFN0cmluZz4+IG1fdGVtcG9yYXJ5QmxvYlBhdGhzQnlDb25uZWN0aW9uOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5tZXNzYWdlcy5p
bgppbmRleCBhNTE2YWRhOTgzMmYuLjc4NDM2NzQ1ZTgwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0
b3JhZ2VNYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC00OSw0ICs0OSwzMSBAQAogICAgIFNldEl0ZW0o
V2ViS2l0OjpTdG9yYWdlQXJlYUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViS2l0OjpTdG9yYWdl
QXJlYUltcGxJZGVudGlmaWVyIGltcGxJZGVudGlmaWVyLCB1aW50NjRfdCBzdG9yYWdlTWFwU2Vl
ZCwgU3RyaW5nIGtleSwgU3RyaW5nIHZhbHVlLCBTdHJpbmcgdXJsU3RyaW5nKSBXYW50c0Nvbm5l
Y3Rpb24KICAgICBSZW1vdmVJdGVtKFdlYktpdDo6U3RvcmFnZUFyZWFJZGVudGlmaWVyIGlkZW50
aWZpZXIsIFdlYktpdDo6U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllciBpbXBsSWRlbnRpZmllciwg
dWludDY0X3Qgc3RvcmFnZU1hcFNlZWQsIFN0cmluZyBrZXksIFN0cmluZyB1cmxTdHJpbmcpIFdh
bnRzQ29ubmVjdGlvbgogICAgIENsZWFyKFdlYktpdDo6U3RvcmFnZUFyZWFJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIFdlYktpdDo6U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllciBpbXBsSWRlbnRpZmll
ciwgdWludDY0X3Qgc3RvcmFnZU1hcFNlZWQsIFN0cmluZyB1cmxTdHJpbmcpIFdhbnRzQ29ubmVj
dGlvbgorCisgICAgT3BlbkRhdGFiYXNlKFdlYkNvcmU6OklEQlJlcXVlc3REYXRhIHJlcXVlc3RE
YXRhKSBXYW50c0Nvbm5lY3Rpb24KKyAgICBPcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKFdlYkNvcmU6
OklEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhKQorICAgIERlbGV0ZURhdGFiYXNlKFdlYkNvcmU6
OklEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhKSBXYW50c0Nvbm5lY3Rpb24KKyAgICBFc3RhYmxp
c2hUcmFuc2FjdGlvbih1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJD
b3JlOjpJREJUcmFuc2FjdGlvbkluZm8gaW5mbykKKyAgICBEYXRhYmFzZUNvbm5lY3Rpb25QZW5k
aW5nQ2xvc2UodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcikKKyAgICBEYXRh
YmFzZUNvbm5lY3Rpb25DbG9zZWQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmll
cikKKyAgICBBYm9ydE9wZW5BbmRVcGdyYWRlTmVlZGVkKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVj
dGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciB0cmFuc2FjdGlv
bklkZW50aWZpZXIpCisgICAgRGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudCh1aW50NjRfdCBkYXRh
YmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXIg
cmVxdWVzdElkZW50aWZpZXIsIFdlYkNvcmU6OkluZGV4ZWREQjo6Q29ubmVjdGlvbkNsb3NlZE9u
QmVoYWxmT2ZTZXJ2ZXIgY29ubmVjdGlvbkNsb3NlZE9uQmVoYWxmT2ZTZXJ2ZXIpCisgICAgRGlk
RmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24odWludDY0X3QgZGF0YWJhc2VD
b25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyIHRyYW5z
YWN0aW9uSWRlbnRpZmllcikKKyAgICBBYm9ydFRyYW5zYWN0aW9uKFdlYkNvcmU6OklEQlJlc291
cmNlSWRlbnRpZmllciB0cmFuc2FjdGlvbklkZW50aWZpZXIpCisgICAgQ29tbWl0VHJhbnNhY3Rp
b24oV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyIHRyYW5zYWN0aW9uSWRlbnRpZmllciwg
dWludDY0X3QgcGVuZGluZ1JlcXVlc3RDb3VudCkKKyAgICBDcmVhdGVPYmplY3RTdG9yZShXZWJD
b3JlOjpJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YSwgV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVJ
bmZvIGluZm8pCisgICAgRGVsZXRlT2JqZWN0U3RvcmUoV2ViQ29yZTo6SURCUmVxdWVzdERhdGEg
cmVxdWVzdERhdGEsIFN0cmluZyBvYmplY3RTdG9yZU5hbWUpCisgICAgUmVuYW1lT2JqZWN0U3Rv
cmUoV2ViQ29yZTo6SURCUmVxdWVzdERhdGEgcmVxdWVzdERhdGEsIHVpbnQ2NF90IG9iamVjdFN0
b3JlSWRlbnRpZmllciwgU3RyaW5nIG5ld05hbWUpCisgICAgQ2xlYXJPYmplY3RTdG9yZShXZWJD
b3JlOjpJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YSwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVu
dGlmaWVyKQorICAgIENyZWF0ZUluZGV4KFdlYkNvcmU6OklEQlJlcXVlc3REYXRhIHJlcXVlc3RE
YXRhLCBXZWJDb3JlOjpJREJJbmRleEluZm8gaW5mbykKKyAgICBEZWxldGVJbmRleChXZWJDb3Jl
OjpJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YSwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlm
aWVyLCBTdHJpbmcgaW5kZXhOYW1lKQorICAgIFJlbmFtZUluZGV4KFdlYkNvcmU6OklEQlJlcXVl
c3REYXRhIHJlcXVlc3REYXRhLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2
NF90IGluZGV4SWRlbnRpZmllciwgU3RyaW5nIG5ld05hbWUpCisgICAgUHV0T3JBZGQoV2ViQ29y
ZTo6SURCUmVxdWVzdERhdGEgcmVxdWVzdERhdGEsIFdlYkNvcmU6OklEQktleURhdGEga2V5LCBX
ZWJDb3JlOjpJREJWYWx1ZSB2YWx1ZSwgV2ViQ29yZTo6SW5kZXhlZERCOjpPYmplY3RTdG9yZU92
ZXJ3cml0ZU1vZGUgb3ZlcndyaXRlTW9kZSkgV2FudHNDb25uZWN0aW9uCisgICAgR2V0UmVjb3Jk
KFdlYkNvcmU6OklEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhLCBzdHJ1Y3QgV2ViQ29yZTo6SURC
R2V0UmVjb3JkRGF0YSBnZXRSZWNvcmREYXRhKQorICAgIEdldEFsbFJlY29yZHMoV2ViQ29yZTo6
SURCUmVxdWVzdERhdGEgcmVxdWVzdERhdGEsIHN0cnVjdCBXZWJDb3JlOjpJREJHZXRBbGxSZWNv
cmRzRGF0YSBnZXRBbGxSZWNvcmRzRGF0YSkKKyAgICBHZXRDb3VudChXZWJDb3JlOjpJREJSZXF1
ZXN0RGF0YSByZXF1ZXN0RGF0YSwgc3RydWN0IFdlYkNvcmU6OklEQktleVJhbmdlRGF0YSByYW5n
ZSkKKyAgICBEZWxldGVSZWNvcmQoV2ViQ29yZTo6SURCUmVxdWVzdERhdGEgcmVxdWVzdERhdGEs
IHN0cnVjdCBXZWJDb3JlOjpJREJLZXlSYW5nZURhdGEgcmFuZ2UpCisgICAgT3BlbkN1cnNvcihX
ZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YSwgV2ViQ29yZTo6SURCQ3Vyc29ySW5m
byBpbmZvKQorICAgIEl0ZXJhdGVDdXJzb3IoV2ViQ29yZTo6SURCUmVxdWVzdERhdGEgcmVxdWVz
dERhdGEsIHN0cnVjdCBXZWJDb3JlOjpJREJJdGVyYXRlQ3Vyc29yRGF0YSBkYXRhKQorICAgIEdl
dEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZp
ZXIgcmVxdWVzdElkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2lu
KSBXYW50c0Nvbm5lY3Rpb24KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IDcwYjAw
MGI4YzVjZC4uZTE5MjFkMzNiMTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5jcHAKQEAgLTI5
LDYgKzI5LDggQEAKICNpbmNsdWRlICJGaWxlU3lzdGVtU3RvcmFnZUhhbmRsZVJlZ2lzdHJ5Lmgi
CiAjaW5jbHVkZSAiRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiTG9jYWxT
dG9yYWdlTWFuYWdlci5oIgorI2luY2x1ZGUgIklEQlN0b3JhZ2VNYW5hZ2VyLmgiCisjaW5jbHVk
ZSAiSURCU3RvcmFnZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiTWVtb3J5U3RvcmFnZUFyZWEuaCIK
ICNpbmNsdWRlICJTZXNzaW9uU3RvcmFnZU1hbmFnZXIuaCIKICNpbmNsdWRlICJTdG9yYWdlQXJl
YVJlZ2lzdHJ5LmgiCkBAIC00NCwxMCArNDYsMTEgQEAgZW51bSBjbGFzcyBPcmlnaW5TdG9yYWdl
TWFuYWdlcjo6U3RvcmFnZUJ1Y2tldE1vZGUgOiBib29sIHsgQmVzdEVmZm9ydCwgUGVyc2lzdGUK
IGNsYXNzIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0IHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBTdG9yYWdlQnVja2V0KGNvbnN0IFN0cmlu
ZyYgcm9vdFBhdGgsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBsb2Nh
bFN0b3JhZ2VQYXRoKQorICAgIFN0b3JhZ2VCdWNrZXQoY29uc3QgU3RyaW5nJiByb290UGF0aCwg
Y29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZVBhdGgs
IGNvbnN0IFN0cmluZyYgaWRiU3RvcmFnZVBhdGgpCiAgICAgICAgIDogbV9yb290UGF0aChyb290
UGF0aCkKICAgICAgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKICAgICAgICAgLCBtX2xv
Y2FsU3RvcmFnZVBhdGgobG9jYWxTdG9yYWdlUGF0aCkKKyAgICAgICAgLCBtX2lkYlN0b3JhZ2VQ
YXRoKGlkYlN0b3JhZ2VQYXRoKQogICAgIHsKICAgICB9CiAKQEAgLTY0LDYgKzY3LDcgQEAgcHVi
bGljOgogICAgICAgICBGaWxlU3lzdGVtLAogICAgICAgICBMb2NhbFN0b3JhZ2UsCiAgICAgICAg
IFNlc3Npb25TdG9yYWdlLAorICAgICAgICBJbmRleGVkREIsCiAgICAgfTsKIAogICAgIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVEYXRhVHlwZT4gdG9XZWJzaXRlRGF0YVR5cGUoY29uc3Qg
U3RyaW5nJiBzdG9yYWdlSWRlbnRpZmllcikKQEAgLTc0LDYgKzc4LDggQEAgcHVibGljOgogICAg
ICAgICAgICAgcmV0dXJuIFdlYnNpdGVEYXRhVHlwZTo6TG9jYWxTdG9yYWdlOwogICAgICAgICBp
ZiAoc3RvcmFnZUlkZW50aWZpZXIgPT0gIlNlc3Npb25TdG9yYWdlIl9zKQogICAgICAgICAgICAg
cmV0dXJuIFdlYnNpdGVEYXRhVHlwZTo6U2Vzc2lvblN0b3JhZ2U7CisgICAgICAgIGlmIChzdG9y
YWdlSWRlbnRpZmllciA9PSAiSW5kZXhlZERCIl9zKQorICAgICAgICAgICAgcmV0dXJuIFdlYnNp
dGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzOwogCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgfQpAQCAtODcsNiArOTMsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1
cm4gIkxvY2FsU3RvcmFnZSJfczsKICAgICAgICAgY2FzZSBTdG9yYWdlVHlwZTo6U2Vzc2lvblN0
b3JhZ2U6CiAgICAgICAgICAgICByZXR1cm4gIlNlc3Npb25TdG9yYWdlIl9zOworICAgICAgICBj
YXNlIFN0b3JhZ2VUeXBlOjpJbmRleGVkREI6CisgICAgICAgICAgICByZXR1cm4gIkluZGV4ZWRE
QiJfczsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBA
IC0xMzcsOSArMTQ1LDIyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fc2Vzc2lvblN0b3Jh
Z2VNYW5hZ2VyLmdldCgpOwogICAgIH0KIAorICAgIElEQlN0b3JhZ2VNYW5hZ2VyJiBpZGJTdG9y
YWdlTWFuYWdlcihJREJTdG9yYWdlUmVnaXN0cnkmIHJlZ2lzdHJ5LCBJREJTdG9yYWdlTWFuYWdl
cjo6UXVvdGFDaGVja0Z1bmN0aW9uJiYgcXVvdGFDaGVja0Z1bmN0aW9uKQorICAgIHsKKyAgICAg
ICAgaWYgKCFtX2lkYlN0b3JhZ2VNYW5hZ2VyKQorICAgICAgICAgICAgbV9pZGJTdG9yYWdlTWFu
YWdlciA9IG1ha2VVbmlxdWU8SURCU3RvcmFnZU1hbmFnZXI+KG1faWRiU3RvcmFnZVBhdGgsIHJl
Z2lzdHJ5LCBXVEZNb3ZlKHF1b3RhQ2hlY2tGdW5jdGlvbikpOworCisgICAgICAgIHJldHVybiAq
bV9pZGJTdG9yYWdlTWFuYWdlcjsKKyAgICB9CisKKyAgICBJREJTdG9yYWdlTWFuYWdlciogZXhp
c3RpbmdJREJTdG9yYWdlTWFuYWdlcigpCisgICAgeworICAgICAgICByZXR1cm4gbV9pZGJTdG9y
YWdlTWFuYWdlci5nZXQoKTsKKyAgICB9CisKICAgICBib29sIGlzQWN0aXZlKCkgY29uc3QKICAg
ICB7Ci0gICAgICAgIHJldHVybiBtX2ZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlciB8fCBtX2xvY2Fs
U3RvcmFnZU1hbmFnZXIgfHwgbV9zZXNzaW9uU3RvcmFnZU1hbmFnZXI7CisgICAgICAgIHJldHVy
biBtX2ZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlciB8fCBtX2xvY2FsU3RvcmFnZU1hbmFnZXIgfHwg
bV9zZXNzaW9uU3RvcmFnZU1hbmFnZXIgfHwgbV9pZGJTdG9yYWdlTWFuYWdlcjsKICAgICB9CiAK
ICAgICBib29sIGlzRW1wdHkoKSBjb25zdApAQCAtMTU1LDcgKzE3Niw4IEBAIHB1YmxpYzoKICAg
ICAgICAgaWYgKGhhc1ZhbGlkRmlsZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
ICAgICByZXR1cm4gIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobV9sb2NhbFN0b3JhZ2VQYXRoKTsK
KyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkobV9pZGJTdG9yYWdlUGF0
aCk7CisgICAgICAgIHJldHVybiAhRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhtX2xvY2FsU3RvcmFn
ZVBhdGgpICYmICFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG1faWRiU3RvcmFnZVBhdGgpOwogICAg
IH0KIAogICAgIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGZldGNoRGF0YVR5cGVzSW5MaXN0
KE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHR5cGVzKQpAQCAtMTc2LDkgKzE5OCwxMiBAQCBw
dWJsaWM6CiAKICAgICAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6U2Vz
c2lvblN0b3JhZ2UpICYmIG1vZGlmaWVkU2luY2VUaW1lID09IC1XYWxsVGltZTo6aW5maW5pdHko
KSkKICAgICAgICAgICAgIGRlbGV0ZVNlc3Npb25TdG9yYWdlRGF0YSgpOworCisgICAgICAgIGlm
ICh0eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykpCisg
ICAgICAgICAgICBkZWxldGVJREJTdG9yYWdlRGF0YShtb2RpZmllZFNpbmNlVGltZSk7CiAgICAg
fQogCi0gICAgdm9pZCBtb3ZlRGF0YShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYg
bG9jYWxTdG9yYWdlUGF0aCkKKyAgICB2b2lkIG1vdmVEYXRhKGNvbnN0IFN0cmluZyYgcGF0aCwg
Y29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VQYXRoLCBjb25zdCBTdHJpbmcmIGlkYlN0b3JhZ2VQ
YXRoKQogICAgIHsKICAgICAgICAgbV9maWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIgPSBudWxscHRy
OwogICAgICAgICBpZiAobV9sb2NhbFN0b3JhZ2VNYW5hZ2VyKQpAQCAtMTkxLDYgKzIxNiwxMSBA
QCBwdWJsaWM6CiAgICAgICAgICAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoRmls
ZVN5c3RlbTo6cGFyZW50UGF0aChsb2NhbFN0b3JhZ2VQYXRoKSk7CiAgICAgICAgICAgICBXZWJD
b3JlOjpTUUxpdGVGaWxlU3lzdGVtOjptb3ZlRGF0YWJhc2VGaWxlKG1fbG9jYWxTdG9yYWdlUGF0
aCwgbG9jYWxTdG9yYWdlUGF0aCk7CiAgICAgICAgIH0KKworICAgICAgICBpZiAoIW1faWRiU3Rv
cmFnZVBhdGguaXNFbXB0eSgpICYmICFpZGJTdG9yYWdlUGF0aC5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhGaWxlU3lzdGVtOjpwYXJlbnRQ
YXRoKGlkYlN0b3JhZ2VQYXRoKSk7CisgICAgICAgICAgICBXZWJDb3JlOjpTUUxpdGVGaWxlU3lz
dGVtOjptb3ZlRGF0YWJhc2VGaWxlKG1faWRiU3RvcmFnZVBhdGgsIGlkYlN0b3JhZ2VQYXRoKTsK
KyAgICAgICAgfQogICAgIH0KIAogcHJpdmF0ZToKQEAgLTIwNyw2ICsyMzcsMTEgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICByZXN1bHQuYWRkKFdlYnNpdGVEYXRhVHlwZTo6U2Vzc2lvblN0
b3JhZ2UpOwogICAgICAgICB9CiAKKyAgICAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFdlYnNpdGVE
YXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKSkgeworICAgICAgICAgICAgaWYgKG1faWRiU3Rv
cmFnZU1hbmFnZXIgJiYgbV9pZGJTdG9yYWdlTWFuYWdlci0+aGFzRGF0YUluTWVtb3J5KCkpCisg
ICAgICAgICAgICAgICAgcmVzdWx0LmFkZChXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFi
YXNlcyk7CisgICAgICAgIH0KKwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIApAQCAt
MjIzLDYgKzI1OCwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQoV2Vi
c2l0ZURhdGFUeXBlOjpMb2NhbFN0b3JhZ2UpOwogICAgICAgICB9CiAKKyAgICAgICAgaWYgKHR5
cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKSAmJiAhcmVz
dWx0LmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKSkgeworICAg
ICAgICAgICAgaWYgKGF1dG8gZGF0YWJhc2VzID0gRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeSht
X2lkYlN0b3JhZ2VQYXRoKTsgIWRhdGFiYXNlcy5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAg
cmVzdWx0LmFkZChXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcyk7CisgICAgICAg
IH0KKwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIApAQCAtMjU5LDcgKzI5OSwxNSBA
QCBwcml2YXRlOgogICAgICAgICBpZiAoIW1fc2Vzc2lvblN0b3JhZ2VNYW5hZ2VyLT5pc0FjdGl2
ZSgpKQogICAgICAgICAgICAgbV9zZXNzaW9uU3RvcmFnZU1hbmFnZXIgPSBudWxscHRyOwogICAg
IH0KLSAgICAKKworICAgIHZvaWQgZGVsZXRlSURCU3RvcmFnZURhdGEoV2FsbFRpbWUgdGltZSkK
KyAgICB7CisgICAgICAgIGlmIChtX2lkYlN0b3JhZ2VNYW5hZ2VyKQorICAgICAgICAgICAgbV9p
ZGJTdG9yYWdlTWFuYWdlci0+Y2xvc2VEYXRhYmFzZXNGb3JEZWxldGlvbigpOworCisgICAgICAg
IEZpbGVTeXN0ZW06OmRlbGV0ZUFsbEZpbGVzTW9kaWZpZWRTaW5jZShtX2lkYlN0b3JhZ2VQYXRo
LCB0aW1lKTsKKyAgICB9CisKICAgICBTdHJpbmcgbV9yb290UGF0aDsKICAgICBTdHJpbmcgbV9p
ZGVudGlmaWVyOwogICAgIFN0b3JhZ2VCdWNrZXRNb2RlIG1fbW9kZSB7IFN0b3JhZ2VCdWNrZXRN
b2RlOjpCZXN0RWZmb3J0IH07CkBAIC0yNjcsMTMgKzMxNSwyMiBAQCBwcml2YXRlOgogICAgIHN0
ZDo6dW5pcXVlX3B0cjxMb2NhbFN0b3JhZ2VNYW5hZ2VyPiBtX2xvY2FsU3RvcmFnZU1hbmFnZXI7
CiAgICAgU3RyaW5nIG1fbG9jYWxTdG9yYWdlUGF0aDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2Vz
c2lvblN0b3JhZ2VNYW5hZ2VyPiBtX3Nlc3Npb25TdG9yYWdlTWFuYWdlcjsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8SURCU3RvcmFnZU1hbmFnZXI+IG1faWRiU3RvcmFnZU1hbmFnZXI7CisgICAgU3Ry
aW5nIG1faWRiU3RvcmFnZVBhdGg7CiB9OwogCi1PcmlnaW5TdG9yYWdlTWFuYWdlcjo6T3JpZ2lu
U3RvcmFnZU1hbmFnZXIoU3RyaW5nJiYgcGF0aCwgU3RyaW5nJiYgbG9jYWxTdG9yYWdlUGF0aCkK
K09yaWdpblN0b3JhZ2VNYW5hZ2VyOjpPcmlnaW5TdG9yYWdlTWFuYWdlcih1aW50NjRfdCBxdW90
YSwgUXVvdGFNYW5hZ2VyOjpJbmNyZWFzZVF1b3RhRnVuY3Rpb24mJiBpbmNyZWFzZVF1b3RhRnVu
Y3Rpb24sIFN0cmluZyYmIHBhdGgsIFN0cmluZyYmIGxvY2FsU3RvcmFnZVBhdGgsIFN0cmluZyYm
IGlkYlN0b3JhZ2VQYXRoKQogICAgIDogbV9wYXRoKFdURk1vdmUocGF0aCkpCiAgICAgLCBtX2xv
Y2FsU3RvcmFnZVBhdGgoV1RGTW92ZShsb2NhbFN0b3JhZ2VQYXRoKSkKKyAgICAsIG1faWRiU3Rv
cmFnZVBhdGgoV1RGTW92ZShpZGJTdG9yYWdlUGF0aCkpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29w
Ojppc01haW4oKSk7CisKKyAgICBRdW90YU1hbmFnZXI6OkdldFVzYWdlRnVuY3Rpb24gZ2V0VXNh
Z2VGdW5jdGlvbiA9IFtpZGJTdG9yYWdlUGF0aCA9IG1faWRiU3RvcmFnZVBhdGhdKCkgeworICAg
ICAgICAvLyBXZSBjdXJyZW50bHkgb25seSBjb3VudCBmb3IgSW5kZXhlZERCIHN0b3JhZ2UuCisg
ICAgICAgIHJldHVybiBJREJTdG9yYWdlTWFuYWdlcjo6aWRiU3RvcmFnZVNpemUoaWRiU3RvcmFn
ZVBhdGgpOworICAgIH07CisgICAgbV9xdW90YU1hbmFnZXIgPSBRdW90YU1hbmFnZXI6OmNyZWF0
ZShxdW90YSwgV1RGTW92ZShnZXRVc2FnZUZ1bmN0aW9uKSwgV1RGTW92ZShpbmNyZWFzZVF1b3Rh
RnVuY3Rpb24pKS5wdHIoKTsKIH0KIAogT3JpZ2luU3RvcmFnZU1hbmFnZXI6On5PcmlnaW5TdG9y
YWdlTWFuYWdlcigpID0gZGVmYXVsdDsKQEAgLTI4NywxMSArMzQ0LDE2IEBAIHZvaWQgT3JpZ2lu
U3RvcmFnZU1hbmFnZXI6OmNvbm5lY3Rpb25DbG9zZWQoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJ
RCBjb25uZWN0aW9uCiBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldCYgT3JpZ2lu
U3RvcmFnZU1hbmFnZXI6OmRlZmF1bHRCdWNrZXQoKQogewogICAgIGlmICghbV9kZWZhdWx0QnVj
a2V0KQotICAgICAgICBtX2RlZmF1bHRCdWNrZXQgPSBtYWtlVW5pcXVlPFN0b3JhZ2VCdWNrZXQ+
KG1fcGF0aCwgImRlZmF1bHQiX3MsIG1fbG9jYWxTdG9yYWdlUGF0aCk7CisgICAgICAgIG1fZGVm
YXVsdEJ1Y2tldCA9IG1ha2VVbmlxdWU8U3RvcmFnZUJ1Y2tldD4obV9wYXRoLCAiZGVmYXVsdCJf
cywgbV9sb2NhbFN0b3JhZ2VQYXRoLCBtX2lkYlN0b3JhZ2VQYXRoKTsKIAogICAgIHJldHVybiAq
bV9kZWZhdWx0QnVja2V0OwogfQogCitRdW90YU1hbmFnZXImIE9yaWdpblN0b3JhZ2VNYW5hZ2Vy
OjpxdW90YU1hbmFnZXIoKQoreworICAgIHJldHVybiAqbV9xdW90YU1hbmFnZXI7Cit9CisKIEZp
bGVTeXN0ZW1TdG9yYWdlTWFuYWdlciYgT3JpZ2luU3RvcmFnZU1hbmFnZXI6OmZpbGVTeXN0ZW1T
dG9yYWdlTWFuYWdlcihGaWxlU3lzdGVtU3RvcmFnZUhhbmRsZVJlZ2lzdHJ5JiByZWdpc3RyeSkK
IHsKICAgICByZXR1cm4gZGVmYXVsdEJ1Y2tldCgpLmZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlcihy
ZWdpc3RyeSk7CkBAIC0zMTcsNiArMzc5LDIzIEBAIFNlc3Npb25TdG9yYWdlTWFuYWdlciogT3Jp
Z2luU3RvcmFnZU1hbmFnZXI6OmV4aXN0aW5nU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyKCkKICAgICBy
ZXR1cm4gZGVmYXVsdEJ1Y2tldCgpLmV4aXN0aW5nU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyKCk7CiB9
CiAKK0lEQlN0b3JhZ2VNYW5hZ2VyJiBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6aWRiU3RvcmFnZU1h
bmFnZXIoSURCU3RvcmFnZVJlZ2lzdHJ5JiByZWdpc3RyeSkKK3sKKyAgICByZXR1cm4gZGVmYXVs
dEJ1Y2tldCgpLmlkYlN0b3JhZ2VNYW5hZ2VyKHJlZ2lzdHJ5LCBbcXVvdGFNYW5hZ2VyID0gV2Vh
a1B0ciB7IHRoaXMtPnF1b3RhTWFuYWdlcigpIH1dKHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBtdXRhYmxl
IHsKKyAgICAgICAgaWYgKCFxdW90YU1hbmFnZXIpCisgICAgICAgICAgICByZXR1cm4gY29tcGxl
dGlvbkhhbmRsZXIoZmFsc2UpOworCisgICAgICAgIHF1b3RhTWFuYWdlci0+cmVxdWVzdFNwYWNl
KHNwYWNlUmVxdWVzdGVkLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oYXV0byBkZWNpc2lvbikgbXV0YWJsZSB7CisgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihkZWNpc2lvbiA9PSBRdW90YU1hbmFnZXI6OkRlY2lzaW9uOjpHcmFudCk7CisgICAg
ICAgIH0pOworICAgIH0pOworfQorCitJREJTdG9yYWdlTWFuYWdlciogT3JpZ2luU3RvcmFnZU1h
bmFnZXI6OmV4aXN0aW5nSURCU3RvcmFnZU1hbmFnZXIoKQoreworICAgIHJldHVybiBkZWZhdWx0
QnVja2V0KCkuZXhpc3RpbmdJREJTdG9yYWdlTWFuYWdlcigpOworfQorCiBib29sIE9yaWdpblN0
b3JhZ2VNYW5hZ2VyOjppc0FjdGl2ZSgpCiB7CiAgICAgcmV0dXJuIGRlZmF1bHRCdWNrZXQoKS5p
c0FjdGl2ZSgpOwpAQCAtMzQ5LDExICs0MjgsMTEgQEAgdm9pZCBPcmlnaW5TdG9yYWdlTWFuYWdl
cjo6ZGVsZXRlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB0eXBlcywgV2FsbFRpbWUK
ICAgICBkZWZhdWx0QnVja2V0KCkuZGVsZXRlRGF0YSh0eXBlcywgbW9kaWZpZWRTaW5jZSk7CiB9
CiAKLXZvaWQgT3JpZ2luU3RvcmFnZU1hbmFnZXI6Om1vdmVEYXRhKGNvbnN0IFN0cmluZyYgbmV3
UGF0aCwgY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VQYXRoKQordm9pZCBPcmlnaW5TdG9yYWdl
TWFuYWdlcjo6bW92ZURhdGEoY29uc3QgU3RyaW5nJiBuZXdQYXRoLCBjb25zdCBTdHJpbmcmIGxv
Y2FsU3RvcmFnZVBhdGgsIGNvbnN0IFN0cmluZyYgaWRiU3RvcmFnZVBhdGgpCiB7CiAgICAgQVNT
RVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBkZWZhdWx0QnVja2V0KCkubW92ZURhdGEo
bmV3UGF0aCwgbG9jYWxTdG9yYWdlUGF0aCk7CisgICAgZGVmYXVsdEJ1Y2tldCgpLm1vdmVEYXRh
KG5ld1BhdGgsIGxvY2FsU3RvcmFnZVBhdGgsIGlkYlN0b3JhZ2VQYXRoKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5oCmluZGV4IDVlNzY2OTk4NmU0Ni4u
OTc5OWNmZGNkYmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0
b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuaApAQCAtMjYsMTcgKzI2LDE2IEBA
CiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJRdW90
YU1hbmFnZXIuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotbmFtZXNwYWNl
IFdlYkNvcmUgewotc3RydWN0IENsaWVudE9yaWdpbjsKLX0KLQogbmFtZXNwYWNlIFdlYktpdCB7
CiAKIGNsYXNzIEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnk7CiBjbGFzcyBGaWxlU3lz
dGVtU3RvcmFnZU1hbmFnZXI7CiBjbGFzcyBMb2NhbFN0b3JhZ2VNYW5hZ2VyOworY2xhc3MgSURC
U3RvcmFnZU1hbmFnZXI7CitjbGFzcyBJREJTdG9yYWdlUmVnaXN0cnk7CiBjbGFzcyBTZXNzaW9u
U3RvcmFnZU1hbmFnZXI7CiBjbGFzcyBTdG9yYWdlQXJlYVJlZ2lzdHJ5OwogZW51bSBjbGFzcyBX
ZWJzaXRlRGF0YVR5cGUgOiB1aW50MzJfdDsKQEAgLTQ0LDM1ICs0MywzNyBAQCBlbnVtIGNsYXNz
IFdlYnNpdGVEYXRhVHlwZSA6IHVpbnQzMl90OwogY2xhc3MgT3JpZ2luU3RvcmFnZU1hbmFnZXIg
ewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIE9yaWdpblN0b3Jh
Z2VNYW5hZ2VyKFN0cmluZyYmIHBhdGgsIFN0cmluZyYmIGxvY2FsU3RvcmFnZVBhdGgpOworICAg
IE9yaWdpblN0b3JhZ2VNYW5hZ2VyKHVpbnQ2NF90IHF1b3RhLCBRdW90YU1hbmFnZXI6OkluY3Jl
YXNlUXVvdGFGdW5jdGlvbiYmLCBTdHJpbmcmJiBwYXRoLCBTdHJpbmcmJiBsb2NhbFN0b3JhZ2VQ
YXRoLCBTdHJpbmcmJiBpZGJTdG9yYWdlUGF0aCk7CiAgICAgfk9yaWdpblN0b3JhZ2VNYW5hZ2Vy
KCk7CiAKICAgICB2b2lkIGNvbm5lY3Rpb25DbG9zZWQoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJ
RCk7CiAgICAgYm9vbCBwZXJzaXN0ZWQoKSBjb25zdCB7IHJldHVybiBtX3BlcnNpc3RlZDsgfQog
ICAgIHZvaWQgc2V0UGVyc2lzdGVkKGJvb2wgdmFsdWUpOworICAgIFF1b3RhTWFuYWdlciYgcXVv
dGFNYW5hZ2VyKCk7CiAgICAgRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyJiBmaWxlU3lzdGVtU3Rv
cmFnZU1hbmFnZXIoRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeSYpOwogICAgIExvY2Fs
U3RvcmFnZU1hbmFnZXImIGxvY2FsU3RvcmFnZU1hbmFnZXIoU3RvcmFnZUFyZWFSZWdpc3RyeSYp
OwogICAgIExvY2FsU3RvcmFnZU1hbmFnZXIqIGV4aXN0aW5nTG9jYWxTdG9yYWdlTWFuYWdlcigp
OwogICAgIFNlc3Npb25TdG9yYWdlTWFuYWdlciYgc2Vzc2lvblN0b3JhZ2VNYW5hZ2VyKFN0b3Jh
Z2VBcmVhUmVnaXN0cnkmKTsKICAgICBTZXNzaW9uU3RvcmFnZU1hbmFnZXIqIGV4aXN0aW5nU2Vz
c2lvblN0b3JhZ2VNYW5hZ2VyKCk7CisgICAgSURCU3RvcmFnZU1hbmFnZXImIGlkYlN0b3JhZ2VN
YW5hZ2VyKElEQlN0b3JhZ2VSZWdpc3RyeSYpOworICAgIElEQlN0b3JhZ2VNYW5hZ2VyKiBleGlz
dGluZ0lEQlN0b3JhZ2VNYW5hZ2VyKCk7CiAgICAgYm9vbCBpc0FjdGl2ZSgpOwogICAgIGJvb2wg
aXNFbXB0eSgpOwogICAgIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGZldGNoRGF0YVR5cGVz
SW5MaXN0KE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+KTsKICAgICB2b2lkIGRlbGV0ZURhdGEo
T3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIFdhbGxUaW1lKTsKLSAgICB2b2lkIG1vdmVEYXRh
KGNvbnN0IFN0cmluZyYgbmV3UGF0aCwgY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VQYXRoKTsK
KyAgICB2b2lkIG1vdmVEYXRhKGNvbnN0IFN0cmluZyYgbmV3UGF0aCwgY29uc3QgU3RyaW5nJiBs
b2NhbFN0b3JhZ2VQYXRoLCBjb25zdCBTdHJpbmcmIGlkYlN0b3JhZ2VQYXRoKTsKIAogcHJpdmF0
ZToKICAgICBlbnVtIGNsYXNzIFN0b3JhZ2VCdWNrZXRNb2RlIDogYm9vbDsKICAgICBjbGFzcyBT
dG9yYWdlQnVja2V0OwogICAgIFN0b3JhZ2VCdWNrZXQmIGRlZmF1bHRCdWNrZXQoKTsKIAotICAg
IHZvaWQgY3JlYXRlT3JpZ2luRmlsZUlmTmVjZXNzYXJ5KGNvbnN0IFdlYkNvcmU6OkNsaWVudE9y
aWdpbiYpOwotICAgIHZvaWQgZGVsZXRlT3JpZ2luRmlsZUlmTmVjZXNzYXJ5KCk7Ci0KICAgICBz
dGQ6OnVuaXF1ZV9wdHI8U3RvcmFnZUJ1Y2tldD4gbV9kZWZhdWx0QnVja2V0OwogICAgIFN0cmlu
ZyBtX3BhdGg7CiAgICAgYm9vbCBtX3BlcnNpc3RlZCB7IGZhbHNlIH07CiAgICAgU3RyaW5nIG1f
bG9jYWxTdG9yYWdlUGF0aDsKKyAgICBTdHJpbmcgbV9pZGJTdG9yYWdlUGF0aDsKKyAgICBSZWZQ
dHI8UXVvdGFNYW5hZ2VyPiBtX3F1b3RhTWFuYWdlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1F1
b3RhTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvUXVv
dGFNYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjQ5
ZTM5OGEyZjQyNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc3RvcmFnZS9RdW90YU1hbmFnZXIuY3BwCkBAIC0wLDAgKzEsMTE4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUXVvdGFNYW5hZ2VyLmgiCisj
aW5jbHVkZSA8d3RmL1Njb3BlLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitSZWY8UXVvdGFN
YW5hZ2VyPiBRdW90YU1hbmFnZXI6OmNyZWF0ZSh1aW50NjRfdCBxdW90YSwgR2V0VXNhZ2VGdW5j
dGlvbiYmIGdldFVzYWdlRnVuY3Rpb24sIEluY3JlYXNlUXVvdGFGdW5jdGlvbiYmIGluY3JlYXNl
UXVvdGFGdW5jdGlvbikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBRdW90YU1hbmFnZXIo
cXVvdGEsIFdURk1vdmUoZ2V0VXNhZ2VGdW5jdGlvbiksIFdURk1vdmUoaW5jcmVhc2VRdW90YUZ1
bmN0aW9uKSkpOworfQorCitRdW90YU1hbmFnZXI6OlF1b3RhTWFuYWdlcih1aW50NjRfdCBxdW90
YSwgR2V0VXNhZ2VGdW5jdGlvbiYmIGdldFVzYWdlRnVuY3Rpb24sIEluY3JlYXNlUXVvdGFGdW5j
dGlvbiYmIGluY3JlYXNlUXVvdGFGdW5jdGlvbikKKyAgICA6IG1fcXVvdGEocXVvdGEpCisgICAg
LCBtX2dldFVzYWdlRnVuY3Rpb24oV1RGTW92ZShnZXRVc2FnZUZ1bmN0aW9uKSkKKyAgICAsIG1f
aW5jcmVhc2VRdW90YUZ1bmN0aW9uKFdURk1vdmUoaW5jcmVhc2VRdW90YUZ1bmN0aW9uKSkKK3sK
K30KKwordm9pZCBRdW90YU1hbmFnZXI6OnJlcXVlc3RTcGFjZSh1aW50NjRfdCBzcGFjZVJlcXVl
c3RlZCwgUmVxdWVzdENhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgbV9yZXF1ZXN0cy5hcHBl
bmQoUXVvdGFNYW5hZ2VyOjpSZXF1ZXN0IHsgc3BhY2VSZXF1ZXN0ZWQsIFdURk1vdmUoY2FsbGJh
Y2spLCBRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIgeyB9IH0pOworICAgIGhhbmRsZVJl
cXVlc3RzKCk7Cit9CisKK3ZvaWQgUXVvdGFNYW5hZ2VyOjpoYW5kbGVSZXF1ZXN0cygpCit7Cisg
ICAgaWYgKG1fY3VycmVudFJlcXVlc3QpCisgICAgICAgIHJldHVybjsKKworICAgIG1faXNIYW5k
bGluZ1JlcXVlc3RzID0gdHJ1ZTsKKyAgICBhdXRvIGNsZWFySXNIYW5kbGluZ1JlcXVlc3RzID0g
bWFrZVNjb3BlRXhpdChbJl0geworICAgICAgICBtX2lzSGFuZGxpbmdSZXF1ZXN0cyA9IGZhbHNl
OworICAgIH0pOworCisgICAgd2hpbGUgKCFtX2N1cnJlbnRSZXF1ZXN0ICYmICFtX3JlcXVlc3Rz
LmlzRW1wdHkoKSkgeworICAgICAgICBtX2N1cnJlbnRSZXF1ZXN0ID0gbV9yZXF1ZXN0cy50YWtl
Rmlyc3QoKTsKKyAgICAgICAgaWYgKGdyYW50V2l0aEN1cnJlbnRRdW90YShtX2N1cnJlbnRSZXF1
ZXN0LT5zcGFjZVJlcXVlc3RlZCkpIHsKKyAgICAgICAgICAgIG1fY3VycmVudFJlcXVlc3QtPmNh
bGxiYWNrKERlY2lzaW9uOjpHcmFudCk7CisgICAgICAgICAgICBtX2N1cnJlbnRSZXF1ZXN0ID0g
c3RkOjpudWxsb3B0OworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAg
ICBtX2N1cnJlbnRSZXF1ZXN0LT5pZGVudGlmaWVyID0gUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVu
dGlmaWVyOjpnZW5lcmF0ZVRocmVhZFNhZmUoKTsKKyAgICAgICAgbV9pbmNyZWFzZVF1b3RhRnVu
Y3Rpb24obV9jdXJyZW50UmVxdWVzdC0+aWRlbnRpZmllciwgbV9xdW90YSwgKm1fdXNhZ2UsIG1f
Y3VycmVudFJlcXVlc3QtPnNwYWNlUmVxdWVzdGVkKTsKKyAgICB9Cit9CisKK2Jvb2wgUXVvdGFN
YW5hZ2VyOjpncmFudFdpdGhDdXJyZW50UXVvdGEodWludDY0X3Qgc3BhY2VSZXF1ZXN0ZWQpCit7
CisgICAgaWYgKGdyYW50RmFzdFBhdGgoc3BhY2VSZXF1ZXN0ZWQpKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKworICAgIC8vIFdoZW4gUXVvdGFNYW5hZ2VyIGlzIHVzZWQgZm9yIHRoZSBmaXJzdCB0
aW1lLCB3ZSB3YW50IHRvIG1ha2Ugc3VyZSBpdHMgaW5pdGlhbCBxdW90YSBpcyBiaWdnZXIgdGhh
biBleGlzdGluZyBkaXNrIHVzYWdlLAorICAgIC8vIGJhc2VkIG9uIHRoZSBhc3N1bXB0aW9uIHRo
YXQgdGhlIHF1b3RhIHdhcyBpbmNyZWFzZWQgdG8gYXQgbGVhc3QgdGhlIGRpc2sgdXNhZ2UgdW5k
ZXIgdXNlcidzIHBlcm1pc3Npb24gYmVmb3JlLgorICAgIGJvb2wgc2V0SW5pdGlhbFVzYWdlVmFs
dWUgPSAhIW1fdXNhZ2U7CisgICAgbV91c2FnZSA9IG1fZ2V0VXNhZ2VGdW5jdGlvbigpOworICAg
IGlmIChzZXRJbml0aWFsVXNhZ2VWYWx1ZSkgeworICAgICAgICBhdXRvIGRlZmF1bHRRdW90YVN0
ZXAgPSBtX3F1b3RhIC8gMTA7CisgICAgICAgIG1fcXVvdGEgPSBzdGQ6Om1heChtX3F1b3RhLCBk
ZWZhdWx0UXVvdGFTdGVwICogKCgqbV91c2FnZSAvIGRlZmF1bHRRdW90YVN0ZXApICsgMSkpOwor
ICAgIH0KKyAgICBtX3F1b3RhQ291bnRkb3duID0gKm1fdXNhZ2UgPCBtX3F1b3RhID8gbV9xdW90
YSAtICptX3VzYWdlIDogMDsKKworICAgIHJldHVybiBncmFudEZhc3RQYXRoKHNwYWNlUmVxdWVz
dGVkKTsKK30KKworYm9vbCBRdW90YU1hbmFnZXI6OmdyYW50RmFzdFBhdGgodWludDY0X3Qgc3Bh
Y2VSZXF1ZXN0ZWQpCit7CisgICAgaWYgKHNwYWNlUmVxdWVzdGVkIDw9IG1fcXVvdGFDb3VudGRv
d24pIHsKKyAgICAgICAgbV9xdW90YUNvdW50ZG93biAtPSBzcGFjZVJlcXVlc3RlZDsKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFF1
b3RhTWFuYWdlcjo6ZGlkSW5jcmVhc2VRdW90YShRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZp
ZXIgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbmV3UXVvdGEpCit7CisgICAg
aWYgKCFtX2N1cnJlbnRSZXF1ZXN0IHx8IG1fY3VycmVudFJlcXVlc3QtPmlkZW50aWZpZXIgIT0g
aWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG5ld1F1b3RhKQorICAgICAg
ICBtX3F1b3RhID0gKm5ld1F1b3RhOworCisgICAgYXV0byBkZWNpc2lvbiA9IGdyYW50V2l0aEN1
cnJlbnRRdW90YShtX2N1cnJlbnRSZXF1ZXN0LT5zcGFjZVJlcXVlc3RlZCkgPyBEZWNpc2lvbjo6
R3JhbnQgOiBEZWNpc2lvbjo6RGVueTsKKyAgICBtX2N1cnJlbnRSZXF1ZXN0LT5jYWxsYmFjayhk
ZWNpc2lvbik7CisgICAgbV9jdXJyZW50UmVxdWVzdCA9IHN0ZDo6bnVsbG9wdDsKKworICAgIGlm
ICghbV9pc0hhbmRsaW5nUmVxdWVzdHMpCisgICAgICAgIGhhbmRsZVJlcXVlc3RzKCk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3N0b3JhZ2UvUXVvdGFNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3N0b3JhZ2UvUXVvdGFNYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwLi41ZWE4NDgwMDk5YjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvUXVvdGFNYW5hZ2VyLmgKQEAgLTAsMCArMSw2OCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJRdW90YUluY3Jl
YXNlUmVxdWVzdElkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIu
aD4KKyNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNz
IFF1b3RhTWFuYWdlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxRdW90YU1hbmFnZXI+
LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UXVvdGFNYW5hZ2VyPiB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgdXNpbmcgR2V0VXNhZ2VGdW5jdGlvbiA9IEZ1bmN0
aW9uPHVpbnQ2NF90KCk+OworICAgIHVzaW5nIEluY3JlYXNlUXVvdGFGdW5jdGlvbiA9IEZ1bmN0
aW9uPHZvaWQoUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjdXJyZW50
UXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRVc2FnZSwgdWludDY0X3QgcmVxdWVzdGVkSW5jcmVhc2Up
PjsKKyAgICBzdGF0aWMgUmVmPFF1b3RhTWFuYWdlcj4gY3JlYXRlKHVpbnQ2NF90IHF1b3RhLCBH
ZXRVc2FnZUZ1bmN0aW9uJiYsIEluY3JlYXNlUXVvdGFGdW5jdGlvbiYmKTsKKworICAgIGVudW0g
Y2xhc3MgRGVjaXNpb24geyBEZW55LCBHcmFudCB9OworICAgIHVzaW5nIFJlcXVlc3RDYWxsYmFj
ayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRGVjaXNpb24pPjsKKyAgICB2b2lkIHJlcXVlc3RT
cGFjZSh1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCwgUmVxdWVzdENhbGxiYWNrJiYpOworICAgIHZv
aWQgZGlkSW5jcmVhc2VRdW90YShRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIsIHN0ZDo6
b3B0aW9uYWw8dWludDY0X3Q+IG5ld1F1b3RhKTsKKworcHJpdmF0ZToKKyAgICBRdW90YU1hbmFn
ZXIodWludDY0X3QgcXVvdGEsIEdldFVzYWdlRnVuY3Rpb24mJiwgSW5jcmVhc2VRdW90YUZ1bmN0
aW9uJiYpOworICAgIHZvaWQgaGFuZGxlUmVxdWVzdHMoKTsKKyAgICBib29sIGdyYW50V2l0aEN1
cnJlbnRRdW90YSh1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCk7CisgICAgYm9vbCBncmFudEZhc3RQ
YXRoKHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkKTsKKworICAgIHN0cnVjdCBSZXF1ZXN0IHsKKyAg
ICAgICAgdWludDY0X3Qgc3BhY2VSZXF1ZXN0ZWQ7CisgICAgICAgIFJlcXVlc3RDYWxsYmFjayBj
YWxsYmFjazsKKyAgICAgICAgUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyIGlkZW50aWZp
ZXI7CisgICAgfTsKKyAgICBEZXF1ZTxSZXF1ZXN0PiBtX3JlcXVlc3RzOworICAgIHN0ZDo6b3B0
aW9uYWw8UmVxdWVzdD4gbV9jdXJyZW50UmVxdWVzdDsKKyAgICBib29sIG1faXNIYW5kbGluZ1Jl
cXVlc3RzIHsgZmFsc2UgfTsKKyAgICB1aW50NjRfdCBtX3F1b3RhQ291bnRkb3duIHsgMCB9Owor
ICAgIHVpbnQ2NF90IG1fcXVvdGE7CisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbV91c2Fn
ZTsKKyAgICBHZXRVc2FnZUZ1bmN0aW9uIG1fZ2V0VXNhZ2VGdW5jdGlvbjsKKyAgICBJbmNyZWFz
ZVF1b3RhRnVuY3Rpb24gbV9pbmNyZWFzZVF1b3RhRnVuY3Rpb247Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL2dlbmVyYXRl
LXVuaWZpZWQtc291cmNlcy5zaCBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy9nZW5lcmF0ZS11bmlm
aWVkLXNvdXJjZXMuc2gKaW5kZXggMmEzZDZiNWVlYjI0Li41YmVkMTIyYTNlNmEgMTAwNzU1Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy9nZW5lcmF0ZS11bmlmaWVkLXNvdXJjZXMuc2gKKysr
IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL2dlbmVyYXRlLXVuaWZpZWQtc291cmNlcy5zaApAQCAt
MTQsNyArMTQsNyBAQCBpZiBbIC16ICIke0JVSUxEX1NDUklQVFNfRElSfSIgXTsgdGhlbgogICAg
IGZpCiBmaQogCi1VbmlmaWVkU291cmNlQ3BwRmlsZUNvdW50PTExNQorVW5pZmllZFNvdXJjZUNw
cEZpbGVDb3VudD0xMTYKIFVuaWZpZWRTb3VyY2VNbUZpbGVDb3VudD04MAogCiBpZiBbICQjIC1l
cSAwIF07IHRoZW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVz
c2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4
IDVjM2QyZWUxMjViOC4uMzQwODc5Y2U1ZmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvbWVzc2FnZXMucHkKQEAgLTI5NSw2ICsyOTUsNyBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3Rf
YmVfZm9yd2FyZF9kZWNsYXJlZCgpOgogICAgICAgICAnV2ViQ29yZTo6TmF0aXZlSW1hZ2VSZWZl
cmVuY2UnLAogICAgICAgICAnV2ViQ29yZTo6UGFnZUlkZW50aWZpZXInLAogICAgICAgICAnV2Vi
Q29yZTo6UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllcicsCisgICAgICAgICdX
ZWJLaXQ6OlF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3Jl
OjpQbHVnaW5Mb2FkQ2xpZW50UG9saWN5JywKICAgICAgICAgJ1dlYkNvcmU6OlBvaW50ZXJJRCcs
CiAgICAgICAgICdXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcicsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9RdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZp
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhL1F1b3RhSW5jcmVhc2VSZXF1
ZXN0SWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u
OTk5YTllYTkzNTNlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
c2l0ZURhdGEvUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLmgKQEAgLTAsMCArMSwzNSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50
aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gUXVvdGFJbmNyZWFzZVJlcXVl
c3RJZGVudGlmaWVyVHlwZSB7IH07Cit1c2luZyBRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZp
ZXIgPSBPYmplY3RJZGVudGlmaWVyPFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllclR5cGU+
OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291
cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDY3OTYzNzg5ZmEzNC4u
YTEwNWM0Njc2M2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBi
L1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTE0NCwxMCArMTQ0LDE0IEBAIE5ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBA
bm8tdW5pZnkKIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2Vy
LmNwcAogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZUhhbmRsZS5jcHAK
IE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeS5j
cHAKK05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5j
cHAKK05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZU1hbmFnZXIuY3BwCitOZXR3b3Jr
UHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VSZWdpc3RyeS5jcHAKIE5ldHdvcmtQcm9jZXNzL3N0
b3JhZ2UvTG9jYWxTdG9yYWdlTWFuYWdlci5jcHAKIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTWVt
b3J5U3RvcmFnZUFyZWEuY3BwCiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdl
TWFuYWdlci5jcHAKIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIu
Y3BwCitOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1F1b3RhTWFuYWdlci5jcHAKIE5ldHdvcmtQcm9j
ZXNzL3N0b3JhZ2UvU1FMaXRlU3RvcmFnZUFyZWEuY3BwCiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdl
L1Nlc3Npb25TdG9yYWdlTWFuYWdlci5jcHAKIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU3RvcmFn
ZUFyZWFCYXNlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggY2ExYmYxMGQ4ZjI2Li5kYTc5NjUyN2Q1
MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTQ5Miw2ICsxNDkyLDE2IEBAIHZvaWQgTmV0d29ya1By
b2Nlc3NQcm94eTo6cmVxdWVzdFN0b3JhZ2VTcGFjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IGNvbnN0IFdlCiAgICAgfSk7CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6aW5jcmVh
c2VRdW90YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9y
aWdpbiYgb3JpZ2luLCBRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIgaWRlbnRpZmllciwg
dWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCBjdXJyZW50VXNhZ2UsIHVpbnQ2NF90IHNw
YWNlUmVxdWVzdGVkKQoreworICAgIHJlcXVlc3RTdG9yYWdlU3BhY2Uoc2Vzc2lvbklELCBvcmln
aW4sIGN1cnJlbnRRdW90YSwgY3VycmVudFVzYWdlLCBzcGFjZVJlcXVlc3RlZCwgW3RoaXMsIHdl
YWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHNlc3Npb25JRCwgb3JpZ2luLCBpZGVudGlmaWVy
XShhdXRvIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkRp
ZEluY3JlYXNlUXVvdGEoc2Vzc2lvbklELCBvcmlnaW4sIGlkZW50aWZpZXIsIHJlc3VsdCksIDAp
OworICAgIH0pOworfQorCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlZ2lzdGVyU2NoZW1l
Rm9yTGVnYWN5Q3VzdG9tUHJvdG9jb2woY29uc3QgU3RyaW5nJiBzY2hlbWUpCiB7CiAjaWYgRU5B
QkxFKExFR0FDWV9DVVNUT01fUFJPVE9DT0xfTUFOQUdFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggNWM5YzQ1
M2RjYzRkLi4xMzViYWM2YWQ0MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5j
bHVkZSAiUHJvY2Vzc0xhdW5jaGVyLmgiCiAjaW5jbHVkZSAiUHJvY2Vzc1Rocm90dGxlci5oIgog
I2luY2x1ZGUgIlByb2Nlc3NUaHJvdHRsZXJDbGllbnQuaCIKKyNpbmNsdWRlICJRdW90YUluY3Jl
YXNlUmVxdWVzdElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJVc2VyQ29udGVudENvbnRyb2xsZXJJ
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZXNSZXBsaWVzLmgi
CiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgpAQCAtMzM5LDYgKzM0MCw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCB0cmlnZ2VyQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hGb3JOYXZpZ2F0
aW9uKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29y
ZTo6QnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbiwgY29uc3QgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4mIHJlc3BvbnNlRG9tYWluLCBOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRp
ZmllciBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBzdWNjZXNzKT4mJik7CiAKICAgICB2b2lkIHJlcXVlc3RT
dG9yYWdlU3BhY2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYs
IHVpbnQ2NF90IHF1b3RhLCB1aW50NjRfdCBjdXJyZW50U2l6ZSwgdWludDY0X3Qgc3BhY2VSZXF1
aXJlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBxdW90
YSk+JiYpOworICAgIHZvaWQgaW5jcmVhc2VRdW90YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBRdW90YUluY3JlYXNlUmVxdWVz
dElkZW50aWZpZXIsIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgY3VycmVudFVzYWdl
LCB1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCk7CiAKICAgICBXZWJzaXRlRGF0YVN0b3JlKiB3ZWJz
aXRlRGF0YVN0b3JlRnJvbVNlc3Npb25JRChQQUw6OlNlc3Npb25JRCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5tZXNzYWdlcy5pbgppbmRleCBhOTk3NmIyMmU3M2YuLmM5NDU1YThhMTYwMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtNjgsNiArNjgsNyBAQCBtZXNzYWdlcyAtPiBO
ZXR3b3JrUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIHsKICNlbmRpZgogCiAgICAgUmVxdWVz
dFN0b3JhZ2VTcGFjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0cnVjdCBXZWJDb3JlOjpD
bGllbnRPcmlnaW4gb3JpZ2luLCB1aW50NjRfdCBxdW90YSwgdWludDY0X3QgY3VycmVudFNpemUs
IHVpbnQ2NF90IHNwYWNlUmVxdWlyZWQpIC0+IChzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBuZXdR
dW90YSkgQXN5bmMKKyAgICBJbmNyZWFzZVF1b3RhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
c3RydWN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiBvcmlnaW4sIFdlYktpdDo6UXVvdGFJbmNyZWFz
ZVJlcXVlc3RJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVpbnQ2NF90IHF1b3RhLCB1aW50NjRfdCBj
dXJyZW50U2l6ZSwgdWludDY0X3Qgc3BhY2VSZXF1ZXN0ZWQpCiAgICAgCiAgICAgUmVzb3VyY2VM
b2FkRGlkU2VuZFJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJZGVu
dGlmaWVyLCBzdHJ1Y3QgV2ViS2l0OjpSZXNvdXJjZUxvYWRJbmZvIHJlc291cmNlTG9hZEluZm8s
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBzdGQ6Om9wdGlvbmFsPElQQzo6Rm9y
bURhdGFSZWZlcmVuY2U+IGh0dHBCb2R5KQogICAgIFJlc291cmNlTG9hZERpZFBlcmZvcm1IVFRQ
UmVkaXJlY3Rpb24oV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJZGVudGlmaWVy
LCBzdHJ1Y3QgV2ViS2l0OjpSZXNvdXJjZUxvYWRJbmZvIHJlc291cmNlTG9hZEluZm8sIFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UgcmVzb3VyY2VSZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0IHJlcXVlc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VuaWZpZWRTb3VyY2Vz
LW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktpdC9VbmlmaWVkU291cmNlcy1vdXRwdXQu
eGNmaWxlbGlzdAppbmRleCAxYjlkOTdjMzhjNDEuLjExNTQxNjY0ZWY4YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VbmlmaWVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VuaWZpZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC0yMSw2ICsyMSw3
IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvdW5pZmllZC1z
b3VyY2VzL1VuaWZpZWRTb3VyY2UxMTIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0L3VuaWZpZWQtc291cmNlcy9VbmlmaWVkU291cmNlMTEzLmNwcAogJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC91bmlmaWVkLXNvdXJjZXMv
VW5pZmllZFNvdXJjZTExNC5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJLaXQvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2UxMTUuY3BwCiskKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L3VuaWZpZWQtc291cmNlcy9VbmlmaWVk
U291cmNlMTE2LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktp
dC91bmlmaWVkLXNvdXJjZXMvVW5pZmllZFNvdXJjZTEyLW1tLm1tCiAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L3VuaWZpZWQtc291cmNlcy9VbmlmaWVkU291cmNl
MTIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L3VuaWZp
ZWQtc291cmNlcy9VbmlmaWVkU291cmNlMTMtbW0ubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDZlZjZmNzRjMDMzNi4uZGY5ZmFjZjYy
MGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTEyMzUsNyArMTIzNSw3IEBACiAJCTVDQUJEQzg2MjJDNDBGREUwMDFFREU4RSAvKiBX
S01lc3NhZ2VMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNUNBQkRDODUyMkM0MEZDQzAwMUVERThFIC8qIFdLTWVzc2FnZUxpc3RlbmVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNUNBQkRD
ODcyMkM0MEZFRDAwMUVERThFIC8qIEFQSU1lc3NhZ2VMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNBQkRDODMyMkM0MEZBNzAwMUVERThF
IC8qIEFQSU1lc3NhZ2VMaXN0ZW5lci5oICovOyB9OwogCQk1Q0FEREUwNTIxNTA0NkJEMDA2N0Qz
MDkgLyogV0tXZWJQcm9jZXNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1Qzc0MzAwRTIxNTAwNDkyMDA0QkZBMTcgLyogV0tXZWJQcm9jZXNzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNUNBRUNCNjYy
NzQ2NUFFNDAwQUI3OEQwIC8qIFVuaWZpZWRTb3VyY2UxMTUuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNBRUNCNUUyNzQ2NUFFMzAwQUI3OEQwIC8q
IFVuaWZpZWRTb3VyY2UxMTUuY3BwICovOyB9OworCQk1Q0FFQ0I2NjI3NDY1QUU0MDBBQjc4RDAg
LyogVW5pZmllZFNvdXJjZTExNi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1Q0FFQ0I1RTI3NDY1QUUzMDBBQjc4RDAgLyogVW5pZmllZFNvdXJjZTEx
Ni5jcHAgKi87IH07CiAJCTVDQUY3QUE3MjZGOTNBQjAwMDAzRjE5RSAvKiBhZGF0dHJpYnV0aW9u
ZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0FG
N0FBNTI2RjkzQTk1MDAwM0YxOUUgLyogYWRhdHRyaWJ1dGlvbmQuY3BwICovOyB9OwogCQk1Q0FG
REU0NTIxMzA4NDYzMDBCMUY3RTEgLyogX1dLSW5zcGVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0FGREU0MjIxMzA4NDM1MDBCMUY3RTEgLyog
X1dLSW5zcGVjdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNUNBRkRFNDcyMTMwODQ2QTAwQjFGN0UxIC8qIF9XS0luc3BlY3RvckludGVybmFs
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0FGREU0
NDIxMzA4NDM2MDBCMUY3RTEgLyogX1dLSW5zcGVjdG9ySW50ZXJuYWwuaCAqLzsgfTsKQEAgLTE0
MjYsNiArMTQyNiw4IEBACiAJCTkzM0U4MzVBMjNBMUFFMjgwMERFRjI4OSAvKiBXZWJJREJTZXJ2
ZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTMzRTgzNTkyM0ExQURGNTAwREVGMjg5IC8qIFdlYklEQlNlcnZlck1lc3NhZ2VzLmggKi87
IH07CiAJCTkzM0U4MzVCMjNBMUI3NTAwMERFRjI4OSAvKiBXZWJJREJTZXJ2ZXJNZXNzYWdlUmVj
ZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTMzRTgzNTgyM0ExQURGNTAwREVGMjg5IC8qIFdlYklEQlNlcnZlck1lc3NhZ2VSZWNlaXZlci5j
cHAgKi87IH07CiAJCTkzNDI1ODlBMjU1QjUzNUEwMDU5RUVERCAvKiBNZWRpYVBlcm1pc3Npb25V
dGlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDkzNDI1ODk4MjU1QjUzNEIwMDU5RUVERCAvKiBNZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMuaCAq
LzsgfTsKKwkJOTM0Mjg4NzEyNzc1NTlGNTAwODEyQkUxIC8qIFF1b3RhTWFuYWdlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM0Mjg4NkYyNzc1NTlG
NDAwODEyQkUxIC8qIFF1b3RhTWFuYWdlci5oICovOyB9OworCQk5MzQyODg3NDI3NzU1QjkwMDA4
MTJCRTEgLyogUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzQyODg3MzI3NzU1QjhGMDA4MTJCRTEg
LyogUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLmggKi87IH07CiAJCTkzNDY4RTZEMjcx
NEFGODgwMDk5ODNFMyAvKiBTaGFyZWRGaWxlSGFuZGxlQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM0NjhFNkMyNzE0QUY4ODAwOTk4M0Uz
IC8qIFNoYXJlZEZpbGVIYW5kbGVDb2NvYS5jcHAgKi87IH07CiAJCTkzNEI3MjQ0MTlGNUI5QkUw
MEFFOTZENiAvKiBXS0FjdGlvbk1lbnVJdGVtVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNEI3MjQzMTlGNUI5QkUwMEFFOTZENiAvKiBXS0Fj
dGlvbk1lbnVJdGVtVHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk5MzU0MjQyQzI3MDNCRENCMDA1Q0E3MkMgLyogV2ViRmlsZVN5c3RlbVN0
b3JhZ2VDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5MzU0MjQyQTI3MDNCRENCMDA1Q0E3MkMgLyogV2ViRmlsZVN5c3RlbVN0b3JhZ2VD
b25uZWN0aW9uLmggKi87IH07CkBAIC0xNDcxLDYgKzE0NzMsMTAgQEAKIAkJOTNENkI3QjQyNTUy
NjhENTAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDZCN0FGMjU1MjY4
QTEwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmggKi87IH07
CiAJCTkzRDZCN0I1MjU1MjY4RDcwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25NYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5M0Q2QjdCMjI1NTI2OEEyMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
TWFuYWdlci5oICovOyB9OwogCQk5M0Q2QjdCOTI1NTM0QTE3MDA1OEREM0EgLyogV0tTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTNENkI3QjcyNTUzNEExMTAwNThERDNBIC8qIFdLU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5M0UyOTYxODI3ODM2QTE0MDAwOTlCOEIgLyogSURC
U3RvcmFnZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDkzRTI5NjE2Mjc4MzZBMTMwMDA5OUI4QiAvKiBJREJTdG9yYWdlTWFuYWdlci5oICov
OyB9OworCQk5M0UyOTYxQzI3ODM2REZGMDAwOTlCOEIgLyogSURCU3RvcmFnZUNvbm5lY3Rpb25U
b0NsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTNFMjk2MUEyNzgzNkRGRjAwMDk5QjhCIC8qIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQu
aCAqLzsgfTsKKwkJOTNFMjk2MjUyNzgzNzU3QTAwMDk5QjhCIC8qIElEQlN0b3JhZ2VSZWdpc3Ry
eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNFMjk2
MjMyNzgzNzU3QTAwMDk5QjhCIC8qIElEQlN0b3JhZ2VSZWdpc3RyeS5oICovOyB9OworCQk5M0Uy
OTYyOTI3ODRENDM4MDAwOTlCOEIgLyogVW5pZmllZFNvdXJjZTExNS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0UyOTYyODI3ODRENDM4MDAwOTlC
OEIgLyogVW5pZmllZFNvdXJjZTExNS5jcHAgKi87IH07CiAJCTkzRTZBNEVFMUJDNUREMzkwMEY4
QTBFNyAvKiBfV0tIaXRUZXN0UmVzdWx0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5M0U2QTRFRDFCQzVERDM5MDBGOEEwRTcgLyogX1dLSGl0VGVzdFJl
c3VsdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTkzRTc5OTg1Mjc1NkZBNTUwMDc0MDA4QSAvKiBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rp
b25NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTNFNzk5ODIyNzU2RkE1NDAwNzQwMDhBIC8qIFdlYkZpbGVTeXN0ZW1TdG9y
YWdlQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTkzRTc5OTg3Mjc1NkZB
QjQwMDc0MDA4QSAvKiBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb25NZXNzYWdlc1JlcGxp
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRTc5
OTgzMjc1NkZBNTQwMDc0MDA4QSAvKiBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb25NZXNz
YWdlc1JlcGxpZXMuaCAqLzsgfTsKQEAgLTQ4NTYsNyArNDg2Miw3IEBACiAJCTVDQUJEQzg0MjJD
NDBGQ0MwMDFFREU4RSAvKiBXS01lc3NhZ2VMaXN0ZW5lci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXS01lc3NhZ2VMaXN0ZW5lci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTVDQUJEQzg1MjJDNDBGQ0MwMDFFREU4RSAvKiBXS01lc3NhZ2VMaXN0
ZW5lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS01lc3NhZ2VMaXN0ZW5l
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0FEREUwRDIxNTFBQTAxMDA2N0Qz
MDkgLyogQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTVDQUVDQjVFMjc0NjVBRTMwMEFCNzhEMCAv
KiBVbmlmaWVkU291cmNlMTE1LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRTb3VyY2Ux
MTUuY3BwOyBwYXRoID0gIkRlcml2ZWRTb3VyY2VzL1dlYktpdC91bmlmaWVkLXNvdXJjZXMvVW5p
ZmllZFNvdXJjZTExNS5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9Owor
CQk1Q0FFQ0I1RTI3NDY1QUUzMDBBQjc4RDAgLyogVW5pZmllZFNvdXJjZTExNi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBVbmlmaWVkU291cmNlMTE2LmNwcDsgcGF0aCA9ICJEZXJpdmVkU291cmNl
cy9XZWJLaXQvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2UxMTYuY3BwIjsgc291cmNlVHJl
ZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJNUNBRjdBQTQyNkY5M0E3NTAwMDNGMTlFIC8q
IGFkYXR0cmlidXRpb25kICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0Rmls
ZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7
IHBhdGggPSBhZGF0dHJpYnV0aW9uZDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsg
fTsKIAkJNUNBRjdBQTUyNkY5M0E5NTAwMDNGMTlFIC8qIGFkYXR0cmlidXRpb25kLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IGFkYXR0cmlidXRpb25kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNUNBRjdBQTYyNkY5M0FBNTAwMDNGMTlFIC8qIGFkYXR0cmlidXRpb25kLnhjY29u
ZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dC54Y2NvbmZpZzsgcGF0aCA9IGFkYXR0cmlidXRpb25kLnhjY29uZmlnOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNTIzMSw2ICs1MjM3LDkgQEAKIAkJOTMzRTgzNTkyM0ExQURGNTAw
REVGMjg5IC8qIFdlYklEQlNlcnZlck1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IFdlYklEQlNlcnZlck1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9X
ZWJLaXQvV2ViSURCU2VydmVyTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RT
X0RJUjsgfTsKIAkJOTM0MjU4OEYyNTU1RENBNTAwNTlFRUREIC8qIE1lZGlhUGVybWlzc2lvblV0
aWxpdGllcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1lZGlhUGVybWlzc2lvblV0aWxpdGll
cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM0MjU4OTgyNTVCNTM0QjAwNTlF
RUREIC8qIE1lZGlhUGVybWlzc2lvblV0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBNZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJOTM0Mjg4NkYyNzc1NTlGNDAwODEyQkUxIC8qIFF1b3RhTWFuYWdlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBRdW90YU1hbmFnZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTM0Mjg4NzAyNzc1NTlGNTAwODEyQkUxIC8qIFF1b3RhTWFu
YWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBRdW90YU1hbmFn
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5MzQyODg3MzI3NzU1QjhGMDA4
MTJCRTEgLyogUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzQ2OEU2QTI3MTRBRjQ3MDA5OTgzRTMgLyogU2hh
cmVkRmlsZUhhbmRsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
aGFyZWRGaWxlSGFuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM0NjhF
NkMyNzE0QUY4ODAwOTk4M0UzIC8qIFNoYXJlZEZpbGVIYW5kbGVDb2NvYS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFyZWRGaWxlSGFuZGxlQ29jb2EuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzRCNzI0MzE5RjVCOUJFMDBBRTk2RDYgLyog
V0tBY3Rpb25NZW51SXRlbVR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdLQWN0aW9uTWVudUl0ZW1UeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
NTMxOCw2ICs1MzI3LDEzIEBACiAJCTkzRDZCN0IyMjU1MjY4QTIwMDU4REQzQSAvKiBTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTNENkI3QjcyNTUzNEExMTAwNThERDNBIC8qIFdLU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5M0Q2QjdCODI1NTM0QTEyMDA1OEREM0EgLyogV0tTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNFMjk2MTUyNzgzNkExMzAwMDk5QjhCIC8q
IElEQlN0b3JhZ2VNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IElEQlN0b3JhZ2VNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
OTNFMjk2MTYyNzgzNkExMzAwMDk5QjhCIC8qIElEQlN0b3JhZ2VNYW5hZ2VyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElEQlN0b3JhZ2VNYW5hZ2VyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTkzRTI5NjE5Mjc4MzZERkUwMDA5OUI4QiAvKiBJREJTdG9yYWdl
Q29ubmVjdGlvblRvQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk5M0UyOTYxQTI3ODM2REZGMDAwOTlCOEIgLyogSURCU3RvcmFnZUNvbm5lY3Rp
b25Ub0NsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJREJTdG9yYWdl
Q29ubmVjdGlvblRvQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRTI5
NjIyMjc4Mzc1N0EwMDA5OUI4QiAvKiBJREJTdG9yYWdlUmVnaXN0cnkuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSURCU3RvcmFnZVJlZ2lzdHJ5LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNFMjk2MjMyNzgzNzU3QTAwMDk5QjhCIC8qIElEQlN0
b3JhZ2VSZWdpc3RyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJREJTdG9y
YWdlUmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNFMjk2MjgyNzg0
RDQzODAwMDk5QjhCIC8qIFVuaWZpZWRTb3VyY2UxMTUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gVW5pZmllZFNvdXJjZTExNS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkzRTZBNEVEMUJDNUREMzkwMEY4QTBFNyAvKiBfV0tIaXRUZXN0UmVzdWx0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0hpdFRlc3RSZXN1bHQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNFNzk5N0UyNzU2RjY3MDAwNzQwMDhBIC8q
IFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW47IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRTc5OTgxMjc1NkZBNTMwMDc0MDA4QSAvKiBX
ZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb25NZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb25NZXNzYWdlcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzQ3Myw2ICs3NDg5LDcgQEAKIAkJMUFC
RjQzNzgxQTM2ODAzNTAwM0ZCMEU2IC8qIFdlYnNpdGVEYXRhICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk5MzQyODg3MzI3NzU1QjhGMDA4MTJCRTEgLyog
UXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLmggKi8sCiAJCQkJMUE0ODMyRDQxQTlDREY5
NjAwOEI0REZFIC8qIFdlYnNpdGVEYXRhLmNwcCAqLywKIAkJCQkxQTQ4MzJENTFBOUNERjk2MDA4
QjRERkUgLyogV2Vic2l0ZURhdGEuaCAqLywKIAkJCQkxQTI4QjhDQjFDODBFRDU5MDA2RkQ3NDMg
LyogV2Vic2l0ZURhdGFGZXRjaE9wdGlvbi5oICovLApAQCAtODAyNSw2ICs4MDQyLDcgQEAKIAkJ
MkQ3REVCRTIyMTI2OUU0QjAwQjlGNzNDIC8qIHVuaWZpZWQtc291cmNlcyAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJOTNFMjk2MjgyNzg0RDQzODAwMDk5
QjhCIC8qIFVuaWZpZWRTb3VyY2UxMTUuY3BwICovLAogCQkJCTJEN0RFQzk0MjEyNjlFNEMwMEI5
RjczQyAvKiBVbmlmaWVkU291cmNlMS1tbS5tbSAqLywKIAkJCQkyRDdERUQ1QjIxMjY5RTREMDBC
OUY3M0MgLyogVW5pZmllZFNvdXJjZTEuY3BwICovLAogCQkJCTJEN0RFQzAzMjEyNjlFNEIwMEI5
RjczQyAvKiBVbmlmaWVkU291cmNlMi1tbS5tbSAqLywKQEAgLTgyMTksNyArODIzNyw3IEBACiAJ
CQkJOTNFNzk5RDEyNzYwQUE1QTAwNzQwMDhBIC8qIFVuaWZpZWRTb3VyY2UxMTIuY3BwICovLAog
CQkJCTNDQUVDQjVFMjc0NjVBRTMwMEFCNzhEMCAvKiBVbmlmaWVkU291cmNlMTEzLmNwcCAqLywK
IAkJCQk0Q0FFQ0I1RTI3NDY1QUUzMDBBQjc4RDAgLyogVW5pZmllZFNvdXJjZTExNC5jcHAgKi8s
Ci0JCQkJNUNBRUNCNUUyNzQ2NUFFMzAwQUI3OEQwIC8qIFVuaWZpZWRTb3VyY2UxMTUuY3BwICov
LAorCQkJCTVDQUVDQjVFMjc0NjVBRTMwMEFCNzhEMCAvKiBVbmlmaWVkU291cmNlMTE2LmNwcCAq
LywKIAkJCSk7CiAJCQluYW1lID0gInVuaWZpZWQtc291cmNlcyI7CiAJCQlwYXRoID0gIkRlcml2
ZWRTb3VyY2VzL1dlYktpdC91bmlmaWVkLXNvdXJjZXMiOwpAQCAtMTAyOTQsNiArMTAzMTIsMTQg
QEAKIAkJOTMwODVEQzIyNkUxQkI2NTAwMEVDNkE3IC8qIHN0b3JhZ2UgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTkzRTI5NjIyMjc4Mzc1N0EwMDA5OUI4
QiAvKiBJREJTdG9yYWdlUmVnaXN0cnkuY3BwICovLAorCQkJCTkzRTI5NjIzMjc4Mzc1N0EwMDA5
OUI4QiAvKiBJREJTdG9yYWdlUmVnaXN0cnkuaCAqLywKKwkJCQk5M0UyOTYxNTI3ODM2QTEzMDAw
OTlCOEIgLyogSURCU3RvcmFnZU1hbmFnZXIuY3BwICovLAorCQkJCTkzRTI5NjE5Mjc4MzZERkUw
MDA5OUI4QiAvKiBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50LmNwcCAqLywKKwkJCQk5M0Uy
OTYxQTI3ODM2REZGMDAwOTlCOEIgLyogSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5oICov
LAorCQkJCTkzRTI5NjE2Mjc4MzZBMTMwMDA5OUI4QiAvKiBJREJTdG9yYWdlTWFuYWdlci5oICov
LAorCQkJCTkzNDI4ODcwMjc3NTU5RjUwMDgxMkJFMSAvKiBRdW90YU1hbmFnZXIuY3BwICovLAor
CQkJCTkzNDI4ODZGMjc3NTU5RjQwMDgxMkJFMSAvKiBRdW90YU1hbmFnZXIuaCAqLywKIAkJCQk5
MzFBMUJFMDI2Rjg1QzMyMDA4MUE3RTUgLyogRmlsZVN5c3RlbVN0b3JhZ2VFcnJvci5oICovLAog
CQkJCTkzMUEwNzUyMjZGMDZBQjQwMDQ0NzRDRCAvKiBGaWxlU3lzdGVtU3RvcmFnZUhhbmRsZS5j
cHAgKi8sCiAJCQkJOTMxQTA3NTMyNkYwNkFCNDAwNDQ3NENEIC8qIEZpbGVTeXN0ZW1TdG9yYWdl
SGFuZGxlLmggKi8sCkBAIC0xMjgxNSw2ICsxMjg0MSw3IEBACiAJCQkJOTk1NUE2RjUxQzc5ODZF
MDAwRUI2QTkzIC8qIEF1dG9tYXRpb25CYWNrZW5kRGlzcGF0Y2hlcnMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTk5QzgxRDVBMUMyMEU3RTIwMDVDNEM4MiAvKiBBdXRvbWF0aW9uQ2xpZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQk5OTI0OUFENjFGMUYxRTVGMDBCNjJGQkIgLyogQXV0b21hdGlvbkZy
b250ZW5kRGlzcGF0Y2hlcnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTkzRTI5NjFDMjc4MzZERkYw
MDA5OUI4QiAvKiBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQk5OTU1QTZGNzFDNzk4NkU1MDBFQjZBOTMgLyogQXV0b21hdGlvblByb3RvY29sT2JqZWN0
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTkwRDI4QkIxQzY1MzlEMzAwOTg2OTc3IC8qIEF1dG9t
YXRpb25TZXNzaW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTJEOTU2RjEyODQ4NTY0
MDAxRUI5NjIgLyogQXV4aWxpYXJ5UHJvY2Vzcy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMzA3NSw2
ICsxMzEwMiw3IEBACiAJCQkJMzc1NEQ1NDUxQjNBMjlGRDAwM0E0QzdGIC8qIE5TSW52b2NhdGlv
blNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFERDcyQUIyNjgyMTY3MzAwQTkwQzcxIC8qIE5X
U1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzhBQ0ExMzE2NjcwRDg5MDA0QzE5NDEgLyogT2Jq
Q09iamVjdEdyYXBoLmggaW4gSGVhZGVycyAqLywKKwkJCQk5MzQyODg3NDI3NzU1QjkwMDA4MTJC
RTEgLyogUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5MzA4NURDQTI2RTI5Nzc1MDAwRUM2QTcgLyogT3JpZ2luU3RvcmFnZU1hbmFnZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUY0RUI0QUZEMjY5Q0Q3RjMwMEQyOTdBRSAvKiBPU1N0YXRlU1BJLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk3Q0Y0N0ZGQjE3Mjc1QzU3MDA4QUNCOTEgLyogUGFnZUJhbm5l
ci5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMzU5MCw2ICsxMzYxOCw3IEBACiAJCQkJMzdDNEMwODcx
ODE0OUM1QjAwMzY4OEI5IC8qIFdLQmFja0ZvcndhcmRMaXN0SXRlbS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMzdDNEMwODkxODE0OUYyMzAwMzY4OEI5IC8qIFdLQmFja0ZvcndhcmRMaXN0SXRlbUlu
dGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQkyREZGN0I2RjFEQTRDRkFGMDA4MTQ2MTQgLyog
V0tCYWNrRm9yd2FyZExpc3RJdGVtUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTM0Mjg4
NzEyNzc1NTlGNTAwODEyQkUxIC8qIFF1b3RhTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkM2NDZDMUQxMUREMzk5RjAwNjQ1NUIwIC8qIFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTI4QzM3QzExOTVDQkIxQTAwRDhCOUNDIC8qIFdLQmFja0Zvcndh
cmRMaXN0UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM2NDZDMUIxMUREMzk5RjAwNjQ1
NUIwIC8qIFdLQmFja0ZvcndhcmRMaXN0UmVmLmggaW4gSGVhZGVycyAqLywKQEAgLTEzNjc0LDYg
KzEzNzAzLDcgQEAKIAkJCQk5RkI1RjM5NTE2OUU2QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0UHJp
dmF0ZU1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzMwOTM0NUIxMzE1Qjk5ODAwOTdBN0JDIC8q
IFdLQ29va2llTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFGQjY4MjQxRjZFNTE4MjAw
QzQzRjlGIC8qIFdLQ3Jhc2hSZXBvcnRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTNFMjk2MjUy
NzgzNzU3QTAwMDk5QjhCIC8qIElEQlN0b3JhZ2VSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTEyRjU4RkExMkE4OEE1NDAwNjI5NTMwIC8qIFdLQ3JlZGVudGlhbC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTE4QUNGMTExMkIwMTVGODAwQjA0QjgzIC8qIFdLQ3JlZGVudGlhbFR5cGVzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzQwNzVGODEyNEZGMDI3MDA2OEYyMEEgLyogV0tEYXRhLmgg
aW4gSGVhZGVycyAqLywKQEAgLTEzNzc4LDYgKzEzODA4LDcgQEAKIAkJCQlCQzQwNzVGRTEyNEZG
MDI3MDA2OEYyMEEgLyogV0tNdXRhYmxlQXJyYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNDA3
NjAwMTI0RkYwMjcwMDY4RjIwQSAvKiBXS011dGFibGVEaWN0aW9uYXJ5LmggaW4gSGVhZGVycyAq
LywKIAkJCQlDMDlBRTVFOTEyNTI1N0MyMDAyNTgyNUQgLyogV0tOYXRpdmVFdmVudC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJOTNFMjk2MTgyNzgzNkExNDAwMDk5QjhCIC8qIElEQlN0b3JhZ2VNYW5h
Z2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTVCMUM1MTE4OTg2MDZGMDA0RkNGOUIgLyogV0tO
YXZpZ2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTI1NkUzODE4QTFBNzg4MDA2RkI5MjIg
LyogV0tOYXZpZ2F0aW9uQWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTI1NkUzQTE4QTFB
N0RGMDA2RkI5MjIgLyogV0tOYXZpZ2F0aW9uQWN0aW9uSW50ZXJuYWwuaCBpbiBIZWFkZXJzICov
LApAQCAtMTU0NDYsNiArMTU0NzcsNyBAQAogCQkJCTUxNjMxOTk0MTYyODlBNjAwMEUyMkYwMCAv
KiBOZXR3b3JrUHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1
MTNBMTYzQzE2MzA4OEY2MDA1RDdEMjIgLyogTmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2VSZWNl
aXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTUyNTUxQTE3MDExODE5MDAzRDdBREIgLyog
TmV0d29ya1Jlc291cmNlTG9hZGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTkzRTI5NjI5Mjc4NEQ0MzgwMDA5OUI4QiAvKiBVbmlmaWVkU291cmNlMTE1LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTUxRjA2MEUxMTY1NDMxODUwMEYzMjgxRSAvKiBOZXR3b3JrUlRDTW9u
aXRvck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTc2OTAxNDIyRkRE
NDFCMDBCMTU3NkQgLyogTmV0d29ya1JUQ1Byb3ZpZGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NTFGMDYwRTExNjU0MzE4NTAwRjMyODJFIC8qIE5ldHdvcmtSVENQcm92aWRlck1lc3NhZ2VSZWNl
aXZlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTE1Njk3LDcgKzE1NzI5LDcgQEAKIAkJCQk5M0U3
OTlEMjI3NjBBQTVCMDA3NDAwOEEgLyogVW5pZmllZFNvdXJjZTExMi5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkzQ0FFQ0I2NjI3NDY1QUU0MDBBQjc4RDAgLyogVW5pZmllZFNvdXJjZTExMy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk0Q0FFQ0I2NjI3NDY1QUU0MDBBQjc4RDAgLyogVW5pZmllZFNv
dXJjZTExNC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1Q0FFQ0I2NjI3NDY1QUU0MDBBQjc4RDAg
LyogVW5pZmllZFNvdXJjZTExNS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1Q0FFQ0I2NjI3NDY1
QUU0MDBBQjc4RDAgLyogVW5pZmllZFNvdXJjZTExNi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlF
MzhBMUZDMDIzQTU1MUJGMDBEMjM3NEYgLyogVXNlckludGVyZmFjZUlkaW9tLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQ0Q0OTFCMEQxRTczMkU0RDAwMDA5MDY2IC8qIFVzZXJNZWRpYUNhcHR1cmVN
YW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNENDkxQjE3MUU3
MzUyNTUwMDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5TWVzc2FnZVJlY2Vp
dmVyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rp
b25Ub1NlcnZlci5jcHAKaW5kZXggMDRjMjQxMGYzNWFkLi5kNzkwMTY5YmUwZjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNv
bm5lY3Rpb25Ub1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0RhdGFi
YXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcApAQCAtMjksOSArMjks
OSBAQAogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uLmgiCisjaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VNYW5hZ2VyTWVzc2FnZXMuaCIKICNp
bmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJJREJSZXN1bHQu
aCIKLSNpbmNsdWRlICJXZWJJREJTZXJ2ZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nl
c3MuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvSURCQ3Vyc29ySW5mby5oPgpAQCAtODIsMTMyICs4MiwxMzIgQEAgSURCQ2xp
ZW50OjpJREJDb25uZWN0aW9uVG9TZXJ2ZXImIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Y29y
ZUNvbm5lY3Rpb25Ub1NlcnYKIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRlbGV0
ZURhdGFiYXNlKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkKIHsKLSAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OkRlbGV0ZURhdGFiYXNlKHJlcXVlc3REYXRhKSk7Cisg
ICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpEZWxldGVEYXRhYmFzZShy
ZXF1ZXN0RGF0YSkpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6b3BlbkRh
dGFiYXNlKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkKIHsKLSAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJJREJTZXJ2ZXI6Ok9wZW5EYXRhYmFzZShyZXF1ZXN0RGF0YSkpOworICAgIHNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6T3BlbkRhdGFiYXNlKHJlcXVlc3RE
YXRhKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjphYm9ydFRyYW5zYWN0
aW9uKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKQog
ewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6QWJvcnRUcmFuc2FjdGlvbih0cmFu
c2FjdGlvbklkZW50aWZpZXIpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1h
bmFnZXI6OkFib3J0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZGVudGlmaWVyKSk7CiB9CiAKIHZv
aWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpjb21taXRUcmFuc2FjdGlvbihjb25zdCBJREJS
ZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgcGVuZGlu
Z1JlcXVlc3RDb3VudCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OkNvbW1p
dFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgcGVuZGluZ1JlcXVlc3RDb3VudCkp
OworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Q29tbWl0VHJhbnNh
Y3Rpb24odHJhbnNhY3Rpb25JZGVudGlmaWVyLCBwZW5kaW5nUmVxdWVzdENvdW50KSk7CiB9CiAK
IHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpkaWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25D
aGFuZ2VUcmFuc2FjdGlvbih1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBj
b25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcikKIHsKLSAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OkRpZEZpbmlzaEhhbmRsaW5nVmVyc2lvbkNo
YW5nZVRyYW5zYWN0aW9uKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHRyYW5zYWN0aW9u
SWRlbnRpZmllcikpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6
RGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24oZGF0YWJhc2VDb25uZWN0
aW9uSWRlbnRpZmllciwgdHJhbnNhY3Rpb25JZGVudGlmaWVyKSk7CiB9CiAKIHZvaWQgV2ViSURC
Q29ubmVjdGlvblRvU2VydmVyOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0
YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYgaW5mbykKIHsKLSAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OkNyZWF0ZU9iamVjdFN0b3JlKHJlcXVlc3REYXRh
LCBpbmZvKSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpDcmVh
dGVPYmplY3RTdG9yZShyZXF1ZXN0RGF0YSwgaW5mbykpOwogfQogCiB2b2lkIFdlYklEQkNvbm5l
Y3Rpb25Ub1NlcnZlcjo6ZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVxdWVzdERhdGEmIHJl
cXVlc3REYXRhLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSkKIHsKLSAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OkRlbGV0ZU9iamVjdFN0b3JlKHJlcXVlc3REYXRhLCBvYmpl
Y3RTdG9yZU5hbWUpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6
OkRlbGV0ZU9iamVjdFN0b3JlKHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZU5hbWUpKTsKIH0KIAog
dm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OnJlbmFtZU9iamVjdFN0b3JlKGNvbnN0IElE
QlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIG5ld05hbWUpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2Vy
dmVyOjpSZW5hbWVPYmplY3RTdG9yZShyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVy
LCBuZXdOYW1lKSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpS
ZW5hbWVPYmplY3RTdG9yZShyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBuZXdO
YW1lKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpjbGVhck9iamVjdFN0
b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgdWludDY0X3Qgb2JqZWN0U3Rv
cmVJZGVudGlmaWVyKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6Q2xlYXJP
YmplY3RTdG9yZShyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyKSk7CisgICAgc2Vu
ZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpDbGVhck9iamVjdFN0b3JlKHJlcXVl
c3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIpKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0
aW9uVG9TZXJ2ZXI6OmNyZWF0ZUluZGV4KGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0
YSwgY29uc3QgSURCSW5kZXhJbmZvJiBpbmZvKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklE
QlNlcnZlcjo6Q3JlYXRlSW5kZXgocmVxdWVzdERhdGEsIGluZm8pKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkNyZWF0ZUluZGV4KHJlcXVlc3REYXRhLCBpbmZv
KSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpkZWxldGVJbmRleChjb25z
dCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBpbmRleE5hbWUpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2Vi
SURCU2VydmVyOjpEZWxldGVJbmRleChyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVy
LCBpbmRleE5hbWUpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6
OkRlbGV0ZUluZGV4KHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4TmFt
ZSkpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6cmVuYW1lSW5kZXgoY29u
c3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50
aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lKQog
ewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6UmVuYW1lSW5kZXgocmVxdWVzdERh
dGEsIG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhJZGVudGlmaWVyLCBuZXdOYW1lKSk7Cisg
ICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpSZW5hbWVJbmRleChyZXF1
ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleElkZW50aWZpZXIsIG5ld05hbWUp
KTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OnB1dE9yQWRkKGNvbnN0IElE
QlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5RGF0YSYga2V5RGF0YSwgY29u
c3QgSURCVmFsdWUmIHZhbHVlLCBjb25zdCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRl
TW9kZSBtb2RlKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6UHV0T3JBZGQo
cmVxdWVzdERhdGEsIGtleURhdGEsIHZhbHVlLCBtb2RlKSk7CisgICAgc2VuZChNZXNzYWdlczo6
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpQdXRPckFkZChyZXF1ZXN0RGF0YSwga2V5RGF0YSwgdmFs
dWUsIG1vZGUpKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmdldFJlY29y
ZChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkdldFJlY29yZERh
dGEmIGdldFJlY29yZERhdGEpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyOjpH
ZXRSZWNvcmQocmVxdWVzdERhdGEsIGdldFJlY29yZERhdGEpKTsKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkdldFJlY29yZChyZXF1ZXN0RGF0YSwgZ2V0UmVjb3Jk
RGF0YSkpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Z2V0QWxsUmVjb3Jk
cyhjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkdldEFsbFJlY29y
ZHNEYXRhJiBnZXRBbGxSZWNvcmRzRGF0YSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJT
ZXJ2ZXI6OkdldEFsbFJlY29yZHMocmVxdWVzdERhdGEsIGdldEFsbFJlY29yZHNEYXRhKSk7Cisg
ICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpHZXRBbGxSZWNvcmRzKHJl
cXVlc3REYXRhLCBnZXRBbGxSZWNvcmRzRGF0YSkpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rp
b25Ub1NlcnZlcjo6Z2V0Q291bnQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBj
b25zdCBJREJLZXlSYW5nZURhdGEmIHJhbmdlKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklE
QlNlcnZlcjo6R2V0Q291bnQocmVxdWVzdERhdGEsIHJhbmdlKSk7CisgICAgc2VuZChNZXNzYWdl
czo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpHZXRDb3VudChyZXF1ZXN0RGF0YSwgcmFuZ2UpKTsK
IH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRlbGV0ZVJlY29yZChjb25zdCBJ
REJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQktleVJhbmdlRGF0YSYgcmFuZ2Up
CiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyOjpEZWxldGVSZWNvcmQocmVxdWVz
dERhdGEsIHJhbmdlKSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2Vy
OjpEZWxldGVSZWNvcmQocmVxdWVzdERhdGEsIHJhbmdlKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29u
bmVjdGlvblRvU2VydmVyOjpvcGVuQ3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0
RGF0YSwgY29uc3QgSURCQ3Vyc29ySW5mbyYgaW5mbykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJJREJTZXJ2ZXI6Ok9wZW5DdXJzb3IocmVxdWVzdERhdGEsIGluZm8pKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Ok9wZW5DdXJzb3IocmVxdWVzdERhdGEsIGlu
Zm8pKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6Oml0ZXJhdGVDdXJzb3Io
Y29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJJdGVyYXRlQ3Vyc29y
RGF0YSYgZGF0YSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6Okl0ZXJhdGVD
dXJzb3IocmVxdWVzdERhdGEsIGRhdGEpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6Okl0ZXJhdGVDdXJzb3IocmVxdWVzdERhdGEsIGRhdGEpKTsKIH0KIAogdm9p
ZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmVzdGFibGlzaFRyYW5zYWN0aW9uKHVpbnQ2NF90
IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYg
aW5mbykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OkVzdGFibGlzaFRyYW5z
YWN0aW9uKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGluZm8pKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkVzdGFibGlzaFRyYW5zYWN0aW9uKGRhdGFi
YXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGluZm8pKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0
aW9uVG9TZXJ2ZXI6OmRhdGFiYXNlQ29ubmVjdGlvblBlbmRpbmdDbG9zZSh1aW50NjRfdCBkYXRh
YmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNl
cnZlcjo6RGF0YWJhc2VDb25uZWN0aW9uUGVuZGluZ0Nsb3NlKGRhdGFiYXNlQ29ubmVjdGlvbklk
ZW50aWZpZXIpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkRh
dGFiYXNlQ29ubmVjdGlvblBlbmRpbmdDbG9zZShkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVy
KSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpkYXRhYmFzZUNvbm5lY3Rp
b25DbG9zZWQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcikKIHsKLSAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OkRhdGFiYXNlQ29ubmVjdGlvbkNsb3NlZChkYXRh
YmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0
b3JhZ2VNYW5hZ2VyOjpEYXRhYmFzZUNvbm5lY3Rpb25DbG9zZWQoZGF0YWJhc2VDb25uZWN0aW9u
SWRlbnRpZmllcikpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6YWJvcnRP
cGVuQW5kVXBncmFkZU5lZWRlZCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVy
LCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcikKIHsK
LSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OkFib3J0T3BlbkFuZFVwZ3JhZGVOZWVk
ZWQoZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgdHJhbnNhY3Rpb25JZGVudGlmaWVyKSk7
CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpBYm9ydE9wZW5BbmRV
cGdyYWRlTmVlZGVkKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHRyYW5zYWN0aW9uSWRl
bnRpZmllcikpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGlkRmlyZVZl
cnNpb25DaGFuZ2VFdmVudCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBj
b25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBJbmRl
eGVkREI6OkNvbm5lY3Rpb25DbG9zZWRPbkJlaGFsZk9mU2VydmVyIGNvbm5lY3Rpb25DbG9zZWQp
CiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyOjpEaWRGaXJlVmVyc2lvbkNoYW5n
ZUV2ZW50KGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHJlcXVlc3RJZGVudGlmaWVyLCBj
b25uZWN0aW9uQ2xvc2VkKSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5h
Z2VyOjpEaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZp
ZXIsIHJlcXVlc3RJZGVudGlmaWVyLCBjb25uZWN0aW9uQ2xvc2VkKSk7CiB9CiAKIHZvaWQgV2Vi
SURCQ29ubmVjdGlvblRvU2VydmVyOjpvcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKGNvbnN0IElEQlJl
cXVlc3REYXRhJiByZXF1ZXN0RGF0YSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2
ZXI6Ok9wZW5EQlJlcXVlc3RDYW5jZWxsZWQocmVxdWVzdERhdGEpKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Ok9wZW5EQlJlcXVlc3RDYW5jZWxsZWQocmVxdWVz
dERhdGEpKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmdldEFsbERhdGFi
YXNlTmFtZXNBbmRWZXJzaW9ucyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJ
ZGVudGlmaWVyLCBjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbikKIHsKLSAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJJREJTZXJ2ZXI6OkdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhyZXF1ZXN0
SWRlbnRpZmllciwgb3JpZ2luKSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VN
YW5hZ2VyOjpHZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMocmVxdWVzdElkZW50aWZpZXIs
IG9yaWdpbikpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGlkRGVsZXRl
RGF0YWJhc2UoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448895</attachid>
            <date>2022-01-11 17:43:28 -0800</date>
            <delta_ts>2022-02-03 09:15:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234925-20220111174327.patch</filename>
            <type>text/plain</type>
            <size>286894</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3ODYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDQxZjJkMmZlNzhlMmVlOGMyYTg5NTM3
MzJiNjA0ZDNkMDQwNDM1ZGEuLmFiZmU0YjgyNGZhNDhhMjEwNGQ1NTE1NjZlNTA5MDRkYWY3ZTkz
NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjItMDEtMTEgIFNpaHVpIExpdSAgPHNpaHVpX2xp
dUBhcHBsZS5jb20+CisKKyAgICAgICAgTWFuYWdlIEluZGV4ZWREQiBzdG9yYWdlIGJ5IG9yaWdp
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0OTI1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYv
RmlsZVN5c3RlbS5jcHA6CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpyZWFkU3ltYm9s
aWNMaW5rKToKKyAgICAgICAgKiB3dGYvRmlsZVN5c3RlbS5oOgorCiAyMDIyLTAxLTEwICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgU3RhcnQg
dXNpbmcgQysrMjAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3YTQ1ZGIwMTE2MzAzOGZkMjkxYjk0NWRmMjc3ZWNj
MDA2YmI5ZDA5Li4wZjMzNGJhZmNhNWE2NTQ3MTg3ZTQ4M2NlNWZjOGJjZjEzNzEyNGUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsODcgQEAKKzIwMjItMDEtMTEgIFNpaHVpIExpdSAgPHNpaHVpX2xp
dUBhcHBsZS5jb20+CisKKyAgICAgICAgTWFuYWdlIEluZGV4ZWREQiBzdG9yYWdlIGJ5IG9yaWdp
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0OTI1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ292ZXJl
ZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRh
dGFiYXNlSWRlbnRpZmllci5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9J
REJDb25uZWN0aW9uVG9DbGllbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvSURCU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVy
OjpyZWdpc3RlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJT
ZXJ2ZXI6OnVucmVnaXN0ZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZl
cjo6SURCU2VydmVyOjpjcmVhdGVCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpJREJTZXJ2ZXI6OnVwZ3JhZGVkRGF0YWJhc2VEaXJlY3RvcnkpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OnJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0aW9u
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjp1bnJl
Z2lzdGVyRGF0YWJhc2VDb25uZWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6SURCU2VydmVyOjpjbG9zZUFuZFRha2VVbmlxdWVJREJEYXRhYmFzZSk6IERlbGV0
ZWQuCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5oOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlJREJCYWNraW5nU3RvcmU6Ok1l
bW9yeUlEQkJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9y
eUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpNZW1vcnlJREJCYWNraW5nU3RvcmU6OnJldmVydEdlbmVyYXRlZEtleU51bWJl
cik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdT
dG9yZS5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RT
dG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeU9iamVjdFN0b3Jl
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlPYmplY3RTdG9y
ZTo6TWVtb3J5T2JqZWN0U3RvcmUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9NZW1vcnlPYmplY3RTdG9yZS5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZSk6CisgICAgICAg
IChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZW5jb2RlRGF0YWJh
c2VOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0
b3JlOjpkZWNvZGVEYXRhYmFzZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpT
UUxpdGVJREJCYWNraW5nU3RvcmU6OmdldE9yRXN0YWJsaXNoRGF0YWJhc2VJbmZvKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVCYWNr
aW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5n
U3RvcmU6OmZpbGVuYW1lRm9yRGF0YWJhc2VOYW1lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpmdWxsRGF0YWJhc2VE
aXJlY3RvcnlXaXRoVXBncmFkZSk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5oOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
REJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpVbmlxdWVJREJEYXRhYmFzZSk6CisgICAgICAg
IChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjptYW5hZ2VyKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1DdXJyZW50
T3Blbk9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRh
dGFiYXNlOjpwZXJmb3JtQ3VycmVudE9wZW5PcGVyYXRpb25BZnRlclNwYWNlQ2hlY2spOgorICAg
ICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlQmFja2lu
Z1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6
OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVl
SURCRGF0YWJhc2U6OmRlbGV0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNl
cnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OnJlbmFtZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmNsZWFyT2JqZWN0U3RvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlSW5k
ZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6ZGVs
ZXRlSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFz
ZTo6cmVuYW1lSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJE
YXRhYmFzZTo6cHV0T3JBZGQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJ
REJEYXRhYmFzZTo6cHV0T3JBZGRBZnRlclNwYWNlQ2hlY2spOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6Z2V0UmVjb3JkKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmdldEFsbFJlY29yZHMpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6Z2V0Q291bnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlUmVjb3Jk
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6Om9wZW5D
dXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6
aXRlcmF0ZUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRh
dGFiYXNlOjpjb21taXRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
OlVuaXF1ZUlEQkRhdGFiYXNlOjphYm9ydFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmFib3J0SW5Qcm9ncmVzc1RyYW5zYWN0aW9u
cyk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpoYXNE
YXRhSW5NZW1vcnkgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9V
bmlxdWVJREJEYXRhYmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJ
REJEYXRhYmFzZTo6c2VydmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uOjpVbmlxdWVJREJEYXRh
YmFzZUNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJE
YXRhYmFzZUNvbm5lY3Rpb246On5VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb246Om1hbmFn
ZXIpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFz
ZUNvbm5lY3Rpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0
YWJhc2VDb25uZWN0aW9uOjpzZXJ2ZXIpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuaDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlcjo6flVuaXF1ZUlE
QkRhdGFiYXNlTWFuYWdlcik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1Vu
aXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5z
YWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VU
cmFuc2FjdGlvbjo6flVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24pOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmg6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkVycm9yLmg6CisgICAgICAgIChX
ZWJDb3JlOjpJREJFcnJvcjo6b3BlcmF0b3IgYm9vbCBjb25zdCk6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3REYXRhLmg6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvc2hhcmVkL0lEQlJlc291cmNlSWRlbnRpZmllci5oOgorICAgICAgICAoV2ViQ29y
ZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyOjpvcGVyYXRvciE9IGNvbnN0KToKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMjItMDEtMTAgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHN1cHBvcnQgZm9y
IGEgLXNob3VsZFdyYXAgcHJvcGVydHkgd2hlbiBpbmplY3RpbmcgTGl2ZSBUZXh0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmlu
ZGV4IDNhYWQ5NTY2ZGUzNWIwNGZhYzAyZjEwYTUwZGRiOTUyYWMwZjhjOTUuLjFlNGVlZWU1OGU1
NDUxMDUxNDMwZTVjMjA4NGRhODUwNWQwYjRiZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMzIEBA
CisyMDIyLTAxLTExICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAg
IE1hbmFnZSBJbmRleGVkREIgc3RvcmFnZSBieSBvcmlnaW4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDkyNQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6dXBkYXRlUXVvdGFCYXNlZE9uU3BhY2VVc2FnZUZvclRlc3RpbmcpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6d3JpdGVCbG9i
c1RvVGVtcG9yYXJ5RmlsZXNGb3JJbmRleGVkREIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRp
ZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OmFkZFdlYnNpdGVEYXRhU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6
ZmV0Y2hXZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxl
dGVXZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVX
ZWJzaXRlRGF0YUZvck9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6
ZGVsZXRlQW5kUmVzdHJpY3RXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZWdpc3RyYWJsZURvbWFpbnNXaXRoV2Vic2l0
ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cHJlcGFyZVRvU3VzcGVu
ZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZXN1bWUpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVzZXRRdW90YSk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzOjpkaWRJbmNyZWFzZVF1b3RhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OnJlbmFtZU9yaWdpbkluV2Vic2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6c3RvcmFnZVF1b3RhTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzOjpjb25uZWN0aW9uVG9XZWJQcm9jZXNzQ2xvc2VkKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3M6OnN1c3BlbmRJREJTZXJ2ZXJzKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6c2hvdWxkU3VzcGVuZElEQlNlcnZlcnMgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Nlc3Npb246OmludmFsaWRhdGVBbmRDYW5jZWwpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrU2Vzc2lvbjo6YWRkU3RvcmFnZU1hbmFnZXJTZXNzaW9uKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Nlc3Npb246OmVuc3VyZVdlYklEQlNlcnZlcik6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpjbG9zZUlEQlNlcnZlcik6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjphZGRJbmRleGVkRGF0YWJhc2VTZXNzaW9u
KTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6d2ViSURCU2VydmVyKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246Omhhc0lEQkRhdGFiYXNlUGF0aCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdl
RW5naW5lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OnN0b3Jh
Z2VQYXRoKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OmRpc2tVc2Fn
ZSk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpyZXF1ZXN0U3BhY2Up
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGVzOjpyZXF1ZXN0U3BhY2Up
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lPUy5tbToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnNldElzSG9sZGluZ0xvY2tlZEZpbGVzKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VDb25uZWN0aW9uVG9D
bGllbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25U
b0NsaWVudDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudCk6CisgICAgICAgIChXZWJLaXQ6
OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6On5JREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xp
ZW50KToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6Y29u
bmVjdGlvblRvQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25U
b0NsaWVudDo6ZGlkR2V0UmVzdWx0KToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5l
Y3Rpb25Ub0NsaWVudDo6ZGlkRGVsZXRlRGF0YWJhc2UpOgorICAgICAgICAoV2ViS2l0OjpJREJT
dG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRPcGVuRGF0YWJhc2UpOgorICAgICAgICAoV2Vi
S2l0OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRTdGFydFRyYW5zYWN0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkQWJvcnRU
cmFuc2FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGll
bnQ6OmRpZENvbW1pdFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNv
bm5lY3Rpb25Ub0NsaWVudDo6ZGlkQ3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0
OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWREZWxldGVPYmplY3RTdG9yZSk6Cisg
ICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZFJlbmFtZU9i
amVjdFN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVu
dDo6ZGlkQ2xlYXJPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25u
ZWN0aW9uVG9DbGllbnQ6OmRpZENyZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYktpdDo6SURCU3Rv
cmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkRGVsZXRlSW5kZXgpOgorICAgICAgICAoV2ViS2l0
OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRSZW5hbWVJbmRleCk6CisgICAgICAg
IChXZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZFB1dE9yQWRkKToKKyAg
ICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkR2V0UmVjb3Jk
KToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkR2V0
QWxsUmVjb3Jkcyk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGll
bnQ6OmRpZEdldENvdW50KToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25U
b0NsaWVudDo6ZGlkRGVsZXRlUmVjb3JkKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNv
bm5lY3Rpb25Ub0NsaWVudDo6ZGlkT3BlbkN1cnNvcik6CisgICAgICAgIChXZWJLaXQ6OklEQlN0
b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZEl0ZXJhdGVDdXJzb3IpOgorICAgICAgICAoV2Vi
S2l0OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRHZXRBbGxEYXRhYmFzZU5hbWVz
QW5kVmVyc2lvbnMpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xp
ZW50OjpmaXJlVmVyc2lvbkNoYW5nZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFn
ZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkQ2xvc2VGcm9tU2VydmVyKToKKyAgICAgICAgKFdlYktp
dDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6bm90aWZ5T3BlbkRCUmVxdWVzdEJsb2Nr
ZWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZUNvbm5lY3Rp
b25Ub0NsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lE
QlN0b3JhZ2VNYW5hZ2VyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Om1pZ3JhdGVPcmln
aW5EYXRhKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZU1hbmFnZXI6OmlkYlN0b3JhZ2VP
cmlnaW5EaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlTWFuYWdlcjo6aWRi
U3RvcmFnZVNpemUpOgorICAgICAgICAoV2ViS2l0OjpnZXRPcmlnaW5zRm9yVmVyc2lvbik6Cisg
ICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VNYW5hZ2VyOjpvcmlnaW5zT2ZJREJTdG9yYWdlRGF0
YSk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VNYW5hZ2VyOjpJREJTdG9yYWdlTWFuYWdl
cik6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VNYW5hZ2VyOjpoYXNEYXRhSW5NZW1vcnkg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlTWFuYWdlcjo6Y2xvc2VEYXRhYmFz
ZXNGb3JEZWxldGlvbik6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VNYW5hZ2VyOjpzdG9w
RGF0YWJhc2VBY3Rpdml0aWVzRm9yU3VzcGVuZCk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3Jh
Z2VNYW5hZ2VyOjpnZXRPckNyZWF0ZVVuaXF1ZUlEQkRhdGFiYXNlKToKKyAgICAgICAgKFdlYktp
dDo6SURCU3RvcmFnZU1hbmFnZXI6Om9wZW5EYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6OklE
QlN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0
b3JhZ2VNYW5hZ2VyOjpnZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMpOgorICAgICAgICAo
V2ViS2l0OjpJREJTdG9yYWdlTWFuYWdlcjo6b3BlbkRCUmVxdWVzdENhbmNlbGxlZCk6CisgICAg
ICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VNYW5hZ2VyOjpyZWdpc3RlckNvbm5lY3Rpb24pOgorICAg
ICAgICAoV2ViS2l0OjpJREJTdG9yYWdlTWFuYWdlcjo6dW5yZWdpc3RlckNvbm5lY3Rpb24pOgor
ICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlTWFuYWdlcjo6cmVnaXN0ZXJUcmFuc2FjdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VNYW5hZ2VyOjp1bnJlZ2lzdGVyVHJhbnNhY3Rp
b24pOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlQmFja2luZ1N0
b3JlKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZU1hbmFnZXI6OnJlcXVlc3RTcGFjZSk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlTWFuYWdlci5oOiBB
ZGRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VSZWdpc3Ry
eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlUmVnaXN0cnk6OmdldE9y
Q3JlYXRlQ29ubmVjdGlvblRvQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZVJl
Z2lzdHJ5OjpyZW1vdmVDb25uZWN0aW9uVG9DbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpJREJT
dG9yYWdlUmVnaXN0cnk6OnJlZ2lzdGVyQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OklE
QlN0b3JhZ2VSZWdpc3RyeTo6dW5yZWdpc3RlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0
OjpJREJTdG9yYWdlUmVnaXN0cnk6OnJlZ2lzdGVyVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2Vi
S2l0OjpJREJTdG9yYWdlUmVnaXN0cnk6OnVucmVnaXN0ZXJUcmFuc2FjdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OklEQlN0b3JhZ2VSZWdpc3RyeTo6Z2V0Q29ubmVjdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OklEQlN0b3JhZ2VSZWdpc3RyeTo6Z2V0VHJhbnNhY3Rpb24pOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZVJlZ2lzdHJ5Lmg6IEFkZGVkLgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjcmVhdGUpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcik6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y2FuSGFuZGxlVHlwZXMpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnN0b3BSZWNlaXZpbmdNZXNz
YWdlRnJvbUNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFn
ZXI6OmxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
U3RvcmFnZU1hbmFnZXI6OmRpZEluY3JlYXNlUXVvdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrU3RvcmFnZU1hbmFnZXI6OmdldEFsbE9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrU3RvcmFnZU1hbmFnZXI6Om1vdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0
b3JhZ2VNYW5hZ2VyOjpzdXNwZW5kKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VN
YW5hZ2VyOjpyZWdpc3RlclRlbXBvcmFyeUJsb2JGaWxlUGF0aHMpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnJlcXVlc3RTcGFjZSk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6cmVzZXRRdW90YUZvclRlc3RpbmcpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnJlc2V0UXVvdGFVcGRhdGVkQmFzZWRPblVz
YWdlRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6
b3BlbkRhdGFiYXNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpv
cGVuREJSZXF1ZXN0Q2FuY2VsbGVkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VN
YW5hZ2VyOjpkZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdl
TWFuYWdlcjo6ZXN0YWJsaXNoVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
U3RvcmFnZU1hbmFnZXI6OmRhdGFiYXNlQ29ubmVjdGlvblBlbmRpbmdDbG9zZSk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGF0YWJhc2VDb25uZWN0aW9uQ2xvc2Vk
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjphYm9ydE9wZW5BbmRV
cGdyYWRlTmVlZGVkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpk
aWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyOjphYm9ydFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0
b3JhZ2VNYW5hZ2VyOjpjb21taXRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtTdG9yYWdlTWFuYWdlcjo6ZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rp
b24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZU9iamVj
dFN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVP
YmplY3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6cmVu
YW1lT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6
OmNsZWFyT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFn
ZXI6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2Vy
OjpkZWxldGVJbmRleCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6
cmVuYW1lSW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnB1
dE9yQWRkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpnZXRSZWNv
cmQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmdldEFsbFJlY29y
ZHMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmdldENvdW50KToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVSZWNvcmQpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Om9wZW5DdXJzb3IpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Oml0ZXJhdGVDdXJzb3IpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmdldEFsbERhdGFiYXNlTmFtZXNB
bmRWZXJzaW9ucyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3Rv
cmFnZU1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtT
dG9yYWdlTWFuYWdlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9y
YWdlL09yaWdpblN0b3JhZ2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6T3JpZ2luU3Rv
cmFnZU1hbmFnZXI6OlN0b3JhZ2VCdWNrZXQ6OlN0b3JhZ2VCdWNrZXQpOgorICAgICAgICAoV2Vi
S2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldDo6dG9XZWJzaXRlRGF0YVR5
cGUpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tl
dDo6dG9TdG9yYWdlSWRlbnRpZmllcik6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VN
YW5hZ2VyOjpTdG9yYWdlQnVja2V0OjppZGJTdG9yYWdlTWFuYWdlcik6CisgICAgICAgIChXZWJL
aXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0OjpleGlzdGluZ0lEQlN0b3Jh
Z2VNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6T3JpZ2luU3RvcmFnZU1hbmFnZXI6OlN0b3Jh
Z2VCdWNrZXQ6OmlzQWN0aXZlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6T3JpZ2luU3RvcmFn
ZU1hbmFnZXI6OlN0b3JhZ2VCdWNrZXQ6OmlzRW1wdHkgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldDo6ZGVsZXRlRGF0YSk6CisgICAg
ICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0Ojptb3ZlRGF0
YSk6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0
OjpmZXRjaERhdGFUeXBlc0luTGlzdEZyb21NZW1vcnkpOgorICAgICAgICAoV2ViS2l0OjpPcmln
aW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldDo6ZmV0Y2hEYXRhVHlwZXNJbkxpc3RGcm9t
RGlzayk6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVj
a2V0OjpkZWxldGVJREJTdG9yYWdlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OmNyZWF0ZVF1b3Rh
TWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpPcmlnaW5T
dG9yYWdlTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpk
ZWZhdWx0QnVja2V0KToKKyAgICAgICAgKFdlYktpdDo6T3JpZ2luU3RvcmFnZU1hbmFnZXI6OnF1
b3RhTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjppZGJT
dG9yYWdlTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpl
eGlzdGluZ0lEQlN0b3JhZ2VNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6T3JpZ2luU3RvcmFn
ZU1hbmFnZXI6Om1vdmVEYXRhKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09y
aWdpblN0b3JhZ2VNYW5hZ2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9R
dW90YU1hbmFnZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UXVvdGFNYW5hZ2VyOjpj
cmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpRdW90YU1hbmFnZXI6OlF1b3RhTWFuYWdlcik6Cisg
ICAgICAgIChXZWJLaXQ6OlF1b3RhTWFuYWdlcjo6cmVxdWVzdFNwYWNlKToKKyAgICAgICAgKFdl
YktpdDo6UXVvdGFNYW5hZ2VyOjpoYW5kbGVSZXF1ZXN0cyk6CisgICAgICAgIChXZWJLaXQ6OlF1
b3RhTWFuYWdlcjo6Z3JhbnRXaXRoQ3VycmVudFF1b3RhKToKKyAgICAgICAgKFdlYktpdDo6UXVv
dGFNYW5hZ2VyOjpncmFudEZhc3RQYXRoKToKKyAgICAgICAgKFdlYktpdDo6UXVvdGFNYW5hZ2Vy
OjpkaWRJbmNyZWFzZVF1b3RhKToKKyAgICAgICAgKFdlYktpdDo6UXVvdGFNYW5hZ2VyOjpyZXNl
dFF1b3RhVXBkYXRlZEJhc2VkT25Vc2FnZUZvclRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpR
dW90YU1hbmFnZXI6OnJlc2V0UXVvdGFGb3JUZXN0aW5nKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9zdG9yYWdlL1F1b3RhTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL2dl
bmVyYXRlLXVuaWZpZWQtc291cmNlcy5zaDoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNz
YWdlcy5weToKKyAgICAgICAgKHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQp
OgorICAgICAgICAqIFNoYXJlZC9XZWJzaXRlRGF0YS9RdW90YUluY3JlYXNlUmVxdWVzdElkZW50
aWZpZXIuaDogQWRkZWQuCisgICAgICAgICogU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0
ZXJzLmg6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzUHJveHk6OmluY3JlYXNlUXVvdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9y
ZTo6cGVyVGhpcmRQYXJ0eU9yaWdpblN0b3JhZ2VRdW90YSBjb25zdCk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaDoKKyAgICAgICAgKFdlYktpdDo6
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFBlck9yaWdpblF1b3RhKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6V2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAqIFVuaWZpZWRTb3VyY2VzLW91
dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJDb25u
ZWN0aW9uVG9TZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9T
ZXJ2ZXI6OmRlbGV0ZURhdGFiYXNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlv
blRvU2VydmVyOjpvcGVuRGF0YWJhc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0
aW9uVG9TZXJ2ZXI6OmFib3J0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJD
b25uZWN0aW9uVG9TZXJ2ZXI6OmNvbW1pdFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpkaWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2VU
cmFuc2FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6
Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9T
ZXJ2ZXI6OmRlbGV0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVj
dGlvblRvU2VydmVyOjpyZW5hbWVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklE
QkNvbm5lY3Rpb25Ub1NlcnZlcjo6Y2xlYXJPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViS2l0
OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRlbGV0ZUluZGV4KToKKyAgICAgICAgKFdlYktp
dDo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpyZW5hbWVJbmRleCk6CisgICAgICAgIChXZWJL
aXQ6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6cHV0T3JBZGQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmdldFJlY29yZCk6CisgICAgICAgIChXZWJLaXQ6
OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Z2V0QWxsUmVjb3Jkcyk6CisgICAgICAgIChXZWJL
aXQ6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Z2V0Q291bnQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRlbGV0ZVJlY29yZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6b3BlbkN1cnNvcik6CisgICAgICAgIChXZWJL
aXQ6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6aXRlcmF0ZUN1cnNvcik6CisgICAgICAgIChX
ZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZXN0YWJsaXNoVHJhbnNhY3Rpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRhdGFiYXNlQ29ubmVj
dGlvblBlbmRpbmdDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub1Nl
cnZlcjo6ZGF0YWJhc2VDb25uZWN0aW9uQ2xvc2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURC
Q29ubmVjdGlvblRvU2VydmVyOjphYm9ydE9wZW5BbmRVcGdyYWRlTmVlZGVkKToKKyAgICAgICAg
KFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpkaWRGaXJlVmVyc2lvbkNoYW5nZUV2
ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpvcGVuREJS
ZXF1ZXN0Q2FuY2VsbGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvU2Vy
dmVyOjpnZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMpOgorCiAyMDIyLTAxLTEwICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0
IGZvciBhIC1zaG91bGRXcmFwIHByb3BlcnR5IHdoZW4gaW5qZWN0aW5nIExpdmUgVGV4dApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L0NoYW5nZUxvZwppbmRleCA5MDAzZDEyOTdjYzkxNTFhNDIxMDRlYjc5MDM4NGViNmZmMTIy
YzQ0Li41MmNjNDI2OTcxNmYzZWYwNDk0NzUxNzQ5MmQ2Y2M0NTIwMjNlNjU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIyLTAxLTExICBTaWh1aSBMaXUgIDxzaWh1
aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIE1hbmFnZSBJbmRleGVkREIgc3RvcmFnZSBieSBv
cmlnaW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
NDkyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
U3RvcmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2Vy
dmVyOjpxdW90YU1hbmFnZXIpOgorCiAyMDIyLTAxLTEwICBBbGV4IENocmlzdGVuc2VuICA8YWNo
cmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgU3RhcnQgdXNpbmcgQysrMjAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dURi93dGYvRmls
ZVN5c3RlbS5jcHAKaW5kZXggMzg4M2FjMjY2M2QwYTIwMjMyY2I1ZTA5YjRlNDU5NjhiMDAxNjdi
OS4uMzVjNTdiOTEzODZlMmY3ZWY3NzRlY2M0NjlhMTY3NTJjM2JjYTQzYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5
c3RlbS5jcHAKQEAgLTY2MCw2ICs2NjAsMTUgQEAgYm9vbCBjcmVhdGVTeW1ib2xpY0xpbmsoY29u
c3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGljTGlua1BhdGgKICAg
ICByZXR1cm4gIWVjOwogfQogCitTdHJpbmcgcmVhZFN5bWJvbGljTGluayhjb25zdCBTdHJpbmcm
IHN5bWJvbGljTGlua1BhdGgpCit7CisgICAgYXV0byBmaWxlU3lzdGVtUGF0aCA9IHRvU3RkRmls
ZVN5c3RlbVBhdGgoc3ltYm9saWNMaW5rUGF0aCk7CisgICAgaWYgKCFzdGQ6OmZpbGVzeXN0ZW06
OmlzX3N5bWxpbmsoZmlsZVN5c3RlbVBhdGgpKQorICAgICAgICByZXR1cm4gc3ltYm9saWNMaW5r
UGF0aDsKKworICAgIHJldHVybiBmcm9tU3RkRmlsZVN5c3RlbVBhdGgoc3RkOjpmaWxlc3lzdGVt
OjpyZWFkX3N5bWxpbmsoZmlsZVN5c3RlbVBhdGgpKTsKK30KKwogYm9vbCBoYXJkTGluayhjb25z
dCBTdHJpbmcmIHRhcmdldFBhdGgsIGNvbnN0IFN0cmluZyYgbGlua1BhdGgpCiB7CiAgICAgc3Rk
OjplcnJvcl9jb2RlIGVjOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5o
IGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCmluZGV4IGNlNjgxMjg2MGEwMGY5MDJmMjk5
ODNmNDhjYjFjYTFlZDE4YjkwOTcuLjZhMGFhZmFlZWY0MDNiNjIyNmU0NDQzZjZhMTA5YTYwZDU5
YmM3NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTEyNyw2ICsxMjcsNyBAQCBXVEZfRVhQT1JUX1BS
SVZBVEUgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gdm9sdW1lRnJlZVNwYWNlKGNvbnN0IFN0cmlu
ZyYpOwogV1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IHZvbHVtZUZp
bGVCbG9ja1NpemUoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRp
b25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29uc3QgQ1N0cmluZyYpOwogV1RGX0VYUE9S
VF9QUklWQVRFIGJvb2wgY3JlYXRlU3ltYm9saWNMaW5rKGNvbnN0IFN0cmluZyYgdGFyZ2V0UGF0
aCwgY29uc3QgU3RyaW5nJiBzeW1ib2xpY0xpbmtQYXRoKTsKK1dURl9FWFBPUlRfUFJJVkFURSBT
dHJpbmcgcmVhZFN5bWJvbGljTGluayhjb25zdCBTdHJpbmcmIHN5bWJvbGljTGlua1BhdGgpOwog
V1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBjcmVhdGVUZW1wb3JhcnlaaXBBcmNoaXZlKGNvbnN0
IFN0cmluZyYgZGlyZWN0b3J5KTsKIAogZW51bSBjbGFzcyBGaWxlVHlwZSB7IFJlZ3VsYXIsIERp
cmVjdG9yeSwgU3ltYm9saWNMaW5rIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oCmluZGV4IDZjMGIxYjRmMmFi
MGMwMzMwNzY2NTRlYTRiMjc2NTU5NDQ1ODk1MzYuLjdmMDliZmIzMmQ1MWU5N2ZhN2VkNGU0NWQ1
MTEzMzhlNWI4MTE3ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oCkBAIC04Miw3ICs4Miw3IEBAIHB1Ymxp
YzoKICAgICBib29sIGlzVHJhbnNpZW50KCkgY29uc3QgeyByZXR1cm4gbV9pc1RyYW5zaWVudDsg
fQogCiAgICAgU3RyaW5nIGRhdGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVUb1Jvb3QoY29uc3QgU3Ry
aW5nJiByb290RGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIHZlcnNpb25TdHJpbmc9InYxIikgY29u
c3Q7Ci0gICAgc3RhdGljIFN0cmluZyBkYXRhYmFzZURpcmVjdG9yeVJlbGF0aXZlVG9Sb290KGNv
bnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgdG9wTGV2ZWxPcmlnaW4sIGNvbnN0IFNlY3VyaXR5T3Jp
Z2luRGF0YSYgb3BlbmluZ09yaWdpbiwgY29uc3QgU3RyaW5nJiByb290RGlyZWN0b3J5LCBjb25z
dCBTdHJpbmcmIHZlcnNpb25TdHJpbmcpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJp
bmcgZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9vdChjb25zdCBTZWN1cml0eU9yaWdpbkRh
dGEmIHRvcExldmVsT3JpZ2luLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9wZW5pbmdPcmln
aW4sIGNvbnN0IFN0cmluZyYgcm9vdERpcmVjdG9yeSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uU3Ry
aW5nKTsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXIm
KSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25h
bDxJREJEYXRhYmFzZUlkZW50aWZpZXI+IGRlY29kZShEZWNvZGVyJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQ29ubmVjdGlvblRvQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQ29ubmVj
dGlvblRvQ2xpZW50LmgKaW5kZXggMjdmNzI2OTE5ZjE0MjFmMjFhNWYwM2ZmZGZjMTc2ZDRjNGJk
ZjNjMi4uZjA1YWMyZjhjODJhODA5YzI3MWM5ZGY1OTdmOTY0NzMxOWVmNjQ2MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkNvbm5lY3Rpb25U
b0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9J
REJDb25uZWN0aW9uVG9DbGllbnQuaApAQCAtNzQsMTEgKzc0LDExIEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgbm90aWZ5T3BlbkRCUmVxdWVzdEJsb2NrZWQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlm
aWVyJiByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3Qgb2xkVmVyc2lvbiwgdWludDY0X3QgbmV3
VmVyc2lvbik7CiAKLSAgICB2b2lkIGRpZEdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhj
b25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImLCBWZWN0b3I8SURCRGF0YWJhc2VOYW1lQW5kVmVy
c2lvbj4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRHZXRBbGxEYXRhYmFzZU5hbWVz
QW5kVmVyc2lvbnMoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiwgVmVjdG9yPElEQkRhdGFi
YXNlTmFtZUFuZFZlcnNpb24+JiYpOwogCiAgICAgdm9pZCByZWdpc3RlckRhdGFiYXNlQ29ubmVj
dGlvbihVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mKTsKICAgICB2b2lkIHVucmVnaXN0ZXJE
YXRhYmFzZUNvbm5lY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJik7Ci0gICAgdm9p
ZCBjb25uZWN0aW9uVG9DbGllbnRDbG9zZWQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNv
bm5lY3Rpb25Ub0NsaWVudENsb3NlZCgpOwogICAgIGJvb2wgaXNDbG9zZWQoKSB7IHJldHVybiBt
X2lzQ2xvc2VkOyB9CiAgICAgdm9pZCBjbGVhckRlbGVnYXRlKCkgeyBtX2RlbGVnYXRlID0gbnVs
bHB0cjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvSURCU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9JREJTZXJ2ZXIuY3BwCmluZGV4IDc0NTZhOTNjNWEzMzA3OTMwNmM2Y2I0MjkxZmI0NmY5
OTEyNGE0MzkuLjI3NDJlMmM5YjhiYzg1MDJmZWI5ZTNlNWUyZTE0Zjc1MDg1ZDk4MjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2
ZXIuY3BwCkBAIC0xMDEsMTMgKzEwMSwxMyBAQCB2b2lkIElEQlNlcnZlcjo6dW5yZWdpc3RlclRy
YW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQogICAg
IG1fdHJhbnNhY3Rpb25zLnJlbW92ZSh0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpKTsK
IH0KIAotdm9pZCBJREJTZXJ2ZXI6OnJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0aW9uKFVuaXF1ZUlE
QkRhdGFiYXNlQ29ubmVjdGlvbiYgY29ubmVjdGlvbikKK3ZvaWQgSURCU2VydmVyOjpyZWdpc3Rl
ckNvbm5lY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogewog
ICAgIEFTU0VSVCghbV9kYXRhYmFzZUNvbm5lY3Rpb25zLmNvbnRhaW5zKGNvbm5lY3Rpb24uaWRl
bnRpZmllcigpKSk7CiAgICAgbV9kYXRhYmFzZUNvbm5lY3Rpb25zLnNldChjb25uZWN0aW9uLmlk
ZW50aWZpZXIoKSwgJmNvbm5lY3Rpb24pOwogfQogCi12b2lkIElEQlNlcnZlcjo6dW5yZWdpc3Rl
ckRhdGFiYXNlQ29ubmVjdGlvbihVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24pCit2b2lkIElEQlNlcnZlcjo6dW5yZWdpc3RlckNvbm5lY3Rpb24oVW5pcXVlSURCRGF0YWJh
c2VDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogewogICAgIEFTU0VSVChtX2RhdGFiYXNlQ29ubmVj
dGlvbnMuY29udGFpbnMoY29ubmVjdGlvbi5pZGVudGlmaWVyKCkpKTsKICAgICBtX2RhdGFiYXNl
Q29ubmVjdGlvbnMucmVtb3ZlKGNvbm5lY3Rpb24uaWRlbnRpZmllcigpKTsKQEAgLTEyOCwxMyAr
MTI4LDEzIEBAIHN0ZDo6dW5pcXVlX3B0cjxJREJCYWNraW5nU3RvcmU+IElEQlNlcnZlcjo6Y3Jl
YXRlQmFja2luZ1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlCiB7CiAgICAgQVNTRVJUKCFpc01haW5U
aHJlYWQoKSk7CiAgICAgaWYgKG1fZGF0YWJhc2VEaXJlY3RvcnlQYXRoLmlzRW1wdHkoKSkKLSAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TWVtb3J5SURCQmFja2luZ1N0b3JlPihtX3Nlc3Npb25J
RCwgaWRlbnRpZmllcik7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPE1lbW9yeUlEQkJhY2tp
bmdTdG9yZT4oaWRlbnRpZmllcik7CiAKICAgICBBU1NFUlQoIW1fc2Vzc2lvbklELmlzRXBoZW1l
cmFsKCkpOwogICAgIGlmIChpZGVudGlmaWVyLmlzVHJhbnNpZW50KCkpCi0gICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPE1lbW9yeUlEQkJhY2tpbmdTdG9yZT4obV9zZXNzaW9uSUQsIGlkZW50aWZp
ZXIpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxNZW1vcnlJREJCYWNraW5nU3RvcmU+KGlk
ZW50aWZpZXIpOwogCi0gICAgcmV0dXJuIG1ha2VVbmlxdWU8U1FMaXRlSURCQmFja2luZ1N0b3Jl
PihtX3Nlc3Npb25JRCwgaWRlbnRpZmllciwgbV9kYXRhYmFzZURpcmVjdG9yeVBhdGgpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPFNRTGl0ZUlEQkJhY2tpbmdTdG9yZT4oaWRlbnRpZmllciwgdXBn
cmFkZWREYXRhYmFzZURpcmVjdG9yeShpZGVudGlmaWVyKSk7CiB9CiAKIHZvaWQgSURCU2VydmVy
OjpvcGVuRGF0YWJhc2UoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhKQpAQCAtMTc3
LDE3ICsxNzcsNiBAQCB2b2lkIElEQlNlcnZlcjo6ZGVsZXRlRGF0YWJhc2UoY29uc3QgSURCUmVx
dWVzdERhdGEmIHJlcXVlc3REYXRhKQogICAgICAgICBtX3VuaXF1ZUlEQkRhdGFiYXNlTWFwLnJl
bW92ZShkYXRhYmFzZS0+aWRlbnRpZmllcigpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPFVuaXF1
ZUlEQkRhdGFiYXNlPiBJREJTZXJ2ZXI6OmNsb3NlQW5kVGFrZVVuaXF1ZUlEQkRhdGFiYXNlKFVu
aXF1ZUlEQkRhdGFiYXNlJiBkYXRhYmFzZSkKLXsKLSAgICBMT0coSW5kZXhlZERCLCAiSURCU2Vy
dmVyOjpjbG9zZVVuaXF1ZUlEQkRhdGFiYXNlIik7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKLQotICAgIGF1dG8gdW5pcXVlUG9pbnRlciA9IG1fdW5pcXVlSURCRGF0YWJhc2VNYXAudGFr
ZShkYXRhYmFzZS5pZGVudGlmaWVyKCkpOwotICAgIEFTU0VSVCh1bmlxdWVQb2ludGVyKTsKLQot
ICAgIHJldHVybiB1bmlxdWVQb2ludGVyOwotfQotCiB2b2lkIElEQlNlcnZlcjo6YWJvcnRUcmFu
c2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmll
cikKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCU2VydmVyOjphYm9ydFRyYW5zYWN0aW9uIik7
CkBAIC03NDcsNyArNzM2LDcgQEAgdm9pZCBJREJTZXJ2ZXI6OnJlbmFtZU9yaWdpbihjb25zdCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIG9sZE9yaWdpbiwgY29uc3QKICAgICAgICAgRmls
ZVN5c3RlbTo6bW92ZUZpbGUob2xkT3JpZ2luUGF0aCwgbmV3T3JpZ2luUGF0aCk7CiB9CiAKLVN0
b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uIElEQlNlcnZlcjo6cmVxdWVzdFNwYWNlKGNvbnN0
IENsaWVudE9yaWdpbiYgb3JpZ2luLCB1aW50NjRfdCB0YXNrU2l6ZSkgV1RGX0lHTk9SRVNfVEhS
RUFEX1NBRkVUWV9BTkFMWVNJUwordm9pZCBJREJTZXJ2ZXI6OnJlcXVlc3RTcGFjZShjb25zdCBD
bGllbnRPcmlnaW4mIG9yaWdpbiwgdWludDY0X3QgdGFza1NpemUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIFdURl9JR05PUkVTX1RIUkVBRF9TQUZF
VFlfQU5BTFlTSVMKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQo
bV9sb2NrLmlzSGVsZCgpKTsKQEAgLTc1OSw3ICs3NDgsNyBAQCBTdG9yYWdlUXVvdGFNYW5hZ2Vy
OjpEZWNpc2lvbiBJREJTZXJ2ZXI6OnJlcXVlc3RTcGFjZShjb25zdCBDbGllbnRPcmlnaW4mIG9y
aWdpbgogICAgIHJlc3VsdCA9IG1fc3BhY2VSZXF1ZXN0ZXIob3JpZ2luLCB0YXNrU2l6ZSk7CiAg
ICAgbV9sb2NrLmxvY2soKTsKIAotICAgIHJldHVybiByZXN1bHQ7CisgICAgY29tcGxldGlvbkhh
bmRsZXIocmVzdWx0ID09IFN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uOjpHcmFudCk7CiB9
CiAKIHVpbnQ2NF90IElEQlNlcnZlcjo6ZGlza1VzYWdlKGNvbnN0IFN0cmluZyYgcm9vdERpcmVj
dG9yeSwgY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4pCkBAIC03ODEsNiArNzcwLDIzIEBAIHZv
aWQgSURCU2VydmVyOjp1cGdyYWRlRmlsZXNJZk5lY2Vzc2FyeSgpCiAgICAgICAgIEZpbGVTeXN0
ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhuZXdWZXJzaW9uRGlyZWN0b3J5KTsKIH0KIAorU3RyaW5n
IElEQlNlcnZlcjo6dXBncmFkZWREYXRhYmFzZURpcmVjdG9yeShjb25zdCBXZWJDb3JlOjpJREJE
YXRhYmFzZUlkZW50aWZpZXImIGlkZW50aWZpZXIpCit7CisgICAgU3RyaW5nIG9sZE9yaWdpbkRp
cmVjdG9yeSA9IGlkZW50aWZpZXIuZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9vdChtX2Rh
dGFiYXNlRGlyZWN0b3J5UGF0aCwgInYwIik7CisgICAgU3RyaW5nIG9sZERhdGFiYXNlRGlyZWN0
b3J5ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG9sZE9yaWdpbkRpcmVj
dG9yeSwgU1FMaXRlSURCQmFja2luZ1N0b3JlOjplbmNvZGVEYXRhYmFzZU5hbWUoaWRlbnRpZmll
ci5kYXRhYmFzZU5hbWUoKSkpOworICAgIFN0cmluZyBuZXdPcmlnaW5EaXJlY3RvcnkgPSBpZGVu
dGlmaWVyLmRhdGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVUb1Jvb3QobV9kYXRhYmFzZURpcmVjdG9y
eVBhdGgsICJ2MSIpOworICAgIFN0cmluZyBmaWxlTmFtZUhhc2ggPSBTUUxpdGVGaWxlU3lzdGVt
Ojpjb21wdXRlSGFzaEZvckZpbGVOYW1lKGlkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCkpOworICAg
IFN0cmluZyBuZXdEYXRhYmFzZURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChuZXdPcmlnaW5EaXJlY3RvcnksIGZpbGVOYW1lSGFzaCk7CisgICAgRmlsZVN5
c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKG5ld0RhdGFiYXNlRGlyZWN0b3J5KTsKKworICAgIGlm
IChGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG9sZERhdGFiYXNlRGlyZWN0b3J5KSkgeworICAgICAg
ICBGaWxlU3lzdGVtOjptb3ZlRmlsZShvbGREYXRhYmFzZURpcmVjdG9yeSwgbmV3RGF0YWJhc2VE
aXJlY3RvcnkpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeShvbGRP
cmlnaW5EaXJlY3RvcnkpOworICAgIH0KKworICAgIHJldHVybiBuZXdEYXRhYmFzZURpcmVjdG9y
eTsKK30KKwogYm9vbCBJREJTZXJ2ZXI6Omhhc0RhdGFiYXNlQWN0aXZpdGllc09uTWFpblRocmVh
ZCgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaAppbmRleCBkODgz
NjQ5YTVjOGQ1YjU5ZjAyYzJiZGFjZGRlNjc4YTFjYTNjNDJmLi5lOTc0NmZlNzU1NzRkMTYwN2Jk
ZDZkN2E0NzNkYjRmY2EzZWIxZTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVk
ZSAiU3RvcmFnZVF1b3RhTWFuYWdlci5oIgogI2luY2x1ZGUgIlVuaXF1ZUlEQkRhdGFiYXNlLmgi
CiAjaW5jbHVkZSAiVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiVW5p
cXVlSURCRGF0YWJhc2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSA8cGFsL0h5c3RlcmVzaXNBY3Rpdml0
eS5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJl
YWRUYXNrSGFuZGxlci5oPgpAQCAtNDgsOCArNDksNyBAQCBzdHJ1Y3QgSURCR2V0UmVjb3JkRGF0
YTsKIAogbmFtZXNwYWNlIElEQlNlcnZlciB7CiAKLWNsYXNzIElEQlNlcnZlciB7Ci0gICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CitjbGFzcyBJREJTZXJ2ZXIgOiBwdWJsaWMgVW5pcXVlSURC
RGF0YWJhc2VNYW5hZ2VyIHsKIHB1YmxpYzoKICAgICB1c2luZyBTdG9yYWdlUXVvdGFNYW5hZ2Vy
U3BhY2VSZXF1ZXN0ZXIgPSBGdW5jdGlvbjxTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbihj
b25zdCBDbGllbnRPcmlnaW4mLCB1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCk+OwogICAgIFdFQkNP
UkVfRVhQT1JUIElEQlNlcnZlcihQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBkYXRhYmFz
ZURpcmVjdG9yeVBhdGgsIFN0b3JhZ2VRdW90YU1hbmFnZXJTcGFjZVJlcXVlc3RlciYmLCBMb2Nr
Jik7CkBAIC04OSwxNCArODksMTEgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
Z2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKElEQkNvbm5lY3Rpb25JZGVudGlmaWVyLCBj
b25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImLCBjb25zdCBDbGllbnRPcmlnaW4mKTsKIAogCi0g
ICAgdm9pZCByZWdpc3RlckRhdGFiYXNlQ29ubmVjdGlvbihVbmlxdWVJREJEYXRhYmFzZUNvbm5l
Y3Rpb24mKTsKLSAgICB2b2lkIHVucmVnaXN0ZXJEYXRhYmFzZUNvbm5lY3Rpb24oVW5pcXVlSURC
RGF0YWJhc2VDb25uZWN0aW9uJik7Ci0gICAgdm9pZCByZWdpc3RlclRyYW5zYWN0aW9uKFVuaXF1
ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mKTsKLSAgICB2b2lkIHVucmVnaXN0ZXJUcmFuc2FjdGlv
bihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJik7Ci0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
VW5pcXVlSURCRGF0YWJhc2U+IGNsb3NlQW5kVGFrZVVuaXF1ZUlEQkRhdGFiYXNlKFVuaXF1ZUlE
QkRhdGFiYXNlJik7Ci0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SURCQmFja2luZ1N0b3JlPiBjcmVh
dGVCYWNraW5nU3RvcmUoY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJik7CisgICAgdm9pZCBy
ZWdpc3RlckNvbm5lY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJikgZmluYWw7Cisg
ICAgdm9pZCB1bnJlZ2lzdGVyQ29ubmVjdGlvbihVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24m
KSBmaW5hbDsKKyAgICB2b2lkIHJlZ2lzdGVyVHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VU
cmFuc2FjdGlvbiYpIGZpbmFsOworICAgIHZvaWQgdW5yZWdpc3RlclRyYW5zYWN0aW9uKFVuaXF1
ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mKSBmaW5hbDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SURC
QmFja2luZ1N0b3JlPiBjcmVhdGVCYWNraW5nU3RvcmUoY29uc3QgSURCRGF0YWJhc2VJZGVudGlm
aWVyJikgZmluYWw7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBIYXNoU2V0PFNlY3VyaXR5T3JpZ2lu
RGF0YT4gZ2V0T3JpZ2lucygpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xvc2VB
bmREZWxldGVEYXRhYmFzZXNNb2RpZmllZFNpbmNlKFdhbGxUaW1lKTsKQEAgLTEwNCw3ICsxMDEs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbG9zZURhdGFiYXNlc0Zvck9yaWdpbnMoY29uc3QgVmVj
dG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4mLCBGdW5jdGlvbjxib29sKGNvbnN0IFNlY3VyaXR5T3Jp
Z2luRGF0YSYsIGNvbnN0IENsaWVudE9yaWdpbiYpPiYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHJlbmFtZU9yaWdpbihjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25z
dCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmKTsKIAotICAgIFN0b3JhZ2VRdW90YU1hbmFn
ZXI6OkRlY2lzaW9uIHJlcXVlc3RTcGFjZShjb25zdCBDbGllbnRPcmlnaW4mLCB1aW50NjRfdCB0
YXNrU2l6ZSk7CisgICAgdm9pZCByZXF1ZXN0U3BhY2UoY29uc3QgQ2xpZW50T3JpZ2luJiwgdWlu
dDY0X3Qgc2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7CiAgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIHVpbnQ2NF90IGRpc2tVc2FnZShjb25zdCBTdHJpbmcmIHJv
b3REaXJlY3RvcnksIGNvbnN0IENsaWVudE9yaWdpbiYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBoYXNEYXRhYmFzZUFjdGl2aXRpZXNPbk1haW5UaHJlYWQoKSBjb25zdDsKQEAgLTExNCw2
ICsxMTEsNyBAQCBwcml2YXRlOgogICAgIFVuaXF1ZUlEQkRhdGFiYXNlJiBnZXRPckNyZWF0ZVVu
aXF1ZUlEQkRhdGFiYXNlKGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYpOwogCiAgICAgdm9p
ZCB1cGdyYWRlRmlsZXNJZk5lY2Vzc2FyeSgpOworICAgIFN0cmluZyB1cGdyYWRlZERhdGFiYXNl
RGlyZWN0b3J5KGNvbnN0IFdlYkNvcmU6OklEQkRhdGFiYXNlSWRlbnRpZmllciYpOwogICAgIHZv
aWQgcmVtb3ZlRGF0YWJhc2VzTW9kaWZpZWRTaW5jZUZvclZlcnNpb24oV2FsbFRpbWUsIGNvbnN0
IFN0cmluZyYpOwogICAgIHZvaWQgcmVtb3ZlRGF0YWJhc2VzV2l0aE9yaWdpbnNGb3JWZXJzaW9u
KGNvbnN0IFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+JiwgY29uc3QgU3RyaW5nJik7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJ
REJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggN2VlNDE0MGE4YWYxODAxMWM5NmJj
YTdiNjA4ZDg2NTkxOGFmODVlYS4uZDg2MWRhZDE4MzQ5ZTQ3MTM0MzFmMmMxOGM0M2U2YmE4MzQ4
Y2U0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTQ0LDkgKzQ0LDgg
QEAgbmFtZXNwYWNlIElEQlNlcnZlciB7CiAvLyBUaGUgSW5kZXhlZERCIHNwZWMgc3RhdGVzIHRo
ZSBtYXhpbXVtIHZhbHVlIHlvdSBjYW4gZ2V0IGZyb20gdGhlIGtleSBnZW5lcmF0b3IgaXMgMl41
My4KIGNvbnN0ZXhwciB1aW50NjRfdCBtYXhHZW5lcmF0ZWRLZXlWYWx1ZSA9IDB4MjAwMDAwMDAw
MDAwMDA7CiAKLU1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6TWVtb3J5SURCQmFja2luZ1N0b3JlKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJiBpZGVu
dGlmaWVyKQorTWVtb3J5SURCQmFja2luZ1N0b3JlOjpNZW1vcnlJREJCYWNraW5nU3RvcmUoY29u
c3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJiBpZGVudGlmaWVyKQogICAgIDogbV9pZGVudGlmaWVy
KGlkZW50aWZpZXIpCi0gICAgLCBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCiB7CiB9CiAKQEAgLTEz
NCw3ICsxMzMsNyBAQCBJREJFcnJvciBNZW1vcnlJREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVj
dFN0b3JlKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdAogICAgICAgICByZXR1cm4gSURC
RXJyb3IgeyBDb25zdHJhaW50RXJyb3IgfTsKIAogICAgIEFTU0VSVCghbV9vYmplY3RTdG9yZXNC
eUlkZW50aWZpZXIuY29udGFpbnMoaW5mby5pZGVudGlmaWVyKCkpKTsKLSAgICBhdXRvIG9iamVj
dFN0b3JlID0gTWVtb3J5T2JqZWN0U3RvcmU6OmNyZWF0ZShtX3Nlc3Npb25JRCwgaW5mbyk7Cisg
ICAgYXV0byBvYmplY3RTdG9yZSA9IE1lbW9yeU9iamVjdFN0b3JlOjpjcmVhdGUoaW5mbyk7CiAK
ICAgICBtX2RhdGFiYXNlSW5mby0+YWRkRXhpc3RpbmdPYmplY3RTdG9yZShpbmZvKTsKIApAQCAt
NDkwLDcgKzQ4OSw2IEBAIElEQkVycm9yIE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6cmV2ZXJ0R2Vu
ZXJhdGVkS2V5TnVtYmVyKGNvbnN0IElEQlJlc291cmNlSWRlbnRpCiAKICAgICBNZW1vcnlPYmpl
Y3RTdG9yZSogb2JqZWN0U3RvcmUgPSBtX29iamVjdFN0b3Jlc0J5SWRlbnRpZmllci5nZXQob2Jq
ZWN0U3RvcmVJZGVudGlmaWVyKTsKICAgICBSRUxFQVNFX0FTU0VSVChvYmplY3RTdG9yZSk7Ci0K
ICAgICBvYmplY3RTdG9yZS0+c2V0S2V5R2VuZXJhdG9yVmFsdWUoa2V5TnVtYmVyKTsKIAogICAg
IHJldHVybiBJREJFcnJvciB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmgKaW5kZXgg
OTJhYTc2MGQyMDczMzcxOGZiZGI4YzA0NGNmZTY3ZGNhYjE2NTMzNS4uNDExYWRmNjE3YzBjMzQw
M2QzZjQ4YTAwZWUyMDU0Y2NmMGQ5MjVkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUu
aApAQCAtNDEsOCArNDEsOCBAQCBjbGFzcyBNZW1vcnlPYmplY3RTdG9yZTsKIGNsYXNzIE1lbW9y
eUlEQkJhY2tpbmdTdG9yZSBmaW5hbCA6IHB1YmxpYyBJREJCYWNraW5nU3RvcmUgewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIE1lbW9yeUlEQkJhY2tpbmdTdG9y
ZShQQUw6OlNlc3Npb25JRCwgY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJik7Ci0gICAgfk1l
bW9yeUlEQkJhY2tpbmdTdG9yZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIE1lbW9yeUlEQkJhY2tp
bmdTdG9yZShjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB+TWVtb3J5SURCQmFja2luZ1N0b3JlKCk7CiAKICAgICBJREJFcnJvciBnZXRPckVzdGFibGlz
aERhdGFiYXNlSW5mbyhJREJEYXRhYmFzZUluZm8mKSBmaW5hbDsKICAgICB1aW50NjRfdCBkYXRh
YmFzZVZlcnNpb24oKSBmaW5hbDsKQEAgLTkyLDcgKzkyLDYgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHVucmVnaXN0ZXJPYmplY3RTdG9yZShNZW1vcnlPYmplY3RTdG9yZSYpOwogCiAgICAgSURCRGF0
YWJhc2VJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKLSAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Np
b25JRDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SURCRGF0YWJhc2VJbmZvPiBtX2RhdGFiYXNlSW5m
bzsKIAogICAgIEhhc2hNYXA8SURCUmVzb3VyY2VJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8
TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24+PiBtX3RyYW5zYWN0aW9uczsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RT
dG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5
T2JqZWN0U3RvcmUuY3BwCmluZGV4IDVhNTNlMjMxNTI2ODRkZTM4MGRhYTFlNTk3M2ZiMTkzZGYw
MTI2NzcuLjc2Yjk5ZTdlZTY2YmRiY2Q4MGE4MmI4Mjc3NDcxOGMxNDlkMTRmODEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RT
dG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01l
bW9yeU9iamVjdFN0b3JlLmNwcApAQCAtNDQsMTIgKzQ0LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiBuYW1lc3BhY2UgSURCU2VydmVyIHsKIAotUmVmPE1l
bW9yeU9iamVjdFN0b3JlPiBNZW1vcnlPYmplY3RTdG9yZTo6Y3JlYXRlKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiBpbmZvKQorUmVmPE1lbW9yeU9i
amVjdFN0b3JlPiBNZW1vcnlPYmplY3RTdG9yZTo6Y3JlYXRlKGNvbnN0IElEQk9iamVjdFN0b3Jl
SW5mbyYgaW5mbykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZW1vcnlPYmplY3RTdG9y
ZShzZXNzaW9uSUQsIGluZm8pKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZW1vcnlPYmpl
Y3RTdG9yZShpbmZvKSk7CiB9CiAKLU1lbW9yeU9iamVjdFN0b3JlOjpNZW1vcnlPYmplY3RTdG9y
ZShQQUw6OlNlc3Npb25JRCwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiBpbmZvKQorTWVtb3J5
T2JqZWN0U3RvcmU6Ok1lbW9yeU9iamVjdFN0b3JlKGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYg
aW5mbykKICAgICA6IG1faW5mbyhpbmZvKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuaAppbmRl
eCA4NzFkZWI1ZTRhZTA1MTQ4MmI5MDg5Njg5NWVhMzFjMjc2ZGQzMDg2Li5mMDNhM2ExYjBhZDUz
NGI5ZjMzOWM0ZmJkN2U3NDBhZGYyMjg0NzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuaApAQCAt
MzQsMTAgKzM0LDYgQEAKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CiAKLW5hbWVzcGFjZSBQQUwgewotY2xhc3MgU2Vzc2lvbklEOwotfQotCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIElEQkN1cnNvckluZm87CkBAIC02MSw3ICs1Nyw3
IEBAIHR5cGVkZWYgSGFzaE1hcDxJREJLZXlEYXRhLCBUaHJlYWRTYWZlRGF0YUJ1ZmZlciwgSURC
S2V5RGF0YUhhc2gsIElEQktleURhdGFIYXNoCiAKIGNsYXNzIE1lbW9yeU9iamVjdFN0b3JlIDog
cHVibGljIFJlZkNvdW50ZWQ8TWVtb3J5T2JqZWN0U3RvcmU+IHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmPE1lbW9yeU9iamVjdFN0b3JlPiBjcmVhdGUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IElE
Qk9iamVjdFN0b3JlSW5mbyYpOworICAgIHN0YXRpYyBSZWY8TWVtb3J5T2JqZWN0U3RvcmU+IGNy
ZWF0ZShjb25zdCBJREJPYmplY3RTdG9yZUluZm8mKTsKIAogICAgIH5NZW1vcnlPYmplY3RTdG9y
ZSgpOwogCkBAIC0xMDgsNyArMTA0LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVuYW1lSW5kZXgo
TWVtb3J5SW5kZXgmLCBjb25zdCBTdHJpbmcmIG5ld05hbWUpOwogCiBwcml2YXRlOgotICAgIE1l
bW9yeU9iamVjdFN0b3JlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8m
KTsKKyAgICBNZW1vcnlPYmplY3RTdG9yZShjb25zdCBJREJPYmplY3RTdG9yZUluZm8mKTsKIAog
ICAgIElEQktleURhdGFTZXQ6Oml0ZXJhdG9yIGxvd2VzdEl0ZXJhdG9ySW5SYW5nZShjb25zdCBJ
REJLZXlSYW5nZURhdGEmLCBib29sIHJldmVyc2UpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3Jl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJC
YWNraW5nU3RvcmUuY3BwCmluZGV4IDI3Y2Q4ZWVjNTNlMWFjZmM1OTg1ZWM3YjhmMDVlMjI3NjQ1
Yzg3N2UuLmE5OWU3NWI4ZGIzM2FhMDlkYjc4YmVhN2JhNDQwYmJjODlkY2I3NzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNr
aW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCkBAIC0yMzYsMTIgKzIzNiwxMCBAQCBzdGF0aWMg
QVNDSUlMaXRlcmFsIGluZGV4SW5mb1RhYmxlU2NoZW1hVGVtcCgpCiAgICAgcmV0dXJuIFRBQkxF
X1NDSEVNQV9QUkVGSVggIl9UZW1wX0luZGV4SW5mbyIgSU5ERVhfSU5GT19UQUJMRV9TQ0hFTUFf
U1VGRklYOwogfQogCi1TUUxpdGVJREJCYWNraW5nU3RvcmU6OlNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYg
aWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZVJvb3REaXJlY3RvcnkpCi0gICAgOiBt
X3Nlc3Npb25JRChzZXNzaW9uSUQpCi0gICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKLSAg
ICAsIG1fZGF0YWJhc2VSb290RGlyZWN0b3J5KGRhdGFiYXNlUm9vdERpcmVjdG9yeSkKK1NRTGl0
ZUlEQkJhY2tpbmdTdG9yZTo6U1FMaXRlSURCQmFja2luZ1N0b3JlKGNvbnN0IElEQkRhdGFiYXNl
SWRlbnRpZmllciYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZURpcmVjdG9yeSkK
KyAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQorICAgICwgbV9kYXRhYmFzZURpcmVjdG9y
eShkYXRhYmFzZURpcmVjdG9yeSkKIHsKLSAgICBtX2RhdGFiYXNlRGlyZWN0b3J5ID0gZnVsbERh
dGFiYXNlRGlyZWN0b3J5V2l0aFVwZ3JhZGUoKTsKIH0KIAogU1FMaXRlSURCQmFja2luZ1N0b3Jl
Ojp+U1FMaXRlSURCQmFja2luZ1N0b3JlKCkKQEAgLTkxMiwxOSArOTEwLDI5IEBAIHN0ZDo6dW5p
cXVlX3B0cjxJREJEYXRhYmFzZUluZm8+IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZXh0cmFjdEV4
aXN0aW5nRGF0YWJhc2VJCiAgICAgcmV0dXJuIGRhdGFiYXNlSW5mbzsKIH0KIAotU3RyaW5nIFNR
TGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZmlsZW5hbWVGb3JEYXRhYmFzZU5hbWUoKSBjb25zdAorU3Ry
aW5nIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZW5jb2RlRGF0YWJhc2VOYW1lKGNvbnN0IFN0cmlu
ZyYgZGF0YWJhc2VOYW1lKQogewotICAgIEFTU0VSVCghbV9pZGVudGlmaWVyLmRhdGFiYXNlTmFt
ZSgpLmlzTnVsbCgpKTsKLQotICAgIGlmIChtX2lkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCkuaXNF
bXB0eSgpKQorICAgIEFTU0VSVCghZGF0YWJhc2VOYW1lLmlzTnVsbCgpKTsKKyAgICBpZiAoZGF0
YWJhc2VOYW1lLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuICIlMDAiOwogCi0gICAgU3RyaW5n
IGZpbGVuYW1lID0gRmlsZVN5c3RlbTo6ZW5jb2RlRm9yRmlsZU5hbWUobV9pZGVudGlmaWVyLmRh
dGFiYXNlTmFtZSgpKTsKKyAgICBTdHJpbmcgZmlsZW5hbWUgPSBGaWxlU3lzdGVtOjplbmNvZGVG
b3JGaWxlTmFtZShkYXRhYmFzZU5hbWUpOwogICAgIGZpbGVuYW1lLnJlcGxhY2UoJy4nLCAiJTJF
Iik7CiAKICAgICByZXR1cm4gZmlsZW5hbWU7CiB9CiAKK1N0cmluZyBTUUxpdGVJREJCYWNraW5n
U3RvcmU6OmRlY29kZURhdGFiYXNlTmFtZShjb25zdCBTdHJpbmcmIGVuY29kZWROYW1lKQorewor
ICAgIGlmIChlbmNvZGVkTmFtZSA9PSAiJTAwIl9zKQorICAgICAgICByZXR1cm4geyB9OworCisg
ICAgU3RyaW5nIG5hbWUgPSBlbmNvZGVkTmFtZTsKKyAgICBuYW1lLnJlcGxhY2UoIiUyRSJfcywg
Ii4iX3MpOworCisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OmRlY29kZUZyb21GaWxlbmFtZShuYW1l
KTsKK30KKwogU3RyaW5nIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZnVsbERhdGFiYXNlUGF0aEZv
ckRpcmVjdG9yeShjb25zdCBTdHJpbmcmIGZ1bGxEYXRhYmFzZURpcmVjdG9yeSkKIHsKICAgICBy
ZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGZ1bGxEYXRhYmFzZURp
cmVjdG9yeSwgIkluZGV4ZWREQi5zcWxpdGUzIik7CkBAIC05NjUsMjMgKzk3Myw2IEBAIHN0ZDo6
b3B0aW9uYWw8SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbj4gU1FMaXRlSURCQmFja2luZ1N0b3Jl
OjpkYXRhYmFzZU5hbWVBbmRWCiAgICAgcmV0dXJuIElEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24g
eyBkYXRhYmFzZU5hbWUsICpkYXRhYmFzZVZlcnNpb24gfTsKIH0KIAotU3RyaW5nIFNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6ZnVsbERhdGFiYXNlRGlyZWN0b3J5V2l0aFVwZ3JhZGUoKQotewotICAg
IFN0cmluZyBvbGRPcmlnaW5EaXJlY3RvcnkgPSBtX2lkZW50aWZpZXIuZGF0YWJhc2VEaXJlY3Rv
cnlSZWxhdGl2ZVRvUm9vdChtX2RhdGFiYXNlUm9vdERpcmVjdG9yeSwgInYwIik7Ci0gICAgU3Ry
aW5nIG9sZERhdGFiYXNlRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KG9sZE9yaWdpbkRpcmVjdG9yeSwgZmlsZW5hbWVGb3JEYXRhYmFzZU5hbWUoKSk7Ci0g
ICAgU3RyaW5nIG5ld09yaWdpbkRpcmVjdG9yeSA9IG1faWRlbnRpZmllci5kYXRhYmFzZURpcmVj
dG9yeVJlbGF0aXZlVG9Sb290KG1fZGF0YWJhc2VSb290RGlyZWN0b3J5LCAidjEiKTsKLSAgICBT
dHJpbmcgZmlsZU5hbWVIYXNoID0gU1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0ZUhhc2hGb3JGaWxl
TmFtZShtX2lkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCkpOwotICAgIFN0cmluZyBuZXdEYXRhYmFz
ZURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChuZXdPcmln
aW5EaXJlY3RvcnksIGZpbGVOYW1lSGFzaCk7Ci0gICAgRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVj
dG9yaWVzKG5ld0RhdGFiYXNlRGlyZWN0b3J5KTsKLQotICAgIGlmIChGaWxlU3lzdGVtOjpmaWxl
RXhpc3RzKG9sZERhdGFiYXNlRGlyZWN0b3J5KSkgewotICAgICAgICBGaWxlU3lzdGVtOjptb3Zl
RmlsZShvbGREYXRhYmFzZURpcmVjdG9yeSwgbmV3RGF0YWJhc2VEaXJlY3RvcnkpOwotICAgICAg
ICBGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeShvbGRPcmlnaW5EaXJlY3RvcnkpOwot
ICAgIH0KLQotICAgIHJldHVybiBuZXdEYXRhYmFzZURpcmVjdG9yeTsKLX0KLQogSURCRXJyb3Ig
U1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbyhJREJEYXRh
YmFzZUluZm8mIGluZm8pCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIlNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6Z2V0T3JFc3RhYmxpc2hEYXRhYmFzZUluZm8gLSBkYXRhYmFzZSAlcyIsIG1faWRlbnRp
Zmllci5kYXRhYmFzZU5hbWUoKS51dGY4KCkuZGF0YSgpKTsKQEAgLTk5MSwxMSArOTgyLDExIEBA
IElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0T3JFc3RhYmxpc2hEYXRhYmFzZUlu
Zm8oSURCRGF0YWJhc2VJbmZvJiBpbmZvCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IH07CiAg
ICAgfQogCi0gICAgU3RyaW5nIGRiRmlsZW5hbWUgPSBmdWxsRGF0YWJhc2VQYXRoKCk7Ci0KKyAg
ICBTdHJpbmcgZGF0YWJhc2VQYXRoID0gZnVsbERhdGFiYXNlUGF0aCgpOworICAgIEZpbGVTeXN0
ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhGaWxlU3lzdGVtOjpwYXJlbnRQYXRoKGRhdGFiYXNlUGF0
aCkpOwogICAgIG1fc3FsaXRlREIgPSBtYWtlVW5pcXVlPFNRTGl0ZURhdGFiYXNlPigpOwotICAg
IGlmICghbV9zcWxpdGVEQi0+b3BlbihkYkZpbGVuYW1lKSkgewotICAgICAgICBMT0dfRVJST1Io
IkZhaWxlZCB0byBvcGVuIFNRTGl0ZSBkYXRhYmFzZSBhdCBwYXRoICclcyciLCBkYkZpbGVuYW1l
LnV0ZjgoKS5kYXRhKCkpOworICAgIGlmICghbV9zcWxpdGVEQi0+b3BlbihkYXRhYmFzZVBhdGgp
KSB7CisgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIG9wZW4gU1FMaXRlIGRhdGFiYXNlIGF0
IHBhdGggJyVzJyIsIGRhdGFiYXNlUGF0aC51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgY2xvc2VT
UUxpdGVEQigpOwogICAgIH0KIApAQCAtMTA0NCw3ICsxMDM1LDcgQEAgSURCRXJyb3IgU1FMaXRl
SURCQmFja2luZ1N0b3JlOjpnZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbyhJREJEYXRhYmFzZUlu
Zm8mIGluZm8KICAgICAgICAgZGF0YWJhc2VJbmZvID0gY3JlYXRlQW5kUG9wdWxhdGVJbml0aWFs
RGF0YWJhc2VJbmZvKCk7CiAKICAgICBpZiAoIWRhdGFiYXNlSW5mbykgewotICAgICAgICBMT0df
RVJST1IoIlVuYWJsZSB0byBlc3RhYmxpc2ggSURCIGRhdGFiYXNlIGF0IHBhdGggJyVzJyIsIGRi
RmlsZW5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGVz
dGFibGlzaCBJREIgZGF0YWJhc2UgYXQgcGF0aCAnJXMnIiwgZGF0YWJhc2VQYXRoLnV0ZjgoKS5k
YXRhKCkpOwogICAgICAgICBjbG9zZVNRTGl0ZURCKCk7CiAgICAgICAgIHJldHVybiBJREJFcnJv
ciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBlc3RhYmxpc2ggSURCIGRhdGFiYXNlIGZpbGUi
X3MgfTsKICAgICB9CkBAIC0yNzk4LDcgKzI3ODksNiBAQCB2b2lkIFNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6ZGVsZXRlQmFja2luZ1N0b3JlKCkKIAogICAgIFNRTGl0ZUZpbGVTeXN0ZW06OmRlbGV0
ZURhdGFiYXNlRmlsZShkYXRhYmFzZVBhdGgpOwogICAgIFNRTGl0ZUZpbGVTeXN0ZW06OmRlbGV0
ZUVtcHR5RGF0YWJhc2VEaXJlY3RvcnkobV9kYXRhYmFzZURpcmVjdG9yeSk7Ci0gICAgU1FMaXRl
RmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEYXRhYmFzZURpcmVjdG9yeShtX2lkZW50aWZpZXIuZGF0
YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9vdChtX2RhdGFiYXNlUm9vdERpcmVjdG9yeSkpOwog
fQogCiB2b2lkIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5yZWdpc3RlckN1cnNvcihTUUxpdGVJ
REJDdXJzb3ImIGN1cnNvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaAppbmRleCAyZWZl
NmIyYTM0MTk5M2JiMjZmZGY5MWNmZjZlN2RlYThkYmJlZDM2Li43MzFhOWE0MTkzODY1ZTNjNWYz
YzM1ZWQ3NTcxYjEyODJmNzgwOTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5oCkBA
IC01MSw5ICs1MSw4IEBAIGNsYXNzIFNRTGl0ZUlEQkN1cnNvcjsKIGNsYXNzIFNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZSBmaW5hbCA6IHB1YmxpYyBJREJCYWNraW5nU3RvcmUgewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZShQQUw6
OlNlc3Npb25JRCwgY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJiwgY29uc3QgU3RyaW5nJiBk
YXRhYmFzZVJvb3REaXJlY3RvcnkpOwotICAgIAotICAgIH5TUUxpdGVJREJCYWNraW5nU3RvcmUo
KSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTUUxpdGVJREJCYWNraW5nU3RvcmUoY29uc3Qg
SURCRGF0YWJhc2VJZGVudGlmaWVyJiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZURpcmVjdG9yeSk7
CisgICAgV0VCQ09SRV9FWFBPUlQgflNRTGl0ZUlEQkJhY2tpbmdTdG9yZSgpIGZpbmFsOwogCiAg
ICAgSURCRXJyb3IgZ2V0T3JFc3RhYmxpc2hEYXRhYmFzZUluZm8oSURCRGF0YWJhc2VJbmZvJikg
ZmluYWw7CiAgICAgdWludDY0X3QgZGF0YWJhc2VWZXJzaW9uKCkgZmluYWw7CkBAIC05NCwxOCAr
OTMsMTUgQEAgcHVibGljOgogCiAgICAgSURCRXJyb3IgZ2V0QmxvYlJlY29yZHNGb3JPYmplY3RT
dG9yZVJlY29yZChpbnQ2NF90IG9iamVjdFN0b3JlUmVjb3JkLCBWZWN0b3I8U3RyaW5nPiYgYmxv
YlVSTHMsIFZlY3RvcjxTdHJpbmc+JiBibG9iRmlsZVBhdGhzKTsKIAotICAgIHN0YXRpYyB1aW50
NjRfdCBkYXRhYmFzZXNTaXplRm9yRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsK
LQorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB1aW50NjRfdCBkYXRhYmFzZXNTaXplRm9yRGly
ZWN0b3J5KGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKICAgICBTdHJpbmcgZGF0YWJhc2VEaXJl
Y3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2RhdGFiYXNlRGlyZWN0b3J5OyB9OwotICAgIHN0YXRp
YyBTdHJpbmcgZnVsbERhdGFiYXNlUGF0aEZvckRpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKLSAg
ICBzdGF0aWMgc3RkOjpvcHRpb25hbDxJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiBkYXRhYmFz
ZU5hbWVBbmRWZXJzaW9uRnJvbUZpbGUoY29uc3QgU3RyaW5nJik7CisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFN0cmluZyBmdWxsRGF0YWJhc2VQYXRoRm9yRGlyZWN0b3J5KGNvbnN0IFN0cmlu
ZyYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcgZW5jb2RlRGF0YWJhc2VOYW1l
KGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
U3RyaW5nIGRlY29kZURhdGFiYXNlTmFtZShjb25zdCBTdHJpbmcmIGVuY29kZWREYXRhYmFzZU5h
bWUpOwogCi0gICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3QgeyByZXR1cm4gbV9z
ZXNzaW9uSUQ7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjpvcHRpb25hbDxJREJE
YXRhYmFzZU5hbWVBbmRWZXJzaW9uPiBkYXRhYmFzZU5hbWVBbmRWZXJzaW9uRnJvbUZpbGUoY29u
c3QgU3RyaW5nJik7CiAKIHByaXZhdGU6Ci0gICAgU3RyaW5nIGZpbGVuYW1lRm9yRGF0YWJhc2VO
YW1lKCkgY29uc3Q7Ci0gICAgU3RyaW5nIGZ1bGxEYXRhYmFzZURpcmVjdG9yeVdpdGhVcGdyYWRl
KCk7Ci0KICAgICBJREJFcnJvciBlbnN1cmVWYWxpZFJlY29yZHNUYWJsZSgpOwogICAgIElEQkVy
cm9yIGVuc3VyZVZhbGlkSW5kZXhSZWNvcmRzVGFibGUoKTsKICAgICBJREJFcnJvciBlbnN1cmVW
YWxpZEluZGV4UmVjb3Jkc0luZGV4KCk7CkBAIC0yMDYsNyArMjAyLDYgQEAgcHJpdmF0ZToKIAog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxTUUxpdGVTdGF0ZW1lbnQ+IG1fY2FjaGVkU3RhdGVtZW50c1tz
dGF0aWNfY2FzdDxpbnQ+KFNRTDo6SW52YWxpZCldOwogCi0gICAgUEFMOjpTZXNzaW9uSUQgbV9z
ZXNzaW9uSUQ7CiAgICAgSURCRGF0YWJhc2VJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8SURCRGF0YWJhc2VJbmZvPiBtX2RhdGFiYXNlSW5mbzsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8SURCRGF0YWJhc2VJbmZvPiBtX29yaWdpbmFsRGF0YWJhc2VJbmZvQmVmb3Jl
VmVyc2lvbkNoYW5nZTsKQEAgLTIxNiw3ICsyMTEsNiBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8
SURCUmVzb3VyY2VJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlSURCVHJhbnNhY3Rp
b24+PiBtX3RyYW5zYWN0aW9uczsKICAgICBIYXNoTWFwPElEQlJlc291cmNlSWRlbnRpZmllciwg
U1FMaXRlSURCQ3Vyc29yKj4gbV9jdXJzb3JzOwogCi0gICAgU3RyaW5nIG1fZGF0YWJhc2VSb290
RGlyZWN0b3J5OwogICAgIFN0cmluZyBtX2RhdGFiYXNlRGlyZWN0b3J5OwogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRh
dGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9Vbmlx
dWVJREJEYXRhYmFzZS5jcHAKaW5kZXggMmIxZWFkYjllYTVjNDY0ZDAyNzVlZDIyM2Y1MDAzYjdi
ZWYxNTczMy4uYjI4ZTdiOWJhYTBmZWQ1MTAwZDQ2ZDUyYWY2ZmQ5ZDZkMGU2ZDAyZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRh
dGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
VW5pcXVlSURCRGF0YWJhc2UuY3BwCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgogI2luY2x1ZGUgIlN0b3JhZ2VRdW90YU1hbmFnZXIuaCIKICNpbmNsdWRlICJVbmlxdWVJ
REJEYXRhYmFzZUNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJVbmlxdWVJREJEYXRhYmFzZU1hbmFn
ZXIuaCIKICNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
MTM0LDggKzEzNSw4IEBAIHN0YXRpYyBpbmxpbmUgdWludDY0X3QgZXN0aW1hdGVTaXplKGNvbnN0
IElEQk9iamVjdFN0b3JlSW5mbyYgaW5mbykKICAgICByZXR1cm4gc2l6ZTsKIH0KIAotVW5pcXVl
SURCRGF0YWJhc2U6OlVuaXF1ZUlEQkRhdGFiYXNlKElEQlNlcnZlciYgc2VydmVyLCBjb25zdCBJ
REJEYXRhYmFzZUlkZW50aWZpZXImIGlkZW50aWZpZXIpCi0gICAgOiBtX3NlcnZlcihzZXJ2ZXIp
CitVbmlxdWVJREJEYXRhYmFzZTo6VW5pcXVlSURCRGF0YWJhc2UoVW5pcXVlSURCRGF0YWJhc2VN
YW5hZ2VyJiBtYW5hZ2VyLCBjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImIGlkZW50aWZpZXIp
CisgICAgOiBtX21hbmFnZXIobWFuYWdlcikKICAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVy
KQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwpAQCAtMTU3LDYgKzE1OCwxMSBAQCBV
bmlxdWVJREJEYXRhYmFzZTo6flVuaXF1ZUlEQkRhdGFiYXNlKCkKICAgICBSRUxFQVNFX0FTU0VS
VCghbV9iYWNraW5nU3RvcmUpOwogfQogCitVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIqIFVuaXF1
ZUlEQkRhdGFiYXNlOjptYW5hZ2VyKCkKK3sKKyAgICByZXR1cm4gbV9tYW5hZ2VyLmdldCgpOwor
fQorCiBjb25zdCBJREJEYXRhYmFzZUluZm8mIFVuaXF1ZUlEQkRhdGFiYXNlOjppbmZvKCkgY29u
c3QKIHsKICAgICBSRUxFQVNFX0FTU0VSVChtX2RhdGFiYXNlSW5mbyk7CkBAIC0xODUsMTcgKzE5
MSw0NSBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtQ3VycmVudE9wZW5PcGVyYXRp
b24oKQogICAgIEFTU0VSVChtX2N1cnJlbnRPcGVuREJSZXF1ZXN0KTsKICAgICBBU1NFUlQobV9j
dXJyZW50T3BlbkRCUmVxdWVzdC0+aXNPcGVuUmVxdWVzdCgpKTsKIAorICAgIC8vIFdlIGRvbid0
IG5lZWQgdG8gY3JlYXRlIHRoZSBmaWxlIHNvIG5vIG5lZWQgdG8gZG8gc3BhY2UgY2hlY2suCisg
ICAgaWYgKG1fYmFja2luZ1N0b3JlKQorICAgICAgICByZXR1cm4gcGVyZm9ybUN1cnJlbnRPcGVu
T3BlcmF0aW9uQWZ0ZXJTcGFjZUNoZWNrKHRydWUpOworCisgICAgaWYgKCFtX21hbmFnZXIpCisg
ICAgICAgIHJldHVybiBwZXJmb3JtQ3VycmVudE9wZW5PcGVyYXRpb25BZnRlclNwYWNlQ2hlY2so
ZmFsc2UpOworCisgICAgYXV0byByZXF1ZXN0SWRlbnRpZmllciA9IG1fY3VycmVudE9wZW5EQlJl
cXVlc3QtPnJlcXVlc3REYXRhKCkucmVxdWVzdElkZW50aWZpZXIoKTsKKyAgICBpZiAobV9vcGVu
REJSZXF1ZXN0c0ZvclNwYWNlQ2hlY2suY29udGFpbnMocmVxdWVzdElkZW50aWZpZXIpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBtX29wZW5EQlJlcXVlc3RzRm9yU3BhY2VDaGVjay5hZGQocmVx
dWVzdElkZW50aWZpZXIpOworICAgIG1fbWFuYWdlci0+cmVxdWVzdFNwYWNlKG1faWRlbnRpZmll
ci5vcmlnaW4oKSwgZGVmYXVsdFdyaXRlT3BlcmF0aW9uQ29zdCwgW3RoaXMsIHdlYWtUaGlzID0g
V2Vha1B0ciB7ICp0aGlzIH0sIHJlcXVlc3RJZGVudGlmaWVyXShib29sIGdyYW50ZWQpIG11dGFi
bGUgeworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIG1fb3BlbkRCUmVxdWVzdHNGb3JTcGFjZUNoZWNrLnJlbW92ZShyZXF1ZXN0SWRlbnRpZmll
cik7CisgICAgICAgIGlmIChtX2N1cnJlbnRPcGVuREJSZXF1ZXN0LT5yZXF1ZXN0RGF0YSgpLnJl
cXVlc3RJZGVudGlmaWVyKCkgIT0gcmVxdWVzdElkZW50aWZpZXIpCisgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgcGVyZm9ybUN1cnJlbnRPcGVuT3BlcmF0aW9uQWZ0ZXJTcGFjZUNoZWNr
KGdyYW50ZWQpOworICAgIH0pOworfQorCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3Jt
Q3VycmVudE9wZW5PcGVyYXRpb25BZnRlclNwYWNlQ2hlY2soYm9vbCBpc0dyYW50ZWQpCit7Cisg
ICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtQ3VycmVudE9wZW5P
cGVyYXRpb25BZnRlclNwYWNlUmVxdWVzdCAoJXApIiwgdGhpcyk7CisKICAgICBJREJFcnJvciBi
YWNraW5nU3RvcmVPcGVuRXJyb3I7CiAgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkgewotICAgICAg
ICAvLyBRdW90YSBjaGVjay4KLSAgICAgICAgYXV0byBkZWNpc2lvbiA9IG1fc2VydmVyLnJlcXVl
c3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIGRlZmF1bHRXcml0ZU9wZXJhdGlvbkNvc3Qp
OwotICAgICAgICBpZiAoZGVjaXNpb24gPT0gU3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb246
OkRlbnkpCisgICAgICAgIGlmICghbV9tYW5hZ2VyKQorICAgICAgICAgICAgYmFja2luZ1N0b3Jl
T3BlbkVycm9yID0gSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciB9OworICAgICAgICBlbHNl
IGlmICghaXNHcmFudGVkKQogICAgICAgICAgICAgYmFja2luZ1N0b3JlT3BlbkVycm9yID0gSURC
RXJyb3IgeyBRdW90YUV4Y2VlZGVkRXJyb3IsIHF1b3RhRXJyb3JNZXNzYWdlTmFtZSgiT3BlbkJh
Y2tpbmdTdG9yZSIpIH07CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgbV9iYWNraW5nU3Rv
cmUgPSBtX3NlcnZlci5jcmVhdGVCYWNraW5nU3RvcmUobV9pZGVudGlmaWVyKTsKKyAgICAgICAg
ICAgIG1fYmFja2luZ1N0b3JlID0gbV9tYW5hZ2VyLT5jcmVhdGVCYWNraW5nU3RvcmUobV9pZGVu
dGlmaWVyKTsKICAgICAgICAgICAgIElEQkRhdGFiYXNlSW5mbyBkYXRhYmFzZUluZm87CiAgICAg
ICAgICAgICBiYWNraW5nU3RvcmVPcGVuRXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+Z2V0T3JFc3Rh
Ymxpc2hEYXRhYmFzZUluZm8oZGF0YWJhc2VJbmZvKTsKLSAgICAgICAgICAgIGlmIChiYWNraW5n
U3RvcmVPcGVuRXJyb3IuaXNOdWxsKCkpCisgICAgICAgICAgICBpZiAoIWJhY2tpbmdTdG9yZU9w
ZW5FcnJvcikKICAgICAgICAgICAgICAgICBtX2RhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURC
RGF0YWJhc2VJbmZvPihkYXRhYmFzZUluZm8pOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAg
ICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZ2V0IGRhdGFiYXNlIGluZm8gJyVzJyIsIGJh
Y2tpbmdTdG9yZU9wZW5FcnJvci5tZXNzYWdlKCkudXRmOCgpLmRhdGEoKSk7CkBAIC0yMDQsNyAr
MjM4LDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybUN1cnJlbnRPcGVuT3BlcmF0
aW9uKCkKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmICghYmFja2luZ1N0b3JlT3BlbkVycm9y
LmlzTnVsbCgpKSB7CisgICAgaWYgKGJhY2tpbmdTdG9yZU9wZW5FcnJvcikgewogICAgICAgICBh
dXRvIHJlc3VsdCA9IElEQlJlc3VsdERhdGE6OmVycm9yKG1fY3VycmVudE9wZW5EQlJlcXVlc3Qt
PnJlcXVlc3REYXRhKCkucmVxdWVzdElkZW50aWZpZXIoKSwgYmFja2luZ1N0b3JlT3BlbkVycm9y
KTsKICAgICAgICAgbV9jdXJyZW50T3BlbkRCUmVxdWVzdC0+Y29ubmVjdGlvbigpLmRpZE9wZW5E
YXRhYmFzZShyZXN1bHQpOwogICAgICAgICBtX2N1cnJlbnRPcGVuREJSZXF1ZXN0ID0gbnVsbHB0
cjsKQEAgLTI5NCw3ICszMjgsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVCYWNr
aW5nU3RvcmUoKQogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIExPRyhJbmRleGVk
REIsICJVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlQmFja2luZ1N0b3JlIik7CiAgICAgCi0gICAg
YXV0byBiYWNraW5nU3RvcmUgPSBtX2JhY2tpbmdTdG9yZSA/IHN0ZDo6ZXhjaGFuZ2UobV9iYWNr
aW5nU3RvcmUsIG51bGxwdHIpIDogbV9zZXJ2ZXIuY3JlYXRlQmFja2luZ1N0b3JlKG1faWRlbnRp
Zmllcik7CisgICAgYXV0byBiYWNraW5nU3RvcmUgPSBtX2JhY2tpbmdTdG9yZSA/IHN0ZDo6ZXhj
aGFuZ2UobV9iYWNraW5nU3RvcmUsIG51bGxwdHIpIDogbV9tYW5hZ2VyLT5jcmVhdGVCYWNraW5n
U3RvcmUobV9pZGVudGlmaWVyKTsKICAgICB1aW50NjRfdCBkZWxldGVkVmVyc2lvbiA9IGJhY2tp
bmdTdG9yZS0+ZGF0YWJhc2VWZXJzaW9uKCk7CiAgICAgYmFja2luZ1N0b3JlLT5kZWxldGVCYWNr
aW5nU3RvcmUoKTsKICAgICBkaWREZWxldGVCYWNraW5nU3RvcmUoZGVsZXRlZFZlcnNpb24pOwpA
QCAtNTQyLDIwICs1NzYsMzMgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6YWRkT3BlbkRhdGFi
YXNlQ29ubmVjdGlvbihSZWY8VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW8KICAgICBtX29wZW5E
YXRhYmFzZUNvbm5lY3Rpb25zLmFkZChhZG9wdFJlZihjb25uZWN0aW9uLmxlYWtSZWYoKSkpOwog
fQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZShVbmlxdWVJREJE
YXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZv
JiBpbmZvLCBFcnJvckNhbGxiYWNrIGNhbGxiYWNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6
Y3JlYXRlT2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rp
b24sIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYgaW5mbywgRXJyb3JDYWxsYmFjayBjYWxsYmFj
aywgU3BhY2VDaGVja1Jlc3VsdCBzcGFjZUNoZWNrUmVzdWx0KQogewogICAgIEFTU0VSVCghaXNN
YWluVGhyZWFkKCkpOwogICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6Y3Jl
YXRlT2JqZWN0U3RvcmUiKTsKIAotICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CisgICAgaWYg
KCFzcGFjZUNoZWNrUmVzdWx0KSB7CisgICAgICAgIGlmICghbV9tYW5hZ2VyKQorICAgICAgICAg
ICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7CisKKyAg
ICAgICAgYXV0byB0YXNrU2l6ZSA9IGRlZmF1bHRXcml0ZU9wZXJhdGlvbkNvc3QgKyBlc3RpbWF0
ZVNpemUoaW5mbyk7CisgICAgICAgIG1fbWFuYWdlci0+cmVxdWVzdFNwYWNlKG1faWRlbnRpZmll
ci5vcmlnaW4oKSwgdGFza1NpemUsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9
LCB3ZWFrVHJhbnNhY3Rpb24gPSBXZWFrUHRyIHsgdHJhbnNhY3Rpb24gfSwgaW5mbywgY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAg
ICAgIGlmICghd2Vha1RoaXMgfHwgIXdlYWtUcmFuc2FjdGlvbikKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkRhdGFiYXNlIG9y
IHRyYW5zYWN0aW9uIGlzIGNsb3NlZCIgfSk7CiAKLSAgICAvLyBRdW90YSBjaGVjay4KLSAgICBh
dXRvIHRhc2tTaXplID0gZGVmYXVsdFdyaXRlT3BlcmF0aW9uQ29zdCArIGVzdGltYXRlU2l6ZShp
bmZvKTsKLSAgICBpZiAobV9zZXJ2ZXIucmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4o
KSwgdGFza1NpemUpID09IFN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uOjpEZW55KSB7Cisg
ICAgICAgICAgICBjcmVhdGVPYmplY3RTdG9yZSgqd2Vha1RyYW5zYWN0aW9uLCBpbmZvLCBXVEZN
b3ZlKGNhbGxiYWNrKSwgZ3JhbnRlZCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgaWYgKCFzcGFjZUNoZWNrUmVzdWx0LnZhbHVlKCkpIHsKICAgICAgICAgY2Fs
bGJhY2soSURCRXJyb3IgeyBRdW90YUV4Y2VlZGVkRXJyb3IsIHF1b3RhRXJyb3JNZXNzYWdlTmFt
ZSgiQ3JlYXRlT2JqZWN0U3RvcmUiKSB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAg
IGlmICghbV9iYWNraW5nU3RvcmUpCisgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7
IEludmFsaWRTdGF0ZUVycm9yLCAiQmFja2luZyBzdG9yZSBoYXMgY2xvc2VkIiB9KTsKKwogICAg
IGF1dG8gZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+Y3JlYXRlT2JqZWN0U3RvcmUodHJhbnNhY3Rp
b24uaW5mbygpLmlkZW50aWZpZXIoKSwgaW5mbyk7CiAgICAgaWYgKGVycm9yLmlzTnVsbCgpKQog
ICAgICAgICBtX2RhdGFiYXNlSW5mby0+YWRkRXhpc3RpbmdPYmplY3RTdG9yZShpbmZvKTsKQEAg
LTU2MywxOCArNjEwLDM0IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0
b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0CiAgICAgY2FsbGJhY2so
ZXJyb3IpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVPYmplY3RTdG9yZShV
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgY29uc3QgU3RyaW5nJiBv
YmplY3RTdG9yZU5hbWUsIEVycm9yQ2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRh
dGFiYXNlOjpkZWxldGVPYmplY3RTdG9yZShVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0
cmFuc2FjdGlvbiwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUsIEVycm9yQ2FsbGJhY2sg
Y2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgc3BhY2VDaGVja1Jlc3VsdCkKIHsKICAgICBBU1NF
UlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJh
c2U6OmRlbGV0ZU9iamVjdFN0b3JlIik7CiAKKyAgICBpZiAoIXNwYWNlQ2hlY2tSZXN1bHQpIHsK
KyAgICAgICAgaWYgKCFtX21hbmFnZXIpCisgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURC
RXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciB9KTsKKworICAgICAgICBtX21hbmFnZXItPnJlcXVl
c3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIDAsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQ
dHIgeyAqdGhpcyB9LCB3ZWFrVHJhbnNhY3Rpb24gPSBXZWFrUHRyIHsgdHJhbnNhY3Rpb24gfSwg
b2JqZWN0U3RvcmVOYW1lLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIGdyYW50
ZWQpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhd2Vha1RyYW5zYWN0
aW9uKQorICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRT
dGF0ZUVycm9yLCAiRGF0YWJhc2Ugb3IgdHJhbnNhY3Rpb24gaXMgY2xvc2VkIiB9KTsKKworICAg
ICAgICAgICAgZGVsZXRlT2JqZWN0U3RvcmUoKndlYWtUcmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVO
YW1lLCBXVEZNb3ZlKGNhbGxiYWNrKSwgZ3JhbnRlZCk7CisgICAgICAgIH0pOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKHNwYWNlQ2hlY2tSZXN1bHQudmFsdWUoKSk7CiAg
ICAgYXV0byogaW5mbyA9IG1fZGF0YWJhc2VJbmZvLT5pbmZvRm9yRXhpc3RpbmdPYmplY3RTdG9y
ZShvYmplY3RTdG9yZU5hbWUpOwogICAgIGlmICghaW5mbykgewogICAgICAgICBjYWxsYmFjayhJ
REJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gZGVsZXRlIG5vbi1leGlzdGFudCBv
YmplY3Qgc3RvcmUiX3MgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBBU1NFUlQo
bV9iYWNraW5nU3RvcmUpOworICAgIGlmICghbV9iYWNraW5nU3RvcmUpCisgICAgICAgIHJldHVy
biBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiQmFja2luZyBzdG9yZSBp
cyBjbG9zZWQiIH0pOworCiAgICAgYXV0byBlcnJvciA9IG1fYmFja2luZ1N0b3JlLT5kZWxldGVP
YmplY3RTdG9yZSh0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpLCBpbmZvLT5pZGVudGlm
aWVyKCkpOwogICAgIGlmIChlcnJvci5pc051bGwoKSkKICAgICAgICAgbV9kYXRhYmFzZUluZm8t
PmRlbGV0ZU9iamVjdFN0b3JlKGluZm8tPmlkZW50aWZpZXIoKSk7CkBAIC01ODIsMTQgKzY0NSwy
NiBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVPYmplY3RTdG9yZShVbmlxdWVJREJE
YXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdAogICAgIGNhbGxiYWNrKGVycm9yKTsKIH0KIAot
dm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cmVuYW1lT2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJh
c2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lLCBFcnJvckNhbGxiYWNrIGNhbGxiYWNrKQordm9pZCBV
bmlxdWVJREJEYXRhYmFzZTo6cmVuYW1lT2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFu
c2FjdGlvbiYgdHJhbnNhY3Rpb24sIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBuZXdOYW1lLCBFcnJvckNhbGxiYWNrIGNhbGxiYWNrLCBTcGFjZUNoZWNrUmVz
dWx0IHNwYWNlQ2hlY2tSZXN1bHQpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAg
ICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpyZW5hbWVPYmplY3RTdG9yZSIp
OwogCi0gICAgLy8gUXVvdGEgY2hlY2suCi0gICAgYXV0byB0YXNrU2l6ZSA9IGRlZmF1bHRXcml0
ZU9wZXJhdGlvbkNvc3QgKyBuZXdOYW1lLnNpemVJbkJ5dGVzKCk7Ci0gICAgaWYgKG1fc2VydmVy
LnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIHRhc2tTaXplKSA9PSBTdG9yYWdl
UXVvdGFNYW5hZ2VyOjpEZWNpc2lvbjo6RGVueSkgeworICAgIGlmICghc3BhY2VDaGVja1Jlc3Vs
dCkgeworICAgICAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAgICAgICAgIHJldHVybiBjYWxsYmFj
ayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yIH0pOworCisgICAgICAgIGF1dG8gdGFza1Np
emUgPSBkZWZhdWx0V3JpdGVPcGVyYXRpb25Db3N0ICsgbmV3TmFtZS5zaXplSW5CeXRlcygpOwor
ICAgICAgICBtX21hbmFnZXItPnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIHRh
c2tTaXplLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgd2Vha1RyYW5zYWN0
aW9uID0gV2Vha1B0ciB7IHRyYW5zYWN0aW9uIH0sIG9iamVjdFN0b3JlSWRlbnRpZmllciwgbmV3
TmFtZSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBncmFudGVkKSBtdXRhYmxl
IHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMgfHwgIXdlYWtUcmFuc2FjdGlvbikKKyAgICAg
ICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwg
IkRhdGFiYXNlIG9yIHRyYW5zYWN0aW9uIGlzIGNsb3NlZCIgfSk7CisKKyAgICAgICAgICAgIHJl
bmFtZU9iamVjdFN0b3JlKCp3ZWFrVHJhbnNhY3Rpb24sIG9iamVjdFN0b3JlSWRlbnRpZmllciwg
bmV3TmFtZSwgV1RGTW92ZShjYWxsYmFjayksIGdyYW50ZWQpOworICAgICAgICB9KTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghc3BhY2VDaGVja1Jlc3VsdC52YWx1ZSgpKSB7
CiAgICAgICAgIGNhbGxiYWNrKElEQkVycm9yKFF1b3RhRXhjZWVkZWRFcnJvciwgcXVvdGFFcnJv
ck1lc3NhZ2VOYW1lKCJSZW5hbWVPYmplY3RTdG9yZSIpKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CkBAIC02MDAsNyArNjc1LDkgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cmVuYW1lT2Jq
ZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3QKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CisgICAgaWYgKCFt
X2JhY2tpbmdTdG9yZSkKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxp
ZFN0YXRlRXJyb3IsICJCYWNraW5nIHN0b3JlIGlzIGNsb3NlZCIgfSk7CisKICAgICBhdXRvIGVy
cm9yID0gbV9iYWNraW5nU3RvcmUtPnJlbmFtZU9iamVjdFN0b3JlKHRyYW5zYWN0aW9uLmluZm8o
KS5pZGVudGlmaWVyKCksIG9iamVjdFN0b3JlSWRlbnRpZmllciwgbmV3TmFtZSk7CiAgICAgaWYg
KGVycm9yLmlzTnVsbCgpKQogICAgICAgICBtX2RhdGFiYXNlSW5mby0+cmVuYW1lT2JqZWN0U3Rv
cmUob2JqZWN0U3RvcmVJZGVudGlmaWVyLCBuZXdOYW1lKTsKQEAgLTYwOCwzMCArNjg1LDU5IEBA
IHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnJlbmFtZU9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFi
YXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0CiAgICAgY2FsbGJhY2soZXJyb3IpOwogfQogCi12b2lk
IFVuaXF1ZUlEQkRhdGFiYXNlOjpjbGVhck9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJh
bnNhY3Rpb24mIHRyYW5zYWN0aW9uLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIEVy
cm9yQ2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjbGVhck9iamVj
dFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCB1aW50NjRf
dCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIEVycm9yQ2FsbGJhY2sgY2FsbGJhY2ssIFNwYWNlQ2hl
Y2tSZXN1bHQgc3BhY2VDaGVja1Jlc3VsdCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgp
KTsKICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6OmNsZWFyT2JqZWN0U3Rv
cmUiKTsKIAotICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7Ci0gICAgYXV0byBlcnJvciA9IG1f
YmFja2luZ1N0b3JlLT5jbGVhck9iamVjdFN0b3JlKHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlm
aWVyKCksIG9iamVjdFN0b3JlSWRlbnRpZmllcik7CisgICAgaWYgKCFzcGFjZUNoZWNrUmVzdWx0
KSB7CisgICAgICAgIGlmICghbV9tYW5hZ2VyKQorICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNr
KElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7CisKKyAgICAgICAgbV9tYW5hZ2VyLT5y
ZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCAwLCBbdGhpcywgd2Vha1RoaXMgPSBX
ZWFrUHRyIHsgKnRoaXMgfSwgd2Vha1RyYW5zYWN0aW9uID0gV2Vha1B0ciB7IHRyYW5zYWN0aW9u
IH0sIG9iamVjdFN0b3JlSWRlbnRpZmllciwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0o
Ym9vbCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMgfHwgIXdl
YWtUcmFuc2FjdGlvbikKKyAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3Ig
eyBJbnZhbGlkU3RhdGVFcnJvciwgIkRhdGFiYXNlIG9yIHRyYW5zYWN0aW9uIGlzIGNsb3NlZCIg
fSk7CisKKyAgICAgICAgICAgIGNsZWFyT2JqZWN0U3RvcmUoKndlYWtUcmFuc2FjdGlvbiwgb2Jq
ZWN0U3RvcmVJZGVudGlmaWVyLCBXVEZNb3ZlKGNhbGxiYWNrKSwgZ3JhbnRlZCk7CisgICAgICAg
IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKHNwYWNlQ2hlY2tSZXN1
bHQudmFsdWUoKSk7CisgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkKKyAgICAgICAgcmV0dXJuIGNh
bGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJCYWNraW5nIHN0b3JlIGlzIGNs
b3NlZCIgfSk7CiAKKyAgICBhdXRvIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPmNsZWFyT2JqZWN0
U3RvcmUodHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSwgb2JqZWN0U3RvcmVJZGVudGlm
aWVyKTsKICAgICBjYWxsYmFjayhlcnJvcik7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6
OmNyZWF0ZUluZGV4KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBj
b25zdCBJREJJbmRleEluZm8mIGluZm8sIEVycm9yQ2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIFVu
aXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVJbmRleChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9u
JiB0cmFuc2FjdGlvbiwgY29uc3QgSURCSW5kZXhJbmZvJiBpbmZvLCBFcnJvckNhbGxiYWNrIGNh
bGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0IHNwYWNlQ2hlY2tSZXN1bHQpCiB7CiAgICAgQVNTRVJU
KCFpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNl
OjpjcmVhdGVJbmRleCIpOwogCi0gICAgLy8gUXVvdGEgY2hlY2suCi0gICAgYXV0byB0YXNrU2l6
ZSA9IGRlZmF1bHRXcml0ZU9wZXJhdGlvbkNvc3QgKyBlc3RpbWF0ZVNpemUoaW5mbyk7Ci0gICAg
aWYgKG1fc2VydmVyLnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIHRhc2tTaXpl
KSA9PSBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbjo6RGVueSkgeworICAgIGlmICghc3Bh
Y2VDaGVja1Jlc3VsdCkgeworICAgICAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAgICAgICAgIHJl
dHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yIH0pOworCisgICAgICAg
IGF1dG8gdGFza1NpemUgPSBkZWZhdWx0V3JpdGVPcGVyYXRpb25Db3N0ICsgZXN0aW1hdGVTaXpl
KGluZm8pOworICAgICAgICBtX21hbmFnZXItPnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3Jp
Z2luKCksIHRhc2tTaXplLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgd2Vh
a1RyYW5zYWN0aW9uID0gV2Vha1B0ciB7IHRyYW5zYWN0aW9uIH0sIGluZm8sIGNhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayldKGJvb2wgZ3JhbnRlZCkgbXV0YWJsZSB7CisgICAgICAgICAgICBp
ZiAoIXdlYWtUaGlzIHx8ICF3ZWFrVHJhbnNhY3Rpb24pCisgICAgICAgICAgICAgICAgcmV0dXJu
IGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJEYXRhYmFzZSBvciB0cmFu
c2FjdGlvbiBpcyBjbG9zZWQiIH0pOworCisgICAgICAgICAgICBjcmVhdGVJbmRleCgqd2Vha1Ry
YW5zYWN0aW9uLCBpbmZvLCBXVEZNb3ZlKGNhbGxiYWNrKSwgZ3JhbnRlZCk7CisgICAgICAgIH0p
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFzcGFjZUNoZWNrUmVzdWx0LnZh
bHVlKCkpIHsKICAgICAgICAgY2FsbGJhY2soSURCRXJyb3IgeyBRdW90YUV4Y2VlZGVkRXJyb3Is
IHF1b3RhRXJyb3JNZXNzYWdlTmFtZSgiQ3JlYXRlSW5kZXgiKSB9KTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CisgICAgaWYgKCFtX2JhY2tp
bmdTdG9yZSkKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRl
RXJyb3IsICJCYWNraW5nIHN0b3JlIGlzIGNsb3NlZCIgfSk7CisKICAgICBhdXRvIGVycm9yID0g
bV9iYWNraW5nU3RvcmUtPmNyZWF0ZUluZGV4KHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVy
KCksIGluZm8pOwogICAgIGlmIChlcnJvci5pc051bGwoKSkgewogICAgICAgICBBU1NFUlQobV9k
YXRhYmFzZUluZm8pOwpAQCAtNjQ0LDExICs3NTAsMjggQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFz
ZTo6Y3JlYXRlSW5kZXgoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24s
IGMKICAgICBjYWxsYmFjayhlcnJvcik7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRl
bGV0ZUluZGV4KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCB1aW50
NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lLCBFcnJv
ckNhbGxiYWNrIGNhbGxiYWNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlSW5kZXgo
VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIHVpbnQ2NF90IG9iamVj
dFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpbmRleE5hbWUsIEVycm9yQ2FsbGJhY2sg
Y2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgc3BhY2VDaGVja1Jlc3VsdCkKIHsKICAgICBBU1NF
UlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJh
c2U6OmRlbGV0ZUluZGV4Iik7CiAKKyAgICBpZiAoIXNwYWNlQ2hlY2tSZXN1bHQpIHsKKyAgICAg
ICAgaWYgKCFtX21hbmFnZXIpCisgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3Ig
eyBJbnZhbGlkU3RhdGVFcnJvciB9KTsKKworICAgICAgICBtX21hbmFnZXItPnJlcXVlc3RTcGFj
ZShtX2lkZW50aWZpZXIub3JpZ2luKCksIDAsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAq
dGhpcyB9LCB3ZWFrVHJhbnNhY3Rpb24gPSBXZWFrUHRyIHsgdHJhbnNhY3Rpb24gfSwgb2JqZWN0
U3RvcmVJZGVudGlmaWVyLCBpbmRleE5hbWUsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayld
KGJvb2wgZ3JhbnRlZCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICF3
ZWFrVHJhbnNhY3Rpb24pCisgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9y
IHsgSW52YWxpZFN0YXRlRXJyb3IsICJEYXRhYmFzZSBvciB0cmFuc2FjdGlvbiBpcyBjbG9zZWQi
IH0pOworCisgICAgICAgICAgICBkZWxldGVJbmRleCgqd2Vha1RyYW5zYWN0aW9uLCBvYmplY3RT
dG9yZUlkZW50aWZpZXIsIGluZGV4TmFtZSwgV1RGTW92ZShjYWxsYmFjayksIGdyYW50ZWQpOwor
ICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChzcGFjZUNo
ZWNrUmVzdWx0LnZhbHVlKCkpOworICAgIGlmICghbV9iYWNraW5nU3RvcmUpCisgICAgICAgIHJl
dHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiQmFja2luZyBzdG9y
ZSBpcyBjbG9zZWQiIH0pOworCiAgICAgYXV0byogb2JqZWN0U3RvcmVJbmZvID0gbV9kYXRhYmFz
ZUluZm8tPmluZm9Gb3JFeGlzdGluZ09iamVjdFN0b3JlKG9iamVjdFN0b3JlSWRlbnRpZmllcik7
CiAgICAgaWYgKCFvYmplY3RTdG9yZUluZm8pIHsKICAgICAgICAgY2FsbGJhY2soSURCRXJyb3Ig
eyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIGRlbGV0ZSBpbmRleCBmcm9tIG5vbi1leGlzdGFu
dCBvYmplY3Qgc3RvcmUiX3MgfSk7CkBAIC02NjAsOSArNzgzLDggQEAgdm9pZCBVbmlxdWVJREJE
YXRhYmFzZTo6ZGVsZXRlSW5kZXgoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNh
Y3Rpb24sIHUKICAgICAgICAgY2FsbGJhY2soSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRl
bXB0IHRvIGRlbGV0ZSBub24tZXhpc3RhbnQgaW5kZXgiX3MgfSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9Ci0gICAgYXV0byBpbmRleElkZW50aWZpZXIgPSBpbmRleEluZm8tPmlkZW50aWZpZXIo
KTsKIAotICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CisgICAgYXV0byBpbmRleElkZW50aWZp
ZXIgPSBpbmRleEluZm8tPmlkZW50aWZpZXIoKTsKICAgICBhdXRvIGVycm9yID0gbV9iYWNraW5n
U3RvcmUtPmRlbGV0ZUluZGV4KHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCksIG9iamVj
dFN0b3JlSWRlbnRpZmllciwgaW5kZXhJZGVudGlmaWVyKTsKICAgICBpZiAoZXJyb3IuaXNOdWxs
KCkpCiAgICAgICAgIG9iamVjdFN0b3JlSW5mby0+ZGVsZXRlSW5kZXgoaW5kZXhJZGVudGlmaWVy
KTsKQEAgLTY3MCwxOCArNzkyLDMzIEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZUlu
ZGV4KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCB1CiAgICAgY2Fs
bGJhY2soZXJyb3IpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpyZW5hbWVJbmRleChV
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgdWludDY0X3Qgb2JqZWN0
U3RvcmVJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRleElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
bmV3TmFtZSwgRXJyb3JDYWxsYmFjayBjYWxsYmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6
OnJlbmFtZUluZGV4KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCB1
aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBuZXdOYW1lLCBFcnJvckNhbGxiYWNrIGNhbGxiYWNrLCBTcGFjZUNoZWNr
UmVzdWx0IHNwYWNlQ2hlY2tSZXN1bHQpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7
CiAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpyZW5hbWVJbmRleCIpOwog
Ci0gICAgLy8gUXVvdGEgY2hlY2suCi0gICAgYXV0byB0YXNrU2l6ZSA9IGRlZmF1bHRXcml0ZU9w
ZXJhdGlvbkNvc3QgKyBuZXdOYW1lLnNpemVJbkJ5dGVzKCk7Ci0gICAgaWYgKG1fc2VydmVyLnJl
cXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIHRhc2tTaXplKSA9PSBTdG9yYWdlUXVv
dGFNYW5hZ2VyOjpEZWNpc2lvbjo6RGVueSkgeworICAgIGlmICghc3BhY2VDaGVja1Jlc3VsdCkg
eworICAgICAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJ
REJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yIH0pOworCisgICAgICAgIGF1dG8gdGFza1NpemUg
PSBkZWZhdWx0V3JpdGVPcGVyYXRpb25Db3N0ICsgbmV3TmFtZS5zaXplSW5CeXRlcygpOworICAg
ICAgICBtX21hbmFnZXItPnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIHRhc2tT
aXplLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgd2Vha1RyYW5zYWN0aW9u
ID0gV2Vha1B0ciB7IHRyYW5zYWN0aW9uIH0sIG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhJ
ZGVudGlmaWVyLCBuZXdOYW1lLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIGdy
YW50ZWQpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhd2Vha1RyYW5z
YWN0aW9uKQorICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFs
aWRTdGF0ZUVycm9yLCAiRGF0YWJhc2Ugb3IgdHJhbnNhY3Rpb24gaXMgY2xvc2VkIiB9KTsKKwor
ICAgICAgICAgICAgcmVuYW1lSW5kZXgoKndlYWtUcmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVJZGVu
dGlmaWVyLCBpbmRleElkZW50aWZpZXIsIG5ld05hbWUsIFdURk1vdmUoY2FsbGJhY2spLCBncmFu
dGVkKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIXNw
YWNlQ2hlY2tSZXN1bHQudmFsdWUoKSkgewogICAgICAgICBjYWxsYmFjayhJREJFcnJvciB7IFF1
b3RhRXhjZWVkZWRFcnJvciwgcXVvdGFFcnJvck1lc3NhZ2VOYW1lKCJSZW5hbWVJbmRleCIpIH0p
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkKKyAg
ICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJCYWNr
aW5nIHN0b3JlIGlzIGNsb3NlZCIgfSk7CisKICAgICBhdXRvKiBvYmplY3RTdG9yZUluZm8gPSBt
X2RhdGFiYXNlSW5mby0+aW5mb0ZvckV4aXN0aW5nT2JqZWN0U3RvcmUob2JqZWN0U3RvcmVJZGVu
dGlmaWVyKTsKICAgICBpZiAoIW9iamVjdFN0b3JlSW5mbykgewogICAgICAgICBjYWxsYmFjayhJ
REJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gcmVuYW1lIGluZGV4IGluIG5vbi1l
eGlzdGFudCBvYmplY3Qgc3RvcmUiX3MgfSk7CkBAIC02OTQsNyArODMxLDYgQEAgdm9pZCBVbmlx
dWVJREJEYXRhYmFzZTo6cmVuYW1lSW5kZXgoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYg
dHJhbnNhY3Rpb24sIHUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VSVChtX2Jh
Y2tpbmdTdG9yZSk7CiAgICAgYXV0byBlcnJvciA9IG1fYmFja2luZ1N0b3JlLT5yZW5hbWVJbmRl
eCh0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpLCBvYmplY3RTdG9yZUlkZW50aWZpZXIs
IGluZGV4SWRlbnRpZmllciwgbmV3TmFtZSk7CiAgICAgaWYgKGVycm9yLmlzTnVsbCgpKQogICAg
ICAgICBpbmRleEluZm8tPnJlbmFtZShuZXdOYW1lKTsKQEAgLTcwNSwxMDEgKzg0MSwxMzAgQEAg
dm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cmVuYW1lSW5kZXgoVW5pcXVlSURCRGF0YWJhc2VUcmFu
c2FjdGlvbiYgdHJhbnNhY3Rpb24sIHUKIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnB1dE9yQWRk
KGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5RGF0YSYga2V5
RGF0YSwgY29uc3QgSURCVmFsdWUmIHZhbHVlLCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3Zlcndy
aXRlTW9kZSBvdmVyd3JpdGVNb2RlLCBLZXlEYXRhQ2FsbGJhY2sgY2FsbGJhY2spCiB7CiAgICAg
QVNTRVJUKCFpc01haW5UaHJlYWQoKSk7Ci0gICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRh
dGFiYXNlOjpwdXRPckFkZCIpOwotCiAgICAgQVNTRVJUKG1fZGF0YWJhc2VJbmZvKTsKKyAgICBM
T0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6OnB1dE9yQWRkIik7CiAKLSAgICBJREJL
ZXlEYXRhIHVzZWRLZXk7Ci0gICAgSURCRXJyb3IgZXJyb3I7CisgICAgaWYgKCFtX2JhY2tpbmdT
dG9yZSkKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJy
b3IsICJCYWNraW5nIHN0b3JlIGlzIGNsb3NlZCIgfSwga2V5RGF0YSk7CiAKLSAgICBBU1NFUlQo
bV9iYWNraW5nU3RvcmUpOwogICAgIGF1dG8gb2JqZWN0U3RvcmVJZGVudGlmaWVyID0gcmVxdWVz
dERhdGEub2JqZWN0U3RvcmVJZGVudGlmaWVyKCk7CiAgICAgYXV0byogb2JqZWN0U3RvcmVJbmZv
ID0gbV9iYWNraW5nU3RvcmUtPmluZm9Gb3JPYmplY3RTdG9yZShvYmplY3RTdG9yZUlkZW50aWZp
ZXIpOwotICAgIGlmICghb2JqZWN0U3RvcmVJbmZvKSB7Ci0gICAgICAgIGNhbGxiYWNrKElEQkVy
cm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJPYmplY3Qgc3RvcmUgY2Fubm90IGJlIGZvdW5kIGlu
IHRoZSBiYWNraW5nIHN0b3JlIl9zIH0sIHVzZWRLZXkpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQorICAgIGlmICghb2JqZWN0U3RvcmVJbmZvKQorICAgICAgICByZXR1cm4gY2FsbGJhY2soSURC
RXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIk9iamVjdCBzdG9yZSBjYW5ub3QgYmUgZm91bmQg
aW4gdGhlIGJhY2tpbmcgc3RvcmUiX3MgfSwga2V5RGF0YSk7CisKKyAgICBpZiAoIW1fbWFuYWdl
cikKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3Ig
fSwga2V5RGF0YSk7CiAKLSAgICBib29sIHVzZWRLZXlJc0dlbmVyYXRlZCA9IGZhbHNlOworICAg
IElEQktleURhdGEgdXNlZEtleTsKICAgICB1aW50NjRfdCBrZXlOdW1iZXI7CisgICAgYm9vbCBp
c1VzZWRLZXlHZW5lcmF0ZWQgPSBmYWxzZTsKKyAgICBJREJFcnJvciBlcnJvcjsKICAgICBhdXRv
IHRyYW5zYWN0aW9uSWRlbnRpZmllciA9IHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmll
cigpOwotICAgIGF1dG8gZ2VuZXJhdGVkS2V5UmVzZXR0ZXIgPSBtYWtlU2NvcGVFeGl0KFt0aGlz
LCB0cmFuc2FjdGlvbklkZW50aWZpZXIsIG9iamVjdFN0b3JlSWRlbnRpZmllciwgJmtleU51bWJl
ciwgJnVzZWRLZXlJc0dlbmVyYXRlZF0oKSB7Ci0gICAgICAgIGlmICh1c2VkS2V5SXNHZW5lcmF0
ZWQpCisgICAgYXV0byBnZW5lcmF0ZWRLZXlSZXNldHRlciA9IG1ha2VTY29wZUV4aXQoW3RoaXMs
IHRyYW5zYWN0aW9uSWRlbnRpZmllciwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCAma2V5TnVtYmVy
LCAmaXNVc2VkS2V5R2VuZXJhdGVkXSgpIHsKKyAgICAgICAgaWYgKGlzVXNlZEtleUdlbmVyYXRl
ZCkKICAgICAgICAgICAgIG1fYmFja2luZ1N0b3JlLT5yZXZlcnRHZW5lcmF0ZWRLZXlOdW1iZXIo
dHJhbnNhY3Rpb25JZGVudGlmaWVyLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGtleU51bWJlcik7
CiAgICAgfSk7CiAKICAgICBpZiAob2JqZWN0U3RvcmVJbmZvLT5hdXRvSW5jcmVtZW50KCkgJiYg
IWtleURhdGEuaXNWYWxpZCgpKSB7CiAgICAgICAgIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPmdl
bmVyYXRlS2V5TnVtYmVyKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgb2JqZWN0U3RvcmVJZGVudGlm
aWVyLCBrZXlOdW1iZXIpOwotICAgICAgICBpZiAoIWVycm9yLmlzTnVsbCgpKSB7Ci0gICAgICAg
ICAgICBjYWxsYmFjayhlcnJvciwgdXNlZEtleSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KKyAgICAgICAgaWYgKCFlcnJvci5pc051bGwoKSkKKyAgICAgICAgICAgIHJldHVybiBj
YWxsYmFjayhlcnJvciwgdXNlZEtleSk7CisKICAgICAgICAgdXNlZEtleS5zZXROdW1iZXJWYWx1
ZShrZXlOdW1iZXIpOwotICAgICAgICB1c2VkS2V5SXNHZW5lcmF0ZWQgPSB0cnVlOworICAgICAg
ICBpc1VzZWRLZXlHZW5lcmF0ZWQgPSB0cnVlOwogICAgIH0gZWxzZQogICAgICAgICB1c2VkS2V5
ID0ga2V5RGF0YTsKIAotICAgIC8vIEdlbmVyYXRlIGluZGV4IGtleXMgdXAgZnJvbnQgZm9yIG1v
cmUgYWNjdXJhdGUgcXVvdGEgY2hlY2suCi0gICAgSW5kZXhJRFRvSW5kZXhLZXlNYXAgaW5kZXhL
ZXlzOwotICAgIGNhbGxPbklEQlNlcmlhbGl6YXRpb25UaHJlYWRBbmRXYWl0KFtvYmplY3RTdG9y
ZUluZm8gPSBvYmplY3RTdG9yZUluZm8tPmlzb2xhdGVkQ29weSgpLCBrZXkgPSB1c2VkS2V5Lmlz
b2xhdGVkQ29weSgpLCB2YWx1ZSA9IHZhbHVlLmlzb2xhdGVkQ29weSgpLCAmaW5kZXhLZXlzXShh
dXRvJiBnbG9iYWxPYmplY3QpIHsKLSAgICAgICAgaW5kZXhLZXlzID0gZ2VuZXJhdGVJbmRleEtl
eU1hcEZvclZhbHVlKGdsb2JhbE9iamVjdCwgb2JqZWN0U3RvcmVJbmZvLCBrZXksIHZhbHVlKTsK
LSAgICB9KTsKLQogICAgIGlmIChvdmVyd3JpdGVNb2RlID09IEluZGV4ZWREQjo6T2JqZWN0U3Rv
cmVPdmVyd3JpdGVNb2RlOjpOb092ZXJ3cml0ZSkgewogICAgICAgICBib29sIGtleUV4aXN0czsK
ICAgICAgICAgZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+a2V5RXhpc3RzSW5PYmplY3RTdG9yZSh0
cmFuc2FjdGlvbklkZW50aWZpZXIsIG9iamVjdFN0b3JlSWRlbnRpZmllciwgdXNlZEtleSwga2V5
RXhpc3RzKTsKICAgICAgICAgaWYgKGVycm9yLmlzTnVsbCgpICYmIGtleUV4aXN0cykKICAgICAg
ICAgICAgIGVycm9yID0gSURCRXJyb3IgeyBDb25zdHJhaW50RXJyb3IsICJLZXkgYWxyZWFkeSBl
eGlzdHMgaW4gdGhlIG9iamVjdCBzdG9yZSJfcyB9OwogCi0gICAgICAgIGlmICghZXJyb3IuaXNO
dWxsKCkpIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKGVycm9yLCB1c2VkS2V5KTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQorICAgICAgICBpZiAoIWVycm9yLmlzTnVsbCgpKQorICAg
ICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGVycm9yLCB1c2VkS2V5KTsKICAgICB9CiAKLSAgICAv
LyBRdW90YSBjaGVjay4KKyAgICAvLyBHZW5lcmF0ZSBpbmRleCBrZXlzIHVwIGZyb250IGZvciBt
b3JlIGFjY3VyYXRlIHF1b3RhIGNoZWNrLgorICAgIEluZGV4SURUb0luZGV4S2V5TWFwIGluZGV4
S2V5czsKKyAgICBjYWxsT25JREJTZXJpYWxpemF0aW9uVGhyZWFkQW5kV2FpdChbb2JqZWN0U3Rv
cmVJbmZvID0gb2JqZWN0U3RvcmVJbmZvLT5pc29sYXRlZENvcHkoKSwga2V5ID0gdXNlZEtleS5p
c29sYXRlZENvcHkoKSwgdmFsdWUgPSB2YWx1ZS5pc29sYXRlZENvcHkoKSwgJmluZGV4S2V5c10o
YXV0byYgZ2xvYmFsT2JqZWN0KSB7CisgICAgICAgIGluZGV4S2V5cyA9IGdlbmVyYXRlSW5kZXhL
ZXlNYXBGb3JWYWx1ZShnbG9iYWxPYmplY3QsIG9iamVjdFN0b3JlSW5mbywga2V5LCB2YWx1ZSk7
CisgICAgfSk7CisKKyAgICBnZW5lcmF0ZWRLZXlSZXNldHRlci5yZWxlYXNlKCk7CiAgICAgYXV0
byBrZXlTaXplID0gZXN0aW1hdGVTaXplKHVzZWRLZXkpOwogICAgIGF1dG8gdmFsdWVTaXplID0g
ZXN0aW1hdGVTaXplKHZhbHVlKTsKICAgICBhdXRvIGluZGV4U2l6ZSA9IGVzdGltYXRlU2l6ZSgq
b2JqZWN0U3RvcmVJbmZvLCBpbmRleEtleXMsIGtleVNpemUpOwogICAgIGF1dG8gdGFza1NpemUg
PSBkZWZhdWx0V3JpdGVPcGVyYXRpb25Db3N0ICsga2V5U2l6ZSArIHZhbHVlU2l6ZSArIGluZGV4
U2l6ZTsKLQogICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6cHV0T3JBZGQg
cXVvdGEgY2hlY2sgd2l0aCB0YXNrIHNpemU6ICUiIFBSSXU2NCAiIGtleSBzaXplOiAlIiBQUkl1
NjQgIiB2YWx1ZSBzaXplOiAlIiBQUkl1NjQgIiBpbmRleCBzaXplOiAlIiBQUkl1NjQsIHRhc2tT
aXplLCBrZXlTaXplLCB2YWx1ZVNpemUsIGluZGV4U2l6ZSk7CisgICAgbV9tYW5hZ2VyLT5yZXF1
ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCB0YXNrU2l6ZSwgW3RoaXMsIHdlYWtUaGlz
ID0gV2Vha1B0ciB7ICp0aGlzIH0sIHJlcXVlc3REYXRhLCB1c2VkS2V5LCB2YWx1ZSwgb3Zlcndy
aXRlTW9kZSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgaXNVc2VkS2V5R2VuZXJhdGVk
LCBpbmRleEtleXMsIG9iamVjdFN0b3JlSW5mbyA9ICpvYmplY3RTdG9yZUluZm9dKGJvb2wgZ3Jh
bnRlZCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1
cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkRhdGFiYXNlIG9yIHRy
YW5zYWN0aW9uIGlzIGNsb3NlZCIgfSwgdXNlZEtleSk7CiAKLSAgICBpZiAobV9zZXJ2ZXIucmVx
dWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwgdGFza1NpemUpID09IFN0b3JhZ2VRdW90
YU1hbmFnZXI6OkRlY2lzaW9uOjpEZW55KSB7Ci0gICAgICAgIGNhbGxiYWNrKElEQkVycm9yIHsg
UXVvdGFFeGNlZWRlZEVycm9yLCBxdW90YUVycm9yTWVzc2FnZU5hbWUoIlB1dE9yQWRkIikgfSwg
dXNlZEtleSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgICAgIHB1dE9yQWRkQWZ0ZXJT
cGFjZUNoZWNrKHJlcXVlc3REYXRhLCB1c2VkS2V5LCB2YWx1ZSwgb3ZlcndyaXRlTW9kZSwgV1RG
TW92ZShjYWxsYmFjayksIGlzVXNlZEtleUdlbmVyYXRlZCwgaW5kZXhLZXlzLCBvYmplY3RTdG9y
ZUluZm8sIGdyYW50ZWQpOworICAgIH0pOworfQorCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpw
dXRPckFkZEFmdGVyU3BhY2VDaGVjayhjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEs
IGNvbnN0IElEQktleURhdGEmIGtleURhdGEsIGNvbnN0IElEQlZhbHVlJiB2YWx1ZSwgSW5kZXhl
ZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUgb3ZlcndyaXRlTW9kZSwgS2V5RGF0YUNhbGxi
YWNrIGNhbGxiYWNrLCBib29sIGlzS2V5R2VuZXJhdGVkLCBjb25zdCBJbmRleElEVG9JbmRleEtl
eU1hcCYgaW5kZXhLZXlzLCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mIG9iamVjdFN0b3JlSW5m
bywgU3BhY2VDaGVja1Jlc3VsdCBzcGFjZUNoZWNrUmVzdWx0KQoreworICAgIEFTU0VSVCghaXNN
YWluVGhyZWFkKCkpOworICAgIEFTU0VSVChtX2RhdGFiYXNlSW5mbyk7CisKKyAgICBpZiAoIW1f
YmFja2luZ1N0b3JlKQorICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlk
U3RhdGVFcnJvciwgIkJhY2tpbmcgc3RvcmUgaXMgY2xvc2VkIiB9LCBrZXlEYXRhKTsKKworICAg
IHVpbnQ2NF90IGtleU51bWJlciA9IGlzS2V5R2VuZXJhdGVkID8ga2V5RGF0YS5udW1iZXIoKSA6
IDA7CisgICAgYXV0byBvYmplY3RTdG9yZUlkZW50aWZpZXIgPSBvYmplY3RTdG9yZUluZm8uaWRl
bnRpZmllcigpOworICAgIGF1dG8gdHJhbnNhY3Rpb25JZGVudGlmaWVyID0gcmVxdWVzdERhdGEu
dHJhbnNhY3Rpb25JZGVudGlmaWVyKCk7CisgICAgYXV0byBnZW5lcmF0ZWRLZXlSZXNldHRlciA9
IG1ha2VTY29wZUV4aXQoW3RoaXMsIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgb2JqZWN0U3RvcmVJ
ZGVudGlmaWVyLCAma2V5TnVtYmVyLCAmaXNLZXlHZW5lcmF0ZWRdKCkgeworICAgICAgICBpZiAo
aXNLZXlHZW5lcmF0ZWQpCisgICAgICAgICAgICBtX2JhY2tpbmdTdG9yZS0+cmV2ZXJ0R2VuZXJh
dGVkS2V5TnVtYmVyKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgb2JqZWN0U3RvcmVJZGVudGlmaWVy
LCBrZXlOdW1iZXIpOworICAgIH0pOworCisgICAgaWYgKCFzcGFjZUNoZWNrUmVzdWx0IHx8ICFz
cGFjZUNoZWNrUmVzdWx0LnZhbHVlKCkpCisgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJv
ciB7IFF1b3RhRXhjZWVkZWRFcnJvciwgcXVvdGFFcnJvck1lc3NhZ2VOYW1lKCJQdXRPckFkZCIp
IH0sIGtleURhdGEpOwogCiAgICAgLy8gSWYgYSByZWNvcmQgYWxyZWFkeSBleGlzdHMgaW4gc3Rv
cmUsIHRoZW4gcmVtb3ZlIHRoZSByZWNvcmQgZnJvbSBzdG9yZSB1c2luZyB0aGUgc3RlcHMgZm9y
IGRlbGV0aW5nIHJlY29yZHMgZnJvbSBhbiBvYmplY3Qgc3RvcmUuCi0gICAgLy8gVGhpcyBpcyBp
bXBvcnRhbnQgYmVjYXVzZSBmb3JtYWxseSBkZWxldGluZyBpdCBmcm9tIGZyb20gdGhlIG9iamVj
dCBzdG9yZSBhbHNvIHJlbW92ZXMgaXQgZnJvbSB0aGUgYXBwcm9wcmlhdGUgaW5kZXhlcy4KLSAg
ICBlcnJvciA9IG1fYmFja2luZ1N0b3JlLT5kZWxldGVSYW5nZSh0cmFuc2FjdGlvbklkZW50aWZp
ZXIsIG9iamVjdFN0b3JlSWRlbnRpZmllciwgdXNlZEtleSk7Ci0gICAgaWYgKCFlcnJvci5pc051
bGwoKSkgewotICAgICAgICBjYWxsYmFjayhlcnJvciwgdXNlZEtleSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9CisgICAgLy8gVGhpcyBpcyBpbXBvcnRhbnQgYmVjYXVzZSBmb3JtYWxseSBkZWxl
dGluZyBpdCBmcm9tIHRoZSBvYmplY3Qgc3RvcmUgYWxzbyByZW1vdmVzIGl0IGZyb20gdGhlIGFw
cHJvcHJpYXRlIGluZGV4ZXMuCisgICAgSURCRXJyb3IgZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+
ZGVsZXRlUmFuZ2UodHJhbnNhY3Rpb25JZGVudGlmaWVyLCBvYmplY3RTdG9yZUlkZW50aWZpZXIs
IGtleURhdGEpOworICAgIGlmICghZXJyb3IuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBjYWxs
YmFjayhlcnJvciwga2V5RGF0YSk7CiAKLSAgICBlcnJvciA9IG1fYmFja2luZ1N0b3JlLT5hZGRS
ZWNvcmQodHJhbnNhY3Rpb25JZGVudGlmaWVyLCAqb2JqZWN0U3RvcmVJbmZvLCB1c2VkS2V5LCBp
bmRleEtleXMsIHZhbHVlKTsKLSAgICBpZiAoIWVycm9yLmlzTnVsbCgpKSB7Ci0gICAgICAgIGNh
bGxiYWNrKGVycm9yLCB1c2VkS2V5KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBlcnJv
ciA9IG1fYmFja2luZ1N0b3JlLT5hZGRSZWNvcmQodHJhbnNhY3Rpb25JZGVudGlmaWVyLCBvYmpl
Y3RTdG9yZUluZm8sIGtleURhdGEsIGluZGV4S2V5cywgdmFsdWUpOworICAgIGlmICghZXJyb3Iu
aXNOdWxsKCkpCisgICAgICAgIHJldHVybiBjYWxsYmFjayhlcnJvciwga2V5RGF0YSk7CiAKLSAg
ICBpZiAob3ZlcndyaXRlTW9kZSAhPSBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9k
ZTo6T3ZlcndyaXRlRm9yQ3Vyc29yICYmIG9iamVjdFN0b3JlSW5mby0+YXV0b0luY3JlbWVudCgp
ICYmIGtleURhdGEudHlwZSgpID09IEluZGV4ZWREQjo6S2V5VHlwZTo6TnVtYmVyKQorICAgIGlm
IChvdmVyd3JpdGVNb2RlICE9IEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlOjpP
dmVyd3JpdGVGb3JDdXJzb3IgJiYgb2JqZWN0U3RvcmVJbmZvLmF1dG9JbmNyZW1lbnQoKSAmJiBr
ZXlEYXRhLnR5cGUoKSA9PSBJbmRleGVkREI6OktleVR5cGU6Ok51bWJlcikKICAgICAgICAgZXJy
b3IgPSBtX2JhY2tpbmdTdG9yZS0+bWF5YmVVcGRhdGVLZXlHZW5lcmF0b3JOdW1iZXIodHJhbnNh
Y3Rpb25JZGVudGlmaWVyLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGtleURhdGEubnVtYmVyKCkp
OwogCiAgICAgZ2VuZXJhdGVkS2V5UmVzZXR0ZXIucmVsZWFzZSgpOwotICAgIGNhbGxiYWNrKGVy
cm9yLCB1c2VkS2V5KTsKKyAgICBjYWxsYmFjayhlcnJvciwga2V5RGF0YSk7CiB9CiAKLXZvaWQg
VW5pcXVlSURCRGF0YWJhc2U6OmdldFJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVz
dERhdGEsIGNvbnN0IElEQkdldFJlY29yZERhdGEmIGdldFJlY29yZERhdGEsIEdldFJlc3VsdENh
bGxiYWNrIGNhbGxiYWNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Z2V0UmVjb3JkKGNvbnN0
IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCR2V0UmVjb3JkRGF0YSYgZ2V0
UmVjb3JkRGF0YSwgR2V0UmVzdWx0Q2FsbGJhY2sgY2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQg
c3BhY2VDaGVja1Jlc3VsdCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBM
T0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6OmdldFJlY29yZCIpOwogCisgICAgaWYg
KCFzcGFjZUNoZWNrUmVzdWx0KSB7CisgICAgICAgIGlmICghbV9tYW5hZ2VyKQorICAgICAgICAg
ICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IgfSwgSURCR2V0
UmVzdWx0IHsgfSk7CisKKyAgICAgICAgbV9tYW5hZ2VyLT5yZXF1ZXN0U3BhY2UobV9pZGVudGlm
aWVyLm9yaWdpbigpLCAwLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgcmVx
dWVzdERhdGEsIGdldFJlY29yZERhdGEsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJv
b2wgZ3JhbnRlZCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAg
ICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAi
RGF0YWJhc2UgaXMgY2xvc2VkIiB9LCBJREJHZXRSZXN1bHQgeyB9KTsKKworICAgICAgICAgICAg
Z2V0UmVjb3JkKHJlcXVlc3REYXRhLCBnZXRSZWNvcmREYXRhLCBXVEZNb3ZlKGNhbGxiYWNrKSwg
Z3JhbnRlZCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNT
RVJUKHNwYWNlQ2hlY2tSZXN1bHQudmFsdWUoKSk7CisgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkK
KyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJC
YWNraW5nIHN0b3JlIGlzIGNsb3NlZCIgfSwgSURCR2V0UmVzdWx0IHsgfSk7CisKICAgICBJREJH
ZXRSZXN1bHQgcmVzdWx0OwogICAgIElEQkVycm9yIGVycm9yOwotCi0gICAgQVNTRVJUKG1fYmFj
a2luZ1N0b3JlKTsKICAgICBpZiAodWludDY0X3QgaW5kZXhJZGVudGlmaWVyID0gcmVxdWVzdERh
dGEuaW5kZXhJZGVudGlmaWVyKCkpCiAgICAgICAgIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPmdl
dEluZGV4UmVjb3JkKHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpLCByZXF1ZXN0
RGF0YS5vYmplY3RTdG9yZUlkZW50aWZpZXIoKSwgaW5kZXhJZGVudGlmaWVyLCByZXF1ZXN0RGF0
YS5pbmRleFJlY29yZFR5cGUoKSwgZ2V0UmVjb3JkRGF0YS5rZXlSYW5nZURhdGEsIHJlc3VsdCk7
CiAgICAgZWxzZQpAQCAtODA4LDQ3ICs5NzMsMTEwIEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6
OmdldFJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkdl
CiAgICAgY2FsbGJhY2soZXJyb3IsIHJlc3VsdCk7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJh
c2U6OmdldEFsbFJlY29yZHMoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25z
dCBJREJHZXRBbGxSZWNvcmRzRGF0YSYgZ2V0QWxsUmVjb3Jkc0RhdGEsIEdldEFsbFJlc3VsdHND
YWxsYmFjayBjYWxsYmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmdldEFsbFJlY29yZHMo
Y29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJHZXRBbGxSZWNvcmRz
RGF0YSYgZ2V0QWxsUmVjb3Jkc0RhdGEsIEdldEFsbFJlc3VsdHNDYWxsYmFjayBjYWxsYmFjaywg
U3BhY2VDaGVja1Jlc3VsdCBzcGFjZUNoZWNrUmVzdWx0KQogewogICAgIEFTU0VSVCghaXNNYWlu
VGhyZWFkKCkpOwogICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6Z2V0QWxs
UmVjb3JkcyIpOwogCi0gICAgQVNTRVJUKG1fYmFja2luZ1N0b3JlKTsKKyAgICBpZiAoIXNwYWNl
Q2hlY2tSZXN1bHQpIHsKKyAgICAgICAgaWYgKCFtX21hbmFnZXIpCisgICAgICAgICAgICByZXR1
cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciB9LCBJREJHZXRBbGxSZXN1
bHQgeyB9KTsKKworICAgICAgICBtX21hbmFnZXItPnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIu
b3JpZ2luKCksIDAsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCByZXF1ZXN0
RGF0YSwgZ2V0QWxsUmVjb3Jkc0RhdGEsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJv
b2wgZ3JhbnRlZCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAg
ICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAi
RGF0YWJhc2UgaXMgY2xvc2VkIiB9LCBJREJHZXRBbGxSZXN1bHQgeyB9KTsKKworICAgICAgICAg
ICAgZ2V0QWxsUmVjb3JkcyhyZXF1ZXN0RGF0YSwgZ2V0QWxsUmVjb3Jkc0RhdGEsIFdURk1vdmUo
Y2FsbGJhY2spLCBncmFudGVkKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBBU1NFUlQoc3BhY2VDaGVja1Jlc3VsdC52YWx1ZSgpKTsKKyAgICBpZiAoIW1fYmFj
a2luZ1N0b3JlKQorICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3Rh
dGVFcnJvciwgIkJhY2tpbmcgc3RvcmUgaXMgY2xvc2VkIiB9LCBJREJHZXRBbGxSZXN1bHQgeyB9
KTsKKwogICAgIElEQkdldEFsbFJlc3VsdCByZXN1bHQ7CiAgICAgYXV0byBlcnJvciA9IG1fYmFj
a2luZ1N0b3JlLT5nZXRBbGxSZWNvcmRzKHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmll
cigpLCBnZXRBbGxSZWNvcmRzRGF0YSwgcmVzdWx0KTsKIAogICAgIGNhbGxiYWNrKGVycm9yLCBy
ZXN1bHQpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRDb3VudChjb25zdCBJREJS
ZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQktleVJhbmdlRGF0YSYgcmFuZ2UsIENv
dW50Q2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRDb3VudChj
b25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQktleVJhbmdlRGF0YSYg
cmFuZ2UsIENvdW50Q2FsbGJhY2sgY2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgc3BhY2VDaGVj
a1Jlc3VsdCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5kZXhl
ZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6OmdldENvdW50Iik7CiAKLSAgICBBU1NFUlQobV9iYWNr
aW5nU3RvcmUpOworICAgIGlmICghc3BhY2VDaGVja1Jlc3VsdCkgeworICAgICAgICBpZiAoIW1f
bWFuYWdlcikKKyAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRT
dGF0ZUVycm9yIH0sIDApOworCisgICAgICAgIG1fbWFuYWdlci0+cmVxdWVzdFNwYWNlKG1faWRl
bnRpZmllci5vcmlnaW4oKSwgMCwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0s
IHJlcXVlc3REYXRhLCByYW5nZSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBn
cmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJEYXRh
YmFzZSBpcyBjbG9zZWQiIH0sIDApOworCisgICAgICAgICAgICBnZXRDb3VudChyZXF1ZXN0RGF0
YSwgcmFuZ2UsIFdURk1vdmUoY2FsbGJhY2spLCBncmFudGVkKTsKKyAgICAgICAgfSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQoc3BhY2VDaGVja1Jlc3VsdC52YWx1ZSgp
KTsKKyAgICBpZiAoIW1fYmFja2luZ1N0b3JlKQorICAgICAgICByZXR1cm4gY2FsbGJhY2soSURC
RXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkJhY2tpbmcgc3RvcmUgaXMgY2xvc2VkIiB9LCAw
KTsKKwogICAgIHVpbnQ2NF90IGNvdW50ID0gMDsKICAgICBhdXRvIGVycm9yID0gbV9iYWNraW5n
U3RvcmUtPmdldENvdW50KHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpLCByZXF1
ZXN0RGF0YS5vYmplY3RTdG9yZUlkZW50aWZpZXIoKSwgcmVxdWVzdERhdGEuaW5kZXhJZGVudGlm
aWVyKCksIHJhbmdlLCBjb3VudCk7CiAKICAgICBjYWxsYmFjayhlcnJvciwgY291bnQpOwogfQog
Ci12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVSZWNvcmQoY29uc3QgSURCUmVxdWVzdERh
dGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlRGF0YSwgRXJy
b3JDYWxsYmFjayBjYWxsYmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZVJlY29y
ZChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQktleVJhbmdlRGF0
YSYga2V5UmFuZ2VEYXRhLCBFcnJvckNhbGxiYWNrIGNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0
IHNwYWNlQ2hlY2tSZXN1bHQpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAg
TE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVSZWNvcmQiKTsKIAotICAg
IEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CisgICAgaWYgKCFzcGFjZUNoZWNrUmVzdWx0KSB7Cisg
ICAgICAgIGlmICghbV9tYW5hZ2VyKQorICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVy
cm9yIHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7CisKKyAgICAgICAgbV9tYW5hZ2VyLT5yZXF1ZXN0
U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCAwLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRy
IHsgKnRoaXMgfSwgcmVxdWVzdERhdGEsIGtleVJhbmdlRGF0YSwgY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKV0oYm9vbCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghd2Vh
a1RoaXMpCisgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxp
ZFN0YXRlRXJyb3IsICJEYXRhYmFzZSBpcyBjbG9zZWQiIH0pOworCisgICAgICAgICAgICBkZWxl
dGVSZWNvcmQocmVxdWVzdERhdGEsIGtleVJhbmdlRGF0YSwgV1RGTW92ZShjYWxsYmFjayksIGdy
YW50ZWQpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VS
VChzcGFjZUNoZWNrUmVzdWx0LnZhbHVlKCkpOworICAgIGlmICghbV9iYWNraW5nU3RvcmUpCisg
ICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiQmFj
a2luZyBzdG9yZSBpcyBjbG9zZWQiIH0pOworCiAgICAgYXV0byBlcnJvciA9IG1fYmFja2luZ1N0
b3JlLT5kZWxldGVSYW5nZShyZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSwgcmVx
dWVzdERhdGEub2JqZWN0U3RvcmVJZGVudGlmaWVyKCksIGtleVJhbmdlRGF0YSk7CiAKICAgICBj
YWxsYmFjayhlcnJvcik7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6Om9wZW5DdXJzb3Io
Y29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJDdXJzb3JJbmZvJiBp
bmZvLCBHZXRSZXN1bHRDYWxsYmFjayBjYWxsYmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6
Om9wZW5DdXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJD
dXJzb3JJbmZvJiBpbmZvLCBHZXRSZXN1bHRDYWxsYmFjayBjYWxsYmFjaywgU3BhY2VDaGVja1Jl
c3VsdCBzcGFjZUNoZWNrUmVzdWx0KQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwog
ICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6b3BlbkN1cnNvciIpOwogCi0g
ICAgQVNTRVJUKG1fYmFja2luZ1N0b3JlKTsKKyAgICBpZiAoIXNwYWNlQ2hlY2tSZXN1bHQpIHsK
KyAgICAgICAgaWYgKCFtX21hbmFnZXIpCisgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURC
RXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciB9LCBJREJHZXRSZXN1bHQgeyB9KTsKKworICAgICAg
ICBtX21hbmFnZXItPnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIDAsIFt0aGlz
LCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCByZXF1ZXN0RGF0YSwgaW5mbywgY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAg
ICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVy
cm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJEYXRhYmFzZSBvciB0cmFuc2FjdGlvbiBpcyBjbG9z
ZWQiIH0sIElEQkdldFJlc3VsdCB7IH0pOworCisgICAgICAgICAgICBvcGVuQ3Vyc29yKHJlcXVl
c3REYXRhLCBpbmZvLCBXVEZNb3ZlKGNhbGxiYWNrKSwgZ3JhbnRlZCk7CisgICAgICAgIH0pOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKHNwYWNlQ2hlY2tSZXN1bHQudmFs
dWUoKSk7CisgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNr
KElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJCYWNraW5nIHN0b3JlIGlzIGNsb3NlZCIg
fSwgSURCR2V0UmVzdWx0IHsgfSk7CiAKICAgICBJREJHZXRSZXN1bHQgcmVzdWx0OwogICAgIGF1
dG8gZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+b3BlbkN1cnNvcihyZXF1ZXN0RGF0YS50cmFuc2Fj
dGlvbklkZW50aWZpZXIoKSwgaW5mbywgcmVzdWx0KTsKQEAgLTg1NiwxMiArMTA4NCwyNyBAQCB2
b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuQ3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiBy
ZXF1ZXN0RGF0YSwgY29uc3QgSURCQwogICAgIGNhbGxiYWNrKGVycm9yLCByZXN1bHQpOwogfQog
Ci12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjppdGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJlcXVlc3RE
YXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCSXRlcmF0ZUN1cnNvckRhdGEmIGRhdGEsIEdldFJl
c3VsdENhbGxiYWNrIGNhbGxiYWNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6aXRlcmF0ZUN1
cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkl0ZXJhdGVD
dXJzb3JEYXRhJiBkYXRhLCBHZXRSZXN1bHRDYWxsYmFjayBjYWxsYmFjaywgU3BhY2VDaGVja1Jl
c3VsdCBzcGFjZUNoZWNrUmVzdWx0KQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwog
ICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6aXRlcmF0ZUN1cnNvciIpOwog
Ci0gICAgQVNTRVJUKG1fYmFja2luZ1N0b3JlKTsKKyAgICBpZiAoIXNwYWNlQ2hlY2tSZXN1bHQp
IHsKKyAgICAgICAgaWYgKCFtX21hbmFnZXIpCisgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2so
SURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciB9LCBJREJHZXRSZXN1bHQgeyB9KTsKKworICAg
ICAgICBtX21hbmFnZXItPnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIDAsIFt0
aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCByZXF1ZXN0RGF0YSwgZGF0YSwgY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICAg
ICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElE
QkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJEYXRhYmFzZSBvciB0cmFuc2FjdGlvbiBpcyBj
bG9zZWQiIH0sIElEQkdldFJlc3VsdCB7IH0pOworCisgICAgICAgICAgICBpdGVyYXRlQ3Vyc29y
KHJlcXVlc3REYXRhLCBkYXRhLCBXVEZNb3ZlKGNhbGxiYWNrKSwgZ3JhbnRlZCk7CisgICAgICAg
IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKHNwYWNlQ2hlY2tSZXN1
bHQudmFsdWUoKSk7CisgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkKKyAgICAgICAgcmV0dXJuIGNh
bGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJCYWNraW5nIHN0b3JlIGlzIGNs
b3NlZCIgfSwgSURCR2V0UmVzdWx0IHsgfSk7CiAKICAgICBJREJHZXRSZXN1bHQgcmVzdWx0Owog
ICAgIGF1dG8gdHJhbnNhY3Rpb25JZGVudGlmaWVyID0gcmVxdWVzdERhdGEudHJhbnNhY3Rpb25J
ZGVudGlmaWVyKCk7CkBAIC04NzEsMTMgKzExMTQsMjkgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFz
ZTo6aXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0
IEkKICAgICBjYWxsYmFjayhlcnJvciwgcmVzdWx0KTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRh
YmFzZTo6Y29tbWl0VHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJh
bnNhY3Rpb24sIEVycm9yQ2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNl
Ojpjb21taXRUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2Fj
dGlvbiwgRXJyb3JDYWxsYmFjayBjYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCBzcGFjZUNoZWNr
UmVzdWx0KQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIExPRyhJbmRleGVk
REIsICJVbmlxdWVJREJEYXRhYmFzZTo6Y29tbWl0VHJhbnNhY3Rpb24gLSAlcyIsIHRyYW5zYWN0
aW9uLmluZm8oKS5pZGVudGlmaWVyKCkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwog
CisgICAgaWYgKCFzcGFjZUNoZWNrUmVzdWx0KSB7CisgICAgICAgIGlmICghbV9tYW5hZ2VyKQor
ICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3Ig
fSk7CisKKyAgICAgICAgbV9tYW5hZ2VyLT5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdp
bigpLCAwLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgd2Vha1RyYW5zYWN0
aW9uID0gV2Vha1B0ciB7IHRyYW5zYWN0aW9uIH0sIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayldKGJvb2wgZ3JhbnRlZCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzIHx8
ICF3ZWFrVHJhbnNhY3Rpb24pCisgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVy
cm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJEYXRhYmFzZSBvciB0cmFuc2FjdGlvbiBpcyBjbG9z
ZWQiIH0pOworCisgICAgICAgICAgICBjb21taXRUcmFuc2FjdGlvbigqd2Vha1RyYW5zYWN0aW9u
LCBXVEZNb3ZlKGNhbGxiYWNrKSwgZ3JhbnRlZCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgQVNTRVJUKHNwYWNlQ2hlY2tSZXN1bHQudmFsdWUoKSk7CiAgICAg
QVNTRVJUKHRyYW5zYWN0aW9uLmRhdGFiYXNlQ29ubmVjdGlvbigpLmRhdGFiYXNlKCkgPT0gdGhp
cyk7Ci0gICAgQVNTRVJUKG1fYmFja2luZ1N0b3JlKTsKKyAgICBpZiAoIW1fYmFja2luZ1N0b3Jl
KQorICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwg
IkJhY2tpbmcgc3RvcmUgaXMgY2xvc2VkIiB9KTsKKyAgICAKICAgICBhdXRvIHRha2VuVHJhbnNh
Y3Rpb24gPSBtX2luUHJvZ3Jlc3NUcmFuc2FjdGlvbnMudGFrZSh0cmFuc2FjdGlvbi5pbmZvKCku
aWRlbnRpZmllcigpKTsKICAgICBpZiAoIXRha2VuVHJhbnNhY3Rpb24pIHsKICAgICAgICAgaWYg
KCFtX29wZW5EYXRhYmFzZUNvbm5lY3Rpb25zLmNvbnRhaW5zKCZ0cmFuc2FjdGlvbi5kYXRhYmFz
ZUNvbm5lY3Rpb24oKSkpCkBAIC04OTMsMTEgKzExNTIsMjUgQEAgdm9pZCBVbmlxdWVJREJEYXRh
YmFzZTo6Y29tbWl0VHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJh
bnNhY3QKICAgICB0cmFuc2FjdGlvbkNvbXBsZXRlZChXVEZNb3ZlKHRha2VuVHJhbnNhY3Rpb24p
KTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6YWJvcnRUcmFuc2FjdGlvbihVbmlxdWVJ
REJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgRXJyb3JDYWxsYmFjayBjYWxsYmFj
aykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmFib3J0VHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0
YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIEVycm9yQ2FsbGJhY2sgY2FsbGJhY2ssIFNw
YWNlQ2hlY2tSZXN1bHQgc3BhY2VDaGVja1Jlc3VsdCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRo
cmVhZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6OmFib3J0VHJh
bnNhY3Rpb24gLSAlcyIsIHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCkubG9nZ2luZ1N0
cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCisgICAgaWYgKCFzcGFjZUNoZWNrUmVzdWx0KSB7Cisg
ICAgICAgIGlmICghbV9tYW5hZ2VyKQorICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVy
cm9yIHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7CisKKyAgICAgICAgbV9tYW5hZ2VyLT5yZXF1ZXN0
U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCAwLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRy
IHsgKnRoaXMgfSwgd2Vha1RyYW5zYWN0aW9uID0gV2Vha1B0ciB7IHRyYW5zYWN0aW9uIH0sIGNh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgZ3JhbnRlZCkgbXV0YWJsZSB7CisgICAg
ICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICF3ZWFrVHJhbnNhY3Rpb24pCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJEYXRhYmFz
ZSBvciB0cmFuc2FjdGlvbiBpcyBjbG9zZWQiIH0pOworCisgICAgICAgICAgICBhYm9ydFRyYW5z
YWN0aW9uKCp3ZWFrVHJhbnNhY3Rpb24sIFdURk1vdmUoY2FsbGJhY2spLCBncmFudGVkKTsKKyAg
ICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQoc3BhY2VDaGVj
a1Jlc3VsdC52YWx1ZSgpKTsKICAgICBBU1NFUlQodHJhbnNhY3Rpb24uZGF0YWJhc2VDb25uZWN0
aW9uKCkuZGF0YWJhc2UoKSA9PSB0aGlzKTsKIAogICAgIGF1dG8gdGFrZW5UcmFuc2FjdGlvbiA9
IG1faW5Qcm9ncmVzc1RyYW5zYWN0aW9ucy50YWtlKHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlm
aWVyKCkpOwpAQCAtOTI1LDcgKzExOTgsMTEgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6YWJv
cnRUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGkKICAg
ICAgICAgbV9kYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oKm1fdmVy
c2lvbkNoYW5nZVRyYW5zYWN0aW9uLT5vcmlnaW5hbERhdGFiYXNlSW5mbygpKTsKICAgICB9CiAK
LSAgICBhdXRvIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPmFib3J0VHJhbnNhY3Rpb24odHJhbnNh
Y3Rpb25JZGVudGlmaWVyKTsKKyAgICBJREJFcnJvciBlcnJvcjsKKyAgICBpZiAoIW1fYmFja2lu
Z1N0b3JlKQorICAgICAgICBlcnJvciA9IElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJC
YWNraW5nIHN0b3JlIGlzIGNsb3NlZCIgfTsKKyAgICBlbHNlCisgICAgICAgIGVycm9yID0gbV9i
YWNraW5nU3RvcmUtPmFib3J0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKIAog
ICAgIGNhbGxiYWNrKGVycm9yKTsKICAgICB0cmFuc2FjdGlvbkNvbXBsZXRlZChXVEZNb3ZlKHRh
a2VuVHJhbnNhY3Rpb24pKTsKQEAgLTEyMDQsNiArMTQ4MSwxMiBAQCB2b2lkIFVuaXF1ZUlEQkRh
dGFiYXNlOjphYm9ydEFjdGl2ZVRyYW5zYWN0aW9ucygpCiAgICAgfQogfQogCit2b2lkIFVuaXF1
ZUlEQkRhdGFiYXNlOjphYm9ydEluUHJvZ3Jlc3NUcmFuc2FjdGlvbnMoKQoreworICAgIGZvciAo
YXV0byYgaWRlbnRpZmllciA6IGNvcHlUb1ZlY3RvcihtX2luUHJvZ3Jlc3NUcmFuc2FjdGlvbnMu
a2V5cygpKSkKKyAgICAgICAgbV9pblByb2dyZXNzVHJhbnNhY3Rpb25zLmdldChpZGVudGlmaWVy
KS0+YWJvcnRXaXRob3V0Q2FsbGJhY2soKTsKK30KKwogdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6
Y2xvc2UoKQogewogICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6Y2xvc2Ui
KTsKQEAgLTEyNjUsNSArMTU0OCwxMCBAQCBzdGQ6Om9wdGlvbmFsPElEQkRhdGFiYXNlTmFtZUFu
ZFZlcnNpb24+IFVuaXF1ZUlEQkRhdGFiYXNlOjpuYW1lQW5kVmVyc2lvbigpIGNvbgogICAgIHJl
dHVybiBJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uIHsgbV9kYXRhYmFzZUluZm8tPm5hbWUoKSwg
bV9kYXRhYmFzZUluZm8tPnZlcnNpb24oKSB9OwogfQogCitib29sIFVuaXF1ZUlEQkRhdGFiYXNl
OjpoYXNEYXRhSW5NZW1vcnkoKSBjb25zdAoreworICAgIHJldHVybiBtX2JhY2tpbmdTdG9yZSA/
IG1fYmFja2luZ1N0b3JlLT5pc0VwaGVtZXJhbCgpIDogZmFsc2U7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIElEQlNlcnZlcgogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2Uu
aAppbmRleCBiMmE3NDE3ZjljODE5Y2ZjMjQxNDZjZTVmYjVjZjVkMjYxMjg1MDgwLi5iMDRkNzEz
OWVmZGYwZGM3OThmNjU4Y2U1MjE2OTZhMGE3NmNmZWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2Uu
aApAQCAtNTksOCArNTksOCBAQCBlbnVtIGNsYXNzIEluZGV4UmVjb3JkVHlwZSA6IGJvb2w7CiBu
YW1lc3BhY2UgSURCU2VydmVyIHsKIAogY2xhc3MgSURCQ29ubmVjdGlvblRvQ2xpZW50OwotY2xh
c3MgSURCU2VydmVyOwogY2xhc3MgVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uOworY2xhc3Mg
VW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyOwogCiB0eXBlZGVmIEZ1bmN0aW9uPHZvaWQoY29uc3Qg
SURCRXJyb3ImKT4gRXJyb3JDYWxsYmFjazsKIHR5cGVkZWYgRnVuY3Rpb248dm9pZChjb25zdCBJ
REJFcnJvciYsIGNvbnN0IElEQktleURhdGEmKT4gS2V5RGF0YUNhbGxiYWNrOwpAQCAtNzEsNTQg
KzcxLDU5IEBAIHR5cGVkZWYgRnVuY3Rpb248dm9pZChjb25zdCBJREJFcnJvciYsIHVpbnQ2NF90
KT4gQ291bnRDYWxsYmFjazsKIGNsYXNzIFVuaXF1ZUlEQkRhdGFiYXNlIDogcHVibGljIENhbk1h
a2VXZWFrUHRyPFVuaXF1ZUlEQkRhdGFiYXNlPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6Ci0gICAgVW5pcXVlSURCRGF0YWJhc2UoSURCU2VydmVyJiwgY29uc3QgSURC
RGF0YWJhc2VJZGVudGlmaWVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgVW5pcXVlSURCRGF0YWJh
c2UoVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyJiwgY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVy
Jik7CiAgICAgVW5pcXVlSURCRGF0YWJhc2UoVW5pcXVlSURCRGF0YWJhc2UmKSA9IGRlbGV0ZTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB+VW5pcXVlSURCRGF0YWJhc2UoKTsKIAotICAgIHZvaWQgb3Bl
bkRhdGFiYXNlQ29ubmVjdGlvbihJREJDb25uZWN0aW9uVG9DbGllbnQmLCBjb25zdCBJREJSZXF1
ZXN0RGF0YSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgb3BlbkRhdGFiYXNlQ29ubmVjdGlv
bihJREJDb25uZWN0aW9uVG9DbGllbnQmLCBjb25zdCBJREJSZXF1ZXN0RGF0YSYpOwogCiAgICAg
Y29uc3QgSURCRGF0YWJhc2VJbmZvJiBpbmZvKCkgY29uc3Q7Ci0gICAgSURCU2VydmVyJiBzZXJ2
ZXIoKSB7IHJldHVybiBtX3NlcnZlcjsgfQorICAgIFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlciog
bWFuYWdlcigpOwogICAgIGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYgaWRlbnRpZmllcigp
IGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogCi0gICAgdm9pZCBjcmVhdGVPYmplY3RT
dG9yZShVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgY29uc3QgSURCT2JqZWN0U3RvcmVJ
bmZvJiwgRXJyb3JDYWxsYmFjayk7Ci0gICAgdm9pZCBkZWxldGVPYmplY3RTdG9yZShVbmlxdWVJ
REJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUsIEVy
cm9yQ2FsbGJhY2spOwotICAgIHZvaWQgcmVuYW1lT2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJh
c2VUcmFuc2FjdGlvbiYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBuZXdOYW1lLCBFcnJvckNhbGxiYWNrKTsKLSAgICB2b2lkIGNsZWFyT2JqZWN0U3RvcmUo
VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRp
ZmllciwgRXJyb3JDYWxsYmFjayk7Ci0gICAgdm9pZCBjcmVhdGVJbmRleChVbmlxdWVJREJEYXRh
YmFzZVRyYW5zYWN0aW9uJiwgY29uc3QgSURCSW5kZXhJbmZvJiwgRXJyb3JDYWxsYmFjayk7Ci0g
ICAgdm9pZCBkZWxldGVJbmRleChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgdWludDY0
X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGluZGV4TmFtZSwgRXJyb3JD
YWxsYmFjayk7Ci0gICAgdm9pZCByZW5hbWVJbmRleChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0
aW9uJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRleElkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSwgRXJyb3JDYWxsYmFjayk7CisgICAgdXNpbmcg
U3BhY2VDaGVja1Jlc3VsdCA9IHN0ZDo6b3B0aW9uYWw8Ym9vbD47CisgICAgdm9pZCBjcmVhdGVP
YmplY3RTdG9yZShVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgY29uc3QgSURCT2JqZWN0
U3RvcmVJbmZvJiwgRXJyb3JDYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCA9IHN0ZDo6bnVsbG9w
dCk7CisgICAgdm9pZCBkZWxldGVPYmplY3RTdG9yZShVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0
aW9uJiwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUsIEVycm9yQ2FsbGJhY2ssIFNwYWNl
Q2hlY2tSZXN1bHQgPSBzdGQ6Om51bGxvcHQpOworICAgIHZvaWQgcmVuYW1lT2JqZWN0U3RvcmUo
VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lLCBFcnJvckNhbGxiYWNrLCBTcGFjZUNoZWNrUmVz
dWx0ID0gc3RkOjpudWxsb3B0KTsKKyAgICB2b2lkIGNsZWFyT2JqZWN0U3RvcmUoVW5pcXVlSURC
RGF0YWJhc2VUcmFuc2FjdGlvbiYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgRXJy
b3JDYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCA9IHN0ZDo6bnVsbG9wdCk7CisgICAgdm9pZCBj
cmVhdGVJbmRleChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgY29uc3QgSURCSW5kZXhJ
bmZvJiwgRXJyb3JDYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCA9IHN0ZDo6bnVsbG9wdCk7Cisg
ICAgdm9pZCBkZWxldGVJbmRleChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgdWludDY0
X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGluZGV4TmFtZSwgRXJyb3JD
YWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCA9IHN0ZDo6bnVsbG9wdCk7CisgICAgdm9pZCByZW5h
bWVJbmRleChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgdWludDY0X3Qgb2JqZWN0U3Rv
cmVJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRleElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3
TmFtZSwgRXJyb3JDYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCA9IHN0ZDo6bnVsbG9wdCk7CiAg
ICAgdm9pZCBwdXRPckFkZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleURhdGEm
LCBjb25zdCBJREJWYWx1ZSYsIEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlLCBL
ZXlEYXRhQ2FsbGJhY2spOwotICAgIHZvaWQgZ2V0UmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRh
JiwgY29uc3QgSURCR2V0UmVjb3JkRGF0YSYsIEdldFJlc3VsdENhbGxiYWNrKTsKLSAgICB2b2lk
IGdldEFsbFJlY29yZHMoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJHZXRBbGxSZWNv
cmRzRGF0YSYsIEdldEFsbFJlc3VsdHNDYWxsYmFjayk7Ci0gICAgdm9pZCBnZXRDb3VudChjb25z
dCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYsIENvdW50Q2FsbGJhY2sp
OwotICAgIHZvaWQgZGVsZXRlUmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURC
S2V5UmFuZ2VEYXRhJiwgRXJyb3JDYWxsYmFjayk7Ci0gICAgdm9pZCBvcGVuQ3Vyc29yKGNvbnN0
IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCQ3Vyc29ySW5mbyYsIEdldFJlc3VsdENhbGxiYWNr
KTsKLSAgICB2b2lkIGl0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJ
REJJdGVyYXRlQ3Vyc29yRGF0YSYsIEdldFJlc3VsdENhbGxiYWNrKTsKLSAgICB2b2lkIGNvbW1p
dFRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCBFcnJvckNhbGxiYWNr
KTsKLSAgICB2b2lkIGFib3J0VHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlv
biYsIEVycm9yQ2FsbGJhY2spOworICAgIHZvaWQgcHV0T3JBZGRBZnRlclNwYWNlQ2hlY2soY29u
c3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlEYXRhJiwgY29uc3QgSURCVmFsdWUmLCBJ
bmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSwgS2V5RGF0YUNhbGxiYWNrLCBib29s
IGlzS2V5R2VuZXJhdGVkLCBjb25zdCBJbmRleElEVG9JbmRleEtleU1hcCYsIGNvbnN0IElEQk9i
amVjdFN0b3JlSW5mbyYsIFNwYWNlQ2hlY2tSZXN1bHQpOworICAgIHZvaWQgZ2V0UmVjb3JkKGNv
bnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCR2V0UmVjb3JkRGF0YSYsIEdldFJlc3VsdENh
bGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0ID0gc3RkOjpudWxsb3B0KTsKKyAgICB2b2lkIGdldEFs
bFJlY29yZHMoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJHZXRBbGxSZWNvcmRzRGF0
YSYsIEdldEFsbFJlc3VsdHNDYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCA9IHN0ZDo6bnVsbG9w
dCk7CisgICAgdm9pZCBnZXRDb3VudChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktl
eVJhbmdlRGF0YSYsIENvdW50Q2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgPSBzdGQ6Om51bGxv
cHQpOworICAgIHZvaWQgZGVsZXRlUmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3Qg
SURCS2V5UmFuZ2VEYXRhJiwgRXJyb3JDYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCA9IHN0ZDo6
bnVsbG9wdCk7CisgICAgdm9pZCBvcGVuQ3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29u
c3QgSURCQ3Vyc29ySW5mbyYsIEdldFJlc3VsdENhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0ID0g
c3RkOjpudWxsb3B0KTsKKyAgICB2b2lkIGl0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVxdWVzdERh
dGEmLCBjb25zdCBJREJJdGVyYXRlQ3Vyc29yRGF0YSYsIEdldFJlc3VsdENhbGxiYWNrLCBTcGFj
ZUNoZWNrUmVzdWx0ID0gc3RkOjpudWxsb3B0KTsKKyAgICB2b2lkIGNvbW1pdFRyYW5zYWN0aW9u
KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCBFcnJvckNhbGxiYWNrLCBTcGFjZUNoZWNr
UmVzdWx0ID0gc3RkOjpudWxsb3B0KTsKKyAgICB2b2lkIGFib3J0VHJhbnNhY3Rpb24oVW5pcXVl
SURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIEVycm9yQ2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQg
PSBzdGQ6Om51bGxvcHQpOwogCiAgICAgdm9pZCBkaWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFu
Z2UoVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlm
aWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpOwogICAgIHZvaWQgY29ubmVjdGlvbkNsb3NlZEZy
b21DbGllbnQoVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJik7CiAgICAgdm9pZCBkaWRGaXJl
VmVyc2lvbkNoYW5nZUV2ZW50KFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYsIGNvbnN0IElE
QlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIEluZGV4ZWREQjo6Q29ubmVj
dGlvbkNsb3NlZE9uQmVoYWxmT2ZTZXJ2ZXIpOwotICAgIHZvaWQgb3BlbkRCUmVxdWVzdENhbmNl
bGxlZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIG9wZW5EQlJlcXVlc3RDYW5jZWxsZWQoY29uc3QgSURCUmVz
b3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllcik7CiAKICAgICB2b2lkIGVucXVldWVU
cmFuc2FjdGlvbihSZWY8VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbj4mJik7CiAKLSAgICB2
b2lkIGhhbmRsZURlbGV0ZShJREJDb25uZWN0aW9uVG9DbGllbnQmLCBjb25zdCBJREJSZXF1ZXN0
RGF0YSYpOwotICAgIHZvaWQgaW1tZWRpYXRlQ2xvc2UoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGhhbmRsZURlbGV0ZShJREJDb25uZWN0aW9uVG9DbGllbnQmLCBjb25zdCBJREJSZXF1ZXN0
RGF0YSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW1tZWRpYXRlQ2xvc2UoKTsKIAogICAg
IGJvb2wgaGFzQWN0aXZlVHJhbnNhY3Rpb25zKCkgY29uc3Q7CiAgICAgdm9pZCBhYm9ydEFjdGl2
ZVRyYW5zYWN0aW9ucygpOwotICAgIGJvb2wgdHJ5Q2xvc2UoKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGFib3J0SW5Qcm9ncmVzc1RyYW5zYWN0aW9ucygpOworICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgdHJ5Q2xvc2UoKTsKIAotICAgIFN0cmluZyBmaWxlUGF0aCgpIGNvbnN0OwotICAgIHN0
ZDo6b3B0aW9uYWw8SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbj4gbmFtZUFuZFZlcnNpb24oKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgZmlsZVBhdGgoKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPElEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24+IG5h
bWVBbmRWZXJzaW9uKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNEYXRhSW5N
ZW1vcnkoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICB2b2lkIGhhbmRsZURhdGFiYXNlT3BlcmF0
aW9ucygpOwogICAgIHZvaWQgaGFuZGxlQ3VycmVudE9wZXJhdGlvbigpOwogICAgIHZvaWQgcGVy
Zm9ybUN1cnJlbnRPcGVuT3BlcmF0aW9uKCk7CisgICAgdm9pZCBwZXJmb3JtQ3VycmVudE9wZW5P
cGVyYXRpb25BZnRlclNwYWNlQ2hlY2soYm9vbCBpc0dyYW50ZWQpOwogICAgIHZvaWQgcGVyZm9y
bUN1cnJlbnREZWxldGVPcGVyYXRpb24oKTsKICAgICBlbnVtIGNsYXNzIFJlcXVlc3RUeXBlIHsg
RGVsZXRlLCBBbnkgfTsKICAgICBSZWZQdHI8U2VydmVyT3BlbkRCUmVxdWVzdD4gdGFrZU5leHRS
dW5uYWJsZVJlcXVlc3QoUmVxdWVzdFR5cGUgPSBSZXF1ZXN0VHlwZTo6QW55KTsKQEAgLTE0Niwx
MSArMTUxLDEzIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNsZWFyVHJhbnNhY3Rpb25zT25Db25u
ZWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYpOwogCi0gICAgSURCU2VydmVyJiBt
X3NlcnZlcjsKKyAgICBJREJTZXJ2ZXIqIG1fc2VydmVyOworICAgIFdlYWtQdHI8VW5pcXVlSURC
RGF0YWJhc2VNYW5hZ2VyPiBtX21hbmFnZXI7CiAgICAgSURCRGF0YWJhc2VJZGVudGlmaWVyIG1f
aWRlbnRpZmllcjsKIAogICAgIExpc3RIYXNoU2V0PFJlZlB0cjxTZXJ2ZXJPcGVuREJSZXF1ZXN0
Pj4gbV9wZW5kaW5nT3BlbkRCUmVxdWVzdHM7CiAgICAgUmVmUHRyPFNlcnZlck9wZW5EQlJlcXVl
c3Q+IG1fY3VycmVudE9wZW5EQlJlcXVlc3Q7CisgICAgSGFzaFNldDxJREJSZXNvdXJjZUlkZW50
aWZpZXI+IG1fb3BlbkRCUmVxdWVzdHNGb3JTcGFjZUNoZWNrOwogCiAgICAgTGlzdEhhc2hTZXQ8
UmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbj4+IG1fb3BlbkRhdGFiYXNlQ29ubmVj
dGlvbnM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5jcHAKaW5k
ZXggNzQzZWRjYzNiOGM1OTQwNTFmNzkxMTE2NTI2YWY0ZDAyMTY5MTM2Ny4uZDZhYTFmYjliYTYy
YmM5OWNkNTA5MmNmNTBjZTY5NWQ5OTA3YjZhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRh
dGFiYXNlQ29ubmVjdGlvbi5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJMb2dnaW5n
LmgiCiAjaW5jbHVkZSAiU2VydmVyT3BlbkRCUmVxdWVzdC5oIgogI2luY2x1ZGUgIlVuaXF1ZUlE
QkRhdGFiYXNlLmgiCisjaW5jbHVkZSAiVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBJREJTZXJ2ZXIgewpAQCAtNDIsMTEgKzQzLDE0
IEBAIFJlZjxVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24+IFVuaXF1ZUlEQkRhdGFiYXNlQ29u
bmVjdGlvbjo6Y3JlYXRlKFVuaXF1ZUlEQkRhCiAKIFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlv
bjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlJiBkYXRhYmFz
ZSwgU2VydmVyT3BlbkRCUmVxdWVzdCYgcmVxdWVzdCkKICAgICA6IG1fZGF0YWJhc2UoZGF0YWJh
c2UpCi0gICAgLCBtX3NlcnZlcihkYXRhYmFzZS5zZXJ2ZXIoKSkKKyAgICAsIG1fbWFuYWdlcihk
YXRhYmFzZS5tYW5hZ2VyKCkpCiAgICAgLCBtX2Nvbm5lY3Rpb25Ub0NsaWVudChyZXF1ZXN0LmNv
bm5lY3Rpb24oKSkKICAgICAsIG1fb3BlblJlcXVlc3RJZGVudGlmaWVyKHJlcXVlc3QucmVxdWVz
dERhdGEoKS5yZXF1ZXN0SWRlbnRpZmllcigpKQogewotICAgIG1fc2VydmVyLnJlZ2lzdGVyRGF0
YWJhc2VDb25uZWN0aW9uKCp0aGlzKTsKKyAgICBpZiAoYXV0byogbWFuYWdlciA9IGRhdGFiYXNl
Lm1hbmFnZXIoKSkgeworICAgICAgICBtX21hbmFnZXIgPSBXZWFrUHRyIHsgKm1hbmFnZXIgfTsK
KyAgICAgICAgbV9tYW5hZ2VyLT5yZWdpc3RlckNvbm5lY3Rpb24oKnRoaXMpOworICAgIH0KICAg
ICBtX2Nvbm5lY3Rpb25Ub0NsaWVudC0+cmVnaXN0ZXJEYXRhYmFzZUNvbm5lY3Rpb24oKnRoaXMp
OwogfQogCkBAIC01NCwxMCArNTgsMTYgQEAgVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uOjp+
VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uKCkKIHsKICAgICBBU1NFUlQobV90cmFuc2FjdGlv
bk1hcC5pc0VtcHR5KCkpOwogCi0gICAgbV9zZXJ2ZXIudW5yZWdpc3RlckRhdGFiYXNlQ29ubmVj
dGlvbigqdGhpcyk7CisgICAgaWYgKG1fbWFuYWdlcikKKyAgICAgICAgbV9tYW5hZ2VyLT51bnJl
Z2lzdGVyQ29ubmVjdGlvbigqdGhpcyk7CiAgICAgbV9jb25uZWN0aW9uVG9DbGllbnQtPnVucmVn
aXN0ZXJEYXRhYmFzZUNvbm5lY3Rpb24oKnRoaXMpOwogfQogCitVbmlxdWVJREJEYXRhYmFzZU1h
bmFnZXIqIFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbjo6bWFuYWdlcigpCit7CisgICAgcmV0
dXJuIG1fbWFuYWdlci5nZXQoKTsKK30KKwogYm9vbCBVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rp
b246Omhhc05vbkZpbmlzaGVkVHJhbnNhY3Rpb25zKCkgY29uc3QKIHsKICAgICByZXR1cm4gIW1f
dHJhbnNhY3Rpb25NYXAuaXNFbXB0eSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlQ29u
bmVjdGlvbi5oCmluZGV4IDJlMTlkZmQyZGM5MTQzNGJmYzVlN2MzYWU0YmU2NmQ4Y2Q4NTg4MTEu
Ljk4ZmViNTljNzZiZWFlYmU3MGVkZGU0YmU1NThmY2E4NzFjOThkYzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZUNv
bm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmgKQEAgLTI1LDcgKzI1LDYgQEAKIAogI3ByYWdt
YSBvbmNlCiAKLSNpbmNsdWRlICJJREJTZXJ2ZXIuaCIKICNpbmNsdWRlICJVbmlxdWVJREJEYXRh
YmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0lkZW50aWZp
ZWQuaD4KQEAgLTM2LDYgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJREJF
cnJvcjsKIGNsYXNzIElEQlJlc3VsdERhdGE7CitjbGFzcyBVbmlxdWVJREJEYXRhYmFzZU1hbmFn
ZXI7CiAKIG5hbWVzcGFjZSBJREJTZXJ2ZXIgewogCkBAIC01MiwxMSArNTIsMTEgQEAgcHVibGlj
OgogCiAgICAgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiBvcGVuUmVxdWVzdElkZW50aWZp
ZXIoKSB7IHJldHVybiBtX29wZW5SZXF1ZXN0SWRlbnRpZmllcjsgfQogICAgIFVuaXF1ZUlEQkRh
dGFiYXNlKiBkYXRhYmFzZSgpIHsgcmV0dXJuIG1fZGF0YWJhc2UuZ2V0KCk7IH0KLSAgICBJREJT
ZXJ2ZXIqIHNlcnZlcigpIHsgcmV0dXJuICZtX3NlcnZlcjsgfQorICAgIFVuaXF1ZUlEQkRhdGFi
YXNlTWFuYWdlciogbWFuYWdlcigpOwogICAgIElEQkNvbm5lY3Rpb25Ub0NsaWVudCYgY29ubmVj
dGlvblRvQ2xpZW50KCkgeyByZXR1cm4gbV9jb25uZWN0aW9uVG9DbGllbnQ7IH0KIAotICAgIHZv
aWQgY29ubmVjdGlvblBlbmRpbmdDbG9zZUZyb21DbGllbnQoKTsKLSAgICB2b2lkIGNvbm5lY3Rp
b25DbG9zZWRGcm9tQ2xpZW50KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb25uZWN0aW9u
UGVuZGluZ0Nsb3NlRnJvbUNsaWVudCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29ubmVj
dGlvbkNsb3NlZEZyb21DbGllbnQoKTsKIAogICAgIGJvb2wgY2xvc2VQZW5kaW5nKCkgY29uc3Qg
eyByZXR1cm4gbV9jbG9zZVBlbmRpbmc7IH0KIApAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBmaXJlVmVyc2lvbkNoYW5nZUV2ZW50KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmll
ciYgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IHJlcXVlc3RlZFZlcnNpb24pOwogICAgIFVu
aXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIGNyZWF0ZVZlcnNpb25DaGFuZ2VUcmFuc2FjdGlv
bih1aW50NjRfdCBuZXdWZXJzaW9uKTsKIAotICAgIHZvaWQgZXN0YWJsaXNoVHJhbnNhY3Rpb24o
Y29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlc3Rh
Ymxpc2hUcmFuc2FjdGlvbihjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mKTsKICAgICB2b2lkIGRp
ZEFib3J0VHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIGNvbnN0IElE
QkVycm9yJik7CiAgICAgdm9pZCBkaWRDb21taXRUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFz
ZVRyYW5zYWN0aW9uJiwgY29uc3QgSURCRXJyb3ImKTsKICAgICB2b2lkIGRpZENyZWF0ZU9iamVj
dFN0b3JlKGNvbnN0IElEQlJlc3VsdERhdGEmKTsKQEAgLTc1LDggKzc1LDggQEAgcHVibGljOgog
ICAgIHZvaWQgZGlkQ3JlYXRlSW5kZXgoY29uc3QgSURCUmVzdWx0RGF0YSYpOwogICAgIHZvaWQg
ZGlkRGVsZXRlSW5kZXgoY29uc3QgSURCUmVzdWx0RGF0YSYpOwogICAgIHZvaWQgZGlkUmVuYW1l
SW5kZXgoY29uc3QgSURCUmVzdWx0RGF0YSYpOwotICAgIHZvaWQgZGlkRmlyZVZlcnNpb25DaGFu
Z2VFdmVudChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBJ
bmRleGVkREI6OkNvbm5lY3Rpb25DbG9zZWRPbkJlaGFsZk9mU2VydmVyKTsKLSAgICB2b2lkIGRp
ZEZpbmlzaEhhbmRsaW5nVmVyc2lvbkNoYW5nZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXIm
IHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRGaXJl
VmVyc2lvbkNoYW5nZUV2ZW50KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElk
ZW50aWZpZXIsIEluZGV4ZWREQjo6Q29ubmVjdGlvbkNsb3NlZE9uQmVoYWxmT2ZTZXJ2ZXIpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlKGNv
bnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKIAogICAg
IHZvaWQgYWJvcnRUcmFuc2FjdGlvbldpdGhvdXRDYWxsYmFjayhVbmlxdWVJREJEYXRhYmFzZVRy
YW5zYWN0aW9uJik7CiAKQEAgLTg4LDcgKzg4LDcgQEAgcHJpdmF0ZToKICAgICBVbmlxdWVJREJE
YXRhYmFzZUNvbm5lY3Rpb24oVW5pcXVlSURCRGF0YWJhc2UmLCBTZXJ2ZXJPcGVuREJSZXF1ZXN0
Jik7CiAKICAgICBXZWFrUHRyPFVuaXF1ZUlEQkRhdGFiYXNlPiBtX2RhdGFiYXNlOwotICAgIElE
QlNlcnZlciYgbV9zZXJ2ZXI7CisgICAgV2Vha1B0cjxVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXI+
IG1fbWFuYWdlcjsKICAgICBSZWY8SURCQ29ubmVjdGlvblRvQ2xpZW50PiBtX2Nvbm5lY3Rpb25U
b0NsaWVudDsKICAgICBJREJSZXNvdXJjZUlkZW50aWZpZXIgbV9vcGVuUmVxdWVzdElkZW50aWZp
ZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9VbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZGEw
NmE4ZDQ0NWZlMGFhYTgyZDIwOWI2NGUyNGFiMGE0YmY5MGM3Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNl
TWFuYWdlci5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgIklEQkRhdGFiYXNlSWRlbnRpZmllci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK3N0cnVjdCBDbGllbnRPcmlnaW47CisKK25hbWVzcGFjZSBJREJTZXJ2ZXIgeworCitjbGFz
cyBJREJCYWNraW5nU3RvcmU7CitjbGFzcyBVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb247CisK
K2NsYXNzIFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxV
bmlxdWVJREJEYXRhYmFzZU1hbmFnZXI+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
K3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5VbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIoKSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJDb25uZWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVj
dGlvbiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlckNvbm5lY3Rpb24oVW5pcXVl
SURCRGF0YWJhc2VDb25uZWN0aW9uJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclRy
YW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHVucmVnaXN0ZXJUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9u
JikgPSAwOworICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPElEQkJhY2tpbmdTdG9yZT4gY3Jl
YXRlQmFja2luZ1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgcmVxdWVzdFNwYWNlKGNvbnN0IENsaWVudE9yaWdpbiYsIHVpbnQ2NF90IHNp
emUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpID0gMDsKK307CisKK30gLy8gbmFt
ZXNwYWNlIElEQlNlcnZlcgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VU
cmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHAKaW5kZXggMWNjMDI4MTdhMTI0YzhkMGVk
NTJmMjEzYWM4ZTUwMDZiYTZiOTZkZS4uYTEzZDVjZjY2MjZjODY5NzU0OTcwYTIxODNjNzlkZDVi
YzE2NDMxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmNw
cApAQCAtNTAsMTIgKzUwLDE0IEBAIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246OlVuaXF1
ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VDb25uCiAgICAgaWYgKG1f
dHJhbnNhY3Rpb25JbmZvLm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbk1vZGU6OlZlcnNpb25jaGFu
Z2UpCiAgICAgICAgIG1fb3JpZ2luYWxEYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFi
YXNlSW5mbz4oZGF0YWJhc2UtPmluZm8oKSk7CiAKLSAgICBkYXRhYmFzZUNvbm5lY3Rpb24oKS5z
ZXJ2ZXIoKS0+cmVnaXN0ZXJUcmFuc2FjdGlvbigqdGhpcyk7CisgICAgaWYgKGF1dG8qIG1hbmFn
ZXIgPSBkYXRhYmFzZUNvbm5lY3Rpb24oKS5tYW5hZ2VyKCkpCisgICAgICAgIG1hbmFnZXItPnJl
Z2lzdGVyVHJhbnNhY3Rpb24oKnRoaXMpOwogfQogCiBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0
aW9uOjp+VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbigpCiB7Ci0gICAgZGF0YWJhc2VDb25u
ZWN0aW9uKCkuc2VydmVyKCktPnVucmVnaXN0ZXJUcmFuc2FjdGlvbigqdGhpcyk7CisgICAgaWYg
KGF1dG8qIG1hbmFnZXIgPSBkYXRhYmFzZUNvbm5lY3Rpb24oKS5tYW5hZ2VyKCkpCisgICAgICAg
IG1hbmFnZXItPnVucmVnaXN0ZXJUcmFuc2FjdGlvbigqdGhpcyk7CiB9CiAKIFVuaXF1ZUlEQkRh
dGFiYXNlQ29ubmVjdGlvbiYgVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6ZGF0YWJhc2VD
b25uZWN0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5oCmlu
ZGV4IDk1OTY2NTJhZGNkYmE3YTA0OGI2MTlmNzRlZjFhOTJjZWVmOWUwZTUuLmZiYTg1YzE3Mzhi
NzM0MmUxMjg4MDBhZWI5ZDFkYTQ2N2VlN2ExMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRh
dGFiYXNlVHJhbnNhY3Rpb24uaApAQCAtNTEsNyArNTEsNyBAQCBuYW1lc3BhY2UgSURCU2VydmVy
IHsKIGNsYXNzIElEQlNlcnZlcjsKIGNsYXNzIFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbjsK
IAotY2xhc3MgVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVk
PFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24+IHsKK2NsYXNzIFVuaXF1ZUlEQkRhdGFiYXNl
VHJhbnNhY3Rpb24gOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8VW5pcXVlSURCRGF0YWJhc2VUcmFu
c2FjdGlvbj4sIHB1YmxpYyBSZWZDb3VudGVkPFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24+
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24+
IGNyZWF0ZShVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mLCBjb25zdCBJREJUcmFuc2FjdGlv
bkluZm8mKTsKIApAQCAtNTksMjkgKzU5LDI5IEBAIHB1YmxpYzoKIAogICAgIFVuaXF1ZUlEQkRh
dGFiYXNlQ29ubmVjdGlvbiYgZGF0YWJhc2VDb25uZWN0aW9uKCk7CiAgICAgY29uc3QgSURCVHJh
bnNhY3Rpb25JbmZvJiBpbmZvKCkgY29uc3QgeyByZXR1cm4gbV90cmFuc2FjdGlvbkluZm87IH0K
LSAgICBib29sIGlzVmVyc2lvbkNoYW5nZSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgaXNWZXJzaW9uQ2hhbmdlKCkgY29uc3Q7CiAgICAgYm9vbCBpc1JlYWRPbmx5KCkgY29uc3Q7
CiAKICAgICBJREJEYXRhYmFzZUluZm8qIG9yaWdpbmFsRGF0YWJhc2VJbmZvKCkgY29uc3Q7CiAK
LSAgICB2b2lkIGFib3J0KCk7Ci0gICAgdm9pZCBhYm9ydFdpdGhvdXRDYWxsYmFjaygpOwotICAg
IHZvaWQgY29tbWl0KHVpbnQ2NF90IHBlbmRpbmdSZXF1ZXN0Q291bnQpOwotCi0gICAgdm9pZCBj
cmVhdGVPYmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQk9iamVjdFN0
b3JlSW5mbyYpOwotICAgIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVxdWVzdERh
dGEmLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSk7Ci0gICAgdm9pZCByZW5hbWVPYmpl
Y3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0YSYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lKTsKLSAgICB2b2lkIGNsZWFyT2JqZWN0U3RvcmUo
Y29uc3QgSURCUmVxdWVzdERhdGEmLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIpOwot
ICAgIHZvaWQgY3JlYXRlSW5kZXgoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJJbmRl
eEluZm8mKTsKLSAgICB2b2lkIGRlbGV0ZUluZGV4KGNvbnN0IElEQlJlcXVlc3REYXRhJiwgdWlu
dDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGluZGV4TmFtZSk7Ci0g
ICAgdm9pZCByZW5hbWVJbmRleChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIHVpbnQ2NF90IG9iamVj
dFN0b3JlSWRlbnRpZmllciwgdWludDY0X3QgaW5kZXhJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IG5ld05hbWUpOwotICAgIHZvaWQgcHV0T3JBZGQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25z
dCBJREJLZXlEYXRhJiwgY29uc3QgSURCVmFsdWUmLCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3Zl
cndyaXRlTW9kZSk7Ci0gICAgdm9pZCBnZXRSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBj
b25zdCBJREJHZXRSZWNvcmREYXRhJik7Ci0gICAgdm9pZCBnZXRBbGxSZWNvcmRzKGNvbnN0IElE
QlJlcXVlc3REYXRhJiwgY29uc3QgSURCR2V0QWxsUmVjb3Jkc0RhdGEmKTsKLSAgICB2b2lkIGdl
dENvdW50KGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJik7Ci0g
ICAgdm9pZCBkZWxldGVSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlS
YW5nZURhdGEmKTsKLSAgICB2b2lkIG9wZW5DdXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEmLCBj
b25zdCBJREJDdXJzb3JJbmZvJik7Ci0gICAgdm9pZCBpdGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJl
cXVlc3REYXRhJiwgY29uc3QgSURCSXRlcmF0ZUN1cnNvckRhdGEmKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGFib3J0KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhYm9ydFdpdGhvdXRD
YWxsYmFjaygpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29tbWl0KHVpbnQ2NF90IHBlbmRp
bmdSZXF1ZXN0Q291bnQpOworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjcmVhdGVPYmplY3RT
dG9yZShjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVxdWVz
dERhdGEmLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSk7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCByZW5hbWVPYmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0YSYsIHVpbnQ2NF90
IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGNsZWFyT2JqZWN0U3RvcmUoY29uc3QgSURCUmVxdWVzdERhdGEmLCB1
aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
Y3JlYXRlSW5kZXgoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJJbmRleEluZm8mKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUluZGV4KGNvbnN0IElEQlJlcXVlc3REYXRh
JiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGluZGV4TmFt
ZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW5hbWVJbmRleChjb25zdCBJREJSZXF1ZXN0
RGF0YSYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgdWludDY0X3QgaW5kZXhJZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
cHV0T3JBZGQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlEYXRhJiwgY29uc3Qg
SURCVmFsdWUmLCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSk7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBnZXRSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJ
REJHZXRSZWNvcmREYXRhJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRBbGxSZWNvcmRz
KGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCR2V0QWxsUmVjb3Jkc0RhdGEmKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldENvdW50KGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29u
c3QgSURCS2V5UmFuZ2VEYXRhJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkZWxldGVSZWNv
cmQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIG9wZW5DdXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25z
dCBJREJDdXJzb3JJbmZvJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpdGVyYXRlQ3Vyc29y
KGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCSXRlcmF0ZUN1cnNvckRhdGEmKTsKIAog
ICAgIHZvaWQgZGlkQWN0aXZhdGVJbkJhY2tpbmdTdG9yZShjb25zdCBJREJFcnJvciYpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRXJy
b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJFcnJvci5o
CmluZGV4IGZmMTdjOThhNDExNWRlNjJjYWNjNzBhZDMyNTJiZDZlZGYxMWYzOTkuLmIzMGFkMzkx
NzZmMDNmZjBkNmM5Mzk4ZDZiM2VkMTljZDJlOTkyMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJFcnJvci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJFcnJvci5oCkBAIC01Miw2ICs1Miw3IEBA
IHB1YmxpYzoKICAgICBTdHJpbmcgbWVzc2FnZSgpIGNvbnN0OwogCiAgICAgYm9vbCBpc051bGwo
KSBjb25zdCB7IHJldHVybiAhbV9jb2RlOyB9CisgICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsg
cmV0dXJuICFpc051bGwoKTsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgSURCRXJyb3IgaXNvbGF0
ZWRDb3B5KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3REYXRhLmgKaW5kZXggMDE4Y2IxM2U3NWViNjQ1ZGQx
MTRlMjRmNmRiZmVhMzRjZjU1YjE2NC4uMDAxNzg3YTY2NThhNDE3OGI2YTc5NzEyOGEwNGRhMzZi
OGFmZGZmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hh
cmVkL0lEQlJlcXVlc3REYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2hhcmVkL0lEQlJlcXVlc3REYXRhLmgKQEAgLTU2LDggKzU2LDggQEAgcHVibGljOgogICAg
IFdFQkNPUkVfRVhQT1JUIElEQlJlcXVlc3REYXRhIGlzb2xhdGVkQ29weSgpIGNvbnN0OwogCiAg
ICAgSURCQ29ubmVjdGlvbklkZW50aWZpZXIgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoKSBj
b25zdDsKLSAgICBJREJSZXNvdXJjZUlkZW50aWZpZXIgcmVxdWVzdElkZW50aWZpZXIoKSBjb25z
dDsKLSAgICBJREJSZXNvdXJjZUlkZW50aWZpZXIgdHJhbnNhY3Rpb25JZGVudGlmaWVyKCkgY29u
c3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgSURCUmVzb3VyY2VJZGVudGlmaWVyIHJlcXVlc3RJZGVu
dGlmaWVyKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgSURCUmVzb3VyY2VJZGVudGlmaWVy
IHRyYW5zYWN0aW9uSWRlbnRpZmllcigpIGNvbnN0OwogICAgIHVpbnQ2NF90IG9iamVjdFN0b3Jl
SWRlbnRpZmllcigpIGNvbnN0OwogICAgIHVpbnQ2NF90IGluZGV4SWRlbnRpZmllcigpIGNvbnN0
OwogICAgIEluZGV4ZWREQjo6SW5kZXhSZWNvcmRUeXBlIGluZGV4UmVjb3JkVHlwZSgpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lE
QlJlc291cmNlSWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2hhcmVkL0lEQlJlc291cmNlSWRlbnRpZmllci5oCmluZGV4IGJlMTYxOTdmNjM0YTU5NmMzOWU1
MTMwMjg1OTA2ODM1NzQ1ODY4MmEuLjdiZTMyYzIyNDJlNTg0ZTE0MGNlMDRjMDJlZjE2NjUwYTlh
MjExZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJl
ZC9JREJSZXNvdXJjZUlkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zaGFyZWQvSURCUmVzb3VyY2VJZGVudGlmaWVyLmgKQEAgLTQ5LDcgKzQ5LDcgQEAg
cHVibGljOgogICAgIElEQlJlc291cmNlSWRlbnRpZmllcihjb25zdCBJREJDbGllbnQ6OklEQkNv
bm5lY3Rpb25Qcm94eSYsIGNvbnN0IElEQlJlcXVlc3QmKTsKICAgICBleHBsaWNpdCBJREJSZXNv
dXJjZUlkZW50aWZpZXIoY29uc3QgSURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnQmKTsK
IAotICAgIHN0YXRpYyBJREJSZXNvdXJjZUlkZW50aWZpZXIgZW1wdHlWYWx1ZSgpOworICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBJREJSZXNvdXJjZUlkZW50aWZpZXIgZW1wdHlWYWx1ZSgpOwog
ICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gIW1fcmVzb3Vy
Y2VOdW1iZXIgJiYgIW1faWRiQ29ubmVjdGlvbklkZW50aWZpZXI7CkBAIC02MSw2ICs2MSw3IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIFN0cmluZ0hhc2hlcjo6aGFzaE1lbW9yeTxzaXplb2Yo
aGFzaENvZGVzKT4oaGFzaENvZGVzKTsKICAgICB9CiAgICAgCisgICAgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRo
aXMgPT0gb3RoZXIpOyB9CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IElEQlJlc291cmNlSWRl
bnRpZmllciYgb3RoZXIpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9pZGJDb25uZWN0
aW9uSWRlbnRpZmllciA9PSBvdGhlci5tX2lkYkNvbm5lY3Rpb25JZGVudGlmaWVyCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOGY3
YmNiZGE0NjdhMjFhZjYyYWJiMTk1NjY2ZTU4OWI0NzYyYmM3YS4uNGJlNzFiMDYxNGI0OWMyNmU2
YTY1YzRhNTRhMTZiYTMwOTkwOWQyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTUzMCwxMCArMTUzMCwxMCBAQAogCQk1MTEy
M0UyRjI3Njk0MENBMDBGOUQ0MUIgLyogTm90aWZpY2F0aW9uRGF0YS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExMjNFMkMyNzY5M0MzMjAwRjlENDFC
IC8qIE5vdGlmaWNhdGlvbkRhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk1MTE3RjMwRTI1RTYxMDIwMDAyQTlGMUUgLyogUmVtb3RlQ29tbWFu
ZExpc3RlbmVyQ29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxMTdGMzBDMjVFNjEwMUYwMDJBOUYxRSAvKiBSZW1vdGVDb21tYW5kTGlzdGVuZXJD
b2NvYS5oICovOyB9OwogCQk1MTFFQzEyODFDNTBBQUNBMDAzMkY5ODMgLyogSURCU2VyaWFsaXph
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEx
RUMxMjYxQzUwQUE1NzAwMzJGOTgzIC8qIElEQlNlcmlhbGl6YXRpb24uaCAqLzsgfTsKLQkJNTEx
RUMxMkMxQzUwQUJCRjAwMzJGOTgzIC8qIFNRTGl0ZUlEQlRyYW5zYWN0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTFFQzEyQTFDNTBBQkJBMDAz
MkY5ODMgLyogU1FMaXRlSURCVHJhbnNhY3Rpb24uaCAqLzsgfTsKKwkJNTExRUMxMkMxQzUwQUJC
RjAwMzJGOTgzIC8qIFNRTGl0ZUlEQlRyYW5zYWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTFFQzEyQTFDNTBBQkJBMDAzMkY5ODMgLyogU1FM
aXRlSURCVHJhbnNhY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk1MTFFQzEzMDFDNTBBQkY1MDAzMkY5ODMgLyogU1FMaXRlSURCQ3Vyc29y
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTFFQzEy
RTFDNTBBQkVDMDAzMkY5ODMgLyogU1FMaXRlSURCQ3Vyc29yLmggKi87IH07CiAJCTUxMjBCQkFG
MUYxQ0VDRTcwMEVGRUJGMSAvKiBDb29raWVTdG9yYWdlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMjBCQkFEMUYxQ0U3NzAwMEVGRUJG
MSAvKiBDb29raWVTdG9yYWdlT2JzZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwotCQk1MTJCREI0QjFDNDU2RkZBMDA2NDk0REYgLyogU1FMaXRl
SURCQmFja2luZ1N0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MTJCREI0OTFDNDU2RkFCMDA2NDk0REYgLyogU1FMaXRlSURCQmFja2luZ1N0b3Jl
LmggKi87IH07CisJCTUxMkJEQjRCMUM0NTZGRkEwMDY0OTRERiAvKiBTUUxpdGVJREJCYWNraW5n
U3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
MkJEQjQ5MUM0NTZGQUIwMDY0OTRERiAvKiBTUUxpdGVJREJCYWNraW5nU3RvcmUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTJERDhGNTBEOTFF
NkFGMDAwRjg5RUUgLyogTGVnYWN5V2ViQXJjaGl2ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyREQ4RUIwRDkxRTZBRjAwMEY4OUVFIC8qIExlZ2Fj
eVdlYkFyY2hpdmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk1MTJERDhGNjBEOTFFNkFGMDAwRjg5RUUgLyogQXJjaGl2ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyREQ4RUMwRDkxRTZBRjAwMEY4
OUVFIC8qIEFyY2hpdmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk1MTJERDhGODBEOTFFNkFGMDAwRjg5RUUgLyogQXJjaGl2ZVJlc291cmNlQ29s
bGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTEyREQ4RUUwRDkxRTZBRjAwMEY4OUVFIC8qIEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24uaCAq
LzsgfTsKQEAgLTE1NzksNyArMTU3OSw3IEBACiAJCTUxNkQ3RDcyMUJCNUYwQkQwMEFGN0M3NyAv
KiBJREJDb25uZWN0aW9uVG9DbGllbnREZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE2RDdENkUxQkI1RjA2NTAwQUY3Qzc3IC8qIElEQkNv
bm5lY3Rpb25Ub0NsaWVudERlbGVnYXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE2RjdGNkQxQzMxRTM5QTAwRjExMURDIC8qIFNlcnZlck9w
ZW5EQlJlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxNkY3RjZDMUMzMUM3OUQwMEYxMTFEQyAvKiBTZXJ2ZXJPcGVuREJSZXF1ZXN0LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE3MTM4RjAx
QkVEMUQxQTAwMEQ1RjAxIC8qIEluZGV4S2V5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTcxMzhFRTFCRUQxRDE3MDAwRDVGMDEgLyogSW5kZXhLZXku
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk1MTcx
MzhGODFCRjEyOEJCMDAwRDVGMDEgLyogSW5kZXhWYWx1ZVN0b3JlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTcxMzhGNjFCRjEyMjYyMDAwRDVGMDEg
LyogSW5kZXhWYWx1ZVN0b3JlLmggKi87IH07CisJCTUxNzEzOEY4MUJGMTI4QkIwMDBENUYwMSAv
KiBJbmRleFZhbHVlU3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxNzEzOEY2MUJGMTIyNjIwMDBENUYwMSAvKiBJbmRleFZhbHVlU3RvcmUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTcxMzhG
QzFCRjNBREY0MDAwRDVGMDEgLyogSURCQ3Vyc29ySW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3MTM4RkExQkYzQURBQzAwMEQ1RjAxIC8qIElE
QkN1cnNvckluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk1MTcxMzkwNjFCRjY0REVDMDAwRDVGMDEgLyogTWVtb3J5T2JqZWN0U3RvcmVDdXJz
b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNzEz
OTA0MUJGNjRERTMwMDBENUYwMSAvKiBNZW1vcnlPYmplY3RTdG9yZUN1cnNvci5oICovOyB9Owog
CQk1MTcxMzkwODFCRjY0REVGMDAwRDVGMDEgLyogTWVtb3J5Q3Vyc29yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTcxMzkwMjFCRjY0REUzMDAwRDVG
MDEgLyogTWVtb3J5Q3Vyc29yLmggKi87IH07CkBAIC0xNjU2LDcgKzE2NTYsNyBAQAogCQk1MUI5
MTQxMDFGRDI3ODJEMDBFRTI4NTkgLyogUmVnaXN0cmF0aW9uRGF0YWJhc2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQjkxNDBDMUZEMjc4MjUwMEVF
Mjg1OSAvKiBSZWdpc3RyYXRpb25EYXRhYmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxQjkxNDExMUZEMjc4MkQwMEVFMjg1OSAvKiBSZWdp
c3RyYXRpb25TdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTFCOTE0MEIxRkQyNzgyNTAwRUUyODU5IC8qIFJlZ2lzdHJhdGlvblN0b3JlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFCQTRBQzQx
QkJCNUNEODAwREYzRDZEIC8qIElEQkRhdGFiYXNlSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCQTRBQzIxQkJCNUNCRjAwREYzRDZEIC8qIElE
QkRhdGFiYXNlSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07Ci0JCTUxQkE0QUNCMUJCQzVCRDkwMERGM0Q2RCAvKiBNZW1vcnlJREJCYWNraW5nU3Rv
cmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkE0
QUM5MUJCQzVCOUUwMERGM0Q2RCAvKiBNZW1vcnlJREJCYWNraW5nU3RvcmUuaCAqLzsgfTsKKwkJ
NTFCQTRBQ0IxQkJDNUJEOTAwREYzRDZEIC8qIE1lbW9yeUlEQkJhY2tpbmdTdG9yZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCQTRBQzkxQkJDNUI5
RTAwREYzRDZEIC8qIE1lbW9yeUlEQkJhY2tpbmdTdG9yZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxQkE0QUNDMUJCQzVCREQwMERGM0Q2RCAv
KiBJREJCYWNraW5nU3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxQkE0QUM3MUJCQzVBRDYwMERGM0Q2RCAvKiBJREJCYWNraW5nU3RvcmUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUJBOTQ3
MTIzQUMzMDUzMDA0NDQ4NDYgLyogUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkE5NDZGMjNBQzMwNTAwMDQ0
NDg0NiAvKiBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxQkNDRTMwMUY4RjE3OUUwMDZCQTBFRCAvKiBT
ZXJ2aWNlV29ya2VyVGhyZWFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTdDODcxMDFGOEVFNzJFMDBFQjgwNzYgLyogU2VydmljZVdvcmtlclRocmVh
ZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0x
NjcyLDcgKzE2NzIsNyBAQAogCQk1MUUwQkFCQjBEQTU1NDcxMDBBOUU0MTcgLyogU3RvcmFnZUV2
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUw
QkFCOTBEQTU1NDcxMDBBOUU0MTcgLyogU3RvcmFnZUV2ZW50LmggKi87IH07CiAJCTUxRTBCQUVC
MERBNTVENEEwMEE5RTQxNyAvKiBKU1N0b3JhZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFMEJBRTkwREE1NUQ0QTAwQTlFNDE3IC8qIEpT
U3RvcmFnZUV2ZW50LmggKi87IH07CiAJCTUxRTBCQjM4MERBNUFDQjYwMEE5RTQxNyAvKiBTdG9y
YWdlTWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MUUwQkIzNjBEQTVBQ0I2MDBBOUU0MTcgLyogU3RvcmFnZU1hcC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTUxRTFCQUMzMUJEODA2NEUwMDU1RDgx
RiAvKiBNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFMUJBQzExQkQ4MDY0NzAwNTVEODFGIC8qIE1l
bW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uLmggKi87IH07CisJCTUxRTFCQUMzMUJEODA2NEUw
MDU1RDgxRiAvKiBNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFMUJBQzExQkQ4MDY0NzAwNTVEODFG
IC8qIE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFFMjY5MzcxREQzQkQ5QjAwNkI2QTU4IC8q
IElEQkl0ZXJhdGVDdXJzb3JEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MUUyNjkzNTFERDNCRDkxMDA2QjZBNTggLyogSURCSXRlcmF0ZUN1cnNv
ckRhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk1MUUzOTkwMDFENkU0NzUwMDA5Qzg4MzEgLyogR2FtZUNvbnRyb2xsZXJHYW1lcGFkLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUzOThGQzFENkU0
NzRCMDA5Qzg4MzEgLyogR2FtZUNvbnRyb2xsZXJHYW1lcGFkLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFFMzk5MDIxRDZFNDc1MDAwOUM4ODMx
IC8qIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUzOThGRTFENkU0NzRCMDA5Qzg4MzEgLyogR2Ft
ZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTY4Miw3ICsxNjgyLDcgQEAKIAkJNTFFQ0MzRjgyMDA1
ODdCRjAwNDgzRUFFIC8qIE1lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUVDQzNGMTIwMDU4N0I1MDA0ODNF
QUUgLyogTWVzc2FnZVBvcnRDaGFubmVsUmVnaXN0cnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUVDQzNGRDIwMDU5MzBEMDA0ODNFQUUgLyog
TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxRUNDM0ZCMjAwNTkzMDEwMDQ4M0VBRSAvKiBNZXNzYWdlUG9y
dENoYW5uZWxQcm92aWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTUxRUU3QjM4MUFBNTBCMDUwMEY5MkIyMSAvKiBSZXNvdXJjZUxvYWRJbmZv
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUVFN0Iz
NzFBQTUwQjA1MDBGOTJCMjEgLyogUmVzb3VyY2VMb2FkSW5mby5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTUxRUVBQTc0MUJFRkZBQjEwMDIxODAw
OCAvKiBJbmRleFZhbHVlRW50cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxRUVBQTcyMUJFRkZBNzkwMDIxODAwOCAvKiBJbmRleFZhbHVlRW50cnku
aCAqLzsgfTsKKwkJNTFFRUFBNzQxQkVGRkFCMTAwMjE4MDA4IC8qIEluZGV4VmFsdWVFbnRyeS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFRUFBNzIx
QkVGRkE3OTAwMjE4MDA4IC8qIEluZGV4VmFsdWVFbnRyeS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxRjE3NEZFMUYzNTg5OTIwMEM3NDk1MCAv
KiBXb3JrZXJUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MUYxNzRGQzFGMzU4OTg4MDBDNzQ5NTAgLyogV29ya2VyVHlwZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxRjE3NTAzMUYzNThCM0Iw
MEM3NDk1MCAvKiBKU1NlcnZpY2VXb3JrZXJVcGRhdGVWaWFDYWNoZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGMTc1MDExRjM1OEIzNjAwQzc0OTUw
IC8qIEpTU2VydmljZVdvcmtlclVwZGF0ZVZpYUNhY2hlLmggKi87IH07CiAJCTUxRjE3NTA2MUYz
NThCRjcwMEM3NDk1MCAvKiBKU1dvcmtlclR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjE3NTA1MUYzNThCREUwMEM3NDk1MCAvKiBKU1dvcmtl
clR5cGUuaCAqLzsgfTsKQEAgLTMwMDYsNiArMzAwNiw3IEBACiAJCTkzRDlENTNDMERBMjdFMTgw
MDc3MjE2QyAvKiBSYW5nZUJvdW5kYXJ5UG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDlENTNCMERBMjdFMTgwMDc3MjE2QyAvKiBSYW5nZUJv
dW5kYXJ5UG9pbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk5M0UyNDFGRjBCMkI0RTQwMDBDNzMyQTEgLyogSFRNTEZyYW1lT3duZXJFbGVtZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0UyNDFG
RTBCMkI0RTQwMDBDNzMyQTEgLyogSFRNTEZyYW1lT3duZXJFbGVtZW50LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNFMjY5QTIyNzBBNUQ1RDAw
MkM0RkYwIC8qIEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0UyNjk5RjI3MEE1RDVDMDAyQzRGRjAgLyog
RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQk5M0UyOTYyMTI3ODM2RjQzMDAwOTlCOEIgLyogVW5pcXVl
SURCRGF0YWJhc2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5M0UyOTYxRjI3ODM2RjQzMDAwOTlCOEIgLyogVW5pcXVlSURCRGF0YWJhc2VN
YW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJOTNFMkEzMDcxMjNFOURDMDAwOUZFMTJBIC8qIEhUTUxQYXJzZXJJZGlvbXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRTJBMzA1MTIzRTlEQzAw
MDlGRTEyQSAvKiBIVE1MUGFyc2VySWRpb21zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNFNUIyNjUyNDU1RTk2RjAwNUM1MkQwIC8qIEF0dHJp
YnV0ZWRTdHJpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDkzRTVCMjYzMjQ1NUU5NkYwMDVDNTJEMCAvKiBBdHRyaWJ1dGVkU3RyaW5nLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNGMTk4RTUwODI0
NUU1OTAwMUU5QUJDIC8qIEhUTUxEb2N1bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjUyM0QyM0MwMkRFNDM5NjAxODYzNUNBIC8qIEhUTUxEb2N1
bWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC0xMjgwNCw2ICsxMjgwNSw3IEBACiAJCTkzRTI2OTlEMjcwQTVENUIwMDJDNEZGMCAvKiBGaWxl
U3lzdGVtU3luY0FjY2Vzc0hhbmRsZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRmlsZVN5
c3RlbVN5bmNBY2Nlc3NIYW5kbGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
M0UyNjk5RjI3MEE1RDVDMDAyQzRGRjAgLyogRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5k
bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNFMjY5QTAyNzBBNUQ1QzAwMkM0
RkYwIC8qIEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNFMjk2MUYyNzgzNkY0MzAwMDk5QjhCIC8qIFVuaXF1
ZUlEQkRhdGFiYXNlTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBV
bmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OTNFMkEzMDQxMjNFOURDMDAwOUZFMTJBIC8qIEhUTUxQYXJzZXJJZGlvbXMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTFBhcnNlcklkaW9tcy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRTJBMzA1MTIzRTlEQzAwMDlGRTEyQSAvKiBIVE1M
UGFyc2VySWRpb21zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxQYXJz
ZXJJZGlvbXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNFNUIyNTQyNDUzNkIx
RTAwNUM1MkQwIC8qIFVSTERlY29tcG9zaXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gVVJMRGVjb21wb3NpdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0yMjAzOCw2ICsyMjA0MCw3IEBACiAJCQkJNTE4ODY0REYxQkJBRjMwRjAwRTU0
MEM5IC8qIFVuaXF1ZUlEQkRhdGFiYXNlLmggKi8sCiAJCQkJNTE5OEY3QTIxQkJEQUEyOTAwRTJD
QzVGIC8qIFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5jcHAgKi8sCiAJCQkJNTE5OEY3QTMx
QkJEQUEyOTAwRTJDQzVGIC8qIFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5oICovLAorCQkJ
CTkzRTI5NjFGMjc4MzZGNDMwMDA5OUI4QiAvKiBVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuaCAq
LywKIAkJCQk1MTk4RjdBNjFCQkREMzgxMDBFMkNDNUYgLyogVW5pcXVlSURCRGF0YWJhc2VUcmFu
c2FjdGlvbi5jcHAgKi8sCiAJCQkJNTE5OEY3QTcxQkJERDM4MTAwRTJDQzVGIC8qIFVuaXF1ZUlE
QkRhdGFiYXNlVHJhbnNhY3Rpb24uaCAqLywKIAkJCSk7CkBAIC0zNzY0MCw2ICszNzY0Myw3IEBA
CiAJCQkJQTg2M0UyMDExMzQzNDEyMDAwMjc0OTI2IC8qIFVuaWNvZGVCaWRpLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1MTg4NjRFMTFCQkFGNTc0MDBFNTQwQzkgLyogVW5pcXVlSURCRGF0YWJhc2Uu
aCBpbiBIZWFkZXJzICovLAogCQkJCTUxOThGN0E1MUJCREI3OTMwMEUyQ0M1RiAvKiBVbmlxdWVJ
REJEYXRhYmFzZUNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTkzRTI5NjIxMjc4MzZG
NDMwMDA5OUI4QiAvKiBVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTUxOThGN0E5MUJCREQzODUwMEUyQ0M1RiAvKiBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0
aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNEFGQ0ZBNTBEQUYyOUEzMDBGNUY1NUMgLyogVW5p
dEJlemllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzE4Q0MwQTQyNTgwRUZCMTAwM0Q3NUZCIC8q
IFVuaXZlcnNhbEFjY2Vzc1pvb20uaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcAppbmRleCA4ZWViZDIyY2ZjOGE1N2FjNWNmN2RkZGRjY2I2MjQ2YmFlMzA5OWNkLi43
MzQzNzhmMmRkYzIyODI4MjY5MjQyNGM2MmNmMTZkMDQ5Y2IzOTMwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcApAQCAtNTIsMTMgKzUyLDEzIEBACiAjaW5jbHVkZSAiTmV0d29ya1NvY2tl
dENoYW5uZWxNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtTb2NrZXRTdHJlYW0uaCIKICNp
bmNsdWRlICJOZXR3b3JrU29ja2V0U3RyZWFtTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJOZXR3b3Jr
U3RvcmFnZU1hbmFnZXIuaCIKICNpbmNsdWRlICJQaW5nTG9hZC5oIgogI2luY2x1ZGUgIlByZWNv
bm5lY3RUYXNrLmgiCiAjaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyUHJveHku
aCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrTWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJFcnJvcnMuaCIKLSNpbmNs
dWRlICJXZWJJREJTZXJ2ZXIuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNp
bmNsdWRlICJXZWJQcm9jZXNzUG9vbE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmgiCkBAIC0zNjAsOCArMzYwLDEyIEBAIGJvb2wgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lCiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnVwZGF0ZVF1
b3RhQmFzZWRPblNwYWNlVXNhZ2VGb3JUZXN0aW5nKGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2lu
KQogewotICAgIGF1dG8gc3RvcmFnZVF1b3RhTWFuYWdlciA9IG1fbmV0d29ya1Byb2Nlc3MtPnN0
b3JhZ2VRdW90YU1hbmFnZXIoc2Vzc2lvbklEKCksIG9yaWdpbik7Ci0gICAgc3RvcmFnZVF1b3Rh
TWFuYWdlci0+cmVzZXRRdW90YVVwZGF0ZWRCYXNlZE9uVXNhZ2VGb3JUZXN0aW5nKCk7CisgICAg
YXV0byogc2Vzc2lvbiA9IG1fbmV0d29ya1Byb2Nlc3MtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25J
RCgpKTsKKyAgICBpZiAoIXNlc3Npb24pCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChhdXRv
KiBzdG9yYWdlTWFuYWdlciA9IHNlc3Npb24tPnN0b3JhZ2VNYW5hZ2VyKCkpCisgICAgICAgIHN0
b3JhZ2VNYW5hZ2VyLT5yZXNldFF1b3RhVXBkYXRlZEJhc2VkT25Vc2FnZUZvclRlc3Rpbmcob3Jp
Z2luKTsKIH0KIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkQ2xvc2Uo
SVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQpAQCAtOTUwLDggKzk1NCwxMCBAQCB2b2lkIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlc0Zv
ckluZGV4ZWREQihjb25zdAogICAgICAgICBmb3IgKGF1dG8mIGZpbGUgOiBmaWxlUmVmZXJlbmNl
cykKICAgICAgICAgICAgIGZpbGUtPnJldm9rZUZpbGVBY2Nlc3MoKTsKIAotICAgICAgICBpZiAo
YXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKCkpCi0gICAgICAgICAgICBzZXNzaW9uLT5l
bnN1cmVXZWJJREJTZXJ2ZXIoKS5yZWdpc3RlclRlbXBvcmFyeUJsb2JGaWxlUGF0aHMobV9jb25u
ZWN0aW9uLCBmaWxlUGF0aHMpOworICAgICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtT
ZXNzaW9uKCkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBzdG9yYWdlTWFuYWdlciA9IHNlc3Np
b24tPnN0b3JhZ2VNYW5hZ2VyKCkpCisgICAgICAgICAgICAgICAgc3RvcmFnZU1hbmFnZXItPnJl
Z2lzdGVyVGVtcG9yYXJ5QmxvYkZpbGVQYXRocyhtX2Nvbm5lY3Rpb24sIGZpbGVQYXRocyk7Cisg
ICAgICAgIH0KICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShmaWxlUGF0aHMpKTsK
ICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5jcHAKaW5kZXggMjZiZDEwNzE5OTRiM2Y4MjdiZDdkNTk3NDUzOWFmMTQ5YzE2MjJjYS4u
NWM4YzJlMzY3NDkwZGZjNDI1ZmQ5NmMyODMxZjM0MjI5NzQ0YTNjMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTI2NCw4ICsyNjQs
NiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKQogICAg
IC8vIE1ha2Ugc3VyZSB3ZSBmbHVzaCBhbGwgY29va2llcyB0byBkaXNrIGJlZm9yZSBleGl0aW5n
LgogICAgIGZvckVhY2hOZXR3b3JrU2Vzc2lvbihbJl0gKGF1dG8mIHNlc3Npb24pIHsKICAgICAg
ICAgcGxhdGZvcm1GbHVzaENvb2tpZXMoc2Vzc2lvbi5zZXNzaW9uSUQoKSwgW2NhbGxiYWNrQWdn
cmVnYXRvcl0geyB9KTsKLSAgICAgICAgLy8gTWFrZSBzdXJlIHJlZmVyZW5jZSB0byBOZXR3b3Jr
UHJvY2VzcyBpbiBzcGFjZVJlcXVlc3RlciBpcyByZW1vdmVkLgotICAgICAgICBzZXNzaW9uLmNs
b3NlSURCU2VydmVyKFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiAgICAgfSk7CiB9CiAKQEAg
LTM4Miw3ICszODAsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjcmVhdGVOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyhQcm9jZXNzSWRlbnRpZmllciBpZGVudAogICAgIGNvbm5lY3Rpb24u
c2V0T25MaW5lU3RhdGUoTmV0d29ya1N0YXRlTm90aWZpZXI6OnNpbmdsZXRvbigpLm9uTGluZSgp
KTsKIAogICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkg
ewotICAgICAgICBzZXNzaW9uLT5lbnN1cmVXZWJJREJTZXJ2ZXIoKS5hZGRDb25uZWN0aW9uKGNv
bm5lY3Rpb24uY29ubmVjdGlvbigpLCBpZGVudGlmaWVyKTsKICAgICAgICAgaWYgKGF1dG8qIG1h
bmFnZXIgPSBzZXNzaW9uLT5zdG9yYWdlTWFuYWdlcigpKQogICAgICAgICAgICAgbWFuYWdlci0+
c3RhcnRSZWNlaXZpbmdNZXNzYWdlRnJvbUNvbm5lY3Rpb24oY29ubmVjdGlvbi5jb25uZWN0aW9u
KCkpOwogICAgIH0KQEAgLTQwNiw4ICs0MDMsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjphZGRX
ZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycwog
ICAgIGFkZFNlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2VyKHNlc3Npb25JRCwgcGFyYW1ldGVycy5w
ZXJPcmlnaW5TdG9yYWdlUXVvdGEsIHBhcmFtZXRlcnMucGVyVGhpcmRQYXJ0eU9yaWdpblN0b3Jh
Z2VRdW90YSwgcGFyYW1ldGVycy5jYWNoZVN0b3JhZ2VEaXJlY3RvcnksIHBhcmFtZXRlcnMuY2Fj
aGVTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKIAogICAgIGlmIChhdXRvKiBzZXNz
aW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICBzZXNzaW9uLT5hZGRT
dG9yYWdlTWFuYWdlclNlc3Npb24ocGFyYW1ldGVycy5nZW5lcmFsU3RvcmFnZURpcmVjdG9yeSwg
cGFyYW1ldGVycy5nZW5lcmFsU3RvcmFnZURpcmVjdG9yeUhhbmRsZSwgcGFyYW1ldGVycy5sb2Nh
bFN0b3JhZ2VEaXJlY3RvcnksIHBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5z
aW9uSGFuZGxlKTsKLSAgICAgICAgc2Vzc2lvbi0+YWRkSW5kZXhlZERhdGFiYXNlU2Vzc2lvbihw
YXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSwgcGFyYW1ldGVycy5pbmRleGVkRGF0
YWJhc2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOworICAgICAgICBzZXNzaW9uLT5hZGRTdG9y
YWdlTWFuYWdlclNlc3Npb24ocGFyYW1ldGVycy5nZW5lcmFsU3RvcmFnZURpcmVjdG9yeSwgcGFy
YW1ldGVycy5nZW5lcmFsU3RvcmFnZURpcmVjdG9yeUhhbmRsZSwgcGFyYW1ldGVycy5sb2NhbFN0
b3JhZ2VEaXJlY3RvcnksIHBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9u
SGFuZGxlLCBwYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSwgcGFyYW1ldGVycy5p
bmRleGVkRGF0YWJhc2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUsIHBhcmFtZXRlcnMuY2FjaGVT
dG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLnBlck9yaWdpblN0b3JhZ2VRdW90YSwgcGFyYW1l
dGVycy5wZXJUaGlyZFBhcnR5T3JpZ2luU3RvcmFnZVF1b3RhKTsKICNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCiAgICAgICAgIHNlc3Npb24tPmFkZFNlcnZpY2VXb3JrZXJTZXNzaW9uKHBhcmFt
ZXRlcnMuc2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCwgV1RGTW92
ZShwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkpLCBwYXJhbWV0
ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwog
I2VuZGlmCkBAIC0xNDUyLDEzICsxNDQ4LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZmV0Y2hX
ZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXQKICAg
ICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX3dlYnNpdGVEYXRhLmhvc3ROYW1lc1dpdGhIU1RT
Q2FjaGUgPSBob3N0TmFtZXNXaXRoSFNUU0NhY2hlKHNlc3Npb25JRCk7CiAjZW5kaWYKIAotICAg
IGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERC
RGF0YWJhc2VzKSAmJiBzZXNzaW9uICYmIHNlc3Npb24tPmhhc0lEQkRhdGFiYXNlUGF0aCgpKSB7
Ci0gICAgICAgIHNlc3Npb24tPmVuc3VyZVdlYklEQlNlcnZlcigpLmdldE9yaWdpbnMoW2NhbGxi
YWNrQWdncmVnYXRvcl0oYXV0byYmIG9yaWdpbnMpIHsKLSAgICAgICAgICAgIHdoaWxlICghb3Jp
Z2lucy5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX3dl
YnNpdGVEYXRhLmVudHJpZXMuYXBwZW5kKHsgb3JpZ2lucy50YWtlQW55KCksIFdlYnNpdGVEYXRh
VHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzLCAwIH0pOwotICAgICAgICB9KTsKLSAgICB9Ci0KICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFp
bnMoV2Vic2l0ZURhdGFUeXBlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucykgJiYgc2Vzc2lv
biAmJiBzZXNzaW9uLT5oYXNTZXJ2aWNlV29ya2VyRGF0YWJhc2VQYXRoKCkpIHsKICAgICAgICAg
c2Vzc2lvbi0+ZW5zdXJlU1dTZXJ2ZXIoKS5nZXRPcmlnaW5zV2l0aFJlZ2lzdHJhdGlvbnMoW2Nh
bGxiYWNrQWdncmVnYXRvcl0oY29uc3QgSGFzaFNldDxTZWN1cml0eU9yaWdpbkRhdGE+JiBzZWN1
cml0eU9yaWdpbnMpIG11dGFibGUgewpAQCAtMTUyNSw5ICsxNTE0LDYgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRp
b25TZXQ8V2Vic2kKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0
YVR5cGU6OkRPTUNhY2hlKSAmJiBzZXNzaW9uKQogICAgICAgICBDYWNoZVN0b3JhZ2U6OkVuZ2lu
ZTo6Y2xlYXJBbGxDYWNoZXMoKnNlc3Npb24sIFtjbGVhclRhc2tzSGFuZGxlcl0geyB9KTsKIAot
ICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhl
ZERCRGF0YWJhc2VzKSAmJiAhc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkgJiYgc2Vzc2lvbikKLSAg
ICAgICAgc2Vzc2lvbi0+ZW5zdXJlV2ViSURCU2VydmVyKCkuY2xvc2VBbmREZWxldGVEYXRhYmFz
ZXNNb2RpZmllZFNpbmNlKG1vZGlmaWVkU2luY2UsIFtjbGVhclRhc2tzSGFuZGxlcl0geyB9KTsK
LQogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBib29sIGNsZWFyU2VydmljZVdvcmtl
cnMgPSB3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6RE9NQ2FjaGUp
IHx8IHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9ucyk7CiAgICAgaWYgKGNsZWFyU2VydmljZVdvcmtlcnMgJiYgIXNlc3Np
b25JRC5pc0VwaGVtZXJhbCgpICYmIHNlc3Npb24pCkBAIC0xNjIwLDkgKzE2MDYsNiBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBPcHRpbwogICAgICAgICAgICAgQ2FjaGVTdG9yYWdlOjpFbmdpbmU6OmNs
ZWFyQ2FjaGVzRm9yT3JpZ2luKCpzZXNzaW9uLCBTZWN1cml0eU9yaWdpbkRhdGEgeyBvcmlnaW5E
YXRhIH0sIFtjbGVhclRhc2tzSGFuZGxlcl0geyB9KTsKICAgICB9CiAKLSAgICBpZiAod2Vic2l0
ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykg
JiYgIXNlc3Npb25JRC5pc0VwaGVtZXJhbCgpICYmIHNlc3Npb24pCi0gICAgICAgIHNlc3Npb24t
PmVuc3VyZVdlYklEQlNlcnZlcigpLmNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzRm9yT3JpZ2lucyhv
cmlnaW5EYXRhcywgW2NsZWFyVGFza3NIYW5kbGVyXSB7IH0pOwotCiAjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQogICAgIGJvb2wgY2xlYXJTZXJ2aWNlV29ya2VycyA9IHdlYnNpdGVEYXRhVHlw
ZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSkgfHwgd2Vic2l0ZURhdGFUeXBl
cy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zKTsK
ICAgICBpZiAoY2xlYXJTZXJ2aWNlV29ya2VycyAmJiAhc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkg
JiYgc2Vzc2lvbikgewpAQCAtMTgxMSwxNyArMTc5NCw2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OmRlbGV0ZUFuZFJlc3RyaWN0V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoUEFMOjpT
ZXNzCiAgICAgICAgICAgICB9CiAgICAgICAgIH0pOwogICAgIH0KLQotICAgIGlmICh3ZWJzaXRl
RGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKSAm
JiBzZXNzaW9uICYmIHNlc3Npb24tPmhhc0lEQkRhdGFiYXNlUGF0aCgpKSB7Ci0gICAgICAgIHNl
c3Npb24tPmVuc3VyZVdlYklEQlNlcnZlcigpLmdldE9yaWdpbnMoW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBSZWYgeyAqdGhpcyB9LCBzZXNzaW9uSUQsIGNhbGxiYWNrQWdncmVnYXRvciwgZG9tYWlu
c1RvRGVsZXRlQWxsTm9uQ29va2llV2Vic2l0ZURhdGFGb3JdKGF1dG8mJiBvcmlnaW5zKSB7Ci0g
ICAgICAgICAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKLSAg
ICAgICAgICAgIGlmICghc2Vzc2lvbiB8fCAhc2Vzc2lvbi0+d2ViSURCU2VydmVyKCkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICBhdXRvIG9yaWdpbnNUb0RlbGV0ZSA9
IGZpbHRlckZvclJlZ2lzdHJhYmxlRG9tYWlucyhvcmlnaW5zLCBkb21haW5zVG9EZWxldGVBbGxO
b25Db29raWVXZWJzaXRlRGF0YUZvciwgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX2RvbWFpbnMpOwot
ICAgICAgICAgICAgc2Vzc2lvbi0+d2ViSURCU2VydmVyKCktPmNsb3NlQW5kRGVsZXRlRGF0YWJh
c2VzRm9yT3JpZ2lucyhvcmlnaW5zVG9EZWxldGUsIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7
Ci0gICAgICAgIH0pOwotICAgIH0KICAgICAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAg
ICAgYm9vbCBjbGVhclNlcnZpY2VXb3JrZXJzID0gd2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhX
ZWJzaXRlRGF0YVR5cGU6OkRPTUNhY2hlKSB8fCB3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdl
YnNpdGVEYXRhVHlwZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMpOwpAQCAtMTk1NywxNCAr
MTkyOSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlZ2lzdHJhYmxlRG9tYWluc1dpdGhXZWJz
aXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsCiAgICAgICAgICAgICBjYWxsYmFja0Fn
Z3JlZ2F0b3ItPm1fd2Vic2l0ZURhdGEuZW50cmllcy5hcHBlbmRWZWN0b3IoZW50cmllcyk7CiAg
ICAgICAgIH0pOwogICAgIH0KLSAgICAKLSAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlu
cyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykgJiYgc2Vzc2lvbiAmJiBzZXNz
aW9uLT5oYXNJREJEYXRhYmFzZVBhdGgoKSkgewotICAgICAgICBzZXNzaW9uLT5lbnN1cmVXZWJJ
REJTZXJ2ZXIoKS5nZXRPcmlnaW5zKFtjYWxsYmFja0FnZ3JlZ2F0b3JdKGF1dG8mJiBvcmlnaW5z
KSB7Ci0gICAgICAgICAgICB3aGlsZSAoIW9yaWdpbnMuaXNFbXB0eSgpKQotICAgICAgICAgICAg
ICAgIGNhbGxiYWNrQWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVuZCh7IG9y
aWdpbnMudGFrZUFueSgpLCBXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcywgMCB9
KTsKLSAgICAgICAgfSk7Ci0gICAgfQotICAgIAorCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6U2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbnMpICYmIHNlc3Npb24gJiYgc2Vzc2lvbi0+aGFzU2Vydmlj
ZVdvcmtlckRhdGFiYXNlUGF0aCgpKSB7CiAgICAgICAgIHNlc3Npb24tPmVuc3VyZVNXU2VydmVy
KCkuZ2V0T3JpZ2luc1dpdGhSZWdpc3RyYXRpb25zKFtjYWxsYmFja0FnZ3JlZ2F0b3JdKGNvbnN0
IEhhc2hTZXQ8U2VjdXJpdHlPcmlnaW5EYXRhPiYgc2VjdXJpdHlPcmlnaW5zKSBtdXRhYmxlIHsK
QEAgLTIxMjksNDMgKzIwOTQsMTAgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJvY2Vzc1dpbGxT
dXNwZW5kSW1taW5lbnRseUZvclRlc3RpbmdTeW5jKENvbXBsZXRpb25IYW5kbGUKICAgICBwcmVw
YXJlVG9TdXNwZW5kKHRydWUsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6c3VzcGVuZElEQlNlcnZlcnMoYm9vbCBpc1N1c3BlbnNpb25JbW1p
bmVudCkKLXsKLSAgICBtX3Nob3VsZFN1c3BlbmRJREJTZXJ2ZXJzID0gdHJ1ZTsKLSAgICArK21f
c3VzcGVuc2lvbklkZW50aWZpZXI7Ci0KLSAgICBib29sIGFsbFN1c3BlbmRlZCA9IHRydWU7Ci0g
ICAgYXV0byBjb25kaXRpb24gPSBpc1N1c3BlbnNpb25JbW1pbmVudCA/IFdlYklEQlNlcnZlcjo6
U3VzcGVuc2lvbkNvbmRpdGlvbjo6QWx3YXlzIDogV2ViSURCU2VydmVyOjpTdXNwZW5zaW9uQ29u
ZGl0aW9uOjpJZklkbGU7Ci0gICAgZm9yRWFjaE5ldHdvcmtTZXNzaW9uKFsmXShhdXRvJiBzZXNz
aW9uKSB7Ci0gICAgICAgIGlmIChhdXRvKiBzZXJ2ZXIgPSBzZXNzaW9uLndlYklEQlNlcnZlcigp
KQotICAgICAgICAgICAgYWxsU3VzcGVuZGVkICY9IHNlcnZlci0+c3VzcGVuZChjb25kaXRpb24p
OwotICAgIH0pOwotCi0gICAgaWYgKGFsbFN1c3BlbmRlZCkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoQWZ0ZXIoNV9zLCBbdGhpcywgd2Vha1RoaXMgPSBX
ZWFrUHRyIHsgKnRoaXMgfSwgc3VzcGVuc2lvbklkZW50aWZpZXIgPSBtX3N1c3BlbnNpb25JZGVu
dGlmaWVyXSB7Ci0gICAgICAgIGlmICghd2Vha1RoaXMpCi0gICAgICAgICAgICByZXR1cm47Ci0K
LSAgICAgICAgaWYgKCFtX3Nob3VsZFN1c3BlbmRJREJTZXJ2ZXJzIHx8IHN1c3BlbnNpb25JZGVu
dGlmaWVyICE9IG1fc3VzcGVuc2lvbklkZW50aWZpZXIpCi0gICAgICAgICAgICByZXR1cm47Ci0K
LSAgICAgICAgZm9yRWFjaE5ldHdvcmtTZXNzaW9uKFtdKGF1dG8mIHNlc3Npb24pIHsKLSAgICAg
ICAgICAgIGlmIChhdXRvKiBzZXJ2ZXIgPSBzZXNzaW9uLndlYklEQlNlcnZlcigpKQotICAgICAg
ICAgICAgICAgIHNlcnZlci0+c3VzcGVuZChXZWJJREJTZXJ2ZXI6OlN1c3BlbnNpb25Db25kaXRp
b246OkFsd2F5cyk7Ci0gICAgICAgIH0pOwotICAgIH0pOwotfQotCiB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpwcmVwYXJlVG9TdXNwZW5kKGJvb2wgaXNTdXNwZW5zaW9uSW1taW5lbnQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBSRUxFQVNFX0xP
RyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gTmV0d29ya1Byb2Nlc3M6OnByZXBhcmVUb1N1c3Bl
bmQoKSwgaXNTdXNwZW5zaW9uSW1taW5lbnQ9JWQiLCB0aGlzLCBpc1N1c3BlbnNpb25JbW1pbmVu
dCk7CiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIHN1c3BlbmRJREJTZXJ2ZXJzKGlz
U3VzcGVuc2lvbkltbWluZW50KTsKLSNlbmRpZgotCiAgICAgbG93TWVtb3J5SGFuZGxlcihDcml0
aWNhbDo6WWVzKTsKIAogICAgIFJlZlB0cjxDYWxsYmFja0FnZ3JlZ2F0b3I+IGNhbGxiYWNrQWdn
cmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFt0aGlzLCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewpAQCAtMjIyNSwx
NiArMjE1NywxMCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZXN1bWUoKQogICAgICAgICAgICAg
c3dTZXJ2ZXItPmVuZFN1c3BlbnNpb24oKTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCi0gICAgICAgIGlmIChhdXRvKiBzZXJ2ZXIgPSBzZXNzaW9uLndlYklEQlNlcnZlcigpKQot
ICAgICAgICAgICAgc2VydmVyLT5yZXN1bWUoKTsKLSNlbmRpZgogICAgICAgICBpZiAoYXV0byog
bWFuYWdlciA9IHNlc3Npb24uc3RvcmFnZU1hbmFnZXIoKSkKICAgICAgICAgICAgIG1hbmFnZXIt
PnJlc3VtZSgpOwotICAgIH0pOwotCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBtX3No
b3VsZFN1c3BlbmRJREJTZXJ2ZXJzID0gZmFsc2U7CiAjZW5kaWYKKyAgICB9KTsKIH0KIAogdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6cHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKQEAg
LTIyODEsMTIgKzIyMDcsMTIgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c3luY0xvY2FsU3RvcmFn
ZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmQKIAogdm9pZCBOZXR3
b3JrUHJvY2Vzczo6cmVzZXRRdW90YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBMb2NrZXIgbG9j
a2VyIHsgbV9zZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlcnNMb2NrIH07Ci0gICAgaWYgKGF1dG8q
IHNlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2VyID0gbV9zZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdl
cnMuZ2V0KHNlc3Npb25JRCkpIHsKLSAgICAgICAgZm9yIChhdXRvIHN0b3JhZ2VRdW90YU1hbmFn
ZXIgOiBzZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlci0+ZXhpc3RpbmdTdG9yYWdlUXVvdGFNYW5h
Z2VycygpKQotICAgICAgICAgICAgc3RvcmFnZVF1b3RhTWFuYWdlci0+cmVzZXRRdW90YUZvclRl
c3RpbmcoKTsKLSAgICB9Ci0gICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICBhdXRvKiBzZXNz
aW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKKyAgICBpZiAoIXNlc3Npb24pCisgICAg
ICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcigpOworCisgICAgaWYgKGF1dG8qIHN0b3JhZ2VN
YW5hZ2VyID0gc2Vzc2lvbi0+c3RvcmFnZU1hbmFnZXIoKSkKKyAgICAgICAgc3RvcmFnZU1hbmFn
ZXItPnJlc2V0UXVvdGFGb3JUZXN0aW5nKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0K
IAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2xlYXJTdG9yYWdlKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAt
MjI5OCw2ICsyMjI0LDE2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNsZWFyU3RvcmFnZShQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvCiAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKCk7CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmRpZEluY3JlYXNlUXVv
dGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbiwg
UXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8
dWludDY0X3Q+IG5ld1F1b3RhKQoreworICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lv
bihzZXNzaW9uSUQpOworICAgIGlmICghc2Vzc2lvbikKKyAgICAgICAgcmV0dXJuOworCisgICAg
aWYgKGF1dG8qIG1hbmFnZXIgPSBzZXNzaW9uLT5zdG9yYWdlTWFuYWdlcigpKQorICAgICAgICBt
YW5hZ2VyLT5kaWRJbmNyZWFzZVF1b3RhKG9yaWdpbiwgaWRlbnRpZmllciwgbmV3UXVvdGEpOwor
fQorCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZW5hbWVPcmlnaW5JbldlYnNpdGVEYXRhKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiBvbGROYW1lLCBjb25zdCBVUkwmIG5ld05h
bWUsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8gYWdncmVnYXRvciA9
IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
QEAgLTIzMTAsOSArMjI0Niw2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlbmFtZU9yaWdpbklu
V2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVCiAgICAgYXV0byog
c2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7CiAgICAgaWYgKGF1dG8qIG1hbmFn
ZXIgPSBzZXNzaW9uID8gc2Vzc2lvbi0+c3RvcmFnZU1hbmFnZXIoKSA6IG51bGxwdHIpCiAgICAg
ICAgIG1hbmFnZXItPm1vdmVEYXRhKG9sZE9yaWdpbiwgbmV3T3JpZ2luLCBbYWdncmVnYXRvcl0g
eyB9KTsKLQotICAgIGlmIChkYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRl
eGVkREJEYXRhYmFzZXMpICYmIHNlc3Npb24gJiYgc2Vzc2lvbi0+aGFzSURCRGF0YWJhc2VQYXRo
KCkpCi0gICAgICAgIHNlc3Npb24tPmVuc3VyZVdlYklEQlNlcnZlcigpLnJlbmFtZU9yaWdpbihv
bGRPcmlnaW4sIG5ld09yaWdpbiwgW2FnZ3JlZ2F0b3JdIHsgfSk7CiB9CiAKICNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCkBAIC0yMzcyLDcgKzIzMDUsOCBAQCBSZWZQdHI8U3RvcmFnZVF1b3Rh
TWFuYWdlcj4gTmV0d29ya1Byb2Nlc3M6OnN0b3JhZ2VRdW90YU1hbmFnZXIoUEFMOjpTZXNzaW9u
SUQgcwogICAgIFN0b3JhZ2VRdW90YU1hbmFnZXI6OlVzYWdlR2V0dGVyIHVzYWdlR2V0dGVyID0g
W2NhY2hlUm9vdFBhdGggPSBzZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlci0+Y2FjaGVSb290UGF0
aCgpLmlzb2xhdGVkQ29weSgpLCBpZGJSb290UGF0aCA9IGlkYlJvb3RQYXRoLmlzb2xhdGVkQ29w
eSgpLCBvcmlnaW4gPSBvcmlnaW4uaXNvbGF0ZWRDb3B5KCldKCkgewogICAgICAgICBBU1NFUlQo
IWlzTWFpblJ1bkxvb3AoKSk7CiAKLSAgICAgICAgcmV0dXJuIENhY2hlU3RvcmFnZTo6RW5naW5l
OjpkaXNrVXNhZ2UoY2FjaGVSb290UGF0aCwgb3JpZ2luKSArIElEQlNlcnZlcjo6SURCU2VydmVy
OjpkaXNrVXNhZ2UoaWRiUm9vdFBhdGgsIG9yaWdpbik7CisgICAgICAgIGF1dG8gY2FjaGVTdG9y
YWdlUGF0aCA9IENhY2hlU3RvcmFnZTo6RW5naW5lOjpzdG9yYWdlUGF0aChjYWNoZVJvb3RQYXRo
LCBvcmlnaW4pOworICAgICAgICByZXR1cm4gQ2FjaGVTdG9yYWdlOjpFbmdpbmU6OmRpc2tVc2Fn
ZShjYWNoZVN0b3JhZ2VQYXRoKSArIElEQlNlcnZlcjo6SURCU2VydmVyOjpkaXNrVXNhZ2UoaWRi
Um9vdFBhdGgsIG9yaWdpbik7CiAgICAgfTsKICAgICBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpRdW90
YUluY3JlYXNlUmVxdWVzdGVyIHF1b3RhSW5jcmVhc2VSZXF1ZXN0ZXIgPSBbdGhpcywgd2Vha1Ro
aXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgc2Vzc2lvbklELCBvcmlnaW5dICh1aW50NjRfdCBjdXJy
ZW50UXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRTcGFjZSwgdWludDY0X3QgcmVxdWVzdGVkSW5jcmVh
c2UsIGF1dG8mJiBjYWxsYmFjaykgewogICAgICAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgpKTsK
QEAgLTI1ODYsOCArMjUyMCw2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlbW92ZUtlcHRBbGl2
ZUxvYWQoTmV0d29ya1Jlc291cmNlTG9hZGVyJiBsb2FkZXIpCiB2b2lkIE5ldHdvcmtQcm9jZXNz
Ojpjb25uZWN0aW9uVG9XZWJQcm9jZXNzQ2xvc2VkKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAgIGlmIChhdXRvKiBzZXNzaW9uID0g
bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byogc2VydmVyID0g
c2Vzc2lvbi0+d2ViSURCU2VydmVyKCkpCi0gICAgICAgICAgICBzZXJ2ZXItPnJlbW92ZUNvbm5l
Y3Rpb24oY29ubmVjdGlvbik7CiAgICAgICAgIGlmIChhdXRvKiBtYW5hZ2VyID0gc2Vzc2lvbi0+
c3RvcmFnZU1hbmFnZXIoKSkKICAgICAgICAgICAgIG1hbmFnZXItPnN0b3BSZWNlaXZpbmdNZXNz
YWdlRnJvbUNvbm5lY3Rpb24oY29ubmVjdGlvbik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IDc4Nzc5MjdhMTdjNTU5NmViMDNi
ZDRhY2Y0ZDU4ZTQxOGFjOGJhMjMuLjBmODUzM2VkMTNkZDI2Mjc3YTZkZDUyYWI2ZGFiZTIwYzNl
MDg4MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNr
ZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlci5oIgogI2luY2x1
ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiUXVvdGFJbmNy
ZWFzZVJlcXVlc3RJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWxSZW1vdGVN
YW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAi
V2ViUGFnZVByb3h5SWRlbnRpZmllci5oIgpAQCAtMjg4LDEyICsyODksMTEgQEAgcHVibGljOgog
ICAgIE5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyJiBuZXR3b3JrQ29udGVudFJ1bGVMaXN0
TWFuYWdlcigpIHsgcmV0dXJuIG1fbmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXI7IH0KICNl
bmRpZgogCi0gICAgYm9vbCBzaG91bGRTdXNwZW5kSURCU2VydmVycygpIGNvbnN0IHsgcmV0dXJu
IG1fc2hvdWxkU3VzcGVuZElEQlNlcnZlcnM7IH0KLQogICAgIHZvaWQgc3luY0xvY2FsU3RvcmFn
ZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAgICAgdm9pZCByZXNldFF1b3RhKFBB
TDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgY2xl
YXJTdG9yYWdlKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwor
ICAgIHZvaWQgZGlkSW5jcmVhc2VRdW90YShQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6
Q2xpZW50T3JpZ2luJiwgUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLCBzdGQ6Om9wdGlv
bmFsPHVpbnQ2NF90PiBuZXdRdW90YSk7CiAgICAgdm9pZCByZW5hbWVPcmlnaW5JbldlYnNpdGVE
YXRhKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBjb25zdCBVUkwmLCBPcHRpb25TZXQ8V2Vi
c2l0ZURhdGFUeXBlPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCkBAIC00NzMsOCArNDczLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJl
Z2lzdGVyVVJMU2NoZW1lQXNOb0FjY2Vzcyhjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICB2b2lk
IHJlZ2lzdGVyVVJMU2NoZW1lQXNDT1JTRW5hYmxlZChjb25zdCBTdHJpbmcmKSBjb25zdDsKIAot
ICAgIHZvaWQgc3VzcGVuZElEQlNlcnZlcnMoYm9vbCBpc1N1c3BlbnNpb25JbW1pbmVudCk7Ci0K
ICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHZvaWQgc2V0SXNIb2xkaW5nTG9ja2VkRmls
ZXMoYm9vbCk7CiAjZW5kaWYKQEAgLTQ4Miw2ICs0ODAsNyBAQCBwcml2YXRlOgogICAgIGNsYXNz
IFNlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2VyIHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiAgICAgcHVibGljOgorICAgICAgICBTZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlcigp
ID0gZGVsZXRlOwogICAgICAgICBTZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlcihjb25zdCBTdHJp
bmcmIGNhY2hlUm9vdFBhdGgsIHVpbnQ2NF90IGRlZmF1bHRRdW90YSwgdWludDY0X3QgZGVmYXVs
dFRoaXJkUGFydHlRdW90YSkKICAgICAgICAgICAgIDogbV9jYWNoZVJvb3RQYXRoKGNhY2hlUm9v
dFBhdGgpCiAgICAgICAgICAgICAsIG1fZGVmYXVsdFF1b3RhKGRlZmF1bHRRdW90YSkKQEAgLTUw
OCw4ICs1MDcsOCBAQCBwcml2YXRlOgogICAgIHByaXZhdGU6CiAgICAgICAgIFN0cmluZyBtX2Nh
Y2hlUm9vdFBhdGg7CiAgICAgICAgIFN0cmluZyBtX2lkYlJvb3RQYXRoOwotICAgICAgICB1aW50
NjRfdCBtX2RlZmF1bHRRdW90YSB7IFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6OmRlZmF1
bHRRdW90YSgpIH07Ci0gICAgICAgIHVpbnQ2NF90IG1fZGVmYXVsdFRoaXJkUGFydHlRdW90YSB7
IFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6OmRlZmF1bHRUaGlyZFBhcnR5UXVvdGEoKSB9
OworICAgICAgICB1aW50NjRfdCBtX2RlZmF1bHRRdW90YTsKKyAgICAgICAgdWludDY0X3QgbV9k
ZWZhdWx0VGhpcmRQYXJ0eVF1b3RhOwogICAgICAgICBIYXNoTWFwPFdlYkNvcmU6OkNsaWVudE9y
aWdpbiwgUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI+PiBtX3N0b3JhZ2VRdW90
YU1hbmFnZXJzOwogICAgIH07CiAgICAgdm9pZCBhZGRTZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdl
cihQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgZGVmYXVsdFF1b3RhLCB1aW50NjRfdCBkZWZhdWx0
VGhpcmRQYXJ0eVF1b3RhLCBjb25zdCBTdHJpbmcmIGNhY2hlUm9vdFBhdGgsIFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZSYpOwpAQCAtNTQ5LDkgKzU0OCw2IEBAIHByaXZhdGU6CiAgICAgV2ViU1FM
aXRlRGF0YWJhc2VUcmFja2VyIG1fd2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyOwogICAgIFJlZlB0
cjxQcm9jZXNzQXNzZXJ0aW9uPiBtX2hvbGRpbmdMb2NrZWRGaWxlQXNzZXJ0aW9uOwogI2VuZGlm
Ci0KLSAgICBib29sIG1fc2hvdWxkU3VzcGVuZElEQlNlcnZlcnMgeyBmYWxzZSB9OwotICAgIHVp
bnQ2NF90IG1fc3VzcGVuc2lvbklkZW50aWZpZXIgeyAwIH07CiAgICAgCiAjaWYgRU5BQkxFKFdF
Ql9SVEMpCiAgICAgUmVmUHRyPFJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlclByb3h5PiBtX3J0
Y0RhdGFDaGFubmVsUHJveHk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA2MzdlMTU5ZjE4NjM5M2JlYzVj
YzA1YWI1YmQ1NzgwYmU4YzZmY2U0Li42MzFlMmI2MDczYzAxOTIxMzA2OGMyMDk2YjgyN2IyNzlk
YmM3ZGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTE3OSw2ICsxNzksNyBAQCBtZXNzYWdlcyAtPiBO
ZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAKICAgICBSZXNldFF1b3RhKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCkgLT4gKCkgQXN5bmMKICAgICBDbGVhclN0b3JhZ2UoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYworICAgIERpZEluY3JlYXNlUXVvdGEoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBzdHJ1Y3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbiwg
V2ViS2l0OjpRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIgaWRlbnRpZmllciwgc3RkOjpv
cHRpb25hbDx1aW50NjRfdD4gbmV3UXVvdGEpCiAgICAgCiAjaWYgRU5BQkxFKEFQUF9CT1VORF9E
T01BSU5TKQogICAgIEhhc0FwcEJvdW5kU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQp
IC0+IChib29sIGhhc0FwcEJvdW5kU2Vzc2lvbikgQXN5bmMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKaW5kZXggMzNiZjRhNDQ2NGZlNjIwMTg4
NWNlMGExYjg1ZWZmNGQ4MjYwOWI0OS4uNmYwNGNhMDQ1NjJhZDUxMThjODhjODIyMGQxMmE0OTcy
MjM2ODI5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vz
c2lvbi5jcHAKQEAgLTIwNCw4ICsyMDQsNiBAQCB2b2lkIE5ldHdvcmtTZXNzaW9uOjppbnZhbGlk
YXRlQW5kQ2FuY2VsKCkKICAgICBpZiAobV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKQogICAgICAg
ICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MtPmludmFsaWRhdGVBbmRDYW5jZWwoKTsKICNlbmRp
ZgotICAgIGlmIChhdXRvIHNlcnZlciA9IHN0ZDo6ZXhjaGFuZ2UobV93ZWJJREJTZXJ2ZXIsIG51
bGxwdHIpKQotICAgICAgICBzZXJ2ZXItPmNsb3NlKCk7CiAgICAgaWYgKGF1dG8gbWFuYWdlciA9
IHN0ZDo6ZXhjaGFuZ2UobV9zdG9yYWdlTWFuYWdlciwgbnVsbHB0cikpCiAgICAgICAgIG1hbmFn
ZXItPmNsb3NlKCk7CiAgICAgbV9jYWNoZUVuZ2luZSA9IG51bGxwdHI7CkBAIC02NTMsNTUgKzY1
MSwxOCBAQCBib29sIE5ldHdvcmtTZXNzaW9uOjpoYXNTZXJ2aWNlV29ya2VyRGF0YWJhc2VQYXRo
KCkgY29uc3QKIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAotV2ViSURCU2Vy
dmVyJiBOZXR3b3JrU2Vzc2lvbjo6ZW5zdXJlV2ViSURCU2VydmVyKCkKLXsKLSAgICBpZiAoIW1f
d2ViSURCU2VydmVyKSB7Ci0gICAgICAgIFN0cmluZyBwYXRoOwotICAgICAgICBpZiAoIXNlc3Np
b25JRCgpLmlzRXBoZW1lcmFsKCkpIHsKLSAgICAgICAgICAgIEFTU0VSVCghbV9pZGJEYXRhYmFz
ZVBhdGguaXNOdWxsKCkpOwotICAgICAgICAgICAgcGF0aCA9IG1faWRiRGF0YWJhc2VQYXRoOwot
ICAgICAgICB9Ci0KLSAgICAgICAgYXV0byBzcGFjZVJlcXVlc3RlciA9IFtuZXR3b3JrUHJvY2Vz
cyA9IFJlZiB7IG5ldHdvcmtQcm9jZXNzKCkgfSwgc2Vzc2lvbklEID0gc2Vzc2lvbklEKCldKGNv
bnN0IGF1dG8mIG9yaWdpbiwgdWludDY0X3Qgc3BhY2VSZXF1ZXN0ZWQpIHsKLSAgICAgICAgICAg
IHJldHVybiBuZXR3b3JrUHJvY2Vzcy0+c3RvcmFnZVF1b3RhTWFuYWdlcihzZXNzaW9uSUQsIG9y
aWdpbiktPnJlcXVlc3RTcGFjZU9uQmFja2dyb3VuZFRocmVhZChzcGFjZVJlcXVlc3RlZCk7Ci0g
ICAgICAgIH07Ci0KLSAgICAgICAgbV93ZWJJREJTZXJ2ZXIgPSBXZWJJREJTZXJ2ZXI6OmNyZWF0
ZShzZXNzaW9uSUQoKSwgcGF0aCwgV1RGTW92ZShzcGFjZVJlcXVlc3RlcikpOwotICAgICAgICBp
ZiAobmV0d29ya1Byb2Nlc3MoKS5zaG91bGRTdXNwZW5kSURCU2VydmVycygpKQotICAgICAgICAg
ICAgbV93ZWJJREJTZXJ2ZXItPnN1c3BlbmQoV2ViSURCU2VydmVyOjpTdXNwZW5zaW9uQ29uZGl0
aW9uOjpBbHdheXMpOwotICAgIH0KLSAgICByZXR1cm4gKm1fd2ViSURCU2VydmVyOwotfQotCi12
b2lkIE5ldHdvcmtTZXNzaW9uOjpjbG9zZUlEQlNlcnZlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgaWYgKCFtX3dlYklEQlNlcnZlcikKLSAg
ICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKCk7Ci0KLSAgICBzdGQ6OmV4Y2hhbmdlKG1f
d2ViSURCU2VydmVyLCBudWxscHRyKS0+Y2xvc2UoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwotfQotCi12b2lkIE5ldHdvcmtTZXNzaW9uOjphZGRJbmRleGVkRGF0YWJhc2VTZXNzaW9uKGNv
bnN0IFN0cmluZyYgaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGUmIGhhbmRsZSkKLXsKLSAgICAvLyAqKioqKioqKioKLSAgICAvLyBJTVBPUlRBTlQ6IERv
IG5vdCBjaGFuZ2UgdGhlIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgZm9yIGluZGV4ZWQgZGF0YWJhc2Vz
IG9uIGRpc2sgd2l0aG91dCBmaXJzdCBjb25zdWx0aW5nIGEgcmV2aWV3ZXIgZnJvbSBBcHBsZSAo
PHJkYXI6Ly9wcm9ibGVtLzE3NDU0NzEyPikKLSAgICAvLyAqKioqKioqKioKLSAgICBhdXRvIGlz
TmV3ID0gbV9pZGJEYXRhYmFzZVBhdGguaXNOdWxsKCk7Ci0gICAgbV9pZGJEYXRhYmFzZVBhdGgg
PSBpbmRleGVkRGF0YWJhc2VEaXJlY3Rvcnk7Ci0gICAgaWYgKGlzTmV3KSB7Ci0gICAgICAgIFNh
bmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShoYW5kbGUpOwotICAgICAgICBuZXR3
b3JrUHJvY2VzcygpLnNldFNlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2VySURCUm9vdFBhdGgoc2Vz
c2lvbklEKCksIGluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSk7Ci0gICAgfQotfQotCi12b2lkIE5l
dHdvcmtTZXNzaW9uOjphZGRTdG9yYWdlTWFuYWdlclNlc3Npb24oY29uc3QgU3RyaW5nJiBnZW5l
cmFsU3RvcmFnZVBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgZ2VuZXJhbFN0b3JhZ2VQ
YXRoSGFuZGxlLCBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZVBhdGgsIFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZSYgbG9jYWxTdG9yYWdlUGF0aEhhbmRsZSkKK3ZvaWQgTmV0d29ya1Nlc3Npb246
OmFkZFN0b3JhZ2VNYW5hZ2VyU2Vzc2lvbihjb25zdCBTdHJpbmcmIGdlbmVyYWxTdG9yYWdlUGF0
aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBnZW5lcmFsU3RvcmFnZVBhdGhIYW5kbGUsIGNv
bnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBs
b2NhbFN0b3JhZ2VQYXRoSGFuZGxlLCBjb25zdCBTdHJpbmcmIGlkYlN0b3JhZ2VQYXRoLCBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUmIGlkYlN0b3JhZ2VQYXRoSGFuZGxlLCBjb25zdCBTdHJpbmcm
IGNhY2hlU3RvcmFnZVBhdGgsIHVpbnQ2NF90IGRlZmF1bHRPcmlnaW5RdW90YSwgdWludDY0X3Qg
ZGVmYXVsdFRoaXJkUGFydHlRdW90YSkKIHsKICAgICBpZiAobV9zdG9yYWdlTWFuYWdlcikKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5
KGdlbmVyYWxTdG9yYWdlUGF0aEhhbmRsZSk7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3Vt
ZVBlcm1hbmVudGx5KGxvY2FsU3RvcmFnZVBhdGhIYW5kbGUpOwotICAgIG1fc3RvcmFnZU1hbmFn
ZXIgPSBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZShzZXNzaW9uSUQoKSwgZ2VuZXJhbFN0
b3JhZ2VQYXRoLCBsb2NhbFN0b3JhZ2VQYXRoKTsKKyAgICBTYW5kYm94RXh0ZW5zaW9uOjpjb25z
dW1lUGVybWFuZW50bHkoaWRiU3RvcmFnZVBhdGhIYW5kbGUpOworICAgIElQQzo6Q29ubmVjdGlv
bjo6VW5pcXVlSUQgY29ubmVjdGlvbklEOworICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gbmV0
d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpKQorICAgICAgICBjb25uZWN0
aW9uSUQgPSBjb25uZWN0aW9uLT51bmlxdWVJRCgpOworICAgIG1fc3RvcmFnZU1hbmFnZXIgPSBO
ZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZShzZXNzaW9uSUQoKSwgY29ubmVjdGlvbklELCBn
ZW5lcmFsU3RvcmFnZVBhdGgsIGxvY2FsU3RvcmFnZVBhdGgsIGlkYlN0b3JhZ2VQYXRoLCBjYWNo
ZVN0b3JhZ2VQYXRoLCBkZWZhdWx0T3JpZ2luUXVvdGEsIGRlZmF1bHRUaGlyZFBhcnR5UXVvdGEp
OwogfQogCiB2b2lkIE5ldHdvcmtTZXNzaW9uOjplbnN1cmVDYWNoZUVuZ2luZShGdW5jdGlvbjx2
b2lkKENhY2hlU3RvcmFnZTo6RW5naW5lJik+JiYgY2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKaW5kZXggMTkzMDdjZjQwYmUzYjJmMjYw
NTdkMDE2Yzc2NmVkY2U0OThjOTU0Mi4uYmFhMTIyNDVjZjIyNjRkOTIxNTdkZGU0NzFkMmU0YjEw
MmJjMjk3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Np
b24uaApAQCAtMjEwLDE0ICsyMTAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRTZXJ2aWNlV29y
a2VyU2Vzc2lvbihib29sIHByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCwgU3RyaW5nJiYg
c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSwgY29uc3QgU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlJik7CiAjZW5kaWYKIAotICAgIFdlYklEQlNlcnZlciogd2ViSURCU2VydmVyKCkg
eyByZXR1cm4gbV93ZWJJREJTZXJ2ZXIuZ2V0KCk7IH0KLSAgICBXZWJJREJTZXJ2ZXImIGVuc3Vy
ZVdlYklEQlNlcnZlcigpOwotICAgIHZvaWQgY2xvc2VJREJTZXJ2ZXIoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIGFkZEluZGV4ZWREYXRhYmFzZVNlc3Npb24oY29uc3Qg
U3RyaW5nJiBpbmRleGVkRGF0YWJhc2VEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZSYpOwotICAgIGJvb2wgaGFzSURCRGF0YWJhc2VQYXRoKCkgY29uc3QgeyByZXR1cm4gIW1faWRi
RGF0YWJhc2VQYXRoLmlzRW1wdHkoKTsgfQotCiAgICAgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyKiBz
dG9yYWdlTWFuYWdlcigpIHsgcmV0dXJuIG1fc3RvcmFnZU1hbmFnZXIuZ2V0KCk7IH0KLSAgICB2
b2lkIGFkZFN0b3JhZ2VNYW5hZ2VyU2Vzc2lvbihjb25zdCBTdHJpbmcmIGdlbmVyYWxTdG9yYWdl
UGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBnZW5lcmFsU3RvcmFnZVBhdGhIYW5kbGUs
IGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
JiBsb2NhbFN0b3JhZ2VQYXRoSGFuZGxlKTsKKyAgICB2b2lkIGFkZFN0b3JhZ2VNYW5hZ2VyU2Vz
c2lvbihjb25zdCBTdHJpbmcmIGdlbmVyYWxTdG9yYWdlUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlJiBnZW5lcmFsU3RvcmFnZVBhdGhIYW5kbGUsIGNvbnN0IFN0cmluZyYgbG9jYWxTdG9y
YWdlUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBsb2NhbFN0b3JhZ2VQYXRoSGFuZGxl
LCBjb25zdCBTdHJpbmcmIGlkYlN0b3JhZ2VQYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUm
IGlkYlN0b3JhZ2VQYXRoSGFuZGxlLCBjb25zdCBTdHJpbmcmIGNhY2hlU3RvcmFnZVBhdGgsIHVp
bnQ2NF90IGRlZmF1bHRPcmlnaW5RdW90YSwgdWludDY0X3QgZGVmYXVsdFRoaXJkUGFydHlRdW90
YSk7CiAKICAgICBDYWNoZVN0b3JhZ2U6OkVuZ2luZSogY2FjaGVFbmdpbmUoKSB7IHJldHVybiBt
X2NhY2hlRW5naW5lLmdldCgpOyB9CiAgICAgdm9pZCBlbnN1cmVDYWNoZUVuZ2luZShGdW5jdGlv
bjx2b2lkKENhY2hlU3RvcmFnZTo6RW5naW5lJik+JiYpOwpAQCAtMzE5LDkgKzMxMyw2IEBAIHBy
b3RlY3RlZDoKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1dTZXJ2ZXI+IG1fc3dTZXJ2
ZXI7CiAjZW5kaWYKIAotICAgIFN0cmluZyBtX2lkYkRhdGFiYXNlUGF0aDsKLSAgICBSZWZQdHI8
V2ViSURCU2VydmVyPiBtX3dlYklEQlNlcnZlcjsKLQogICAgIFJlZlB0cjxOZXR3b3JrU3RvcmFn
ZU1hbmFnZXI+IG1fc3RvcmFnZU1hbmFnZXI7CiAgICAgUmVmUHRyPENhY2hlU3RvcmFnZTo6RW5n
aW5lPiBtX2NhY2hlRW5naW5lOwogICAgIFZlY3RvcjxGdW5jdGlvbjx2b2lkKENhY2hlU3RvcmFn
ZTo6RW5naW5lJik+PiBtX2NhY2hlU3RvcmFnZVBhcmFtZXRlcnNDYWxsYmFja3M7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2lu
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVu
Z2luZS5jcHAKaW5kZXggYzIwMGNlOGI1ZWI0YzNhMDM2NTdlODIyNjg5OTAyYjQ2ZGJmOGFiMC4u
NmMyNzIwODdhOWFlZTQ1NDk2ZDc3MTcwZTg3YTYwZTUzMzE5MDllZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5l
LmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtDYWNoZUlPQ2hhbm5lbC5o
IgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Nlc3Npb24u
aCIKKyNpbmNsdWRlICJOZXR3b3JrU3RvcmFnZU1hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJzaXRl
RGF0YVR5cGUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NhY2hlUXVlcnlPcHRpb25zLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9SZXRyaWV2ZVJlY29yZHNPcHRpb25zLmg+CkBAIC0yMDMsNDAgKzIwNCw0
NiBAQCBzdGF0aWMgdWludDY0X3QgZ2V0RGlyZWN0b3J5U2l6ZShjb25zdCBTdHJpbmcmIGRpcmVj
dG9yeVBhdGgpCiAgICAgcmV0dXJuIGRpcmVjdG9yeVNpemU7CiB9CiAKLXVpbnQ2NF90IEVuZ2lu
ZTo6ZGlza1VzYWdlKGNvbnN0IFN0cmluZyYgcm9vdFBhdGgsIGNvbnN0IFdlYkNvcmU6OkNsaWVu
dE9yaWdpbiYgb3JpZ2luKQorU3RyaW5nIEVuZ2luZTo6c3RvcmFnZVBhdGgoY29uc3QgU3RyaW5n
JiByb290RGlyZWN0b3J5LCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbikKIHsK
ICAgICBBU1NFUlQoIWlzTWFpblJ1bkxvb3AoKSk7CiAKLSAgICBpZiAocm9vdFBhdGguaXNFbXB0
eSgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAocm9vdERpcmVjdG9yeS5pc0VtcHR5KCkp
CisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCi0gICAgU3RyaW5nIHNhbHRQYXRoID0g
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJvb3RQYXRoLCAic2FsdCJfcyk7
CisgICAgU3RyaW5nIHNhbHRQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KHJvb3REaXJlY3RvcnksICJzYWx0Il9zKTsKICAgICBhdXRvIHNhbHQgPSBGaWxlU3lzdGVt
OjpyZWFkT3JNYWtlU2FsdChzYWx0UGF0aCk7CiAgICAgaWYgKCFzYWx0KQotICAgICAgICByZXR1
cm4gMDsKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKICAgICBLZXkga2V5KG9yaWdp
bi50b3BPcmlnaW4udG9TdHJpbmcoKSwgb3JpZ2luLmNsaWVudE9yaWdpbi50b1N0cmluZygpLCB7
IH0sIHsgfSwgKnNhbHQpOwotICAgIFN0cmluZyBkaXJlY3RvcnlQYXRoID0gRmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJvb3RQYXRoLCBrZXkuaGFzaEFzU3RyaW5nKCkpOwor
ICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocm9vdERpcmVj
dG9yeSwga2V5Lmhhc2hBc1N0cmluZygpKTsKK30KKwordWludDY0X3QgRW5naW5lOjpkaXNrVXNh
Z2UoY29uc3QgU3RyaW5nJiBvcmlnaW5EaXJlY3RvcnkpCit7CisgICAgQVNTRVJUKCFpc01haW5S
dW5Mb29wKCkpOwogCi0gICAgU3RyaW5nIHNpemVGaWxlUGF0aCA9IENhY2hlczo6Y2FjaGVzU2l6
ZUZpbGVuYW1lKGRpcmVjdG9yeVBhdGgpOworICAgIFN0cmluZyBzaXplRmlsZVBhdGggPSBDYWNo
ZXM6OmNhY2hlc1NpemVGaWxlbmFtZShvcmlnaW5EaXJlY3RvcnkpOwogICAgIGlmIChhdXRvIHJl
Y29yZGVkU2l6ZSA9IHJlYWRTaXplRmlsZShzaXplRmlsZVBhdGgpKQogICAgICAgICByZXR1cm4g
KnJlY29yZGVkU2l6ZTsKIAotICAgIHJldHVybiBnZXREaXJlY3RvcnlTaXplKGRpcmVjdG9yeVBh
dGgpOworICAgIHJldHVybiBnZXREaXJlY3RvcnlTaXplKG9yaWdpbkRpcmVjdG9yeSk7CiB9CiAK
LXZvaWQgRW5naW5lOjpyZXF1ZXN0U3BhY2UoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBv
cmlnaW4sIHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdl
YkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uKT4mJiBjYWxsYmFjaykKK3ZvaWQg
RW5naW5lOjpyZXF1ZXN0U3BhY2UoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4s
IHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
IGNhbGxiYWNrKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICBpZiAoIW1f
bmV0d29ya1Byb2Nlc3MpCi0gICAgICAgIGNhbGxiYWNrKFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1h
bmFnZXI6OkRlY2lzaW9uOjpEZW55KTsKKyAgICAgICAgY2FsbGJhY2soZmFsc2UpOwogCi0gICAg
UmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI+IHN0b3JhZ2VRdW90YU1hbmFnZXIg
PSBtX25ldHdvcmtQcm9jZXNzLT5zdG9yYWdlUXVvdGFNYW5hZ2VyKG1fc2Vzc2lvbklELCBvcmln
aW4pOwotICAgIGlmICghc3RvcmFnZVF1b3RhTWFuYWdlcikKLSAgICAgICAgY2FsbGJhY2soV2Vi
Q29yZTo6U3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb246OkRlbnkpOworICAgIGF1dG8qIHNl
c3Npb24gPSBtX25ldHdvcmtQcm9jZXNzLT5uZXR3b3JrU2Vzc2lvbihtX3Nlc3Npb25JRCk7Cisg
ICAgaWYgKCFzZXNzaW9uKQorICAgICAgICBjYWxsYmFjayhmYWxzZSk7CiAKLSAgICBzdG9yYWdl
UXVvdGFNYW5hZ2VyLT5yZXF1ZXN0U3BhY2VPbk1haW5UaHJlYWQoc3BhY2VSZXF1ZXN0ZWQsIFdU
Rk1vdmUoY2FsbGJhY2spKTsKKyAgICBpZiAoYXV0byogc3RvcmFnZU1hbmFnZXIgPSBzZXNzaW9u
LT5zdG9yYWdlTWFuYWdlcigpKQorICAgICAgICBzdG9yYWdlTWFuYWdlci0+cmVxdWVzdFNwYWNl
KG9yaWdpbiwgc3BhY2VSZXF1ZXN0ZWQsIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAogRW5naW5l
OjpFbmdpbmUoTmV0d29ya1Nlc3Npb24mIG5ldHdvcmtTZXNzaW9uLCBTdHJpbmcmJiByb290UGF0
aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVT
dG9yYWdlRW5naW5lLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hl
U3RvcmFnZUVuZ2luZS5oCmluZGV4IDE0N2ZiYWNlMTY3N2E2MDg1OTE4YWI3NzJhOWUxMGEyMDZj
Njg4MWUuLmZlM2MxZjkzMGRhZTM5OThjZDFjMDRjMzRkYmRkYzUzNTU1YTQ3MDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5l
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VF
bmdpbmUuaApAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgIk5ldHdvcmtDYWNoZURhdGEuaCIK
ICNpbmNsdWRlICJXZWJzaXRlRGF0YS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ2xpZW50T3JpZ2lu
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9TdG9yYWdlUXVvdGFNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8
cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KQEAgLTg0LDggKzgzLDkgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZv
aWQgaW5pdGlhbGl6ZVF1b3RhVXNlcihOZXR3b3JrU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OkNs
aWVudE9yaWdpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKLSAgICBzdGF0aWMg
dWludDY0X3QgZGlza1VzYWdlKGNvbnN0IFN0cmluZyYgcm9vdFBhdGgsIGNvbnN0IFdlYkNvcmU6
OkNsaWVudE9yaWdpbiYpOwotICAgIHZvaWQgcmVxdWVzdFNwYWNlKGNvbnN0IFdlYkNvcmU6OkNs
aWVudE9yaWdpbiYsIHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uKT4mJik7CisgICAgc3Rh
dGljIFN0cmluZyBzdG9yYWdlUGF0aChjb25zdCBTdHJpbmcmIHJvb3REaXJlY3RvcnksIGNvbnN0
IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYpOworICAgIHN0YXRpYyB1aW50NjRfdCBkaXNrVXNhZ2Uo
Y29uc3QgU3RyaW5nJiBvcmlnaW5EaXJlY3RvcnkpOworICAgIHZvaWQgcmVxdWVzdFNwYWNlKGNv
bnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKIAogICAgIGJvb2wgc2hvdWxkUGVyc2lzdCgp
IGNvbnN0IHsgcmV0dXJuICEhbV9pb1F1ZXVlO30KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMu
Y3BwCmluZGV4IGU1ZWMwNGUyOTM4MWU3NDFmNDRkOWM5NDcwYmZmMmJmMmI4NWJiYWMuLjljMjAw
MjgwZDI1NzI2NmM2ODViYzQ3M2IzM2YxZDAyYzI0ZmE5NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2lu
ZUNhY2hlcy5jcHAKQEAgLTUyNCwxNCArNTI0LDEwIEBAIHZvaWQgQ2FjaGVzOjpyZXF1ZXN0U3Bh
Y2UodWludDY0X3Qgc3BhY2VSZXF1aXJlZCwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNvbXBs
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2VuZ2luZS0+cmVxdWVzdFNwYWNlKG1f
b3JpZ2luLCBzcGFjZVJlcXVpcmVkLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0
byBkZWNpc2lvbikgbXV0YWJsZSB7Ci0gICAgICAgIHN3aXRjaCAoZGVjaXNpb24pIHsKLSAgICAg
ICAgY2FzZSBXZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbjo6RGVueToKLSAg
ICAgICAgICAgIGNhbGxiYWNrKEVycm9yOjpRdW90YUV4Y2VlZGVkKTsKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lv
bjo6R3JhbnQ6Ci0gICAgICAgICAgICBjYWxsYmFjayh7IH0pOwotICAgICAgICB9OworICAgIG1f
ZW5naW5lLT5yZXF1ZXN0U3BhY2UobV9vcmlnaW4sIHNwYWNlUmVxdWlyZWQsIFtjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spXShib29sIGdyYW50ZWQpIG11dGFibGUgeworICAgICAgICBpZiAo
IWdyYW50ZWQpCisgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soRXJyb3I6OlF1b3RhRXhjZWVk
ZWQpOworICAgICAgICBjYWxsYmFjayh7IH0pOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lPUy5tbSBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNzSU9TLm1tCmluZGV4
IGE4N2FkODA1YjVkZjE1MDc4M2I1MzkxZThlMDNmOThlNzY0ZGYzZDUuLjRmMWIzOTk5NGZkMmY3
ZjIwMDcyN2EwZGVlNWQzZjAzMjI4ZTNmZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNzSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNzSU9TLm1tCkBAIC0xMTQsMTMgKzExNCwx
MyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRJc0hvbGRpbmdMb2NrZWRGaWxlcyhib29sIGlz
SG9sZGluZ0xvY2tlZEZpbGVzKQogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAg
cmV0dXJuOwogCi0gICAgICAgIGlmICghbV9zaG91bGRTdXNwZW5kSURCU2VydmVycykKKyAgICAg
ICAgLyogaWYgKCFtX3Nob3VsZFN1c3BlbmRJREJTZXJ2ZXJzKQogICAgICAgICAgICAgcmV0dXJu
OwogCiAgICAgICAgIGZvckVhY2hOZXR3b3JrU2Vzc2lvbihbXShhdXRvJiBzZXNzaW9uKSB7CiAg
ICAgICAgICAgICBpZiAoYXV0byogc2VydmVyID0gc2Vzc2lvbi53ZWJJREJTZXJ2ZXIoKSkKICAg
ICAgICAgICAgICAgICBzZXJ2ZXItPnN1c3BlbmQoKTsKLSAgICAgICAgfSk7CisgICAgICAgIH0p
OyAqLwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3N0b3JhZ2UvSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmNmOTlhNzliZTMyMjNjNWQwZTJjYjA3NWM4YmMxM2E5M2ZmZjE4OAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9J
REJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50LmNwcApAQCAtMCwwICsxLDE5MSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJREJTdG9yYWdlQ29ubmVjdGlv
blRvQ2xpZW50LmgiCisKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNs
dWRlICJXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYklE
QlJlc3VsdC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvSURCUmVxdWVzdERhdGEuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL0lEQlJlc3VsdERhdGEuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1VuaXF1ZUlEQkRh
dGFiYXNlQ29ubmVjdGlvbi5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworSURCU3RvcmFnZUNv
bm5lY3Rpb25Ub0NsaWVudDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudChJUEM6OkNvbm5l
Y3Rpb246OlVuaXF1ZUlEIGNvbm5lY3Rpb24sIFdlYkNvcmU6OklEQkNvbm5lY3Rpb25JZGVudGlm
aWVyIGlkZW50aWZpZXIpCisgICAgOiBtX2Nvbm5lY3Rpb24oY29ubmVjdGlvbikKKyAgICAsIG1f
aWRlbnRpZmllcihpZGVudGlmaWVyKQorICAgICwgbV9jb25uZWN0aW9uVG9DbGllbnQoV2ViQ29y
ZTo6SURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnQ6OmNyZWF0ZSgqdGhpcykpCit7Cit9
CisKK0lEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6On5JREJTdG9yYWdlQ29ubmVjdGlvblRv
Q2xpZW50KCkKK3sKKyAgICBtX2Nvbm5lY3Rpb25Ub0NsaWVudC0+Y2xlYXJEZWxlZ2F0ZSgpOwor
fQorCitXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub0NsaWVudCYgSURCU3RvcmFn
ZUNvbm5lY3Rpb25Ub0NsaWVudDo6Y29ubmVjdGlvblRvQ2xpZW50KCkKK3sKKyAgICByZXR1cm4g
bV9jb25uZWN0aW9uVG9DbGllbnQ7Cit9CisKK3RlbXBsYXRlPGNsYXNzIE1lc3NhZ2VUeXBlPiB2
b2lkIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZEdldFJlc3VsdChjb25zdCBXZWJD
b3JlOjpJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIGlmIChyZXN1bHREYXRhLnR5
cGUoKSA9PSBXZWJDb3JlOjpJREJSZXN1bHRUeXBlOjpFcnJvcikgeworICAgICAgICBJUEM6OkNv
bm5lY3Rpb246OnNlbmQobV9jb25uZWN0aW9uLCBNZXNzYWdlVHlwZShyZXN1bHREYXRhKSwgMCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAocmVzdWx0RGF0YS50eXBlKCkgPT0g
V2ViQ29yZTo6SURCUmVzdWx0VHlwZTo6R2V0QWxsUmVjb3Jkc1N1Y2Nlc3MgJiYgcmVzdWx0RGF0
YS5nZXRBbGxSZXN1bHQoKS50eXBlKCkgPT0gV2ViQ29yZTo6SW5kZXhlZERCOjpHZXRBbGxUeXBl
OjpLZXlzKSB7CisgICAgICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1l
c3NhZ2VUeXBlKHJlc3VsdERhdGEpLCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGF1dG8gYmxvYkZpbGVQYXRocyA9IHJlc3VsdERhdGEudHlwZSgpID09IFdlYkNvcmU6OklEQlJl
c3VsdFR5cGU6OkdldEFsbFJlY29yZHNTdWNjZXNzID8gcmVzdWx0RGF0YS5nZXRBbGxSZXN1bHQo
KS5hbGxCbG9iRmlsZVBhdGhzKCkgOiByZXN1bHREYXRhLmdldFJlc3VsdCgpLnZhbHVlKCkuYmxv
YkZpbGVQYXRocygpOworICAgIGlmIChibG9iRmlsZVBhdGhzLmlzRW1wdHkoKSkgeworICAgICAg
ICBJUEM6OkNvbm5lY3Rpb246OnNlbmQobV9jb25uZWN0aW9uLCBNZXNzYWdlVHlwZShyZXN1bHRE
YXRhKSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBJUEM6OkNvbm5lY3Rpb246
OnNlbmQobV9jb25uZWN0aW9uLCBNZXNzYWdlVHlwZShyZXN1bHREYXRhKSwgMCk7Cit9CisKK3Zv
aWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkRGVsZXRlRGF0YWJhc2UoY29uc3Qg
V2ViQ29yZTo6SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBJUEM6OkNvbm5lY3Rp
b246OnNlbmQobV9jb25uZWN0aW9uLCBNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVy
OjpEaWREZWxldGVEYXRhYmFzZShyZXN1bHREYXRhKSwgMCk7Cit9CisKK3ZvaWQgSURCU3RvcmFn
ZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkT3BlbkRhdGFiYXNlKGNvbnN0IFdlYkNvcmU6OklEQlJl
c3VsdERhdGEmIHJlc3VsdERhdGEpCit7CisgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKG1fY29u
bmVjdGlvbiwgTWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6RGlkT3BlbkRhdGFi
YXNlKHJlc3VsdERhdGEpLCAwKTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xp
ZW50OjpkaWRTdGFydFRyYW5zYWN0aW9uKGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRp
ZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJREJFcnJvciYgZXJy
b3IpCit7CisgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwgTWVzc2FnZXM6
OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6RGlkU3RhcnRUcmFuc2FjdGlvbih0cmFuc2FjdGlv
bklkZW50aWZpZXIsIGVycm9yKSwgMCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25U
b0NsaWVudDo6ZGlkQWJvcnRUcmFuc2FjdGlvbihjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlk
ZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCRXJyb3Im
IGVycm9yKQoreworICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3Nh
Z2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZEFib3J0VHJhbnNhY3Rpb24odHJhbnNh
Y3Rpb25JZGVudGlmaWVyLCBlcnJvciksIDApOworfQorCit2b2lkIElEQlN0b3JhZ2VDb25uZWN0
aW9uVG9DbGllbnQ6OmRpZENvbW1pdFRyYW5zYWN0aW9uKGNvbnN0IFdlYkNvcmU6OklEQlJlc291
cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJREJF
cnJvciYgZXJyb3IpCit7CisgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwg
TWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6RGlkQ29tbWl0VHJhbnNhY3Rpb24o
dHJhbnNhY3Rpb25JZGVudGlmaWVyLCBlcnJvciksIDApOworfQorCit2b2lkIElEQlN0b3JhZ2VD
b25uZWN0aW9uVG9DbGllbnQ6OmRpZENyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklE
QlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCit7CisgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKG1f
Y29ubmVjdGlvbiwgTWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6RGlkQ3JlYXRl
T2JqZWN0U3RvcmUocmVzdWx0RGF0YSksIDApOworfQorCit2b2lkIElEQlN0b3JhZ2VDb25uZWN0
aW9uVG9DbGllbnQ6OmRpZERlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlc3Vs
dERhdGEmIHJlc3VsdERhdGEpCit7CisgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKG1fY29ubmVj
dGlvbiwgTWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6RGlkRGVsZXRlT2JqZWN0
U3RvcmUocmVzdWx0RGF0YSksIDApOworfQorCit2b2lkIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9D
bGllbnQ6OmRpZFJlbmFtZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEm
IHJlc3VsdERhdGEpCit7CisgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwg
TWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6RGlkUmVuYW1lT2JqZWN0U3RvcmUo
cmVzdWx0RGF0YSksIDApOworfQorCit2b2lkIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6
OmRpZENsZWFyT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYgcmVzdWx0
RGF0YSkKK3sKKyAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQobV9jb25uZWN0aW9uLCBNZXNzYWdl
czo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWRDbGVhck9iamVjdFN0b3JlKHJlc3VsdERh
dGEpLCAwKTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRDcmVh
dGVJbmRleChjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAg
IElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJJREJDb25u
ZWN0aW9uVG9TZXJ2ZXI6OkRpZENyZWF0ZUluZGV4KHJlc3VsdERhdGEpLCAwKTsKK30KKwordm9p
ZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWREZWxldGVJbmRleChjb25zdCBXZWJD
b3JlOjpJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIElQQzo6Q29ubmVjdGlvbjo6
c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRp
ZERlbGV0ZUluZGV4KHJlc3VsdERhdGEpLCAwKTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVj
dGlvblRvQ2xpZW50OjpkaWRSZW5hbWVJbmRleChjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRh
JiByZXN1bHREYXRhKQoreworICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24s
IE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZFJlbmFtZUluZGV4KHJlc3Vs
dERhdGEpLCAwKTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRQ
dXRPckFkZChjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAg
IElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJJREJDb25u
ZWN0aW9uVG9TZXJ2ZXI6OkRpZFB1dE9yQWRkKHJlc3VsdERhdGEpLCAwKTsKK30KKwordm9pZCBJ
REJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRHZXRSZWNvcmQoY29uc3QgV2ViQ29yZTo6
SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBkaWRHZXRSZXN1bHQ8TWVzc2FnZXM6
OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6RGlkR2V0UmVjb3JkPihyZXN1bHREYXRhKTsKK30K
Kwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRHZXRBbGxSZWNvcmRzKGNv
bnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCit7CisgICAgZGlkR2V0UmVz
dWx0PE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZEdldEFsbFJlY29yZHM+
KHJlc3VsdERhdGEpOworfQorCit2b2lkIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRp
ZEdldENvdW50KGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCit7Cisg
ICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwgTWVzc2FnZXM6OldlYklEQkNv
bm5lY3Rpb25Ub1NlcnZlcjo6RGlkR2V0Q291bnQocmVzdWx0RGF0YSksIDApOworfQorCit2b2lk
IElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZERlbGV0ZVJlY29yZChjb25zdCBXZWJD
b3JlOjpJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIElQQzo6Q29ubmVjdGlvbjo6
c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRp
ZERlbGV0ZVJlY29yZChyZXN1bHREYXRhKSwgMCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5l
Y3Rpb25Ub0NsaWVudDo6ZGlkT3BlbkN1cnNvcihjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRh
JiByZXN1bHREYXRhKQoreworICAgIGRpZEdldFJlc3VsdDxNZXNzYWdlczo6V2ViSURCQ29ubmVj
dGlvblRvU2VydmVyOjpEaWRPcGVuQ3Vyc29yPihyZXN1bHREYXRhKTsKK30KKwordm9pZCBJREJT
dG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRJdGVyYXRlQ3Vyc29yKGNvbnN0IFdlYkNvcmU6
OklEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCit7CisgICAgZGlkR2V0UmVzdWx0PE1lc3NhZ2Vz
OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZEl0ZXJhdGVDdXJzb3I+KHJlc3VsdERhdGEp
OworfQorCit2b2lkIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZEdldEFsbERhdGFi
YXNlTmFtZXNBbmRWZXJzaW9ucyhjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXIm
IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6SURCRGF0YWJhc2VOYW1l
QW5kVmVyc2lvbj4mIGRhdGFiYXNlcykKK3sKKyAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQobV9j
b25uZWN0aW9uLCBNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWRHZXRBbGxE
YXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMocmVxdWVzdElkZW50aWZpZXIsIGRhdGFiYXNlcyksIDAp
OworfQorCit2b2lkIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmZpcmVWZXJzaW9uQ2hh
bmdlRXZlbnQoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVz
dElkZW50aWZpZXIsIHVpbnQ2NF90IHJlcXVlc3RlZFZlcnNpb24pCit7CisgICAgSVBDOjpDb25u
ZWN0aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwgTWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub1Nl
cnZlcjo6RmlyZVZlcnNpb25DaGFuZ2VFdmVudChjb25uZWN0aW9uLmlkZW50aWZpZXIoKSwgcmVx
dWVzdElkZW50aWZpZXIsIHJlcXVlc3RlZFZlcnNpb24pLCAwKTsKK30KKwordm9pZCBJREJTdG9y
YWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRDbG9zZUZyb21TZXJ2ZXIoV2ViQ29yZTo6SURCU2Vy
dmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNv
cmU6OklEQkVycm9yJiBlcnJvcikKK3sKKyAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQobV9jb25u
ZWN0aW9uLCBNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWRDbG9zZUZyb21T
ZXJ2ZXIoY29ubmVjdGlvbi5pZGVudGlmaWVyKCksIGVycm9yKSwgMCk7Cit9CisKK3ZvaWQgSURC
U3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6bm90aWZ5T3BlbkRCUmVxdWVzdEJsb2NrZWQoY29u
c3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgdWlu
dDY0X3Qgb2xkVmVyc2lvbiwgdWludDY0X3QgbmV3VmVyc2lvbikKK3sKKyAgICBJUEM6OkNvbm5l
Y3Rpb246OnNlbmQobV9jb25uZWN0aW9uLCBNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2Vy
dmVyOjpOb3RpZnlPcGVuREJSZXF1ZXN0QmxvY2tlZChyZXF1ZXN0SWRlbnRpZmllciwgb2xkVmVy
c2lvbiwgbmV3VmVyc2lvbiksIDApOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlQ29u
bmVjdGlvblRvQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2Uv
SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY0OGQ0M2RkZDI5ZTMz
ODViMDIzODFhNTc5ZWM1ODBiNTM5NzYyMDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5o
CkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
IkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0lEQkNvbm5lY3Rpb25Ub0NsaWVudC5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvSURCQ29ubmVjdGlvblRvQ2xpZW50RGVsZWdhdGUuaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQg
ZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6SURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnRE
ZWxlZ2F0ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgSURC
U3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudChJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBXZWJD
b3JlOjpJREJDb25uZWN0aW9uSWRlbnRpZmllcik7CisgICAgfklEQlN0b3JhZ2VDb25uZWN0aW9u
VG9DbGllbnQoKTsKKworICAgIFdlYkNvcmU6OklEQkNvbm5lY3Rpb25JZGVudGlmaWVyIGlkZW50
aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKyAgICBJUEM6OkNv
bm5lY3Rpb246OlVuaXF1ZUlEIGlwY0Nvbm5lY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2Nvbm5l
Y3Rpb247IH0KKyAgICBXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub0NsaWVudCYg
Y29ubmVjdGlvblRvQ2xpZW50KCk7CisKK3ByaXZhdGU6CisgICAgdGVtcGxhdGU8Y2xhc3MgTWVz
c2FnZVR5cGU+IHZvaWQgZGlkR2V0UmVzdWx0KGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEm
KTsKKworICAgIC8vIElEQkNvbm5lY3Rpb25Ub0NsaWVudERlbGVnYXRlCisgICAgdm9pZCBkaWRE
ZWxldGVEYXRhYmFzZShjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJikgZmluYWw7CisgICAg
dm9pZCBkaWRPcGVuRGF0YWJhc2UoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFs
OworICAgIHZvaWQgZGlkQWJvcnRUcmFuc2FjdGlvbihjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJj
ZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCRXJy
b3ImKSBmaW5hbDsKKyAgICB2b2lkIGRpZENvbW1pdFRyYW5zYWN0aW9uKGNvbnN0IFdlYkNvcmU6
OklEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJD
b3JlOjpJREJFcnJvciYpIGZpbmFsOworICAgIHZvaWQgZGlkU3RhcnRUcmFuc2FjdGlvbihjb25z
dCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwg
Y29uc3QgV2ViQ29yZTo6SURCRXJyb3ImKSBmaW5hbDsKKyAgICB2b2lkIGRpZENyZWF0ZU9iamVj
dFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBmaW5hbDsKKyAgICB2b2lkIGRp
ZERlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBmaW5hbDsK
KyAgICB2b2lkIGRpZFJlbmFtZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERh
dGEmKSBmaW5hbDsKKyAgICB2b2lkIGRpZENsZWFyT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6
SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkQ3JlYXRlSW5kZXgoY29uc3QgV2Vi
Q29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkRGVsZXRlSW5kZXgoY29u
c3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVuYW1lSW5k
ZXgoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkUHV0
T3JBZGQoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlk
R2V0UmVjb3JkKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBmaW5hbDsKKyAgICB2b2lk
IGRpZEdldEFsbFJlY29yZHMoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOwor
ICAgIHZvaWQgZGlkR2V0Q291bnQoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFs
OworICAgIHZvaWQgZGlkRGVsZXRlUmVjb3JkKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEm
KSBmaW5hbDsKKyAgICB2b2lkIGRpZE9wZW5DdXJzb3IoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0
RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkSXRlcmF0ZUN1cnNvcihjb25zdCBXZWJDb3JlOjpJ
REJSZXN1bHREYXRhJikgZmluYWw7CisgICAgdm9pZCBkaWRHZXRBbGxEYXRhYmFzZU5hbWVzQW5k
VmVyc2lvbnMoY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiwgY29uc3QgVmVj
dG9yPFdlYkNvcmU6OklEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24+JikgZmluYWw7CisgICAgdm9p
ZCBub3RpZnlPcGVuREJSZXF1ZXN0QmxvY2tlZChjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlk
ZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBvbGRWZXJzaW9uLCB1aW50NjRf
dCBuZXdWZXJzaW9uKSBmaW5hbDsKKyAgICB2b2lkIGZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQoV2Vi
Q29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mLCBjb25zdCBXZWJD
b3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBy
ZXF1ZXN0ZWRWZXJzaW9uKSBmaW5hbDsKKyAgICB2b2lkIGRpZENsb3NlRnJvbVNlcnZlcihXZWJD
b3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYsIGNvbnN0IFdlYkNv
cmU6OklEQkVycm9yJikgZmluYWw7CisKKyAgICBJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIG1f
Y29ubmVjdGlvbjsKKyAgICBXZWJDb3JlOjpJREJDb25uZWN0aW9uSWRlbnRpZmllciBtX2lkZW50
aWZpZXI7CisgICAgUmVmPFdlYkNvcmU6OklEQlNlcnZlcjo6SURCQ29ubmVjdGlvblRvQ2xpZW50
PiBtX2Nvbm5lY3Rpb25Ub0NsaWVudDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VN
YW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9y
YWdlTWFuYWdlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDc5ZWJhNzJhMzgyNWRiNmMyZTIyZjIxNzQxMmZk
MDE2MmM3NTM4MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc3RvcmFnZS9JREJTdG9yYWdlTWFuYWdlci5jcHAKQEAgLTAsMCArMSwyMzQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSURCU3RvcmFnZU1hbmFnZXIu
aCIKKworI2luY2x1ZGUgIklEQlN0b3JhZ2VSZWdpc3RyeS5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
TWVtb3J5SURCQmFja2luZ1N0b3JlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVGaWxlU3lz
dGVtLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVJREJCYWNraW5nU3RvcmUuaD4KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK3N0YXRpYyB2b2lkIG1pZ3JhdGVPcmlnaW5EYXRhKGNvbnN0IFN0
cmluZyYgb2xkT3JpZ2luRGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIG5ld09yaWdpbkRpcmVjdG9y
eSkKK3sKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMob2xkT3JpZ2luRGlyZWN0b3J5
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBmaWxlTmFtZXMgPSBGaWxlU3lzdGVtOjps
aXN0RGlyZWN0b3J5KG9sZE9yaWdpbkRpcmVjdG9yeSk7CisgICAgZm9yIChhdXRvIG5hbWUgOiBm
aWxlTmFtZXMpIHsKKyAgICAgICAgU3RyaW5nIGNoaWxkUGF0aCA9IEZpbGVTeXN0ZW06OnJlYWRT
eW1ib2xpY0xpbmsoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG9sZE9yaWdp
bkRpcmVjdG9yeSwgbmFtZSkpOworICAgICAgICBTdHJpbmcgbmV3TmFtZSA9IFdlYkNvcmU6OlNR
TGl0ZUZpbGVTeXN0ZW06OmNvbXB1dGVIYXNoRm9yRmlsZU5hbWUoV2ViQ29yZTo6SURCU2VydmVy
OjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRlY29kZURhdGFiYXNlTmFtZShuYW1lKSk7CisgICAg
ICAgIGF1dG8gbmV3Q2hpbGRQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KG5ld09yaWdpbkRpcmVjdG9yeSwgbmV3TmFtZSk7CisgICAgICAgIEZpbGVTeXN0ZW06Om1v
dmVGaWxlKGNoaWxkUGF0aCwgbmV3Q2hpbGRQYXRoKTsKKyAgICB9CisKKyAgICBGaWxlU3lzdGVt
OjpkZWxldGVFbXB0eURpcmVjdG9yeShvbGRPcmlnaW5EaXJlY3RvcnkpOworfQorCitTdHJpbmcg
SURCU3RvcmFnZU1hbmFnZXI6OmlkYlN0b3JhZ2VPcmlnaW5EaXJlY3RvcnkoY29uc3QgU3RyaW5n
JiByb290RGlyZWN0b3J5LCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbikKK3sK
KyAgICBpZiAocm9vdERpcmVjdG9yeS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBlbXB0eVN0
cmluZygpOworCisgICAgU3RyaW5nIG9yaWdpbkRpcmVjdG9yeSA9IFdlYkNvcmU6OklEQkRhdGFi
YXNlSWRlbnRpZmllcjo6ZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9vdChvcmlnaW4udG9w
T3JpZ2luLCBvcmlnaW4uY2xpZW50T3JpZ2luLCByb290RGlyZWN0b3J5LCAidjEiKTsKKyAgICBG
aWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMob3JpZ2luRGlyZWN0b3J5KTsKKworICAgIFN0
cmluZyBvbGRPcmlnaW5EaXJlY3RvcnkgPSBXZWJDb3JlOjpJREJEYXRhYmFzZUlkZW50aWZpZXI6
OmRhdGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVUb1Jvb3Qob3JpZ2luLnRvcE9yaWdpbiwgb3JpZ2lu
LmNsaWVudE9yaWdpbiwgcm9vdERpcmVjdG9yeSwgInYwIik7CisgICAgbWlncmF0ZU9yaWdpbkRh
dGEob2xkT3JpZ2luRGlyZWN0b3J5LCBvcmlnaW5EaXJlY3RvcnkpOworCisgICAgcmV0dXJuIG9y
aWdpbkRpcmVjdG9yeTsKK30KKwordWludDY0X3QgSURCU3RvcmFnZU1hbmFnZXI6OmlkYlN0b3Jh
Z2VTaXplKGNvbnN0IFN0cmluZyYgb3JpZ2luRGlyZWN0b3J5KQoreworICAgIHJldHVybiBXZWJD
b3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGF0YWJhc2VzU2l6ZUZvckRp
cmVjdG9yeShvcmlnaW5EaXJlY3RvcnkpOworfQorCitzdGF0aWMgdm9pZCBnZXRPcmlnaW5zRm9y
VmVyc2lvbihjb25zdCBTdHJpbmcmIHZlcnNpb25QYXRoLCBIYXNoU2V0PFdlYkNvcmU6OkNsaWVu
dE9yaWdpbj4mIG9yaWdpbnMpCit7CisgICAgZm9yIChhdXRvJiB0b3BEYXRhYmFzZUlkZW50aWZp
ZXIgOiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KHZlcnNpb25QYXRoKSkgeworICAgICAgICBh
dXRvIHRvcE9yaWdpbiA9IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNl
SWRlbnRpZmllcih0b3BEYXRhYmFzZUlkZW50aWZpZXIpOworICAgICAgICBpZiAoIXRvcE9yaWdp
bikKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGZvciAoYXV0byYgZGF0YWJhc2VJ
ZGVudGlmaWVyIDogRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQodmVyc2lvblBhdGgsIHRvcERhdGFiYXNlSWRlbnRpZmllcikpKSB7
CisgICAgICAgICAgICBpZiAoYXV0byBjbGllbnRPcmlnaW4gPSBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZpZXIoZGF0YWJhc2VJZGVudGlmaWVyKSkKKyAg
ICAgICAgICAgICAgICBvcmlnaW5zLmFkZChXZWJDb3JlOjpDbGllbnRPcmlnaW4geyAqdG9wT3Jp
Z2luLCAqY2xpZW50T3JpZ2luIH0pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IG9yaWdpbnMuYWRkKFdlYkNvcmU6OkNsaWVudE9yaWdpbiB7ICp0b3BPcmlnaW4sICp0b3BPcmln
aW4gfSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK0hhc2hTZXQ8V2ViQ29yZTo6Q2xpZW50T3Jp
Z2luPiBJREJTdG9yYWdlTWFuYWdlcjo6b3JpZ2luc09mSURCU3RvcmFnZURhdGEoY29uc3QgU3Ry
aW5nJiByb290RGlyZWN0b3J5KQoreworICAgIEhhc2hTZXQ8V2ViQ29yZTo6Q2xpZW50T3JpZ2lu
PiBvcmlnaW5zOworICAgIGlmIChyb290RGlyZWN0b3J5LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuIG9yaWdpbnM7CisKKyAgICBnZXRPcmlnaW5zRm9yVmVyc2lvbihGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQocm9vdERpcmVjdG9yeSwgInYwIiksIG9yaWdpbnMpOworICAg
IGdldE9yaWdpbnNGb3JWZXJzaW9uKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChyb290RGlyZWN0b3J5LCAidjEiKSwgb3JpZ2lucyk7CisgICAgcmV0dXJuIG9yaWdpbnM7Cit9
CisKK0lEQlN0b3JhZ2VNYW5hZ2VyOjpJREJTdG9yYWdlTWFuYWdlcihjb25zdCBTdHJpbmcmIHBh
dGgsIElEQlN0b3JhZ2VSZWdpc3RyeSYgcmVnaXN0cnksIFF1b3RhQ2hlY2tGdW5jdGlvbiYmIHF1
b3RhQ2hlY2tGdW5jdGlvbikKKyAgICA6IG1fcGF0aChwYXRoKQorICAgICwgbV9yZWdpc3RyeShy
ZWdpc3RyeSkKKyAgICAsIG1fcXVvdGFDaGVja0Z1bmN0aW9uKFdURk1vdmUocXVvdGFDaGVja0Z1
bmN0aW9uKSkKK3sKK30KKworYm9vbCBJREJTdG9yYWdlTWFuYWdlcjo6aGFzRGF0YUluTWVtb3J5
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gV1RGOjphbnlPZihtX2RhdGFiYXNlcy52YWx1ZXMoKSwg
WyZdIChhdXRvJiBkYXRhYmFzZSkgeworICAgICAgICByZXR1cm4gZGF0YWJhc2UtPmhhc0RhdGFJ
bk1lbW9yeSgpOworICAgIH0pOworfQorCit2b2lkIElEQlN0b3JhZ2VNYW5hZ2VyOjpjbG9zZURh
dGFiYXNlc0ZvckRlbGV0aW9uKCkKK3sKKyAgICBmb3IgKGF1dG8mIGRhdGFiYXNlIDogbV9kYXRh
YmFzZXMudmFsdWVzKCkpCisgICAgICAgIGRhdGFiYXNlLT5pbW1lZGlhdGVDbG9zZSgpOworCisg
ICAgbV9kYXRhYmFzZXMuY2xlYXIoKTsKK30KKwordm9pZCBJREJTdG9yYWdlTWFuYWdlcjo6c3Rv
cERhdGFiYXNlQWN0aXZpdGllc0ZvclN1c3BlbmQoKQoreworICAgIGlmIChtX3BhdGguaXNFbXB0
eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKGF1dG8mIGRhdGFiYXNlIDogbV9kYXRh
YmFzZXMudmFsdWVzKCkpIHsKKyAgICAgICAgLy8gT25seSBzdG9wIGRhdGFiYXNlcyB3aXRoIG5v
bi1lcGhlbWVyYWwgYmFja2luZyBzdG9yZSB0aGF0IGNhbiBob2xkIGRhdGFiYXNlIGZpbGUgbG9j
ay4KKyAgICAgICAgaWYgKCFkYXRhYmFzZS0+aWRlbnRpZmllcigpLmlzVHJhbnNpZW50KCkpCisg
ICAgICAgICAgICBkYXRhYmFzZS0+YWJvcnRJblByb2dyZXNzVHJhbnNhY3Rpb25zKCk7CisgICAg
fQorfQorCitXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlJiBJREJTdG9yYWdl
TWFuYWdlcjo6Z2V0T3JDcmVhdGVVbmlxdWVJREJEYXRhYmFzZShjb25zdCBXZWJDb3JlOjpJREJE
YXRhYmFzZUlkZW50aWZpZXImIGlkZW50aWZpZXIpCit7CisgICAgYXV0byBhZGRSZXN1bHQgPSBt
X2RhdGFiYXNlcy5hZGQoaWRlbnRpZmllciwgbnVsbHB0cik7CisgICAgaWYgKGFkZFJlc3VsdC5p
c05ld0VudHJ5KQorICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1
ZTxXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlPigqdGhpcywgaWRlbnRpZmll
cik7CisKKyAgICByZXR1cm4gKmFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7Cit9CisKK3ZvaWQg
SURCU3RvcmFnZU1hbmFnZXI6Om9wZW5EYXRhYmFzZShXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQkNv
bm5lY3Rpb25Ub0NsaWVudCYgY29ubmVjdGlvblRvQ2xpZW50LCBjb25zdCBXZWJDb3JlOjpJREJS
ZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEpCit7CisgICAgYXV0byYgZGF0YWJhc2UgPSBnZXRPckNy
ZWF0ZVVuaXF1ZUlEQkRhdGFiYXNlKHJlcXVlc3REYXRhLmRhdGFiYXNlSWRlbnRpZmllcigpKTsK
KyAgICBkYXRhYmFzZS5vcGVuRGF0YWJhc2VDb25uZWN0aW9uKGNvbm5lY3Rpb25Ub0NsaWVudCwg
cmVxdWVzdERhdGEpOworfQorCit2b2lkIElEQlN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVEYXRhYmFz
ZShXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub0NsaWVudCYgY29ubmVjdGlvblRv
Q2xpZW50LCBjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEpCit7Cisg
ICAgYXV0byYgZGF0YWJhc2UgPSBnZXRPckNyZWF0ZVVuaXF1ZUlEQkRhdGFiYXNlKHJlcXVlc3RE
YXRhLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICBkYXRhYmFzZS5oYW5kbGVEZWxldGUoY29u
bmVjdGlvblRvQ2xpZW50LCByZXF1ZXN0RGF0YSk7CisKKyAgICAvLyBUaGlzIGRhdGFiYXNlIGlz
IGNyZWF0ZWQgZm9yIGRlbGV0aW9uLgorICAgIGlmIChkYXRhYmFzZS50cnlDbG9zZSgpKQorICAg
ICAgICBtX2RhdGFiYXNlcy5yZW1vdmUoZGF0YWJhc2UuaWRlbnRpZmllcigpKTsKK30KKworVmVj
dG9yPFdlYkNvcmU6OklEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24+IElEQlN0b3JhZ2VNYW5hZ2Vy
OjpnZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMoKQoreworICAgIFZlY3RvcjxXZWJDb3Jl
OjpJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiByZXN1bHQ7CisgICAgSGFzaFNldDxTdHJpbmc+
IHZpc2l0ZWREYXRhYmFzZVBhdGhzOworICAgIGZvciAoYXV0byYgZGF0YWJhc2UgOiBtX2RhdGFi
YXNlcy52YWx1ZXMoKSkgeworICAgICAgICBhdXRvIHBhdGggPSBkYXRhYmFzZS0+ZmlsZVBhdGgo
KTsKKyAgICAgICAgaWYgKCFwYXRoLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHZpc2l0ZWREYXRh
YmFzZVBhdGhzLmFkZChwYXRoKTsKKworICAgICAgICBpZiAoYXV0byBuYW1lQW5kVmVyc2lvbiA9
IGRhdGFiYXNlLT5uYW1lQW5kVmVyc2lvbigpKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChX
VEZNb3ZlKCpuYW1lQW5kVmVyc2lvbikpOworICAgIH0KKworICAgIGF1dG8gZGF0YWJhc2VJZGVu
dGlmaWVycyA9IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobV9wYXRoKTsKKyAgICBmb3IgKGF1
dG8gaWRlbnRpZmllciA6IGRhdGFiYXNlSWRlbnRpZmllcnMpIHsKKyAgICAgICAgYXV0byBkYXRh
YmFzZURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3Bh
dGgsIGlkZW50aWZpZXIpOworICAgICAgICBhdXRvIGRhdGFiYXNlUGF0aCA9IFdlYkNvcmU6OklE
QlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpmdWxsRGF0YWJhc2VQYXRoRm9yRGlyZWN0
b3J5KGRhdGFiYXNlRGlyZWN0b3J5KTsKKyAgICAgICAgaWYgKHZpc2l0ZWREYXRhYmFzZVBhdGhz
LmNvbnRhaW5zKGRhdGFiYXNlUGF0aCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAg
ICBpZiAoYXV0byBuYW1lQW5kVmVyc2lvbiA9IFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURC
QmFja2luZ1N0b3JlOjpkYXRhYmFzZU5hbWVBbmRWZXJzaW9uRnJvbUZpbGUoZGF0YWJhc2VQYXRo
KSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoV1RGTW92ZSgqbmFtZUFuZFZlcnNpb24pKTsK
KyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkIElEQlN0b3JhZ2VNYW5hZ2Vy
OjpvcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiBy
ZXF1ZXN0RGF0YSkKK3sKKyAgICBhdXRvKiBkYXRhYmFzZSA9IG1fZGF0YWJhc2VzLmdldChyZXF1
ZXN0RGF0YS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAgaWYgKCFkYXRhYmFzZSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgZGF0YWJhc2UtPm9wZW5EQlJlcXVlc3RDYW5jZWxsZWQocmVxdWVz
dERhdGEucmVxdWVzdElkZW50aWZpZXIoKSk7CisKKyAgICAvLyBEYXRhYmFzZSBiZWNvbWVzIGlk
bGUgYWZ0ZXIgcmVxdWVzdCBpcyBjYW5jZWxsZWQuCisgICAgaWYgKGRhdGFiYXNlLT50cnlDbG9z
ZSgpKQorICAgICAgICBtX2RhdGFiYXNlcy5yZW1vdmUoZGF0YWJhc2UtPmlkZW50aWZpZXIoKSk7
Cit9CisKK3ZvaWQgSURCU3RvcmFnZU1hbmFnZXI6OnJlZ2lzdGVyQ29ubmVjdGlvbihXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYgY29ubmVjdGlvbikKK3sK
KyAgICBtX3JlZ2lzdHJ5LnJlZ2lzdGVyQ29ubmVjdGlvbihjb25uZWN0aW9uKTsKK30KKwordm9p
ZCBJREJTdG9yYWdlTWFuYWdlcjo6dW5yZWdpc3RlckNvbm5lY3Rpb24oV2ViQ29yZTo6SURCU2Vy
dmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCit7CisgICAgbV9y
ZWdpc3RyeS51bnJlZ2lzdGVyQ29ubmVjdGlvbihjb25uZWN0aW9uKTsKK30KKwordm9pZCBJREJT
dG9yYWdlTWFuYWdlcjo6cmVnaXN0ZXJUcmFuc2FjdGlvbihXZWJDb3JlOjpJREJTZXJ2ZXI6OlVu
aXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQoreworICAgIG1fcmVnaXN0
cnkucmVnaXN0ZXJUcmFuc2FjdGlvbih0cmFuc2FjdGlvbik7Cit9CisKK3ZvaWQgSURCU3RvcmFn
ZU1hbmFnZXI6OnVucmVnaXN0ZXJUcmFuc2FjdGlvbihXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1
ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQoreworICAgIG1fcmVnaXN0cnku
dW5yZWdpc3RlclRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKTsKK30KKworc3RkOjp1bmlxdWVfcHRy
PFdlYkNvcmU6OklEQlNlcnZlcjo6SURCQmFja2luZ1N0b3JlPiBJREJTdG9yYWdlTWFuYWdlcjo6
Y3JlYXRlQmFja2luZ1N0b3JlKGNvbnN0IFdlYkNvcmU6OklEQkRhdGFiYXNlSWRlbnRpZmllciYg
aWRlbnRpZmllcikKK3sKKyAgICBpZiAobV9wYXRoLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8V2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlJREJCYWNraW5nU3RvcmU+KGlk
ZW50aWZpZXIpOworCisgICAgaWYgKGlkZW50aWZpZXIuaXNUcmFuc2llbnQoKSkKKyAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8V2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlJREJCYWNraW5nU3Rv
cmU+KGlkZW50aWZpZXIpOworCisgICAgYXV0byBuYW1lID0gV2ViQ29yZTo6U1FMaXRlRmlsZVN5
c3RlbTo6Y29tcHV0ZUhhc2hGb3JGaWxlTmFtZShpZGVudGlmaWVyLmRhdGFiYXNlTmFtZSgpKTsK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tp
bmdTdG9yZT4oaWRlbnRpZmllciwgRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KG1fcGF0aCwgbmFtZSkpOworfQorCit2b2lkIElEQlN0b3JhZ2VNYW5hZ2VyOjpyZXF1ZXN0U3Bh
Y2UoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgdWludDY0X3Qgc2l6ZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBtX3F1b3Rh
Q2hlY2tGdW5jdGlvbihzaXplLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZU1hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYzcyMWI1Njli
ZjQ5YTBkZmNlZjkyZWYyODlkMzQyYTVkY2UwNDYxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VNYW5hZ2VyLmgKQEAgLTAs
MCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8V2ViQ29y
ZS9VbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworbmFt
ZXNwYWNlIElEQlNlcnZlciB7CitjbGFzcyBJREJCYWNraW5nU3RvcmU7CitjbGFzcyBJREJDb25u
ZWN0aW9uVG9DbGllbnQ7CitjbGFzcyBVbmlxdWVJREJEYXRhYmFzZTsKK30KK30KKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK2NsYXNzIElEQlN0b3JhZ2VSZWdpc3RyeTsKKworY2xhc3MgSURCU3Rv
cmFnZU1hbmFnZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJE
YXRhYmFzZU1hbmFnZXIgeworcHVibGljOgorICAgIHN0YXRpYyBTdHJpbmcgaWRiU3RvcmFnZU9y
aWdpbkRpcmVjdG9yeShjb25zdCBTdHJpbmcmIHJvb3REaXJlY3RvcnksIGNvbnN0IFdlYkNvcmU6
OkNsaWVudE9yaWdpbiYpOworICAgIHN0YXRpYyB1aW50NjRfdCBpZGJTdG9yYWdlU2l6ZShjb25z
dCBTdHJpbmcmIG9yaWdpbkRpcmVjdG9yeSk7CisgICAgc3RhdGljIEhhc2hTZXQ8V2ViQ29yZTo6
Q2xpZW50T3JpZ2luPiBvcmlnaW5zT2ZJREJTdG9yYWdlRGF0YShjb25zdCBTdHJpbmcmIHJvb3RE
aXJlY3RvcnkpOworCisgICAgdXNpbmcgUXVvdGFDaGVja0Z1bmN0aW9uID0gRnVuY3Rpb248dm9p
ZCh1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
Jik+OworICAgIElEQlN0b3JhZ2VNYW5hZ2VyKGNvbnN0IFN0cmluZyYgcGF0aCwgSURCU3RvcmFn
ZVJlZ2lzdHJ5JiwgUXVvdGFDaGVja0Z1bmN0aW9uJiYpOworICAgIH5JREJTdG9yYWdlTWFuYWdl
cigpIGZpbmFsIHsgfQorICAgIGJvb2wgaGFzRGF0YUluTWVtb3J5KCkgY29uc3Q7CisgICAgdm9p
ZCBjbG9zZURhdGFiYXNlc0ZvckRlbGV0aW9uKCk7CisgICAgdm9pZCBzdG9wRGF0YWJhc2VBY3Rp
dml0aWVzRm9yU3VzcGVuZCgpOworCisgICAgdm9pZCBvcGVuRGF0YWJhc2UoV2ViQ29yZTo6SURC
U2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnQmLCBjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0
RGF0YSYpOworICAgIHZvaWQgb3BlbkRCUmVxdWVzdENhbmNlbGxlZChjb25zdCBXZWJDb3JlOjpJ
REJSZXF1ZXN0RGF0YSYpOworICAgIHZvaWQgZGVsZXRlRGF0YWJhc2UoV2ViQ29yZTo6SURCU2Vy
dmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnQmLCBjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0
YSYpOworICAgIFZlY3RvcjxXZWJDb3JlOjpJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiBnZXRB
bGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMoKTsKKworcHJpdmF0ZToKKyAgICBXZWJDb3JlOjpJ
REJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlJiBnZXRPckNyZWF0ZVVuaXF1ZUlEQkRhdGFiYXNl
KGNvbnN0IFdlYkNvcmU6OklEQkRhdGFiYXNlSWRlbnRpZmllciYpOworCisgICAgLy8gV2ViQ29y
ZTo6VW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyCisgICAgdm9pZCByZWdpc3RlckNvbm5lY3Rpb24o
V2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mKSBmaW5hbDsK
KyAgICB2b2lkIHVucmVnaXN0ZXJDb25uZWN0aW9uKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVl
SURCRGF0YWJhc2VDb25uZWN0aW9uJikgZmluYWw7CisgICAgdm9pZCByZWdpc3RlclRyYW5zYWN0
aW9uKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYpIGZp
bmFsOworICAgIHZvaWQgdW5yZWdpc3RlclRyYW5zYWN0aW9uKFdlYkNvcmU6OklEQlNlcnZlcjo6
VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYpIGZpbmFsOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQkJhY2tpbmdTdG9yZT4gY3JlYXRlQmFja2luZ1N0b3Jl
KGNvbnN0IFdlYkNvcmU6OklEQkRhdGFiYXNlSWRlbnRpZmllciYpIGZpbmFsOworICAgIHZvaWQg
cmVxdWVzdFNwYWNlKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIHVpbnQ2NF90IHNpemUs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZpbmFsOworCisgICAgU3RyaW5nIG1f
cGF0aDsKKyAgICBJREJTdG9yYWdlUmVnaXN0cnkmIG1fcmVnaXN0cnk7CisgICAgUXVvdGFDaGVj
a0Z1bmN0aW9uIG1fcXVvdGFDaGVja0Z1bmN0aW9uOworICAgIEhhc2hNYXA8V2ViQ29yZTo6SURC
RGF0YWJhc2VJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SURCU2VydmVyOjpV
bmlxdWVJREJEYXRhYmFzZT4+IG1fZGF0YWJhc2VzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURC
U3RvcmFnZVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFn
ZS9JREJTdG9yYWdlUmVnaXN0cnkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNiMjllODFlN2ZkMTgyMjFhODEy
YTBlMTEyODcyZTQxNDkzNTg3YTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZVJlZ2lzdHJ5LmNwcApAQCAtMCwwICsxLDEw
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJREJTdG9y
YWdlUmVnaXN0cnkuaCIKKworI2luY2x1ZGUgPFdlYkNvcmUvVW5pcXVlSURCRGF0YWJhc2VDb25u
ZWN0aW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9u
Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitJREJTdG9yYWdlUmVnaXN0cnk6OklEQlN0b3Jh
Z2VSZWdpc3RyeSgpID0gZGVmYXVsdDsKKworV2ViQ29yZTo6SURCU2VydmVyOjpJREJDb25uZWN0
aW9uVG9DbGllbnQmIElEQlN0b3JhZ2VSZWdpc3RyeTo6Z2V0T3JDcmVhdGVDb25uZWN0aW9uVG9D
bGllbnQoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uLCBXZWJDb3JlOjpJREJD
b25uZWN0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIGF1dG8gYWRkUmVzdWx0ID0g
bV9jb25uZWN0aW9uc1RvQ2xpZW50LmFkZChpZGVudGlmaWVyLCBudWxscHRyKTsKKyAgICBpZiAo
YWRkUmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUg
PSBtYWtlVW5pcXVlPElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ+KGNvbm5lY3Rpb24sIGlk
ZW50aWZpZXIpOworCisgICAgQVNTRVJUKGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPmlwY0Nv
bm5lY3Rpb24oKSA9PSBjb25uZWN0aW9uKTsKKyAgICByZXR1cm4gYWRkUmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZS0+Y29ubmVjdGlvblRvQ2xpZW50KCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZVJlZ2lz
dHJ5OjpyZW1vdmVDb25uZWN0aW9uVG9DbGllbnQoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBj
b25uZWN0aW9uKQoreworICAgIGF1dG8gYWxsQ29ubmVjdGlvbnNUb0NsaWVudCA9IHN0ZDo6ZXhj
aGFuZ2UobV9jb25uZWN0aW9uc1RvQ2xpZW50LCB7IH0pOworICAgIGZvciAoYXV0byYgW2lkZW50
aWZpZXIsIGNvbm5lY3Rpb25Ub0NsaWVudF0gOiBhbGxDb25uZWN0aW9uc1RvQ2xpZW50KSB7Cisg
ICAgICAgIGlmIChjb25uZWN0aW9uVG9DbGllbnQtPmlwY0Nvbm5lY3Rpb24oKSAhPSBjb25uZWN0
aW9uKSB7CisgICAgICAgICAgICBtX2Nvbm5lY3Rpb25zVG9DbGllbnQuYWRkKGlkZW50aWZpZXIs
IFdURk1vdmUoY29ubmVjdGlvblRvQ2xpZW50KSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgfQorICAgICAgICBjb25uZWN0aW9uVG9DbGllbnQtPmNvbm5lY3Rpb25Ub0NsaWVudCgp
LmNvbm5lY3Rpb25Ub0NsaWVudENsb3NlZCgpOworICAgIH0KK30KKwordm9pZCBJREJTdG9yYWdl
UmVnaXN0cnk6OnJlZ2lzdGVyQ29ubmVjdGlvbihXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlE
QkRhdGFiYXNlQ29ubmVjdGlvbiYgY29ubmVjdGlvbikKK3sKKyAgICBhdXRvIGlkZW50aWZpZXIg
PSBjb25uZWN0aW9uLmlkZW50aWZpZXIoKTsKKyAgICBBU1NFUlQoIW1fY29ubmVjdGlvbnMuY29u
dGFpbnMoaWRlbnRpZmllcikpOworCisgICAgbV9jb25uZWN0aW9ucy5hZGQoaWRlbnRpZmllciwg
Y29ubmVjdGlvbik7Cit9CisKK3ZvaWQgSURCU3RvcmFnZVJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQ29u
bmVjdGlvbihXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYg
Y29ubmVjdGlvbikKK3sKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBjb25uZWN0aW9uLmlkZW50aWZp
ZXIoKTsKKyAgICBBU1NFUlQobV9jb25uZWN0aW9ucy5jb250YWlucyhpZGVudGlmaWVyKSk7CisK
KyAgICBtX2Nvbm5lY3Rpb25zLnJlbW92ZShpZGVudGlmaWVyKTsKK30KKwordm9pZCBJREJTdG9y
YWdlUmVnaXN0cnk6OnJlZ2lzdGVyVHJhbnNhY3Rpb24oV2ViQ29yZTo6SURCU2VydmVyOjpVbmlx
dWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKK3sKKyAgICBhdXRvIGlkZW50
aWZpZXIgPSB0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpOworICAgIEFTU0VSVCghbV90
cmFuc2FjdGlvbnMuY29udGFpbnMoaWRlbnRpZmllcikpOworCisgICAgbV90cmFuc2FjdGlvbnMu
YWRkKGlkZW50aWZpZXIsIHRyYW5zYWN0aW9uKTsKK30KKwordm9pZCBJREJTdG9yYWdlUmVnaXN0
cnk6OnVucmVnaXN0ZXJUcmFuc2FjdGlvbihXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRh
dGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQoreworICAgIGF1dG8gaWRlbnRpZmllciA9
IHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCk7CisgICAgQVNTRVJUKG1fdHJhbnNhY3Rp
b25zLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKKworICAgIG1fdHJhbnNhY3Rpb25zLnJlbW92ZShp
ZGVudGlmaWVyKTsKK30KKworV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNv
bm5lY3Rpb24qIElEQlN0b3JhZ2VSZWdpc3RyeTo6Z2V0Q29ubmVjdGlvbih1aW50NjRfdCBpZGVu
dGlmaWVyKQoreworICAgIHJldHVybiBtX2Nvbm5lY3Rpb25zLmdldChpZGVudGlmaWVyKS5nZXQo
KTsKK30KKworV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9u
KiBJREJTdG9yYWdlUmVnaXN0cnk6OmdldFRyYW5zYWN0aW9uKFdlYkNvcmU6OklEQlJlc291cmNl
SWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIHJldHVybiBtX3RyYW5zYWN0aW9ucy5nZXQo
aWRlbnRpZmllcikuZ2V0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZVJlZ2lz
dHJ5LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZVJl
Z2lzdHJ5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZDdmZWUwNWY0ZjUxZWFjMGY0MTgwNzU5MjlkYzQ3YTM3YWI3
ZjM0NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3Rv
cmFnZS9JREJTdG9yYWdlUmVnaXN0cnkuaApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxXZWJDb3JlL0lEQlJlc291cmNlSWRlbnRpZmllci5o
PgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVz
cGFjZSBJREJTZXJ2ZXIgeworY2xhc3MgVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uOworY2xh
c3MgVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjsKK30KK30KKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK2NsYXNzIElEQlN0b3JhZ2VSZWdpc3RyeSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CitwdWJsaWM6CisgICAgSURCU3RvcmFnZVJlZ2lzdHJ5KCk7CisgICAgV2ViQ29yZTo6
SURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnQmIGdldE9yQ3JlYXRlQ29ubmVjdGlvblRv
Q2xpZW50KElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIFdlYkNvcmU6OklEQkNvbm5lY3Rpb25J
ZGVudGlmaWVyKTsKKyAgICB2b2lkIHJlbW92ZUNvbm5lY3Rpb25Ub0NsaWVudChJUEM6OkNvbm5l
Y3Rpb246OlVuaXF1ZUlEKTsKKyAgICB2b2lkIHJlZ2lzdGVyQ29ubmVjdGlvbihXZWJDb3JlOjpJ
REJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYpOworICAgIHZvaWQgdW5yZWdp
c3RlckNvbm5lY3Rpb24oV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5l
Y3Rpb24mKTsKKyAgICBXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVj
dGlvbiogZ2V0Q29ubmVjdGlvbih1aW50NjRfdCBpZGVudGlmaWVyKTsKKyAgICB2b2lkIHJlZ2lz
dGVyVHJhbnNhY3Rpb24oV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5z
YWN0aW9uJik7CisgICAgdm9pZCB1bnJlZ2lzdGVyVHJhbnNhY3Rpb24oV2ViQ29yZTo6SURCU2Vy
dmVyOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJik7CisgICAgV2ViQ29yZTo6SURCU2Vy
dmVyOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uKiBnZXRUcmFuc2FjdGlvbihXZWJDb3Jl
OjpJREJSZXNvdXJjZUlkZW50aWZpZXIpOworCitwcml2YXRlOgorICAgIEhhc2hNYXA8V2ViQ29y
ZTo6SURCQ29ubmVjdGlvbklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxJREJTdG9yYWdlQ29u
bmVjdGlvblRvQ2xpZW50Pj4gbV9jb25uZWN0aW9uc1RvQ2xpZW50OworICAgIEhhc2hNYXA8dWlu
dDY0X3QsIFdlYWtQdHI8V2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5l
Y3Rpb24+PiBtX2Nvbm5lY3Rpb25zOworICAgIEhhc2hNYXA8V2ViQ29yZTo6SURCUmVzb3VyY2VJ
ZGVudGlmaWVyLCBXZWFrUHRyPFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VU
cmFuc2FjdGlvbj4+IG1fdHJhbnNhY3Rpb25zOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3
b3JrU3RvcmFnZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9y
YWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAKaW5kZXggOTMwMDllMjQ5ZWQxYTRjODk3Y2E5
MTkwYzNmMjRkNWEzYzQ1NDg1YS4uODgwZDUxZGJiZjI2MGMyYzIwMzA3YmM1OWE3YmYwNzA4Njk1
OGY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05l
dHdvcmtTdG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAKQEAgLTI2LDE4ICsyNiwyNSBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtTdG9yYWdlTWFuYWdlci5oIgog
CisjaW5jbHVkZSAiQ2FjaGVTdG9yYWdlRW5naW5lLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbVN0
b3JhZ2VIYW5kbGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdl
ci5oIgorI2luY2x1ZGUgIklEQlN0b3JhZ2VNYW5hZ2VyLmgiCisjaW5jbHVkZSAiSURCU3RvcmFn
ZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiTG9jYWxTdG9yYWdlTWFuYWdlci5oIgogI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKICNp
bmNsdWRlICJOZXR3b3JrU3RvcmFnZU1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk9yaWdp
blN0b3JhZ2VNYW5hZ2VyLmgiCisjaW5jbHVkZSAiUXVvdGFNYW5hZ2VyLmgiCiAjaW5jbHVkZSAi
U2Vzc2lvblN0b3JhZ2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFyZWFCYXNlLmgiCiAj
aW5jbHVkZSAiU3RvcmFnZUFyZWFNYXBNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVh
UmVnaXN0cnkuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVR5cGUuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVW5pcXVlSURCRGF0
YWJhc2VDb25uZWN0aW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VbmlxdWVJREJEYXRhYmFzZVRy
YW5zYWN0aW9uLmg+CiAjaW5jbHVkZSA8cGFsL2NyeXB0by9DcnlwdG9EaWdlc3QuaD4KICNpbmNs
dWRlIDx3dGYvU2NvcGUuaD4KICNpbmNsdWRlIDx3dGYvU3VzcGVuZGFibGVXb3JrUXVldWUuaD4K
QEAgLTEwMCwyMiArMTA3LDI4IEBAIHN0YXRpYyB2b2lkIGRlbGV0ZU9yaWdpbkZpbGVJZk5lY2Vz
c2FyeShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVG
aWxlKGZpbGVQYXRoKTsKIH0KIAotUmVmPE5ldHdvcmtTdG9yYWdlTWFuYWdlcj4gTmV0d29ya1N0
b3JhZ2VNYW5hZ2VyOjpjcmVhdGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJp
bmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCkKK1JlZjxOZXR3
b3JrU3RvcmFnZU1hbmFnZXI+IE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uLCBj
b25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCwg
Y29uc3QgU3RyaW5nJiBjdXN0b21JREJTdG9yYWdlUGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21D
YWNoZVN0b3JhZ2VQYXRoLCB1aW50NjRfdCBkZWZhdWx0T3JpZ2luUXVvdGEsIHVpbnQ2NF90IGRl
ZmF1bHRUaGlyZFBhcnR5T3JpZ2luUXVvdGEpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyKHNlc3Npb25JRCwgcGF0aCwgY3VzdG9tTG9jYWxTdG9yYWdl
UGF0aCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5ldHdvcmtTdG9yYWdlTWFuYWdlcihz
ZXNzaW9uSUQsIGNvbm5lY3Rpb24sIHBhdGgsIGN1c3RvbUxvY2FsU3RvcmFnZVBhdGgsIGN1c3Rv
bUlEQlN0b3JhZ2VQYXRoLCBjdXN0b21DYWNoZVN0b3JhZ2VQYXRoLCBkZWZhdWx0T3JpZ2luUXVv
dGEsIGRlZmF1bHRUaGlyZFBhcnR5T3JpZ2luUXVvdGEpKTsKIH0KIAotTmV0d29ya1N0b3JhZ2VN
YW5hZ2VyOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBj
b25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCkK
K05ldHdvcmtTdG9yYWdlTWFuYWdlcjo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uLCBjb25z
dCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCwgY29u
c3QgU3RyaW5nJiBjdXN0b21JREJTdG9yYWdlUGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21DYWNo
ZVN0b3JhZ2VQYXRoLCB1aW50NjRfdCBkZWZhdWx0T3JpZ2luUXVvdGEsIHVpbnQ2NF90IGRlZmF1
bHRUaGlyZFBhcnR5T3JpZ2luUXVvdGEpCiAgICAgOiBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCiAg
ICAgLCBtX3F1ZXVlKFN1c3BlbmRhYmxlV29ya1F1ZXVlOjpjcmVhdGUoImNvbS5hcHBsZS5XZWJL
aXQuU3RvcmFnZSIpKQorICAgICwgbV9kZWZhdWx0T3JpZ2luUXVvdGEoZGVmYXVsdE9yaWdpblF1
b3RhKQorICAgICwgbV9kZWZhdWx0VGhpcmRQYXJ0eU9yaWdpblF1b3RhKGRlZmF1bHRUaGlyZFBh
cnR5T3JpZ2luUXVvdGEpCisgICAgLCBtX3BhcmVudENvbm5lY3Rpb24oY29ubmVjdGlvbikKIHsK
ICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2go
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBwYXRoID0gcGF0aC5pc29sYXRl
ZENvcHkoKSwgY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCA9IGNyb3NzVGhyZWFkQ29weShjdXN0b21M
b2NhbFN0b3JhZ2VQYXRoKV0oKSBtdXRhYmxlIHsKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHBhdGggPSBwYXRoLmlzb2xhdGVkQ29w
eSgpLCBjdXN0b21Mb2NhbFN0b3JhZ2VQYXRoID0gY3Jvc3NUaHJlYWRDb3B5KGN1c3RvbUxvY2Fs
U3RvcmFnZVBhdGgpLCBjdXN0b21JREJTdG9yYWdlUGF0aCA9IGNyb3NzVGhyZWFkQ29weShjdXN0
b21JREJTdG9yYWdlUGF0aCksIGN1c3RvbUNhY2hlU3RvcmFnZVBhdGggPSBjcm9zc1RocmVhZENv
cHkoY3VzdG9tQ2FjaGVTdG9yYWdlUGF0aCldKCkgbXV0YWJsZSB7CiAgICAgICAgIG1fZmlsZVN5
c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeSA9IG1ha2VVbmlxdWU8RmlsZVN5c3RlbVN0b3JhZ2VI
YW5kbGVSZWdpc3RyeT4oKTsKICAgICAgICAgbV9zdG9yYWdlQXJlYVJlZ2lzdHJ5ID0gbWFrZVVu
aXF1ZTxTdG9yYWdlQXJlYVJlZ2lzdHJ5PigpOworICAgICAgICBtX2lkYlN0b3JhZ2VSZWdpc3Ry
eSA9IG1ha2VVbmlxdWU8SURCU3RvcmFnZVJlZ2lzdHJ5PigpOwogICAgICAgICBtX3BhdGggPSBw
YXRoOwogICAgICAgICBtX2N1c3RvbUxvY2FsU3RvcmFnZVBhdGggPSBjdXN0b21Mb2NhbFN0b3Jh
Z2VQYXRoOworICAgICAgICBtX2N1c3RvbUlEQlN0b3JhZ2VQYXRoID0gY3VzdG9tSURCU3RvcmFn
ZVBhdGg7CisgICAgICAgIG1fY3VzdG9tQ2FjaGVTdG9yYWdlUGF0aCA9IGN1c3RvbUNhY2hlU3Rv
cmFnZVBhdGg7CiAgICAgICAgIGlmICghbV9wYXRoLmlzRW1wdHkoKSkgewogICAgICAgICAgICAg
YXV0byBzYWx0UGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3Bh
dGgsICJzYWx0Iik7CiAgICAgICAgICAgICBtX3NhbHQgPSB2YWx1ZU9yRGVmYXVsdChGaWxlU3lz
dGVtOjpyZWFkT3JNYWtlU2FsdChzYWx0UGF0aCkpOwpAQCAtMTMxLDcgKzE0NCwxMCBAQCBOZXR3
b3JrU3RvcmFnZU1hbmFnZXI6On5OZXR3b3JrU3RvcmFnZU1hbmFnZXIoKQogCiBib29sIE5ldHdv
cmtTdG9yYWdlTWFuYWdlcjo6Y2FuSGFuZGxlVHlwZXMoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlw
ZT4gdHlwZXMpCiB7Ci0gICAgcmV0dXJuIHR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6
TG9jYWxTdG9yYWdlKSB8fCB0eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlNlc3Npb25T
dG9yYWdlKSB8fCB0eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkZpbGVTeXN0ZW0pOwor
ICAgIHJldHVybiB0eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkxvY2FsU3RvcmFnZSkK
KyAgICAgICAgfHwgdHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpTZXNzaW9uU3RvcmFn
ZSkKKyAgICAgICAgfHwgdHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpGaWxlU3lzdGVt
KQorICAgICAgICB8fCB0eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRh
dGFiYXNlcyk7CiB9CiAKIHZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjbG9zZSgpCkBAIC0x
NzIsNiArMTg4LDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnN0b3BSZWNlaXZpbmdN
ZXNzYWdlRnJvbUNvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uJgogICAgIG1fcXVldWUtPmRpc3Bh
dGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY29ubmVjdGlvbiA9IGNv
bm5lY3Rpb24udW5pcXVlSUQoKV0oKSBtdXRhYmxlIHsKICAgICAgICAgZm9yIChhdXRvJiBvcmln
aW5TdG9yYWdlTWFuYWdlciA6IG1fbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcnMudmFsdWVzKCkp
CiAgICAgICAgICAgICBvcmlnaW5TdG9yYWdlTWFuYWdlci0+Y29ubmVjdGlvbkNsb3NlZChjb25u
ZWN0aW9uKTsKKyAgICAgICAgbV9pZGJTdG9yYWdlUmVnaXN0cnktPnJlbW92ZUNvbm5lY3Rpb25U
b0NsaWVudChjb25uZWN0aW9uKTsKIAogICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2go
W3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpXSB7IH0pOwogICAgIH0pOwpA
QCAtMjA5LDkgKzIyNiwxNiBAQCBPcmlnaW5TdG9yYWdlTWFuYWdlciYgTmV0d29ya1N0b3JhZ2VN
YW5hZ2VyOjpsb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2VyKGNvbnN0IFdlYgogICAgIEFTU0VSVCgh
UnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgcmV0dXJuICptX2xvY2FsT3JpZ2luU3RvcmFnZU1h
bmFnZXJzLmVuc3VyZShvcmlnaW4sIFsmXSB7CisgICAgICAgIHVpbnQ2NF90IHF1b3RhID0gb3Jp
Z2luLnRvcE9yaWdpbiA9PSBvcmlnaW4uY2xpZW50T3JpZ2luID8gbV9kZWZhdWx0T3JpZ2luUXVv
dGEgOiBtX2RlZmF1bHRUaGlyZFBhcnR5T3JpZ2luUXVvdGE7CisgICAgICAgIFF1b3RhTWFuYWdl
cjo6SW5jcmVhc2VRdW90YUZ1bmN0aW9uIGluY3JlYXNlUXVvdGFGdW5jdGlvbiA9IFtzZXNzaW9u
SUQgPSBtX3Nlc3Npb25JRCwgb3JpZ2luLCBjb25uZWN0aW9uID0gbV9wYXJlbnRDb25uZWN0aW9u
XSAoYXV0byBpZGVudGlmaWVyLCBhdXRvIGN1cnJlbnRRdW90YSwgYXV0byBjdXJyZW50VXNhZ2Us
IGF1dG8gcmVxdWVzdGVkSW5jcmVhc2UpIG11dGFibGUgeworICAgICAgICAgICAgSVBDOjpDb25u
ZWN0aW9uOjpzZW5kKGNvbm5lY3Rpb24sIE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpJ
bmNyZWFzZVF1b3RhKHNlc3Npb25JRCwgb3JpZ2luLCBpZGVudGlmaWVyLCBjdXJyZW50UXVvdGEs
IGN1cnJlbnRVc2FnZSwgcmVxdWVzdGVkSW5jcmVhc2UpLCAwKTsKKyAgICAgICAgfTsKICAgICAg
ICAgYXV0byBvcmlnaW5EaXJlY3RvcnkgPSBvcmlnaW5EaXJlY3RvcnlQYXRoKG1fcGF0aCwgb3Jp
Z2luLCBtX3NhbHQpOwogICAgICAgICB3cml0ZU9yaWdpblRvRmlsZUlmTmVjZXNzYXJ5KG9yaWdp
bkZpbGVQYXRoKG9yaWdpbkRpcmVjdG9yeSksIG9yaWdpbik7Ci0gICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPE9yaWdpblN0b3JhZ2VNYW5hZ2VyPihXVEZNb3ZlKG9yaWdpbkRpcmVjdG9yeSksIExv
Y2FsU3RvcmFnZU1hbmFnZXI6OmxvY2FsU3RvcmFnZUZpbGVQYXRoKG1fY3VzdG9tTG9jYWxTdG9y
YWdlUGF0aCwgb3JpZ2luKSk7CisgICAgICAgIGF1dG8gbG9jYWxTdG9yYWdlUGF0aCA9IExvY2Fs
U3RvcmFnZU1hbmFnZXI6OmxvY2FsU3RvcmFnZUZpbGVQYXRoKG1fY3VzdG9tTG9jYWxTdG9yYWdl
UGF0aCwgb3JpZ2luKTsKKyAgICAgICAgYXV0byBpZGJTdG9yYWdlUGF0aCA9IElEQlN0b3JhZ2VN
YW5hZ2VyOjppZGJTdG9yYWdlT3JpZ2luRGlyZWN0b3J5KG1fY3VzdG9tSURCU3RvcmFnZVBhdGgs
IG9yaWdpbik7CisgICAgICAgIGF1dG8gY2FjaGVTdG9yYWdlUGF0aCA9IENhY2hlU3RvcmFnZTo6
RW5naW5lOjpzdG9yYWdlUGF0aChtX2N1c3RvbUNhY2hlU3RvcmFnZVBhdGgsIG9yaWdpbik7Cisg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPE9yaWdpblN0b3JhZ2VNYW5hZ2VyPihxdW90YSwgV1RG
TW92ZShpbmNyZWFzZVF1b3RhRnVuY3Rpb24pLCBXVEZNb3ZlKG9yaWdpbkRpcmVjdG9yeSksIFdU
Rk1vdmUobG9jYWxTdG9yYWdlUGF0aCksIFdURk1vdmUoaWRiU3RvcmFnZVBhdGgpLCBXVEZNb3Zl
KGNhY2hlU3RvcmFnZVBhdGgpKTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiB9CiAKQEAgLTI3
MSw2ICsyOTUsMTYgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNsZWFyU3RvcmFnZUZv
clRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGMKICAgICB9KTsKIH0KIAordm9p
ZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmRpZEluY3JlYXNlUXVvdGEoY29uc3QgV2ViQ29yZTo6
Q2xpZW50T3JpZ2luJiBvcmlnaW4sIFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllciBpZGVu
dGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBuZXdRdW90YSkKK3sKKyAgICBBU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBvcmlnaW4gPSBjcm9zc1RocmVhZENvcHkob3JpZ2lu
KSwgaWRlbnRpZmllciwgbmV3UXVvdGFdKCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChhdXRvIG1h
bmFnZXIgPSBtX2xvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXJzLmdldChvcmlnaW4pKQorICAgICAg
ICAgICAgbWFuYWdlci0+cXVvdGFNYW5hZ2VyKCkuZGlkSW5jcmVhc2VRdW90YShpZGVudGlmaWVy
LCBuZXdRdW90YSk7CisgICAgfSk7Cit9CisKIHZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpm
aWxlU3lzdGVtR2V0RGlyZWN0b3J5KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3Qg
V2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhw
ZWN0ZWQ8V2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIEZpbGVTeXN0ZW1TdG9y
YWdlRXJyb3I+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6
OmlzTWFpbigpKTsKQEAgLTQ0MSw2ICs0NzUsOSBAQCBIYXNoU2V0PFdlYkNvcmU6OkNsaWVudE9y
aWdpbj4gTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpnZXRBbGxPcmlnaW5zKCkKICAgICBmb3IgKGF1
dG8mIG9yaWdpbiA6IExvY2FsU3RvcmFnZU1hbmFnZXI6Om9yaWdpbnNPZkxvY2FsU3RvcmFnZURh
dGEobV9jdXN0b21Mb2NhbFN0b3JhZ2VQYXRoKSkKICAgICAgICAgYWxsT3JpZ2lucy5hZGQoV2Vi
Q29yZTo6Q2xpZW50T3JpZ2luIHsgb3JpZ2luLCBvcmlnaW4gfSk7CiAKKyAgICBmb3IgKGF1dG8m
IG9yaWdpbiA6IElEQlN0b3JhZ2VNYW5hZ2VyOjpvcmlnaW5zT2ZJREJTdG9yYWdlRGF0YShtX2N1
c3RvbUlEQlN0b3JhZ2VQYXRoKSkKKyAgICAgICAgYWxsT3JpZ2lucy5hZGQob3JpZ2luKTsKKwog
ICAgIHJldHVybiBhbGxPcmlnaW5zOwogfQogCkBAIC01NjgsMTIgKzYwNSwxMiBAQCB2b2lkIE5l
dHdvcmtTdG9yYWdlTWFuYWdlcjo6bW92ZURhdGEoY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhJiBzb3VyY2UsCiAgICAgICAgIGF1dG8gdGFyZ2V0T3JpZ2luID0gV2ViQ29yZTo6Q2xp
ZW50T3JpZ2luIHsgdGFyZ2V0LCB0YXJnZXQgfTsKICAgICAgICAgCiAgICAgICAgIC8vIENsZWFy
IGV4aXN0aW5nIGRhdGEgb2YgdGFyZ2V0IG9yaWdpbi4KLSAgICAgICAgT3B0aW9uU2V0PFdlYnNp
dGVEYXRhVHlwZT4gdHlwZXMgPSB7IFdlYnNpdGVEYXRhVHlwZTo6RmlsZVN5c3RlbSwgV2Vic2l0
ZURhdGFUeXBlOjpMb2NhbFN0b3JhZ2UsIFdlYnNpdGVEYXRhVHlwZTo6U2Vzc2lvblN0b3JhZ2Ug
IH07CisgICAgICAgIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHR5cGVzID0geyBXZWJzaXRl
RGF0YVR5cGU6OkZpbGVTeXN0ZW0sIFdlYnNpdGVEYXRhVHlwZTo6TG9jYWxTdG9yYWdlLCBXZWJz
aXRlRGF0YVR5cGU6OlNlc3Npb25TdG9yYWdlLCBXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRh
dGFiYXNlcyAgfTsKICAgICAgICAgbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcih0YXJnZXRPcmln
aW4pLmRlbGV0ZURhdGEodHlwZXMsIC1XYWxsVGltZTo6aW5maW5pdHkoKSk7CiAgICAgICAgIHJl
bW92ZU9yaWdpblN0b3JhZ2VNYW5hZ2VySWZQb3NzaWJsZSh0YXJnZXRPcmlnaW4pOwogCiAgICAg
ICAgIC8vIE1vdmUgZGF0YSBmcm9tIHNvdXJjZSBvcmlnaW4gdG8gdGFyZ2V0IG9yaWdpbi4KLSAg
ICAgICAgbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcihzb3VyY2VPcmlnaW4pLm1vdmVEYXRhKG9y
aWdpbkRpcmVjdG9yeVBhdGgobV9wYXRoLCB0YXJnZXRPcmlnaW4sIG1fc2FsdCksIExvY2FsU3Rv
cmFnZU1hbmFnZXI6OmxvY2FsU3RvcmFnZUZpbGVQYXRoKG1fY3VzdG9tTG9jYWxTdG9yYWdlUGF0
aCwgdGFyZ2V0T3JpZ2luKSk7CisgICAgICAgIGxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIoc291
cmNlT3JpZ2luKS5tb3ZlRGF0YShvcmlnaW5EaXJlY3RvcnlQYXRoKG1fcGF0aCwgdGFyZ2V0T3Jp
Z2luLCBtX3NhbHQpLCBMb2NhbFN0b3JhZ2VNYW5hZ2VyOjpsb2NhbFN0b3JhZ2VGaWxlUGF0aCht
X2N1c3RvbUxvY2FsU3RvcmFnZVBhdGgsIHRhcmdldE9yaWdpbiksIElEQlN0b3JhZ2VNYW5hZ2Vy
OjppZGJTdG9yYWdlT3JpZ2luRGlyZWN0b3J5KG1fY3VzdG9tSURCU3RvcmFnZVBhdGgsIHRhcmdl
dE9yaWdpbikpOwogICAgICAgICByZW1vdmVPcmlnaW5TdG9yYWdlTWFuYWdlcklmUG9zc2libGUo
c291cmNlT3JpZ2luKTsKIAogICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOwpAQCAtNTg4LDYgKzYyNSw4IEBAIHZvaWQgTmV0d29ya1N0
b3JhZ2VNYW5hZ2VyOjpzdXNwZW5kKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlCiAgICAgICAgIGZvciAoYXV0byYgbWFuYWdlciA6IG1fbG9jYWxPcmlnaW5TdG9y
YWdlTWFuYWdlcnMudmFsdWVzKCkpIHsKICAgICAgICAgICAgIGlmIChhdXRvIGxvY2FsU3RvcmFn
ZU1hbmFnZXIgPSBtYW5hZ2VyLT5leGlzdGluZ0xvY2FsU3RvcmFnZU1hbmFnZXIoKSkKICAgICAg
ICAgICAgICAgICBsb2NhbFN0b3JhZ2VNYW5hZ2VyLT5zeW5jTG9jYWxTdG9yYWdlKCk7CisgICAg
ICAgICAgICBpZiAoYXV0byBpZGJTdG9yYWdlTWFuYWdlciA9IG1hbmFnZXItPmV4aXN0aW5nSURC
U3RvcmFnZU1hbmFnZXIoKSkKKyAgICAgICAgICAgICAgICBpZGJTdG9yYWdlTWFuYWdlci0+c3Rv
cERhdGFiYXNlQWN0aXZpdGllc0ZvclN1c3BlbmQoKTsKICAgICAgICAgfQogICAgIH0sIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KQEAgLTYyNSw2ICs2NjQsNTIgQEAgdm9pZCBOZXR3
b3JrU3RvcmFnZU1hbmFnZXI6OnN5bmNMb2NhbFN0b3JhZ2UoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXQKICAgICB9KTsKIH0KIAordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6
OnJlZ2lzdGVyVGVtcG9yYXJ5QmxvYkZpbGVQYXRocyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlUGF0aHMpCit7CisgICAgQVNTRVJUKFJ1bkxv
b3A6OmlzTWFpbigpKTsKKworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gUmVmIHsgKnRoaXMgfSwgY29ubmVjdGlvbklEID0gY29ubmVjdGlvbi51bmlxdWVJRCgp
LCBmaWxlUGF0aHMgPSBjcm9zc1RocmVhZENvcHkoZmlsZVBhdGhzKV0geworICAgICAgICBhdXRv
JiB0ZW1wb3JhcnlCbG9iUGF0aHMgPSBtX3RlbXBvcmFyeUJsb2JQYXRoc0J5Q29ubmVjdGlvbi5l
bnN1cmUoY29ubmVjdGlvbklELCBbXSB7CisgICAgICAgICAgICByZXR1cm4gSGFzaFNldDxTdHJp
bmc+IHsgfTsKKyAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOworICAgICAgICB0ZW1wb3JhcnlC
bG9iUGF0aHMuYWRkKGZpbGVQYXRocy5iZWdpbigpLCBmaWxlUGF0aHMuZW5kKCkpOworICAgIH0p
OworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6cmVxdWVzdFNwYWNlKGNvbnN0IFdl
YkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCB1aW50NjRfdCBzaXplLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIEFTU0VSVChSdW5M
b29wOjppc01haW4oKSk7CisKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IFJlZiB7ICp0aGlzIH0sIG9yaWdpbiA9IGNyb3NzVGhyZWFkQ29weShvcmlnaW4pLCBz
aXplLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11
dGFibGUgeworICAgICAgICBsb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2VyKG9yaWdpbikucXVvdGFN
YW5hZ2VyKCkucmVxdWVzdFNwYWNlKHNpemUsIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXShhdXRvIGRlY2lzaW9uKSBtdXRhYmxlIHsKKyAgICAgICAgICAg
IFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSwgZGVjaXNpb25dKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoZGVjaXNpb24gPT0gUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbjo6R3Jh
bnQpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0pOworfQorCit2b2lkIE5l
dHdvcmtTdG9yYWdlTWFuYWdlcjo6cmVzZXRRdW90YUZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIEFTU0VSVChSdW5Mb29wOjpp
c01haW4oKSk7CisKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IFJlZiB7ICp0aGlzIH0sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIGZvciAoYXV0byYgbWFuYWdlciA6IG1fbG9jYWxP
cmlnaW5TdG9yYWdlTWFuYWdlcnMudmFsdWVzKCkpCisgICAgICAgICAgICBtYW5hZ2VyLT5xdW90
YU1hbmFnZXIoKS5yZXNldFF1b3RhRm9yVGVzdGluZygpOworICAgICAgICBSdW5Mb29wOjptYWlu
KCkuZGlzcGF0Y2goV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIH0pOworfQorCit2
b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6cmVzZXRRdW90YVVwZGF0ZWRCYXNlZE9uVXNhZ2VG
b3JUZXN0aW5nKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luKQoreworICAgIEFT
U0VSVChSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIG9yaWdpbiA9IGNyb3NzVGhyZWFkQ29weShv
cmlnaW4pXSgpIG11dGFibGUgeworICAgICAgICBpZiAoYXV0byBtYW5hZ2VyID0gbV9sb2NhbE9y
aWdpblN0b3JhZ2VNYW5hZ2Vycy5nZXQob3JpZ2luKSkKKyAgICAgICAgICAgIG1hbmFnZXItPnF1
b3RhTWFuYWdlcigpLnJlc2V0UXVvdGFVcGRhdGVkQmFzZWRPblVzYWdlRm9yVGVzdGluZygpOwor
ICAgIH0pOworfQorCiB2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y29ubmVjdFRvTG9jYWxT
dG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFN0b3JhZ2VOYW1lc3BhY2VJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiB0b3BPcmlnaW4sIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFyZWFJZGVudGlmaWVyKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKQEAgLTcxMyw1ICs3OTgs
MTk1IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjbGVhcihJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIFN0b3JhZ2VBcmVhSWRlbnRpCiAgICAgY29ubmVjdGlvbi5zZW5kKE1lc3Nh
Z2VzOjpTdG9yYWdlQXJlYU1hcDo6RGlkQ2xlYXIoc3RvcmFnZU1hcFNlZWQpLCBpZGVudGlmaWVy
KTsKIH0KIAordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Om9wZW5EYXRhYmFzZShJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1
ZXN0RGF0YSkKK3sKKyAgICBhdXRvJiBjb25uZWN0aW9uVG9DbGllbnQgPSBtX2lkYlN0b3JhZ2VS
ZWdpc3RyeS0+Z2V0T3JDcmVhdGVDb25uZWN0aW9uVG9DbGllbnQoY29ubmVjdGlvbi51bmlxdWVJ
RCgpLCByZXF1ZXN0RGF0YS5yZXF1ZXN0SWRlbnRpZmllcigpLmNvbm5lY3Rpb25JZGVudGlmaWVy
KCkpOworICAgIGxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIocmVxdWVzdERhdGEuZGF0YWJhc2VJ
ZGVudGlmaWVyKCkub3JpZ2luKCkpLmlkYlN0b3JhZ2VNYW5hZ2VyKCptX2lkYlN0b3JhZ2VSZWdp
c3RyeSkub3BlbkRhdGFiYXNlKGNvbm5lY3Rpb25Ub0NsaWVudCwgcmVxdWVzdERhdGEpOworfQor
Cit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6b3BlbkRCUmVxdWVzdENhbmNlbGxlZChjb25z
dCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEpCit7CisgICAgbG9jYWxPcmln
aW5TdG9yYWdlTWFuYWdlcihyZXF1ZXN0RGF0YS5kYXRhYmFzZUlkZW50aWZpZXIoKS5vcmlnaW4o
KSkuaWRiU3RvcmFnZU1hbmFnZXIoKm1faWRiU3RvcmFnZVJlZ2lzdHJ5KS5vcGVuREJSZXF1ZXN0
Q2FuY2VsbGVkKHJlcXVlc3REYXRhKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6
OmRlbGV0ZURhdGFiYXNlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgV2ViQ29y
ZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhKQoreworICAgIGF1dG8mIGNvbm5lY3Rpb25U
b0NsaWVudCA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT5nZXRPckNyZWF0ZUNvbm5lY3Rpb25Ub0Ns
aWVudChjb25uZWN0aW9uLnVuaXF1ZUlEKCksIHJlcXVlc3REYXRhLnJlcXVlc3RJZGVudGlmaWVy
KCkuY29ubmVjdGlvbklkZW50aWZpZXIoKSk7CisgICAgbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdl
cihyZXF1ZXN0RGF0YS5kYXRhYmFzZUlkZW50aWZpZXIoKS5vcmlnaW4oKSkuaWRiU3RvcmFnZU1h
bmFnZXIoKm1faWRiU3RvcmFnZVJlZ2lzdHJ5KS5kZWxldGVEYXRhYmFzZShjb25uZWN0aW9uVG9D
bGllbnQsIHJlcXVlc3REYXRhKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmVz
dGFibGlzaFRyYW5zYWN0aW9uKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIs
IGNvbnN0IFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uSW5mbyYgdHJhbnNhY3Rpb25JbmZvKQorewor
ICAgIGlmIChhdXRvIGNvbm5lY3Rpb24gPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+Z2V0Q29ubmVj
dGlvbihkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKSkKKyAgICAgICAgY29ubmVjdGlvbi0+
ZXN0YWJsaXNoVHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JbmZvKTsKK30KKwordm9pZCBOZXR3b3Jr
U3RvcmFnZU1hbmFnZXI6OmRhdGFiYXNlQ29ubmVjdGlvblBlbmRpbmdDbG9zZSh1aW50NjRfdCBk
YXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKQoreworICAgIGlmIChhdXRvIGNvbm5lY3Rpb24g
PSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+Z2V0Q29ubmVjdGlvbihkYXRhYmFzZUNvbm5lY3Rpb25J
ZGVudGlmaWVyKSkKKyAgICAgICAgY29ubmVjdGlvbi0+Y29ubmVjdGlvblBlbmRpbmdDbG9zZUZy
b21DbGllbnQoKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmRhdGFiYXNlQ29u
bmVjdGlvbkNsb3NlZCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKQorewor
ICAgIGlmIChhdXRvIGNvbm5lY3Rpb24gPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+Z2V0Q29ubmVj
dGlvbihkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKSkKKyAgICAgICAgY29ubmVjdGlvbi0+
Y29ubmVjdGlvbkNsb3NlZEZyb21DbGllbnQoKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1h
bmFnZXI6OmFib3J0T3BlbkFuZFVwZ3JhZGVOZWVkZWQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0
aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFu
c2FjdGlvbklkZW50aWZpZXIpCit7CisgICAgaWYgKGF1dG8gdHJhbnNhY3Rpb24gPSBtX2lkYlN0
b3JhZ2VSZWdpc3RyeS0+Z2V0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZGVudGlmaWVyKSkKKyAg
ICAgICAgdHJhbnNhY3Rpb24tPmFib3J0V2l0aG91dENhbGxiYWNrKCk7CisKKyAgICBpZiAoYXV0
byBjb25uZWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPmdldENvbm5lY3Rpb24oZGF0YWJh
c2VDb25uZWN0aW9uSWRlbnRpZmllcikpCisgICAgICAgIGNvbm5lY3Rpb24tPmNvbm5lY3Rpb25D
bG9zZWRGcm9tQ2xpZW50KCk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkaWRG
aXJlVmVyc2lvbkNoYW5nZUV2ZW50KHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZp
ZXIsIGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZp
ZXIsIGNvbnN0IFdlYkNvcmU6OkluZGV4ZWREQjo6Q29ubmVjdGlvbkNsb3NlZE9uQmVoYWxmT2ZT
ZXJ2ZXIgY29ubmVjdGlvbkNsb3NlZCkKK3sKKyAgICBpZiAoYXV0byBjb25uZWN0aW9uID0gbV9p
ZGJTdG9yYWdlUmVnaXN0cnktPmdldENvbm5lY3Rpb24oZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRp
ZmllcikpCisgICAgICAgIGNvbm5lY3Rpb24tPmRpZEZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQocmVx
dWVzdElkZW50aWZpZXIsIGNvbm5lY3Rpb25DbG9zZWQpOworfQorCit2b2lkIE5ldHdvcmtTdG9y
YWdlTWFuYWdlcjo6YWJvcnRUcmFuc2FjdGlvbihjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlk
ZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcikKK3sKKyAgICBpZiAoYXV0byB0cmFuc2Fj
dGlvbiA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT5nZXRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbklk
ZW50aWZpZXIpKQorICAgICAgICB0cmFuc2FjdGlvbi0+YWJvcnQoKTsKK30KKwordm9pZCBOZXR3
b3JrU3RvcmFnZU1hbmFnZXI6OmNvbW1pdFRyYW5zYWN0aW9uKGNvbnN0IFdlYkNvcmU6OklEQlJl
c291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBwZW5kaW5n
UmVxdWVzdENvdW50KQoreworICAgIGlmIChhdXRvIHRyYW5zYWN0aW9uID0gbV9pZGJTdG9yYWdl
UmVnaXN0cnktPmdldFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllcikpCisgICAgICAg
IHRyYW5zYWN0aW9uLT5jb21taXQocGVuZGluZ1JlcXVlc3RDb3VudCk7Cit9CisKK3ZvaWQgTmV0
d29ya1N0b3JhZ2VNYW5hZ2VyOjpkaWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2VUcmFuc2Fj
dGlvbih1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3Jl
OjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcikKK3sKKyAgICBp
ZiAoYXV0byBjb25uZWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPmdldENvbm5lY3Rpb24o
ZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcikpCisgICAgICAgIGNvbm5lY3Rpb24tPmRpZEZp
bmlzaEhhbmRsaW5nVmVyc2lvbkNoYW5nZSh0cmFuc2FjdGlvbklkZW50aWZpZXIpOworfQorCit2
b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29y
ZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBXZWJDb3JlOjpJREJPYmplY3RT
dG9yZUluZm8mIG9iamVjdFN0b3JlSW5mbykKK3sKKyAgICBpZiAoYXV0byB0cmFuc2FjdGlvbiA9
IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT5nZXRUcmFuc2FjdGlvbihyZXF1ZXN0RGF0YS50cmFuc2Fj
dGlvbklkZW50aWZpZXIoKSkpIHsKKyAgICAgICAgQVNTRVJUKHRyYW5zYWN0aW9uLT5pc1ZlcnNp
b25DaGFuZ2UoKSk7CisgICAgICAgIHRyYW5zYWN0aW9uLT5jcmVhdGVPYmplY3RTdG9yZShyZXF1
ZXN0RGF0YSwgb2JqZWN0U3RvcmVJbmZvKTsKKyAgICB9Cit9CisKK3ZvaWQgTmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyOjpkZWxldGVPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0
YSYgcmVxdWVzdERhdGEsIGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lKQoreworICAgIGlm
IChhdXRvIHRyYW5zYWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPmdldFRyYW5zYWN0aW9u
KHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpKSkgeworICAgICAgICBBU1NFUlQo
dHJhbnNhY3Rpb24tPmlzVmVyc2lvbkNoYW5nZSgpKTsKKyAgICAgICAgdHJhbnNhY3Rpb24tPmRl
bGV0ZU9iamVjdFN0b3JlKHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZU5hbWUpOworICAgIH0KK30K
Kwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnJlbmFtZU9iamVjdFN0b3JlKGNvbnN0IFdl
YkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgdWludDY0X3Qgb2JqZWN0U3RvcmVJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUpCit7CisgICAgaWYgKGF1dG8gdHJhbnNh
Y3Rpb24gPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+Z2V0VHJhbnNhY3Rpb24ocmVxdWVzdERhdGEu
dHJhbnNhY3Rpb25JZGVudGlmaWVyKCkpKSB7CisgICAgICAgIEFTU0VSVCh0cmFuc2FjdGlvbi0+
aXNWZXJzaW9uQ2hhbmdlKCkpOworICAgICAgICB0cmFuc2FjdGlvbi0+cmVuYW1lT2JqZWN0U3Rv
cmUocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmllciwgbmV3TmFtZSk7CisgICAgfQor
fQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y2xlYXJPYmplY3RTdG9yZShjb25zdCBX
ZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIHVpbnQ2NF90IG9iamVjdFN0b3Jl
SWRlbnRpZmllcikKK3sKKyAgICBpZiAoYXV0byB0cmFuc2FjdGlvbiA9IG1faWRiU3RvcmFnZVJl
Z2lzdHJ5LT5nZXRUcmFuc2FjdGlvbihyZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIo
KSkpCisgICAgICAgIHRyYW5zYWN0aW9uLT5jbGVhck9iamVjdFN0b3JlKHJlcXVlc3REYXRhLCBv
YmplY3RTdG9yZUlkZW50aWZpZXIpOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6
Y3JlYXRlSW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBj
b25zdCBXZWJDb3JlOjpJREJJbmRleEluZm8mIGluZGV4SW5mbykKK3sKKyAgICBpZiAoYXV0byB0
cmFuc2FjdGlvbiA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT5nZXRUcmFuc2FjdGlvbihyZXF1ZXN0
RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSkpCisgICAgICAgIHRyYW5zYWN0aW9uLT5jcmVh
dGVJbmRleChyZXF1ZXN0RGF0YSwgaW5kZXhJbmZvKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFn
ZU1hbmFnZXI6OmRlbGV0ZUluZGV4KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1
ZXN0RGF0YSwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGlu
ZGV4TmFtZSkKK3sKKyAgICBpZiAoYXV0byB0cmFuc2FjdGlvbiA9IG1faWRiU3RvcmFnZVJlZ2lz
dHJ5LT5nZXRUcmFuc2FjdGlvbihyZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSkp
CisgICAgICAgIHRyYW5zYWN0aW9uLT5kZWxldGVJbmRleChyZXF1ZXN0RGF0YSwgb2JqZWN0U3Rv
cmVJZGVudGlmaWVyLCBpbmRleE5hbWUpOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdl
cjo6cmVuYW1lSW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRh
LCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lKQoreworICAgIGlmIChhdXRvIHRyYW5zYWN0aW9uID0g
bV9pZGJTdG9yYWdlUmVnaXN0cnktPmdldFRyYW5zYWN0aW9uKHJlcXVlc3REYXRhLnRyYW5zYWN0
aW9uSWRlbnRpZmllcigpKSkKKyAgICAgICAgdHJhbnNhY3Rpb24tPnJlbmFtZUluZGV4KHJlcXVl
c3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4SWRlbnRpZmllciwgbmV3TmFtZSk7
Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpwdXRPckFkZChJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0
YSwgY29uc3QgV2ViQ29yZTo6SURCS2V5RGF0YSYga2V5RGF0YSwgY29uc3QgV2ViQ29yZTo6SURC
VmFsdWUmIHZhbHVlLCBXZWJDb3JlOjpJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9k
ZSBvdmVyd3JpdGVNb2RlKQoreworICAgIGlmICh2YWx1ZS5ibG9iVVJMcygpLnNpemUoKSAhPSB2
YWx1ZS5ibG9iRmlsZVBhdGhzKCkuc2l6ZSgpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0ZBVUxU
KEluZGV4ZWREQiwgIk5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6cHV0T3JBZGQ6IE51bWJlciBvZiBi
bG9iIFVSTHMgZG9lc24ndCBtYXRjaCB0aGUgbnVtYmVyIG9mIGJsb2IgZmlsZSBwYXRocy4iKTsK
KyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICAvLyBWYWxpZGF0ZSB0ZW1wb3JhcnkgYmxvYiBwYXRocyBpbiB8dmFsdWV8IHRvIG1ha2Ug
c3VyZSB0aGV5IGJlbG9uZyB0byB0aGUgc291cmNlIHByb2Nlc3MuCisgICAgaWYgKCF2YWx1ZS5i
bG9iRmlsZVBhdGhzKCkuaXNFbXB0eSgpKSB7CisgICAgICAgIGF1dG8gaXQgPSBtX3RlbXBvcmFy
eUJsb2JQYXRoc0J5Q29ubmVjdGlvbi5maW5kKGNvbm5lY3Rpb24udW5pcXVlSUQoKSk7CisgICAg
ICAgIGlmIChpdCA9PSBtX3RlbXBvcmFyeUJsb2JQYXRoc0J5Q29ubmVjdGlvbi5lbmQoKSkgewor
ICAgICAgICAgICAgUkVMRUFTRV9MT0dfRkFVTFQoSW5kZXhlZERCLCAiTmV0d29ya1N0b3JhZ2VN
YW5hZ2VyOjpwdXRPckFkZDogSURCVmFsdWUgY29udGFpbnMgYmxvYiBwYXRocyBidXQgbm9uZSBh
cmUgYWxsb3dlZCBmb3IgdGhpcyBwcm9jZXNzIik7CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8m
IHRlbXBvcmFyeUJsb2JQYXRoc0ZvckNvbm5lY3Rpb24gPSBpdC0+dmFsdWU7CisgICAgICAgIGZv
ciAoYXV0byYgYmxvYkZpbGVQYXRoIDogdmFsdWUuYmxvYkZpbGVQYXRocygpKSB7CisgICAgICAg
ICAgICBpZiAoIXRlbXBvcmFyeUJsb2JQYXRoc0ZvckNvbm5lY3Rpb24ucmVtb3ZlKGJsb2JGaWxl
UGF0aCkpIHsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19GQVVMVChJbmRleGVkREIsICJO
ZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnB1dE9yQWRkOiBCbG9iIHBhdGggd2FzIG5vdCBjcmVhdGVk
IGZvciB0aGlzIFdlYlByb2Nlc3MiKTsKKyAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBpZiAoYXV0byB0cmFuc2FjdGlvbiA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5
LT5nZXRUcmFuc2FjdGlvbihyZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSkpCisg
ICAgICAgIHRyYW5zYWN0aW9uLT5wdXRPckFkZChyZXF1ZXN0RGF0YSwga2V5RGF0YSwgdmFsdWUs
IG92ZXJ3cml0ZU1vZGUpOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Z2V0UmVj
b3JkKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgV2Vi
Q29yZTo6SURCR2V0UmVjb3JkRGF0YSYgZ2V0UmVjb3JkRGF0YSkKK3sKKyAgICBpZiAoYXV0byB0
cmFuc2FjdGlvbiA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT5nZXRUcmFuc2FjdGlvbihyZXF1ZXN0
RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSkpCisgICAgICAgIHRyYW5zYWN0aW9uLT5nZXRS
ZWNvcmQocmVxdWVzdERhdGEsIGdldFJlY29yZERhdGEpOworfQorCit2b2lkIE5ldHdvcmtTdG9y
YWdlTWFuYWdlcjo6Z2V0QWxsUmVjb3Jkcyhjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYg
cmVxdWVzdERhdGEsIGNvbnN0IFdlYkNvcmU6OklEQkdldEFsbFJlY29yZHNEYXRhJiBnZXRBbGxS
ZWNvcmRzRGF0YSkKK3sKKyAgICBpZiAoYXV0byB0cmFuc2FjdGlvbiA9IG1faWRiU3RvcmFnZVJl
Z2lzdHJ5LT5nZXRUcmFuc2FjdGlvbihyZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIo
KSkpCisgICAgICAgIHRyYW5zYWN0aW9uLT5nZXRBbGxSZWNvcmRzKHJlcXVlc3REYXRhLCBnZXRB
bGxSZWNvcmRzRGF0YSk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpnZXRDb3Vu
dChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IFdlYkNv
cmU6OklEQktleVJhbmdlRGF0YSYga2V5UmFuZ2VEYXRhKQoreworICAgIGlmIChhdXRvIHRyYW5z
YWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPmdldFRyYW5zYWN0aW9uKHJlcXVlc3REYXRh
LnRyYW5zYWN0aW9uSWRlbnRpZmllcigpKSkKKyAgICAgICAgdHJhbnNhY3Rpb24tPmdldENvdW50
KHJlcXVlc3REYXRhLCBrZXlSYW5nZURhdGEpOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFu
YWdlcjo6ZGVsZXRlUmVjb3JkKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0
RGF0YSwgY29uc3QgV2ViQ29yZTo6SURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5nZURhdGEpCit7Cisg
ICAgaWYgKGF1dG8gdHJhbnNhY3Rpb24gPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+Z2V0VHJhbnNh
Y3Rpb24ocmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCkpKQorICAgICAgICB0cmFu
c2FjdGlvbi0+ZGVsZXRlUmVjb3JkKHJlcXVlc3REYXRhLCBrZXlSYW5nZURhdGEpOworfQorCit2
b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6b3BlbkN1cnNvcihjb25zdCBXZWJDb3JlOjpJREJS
ZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IFdlYkNvcmU6OklEQkN1cnNvckluZm8mIGN1
cnNvckluZm8pCit7CisgICAgaWYgKGF1dG8gdHJhbnNhY3Rpb24gPSBtX2lkYlN0b3JhZ2VSZWdp
c3RyeS0+Z2V0VHJhbnNhY3Rpb24ocmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCkp
KQorICAgICAgICB0cmFuc2FjdGlvbi0+b3BlbkN1cnNvcihyZXF1ZXN0RGF0YSwgY3Vyc29ySW5m
byk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjppdGVyYXRlQ3Vyc29yKGNvbnN0
IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgV2ViQ29yZTo6SURC
SXRlcmF0ZUN1cnNvckRhdGEmIGN1cnNvckRhdGEpCit7CisgICAgaWYgKGF1dG8gdHJhbnNhY3Rp
b24gPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+Z2V0VHJhbnNhY3Rpb24ocmVxdWVzdERhdGEudHJh
bnNhY3Rpb25JZGVudGlmaWVyKCkpKQorICAgICAgICB0cmFuc2FjdGlvbi0+aXRlcmF0ZUN1cnNv
cihyZXF1ZXN0RGF0YSwgY3Vyc29yRGF0YSk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5h
Z2VyOjpnZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMoSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVu
dGlmaWVyLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbikKK3sKKyAgICBhdXRv
JiBjb25uZWN0aW9uVG9DbGllbnQgPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+Z2V0T3JDcmVhdGVD
b25uZWN0aW9uVG9DbGllbnQoY29ubmVjdGlvbi51bmlxdWVJRCgpLCByZXF1ZXN0SWRlbnRpZmll
ci5jb25uZWN0aW9uSWRlbnRpZmllcigpKTsKKyAgICBhdXRvIHJlc3VsdCA9IGxvY2FsT3JpZ2lu
U3RvcmFnZU1hbmFnZXIob3JpZ2luKS5pZGJTdG9yYWdlTWFuYWdlcigqbV9pZGJTdG9yYWdlUmVn
aXN0cnkpLmdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucygpOworICAgIGNvbm5lY3Rpb25U
b0NsaWVudC5kaWRHZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMocmVxdWVzdElkZW50aWZp
ZXIsIFdURk1vdmUocmVzdWx0KSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29y
a1N0b3JhZ2VNYW5hZ2VyLmgKaW5kZXggZDIxZDY1NmQzYTY3MjdjOThkMTJhNDEyMzc1ZWQwNTJh
NTNhOWU5MS4uZTg1ZTkyOGE4MDZkNDlhNzFhMmNmNDQwMWE3YTFjZjJhMmIyNmE1ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdl
TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3
b3JrU3RvcmFnZU1hbmFnZXIuaApAQCAtMzUsNiArMzUsOCBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
Q2xpZW50T3JpZ2luLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtSGFuZGxlSWRlbnRp
Zmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVu
dGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JREJSZXNvdXJjZUlkZW50aWZpZXIuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL0luZGV4ZWREQi5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4K
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCkBAIC00MywxNyArNDUsMzAgQEAgY2xhc3MgU2hh
cmVkRmlsZUhhbmRsZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgSURCQ3Vyc29y
SW5mbzsKK2NsYXNzIElEQktleURhdGE7CitjbGFzcyBJREJJbmRleEluZm87CitjbGFzcyBJREJP
YmplY3RTdG9yZUluZm87CitjbGFzcyBJREJSZXF1ZXN0RGF0YTsKK2NsYXNzIElEQlRyYW5zYWN0
aW9uSW5mbzsKK2NsYXNzIElEQlZhbHVlOwogc3RydWN0IENsaWVudE9yaWdpbjsKK3N0cnVjdCBJ
REJHZXRBbGxSZWNvcmRzRGF0YTsKK3N0cnVjdCBJREJHZXRSZWNvcmREYXRhOworc3RydWN0IElE
QkdldEFsbFJlY29yZHNEYXRhOworc3RydWN0IElEQkl0ZXJhdGVDdXJzb3JEYXRhOworc3RydWN0
IElEQktleVJhbmdlRGF0YTsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEZpbGVT
eXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnk7CitjbGFzcyBJREJTdG9yYWdlUmVnaXN0cnk7CiBj
bGFzcyBTdG9yYWdlQXJlYVJlZ2lzdHJ5OwogCiBjbGFzcyBOZXR3b3JrU3RvcmFnZU1hbmFnZXIg
ZmluYWwgOiBwdWJsaWMgSVBDOjpDb25uZWN0aW9uOjpXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIg
ewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8TmV0d29ya1N0b3JhZ2VNYW5hZ2VyPiBjcmVhdGUo
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21M
b2NhbFN0b3JhZ2VQYXRoKTsKKyAgICBzdGF0aWMgUmVmPE5ldHdvcmtTdG9yYWdlTWFuYWdlcj4g
Y3JlYXRlKFBBTDo6U2Vzc2lvbklELCBJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBjb25zdCBT
dHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCwgY29uc3Qg
U3RyaW5nJiBjdXN0b21JREJTdG9yYWdlUGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21DYWNoZVN0
b3JhZ2VQYXRoLCB1aW50NjRfdCBkZWZhdWx0T3JpZ2luUXVvdGEsIHVpbnQ2NF90IGRlZmF1bHRU
aGlyZFBhcnR5T3JpZ2luUXVvdGEpOwogICAgIHN0YXRpYyBib29sIGNhbkhhbmRsZVR5cGVzKE9w
dGlvblNldDxXZWJzaXRlRGF0YVR5cGU+KTsKIAogICAgIHZvaWQgc3RhcnRSZWNlaXZpbmdNZXNz
YWdlRnJvbUNvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uJik7CkBAIC02Miw2ICs3Nyw3IEBAIHB1
YmxpYzoKICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCB7IHJldHVybiBtX3Nl
c3Npb25JRDsgfQogICAgIHZvaWQgY2xvc2UoKTsKICAgICB2b2lkIGNsZWFyU3RvcmFnZUZvclRl
c3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGRpZEluY3JlYXNl
UXVvdGEoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgUXVvdGFJbmNyZWFzZVJlcXVlc3RJ
ZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBuZXdRdW90YSk7CiAgICAgdm9pZCBm
ZXRjaERhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoVmVjdG9yPFdlYnNpdGVEYXRhOjpFbnRyeT4mJik+JiYpOwogICAgIHZvaWQgZGVsZXRlRGF0
YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YT4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQg
ZGVsZXRlRGF0YU1vZGlmaWVkU2luY2UoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIFdhbGxU
aW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAtNzEsMTQgKzg3LDE3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHJlc3VtZSgpOwogICAgIHZvaWQgaGFuZGxlTG93TWVtb3J5V2Fybmlu
ZygpOwogICAgIHZvaWQgc3luY0xvY2FsU3RvcmFnZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOworICAgIHZvaWQgcmVnaXN0ZXJUZW1wb3JhcnlCbG9iRmlsZVBhdGhzKElQQzo6Q29ubmVj
dGlvbiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7CisgICAgdm9pZCByZXF1ZXN0U3BhY2UoY29u
c3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgdWludDY0X3Qgc2l6ZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCByZXNldFF1b3RhRm9yVGVzdGluZyhDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgcmVzZXRRdW90YVVwZGF0ZWRCYXNlZE9u
VXNhZ2VGb3JUZXN0aW5nKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYpOwogCiBwcml2YXRl
OgotICAgIE5ldHdvcmtTdG9yYWdlTWFuYWdlcihQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5n
JiBwYXRoLCBjb25zdCBTdHJpbmcmIGN1c3RvbUxvY2FsU3RvcmFnZVBhdGgpOworICAgIE5ldHdv
cmtTdG9yYWdlTWFuYWdlcihQQUw6OlNlc3Npb25JRCwgSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJ
RCwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGN1c3RvbUxvY2FsU3RvcmFnZVBh
dGgsIGNvbnN0IFN0cmluZyYgY3VzdG9tSURCU3RvcmFnZVBhdGgsIGNvbnN0IFN0cmluZyYgY3Vz
dG9tQ2FjaGVTdG9yYWdlUGF0aCwgdWludDY0X3QgZGVmYXVsdE9yaWdpblF1b3RhLCB1aW50NjRf
dCBkZWZhdWx0VGhpcmRQYXJ0eU9yaWdpblF1b3RhKTsKICAgICB+TmV0d29ya1N0b3JhZ2VNYW5h
Z2VyKCk7CiAgICAgT3JpZ2luU3RvcmFnZU1hbmFnZXImIGxvY2FsT3JpZ2luU3RvcmFnZU1hbmFn
ZXIoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJik7CiAgICAgYm9vbCByZW1vdmVPcmlnaW5T
dG9yYWdlTWFuYWdlcklmUG9zc2libGUoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJik7CiAg
ICAgdm9pZCBkZWxldGVPcmlnaW5EaXJlY3RvcnlJZlBvc3NpYmxlKGNvbnN0IFdlYkNvcmU6OkNs
aWVudE9yaWdpbiYpOwotICAgIEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnkmIGZpbGVT
eXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnkoKTsKIAogICAgIHZvaWQgZm9yRWFjaE9yaWdpbkRp
cmVjdG9yeShjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYpOwogICAgIEhhc2hT
ZXQ8V2ViQ29yZTo6Q2xpZW50T3JpZ2luPiBnZXRBbGxPcmlnaW5zKCk7CkBAIC0xMTgsNiArMTM3
LDM0IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZW1vdmVJdGVtKElQQzo6Q29ubmVjdGlvbiYsIFN0
b3JhZ2VBcmVhSWRlbnRpZmllciwgU3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllciwgdWludDY0X3Qg
c2VlZCwgU3RyaW5nJiYga2V5LCBTdHJpbmcmJiB1cmxTdHJpbmcpOwogICAgIHZvaWQgY2xlYXIo
SVBDOjpDb25uZWN0aW9uJiwgU3RvcmFnZUFyZWFJZGVudGlmaWVyLCBTdG9yYWdlQXJlYUltcGxJ
ZGVudGlmaWVyLCB1aW50NjRfdCBzZWVkLCBTdHJpbmcmJiB1cmxTdHJpbmcpOwogCisgICAgLy8g
TWVzc2FnZSBoYW5kbGVycyBmb3IgSW5kZXhlZERCLgorICAgIHZvaWQgb3BlbkRhdGFiYXNlKElQ
Qzo6Q29ubmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJik7CisgICAgdm9p
ZCBvcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJik7
CisgICAgdm9pZCBkZWxldGVEYXRhYmFzZShJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3Jl
OjpJREJSZXF1ZXN0RGF0YSYpOworICAgIHZvaWQgZXN0YWJsaXNoVHJhbnNhY3Rpb24odWludDY0
X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCVHJhbnNh
Y3Rpb25JbmZvJik7CisgICAgdm9pZCBkYXRhYmFzZUNvbm5lY3Rpb25QZW5kaW5nQ2xvc2UodWlu
dDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcik7CisgICAgdm9pZCBkYXRhYmFzZUNv
bm5lY3Rpb25DbG9zZWQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcik7Cisg
ICAgdm9pZCBhYm9ydE9wZW5BbmRVcGdyYWRlTmVlZGVkKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVj
dGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgdHJh
bnNhY3Rpb25JZGVudGlmaWVyKTsKKyAgICB2b2lkIGRpZEZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQo
dWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURC
UmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SW5k
ZXhlZERCOjpDb25uZWN0aW9uQ2xvc2VkT25CZWhhbGZPZlNlcnZlcik7CisgICAgdm9pZCBhYm9y
dFRyYW5zYWN0aW9uKGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYpOworICAg
IHZvaWQgY29tbWl0VHJhbnNhY3Rpb24oY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlm
aWVyJiwgdWludDY0X3QgcGVuZGluZ1JlcXVlc3RDb3VudCk7CisgICAgdm9pZCBkaWRGaW5pc2hI
YW5kbGluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbih1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rp
b25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImKTsKKyAg
ICB2b2lkIGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiwg
Y29uc3QgV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVJbmZvJik7CisgICAgdm9pZCBkZWxldGVPYmpl
Y3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IFN0cmluZyYgb2Jq
ZWN0U3RvcmVOYW1lKTsKKyAgICB2b2lkIHJlbmFtZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6
OklEQlJlcXVlc3REYXRhJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIG5ld05hbWUpOworICAgIHZvaWQgY2xlYXJPYmplY3RTdG9yZShjb25zdCBXZWJDb3Jl
OjpJREJSZXF1ZXN0RGF0YSYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllcik7CisgICAg
dm9pZCBjcmVhdGVJbmRleChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IFdl
YkNvcmU6OklEQkluZGV4SW5mbyYpOworICAgIHZvaWQgZGVsZXRlSW5kZXgoY29uc3QgV2ViQ29y
ZTo6SURCUmVxdWVzdERhdGEmLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgaW5kZXhOYW1lKTsKKyAgICB2b2lkIHJlbmFtZUluZGV4KGNvbnN0IFdlYkNvcmU6
OklEQlJlcXVlc3REYXRhJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50NjRf
dCBpbmRleElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSk7CisgICAgdm9pZCBwdXRP
ckFkZChJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYsIGNv
bnN0IFdlYkNvcmU6OklEQktleURhdGEmLCBjb25zdCBXZWJDb3JlOjpJREJWYWx1ZSYsIFdlYkNv
cmU6OkluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlKTsKKyAgICB2b2lkIGdldFJl
Y29yZChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IFdlYkNvcmU6OklEQkdl
dFJlY29yZERhdGEmKTsKKyAgICB2b2lkIGdldEFsbFJlY29yZHMoY29uc3QgV2ViQ29yZTo6SURC
UmVxdWVzdERhdGEmLCBjb25zdCBXZWJDb3JlOjpJREJHZXRBbGxSZWNvcmRzRGF0YSYpOworICAg
IHZvaWQgZ2V0Q291bnQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmLCBjb25zdCBXZWJD
b3JlOjpJREJLZXlSYW5nZURhdGEmKTsKKyAgICB2b2lkIGRlbGV0ZVJlY29yZChjb25zdCBXZWJD
b3JlOjpJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IFdlYkNvcmU6OklEQktleVJhbmdlRGF0YSYpOwor
ICAgIHZvaWQgb3BlbkN1cnNvcihjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYsIGNvbnN0
IFdlYkNvcmU6OklEQkN1cnNvckluZm8mKTsKKyAgICB2b2lkIGl0ZXJhdGVDdXJzb3IoY29uc3Qg
V2ViQ29yZTo6SURCUmVxdWVzdERhdGEmLCBjb25zdCBXZWJDb3JlOjpJREJJdGVyYXRlQ3Vyc29y
RGF0YSYpOworICAgIHZvaWQgZ2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKElQQzo6Q29u
bmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYsIGNvbnN0IFdl
YkNvcmU6OkNsaWVudE9yaWdpbiYpOworICAgIAogICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lv
bklEOwogICAgIFJlZjxTdXNwZW5kYWJsZVdvcmtRdWV1ZT4gbV9xdWV1ZTsKICAgICBTdHJpbmcg
bV9wYXRoOwpAQCAtMTI3LDcgKzE3NCwxNCBAQCBwcml2YXRlOgogICAgIFdlYWtIYXNoU2V0PElQ
Qzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uczsgLy8gTWFpbiB0aHJlYWQgb25seS4KICAgICBz
dGQ6OnVuaXF1ZV9wdHI8RmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeT4gbV9maWxlU3lz
dGVtU3RvcmFnZUhhbmRsZVJlZ2lzdHJ5OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTdG9yYWdlQXJl
YVJlZ2lzdHJ5PiBtX3N0b3JhZ2VBcmVhUmVnaXN0cnk7CisgICAgc3RkOjp1bmlxdWVfcHRyPElE
QlN0b3JhZ2VSZWdpc3RyeT4gbV9pZGJTdG9yYWdlUmVnaXN0cnk7CiAgICAgU3RyaW5nIG1fY3Vz
dG9tTG9jYWxTdG9yYWdlUGF0aDsKKyAgICBTdHJpbmcgbV9jdXN0b21JREJTdG9yYWdlUGF0aDsK
KyAgICBTdHJpbmcgbV9jdXN0b21DYWNoZVN0b3JhZ2VQYXRoOworICAgIHVpbnQ2NF90IG1fZGVm
YXVsdE9yaWdpblF1b3RhOworICAgIHVpbnQ2NF90IG1fZGVmYXVsdFRoaXJkUGFydHlPcmlnaW5R
dW90YTsKKyAgICBJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIG1fcGFyZW50Q29ubmVjdGlvbjsK
KyAgICBIYXNoTWFwPElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIEhhc2hTZXQ8U3RyaW5nPj4g
bV90ZW1wb3JhcnlCbG9iUGF0aHNCeUNvbm5lY3Rpb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9O
ZXR3b3JrU3RvcmFnZU1hbmFnZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLm1lc3NhZ2VzLmluCmluZGV4IGE1
MTZhZGE5ODMyZmRlZjViNjgxNDk0NDIxNWY2ODhmZGE4MWM2MTUuLjc4NDM2NzQ1ZTgwNWNjZTA5
YmE5YjhiMjc1ODNlOTkwZWMzMGJjNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdl
ci5tZXNzYWdlcy5pbgpAQCAtNDksNCArNDksMzEgQEAKICAgICBTZXRJdGVtKFdlYktpdDo6U3Rv
cmFnZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYktpdDo6U3RvcmFnZUFyZWFJbXBsSWRl
bnRpZmllciBpbXBsSWRlbnRpZmllciwgdWludDY0X3Qgc3RvcmFnZU1hcFNlZWQsIFN0cmluZyBr
ZXksIFN0cmluZyB2YWx1ZSwgU3RyaW5nIHVybFN0cmluZykgV2FudHNDb25uZWN0aW9uCiAgICAg
UmVtb3ZlSXRlbShXZWJLaXQ6OlN0b3JhZ2VBcmVhSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJL
aXQ6OlN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXIgaW1wbElkZW50aWZpZXIsIHVpbnQ2NF90IHN0
b3JhZ2VNYXBTZWVkLCBTdHJpbmcga2V5LCBTdHJpbmcgdXJsU3RyaW5nKSBXYW50c0Nvbm5lY3Rp
b24KICAgICBDbGVhcihXZWJLaXQ6OlN0b3JhZ2VBcmVhSWRlbnRpZmllciBpZGVudGlmaWVyLCBX
ZWJLaXQ6OlN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXIgaW1wbElkZW50aWZpZXIsIHVpbnQ2NF90
IHN0b3JhZ2VNYXBTZWVkLCBTdHJpbmcgdXJsU3RyaW5nKSBXYW50c0Nvbm5lY3Rpb24KKworICAg
IE9wZW5EYXRhYmFzZShXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YSkgV2FudHND
b25uZWN0aW9uCisgICAgT3BlbkRCUmVxdWVzdENhbmNlbGxlZChXZWJDb3JlOjpJREJSZXF1ZXN0
RGF0YSByZXF1ZXN0RGF0YSkKKyAgICBEZWxldGVEYXRhYmFzZShXZWJDb3JlOjpJREJSZXF1ZXN0
RGF0YSByZXF1ZXN0RGF0YSkgV2FudHNDb25uZWN0aW9uCisgICAgRXN0YWJsaXNoVHJhbnNhY3Rp
b24odWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6SURCVHJh
bnNhY3Rpb25JbmZvIGluZm8pCisgICAgRGF0YWJhc2VDb25uZWN0aW9uUGVuZGluZ0Nsb3NlKHVp
bnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpCisgICAgRGF0YWJhc2VDb25uZWN0
aW9uQ2xvc2VkKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpCisgICAgQWJv
cnRPcGVuQW5kVXBncmFkZU5lZWRlZCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlm
aWVyLCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXIgdHJhbnNhY3Rpb25JZGVudGlmaWVy
KQorICAgIERpZEZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0
aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyIHJlcXVlc3RJZGVu
dGlmaWVyLCBXZWJDb3JlOjpJbmRleGVkREI6OkNvbm5lY3Rpb25DbG9zZWRPbkJlaGFsZk9mU2Vy
dmVyIGNvbm5lY3Rpb25DbG9zZWRPbkJlaGFsZk9mU2VydmVyKQorICAgIERpZEZpbmlzaEhhbmRs
aW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklk
ZW50aWZpZXIsIFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciB0cmFuc2FjdGlvbklkZW50
aWZpZXIpCisgICAgQWJvcnRUcmFuc2FjdGlvbihXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZp
ZXIgdHJhbnNhY3Rpb25JZGVudGlmaWVyKQorICAgIENvbW1pdFRyYW5zYWN0aW9uKFdlYkNvcmU6
OklEQlJlc291cmNlSWRlbnRpZmllciB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IHBl
bmRpbmdSZXF1ZXN0Q291bnQpCisgICAgQ3JlYXRlT2JqZWN0U3RvcmUoV2ViQ29yZTo6SURCUmVx
dWVzdERhdGEgcmVxdWVzdERhdGEsIFdlYkNvcmU6OklEQk9iamVjdFN0b3JlSW5mbyBpbmZvKQor
ICAgIERlbGV0ZU9iamVjdFN0b3JlKFdlYkNvcmU6OklEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRh
LCBTdHJpbmcgb2JqZWN0U3RvcmVOYW1lKQorICAgIFJlbmFtZU9iamVjdFN0b3JlKFdlYkNvcmU6
OklEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZp
ZXIsIFN0cmluZyBuZXdOYW1lKQorICAgIENsZWFyT2JqZWN0U3RvcmUoV2ViQ29yZTo6SURCUmVx
dWVzdERhdGEgcmVxdWVzdERhdGEsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllcikKKyAg
ICBDcmVhdGVJbmRleChXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YSwgV2ViQ29y
ZTo6SURCSW5kZXhJbmZvIGluZm8pCisgICAgRGVsZXRlSW5kZXgoV2ViQ29yZTo6SURCUmVxdWVz
dERhdGEgcmVxdWVzdERhdGEsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgU3RyaW5n
IGluZGV4TmFtZSkKKyAgICBSZW5hbWVJbmRleChXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSByZXF1
ZXN0RGF0YSwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRleElk
ZW50aWZpZXIsIFN0cmluZyBuZXdOYW1lKQorICAgIFB1dE9yQWRkKFdlYkNvcmU6OklEQlJlcXVl
c3REYXRhIHJlcXVlc3REYXRhLCBXZWJDb3JlOjpJREJLZXlEYXRhIGtleSwgV2ViQ29yZTo6SURC
VmFsdWUgdmFsdWUsIFdlYkNvcmU6OkluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2Rl
IG92ZXJ3cml0ZU1vZGUpIFdhbnRzQ29ubmVjdGlvbgorICAgIEdldFJlY29yZChXZWJDb3JlOjpJ
REJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YSwgc3RydWN0IFdlYkNvcmU6OklEQkdldFJlY29yZERh
dGEgZ2V0UmVjb3JkRGF0YSkKKyAgICBHZXRBbGxSZWNvcmRzKFdlYkNvcmU6OklEQlJlcXVlc3RE
YXRhIHJlcXVlc3REYXRhLCBzdHJ1Y3QgV2ViQ29yZTo6SURCR2V0QWxsUmVjb3Jkc0RhdGEgZ2V0
QWxsUmVjb3Jkc0RhdGEpCisgICAgR2V0Q291bnQoV2ViQ29yZTo6SURCUmVxdWVzdERhdGEgcmVx
dWVzdERhdGEsIHN0cnVjdCBXZWJDb3JlOjpJREJLZXlSYW5nZURhdGEgcmFuZ2UpCisgICAgRGVs
ZXRlUmVjb3JkKFdlYkNvcmU6OklEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhLCBzdHJ1Y3QgV2Vi
Q29yZTo6SURCS2V5UmFuZ2VEYXRhIHJhbmdlKQorICAgIE9wZW5DdXJzb3IoV2ViQ29yZTo6SURC
UmVxdWVzdERhdGEgcmVxdWVzdERhdGEsIFdlYkNvcmU6OklEQkN1cnNvckluZm8gaW5mbykKKyAg
ICBJdGVyYXRlQ3Vyc29yKFdlYkNvcmU6OklEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhLCBzdHJ1
Y3QgV2ViQ29yZTo6SURCSXRlcmF0ZUN1cnNvckRhdGEgZGF0YSkKKyAgICBHZXRBbGxEYXRhYmFz
ZU5hbWVzQW5kVmVyc2lvbnMoV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyIHJlcXVlc3RJ
ZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbikgV2FudHNDb25u
ZWN0aW9uCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3Jh
Z2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9zdG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2VyLmNwcAppbmRleCA3MGIwMDBiOGM1Y2Q3MTlm
ZTdmOGI4ODIxYjM2YzBiODNjY2QzYjRjLi5jOTJmZDc0YTRlNWFjOWI0OWFjOWUyNjQ4YWU1M2Yw
OTliODYwOGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3Jh
Z2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5jcHAKQEAgLTI2LDggKzI2LDExIEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiT3JpZ2luU3RvcmFnZU1hbmFnZXIuaCIK
IAorI2luY2x1ZGUgIkNhY2hlU3RvcmFnZUVuZ2luZS5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW1T
dG9yYWdlSGFuZGxlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtU3RvcmFnZU1hbmFn
ZXIuaCIKKyNpbmNsdWRlICJJREJTdG9yYWdlTWFuYWdlci5oIgorI2luY2x1ZGUgIklEQlN0b3Jh
Z2VSZWdpc3RyeS5oIgogI2luY2x1ZGUgIkxvY2FsU3RvcmFnZU1hbmFnZXIuaCIKICNpbmNsdWRl
ICJNZW1vcnlTdG9yYWdlQXJlYS5oIgogI2luY2x1ZGUgIlNlc3Npb25TdG9yYWdlTWFuYWdlci5o
IgpAQCAtNDQsMTAgKzQ3LDExIEBAIGVudW0gY2xhc3MgT3JpZ2luU3RvcmFnZU1hbmFnZXI6OlN0
b3JhZ2VCdWNrZXRNb2RlIDogYm9vbCB7IEJlc3RFZmZvcnQsIFBlcnNpc3RlCiBjbGFzcyBPcmln
aW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6Ci0gICAgU3RvcmFnZUJ1Y2tldChjb25zdCBTdHJpbmcmIHJvb3RQYXRo
LCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlUGF0
aCkKKyAgICBTdG9yYWdlQnVja2V0KGNvbnN0IFN0cmluZyYgcm9vdFBhdGgsIGNvbnN0IFN0cmlu
ZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VQYXRoLCBjb25zdCBTdHJp
bmcmIGlkYlN0b3JhZ2VQYXRoKQogICAgICAgICA6IG1fcm9vdFBhdGgocm9vdFBhdGgpCiAgICAg
ICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiAgICAgICAgICwgbV9sb2NhbFN0b3JhZ2VQ
YXRoKGxvY2FsU3RvcmFnZVBhdGgpCisgICAgICAgICwgbV9pZGJTdG9yYWdlUGF0aChpZGJTdG9y
YWdlUGF0aCkKICAgICB7CiAgICAgfQogCkBAIC02NCw2ICs2OCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgRmlsZVN5c3RlbSwKICAgICAgICAgTG9jYWxTdG9yYWdlLAogICAgICAgICBTZXNzaW9uU3Rv
cmFnZSwKKyAgICAgICAgSW5kZXhlZERCLAogICAgIH07CiAKICAgICBzdGF0aWMgc3RkOjpvcHRp
b25hbDxXZWJzaXRlRGF0YVR5cGU+IHRvV2Vic2l0ZURhdGFUeXBlKGNvbnN0IFN0cmluZyYgc3Rv
cmFnZUlkZW50aWZpZXIpCkBAIC03NCw2ICs3OSw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJl
dHVybiBXZWJzaXRlRGF0YVR5cGU6OkxvY2FsU3RvcmFnZTsKICAgICAgICAgaWYgKHN0b3JhZ2VJ
ZGVudGlmaWVyID09ICJTZXNzaW9uU3RvcmFnZSJfcykKICAgICAgICAgICAgIHJldHVybiBXZWJz
aXRlRGF0YVR5cGU6OlNlc3Npb25TdG9yYWdlOworICAgICAgICBpZiAoc3RvcmFnZUlkZW50aWZp
ZXIgPT0gIkluZGV4ZWREQiJfcykKKyAgICAgICAgICAgIHJldHVybiBXZWJzaXRlRGF0YVR5cGU6
OkluZGV4ZWREQkRhdGFiYXNlczsKIAogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IH0KQEAgLTg3LDYgKzk0LDggQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuICJMb2NhbFN0
b3JhZ2UiX3M7CiAgICAgICAgIGNhc2UgU3RvcmFnZVR5cGU6OlNlc3Npb25TdG9yYWdlOgogICAg
ICAgICAgICAgcmV0dXJuICJTZXNzaW9uU3RvcmFnZSJfczsKKyAgICAgICAgY2FzZSBTdG9yYWdl
VHlwZTo6SW5kZXhlZERCOgorICAgICAgICAgICAgcmV0dXJuICJJbmRleGVkREIiX3M7CiAgICAg
ICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMTM3LDkgKzE0
NiwyMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX3Nlc3Npb25TdG9yYWdlTWFuYWdlci5n
ZXQoKTsKICAgICB9CiAKKyAgICBJREJTdG9yYWdlTWFuYWdlciYgaWRiU3RvcmFnZU1hbmFnZXIo
SURCU3RvcmFnZVJlZ2lzdHJ5JiByZWdpc3RyeSwgSURCU3RvcmFnZU1hbmFnZXI6OlF1b3RhQ2hl
Y2tGdW5jdGlvbiYmIHF1b3RhQ2hlY2tGdW5jdGlvbikKKyAgICB7CisgICAgICAgIGlmICghbV9p
ZGJTdG9yYWdlTWFuYWdlcikKKyAgICAgICAgICAgIG1faWRiU3RvcmFnZU1hbmFnZXIgPSBtYWtl
VW5pcXVlPElEQlN0b3JhZ2VNYW5hZ2VyPihtX2lkYlN0b3JhZ2VQYXRoLCByZWdpc3RyeSwgV1RG
TW92ZShxdW90YUNoZWNrRnVuY3Rpb24pKTsKKworICAgICAgICByZXR1cm4gKm1faWRiU3RvcmFn
ZU1hbmFnZXI7CisgICAgfQorCisgICAgSURCU3RvcmFnZU1hbmFnZXIqIGV4aXN0aW5nSURCU3Rv
cmFnZU1hbmFnZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1faWRiU3RvcmFnZU1hbmFnZXIu
Z2V0KCk7CisgICAgfQorCiAgICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0CiAgICAgewotICAgICAg
ICByZXR1cm4gbV9maWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIgfHwgbV9sb2NhbFN0b3JhZ2VNYW5h
Z2VyIHx8IG1fc2Vzc2lvblN0b3JhZ2VNYW5hZ2VyOworICAgICAgICByZXR1cm4gbV9maWxlU3lz
dGVtU3RvcmFnZU1hbmFnZXIgfHwgbV9sb2NhbFN0b3JhZ2VNYW5hZ2VyIHx8IG1fc2Vzc2lvblN0
b3JhZ2VNYW5hZ2VyIHx8IG1faWRiU3RvcmFnZU1hbmFnZXI7CiAgICAgfQogCiAgICAgYm9vbCBp
c0VtcHR5KCkgY29uc3QKQEAgLTE1NSw3ICsxNzcsOCBAQCBwdWJsaWM6CiAgICAgICAgIGlmICho
YXNWYWxpZEZpbGUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgcmV0dXJu
ICFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG1fbG9jYWxTdG9yYWdlUGF0aCk7CisgICAgICAgIEZp
bGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KG1faWRiU3RvcmFnZVBhdGgpOworICAgICAg
ICByZXR1cm4gIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobV9sb2NhbFN0b3JhZ2VQYXRoKSAmJiAh
RmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhtX2lkYlN0b3JhZ2VQYXRoKTsKICAgICB9CiAKICAgICBP
cHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBmZXRjaERhdGFUeXBlc0luTGlzdChPcHRpb25TZXQ8
V2Vic2l0ZURhdGFUeXBlPiB0eXBlcykKQEAgLTE3Niw5ICsxOTksMTIgQEAgcHVibGljOgogCiAg
ICAgICAgIGlmICh0eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlNlc3Npb25TdG9yYWdl
KSAmJiBtb2RpZmllZFNpbmNlVGltZSA9PSAtV2FsbFRpbWU6OmluZmluaXR5KCkpCiAgICAgICAg
ICAgICBkZWxldGVTZXNzaW9uU3RvcmFnZURhdGEoKTsKKworICAgICAgICBpZiAodHlwZXMuY29u
dGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpKQorICAgICAgICAgICAg
ZGVsZXRlSURCU3RvcmFnZURhdGEobW9kaWZpZWRTaW5jZVRpbWUpOwogICAgIH0KIAotICAgIHZv
aWQgbW92ZURhdGEoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFn
ZVBhdGgpCisgICAgdm9pZCBtb3ZlRGF0YShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmlu
ZyYgbG9jYWxTdG9yYWdlUGF0aCwgY29uc3QgU3RyaW5nJiBpZGJTdG9yYWdlUGF0aCkKICAgICB7
CiAgICAgICAgIG1fZmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyID0gbnVsbHB0cjsKICAgICAgICAg
aWYgKG1fbG9jYWxTdG9yYWdlTWFuYWdlcikKQEAgLTE5MSw2ICsyMTcsMTEgQEAgcHVibGljOgog
ICAgICAgICAgICAgRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKEZpbGVTeXN0ZW06OnBh
cmVudFBhdGgobG9jYWxTdG9yYWdlUGF0aCkpOwogICAgICAgICAgICAgV2ViQ29yZTo6U1FMaXRl
RmlsZVN5c3RlbTo6bW92ZURhdGFiYXNlRmlsZShtX2xvY2FsU3RvcmFnZVBhdGgsIGxvY2FsU3Rv
cmFnZVBhdGgpOwogICAgICAgICB9CisKKyAgICAgICAgaWYgKCFtX2lkYlN0b3JhZ2VQYXRoLmlz
RW1wdHkoKSAmJiAhaWRiU3RvcmFnZVBhdGguaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBGaWxl
U3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoRmlsZVN5c3RlbTo6cGFyZW50UGF0aChpZGJTdG9y
YWdlUGF0aCkpOworICAgICAgICAgICAgV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6bW92ZURh
dGFiYXNlRmlsZShtX2lkYlN0b3JhZ2VQYXRoLCBpZGJTdG9yYWdlUGF0aCk7CisgICAgICAgIH0K
ICAgICB9CiAKIHByaXZhdGU6CkBAIC0yMDcsNiArMjM4LDExIEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgcmVzdWx0LmFkZChXZWJzaXRlRGF0YVR5cGU6OlNlc3Npb25TdG9yYWdlKTsKICAg
ICAgICAgfQogCisgICAgICAgIGlmICh0eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6Oklu
ZGV4ZWREQkRhdGFiYXNlcykpIHsKKyAgICAgICAgICAgIGlmIChtX2lkYlN0b3JhZ2VNYW5hZ2Vy
ICYmIG1faWRiU3RvcmFnZU1hbmFnZXItPmhhc0RhdGFJbk1lbW9yeSgpKQorICAgICAgICAgICAg
ICAgIHJlc3VsdC5hZGQoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpOworICAg
ICAgICB9CisKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKQEAgLTIyMyw2ICsyNTks
MTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICByZXN1bHQuYWRkKFdlYnNpdGVEYXRhVHlw
ZTo6TG9jYWxTdG9yYWdlKTsKICAgICAgICAgfQogCisgICAgICAgIGlmICh0eXBlcy5jb250YWlu
cyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykgJiYgIXJlc3VsdC5jb250YWlu
cyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykpIHsKKyAgICAgICAgICAgIGlm
IChhdXRvIGRhdGFiYXNlcyA9IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobV9pZGJTdG9yYWdl
UGF0aCk7ICFkYXRhYmFzZXMuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQo
V2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpOworICAgICAgICB9CisKICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKQEAgLTI1OSw3ICszMDAsMTUgQEAgcHJpdmF0ZToK
ICAgICAgICAgaWYgKCFtX3Nlc3Npb25TdG9yYWdlTWFuYWdlci0+aXNBY3RpdmUoKSkKICAgICAg
ICAgICAgIG1fc2Vzc2lvblN0b3JhZ2VNYW5hZ2VyID0gbnVsbHB0cjsKICAgICB9Ci0gICAgCisK
KyAgICB2b2lkIGRlbGV0ZUlEQlN0b3JhZ2VEYXRhKFdhbGxUaW1lIHRpbWUpCisgICAgeworICAg
ICAgICBpZiAobV9pZGJTdG9yYWdlTWFuYWdlcikKKyAgICAgICAgICAgIG1faWRiU3RvcmFnZU1h
bmFnZXItPmNsb3NlRGF0YWJhc2VzRm9yRGVsZXRpb24oKTsKKworICAgICAgICBGaWxlU3lzdGVt
OjpkZWxldGVBbGxGaWxlc01vZGlmaWVkU2luY2UobV9pZGJTdG9yYWdlUGF0aCwgdGltZSk7Cisg
ICAgfQorCiAgICAgU3RyaW5nIG1fcm9vdFBhdGg7CiAgICAgU3RyaW5nIG1faWRlbnRpZmllcjsK
ICAgICBTdG9yYWdlQnVja2V0TW9kZSBtX21vZGUgeyBTdG9yYWdlQnVja2V0TW9kZTo6QmVzdEVm
Zm9ydCB9OwpAQCAtMjY3LDExICszMTYsMjUgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8TG9jYWxTdG9yYWdlTWFuYWdlcj4gbV9sb2NhbFN0b3JhZ2VNYW5hZ2VyOwogICAgIFN0cmlu
ZyBtX2xvY2FsU3RvcmFnZVBhdGg7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFNlc3Npb25TdG9yYWdl
TWFuYWdlcj4gbV9zZXNzaW9uU3RvcmFnZU1hbmFnZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPElE
QlN0b3JhZ2VNYW5hZ2VyPiBtX2lkYlN0b3JhZ2VNYW5hZ2VyOworICAgIFN0cmluZyBtX2lkYlN0
b3JhZ2VQYXRoOwogfTsKIAotT3JpZ2luU3RvcmFnZU1hbmFnZXI6Ok9yaWdpblN0b3JhZ2VNYW5h
Z2VyKFN0cmluZyYmIHBhdGgsIFN0cmluZyYmIGxvY2FsU3RvcmFnZVBhdGgpCitzdGF0aWMgUmVm
PFF1b3RhTWFuYWdlcj4gY3JlYXRlUXVvdGFNYW5hZ2VyKHVpbnQ2NF90IHF1b3RhLCBjb25zdCBT
dHJpbmcmIGlkYlN0b3JhZ2VQYXRoLCBjb25zdCBTdHJpbmcmIGNhY2hlU3RvcmFnZVBhdGgsIFF1
b3RhTWFuYWdlcjo6SW5jcmVhc2VRdW90YUZ1bmN0aW9uJiYgaW5jcmVhc2VRdW90YUZ1bmN0aW9u
KQoreworICAgIFF1b3RhTWFuYWdlcjo6R2V0VXNhZ2VGdW5jdGlvbiBnZXRVc2FnZUZ1bmN0aW9u
ID0gW2lkYlN0b3JhZ2VQYXRoLCBjYWNoZVN0b3JhZ2VQYXRoXSgpIHsKKyAgICAgICAgcmV0dXJu
IElEQlN0b3JhZ2VNYW5hZ2VyOjppZGJTdG9yYWdlU2l6ZShpZGJTdG9yYWdlUGF0aCkgKyBDYWNo
ZVN0b3JhZ2U6OkVuZ2luZTo6ZGlza1VzYWdlKGNhY2hlU3RvcmFnZVBhdGgpOworICAgIH07CisK
KyAgICByZXR1cm4gUXVvdGFNYW5hZ2VyOjpjcmVhdGUocXVvdGEsIFdURk1vdmUoZ2V0VXNhZ2VG
dW5jdGlvbiksIFdURk1vdmUoaW5jcmVhc2VRdW90YUZ1bmN0aW9uKSk7Cit9CisKK09yaWdpblN0
b3JhZ2VNYW5hZ2VyOjpPcmlnaW5TdG9yYWdlTWFuYWdlcih1aW50NjRfdCBxdW90YSwgUXVvdGFN
YW5hZ2VyOjpJbmNyZWFzZVF1b3RhRnVuY3Rpb24mJiBpbmNyZWFzZVF1b3RhRnVuY3Rpb24sIFN0
cmluZyYmIHBhdGgsIFN0cmluZyYmIGxvY2FsU3RvcmFnZVBhdGgsIFN0cmluZyYmIGlkYlN0b3Jh
Z2VQYXRoLCBTdHJpbmcmJiBjYWNoZVN0b3JhZ2VQYXRoKQogICAgIDogbV9wYXRoKFdURk1vdmUo
cGF0aCkpCiAgICAgLCBtX2xvY2FsU3RvcmFnZVBhdGgoV1RGTW92ZShsb2NhbFN0b3JhZ2VQYXRo
KSkKKyAgICAsIG1faWRiU3RvcmFnZVBhdGgoV1RGTW92ZShpZGJTdG9yYWdlUGF0aCkpCisgICAg
LCBtX2NhY2hlU3RvcmFnZVBhdGgoV1RGTW92ZShjYWNoZVN0b3JhZ2VQYXRoKSkKKyAgICAsIG1f
cXVvdGFNYW5hZ2VyKGNyZWF0ZVF1b3RhTWFuYWdlcihxdW90YSwgbV9pZGJTdG9yYWdlUGF0aCwg
bV9jYWNoZVN0b3JhZ2VQYXRoLCBXVEZNb3ZlKGluY3JlYXNlUXVvdGFGdW5jdGlvbikpKQogewog
ICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogfQpAQCAtMjg3LDExICszNTAsMTYgQEAg
dm9pZCBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6Y29ubmVjdGlvbkNsb3NlZChJUEM6OkNvbm5lY3Rp
b246OlVuaXF1ZUlEIGNvbm5lY3Rpb24KIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVj
a2V0JiBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6ZGVmYXVsdEJ1Y2tldCgpCiB7CiAgICAgaWYgKCFt
X2RlZmF1bHRCdWNrZXQpCi0gICAgICAgIG1fZGVmYXVsdEJ1Y2tldCA9IG1ha2VVbmlxdWU8U3Rv
cmFnZUJ1Y2tldD4obV9wYXRoLCAiZGVmYXVsdCJfcywgbV9sb2NhbFN0b3JhZ2VQYXRoKTsKKyAg
ICAgICAgbV9kZWZhdWx0QnVja2V0ID0gbWFrZVVuaXF1ZTxTdG9yYWdlQnVja2V0PihtX3BhdGgs
ICJkZWZhdWx0Il9zLCBtX2xvY2FsU3RvcmFnZVBhdGgsIG1faWRiU3RvcmFnZVBhdGgpOwogCiAg
ICAgcmV0dXJuICptX2RlZmF1bHRCdWNrZXQ7CiB9CiAKK1F1b3RhTWFuYWdlciYgT3JpZ2luU3Rv
cmFnZU1hbmFnZXI6OnF1b3RhTWFuYWdlcigpCit7CisgICAgcmV0dXJuIG1fcXVvdGFNYW5hZ2Vy
LmdldCgpOworfQorCiBGaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXImIE9yaWdpblN0b3JhZ2VNYW5h
Z2VyOjpmaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIoRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdp
c3RyeSYgcmVnaXN0cnkpCiB7CiAgICAgcmV0dXJuIGRlZmF1bHRCdWNrZXQoKS5maWxlU3lzdGVt
U3RvcmFnZU1hbmFnZXIocmVnaXN0cnkpOwpAQCAtMzE3LDYgKzM4NSwyMyBAQCBTZXNzaW9uU3Rv
cmFnZU1hbmFnZXIqIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpleGlzdGluZ1Nlc3Npb25TdG9yYWdl
TWFuYWdlcigpCiAgICAgcmV0dXJuIGRlZmF1bHRCdWNrZXQoKS5leGlzdGluZ1Nlc3Npb25TdG9y
YWdlTWFuYWdlcigpOwogfQogCitJREJTdG9yYWdlTWFuYWdlciYgT3JpZ2luU3RvcmFnZU1hbmFn
ZXI6OmlkYlN0b3JhZ2VNYW5hZ2VyKElEQlN0b3JhZ2VSZWdpc3RyeSYgcmVnaXN0cnkpCit7Cisg
ICAgcmV0dXJuIGRlZmF1bHRCdWNrZXQoKS5pZGJTdG9yYWdlTWFuYWdlcihyZWdpc3RyeSwgW3F1
b3RhTWFuYWdlciA9IFdlYWtQdHIgeyB0aGlzLT5xdW90YU1hbmFnZXIoKSB9XSh1aW50NjRfdCBz
cGFjZVJlcXVlc3RlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikgbXV0YWJsZSB7CisgICAgICAgIGlmICghcXVvdGFNYW5hZ2VyKQorICAgICAgICAg
ICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKworICAgICAgICBxdW90YU1hbmFn
ZXItPnJlcXVlc3RTcGFjZShzcGFjZVJlcXVlc3RlZCwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1dG8gZGVjaXNpb24pIG11dGFibGUgeworICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoZGVjaXNpb24gPT0gUXVvdGFNYW5hZ2VyOjpEZWNpc2lv
bjo6R3JhbnQpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKworSURCU3RvcmFnZU1hbmFnZXIq
IE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpleGlzdGluZ0lEQlN0b3JhZ2VNYW5hZ2VyKCkKK3sKKyAg
ICByZXR1cm4gZGVmYXVsdEJ1Y2tldCgpLmV4aXN0aW5nSURCU3RvcmFnZU1hbmFnZXIoKTsKK30K
KwogYm9vbCBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6aXNBY3RpdmUoKQogewogICAgIHJldHVybiBk
ZWZhdWx0QnVja2V0KCkuaXNBY3RpdmUoKTsKQEAgLTM0OSwxMSArNDM0LDExIEBAIHZvaWQgT3Jp
Z2luU3RvcmFnZU1hbmFnZXI6OmRlbGV0ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4g
dHlwZXMsIFdhbGxUaW1lCiAgICAgZGVmYXVsdEJ1Y2tldCgpLmRlbGV0ZURhdGEodHlwZXMsIG1v
ZGlmaWVkU2luY2UpOwogfQogCi12b2lkIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjptb3ZlRGF0YShj
b25zdCBTdHJpbmcmIG5ld1BhdGgsIGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlUGF0aCkKK3Zv
aWQgT3JpZ2luU3RvcmFnZU1hbmFnZXI6Om1vdmVEYXRhKGNvbnN0IFN0cmluZyYgbmV3UGF0aCwg
Y29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VQYXRoLCBjb25zdCBTdHJpbmcmIGlkYlN0b3JhZ2VQ
YXRoKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgZGVmYXVsdEJ1
Y2tldCgpLm1vdmVEYXRhKG5ld1BhdGgsIGxvY2FsU3RvcmFnZVBhdGgpOworICAgIGRlZmF1bHRC
dWNrZXQoKS5tb3ZlRGF0YShuZXdQYXRoLCBsb2NhbFN0b3JhZ2VQYXRoLCBpZGJTdG9yYWdlUGF0
aCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2VyLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuaAppbmRl
eCA1ZTc2Njk5ODZlNDY2ODVmMzg5YjdhNTI3MWU2NmQwZTYzYzJkMTllLi4zZWU3N2ZmNmUwYjgx
MmUxMzFjYTBlY2FkNGEyOWEzNjFmMjMzNGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuaApAQCAt
MjYsMTcgKzI2LDE2IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIK
KyNpbmNsdWRlICJRdW90YU1hbmFnZXIuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgewotc3RydWN0IENsaWVudE9yaWdpbjsKLX0KLQogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnk7
CiBjbGFzcyBGaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXI7CiBjbGFzcyBMb2NhbFN0b3JhZ2VNYW5h
Z2VyOworY2xhc3MgSURCU3RvcmFnZU1hbmFnZXI7CitjbGFzcyBJREJTdG9yYWdlUmVnaXN0cnk7
CiBjbGFzcyBTZXNzaW9uU3RvcmFnZU1hbmFnZXI7CiBjbGFzcyBTdG9yYWdlQXJlYVJlZ2lzdHJ5
OwogZW51bSBjbGFzcyBXZWJzaXRlRGF0YVR5cGUgOiB1aW50MzJfdDsKQEAgLTQ0LDM1ICs0Mywz
OCBAQCBlbnVtIGNsYXNzIFdlYnNpdGVEYXRhVHlwZSA6IHVpbnQzMl90OwogY2xhc3MgT3JpZ2lu
U3RvcmFnZU1hbmFnZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgot
ICAgIE9yaWdpblN0b3JhZ2VNYW5hZ2VyKFN0cmluZyYmIHBhdGgsIFN0cmluZyYmIGxvY2FsU3Rv
cmFnZVBhdGgpOworICAgIE9yaWdpblN0b3JhZ2VNYW5hZ2VyKHVpbnQ2NF90IHF1b3RhLCBRdW90
YU1hbmFnZXI6OkluY3JlYXNlUXVvdGFGdW5jdGlvbiYmLCBTdHJpbmcmJiBwYXRoLCBTdHJpbmcm
JiBsb2NhbFN0b3JhZ2VQYXRoLCBTdHJpbmcmJiBpZGJTdG9yYWdlUGF0aCwgU3RyaW5nJiYgY2Fj
aGVTdG9yYWdlUGF0aCk7CiAgICAgfk9yaWdpblN0b3JhZ2VNYW5hZ2VyKCk7CiAKICAgICB2b2lk
IGNvbm5lY3Rpb25DbG9zZWQoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCk7CiAgICAgYm9vbCBw
ZXJzaXN0ZWQoKSBjb25zdCB7IHJldHVybiBtX3BlcnNpc3RlZDsgfQogICAgIHZvaWQgc2V0UGVy
c2lzdGVkKGJvb2wgdmFsdWUpOworICAgIFF1b3RhTWFuYWdlciYgcXVvdGFNYW5hZ2VyKCk7CiAg
ICAgRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyJiBmaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIoRmls
ZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeSYpOwogICAgIExvY2FsU3RvcmFnZU1hbmFnZXIm
IGxvY2FsU3RvcmFnZU1hbmFnZXIoU3RvcmFnZUFyZWFSZWdpc3RyeSYpOwogICAgIExvY2FsU3Rv
cmFnZU1hbmFnZXIqIGV4aXN0aW5nTG9jYWxTdG9yYWdlTWFuYWdlcigpOwogICAgIFNlc3Npb25T
dG9yYWdlTWFuYWdlciYgc2Vzc2lvblN0b3JhZ2VNYW5hZ2VyKFN0b3JhZ2VBcmVhUmVnaXN0cnkm
KTsKICAgICBTZXNzaW9uU3RvcmFnZU1hbmFnZXIqIGV4aXN0aW5nU2Vzc2lvblN0b3JhZ2VNYW5h
Z2VyKCk7CisgICAgSURCU3RvcmFnZU1hbmFnZXImIGlkYlN0b3JhZ2VNYW5hZ2VyKElEQlN0b3Jh
Z2VSZWdpc3RyeSYpOworICAgIElEQlN0b3JhZ2VNYW5hZ2VyKiBleGlzdGluZ0lEQlN0b3JhZ2VN
YW5hZ2VyKCk7CiAgICAgYm9vbCBpc0FjdGl2ZSgpOwogICAgIGJvb2wgaXNFbXB0eSgpOwogICAg
IE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGZldGNoRGF0YVR5cGVzSW5MaXN0KE9wdGlvblNl
dDxXZWJzaXRlRGF0YVR5cGU+KTsKICAgICB2b2lkIGRlbGV0ZURhdGEoT3B0aW9uU2V0PFdlYnNp
dGVEYXRhVHlwZT4sIFdhbGxUaW1lKTsKLSAgICB2b2lkIG1vdmVEYXRhKGNvbnN0IFN0cmluZyYg
bmV3UGF0aCwgY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VQYXRoKTsKKyAgICB2b2lkIG1vdmVE
YXRhKGNvbnN0IFN0cmluZyYgbmV3UGF0aCwgY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VQYXRo
LCBjb25zdCBTdHJpbmcmIGlkYlN0b3JhZ2VQYXRoKTsKIAogcHJpdmF0ZToKICAgICBlbnVtIGNs
YXNzIFN0b3JhZ2VCdWNrZXRNb2RlIDogYm9vbDsKICAgICBjbGFzcyBTdG9yYWdlQnVja2V0Owog
ICAgIFN0b3JhZ2VCdWNrZXQmIGRlZmF1bHRCdWNrZXQoKTsKIAotICAgIHZvaWQgY3JlYXRlT3Jp
Z2luRmlsZUlmTmVjZXNzYXJ5KGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYpOwotICAgIHZv
aWQgZGVsZXRlT3JpZ2luRmlsZUlmTmVjZXNzYXJ5KCk7Ci0KICAgICBzdGQ6OnVuaXF1ZV9wdHI8
U3RvcmFnZUJ1Y2tldD4gbV9kZWZhdWx0QnVja2V0OwogICAgIFN0cmluZyBtX3BhdGg7CiAgICAg
Ym9vbCBtX3BlcnNpc3RlZCB7IGZhbHNlIH07CiAgICAgU3RyaW5nIG1fbG9jYWxTdG9yYWdlUGF0
aDsKKyAgICBTdHJpbmcgbV9pZGJTdG9yYWdlUGF0aDsKKyAgICBTdHJpbmcgbV9jYWNoZVN0b3Jh
Z2VQYXRoOworICAgIFJlZjxRdW90YU1hbmFnZXI+IG1fcXVvdGFNYW5hZ2VyOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3N0b3JhZ2UvUXVvdGFNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc3RvcmFnZS9RdW90YU1hbmFnZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMxNGMzYTZiYzEzYTVmMDJk
OGM4MmRlNDMxYjllMWFkMTQ3YTFmNzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvUXVvdGFNYW5hZ2VyLmNwcApAQCAtMCwwICsxLDEzNiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlF1b3Rh
TWFuYWdlci5oIgorCisjaW5jbHVkZSA8d3RmL1Njb3BlLmg+CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitSZWY8UXVvdGFNYW5hZ2VyPiBRdW90YU1hbmFnZXI6OmNyZWF0ZSh1aW50NjRfdCBxdW90
YSwgR2V0VXNhZ2VGdW5jdGlvbiYmIGdldFVzYWdlRnVuY3Rpb24sIEluY3JlYXNlUXVvdGFGdW5j
dGlvbiYmIGluY3JlYXNlUXVvdGFGdW5jdGlvbikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBRdW90YU1hbmFnZXIocXVvdGEsIFdURk1vdmUoZ2V0VXNhZ2VGdW5jdGlvbiksIFdURk1vdmUo
aW5jcmVhc2VRdW90YUZ1bmN0aW9uKSkpOworfQorCitRdW90YU1hbmFnZXI6OlF1b3RhTWFuYWdl
cih1aW50NjRfdCBxdW90YSwgR2V0VXNhZ2VGdW5jdGlvbiYmIGdldFVzYWdlRnVuY3Rpb24sIElu
Y3JlYXNlUXVvdGFGdW5jdGlvbiYmIGluY3JlYXNlUXVvdGFGdW5jdGlvbikKKyAgICA6IG1fcXVv
dGEocXVvdGEpCisgICAgLCBtX2luaXRpYWxRdW90YShxdW90YSkKKyAgICAsIG1fZ2V0VXNhZ2VG
dW5jdGlvbihXVEZNb3ZlKGdldFVzYWdlRnVuY3Rpb24pKQorICAgICwgbV9pbmNyZWFzZVF1b3Rh
RnVuY3Rpb24oV1RGTW92ZShpbmNyZWFzZVF1b3RhRnVuY3Rpb24pKQoreworfQorCit2b2lkIFF1
b3RhTWFuYWdlcjo6cmVxdWVzdFNwYWNlKHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkLCBSZXF1ZXN0
Q2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBtX3JlcXVlc3RzLmFwcGVuZChRdW90YU1hbmFn
ZXI6OlJlcXVlc3QgeyBzcGFjZVJlcXVlc3RlZCwgV1RGTW92ZShjYWxsYmFjayksIFF1b3RhSW5j
cmVhc2VSZXF1ZXN0SWRlbnRpZmllciB7IH0gfSk7CisgICAgaGFuZGxlUmVxdWVzdHMoKTsKK30K
Kwordm9pZCBRdW90YU1hbmFnZXI6OmhhbmRsZVJlcXVlc3RzKCkKK3sKKyAgICBpZiAobV9jdXJy
ZW50UmVxdWVzdCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9pc0hhbmRsaW5nUmVxdWVzdHMg
PSB0cnVlOworICAgIGF1dG8gY2xlYXJJc0hhbmRsaW5nUmVxdWVzdHMgPSBtYWtlU2NvcGVFeGl0
KFsmXSB7CisgICAgICAgIG1faXNIYW5kbGluZ1JlcXVlc3RzID0gZmFsc2U7CisgICAgfSk7CisK
KyAgICB3aGlsZSAoIW1fY3VycmVudFJlcXVlc3QgJiYgIW1fcmVxdWVzdHMuaXNFbXB0eSgpKSB7
CisgICAgICAgIG1fY3VycmVudFJlcXVlc3QgPSBtX3JlcXVlc3RzLnRha2VGaXJzdCgpOworICAg
ICAgICBpZiAoZ3JhbnRXaXRoQ3VycmVudFF1b3RhKG1fY3VycmVudFJlcXVlc3QtPnNwYWNlUmVx
dWVzdGVkKSkgeworICAgICAgICAgICAgbV9jdXJyZW50UmVxdWVzdC0+Y2FsbGJhY2soRGVjaXNp
b246OkdyYW50KTsKKyAgICAgICAgICAgIG1fY3VycmVudFJlcXVlc3QgPSBzdGQ6Om51bGxvcHQ7
CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIG1fY3VycmVudFJl
cXVlc3QtPmlkZW50aWZpZXIgPSBRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXI6OmdlbmVy
YXRlVGhyZWFkU2FmZSgpOworICAgICAgICBtX2luY3JlYXNlUXVvdGFGdW5jdGlvbihtX2N1cnJl
bnRSZXF1ZXN0LT5pZGVudGlmaWVyLCBtX3F1b3RhLCAqbV91c2FnZSwgbV9jdXJyZW50UmVxdWVz
dC0+c3BhY2VSZXF1ZXN0ZWQpOworICAgIH0KK30KKworYm9vbCBRdW90YU1hbmFnZXI6OmdyYW50
V2l0aEN1cnJlbnRRdW90YSh1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCkKK3sKKyAgICBpZiAoZ3Jh
bnRGYXN0UGF0aChzcGFjZVJlcXVlc3RlZCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAg
Ly8gV2hlbiBRdW90YU1hbmFnZXIgaXMgdXNlZCBmb3IgdGhlIGZpcnN0IHRpbWUsIHdlIHdhbnQg
dG8gbWFrZSBzdXJlIGl0cyBpbml0aWFsIHF1b3RhIGlzIGJpZ2dlciB0aGFuIGV4aXN0aW5nIGRp
c2sgdXNhZ2UsCisgICAgLy8gYmFzZWQgb24gdGhlIGFzc3VtcHRpb24gdGhhdCB0aGUgcXVvdGEg
d2FzIGluY3JlYXNlZCB0byBhdCBsZWFzdCB0aGUgZGlzayB1c2FnZSB1bmRlciB1c2VyJ3MgcGVy
bWlzc2lvbiBiZWZvcmUuCisgICAgYm9vbCBzaG91bGRVcGRhdGVRdW90YUJhc2Vkb25Vc2FnZSA9
ICFtX3VzYWdlOworICAgIG1fdXNhZ2UgPSBtX2dldFVzYWdlRnVuY3Rpb24oKTsKKyAgICBpZiAo
c2hvdWxkVXBkYXRlUXVvdGFCYXNlZG9uVXNhZ2UpIHsKKyAgICAgICAgYXV0byBkZWZhdWx0UXVv
dGFTdGVwID0gbV9xdW90YSAvIDEwOworICAgICAgICBtX3F1b3RhID0gc3RkOjptYXgobV9xdW90
YSwgZGVmYXVsdFF1b3RhU3RlcCAqICgoKm1fdXNhZ2UgLyBkZWZhdWx0UXVvdGFTdGVwKSArIDEp
KTsKKyAgICB9CisgICAgbV9xdW90YUNvdW50ZG93biA9ICptX3VzYWdlIDwgbV9xdW90YSA/IG1f
cXVvdGEgLSAqbV91c2FnZSA6IDA7CisKKyAgICByZXR1cm4gZ3JhbnRGYXN0UGF0aChzcGFjZVJl
cXVlc3RlZCk7Cit9CisKK2Jvb2wgUXVvdGFNYW5hZ2VyOjpncmFudEZhc3RQYXRoKHVpbnQ2NF90
IHNwYWNlUmVxdWVzdGVkKQoreworICAgIGlmIChzcGFjZVJlcXVlc3RlZCA8PSBtX3F1b3RhQ291
bnRkb3duKSB7CisgICAgICAgIG1fcXVvdGFDb3VudGRvd24gLT0gc3BhY2VSZXF1ZXN0ZWQ7Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9p
ZCBRdW90YU1hbmFnZXI6OmRpZEluY3JlYXNlUXVvdGEoUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IG5ld1F1b3RhKQorewor
ICAgIGlmICghbV9jdXJyZW50UmVxdWVzdCB8fCBtX2N1cnJlbnRSZXF1ZXN0LT5pZGVudGlmaWVy
ICE9IGlkZW50aWZpZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChuZXdRdW90YSkgewor
ICAgICAgICBtX3F1b3RhID0gKm5ld1F1b3RhOworICAgICAgICBtX3F1b3RhQ291bnRkb3duID0g
MDsgLy8gUmVjYWxjdWxhdGUgbV9xdW90YUNvdW50ZG93biBiYXNlZCBvbiB1c2FnZS4KKyAgICB9
CisKKyAgICBhdXRvIGRlY2lzaW9uID0gZ3JhbnRXaXRoQ3VycmVudFF1b3RhKG1fY3VycmVudFJl
cXVlc3QtPnNwYWNlUmVxdWVzdGVkKSA/IERlY2lzaW9uOjpHcmFudCA6IERlY2lzaW9uOjpEZW55
OworICAgIG1fY3VycmVudFJlcXVlc3QtPmNhbGxiYWNrKGRlY2lzaW9uKTsKKyAgICBtX2N1cnJl
bnRSZXF1ZXN0ID0gc3RkOjpudWxsb3B0OworCisgICAgaWYgKCFtX2lzSGFuZGxpbmdSZXF1ZXN0
cykKKyAgICAgICAgaGFuZGxlUmVxdWVzdHMoKTsKK30KKwordm9pZCBRdW90YU1hbmFnZXI6OnJl
c2V0UXVvdGFVcGRhdGVkQmFzZWRPblVzYWdlRm9yVGVzdGluZygpCit7CisgICAgbV9xdW90YSA9
IG1faW5pdGlhbFF1b3RhOworICAgIG1fcXVvdGFDb3VudGRvd24gPSAwOworICAgIG1fdXNhZ2Ug
PSBzdGQ6Om51bGxvcHQ7Cit9CisKK3ZvaWQgUXVvdGFNYW5hZ2VyOjpyZXNldFF1b3RhRm9yVGVz
dGluZygpCit7CisgICAgbV9xdW90YSA9IG1faW5pdGlhbFF1b3RhOworICAgIG1fcXVvdGFDb3Vu
dGRvd24gPSAwOworfQorCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvUXVvdGFNYW5hZ2VyLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvUXVvdGFNYW5hZ2VyLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uY2M1MjYwNDNlOWViMzYzZjYyZjk3NTUyZDkxMjc3ZjA5OTIyNmU5MgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9RdW90YU1hbmFnZXIu
aApAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIlF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllci5oIgorI2luY2x1ZGUgPHd0Zi9D
b21wbGV0aW9uSGFuZGxlci5oPgorI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworY2xhc3MgUXVvdGFNYW5hZ2VyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3Vu
dGVkPFF1b3RhTWFuYWdlcj4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxRdW90YU1hbmFnZXI+IHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICB1c2luZyBHZXRVc2Fn
ZUZ1bmN0aW9uID0gRnVuY3Rpb248dWludDY0X3QoKT47CisgICAgdXNpbmcgSW5jcmVhc2VRdW90
YUZ1bmN0aW9uID0gRnVuY3Rpb248dm9pZChRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIs
IHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgY3VycmVudFVzYWdlLCB1aW50NjRfdCBy
ZXF1ZXN0ZWRJbmNyZWFzZSk+OworICAgIHN0YXRpYyBSZWY8UXVvdGFNYW5hZ2VyPiBjcmVhdGUo
dWludDY0X3QgcXVvdGEsIEdldFVzYWdlRnVuY3Rpb24mJiwgSW5jcmVhc2VRdW90YUZ1bmN0aW9u
JiYpOworCisgICAgZW51bSBjbGFzcyBEZWNpc2lvbiB7IERlbnksIEdyYW50IH07CisgICAgdXNp
bmcgUmVxdWVzdENhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChEZWNpc2lvbik+Owor
ICAgIHZvaWQgcmVxdWVzdFNwYWNlKHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkLCBSZXF1ZXN0Q2Fs
bGJhY2smJik7CisgICAgdm9pZCBkaWRJbmNyZWFzZVF1b3RhKFF1b3RhSW5jcmVhc2VSZXF1ZXN0
SWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbmV3UXVvdGEpOworCisgICAgdm9p
ZCByZXNldFF1b3RhVXBkYXRlZEJhc2VkT25Vc2FnZUZvclRlc3RpbmcoKTsKKyAgICB2b2lkIHJl
c2V0UXVvdGFGb3JUZXN0aW5nKCk7CisKK3ByaXZhdGU6CisgICAgUXVvdGFNYW5hZ2VyKHVpbnQ2
NF90IHF1b3RhLCBHZXRVc2FnZUZ1bmN0aW9uJiYsIEluY3JlYXNlUXVvdGFGdW5jdGlvbiYmKTsK
KyAgICB2b2lkIGhhbmRsZVJlcXVlc3RzKCk7CisgICAgYm9vbCBncmFudFdpdGhDdXJyZW50UXVv
dGEodWludDY0X3Qgc3BhY2VSZXF1ZXN0ZWQpOworICAgIGJvb2wgZ3JhbnRGYXN0UGF0aCh1aW50
NjRfdCBzcGFjZVJlcXVlc3RlZCk7CisKKyAgICBzdHJ1Y3QgUmVxdWVzdCB7CisgICAgICAgIHVp
bnQ2NF90IHNwYWNlUmVxdWVzdGVkOworICAgICAgICBSZXF1ZXN0Q2FsbGJhY2sgY2FsbGJhY2s7
CisgICAgICAgIFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllciBpZGVudGlmaWVyOworICAg
IH07CisgICAgRGVxdWU8UmVxdWVzdD4gbV9yZXF1ZXN0czsKKyAgICBzdGQ6Om9wdGlvbmFsPFJl
cXVlc3Q+IG1fY3VycmVudFJlcXVlc3Q7CisgICAgYm9vbCBtX2lzSGFuZGxpbmdSZXF1ZXN0cyB7
IGZhbHNlIH07CisgICAgdWludDY0X3QgbV9xdW90YUNvdW50ZG93biB7IDAgfTsKKyAgICB1aW50
NjRfdCBtX3F1b3RhOworICAgIHVpbnQ2NF90IG1faW5pdGlhbFF1b3RhOyAvLyBUZXN0IG9ubHku
CisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbV91c2FnZTsKKyAgICBHZXRVc2FnZUZ1bmN0
aW9uIG1fZ2V0VXNhZ2VGdW5jdGlvbjsKKyAgICBJbmNyZWFzZVF1b3RhRnVuY3Rpb24gbV9pbmNy
ZWFzZVF1b3RhRnVuY3Rpb247Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL2dlbmVyYXRlLXVuaWZpZWQtc291cmNlcy5zaCBi
L1NvdXJjZS9XZWJLaXQvU2NyaXB0cy9nZW5lcmF0ZS11bmlmaWVkLXNvdXJjZXMuc2gKaW5kZXgg
MmEzZDZiNWVlYjI0MTQwMWM4MGVhM2JlZDgyMzgyZDAzNTY1MjM2NC4uNWJlZDEyMmEzZTZhOGEz
MzQxOWYyMTFmNTgwNGMxMDYyZmI1MWEyYyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYktpdC9TY3Jp
cHRzL2dlbmVyYXRlLXVuaWZpZWQtc291cmNlcy5zaAorKysgYi9Tb3VyY2UvV2ViS2l0L1Njcmlw
dHMvZ2VuZXJhdGUtdW5pZmllZC1zb3VyY2VzLnNoCkBAIC0xNCw3ICsxNCw3IEBAIGlmIFsgLXog
IiR7QlVJTERfU0NSSVBUU19ESVJ9IiBdOyB0aGVuCiAgICAgZmkKIGZpCiAKLVVuaWZpZWRTb3Vy
Y2VDcHBGaWxlQ291bnQ9MTE1CitVbmlmaWVkU291cmNlQ3BwRmlsZUNvdW50PTExNgogVW5pZmll
ZFNvdXJjZU1tRmlsZUNvdW50PTgwCiAKIGlmIFsgJCMgLWVxIDAgXTsgdGhlbgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJL
aXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggOGI1MjFmNzcwMTU0OGIxYWY4YjQ0
YjM1Mzc0NjM3NjljOTBkZjk4Mi4uZmVjODhiNWNhNTg0YTlmM2Q2OTU5Yzk2MmQ3YTE3ZmY2ZWE0
MWFhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5w
eQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0yODcs
NiArMjg3LDcgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToK
ICAgICAgICAgJ1dlYkNvcmU6Ok5hdGl2ZUltYWdlUmVmZXJlbmNlJywKICAgICAgICAgJ1dlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlBsYXliYWNrVGFyZ2V0Q2xp
ZW50Q29udGV4dElkZW50aWZpZXInLAorICAgICAgICAnV2ViS2l0OjpRdW90YUluY3JlYXNlUmVx
dWVzdElkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6UGx1Z2luTG9hZENsaWVudFBvbGlj
eScsCiAgICAgICAgICdXZWJDb3JlOjpQb2ludGVySUQnLAogICAgICAgICAnV2ViQ29yZTo6UHJv
Y2Vzc0lkZW50aWZpZXInLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0
ZURhdGEvUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJzaXRlRGF0YS9RdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi45OTlhOWVhOTM1M2VmNTkwMTI5MjRiNDA4ZDk3MTRiMjEzMjhmOWM5Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGEvUXVvdGFJbmNyZWFzZVJl
cXVlc3RJZGVudGlmaWVyLmgKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK2VudW0gUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyVHlwZSB7IH07Cit1
c2luZyBRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFF1
b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllclR5cGU+OworCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJh
bWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVy
cy5oCmluZGV4IDE1M2JmOTNiZGY2ZmYxMWI0NjBmNjQ4MjViNDUwMzA4Yjg0NWQzOGQuLjIwOTg0
NjgxNjI5OTA0NzMzODg0Y2ZjYjEyN2FhNTcyMWQyY2VlODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaApAQCAtNzEsOCArNzEsOCBA
QCBzdHJ1Y3QgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgewogICAgIFN0cmluZyBnZW5lcmFs
U3RvcmFnZURpcmVjdG9yeTsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgZ2VuZXJhbFN0
b3JhZ2VEaXJlY3RvcnlIYW5kbGU7CiAKLSAgICB1aW50NjRfdCBwZXJPcmlnaW5TdG9yYWdlUXVv
dGEgeyBXZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2VyOjpkZWZhdWx0UXVvdGEoKSB9OwotICAg
IHVpbnQ2NF90IHBlclRoaXJkUGFydHlPcmlnaW5TdG9yYWdlUXVvdGEgeyBXZWJDb3JlOjpTdG9y
YWdlUXVvdGFNYW5hZ2VyOjpkZWZhdWx0VGhpcmRQYXJ0eVF1b3RhKCkgfTsKKyAgICB1aW50NjRf
dCBwZXJPcmlnaW5TdG9yYWdlUXVvdGE7CisgICAgdWludDY0X3QgcGVyVGhpcmRQYXJ0eU9yaWdp
blN0b3JhZ2VRdW90YTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5k
ZXggNDQ1NzMxMDlhZTMzMjNkNjllMDIyN2JkN2FhNDE1YTNjYjg3OTNmNi4uZGJjMmZiYTgyOWM1
MWM5OWRmZmIxODQxZWI0NjZjOGFiYzEyOGViMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
b3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC0xNDQsMTAgKzE0
NCwxNCBAQCBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5jcHAgQG5vLXVuaWZ5CiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0
ZW1TdG9yYWdlTWFuYWdlci5jcHAKIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0
b3JhZ2VIYW5kbGUuY3BwCiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdl
SGFuZGxlUmVnaXN0cnkuY3BwCitOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VDb25u
ZWN0aW9uVG9DbGllbnQuY3BwCitOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VNYW5h
Z2VyLmNwcAorTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlUmVnaXN0cnkuY3BwCiBO
ZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0xvY2FsU3RvcmFnZU1hbmFnZXIuY3BwCiBOZXR3b3JrUHJv
Y2Vzcy9zdG9yYWdlL01lbW9yeVN0b3JhZ2VBcmVhLmNwcAogTmV0d29ya1Byb2Nlc3Mvc3RvcmFn
ZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwCiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdp
blN0b3JhZ2VNYW5hZ2VyLmNwcAorTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9RdW90YU1hbmFnZXIu
Y3BwCiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1NRTGl0ZVN0b3JhZ2VBcmVhLmNwcAogTmV0d29y
a1Byb2Nlc3Mvc3RvcmFnZS9TZXNzaW9uU3RvcmFnZU1hbmFnZXIuY3BwCiBOZXR3b3JrUHJvY2Vz
cy9zdG9yYWdlL1N0b3JhZ2VBcmVhQmFzZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IGNhMWJmMTBk
OGYyNjkyMzY1ZDM1NzE5YjczYzQwMzE4OTA2ZWJhZWUuLmRhNzk2NTI3ZDUwNjk5YzVjMGRjZTlh
NDQ0MWJhOThmMjcxZmZjY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTQ5Miw2ICsxNDkyLDE2IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVxdWVzdFN0b3JhZ2VTcGFjZShQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IFdlCiAgICAgfSk7CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6aW5jcmVhc2VRdW90YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFdl
YkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZp
ZXIgaWRlbnRpZmllciwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCBjdXJyZW50VXNh
Z2UsIHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkKQoreworICAgIHJlcXVlc3RTdG9yYWdlU3BhY2Uo
c2Vzc2lvbklELCBvcmlnaW4sIGN1cnJlbnRRdW90YSwgY3VycmVudFVzYWdlLCBzcGFjZVJlcXVl
c3RlZCwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHNlc3Npb25JRCwgb3Jp
Z2luLCBpZGVudGlmaWVyXShhdXRvIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vh
a1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgc2VuZChNZXNzYWdlczo6TmV0
d29ya1Byb2Nlc3M6OkRpZEluY3JlYXNlUXVvdGEoc2Vzc2lvbklELCBvcmlnaW4sIGlkZW50aWZp
ZXIsIHJlc3VsdCksIDApOworICAgIH0pOworfQorCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6
OnJlZ2lzdGVyU2NoZW1lRm9yTGVnYWN5Q3VzdG9tUHJvdG9jb2woY29uc3QgU3RyaW5nJiBzY2hl
bWUpCiB7CiAjaWYgRU5BQkxFKExFR0FDWV9DVVNUT01fUFJPVE9DT0xfTUFOQUdFUikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmgKaW5kZXggNWM5YzQ1M2RjYzRkNTg2MThmODU2OTFhMDRiMTU1NzViNWEzYmNjOS4uYTM4MDc4
ZDc5OGY2ZWJhZTlmYmZmZjFhZTdkZTQ3NDQ4OGI4ZjMxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTMzLDYg
KzMzLDcgQEAKICNpbmNsdWRlICJQcm9jZXNzTGF1bmNoZXIuaCIKICNpbmNsdWRlICJQcm9jZXNz
VGhyb3R0bGVyLmgiCiAjaW5jbHVkZSAiUHJvY2Vzc1Rocm90dGxlckNsaWVudC5oIgorI2luY2x1
ZGUgIlF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlVzZXJDb250
ZW50Q29udHJvbGxlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHlNZXNz
YWdlc1JlcGxpZXMuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCkBAIC0zMzksNiAr
MzQwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHRyaWdnZXJCcm93c2luZ0NvbnRleHRHcm91cFN3
aXRjaEZvck5hdmlnYXRpb24oV2ViUGFnZVByb3h5SWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdh
dGlvbklELCBXZWJDb3JlOjpCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uLCBjb25z
dCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVzcG9uc2VEb21haW4sIE5ldHdvcmtSZXNv
dXJjZUxvYWRJZGVudGlmaWVyIGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJU
b1Jlc3VtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIHN1Y2Nlc3MpPiYmKTsKIAogICAg
IHZvaWQgcmVxdWVzdFN0b3JhZ2VTcGFjZShQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6
Q2xpZW50T3JpZ2luJiwgdWludDY0X3QgcXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRTaXplLCB1aW50
NjRfdCBzcGFjZVJlcXVpcmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8
dWludDY0X3Q+IHF1b3RhKT4mJik7CisgICAgdm9pZCBpbmNyZWFzZVF1b3RhKFBBTDo6U2Vzc2lv
bklELCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBRdW90YUluY3JlYXNlUmVxdWVzdElk
ZW50aWZpZXIsIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgY3VycmVudFVzYWdlLCB1
aW50NjRfdCBzcGFjZVJlcXVlc3RlZCk7CiAKICAgICBXZWJzaXRlRGF0YVN0b3JlKiB3ZWJzaXRl
RGF0YVN0b3JlRnJvbVNlc3Npb25JRChQQUw6OlNlc3Npb25JRCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5tZXNzYWdlcy5pbgppbmRleCBhOTk3NmIyMmU3M2ZlNTA0NTU2NjU4NWI1NzA5NTQ1NWEwOGIw
NGZiLi5jOTQ1NWE4YTE2MDFlM2YyYjUyYzU1ODE5NGI3ZTBiMjQ3OTVkZDg2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC02OCw2ICs2OCw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdv
cmtQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIgewogI2VuZGlmCiAKICAgICBSZXF1ZXN0U3Rv
cmFnZVNwYWNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RydWN0IFdlYkNvcmU6OkNsaWVu
dE9yaWdpbiBvcmlnaW4sIHVpbnQ2NF90IHF1b3RhLCB1aW50NjRfdCBjdXJyZW50U2l6ZSwgdWlu
dDY0X3Qgc3BhY2VSZXF1aXJlZCkgLT4gKHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IG5ld1F1b3Rh
KSBBc3luYworICAgIEluY3JlYXNlUXVvdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdHJ1
Y3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbiwgV2ViS2l0OjpRdW90YUluY3JlYXNlUmVx
dWVzdElkZW50aWZpZXIgaWRlbnRpZmllciwgdWludDY0X3QgcXVvdGEsIHVpbnQ2NF90IGN1cnJl
bnRTaXplLCB1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCkKICAgICAKICAgICBSZXNvdXJjZUxvYWRE
aWRTZW5kUmVxdWVzdChXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlkZW50aWZp
ZXIsIHN0cnVjdCBXZWJLaXQ6OlJlc291cmNlTG9hZEluZm8gcmVzb3VyY2VMb2FkSW5mbywgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIHN0ZDo6b3B0aW9uYWw8SVBDOjpGb3JtRGF0
YVJlZmVyZW5jZT4gaHR0cEJvZHkpCiAgICAgUmVzb3VyY2VMb2FkRGlkUGVyZm9ybUhUVFBSZWRp
cmVjdGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlkZW50aWZpZXIsIHN0
cnVjdCBXZWJLaXQ6OlJlc291cmNlTG9hZEluZm8gcmVzb3VyY2VMb2FkSW5mbywgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSByZXNvdXJjZVJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QgcmVxdWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggNDJlMTE4YzZhYWYzNjU4ZjE2YTgyZjg5
ZTk5MThiZDI5NjMwYjExYy4uOGE5MGRhMjU5YmVjOTQ0Nzg4ZGUzZWM3ZDk3ODQ5NDViODI5YWMz
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTE3NzYsNyArMTc3Niw3IEBAIHZvaWQgV2Vic2l0ZURh
dGFTdG9yZTo6ZGlzcGF0Y2hPblF1ZXVlKEZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKIHVp
bnQ2NF90IFdlYnNpdGVEYXRhU3RvcmU6OnBlclRoaXJkUGFydHlPcmlnaW5TdG9yYWdlUXVvdGEo
KSBjb25zdAogewogICAgIC8vIEZJWE1FOiBDb25zaWRlciB3aGV0aGVyIGFsbG93aW5nIHRvIHNl
dCBhIHBlclRoaXJkUGFydHlPcmlnaW5TdG9yYWdlUXVvdGEgZnJvbSBhIFdlYnNpdGVEYXRhU3Rv
cmUuCi0gICAgcmV0dXJuIFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6OmRlZmF1bHRUaGly
ZFBhcnR5UXVvdGFGcm9tUGVyT3JpZ2luUXVvdGEocGVyT3JpZ2luU3RvcmFnZVF1b3RhKCkpOwor
ICAgIHJldHVybiBwZXJPcmlnaW5TdG9yYWdlUXVvdGEoKSAvIDEwOwogfQogCiB2b2lkIFdlYnNp
dGVEYXRhU3RvcmU6OnNldENhY2hlTW9kZWxTeW5jaHJvbm91c2x5Rm9yVGVzdGluZyhDYWNoZU1v
ZGVsIGNhY2hlTW9kZWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXggNmRiODJjMWUwM2Y1OTc1NTcxOTU1Yzll
NWI3YjYwNmUzYmY0MmMwMy4uOTUwYzdkMGMyYjI4M2ViMGIyNGNjNzkxZjFkZTlkYTBhNTllNDQ1
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmUuaApAQCAtMzUzLDYgKzM1Myw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
V1RGOjpTdHJpbmcgZGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSgpOwog
ICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJl
Y3RvcnkoKTsKICAgICBzdGF0aWMgYm9vbCBodHRwM0VuYWJsZWQoKTsKKyAgICBzdGF0aWMgY29u
c3RleHByIHVpbnQ2NF90IGRlZmF1bHRQZXJPcmlnaW5RdW90YSgpIHsgcmV0dXJuIDEwMDAgKiBN
QjsgfQogCiAgICAgdm9pZCByZXNldFF1b3RhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CiAgICAgdm9pZCBjbGVhclN0b3JhZ2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcAppbmRleCBiZWE3NTc5Y2RmY2Uw
NzhiNjc1NDhhMWQwMWRiZjdhNDdmNmY3YTg5Li5jMzFhNDYzNGZmYzllOTEyNThjOGQwM2ZjN2U5
ODljMjQxNDY5NWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3Bw
CkBAIC01Niw2ICs1Niw3IEBAIFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpXZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbihJc1BlcnNpc3RlbnQgaXNQZXJzCiAgICAgICAgIHNldFBD
TU1hY2hTZXJ2aWNlTmFtZSgiY29tLmFwcGxlLndlYmtpdC5hZGF0dHJpYnV0aW9uZC5zZXJ2aWNl
Iik7CiAjZW5kaWYKICAgICB9CisgICAgc2V0UGVyT3JpZ2luU3RvcmFnZVF1b3RhKFdlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRQZXJPcmlnaW5RdW90YSgpKTsKIH0KIAogUmVmPFdlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uPiBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6Y29weSgp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaAppbmRleCBmMTcxYWQ0
Y2U1ZTFiNWNlMTM5NGVjNzgwOTUyNDEwN2Y4MmMxNzRhLi41MTcwN2FlMGU0YmQ4MzI5MWYyNDRh
ZmY3ZWM3ODU3NDA2NTZkZmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
LmgKQEAgLTIwNyw3ICsyMDcsNyBAQCBwcml2YXRlOgogCiAgICAgU3RyaW5nIG1fY2FjaGVTdG9y
YWdlRGlyZWN0b3J5OwogICAgIFN0cmluZyBtX2dlbmVyYWxTdG9yYWdlRGlyZWN0b3J5OwotICAg
IHVpbnQ2NF90IG1fcGVyT3JpZ2luU3RvcmFnZVF1b3RhIHsgV2ViQ29yZTo6U3RvcmFnZVF1b3Rh
TWFuYWdlcjo6ZGVmYXVsdFF1b3RhKCkgfTsKKyAgICB1aW50NjRfdCBtX3Blck9yaWdpblN0b3Jh
Z2VRdW90YTsKICAgICBTdHJpbmcgbV9uZXR3b3JrQ2FjaGVEaXJlY3Rvcnk7CiAgICAgU3RyaW5n
IG1fYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeTsKICAgICBTdHJpbmcgbV9hcHBsaWNhdGlvbkNh
Y2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lIHsgIkZpbGVzIl9zIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VuaWZpZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dl
YktpdC9VbmlmaWVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCAxYjlkOTdjMzhjNDEy
YTdjYzhkM2ZmYzRhNTJjYTVjZTY1Njc1NWYyLi4xMTU0MTY2NGVmOGFmMzZmNDNjZWUzY2MxZDJk
OGY0YTc1ODZlNjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VuaWZpZWRTb3VyY2VzLW91
dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvVW5pZmllZFNvdXJjZXMtb3V0cHV0
LnhjZmlsZWxpc3QKQEAgLTIxLDYgKzIxLDcgQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdC91bmlmaWVkLXNvdXJjZXMvVW5pZmllZFNvdXJjZTExMi5jcHAKICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvdW5pZmllZC1zb3VyY2Vz
L1VuaWZpZWRTb3VyY2UxMTMuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0L3VuaWZpZWQtc291cmNlcy9VbmlmaWVkU291cmNlMTE0LmNwcAogJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC91bmlmaWVkLXNvdXJjZXMvVW5pZmll
ZFNvdXJjZTExNS5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJL
aXQvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2UxMTYuY3BwCiAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L3VuaWZpZWQtc291cmNlcy9VbmlmaWVkU291cmNl
MTItbW0ubW0KICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvdW5p
ZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2UxMi5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2UxMy1tbS5t
bQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggZDI5ZmQ5MWNmNDQ2ZWM3OTU2NTI4NTQzY2ZhMzBhMzI0MjEzZGUzZi4uZTkwYmM0OGI2NGU3
NTdiM2UzMTE0Y2RiNWNhZTU2NTQyNWE3MTQ2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjM1LDcgKzEyMzUsNyBAQAogCQk1Q0FC
REM4NjIyQzQwRkRFMDAxRURFOEUgLyogV0tNZXNzYWdlTGlzdGVuZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQUJEQzg1MjJDNDBGQ0MwMDFFREU4
RSAvKiBXS01lc3NhZ2VMaXN0ZW5lci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTVDQUJEQzg3MjJDNDBGRUQwMDFFREU4RSAvKiBBUElNZXNzYWdl
TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDVDQUJEQzgzMjJDNDBGQTcwMDFFREU4RSAvKiBBUElNZXNzYWdlTGlzdGVuZXIuaCAqLzsgfTsK
IAkJNUNBRERFMDUyMTUwNDZCRDAwNjdEMzA5IC8qIFdLV2ViUHJvY2Vzcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM3NDMwMEUyMTUwMDQ5MjAwNEJG
QTE3IC8qIFdLV2ViUHJvY2Vzcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07Ci0JCTVDQUVDQjY2Mjc0NjVBRTQwMEFCNzhEMCAvKiBVbmlmaWVkU291cmNl
MTE1LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVD
QUVDQjVFMjc0NjVBRTMwMEFCNzhEMCAvKiBVbmlmaWVkU291cmNlMTE1LmNwcCAqLzsgfTsKKwkJ
NUNBRUNCNjYyNzQ2NUFFNDAwQUI3OEQwIC8qIFVuaWZpZWRTb3VyY2UxMTYuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNBRUNCNUUyNzQ2NUFFMzAw
QUI3OEQwIC8qIFVuaWZpZWRTb3VyY2UxMTYuY3BwICovOyB9OwogCQk1Q0FGN0FBNzI2RjkzQUIw
MDAwM0YxOUUgLyogYWRhdHRyaWJ1dGlvbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNUNBRjdBQTUyNkY5M0E5NTAwMDNGMTlFIC8qIGFkYXR0cmli
dXRpb25kLmNwcCAqLzsgfTsKIAkJNUNBRkRFNDUyMTMwODQ2MzAwQjFGN0UxIC8qIF9XS0luc3Bl
Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNB
RkRFNDIyMTMwODQzNTAwQjFGN0UxIC8qIF9XS0luc3BlY3Rvci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVDQUZERTQ3MjEzMDg0NkEwMEIxRjdF
MSAvKiBfV0tJbnNwZWN0b3JJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNUNBRkRFNDQyMTMwODQzNjAwQjFGN0UxIC8qIF9XS0luc3BlY3Rv
ckludGVybmFsLmggKi87IH07CkBAIC0xNDI2LDYgKzE0MjYsOCBAQAogCQk5MzNFODM1QTIzQTFB
RTI4MDBERUYyODkgLyogV2ViSURCU2VydmVyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzM0U4MzU5MjNBMUFERjUwMERFRjI4OSAvKiBX
ZWJJREJTZXJ2ZXJNZXNzYWdlcy5oICovOyB9OwogCQk5MzNFODM1QjIzQTFCNzUwMDBERUYyODkg
LyogV2ViSURCU2VydmVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzM0U4MzU4MjNBMUFERjUwMERFRjI4OSAvKiBXZWJJ
REJTZXJ2ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQk5MzQyNTg5QTI1NUI1MzVBMDA1
OUVFREQgLyogTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzQyNTg5ODI1NUI1MzRCMDA1OUVFREQgLyogTWVk
aWFQZXJtaXNzaW9uVXRpbGl0aWVzLmggKi87IH07CisJCTkzNDI4ODcxMjc3NTU5RjUwMDgxMkJF
MSAvKiBRdW90YU1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDkzNDI4ODZGMjc3NTU5RjQwMDgxMkJFMSAvKiBRdW90YU1hbmFnZXIuaCAqLzsg
fTsKKwkJOTM0Mjg4NzQyNzc1NUI5MDAwODEyQkUxIC8qIFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRl
bnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTM0Mjg4NzMyNzc1NUI4RjAwODEyQkUxIC8qIFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmll
ci5oICovOyB9OwogCQk5MzQ2OEU2RDI3MTRBRjg4MDA5OTgzRTMgLyogU2hhcmVkRmlsZUhhbmRs
ZUNvY29hLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDkzNDY4RTZDMjcxNEFGODgwMDk5ODNFMyAvKiBTaGFyZWRGaWxlSGFuZGxlQ29jb2EuY3BwICov
OyB9OwogCQk5MzRCNzI0NDE5RjVCOUJFMDBBRTk2RDYgLyogV0tBY3Rpb25NZW51SXRlbVR5cGVz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzRCNzI0
MzE5RjVCOUJFMDBBRTk2RDYgLyogV0tBY3Rpb25NZW51SXRlbVR5cGVzLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTM1NDI0MkMyNzAzQkRDQjAw
NUNBNzJDIC8qIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM1NDI0MkEyNzAzQkRDQjAwNUNBNzJD
IC8qIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5oICovOyB9OwpAQCAtMTQ3MSw2ICsx
NDczLDEwIEBACiAJCTkzRDZCN0I0MjU1MjY4RDUwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25SZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5M0Q2QjdBRjI1NTI2OEExMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdC5oICovOyB9OwogCQk5M0Q2QjdCNTI1NTI2OEQ3MDA1OEREM0EgLyog
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNENkI3QjIyNTUyNjhBMjAwNThERDNBIC8qIFNw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaCAqLzsgfTsKIAkJOTNENkI3QjkyNTUz
NEExNzAwNThERDNBIC8qIFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDZCN0I3MjU1
MzRBMTEwMDU4REQzQSAvKiBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTNFMjk2
MTgyNzgzNkExNDAwMDk5QjhCIC8qIElEQlN0b3JhZ2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0UyOTYxNjI3ODM2QTEzMDAwOTlCOEIg
LyogSURCU3RvcmFnZU1hbmFnZXIuaCAqLzsgfTsKKwkJOTNFMjk2MUMyNzgzNkRGRjAwMDk5QjhC
IC8qIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRTI5NjFBMjc4MzZERkYwMDA5OUI4QiAvKiBJREJT
dG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50LmggKi87IH07CisJCTkzRTI5NjI1Mjc4Mzc1N0EwMDA5
OUI4QiAvKiBJREJTdG9yYWdlUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkzRTI5NjIzMjc4Mzc1N0EwMDA5OUI4QiAvKiBJREJTdG9yYWdl
UmVnaXN0cnkuaCAqLzsgfTsKKwkJOTNFMjk2MjkyNzg0RDQzODAwMDk5QjhCIC8qIFVuaWZpZWRT
b3VyY2UxMTUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTNFMjk2MjgyNzg0RDQzODAwMDk5QjhCIC8qIFVuaWZpZWRTb3VyY2UxMTUuY3BwICovOyB9
OwogCQk5M0U2QTRFRTFCQzVERDM5MDBGOEEwRTcgLyogX1dLSGl0VGVzdFJlc3VsdC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNFNkE0RUQxQkM1REQz
OTAwRjhBMEU3IC8qIF9XS0hpdFRlc3RSZXN1bHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0U3OTk4NTI3NTZGQTU1MDA3NDAwOEEgLyogV2Vi
RmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRTc5OTgyMjc1NkZBNTQwMDc0
MDA4QSAvKiBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3Bw
ICovOyB9OwogCQk5M0U3OTk4NzI3NTZGQUI0MDA3NDAwOEEgLyogV2ViRmlsZVN5c3RlbVN0b3Jh
Z2VDb25uZWN0aW9uTWVzc2FnZXNSZXBsaWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5M0U3OTk4MzI3NTZGQTU0MDA3NDAwOEEgLyogV2ViRmlsZVN5
c3RlbVN0b3JhZ2VDb25uZWN0aW9uTWVzc2FnZXNSZXBsaWVzLmggKi87IH07CkBAIC00ODU2LDcg
KzQ4NjIsNyBAQAogCQk1Q0FCREM4NDIyQzQwRkNDMDAxRURFOEUgLyogV0tNZXNzYWdlTGlzdGVu
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tNZXNzYWdlTGlz
dGVuZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0FCREM4NTIyQzQwRkND
MDAxRURFOEUgLyogV0tNZXNzYWdlTGlzdGVuZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV0tNZXNzYWdlTGlzdGVuZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNUNBRERFMEQyMTUxQUEwMTAwNjdEMzA5IC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlz
cG9zaXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VEaXNwb3NpdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1
Q0FFQ0I1RTI3NDY1QUUzMDBBQjc4RDAgLyogVW5pZmllZFNvdXJjZTExNS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBVbmlmaWVkU291cmNlMTE1LmNwcDsgcGF0aCA9ICJEZXJpdmVkU291cmNlcy9X
ZWJLaXQvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2UxMTUuY3BwIjsgc291cmNlVHJlZSA9
IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJNUNBRUNCNUUyNzQ2NUFFMzAwQUI3OEQwIC8qIFVu
aWZpZWRTb3VyY2UxMTYuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gVW5pZmllZFNvdXJjZTExNi5j
cHA7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMvV2ViS2l0L3VuaWZpZWQtc291cmNlcy9VbmlmaWVk
U291cmNlMTE2LmNwcCI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTVD
QUY3QUE0MjZGOTNBNzUwMDAzRjE5RSAvKiBhZGF0dHJpYnV0aW9uZCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5leGVjdXRh
YmxlIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gYWRhdHRyaWJ1dGlvbmQ7IHNvdXJjZVRy
ZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTVDQUY3QUE1MjZGOTNBOTUwMDAzRjE5RSAv
KiBhZGF0dHJpYnV0aW9uZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBhZGF0dHJpYnV0aW9uZC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQUY3QUE2MjZGOTNBQTUwMDAzRjE5
RSAvKiBhZGF0dHJpYnV0aW9uZC54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBhZGF0dHJpYnV0aW9u
ZC54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUyMzEsNiArNTIzNyw5
IEBACiAJCTkzM0U4MzU5MjNBMUFERjUwMERFRjI4OSAvKiBXZWJJREJTZXJ2ZXJNZXNzYWdlcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJJREJTZXJ2ZXJNZXNzYWdlcy5o
OyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYklEQlNlcnZlck1lc3NhZ2VzLmg7IHNv
dXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTkzNDI1ODhGMjU1NURDQTUwMDU5
RUVERCAvKiBNZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBNZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTkzNDI1ODk4MjU1QjUzNEIwMDU5RUVERCAvKiBNZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFQZXJtaXNzaW9uVXRpbGl0
aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzNDI4ODZGMjc3NTU5RjQwMDgx
MkJFMSAvKiBRdW90YU1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UXVvdGFNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzNDI4ODcwMjc3
NTU5RjUwMDgxMkJFMSAvKiBRdW90YU1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUXVvdGFNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJOTM0Mjg4NzMyNzc1NUI4RjAwODEyQkUxIC8qIFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRl
bnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBRdW90YUluY3JlYXNl
UmVxdWVzdElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM0NjhF
NkEyNzE0QUY0NzAwOTk4M0UzIC8qIFNoYXJlZEZpbGVIYW5kbGUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVkRmlsZUhhbmRsZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTkzNDY4RTZDMjcxNEFGODgwMDk5ODNFMyAvKiBTaGFyZWRGaWxl
SGFuZGxlQ29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hh
cmVkRmlsZUhhbmRsZUNvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM0
QjcyNDMxOUY1QjlCRTAwQUU5NkQ2IC8qIFdLQWN0aW9uTWVudUl0ZW1UeXBlcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0FjdGlvbk1lbnVJdGVtVHlwZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUzMTgsNiArNTMyNywxMyBAQAogCQk5M0Q2QjdCMjI1
NTI2OEEyMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25NYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRDZCN0I3MjU1MzRB
MTEwMDU4REQzQSAvKiBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNENkI3QjgyNTUz
NEExMjAwNThERDNBIC8qIFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25DYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkz
RTI5NjE1Mjc4MzZBMTMwMDA5OUI4QiAvKiBJREJTdG9yYWdlTWFuYWdlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJREJTdG9yYWdlTWFuYWdlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRTI5NjE2Mjc4MzZBMTMwMDA5OUI4QiAvKiBJREJT
dG9yYWdlTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJREJTdG9y
YWdlTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0UyOTYxOTI3ODM2
REZFMDAwOTlCOEIgLyogSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNFMjk2MUEyNzgzNkRGRjAwMDk5
QjhCIC8qIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk5M0UyOTYyMjI3ODM3NTdBMDAwOTlCOEIgLyogSURCU3RvcmFn
ZVJlZ2lzdHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElEQlN0
b3JhZ2VSZWdpc3RyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRTI5NjIz
Mjc4Mzc1N0EwMDA5OUI4QiAvKiBJREJTdG9yYWdlUmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSURCU3RvcmFnZVJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTkzRTI5NjI4Mjc4NEQ0MzgwMDA5OUI4QiAvKiBVbmlmaWVkU291cmNlMTE1
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVuaWZpZWRTb3VyY2Ux
MTUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0U2QTRFRDFCQzVERDM5MDBG
OEEwRTcgLyogX1dLSGl0VGVzdFJlc3VsdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBfV0tIaXRUZXN0UmVzdWx0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkz
RTc5OTdFMjc1NkY2NzAwMDc0MDA4QSAvKiBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24u
bWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViRmlsZVN5c3RlbVN0b3JhZ2VD
b25uZWN0aW9uLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0U3
OTk4MTI3NTZGQTUzMDA3NDAwOEEgLyogV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uTWVz
c2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRmlsZVN5c3RlbVN0
b3JhZ2VDb25uZWN0aW9uTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTc0NzcsNiArNzQ5Myw3IEBACiAJCTFBQkY0Mzc4MUEzNjgwMzUwMDNGQjBFNiAvKiBXZWJzaXRl
RGF0YSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJOTM0
Mjg4NzMyNzc1NUI4RjAwODEyQkUxIC8qIFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllci5o
ICovLAogCQkJCTFBNDgzMkQ0MUE5Q0RGOTYwMDhCNERGRSAvKiBXZWJzaXRlRGF0YS5jcHAgKi8s
CiAJCQkJMUE0ODMyRDUxQTlDREY5NjAwOEI0REZFIC8qIFdlYnNpdGVEYXRhLmggKi8sCiAJCQkJ
MUEyOEI4Q0IxQzgwRUQ1OTAwNkZENzQzIC8qIFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24uaCAqLywK
QEAgLTgyMjMsNyArODI0MCw4IEBACiAJCQkJOTNFNzk5RDEyNzYwQUE1QTAwNzQwMDhBIC8qIFVu
aWZpZWRTb3VyY2UxMTIuY3BwICovLAogCQkJCTNDQUVDQjVFMjc0NjVBRTMwMEFCNzhEMCAvKiBV
bmlmaWVkU291cmNlMTEzLmNwcCAqLywKIAkJCQk0Q0FFQ0I1RTI3NDY1QUUzMDBBQjc4RDAgLyog
VW5pZmllZFNvdXJjZTExNC5jcHAgKi8sCi0JCQkJNUNBRUNCNUUyNzQ2NUFFMzAwQUI3OEQwIC8q
IFVuaWZpZWRTb3VyY2UxMTUuY3BwICovLAorCQkJCTkzRTI5NjI4Mjc4NEQ0MzgwMDA5OUI4QiAv
KiBVbmlmaWVkU291cmNlMTE1LmNwcCAqLywKKwkJCQk1Q0FFQ0I1RTI3NDY1QUUzMDBBQjc4RDAg
LyogVW5pZmllZFNvdXJjZTExNi5jcHAgKi8sCiAJCQkpOwogCQkJbmFtZSA9ICJ1bmlmaWVkLXNv
dXJjZXMiOwogCQkJcGF0aCA9ICJEZXJpdmVkU291cmNlcy9XZWJLaXQvdW5pZmllZC1zb3VyY2Vz
IjsKQEAgLTEwMzA1LDYgKzEwMzIzLDEyIEBACiAJCQkJOTM1QjU3OTgyNkY1MTI3MDAwOEI0OEFD
IC8qIEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnkuaCAqLywKIAkJCQk5MzFBMDc1MTI2
RjA2MzEwMDA0NDc0Q0QgLyogRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyLmNwcCAqLywKIAkJCQk5
MzFBMDc1MDI2RjA2MzEwMDA0NDc0Q0QgLyogRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyLmggKi8s
CisJCQkJOTNFMjk2MTkyNzgzNkRGRTAwMDk5QjhCIC8qIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9D
bGllbnQuY3BwICovLAorCQkJCTkzRTI5NjFBMjc4MzZERkYwMDA5OUI4QiAvKiBJREJTdG9yYWdl
Q29ubmVjdGlvblRvQ2xpZW50LmggKi8sCisJCQkJOTNFMjk2MTUyNzgzNkExMzAwMDk5QjhCIC8q
IElEQlN0b3JhZ2VNYW5hZ2VyLmNwcCAqLywKKwkJCQk5M0UyOTYxNjI3ODM2QTEzMDAwOTlCOEIg
LyogSURCU3RvcmFnZU1hbmFnZXIuaCAqLywKKwkJCQk5M0UyOTYyMjI3ODM3NTdBMDAwOTlCOEIg
LyogSURCU3RvcmFnZVJlZ2lzdHJ5LmNwcCAqLywKKwkJCQk5M0UyOTYyMzI3ODM3NTdBMDAwOTlC
OEIgLyogSURCU3RvcmFnZVJlZ2lzdHJ5LmggKi8sCiAJCQkJOTNFNzk5QzkyNzYwNDk3QTAwNzQw
MDhBIC8qIExvY2FsU3RvcmFnZU1hbmFnZXIuY3BwICovLAogCQkJCTkzRTc5OUNCMjc2MDQ5N0Ew
MDc0MDA4QSAvKiBMb2NhbFN0b3JhZ2VNYW5hZ2VyLmggKi8sCiAJCQkJOTNFNzk5RDgyNzYxMjEw
ODAwNzQwMDhBIC8qIE1lbW9yeVN0b3JhZ2VBcmVhLmNwcCAqLywKQEAgLTEwMzE0LDYgKzEwMzM4
LDggQEAKIAkJCQk5MzA4NURDNzI2RTFDNkVFMDAwRUM2QTcgLyogTmV0d29ya1N0b3JhZ2VNYW5h
Z2VyLm1lc3NhZ2VzLmluICovLAogCQkJCTkzMDg1REM1MjZFMUM2Q0YwMDBFQzZBNyAvKiBPcmln
aW5TdG9yYWdlTWFuYWdlci5jcHAgKi8sCiAJCQkJOTMwODVEQzYyNkUxQzZDRjAwMEVDNkE3IC8q
IE9yaWdpblN0b3JhZ2VNYW5hZ2VyLmggKi8sCisJCQkJOTM0Mjg4NzAyNzc1NTlGNTAwODEyQkUx
IC8qIFF1b3RhTWFuYWdlci5jcHAgKi8sCisJCQkJOTM0Mjg4NkYyNzc1NTlGNDAwODEyQkUxIC8q
IFF1b3RhTWFuYWdlci5oICovLAogCQkJCTkzRTc5OUNDMjc2MDQ5N0IwMDc0MDA4QSAvKiBTZXNz
aW9uU3RvcmFnZU1hbmFnZXIuY3BwICovLAogCQkJCTkzRTc5OUNBMjc2MDQ5N0EwMDc0MDA4QSAv
KiBTZXNzaW9uU3RvcmFnZU1hbmFnZXIuaCAqLywKIAkJCQk5M0U3OTlEMzI3NjEyMTA3MDA3NDAw
OEEgLyogU1FMaXRlU3RvcmFnZUFyZWEuY3BwICovLApAQCAtMTI5MjQsNiArMTI5NTAsOSBAQAog
CQkJCTMxMkNDOUYyMjE1QjA2RjEwMERFNDBDQSAvKiBIaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2Vy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzlBMkYzMjFFMjA2NzQ1MDAzOTA1N0UgLyogSGlnaFBl
cmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxQzBD
OTc0MURERDc2MDAwMDMyQ0FEMyAvKiBJY29uTG9hZGluZ0RlbGVnYXRlLmggaW4gSGVhZGVycyAq
LywKKwkJCQk5M0UyOTYxQzI3ODM2REZGMDAwOTlCOEIgLyogSURCU3RvcmFnZUNvbm5lY3Rpb25U
b0NsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTNFMjk2MTgyNzgzNkExNDAwMDk5QjhCIC8q
IElEQlN0b3JhZ2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQk5M0UyOTYyNTI3ODM3NTdB
MDAwOTlCOEIgLyogSURCU3RvcmFnZVJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUUz
NTFDQjE4MEYyQ0NDMDBFNTNCRTkgLyogSURCVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQ0NGNkIyNTEyQzkzRTdBMDA4RjlDMzUgLyogSW1hZ2VPcHRpb25zLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQTFFQzY5RTE4NzIwOTIxMDBCOTUxRjAgLyogSW1wb3J0YW5jZUFzc2VydGlvbi5o
IGluIEhlYWRlcnMgKi8sCkBAIC0xMzEzNSw2ICsxMzE2NCw4IEBACiAJCQkJQTFFNjg4NzAxRjZF
MkJBQjAwNzAwNkE2IC8qIFF1YXJhbnRpbmVTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMEMy
MjdFMjQ1MTEzMEEwMEVENjE0RCAvKiBRdWlja0xvb2tUaHVtYm5haWxpbmdTb2Z0TGluay5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUFFRTU3MjUyNDA5RjE0MjAwMjAwNUQ2IC8qIFF1aWNrTG9va1Ro
dW1ibmFpbExvYWRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTM0Mjg4NzQyNzc1NUI5MDAwODEy
QkUxIC8qIFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJOTM0Mjg4NzEyNzc1NTlGNTAwODEyQkUxIC8qIFF1b3RhTWFuYWdlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNUNCNkFFNDQyNjA5Nzk5QzAwQjZFRDVBIC8qIFJlYXNvblNQSS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTdGRDMxODIyMkIzNTE1RTAwOEQwRThCIC8qIFJlZGlyZWN0U09BdXRob3Jp
emF0aW9uU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUIxMjI5RDIyM0ZGMkJDQzAwOENB
NzUxIC8qIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywK
QEAgLTE1NzAxLDcgKzE1NzMyLDggQEAKIAkJCQk5M0U3OTlEMjI3NjBBQTVCMDA3NDAwOEEgLyog
VW5pZmllZFNvdXJjZTExMi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzQ0FFQ0I2NjI3NDY1QUU0
MDBBQjc4RDAgLyogVW5pZmllZFNvdXJjZTExMy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0Q0FF
Q0I2NjI3NDY1QUU0MDBBQjc4RDAgLyogVW5pZmllZFNvdXJjZTExNC5jcHAgaW4gU291cmNlcyAq
LywKLQkJCQk1Q0FFQ0I2NjI3NDY1QUU0MDBBQjc4RDAgLyogVW5pZmllZFNvdXJjZTExNS5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQk5M0UyOTYyOTI3ODRENDM4MDAwOTlCOEIgLyogVW5pZmllZFNv
dXJjZTExNS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1Q0FFQ0I2NjI3NDY1QUU0MDBBQjc4RDAg
LyogVW5pZmllZFNvdXJjZTExNi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMzhBMUZDMDIzQTU1
MUJGMDBEMjM3NEYgLyogVXNlckludGVyZmFjZUlkaW9tLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
Q0Q0OTFCMEQxRTczMkU0RDAwMDA5MDY2IC8qIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyTWVzc2Fn
ZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNENDkxQjE3MUU3MzUyNTUwMDAwOTA2
NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBT
b3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0RhdGFiYXNl
cy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5j
cHAKaW5kZXggMDRjMjQxMGYzNWFkY2MwNDZjNTQwNmFmMGNjZTJmZDBlODQxYWRiMC4uZDc5MDE2
OWJlMGY1OGUzMDFlZGJlNDRjMDQ0Yzc4MzkxZWY0NzQ1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2Vy
dmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWRE
Qi9XZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwCkBAIC0yOSw5ICsyOSw5IEBACiAjaW5jbHVk
ZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKKyNp
bmNsdWRlICJOZXR3b3JrU3RvcmFnZU1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNv
cmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYklEQlJlc3VsdC5oIgotI2luY2x1ZGUg
IldlYklEQlNlcnZlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvSURCQ29ubmVjdGlvblRvU2VydmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9J
REJDdXJzb3JJbmZvLmg+CkBAIC04MiwxMzIgKzgyLDEzMiBAQCBJREJDbGllbnQ6OklEQkNvbm5l
Y3Rpb25Ub1NlcnZlciYgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpjb3JlQ29ubmVjdGlvblRv
U2VydgogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGVsZXRlRGF0YWJhc2UoY29u
c3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhKQogewotICAgIHNlbmQoTWVzc2FnZXM6Oldl
YklEQlNlcnZlcjo6RGVsZXRlRGF0YWJhc2UocmVxdWVzdERhdGEpKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkRlbGV0ZURhdGFiYXNlKHJlcXVlc3REYXRhKSk7
CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpvcGVuRGF0YWJhc2UoY29uc3Qg
SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklE
QlNlcnZlcjo6T3BlbkRhdGFiYXNlKHJlcXVlc3REYXRhKSk7CisgICAgc2VuZChNZXNzYWdlczo6
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpPcGVuRGF0YWJhc2UocmVxdWVzdERhdGEpKTsKIH0KIAog
dm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmFib3J0VHJhbnNhY3Rpb24oY29uc3QgSURC
UmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpCiB7Ci0gICAgc2VuZChN
ZXNzYWdlczo6V2ViSURCU2VydmVyOjpBYm9ydFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRp
ZmllcikpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6QWJvcnRU
cmFuc2FjdGlvbih0cmFuc2FjdGlvbklkZW50aWZpZXIpKTsKIH0KIAogdm9pZCBXZWJJREJDb25u
ZWN0aW9uVG9TZXJ2ZXI6OmNvbW1pdFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291cmNlSWRlbnRp
ZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBwZW5kaW5nUmVxdWVzdENvdW50
KQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6Q29tbWl0VHJhbnNhY3Rpb24o
dHJhbnNhY3Rpb25JZGVudGlmaWVyLCBwZW5kaW5nUmVxdWVzdENvdW50KSk7CisgICAgc2VuZChN
ZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpDb21taXRUcmFuc2FjdGlvbih0cmFuc2Fj
dGlvbklkZW50aWZpZXIsIHBlbmRpbmdSZXF1ZXN0Q291bnQpKTsKIH0KIAogdm9pZCBXZWJJREJD
b25uZWN0aW9uVG9TZXJ2ZXI6OmRpZEZpbmlzaEhhbmRsaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0
aW9uKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQlJlc291
cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKQogewotICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYklEQlNlcnZlcjo6RGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rp
b24oZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgdHJhbnNhY3Rpb25JZGVudGlmaWVyKSk7
CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpEaWRGaW5pc2hIYW5k
bGluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbihkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVy
LCB0cmFuc2FjdGlvbklkZW50aWZpZXIpKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9T
ZXJ2ZXI6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0
YSwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiBpbmZvKQogewotICAgIHNlbmQoTWVzc2FnZXM6
OldlYklEQlNlcnZlcjo6Q3JlYXRlT2JqZWN0U3RvcmUocmVxdWVzdERhdGEsIGluZm8pKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkNyZWF0ZU9iamVjdFN0b3Jl
KHJlcXVlc3REYXRhLCBpbmZvKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVy
OjpkZWxldGVPYmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNv
bnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklE
QlNlcnZlcjo6RGVsZXRlT2JqZWN0U3RvcmUocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlTmFtZSkp
OworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6RGVsZXRlT2JqZWN0
U3RvcmUocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlTmFtZSkpOwogfQogCiB2b2lkIFdlYklEQkNv
bm5lY3Rpb25Ub1NlcnZlcjo6cmVuYW1lT2JqZWN0U3RvcmUoY29uc3QgSURCUmVxdWVzdERhdGEm
IHJlcXVlc3REYXRhLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgbmV3TmFtZSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OlJlbmFtZU9i
amVjdFN0b3JlKHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIG5ld05hbWUpKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OlJlbmFtZU9iamVjdFN0
b3JlKHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIG5ld05hbWUpKTsKIH0KIAog
dm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmNsZWFyT2JqZWN0U3RvcmUoY29uc3QgSURC
UmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIp
CiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyOjpDbGVhck9iamVjdFN0b3JlKHJl
cXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkNsZWFyT2JqZWN0U3RvcmUocmVxdWVzdERhdGEsIG9iamVj
dFN0b3JlSWRlbnRpZmllcikpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6
Y3JlYXRlSW5kZXgoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJJ
bmRleEluZm8mIGluZm8pCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyOjpDcmVh
dGVJbmRleChyZXF1ZXN0RGF0YSwgaW5mbykpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtT
dG9yYWdlTWFuYWdlcjo6Q3JlYXRlSW5kZXgocmVxdWVzdERhdGEsIGluZm8pKTsKIH0KIAogdm9p
ZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRlbGV0ZUluZGV4KGNvbnN0IElEQlJlcXVlc3RE
YXRhJiByZXF1ZXN0RGF0YSwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIGluZGV4TmFtZSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OkRl
bGV0ZUluZGV4KHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4TmFtZSkp
OworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6RGVsZXRlSW5kZXgo
cmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhOYW1lKSk7CiB9CiAKIHZv
aWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpyZW5hbWVJbmRleChjb25zdCBJREJSZXF1ZXN0
RGF0YSYgcmVxdWVzdERhdGEsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgdWludDY0
X3QgaW5kZXhJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUpCiB7Ci0gICAgc2VuZChN
ZXNzYWdlczo6V2ViSURCU2VydmVyOjpSZW5hbWVJbmRleChyZXF1ZXN0RGF0YSwgb2JqZWN0U3Rv
cmVJZGVudGlmaWVyLCBpbmRleElkZW50aWZpZXIsIG5ld05hbWUpKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OlJlbmFtZUluZGV4KHJlcXVlc3REYXRhLCBvYmpl
Y3RTdG9yZUlkZW50aWZpZXIsIGluZGV4SWRlbnRpZmllciwgbmV3TmFtZSkpOwogfQogCiB2b2lk
IFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6cHV0T3JBZGQoY29uc3QgSURCUmVxdWVzdERhdGEm
IHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXlEYXRhJiBrZXlEYXRhLCBjb25zdCBJREJWYWx1ZSYg
dmFsdWUsIGNvbnN0IEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlIG1vZGUpCiB7
Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyOjpQdXRPckFkZChyZXF1ZXN0RGF0YSwg
a2V5RGF0YSwgdmFsdWUsIG1vZGUpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFn
ZU1hbmFnZXI6OlB1dE9yQWRkKHJlcXVlc3REYXRhLCBrZXlEYXRhLCB2YWx1ZSwgbW9kZSkpOwog
fQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Z2V0UmVjb3JkKGNvbnN0IElEQlJl
cXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCR2V0UmVjb3JkRGF0YSYgZ2V0UmVjb3Jk
RGF0YSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OkdldFJlY29yZChyZXF1
ZXN0RGF0YSwgZ2V0UmVjb3JkRGF0YSkpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9y
YWdlTWFuYWdlcjo6R2V0UmVjb3JkKHJlcXVlc3REYXRhLCBnZXRSZWNvcmREYXRhKSk7CiB9CiAK
IHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpnZXRBbGxSZWNvcmRzKGNvbnN0IElEQlJl
cXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCR2V0QWxsUmVjb3Jkc0RhdGEmIGdldEFs
bFJlY29yZHNEYXRhKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6R2V0QWxs
UmVjb3JkcyhyZXF1ZXN0RGF0YSwgZ2V0QWxsUmVjb3Jkc0RhdGEpKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkdldEFsbFJlY29yZHMocmVxdWVzdERhdGEsIGdl
dEFsbFJlY29yZHNEYXRhKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpn
ZXRDb3VudChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQktleVJh
bmdlRGF0YSYgcmFuZ2UpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyOjpHZXRD
b3VudChyZXF1ZXN0RGF0YSwgcmFuZ2UpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6OkdldENvdW50KHJlcXVlc3REYXRhLCByYW5nZSkpOwogfQogCiB2b2lkIFdl
YklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGVsZXRlUmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRh
JiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiByYW5nZSkKIHsKLSAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OkRlbGV0ZVJlY29yZChyZXF1ZXN0RGF0YSwgcmFuZ2Up
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkRlbGV0ZVJlY29y
ZChyZXF1ZXN0RGF0YSwgcmFuZ2UpKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2
ZXI6Om9wZW5DdXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJ
REJDdXJzb3JJbmZvJiBpbmZvKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6
T3BlbkN1cnNvcihyZXF1ZXN0RGF0YSwgaW5mbykpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdv
cmtTdG9yYWdlTWFuYWdlcjo6T3BlbkN1cnNvcihyZXF1ZXN0RGF0YSwgaW5mbykpOwogfQogCiB2
b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6aXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXF1
ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkl0ZXJhdGVDdXJzb3JEYXRhJiBkYXRhKQog
ewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6SXRlcmF0ZUN1cnNvcihyZXF1ZXN0
RGF0YSwgZGF0YSkpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6
SXRlcmF0ZUN1cnNvcihyZXF1ZXN0RGF0YSwgZGF0YSkpOwogfQogCiB2b2lkIFdlYklEQkNvbm5l
Y3Rpb25Ub1NlcnZlcjo6ZXN0YWJsaXNoVHJhbnNhY3Rpb24odWludDY0X3QgZGF0YWJhc2VDb25u
ZWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJiBpbmZvKQogewotICAg
IHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6RXN0YWJsaXNoVHJhbnNhY3Rpb24oZGF0YWJh
c2VDb25uZWN0aW9uSWRlbnRpZmllciwgaW5mbykpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdv
cmtTdG9yYWdlTWFuYWdlcjo6RXN0YWJsaXNoVHJhbnNhY3Rpb24oZGF0YWJhc2VDb25uZWN0aW9u
SWRlbnRpZmllciwgaW5mbykpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6
ZGF0YWJhc2VDb25uZWN0aW9uUGVuZGluZ0Nsb3NlKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlv
bklkZW50aWZpZXIpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyOjpEYXRhYmFz
ZUNvbm5lY3Rpb25QZW5kaW5nQ2xvc2UoZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcikpOwor
ICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6RGF0YWJhc2VDb25uZWN0
aW9uUGVuZGluZ0Nsb3NlKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpKTsKIH0KIAogdm9p
ZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRhdGFiYXNlQ29ubmVjdGlvbkNsb3NlZCh1aW50
NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKQogewotICAgIHNlbmQoTWVzc2FnZXM6
OldlYklEQlNlcnZlcjo6RGF0YWJhc2VDb25uZWN0aW9uQ2xvc2VkKGRhdGFiYXNlQ29ubmVjdGlv
bklkZW50aWZpZXIpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6
OkRhdGFiYXNlQ29ubmVjdGlvbkNsb3NlZChkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKSk7
CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjphYm9ydE9wZW5BbmRVcGdyYWRl
TmVlZGVkKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQlJl
c291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKQogewotICAgIHNlbmQoTWVz
c2FnZXM6OldlYklEQlNlcnZlcjo6QWJvcnRPcGVuQW5kVXBncmFkZU5lZWRlZChkYXRhYmFzZUNv
bm5lY3Rpb25JZGVudGlmaWVyLCB0cmFuc2FjdGlvbklkZW50aWZpZXIpKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkFib3J0T3BlbkFuZFVwZ3JhZGVOZWVkZWQo
ZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgdHJhbnNhY3Rpb25JZGVudGlmaWVyKSk7CiB9
CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpkaWRGaXJlVmVyc2lvbkNoYW5nZUV2
ZW50KHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQlJlc291
cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IEluZGV4ZWREQjo6Q29ubmVj
dGlvbkNsb3NlZE9uQmVoYWxmT2ZTZXJ2ZXIgY29ubmVjdGlvbkNsb3NlZCkKIHsKLSAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OkRpZEZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQoZGF0YWJh
c2VDb25uZWN0aW9uSWRlbnRpZmllciwgcmVxdWVzdElkZW50aWZpZXIsIGNvbm5lY3Rpb25DbG9z
ZWQpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkRpZEZpcmVW
ZXJzaW9uQ2hhbmdlRXZlbnQoZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgcmVxdWVzdElk
ZW50aWZpZXIsIGNvbm5lY3Rpb25DbG9zZWQpKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9u
VG9TZXJ2ZXI6Om9wZW5EQlJlcXVlc3RDYW5jZWxsZWQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJl
cXVlc3REYXRhKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6T3BlbkRCUmVx
dWVzdENhbmNlbGxlZChyZXF1ZXN0RGF0YSkpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtT
dG9yYWdlTWFuYWdlcjo6T3BlbkRCUmVxdWVzdENhbmNlbGxlZChyZXF1ZXN0RGF0YSkpOwogfQog
CiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Z2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZl
cnNpb25zKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIGNv
bnN0IENsaWVudE9yaWdpbiYgb3JpZ2luKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNl
cnZlcjo6R2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKHJlcXVlc3RJZGVudGlmaWVyLCBv
cmlnaW4pKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkdldEFs
bERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhyZXF1ZXN0SWRlbnRpZmllciwgb3JpZ2luKSk7CiB9
CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpkaWREZWxldGVEYXRhYmFzZShjb25z
dCBJREJSZXN1bHREYXRhJiByZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L1N0b3JhZ2UvSW5Qcm9jZXNzSURCU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3Rv
cmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCmluZGV4IGVhMmUyYTc4Zjg4ZmZkZDEwMWEzYTEz
N2YwZDVhMTBhNTZlMTBmYjIuLjBjYWRiNTA0MmJhMTYxMDc3Zjk0NDlhOTczZGNmOTgzMmQzNzAy
YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9JblByb2Nlc3NJREJT
ZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9JblByb2Nlc3NJREJT
ZXJ2ZXIuY3BwCkBAIC00Miw2ICs0Miw4IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CitzdGF0aWMgY29uc3RleHByIHVpbnQ2NF90IGRlZmF1bHRQZXJPcmlnaW5RdW90YSA9ICAxMDAw
ICogTUI7CisKIFJlZjxJblByb2Nlc3NJREJTZXJ2ZXI+IEluUHJvY2Vzc0lEQlNlcnZlcjo6Y3Jl
YXRlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICBBU1NFUlQoc2Vzc2lvbklELmlz
RXBoZW1lcmFsKCkpOwpAQCAtNzMsNyArNzUsNyBAQCBJblByb2Nlc3NJREJTZXJ2ZXI6On5JblBy
b2Nlc3NJREJTZXJ2ZXIoKQogU3RvcmFnZVF1b3RhTWFuYWdlciogSW5Qcm9jZXNzSURCU2VydmVy
OjpxdW90YU1hbmFnZXIoY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4pCiB7CiAgICAgcmV0dXJu
IG1fcXVvdGFNYW5hZ2Vycy5lbnN1cmUob3JpZ2luLCBbXSB7Ci0gICAgICAgIHJldHVybiBTdG9y
YWdlUXVvdGFNYW5hZ2VyOjpjcmVhdGUoU3RvcmFnZVF1b3RhTWFuYWdlcjo6ZGVmYXVsdFF1b3Rh
KCksIFtdIHsKKyAgICAgICAgcmV0dXJuIFN0b3JhZ2VRdW90YU1hbmFnZXI6OmNyZWF0ZShkZWZh
dWx0UGVyT3JpZ2luUXVvdGEsIFtdIHsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9
LCBbXSh1aW50NjRfdCBxdW90YSwgdWludDY0X3QgY3VycmVudFNwYWNlLCB1aW50NjRfdCBzcGFj
ZUluY3JlYXNlLCBhdXRvIGNhbGxiYWNrKSB7CiAgICAgICAgICAgICBjYWxsYmFjayhxdW90YSAr
IGN1cnJlbnRTcGFjZSArIHNwYWNlSW5jcmVhc2UpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdl
TG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDczNWU0ZjNiNjAyZWM2MmM3MjFmM2VmZTdiOTFk
ZjM5ZGRhYTk5NTguLjAwNzAyNzdkNDUxYmVkYzY5MDdmYzJmYTdkYmVhYmE5MGJmNDVkM2IgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNiBAQAorMjAyMi0wMS0xMSAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKwor
ICAgICAgICBNYW5hZ2UgSW5kZXhlZERCIHN0b3JhZ2UgYnkgb3JpZ2luCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ5MjUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvSW5kZXhlZERCRmlsZU5hbWUubW06CisgICAgICAgIChydW5UZXN0KToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlBlcnNpc3Rl
bmNlLm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU3RvcmVC
bG9iVGhlbkRlbGV0ZS5tbToKKyAgICAgICAgKFRFU1QpOgorCiAyMDIyLTAxLTEwICBKb25hdGhh
biBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBbZ2l0LXdlYmtpdF0gVXNl
IGN3ZCBhcyBkZWZhdWx0IHBhdGgKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCRmlsZU5hbWUubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQkZpbGVOYW1lLm1tCmluZGV4IGE2YjAxMjliYzEw
NTljNGY5YzExOGQxZmQ3ZWZkMjEyM2VhYzJjN2EuLmM4MjFmMDUzMWNhZWNhMjE4ZDE2Yzc1MmU4
Njc4YzVmZTkzYjRhNjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvSW5kZXhlZERCRmlsZU5hbWUubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJGaWxlTmFtZS5tbQpAQCAtNzEsMjAgKzcxLDIzIEBA
IHN0YXRpYyB2b2lkIHJ1blRlc3QoKQogICAgIFJldGFpblB0cjxOU1N0cmluZz4gc3RyaW5nMiA9
IChOU1N0cmluZyAqKVtsYXN0U2NyaXB0TWVzc2FnZSBib2R5XTsKICAgICBFWFBFQ1RfV0tfU1RS
RVEoQCJTdWNjZXNzIiwgc3RyaW5nMi5nZXQoKSk7CiAKLSAgICAvLyBGb3IgZGF0YWJhc2UgdGhh
dCBpcyBub3Qgb3BlbmVkIGFmdGVyIHVwZ3JhZGUsIGl0cyBmaWxlIHNob3VsZCBiZSBpbiB2MC4K
KyAgICAvLyBBbGwgZGF0YWJhc2VzIG9mIGFuIG9yaWdpbiBhcmUgbWlncmF0ZWQgd2hlbiB0aGUg
b3JpZ2luIGlzIGFjY2Vzc2VkLgogICAgIGF1dG8gZGVmYXVsdEZpbGVNYW5hZ2VyID0gW05TRmls
ZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdOwogICAgIE5TU3RyaW5nICpleGlzdGluZ0RhdGFiYXNl
TmFtZSA9IEAiSW5kZXhlZERCVGVzdCI7CiAgICAgTlNTdHJpbmcgKmNyZWF0ZWREYXRhYmFzZU5h
bWUgPSBAIkluZGV4ZWREQk90aGVyIjsKICAgICBOU1N0cmluZyAqdW51c2VkRGF0YWJhc2VOYW1l
ID0gQCJJbmRleGVkREJVbnVzZWQiOwogICAgIE5TU3RyaW5nICpleGlzdGluZ0RhdGJhc2VIYXNo
ID0gV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0ZUhhc2hGb3JGaWxlTmFtZShleGlz
dGluZ0RhdGFiYXNlTmFtZSk7CiAgICAgTlNTdHJpbmcgKmNyZWF0ZWREYXRhYmFzZUhhc2ggPSBX
ZWJDb3JlOjpTUUxpdGVGaWxlU3lzdGVtOjpjb21wdXRlSGFzaEZvckZpbGVOYW1lKGNyZWF0ZWRE
YXRhYmFzZU5hbWUpOworICAgIE5TU3RyaW5nICp1bnVzZWREYXRhYmFzZUhhc2ggPSBXZWJDb3Jl
OjpTUUxpdGVGaWxlU3lzdGVtOjpjb21wdXRlSGFzaEZvckZpbGVOYW1lKGNyZWF0ZWREYXRhYmFz
ZU5hbWUpOwogICAgIE5TVVJMICppZGJSb290VVJMID0gW1tXS1dlYnNpdGVEYXRhU3RvcmUgZGVm
YXVsdERhdGFTdG9yZV0gX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5XTsKICAgICBOU1VSTCAq
b2xkVmVyc2lvbkRpcmVjdG9yeVVSTCA9IFtpZGJSb290VVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENv
bXBvbmVudDpAInYwIl07CiAgICAgTlNVUkwgKm5ld1ZlcnNpb25EaXJlY3RvcnlVUkwgPSBbaWRi
Um9vdFVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJ2MSJdOwogICAgIE5TVVJMICpv
bGRWZXJzaW9uT3JpZ2luRGlyZWN0b3J5VVJMID0gW29sZFZlcnNpb25EaXJlY3RvcnlVUkwgVVJM
QnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OiBAImZpbGVfXzAiXTsKICAgICBOU1VSTCAqbmV3VmVy
c2lvbk9yaWdpbkRpcmVjdG9yeVVSTCA9IFtuZXdWZXJzaW9uRGlyZWN0b3J5VVJMIFVSTEJ5QXBw
ZW5kaW5nUGF0aENvbXBvbmVudDogQCJmaWxlX18wIl07CiAgICAgTlNVUkwgKm9sZFZlcnNpb25V
bnVzZWREYXRhYmFzZURpcmVjdG9yeVVSTCA9IFtvbGRWZXJzaW9uT3JpZ2luRGlyZWN0b3J5VVJM
IFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDp1bnVzZWREYXRhYmFzZU5hbWVdOwotICAgIEVY
UEVDVF9UUlVFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0
aDpvbGRWZXJzaW9uVW51c2VkRGF0YWJhc2VEaXJlY3RvcnlVUkwucGF0aF0pOworICAgIE5TVVJM
ICpuZXdWZXJzaW9uVW51c2VkRGF0YWJhc2VEaXJlY3RvcnlVUkwgPSBbbmV3VmVyc2lvbk9yaWdp
bkRpcmVjdG9yeVVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6dW51c2VkRGF0YWJhc2VI
YXNoXTsKKyAgICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBm
aWxlRXhpc3RzQXRQYXRoOm9sZFZlcnNpb25VbnVzZWREYXRhYmFzZURpcmVjdG9yeVVSTC5wYXRo
XSk7CisgICAgRVhQRUNUX1RSVUUoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxl
RXhpc3RzQXRQYXRoOm5ld1ZlcnNpb25VbnVzZWREYXRhYmFzZURpcmVjdG9yeVVSTC5wYXRoXSk7
CiAgICAgCiAgICAgLy8gRm9yIGRhdGFiYXNlIHRoYXQgaXMgb3BlbmVkIGFmdGVyIHVwZ3JhZGUs
IGl0cyBmaWxlIHNob3VsZCBvbmx5IGJlIGluIHYxLgogICAgIE5TVVJMICpvbGRWZXJzaW9uRXhp
c3RpbmdEYXRhYmFzZURpcmVjdG9yeVVSTCA9IFtvbGRWZXJzaW9uT3JpZ2luRGlyZWN0b3J5VVJM
IFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDogZXhpc3RpbmdEYXRhYmFzZU5hbWVdOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJQ
ZXJzaXN0ZW5jZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5k
ZXhlZERCUGVyc2lzdGVuY2UubW0KaW5kZXggNWI3ZWY1YzM5YWM3M2M0OTM3NGZkMjdmM2M1MmZh
ZmJkNWEwMmY1Mi4uYjEzZWE2NGY4Yjg3OWMwMTk3NGU0ZGEzNjczYzI0M2U2OGE1NjQ0YiAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJQ
ZXJzaXN0ZW5jZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0luZGV4ZWREQlBlcnNpc3RlbmNlLm1tCkBAIC0zMDUsMTAgKzMwNSwxNCBAQCBURVNUKEluZGV4
ZWREQiwgSW5kZXhlZERCVGhpcmRQYXJ0eURhdGFSZW1vdmFsKQogICAgIEVYUEVDVF9XS19TVFJF
USggQCJkYXRhYmFzZSBpcyBjcmVhdGVkIC0gcHV0IGl0ZW0gc3VjY2VzcyIsIChOU1N0cmluZyAq
KVtsYXN0U2NyaXB0TWVzc2FnZSBib2R5XSk7CiAKICAgICByZWFkeVRvQ29udGludWUgPSBmYWxz
ZTsKLSAgICBbW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSBmZXRjaERhdGFS
ZWNvcmRzT2ZUeXBlczp3ZWJzaXRlRGF0YVR5cGVzLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4o
TlNBcnJheTxXS1dlYnNpdGVEYXRhUmVjb3JkICo+ICpkYXRhUmVjb3JkcykgewotICAgICAgICBF
WFBFQ1RfRVEoMXUsIGRhdGFSZWNvcmRzLmNvdW50KTsKLSAgICAgICAgRVhQRUNUX1dLX1NUUkVR
KCJpZnJhbWUiLCBbW2RhdGFSZWNvcmRzIGZpcnN0T2JqZWN0XSBkaXNwbGF5TmFtZV0pOwotICAg
ICAgICBbW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSByZW1vdmVEYXRhT2ZU
eXBlczp3ZWJzaXRlRGF0YVR5cGVzLmdldCgpIGZvckRhdGFSZWNvcmRzOmRhdGFSZWNvcmRzIGNv
bXBsZXRpb25IYW5kbGVyOl4oKSB7CisgICAgW1tXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERh
dGFTdG9yZV0gZmV0Y2hEYXRhUmVjb3Jkc09mVHlwZXM6d2Vic2l0ZURhdGFUeXBlcy5nZXQoKSBj
b21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8V0tXZWJzaXRlRGF0YVJlY29yZCAqPiAqcmVjb3Jk
cykgeworICAgICAgICBFWFBFQ1RfRVEoMnUsIHJlY29yZHMuY291bnQpOworICAgICAgICBOU1Nv
cnREZXNjcmlwdG9yICpyZWNvcmREZXNjcmlwdG9yID0gW05TU29ydERlc2NyaXB0b3Igc29ydERl
c2NyaXB0b3JXaXRoS2V5OkAiZGlzcGxheU5hbWUiIGFzY2VuZGluZzpZRVNdOworICAgICAgICBO
U0FycmF5ICpzb3J0RGVzY3JpcHRvcnMgPSBAW3JlY29yZERlc2NyaXB0b3JdOworICAgICAgICBO
U0FycmF5ICpzb3J0ZWRSZWNvcmRzID0gW3JlY29yZHMgc29ydGVkQXJyYXlVc2luZ0Rlc2NyaXB0
b3JzOnNvcnREZXNjcmlwdG9yc107CisgICAgICAgIEVYUEVDVF9XS19TVFJFUSgiaWZyYW1lIiwg
W1tzb3J0ZWRSZWNvcmRzIG9iamVjdEF0SW5kZXg6MF0gZGlzcGxheU5hbWVdKTsKKyAgICAgICAg
RVhQRUNUX1dLX1NUUkVRKCJ3ZWJraXQub3JnIiwgW1tzb3J0ZWRSZWNvcmRzIG9iamVjdEF0SW5k
ZXg6MV0gZGlzcGxheU5hbWVdKTsKKyAgICAgICAgW1tXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVs
dERhdGFTdG9yZV0gcmVtb3ZlRGF0YU9mVHlwZXM6d2Vic2l0ZURhdGFUeXBlcy5nZXQoKSBmb3JE
YXRhUmVjb3JkczpyZWNvcmRzIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7CiAgICAgICAgICAgICBy
ZWFkeVRvQ29udGludWUgPSB0cnVlOwogICAgICAgICB9XTsKICAgICB9XTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU3RvcmVCbG9iVGhlbkRlbGV0
ZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU3RvcmVCbG9iVGhl
bkRlbGV0ZS5tbQppbmRleCBhYWJmZmY4N2JjNjRiMzk1MmIyNDE0NTIxNWVlMDM4Mjg2YjdjODkx
Li4zODA2ZmI2ODY5YzNkOTUwN2QzZDA1ZGM0MmM4YWJjMzMyM2QwZDhkIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1N0b3JlQmxvYlRoZW5EZWxldGUu
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TdG9yZUJsb2JU
aGVuRGVsZXRlLm1tCkBAIC04Nyw3ICs4Nyw3IEBAIFRFU1QoSW5kZXhlZERCLCBTdG9yZUJsb2JU
aGVuUmVtb3ZlRGF0YSkKICAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNvcHlJ
dGVtQXRQYXRoOmRhdGFiYXNlRmlsZVBhdGggdG9QYXRoOmZha2VTaG1QYXRoIGVycm9yOm5pbF07
CiAgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjb3B5SXRlbUF0UGF0aDpkYXRh
YmFzZUZpbGVQYXRoIHRvUGF0aDpmYWtlV2FsUGF0aCBlcnJvcjpuaWxdOwogCi0gICAgLy8gTWFr
ZSBzb21lIG90aGVyIC5ibG9iIGZpbGVzIGluIHRoZSBkYXRhYmFzZSBkaXJlY3RvcnkgdG8gbGF0
ZXIgdmFsaWRhdGUgdGhhdCBvbmx5IGFwcHJvcHJpYXRlIGZpbGVzIGFyZSBkZWxldGVkLgorICAg
IC8vIE1ha2Ugc29tZSBvdGhlciAuYmxvYiBmaWxlcyBpbiB0aGUgZGF0YWJhc2UgZGlyZWN0b3J5
IHRvIGxhdGVyIHZhbGlkYXRlIGFsbCBibG9iIGZpbGVzIGluIHRoZSBkaXJlY3RvcnkgYXJlIGRl
bGV0ZWQuCiAgICAgTlNTdHJpbmcgKm90aGVyQmxvYjEgPSBbZGF0YWJhc2VEaXJlY3Rvcnkgc3Ry
aW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiNzE4Mi5ibG9iIl07CiAgICAgTlNTdHJpbmcg
Km90aGVyQmxvYjIgPSBbZGF0YWJhc2VEaXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29t
cG9uZW50OkAiMWEuYmxvYiJdOwogICAgIE5TU3RyaW5nICpvdGhlckJsb2IzID0gW2RhdGFiYXNl
RGlyZWN0b3J5IHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAImExLmJsb2IiXTsKQEAg
LTEwMiwxMyArMTAyLDExIEBAIFRFU1QoSW5kZXhlZERCLCBTdG9yZUJsb2JUaGVuUmVtb3ZlRGF0
YSkKICAgICAgICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0g
ZmlsZUV4aXN0c0F0UGF0aDpibG9iRmlsZVBhdGhdKTsKICAgICAgICAgRVhQRUNUX0ZBTFNFKFtb
TlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpkYXRhYmFzZUZp
bGVQYXRoXSk7CiAKLSAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBmYWtlIGJsb2IgZmlsZSB3aXRo
IGEgdmFsaWQgYmxvYiBmaWxlIG5hbWUgaXMgZ29uZS4KKyAgICAgICAgLy8gTWFrZSBzdXJlIGFs
bCBmYWtlIGJsb2IgZmlsZSBhcmUgZ29uZS4KICAgICAgICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxl
TWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpvdGhlckJsb2IxXSk7Ci0K
LSAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBmYWtlIGJsb2IgZmlsZXMgd2l0aCBpbnZhbGlkIGJs
b2IgZmlsZSBuYW1lcyBhcmUgc3RpbGwgdGhlcmUuCi0gICAgICAgIEVYUEVDVF9UUlVFKFtbTlNG
aWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpvdGhlckJsb2IyXSk7
Ci0gICAgICAgIEVYUEVDVF9UUlVFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmls
ZUV4aXN0c0F0UGF0aDpvdGhlckJsb2IzXSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKFtbTlNGaWxl
TWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpvdGhlckJsb2I0XSk7Cisg
ICAgICAgIEVYUEVDVF9GQUxTRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVF
eGlzdHNBdFBhdGg6b3RoZXJCbG9iMl0pOworICAgICAgICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVN
YW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOm90aGVyQmxvYjNdKTsKKyAg
ICAgICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4
aXN0c0F0UGF0aDpvdGhlckJsb2I0XSk7CiAKICAgICAgICAgLy8gTWFrZSBzdXJlIGV2ZXJ5dGhp
bmcgcmVsYXRlZCB0byB0aGUgZmFrZSBkYXRhYmFzZSBpcyBnb25lLgogICAgICAgICBFWFBFQ1Rf
RkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmZh
a2VTaG1QYXRoXSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450778</attachid>
            <date>2022-02-03 09:15:26 -0800</date>
            <delta_ts>2022-02-03 13:29:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234925-20220203091525.patch</filename>
            <type>text/plain</type>
            <size>283777</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5MDIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDZkYmQwOWQ0N2NmY2Q5OWRlMjUyNmNj
MzJkNWI3MzMwZTI5NWUyYjMuLmM0MjA4ZGI1MjVhMzYxNGE5NzAwZGRiNmNiNjg4N2Y2MDdhMzAx
MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjItMDItMDMgIFNpaHVpIExpdSAgPHNpaHVpX2xp
dUBhcHBsZS5jb20+CisKKyAgICAgICAgTWFuYWdlIEluZGV4ZWREQiBzdG9yYWdlIGJ5IG9yaWdp
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0OTI1
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NzU1NTAxND4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBoZWxwZXIgZnVuY3Rpb24gdG8gZ2V0
IHRoZSB0YXJnZXQgZnJvbSBhIHN5bW9ibGljIGxpbmsgcGF0aC4KKworICAgICAgICAqIHd0Zi9G
aWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6OmdldFN5bWJvbGlj
TGlua1RhcmdldCk6CisgICAgICAgICogd3RmL0ZpbGVTeXN0ZW0uaDoKKwogMjAyMi0wMi0wMiAg
WGFuIExvcGV6ICA8eGFuQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0pTQ10gUmVtb3ZlIGNvbXBp
bGVyIHdhcm5pbmcgaW4gVHJhaWxpbmdBcnJheS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmU5MzcyMGMxNGM0
NjdiMGNjYmYxZDBjYmYzMTQ5MzQ5MDVhMzdiZi4uZGMyMWQ4YzdmYTZmOTVlNzA0NTI4OWU2MWE0
MGRlZGY1NzI0Njc0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk2IEBACisyMDIyLTAyLTAzICBT
aWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIE1hbmFnZSBJbmRleGVk
REIgc3RvcmFnZSBieSBvcmlnaW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzNDkyNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODc1NTUwMTQ+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQm90aCBXZWJL
aXQgYW5kIFdlYktpdExlZ2FjeSB1c2VkIElEQlNlcnZlciB0byBtYW5hZ2UgVW5pcXVlSURCRGF0
YWJhc2VzLCBhbmQgVW5pcXVlSURCRGF0YWJhc2UgcG9pbnRlZCB0byAKKyAgICAgICAgSURCU2Vy
dmVyLiBOb3cgdGhhdCBXZWJLaXQgdXNlcyBXZWJLaXQ6OklEQlN0b3JhZ2VNYW5hZ2VyIHRvIG1h
bmFnZSBVbmlxdWVJREJEYXRhYmFzZXMuIFdlIHVudGllIHRoZSAKKyAgICAgICAga25vdCBiZXR3
ZWVuIElEQlNlcnZlciBhbmQgVW5pcXVlSURCRGF0YWJhc2UgYnkgYWRkaW5nIGEgbmV3IGFic3Ry
YWN0IGNsYXNzIFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlciBhbmQgbWFrZQorICAgICAgICBVbmlx
dWVJREJEYXRhYmFzZSBwb2ludCB0byBVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuCisKKyAgICAg
ICAgQWxzbywgYXMgcXVvdGEgY2hlY2sgaXMgbm8gbG9uZ2VyIGFzeW5jIGFjY29yZGluZyB0byBj
aGFuZ2VzIGluIFdlYktpdCwgd2UgbmVlZCB0byB1cGRhdGUgb3BlcmF0aW9ucyBpbgorICAgICAg
ICBVbmlxdWVJREJEYXRhYmFzZSB0byBhZG9wdCB0aGUgY2hhbmdlLgorCisgICAgICAgIENvdmVy
ZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnQuaDoKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpyZWdpc3RlckNvbm5lY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OnVucmVnaXN0ZXJDb25uZWN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpjcmVhdGVCYWNraW5nU3Rv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OnVwZ3JhZGVkRGF0
YWJhc2VEaXJlY3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6
OnJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6SURCU2VydmVyOjp1bnJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0aW9uKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpjbG9zZUFuZFRh
a2VVbmlxdWVJREJEYXRhYmFzZSk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0lEQlNlcnZlci5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpNZW1vcnlJREJCYWNraW5nU3RvcmU6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZSk6CisgICAgICAg
IChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0
U3RvcmUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNr
aW5nU3RvcmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2Jq
ZWN0U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlPYmplY3RT
dG9yZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5T2JqZWN0
U3RvcmU6Ok1lbW9yeU9iamVjdFN0b3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNl
cnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpTUUxpdGVJREJCYWNraW5nU3RvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmVuY29kZURh
dGFiYXNlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tp
bmdTdG9yZTo6ZGVjb2RlRGF0YWJhc2VOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZl
cjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRl
QmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFj
a2luZ1N0b3JlOjpmaWxlbmFtZUZvckRhdGFiYXNlTmFtZSBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZnVsbERhdGFi
YXNlRGlyZWN0b3J5V2l0aFVwZ3JhZGUpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6VW5pcXVlSURCRGF0YWJhc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6bWFuYWdlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtQ3Vy
cmVudE9wZW5PcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJ
REJEYXRhYmFzZTo6cGVyZm9ybUN1cnJlbnRPcGVuT3BlcmF0aW9uQWZ0ZXJTcGFjZUNoZWNrKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZUJh
Y2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFi
YXNlOjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVu
aXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpyZW5hbWVPYmplY3RTdG9yZSk6CisgICAgICAg
IChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpjbGVhck9iamVjdFN0b3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0
ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6
OmRlbGV0ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0
YWJhc2U6OnJlbmFtZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVl
SURCRGF0YWJhc2U6OnB1dE9yQWRkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5p
cXVlSURCRGF0YWJhc2U6OnB1dE9yQWRkQWZ0ZXJTcGFjZUNoZWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmdldFJlY29yZCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRBbGxSZWNvcmRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmdldENvdW50KToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZVJl
Y29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpv
cGVuQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJh
c2U6Oml0ZXJhdGVDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJ
REJEYXRhYmFzZTo6Y29tbWl0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6YWJvcnRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjphYm9ydEluUHJvZ3Jlc3NUcmFuc2Fj
dGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6
aGFzRGF0YUluTWVtb3J5IGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvVW5pcXVlSURCRGF0YWJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5p
cXVlSURCRGF0YWJhc2U6OnNlcnZlcik6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbjo6VW5pcXVlSURC
RGF0YWJhc2VDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVl
SURCRGF0YWJhc2VDb25uZWN0aW9uOjp+VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uOjpt
YW5hZ2VyKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0
YWJhc2VDb25uZWN0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlE
QkRhdGFiYXNlQ29ubmVjdGlvbjo6c2VydmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXI6On5Vbmlx
dWVJREJEYXRhYmFzZU1hbmFnZXIpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6VW5pcXVlSURCRGF0YWJhc2VU
cmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFi
YXNlVHJhbnNhY3Rpb246On5VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uKToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5o
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJFcnJvci5oOgorICAgICAg
ICAoV2ViQ29yZTo6SURCRXJyb3I6Om9wZXJhdG9yIGJvb2wgY29uc3QpOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5oOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXNvdXJjZUlkZW50aWZpZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllcjo6b3BlcmF0b3IhPSBjb25zdCk6CisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDIyLTAyLTAyICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVXNlIHBy
aXZhdGUgcmVsYXkgZm9yIGFsbCBzdWJyZXNvdXJjZXMgaWYgdGhlIG1haW4gZG9jdW1lbnQgbWFp
biByZXNvdXJjZSB3YXMgbG9hZGVkIHVzaW5nIHByaXZhdGUgcmVsYXkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNDM4
NmQxZTJiMzg2ODFiMjg5NDhlNTllODYwYTBkNTc4ZTBmNDY1My4uN2Q0NjliNjRiNWIxOGRjNzBk
ZGI1YzE4NmIwMjVhOGNjMTJhMjE2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNjUgQEAKKzIwMjIt
MDItMDMgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgTWFuYWdl
IEluZGV4ZWREQiBzdG9yYWdlIGJ5IG9yaWdpbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0OTI1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NzU1
NTAxND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJ
biBuZXR3b3JrIHByb2Nlc3MsIEluZGV4ZWREQiBkYXRhIGlzIG1hbmFnZWQgYnkgV2ViS2l0OjpX
ZWJJREJTZXJ2ZXIuIEVhY2ggc2Vzc2lvbiBvd25zIGEgV2ViSURCU2VydmVyIAorICAgICAgICAo
SURCU2VydmVyKSBhbmQgZWFjaCBJREJTZXJ2ZXIgb3ducyBvbmUgb3IgbW9yZSBVbmlxdWVJREJE
YXRhYmFzZXMgKHJlc3ByZW50aW5nIG9uZSBhY3R1YWwgZGF0YWJhc2UgdGhhdAorICAgICAgICBJ
REJEYXRhYmFzZSBjb25uZWN0cyB0bywgY2FuIGJlIGlkZW50aWZpZWQgYnkge3Nlc3Npb24sIG9y
aWdpbiwgbmFtZX0pLiBOb3cgdGhhdCB3ZSBoYXZlIE5ldHdvcmtTdG9yYWdlTWFuYWdlciwgCisg
ICAgICAgIHdoaWNoIG1hbmFnZXMgc2Vzc2lvbiBzdG9yYWdlIGJ5IG9yaWdpbiwgd2UgY2FuIG1l
cmdlIFdlYklEQlNlcnZlciB3aXRoIE5ldHdvcmtTdG9yYWdlTWFuYWdlciwgc2luY2UgSW5kZXhl
ZERCIAorICAgICAgICBzdG9yYWdlIGlzIG5vdCBzaGFyZWQgYWNyb3NzIG9yaWdpbnMuCisKKyAg
ICAgICAgVGhlIG9sZCBzdHJ1Y3R1cmUgaXM6CisgICAgICAgIE5ldHdvcmtTZXNzaW9uIC0gV2Vi
SURCU2VydmVyIC0gSURCU2VydmVyIC0gVW5pcXVlSURCRGF0YWJhc2VzCisgICAgICAgIFRoZSBu
ZXcgc3RydWN0dXJlIGlzOgorICAgICAgICBOZXR3b3JrU2Vzc2lvbiAtIE5ldHdvcmtTdG9yYWdl
TWFuYWdlciAtIE9yaWdpblN0b3JhZ2VNYW5hZ2VyIC0gSURCU3RvcmFnZU1hbmFnZXIgLSBVbmlx
dWVJREJEYXRhYmFzZQorCisgICAgICAgIFRvIGNvbXBsZXRlIHRoaXMgdHJhbnNpdGlvbiwgd2Ug
bmVlZCB0byBtYWtlIGEgZmV3IGNoYW5nZXM6CisgICAgICAgIDEuIFdlYiBwcm9jZXNzIG5vdyBz
ZW5kcyBJbmRleGVkREIgcmVsYXRlZCBtZXNzYWdlcyB0byBOZXR3b3JrU3RvcmFnZU1hbmFnZXIg
aW5zdGVhZCBvZiBXZWJJREJTZXJ2ZXIuIAorICAgICAgICAyLiBTb21lIG1lc3NhZ2VzIGFyZSBz
ZW50IHRvIG9wZXJhdGUgb24gVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uIG9yIFVuaXF1ZUlE
QkRhdGFiYXNlVHJhbnNhY3Rpb24sIGFuZCB0aGV5IAorICAgICAgICB1c2UgaWRlbnRpZmllcnMg
dG8gc3BlY2lmeSB0aGUgdGFyZ2V0LiBUaGVyZWZvcmUsIE5ldHdvcmtTdG9yYWdlTWFuYWdlcnMg
bmVlZHMgdG8ga25vdyB0aGUgbWFwcGluZyBiZXR3ZWVuIAorICAgICAgICBpZGVudGlmaWVycyBh
bmQgdGFyZ2V0IG9iamVjdHMuIFdlIGFkZCBhIG5ldyBJREJTdG9yYWdlUmVnaXN0cnkgY2xhc3Mg
dG8gcmVjb3JkIHRoaXMgbWFwcGluZy4gRWFjaCAKKyAgICAgICAgTmV0d29ya1N0b3JhZ2VNYW5h
Z2VyIG93bnMgYSBJREJTdG9yYWdlUmVnaXN0cnkgYW5kIGl0IHBhc3NlcyBJREJTdG9yYWdlUmVn
aXN0cnkgdG8gSURCU3RvcmFnZU1hbmFnZXIsCisgICAgICAgIElEQlN0b3JhZ2VNYW5hZ2VyIHdp
bGwgcmVnaXN0ZXIgb2JqZWN0cyB0byBJREJTdG9yYWdlUmVnaXN0cnkgYW5kIE5ldHdvcmtTdG9y
YWdlTWFuYWdlciBjYW4gZG8gc2VhcmNoIHZpYSAKKyAgICAgICAgSURCU3RvcmFnZVJlZ2lzdHJ5
LgorICAgICAgICAzLiBRdW90YSBjaGVjayBmb3IgSW5kZXhlZERCIG9wZXJhdGlvbnMgYmVjb21l
cyBhc3luYyBieSBhZGRpbmcgbmV3IFF1b3RhTWFuYWdlciBjbGFzcywgd2hpY2ggaXMgc2ltaWxh
ciB0byAKKyAgICAgICAgV2ViQ29yZTo6U3RvcmFnZVF1b3RhTWFuYWdlciBidXQgcHJvdmlkZXMg
YXN5bmMgaW50ZXJmYWNlcy4gCisgICAgICAgIFdlIHVzZWQgdG8gYmxvY2sgdGhlIElEQlNlcnZl
ciB0aHJlYWQgd2hlbiBpdCBpcyB3YWl0aW5nIGZvciBxdW90YSBjaGVjayByZXN1bHQgZnJvbSBV
SSBwcm9jZXNzLCB0aGlzIGlzIGZpbmUgCisgICAgICAgIGJlY2F1c2UgSURCU2VydmVyIHJ1bnMg
b24gaXRzIG93biB0aHJlYWQuIE5vdyB0aGF0IElEQlN0b3JhZ2VNYW5hZ2VyIHJ1bnMgb24gdGhl
IHNhbWUgdGhyZWFkIGFzIHRoZSBvdGhlciAKKyAgICAgICAgc3RvcmFnZSB0eXBlcywgd2UgY2Fu
bm90IGJsb2NrIHRoZSB0aHJlYWQgb24gcXVvdGEgY2hlY2suCisgICAgICAgIDQuIFJlbmFtZSBX
ZWJJREJDb25uZWN0aW9uVG9DbGllbnQgdG8gSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudCB0
byByZWZsZWN0IHRoZSBjaGFuZ2Ugb24gdGhlIHN0cnVjdHVyZS4gQWxzbywKKyAgICAgICAgSURC
U3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudCBkb2VzIG5vdCBrZWVwIHJlZmVyZW5jZSB0byB0aGUg
SVBDOjpDb25uZWN0aW9uIG5vdywgaXQgb25seSByZWNvcmRzIAorICAgICAgICBJUEM6OkNvbm5l
Y3Rpb246OlVuaXF1ZUlELgorICAgICAgICA1LiBJbmRleGVkREIgZGF0YSBtYXkgYmUgcHV0IGlu
IGRpZmZlcmVudCB2ZXJzaW9uIGRpcmN0b3JpZXMuIFdlIHVzZWQgdG8gbWlncmF0ZSBkYXRhYmFz
ZSB0byBuZXcgdmVyc2lvbiAKKyAgICAgICAgZGlyZXRvcnkgd2hlbiB0aGUgZGF0YWJhc2UgaXMg
YWNjZXNzZWQuIEFzIElEQlN0b3JhZ2VNYW5hZ2VyIG5vdyBtYW5hZ2VzIEluZGV4ZWREQiBkYXRh
IG9mIG9uZSBvcmlnaW4sIGl0J3MgCisgICAgICAgIHNpbXBsZXIgaWYgaXQgb25seSBrZWVwcyB0
cmFjayBvZiBvbmUgZGlyZWN0b3J5LiBUaGVyZWZvcmUsIHdlIG5vdyBtaWdyYXRlIGFsbCBkYXRh
YmFzZXMgb2Ygb25lIG9yaWdpbgorICAgICAgICB3aGVuIHRoZSBvcmlnaW4gaXMgYWNjZXNzZWQg
KHNlZSBJREJTdG9yYWdlTWFuYWdlcjo6aWRiU3RvcmFnZU9yaWdpbkRpcmVjdG9yeSkuIAorCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6dXBkYXRl
UXVvdGFCYXNlZE9uU3BhY2VVc2FnZUZvclRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXNGb3JJ
bmRleGVkREIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRpZENsb3NlKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmFkZFdlYnNpdGVEYXRhU3RvcmUp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YSk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlQW5kUmVzdHJpY3RXZWJz
aXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzOjpyZWdpc3RyYWJsZURvbWFpbnNXaXRoV2Vic2l0ZURhdGEpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzczo6cHJlcGFyZVRvU3VzcGVuZCk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzOjpyZXN1bWUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
czo6cmVzZXRRdW90YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkaWRJbmNy
ZWFzZVF1b3RhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlbmFtZU9yaWdp
bkluV2Vic2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c3RvcmFn
ZVF1b3RhTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpjb25uZWN0
aW9uVG9XZWJQcm9jZXNzQ2xvc2VkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OnN1c3BlbmRJREJTZXJ2ZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2hvdWxk
U3VzcGVuZElEQlNlcnZlcnMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246Omlu
dmFsaWRhdGVBbmRDYW5jZWwpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6YWRk
U3RvcmFnZU1hbmFnZXJTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246
OmVuc3VyZVdlYklEQlNlcnZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtT
ZXNzaW9uOjpjbG9zZUlEQlNlcnZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtTZXNzaW9uOjphZGRJbmRleGVkRGF0YWJhc2VTZXNzaW9uKTogRGVsZXRlZC4KKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrU2Vzc2lvbjo6d2ViSURCU2VydmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Nlc3Npb246Omhhc0lEQkRhdGFiYXNlUGF0aCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OnN0b3JhZ2VQYXRoKToKKyAgICAgICAgKFdl
YktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OmRpc2tVc2FnZSk6CisgICAgICAgIChXZWJLaXQ6
OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpyZXF1ZXN0U3BhY2UpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkNhY2hlU3RvcmFnZTo6Q2FjaGVzOjpyZXF1ZXN0U3BhY2UpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lPUy5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OnNldElzSG9sZGluZ0xvY2tlZEZpbGVzKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6SURCU3RvcmFnZUNv
bm5lY3Rpb25Ub0NsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9u
VG9DbGllbnQ6On5JREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50KToKKyAgICAgICAgKFdlYktp
dDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6Y29ubmVjdGlvblRvQ2xpZW50KToKKyAg
ICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkR2V0UmVzdWx0
KToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkRGVs
ZXRlRGF0YWJhc2UpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xp
ZW50OjpkaWRPcGVuRGF0YWJhc2UpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVj
dGlvblRvQ2xpZW50OjpkaWRTdGFydFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6SURC
U3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkQWJvcnRUcmFuc2FjdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZENvbW1pdFRyYW5zYWN0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlk
Q3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVjdGlv
blRvQ2xpZW50OjpkaWREZWxldGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0
b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZFJlbmFtZU9iamVjdFN0b3JlKToKKyAgICAgICAg
KFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkQ2xlYXJPYmplY3RTdG9y
ZSk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZENy
ZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVu
dDo6ZGlkRGVsZXRlSW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVjdGlv
blRvQ2xpZW50OjpkaWRSZW5hbWVJbmRleCk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VD
b25uZWN0aW9uVG9DbGllbnQ6OmRpZFB1dE9yQWRkKToKKyAgICAgICAgKFdlYktpdDo6SURCU3Rv
cmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkR2V0UmVjb3JkKToKKyAgICAgICAgKFdlYktpdDo6
SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkR2V0QWxsUmVjb3Jkcyk6CisgICAgICAg
IChXZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZEdldENvdW50KToKKyAg
ICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkRGVsZXRlUmVj
b3JkKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlk
T3BlbkN1cnNvcik6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGll
bnQ6OmRpZEl0ZXJhdGVDdXJzb3IpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVj
dGlvblRvQ2xpZW50OjpkaWRHZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMpOgorICAgICAg
ICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpmaXJlVmVyc2lvbkNoYW5n
ZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6
ZGlkQ2xvc2VGcm9tU2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rp
b25Ub0NsaWVudDo6bm90aWZ5T3BlbkRCUmVxdWVzdEJsb2NrZWQpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5oOiBBZGRlZC4K
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VNYW5hZ2VyLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQ6Om1pZ3JhdGVPcmlnaW5EYXRhKToKKyAgICAgICAgKFdl
YktpdDo6SURCU3RvcmFnZU1hbmFnZXI6OmlkYlN0b3JhZ2VPcmlnaW5EaXJlY3RvcnkpOgorICAg
ICAgICAoV2ViS2l0OjpJREJTdG9yYWdlTWFuYWdlcjo6aWRiU3RvcmFnZVNpemUpOgorICAgICAg
ICAoV2ViS2l0OjpnZXRPcmlnaW5zRm9yVmVyc2lvbik6CisgICAgICAgIChXZWJLaXQ6OklEQlN0
b3JhZ2VNYW5hZ2VyOjpvcmlnaW5zT2ZJREJTdG9yYWdlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6
OklEQlN0b3JhZ2VNYW5hZ2VyOjpJREJTdG9yYWdlTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6
OklEQlN0b3JhZ2VNYW5hZ2VyOjppc0FjdGl2ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OklE
QlN0b3JhZ2VNYW5hZ2VyOjpoYXNEYXRhSW5NZW1vcnkgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpJREJTdG9yYWdlTWFuYWdlcjo6Y2xvc2VEYXRhYmFzZXNGb3JEZWxldGlvbik6CisgICAgICAg
IChXZWJLaXQ6OklEQlN0b3JhZ2VNYW5hZ2VyOjpzdG9wRGF0YWJhc2VBY3Rpdml0aWVzRm9yU3Vz
cGVuZCk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VNYW5hZ2VyOjpnZXRPckNyZWF0ZVVu
aXF1ZUlEQkRhdGFiYXNlKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZU1hbmFnZXI6Om9w
ZW5EYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVE
YXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VNYW5hZ2VyOjpnZXRBbGxEYXRh
YmFzZU5hbWVzQW5kVmVyc2lvbnMpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlTWFuYWdl
cjo6b3BlbkRCUmVxdWVzdENhbmNlbGxlZCk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VN
YW5hZ2VyOjpyZWdpc3RlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdl
TWFuYWdlcjo6dW5yZWdpc3RlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9y
YWdlTWFuYWdlcjo6cmVnaXN0ZXJUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OklEQlN0
b3JhZ2VNYW5hZ2VyOjp1bnJlZ2lzdGVyVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpJ
REJTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYktpdDo6
SURCU3RvcmFnZU1hbmFnZXI6OnJlcXVlc3RTcGFjZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3Mvc3RvcmFnZS9JREJTdG9yYWdlTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VSZWdpc3RyeS5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViS2l0OjpJREJTdG9yYWdlUmVnaXN0cnk6OmdldE9yQ3JlYXRlQ29ubmVjdGlvblRvQ2xpZW50
KToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZVJlZ2lzdHJ5OjpyZW1vdmVDb25uZWN0aW9u
VG9DbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlUmVnaXN0cnk6OnJlZ2lzdGVy
Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VSZWdpc3RyeTo6dW5yZWdp
c3RlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlUmVnaXN0cnk6OnJl
Z2lzdGVyVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlUmVnaXN0cnk6
OnVucmVnaXN0ZXJUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VSZWdp
c3RyeTo6Z2V0Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VSZWdpc3Ry
eTo6Z2V0VHJhbnNhY3Rpb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURC
U3RvcmFnZVJlZ2lzdHJ5Lmg6IEFkZGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3Jh
Z2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0
b3JhZ2VNYW5hZ2VyOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1h
bmFnZXI6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtT
dG9yYWdlTWFuYWdlcjo6Y2FuSGFuZGxlVHlwZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
U3RvcmFnZU1hbmFnZXI6OnN0b3BSZWNlaXZpbmdNZXNzYWdlRnJvbUNvbm5lY3Rpb24pOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmxvY2FsT3JpZ2luU3RvcmFnZU1h
bmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmRpZEluY3Jl
YXNlUXVvdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmdldEFs
bE9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Om1vdmVE
YXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpzdXNwZW5kKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpyZWdpc3RlclRlbXBvcmFy
eUJsb2JGaWxlUGF0aHMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6
OnJlcXVlc3RTcGFjZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6
cmVzZXRRdW90YUZvclRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1h
bmFnZXI6OnJlc2V0UXVvdGFVcGRhdGVkQmFzZWRPblVzYWdlRm9yVGVzdGluZyk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6b3BlbkRhdGFiYXNlKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpvcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVEYXRhYmFzZSk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZXN0YWJsaXNoVHJhbnNh
Y3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmRhdGFiYXNl
Q29ubmVjdGlvblBlbmRpbmdDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdl
TWFuYWdlcjo6ZGF0YWJhc2VDb25uZWN0aW9uQ2xvc2VkKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1N0b3JhZ2VNYW5hZ2VyOjphYm9ydE9wZW5BbmRVcGdyYWRlTmVlZGVkKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjphYm9ydFRyYW5zYWN0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjb21taXRUcmFu
c2FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGlkRmlu
aXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVPYmplY3RTdG9yZSk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6cmVuYW1lT2JqZWN0U3RvcmUpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNsZWFyT2JqZWN0U3RvcmUpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZUluZGV4KToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVJbmRleCk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6cmVuYW1lSW5kZXgpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnB1dE9yQWRkKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpnZXRSZWNvcmQpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmdldEFsbFJlY29yZHMpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmdldENvdW50KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVSZWNvcmQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
U3RvcmFnZU1hbmFnZXI6Om9wZW5DdXJzb3IpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6Oml0ZXJhdGVDdXJzb3IpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6OmdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuaDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2Vy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6T3JpZ2luU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VCdWNr
ZXQ6OlN0b3JhZ2VCdWNrZXQpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdl
cjo6U3RvcmFnZUJ1Y2tldDo6dG9XZWJzaXRlRGF0YVR5cGUpOgorICAgICAgICAoV2ViS2l0OjpP
cmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldDo6dG9TdG9yYWdlSWRlbnRpZmllcik6
CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0Ojpp
ZGJTdG9yYWdlTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2Vy
OjpTdG9yYWdlQnVja2V0OjpleGlzdGluZ0lEQlN0b3JhZ2VNYW5hZ2VyKToKKyAgICAgICAgKFdl
YktpdDo6T3JpZ2luU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VCdWNrZXQ6OmlzQWN0aXZlIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6T3JpZ2luU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VCdWNrZXQ6
OmlzRW1wdHkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6
U3RvcmFnZUJ1Y2tldDo6ZGVsZXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3Jh
Z2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0Ojptb3ZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok9y
aWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0OjpmZXRjaERhdGFUeXBlc0luTGlzdEZy
b21NZW1vcnkpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFn
ZUJ1Y2tldDo6ZmV0Y2hEYXRhVHlwZXNJbkxpc3RGcm9tRGlzayk6CisgICAgICAgIChXZWJLaXQ6
Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0OjpkZWxldGVJREJTdG9yYWdlRGF0
YSk6CisgICAgICAgIChXZWJLaXQ6OmNyZWF0ZVF1b3RhTWFuYWdlcik6CisgICAgICAgIChXZWJL
aXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpPcmlnaW5TdG9yYWdlTWFuYWdlcik6CisgICAgICAg
IChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpkZWZhdWx0QnVja2V0KToKKyAgICAgICAg
KFdlYktpdDo6T3JpZ2luU3RvcmFnZU1hbmFnZXI6OnF1b3RhTWFuYWdlcik6CisgICAgICAgIChX
ZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjppZGJTdG9yYWdlTWFuYWdlcik6CisgICAgICAg
IChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpleGlzdGluZ0lEQlN0b3JhZ2VNYW5hZ2Vy
KToKKyAgICAgICAgKFdlYktpdDo6T3JpZ2luU3RvcmFnZU1hbmFnZXI6Om1vdmVEYXRhKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2VyLmg6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9RdW90YU1hbmFnZXIuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6UXVvdGFNYW5hZ2VyOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0
OjpRdW90YU1hbmFnZXI6OlF1b3RhTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OlF1b3RhTWFu
YWdlcjo6cmVxdWVzdFNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6UXVvdGFNYW5hZ2VyOjpoYW5k
bGVSZXF1ZXN0cyk6CisgICAgICAgIChXZWJLaXQ6OlF1b3RhTWFuYWdlcjo6Z3JhbnRXaXRoQ3Vy
cmVudFF1b3RhKToKKyAgICAgICAgKFdlYktpdDo6UXVvdGFNYW5hZ2VyOjpncmFudEZhc3RQYXRo
KToKKyAgICAgICAgKFdlYktpdDo6UXVvdGFNYW5hZ2VyOjpkaWRJbmNyZWFzZVF1b3RhKToKKyAg
ICAgICAgKFdlYktpdDo6UXVvdGFNYW5hZ2VyOjpyZXNldFF1b3RhVXBkYXRlZEJhc2VkT25Vc2Fn
ZUZvclRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpRdW90YU1hbmFnZXI6OnJlc2V0UXVvdGFG
b3JUZXN0aW5nKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1F1b3RhTWFuYWdl
ci5oOiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAg
ICAgKHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQpOgorICAgICAgICAqIFNo
YXJlZC9XZWJzaXRlRGF0YS9RdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIuaDogQWRkZWQu
CisgICAgICAgICogU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmg6CisgICAgICAg
ICogU291cmNlcy50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmluY3Jl
YXNlUXVvdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1l
c3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cGVyVGhpcmRQYXJ0
eU9yaWdpblN0b3JhZ2VRdW90YSBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmUuaDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdFBlck9yaWdpblF1b3RhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbi5oOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIFdlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0
aW9uVG9TZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2
ZXI6OmRlbGV0ZURhdGFiYXNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRv
U2VydmVyOjpvcGVuRGF0YWJhc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9u
VG9TZXJ2ZXI6OmFib3J0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25u
ZWN0aW9uVG9TZXJ2ZXI6OmNvbW1pdFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
SURCQ29ubmVjdGlvblRvU2VydmVyOjpkaWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2VUcmFu
c2FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Y3Jl
YXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2
ZXI6OmRlbGV0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlv
blRvU2VydmVyOjpyZW5hbWVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNv
bm5lY3Rpb25Ub1NlcnZlcjo6Y2xlYXJPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRlbGV0ZUluZGV4KToKKyAgICAgICAgKFdlYktpdDo6
V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpyZW5hbWVJbmRleCk6CisgICAgICAgIChXZWJLaXQ6
OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6cHV0T3JBZGQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmdldFJlY29yZCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Z2V0QWxsUmVjb3Jkcyk6CisgICAgICAgIChXZWJLaXQ6
OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Z2V0Q291bnQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRlbGV0ZVJlY29yZCk6CisgICAgICAgIChXZWJLaXQ6
OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6b3BlbkN1cnNvcik6CisgICAgICAgIChXZWJLaXQ6
OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6aXRlcmF0ZUN1cnNvcik6CisgICAgICAgIChXZWJL
aXQ6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZXN0YWJsaXNoVHJhbnNhY3Rpb24pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRhdGFiYXNlQ29ubmVjdGlv
blBlbmRpbmdDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZl
cjo6ZGF0YWJhc2VDb25uZWN0aW9uQ2xvc2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29u
bmVjdGlvblRvU2VydmVyOjphYm9ydE9wZW5BbmRVcGdyYWRlTmVlZGVkKToKKyAgICAgICAgKFdl
YktpdDo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpkaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50
KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpvcGVuREJSZXF1
ZXN0Q2FuY2VsbGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVy
OjpnZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMpOgorCiAyMDIyLTAyLTAyICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVXNlIHByaXZh
dGUgcmVsYXkgZm9yIGFsbCBzdWJyZXNvdXJjZXMgaWYgdGhlIG1haW4gZG9jdW1lbnQgbWFpbiBy
ZXNvdXJjZSB3YXMgbG9hZGVkIHVzaW5nIHByaXZhdGUgcmVsYXkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cK
aW5kZXggZTZiYTczMjJjMzQ4ZWNkZTQ3OTRlMDk0OTk1YmFiNDg5NmJmNWE0OS4uZjE0NjAyOTE0
MzIzNDRjNTdmZjA2NGE3ZGU1ZDdlOTA2ZDRlZTc0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNCBAQAorMjAyMi0wMi0wMyAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNv
bT4KKworICAgICAgICBNYW5hZ2UgSW5kZXhlZERCIHN0b3JhZ2UgYnkgb3JpZ2luCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ5MjUKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzg3NTU1MDE0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogU3RvcmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwOgorICAg
ICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpxdW90YU1hbmFnZXIpOgorCiAyMDIyLTAyLTAyICBF
bGxpb3R0IFdpbGxpYW1zICA8ZW13QGFwcGxlLmNvbT4KIAogICAgICAgICBbWGNvZGVdIEZpeCBy
ZWR1bmRhbnQgZXhlY3V0aW9uIG9mICJDaGVjayBWVGFibGVzLi4uIiBzY3JpcHQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dURi93dGYvRmlsZVN5
c3RlbS5jcHAKaW5kZXggMzg4M2FjMjY2M2QwYTIwMjMyY2I1ZTA5YjRlNDU5NjhiMDAxNjdiOS4u
NTA0MTAzZWQwZTRjMWUwM2MxMDlmNGY3ZjE5Yzg4ZDg5YTBmZmJiNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3Rl
bS5jcHAKQEAgLTY2MCw2ICs2NjAsMTUgQEAgYm9vbCBjcmVhdGVTeW1ib2xpY0xpbmsoY29uc3Qg
U3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGljTGlua1BhdGgKICAgICBy
ZXR1cm4gIWVjOwogfQogCitTdHJpbmcgZ2V0U3ltYm9saWNMaW5rVGFyZ2V0KGNvbnN0IFN0cmlu
ZyYgc3ltYm9saWNMaW5rUGF0aCkKK3sKKyAgICBhdXRvIGZpbGVTeXN0ZW1QYXRoID0gdG9TdGRG
aWxlU3lzdGVtUGF0aChzeW1ib2xpY0xpbmtQYXRoKTsKKyAgICBpZiAoIXN0ZDo6ZmlsZXN5c3Rl
bTo6aXNfc3ltbGluayhmaWxlU3lzdGVtUGF0aCkpCisgICAgICAgIHJldHVybiBzeW1ib2xpY0xp
bmtQYXRoOworCisgICAgcmV0dXJuIGZyb21TdGRGaWxlU3lzdGVtUGF0aChzdGQ6OmZpbGVzeXN0
ZW06OnJlYWRfc3ltbGluayhmaWxlU3lzdGVtUGF0aCkpOworfQorCiBib29sIGhhcmRMaW5rKGNv
bnN0IFN0cmluZyYgdGFyZ2V0UGF0aCwgY29uc3QgU3RyaW5nJiBsaW5rUGF0aCkKIHsKICAgICBz
dGQ6OmVycm9yX2NvZGUgZWM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVt
LmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKaW5kZXggY2U2ODEyODYwYTAwZjkwMmYy
OTk4M2Y0OGNiMWNhMWVkMThiOTA5Ny4uOWQ4ZTQ5YjUxOGM0ZTBkNGYzMjZmNGM0YTFjZDc3N2Uz
YjI4OGZlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaApAQCAtMTI3LDYgKzEyNyw3IEBAIFdURl9FWFBPUlRf
UFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB2b2x1bWVGcmVlU3BhY2UoY29uc3QgU3Ry
aW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gdm9sdW1l
RmlsZUJsb2NrU2l6ZShjb25zdCBTdHJpbmcmKTsKIFdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9w
dGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJik7CiBXVEZfRVhQ
T1JUX1BSSVZBVEUgYm9vbCBjcmVhdGVTeW1ib2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQ
YXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGljTGlua1BhdGgpOworV1RGX0VYUE9SVF9QUklWQVRF
IFN0cmluZyBnZXRTeW1ib2xpY0xpbmtUYXJnZXQoY29uc3QgU3RyaW5nJiBzeW1ib2xpY0xpbmtQ
YXRoKTsKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgY3JlYXRlVGVtcG9yYXJ5WmlwQXJjaGl2
ZShjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSk7CiAKIGVudW0gY2xhc3MgRmlsZVR5cGUgeyBSZWd1
bGFyLCBEaXJlY3RvcnksIFN5bWJvbGljTGluayB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggOGFm
Mjg1M2VjM2Q5NjIxN2M5YTE2NmI3OWQ0NzRhMGViOGZhNjkzZC4uNzA2NjkxYjgyZGYxNGJiMWEx
Yzg0MWNlNjkwNmVhODhkZTc4ZTQ3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVy
cy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0yMjcsNiArMjI3
LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIE1vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9TZXJ2ZXJPcGVuREJSZXF1ZXN0LmgKICAgICBNb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaAogICAgIE1vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uaAorICAgIE1vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuaAogICAgIE1vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmgKIAogICAgIE1vZHVsZXMvaW5k
ZXhlZGRiL3NoYXJlZC9JbmRleEtleS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oCmluZGV4IDZjMGIxYjRmMmFi
MGMwMzMwNzY2NTRlYTRiMjc2NTU5NDQ1ODk1MzYuLjdmMDliZmIzMmQ1MWU5N2ZhN2VkNGU0NWQ1
MTEzMzhlNWI4MTE3ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oCkBAIC04Miw3ICs4Miw3IEBAIHB1Ymxp
YzoKICAgICBib29sIGlzVHJhbnNpZW50KCkgY29uc3QgeyByZXR1cm4gbV9pc1RyYW5zaWVudDsg
fQogCiAgICAgU3RyaW5nIGRhdGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVUb1Jvb3QoY29uc3QgU3Ry
aW5nJiByb290RGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIHZlcnNpb25TdHJpbmc9InYxIikgY29u
c3Q7Ci0gICAgc3RhdGljIFN0cmluZyBkYXRhYmFzZURpcmVjdG9yeVJlbGF0aXZlVG9Sb290KGNv
bnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgdG9wTGV2ZWxPcmlnaW4sIGNvbnN0IFNlY3VyaXR5T3Jp
Z2luRGF0YSYgb3BlbmluZ09yaWdpbiwgY29uc3QgU3RyaW5nJiByb290RGlyZWN0b3J5LCBjb25z
dCBTdHJpbmcmIHZlcnNpb25TdHJpbmcpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJp
bmcgZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9vdChjb25zdCBTZWN1cml0eU9yaWdpbkRh
dGEmIHRvcExldmVsT3JpZ2luLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9wZW5pbmdPcmln
aW4sIGNvbnN0IFN0cmluZyYgcm9vdERpcmVjdG9yeSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uU3Ry
aW5nKTsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXIm
KSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25h
bDxJREJEYXRhYmFzZUlkZW50aWZpZXI+IGRlY29kZShEZWNvZGVyJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQ29ubmVjdGlvblRvQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQ29ubmVj
dGlvblRvQ2xpZW50LmgKaW5kZXggMjdmNzI2OTE5ZjE0MjFmMjFhNWYwM2ZmZGZjMTc2ZDRjNGJk
ZjNjMi4uZjA1YWMyZjhjODJhODA5YzI3MWM5ZGY1OTdmOTY0NzMxOWVmNjQ2MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkNvbm5lY3Rpb25U
b0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9J
REJDb25uZWN0aW9uVG9DbGllbnQuaApAQCAtNzQsMTEgKzc0LDExIEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgbm90aWZ5T3BlbkRCUmVxdWVzdEJsb2NrZWQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlm
aWVyJiByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3Qgb2xkVmVyc2lvbiwgdWludDY0X3QgbmV3
VmVyc2lvbik7CiAKLSAgICB2b2lkIGRpZEdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhj
b25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImLCBWZWN0b3I8SURCRGF0YWJhc2VOYW1lQW5kVmVy
c2lvbj4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRHZXRBbGxEYXRhYmFzZU5hbWVz
QW5kVmVyc2lvbnMoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiwgVmVjdG9yPElEQkRhdGFi
YXNlTmFtZUFuZFZlcnNpb24+JiYpOwogCiAgICAgdm9pZCByZWdpc3RlckRhdGFiYXNlQ29ubmVj
dGlvbihVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mKTsKICAgICB2b2lkIHVucmVnaXN0ZXJE
YXRhYmFzZUNvbm5lY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJik7Ci0gICAgdm9p
ZCBjb25uZWN0aW9uVG9DbGllbnRDbG9zZWQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNv
bm5lY3Rpb25Ub0NsaWVudENsb3NlZCgpOwogICAgIGJvb2wgaXNDbG9zZWQoKSB7IHJldHVybiBt
X2lzQ2xvc2VkOyB9CiAgICAgdm9pZCBjbGVhckRlbGVnYXRlKCkgeyBtX2RlbGVnYXRlID0gbnVs
bHB0cjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvSURCU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9JREJTZXJ2ZXIuY3BwCmluZGV4IGQyNjY5MzE4MDg0NmFmNjY2ODllMTdhZWEzZmY5OTcx
OTU1YWUzNmUuLjRiYWQ0NDJiMWIzYTlhNDE3ODU5MDQyZjgxNjU3N2UwN2IxM2JhOGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2
ZXIuY3BwCkBAIC0xMDEsMTMgKzEwMSwxMyBAQCB2b2lkIElEQlNlcnZlcjo6dW5yZWdpc3RlclRy
YW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQogICAg
IG1fdHJhbnNhY3Rpb25zLnJlbW92ZSh0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpKTsK
IH0KIAotdm9pZCBJREJTZXJ2ZXI6OnJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0aW9uKFVuaXF1ZUlE
QkRhdGFiYXNlQ29ubmVjdGlvbiYgY29ubmVjdGlvbikKK3ZvaWQgSURCU2VydmVyOjpyZWdpc3Rl
ckNvbm5lY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogewog
ICAgIEFTU0VSVCghbV9kYXRhYmFzZUNvbm5lY3Rpb25zLmNvbnRhaW5zKGNvbm5lY3Rpb24uaWRl
bnRpZmllcigpKSk7CiAgICAgbV9kYXRhYmFzZUNvbm5lY3Rpb25zLnNldChjb25uZWN0aW9uLmlk
ZW50aWZpZXIoKSwgJmNvbm5lY3Rpb24pOwogfQogCi12b2lkIElEQlNlcnZlcjo6dW5yZWdpc3Rl
ckRhdGFiYXNlQ29ubmVjdGlvbihVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24pCit2b2lkIElEQlNlcnZlcjo6dW5yZWdpc3RlckNvbm5lY3Rpb24oVW5pcXVlSURCRGF0YWJh
c2VDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogewogICAgIEFTU0VSVChtX2RhdGFiYXNlQ29ubmVj
dGlvbnMuY29udGFpbnMoY29ubmVjdGlvbi5pZGVudGlmaWVyKCkpKTsKICAgICBtX2RhdGFiYXNl
Q29ubmVjdGlvbnMucmVtb3ZlKGNvbm5lY3Rpb24uaWRlbnRpZmllcigpKTsKQEAgLTEyOCwxMyAr
MTI4LDEzIEBAIHN0ZDo6dW5pcXVlX3B0cjxJREJCYWNraW5nU3RvcmU+IElEQlNlcnZlcjo6Y3Jl
YXRlQmFja2luZ1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlCiB7CiAgICAgQVNTRVJUKCFpc01haW5U
aHJlYWQoKSk7CiAgICAgaWYgKG1fZGF0YWJhc2VEaXJlY3RvcnlQYXRoLmlzRW1wdHkoKSkKLSAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TWVtb3J5SURCQmFja2luZ1N0b3JlPihtX3Nlc3Npb25J
RCwgaWRlbnRpZmllcik7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPE1lbW9yeUlEQkJhY2tp
bmdTdG9yZT4oaWRlbnRpZmllcik7CiAKICAgICBBU1NFUlQoIW1fc2Vzc2lvbklELmlzRXBoZW1l
cmFsKCkpOwogICAgIGlmIChpZGVudGlmaWVyLmlzVHJhbnNpZW50KCkpCi0gICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPE1lbW9yeUlEQkJhY2tpbmdTdG9yZT4obV9zZXNzaW9uSUQsIGlkZW50aWZp
ZXIpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxNZW1vcnlJREJCYWNraW5nU3RvcmU+KGlk
ZW50aWZpZXIpOwogCi0gICAgcmV0dXJuIG1ha2VVbmlxdWU8U1FMaXRlSURCQmFja2luZ1N0b3Jl
PihtX3Nlc3Npb25JRCwgaWRlbnRpZmllciwgbV9kYXRhYmFzZURpcmVjdG9yeVBhdGgpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPFNRTGl0ZUlEQkJhY2tpbmdTdG9yZT4oaWRlbnRpZmllciwgdXBn
cmFkZWREYXRhYmFzZURpcmVjdG9yeShpZGVudGlmaWVyKSk7CiB9CiAKIHZvaWQgSURCU2VydmVy
OjpvcGVuRGF0YWJhc2UoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhKQpAQCAtMTc3
LDE3ICsxNzcsNiBAQCB2b2lkIElEQlNlcnZlcjo6ZGVsZXRlRGF0YWJhc2UoY29uc3QgSURCUmVx
dWVzdERhdGEmIHJlcXVlc3REYXRhKQogICAgICAgICBtX3VuaXF1ZUlEQkRhdGFiYXNlTWFwLnJl
bW92ZShkYXRhYmFzZS0+aWRlbnRpZmllcigpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPFVuaXF1
ZUlEQkRhdGFiYXNlPiBJREJTZXJ2ZXI6OmNsb3NlQW5kVGFrZVVuaXF1ZUlEQkRhdGFiYXNlKFVu
aXF1ZUlEQkRhdGFiYXNlJiBkYXRhYmFzZSkKLXsKLSAgICBMT0coSW5kZXhlZERCLCAiSURCU2Vy
dmVyOjpjbG9zZVVuaXF1ZUlEQkRhdGFiYXNlIik7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKLQotICAgIGF1dG8gdW5pcXVlUG9pbnRlciA9IG1fdW5pcXVlSURCRGF0YWJhc2VNYXAudGFr
ZShkYXRhYmFzZS5pZGVudGlmaWVyKCkpOwotICAgIEFTU0VSVCh1bmlxdWVQb2ludGVyKTsKLQot
ICAgIHJldHVybiB1bmlxdWVQb2ludGVyOwotfQotCiB2b2lkIElEQlNlcnZlcjo6YWJvcnRUcmFu
c2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmll
cikKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCU2VydmVyOjphYm9ydFRyYW5zYWN0aW9uIik7
CkBAIC03NTAsNyArNzM5LDcgQEAgdm9pZCBJREJTZXJ2ZXI6OnJlbmFtZU9yaWdpbihjb25zdCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIG9sZE9yaWdpbiwgY29uc3QKICAgICAgICAgRmls
ZVN5c3RlbTo6bW92ZUZpbGUob2xkT3JpZ2luUGF0aCwgbmV3T3JpZ2luUGF0aCk7CiB9CiAKLVN0
b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uIElEQlNlcnZlcjo6cmVxdWVzdFNwYWNlKGNvbnN0
IENsaWVudE9yaWdpbiYgb3JpZ2luLCB1aW50NjRfdCB0YXNrU2l6ZSkgV1RGX0lHTk9SRVNfVEhS
RUFEX1NBRkVUWV9BTkFMWVNJUwordm9pZCBJREJTZXJ2ZXI6OnJlcXVlc3RTcGFjZShjb25zdCBD
bGllbnRPcmlnaW4mIG9yaWdpbiwgdWludDY0X3QgdGFza1NpemUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIFdURl9JR05PUkVTX1RIUkVBRF9TQUZF
VFlfQU5BTFlTSVMKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQo
bV9sb2NrLmlzSGVsZCgpKTsKQEAgLTc2Miw3ICs3NTEsNyBAQCBTdG9yYWdlUXVvdGFNYW5hZ2Vy
OjpEZWNpc2lvbiBJREJTZXJ2ZXI6OnJlcXVlc3RTcGFjZShjb25zdCBDbGllbnRPcmlnaW4mIG9y
aWdpbgogICAgIHJlc3VsdCA9IG1fc3BhY2VSZXF1ZXN0ZXIob3JpZ2luLCB0YXNrU2l6ZSk7CiAg
ICAgbV9sb2NrLmxvY2soKTsKIAotICAgIHJldHVybiByZXN1bHQ7CisgICAgY29tcGxldGlvbkhh
bmRsZXIocmVzdWx0ID09IFN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uOjpHcmFudCk7CiB9
CiAKIHVpbnQ2NF90IElEQlNlcnZlcjo6ZGlza1VzYWdlKGNvbnN0IFN0cmluZyYgcm9vdERpcmVj
dG9yeSwgY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4pCkBAIC03ODQsNiArNzczLDIzIEBAIHZv
aWQgSURCU2VydmVyOjp1cGdyYWRlRmlsZXNJZk5lY2Vzc2FyeSgpCiAgICAgICAgIEZpbGVTeXN0
ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhuZXdWZXJzaW9uRGlyZWN0b3J5KTsKIH0KIAorU3RyaW5n
IElEQlNlcnZlcjo6dXBncmFkZWREYXRhYmFzZURpcmVjdG9yeShjb25zdCBXZWJDb3JlOjpJREJE
YXRhYmFzZUlkZW50aWZpZXImIGlkZW50aWZpZXIpCit7CisgICAgU3RyaW5nIG9sZE9yaWdpbkRp
cmVjdG9yeSA9IGlkZW50aWZpZXIuZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9vdChtX2Rh
dGFiYXNlRGlyZWN0b3J5UGF0aCwgInYwIik7CisgICAgU3RyaW5nIG9sZERhdGFiYXNlRGlyZWN0
b3J5ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG9sZE9yaWdpbkRpcmVj
dG9yeSwgU1FMaXRlSURCQmFja2luZ1N0b3JlOjplbmNvZGVEYXRhYmFzZU5hbWUoaWRlbnRpZmll
ci5kYXRhYmFzZU5hbWUoKSkpOworICAgIFN0cmluZyBuZXdPcmlnaW5EaXJlY3RvcnkgPSBpZGVu
dGlmaWVyLmRhdGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVUb1Jvb3QobV9kYXRhYmFzZURpcmVjdG9y
eVBhdGgsICJ2MSIpOworICAgIFN0cmluZyBmaWxlTmFtZUhhc2ggPSBTUUxpdGVGaWxlU3lzdGVt
Ojpjb21wdXRlSGFzaEZvckZpbGVOYW1lKGlkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCkpOworICAg
IFN0cmluZyBuZXdEYXRhYmFzZURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChuZXdPcmlnaW5EaXJlY3RvcnksIGZpbGVOYW1lSGFzaCk7CisgICAgRmlsZVN5
c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKG5ld0RhdGFiYXNlRGlyZWN0b3J5KTsKKworICAgIGlm
IChGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG9sZERhdGFiYXNlRGlyZWN0b3J5KSkgeworICAgICAg
ICBGaWxlU3lzdGVtOjptb3ZlRmlsZShvbGREYXRhYmFzZURpcmVjdG9yeSwgbmV3RGF0YWJhc2VE
aXJlY3RvcnkpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeShvbGRP
cmlnaW5EaXJlY3RvcnkpOworICAgIH0KKworICAgIHJldHVybiBuZXdEYXRhYmFzZURpcmVjdG9y
eTsKK30KKwogYm9vbCBJREJTZXJ2ZXI6Omhhc0RhdGFiYXNlQWN0aXZpdGllc09uTWFpblRocmVh
ZCgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaAppbmRleCBkODgz
NjQ5YTVjOGQ1YjU5ZjAyYzJiZGFjZGRlNjc4YTFjYTNjNDJmLi5iNDMxM2Q5YTEwNjA4YjdkMzQy
ZjZiMDg3NWJjNzY0NjJmN2MwMTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVk
ZSAiU3RvcmFnZVF1b3RhTWFuYWdlci5oIgogI2luY2x1ZGUgIlVuaXF1ZUlEQkRhdGFiYXNlLmgi
CiAjaW5jbHVkZSAiVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiVW5p
cXVlSURCRGF0YWJhc2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSA8cGFsL0h5c3RlcmVzaXNBY3Rpdml0
eS5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJl
YWRUYXNrSGFuZGxlci5oPgpAQCAtNDgsOCArNDksNyBAQCBzdHJ1Y3QgSURCR2V0UmVjb3JkRGF0
YTsKIAogbmFtZXNwYWNlIElEQlNlcnZlciB7CiAKLWNsYXNzIElEQlNlcnZlciB7Ci0gICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CitjbGFzcyBJREJTZXJ2ZXIgOiBwdWJsaWMgVW5pcXVlSURC
RGF0YWJhc2VNYW5hZ2VyIHsKIHB1YmxpYzoKICAgICB1c2luZyBTdG9yYWdlUXVvdGFNYW5hZ2Vy
U3BhY2VSZXF1ZXN0ZXIgPSBGdW5jdGlvbjxTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbihj
b25zdCBDbGllbnRPcmlnaW4mLCB1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCk+OwogICAgIFdFQkNP
UkVfRVhQT1JUIElEQlNlcnZlcihQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBkYXRhYmFz
ZURpcmVjdG9yeVBhdGgsIFN0b3JhZ2VRdW90YU1hbmFnZXJTcGFjZVJlcXVlc3RlciYmLCBMb2Nr
Jik7CkBAIC04OCwxNSArODgsMTEgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBnZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMoSURCQ29ubmVjdGlvbklkZW50aWZpZXIs
IGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYsIGNvbnN0IENsaWVudE9yaWdpbiYpOwogCi0K
LSAgICB2b2lkIHJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlQ29u
bmVjdGlvbiYpOwotICAgIHZvaWQgdW5yZWdpc3RlckRhdGFiYXNlQ29ubmVjdGlvbihVbmlxdWVJ
REJEYXRhYmFzZUNvbm5lY3Rpb24mKTsKLSAgICB2b2lkIHJlZ2lzdGVyVHJhbnNhY3Rpb24oVW5p
cXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYpOwotICAgIHZvaWQgdW5yZWdpc3RlclRyYW5zYWN0
aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mKTsKLQotICAgIHN0ZDo6dW5pcXVlX3B0
cjxVbmlxdWVJREJEYXRhYmFzZT4gY2xvc2VBbmRUYWtlVW5pcXVlSURCRGF0YWJhc2UoVW5pcXVl
SURCRGF0YWJhc2UmKTsKLQotICAgIHN0ZDo6dW5pcXVlX3B0cjxJREJCYWNraW5nU3RvcmU+IGNy
ZWF0ZUJhY2tpbmdTdG9yZShjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImKTsKKyAgICB2b2lk
IHJlZ2lzdGVyQ29ubmVjdGlvbihVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mKSBmaW5hbDsK
KyAgICB2b2lkIHVucmVnaXN0ZXJDb25uZWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlv
biYpIGZpbmFsOworICAgIHZvaWQgcmVnaXN0ZXJUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFz
ZVRyYW5zYWN0aW9uJikgZmluYWw7CisgICAgdm9pZCB1bnJlZ2lzdGVyVHJhbnNhY3Rpb24oVW5p
cXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYpIGZpbmFsOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJ
REJCYWNraW5nU3RvcmU+IGNyZWF0ZUJhY2tpbmdTdG9yZShjb25zdCBJREJEYXRhYmFzZUlkZW50
aWZpZXImKSBmaW5hbDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIEhhc2hTZXQ8U2VjdXJpdHlPcmln
aW5EYXRhPiBnZXRPcmlnaW5zKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbG9z
ZUFuZERlbGV0ZURhdGFiYXNlc01vZGlmaWVkU2luY2UoV2FsbFRpbWUpOwpAQCAtMTA0LDcgKzEw
MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsb3NlRGF0YWJhc2VzRm9yT3JpZ2lucyhjb25zdCBW
ZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiYsIEZ1bmN0aW9uPGJvb2woY29uc3QgU2VjdXJpdHlP
cmlnaW5EYXRhJiwgY29uc3QgQ2xpZW50T3JpZ2luJik+JiYpOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgcmVuYW1lT3JpZ2luKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIGNv
bnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYpOwogCi0gICAgU3RvcmFnZVF1b3RhTWFu
YWdlcjo6RGVjaXNpb24gcmVxdWVzdFNwYWNlKGNvbnN0IENsaWVudE9yaWdpbiYsIHVpbnQ2NF90
IHRhc2tTaXplKTsKKyAgICB2b2lkIHJlcXVlc3RTcGFjZShjb25zdCBDbGllbnRPcmlnaW4mLCB1
aW50NjRfdCBzaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKICAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdWludDY0X3QgZGlza1VzYWdlKGNvbnN0IFN0cmluZyYg
cm9vdERpcmVjdG9yeSwgY29uc3QgQ2xpZW50T3JpZ2luJik7CiAKICAgICBXRUJDT1JFX0VYUE9S
VCBib29sIGhhc0RhdGFiYXNlQWN0aXZpdGllc09uTWFpblRocmVhZCgpIGNvbnN0OwpAQCAtMTE0
LDYgKzExMCw3IEBAIHByaXZhdGU6CiAgICAgVW5pcXVlSURCRGF0YWJhc2UmIGdldE9yQ3JlYXRl
VW5pcXVlSURCRGF0YWJhc2UoY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJik7CiAKICAgICB2
b2lkIHVwZ3JhZGVGaWxlc0lmTmVjZXNzYXJ5KCk7CisgICAgU3RyaW5nIHVwZ3JhZGVkRGF0YWJh
c2VEaXJlY3RvcnkoY29uc3QgV2ViQ29yZTo6SURCRGF0YWJhc2VJZGVudGlmaWVyJik7CiAgICAg
dm9pZCByZW1vdmVEYXRhYmFzZXNNb2RpZmllZFNpbmNlRm9yVmVyc2lvbihXYWxsVGltZSwgY29u
c3QgU3RyaW5nJik7CiAgICAgdm9pZCByZW1vdmVEYXRhYmFzZXNXaXRoT3JpZ2luc0ZvclZlcnNp
b24oY29uc3QgVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4mLCBjb25zdCBTdHJpbmcmKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9y
eUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcAppbmRleCA3ZWU0MTQwYThhZjE4MDExYzk2
YmNhN2I2MDhkODY1OTE4YWY4NWVhLi5kNjMzNTAzMDk5MzA1NWI5YjEyYjc4NDU2NTVkYTgzMzcy
YjFhNTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcApAQCAtNDQsOSArNDQs
OCBAQCBuYW1lc3BhY2UgSURCU2VydmVyIHsKIC8vIFRoZSBJbmRleGVkREIgc3BlYyBzdGF0ZXMg
dGhlIG1heGltdW0gdmFsdWUgeW91IGNhbiBnZXQgZnJvbSB0aGUga2V5IGdlbmVyYXRvciBpcyAy
XjUzLgogY29uc3RleHByIHVpbnQ2NF90IG1heEdlbmVyYXRlZEtleVZhbHVlID0gMHgyMDAwMDAw
MDAwMDAwMDsKIAotTWVtb3J5SURCQmFja2luZ1N0b3JlOjpNZW1vcnlJREJCYWNraW5nU3RvcmUo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImIGlk
ZW50aWZpZXIpCitNZW1vcnlJREJCYWNraW5nU3RvcmU6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZShj
b25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImIGlkZW50aWZpZXIpCiAgICAgOiBtX2lkZW50aWZp
ZXIoaWRlbnRpZmllcikKLSAgICAsIG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKIHsKIH0KIApAQCAt
MTM0LDcgKzEzMyw3IEBAIElEQkVycm9yIE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2Jq
ZWN0U3RvcmUoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0CiAgICAgICAgIHJldHVybiBJ
REJFcnJvciB7IENvbnN0cmFpbnRFcnJvciB9OwogCiAgICAgQVNTRVJUKCFtX29iamVjdFN0b3Jl
c0J5SWRlbnRpZmllci5jb250YWlucyhpbmZvLmlkZW50aWZpZXIoKSkpOwotICAgIGF1dG8gb2Jq
ZWN0U3RvcmUgPSBNZW1vcnlPYmplY3RTdG9yZTo6Y3JlYXRlKG1fc2Vzc2lvbklELCBpbmZvKTsK
KyAgICBhdXRvIG9iamVjdFN0b3JlID0gTWVtb3J5T2JqZWN0U3RvcmU6OmNyZWF0ZShpbmZvKTsK
IAogICAgIG1fZGF0YWJhc2VJbmZvLT5hZGRFeGlzdGluZ09iamVjdFN0b3JlKGluZm8pOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5
SURCQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmgKaW5kZXggOTJhYTc2MGQyMDczMzcxOGZiZGI4YzA0
NGNmZTY3ZGNhYjE2NTMzNS4uOWM4MjExYjU5MDY1N2FmNjgwNTEyNDIyOWIxMDI5MTFjMmMwMGVl
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01l
bW9yeUlEQkJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuaApAQCAtMzAsNyArMzAsNiBAQAogI2lu
Y2x1ZGUgIklEQlJlc291cmNlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkluZGV4S2V5LmgiCiAj
aW5jbHVkZSAiTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uaCIKLSNpbmNsdWRlIDxwYWwv
U2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtNDEsOCArNDAsOCBAQCBjbGFzcyBNZW1vcnlPYmplY3RTdG9yZTsKIGNsYXNzIE1l
bW9yeUlEQkJhY2tpbmdTdG9yZSBmaW5hbCA6IHB1YmxpYyBJREJCYWNraW5nU3RvcmUgewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIE1lbW9yeUlEQkJhY2tpbmdT
dG9yZShQQUw6OlNlc3Npb25JRCwgY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJik7Ci0gICAg
fk1lbW9yeUlEQkJhY2tpbmdTdG9yZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIE1lbW9yeUlEQkJh
Y2tpbmdTdG9yZShjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB+TWVtb3J5SURCQmFja2luZ1N0b3JlKCk7CiAKICAgICBJREJFcnJvciBnZXRPckVzdGFi
bGlzaERhdGFiYXNlSW5mbyhJREJEYXRhYmFzZUluZm8mKSBmaW5hbDsKICAgICB1aW50NjRfdCBk
YXRhYmFzZVZlcnNpb24oKSBmaW5hbDsKQEAgLTkyLDcgKzkxLDYgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHVucmVnaXN0ZXJPYmplY3RTdG9yZShNZW1vcnlPYmplY3RTdG9yZSYpOwogCiAgICAgSURC
RGF0YWJhc2VJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKLSAgICBQQUw6OlNlc3Npb25JRCBtX3Nl
c3Npb25JRDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SURCRGF0YWJhc2VJbmZvPiBtX2RhdGFiYXNl
SW5mbzsKIAogICAgIEhhc2hNYXA8SURCUmVzb3VyY2VJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9w
dHI8TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24+PiBtX3RyYW5zYWN0aW9uczsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmpl
Y3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVt
b3J5T2JqZWN0U3RvcmUuY3BwCmluZGV4IDVhNTNlMjMxNTI2ODRkZTM4MGRhYTFlNTk3M2ZiMTkz
ZGYwMTI2NzcuLmRmYWI2MTMzNTdlMzVjNWU3ZWZmY2U4NTk2MjQ3OTcwZTI2ZTA1NDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmpl
Y3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L01lbW9yeU9iamVjdFN0b3JlLmNwcApAQCAtMzgsMTggKzM4LDE3IEBACiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSlNDSlNWYWx1ZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0pT
VmFsdWVJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNMb2NrLmg+Ci0jaW5j
bHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1l
c3BhY2UgSlNDOwogbmFtZXNwYWNlIElEQlNlcnZlciB7CiAKLVJlZjxNZW1vcnlPYmplY3RTdG9y
ZT4gTWVtb3J5T2JqZWN0U3RvcmU6OmNyZWF0ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNv
bnN0IElEQk9iamVjdFN0b3JlSW5mbyYgaW5mbykKK1JlZjxNZW1vcnlPYmplY3RTdG9yZT4gTWVt
b3J5T2JqZWN0U3RvcmU6OmNyZWF0ZShjb25zdCBJREJPYmplY3RTdG9yZUluZm8mIGluZm8pCiB7
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVtb3J5T2JqZWN0U3RvcmUoc2Vzc2lvbklELCBp
bmZvKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVtb3J5T2JqZWN0U3RvcmUoaW5mbykp
OwogfQogCi1NZW1vcnlPYmplY3RTdG9yZTo6TWVtb3J5T2JqZWN0U3RvcmUoUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYgaW5mbykKK01lbW9yeU9iamVjdFN0b3JlOjpN
ZW1vcnlPYmplY3RTdG9yZShjb25zdCBJREJPYmplY3RTdG9yZUluZm8mIGluZm8pCiAgICAgOiBt
X2luZm8oaW5mbykKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmgKaW5kZXggODcxZGViNWU0YWUw
NTE0ODJiOTA4OTY4OTVlYTMxYzI3NmRkMzA4Ni4uZjAzYTNhMWIwYWQ1MzRiOWYzMzljNGZiZDdl
NzQwYWRmMjI4NDcwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmgKQEAgLTM0LDEwICszNCw2IEBA
CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgog
Ci1uYW1lc3BhY2UgUEFMIHsKLWNsYXNzIFNlc3Npb25JRDsKLX0KLQogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBJREJDdXJzb3JJbmZvOwpAQCAtNjEsNyArNTcsNyBAQCB0eXBlZGVmIEhh
c2hNYXA8SURCS2V5RGF0YSwgVGhyZWFkU2FmZURhdGFCdWZmZXIsIElEQktleURhdGFIYXNoLCBJ
REJLZXlEYXRhSGFzaAogCiBjbGFzcyBNZW1vcnlPYmplY3RTdG9yZSA6IHB1YmxpYyBSZWZDb3Vu
dGVkPE1lbW9yeU9iamVjdFN0b3JlPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxNZW1vcnlP
YmplY3RTdG9yZT4gY3JlYXRlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBJREJPYmplY3RTdG9yZUlu
Zm8mKTsKKyAgICBzdGF0aWMgUmVmPE1lbW9yeU9iamVjdFN0b3JlPiBjcmVhdGUoY29uc3QgSURC
T2JqZWN0U3RvcmVJbmZvJik7CiAKICAgICB+TWVtb3J5T2JqZWN0U3RvcmUoKTsKIApAQCAtMTA4
LDcgKzEwNCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbmFtZUluZGV4KE1lbW9yeUluZGV4Jiwg
Y29uc3QgU3RyaW5nJiBuZXdOYW1lKTsKIAogcHJpdmF0ZToKLSAgICBNZW1vcnlPYmplY3RTdG9y
ZShQQUw6OlNlc3Npb25JRCwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJik7CisgICAgTWVtb3J5
T2JqZWN0U3RvcmUoY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJik7CiAKICAgICBJREJLZXlEYXRh
U2V0OjppdGVyYXRvciBsb3dlc3RJdGVyYXRvckluUmFuZ2UoY29uc3QgSURCS2V5UmFuZ2VEYXRh
JiwgYm9vbCByZXZlcnNlKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNw
cAppbmRleCAyN2NkOGVlYzUzZTFhY2ZjNTk4NWVjN2I4ZjA1ZTIyNzY0NWM4NzdlLi5hOTllNzVi
OGRiMzNhYTA5ZGI3OGJlYTdiYTQ0MGJiYzg5ZGNiNzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFj
a2luZ1N0b3JlLmNwcApAQCAtMjM2LDEyICsyMzYsMTAgQEAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBp
bmRleEluZm9UYWJsZVNjaGVtYVRlbXAoKQogICAgIHJldHVybiBUQUJMRV9TQ0hFTUFfUFJFRklY
ICJfVGVtcF9JbmRleEluZm8iIElOREVYX0lORk9fVEFCTEVfU0NIRU1BX1NVRkZJWDsKIH0KIAot
U1FMaXRlSURCQmFja2luZ1N0b3JlOjpTUUxpdGVJREJCYWNraW5nU3RvcmUoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImIGlkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgZGF0YWJhc2VSb290RGlyZWN0b3J5KQotICAgIDogbV9zZXNzaW9uSUQoc2Vz
c2lvbklEKQotICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCi0gICAgLCBtX2RhdGFiYXNl
Um9vdERpcmVjdG9yeShkYXRhYmFzZVJvb3REaXJlY3RvcnkpCitTUUxpdGVJREJCYWNraW5nU3Rv
cmU6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZShjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImIGlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXJlY3RvcnkpCisgICAgOiBtX2lkZW50
aWZpZXIoaWRlbnRpZmllcikKKyAgICAsIG1fZGF0YWJhc2VEaXJlY3RvcnkoZGF0YWJhc2VEaXJl
Y3RvcnkpCiB7Ci0gICAgbV9kYXRhYmFzZURpcmVjdG9yeSA9IGZ1bGxEYXRhYmFzZURpcmVjdG9y
eVdpdGhVcGdyYWRlKCk7CiB9CiAKIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6flNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZSgpCkBAIC05MTIsMTkgKzkxMCwyOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8SURCRGF0
YWJhc2VJbmZvPiBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmV4dHJhY3RFeGlzdGluZ0RhdGFiYXNl
SQogICAgIHJldHVybiBkYXRhYmFzZUluZm87CiB9CiAKLVN0cmluZyBTUUxpdGVJREJCYWNraW5n
U3RvcmU6OmZpbGVuYW1lRm9yRGF0YWJhc2VOYW1lKCkgY29uc3QKK1N0cmluZyBTUUxpdGVJREJC
YWNraW5nU3RvcmU6OmVuY29kZURhdGFiYXNlTmFtZShjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFt
ZSkKIHsKLSAgICBBU1NFUlQoIW1faWRlbnRpZmllci5kYXRhYmFzZU5hbWUoKS5pc051bGwoKSk7
Ci0KLSAgICBpZiAobV9pZGVudGlmaWVyLmRhdGFiYXNlTmFtZSgpLmlzRW1wdHkoKSkKKyAgICBB
U1NFUlQoIWRhdGFiYXNlTmFtZS5pc051bGwoKSk7CisgICAgaWYgKGRhdGFiYXNlTmFtZS5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybiAiJTAwIjsKIAotICAgIFN0cmluZyBmaWxlbmFtZSA9IEZp
bGVTeXN0ZW06OmVuY29kZUZvckZpbGVOYW1lKG1faWRlbnRpZmllci5kYXRhYmFzZU5hbWUoKSk7
CisgICAgU3RyaW5nIGZpbGVuYW1lID0gRmlsZVN5c3RlbTo6ZW5jb2RlRm9yRmlsZU5hbWUoZGF0
YWJhc2VOYW1lKTsKICAgICBmaWxlbmFtZS5yZXBsYWNlKCcuJywgIiUyRSIpOwogCiAgICAgcmV0
dXJuIGZpbGVuYW1lOwogfQogCitTdHJpbmcgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWNvZGVE
YXRhYmFzZU5hbWUoY29uc3QgU3RyaW5nJiBlbmNvZGVkTmFtZSkKK3sKKyAgICBpZiAoZW5jb2Rl
ZE5hbWUgPT0gIiUwMCJfcykKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIFN0cmluZyBuYW1l
ID0gZW5jb2RlZE5hbWU7CisgICAgbmFtZS5yZXBsYWNlKCIlMkUiX3MsICIuIl9zKTsKKworICAg
IHJldHVybiBGaWxlU3lzdGVtOjpkZWNvZGVGcm9tRmlsZW5hbWUobmFtZSk7Cit9CisKIFN0cmlu
ZyBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmZ1bGxEYXRhYmFzZVBhdGhGb3JEaXJlY3RvcnkoY29u
c3QgU3RyaW5nJiBmdWxsRGF0YWJhc2VEaXJlY3RvcnkpCiB7CiAgICAgcmV0dXJuIEZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChmdWxsRGF0YWJhc2VEaXJlY3RvcnksICJJbmRl
eGVkREIuc3FsaXRlMyIpOwpAQCAtOTY1LDIzICs5NzMsNiBAQCBzdGQ6Om9wdGlvbmFsPElEQkRh
dGFiYXNlTmFtZUFuZFZlcnNpb24+IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGF0YWJhc2VOYW1l
QW5kVgogICAgIHJldHVybiBJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uIHsgZGF0YWJhc2VOYW1l
LCAqZGF0YWJhc2VWZXJzaW9uIH07CiB9CiAKLVN0cmluZyBTUUxpdGVJREJCYWNraW5nU3RvcmU6
OmZ1bGxEYXRhYmFzZURpcmVjdG9yeVdpdGhVcGdyYWRlKCkKLXsKLSAgICBTdHJpbmcgb2xkT3Jp
Z2luRGlyZWN0b3J5ID0gbV9pZGVudGlmaWVyLmRhdGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVUb1Jv
b3QobV9kYXRhYmFzZVJvb3REaXJlY3RvcnksICJ2MCIpOwotICAgIFN0cmluZyBvbGREYXRhYmFz
ZURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChvbGRPcmln
aW5EaXJlY3RvcnksIGZpbGVuYW1lRm9yRGF0YWJhc2VOYW1lKCkpOwotICAgIFN0cmluZyBuZXdP
cmlnaW5EaXJlY3RvcnkgPSBtX2lkZW50aWZpZXIuZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRv
Um9vdChtX2RhdGFiYXNlUm9vdERpcmVjdG9yeSwgInYxIik7Ci0gICAgU3RyaW5nIGZpbGVOYW1l
SGFzaCA9IFNRTGl0ZUZpbGVTeXN0ZW06OmNvbXB1dGVIYXNoRm9yRmlsZU5hbWUobV9pZGVudGlm
aWVyLmRhdGFiYXNlTmFtZSgpKTsKLSAgICBTdHJpbmcgbmV3RGF0YWJhc2VEaXJlY3RvcnkgPSBG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobmV3T3JpZ2luRGlyZWN0b3J5LCBm
aWxlTmFtZUhhc2gpOwotICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhuZXdEYXRh
YmFzZURpcmVjdG9yeSk7Ci0KLSAgICBpZiAoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhvbGREYXRh
YmFzZURpcmVjdG9yeSkpIHsKLSAgICAgICAgRmlsZVN5c3RlbTo6bW92ZUZpbGUob2xkRGF0YWJh
c2VEaXJlY3RvcnksIG5ld0RhdGFiYXNlRGlyZWN0b3J5KTsKLSAgICAgICAgRmlsZVN5c3RlbTo6
ZGVsZXRlRW1wdHlEaXJlY3Rvcnkob2xkT3JpZ2luRGlyZWN0b3J5KTsKLSAgICB9Ci0KLSAgICBy
ZXR1cm4gbmV3RGF0YWJhc2VEaXJlY3Rvcnk7Ci19Ci0KIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tp
bmdTdG9yZTo6Z2V0T3JFc3RhYmxpc2hEYXRhYmFzZUluZm8oSURCRGF0YWJhc2VJbmZvJiBpbmZv
KQogewogICAgIExPRyhJbmRleGVkREIsICJTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldE9yRXN0
YWJsaXNoRGF0YWJhc2VJbmZvIC0gZGF0YWJhc2UgJXMiLCBtX2lkZW50aWZpZXIuZGF0YWJhc2VO
YW1lKCkudXRmOCgpLmRhdGEoKSk7CkBAIC05OTEsMTEgKzk4MiwxMSBAQCBJREJFcnJvciBTUUxp
dGVJREJCYWNraW5nU3RvcmU6OmdldE9yRXN0YWJsaXNoRGF0YWJhc2VJbmZvKElEQkRhdGFiYXNl
SW5mbyYgaW5mbwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyB9OwogICAgIH0KIAotICAgIFN0
cmluZyBkYkZpbGVuYW1lID0gZnVsbERhdGFiYXNlUGF0aCgpOwotCisgICAgU3RyaW5nIGRhdGFi
YXNlUGF0aCA9IGZ1bGxEYXRhYmFzZVBhdGgoKTsKKyAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGly
ZWN0b3JpZXMoRmlsZVN5c3RlbTo6cGFyZW50UGF0aChkYXRhYmFzZVBhdGgpKTsKICAgICBtX3Nx
bGl0ZURCID0gbWFrZVVuaXF1ZTxTUUxpdGVEYXRhYmFzZT4oKTsKLSAgICBpZiAoIW1fc3FsaXRl
REItPm9wZW4oZGJGaWxlbmFtZSkpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gb3Bl
biBTUUxpdGUgZGF0YWJhc2UgYXQgcGF0aCAnJXMnIiwgZGJGaWxlbmFtZS51dGY4KCkuZGF0YSgp
KTsKKyAgICBpZiAoIW1fc3FsaXRlREItPm9wZW4oZGF0YWJhc2VQYXRoKSkgeworICAgICAgICBM
T0dfRVJST1IoIkZhaWxlZCB0byBvcGVuIFNRTGl0ZSBkYXRhYmFzZSBhdCBwYXRoICclcyciLCBk
YXRhYmFzZVBhdGgudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIGNsb3NlU1FMaXRlREIoKTsKICAg
ICB9CiAKQEAgLTEwNDQsNyArMTAzNSw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6Z2V0T3JFc3RhYmxpc2hEYXRhYmFzZUluZm8oSURCRGF0YWJhc2VJbmZvJiBpbmZvCiAgICAg
ICAgIGRhdGFiYXNlSW5mbyA9IGNyZWF0ZUFuZFBvcHVsYXRlSW5pdGlhbERhdGFiYXNlSW5mbygp
OwogCiAgICAgaWYgKCFkYXRhYmFzZUluZm8pIHsKLSAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUg
dG8gZXN0YWJsaXNoIElEQiBkYXRhYmFzZSBhdCBwYXRoICclcyciLCBkYkZpbGVuYW1lLnV0Zjgo
KS5kYXRhKCkpOworICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBlc3RhYmxpc2ggSURCIGRh
dGFiYXNlIGF0IHBhdGggJyVzJyIsIGRhdGFiYXNlUGF0aC51dGY4KCkuZGF0YSgpKTsKICAgICAg
ICAgY2xvc2VTUUxpdGVEQigpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJy
b3IsICJVbmFibGUgdG8gZXN0YWJsaXNoIElEQiBkYXRhYmFzZSBmaWxlIl9zIH07CiAgICAgfQpA
QCAtMjc5OCw3ICsyNzg5LDYgQEAgdm9pZCBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRlbGV0ZUJh
Y2tpbmdTdG9yZSgpCiAKICAgICBTUUxpdGVGaWxlU3lzdGVtOjpkZWxldGVEYXRhYmFzZUZpbGUo
ZGF0YWJhc2VQYXRoKTsKICAgICBTUUxpdGVGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURhdGFiYXNl
RGlyZWN0b3J5KG1fZGF0YWJhc2VEaXJlY3RvcnkpOwotICAgIFNRTGl0ZUZpbGVTeXN0ZW06OmRl
bGV0ZUVtcHR5RGF0YWJhc2VEaXJlY3RvcnkobV9pZGVudGlmaWVyLmRhdGFiYXNlRGlyZWN0b3J5
UmVsYXRpdmVUb1Jvb3QobV9kYXRhYmFzZVJvb3REaXJlY3RvcnkpKTsKIH0KIAogdm9pZCBTUUxp
dGVJREJCYWNraW5nU3RvcmU6OnVucmVnaXN0ZXJDdXJzb3IoU1FMaXRlSURCQ3Vyc29yJiBjdXJz
b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
U1FMaXRlSURCQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmgKaW5kZXggMmVmZTZiMmEzNDE5OTNiYjI2
ZmRmOTFjZmY2ZTdkZWE4ZGJiZWQzNi4uNzMxYTlhNDE5Mzg2NWUzYzVmM2MzNWVkNzU3MWIxMjgy
Zjc4MDk2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaApAQCAtNTEsOSArNTEsOCBA
QCBjbGFzcyBTUUxpdGVJREJDdXJzb3I7CiBjbGFzcyBTUUxpdGVJREJCYWNraW5nU3RvcmUgZmlu
YWwgOiBwdWJsaWMgSURCQmFja2luZ1N0b3JlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKLSAgICBTUUxpdGVJREJCYWNraW5nU3RvcmUoUEFMOjpTZXNzaW9uSUQsIGNv
bnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VSb290RGly
ZWN0b3J5KTsKLSAgICAKLSAgICB+U1FMaXRlSURCQmFja2luZ1N0b3JlKCkgZmluYWw7CisgICAg
V0VCQ09SRV9FWFBPUlQgU1FMaXRlSURCQmFja2luZ1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlSWRl
bnRpZmllciYsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXJlY3RvcnkpOworICAgIFdFQkNPUkVf
RVhQT1JUIH5TUUxpdGVJREJCYWNraW5nU3RvcmUoKSBmaW5hbDsKIAogICAgIElEQkVycm9yIGdl
dE9yRXN0YWJsaXNoRGF0YWJhc2VJbmZvKElEQkRhdGFiYXNlSW5mbyYpIGZpbmFsOwogICAgIHVp
bnQ2NF90IGRhdGFiYXNlVmVyc2lvbigpIGZpbmFsOwpAQCAtOTQsMTggKzkzLDE1IEBAIHB1Ymxp
YzoKIAogICAgIElEQkVycm9yIGdldEJsb2JSZWNvcmRzRm9yT2JqZWN0U3RvcmVSZWNvcmQoaW50
NjRfdCBvYmplY3RTdG9yZVJlY29yZCwgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBWZWN0b3I8
U3RyaW5nPiYgYmxvYkZpbGVQYXRocyk7CiAKLSAgICBzdGF0aWMgdWludDY0X3QgZGF0YWJhc2Vz
U2l6ZUZvckRpcmVjdG9yeShjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSk7Ci0KKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgdWludDY0X3QgZGF0YWJhc2VzU2l6ZUZvckRpcmVjdG9yeShjb25zdCBT
dHJpbmcmIGRpcmVjdG9yeSk7CiAgICAgU3RyaW5nIGRhdGFiYXNlRGlyZWN0b3J5KCkgY29uc3Qg
eyByZXR1cm4gbV9kYXRhYmFzZURpcmVjdG9yeTsgfTsKLSAgICBzdGF0aWMgU3RyaW5nIGZ1bGxE
YXRhYmFzZVBhdGhGb3JEaXJlY3RvcnkoY29uc3QgU3RyaW5nJik7Ci0gICAgc3RhdGljIHN0ZDo6
b3B0aW9uYWw8SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbj4gZGF0YWJhc2VOYW1lQW5kVmVyc2lv
bkZyb21GaWxlKGNvbnN0IFN0cmluZyYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJp
bmcgZnVsbERhdGFiYXNlUGF0aEZvckRpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIGVuY29kZURhdGFiYXNlTmFtZShjb25zdCBTdHJpbmcm
IGRhdGFiYXNlTmFtZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBkZWNvZGVE
YXRhYmFzZU5hbWUoY29uc3QgU3RyaW5nJiBlbmNvZGVkRGF0YWJhc2VOYW1lKTsKIAotICAgIFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbklEOyB9Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SURCRGF0YWJhc2VOYW1lQW5k
VmVyc2lvbj4gZGF0YWJhc2VOYW1lQW5kVmVyc2lvbkZyb21GaWxlKGNvbnN0IFN0cmluZyYpOwog
CiBwcml2YXRlOgotICAgIFN0cmluZyBmaWxlbmFtZUZvckRhdGFiYXNlTmFtZSgpIGNvbnN0Owot
ICAgIFN0cmluZyBmdWxsRGF0YWJhc2VEaXJlY3RvcnlXaXRoVXBncmFkZSgpOwotCiAgICAgSURC
RXJyb3IgZW5zdXJlVmFsaWRSZWNvcmRzVGFibGUoKTsKICAgICBJREJFcnJvciBlbnN1cmVWYWxp
ZEluZGV4UmVjb3Jkc1RhYmxlKCk7CiAgICAgSURCRXJyb3IgZW5zdXJlVmFsaWRJbmRleFJlY29y
ZHNJbmRleCgpOwpAQCAtMjA2LDcgKzIwMiw2IEBAIHByaXZhdGU6CiAKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8U1FMaXRlU3RhdGVtZW50PiBtX2NhY2hlZFN0YXRlbWVudHNbc3RhdGljX2Nhc3Q8aW50
PihTUUw6OkludmFsaWQpXTsKIAotICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOwogICAg
IElEQkRhdGFiYXNlSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PElEQkRhdGFiYXNlSW5mbz4gbV9kYXRhYmFzZUluZm87CiAgICAgc3RkOjp1bmlxdWVfcHRyPElE
QkRhdGFiYXNlSW5mbz4gbV9vcmlnaW5hbERhdGFiYXNlSW5mb0JlZm9yZVZlcnNpb25DaGFuZ2U7
CkBAIC0yMTYsNyArMjExLDYgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPElEQlJlc291cmNlSWRl
bnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFNRTGl0ZUlEQlRyYW5zYWN0aW9uPj4gbV90cmFuc2Fj
dGlvbnM7CiAgICAgSGFzaE1hcDxJREJSZXNvdXJjZUlkZW50aWZpZXIsIFNRTGl0ZUlEQkN1cnNv
cio+IG1fY3Vyc29yczsKIAotICAgIFN0cmluZyBtX2RhdGFiYXNlUm9vdERpcmVjdG9yeTsKICAg
ICBTdHJpbmcgbV9kYXRhYmFzZURpcmVjdG9yeTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2Uu
Y3BwCmluZGV4IDJiMWVhZGI5ZWE1YzQ2NGQwMjc1ZWQyMjNmNTAwM2I3YmVmMTU3MzMuLjJkZmJi
ZGIzMTk5MzFlMzc2ZjEyNTJlYTQyYzE0M2Q5ZmQ0Y2QxY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFi
YXNlLmNwcApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRl
ICJTdG9yYWdlUXVvdGFNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiVW5pcXVlSURCRGF0YWJhc2VDb25u
ZWN0aW9uLmgiCisjaW5jbHVkZSAiVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyLmgiCiAjaW5jbHVk
ZSA8d3RmL1Njb3BlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTEzNCw4ICsxMzUsOCBA
QCBzdGF0aWMgaW5saW5lIHVpbnQ2NF90IGVzdGltYXRlU2l6ZShjb25zdCBJREJPYmplY3RTdG9y
ZUluZm8mIGluZm8pCiAgICAgcmV0dXJuIHNpemU7CiB9CiAKLVVuaXF1ZUlEQkRhdGFiYXNlOjpV
bmlxdWVJREJEYXRhYmFzZShJREJTZXJ2ZXImIHNlcnZlciwgY29uc3QgSURCRGF0YWJhc2VJZGVu
dGlmaWVyJiBpZGVudGlmaWVyKQotICAgIDogbV9zZXJ2ZXIoc2VydmVyKQorVW5pcXVlSURCRGF0
YWJhc2U6OlVuaXF1ZUlEQkRhdGFiYXNlKFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlciYgbWFuYWdl
ciwgY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJiBpZGVudGlmaWVyKQorICAgIDogbV9tYW5h
Z2VyKG1hbmFnZXIpCiAgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKIHsKICAgICBBU1NF
UlQoIWlzTWFpblRocmVhZCgpKTsKQEAgLTE2Myw2ICsxNjQsMTEgQEAgY29uc3QgSURCRGF0YWJh
c2VJbmZvJiBVbmlxdWVJREJEYXRhYmFzZTo6aW5mbygpIGNvbnN0CiAgICAgcmV0dXJuICptX2Rh
dGFiYXNlSW5mbzsKIH0KIAorVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyKiBVbmlxdWVJREJEYXRh
YmFzZTo6bWFuYWdlcigpCit7CisgICAgcmV0dXJuIG1fbWFuYWdlci5nZXQoKTsKK30KKwogdm9p
ZCBVbmlxdWVJREJEYXRhYmFzZTo6b3BlbkRhdGFiYXNlQ29ubmVjdGlvbihJREJDb25uZWN0aW9u
VG9DbGllbnQmIGNvbm5lY3Rpb24sIGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkK
IHsKICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6Om9wZW5EYXRhYmFzZUNv
bm5lY3Rpb24iKTsKQEAgLTE4NSwxNyArMTkxLDQ1IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6
OnBlcmZvcm1DdXJyZW50T3Blbk9wZXJhdGlvbigpCiAgICAgQVNTRVJUKG1fY3VycmVudE9wZW5E
QlJlcXVlc3QpOwogICAgIEFTU0VSVChtX2N1cnJlbnRPcGVuREJSZXF1ZXN0LT5pc09wZW5SZXF1
ZXN0KCkpOwogCisgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBjcmVhdGUgdGhlIGZpbGUgc28gbm8g
bmVlZCB0byBkbyBzcGFjZSBjaGVjay4KKyAgICBpZiAobV9iYWNraW5nU3RvcmUpCisgICAgICAg
IHJldHVybiBwZXJmb3JtQ3VycmVudE9wZW5PcGVyYXRpb25BZnRlclNwYWNlQ2hlY2sodHJ1ZSk7
CisKKyAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAgICAgcmV0dXJuIHBlcmZvcm1DdXJyZW50T3Bl
bk9wZXJhdGlvbkFmdGVyU3BhY2VDaGVjayhmYWxzZSk7CisKKyAgICBhdXRvIHJlcXVlc3RJZGVu
dGlmaWVyID0gbV9jdXJyZW50T3BlbkRCUmVxdWVzdC0+cmVxdWVzdERhdGEoKS5yZXF1ZXN0SWRl
bnRpZmllcigpOworICAgIGlmIChtX29wZW5EQlJlcXVlc3RzRm9yU3BhY2VDaGVjay5jb250YWlu
cyhyZXF1ZXN0SWRlbnRpZmllcikpCisgICAgICAgIHJldHVybjsKKworICAgIG1fb3BlbkRCUmVx
dWVzdHNGb3JTcGFjZUNoZWNrLmFkZChyZXF1ZXN0SWRlbnRpZmllcik7CisgICAgbV9tYW5hZ2Vy
LT5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCBkZWZhdWx0V3JpdGVPcGVyYXRp
b25Db3N0LCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgcmVxdWVzdElkZW50
aWZpZXJdKGJvb2wgZ3JhbnRlZCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbV9vcGVuREJSZXF1ZXN0c0ZvclNwYWNlQ2hl
Y2sucmVtb3ZlKHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICAgICAgaWYgKG1fY3VycmVudE9wZW5E
QlJlcXVlc3QtPnJlcXVlc3REYXRhKCkucmVxdWVzdElkZW50aWZpZXIoKSAhPSByZXF1ZXN0SWRl
bnRpZmllcikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBwZXJmb3JtQ3VycmVudE9w
ZW5PcGVyYXRpb25BZnRlclNwYWNlQ2hlY2soZ3JhbnRlZCk7CisgICAgfSk7Cit9CisKK3ZvaWQg
VW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1DdXJyZW50T3Blbk9wZXJhdGlvbkFmdGVyU3BhY2VD
aGVjayhib29sIGlzR3JhbnRlZCkKK3sKKyAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0
YWJhc2U6OnBlcmZvcm1DdXJyZW50T3Blbk9wZXJhdGlvbkFmdGVyU3BhY2VSZXF1ZXN0ICglcCki
LCB0aGlzKTsKKwogICAgIElEQkVycm9yIGJhY2tpbmdTdG9yZU9wZW5FcnJvcjsKICAgICBpZiAo
IW1fYmFja2luZ1N0b3JlKSB7Ci0gICAgICAgIC8vIFF1b3RhIGNoZWNrLgotICAgICAgICBhdXRv
IGRlY2lzaW9uID0gbV9zZXJ2ZXIucmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwg
ZGVmYXVsdFdyaXRlT3BlcmF0aW9uQ29zdCk7Ci0gICAgICAgIGlmIChkZWNpc2lvbiA9PSBTdG9y
YWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbjo6RGVueSkKKyAgICAgICAgaWYgKCFtX21hbmFnZXIp
CisgICAgICAgICAgICBiYWNraW5nU3RvcmVPcGVuRXJyb3IgPSBJREJFcnJvciB7IEludmFsaWRT
dGF0ZUVycm9yIH07CisgICAgICAgIGVsc2UgaWYgKCFpc0dyYW50ZWQpCiAgICAgICAgICAgICBi
YWNraW5nU3RvcmVPcGVuRXJyb3IgPSBJREJFcnJvciB7IFF1b3RhRXhjZWVkZWRFcnJvciwgcXVv
dGFFcnJvck1lc3NhZ2VOYW1lKCJPcGVuQmFja2luZ1N0b3JlIikgfTsKICAgICAgICAgZWxzZSB7
Ci0gICAgICAgICAgICBtX2JhY2tpbmdTdG9yZSA9IG1fc2VydmVyLmNyZWF0ZUJhY2tpbmdTdG9y
ZShtX2lkZW50aWZpZXIpOworICAgICAgICAgICAgbV9iYWNraW5nU3RvcmUgPSBtX21hbmFnZXIt
PmNyZWF0ZUJhY2tpbmdTdG9yZShtX2lkZW50aWZpZXIpOwogICAgICAgICAgICAgSURCRGF0YWJh
c2VJbmZvIGRhdGFiYXNlSW5mbzsKICAgICAgICAgICAgIGJhY2tpbmdTdG9yZU9wZW5FcnJvciA9
IG1fYmFja2luZ1N0b3JlLT5nZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbyhkYXRhYmFzZUluZm8p
OwotICAgICAgICAgICAgaWYgKGJhY2tpbmdTdG9yZU9wZW5FcnJvci5pc051bGwoKSkKKyAgICAg
ICAgICAgIGlmICghYmFja2luZ1N0b3JlT3BlbkVycm9yKQogICAgICAgICAgICAgICAgIG1fZGF0
YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KGRhdGFiYXNlSW5mbyk7CiAg
ICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBn
ZXQgZGF0YWJhc2UgaW5mbyAnJXMnIiwgYmFja2luZ1N0b3JlT3BlbkVycm9yLm1lc3NhZ2UoKS51
dGY4KCkuZGF0YSgpKTsKQEAgLTIwNCw3ICsyMzgsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNl
OjpwZXJmb3JtQ3VycmVudE9wZW5PcGVyYXRpb24oKQogICAgICAgICB9CiAgICAgfQogCi0gICAg
aWYgKCFiYWNraW5nU3RvcmVPcGVuRXJyb3IuaXNOdWxsKCkpIHsKKyAgICBpZiAoYmFja2luZ1N0
b3JlT3BlbkVycm9yKSB7CiAgICAgICAgIGF1dG8gcmVzdWx0ID0gSURCUmVzdWx0RGF0YTo6ZXJy
b3IobV9jdXJyZW50T3BlbkRCUmVxdWVzdC0+cmVxdWVzdERhdGEoKS5yZXF1ZXN0SWRlbnRpZmll
cigpLCBiYWNraW5nU3RvcmVPcGVuRXJyb3IpOwogICAgICAgICBtX2N1cnJlbnRPcGVuREJSZXF1
ZXN0LT5jb25uZWN0aW9uKCkuZGlkT3BlbkRhdGFiYXNlKHJlc3VsdCk7CiAgICAgICAgIG1fY3Vy
cmVudE9wZW5EQlJlcXVlc3QgPSBudWxscHRyOwpAQCAtMjk0LDcgKzMyOCw3IEBAIHZvaWQgVW5p
cXVlSURCRGF0YWJhc2U6OmRlbGV0ZUJhY2tpbmdTdG9yZSgpCiAgICAgQVNTRVJUKCFpc01haW5U
aHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVC
YWNraW5nU3RvcmUiKTsKICAgICAKLSAgICBhdXRvIGJhY2tpbmdTdG9yZSA9IG1fYmFja2luZ1N0
b3JlID8gc3RkOjpleGNoYW5nZShtX2JhY2tpbmdTdG9yZSwgbnVsbHB0cikgOiBtX3NlcnZlci5j
cmVhdGVCYWNraW5nU3RvcmUobV9pZGVudGlmaWVyKTsKKyAgICBhdXRvIGJhY2tpbmdTdG9yZSA9
IG1fYmFja2luZ1N0b3JlID8gc3RkOjpleGNoYW5nZShtX2JhY2tpbmdTdG9yZSwgbnVsbHB0cikg
OiBtX21hbmFnZXItPmNyZWF0ZUJhY2tpbmdTdG9yZShtX2lkZW50aWZpZXIpOwogICAgIHVpbnQ2
NF90IGRlbGV0ZWRWZXJzaW9uID0gYmFja2luZ1N0b3JlLT5kYXRhYmFzZVZlcnNpb24oKTsKICAg
ICBiYWNraW5nU3RvcmUtPmRlbGV0ZUJhY2tpbmdTdG9yZSgpOwogICAgIGRpZERlbGV0ZUJhY2tp
bmdTdG9yZShkZWxldGVkVmVyc2lvbik7CkBAIC01NDIsMjAgKzU3NiwzMiBAQCB2b2lkIFVuaXF1
ZUlEQkRhdGFiYXNlOjphZGRPcGVuRGF0YWJhc2VDb25uZWN0aW9uKFJlZjxVbmlxdWVJREJEYXRh
YmFzZUNvbm5lY3RpbwogICAgIG1fb3BlbkRhdGFiYXNlQ29ubmVjdGlvbnMuYWRkKGFkb3B0UmVm
KGNvbm5lY3Rpb24ubGVha1JlZigpKSk7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNy
ZWF0ZU9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9u
LCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mIGluZm8sIEVycm9yQ2FsbGJhY2sgY2FsbGJhY2sp
Cit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZShVbmlxdWVJREJEYXRh
YmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiBp
bmZvLCBFcnJvckNhbGxiYWNrIGNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0IHNwYWNlQ2hlY2tS
ZXN1bHQpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWRE
QiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZSIpOwogCi0gICAgQVNTRVJU
KG1fYmFja2luZ1N0b3JlKTsKKyAgICBpZiAoIXNwYWNlQ2hlY2tSZXN1bHQpIHsKKyAgICAgICAg
aWYgKCFtX21hbmFnZXIpCisgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJ
bnZhbGlkU3RhdGVFcnJvciB9KTsKKworICAgICAgICBhdXRvIHRhc2tTaXplID0gZGVmYXVsdFdy
aXRlT3BlcmF0aW9uQ29zdCArIGVzdGltYXRlU2l6ZShpbmZvKTsKKyAgICAgICAgbV9tYW5hZ2Vy
LT5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCB0YXNrU2l6ZSwgW3RoaXMsIHdl
YWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHdlYWtUcmFuc2FjdGlvbiA9IFdlYWtQdHIgeyB0
cmFuc2FjdGlvbiB9LCBpbmZvLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIGdy
YW50ZWQpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhd2Vha1RyYW5z
YWN0aW9uKQorICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFs
aWRTdGF0ZUVycm9yLCAiRGF0YWJhc2Ugb3IgdHJhbnNhY3Rpb24gaXMgY2xvc2VkIiB9KTsKKyAg
ICAgICAgICAgIGNyZWF0ZU9iamVjdFN0b3JlKCp3ZWFrVHJhbnNhY3Rpb24sIGluZm8sIFdURk1v
dmUoY2FsbGJhY2spLCBncmFudGVkKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CiAKLSAgICAvLyBRdW90YSBjaGVjay4KLSAgICBhdXRvIHRhc2tTaXplID0gZGVmYXVsdFdy
aXRlT3BlcmF0aW9uQ29zdCArIGVzdGltYXRlU2l6ZShpbmZvKTsKLSAgICBpZiAobV9zZXJ2ZXIu
cmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwgdGFza1NpemUpID09IFN0b3JhZ2VR
dW90YU1hbmFnZXI6OkRlY2lzaW9uOjpEZW55KSB7CisgICAgaWYgKCFzcGFjZUNoZWNrUmVzdWx0
LnZhbHVlKCkpIHsKICAgICAgICAgY2FsbGJhY2soSURCRXJyb3IgeyBRdW90YUV4Y2VlZGVkRXJy
b3IsIHF1b3RhRXJyb3JNZXNzYWdlTmFtZSgiQ3JlYXRlT2JqZWN0U3RvcmUiKSB9KTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAorICAgIGlmICghbV9iYWNraW5nU3RvcmUpCisgICAgICAgIHJl
dHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiQmFja2luZyBzdG9y
ZSBoYXMgY2xvc2VkIiB9KTsKKwogICAgIGF1dG8gZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+Y3Jl
YXRlT2JqZWN0U3RvcmUodHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSwgaW5mbyk7CiAg
ICAgaWYgKGVycm9yLmlzTnVsbCgpKQogICAgICAgICBtX2RhdGFiYXNlSW5mby0+YWRkRXhpc3Rp
bmdPYmplY3RTdG9yZShpbmZvKTsKQEAgLTU2MywxOCArNjA5LDM0IEBAIHZvaWQgVW5pcXVlSURC
RGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24m
IHRyYW5zYWN0CiAgICAgY2FsbGJhY2soZXJyb3IpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFi
YXNlOjpkZWxldGVPYmplY3RTdG9yZShVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFu
c2FjdGlvbiwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUsIEVycm9yQ2FsbGJhY2sgY2Fs
bGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVPYmplY3RTdG9yZShVbmlxdWVJ
REJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgY29uc3QgU3RyaW5nJiBvYmplY3RT
dG9yZU5hbWUsIEVycm9yQ2FsbGJhY2sgY2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgc3BhY2VD
aGVja1Jlc3VsdCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5k
ZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZU9iamVjdFN0b3JlIik7CiAKKyAgICBp
ZiAoIXNwYWNlQ2hlY2tSZXN1bHQpIHsKKyAgICAgICAgaWYgKCFtX21hbmFnZXIpCisgICAgICAg
ICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciB9KTsKKwor
ICAgICAgICBtX21hbmFnZXItPnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIDAs
IFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCB3ZWFrVHJhbnNhY3Rpb24gPSBX
ZWFrUHRyIHsgdHJhbnNhY3Rpb24gfSwgb2JqZWN0U3RvcmVOYW1lLCBjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spXShib29sIGdyYW50ZWQpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCF3
ZWFrVGhpcyB8fCAhd2Vha1RyYW5zYWN0aW9uKQorICAgICAgICAgICAgICAgIHJldHVybiBjYWxs
YmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiRGF0YWJhc2Ugb3IgdHJhbnNhY3Rp
b24gaXMgY2xvc2VkIiB9KTsKKworICAgICAgICAgICAgZGVsZXRlT2JqZWN0U3RvcmUoKndlYWtU
cmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVOYW1lLCBXVEZNb3ZlKGNhbGxiYWNrKSwgZ3JhbnRlZCk7
CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKHNwYWNl
Q2hlY2tSZXN1bHQudmFsdWUoKSk7CiAgICAgYXV0byogaW5mbyA9IG1fZGF0YWJhc2VJbmZvLT5p
bmZvRm9yRXhpc3RpbmdPYmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUpOwogICAgIGlmICghaW5m
bykgewogICAgICAgICBjYWxsYmFjayhJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQg
dG8gZGVsZXRlIG5vbi1leGlzdGFudCBvYmplY3Qgc3RvcmUiX3MgfSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBBU1NFUlQobV9iYWNraW5nU3RvcmUpOworICAgIGlmICghbV9iYWNr
aW5nU3RvcmUpCisgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0
ZUVycm9yLCAiQmFja2luZyBzdG9yZSBpcyBjbG9zZWQiIH0pOworCiAgICAgYXV0byBlcnJvciA9
IG1fYmFja2luZ1N0b3JlLT5kZWxldGVPYmplY3RTdG9yZSh0cmFuc2FjdGlvbi5pbmZvKCkuaWRl
bnRpZmllcigpLCBpbmZvLT5pZGVudGlmaWVyKCkpOwogICAgIGlmIChlcnJvci5pc051bGwoKSkK
ICAgICAgICAgbV9kYXRhYmFzZUluZm8tPmRlbGV0ZU9iamVjdFN0b3JlKGluZm8tPmlkZW50aWZp
ZXIoKSk7CkBAIC01ODIsMTQgKzY0NCwyNiBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxl
dGVPYmplY3RTdG9yZShVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdAogICAg
IGNhbGxiYWNrKGVycm9yKTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cmVuYW1lT2Jq
ZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIHVpbnQ2
NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lLCBFcnJvckNh
bGxiYWNrIGNhbGxiYWNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cmVuYW1lT2JqZWN0U3Rv
cmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIHVpbnQ2NF90IG9i
amVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lLCBFcnJvckNhbGxiYWNr
IGNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0IHNwYWNlQ2hlY2tSZXN1bHQpCiB7CiAgICAgQVNT
RVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFi
YXNlOjpyZW5hbWVPYmplY3RTdG9yZSIpOwogCi0gICAgLy8gUXVvdGEgY2hlY2suCi0gICAgYXV0
byB0YXNrU2l6ZSA9IGRlZmF1bHRXcml0ZU9wZXJhdGlvbkNvc3QgKyBuZXdOYW1lLnNpemVJbkJ5
dGVzKCk7Ci0gICAgaWYgKG1fc2VydmVyLnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2lu
KCksIHRhc2tTaXplKSA9PSBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbjo6RGVueSkgewor
ICAgIGlmICghc3BhY2VDaGVja1Jlc3VsdCkgeworICAgICAgICBpZiAoIW1fbWFuYWdlcikKKyAg
ICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yIH0p
OworCisgICAgICAgIGF1dG8gdGFza1NpemUgPSBkZWZhdWx0V3JpdGVPcGVyYXRpb25Db3N0ICsg
bmV3TmFtZS5zaXplSW5CeXRlcygpOworICAgICAgICBtX21hbmFnZXItPnJlcXVlc3RTcGFjZSht
X2lkZW50aWZpZXIub3JpZ2luKCksIHRhc2tTaXplLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRy
IHsgKnRoaXMgfSwgd2Vha1RyYW5zYWN0aW9uID0gV2Vha1B0ciB7IHRyYW5zYWN0aW9uIH0sIG9i
amVjdFN0b3JlSWRlbnRpZmllciwgbmV3TmFtZSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KV0oYm9vbCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMgfHwg
IXdlYWtUcmFuc2FjdGlvbikKKyAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJy
b3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkRhdGFiYXNlIG9yIHRyYW5zYWN0aW9uIGlzIGNsb3Nl
ZCIgfSk7CisKKyAgICAgICAgICAgIHJlbmFtZU9iamVjdFN0b3JlKCp3ZWFrVHJhbnNhY3Rpb24s
IG9iamVjdFN0b3JlSWRlbnRpZmllciwgbmV3TmFtZSwgV1RGTW92ZShjYWxsYmFjayksIGdyYW50
ZWQpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghc3Bh
Y2VDaGVja1Jlc3VsdC52YWx1ZSgpKSB7CiAgICAgICAgIGNhbGxiYWNrKElEQkVycm9yKFF1b3Rh
RXhjZWVkZWRFcnJvciwgcXVvdGFFcnJvck1lc3NhZ2VOYW1lKCJSZW5hbWVPYmplY3RTdG9yZSIp
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC02MDAsNyArNjc0LDkgQEAgdm9pZCBVbmlx
dWVJREJEYXRhYmFzZTo6cmVuYW1lT2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2Fj
dGlvbiYgdHJhbnNhY3QKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VSVChtX2Jh
Y2tpbmdTdG9yZSk7CisgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkKKyAgICAgICAgcmV0dXJuIGNh
bGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJCYWNraW5nIHN0b3JlIGlzIGNs
b3NlZCIgfSk7CisKICAgICBhdXRvIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPnJlbmFtZU9iamVj
dFN0b3JlKHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCksIG9iamVjdFN0b3JlSWRlbnRp
ZmllciwgbmV3TmFtZSk7CiAgICAgaWYgKGVycm9yLmlzTnVsbCgpKQogICAgICAgICBtX2RhdGFi
YXNlSW5mby0+cmVuYW1lT2JqZWN0U3RvcmUob2JqZWN0U3RvcmVJZGVudGlmaWVyLCBuZXdOYW1l
KTsKQEAgLTYwOCwzMCArNjg0LDU5IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnJlbmFtZU9i
amVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0CiAgICAgY2Fs
bGJhY2soZXJyb3IpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjbGVhck9iamVjdFN0
b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCB1aW50NjRfdCBv
YmplY3RTdG9yZUlkZW50aWZpZXIsIEVycm9yQ2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIFVuaXF1
ZUlEQkRhdGFiYXNlOjpjbGVhck9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rp
b24mIHRyYW5zYWN0aW9uLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIEVycm9yQ2Fs
bGJhY2sgY2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgc3BhY2VDaGVja1Jlc3VsdCkKIHsKICAg
ICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURC
RGF0YWJhc2U6OmNsZWFyT2JqZWN0U3RvcmUiKTsKIAotICAgIEFTU0VSVChtX2JhY2tpbmdTdG9y
ZSk7Ci0gICAgYXV0byBlcnJvciA9IG1fYmFja2luZ1N0b3JlLT5jbGVhck9iamVjdFN0b3JlKHRy
YW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCksIG9iamVjdFN0b3JlSWRlbnRpZmllcik7Cisg
ICAgaWYgKCFzcGFjZUNoZWNrUmVzdWx0KSB7CisgICAgICAgIGlmICghbV9tYW5hZ2VyKQorICAg
ICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7
CisKKyAgICAgICAgbV9tYW5hZ2VyLT5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigp
LCAwLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgd2Vha1RyYW5zYWN0aW9u
ID0gV2Vha1B0ciB7IHRyYW5zYWN0aW9uIH0sIG9iamVjdFN0b3JlSWRlbnRpZmllciwgY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAg
ICAgIGlmICghd2Vha1RoaXMgfHwgIXdlYWtUcmFuc2FjdGlvbikKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkRhdGFiYXNlIG9y
IHRyYW5zYWN0aW9uIGlzIGNsb3NlZCIgfSk7CisKKyAgICAgICAgICAgIGNsZWFyT2JqZWN0U3Rv
cmUoKndlYWtUcmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBXVEZNb3ZlKGNhbGxi
YWNrKSwgZ3JhbnRlZCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgQVNTRVJUKHNwYWNlQ2hlY2tSZXN1bHQudmFsdWUoKSk7CisgICAgaWYgKCFtX2JhY2tpbmdT
dG9yZSkKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJy
b3IsICJCYWNraW5nIHN0b3JlIGlzIGNsb3NlZCIgfSk7CiAKKyAgICBhdXRvIGVycm9yID0gbV9i
YWNraW5nU3RvcmUtPmNsZWFyT2JqZWN0U3RvcmUodHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZp
ZXIoKSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKICAgICBjYWxsYmFjayhlcnJvcik7CiB9CiAK
LXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZUluZGV4KFVuaXF1ZUlEQkRhdGFiYXNlVHJh
bnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBjb25zdCBJREJJbmRleEluZm8mIGluZm8sIEVycm9yQ2Fs
bGJhY2sgY2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVJbmRleChVbmlx
dWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgY29uc3QgSURCSW5kZXhJbmZv
JiBpbmZvLCBFcnJvckNhbGxiYWNrIGNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0IHNwYWNlQ2hl
Y2tSZXN1bHQpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4
ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVJbmRleCIpOwogCi0gICAgLy8gUXVvdGEg
Y2hlY2suCi0gICAgYXV0byB0YXNrU2l6ZSA9IGRlZmF1bHRXcml0ZU9wZXJhdGlvbkNvc3QgKyBl
c3RpbWF0ZVNpemUoaW5mbyk7Ci0gICAgaWYgKG1fc2VydmVyLnJlcXVlc3RTcGFjZShtX2lkZW50
aWZpZXIub3JpZ2luKCksIHRhc2tTaXplKSA9PSBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lv
bjo6RGVueSkgeworICAgIGlmICghc3BhY2VDaGVja1Jlc3VsdCkgeworICAgICAgICBpZiAoIW1f
bWFuYWdlcikKKyAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRT
dGF0ZUVycm9yIH0pOworCisgICAgICAgIGF1dG8gdGFza1NpemUgPSBkZWZhdWx0V3JpdGVPcGVy
YXRpb25Db3N0ICsgZXN0aW1hdGVTaXplKGluZm8pOworICAgICAgICBtX21hbmFnZXItPnJlcXVl
c3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIHRhc2tTaXplLCBbdGhpcywgd2Vha1RoaXMg
PSBXZWFrUHRyIHsgKnRoaXMgfSwgd2Vha1RyYW5zYWN0aW9uID0gV2Vha1B0ciB7IHRyYW5zYWN0
aW9uIH0sIGluZm8sIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgZ3JhbnRlZCkg
bXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICF3ZWFrVHJhbnNhY3Rpb24p
CisgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRl
RXJyb3IsICJEYXRhYmFzZSBvciB0cmFuc2FjdGlvbiBpcyBjbG9zZWQiIH0pOworCisgICAgICAg
ICAgICBjcmVhdGVJbmRleCgqd2Vha1RyYW5zYWN0aW9uLCBpbmZvLCBXVEZNb3ZlKGNhbGxiYWNr
KSwgZ3JhbnRlZCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
aWYgKCFzcGFjZUNoZWNrUmVzdWx0LnZhbHVlKCkpIHsKICAgICAgICAgY2FsbGJhY2soSURCRXJy
b3IgeyBRdW90YUV4Y2VlZGVkRXJyb3IsIHF1b3RhRXJyb3JNZXNzYWdlTmFtZSgiQ3JlYXRlSW5k
ZXgiKSB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VSVChtX2JhY2tpbmdT
dG9yZSk7CisgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNr
KElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJCYWNraW5nIHN0b3JlIGlzIGNsb3NlZCIg
fSk7CisKICAgICBhdXRvIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPmNyZWF0ZUluZGV4KHRyYW5z
YWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCksIGluZm8pOwogICAgIGlmIChlcnJvci5pc051bGwo
KSkgewogICAgICAgICBBU1NFUlQobV9kYXRhYmFzZUluZm8pOwpAQCAtNjQ0LDExICs3NDksMjgg
QEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlSW5kZXgoVW5pcXVlSURCRGF0YWJhc2VU
cmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIGMKICAgICBjYWxsYmFjayhlcnJvcik7CiB9CiAKLXZv
aWQgVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZUluZGV4KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNh
Y3Rpb24mIHRyYW5zYWN0aW9uLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgaW5kZXhOYW1lLCBFcnJvckNhbGxiYWNrIGNhbGxiYWNrKQordm9pZCBVbmlxdWVJ
REJEYXRhYmFzZTo6ZGVsZXRlSW5kZXgoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJh
bnNhY3Rpb24sIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBp
bmRleE5hbWUsIEVycm9yQ2FsbGJhY2sgY2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgc3BhY2VD
aGVja1Jlc3VsdCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5k
ZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZUluZGV4Iik7CiAKKyAgICBpZiAoIXNw
YWNlQ2hlY2tSZXN1bHQpIHsKKyAgICAgICAgaWYgKCFtX21hbmFnZXIpCisgICAgICAgICAgICBy
ZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciB9KTsKKworICAgICAg
ICBtX21hbmFnZXItPnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIDAsIFt0aGlz
LCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCB3ZWFrVHJhbnNhY3Rpb24gPSBXZWFrUHRy
IHsgdHJhbnNhY3Rpb24gfSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleE5hbWUsIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgZ3JhbnRlZCkgbXV0YWJsZSB7CisgICAgICAg
ICAgICBpZiAoIXdlYWtUaGlzIHx8ICF3ZWFrVHJhbnNhY3Rpb24pCisgICAgICAgICAgICAgICAg
cmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJEYXRhYmFzZSBv
ciB0cmFuc2FjdGlvbiBpcyBjbG9zZWQiIH0pOworCisgICAgICAgICAgICBkZWxldGVJbmRleCgq
d2Vha1RyYW5zYWN0aW9uLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4TmFtZSwgV1RGTW92
ZShjYWxsYmFjayksIGdyYW50ZWQpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIEFTU0VSVChzcGFjZUNoZWNrUmVzdWx0LnZhbHVlKCkpOworICAgIGlmICghbV9i
YWNraW5nU3RvcmUpCisgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRT
dGF0ZUVycm9yLCAiQmFja2luZyBzdG9yZSBpcyBjbG9zZWQiIH0pOworCiAgICAgYXV0byogb2Jq
ZWN0U3RvcmVJbmZvID0gbV9kYXRhYmFzZUluZm8tPmluZm9Gb3JFeGlzdGluZ09iamVjdFN0b3Jl
KG9iamVjdFN0b3JlSWRlbnRpZmllcik7CiAgICAgaWYgKCFvYmplY3RTdG9yZUluZm8pIHsKICAg
ICAgICAgY2FsbGJhY2soSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIGRlbGV0
ZSBpbmRleCBmcm9tIG5vbi1leGlzdGFudCBvYmplY3Qgc3RvcmUiX3MgfSk7CkBAIC02NjAsOSAr
NzgyLDggQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlSW5kZXgoVW5pcXVlSURCRGF0
YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIHUKICAgICAgICAgY2FsbGJhY2soSURCRXJy
b3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIGRlbGV0ZSBub24tZXhpc3RhbnQgaW5kZXgi
X3MgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byBpbmRleElkZW50aWZpZXIg
PSBpbmRleEluZm8tPmlkZW50aWZpZXIoKTsKIAotICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7
CisgICAgYXV0byBpbmRleElkZW50aWZpZXIgPSBpbmRleEluZm8tPmlkZW50aWZpZXIoKTsKICAg
ICBhdXRvIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPmRlbGV0ZUluZGV4KHRyYW5zYWN0aW9uLmlu
Zm8oKS5pZGVudGlmaWVyKCksIG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhJZGVudGlmaWVy
KTsKICAgICBpZiAoZXJyb3IuaXNOdWxsKCkpCiAgICAgICAgIG9iamVjdFN0b3JlSW5mby0+ZGVs
ZXRlSW5kZXgoaW5kZXhJZGVudGlmaWVyKTsKQEAgLTY3MCwxOCArNzkxLDMzIEBAIHZvaWQgVW5p
cXVlSURCRGF0YWJhc2U6OmRlbGV0ZUluZGV4KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24m
IHRyYW5zYWN0aW9uLCB1CiAgICAgY2FsbGJhY2soZXJyb3IpOwogfQogCi12b2lkIFVuaXF1ZUlE
QkRhdGFiYXNlOjpyZW5hbWVJbmRleChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFu
c2FjdGlvbiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRleElk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSwgRXJyb3JDYWxsYmFjayBjYWxsYmFjaykK
K3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnJlbmFtZUluZGV4KFVuaXF1ZUlEQkRhdGFiYXNlVHJh
bnNhY3Rpb24mIHRyYW5zYWN0aW9uLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVp
bnQ2NF90IGluZGV4SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lLCBFcnJvckNhbGxi
YWNrIGNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0IHNwYWNlQ2hlY2tSZXN1bHQpCiB7CiAgICAg
QVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRh
dGFiYXNlOjpyZW5hbWVJbmRleCIpOwogCi0gICAgLy8gUXVvdGEgY2hlY2suCi0gICAgYXV0byB0
YXNrU2l6ZSA9IGRlZmF1bHRXcml0ZU9wZXJhdGlvbkNvc3QgKyBuZXdOYW1lLnNpemVJbkJ5dGVz
KCk7Ci0gICAgaWYgKG1fc2VydmVyLnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCks
IHRhc2tTaXplKSA9PSBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbjo6RGVueSkgeworICAg
IGlmICghc3BhY2VDaGVja1Jlc3VsdCkgeworICAgICAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAg
ICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yIH0pOwor
CisgICAgICAgIGF1dG8gdGFza1NpemUgPSBkZWZhdWx0V3JpdGVPcGVyYXRpb25Db3N0ICsgbmV3
TmFtZS5zaXplSW5CeXRlcygpOworICAgICAgICBtX21hbmFnZXItPnJlcXVlc3RTcGFjZShtX2lk
ZW50aWZpZXIub3JpZ2luKCksIHRhc2tTaXplLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsg
KnRoaXMgfSwgd2Vha1RyYW5zYWN0aW9uID0gV2Vha1B0ciB7IHRyYW5zYWN0aW9uIH0sIG9iamVj
dFN0b3JlSWRlbnRpZmllciwgaW5kZXhJZGVudGlmaWVyLCBuZXdOYW1lLCBjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spXShib29sIGdyYW50ZWQpIG11dGFibGUgeworICAgICAgICAgICAgaWYg
KCF3ZWFrVGhpcyB8fCAhd2Vha1RyYW5zYWN0aW9uKQorICAgICAgICAgICAgICAgIHJldHVybiBj
YWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiRGF0YWJhc2Ugb3IgdHJhbnNh
Y3Rpb24gaXMgY2xvc2VkIiB9KTsKKworICAgICAgICAgICAgcmVuYW1lSW5kZXgoKndlYWtUcmFu
c2FjdGlvbiwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleElkZW50aWZpZXIsIG5ld05hbWUs
IFdURk1vdmUoY2FsbGJhY2spLCBncmFudGVkKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBpZiAoIXNwYWNlQ2hlY2tSZXN1bHQudmFsdWUoKSkgewogICAgICAg
ICBjYWxsYmFjayhJREJFcnJvciB7IFF1b3RhRXhjZWVkZWRFcnJvciwgcXVvdGFFcnJvck1lc3Nh
Z2VOYW1lKCJSZW5hbWVJbmRleCIpIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAg
aWYgKCFtX2JhY2tpbmdTdG9yZSkKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsg
SW52YWxpZFN0YXRlRXJyb3IsICJCYWNraW5nIHN0b3JlIGlzIGNsb3NlZCIgfSk7CisKICAgICBh
dXRvKiBvYmplY3RTdG9yZUluZm8gPSBtX2RhdGFiYXNlSW5mby0+aW5mb0ZvckV4aXN0aW5nT2Jq
ZWN0U3RvcmUob2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKICAgICBpZiAoIW9iamVjdFN0b3JlSW5m
bykgewogICAgICAgICBjYWxsYmFjayhJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQg
dG8gcmVuYW1lIGluZGV4IGluIG5vbi1leGlzdGFudCBvYmplY3Qgc3RvcmUiX3MgfSk7CkBAIC02
OTQsNyArODMwLDYgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cmVuYW1lSW5kZXgoVW5pcXVl
SURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIHUKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CiAgICAgYXV0byBlcnJvciA9IG1f
YmFja2luZ1N0b3JlLT5yZW5hbWVJbmRleCh0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigp
LCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4SWRlbnRpZmllciwgbmV3TmFtZSk7CiAgICAg
aWYgKGVycm9yLmlzTnVsbCgpKQogICAgICAgICBpbmRleEluZm8tPnJlbmFtZShuZXdOYW1lKTsK
QEAgLTcwOSwxNyArODQ0LDE5IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnB1dE9yQWRkKGNv
bnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5CiAKICAgICBBU1NF
UlQobV9kYXRhYmFzZUluZm8pOwogCi0gICAgSURCS2V5RGF0YSB1c2VkS2V5OwotICAgIElEQkVy
cm9yIGVycm9yOworICAgIGlmICghbV9iYWNraW5nU3RvcmUpCisgICAgICAgIHJldHVybiBjYWxs
YmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiQmFja2luZyBzdG9yZSBpcyBjbG9z
ZWQiIH0sIGtleURhdGEpOwogCi0gICAgQVNTRVJUKG1fYmFja2luZ1N0b3JlKTsKICAgICBhdXRv
IG9iamVjdFN0b3JlSWRlbnRpZmllciA9IHJlcXVlc3REYXRhLm9iamVjdFN0b3JlSWRlbnRpZmll
cigpOwogICAgIGF1dG8qIG9iamVjdFN0b3JlSW5mbyA9IG1fYmFja2luZ1N0b3JlLT5pbmZvRm9y
T2JqZWN0U3RvcmUob2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKLSAgICBpZiAoIW9iamVjdFN0b3Jl
SW5mbykgewotICAgICAgICBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAi
T2JqZWN0IHN0b3JlIGNhbm5vdCBiZSBmb3VuZCBpbiB0aGUgYmFja2luZyBzdG9yZSJfcyB9LCB1
c2VkS2V5KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoIW9iamVjdFN0b3JlSW5m
bykKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3Is
ICJPYmplY3Qgc3RvcmUgY2Fubm90IGJlIGZvdW5kIGluIHRoZSBiYWNraW5nIHN0b3JlIl9zIH0s
IGtleURhdGEpOworCisgICAgaWYgKCFtX21hbmFnZXIpCisgICAgICAgIHJldHVybiBjYWxsYmFj
ayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yIH0sIGtleURhdGEpOwogCisgICAgSURCS2V5
RGF0YSB1c2VkS2V5OworICAgIElEQkVycm9yIGVycm9yOwogICAgIGJvb2wgdXNlZEtleUlzR2Vu
ZXJhdGVkID0gZmFsc2U7CiAgICAgdWludDY0X3Qga2V5TnVtYmVyOwogICAgIGF1dG8gdHJhbnNh
Y3Rpb25JZGVudGlmaWVyID0gcmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCk7CkBA
IC03MzAsNzYgKzg2NywxMDUgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cHV0T3JBZGQoY29u
c3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXkKIAogICAgIGlmIChv
YmplY3RTdG9yZUluZm8tPmF1dG9JbmNyZW1lbnQoKSAmJiAha2V5RGF0YS5pc1ZhbGlkKCkpIHsK
ICAgICAgICAgZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+Z2VuZXJhdGVLZXlOdW1iZXIodHJhbnNh
Y3Rpb25JZGVudGlmaWVyLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGtleU51bWJlcik7Ci0gICAg
ICAgIGlmICghZXJyb3IuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKGVycm9yLCB1
c2VkS2V5KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQorICAgICAgICBpZiAoIWVy
cm9yLmlzTnVsbCgpKQorICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGVycm9yLCB1c2VkS2V5
KTsKKwogICAgICAgICB1c2VkS2V5LnNldE51bWJlclZhbHVlKGtleU51bWJlcik7CiAgICAgICAg
IHVzZWRLZXlJc0dlbmVyYXRlZCA9IHRydWU7CiAgICAgfSBlbHNlCiAgICAgICAgIHVzZWRLZXkg
PSBrZXlEYXRhOwogCi0gICAgLy8gR2VuZXJhdGUgaW5kZXgga2V5cyB1cCBmcm9udCBmb3IgbW9y
ZSBhY2N1cmF0ZSBxdW90YSBjaGVjay4KLSAgICBJbmRleElEVG9JbmRleEtleU1hcCBpbmRleEtl
eXM7Ci0gICAgY2FsbE9uSURCU2VyaWFsaXphdGlvblRocmVhZEFuZFdhaXQoW29iamVjdFN0b3Jl
SW5mbyA9IG9iamVjdFN0b3JlSW5mby0+aXNvbGF0ZWRDb3B5KCksIGtleSA9IHVzZWRLZXkuaXNv
bGF0ZWRDb3B5KCksIHZhbHVlID0gdmFsdWUuaXNvbGF0ZWRDb3B5KCksICZpbmRleEtleXNdKGF1
dG8mIGdsb2JhbE9iamVjdCkgewotICAgICAgICBpbmRleEtleXMgPSBnZW5lcmF0ZUluZGV4S2V5
TWFwRm9yVmFsdWUoZ2xvYmFsT2JqZWN0LCBvYmplY3RTdG9yZUluZm8sIGtleSwgdmFsdWUpOwot
ICAgIH0pOwotCiAgICAgaWYgKG92ZXJ3cml0ZU1vZGUgPT0gSW5kZXhlZERCOjpPYmplY3RTdG9y
ZU92ZXJ3cml0ZU1vZGU6Ok5vT3ZlcndyaXRlKSB7CiAgICAgICAgIGJvb2wga2V5RXhpc3RzOwog
ICAgICAgICBlcnJvciA9IG1fYmFja2luZ1N0b3JlLT5rZXlFeGlzdHNJbk9iamVjdFN0b3JlKHRy
YW5zYWN0aW9uSWRlbnRpZmllciwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1c2VkS2V5LCBrZXlF
eGlzdHMpOwotICAgICAgICBpZiAoZXJyb3IuaXNOdWxsKCkgJiYga2V5RXhpc3RzKQorICAgICAg
ICBpZiAoIWVycm9yICYmIGtleUV4aXN0cykKICAgICAgICAgICAgIGVycm9yID0gSURCRXJyb3Ig
eyBDb25zdHJhaW50RXJyb3IsICJLZXkgYWxyZWFkeSBleGlzdHMgaW4gdGhlIG9iamVjdCBzdG9y
ZSJfcyB9OwogCi0gICAgICAgIGlmICghZXJyb3IuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgIGNh
bGxiYWNrKGVycm9yLCB1c2VkS2V5KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQor
ICAgICAgICBpZiAoISFlcnJvcikKKyAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhlcnJvciwg
dXNlZEtleSk7CiAgICAgfQogCi0gICAgLy8gUXVvdGEgY2hlY2suCisgICAgLy8gR2VuZXJhdGUg
aW5kZXgga2V5cyB1cCBmcm9udCBmb3IgbW9yZSBhY2N1cmF0ZSBxdW90YSBjaGVjay4KKyAgICBJ
bmRleElEVG9JbmRleEtleU1hcCBpbmRleEtleXM7CisgICAgY2FsbE9uSURCU2VyaWFsaXphdGlv
blRocmVhZEFuZFdhaXQoW29iamVjdFN0b3JlSW5mbyA9IG9iamVjdFN0b3JlSW5mby0+aXNvbGF0
ZWRDb3B5KCksIGtleSA9IHVzZWRLZXkuaXNvbGF0ZWRDb3B5KCksIHZhbHVlID0gdmFsdWUuaXNv
bGF0ZWRDb3B5KCksICZpbmRleEtleXNdKGF1dG8mIGdsb2JhbE9iamVjdCkgeworICAgICAgICBp
bmRleEtleXMgPSBnZW5lcmF0ZUluZGV4S2V5TWFwRm9yVmFsdWUoZ2xvYmFsT2JqZWN0LCBvYmpl
Y3RTdG9yZUluZm8sIGtleSwgdmFsdWUpOworICAgIH0pOworCisgICAgZ2VuZXJhdGVkS2V5UmVz
ZXR0ZXIucmVsZWFzZSgpOwogICAgIGF1dG8ga2V5U2l6ZSA9IGVzdGltYXRlU2l6ZSh1c2VkS2V5
KTsKICAgICBhdXRvIHZhbHVlU2l6ZSA9IGVzdGltYXRlU2l6ZSh2YWx1ZSk7CiAgICAgYXV0byBp
bmRleFNpemUgPSBlc3RpbWF0ZVNpemUoKm9iamVjdFN0b3JlSW5mbywgaW5kZXhLZXlzLCBrZXlT
aXplKTsKICAgICBhdXRvIHRhc2tTaXplID0gZGVmYXVsdFdyaXRlT3BlcmF0aW9uQ29zdCArIGtl
eVNpemUgKyB2YWx1ZVNpemUgKyBpbmRleFNpemU7CiAKICAgICBMT0coSW5kZXhlZERCLCAiVW5p
cXVlSURCRGF0YWJhc2U6OnB1dE9yQWRkIHF1b3RhIGNoZWNrIHdpdGggdGFzayBzaXplOiAlIiBQ
Ukl1NjQgIiBrZXkgc2l6ZTogJSIgUFJJdTY0ICIgdmFsdWUgc2l6ZTogJSIgUFJJdTY0ICIgaW5k
ZXggc2l6ZTogJSIgUFJJdTY0LCB0YXNrU2l6ZSwga2V5U2l6ZSwgdmFsdWVTaXplLCBpbmRleFNp
emUpOworICAgIG1fbWFuYWdlci0+cmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwg
dGFza1NpemUsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCByZXF1ZXN0RGF0
YSwgdXNlZEtleSwgdmFsdWUsIG92ZXJ3cml0ZU1vZGUsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayksIHVzZWRLZXlJc0dlbmVyYXRlZCwgaW5kZXhLZXlzLCBvYmplY3RTdG9yZUluZm8gPSAq
b2JqZWN0U3RvcmVJbmZvXShib29sIGdyYW50ZWQpIG11dGFibGUgeworICAgICAgICBpZiAoIXdl
YWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0
YXRlRXJyb3IsICJEYXRhYmFzZSBpcyBjbG9zZWQiIH0sIHVzZWRLZXkpOwogCi0gICAgaWYgKG1f
c2VydmVyLnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIHRhc2tTaXplKSA9PSBT
dG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbjo6RGVueSkgewotICAgICAgICBjYWxsYmFjayhJ
REJFcnJvciB7IFF1b3RhRXhjZWVkZWRFcnJvciwgcXVvdGFFcnJvck1lc3NhZ2VOYW1lKCJQdXRP
ckFkZCIpIH0sIHVzZWRLZXkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgICAgICBwdXRP
ckFkZEFmdGVyU3BhY2VDaGVjayhyZXF1ZXN0RGF0YSwgdXNlZEtleSwgdmFsdWUsIG92ZXJ3cml0
ZU1vZGUsIFdURk1vdmUoY2FsbGJhY2spLCB1c2VkS2V5SXNHZW5lcmF0ZWQsIGluZGV4S2V5cywg
b2JqZWN0U3RvcmVJbmZvLCBncmFudGVkKTsKKyAgICB9KTsKK30KKwordm9pZCBVbmlxdWVJREJE
YXRhYmFzZTo6cHV0T3JBZGRBZnRlclNwYWNlQ2hlY2soY29uc3QgSURCUmVxdWVzdERhdGEmIHJl
cXVlc3REYXRhLCBjb25zdCBJREJLZXlEYXRhJiBrZXlEYXRhLCBjb25zdCBJREJWYWx1ZSYgdmFs
dWUsIEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlIG92ZXJ3cml0ZU1vZGUsIEtl
eURhdGFDYWxsYmFjayBjYWxsYmFjaywgYm9vbCBpc0tleUdlbmVyYXRlZCwgY29uc3QgSW5kZXhJ
RFRvSW5kZXhLZXlNYXAmIGluZGV4S2V5cywgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiBvYmpl
Y3RTdG9yZUluZm8sIFNwYWNlQ2hlY2tSZXN1bHQgc3BhY2VDaGVja1Jlc3VsdCkKK3sKKyAgICBB
U1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9kYXRhYmFzZUluZm8pOworCisg
ICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9y
IHsgSW52YWxpZFN0YXRlRXJyb3IsICJCYWNraW5nIHN0b3JlIGlzIGNsb3NlZCIgfSwga2V5RGF0
YSk7CisKKyAgICB1aW50NjRfdCBrZXlOdW1iZXIgPSBpc0tleUdlbmVyYXRlZCA/IGtleURhdGEu
bnVtYmVyKCkgOiAwOworICAgIGF1dG8gb2JqZWN0U3RvcmVJZGVudGlmaWVyID0gb2JqZWN0U3Rv
cmVJbmZvLmlkZW50aWZpZXIoKTsKKyAgICBhdXRvIHRyYW5zYWN0aW9uSWRlbnRpZmllciA9IHJl
cXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpOworICAgIGF1dG8gZ2VuZXJhdGVkS2V5
UmVzZXR0ZXIgPSBtYWtlU2NvcGVFeGl0KFt0aGlzLCB0cmFuc2FjdGlvbklkZW50aWZpZXIsIG9i
amVjdFN0b3JlSWRlbnRpZmllciwgJmtleU51bWJlciwgJmlzS2V5R2VuZXJhdGVkXSgpIHsKKyAg
ICAgICAgaWYgKGlzS2V5R2VuZXJhdGVkKQorICAgICAgICAgICAgbV9iYWNraW5nU3RvcmUtPnJl
dmVydEdlbmVyYXRlZEtleU51bWJlcih0cmFuc2FjdGlvbklkZW50aWZpZXIsIG9iamVjdFN0b3Jl
SWRlbnRpZmllciwga2V5TnVtYmVyKTsKKyAgICB9KTsKIAorICAgIGlmICghc3BhY2VDaGVja1Jl
c3VsdCB8fCAhc3BhY2VDaGVja1Jlc3VsdC52YWx1ZSgpKQorICAgICAgICByZXR1cm4gY2FsbGJh
Y2soSURCRXJyb3IgeyBRdW90YUV4Y2VlZGVkRXJyb3IsIHF1b3RhRXJyb3JNZXNzYWdlTmFtZSgi
UHV0T3JBZGQiKSB9LCBrZXlEYXRhKTsKICAgICAvLyBJZiBhIHJlY29yZCBhbHJlYWR5IGV4aXN0
cyBpbiBzdG9yZSwgdGhlbiByZW1vdmUgdGhlIHJlY29yZCBmcm9tIHN0b3JlIHVzaW5nIHRoZSBz
dGVwcyBmb3IgZGVsZXRpbmcgcmVjb3JkcyBmcm9tIGFuIG9iamVjdCBzdG9yZS4KLSAgICAvLyBU
aGlzIGlzIGltcG9ydGFudCBiZWNhdXNlIGZvcm1hbGx5IGRlbGV0aW5nIGl0IGZyb20gZnJvbSB0
aGUgb2JqZWN0IHN0b3JlIGFsc28gcmVtb3ZlcyBpdCBmcm9tIHRoZSBhcHByb3ByaWF0ZSBpbmRl
eGVzLgotICAgIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPmRlbGV0ZVJhbmdlKHRyYW5zYWN0aW9u
SWRlbnRpZmllciwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1c2VkS2V5KTsKLSAgICBpZiAoIWVy
cm9yLmlzTnVsbCgpKSB7Ci0gICAgICAgIGNhbGxiYWNrKGVycm9yLCB1c2VkS2V5KTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KKyAgICAvLyBUaGlzIGlzIGltcG9ydGFudCBiZWNhdXNlIGZvcm1h
bGx5IGRlbGV0aW5nIGl0IGZyb20gdGhlIG9iamVjdCBzdG9yZSBhbHNvIHJlbW92ZXMgaXQgZnJv
bSB0aGUgYXBwcm9wcmlhdGUgaW5kZXhlcy4KKyAgICBJREJFcnJvciBlcnJvciA9IG1fYmFja2lu
Z1N0b3JlLT5kZWxldGVSYW5nZSh0cmFuc2FjdGlvbklkZW50aWZpZXIsIG9iamVjdFN0b3JlSWRl
bnRpZmllciwga2V5RGF0YSk7CisgICAgaWYgKCFlcnJvci5pc051bGwoKSkKKyAgICAgICAgcmV0
dXJuIGNhbGxiYWNrKGVycm9yLCBrZXlEYXRhKTsKIAotICAgIGVycm9yID0gbV9iYWNraW5nU3Rv
cmUtPmFkZFJlY29yZCh0cmFuc2FjdGlvbklkZW50aWZpZXIsICpvYmplY3RTdG9yZUluZm8sIHVz
ZWRLZXksIGluZGV4S2V5cywgdmFsdWUpOwotICAgIGlmICghZXJyb3IuaXNOdWxsKCkpIHsKLSAg
ICAgICAgY2FsbGJhY2soZXJyb3IsIHVzZWRLZXkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQor
ICAgIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPmFkZFJlY29yZCh0cmFuc2FjdGlvbklkZW50aWZp
ZXIsIG9iamVjdFN0b3JlSW5mbywga2V5RGF0YSwgaW5kZXhLZXlzLCB2YWx1ZSk7CisgICAgaWYg
KCFlcnJvci5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGVycm9yLCBrZXlEYXRh
KTsKIAotICAgIGlmIChvdmVyd3JpdGVNb2RlICE9IEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVy
d3JpdGVNb2RlOjpPdmVyd3JpdGVGb3JDdXJzb3IgJiYgb2JqZWN0U3RvcmVJbmZvLT5hdXRvSW5j
cmVtZW50KCkgJiYga2V5RGF0YS50eXBlKCkgPT0gSW5kZXhlZERCOjpLZXlUeXBlOjpOdW1iZXIp
CisgICAgaWYgKG92ZXJ3cml0ZU1vZGUgIT0gSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0
ZU1vZGU6Ok92ZXJ3cml0ZUZvckN1cnNvciAmJiBvYmplY3RTdG9yZUluZm8uYXV0b0luY3JlbWVu
dCgpICYmIGtleURhdGEudHlwZSgpID09IEluZGV4ZWREQjo6S2V5VHlwZTo6TnVtYmVyKQogICAg
ICAgICBlcnJvciA9IG1fYmFja2luZ1N0b3JlLT5tYXliZVVwZGF0ZUtleUdlbmVyYXRvck51bWJl
cih0cmFuc2FjdGlvbklkZW50aWZpZXIsIG9iamVjdFN0b3JlSWRlbnRpZmllciwga2V5RGF0YS5u
dW1iZXIoKSk7CiAKICAgICBnZW5lcmF0ZWRLZXlSZXNldHRlci5yZWxlYXNlKCk7Ci0gICAgY2Fs
bGJhY2soZXJyb3IsIHVzZWRLZXkpOworICAgIGNhbGxiYWNrKGVycm9yLCBrZXlEYXRhKTsKIH0K
IAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Z2V0UmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRh
JiByZXF1ZXN0RGF0YSwgY29uc3QgSURCR2V0UmVjb3JkRGF0YSYgZ2V0UmVjb3JkRGF0YSwgR2V0
UmVzdWx0Q2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRSZWNv
cmQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJHZXRSZWNvcmRE
YXRhJiBnZXRSZWNvcmREYXRhLCBHZXRSZXN1bHRDYWxsYmFjayBjYWxsYmFjaywgU3BhY2VDaGVj
a1Jlc3VsdCBzcGFjZUNoZWNrUmVzdWx0KQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkp
OwogICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6Z2V0UmVjb3JkIik7CiAK
KyAgICBpZiAoIXNwYWNlQ2hlY2tSZXN1bHQpIHsKKyAgICAgICAgaWYgKCFtX21hbmFnZXIpCisg
ICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciB9
LCBJREJHZXRSZXN1bHQgeyB9KTsKKworICAgICAgICBtX21hbmFnZXItPnJlcXVlc3RTcGFjZSht
X2lkZW50aWZpZXIub3JpZ2luKCksIDAsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhp
cyB9LCByZXF1ZXN0RGF0YSwgZ2V0UmVjb3JkRGF0YSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKV0oYm9vbCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMp
CisgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRl
RXJyb3IsICJEYXRhYmFzZSBpcyBjbG9zZWQiIH0sIElEQkdldFJlc3VsdCB7IH0pOworCisgICAg
ICAgICAgICBnZXRSZWNvcmQocmVxdWVzdERhdGEsIGdldFJlY29yZERhdGEsIFdURk1vdmUoY2Fs
bGJhY2spLCBncmFudGVkKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBBU1NFUlQoc3BhY2VDaGVja1Jlc3VsdC52YWx1ZSgpKTsKKyAgICBpZiAoIW1fYmFja2lu
Z1N0b3JlKQorICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVF
cnJvciwgIkJhY2tpbmcgc3RvcmUgaXMgY2xvc2VkIiB9LCBJREJHZXRSZXN1bHQgeyB9KTsKKwog
ICAgIElEQkdldFJlc3VsdCByZXN1bHQ7CiAgICAgSURCRXJyb3IgZXJyb3I7CiAKLSAgICBBU1NF
UlQobV9iYWNraW5nU3RvcmUpOwogICAgIGlmICh1aW50NjRfdCBpbmRleElkZW50aWZpZXIgPSBy
ZXF1ZXN0RGF0YS5pbmRleElkZW50aWZpZXIoKSkKICAgICAgICAgZXJyb3IgPSBtX2JhY2tpbmdT
dG9yZS0+Z2V0SW5kZXhSZWNvcmQocmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCks
IHJlcXVlc3REYXRhLm9iamVjdFN0b3JlSWRlbnRpZmllcigpLCBpbmRleElkZW50aWZpZXIsIHJl
cXVlc3REYXRhLmluZGV4UmVjb3JkVHlwZSgpLCBnZXRSZWNvcmREYXRhLmtleVJhbmdlRGF0YSwg
cmVzdWx0KTsKICAgICBlbHNlCkBAIC04MDgsNDcgKzk3NCwxMTAgQEAgdm9pZCBVbmlxdWVJREJE
YXRhYmFzZTo6Z2V0UmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29u
c3QgSURCR2UKICAgICBjYWxsYmFjayhlcnJvciwgcmVzdWx0KTsKIH0KIAotdm9pZCBVbmlxdWVJ
REJEYXRhYmFzZTo6Z2V0QWxsUmVjb3Jkcyhjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERh
dGEsIGNvbnN0IElEQkdldEFsbFJlY29yZHNEYXRhJiBnZXRBbGxSZWNvcmRzRGF0YSwgR2V0QWxs
UmVzdWx0c0NhbGxiYWNrIGNhbGxiYWNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Z2V0QWxs
UmVjb3Jkcyhjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkdldEFs
bFJlY29yZHNEYXRhJiBnZXRBbGxSZWNvcmRzRGF0YSwgR2V0QWxsUmVzdWx0c0NhbGxiYWNrIGNh
bGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0IHNwYWNlQ2hlY2tSZXN1bHQpCiB7CiAgICAgQVNTRVJU
KCFpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNl
OjpnZXRBbGxSZWNvcmRzIik7CiAKLSAgICBBU1NFUlQobV9iYWNraW5nU3RvcmUpOworICAgIGlm
ICghc3BhY2VDaGVja1Jlc3VsdCkgeworICAgICAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAgICAg
ICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yIH0sIElEQkdl
dEFsbFJlc3VsdCB7IH0pOworCisgICAgICAgIG1fbWFuYWdlci0+cmVxdWVzdFNwYWNlKG1faWRl
bnRpZmllci5vcmlnaW4oKSwgMCwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0s
IHJlcXVlc3REYXRhLCBnZXRBbGxSZWNvcmRzRGF0YSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKV0oYm9vbCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMp
CisgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRl
RXJyb3IsICJEYXRhYmFzZSBpcyBjbG9zZWQiIH0sIElEQkdldEFsbFJlc3VsdCB7IH0pOworCisg
ICAgICAgICAgICBnZXRBbGxSZWNvcmRzKHJlcXVlc3REYXRhLCBnZXRBbGxSZWNvcmRzRGF0YSwg
V1RGTW92ZShjYWxsYmFjayksIGdyYW50ZWQpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIEFTU0VSVChzcGFjZUNoZWNrUmVzdWx0LnZhbHVlKCkpOworICAgIGlm
ICghbV9iYWNraW5nU3RvcmUpCisgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IElu
dmFsaWRTdGF0ZUVycm9yLCAiQmFja2luZyBzdG9yZSBpcyBjbG9zZWQiIH0sIElEQkdldEFsbFJl
c3VsdCB7IH0pOworCiAgICAgSURCR2V0QWxsUmVzdWx0IHJlc3VsdDsKICAgICBhdXRvIGVycm9y
ID0gbV9iYWNraW5nU3RvcmUtPmdldEFsbFJlY29yZHMocmVxdWVzdERhdGEudHJhbnNhY3Rpb25J
ZGVudGlmaWVyKCksIGdldEFsbFJlY29yZHNEYXRhLCByZXN1bHQpOwogCiAgICAgY2FsbGJhY2so
ZXJyb3IsIHJlc3VsdCk7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmdldENvdW50KGNv
bnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBy
YW5nZSwgQ291bnRDYWxsYmFjayBjYWxsYmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6Omdl
dENvdW50KGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5UmFu
Z2VEYXRhJiByYW5nZSwgQ291bnRDYWxsYmFjayBjYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCBz
cGFjZUNoZWNrUmVzdWx0KQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIExP
RyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6Z2V0Q291bnQiKTsKIAotICAgIEFTU0VS
VChtX2JhY2tpbmdTdG9yZSk7CisgICAgaWYgKCFzcGFjZUNoZWNrUmVzdWx0KSB7CisgICAgICAg
IGlmICghbV9tYW5hZ2VyKQorICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsg
SW52YWxpZFN0YXRlRXJyb3IgfSwgMCk7CisKKyAgICAgICAgbV9tYW5hZ2VyLT5yZXF1ZXN0U3Bh
Y2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCAwLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsg
KnRoaXMgfSwgcmVxdWVzdERhdGEsIHJhbmdlLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
XShib29sIGdyYW50ZWQpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAg
ICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJv
ciwgIkRhdGFiYXNlIGlzIGNsb3NlZCIgfSwgMCk7CisKKyAgICAgICAgICAgIGdldENvdW50KHJl
cXVlc3REYXRhLCByYW5nZSwgV1RGTW92ZShjYWxsYmFjayksIGdyYW50ZWQpOworICAgICAgICB9
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChzcGFjZUNoZWNrUmVzdWx0
LnZhbHVlKCkpOworICAgIGlmICghbV9iYWNraW5nU3RvcmUpCisgICAgICAgIHJldHVybiBjYWxs
YmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiQmFja2luZyBzdG9yZSBpcyBjbG9z
ZWQiIH0sIDApOworCiAgICAgdWludDY0X3QgY291bnQgPSAwOwogICAgIGF1dG8gZXJyb3IgPSBt
X2JhY2tpbmdTdG9yZS0+Z2V0Q291bnQocmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVy
KCksIHJlcXVlc3REYXRhLm9iamVjdFN0b3JlSWRlbnRpZmllcigpLCByZXF1ZXN0RGF0YS5pbmRl
eElkZW50aWZpZXIoKSwgcmFuZ2UsIGNvdW50KTsKIAogICAgIGNhbGxiYWNrKGVycm9yLCBjb3Vu
dCk7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZVJlY29yZChjb25zdCBJREJS
ZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQktleVJhbmdlRGF0YSYga2V5UmFuZ2VE
YXRhLCBFcnJvckNhbGxiYWNrIGNhbGxiYWNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVs
ZXRlUmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5
UmFuZ2VEYXRhJiBrZXlSYW5nZURhdGEsIEVycm9yQ2FsbGJhY2sgY2FsbGJhY2ssIFNwYWNlQ2hl
Y2tSZXN1bHQgc3BhY2VDaGVja1Jlc3VsdCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgp
KTsKICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZVJlY29yZCIp
OwogCi0gICAgQVNTRVJUKG1fYmFja2luZ1N0b3JlKTsKKyAgICBpZiAoIXNwYWNlQ2hlY2tSZXN1
bHQpIHsKKyAgICAgICAgaWYgKCFtX21hbmFnZXIpCisgICAgICAgICAgICByZXR1cm4gY2FsbGJh
Y2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciB9KTsKKworICAgICAgICBtX21hbmFnZXIt
PnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIDAsIFt0aGlzLCB3ZWFrVGhpcyA9
IFdlYWtQdHIgeyAqdGhpcyB9LCByZXF1ZXN0RGF0YSwga2V5UmFuZ2VEYXRhLCBjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spXShib29sIGdyYW50ZWQpIG11dGFibGUgeworICAgICAgICAgICAg
aWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3Ig
eyBJbnZhbGlkU3RhdGVFcnJvciwgIkRhdGFiYXNlIGlzIGNsb3NlZCIgfSk7CisKKyAgICAgICAg
ICAgIGRlbGV0ZVJlY29yZChyZXF1ZXN0RGF0YSwga2V5UmFuZ2VEYXRhLCBXVEZNb3ZlKGNhbGxi
YWNrKSwgZ3JhbnRlZCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgQVNTRVJUKHNwYWNlQ2hlY2tSZXN1bHQudmFsdWUoKSk7CisgICAgaWYgKCFtX2JhY2tpbmdT
dG9yZSkKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJy
b3IsICJCYWNraW5nIHN0b3JlIGlzIGNsb3NlZCIgfSk7CisKICAgICBhdXRvIGVycm9yID0gbV9i
YWNraW5nU3RvcmUtPmRlbGV0ZVJhbmdlKHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmll
cigpLCByZXF1ZXN0RGF0YS5vYmplY3RTdG9yZUlkZW50aWZpZXIoKSwga2V5UmFuZ2VEYXRhKTsK
IAogICAgIGNhbGxiYWNrKGVycm9yKTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6b3Bl
bkN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkN1cnNv
ckluZm8mIGluZm8sIEdldFJlc3VsdENhbGxiYWNrIGNhbGxiYWNrKQordm9pZCBVbmlxdWVJREJE
YXRhYmFzZTo6b3BlbkN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNv
bnN0IElEQkN1cnNvckluZm8mIGluZm8sIEdldFJlc3VsdENhbGxiYWNrIGNhbGxiYWNrLCBTcGFj
ZUNoZWNrUmVzdWx0IHNwYWNlQ2hlY2tSZXN1bHQpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJl
YWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuQ3Vyc29y
Iik7CiAKLSAgICBBU1NFUlQobV9iYWNraW5nU3RvcmUpOworICAgIGlmICghc3BhY2VDaGVja1Jl
c3VsdCkgeworICAgICAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAgICAgICAgIHJldHVybiBjYWxs
YmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yIH0sIElEQkdldFJlc3VsdCB7IH0pOwor
CisgICAgICAgIG1fbWFuYWdlci0+cmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwg
MCwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHJlcXVlc3REYXRhLCBpbmZv
LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIGdyYW50ZWQpIG11dGFibGUgewor
ICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJh
Y2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkRhdGFiYXNlIG9yIHRyYW5zYWN0aW9u
IGlzIGNsb3NlZCIgfSwgSURCR2V0UmVzdWx0IHsgfSk7CisKKyAgICAgICAgICAgIG9wZW5DdXJz
b3IocmVxdWVzdERhdGEsIGluZm8sIFdURk1vdmUoY2FsbGJhY2spLCBncmFudGVkKTsKKyAgICAg
ICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQoc3BhY2VDaGVja1Jl
c3VsdC52YWx1ZSgpKTsKKyAgICBpZiAoIW1fYmFja2luZ1N0b3JlKQorICAgICAgICByZXR1cm4g
Y2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkJhY2tpbmcgc3RvcmUgaXMg
Y2xvc2VkIiB9LCBJREJHZXRSZXN1bHQgeyB9KTsKIAogICAgIElEQkdldFJlc3VsdCByZXN1bHQ7
CiAgICAgYXV0byBlcnJvciA9IG1fYmFja2luZ1N0b3JlLT5vcGVuQ3Vyc29yKHJlcXVlc3REYXRh
LnRyYW5zYWN0aW9uSWRlbnRpZmllcigpLCBpbmZvLCByZXN1bHQpOwpAQCAtODU2LDEyICsxMDg1
LDI3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6Om9wZW5DdXJzb3IoY29uc3QgSURCUmVxdWVz
dERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJDCiAgICAgY2FsbGJhY2soZXJyb3IsIHJlc3Vs
dCk7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6Oml0ZXJhdGVDdXJzb3IoY29uc3QgSURC
UmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJJdGVyYXRlQ3Vyc29yRGF0YSYgZGF0
YSwgR2V0UmVzdWx0Q2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpp
dGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURC
SXRlcmF0ZUN1cnNvckRhdGEmIGRhdGEsIEdldFJlc3VsdENhbGxiYWNrIGNhbGxiYWNrLCBTcGFj
ZUNoZWNrUmVzdWx0IHNwYWNlQ2hlY2tSZXN1bHQpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJl
YWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjppdGVyYXRlQ3Vy
c29yIik7CiAKLSAgICBBU1NFUlQobV9iYWNraW5nU3RvcmUpOworICAgIGlmICghc3BhY2VDaGVj
a1Jlc3VsdCkgeworICAgICAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAgICAgICAgIHJldHVybiBj
YWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yIH0sIElEQkdldFJlc3VsdCB7IH0p
OworCisgICAgICAgIG1fbWFuYWdlci0+cmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4o
KSwgMCwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHJlcXVlc3REYXRhLCBk
YXRhLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIGdyYW50ZWQpIG11dGFibGUg
eworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICByZXR1cm4gY2Fs
bGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkRhdGFiYXNlIG9yIHRyYW5zYWN0
aW9uIGlzIGNsb3NlZCIgfSwgSURCR2V0UmVzdWx0IHsgfSk7CisKKyAgICAgICAgICAgIGl0ZXJh
dGVDdXJzb3IocmVxdWVzdERhdGEsIGRhdGEsIFdURk1vdmUoY2FsbGJhY2spLCBncmFudGVkKTsK
KyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQoc3BhY2VD
aGVja1Jlc3VsdC52YWx1ZSgpKTsKKyAgICBpZiAoIW1fYmFja2luZ1N0b3JlKQorICAgICAgICBy
ZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkJhY2tpbmcgc3Rv
cmUgaXMgY2xvc2VkIiB9LCBJREJHZXRSZXN1bHQgeyB9KTsKIAogICAgIElEQkdldFJlc3VsdCBy
ZXN1bHQ7CiAgICAgYXV0byB0cmFuc2FjdGlvbklkZW50aWZpZXIgPSByZXF1ZXN0RGF0YS50cmFu
c2FjdGlvbklkZW50aWZpZXIoKTsKQEAgLTg3MSwxMyArMTExNSwzMCBAQCB2b2lkIFVuaXF1ZUlE
QkRhdGFiYXNlOjppdGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0
YSwgY29uc3QgSQogICAgIGNhbGxiYWNrKGVycm9yLCByZXN1bHQpOwogfQogCi12b2lkIFVuaXF1
ZUlEQkRhdGFiYXNlOjpjb21taXRUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0
aW9uJiB0cmFuc2FjdGlvbiwgRXJyb3JDYWxsYmFjayBjYWxsYmFjaykKK3ZvaWQgVW5pcXVlSURC
RGF0YWJhc2U6OmNvbW1pdFRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24m
IHRyYW5zYWN0aW9uLCBFcnJvckNhbGxiYWNrIGNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0IHNw
YWNlQ2hlY2tSZXN1bHQpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgTE9H
KEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpjb21taXRUcmFuc2FjdGlvbiAtICVzIiwg
dHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7CiAKKyAgICBpZiAoIXNwYWNlQ2hlY2tSZXN1bHQpIHsKKyAgICAgICAgaWYgKCFtX21h
bmFnZXIpCisgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3Rh
dGVFcnJvciB9KTsKKworICAgICAgICBtX21hbmFnZXItPnJlcXVlc3RTcGFjZShtX2lkZW50aWZp
ZXIub3JpZ2luKCksIDAsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCB3ZWFr
VHJhbnNhY3Rpb24gPSBXZWFrUHRyIHsgdHJhbnNhY3Rpb24gfSwgY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKV0oYm9vbCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghd2Vh
a1RoaXMgfHwgIXdlYWtUcmFuc2FjdGlvbikKKyAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJh
Y2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkRhdGFiYXNlIG9yIHRyYW5zYWN0aW9u
IGlzIGNsb3NlZCIgfSk7CisKKyAgICAgICAgICAgIGNvbW1pdFRyYW5zYWN0aW9uKCp3ZWFrVHJh
bnNhY3Rpb24sIFdURk1vdmUoY2FsbGJhY2spLCBncmFudGVkKTsKKyAgICAgICAgfSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQoc3BhY2VDaGVja1Jlc3VsdC52YWx1ZSgp
KTsKICAgICBBU1NFUlQodHJhbnNhY3Rpb24uZGF0YWJhc2VDb25uZWN0aW9uKCkuZGF0YWJhc2Uo
KSA9PSB0aGlzKTsKLSAgICBBU1NFUlQobV9iYWNraW5nU3RvcmUpOworCisgICAgaWYgKCFtX2Jh
Y2tpbmdTdG9yZSkKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0
YXRlRXJyb3IsICJCYWNraW5nIHN0b3JlIGlzIGNsb3NlZCIgfSk7CisKICAgICBhdXRvIHRha2Vu
VHJhbnNhY3Rpb24gPSBtX2luUHJvZ3Jlc3NUcmFuc2FjdGlvbnMudGFrZSh0cmFuc2FjdGlvbi5p
bmZvKCkuaWRlbnRpZmllcigpKTsKICAgICBpZiAoIXRha2VuVHJhbnNhY3Rpb24pIHsKICAgICAg
ICAgaWYgKCFtX29wZW5EYXRhYmFzZUNvbm5lY3Rpb25zLmNvbnRhaW5zKCZ0cmFuc2FjdGlvbi5k
YXRhYmFzZUNvbm5lY3Rpb24oKSkpCkBAIC04OTMsMTEgKzExNTQsMjUgQEAgdm9pZCBVbmlxdWVJ
REJEYXRhYmFzZTo6Y29tbWl0VHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlv
biYgdHJhbnNhY3QKICAgICB0cmFuc2FjdGlvbkNvbXBsZXRlZChXVEZNb3ZlKHRha2VuVHJhbnNh
Y3Rpb24pKTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6YWJvcnRUcmFuc2FjdGlvbihV
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgRXJyb3JDYWxsYmFjayBj
YWxsYmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmFib3J0VHJhbnNhY3Rpb24oVW5pcXVl
SURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIEVycm9yQ2FsbGJhY2sgY2FsbGJh
Y2ssIFNwYWNlQ2hlY2tSZXN1bHQgc3BhY2VDaGVja1Jlc3VsdCkKIHsKICAgICBBU1NFUlQoIWlz
TWFpblRocmVhZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6OmFi
b3J0VHJhbnNhY3Rpb24gLSAlcyIsIHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCkubG9n
Z2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCisgICAgaWYgKCFzcGFjZUNoZWNrUmVzdWx0
KSB7CisgICAgICAgIGlmICghbV9tYW5hZ2VyKQorICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNr
KElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7CisKKyAgICAgICAgbV9tYW5hZ2VyLT5y
ZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCAwLCBbdGhpcywgd2Vha1RoaXMgPSBX
ZWFrUHRyIHsgKnRoaXMgfSwgd2Vha1RyYW5zYWN0aW9uID0gV2Vha1B0ciB7IHRyYW5zYWN0aW9u
IH0sIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgZ3JhbnRlZCkgbXV0YWJsZSB7
CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICF3ZWFrVHJhbnNhY3Rpb24pCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJE
YXRhYmFzZSBvciB0cmFuc2FjdGlvbiBpcyBjbG9zZWQiIH0pOworCisgICAgICAgICAgICBhYm9y
dFRyYW5zYWN0aW9uKCp3ZWFrVHJhbnNhY3Rpb24sIFdURk1vdmUoY2FsbGJhY2spLCBncmFudGVk
KTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQoc3Bh
Y2VDaGVja1Jlc3VsdC52YWx1ZSgpKTsKICAgICBBU1NFUlQodHJhbnNhY3Rpb24uZGF0YWJhc2VD
b25uZWN0aW9uKCkuZGF0YWJhc2UoKSA9PSB0aGlzKTsKIAogICAgIGF1dG8gdGFrZW5UcmFuc2Fj
dGlvbiA9IG1faW5Qcm9ncmVzc1RyYW5zYWN0aW9ucy50YWtlKHRyYW5zYWN0aW9uLmluZm8oKS5p
ZGVudGlmaWVyKCkpOwpAQCAtOTI1LDcgKzEyMDAsMTEgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFz
ZTo6YWJvcnRUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2Fj
dGkKICAgICAgICAgbV9kYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4o
Km1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uLT5vcmlnaW5hbERhdGFiYXNlSW5mbygpKTsKICAg
ICB9CiAKLSAgICBhdXRvIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPmFib3J0VHJhbnNhY3Rpb24o
dHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKKyAgICBJREJFcnJvciBlcnJvcjsKKyAgICBpZiAoIW1f
YmFja2luZ1N0b3JlKQorICAgICAgICBlcnJvciA9IElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJy
b3IsICJCYWNraW5nIHN0b3JlIGlzIGNsb3NlZCIgfTsKKyAgICBlbHNlCisgICAgICAgIGVycm9y
ID0gbV9iYWNraW5nU3RvcmUtPmFib3J0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZGVudGlmaWVy
KTsKIAogICAgIGNhbGxiYWNrKGVycm9yKTsKICAgICB0cmFuc2FjdGlvbkNvbXBsZXRlZChXVEZN
b3ZlKHRha2VuVHJhbnNhY3Rpb24pKTsKQEAgLTEyMDQsNiArMTQ4MywxMiBAQCB2b2lkIFVuaXF1
ZUlEQkRhdGFiYXNlOjphYm9ydEFjdGl2ZVRyYW5zYWN0aW9ucygpCiAgICAgfQogfQogCit2b2lk
IFVuaXF1ZUlEQkRhdGFiYXNlOjphYm9ydEluUHJvZ3Jlc3NUcmFuc2FjdGlvbnMoKQoreworICAg
IGZvciAoYXV0byYgaWRlbnRpZmllciA6IGNvcHlUb1ZlY3RvcihtX2luUHJvZ3Jlc3NUcmFuc2Fj
dGlvbnMua2V5cygpKSkKKyAgICAgICAgbV9pblByb2dyZXNzVHJhbnNhY3Rpb25zLmdldChpZGVu
dGlmaWVyKS0+YWJvcnRXaXRob3V0Q2FsbGJhY2soKTsKK30KKwogdm9pZCBVbmlxdWVJREJEYXRh
YmFzZTo6Y2xvc2UoKQogewogICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6
Y2xvc2UiKTsKQEAgLTEyMTMsNyArMTQ5OCw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNs
b3NlKCkKICAgICAgICAgbV9iYWNraW5nU3RvcmUgPSBudWxscHRyOwogICAgIH0KIH0KLQorICAg
IAogYm9vbCBVbmlxdWVJREJEYXRhYmFzZTo6dHJ5Q2xvc2UoKQogewogICAgIGlmIChtX2JhY2tp
bmdTdG9yZSAmJiBtX2JhY2tpbmdTdG9yZS0+aXNFcGhlbWVyYWwoKSkKQEAgLTEyMjUsNiArMTUx
MCwxMSBAQCBib29sIFVuaXF1ZUlEQkRhdGFiYXNlOjp0cnlDbG9zZSgpCiAgICAgY2xvc2UoKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KKyAgICAKK2Jvb2wgVW5pcXVlSURCRGF0YWJhc2U6Omhhc0Rh
dGFJbk1lbW9yeSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYmFja2luZ1N0b3JlID8gbV9iYWNr
aW5nU3RvcmUtPmlzRXBoZW1lcmFsKCkgOiBmYWxzZTsKK30KIAogUmVmUHRyPFNlcnZlck9wZW5E
QlJlcXVlc3Q+IFVuaXF1ZUlEQkRhdGFiYXNlOjp0YWtlTmV4dFJ1bm5hYmxlUmVxdWVzdChSZXF1
ZXN0VHlwZSByZXF1ZXN0VHlwZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmgKaW5kZXggYjJhNzQx
N2Y5YzgxOWNmYzI0MTQ2Y2U1ZmI1Y2Y1ZDI2MTI4NTA4MC4uYjA0ZDcxMzllZmRmMGRjNzk4ZjY1
OGNlNTIxNjk2YTBhNzZjZmVhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmgKQEAgLTU5LDggKzU5
LDggQEAgZW51bSBjbGFzcyBJbmRleFJlY29yZFR5cGUgOiBib29sOwogbmFtZXNwYWNlIElEQlNl
cnZlciB7CiAKIGNsYXNzIElEQkNvbm5lY3Rpb25Ub0NsaWVudDsKLWNsYXNzIElEQlNlcnZlcjsK
IGNsYXNzIFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbjsKK2NsYXNzIFVuaXF1ZUlEQkRhdGFi
YXNlTWFuYWdlcjsKIAogdHlwZWRlZiBGdW5jdGlvbjx2b2lkKGNvbnN0IElEQkVycm9yJik+IEVy
cm9yQ2FsbGJhY2s7CiB0eXBlZGVmIEZ1bmN0aW9uPHZvaWQoY29uc3QgSURCRXJyb3ImLCBjb25z
dCBJREJLZXlEYXRhJik+IEtleURhdGFDYWxsYmFjazsKQEAgLTcxLDU0ICs3MSw1OSBAQCB0eXBl
ZGVmIEZ1bmN0aW9uPHZvaWQoY29uc3QgSURCRXJyb3ImLCB1aW50NjRfdCk+IENvdW50Q2FsbGJh
Y2s7CiBjbGFzcyBVbmlxdWVJREJEYXRhYmFzZSA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxVbmlx
dWVJREJEYXRhYmFzZT4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgot
ICAgIFVuaXF1ZUlEQkRhdGFiYXNlKElEQlNlcnZlciYsIGNvbnN0IElEQkRhdGFiYXNlSWRlbnRp
ZmllciYpOworICAgIFdFQkNPUkVfRVhQT1JUIFVuaXF1ZUlEQkRhdGFiYXNlKFVuaXF1ZUlEQkRh
dGFiYXNlTWFuYWdlciYsIGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYpOwogICAgIFVuaXF1
ZUlEQkRhdGFiYXNlKFVuaXF1ZUlEQkRhdGFiYXNlJikgPSBkZWxldGU7CiAgICAgV0VCQ09SRV9F
WFBPUlQgflVuaXF1ZUlEQkRhdGFiYXNlKCk7CiAKLSAgICB2b2lkIG9wZW5EYXRhYmFzZUNvbm5l
Y3Rpb24oSURCQ29ubmVjdGlvblRvQ2xpZW50JiwgY29uc3QgSURCUmVxdWVzdERhdGEmKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIG9wZW5EYXRhYmFzZUNvbm5lY3Rpb24oSURCQ29ubmVjdGlv
blRvQ2xpZW50JiwgY29uc3QgSURCUmVxdWVzdERhdGEmKTsKIAogICAgIGNvbnN0IElEQkRhdGFi
YXNlSW5mbyYgaW5mbygpIGNvbnN0OwotICAgIElEQlNlcnZlciYgc2VydmVyKCkgeyByZXR1cm4g
bV9zZXJ2ZXI7IH0KKyAgICBVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIqIG1hbmFnZXIoKTsKICAg
ICBjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVy
biBtX2lkZW50aWZpZXI7IH0KIAotICAgIHZvaWQgY3JlYXRlT2JqZWN0U3RvcmUoVW5pcXVlSURC
RGF0YWJhc2VUcmFuc2FjdGlvbiYsIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYsIEVycm9yQ2Fs
bGJhY2spOwotICAgIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFu
c2FjdGlvbiYsIGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lLCBFcnJvckNhbGxiYWNrKTsK
LSAgICB2b2lkIHJlbmFtZU9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24m
LCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSwg
RXJyb3JDYWxsYmFjayk7Ci0gICAgdm9pZCBjbGVhck9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFi
YXNlVHJhbnNhY3Rpb24mLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIEVycm9yQ2Fs
bGJhY2spOwotICAgIHZvaWQgY3JlYXRlSW5kZXgoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlv
biYsIGNvbnN0IElEQkluZGV4SW5mbyYsIEVycm9yQ2FsbGJhY2spOwotICAgIHZvaWQgZGVsZXRl
SW5kZXgoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIHVpbnQ2NF90IG9iamVjdFN0b3Jl
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpbmRleE5hbWUsIEVycm9yQ2FsbGJhY2spOwotICAg
IHZvaWQgcmVuYW1lSW5kZXgoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIHVpbnQ2NF90
IG9iamVjdFN0b3JlSWRlbnRpZmllciwgdWludDY0X3QgaW5kZXhJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIG5ld05hbWUsIEVycm9yQ2FsbGJhY2spOworICAgIHVzaW5nIFNwYWNlQ2hlY2tSZXN1
bHQgPSBzdGQ6Om9wdGlvbmFsPGJvb2w+OworICAgIHZvaWQgY3JlYXRlT2JqZWN0U3RvcmUoVW5p
cXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYsIEVy
cm9yQ2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgPSBzdGQ6Om51bGxvcHQpOworICAgIHZvaWQg
ZGVsZXRlT2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIGNvbnN0IFN0
cmluZyYgb2JqZWN0U3RvcmVOYW1lLCBFcnJvckNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0ID0g
c3RkOjpudWxsb3B0KTsKKyAgICB2b2lkIHJlbmFtZU9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFi
YXNlVHJhbnNhY3Rpb24mLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgbmV3TmFtZSwgRXJyb3JDYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCA9IHN0ZDo6bnVs
bG9wdCk7CisgICAgdm9pZCBjbGVhck9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNh
Y3Rpb24mLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIEVycm9yQ2FsbGJhY2ssIFNw
YWNlQ2hlY2tSZXN1bHQgPSBzdGQ6Om51bGxvcHQpOworICAgIHZvaWQgY3JlYXRlSW5kZXgoVW5p
cXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIGNvbnN0IElEQkluZGV4SW5mbyYsIEVycm9yQ2Fs
bGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgPSBzdGQ6Om51bGxvcHQpOworICAgIHZvaWQgZGVsZXRl
SW5kZXgoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIHVpbnQ2NF90IG9iamVjdFN0b3Jl
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpbmRleE5hbWUsIEVycm9yQ2FsbGJhY2ssIFNwYWNl
Q2hlY2tSZXN1bHQgPSBzdGQ6Om51bGxvcHQpOworICAgIHZvaWQgcmVuYW1lSW5kZXgoVW5pcXVl
SURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwg
dWludDY0X3QgaW5kZXhJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUsIEVycm9yQ2Fs
bGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgPSBzdGQ6Om51bGxvcHQpOwogICAgIHZvaWQgcHV0T3JB
ZGQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlEYXRhJiwgY29uc3QgSURCVmFs
dWUmLCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSwgS2V5RGF0YUNhbGxiYWNr
KTsKLSAgICB2b2lkIGdldFJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkdl
dFJlY29yZERhdGEmLCBHZXRSZXN1bHRDYWxsYmFjayk7Ci0gICAgdm9pZCBnZXRBbGxSZWNvcmRz
KGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCR2V0QWxsUmVjb3Jkc0RhdGEmLCBHZXRB
bGxSZXN1bHRzQ2FsbGJhY2spOwotICAgIHZvaWQgZ2V0Q291bnQoY29uc3QgSURCUmVxdWVzdERh
dGEmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmLCBDb3VudENhbGxiYWNrKTsKLSAgICB2b2lkIGRl
bGV0ZVJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYs
IEVycm9yQ2FsbGJhY2spOwotICAgIHZvaWQgb3BlbkN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0
YSYsIGNvbnN0IElEQkN1cnNvckluZm8mLCBHZXRSZXN1bHRDYWxsYmFjayk7Ci0gICAgdm9pZCBp
dGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCSXRlcmF0ZUN1cnNv
ckRhdGEmLCBHZXRSZXN1bHRDYWxsYmFjayk7Ci0gICAgdm9pZCBjb21taXRUcmFuc2FjdGlvbihV
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgRXJyb3JDYWxsYmFjayk7Ci0gICAgdm9pZCBh
Ym9ydFRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCBFcnJvckNhbGxi
YWNrKTsKKyAgICB2b2lkIHB1dE9yQWRkQWZ0ZXJTcGFjZUNoZWNrKGNvbnN0IElEQlJlcXVlc3RE
YXRhJiwgY29uc3QgSURCS2V5RGF0YSYsIGNvbnN0IElEQlZhbHVlJiwgSW5kZXhlZERCOjpPYmpl
Y3RTdG9yZU92ZXJ3cml0ZU1vZGUsIEtleURhdGFDYWxsYmFjaywgYm9vbCBpc0tleUdlbmVyYXRl
ZCwgY29uc3QgSW5kZXhJRFRvSW5kZXhLZXlNYXAmLCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8m
LCBTcGFjZUNoZWNrUmVzdWx0KTsKKyAgICB2b2lkIGdldFJlY29yZChjb25zdCBJREJSZXF1ZXN0
RGF0YSYsIGNvbnN0IElEQkdldFJlY29yZERhdGEmLCBHZXRSZXN1bHRDYWxsYmFjaywgU3BhY2VD
aGVja1Jlc3VsdCA9IHN0ZDo6bnVsbG9wdCk7CisgICAgdm9pZCBnZXRBbGxSZWNvcmRzKGNvbnN0
IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCR2V0QWxsUmVjb3Jkc0RhdGEmLCBHZXRBbGxSZXN1
bHRzQ2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgPSBzdGQ6Om51bGxvcHQpOworICAgIHZvaWQg
Z2V0Q291bnQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmLCBD
b3VudENhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0ID0gc3RkOjpudWxsb3B0KTsKKyAgICB2b2lk
IGRlbGV0ZVJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleVJhbmdlRGF0
YSYsIEVycm9yQ2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgPSBzdGQ6Om51bGxvcHQpOworICAg
IHZvaWQgb3BlbkN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkN1cnNvcklu
Zm8mLCBHZXRSZXN1bHRDYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCA9IHN0ZDo6bnVsbG9wdCk7
CisgICAgdm9pZCBpdGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURC
SXRlcmF0ZUN1cnNvckRhdGEmLCBHZXRSZXN1bHRDYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCA9
IHN0ZDo6bnVsbG9wdCk7CisgICAgdm9pZCBjb21taXRUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRh
YmFzZVRyYW5zYWN0aW9uJiwgRXJyb3JDYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCA9IHN0ZDo6
bnVsbG9wdCk7CisgICAgdm9pZCBhYm9ydFRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJh
bnNhY3Rpb24mLCBFcnJvckNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0ID0gc3RkOjpudWxsb3B0
KTsKIAogICAgIHZvaWQgZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlKFVuaXF1ZUlEQkRh
dGFiYXNlQ29ubmVjdGlvbiYsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rp
b25JZGVudGlmaWVyKTsKICAgICB2b2lkIGNvbm5lY3Rpb25DbG9zZWRGcm9tQ2xpZW50KFVuaXF1
ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYpOwogICAgIHZvaWQgZGlkRmlyZVZlcnNpb25DaGFuZ2VF
dmVudChVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mLCBjb25zdCBJREJSZXNvdXJjZUlkZW50
aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBJbmRleGVkREI6OkNvbm5lY3Rpb25DbG9zZWRPbkJl
aGFsZk9mU2VydmVyKTsKLSAgICB2b2lkIG9wZW5EQlJlcXVlc3RDYW5jZWxsZWQoY29uc3QgSURC
UmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllcik7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBvcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmll
ciYgcmVxdWVzdElkZW50aWZpZXIpOwogCiAgICAgdm9pZCBlbnF1ZXVlVHJhbnNhY3Rpb24oUmVm
PFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24+JiYpOwogCi0gICAgdm9pZCBoYW5kbGVEZWxl
dGUoSURCQ29ubmVjdGlvblRvQ2xpZW50JiwgY29uc3QgSURCUmVxdWVzdERhdGEmKTsKLSAgICB2
b2lkIGltbWVkaWF0ZUNsb3NlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBoYW5kbGVEZWxl
dGUoSURCQ29ubmVjdGlvblRvQ2xpZW50JiwgY29uc3QgSURCUmVxdWVzdERhdGEmKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGltbWVkaWF0ZUNsb3NlKCk7CiAKICAgICBib29sIGhhc0FjdGl2
ZVRyYW5zYWN0aW9ucygpIGNvbnN0OwogICAgIHZvaWQgYWJvcnRBY3RpdmVUcmFuc2FjdGlvbnMo
KTsKLSAgICBib29sIHRyeUNsb3NlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhYm9ydElu
UHJvZ3Jlc3NUcmFuc2FjdGlvbnMoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIHRyeUNsb3Nl
KCk7CiAKLSAgICBTdHJpbmcgZmlsZVBhdGgoKSBjb25zdDsKLSAgICBzdGQ6Om9wdGlvbmFsPElE
QkRhdGFiYXNlTmFtZUFuZFZlcnNpb24+IG5hbWVBbmRWZXJzaW9uKCkgY29uc3Q7CisgICAgV0VC
Q09SRV9FWFBPUlQgU3RyaW5nIGZpbGVQYXRoKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
c3RkOjpvcHRpb25hbDxJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiBuYW1lQW5kVmVyc2lvbigp
IGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzRGF0YUluTWVtb3J5KCkgY29uc3Q7
CiAKIHByaXZhdGU6CiAgICAgdm9pZCBoYW5kbGVEYXRhYmFzZU9wZXJhdGlvbnMoKTsKICAgICB2
b2lkIGhhbmRsZUN1cnJlbnRPcGVyYXRpb24oKTsKICAgICB2b2lkIHBlcmZvcm1DdXJyZW50T3Bl
bk9wZXJhdGlvbigpOworICAgIHZvaWQgcGVyZm9ybUN1cnJlbnRPcGVuT3BlcmF0aW9uQWZ0ZXJT
cGFjZUNoZWNrKGJvb2wgaXNHcmFudGVkKTsKICAgICB2b2lkIHBlcmZvcm1DdXJyZW50RGVsZXRl
T3BlcmF0aW9uKCk7CiAgICAgZW51bSBjbGFzcyBSZXF1ZXN0VHlwZSB7IERlbGV0ZSwgQW55IH07
CiAgICAgUmVmUHRyPFNlcnZlck9wZW5EQlJlcXVlc3Q+IHRha2VOZXh0UnVubmFibGVSZXF1ZXN0
KFJlcXVlc3RUeXBlID0gUmVxdWVzdFR5cGU6OkFueSk7CkBAIC0xNDYsMTEgKzE1MSwxMyBAQCBw
cml2YXRlOgogCiAgICAgdm9pZCBjbGVhclRyYW5zYWN0aW9uc09uQ29ubmVjdGlvbihVbmlxdWVJ
REJEYXRhYmFzZUNvbm5lY3Rpb24mKTsKIAotICAgIElEQlNlcnZlciYgbV9zZXJ2ZXI7CisgICAg
SURCU2VydmVyKiBtX3NlcnZlcjsKKyAgICBXZWFrUHRyPFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdl
cj4gbV9tYW5hZ2VyOwogICAgIElEQkRhdGFiYXNlSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAK
ICAgICBMaXN0SGFzaFNldDxSZWZQdHI8U2VydmVyT3BlbkRCUmVxdWVzdD4+IG1fcGVuZGluZ09w
ZW5EQlJlcXVlc3RzOwogICAgIFJlZlB0cjxTZXJ2ZXJPcGVuREJSZXF1ZXN0PiBtX2N1cnJlbnRP
cGVuREJSZXF1ZXN0OworICAgIEhhc2hTZXQ8SURCUmVzb3VyY2VJZGVudGlmaWVyPiBtX29wZW5E
QlJlcXVlc3RzRm9yU3BhY2VDaGVjazsKIAogICAgIExpc3RIYXNoU2V0PFJlZlB0cjxVbmlxdWVJ
REJEYXRhYmFzZUNvbm5lY3Rpb24+PiBtX29wZW5EYXRhYmFzZUNvbm5lY3Rpb25zOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURC
RGF0YWJhc2VDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uY3BwCmluZGV4IDc0M2VkY2MzYjhj
NTk0MDUxZjc5MTExNjUyNmFmNGQwMjE2OTEzNjcuLmQ2YWExZmI5YmE2MmJjOTljZDUwOTJjZjUw
Y2U2OTVkOTkwN2I2YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rp
b24uY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUg
IlNlcnZlck9wZW5EQlJlcXVlc3QuaCIKICNpbmNsdWRlICJVbmlxdWVJREJEYXRhYmFzZS5oIgor
I2luY2x1ZGUgIlVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBuYW1lc3BhY2UgSURCU2VydmVyIHsKQEAgLTQyLDExICs0MywxNCBAQCBSZWY8VW5pcXVl
SURCRGF0YWJhc2VDb25uZWN0aW9uPiBVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb246OmNyZWF0
ZShVbmlxdWVJREJEYQogCiBVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb246OlVuaXF1ZUlEQkRh
dGFiYXNlQ29ubmVjdGlvbihVbmlxdWVJREJEYXRhYmFzZSYgZGF0YWJhc2UsIFNlcnZlck9wZW5E
QlJlcXVlc3QmIHJlcXVlc3QpCiAgICAgOiBtX2RhdGFiYXNlKGRhdGFiYXNlKQotICAgICwgbV9z
ZXJ2ZXIoZGF0YWJhc2Uuc2VydmVyKCkpCisgICAgLCBtX21hbmFnZXIoZGF0YWJhc2UubWFuYWdl
cigpKQogICAgICwgbV9jb25uZWN0aW9uVG9DbGllbnQocmVxdWVzdC5jb25uZWN0aW9uKCkpCiAg
ICAgLCBtX29wZW5SZXF1ZXN0SWRlbnRpZmllcihyZXF1ZXN0LnJlcXVlc3REYXRhKCkucmVxdWVz
dElkZW50aWZpZXIoKSkKIHsKLSAgICBtX3NlcnZlci5yZWdpc3RlckRhdGFiYXNlQ29ubmVjdGlv
bigqdGhpcyk7CisgICAgaWYgKGF1dG8qIG1hbmFnZXIgPSBkYXRhYmFzZS5tYW5hZ2VyKCkpIHsK
KyAgICAgICAgbV9tYW5hZ2VyID0gV2Vha1B0ciB7ICptYW5hZ2VyIH07CisgICAgICAgIG1fbWFu
YWdlci0+cmVnaXN0ZXJDb25uZWN0aW9uKCp0aGlzKTsKKyAgICB9CiAgICAgbV9jb25uZWN0aW9u
VG9DbGllbnQtPnJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0aW9uKCp0aGlzKTsKIH0KIApAQCAtNTQs
MTAgKzU4LDE2IEBAIFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbjo6flVuaXF1ZUlEQkRhdGFi
YXNlQ29ubmVjdGlvbigpCiB7CiAgICAgQVNTRVJUKG1fdHJhbnNhY3Rpb25NYXAuaXNFbXB0eSgp
KTsKIAotICAgIG1fc2VydmVyLnVucmVnaXN0ZXJEYXRhYmFzZUNvbm5lY3Rpb24oKnRoaXMpOwor
ICAgIGlmIChtX21hbmFnZXIpCisgICAgICAgIG1fbWFuYWdlci0+dW5yZWdpc3RlckNvbm5lY3Rp
b24oKnRoaXMpOwogICAgIG1fY29ubmVjdGlvblRvQ2xpZW50LT51bnJlZ2lzdGVyRGF0YWJhc2VD
b25uZWN0aW9uKCp0aGlzKTsKIH0KIAorVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyKiBVbmlxdWVJ
REJEYXRhYmFzZUNvbm5lY3Rpb246Om1hbmFnZXIoKQoreworICAgIHJldHVybiBtX21hbmFnZXIu
Z2V0KCk7Cit9CisKIGJvb2wgVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uOjpoYXNOb25GaW5p
c2hlZFRyYW5zYWN0aW9ucygpIGNvbnN0CiB7CiAgICAgcmV0dXJuICFtX3RyYW5zYWN0aW9uTWFw
LmlzRW1wdHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uaAppbmRl
eCAyZTE5ZGZkMmRjOTE0MzRiZmM1ZTdjM2FlNGJlNjZkOGNkODU4ODExLi45OGZlYjU5Yzc2YmVh
ZWJlNzBlZGRlNGJlNTU4ZmNhODcxYzk4ZGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFi
YXNlQ29ubmVjdGlvbi5oCkBAIC0yNSw3ICsyNSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5j
bHVkZSAiSURCU2VydmVyLmgiCiAjaW5jbHVkZSAiVW5pcXVlSURCRGF0YWJhc2UuaCIKICNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9JZGVudGlmaWVkLmg+CkBAIC0zNiw2
ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSURCRXJyb3I7CiBjbGFzcyBJ
REJSZXN1bHREYXRhOworY2xhc3MgVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyOwogCiBuYW1lc3Bh
Y2UgSURCU2VydmVyIHsKIApAQCAtNTIsMTEgKzUyLDExIEBAIHB1YmxpYzoKIAogICAgIGNvbnN0
IElEQlJlc291cmNlSWRlbnRpZmllciYgb3BlblJlcXVlc3RJZGVudGlmaWVyKCkgeyByZXR1cm4g
bV9vcGVuUmVxdWVzdElkZW50aWZpZXI7IH0KICAgICBVbmlxdWVJREJEYXRhYmFzZSogZGF0YWJh
c2UoKSB7IHJldHVybiBtX2RhdGFiYXNlLmdldCgpOyB9Ci0gICAgSURCU2VydmVyKiBzZXJ2ZXIo
KSB7IHJldHVybiAmbV9zZXJ2ZXI7IH0KKyAgICBVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIqIG1h
bmFnZXIoKTsKICAgICBJREJDb25uZWN0aW9uVG9DbGllbnQmIGNvbm5lY3Rpb25Ub0NsaWVudCgp
IHsgcmV0dXJuIG1fY29ubmVjdGlvblRvQ2xpZW50OyB9CiAKLSAgICB2b2lkIGNvbm5lY3Rpb25Q
ZW5kaW5nQ2xvc2VGcm9tQ2xpZW50KCk7Ci0gICAgdm9pZCBjb25uZWN0aW9uQ2xvc2VkRnJvbUNs
aWVudCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29ubmVjdGlvblBlbmRpbmdDbG9zZUZy
b21DbGllbnQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbm5lY3Rpb25DbG9zZWRGcm9t
Q2xpZW50KCk7CiAKICAgICBib29sIGNsb3NlUGVuZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fY2xv
c2VQZW5kaW5nOyB9CiAKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogICAgIHZvaWQgZmlyZVZl
cnNpb25DaGFuZ2VFdmVudChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVu
dGlmaWVyLCB1aW50NjRfdCByZXF1ZXN0ZWRWZXJzaW9uKTsKICAgICBVbmlxdWVJREJEYXRhYmFz
ZVRyYW5zYWN0aW9uJiBjcmVhdGVWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24odWludDY0X3QgbmV3
VmVyc2lvbik7CiAKLSAgICB2b2lkIGVzdGFibGlzaFRyYW5zYWN0aW9uKGNvbnN0IElEQlRyYW5z
YWN0aW9uSW5mbyYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZXN0YWJsaXNoVHJhbnNhY3Rp
b24oY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJik7CiAgICAgdm9pZCBkaWRBYm9ydFRyYW5zYWN0
aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCBjb25zdCBJREJFcnJvciYpOwogICAg
IHZvaWQgZGlkQ29tbWl0VHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYs
IGNvbnN0IElEQkVycm9yJik7CiAgICAgdm9pZCBkaWRDcmVhdGVPYmplY3RTdG9yZShjb25zdCBJ
REJSZXN1bHREYXRhJik7CkBAIC03NSw4ICs3NSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZENy
ZWF0ZUluZGV4KGNvbnN0IElEQlJlc3VsdERhdGEmKTsKICAgICB2b2lkIGRpZERlbGV0ZUluZGV4
KGNvbnN0IElEQlJlc3VsdERhdGEmKTsKICAgICB2b2lkIGRpZFJlbmFtZUluZGV4KGNvbnN0IElE
QlJlc3VsdERhdGEmKTsKLSAgICB2b2lkIGRpZEZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQoY29uc3Qg
SURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgSW5kZXhlZERCOjpDb25u
ZWN0aW9uQ2xvc2VkT25CZWhhbGZPZlNlcnZlcik7Ci0gICAgdm9pZCBkaWRGaW5pc2hIYW5kbGlu
Z1ZlcnNpb25DaGFuZ2UoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklk
ZW50aWZpZXIpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkRmlyZVZlcnNpb25DaGFuZ2VF
dmVudChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBJbmRl
eGVkREI6OkNvbm5lY3Rpb25DbG9zZWRPbkJlaGFsZk9mU2VydmVyKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGRpZEZpbmlzaEhhbmRsaW5nVmVyc2lvbkNoYW5nZShjb25zdCBJREJSZXNvdXJj
ZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CiAKICAgICB2b2lkIGFib3J0VHJh
bnNhY3Rpb25XaXRob3V0Q2FsbGJhY2soVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYpOwog
CkBAIC04OCw3ICs4OCw3IEBAIHByaXZhdGU6CiAgICAgVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0
aW9uKFVuaXF1ZUlEQkRhdGFiYXNlJiwgU2VydmVyT3BlbkRCUmVxdWVzdCYpOwogCiAgICAgV2Vh
a1B0cjxVbmlxdWVJREJEYXRhYmFzZT4gbV9kYXRhYmFzZTsKLSAgICBJREJTZXJ2ZXImIG1fc2Vy
dmVyOworICAgIFdlYWtQdHI8VW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyPiBtX21hbmFnZXI7CiAg
ICAgUmVmPElEQkNvbm5lY3Rpb25Ub0NsaWVudD4gbV9jb25uZWN0aW9uVG9DbGllbnQ7CiAgICAg
SURCUmVzb3VyY2VJZGVudGlmaWVyIG1fb3BlblJlcXVlc3RJZGVudGlmaWVyOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0
YWJhc2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
VW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGJiY2QzNzQ4ZTliMzNmZDk1
MzMxNTllYjEzNzUzYTkwNmVlZTk4OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuaApAQCAt
MCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJREJE
YXRhYmFzZUlkZW50aWZpZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgQ2xp
ZW50T3JpZ2luOworCituYW1lc3BhY2UgSURCU2VydmVyIHsKKworY2xhc3MgSURCQmFja2luZ1N0
b3JlOworY2xhc3MgVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uOworCitjbGFzcyBVbmlxdWVJ
REJEYXRhYmFzZU1hbmFnZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8VW5pcXVlSURCRGF0YWJh
c2VNYW5hZ2VyPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAg
dmlydHVhbCB+VW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyKCkgeyB9CisgICAgdmlydHVhbCB2b2lk
IHJlZ2lzdGVyQ29ubmVjdGlvbihVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJDb25uZWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlQ29u
bmVjdGlvbiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJUcmFuc2FjdGlvbihVbmlx
dWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lz
dGVyVHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYpID0gMDsKKyAgICB2
aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxJREJCYWNraW5nU3RvcmU+IGNyZWF0ZUJhY2tpbmdTdG9y
ZShjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJl
cXVlc3RTcGFjZShjb25zdCBDbGllbnRPcmlnaW4mLCB1aW50NjRfdCBzaXplLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBJREJTZXJ2
ZXIKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFi
YXNlVHJhbnNhY3Rpb24uY3BwCmluZGV4IDFjYzAyODE3YTEyNGM4ZDBlZDUyZjIxM2FjOGU1MDA2
YmE2Yjk2ZGUuLjZlM2NlMDQ0MDZmY2FkMzNiY2MxYzllOWY2MTJlMmFmNDEwNjk0MWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJE
YXRhYmFzZVRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHAKQEAgLTI4LDcgKzI4
LDYgQEAKIAogI2luY2x1ZGUgIklEQkl0ZXJhdGVDdXJzb3JEYXRhLmgiCiAjaW5jbHVkZSAiSURC
UmVzdWx0RGF0YS5oIgotI2luY2x1ZGUgIklEQlNlcnZlci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcu
aCIKICNpbmNsdWRlICJVbmlxdWVJREJEYXRhYmFzZS5oIgogCkBAIC01MCwxMiArNDksMTQgQEAg
VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlv
bihVbmlxdWVJREJEYXRhYmFzZUNvbm4KICAgICBpZiAobV90cmFuc2FjdGlvbkluZm8ubW9kZSgp
ID09IElEQlRyYW5zYWN0aW9uTW9kZTo6VmVyc2lvbmNoYW5nZSkKICAgICAgICAgbV9vcmlnaW5h
bERhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPihkYXRhYmFzZS0+aW5m
bygpKTsKIAotICAgIGRhdGFiYXNlQ29ubmVjdGlvbigpLnNlcnZlcigpLT5yZWdpc3RlclRyYW5z
YWN0aW9uKCp0aGlzKTsKKyAgICBpZiAoYXV0byogbWFuYWdlciA9IGRhdGFiYXNlQ29ubmVjdGlv
bigpLm1hbmFnZXIoKSkKKyAgICAgICAgbWFuYWdlci0+cmVnaXN0ZXJUcmFuc2FjdGlvbigqdGhp
cyk7CiB9CiAKIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246On5VbmlxdWVJREJEYXRhYmFz
ZVRyYW5zYWN0aW9uKCkKIHsKLSAgICBkYXRhYmFzZUNvbm5lY3Rpb24oKS5zZXJ2ZXIoKS0+dW5y
ZWdpc3RlclRyYW5zYWN0aW9uKCp0aGlzKTsKKyAgICBpZiAoYXV0byogbWFuYWdlciA9IGRhdGFi
YXNlQ29ubmVjdGlvbigpLm1hbmFnZXIoKSkKKyAgICAgICAgbWFuYWdlci0+dW5yZWdpc3RlclRy
YW5zYWN0aW9uKCp0aGlzKTsKIH0KIAogVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiBVbmlx
dWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpkYXRhYmFzZUNvbm5lY3Rpb24oKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFi
YXNlVHJhbnNhY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmgKaW5kZXggOTU5NjY1MmFkY2RiYTdhMDQ4
YjYxOWY3NGVmMWE5MmNlZWY5ZTBlNS4uZmJhODVjMTczOGI3MzQyZTEyODgwMGFlYjlkMWRhNDY3
ZWU3YTEwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5oCkBA
IC01MSw3ICs1MSw3IEBAIG5hbWVzcGFjZSBJREJTZXJ2ZXIgewogY2xhc3MgSURCU2VydmVyOwog
Y2xhc3MgVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uOwogCi1jbGFzcyBVbmlxdWVJREJEYXRh
YmFzZVRyYW5zYWN0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8VW5pcXVlSURCRGF0YWJhc2VUcmFu
c2FjdGlvbj4geworY2xhc3MgVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiA6IHB1YmxpYyBD
YW5NYWtlV2Vha1B0cjxVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uPiwgcHVibGljIFJlZkNv
dW50ZWQ8VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbj4gewogcHVibGljOgogICAgIHN0YXRp
YyBSZWY8VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbj4gY3JlYXRlKFVuaXF1ZUlEQkRhdGFi
YXNlQ29ubmVjdGlvbiYsIGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYpOwogCkBAIC01OSwyOSAr
NTksMjkgQEAgcHVibGljOgogCiAgICAgVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiBkYXRh
YmFzZUNvbm5lY3Rpb24oKTsKICAgICBjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mIGluZm8oKSBj
b25zdCB7IHJldHVybiBtX3RyYW5zYWN0aW9uSW5mbzsgfQotICAgIGJvb2wgaXNWZXJzaW9uQ2hh
bmdlKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc1ZlcnNpb25DaGFuZ2UoKSBj
b25zdDsKICAgICBib29sIGlzUmVhZE9ubHkoKSBjb25zdDsKIAogICAgIElEQkRhdGFiYXNlSW5m
byogb3JpZ2luYWxEYXRhYmFzZUluZm8oKSBjb25zdDsKIAotICAgIHZvaWQgYWJvcnQoKTsKLSAg
ICB2b2lkIGFib3J0V2l0aG91dENhbGxiYWNrKCk7Ci0gICAgdm9pZCBjb21taXQodWludDY0X3Qg
cGVuZGluZ1JlcXVlc3RDb3VudCk7Ci0KLSAgICB2b2lkIGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0
IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJik7Ci0gICAgdm9pZCBk
ZWxldGVPYmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IFN0cmluZyYgb2Jq
ZWN0U3RvcmVOYW1lKTsKLSAgICB2b2lkIHJlbmFtZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVl
c3REYXRhJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5l
d05hbWUpOwotICAgIHZvaWQgY2xlYXJPYmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0YSYs
IHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllcik7Ci0gICAgdm9pZCBjcmVhdGVJbmRleChj
b25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkluZGV4SW5mbyYpOwotICAgIHZvaWQgZGVs
ZXRlSW5kZXgoY29uc3QgSURCUmVxdWVzdERhdGEmLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lKTsKLSAgICB2b2lkIHJlbmFtZUluZGV4KGNv
bnN0IElEQlJlcXVlc3REYXRhJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50
NjRfdCBpbmRleElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSk7Ci0gICAgdm9pZCBw
dXRPckFkZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleURhdGEmLCBjb25zdCBJ
REJWYWx1ZSYsIEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlKTsKLSAgICB2b2lk
IGdldFJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkdldFJlY29yZERhdGEm
KTsKLSAgICB2b2lkIGdldEFsbFJlY29yZHMoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJ
REJHZXRBbGxSZWNvcmRzRGF0YSYpOwotICAgIHZvaWQgZ2V0Q291bnQoY29uc3QgSURCUmVxdWVz
dERhdGEmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmKTsKLSAgICB2b2lkIGRlbGV0ZVJlY29yZChj
b25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYpOwotICAgIHZvaWQg
b3BlbkN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkN1cnNvckluZm8mKTsK
LSAgICB2b2lkIGl0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJJ
dGVyYXRlQ3Vyc29yRGF0YSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWJvcnQoKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFib3J0V2l0aG91dENhbGxiYWNrKCk7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBjb21taXQodWludDY0X3QgcGVuZGluZ1JlcXVlc3RDb3VudCk7CisKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3RE
YXRhJiwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBkZWxldGVPYmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IFN0cmluZyYg
b2JqZWN0U3RvcmVOYW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbmFtZU9iamVjdFN0
b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIG5ld05hbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJP
YmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0YSYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRl
bnRpZmllcik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjcmVhdGVJbmRleChjb25zdCBJREJS
ZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkluZGV4SW5mbyYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgZGVsZXRlSW5kZXgoY29uc3QgSURCUmVxdWVzdERhdGEmLCB1aW50NjRfdCBvYmplY3RTdG9y
ZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHJlbmFtZUluZGV4KGNvbnN0IElEQlJlcXVlc3REYXRhJiwgdWludDY0X3Qgb2JqZWN0
U3RvcmVJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRleElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
bmV3TmFtZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwdXRPckFkZChjb25zdCBJREJSZXF1
ZXN0RGF0YSYsIGNvbnN0IElEQktleURhdGEmLCBjb25zdCBJREJWYWx1ZSYsIEluZGV4ZWREQjo6
T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldFJl
Y29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkdldFJlY29yZERhdGEmKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldEFsbFJlY29yZHMoY29uc3QgSURCUmVxdWVzdERhdGEm
LCBjb25zdCBJREJHZXRBbGxSZWNvcmRzRGF0YSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
Z2V0Q291bnQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZVJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0
YSYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgb3Bl
bkN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkN1cnNvckluZm8mKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGl0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEm
LCBjb25zdCBJREJJdGVyYXRlQ3Vyc29yRGF0YSYpOwogCiAgICAgdm9pZCBkaWRBY3RpdmF0ZUlu
QmFja2luZ1N0b3JlKGNvbnN0IElEQkVycm9yJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJFcnJvci5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkVycm9yLmgKaW5kZXggZmYxN2M5OGE0MTE1ZGU2
MmNhY2M3MGFkMzI1MmJkNmVkZjExZjM5OS4uYjMwYWQzOTE3NmYwM2ZmMGQ2YzkzOThkNmIzZWQx
OWNkMmU5OTIxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2hhcmVkL0lEQkVycm9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2hhcmVkL0lEQkVycm9yLmgKQEAgLTUyLDYgKzUyLDcgQEAgcHVibGljOgogICAgIFN0cmluZyBt
ZXNzYWdlKCkgY29uc3Q7CiAKICAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuICFtX2Nv
ZGU7IH0KKyAgICBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gIWlzTnVsbCgpOyB9CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCBJREJFcnJvciBpc29sYXRlZENvcHkoKSBjb25zdDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVl
c3REYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVx
dWVzdERhdGEuaAppbmRleCAwMThjYjEzZTc1ZWI2NDVkZDExNGUyNGY2ZGJmZWEzNGNmNTViMTY0
Li4wMDE3ODdhNjY1OGE0MTc4YjZhNzk3MTI4YTA0ZGEzNmI4YWZkZmY0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERh
dGEuaApAQCAtNTYsOCArNTYsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgSURCUmVx
dWVzdERhdGEgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiAKICAgICBJREJDb25uZWN0aW9uSWRlbnRp
ZmllciBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpIGNvbnN0OwotICAgIElEQlJlc291cmNl
SWRlbnRpZmllciByZXF1ZXN0SWRlbnRpZmllcigpIGNvbnN0OwotICAgIElEQlJlc291cmNlSWRl
bnRpZmllciB0cmFuc2FjdGlvbklkZW50aWZpZXIoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBJREJSZXNvdXJjZUlkZW50aWZpZXIgcmVxdWVzdElkZW50aWZpZXIoKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBJREJSZXNvdXJjZUlkZW50aWZpZXIgdHJhbnNhY3Rpb25JZGVudGlmaWVy
KCkgY29uc3Q7CiAgICAgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyKCkgY29uc3Q7CiAg
ICAgdWludDY0X3QgaW5kZXhJZGVudGlmaWVyKCkgY29uc3Q7CiAgICAgSW5kZXhlZERCOjpJbmRl
eFJlY29yZFR5cGUgaW5kZXhSZWNvcmRUeXBlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzb3VyY2VJZGVudGlmaWVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzb3VyY2VJZGVu
dGlmaWVyLmgKaW5kZXggYmUxNjE5N2Y2MzRhNTk2YzM5ZTUxMzAyODU5MDY4MzU3NDU4NjgyYS4u
YmQzOTU0YTI4OTczY2ViOGE1YmY2NDhmNGFhNTEyM2YyZWZiZWY0NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc291cmNlSWRlbnRpZmll
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXNv
dXJjZUlkZW50aWZpZXIuaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgSURCUmVzb3Vy
Y2VJZGVudGlmaWVyKGNvbnN0IElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5JiwgY29uc3Qg
SURCUmVxdWVzdCYpOwogICAgIGV4cGxpY2l0IElEQlJlc291cmNlSWRlbnRpZmllcihjb25zdCBJ
REJTZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub0NsaWVudCYpOwogCi0gICAgc3RhdGljIElEQlJlc291
cmNlSWRlbnRpZmllciBlbXB0eVZhbHVlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIElE
QlJlc291cmNlSWRlbnRpZmllciBlbXB0eVZhbHVlKCk7CiAgICAgYm9vbCBpc0VtcHR5KCkgY29u
c3QKICAgICB7CiAgICAgICAgIHJldHVybiAhbV9yZXNvdXJjZU51bWJlciAmJiAhbV9pZGJDb25u
ZWN0aW9uSWRlbnRpZmllcjsKQEAgLTYwLDcgKzYwLDggQEAgcHVibGljOgogICAgICAgICB1aW50
NjRfdCBoYXNoQ29kZXNbMl0gPSB7IG1faWRiQ29ubmVjdGlvbklkZW50aWZpZXIudG9VSW50NjQo
KSwgbV9yZXNvdXJjZU51bWJlciB9OwogICAgICAgICByZXR1cm4gU3RyaW5nSGFzaGVyOjpoYXNo
TWVtb3J5PHNpemVvZihoYXNoQ29kZXMpPihoYXNoQ29kZXMpOwogICAgIH0KLSAgICAKKworICAg
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIG90aGVyKSBjb25z
dCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQogICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBJREJSZXNvdXJjZUlkZW50aWZpZXImIG90aGVyKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0
dXJuIG1faWRiQ29ubmVjdGlvbklkZW50aWZpZXIgPT0gb3RoZXIubV9pZGJDb25uZWN0aW9uSWRl
bnRpZmllcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IGJjNzIzMzZmYmZkZDRjMjk0ZGRjZDViNTIzNjM1OWI1OGQ1NzMwNzQuLjdk
ZDMwMzE1ZDQ5ZDVkN2ZmY2M1Mjk0N2YyYTlhOTlhZDU1NWEzMTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE1MzgsMTAgKzE1
MzgsMTAgQEAKIAkJNTExMjNFMkYyNzY5NDBDQTAwRjlENDFCIC8qIE5vdGlmaWNhdGlvbkRhdGEu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMTIzRTJD
Mjc2OTNDMzIwMEY5RDQxQiAvKiBOb3RpZmljYXRpb25EYXRhLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTExN0YzMEUyNUU2MTAyMDAwMkE5RjFF
IC8qIFJlbW90ZUNvbW1hbmRMaXN0ZW5lckNvY29hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTE3RjMwQzI1RTYxMDFGMDAyQTlGMUUgLyogUmVtb3Rl
Q29tbWFuZExpc3RlbmVyQ29jb2EuaCAqLzsgfTsKIAkJNTExRUMxMjgxQzUwQUFDQTAwMzJGOTgz
IC8qIElEQlNlcmlhbGl6YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxMUVDMTI2MUM1MEFBNTcwMDMyRjk4MyAvKiBJREJTZXJpYWxpemF0aW9u
LmggKi87IH07Ci0JCTUxMUVDMTJDMUM1MEFCQkYwMDMyRjk4MyAvKiBTUUxpdGVJREJUcmFuc2Fj
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEx
RUMxMkExQzUwQUJCQTAwMzJGOTgzIC8qIFNRTGl0ZUlEQlRyYW5zYWN0aW9uLmggKi87IH07CisJ
CTUxMUVDMTJDMUM1MEFCQkYwMDMyRjk4MyAvKiBTUUxpdGVJREJUcmFuc2FjdGlvbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExRUMxMkExQzUwQUJC
QTAwMzJGOTgzIC8qIFNRTGl0ZUlEQlRyYW5zYWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTExRUMxMzAxQzUwQUJGNTAwMzJGOTgzIC8q
IFNRTGl0ZUlEQkN1cnNvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTExRUMxMkUxQzUwQUJFQzAwMzJGOTgzIC8qIFNRTGl0ZUlEQkN1cnNvci5oICov
OyB9OwogCQk1MTIwQkJBRjFGMUNFQ0U3MDBFRkVCRjEgLyogQ29va2llU3RvcmFnZU9ic2VydmVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTIwQkJB
RDFGMUNFNzcwMDBFRkVCRjEgLyogQ29va2llU3RvcmFnZU9ic2VydmVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNTEyQkRCNEIxQzQ1NkZGQTAw
NjQ5NERGIC8qIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyQkRCNDkxQzQ1NkZBQjAwNjQ5NERGIC8qIFNRTGl0
ZUlEQkJhY2tpbmdTdG9yZS5oICovOyB9OworCQk1MTJCREI0QjFDNDU2RkZBMDA2NDk0REYgLyog
U1FMaXRlSURCQmFja2luZ1N0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTJCREI0OTFDNDU2RkFCMDA2NDk0REYgLyogU1FMaXRlSURCQmFja2lu
Z1N0b3JlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNTEyREQ4RjUwRDkxRTZBRjAwMEY4OUVFIC8qIExlZ2FjeVdlYkFyY2hpdmUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMkREOEVCMEQ5MUU2QUYw
MDBGODlFRSAvKiBMZWdhY3lXZWJBcmNoaXZlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTEyREQ4RjYwRDkxRTZBRjAwMEY4OUVFIC8qIEFyY2hp
dmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMkRE
OEVDMEQ5MUU2QUYwMDBGODlFRSAvKiBBcmNoaXZlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTEyREQ4RjgwRDkxRTZBRjAwMEY4OUVFIC8qIEFy
Y2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxMkREOEVFMEQ5MUU2QUYwMDBGODlFRSAvKiBBcmNoaXZlUmVzb3Vy
Y2VDb2xsZWN0aW9uLmggKi87IH07CkBAIC0xNTg3LDcgKzE1ODcsNyBAQAogCQk1MTZEN0Q3MjFC
QjVGMEJEMDBBRjdDNzcgLyogSURCQ29ubmVjdGlvblRvQ2xpZW50RGVsZWdhdGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNkQ3RDZFMUJCNUYwNjUw
MEFGN0M3NyAvKiBJREJDb25uZWN0aW9uVG9DbGllbnREZWxlZ2F0ZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxNkY3RjZEMUMzMUUzOUEwMEYx
MTFEQyAvKiBTZXJ2ZXJPcGVuREJSZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTZGN0Y2QzFDMzFDNzlEMDBGMTExREMgLyogU2VydmVyT3Bl
bkRCUmVxdWVzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTUxNzEzOEYwMUJFRDFEMUEwMDBENUYwMSAvKiBJbmRleEtleS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3MTM4RUUxQkVEMUQxNzAwMEQ1
RjAxIC8qIEluZGV4S2V5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKLQkJNTE3MTM4RjgxQkYxMjhCQjAwMEQ1RjAxIC8qIEluZGV4VmFsdWVTdG9yZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3MTM4RjYx
QkYxMjI2MjAwMEQ1RjAxIC8qIEluZGV4VmFsdWVTdG9yZS5oICovOyB9OworCQk1MTcxMzhGODFC
RjEyOEJCMDAwRDVGMDEgLyogSW5kZXhWYWx1ZVN0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTcxMzhGNjFCRjEyMjYyMDAwRDVGMDEgLyogSW5k
ZXhWYWx1ZVN0b3JlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNTE3MTM4RkMxQkYzQURGNDAwMEQ1RjAxIC8qIElEQkN1cnNvckluZm8uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNzEzOEZBMUJGM0FE
QUMwMDBENUYwMSAvKiBJREJDdXJzb3JJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE3MTM5MDYxQkY2NERFQzAwMEQ1RjAxIC8qIE1lbW9y
eU9iamVjdFN0b3JlQ3Vyc29yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTcxMzkwNDFCRjY0REUzMDAwRDVGMDEgLyogTWVtb3J5T2JqZWN0U3RvcmVD
dXJzb3IuaCAqLzsgfTsKIAkJNTE3MTM5MDgxQkY2NERFRjAwMEQ1RjAxIC8qIE1lbW9yeUN1cnNv
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3MTM5
MDIxQkY2NERFMzAwMEQ1RjAxIC8qIE1lbW9yeUN1cnNvci5oICovOyB9OwpAQCAtMTY2Myw3ICsx
NjYzLDcgQEAKIAkJNTFCOTE0MTAxRkQyNzgyRDAwRUUyODU5IC8qIFJlZ2lzdHJhdGlvbkRhdGFi
YXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUI5
MTQwQzFGRDI3ODI1MDBFRTI4NTkgLyogUmVnaXN0cmF0aW9uRGF0YWJhc2UuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUI5MTQxMTFGRDI3ODJE
MDBFRTI4NTkgLyogUmVnaXN0cmF0aW9uU3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQjkxNDBCMUZEMjc4MjUwMEVFMjg1OSAvKiBSZWdpc3Ry
YXRpb25TdG9yZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTUxQkE0QUM0MUJCQjVDRDgwMERGM0Q2RCAvKiBJREJEYXRhYmFzZUluZm8uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkE0QUMyMUJCQjVD
QkYwMERGM0Q2RCAvKiBJREJEYXRhYmFzZUluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk1MUJBNEFDQjFCQkM1QkQ5MDBERjNENkQgLyogTWVt
b3J5SURCQmFja2luZ1N0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MUJBNEFDOTFCQkM1QjlFMDBERjNENkQgLyogTWVtb3J5SURCQmFja2luZ1N0
b3JlLmggKi87IH07CisJCTUxQkE0QUNCMUJCQzVCRDkwMERGM0Q2RCAvKiBNZW1vcnlJREJCYWNr
aW5nU3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxQkE0QUM5MUJCQzVCOUUwMERGM0Q2RCAvKiBNZW1vcnlJREJCYWNraW5nU3RvcmUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUJBNEFDQzFC
QkM1QkREMDBERjNENkQgLyogSURCQmFja2luZ1N0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJBNEFDNzFCQkM1QUQ2MDBERjNENkQgLyogSURC
QmFja2luZ1N0b3JlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNTFCQTk0NzEyM0FDMzA1MzAwNDQ0ODQ2IC8qIFJ1bkphdmFTY3JpcHRQYXJhbWV0
ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJB
OTQ2RjIzQUMzMDUwMDA0NDQ4NDYgLyogUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUJDQ0UzMDFGOEYx
NzlFMDA2QkEwRUQgLyogU2VydmljZVdvcmtlclRocmVhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3Qzg3MTAxRjhFRTcyRTAwRUI4MDc2IC8qIFNl
cnZpY2VXb3JrZXJUaHJlYWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtMTY3OSw3ICsxNjc5LDcgQEAKIAkJNTFFMEJBQkIwREE1NTQ3MTAwQTlF
NDE3IC8qIFN0b3JhZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTFFMEJBQjkwREE1NTQ3MTAwQTlFNDE3IC8qIFN0b3JhZ2VFdmVudC5oICov
OyB9OwogCQk1MUUwQkFFQjBEQTU1RDRBMDBBOUU0MTcgLyogSlNTdG9yYWdlRXZlbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTBCQUU5MERBNTVE
NEEwMEE5RTQxNyAvKiBKU1N0b3JhZ2VFdmVudC5oICovOyB9OwogCQk1MUUwQkIzODBEQTVBQ0I2
MDBBOUU0MTcgLyogU3RvcmFnZU1hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTFFMEJCMzYwREE1QUNCNjAwQTlFNDE3IC8qIFN0b3JhZ2VNYXAuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk1MUUxQkFD
MzFCRDgwNjRFMDA1NUQ4MUYgLyogTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTFCQUMxMUJEODA2
NDcwMDU1RDgxRiAvKiBNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbi5oICovOyB9OworCQk1
MUUxQkFDMzFCRDgwNjRFMDA1NUQ4MUYgLyogTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTFCQUMx
MUJEODA2NDcwMDU1RDgxRiAvKiBNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbi5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxRTI2OTM3MURE
M0JEOUIwMDZCNkE1OCAvKiBJREJJdGVyYXRlQ3Vyc29yRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFMjY5MzUxREQzQkQ5MTAwNkI2QTU4IC8q
IElEQkl0ZXJhdGVDdXJzb3JEYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNTFFMzk5MDAxRDZFNDc1MDAwOUM4ODMxIC8qIEdhbWVDb250cm9s
bGVyR2FtZXBhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTFFMzk4RkMxRDZFNDc0QjAwOUM4ODMxIC8qIEdhbWVDb250cm9sbGVyR2FtZXBhZC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxRTM5OTAy
MUQ2RTQ3NTAwMDlDODgzMSAvKiBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFMzk4RkUxRDZFNDc0
QjAwOUM4ODMxIC8qIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE2ODksNyArMTY4OSw3IEBA
CiAJCTUxRUNDM0Y4MjAwNTg3QkYwMDQ4M0VBRSAvKiBNZXNzYWdlUG9ydENoYW5uZWxSZWdpc3Ry
eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFQ0Mz
RjEyMDA1ODdCNTAwNDgzRUFFIC8qIE1lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFFQ0MzRkQyMDA1
OTMwRDAwNDgzRUFFIC8qIE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUVDQzNGQjIwMDU5MzAxMDA0ODNF
QUUgLyogTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUVFN0IzODFBQTUwQjA1MDBGOTJCMjEgLyog
UmVzb3VyY2VMb2FkSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTFFRTdCMzcxQUE1MEIwNTAwRjkyQjIxIC8qIFJlc291cmNlTG9hZEluZm8uaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk1MUVFQUE3
NDFCRUZGQUIxMDAyMTgwMDggLyogSW5kZXhWYWx1ZUVudHJ5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUVFQUE3MjFCRUZGQTc5MDAyMTgwMDggLyog
SW5kZXhWYWx1ZUVudHJ5LmggKi87IH07CisJCTUxRUVBQTc0MUJFRkZBQjEwMDIxODAwOCAvKiBJ
bmRleFZhbHVlRW50cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxRUVBQTcyMUJFRkZBNzkwMDIxODAwOCAvKiBJbmRleFZhbHVlRW50cnkuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUYxNzRGRTFG
MzU4OTkyMDBDNzQ5NTAgLyogV29ya2VyVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGMTc0RkMxRjM1ODk4ODAwQzc0OTUwIC8qIFdvcmtlclR5
cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1
MUYxNzUwMzFGMzU4QjNCMDBDNzQ5NTAgLyogSlNTZXJ2aWNlV29ya2VyVXBkYXRlVmlhQ2FjaGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjE3NTAx
MUYzNThCMzYwMEM3NDk1MCAvKiBKU1NlcnZpY2VXb3JrZXJVcGRhdGVWaWFDYWNoZS5oICovOyB9
OwogCQk1MUYxNzUwNjFGMzU4QkY3MDBDNzQ5NTAgLyogSlNXb3JrZXJUeXBlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUYxNzUwNTFGMzU4QkRFMDBD
NzQ5NTAgLyogSlNXb3JrZXJUeXBlLmggKi87IH07CkBAIC0yOTg5LDYgKzI5ODksNyBAQAogCQk5
M0IyRDgxNjBGOTkyMEQyMDA2QUU2QjIgLyogU3VkZGVuVGVybWluYXRpb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjJEODE1MEY5OTIwRDIwMDZB
RTZCMiAvKiBTdWRkZW5UZXJtaW5hdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTkzQjM4RUMzMjU4MjFEQjQwMDE5OEU2MyAvKiBXZWJTcGVl
Y2hSZWNvZ25pemVyVGFzay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTNCMzhFQkEyNTgyMTkzQjAwMTk4RTYzIC8qIFdlYlNwZWVjaFJlY29nbml6ZXJU
YXNrLmggKi87IH07CiAJCTkzQjM4RUM0MjU4MjFEQjcwMDE5OEU2MyAvKiBXZWJTcGVlY2hSZWNv
Z25pemVyVGFza01vY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDkzQjM4RUJCMjU4MjE5M0QwMDE5OEU2MyAvKiBXZWJTcGVlY2hSZWNvZ25pemVyVGFz
a01vY2suaCAqLzsgfTsKKwkJOTNCNjMxRTIyN0FCQTFFNjAwNDQzQTQ0IC8qIFVuaXF1ZUlEQkRh
dGFiYXNlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTNCNjMxRTAyN0FCQTFFMjAwNDQzQTQ0IC8qIFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkz
QjZBMEU2MEIwQkNBNUMwMEY1MDI3QSAvKiBDb250ZXh0TWVudS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCNkEwRTUwQjBCQ0E1QzAwRjUwMjdBIC8q
IENvbnRleHRNZW51LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJOTNCNzBENjQwOUVCMEM3QzAwOUQ4NDY4IC8qIEpTRE9NQmluZGluZy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCNzBENDgwOUVCMEM3
QzAwOUQ4NDY4IC8qIEpTRE9NQmluZGluZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTkzQjcwRDZBMDlFQjBDN0MwMDlEODQ2OCAvKiBKU0V2ZW50
TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDkzQjcwRDRFMDlFQjBDN0MwMDlEODQ2OCAvKiBKU0V2ZW50TGlzdGVuZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTI4MTEsNiArMTI4MTIs
NyBAQAogCQk5M0IzOEVCQTI1ODIxOTNCMDAxOThFNjMgLyogV2ViU3BlZWNoUmVjb2duaXplclRh
c2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU3BlZWNoUmVjb2duaXpl
clRhc2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCMzhFQkIyNTgyMTkzRDAw
MTk4RTYzIC8qIFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jay5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJTcGVlY2hSZWNvZ25pemVyVGFza01vY2suaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCMzhFQkMyNTgyMTkzRTAwMTk4RTYzIC8qIFdlYlNwZWVj
aFJlY29nbml6ZXJUYXNrLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gV2ViU3BlZWNoUmVjb2duaXplclRhc2subW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTkzQjYzMUUwMjdBQkExRTIwMDQ0M0E0NCAvKiBVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVW5pcXVlSURCRGF0YWJhc2VNYW5h
Z2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQjZBMEU1MEIwQkNBNUMwMEY1
MDI3QSAvKiBDb250ZXh0TWVudS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q29udGV4dE1lbnUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCNzBENDgwOUVC
MEM3QzAwOUQ4NDY4IC8qIEpTRE9NQmluZGluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNET01CaW5kaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkz
QjcwRDREMDlFQjBDN0MwMDlEODQ2OCAvKiBKU0V2ZW50TGlzdGVuZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRXZlbnRMaXN0ZW5lci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMjExOSw2ICsyMjEyMSw3IEBACiAJCQkJNTE4ODY0REYx
QkJBRjMwRjAwRTU0MEM5IC8qIFVuaXF1ZUlEQkRhdGFiYXNlLmggKi8sCiAJCQkJNTE5OEY3QTIx
QkJEQUEyOTAwRTJDQzVGIC8qIFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5jcHAgKi8sCiAJ
CQkJNTE5OEY3QTMxQkJEQUEyOTAwRTJDQzVGIC8qIFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlv
bi5oICovLAorCQkJCTkzQjYzMUUwMjdBQkExRTIwMDQ0M0E0NCAvKiBVbmlxdWVJREJEYXRhYmFz
ZU1hbmFnZXIuaCAqLywKIAkJCQk1MTk4RjdBNjFCQkREMzgxMDBFMkNDNUYgLyogVW5pcXVlSURC
RGF0YWJhc2VUcmFuc2FjdGlvbi5jcHAgKi8sCiAJCQkJNTE5OEY3QTcxQkJERDM4MTAwRTJDQzVG
IC8qIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uaCAqLywKIAkJCSk7CkBAIC0zNzczMSw2
ICszNzczNCw3IEBACiAJCQkJQTg2M0UyMDExMzQzNDEyMDAwMjc0OTI2IC8qIFVuaWNvZGVCaWRp
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTg4NjRFMTFCQkFGNTc0MDBFNTQwQzkgLyogVW5pcXVl
SURCRGF0YWJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxOThGN0E1MUJCREI3OTMwMEUyQ0M1
RiAvKiBVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTkz
QjYzMUUyMjdBQkExRTYwMDQ0M0E0NCAvKiBVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTUxOThGN0E5MUJCREQzODUwMEUyQ0M1RiAvKiBVbmlxdWVJREJEYXRh
YmFzZVRyYW5zYWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNEFGQ0ZBNTBEQUYyOUEzMDBG
NUY1NUMgLyogVW5pdEJlemllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzE4Q0MwQTQyNTgwRUZC
MTAwM0Q3NUZCIC8qIFVuaXZlcnNhbEFjY2Vzc1pvb20uaCBpbiBIZWFkZXJzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCA2ODdjOGRiNjkxMmM4MzZjNzAxNWQxMjIzNTFjMTAw
ZDU5YTYxYzBkLi4yZDQxOThhNGFkZTI2NWYwZjQ5YTg0Y2JhN2JhZmNhNWVkMjNlODljIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtNTIsMTMgKzUyLDEzIEBACiAjaW5jbHVkZSAi
TmV0d29ya1NvY2tldENoYW5uZWxNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtTb2NrZXRT
dHJlYW0uaCIKICNpbmNsdWRlICJOZXR3b3JrU29ja2V0U3RyZWFtTWVzc2FnZXMuaCIKKyNpbmNs
dWRlICJOZXR3b3JrU3RvcmFnZU1hbmFnZXIuaCIKICNpbmNsdWRlICJQaW5nTG9hZC5oIgogI2lu
Y2x1ZGUgIlByZWNvbm5lY3RUYXNrLmgiCiAjaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWxSZW1vdGVN
YW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrTWVzc2FnZXMu
aCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJFcnJv
cnMuaCIKLSNpbmNsdWRlICJXZWJJREJTZXJ2ZXIuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVz
c2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAi
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCkBAIC0zOTAsOCArMzkwLDEyIEBAIGJv
b2wgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lCiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OnVwZGF0ZVF1b3RhQmFzZWRPblNwYWNlVXNhZ2VGb3JUZXN0aW5nKGNvbnN0IENsaWVudE9y
aWdpbiYgb3JpZ2luKQogewotICAgIGF1dG8gc3RvcmFnZVF1b3RhTWFuYWdlciA9IG1fbmV0d29y
a1Byb2Nlc3MtPnN0b3JhZ2VRdW90YU1hbmFnZXIoc2Vzc2lvbklEKCksIG9yaWdpbik7Ci0gICAg
c3RvcmFnZVF1b3RhTWFuYWdlci0+cmVzZXRRdW90YVVwZGF0ZWRCYXNlZE9uVXNhZ2VGb3JUZXN0
aW5nKCk7CisgICAgYXV0byogc2Vzc2lvbiA9IG1fbmV0d29ya1Byb2Nlc3MtPm5ldHdvcmtTZXNz
aW9uKHNlc3Npb25JRCgpKTsKKyAgICBpZiAoIXNlc3Npb24pCisgICAgICAgIHJldHVybjsKKwor
ICAgIGlmIChhdXRvKiBzdG9yYWdlTWFuYWdlciA9IHNlc3Npb24tPnN0b3JhZ2VNYW5hZ2VyKCkp
CisgICAgICAgIHN0b3JhZ2VNYW5hZ2VyLT5yZXNldFF1b3RhVXBkYXRlZEJhc2VkT25Vc2FnZUZv
clRlc3Rpbmcob3JpZ2luKTsKIH0KIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQpAQCAtOTgzLDggKzk4Nywx
MCBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp3cml0ZUJsb2JzVG9UZW1w
b3JhcnlGaWxlc0ZvckluZGV4ZWREQihjb25zdAogICAgICAgICBmb3IgKGF1dG8mIGZpbGUgOiBm
aWxlUmVmZXJlbmNlcykKICAgICAgICAgICAgIGZpbGUtPnJldm9rZUZpbGVBY2Nlc3MoKTsKIAot
ICAgICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKCkpCi0gICAgICAgICAg
ICBzZXNzaW9uLT5lbnN1cmVXZWJJREJTZXJ2ZXIoKS5yZWdpc3RlclRlbXBvcmFyeUJsb2JGaWxl
UGF0aHMobV9jb25uZWN0aW9uLCBmaWxlUGF0aHMpOworICAgICAgICBpZiAoYXV0byogc2Vzc2lv
biA9IG5ldHdvcmtTZXNzaW9uKCkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBzdG9yYWdlTWFu
YWdlciA9IHNlc3Npb24tPnN0b3JhZ2VNYW5hZ2VyKCkpCisgICAgICAgICAgICAgICAgc3RvcmFn
ZU1hbmFnZXItPnJlZ2lzdGVyVGVtcG9yYXJ5QmxvYkZpbGVQYXRocyhtX2Nvbm5lY3Rpb24sIGZp
bGVQYXRocyk7CisgICAgICAgIH0KICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShm
aWxlUGF0aHMpKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggN2M3OWUyYTIwOTc2YTEzOWM3ZjY2N2YxMTNjNDg5
NDZkZWRkNTY0MS4uMTExODFlMjc4YjgyN2U3YzYwMTZkMDEwYmUyYWIyNjYzMWY0ZmU0MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAg
LTI2NCw4ICsyNjQsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkaWRDbG9zZShJUEM6OkNvbm5l
Y3Rpb24mKQogICAgIC8vIE1ha2Ugc3VyZSB3ZSBmbHVzaCBhbGwgY29va2llcyB0byBkaXNrIGJl
Zm9yZSBleGl0aW5nLgogICAgIGZvckVhY2hOZXR3b3JrU2Vzc2lvbihbJl0gKGF1dG8mIHNlc3Np
b24pIHsKICAgICAgICAgcGxhdGZvcm1GbHVzaENvb2tpZXMoc2Vzc2lvbi5zZXNzaW9uSUQoKSwg
W2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKLSAgICAgICAgLy8gTWFrZSBzdXJlIHJlZmVyZW5j
ZSB0byBOZXR3b3JrUHJvY2VzcyBpbiBzcGFjZVJlcXVlc3RlciBpcyByZW1vdmVkLgotICAgICAg
ICBzZXNzaW9uLmNsb3NlSURCU2VydmVyKFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiAgICAg
fSk7CiB9CiAKQEAgLTM4Miw3ICszODAsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjcmVhdGVO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhQcm9jZXNzSWRlbnRpZmllciBpZGVudAogICAg
IGNvbm5lY3Rpb24uc2V0T25MaW5lU3RhdGUoTmV0d29ya1N0YXRlTm90aWZpZXI6OnNpbmdsZXRv
bigpLm9uTGluZSgpKTsKIAogICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24o
c2Vzc2lvbklEKSkgewotICAgICAgICBzZXNzaW9uLT5lbnN1cmVXZWJJREJTZXJ2ZXIoKS5hZGRD
b25uZWN0aW9uKGNvbm5lY3Rpb24uY29ubmVjdGlvbigpLCBpZGVudGlmaWVyKTsKICAgICAgICAg
aWYgKGF1dG8qIG1hbmFnZXIgPSBzZXNzaW9uLT5zdG9yYWdlTWFuYWdlcigpKQogICAgICAgICAg
ICAgbWFuYWdlci0+c3RhcnRSZWNlaXZpbmdNZXNzYWdlRnJvbUNvbm5lY3Rpb24oY29ubmVjdGlv
bi5jb25uZWN0aW9uKCkpOwogICAgIH0KQEAgLTQwNiw4ICs0MDMsNyBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjphZGRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJiYg
cGFyYW1ldGVycwogICAgIGFkZFNlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2VyKHNlc3Npb25JRCwg
cGFyYW1ldGVycy5wZXJPcmlnaW5TdG9yYWdlUXVvdGEsIHBhcmFtZXRlcnMucGVyVGhpcmRQYXJ0
eU9yaWdpblN0b3JhZ2VRdW90YSwgcGFyYW1ldGVycy5jYWNoZVN0b3JhZ2VEaXJlY3RvcnksIHBh
cmFtZXRlcnMuY2FjaGVTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKIAogICAgIGlm
IChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICBz
ZXNzaW9uLT5hZGRTdG9yYWdlTWFuYWdlclNlc3Npb24ocGFyYW1ldGVycy5nZW5lcmFsU3RvcmFn
ZURpcmVjdG9yeSwgcGFyYW1ldGVycy5nZW5lcmFsU3RvcmFnZURpcmVjdG9yeUhhbmRsZSwgcGFy
YW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnksIHBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGly
ZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKLSAgICAgICAgc2Vzc2lvbi0+YWRkSW5kZXhlZERhdGFi
YXNlU2Vzc2lvbihwYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSwgcGFyYW1ldGVy
cy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOworICAgICAgICBzZXNz
aW9uLT5hZGRTdG9yYWdlTWFuYWdlclNlc3Npb24ocGFyYW1ldGVycy5nZW5lcmFsU3RvcmFnZURp
cmVjdG9yeSwgcGFyYW1ldGVycy5nZW5lcmFsU3RvcmFnZURpcmVjdG9yeUhhbmRsZSwgcGFyYW1l
dGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnksIHBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0
b3J5RXh0ZW5zaW9uSGFuZGxlLCBwYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSwg
cGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUsIHBhcmFt
ZXRlcnMuY2FjaGVTdG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLnBlck9yaWdpblN0b3JhZ2VR
dW90YSwgcGFyYW1ldGVycy5wZXJUaGlyZFBhcnR5T3JpZ2luU3RvcmFnZVF1b3RhKTsKICNpZiBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgICAgIHNlc3Npb24tPmFkZFNlcnZpY2VXb3JrZXJT
ZXNzaW9uKHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5h
YmxlZCwgV1RGTW92ZShwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rv
cnkpLCBwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRlbnNp
b25IYW5kbGUpOwogI2VuZGlmCkBAIC0xNDUyLDEzICsxNDQ4LDYgQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNl
dDxXZWJzaXQKICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX3dlYnNpdGVEYXRhLmhvc3RO
YW1lc1dpdGhIU1RTQ2FjaGUgPSBob3N0TmFtZXNXaXRoSFNUU0NhY2hlKHNlc3Npb25JRCk7CiAj
ZW5kaWYKIAotICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlw
ZTo6SW5kZXhlZERCRGF0YWJhc2VzKSAmJiBzZXNzaW9uICYmIHNlc3Npb24tPmhhc0lEQkRhdGFi
YXNlUGF0aCgpKSB7Ci0gICAgICAgIHNlc3Npb24tPmVuc3VyZVdlYklEQlNlcnZlcigpLmdldE9y
aWdpbnMoW2NhbGxiYWNrQWdncmVnYXRvcl0oYXV0byYmIG9yaWdpbnMpIHsKLSAgICAgICAgICAg
IHdoaWxlICghb3JpZ2lucy5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dy
ZWdhdG9yLT5tX3dlYnNpdGVEYXRhLmVudHJpZXMuYXBwZW5kKHsgb3JpZ2lucy50YWtlQW55KCks
IFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzLCAwIH0pOwotICAgICAgICB9KTsK
LSAgICB9Ci0KICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgaWYgKHdlYnNpdGVEYXRh
VHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
cykgJiYgc2Vzc2lvbiAmJiBzZXNzaW9uLT5oYXNTZXJ2aWNlV29ya2VyRGF0YWJhc2VQYXRoKCkp
IHsKICAgICAgICAgc2Vzc2lvbi0+ZW5zdXJlU1dTZXJ2ZXIoKS5nZXRPcmlnaW5zV2l0aFJlZ2lz
dHJhdGlvbnMoW2NhbGxiYWNrQWdncmVnYXRvcl0oY29uc3QgSGFzaFNldDxTZWN1cml0eU9yaWdp
bkRhdGE+JiBzZWN1cml0eU9yaWdpbnMpIG11dGFibGUgewpAQCAtMTUyNSw5ICsxNTE0LDYgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBPcHRpb25TZXQ8V2Vic2kKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlu
cyhXZWJzaXRlRGF0YVR5cGU6OkRPTUNhY2hlKSAmJiBzZXNzaW9uKQogICAgICAgICBDYWNoZVN0
b3JhZ2U6OkVuZ2luZTo6Y2xlYXJBbGxDYWNoZXMoKnNlc3Npb24sIFtjbGVhclRhc2tzSGFuZGxl
cl0geyB9KTsKIAotICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRh
VHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKSAmJiAhc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkgJiYg
c2Vzc2lvbikKLSAgICAgICAgc2Vzc2lvbi0+ZW5zdXJlV2ViSURCU2VydmVyKCkuY2xvc2VBbmRE
ZWxldGVEYXRhYmFzZXNNb2RpZmllZFNpbmNlKG1vZGlmaWVkU2luY2UsIFtjbGVhclRhc2tzSGFu
ZGxlcl0geyB9KTsKLQogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBib29sIGNsZWFy
U2VydmljZVdvcmtlcnMgPSB3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlw
ZTo6RE9NQ2FjaGUpIHx8IHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBl
OjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucyk7CiAgICAgaWYgKGNsZWFyU2VydmljZVdvcmtl
cnMgJiYgIXNlc3Npb25JRC5pc0VwaGVtZXJhbCgpICYmIHNlc3Npb24pCkBAIC0xNjIwLDkgKzE2
MDYsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpbwogICAgICAgICAgICAgQ2FjaGVTdG9yYWdl
OjpFbmdpbmU6OmNsZWFyQ2FjaGVzRm9yT3JpZ2luKCpzZXNzaW9uLCBTZWN1cml0eU9yaWdpbkRh
dGEgeyBvcmlnaW5EYXRhIH0sIFtjbGVhclRhc2tzSGFuZGxlcl0geyB9KTsKICAgICB9CiAKLSAg
ICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWRE
QkRhdGFiYXNlcykgJiYgIXNlc3Npb25JRC5pc0VwaGVtZXJhbCgpICYmIHNlc3Npb24pCi0gICAg
ICAgIHNlc3Npb24tPmVuc3VyZVdlYklEQlNlcnZlcigpLmNsb3NlQW5kRGVsZXRlRGF0YWJhc2Vz
Rm9yT3JpZ2lucyhvcmlnaW5EYXRhcywgW2NsZWFyVGFza3NIYW5kbGVyXSB7IH0pOwotCiAjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGJvb2wgY2xlYXJTZXJ2aWNlV29ya2VycyA9IHdl
YnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSkgfHwgd2Vi
c2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25zKTsKICAgICBpZiAoY2xlYXJTZXJ2aWNlV29ya2VycyAmJiAhc2Vzc2lvbklELmlz
RXBoZW1lcmFsKCkgJiYgc2Vzc2lvbikgewpAQCAtMTgxMSwxNyArMTc5NCw2IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OmRlbGV0ZUFuZFJlc3RyaWN0V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURv
bWFpbnMoUEFMOjpTZXNzCiAgICAgICAgICAgICB9CiAgICAgICAgIH0pOwogICAgIH0KLQotICAg
IGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERC
RGF0YWJhc2VzKSAmJiBzZXNzaW9uICYmIHNlc3Npb24tPmhhc0lEQkRhdGFiYXNlUGF0aCgpKSB7
Ci0gICAgICAgIHNlc3Npb24tPmVuc3VyZVdlYklEQlNlcnZlcigpLmdldE9yaWdpbnMoW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBzZXNzaW9uSUQsIGNhbGxiYWNrQWdncmVn
YXRvciwgZG9tYWluc1RvRGVsZXRlQWxsTm9uQ29va2llV2Vic2l0ZURhdGFGb3JdKGF1dG8mJiBv
cmlnaW5zKSB7Ci0gICAgICAgICAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vz
c2lvbklEKTsKLSAgICAgICAgICAgIGlmICghc2Vzc2lvbiB8fCAhc2Vzc2lvbi0+d2ViSURCU2Vy
dmVyKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICBhdXRvIG9yaWdp
bnNUb0RlbGV0ZSA9IGZpbHRlckZvclJlZ2lzdHJhYmxlRG9tYWlucyhvcmlnaW5zLCBkb21haW5z
VG9EZWxldGVBbGxOb25Db29raWVXZWJzaXRlRGF0YUZvciwgY2FsbGJhY2tBZ2dyZWdhdG9yLT5t
X2RvbWFpbnMpOwotICAgICAgICAgICAgc2Vzc2lvbi0+d2ViSURCU2VydmVyKCktPmNsb3NlQW5k
RGVsZXRlRGF0YWJhc2VzRm9yT3JpZ2lucyhvcmlnaW5zVG9EZWxldGUsIFtjYWxsYmFja0FnZ3Jl
Z2F0b3JdIHsgfSk7Ci0gICAgICAgIH0pOwotICAgIH0KICAgICAKICNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCiAgICAgYm9vbCBjbGVhclNlcnZpY2VXb3JrZXJzID0gd2Vic2l0ZURhdGFUeXBl
cy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkRPTUNhY2hlKSB8fCB3ZWJzaXRlRGF0YVR5cGVz
LmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMpOwpA
QCAtMTk1OCwxMyArMTkzMCw2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlZ2lzdHJhYmxlRG9t
YWluc1dpdGhXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsCiAgICAgICAgIH0p
OwogICAgIH0KICAgICAKLSAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRl
RGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykgJiYgc2Vzc2lvbiAmJiBzZXNzaW9uLT5oYXNJ
REJEYXRhYmFzZVBhdGgoKSkgewotICAgICAgICBzZXNzaW9uLT5lbnN1cmVXZWJJREJTZXJ2ZXIo
KS5nZXRPcmlnaW5zKFtjYWxsYmFja0FnZ3JlZ2F0b3JdKGF1dG8mJiBvcmlnaW5zKSB7Ci0gICAg
ICAgICAgICB3aGlsZSAoIW9yaWdpbnMuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIGNhbGxi
YWNrQWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVuZCh7IG9yaWdpbnMudGFr
ZUFueSgpLCBXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcywgMCB9KTsKLSAgICAg
ICAgfSk7Ci0gICAgfQotICAgIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBpZiAo
d2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25zKSAmJiBzZXNzaW9uICYmIHNlc3Npb24tPmhhc1NlcnZpY2VXb3JrZXJEYXRh
YmFzZVBhdGgoKSkgewogICAgICAgICBzZXNzaW9uLT5lbnN1cmVTV1NlcnZlcigpLmdldE9yaWdp
bnNXaXRoUmVnaXN0cmF0aW9ucyhbY2FsbGJhY2tBZ2dyZWdhdG9yXShjb25zdCBIYXNoU2V0PFNl
Y3VyaXR5T3JpZ2luRGF0YT4mIHNlY3VyaXR5T3JpZ2lucykgbXV0YWJsZSB7CkBAIC0yMTI5LDQz
ICsyMDk0LDEwIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnByb2Nlc3NXaWxsU3VzcGVuZEltbWlu
ZW50bHlGb3JUZXN0aW5nU3luYyhDb21wbGV0aW9uSGFuZGxlCiAgICAgcHJlcGFyZVRvU3VzcGVu
ZCh0cnVlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgTmV0d29ya1By
b2Nlc3M6OnN1c3BlbmRJREJTZXJ2ZXJzKGJvb2wgaXNTdXNwZW5zaW9uSW1taW5lbnQpCi17Ci0g
ICAgbV9zaG91bGRTdXNwZW5kSURCU2VydmVycyA9IHRydWU7Ci0gICAgKyttX3N1c3BlbnNpb25J
ZGVudGlmaWVyOwotCi0gICAgYm9vbCBhbGxTdXNwZW5kZWQgPSB0cnVlOwotICAgIGF1dG8gY29u
ZGl0aW9uID0gaXNTdXNwZW5zaW9uSW1taW5lbnQgPyBXZWJJREJTZXJ2ZXI6OlN1c3BlbnNpb25D
b25kaXRpb246OkFsd2F5cyA6IFdlYklEQlNlcnZlcjo6U3VzcGVuc2lvbkNvbmRpdGlvbjo6SWZJ
ZGxlOwotICAgIGZvckVhY2hOZXR3b3JrU2Vzc2lvbihbJl0oYXV0byYgc2Vzc2lvbikgewotICAg
ICAgICBpZiAoYXV0byogc2VydmVyID0gc2Vzc2lvbi53ZWJJREJTZXJ2ZXIoKSkKLSAgICAgICAg
ICAgIGFsbFN1c3BlbmRlZCAmPSBzZXJ2ZXItPnN1c3BlbmQoY29uZGl0aW9uKTsKLSAgICB9KTsK
LQotICAgIGlmIChhbGxTdXNwZW5kZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaEFmdGVyKDVfcywgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0
aGlzIH0sIHN1c3BlbnNpb25JZGVudGlmaWVyID0gbV9zdXNwZW5zaW9uSWRlbnRpZmllcl0gewot
ICAgICAgICBpZiAoIXdlYWtUaGlzKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlm
ICghbV9zaG91bGRTdXNwZW5kSURCU2VydmVycyB8fCBzdXNwZW5zaW9uSWRlbnRpZmllciAhPSBt
X3N1c3BlbnNpb25JZGVudGlmaWVyKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGZv
ckVhY2hOZXR3b3JrU2Vzc2lvbihbXShhdXRvJiBzZXNzaW9uKSB7Ci0gICAgICAgICAgICBpZiAo
YXV0byogc2VydmVyID0gc2Vzc2lvbi53ZWJJREJTZXJ2ZXIoKSkKLSAgICAgICAgICAgICAgICBz
ZXJ2ZXItPnN1c3BlbmQoV2ViSURCU2VydmVyOjpTdXNwZW5zaW9uQ29uZGl0aW9uOjpBbHdheXMp
OwotICAgICAgICB9KTsKLSAgICB9KTsKLX0KLQogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlcGFy
ZVRvU3VzcGVuZChib29sIGlzU3VzcGVuc2lvbkltbWluZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1
c3BlbnNpb24sICIlcCAtIE5ldHdvcmtQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5kKCksIGlzU3Vz
cGVuc2lvbkltbWluZW50PSVkIiwgdGhpcywgaXNTdXNwZW5zaW9uSW1taW5lbnQpOwogCi0jaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBzdXNwZW5kSURCU2VydmVycyhpc1N1c3BlbnNpb25J
bW1pbmVudCk7Ci0jZW5kaWYKLQogICAgIGxvd01lbW9yeUhhbmRsZXIoQ3JpdGljYWw6Olllcyk7
CiAKICAgICBSZWZQdHI8Q2FsbGJhY2tBZ2dyZWdhdG9yPiBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBD
YWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShbdGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKQEAgLTIyMjMsMTggKzIxNTUsMTAg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVzdW1lKCkKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCiAgICAgICAgIGlmIChhdXRvKiBzd1NlcnZlciA9IHNlc3Npb24uc3dTZXJ2ZXIoKSkKICAg
ICAgICAgICAgIHN3U2VydmVyLT5lbmRTdXNwZW5zaW9uKCk7Ci0jZW5kaWYKLSNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQotICAgICAgICBpZiAoYXV0byogc2VydmVyID0gc2Vzc2lvbi53ZWJJREJT
ZXJ2ZXIoKSkKLSAgICAgICAgICAgIHNlcnZlci0+cmVzdW1lKCk7CiAjZW5kaWYKICAgICAgICAg
aWYgKGF1dG8qIG1hbmFnZXIgPSBzZXNzaW9uLnN0b3JhZ2VNYW5hZ2VyKCkpCiAgICAgICAgICAg
ICBtYW5hZ2VyLT5yZXN1bWUoKTsKICAgICB9KTsKLQotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
Ci0gICAgbV9zaG91bGRTdXNwZW5kSURCU2VydmVycyA9IGZhbHNlOwotI2VuZGlmCiB9CiAKIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OnByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCkBA
IC0yMjgxLDEyICsyMjA1LDEyIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnN5bmNMb2NhbFN0b3Jh
Z2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kCiAKIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OnJlc2V0UXVvdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgTG9ja2VyIGxv
Y2tlciB7IG1fc2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXJzTG9jayB9OwotICAgIGlmIChhdXRv
KiBzZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlciA9IG1fc2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFn
ZXJzLmdldChzZXNzaW9uSUQpKSB7Ci0gICAgICAgIGZvciAoYXV0byBzdG9yYWdlUXVvdGFNYW5h
Z2VyIDogc2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXItPmV4aXN0aW5nU3RvcmFnZVF1b3RhTWFu
YWdlcnMoKSkKLSAgICAgICAgICAgIHN0b3JhZ2VRdW90YU1hbmFnZXItPnJlc2V0UXVvdGFGb3JU
ZXN0aW5nKCk7Ci0gICAgfQotICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgYXV0byogc2Vz
c2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7CisgICAgaWYgKCFzZXNzaW9uKQorICAg
ICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoKTsKKworICAgIGlmIChhdXRvKiBzdG9yYWdl
TWFuYWdlciA9IHNlc3Npb24tPnN0b3JhZ2VNYW5hZ2VyKCkpCisgICAgICAgIHN0b3JhZ2VNYW5h
Z2VyLT5yZXNldFF1b3RhRm9yVGVzdGluZyhXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9
CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNsZWFyU3RvcmFnZShQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAg
LTIyOTgsNiArMjIyMiwxNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVhclN0b3JhZ2UoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2bwogICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcigpOwogfQogCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpkaWRJbmNyZWFzZVF1
b3RhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4s
IFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllciBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiBuZXdRdW90YSkKK3sKKyAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Np
b24oc2Vzc2lvbklEKTsKKyAgICBpZiAoIXNlc3Npb24pCisgICAgICAgIHJldHVybjsKKworICAg
IGlmIChhdXRvKiBtYW5hZ2VyID0gc2Vzc2lvbi0+c3RvcmFnZU1hbmFnZXIoKSkKKyAgICAgICAg
bWFuYWdlci0+ZGlkSW5jcmVhc2VRdW90YShvcmlnaW4sIGlkZW50aWZpZXIsIG5ld1F1b3RhKTsK
K30KKwogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVuYW1lT3JpZ2luSW5XZWJzaXRlRGF0YShQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgb2xkTmFtZSwgY29uc3QgVVJMJiBuZXdO
YW1lLCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvIGFnZ3JlZ2F0b3Ig
PSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CkBAIC0yMzEwLDkgKzIyNDQsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZW5hbWVPcmlnaW5J
bldlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVQogICAgIGF1dG8q
IHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOwogICAgIGlmIChhdXRvKiBtYW5h
Z2VyID0gc2Vzc2lvbiA/IHNlc3Npb24tPnN0b3JhZ2VNYW5hZ2VyKCkgOiBudWxscHRyKQogICAg
ICAgICBtYW5hZ2VyLT5tb3ZlRGF0YShvbGRPcmlnaW4sIG5ld09yaWdpbiwgW2FnZ3JlZ2F0b3Jd
IHsgfSk7Ci0KLSAgICBpZiAoZGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5k
ZXhlZERCRGF0YWJhc2VzKSAmJiBzZXNzaW9uICYmIHNlc3Npb24tPmhhc0lEQkRhdGFiYXNlUGF0
aCgpKQotICAgICAgICBzZXNzaW9uLT5lbnN1cmVXZWJJREJTZXJ2ZXIoKS5yZW5hbWVPcmlnaW4o
b2xkT3JpZ2luLCBuZXdPcmlnaW4sIFthZ2dyZWdhdG9yXSB7IH0pOwogfQogCiAjaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQpAQCAtMjM3Miw3ICsyMzAzLDggQEAgUmVmUHRyPFN0b3JhZ2VRdW90
YU1hbmFnZXI+IE5ldHdvcmtQcm9jZXNzOjpzdG9yYWdlUXVvdGFNYW5hZ2VyKFBBTDo6U2Vzc2lv
bklEIHMKICAgICBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpVc2FnZUdldHRlciB1c2FnZUdldHRlciA9
IFtjYWNoZVJvb3RQYXRoID0gc2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXItPmNhY2hlUm9vdFBh
dGgoKS5pc29sYXRlZENvcHkoKSwgaWRiUm9vdFBhdGggPSBpZGJSb290UGF0aC5pc29sYXRlZENv
cHkoKSwgb3JpZ2luID0gb3JpZ2luLmlzb2xhdGVkQ29weSgpXSgpIHsKICAgICAgICAgQVNTRVJU
KCFpc01haW5SdW5Mb29wKCkpOwogCi0gICAgICAgIHJldHVybiBDYWNoZVN0b3JhZ2U6OkVuZ2lu
ZTo6ZGlza1VzYWdlKGNhY2hlUm9vdFBhdGgsIG9yaWdpbikgKyBJREJTZXJ2ZXI6OklEQlNlcnZl
cjo6ZGlza1VzYWdlKGlkYlJvb3RQYXRoLCBvcmlnaW4pOworICAgICAgICBhdXRvIGNhY2hlU3Rv
cmFnZVBhdGggPSBDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6c3RvcmFnZVBhdGgoY2FjaGVSb290UGF0
aCwgb3JpZ2luKTsKKyAgICAgICAgcmV0dXJuIENhY2hlU3RvcmFnZTo6RW5naW5lOjpkaXNrVXNh
Z2UoY2FjaGVTdG9yYWdlUGF0aCkgKyBJREJTZXJ2ZXI6OklEQlNlcnZlcjo6ZGlza1VzYWdlKGlk
YlJvb3RQYXRoLCBvcmlnaW4pOwogICAgIH07CiAgICAgU3RvcmFnZVF1b3RhTWFuYWdlcjo6UXVv
dGFJbmNyZWFzZVJlcXVlc3RlciBxdW90YUluY3JlYXNlUmVxdWVzdGVyID0gW3RoaXMsIHdlYWtU
aGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHNlc3Npb25JRCwgb3JpZ2luXSAodWludDY0X3QgY3Vy
cmVudFF1b3RhLCB1aW50NjRfdCBjdXJyZW50U3BhY2UsIHVpbnQ2NF90IHJlcXVlc3RlZEluY3Jl
YXNlLCBhdXRvJiYgY2FsbGJhY2spIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7
CkBAIC0yNTg2LDggKzI1MTgsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZW1vdmVLZXB0QWxp
dmVMb2FkKE5ldHdvcmtSZXNvdXJjZUxvYWRlciYgbG9hZGVyKQogdm9pZCBOZXR3b3JrUHJvY2Vz
czo6Y29ubmVjdGlvblRvV2ViUHJvY2Vzc0Nsb3NlZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9
IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHNlcnZlciA9
IHNlc3Npb24tPndlYklEQlNlcnZlcigpKQotICAgICAgICAgICAgc2VydmVyLT5yZW1vdmVDb25u
ZWN0aW9uKGNvbm5lY3Rpb24pOwogICAgICAgICBpZiAoYXV0byogbWFuYWdlciA9IHNlc3Npb24t
PnN0b3JhZ2VNYW5hZ2VyKCkpCiAgICAgICAgICAgICBtYW5hZ2VyLT5zdG9wUmVjZWl2aW5nTWVz
c2FnZUZyb21Db25uZWN0aW9uKGNvbm5lY3Rpb24pOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCA3ODc3OTI3YTE3YzU1OTZlYjAz
YmQ0YWNmNGQ1OGU0MThhYzhiYTIzLi4wZjg1MzNlZDEzZGQyNjI3N2E2ZGQ1MmFiNmRhYmUyMGMz
ZTA4ODA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFj
a2VyLmgiCiAjaW5jbHVkZSAiTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuaCIKICNpbmNs
dWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlF1b3RhSW5j
cmVhc2VSZXF1ZXN0SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVsUmVtb3Rl
TWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUg
IldlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCIKQEAgLTI4OCwxMiArMjg5LDExIEBAIHB1YmxpYzoK
ICAgICBOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlciYgbmV0d29ya0NvbnRlbnRSdWxlTGlz
dE1hbmFnZXIoKSB7IHJldHVybiBtX25ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyOyB9CiAj
ZW5kaWYKIAotICAgIGJvb2wgc2hvdWxkU3VzcGVuZElEQlNlcnZlcnMoKSBjb25zdCB7IHJldHVy
biBtX3Nob3VsZFN1c3BlbmRJREJTZXJ2ZXJzOyB9Ci0KICAgICB2b2lkIHN5bmNMb2NhbFN0b3Jh
Z2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAogICAgIHZvaWQgcmVzZXRRdW90YShQ
QUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGNs
ZWFyU3RvcmFnZShQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
KyAgICB2b2lkIGRpZEluY3JlYXNlUXVvdGEoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6
OkNsaWVudE9yaWdpbiYsIFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllciwgc3RkOjpvcHRp
b25hbDx1aW50NjRfdD4gbmV3UXVvdGEpOwogICAgIHZvaWQgcmVuYW1lT3JpZ2luSW5XZWJzaXRl
RGF0YShQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiwgT3B0aW9uU2V0PFdl
YnNpdGVEYXRhVHlwZT4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKICNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQpAQCAtNDczLDggKzQ3Myw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBy
ZWdpc3RlclVSTFNjaGVtZUFzTm9BY2Nlc3MoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAgdm9p
ZCByZWdpc3RlclVSTFNjaGVtZUFzQ09SU0VuYWJsZWQoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAK
LSAgICB2b2lkIHN1c3BlbmRJREJTZXJ2ZXJzKGJvb2wgaXNTdXNwZW5zaW9uSW1taW5lbnQpOwot
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIHNldElzSG9sZGluZ0xvY2tlZEZp
bGVzKGJvb2wpOwogI2VuZGlmCkBAIC00ODIsNiArNDgwLDcgQEAgcHJpdmF0ZToKICAgICBjbGFz
cyBTZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlciB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogICAgIHB1YmxpYzoKKyAgICAgICAgU2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXIo
KSA9IGRlbGV0ZTsKICAgICAgICAgU2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXIoY29uc3QgU3Ry
aW5nJiBjYWNoZVJvb3RQYXRoLCB1aW50NjRfdCBkZWZhdWx0UXVvdGEsIHVpbnQ2NF90IGRlZmF1
bHRUaGlyZFBhcnR5UXVvdGEpCiAgICAgICAgICAgICA6IG1fY2FjaGVSb290UGF0aChjYWNoZVJv
b3RQYXRoKQogICAgICAgICAgICAgLCBtX2RlZmF1bHRRdW90YShkZWZhdWx0UXVvdGEpCkBAIC01
MDgsOCArNTA3LDggQEAgcHJpdmF0ZToKICAgICBwcml2YXRlOgogICAgICAgICBTdHJpbmcgbV9j
YWNoZVJvb3RQYXRoOwogICAgICAgICBTdHJpbmcgbV9pZGJSb290UGF0aDsKLSAgICAgICAgdWlu
dDY0X3QgbV9kZWZhdWx0UXVvdGEgeyBXZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2VyOjpkZWZh
dWx0UXVvdGEoKSB9OwotICAgICAgICB1aW50NjRfdCBtX2RlZmF1bHRUaGlyZFBhcnR5UXVvdGEg
eyBXZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2VyOjpkZWZhdWx0VGhpcmRQYXJ0eVF1b3RhKCkg
fTsKKyAgICAgICAgdWludDY0X3QgbV9kZWZhdWx0UXVvdGE7CisgICAgICAgIHVpbnQ2NF90IG1f
ZGVmYXVsdFRoaXJkUGFydHlRdW90YTsKICAgICAgICAgSGFzaE1hcDxXZWJDb3JlOjpDbGllbnRP
cmlnaW4sIFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2VyPj4gbV9zdG9yYWdlUXVv
dGFNYW5hZ2VyczsKICAgICB9OwogICAgIHZvaWQgYWRkU2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFn
ZXIoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IGRlZmF1bHRRdW90YSwgdWludDY0X3QgZGVmYXVs
dFRoaXJkUGFydHlRdW90YSwgY29uc3QgU3RyaW5nJiBjYWNoZVJvb3RQYXRoLCBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGUmKTsKQEAgLTU0OSw5ICs1NDgsNiBAQCBwcml2YXRlOgogICAgIFdlYlNR
TGl0ZURhdGFiYXNlVHJhY2tlciBtX3dlYlNRTGl0ZURhdGFiYXNlVHJhY2tlcjsKICAgICBSZWZQ
dHI8UHJvY2Vzc0Fzc2VydGlvbj4gbV9ob2xkaW5nTG9ja2VkRmlsZUFzc2VydGlvbjsKICNlbmRp
ZgotCi0gICAgYm9vbCBtX3Nob3VsZFN1c3BlbmRJREJTZXJ2ZXJzIHsgZmFsc2UgfTsKLSAgICB1
aW50NjRfdCBtX3N1c3BlbnNpb25JZGVudGlmaWVyIHsgMCB9OwogICAgIAogI2lmIEVOQUJMRShX
RUJfUlRDKQogICAgIFJlZlB0cjxSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXJQcm94eT4gbV9y
dGNEYXRhQ2hhbm5lbFByb3h5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggNjM3ZTE1OWYxODYzOTNiZWM1
Y2MwNWFiNWJkNTc4MGJlOGM2ZmNlNC4uNjMxZTJiNjA3M2MwMTkyMTMwNjhjMjA5NmI4MjdiMjc5
ZGJjN2RlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0xNzksNiArMTc5LDcgQEAgbWVzc2FnZXMgLT4g
TmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogCiAgICAgUmVzZXRRdW90YShQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQpIC0+ICgpIEFzeW5jCiAgICAgQ2xlYXJTdG9yYWdlKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCkgLT4gKCkgQXN5bmMKKyAgICBEaWRJbmNyZWFzZVF1b3RhKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RydWN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiBvcmlnaW4s
IFdlYktpdDo6UXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyIGlkZW50aWZpZXIsIHN0ZDo6
b3B0aW9uYWw8dWludDY0X3Q+IG5ld1F1b3RhKQogICAgIAogI2lmIEVOQUJMRShBUFBfQk9VTkRf
RE9NQUlOUykKICAgICBIYXNBcHBCb3VuZFNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
KSAtPiAoYm9vbCBoYXNBcHBCb3VuZFNlc3Npb24pIEFzeW5jCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCmluZGV4IGUyYjI0ZDgzMjJiNmVjMWMz
NzcwMWRjYWQ0OTc1MzRjZWYyMzFhMjYuLjljNGJlMmI2MTg5NDc0Y2NmMjRiZTcwYjExMjcyOTE4
ZmMwMmIzZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Nlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nl
c3Npb24uY3BwCkBAIC0yMDQsOCArMjA0LDYgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbjo6aW52YWxp
ZGF0ZUFuZENhbmNlbCgpCiAgICAgaWYgKG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcykKICAgICAg
ICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5pbnZhbGlkYXRlQW5kQ2FuY2VsKCk7CiAjZW5k
aWYKLSAgICBpZiAoYXV0byBzZXJ2ZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fd2ViSURCU2VydmVyLCBu
dWxscHRyKSkKLSAgICAgICAgc2VydmVyLT5jbG9zZSgpOwogICAgIGlmIChhdXRvIG1hbmFnZXIg
PSBzdGQ6OmV4Y2hhbmdlKG1fc3RvcmFnZU1hbmFnZXIsIG51bGxwdHIpKQogICAgICAgICBtYW5h
Z2VyLT5jbG9zZSgpOwogICAgIG1fY2FjaGVFbmdpbmUgPSBudWxscHRyOwpAQCAtNjUzLDU1ICs2
NTEsMTggQEAgYm9vbCBOZXR3b3JrU2Vzc2lvbjo6aGFzU2VydmljZVdvcmtlckRhdGFiYXNlUGF0
aCgpIGNvbnN0CiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKLVdlYklEQlNl
cnZlciYgTmV0d29ya1Nlc3Npb246OmVuc3VyZVdlYklEQlNlcnZlcigpCi17Ci0gICAgaWYgKCFt
X3dlYklEQlNlcnZlcikgewotICAgICAgICBTdHJpbmcgcGF0aDsKLSAgICAgICAgaWYgKCFzZXNz
aW9uSUQoKS5pc0VwaGVtZXJhbCgpKSB7Ci0gICAgICAgICAgICBBU1NFUlQoIW1faWRiRGF0YWJh
c2VQYXRoLmlzTnVsbCgpKTsKLSAgICAgICAgICAgIHBhdGggPSBtX2lkYkRhdGFiYXNlUGF0aDsK
LSAgICAgICAgfQotCi0gICAgICAgIGF1dG8gc3BhY2VSZXF1ZXN0ZXIgPSBbbmV0d29ya1Byb2Nl
c3MgPSBSZWYgeyBuZXR3b3JrUHJvY2VzcygpIH0sIHNlc3Npb25JRCA9IHNlc3Npb25JRCgpXShj
b25zdCBhdXRvJiBvcmlnaW4sIHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkKSB7Ci0gICAgICAgICAg
ICByZXR1cm4gbmV0d29ya1Byb2Nlc3MtPnN0b3JhZ2VRdW90YU1hbmFnZXIoc2Vzc2lvbklELCBv
cmlnaW4pLT5yZXF1ZXN0U3BhY2VPbkJhY2tncm91bmRUaHJlYWQoc3BhY2VSZXF1ZXN0ZWQpOwot
ICAgICAgICB9OwotCi0gICAgICAgIG1fd2ViSURCU2VydmVyID0gV2ViSURCU2VydmVyOjpjcmVh
dGUoc2Vzc2lvbklEKCksIHBhdGgsIFdURk1vdmUoc3BhY2VSZXF1ZXN0ZXIpKTsKLSAgICAgICAg
aWYgKG5ldHdvcmtQcm9jZXNzKCkuc2hvdWxkU3VzcGVuZElEQlNlcnZlcnMoKSkKLSAgICAgICAg
ICAgIG1fd2ViSURCU2VydmVyLT5zdXNwZW5kKFdlYklEQlNlcnZlcjo6U3VzcGVuc2lvbkNvbmRp
dGlvbjo6QWx3YXlzKTsKLSAgICB9Ci0gICAgcmV0dXJuICptX3dlYklEQlNlcnZlcjsKLX0KLQot
dm9pZCBOZXR3b3JrU2Vzc2lvbjo6Y2xvc2VJREJTZXJ2ZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIGlmICghbV93ZWJJREJTZXJ2ZXIpCi0g
ICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcigpOwotCi0gICAgc3RkOjpleGNoYW5nZSht
X3dlYklEQlNlcnZlciwgbnVsbHB0ciktPmNsb3NlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKLX0KLQotdm9pZCBOZXR3b3JrU2Vzc2lvbjo6YWRkSW5kZXhlZERhdGFiYXNlU2Vzc2lvbihj
b25zdCBTdHJpbmcmIGluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSwgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlJiBoYW5kbGUpCi17Ci0gICAgLy8gKioqKioqKioqCi0gICAgLy8gSU1QT1JUQU5UOiBE
byBub3QgY2hhbmdlIHRoZSBkaXJlY3Rvcnkgc3RydWN0dXJlIGZvciBpbmRleGVkIGRhdGFiYXNl
cyBvbiBkaXNrIHdpdGhvdXQgZmlyc3QgY29uc3VsdGluZyBhIHJldmlld2VyIGZyb20gQXBwbGUg
KDxyZGFyOi8vcHJvYmxlbS8xNzQ1NDcxMj4pCi0gICAgLy8gKioqKioqKioqCi0gICAgYXV0byBp
c05ldyA9IG1faWRiRGF0YWJhc2VQYXRoLmlzTnVsbCgpOwotICAgIG1faWRiRGF0YWJhc2VQYXRo
ID0gaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5OwotICAgIGlmIChpc05ldykgewotICAgICAgICBT
YW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkoaGFuZGxlKTsKLSAgICAgICAgbmV0
d29ya1Byb2Nlc3MoKS5zZXRTZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlcklEQlJvb3RQYXRoKHNl
c3Npb25JRCgpLCBpbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkpOwotICAgIH0KLX0KLQotdm9pZCBO
ZXR3b3JrU2Vzc2lvbjo6YWRkU3RvcmFnZU1hbmFnZXJTZXNzaW9uKGNvbnN0IFN0cmluZyYgZ2Vu
ZXJhbFN0b3JhZ2VQYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIGdlbmVyYWxTdG9yYWdl
UGF0aEhhbmRsZSwgY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VQYXRoLCBTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGUmIGxvY2FsU3RvcmFnZVBhdGhIYW5kbGUpCit2b2lkIE5ldHdvcmtTZXNzaW9u
OjphZGRTdG9yYWdlTWFuYWdlclNlc3Npb24oY29uc3QgU3RyaW5nJiBnZW5lcmFsU3RvcmFnZVBh
dGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgZ2VuZXJhbFN0b3JhZ2VQYXRoSGFuZGxlLCBj
b25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZVBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYg
bG9jYWxTdG9yYWdlUGF0aEhhbmRsZSwgY29uc3QgU3RyaW5nJiBpZGJTdG9yYWdlUGF0aCwgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBpZGJTdG9yYWdlUGF0aEhhbmRsZSwgY29uc3QgU3RyaW5n
JiBjYWNoZVN0b3JhZ2VQYXRoLCB1aW50NjRfdCBkZWZhdWx0T3JpZ2luUXVvdGEsIHVpbnQ2NF90
IGRlZmF1bHRUaGlyZFBhcnR5UXVvdGEpCiB7CiAgICAgaWYgKG1fc3RvcmFnZU1hbmFnZXIpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRs
eShnZW5lcmFsU3RvcmFnZVBhdGhIYW5kbGUpOwogICAgIFNhbmRib3hFeHRlbnNpb246OmNvbnN1
bWVQZXJtYW5lbnRseShsb2NhbFN0b3JhZ2VQYXRoSGFuZGxlKTsKLSAgICBtX3N0b3JhZ2VNYW5h
Z2VyID0gTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjcmVhdGUoc2Vzc2lvbklEKCksIGdlbmVyYWxT
dG9yYWdlUGF0aCwgbG9jYWxTdG9yYWdlUGF0aCk7CisgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29u
c3VtZVBlcm1hbmVudGx5KGlkYlN0b3JhZ2VQYXRoSGFuZGxlKTsKKyAgICBJUEM6OkNvbm5lY3Rp
b246OlVuaXF1ZUlEIGNvbm5lY3Rpb25JRDsKKyAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IG5l
dHdvcmtQcm9jZXNzKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKSkKKyAgICAgICAgY29ubmVj
dGlvbklEID0gY29ubmVjdGlvbi0+dW5pcXVlSUQoKTsKKyAgICBtX3N0b3JhZ2VNYW5hZ2VyID0g
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjcmVhdGUoc2Vzc2lvbklEKCksIGNvbm5lY3Rpb25JRCwg
Z2VuZXJhbFN0b3JhZ2VQYXRoLCBsb2NhbFN0b3JhZ2VQYXRoLCBpZGJTdG9yYWdlUGF0aCwgY2Fj
aGVTdG9yYWdlUGF0aCwgZGVmYXVsdE9yaWdpblF1b3RhLCBkZWZhdWx0VGhpcmRQYXJ0eVF1b3Rh
KTsKIH0KIAogdm9pZCBOZXR3b3JrU2Vzc2lvbjo6ZW5zdXJlQ2FjaGVFbmdpbmUoRnVuY3Rpb248
dm9pZChDYWNoZVN0b3JhZ2U6OkVuZ2luZSYpPiYmIGNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCmluZGV4IDE5MzA3Y2Y0MGJlM2IyZjI2
MDU3ZDAxNmM3NjZlZGNlNDk4Yzk1NDIuLmJhYTEyMjQ1Y2YyMjY0ZDkyMTU3ZGRlNDcxZDJlNGIx
MDJiYzI5N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNz
aW9uLmgKQEAgLTIxMCwxNCArMjEwLDggQEAgcHVibGljOgogICAgIHZvaWQgYWRkU2VydmljZVdv
cmtlclNlc3Npb24oYm9vbCBwcm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQsIFN0cmluZyYm
IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnksIGNvbnN0IFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZSYpOwogI2VuZGlmCiAKLSAgICBXZWJJREJTZXJ2ZXIqIHdlYklEQlNlcnZlcigp
IHsgcmV0dXJuIG1fd2ViSURCU2VydmVyLmdldCgpOyB9Ci0gICAgV2ViSURCU2VydmVyJiBlbnN1
cmVXZWJJREJTZXJ2ZXIoKTsKLSAgICB2b2lkIGNsb3NlSURCU2VydmVyKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBhZGRJbmRleGVkRGF0YWJhc2VTZXNzaW9uKGNvbnN0
IFN0cmluZyYgaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUmKTsKLSAgICBib29sIGhhc0lEQkRhdGFiYXNlUGF0aCgpIGNvbnN0IHsgcmV0dXJuICFtX2lk
YkRhdGFiYXNlUGF0aC5pc0VtcHR5KCk7IH0KLQogICAgIE5ldHdvcmtTdG9yYWdlTWFuYWdlciog
c3RvcmFnZU1hbmFnZXIoKSB7IHJldHVybiBtX3N0b3JhZ2VNYW5hZ2VyLmdldCgpOyB9Ci0gICAg
dm9pZCBhZGRTdG9yYWdlTWFuYWdlclNlc3Npb24oY29uc3QgU3RyaW5nJiBnZW5lcmFsU3RvcmFn
ZVBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgZ2VuZXJhbFN0b3JhZ2VQYXRoSGFuZGxl
LCBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZVBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZSYgbG9jYWxTdG9yYWdlUGF0aEhhbmRsZSk7CisgICAgdm9pZCBhZGRTdG9yYWdlTWFuYWdlclNl
c3Npb24oY29uc3QgU3RyaW5nJiBnZW5lcmFsU3RvcmFnZVBhdGgsIFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZSYgZ2VuZXJhbFN0b3JhZ2VQYXRoSGFuZGxlLCBjb25zdCBTdHJpbmcmIGxvY2FsU3Rv
cmFnZVBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgbG9jYWxTdG9yYWdlUGF0aEhhbmRs
ZSwgY29uc3QgU3RyaW5nJiBpZGJTdG9yYWdlUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
JiBpZGJTdG9yYWdlUGF0aEhhbmRsZSwgY29uc3QgU3RyaW5nJiBjYWNoZVN0b3JhZ2VQYXRoLCB1
aW50NjRfdCBkZWZhdWx0T3JpZ2luUXVvdGEsIHVpbnQ2NF90IGRlZmF1bHRUaGlyZFBhcnR5UXVv
dGEpOwogCiAgICAgQ2FjaGVTdG9yYWdlOjpFbmdpbmUqIGNhY2hlRW5naW5lKCkgeyByZXR1cm4g
bV9jYWNoZUVuZ2luZS5nZXQoKTsgfQogICAgIHZvaWQgZW5zdXJlQ2FjaGVFbmdpbmUoRnVuY3Rp
b248dm9pZChDYWNoZVN0b3JhZ2U6OkVuZ2luZSYpPiYmKTsKQEAgLTMxOSw5ICszMTMsNiBAQCBw
cm90ZWN0ZWQ6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNXU2VydmVyPiBtX3N3U2Vy
dmVyOwogI2VuZGlmCiAKLSAgICBTdHJpbmcgbV9pZGJEYXRhYmFzZVBhdGg7Ci0gICAgUmVmUHRy
PFdlYklEQlNlcnZlcj4gbV93ZWJJREJTZXJ2ZXI7Ci0KICAgICBSZWZQdHI8TmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyPiBtX3N0b3JhZ2VNYW5hZ2VyOwogICAgIFJlZlB0cjxDYWNoZVN0b3JhZ2U6OkVu
Z2luZT4gbV9jYWNoZUVuZ2luZTsKICAgICBWZWN0b3I8RnVuY3Rpb248dm9pZChDYWNoZVN0b3Jh
Z2U6OkVuZ2luZSYpPj4gbV9jYWNoZVN0b3JhZ2VQYXJhbWV0ZXJzQ2FsbGJhY2tzOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdp
bmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VF
bmdpbmUuY3BwCmluZGV4IGMyMDBjZThiNWViNGMzYTAzNjU3ZTgyMjY4OTkwMmI0NmRiZjhhYjAu
LmNlYjU3MzczYzlkNjI3MzJhNDEwZjI4ODYwODc1MjNiNTg0NjI5YWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2lu
ZS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJOZXR3b3JrQ2FjaGVJT0NoYW5uZWwu
aCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtTZXNzaW9u
LmgiCisjaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2Vic2l0
ZURhdGFUeXBlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DYWNoZVF1ZXJ5T3B0aW9ucy5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUmV0cmlldmVSZWNvcmRzT3B0aW9ucy5oPgpAQCAtMjAzLDQwICsyMDQs
NDYgQEAgc3RhdGljIHVpbnQ2NF90IGdldERpcmVjdG9yeVNpemUoY29uc3QgU3RyaW5nJiBkaXJl
Y3RvcnlQYXRoKQogICAgIHJldHVybiBkaXJlY3RvcnlTaXplOwogfQogCi11aW50NjRfdCBFbmdp
bmU6OmRpc2tVc2FnZShjb25zdCBTdHJpbmcmIHJvb3RQYXRoLCBjb25zdCBXZWJDb3JlOjpDbGll
bnRPcmlnaW4mIG9yaWdpbikKK1N0cmluZyBFbmdpbmU6OnN0b3JhZ2VQYXRoKGNvbnN0IFN0cmlu
ZyYgcm9vdERpcmVjdG9yeSwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4pCiB7
CiAgICAgQVNTRVJUKCFpc01haW5SdW5Mb29wKCkpOworICAgIAorICAgIGlmIChyb290RGlyZWN0
b3J5LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKLSAgICBpZiAo
cm9vdFBhdGguaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIFN0cmluZyBzYWx0
UGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyb290UGF0aCwgInNh
bHQiX3MpOworICAgIFN0cmluZyBzYWx0UGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChyb290RGlyZWN0b3J5LCAic2FsdCJfcyk7CiAgICAgYXV0byBzYWx0ID0gRmls
ZVN5c3RlbTo6cmVhZE9yTWFrZVNhbHQoc2FsdFBhdGgpOwogICAgIGlmICghc2FsdCkKLSAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCiAgICAgS2V5IGtl
eShvcmlnaW4udG9wT3JpZ2luLnRvU3RyaW5nKCksIG9yaWdpbi5jbGllbnRPcmlnaW4udG9TdHJp
bmcoKSwgeyB9LCB7IH0sICpzYWx0KTsKLSAgICBTdHJpbmcgZGlyZWN0b3J5UGF0aCA9IEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyb290UGF0aCwga2V5Lmhhc2hBc1N0cmlu
ZygpKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJv
b3REaXJlY3RvcnksIGtleS5oYXNoQXNTdHJpbmcoKSk7Cit9CisKK3VpbnQ2NF90IEVuZ2luZTo6
ZGlza1VzYWdlKGNvbnN0IFN0cmluZyYgb3JpZ2luRGlyZWN0b3J5KQoreworICAgIEFTU0VSVCgh
aXNNYWluUnVuTG9vcCgpKTsKIAotICAgIFN0cmluZyBzaXplRmlsZVBhdGggPSBDYWNoZXM6OmNh
Y2hlc1NpemVGaWxlbmFtZShkaXJlY3RvcnlQYXRoKTsKKyAgICBTdHJpbmcgc2l6ZUZpbGVQYXRo
ID0gQ2FjaGVzOjpjYWNoZXNTaXplRmlsZW5hbWUob3JpZ2luRGlyZWN0b3J5KTsKICAgICBpZiAo
YXV0byByZWNvcmRlZFNpemUgPSByZWFkU2l6ZUZpbGUoc2l6ZUZpbGVQYXRoKSkKICAgICAgICAg
cmV0dXJuICpyZWNvcmRlZFNpemU7CiAKLSAgICByZXR1cm4gZ2V0RGlyZWN0b3J5U2l6ZShkaXJl
Y3RvcnlQYXRoKTsKKyAgICByZXR1cm4gZ2V0RGlyZWN0b3J5U2l6ZShvcmlnaW5EaXJlY3Rvcnkp
OwogfQogCi12b2lkIEVuZ2luZTo6cmVxdWVzdFNwYWNlKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9y
aWdpbiYgb3JpZ2luLCB1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChXZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbik+JiYgY2FsbGJhY2sp
Cit2b2lkIEVuZ2luZTo6cmVxdWVzdFNwYWNlKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYg
b3JpZ2luLCB1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJiBjYWxsYmFjaykKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAg
aWYgKCFtX25ldHdvcmtQcm9jZXNzKQotICAgICAgICBjYWxsYmFjayhXZWJDb3JlOjpTdG9yYWdl
UXVvdGFNYW5hZ2VyOjpEZWNpc2lvbjo6RGVueSk7CisgICAgICAgIGNhbGxiYWNrKGZhbHNlKTsK
IAotICAgIFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2VyPiBzdG9yYWdlUXVvdGFN
YW5hZ2VyID0gbV9uZXR3b3JrUHJvY2Vzcy0+c3RvcmFnZVF1b3RhTWFuYWdlcihtX3Nlc3Npb25J
RCwgb3JpZ2luKTsKLSAgICBpZiAoIXN0b3JhZ2VRdW90YU1hbmFnZXIpCi0gICAgICAgIGNhbGxi
YWNrKFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uOjpEZW55KTsKKyAgICBh
dXRvKiBzZXNzaW9uID0gbV9uZXR3b3JrUHJvY2Vzcy0+bmV0d29ya1Nlc3Npb24obV9zZXNzaW9u
SUQpOworICAgIGlmICghc2Vzc2lvbikKKyAgICAgICAgY2FsbGJhY2soZmFsc2UpOwogCi0gICAg
c3RvcmFnZVF1b3RhTWFuYWdlci0+cmVxdWVzdFNwYWNlT25NYWluVGhyZWFkKHNwYWNlUmVxdWVz
dGVkLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgaWYgKGF1dG8qIHN0b3JhZ2VNYW5hZ2VyID0g
c2Vzc2lvbi0+c3RvcmFnZU1hbmFnZXIoKSkKKyAgICAgICAgc3RvcmFnZU1hbmFnZXItPnJlcXVl
c3RTcGFjZShvcmlnaW4sIHNwYWNlUmVxdWVzdGVkLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAK
IEVuZ2luZTo6RW5naW5lKE5ldHdvcmtTZXNzaW9uJiBuZXR3b3JrU2Vzc2lvbiwgU3RyaW5nJiYg
cm9vdFBhdGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L0NhY2hlU3RvcmFnZUVuZ2luZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaAppbmRleCAxNDdmYmFjZTE2NzdhNjA4NTkxOGFiNzcyYTll
MTBhMjA2YzY4ODFlLi5mZTNjMWY5MzBkYWUzOTk4Y2QxYzA0YzM0ZGJkZGM1MzU1NWE0NzAyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFn
ZUVuZ2luZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVT
dG9yYWdlRW5naW5lLmgKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJOZXR3b3JrQ2FjaGVE
YXRhLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGEuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NsaWVu
dE9yaWdpbi5oPgotI2luY2x1ZGUgPFdlYkNvcmUvU3RvcmFnZVF1b3RhTWFuYWdlci5oPgogI2lu
Y2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC04NCw4ICs4Myw5IEBAIHB1YmxpYzoKIAogICAgIHN0
YXRpYyB2b2lkIGluaXRpYWxpemVRdW90YVVzZXIoTmV0d29ya1Nlc3Npb24mLCBjb25zdCBXZWJD
b3JlOjpDbGllbnRPcmlnaW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCi0gICAg
c3RhdGljIHVpbnQ2NF90IGRpc2tVc2FnZShjb25zdCBTdHJpbmcmIHJvb3RQYXRoLCBjb25zdCBX
ZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKLSAgICB2b2lkIHJlcXVlc3RTcGFjZShjb25zdCBXZWJD
b3JlOjpDbGllbnRPcmlnaW4mLCB1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbik+JiYpOwor
ICAgIHN0YXRpYyBTdHJpbmcgc3RvcmFnZVBhdGgoY29uc3QgU3RyaW5nJiByb290RGlyZWN0b3J5
LCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKKyAgICBzdGF0aWMgdWludDY0X3QgZGlz
a1VzYWdlKGNvbnN0IFN0cmluZyYgb3JpZ2luRGlyZWN0b3J5KTsKKyAgICB2b2lkIHJlcXVlc3RT
cGFjZShjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCB1aW50NjRfdCBzcGFjZVJlcXVlc3Rl
ZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAKICAgICBib29sIHNob3VsZFBl
cnNpc3QoKSBjb25zdCB7IHJldHVybiAhIW1faW9RdWV1ZTt9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5l
Q2FjaGVzLmNwcAppbmRleCAwNGVkZWNlMWM0YmZlOWVhY2FlMDZhNzA3YzVkZGZmZTAwZTgxMzhl
Li5jMzBjM2JlN2M1YzU1M2JmMjMyOGQ5NTFiNzc0NDQ0MTNiMzJkNmE1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hl
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3Jh
Z2VFbmdpbmVDYWNoZXMuY3BwCkBAIC01MjQsMTQgKzUyNCwxMCBAQCB2b2lkIENhY2hlczo6cmVx
dWVzdFNwYWNlKHVpbnQ2NF90IHNwYWNlUmVxdWlyZWQsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5l
OjpDb21wbAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9lbmdpbmUtPnJlcXVlc3RT
cGFjZShtX29yaWdpbiwgc3BhY2VSZXF1aXJlZCwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayldKGF1dG8gZGVjaXNpb24pIG11dGFibGUgewotICAgICAgICBzd2l0Y2ggKGRlY2lzaW9uKSB7
Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6U3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb246OkRl
bnk6Ci0gICAgICAgICAgICBjYWxsYmFjayhFcnJvcjo6UXVvdGFFeGNlZWRlZCk7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6U3RvcmFnZVF1b3RhTWFuYWdlcjo6
RGVjaXNpb246OkdyYW50OgotICAgICAgICAgICAgY2FsbGJhY2soeyB9KTsKLSAgICAgICAgfTsK
KyAgICBtX2VuZ2luZS0+cmVxdWVzdFNwYWNlKG1fb3JpZ2luLCBzcGFjZVJlcXVpcmVkLCBbY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICAg
ICAgaWYgKCFncmFudGVkKQorICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKEVycm9yOjpRdW90
YUV4Y2VlZGVkKTsKKyAgICAgICAgY2FsbGJhY2soeyB9KTsKICAgICB9KTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya1Byb2Nlc3NJT1Mu
bW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lPUy5t
bQppbmRleCBhODdhZDgwNWI1ZGYxNTA3ODNiNTM5MWU4ZTAzZjk4ZTc2NGRmM2Q1Li4yMTk2ZTll
NzRkMjQ1MzFjMGRiNWIzOTQ1YWM2MDhmZTNlOThjNzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lPUy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lPUy5tbQpAQCAtMTA5LDE5
ICsxMDksNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRJc0hvbGRpbmdMb2NrZWRGaWxlcyhi
b29sIGlzSG9sZGluZ0xvY2tlZEZpbGVzKQogICAgIC8vIFdlIHN5bmNocm9ub3VzbHkgdGFrZSBh
IHByb2Nlc3MgYXNzZXJ0aW9uIHdoZW4gYmVnaW5uaW5nIGEgU1FMaXRlIHRyYW5zYWN0aW9uIHNv
IHRoYXQgd2UgZG9uJ3QgZ2V0IHN1c3BlbmRlZAogICAgIC8vIHdoaWxlIGhvbGRpbmcgYSBsb2Nr
ZWQgZmlsZS4gV2Ugd291bGQgZ2V0IGtpbGxlZCBpZiBzdXNwZW5kZWQgd2hpbGUgaG9sZGluZyBs
b2NrZWQgZmlsZXMuCiAgICAgbV9ob2xkaW5nTG9ja2VkRmlsZUFzc2VydGlvbiA9IFByb2Nlc3NB
c3NlcnRpb246OmNyZWF0ZShnZXRDdXJyZW50UHJvY2Vzc0lEKCksICJOZXR3b3JrIFByb2Nlc3Mg
aXMgaG9sZGluZyBsb2NrZWQgZmlsZXMiX3MsIFByb2Nlc3NBc3NlcnRpb25UeXBlOjpGaW5pc2hU
YXNrSW50ZXJydXB0YWJsZSwgUHJvY2Vzc0Fzc2VydGlvbjo6TW9kZTo6U3luYyk7Ci0gICAgbV9o
b2xkaW5nTG9ja2VkRmlsZUFzc2VydGlvbi0+c2V0UHJlcGFyZUZvckludmFsaWRhdGlvbkhhbmRs
ZXIoW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dKCkgbXV0YWJsZSB7Ci0gICAg
ICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOwotICAgICAgICBpZiAoIXdlYWtUaGlzKQotICAg
ICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmICghbV9zaG91bGRTdXNwZW5kSURCU2VydmVy
cykKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24o
W10oYXV0byYgc2Vzc2lvbikgewotICAgICAgICAgICAgaWYgKGF1dG8qIHNlcnZlciA9IHNlc3Np
b24ud2ViSURCU2VydmVyKCkpCi0gICAgICAgICAgICAgICAgc2VydmVyLT5zdXNwZW5kKCk7Ci0g
ICAgICAgIH0pOwotICAgIH0pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlQ29ubmVj
dGlvblRvQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9J
REJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YWY0YzY0NjQzNmI5
NmUxNGU4N2IzY2UyYjYxMWRiMDQyODc5MDVmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQu
Y3BwCkBAIC0wLDAgKzEsMTkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5oIgorCisjaW5jbHVk
ZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiV2ViSURCQ29ubmVjdGlvblRv
U2VydmVyTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJJREJSZXN1bHQuaCIKKyNpbmNsdWRlIDxX
ZWJDb3JlL0lEQlJlcXVlc3REYXRhLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JREJSZXN1bHREYXRh
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK0lEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OklEQlN0
b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0
aW9uLCBXZWJDb3JlOjpJREJDb25uZWN0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKQorICAgIDog
bV9jb25uZWN0aW9uKGNvbm5lY3Rpb24pCisgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikK
KyAgICAsIG1fY29ubmVjdGlvblRvQ2xpZW50KFdlYkNvcmU6OklEQlNlcnZlcjo6SURCQ29ubmVj
dGlvblRvQ2xpZW50OjpjcmVhdGUoKnRoaXMpKQoreworfQorCitJREJTdG9yYWdlQ29ubmVjdGlv
blRvQ2xpZW50Ojp+SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudCgpCit7CisgICAgbV9jb25u
ZWN0aW9uVG9DbGllbnQtPmNsZWFyRGVsZWdhdGUoKTsKK30KKworV2ViQ29yZTo6SURCU2VydmVy
OjpJREJDb25uZWN0aW9uVG9DbGllbnQmIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmNv
bm5lY3Rpb25Ub0NsaWVudCgpCit7CisgICAgcmV0dXJuIG1fY29ubmVjdGlvblRvQ2xpZW50Owor
fQorCit0ZW1wbGF0ZTxjbGFzcyBNZXNzYWdlVHlwZT4gdm9pZCBJREJTdG9yYWdlQ29ubmVjdGlv
blRvQ2xpZW50OjpkaWRHZXRSZXN1bHQoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYgcmVz
dWx0RGF0YSkKK3sKKyAgICBpZiAocmVzdWx0RGF0YS50eXBlKCkgPT0gV2ViQ29yZTo6SURCUmVz
dWx0VHlwZTo6RXJyb3IpIHsKKyAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKG1fY29ubmVj
dGlvbiwgTWVzc2FnZVR5cGUocmVzdWx0RGF0YSksIDApOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgaWYgKHJlc3VsdERhdGEudHlwZSgpID09IFdlYkNvcmU6OklEQlJlc3VsdFR5cGU6
OkdldEFsbFJlY29yZHNTdWNjZXNzICYmIHJlc3VsdERhdGEuZ2V0QWxsUmVzdWx0KCkudHlwZSgp
ID09IFdlYkNvcmU6OkluZGV4ZWREQjo6R2V0QWxsVHlwZTo6S2V5cykgeworICAgICAgICBJUEM6
OkNvbm5lY3Rpb246OnNlbmQobV9jb25uZWN0aW9uLCBNZXNzYWdlVHlwZShyZXN1bHREYXRhKSwg
MCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGJsb2JGaWxlUGF0aHMgPSBy
ZXN1bHREYXRhLnR5cGUoKSA9PSBXZWJDb3JlOjpJREJSZXN1bHRUeXBlOjpHZXRBbGxSZWNvcmRz
U3VjY2VzcyA/IHJlc3VsdERhdGEuZ2V0QWxsUmVzdWx0KCkuYWxsQmxvYkZpbGVQYXRocygpIDog
cmVzdWx0RGF0YS5nZXRSZXN1bHQoKS52YWx1ZSgpLmJsb2JGaWxlUGF0aHMoKTsKKyAgICBpZiAo
YmxvYkZpbGVQYXRocy5pc0VtcHR5KCkpIHsKKyAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5k
KG1fY29ubmVjdGlvbiwgTWVzc2FnZVR5cGUocmVzdWx0RGF0YSksIDApOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwgTWVz
c2FnZVR5cGUocmVzdWx0RGF0YSksIDApOworfQorCit2b2lkIElEQlN0b3JhZ2VDb25uZWN0aW9u
VG9DbGllbnQ6OmRpZERlbGV0ZURhdGFiYXNlKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEm
IHJlc3VsdERhdGEpCit7CisgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwg
TWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6RGlkRGVsZXRlRGF0YWJhc2UocmVz
dWx0RGF0YSksIDApOworfQorCit2b2lkIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRp
ZE9wZW5EYXRhYmFzZShjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQor
eworICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJJ
REJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZE9wZW5EYXRhYmFzZShyZXN1bHREYXRhKSwgMCk7Cit9
CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkU3RhcnRUcmFuc2FjdGlv
bihjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRp
ZmllciwgY29uc3QgV2ViQ29yZTo6SURCRXJyb3ImIGVycm9yKQoreworICAgIElQQzo6Q29ubmVj
dGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2
ZXI6OkRpZFN0YXJ0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZGVudGlmaWVyLCBlcnJvciksIDAp
OworfQorCit2b2lkIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZEFib3J0VHJhbnNh
Y3Rpb24oY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklk
ZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OklEQkVycm9yJiBlcnJvcikKK3sKKyAgICBJUEM6OkNv
bm5lY3Rpb246OnNlbmQobV9jb25uZWN0aW9uLCBNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRv
U2VydmVyOjpEaWRBYm9ydFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgZXJyb3Ip
LCAwKTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRDb21taXRU
cmFuc2FjdGlvbihjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0
aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCRXJyb3ImIGVycm9yKQoreworICAgIElQ
Qzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0
aW9uVG9TZXJ2ZXI6OkRpZENvbW1pdFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllciwg
ZXJyb3IpLCAwKTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRD
cmVhdGVPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJiByZXN1bHREYXRh
KQoreworICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpX
ZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZENyZWF0ZU9iamVjdFN0b3JlKHJlc3VsdERhdGEp
LCAwKTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWREZWxldGVP
YmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQorewor
ICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJJREJD
b25uZWN0aW9uVG9TZXJ2ZXI6OkRpZERlbGV0ZU9iamVjdFN0b3JlKHJlc3VsdERhdGEpLCAwKTsK
K30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRSZW5hbWVPYmplY3RT
dG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIElQ
Qzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0
aW9uVG9TZXJ2ZXI6OkRpZFJlbmFtZU9iamVjdFN0b3JlKHJlc3VsdERhdGEpLCAwKTsKK30KKwor
dm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRDbGVhck9iamVjdFN0b3JlKGNv
bnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCit7CisgICAgSVBDOjpDb25u
ZWN0aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwgTWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub1Nl
cnZlcjo6RGlkQ2xlYXJPYmplY3RTdG9yZShyZXN1bHREYXRhKSwgMCk7Cit9CisKK3ZvaWQgSURC
U3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkQ3JlYXRlSW5kZXgoY29uc3QgV2ViQ29yZTo6
SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQo
bV9jb25uZWN0aW9uLCBNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWRDcmVh
dGVJbmRleChyZXN1bHREYXRhKSwgMCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25U
b0NsaWVudDo6ZGlkRGVsZXRlSW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYgcmVz
dWx0RGF0YSkKK3sKKyAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQobV9jb25uZWN0aW9uLCBNZXNz
YWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWREZWxldGVJbmRleChyZXN1bHREYXRh
KSwgMCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkUmVuYW1l
SW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBJ
UEM6OkNvbm5lY3Rpb246OnNlbmQobV9jb25uZWN0aW9uLCBNZXNzYWdlczo6V2ViSURCQ29ubmVj
dGlvblRvU2VydmVyOjpEaWRSZW5hbWVJbmRleChyZXN1bHREYXRhKSwgMCk7Cit9CisKK3ZvaWQg
SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkUHV0T3JBZGQoY29uc3QgV2ViQ29yZTo6
SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQo
bV9jb25uZWN0aW9uLCBNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWRQdXRP
ckFkZChyZXN1bHREYXRhKSwgMCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0Ns
aWVudDo6ZGlkR2V0UmVjb3JkKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmIHJlc3VsdERh
dGEpCit7CisgICAgZGlkR2V0UmVzdWx0PE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2
ZXI6OkRpZEdldFJlY29yZD4ocmVzdWx0RGF0YSk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5l
Y3Rpb25Ub0NsaWVudDo6ZGlkR2V0QWxsUmVjb3Jkcyhjb25zdCBXZWJDb3JlOjpJREJSZXN1bHRE
YXRhJiByZXN1bHREYXRhKQoreworICAgIGRpZEdldFJlc3VsdDxNZXNzYWdlczo6V2ViSURCQ29u
bmVjdGlvblRvU2VydmVyOjpEaWRHZXRBbGxSZWNvcmRzPihyZXN1bHREYXRhKTsKK30KKwordm9p
ZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRHZXRDb3VudChjb25zdCBXZWJDb3Jl
OjpJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIElQQzo6Q29ubmVjdGlvbjo6c2Vu
ZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZEdl
dENvdW50KHJlc3VsdERhdGEpLCAwKTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRv
Q2xpZW50OjpkaWREZWxldGVSZWNvcmQoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYgcmVz
dWx0RGF0YSkKK3sKKyAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQobV9jb25uZWN0aW9uLCBNZXNz
YWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWREZWxldGVSZWNvcmQocmVzdWx0RGF0
YSksIDApOworfQorCit2b2lkIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZE9wZW5D
dXJzb3IoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBk
aWRHZXRSZXN1bHQ8TWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6RGlkT3BlbkN1
cnNvcj4ocmVzdWx0RGF0YSk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVu
dDo6ZGlkSXRlcmF0ZUN1cnNvcihjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJiByZXN1bHRE
YXRhKQoreworICAgIGRpZEdldFJlc3VsdDxNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2Vy
dmVyOjpEaWRJdGVyYXRlQ3Vyc29yPihyZXN1bHREYXRhKTsKK30KKwordm9pZCBJREJTdG9yYWdl
Q29ubmVjdGlvblRvQ2xpZW50OjpkaWRHZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMoY29u
c3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgY29u
c3QgVmVjdG9yPFdlYkNvcmU6OklEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24+JiBkYXRhYmFzZXMp
Cit7CisgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwgTWVzc2FnZXM6Oldl
YklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6RGlkR2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25z
KHJlcXVlc3RJZGVudGlmaWVyLCBkYXRhYmFzZXMpLCAwKTsKK30KKwordm9pZCBJREJTdG9yYWdl
Q29ubmVjdGlvblRvQ2xpZW50OjpmaXJlVmVyc2lvbkNoYW5nZUV2ZW50KFdlYkNvcmU6OklEQlNl
cnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBXZWJD
b3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBy
ZXF1ZXN0ZWRWZXJzaW9uKQoreworICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rp
b24sIE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkZpcmVWZXJzaW9uQ2hhbmdl
RXZlbnQoY29ubmVjdGlvbi5pZGVudGlmaWVyKCksIHJlcXVlc3RJZGVudGlmaWVyLCByZXF1ZXN0
ZWRWZXJzaW9uKSwgMCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6
ZGlkQ2xvc2VGcm9tU2VydmVyKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpJREJFcnJvciYgZXJyb3IpCit7
CisgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwgTWVzc2FnZXM6OldlYklE
QkNvbm5lY3Rpb25Ub1NlcnZlcjo6RGlkQ2xvc2VGcm9tU2VydmVyKGNvbm5lY3Rpb24uaWRlbnRp
ZmllcigpLCBlcnJvciksIDApOworfQorCit2b2lkIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGll
bnQ6Om5vdGlmeU9wZW5EQlJlcXVlc3RCbG9ja2VkKGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNl
SWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IG9sZFZlcnNpb24sIHVpbnQ2
NF90IG5ld1ZlcnNpb24pCit7CisgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKG1fY29ubmVjdGlv
biwgTWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Tm90aWZ5T3BlbkRCUmVxdWVz
dEJsb2NrZWQocmVxdWVzdElkZW50aWZpZXIsIG9sZFZlcnNpb24sIG5ld1ZlcnNpb24pLCAwKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VDb25uZWN0aW9uVG9D
bGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41MGJhMDFiMDIxMjBmMjFkYjYxMzkxZjNhODc0NGQyMmI1ZmY3
MGU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9y
YWdlL0lEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQuaApAQCAtMCwwICsxLDc3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNp
bmNsdWRlIDxXZWJDb3JlL0lEQkNvbm5lY3Rpb25Ub0NsaWVudC5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvSURCQ29ubmVjdGlvblRvQ2xpZW50RGVsZWdhdGUuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK2NsYXNzIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQgZmluYWwgOiBwdWJsaWMgV2Vi
Q29yZTo6SURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnREZWxlZ2F0ZSB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgSURCU3RvcmFnZUNvbm5lY3Rpb25U
b0NsaWVudChJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBXZWJDb3JlOjpJREJDb25uZWN0aW9u
SWRlbnRpZmllcik7CisgICAgfklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQoKTsKKworICAg
IFdlYkNvcmU6OklEQkNvbm5lY3Rpb25JZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKyAgICBJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlE
IGlwY0Nvbm5lY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2Nvbm5lY3Rpb247IH0KKyAgICBXZWJD
b3JlOjpJREJTZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub0NsaWVudCYgY29ubmVjdGlvblRvQ2xpZW50
KCk7CisKK3ByaXZhdGU6CisgICAgdGVtcGxhdGU8Y2xhc3MgTWVzc2FnZVR5cGU+IHZvaWQgZGlk
R2V0UmVzdWx0KGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKTsKKworICAgIC8vIElEQkNv
bm5lY3Rpb25Ub0NsaWVudERlbGVnYXRlCisgICAgdm9pZCBkaWREZWxldGVEYXRhYmFzZShjb25z
dCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJikgZmluYWw7CisgICAgdm9pZCBkaWRPcGVuRGF0YWJh
c2UoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkQWJv
cnRUcmFuc2FjdGlvbihjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5z
YWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCRXJyb3ImKSBmaW5hbDsKKyAgICB2
b2lkIGRpZENvbW1pdFRyYW5zYWN0aW9uKGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRp
ZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJREJFcnJvciYpIGZp
bmFsOworICAgIHZvaWQgZGlkU3RhcnRUcmFuc2FjdGlvbihjb25zdCBXZWJDb3JlOjpJREJSZXNv
dXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURC
RXJyb3ImKSBmaW5hbDsKKyAgICB2b2lkIGRpZENyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNv
cmU6OklEQlJlc3VsdERhdGEmKSBmaW5hbDsKKyAgICB2b2lkIGRpZERlbGV0ZU9iamVjdFN0b3Jl
KGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlbmFt
ZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBmaW5hbDsKKyAgICB2
b2lkIGRpZENsZWFyT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZp
bmFsOworICAgIHZvaWQgZGlkQ3JlYXRlSW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0
YSYpIGZpbmFsOworICAgIHZvaWQgZGlkRGVsZXRlSW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVz
dWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVuYW1lSW5kZXgoY29uc3QgV2ViQ29yZTo6
SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkUHV0T3JBZGQoY29uc3QgV2ViQ29y
ZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkR2V0UmVjb3JkKGNvbnN0IFdl
YkNvcmU6OklEQlJlc3VsdERhdGEmKSBmaW5hbDsKKyAgICB2b2lkIGRpZEdldEFsbFJlY29yZHMo
Y29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkR2V0Q291
bnQoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkRGVs
ZXRlUmVjb3JkKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBmaW5hbDsKKyAgICB2b2lk
IGRpZE9wZW5DdXJzb3IoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAg
IHZvaWQgZGlkSXRlcmF0ZUN1cnNvcihjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJikgZmlu
YWw7CisgICAgdm9pZCBkaWRHZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMoY29uc3QgV2Vi
Q29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OklEQkRh
dGFiYXNlTmFtZUFuZFZlcnNpb24+JikgZmluYWw7CisgICAgdm9pZCBub3RpZnlPcGVuREJSZXF1
ZXN0QmxvY2tlZChjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJ
ZGVudGlmaWVyLCB1aW50NjRfdCBvbGRWZXJzaW9uLCB1aW50NjRfdCBuZXdWZXJzaW9uKSBmaW5h
bDsKKyAgICB2b2lkIGZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQoV2ViQ29yZTo6SURCU2VydmVyOjpV
bmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlk
ZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCByZXF1ZXN0ZWRWZXJzaW9uKSBm
aW5hbDsKKyAgICB2b2lkIGRpZENsb3NlRnJvbVNlcnZlcihXZWJDb3JlOjpJREJTZXJ2ZXI6OlVu
aXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OklEQkVycm9yJikgZmlu
YWw7CisKKyAgICBJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIG1fY29ubmVjdGlvbjsKKyAgICBX
ZWJDb3JlOjpJREJDb25uZWN0aW9uSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CisgICAgUmVmPFdl
YkNvcmU6OklEQlNlcnZlcjo6SURCQ29ubmVjdGlvblRvQ2xpZW50PiBtX2Nvbm5lY3Rpb25Ub0Ns
aWVudDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VNYW5hZ2VyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlTWFuYWdlci5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNTJhNmExZjYxN2JiYWM1MjZiZjFhMWM1ZTdiZTgzYzk5YTgyMGJhNAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9y
YWdlTWFuYWdlci5jcHAKQEAgLTAsMCArMSwyMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiSURCU3RvcmFnZU1hbmFnZXIuaCIKKworI2luY2x1ZGUgIklE
QlN0b3JhZ2VSZWdpc3RyeS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTWVtb3J5SURCQmFja2luZ1N0
b3JlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVGaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9TUUxpdGVJREJCYWNraW5nU3RvcmUuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K3N0YXRpYyB2b2lkIG1pZ3JhdGVPcmlnaW5EYXRhKGNvbnN0IFN0cmluZyYgb2xkT3JpZ2luRGly
ZWN0b3J5LCBjb25zdCBTdHJpbmcmIG5ld09yaWdpbkRpcmVjdG9yeSkKK3sKKyAgICBpZiAoIUZp
bGVTeXN0ZW06OmZpbGVFeGlzdHMob2xkT3JpZ2luRGlyZWN0b3J5KSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgYXV0byBmaWxlTmFtZXMgPSBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KG9sZE9y
aWdpbkRpcmVjdG9yeSk7CisgICAgZm9yIChhdXRvIG5hbWUgOiBmaWxlTmFtZXMpIHsKKyAgICAg
ICAgU3RyaW5nIGNoaWxkUGF0aCA9IEZpbGVTeXN0ZW06OmdldFN5bWJvbGljTGlua1RhcmdldChG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQob2xkT3JpZ2luRGlyZWN0b3J5LCBu
YW1lKSk7CisgICAgICAgIFN0cmluZyBuZXdOYW1lID0gV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3Rl
bTo6Y29tcHV0ZUhhc2hGb3JGaWxlTmFtZShXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6ZGVjb2RlRGF0YWJhc2VOYW1lKG5hbWUpKTsKKyAgICAgICAgYXV0byBuZXdD
aGlsZFBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobmV3T3JpZ2lu
RGlyZWN0b3J5LCBuZXdOYW1lKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6bW92ZUZpbGUoY2hpbGRQ
YXRoLCBuZXdDaGlsZFBhdGgpOworICAgIH0KKworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5
RGlyZWN0b3J5KG9sZE9yaWdpbkRpcmVjdG9yeSk7Cit9CisKK1N0cmluZyBJREJTdG9yYWdlTWFu
YWdlcjo6aWRiU3RvcmFnZU9yaWdpbkRpcmVjdG9yeShjb25zdCBTdHJpbmcmIHJvb3REaXJlY3Rv
cnksIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luKQoreworICAgIGlmIChyb290
RGlyZWN0b3J5LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisKKyAg
ICBTdHJpbmcgb3JpZ2luRGlyZWN0b3J5ID0gV2ViQ29yZTo6SURCRGF0YWJhc2VJZGVudGlmaWVy
OjpkYXRhYmFzZURpcmVjdG9yeVJlbGF0aXZlVG9Sb290KG9yaWdpbi50b3BPcmlnaW4sIG9yaWdp
bi5jbGllbnRPcmlnaW4sIHJvb3REaXJlY3RvcnksICJ2MSIpOworICAgIEZpbGVTeXN0ZW06Om1h
a2VBbGxEaXJlY3RvcmllcyhvcmlnaW5EaXJlY3RvcnkpOworCisgICAgU3RyaW5nIG9sZE9yaWdp
bkRpcmVjdG9yeSA9IFdlYkNvcmU6OklEQkRhdGFiYXNlSWRlbnRpZmllcjo6ZGF0YWJhc2VEaXJl
Y3RvcnlSZWxhdGl2ZVRvUm9vdChvcmlnaW4udG9wT3JpZ2luLCBvcmlnaW4uY2xpZW50T3JpZ2lu
LCByb290RGlyZWN0b3J5LCAidjAiKTsKKyAgICBtaWdyYXRlT3JpZ2luRGF0YShvbGRPcmlnaW5E
aXJlY3RvcnksIG9yaWdpbkRpcmVjdG9yeSk7CisKKyAgICByZXR1cm4gb3JpZ2luRGlyZWN0b3J5
OworfQorCit1aW50NjRfdCBJREJTdG9yYWdlTWFuYWdlcjo6aWRiU3RvcmFnZVNpemUoY29uc3Qg
U3RyaW5nJiBvcmlnaW5EaXJlY3RvcnkpCit7CisgICAgcmV0dXJuIFdlYkNvcmU6OklEQlNlcnZl
cjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpkYXRhYmFzZXNTaXplRm9yRGlyZWN0b3J5KG9yaWdp
bkRpcmVjdG9yeSk7Cit9CisKK3N0YXRpYyB2b2lkIGdldE9yaWdpbnNGb3JWZXJzaW9uKGNvbnN0
IFN0cmluZyYgdmVyc2lvblBhdGgsIEhhc2hTZXQ8V2ViQ29yZTo6Q2xpZW50T3JpZ2luPiYgb3Jp
Z2lucykKK3sKKyAgICBmb3IgKGF1dG8mIHRvcERhdGFiYXNlSWRlbnRpZmllciA6IEZpbGVTeXN0
ZW06Omxpc3REaXJlY3RvcnkodmVyc2lvblBhdGgpKSB7CisgICAgICAgIGF1dG8gdG9wT3JpZ2lu
ID0gV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKHRv
cERhdGFiYXNlSWRlbnRpZmllcik7CisgICAgICAgIGlmICghdG9wT3JpZ2luKQorICAgICAgICAg
ICAgY29udGludWU7CisKKyAgICAgICAgZm9yIChhdXRvJiBkYXRhYmFzZUlkZW50aWZpZXIgOiBG
aWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudCh2ZXJzaW9uUGF0aCwgdG9wRGF0YWJhc2VJZGVudGlmaWVyKSkpIHsKKyAgICAgICAgICAg
IGlmIChhdXRvIGNsaWVudE9yaWdpbiA9IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJv
bURhdGFiYXNlSWRlbnRpZmllcihkYXRhYmFzZUlkZW50aWZpZXIpKQorICAgICAgICAgICAgICAg
IG9yaWdpbnMuYWRkKFdlYkNvcmU6OkNsaWVudE9yaWdpbiB7ICp0b3BPcmlnaW4sICpjbGllbnRP
cmlnaW4gfSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgb3JpZ2lucy5hZGQo
V2ViQ29yZTo6Q2xpZW50T3JpZ2luIHsgKnRvcE9yaWdpbiwgKnRvcE9yaWdpbiB9KTsKKyAgICAg
ICAgfQorICAgIH0KK30KKworSGFzaFNldDxXZWJDb3JlOjpDbGllbnRPcmlnaW4+IElEQlN0b3Jh
Z2VNYW5hZ2VyOjpvcmlnaW5zT2ZJREJTdG9yYWdlRGF0YShjb25zdCBTdHJpbmcmIHJvb3REaXJl
Y3RvcnkpCit7CisgICAgSGFzaFNldDxXZWJDb3JlOjpDbGllbnRPcmlnaW4+IG9yaWdpbnM7Cisg
ICAgaWYgKHJvb3REaXJlY3RvcnkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gb3JpZ2luczsK
KworICAgIGdldE9yaWdpbnNGb3JWZXJzaW9uKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChyb290RGlyZWN0b3J5LCAidjAiKSwgb3JpZ2lucyk7CisgICAgZ2V0T3JpZ2luc0Zv
clZlcnNpb24oRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJvb3REaXJlY3Rv
cnksICJ2MSIpLCBvcmlnaW5zKTsKKyAgICByZXR1cm4gb3JpZ2luczsKK30KKworSURCU3RvcmFn
ZU1hbmFnZXI6OklEQlN0b3JhZ2VNYW5hZ2VyKGNvbnN0IFN0cmluZyYgcGF0aCwgSURCU3RvcmFn
ZVJlZ2lzdHJ5JiByZWdpc3RyeSwgUXVvdGFDaGVja0Z1bmN0aW9uJiYgcXVvdGFDaGVja0Z1bmN0
aW9uKQorICAgIDogbV9wYXRoKHBhdGgpCisgICAgLCBtX3JlZ2lzdHJ5KHJlZ2lzdHJ5KQorICAg
ICwgbV9xdW90YUNoZWNrRnVuY3Rpb24oV1RGTW92ZShxdW90YUNoZWNrRnVuY3Rpb24pKQorewor
fQorCitib29sIElEQlN0b3JhZ2VNYW5hZ2VyOjppc0FjdGl2ZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuICFtX2RhdGFiYXNlcy5pc0VtcHR5KCk7Cit9CisKK2Jvb2wgSURCU3RvcmFnZU1hbmFnZXI6
Omhhc0RhdGFJbk1lbW9yeSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdURjo6YW55T2YobV9kYXRh
YmFzZXMudmFsdWVzKCksIFsmXSAoYXV0byYgZGF0YWJhc2UpIHsKKyAgICAgICAgcmV0dXJuIGRh
dGFiYXNlLT5oYXNEYXRhSW5NZW1vcnkoKTsKKyAgICB9KTsKK30KKwordm9pZCBJREJTdG9yYWdl
TWFuYWdlcjo6Y2xvc2VEYXRhYmFzZXNGb3JEZWxldGlvbigpCit7CisgICAgZm9yIChhdXRvJiBk
YXRhYmFzZSA6IG1fZGF0YWJhc2VzLnZhbHVlcygpKQorICAgICAgICBkYXRhYmFzZS0+aW1tZWRp
YXRlQ2xvc2UoKTsKKworICAgIG1fZGF0YWJhc2VzLmNsZWFyKCk7Cit9CisKK3ZvaWQgSURCU3Rv
cmFnZU1hbmFnZXI6OnN0b3BEYXRhYmFzZUFjdGl2aXRpZXNGb3JTdXNwZW5kKCkKK3sKKyAgICBp
ZiAobV9wYXRoLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChhdXRvJiBk
YXRhYmFzZSA6IG1fZGF0YWJhc2VzLnZhbHVlcygpKSB7CisgICAgICAgIC8vIE9ubHkgc3RvcCBk
YXRhYmFzZXMgd2l0aCBub24tZXBoZW1lcmFsIGJhY2tpbmcgc3RvcmUgdGhhdCBjYW4gaG9sZCBk
YXRhYmFzZSBmaWxlIGxvY2suCisgICAgICAgIGlmICghZGF0YWJhc2UtPmlkZW50aWZpZXIoKS5p
c1RyYW5zaWVudCgpKQorICAgICAgICAgICAgZGF0YWJhc2UtPmFib3J0SW5Qcm9ncmVzc1RyYW5z
YWN0aW9ucygpOworICAgIH0KK30KKworV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRh
YmFzZSYgSURCU3RvcmFnZU1hbmFnZXI6OmdldE9yQ3JlYXRlVW5pcXVlSURCRGF0YWJhc2UoY29u
c3QgV2ViQ29yZTo6SURCRGF0YWJhc2VJZGVudGlmaWVyJiBpZGVudGlmaWVyKQoreworICAgIGF1
dG8gYWRkUmVzdWx0ID0gbV9kYXRhYmFzZXMuYWRkKGlkZW50aWZpZXIsIG51bGxwdHIpOworICAg
IGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZSA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZT4o
KnRoaXMsIGlkZW50aWZpZXIpOworCisgICAgcmV0dXJuICphZGRSZXN1bHQuaXRlcmF0b3ItPnZh
bHVlOworfQorCit2b2lkIElEQlN0b3JhZ2VNYW5hZ2VyOjpvcGVuRGF0YWJhc2UoV2ViQ29yZTo6
SURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnQmIGNvbm5lY3Rpb25Ub0NsaWVudCwgY29u
c3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhKQoreworICAgIGF1dG8mIGRh
dGFiYXNlID0gZ2V0T3JDcmVhdGVVbmlxdWVJREJEYXRhYmFzZShyZXF1ZXN0RGF0YS5kYXRhYmFz
ZUlkZW50aWZpZXIoKSk7CisgICAgZGF0YWJhc2Uub3BlbkRhdGFiYXNlQ29ubmVjdGlvbihjb25u
ZWN0aW9uVG9DbGllbnQsIHJlcXVlc3REYXRhKTsKK30KKwordm9pZCBJREJTdG9yYWdlTWFuYWdl
cjo6ZGVsZXRlRGF0YWJhc2UoV2ViQ29yZTo6SURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGll
bnQmIGNvbm5lY3Rpb25Ub0NsaWVudCwgY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJl
cXVlc3REYXRhKQoreworICAgIGF1dG8mIGRhdGFiYXNlID0gZ2V0T3JDcmVhdGVVbmlxdWVJREJE
YXRhYmFzZShyZXF1ZXN0RGF0YS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAgZGF0YWJhc2Uu
aGFuZGxlRGVsZXRlKGNvbm5lY3Rpb25Ub0NsaWVudCwgcmVxdWVzdERhdGEpOworCisgICAgLy8g
VGhpcyBkYXRhYmFzZSBpcyBjcmVhdGVkIGZvciBkZWxldGlvbi4KKyAgICBpZiAoZGF0YWJhc2Uu
dHJ5Q2xvc2UoKSkKKyAgICAgICAgbV9kYXRhYmFzZXMucmVtb3ZlKGRhdGFiYXNlLmlkZW50aWZp
ZXIoKSk7Cit9CisKK1ZlY3RvcjxXZWJDb3JlOjpJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiBJ
REJTdG9yYWdlTWFuYWdlcjo6Z2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKCkKK3sKKyAg
ICBWZWN0b3I8V2ViQ29yZTo6SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbj4gcmVzdWx0OworICAg
IEhhc2hTZXQ8U3RyaW5nPiB2aXNpdGVkRGF0YWJhc2VQYXRoczsKKyAgICBmb3IgKGF1dG8mIGRh
dGFiYXNlIDogbV9kYXRhYmFzZXMudmFsdWVzKCkpIHsKKyAgICAgICAgYXV0byBwYXRoID0gZGF0
YWJhc2UtPmZpbGVQYXRoKCk7CisgICAgICAgIGlmICghcGF0aC5pc0VtcHR5KCkpCisgICAgICAg
ICAgICB2aXNpdGVkRGF0YWJhc2VQYXRocy5hZGQocGF0aCk7CisKKyAgICAgICAgaWYgKGF1dG8g
bmFtZUFuZFZlcnNpb24gPSBkYXRhYmFzZS0+bmFtZUFuZFZlcnNpb24oKSkKKyAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoV1RGTW92ZSgqbmFtZUFuZFZlcnNpb24pKTsKKyAgICB9CisKKyAgICBh
dXRvIGRhdGFiYXNlSWRlbnRpZmllcnMgPSBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KG1fcGF0
aCk7CisgICAgZm9yIChhdXRvIGlkZW50aWZpZXIgOiBkYXRhYmFzZUlkZW50aWZpZXJzKSB7Cisg
ICAgICAgIGF1dG8gZGF0YWJhc2VEaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQobV9wYXRoLCBpZGVudGlmaWVyKTsKKyAgICAgICAgYXV0byBkYXRhYmFzZVBh
dGggPSBXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZnVsbERhdGFi
YXNlUGF0aEZvckRpcmVjdG9yeShkYXRhYmFzZURpcmVjdG9yeSk7CisgICAgICAgIGlmICh2aXNp
dGVkRGF0YWJhc2VQYXRocy5jb250YWlucyhkYXRhYmFzZVBhdGgpKQorICAgICAgICAgICAgY29u
dGludWU7CisKKyAgICAgICAgaWYgKGF1dG8gbmFtZUFuZFZlcnNpb24gPSBXZWJDb3JlOjpJREJT
ZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGF0YWJhc2VOYW1lQW5kVmVyc2lvbkZyb21G
aWxlKGRhdGFiYXNlUGF0aCkpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKFdURk1vdmUoKm5h
bWVBbmRWZXJzaW9uKSk7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBJ
REJTdG9yYWdlTWFuYWdlcjo6b3BlbkRCUmVxdWVzdENhbmNlbGxlZChjb25zdCBXZWJDb3JlOjpJ
REJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEpCit7CisgICAgYXV0byogZGF0YWJhc2UgPSBtX2Rh
dGFiYXNlcy5nZXQocmVxdWVzdERhdGEuZGF0YWJhc2VJZGVudGlmaWVyKCkpOworICAgIGlmICgh
ZGF0YWJhc2UpCisgICAgICAgIHJldHVybjsKKworICAgIGRhdGFiYXNlLT5vcGVuREJSZXF1ZXN0
Q2FuY2VsbGVkKHJlcXVlc3REYXRhLnJlcXVlc3RJZGVudGlmaWVyKCkpOworCisgICAgLy8gRGF0
YWJhc2UgYmVjb21lcyBpZGxlIGFmdGVyIHJlcXVlc3QgaXMgY2FuY2VsbGVkLgorICAgIGlmIChk
YXRhYmFzZS0+dHJ5Q2xvc2UoKSkKKyAgICAgICAgbV9kYXRhYmFzZXMucmVtb3ZlKGRhdGFiYXNl
LT5pZGVudGlmaWVyKCkpOworfQorCit2b2lkIElEQlN0b3JhZ2VNYW5hZ2VyOjpyZWdpc3RlckNv
bm5lY3Rpb24oV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24pCit7CisgICAgbV9yZWdpc3RyeS5yZWdpc3RlckNvbm5lY3Rpb24oY29ubmVj
dGlvbik7Cit9CisKK3ZvaWQgSURCU3RvcmFnZU1hbmFnZXI6OnVucmVnaXN0ZXJDb25uZWN0aW9u
KFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiBjb25uZWN0
aW9uKQoreworICAgIG1fcmVnaXN0cnkudW5yZWdpc3RlckNvbm5lY3Rpb24oY29ubmVjdGlvbik7
Cit9CisKK3ZvaWQgSURCU3RvcmFnZU1hbmFnZXI6OnJlZ2lzdGVyVHJhbnNhY3Rpb24oV2ViQ29y
ZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikK
K3sKKyAgICBtX3JlZ2lzdHJ5LnJlZ2lzdGVyVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pOworfQor
Cit2b2lkIElEQlN0b3JhZ2VNYW5hZ2VyOjp1bnJlZ2lzdGVyVHJhbnNhY3Rpb24oV2ViQ29yZTo6
SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKK3sK
KyAgICBtX3JlZ2lzdHJ5LnVucmVnaXN0ZXJUcmFuc2FjdGlvbih0cmFuc2FjdGlvbik7Cit9CisK
K3N0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQkJhY2tpbmdTdG9yZT4gSURC
U3RvcmFnZU1hbmFnZXI6OmNyZWF0ZUJhY2tpbmdTdG9yZShjb25zdCBXZWJDb3JlOjpJREJEYXRh
YmFzZUlkZW50aWZpZXImIGlkZW50aWZpZXIpCit7CisgICAgaWYgKG1fcGF0aC5pc0VtcHR5KCkp
CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5SURC
QmFja2luZ1N0b3JlPihpZGVudGlmaWVyKTsKKworICAgIGlmIChpZGVudGlmaWVyLmlzVHJhbnNp
ZW50KCkpCisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYkNvcmU6OklEQlNlcnZlcjo6TWVt
b3J5SURCQmFja2luZ1N0b3JlPihpZGVudGlmaWVyKTsKKworICAgIGF1dG8gbmFtZSA9IFdlYkNv
cmU6OlNRTGl0ZUZpbGVTeXN0ZW06OmNvbXB1dGVIYXNoRm9yRmlsZU5hbWUoaWRlbnRpZmllci5k
YXRhYmFzZU5hbWUoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViQ29yZTo6SURCU2VydmVy
OjpTUUxpdGVJREJCYWNraW5nU3RvcmU+KGlkZW50aWZpZXIsIEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChtX3BhdGgsIG5hbWUpKTsKK30KKwordm9pZCBJREJTdG9yYWdlTWFu
YWdlcjo6cmVxdWVzdFNwYWNlKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIHVpbnQ2NF90
IHNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit7CisgICAgbV9xdW90YUNoZWNrRnVuY3Rpb24oc2l6ZSwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlTWFuYWdlci5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VNYW5hZ2VyLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGM3NTc4NWUwYWNiZThlMTc5ZmEyNTQzMDdjYzBiOWI0YjZlMWY1OQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdl
TWFuYWdlci5oCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgPFdlYkNvcmUvVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBJREJTZXJ2ZXIgeworY2xhc3MgSURCQmFja2luZ1N0b3Jl
OworY2xhc3MgSURCQ29ubmVjdGlvblRvQ2xpZW50OworY2xhc3MgVW5pcXVlSURCRGF0YWJhc2U7
Cit9Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBJREJTdG9yYWdlUmVnaXN0cnk7
CisKK2NsYXNzIElEQlN0b3JhZ2VNYW5hZ2VyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OklEQlNl
cnZlcjo6VW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgU3Ry
aW5nIGlkYlN0b3JhZ2VPcmlnaW5EaXJlY3RvcnkoY29uc3QgU3RyaW5nJiByb290RGlyZWN0b3J5
LCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKKyAgICBzdGF0aWMgdWludDY0X3QgaWRi
U3RvcmFnZVNpemUoY29uc3QgU3RyaW5nJiBvcmlnaW5EaXJlY3RvcnkpOworICAgIHN0YXRpYyBI
YXNoU2V0PFdlYkNvcmU6OkNsaWVudE9yaWdpbj4gb3JpZ2luc09mSURCU3RvcmFnZURhdGEoY29u
c3QgU3RyaW5nJiByb290RGlyZWN0b3J5KTsKKworICAgIHVzaW5nIFF1b3RhQ2hlY2tGdW5jdGlv
biA9IEZ1bmN0aW9uPHZvaWQodWludDY0X3Qgc3BhY2VSZXF1ZXN0ZWQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYpPjsKKyAgICBJREJTdG9yYWdlTWFuYWdlcihjb25zdCBTdHJpbmcm
IHBhdGgsIElEQlN0b3JhZ2VSZWdpc3RyeSYsIFF1b3RhQ2hlY2tGdW5jdGlvbiYmKTsKKyAgICB+
SURCU3RvcmFnZU1hbmFnZXIoKSBmaW5hbCB7IH0KKyAgICBib29sIGlzQWN0aXZlKCkgY29uc3Q7
CisgICAgYm9vbCBoYXNEYXRhSW5NZW1vcnkoKSBjb25zdDsKKyAgICB2b2lkIGNsb3NlRGF0YWJh
c2VzRm9yRGVsZXRpb24oKTsKKyAgICB2b2lkIHN0b3BEYXRhYmFzZUFjdGl2aXRpZXNGb3JTdXNw
ZW5kKCk7CisKKyAgICB2b2lkIG9wZW5EYXRhYmFzZShXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQkNv
bm5lY3Rpb25Ub0NsaWVudCYsIGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJik7CisgICAg
dm9pZCBvcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRh
Jik7CisgICAgdm9pZCBkZWxldGVEYXRhYmFzZShXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQkNvbm5l
Y3Rpb25Ub0NsaWVudCYsIGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJik7CisgICAgVmVj
dG9yPFdlYkNvcmU6OklEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24+IGdldEFsbERhdGFiYXNlTmFt
ZXNBbmRWZXJzaW9ucygpOworCitwcml2YXRlOgorICAgIFdlYkNvcmU6OklEQlNlcnZlcjo6VW5p
cXVlSURCRGF0YWJhc2UmIGdldE9yQ3JlYXRlVW5pcXVlSURCRGF0YWJhc2UoY29uc3QgV2ViQ29y
ZTo6SURCRGF0YWJhc2VJZGVudGlmaWVyJik7CisKKyAgICAvLyBXZWJDb3JlOjpVbmlxdWVJREJE
YXRhYmFzZU1hbmFnZXIKKyAgICB2b2lkIHJlZ2lzdGVyQ29ubmVjdGlvbihXZWJDb3JlOjpJREJT
ZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYpIGZpbmFsOworICAgIHZvaWQgdW5y
ZWdpc3RlckNvbm5lY3Rpb24oV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNv
bm5lY3Rpb24mKSBmaW5hbDsKKyAgICB2b2lkIHJlZ2lzdGVyVHJhbnNhY3Rpb24oV2ViQ29yZTo6
SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJikgZmluYWw7CisgICAgdm9p
ZCB1bnJlZ2lzdGVyVHJhbnNhY3Rpb24oV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRh
YmFzZVRyYW5zYWN0aW9uJikgZmluYWw7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklE
QlNlcnZlcjo6SURCQmFja2luZ1N0b3JlPiBjcmVhdGVCYWNraW5nU3RvcmUoY29uc3QgV2ViQ29y
ZTo6SURCRGF0YWJhc2VJZGVudGlmaWVyJikgZmluYWw7CisgICAgdm9pZCByZXF1ZXN0U3BhY2Uo
Y29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgdWludDY0X3Qgc2l6ZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7CisKKyAgICBTdHJpbmcgbV9wYXRoOworICAgIElE
QlN0b3JhZ2VSZWdpc3RyeSYgbV9yZWdpc3RyeTsKKyAgICBRdW90YUNoZWNrRnVuY3Rpb24gbV9x
dW90YUNoZWNrRnVuY3Rpb247CisgICAgSGFzaE1hcDxXZWJDb3JlOjpJREJEYXRhYmFzZUlkZW50
aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFi
YXNlPj4gbV9kYXRhYmFzZXM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlUmVnaXN0
cnkuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VS
ZWdpc3RyeS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTAyMTdjZTFjNWM2YmI4MjQ4ZWJmOWVmOWM3NDA1ZGVi
NTY1Y2EwNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c3RvcmFnZS9JREJTdG9yYWdlUmVnaXN0cnkuY3BwCkBAIC0wLDAgKzEsMTAxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIklEQlN0b3JhZ2VSZWdpc3RyeS5o
IgorCisjaW5jbHVkZSAiSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5oIgorI2luY2x1ZGUg
PFdlYkNvcmUvVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitJREJTdG9yYWdlUmVnaXN0cnk6OklEQlN0b3JhZ2VSZWdpc3RyeSgpID0gZGVmYXVsdDsKKwor
V2ViQ29yZTo6SURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnQmIElEQlN0b3JhZ2VSZWdp
c3RyeTo6Z2V0T3JDcmVhdGVDb25uZWN0aW9uVG9DbGllbnQoSVBDOjpDb25uZWN0aW9uOjpVbmlx
dWVJRCBjb25uZWN0aW9uLCBXZWJDb3JlOjpJREJDb25uZWN0aW9uSWRlbnRpZmllciBpZGVudGlm
aWVyKQoreworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9jb25uZWN0aW9uc1RvQ2xpZW50LmFkZChp
ZGVudGlmaWVyLCBudWxscHRyKTsKKyAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpCisgICAg
ICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPElEQlN0b3JhZ2VDb25u
ZWN0aW9uVG9DbGllbnQ+KGNvbm5lY3Rpb24sIGlkZW50aWZpZXIpOworCisgICAgQVNTRVJUKGFk
ZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPmlwY0Nvbm5lY3Rpb24oKSA9PSBjb25uZWN0aW9uKTsK
KyAgICByZXR1cm4gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+Y29ubmVjdGlvblRvQ2xpZW50
KCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZVJlZ2lzdHJ5OjpyZW1vdmVDb25uZWN0aW9uVG9DbGll
bnQoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uKQoreworICAgIGF1dG8gYWxs
Q29ubmVjdGlvbnNUb0NsaWVudCA9IHN0ZDo6ZXhjaGFuZ2UobV9jb25uZWN0aW9uc1RvQ2xpZW50
LCB7IH0pOworICAgIGZvciAoYXV0byYgW2lkZW50aWZpZXIsIGNvbm5lY3Rpb25Ub0NsaWVudF0g
OiBhbGxDb25uZWN0aW9uc1RvQ2xpZW50KSB7CisgICAgICAgIGlmIChjb25uZWN0aW9uVG9DbGll
bnQtPmlwY0Nvbm5lY3Rpb24oKSAhPSBjb25uZWN0aW9uKSB7CisgICAgICAgICAgICBtX2Nvbm5l
Y3Rpb25zVG9DbGllbnQuYWRkKGlkZW50aWZpZXIsIFdURk1vdmUoY29ubmVjdGlvblRvQ2xpZW50
KSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBjb25uZWN0aW9u
VG9DbGllbnQtPmNvbm5lY3Rpb25Ub0NsaWVudCgpLmNvbm5lY3Rpb25Ub0NsaWVudENsb3NlZCgp
OworICAgIH0KK30KKwordm9pZCBJREJTdG9yYWdlUmVnaXN0cnk6OnJlZ2lzdGVyQ29ubmVjdGlv
bihXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYgY29ubmVj
dGlvbikKK3sKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBjb25uZWN0aW9uLmlkZW50aWZpZXIoKTsK
KyAgICBBU1NFUlQoIW1fY29ubmVjdGlvbnMuY29udGFpbnMoaWRlbnRpZmllcikpOworCisgICAg
bV9jb25uZWN0aW9ucy5hZGQoaWRlbnRpZmllciwgY29ubmVjdGlvbik7Cit9CisKK3ZvaWQgSURC
U3RvcmFnZVJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQ29ubmVjdGlvbihXZWJDb3JlOjpJREJTZXJ2ZXI6
OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYgY29ubmVjdGlvbikKK3sKKyAgICBhdXRvIGlk
ZW50aWZpZXIgPSBjb25uZWN0aW9uLmlkZW50aWZpZXIoKTsKKyAgICBBU1NFUlQobV9jb25uZWN0
aW9ucy5jb250YWlucyhpZGVudGlmaWVyKSk7CisKKyAgICBtX2Nvbm5lY3Rpb25zLnJlbW92ZShp
ZGVudGlmaWVyKTsKK30KKwordm9pZCBJREJTdG9yYWdlUmVnaXN0cnk6OnJlZ2lzdGVyVHJhbnNh
Y3Rpb24oV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0
cmFuc2FjdGlvbikKK3sKKyAgICBhdXRvIGlkZW50aWZpZXIgPSB0cmFuc2FjdGlvbi5pbmZvKCku
aWRlbnRpZmllcigpOworICAgIEFTU0VSVCghbV90cmFuc2FjdGlvbnMuY29udGFpbnMoaWRlbnRp
ZmllcikpOworCisgICAgbV90cmFuc2FjdGlvbnMuYWRkKGlkZW50aWZpZXIsIHRyYW5zYWN0aW9u
KTsKK30KKwordm9pZCBJREJTdG9yYWdlUmVnaXN0cnk6OnVucmVnaXN0ZXJUcmFuc2FjdGlvbihX
ZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0
aW9uKQoreworICAgIGF1dG8gaWRlbnRpZmllciA9IHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlm
aWVyKCk7CisgICAgQVNTRVJUKG1fdHJhbnNhY3Rpb25zLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsK
KworICAgIG1fdHJhbnNhY3Rpb25zLnJlbW92ZShpZGVudGlmaWVyKTsKK30KKworV2ViQ29yZTo6
SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24qIElEQlN0b3JhZ2VSZWdpc3Ry
eTo6Z2V0Q29ubmVjdGlvbih1aW50NjRfdCBpZGVudGlmaWVyKQoreworICAgIHJldHVybiBtX2Nv
bm5lY3Rpb25zLmdldChpZGVudGlmaWVyKS5nZXQoKTsKK30KKworV2ViQ29yZTo6SURCU2VydmVy
OjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uKiBJREJTdG9yYWdlUmVnaXN0cnk6OmdldFRy
YW5zYWN0aW9uKFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciBpZGVudGlmaWVyKQorewor
ICAgIHJldHVybiBtX3RyYW5zYWN0aW9ucy5nZXQoaWRlbnRpZmllcikuZ2V0KCk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VSZWdpc3RyeS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VSZWdpc3RyeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQyMzRlMGU0
MWExZmM1ZjNiYjk5MWFkYmQyZTA2MDJjMzhlOTQ1ODQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZVJlZ2lzdHJ5LmgKQEAg
LTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ29u
bmVjdGlvbi5oIgorI2luY2x1ZGUgPFdlYkNvcmUvSURCUmVzb3VyY2VJZGVudGlmaWVyLmg+Cisj
aW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNl
IElEQlNlcnZlciB7CitjbGFzcyBVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb247CitjbGFzcyBV
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOworfQorfQorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworY2xhc3MgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDsKKworY2xhc3MgSURCU3RvcmFn
ZVJlZ2lzdHJ5IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBJ
REJTdG9yYWdlUmVnaXN0cnkoKTsKKyAgICBXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQkNvbm5lY3Rp
b25Ub0NsaWVudCYgZ2V0T3JDcmVhdGVDb25uZWN0aW9uVG9DbGllbnQoSVBDOjpDb25uZWN0aW9u
OjpVbmlxdWVJRCwgV2ViQ29yZTo6SURCQ29ubmVjdGlvbklkZW50aWZpZXIpOworICAgIHZvaWQg
cmVtb3ZlQ29ubmVjdGlvblRvQ2xpZW50KElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQpOworICAg
IHZvaWQgcmVnaXN0ZXJDb25uZWN0aW9uKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0
YWJhc2VDb25uZWN0aW9uJik7CisgICAgdm9pZCB1bnJlZ2lzdGVyQ29ubmVjdGlvbihXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYpOworICAgIFdlYkNvcmU6
OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uKiBnZXRDb25uZWN0aW9uKHVp
bnQ2NF90IGlkZW50aWZpZXIpOworICAgIHZvaWQgcmVnaXN0ZXJUcmFuc2FjdGlvbihXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mKTsKKyAgICB2b2lkIHVu
cmVnaXN0ZXJUcmFuc2FjdGlvbihXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNl
VHJhbnNhY3Rpb24mKTsKKyAgICBXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNl
VHJhbnNhY3Rpb24qIGdldFRyYW5zYWN0aW9uKFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmll
cik7CisKK3ByaXZhdGU6CisgICAgSGFzaE1hcDxXZWJDb3JlOjpJREJDb25uZWN0aW9uSWRlbnRp
Zmllciwgc3RkOjp1bmlxdWVfcHRyPElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ+PiBtX2Nv
bm5lY3Rpb25zVG9DbGllbnQ7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgV2Vha1B0cjxXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbj4+IG1fY29ubmVjdGlvbnM7
CisgICAgSGFzaE1hcDxXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXIsIFdlYWtQdHI8V2Vi
Q29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uPj4gbV90cmFuc2Fj
dGlvbnM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdl
ci5jcHAKaW5kZXggOWU2MDZiZDI5YTFiOTAwMDI4MmI5NjQ3NzE4MDIwMzVlZWQ5NzhjMC4uYmUy
NWUzYmYwOWY2MDVjNjM0ZGJkM2Q0YmNmYzhlMjVjMzI4YTRlZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdl
TWFuYWdlci5jcHAKQEAgLTI2LDE4ICsyNiwyNSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIk5ldHdvcmtTdG9yYWdlTWFuYWdlci5oIgogCisjaW5jbHVkZSAiQ2FjaGVTdG9yYWdl
RW5naW5lLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeS5oIgog
I2luY2x1ZGUgIkZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlci5oIgorI2luY2x1ZGUgIklEQlN0b3Jh
Z2VNYW5hZ2VyLmgiCisjaW5jbHVkZSAiSURCU3RvcmFnZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAi
TG9jYWxTdG9yYWdlTWFuYWdlci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJO
ZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrU3RvcmFnZU1h
bmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk9yaWdpblN0b3JhZ2VNYW5hZ2VyLmgiCisjaW5j
bHVkZSAiUXVvdGFNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyLmgi
CiAjaW5jbHVkZSAiU3RvcmFnZUFyZWFCYXNlLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFyZWFNYXBN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhUmVnaXN0cnkuaCIKICNpbmNsdWRlICJX
ZWJzaXRlRGF0YVR5cGUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmg+CiAjaW5jbHVkZSA8
cGFsL2NyeXB0by9DcnlwdG9EaWdlc3QuaD4KICNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KICNpbmNs
dWRlIDx3dGYvU3VzcGVuZGFibGVXb3JrUXVldWUuaD4KQEAgLTEwMCwyMiArMTA3LDI4IEBAIHN0
YXRpYyB2b2lkIGRlbGV0ZU9yaWdpbkZpbGVJZk5lY2Vzc2FyeShjb25zdCBTdHJpbmcmIGZpbGVQ
YXRoKQogICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGZpbGVQYXRoKTsKIH0KIAotUmVm
PE5ldHdvcmtTdG9yYWdlTWFuYWdlcj4gTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjcmVhdGUoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYg
Y3VzdG9tTG9jYWxTdG9yYWdlUGF0aCkKK1JlZjxOZXR3b3JrU3RvcmFnZU1hbmFnZXI+IE5ldHdv
cmtTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgSVBDOjpD
b25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0
IFN0cmluZyYgY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21JREJT
dG9yYWdlUGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21DYWNoZVN0b3JhZ2VQYXRoLCB1aW50NjRf
dCBkZWZhdWx0T3JpZ2luUXVvdGEsIHVpbnQ2NF90IGRlZmF1bHRUaGlyZFBhcnR5T3JpZ2luUXVv
dGEpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyKHNl
c3Npb25JRCwgcGF0aCwgY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCkpOworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IE5ldHdvcmtTdG9yYWdlTWFuYWdlcihzZXNzaW9uSUQsIGNvbm5lY3Rpb24sIHBh
dGgsIGN1c3RvbUxvY2FsU3RvcmFnZVBhdGgsIGN1c3RvbUlEQlN0b3JhZ2VQYXRoLCBjdXN0b21D
YWNoZVN0b3JhZ2VQYXRoLCBkZWZhdWx0T3JpZ2luUXVvdGEsIGRlZmF1bHRUaGlyZFBhcnR5T3Jp
Z2luUXVvdGEpKTsKIH0KIAotTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpOZXR3b3JrU3RvcmFnZU1h
bmFnZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0
IFN0cmluZyYgY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCkKK05ldHdvcmtTdG9yYWdlTWFuYWdlcjo6
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgSVBDOjpDb25u
ZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0
cmluZyYgY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21JREJTdG9y
YWdlUGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21DYWNoZVN0b3JhZ2VQYXRoLCB1aW50NjRfdCBk
ZWZhdWx0T3JpZ2luUXVvdGEsIHVpbnQ2NF90IGRlZmF1bHRUaGlyZFBhcnR5T3JpZ2luUXVvdGEp
CiAgICAgOiBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCiAgICAgLCBtX3F1ZXVlKFN1c3BlbmRhYmxl
V29ya1F1ZXVlOjpjcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuU3RvcmFnZSIpKQorICAgICwgbV9k
ZWZhdWx0T3JpZ2luUXVvdGEoZGVmYXVsdE9yaWdpblF1b3RhKQorICAgICwgbV9kZWZhdWx0VGhp
cmRQYXJ0eU9yaWdpblF1b3RhKGRlZmF1bHRUaGlyZFBhcnR5T3JpZ2luUXVvdGEpCisgICAgLCBt
X3BhcmVudENvbm5lY3Rpb24oY29ubmVjdGlvbikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNN
YWluKCkpOwogCi0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBS
ZWYgeyAqdGhpcyB9LCBwYXRoID0gcGF0aC5pc29sYXRlZENvcHkoKSwgY3VzdG9tTG9jYWxTdG9y
YWdlUGF0aCA9IGNyb3NzVGhyZWFkQ29weShjdXN0b21Mb2NhbFN0b3JhZ2VQYXRoKV0oKSBtdXRh
YmxlIHsKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7
ICp0aGlzIH0sIHBhdGggPSBwYXRoLmlzb2xhdGVkQ29weSgpLCBjdXN0b21Mb2NhbFN0b3JhZ2VQ
YXRoID0gY3Jvc3NUaHJlYWRDb3B5KGN1c3RvbUxvY2FsU3RvcmFnZVBhdGgpLCBjdXN0b21JREJT
dG9yYWdlUGF0aCA9IGNyb3NzVGhyZWFkQ29weShjdXN0b21JREJTdG9yYWdlUGF0aCksIGN1c3Rv
bUNhY2hlU3RvcmFnZVBhdGggPSBjcm9zc1RocmVhZENvcHkoY3VzdG9tQ2FjaGVTdG9yYWdlUGF0
aCldKCkgbXV0YWJsZSB7CiAgICAgICAgIG1fZmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3Ry
eSA9IG1ha2VVbmlxdWU8RmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeT4oKTsKICAgICAg
ICAgbV9zdG9yYWdlQXJlYVJlZ2lzdHJ5ID0gbWFrZVVuaXF1ZTxTdG9yYWdlQXJlYVJlZ2lzdHJ5
PigpOworICAgICAgICBtX2lkYlN0b3JhZ2VSZWdpc3RyeSA9IG1ha2VVbmlxdWU8SURCU3RvcmFn
ZVJlZ2lzdHJ5PigpOwogICAgICAgICBtX3BhdGggPSBwYXRoOwogICAgICAgICBtX2N1c3RvbUxv
Y2FsU3RvcmFnZVBhdGggPSBjdXN0b21Mb2NhbFN0b3JhZ2VQYXRoOworICAgICAgICBtX2N1c3Rv
bUlEQlN0b3JhZ2VQYXRoID0gY3VzdG9tSURCU3RvcmFnZVBhdGg7CisgICAgICAgIG1fY3VzdG9t
Q2FjaGVTdG9yYWdlUGF0aCA9IGN1c3RvbUNhY2hlU3RvcmFnZVBhdGg7CiAgICAgICAgIGlmICgh
bV9wYXRoLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgYXV0byBzYWx0UGF0aCA9IEZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3BhdGgsICJzYWx0Iik7CiAgICAgICAgICAg
ICBtX3NhbHQgPSB2YWx1ZU9yRGVmYXVsdChGaWxlU3lzdGVtOjpyZWFkT3JNYWtlU2FsdChzYWx0
UGF0aCkpOwpAQCAtMTMxLDcgKzE0NCwxMCBAQCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6On5OZXR3
b3JrU3RvcmFnZU1hbmFnZXIoKQogCiBib29sIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y2FuSGFu
ZGxlVHlwZXMoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gdHlwZXMpCiB7Ci0gICAgcmV0dXJu
IHR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6TG9jYWxTdG9yYWdlKSB8fCB0eXBlcy5j
b250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlNlc3Npb25TdG9yYWdlKSB8fCB0eXBlcy5jb250YWlu
cyhXZWJzaXRlRGF0YVR5cGU6OkZpbGVTeXN0ZW0pOworICAgIHJldHVybiB0eXBlcy5jb250YWlu
cyhXZWJzaXRlRGF0YVR5cGU6OkxvY2FsU3RvcmFnZSkKKyAgICAgICAgfHwgdHlwZXMuY29udGFp
bnMoV2Vic2l0ZURhdGFUeXBlOjpTZXNzaW9uU3RvcmFnZSkKKyAgICAgICAgfHwgdHlwZXMuY29u
dGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpGaWxlU3lzdGVtKQorICAgICAgICB8fCB0eXBlcy5jb250
YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcyk7CiB9CiAKIHZvaWQgTmV0
d29ya1N0b3JhZ2VNYW5hZ2VyOjpjbG9zZSgpCkBAIC0xNzAsNiArMTg2LDcgQEAgdm9pZCBOZXR3
b3JrU3RvcmFnZU1hbmFnZXI6OnN0b3BSZWNlaXZpbmdNZXNzYWdlRnJvbUNvbm5lY3Rpb24oSVBD
OjpDb25uZWN0aW9uJgogCiAgICAgY29ubmVjdGlvbi5yZW1vdmVXb3JrUXVldWVNZXNzYWdlUmVj
ZWl2ZXIoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpKTsKICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7
ICp0aGlzIH0sIGNvbm5lY3Rpb24gPSBjb25uZWN0aW9uLnVuaXF1ZUlEKCldKCkgbXV0YWJsZSB7
CisgICAgICAgIG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT5yZW1vdmVDb25uZWN0aW9uVG9DbGllbnQo
Y29ubmVjdGlvbik7CiAgICAgICAgIG1fbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcnMucmVtb3Zl
SWYoWyZdKGF1dG8mIGVudHJ5KSB7CiAgICAgICAgICAgICBhdXRvJiBtYW5hZ2VyID0gZW50cnku
dmFsdWU7CiAgICAgICAgICAgICBtYW5hZ2VyLT5jb25uZWN0aW9uQ2xvc2VkKGNvbm5lY3Rpb24p
OwpAQCAtMjE4LDcgKzIzNSwxNCBAQCBPcmlnaW5TdG9yYWdlTWFuYWdlciYgTmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyOjpsb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2VyKGNvbnN0IFdlYgogICAgICAgICBh
dXRvIHdyaXRlT3JpZ2luRmlsZUZ1bmN0aW9uID0gW29yaWdpbkZpbGUgPSBvcmlnaW5GaWxlUGF0
aChvcmlnaW5EaXJlY3RvcnkpLCBvcmlnaW5dKCkgewogICAgICAgICAgICAgd3JpdGVPcmlnaW5U
b0ZpbGVJZk5lY2Vzc2FyeShvcmlnaW5GaWxlLCBvcmlnaW4pOwogICAgICAgICB9OwotICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxPcmlnaW5TdG9yYWdlTWFuYWdlcj4oV1RGTW92ZSh3cml0ZU9y
aWdpbkZpbGVGdW5jdGlvbiksIFdURk1vdmUob3JpZ2luRGlyZWN0b3J5KSwgTG9jYWxTdG9yYWdl
TWFuYWdlcjo6bG9jYWxTdG9yYWdlRmlsZVBhdGgobV9jdXN0b21Mb2NhbFN0b3JhZ2VQYXRoLCBv
cmlnaW4pKTsKKyAgICAgICAgYXV0byBsb2NhbFN0b3JhZ2VQYXRoID0gTG9jYWxTdG9yYWdlTWFu
YWdlcjo6bG9jYWxTdG9yYWdlRmlsZVBhdGgobV9jdXN0b21Mb2NhbFN0b3JhZ2VQYXRoLCBvcmln
aW4pOworICAgICAgICBhdXRvIGlkYlN0b3JhZ2VQYXRoID0gSURCU3RvcmFnZU1hbmFnZXI6Omlk
YlN0b3JhZ2VPcmlnaW5EaXJlY3RvcnkobV9jdXN0b21JREJTdG9yYWdlUGF0aCwgb3JpZ2luKTsK
KyAgICAgICAgYXV0byBjYWNoZVN0b3JhZ2VQYXRoID0gQ2FjaGVTdG9yYWdlOjpFbmdpbmU6OnN0
b3JhZ2VQYXRoKG1fY3VzdG9tQ2FjaGVTdG9yYWdlUGF0aCwgb3JpZ2luKTsKKyAgICAgICAgdWlu
dDY0X3QgcXVvdGEgPSBvcmlnaW4udG9wT3JpZ2luID09IG9yaWdpbi5jbGllbnRPcmlnaW4gPyBt
X2RlZmF1bHRPcmlnaW5RdW90YSA6IG1fZGVmYXVsdFRoaXJkUGFydHlPcmlnaW5RdW90YTsKKyAg
ICAgICAgUXVvdGFNYW5hZ2VyOjpJbmNyZWFzZVF1b3RhRnVuY3Rpb24gaW5jcmVhc2VRdW90YUZ1
bmN0aW9uID0gW3Nlc3Npb25JRCA9IG1fc2Vzc2lvbklELCBvcmlnaW4sIGNvbm5lY3Rpb24gPSBt
X3BhcmVudENvbm5lY3Rpb25dIChhdXRvIGlkZW50aWZpZXIsIGF1dG8gY3VycmVudFF1b3RhLCBh
dXRvIGN1cnJlbnRVc2FnZSwgYXV0byByZXF1ZXN0ZWRJbmNyZWFzZSkgbXV0YWJsZSB7CisgICAg
ICAgICAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQoY29ubmVjdGlvbiwgTWVzc2FnZXM6Ok5ldHdv
cmtQcm9jZXNzUHJveHk6OkluY3JlYXNlUXVvdGEoc2Vzc2lvbklELCBvcmlnaW4sIGlkZW50aWZp
ZXIsIGN1cnJlbnRRdW90YSwgY3VycmVudFVzYWdlLCByZXF1ZXN0ZWRJbmNyZWFzZSksIDApOwor
ICAgICAgICB9OworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxPcmlnaW5TdG9yYWdlTWFuYWdl
cj4oV1RGTW92ZSh3cml0ZU9yaWdpbkZpbGVGdW5jdGlvbiksIHF1b3RhLCBXVEZNb3ZlKGluY3Jl
YXNlUXVvdGFGdW5jdGlvbiksIFdURk1vdmUob3JpZ2luRGlyZWN0b3J5KSwgV1RGTW92ZShsb2Nh
bFN0b3JhZ2VQYXRoKSwgV1RGTW92ZShpZGJTdG9yYWdlUGF0aCksIFdURk1vdmUoY2FjaGVTdG9y
YWdlUGF0aCkpOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKIH0KIApAQCAtMjc4LDYgKzMwMiwx
NiBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y2xlYXJTdG9yYWdlRm9yVGVzdGluZyhD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgYwogICAgIH0pOwogfQogCit2b2lkIE5ldHdvcmtT
dG9yYWdlTWFuYWdlcjo6ZGlkSW5jcmVhc2VRdW90YShjb25zdCBXZWJDb3JlOjpDbGllbnRPcmln
aW4mIG9yaWdpbiwgUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyIGlkZW50aWZpZXIsIHN0
ZDo6b3B0aW9uYWw8dWludDY0X3Q+IG5ld1F1b3RhKQoreworICAgIEFTU0VSVChSdW5Mb29wOjpp
c01haW4oKSk7CisKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IFJlZiB7ICp0aGlzIH0sIG9yaWdpbiA9IGNyb3NzVGhyZWFkQ29weShvcmlnaW4pLCBpZGVudGlm
aWVyLCBuZXdRdW90YV0oKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGF1dG8gbWFuYWdlciA9IG1f
bG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcnMuZ2V0KG9yaWdpbikpCisgICAgICAgICAgICBtYW5h
Z2VyLT5xdW90YU1hbmFnZXIoKS5kaWRJbmNyZWFzZVF1b3RhKGlkZW50aWZpZXIsIG5ld1F1b3Rh
KTsKKyAgICB9KTsKK30KKwogdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmZpbGVTeXN0ZW1H
ZXREaXJlY3RvcnkoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpD
bGllbnRPcmlnaW4mIG9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxXZWJD
b3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4p
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkp
OwpAQCAtNDQ4LDYgKzQ4Miw5IEBAIEhhc2hTZXQ8V2ViQ29yZTo6Q2xpZW50T3JpZ2luPiBOZXR3
b3JrU3RvcmFnZU1hbmFnZXI6OmdldEFsbE9yaWdpbnMoKQogICAgIGZvciAoYXV0byYgb3JpZ2lu
IDogTG9jYWxTdG9yYWdlTWFuYWdlcjo6b3JpZ2luc09mTG9jYWxTdG9yYWdlRGF0YShtX2N1c3Rv
bUxvY2FsU3RvcmFnZVBhdGgpKQogICAgICAgICBhbGxPcmlnaW5zLmFkZChXZWJDb3JlOjpDbGll
bnRPcmlnaW4geyBvcmlnaW4sIG9yaWdpbiB9KTsKIAorICAgIGZvciAoYXV0byYgb3JpZ2luIDog
SURCU3RvcmFnZU1hbmFnZXI6Om9yaWdpbnNPZklEQlN0b3JhZ2VEYXRhKG1fY3VzdG9tSURCU3Rv
cmFnZVBhdGgpKQorICAgICAgICBhbGxPcmlnaW5zLmFkZChvcmlnaW4pOworCiAgICAgcmV0dXJu
IGFsbE9yaWdpbnM7CiB9CiAKQEAgLTU3NSwxMiArNjEyLDEyIEBAIHZvaWQgTmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyOjptb3ZlRGF0YShjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHNv
dXJjZSwKICAgICAgICAgYXV0byB0YXJnZXRPcmlnaW4gPSBXZWJDb3JlOjpDbGllbnRPcmlnaW4g
eyB0YXJnZXQsIHRhcmdldCB9OwogICAgICAgICAKICAgICAgICAgLy8gQ2xlYXIgZXhpc3Rpbmcg
ZGF0YSBvZiB0YXJnZXQgb3JpZ2luLgotICAgICAgICBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBl
PiB0eXBlcyA9IHsgV2Vic2l0ZURhdGFUeXBlOjpGaWxlU3lzdGVtLCBXZWJzaXRlRGF0YVR5cGU6
OkxvY2FsU3RvcmFnZSwgV2Vic2l0ZURhdGFUeXBlOjpTZXNzaW9uU3RvcmFnZSAgfTsKKyAgICAg
ICAgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gdHlwZXMgPSB7IFdlYnNpdGVEYXRhVHlwZTo6
RmlsZVN5c3RlbSwgV2Vic2l0ZURhdGFUeXBlOjpMb2NhbFN0b3JhZ2UsIFdlYnNpdGVEYXRhVHlw
ZTo6U2Vzc2lvblN0b3JhZ2UsIFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzICB9
OwogICAgICAgICBsb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2VyKHRhcmdldE9yaWdpbikuZGVsZXRl
RGF0YSh0eXBlcywgLVdhbGxUaW1lOjppbmZpbml0eSgpKTsKICAgICAgICAgcmVtb3ZlT3JpZ2lu
U3RvcmFnZU1hbmFnZXJJZlBvc3NpYmxlKHRhcmdldE9yaWdpbik7CiAKICAgICAgICAgLy8gTW92
ZSBkYXRhIGZyb20gc291cmNlIG9yaWdpbiB0byB0YXJnZXQgb3JpZ2luLgotICAgICAgICBsb2Nh
bE9yaWdpblN0b3JhZ2VNYW5hZ2VyKHNvdXJjZU9yaWdpbikubW92ZURhdGEob3JpZ2luRGlyZWN0
b3J5UGF0aChtX3BhdGgsIHRhcmdldE9yaWdpbiwgbV9zYWx0KSwgTG9jYWxTdG9yYWdlTWFuYWdl
cjo6bG9jYWxTdG9yYWdlRmlsZVBhdGgobV9jdXN0b21Mb2NhbFN0b3JhZ2VQYXRoLCB0YXJnZXRP
cmlnaW4pKTsKKyAgICAgICAgbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcihzb3VyY2VPcmlnaW4p
Lm1vdmVEYXRhKG9yaWdpbkRpcmVjdG9yeVBhdGgobV9wYXRoLCB0YXJnZXRPcmlnaW4sIG1fc2Fs
dCksIExvY2FsU3RvcmFnZU1hbmFnZXI6OmxvY2FsU3RvcmFnZUZpbGVQYXRoKG1fY3VzdG9tTG9j
YWxTdG9yYWdlUGF0aCwgdGFyZ2V0T3JpZ2luKSwgSURCU3RvcmFnZU1hbmFnZXI6OmlkYlN0b3Jh
Z2VPcmlnaW5EaXJlY3RvcnkobV9jdXN0b21JREJTdG9yYWdlUGF0aCwgdGFyZ2V0T3JpZ2luKSk7
CiAgICAgICAgIHJlbW92ZU9yaWdpblN0b3JhZ2VNYW5hZ2VySWZQb3NzaWJsZShzb3VyY2VPcmln
aW4pOwogCiAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CkBAIC01OTUsNiArNjMyLDggQEAgdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFn
ZXI6OnN1c3BlbmQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGUK
ICAgICAgICAgZm9yIChhdXRvJiBtYW5hZ2VyIDogbV9sb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2Vy
cy52YWx1ZXMoKSkgewogICAgICAgICAgICAgaWYgKGF1dG8gbG9jYWxTdG9yYWdlTWFuYWdlciA9
IG1hbmFnZXItPmV4aXN0aW5nTG9jYWxTdG9yYWdlTWFuYWdlcigpKQogICAgICAgICAgICAgICAg
IGxvY2FsU3RvcmFnZU1hbmFnZXItPnN5bmNMb2NhbFN0b3JhZ2UoKTsKKyAgICAgICAgICAgIGlm
IChhdXRvIGlkYlN0b3JhZ2VNYW5hZ2VyID0gbWFuYWdlci0+ZXhpc3RpbmdJREJTdG9yYWdlTWFu
YWdlcigpKQorICAgICAgICAgICAgICAgIGlkYlN0b3JhZ2VNYW5hZ2VyLT5zdG9wRGF0YWJhc2VB
Y3Rpdml0aWVzRm9yU3VzcGVuZCgpOwogICAgICAgICB9CiAgICAgfSwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOwogfQpAQCAtNjMyLDYgKzY3MSw1MiBAQCB2b2lkIE5ldHdvcmtTdG9yYWdl
TWFuYWdlcjo6c3luY0xvY2FsU3RvcmFnZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldAogICAgIH0pOwogfQogCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6cmVnaXN0ZXJU
ZW1wb3JhcnlCbG9iRmlsZVBhdGhzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGZpbGVQYXRocykKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWlu
KCkpOworCisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYg
eyAqdGhpcyB9LCBjb25uZWN0aW9uSUQgPSBjb25uZWN0aW9uLnVuaXF1ZUlEKCksIGZpbGVQYXRo
cyA9IGNyb3NzVGhyZWFkQ29weShmaWxlUGF0aHMpXSB7CisgICAgICAgIGF1dG8mIHRlbXBvcmFy
eUJsb2JQYXRocyA9IG1fdGVtcG9yYXJ5QmxvYlBhdGhzQnlDb25uZWN0aW9uLmVuc3VyZShjb25u
ZWN0aW9uSUQsIFtdIHsKKyAgICAgICAgICAgIHJldHVybiBIYXNoU2V0PFN0cmluZz4geyB9Owor
ICAgICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CisgICAgICAgIHRlbXBvcmFyeUJsb2JQYXRocy5h
ZGQoZmlsZVBhdGhzLmJlZ2luKCksIGZpbGVQYXRocy5lbmQoKSk7CisgICAgfSk7Cit9CisKK3Zv
aWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpyZXF1ZXN0U3BhY2UoY29uc3QgV2ViQ29yZTo6Q2xp
ZW50T3JpZ2luJiBvcmlnaW4sIHVpbnQ2NF90IHNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFp
bigpKTsKKworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVm
IHsgKnRoaXMgfSwgb3JpZ2luID0gY3Jvc3NUaHJlYWRDb3B5KG9yaWdpbiksIHNpemUsIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Cisg
ICAgICAgIGxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIob3JpZ2luKS5xdW90YU1hbmFnZXIoKS5y
ZXF1ZXN0U3BhY2Uoc2l6ZSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildKGF1dG8gZGVjaXNpb24pIG11dGFibGUgeworICAgICAgICAgICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpLCBkZWNpc2lvbl0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihkZWNpc2lvbiA9PSBRdW90YU1hbmFnZXI6OkRlY2lzaW9uOjpHcmFudCk7CisgICAg
ICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyOjpyZXNldFF1b3RhRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsK
KworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRo
aXMgfSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBt
dXRhYmxlIHsKKyAgICAgICAgZm9yIChhdXRvJiBtYW5hZ2VyIDogbV9sb2NhbE9yaWdpblN0b3Jh
Z2VNYW5hZ2Vycy52YWx1ZXMoKSkKKyAgICAgICAgICAgIG1hbmFnZXItPnF1b3RhTWFuYWdlcigp
LnJlc2V0UXVvdGFGb3JUZXN0aW5nKCk7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRj
aChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgfSk7Cit9CisKK3ZvaWQgTmV0d29y
a1N0b3JhZ2VNYW5hZ2VyOjpyZXNldFF1b3RhVXBkYXRlZEJhc2VkT25Vc2FnZUZvclRlc3Rpbmco
Y29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4pCit7CisgICAgQVNTRVJUKFJ1bkxv
b3A6OmlzTWFpbigpKTsKKworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gUmVmIHsgKnRoaXMgfSwgb3JpZ2luID0gY3Jvc3NUaHJlYWRDb3B5KG9yaWdpbildKCkg
bXV0YWJsZSB7CisgICAgICAgIGlmIChhdXRvIG1hbmFnZXIgPSBtX2xvY2FsT3JpZ2luU3RvcmFn
ZU1hbmFnZXJzLmdldChvcmlnaW4pKQorICAgICAgICAgICAgbWFuYWdlci0+cXVvdGFNYW5hZ2Vy
KCkucmVzZXRRdW90YVVwZGF0ZWRCYXNlZE9uVXNhZ2VGb3JUZXN0aW5nKCk7CisgICAgfSk7Cit9
CisKIHZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjb25uZWN0VG9TdG9yYWdlQXJlYShJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFdlYkNvcmU6OlN0b3JhZ2VUeXBlIHR5cGUsIFN0b3Jh
Z2VBcmVhTWFwSWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBTdG9yYWdlTmFtZXNwYWNlSWRl
bnRpZmllciBuYW1lc3BhY2VJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4m
IG9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQXJlYUlkZW50aWZpZXIsIEhh
c2hNYXA8U3RyaW5nLCBTdHJpbmc+LCB1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CkBAIC03MTksNSArODA0LDE5NSBAQCB2
b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y2xlYXIoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBTdG9yYWdlQXJlYUlkZW50aQogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKK3Zv
aWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpvcGVuRGF0YWJhc2UoSVBDOjpDb25uZWN0aW9uJiBj
b25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEpCit7
CisgICAgYXV0byYgY29ubmVjdGlvblRvQ2xpZW50ID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPmdl
dE9yQ3JlYXRlQ29ubmVjdGlvblRvQ2xpZW50KGNvbm5lY3Rpb24udW5pcXVlSUQoKSwgcmVxdWVz
dERhdGEucmVxdWVzdElkZW50aWZpZXIoKS5jb25uZWN0aW9uSWRlbnRpZmllcigpKTsKKyAgICBs
b2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2VyKHJlcXVlc3REYXRhLmRhdGFiYXNlSWRlbnRpZmllcigp
Lm9yaWdpbigpKS5pZGJTdG9yYWdlTWFuYWdlcigqbV9pZGJTdG9yYWdlUmVnaXN0cnkpLm9wZW5E
YXRhYmFzZShjb25uZWN0aW9uVG9DbGllbnQsIHJlcXVlc3REYXRhKTsKK30KKwordm9pZCBOZXR3
b3JrU3RvcmFnZU1hbmFnZXI6Om9wZW5EQlJlcXVlc3RDYW5jZWxsZWQoY29uc3QgV2ViQ29yZTo6
SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhKQoreworICAgIGxvY2FsT3JpZ2luU3RvcmFnZU1h
bmFnZXIocmVxdWVzdERhdGEuZGF0YWJhc2VJZGVudGlmaWVyKCkub3JpZ2luKCkpLmlkYlN0b3Jh
Z2VNYW5hZ2VyKCptX2lkYlN0b3JhZ2VSZWdpc3RyeSkub3BlbkRCUmVxdWVzdENhbmNlbGxlZChy
ZXF1ZXN0RGF0YSk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVEYXRh
YmFzZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OklEQlJlcXVl
c3REYXRhJiByZXF1ZXN0RGF0YSkKK3sKKyAgICBhdXRvJiBjb25uZWN0aW9uVG9DbGllbnQgPSBt
X2lkYlN0b3JhZ2VSZWdpc3RyeS0+Z2V0T3JDcmVhdGVDb25uZWN0aW9uVG9DbGllbnQoY29ubmVj
dGlvbi51bmlxdWVJRCgpLCByZXF1ZXN0RGF0YS5yZXF1ZXN0SWRlbnRpZmllcigpLmNvbm5lY3Rp
b25JZGVudGlmaWVyKCkpOworICAgIGxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIocmVxdWVzdERh
dGEuZGF0YWJhc2VJZGVudGlmaWVyKCkub3JpZ2luKCkpLmlkYlN0b3JhZ2VNYW5hZ2VyKCptX2lk
YlN0b3JhZ2VSZWdpc3RyeSkuZGVsZXRlRGF0YWJhc2UoY29ubmVjdGlvblRvQ2xpZW50LCByZXF1
ZXN0RGF0YSk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjplc3RhYmxpc2hUcmFu
c2FjdGlvbih1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJD
b3JlOjpJREJUcmFuc2FjdGlvbkluZm8mIHRyYW5zYWN0aW9uSW5mbykKK3sKKyAgICBpZiAoYXV0
byBjb25uZWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPmdldENvbm5lY3Rpb24oZGF0YWJh
c2VDb25uZWN0aW9uSWRlbnRpZmllcikpCisgICAgICAgIGNvbm5lY3Rpb24tPmVzdGFibGlzaFRy
YW5zYWN0aW9uKHRyYW5zYWN0aW9uSW5mbyk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5h
Z2VyOjpkYXRhYmFzZUNvbm5lY3Rpb25QZW5kaW5nQ2xvc2UodWludDY0X3QgZGF0YWJhc2VDb25u
ZWN0aW9uSWRlbnRpZmllcikKK3sKKyAgICBpZiAoYXV0byBjb25uZWN0aW9uID0gbV9pZGJTdG9y
YWdlUmVnaXN0cnktPmdldENvbm5lY3Rpb24oZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcikp
CisgICAgICAgIGNvbm5lY3Rpb24tPmNvbm5lY3Rpb25QZW5kaW5nQ2xvc2VGcm9tQ2xpZW50KCk7
Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkYXRhYmFzZUNvbm5lY3Rpb25DbG9z
ZWQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcikKK3sKKyAgICBpZiAoYXV0
byBjb25uZWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPmdldENvbm5lY3Rpb24oZGF0YWJh
c2VDb25uZWN0aW9uSWRlbnRpZmllcikpCisgICAgICAgIGNvbm5lY3Rpb24tPmNvbm5lY3Rpb25D
bG9zZWRGcm9tQ2xpZW50KCk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjphYm9y
dE9wZW5BbmRVcGdyYWRlTmVlZGVkKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZp
ZXIsIGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVu
dGlmaWVyKQoreworICAgIGlmIChhdXRvIHRyYW5zYWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0
cnktPmdldFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllcikpCisgICAgICAgIHRyYW5z
YWN0aW9uLT5hYm9ydFdpdGhvdXRDYWxsYmFjaygpOworCisgICAgaWYgKGF1dG8gY29ubmVjdGlv
biA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT5nZXRDb25uZWN0aW9uKGRhdGFiYXNlQ29ubmVjdGlv
bklkZW50aWZpZXIpKQorICAgICAgICBjb25uZWN0aW9uLT5jb25uZWN0aW9uQ2xvc2VkRnJvbUNs
aWVudCgpOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGlkRmlyZVZlcnNpb25D
aGFuZ2VFdmVudCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBX
ZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBX
ZWJDb3JlOjpJbmRleGVkREI6OkNvbm5lY3Rpb25DbG9zZWRPbkJlaGFsZk9mU2VydmVyIGNvbm5l
Y3Rpb25DbG9zZWQpCit7CisgICAgaWYgKGF1dG8gY29ubmVjdGlvbiA9IG1faWRiU3RvcmFnZVJl
Z2lzdHJ5LT5nZXRDb25uZWN0aW9uKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpKQorICAg
ICAgICBjb25uZWN0aW9uLT5kaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KHJlcXVlc3RJZGVudGlm
aWVyLCBjb25uZWN0aW9uQ2xvc2VkKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6
OmFib3J0VHJhbnNhY3Rpb24oY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0
cmFuc2FjdGlvbklkZW50aWZpZXIpCit7CisgICAgaWYgKGF1dG8gdHJhbnNhY3Rpb24gPSBtX2lk
YlN0b3JhZ2VSZWdpc3RyeS0+Z2V0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZGVudGlmaWVyKSkK
KyAgICAgICAgdHJhbnNhY3Rpb24tPmFib3J0KCk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VN
YW5hZ2VyOjpjb21taXRUcmFuc2FjdGlvbihjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50
aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgcGVuZGluZ1JlcXVlc3RDb3Vu
dCkKK3sKKyAgICBpZiAoYXV0byB0cmFuc2FjdGlvbiA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT5n
ZXRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbklkZW50aWZpZXIpKQorICAgICAgICB0cmFuc2FjdGlv
bi0+Y29tbWl0KHBlbmRpbmdSZXF1ZXN0Q291bnQpOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdl
TWFuYWdlcjo6ZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24odWludDY0
X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCUmVzb3Vy
Y2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpCit7CisgICAgaWYgKGF1dG8gY29u
bmVjdGlvbiA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT5nZXRDb25uZWN0aW9uKGRhdGFiYXNlQ29u
bmVjdGlvbklkZW50aWZpZXIpKQorICAgICAgICBjb25uZWN0aW9uLT5kaWRGaW5pc2hIYW5kbGlu
Z1ZlcnNpb25DaGFuZ2UodHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKK30KKwordm9pZCBOZXR3b3Jr
U3RvcmFnZU1hbmFnZXI6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVl
c3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVJbmZvJiBv
YmplY3RTdG9yZUluZm8pCit7CisgICAgaWYgKGF1dG8gdHJhbnNhY3Rpb24gPSBtX2lkYlN0b3Jh
Z2VSZWdpc3RyeS0+Z2V0VHJhbnNhY3Rpb24ocmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlm
aWVyKCkpKSB7CisgICAgICAgIEFTU0VSVCh0cmFuc2FjdGlvbi0+aXNWZXJzaW9uQ2hhbmdlKCkp
OworICAgICAgICB0cmFuc2FjdGlvbi0+Y3JlYXRlT2JqZWN0U3RvcmUocmVxdWVzdERhdGEsIG9i
amVjdFN0b3JlSW5mbyk7CisgICAgfQorfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6
ZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3RE
YXRhLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSkKK3sKKyAgICBpZiAoYXV0byB0cmFu
c2FjdGlvbiA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT5nZXRUcmFuc2FjdGlvbihyZXF1ZXN0RGF0
YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSkpIHsKKyAgICAgICAgQVNTRVJUKHRyYW5zYWN0aW9u
LT5pc1ZlcnNpb25DaGFuZ2UoKSk7CisgICAgICAgIHRyYW5zYWN0aW9uLT5kZWxldGVPYmplY3RT
dG9yZShyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVOYW1lKTsKKyAgICB9Cit9CisKK3ZvaWQgTmV0
d29ya1N0b3JhZ2VNYW5hZ2VyOjpyZW5hbWVPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJS
ZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBuZXdOYW1lKQoreworICAgIGlmIChhdXRvIHRyYW5zYWN0aW9uID0gbV9p
ZGJTdG9yYWdlUmVnaXN0cnktPmdldFRyYW5zYWN0aW9uKHJlcXVlc3REYXRhLnRyYW5zYWN0aW9u
SWRlbnRpZmllcigpKSkgeworICAgICAgICBBU1NFUlQodHJhbnNhY3Rpb24tPmlzVmVyc2lvbkNo
YW5nZSgpKTsKKyAgICAgICAgdHJhbnNhY3Rpb24tPnJlbmFtZU9iamVjdFN0b3JlKHJlcXVlc3RE
YXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIG5ld05hbWUpOworICAgIH0KK30KKwordm9pZCBO
ZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNsZWFyT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6SURC
UmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIp
Cit7CisgICAgaWYgKGF1dG8gdHJhbnNhY3Rpb24gPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+Z2V0
VHJhbnNhY3Rpb24ocmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCkpKQorICAgICAg
ICB0cmFuc2FjdGlvbi0+Y2xlYXJPYmplY3RTdG9yZShyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZUluZGV4
KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgV2ViQ29y
ZTo6SURCSW5kZXhJbmZvJiBpbmRleEluZm8pCit7CisgICAgaWYgKGF1dG8gdHJhbnNhY3Rpb24g
PSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+Z2V0VHJhbnNhY3Rpb24ocmVxdWVzdERhdGEudHJhbnNh
Y3Rpb25JZGVudGlmaWVyKCkpKQorICAgICAgICB0cmFuc2FjdGlvbi0+Y3JlYXRlSW5kZXgocmVx
dWVzdERhdGEsIGluZGV4SW5mbyk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpk
ZWxldGVJbmRleChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIHVp
bnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpbmRleE5hbWUpCit7
CisgICAgaWYgKGF1dG8gdHJhbnNhY3Rpb24gPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+Z2V0VHJh
bnNhY3Rpb24ocmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCkpKQorICAgICAgICB0
cmFuc2FjdGlvbi0+ZGVsZXRlSW5kZXgocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmll
ciwgaW5kZXhOYW1lKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnJlbmFtZUlu
ZGV4KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgdWludDY0X3Qg
b2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRleElkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgbmV3TmFtZSkKK3sKKyAgICBpZiAoYXV0byB0cmFuc2FjdGlvbiA9IG1faWRiU3RvcmFn
ZVJlZ2lzdHJ5LT5nZXRUcmFuc2FjdGlvbihyZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZp
ZXIoKSkpCisgICAgICAgIHRyYW5zYWN0aW9uLT5yZW5hbWVJbmRleChyZXF1ZXN0RGF0YSwgb2Jq
ZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleElkZW50aWZpZXIsIG5ld05hbWUpOworfQorCit2b2lk
IE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6cHV0T3JBZGQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IFdl
YkNvcmU6OklEQktleURhdGEmIGtleURhdGEsIGNvbnN0IFdlYkNvcmU6OklEQlZhbHVlJiB2YWx1
ZSwgV2ViQ29yZTo6SW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUgb3ZlcndyaXRl
TW9kZSkKK3sKKyAgICBpZiAodmFsdWUuYmxvYlVSTHMoKS5zaXplKCkgIT0gdmFsdWUuYmxvYkZp
bGVQYXRocygpLnNpemUoKSkgeworICAgICAgICBSRUxFQVNFX0xPR19GQVVMVChJbmRleGVkREIs
ICJOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnB1dE9yQWRkOiBOdW1iZXIgb2YgYmxvYiBVUkxzIGRv
ZXNuJ3QgbWF0Y2ggdGhlIG51bWJlciBvZiBibG9iIGZpbGUgcGF0aHMuIik7CisgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gVmFs
aWRhdGUgdGVtcG9yYXJ5IGJsb2IgcGF0aHMgaW4gfHZhbHVlfCB0byBtYWtlIHN1cmUgdGhleSBi
ZWxvbmcgdG8gdGhlIHNvdXJjZSBwcm9jZXNzLgorICAgIGlmICghdmFsdWUuYmxvYkZpbGVQYXRo
cygpLmlzRW1wdHkoKSkgeworICAgICAgICBhdXRvIGl0ID0gbV90ZW1wb3JhcnlCbG9iUGF0aHNC
eUNvbm5lY3Rpb24uZmluZChjb25uZWN0aW9uLnVuaXF1ZUlEKCkpOworICAgICAgICBpZiAoaXQg
PT0gbV90ZW1wb3JhcnlCbG9iUGF0aHNCeUNvbm5lY3Rpb24uZW5kKCkpIHsKKyAgICAgICAgICAg
IFJFTEVBU0VfTE9HX0ZBVUxUKEluZGV4ZWREQiwgIk5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6cHV0
T3JBZGQ6IElEQlZhbHVlIGNvbnRhaW5zIGJsb2IgcGF0aHMgYnV0IG5vbmUgYXJlIGFsbG93ZWQg
Zm9yIHRoaXMgcHJvY2VzcyIpOworICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBhdXRvJiB0ZW1wb3JhcnlC
bG9iUGF0aHNGb3JDb25uZWN0aW9uID0gaXQtPnZhbHVlOworICAgICAgICBmb3IgKGF1dG8mIGJs
b2JGaWxlUGF0aCA6IHZhbHVlLmJsb2JGaWxlUGF0aHMoKSkgeworICAgICAgICAgICAgaWYgKCF0
ZW1wb3JhcnlCbG9iUGF0aHNGb3JDb25uZWN0aW9uLnJlbW92ZShibG9iRmlsZVBhdGgpKSB7Cisg
ICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRkFVTFQoSW5kZXhlZERCLCAiTmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyOjpwdXRPckFkZDogQmxvYiBwYXRoIHdhcyBub3QgY3JlYXRlZCBmb3IgdGhpcyBX
ZWJQcm9jZXNzIik7CisgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisg
ICAgaWYgKGF1dG8gdHJhbnNhY3Rpb24gPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+Z2V0VHJhbnNh
Y3Rpb24ocmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCkpKQorICAgICAgICB0cmFu
c2FjdGlvbi0+cHV0T3JBZGQocmVxdWVzdERhdGEsIGtleURhdGEsIHZhbHVlLCBvdmVyd3JpdGVN
b2RlKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmdldFJlY29yZChjb25zdCBX
ZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IFdlYkNvcmU6OklEQkdl
dFJlY29yZERhdGEmIGdldFJlY29yZERhdGEpCit7CisgICAgaWYgKGF1dG8gdHJhbnNhY3Rpb24g
PSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+Z2V0VHJhbnNhY3Rpb24ocmVxdWVzdERhdGEudHJhbnNh
Y3Rpb25JZGVudGlmaWVyKCkpKQorICAgICAgICB0cmFuc2FjdGlvbi0+Z2V0UmVjb3JkKHJlcXVl
c3REYXRhLCBnZXRSZWNvcmREYXRhKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6
OmdldEFsbFJlY29yZHMoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRh
LCBjb25zdCBXZWJDb3JlOjpJREJHZXRBbGxSZWNvcmRzRGF0YSYgZ2V0QWxsUmVjb3Jkc0RhdGEp
Cit7CisgICAgaWYgKGF1dG8gdHJhbnNhY3Rpb24gPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+Z2V0
VHJhbnNhY3Rpb24ocmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCkpKQorICAgICAg
ICB0cmFuc2FjdGlvbi0+Z2V0QWxsUmVjb3JkcyhyZXF1ZXN0RGF0YSwgZ2V0QWxsUmVjb3Jkc0Rh
dGEpOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Z2V0Q291bnQoY29uc3QgV2Vi
Q29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBXZWJDb3JlOjpJREJLZXlS
YW5nZURhdGEmIGtleVJhbmdlRGF0YSkKK3sKKyAgICBpZiAoYXV0byB0cmFuc2FjdGlvbiA9IG1f
aWRiU3RvcmFnZVJlZ2lzdHJ5LT5nZXRUcmFuc2FjdGlvbihyZXF1ZXN0RGF0YS50cmFuc2FjdGlv
bklkZW50aWZpZXIoKSkpCisgICAgICAgIHRyYW5zYWN0aW9uLT5nZXRDb3VudChyZXF1ZXN0RGF0
YSwga2V5UmFuZ2VEYXRhKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmRlbGV0
ZVJlY29yZChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0
IFdlYkNvcmU6OklEQktleVJhbmdlRGF0YSYga2V5UmFuZ2VEYXRhKQoreworICAgIGlmIChhdXRv
IHRyYW5zYWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPmdldFRyYW5zYWN0aW9uKHJlcXVl
c3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpKSkKKyAgICAgICAgdHJhbnNhY3Rpb24tPmRl
bGV0ZVJlY29yZChyZXF1ZXN0RGF0YSwga2V5UmFuZ2VEYXRhKTsKK30KKwordm9pZCBOZXR3b3Jr
U3RvcmFnZU1hbmFnZXI6Om9wZW5DdXJzb3IoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEm
IHJlcXVlc3REYXRhLCBjb25zdCBXZWJDb3JlOjpJREJDdXJzb3JJbmZvJiBjdXJzb3JJbmZvKQor
eworICAgIGlmIChhdXRvIHRyYW5zYWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPmdldFRy
YW5zYWN0aW9uKHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpKSkKKyAgICAgICAg
dHJhbnNhY3Rpb24tPm9wZW5DdXJzb3IocmVxdWVzdERhdGEsIGN1cnNvckluZm8pOworfQorCit2
b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6aXRlcmF0ZUN1cnNvcihjb25zdCBXZWJDb3JlOjpJ
REJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IFdlYkNvcmU6OklEQkl0ZXJhdGVDdXJz
b3JEYXRhJiBjdXJzb3JEYXRhKQoreworICAgIGlmIChhdXRvIHRyYW5zYWN0aW9uID0gbV9pZGJT
dG9yYWdlUmVnaXN0cnktPmdldFRyYW5zYWN0aW9uKHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRl
bnRpZmllcigpKSkKKyAgICAgICAgdHJhbnNhY3Rpb24tPml0ZXJhdGVDdXJzb3IocmVxdWVzdERh
dGEsIGN1cnNvckRhdGEpOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Z2V0QWxs
RGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29u
c3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgY29u
c3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4pCit7CisgICAgYXV0byYgY29ubmVjdGlv
blRvQ2xpZW50ID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPmdldE9yQ3JlYXRlQ29ubmVjdGlvblRv
Q2xpZW50KGNvbm5lY3Rpb24udW5pcXVlSUQoKSwgcmVxdWVzdElkZW50aWZpZXIuY29ubmVjdGlv
bklkZW50aWZpZXIoKSk7CisgICAgYXV0byByZXN1bHQgPSBsb2NhbE9yaWdpblN0b3JhZ2VNYW5h
Z2VyKG9yaWdpbikuaWRiU3RvcmFnZU1hbmFnZXIoKm1faWRiU3RvcmFnZVJlZ2lzdHJ5KS5nZXRB
bGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMoKTsKKyAgICBjb25uZWN0aW9uVG9DbGllbnQuZGlk
R2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3Zl
KHJlc3VsdCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFu
YWdlci5oCmluZGV4IDE1YzAzNzJlNjZhN2Y2Mjg0OTkyN2YxYzM3ZjE2YTY5NTg3ZjQ1MDEuLjlj
M2QyZDY0MDZmZWU5YjJiNGU2Y2EyNmY3YjY1ZmUwYzc4YjgzYmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VN
YW5hZ2VyLmgKQEAgLTM2LDYgKzM2LDggQEAKICNpbmNsdWRlIDxXZWJDb3JlL0NsaWVudE9yaWdp
bi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllci5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvSURCUmVzb3VyY2VJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9JbmRleGVkREIuaD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KIApAQCAtNDQsMTggKzQ2LDMxIEBAIGNsYXNzIFNoYXJlZEZpbGVIYW5k
bGU7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIElEQkN1cnNvckluZm87CitjbGFz
cyBJREJLZXlEYXRhOworY2xhc3MgSURCSW5kZXhJbmZvOworY2xhc3MgSURCT2JqZWN0U3RvcmVJ
bmZvOworY2xhc3MgSURCUmVxdWVzdERhdGE7CitjbGFzcyBJREJUcmFuc2FjdGlvbkluZm87Citj
bGFzcyBJREJWYWx1ZTsKIHN0cnVjdCBDbGllbnRPcmlnaW47CitzdHJ1Y3QgSURCR2V0QWxsUmVj
b3Jkc0RhdGE7CitzdHJ1Y3QgSURCR2V0UmVjb3JkRGF0YTsKK3N0cnVjdCBJREJHZXRBbGxSZWNv
cmRzRGF0YTsKK3N0cnVjdCBJREJJdGVyYXRlQ3Vyc29yRGF0YTsKK3N0cnVjdCBJREJLZXlSYW5n
ZURhdGE7CiBlbnVtIGNsYXNzIFN0b3JhZ2VUeXBlIDogdWludDhfdDsKIH0KIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKIGNsYXNzIEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnk7CitjbGFz
cyBJREJTdG9yYWdlUmVnaXN0cnk7CiBjbGFzcyBTdG9yYWdlQXJlYVJlZ2lzdHJ5OwogCiBjbGFz
cyBOZXR3b3JrU3RvcmFnZU1hbmFnZXIgZmluYWwgOiBwdWJsaWMgSVBDOjpDb25uZWN0aW9uOjpX
b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8TmV0d29y
a1N0b3JhZ2VNYW5hZ2VyPiBjcmVhdGUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcGF0
aCwgY29uc3QgU3RyaW5nJiBjdXN0b21Mb2NhbFN0b3JhZ2VQYXRoKTsKKyAgICBzdGF0aWMgUmVm
PE5ldHdvcmtTdG9yYWdlTWFuYWdlcj4gY3JlYXRlKFBBTDo6U2Vzc2lvbklELCBJUEM6OkNvbm5l
Y3Rpb246OlVuaXF1ZUlELCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY3VzdG9t
TG9jYWxTdG9yYWdlUGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21JREJTdG9yYWdlUGF0aCwgY29u
c3QgU3RyaW5nJiBjdXN0b21DYWNoZVN0b3JhZ2VQYXRoLCB1aW50NjRfdCBkZWZhdWx0T3JpZ2lu
UXVvdGEsIHVpbnQ2NF90IGRlZmF1bHRUaGlyZFBhcnR5T3JpZ2luUXVvdGEpOwogICAgIHN0YXRp
YyBib29sIGNhbkhhbmRsZVR5cGVzKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+KTsKIAogICAg
IHZvaWQgc3RhcnRSZWNlaXZpbmdNZXNzYWdlRnJvbUNvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9u
Jik7CkBAIC02NCw2ICs3OSw3IEBAIHB1YmxpYzoKICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQoKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb25JRDsgfQogICAgIHZvaWQgY2xvc2UoKTsKICAg
ICB2b2lkIGNsZWFyU3RvcmFnZUZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKKyAgICB2b2lkIGRpZEluY3JlYXNlUXVvdGEoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2lu
JiwgUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90
PiBuZXdRdW90YSk7CiAgICAgdm9pZCBmZXRjaERhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlw
ZT4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYnNpdGVEYXRhOjpFbnRyeT4mJik+
JiYpOwogICAgIHZvaWQgZGVsZXRlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgY29u
c3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwogICAgIHZvaWQgZGVsZXRlRGF0YU1vZGlmaWVkU2luY2UoT3B0aW9uU2V0
PFdlYnNpdGVEYXRhVHlwZT4sIFdhbGxUaW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwpAQCAtNzMsMTQgKzg5LDE4IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3VtZSgpOwogICAgIHZv
aWQgaGFuZGxlTG93TWVtb3J5V2FybmluZygpOwogICAgIHZvaWQgc3luY0xvY2FsU3RvcmFnZShD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgcmVnaXN0ZXJUZW1wb3JhcnlC
bG9iRmlsZVBhdGhzKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7Cisg
ICAgdm9pZCByZXF1ZXN0U3BhY2UoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgdWludDY0
X3Qgc2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCByZXNl
dFF1b3RhRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQg
cmVzZXRRdW90YVVwZGF0ZWRCYXNlZE9uVXNhZ2VGb3JUZXN0aW5nKGNvbnN0IFdlYkNvcmU6OkNs
aWVudE9yaWdpbiYpOwogCiBwcml2YXRlOgogICAgIE5ldHdvcmtTdG9yYWdlTWFuYWdlcihQQUw6
OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGN1c3RvbUxvY2Fs
U3RvcmFnZVBhdGgpOworICAgIE5ldHdvcmtTdG9yYWdlTWFuYWdlcihQQUw6OlNlc3Npb25JRCwg
SVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJp
bmcmIGN1c3RvbUxvY2FsU3RvcmFnZVBhdGgsIGNvbnN0IFN0cmluZyYgY3VzdG9tSURCU3RvcmFn
ZVBhdGgsIGNvbnN0IFN0cmluZyYgY3VzdG9tQ2FjaGVTdG9yYWdlUGF0aCwgdWludDY0X3QgZGVm
YXVsdE9yaWdpblF1b3RhLCB1aW50NjRfdCBkZWZhdWx0VGhpcmRQYXJ0eU9yaWdpblF1b3RhKTsK
ICAgICB+TmV0d29ya1N0b3JhZ2VNYW5hZ2VyKCk7CiAgICAgT3JpZ2luU3RvcmFnZU1hbmFnZXIm
IGxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJik7
CiAgICAgYm9vbCByZW1vdmVPcmlnaW5TdG9yYWdlTWFuYWdlcklmUG9zc2libGUoY29uc3QgV2Vi
Q29yZTo6Q2xpZW50T3JpZ2luJik7CiAgICAgdm9pZCBkZWxldGVPcmlnaW5EaXJlY3RvcnlJZlBv
c3NpYmxlKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYpOwotICAgIEZpbGVTeXN0ZW1TdG9y
YWdlSGFuZGxlUmVnaXN0cnkmIGZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnkoKTsKIAog
ICAgIHZvaWQgZm9yRWFjaE9yaWdpbkRpcmVjdG9yeShjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0
IFN0cmluZyYpPiYpOwogICAgIEhhc2hTZXQ8V2ViQ29yZTo6Q2xpZW50T3JpZ2luPiBnZXRBbGxP
cmlnaW5zKCk7CkBAIC0xMTgsNiArMTM4LDM0IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZW1vdmVJ
dGVtKElQQzo6Q29ubmVjdGlvbiYsIFN0b3JhZ2VBcmVhSWRlbnRpZmllciwgU3RvcmFnZUFyZWFJ
bXBsSWRlbnRpZmllciwgU3RyaW5nJiYga2V5LCBTdHJpbmcmJiB1cmxTdHJpbmcsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBjbGVhcihJUEM6OkNvbm5lY3Rpb24mLCBT
dG9yYWdlQXJlYUlkZW50aWZpZXIsIFN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXIsIFN0cmluZyYm
IHVybFN0cmluZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAorICAgIC8vIE1lc3Nh
Z2UgaGFuZGxlcnMgZm9yIEluZGV4ZWREQi4KKyAgICB2b2lkIG9wZW5EYXRhYmFzZShJUEM6OkNv
bm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYpOworICAgIHZvaWQgb3Bl
bkRCUmVxdWVzdENhbmNlbGxlZChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYpOworICAg
IHZvaWQgZGVsZXRlRGF0YWJhc2UoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6SURC
UmVxdWVzdERhdGEmKTsKKyAgICB2b2lkIGVzdGFibGlzaFRyYW5zYWN0aW9uKHVpbnQ2NF90IGRh
dGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OklEQlRyYW5zYWN0aW9u
SW5mbyYpOworICAgIHZvaWQgZGF0YWJhc2VDb25uZWN0aW9uUGVuZGluZ0Nsb3NlKHVpbnQ2NF90
IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpOworICAgIHZvaWQgZGF0YWJhc2VDb25uZWN0
aW9uQ2xvc2VkKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpOworICAgIHZv
aWQgYWJvcnRPcGVuQW5kVXBncmFkZU5lZWRlZCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25J
ZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0
aW9uSWRlbnRpZmllcik7CisgICAgdm9pZCBkaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KHVpbnQ2
NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OklEQlJlc291
cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkluZGV4ZWRE
Qjo6Q29ubmVjdGlvbkNsb3NlZE9uQmVoYWxmT2ZTZXJ2ZXIpOworICAgIHZvaWQgYWJvcnRUcmFu
c2FjdGlvbihjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImKTsKKyAgICB2b2lk
IGNvbW1pdFRyYW5zYWN0aW9uKGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYs
IHVpbnQ2NF90IHBlbmRpbmdSZXF1ZXN0Q291bnQpOworICAgIHZvaWQgZGlkRmluaXNoSGFuZGxp
bmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24odWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRl
bnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJik7CisgICAgdm9p
ZCBjcmVhdGVPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYsIGNvbnN0
IFdlYkNvcmU6OklEQk9iamVjdFN0b3JlSW5mbyYpOworICAgIHZvaWQgZGVsZXRlT2JqZWN0U3Rv
cmUoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0
b3JlTmFtZSk7CisgICAgdm9pZCByZW5hbWVPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJS
ZXF1ZXN0RGF0YSYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiBuZXdOYW1lKTsKKyAgICB2b2lkIGNsZWFyT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6SURC
UmVxdWVzdERhdGEmLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIpOworICAgIHZvaWQg
Y3JlYXRlSW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmLCBjb25zdCBXZWJDb3Jl
OjpJREJJbmRleEluZm8mKTsKKyAgICB2b2lkIGRlbGV0ZUluZGV4KGNvbnN0IFdlYkNvcmU6OklE
QlJlcXVlc3REYXRhJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIGluZGV4TmFtZSk7CisgICAgdm9pZCByZW5hbWVJbmRleChjb25zdCBXZWJDb3JlOjpJREJS
ZXF1ZXN0RGF0YSYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgdWludDY0X3QgaW5k
ZXhJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUpOworICAgIHZvaWQgcHV0T3JBZGQo
SVBDOjpDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmLCBjb25zdCBX
ZWJDb3JlOjpJREJLZXlEYXRhJiwgY29uc3QgV2ViQ29yZTo6SURCVmFsdWUmLCBXZWJDb3JlOjpJ
bmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSk7CisgICAgdm9pZCBnZXRSZWNvcmQo
Y29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmLCBjb25zdCBXZWJDb3JlOjpJREJHZXRSZWNv
cmREYXRhJik7CisgICAgdm9pZCBnZXRBbGxSZWNvcmRzKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVl
c3REYXRhJiwgY29uc3QgV2ViQ29yZTo6SURCR2V0QWxsUmVjb3Jkc0RhdGEmKTsKKyAgICB2b2lk
IGdldENvdW50KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiwgY29uc3QgV2ViQ29yZTo6
SURCS2V5UmFuZ2VEYXRhJik7CisgICAgdm9pZCBkZWxldGVSZWNvcmQoY29uc3QgV2ViQ29yZTo6
SURCUmVxdWVzdERhdGEmLCBjb25zdCBXZWJDb3JlOjpJREJLZXlSYW5nZURhdGEmKTsKKyAgICB2
b2lkIG9wZW5DdXJzb3IoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmLCBjb25zdCBXZWJD
b3JlOjpJREJDdXJzb3JJbmZvJik7CisgICAgdm9pZCBpdGVyYXRlQ3Vyc29yKGNvbnN0IFdlYkNv
cmU6OklEQlJlcXVlc3REYXRhJiwgY29uc3QgV2ViQ29yZTo6SURCSXRlcmF0ZUN1cnNvckRhdGEm
KTsKKyAgICB2b2lkIGdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhJUEM6OkNvbm5lY3Rp
b24mLCBjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImLCBjb25zdCBXZWJDb3Jl
OjpDbGllbnRPcmlnaW4mKTsKKwogICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOwogICAg
IFJlZjxTdXNwZW5kYWJsZVdvcmtRdWV1ZT4gbV9xdWV1ZTsKICAgICBTdHJpbmcgbV9wYXRoOwpA
QCAtMTI3LDcgKzE3NSwxNCBAQCBwcml2YXRlOgogICAgIFdlYWtIYXNoU2V0PElQQzo6Q29ubmVj
dGlvbj4gbV9jb25uZWN0aW9uczsgLy8gTWFpbiB0aHJlYWQgb25seS4KICAgICBzdGQ6OnVuaXF1
ZV9wdHI8RmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeT4gbV9maWxlU3lzdGVtU3RvcmFn
ZUhhbmRsZVJlZ2lzdHJ5OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTdG9yYWdlQXJlYVJlZ2lzdHJ5
PiBtX3N0b3JhZ2VBcmVhUmVnaXN0cnk7CisgICAgc3RkOjp1bmlxdWVfcHRyPElEQlN0b3JhZ2VS
ZWdpc3RyeT4gbV9pZGJTdG9yYWdlUmVnaXN0cnk7CiAgICAgU3RyaW5nIG1fY3VzdG9tTG9jYWxT
dG9yYWdlUGF0aDsKKyAgICBTdHJpbmcgbV9jdXN0b21JREJTdG9yYWdlUGF0aDsKKyAgICBTdHJp
bmcgbV9jdXN0b21DYWNoZVN0b3JhZ2VQYXRoOworICAgIHVpbnQ2NF90IG1fZGVmYXVsdE9yaWdp
blF1b3RhOworICAgIHVpbnQ2NF90IG1fZGVmYXVsdFRoaXJkUGFydHlPcmlnaW5RdW90YTsKKyAg
ICBJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIG1fcGFyZW50Q29ubmVjdGlvbjsKKyAgICBIYXNo
TWFwPElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIEhhc2hTZXQ8U3RyaW5nPj4gbV90ZW1wb3Jh
cnlCbG9iUGF0aHNCeUNvbm5lY3Rpb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3Rv
cmFnZU1hbmFnZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0
b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLm1lc3NhZ2VzLmluCmluZGV4IDUwYjk2NzAxYjA3
MGRkNWMzMjcxMWRiMTQyNzkzMDNmZTY1MjExYjcuLjQ3MzA1ZTBlOTgxY2E1Y2ZhZTA3NzQyNmJm
MjRiNzgxNWE0ZDY0Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5tZXNzYWdl
cy5pbgpAQCAtNDcsNCArNDcsMzEgQEAKICAgICBTZXRJdGVtKFdlYktpdDo6U3RvcmFnZUFyZWFJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYktpdDo6U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllciBp
bXBsSWRlbnRpZmllciwgU3RyaW5nIGtleSwgU3RyaW5nIHZhbHVlLCBTdHJpbmcgdXJsU3RyaW5n
KSAtPiAoYm9vbCBxdW90YUV4Y2VwdGlvbikgQXN5bmMgV2FudHNDb25uZWN0aW9uCiAgICAgUmVt
b3ZlSXRlbShXZWJLaXQ6OlN0b3JhZ2VBcmVhSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJLaXQ6
OlN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXIgaW1wbElkZW50aWZpZXIsIFN0cmluZyBrZXksIFN0
cmluZyB1cmxTdHJpbmcpIC0+ICgpIEFzeW5jIFdhbnRzQ29ubmVjdGlvbgogICAgIENsZWFyKFdl
YktpdDo6U3RvcmFnZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYktpdDo6U3RvcmFnZUFy
ZWFJbXBsSWRlbnRpZmllciBpbXBsSWRlbnRpZmllciwgU3RyaW5nIHVybFN0cmluZykgLT4gKCkg
QXN5bmMgV2FudHNDb25uZWN0aW9uCisKKyAgICBPcGVuRGF0YWJhc2UoV2ViQ29yZTo6SURCUmVx
dWVzdERhdGEgcmVxdWVzdERhdGEpIFdhbnRzQ29ubmVjdGlvbgorICAgIE9wZW5EQlJlcXVlc3RD
YW5jZWxsZWQoV2ViQ29yZTo6SURCUmVxdWVzdERhdGEgcmVxdWVzdERhdGEpCisgICAgRGVsZXRl
RGF0YWJhc2UoV2ViQ29yZTo6SURCUmVxdWVzdERhdGEgcmVxdWVzdERhdGEpIFdhbnRzQ29ubmVj
dGlvbgorICAgIEVzdGFibGlzaFRyYW5zYWN0aW9uKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlv
bklkZW50aWZpZXIsIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uSW5mbyBpbmZvKQorICAgIERhdGFi
YXNlQ29ubmVjdGlvblBlbmRpbmdDbG9zZSh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVu
dGlmaWVyKQorICAgIERhdGFiYXNlQ29ubmVjdGlvbkNsb3NlZCh1aW50NjRfdCBkYXRhYmFzZUNv
bm5lY3Rpb25JZGVudGlmaWVyKQorICAgIEFib3J0T3BlbkFuZFVwZ3JhZGVOZWVkZWQodWludDY0
X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVu
dGlmaWVyIHRyYW5zYWN0aW9uSWRlbnRpZmllcikKKyAgICBEaWRGaXJlVmVyc2lvbkNoYW5nZUV2
ZW50KHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OklEQlJl
c291cmNlSWRlbnRpZmllciByZXF1ZXN0SWRlbnRpZmllciwgV2ViQ29yZTo6SW5kZXhlZERCOjpD
b25uZWN0aW9uQ2xvc2VkT25CZWhhbGZPZlNlcnZlciBjb25uZWN0aW9uQ2xvc2VkT25CZWhhbGZP
ZlNlcnZlcikKKyAgICBEaWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbih1
aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpJREJSZXNvdXJj
ZUlkZW50aWZpZXIgdHJhbnNhY3Rpb25JZGVudGlmaWVyKQorICAgIEFib3J0VHJhbnNhY3Rpb24o
V2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyIHRyYW5zYWN0aW9uSWRlbnRpZmllcikKKyAg
ICBDb21taXRUcmFuc2FjdGlvbihXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXIgdHJhbnNh
Y3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBwZW5kaW5nUmVxdWVzdENvdW50KQorICAgIENyZWF0
ZU9iamVjdFN0b3JlKFdlYkNvcmU6OklEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhLCBXZWJDb3Jl
OjpJREJPYmplY3RTdG9yZUluZm8gaW5mbykKKyAgICBEZWxldGVPYmplY3RTdG9yZShXZWJDb3Jl
OjpJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YSwgU3RyaW5nIG9iamVjdFN0b3JlTmFtZSkKKyAg
ICBSZW5hbWVPYmplY3RTdG9yZShXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YSwg
dWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBTdHJpbmcgbmV3TmFtZSkKKyAgICBDbGVh
ck9iamVjdFN0b3JlKFdlYkNvcmU6OklEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhLCB1aW50NjRf
dCBvYmplY3RTdG9yZUlkZW50aWZpZXIpCisgICAgQ3JlYXRlSW5kZXgoV2ViQ29yZTo6SURCUmVx
dWVzdERhdGEgcmVxdWVzdERhdGEsIFdlYkNvcmU6OklEQkluZGV4SW5mbyBpbmZvKQorICAgIERl
bGV0ZUluZGV4KFdlYkNvcmU6OklEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhLCB1aW50NjRfdCBv
YmplY3RTdG9yZUlkZW50aWZpZXIsIFN0cmluZyBpbmRleE5hbWUpCisgICAgUmVuYW1lSW5kZXgo
V2ViQ29yZTo6SURCUmVxdWVzdERhdGEgcmVxdWVzdERhdGEsIHVpbnQ2NF90IG9iamVjdFN0b3Jl
SWRlbnRpZmllciwgdWludDY0X3QgaW5kZXhJZGVudGlmaWVyLCBTdHJpbmcgbmV3TmFtZSkKKyAg
ICBQdXRPckFkZChXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YSwgV2ViQ29yZTo6
SURCS2V5RGF0YSBrZXksIFdlYkNvcmU6OklEQlZhbHVlIHZhbHVlLCBXZWJDb3JlOjpJbmRleGVk
REI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSBvdmVyd3JpdGVNb2RlKSBXYW50c0Nvbm5lY3Rp
b24KKyAgICBHZXRSZWNvcmQoV2ViQ29yZTo6SURCUmVxdWVzdERhdGEgcmVxdWVzdERhdGEsIHN0
cnVjdCBXZWJDb3JlOjpJREJHZXRSZWNvcmREYXRhIGdldFJlY29yZERhdGEpCisgICAgR2V0QWxs
UmVjb3JkcyhXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YSwgc3RydWN0IFdlYkNv
cmU6OklEQkdldEFsbFJlY29yZHNEYXRhIGdldEFsbFJlY29yZHNEYXRhKQorICAgIEdldENvdW50
KFdlYkNvcmU6OklEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhLCBzdHJ1Y3QgV2ViQ29yZTo6SURC
S2V5UmFuZ2VEYXRhIHJhbmdlKQorICAgIERlbGV0ZVJlY29yZChXZWJDb3JlOjpJREJSZXF1ZXN0
RGF0YSByZXF1ZXN0RGF0YSwgc3RydWN0IFdlYkNvcmU6OklEQktleVJhbmdlRGF0YSByYW5nZSkK
KyAgICBPcGVuQ3Vyc29yKFdlYkNvcmU6OklEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhLCBXZWJD
b3JlOjpJREJDdXJzb3JJbmZvIGluZm8pCisgICAgSXRlcmF0ZUN1cnNvcihXZWJDb3JlOjpJREJS
ZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YSwgc3RydWN0IFdlYkNvcmU6OklEQkl0ZXJhdGVDdXJzb3JE
YXRhIGRhdGEpCisgICAgR2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKFdlYkNvcmU6OklE
QlJlc291cmNlSWRlbnRpZmllciByZXF1ZXN0SWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6OkNs
aWVudE9yaWdpbiBvcmlnaW4pIFdhbnRzQ29ubmVjdGlvbgogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2VyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdl
ci5jcHAKaW5kZXggZDk1ZmJiN2RlMzczYjQwZTY1NjYzNTI5NjBhMDg1NjZjNmI3MjJhMi4uMjM1
NDA0NjU5MzE2YWZjZDkyNzQ1MmI4MTg4OTk4ODZkM2UyMzM0ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1h
bmFnZXIuY3BwCkBAIC0yNiw4ICsyNiwxMSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIk9yaWdpblN0b3JhZ2VNYW5hZ2VyLmgiCiAKKyNpbmNsdWRlICJDYWNoZVN0b3JhZ2VFbmdp
bmUuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtU3RvcmFnZUhhbmRsZVJlZ2lzdHJ5LmgiCiAjaW5j
bHVkZSAiRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyLmgiCisjaW5jbHVkZSAiSURCU3RvcmFnZU1h
bmFnZXIuaCIKKyNpbmNsdWRlICJJREJTdG9yYWdlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJMb2Nh
bFN0b3JhZ2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiTWVtb3J5U3RvcmFnZUFyZWEuaCIKICNpbmNs
dWRlICJTZXNzaW9uU3RvcmFnZU1hbmFnZXIuaCIKQEAgLTQ0LDEwICs0NywxMSBAQCBlbnVtIGNs
YXNzIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0TW9kZSA6IGJvb2wgeyBCZXN0
RWZmb3J0LCBQZXJzaXN0ZQogY2xhc3MgT3JpZ2luU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VCdWNr
ZXQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFN0b3JhZ2VC
dWNrZXQoY29uc3QgU3RyaW5nJiByb290UGF0aCwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZVBhdGgpCisgICAgU3RvcmFnZUJ1Y2tldChjb25zdCBT
dHJpbmcmIHJvb3RQYXRoLCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
bG9jYWxTdG9yYWdlUGF0aCwgY29uc3QgU3RyaW5nJiBpZGJTdG9yYWdlUGF0aCkKICAgICAgICAg
OiBtX3Jvb3RQYXRoKHJvb3RQYXRoKQogICAgICAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVy
KQogICAgICAgICAsIG1fbG9jYWxTdG9yYWdlUGF0aChsb2NhbFN0b3JhZ2VQYXRoKQorICAgICAg
ICAsIG1faWRiU3RvcmFnZVBhdGgoaWRiU3RvcmFnZVBhdGgpCiAgICAgewogICAgIH0KIApAQCAt
NzAsNiArNzQsNyBAQCBwdWJsaWM6CiAgICAgICAgIEZpbGVTeXN0ZW0sCiAgICAgICAgIExvY2Fs
U3RvcmFnZSwKICAgICAgICAgU2Vzc2lvblN0b3JhZ2UsCisgICAgICAgIEluZGV4ZWREQiwKICAg
ICB9OwogCiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZURhdGFUeXBlPiB0b1dlYnNp
dGVEYXRhVHlwZShjb25zdCBTdHJpbmcmIHN0b3JhZ2VJZGVudGlmaWVyKQpAQCAtODAsNiArODUs
OCBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gV2Vic2l0ZURhdGFUeXBlOjpMb2NhbFN0
b3JhZ2U7CiAgICAgICAgIGlmIChzdG9yYWdlSWRlbnRpZmllciA9PSAiU2Vzc2lvblN0b3JhZ2Ui
X3MpCiAgICAgICAgICAgICByZXR1cm4gV2Vic2l0ZURhdGFUeXBlOjpTZXNzaW9uU3RvcmFnZTsK
KyAgICAgICAgaWYgKHN0b3JhZ2VJZGVudGlmaWVyID09ICJJbmRleGVkREIiX3MpCisgICAgICAg
ICAgICByZXR1cm4gV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXM7CiAKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CkBAIC05Myw2ICsxMDAsOCBAQCBwdWJsaWM6
CiAgICAgICAgICAgICByZXR1cm4gIkxvY2FsU3RvcmFnZSJfczsKICAgICAgICAgY2FzZSBTdG9y
YWdlVHlwZTo6U2Vzc2lvblN0b3JhZ2U6CiAgICAgICAgICAgICByZXR1cm4gIlNlc3Npb25TdG9y
YWdlIl9zOworICAgICAgICBjYXNlIFN0b3JhZ2VUeXBlOjpJbmRleGVkREI6CisgICAgICAgICAg
ICByZXR1cm4gIkluZGV4ZWREQiJfczsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CkBAIC0xNDMsMTMgKzE1MiwyOCBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBtX3Nlc3Npb25TdG9yYWdlTWFuYWdlci5nZXQoKTsKICAgICB9CiAKKyAgICBJREJTdG9y
YWdlTWFuYWdlciYgaWRiU3RvcmFnZU1hbmFnZXIoSURCU3RvcmFnZVJlZ2lzdHJ5JiByZWdpc3Ry
eSwgSURCU3RvcmFnZU1hbmFnZXI6OlF1b3RhQ2hlY2tGdW5jdGlvbiYmIHF1b3RhQ2hlY2tGdW5j
dGlvbikKKyAgICB7CisgICAgICAgIGlmICghbV9pZGJTdG9yYWdlTWFuYWdlcikKKyAgICAgICAg
ICAgIG1faWRiU3RvcmFnZU1hbmFnZXIgPSBtYWtlVW5pcXVlPElEQlN0b3JhZ2VNYW5hZ2VyPiht
X2lkYlN0b3JhZ2VQYXRoLCByZWdpc3RyeSwgV1RGTW92ZShxdW90YUNoZWNrRnVuY3Rpb24pKTsK
KworICAgICAgICByZXR1cm4gKm1faWRiU3RvcmFnZU1hbmFnZXI7CisgICAgfQorCisgICAgSURC
U3RvcmFnZU1hbmFnZXIqIGV4aXN0aW5nSURCU3RvcmFnZU1hbmFnZXIoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG1faWRiU3RvcmFnZU1hbmFnZXIuZ2V0KCk7CisgICAgfQorCiAgICAgYm9vbCBp
c0FjdGl2ZSgpIGNvbnN0CiAgICAgeworICAgICAgICAvLyBUT0RPOiBzaWh1aWwgLSBjaGVjayBp
ZiBpZGJzdG9yYWdlbWFuYWdlciBpcyBhY3RpdmUKICAgICAgICAgLy8gV2UgY2Fubm90IHJlbW92
ZSB0aGUgYnVja2V0IGlmIGl0IGhhcyBpbi1tZW1vcnkgZGF0YSwgb3RoZXJ3aXNlIHNlc3Npb24K
ICAgICAgICAgLy8gZGF0YSBtYXkgYmUgbG9zdC4KICAgICAgICAgcmV0dXJuIChtX2ZpbGVTeXN0
ZW1TdG9yYWdlTWFuYWdlciAmJiBtX2ZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlci0+aXNBY3RpdmUo
KSkKICAgICAgICAgICAgIHx8IChtX2xvY2FsU3RvcmFnZU1hbmFnZXIgJiYgKG1fbG9jYWxTdG9y
YWdlTWFuYWdlci0+aGFzRGF0YUluTWVtb3J5KCkgfHwgbV9sb2NhbFN0b3JhZ2VNYW5hZ2VyLT5p
c0FjdGl2ZSgpKSkKLSAgICAgICAgICAgIHx8IChtX3Nlc3Npb25TdG9yYWdlTWFuYWdlciAmJiAo
bV9zZXNzaW9uU3RvcmFnZU1hbmFnZXItPmhhc0RhdGFJbk1lbW9yeSgpIHx8IG1fc2Vzc2lvblN0
b3JhZ2VNYW5hZ2VyLT5pc0FjdGl2ZSgpKSk7CisgICAgICAgICAgICB8fCAobV9zZXNzaW9uU3Rv
cmFnZU1hbmFnZXIgJiYgKG1fc2Vzc2lvblN0b3JhZ2VNYW5hZ2VyLT5oYXNEYXRhSW5NZW1vcnko
KSB8fCBtX3Nlc3Npb25TdG9yYWdlTWFuYWdlci0+aXNBY3RpdmUoKSkpCisgICAgICAgICAgICB8
fCAobV9pZGJTdG9yYWdlTWFuYWdlciAmJiAobV9pZGJTdG9yYWdlTWFuYWdlci0+aGFzRGF0YUlu
TWVtb3J5KCkgfHwgbV9pZGJTdG9yYWdlTWFuYWdlci0+aXNBY3RpdmUoKSkpOwogICAgIH0KIAog
ICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0CkBAIC0xNjUsNyArMTg5LDggQEAgcHVibGljOgogICAg
ICAgICBpZiAoaGFzVmFsaWRGaWxlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
ICAgIHJldHVybiAhRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhtX2xvY2FsU3RvcmFnZVBhdGgpOwor
ICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeShtX2lkYlN0b3JhZ2VQYXRo
KTsKKyAgICAgICAgcmV0dXJuICFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG1fbG9jYWxTdG9yYWdl
UGF0aCkgJiYgIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobV9pZGJTdG9yYWdlUGF0aCk7CiAgICAg
fQogCiAgICAgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZmV0Y2hEYXRhVHlwZXNJbkxpc3Qo
T3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gdHlwZXMpCkBAIC0xODYsOSArMjExLDEyIEBAIHB1
YmxpYzoKIAogICAgICAgICBpZiAodHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpTZXNz
aW9uU3RvcmFnZSkgJiYgbW9kaWZpZWRTaW5jZVRpbWUgPCBXYWxsVGltZTo6bm93KCkpCiAgICAg
ICAgICAgICBkZWxldGVTZXNzaW9uU3RvcmFnZURhdGEoKTsKKworICAgICAgICBpZiAodHlwZXMu
Y29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpKQorICAgICAgICAg
ICAgZGVsZXRlSURCU3RvcmFnZURhdGEobW9kaWZpZWRTaW5jZVRpbWUpOwogICAgIH0KIAotICAg
IHZvaWQgbW92ZURhdGEoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGxvY2FsU3Rv
cmFnZVBhdGgpCisgICAgdm9pZCBtb3ZlRGF0YShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0
cmluZyYgbG9jYWxTdG9yYWdlUGF0aCwgY29uc3QgU3RyaW5nJiBpZGJTdG9yYWdlUGF0aCkKICAg
ICB7CiAgICAgICAgIG1fZmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyID0gbnVsbHB0cjsKICAgICAg
ICAgaWYgKG1fbG9jYWxTdG9yYWdlTWFuYWdlcikKQEAgLTIwMSw2ICsyMjksMTEgQEAgcHVibGlj
OgogICAgICAgICAgICAgRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKEZpbGVTeXN0ZW06
OnBhcmVudFBhdGgobG9jYWxTdG9yYWdlUGF0aCkpOwogICAgICAgICAgICAgV2ViQ29yZTo6U1FM
aXRlRmlsZVN5c3RlbTo6bW92ZURhdGFiYXNlRmlsZShtX2xvY2FsU3RvcmFnZVBhdGgsIGxvY2Fs
U3RvcmFnZVBhdGgpOwogICAgICAgICB9CisKKyAgICAgICAgaWYgKCFtX2lkYlN0b3JhZ2VQYXRo
LmlzRW1wdHkoKSAmJiAhaWRiU3RvcmFnZVBhdGguaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBG
aWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoRmlsZVN5c3RlbTo6cGFyZW50UGF0aChpZGJT
dG9yYWdlUGF0aCkpOworICAgICAgICAgICAgV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6bW92
ZURhdGFiYXNlRmlsZShtX2lkYlN0b3JhZ2VQYXRoLCBpZGJTdG9yYWdlUGF0aCk7CisgICAgICAg
IH0KICAgICB9CiAKIHByaXZhdGU6CkBAIC0yMTcsNiArMjUwLDExIEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgcmVzdWx0LmFkZChXZWJzaXRlRGF0YVR5cGU6OlNlc3Npb25TdG9yYWdlKTsK
ICAgICAgICAgfQogCisgICAgICAgIGlmICh0eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6
OkluZGV4ZWREQkRhdGFiYXNlcykpIHsKKyAgICAgICAgICAgIGlmIChtX2lkYlN0b3JhZ2VNYW5h
Z2VyICYmIG1faWRiU3RvcmFnZU1hbmFnZXItPmhhc0RhdGFJbk1lbW9yeSgpKQorICAgICAgICAg
ICAgICAgIHJlc3VsdC5hZGQoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpOwor
ICAgICAgICB9CisKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKQEAgLTIzMyw2ICsy
NzEsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICByZXN1bHQuYWRkKFdlYnNpdGVEYXRh
VHlwZTo6TG9jYWxTdG9yYWdlKTsKICAgICAgICAgfQogCisgICAgICAgIGlmICh0eXBlcy5jb250
YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykgJiYgIXJlc3VsdC5jb250
YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykpIHsKKyAgICAgICAgICAg
IGlmIChhdXRvIGRhdGFiYXNlcyA9IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobV9pZGJTdG9y
YWdlUGF0aCk7ICFkYXRhYmFzZXMuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIHJlc3VsdC5h
ZGQoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpOworICAgICAgICB9CisKICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKQEAgLTI3MCw2ICszMTMsMTUgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIG1fc2Vzc2lvblN0b3JhZ2VNYW5hZ2VyID0gbnVsbHB0cjsKICAgICB9
CiAgICAgCisgICAgdm9pZCBkZWxldGVJREJTdG9yYWdlRGF0YShXYWxsVGltZSB0aW1lKQorICAg
IHsKKyAgICAgICAgLy8gU2lodWlsOiBjbGVhciBpbi1tZW1vcnkgc3RvcmFnZWE/CisgICAgICAg
IGlmIChtX2lkYlN0b3JhZ2VNYW5hZ2VyKQorICAgICAgICAgICAgbV9pZGJTdG9yYWdlTWFuYWdl
ci0+Y2xvc2VEYXRhYmFzZXNGb3JEZWxldGlvbigpOworCisgICAgICAgIEZpbGVTeXN0ZW06OmRl
bGV0ZUFsbEZpbGVzTW9kaWZpZWRTaW5jZShtX2lkYlN0b3JhZ2VQYXRoLCB0aW1lKTsKKyAgICB9
CisgICAgCiAgICAgU3RyaW5nIG1fcm9vdFBhdGg7CiAgICAgU3RyaW5nIG1faWRlbnRpZmllcjsK
ICAgICBTdG9yYWdlQnVja2V0TW9kZSBtX21vZGUgeyBTdG9yYWdlQnVja2V0TW9kZTo6QmVzdEVm
Zm9ydCB9OwpAQCAtMjc3LDEyICszMjksMjUgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8TG9jYWxTdG9yYWdlTWFuYWdlcj4gbV9sb2NhbFN0b3JhZ2VNYW5hZ2VyOwogICAgIFN0cmlu
ZyBtX2xvY2FsU3RvcmFnZVBhdGg7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFNlc3Npb25TdG9yYWdl
TWFuYWdlcj4gbV9zZXNzaW9uU3RvcmFnZU1hbmFnZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPElE
QlN0b3JhZ2VNYW5hZ2VyPiBtX2lkYlN0b3JhZ2VNYW5hZ2VyOworICAgIFN0cmluZyBtX2lkYlN0
b3JhZ2VQYXRoOwogfTsKIAotT3JpZ2luU3RvcmFnZU1hbmFnZXI6Ok9yaWdpblN0b3JhZ2VNYW5h
Z2VyKEZ1bmN0aW9uPHZvaWQoKT4mJiB3cml0ZU9yaWdpbkZpbGVGdW5jdGlvbiwgU3RyaW5nJiYg
cGF0aCwgU3RyaW5nJiYgbG9jYWxTdG9yYWdlUGF0aCkKLSAgICA6IG1fd3JpdGVPcmlnaW5GaWxl
RnVuY3Rpb24oV1RGTW92ZSh3cml0ZU9yaWdpbkZpbGVGdW5jdGlvbikpCi0gICAgLCBtX3BhdGgo
V1RGTW92ZShwYXRoKSkKK3N0YXRpYyBSZWY8UXVvdGFNYW5hZ2VyPiBjcmVhdGVRdW90YU1hbmFn
ZXIodWludDY0X3QgcXVvdGEsIGNvbnN0IFN0cmluZyYgaWRiU3RvcmFnZVBhdGgsIGNvbnN0IFN0
cmluZyYgY2FjaGVTdG9yYWdlUGF0aCwgUXVvdGFNYW5hZ2VyOjpJbmNyZWFzZVF1b3RhRnVuY3Rp
b24mJiBpbmNyZWFzZVF1b3RhRnVuY3Rpb24pCit7CisgICAgUXVvdGFNYW5hZ2VyOjpHZXRVc2Fn
ZUZ1bmN0aW9uIGdldFVzYWdlRnVuY3Rpb24gPSBbaWRiU3RvcmFnZVBhdGgsIGNhY2hlU3RvcmFn
ZVBhdGhdKCkgeworICAgICAgICByZXR1cm4gSURCU3RvcmFnZU1hbmFnZXI6OmlkYlN0b3JhZ2VT
aXplKGlkYlN0b3JhZ2VQYXRoKSArIENhY2hlU3RvcmFnZTo6RW5naW5lOjpkaXNrVXNhZ2UoY2Fj
aGVTdG9yYWdlUGF0aCk7CisgICAgfTsKKworICAgIHJldHVybiBRdW90YU1hbmFnZXI6OmNyZWF0
ZShxdW90YSwgV1RGTW92ZShnZXRVc2FnZUZ1bmN0aW9uKSwgV1RGTW92ZShpbmNyZWFzZVF1b3Rh
RnVuY3Rpb24pKTsKK30KKworT3JpZ2luU3RvcmFnZU1hbmFnZXI6Ok9yaWdpblN0b3JhZ2VNYW5h
Z2VyKEZ1bmN0aW9uPHZvaWQoKT4mJiB3cml0ZU9yaWdpbkZpbGVGdW5jdGlvbiwgdWludDY0X3Qg
cXVvdGEsIFF1b3RhTWFuYWdlcjo6SW5jcmVhc2VRdW90YUZ1bmN0aW9uJiYgaW5jcmVhc2VRdW90
YUZ1bmN0aW9uLCBTdHJpbmcmJiBwYXRoLCBTdHJpbmcmJiBsb2NhbFN0b3JhZ2VQYXRoLCBTdHJp
bmcmJiBpZGJTdG9yYWdlUGF0aCwgU3RyaW5nJiYgY2FjaGVTdG9yYWdlUGF0aCkKKyAgICA6IG1f
cGF0aChXVEZNb3ZlKHBhdGgpKQogICAgICwgbV9sb2NhbFN0b3JhZ2VQYXRoKFdURk1vdmUobG9j
YWxTdG9yYWdlUGF0aCkpCisgICAgLCBtX2lkYlN0b3JhZ2VQYXRoKFdURk1vdmUoaWRiU3RvcmFn
ZVBhdGgpKQorICAgICwgbV9jYWNoZVN0b3JhZ2VQYXRoKFdURk1vdmUoY2FjaGVTdG9yYWdlUGF0
aCkpCisgICAgLCBtX3F1b3RhTWFuYWdlcihjcmVhdGVRdW90YU1hbmFnZXIocXVvdGEsIG1faWRi
U3RvcmFnZVBhdGgsIG1fY2FjaGVTdG9yYWdlUGF0aCwgV1RGTW92ZShpbmNyZWFzZVF1b3RhRnVu
Y3Rpb24pKSkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIH0KQEAgLTMwMiwx
MSArMzY3LDE2IEBAIHZvaWQgT3JpZ2luU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3Rpb25DbG9zZWQo
SVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uCiBPcmlnaW5TdG9yYWdlTWFuYWdl
cjo6U3RvcmFnZUJ1Y2tldCYgT3JpZ2luU3RvcmFnZU1hbmFnZXI6OmRlZmF1bHRCdWNrZXQoKQog
ewogICAgIGlmICghbV9kZWZhdWx0QnVja2V0KQotICAgICAgICBtX2RlZmF1bHRCdWNrZXQgPSBt
YWtlVW5pcXVlPFN0b3JhZ2VCdWNrZXQ+KG1fcGF0aCwgImRlZmF1bHQiX3MsIG1fbG9jYWxTdG9y
YWdlUGF0aCk7CisgICAgICAgIG1fZGVmYXVsdEJ1Y2tldCA9IG1ha2VVbmlxdWU8U3RvcmFnZUJ1
Y2tldD4obV9wYXRoLCAiZGVmYXVsdCJfcywgbV9sb2NhbFN0b3JhZ2VQYXRoLCBtX2lkYlN0b3Jh
Z2VQYXRoKTsKIAogICAgIHJldHVybiAqbV9kZWZhdWx0QnVja2V0OwogfQogCitRdW90YU1hbmFn
ZXImIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpxdW90YU1hbmFnZXIoKQoreworICAgIHJldHVybiBt
X3F1b3RhTWFuYWdlci5nZXQoKTsKK30KKwogRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyJiBPcmln
aW5TdG9yYWdlTWFuYWdlcjo6ZmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyKEZpbGVTeXN0ZW1TdG9y
YWdlSGFuZGxlUmVnaXN0cnkmIHJlZ2lzdHJ5KQogewogICAgIHJldHVybiBkZWZhdWx0QnVja2V0
KCkuZmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyKHJlZ2lzdHJ5KTsKQEAgLTMzMiw2ICs0MDIsMjMg
QEAgU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyKiBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6ZXhpc3RpbmdT
ZXNzaW9uU3RvcmFnZU1hbmFnZXIoKQogICAgIHJldHVybiBkZWZhdWx0QnVja2V0KCkuZXhpc3Rp
bmdTZXNzaW9uU3RvcmFnZU1hbmFnZXIoKTsKIH0KIAorSURCU3RvcmFnZU1hbmFnZXImIE9yaWdp
blN0b3JhZ2VNYW5hZ2VyOjppZGJTdG9yYWdlTWFuYWdlcihJREJTdG9yYWdlUmVnaXN0cnkmIHJl
Z2lzdHJ5KQoreworICAgIHJldHVybiBkZWZhdWx0QnVja2V0KCkuaWRiU3RvcmFnZU1hbmFnZXIo
cmVnaXN0cnksIFtxdW90YU1hbmFnZXIgPSBXZWFrUHRyIHsgdGhpcy0+cXVvdGFNYW5hZ2VyKCkg
fV0odWludDY0X3Qgc3BhY2VSZXF1ZXN0ZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpIG11dGFibGUgeworICAgICAgICBpZiAoIXF1b3RhTWFuYWdl
cikKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisKKyAgICAg
ICAgcXVvdGFNYW5hZ2VyLT5yZXF1ZXN0U3BhY2Uoc3BhY2VSZXF1ZXN0ZWQsIFtjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvIGRlY2lzaW9uKSBtdXRh
YmxlIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGRlY2lzaW9uID09IFF1b3RhTWFu
YWdlcjo6RGVjaXNpb246OkdyYW50KTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKK0lEQlN0
b3JhZ2VNYW5hZ2VyKiBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6ZXhpc3RpbmdJREJTdG9yYWdlTWFu
YWdlcigpCit7CisgICAgcmV0dXJuIGRlZmF1bHRCdWNrZXQoKS5leGlzdGluZ0lEQlN0b3JhZ2VN
YW5hZ2VyKCk7Cit9CisKIGJvb2wgT3JpZ2luU3RvcmFnZU1hbmFnZXI6OmlzQWN0aXZlKCkKIHsK
ICAgICByZXR1cm4gZGVmYXVsdEJ1Y2tldCgpLmlzQWN0aXZlKCk7CkBAIC0zNjQsMTEgKzQ1MSwx
MSBAQCB2b2lkIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVEYXRhKE9wdGlvblNldDxXZWJz
aXRlRGF0YVR5cGU+IHR5cGVzLCBXYWxsVGltZQogICAgIGRlZmF1bHRCdWNrZXQoKS5kZWxldGVE
YXRhKHR5cGVzLCBtb2RpZmllZFNpbmNlKTsKIH0KIAotdm9pZCBPcmlnaW5TdG9yYWdlTWFuYWdl
cjo6bW92ZURhdGEoY29uc3QgU3RyaW5nJiBuZXdQYXRoLCBjb25zdCBTdHJpbmcmIGxvY2FsU3Rv
cmFnZVBhdGgpCit2b2lkIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjptb3ZlRGF0YShjb25zdCBTdHJp
bmcmIG5ld1BhdGgsIGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlUGF0aCwgY29uc3QgU3RyaW5n
JiBpZGJTdG9yYWdlUGF0aCkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAot
ICAgIGRlZmF1bHRCdWNrZXQoKS5tb3ZlRGF0YShuZXdQYXRoLCBsb2NhbFN0b3JhZ2VQYXRoKTsK
KyAgICBkZWZhdWx0QnVja2V0KCkubW92ZURhdGEobmV3UGF0aCwgbG9jYWxTdG9yYWdlUGF0aCwg
aWRiU3RvcmFnZVBhdGgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdl
ci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VN
YW5hZ2VyLmgKaW5kZXggMWEwZjU4MTE0MDZlMDI4Zjg3NmRmN2Q4OTEyYzQ1ZmE0OTE3ZTI1NC4u
OTNkMjlkMjcwMTRjNTY2NjhlMDBiMmQxOThiOWQ1Y2MwNGE2ZmY1MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2VyLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VN
YW5hZ2VyLmgKQEAgLTI2LDE2ICsyNiwxNSBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJD
b25uZWN0aW9uLmgiCisjaW5jbHVkZSAiUXVvdGFNYW5hZ2VyLmgiCiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLXN0cnVjdCBDbGllbnRPcmln
aW47Ci19Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBGaWxlU3lzdGVtU3RvcmFnZUhh
bmRsZVJlZ2lzdHJ5OwogY2xhc3MgRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyOworY2xhc3MgSURC
U3RvcmFnZU1hbmFnZXI7CitjbGFzcyBJREJTdG9yYWdlUmVnaXN0cnk7CiBjbGFzcyBMb2NhbFN0
b3JhZ2VNYW5hZ2VyOwogY2xhc3MgU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyOwogY2xhc3MgU3RvcmFn
ZUFyZWFSZWdpc3RyeTsKQEAgLTQ0LDM2ICs0MywzOSBAQCBlbnVtIGNsYXNzIFdlYnNpdGVEYXRh
VHlwZSA6IHVpbnQzMl90OwogY2xhc3MgT3JpZ2luU3RvcmFnZU1hbmFnZXIgewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIE9yaWdpblN0b3JhZ2VNYW5hZ2VyKEZ1
bmN0aW9uPHZvaWQoKT4mJiwgU3RyaW5nJiYgcGF0aCwgU3RyaW5nJiYgbG9jYWxTdG9yYWdlUGF0
aCk7CisgICAgT3JpZ2luU3RvcmFnZU1hbmFnZXIoRnVuY3Rpb248dm9pZCgpPiYmLCB1aW50NjRf
dCBxdW90YSwgUXVvdGFNYW5hZ2VyOjpJbmNyZWFzZVF1b3RhRnVuY3Rpb24mJiwgU3RyaW5nJiYg
cGF0aCwgU3RyaW5nJiYgbG9jYWxTdG9yYWdlUGF0aCwgU3RyaW5nJiYgaWRiU3RvcmFnZVBhdGgs
IFN0cmluZyYmIGNhY2hlU3RvcmFnZVBhdGgpOwogICAgIH5PcmlnaW5TdG9yYWdlTWFuYWdlcigp
OwogCiAgICAgdm9pZCBjb25uZWN0aW9uQ2xvc2VkKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQp
OwogICAgIGJvb2wgcGVyc2lzdGVkKCkgY29uc3QgeyByZXR1cm4gbV9wZXJzaXN0ZWQ7IH0KICAg
ICB2b2lkIHNldFBlcnNpc3RlZChib29sIHZhbHVlKTsKKyAgICBRdW90YU1hbmFnZXImIHF1b3Rh
TWFuYWdlcigpOwogICAgIEZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlciYgZmlsZVN5c3RlbVN0b3Jh
Z2VNYW5hZ2VyKEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnkmKTsKICAgICBMb2NhbFN0
b3JhZ2VNYW5hZ2VyJiBsb2NhbFN0b3JhZ2VNYW5hZ2VyKFN0b3JhZ2VBcmVhUmVnaXN0cnkmKTsK
ICAgICBMb2NhbFN0b3JhZ2VNYW5hZ2VyKiBleGlzdGluZ0xvY2FsU3RvcmFnZU1hbmFnZXIoKTsK
ICAgICBTZXNzaW9uU3RvcmFnZU1hbmFnZXImIHNlc3Npb25TdG9yYWdlTWFuYWdlcihTdG9yYWdl
QXJlYVJlZ2lzdHJ5Jik7CiAgICAgU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyKiBleGlzdGluZ1Nlc3Np
b25TdG9yYWdlTWFuYWdlcigpOworICAgIElEQlN0b3JhZ2VNYW5hZ2VyJiBpZGJTdG9yYWdlTWFu
YWdlcihJREJTdG9yYWdlUmVnaXN0cnkmKTsKKyAgICBJREJTdG9yYWdlTWFuYWdlciogZXhpc3Rp
bmdJREJTdG9yYWdlTWFuYWdlcigpOwogICAgIGJvb2wgaXNBY3RpdmUoKTsKICAgICBib29sIGlz
RW1wdHkoKTsKICAgICBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBmZXRjaERhdGFUeXBlc0lu
TGlzdChPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPik7CiAgICAgdm9pZCBkZWxldGVEYXRhKE9w
dGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBXYWxsVGltZSk7Ci0gICAgdm9pZCBtb3ZlRGF0YShj
b25zdCBTdHJpbmcmIG5ld1BhdGgsIGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlUGF0aCk7Cisg
ICAgdm9pZCBtb3ZlRGF0YShjb25zdCBTdHJpbmcmIG5ld1BhdGgsIGNvbnN0IFN0cmluZyYgbG9j
YWxTdG9yYWdlUGF0aCwgY29uc3QgU3RyaW5nJiBpZGJTdG9yYWdlUGF0aCk7CiAKIHByaXZhdGU6
CiAgICAgZW51bSBjbGFzcyBTdG9yYWdlQnVja2V0TW9kZSA6IGJvb2w7CiAgICAgY2xhc3MgU3Rv
cmFnZUJ1Y2tldDsKICAgICBTdG9yYWdlQnVja2V0JiBkZWZhdWx0QnVja2V0KCk7CiAKLSAgICB2
b2lkIGNyZWF0ZU9yaWdpbkZpbGVJZk5lY2Vzc2FyeShjb25zdCBXZWJDb3JlOjpDbGllbnRPcmln
aW4mKTsKLSAgICB2b2lkIGRlbGV0ZU9yaWdpbkZpbGVJZk5lY2Vzc2FyeSgpOwotCiAgICAgRnVu
Y3Rpb248dm9pZCgpPiBtX3dyaXRlT3JpZ2luRmlsZUZ1bmN0aW9uOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxTdG9yYWdlQnVja2V0PiBtX2RlZmF1bHRCdWNrZXQ7CiAgICAgU3RyaW5nIG1fcGF0aDsK
ICAgICBib29sIG1fcGVyc2lzdGVkIHsgZmFsc2UgfTsKICAgICBTdHJpbmcgbV9sb2NhbFN0b3Jh
Z2VQYXRoOworICAgIFN0cmluZyBtX2lkYlN0b3JhZ2VQYXRoOworICAgIFN0cmluZyBtX2NhY2hl
U3RvcmFnZVBhdGg7CisgICAgUmVmPFF1b3RhTWFuYWdlcj4gbV9xdW90YU1hbmFnZXI7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvc3RvcmFnZS9RdW90YU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zdG9yYWdlL1F1b3RhTWFuYWdlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzgzNDk5NDg5YTcw
MTllM2QxZmRlNDRjNTRjMDBhNDczNTQ0MmMwNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9RdW90YU1hbmFnZXIuY3BwCkBAIC0wLDAgKzEs
MTM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlF1b3Rh
TWFuYWdlci5oIgorCisjaW5jbHVkZSA8d3RmL1Njb3BlLmg+CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitSZWY8UXVvdGFNYW5hZ2VyPiBRdW90YU1hbmFnZXI6OmNyZWF0ZSh1aW50NjRfdCBxdW90
YSwgR2V0VXNhZ2VGdW5jdGlvbiYmIGdldFVzYWdlRnVuY3Rpb24sIEluY3JlYXNlUXVvdGFGdW5j
dGlvbiYmIGluY3JlYXNlUXVvdGFGdW5jdGlvbikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBRdW90YU1hbmFnZXIocXVvdGEsIFdURk1vdmUoZ2V0VXNhZ2VGdW5jdGlvbiksIFdURk1vdmUo
aW5jcmVhc2VRdW90YUZ1bmN0aW9uKSkpOworfQorCitRdW90YU1hbmFnZXI6OlF1b3RhTWFuYWdl
cih1aW50NjRfdCBxdW90YSwgR2V0VXNhZ2VGdW5jdGlvbiYmIGdldFVzYWdlRnVuY3Rpb24sIElu
Y3JlYXNlUXVvdGFGdW5jdGlvbiYmIGluY3JlYXNlUXVvdGFGdW5jdGlvbikKKyAgICA6IG1fcXVv
dGEocXVvdGEpCisgICAgLCBtX2luaXRpYWxRdW90YShxdW90YSkKKyAgICAsIG1fZ2V0VXNhZ2VG
dW5jdGlvbihXVEZNb3ZlKGdldFVzYWdlRnVuY3Rpb24pKQorICAgICwgbV9pbmNyZWFzZVF1b3Rh
RnVuY3Rpb24oV1RGTW92ZShpbmNyZWFzZVF1b3RhRnVuY3Rpb24pKQoreworfQorCit2b2lkIFF1
b3RhTWFuYWdlcjo6cmVxdWVzdFNwYWNlKHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkLCBSZXF1ZXN0
Q2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBtX3JlcXVlc3RzLmFwcGVuZChRdW90YU1hbmFn
ZXI6OlJlcXVlc3QgeyBzcGFjZVJlcXVlc3RlZCwgV1RGTW92ZShjYWxsYmFjayksIFF1b3RhSW5j
cmVhc2VSZXF1ZXN0SWRlbnRpZmllciB7IH0gfSk7CisgICAgaGFuZGxlUmVxdWVzdHMoKTsKK30K
Kwordm9pZCBRdW90YU1hbmFnZXI6OmhhbmRsZVJlcXVlc3RzKCkKK3sKKyAgICBpZiAobV9jdXJy
ZW50UmVxdWVzdCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9pc0hhbmRsaW5nUmVxdWVzdHMg
PSB0cnVlOworICAgIGF1dG8gY2xlYXJJc0hhbmRsaW5nUmVxdWVzdHMgPSBtYWtlU2NvcGVFeGl0
KFsmXSB7CisgICAgICAgIG1faXNIYW5kbGluZ1JlcXVlc3RzID0gZmFsc2U7CisgICAgfSk7CisK
KyAgICB3aGlsZSAoIW1fY3VycmVudFJlcXVlc3QgJiYgIW1fcmVxdWVzdHMuaXNFbXB0eSgpKSB7
CisgICAgICAgIG1fY3VycmVudFJlcXVlc3QgPSBtX3JlcXVlc3RzLnRha2VGaXJzdCgpOworICAg
ICAgICBpZiAoZ3JhbnRXaXRoQ3VycmVudFF1b3RhKG1fY3VycmVudFJlcXVlc3QtPnNwYWNlUmVx
dWVzdGVkKSkgeworICAgICAgICAgICAgbV9jdXJyZW50UmVxdWVzdC0+Y2FsbGJhY2soRGVjaXNp
b246OkdyYW50KTsKKyAgICAgICAgICAgIG1fY3VycmVudFJlcXVlc3QgPSBzdGQ6Om51bGxvcHQ7
CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIG1fY3VycmVudFJl
cXVlc3QtPmlkZW50aWZpZXIgPSBRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXI6OmdlbmVy
YXRlVGhyZWFkU2FmZSgpOworICAgICAgICBtX2luY3JlYXNlUXVvdGFGdW5jdGlvbihtX2N1cnJl
bnRSZXF1ZXN0LT5pZGVudGlmaWVyLCBtX3F1b3RhLCAqbV91c2FnZSwgbV9jdXJyZW50UmVxdWVz
dC0+c3BhY2VSZXF1ZXN0ZWQpOworICAgIH0KK30KKworYm9vbCBRdW90YU1hbmFnZXI6OmdyYW50
V2l0aEN1cnJlbnRRdW90YSh1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCkKK3sKKyAgICBpZiAoZ3Jh
bnRGYXN0UGF0aChzcGFjZVJlcXVlc3RlZCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAg
Ly8gV2hlbiBRdW90YU1hbmFnZXIgaXMgdXNlZCBmb3IgdGhlIGZpcnN0IHRpbWUsIHdlIHdhbnQg
dG8gbWFrZSBzdXJlIGl0cyBpbml0aWFsIHF1b3RhIGlzIGJpZ2dlciB0aGFuIGV4aXN0aW5nIGRp
c2sgdXNhZ2UsCisgICAgLy8gYmFzZWQgb24gdGhlIGFzc3VtcHRpb24gdGhhdCB0aGUgcXVvdGEg
d2FzIGluY3JlYXNlZCB0byBhdCBsZWFzdCB0aGUgZGlzayB1c2FnZSB1bmRlciB1c2VyJ3MgcGVy
bWlzc2lvbiBiZWZvcmUuCisgICAgYm9vbCBzaG91bGRVcGRhdGVRdW90YUJhc2Vkb25Vc2FnZSA9
ICFtX3VzYWdlOworICAgIG1fdXNhZ2UgPSBtX2dldFVzYWdlRnVuY3Rpb24oKTsKKyAgICBpZiAo
c2hvdWxkVXBkYXRlUXVvdGFCYXNlZG9uVXNhZ2UpIHsKKyAgICAgICAgYXV0byBkZWZhdWx0UXVv
dGFTdGVwID0gbV9xdW90YSAvIDEwOworICAgICAgICBtX3F1b3RhID0gc3RkOjptYXgobV9xdW90
YSwgZGVmYXVsdFF1b3RhU3RlcCAqICgoKm1fdXNhZ2UgLyBkZWZhdWx0UXVvdGFTdGVwKSArIDEp
KTsKKyAgICB9CisgICAgbV9xdW90YUNvdW50ZG93biA9ICptX3VzYWdlIDwgbV9xdW90YSA/IG1f
cXVvdGEgLSAqbV91c2FnZSA6IDA7CisKKyAgICByZXR1cm4gZ3JhbnRGYXN0UGF0aChzcGFjZVJl
cXVlc3RlZCk7Cit9CisKK2Jvb2wgUXVvdGFNYW5hZ2VyOjpncmFudEZhc3RQYXRoKHVpbnQ2NF90
IHNwYWNlUmVxdWVzdGVkKQoreworICAgIGlmIChzcGFjZVJlcXVlc3RlZCA8PSBtX3F1b3RhQ291
bnRkb3duKSB7CisgICAgICAgIG1fcXVvdGFDb3VudGRvd24gLT0gc3BhY2VSZXF1ZXN0ZWQ7Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9p
ZCBRdW90YU1hbmFnZXI6OmRpZEluY3JlYXNlUXVvdGEoUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IG5ld1F1b3RhKQorewor
ICAgIGlmICghbV9jdXJyZW50UmVxdWVzdCB8fCBtX2N1cnJlbnRSZXF1ZXN0LT5pZGVudGlmaWVy
ICE9IGlkZW50aWZpZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChuZXdRdW90YSkgewor
ICAgICAgICBtX3F1b3RhID0gKm5ld1F1b3RhOworICAgICAgICBtX3F1b3RhQ291bnRkb3duID0g
MDsgLy8gUmVjYWxjdWxhdGUgbV9xdW90YUNvdW50ZG93biBiYXNlZCBvbiB1c2FnZS4KKyAgICB9
CisKKyAgICBhdXRvIGRlY2lzaW9uID0gZ3JhbnRXaXRoQ3VycmVudFF1b3RhKG1fY3VycmVudFJl
cXVlc3QtPnNwYWNlUmVxdWVzdGVkKSA/IERlY2lzaW9uOjpHcmFudCA6IERlY2lzaW9uOjpEZW55
OworICAgIG1fY3VycmVudFJlcXVlc3QtPmNhbGxiYWNrKGRlY2lzaW9uKTsKKyAgICBtX2N1cnJl
bnRSZXF1ZXN0ID0gc3RkOjpudWxsb3B0OworCisgICAgaWYgKCFtX2lzSGFuZGxpbmdSZXF1ZXN0
cykKKyAgICAgICAgaGFuZGxlUmVxdWVzdHMoKTsKK30KKwordm9pZCBRdW90YU1hbmFnZXI6OnJl
c2V0UXVvdGFVcGRhdGVkQmFzZWRPblVzYWdlRm9yVGVzdGluZygpCit7CisgICAgbV9xdW90YSA9
IG1faW5pdGlhbFF1b3RhOworICAgIG1fcXVvdGFDb3VudGRvd24gPSAwOworICAgIG1fdXNhZ2Ug
PSBzdGQ6Om51bGxvcHQ7Cit9CisKK3ZvaWQgUXVvdGFNYW5hZ2VyOjpyZXNldFF1b3RhRm9yVGVz
dGluZygpCit7CisgICAgbV9xdW90YSA9IG1faW5pdGlhbFF1b3RhOworICAgIG1fcXVvdGFDb3Vu
dGRvd24gPSAwOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9RdW90YU1hbmFnZXIuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9RdW90YU1hbmFnZXIuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
MWU1ODQ1NjJhOTU5YzFjMTk4MWQ3ZjNkMTBkMmUzYTEwY2U2MWNiCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1F1b3RhTWFuYWdlci5oCkBA
IC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlF1
b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllci5oIgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9u
SGFuZGxlci5oPgorI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworY2xhc3MgUXVvdGFNYW5hZ2VyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFF1b3Rh
TWFuYWdlcj4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxRdW90YU1hbmFnZXI+IHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICB1c2luZyBHZXRVc2FnZUZ1bmN0aW9u
ID0gRnVuY3Rpb248dWludDY0X3QoKT47CisgICAgdXNpbmcgSW5jcmVhc2VRdW90YUZ1bmN0aW9u
ID0gRnVuY3Rpb248dm9pZChRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90
IGN1cnJlbnRRdW90YSwgdWludDY0X3QgY3VycmVudFVzYWdlLCB1aW50NjRfdCByZXF1ZXN0ZWRJ
bmNyZWFzZSk+OworICAgIHN0YXRpYyBSZWY8UXVvdGFNYW5hZ2VyPiBjcmVhdGUodWludDY0X3Qg
cXVvdGEsIEdldFVzYWdlRnVuY3Rpb24mJiwgSW5jcmVhc2VRdW90YUZ1bmN0aW9uJiYpOworCisg
ICAgZW51bSBjbGFzcyBEZWNpc2lvbiB7IERlbnksIEdyYW50IH07CisgICAgdXNpbmcgUmVxdWVz
dENhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChEZWNpc2lvbik+OworICAgIHZvaWQg
cmVxdWVzdFNwYWNlKHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkLCBSZXF1ZXN0Q2FsbGJhY2smJik7
CisgICAgdm9pZCBkaWRJbmNyZWFzZVF1b3RhKFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmll
ciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbmV3UXVvdGEpOworCisgICAgdm9pZCByZXNldFF1
b3RhVXBkYXRlZEJhc2VkT25Vc2FnZUZvclRlc3RpbmcoKTsKKyAgICB2b2lkIHJlc2V0UXVvdGFG
b3JUZXN0aW5nKCk7CisKK3ByaXZhdGU6CisgICAgUXVvdGFNYW5hZ2VyKHVpbnQ2NF90IHF1b3Rh
LCBHZXRVc2FnZUZ1bmN0aW9uJiYsIEluY3JlYXNlUXVvdGFGdW5jdGlvbiYmKTsKKyAgICB2b2lk
IGhhbmRsZVJlcXVlc3RzKCk7CisgICAgYm9vbCBncmFudFdpdGhDdXJyZW50UXVvdGEodWludDY0
X3Qgc3BhY2VSZXF1ZXN0ZWQpOworICAgIGJvb2wgZ3JhbnRGYXN0UGF0aCh1aW50NjRfdCBzcGFj
ZVJlcXVlc3RlZCk7CisKKyAgICBzdHJ1Y3QgUmVxdWVzdCB7CisgICAgICAgIHVpbnQ2NF90IHNw
YWNlUmVxdWVzdGVkOworICAgICAgICBSZXF1ZXN0Q2FsbGJhY2sgY2FsbGJhY2s7CisgICAgICAg
IFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllciBpZGVudGlmaWVyOworICAgIH07CisgICAg
RGVxdWU8UmVxdWVzdD4gbV9yZXF1ZXN0czsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlcXVlc3Q+IG1f
Y3VycmVudFJlcXVlc3Q7CisgICAgYm9vbCBtX2lzSGFuZGxpbmdSZXF1ZXN0cyB7IGZhbHNlIH07
CisgICAgdWludDY0X3QgbV9xdW90YUNvdW50ZG93biB7IDAgfTsKKyAgICB1aW50NjRfdCBtX3F1
b3RhOworICAgIHVpbnQ2NF90IG1faW5pdGlhbFF1b3RhOyAvLyBUZXN0IG9ubHkuCisgICAgc3Rk
OjpvcHRpb25hbDx1aW50NjRfdD4gbV91c2FnZTsKKyAgICBHZXRVc2FnZUZ1bmN0aW9uIG1fZ2V0
VXNhZ2VGdW5jdGlvbjsKKyAgICBJbmNyZWFzZVF1b3RhRnVuY3Rpb24gbV9pbmNyZWFzZVF1b3Rh
RnVuY3Rpb247Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDdlYmZhNTE2YjUwMzM2ZDM2ODdmN2VjZGQxN2U4
ZTdlYmQxY2Q5ZDcuLjY0NTNhOWQyOTAyMzI3ZWZiYjFhMDE1Mzc5NmIzNmVhYzU4NjZhODAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIv
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtMjg3LDYgKzI4Nyw3
IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgICAg
ICdXZWJDb3JlOjpOYXRpdmVJbWFnZVJlZmVyZW5jZScsCiAgICAgICAgICdXZWJDb3JlOjpQYWdl
SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpQbGF5YmFja1RhcmdldENsaWVudENvbnRl
eHRJZGVudGlmaWVyJywKKyAgICAgICAgJ1dlYktpdDo6UXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVu
dGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQb2xpY3knLAogICAg
ICAgICAnV2ViQ29yZTo6UG9pbnRlcklEJywKICAgICAgICAgJ1dlYkNvcmU6OlB1c2hTdWJzY3Jp
cHRpb25JZGVudGlmaWVyJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNp
dGVEYXRhL1F1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllci5oIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2Vic2l0ZURhdGEvUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYmU0NTRiNmEwOGI2OGEyMGM2NTBkYzg5NzYzMjg1NThhMzcyMDFmNQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhL1F1b3RhSW5jcmVhc2VS
ZXF1ZXN0SWRlbnRpZmllci5oCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitlbnVtIFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllclR5cGUgeyB9Owor
dXNpbmcgUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxR
dW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXJUeXBlPjsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFy
YW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRl
cnMuaAppbmRleCAxNTNiZjkzYmRmNmZmMTFiNDYwZjY0ODI1YjQ1MDMwOGI4NDVkMzhkLi4yMDk4
NDY4MTYyOTkwNDczMzg4NGNmY2IxMjdhYTU3MjFkMmNlZTg5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmgKQEAgLTcxLDggKzcxLDgg
QEAgc3RydWN0IFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIHsKICAgICBTdHJpbmcgZ2VuZXJh
bFN0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGdlbmVyYWxT
dG9yYWdlRGlyZWN0b3J5SGFuZGxlOwogCi0gICAgdWludDY0X3QgcGVyT3JpZ2luU3RvcmFnZVF1
b3RhIHsgV2ViQ29yZTo6U3RvcmFnZVF1b3RhTWFuYWdlcjo6ZGVmYXVsdFF1b3RhKCkgfTsKLSAg
ICB1aW50NjRfdCBwZXJUaGlyZFBhcnR5T3JpZ2luU3RvcmFnZVF1b3RhIHsgV2ViQ29yZTo6U3Rv
cmFnZVF1b3RhTWFuYWdlcjo6ZGVmYXVsdFRoaXJkUGFydHlRdW90YSgpIH07CisgICAgdWludDY0
X3QgcGVyT3JpZ2luU3RvcmFnZVF1b3RhOworICAgIHVpbnQ2NF90IHBlclRoaXJkUGFydHlPcmln
aW5TdG9yYWdlUXVvdGE7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0Cmlu
ZGV4IDRmMGEyMzU0NDFiMmUxYzBjY2NjMTQwZGNjNTBmMjZmMDA0NDNjYTAuLmYwNmM3NmM3YjM4
NmFmY2YyN2JjZWZjOTM0NzZjNDE4Njc5ZGUzMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMTQ0LDEwICsx
NDQsMTQgQEAgTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uY3BwIEBuby11bmlmeQogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lz
dGVtU3RvcmFnZU1hbmFnZXIuY3BwCiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1T
dG9yYWdlSGFuZGxlLmNwcAogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFn
ZUhhbmRsZVJlZ2lzdHJ5LmNwcAorTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlQ29u
bmVjdGlvblRvQ2xpZW50LmNwcAorTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlTWFu
YWdlci5jcHAKK05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZVJlZ2lzdHJ5LmNwcAog
TmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9Mb2NhbFN0b3JhZ2VNYW5hZ2VyLmNwcAogTmV0d29ya1By
b2Nlc3Mvc3RvcmFnZS9NZW1vcnlTdG9yYWdlQXJlYS5jcHAKIE5ldHdvcmtQcm9jZXNzL3N0b3Jh
Z2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmNwcAogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9Pcmln
aW5TdG9yYWdlTWFuYWdlci5jcHAKK05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvUXVvdGFNYW5hZ2Vy
LmNwcAogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TUUxpdGVTdG9yYWdlQXJlYS5jcHAKIE5ldHdv
cmtQcm9jZXNzL3N0b3JhZ2UvU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyLmNwcAogTmV0d29ya1Byb2Nl
c3Mvc3RvcmFnZS9TdG9yYWdlQXJlYUJhc2UuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBhNjc4MzY3
YTc3NWE0OWJhODFiMjQ4OGNmMzFlYWI5ZGNjY2NjOTIxLi4xOTU0NjI3ODc3ZDg0Y2EwOGI1NzIw
MGNjODYyZTkzZDIzMzA0Mzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTE0OTUsNiArMTQ5NSwxNiBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlcXVlc3RTdG9yYWdlU3BhY2UoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBjb25zdCBXZQogICAgIH0pOwogfQogCit2b2lkIE5ldHdvcmtQcm9j
ZXNzUHJveHk6OmluY3JlYXNlUXVvdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBX
ZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlm
aWVyIGlkZW50aWZpZXIsIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgY3VycmVudFVz
YWdlLCB1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCkKK3sKKyAgICByZXF1ZXN0U3RvcmFnZVNwYWNl
KHNlc3Npb25JRCwgb3JpZ2luLCBjdXJyZW50UXVvdGEsIGN1cnJlbnRVc2FnZSwgc3BhY2VSZXF1
ZXN0ZWQsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBzZXNzaW9uSUQsIG9y
aWdpbiwgaWRlbnRpZmllcl0oYXV0byByZXN1bHQpIG11dGFibGUgeworICAgICAgICBpZiAoIXdl
YWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHNlbmQoTWVzc2FnZXM6Ok5l
dHdvcmtQcm9jZXNzOjpEaWRJbmNyZWFzZVF1b3RhKHNlc3Npb25JRCwgb3JpZ2luLCBpZGVudGlm
aWVyLCByZXN1bHQpLCAwKTsKKyAgICB9KTsKK30KKwogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpyZWdpc3RlclNjaGVtZUZvckxlZ2FjeUN1c3RvbVByb3RvY29sKGNvbnN0IFN0cmluZyYgc2No
ZW1lKQogewogI2lmIEVOQUJMRShMRUdBQ1lfQ1VTVE9NX1BST1RPQ09MX01BTkFHRVIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5oCmluZGV4IGE0ZTM2NDVlYmFhZTMzNmQxODBiNTQxNGJhZmFhMzVkODNmOTE4YzQuLjI0MWY4
ZTQ5ZDVlYmY5MjRkNTc0MTI4MDg5ZjEwYzJkOGViZGU5ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0zMyw2
ICszMyw3IEBACiAjaW5jbHVkZSAiUHJvY2Vzc0xhdW5jaGVyLmgiCiAjaW5jbHVkZSAiUHJvY2Vz
c1Rocm90dGxlci5oIgogI2luY2x1ZGUgIlByb2Nlc3NUaHJvdHRsZXJDbGllbnQuaCIKKyNpbmNs
dWRlICJRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJVc2VyQ29u
dGVudENvbnRyb2xsZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5TWVz
c2FnZXNSZXBsaWVzLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgpAQCAtMzQwLDYg
KzM0MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB0cmlnZ2VyQnJvd3NpbmdDb250ZXh0R3JvdXBT
d2l0Y2hGb3JOYXZpZ2F0aW9uKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgV2ViQ29yZTo6QnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbiwgY29u
c3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlc3BvbnNlRG9tYWluLCBOZXR3b3JrUmVz
b3VyY2VMb2FkSWRlbnRpZmllciBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVy
VG9SZXN1bWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBzdWNjZXNzKT4mJik7CiAKICAg
ICB2b2lkIHJlcXVlc3RTdG9yYWdlU3BhY2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6
OkNsaWVudE9yaWdpbiYsIHVpbnQ2NF90IHF1b3RhLCB1aW50NjRfdCBjdXJyZW50U2l6ZSwgdWlu
dDY0X3Qgc3BhY2VSZXF1aXJlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiBxdW90YSk+JiYpOworICAgIHZvaWQgaW5jcmVhc2VRdW90YShQQUw6OlNlc3Np
b25JRCwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgUXVvdGFJbmNyZWFzZVJlcXVlc3RJ
ZGVudGlmaWVyLCB1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRVc2FnZSwg
dWludDY0X3Qgc3BhY2VSZXF1ZXN0ZWQpOwogCiAgICAgV2Vic2l0ZURhdGFTdG9yZSogd2Vic2l0
ZURhdGFTdG9yZUZyb21TZXNzaW9uSUQoUEFMOjpTZXNzaW9uSUQpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkubWVzc2FnZXMuaW4KaW5kZXggMTJkMDZjZWJkNjJhZjE3NTBlNzg4NTU5YzEzYTFiMzk4M2Zk
ZDJiYS4uNjhjMzJjNGYzMWVhMWExOGU4MzAwNDQzMjdkNTBiODQyOTUzNjQxMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtNjgsNiArNjgsNyBAQCBtZXNzYWdlcyAtPiBOZXR3
b3JrUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIHsKICNlbmRpZgogCiAgICAgUmVxdWVzdFN0
b3JhZ2VTcGFjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0cnVjdCBXZWJDb3JlOjpDbGll
bnRPcmlnaW4gb3JpZ2luLCB1aW50NjRfdCBxdW90YSwgdWludDY0X3QgY3VycmVudFNpemUsIHVp
bnQ2NF90IHNwYWNlUmVxdWlyZWQpIC0+IChzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBuZXdRdW90
YSkgQXN5bmMKKyAgICBJbmNyZWFzZVF1b3RhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3Ry
dWN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiBvcmlnaW4sIFdlYktpdDo6UXVvdGFJbmNyZWFzZVJl
cXVlc3RJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVpbnQ2NF90IHF1b3RhLCB1aW50NjRfdCBjdXJy
ZW50U2l6ZSwgdWludDY0X3Qgc3BhY2VSZXF1ZXN0ZWQpCiAgICAgCiAgICAgUmVzb3VyY2VMb2Fk
RGlkU2VuZFJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJZGVudGlm
aWVyLCBzdHJ1Y3QgV2ViS2l0OjpSZXNvdXJjZUxvYWRJbmZvIHJlc291cmNlTG9hZEluZm8sIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBzdGQ6Om9wdGlvbmFsPElQQzo6Rm9ybURh
dGFSZWZlcmVuY2U+IGh0dHBCb2R5KQogICAgIFJlc291cmNlTG9hZERpZFBlcmZvcm1IVFRQUmVk
aXJlY3Rpb24oV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJZGVudGlmaWVyLCBz
dHJ1Y3QgV2ViS2l0OjpSZXNvdXJjZUxvYWRJbmZvIHJlc291cmNlTG9hZEluZm8sIFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UgcmVzb3VyY2VSZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0IHJlcXVlc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IDA4Y2VjZmViZmUwZGU0NGIxZjVhNGI1
MDExNDA1ZTFmZDgxNTA5ZmUuLjEzMjkwNTU3MmY0YjhjM2QwNzk1ODM0MzE0OGMyZmI1NjgzZmVm
YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC0xNzE2LDcgKzE3MTYsNyBAQCB2b2lkIFdlYnNpdGVE
YXRhU3RvcmU6OmRpc3BhdGNoT25RdWV1ZShGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCiB1
aW50NjRfdCBXZWJzaXRlRGF0YVN0b3JlOjpwZXJUaGlyZFBhcnR5T3JpZ2luU3RvcmFnZVF1b3Rh
KCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogQ29uc2lkZXIgd2hldGhlciBhbGxvd2luZyB0byBz
ZXQgYSBwZXJUaGlyZFBhcnR5T3JpZ2luU3RvcmFnZVF1b3RhIGZyb20gYSBXZWJzaXRlRGF0YVN0
b3JlLgotICAgIHJldHVybiBXZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2VyOjpkZWZhdWx0VGhp
cmRQYXJ0eVF1b3RhRnJvbVBlck9yaWdpblF1b3RhKHBlck9yaWdpblN0b3JhZ2VRdW90YSgpKTsK
KyAgICByZXR1cm4gcGVyT3JpZ2luU3RvcmFnZVF1b3RhKCkgLyAxMDsKIH0KIAogdm9pZCBXZWJz
aXRlRGF0YVN0b3JlOjpzZXRDYWNoZU1vZGVsU3luY2hyb25vdXNseUZvclRlc3RpbmcoQ2FjaGVN
b2RlbCBjYWNoZU1vZGVsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCmluZGV4IDZiYzY5MzY5YzMzODMyODY5ZGVhMWY1
ZGFhNTBlNzlmYWE2ZTdiZjkuLjg1ZWUzMWUxMzgzZDk3ZDY0NmM2OThjMmRlZjdkOWMzMzRhYjc1
YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmgKQEAgLTM1MCw2ICszNTAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IFdURjo6U3RyaW5nIGRlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKTsK
ICAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdEphdmFTY3JpcHRDb25maWd1cmF0aW9uRGly
ZWN0b3J5KCk7CiAgICAgc3RhdGljIGJvb2wgaHR0cDNFbmFibGVkKCk7CisgICAgc3RhdGljIGNv
bnN0ZXhwciB1aW50NjRfdCBkZWZhdWx0UGVyT3JpZ2luUXVvdGEoKSB7IHJldHVybiAxMDAwICog
TUI7IH0KIAogICAgIHZvaWQgcmVzZXRRdW90YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogICAgIHZvaWQgY2xlYXJTdG9yYWdlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKaW5kZXggYmVhNzU3OWNkZmNl
MDc4YjY3NTQ4YTFkMDFkYmY3YTQ3ZjZmN2E4OS4uZmRmNmI2OTIxODQ1NTU4YzU4NTE4YmM2NmQw
ZTY0NWRhM2IzMWIxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNw
cApAQCAtNTUsNiArNTUsNyBAQCBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6V2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24oSXNQZXJzaXN0ZW50IGlzUGVycwogI2lmIFBMQVRGT1JN
KElPUykKICAgICAgICAgc2V0UENNTWFjaFNlcnZpY2VOYW1lKCJjb20uYXBwbGUud2Via2l0LmFk
YXR0cmlidXRpb25kLnNlcnZpY2UiKTsKICNlbmRpZgorICAgICAgICBzZXRQZXJPcmlnaW5TdG9y
YWdlUXVvdGEoV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFBlck9yaWdpblF1b3RhKCkpOwogICAg
IH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgKaW5kZXggZjE3MWFk
NGNlNWUxYjVjZTEzOTRlYzc4MDk1MjQxMDdmODJjMTc0YS4uNTE3MDdhZTBlNGJkODMyOTFmMjQ0
YWZmN2VjNzg1NzQwNjU2ZGZiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bi5oCkBAIC0yMDcsNyArMjA3LDcgQEAgcHJpdmF0ZToKIAogICAgIFN0cmluZyBtX2NhY2hlU3Rv
cmFnZURpcmVjdG9yeTsKICAgICBTdHJpbmcgbV9nZW5lcmFsU3RvcmFnZURpcmVjdG9yeTsKLSAg
ICB1aW50NjRfdCBtX3Blck9yaWdpblN0b3JhZ2VRdW90YSB7IFdlYkNvcmU6OlN0b3JhZ2VRdW90
YU1hbmFnZXI6OmRlZmF1bHRRdW90YSgpIH07CisgICAgdWludDY0X3QgbV9wZXJPcmlnaW5TdG9y
YWdlUXVvdGE7CiAgICAgU3RyaW5nIG1fbmV0d29ya0NhY2hlRGlyZWN0b3J5OwogICAgIFN0cmlu
ZyBtX2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnk7CiAgICAgU3RyaW5nIG1fYXBwbGljYXRpb25D
YWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSB7ICJGaWxlcyJfcyB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYTFhZDAyMDdiMzAx
MjdkMzBjMDIxZTY2ZGJjNGE2OGE3OGNiZDAzMC4uNTIzNjY1NDQ2YWEyNjg1OWQ4NmI4NThiYTky
ZTJkZmJlNGIyN2U5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0xNDY2LDYgKzE0NjYsMTEgQEAKIAkJOTNCMjYxNEQyMjdEMTQ5RTAw
Qjk3QTc2IC8qIFN0b3JhZ2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5M0IyNjE0OTIyN0QxNDcyMDBCOTdBNzYgLyogU3RvcmFnZU1hbmFn
ZXIuaCAqLzsgfTsKIAkJOTNCMjYxNEUyMjdEMTRCMTAwQjk3QTc2IC8qIExvY2FsU3RvcmFnZURh
dGFiYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
M0IyNjE0NTIyN0QxNDcwMDBCOTdBNzYgLyogTG9jYWxTdG9yYWdlRGF0YWJhc2UuaCAqLzsgfTsK
IAkJOTNCMjYxNEYyMjdEMTRCMTAwQjk3QTc2IC8qIExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCMjYx
NDYyMjdEMTQ3MTAwQjk3QTc2IC8qIExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5oICovOyB9
OworCQk5M0I2MzFFNTI3QUJBNjI4MDA0NDNBNDQgLyogSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0Ns
aWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNC
NjMxRTQyN0FCQTYyNzAwNDQzQTQ0IC8qIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQuaCAq
LzsgfTsKKwkJOTNCNjMxRTgyN0FCQTY1RDAwNDQzQTQ0IC8qIElEQlN0b3JhZ2VNYW5hZ2VyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0I2MzFFNjI3
QUJBNjVDMDA0NDNBNDQgLyogSURCU3RvcmFnZU1hbmFnZXIuaCAqLzsgfTsKKwkJOTNCNjMxRUQy
N0FCQTZCNDAwNDQzQTQ0IC8qIElEQlN0b3JhZ2VSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCNjMxRUIyN0FCQTZCMzAwNDQzQTQ0IC8q
IElEQlN0b3JhZ2VSZWdpc3RyeS5oICovOyB9OworCQk5M0I2MzFGMTI3QUJBQ0E5MDA0NDNBNDQg
LyogUXVvdGFNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5M0I2MzFFRjI3QUJBQ0E5MDA0NDNBNDQgLyogUXVvdGFNYW5hZ2VyLmggKi87IH07
CisJCTkzQjYzMUYzMjdBQkFEODAwMDQ0M0E0NCAvKiBRdW90YUluY3JlYXNlUmVxdWVzdElkZW50
aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkz
QjYzMUYyMjdBQkFEN0YwMDQ0M0E0NCAvKiBRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIu
aCAqLzsgfTsKIAkJOTNCREVCMDExNzFERDdBRjAwQkZFRTFCIC8qIFdLUGFnZUxvYWRUeXBlc1By
aXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkz
QkRFQjAwMTcxREQ3QUYwMEJGRUUxQiAvKiBXS1BhZ2VMb2FkVHlwZXNQcml2YXRlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNENkI3NzIyNTRC
QjUxOTAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uU2VydmVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Q2Qjc2QzI1NEI4OTU4MDA1OEREM0Eg
LyogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaCAqLzsgfTsKIAkJOTNENkI3NzMyNTRCQjhDNzAw
NThERDNBIC8qIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNENkI3NjgyNTRCN0JDNjAwNThERDNB
IC8qIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5oICovOyB9OwpAQCAtNTM1MSw2ICs1
MzU2LDE1IEBACiAJCTkzQjI2MTQ5MjI3RDE0NzIwMEI5N0E3NiAvKiBTdG9yYWdlTWFuYWdlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdG9yYWdlTWFuYWdlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0IyNjE0QTIyN0QxNDcyMDBCOTdBNzYgLyogU3Rv
cmFnZU1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3Rv
cmFnZU1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0IyNjE0QzIy
N0QxNDcyMDBCOTdBNzYgLyogTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk5M0I2MzFFMzI3QUJBNUY3MDA0NDNBNDQgLyogSURCU3Rv
cmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJREJTdG9yYWdl
Q29ubmVjdGlvblRvQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNC
NjMxRTQyN0FCQTYyNzAwNDQzQTQ0IC8qIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0Ns
aWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0I2MzFFNjI3QUJBNjVDMDA0
NDNBNDQgLyogSURCU3RvcmFnZU1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSURCU3RvcmFnZU1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
OTNCNjMxRTcyN0FCQTY1QzAwNDQzQTQ0IC8qIElEQlN0b3JhZ2VNYW5hZ2VyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElEQlN0b3JhZ2VNYW5hZ2VyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNCNjMxRUEyN0FCQTZCMjAwNDQzQTQ0IC8qIElE
QlN0b3JhZ2VSZWdpc3RyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBJREJTdG9yYWdlUmVnaXN0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5
M0I2MzFFQjI3QUJBNkIzMDA0NDNBNDQgLyogSURCU3RvcmFnZVJlZ2lzdHJ5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElEQlN0b3JhZ2VSZWdpc3RyeS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk5M0I2MzFFRTI3QUJBQ0E4MDA0NDNBNDQgLyogUXVvdGFNYW5h
Z2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFF1b3RhTWFuYWdl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzQjYzMUVGMjdBQkFDQTkwMDQ0
M0E0NCAvKiBRdW90YU1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UXVvdGFNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzQjYzMUYyMjdB
QkFEN0YwMDQ0M0E0NCAvKiBRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQkEwNERBMjE1MUFERjMwMDdGNDU1
RiAvKiBXZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5M0JBMDREQjIxNTFBREYzMDA3RjQ1NUYgLyogV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5M0JBMDREQzIxNTFBREYzMDA3RjQ1NUYgLyogV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTc1NjMsNiArNzU3Nyw3IEBACiAJCTFBQkY0Mzc4MUEzNjgwMzUwMDNGQjBFNiAvKiBXZWJzaXRl
RGF0YSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJOTNC
NjMxRjIyN0FCQUQ3RjAwNDQzQTQ0IC8qIFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllci5o
ICovLAogCQkJCTFBNDgzMkQ0MUE5Q0RGOTYwMDhCNERGRSAvKiBXZWJzaXRlRGF0YS5jcHAgKi8s
CiAJCQkJMUE0ODMyRDUxQTlDREY5NjAwOEI0REZFIC8qIFdlYnNpdGVEYXRhLmggKi8sCiAJCQkJ
MUEyOEI4Q0IxQzgwRUQ1OTAwNkZENzQzIC8qIFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24uaCAqLywK
QEAgLTEwNDEyLDYgKzEwNDI3LDEyIEBACiAJCQkJOTM1QjU3OTgyNkY1MTI3MDAwOEI0OEFDIC8q
IEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnkuaCAqLywKIAkJCQk5MzFBMDc1MTI2RjA2
MzEwMDA0NDc0Q0QgLyogRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyLmNwcCAqLywKIAkJCQk5MzFB
MDc1MDI2RjA2MzEwMDA0NDc0Q0QgLyogRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyLmggKi8sCisJ
CQkJOTNCNjMxRTMyN0FCQTVGNzAwNDQzQTQ0IC8qIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGll
bnQuY3BwICovLAorCQkJCTkzQjYzMUU0MjdBQkE2MjcwMDQ0M0E0NCAvKiBJREJTdG9yYWdlQ29u
bmVjdGlvblRvQ2xpZW50LmggKi8sCisJCQkJOTNCNjMxRTcyN0FCQTY1QzAwNDQzQTQ0IC8qIElE
QlN0b3JhZ2VNYW5hZ2VyLmNwcCAqLywKKwkJCQk5M0I2MzFFNjI3QUJBNjVDMDA0NDNBNDQgLyog
SURCU3RvcmFnZU1hbmFnZXIuaCAqLywKKwkJCQk5M0I2MzFFQTI3QUJBNkIyMDA0NDNBNDQgLyog
SURCU3RvcmFnZVJlZ2lzdHJ5LmNwcCAqLywKKwkJCQk5M0I2MzFFQjI3QUJBNkIzMDA0NDNBNDQg
LyogSURCU3RvcmFnZVJlZ2lzdHJ5LmggKi8sCiAJCQkJOTNFNzk5QzkyNzYwNDk3QTAwNzQwMDhB
IC8qIExvY2FsU3RvcmFnZU1hbmFnZXIuY3BwICovLAogCQkJCTkzRTc5OUNCMjc2MDQ5N0EwMDc0
MDA4QSAvKiBMb2NhbFN0b3JhZ2VNYW5hZ2VyLmggKi8sCiAJCQkJOTNFNzk5RDgyNzYxMjEwODAw
NzQwMDhBIC8qIE1lbW9yeVN0b3JhZ2VBcmVhLmNwcCAqLywKQEAgLTEwNDIxLDYgKzEwNDQyLDgg
QEAKIAkJCQk5MzA4NURDNzI2RTFDNkVFMDAwRUM2QTcgLyogTmV0d29ya1N0b3JhZ2VNYW5hZ2Vy
Lm1lc3NhZ2VzLmluICovLAogCQkJCTkzMDg1REM1MjZFMUM2Q0YwMDBFQzZBNyAvKiBPcmlnaW5T
dG9yYWdlTWFuYWdlci5jcHAgKi8sCiAJCQkJOTMwODVEQzYyNkUxQzZDRjAwMEVDNkE3IC8qIE9y
aWdpblN0b3JhZ2VNYW5hZ2VyLmggKi8sCisJCQkJOTNCNjMxRUUyN0FCQUNBODAwNDQzQTQ0IC8q
IFF1b3RhTWFuYWdlci5jcHAgKi8sCisJCQkJOTNCNjMxRUYyN0FCQUNBOTAwNDQzQTQ0IC8qIFF1
b3RhTWFuYWdlci5oICovLAogCQkJCTkzRTc5OUNDMjc2MDQ5N0IwMDc0MDA4QSAvKiBTZXNzaW9u
U3RvcmFnZU1hbmFnZXIuY3BwICovLAogCQkJCTkzRTc5OUNBMjc2MDQ5N0EwMDc0MDA4QSAvKiBT
ZXNzaW9uU3RvcmFnZU1hbmFnZXIuaCAqLywKIAkJCQk5M0U3OTlEMzI3NjEyMTA3MDA3NDAwOEEg
LyogU1FMaXRlU3RvcmFnZUFyZWEuY3BwICovLApAQCAtMTMwMzEsNiArMTMwNTQsOSBAQAogCQkJ
CTMxMkNDOUYyMjE1QjA2RjEwMERFNDBDQSAvKiBIaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4MzlBMkYzMjFFMjA2NzQ1MDAzOTA1N0UgLyogSGlnaFBlcmZv
cm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxQzBDOTc0
MURERDc2MDAwMDMyQ0FEMyAvKiBJY29uTG9hZGluZ0RlbGVnYXRlLmggaW4gSGVhZGVycyAqLywK
KwkJCQk5M0I2MzFFNTI3QUJBNjI4MDA0NDNBNDQgLyogSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0Ns
aWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTNCNjMxRTgyN0FCQTY1RDAwNDQzQTQ0IC8qIElE
QlN0b3JhZ2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQk5M0I2MzFFRDI3QUJBNkI0MDA0
NDNBNDQgLyogSURCU3RvcmFnZVJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUUzNTFD
QjE4MEYyQ0NDMDBFNTNCRTkgLyogSURCVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
Q0NGNkIyNTEyQzkzRTdBMDA4RjlDMzUgLyogSW1hZ2VPcHRpb25zLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQTFFQzY5RTE4NzIwOTIxMDBCOTUxRjAgLyogSW1wb3J0YW5jZUFzc2VydGlvbi5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0xMzI0NCw2ICsxMzI3MCw4IEBACiAJCQkJQTFFNjg4NzAxRjZFMkJB
QjAwNzAwNkE2IC8qIFF1YXJhbnRpbmVTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMEMyMjdF
MjQ1MTEzMEEwMEVENjE0RCAvKiBRdWlja0xvb2tUaHVtYm5haWxpbmdTb2Z0TGluay5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUFFRTU3MjUyNDA5RjE0MjAwMjAwNUQ2IC8qIFF1aWNrTG9va1RodW1i
bmFpbExvYWRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTNCNjMxRjMyN0FCQUQ4MDAwNDQzQTQ0
IC8qIFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
OTNCNjMxRjEyN0FCQUNBOTAwNDQzQTQ0IC8qIFF1b3RhTWFuYWdlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNUNCNkFFNDQyNjA5Nzk5QzAwQjZFRDVBIC8qIFJlYXNvblNQSS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTdGRDMxODIyMkIzNTE1RTAwOEQwRThCIC8qIFJlZGlyZWN0U09BdXRob3JpemF0
aW9uU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUIxMjI5RDIyM0ZGMkJDQzAwOENBNzUx
IC8qIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dl
YklEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRGF0
YWJhc2VzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwCmluZGV4IDA0YzI0
MTBmMzVhZGNjMDQ2YzU0MDZhZjBjY2UyZmQwZTg0MWFkYjAuLmQ3OTAxNjliZTBmNThlMzAxZWRi
ZTQ0YzA0NGM3ODM5MWVmNDc0NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVj
dGlvblRvU2VydmVyLmNwcApAQCAtMjksOSArMjksOSBAQAogI2luY2x1ZGUgIkRhdGFSZWZlcmVu
Y2UuaCIKICNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiTmV0d29y
a1N0b3JhZ2VNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaCIKICNpbmNsdWRlICJXZWJJREJSZXN1bHQuaCIKLSNpbmNsdWRlICJXZWJJREJTZXJ2ZXJN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0lE
QkNvbm5lY3Rpb25Ub1NlcnZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSURCQ3Vyc29ySW5mby5o
PgpAQCAtODIsMTMyICs4MiwxMzIgQEAgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uVG9TZXJ2ZXIm
IFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Y29yZUNvbm5lY3Rpb25Ub1NlcnYKIAogdm9pZCBX
ZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRlbGV0ZURhdGFiYXNlKGNvbnN0IElEQlJlcXVlc3RE
YXRhJiByZXF1ZXN0RGF0YSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OkRl
bGV0ZURhdGFiYXNlKHJlcXVlc3REYXRhKSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0
b3JhZ2VNYW5hZ2VyOjpEZWxldGVEYXRhYmFzZShyZXF1ZXN0RGF0YSkpOwogfQogCiB2b2lkIFdl
YklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6b3BlbkRhdGFiYXNlKGNvbnN0IElEQlJlcXVlc3REYXRh
JiByZXF1ZXN0RGF0YSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6Ok9wZW5E
YXRhYmFzZShyZXF1ZXN0RGF0YSkpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdl
TWFuYWdlcjo6T3BlbkRhdGFiYXNlKHJlcXVlc3REYXRhKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29u
bmVjdGlvblRvU2VydmVyOjphYm9ydFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291cmNlSWRlbnRp
ZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklE
QlNlcnZlcjo6QWJvcnRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbklkZW50aWZpZXIpKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkFib3J0VHJhbnNhY3Rpb24odHJh
bnNhY3Rpb25JZGVudGlmaWVyKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVy
Ojpjb21taXRUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0
aW9uSWRlbnRpZmllciwgdWludDY0X3QgcGVuZGluZ1JlcXVlc3RDb3VudCkKIHsKLSAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OkNvbW1pdFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRl
bnRpZmllciwgcGVuZGluZ1JlcXVlc3RDb3VudCkpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdv
cmtTdG9yYWdlTWFuYWdlcjo6Q29tbWl0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZGVudGlmaWVy
LCBwZW5kaW5nUmVxdWVzdENvdW50KSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2Vy
dmVyOjpkaWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbih1aW50NjRfdCBk
YXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXIm
IHRyYW5zYWN0aW9uSWRlbnRpZmllcikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2
ZXI6OkRpZEZpbmlzaEhhbmRsaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKGRhdGFiYXNlQ29u
bmVjdGlvbklkZW50aWZpZXIsIHRyYW5zYWN0aW9uSWRlbnRpZmllcikpOworICAgIHNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6RGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hh
bmdlVHJhbnNhY3Rpb24oZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgdHJhbnNhY3Rpb25J
ZGVudGlmaWVyKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpjcmVhdGVP
YmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQk9i
amVjdFN0b3JlSW5mbyYgaW5mbykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6
OkNyZWF0ZU9iamVjdFN0b3JlKHJlcXVlc3REYXRhLCBpbmZvKSk7CisgICAgc2VuZChNZXNzYWdl
czo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpDcmVhdGVPYmplY3RTdG9yZShyZXF1ZXN0RGF0YSwg
aW5mbykpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGVsZXRlT2JqZWN0
U3RvcmUoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBTdHJpbmcmIG9i
amVjdFN0b3JlTmFtZSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OkRlbGV0
ZU9iamVjdFN0b3JlKHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZU5hbWUpKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkRlbGV0ZU9iamVjdFN0b3JlKHJlcXVlc3RE
YXRhLCBvYmplY3RTdG9yZU5hbWUpKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2
ZXI6OnJlbmFtZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwg
dWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUpCiB7
Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyOjpSZW5hbWVPYmplY3RTdG9yZShyZXF1
ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBuZXdOYW1lKSk7CisgICAgc2VuZChNZXNz
YWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpSZW5hbWVPYmplY3RTdG9yZShyZXF1ZXN0RGF0
YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBuZXdOYW1lKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29u
bmVjdGlvblRvU2VydmVyOjpjbGVhck9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiBy
ZXF1ZXN0RGF0YSwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyKQogewotICAgIHNlbmQo
TWVzc2FnZXM6OldlYklEQlNlcnZlcjo6Q2xlYXJPYmplY3RTdG9yZShyZXF1ZXN0RGF0YSwgb2Jq
ZWN0U3RvcmVJZGVudGlmaWVyKSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VN
YW5hZ2VyOjpDbGVhck9iamVjdFN0b3JlKHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZp
ZXIpKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmNyZWF0ZUluZGV4KGNv
bnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCSW5kZXhJbmZvJiBpbmZv
KQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6Q3JlYXRlSW5kZXgocmVxdWVz
dERhdGEsIGluZm8pKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6
OkNyZWF0ZUluZGV4KHJlcXVlc3REYXRhLCBpbmZvKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVj
dGlvblRvU2VydmVyOjpkZWxldGVJbmRleChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERh
dGEsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpbmRleE5h
bWUpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyOjpEZWxldGVJbmRleChyZXF1
ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleE5hbWUpKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkRlbGV0ZUluZGV4KHJlcXVlc3REYXRhLCBv
YmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4TmFtZSkpOwogfQogCiB2b2lkIFdlYklEQkNvbm5l
Y3Rpb25Ub1NlcnZlcjo6cmVuYW1lSW5kZXgoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3RE
YXRhLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklE
QlNlcnZlcjo6UmVuYW1lSW5kZXgocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmllciwg
aW5kZXhJZGVudGlmaWVyLCBuZXdOYW1lKSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0
b3JhZ2VNYW5hZ2VyOjpSZW5hbWVJbmRleChyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlm
aWVyLCBpbmRleElkZW50aWZpZXIsIG5ld05hbWUpKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0
aW9uVG9TZXJ2ZXI6OnB1dE9yQWRkKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwg
Y29uc3QgSURCS2V5RGF0YSYga2V5RGF0YSwgY29uc3QgSURCVmFsdWUmIHZhbHVlLCBjb25zdCBJ
bmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSBtb2RlKQogewotICAgIHNlbmQoTWVz
c2FnZXM6OldlYklEQlNlcnZlcjo6UHV0T3JBZGQocmVxdWVzdERhdGEsIGtleURhdGEsIHZhbHVl
LCBtb2RlKSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpQdXRP
ckFkZChyZXF1ZXN0RGF0YSwga2V5RGF0YSwgdmFsdWUsIG1vZGUpKTsKIH0KIAogdm9pZCBXZWJJ
REJDb25uZWN0aW9uVG9TZXJ2ZXI6OmdldFJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVx
dWVzdERhdGEsIGNvbnN0IElEQkdldFJlY29yZERhdGEmIGdldFJlY29yZERhdGEpCiB7Ci0gICAg
c2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyOjpHZXRSZWNvcmQocmVxdWVzdERhdGEsIGdldFJl
Y29yZERhdGEpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Okdl
dFJlY29yZChyZXF1ZXN0RGF0YSwgZ2V0UmVjb3JkRGF0YSkpOwogfQogCiB2b2lkIFdlYklEQkNv
bm5lY3Rpb25Ub1NlcnZlcjo6Z2V0QWxsUmVjb3Jkcyhjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVx
dWVzdERhdGEsIGNvbnN0IElEQkdldEFsbFJlY29yZHNEYXRhJiBnZXRBbGxSZWNvcmRzRGF0YSkK
IHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OkdldEFsbFJlY29yZHMocmVxdWVz
dERhdGEsIGdldEFsbFJlY29yZHNEYXRhKSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0
b3JhZ2VNYW5hZ2VyOjpHZXRBbGxSZWNvcmRzKHJlcXVlc3REYXRhLCBnZXRBbGxSZWNvcmRzRGF0
YSkpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Z2V0Q291bnQoY29uc3Qg
SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIHJhbmdl
KQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6R2V0Q291bnQocmVxdWVzdERh
dGEsIHJhbmdlKSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpH
ZXRDb3VudChyZXF1ZXN0RGF0YSwgcmFuZ2UpKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9u
VG9TZXJ2ZXI6OmRlbGV0ZVJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEs
IGNvbnN0IElEQktleVJhbmdlRGF0YSYgcmFuZ2UpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2Vi
SURCU2VydmVyOjpEZWxldGVSZWNvcmQocmVxdWVzdERhdGEsIHJhbmdlKSk7CisgICAgc2VuZChN
ZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpEZWxldGVSZWNvcmQocmVxdWVzdERhdGEs
IHJhbmdlKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpvcGVuQ3Vyc29y
KGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCQ3Vyc29ySW5mbyYg
aW5mbykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6Ok9wZW5DdXJzb3IocmVx
dWVzdERhdGEsIGluZm8pKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFn
ZXI6Ok9wZW5DdXJzb3IocmVxdWVzdERhdGEsIGluZm8pKTsKIH0KIAogdm9pZCBXZWJJREJDb25u
ZWN0aW9uVG9TZXJ2ZXI6Oml0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVl
c3REYXRhLCBjb25zdCBJREJJdGVyYXRlQ3Vyc29yRGF0YSYgZGF0YSkKIHsKLSAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJJREJTZXJ2ZXI6Okl0ZXJhdGVDdXJzb3IocmVxdWVzdERhdGEsIGRhdGEpKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Okl0ZXJhdGVDdXJzb3Io
cmVxdWVzdERhdGEsIGRhdGEpKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6
OmVzdGFibGlzaFRyYW5zYWN0aW9uKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZp
ZXIsIGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYgaW5mbykKIHsKLSAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJJREJTZXJ2ZXI6OkVzdGFibGlzaFRyYW5zYWN0aW9uKGRhdGFiYXNlQ29ubmVjdGlvbklk
ZW50aWZpZXIsIGluZm8pKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFn
ZXI6OkVzdGFibGlzaFRyYW5zYWN0aW9uKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGlu
Zm8pKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRhdGFiYXNlQ29ubmVj
dGlvblBlbmRpbmdDbG9zZSh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKQog
ewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6RGF0YWJhc2VDb25uZWN0aW9uUGVu
ZGluZ0Nsb3NlKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkRhdGFiYXNlQ29ubmVjdGlvblBlbmRpbmdDbG9z
ZShkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVj
dGlvblRvU2VydmVyOjpkYXRhYmFzZUNvbm5lY3Rpb25DbG9zZWQodWludDY0X3QgZGF0YWJhc2VD
b25uZWN0aW9uSWRlbnRpZmllcikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6
OkRhdGFiYXNlQ29ubmVjdGlvbkNsb3NlZChkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKSk7
CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpEYXRhYmFzZUNvbm5l
Y3Rpb25DbG9zZWQoZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcikpOwogfQogCiB2b2lkIFdl
YklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6YWJvcnRPcGVuQW5kVXBncmFkZU5lZWRlZCh1aW50NjRf
dCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZp
ZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJT
ZXJ2ZXI6OkFib3J0T3BlbkFuZFVwZ3JhZGVOZWVkZWQoZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRp
ZmllciwgdHJhbnNhY3Rpb25JZGVudGlmaWVyKSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29y
a1N0b3JhZ2VNYW5hZ2VyOjpBYm9ydE9wZW5BbmRVcGdyYWRlTmVlZGVkKGRhdGFiYXNlQ29ubmVj
dGlvbklkZW50aWZpZXIsIHRyYW5zYWN0aW9uSWRlbnRpZmllcikpOwogfQogCiB2b2lkIFdlYklE
QkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudCh1aW50NjRfdCBk
YXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXIm
IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBJbmRleGVkREI6OkNvbm5lY3Rpb25DbG9zZWRPbkJl
aGFsZk9mU2VydmVyIGNvbm5lY3Rpb25DbG9zZWQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2Vi
SURCU2VydmVyOjpEaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KGRhdGFiYXNlQ29ubmVjdGlvbklk
ZW50aWZpZXIsIHJlcXVlc3RJZGVudGlmaWVyLCBjb25uZWN0aW9uQ2xvc2VkKSk7CisgICAgc2Vu
ZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpEaWRGaXJlVmVyc2lvbkNoYW5nZUV2
ZW50KGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHJlcXVlc3RJZGVudGlmaWVyLCBjb25u
ZWN0aW9uQ2xvc2VkKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpvcGVu
REJSZXF1ZXN0Q2FuY2VsbGVkKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkKIHsK
LSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6Ok9wZW5EQlJlcXVlc3RDYW5jZWxsZWQo
cmVxdWVzdERhdGEpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6
Ok9wZW5EQlJlcXVlc3RDYW5jZWxsZWQocmVxdWVzdERhdGEpKTsKIH0KIAogdm9pZCBXZWJJREJD
b25uZWN0aW9uVG9TZXJ2ZXI6OmdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhjb25zdCBJ
REJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBDbGllbnRPcmln
aW4mIG9yaWdpbikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OkdldEFsbERh
dGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhyZXF1ZXN0SWRlbnRpZmllciwgb3JpZ2luKSk7CisgICAg
c2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpHZXRBbGxEYXRhYmFzZU5hbWVz
QW5kVmVyc2lvbnMocmVxdWVzdElkZW50aWZpZXIsIG9yaWdpbikpOwogfQogCiB2b2lkIFdlYklE
QkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGlkRGVsZXRlRGF0YWJhc2UoY29uc3QgSURCUmVzdWx0RGF0
YSYgcmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL0luUHJv
Y2Vzc0lEQlNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvSW5Qcm9jZXNz
SURCU2VydmVyLmNwcAppbmRleCBlYTJlMmE3OGY4OGZmZGQxMDFhM2ExMzdmMGQ1YTEwYTU2ZTEw
ZmIyLi4wY2FkYjUwNDJiYTE2MTA3N2Y5NDQ5YTk3M2RjZjk4MzJkMzcwMmFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvSW5Qcm9jZXNzSURCU2VydmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvSW5Qcm9jZXNzSURCU2VydmVyLmNwcApAQCAt
NDIsNiArNDIsOCBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAorc3RhdGljIGNvbnN0
ZXhwciB1aW50NjRfdCBkZWZhdWx0UGVyT3JpZ2luUXVvdGEgPSAgMTAwMCAqIE1COworCiBSZWY8
SW5Qcm9jZXNzSURCU2VydmVyPiBJblByb2Nlc3NJREJTZXJ2ZXI6OmNyZWF0ZShQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQpCiB7CiAgICAgQVNTRVJUKHNlc3Npb25JRC5pc0VwaGVtZXJhbCgpKTsK
QEAgLTczLDcgKzc1LDcgQEAgSW5Qcm9jZXNzSURCU2VydmVyOjp+SW5Qcm9jZXNzSURCU2VydmVy
KCkKIFN0b3JhZ2VRdW90YU1hbmFnZXIqIEluUHJvY2Vzc0lEQlNlcnZlcjo6cXVvdGFNYW5hZ2Vy
KGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2luKQogewogICAgIHJldHVybiBtX3F1b3RhTWFuYWdl
cnMuZW5zdXJlKG9yaWdpbiwgW10gewotICAgICAgICByZXR1cm4gU3RvcmFnZVF1b3RhTWFuYWdl
cjo6Y3JlYXRlKFN0b3JhZ2VRdW90YU1hbmFnZXI6OmRlZmF1bHRRdW90YSgpLCBbXSB7CisgICAg
ICAgIHJldHVybiBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpjcmVhdGUoZGVmYXVsdFBlck9yaWdpblF1
b3RhLCBbXSB7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfSwgW10odWludDY0X3Qg
cXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRTcGFjZSwgdWludDY0X3Qgc3BhY2VJbmNyZWFzZSwgYXV0
byBjYWxsYmFjaykgewogICAgICAgICAgICAgY2FsbGJhY2socXVvdGEgKyBjdXJyZW50U3BhY2Ug
KyBzcGFjZUluY3JlYXNlKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0No
YW5nZUxvZwppbmRleCBlMTBjMGRhOGViOTBkNjdkNTUxMTE5OGE2NjVhYjc3MGU3ZDE4MzQ5Li42
NGY4NmJmNGQyZjY0MGIyMGQ1ZTc0MWNmYzAxNmNlMzhkY2FkM2E2IDEwMDY0NAotLS0gYS9Ub29s
cy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjIt
MDItMDMgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgTWFuYWdl
IEluZGV4ZWREQiBzdG9yYWdlIGJ5IG9yaWdpbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0OTI1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NzU1
NTAxND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBV
cGRhdGUgZXhpc3RpbmcgdGVzdHMgZm9yIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCRmlsZU5hbWUubW06CisgICAg
ICAgIChydW5UZXN0KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0luZGV4ZWREQlBlcnNpc3RlbmNlLm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvU3RvcmVCbG9iVGhlbkRlbGV0ZS5tbToKKyAgICAgICAgKFRFU1QpOgorCiAy
MDIyLTAyLTAxICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbRVdTXSBSZW5hbWUgQ29tcGlsZVdlYktpdFdpdGhvdXRQYXRjaCB0byBDb21waWxlV2ViS2l0
V2l0aG91dENoYW5nZQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9JbmRleGVkREJGaWxlTmFtZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvSW5kZXhlZERCRmlsZU5hbWUubW0KaW5kZXggYTZiMDEyOWJjMTA1OWM0Zjlj
MTE4ZDFmZDdlZmQyMTIzZWFjMmM3YS4uNDEwMjIyNGU0NTI3NGQzNjM3OWU0YmIwMDJhMGZlZTg5
ODMyZjViYyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9JbmRleGVkREJGaWxlTmFtZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0luZGV4ZWREQkZpbGVOYW1lLm1tCkBAIC03MSwyMCArNzEsMjMgQEAgc3RhdGlj
IHZvaWQgcnVuVGVzdCgpCiAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBzdHJpbmcyID0gKE5TU3Ry
aW5nICopW2xhc3RTY3JpcHRNZXNzYWdlIGJvZHldOwogICAgIEVYUEVDVF9XS19TVFJFUShAIlN1
Y2Nlc3MiLCBzdHJpbmcyLmdldCgpKTsKIAotICAgIC8vIEZvciBkYXRhYmFzZSB0aGF0IGlzIG5v
dCBvcGVuZWQgYWZ0ZXIgdXBncmFkZSwgaXRzIGZpbGUgc2hvdWxkIGJlIGluIHYwLgorICAgIC8v
IEFsbCBkYXRhYmFzZXMgb2YgYW4gb3JpZ2luIGFyZSBtaWdyYXRlZCB0byBuZXcgdmVyc2lvbiBk
aXJlY3Rvcnkgd2hlbiB0aGUgb3JpZ2luIGlzIGFjY2Vzc2VkLgogICAgIGF1dG8gZGVmYXVsdEZp
bGVNYW5hZ2VyID0gW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdOwogICAgIE5TU3RyaW5n
ICpleGlzdGluZ0RhdGFiYXNlTmFtZSA9IEAiSW5kZXhlZERCVGVzdCI7CiAgICAgTlNTdHJpbmcg
KmNyZWF0ZWREYXRhYmFzZU5hbWUgPSBAIkluZGV4ZWREQk90aGVyIjsKICAgICBOU1N0cmluZyAq
dW51c2VkRGF0YWJhc2VOYW1lID0gQCJJbmRleGVkREJVbnVzZWQiOwogICAgIE5TU3RyaW5nICpl
eGlzdGluZ0RhdGJhc2VIYXNoID0gV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0ZUhh
c2hGb3JGaWxlTmFtZShleGlzdGluZ0RhdGFiYXNlTmFtZSk7CiAgICAgTlNTdHJpbmcgKmNyZWF0
ZWREYXRhYmFzZUhhc2ggPSBXZWJDb3JlOjpTUUxpdGVGaWxlU3lzdGVtOjpjb21wdXRlSGFzaEZv
ckZpbGVOYW1lKGNyZWF0ZWREYXRhYmFzZU5hbWUpOworICAgIE5TU3RyaW5nICp1bnVzZWREYXRh
YmFzZUhhc2ggPSBXZWJDb3JlOjpTUUxpdGVGaWxlU3lzdGVtOjpjb21wdXRlSGFzaEZvckZpbGVO
YW1lKGNyZWF0ZWREYXRhYmFzZU5hbWUpOwogICAgIE5TVVJMICppZGJSb290VVJMID0gW1tXS1dl
YnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0
b3J5XTsKICAgICBOU1VSTCAqb2xkVmVyc2lvbkRpcmVjdG9yeVVSTCA9IFtpZGJSb290VVJMIFVS
TEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAInYwIl07CiAgICAgTlNVUkwgKm5ld1ZlcnNpb25E
aXJlY3RvcnlVUkwgPSBbaWRiUm9vdFVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJ2
MSJdOwogICAgIE5TVVJMICpvbGRWZXJzaW9uT3JpZ2luRGlyZWN0b3J5VVJMID0gW29sZFZlcnNp
b25EaXJlY3RvcnlVUkwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OiBAImZpbGVfXzAiXTsK
ICAgICBOU1VSTCAqbmV3VmVyc2lvbk9yaWdpbkRpcmVjdG9yeVVSTCA9IFtuZXdWZXJzaW9uRGly
ZWN0b3J5VVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDogQCJmaWxlX18wIl07CiAgICAg
TlNVUkwgKm9sZFZlcnNpb25VbnVzZWREYXRhYmFzZURpcmVjdG9yeVVSTCA9IFtvbGRWZXJzaW9u
T3JpZ2luRGlyZWN0b3J5VVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDp1bnVzZWREYXRh
YmFzZU5hbWVdOwotICAgIEVYUEVDVF9UUlVFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdl
cl0gZmlsZUV4aXN0c0F0UGF0aDpvbGRWZXJzaW9uVW51c2VkRGF0YWJhc2VEaXJlY3RvcnlVUkwu
cGF0aF0pOworICAgIE5TVVJMICpuZXdWZXJzaW9uVW51c2VkRGF0YWJhc2VEaXJlY3RvcnlVUkwg
PSBbbmV3VmVyc2lvbk9yaWdpbkRpcmVjdG9yeVVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25l
bnQ6dW51c2VkRGF0YWJhc2VIYXNoXTsKKyAgICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVNYW5hZ2Vy
IGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOm9sZFZlcnNpb25VbnVzZWREYXRhYmFz
ZURpcmVjdG9yeVVSTC5wYXRoXSk7CisgICAgRVhQRUNUX1RSVUUoW1tOU0ZpbGVNYW5hZ2VyIGRl
ZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOm5ld1ZlcnNpb25VbnVzZWREYXRhYmFzZURp
cmVjdG9yeVVSTC5wYXRoXSk7CiAgICAgCiAgICAgLy8gRm9yIGRhdGFiYXNlIHRoYXQgaXMgb3Bl
bmVkIGFmdGVyIHVwZ3JhZGUsIGl0cyBmaWxlIHNob3VsZCBvbmx5IGJlIGluIHYxLgogICAgIE5T
VVJMICpvbGRWZXJzaW9uRXhpc3RpbmdEYXRhYmFzZURpcmVjdG9yeVVSTCA9IFtvbGRWZXJzaW9u
T3JpZ2luRGlyZWN0b3J5VVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDogZXhpc3RpbmdE
YXRhYmFzZU5hbWVdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9JbmRleGVkREJQZXJzaXN0ZW5jZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCUGVyc2lzdGVuY2UubW0KaW5kZXggMjcxOGM0YWIzNjlh
ODE4MmRhMGUxMThjNDUxNjY2YWU5ZDFlMmM3NC4uNGYwYThlYzk0NDU0OGNhNmM3ODcwMTVjNmI2
ZDk1MDg1ODgzODhiMyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9JbmRleGVkREJQZXJzaXN0ZW5jZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlBlcnNpc3RlbmNlLm1tCkBAIC0zMDUsMTAgKzMw
NSwxNCBAQCBURVNUKEluZGV4ZWREQiwgSW5kZXhlZERCVGhpcmRQYXJ0eURhdGFSZW1vdmFsKQog
ICAgIEVYUEVDVF9XS19TVFJFUSggQCJkYXRhYmFzZSBpcyBjcmVhdGVkIC0gcHV0IGl0ZW0gc3Vj
Y2VzcyIsIChOU1N0cmluZyAqKVtsYXN0U2NyaXB0TWVzc2FnZSBib2R5XSk7CiAKICAgICByZWFk
eVRvQ29udGludWUgPSBmYWxzZTsKLSAgICBbW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0
YVN0b3JlXSBmZXRjaERhdGFSZWNvcmRzT2ZUeXBlczp3ZWJzaXRlRGF0YVR5cGVzLmdldCgpIGNv
bXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxXS1dlYnNpdGVEYXRhUmVjb3JkICo+ICpkYXRhUmVj
b3JkcykgewotICAgICAgICBFWFBFQ1RfRVEoMXUsIGRhdGFSZWNvcmRzLmNvdW50KTsKLSAgICAg
ICAgRVhQRUNUX1dLX1NUUkVRKCJpZnJhbWUiLCBbW2RhdGFSZWNvcmRzIGZpcnN0T2JqZWN0XSBk
aXNwbGF5TmFtZV0pOwotICAgICAgICBbW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0
b3JlXSByZW1vdmVEYXRhT2ZUeXBlczp3ZWJzaXRlRGF0YVR5cGVzLmdldCgpIGZvckRhdGFSZWNv
cmRzOmRhdGFSZWNvcmRzIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7CisgICAgW1tXS1dlYnNpdGVE
YXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gZmV0Y2hEYXRhUmVjb3Jkc09mVHlwZXM6d2Vic2l0
ZURhdGFUeXBlcy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8V0tXZWJzaXRlRGF0
YVJlY29yZCAqPiAqcmVjb3JkcykgeworICAgICAgICBFWFBFQ1RfRVEoMnUsIHJlY29yZHMuY291
bnQpOworICAgICAgICBOU1NvcnREZXNjcmlwdG9yICpyZWNvcmREZXNjcmlwdG9yID0gW05TU29y
dERlc2NyaXB0b3Igc29ydERlc2NyaXB0b3JXaXRoS2V5OkAiZGlzcGxheU5hbWUiIGFzY2VuZGlu
ZzpZRVNdOworICAgICAgICBOU0FycmF5ICpzb3J0RGVzY3JpcHRvcnMgPSBAW3JlY29yZERlc2Ny
aXB0b3JdOworICAgICAgICBOU0FycmF5ICpzb3J0ZWRSZWNvcmRzID0gW3JlY29yZHMgc29ydGVk
QXJyYXlVc2luZ0Rlc2NyaXB0b3JzOnNvcnREZXNjcmlwdG9yc107CisgICAgICAgIEVYUEVDVF9X
S19TVFJFUSgiaWZyYW1lIiwgW1tzb3J0ZWRSZWNvcmRzIG9iamVjdEF0SW5kZXg6MF0gZGlzcGxh
eU5hbWVdKTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKCJ3ZWJraXQub3JnIiwgW1tzb3J0ZWRS
ZWNvcmRzIG9iamVjdEF0SW5kZXg6MV0gZGlzcGxheU5hbWVdKTsKKyAgICAgICAgW1tXS1dlYnNp
dGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gcmVtb3ZlRGF0YU9mVHlwZXM6d2Vic2l0ZURh
dGFUeXBlcy5nZXQoKSBmb3JEYXRhUmVjb3JkczpyZWNvcmRzIGNvbXBsZXRpb25IYW5kbGVyOl4o
KSB7CiAgICAgICAgICAgICByZWFkeVRvQ29udGludWUgPSB0cnVlOwogICAgICAgICB9XTsKICAg
ICB9XTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
U3RvcmVCbG9iVGhlbkRlbGV0ZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvU3RvcmVCbG9iVGhlbkRlbGV0ZS5tbQppbmRleCBhYWJmZmY4N2JjNjRiMzk1MmIyNDE0
NTIxNWVlMDM4Mjg2YjdjODkxLi44ZTg1YTQwYTVlODNiYTAzNDMyMWU3ZTc5NjlkODM1NWUzMmMy
NDY1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1N0
b3JlQmxvYlRoZW5EZWxldGUubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9TdG9yZUJsb2JUaGVuRGVsZXRlLm1tCkBAIC04Nyw3ICs4Nyw3IEBAIFRFU1QoSW5k
ZXhlZERCLCBTdG9yZUJsb2JUaGVuUmVtb3ZlRGF0YSkKICAgICBbW05TRmlsZU1hbmFnZXIgZGVm
YXVsdE1hbmFnZXJdIGNvcHlJdGVtQXRQYXRoOmRhdGFiYXNlRmlsZVBhdGggdG9QYXRoOmZha2VT
aG1QYXRoIGVycm9yOm5pbF07CiAgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBj
b3B5SXRlbUF0UGF0aDpkYXRhYmFzZUZpbGVQYXRoIHRvUGF0aDpmYWtlV2FsUGF0aCBlcnJvcjpu
aWxdOwogCi0gICAgLy8gTWFrZSBzb21lIG90aGVyIC5ibG9iIGZpbGVzIGluIHRoZSBkYXRhYmFz
ZSBkaXJlY3RvcnkgdG8gbGF0ZXIgdmFsaWRhdGUgdGhhdCBvbmx5IGFwcHJvcHJpYXRlIGZpbGVz
IGFyZSBkZWxldGVkLgorICAgIC8vIE1ha2Ugc29tZSBvdGhlciAuYmxvYiBmaWxlcyBpbiB0aGUg
ZGF0YWJhc2UgZGlyZWN0b3J5IHRvIGxhdGVyIHZhbGlkYXRlIGFsbCBibG9iIGZpbGVzIGluIHRo
ZSBkaXJlY3RvcnkgYXJlIGRlbGV0ZWQuCiAgICAgTlNTdHJpbmcgKm90aGVyQmxvYjEgPSBbZGF0
YWJhc2VEaXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiNzE4Mi5ibG9i
Il07CiAgICAgTlNTdHJpbmcgKm90aGVyQmxvYjIgPSBbZGF0YWJhc2VEaXJlY3Rvcnkgc3RyaW5n
QnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiMWEuYmxvYiJdOwogICAgIE5TU3RyaW5nICpvdGhl
ckJsb2IzID0gW2RhdGFiYXNlRGlyZWN0b3J5IHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVu
dDpAImExLmJsb2IiXTsKQEAgLTEwMiwxMyArMTAyLDEyIEBAIFRFU1QoSW5kZXhlZERCLCBTdG9y
ZUJsb2JUaGVuUmVtb3ZlRGF0YSkKICAgICAgICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdl
ciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpibG9iRmlsZVBhdGhdKTsKICAgICAg
ICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0
c0F0UGF0aDpkYXRhYmFzZUZpbGVQYXRoXSk7CiAKLSAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBm
YWtlIGJsb2IgZmlsZSB3aXRoIGEgdmFsaWQgYmxvYiBmaWxlIG5hbWUgaXMgZ29uZS4KKyAgICAg
ICAgLy8gTWFrZSBzdXJlIGFsbCBmYWtlIGJsb2IgZmlsZSBhcmUgZ29uZS4KICAgICAgICAgRVhQ
RUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0
aDpvdGhlckJsb2IxXSk7CiAKLSAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBmYWtlIGJsb2IgZmls
ZXMgd2l0aCBpbnZhbGlkIGJsb2IgZmlsZSBuYW1lcyBhcmUgc3RpbGwgdGhlcmUuCi0gICAgICAg
IEVYUEVDVF9UUlVFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0
UGF0aDpvdGhlckJsb2IyXSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKFtbTlNGaWxlTWFuYWdlciBk
ZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpvdGhlckJsb2IzXSk7Ci0gICAgICAgIEVY
UEVDVF9UUlVFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0
aDpvdGhlckJsb2I0XSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShbW05TRmlsZU1hbmFnZXIgZGVm
YXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6b3RoZXJCbG9iMl0pOworICAgICAgICBFWFBF
Q1RfRkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRo
Om90aGVyQmxvYjNdKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZh
dWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpvdGhlckJsb2I0XSk7CiAKICAgICAgICAgLy8g
TWFrZSBzdXJlIGV2ZXJ5dGhpbmcgcmVsYXRlZCB0byB0aGUgZmFrZSBkYXRhYmFzZSBpcyBnb25l
LgogICAgICAgICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBm
aWxlRXhpc3RzQXRQYXRoOmZha2VTaG1QYXRoXSk7Cg==
</data>
<flag name="commit-queue"
          id="477325"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450805</attachid>
            <date>2022-02-03 13:02:54 -0800</date>
            <delta_ts>2022-02-03 21:12:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234925-20220203130253.patch</filename>
            <type>text/plain</type>
            <size>285921</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5MDIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDZkYmQwOWQ0N2NmY2Q5OWRlMjUyNmNj
MzJkNWI3MzMwZTI5NWUyYjMuLmM0MjA4ZGI1MjVhMzYxNGE5NzAwZGRiNmNiNjg4N2Y2MDdhMzAx
MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjItMDItMDMgIFNpaHVpIExpdSAgPHNpaHVpX2xp
dUBhcHBsZS5jb20+CisKKyAgICAgICAgTWFuYWdlIEluZGV4ZWREQiBzdG9yYWdlIGJ5IG9yaWdp
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0OTI1
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NzU1NTAxND4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBoZWxwZXIgZnVuY3Rpb24gdG8gZ2V0
IHRoZSB0YXJnZXQgZnJvbSBhIHN5bW9ibGljIGxpbmsgcGF0aC4KKworICAgICAgICAqIHd0Zi9G
aWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6OmdldFN5bWJvbGlj
TGlua1RhcmdldCk6CisgICAgICAgICogd3RmL0ZpbGVTeXN0ZW0uaDoKKwogMjAyMi0wMi0wMiAg
WGFuIExvcGV6ICA8eGFuQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0pTQ10gUmVtb3ZlIGNvbXBp
bGVyIHdhcm5pbmcgaW4gVHJhaWxpbmdBcnJheS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmU5MzcyMGMxNGM0
NjdiMGNjYmYxZDBjYmYzMTQ5MzQ5MDVhMzdiZi4uZGMyMWQ4YzdmYTZmOTVlNzA0NTI4OWU2MWE0
MGRlZGY1NzI0Njc0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk2IEBACisyMDIyLTAyLTAzICBT
aWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIE1hbmFnZSBJbmRleGVk
REIgc3RvcmFnZSBieSBvcmlnaW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzNDkyNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODc1NTUwMTQ+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQm90aCBXZWJL
aXQgYW5kIFdlYktpdExlZ2FjeSB1c2VkIElEQlNlcnZlciB0byBtYW5hZ2UgVW5pcXVlSURCRGF0
YWJhc2VzLCBhbmQgVW5pcXVlSURCRGF0YWJhc2UgcG9pbnRlZCB0byAKKyAgICAgICAgSURCU2Vy
dmVyLiBOb3cgdGhhdCBXZWJLaXQgdXNlcyBXZWJLaXQ6OklEQlN0b3JhZ2VNYW5hZ2VyIHRvIG1h
bmFnZSBVbmlxdWVJREJEYXRhYmFzZXMuIFdlIHVudGllIHRoZSAKKyAgICAgICAga25vdCBiZXR3
ZWVuIElEQlNlcnZlciBhbmQgVW5pcXVlSURCRGF0YWJhc2UgYnkgYWRkaW5nIGEgbmV3IGFic3Ry
YWN0IGNsYXNzIFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlciBhbmQgbWFrZQorICAgICAgICBVbmlx
dWVJREJEYXRhYmFzZSBwb2ludCB0byBVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuCisKKyAgICAg
ICAgQWxzbywgYXMgcXVvdGEgY2hlY2sgaXMgbm8gbG9uZ2VyIGFzeW5jIGFjY29yZGluZyB0byBj
aGFuZ2VzIGluIFdlYktpdCwgd2UgbmVlZCB0byB1cGRhdGUgb3BlcmF0aW9ucyBpbgorICAgICAg
ICBVbmlxdWVJREJEYXRhYmFzZSB0byBhZG9wdCB0aGUgY2hhbmdlLgorCisgICAgICAgIENvdmVy
ZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnQuaDoKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpyZWdpc3RlckNvbm5lY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OnVucmVnaXN0ZXJDb25uZWN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpjcmVhdGVCYWNraW5nU3Rv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OnVwZ3JhZGVkRGF0
YWJhc2VEaXJlY3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6
OnJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6SURCU2VydmVyOjp1bnJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0aW9uKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpjbG9zZUFuZFRh
a2VVbmlxdWVJREJEYXRhYmFzZSk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0lEQlNlcnZlci5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpNZW1vcnlJREJCYWNraW5nU3RvcmU6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZSk6CisgICAgICAg
IChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0
U3RvcmUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNr
aW5nU3RvcmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2Jq
ZWN0U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlPYmplY3RT
dG9yZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5T2JqZWN0
U3RvcmU6Ok1lbW9yeU9iamVjdFN0b3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNl
cnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpTUUxpdGVJREJCYWNraW5nU3RvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmVuY29kZURh
dGFiYXNlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tp
bmdTdG9yZTo6ZGVjb2RlRGF0YWJhc2VOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZl
cjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRl
QmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFj
a2luZ1N0b3JlOjpmaWxlbmFtZUZvckRhdGFiYXNlTmFtZSBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZnVsbERhdGFi
YXNlRGlyZWN0b3J5V2l0aFVwZ3JhZGUpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6VW5pcXVlSURCRGF0YWJhc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6bWFuYWdlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtQ3Vy
cmVudE9wZW5PcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJ
REJEYXRhYmFzZTo6cGVyZm9ybUN1cnJlbnRPcGVuT3BlcmF0aW9uQWZ0ZXJTcGFjZUNoZWNrKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZUJh
Y2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFi
YXNlOjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVu
aXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpyZW5hbWVPYmplY3RTdG9yZSk6CisgICAgICAg
IChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpjbGVhck9iamVjdFN0b3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0
ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6
OmRlbGV0ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0
YWJhc2U6OnJlbmFtZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVl
SURCRGF0YWJhc2U6OnB1dE9yQWRkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5p
cXVlSURCRGF0YWJhc2U6OnB1dE9yQWRkQWZ0ZXJTcGFjZUNoZWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmdldFJlY29yZCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRBbGxSZWNvcmRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmdldENvdW50KToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZVJl
Y29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpv
cGVuQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJh
c2U6Oml0ZXJhdGVDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJ
REJEYXRhYmFzZTo6Y29tbWl0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6YWJvcnRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjphYm9ydEluUHJvZ3Jlc3NUcmFuc2Fj
dGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6
aGFzRGF0YUluTWVtb3J5IGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvVW5pcXVlSURCRGF0YWJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5p
cXVlSURCRGF0YWJhc2U6OnNlcnZlcik6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbjo6VW5pcXVlSURC
RGF0YWJhc2VDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVl
SURCRGF0YWJhc2VDb25uZWN0aW9uOjp+VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uOjpt
YW5hZ2VyKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0
YWJhc2VDb25uZWN0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlE
QkRhdGFiYXNlQ29ubmVjdGlvbjo6c2VydmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXI6On5Vbmlx
dWVJREJEYXRhYmFzZU1hbmFnZXIpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6VW5pcXVlSURCRGF0YWJhc2VU
cmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFi
YXNlVHJhbnNhY3Rpb246On5VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uKToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5o
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJFcnJvci5oOgorICAgICAg
ICAoV2ViQ29yZTo6SURCRXJyb3I6Om9wZXJhdG9yIGJvb2wgY29uc3QpOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5oOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXNvdXJjZUlkZW50aWZpZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllcjo6b3BlcmF0b3IhPSBjb25zdCk6CisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDIyLTAyLTAyICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVXNlIHBy
aXZhdGUgcmVsYXkgZm9yIGFsbCBzdWJyZXNvdXJjZXMgaWYgdGhlIG1haW4gZG9jdW1lbnQgbWFp
biByZXNvdXJjZSB3YXMgbG9hZGVkIHVzaW5nIHByaXZhdGUgcmVsYXkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNDM4
NmQxZTJiMzg2ODFiMjg5NDhlNTllODYwYTBkNTc4ZTBmNDY1My4uN2Q0NjliNjRiNWIxOGRjNzBk
ZGI1YzE4NmIwMjVhOGNjMTJhMjE2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNjUgQEAKKzIwMjIt
MDItMDMgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgTWFuYWdl
IEluZGV4ZWREQiBzdG9yYWdlIGJ5IG9yaWdpbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0OTI1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NzU1
NTAxND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJ
biBuZXR3b3JrIHByb2Nlc3MsIEluZGV4ZWREQiBkYXRhIGlzIG1hbmFnZWQgYnkgV2ViS2l0OjpX
ZWJJREJTZXJ2ZXIuIEVhY2ggc2Vzc2lvbiBvd25zIGEgV2ViSURCU2VydmVyIAorICAgICAgICAo
SURCU2VydmVyKSBhbmQgZWFjaCBJREJTZXJ2ZXIgb3ducyBvbmUgb3IgbW9yZSBVbmlxdWVJREJE
YXRhYmFzZXMgKHJlc3ByZW50aW5nIG9uZSBhY3R1YWwgZGF0YWJhc2UgdGhhdAorICAgICAgICBJ
REJEYXRhYmFzZSBjb25uZWN0cyB0bywgY2FuIGJlIGlkZW50aWZpZWQgYnkge3Nlc3Npb24sIG9y
aWdpbiwgbmFtZX0pLiBOb3cgdGhhdCB3ZSBoYXZlIE5ldHdvcmtTdG9yYWdlTWFuYWdlciwgCisg
ICAgICAgIHdoaWNoIG1hbmFnZXMgc2Vzc2lvbiBzdG9yYWdlIGJ5IG9yaWdpbiwgd2UgY2FuIG1l
cmdlIFdlYklEQlNlcnZlciB3aXRoIE5ldHdvcmtTdG9yYWdlTWFuYWdlciwgc2luY2UgSW5kZXhl
ZERCIAorICAgICAgICBzdG9yYWdlIGlzIG5vdCBzaGFyZWQgYWNyb3NzIG9yaWdpbnMuCisKKyAg
ICAgICAgVGhlIG9sZCBzdHJ1Y3R1cmUgaXM6CisgICAgICAgIE5ldHdvcmtTZXNzaW9uIC0gV2Vi
SURCU2VydmVyIC0gSURCU2VydmVyIC0gVW5pcXVlSURCRGF0YWJhc2VzCisgICAgICAgIFRoZSBu
ZXcgc3RydWN0dXJlIGlzOgorICAgICAgICBOZXR3b3JrU2Vzc2lvbiAtIE5ldHdvcmtTdG9yYWdl
TWFuYWdlciAtIE9yaWdpblN0b3JhZ2VNYW5hZ2VyIC0gSURCU3RvcmFnZU1hbmFnZXIgLSBVbmlx
dWVJREJEYXRhYmFzZQorCisgICAgICAgIFRvIGNvbXBsZXRlIHRoaXMgdHJhbnNpdGlvbiwgd2Ug
bmVlZCB0byBtYWtlIGEgZmV3IGNoYW5nZXM6CisgICAgICAgIDEuIFdlYiBwcm9jZXNzIG5vdyBz
ZW5kcyBJbmRleGVkREIgcmVsYXRlZCBtZXNzYWdlcyB0byBOZXR3b3JrU3RvcmFnZU1hbmFnZXIg
aW5zdGVhZCBvZiBXZWJJREJTZXJ2ZXIuIAorICAgICAgICAyLiBTb21lIG1lc3NhZ2VzIGFyZSBz
ZW50IHRvIG9wZXJhdGUgb24gVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uIG9yIFVuaXF1ZUlE
QkRhdGFiYXNlVHJhbnNhY3Rpb24sIGFuZCB0aGV5IAorICAgICAgICB1c2UgaWRlbnRpZmllcnMg
dG8gc3BlY2lmeSB0aGUgdGFyZ2V0LiBUaGVyZWZvcmUsIE5ldHdvcmtTdG9yYWdlTWFuYWdlcnMg
bmVlZHMgdG8ga25vdyB0aGUgbWFwcGluZyBiZXR3ZWVuIAorICAgICAgICBpZGVudGlmaWVycyBh
bmQgdGFyZ2V0IG9iamVjdHMuIFdlIGFkZCBhIG5ldyBJREJTdG9yYWdlUmVnaXN0cnkgY2xhc3Mg
dG8gcmVjb3JkIHRoaXMgbWFwcGluZy4gRWFjaCAKKyAgICAgICAgTmV0d29ya1N0b3JhZ2VNYW5h
Z2VyIG93bnMgYSBJREJTdG9yYWdlUmVnaXN0cnkgYW5kIGl0IHBhc3NlcyBJREJTdG9yYWdlUmVn
aXN0cnkgdG8gSURCU3RvcmFnZU1hbmFnZXIsCisgICAgICAgIElEQlN0b3JhZ2VNYW5hZ2VyIHdp
bGwgcmVnaXN0ZXIgb2JqZWN0cyB0byBJREJTdG9yYWdlUmVnaXN0cnkgYW5kIE5ldHdvcmtTdG9y
YWdlTWFuYWdlciBjYW4gZG8gc2VhcmNoIHZpYSAKKyAgICAgICAgSURCU3RvcmFnZVJlZ2lzdHJ5
LgorICAgICAgICAzLiBRdW90YSBjaGVjayBmb3IgSW5kZXhlZERCIG9wZXJhdGlvbnMgYmVjb21l
cyBhc3luYyBieSBhZGRpbmcgbmV3IFF1b3RhTWFuYWdlciBjbGFzcywgd2hpY2ggaXMgc2ltaWxh
ciB0byAKKyAgICAgICAgV2ViQ29yZTo6U3RvcmFnZVF1b3RhTWFuYWdlciBidXQgcHJvdmlkZXMg
YXN5bmMgaW50ZXJmYWNlcy4gCisgICAgICAgIFdlIHVzZWQgdG8gYmxvY2sgdGhlIElEQlNlcnZl
ciB0aHJlYWQgd2hlbiBpdCBpcyB3YWl0aW5nIGZvciBxdW90YSBjaGVjayByZXN1bHQgZnJvbSBV
SSBwcm9jZXNzLCB0aGlzIGlzIGZpbmUgCisgICAgICAgIGJlY2F1c2UgSURCU2VydmVyIHJ1bnMg
b24gaXRzIG93biB0aHJlYWQuIE5vdyB0aGF0IElEQlN0b3JhZ2VNYW5hZ2VyIHJ1bnMgb24gdGhl
IHNhbWUgdGhyZWFkIGFzIHRoZSBvdGhlciAKKyAgICAgICAgc3RvcmFnZSB0eXBlcywgd2UgY2Fu
bm90IGJsb2NrIHRoZSB0aHJlYWQgb24gcXVvdGEgY2hlY2suCisgICAgICAgIDQuIFJlbmFtZSBX
ZWJJREJDb25uZWN0aW9uVG9DbGllbnQgdG8gSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudCB0
byByZWZsZWN0IHRoZSBjaGFuZ2Ugb24gdGhlIHN0cnVjdHVyZS4gQWxzbywKKyAgICAgICAgSURC
U3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudCBkb2VzIG5vdCBrZWVwIHJlZmVyZW5jZSB0byB0aGUg
SVBDOjpDb25uZWN0aW9uIG5vdywgaXQgb25seSByZWNvcmRzIAorICAgICAgICBJUEM6OkNvbm5l
Y3Rpb246OlVuaXF1ZUlELgorICAgICAgICA1LiBJbmRleGVkREIgZGF0YSBtYXkgYmUgcHV0IGlu
IGRpZmZlcmVudCB2ZXJzaW9uIGRpcmN0b3JpZXMuIFdlIHVzZWQgdG8gbWlncmF0ZSBkYXRhYmFz
ZSB0byBuZXcgdmVyc2lvbiAKKyAgICAgICAgZGlyZXRvcnkgd2hlbiB0aGUgZGF0YWJhc2UgaXMg
YWNjZXNzZWQuIEFzIElEQlN0b3JhZ2VNYW5hZ2VyIG5vdyBtYW5hZ2VzIEluZGV4ZWREQiBkYXRh
IG9mIG9uZSBvcmlnaW4sIGl0J3MgCisgICAgICAgIHNpbXBsZXIgaWYgaXQgb25seSBrZWVwcyB0
cmFjayBvZiBvbmUgZGlyZWN0b3J5LiBUaGVyZWZvcmUsIHdlIG5vdyBtaWdyYXRlIGFsbCBkYXRh
YmFzZXMgb2Ygb25lIG9yaWdpbgorICAgICAgICB3aGVuIHRoZSBvcmlnaW4gaXMgYWNjZXNzZWQg
KHNlZSBJREJTdG9yYWdlTWFuYWdlcjo6aWRiU3RvcmFnZU9yaWdpbkRpcmVjdG9yeSkuIAorCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6dXBkYXRl
UXVvdGFCYXNlZE9uU3BhY2VVc2FnZUZvclRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXNGb3JJ
bmRleGVkREIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRpZENsb3NlKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmFkZFdlYnNpdGVEYXRhU3RvcmUp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YSk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlQW5kUmVzdHJpY3RXZWJz
aXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzOjpyZWdpc3RyYWJsZURvbWFpbnNXaXRoV2Vic2l0ZURhdGEpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzczo6cHJlcGFyZVRvU3VzcGVuZCk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzOjpyZXN1bWUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
czo6cmVzZXRRdW90YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkaWRJbmNy
ZWFzZVF1b3RhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlbmFtZU9yaWdp
bkluV2Vic2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c3RvcmFn
ZVF1b3RhTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpjb25uZWN0
aW9uVG9XZWJQcm9jZXNzQ2xvc2VkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OnN1c3BlbmRJREJTZXJ2ZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2hvdWxk
U3VzcGVuZElEQlNlcnZlcnMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246Omlu
dmFsaWRhdGVBbmRDYW5jZWwpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6YWRk
U3RvcmFnZU1hbmFnZXJTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246
OmVuc3VyZVdlYklEQlNlcnZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtT
ZXNzaW9uOjpjbG9zZUlEQlNlcnZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtTZXNzaW9uOjphZGRJbmRleGVkRGF0YWJhc2VTZXNzaW9uKTogRGVsZXRlZC4KKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrU2Vzc2lvbjo6d2ViSURCU2VydmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Nlc3Npb246Omhhc0lEQkRhdGFiYXNlUGF0aCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OnN0b3JhZ2VQYXRoKToKKyAgICAgICAgKFdl
YktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OmRpc2tVc2FnZSk6CisgICAgICAgIChXZWJLaXQ6
OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpyZXF1ZXN0U3BhY2UpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkNhY2hlU3RvcmFnZTo6Q2FjaGVzOjpyZXF1ZXN0U3BhY2UpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lPUy5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OnNldElzSG9sZGluZ0xvY2tlZEZpbGVzKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6SURCU3RvcmFnZUNv
bm5lY3Rpb25Ub0NsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9u
VG9DbGllbnQ6On5JREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50KToKKyAgICAgICAgKFdlYktp
dDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6Y29ubmVjdGlvblRvQ2xpZW50KToKKyAg
ICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkR2V0UmVzdWx0
KToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkRGVs
ZXRlRGF0YWJhc2UpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xp
ZW50OjpkaWRPcGVuRGF0YWJhc2UpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVj
dGlvblRvQ2xpZW50OjpkaWRTdGFydFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6SURC
U3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkQWJvcnRUcmFuc2FjdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZENvbW1pdFRyYW5zYWN0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlk
Q3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVjdGlv
blRvQ2xpZW50OjpkaWREZWxldGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0
b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZFJlbmFtZU9iamVjdFN0b3JlKToKKyAgICAgICAg
KFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkQ2xlYXJPYmplY3RTdG9y
ZSk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZENy
ZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVu
dDo6ZGlkRGVsZXRlSW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVjdGlv
blRvQ2xpZW50OjpkaWRSZW5hbWVJbmRleCk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VD
b25uZWN0aW9uVG9DbGllbnQ6OmRpZFB1dE9yQWRkKToKKyAgICAgICAgKFdlYktpdDo6SURCU3Rv
cmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkR2V0UmVjb3JkKToKKyAgICAgICAgKFdlYktpdDo6
SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkR2V0QWxsUmVjb3Jkcyk6CisgICAgICAg
IChXZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZEdldENvdW50KToKKyAg
ICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkRGVsZXRlUmVj
b3JkKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlk
T3BlbkN1cnNvcik6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGll
bnQ6OmRpZEl0ZXJhdGVDdXJzb3IpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVj
dGlvblRvQ2xpZW50OjpkaWRHZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMpOgorICAgICAg
ICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpmaXJlVmVyc2lvbkNoYW5n
ZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6
ZGlkQ2xvc2VGcm9tU2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rp
b25Ub0NsaWVudDo6bm90aWZ5T3BlbkRCUmVxdWVzdEJsb2NrZWQpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5oOiBBZGRlZC4K
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VNYW5hZ2VyLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQ6Om1pZ3JhdGVPcmlnaW5EYXRhKToKKyAgICAgICAgKFdl
YktpdDo6SURCU3RvcmFnZU1hbmFnZXI6OmlkYlN0b3JhZ2VPcmlnaW5EaXJlY3RvcnkpOgorICAg
ICAgICAoV2ViS2l0OjpJREJTdG9yYWdlTWFuYWdlcjo6aWRiU3RvcmFnZVNpemUpOgorICAgICAg
ICAoV2ViS2l0OjpnZXRPcmlnaW5zRm9yVmVyc2lvbik6CisgICAgICAgIChXZWJLaXQ6OklEQlN0
b3JhZ2VNYW5hZ2VyOjpvcmlnaW5zT2ZJREJTdG9yYWdlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6
OklEQlN0b3JhZ2VNYW5hZ2VyOjpJREJTdG9yYWdlTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6
OklEQlN0b3JhZ2VNYW5hZ2VyOjppc0FjdGl2ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OklE
QlN0b3JhZ2VNYW5hZ2VyOjpoYXNEYXRhSW5NZW1vcnkgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpJREJTdG9yYWdlTWFuYWdlcjo6Y2xvc2VEYXRhYmFzZXNGb3JEZWxldGlvbik6CisgICAgICAg
IChXZWJLaXQ6OklEQlN0b3JhZ2VNYW5hZ2VyOjpzdG9wRGF0YWJhc2VBY3Rpdml0aWVzRm9yU3Vz
cGVuZCk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VNYW5hZ2VyOjpnZXRPckNyZWF0ZVVu
aXF1ZUlEQkRhdGFiYXNlKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZU1hbmFnZXI6Om9w
ZW5EYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVE
YXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VNYW5hZ2VyOjpnZXRBbGxEYXRh
YmFzZU5hbWVzQW5kVmVyc2lvbnMpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlTWFuYWdl
cjo6b3BlbkRCUmVxdWVzdENhbmNlbGxlZCk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VN
YW5hZ2VyOjpyZWdpc3RlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdl
TWFuYWdlcjo6dW5yZWdpc3RlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9y
YWdlTWFuYWdlcjo6cmVnaXN0ZXJUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OklEQlN0
b3JhZ2VNYW5hZ2VyOjp1bnJlZ2lzdGVyVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpJ
REJTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYktpdDo6
SURCU3RvcmFnZU1hbmFnZXI6OnJlcXVlc3RTcGFjZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3Mvc3RvcmFnZS9JREJTdG9yYWdlTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VSZWdpc3RyeS5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViS2l0OjpJREJTdG9yYWdlUmVnaXN0cnk6OmdldE9yQ3JlYXRlQ29ubmVjdGlvblRvQ2xpZW50
KToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZVJlZ2lzdHJ5OjpyZW1vdmVDb25uZWN0aW9u
VG9DbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlUmVnaXN0cnk6OnJlZ2lzdGVy
Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VSZWdpc3RyeTo6dW5yZWdp
c3RlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlUmVnaXN0cnk6OnJl
Z2lzdGVyVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlUmVnaXN0cnk6
OnVucmVnaXN0ZXJUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VSZWdp
c3RyeTo6Z2V0Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VSZWdpc3Ry
eTo6Z2V0VHJhbnNhY3Rpb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURC
U3RvcmFnZVJlZ2lzdHJ5Lmg6IEFkZGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3Jh
Z2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0
b3JhZ2VNYW5hZ2VyOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1h
bmFnZXI6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtT
dG9yYWdlTWFuYWdlcjo6Y2FuSGFuZGxlVHlwZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
U3RvcmFnZU1hbmFnZXI6OnN0b3BSZWNlaXZpbmdNZXNzYWdlRnJvbUNvbm5lY3Rpb24pOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmxvY2FsT3JpZ2luU3RvcmFnZU1h
bmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmRpZEluY3Jl
YXNlUXVvdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmdldEFs
bE9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Om1vdmVE
YXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpzdXNwZW5kKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpyZWdpc3RlclRlbXBvcmFy
eUJsb2JGaWxlUGF0aHMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6
OnJlcXVlc3RTcGFjZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6
cmVzZXRRdW90YUZvclRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1h
bmFnZXI6OnJlc2V0UXVvdGFVcGRhdGVkQmFzZWRPblVzYWdlRm9yVGVzdGluZyk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6b3BlbkRhdGFiYXNlKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpvcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVEYXRhYmFzZSk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZXN0YWJsaXNoVHJhbnNh
Y3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmRhdGFiYXNl
Q29ubmVjdGlvblBlbmRpbmdDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdl
TWFuYWdlcjo6ZGF0YWJhc2VDb25uZWN0aW9uQ2xvc2VkKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1N0b3JhZ2VNYW5hZ2VyOjphYm9ydE9wZW5BbmRVcGdyYWRlTmVlZGVkKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjphYm9ydFRyYW5zYWN0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjb21taXRUcmFu
c2FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGlkRmlu
aXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVPYmplY3RTdG9yZSk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6cmVuYW1lT2JqZWN0U3RvcmUpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNsZWFyT2JqZWN0U3RvcmUpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZUluZGV4KToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVJbmRleCk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6cmVuYW1lSW5kZXgpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnB1dE9yQWRkKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpnZXRSZWNvcmQpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmdldEFsbFJlY29yZHMpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmdldENvdW50KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVSZWNvcmQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
U3RvcmFnZU1hbmFnZXI6Om9wZW5DdXJzb3IpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6Oml0ZXJhdGVDdXJzb3IpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6OmdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuaDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2Vy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6T3JpZ2luU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VCdWNr
ZXQ6OlN0b3JhZ2VCdWNrZXQpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdl
cjo6U3RvcmFnZUJ1Y2tldDo6dG9XZWJzaXRlRGF0YVR5cGUpOgorICAgICAgICAoV2ViS2l0OjpP
cmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldDo6dG9TdG9yYWdlSWRlbnRpZmllcik6
CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0Ojpp
ZGJTdG9yYWdlTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2Vy
OjpTdG9yYWdlQnVja2V0OjpleGlzdGluZ0lEQlN0b3JhZ2VNYW5hZ2VyKToKKyAgICAgICAgKFdl
YktpdDo6T3JpZ2luU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VCdWNrZXQ6OmlzQWN0aXZlIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6T3JpZ2luU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VCdWNrZXQ6
OmlzRW1wdHkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6
U3RvcmFnZUJ1Y2tldDo6ZGVsZXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3Jh
Z2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0Ojptb3ZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok9y
aWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0OjpmZXRjaERhdGFUeXBlc0luTGlzdEZy
b21NZW1vcnkpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFn
ZUJ1Y2tldDo6ZmV0Y2hEYXRhVHlwZXNJbkxpc3RGcm9tRGlzayk6CisgICAgICAgIChXZWJLaXQ6
Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0OjpkZWxldGVJREJTdG9yYWdlRGF0
YSk6CisgICAgICAgIChXZWJLaXQ6OmNyZWF0ZVF1b3RhTWFuYWdlcik6CisgICAgICAgIChXZWJL
aXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpPcmlnaW5TdG9yYWdlTWFuYWdlcik6CisgICAgICAg
IChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpkZWZhdWx0QnVja2V0KToKKyAgICAgICAg
KFdlYktpdDo6T3JpZ2luU3RvcmFnZU1hbmFnZXI6OnF1b3RhTWFuYWdlcik6CisgICAgICAgIChX
ZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjppZGJTdG9yYWdlTWFuYWdlcik6CisgICAgICAg
IChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpleGlzdGluZ0lEQlN0b3JhZ2VNYW5hZ2Vy
KToKKyAgICAgICAgKFdlYktpdDo6T3JpZ2luU3RvcmFnZU1hbmFnZXI6Om1vdmVEYXRhKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2VyLmg6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9RdW90YU1hbmFnZXIuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6UXVvdGFNYW5hZ2VyOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0
OjpRdW90YU1hbmFnZXI6OlF1b3RhTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OlF1b3RhTWFu
YWdlcjo6cmVxdWVzdFNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6UXVvdGFNYW5hZ2VyOjpoYW5k
bGVSZXF1ZXN0cyk6CisgICAgICAgIChXZWJLaXQ6OlF1b3RhTWFuYWdlcjo6Z3JhbnRXaXRoQ3Vy
cmVudFF1b3RhKToKKyAgICAgICAgKFdlYktpdDo6UXVvdGFNYW5hZ2VyOjpncmFudEZhc3RQYXRo
KToKKyAgICAgICAgKFdlYktpdDo6UXVvdGFNYW5hZ2VyOjpkaWRJbmNyZWFzZVF1b3RhKToKKyAg
ICAgICAgKFdlYktpdDo6UXVvdGFNYW5hZ2VyOjpyZXNldFF1b3RhVXBkYXRlZEJhc2VkT25Vc2Fn
ZUZvclRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpRdW90YU1hbmFnZXI6OnJlc2V0UXVvdGFG
b3JUZXN0aW5nKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1F1b3RhTWFuYWdl
ci5oOiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAg
ICAgKHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQpOgorICAgICAgICAqIFNo
YXJlZC9XZWJzaXRlRGF0YS9RdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIuaDogQWRkZWQu
CisgICAgICAgICogU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmg6CisgICAgICAg
ICogU291cmNlcy50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmluY3Jl
YXNlUXVvdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1l
c3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cGVyVGhpcmRQYXJ0
eU9yaWdpblN0b3JhZ2VRdW90YSBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmUuaDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdFBlck9yaWdpblF1b3RhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbi5oOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIFdlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0
aW9uVG9TZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2
ZXI6OmRlbGV0ZURhdGFiYXNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRv
U2VydmVyOjpvcGVuRGF0YWJhc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9u
VG9TZXJ2ZXI6OmFib3J0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25u
ZWN0aW9uVG9TZXJ2ZXI6OmNvbW1pdFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
SURCQ29ubmVjdGlvblRvU2VydmVyOjpkaWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2VUcmFu
c2FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Y3Jl
YXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2
ZXI6OmRlbGV0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlv
blRvU2VydmVyOjpyZW5hbWVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNv
bm5lY3Rpb25Ub1NlcnZlcjo6Y2xlYXJPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRlbGV0ZUluZGV4KToKKyAgICAgICAgKFdlYktpdDo6
V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpyZW5hbWVJbmRleCk6CisgICAgICAgIChXZWJLaXQ6
OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6cHV0T3JBZGQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmdldFJlY29yZCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Z2V0QWxsUmVjb3Jkcyk6CisgICAgICAgIChXZWJLaXQ6
OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Z2V0Q291bnQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRlbGV0ZVJlY29yZCk6CisgICAgICAgIChXZWJLaXQ6
OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6b3BlbkN1cnNvcik6CisgICAgICAgIChXZWJLaXQ6
OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6aXRlcmF0ZUN1cnNvcik6CisgICAgICAgIChXZWJL
aXQ6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZXN0YWJsaXNoVHJhbnNhY3Rpb24pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRhdGFiYXNlQ29ubmVjdGlv
blBlbmRpbmdDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZl
cjo6ZGF0YWJhc2VDb25uZWN0aW9uQ2xvc2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29u
bmVjdGlvblRvU2VydmVyOjphYm9ydE9wZW5BbmRVcGdyYWRlTmVlZGVkKToKKyAgICAgICAgKFdl
YktpdDo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpkaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50
KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpvcGVuREJSZXF1
ZXN0Q2FuY2VsbGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVy
OjpnZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMpOgorCiAyMDIyLTAyLTAyICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVXNlIHByaXZh
dGUgcmVsYXkgZm9yIGFsbCBzdWJyZXNvdXJjZXMgaWYgdGhlIG1haW4gZG9jdW1lbnQgbWFpbiBy
ZXNvdXJjZSB3YXMgbG9hZGVkIHVzaW5nIHByaXZhdGUgcmVsYXkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cK
aW5kZXggZTZiYTczMjJjMzQ4ZWNkZTQ3OTRlMDk0OTk1YmFiNDg5NmJmNWE0OS4uZjE0NjAyOTE0
MzIzNDRjNTdmZjA2NGE3ZGU1ZDdlOTA2ZDRlZTc0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNCBAQAorMjAyMi0wMi0wMyAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNv
bT4KKworICAgICAgICBNYW5hZ2UgSW5kZXhlZERCIHN0b3JhZ2UgYnkgb3JpZ2luCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ5MjUKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzg3NTU1MDE0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogU3RvcmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwOgorICAg
ICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpxdW90YU1hbmFnZXIpOgorCiAyMDIyLTAyLTAyICBF
bGxpb3R0IFdpbGxpYW1zICA8ZW13QGFwcGxlLmNvbT4KIAogICAgICAgICBbWGNvZGVdIEZpeCBy
ZWR1bmRhbnQgZXhlY3V0aW9uIG9mICJDaGVjayBWVGFibGVzLi4uIiBzY3JpcHQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dURi93dGYvRmlsZVN5
c3RlbS5jcHAKaW5kZXggMzg4M2FjMjY2M2QwYTIwMjMyY2I1ZTA5YjRlNDU5NjhiMDAxNjdiOS4u
NTA0MTAzZWQwZTRjMWUwM2MxMDlmNGY3ZjE5Yzg4ZDg5YTBmZmJiNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3Rl
bS5jcHAKQEAgLTY2MCw2ICs2NjAsMTUgQEAgYm9vbCBjcmVhdGVTeW1ib2xpY0xpbmsoY29uc3Qg
U3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGljTGlua1BhdGgKICAgICBy
ZXR1cm4gIWVjOwogfQogCitTdHJpbmcgZ2V0U3ltYm9saWNMaW5rVGFyZ2V0KGNvbnN0IFN0cmlu
ZyYgc3ltYm9saWNMaW5rUGF0aCkKK3sKKyAgICBhdXRvIGZpbGVTeXN0ZW1QYXRoID0gdG9TdGRG
aWxlU3lzdGVtUGF0aChzeW1ib2xpY0xpbmtQYXRoKTsKKyAgICBpZiAoIXN0ZDo6ZmlsZXN5c3Rl
bTo6aXNfc3ltbGluayhmaWxlU3lzdGVtUGF0aCkpCisgICAgICAgIHJldHVybiBzeW1ib2xpY0xp
bmtQYXRoOworCisgICAgcmV0dXJuIGZyb21TdGRGaWxlU3lzdGVtUGF0aChzdGQ6OmZpbGVzeXN0
ZW06OnJlYWRfc3ltbGluayhmaWxlU3lzdGVtUGF0aCkpOworfQorCiBib29sIGhhcmRMaW5rKGNv
bnN0IFN0cmluZyYgdGFyZ2V0UGF0aCwgY29uc3QgU3RyaW5nJiBsaW5rUGF0aCkKIHsKICAgICBz
dGQ6OmVycm9yX2NvZGUgZWM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVt
LmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKaW5kZXggY2U2ODEyODYwYTAwZjkwMmYy
OTk4M2Y0OGNiMWNhMWVkMThiOTA5Ny4uOWQ4ZTQ5YjUxOGM0ZTBkNGYzMjZmNGM0YTFjZDc3N2Uz
YjI4OGZlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaApAQCAtMTI3LDYgKzEyNyw3IEBAIFdURl9FWFBPUlRf
UFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB2b2x1bWVGcmVlU3BhY2UoY29uc3QgU3Ry
aW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gdm9sdW1l
RmlsZUJsb2NrU2l6ZShjb25zdCBTdHJpbmcmKTsKIFdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9w
dGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJik7CiBXVEZfRVhQ
T1JUX1BSSVZBVEUgYm9vbCBjcmVhdGVTeW1ib2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQ
YXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGljTGlua1BhdGgpOworV1RGX0VYUE9SVF9QUklWQVRF
IFN0cmluZyBnZXRTeW1ib2xpY0xpbmtUYXJnZXQoY29uc3QgU3RyaW5nJiBzeW1ib2xpY0xpbmtQ
YXRoKTsKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgY3JlYXRlVGVtcG9yYXJ5WmlwQXJjaGl2
ZShjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSk7CiAKIGVudW0gY2xhc3MgRmlsZVR5cGUgeyBSZWd1
bGFyLCBEaXJlY3RvcnksIFN5bWJvbGljTGluayB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggOGFm
Mjg1M2VjM2Q5NjIxN2M5YTE2NmI3OWQ0NzRhMGViOGZhNjkzZC4uNzA2NjkxYjgyZGYxNGJiMWEx
Yzg0MWNlNjkwNmVhODhkZTc4ZTQ3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVy
cy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0yMjcsNiArMjI3
LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIE1vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9TZXJ2ZXJPcGVuREJSZXF1ZXN0LmgKICAgICBNb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaAogICAgIE1vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uaAorICAgIE1vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuaAogICAgIE1vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmgKIAogICAgIE1vZHVsZXMvaW5k
ZXhlZGRiL3NoYXJlZC9JbmRleEtleS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oCmluZGV4IDZjMGIxYjRmMmFi
MGMwMzMwNzY2NTRlYTRiMjc2NTU5NDQ1ODk1MzYuLjdmMDliZmIzMmQ1MWU5N2ZhN2VkNGU0NWQ1
MTEzMzhlNWI4MTE3ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oCkBAIC04Miw3ICs4Miw3IEBAIHB1Ymxp
YzoKICAgICBib29sIGlzVHJhbnNpZW50KCkgY29uc3QgeyByZXR1cm4gbV9pc1RyYW5zaWVudDsg
fQogCiAgICAgU3RyaW5nIGRhdGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVUb1Jvb3QoY29uc3QgU3Ry
aW5nJiByb290RGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIHZlcnNpb25TdHJpbmc9InYxIikgY29u
c3Q7Ci0gICAgc3RhdGljIFN0cmluZyBkYXRhYmFzZURpcmVjdG9yeVJlbGF0aXZlVG9Sb290KGNv
bnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgdG9wTGV2ZWxPcmlnaW4sIGNvbnN0IFNlY3VyaXR5T3Jp
Z2luRGF0YSYgb3BlbmluZ09yaWdpbiwgY29uc3QgU3RyaW5nJiByb290RGlyZWN0b3J5LCBjb25z
dCBTdHJpbmcmIHZlcnNpb25TdHJpbmcpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJp
bmcgZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9vdChjb25zdCBTZWN1cml0eU9yaWdpbkRh
dGEmIHRvcExldmVsT3JpZ2luLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9wZW5pbmdPcmln
aW4sIGNvbnN0IFN0cmluZyYgcm9vdERpcmVjdG9yeSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uU3Ry
aW5nKTsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXIm
KSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25h
bDxJREJEYXRhYmFzZUlkZW50aWZpZXI+IGRlY29kZShEZWNvZGVyJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQ29ubmVjdGlvblRvQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQ29ubmVj
dGlvblRvQ2xpZW50LmgKaW5kZXggMjdmNzI2OTE5ZjE0MjFmMjFhNWYwM2ZmZGZjMTc2ZDRjNGJk
ZjNjMi4uZjA1YWMyZjhjODJhODA5YzI3MWM5ZGY1OTdmOTY0NzMxOWVmNjQ2MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkNvbm5lY3Rpb25U
b0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9J
REJDb25uZWN0aW9uVG9DbGllbnQuaApAQCAtNzQsMTEgKzc0LDExIEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgbm90aWZ5T3BlbkRCUmVxdWVzdEJsb2NrZWQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlm
aWVyJiByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3Qgb2xkVmVyc2lvbiwgdWludDY0X3QgbmV3
VmVyc2lvbik7CiAKLSAgICB2b2lkIGRpZEdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhj
b25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImLCBWZWN0b3I8SURCRGF0YWJhc2VOYW1lQW5kVmVy
c2lvbj4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRHZXRBbGxEYXRhYmFzZU5hbWVz
QW5kVmVyc2lvbnMoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiwgVmVjdG9yPElEQkRhdGFi
YXNlTmFtZUFuZFZlcnNpb24+JiYpOwogCiAgICAgdm9pZCByZWdpc3RlckRhdGFiYXNlQ29ubmVj
dGlvbihVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mKTsKICAgICB2b2lkIHVucmVnaXN0ZXJE
YXRhYmFzZUNvbm5lY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJik7Ci0gICAgdm9p
ZCBjb25uZWN0aW9uVG9DbGllbnRDbG9zZWQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNv
bm5lY3Rpb25Ub0NsaWVudENsb3NlZCgpOwogICAgIGJvb2wgaXNDbG9zZWQoKSB7IHJldHVybiBt
X2lzQ2xvc2VkOyB9CiAgICAgdm9pZCBjbGVhckRlbGVnYXRlKCkgeyBtX2RlbGVnYXRlID0gbnVs
bHB0cjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvSURCU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9JREJTZXJ2ZXIuY3BwCmluZGV4IGQyNjY5MzE4MDg0NmFmNjY2ODllMTdhZWEzZmY5OTcx
OTU1YWUzNmUuLjRiYWQ0NDJiMWIzYTlhNDE3ODU5MDQyZjgxNjU3N2UwN2IxM2JhOGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2
ZXIuY3BwCkBAIC0xMDEsMTMgKzEwMSwxMyBAQCB2b2lkIElEQlNlcnZlcjo6dW5yZWdpc3RlclRy
YW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQogICAg
IG1fdHJhbnNhY3Rpb25zLnJlbW92ZSh0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpKTsK
IH0KIAotdm9pZCBJREJTZXJ2ZXI6OnJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0aW9uKFVuaXF1ZUlE
QkRhdGFiYXNlQ29ubmVjdGlvbiYgY29ubmVjdGlvbikKK3ZvaWQgSURCU2VydmVyOjpyZWdpc3Rl
ckNvbm5lY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogewog
ICAgIEFTU0VSVCghbV9kYXRhYmFzZUNvbm5lY3Rpb25zLmNvbnRhaW5zKGNvbm5lY3Rpb24uaWRl
bnRpZmllcigpKSk7CiAgICAgbV9kYXRhYmFzZUNvbm5lY3Rpb25zLnNldChjb25uZWN0aW9uLmlk
ZW50aWZpZXIoKSwgJmNvbm5lY3Rpb24pOwogfQogCi12b2lkIElEQlNlcnZlcjo6dW5yZWdpc3Rl
ckRhdGFiYXNlQ29ubmVjdGlvbihVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24pCit2b2lkIElEQlNlcnZlcjo6dW5yZWdpc3RlckNvbm5lY3Rpb24oVW5pcXVlSURCRGF0YWJh
c2VDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogewogICAgIEFTU0VSVChtX2RhdGFiYXNlQ29ubmVj
dGlvbnMuY29udGFpbnMoY29ubmVjdGlvbi5pZGVudGlmaWVyKCkpKTsKICAgICBtX2RhdGFiYXNl
Q29ubmVjdGlvbnMucmVtb3ZlKGNvbm5lY3Rpb24uaWRlbnRpZmllcigpKTsKQEAgLTEyOCwxMyAr
MTI4LDEzIEBAIHN0ZDo6dW5pcXVlX3B0cjxJREJCYWNraW5nU3RvcmU+IElEQlNlcnZlcjo6Y3Jl
YXRlQmFja2luZ1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlCiB7CiAgICAgQVNTRVJUKCFpc01haW5U
aHJlYWQoKSk7CiAgICAgaWYgKG1fZGF0YWJhc2VEaXJlY3RvcnlQYXRoLmlzRW1wdHkoKSkKLSAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TWVtb3J5SURCQmFja2luZ1N0b3JlPihtX3Nlc3Npb25J
RCwgaWRlbnRpZmllcik7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPE1lbW9yeUlEQkJhY2tp
bmdTdG9yZT4oaWRlbnRpZmllcik7CiAKICAgICBBU1NFUlQoIW1fc2Vzc2lvbklELmlzRXBoZW1l
cmFsKCkpOwogICAgIGlmIChpZGVudGlmaWVyLmlzVHJhbnNpZW50KCkpCi0gICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPE1lbW9yeUlEQkJhY2tpbmdTdG9yZT4obV9zZXNzaW9uSUQsIGlkZW50aWZp
ZXIpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxNZW1vcnlJREJCYWNraW5nU3RvcmU+KGlk
ZW50aWZpZXIpOwogCi0gICAgcmV0dXJuIG1ha2VVbmlxdWU8U1FMaXRlSURCQmFja2luZ1N0b3Jl
PihtX3Nlc3Npb25JRCwgaWRlbnRpZmllciwgbV9kYXRhYmFzZURpcmVjdG9yeVBhdGgpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPFNRTGl0ZUlEQkJhY2tpbmdTdG9yZT4oaWRlbnRpZmllciwgdXBn
cmFkZWREYXRhYmFzZURpcmVjdG9yeShpZGVudGlmaWVyKSk7CiB9CiAKIHZvaWQgSURCU2VydmVy
OjpvcGVuRGF0YWJhc2UoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhKQpAQCAtMTc3
LDE3ICsxNzcsNiBAQCB2b2lkIElEQlNlcnZlcjo6ZGVsZXRlRGF0YWJhc2UoY29uc3QgSURCUmVx
dWVzdERhdGEmIHJlcXVlc3REYXRhKQogICAgICAgICBtX3VuaXF1ZUlEQkRhdGFiYXNlTWFwLnJl
bW92ZShkYXRhYmFzZS0+aWRlbnRpZmllcigpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPFVuaXF1
ZUlEQkRhdGFiYXNlPiBJREJTZXJ2ZXI6OmNsb3NlQW5kVGFrZVVuaXF1ZUlEQkRhdGFiYXNlKFVu
aXF1ZUlEQkRhdGFiYXNlJiBkYXRhYmFzZSkKLXsKLSAgICBMT0coSW5kZXhlZERCLCAiSURCU2Vy
dmVyOjpjbG9zZVVuaXF1ZUlEQkRhdGFiYXNlIik7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKLQotICAgIGF1dG8gdW5pcXVlUG9pbnRlciA9IG1fdW5pcXVlSURCRGF0YWJhc2VNYXAudGFr
ZShkYXRhYmFzZS5pZGVudGlmaWVyKCkpOwotICAgIEFTU0VSVCh1bmlxdWVQb2ludGVyKTsKLQot
ICAgIHJldHVybiB1bmlxdWVQb2ludGVyOwotfQotCiB2b2lkIElEQlNlcnZlcjo6YWJvcnRUcmFu
c2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmll
cikKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCU2VydmVyOjphYm9ydFRyYW5zYWN0aW9uIik7
CkBAIC03NTAsNyArNzM5LDcgQEAgdm9pZCBJREJTZXJ2ZXI6OnJlbmFtZU9yaWdpbihjb25zdCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIG9sZE9yaWdpbiwgY29uc3QKICAgICAgICAgRmls
ZVN5c3RlbTo6bW92ZUZpbGUob2xkT3JpZ2luUGF0aCwgbmV3T3JpZ2luUGF0aCk7CiB9CiAKLVN0
b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uIElEQlNlcnZlcjo6cmVxdWVzdFNwYWNlKGNvbnN0
IENsaWVudE9yaWdpbiYgb3JpZ2luLCB1aW50NjRfdCB0YXNrU2l6ZSkgV1RGX0lHTk9SRVNfVEhS
RUFEX1NBRkVUWV9BTkFMWVNJUwordm9pZCBJREJTZXJ2ZXI6OnJlcXVlc3RTcGFjZShjb25zdCBD
bGllbnRPcmlnaW4mIG9yaWdpbiwgdWludDY0X3QgdGFza1NpemUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIFdURl9JR05PUkVTX1RIUkVBRF9TQUZF
VFlfQU5BTFlTSVMKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQo
bV9sb2NrLmlzSGVsZCgpKTsKQEAgLTc2Miw3ICs3NTEsNyBAQCBTdG9yYWdlUXVvdGFNYW5hZ2Vy
OjpEZWNpc2lvbiBJREJTZXJ2ZXI6OnJlcXVlc3RTcGFjZShjb25zdCBDbGllbnRPcmlnaW4mIG9y
aWdpbgogICAgIHJlc3VsdCA9IG1fc3BhY2VSZXF1ZXN0ZXIob3JpZ2luLCB0YXNrU2l6ZSk7CiAg
ICAgbV9sb2NrLmxvY2soKTsKIAotICAgIHJldHVybiByZXN1bHQ7CisgICAgY29tcGxldGlvbkhh
bmRsZXIocmVzdWx0ID09IFN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uOjpHcmFudCk7CiB9
CiAKIHVpbnQ2NF90IElEQlNlcnZlcjo6ZGlza1VzYWdlKGNvbnN0IFN0cmluZyYgcm9vdERpcmVj
dG9yeSwgY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4pCkBAIC03ODQsNiArNzczLDIzIEBAIHZv
aWQgSURCU2VydmVyOjp1cGdyYWRlRmlsZXNJZk5lY2Vzc2FyeSgpCiAgICAgICAgIEZpbGVTeXN0
ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhuZXdWZXJzaW9uRGlyZWN0b3J5KTsKIH0KIAorU3RyaW5n
IElEQlNlcnZlcjo6dXBncmFkZWREYXRhYmFzZURpcmVjdG9yeShjb25zdCBXZWJDb3JlOjpJREJE
YXRhYmFzZUlkZW50aWZpZXImIGlkZW50aWZpZXIpCit7CisgICAgU3RyaW5nIG9sZE9yaWdpbkRp
cmVjdG9yeSA9IGlkZW50aWZpZXIuZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9vdChtX2Rh
dGFiYXNlRGlyZWN0b3J5UGF0aCwgInYwIik7CisgICAgU3RyaW5nIG9sZERhdGFiYXNlRGlyZWN0
b3J5ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG9sZE9yaWdpbkRpcmVj
dG9yeSwgU1FMaXRlSURCQmFja2luZ1N0b3JlOjplbmNvZGVEYXRhYmFzZU5hbWUoaWRlbnRpZmll
ci5kYXRhYmFzZU5hbWUoKSkpOworICAgIFN0cmluZyBuZXdPcmlnaW5EaXJlY3RvcnkgPSBpZGVu
dGlmaWVyLmRhdGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVUb1Jvb3QobV9kYXRhYmFzZURpcmVjdG9y
eVBhdGgsICJ2MSIpOworICAgIFN0cmluZyBmaWxlTmFtZUhhc2ggPSBTUUxpdGVGaWxlU3lzdGVt
Ojpjb21wdXRlSGFzaEZvckZpbGVOYW1lKGlkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCkpOworICAg
IFN0cmluZyBuZXdEYXRhYmFzZURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChuZXdPcmlnaW5EaXJlY3RvcnksIGZpbGVOYW1lSGFzaCk7CisgICAgRmlsZVN5
c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKG5ld0RhdGFiYXNlRGlyZWN0b3J5KTsKKworICAgIGlm
IChGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG9sZERhdGFiYXNlRGlyZWN0b3J5KSkgeworICAgICAg
ICBGaWxlU3lzdGVtOjptb3ZlRmlsZShvbGREYXRhYmFzZURpcmVjdG9yeSwgbmV3RGF0YWJhc2VE
aXJlY3RvcnkpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeShvbGRP
cmlnaW5EaXJlY3RvcnkpOworICAgIH0KKworICAgIHJldHVybiBuZXdEYXRhYmFzZURpcmVjdG9y
eTsKK30KKwogYm9vbCBJREJTZXJ2ZXI6Omhhc0RhdGFiYXNlQWN0aXZpdGllc09uTWFpblRocmVh
ZCgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaAppbmRleCBkODgz
NjQ5YTVjOGQ1YjU5ZjAyYzJiZGFjZGRlNjc4YTFjYTNjNDJmLi5iNDMxM2Q5YTEwNjA4YjdkMzQy
ZjZiMDg3NWJjNzY0NjJmN2MwMTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVk
ZSAiU3RvcmFnZVF1b3RhTWFuYWdlci5oIgogI2luY2x1ZGUgIlVuaXF1ZUlEQkRhdGFiYXNlLmgi
CiAjaW5jbHVkZSAiVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiVW5p
cXVlSURCRGF0YWJhc2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSA8cGFsL0h5c3RlcmVzaXNBY3Rpdml0
eS5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJl
YWRUYXNrSGFuZGxlci5oPgpAQCAtNDgsOCArNDksNyBAQCBzdHJ1Y3QgSURCR2V0UmVjb3JkRGF0
YTsKIAogbmFtZXNwYWNlIElEQlNlcnZlciB7CiAKLWNsYXNzIElEQlNlcnZlciB7Ci0gICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CitjbGFzcyBJREJTZXJ2ZXIgOiBwdWJsaWMgVW5pcXVlSURC
RGF0YWJhc2VNYW5hZ2VyIHsKIHB1YmxpYzoKICAgICB1c2luZyBTdG9yYWdlUXVvdGFNYW5hZ2Vy
U3BhY2VSZXF1ZXN0ZXIgPSBGdW5jdGlvbjxTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbihj
b25zdCBDbGllbnRPcmlnaW4mLCB1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCk+OwogICAgIFdFQkNP
UkVfRVhQT1JUIElEQlNlcnZlcihQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBkYXRhYmFz
ZURpcmVjdG9yeVBhdGgsIFN0b3JhZ2VRdW90YU1hbmFnZXJTcGFjZVJlcXVlc3RlciYmLCBMb2Nr
Jik7CkBAIC04OCwxNSArODgsMTEgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBnZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMoSURCQ29ubmVjdGlvbklkZW50aWZpZXIs
IGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYsIGNvbnN0IENsaWVudE9yaWdpbiYpOwogCi0K
LSAgICB2b2lkIHJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlQ29u
bmVjdGlvbiYpOwotICAgIHZvaWQgdW5yZWdpc3RlckRhdGFiYXNlQ29ubmVjdGlvbihVbmlxdWVJ
REJEYXRhYmFzZUNvbm5lY3Rpb24mKTsKLSAgICB2b2lkIHJlZ2lzdGVyVHJhbnNhY3Rpb24oVW5p
cXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYpOwotICAgIHZvaWQgdW5yZWdpc3RlclRyYW5zYWN0
aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mKTsKLQotICAgIHN0ZDo6dW5pcXVlX3B0
cjxVbmlxdWVJREJEYXRhYmFzZT4gY2xvc2VBbmRUYWtlVW5pcXVlSURCRGF0YWJhc2UoVW5pcXVl
SURCRGF0YWJhc2UmKTsKLQotICAgIHN0ZDo6dW5pcXVlX3B0cjxJREJCYWNraW5nU3RvcmU+IGNy
ZWF0ZUJhY2tpbmdTdG9yZShjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImKTsKKyAgICB2b2lk
IHJlZ2lzdGVyQ29ubmVjdGlvbihVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mKSBmaW5hbDsK
KyAgICB2b2lkIHVucmVnaXN0ZXJDb25uZWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlv
biYpIGZpbmFsOworICAgIHZvaWQgcmVnaXN0ZXJUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFz
ZVRyYW5zYWN0aW9uJikgZmluYWw7CisgICAgdm9pZCB1bnJlZ2lzdGVyVHJhbnNhY3Rpb24oVW5p
cXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYpIGZpbmFsOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJ
REJCYWNraW5nU3RvcmU+IGNyZWF0ZUJhY2tpbmdTdG9yZShjb25zdCBJREJEYXRhYmFzZUlkZW50
aWZpZXImKSBmaW5hbDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIEhhc2hTZXQ8U2VjdXJpdHlPcmln
aW5EYXRhPiBnZXRPcmlnaW5zKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbG9z
ZUFuZERlbGV0ZURhdGFiYXNlc01vZGlmaWVkU2luY2UoV2FsbFRpbWUpOwpAQCAtMTA0LDcgKzEw
MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsb3NlRGF0YWJhc2VzRm9yT3JpZ2lucyhjb25zdCBW
ZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiYsIEZ1bmN0aW9uPGJvb2woY29uc3QgU2VjdXJpdHlP
cmlnaW5EYXRhJiwgY29uc3QgQ2xpZW50T3JpZ2luJik+JiYpOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgcmVuYW1lT3JpZ2luKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIGNv
bnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYpOwogCi0gICAgU3RvcmFnZVF1b3RhTWFu
YWdlcjo6RGVjaXNpb24gcmVxdWVzdFNwYWNlKGNvbnN0IENsaWVudE9yaWdpbiYsIHVpbnQ2NF90
IHRhc2tTaXplKTsKKyAgICB2b2lkIHJlcXVlc3RTcGFjZShjb25zdCBDbGllbnRPcmlnaW4mLCB1
aW50NjRfdCBzaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKICAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdWludDY0X3QgZGlza1VzYWdlKGNvbnN0IFN0cmluZyYg
cm9vdERpcmVjdG9yeSwgY29uc3QgQ2xpZW50T3JpZ2luJik7CiAKICAgICBXRUJDT1JFX0VYUE9S
VCBib29sIGhhc0RhdGFiYXNlQWN0aXZpdGllc09uTWFpblRocmVhZCgpIGNvbnN0OwpAQCAtMTE0
LDYgKzExMCw3IEBAIHByaXZhdGU6CiAgICAgVW5pcXVlSURCRGF0YWJhc2UmIGdldE9yQ3JlYXRl
VW5pcXVlSURCRGF0YWJhc2UoY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJik7CiAKICAgICB2
b2lkIHVwZ3JhZGVGaWxlc0lmTmVjZXNzYXJ5KCk7CisgICAgU3RyaW5nIHVwZ3JhZGVkRGF0YWJh
c2VEaXJlY3RvcnkoY29uc3QgV2ViQ29yZTo6SURCRGF0YWJhc2VJZGVudGlmaWVyJik7CiAgICAg
dm9pZCByZW1vdmVEYXRhYmFzZXNNb2RpZmllZFNpbmNlRm9yVmVyc2lvbihXYWxsVGltZSwgY29u
c3QgU3RyaW5nJik7CiAgICAgdm9pZCByZW1vdmVEYXRhYmFzZXNXaXRoT3JpZ2luc0ZvclZlcnNp
b24oY29uc3QgVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4mLCBjb25zdCBTdHJpbmcmKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9y
eUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcAppbmRleCA3ZWU0MTQwYThhZjE4MDExYzk2
YmNhN2I2MDhkODY1OTE4YWY4NWVhLi5kNjMzNTAzMDk5MzA1NWI5YjEyYjc4NDU2NTVkYTgzMzcy
YjFhNTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcApAQCAtNDQsOSArNDQs
OCBAQCBuYW1lc3BhY2UgSURCU2VydmVyIHsKIC8vIFRoZSBJbmRleGVkREIgc3BlYyBzdGF0ZXMg
dGhlIG1heGltdW0gdmFsdWUgeW91IGNhbiBnZXQgZnJvbSB0aGUga2V5IGdlbmVyYXRvciBpcyAy
XjUzLgogY29uc3RleHByIHVpbnQ2NF90IG1heEdlbmVyYXRlZEtleVZhbHVlID0gMHgyMDAwMDAw
MDAwMDAwMDsKIAotTWVtb3J5SURCQmFja2luZ1N0b3JlOjpNZW1vcnlJREJCYWNraW5nU3RvcmUo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImIGlk
ZW50aWZpZXIpCitNZW1vcnlJREJCYWNraW5nU3RvcmU6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZShj
b25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImIGlkZW50aWZpZXIpCiAgICAgOiBtX2lkZW50aWZp
ZXIoaWRlbnRpZmllcikKLSAgICAsIG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKIHsKIH0KIApAQCAt
MTM0LDcgKzEzMyw3IEBAIElEQkVycm9yIE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2Jq
ZWN0U3RvcmUoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0CiAgICAgICAgIHJldHVybiBJ
REJFcnJvciB7IENvbnN0cmFpbnRFcnJvciB9OwogCiAgICAgQVNTRVJUKCFtX29iamVjdFN0b3Jl
c0J5SWRlbnRpZmllci5jb250YWlucyhpbmZvLmlkZW50aWZpZXIoKSkpOwotICAgIGF1dG8gb2Jq
ZWN0U3RvcmUgPSBNZW1vcnlPYmplY3RTdG9yZTo6Y3JlYXRlKG1fc2Vzc2lvbklELCBpbmZvKTsK
KyAgICBhdXRvIG9iamVjdFN0b3JlID0gTWVtb3J5T2JqZWN0U3RvcmU6OmNyZWF0ZShpbmZvKTsK
IAogICAgIG1fZGF0YWJhc2VJbmZvLT5hZGRFeGlzdGluZ09iamVjdFN0b3JlKGluZm8pOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5
SURCQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmgKaW5kZXggOTJhYTc2MGQyMDczMzcxOGZiZGI4YzA0
NGNmZTY3ZGNhYjE2NTMzNS4uOWM4MjExYjU5MDY1N2FmNjgwNTEyNDIyOWIxMDI5MTFjMmMwMGVl
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01l
bW9yeUlEQkJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuaApAQCAtMzAsNyArMzAsNiBAQAogI2lu
Y2x1ZGUgIklEQlJlc291cmNlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkluZGV4S2V5LmgiCiAj
aW5jbHVkZSAiTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uaCIKLSNpbmNsdWRlIDxwYWwv
U2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtNDEsOCArNDAsOCBAQCBjbGFzcyBNZW1vcnlPYmplY3RTdG9yZTsKIGNsYXNzIE1l
bW9yeUlEQkJhY2tpbmdTdG9yZSBmaW5hbCA6IHB1YmxpYyBJREJCYWNraW5nU3RvcmUgewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIE1lbW9yeUlEQkJhY2tpbmdT
dG9yZShQQUw6OlNlc3Npb25JRCwgY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJik7Ci0gICAg
fk1lbW9yeUlEQkJhY2tpbmdTdG9yZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIE1lbW9yeUlEQkJh
Y2tpbmdTdG9yZShjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB+TWVtb3J5SURCQmFja2luZ1N0b3JlKCk7CiAKICAgICBJREJFcnJvciBnZXRPckVzdGFi
bGlzaERhdGFiYXNlSW5mbyhJREJEYXRhYmFzZUluZm8mKSBmaW5hbDsKICAgICB1aW50NjRfdCBk
YXRhYmFzZVZlcnNpb24oKSBmaW5hbDsKQEAgLTkyLDcgKzkxLDYgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHVucmVnaXN0ZXJPYmplY3RTdG9yZShNZW1vcnlPYmplY3RTdG9yZSYpOwogCiAgICAgSURC
RGF0YWJhc2VJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKLSAgICBQQUw6OlNlc3Npb25JRCBtX3Nl
c3Npb25JRDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SURCRGF0YWJhc2VJbmZvPiBtX2RhdGFiYXNl
SW5mbzsKIAogICAgIEhhc2hNYXA8SURCUmVzb3VyY2VJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9w
dHI8TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24+PiBtX3RyYW5zYWN0aW9uczsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmpl
Y3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVt
b3J5T2JqZWN0U3RvcmUuY3BwCmluZGV4IDVhNTNlMjMxNTI2ODRkZTM4MGRhYTFlNTk3M2ZiMTkz
ZGYwMTI2NzcuLmRmYWI2MTMzNTdlMzVjNWU3ZWZmY2U4NTk2MjQ3OTcwZTI2ZTA1NDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmpl
Y3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L01lbW9yeU9iamVjdFN0b3JlLmNwcApAQCAtMzgsMTggKzM4LDE3IEBACiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSlNDSlNWYWx1ZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0pT
VmFsdWVJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNMb2NrLmg+Ci0jaW5j
bHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1l
c3BhY2UgSlNDOwogbmFtZXNwYWNlIElEQlNlcnZlciB7CiAKLVJlZjxNZW1vcnlPYmplY3RTdG9y
ZT4gTWVtb3J5T2JqZWN0U3RvcmU6OmNyZWF0ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNv
bnN0IElEQk9iamVjdFN0b3JlSW5mbyYgaW5mbykKK1JlZjxNZW1vcnlPYmplY3RTdG9yZT4gTWVt
b3J5T2JqZWN0U3RvcmU6OmNyZWF0ZShjb25zdCBJREJPYmplY3RTdG9yZUluZm8mIGluZm8pCiB7
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVtb3J5T2JqZWN0U3RvcmUoc2Vzc2lvbklELCBp
bmZvKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVtb3J5T2JqZWN0U3RvcmUoaW5mbykp
OwogfQogCi1NZW1vcnlPYmplY3RTdG9yZTo6TWVtb3J5T2JqZWN0U3RvcmUoUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYgaW5mbykKK01lbW9yeU9iamVjdFN0b3JlOjpN
ZW1vcnlPYmplY3RTdG9yZShjb25zdCBJREJPYmplY3RTdG9yZUluZm8mIGluZm8pCiAgICAgOiBt
X2luZm8oaW5mbykKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmgKaW5kZXggODcxZGViNWU0YWUw
NTE0ODJiOTA4OTY4OTVlYTMxYzI3NmRkMzA4Ni4uZjAzYTNhMWIwYWQ1MzRiOWYzMzljNGZiZDdl
NzQwYWRmMjI4NDcwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmgKQEAgLTM0LDEwICszNCw2IEBA
CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgog
Ci1uYW1lc3BhY2UgUEFMIHsKLWNsYXNzIFNlc3Npb25JRDsKLX0KLQogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBJREJDdXJzb3JJbmZvOwpAQCAtNjEsNyArNTcsNyBAQCB0eXBlZGVmIEhh
c2hNYXA8SURCS2V5RGF0YSwgVGhyZWFkU2FmZURhdGFCdWZmZXIsIElEQktleURhdGFIYXNoLCBJ
REJLZXlEYXRhSGFzaAogCiBjbGFzcyBNZW1vcnlPYmplY3RTdG9yZSA6IHB1YmxpYyBSZWZDb3Vu
dGVkPE1lbW9yeU9iamVjdFN0b3JlPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxNZW1vcnlP
YmplY3RTdG9yZT4gY3JlYXRlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBJREJPYmplY3RTdG9yZUlu
Zm8mKTsKKyAgICBzdGF0aWMgUmVmPE1lbW9yeU9iamVjdFN0b3JlPiBjcmVhdGUoY29uc3QgSURC
T2JqZWN0U3RvcmVJbmZvJik7CiAKICAgICB+TWVtb3J5T2JqZWN0U3RvcmUoKTsKIApAQCAtMTA4
LDcgKzEwNCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbmFtZUluZGV4KE1lbW9yeUluZGV4Jiwg
Y29uc3QgU3RyaW5nJiBuZXdOYW1lKTsKIAogcHJpdmF0ZToKLSAgICBNZW1vcnlPYmplY3RTdG9y
ZShQQUw6OlNlc3Npb25JRCwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJik7CisgICAgTWVtb3J5
T2JqZWN0U3RvcmUoY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJik7CiAKICAgICBJREJLZXlEYXRh
U2V0OjppdGVyYXRvciBsb3dlc3RJdGVyYXRvckluUmFuZ2UoY29uc3QgSURCS2V5UmFuZ2VEYXRh
JiwgYm9vbCByZXZlcnNlKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNw
cAppbmRleCAyN2NkOGVlYzUzZTFhY2ZjNTk4NWVjN2I4ZjA1ZTIyNzY0NWM4NzdlLi5hOTllNzVi
OGRiMzNhYTA5ZGI3OGJlYTdiYTQ0MGJiYzg5ZGNiNzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFj
a2luZ1N0b3JlLmNwcApAQCAtMjM2LDEyICsyMzYsMTAgQEAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBp
bmRleEluZm9UYWJsZVNjaGVtYVRlbXAoKQogICAgIHJldHVybiBUQUJMRV9TQ0hFTUFfUFJFRklY
ICJfVGVtcF9JbmRleEluZm8iIElOREVYX0lORk9fVEFCTEVfU0NIRU1BX1NVRkZJWDsKIH0KIAot
U1FMaXRlSURCQmFja2luZ1N0b3JlOjpTUUxpdGVJREJCYWNraW5nU3RvcmUoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImIGlkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgZGF0YWJhc2VSb290RGlyZWN0b3J5KQotICAgIDogbV9zZXNzaW9uSUQoc2Vz
c2lvbklEKQotICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCi0gICAgLCBtX2RhdGFiYXNl
Um9vdERpcmVjdG9yeShkYXRhYmFzZVJvb3REaXJlY3RvcnkpCitTUUxpdGVJREJCYWNraW5nU3Rv
cmU6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZShjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImIGlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXJlY3RvcnkpCisgICAgOiBtX2lkZW50
aWZpZXIoaWRlbnRpZmllcikKKyAgICAsIG1fZGF0YWJhc2VEaXJlY3RvcnkoZGF0YWJhc2VEaXJl
Y3RvcnkpCiB7Ci0gICAgbV9kYXRhYmFzZURpcmVjdG9yeSA9IGZ1bGxEYXRhYmFzZURpcmVjdG9y
eVdpdGhVcGdyYWRlKCk7CiB9CiAKIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6flNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZSgpCkBAIC05MTIsMTkgKzkxMCwyOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8SURCRGF0
YWJhc2VJbmZvPiBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmV4dHJhY3RFeGlzdGluZ0RhdGFiYXNl
SQogICAgIHJldHVybiBkYXRhYmFzZUluZm87CiB9CiAKLVN0cmluZyBTUUxpdGVJREJCYWNraW5n
U3RvcmU6OmZpbGVuYW1lRm9yRGF0YWJhc2VOYW1lKCkgY29uc3QKK1N0cmluZyBTUUxpdGVJREJC
YWNraW5nU3RvcmU6OmVuY29kZURhdGFiYXNlTmFtZShjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFt
ZSkKIHsKLSAgICBBU1NFUlQoIW1faWRlbnRpZmllci5kYXRhYmFzZU5hbWUoKS5pc051bGwoKSk7
Ci0KLSAgICBpZiAobV9pZGVudGlmaWVyLmRhdGFiYXNlTmFtZSgpLmlzRW1wdHkoKSkKKyAgICBB
U1NFUlQoIWRhdGFiYXNlTmFtZS5pc051bGwoKSk7CisgICAgaWYgKGRhdGFiYXNlTmFtZS5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybiAiJTAwIjsKIAotICAgIFN0cmluZyBmaWxlbmFtZSA9IEZp
bGVTeXN0ZW06OmVuY29kZUZvckZpbGVOYW1lKG1faWRlbnRpZmllci5kYXRhYmFzZU5hbWUoKSk7
CisgICAgU3RyaW5nIGZpbGVuYW1lID0gRmlsZVN5c3RlbTo6ZW5jb2RlRm9yRmlsZU5hbWUoZGF0
YWJhc2VOYW1lKTsKICAgICBmaWxlbmFtZS5yZXBsYWNlKCcuJywgIiUyRSIpOwogCiAgICAgcmV0
dXJuIGZpbGVuYW1lOwogfQogCitTdHJpbmcgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWNvZGVE
YXRhYmFzZU5hbWUoY29uc3QgU3RyaW5nJiBlbmNvZGVkTmFtZSkKK3sKKyAgICBpZiAoZW5jb2Rl
ZE5hbWUgPT0gIiUwMCJfcykKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIFN0cmluZyBuYW1l
ID0gZW5jb2RlZE5hbWU7CisgICAgbmFtZS5yZXBsYWNlKCIlMkUiX3MsICIuIl9zKTsKKworICAg
IHJldHVybiBGaWxlU3lzdGVtOjpkZWNvZGVGcm9tRmlsZW5hbWUobmFtZSk7Cit9CisKIFN0cmlu
ZyBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmZ1bGxEYXRhYmFzZVBhdGhGb3JEaXJlY3RvcnkoY29u
c3QgU3RyaW5nJiBmdWxsRGF0YWJhc2VEaXJlY3RvcnkpCiB7CiAgICAgcmV0dXJuIEZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChmdWxsRGF0YWJhc2VEaXJlY3RvcnksICJJbmRl
eGVkREIuc3FsaXRlMyIpOwpAQCAtOTY1LDIzICs5NzMsNiBAQCBzdGQ6Om9wdGlvbmFsPElEQkRh
dGFiYXNlTmFtZUFuZFZlcnNpb24+IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGF0YWJhc2VOYW1l
QW5kVgogICAgIHJldHVybiBJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uIHsgZGF0YWJhc2VOYW1l
LCAqZGF0YWJhc2VWZXJzaW9uIH07CiB9CiAKLVN0cmluZyBTUUxpdGVJREJCYWNraW5nU3RvcmU6
OmZ1bGxEYXRhYmFzZURpcmVjdG9yeVdpdGhVcGdyYWRlKCkKLXsKLSAgICBTdHJpbmcgb2xkT3Jp
Z2luRGlyZWN0b3J5ID0gbV9pZGVudGlmaWVyLmRhdGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVUb1Jv
b3QobV9kYXRhYmFzZVJvb3REaXJlY3RvcnksICJ2MCIpOwotICAgIFN0cmluZyBvbGREYXRhYmFz
ZURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChvbGRPcmln
aW5EaXJlY3RvcnksIGZpbGVuYW1lRm9yRGF0YWJhc2VOYW1lKCkpOwotICAgIFN0cmluZyBuZXdP
cmlnaW5EaXJlY3RvcnkgPSBtX2lkZW50aWZpZXIuZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRv
Um9vdChtX2RhdGFiYXNlUm9vdERpcmVjdG9yeSwgInYxIik7Ci0gICAgU3RyaW5nIGZpbGVOYW1l
SGFzaCA9IFNRTGl0ZUZpbGVTeXN0ZW06OmNvbXB1dGVIYXNoRm9yRmlsZU5hbWUobV9pZGVudGlm
aWVyLmRhdGFiYXNlTmFtZSgpKTsKLSAgICBTdHJpbmcgbmV3RGF0YWJhc2VEaXJlY3RvcnkgPSBG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobmV3T3JpZ2luRGlyZWN0b3J5LCBm
aWxlTmFtZUhhc2gpOwotICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhuZXdEYXRh
YmFzZURpcmVjdG9yeSk7Ci0KLSAgICBpZiAoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhvbGREYXRh
YmFzZURpcmVjdG9yeSkpIHsKLSAgICAgICAgRmlsZVN5c3RlbTo6bW92ZUZpbGUob2xkRGF0YWJh
c2VEaXJlY3RvcnksIG5ld0RhdGFiYXNlRGlyZWN0b3J5KTsKLSAgICAgICAgRmlsZVN5c3RlbTo6
ZGVsZXRlRW1wdHlEaXJlY3Rvcnkob2xkT3JpZ2luRGlyZWN0b3J5KTsKLSAgICB9Ci0KLSAgICBy
ZXR1cm4gbmV3RGF0YWJhc2VEaXJlY3Rvcnk7Ci19Ci0KIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tp
bmdTdG9yZTo6Z2V0T3JFc3RhYmxpc2hEYXRhYmFzZUluZm8oSURCRGF0YWJhc2VJbmZvJiBpbmZv
KQogewogICAgIExPRyhJbmRleGVkREIsICJTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldE9yRXN0
YWJsaXNoRGF0YWJhc2VJbmZvIC0gZGF0YWJhc2UgJXMiLCBtX2lkZW50aWZpZXIuZGF0YWJhc2VO
YW1lKCkudXRmOCgpLmRhdGEoKSk7CkBAIC05OTEsMTEgKzk4MiwxMSBAQCBJREJFcnJvciBTUUxp
dGVJREJCYWNraW5nU3RvcmU6OmdldE9yRXN0YWJsaXNoRGF0YWJhc2VJbmZvKElEQkRhdGFiYXNl
SW5mbyYgaW5mbwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyB9OwogICAgIH0KIAotICAgIFN0
cmluZyBkYkZpbGVuYW1lID0gZnVsbERhdGFiYXNlUGF0aCgpOwotCisgICAgU3RyaW5nIGRhdGFi
YXNlUGF0aCA9IGZ1bGxEYXRhYmFzZVBhdGgoKTsKKyAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGly
ZWN0b3JpZXMoRmlsZVN5c3RlbTo6cGFyZW50UGF0aChkYXRhYmFzZVBhdGgpKTsKICAgICBtX3Nx
bGl0ZURCID0gbWFrZVVuaXF1ZTxTUUxpdGVEYXRhYmFzZT4oKTsKLSAgICBpZiAoIW1fc3FsaXRl
REItPm9wZW4oZGJGaWxlbmFtZSkpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gb3Bl
biBTUUxpdGUgZGF0YWJhc2UgYXQgcGF0aCAnJXMnIiwgZGJGaWxlbmFtZS51dGY4KCkuZGF0YSgp
KTsKKyAgICBpZiAoIW1fc3FsaXRlREItPm9wZW4oZGF0YWJhc2VQYXRoKSkgeworICAgICAgICBM
T0dfRVJST1IoIkZhaWxlZCB0byBvcGVuIFNRTGl0ZSBkYXRhYmFzZSBhdCBwYXRoICclcyciLCBk
YXRhYmFzZVBhdGgudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIGNsb3NlU1FMaXRlREIoKTsKICAg
ICB9CiAKQEAgLTEwNDQsNyArMTAzNSw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6Z2V0T3JFc3RhYmxpc2hEYXRhYmFzZUluZm8oSURCRGF0YWJhc2VJbmZvJiBpbmZvCiAgICAg
ICAgIGRhdGFiYXNlSW5mbyA9IGNyZWF0ZUFuZFBvcHVsYXRlSW5pdGlhbERhdGFiYXNlSW5mbygp
OwogCiAgICAgaWYgKCFkYXRhYmFzZUluZm8pIHsKLSAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUg
dG8gZXN0YWJsaXNoIElEQiBkYXRhYmFzZSBhdCBwYXRoICclcyciLCBkYkZpbGVuYW1lLnV0Zjgo
KS5kYXRhKCkpOworICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBlc3RhYmxpc2ggSURCIGRh
dGFiYXNlIGF0IHBhdGggJyVzJyIsIGRhdGFiYXNlUGF0aC51dGY4KCkuZGF0YSgpKTsKICAgICAg
ICAgY2xvc2VTUUxpdGVEQigpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJy
b3IsICJVbmFibGUgdG8gZXN0YWJsaXNoIElEQiBkYXRhYmFzZSBmaWxlIl9zIH07CiAgICAgfQpA
QCAtMjc5OCw3ICsyNzg5LDYgQEAgdm9pZCBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRlbGV0ZUJh
Y2tpbmdTdG9yZSgpCiAKICAgICBTUUxpdGVGaWxlU3lzdGVtOjpkZWxldGVEYXRhYmFzZUZpbGUo
ZGF0YWJhc2VQYXRoKTsKICAgICBTUUxpdGVGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURhdGFiYXNl
RGlyZWN0b3J5KG1fZGF0YWJhc2VEaXJlY3RvcnkpOwotICAgIFNRTGl0ZUZpbGVTeXN0ZW06OmRl
bGV0ZUVtcHR5RGF0YWJhc2VEaXJlY3RvcnkobV9pZGVudGlmaWVyLmRhdGFiYXNlRGlyZWN0b3J5
UmVsYXRpdmVUb1Jvb3QobV9kYXRhYmFzZVJvb3REaXJlY3RvcnkpKTsKIH0KIAogdm9pZCBTUUxp
dGVJREJCYWNraW5nU3RvcmU6OnVucmVnaXN0ZXJDdXJzb3IoU1FMaXRlSURCQ3Vyc29yJiBjdXJz
b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
U1FMaXRlSURCQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmgKaW5kZXggMmVmZTZiMmEzNDE5OTNiYjI2
ZmRmOTFjZmY2ZTdkZWE4ZGJiZWQzNi4uNzMxYTlhNDE5Mzg2NWUzYzVmM2MzNWVkNzU3MWIxMjgy
Zjc4MDk2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaApAQCAtNTEsOSArNTEsOCBA
QCBjbGFzcyBTUUxpdGVJREJDdXJzb3I7CiBjbGFzcyBTUUxpdGVJREJCYWNraW5nU3RvcmUgZmlu
YWwgOiBwdWJsaWMgSURCQmFja2luZ1N0b3JlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKLSAgICBTUUxpdGVJREJCYWNraW5nU3RvcmUoUEFMOjpTZXNzaW9uSUQsIGNv
bnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VSb290RGly
ZWN0b3J5KTsKLSAgICAKLSAgICB+U1FMaXRlSURCQmFja2luZ1N0b3JlKCkgZmluYWw7CisgICAg
V0VCQ09SRV9FWFBPUlQgU1FMaXRlSURCQmFja2luZ1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlSWRl
bnRpZmllciYsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXJlY3RvcnkpOworICAgIFdFQkNPUkVf
RVhQT1JUIH5TUUxpdGVJREJCYWNraW5nU3RvcmUoKSBmaW5hbDsKIAogICAgIElEQkVycm9yIGdl
dE9yRXN0YWJsaXNoRGF0YWJhc2VJbmZvKElEQkRhdGFiYXNlSW5mbyYpIGZpbmFsOwogICAgIHVp
bnQ2NF90IGRhdGFiYXNlVmVyc2lvbigpIGZpbmFsOwpAQCAtOTQsMTggKzkzLDE1IEBAIHB1Ymxp
YzoKIAogICAgIElEQkVycm9yIGdldEJsb2JSZWNvcmRzRm9yT2JqZWN0U3RvcmVSZWNvcmQoaW50
NjRfdCBvYmplY3RTdG9yZVJlY29yZCwgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBWZWN0b3I8
U3RyaW5nPiYgYmxvYkZpbGVQYXRocyk7CiAKLSAgICBzdGF0aWMgdWludDY0X3QgZGF0YWJhc2Vz
U2l6ZUZvckRpcmVjdG9yeShjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSk7Ci0KKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgdWludDY0X3QgZGF0YWJhc2VzU2l6ZUZvckRpcmVjdG9yeShjb25zdCBT
dHJpbmcmIGRpcmVjdG9yeSk7CiAgICAgU3RyaW5nIGRhdGFiYXNlRGlyZWN0b3J5KCkgY29uc3Qg
eyByZXR1cm4gbV9kYXRhYmFzZURpcmVjdG9yeTsgfTsKLSAgICBzdGF0aWMgU3RyaW5nIGZ1bGxE
YXRhYmFzZVBhdGhGb3JEaXJlY3RvcnkoY29uc3QgU3RyaW5nJik7Ci0gICAgc3RhdGljIHN0ZDo6
b3B0aW9uYWw8SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbj4gZGF0YWJhc2VOYW1lQW5kVmVyc2lv
bkZyb21GaWxlKGNvbnN0IFN0cmluZyYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJp
bmcgZnVsbERhdGFiYXNlUGF0aEZvckRpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIGVuY29kZURhdGFiYXNlTmFtZShjb25zdCBTdHJpbmcm
IGRhdGFiYXNlTmFtZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBkZWNvZGVE
YXRhYmFzZU5hbWUoY29uc3QgU3RyaW5nJiBlbmNvZGVkRGF0YWJhc2VOYW1lKTsKIAotICAgIFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbklEOyB9Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SURCRGF0YWJhc2VOYW1lQW5k
VmVyc2lvbj4gZGF0YWJhc2VOYW1lQW5kVmVyc2lvbkZyb21GaWxlKGNvbnN0IFN0cmluZyYpOwog
CiBwcml2YXRlOgotICAgIFN0cmluZyBmaWxlbmFtZUZvckRhdGFiYXNlTmFtZSgpIGNvbnN0Owot
ICAgIFN0cmluZyBmdWxsRGF0YWJhc2VEaXJlY3RvcnlXaXRoVXBncmFkZSgpOwotCiAgICAgSURC
RXJyb3IgZW5zdXJlVmFsaWRSZWNvcmRzVGFibGUoKTsKICAgICBJREJFcnJvciBlbnN1cmVWYWxp
ZEluZGV4UmVjb3Jkc1RhYmxlKCk7CiAgICAgSURCRXJyb3IgZW5zdXJlVmFsaWRJbmRleFJlY29y
ZHNJbmRleCgpOwpAQCAtMjA2LDcgKzIwMiw2IEBAIHByaXZhdGU6CiAKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8U1FMaXRlU3RhdGVtZW50PiBtX2NhY2hlZFN0YXRlbWVudHNbc3RhdGljX2Nhc3Q8aW50
PihTUUw6OkludmFsaWQpXTsKIAotICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOwogICAg
IElEQkRhdGFiYXNlSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PElEQkRhdGFiYXNlSW5mbz4gbV9kYXRhYmFzZUluZm87CiAgICAgc3RkOjp1bmlxdWVfcHRyPElE
QkRhdGFiYXNlSW5mbz4gbV9vcmlnaW5hbERhdGFiYXNlSW5mb0JlZm9yZVZlcnNpb25DaGFuZ2U7
CkBAIC0yMTYsNyArMjExLDYgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPElEQlJlc291cmNlSWRl
bnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFNRTGl0ZUlEQlRyYW5zYWN0aW9uPj4gbV90cmFuc2Fj
dGlvbnM7CiAgICAgSGFzaE1hcDxJREJSZXNvdXJjZUlkZW50aWZpZXIsIFNRTGl0ZUlEQkN1cnNv
cio+IG1fY3Vyc29yczsKIAotICAgIFN0cmluZyBtX2RhdGFiYXNlUm9vdERpcmVjdG9yeTsKICAg
ICBTdHJpbmcgbV9kYXRhYmFzZURpcmVjdG9yeTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2Uu
Y3BwCmluZGV4IDJiMWVhZGI5ZWE1YzQ2NGQwMjc1ZWQyMjNmNTAwM2I3YmVmMTU3MzMuLjJkZmJi
ZGIzMTk5MzFlMzc2ZjEyNTJlYTQyYzE0M2Q5ZmQ0Y2QxY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFi
YXNlLmNwcApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRl
ICJTdG9yYWdlUXVvdGFNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiVW5pcXVlSURCRGF0YWJhc2VDb25u
ZWN0aW9uLmgiCisjaW5jbHVkZSAiVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyLmgiCiAjaW5jbHVk
ZSA8d3RmL1Njb3BlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTEzNCw4ICsxMzUsOCBA
QCBzdGF0aWMgaW5saW5lIHVpbnQ2NF90IGVzdGltYXRlU2l6ZShjb25zdCBJREJPYmplY3RTdG9y
ZUluZm8mIGluZm8pCiAgICAgcmV0dXJuIHNpemU7CiB9CiAKLVVuaXF1ZUlEQkRhdGFiYXNlOjpV
bmlxdWVJREJEYXRhYmFzZShJREJTZXJ2ZXImIHNlcnZlciwgY29uc3QgSURCRGF0YWJhc2VJZGVu
dGlmaWVyJiBpZGVudGlmaWVyKQotICAgIDogbV9zZXJ2ZXIoc2VydmVyKQorVW5pcXVlSURCRGF0
YWJhc2U6OlVuaXF1ZUlEQkRhdGFiYXNlKFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlciYgbWFuYWdl
ciwgY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJiBpZGVudGlmaWVyKQorICAgIDogbV9tYW5h
Z2VyKG1hbmFnZXIpCiAgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKIHsKICAgICBBU1NF
UlQoIWlzTWFpblRocmVhZCgpKTsKQEAgLTE2Myw2ICsxNjQsMTEgQEAgY29uc3QgSURCRGF0YWJh
c2VJbmZvJiBVbmlxdWVJREJEYXRhYmFzZTo6aW5mbygpIGNvbnN0CiAgICAgcmV0dXJuICptX2Rh
dGFiYXNlSW5mbzsKIH0KIAorVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyKiBVbmlxdWVJREJEYXRh
YmFzZTo6bWFuYWdlcigpCit7CisgICAgcmV0dXJuIG1fbWFuYWdlci5nZXQoKTsKK30KKwogdm9p
ZCBVbmlxdWVJREJEYXRhYmFzZTo6b3BlbkRhdGFiYXNlQ29ubmVjdGlvbihJREJDb25uZWN0aW9u
VG9DbGllbnQmIGNvbm5lY3Rpb24sIGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkK
IHsKICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6Om9wZW5EYXRhYmFzZUNv
bm5lY3Rpb24iKTsKQEAgLTE4NSwxNyArMTkxLDQ1IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6
OnBlcmZvcm1DdXJyZW50T3Blbk9wZXJhdGlvbigpCiAgICAgQVNTRVJUKG1fY3VycmVudE9wZW5E
QlJlcXVlc3QpOwogICAgIEFTU0VSVChtX2N1cnJlbnRPcGVuREJSZXF1ZXN0LT5pc09wZW5SZXF1
ZXN0KCkpOwogCisgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBjcmVhdGUgdGhlIGZpbGUgc28gbm8g
bmVlZCB0byBkbyBzcGFjZSBjaGVjay4KKyAgICBpZiAobV9iYWNraW5nU3RvcmUpCisgICAgICAg
IHJldHVybiBwZXJmb3JtQ3VycmVudE9wZW5PcGVyYXRpb25BZnRlclNwYWNlQ2hlY2sodHJ1ZSk7
CisKKyAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAgICAgcmV0dXJuIHBlcmZvcm1DdXJyZW50T3Bl
bk9wZXJhdGlvbkFmdGVyU3BhY2VDaGVjayhmYWxzZSk7CisKKyAgICBhdXRvIHJlcXVlc3RJZGVu
dGlmaWVyID0gbV9jdXJyZW50T3BlbkRCUmVxdWVzdC0+cmVxdWVzdERhdGEoKS5yZXF1ZXN0SWRl
bnRpZmllcigpOworICAgIGlmIChtX29wZW5EQlJlcXVlc3RzRm9yU3BhY2VDaGVjay5jb250YWlu
cyhyZXF1ZXN0SWRlbnRpZmllcikpCisgICAgICAgIHJldHVybjsKKworICAgIG1fb3BlbkRCUmVx
dWVzdHNGb3JTcGFjZUNoZWNrLmFkZChyZXF1ZXN0SWRlbnRpZmllcik7CisgICAgbV9tYW5hZ2Vy
LT5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCBkZWZhdWx0V3JpdGVPcGVyYXRp
b25Db3N0LCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgcmVxdWVzdElkZW50
aWZpZXJdKGJvb2wgZ3JhbnRlZCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbV9vcGVuREJSZXF1ZXN0c0ZvclNwYWNlQ2hl
Y2sucmVtb3ZlKHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICAgICAgaWYgKG1fY3VycmVudE9wZW5E
QlJlcXVlc3QtPnJlcXVlc3REYXRhKCkucmVxdWVzdElkZW50aWZpZXIoKSAhPSByZXF1ZXN0SWRl
bnRpZmllcikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBwZXJmb3JtQ3VycmVudE9w
ZW5PcGVyYXRpb25BZnRlclNwYWNlQ2hlY2soZ3JhbnRlZCk7CisgICAgfSk7Cit9CisKK3ZvaWQg
VW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1DdXJyZW50T3Blbk9wZXJhdGlvbkFmdGVyU3BhY2VD
aGVjayhib29sIGlzR3JhbnRlZCkKK3sKKyAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0
YWJhc2U6OnBlcmZvcm1DdXJyZW50T3Blbk9wZXJhdGlvbkFmdGVyU3BhY2VSZXF1ZXN0ICglcCki
LCB0aGlzKTsKKwogICAgIElEQkVycm9yIGJhY2tpbmdTdG9yZU9wZW5FcnJvcjsKICAgICBpZiAo
IW1fYmFja2luZ1N0b3JlKSB7Ci0gICAgICAgIC8vIFF1b3RhIGNoZWNrLgotICAgICAgICBhdXRv
IGRlY2lzaW9uID0gbV9zZXJ2ZXIucmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwg
ZGVmYXVsdFdyaXRlT3BlcmF0aW9uQ29zdCk7Ci0gICAgICAgIGlmIChkZWNpc2lvbiA9PSBTdG9y
YWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbjo6RGVueSkKKyAgICAgICAgaWYgKCFtX21hbmFnZXIp
CisgICAgICAgICAgICBiYWNraW5nU3RvcmVPcGVuRXJyb3IgPSBJREJFcnJvciB7IEludmFsaWRT
dGF0ZUVycm9yIH07CisgICAgICAgIGVsc2UgaWYgKCFpc0dyYW50ZWQpCiAgICAgICAgICAgICBi
YWNraW5nU3RvcmVPcGVuRXJyb3IgPSBJREJFcnJvciB7IFF1b3RhRXhjZWVkZWRFcnJvciwgcXVv
dGFFcnJvck1lc3NhZ2VOYW1lKCJPcGVuQmFja2luZ1N0b3JlIikgfTsKICAgICAgICAgZWxzZSB7
Ci0gICAgICAgICAgICBtX2JhY2tpbmdTdG9yZSA9IG1fc2VydmVyLmNyZWF0ZUJhY2tpbmdTdG9y
ZShtX2lkZW50aWZpZXIpOworICAgICAgICAgICAgbV9iYWNraW5nU3RvcmUgPSBtX21hbmFnZXIt
PmNyZWF0ZUJhY2tpbmdTdG9yZShtX2lkZW50aWZpZXIpOwogICAgICAgICAgICAgSURCRGF0YWJh
c2VJbmZvIGRhdGFiYXNlSW5mbzsKICAgICAgICAgICAgIGJhY2tpbmdTdG9yZU9wZW5FcnJvciA9
IG1fYmFja2luZ1N0b3JlLT5nZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbyhkYXRhYmFzZUluZm8p
OwotICAgICAgICAgICAgaWYgKGJhY2tpbmdTdG9yZU9wZW5FcnJvci5pc051bGwoKSkKKyAgICAg
ICAgICAgIGlmICghYmFja2luZ1N0b3JlT3BlbkVycm9yKQogICAgICAgICAgICAgICAgIG1fZGF0
YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KGRhdGFiYXNlSW5mbyk7CiAg
ICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBn
ZXQgZGF0YWJhc2UgaW5mbyAnJXMnIiwgYmFja2luZ1N0b3JlT3BlbkVycm9yLm1lc3NhZ2UoKS51
dGY4KCkuZGF0YSgpKTsKQEAgLTIwNCw3ICsyMzgsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNl
OjpwZXJmb3JtQ3VycmVudE9wZW5PcGVyYXRpb24oKQogICAgICAgICB9CiAgICAgfQogCi0gICAg
aWYgKCFiYWNraW5nU3RvcmVPcGVuRXJyb3IuaXNOdWxsKCkpIHsKKyAgICBpZiAoYmFja2luZ1N0
b3JlT3BlbkVycm9yKSB7CiAgICAgICAgIGF1dG8gcmVzdWx0ID0gSURCUmVzdWx0RGF0YTo6ZXJy
b3IobV9jdXJyZW50T3BlbkRCUmVxdWVzdC0+cmVxdWVzdERhdGEoKS5yZXF1ZXN0SWRlbnRpZmll
cigpLCBiYWNraW5nU3RvcmVPcGVuRXJyb3IpOwogICAgICAgICBtX2N1cnJlbnRPcGVuREJSZXF1
ZXN0LT5jb25uZWN0aW9uKCkuZGlkT3BlbkRhdGFiYXNlKHJlc3VsdCk7CiAgICAgICAgIG1fY3Vy
cmVudE9wZW5EQlJlcXVlc3QgPSBudWxscHRyOwpAQCAtMjk0LDcgKzMyOCw3IEBAIHZvaWQgVW5p
cXVlSURCRGF0YWJhc2U6OmRlbGV0ZUJhY2tpbmdTdG9yZSgpCiAgICAgQVNTRVJUKCFpc01haW5U
aHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVC
YWNraW5nU3RvcmUiKTsKICAgICAKLSAgICBhdXRvIGJhY2tpbmdTdG9yZSA9IG1fYmFja2luZ1N0
b3JlID8gc3RkOjpleGNoYW5nZShtX2JhY2tpbmdTdG9yZSwgbnVsbHB0cikgOiBtX3NlcnZlci5j
cmVhdGVCYWNraW5nU3RvcmUobV9pZGVudGlmaWVyKTsKKyAgICBhdXRvIGJhY2tpbmdTdG9yZSA9
IG1fYmFja2luZ1N0b3JlID8gc3RkOjpleGNoYW5nZShtX2JhY2tpbmdTdG9yZSwgbnVsbHB0cikg
OiBtX21hbmFnZXItPmNyZWF0ZUJhY2tpbmdTdG9yZShtX2lkZW50aWZpZXIpOwogICAgIHVpbnQ2
NF90IGRlbGV0ZWRWZXJzaW9uID0gYmFja2luZ1N0b3JlLT5kYXRhYmFzZVZlcnNpb24oKTsKICAg
ICBiYWNraW5nU3RvcmUtPmRlbGV0ZUJhY2tpbmdTdG9yZSgpOwogICAgIGRpZERlbGV0ZUJhY2tp
bmdTdG9yZShkZWxldGVkVmVyc2lvbik7CkBAIC01NDIsMjAgKzU3NiwzMiBAQCB2b2lkIFVuaXF1
ZUlEQkRhdGFiYXNlOjphZGRPcGVuRGF0YWJhc2VDb25uZWN0aW9uKFJlZjxVbmlxdWVJREJEYXRh
YmFzZUNvbm5lY3RpbwogICAgIG1fb3BlbkRhdGFiYXNlQ29ubmVjdGlvbnMuYWRkKGFkb3B0UmVm
KGNvbm5lY3Rpb24ubGVha1JlZigpKSk7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNy
ZWF0ZU9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9u
LCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mIGluZm8sIEVycm9yQ2FsbGJhY2sgY2FsbGJhY2sp
Cit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZShVbmlxdWVJREJEYXRh
YmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiBp
bmZvLCBFcnJvckNhbGxiYWNrIGNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0IHNwYWNlQ2hlY2tS
ZXN1bHQpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWRE
QiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZSIpOwogCi0gICAgQVNTRVJU
KG1fYmFja2luZ1N0b3JlKTsKKyAgICBpZiAoIXNwYWNlQ2hlY2tSZXN1bHQpIHsKKyAgICAgICAg
aWYgKCFtX21hbmFnZXIpCisgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJ
bnZhbGlkU3RhdGVFcnJvciB9KTsKKworICAgICAgICBhdXRvIHRhc2tTaXplID0gZGVmYXVsdFdy
aXRlT3BlcmF0aW9uQ29zdCArIGVzdGltYXRlU2l6ZShpbmZvKTsKKyAgICAgICAgbV9tYW5hZ2Vy
LT5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCB0YXNrU2l6ZSwgW3RoaXMsIHdl
YWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHdlYWtUcmFuc2FjdGlvbiA9IFdlYWtQdHIgeyB0
cmFuc2FjdGlvbiB9LCBpbmZvLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIGdy
YW50ZWQpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhd2Vha1RyYW5z
YWN0aW9uKQorICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFs
aWRTdGF0ZUVycm9yLCAiRGF0YWJhc2Ugb3IgdHJhbnNhY3Rpb24gaXMgY2xvc2VkIiB9KTsKKyAg
ICAgICAgICAgIGNyZWF0ZU9iamVjdFN0b3JlKCp3ZWFrVHJhbnNhY3Rpb24sIGluZm8sIFdURk1v
dmUoY2FsbGJhY2spLCBncmFudGVkKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CiAKLSAgICAvLyBRdW90YSBjaGVjay4KLSAgICBhdXRvIHRhc2tTaXplID0gZGVmYXVsdFdy
aXRlT3BlcmF0aW9uQ29zdCArIGVzdGltYXRlU2l6ZShpbmZvKTsKLSAgICBpZiAobV9zZXJ2ZXIu
cmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwgdGFza1NpemUpID09IFN0b3JhZ2VR
dW90YU1hbmFnZXI6OkRlY2lzaW9uOjpEZW55KSB7CisgICAgaWYgKCFzcGFjZUNoZWNrUmVzdWx0
LnZhbHVlKCkpIHsKICAgICAgICAgY2FsbGJhY2soSURCRXJyb3IgeyBRdW90YUV4Y2VlZGVkRXJy
b3IsIHF1b3RhRXJyb3JNZXNzYWdlTmFtZSgiQ3JlYXRlT2JqZWN0U3RvcmUiKSB9KTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAorICAgIGlmICghbV9iYWNraW5nU3RvcmUpCisgICAgICAgIHJl
dHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiQmFja2luZyBzdG9y
ZSBoYXMgY2xvc2VkIiB9KTsKKwogICAgIGF1dG8gZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+Y3Jl
YXRlT2JqZWN0U3RvcmUodHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSwgaW5mbyk7CiAg
ICAgaWYgKGVycm9yLmlzTnVsbCgpKQogICAgICAgICBtX2RhdGFiYXNlSW5mby0+YWRkRXhpc3Rp
bmdPYmplY3RTdG9yZShpbmZvKTsKQEAgLTU2MywxOCArNjA5LDM0IEBAIHZvaWQgVW5pcXVlSURC
RGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24m
IHRyYW5zYWN0CiAgICAgY2FsbGJhY2soZXJyb3IpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFi
YXNlOjpkZWxldGVPYmplY3RTdG9yZShVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFu
c2FjdGlvbiwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUsIEVycm9yQ2FsbGJhY2sgY2Fs
bGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVPYmplY3RTdG9yZShVbmlxdWVJ
REJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgY29uc3QgU3RyaW5nJiBvYmplY3RT
dG9yZU5hbWUsIEVycm9yQ2FsbGJhY2sgY2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgc3BhY2VD
aGVja1Jlc3VsdCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5k
ZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZU9iamVjdFN0b3JlIik7CiAKKyAgICBp
ZiAoIXNwYWNlQ2hlY2tSZXN1bHQpIHsKKyAgICAgICAgaWYgKCFtX21hbmFnZXIpCisgICAgICAg
ICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciB9KTsKKwor
ICAgICAgICBtX21hbmFnZXItPnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIDAs
IFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCB3ZWFrVHJhbnNhY3Rpb24gPSBX
ZWFrUHRyIHsgdHJhbnNhY3Rpb24gfSwgb2JqZWN0U3RvcmVOYW1lLCBjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spXShib29sIGdyYW50ZWQpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCF3
ZWFrVGhpcyB8fCAhd2Vha1RyYW5zYWN0aW9uKQorICAgICAgICAgICAgICAgIHJldHVybiBjYWxs
YmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiRGF0YWJhc2Ugb3IgdHJhbnNhY3Rp
b24gaXMgY2xvc2VkIiB9KTsKKworICAgICAgICAgICAgZGVsZXRlT2JqZWN0U3RvcmUoKndlYWtU
cmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVOYW1lLCBXVEZNb3ZlKGNhbGxiYWNrKSwgZ3JhbnRlZCk7
CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKHNwYWNl
Q2hlY2tSZXN1bHQudmFsdWUoKSk7CiAgICAgYXV0byogaW5mbyA9IG1fZGF0YWJhc2VJbmZvLT5p
bmZvRm9yRXhpc3RpbmdPYmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUpOwogICAgIGlmICghaW5m
bykgewogICAgICAgICBjYWxsYmFjayhJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQg
dG8gZGVsZXRlIG5vbi1leGlzdGFudCBvYmplY3Qgc3RvcmUiX3MgfSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBBU1NFUlQobV9iYWNraW5nU3RvcmUpOworICAgIGlmICghbV9iYWNr
aW5nU3RvcmUpCisgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0
ZUVycm9yLCAiQmFja2luZyBzdG9yZSBpcyBjbG9zZWQiIH0pOworCiAgICAgYXV0byBlcnJvciA9
IG1fYmFja2luZ1N0b3JlLT5kZWxldGVPYmplY3RTdG9yZSh0cmFuc2FjdGlvbi5pbmZvKCkuaWRl
bnRpZmllcigpLCBpbmZvLT5pZGVudGlmaWVyKCkpOwogICAgIGlmIChlcnJvci5pc051bGwoKSkK
ICAgICAgICAgbV9kYXRhYmFzZUluZm8tPmRlbGV0ZU9iamVjdFN0b3JlKGluZm8tPmlkZW50aWZp
ZXIoKSk7CkBAIC01ODIsMTQgKzY0NCwyNiBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxl
dGVPYmplY3RTdG9yZShVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdAogICAg
IGNhbGxiYWNrKGVycm9yKTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cmVuYW1lT2Jq
ZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIHVpbnQ2
NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lLCBFcnJvckNh
bGxiYWNrIGNhbGxiYWNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cmVuYW1lT2JqZWN0U3Rv
cmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIHVpbnQ2NF90IG9i
amVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lLCBFcnJvckNhbGxiYWNr
IGNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0IHNwYWNlQ2hlY2tSZXN1bHQpCiB7CiAgICAgQVNT
RVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFi
YXNlOjpyZW5hbWVPYmplY3RTdG9yZSIpOwogCi0gICAgLy8gUXVvdGEgY2hlY2suCi0gICAgYXV0
byB0YXNrU2l6ZSA9IGRlZmF1bHRXcml0ZU9wZXJhdGlvbkNvc3QgKyBuZXdOYW1lLnNpemVJbkJ5
dGVzKCk7Ci0gICAgaWYgKG1fc2VydmVyLnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2lu
KCksIHRhc2tTaXplKSA9PSBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbjo6RGVueSkgewor
ICAgIGlmICghc3BhY2VDaGVja1Jlc3VsdCkgeworICAgICAgICBpZiAoIW1fbWFuYWdlcikKKyAg
ICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yIH0p
OworCisgICAgICAgIGF1dG8gdGFza1NpemUgPSBkZWZhdWx0V3JpdGVPcGVyYXRpb25Db3N0ICsg
bmV3TmFtZS5zaXplSW5CeXRlcygpOworICAgICAgICBtX21hbmFnZXItPnJlcXVlc3RTcGFjZSht
X2lkZW50aWZpZXIub3JpZ2luKCksIHRhc2tTaXplLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRy
IHsgKnRoaXMgfSwgd2Vha1RyYW5zYWN0aW9uID0gV2Vha1B0ciB7IHRyYW5zYWN0aW9uIH0sIG9i
amVjdFN0b3JlSWRlbnRpZmllciwgbmV3TmFtZSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KV0oYm9vbCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMgfHwg
IXdlYWtUcmFuc2FjdGlvbikKKyAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJy
b3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkRhdGFiYXNlIG9yIHRyYW5zYWN0aW9uIGlzIGNsb3Nl
ZCIgfSk7CisKKyAgICAgICAgICAgIHJlbmFtZU9iamVjdFN0b3JlKCp3ZWFrVHJhbnNhY3Rpb24s
IG9iamVjdFN0b3JlSWRlbnRpZmllciwgbmV3TmFtZSwgV1RGTW92ZShjYWxsYmFjayksIGdyYW50
ZWQpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghc3Bh
Y2VDaGVja1Jlc3VsdC52YWx1ZSgpKSB7CiAgICAgICAgIGNhbGxiYWNrKElEQkVycm9yKFF1b3Rh
RXhjZWVkZWRFcnJvciwgcXVvdGFFcnJvck1lc3NhZ2VOYW1lKCJSZW5hbWVPYmplY3RTdG9yZSIp
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC02MDAsNyArNjc0LDkgQEAgdm9pZCBVbmlx
dWVJREJEYXRhYmFzZTo6cmVuYW1lT2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2Fj
dGlvbiYgdHJhbnNhY3QKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VSVChtX2Jh
Y2tpbmdTdG9yZSk7CisgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkKKyAgICAgICAgcmV0dXJuIGNh
bGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJCYWNraW5nIHN0b3JlIGlzIGNs
b3NlZCIgfSk7CisKICAgICBhdXRvIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPnJlbmFtZU9iamVj
dFN0b3JlKHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCksIG9iamVjdFN0b3JlSWRlbnRp
ZmllciwgbmV3TmFtZSk7CiAgICAgaWYgKGVycm9yLmlzTnVsbCgpKQogICAgICAgICBtX2RhdGFi
YXNlSW5mby0+cmVuYW1lT2JqZWN0U3RvcmUob2JqZWN0U3RvcmVJZGVudGlmaWVyLCBuZXdOYW1l
KTsKQEAgLTYwOCwzMCArNjg0LDU5IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnJlbmFtZU9i
amVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0CiAgICAgY2Fs
bGJhY2soZXJyb3IpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjbGVhck9iamVjdFN0
b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCB1aW50NjRfdCBv
YmplY3RTdG9yZUlkZW50aWZpZXIsIEVycm9yQ2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIFVuaXF1
ZUlEQkRhdGFiYXNlOjpjbGVhck9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rp
b24mIHRyYW5zYWN0aW9uLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIEVycm9yQ2Fs
bGJhY2sgY2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgc3BhY2VDaGVja1Jlc3VsdCkKIHsKICAg
ICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURC
RGF0YWJhc2U6OmNsZWFyT2JqZWN0U3RvcmUiKTsKIAotICAgIEFTU0VSVChtX2JhY2tpbmdTdG9y
ZSk7Ci0gICAgYXV0byBlcnJvciA9IG1fYmFja2luZ1N0b3JlLT5jbGVhck9iamVjdFN0b3JlKHRy
YW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCksIG9iamVjdFN0b3JlSWRlbnRpZmllcik7Cisg
ICAgaWYgKCFzcGFjZUNoZWNrUmVzdWx0KSB7CisgICAgICAgIGlmICghbV9tYW5hZ2VyKQorICAg
ICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7
CisKKyAgICAgICAgbV9tYW5hZ2VyLT5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigp
LCAwLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgd2Vha1RyYW5zYWN0aW9u
ID0gV2Vha1B0ciB7IHRyYW5zYWN0aW9uIH0sIG9iamVjdFN0b3JlSWRlbnRpZmllciwgY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAg
ICAgIGlmICghd2Vha1RoaXMgfHwgIXdlYWtUcmFuc2FjdGlvbikKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkRhdGFiYXNlIG9y
IHRyYW5zYWN0aW9uIGlzIGNsb3NlZCIgfSk7CisKKyAgICAgICAgICAgIGNsZWFyT2JqZWN0U3Rv
cmUoKndlYWtUcmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBXVEZNb3ZlKGNhbGxi
YWNrKSwgZ3JhbnRlZCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgQVNTRVJUKHNwYWNlQ2hlY2tSZXN1bHQudmFsdWUoKSk7CisgICAgaWYgKCFtX2JhY2tpbmdT
dG9yZSkKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJy
b3IsICJCYWNraW5nIHN0b3JlIGlzIGNsb3NlZCIgfSk7CiAKKyAgICBhdXRvIGVycm9yID0gbV9i
YWNraW5nU3RvcmUtPmNsZWFyT2JqZWN0U3RvcmUodHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZp
ZXIoKSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKICAgICBjYWxsYmFjayhlcnJvcik7CiB9CiAK
LXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZUluZGV4KFVuaXF1ZUlEQkRhdGFiYXNlVHJh
bnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBjb25zdCBJREJJbmRleEluZm8mIGluZm8sIEVycm9yQ2Fs
bGJhY2sgY2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVJbmRleChVbmlx
dWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgY29uc3QgSURCSW5kZXhJbmZv
JiBpbmZvLCBFcnJvckNhbGxiYWNrIGNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0IHNwYWNlQ2hl
Y2tSZXN1bHQpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4
ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVJbmRleCIpOwogCi0gICAgLy8gUXVvdGEg
Y2hlY2suCi0gICAgYXV0byB0YXNrU2l6ZSA9IGRlZmF1bHRXcml0ZU9wZXJhdGlvbkNvc3QgKyBl
c3RpbWF0ZVNpemUoaW5mbyk7Ci0gICAgaWYgKG1fc2VydmVyLnJlcXVlc3RTcGFjZShtX2lkZW50
aWZpZXIub3JpZ2luKCksIHRhc2tTaXplKSA9PSBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lv
bjo6RGVueSkgeworICAgIGlmICghc3BhY2VDaGVja1Jlc3VsdCkgeworICAgICAgICBpZiAoIW1f
bWFuYWdlcikKKyAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRT
dGF0ZUVycm9yIH0pOworCisgICAgICAgIGF1dG8gdGFza1NpemUgPSBkZWZhdWx0V3JpdGVPcGVy
YXRpb25Db3N0ICsgZXN0aW1hdGVTaXplKGluZm8pOworICAgICAgICBtX21hbmFnZXItPnJlcXVl
c3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIHRhc2tTaXplLCBbdGhpcywgd2Vha1RoaXMg
PSBXZWFrUHRyIHsgKnRoaXMgfSwgd2Vha1RyYW5zYWN0aW9uID0gV2Vha1B0ciB7IHRyYW5zYWN0
aW9uIH0sIGluZm8sIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgZ3JhbnRlZCkg
bXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICF3ZWFrVHJhbnNhY3Rpb24p
CisgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRl
RXJyb3IsICJEYXRhYmFzZSBvciB0cmFuc2FjdGlvbiBpcyBjbG9zZWQiIH0pOworCisgICAgICAg
ICAgICBjcmVhdGVJbmRleCgqd2Vha1RyYW5zYWN0aW9uLCBpbmZvLCBXVEZNb3ZlKGNhbGxiYWNr
KSwgZ3JhbnRlZCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
aWYgKCFzcGFjZUNoZWNrUmVzdWx0LnZhbHVlKCkpIHsKICAgICAgICAgY2FsbGJhY2soSURCRXJy
b3IgeyBRdW90YUV4Y2VlZGVkRXJyb3IsIHF1b3RhRXJyb3JNZXNzYWdlTmFtZSgiQ3JlYXRlSW5k
ZXgiKSB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VSVChtX2JhY2tpbmdT
dG9yZSk7CisgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNr
KElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJCYWNraW5nIHN0b3JlIGlzIGNsb3NlZCIg
fSk7CisKICAgICBhdXRvIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPmNyZWF0ZUluZGV4KHRyYW5z
YWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCksIGluZm8pOwogICAgIGlmIChlcnJvci5pc051bGwo
KSkgewogICAgICAgICBBU1NFUlQobV9kYXRhYmFzZUluZm8pOwpAQCAtNjQ0LDExICs3NDksMjgg
QEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlSW5kZXgoVW5pcXVlSURCRGF0YWJhc2VU
cmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIGMKICAgICBjYWxsYmFjayhlcnJvcik7CiB9CiAKLXZv
aWQgVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZUluZGV4KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNh
Y3Rpb24mIHRyYW5zYWN0aW9uLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgaW5kZXhOYW1lLCBFcnJvckNhbGxiYWNrIGNhbGxiYWNrKQordm9pZCBVbmlxdWVJ
REJEYXRhYmFzZTo6ZGVsZXRlSW5kZXgoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJh
bnNhY3Rpb24sIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBp
bmRleE5hbWUsIEVycm9yQ2FsbGJhY2sgY2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgc3BhY2VD
aGVja1Jlc3VsdCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5k
ZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZUluZGV4Iik7CiAKKyAgICBpZiAoIXNw
YWNlQ2hlY2tSZXN1bHQpIHsKKyAgICAgICAgaWYgKCFtX21hbmFnZXIpCisgICAgICAgICAgICBy
ZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciB9KTsKKworICAgICAg
ICBtX21hbmFnZXItPnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIDAsIFt0aGlz
LCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCB3ZWFrVHJhbnNhY3Rpb24gPSBXZWFrUHRy
IHsgdHJhbnNhY3Rpb24gfSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleE5hbWUsIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgZ3JhbnRlZCkgbXV0YWJsZSB7CisgICAgICAg
ICAgICBpZiAoIXdlYWtUaGlzIHx8ICF3ZWFrVHJhbnNhY3Rpb24pCisgICAgICAgICAgICAgICAg
cmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJEYXRhYmFzZSBv
ciB0cmFuc2FjdGlvbiBpcyBjbG9zZWQiIH0pOworCisgICAgICAgICAgICBkZWxldGVJbmRleCgq
d2Vha1RyYW5zYWN0aW9uLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4TmFtZSwgV1RGTW92
ZShjYWxsYmFjayksIGdyYW50ZWQpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIEFTU0VSVChzcGFjZUNoZWNrUmVzdWx0LnZhbHVlKCkpOworICAgIGlmICghbV9i
YWNraW5nU3RvcmUpCisgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRT
dGF0ZUVycm9yLCAiQmFja2luZyBzdG9yZSBpcyBjbG9zZWQiIH0pOworCiAgICAgYXV0byogb2Jq
ZWN0U3RvcmVJbmZvID0gbV9kYXRhYmFzZUluZm8tPmluZm9Gb3JFeGlzdGluZ09iamVjdFN0b3Jl
KG9iamVjdFN0b3JlSWRlbnRpZmllcik7CiAgICAgaWYgKCFvYmplY3RTdG9yZUluZm8pIHsKICAg
ICAgICAgY2FsbGJhY2soSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIGRlbGV0
ZSBpbmRleCBmcm9tIG5vbi1leGlzdGFudCBvYmplY3Qgc3RvcmUiX3MgfSk7CkBAIC02NjAsOSAr
NzgyLDggQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlSW5kZXgoVW5pcXVlSURCRGF0
YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIHUKICAgICAgICAgY2FsbGJhY2soSURCRXJy
b3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIGRlbGV0ZSBub24tZXhpc3RhbnQgaW5kZXgi
X3MgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byBpbmRleElkZW50aWZpZXIg
PSBpbmRleEluZm8tPmlkZW50aWZpZXIoKTsKIAotICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7
CisgICAgYXV0byBpbmRleElkZW50aWZpZXIgPSBpbmRleEluZm8tPmlkZW50aWZpZXIoKTsKICAg
ICBhdXRvIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPmRlbGV0ZUluZGV4KHRyYW5zYWN0aW9uLmlu
Zm8oKS5pZGVudGlmaWVyKCksIG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhJZGVudGlmaWVy
KTsKICAgICBpZiAoZXJyb3IuaXNOdWxsKCkpCiAgICAgICAgIG9iamVjdFN0b3JlSW5mby0+ZGVs
ZXRlSW5kZXgoaW5kZXhJZGVudGlmaWVyKTsKQEAgLTY3MCwxOCArNzkxLDMzIEBAIHZvaWQgVW5p
cXVlSURCRGF0YWJhc2U6OmRlbGV0ZUluZGV4KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24m
IHRyYW5zYWN0aW9uLCB1CiAgICAgY2FsbGJhY2soZXJyb3IpOwogfQogCi12b2lkIFVuaXF1ZUlE
QkRhdGFiYXNlOjpyZW5hbWVJbmRleChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFu
c2FjdGlvbiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRleElk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSwgRXJyb3JDYWxsYmFjayBjYWxsYmFjaykK
K3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnJlbmFtZUluZGV4KFVuaXF1ZUlEQkRhdGFiYXNlVHJh
bnNhY3Rpb24mIHRyYW5zYWN0aW9uLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVp
bnQ2NF90IGluZGV4SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lLCBFcnJvckNhbGxi
YWNrIGNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0IHNwYWNlQ2hlY2tSZXN1bHQpCiB7CiAgICAg
QVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRh
dGFiYXNlOjpyZW5hbWVJbmRleCIpOwogCi0gICAgLy8gUXVvdGEgY2hlY2suCi0gICAgYXV0byB0
YXNrU2l6ZSA9IGRlZmF1bHRXcml0ZU9wZXJhdGlvbkNvc3QgKyBuZXdOYW1lLnNpemVJbkJ5dGVz
KCk7Ci0gICAgaWYgKG1fc2VydmVyLnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCks
IHRhc2tTaXplKSA9PSBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbjo6RGVueSkgeworICAg
IGlmICghc3BhY2VDaGVja1Jlc3VsdCkgeworICAgICAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAg
ICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yIH0pOwor
CisgICAgICAgIGF1dG8gdGFza1NpemUgPSBkZWZhdWx0V3JpdGVPcGVyYXRpb25Db3N0ICsgbmV3
TmFtZS5zaXplSW5CeXRlcygpOworICAgICAgICBtX21hbmFnZXItPnJlcXVlc3RTcGFjZShtX2lk
ZW50aWZpZXIub3JpZ2luKCksIHRhc2tTaXplLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsg
KnRoaXMgfSwgd2Vha1RyYW5zYWN0aW9uID0gV2Vha1B0ciB7IHRyYW5zYWN0aW9uIH0sIG9iamVj
dFN0b3JlSWRlbnRpZmllciwgaW5kZXhJZGVudGlmaWVyLCBuZXdOYW1lLCBjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spXShib29sIGdyYW50ZWQpIG11dGFibGUgeworICAgICAgICAgICAgaWYg
KCF3ZWFrVGhpcyB8fCAhd2Vha1RyYW5zYWN0aW9uKQorICAgICAgICAgICAgICAgIHJldHVybiBj
YWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiRGF0YWJhc2Ugb3IgdHJhbnNh
Y3Rpb24gaXMgY2xvc2VkIiB9KTsKKworICAgICAgICAgICAgcmVuYW1lSW5kZXgoKndlYWtUcmFu
c2FjdGlvbiwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleElkZW50aWZpZXIsIG5ld05hbWUs
IFdURk1vdmUoY2FsbGJhY2spLCBncmFudGVkKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBpZiAoIXNwYWNlQ2hlY2tSZXN1bHQudmFsdWUoKSkgewogICAgICAg
ICBjYWxsYmFjayhJREJFcnJvciB7IFF1b3RhRXhjZWVkZWRFcnJvciwgcXVvdGFFcnJvck1lc3Nh
Z2VOYW1lKCJSZW5hbWVJbmRleCIpIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAg
aWYgKCFtX2JhY2tpbmdTdG9yZSkKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsg
SW52YWxpZFN0YXRlRXJyb3IsICJCYWNraW5nIHN0b3JlIGlzIGNsb3NlZCIgfSk7CisKICAgICBh
dXRvKiBvYmplY3RTdG9yZUluZm8gPSBtX2RhdGFiYXNlSW5mby0+aW5mb0ZvckV4aXN0aW5nT2Jq
ZWN0U3RvcmUob2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKICAgICBpZiAoIW9iamVjdFN0b3JlSW5m
bykgewogICAgICAgICBjYWxsYmFjayhJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQg
dG8gcmVuYW1lIGluZGV4IGluIG5vbi1leGlzdGFudCBvYmplY3Qgc3RvcmUiX3MgfSk7CkBAIC02
OTQsNyArODMwLDYgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cmVuYW1lSW5kZXgoVW5pcXVl
SURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIHUKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CiAgICAgYXV0byBlcnJvciA9IG1f
YmFja2luZ1N0b3JlLT5yZW5hbWVJbmRleCh0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigp
LCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4SWRlbnRpZmllciwgbmV3TmFtZSk7CiAgICAg
aWYgKGVycm9yLmlzTnVsbCgpKQogICAgICAgICBpbmRleEluZm8tPnJlbmFtZShuZXdOYW1lKTsK
QEAgLTcwOSwxNyArODQ0LDE5IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnB1dE9yQWRkKGNv
bnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5CiAKICAgICBBU1NF
UlQobV9kYXRhYmFzZUluZm8pOwogCi0gICAgSURCS2V5RGF0YSB1c2VkS2V5OwotICAgIElEQkVy
cm9yIGVycm9yOworICAgIGlmICghbV9iYWNraW5nU3RvcmUpCisgICAgICAgIHJldHVybiBjYWxs
YmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiQmFja2luZyBzdG9yZSBpcyBjbG9z
ZWQiIH0sIGtleURhdGEpOwogCi0gICAgQVNTRVJUKG1fYmFja2luZ1N0b3JlKTsKICAgICBhdXRv
IG9iamVjdFN0b3JlSWRlbnRpZmllciA9IHJlcXVlc3REYXRhLm9iamVjdFN0b3JlSWRlbnRpZmll
cigpOwogICAgIGF1dG8qIG9iamVjdFN0b3JlSW5mbyA9IG1fYmFja2luZ1N0b3JlLT5pbmZvRm9y
T2JqZWN0U3RvcmUob2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKLSAgICBpZiAoIW9iamVjdFN0b3Jl
SW5mbykgewotICAgICAgICBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAi
T2JqZWN0IHN0b3JlIGNhbm5vdCBiZSBmb3VuZCBpbiB0aGUgYmFja2luZyBzdG9yZSJfcyB9LCB1
c2VkS2V5KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoIW9iamVjdFN0b3JlSW5m
bykKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3Is
ICJPYmplY3Qgc3RvcmUgY2Fubm90IGJlIGZvdW5kIGluIHRoZSBiYWNraW5nIHN0b3JlIl9zIH0s
IGtleURhdGEpOworCisgICAgaWYgKCFtX21hbmFnZXIpCisgICAgICAgIHJldHVybiBjYWxsYmFj
ayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yIH0sIGtleURhdGEpOwogCisgICAgSURCS2V5
RGF0YSB1c2VkS2V5OworICAgIElEQkVycm9yIGVycm9yOwogICAgIGJvb2wgdXNlZEtleUlzR2Vu
ZXJhdGVkID0gZmFsc2U7CiAgICAgdWludDY0X3Qga2V5TnVtYmVyOwogICAgIGF1dG8gdHJhbnNh
Y3Rpb25JZGVudGlmaWVyID0gcmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCk7CkBA
IC03MzAsNzYgKzg2NywxMDUgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cHV0T3JBZGQoY29u
c3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXkKIAogICAgIGlmIChv
YmplY3RTdG9yZUluZm8tPmF1dG9JbmNyZW1lbnQoKSAmJiAha2V5RGF0YS5pc1ZhbGlkKCkpIHsK
ICAgICAgICAgZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+Z2VuZXJhdGVLZXlOdW1iZXIodHJhbnNh
Y3Rpb25JZGVudGlmaWVyLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGtleU51bWJlcik7Ci0gICAg
ICAgIGlmICghZXJyb3IuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKGVycm9yLCB1
c2VkS2V5KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQorICAgICAgICBpZiAoIWVy
cm9yLmlzTnVsbCgpKQorICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGVycm9yLCB1c2VkS2V5
KTsKKwogICAgICAgICB1c2VkS2V5LnNldE51bWJlclZhbHVlKGtleU51bWJlcik7CiAgICAgICAg
IHVzZWRLZXlJc0dlbmVyYXRlZCA9IHRydWU7CiAgICAgfSBlbHNlCiAgICAgICAgIHVzZWRLZXkg
PSBrZXlEYXRhOwogCi0gICAgLy8gR2VuZXJhdGUgaW5kZXgga2V5cyB1cCBmcm9udCBmb3IgbW9y
ZSBhY2N1cmF0ZSBxdW90YSBjaGVjay4KLSAgICBJbmRleElEVG9JbmRleEtleU1hcCBpbmRleEtl
eXM7Ci0gICAgY2FsbE9uSURCU2VyaWFsaXphdGlvblRocmVhZEFuZFdhaXQoW29iamVjdFN0b3Jl
SW5mbyA9IG9iamVjdFN0b3JlSW5mby0+aXNvbGF0ZWRDb3B5KCksIGtleSA9IHVzZWRLZXkuaXNv
bGF0ZWRDb3B5KCksIHZhbHVlID0gdmFsdWUuaXNvbGF0ZWRDb3B5KCksICZpbmRleEtleXNdKGF1
dG8mIGdsb2JhbE9iamVjdCkgewotICAgICAgICBpbmRleEtleXMgPSBnZW5lcmF0ZUluZGV4S2V5
TWFwRm9yVmFsdWUoZ2xvYmFsT2JqZWN0LCBvYmplY3RTdG9yZUluZm8sIGtleSwgdmFsdWUpOwot
ICAgIH0pOwotCiAgICAgaWYgKG92ZXJ3cml0ZU1vZGUgPT0gSW5kZXhlZERCOjpPYmplY3RTdG9y
ZU92ZXJ3cml0ZU1vZGU6Ok5vT3ZlcndyaXRlKSB7CiAgICAgICAgIGJvb2wga2V5RXhpc3RzOwog
ICAgICAgICBlcnJvciA9IG1fYmFja2luZ1N0b3JlLT5rZXlFeGlzdHNJbk9iamVjdFN0b3JlKHRy
YW5zYWN0aW9uSWRlbnRpZmllciwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1c2VkS2V5LCBrZXlF
eGlzdHMpOwotICAgICAgICBpZiAoZXJyb3IuaXNOdWxsKCkgJiYga2V5RXhpc3RzKQorICAgICAg
ICBpZiAoIWVycm9yICYmIGtleUV4aXN0cykKICAgICAgICAgICAgIGVycm9yID0gSURCRXJyb3Ig
eyBDb25zdHJhaW50RXJyb3IsICJLZXkgYWxyZWFkeSBleGlzdHMgaW4gdGhlIG9iamVjdCBzdG9y
ZSJfcyB9OwogCi0gICAgICAgIGlmICghZXJyb3IuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgIGNh
bGxiYWNrKGVycm9yLCB1c2VkS2V5KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQor
ICAgICAgICBpZiAoISFlcnJvcikKKyAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhlcnJvciwg
dXNlZEtleSk7CiAgICAgfQogCi0gICAgLy8gUXVvdGEgY2hlY2suCisgICAgLy8gR2VuZXJhdGUg
aW5kZXgga2V5cyB1cCBmcm9udCBmb3IgbW9yZSBhY2N1cmF0ZSBxdW90YSBjaGVjay4KKyAgICBJ
bmRleElEVG9JbmRleEtleU1hcCBpbmRleEtleXM7CisgICAgY2FsbE9uSURCU2VyaWFsaXphdGlv
blRocmVhZEFuZFdhaXQoW29iamVjdFN0b3JlSW5mbyA9IG9iamVjdFN0b3JlSW5mby0+aXNvbGF0
ZWRDb3B5KCksIGtleSA9IHVzZWRLZXkuaXNvbGF0ZWRDb3B5KCksIHZhbHVlID0gdmFsdWUuaXNv
bGF0ZWRDb3B5KCksICZpbmRleEtleXNdKGF1dG8mIGdsb2JhbE9iamVjdCkgeworICAgICAgICBp
bmRleEtleXMgPSBnZW5lcmF0ZUluZGV4S2V5TWFwRm9yVmFsdWUoZ2xvYmFsT2JqZWN0LCBvYmpl
Y3RTdG9yZUluZm8sIGtleSwgdmFsdWUpOworICAgIH0pOworCisgICAgZ2VuZXJhdGVkS2V5UmVz
ZXR0ZXIucmVsZWFzZSgpOwogICAgIGF1dG8ga2V5U2l6ZSA9IGVzdGltYXRlU2l6ZSh1c2VkS2V5
KTsKICAgICBhdXRvIHZhbHVlU2l6ZSA9IGVzdGltYXRlU2l6ZSh2YWx1ZSk7CiAgICAgYXV0byBp
bmRleFNpemUgPSBlc3RpbWF0ZVNpemUoKm9iamVjdFN0b3JlSW5mbywgaW5kZXhLZXlzLCBrZXlT
aXplKTsKICAgICBhdXRvIHRhc2tTaXplID0gZGVmYXVsdFdyaXRlT3BlcmF0aW9uQ29zdCArIGtl
eVNpemUgKyB2YWx1ZVNpemUgKyBpbmRleFNpemU7CiAKICAgICBMT0coSW5kZXhlZERCLCAiVW5p
cXVlSURCRGF0YWJhc2U6OnB1dE9yQWRkIHF1b3RhIGNoZWNrIHdpdGggdGFzayBzaXplOiAlIiBQ
Ukl1NjQgIiBrZXkgc2l6ZTogJSIgUFJJdTY0ICIgdmFsdWUgc2l6ZTogJSIgUFJJdTY0ICIgaW5k
ZXggc2l6ZTogJSIgUFJJdTY0LCB0YXNrU2l6ZSwga2V5U2l6ZSwgdmFsdWVTaXplLCBpbmRleFNp
emUpOworICAgIG1fbWFuYWdlci0+cmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwg
dGFza1NpemUsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCByZXF1ZXN0RGF0
YSwgdXNlZEtleSwgdmFsdWUsIG92ZXJ3cml0ZU1vZGUsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayksIHVzZWRLZXlJc0dlbmVyYXRlZCwgaW5kZXhLZXlzLCBvYmplY3RTdG9yZUluZm8gPSAq
b2JqZWN0U3RvcmVJbmZvXShib29sIGdyYW50ZWQpIG11dGFibGUgeworICAgICAgICBpZiAoIXdl
YWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0
YXRlRXJyb3IsICJEYXRhYmFzZSBpcyBjbG9zZWQiIH0sIHVzZWRLZXkpOwogCi0gICAgaWYgKG1f
c2VydmVyLnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIHRhc2tTaXplKSA9PSBT
dG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbjo6RGVueSkgewotICAgICAgICBjYWxsYmFjayhJ
REJFcnJvciB7IFF1b3RhRXhjZWVkZWRFcnJvciwgcXVvdGFFcnJvck1lc3NhZ2VOYW1lKCJQdXRP
ckFkZCIpIH0sIHVzZWRLZXkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgICAgICBwdXRP
ckFkZEFmdGVyU3BhY2VDaGVjayhyZXF1ZXN0RGF0YSwgdXNlZEtleSwgdmFsdWUsIG92ZXJ3cml0
ZU1vZGUsIFdURk1vdmUoY2FsbGJhY2spLCB1c2VkS2V5SXNHZW5lcmF0ZWQsIGluZGV4S2V5cywg
b2JqZWN0U3RvcmVJbmZvLCBncmFudGVkKTsKKyAgICB9KTsKK30KKwordm9pZCBVbmlxdWVJREJE
YXRhYmFzZTo6cHV0T3JBZGRBZnRlclNwYWNlQ2hlY2soY29uc3QgSURCUmVxdWVzdERhdGEmIHJl
cXVlc3REYXRhLCBjb25zdCBJREJLZXlEYXRhJiBrZXlEYXRhLCBjb25zdCBJREJWYWx1ZSYgdmFs
dWUsIEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlIG92ZXJ3cml0ZU1vZGUsIEtl
eURhdGFDYWxsYmFjayBjYWxsYmFjaywgYm9vbCBpc0tleUdlbmVyYXRlZCwgY29uc3QgSW5kZXhJ
RFRvSW5kZXhLZXlNYXAmIGluZGV4S2V5cywgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiBvYmpl
Y3RTdG9yZUluZm8sIFNwYWNlQ2hlY2tSZXN1bHQgc3BhY2VDaGVja1Jlc3VsdCkKK3sKKyAgICBB
U1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9kYXRhYmFzZUluZm8pOworCisg
ICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9y
IHsgSW52YWxpZFN0YXRlRXJyb3IsICJCYWNraW5nIHN0b3JlIGlzIGNsb3NlZCIgfSwga2V5RGF0
YSk7CisKKyAgICB1aW50NjRfdCBrZXlOdW1iZXIgPSBpc0tleUdlbmVyYXRlZCA/IGtleURhdGEu
bnVtYmVyKCkgOiAwOworICAgIGF1dG8gb2JqZWN0U3RvcmVJZGVudGlmaWVyID0gb2JqZWN0U3Rv
cmVJbmZvLmlkZW50aWZpZXIoKTsKKyAgICBhdXRvIHRyYW5zYWN0aW9uSWRlbnRpZmllciA9IHJl
cXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpOworICAgIGF1dG8gZ2VuZXJhdGVkS2V5
UmVzZXR0ZXIgPSBtYWtlU2NvcGVFeGl0KFt0aGlzLCB0cmFuc2FjdGlvbklkZW50aWZpZXIsIG9i
amVjdFN0b3JlSWRlbnRpZmllciwgJmtleU51bWJlciwgJmlzS2V5R2VuZXJhdGVkXSgpIHsKKyAg
ICAgICAgaWYgKGlzS2V5R2VuZXJhdGVkKQorICAgICAgICAgICAgbV9iYWNraW5nU3RvcmUtPnJl
dmVydEdlbmVyYXRlZEtleU51bWJlcih0cmFuc2FjdGlvbklkZW50aWZpZXIsIG9iamVjdFN0b3Jl
SWRlbnRpZmllciwga2V5TnVtYmVyKTsKKyAgICB9KTsKIAorICAgIGlmICghc3BhY2VDaGVja1Jl
c3VsdCB8fCAhc3BhY2VDaGVja1Jlc3VsdC52YWx1ZSgpKQorICAgICAgICByZXR1cm4gY2FsbGJh
Y2soSURCRXJyb3IgeyBRdW90YUV4Y2VlZGVkRXJyb3IsIHF1b3RhRXJyb3JNZXNzYWdlTmFtZSgi
UHV0T3JBZGQiKSB9LCBrZXlEYXRhKTsKICAgICAvLyBJZiBhIHJlY29yZCBhbHJlYWR5IGV4aXN0
cyBpbiBzdG9yZSwgdGhlbiByZW1vdmUgdGhlIHJlY29yZCBmcm9tIHN0b3JlIHVzaW5nIHRoZSBz
dGVwcyBmb3IgZGVsZXRpbmcgcmVjb3JkcyBmcm9tIGFuIG9iamVjdCBzdG9yZS4KLSAgICAvLyBU
aGlzIGlzIGltcG9ydGFudCBiZWNhdXNlIGZvcm1hbGx5IGRlbGV0aW5nIGl0IGZyb20gZnJvbSB0
aGUgb2JqZWN0IHN0b3JlIGFsc28gcmVtb3ZlcyBpdCBmcm9tIHRoZSBhcHByb3ByaWF0ZSBpbmRl
eGVzLgotICAgIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPmRlbGV0ZVJhbmdlKHRyYW5zYWN0aW9u
SWRlbnRpZmllciwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1c2VkS2V5KTsKLSAgICBpZiAoIWVy
cm9yLmlzTnVsbCgpKSB7Ci0gICAgICAgIGNhbGxiYWNrKGVycm9yLCB1c2VkS2V5KTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KKyAgICAvLyBUaGlzIGlzIGltcG9ydGFudCBiZWNhdXNlIGZvcm1h
bGx5IGRlbGV0aW5nIGl0IGZyb20gdGhlIG9iamVjdCBzdG9yZSBhbHNvIHJlbW92ZXMgaXQgZnJv
bSB0aGUgYXBwcm9wcmlhdGUgaW5kZXhlcy4KKyAgICBJREJFcnJvciBlcnJvciA9IG1fYmFja2lu
Z1N0b3JlLT5kZWxldGVSYW5nZSh0cmFuc2FjdGlvbklkZW50aWZpZXIsIG9iamVjdFN0b3JlSWRl
bnRpZmllciwga2V5RGF0YSk7CisgICAgaWYgKCFlcnJvci5pc051bGwoKSkKKyAgICAgICAgcmV0
dXJuIGNhbGxiYWNrKGVycm9yLCBrZXlEYXRhKTsKIAotICAgIGVycm9yID0gbV9iYWNraW5nU3Rv
cmUtPmFkZFJlY29yZCh0cmFuc2FjdGlvbklkZW50aWZpZXIsICpvYmplY3RTdG9yZUluZm8sIHVz
ZWRLZXksIGluZGV4S2V5cywgdmFsdWUpOwotICAgIGlmICghZXJyb3IuaXNOdWxsKCkpIHsKLSAg
ICAgICAgY2FsbGJhY2soZXJyb3IsIHVzZWRLZXkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQor
ICAgIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPmFkZFJlY29yZCh0cmFuc2FjdGlvbklkZW50aWZp
ZXIsIG9iamVjdFN0b3JlSW5mbywga2V5RGF0YSwgaW5kZXhLZXlzLCB2YWx1ZSk7CisgICAgaWYg
KCFlcnJvci5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGVycm9yLCBrZXlEYXRh
KTsKIAotICAgIGlmIChvdmVyd3JpdGVNb2RlICE9IEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVy
d3JpdGVNb2RlOjpPdmVyd3JpdGVGb3JDdXJzb3IgJiYgb2JqZWN0U3RvcmVJbmZvLT5hdXRvSW5j
cmVtZW50KCkgJiYga2V5RGF0YS50eXBlKCkgPT0gSW5kZXhlZERCOjpLZXlUeXBlOjpOdW1iZXIp
CisgICAgaWYgKG92ZXJ3cml0ZU1vZGUgIT0gSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0
ZU1vZGU6Ok92ZXJ3cml0ZUZvckN1cnNvciAmJiBvYmplY3RTdG9yZUluZm8uYXV0b0luY3JlbWVu
dCgpICYmIGtleURhdGEudHlwZSgpID09IEluZGV4ZWREQjo6S2V5VHlwZTo6TnVtYmVyKQogICAg
ICAgICBlcnJvciA9IG1fYmFja2luZ1N0b3JlLT5tYXliZVVwZGF0ZUtleUdlbmVyYXRvck51bWJl
cih0cmFuc2FjdGlvbklkZW50aWZpZXIsIG9iamVjdFN0b3JlSWRlbnRpZmllciwga2V5RGF0YS5u
dW1iZXIoKSk7CiAKICAgICBnZW5lcmF0ZWRLZXlSZXNldHRlci5yZWxlYXNlKCk7Ci0gICAgY2Fs
bGJhY2soZXJyb3IsIHVzZWRLZXkpOworICAgIGNhbGxiYWNrKGVycm9yLCBrZXlEYXRhKTsKIH0K
IAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Z2V0UmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRh
JiByZXF1ZXN0RGF0YSwgY29uc3QgSURCR2V0UmVjb3JkRGF0YSYgZ2V0UmVjb3JkRGF0YSwgR2V0
UmVzdWx0Q2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRSZWNv
cmQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJHZXRSZWNvcmRE
YXRhJiBnZXRSZWNvcmREYXRhLCBHZXRSZXN1bHRDYWxsYmFjayBjYWxsYmFjaywgU3BhY2VDaGVj
a1Jlc3VsdCBzcGFjZUNoZWNrUmVzdWx0KQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkp
OwogICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6Z2V0UmVjb3JkIik7CiAK
KyAgICBpZiAoIXNwYWNlQ2hlY2tSZXN1bHQpIHsKKyAgICAgICAgaWYgKCFtX21hbmFnZXIpCisg
ICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciB9
LCBJREJHZXRSZXN1bHQgeyB9KTsKKworICAgICAgICBtX21hbmFnZXItPnJlcXVlc3RTcGFjZSht
X2lkZW50aWZpZXIub3JpZ2luKCksIDAsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhp
cyB9LCByZXF1ZXN0RGF0YSwgZ2V0UmVjb3JkRGF0YSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKV0oYm9vbCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMp
CisgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRl
RXJyb3IsICJEYXRhYmFzZSBpcyBjbG9zZWQiIH0sIElEQkdldFJlc3VsdCB7IH0pOworCisgICAg
ICAgICAgICBnZXRSZWNvcmQocmVxdWVzdERhdGEsIGdldFJlY29yZERhdGEsIFdURk1vdmUoY2Fs
bGJhY2spLCBncmFudGVkKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBBU1NFUlQoc3BhY2VDaGVja1Jlc3VsdC52YWx1ZSgpKTsKKyAgICBpZiAoIW1fYmFja2lu
Z1N0b3JlKQorICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVF
cnJvciwgIkJhY2tpbmcgc3RvcmUgaXMgY2xvc2VkIiB9LCBJREJHZXRSZXN1bHQgeyB9KTsKKwog
ICAgIElEQkdldFJlc3VsdCByZXN1bHQ7CiAgICAgSURCRXJyb3IgZXJyb3I7CiAKLSAgICBBU1NF
UlQobV9iYWNraW5nU3RvcmUpOwogICAgIGlmICh1aW50NjRfdCBpbmRleElkZW50aWZpZXIgPSBy
ZXF1ZXN0RGF0YS5pbmRleElkZW50aWZpZXIoKSkKICAgICAgICAgZXJyb3IgPSBtX2JhY2tpbmdT
dG9yZS0+Z2V0SW5kZXhSZWNvcmQocmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCks
IHJlcXVlc3REYXRhLm9iamVjdFN0b3JlSWRlbnRpZmllcigpLCBpbmRleElkZW50aWZpZXIsIHJl
cXVlc3REYXRhLmluZGV4UmVjb3JkVHlwZSgpLCBnZXRSZWNvcmREYXRhLmtleVJhbmdlRGF0YSwg
cmVzdWx0KTsKICAgICBlbHNlCkBAIC04MDgsNDcgKzk3NCwxMTAgQEAgdm9pZCBVbmlxdWVJREJE
YXRhYmFzZTo6Z2V0UmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29u
c3QgSURCR2UKICAgICBjYWxsYmFjayhlcnJvciwgcmVzdWx0KTsKIH0KIAotdm9pZCBVbmlxdWVJ
REJEYXRhYmFzZTo6Z2V0QWxsUmVjb3Jkcyhjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERh
dGEsIGNvbnN0IElEQkdldEFsbFJlY29yZHNEYXRhJiBnZXRBbGxSZWNvcmRzRGF0YSwgR2V0QWxs
UmVzdWx0c0NhbGxiYWNrIGNhbGxiYWNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Z2V0QWxs
UmVjb3Jkcyhjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkdldEFs
bFJlY29yZHNEYXRhJiBnZXRBbGxSZWNvcmRzRGF0YSwgR2V0QWxsUmVzdWx0c0NhbGxiYWNrIGNh
bGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0IHNwYWNlQ2hlY2tSZXN1bHQpCiB7CiAgICAgQVNTRVJU
KCFpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNl
OjpnZXRBbGxSZWNvcmRzIik7CiAKLSAgICBBU1NFUlQobV9iYWNraW5nU3RvcmUpOworICAgIGlm
ICghc3BhY2VDaGVja1Jlc3VsdCkgeworICAgICAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAgICAg
ICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yIH0sIElEQkdl
dEFsbFJlc3VsdCB7IH0pOworCisgICAgICAgIG1fbWFuYWdlci0+cmVxdWVzdFNwYWNlKG1faWRl
bnRpZmllci5vcmlnaW4oKSwgMCwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0s
IHJlcXVlc3REYXRhLCBnZXRBbGxSZWNvcmRzRGF0YSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKV0oYm9vbCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMp
CisgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRl
RXJyb3IsICJEYXRhYmFzZSBpcyBjbG9zZWQiIH0sIElEQkdldEFsbFJlc3VsdCB7IH0pOworCisg
ICAgICAgICAgICBnZXRBbGxSZWNvcmRzKHJlcXVlc3REYXRhLCBnZXRBbGxSZWNvcmRzRGF0YSwg
V1RGTW92ZShjYWxsYmFjayksIGdyYW50ZWQpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIEFTU0VSVChzcGFjZUNoZWNrUmVzdWx0LnZhbHVlKCkpOworICAgIGlm
ICghbV9iYWNraW5nU3RvcmUpCisgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IElu
dmFsaWRTdGF0ZUVycm9yLCAiQmFja2luZyBzdG9yZSBpcyBjbG9zZWQiIH0sIElEQkdldEFsbFJl
c3VsdCB7IH0pOworCiAgICAgSURCR2V0QWxsUmVzdWx0IHJlc3VsdDsKICAgICBhdXRvIGVycm9y
ID0gbV9iYWNraW5nU3RvcmUtPmdldEFsbFJlY29yZHMocmVxdWVzdERhdGEudHJhbnNhY3Rpb25J
ZGVudGlmaWVyKCksIGdldEFsbFJlY29yZHNEYXRhLCByZXN1bHQpOwogCiAgICAgY2FsbGJhY2so
ZXJyb3IsIHJlc3VsdCk7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmdldENvdW50KGNv
bnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBy
YW5nZSwgQ291bnRDYWxsYmFjayBjYWxsYmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6Omdl
dENvdW50KGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5UmFu
Z2VEYXRhJiByYW5nZSwgQ291bnRDYWxsYmFjayBjYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCBz
cGFjZUNoZWNrUmVzdWx0KQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIExP
RyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6Z2V0Q291bnQiKTsKIAotICAgIEFTU0VS
VChtX2JhY2tpbmdTdG9yZSk7CisgICAgaWYgKCFzcGFjZUNoZWNrUmVzdWx0KSB7CisgICAgICAg
IGlmICghbV9tYW5hZ2VyKQorICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsg
SW52YWxpZFN0YXRlRXJyb3IgfSwgMCk7CisKKyAgICAgICAgbV9tYW5hZ2VyLT5yZXF1ZXN0U3Bh
Y2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCAwLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsg
KnRoaXMgfSwgcmVxdWVzdERhdGEsIHJhbmdlLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
XShib29sIGdyYW50ZWQpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAg
ICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJv
ciwgIkRhdGFiYXNlIGlzIGNsb3NlZCIgfSwgMCk7CisKKyAgICAgICAgICAgIGdldENvdW50KHJl
cXVlc3REYXRhLCByYW5nZSwgV1RGTW92ZShjYWxsYmFjayksIGdyYW50ZWQpOworICAgICAgICB9
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChzcGFjZUNoZWNrUmVzdWx0
LnZhbHVlKCkpOworICAgIGlmICghbV9iYWNraW5nU3RvcmUpCisgICAgICAgIHJldHVybiBjYWxs
YmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiQmFja2luZyBzdG9yZSBpcyBjbG9z
ZWQiIH0sIDApOworCiAgICAgdWludDY0X3QgY291bnQgPSAwOwogICAgIGF1dG8gZXJyb3IgPSBt
X2JhY2tpbmdTdG9yZS0+Z2V0Q291bnQocmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVy
KCksIHJlcXVlc3REYXRhLm9iamVjdFN0b3JlSWRlbnRpZmllcigpLCByZXF1ZXN0RGF0YS5pbmRl
eElkZW50aWZpZXIoKSwgcmFuZ2UsIGNvdW50KTsKIAogICAgIGNhbGxiYWNrKGVycm9yLCBjb3Vu
dCk7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZVJlY29yZChjb25zdCBJREJS
ZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQktleVJhbmdlRGF0YSYga2V5UmFuZ2VE
YXRhLCBFcnJvckNhbGxiYWNrIGNhbGxiYWNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVs
ZXRlUmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5
UmFuZ2VEYXRhJiBrZXlSYW5nZURhdGEsIEVycm9yQ2FsbGJhY2sgY2FsbGJhY2ssIFNwYWNlQ2hl
Y2tSZXN1bHQgc3BhY2VDaGVja1Jlc3VsdCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgp
KTsKICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZVJlY29yZCIp
OwogCi0gICAgQVNTRVJUKG1fYmFja2luZ1N0b3JlKTsKKyAgICBpZiAoIXNwYWNlQ2hlY2tSZXN1
bHQpIHsKKyAgICAgICAgaWYgKCFtX21hbmFnZXIpCisgICAgICAgICAgICByZXR1cm4gY2FsbGJh
Y2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciB9KTsKKworICAgICAgICBtX21hbmFnZXIt
PnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIDAsIFt0aGlzLCB3ZWFrVGhpcyA9
IFdlYWtQdHIgeyAqdGhpcyB9LCByZXF1ZXN0RGF0YSwga2V5UmFuZ2VEYXRhLCBjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spXShib29sIGdyYW50ZWQpIG11dGFibGUgeworICAgICAgICAgICAg
aWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3Ig
eyBJbnZhbGlkU3RhdGVFcnJvciwgIkRhdGFiYXNlIGlzIGNsb3NlZCIgfSk7CisKKyAgICAgICAg
ICAgIGRlbGV0ZVJlY29yZChyZXF1ZXN0RGF0YSwga2V5UmFuZ2VEYXRhLCBXVEZNb3ZlKGNhbGxi
YWNrKSwgZ3JhbnRlZCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgQVNTRVJUKHNwYWNlQ2hlY2tSZXN1bHQudmFsdWUoKSk7CisgICAgaWYgKCFtX2JhY2tpbmdT
dG9yZSkKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJy
b3IsICJCYWNraW5nIHN0b3JlIGlzIGNsb3NlZCIgfSk7CisKICAgICBhdXRvIGVycm9yID0gbV9i
YWNraW5nU3RvcmUtPmRlbGV0ZVJhbmdlKHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmll
cigpLCByZXF1ZXN0RGF0YS5vYmplY3RTdG9yZUlkZW50aWZpZXIoKSwga2V5UmFuZ2VEYXRhKTsK
IAogICAgIGNhbGxiYWNrKGVycm9yKTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6b3Bl
bkN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkN1cnNv
ckluZm8mIGluZm8sIEdldFJlc3VsdENhbGxiYWNrIGNhbGxiYWNrKQordm9pZCBVbmlxdWVJREJE
YXRhYmFzZTo6b3BlbkN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNv
bnN0IElEQkN1cnNvckluZm8mIGluZm8sIEdldFJlc3VsdENhbGxiYWNrIGNhbGxiYWNrLCBTcGFj
ZUNoZWNrUmVzdWx0IHNwYWNlQ2hlY2tSZXN1bHQpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJl
YWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuQ3Vyc29y
Iik7CiAKLSAgICBBU1NFUlQobV9iYWNraW5nU3RvcmUpOworICAgIGlmICghc3BhY2VDaGVja1Jl
c3VsdCkgeworICAgICAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAgICAgICAgIHJldHVybiBjYWxs
YmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yIH0sIElEQkdldFJlc3VsdCB7IH0pOwor
CisgICAgICAgIG1fbWFuYWdlci0+cmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwg
MCwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHJlcXVlc3REYXRhLCBpbmZv
LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIGdyYW50ZWQpIG11dGFibGUgewor
ICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJh
Y2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkRhdGFiYXNlIG9yIHRyYW5zYWN0aW9u
IGlzIGNsb3NlZCIgfSwgSURCR2V0UmVzdWx0IHsgfSk7CisKKyAgICAgICAgICAgIG9wZW5DdXJz
b3IocmVxdWVzdERhdGEsIGluZm8sIFdURk1vdmUoY2FsbGJhY2spLCBncmFudGVkKTsKKyAgICAg
ICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQoc3BhY2VDaGVja1Jl
c3VsdC52YWx1ZSgpKTsKKyAgICBpZiAoIW1fYmFja2luZ1N0b3JlKQorICAgICAgICByZXR1cm4g
Y2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkJhY2tpbmcgc3RvcmUgaXMg
Y2xvc2VkIiB9LCBJREJHZXRSZXN1bHQgeyB9KTsKIAogICAgIElEQkdldFJlc3VsdCByZXN1bHQ7
CiAgICAgYXV0byBlcnJvciA9IG1fYmFja2luZ1N0b3JlLT5vcGVuQ3Vyc29yKHJlcXVlc3REYXRh
LnRyYW5zYWN0aW9uSWRlbnRpZmllcigpLCBpbmZvLCByZXN1bHQpOwpAQCAtODU2LDEyICsxMDg1
LDI3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6Om9wZW5DdXJzb3IoY29uc3QgSURCUmVxdWVz
dERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJDCiAgICAgY2FsbGJhY2soZXJyb3IsIHJlc3Vs
dCk7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6Oml0ZXJhdGVDdXJzb3IoY29uc3QgSURC
UmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJJdGVyYXRlQ3Vyc29yRGF0YSYgZGF0
YSwgR2V0UmVzdWx0Q2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpp
dGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURC
SXRlcmF0ZUN1cnNvckRhdGEmIGRhdGEsIEdldFJlc3VsdENhbGxiYWNrIGNhbGxiYWNrLCBTcGFj
ZUNoZWNrUmVzdWx0IHNwYWNlQ2hlY2tSZXN1bHQpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJl
YWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjppdGVyYXRlQ3Vy
c29yIik7CiAKLSAgICBBU1NFUlQobV9iYWNraW5nU3RvcmUpOworICAgIGlmICghc3BhY2VDaGVj
a1Jlc3VsdCkgeworICAgICAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAgICAgICAgIHJldHVybiBj
YWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yIH0sIElEQkdldFJlc3VsdCB7IH0p
OworCisgICAgICAgIG1fbWFuYWdlci0+cmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4o
KSwgMCwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHJlcXVlc3REYXRhLCBk
YXRhLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIGdyYW50ZWQpIG11dGFibGUg
eworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICByZXR1cm4gY2Fs
bGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkRhdGFiYXNlIG9yIHRyYW5zYWN0
aW9uIGlzIGNsb3NlZCIgfSwgSURCR2V0UmVzdWx0IHsgfSk7CisKKyAgICAgICAgICAgIGl0ZXJh
dGVDdXJzb3IocmVxdWVzdERhdGEsIGRhdGEsIFdURk1vdmUoY2FsbGJhY2spLCBncmFudGVkKTsK
KyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQoc3BhY2VD
aGVja1Jlc3VsdC52YWx1ZSgpKTsKKyAgICBpZiAoIW1fYmFja2luZ1N0b3JlKQorICAgICAgICBy
ZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkJhY2tpbmcgc3Rv
cmUgaXMgY2xvc2VkIiB9LCBJREJHZXRSZXN1bHQgeyB9KTsKIAogICAgIElEQkdldFJlc3VsdCBy
ZXN1bHQ7CiAgICAgYXV0byB0cmFuc2FjdGlvbklkZW50aWZpZXIgPSByZXF1ZXN0RGF0YS50cmFu
c2FjdGlvbklkZW50aWZpZXIoKTsKQEAgLTg3MSwxMyArMTExNSwzMCBAQCB2b2lkIFVuaXF1ZUlE
QkRhdGFiYXNlOjppdGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0
YSwgY29uc3QgSQogICAgIGNhbGxiYWNrKGVycm9yLCByZXN1bHQpOwogfQogCi12b2lkIFVuaXF1
ZUlEQkRhdGFiYXNlOjpjb21taXRUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0
aW9uJiB0cmFuc2FjdGlvbiwgRXJyb3JDYWxsYmFjayBjYWxsYmFjaykKK3ZvaWQgVW5pcXVlSURC
RGF0YWJhc2U6OmNvbW1pdFRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24m
IHRyYW5zYWN0aW9uLCBFcnJvckNhbGxiYWNrIGNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0IHNw
YWNlQ2hlY2tSZXN1bHQpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgTE9H
KEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpjb21taXRUcmFuc2FjdGlvbiAtICVzIiwg
dHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7CiAKKyAgICBpZiAoIXNwYWNlQ2hlY2tSZXN1bHQpIHsKKyAgICAgICAgaWYgKCFtX21h
bmFnZXIpCisgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3Rh
dGVFcnJvciB9KTsKKworICAgICAgICBtX21hbmFnZXItPnJlcXVlc3RTcGFjZShtX2lkZW50aWZp
ZXIub3JpZ2luKCksIDAsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCB3ZWFr
VHJhbnNhY3Rpb24gPSBXZWFrUHRyIHsgdHJhbnNhY3Rpb24gfSwgY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKV0oYm9vbCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghd2Vh
a1RoaXMgfHwgIXdlYWtUcmFuc2FjdGlvbikKKyAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJh
Y2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkRhdGFiYXNlIG9yIHRyYW5zYWN0aW9u
IGlzIGNsb3NlZCIgfSk7CisKKyAgICAgICAgICAgIGNvbW1pdFRyYW5zYWN0aW9uKCp3ZWFrVHJh
bnNhY3Rpb24sIFdURk1vdmUoY2FsbGJhY2spLCBncmFudGVkKTsKKyAgICAgICAgfSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQoc3BhY2VDaGVja1Jlc3VsdC52YWx1ZSgp
KTsKICAgICBBU1NFUlQodHJhbnNhY3Rpb24uZGF0YWJhc2VDb25uZWN0aW9uKCkuZGF0YWJhc2Uo
KSA9PSB0aGlzKTsKLSAgICBBU1NFUlQobV9iYWNraW5nU3RvcmUpOworCisgICAgaWYgKCFtX2Jh
Y2tpbmdTdG9yZSkKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0
YXRlRXJyb3IsICJCYWNraW5nIHN0b3JlIGlzIGNsb3NlZCIgfSk7CisKICAgICBhdXRvIHRha2Vu
VHJhbnNhY3Rpb24gPSBtX2luUHJvZ3Jlc3NUcmFuc2FjdGlvbnMudGFrZSh0cmFuc2FjdGlvbi5p
bmZvKCkuaWRlbnRpZmllcigpKTsKICAgICBpZiAoIXRha2VuVHJhbnNhY3Rpb24pIHsKICAgICAg
ICAgaWYgKCFtX29wZW5EYXRhYmFzZUNvbm5lY3Rpb25zLmNvbnRhaW5zKCZ0cmFuc2FjdGlvbi5k
YXRhYmFzZUNvbm5lY3Rpb24oKSkpCkBAIC04OTMsMTEgKzExNTQsMjUgQEAgdm9pZCBVbmlxdWVJ
REJEYXRhYmFzZTo6Y29tbWl0VHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlv
biYgdHJhbnNhY3QKICAgICB0cmFuc2FjdGlvbkNvbXBsZXRlZChXVEZNb3ZlKHRha2VuVHJhbnNh
Y3Rpb24pKTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6YWJvcnRUcmFuc2FjdGlvbihV
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgRXJyb3JDYWxsYmFjayBj
YWxsYmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmFib3J0VHJhbnNhY3Rpb24oVW5pcXVl
SURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIEVycm9yQ2FsbGJhY2sgY2FsbGJh
Y2ssIFNwYWNlQ2hlY2tSZXN1bHQgc3BhY2VDaGVja1Jlc3VsdCkKIHsKICAgICBBU1NFUlQoIWlz
TWFpblRocmVhZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6OmFi
b3J0VHJhbnNhY3Rpb24gLSAlcyIsIHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCkubG9n
Z2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCisgICAgaWYgKCFzcGFjZUNoZWNrUmVzdWx0
KSB7CisgICAgICAgIGlmICghbV9tYW5hZ2VyKQorICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNr
KElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7CisKKyAgICAgICAgbV9tYW5hZ2VyLT5y
ZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCAwLCBbdGhpcywgd2Vha1RoaXMgPSBX
ZWFrUHRyIHsgKnRoaXMgfSwgd2Vha1RyYW5zYWN0aW9uID0gV2Vha1B0ciB7IHRyYW5zYWN0aW9u
IH0sIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgZ3JhbnRlZCkgbXV0YWJsZSB7
CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICF3ZWFrVHJhbnNhY3Rpb24pCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJE
YXRhYmFzZSBvciB0cmFuc2FjdGlvbiBpcyBjbG9zZWQiIH0pOworCisgICAgICAgICAgICBhYm9y
dFRyYW5zYWN0aW9uKCp3ZWFrVHJhbnNhY3Rpb24sIFdURk1vdmUoY2FsbGJhY2spLCBncmFudGVk
KTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQoc3Bh
Y2VDaGVja1Jlc3VsdC52YWx1ZSgpKTsKICAgICBBU1NFUlQodHJhbnNhY3Rpb24uZGF0YWJhc2VD
b25uZWN0aW9uKCkuZGF0YWJhc2UoKSA9PSB0aGlzKTsKIAogICAgIGF1dG8gdGFrZW5UcmFuc2Fj
dGlvbiA9IG1faW5Qcm9ncmVzc1RyYW5zYWN0aW9ucy50YWtlKHRyYW5zYWN0aW9uLmluZm8oKS5p
ZGVudGlmaWVyKCkpOwpAQCAtOTI1LDcgKzEyMDAsMTEgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFz
ZTo6YWJvcnRUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2Fj
dGkKICAgICAgICAgbV9kYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4o
Km1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uLT5vcmlnaW5hbERhdGFiYXNlSW5mbygpKTsKICAg
ICB9CiAKLSAgICBhdXRvIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPmFib3J0VHJhbnNhY3Rpb24o
dHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKKyAgICBJREJFcnJvciBlcnJvcjsKKyAgICBpZiAoIW1f
YmFja2luZ1N0b3JlKQorICAgICAgICBlcnJvciA9IElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJy
b3IsICJCYWNraW5nIHN0b3JlIGlzIGNsb3NlZCIgfTsKKyAgICBlbHNlCisgICAgICAgIGVycm9y
ID0gbV9iYWNraW5nU3RvcmUtPmFib3J0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZGVudGlmaWVy
KTsKIAogICAgIGNhbGxiYWNrKGVycm9yKTsKICAgICB0cmFuc2FjdGlvbkNvbXBsZXRlZChXVEZN
b3ZlKHRha2VuVHJhbnNhY3Rpb24pKTsKQEAgLTEyMDQsNiArMTQ4MywxMiBAQCB2b2lkIFVuaXF1
ZUlEQkRhdGFiYXNlOjphYm9ydEFjdGl2ZVRyYW5zYWN0aW9ucygpCiAgICAgfQogfQogCit2b2lk
IFVuaXF1ZUlEQkRhdGFiYXNlOjphYm9ydEluUHJvZ3Jlc3NUcmFuc2FjdGlvbnMoKQoreworICAg
IGZvciAoYXV0byYgaWRlbnRpZmllciA6IGNvcHlUb1ZlY3RvcihtX2luUHJvZ3Jlc3NUcmFuc2Fj
dGlvbnMua2V5cygpKSkKKyAgICAgICAgbV9pblByb2dyZXNzVHJhbnNhY3Rpb25zLmdldChpZGVu
dGlmaWVyKS0+YWJvcnRXaXRob3V0Q2FsbGJhY2soKTsKK30KKwogdm9pZCBVbmlxdWVJREJEYXRh
YmFzZTo6Y2xvc2UoKQogewogICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6
Y2xvc2UiKTsKQEAgLTEyMTMsNyArMTQ5OCw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNs
b3NlKCkKICAgICAgICAgbV9iYWNraW5nU3RvcmUgPSBudWxscHRyOwogICAgIH0KIH0KLQorICAg
IAogYm9vbCBVbmlxdWVJREJEYXRhYmFzZTo6dHJ5Q2xvc2UoKQogewogICAgIGlmIChtX2JhY2tp
bmdTdG9yZSAmJiBtX2JhY2tpbmdTdG9yZS0+aXNFcGhlbWVyYWwoKSkKQEAgLTEyMjUsNiArMTUx
MCwxMSBAQCBib29sIFVuaXF1ZUlEQkRhdGFiYXNlOjp0cnlDbG9zZSgpCiAgICAgY2xvc2UoKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KKyAgICAKK2Jvb2wgVW5pcXVlSURCRGF0YWJhc2U6Omhhc0Rh
dGFJbk1lbW9yeSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYmFja2luZ1N0b3JlID8gbV9iYWNr
aW5nU3RvcmUtPmlzRXBoZW1lcmFsKCkgOiBmYWxzZTsKK30KIAogUmVmUHRyPFNlcnZlck9wZW5E
QlJlcXVlc3Q+IFVuaXF1ZUlEQkRhdGFiYXNlOjp0YWtlTmV4dFJ1bm5hYmxlUmVxdWVzdChSZXF1
ZXN0VHlwZSByZXF1ZXN0VHlwZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmgKaW5kZXggYjJhNzQx
N2Y5YzgxOWNmYzI0MTQ2Y2U1ZmI1Y2Y1ZDI2MTI4NTA4MC4uYjA0ZDcxMzllZmRmMGRjNzk4ZjY1
OGNlNTIxNjk2YTBhNzZjZmVhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmgKQEAgLTU5LDggKzU5
LDggQEAgZW51bSBjbGFzcyBJbmRleFJlY29yZFR5cGUgOiBib29sOwogbmFtZXNwYWNlIElEQlNl
cnZlciB7CiAKIGNsYXNzIElEQkNvbm5lY3Rpb25Ub0NsaWVudDsKLWNsYXNzIElEQlNlcnZlcjsK
IGNsYXNzIFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbjsKK2NsYXNzIFVuaXF1ZUlEQkRhdGFi
YXNlTWFuYWdlcjsKIAogdHlwZWRlZiBGdW5jdGlvbjx2b2lkKGNvbnN0IElEQkVycm9yJik+IEVy
cm9yQ2FsbGJhY2s7CiB0eXBlZGVmIEZ1bmN0aW9uPHZvaWQoY29uc3QgSURCRXJyb3ImLCBjb25z
dCBJREJLZXlEYXRhJik+IEtleURhdGFDYWxsYmFjazsKQEAgLTcxLDU0ICs3MSw1OSBAQCB0eXBl
ZGVmIEZ1bmN0aW9uPHZvaWQoY29uc3QgSURCRXJyb3ImLCB1aW50NjRfdCk+IENvdW50Q2FsbGJh
Y2s7CiBjbGFzcyBVbmlxdWVJREJEYXRhYmFzZSA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxVbmlx
dWVJREJEYXRhYmFzZT4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgot
ICAgIFVuaXF1ZUlEQkRhdGFiYXNlKElEQlNlcnZlciYsIGNvbnN0IElEQkRhdGFiYXNlSWRlbnRp
ZmllciYpOworICAgIFdFQkNPUkVfRVhQT1JUIFVuaXF1ZUlEQkRhdGFiYXNlKFVuaXF1ZUlEQkRh
dGFiYXNlTWFuYWdlciYsIGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYpOwogICAgIFVuaXF1
ZUlEQkRhdGFiYXNlKFVuaXF1ZUlEQkRhdGFiYXNlJikgPSBkZWxldGU7CiAgICAgV0VCQ09SRV9F
WFBPUlQgflVuaXF1ZUlEQkRhdGFiYXNlKCk7CiAKLSAgICB2b2lkIG9wZW5EYXRhYmFzZUNvbm5l
Y3Rpb24oSURCQ29ubmVjdGlvblRvQ2xpZW50JiwgY29uc3QgSURCUmVxdWVzdERhdGEmKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIG9wZW5EYXRhYmFzZUNvbm5lY3Rpb24oSURCQ29ubmVjdGlv
blRvQ2xpZW50JiwgY29uc3QgSURCUmVxdWVzdERhdGEmKTsKIAogICAgIGNvbnN0IElEQkRhdGFi
YXNlSW5mbyYgaW5mbygpIGNvbnN0OwotICAgIElEQlNlcnZlciYgc2VydmVyKCkgeyByZXR1cm4g
bV9zZXJ2ZXI7IH0KKyAgICBVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIqIG1hbmFnZXIoKTsKICAg
ICBjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVy
biBtX2lkZW50aWZpZXI7IH0KIAotICAgIHZvaWQgY3JlYXRlT2JqZWN0U3RvcmUoVW5pcXVlSURC
RGF0YWJhc2VUcmFuc2FjdGlvbiYsIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYsIEVycm9yQ2Fs
bGJhY2spOwotICAgIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFu
c2FjdGlvbiYsIGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lLCBFcnJvckNhbGxiYWNrKTsK
LSAgICB2b2lkIHJlbmFtZU9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24m
LCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSwg
RXJyb3JDYWxsYmFjayk7Ci0gICAgdm9pZCBjbGVhck9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFi
YXNlVHJhbnNhY3Rpb24mLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIEVycm9yQ2Fs
bGJhY2spOwotICAgIHZvaWQgY3JlYXRlSW5kZXgoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlv
biYsIGNvbnN0IElEQkluZGV4SW5mbyYsIEVycm9yQ2FsbGJhY2spOwotICAgIHZvaWQgZGVsZXRl
SW5kZXgoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIHVpbnQ2NF90IG9iamVjdFN0b3Jl
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpbmRleE5hbWUsIEVycm9yQ2FsbGJhY2spOwotICAg
IHZvaWQgcmVuYW1lSW5kZXgoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIHVpbnQ2NF90
IG9iamVjdFN0b3JlSWRlbnRpZmllciwgdWludDY0X3QgaW5kZXhJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIG5ld05hbWUsIEVycm9yQ2FsbGJhY2spOworICAgIHVzaW5nIFNwYWNlQ2hlY2tSZXN1
bHQgPSBzdGQ6Om9wdGlvbmFsPGJvb2w+OworICAgIHZvaWQgY3JlYXRlT2JqZWN0U3RvcmUoVW5p
cXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYsIEVy
cm9yQ2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgPSBzdGQ6Om51bGxvcHQpOworICAgIHZvaWQg
ZGVsZXRlT2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIGNvbnN0IFN0
cmluZyYgb2JqZWN0U3RvcmVOYW1lLCBFcnJvckNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0ID0g
c3RkOjpudWxsb3B0KTsKKyAgICB2b2lkIHJlbmFtZU9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFi
YXNlVHJhbnNhY3Rpb24mLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgbmV3TmFtZSwgRXJyb3JDYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCA9IHN0ZDo6bnVs
bG9wdCk7CisgICAgdm9pZCBjbGVhck9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNh
Y3Rpb24mLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIEVycm9yQ2FsbGJhY2ssIFNw
YWNlQ2hlY2tSZXN1bHQgPSBzdGQ6Om51bGxvcHQpOworICAgIHZvaWQgY3JlYXRlSW5kZXgoVW5p
cXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIGNvbnN0IElEQkluZGV4SW5mbyYsIEVycm9yQ2Fs
bGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgPSBzdGQ6Om51bGxvcHQpOworICAgIHZvaWQgZGVsZXRl
SW5kZXgoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIHVpbnQ2NF90IG9iamVjdFN0b3Jl
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpbmRleE5hbWUsIEVycm9yQ2FsbGJhY2ssIFNwYWNl
Q2hlY2tSZXN1bHQgPSBzdGQ6Om51bGxvcHQpOworICAgIHZvaWQgcmVuYW1lSW5kZXgoVW5pcXVl
SURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwg
dWludDY0X3QgaW5kZXhJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUsIEVycm9yQ2Fs
bGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgPSBzdGQ6Om51bGxvcHQpOwogICAgIHZvaWQgcHV0T3JB
ZGQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlEYXRhJiwgY29uc3QgSURCVmFs
dWUmLCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSwgS2V5RGF0YUNhbGxiYWNr
KTsKLSAgICB2b2lkIGdldFJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkdl
dFJlY29yZERhdGEmLCBHZXRSZXN1bHRDYWxsYmFjayk7Ci0gICAgdm9pZCBnZXRBbGxSZWNvcmRz
KGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCR2V0QWxsUmVjb3Jkc0RhdGEmLCBHZXRB
bGxSZXN1bHRzQ2FsbGJhY2spOwotICAgIHZvaWQgZ2V0Q291bnQoY29uc3QgSURCUmVxdWVzdERh
dGEmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmLCBDb3VudENhbGxiYWNrKTsKLSAgICB2b2lkIGRl
bGV0ZVJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYs
IEVycm9yQ2FsbGJhY2spOwotICAgIHZvaWQgb3BlbkN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0
YSYsIGNvbnN0IElEQkN1cnNvckluZm8mLCBHZXRSZXN1bHRDYWxsYmFjayk7Ci0gICAgdm9pZCBp
dGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCSXRlcmF0ZUN1cnNv
ckRhdGEmLCBHZXRSZXN1bHRDYWxsYmFjayk7Ci0gICAgdm9pZCBjb21taXRUcmFuc2FjdGlvbihV
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgRXJyb3JDYWxsYmFjayk7Ci0gICAgdm9pZCBh
Ym9ydFRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCBFcnJvckNhbGxi
YWNrKTsKKyAgICB2b2lkIHB1dE9yQWRkQWZ0ZXJTcGFjZUNoZWNrKGNvbnN0IElEQlJlcXVlc3RE
YXRhJiwgY29uc3QgSURCS2V5RGF0YSYsIGNvbnN0IElEQlZhbHVlJiwgSW5kZXhlZERCOjpPYmpl
Y3RTdG9yZU92ZXJ3cml0ZU1vZGUsIEtleURhdGFDYWxsYmFjaywgYm9vbCBpc0tleUdlbmVyYXRl
ZCwgY29uc3QgSW5kZXhJRFRvSW5kZXhLZXlNYXAmLCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8m
LCBTcGFjZUNoZWNrUmVzdWx0KTsKKyAgICB2b2lkIGdldFJlY29yZChjb25zdCBJREJSZXF1ZXN0
RGF0YSYsIGNvbnN0IElEQkdldFJlY29yZERhdGEmLCBHZXRSZXN1bHRDYWxsYmFjaywgU3BhY2VD
aGVja1Jlc3VsdCA9IHN0ZDo6bnVsbG9wdCk7CisgICAgdm9pZCBnZXRBbGxSZWNvcmRzKGNvbnN0
IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCR2V0QWxsUmVjb3Jkc0RhdGEmLCBHZXRBbGxSZXN1
bHRzQ2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgPSBzdGQ6Om51bGxvcHQpOworICAgIHZvaWQg
Z2V0Q291bnQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmLCBD
b3VudENhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0ID0gc3RkOjpudWxsb3B0KTsKKyAgICB2b2lk
IGRlbGV0ZVJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleVJhbmdlRGF0
YSYsIEVycm9yQ2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgPSBzdGQ6Om51bGxvcHQpOworICAg
IHZvaWQgb3BlbkN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkN1cnNvcklu
Zm8mLCBHZXRSZXN1bHRDYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCA9IHN0ZDo6bnVsbG9wdCk7
CisgICAgdm9pZCBpdGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURC
SXRlcmF0ZUN1cnNvckRhdGEmLCBHZXRSZXN1bHRDYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCA9
IHN0ZDo6bnVsbG9wdCk7CisgICAgdm9pZCBjb21taXRUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRh
YmFzZVRyYW5zYWN0aW9uJiwgRXJyb3JDYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCA9IHN0ZDo6
bnVsbG9wdCk7CisgICAgdm9pZCBhYm9ydFRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJh
bnNhY3Rpb24mLCBFcnJvckNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0ID0gc3RkOjpudWxsb3B0
KTsKIAogICAgIHZvaWQgZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlKFVuaXF1ZUlEQkRh
dGFiYXNlQ29ubmVjdGlvbiYsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rp
b25JZGVudGlmaWVyKTsKICAgICB2b2lkIGNvbm5lY3Rpb25DbG9zZWRGcm9tQ2xpZW50KFVuaXF1
ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYpOwogICAgIHZvaWQgZGlkRmlyZVZlcnNpb25DaGFuZ2VF
dmVudChVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mLCBjb25zdCBJREJSZXNvdXJjZUlkZW50
aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBJbmRleGVkREI6OkNvbm5lY3Rpb25DbG9zZWRPbkJl
aGFsZk9mU2VydmVyKTsKLSAgICB2b2lkIG9wZW5EQlJlcXVlc3RDYW5jZWxsZWQoY29uc3QgSURC
UmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllcik7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBvcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmll
ciYgcmVxdWVzdElkZW50aWZpZXIpOwogCiAgICAgdm9pZCBlbnF1ZXVlVHJhbnNhY3Rpb24oUmVm
PFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24+JiYpOwogCi0gICAgdm9pZCBoYW5kbGVEZWxl
dGUoSURCQ29ubmVjdGlvblRvQ2xpZW50JiwgY29uc3QgSURCUmVxdWVzdERhdGEmKTsKLSAgICB2
b2lkIGltbWVkaWF0ZUNsb3NlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBoYW5kbGVEZWxl
dGUoSURCQ29ubmVjdGlvblRvQ2xpZW50JiwgY29uc3QgSURCUmVxdWVzdERhdGEmKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGltbWVkaWF0ZUNsb3NlKCk7CiAKICAgICBib29sIGhhc0FjdGl2
ZVRyYW5zYWN0aW9ucygpIGNvbnN0OwogICAgIHZvaWQgYWJvcnRBY3RpdmVUcmFuc2FjdGlvbnMo
KTsKLSAgICBib29sIHRyeUNsb3NlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhYm9ydElu
UHJvZ3Jlc3NUcmFuc2FjdGlvbnMoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIHRyeUNsb3Nl
KCk7CiAKLSAgICBTdHJpbmcgZmlsZVBhdGgoKSBjb25zdDsKLSAgICBzdGQ6Om9wdGlvbmFsPElE
QkRhdGFiYXNlTmFtZUFuZFZlcnNpb24+IG5hbWVBbmRWZXJzaW9uKCkgY29uc3Q7CisgICAgV0VC
Q09SRV9FWFBPUlQgU3RyaW5nIGZpbGVQYXRoKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
c3RkOjpvcHRpb25hbDxJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiBuYW1lQW5kVmVyc2lvbigp
IGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzRGF0YUluTWVtb3J5KCkgY29uc3Q7
CiAKIHByaXZhdGU6CiAgICAgdm9pZCBoYW5kbGVEYXRhYmFzZU9wZXJhdGlvbnMoKTsKICAgICB2
b2lkIGhhbmRsZUN1cnJlbnRPcGVyYXRpb24oKTsKICAgICB2b2lkIHBlcmZvcm1DdXJyZW50T3Bl
bk9wZXJhdGlvbigpOworICAgIHZvaWQgcGVyZm9ybUN1cnJlbnRPcGVuT3BlcmF0aW9uQWZ0ZXJT
cGFjZUNoZWNrKGJvb2wgaXNHcmFudGVkKTsKICAgICB2b2lkIHBlcmZvcm1DdXJyZW50RGVsZXRl
T3BlcmF0aW9uKCk7CiAgICAgZW51bSBjbGFzcyBSZXF1ZXN0VHlwZSB7IERlbGV0ZSwgQW55IH07
CiAgICAgUmVmUHRyPFNlcnZlck9wZW5EQlJlcXVlc3Q+IHRha2VOZXh0UnVubmFibGVSZXF1ZXN0
KFJlcXVlc3RUeXBlID0gUmVxdWVzdFR5cGU6OkFueSk7CkBAIC0xNDYsMTEgKzE1MSwxMyBAQCBw
cml2YXRlOgogCiAgICAgdm9pZCBjbGVhclRyYW5zYWN0aW9uc09uQ29ubmVjdGlvbihVbmlxdWVJ
REJEYXRhYmFzZUNvbm5lY3Rpb24mKTsKIAotICAgIElEQlNlcnZlciYgbV9zZXJ2ZXI7CisgICAg
SURCU2VydmVyKiBtX3NlcnZlcjsKKyAgICBXZWFrUHRyPFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdl
cj4gbV9tYW5hZ2VyOwogICAgIElEQkRhdGFiYXNlSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAK
ICAgICBMaXN0SGFzaFNldDxSZWZQdHI8U2VydmVyT3BlbkRCUmVxdWVzdD4+IG1fcGVuZGluZ09w
ZW5EQlJlcXVlc3RzOwogICAgIFJlZlB0cjxTZXJ2ZXJPcGVuREJSZXF1ZXN0PiBtX2N1cnJlbnRP
cGVuREJSZXF1ZXN0OworICAgIEhhc2hTZXQ8SURCUmVzb3VyY2VJZGVudGlmaWVyPiBtX29wZW5E
QlJlcXVlc3RzRm9yU3BhY2VDaGVjazsKIAogICAgIExpc3RIYXNoU2V0PFJlZlB0cjxVbmlxdWVJ
REJEYXRhYmFzZUNvbm5lY3Rpb24+PiBtX29wZW5EYXRhYmFzZUNvbm5lY3Rpb25zOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURC
RGF0YWJhc2VDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uY3BwCmluZGV4IDc0M2VkY2MzYjhj
NTk0MDUxZjc5MTExNjUyNmFmNGQwMjE2OTEzNjcuLmQ2YWExZmI5YmE2MmJjOTljZDUwOTJjZjUw
Y2U2OTVkOTkwN2I2YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rp
b24uY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUg
IlNlcnZlck9wZW5EQlJlcXVlc3QuaCIKICNpbmNsdWRlICJVbmlxdWVJREJEYXRhYmFzZS5oIgor
I2luY2x1ZGUgIlVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBuYW1lc3BhY2UgSURCU2VydmVyIHsKQEAgLTQyLDExICs0MywxNCBAQCBSZWY8VW5pcXVl
SURCRGF0YWJhc2VDb25uZWN0aW9uPiBVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb246OmNyZWF0
ZShVbmlxdWVJREJEYQogCiBVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb246OlVuaXF1ZUlEQkRh
dGFiYXNlQ29ubmVjdGlvbihVbmlxdWVJREJEYXRhYmFzZSYgZGF0YWJhc2UsIFNlcnZlck9wZW5E
QlJlcXVlc3QmIHJlcXVlc3QpCiAgICAgOiBtX2RhdGFiYXNlKGRhdGFiYXNlKQotICAgICwgbV9z
ZXJ2ZXIoZGF0YWJhc2Uuc2VydmVyKCkpCisgICAgLCBtX21hbmFnZXIoZGF0YWJhc2UubWFuYWdl
cigpKQogICAgICwgbV9jb25uZWN0aW9uVG9DbGllbnQocmVxdWVzdC5jb25uZWN0aW9uKCkpCiAg
ICAgLCBtX29wZW5SZXF1ZXN0SWRlbnRpZmllcihyZXF1ZXN0LnJlcXVlc3REYXRhKCkucmVxdWVz
dElkZW50aWZpZXIoKSkKIHsKLSAgICBtX3NlcnZlci5yZWdpc3RlckRhdGFiYXNlQ29ubmVjdGlv
bigqdGhpcyk7CisgICAgaWYgKGF1dG8qIG1hbmFnZXIgPSBkYXRhYmFzZS5tYW5hZ2VyKCkpIHsK
KyAgICAgICAgbV9tYW5hZ2VyID0gV2Vha1B0ciB7ICptYW5hZ2VyIH07CisgICAgICAgIG1fbWFu
YWdlci0+cmVnaXN0ZXJDb25uZWN0aW9uKCp0aGlzKTsKKyAgICB9CiAgICAgbV9jb25uZWN0aW9u
VG9DbGllbnQtPnJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0aW9uKCp0aGlzKTsKIH0KIApAQCAtNTQs
MTAgKzU4LDE2IEBAIFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbjo6flVuaXF1ZUlEQkRhdGFi
YXNlQ29ubmVjdGlvbigpCiB7CiAgICAgQVNTRVJUKG1fdHJhbnNhY3Rpb25NYXAuaXNFbXB0eSgp
KTsKIAotICAgIG1fc2VydmVyLnVucmVnaXN0ZXJEYXRhYmFzZUNvbm5lY3Rpb24oKnRoaXMpOwor
ICAgIGlmIChtX21hbmFnZXIpCisgICAgICAgIG1fbWFuYWdlci0+dW5yZWdpc3RlckNvbm5lY3Rp
b24oKnRoaXMpOwogICAgIG1fY29ubmVjdGlvblRvQ2xpZW50LT51bnJlZ2lzdGVyRGF0YWJhc2VD
b25uZWN0aW9uKCp0aGlzKTsKIH0KIAorVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyKiBVbmlxdWVJ
REJEYXRhYmFzZUNvbm5lY3Rpb246Om1hbmFnZXIoKQoreworICAgIHJldHVybiBtX21hbmFnZXIu
Z2V0KCk7Cit9CisKIGJvb2wgVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uOjpoYXNOb25GaW5p
c2hlZFRyYW5zYWN0aW9ucygpIGNvbnN0CiB7CiAgICAgcmV0dXJuICFtX3RyYW5zYWN0aW9uTWFw
LmlzRW1wdHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uaAppbmRl
eCAyZTE5ZGZkMmRjOTE0MzRiZmM1ZTdjM2FlNGJlNjZkOGNkODU4ODExLi45OGZlYjU5Yzc2YmVh
ZWJlNzBlZGRlNGJlNTU4ZmNhODcxYzk4ZGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFi
YXNlQ29ubmVjdGlvbi5oCkBAIC0yNSw3ICsyNSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5j
bHVkZSAiSURCU2VydmVyLmgiCiAjaW5jbHVkZSAiVW5pcXVlSURCRGF0YWJhc2UuaCIKICNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9JZGVudGlmaWVkLmg+CkBAIC0zNiw2
ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSURCRXJyb3I7CiBjbGFzcyBJ
REJSZXN1bHREYXRhOworY2xhc3MgVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyOwogCiBuYW1lc3Bh
Y2UgSURCU2VydmVyIHsKIApAQCAtNTIsMTEgKzUyLDExIEBAIHB1YmxpYzoKIAogICAgIGNvbnN0
IElEQlJlc291cmNlSWRlbnRpZmllciYgb3BlblJlcXVlc3RJZGVudGlmaWVyKCkgeyByZXR1cm4g
bV9vcGVuUmVxdWVzdElkZW50aWZpZXI7IH0KICAgICBVbmlxdWVJREJEYXRhYmFzZSogZGF0YWJh
c2UoKSB7IHJldHVybiBtX2RhdGFiYXNlLmdldCgpOyB9Ci0gICAgSURCU2VydmVyKiBzZXJ2ZXIo
KSB7IHJldHVybiAmbV9zZXJ2ZXI7IH0KKyAgICBVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIqIG1h
bmFnZXIoKTsKICAgICBJREJDb25uZWN0aW9uVG9DbGllbnQmIGNvbm5lY3Rpb25Ub0NsaWVudCgp
IHsgcmV0dXJuIG1fY29ubmVjdGlvblRvQ2xpZW50OyB9CiAKLSAgICB2b2lkIGNvbm5lY3Rpb25Q
ZW5kaW5nQ2xvc2VGcm9tQ2xpZW50KCk7Ci0gICAgdm9pZCBjb25uZWN0aW9uQ2xvc2VkRnJvbUNs
aWVudCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29ubmVjdGlvblBlbmRpbmdDbG9zZUZy
b21DbGllbnQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbm5lY3Rpb25DbG9zZWRGcm9t
Q2xpZW50KCk7CiAKICAgICBib29sIGNsb3NlUGVuZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fY2xv
c2VQZW5kaW5nOyB9CiAKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogICAgIHZvaWQgZmlyZVZl
cnNpb25DaGFuZ2VFdmVudChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVu
dGlmaWVyLCB1aW50NjRfdCByZXF1ZXN0ZWRWZXJzaW9uKTsKICAgICBVbmlxdWVJREJEYXRhYmFz
ZVRyYW5zYWN0aW9uJiBjcmVhdGVWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24odWludDY0X3QgbmV3
VmVyc2lvbik7CiAKLSAgICB2b2lkIGVzdGFibGlzaFRyYW5zYWN0aW9uKGNvbnN0IElEQlRyYW5z
YWN0aW9uSW5mbyYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZXN0YWJsaXNoVHJhbnNhY3Rp
b24oY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJik7CiAgICAgdm9pZCBkaWRBYm9ydFRyYW5zYWN0
aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCBjb25zdCBJREJFcnJvciYpOwogICAg
IHZvaWQgZGlkQ29tbWl0VHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYs
IGNvbnN0IElEQkVycm9yJik7CiAgICAgdm9pZCBkaWRDcmVhdGVPYmplY3RTdG9yZShjb25zdCBJ
REJSZXN1bHREYXRhJik7CkBAIC03NSw4ICs3NSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZENy
ZWF0ZUluZGV4KGNvbnN0IElEQlJlc3VsdERhdGEmKTsKICAgICB2b2lkIGRpZERlbGV0ZUluZGV4
KGNvbnN0IElEQlJlc3VsdERhdGEmKTsKICAgICB2b2lkIGRpZFJlbmFtZUluZGV4KGNvbnN0IElE
QlJlc3VsdERhdGEmKTsKLSAgICB2b2lkIGRpZEZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQoY29uc3Qg
SURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgSW5kZXhlZERCOjpDb25u
ZWN0aW9uQ2xvc2VkT25CZWhhbGZPZlNlcnZlcik7Ci0gICAgdm9pZCBkaWRGaW5pc2hIYW5kbGlu
Z1ZlcnNpb25DaGFuZ2UoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklk
ZW50aWZpZXIpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkRmlyZVZlcnNpb25DaGFuZ2VF
dmVudChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBJbmRl
eGVkREI6OkNvbm5lY3Rpb25DbG9zZWRPbkJlaGFsZk9mU2VydmVyKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGRpZEZpbmlzaEhhbmRsaW5nVmVyc2lvbkNoYW5nZShjb25zdCBJREJSZXNvdXJj
ZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CiAKICAgICB2b2lkIGFib3J0VHJh
bnNhY3Rpb25XaXRob3V0Q2FsbGJhY2soVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYpOwog
CkBAIC04OCw3ICs4OCw3IEBAIHByaXZhdGU6CiAgICAgVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0
aW9uKFVuaXF1ZUlEQkRhdGFiYXNlJiwgU2VydmVyT3BlbkRCUmVxdWVzdCYpOwogCiAgICAgV2Vh
a1B0cjxVbmlxdWVJREJEYXRhYmFzZT4gbV9kYXRhYmFzZTsKLSAgICBJREJTZXJ2ZXImIG1fc2Vy
dmVyOworICAgIFdlYWtQdHI8VW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyPiBtX21hbmFnZXI7CiAg
ICAgUmVmPElEQkNvbm5lY3Rpb25Ub0NsaWVudD4gbV9jb25uZWN0aW9uVG9DbGllbnQ7CiAgICAg
SURCUmVzb3VyY2VJZGVudGlmaWVyIG1fb3BlblJlcXVlc3RJZGVudGlmaWVyOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0
YWJhc2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
VW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGJiY2QzNzQ4ZTliMzNmZDk1
MzMxNTllYjEzNzUzYTkwNmVlZTk4OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuaApAQCAt
MCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJREJE
YXRhYmFzZUlkZW50aWZpZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgQ2xp
ZW50T3JpZ2luOworCituYW1lc3BhY2UgSURCU2VydmVyIHsKKworY2xhc3MgSURCQmFja2luZ1N0
b3JlOworY2xhc3MgVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uOworCitjbGFzcyBVbmlxdWVJ
REJEYXRhYmFzZU1hbmFnZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8VW5pcXVlSURCRGF0YWJh
c2VNYW5hZ2VyPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAg
dmlydHVhbCB+VW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyKCkgeyB9CisgICAgdmlydHVhbCB2b2lk
IHJlZ2lzdGVyQ29ubmVjdGlvbihVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJDb25uZWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlQ29u
bmVjdGlvbiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJUcmFuc2FjdGlvbihVbmlx
dWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lz
dGVyVHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYpID0gMDsKKyAgICB2
aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxJREJCYWNraW5nU3RvcmU+IGNyZWF0ZUJhY2tpbmdTdG9y
ZShjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJl
cXVlc3RTcGFjZShjb25zdCBDbGllbnRPcmlnaW4mLCB1aW50NjRfdCBzaXplLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBJREJTZXJ2
ZXIKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFi
YXNlVHJhbnNhY3Rpb24uY3BwCmluZGV4IDFjYzAyODE3YTEyNGM4ZDBlZDUyZjIxM2FjOGU1MDA2
YmE2Yjk2ZGUuLjZlM2NlMDQ0MDZmY2FkMzNiY2MxYzllOWY2MTJlMmFmNDEwNjk0MWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJE
YXRhYmFzZVRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHAKQEAgLTI4LDcgKzI4
LDYgQEAKIAogI2luY2x1ZGUgIklEQkl0ZXJhdGVDdXJzb3JEYXRhLmgiCiAjaW5jbHVkZSAiSURC
UmVzdWx0RGF0YS5oIgotI2luY2x1ZGUgIklEQlNlcnZlci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcu
aCIKICNpbmNsdWRlICJVbmlxdWVJREJEYXRhYmFzZS5oIgogCkBAIC01MCwxMiArNDksMTQgQEAg
VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlv
bihVbmlxdWVJREJEYXRhYmFzZUNvbm4KICAgICBpZiAobV90cmFuc2FjdGlvbkluZm8ubW9kZSgp
ID09IElEQlRyYW5zYWN0aW9uTW9kZTo6VmVyc2lvbmNoYW5nZSkKICAgICAgICAgbV9vcmlnaW5h
bERhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPihkYXRhYmFzZS0+aW5m
bygpKTsKIAotICAgIGRhdGFiYXNlQ29ubmVjdGlvbigpLnNlcnZlcigpLT5yZWdpc3RlclRyYW5z
YWN0aW9uKCp0aGlzKTsKKyAgICBpZiAoYXV0byogbWFuYWdlciA9IGRhdGFiYXNlQ29ubmVjdGlv
bigpLm1hbmFnZXIoKSkKKyAgICAgICAgbWFuYWdlci0+cmVnaXN0ZXJUcmFuc2FjdGlvbigqdGhp
cyk7CiB9CiAKIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246On5VbmlxdWVJREJEYXRhYmFz
ZVRyYW5zYWN0aW9uKCkKIHsKLSAgICBkYXRhYmFzZUNvbm5lY3Rpb24oKS5zZXJ2ZXIoKS0+dW5y
ZWdpc3RlclRyYW5zYWN0aW9uKCp0aGlzKTsKKyAgICBpZiAoYXV0byogbWFuYWdlciA9IGRhdGFi
YXNlQ29ubmVjdGlvbigpLm1hbmFnZXIoKSkKKyAgICAgICAgbWFuYWdlci0+dW5yZWdpc3RlclRy
YW5zYWN0aW9uKCp0aGlzKTsKIH0KIAogVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiBVbmlx
dWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpkYXRhYmFzZUNvbm5lY3Rpb24oKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFi
YXNlVHJhbnNhY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmgKaW5kZXggOTU5NjY1MmFkY2RiYTdhMDQ4
YjYxOWY3NGVmMWE5MmNlZWY5ZTBlNS4uZmJhODVjMTczOGI3MzQyZTEyODgwMGFlYjlkMWRhNDY3
ZWU3YTEwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5oCkBA
IC01MSw3ICs1MSw3IEBAIG5hbWVzcGFjZSBJREJTZXJ2ZXIgewogY2xhc3MgSURCU2VydmVyOwog
Y2xhc3MgVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uOwogCi1jbGFzcyBVbmlxdWVJREJEYXRh
YmFzZVRyYW5zYWN0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8VW5pcXVlSURCRGF0YWJhc2VUcmFu
c2FjdGlvbj4geworY2xhc3MgVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiA6IHB1YmxpYyBD
YW5NYWtlV2Vha1B0cjxVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uPiwgcHVibGljIFJlZkNv
dW50ZWQ8VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbj4gewogcHVibGljOgogICAgIHN0YXRp
YyBSZWY8VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbj4gY3JlYXRlKFVuaXF1ZUlEQkRhdGFi
YXNlQ29ubmVjdGlvbiYsIGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYpOwogCkBAIC01OSwyOSAr
NTksMjkgQEAgcHVibGljOgogCiAgICAgVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiBkYXRh
YmFzZUNvbm5lY3Rpb24oKTsKICAgICBjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mIGluZm8oKSBj
b25zdCB7IHJldHVybiBtX3RyYW5zYWN0aW9uSW5mbzsgfQotICAgIGJvb2wgaXNWZXJzaW9uQ2hh
bmdlKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc1ZlcnNpb25DaGFuZ2UoKSBj
b25zdDsKICAgICBib29sIGlzUmVhZE9ubHkoKSBjb25zdDsKIAogICAgIElEQkRhdGFiYXNlSW5m
byogb3JpZ2luYWxEYXRhYmFzZUluZm8oKSBjb25zdDsKIAotICAgIHZvaWQgYWJvcnQoKTsKLSAg
ICB2b2lkIGFib3J0V2l0aG91dENhbGxiYWNrKCk7Ci0gICAgdm9pZCBjb21taXQodWludDY0X3Qg
cGVuZGluZ1JlcXVlc3RDb3VudCk7Ci0KLSAgICB2b2lkIGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0
IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJik7Ci0gICAgdm9pZCBk
ZWxldGVPYmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IFN0cmluZyYgb2Jq
ZWN0U3RvcmVOYW1lKTsKLSAgICB2b2lkIHJlbmFtZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVl
c3REYXRhJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5l
d05hbWUpOwotICAgIHZvaWQgY2xlYXJPYmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0YSYs
IHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllcik7Ci0gICAgdm9pZCBjcmVhdGVJbmRleChj
b25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkluZGV4SW5mbyYpOwotICAgIHZvaWQgZGVs
ZXRlSW5kZXgoY29uc3QgSURCUmVxdWVzdERhdGEmLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lKTsKLSAgICB2b2lkIHJlbmFtZUluZGV4KGNv
bnN0IElEQlJlcXVlc3REYXRhJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50
NjRfdCBpbmRleElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSk7Ci0gICAgdm9pZCBw
dXRPckFkZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleURhdGEmLCBjb25zdCBJ
REJWYWx1ZSYsIEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlKTsKLSAgICB2b2lk
IGdldFJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkdldFJlY29yZERhdGEm
KTsKLSAgICB2b2lkIGdldEFsbFJlY29yZHMoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJ
REJHZXRBbGxSZWNvcmRzRGF0YSYpOwotICAgIHZvaWQgZ2V0Q291bnQoY29uc3QgSURCUmVxdWVz
dERhdGEmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmKTsKLSAgICB2b2lkIGRlbGV0ZVJlY29yZChj
b25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYpOwotICAgIHZvaWQg
b3BlbkN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkN1cnNvckluZm8mKTsK
LSAgICB2b2lkIGl0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJJ
dGVyYXRlQ3Vyc29yRGF0YSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWJvcnQoKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFib3J0V2l0aG91dENhbGxiYWNrKCk7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBjb21taXQodWludDY0X3QgcGVuZGluZ1JlcXVlc3RDb3VudCk7CisKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3RE
YXRhJiwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBkZWxldGVPYmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IFN0cmluZyYg
b2JqZWN0U3RvcmVOYW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbmFtZU9iamVjdFN0
b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIG5ld05hbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJP
YmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0YSYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRl
bnRpZmllcik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjcmVhdGVJbmRleChjb25zdCBJREJS
ZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkluZGV4SW5mbyYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgZGVsZXRlSW5kZXgoY29uc3QgSURCUmVxdWVzdERhdGEmLCB1aW50NjRfdCBvYmplY3RTdG9y
ZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHJlbmFtZUluZGV4KGNvbnN0IElEQlJlcXVlc3REYXRhJiwgdWludDY0X3Qgb2JqZWN0
U3RvcmVJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRleElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
bmV3TmFtZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwdXRPckFkZChjb25zdCBJREJSZXF1
ZXN0RGF0YSYsIGNvbnN0IElEQktleURhdGEmLCBjb25zdCBJREJWYWx1ZSYsIEluZGV4ZWREQjo6
T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldFJl
Y29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkdldFJlY29yZERhdGEmKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldEFsbFJlY29yZHMoY29uc3QgSURCUmVxdWVzdERhdGEm
LCBjb25zdCBJREJHZXRBbGxSZWNvcmRzRGF0YSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
Z2V0Q291bnQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZVJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0
YSYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgb3Bl
bkN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkN1cnNvckluZm8mKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGl0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEm
LCBjb25zdCBJREJJdGVyYXRlQ3Vyc29yRGF0YSYpOwogCiAgICAgdm9pZCBkaWRBY3RpdmF0ZUlu
QmFja2luZ1N0b3JlKGNvbnN0IElEQkVycm9yJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJFcnJvci5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkVycm9yLmgKaW5kZXggZmYxN2M5OGE0MTE1ZGU2
MmNhY2M3MGFkMzI1MmJkNmVkZjExZjM5OS4uYjMwYWQzOTE3NmYwM2ZmMGQ2YzkzOThkNmIzZWQx
OWNkMmU5OTIxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2hhcmVkL0lEQkVycm9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2hhcmVkL0lEQkVycm9yLmgKQEAgLTUyLDYgKzUyLDcgQEAgcHVibGljOgogICAgIFN0cmluZyBt
ZXNzYWdlKCkgY29uc3Q7CiAKICAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuICFtX2Nv
ZGU7IH0KKyAgICBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gIWlzTnVsbCgpOyB9CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCBJREJFcnJvciBpc29sYXRlZENvcHkoKSBjb25zdDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVl
c3REYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVx
dWVzdERhdGEuaAppbmRleCAwMThjYjEzZTc1ZWI2NDVkZDExNGUyNGY2ZGJmZWEzNGNmNTViMTY0
Li4wMDE3ODdhNjY1OGE0MTc4YjZhNzk3MTI4YTA0ZGEzNmI4YWZkZmY0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERh
dGEuaApAQCAtNTYsOCArNTYsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgSURCUmVx
dWVzdERhdGEgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiAKICAgICBJREJDb25uZWN0aW9uSWRlbnRp
ZmllciBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpIGNvbnN0OwotICAgIElEQlJlc291cmNl
SWRlbnRpZmllciByZXF1ZXN0SWRlbnRpZmllcigpIGNvbnN0OwotICAgIElEQlJlc291cmNlSWRl
bnRpZmllciB0cmFuc2FjdGlvbklkZW50aWZpZXIoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBJREJSZXNvdXJjZUlkZW50aWZpZXIgcmVxdWVzdElkZW50aWZpZXIoKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBJREJSZXNvdXJjZUlkZW50aWZpZXIgdHJhbnNhY3Rpb25JZGVudGlmaWVy
KCkgY29uc3Q7CiAgICAgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyKCkgY29uc3Q7CiAg
ICAgdWludDY0X3QgaW5kZXhJZGVudGlmaWVyKCkgY29uc3Q7CiAgICAgSW5kZXhlZERCOjpJbmRl
eFJlY29yZFR5cGUgaW5kZXhSZWNvcmRUeXBlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzb3VyY2VJZGVudGlmaWVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzb3VyY2VJZGVu
dGlmaWVyLmgKaW5kZXggYmUxNjE5N2Y2MzRhNTk2YzM5ZTUxMzAyODU5MDY4MzU3NDU4NjgyYS4u
YmQzOTU0YTI4OTczY2ViOGE1YmY2NDhmNGFhNTEyM2YyZWZiZWY0NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc291cmNlSWRlbnRpZmll
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXNv
dXJjZUlkZW50aWZpZXIuaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgSURCUmVzb3Vy
Y2VJZGVudGlmaWVyKGNvbnN0IElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5JiwgY29uc3Qg
SURCUmVxdWVzdCYpOwogICAgIGV4cGxpY2l0IElEQlJlc291cmNlSWRlbnRpZmllcihjb25zdCBJ
REJTZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub0NsaWVudCYpOwogCi0gICAgc3RhdGljIElEQlJlc291
cmNlSWRlbnRpZmllciBlbXB0eVZhbHVlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIElE
QlJlc291cmNlSWRlbnRpZmllciBlbXB0eVZhbHVlKCk7CiAgICAgYm9vbCBpc0VtcHR5KCkgY29u
c3QKICAgICB7CiAgICAgICAgIHJldHVybiAhbV9yZXNvdXJjZU51bWJlciAmJiAhbV9pZGJDb25u
ZWN0aW9uSWRlbnRpZmllcjsKQEAgLTYwLDcgKzYwLDggQEAgcHVibGljOgogICAgICAgICB1aW50
NjRfdCBoYXNoQ29kZXNbMl0gPSB7IG1faWRiQ29ubmVjdGlvbklkZW50aWZpZXIudG9VSW50NjQo
KSwgbV9yZXNvdXJjZU51bWJlciB9OwogICAgICAgICByZXR1cm4gU3RyaW5nSGFzaGVyOjpoYXNo
TWVtb3J5PHNpemVvZihoYXNoQ29kZXMpPihoYXNoQ29kZXMpOwogICAgIH0KLSAgICAKKworICAg
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIG90aGVyKSBjb25z
dCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQogICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBJREJSZXNvdXJjZUlkZW50aWZpZXImIG90aGVyKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0
dXJuIG1faWRiQ29ubmVjdGlvbklkZW50aWZpZXIgPT0gb3RoZXIubV9pZGJDb25uZWN0aW9uSWRl
bnRpZmllcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IGJjNzIzMzZmYmZkZDRjMjk0ZGRjZDViNTIzNjM1OWI1OGQ1NzMwNzQuLjdk
ZDMwMzE1ZDQ5ZDVkN2ZmY2M1Mjk0N2YyYTlhOTlhZDU1NWEzMTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE1MzgsMTAgKzE1
MzgsMTAgQEAKIAkJNTExMjNFMkYyNzY5NDBDQTAwRjlENDFCIC8qIE5vdGlmaWNhdGlvbkRhdGEu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMTIzRTJD
Mjc2OTNDMzIwMEY5RDQxQiAvKiBOb3RpZmljYXRpb25EYXRhLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTExN0YzMEUyNUU2MTAyMDAwMkE5RjFF
IC8qIFJlbW90ZUNvbW1hbmRMaXN0ZW5lckNvY29hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTE3RjMwQzI1RTYxMDFGMDAyQTlGMUUgLyogUmVtb3Rl
Q29tbWFuZExpc3RlbmVyQ29jb2EuaCAqLzsgfTsKIAkJNTExRUMxMjgxQzUwQUFDQTAwMzJGOTgz
IC8qIElEQlNlcmlhbGl6YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxMUVDMTI2MUM1MEFBNTcwMDMyRjk4MyAvKiBJREJTZXJpYWxpemF0aW9u
LmggKi87IH07Ci0JCTUxMUVDMTJDMUM1MEFCQkYwMDMyRjk4MyAvKiBTUUxpdGVJREJUcmFuc2Fj
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEx
RUMxMkExQzUwQUJCQTAwMzJGOTgzIC8qIFNRTGl0ZUlEQlRyYW5zYWN0aW9uLmggKi87IH07CisJ
CTUxMUVDMTJDMUM1MEFCQkYwMDMyRjk4MyAvKiBTUUxpdGVJREJUcmFuc2FjdGlvbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExRUMxMkExQzUwQUJC
QTAwMzJGOTgzIC8qIFNRTGl0ZUlEQlRyYW5zYWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTExRUMxMzAxQzUwQUJGNTAwMzJGOTgzIC8q
IFNRTGl0ZUlEQkN1cnNvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTExRUMxMkUxQzUwQUJFQzAwMzJGOTgzIC8qIFNRTGl0ZUlEQkN1cnNvci5oICov
OyB9OwogCQk1MTIwQkJBRjFGMUNFQ0U3MDBFRkVCRjEgLyogQ29va2llU3RvcmFnZU9ic2VydmVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTIwQkJB
RDFGMUNFNzcwMDBFRkVCRjEgLyogQ29va2llU3RvcmFnZU9ic2VydmVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNTEyQkRCNEIxQzQ1NkZGQTAw
NjQ5NERGIC8qIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyQkRCNDkxQzQ1NkZBQjAwNjQ5NERGIC8qIFNRTGl0
ZUlEQkJhY2tpbmdTdG9yZS5oICovOyB9OworCQk1MTJCREI0QjFDNDU2RkZBMDA2NDk0REYgLyog
U1FMaXRlSURCQmFja2luZ1N0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTJCREI0OTFDNDU2RkFCMDA2NDk0REYgLyogU1FMaXRlSURCQmFja2lu
Z1N0b3JlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNTEyREQ4RjUwRDkxRTZBRjAwMEY4OUVFIC8qIExlZ2FjeVdlYkFyY2hpdmUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMkREOEVCMEQ5MUU2QUYw
MDBGODlFRSAvKiBMZWdhY3lXZWJBcmNoaXZlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTEyREQ4RjYwRDkxRTZBRjAwMEY4OUVFIC8qIEFyY2hp
dmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMkRE
OEVDMEQ5MUU2QUYwMDBGODlFRSAvKiBBcmNoaXZlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTEyREQ4RjgwRDkxRTZBRjAwMEY4OUVFIC8qIEFy
Y2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxMkREOEVFMEQ5MUU2QUYwMDBGODlFRSAvKiBBcmNoaXZlUmVzb3Vy
Y2VDb2xsZWN0aW9uLmggKi87IH07CkBAIC0xNTg3LDcgKzE1ODcsNyBAQAogCQk1MTZEN0Q3MjFC
QjVGMEJEMDBBRjdDNzcgLyogSURCQ29ubmVjdGlvblRvQ2xpZW50RGVsZWdhdGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNkQ3RDZFMUJCNUYwNjUw
MEFGN0M3NyAvKiBJREJDb25uZWN0aW9uVG9DbGllbnREZWxlZ2F0ZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxNkY3RjZEMUMzMUUzOUEwMEYx
MTFEQyAvKiBTZXJ2ZXJPcGVuREJSZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTZGN0Y2QzFDMzFDNzlEMDBGMTExREMgLyogU2VydmVyT3Bl
bkRCUmVxdWVzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTUxNzEzOEYwMUJFRDFEMUEwMDBENUYwMSAvKiBJbmRleEtleS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3MTM4RUUxQkVEMUQxNzAwMEQ1
RjAxIC8qIEluZGV4S2V5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKLQkJNTE3MTM4RjgxQkYxMjhCQjAwMEQ1RjAxIC8qIEluZGV4VmFsdWVTdG9yZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3MTM4RjYx
QkYxMjI2MjAwMEQ1RjAxIC8qIEluZGV4VmFsdWVTdG9yZS5oICovOyB9OworCQk1MTcxMzhGODFC
RjEyOEJCMDAwRDVGMDEgLyogSW5kZXhWYWx1ZVN0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTcxMzhGNjFCRjEyMjYyMDAwRDVGMDEgLyogSW5k
ZXhWYWx1ZVN0b3JlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNTE3MTM4RkMxQkYzQURGNDAwMEQ1RjAxIC8qIElEQkN1cnNvckluZm8uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNzEzOEZBMUJGM0FE
QUMwMDBENUYwMSAvKiBJREJDdXJzb3JJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE3MTM5MDYxQkY2NERFQzAwMEQ1RjAxIC8qIE1lbW9y
eU9iamVjdFN0b3JlQ3Vyc29yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTcxMzkwNDFCRjY0REUzMDAwRDVGMDEgLyogTWVtb3J5T2JqZWN0U3RvcmVD
dXJzb3IuaCAqLzsgfTsKIAkJNTE3MTM5MDgxQkY2NERFRjAwMEQ1RjAxIC8qIE1lbW9yeUN1cnNv
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3MTM5
MDIxQkY2NERFMzAwMEQ1RjAxIC8qIE1lbW9yeUN1cnNvci5oICovOyB9OwpAQCAtMTY2Myw3ICsx
NjYzLDcgQEAKIAkJNTFCOTE0MTAxRkQyNzgyRDAwRUUyODU5IC8qIFJlZ2lzdHJhdGlvbkRhdGFi
YXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUI5
MTQwQzFGRDI3ODI1MDBFRTI4NTkgLyogUmVnaXN0cmF0aW9uRGF0YWJhc2UuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUI5MTQxMTFGRDI3ODJE
MDBFRTI4NTkgLyogUmVnaXN0cmF0aW9uU3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQjkxNDBCMUZEMjc4MjUwMEVFMjg1OSAvKiBSZWdpc3Ry
YXRpb25TdG9yZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTUxQkE0QUM0MUJCQjVDRDgwMERGM0Q2RCAvKiBJREJEYXRhYmFzZUluZm8uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkE0QUMyMUJCQjVD
QkYwMERGM0Q2RCAvKiBJREJEYXRhYmFzZUluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk1MUJBNEFDQjFCQkM1QkQ5MDBERjNENkQgLyogTWVt
b3J5SURCQmFja2luZ1N0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MUJBNEFDOTFCQkM1QjlFMDBERjNENkQgLyogTWVtb3J5SURCQmFja2luZ1N0
b3JlLmggKi87IH07CisJCTUxQkE0QUNCMUJCQzVCRDkwMERGM0Q2RCAvKiBNZW1vcnlJREJCYWNr
aW5nU3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxQkE0QUM5MUJCQzVCOUUwMERGM0Q2RCAvKiBNZW1vcnlJREJCYWNraW5nU3RvcmUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUJBNEFDQzFC
QkM1QkREMDBERjNENkQgLyogSURCQmFja2luZ1N0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJBNEFDNzFCQkM1QUQ2MDBERjNENkQgLyogSURC
QmFja2luZ1N0b3JlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNTFCQTk0NzEyM0FDMzA1MzAwNDQ0ODQ2IC8qIFJ1bkphdmFTY3JpcHRQYXJhbWV0
ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJB
OTQ2RjIzQUMzMDUwMDA0NDQ4NDYgLyogUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUJDQ0UzMDFGOEYx
NzlFMDA2QkEwRUQgLyogU2VydmljZVdvcmtlclRocmVhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3Qzg3MTAxRjhFRTcyRTAwRUI4MDc2IC8qIFNl
cnZpY2VXb3JrZXJUaHJlYWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtMTY3OSw3ICsxNjc5LDcgQEAKIAkJNTFFMEJBQkIwREE1NTQ3MTAwQTlF
NDE3IC8qIFN0b3JhZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTFFMEJBQjkwREE1NTQ3MTAwQTlFNDE3IC8qIFN0b3JhZ2VFdmVudC5oICov
OyB9OwogCQk1MUUwQkFFQjBEQTU1RDRBMDBBOUU0MTcgLyogSlNTdG9yYWdlRXZlbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTBCQUU5MERBNTVE
NEEwMEE5RTQxNyAvKiBKU1N0b3JhZ2VFdmVudC5oICovOyB9OwogCQk1MUUwQkIzODBEQTVBQ0I2
MDBBOUU0MTcgLyogU3RvcmFnZU1hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTFFMEJCMzYwREE1QUNCNjAwQTlFNDE3IC8qIFN0b3JhZ2VNYXAuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk1MUUxQkFD
MzFCRDgwNjRFMDA1NUQ4MUYgLyogTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTFCQUMxMUJEODA2
NDcwMDU1RDgxRiAvKiBNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbi5oICovOyB9OworCQk1
MUUxQkFDMzFCRDgwNjRFMDA1NUQ4MUYgLyogTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTFCQUMx
MUJEODA2NDcwMDU1RDgxRiAvKiBNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbi5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxRTI2OTM3MURE
M0JEOUIwMDZCNkE1OCAvKiBJREJJdGVyYXRlQ3Vyc29yRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFMjY5MzUxREQzQkQ5MTAwNkI2QTU4IC8q
IElEQkl0ZXJhdGVDdXJzb3JEYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNTFFMzk5MDAxRDZFNDc1MDAwOUM4ODMxIC8qIEdhbWVDb250cm9s
bGVyR2FtZXBhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTFFMzk4RkMxRDZFNDc0QjAwOUM4ODMxIC8qIEdhbWVDb250cm9sbGVyR2FtZXBhZC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxRTM5OTAy
MUQ2RTQ3NTAwMDlDODgzMSAvKiBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFMzk4RkUxRDZFNDc0
QjAwOUM4ODMxIC8qIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE2ODksNyArMTY4OSw3IEBA
CiAJCTUxRUNDM0Y4MjAwNTg3QkYwMDQ4M0VBRSAvKiBNZXNzYWdlUG9ydENoYW5uZWxSZWdpc3Ry
eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFQ0Mz
RjEyMDA1ODdCNTAwNDgzRUFFIC8qIE1lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFFQ0MzRkQyMDA1
OTMwRDAwNDgzRUFFIC8qIE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUVDQzNGQjIwMDU5MzAxMDA0ODNF
QUUgLyogTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUVFN0IzODFBQTUwQjA1MDBGOTJCMjEgLyog
UmVzb3VyY2VMb2FkSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTFFRTdCMzcxQUE1MEIwNTAwRjkyQjIxIC8qIFJlc291cmNlTG9hZEluZm8uaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk1MUVFQUE3
NDFCRUZGQUIxMDAyMTgwMDggLyogSW5kZXhWYWx1ZUVudHJ5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUVFQUE3MjFCRUZGQTc5MDAyMTgwMDggLyog
SW5kZXhWYWx1ZUVudHJ5LmggKi87IH07CisJCTUxRUVBQTc0MUJFRkZBQjEwMDIxODAwOCAvKiBJ
bmRleFZhbHVlRW50cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxRUVBQTcyMUJFRkZBNzkwMDIxODAwOCAvKiBJbmRleFZhbHVlRW50cnkuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUYxNzRGRTFG
MzU4OTkyMDBDNzQ5NTAgLyogV29ya2VyVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGMTc0RkMxRjM1ODk4ODAwQzc0OTUwIC8qIFdvcmtlclR5
cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1
MUYxNzUwMzFGMzU4QjNCMDBDNzQ5NTAgLyogSlNTZXJ2aWNlV29ya2VyVXBkYXRlVmlhQ2FjaGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjE3NTAx
MUYzNThCMzYwMEM3NDk1MCAvKiBKU1NlcnZpY2VXb3JrZXJVcGRhdGVWaWFDYWNoZS5oICovOyB9
OwogCQk1MUYxNzUwNjFGMzU4QkY3MDBDNzQ5NTAgLyogSlNXb3JrZXJUeXBlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUYxNzUwNTFGMzU4QkRFMDBD
NzQ5NTAgLyogSlNXb3JrZXJUeXBlLmggKi87IH07CkBAIC0yOTg5LDYgKzI5ODksNyBAQAogCQk5
M0IyRDgxNjBGOTkyMEQyMDA2QUU2QjIgLyogU3VkZGVuVGVybWluYXRpb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjJEODE1MEY5OTIwRDIwMDZB
RTZCMiAvKiBTdWRkZW5UZXJtaW5hdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTkzQjM4RUMzMjU4MjFEQjQwMDE5OEU2MyAvKiBXZWJTcGVl
Y2hSZWNvZ25pemVyVGFzay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTNCMzhFQkEyNTgyMTkzQjAwMTk4RTYzIC8qIFdlYlNwZWVjaFJlY29nbml6ZXJU
YXNrLmggKi87IH07CiAJCTkzQjM4RUM0MjU4MjFEQjcwMDE5OEU2MyAvKiBXZWJTcGVlY2hSZWNv
Z25pemVyVGFza01vY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDkzQjM4RUJCMjU4MjE5M0QwMDE5OEU2MyAvKiBXZWJTcGVlY2hSZWNvZ25pemVyVGFz
a01vY2suaCAqLzsgfTsKKwkJOTNCNjMxRTIyN0FCQTFFNjAwNDQzQTQ0IC8qIFVuaXF1ZUlEQkRh
dGFiYXNlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTNCNjMxRTAyN0FCQTFFMjAwNDQzQTQ0IC8qIFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkz
QjZBMEU2MEIwQkNBNUMwMEY1MDI3QSAvKiBDb250ZXh0TWVudS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCNkEwRTUwQjBCQ0E1QzAwRjUwMjdBIC8q
IENvbnRleHRNZW51LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJOTNCNzBENjQwOUVCMEM3QzAwOUQ4NDY4IC8qIEpTRE9NQmluZGluZy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCNzBENDgwOUVCMEM3
QzAwOUQ4NDY4IC8qIEpTRE9NQmluZGluZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTkzQjcwRDZBMDlFQjBDN0MwMDlEODQ2OCAvKiBKU0V2ZW50
TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDkzQjcwRDRFMDlFQjBDN0MwMDlEODQ2OCAvKiBKU0V2ZW50TGlzdGVuZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTI4MTEsNiArMTI4MTIs
NyBAQAogCQk5M0IzOEVCQTI1ODIxOTNCMDAxOThFNjMgLyogV2ViU3BlZWNoUmVjb2duaXplclRh
c2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU3BlZWNoUmVjb2duaXpl
clRhc2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCMzhFQkIyNTgyMTkzRDAw
MTk4RTYzIC8qIFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jay5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJTcGVlY2hSZWNvZ25pemVyVGFza01vY2suaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCMzhFQkMyNTgyMTkzRTAwMTk4RTYzIC8qIFdlYlNwZWVj
aFJlY29nbml6ZXJUYXNrLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gV2ViU3BlZWNoUmVjb2duaXplclRhc2subW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTkzQjYzMUUwMjdBQkExRTIwMDQ0M0E0NCAvKiBVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVW5pcXVlSURCRGF0YWJhc2VNYW5h
Z2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQjZBMEU1MEIwQkNBNUMwMEY1
MDI3QSAvKiBDb250ZXh0TWVudS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q29udGV4dE1lbnUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCNzBENDgwOUVC
MEM3QzAwOUQ4NDY4IC8qIEpTRE9NQmluZGluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNET01CaW5kaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkz
QjcwRDREMDlFQjBDN0MwMDlEODQ2OCAvKiBKU0V2ZW50TGlzdGVuZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRXZlbnRMaXN0ZW5lci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMjExOSw2ICsyMjEyMSw3IEBACiAJCQkJNTE4ODY0REYx
QkJBRjMwRjAwRTU0MEM5IC8qIFVuaXF1ZUlEQkRhdGFiYXNlLmggKi8sCiAJCQkJNTE5OEY3QTIx
QkJEQUEyOTAwRTJDQzVGIC8qIFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5jcHAgKi8sCiAJ
CQkJNTE5OEY3QTMxQkJEQUEyOTAwRTJDQzVGIC8qIFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlv
bi5oICovLAorCQkJCTkzQjYzMUUwMjdBQkExRTIwMDQ0M0E0NCAvKiBVbmlxdWVJREJEYXRhYmFz
ZU1hbmFnZXIuaCAqLywKIAkJCQk1MTk4RjdBNjFCQkREMzgxMDBFMkNDNUYgLyogVW5pcXVlSURC
RGF0YWJhc2VUcmFuc2FjdGlvbi5jcHAgKi8sCiAJCQkJNTE5OEY3QTcxQkJERDM4MTAwRTJDQzVG
IC8qIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uaCAqLywKIAkJCSk7CkBAIC0zNzczMSw2
ICszNzczNCw3IEBACiAJCQkJQTg2M0UyMDExMzQzNDEyMDAwMjc0OTI2IC8qIFVuaWNvZGVCaWRp
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTg4NjRFMTFCQkFGNTc0MDBFNTQwQzkgLyogVW5pcXVl
SURCRGF0YWJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxOThGN0E1MUJCREI3OTMwMEUyQ0M1
RiAvKiBVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTkz
QjYzMUUyMjdBQkExRTYwMDQ0M0E0NCAvKiBVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTUxOThGN0E5MUJCREQzODUwMEUyQ0M1RiAvKiBVbmlxdWVJREJEYXRh
YmFzZVRyYW5zYWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNEFGQ0ZBNTBEQUYyOUEzMDBG
NUY1NUMgLyogVW5pdEJlemllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzE4Q0MwQTQyNTgwRUZC
MTAwM0Q3NUZCIC8qIFVuaXZlcnNhbEFjY2Vzc1pvb20uaCBpbiBIZWFkZXJzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCA2ODdjOGRiNjkxMmM4MzZjNzAxNWQxMjIzNTFjMTAw
ZDU5YTYxYzBkLi4yZDQxOThhNGFkZTI2NWYwZjQ5YTg0Y2JhN2JhZmNhNWVkMjNlODljIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtNTIsMTMgKzUyLDEzIEBACiAjaW5jbHVkZSAi
TmV0d29ya1NvY2tldENoYW5uZWxNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtTb2NrZXRT
dHJlYW0uaCIKICNpbmNsdWRlICJOZXR3b3JrU29ja2V0U3RyZWFtTWVzc2FnZXMuaCIKKyNpbmNs
dWRlICJOZXR3b3JrU3RvcmFnZU1hbmFnZXIuaCIKICNpbmNsdWRlICJQaW5nTG9hZC5oIgogI2lu
Y2x1ZGUgIlByZWNvbm5lY3RUYXNrLmgiCiAjaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWxSZW1vdGVN
YW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrTWVzc2FnZXMu
aCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJFcnJv
cnMuaCIKLSNpbmNsdWRlICJXZWJJREJTZXJ2ZXIuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVz
c2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAi
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCkBAIC0zOTAsOCArMzkwLDEyIEBAIGJv
b2wgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lCiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OnVwZGF0ZVF1b3RhQmFzZWRPblNwYWNlVXNhZ2VGb3JUZXN0aW5nKGNvbnN0IENsaWVudE9y
aWdpbiYgb3JpZ2luKQogewotICAgIGF1dG8gc3RvcmFnZVF1b3RhTWFuYWdlciA9IG1fbmV0d29y
a1Byb2Nlc3MtPnN0b3JhZ2VRdW90YU1hbmFnZXIoc2Vzc2lvbklEKCksIG9yaWdpbik7Ci0gICAg
c3RvcmFnZVF1b3RhTWFuYWdlci0+cmVzZXRRdW90YVVwZGF0ZWRCYXNlZE9uVXNhZ2VGb3JUZXN0
aW5nKCk7CisgICAgYXV0byogc2Vzc2lvbiA9IG1fbmV0d29ya1Byb2Nlc3MtPm5ldHdvcmtTZXNz
aW9uKHNlc3Npb25JRCgpKTsKKyAgICBpZiAoIXNlc3Npb24pCisgICAgICAgIHJldHVybjsKKwor
ICAgIGlmIChhdXRvKiBzdG9yYWdlTWFuYWdlciA9IHNlc3Npb24tPnN0b3JhZ2VNYW5hZ2VyKCkp
CisgICAgICAgIHN0b3JhZ2VNYW5hZ2VyLT5yZXNldFF1b3RhVXBkYXRlZEJhc2VkT25Vc2FnZUZv
clRlc3Rpbmcob3JpZ2luKTsKIH0KIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQpAQCAtOTgzLDggKzk4Nywx
MCBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp3cml0ZUJsb2JzVG9UZW1w
b3JhcnlGaWxlc0ZvckluZGV4ZWREQihjb25zdAogICAgICAgICBmb3IgKGF1dG8mIGZpbGUgOiBm
aWxlUmVmZXJlbmNlcykKICAgICAgICAgICAgIGZpbGUtPnJldm9rZUZpbGVBY2Nlc3MoKTsKIAot
ICAgICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKCkpCi0gICAgICAgICAg
ICBzZXNzaW9uLT5lbnN1cmVXZWJJREJTZXJ2ZXIoKS5yZWdpc3RlclRlbXBvcmFyeUJsb2JGaWxl
UGF0aHMobV9jb25uZWN0aW9uLCBmaWxlUGF0aHMpOworICAgICAgICBpZiAoYXV0byogc2Vzc2lv
biA9IG5ldHdvcmtTZXNzaW9uKCkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBzdG9yYWdlTWFu
YWdlciA9IHNlc3Npb24tPnN0b3JhZ2VNYW5hZ2VyKCkpCisgICAgICAgICAgICAgICAgc3RvcmFn
ZU1hbmFnZXItPnJlZ2lzdGVyVGVtcG9yYXJ5QmxvYkZpbGVQYXRocyhtX2Nvbm5lY3Rpb24sIGZp
bGVQYXRocyk7CisgICAgICAgIH0KICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShm
aWxlUGF0aHMpKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggN2M3OWUyYTIwOTc2YTEzOWM3ZjY2N2YxMTNjNDg5
NDZkZWRkNTY0MS4uMTExODFlMjc4YjgyN2U3YzYwMTZkMDEwYmUyYWIyNjYzMWY0ZmU0MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAg
LTI2NCw4ICsyNjQsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkaWRDbG9zZShJUEM6OkNvbm5l
Y3Rpb24mKQogICAgIC8vIE1ha2Ugc3VyZSB3ZSBmbHVzaCBhbGwgY29va2llcyB0byBkaXNrIGJl
Zm9yZSBleGl0aW5nLgogICAgIGZvckVhY2hOZXR3b3JrU2Vzc2lvbihbJl0gKGF1dG8mIHNlc3Np
b24pIHsKICAgICAgICAgcGxhdGZvcm1GbHVzaENvb2tpZXMoc2Vzc2lvbi5zZXNzaW9uSUQoKSwg
W2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKLSAgICAgICAgLy8gTWFrZSBzdXJlIHJlZmVyZW5j
ZSB0byBOZXR3b3JrUHJvY2VzcyBpbiBzcGFjZVJlcXVlc3RlciBpcyByZW1vdmVkLgotICAgICAg
ICBzZXNzaW9uLmNsb3NlSURCU2VydmVyKFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiAgICAg
fSk7CiB9CiAKQEAgLTM4Miw3ICszODAsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjcmVhdGVO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhQcm9jZXNzSWRlbnRpZmllciBpZGVudAogICAg
IGNvbm5lY3Rpb24uc2V0T25MaW5lU3RhdGUoTmV0d29ya1N0YXRlTm90aWZpZXI6OnNpbmdsZXRv
bigpLm9uTGluZSgpKTsKIAogICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24o
c2Vzc2lvbklEKSkgewotICAgICAgICBzZXNzaW9uLT5lbnN1cmVXZWJJREJTZXJ2ZXIoKS5hZGRD
b25uZWN0aW9uKGNvbm5lY3Rpb24uY29ubmVjdGlvbigpLCBpZGVudGlmaWVyKTsKICAgICAgICAg
aWYgKGF1dG8qIG1hbmFnZXIgPSBzZXNzaW9uLT5zdG9yYWdlTWFuYWdlcigpKQogICAgICAgICAg
ICAgbWFuYWdlci0+c3RhcnRSZWNlaXZpbmdNZXNzYWdlRnJvbUNvbm5lY3Rpb24oY29ubmVjdGlv
bi5jb25uZWN0aW9uKCkpOwogICAgIH0KQEAgLTQwNiw4ICs0MDMsNyBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjphZGRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJiYg
cGFyYW1ldGVycwogICAgIGFkZFNlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2VyKHNlc3Npb25JRCwg
cGFyYW1ldGVycy5wZXJPcmlnaW5TdG9yYWdlUXVvdGEsIHBhcmFtZXRlcnMucGVyVGhpcmRQYXJ0
eU9yaWdpblN0b3JhZ2VRdW90YSwgcGFyYW1ldGVycy5jYWNoZVN0b3JhZ2VEaXJlY3RvcnksIHBh
cmFtZXRlcnMuY2FjaGVTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKIAogICAgIGlm
IChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICBz
ZXNzaW9uLT5hZGRTdG9yYWdlTWFuYWdlclNlc3Npb24ocGFyYW1ldGVycy5nZW5lcmFsU3RvcmFn
ZURpcmVjdG9yeSwgcGFyYW1ldGVycy5nZW5lcmFsU3RvcmFnZURpcmVjdG9yeUhhbmRsZSwgcGFy
YW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnksIHBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGly
ZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKLSAgICAgICAgc2Vzc2lvbi0+YWRkSW5kZXhlZERhdGFi
YXNlU2Vzc2lvbihwYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSwgcGFyYW1ldGVy
cy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOworICAgICAgICBzZXNz
aW9uLT5hZGRTdG9yYWdlTWFuYWdlclNlc3Npb24ocGFyYW1ldGVycy5nZW5lcmFsU3RvcmFnZURp
cmVjdG9yeSwgcGFyYW1ldGVycy5nZW5lcmFsU3RvcmFnZURpcmVjdG9yeUhhbmRsZSwgcGFyYW1l
dGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnksIHBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0
b3J5RXh0ZW5zaW9uSGFuZGxlLCBwYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSwg
cGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUsIHBhcmFt
ZXRlcnMuY2FjaGVTdG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLnBlck9yaWdpblN0b3JhZ2VR
dW90YSwgcGFyYW1ldGVycy5wZXJUaGlyZFBhcnR5T3JpZ2luU3RvcmFnZVF1b3RhKTsKICNpZiBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgICAgIHNlc3Npb24tPmFkZFNlcnZpY2VXb3JrZXJT
ZXNzaW9uKHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5h
YmxlZCwgV1RGTW92ZShwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rv
cnkpLCBwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRlbnNp
b25IYW5kbGUpOwogI2VuZGlmCkBAIC0xNDUyLDEzICsxNDQ4LDYgQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNl
dDxXZWJzaXQKICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX3dlYnNpdGVEYXRhLmhvc3RO
YW1lc1dpdGhIU1RTQ2FjaGUgPSBob3N0TmFtZXNXaXRoSFNUU0NhY2hlKHNlc3Npb25JRCk7CiAj
ZW5kaWYKIAotICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlw
ZTo6SW5kZXhlZERCRGF0YWJhc2VzKSAmJiBzZXNzaW9uICYmIHNlc3Npb24tPmhhc0lEQkRhdGFi
YXNlUGF0aCgpKSB7Ci0gICAgICAgIHNlc3Npb24tPmVuc3VyZVdlYklEQlNlcnZlcigpLmdldE9y
aWdpbnMoW2NhbGxiYWNrQWdncmVnYXRvcl0oYXV0byYmIG9yaWdpbnMpIHsKLSAgICAgICAgICAg
IHdoaWxlICghb3JpZ2lucy5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dy
ZWdhdG9yLT5tX3dlYnNpdGVEYXRhLmVudHJpZXMuYXBwZW5kKHsgb3JpZ2lucy50YWtlQW55KCks
IFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzLCAwIH0pOwotICAgICAgICB9KTsK
LSAgICB9Ci0KICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgaWYgKHdlYnNpdGVEYXRh
VHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
cykgJiYgc2Vzc2lvbiAmJiBzZXNzaW9uLT5oYXNTZXJ2aWNlV29ya2VyRGF0YWJhc2VQYXRoKCkp
IHsKICAgICAgICAgc2Vzc2lvbi0+ZW5zdXJlU1dTZXJ2ZXIoKS5nZXRPcmlnaW5zV2l0aFJlZ2lz
dHJhdGlvbnMoW2NhbGxiYWNrQWdncmVnYXRvcl0oY29uc3QgSGFzaFNldDxTZWN1cml0eU9yaWdp
bkRhdGE+JiBzZWN1cml0eU9yaWdpbnMpIG11dGFibGUgewpAQCAtMTUyNSw5ICsxNTE0LDYgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBPcHRpb25TZXQ8V2Vic2kKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlu
cyhXZWJzaXRlRGF0YVR5cGU6OkRPTUNhY2hlKSAmJiBzZXNzaW9uKQogICAgICAgICBDYWNoZVN0
b3JhZ2U6OkVuZ2luZTo6Y2xlYXJBbGxDYWNoZXMoKnNlc3Npb24sIFtjbGVhclRhc2tzSGFuZGxl
cl0geyB9KTsKIAotICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRh
VHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKSAmJiAhc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkgJiYg
c2Vzc2lvbikKLSAgICAgICAgc2Vzc2lvbi0+ZW5zdXJlV2ViSURCU2VydmVyKCkuY2xvc2VBbmRE
ZWxldGVEYXRhYmFzZXNNb2RpZmllZFNpbmNlKG1vZGlmaWVkU2luY2UsIFtjbGVhclRhc2tzSGFu
ZGxlcl0geyB9KTsKLQogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBib29sIGNsZWFy
U2VydmljZVdvcmtlcnMgPSB3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlw
ZTo6RE9NQ2FjaGUpIHx8IHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBl
OjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucyk7CiAgICAgaWYgKGNsZWFyU2VydmljZVdvcmtl
cnMgJiYgIXNlc3Npb25JRC5pc0VwaGVtZXJhbCgpICYmIHNlc3Npb24pCkBAIC0xNjIwLDkgKzE2
MDYsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpbwogICAgICAgICAgICAgQ2FjaGVTdG9yYWdl
OjpFbmdpbmU6OmNsZWFyQ2FjaGVzRm9yT3JpZ2luKCpzZXNzaW9uLCBTZWN1cml0eU9yaWdpbkRh
dGEgeyBvcmlnaW5EYXRhIH0sIFtjbGVhclRhc2tzSGFuZGxlcl0geyB9KTsKICAgICB9CiAKLSAg
ICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWRE
QkRhdGFiYXNlcykgJiYgIXNlc3Npb25JRC5pc0VwaGVtZXJhbCgpICYmIHNlc3Npb24pCi0gICAg
ICAgIHNlc3Npb24tPmVuc3VyZVdlYklEQlNlcnZlcigpLmNsb3NlQW5kRGVsZXRlRGF0YWJhc2Vz
Rm9yT3JpZ2lucyhvcmlnaW5EYXRhcywgW2NsZWFyVGFza3NIYW5kbGVyXSB7IH0pOwotCiAjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGJvb2wgY2xlYXJTZXJ2aWNlV29ya2VycyA9IHdl
YnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSkgfHwgd2Vi
c2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25zKTsKICAgICBpZiAoY2xlYXJTZXJ2aWNlV29ya2VycyAmJiAhc2Vzc2lvbklELmlz
RXBoZW1lcmFsKCkgJiYgc2Vzc2lvbikgewpAQCAtMTgxMSwxNyArMTc5NCw2IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OmRlbGV0ZUFuZFJlc3RyaWN0V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURv
bWFpbnMoUEFMOjpTZXNzCiAgICAgICAgICAgICB9CiAgICAgICAgIH0pOwogICAgIH0KLQotICAg
IGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERC
RGF0YWJhc2VzKSAmJiBzZXNzaW9uICYmIHNlc3Npb24tPmhhc0lEQkRhdGFiYXNlUGF0aCgpKSB7
Ci0gICAgICAgIHNlc3Npb24tPmVuc3VyZVdlYklEQlNlcnZlcigpLmdldE9yaWdpbnMoW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBzZXNzaW9uSUQsIGNhbGxiYWNrQWdncmVn
YXRvciwgZG9tYWluc1RvRGVsZXRlQWxsTm9uQ29va2llV2Vic2l0ZURhdGFGb3JdKGF1dG8mJiBv
cmlnaW5zKSB7Ci0gICAgICAgICAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vz
c2lvbklEKTsKLSAgICAgICAgICAgIGlmICghc2Vzc2lvbiB8fCAhc2Vzc2lvbi0+d2ViSURCU2Vy
dmVyKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICBhdXRvIG9yaWdp
bnNUb0RlbGV0ZSA9IGZpbHRlckZvclJlZ2lzdHJhYmxlRG9tYWlucyhvcmlnaW5zLCBkb21haW5z
VG9EZWxldGVBbGxOb25Db29raWVXZWJzaXRlRGF0YUZvciwgY2FsbGJhY2tBZ2dyZWdhdG9yLT5t
X2RvbWFpbnMpOwotICAgICAgICAgICAgc2Vzc2lvbi0+d2ViSURCU2VydmVyKCktPmNsb3NlQW5k
RGVsZXRlRGF0YWJhc2VzRm9yT3JpZ2lucyhvcmlnaW5zVG9EZWxldGUsIFtjYWxsYmFja0FnZ3Jl
Z2F0b3JdIHsgfSk7Ci0gICAgICAgIH0pOwotICAgIH0KICAgICAKICNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCiAgICAgYm9vbCBjbGVhclNlcnZpY2VXb3JrZXJzID0gd2Vic2l0ZURhdGFUeXBl
cy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkRPTUNhY2hlKSB8fCB3ZWJzaXRlRGF0YVR5cGVz
LmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMpOwpA
QCAtMTk1OCwxMyArMTkzMCw2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlZ2lzdHJhYmxlRG9t
YWluc1dpdGhXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsCiAgICAgICAgIH0p
OwogICAgIH0KICAgICAKLSAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRl
RGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykgJiYgc2Vzc2lvbiAmJiBzZXNzaW9uLT5oYXNJ
REJEYXRhYmFzZVBhdGgoKSkgewotICAgICAgICBzZXNzaW9uLT5lbnN1cmVXZWJJREJTZXJ2ZXIo
KS5nZXRPcmlnaW5zKFtjYWxsYmFja0FnZ3JlZ2F0b3JdKGF1dG8mJiBvcmlnaW5zKSB7Ci0gICAg
ICAgICAgICB3aGlsZSAoIW9yaWdpbnMuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIGNhbGxi
YWNrQWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVuZCh7IG9yaWdpbnMudGFr
ZUFueSgpLCBXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcywgMCB9KTsKLSAgICAg
ICAgfSk7Ci0gICAgfQotICAgIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBpZiAo
d2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25zKSAmJiBzZXNzaW9uICYmIHNlc3Npb24tPmhhc1NlcnZpY2VXb3JrZXJEYXRh
YmFzZVBhdGgoKSkgewogICAgICAgICBzZXNzaW9uLT5lbnN1cmVTV1NlcnZlcigpLmdldE9yaWdp
bnNXaXRoUmVnaXN0cmF0aW9ucyhbY2FsbGJhY2tBZ2dyZWdhdG9yXShjb25zdCBIYXNoU2V0PFNl
Y3VyaXR5T3JpZ2luRGF0YT4mIHNlY3VyaXR5T3JpZ2lucykgbXV0YWJsZSB7CkBAIC0yMTI5LDQz
ICsyMDk0LDEwIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnByb2Nlc3NXaWxsU3VzcGVuZEltbWlu
ZW50bHlGb3JUZXN0aW5nU3luYyhDb21wbGV0aW9uSGFuZGxlCiAgICAgcHJlcGFyZVRvU3VzcGVu
ZCh0cnVlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgTmV0d29ya1By
b2Nlc3M6OnN1c3BlbmRJREJTZXJ2ZXJzKGJvb2wgaXNTdXNwZW5zaW9uSW1taW5lbnQpCi17Ci0g
ICAgbV9zaG91bGRTdXNwZW5kSURCU2VydmVycyA9IHRydWU7Ci0gICAgKyttX3N1c3BlbnNpb25J
ZGVudGlmaWVyOwotCi0gICAgYm9vbCBhbGxTdXNwZW5kZWQgPSB0cnVlOwotICAgIGF1dG8gY29u
ZGl0aW9uID0gaXNTdXNwZW5zaW9uSW1taW5lbnQgPyBXZWJJREJTZXJ2ZXI6OlN1c3BlbnNpb25D
b25kaXRpb246OkFsd2F5cyA6IFdlYklEQlNlcnZlcjo6U3VzcGVuc2lvbkNvbmRpdGlvbjo6SWZJ
ZGxlOwotICAgIGZvckVhY2hOZXR3b3JrU2Vzc2lvbihbJl0oYXV0byYgc2Vzc2lvbikgewotICAg
ICAgICBpZiAoYXV0byogc2VydmVyID0gc2Vzc2lvbi53ZWJJREJTZXJ2ZXIoKSkKLSAgICAgICAg
ICAgIGFsbFN1c3BlbmRlZCAmPSBzZXJ2ZXItPnN1c3BlbmQoY29uZGl0aW9uKTsKLSAgICB9KTsK
LQotICAgIGlmIChhbGxTdXNwZW5kZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaEFmdGVyKDVfcywgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0
aGlzIH0sIHN1c3BlbnNpb25JZGVudGlmaWVyID0gbV9zdXNwZW5zaW9uSWRlbnRpZmllcl0gewot
ICAgICAgICBpZiAoIXdlYWtUaGlzKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlm
ICghbV9zaG91bGRTdXNwZW5kSURCU2VydmVycyB8fCBzdXNwZW5zaW9uSWRlbnRpZmllciAhPSBt
X3N1c3BlbnNpb25JZGVudGlmaWVyKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGZv
ckVhY2hOZXR3b3JrU2Vzc2lvbihbXShhdXRvJiBzZXNzaW9uKSB7Ci0gICAgICAgICAgICBpZiAo
YXV0byogc2VydmVyID0gc2Vzc2lvbi53ZWJJREJTZXJ2ZXIoKSkKLSAgICAgICAgICAgICAgICBz
ZXJ2ZXItPnN1c3BlbmQoV2ViSURCU2VydmVyOjpTdXNwZW5zaW9uQ29uZGl0aW9uOjpBbHdheXMp
OwotICAgICAgICB9KTsKLSAgICB9KTsKLX0KLQogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlcGFy
ZVRvU3VzcGVuZChib29sIGlzU3VzcGVuc2lvbkltbWluZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1
c3BlbnNpb24sICIlcCAtIE5ldHdvcmtQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5kKCksIGlzU3Vz
cGVuc2lvbkltbWluZW50PSVkIiwgdGhpcywgaXNTdXNwZW5zaW9uSW1taW5lbnQpOwogCi0jaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBzdXNwZW5kSURCU2VydmVycyhpc1N1c3BlbnNpb25J
bW1pbmVudCk7Ci0jZW5kaWYKLQogICAgIGxvd01lbW9yeUhhbmRsZXIoQ3JpdGljYWw6Olllcyk7
CiAKICAgICBSZWZQdHI8Q2FsbGJhY2tBZ2dyZWdhdG9yPiBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBD
YWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShbdGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKQEAgLTIyMjMsMTggKzIxNTUsMTAg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVzdW1lKCkKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCiAgICAgICAgIGlmIChhdXRvKiBzd1NlcnZlciA9IHNlc3Npb24uc3dTZXJ2ZXIoKSkKICAg
ICAgICAgICAgIHN3U2VydmVyLT5lbmRTdXNwZW5zaW9uKCk7Ci0jZW5kaWYKLSNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQotICAgICAgICBpZiAoYXV0byogc2VydmVyID0gc2Vzc2lvbi53ZWJJREJT
ZXJ2ZXIoKSkKLSAgICAgICAgICAgIHNlcnZlci0+cmVzdW1lKCk7CiAjZW5kaWYKICAgICAgICAg
aWYgKGF1dG8qIG1hbmFnZXIgPSBzZXNzaW9uLnN0b3JhZ2VNYW5hZ2VyKCkpCiAgICAgICAgICAg
ICBtYW5hZ2VyLT5yZXN1bWUoKTsKICAgICB9KTsKLQotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
Ci0gICAgbV9zaG91bGRTdXNwZW5kSURCU2VydmVycyA9IGZhbHNlOwotI2VuZGlmCiB9CiAKIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OnByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCkBA
IC0yMjgxLDEyICsyMjA1LDEyIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnN5bmNMb2NhbFN0b3Jh
Z2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kCiAKIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OnJlc2V0UXVvdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgTG9ja2VyIGxv
Y2tlciB7IG1fc2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXJzTG9jayB9OwotICAgIGlmIChhdXRv
KiBzZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlciA9IG1fc2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFn
ZXJzLmdldChzZXNzaW9uSUQpKSB7Ci0gICAgICAgIGZvciAoYXV0byBzdG9yYWdlUXVvdGFNYW5h
Z2VyIDogc2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXItPmV4aXN0aW5nU3RvcmFnZVF1b3RhTWFu
YWdlcnMoKSkKLSAgICAgICAgICAgIHN0b3JhZ2VRdW90YU1hbmFnZXItPnJlc2V0UXVvdGFGb3JU
ZXN0aW5nKCk7Ci0gICAgfQotICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgYXV0byogc2Vz
c2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7CisgICAgaWYgKCFzZXNzaW9uKQorICAg
ICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoKTsKKworICAgIGlmIChhdXRvKiBzdG9yYWdl
TWFuYWdlciA9IHNlc3Npb24tPnN0b3JhZ2VNYW5hZ2VyKCkpCisgICAgICAgIHN0b3JhZ2VNYW5h
Z2VyLT5yZXNldFF1b3RhRm9yVGVzdGluZyhXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9
CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNsZWFyU3RvcmFnZShQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAg
LTIyOTgsNiArMjIyMiwxNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVhclN0b3JhZ2UoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2bwogICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcigpOwogfQogCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpkaWRJbmNyZWFzZVF1
b3RhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4s
IFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllciBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiBuZXdRdW90YSkKK3sKKyAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Np
b24oc2Vzc2lvbklEKTsKKyAgICBpZiAoIXNlc3Npb24pCisgICAgICAgIHJldHVybjsKKworICAg
IGlmIChhdXRvKiBtYW5hZ2VyID0gc2Vzc2lvbi0+c3RvcmFnZU1hbmFnZXIoKSkKKyAgICAgICAg
bWFuYWdlci0+ZGlkSW5jcmVhc2VRdW90YShvcmlnaW4sIGlkZW50aWZpZXIsIG5ld1F1b3RhKTsK
K30KKwogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVuYW1lT3JpZ2luSW5XZWJzaXRlRGF0YShQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgb2xkTmFtZSwgY29uc3QgVVJMJiBuZXdO
YW1lLCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvIGFnZ3JlZ2F0b3Ig
PSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CkBAIC0yMzEwLDkgKzIyNDQsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZW5hbWVPcmlnaW5J
bldlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVQogICAgIGF1dG8q
IHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOwogICAgIGlmIChhdXRvKiBtYW5h
Z2VyID0gc2Vzc2lvbiA/IHNlc3Npb24tPnN0b3JhZ2VNYW5hZ2VyKCkgOiBudWxscHRyKQogICAg
ICAgICBtYW5hZ2VyLT5tb3ZlRGF0YShvbGRPcmlnaW4sIG5ld09yaWdpbiwgW2FnZ3JlZ2F0b3Jd
IHsgfSk7Ci0KLSAgICBpZiAoZGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5k
ZXhlZERCRGF0YWJhc2VzKSAmJiBzZXNzaW9uICYmIHNlc3Npb24tPmhhc0lEQkRhdGFiYXNlUGF0
aCgpKQotICAgICAgICBzZXNzaW9uLT5lbnN1cmVXZWJJREJTZXJ2ZXIoKS5yZW5hbWVPcmlnaW4o
b2xkT3JpZ2luLCBuZXdPcmlnaW4sIFthZ2dyZWdhdG9yXSB7IH0pOwogfQogCiAjaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQpAQCAtMjM3Miw3ICsyMzAzLDggQEAgUmVmUHRyPFN0b3JhZ2VRdW90
YU1hbmFnZXI+IE5ldHdvcmtQcm9jZXNzOjpzdG9yYWdlUXVvdGFNYW5hZ2VyKFBBTDo6U2Vzc2lv
bklEIHMKICAgICBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpVc2FnZUdldHRlciB1c2FnZUdldHRlciA9
IFtjYWNoZVJvb3RQYXRoID0gc2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXItPmNhY2hlUm9vdFBh
dGgoKS5pc29sYXRlZENvcHkoKSwgaWRiUm9vdFBhdGggPSBpZGJSb290UGF0aC5pc29sYXRlZENv
cHkoKSwgb3JpZ2luID0gb3JpZ2luLmlzb2xhdGVkQ29weSgpXSgpIHsKICAgICAgICAgQVNTRVJU
KCFpc01haW5SdW5Mb29wKCkpOwogCi0gICAgICAgIHJldHVybiBDYWNoZVN0b3JhZ2U6OkVuZ2lu
ZTo6ZGlza1VzYWdlKGNhY2hlUm9vdFBhdGgsIG9yaWdpbikgKyBJREJTZXJ2ZXI6OklEQlNlcnZl
cjo6ZGlza1VzYWdlKGlkYlJvb3RQYXRoLCBvcmlnaW4pOworICAgICAgICBhdXRvIGNhY2hlU3Rv
cmFnZVBhdGggPSBDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6c3RvcmFnZVBhdGgoY2FjaGVSb290UGF0
aCwgb3JpZ2luKTsKKyAgICAgICAgcmV0dXJuIENhY2hlU3RvcmFnZTo6RW5naW5lOjpkaXNrVXNh
Z2UoY2FjaGVTdG9yYWdlUGF0aCkgKyBJREJTZXJ2ZXI6OklEQlNlcnZlcjo6ZGlza1VzYWdlKGlk
YlJvb3RQYXRoLCBvcmlnaW4pOwogICAgIH07CiAgICAgU3RvcmFnZVF1b3RhTWFuYWdlcjo6UXVv
dGFJbmNyZWFzZVJlcXVlc3RlciBxdW90YUluY3JlYXNlUmVxdWVzdGVyID0gW3RoaXMsIHdlYWtU
aGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHNlc3Npb25JRCwgb3JpZ2luXSAodWludDY0X3QgY3Vy
cmVudFF1b3RhLCB1aW50NjRfdCBjdXJyZW50U3BhY2UsIHVpbnQ2NF90IHJlcXVlc3RlZEluY3Jl
YXNlLCBhdXRvJiYgY2FsbGJhY2spIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7
CkBAIC0yNTg2LDggKzI1MTgsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZW1vdmVLZXB0QWxp
dmVMb2FkKE5ldHdvcmtSZXNvdXJjZUxvYWRlciYgbG9hZGVyKQogdm9pZCBOZXR3b3JrUHJvY2Vz
czo6Y29ubmVjdGlvblRvV2ViUHJvY2Vzc0Nsb3NlZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9
IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHNlcnZlciA9
IHNlc3Npb24tPndlYklEQlNlcnZlcigpKQotICAgICAgICAgICAgc2VydmVyLT5yZW1vdmVDb25u
ZWN0aW9uKGNvbm5lY3Rpb24pOwogICAgICAgICBpZiAoYXV0byogbWFuYWdlciA9IHNlc3Npb24t
PnN0b3JhZ2VNYW5hZ2VyKCkpCiAgICAgICAgICAgICBtYW5hZ2VyLT5zdG9wUmVjZWl2aW5nTWVz
c2FnZUZyb21Db25uZWN0aW9uKGNvbm5lY3Rpb24pOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCA3ODc3OTI3YTE3YzU1OTZlYjAz
YmQ0YWNmNGQ1OGU0MThhYzhiYTIzLi4wZjg1MzNlZDEzZGQyNjI3N2E2ZGQ1MmFiNmRhYmUyMGMz
ZTA4ODA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFj
a2VyLmgiCiAjaW5jbHVkZSAiTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuaCIKICNpbmNs
dWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlF1b3RhSW5j
cmVhc2VSZXF1ZXN0SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVsUmVtb3Rl
TWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUg
IldlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCIKQEAgLTI4OCwxMiArMjg5LDExIEBAIHB1YmxpYzoK
ICAgICBOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlciYgbmV0d29ya0NvbnRlbnRSdWxlTGlz
dE1hbmFnZXIoKSB7IHJldHVybiBtX25ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyOyB9CiAj
ZW5kaWYKIAotICAgIGJvb2wgc2hvdWxkU3VzcGVuZElEQlNlcnZlcnMoKSBjb25zdCB7IHJldHVy
biBtX3Nob3VsZFN1c3BlbmRJREJTZXJ2ZXJzOyB9Ci0KICAgICB2b2lkIHN5bmNMb2NhbFN0b3Jh
Z2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAogICAgIHZvaWQgcmVzZXRRdW90YShQ
QUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGNs
ZWFyU3RvcmFnZShQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
KyAgICB2b2lkIGRpZEluY3JlYXNlUXVvdGEoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6
OkNsaWVudE9yaWdpbiYsIFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllciwgc3RkOjpvcHRp
b25hbDx1aW50NjRfdD4gbmV3UXVvdGEpOwogICAgIHZvaWQgcmVuYW1lT3JpZ2luSW5XZWJzaXRl
RGF0YShQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiwgT3B0aW9uU2V0PFdl
YnNpdGVEYXRhVHlwZT4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKICNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQpAQCAtNDczLDggKzQ3Myw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBy
ZWdpc3RlclVSTFNjaGVtZUFzTm9BY2Nlc3MoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAgdm9p
ZCByZWdpc3RlclVSTFNjaGVtZUFzQ09SU0VuYWJsZWQoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAK
LSAgICB2b2lkIHN1c3BlbmRJREJTZXJ2ZXJzKGJvb2wgaXNTdXNwZW5zaW9uSW1taW5lbnQpOwot
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIHNldElzSG9sZGluZ0xvY2tlZEZp
bGVzKGJvb2wpOwogI2VuZGlmCkBAIC00ODIsNiArNDgwLDcgQEAgcHJpdmF0ZToKICAgICBjbGFz
cyBTZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlciB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogICAgIHB1YmxpYzoKKyAgICAgICAgU2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXIo
KSA9IGRlbGV0ZTsKICAgICAgICAgU2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXIoY29uc3QgU3Ry
aW5nJiBjYWNoZVJvb3RQYXRoLCB1aW50NjRfdCBkZWZhdWx0UXVvdGEsIHVpbnQ2NF90IGRlZmF1
bHRUaGlyZFBhcnR5UXVvdGEpCiAgICAgICAgICAgICA6IG1fY2FjaGVSb290UGF0aChjYWNoZVJv
b3RQYXRoKQogICAgICAgICAgICAgLCBtX2RlZmF1bHRRdW90YShkZWZhdWx0UXVvdGEpCkBAIC01
MDgsOCArNTA3LDggQEAgcHJpdmF0ZToKICAgICBwcml2YXRlOgogICAgICAgICBTdHJpbmcgbV9j
YWNoZVJvb3RQYXRoOwogICAgICAgICBTdHJpbmcgbV9pZGJSb290UGF0aDsKLSAgICAgICAgdWlu
dDY0X3QgbV9kZWZhdWx0UXVvdGEgeyBXZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2VyOjpkZWZh
dWx0UXVvdGEoKSB9OwotICAgICAgICB1aW50NjRfdCBtX2RlZmF1bHRUaGlyZFBhcnR5UXVvdGEg
eyBXZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2VyOjpkZWZhdWx0VGhpcmRQYXJ0eVF1b3RhKCkg
fTsKKyAgICAgICAgdWludDY0X3QgbV9kZWZhdWx0UXVvdGE7CisgICAgICAgIHVpbnQ2NF90IG1f
ZGVmYXVsdFRoaXJkUGFydHlRdW90YTsKICAgICAgICAgSGFzaE1hcDxXZWJDb3JlOjpDbGllbnRP
cmlnaW4sIFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2VyPj4gbV9zdG9yYWdlUXVv
dGFNYW5hZ2VyczsKICAgICB9OwogICAgIHZvaWQgYWRkU2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFn
ZXIoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IGRlZmF1bHRRdW90YSwgdWludDY0X3QgZGVmYXVs
dFRoaXJkUGFydHlRdW90YSwgY29uc3QgU3RyaW5nJiBjYWNoZVJvb3RQYXRoLCBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGUmKTsKQEAgLTU0OSw5ICs1NDgsNiBAQCBwcml2YXRlOgogICAgIFdlYlNR
TGl0ZURhdGFiYXNlVHJhY2tlciBtX3dlYlNRTGl0ZURhdGFiYXNlVHJhY2tlcjsKICAgICBSZWZQ
dHI8UHJvY2Vzc0Fzc2VydGlvbj4gbV9ob2xkaW5nTG9ja2VkRmlsZUFzc2VydGlvbjsKICNlbmRp
ZgotCi0gICAgYm9vbCBtX3Nob3VsZFN1c3BlbmRJREJTZXJ2ZXJzIHsgZmFsc2UgfTsKLSAgICB1
aW50NjRfdCBtX3N1c3BlbnNpb25JZGVudGlmaWVyIHsgMCB9OwogICAgIAogI2lmIEVOQUJMRShX
RUJfUlRDKQogICAgIFJlZlB0cjxSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXJQcm94eT4gbV9y
dGNEYXRhQ2hhbm5lbFByb3h5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggNjM3ZTE1OWYxODYzOTNiZWM1
Y2MwNWFiNWJkNTc4MGJlOGM2ZmNlNC4uNjMxZTJiNjA3M2MwMTkyMTMwNjhjMjA5NmI4MjdiMjc5
ZGJjN2RlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0xNzksNiArMTc5LDcgQEAgbWVzc2FnZXMgLT4g
TmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogCiAgICAgUmVzZXRRdW90YShQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQpIC0+ICgpIEFzeW5jCiAgICAgQ2xlYXJTdG9yYWdlKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCkgLT4gKCkgQXN5bmMKKyAgICBEaWRJbmNyZWFzZVF1b3RhKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RydWN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiBvcmlnaW4s
IFdlYktpdDo6UXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyIGlkZW50aWZpZXIsIHN0ZDo6
b3B0aW9uYWw8dWludDY0X3Q+IG5ld1F1b3RhKQogICAgIAogI2lmIEVOQUJMRShBUFBfQk9VTkRf
RE9NQUlOUykKICAgICBIYXNBcHBCb3VuZFNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
KSAtPiAoYm9vbCBoYXNBcHBCb3VuZFNlc3Npb24pIEFzeW5jCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCmluZGV4IGUyYjI0ZDgzMjJiNmVjMWMz
NzcwMWRjYWQ0OTc1MzRjZWYyMzFhMjYuLjljNGJlMmI2MTg5NDc0Y2NmMjRiZTcwYjExMjcyOTE4
ZmMwMmIzZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Nlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nl
c3Npb24uY3BwCkBAIC0yMDQsOCArMjA0LDYgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbjo6aW52YWxp
ZGF0ZUFuZENhbmNlbCgpCiAgICAgaWYgKG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcykKICAgICAg
ICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5pbnZhbGlkYXRlQW5kQ2FuY2VsKCk7CiAjZW5k
aWYKLSAgICBpZiAoYXV0byBzZXJ2ZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fd2ViSURCU2VydmVyLCBu
dWxscHRyKSkKLSAgICAgICAgc2VydmVyLT5jbG9zZSgpOwogICAgIGlmIChhdXRvIG1hbmFnZXIg
PSBzdGQ6OmV4Y2hhbmdlKG1fc3RvcmFnZU1hbmFnZXIsIG51bGxwdHIpKQogICAgICAgICBtYW5h
Z2VyLT5jbG9zZSgpOwogICAgIG1fY2FjaGVFbmdpbmUgPSBudWxscHRyOwpAQCAtNjUzLDU1ICs2
NTEsMTggQEAgYm9vbCBOZXR3b3JrU2Vzc2lvbjo6aGFzU2VydmljZVdvcmtlckRhdGFiYXNlUGF0
aCgpIGNvbnN0CiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKLVdlYklEQlNl
cnZlciYgTmV0d29ya1Nlc3Npb246OmVuc3VyZVdlYklEQlNlcnZlcigpCi17Ci0gICAgaWYgKCFt
X3dlYklEQlNlcnZlcikgewotICAgICAgICBTdHJpbmcgcGF0aDsKLSAgICAgICAgaWYgKCFzZXNz
aW9uSUQoKS5pc0VwaGVtZXJhbCgpKSB7Ci0gICAgICAgICAgICBBU1NFUlQoIW1faWRiRGF0YWJh
c2VQYXRoLmlzTnVsbCgpKTsKLSAgICAgICAgICAgIHBhdGggPSBtX2lkYkRhdGFiYXNlUGF0aDsK
LSAgICAgICAgfQotCi0gICAgICAgIGF1dG8gc3BhY2VSZXF1ZXN0ZXIgPSBbbmV0d29ya1Byb2Nl
c3MgPSBSZWYgeyBuZXR3b3JrUHJvY2VzcygpIH0sIHNlc3Npb25JRCA9IHNlc3Npb25JRCgpXShj
b25zdCBhdXRvJiBvcmlnaW4sIHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkKSB7Ci0gICAgICAgICAg
ICByZXR1cm4gbmV0d29ya1Byb2Nlc3MtPnN0b3JhZ2VRdW90YU1hbmFnZXIoc2Vzc2lvbklELCBv
cmlnaW4pLT5yZXF1ZXN0U3BhY2VPbkJhY2tncm91bmRUaHJlYWQoc3BhY2VSZXF1ZXN0ZWQpOwot
ICAgICAgICB9OwotCi0gICAgICAgIG1fd2ViSURCU2VydmVyID0gV2ViSURCU2VydmVyOjpjcmVh
dGUoc2Vzc2lvbklEKCksIHBhdGgsIFdURk1vdmUoc3BhY2VSZXF1ZXN0ZXIpKTsKLSAgICAgICAg
aWYgKG5ldHdvcmtQcm9jZXNzKCkuc2hvdWxkU3VzcGVuZElEQlNlcnZlcnMoKSkKLSAgICAgICAg
ICAgIG1fd2ViSURCU2VydmVyLT5zdXNwZW5kKFdlYklEQlNlcnZlcjo6U3VzcGVuc2lvbkNvbmRp
dGlvbjo6QWx3YXlzKTsKLSAgICB9Ci0gICAgcmV0dXJuICptX3dlYklEQlNlcnZlcjsKLX0KLQot
dm9pZCBOZXR3b3JrU2Vzc2lvbjo6Y2xvc2VJREJTZXJ2ZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIGlmICghbV93ZWJJREJTZXJ2ZXIpCi0g
ICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcigpOwotCi0gICAgc3RkOjpleGNoYW5nZSht
X3dlYklEQlNlcnZlciwgbnVsbHB0ciktPmNsb3NlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKLX0KLQotdm9pZCBOZXR3b3JrU2Vzc2lvbjo6YWRkSW5kZXhlZERhdGFiYXNlU2Vzc2lvbihj
b25zdCBTdHJpbmcmIGluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSwgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlJiBoYW5kbGUpCi17Ci0gICAgLy8gKioqKioqKioqCi0gICAgLy8gSU1QT1JUQU5UOiBE
byBub3QgY2hhbmdlIHRoZSBkaXJlY3Rvcnkgc3RydWN0dXJlIGZvciBpbmRleGVkIGRhdGFiYXNl
cyBvbiBkaXNrIHdpdGhvdXQgZmlyc3QgY29uc3VsdGluZyBhIHJldmlld2VyIGZyb20gQXBwbGUg
KDxyZGFyOi8vcHJvYmxlbS8xNzQ1NDcxMj4pCi0gICAgLy8gKioqKioqKioqCi0gICAgYXV0byBp
c05ldyA9IG1faWRiRGF0YWJhc2VQYXRoLmlzTnVsbCgpOwotICAgIG1faWRiRGF0YWJhc2VQYXRo
ID0gaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5OwotICAgIGlmIChpc05ldykgewotICAgICAgICBT
YW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkoaGFuZGxlKTsKLSAgICAgICAgbmV0
d29ya1Byb2Nlc3MoKS5zZXRTZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlcklEQlJvb3RQYXRoKHNl
c3Npb25JRCgpLCBpbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkpOwotICAgIH0KLX0KLQotdm9pZCBO
ZXR3b3JrU2Vzc2lvbjo6YWRkU3RvcmFnZU1hbmFnZXJTZXNzaW9uKGNvbnN0IFN0cmluZyYgZ2Vu
ZXJhbFN0b3JhZ2VQYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIGdlbmVyYWxTdG9yYWdl
UGF0aEhhbmRsZSwgY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VQYXRoLCBTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGUmIGxvY2FsU3RvcmFnZVBhdGhIYW5kbGUpCit2b2lkIE5ldHdvcmtTZXNzaW9u
OjphZGRTdG9yYWdlTWFuYWdlclNlc3Npb24oY29uc3QgU3RyaW5nJiBnZW5lcmFsU3RvcmFnZVBh
dGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgZ2VuZXJhbFN0b3JhZ2VQYXRoSGFuZGxlLCBj
b25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZVBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYg
bG9jYWxTdG9yYWdlUGF0aEhhbmRsZSwgY29uc3QgU3RyaW5nJiBpZGJTdG9yYWdlUGF0aCwgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBpZGJTdG9yYWdlUGF0aEhhbmRsZSwgY29uc3QgU3RyaW5n
JiBjYWNoZVN0b3JhZ2VQYXRoLCB1aW50NjRfdCBkZWZhdWx0T3JpZ2luUXVvdGEsIHVpbnQ2NF90
IGRlZmF1bHRUaGlyZFBhcnR5UXVvdGEpCiB7CiAgICAgaWYgKG1fc3RvcmFnZU1hbmFnZXIpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRs
eShnZW5lcmFsU3RvcmFnZVBhdGhIYW5kbGUpOwogICAgIFNhbmRib3hFeHRlbnNpb246OmNvbnN1
bWVQZXJtYW5lbnRseShsb2NhbFN0b3JhZ2VQYXRoSGFuZGxlKTsKLSAgICBtX3N0b3JhZ2VNYW5h
Z2VyID0gTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjcmVhdGUoc2Vzc2lvbklEKCksIGdlbmVyYWxT
dG9yYWdlUGF0aCwgbG9jYWxTdG9yYWdlUGF0aCk7CisgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29u
c3VtZVBlcm1hbmVudGx5KGlkYlN0b3JhZ2VQYXRoSGFuZGxlKTsKKyAgICBJUEM6OkNvbm5lY3Rp
b246OlVuaXF1ZUlEIGNvbm5lY3Rpb25JRDsKKyAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IG5l
dHdvcmtQcm9jZXNzKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKSkKKyAgICAgICAgY29ubmVj
dGlvbklEID0gY29ubmVjdGlvbi0+dW5pcXVlSUQoKTsKKyAgICBtX3N0b3JhZ2VNYW5hZ2VyID0g
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjcmVhdGUoc2Vzc2lvbklEKCksIGNvbm5lY3Rpb25JRCwg
Z2VuZXJhbFN0b3JhZ2VQYXRoLCBsb2NhbFN0b3JhZ2VQYXRoLCBpZGJTdG9yYWdlUGF0aCwgY2Fj
aGVTdG9yYWdlUGF0aCwgZGVmYXVsdE9yaWdpblF1b3RhLCBkZWZhdWx0VGhpcmRQYXJ0eVF1b3Rh
KTsKIH0KIAogdm9pZCBOZXR3b3JrU2Vzc2lvbjo6ZW5zdXJlQ2FjaGVFbmdpbmUoRnVuY3Rpb248
dm9pZChDYWNoZVN0b3JhZ2U6OkVuZ2luZSYpPiYmIGNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCmluZGV4IDE5MzA3Y2Y0MGJlM2IyZjI2
MDU3ZDAxNmM3NjZlZGNlNDk4Yzk1NDIuLmJhYTEyMjQ1Y2YyMjY0ZDkyMTU3ZGRlNDcxZDJlNGIx
MDJiYzI5N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNz
aW9uLmgKQEAgLTIxMCwxNCArMjEwLDggQEAgcHVibGljOgogICAgIHZvaWQgYWRkU2VydmljZVdv
cmtlclNlc3Npb24oYm9vbCBwcm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQsIFN0cmluZyYm
IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnksIGNvbnN0IFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZSYpOwogI2VuZGlmCiAKLSAgICBXZWJJREJTZXJ2ZXIqIHdlYklEQlNlcnZlcigp
IHsgcmV0dXJuIG1fd2ViSURCU2VydmVyLmdldCgpOyB9Ci0gICAgV2ViSURCU2VydmVyJiBlbnN1
cmVXZWJJREJTZXJ2ZXIoKTsKLSAgICB2b2lkIGNsb3NlSURCU2VydmVyKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBhZGRJbmRleGVkRGF0YWJhc2VTZXNzaW9uKGNvbnN0
IFN0cmluZyYgaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUmKTsKLSAgICBib29sIGhhc0lEQkRhdGFiYXNlUGF0aCgpIGNvbnN0IHsgcmV0dXJuICFtX2lk
YkRhdGFiYXNlUGF0aC5pc0VtcHR5KCk7IH0KLQogICAgIE5ldHdvcmtTdG9yYWdlTWFuYWdlciog
c3RvcmFnZU1hbmFnZXIoKSB7IHJldHVybiBtX3N0b3JhZ2VNYW5hZ2VyLmdldCgpOyB9Ci0gICAg
dm9pZCBhZGRTdG9yYWdlTWFuYWdlclNlc3Npb24oY29uc3QgU3RyaW5nJiBnZW5lcmFsU3RvcmFn
ZVBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgZ2VuZXJhbFN0b3JhZ2VQYXRoSGFuZGxl
LCBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZVBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZSYgbG9jYWxTdG9yYWdlUGF0aEhhbmRsZSk7CisgICAgdm9pZCBhZGRTdG9yYWdlTWFuYWdlclNl
c3Npb24oY29uc3QgU3RyaW5nJiBnZW5lcmFsU3RvcmFnZVBhdGgsIFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZSYgZ2VuZXJhbFN0b3JhZ2VQYXRoSGFuZGxlLCBjb25zdCBTdHJpbmcmIGxvY2FsU3Rv
cmFnZVBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgbG9jYWxTdG9yYWdlUGF0aEhhbmRs
ZSwgY29uc3QgU3RyaW5nJiBpZGJTdG9yYWdlUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
JiBpZGJTdG9yYWdlUGF0aEhhbmRsZSwgY29uc3QgU3RyaW5nJiBjYWNoZVN0b3JhZ2VQYXRoLCB1
aW50NjRfdCBkZWZhdWx0T3JpZ2luUXVvdGEsIHVpbnQ2NF90IGRlZmF1bHRUaGlyZFBhcnR5UXVv
dGEpOwogCiAgICAgQ2FjaGVTdG9yYWdlOjpFbmdpbmUqIGNhY2hlRW5naW5lKCkgeyByZXR1cm4g
bV9jYWNoZUVuZ2luZS5nZXQoKTsgfQogICAgIHZvaWQgZW5zdXJlQ2FjaGVFbmdpbmUoRnVuY3Rp
b248dm9pZChDYWNoZVN0b3JhZ2U6OkVuZ2luZSYpPiYmKTsKQEAgLTMxOSw5ICszMTMsNiBAQCBw
cm90ZWN0ZWQ6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNXU2VydmVyPiBtX3N3U2Vy
dmVyOwogI2VuZGlmCiAKLSAgICBTdHJpbmcgbV9pZGJEYXRhYmFzZVBhdGg7Ci0gICAgUmVmUHRy
PFdlYklEQlNlcnZlcj4gbV93ZWJJREJTZXJ2ZXI7Ci0KICAgICBSZWZQdHI8TmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyPiBtX3N0b3JhZ2VNYW5hZ2VyOwogICAgIFJlZlB0cjxDYWNoZVN0b3JhZ2U6OkVu
Z2luZT4gbV9jYWNoZUVuZ2luZTsKICAgICBWZWN0b3I8RnVuY3Rpb248dm9pZChDYWNoZVN0b3Jh
Z2U6OkVuZ2luZSYpPj4gbV9jYWNoZVN0b3JhZ2VQYXJhbWV0ZXJzQ2FsbGJhY2tzOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdp
bmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VF
bmdpbmUuY3BwCmluZGV4IGMyMDBjZThiNWViNGMzYTAzNjU3ZTgyMjY4OTkwMmI0NmRiZjhhYjAu
LjFhMDkwN2RkNDBiM2ZjNzhlZGU5NzM3MmM5MjA1YTExODZiNDAzMTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2lu
ZS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJOZXR3b3JrQ2FjaGVJT0NoYW5uZWwu
aCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtTZXNzaW9u
LmgiCisjaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2Vic2l0
ZURhdGFUeXBlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DYWNoZVF1ZXJ5T3B0aW9ucy5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUmV0cmlldmVSZWNvcmRzT3B0aW9ucy5oPgpAQCAtMjAzLDQwICsyMDQs
NDkgQEAgc3RhdGljIHVpbnQ2NF90IGdldERpcmVjdG9yeVNpemUoY29uc3QgU3RyaW5nJiBkaXJl
Y3RvcnlQYXRoKQogICAgIHJldHVybiBkaXJlY3RvcnlTaXplOwogfQogCi11aW50NjRfdCBFbmdp
bmU6OmRpc2tVc2FnZShjb25zdCBTdHJpbmcmIHJvb3RQYXRoLCBjb25zdCBXZWJDb3JlOjpDbGll
bnRPcmlnaW4mIG9yaWdpbikKK1N0cmluZyBFbmdpbmU6OnN0b3JhZ2VQYXRoKGNvbnN0IFN0cmlu
ZyYgcm9vdERpcmVjdG9yeSwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4pCiB7
CiAgICAgQVNTRVJUKCFpc01haW5SdW5Mb29wKCkpOworICAgIAorICAgIGlmIChyb290RGlyZWN0
b3J5LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKLSAgICBpZiAo
cm9vdFBhdGguaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIFN0cmluZyBzYWx0
UGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyb290UGF0aCwgInNh
bHQiX3MpOworICAgIFN0cmluZyBzYWx0UGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChyb290RGlyZWN0b3J5LCAic2FsdCJfcyk7CiAgICAgYXV0byBzYWx0ID0gRmls
ZVN5c3RlbTo6cmVhZE9yTWFrZVNhbHQoc2FsdFBhdGgpOwogICAgIGlmICghc2FsdCkKLSAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCiAgICAgS2V5IGtl
eShvcmlnaW4udG9wT3JpZ2luLnRvU3RyaW5nKCksIG9yaWdpbi5jbGllbnRPcmlnaW4udG9TdHJp
bmcoKSwgeyB9LCB7IH0sICpzYWx0KTsKLSAgICBTdHJpbmcgZGlyZWN0b3J5UGF0aCA9IEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyb290UGF0aCwga2V5Lmhhc2hBc1N0cmlu
ZygpKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJv
b3REaXJlY3RvcnksIGtleS5oYXNoQXNTdHJpbmcoKSk7Cit9CisKK3VpbnQ2NF90IEVuZ2luZTo6
ZGlza1VzYWdlKGNvbnN0IFN0cmluZyYgb3JpZ2luRGlyZWN0b3J5KQoreworICAgIEFTU0VSVCgh
aXNNYWluUnVuTG9vcCgpKTsKKworICAgIGlmIChvcmlnaW5EaXJlY3RvcnkuaXNFbXB0eSgpKQor
ICAgICAgICByZXR1cm4gMDsKIAotICAgIFN0cmluZyBzaXplRmlsZVBhdGggPSBDYWNoZXM6OmNh
Y2hlc1NpemVGaWxlbmFtZShkaXJlY3RvcnlQYXRoKTsKKyAgICBTdHJpbmcgc2l6ZUZpbGVQYXRo
ID0gQ2FjaGVzOjpjYWNoZXNTaXplRmlsZW5hbWUob3JpZ2luRGlyZWN0b3J5KTsKICAgICBpZiAo
YXV0byByZWNvcmRlZFNpemUgPSByZWFkU2l6ZUZpbGUoc2l6ZUZpbGVQYXRoKSkKICAgICAgICAg
cmV0dXJuICpyZWNvcmRlZFNpemU7CiAKLSAgICByZXR1cm4gZ2V0RGlyZWN0b3J5U2l6ZShkaXJl
Y3RvcnlQYXRoKTsKKyAgICByZXR1cm4gZ2V0RGlyZWN0b3J5U2l6ZShvcmlnaW5EaXJlY3Rvcnkp
OwogfQogCi12b2lkIEVuZ2luZTo6cmVxdWVzdFNwYWNlKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9y
aWdpbiYgb3JpZ2luLCB1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChXZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbik+JiYgY2FsbGJhY2sp
Cit2b2lkIEVuZ2luZTo6cmVxdWVzdFNwYWNlKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYg
b3JpZ2luLCB1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJiBjYWxsYmFjaykKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAg
aWYgKCFtX25ldHdvcmtQcm9jZXNzKQotICAgICAgICBjYWxsYmFjayhXZWJDb3JlOjpTdG9yYWdl
UXVvdGFNYW5hZ2VyOjpEZWNpc2lvbjo6RGVueSk7CisgICAgICAgIGNhbGxiYWNrKGZhbHNlKTsK
IAotICAgIFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2VyPiBzdG9yYWdlUXVvdGFN
YW5hZ2VyID0gbV9uZXR3b3JrUHJvY2Vzcy0+c3RvcmFnZVF1b3RhTWFuYWdlcihtX3Nlc3Npb25J
RCwgb3JpZ2luKTsKLSAgICBpZiAoIXN0b3JhZ2VRdW90YU1hbmFnZXIpCi0gICAgICAgIGNhbGxi
YWNrKFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uOjpEZW55KTsKKyAgICBh
dXRvKiBzZXNzaW9uID0gbV9uZXR3b3JrUHJvY2Vzcy0+bmV0d29ya1Nlc3Npb24obV9zZXNzaW9u
SUQpOworICAgIGlmICghc2Vzc2lvbikKKyAgICAgICAgY2FsbGJhY2soZmFsc2UpOwogCi0gICAg
c3RvcmFnZVF1b3RhTWFuYWdlci0+cmVxdWVzdFNwYWNlT25NYWluVGhyZWFkKHNwYWNlUmVxdWVz
dGVkLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgaWYgKGF1dG8qIHN0b3JhZ2VNYW5hZ2VyID0g
c2Vzc2lvbi0+c3RvcmFnZU1hbmFnZXIoKSkKKyAgICAgICAgc3RvcmFnZU1hbmFnZXItPnJlcXVl
c3RTcGFjZShvcmlnaW4sIHNwYWNlUmVxdWVzdGVkLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAK
IEVuZ2luZTo6RW5naW5lKE5ldHdvcmtTZXNzaW9uJiBuZXR3b3JrU2Vzc2lvbiwgU3RyaW5nJiYg
cm9vdFBhdGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L0NhY2hlU3RvcmFnZUVuZ2luZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaAppbmRleCAxNDdmYmFjZTE2NzdhNjA4NTkxOGFiNzcyYTll
MTBhMjA2YzY4ODFlLi5mZTNjMWY5MzBkYWUzOTk4Y2QxYzA0YzM0ZGJkZGM1MzU1NWE0NzAyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFn
ZUVuZ2luZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVT
dG9yYWdlRW5naW5lLmgKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJOZXR3b3JrQ2FjaGVE
YXRhLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGEuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NsaWVu
dE9yaWdpbi5oPgotI2luY2x1ZGUgPFdlYkNvcmUvU3RvcmFnZVF1b3RhTWFuYWdlci5oPgogI2lu
Y2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC04NCw4ICs4Myw5IEBAIHB1YmxpYzoKIAogICAgIHN0
YXRpYyB2b2lkIGluaXRpYWxpemVRdW90YVVzZXIoTmV0d29ya1Nlc3Npb24mLCBjb25zdCBXZWJD
b3JlOjpDbGllbnRPcmlnaW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCi0gICAg
c3RhdGljIHVpbnQ2NF90IGRpc2tVc2FnZShjb25zdCBTdHJpbmcmIHJvb3RQYXRoLCBjb25zdCBX
ZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKLSAgICB2b2lkIHJlcXVlc3RTcGFjZShjb25zdCBXZWJD
b3JlOjpDbGllbnRPcmlnaW4mLCB1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbik+JiYpOwor
ICAgIHN0YXRpYyBTdHJpbmcgc3RvcmFnZVBhdGgoY29uc3QgU3RyaW5nJiByb290RGlyZWN0b3J5
LCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKKyAgICBzdGF0aWMgdWludDY0X3QgZGlz
a1VzYWdlKGNvbnN0IFN0cmluZyYgb3JpZ2luRGlyZWN0b3J5KTsKKyAgICB2b2lkIHJlcXVlc3RT
cGFjZShjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCB1aW50NjRfdCBzcGFjZVJlcXVlc3Rl
ZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAKICAgICBib29sIHNob3VsZFBl
cnNpc3QoKSBjb25zdCB7IHJldHVybiAhIW1faW9RdWV1ZTt9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5l
Q2FjaGVzLmNwcAppbmRleCAwNGVkZWNlMWM0YmZlOWVhY2FlMDZhNzA3YzVkZGZmZTAwZTgxMzhl
Li5jMzBjM2JlN2M1YzU1M2JmMjMyOGQ5NTFiNzc0NDQ0MTNiMzJkNmE1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hl
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3Jh
Z2VFbmdpbmVDYWNoZXMuY3BwCkBAIC01MjQsMTQgKzUyNCwxMCBAQCB2b2lkIENhY2hlczo6cmVx
dWVzdFNwYWNlKHVpbnQ2NF90IHNwYWNlUmVxdWlyZWQsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5l
OjpDb21wbAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9lbmdpbmUtPnJlcXVlc3RT
cGFjZShtX29yaWdpbiwgc3BhY2VSZXF1aXJlZCwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayldKGF1dG8gZGVjaXNpb24pIG11dGFibGUgewotICAgICAgICBzd2l0Y2ggKGRlY2lzaW9uKSB7
Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6U3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb246OkRl
bnk6Ci0gICAgICAgICAgICBjYWxsYmFjayhFcnJvcjo6UXVvdGFFeGNlZWRlZCk7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6U3RvcmFnZVF1b3RhTWFuYWdlcjo6
RGVjaXNpb246OkdyYW50OgotICAgICAgICAgICAgY2FsbGJhY2soeyB9KTsKLSAgICAgICAgfTsK
KyAgICBtX2VuZ2luZS0+cmVxdWVzdFNwYWNlKG1fb3JpZ2luLCBzcGFjZVJlcXVpcmVkLCBbY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICAg
ICAgaWYgKCFncmFudGVkKQorICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKEVycm9yOjpRdW90
YUV4Y2VlZGVkKTsKKyAgICAgICAgY2FsbGJhY2soeyB9KTsKICAgICB9KTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya1Byb2Nlc3NJT1Mu
bW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lPUy5t
bQppbmRleCBhODdhZDgwNWI1ZGYxNTA3ODNiNTM5MWU4ZTAzZjk4ZTc2NGRmM2Q1Li4yMTk2ZTll
NzRkMjQ1MzFjMGRiNWIzOTQ1YWM2MDhmZTNlOThjNzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lPUy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lPUy5tbQpAQCAtMTA5LDE5
ICsxMDksNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRJc0hvbGRpbmdMb2NrZWRGaWxlcyhi
b29sIGlzSG9sZGluZ0xvY2tlZEZpbGVzKQogICAgIC8vIFdlIHN5bmNocm9ub3VzbHkgdGFrZSBh
IHByb2Nlc3MgYXNzZXJ0aW9uIHdoZW4gYmVnaW5uaW5nIGEgU1FMaXRlIHRyYW5zYWN0aW9uIHNv
IHRoYXQgd2UgZG9uJ3QgZ2V0IHN1c3BlbmRlZAogICAgIC8vIHdoaWxlIGhvbGRpbmcgYSBsb2Nr
ZWQgZmlsZS4gV2Ugd291bGQgZ2V0IGtpbGxlZCBpZiBzdXNwZW5kZWQgd2hpbGUgaG9sZGluZyBs
b2NrZWQgZmlsZXMuCiAgICAgbV9ob2xkaW5nTG9ja2VkRmlsZUFzc2VydGlvbiA9IFByb2Nlc3NB
c3NlcnRpb246OmNyZWF0ZShnZXRDdXJyZW50UHJvY2Vzc0lEKCksICJOZXR3b3JrIFByb2Nlc3Mg
aXMgaG9sZGluZyBsb2NrZWQgZmlsZXMiX3MsIFByb2Nlc3NBc3NlcnRpb25UeXBlOjpGaW5pc2hU
YXNrSW50ZXJydXB0YWJsZSwgUHJvY2Vzc0Fzc2VydGlvbjo6TW9kZTo6U3luYyk7Ci0gICAgbV9o
b2xkaW5nTG9ja2VkRmlsZUFzc2VydGlvbi0+c2V0UHJlcGFyZUZvckludmFsaWRhdGlvbkhhbmRs
ZXIoW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dKCkgbXV0YWJsZSB7Ci0gICAg
ICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOwotICAgICAgICBpZiAoIXdlYWtUaGlzKQotICAg
ICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmICghbV9zaG91bGRTdXNwZW5kSURCU2VydmVy
cykKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24o
W10oYXV0byYgc2Vzc2lvbikgewotICAgICAgICAgICAgaWYgKGF1dG8qIHNlcnZlciA9IHNlc3Np
b24ud2ViSURCU2VydmVyKCkpCi0gICAgICAgICAgICAgICAgc2VydmVyLT5zdXNwZW5kKCk7Ci0g
ICAgICAgIH0pOwotICAgIH0pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlQ29ubmVj
dGlvblRvQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9J
REJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YWY0YzY0NjQzNmI5
NmUxNGU4N2IzY2UyYjYxMWRiMDQyODc5MDVmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQu
Y3BwCkBAIC0wLDAgKzEsMTkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5oIgorCisjaW5jbHVk
ZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiV2ViSURCQ29ubmVjdGlvblRv
U2VydmVyTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJJREJSZXN1bHQuaCIKKyNpbmNsdWRlIDxX
ZWJDb3JlL0lEQlJlcXVlc3REYXRhLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JREJSZXN1bHREYXRh
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK0lEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OklEQlN0
b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0
aW9uLCBXZWJDb3JlOjpJREJDb25uZWN0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKQorICAgIDog
bV9jb25uZWN0aW9uKGNvbm5lY3Rpb24pCisgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikK
KyAgICAsIG1fY29ubmVjdGlvblRvQ2xpZW50KFdlYkNvcmU6OklEQlNlcnZlcjo6SURCQ29ubmVj
dGlvblRvQ2xpZW50OjpjcmVhdGUoKnRoaXMpKQoreworfQorCitJREJTdG9yYWdlQ29ubmVjdGlv
blRvQ2xpZW50Ojp+SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudCgpCit7CisgICAgbV9jb25u
ZWN0aW9uVG9DbGllbnQtPmNsZWFyRGVsZWdhdGUoKTsKK30KKworV2ViQ29yZTo6SURCU2VydmVy
OjpJREJDb25uZWN0aW9uVG9DbGllbnQmIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmNv
bm5lY3Rpb25Ub0NsaWVudCgpCit7CisgICAgcmV0dXJuIG1fY29ubmVjdGlvblRvQ2xpZW50Owor
fQorCit0ZW1wbGF0ZTxjbGFzcyBNZXNzYWdlVHlwZT4gdm9pZCBJREJTdG9yYWdlQ29ubmVjdGlv
blRvQ2xpZW50OjpkaWRHZXRSZXN1bHQoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYgcmVz
dWx0RGF0YSkKK3sKKyAgICBpZiAocmVzdWx0RGF0YS50eXBlKCkgPT0gV2ViQ29yZTo6SURCUmVz
dWx0VHlwZTo6RXJyb3IpIHsKKyAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKG1fY29ubmVj
dGlvbiwgTWVzc2FnZVR5cGUocmVzdWx0RGF0YSksIDApOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgaWYgKHJlc3VsdERhdGEudHlwZSgpID09IFdlYkNvcmU6OklEQlJlc3VsdFR5cGU6
OkdldEFsbFJlY29yZHNTdWNjZXNzICYmIHJlc3VsdERhdGEuZ2V0QWxsUmVzdWx0KCkudHlwZSgp
ID09IFdlYkNvcmU6OkluZGV4ZWREQjo6R2V0QWxsVHlwZTo6S2V5cykgeworICAgICAgICBJUEM6
OkNvbm5lY3Rpb246OnNlbmQobV9jb25uZWN0aW9uLCBNZXNzYWdlVHlwZShyZXN1bHREYXRhKSwg
MCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGJsb2JGaWxlUGF0aHMgPSBy
ZXN1bHREYXRhLnR5cGUoKSA9PSBXZWJDb3JlOjpJREJSZXN1bHRUeXBlOjpHZXRBbGxSZWNvcmRz
U3VjY2VzcyA/IHJlc3VsdERhdGEuZ2V0QWxsUmVzdWx0KCkuYWxsQmxvYkZpbGVQYXRocygpIDog
cmVzdWx0RGF0YS5nZXRSZXN1bHQoKS52YWx1ZSgpLmJsb2JGaWxlUGF0aHMoKTsKKyAgICBpZiAo
YmxvYkZpbGVQYXRocy5pc0VtcHR5KCkpIHsKKyAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5k
KG1fY29ubmVjdGlvbiwgTWVzc2FnZVR5cGUocmVzdWx0RGF0YSksIDApOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwgTWVz
c2FnZVR5cGUocmVzdWx0RGF0YSksIDApOworfQorCit2b2lkIElEQlN0b3JhZ2VDb25uZWN0aW9u
VG9DbGllbnQ6OmRpZERlbGV0ZURhdGFiYXNlKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEm
IHJlc3VsdERhdGEpCit7CisgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwg
TWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6RGlkRGVsZXRlRGF0YWJhc2UocmVz
dWx0RGF0YSksIDApOworfQorCit2b2lkIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRp
ZE9wZW5EYXRhYmFzZShjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQor
eworICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJJ
REJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZE9wZW5EYXRhYmFzZShyZXN1bHREYXRhKSwgMCk7Cit9
CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkU3RhcnRUcmFuc2FjdGlv
bihjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRp
ZmllciwgY29uc3QgV2ViQ29yZTo6SURCRXJyb3ImIGVycm9yKQoreworICAgIElQQzo6Q29ubmVj
dGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2
ZXI6OkRpZFN0YXJ0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZGVudGlmaWVyLCBlcnJvciksIDAp
OworfQorCit2b2lkIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZEFib3J0VHJhbnNh
Y3Rpb24oY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklk
ZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OklEQkVycm9yJiBlcnJvcikKK3sKKyAgICBJUEM6OkNv
bm5lY3Rpb246OnNlbmQobV9jb25uZWN0aW9uLCBNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRv
U2VydmVyOjpEaWRBYm9ydFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgZXJyb3Ip
LCAwKTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRDb21taXRU
cmFuc2FjdGlvbihjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0
aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCRXJyb3ImIGVycm9yKQoreworICAgIElQ
Qzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0
aW9uVG9TZXJ2ZXI6OkRpZENvbW1pdFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllciwg
ZXJyb3IpLCAwKTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRD
cmVhdGVPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJiByZXN1bHREYXRh
KQoreworICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpX
ZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZENyZWF0ZU9iamVjdFN0b3JlKHJlc3VsdERhdGEp
LCAwKTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWREZWxldGVP
YmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQorewor
ICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJJREJD
b25uZWN0aW9uVG9TZXJ2ZXI6OkRpZERlbGV0ZU9iamVjdFN0b3JlKHJlc3VsdERhdGEpLCAwKTsK
K30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRSZW5hbWVPYmplY3RT
dG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIElQ
Qzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0
aW9uVG9TZXJ2ZXI6OkRpZFJlbmFtZU9iamVjdFN0b3JlKHJlc3VsdERhdGEpLCAwKTsKK30KKwor
dm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRDbGVhck9iamVjdFN0b3JlKGNv
bnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCit7CisgICAgSVBDOjpDb25u
ZWN0aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwgTWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub1Nl
cnZlcjo6RGlkQ2xlYXJPYmplY3RTdG9yZShyZXN1bHREYXRhKSwgMCk7Cit9CisKK3ZvaWQgSURC
U3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkQ3JlYXRlSW5kZXgoY29uc3QgV2ViQ29yZTo6
SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQo
bV9jb25uZWN0aW9uLCBNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWRDcmVh
dGVJbmRleChyZXN1bHREYXRhKSwgMCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25U
b0NsaWVudDo6ZGlkRGVsZXRlSW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYgcmVz
dWx0RGF0YSkKK3sKKyAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQobV9jb25uZWN0aW9uLCBNZXNz
YWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWREZWxldGVJbmRleChyZXN1bHREYXRh
KSwgMCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkUmVuYW1l
SW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBJ
UEM6OkNvbm5lY3Rpb246OnNlbmQobV9jb25uZWN0aW9uLCBNZXNzYWdlczo6V2ViSURCQ29ubmVj
dGlvblRvU2VydmVyOjpEaWRSZW5hbWVJbmRleChyZXN1bHREYXRhKSwgMCk7Cit9CisKK3ZvaWQg
SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkUHV0T3JBZGQoY29uc3QgV2ViQ29yZTo6
SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQo
bV9jb25uZWN0aW9uLCBNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWRQdXRP
ckFkZChyZXN1bHREYXRhKSwgMCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0Ns
aWVudDo6ZGlkR2V0UmVjb3JkKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmIHJlc3VsdERh
dGEpCit7CisgICAgZGlkR2V0UmVzdWx0PE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2
ZXI6OkRpZEdldFJlY29yZD4ocmVzdWx0RGF0YSk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5l
Y3Rpb25Ub0NsaWVudDo6ZGlkR2V0QWxsUmVjb3Jkcyhjb25zdCBXZWJDb3JlOjpJREJSZXN1bHRE
YXRhJiByZXN1bHREYXRhKQoreworICAgIGRpZEdldFJlc3VsdDxNZXNzYWdlczo6V2ViSURCQ29u
bmVjdGlvblRvU2VydmVyOjpEaWRHZXRBbGxSZWNvcmRzPihyZXN1bHREYXRhKTsKK30KKwordm9p
ZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRHZXRDb3VudChjb25zdCBXZWJDb3Jl
OjpJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIElQQzo6Q29ubmVjdGlvbjo6c2Vu
ZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZEdl
dENvdW50KHJlc3VsdERhdGEpLCAwKTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRv
Q2xpZW50OjpkaWREZWxldGVSZWNvcmQoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYgcmVz
dWx0RGF0YSkKK3sKKyAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQobV9jb25uZWN0aW9uLCBNZXNz
YWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWREZWxldGVSZWNvcmQocmVzdWx0RGF0
YSksIDApOworfQorCit2b2lkIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZE9wZW5D
dXJzb3IoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBk
aWRHZXRSZXN1bHQ8TWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6RGlkT3BlbkN1
cnNvcj4ocmVzdWx0RGF0YSk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVu
dDo6ZGlkSXRlcmF0ZUN1cnNvcihjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJiByZXN1bHRE
YXRhKQoreworICAgIGRpZEdldFJlc3VsdDxNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2Vy
dmVyOjpEaWRJdGVyYXRlQ3Vyc29yPihyZXN1bHREYXRhKTsKK30KKwordm9pZCBJREJTdG9yYWdl
Q29ubmVjdGlvblRvQ2xpZW50OjpkaWRHZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMoY29u
c3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgY29u
c3QgVmVjdG9yPFdlYkNvcmU6OklEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24+JiBkYXRhYmFzZXMp
Cit7CisgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwgTWVzc2FnZXM6Oldl
YklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6RGlkR2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25z
KHJlcXVlc3RJZGVudGlmaWVyLCBkYXRhYmFzZXMpLCAwKTsKK30KKwordm9pZCBJREJTdG9yYWdl
Q29ubmVjdGlvblRvQ2xpZW50OjpmaXJlVmVyc2lvbkNoYW5nZUV2ZW50KFdlYkNvcmU6OklEQlNl
cnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBXZWJD
b3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBy
ZXF1ZXN0ZWRWZXJzaW9uKQoreworICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rp
b24sIE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkZpcmVWZXJzaW9uQ2hhbmdl
RXZlbnQoY29ubmVjdGlvbi5pZGVudGlmaWVyKCksIHJlcXVlc3RJZGVudGlmaWVyLCByZXF1ZXN0
ZWRWZXJzaW9uKSwgMCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6
ZGlkQ2xvc2VGcm9tU2VydmVyKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpJREJFcnJvciYgZXJyb3IpCit7
CisgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwgTWVzc2FnZXM6OldlYklE
QkNvbm5lY3Rpb25Ub1NlcnZlcjo6RGlkQ2xvc2VGcm9tU2VydmVyKGNvbm5lY3Rpb24uaWRlbnRp
ZmllcigpLCBlcnJvciksIDApOworfQorCit2b2lkIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGll
bnQ6Om5vdGlmeU9wZW5EQlJlcXVlc3RCbG9ja2VkKGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNl
SWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IG9sZFZlcnNpb24sIHVpbnQ2
NF90IG5ld1ZlcnNpb24pCit7CisgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKG1fY29ubmVjdGlv
biwgTWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Tm90aWZ5T3BlbkRCUmVxdWVz
dEJsb2NrZWQocmVxdWVzdElkZW50aWZpZXIsIG9sZFZlcnNpb24sIG5ld1ZlcnNpb24pLCAwKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VDb25uZWN0aW9uVG9D
bGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41MGJhMDFiMDIxMjBmMjFkYjYxMzkxZjNhODc0NGQyMmI1ZmY3
MGU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9y
YWdlL0lEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQuaApAQCAtMCwwICsxLDc3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNp
bmNsdWRlIDxXZWJDb3JlL0lEQkNvbm5lY3Rpb25Ub0NsaWVudC5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvSURCQ29ubmVjdGlvblRvQ2xpZW50RGVsZWdhdGUuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK2NsYXNzIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQgZmluYWwgOiBwdWJsaWMgV2Vi
Q29yZTo6SURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnREZWxlZ2F0ZSB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgSURCU3RvcmFnZUNvbm5lY3Rpb25U
b0NsaWVudChJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBXZWJDb3JlOjpJREJDb25uZWN0aW9u
SWRlbnRpZmllcik7CisgICAgfklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQoKTsKKworICAg
IFdlYkNvcmU6OklEQkNvbm5lY3Rpb25JZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKyAgICBJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlE
IGlwY0Nvbm5lY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2Nvbm5lY3Rpb247IH0KKyAgICBXZWJD
b3JlOjpJREJTZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub0NsaWVudCYgY29ubmVjdGlvblRvQ2xpZW50
KCk7CisKK3ByaXZhdGU6CisgICAgdGVtcGxhdGU8Y2xhc3MgTWVzc2FnZVR5cGU+IHZvaWQgZGlk
R2V0UmVzdWx0KGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKTsKKworICAgIC8vIElEQkNv
bm5lY3Rpb25Ub0NsaWVudERlbGVnYXRlCisgICAgdm9pZCBkaWREZWxldGVEYXRhYmFzZShjb25z
dCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJikgZmluYWw7CisgICAgdm9pZCBkaWRPcGVuRGF0YWJh
c2UoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkQWJv
cnRUcmFuc2FjdGlvbihjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5z
YWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCRXJyb3ImKSBmaW5hbDsKKyAgICB2
b2lkIGRpZENvbW1pdFRyYW5zYWN0aW9uKGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRp
ZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJREJFcnJvciYpIGZp
bmFsOworICAgIHZvaWQgZGlkU3RhcnRUcmFuc2FjdGlvbihjb25zdCBXZWJDb3JlOjpJREJSZXNv
dXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURC
RXJyb3ImKSBmaW5hbDsKKyAgICB2b2lkIGRpZENyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNv
cmU6OklEQlJlc3VsdERhdGEmKSBmaW5hbDsKKyAgICB2b2lkIGRpZERlbGV0ZU9iamVjdFN0b3Jl
KGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlbmFt
ZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBmaW5hbDsKKyAgICB2
b2lkIGRpZENsZWFyT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZp
bmFsOworICAgIHZvaWQgZGlkQ3JlYXRlSW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0
YSYpIGZpbmFsOworICAgIHZvaWQgZGlkRGVsZXRlSW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVz
dWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVuYW1lSW5kZXgoY29uc3QgV2ViQ29yZTo6
SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkUHV0T3JBZGQoY29uc3QgV2ViQ29y
ZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkR2V0UmVjb3JkKGNvbnN0IFdl
YkNvcmU6OklEQlJlc3VsdERhdGEmKSBmaW5hbDsKKyAgICB2b2lkIGRpZEdldEFsbFJlY29yZHMo
Y29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkR2V0Q291
bnQoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkRGVs
ZXRlUmVjb3JkKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBmaW5hbDsKKyAgICB2b2lk
IGRpZE9wZW5DdXJzb3IoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAg
IHZvaWQgZGlkSXRlcmF0ZUN1cnNvcihjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJikgZmlu
YWw7CisgICAgdm9pZCBkaWRHZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMoY29uc3QgV2Vi
Q29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OklEQkRh
dGFiYXNlTmFtZUFuZFZlcnNpb24+JikgZmluYWw7CisgICAgdm9pZCBub3RpZnlPcGVuREJSZXF1
ZXN0QmxvY2tlZChjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJ
ZGVudGlmaWVyLCB1aW50NjRfdCBvbGRWZXJzaW9uLCB1aW50NjRfdCBuZXdWZXJzaW9uKSBmaW5h
bDsKKyAgICB2b2lkIGZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQoV2ViQ29yZTo6SURCU2VydmVyOjpV
bmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlk
ZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCByZXF1ZXN0ZWRWZXJzaW9uKSBm
aW5hbDsKKyAgICB2b2lkIGRpZENsb3NlRnJvbVNlcnZlcihXZWJDb3JlOjpJREJTZXJ2ZXI6OlVu
aXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OklEQkVycm9yJikgZmlu
YWw7CisKKyAgICBJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIG1fY29ubmVjdGlvbjsKKyAgICBX
ZWJDb3JlOjpJREJDb25uZWN0aW9uSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CisgICAgUmVmPFdl
YkNvcmU6OklEQlNlcnZlcjo6SURCQ29ubmVjdGlvblRvQ2xpZW50PiBtX2Nvbm5lY3Rpb25Ub0Ns
aWVudDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VNYW5hZ2VyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlTWFuYWdlci5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uN2QwYmNhODY1NThlNzRjZmE3N2JiZThiYTU5NDcyMGIxMTQ2MDBhNAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9y
YWdlTWFuYWdlci5jcHAKQEAgLTAsMCArMSwyNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiSURCU3RvcmFnZU1hbmFnZXIuaCIKKworI2luY2x1ZGUgIklE
QlN0b3JhZ2VSZWdpc3RyeS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTWVtb3J5SURCQmFja2luZ1N0
b3JlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVGaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9TUUxpdGVJREJCYWNraW5nU3RvcmUuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K3N0YXRpYyB2b2lkIG1pZ3JhdGVPcmlnaW5EYXRhKGNvbnN0IFN0cmluZyYgb2xkT3JpZ2luRGly
ZWN0b3J5LCBjb25zdCBTdHJpbmcmIG5ld09yaWdpbkRpcmVjdG9yeSkKK3sKKyAgICBpZiAoIUZp
bGVTeXN0ZW06OmZpbGVFeGlzdHMob2xkT3JpZ2luRGlyZWN0b3J5KSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgYXV0byBmaWxlTmFtZXMgPSBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KG9sZE9y
aWdpbkRpcmVjdG9yeSk7CisgICAgZm9yIChhdXRvIG5hbWUgOiBmaWxlTmFtZXMpIHsKKyAgICAg
ICAgU3RyaW5nIGNoaWxkUGF0aCA9IEZpbGVTeXN0ZW06OmdldFN5bWJvbGljTGlua1RhcmdldChG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQob2xkT3JpZ2luRGlyZWN0b3J5LCBu
YW1lKSk7CisgICAgICAgIFN0cmluZyBuZXdOYW1lID0gV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3Rl
bTo6Y29tcHV0ZUhhc2hGb3JGaWxlTmFtZShXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6ZGVjb2RlRGF0YWJhc2VOYW1lKG5hbWUpKTsKKyAgICAgICAgYXV0byBuZXdD
aGlsZFBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobmV3T3JpZ2lu
RGlyZWN0b3J5LCBuZXdOYW1lKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6bW92ZUZpbGUoY2hpbGRQ
YXRoLCBuZXdDaGlsZFBhdGgpOworICAgIH0KKworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5
RGlyZWN0b3J5KG9sZE9yaWdpbkRpcmVjdG9yeSk7Cit9CisKK1N0cmluZyBJREJTdG9yYWdlTWFu
YWdlcjo6aWRiU3RvcmFnZU9yaWdpbkRpcmVjdG9yeShjb25zdCBTdHJpbmcmIHJvb3REaXJlY3Rv
cnksIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luKQoreworICAgIGlmIChyb290
RGlyZWN0b3J5LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisKKyAg
ICBTdHJpbmcgb3JpZ2luRGlyZWN0b3J5ID0gV2ViQ29yZTo6SURCRGF0YWJhc2VJZGVudGlmaWVy
OjpkYXRhYmFzZURpcmVjdG9yeVJlbGF0aXZlVG9Sb290KG9yaWdpbi50b3BPcmlnaW4sIG9yaWdp
bi5jbGllbnRPcmlnaW4sIHJvb3REaXJlY3RvcnksICJ2MSIpOworICAgIEZpbGVTeXN0ZW06Om1h
a2VBbGxEaXJlY3RvcmllcyhvcmlnaW5EaXJlY3RvcnkpOworCisgICAgU3RyaW5nIG9sZE9yaWdp
bkRpcmVjdG9yeSA9IFdlYkNvcmU6OklEQkRhdGFiYXNlSWRlbnRpZmllcjo6ZGF0YWJhc2VEaXJl
Y3RvcnlSZWxhdGl2ZVRvUm9vdChvcmlnaW4udG9wT3JpZ2luLCBvcmlnaW4uY2xpZW50T3JpZ2lu
LCByb290RGlyZWN0b3J5LCAidjAiKTsKKyAgICBtaWdyYXRlT3JpZ2luRGF0YShvbGRPcmlnaW5E
aXJlY3RvcnksIG9yaWdpbkRpcmVjdG9yeSk7CisKKyAgICByZXR1cm4gb3JpZ2luRGlyZWN0b3J5
OworfQorCit1aW50NjRfdCBJREJTdG9yYWdlTWFuYWdlcjo6aWRiU3RvcmFnZVNpemUoY29uc3Qg
U3RyaW5nJiBvcmlnaW5EaXJlY3RvcnkpCit7CisgICAgaWYgKG9yaWdpbkRpcmVjdG9yeS5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIFdlYkNvcmU6OklEQlNlcnZl
cjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpkYXRhYmFzZXNTaXplRm9yRGlyZWN0b3J5KG9yaWdp
bkRpcmVjdG9yeSk7Cit9CisKK3N0YXRpYyB2b2lkIGdldE9yaWdpbnNGb3JWZXJzaW9uKGNvbnN0
IFN0cmluZyYgdmVyc2lvblBhdGgsIEhhc2hTZXQ8V2ViQ29yZTo6Q2xpZW50T3JpZ2luPiYgb3Jp
Z2lucykKK3sKKyAgICBmb3IgKGF1dG8mIHRvcERhdGFiYXNlSWRlbnRpZmllciA6IEZpbGVTeXN0
ZW06Omxpc3REaXJlY3RvcnkodmVyc2lvblBhdGgpKSB7CisgICAgICAgIGF1dG8gdG9wT3JpZ2lu
ID0gV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKHRv
cERhdGFiYXNlSWRlbnRpZmllcik7CisgICAgICAgIGlmICghdG9wT3JpZ2luKQorICAgICAgICAg
ICAgY29udGludWU7CisKKyAgICAgICAgZm9yIChhdXRvJiBkYXRhYmFzZUlkZW50aWZpZXIgOiBG
aWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudCh2ZXJzaW9uUGF0aCwgdG9wRGF0YWJhc2VJZGVudGlmaWVyKSkpIHsKKyAgICAgICAgICAg
IGlmIChhdXRvIGNsaWVudE9yaWdpbiA9IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJv
bURhdGFiYXNlSWRlbnRpZmllcihkYXRhYmFzZUlkZW50aWZpZXIpKQorICAgICAgICAgICAgICAg
IG9yaWdpbnMuYWRkKFdlYkNvcmU6OkNsaWVudE9yaWdpbiB7ICp0b3BPcmlnaW4sICpjbGllbnRP
cmlnaW4gfSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgb3JpZ2lucy5hZGQo
V2ViQ29yZTo6Q2xpZW50T3JpZ2luIHsgKnRvcE9yaWdpbiwgKnRvcE9yaWdpbiB9KTsKKyAgICAg
ICAgfQorICAgIH0KK30KKworSGFzaFNldDxXZWJDb3JlOjpDbGllbnRPcmlnaW4+IElEQlN0b3Jh
Z2VNYW5hZ2VyOjpvcmlnaW5zT2ZJREJTdG9yYWdlRGF0YShjb25zdCBTdHJpbmcmIHJvb3REaXJl
Y3RvcnkpCit7CisgICAgSGFzaFNldDxXZWJDb3JlOjpDbGllbnRPcmlnaW4+IG9yaWdpbnM7Cisg
ICAgaWYgKHJvb3REaXJlY3RvcnkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gb3JpZ2luczsK
KworICAgIGdldE9yaWdpbnNGb3JWZXJzaW9uKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChyb290RGlyZWN0b3J5LCAidjAiKSwgb3JpZ2lucyk7CisgICAgZ2V0T3JpZ2luc0Zv
clZlcnNpb24oRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJvb3REaXJlY3Rv
cnksICJ2MSIpLCBvcmlnaW5zKTsKKyAgICByZXR1cm4gb3JpZ2luczsKK30KKworSURCU3RvcmFn
ZU1hbmFnZXI6OklEQlN0b3JhZ2VNYW5hZ2VyKGNvbnN0IFN0cmluZyYgcGF0aCwgSURCU3RvcmFn
ZVJlZ2lzdHJ5JiByZWdpc3RyeSwgUXVvdGFDaGVja0Z1bmN0aW9uJiYgcXVvdGFDaGVja0Z1bmN0
aW9uKQorICAgIDogbV9wYXRoKHBhdGgpCisgICAgLCBtX3JlZ2lzdHJ5KHJlZ2lzdHJ5KQorICAg
ICwgbV9xdW90YUNoZWNrRnVuY3Rpb24oV1RGTW92ZShxdW90YUNoZWNrRnVuY3Rpb24pKQorewor
fQorCitib29sIElEQlN0b3JhZ2VNYW5hZ2VyOjppc0FjdGl2ZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuICFtX2RhdGFiYXNlcy5pc0VtcHR5KCk7Cit9CisKK2Jvb2wgSURCU3RvcmFnZU1hbmFnZXI6
Omhhc0RhdGFJbk1lbW9yeSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdURjo6YW55T2YobV9kYXRh
YmFzZXMudmFsdWVzKCksIFsmXSAoYXV0byYgZGF0YWJhc2UpIHsKKyAgICAgICAgcmV0dXJuIGRh
dGFiYXNlLT5oYXNEYXRhSW5NZW1vcnkoKTsKKyAgICB9KTsKK30KKwordm9pZCBJREJTdG9yYWdl
TWFuYWdlcjo6Y2xvc2VEYXRhYmFzZXNGb3JEZWxldGlvbigpCit7CisgICAgZm9yIChhdXRvJiBk
YXRhYmFzZSA6IG1fZGF0YWJhc2VzLnZhbHVlcygpKQorICAgICAgICBkYXRhYmFzZS0+aW1tZWRp
YXRlQ2xvc2UoKTsKKworICAgIG1fZGF0YWJhc2VzLmNsZWFyKCk7Cit9CisKK3ZvaWQgSURCU3Rv
cmFnZU1hbmFnZXI6OnN0b3BEYXRhYmFzZUFjdGl2aXRpZXNGb3JTdXNwZW5kKCkKK3sKKyAgICBp
ZiAobV9wYXRoLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChhdXRvJiBk
YXRhYmFzZSA6IG1fZGF0YWJhc2VzLnZhbHVlcygpKSB7CisgICAgICAgIC8vIE9ubHkgc3RvcCBk
YXRhYmFzZXMgd2l0aCBub24tZXBoZW1lcmFsIGJhY2tpbmcgc3RvcmUgdGhhdCBjYW4gaG9sZCBk
YXRhYmFzZSBmaWxlIGxvY2suCisgICAgICAgIGlmICghZGF0YWJhc2UtPmlkZW50aWZpZXIoKS5p
c1RyYW5zaWVudCgpKQorICAgICAgICAgICAgZGF0YWJhc2UtPmFib3J0SW5Qcm9ncmVzc1RyYW5z
YWN0aW9ucygpOworICAgIH0KK30KKworV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRh
YmFzZSYgSURCU3RvcmFnZU1hbmFnZXI6OmdldE9yQ3JlYXRlVW5pcXVlSURCRGF0YWJhc2UoY29u
c3QgV2ViQ29yZTo6SURCRGF0YWJhc2VJZGVudGlmaWVyJiBpZGVudGlmaWVyKQoreworICAgIGF1
dG8gYWRkUmVzdWx0ID0gbV9kYXRhYmFzZXMuYWRkKGlkZW50aWZpZXIsIG51bGxwdHIpOworICAg
IGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZSA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZT4o
KnRoaXMsIGlkZW50aWZpZXIpOworCisgICAgcmV0dXJuICphZGRSZXN1bHQuaXRlcmF0b3ItPnZh
bHVlOworfQorCit2b2lkIElEQlN0b3JhZ2VNYW5hZ2VyOjpvcGVuRGF0YWJhc2UoV2ViQ29yZTo6
SURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnQmIGNvbm5lY3Rpb25Ub0NsaWVudCwgY29u
c3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhKQoreworICAgIGF1dG8mIGRh
dGFiYXNlID0gZ2V0T3JDcmVhdGVVbmlxdWVJREJEYXRhYmFzZShyZXF1ZXN0RGF0YS5kYXRhYmFz
ZUlkZW50aWZpZXIoKSk7CisgICAgZGF0YWJhc2Uub3BlbkRhdGFiYXNlQ29ubmVjdGlvbihjb25u
ZWN0aW9uVG9DbGllbnQsIHJlcXVlc3REYXRhKTsKK30KKwordm9pZCBJREJTdG9yYWdlTWFuYWdl
cjo6ZGVsZXRlRGF0YWJhc2UoV2ViQ29yZTo6SURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGll
bnQmIGNvbm5lY3Rpb25Ub0NsaWVudCwgY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJl
cXVlc3REYXRhKQoreworICAgIGF1dG8mIGRhdGFiYXNlID0gZ2V0T3JDcmVhdGVVbmlxdWVJREJE
YXRhYmFzZShyZXF1ZXN0RGF0YS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAgZGF0YWJhc2Uu
aGFuZGxlRGVsZXRlKGNvbm5lY3Rpb25Ub0NsaWVudCwgcmVxdWVzdERhdGEpOworCisgICAgLy8g
VGhpcyBkYXRhYmFzZSBpcyBjcmVhdGVkIGZvciBkZWxldGlvbi4KKyAgICBpZiAoZGF0YWJhc2Uu
dHJ5Q2xvc2UoKSkKKyAgICAgICAgbV9kYXRhYmFzZXMucmVtb3ZlKGRhdGFiYXNlLmlkZW50aWZp
ZXIoKSk7Cit9CisKK1ZlY3RvcjxXZWJDb3JlOjpJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiBJ
REJTdG9yYWdlTWFuYWdlcjo6Z2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKCkKK3sKKyAg
ICBWZWN0b3I8V2ViQ29yZTo6SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbj4gcmVzdWx0OworICAg
IEhhc2hTZXQ8U3RyaW5nPiB2aXNpdGVkRGF0YWJhc2VQYXRoczsKKyAgICBmb3IgKGF1dG8mIGRh
dGFiYXNlIDogbV9kYXRhYmFzZXMudmFsdWVzKCkpIHsKKyAgICAgICAgYXV0byBwYXRoID0gZGF0
YWJhc2UtPmZpbGVQYXRoKCk7CisgICAgICAgIGlmICghcGF0aC5pc0VtcHR5KCkpCisgICAgICAg
ICAgICB2aXNpdGVkRGF0YWJhc2VQYXRocy5hZGQocGF0aCk7CisKKyAgICAgICAgaWYgKGF1dG8g
bmFtZUFuZFZlcnNpb24gPSBkYXRhYmFzZS0+bmFtZUFuZFZlcnNpb24oKSkKKyAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoV1RGTW92ZSgqbmFtZUFuZFZlcnNpb24pKTsKKyAgICB9CisKKyAgICBh
dXRvIGRhdGFiYXNlSWRlbnRpZmllcnMgPSBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KG1fcGF0
aCk7CisgICAgZm9yIChhdXRvIGlkZW50aWZpZXIgOiBkYXRhYmFzZUlkZW50aWZpZXJzKSB7Cisg
ICAgICAgIGF1dG8gZGF0YWJhc2VEaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQobV9wYXRoLCBpZGVudGlmaWVyKTsKKyAgICAgICAgYXV0byBkYXRhYmFzZVBh
dGggPSBXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZnVsbERhdGFi
YXNlUGF0aEZvckRpcmVjdG9yeShkYXRhYmFzZURpcmVjdG9yeSk7CisgICAgICAgIGlmICh2aXNp
dGVkRGF0YWJhc2VQYXRocy5jb250YWlucyhkYXRhYmFzZVBhdGgpKQorICAgICAgICAgICAgY29u
dGludWU7CisKKyAgICAgICAgaWYgKGF1dG8gbmFtZUFuZFZlcnNpb24gPSBXZWJDb3JlOjpJREJT
ZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGF0YWJhc2VOYW1lQW5kVmVyc2lvbkZyb21G
aWxlKGRhdGFiYXNlUGF0aCkpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKFdURk1vdmUoKm5h
bWVBbmRWZXJzaW9uKSk7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBJ
REJTdG9yYWdlTWFuYWdlcjo6b3BlbkRCUmVxdWVzdENhbmNlbGxlZChjb25zdCBXZWJDb3JlOjpJ
REJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEpCit7CisgICAgYXV0byogZGF0YWJhc2UgPSBtX2Rh
dGFiYXNlcy5nZXQocmVxdWVzdERhdGEuZGF0YWJhc2VJZGVudGlmaWVyKCkpOworICAgIGlmICgh
ZGF0YWJhc2UpCisgICAgICAgIHJldHVybjsKKworICAgIGRhdGFiYXNlLT5vcGVuREJSZXF1ZXN0
Q2FuY2VsbGVkKHJlcXVlc3REYXRhLnJlcXVlc3RJZGVudGlmaWVyKCkpOworCisgICAgLy8gRGF0
YWJhc2UgYmVjb21lcyBpZGxlIGFmdGVyIHJlcXVlc3QgaXMgY2FuY2VsbGVkLgorICAgIGlmIChk
YXRhYmFzZS0+dHJ5Q2xvc2UoKSkKKyAgICAgICAgbV9kYXRhYmFzZXMucmVtb3ZlKGRhdGFiYXNl
LT5pZGVudGlmaWVyKCkpOworfQorCit2b2lkIElEQlN0b3JhZ2VNYW5hZ2VyOjpyZWdpc3RlckNv
bm5lY3Rpb24oV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24pCit7CisgICAgbV9yZWdpc3RyeS5yZWdpc3RlckNvbm5lY3Rpb24oY29ubmVj
dGlvbik7Cit9CisKK3ZvaWQgSURCU3RvcmFnZU1hbmFnZXI6OnVucmVnaXN0ZXJDb25uZWN0aW9u
KFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiBjb25uZWN0
aW9uKQoreworICAgIG1fcmVnaXN0cnkudW5yZWdpc3RlckNvbm5lY3Rpb24oY29ubmVjdGlvbik7
Cit9CisKK3ZvaWQgSURCU3RvcmFnZU1hbmFnZXI6OnJlZ2lzdGVyVHJhbnNhY3Rpb24oV2ViQ29y
ZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikK
K3sKKyAgICBtX3JlZ2lzdHJ5LnJlZ2lzdGVyVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pOworfQor
Cit2b2lkIElEQlN0b3JhZ2VNYW5hZ2VyOjp1bnJlZ2lzdGVyVHJhbnNhY3Rpb24oV2ViQ29yZTo6
SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKK3sK
KyAgICBtX3JlZ2lzdHJ5LnVucmVnaXN0ZXJUcmFuc2FjdGlvbih0cmFuc2FjdGlvbik7Cit9CisK
K3N0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQkJhY2tpbmdTdG9yZT4gSURC
U3RvcmFnZU1hbmFnZXI6OmNyZWF0ZUJhY2tpbmdTdG9yZShjb25zdCBXZWJDb3JlOjpJREJEYXRh
YmFzZUlkZW50aWZpZXImIGlkZW50aWZpZXIpCit7CisgICAgaWYgKG1fcGF0aC5pc0VtcHR5KCkp
CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5SURC
QmFja2luZ1N0b3JlPihpZGVudGlmaWVyKTsKKworICAgIGlmIChpZGVudGlmaWVyLmlzVHJhbnNp
ZW50KCkpCisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYkNvcmU6OklEQlNlcnZlcjo6TWVt
b3J5SURCQmFja2luZ1N0b3JlPihpZGVudGlmaWVyKTsKKworICAgIGF1dG8gbmFtZSA9IFdlYkNv
cmU6OlNRTGl0ZUZpbGVTeXN0ZW06OmNvbXB1dGVIYXNoRm9yRmlsZU5hbWUoaWRlbnRpZmllci5k
YXRhYmFzZU5hbWUoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViQ29yZTo6SURCU2VydmVy
OjpTUUxpdGVJREJCYWNraW5nU3RvcmU+KGlkZW50aWZpZXIsIEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChtX3BhdGgsIG5hbWUpKTsKK30KKwordm9pZCBJREJTdG9yYWdlTWFu
YWdlcjo6cmVxdWVzdFNwYWNlKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIHVpbnQ2NF90
IHNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit7CisgICAgbV9xdW90YUNoZWNrRnVuY3Rpb24oc2l6ZSwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlTWFuYWdlci5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VNYW5hZ2VyLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGM3NTc4NWUwYWNiZThlMTc5ZmEyNTQzMDdjYzBiOWI0YjZlMWY1OQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdl
TWFuYWdlci5oCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgPFdlYkNvcmUvVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBJREJTZXJ2ZXIgeworY2xhc3MgSURCQmFja2luZ1N0b3Jl
OworY2xhc3MgSURCQ29ubmVjdGlvblRvQ2xpZW50OworY2xhc3MgVW5pcXVlSURCRGF0YWJhc2U7
Cit9Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBJREJTdG9yYWdlUmVnaXN0cnk7
CisKK2NsYXNzIElEQlN0b3JhZ2VNYW5hZ2VyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OklEQlNl
cnZlcjo6VW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgU3Ry
aW5nIGlkYlN0b3JhZ2VPcmlnaW5EaXJlY3RvcnkoY29uc3QgU3RyaW5nJiByb290RGlyZWN0b3J5
LCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKKyAgICBzdGF0aWMgdWludDY0X3QgaWRi
U3RvcmFnZVNpemUoY29uc3QgU3RyaW5nJiBvcmlnaW5EaXJlY3RvcnkpOworICAgIHN0YXRpYyBI
YXNoU2V0PFdlYkNvcmU6OkNsaWVudE9yaWdpbj4gb3JpZ2luc09mSURCU3RvcmFnZURhdGEoY29u
c3QgU3RyaW5nJiByb290RGlyZWN0b3J5KTsKKworICAgIHVzaW5nIFF1b3RhQ2hlY2tGdW5jdGlv
biA9IEZ1bmN0aW9uPHZvaWQodWludDY0X3Qgc3BhY2VSZXF1ZXN0ZWQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYpPjsKKyAgICBJREJTdG9yYWdlTWFuYWdlcihjb25zdCBTdHJpbmcm
IHBhdGgsIElEQlN0b3JhZ2VSZWdpc3RyeSYsIFF1b3RhQ2hlY2tGdW5jdGlvbiYmKTsKKyAgICB+
SURCU3RvcmFnZU1hbmFnZXIoKSBmaW5hbCB7IH0KKyAgICBib29sIGlzQWN0aXZlKCkgY29uc3Q7
CisgICAgYm9vbCBoYXNEYXRhSW5NZW1vcnkoKSBjb25zdDsKKyAgICB2b2lkIGNsb3NlRGF0YWJh
c2VzRm9yRGVsZXRpb24oKTsKKyAgICB2b2lkIHN0b3BEYXRhYmFzZUFjdGl2aXRpZXNGb3JTdXNw
ZW5kKCk7CisKKyAgICB2b2lkIG9wZW5EYXRhYmFzZShXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQkNv
bm5lY3Rpb25Ub0NsaWVudCYsIGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJik7CisgICAg
dm9pZCBvcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRh
Jik7CisgICAgdm9pZCBkZWxldGVEYXRhYmFzZShXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQkNvbm5l
Y3Rpb25Ub0NsaWVudCYsIGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJik7CisgICAgVmVj
dG9yPFdlYkNvcmU6OklEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24+IGdldEFsbERhdGFiYXNlTmFt
ZXNBbmRWZXJzaW9ucygpOworCitwcml2YXRlOgorICAgIFdlYkNvcmU6OklEQlNlcnZlcjo6VW5p
cXVlSURCRGF0YWJhc2UmIGdldE9yQ3JlYXRlVW5pcXVlSURCRGF0YWJhc2UoY29uc3QgV2ViQ29y
ZTo6SURCRGF0YWJhc2VJZGVudGlmaWVyJik7CisKKyAgICAvLyBXZWJDb3JlOjpVbmlxdWVJREJE
YXRhYmFzZU1hbmFnZXIKKyAgICB2b2lkIHJlZ2lzdGVyQ29ubmVjdGlvbihXZWJDb3JlOjpJREJT
ZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYpIGZpbmFsOworICAgIHZvaWQgdW5y
ZWdpc3RlckNvbm5lY3Rpb24oV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNv
bm5lY3Rpb24mKSBmaW5hbDsKKyAgICB2b2lkIHJlZ2lzdGVyVHJhbnNhY3Rpb24oV2ViQ29yZTo6
SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJikgZmluYWw7CisgICAgdm9p
ZCB1bnJlZ2lzdGVyVHJhbnNhY3Rpb24oV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRh
YmFzZVRyYW5zYWN0aW9uJikgZmluYWw7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklE
QlNlcnZlcjo6SURCQmFja2luZ1N0b3JlPiBjcmVhdGVCYWNraW5nU3RvcmUoY29uc3QgV2ViQ29y
ZTo6SURCRGF0YWJhc2VJZGVudGlmaWVyJikgZmluYWw7CisgICAgdm9pZCByZXF1ZXN0U3BhY2Uo
Y29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgdWludDY0X3Qgc2l6ZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7CisKKyAgICBTdHJpbmcgbV9wYXRoOworICAgIElE
QlN0b3JhZ2VSZWdpc3RyeSYgbV9yZWdpc3RyeTsKKyAgICBRdW90YUNoZWNrRnVuY3Rpb24gbV9x
dW90YUNoZWNrRnVuY3Rpb247CisgICAgSGFzaE1hcDxXZWJDb3JlOjpJREJEYXRhYmFzZUlkZW50
aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFi
YXNlPj4gbV9kYXRhYmFzZXM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlUmVnaXN0
cnkuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VS
ZWdpc3RyeS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTAyMTdjZTFjNWM2YmI4MjQ4ZWJmOWVmOWM3NDA1ZGVi
NTY1Y2EwNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c3RvcmFnZS9JREJTdG9yYWdlUmVnaXN0cnkuY3BwCkBAIC0wLDAgKzEsMTAxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIklEQlN0b3JhZ2VSZWdpc3RyeS5o
IgorCisjaW5jbHVkZSAiSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5oIgorI2luY2x1ZGUg
PFdlYkNvcmUvVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitJREJTdG9yYWdlUmVnaXN0cnk6OklEQlN0b3JhZ2VSZWdpc3RyeSgpID0gZGVmYXVsdDsKKwor
V2ViQ29yZTo6SURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnQmIElEQlN0b3JhZ2VSZWdp
c3RyeTo6Z2V0T3JDcmVhdGVDb25uZWN0aW9uVG9DbGllbnQoSVBDOjpDb25uZWN0aW9uOjpVbmlx
dWVJRCBjb25uZWN0aW9uLCBXZWJDb3JlOjpJREJDb25uZWN0aW9uSWRlbnRpZmllciBpZGVudGlm
aWVyKQoreworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9jb25uZWN0aW9uc1RvQ2xpZW50LmFkZChp
ZGVudGlmaWVyLCBudWxscHRyKTsKKyAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpCisgICAg
ICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPElEQlN0b3JhZ2VDb25u
ZWN0aW9uVG9DbGllbnQ+KGNvbm5lY3Rpb24sIGlkZW50aWZpZXIpOworCisgICAgQVNTRVJUKGFk
ZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPmlwY0Nvbm5lY3Rpb24oKSA9PSBjb25uZWN0aW9uKTsK
KyAgICByZXR1cm4gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+Y29ubmVjdGlvblRvQ2xpZW50
KCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZVJlZ2lzdHJ5OjpyZW1vdmVDb25uZWN0aW9uVG9DbGll
bnQoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uKQoreworICAgIGF1dG8gYWxs
Q29ubmVjdGlvbnNUb0NsaWVudCA9IHN0ZDo6ZXhjaGFuZ2UobV9jb25uZWN0aW9uc1RvQ2xpZW50
LCB7IH0pOworICAgIGZvciAoYXV0byYgW2lkZW50aWZpZXIsIGNvbm5lY3Rpb25Ub0NsaWVudF0g
OiBhbGxDb25uZWN0aW9uc1RvQ2xpZW50KSB7CisgICAgICAgIGlmIChjb25uZWN0aW9uVG9DbGll
bnQtPmlwY0Nvbm5lY3Rpb24oKSAhPSBjb25uZWN0aW9uKSB7CisgICAgICAgICAgICBtX2Nvbm5l
Y3Rpb25zVG9DbGllbnQuYWRkKGlkZW50aWZpZXIsIFdURk1vdmUoY29ubmVjdGlvblRvQ2xpZW50
KSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBjb25uZWN0aW9u
VG9DbGllbnQtPmNvbm5lY3Rpb25Ub0NsaWVudCgpLmNvbm5lY3Rpb25Ub0NsaWVudENsb3NlZCgp
OworICAgIH0KK30KKwordm9pZCBJREJTdG9yYWdlUmVnaXN0cnk6OnJlZ2lzdGVyQ29ubmVjdGlv
bihXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYgY29ubmVj
dGlvbikKK3sKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBjb25uZWN0aW9uLmlkZW50aWZpZXIoKTsK
KyAgICBBU1NFUlQoIW1fY29ubmVjdGlvbnMuY29udGFpbnMoaWRlbnRpZmllcikpOworCisgICAg
bV9jb25uZWN0aW9ucy5hZGQoaWRlbnRpZmllciwgY29ubmVjdGlvbik7Cit9CisKK3ZvaWQgSURC
U3RvcmFnZVJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQ29ubmVjdGlvbihXZWJDb3JlOjpJREJTZXJ2ZXI6
OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYgY29ubmVjdGlvbikKK3sKKyAgICBhdXRvIGlk
ZW50aWZpZXIgPSBjb25uZWN0aW9uLmlkZW50aWZpZXIoKTsKKyAgICBBU1NFUlQobV9jb25uZWN0
aW9ucy5jb250YWlucyhpZGVudGlmaWVyKSk7CisKKyAgICBtX2Nvbm5lY3Rpb25zLnJlbW92ZShp
ZGVudGlmaWVyKTsKK30KKwordm9pZCBJREJTdG9yYWdlUmVnaXN0cnk6OnJlZ2lzdGVyVHJhbnNh
Y3Rpb24oV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0
cmFuc2FjdGlvbikKK3sKKyAgICBhdXRvIGlkZW50aWZpZXIgPSB0cmFuc2FjdGlvbi5pbmZvKCku
aWRlbnRpZmllcigpOworICAgIEFTU0VSVCghbV90cmFuc2FjdGlvbnMuY29udGFpbnMoaWRlbnRp
ZmllcikpOworCisgICAgbV90cmFuc2FjdGlvbnMuYWRkKGlkZW50aWZpZXIsIHRyYW5zYWN0aW9u
KTsKK30KKwordm9pZCBJREJTdG9yYWdlUmVnaXN0cnk6OnVucmVnaXN0ZXJUcmFuc2FjdGlvbihX
ZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0
aW9uKQoreworICAgIGF1dG8gaWRlbnRpZmllciA9IHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlm
aWVyKCk7CisgICAgQVNTRVJUKG1fdHJhbnNhY3Rpb25zLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsK
KworICAgIG1fdHJhbnNhY3Rpb25zLnJlbW92ZShpZGVudGlmaWVyKTsKK30KKworV2ViQ29yZTo6
SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24qIElEQlN0b3JhZ2VSZWdpc3Ry
eTo6Z2V0Q29ubmVjdGlvbih1aW50NjRfdCBpZGVudGlmaWVyKQoreworICAgIHJldHVybiBtX2Nv
bm5lY3Rpb25zLmdldChpZGVudGlmaWVyKS5nZXQoKTsKK30KKworV2ViQ29yZTo6SURCU2VydmVy
OjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uKiBJREJTdG9yYWdlUmVnaXN0cnk6OmdldFRy
YW5zYWN0aW9uKFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciBpZGVudGlmaWVyKQorewor
ICAgIHJldHVybiBtX3RyYW5zYWN0aW9ucy5nZXQoaWRlbnRpZmllcikuZ2V0KCk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VSZWdpc3RyeS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VSZWdpc3RyeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQyMzRlMGU0
MWExZmM1ZjNiYjk5MWFkYmQyZTA2MDJjMzhlOTQ1ODQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZVJlZ2lzdHJ5LmgKQEAg
LTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ29u
bmVjdGlvbi5oIgorI2luY2x1ZGUgPFdlYkNvcmUvSURCUmVzb3VyY2VJZGVudGlmaWVyLmg+Cisj
aW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNl
IElEQlNlcnZlciB7CitjbGFzcyBVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb247CitjbGFzcyBV
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOworfQorfQorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworY2xhc3MgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDsKKworY2xhc3MgSURCU3RvcmFn
ZVJlZ2lzdHJ5IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBJ
REJTdG9yYWdlUmVnaXN0cnkoKTsKKyAgICBXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQkNvbm5lY3Rp
b25Ub0NsaWVudCYgZ2V0T3JDcmVhdGVDb25uZWN0aW9uVG9DbGllbnQoSVBDOjpDb25uZWN0aW9u
OjpVbmlxdWVJRCwgV2ViQ29yZTo6SURCQ29ubmVjdGlvbklkZW50aWZpZXIpOworICAgIHZvaWQg
cmVtb3ZlQ29ubmVjdGlvblRvQ2xpZW50KElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQpOworICAg
IHZvaWQgcmVnaXN0ZXJDb25uZWN0aW9uKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0
YWJhc2VDb25uZWN0aW9uJik7CisgICAgdm9pZCB1bnJlZ2lzdGVyQ29ubmVjdGlvbihXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYpOworICAgIFdlYkNvcmU6
OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uKiBnZXRDb25uZWN0aW9uKHVp
bnQ2NF90IGlkZW50aWZpZXIpOworICAgIHZvaWQgcmVnaXN0ZXJUcmFuc2FjdGlvbihXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mKTsKKyAgICB2b2lkIHVu
cmVnaXN0ZXJUcmFuc2FjdGlvbihXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNl
VHJhbnNhY3Rpb24mKTsKKyAgICBXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNl
VHJhbnNhY3Rpb24qIGdldFRyYW5zYWN0aW9uKFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmll
cik7CisKK3ByaXZhdGU6CisgICAgSGFzaE1hcDxXZWJDb3JlOjpJREJDb25uZWN0aW9uSWRlbnRp
Zmllciwgc3RkOjp1bmlxdWVfcHRyPElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ+PiBtX2Nv
bm5lY3Rpb25zVG9DbGllbnQ7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgV2Vha1B0cjxXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbj4+IG1fY29ubmVjdGlvbnM7
CisgICAgSGFzaE1hcDxXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXIsIFdlYWtQdHI8V2Vi
Q29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uPj4gbV90cmFuc2Fj
dGlvbnM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdl
ci5jcHAKaW5kZXggOWU2MDZiZDI5YTFiOTAwMDI4MmI5NjQ3NzE4MDIwMzVlZWQ5NzhjMC4uYmUy
NWUzYmYwOWY2MDVjNjM0ZGJkM2Q0YmNmYzhlMjVjMzI4YTRlZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdl
TWFuYWdlci5jcHAKQEAgLTI2LDE4ICsyNiwyNSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIk5ldHdvcmtTdG9yYWdlTWFuYWdlci5oIgogCisjaW5jbHVkZSAiQ2FjaGVTdG9yYWdl
RW5naW5lLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeS5oIgog
I2luY2x1ZGUgIkZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlci5oIgorI2luY2x1ZGUgIklEQlN0b3Jh
Z2VNYW5hZ2VyLmgiCisjaW5jbHVkZSAiSURCU3RvcmFnZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAi
TG9jYWxTdG9yYWdlTWFuYWdlci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJO
ZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrU3RvcmFnZU1h
bmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk9yaWdpblN0b3JhZ2VNYW5hZ2VyLmgiCisjaW5j
bHVkZSAiUXVvdGFNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyLmgi
CiAjaW5jbHVkZSAiU3RvcmFnZUFyZWFCYXNlLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFyZWFNYXBN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhUmVnaXN0cnkuaCIKICNpbmNsdWRlICJX
ZWJzaXRlRGF0YVR5cGUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmg+CiAjaW5jbHVkZSA8
cGFsL2NyeXB0by9DcnlwdG9EaWdlc3QuaD4KICNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KICNpbmNs
dWRlIDx3dGYvU3VzcGVuZGFibGVXb3JrUXVldWUuaD4KQEAgLTEwMCwyMiArMTA3LDI4IEBAIHN0
YXRpYyB2b2lkIGRlbGV0ZU9yaWdpbkZpbGVJZk5lY2Vzc2FyeShjb25zdCBTdHJpbmcmIGZpbGVQ
YXRoKQogICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGZpbGVQYXRoKTsKIH0KIAotUmVm
PE5ldHdvcmtTdG9yYWdlTWFuYWdlcj4gTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjcmVhdGUoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYg
Y3VzdG9tTG9jYWxTdG9yYWdlUGF0aCkKK1JlZjxOZXR3b3JrU3RvcmFnZU1hbmFnZXI+IE5ldHdv
cmtTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgSVBDOjpD
b25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0
IFN0cmluZyYgY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21JREJT
dG9yYWdlUGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21DYWNoZVN0b3JhZ2VQYXRoLCB1aW50NjRf
dCBkZWZhdWx0T3JpZ2luUXVvdGEsIHVpbnQ2NF90IGRlZmF1bHRUaGlyZFBhcnR5T3JpZ2luUXVv
dGEpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyKHNl
c3Npb25JRCwgcGF0aCwgY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCkpOworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IE5ldHdvcmtTdG9yYWdlTWFuYWdlcihzZXNzaW9uSUQsIGNvbm5lY3Rpb24sIHBh
dGgsIGN1c3RvbUxvY2FsU3RvcmFnZVBhdGgsIGN1c3RvbUlEQlN0b3JhZ2VQYXRoLCBjdXN0b21D
YWNoZVN0b3JhZ2VQYXRoLCBkZWZhdWx0T3JpZ2luUXVvdGEsIGRlZmF1bHRUaGlyZFBhcnR5T3Jp
Z2luUXVvdGEpKTsKIH0KIAotTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpOZXR3b3JrU3RvcmFnZU1h
bmFnZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0
IFN0cmluZyYgY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCkKK05ldHdvcmtTdG9yYWdlTWFuYWdlcjo6
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgSVBDOjpDb25u
ZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0
cmluZyYgY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21JREJTdG9y
YWdlUGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21DYWNoZVN0b3JhZ2VQYXRoLCB1aW50NjRfdCBk
ZWZhdWx0T3JpZ2luUXVvdGEsIHVpbnQ2NF90IGRlZmF1bHRUaGlyZFBhcnR5T3JpZ2luUXVvdGEp
CiAgICAgOiBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCiAgICAgLCBtX3F1ZXVlKFN1c3BlbmRhYmxl
V29ya1F1ZXVlOjpjcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuU3RvcmFnZSIpKQorICAgICwgbV9k
ZWZhdWx0T3JpZ2luUXVvdGEoZGVmYXVsdE9yaWdpblF1b3RhKQorICAgICwgbV9kZWZhdWx0VGhp
cmRQYXJ0eU9yaWdpblF1b3RhKGRlZmF1bHRUaGlyZFBhcnR5T3JpZ2luUXVvdGEpCisgICAgLCBt
X3BhcmVudENvbm5lY3Rpb24oY29ubmVjdGlvbikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNN
YWluKCkpOwogCi0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBS
ZWYgeyAqdGhpcyB9LCBwYXRoID0gcGF0aC5pc29sYXRlZENvcHkoKSwgY3VzdG9tTG9jYWxTdG9y
YWdlUGF0aCA9IGNyb3NzVGhyZWFkQ29weShjdXN0b21Mb2NhbFN0b3JhZ2VQYXRoKV0oKSBtdXRh
YmxlIHsKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7
ICp0aGlzIH0sIHBhdGggPSBwYXRoLmlzb2xhdGVkQ29weSgpLCBjdXN0b21Mb2NhbFN0b3JhZ2VQ
YXRoID0gY3Jvc3NUaHJlYWRDb3B5KGN1c3RvbUxvY2FsU3RvcmFnZVBhdGgpLCBjdXN0b21JREJT
dG9yYWdlUGF0aCA9IGNyb3NzVGhyZWFkQ29weShjdXN0b21JREJTdG9yYWdlUGF0aCksIGN1c3Rv
bUNhY2hlU3RvcmFnZVBhdGggPSBjcm9zc1RocmVhZENvcHkoY3VzdG9tQ2FjaGVTdG9yYWdlUGF0
aCldKCkgbXV0YWJsZSB7CiAgICAgICAgIG1fZmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3Ry
eSA9IG1ha2VVbmlxdWU8RmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeT4oKTsKICAgICAg
ICAgbV9zdG9yYWdlQXJlYVJlZ2lzdHJ5ID0gbWFrZVVuaXF1ZTxTdG9yYWdlQXJlYVJlZ2lzdHJ5
PigpOworICAgICAgICBtX2lkYlN0b3JhZ2VSZWdpc3RyeSA9IG1ha2VVbmlxdWU8SURCU3RvcmFn
ZVJlZ2lzdHJ5PigpOwogICAgICAgICBtX3BhdGggPSBwYXRoOwogICAgICAgICBtX2N1c3RvbUxv
Y2FsU3RvcmFnZVBhdGggPSBjdXN0b21Mb2NhbFN0b3JhZ2VQYXRoOworICAgICAgICBtX2N1c3Rv
bUlEQlN0b3JhZ2VQYXRoID0gY3VzdG9tSURCU3RvcmFnZVBhdGg7CisgICAgICAgIG1fY3VzdG9t
Q2FjaGVTdG9yYWdlUGF0aCA9IGN1c3RvbUNhY2hlU3RvcmFnZVBhdGg7CiAgICAgICAgIGlmICgh
bV9wYXRoLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgYXV0byBzYWx0UGF0aCA9IEZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3BhdGgsICJzYWx0Iik7CiAgICAgICAgICAg
ICBtX3NhbHQgPSB2YWx1ZU9yRGVmYXVsdChGaWxlU3lzdGVtOjpyZWFkT3JNYWtlU2FsdChzYWx0
UGF0aCkpOwpAQCAtMTMxLDcgKzE0NCwxMCBAQCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6On5OZXR3
b3JrU3RvcmFnZU1hbmFnZXIoKQogCiBib29sIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y2FuSGFu
ZGxlVHlwZXMoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gdHlwZXMpCiB7Ci0gICAgcmV0dXJu
IHR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6TG9jYWxTdG9yYWdlKSB8fCB0eXBlcy5j
b250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlNlc3Npb25TdG9yYWdlKSB8fCB0eXBlcy5jb250YWlu
cyhXZWJzaXRlRGF0YVR5cGU6OkZpbGVTeXN0ZW0pOworICAgIHJldHVybiB0eXBlcy5jb250YWlu
cyhXZWJzaXRlRGF0YVR5cGU6OkxvY2FsU3RvcmFnZSkKKyAgICAgICAgfHwgdHlwZXMuY29udGFp
bnMoV2Vic2l0ZURhdGFUeXBlOjpTZXNzaW9uU3RvcmFnZSkKKyAgICAgICAgfHwgdHlwZXMuY29u
dGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpGaWxlU3lzdGVtKQorICAgICAgICB8fCB0eXBlcy5jb250
YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcyk7CiB9CiAKIHZvaWQgTmV0
d29ya1N0b3JhZ2VNYW5hZ2VyOjpjbG9zZSgpCkBAIC0xNzAsNiArMTg2LDcgQEAgdm9pZCBOZXR3
b3JrU3RvcmFnZU1hbmFnZXI6OnN0b3BSZWNlaXZpbmdNZXNzYWdlRnJvbUNvbm5lY3Rpb24oSVBD
OjpDb25uZWN0aW9uJgogCiAgICAgY29ubmVjdGlvbi5yZW1vdmVXb3JrUXVldWVNZXNzYWdlUmVj
ZWl2ZXIoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpKTsKICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7
ICp0aGlzIH0sIGNvbm5lY3Rpb24gPSBjb25uZWN0aW9uLnVuaXF1ZUlEKCldKCkgbXV0YWJsZSB7
CisgICAgICAgIG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT5yZW1vdmVDb25uZWN0aW9uVG9DbGllbnQo
Y29ubmVjdGlvbik7CiAgICAgICAgIG1fbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcnMucmVtb3Zl
SWYoWyZdKGF1dG8mIGVudHJ5KSB7CiAgICAgICAgICAgICBhdXRvJiBtYW5hZ2VyID0gZW50cnku
dmFsdWU7CiAgICAgICAgICAgICBtYW5hZ2VyLT5jb25uZWN0aW9uQ2xvc2VkKGNvbm5lY3Rpb24p
OwpAQCAtMjE4LDcgKzIzNSwxNCBAQCBPcmlnaW5TdG9yYWdlTWFuYWdlciYgTmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyOjpsb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2VyKGNvbnN0IFdlYgogICAgICAgICBh
dXRvIHdyaXRlT3JpZ2luRmlsZUZ1bmN0aW9uID0gW29yaWdpbkZpbGUgPSBvcmlnaW5GaWxlUGF0
aChvcmlnaW5EaXJlY3RvcnkpLCBvcmlnaW5dKCkgewogICAgICAgICAgICAgd3JpdGVPcmlnaW5U
b0ZpbGVJZk5lY2Vzc2FyeShvcmlnaW5GaWxlLCBvcmlnaW4pOwogICAgICAgICB9OwotICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxPcmlnaW5TdG9yYWdlTWFuYWdlcj4oV1RGTW92ZSh3cml0ZU9y
aWdpbkZpbGVGdW5jdGlvbiksIFdURk1vdmUob3JpZ2luRGlyZWN0b3J5KSwgTG9jYWxTdG9yYWdl
TWFuYWdlcjo6bG9jYWxTdG9yYWdlRmlsZVBhdGgobV9jdXN0b21Mb2NhbFN0b3JhZ2VQYXRoLCBv
cmlnaW4pKTsKKyAgICAgICAgYXV0byBsb2NhbFN0b3JhZ2VQYXRoID0gTG9jYWxTdG9yYWdlTWFu
YWdlcjo6bG9jYWxTdG9yYWdlRmlsZVBhdGgobV9jdXN0b21Mb2NhbFN0b3JhZ2VQYXRoLCBvcmln
aW4pOworICAgICAgICBhdXRvIGlkYlN0b3JhZ2VQYXRoID0gSURCU3RvcmFnZU1hbmFnZXI6Omlk
YlN0b3JhZ2VPcmlnaW5EaXJlY3RvcnkobV9jdXN0b21JREJTdG9yYWdlUGF0aCwgb3JpZ2luKTsK
KyAgICAgICAgYXV0byBjYWNoZVN0b3JhZ2VQYXRoID0gQ2FjaGVTdG9yYWdlOjpFbmdpbmU6OnN0
b3JhZ2VQYXRoKG1fY3VzdG9tQ2FjaGVTdG9yYWdlUGF0aCwgb3JpZ2luKTsKKyAgICAgICAgdWlu
dDY0X3QgcXVvdGEgPSBvcmlnaW4udG9wT3JpZ2luID09IG9yaWdpbi5jbGllbnRPcmlnaW4gPyBt
X2RlZmF1bHRPcmlnaW5RdW90YSA6IG1fZGVmYXVsdFRoaXJkUGFydHlPcmlnaW5RdW90YTsKKyAg
ICAgICAgUXVvdGFNYW5hZ2VyOjpJbmNyZWFzZVF1b3RhRnVuY3Rpb24gaW5jcmVhc2VRdW90YUZ1
bmN0aW9uID0gW3Nlc3Npb25JRCA9IG1fc2Vzc2lvbklELCBvcmlnaW4sIGNvbm5lY3Rpb24gPSBt
X3BhcmVudENvbm5lY3Rpb25dIChhdXRvIGlkZW50aWZpZXIsIGF1dG8gY3VycmVudFF1b3RhLCBh
dXRvIGN1cnJlbnRVc2FnZSwgYXV0byByZXF1ZXN0ZWRJbmNyZWFzZSkgbXV0YWJsZSB7CisgICAg
ICAgICAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQoY29ubmVjdGlvbiwgTWVzc2FnZXM6Ok5ldHdv
cmtQcm9jZXNzUHJveHk6OkluY3JlYXNlUXVvdGEoc2Vzc2lvbklELCBvcmlnaW4sIGlkZW50aWZp
ZXIsIGN1cnJlbnRRdW90YSwgY3VycmVudFVzYWdlLCByZXF1ZXN0ZWRJbmNyZWFzZSksIDApOwor
ICAgICAgICB9OworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxPcmlnaW5TdG9yYWdlTWFuYWdl
cj4oV1RGTW92ZSh3cml0ZU9yaWdpbkZpbGVGdW5jdGlvbiksIHF1b3RhLCBXVEZNb3ZlKGluY3Jl
YXNlUXVvdGFGdW5jdGlvbiksIFdURk1vdmUob3JpZ2luRGlyZWN0b3J5KSwgV1RGTW92ZShsb2Nh
bFN0b3JhZ2VQYXRoKSwgV1RGTW92ZShpZGJTdG9yYWdlUGF0aCksIFdURk1vdmUoY2FjaGVTdG9y
YWdlUGF0aCkpOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKIH0KIApAQCAtMjc4LDYgKzMwMiwx
NiBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y2xlYXJTdG9yYWdlRm9yVGVzdGluZyhD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgYwogICAgIH0pOwogfQogCit2b2lkIE5ldHdvcmtT
dG9yYWdlTWFuYWdlcjo6ZGlkSW5jcmVhc2VRdW90YShjb25zdCBXZWJDb3JlOjpDbGllbnRPcmln
aW4mIG9yaWdpbiwgUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyIGlkZW50aWZpZXIsIHN0
ZDo6b3B0aW9uYWw8dWludDY0X3Q+IG5ld1F1b3RhKQoreworICAgIEFTU0VSVChSdW5Mb29wOjpp
c01haW4oKSk7CisKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IFJlZiB7ICp0aGlzIH0sIG9yaWdpbiA9IGNyb3NzVGhyZWFkQ29weShvcmlnaW4pLCBpZGVudGlm
aWVyLCBuZXdRdW90YV0oKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGF1dG8gbWFuYWdlciA9IG1f
bG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcnMuZ2V0KG9yaWdpbikpCisgICAgICAgICAgICBtYW5h
Z2VyLT5xdW90YU1hbmFnZXIoKS5kaWRJbmNyZWFzZVF1b3RhKGlkZW50aWZpZXIsIG5ld1F1b3Rh
KTsKKyAgICB9KTsKK30KKwogdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmZpbGVTeXN0ZW1H
ZXREaXJlY3RvcnkoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpD
bGllbnRPcmlnaW4mIG9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxXZWJD
b3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4p
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkp
OwpAQCAtNDQ4LDYgKzQ4Miw5IEBAIEhhc2hTZXQ8V2ViQ29yZTo6Q2xpZW50T3JpZ2luPiBOZXR3
b3JrU3RvcmFnZU1hbmFnZXI6OmdldEFsbE9yaWdpbnMoKQogICAgIGZvciAoYXV0byYgb3JpZ2lu
IDogTG9jYWxTdG9yYWdlTWFuYWdlcjo6b3JpZ2luc09mTG9jYWxTdG9yYWdlRGF0YShtX2N1c3Rv
bUxvY2FsU3RvcmFnZVBhdGgpKQogICAgICAgICBhbGxPcmlnaW5zLmFkZChXZWJDb3JlOjpDbGll
bnRPcmlnaW4geyBvcmlnaW4sIG9yaWdpbiB9KTsKIAorICAgIGZvciAoYXV0byYgb3JpZ2luIDog
SURCU3RvcmFnZU1hbmFnZXI6Om9yaWdpbnNPZklEQlN0b3JhZ2VEYXRhKG1fY3VzdG9tSURCU3Rv
cmFnZVBhdGgpKQorICAgICAgICBhbGxPcmlnaW5zLmFkZChvcmlnaW4pOworCiAgICAgcmV0dXJu
IGFsbE9yaWdpbnM7CiB9CiAKQEAgLTU3NSwxMiArNjEyLDEyIEBAIHZvaWQgTmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyOjptb3ZlRGF0YShjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHNv
dXJjZSwKICAgICAgICAgYXV0byB0YXJnZXRPcmlnaW4gPSBXZWJDb3JlOjpDbGllbnRPcmlnaW4g
eyB0YXJnZXQsIHRhcmdldCB9OwogICAgICAgICAKICAgICAgICAgLy8gQ2xlYXIgZXhpc3Rpbmcg
ZGF0YSBvZiB0YXJnZXQgb3JpZ2luLgotICAgICAgICBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBl
PiB0eXBlcyA9IHsgV2Vic2l0ZURhdGFUeXBlOjpGaWxlU3lzdGVtLCBXZWJzaXRlRGF0YVR5cGU6
OkxvY2FsU3RvcmFnZSwgV2Vic2l0ZURhdGFUeXBlOjpTZXNzaW9uU3RvcmFnZSAgfTsKKyAgICAg
ICAgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gdHlwZXMgPSB7IFdlYnNpdGVEYXRhVHlwZTo6
RmlsZVN5c3RlbSwgV2Vic2l0ZURhdGFUeXBlOjpMb2NhbFN0b3JhZ2UsIFdlYnNpdGVEYXRhVHlw
ZTo6U2Vzc2lvblN0b3JhZ2UsIFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzICB9
OwogICAgICAgICBsb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2VyKHRhcmdldE9yaWdpbikuZGVsZXRl
RGF0YSh0eXBlcywgLVdhbGxUaW1lOjppbmZpbml0eSgpKTsKICAgICAgICAgcmVtb3ZlT3JpZ2lu
U3RvcmFnZU1hbmFnZXJJZlBvc3NpYmxlKHRhcmdldE9yaWdpbik7CiAKICAgICAgICAgLy8gTW92
ZSBkYXRhIGZyb20gc291cmNlIG9yaWdpbiB0byB0YXJnZXQgb3JpZ2luLgotICAgICAgICBsb2Nh
bE9yaWdpblN0b3JhZ2VNYW5hZ2VyKHNvdXJjZU9yaWdpbikubW92ZURhdGEob3JpZ2luRGlyZWN0
b3J5UGF0aChtX3BhdGgsIHRhcmdldE9yaWdpbiwgbV9zYWx0KSwgTG9jYWxTdG9yYWdlTWFuYWdl
cjo6bG9jYWxTdG9yYWdlRmlsZVBhdGgobV9jdXN0b21Mb2NhbFN0b3JhZ2VQYXRoLCB0YXJnZXRP
cmlnaW4pKTsKKyAgICAgICAgbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcihzb3VyY2VPcmlnaW4p
Lm1vdmVEYXRhKG9yaWdpbkRpcmVjdG9yeVBhdGgobV9wYXRoLCB0YXJnZXRPcmlnaW4sIG1fc2Fs
dCksIExvY2FsU3RvcmFnZU1hbmFnZXI6OmxvY2FsU3RvcmFnZUZpbGVQYXRoKG1fY3VzdG9tTG9j
YWxTdG9yYWdlUGF0aCwgdGFyZ2V0T3JpZ2luKSwgSURCU3RvcmFnZU1hbmFnZXI6OmlkYlN0b3Jh
Z2VPcmlnaW5EaXJlY3RvcnkobV9jdXN0b21JREJTdG9yYWdlUGF0aCwgdGFyZ2V0T3JpZ2luKSk7
CiAgICAgICAgIHJlbW92ZU9yaWdpblN0b3JhZ2VNYW5hZ2VySWZQb3NzaWJsZShzb3VyY2VPcmln
aW4pOwogCiAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CkBAIC01OTUsNiArNjMyLDggQEAgdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFn
ZXI6OnN1c3BlbmQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGUK
ICAgICAgICAgZm9yIChhdXRvJiBtYW5hZ2VyIDogbV9sb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2Vy
cy52YWx1ZXMoKSkgewogICAgICAgICAgICAgaWYgKGF1dG8gbG9jYWxTdG9yYWdlTWFuYWdlciA9
IG1hbmFnZXItPmV4aXN0aW5nTG9jYWxTdG9yYWdlTWFuYWdlcigpKQogICAgICAgICAgICAgICAg
IGxvY2FsU3RvcmFnZU1hbmFnZXItPnN5bmNMb2NhbFN0b3JhZ2UoKTsKKyAgICAgICAgICAgIGlm
IChhdXRvIGlkYlN0b3JhZ2VNYW5hZ2VyID0gbWFuYWdlci0+ZXhpc3RpbmdJREJTdG9yYWdlTWFu
YWdlcigpKQorICAgICAgICAgICAgICAgIGlkYlN0b3JhZ2VNYW5hZ2VyLT5zdG9wRGF0YWJhc2VB
Y3Rpdml0aWVzRm9yU3VzcGVuZCgpOwogICAgICAgICB9CiAgICAgfSwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOwogfQpAQCAtNjMyLDYgKzY3MSw1MiBAQCB2b2lkIE5ldHdvcmtTdG9yYWdl
TWFuYWdlcjo6c3luY0xvY2FsU3RvcmFnZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldAogICAgIH0pOwogfQogCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6cmVnaXN0ZXJU
ZW1wb3JhcnlCbG9iRmlsZVBhdGhzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGZpbGVQYXRocykKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWlu
KCkpOworCisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYg
eyAqdGhpcyB9LCBjb25uZWN0aW9uSUQgPSBjb25uZWN0aW9uLnVuaXF1ZUlEKCksIGZpbGVQYXRo
cyA9IGNyb3NzVGhyZWFkQ29weShmaWxlUGF0aHMpXSB7CisgICAgICAgIGF1dG8mIHRlbXBvcmFy
eUJsb2JQYXRocyA9IG1fdGVtcG9yYXJ5QmxvYlBhdGhzQnlDb25uZWN0aW9uLmVuc3VyZShjb25u
ZWN0aW9uSUQsIFtdIHsKKyAgICAgICAgICAgIHJldHVybiBIYXNoU2V0PFN0cmluZz4geyB9Owor
ICAgICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CisgICAgICAgIHRlbXBvcmFyeUJsb2JQYXRocy5h
ZGQoZmlsZVBhdGhzLmJlZ2luKCksIGZpbGVQYXRocy5lbmQoKSk7CisgICAgfSk7Cit9CisKK3Zv
aWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpyZXF1ZXN0U3BhY2UoY29uc3QgV2ViQ29yZTo6Q2xp
ZW50T3JpZ2luJiBvcmlnaW4sIHVpbnQ2NF90IHNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFp
bigpKTsKKworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVm
IHsgKnRoaXMgfSwgb3JpZ2luID0gY3Jvc3NUaHJlYWRDb3B5KG9yaWdpbiksIHNpemUsIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Cisg
ICAgICAgIGxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIob3JpZ2luKS5xdW90YU1hbmFnZXIoKS5y
ZXF1ZXN0U3BhY2Uoc2l6ZSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildKGF1dG8gZGVjaXNpb24pIG11dGFibGUgeworICAgICAgICAgICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpLCBkZWNpc2lvbl0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihkZWNpc2lvbiA9PSBRdW90YU1hbmFnZXI6OkRlY2lzaW9uOjpHcmFudCk7CisgICAg
ICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyOjpyZXNldFF1b3RhRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsK
KworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRo
aXMgfSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBt
dXRhYmxlIHsKKyAgICAgICAgZm9yIChhdXRvJiBtYW5hZ2VyIDogbV9sb2NhbE9yaWdpblN0b3Jh
Z2VNYW5hZ2Vycy52YWx1ZXMoKSkKKyAgICAgICAgICAgIG1hbmFnZXItPnF1b3RhTWFuYWdlcigp
LnJlc2V0UXVvdGFGb3JUZXN0aW5nKCk7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRj
aChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgfSk7Cit9CisKK3ZvaWQgTmV0d29y
a1N0b3JhZ2VNYW5hZ2VyOjpyZXNldFF1b3RhVXBkYXRlZEJhc2VkT25Vc2FnZUZvclRlc3Rpbmco
Y29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4pCit7CisgICAgQVNTRVJUKFJ1bkxv
b3A6OmlzTWFpbigpKTsKKworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gUmVmIHsgKnRoaXMgfSwgb3JpZ2luID0gY3Jvc3NUaHJlYWRDb3B5KG9yaWdpbildKCkg
bXV0YWJsZSB7CisgICAgICAgIGlmIChhdXRvIG1hbmFnZXIgPSBtX2xvY2FsT3JpZ2luU3RvcmFn
ZU1hbmFnZXJzLmdldChvcmlnaW4pKQorICAgICAgICAgICAgbWFuYWdlci0+cXVvdGFNYW5hZ2Vy
KCkucmVzZXRRdW90YVVwZGF0ZWRCYXNlZE9uVXNhZ2VGb3JUZXN0aW5nKCk7CisgICAgfSk7Cit9
CisKIHZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjb25uZWN0VG9TdG9yYWdlQXJlYShJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFdlYkNvcmU6OlN0b3JhZ2VUeXBlIHR5cGUsIFN0b3Jh
Z2VBcmVhTWFwSWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBTdG9yYWdlTmFtZXNwYWNlSWRl
bnRpZmllciBuYW1lc3BhY2VJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4m
IG9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQXJlYUlkZW50aWZpZXIsIEhh
c2hNYXA8U3RyaW5nLCBTdHJpbmc+LCB1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CkBAIC03MTksNSArODA0LDE5NSBAQCB2
b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y2xlYXIoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBTdG9yYWdlQXJlYUlkZW50aQogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKK3Zv
aWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpvcGVuRGF0YWJhc2UoSVBDOjpDb25uZWN0aW9uJiBj
b25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEpCit7
CisgICAgYXV0byYgY29ubmVjdGlvblRvQ2xpZW50ID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPmdl
dE9yQ3JlYXRlQ29ubmVjdGlvblRvQ2xpZW50KGNvbm5lY3Rpb24udW5pcXVlSUQoKSwgcmVxdWVz
dERhdGEucmVxdWVzdElkZW50aWZpZXIoKS5jb25uZWN0aW9uSWRlbnRpZmllcigpKTsKKyAgICBs
b2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2VyKHJlcXVlc3REYXRhLmRhdGFiYXNlSWRlbnRpZmllcigp
Lm9yaWdpbigpKS5pZGJTdG9yYWdlTWFuYWdlcigqbV9pZGJTdG9yYWdlUmVnaXN0cnkpLm9wZW5E
YXRhYmFzZShjb25uZWN0aW9uVG9DbGllbnQsIHJlcXVlc3REYXRhKTsKK30KKwordm9pZCBOZXR3
b3JrU3RvcmFnZU1hbmFnZXI6Om9wZW5EQlJlcXVlc3RDYW5jZWxsZWQoY29uc3QgV2ViQ29yZTo6
SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhKQoreworICAgIGxvY2FsT3JpZ2luU3RvcmFnZU1h
bmFnZXIocmVxdWVzdERhdGEuZGF0YWJhc2VJZGVudGlmaWVyKCkub3JpZ2luKCkpLmlkYlN0b3Jh
Z2VNYW5hZ2VyKCptX2lkYlN0b3JhZ2VSZWdpc3RyeSkub3BlbkRCUmVxdWVzdENhbmNlbGxlZChy
ZXF1ZXN0RGF0YSk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVEYXRh
YmFzZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OklEQlJlcXVl
c3REYXRhJiByZXF1ZXN0RGF0YSkKK3sKKyAgICBhdXRvJiBjb25uZWN0aW9uVG9DbGllbnQgPSBt
X2lkYlN0b3JhZ2VSZWdpc3RyeS0+Z2V0T3JDcmVhdGVDb25uZWN0aW9uVG9DbGllbnQoY29ubmVj
dGlvbi51bmlxdWVJRCgpLCByZXF1ZXN0RGF0YS5yZXF1ZXN0SWRlbnRpZmllcigpLmNvbm5lY3Rp
b25JZGVudGlmaWVyKCkpOworICAgIGxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIocmVxdWVzdERh
dGEuZGF0YWJhc2VJZGVudGlmaWVyKCkub3JpZ2luKCkpLmlkYlN0b3JhZ2VNYW5hZ2VyKCptX2lk
YlN0b3JhZ2VSZWdpc3RyeSkuZGVsZXRlRGF0YWJhc2UoY29ubmVjdGlvblRvQ2xpZW50LCByZXF1
ZXN0RGF0YSk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjplc3RhYmxpc2hUcmFu
c2FjdGlvbih1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJD
b3JlOjpJREJUcmFuc2FjdGlvbkluZm8mIHRyYW5zYWN0aW9uSW5mbykKK3sKKyAgICBpZiAoYXV0
byBjb25uZWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPmdldENvbm5lY3Rpb24oZGF0YWJh
c2VDb25uZWN0aW9uSWRlbnRpZmllcikpCisgICAgICAgIGNvbm5lY3Rpb24tPmVzdGFibGlzaFRy
YW5zYWN0aW9uKHRyYW5zYWN0aW9uSW5mbyk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5h
Z2VyOjpkYXRhYmFzZUNvbm5lY3Rpb25QZW5kaW5nQ2xvc2UodWludDY0X3QgZGF0YWJhc2VDb25u
ZWN0aW9uSWRlbnRpZmllcikKK3sKKyAgICBpZiAoYXV0byBjb25uZWN0aW9uID0gbV9pZGJTdG9y
YWdlUmVnaXN0cnktPmdldENvbm5lY3Rpb24oZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcikp
CisgICAgICAgIGNvbm5lY3Rpb24tPmNvbm5lY3Rpb25QZW5kaW5nQ2xvc2VGcm9tQ2xpZW50KCk7
Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkYXRhYmFzZUNvbm5lY3Rpb25DbG9z
ZWQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcikKK3sKKyAgICBpZiAoYXV0
byBjb25uZWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPmdldENvbm5lY3Rpb24oZGF0YWJh
c2VDb25uZWN0aW9uSWRlbnRpZmllcikpCisgICAgICAgIGNvbm5lY3Rpb24tPmNvbm5lY3Rpb25D
bG9zZWRGcm9tQ2xpZW50KCk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjphYm9y
dE9wZW5BbmRVcGdyYWRlTmVlZGVkKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZp
ZXIsIGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVu
dGlmaWVyKQoreworICAgIGlmIChhdXRvIHRyYW5zYWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0
cnktPmdldFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllcikpCisgICAgICAgIHRyYW5z
YWN0aW9uLT5hYm9ydFdpdGhvdXRDYWxsYmFjaygpOworCisgICAgaWYgKGF1dG8gY29ubmVjdGlv
biA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT5nZXRDb25uZWN0aW9uKGRhdGFiYXNlQ29ubmVjdGlv
bklkZW50aWZpZXIpKQorICAgICAgICBjb25uZWN0aW9uLT5jb25uZWN0aW9uQ2xvc2VkRnJvbUNs
aWVudCgpOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGlkRmlyZVZlcnNpb25D
aGFuZ2VFdmVudCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBX
ZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBX
ZWJDb3JlOjpJbmRleGVkREI6OkNvbm5lY3Rpb25DbG9zZWRPbkJlaGFsZk9mU2VydmVyIGNvbm5l
Y3Rpb25DbG9zZWQpCit7CisgICAgaWYgKGF1dG8gY29ubmVjdGlvbiA9IG1faWRiU3RvcmFnZVJl
Z2lzdHJ5LT5nZXRDb25uZWN0aW9uKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpKQorICAg
ICAgICBjb25uZWN0aW9uLT5kaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KHJlcXVlc3RJZGVudGlm
aWVyLCBjb25uZWN0aW9uQ2xvc2VkKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6
OmFib3J0VHJhbnNhY3Rpb24oY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0
cmFuc2FjdGlvbklkZW50aWZpZXIpCit7CisgICAgaWYgKGF1dG8gdHJhbnNhY3Rpb24gPSBtX2lk
YlN0b3JhZ2VSZWdpc3RyeS0+Z2V0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZGVudGlmaWVyKSkK
KyAgICAgICAgdHJhbnNhY3Rpb24tPmFib3J0KCk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VN
YW5hZ2VyOjpjb21taXRUcmFuc2FjdGlvbihjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50
aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgcGVuZGluZ1JlcXVlc3RDb3Vu
dCkKK3sKKyAgICBpZiAoYXV0byB0cmFuc2FjdGlvbiA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT5n
ZXRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbklkZW50aWZpZXIpKQorICAgICAgICB0cmFuc2FjdGlv
bi0+Y29tbWl0KHBlbmRpbmdSZXF1ZXN0Q291bnQpOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdl
TWFuYWdlcjo6ZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24odWludDY0
X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCUmVzb3Vy
Y2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpCit7CisgICAgaWYgKGF1dG8gY29u
bmVjdGlvbiA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT5nZXRDb25uZWN0aW9uKGRhdGFiYXNlQ29u
bmVjdGlvbklkZW50aWZpZXIpKQorICAgICAgICBjb25uZWN0aW9uLT5kaWRGaW5pc2hIYW5kbGlu
Z1ZlcnNpb25DaGFuZ2UodHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKK30KKwordm9pZCBOZXR3b3Jr
U3RvcmFnZU1hbmFnZXI6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVl
c3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVJbmZvJiBv
YmplY3RTdG9yZUluZm8pCit7CisgICAgaWYgKGF1dG8gdHJhbnNhY3Rpb24gPSBtX2lkYlN0b3Jh
Z2VSZWdpc3RyeS0+Z2V0VHJhbnNhY3Rpb24ocmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlm
aWVyKCkpKSB7CisgICAgICAgIEFTU0VSVCh0cmFuc2FjdGlvbi0+aXNWZXJzaW9uQ2hhbmdlKCkp
OworICAgICAgICB0cmFuc2FjdGlvbi0+Y3JlYXRlT2JqZWN0U3RvcmUocmVxdWVzdERhdGEsIG9i
amVjdFN0b3JlSW5mbyk7CisgICAgfQorfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6
ZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3RE
YXRhLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSkKK3sKKyAgICBpZiAoYXV0byB0cmFu
c2FjdGlvbiA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT5nZXRUcmFuc2FjdGlvbihyZXF1ZXN0RGF0
YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSkpIHsKKyAgICAgICAgQVNTRVJUKHRyYW5zYWN0aW9u
LT5pc1ZlcnNpb25DaGFuZ2UoKSk7CisgICAgICAgIHRyYW5zYWN0aW9uLT5kZWxldGVPYmplY3RT
dG9yZShyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVOYW1lKTsKKyAgICB9Cit9CisKK3ZvaWQgTmV0
d29ya1N0b3JhZ2VNYW5hZ2VyOjpyZW5hbWVPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJS
ZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBuZXdOYW1lKQoreworICAgIGlmIChhdXRvIHRyYW5zYWN0aW9uID0gbV9p
ZGJTdG9yYWdlUmVnaXN0cnktPmdldFRyYW5zYWN0aW9uKHJlcXVlc3REYXRhLnRyYW5zYWN0aW9u
SWRlbnRpZmllcigpKSkgeworICAgICAgICBBU1NFUlQodHJhbnNhY3Rpb24tPmlzVmVyc2lvbkNo
YW5nZSgpKTsKKyAgICAgICAgdHJhbnNhY3Rpb24tPnJlbmFtZU9iamVjdFN0b3JlKHJlcXVlc3RE
YXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIG5ld05hbWUpOworICAgIH0KK30KKwordm9pZCBO
ZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNsZWFyT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6SURC
UmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIp
Cit7CisgICAgaWYgKGF1dG8gdHJhbnNhY3Rpb24gPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+Z2V0
VHJhbnNhY3Rpb24ocmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCkpKQorICAgICAg
ICB0cmFuc2FjdGlvbi0+Y2xlYXJPYmplY3RTdG9yZShyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZUluZGV4
KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgV2ViQ29y
ZTo6SURCSW5kZXhJbmZvJiBpbmRleEluZm8pCit7CisgICAgaWYgKGF1dG8gdHJhbnNhY3Rpb24g
PSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+Z2V0VHJhbnNhY3Rpb24ocmVxdWVzdERhdGEudHJhbnNh
Y3Rpb25JZGVudGlmaWVyKCkpKQorICAgICAgICB0cmFuc2FjdGlvbi0+Y3JlYXRlSW5kZXgocmVx
dWVzdERhdGEsIGluZGV4SW5mbyk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpk
ZWxldGVJbmRleChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIHVp
bnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpbmRleE5hbWUpCit7
CisgICAgaWYgKGF1dG8gdHJhbnNhY3Rpb24gPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+Z2V0VHJh
bnNhY3Rpb24ocmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCkpKQorICAgICAgICB0
cmFuc2FjdGlvbi0+ZGVsZXRlSW5kZXgocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmll
ciwgaW5kZXhOYW1lKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnJlbmFtZUlu
ZGV4KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgdWludDY0X3Qg
b2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRleElkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgbmV3TmFtZSkKK3sKKyAgICBpZiAoYXV0byB0cmFuc2FjdGlvbiA9IG1faWRiU3RvcmFn
ZVJlZ2lzdHJ5LT5nZXRUcmFuc2FjdGlvbihyZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZp
ZXIoKSkpCisgICAgICAgIHRyYW5zYWN0aW9uLT5yZW5hbWVJbmRleChyZXF1ZXN0RGF0YSwgb2Jq
ZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleElkZW50aWZpZXIsIG5ld05hbWUpOworfQorCit2b2lk
IE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6cHV0T3JBZGQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IFdl
YkNvcmU6OklEQktleURhdGEmIGtleURhdGEsIGNvbnN0IFdlYkNvcmU6OklEQlZhbHVlJiB2YWx1
ZSwgV2ViQ29yZTo6SW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUgb3ZlcndyaXRl
TW9kZSkKK3sKKyAgICBpZiAodmFsdWUuYmxvYlVSTHMoKS5zaXplKCkgIT0gdmFsdWUuYmxvYkZp
bGVQYXRocygpLnNpemUoKSkgeworICAgICAgICBSRUxFQVNFX0xPR19GQVVMVChJbmRleGVkREIs
ICJOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnB1dE9yQWRkOiBOdW1iZXIgb2YgYmxvYiBVUkxzIGRv
ZXNuJ3QgbWF0Y2ggdGhlIG51bWJlciBvZiBibG9iIGZpbGUgcGF0aHMuIik7CisgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gVmFs
aWRhdGUgdGVtcG9yYXJ5IGJsb2IgcGF0aHMgaW4gfHZhbHVlfCB0byBtYWtlIHN1cmUgdGhleSBi
ZWxvbmcgdG8gdGhlIHNvdXJjZSBwcm9jZXNzLgorICAgIGlmICghdmFsdWUuYmxvYkZpbGVQYXRo
cygpLmlzRW1wdHkoKSkgeworICAgICAgICBhdXRvIGl0ID0gbV90ZW1wb3JhcnlCbG9iUGF0aHNC
eUNvbm5lY3Rpb24uZmluZChjb25uZWN0aW9uLnVuaXF1ZUlEKCkpOworICAgICAgICBpZiAoaXQg
PT0gbV90ZW1wb3JhcnlCbG9iUGF0aHNCeUNvbm5lY3Rpb24uZW5kKCkpIHsKKyAgICAgICAgICAg
IFJFTEVBU0VfTE9HX0ZBVUxUKEluZGV4ZWREQiwgIk5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6cHV0
T3JBZGQ6IElEQlZhbHVlIGNvbnRhaW5zIGJsb2IgcGF0aHMgYnV0IG5vbmUgYXJlIGFsbG93ZWQg
Zm9yIHRoaXMgcHJvY2VzcyIpOworICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBhdXRvJiB0ZW1wb3JhcnlC
bG9iUGF0aHNGb3JDb25uZWN0aW9uID0gaXQtPnZhbHVlOworICAgICAgICBmb3IgKGF1dG8mIGJs
b2JGaWxlUGF0aCA6IHZhbHVlLmJsb2JGaWxlUGF0aHMoKSkgeworICAgICAgICAgICAgaWYgKCF0
ZW1wb3JhcnlCbG9iUGF0aHNGb3JDb25uZWN0aW9uLnJlbW92ZShibG9iRmlsZVBhdGgpKSB7Cisg
ICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRkFVTFQoSW5kZXhlZERCLCAiTmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyOjpwdXRPckFkZDogQmxvYiBwYXRoIHdhcyBub3QgY3JlYXRlZCBmb3IgdGhpcyBX
ZWJQcm9jZXNzIik7CisgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisg
ICAgaWYgKGF1dG8gdHJhbnNhY3Rpb24gPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+Z2V0VHJhbnNh
Y3Rpb24ocmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCkpKQorICAgICAgICB0cmFu
c2FjdGlvbi0+cHV0T3JBZGQocmVxdWVzdERhdGEsIGtleURhdGEsIHZhbHVlLCBvdmVyd3JpdGVN
b2RlKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmdldFJlY29yZChjb25zdCBX
ZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IFdlYkNvcmU6OklEQkdl
dFJlY29yZERhdGEmIGdldFJlY29yZERhdGEpCit7CisgICAgaWYgKGF1dG8gdHJhbnNhY3Rpb24g
PSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+Z2V0VHJhbnNhY3Rpb24ocmVxdWVzdERhdGEudHJhbnNh
Y3Rpb25JZGVudGlmaWVyKCkpKQorICAgICAgICB0cmFuc2FjdGlvbi0+Z2V0UmVjb3JkKHJlcXVl
c3REYXRhLCBnZXRSZWNvcmREYXRhKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6
OmdldEFsbFJlY29yZHMoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRh
LCBjb25zdCBXZWJDb3JlOjpJREJHZXRBbGxSZWNvcmRzRGF0YSYgZ2V0QWxsUmVjb3Jkc0RhdGEp
Cit7CisgICAgaWYgKGF1dG8gdHJhbnNhY3Rpb24gPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+Z2V0
VHJhbnNhY3Rpb24ocmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCkpKQorICAgICAg
ICB0cmFuc2FjdGlvbi0+Z2V0QWxsUmVjb3JkcyhyZXF1ZXN0RGF0YSwgZ2V0QWxsUmVjb3Jkc0Rh
dGEpOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Z2V0Q291bnQoY29uc3QgV2Vi
Q29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBXZWJDb3JlOjpJREJLZXlS
YW5nZURhdGEmIGtleVJhbmdlRGF0YSkKK3sKKyAgICBpZiAoYXV0byB0cmFuc2FjdGlvbiA9IG1f
aWRiU3RvcmFnZVJlZ2lzdHJ5LT5nZXRUcmFuc2FjdGlvbihyZXF1ZXN0RGF0YS50cmFuc2FjdGlv
bklkZW50aWZpZXIoKSkpCisgICAgICAgIHRyYW5zYWN0aW9uLT5nZXRDb3VudChyZXF1ZXN0RGF0
YSwga2V5UmFuZ2VEYXRhKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmRlbGV0
ZVJlY29yZChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0
IFdlYkNvcmU6OklEQktleVJhbmdlRGF0YSYga2V5UmFuZ2VEYXRhKQoreworICAgIGlmIChhdXRv
IHRyYW5zYWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPmdldFRyYW5zYWN0aW9uKHJlcXVl
c3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpKSkKKyAgICAgICAgdHJhbnNhY3Rpb24tPmRl
bGV0ZVJlY29yZChyZXF1ZXN0RGF0YSwga2V5UmFuZ2VEYXRhKTsKK30KKwordm9pZCBOZXR3b3Jr
U3RvcmFnZU1hbmFnZXI6Om9wZW5DdXJzb3IoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEm
IHJlcXVlc3REYXRhLCBjb25zdCBXZWJDb3JlOjpJREJDdXJzb3JJbmZvJiBjdXJzb3JJbmZvKQor
eworICAgIGlmIChhdXRvIHRyYW5zYWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPmdldFRy
YW5zYWN0aW9uKHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpKSkKKyAgICAgICAg
dHJhbnNhY3Rpb24tPm9wZW5DdXJzb3IocmVxdWVzdERhdGEsIGN1cnNvckluZm8pOworfQorCit2
b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6aXRlcmF0ZUN1cnNvcihjb25zdCBXZWJDb3JlOjpJ
REJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IFdlYkNvcmU6OklEQkl0ZXJhdGVDdXJz
b3JEYXRhJiBjdXJzb3JEYXRhKQoreworICAgIGlmIChhdXRvIHRyYW5zYWN0aW9uID0gbV9pZGJT
dG9yYWdlUmVnaXN0cnktPmdldFRyYW5zYWN0aW9uKHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRl
bnRpZmllcigpKSkKKyAgICAgICAgdHJhbnNhY3Rpb24tPml0ZXJhdGVDdXJzb3IocmVxdWVzdERh
dGEsIGN1cnNvckRhdGEpOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Z2V0QWxs
RGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29u
c3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgY29u
c3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4pCit7CisgICAgYXV0byYgY29ubmVjdGlv
blRvQ2xpZW50ID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPmdldE9yQ3JlYXRlQ29ubmVjdGlvblRv
Q2xpZW50KGNvbm5lY3Rpb24udW5pcXVlSUQoKSwgcmVxdWVzdElkZW50aWZpZXIuY29ubmVjdGlv
bklkZW50aWZpZXIoKSk7CisgICAgYXV0byByZXN1bHQgPSBsb2NhbE9yaWdpblN0b3JhZ2VNYW5h
Z2VyKG9yaWdpbikuaWRiU3RvcmFnZU1hbmFnZXIoKm1faWRiU3RvcmFnZVJlZ2lzdHJ5KS5nZXRB
bGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMoKTsKKyAgICBjb25uZWN0aW9uVG9DbGllbnQuZGlk
R2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3Zl
KHJlc3VsdCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFu
YWdlci5oCmluZGV4IDE1YzAzNzJlNjZhN2Y2Mjg0OTkyN2YxYzM3ZjE2YTY5NTg3ZjQ1MDEuLjlj
M2QyZDY0MDZmZWU5YjJiNGU2Y2EyNmY3YjY1ZmUwYzc4YjgzYmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VN
YW5hZ2VyLmgKQEAgLTM2LDYgKzM2LDggQEAKICNpbmNsdWRlIDxXZWJDb3JlL0NsaWVudE9yaWdp
bi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllci5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvSURCUmVzb3VyY2VJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9JbmRleGVkREIuaD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KIApAQCAtNDQsMTggKzQ2LDMxIEBAIGNsYXNzIFNoYXJlZEZpbGVIYW5k
bGU7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIElEQkN1cnNvckluZm87CitjbGFz
cyBJREJLZXlEYXRhOworY2xhc3MgSURCSW5kZXhJbmZvOworY2xhc3MgSURCT2JqZWN0U3RvcmVJ
bmZvOworY2xhc3MgSURCUmVxdWVzdERhdGE7CitjbGFzcyBJREJUcmFuc2FjdGlvbkluZm87Citj
bGFzcyBJREJWYWx1ZTsKIHN0cnVjdCBDbGllbnRPcmlnaW47CitzdHJ1Y3QgSURCR2V0QWxsUmVj
b3Jkc0RhdGE7CitzdHJ1Y3QgSURCR2V0UmVjb3JkRGF0YTsKK3N0cnVjdCBJREJHZXRBbGxSZWNv
cmRzRGF0YTsKK3N0cnVjdCBJREJJdGVyYXRlQ3Vyc29yRGF0YTsKK3N0cnVjdCBJREJLZXlSYW5n
ZURhdGE7CiBlbnVtIGNsYXNzIFN0b3JhZ2VUeXBlIDogdWludDhfdDsKIH0KIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKIGNsYXNzIEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnk7CitjbGFz
cyBJREJTdG9yYWdlUmVnaXN0cnk7CiBjbGFzcyBTdG9yYWdlQXJlYVJlZ2lzdHJ5OwogCiBjbGFz
cyBOZXR3b3JrU3RvcmFnZU1hbmFnZXIgZmluYWwgOiBwdWJsaWMgSVBDOjpDb25uZWN0aW9uOjpX
b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8TmV0d29y
a1N0b3JhZ2VNYW5hZ2VyPiBjcmVhdGUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcGF0
aCwgY29uc3QgU3RyaW5nJiBjdXN0b21Mb2NhbFN0b3JhZ2VQYXRoKTsKKyAgICBzdGF0aWMgUmVm
PE5ldHdvcmtTdG9yYWdlTWFuYWdlcj4gY3JlYXRlKFBBTDo6U2Vzc2lvbklELCBJUEM6OkNvbm5l
Y3Rpb246OlVuaXF1ZUlELCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY3VzdG9t
TG9jYWxTdG9yYWdlUGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21JREJTdG9yYWdlUGF0aCwgY29u
c3QgU3RyaW5nJiBjdXN0b21DYWNoZVN0b3JhZ2VQYXRoLCB1aW50NjRfdCBkZWZhdWx0T3JpZ2lu
UXVvdGEsIHVpbnQ2NF90IGRlZmF1bHRUaGlyZFBhcnR5T3JpZ2luUXVvdGEpOwogICAgIHN0YXRp
YyBib29sIGNhbkhhbmRsZVR5cGVzKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+KTsKIAogICAg
IHZvaWQgc3RhcnRSZWNlaXZpbmdNZXNzYWdlRnJvbUNvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9u
Jik7CkBAIC02NCw2ICs3OSw3IEBAIHB1YmxpYzoKICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQoKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb25JRDsgfQogICAgIHZvaWQgY2xvc2UoKTsKICAg
ICB2b2lkIGNsZWFyU3RvcmFnZUZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKKyAgICB2b2lkIGRpZEluY3JlYXNlUXVvdGEoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2lu
JiwgUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90
PiBuZXdRdW90YSk7CiAgICAgdm9pZCBmZXRjaERhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlw
ZT4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYnNpdGVEYXRhOjpFbnRyeT4mJik+
JiYpOwogICAgIHZvaWQgZGVsZXRlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgY29u
c3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwogICAgIHZvaWQgZGVsZXRlRGF0YU1vZGlmaWVkU2luY2UoT3B0aW9uU2V0
PFdlYnNpdGVEYXRhVHlwZT4sIFdhbGxUaW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwpAQCAtNzMsMTQgKzg5LDE4IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3VtZSgpOwogICAgIHZv
aWQgaGFuZGxlTG93TWVtb3J5V2FybmluZygpOwogICAgIHZvaWQgc3luY0xvY2FsU3RvcmFnZShD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgcmVnaXN0ZXJUZW1wb3JhcnlC
bG9iRmlsZVBhdGhzKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7Cisg
ICAgdm9pZCByZXF1ZXN0U3BhY2UoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgdWludDY0
X3Qgc2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCByZXNl
dFF1b3RhRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQg
cmVzZXRRdW90YVVwZGF0ZWRCYXNlZE9uVXNhZ2VGb3JUZXN0aW5nKGNvbnN0IFdlYkNvcmU6OkNs
aWVudE9yaWdpbiYpOwogCiBwcml2YXRlOgogICAgIE5ldHdvcmtTdG9yYWdlTWFuYWdlcihQQUw6
OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGN1c3RvbUxvY2Fs
U3RvcmFnZVBhdGgpOworICAgIE5ldHdvcmtTdG9yYWdlTWFuYWdlcihQQUw6OlNlc3Npb25JRCwg
SVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJp
bmcmIGN1c3RvbUxvY2FsU3RvcmFnZVBhdGgsIGNvbnN0IFN0cmluZyYgY3VzdG9tSURCU3RvcmFn
ZVBhdGgsIGNvbnN0IFN0cmluZyYgY3VzdG9tQ2FjaGVTdG9yYWdlUGF0aCwgdWludDY0X3QgZGVm
YXVsdE9yaWdpblF1b3RhLCB1aW50NjRfdCBkZWZhdWx0VGhpcmRQYXJ0eU9yaWdpblF1b3RhKTsK
ICAgICB+TmV0d29ya1N0b3JhZ2VNYW5hZ2VyKCk7CiAgICAgT3JpZ2luU3RvcmFnZU1hbmFnZXIm
IGxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJik7
CiAgICAgYm9vbCByZW1vdmVPcmlnaW5TdG9yYWdlTWFuYWdlcklmUG9zc2libGUoY29uc3QgV2Vi
Q29yZTo6Q2xpZW50T3JpZ2luJik7CiAgICAgdm9pZCBkZWxldGVPcmlnaW5EaXJlY3RvcnlJZlBv
c3NpYmxlKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYpOwotICAgIEZpbGVTeXN0ZW1TdG9y
YWdlSGFuZGxlUmVnaXN0cnkmIGZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnkoKTsKIAog
ICAgIHZvaWQgZm9yRWFjaE9yaWdpbkRpcmVjdG9yeShjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0
IFN0cmluZyYpPiYpOwogICAgIEhhc2hTZXQ8V2ViQ29yZTo6Q2xpZW50T3JpZ2luPiBnZXRBbGxP
cmlnaW5zKCk7CkBAIC0xMTgsNiArMTM4LDM0IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZW1vdmVJ
dGVtKElQQzo6Q29ubmVjdGlvbiYsIFN0b3JhZ2VBcmVhSWRlbnRpZmllciwgU3RvcmFnZUFyZWFJ
bXBsSWRlbnRpZmllciwgU3RyaW5nJiYga2V5LCBTdHJpbmcmJiB1cmxTdHJpbmcsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBjbGVhcihJUEM6OkNvbm5lY3Rpb24mLCBT
dG9yYWdlQXJlYUlkZW50aWZpZXIsIFN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXIsIFN0cmluZyYm
IHVybFN0cmluZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAorICAgIC8vIE1lc3Nh
Z2UgaGFuZGxlcnMgZm9yIEluZGV4ZWREQi4KKyAgICB2b2lkIG9wZW5EYXRhYmFzZShJUEM6OkNv
bm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYpOworICAgIHZvaWQgb3Bl
bkRCUmVxdWVzdENhbmNlbGxlZChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYpOworICAg
IHZvaWQgZGVsZXRlRGF0YWJhc2UoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6SURC
UmVxdWVzdERhdGEmKTsKKyAgICB2b2lkIGVzdGFibGlzaFRyYW5zYWN0aW9uKHVpbnQ2NF90IGRh
dGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OklEQlRyYW5zYWN0aW9u
SW5mbyYpOworICAgIHZvaWQgZGF0YWJhc2VDb25uZWN0aW9uUGVuZGluZ0Nsb3NlKHVpbnQ2NF90
IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpOworICAgIHZvaWQgZGF0YWJhc2VDb25uZWN0
aW9uQ2xvc2VkKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpOworICAgIHZv
aWQgYWJvcnRPcGVuQW5kVXBncmFkZU5lZWRlZCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25J
ZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0
aW9uSWRlbnRpZmllcik7CisgICAgdm9pZCBkaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KHVpbnQ2
NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OklEQlJlc291
cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkluZGV4ZWRE
Qjo6Q29ubmVjdGlvbkNsb3NlZE9uQmVoYWxmT2ZTZXJ2ZXIpOworICAgIHZvaWQgYWJvcnRUcmFu
c2FjdGlvbihjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImKTsKKyAgICB2b2lk
IGNvbW1pdFRyYW5zYWN0aW9uKGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYs
IHVpbnQ2NF90IHBlbmRpbmdSZXF1ZXN0Q291bnQpOworICAgIHZvaWQgZGlkRmluaXNoSGFuZGxp
bmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24odWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRl
bnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJik7CisgICAgdm9p
ZCBjcmVhdGVPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYsIGNvbnN0
IFdlYkNvcmU6OklEQk9iamVjdFN0b3JlSW5mbyYpOworICAgIHZvaWQgZGVsZXRlT2JqZWN0U3Rv
cmUoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0
b3JlTmFtZSk7CisgICAgdm9pZCByZW5hbWVPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJS
ZXF1ZXN0RGF0YSYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiBuZXdOYW1lKTsKKyAgICB2b2lkIGNsZWFyT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6SURC
UmVxdWVzdERhdGEmLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIpOworICAgIHZvaWQg
Y3JlYXRlSW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmLCBjb25zdCBXZWJDb3Jl
OjpJREJJbmRleEluZm8mKTsKKyAgICB2b2lkIGRlbGV0ZUluZGV4KGNvbnN0IFdlYkNvcmU6OklE
QlJlcXVlc3REYXRhJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIGluZGV4TmFtZSk7CisgICAgdm9pZCByZW5hbWVJbmRleChjb25zdCBXZWJDb3JlOjpJREJS
ZXF1ZXN0RGF0YSYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgdWludDY0X3QgaW5k
ZXhJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUpOworICAgIHZvaWQgcHV0T3JBZGQo
SVBDOjpDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmLCBjb25zdCBX
ZWJDb3JlOjpJREJLZXlEYXRhJiwgY29uc3QgV2ViQ29yZTo6SURCVmFsdWUmLCBXZWJDb3JlOjpJ
bmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSk7CisgICAgdm9pZCBnZXRSZWNvcmQo
Y29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmLCBjb25zdCBXZWJDb3JlOjpJREJHZXRSZWNv
cmREYXRhJik7CisgICAgdm9pZCBnZXRBbGxSZWNvcmRzKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVl
c3REYXRhJiwgY29uc3QgV2ViQ29yZTo6SURCR2V0QWxsUmVjb3Jkc0RhdGEmKTsKKyAgICB2b2lk
IGdldENvdW50KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiwgY29uc3QgV2ViQ29yZTo6
SURCS2V5UmFuZ2VEYXRhJik7CisgICAgdm9pZCBkZWxldGVSZWNvcmQoY29uc3QgV2ViQ29yZTo6
SURCUmVxdWVzdERhdGEmLCBjb25zdCBXZWJDb3JlOjpJREJLZXlSYW5nZURhdGEmKTsKKyAgICB2
b2lkIG9wZW5DdXJzb3IoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmLCBjb25zdCBXZWJD
b3JlOjpJREJDdXJzb3JJbmZvJik7CisgICAgdm9pZCBpdGVyYXRlQ3Vyc29yKGNvbnN0IFdlYkNv
cmU6OklEQlJlcXVlc3REYXRhJiwgY29uc3QgV2ViQ29yZTo6SURCSXRlcmF0ZUN1cnNvckRhdGEm
KTsKKyAgICB2b2lkIGdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhJUEM6OkNvbm5lY3Rp
b24mLCBjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImLCBjb25zdCBXZWJDb3Jl
OjpDbGllbnRPcmlnaW4mKTsKKwogICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOwogICAg
IFJlZjxTdXNwZW5kYWJsZVdvcmtRdWV1ZT4gbV9xdWV1ZTsKICAgICBTdHJpbmcgbV9wYXRoOwpA
QCAtMTI3LDcgKzE3NSwxNCBAQCBwcml2YXRlOgogICAgIFdlYWtIYXNoU2V0PElQQzo6Q29ubmVj
dGlvbj4gbV9jb25uZWN0aW9uczsgLy8gTWFpbiB0aHJlYWQgb25seS4KICAgICBzdGQ6OnVuaXF1
ZV9wdHI8RmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeT4gbV9maWxlU3lzdGVtU3RvcmFn
ZUhhbmRsZVJlZ2lzdHJ5OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTdG9yYWdlQXJlYVJlZ2lzdHJ5
PiBtX3N0b3JhZ2VBcmVhUmVnaXN0cnk7CisgICAgc3RkOjp1bmlxdWVfcHRyPElEQlN0b3JhZ2VS
ZWdpc3RyeT4gbV9pZGJTdG9yYWdlUmVnaXN0cnk7CiAgICAgU3RyaW5nIG1fY3VzdG9tTG9jYWxT
dG9yYWdlUGF0aDsKKyAgICBTdHJpbmcgbV9jdXN0b21JREJTdG9yYWdlUGF0aDsKKyAgICBTdHJp
bmcgbV9jdXN0b21DYWNoZVN0b3JhZ2VQYXRoOworICAgIHVpbnQ2NF90IG1fZGVmYXVsdE9yaWdp
blF1b3RhOworICAgIHVpbnQ2NF90IG1fZGVmYXVsdFRoaXJkUGFydHlPcmlnaW5RdW90YTsKKyAg
ICBJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIG1fcGFyZW50Q29ubmVjdGlvbjsKKyAgICBIYXNo
TWFwPElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIEhhc2hTZXQ8U3RyaW5nPj4gbV90ZW1wb3Jh
cnlCbG9iUGF0aHNCeUNvbm5lY3Rpb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3Rv
cmFnZU1hbmFnZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0
b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLm1lc3NhZ2VzLmluCmluZGV4IDUwYjk2NzAxYjA3
MGRkNWMzMjcxMWRiMTQyNzkzMDNmZTY1MjExYjcuLjQ3MzA1ZTBlOTgxY2E1Y2ZhZTA3NzQyNmJm
MjRiNzgxNWE0ZDY0Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5tZXNzYWdl
cy5pbgpAQCAtNDcsNCArNDcsMzEgQEAKICAgICBTZXRJdGVtKFdlYktpdDo6U3RvcmFnZUFyZWFJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYktpdDo6U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllciBp
bXBsSWRlbnRpZmllciwgU3RyaW5nIGtleSwgU3RyaW5nIHZhbHVlLCBTdHJpbmcgdXJsU3RyaW5n
KSAtPiAoYm9vbCBxdW90YUV4Y2VwdGlvbikgQXN5bmMgV2FudHNDb25uZWN0aW9uCiAgICAgUmVt
b3ZlSXRlbShXZWJLaXQ6OlN0b3JhZ2VBcmVhSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJLaXQ6
OlN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXIgaW1wbElkZW50aWZpZXIsIFN0cmluZyBrZXksIFN0
cmluZyB1cmxTdHJpbmcpIC0+ICgpIEFzeW5jIFdhbnRzQ29ubmVjdGlvbgogICAgIENsZWFyKFdl
YktpdDo6U3RvcmFnZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYktpdDo6U3RvcmFnZUFy
ZWFJbXBsSWRlbnRpZmllciBpbXBsSWRlbnRpZmllciwgU3RyaW5nIHVybFN0cmluZykgLT4gKCkg
QXN5bmMgV2FudHNDb25uZWN0aW9uCisKKyAgICBPcGVuRGF0YWJhc2UoV2ViQ29yZTo6SURCUmVx
dWVzdERhdGEgcmVxdWVzdERhdGEpIFdhbnRzQ29ubmVjdGlvbgorICAgIE9wZW5EQlJlcXVlc3RD
YW5jZWxsZWQoV2ViQ29yZTo6SURCUmVxdWVzdERhdGEgcmVxdWVzdERhdGEpCisgICAgRGVsZXRl
RGF0YWJhc2UoV2ViQ29yZTo6SURCUmVxdWVzdERhdGEgcmVxdWVzdERhdGEpIFdhbnRzQ29ubmVj
dGlvbgorICAgIEVzdGFibGlzaFRyYW5zYWN0aW9uKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlv
bklkZW50aWZpZXIsIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uSW5mbyBpbmZvKQorICAgIERhdGFi
YXNlQ29ubmVjdGlvblBlbmRpbmdDbG9zZSh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVu
dGlmaWVyKQorICAgIERhdGFiYXNlQ29ubmVjdGlvbkNsb3NlZCh1aW50NjRfdCBkYXRhYmFzZUNv
bm5lY3Rpb25JZGVudGlmaWVyKQorICAgIEFib3J0T3BlbkFuZFVwZ3JhZGVOZWVkZWQodWludDY0
X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVu
dGlmaWVyIHRyYW5zYWN0aW9uSWRlbnRpZmllcikKKyAgICBEaWRGaXJlVmVyc2lvbkNoYW5nZUV2
ZW50KHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OklEQlJl
c291cmNlSWRlbnRpZmllciByZXF1ZXN0SWRlbnRpZmllciwgV2ViQ29yZTo6SW5kZXhlZERCOjpD
b25uZWN0aW9uQ2xvc2VkT25CZWhhbGZPZlNlcnZlciBjb25uZWN0aW9uQ2xvc2VkT25CZWhhbGZP
ZlNlcnZlcikKKyAgICBEaWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbih1
aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpJREJSZXNvdXJj
ZUlkZW50aWZpZXIgdHJhbnNhY3Rpb25JZGVudGlmaWVyKQorICAgIEFib3J0VHJhbnNhY3Rpb24o
V2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyIHRyYW5zYWN0aW9uSWRlbnRpZmllcikKKyAg
ICBDb21taXRUcmFuc2FjdGlvbihXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXIgdHJhbnNh
Y3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBwZW5kaW5nUmVxdWVzdENvdW50KQorICAgIENyZWF0
ZU9iamVjdFN0b3JlKFdlYkNvcmU6OklEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhLCBXZWJDb3Jl
OjpJREJPYmplY3RTdG9yZUluZm8gaW5mbykKKyAgICBEZWxldGVPYmplY3RTdG9yZShXZWJDb3Jl
OjpJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YSwgU3RyaW5nIG9iamVjdFN0b3JlTmFtZSkKKyAg
ICBSZW5hbWVPYmplY3RTdG9yZShXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YSwg
dWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBTdHJpbmcgbmV3TmFtZSkKKyAgICBDbGVh
ck9iamVjdFN0b3JlKFdlYkNvcmU6OklEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhLCB1aW50NjRf
dCBvYmplY3RTdG9yZUlkZW50aWZpZXIpCisgICAgQ3JlYXRlSW5kZXgoV2ViQ29yZTo6SURCUmVx
dWVzdERhdGEgcmVxdWVzdERhdGEsIFdlYkNvcmU6OklEQkluZGV4SW5mbyBpbmZvKQorICAgIERl
bGV0ZUluZGV4KFdlYkNvcmU6OklEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhLCB1aW50NjRfdCBv
YmplY3RTdG9yZUlkZW50aWZpZXIsIFN0cmluZyBpbmRleE5hbWUpCisgICAgUmVuYW1lSW5kZXgo
V2ViQ29yZTo6SURCUmVxdWVzdERhdGEgcmVxdWVzdERhdGEsIHVpbnQ2NF90IG9iamVjdFN0b3Jl
SWRlbnRpZmllciwgdWludDY0X3QgaW5kZXhJZGVudGlmaWVyLCBTdHJpbmcgbmV3TmFtZSkKKyAg
ICBQdXRPckFkZChXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YSwgV2ViQ29yZTo6
SURCS2V5RGF0YSBrZXksIFdlYkNvcmU6OklEQlZhbHVlIHZhbHVlLCBXZWJDb3JlOjpJbmRleGVk
REI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSBvdmVyd3JpdGVNb2RlKSBXYW50c0Nvbm5lY3Rp
b24KKyAgICBHZXRSZWNvcmQoV2ViQ29yZTo6SURCUmVxdWVzdERhdGEgcmVxdWVzdERhdGEsIHN0
cnVjdCBXZWJDb3JlOjpJREJHZXRSZWNvcmREYXRhIGdldFJlY29yZERhdGEpCisgICAgR2V0QWxs
UmVjb3JkcyhXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YSwgc3RydWN0IFdlYkNv
cmU6OklEQkdldEFsbFJlY29yZHNEYXRhIGdldEFsbFJlY29yZHNEYXRhKQorICAgIEdldENvdW50
KFdlYkNvcmU6OklEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhLCBzdHJ1Y3QgV2ViQ29yZTo6SURC
S2V5UmFuZ2VEYXRhIHJhbmdlKQorICAgIERlbGV0ZVJlY29yZChXZWJDb3JlOjpJREJSZXF1ZXN0
RGF0YSByZXF1ZXN0RGF0YSwgc3RydWN0IFdlYkNvcmU6OklEQktleVJhbmdlRGF0YSByYW5nZSkK
KyAgICBPcGVuQ3Vyc29yKFdlYkNvcmU6OklEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhLCBXZWJD
b3JlOjpJREJDdXJzb3JJbmZvIGluZm8pCisgICAgSXRlcmF0ZUN1cnNvcihXZWJDb3JlOjpJREJS
ZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YSwgc3RydWN0IFdlYkNvcmU6OklEQkl0ZXJhdGVDdXJzb3JE
YXRhIGRhdGEpCisgICAgR2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKFdlYkNvcmU6OklE
QlJlc291cmNlSWRlbnRpZmllciByZXF1ZXN0SWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6OkNs
aWVudE9yaWdpbiBvcmlnaW4pIFdhbnRzQ29ubmVjdGlvbgogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2VyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdl
ci5jcHAKaW5kZXggZDk1ZmJiN2RlMzczYjQwZTY1NjYzNTI5NjBhMDg1NjZjNmI3MjJhMi4uNTQ1
N2MxZWRmNmU3Y2E4MmVhOWM2ZGNkOGEzZjdmOGQzNzExYzMyNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1h
bmFnZXIuY3BwCkBAIC0yNiw4ICsyNiwxMSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIk9yaWdpblN0b3JhZ2VNYW5hZ2VyLmgiCiAKKyNpbmNsdWRlICJDYWNoZVN0b3JhZ2VFbmdp
bmUuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtU3RvcmFnZUhhbmRsZVJlZ2lzdHJ5LmgiCiAjaW5j
bHVkZSAiRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyLmgiCisjaW5jbHVkZSAiSURCU3RvcmFnZU1h
bmFnZXIuaCIKKyNpbmNsdWRlICJJREJTdG9yYWdlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJMb2Nh
bFN0b3JhZ2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiTWVtb3J5U3RvcmFnZUFyZWEuaCIKICNpbmNs
dWRlICJTZXNzaW9uU3RvcmFnZU1hbmFnZXIuaCIKQEAgLTQ0LDEwICs0NywxMSBAQCBlbnVtIGNs
YXNzIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0TW9kZSA6IGJvb2wgeyBCZXN0
RWZmb3J0LCBQZXJzaXN0ZQogY2xhc3MgT3JpZ2luU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VCdWNr
ZXQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFN0b3JhZ2VC
dWNrZXQoY29uc3QgU3RyaW5nJiByb290UGF0aCwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZVBhdGgpCisgICAgU3RvcmFnZUJ1Y2tldChjb25zdCBT
dHJpbmcmIHJvb3RQYXRoLCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
bG9jYWxTdG9yYWdlUGF0aCwgY29uc3QgU3RyaW5nJiBpZGJTdG9yYWdlUGF0aCkKICAgICAgICAg
OiBtX3Jvb3RQYXRoKHJvb3RQYXRoKQogICAgICAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVy
KQogICAgICAgICAsIG1fbG9jYWxTdG9yYWdlUGF0aChsb2NhbFN0b3JhZ2VQYXRoKQorICAgICAg
ICAsIG1faWRiU3RvcmFnZVBhdGgoaWRiU3RvcmFnZVBhdGgpCiAgICAgewogICAgIH0KIApAQCAt
NzAsNiArNzQsNyBAQCBwdWJsaWM6CiAgICAgICAgIEZpbGVTeXN0ZW0sCiAgICAgICAgIExvY2Fs
U3RvcmFnZSwKICAgICAgICAgU2Vzc2lvblN0b3JhZ2UsCisgICAgICAgIEluZGV4ZWREQiwKICAg
ICB9OwogCiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZURhdGFUeXBlPiB0b1dlYnNp
dGVEYXRhVHlwZShjb25zdCBTdHJpbmcmIHN0b3JhZ2VJZGVudGlmaWVyKQpAQCAtODAsNiArODUs
OCBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gV2Vic2l0ZURhdGFUeXBlOjpMb2NhbFN0
b3JhZ2U7CiAgICAgICAgIGlmIChzdG9yYWdlSWRlbnRpZmllciA9PSAiU2Vzc2lvblN0b3JhZ2Ui
X3MpCiAgICAgICAgICAgICByZXR1cm4gV2Vic2l0ZURhdGFUeXBlOjpTZXNzaW9uU3RvcmFnZTsK
KyAgICAgICAgaWYgKHN0b3JhZ2VJZGVudGlmaWVyID09ICJJbmRleGVkREIiX3MpCisgICAgICAg
ICAgICByZXR1cm4gV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXM7CiAKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CkBAIC05Myw2ICsxMDAsOCBAQCBwdWJsaWM6
CiAgICAgICAgICAgICByZXR1cm4gIkxvY2FsU3RvcmFnZSJfczsKICAgICAgICAgY2FzZSBTdG9y
YWdlVHlwZTo6U2Vzc2lvblN0b3JhZ2U6CiAgICAgICAgICAgICByZXR1cm4gIlNlc3Npb25TdG9y
YWdlIl9zOworICAgICAgICBjYXNlIFN0b3JhZ2VUeXBlOjpJbmRleGVkREI6CisgICAgICAgICAg
ICByZXR1cm4gIkluZGV4ZWREQiJfczsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CkBAIC0xNDMsMTMgKzE1MiwyOCBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBtX3Nlc3Npb25TdG9yYWdlTWFuYWdlci5nZXQoKTsKICAgICB9CiAKKyAgICBJREJTdG9y
YWdlTWFuYWdlciYgaWRiU3RvcmFnZU1hbmFnZXIoSURCU3RvcmFnZVJlZ2lzdHJ5JiByZWdpc3Ry
eSwgSURCU3RvcmFnZU1hbmFnZXI6OlF1b3RhQ2hlY2tGdW5jdGlvbiYmIHF1b3RhQ2hlY2tGdW5j
dGlvbikKKyAgICB7CisgICAgICAgIGlmICghbV9pZGJTdG9yYWdlTWFuYWdlcikKKyAgICAgICAg
ICAgIG1faWRiU3RvcmFnZU1hbmFnZXIgPSBtYWtlVW5pcXVlPElEQlN0b3JhZ2VNYW5hZ2VyPiht
X2lkYlN0b3JhZ2VQYXRoLCByZWdpc3RyeSwgV1RGTW92ZShxdW90YUNoZWNrRnVuY3Rpb24pKTsK
KworICAgICAgICByZXR1cm4gKm1faWRiU3RvcmFnZU1hbmFnZXI7CisgICAgfQorCisgICAgSURC
U3RvcmFnZU1hbmFnZXIqIGV4aXN0aW5nSURCU3RvcmFnZU1hbmFnZXIoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG1faWRiU3RvcmFnZU1hbmFnZXIuZ2V0KCk7CisgICAgfQorCiAgICAgYm9vbCBp
c0FjdGl2ZSgpIGNvbnN0CiAgICAgeworICAgICAgICAvLyBUT0RPOiBzaWh1aWwgLSBjaGVjayBp
ZiBpZGJzdG9yYWdlbWFuYWdlciBpcyBhY3RpdmUKICAgICAgICAgLy8gV2UgY2Fubm90IHJlbW92
ZSB0aGUgYnVja2V0IGlmIGl0IGhhcyBpbi1tZW1vcnkgZGF0YSwgb3RoZXJ3aXNlIHNlc3Npb24K
ICAgICAgICAgLy8gZGF0YSBtYXkgYmUgbG9zdC4KICAgICAgICAgcmV0dXJuIChtX2ZpbGVTeXN0
ZW1TdG9yYWdlTWFuYWdlciAmJiBtX2ZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlci0+aXNBY3RpdmUo
KSkKICAgICAgICAgICAgIHx8IChtX2xvY2FsU3RvcmFnZU1hbmFnZXIgJiYgKG1fbG9jYWxTdG9y
YWdlTWFuYWdlci0+aGFzRGF0YUluTWVtb3J5KCkgfHwgbV9sb2NhbFN0b3JhZ2VNYW5hZ2VyLT5p
c0FjdGl2ZSgpKSkKLSAgICAgICAgICAgIHx8IChtX3Nlc3Npb25TdG9yYWdlTWFuYWdlciAmJiAo
bV9zZXNzaW9uU3RvcmFnZU1hbmFnZXItPmhhc0RhdGFJbk1lbW9yeSgpIHx8IG1fc2Vzc2lvblN0
b3JhZ2VNYW5hZ2VyLT5pc0FjdGl2ZSgpKSk7CisgICAgICAgICAgICB8fCAobV9zZXNzaW9uU3Rv
cmFnZU1hbmFnZXIgJiYgKG1fc2Vzc2lvblN0b3JhZ2VNYW5hZ2VyLT5oYXNEYXRhSW5NZW1vcnko
KSB8fCBtX3Nlc3Npb25TdG9yYWdlTWFuYWdlci0+aXNBY3RpdmUoKSkpCisgICAgICAgICAgICB8
fCAobV9pZGJTdG9yYWdlTWFuYWdlciAmJiAobV9pZGJTdG9yYWdlTWFuYWdlci0+aGFzRGF0YUlu
TWVtb3J5KCkgfHwgbV9pZGJTdG9yYWdlTWFuYWdlci0+aXNBY3RpdmUoKSkpOwogICAgIH0KIAog
ICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0CkBAIC0xNjUsNyArMTg5LDggQEAgcHVibGljOgogICAg
ICAgICBpZiAoaGFzVmFsaWRGaWxlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
ICAgIHJldHVybiAhRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhtX2xvY2FsU3RvcmFnZVBhdGgpOwor
ICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeShtX2lkYlN0b3JhZ2VQYXRo
KTsKKyAgICAgICAgcmV0dXJuICFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG1fbG9jYWxTdG9yYWdl
UGF0aCkgJiYgIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobV9pZGJTdG9yYWdlUGF0aCk7CiAgICAg
fQogCiAgICAgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZmV0Y2hEYXRhVHlwZXNJbkxpc3Qo
T3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gdHlwZXMpCkBAIC0xODYsOSArMjExLDEyIEBAIHB1
YmxpYzoKIAogICAgICAgICBpZiAodHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpTZXNz
aW9uU3RvcmFnZSkgJiYgbW9kaWZpZWRTaW5jZVRpbWUgPCBXYWxsVGltZTo6bm93KCkpCiAgICAg
ICAgICAgICBkZWxldGVTZXNzaW9uU3RvcmFnZURhdGEoKTsKKworICAgICAgICBpZiAodHlwZXMu
Y29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpKQorICAgICAgICAg
ICAgZGVsZXRlSURCU3RvcmFnZURhdGEobW9kaWZpZWRTaW5jZVRpbWUpOwogICAgIH0KIAotICAg
IHZvaWQgbW92ZURhdGEoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGxvY2FsU3Rv
cmFnZVBhdGgpCisgICAgdm9pZCBtb3ZlRGF0YShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0
cmluZyYgbG9jYWxTdG9yYWdlUGF0aCwgY29uc3QgU3RyaW5nJiBpZGJTdG9yYWdlUGF0aCkKICAg
ICB7CiAgICAgICAgIG1fZmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyID0gbnVsbHB0cjsKICAgICAg
ICAgaWYgKG1fbG9jYWxTdG9yYWdlTWFuYWdlcikKQEAgLTIwMSw2ICsyMjksMTEgQEAgcHVibGlj
OgogICAgICAgICAgICAgRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKEZpbGVTeXN0ZW06
OnBhcmVudFBhdGgobG9jYWxTdG9yYWdlUGF0aCkpOwogICAgICAgICAgICAgV2ViQ29yZTo6U1FM
aXRlRmlsZVN5c3RlbTo6bW92ZURhdGFiYXNlRmlsZShtX2xvY2FsU3RvcmFnZVBhdGgsIGxvY2Fs
U3RvcmFnZVBhdGgpOwogICAgICAgICB9CisKKyAgICAgICAgaWYgKCFtX2lkYlN0b3JhZ2VQYXRo
LmlzRW1wdHkoKSAmJiAhaWRiU3RvcmFnZVBhdGguaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBG
aWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoRmlsZVN5c3RlbTo6cGFyZW50UGF0aChpZGJT
dG9yYWdlUGF0aCkpOworICAgICAgICAgICAgV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6bW92
ZURhdGFiYXNlRmlsZShtX2lkYlN0b3JhZ2VQYXRoLCBpZGJTdG9yYWdlUGF0aCk7CisgICAgICAg
IH0KICAgICB9CiAKIHByaXZhdGU6CkBAIC0yMTcsNiArMjUwLDExIEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgcmVzdWx0LmFkZChXZWJzaXRlRGF0YVR5cGU6OlNlc3Npb25TdG9yYWdlKTsK
ICAgICAgICAgfQogCisgICAgICAgIGlmICh0eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6
OkluZGV4ZWREQkRhdGFiYXNlcykpIHsKKyAgICAgICAgICAgIGlmIChtX2lkYlN0b3JhZ2VNYW5h
Z2VyICYmIG1faWRiU3RvcmFnZU1hbmFnZXItPmhhc0RhdGFJbk1lbW9yeSgpKQorICAgICAgICAg
ICAgICAgIHJlc3VsdC5hZGQoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpOwor
ICAgICAgICB9CisKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKQEAgLTIzMyw2ICsy
NzEsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICByZXN1bHQuYWRkKFdlYnNpdGVEYXRh
VHlwZTo6TG9jYWxTdG9yYWdlKTsKICAgICAgICAgfQogCisgICAgICAgIGlmICh0eXBlcy5jb250
YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykgJiYgIXJlc3VsdC5jb250
YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykpIHsKKyAgICAgICAgICAg
IGlmIChhdXRvIGRhdGFiYXNlcyA9IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobV9pZGJTdG9y
YWdlUGF0aCk7ICFkYXRhYmFzZXMuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIHJlc3VsdC5h
ZGQoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpOworICAgICAgICB9CisKICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKQEAgLTI3MCw2ICszMTMsMTQgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIG1fc2Vzc2lvblN0b3JhZ2VNYW5hZ2VyID0gbnVsbHB0cjsKICAgICB9
CiAgICAgCisgICAgdm9pZCBkZWxldGVJREJTdG9yYWdlRGF0YShXYWxsVGltZSB0aW1lKQorICAg
IHsKKyAgICAgICAgaWYgKG1faWRiU3RvcmFnZU1hbmFnZXIpCisgICAgICAgICAgICBtX2lkYlN0
b3JhZ2VNYW5hZ2VyLT5jbG9zZURhdGFiYXNlc0ZvckRlbGV0aW9uKCk7CisKKyAgICAgICAgRmls
ZVN5c3RlbTo6ZGVsZXRlQWxsRmlsZXNNb2RpZmllZFNpbmNlKG1faWRiU3RvcmFnZVBhdGgsIHRp
bWUpOworICAgIH0KKyAgICAKICAgICBTdHJpbmcgbV9yb290UGF0aDsKICAgICBTdHJpbmcgbV9p
ZGVudGlmaWVyOwogICAgIFN0b3JhZ2VCdWNrZXRNb2RlIG1fbW9kZSB7IFN0b3JhZ2VCdWNrZXRN
b2RlOjpCZXN0RWZmb3J0IH07CkBAIC0yNzcsMTIgKzMyOCwyNSBAQCBwcml2YXRlOgogICAgIHN0
ZDo6dW5pcXVlX3B0cjxMb2NhbFN0b3JhZ2VNYW5hZ2VyPiBtX2xvY2FsU3RvcmFnZU1hbmFnZXI7
CiAgICAgU3RyaW5nIG1fbG9jYWxTdG9yYWdlUGF0aDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2Vz
c2lvblN0b3JhZ2VNYW5hZ2VyPiBtX3Nlc3Npb25TdG9yYWdlTWFuYWdlcjsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8SURCU3RvcmFnZU1hbmFnZXI+IG1faWRiU3RvcmFnZU1hbmFnZXI7CisgICAgU3Ry
aW5nIG1faWRiU3RvcmFnZVBhdGg7CiB9OwogCi1PcmlnaW5TdG9yYWdlTWFuYWdlcjo6T3JpZ2lu
U3RvcmFnZU1hbmFnZXIoRnVuY3Rpb248dm9pZCgpPiYmIHdyaXRlT3JpZ2luRmlsZUZ1bmN0aW9u
LCBTdHJpbmcmJiBwYXRoLCBTdHJpbmcmJiBsb2NhbFN0b3JhZ2VQYXRoKQotICAgIDogbV93cml0
ZU9yaWdpbkZpbGVGdW5jdGlvbihXVEZNb3ZlKHdyaXRlT3JpZ2luRmlsZUZ1bmN0aW9uKSkKLSAg
ICAsIG1fcGF0aChXVEZNb3ZlKHBhdGgpKQorc3RhdGljIFJlZjxRdW90YU1hbmFnZXI+IGNyZWF0
ZVF1b3RhTWFuYWdlcih1aW50NjRfdCBxdW90YSwgY29uc3QgU3RyaW5nJiBpZGJTdG9yYWdlUGF0
aCwgY29uc3QgU3RyaW5nJiBjYWNoZVN0b3JhZ2VQYXRoLCBRdW90YU1hbmFnZXI6OkluY3JlYXNl
UXVvdGFGdW5jdGlvbiYmIGluY3JlYXNlUXVvdGFGdW5jdGlvbikKK3sKKyAgICBRdW90YU1hbmFn
ZXI6OkdldFVzYWdlRnVuY3Rpb24gZ2V0VXNhZ2VGdW5jdGlvbiA9IFtpZGJTdG9yYWdlUGF0aCwg
Y2FjaGVTdG9yYWdlUGF0aF0oKSB7CisgICAgICAgIHJldHVybiBJREJTdG9yYWdlTWFuYWdlcjo6
aWRiU3RvcmFnZVNpemUoaWRiU3RvcmFnZVBhdGgpICsgQ2FjaGVTdG9yYWdlOjpFbmdpbmU6OmRp
c2tVc2FnZShjYWNoZVN0b3JhZ2VQYXRoKTsKKyAgICB9OworCisgICAgcmV0dXJuIFF1b3RhTWFu
YWdlcjo6Y3JlYXRlKHF1b3RhLCBXVEZNb3ZlKGdldFVzYWdlRnVuY3Rpb24pLCBXVEZNb3ZlKGlu
Y3JlYXNlUXVvdGFGdW5jdGlvbikpOworfQorCitPcmlnaW5TdG9yYWdlTWFuYWdlcjo6T3JpZ2lu
U3RvcmFnZU1hbmFnZXIoRnVuY3Rpb248dm9pZCgpPiYmIHdyaXRlT3JpZ2luRmlsZUZ1bmN0aW9u
LCB1aW50NjRfdCBxdW90YSwgUXVvdGFNYW5hZ2VyOjpJbmNyZWFzZVF1b3RhRnVuY3Rpb24mJiBp
bmNyZWFzZVF1b3RhRnVuY3Rpb24sIFN0cmluZyYmIHBhdGgsIFN0cmluZyYmIGxvY2FsU3RvcmFn
ZVBhdGgsIFN0cmluZyYmIGlkYlN0b3JhZ2VQYXRoLCBTdHJpbmcmJiBjYWNoZVN0b3JhZ2VQYXRo
KQorICAgIDogbV9wYXRoKFdURk1vdmUocGF0aCkpCiAgICAgLCBtX2xvY2FsU3RvcmFnZVBhdGgo
V1RGTW92ZShsb2NhbFN0b3JhZ2VQYXRoKSkKKyAgICAsIG1faWRiU3RvcmFnZVBhdGgoV1RGTW92
ZShpZGJTdG9yYWdlUGF0aCkpCisgICAgLCBtX2NhY2hlU3RvcmFnZVBhdGgoV1RGTW92ZShjYWNo
ZVN0b3JhZ2VQYXRoKSkKKyAgICAsIG1fcXVvdGFNYW5hZ2VyKGNyZWF0ZVF1b3RhTWFuYWdlcihx
dW90YSwgbV9pZGJTdG9yYWdlUGF0aCwgbV9jYWNoZVN0b3JhZ2VQYXRoLCBXVEZNb3ZlKGluY3Jl
YXNlUXVvdGFGdW5jdGlvbikpKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwog
fQpAQCAtMzAyLDExICszNjYsMTYgQEAgdm9pZCBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6Y29ubmVj
dGlvbkNsb3NlZChJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGNvbm5lY3Rpb24KIE9yaWdpblN0
b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0JiBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6ZGVmYXVs
dEJ1Y2tldCgpCiB7CiAgICAgaWYgKCFtX2RlZmF1bHRCdWNrZXQpCi0gICAgICAgIG1fZGVmYXVs
dEJ1Y2tldCA9IG1ha2VVbmlxdWU8U3RvcmFnZUJ1Y2tldD4obV9wYXRoLCAiZGVmYXVsdCJfcywg
bV9sb2NhbFN0b3JhZ2VQYXRoKTsKKyAgICAgICAgbV9kZWZhdWx0QnVja2V0ID0gbWFrZVVuaXF1
ZTxTdG9yYWdlQnVja2V0PihtX3BhdGgsICJkZWZhdWx0Il9zLCBtX2xvY2FsU3RvcmFnZVBhdGgs
IG1faWRiU3RvcmFnZVBhdGgpOwogCiAgICAgcmV0dXJuICptX2RlZmF1bHRCdWNrZXQ7CiB9CiAK
K1F1b3RhTWFuYWdlciYgT3JpZ2luU3RvcmFnZU1hbmFnZXI6OnF1b3RhTWFuYWdlcigpCit7Cisg
ICAgcmV0dXJuIG1fcXVvdGFNYW5hZ2VyLmdldCgpOworfQorCiBGaWxlU3lzdGVtU3RvcmFnZU1h
bmFnZXImIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpmaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIoRmls
ZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeSYgcmVnaXN0cnkpCiB7CiAgICAgcmV0dXJuIGRl
ZmF1bHRCdWNrZXQoKS5maWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIocmVnaXN0cnkpOwpAQCAtMzMy
LDYgKzQwMSwyMyBAQCBTZXNzaW9uU3RvcmFnZU1hbmFnZXIqIE9yaWdpblN0b3JhZ2VNYW5hZ2Vy
OjpleGlzdGluZ1Nlc3Npb25TdG9yYWdlTWFuYWdlcigpCiAgICAgcmV0dXJuIGRlZmF1bHRCdWNr
ZXQoKS5leGlzdGluZ1Nlc3Npb25TdG9yYWdlTWFuYWdlcigpOwogfQogCitJREJTdG9yYWdlTWFu
YWdlciYgT3JpZ2luU3RvcmFnZU1hbmFnZXI6OmlkYlN0b3JhZ2VNYW5hZ2VyKElEQlN0b3JhZ2VS
ZWdpc3RyeSYgcmVnaXN0cnkpCit7CisgICAgcmV0dXJuIGRlZmF1bHRCdWNrZXQoKS5pZGJTdG9y
YWdlTWFuYWdlcihyZWdpc3RyeSwgW3F1b3RhTWFuYWdlciA9IFdlYWtQdHIgeyB0aGlzLT5xdW90
YU1hbmFnZXIoKSB9XSh1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgbXV0YWJsZSB7CisgICAgICAgIGlmICgh
cXVvdGFNYW5hZ2VyKQorICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNl
KTsKKworICAgICAgICBxdW90YU1hbmFnZXItPnJlcXVlc3RTcGFjZShzcGFjZVJlcXVlc3RlZCwg
W2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1dG8gZGVj
aXNpb24pIG11dGFibGUgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZGVjaXNpb24g
PT0gUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbjo6R3JhbnQpOworICAgICAgICB9KTsKKyAgICB9KTsK
K30KKworSURCU3RvcmFnZU1hbmFnZXIqIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpleGlzdGluZ0lE
QlN0b3JhZ2VNYW5hZ2VyKCkKK3sKKyAgICByZXR1cm4gZGVmYXVsdEJ1Y2tldCgpLmV4aXN0aW5n
SURCU3RvcmFnZU1hbmFnZXIoKTsKK30KKwogYm9vbCBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6aXNB
Y3RpdmUoKQogewogICAgIHJldHVybiBkZWZhdWx0QnVja2V0KCkuaXNBY3RpdmUoKTsKQEAgLTM2
NCwxMSArNDUwLDExIEBAIHZvaWQgT3JpZ2luU3RvcmFnZU1hbmFnZXI6OmRlbGV0ZURhdGEoT3B0
aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gdHlwZXMsIFdhbGxUaW1lCiAgICAgZGVmYXVsdEJ1Y2tl
dCgpLmRlbGV0ZURhdGEodHlwZXMsIG1vZGlmaWVkU2luY2UpOwogfQogCi12b2lkIE9yaWdpblN0
b3JhZ2VNYW5hZ2VyOjptb3ZlRGF0YShjb25zdCBTdHJpbmcmIG5ld1BhdGgsIGNvbnN0IFN0cmlu
ZyYgbG9jYWxTdG9yYWdlUGF0aCkKK3ZvaWQgT3JpZ2luU3RvcmFnZU1hbmFnZXI6Om1vdmVEYXRh
KGNvbnN0IFN0cmluZyYgbmV3UGF0aCwgY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VQYXRoLCBj
b25zdCBTdHJpbmcmIGlkYlN0b3JhZ2VQYXRoKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNN
YWluKCkpOwogCi0gICAgZGVmYXVsdEJ1Y2tldCgpLm1vdmVEYXRhKG5ld1BhdGgsIGxvY2FsU3Rv
cmFnZVBhdGgpOworICAgIGRlZmF1bHRCdWNrZXQoKS5tb3ZlRGF0YShuZXdQYXRoLCBsb2NhbFN0
b3JhZ2VQYXRoLCBpZGJTdG9yYWdlUGF0aCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0
b3JhZ2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3Jp
Z2luU3RvcmFnZU1hbmFnZXIuaAppbmRleCAxYTBmNTgxMTQwNmUwMjhmODc2ZGY3ZDg5MTJjNDVm
YTQ5MTdlMjU0Li45M2QyOWQyNzAxNGM1NjY2OGUwMGIyZDE5OGI5ZDVjYzA0YTZmZjUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFn
ZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3Jp
Z2luU3RvcmFnZU1hbmFnZXIuaApAQCAtMjYsMTYgKzI2LDE1IEBACiAjcHJhZ21hIG9uY2UKIAog
I2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJRdW90YU1hbmFnZXIuaCIKICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgewotc3RydWN0
IENsaWVudE9yaWdpbjsKLX0KLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEZpbGVTeXN0
ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnk7CiBjbGFzcyBGaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXI7
CitjbGFzcyBJREJTdG9yYWdlTWFuYWdlcjsKK2NsYXNzIElEQlN0b3JhZ2VSZWdpc3RyeTsKIGNs
YXNzIExvY2FsU3RvcmFnZU1hbmFnZXI7CiBjbGFzcyBTZXNzaW9uU3RvcmFnZU1hbmFnZXI7CiBj
bGFzcyBTdG9yYWdlQXJlYVJlZ2lzdHJ5OwpAQCAtNDQsMzYgKzQzLDM5IEBAIGVudW0gY2xhc3Mg
V2Vic2l0ZURhdGFUeXBlIDogdWludDMyX3Q7CiBjbGFzcyBPcmlnaW5TdG9yYWdlTWFuYWdlciB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgT3JpZ2luU3RvcmFn
ZU1hbmFnZXIoRnVuY3Rpb248dm9pZCgpPiYmLCBTdHJpbmcmJiBwYXRoLCBTdHJpbmcmJiBsb2Nh
bFN0b3JhZ2VQYXRoKTsKKyAgICBPcmlnaW5TdG9yYWdlTWFuYWdlcihGdW5jdGlvbjx2b2lkKCk+
JiYsIHVpbnQ2NF90IHF1b3RhLCBRdW90YU1hbmFnZXI6OkluY3JlYXNlUXVvdGFGdW5jdGlvbiYm
LCBTdHJpbmcmJiBwYXRoLCBTdHJpbmcmJiBsb2NhbFN0b3JhZ2VQYXRoLCBTdHJpbmcmJiBpZGJT
dG9yYWdlUGF0aCwgU3RyaW5nJiYgY2FjaGVTdG9yYWdlUGF0aCk7CiAgICAgfk9yaWdpblN0b3Jh
Z2VNYW5hZ2VyKCk7CiAKICAgICB2b2lkIGNvbm5lY3Rpb25DbG9zZWQoSVBDOjpDb25uZWN0aW9u
OjpVbmlxdWVJRCk7CiAgICAgYm9vbCBwZXJzaXN0ZWQoKSBjb25zdCB7IHJldHVybiBtX3BlcnNp
c3RlZDsgfQogICAgIHZvaWQgc2V0UGVyc2lzdGVkKGJvb2wgdmFsdWUpOworICAgIFF1b3RhTWFu
YWdlciYgcXVvdGFNYW5hZ2VyKCk7CiAgICAgRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyJiBmaWxl
U3lzdGVtU3RvcmFnZU1hbmFnZXIoRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeSYpOwog
ICAgIExvY2FsU3RvcmFnZU1hbmFnZXImIGxvY2FsU3RvcmFnZU1hbmFnZXIoU3RvcmFnZUFyZWFS
ZWdpc3RyeSYpOwogICAgIExvY2FsU3RvcmFnZU1hbmFnZXIqIGV4aXN0aW5nTG9jYWxTdG9yYWdl
TWFuYWdlcigpOwogICAgIFNlc3Npb25TdG9yYWdlTWFuYWdlciYgc2Vzc2lvblN0b3JhZ2VNYW5h
Z2VyKFN0b3JhZ2VBcmVhUmVnaXN0cnkmKTsKICAgICBTZXNzaW9uU3RvcmFnZU1hbmFnZXIqIGV4
aXN0aW5nU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyKCk7CisgICAgSURCU3RvcmFnZU1hbmFnZXImIGlk
YlN0b3JhZ2VNYW5hZ2VyKElEQlN0b3JhZ2VSZWdpc3RyeSYpOworICAgIElEQlN0b3JhZ2VNYW5h
Z2VyKiBleGlzdGluZ0lEQlN0b3JhZ2VNYW5hZ2VyKCk7CiAgICAgYm9vbCBpc0FjdGl2ZSgpOwog
ICAgIGJvb2wgaXNFbXB0eSgpOwogICAgIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGZldGNo
RGF0YVR5cGVzSW5MaXN0KE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+KTsKICAgICB2b2lkIGRl
bGV0ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIFdhbGxUaW1lKTsKLSAgICB2b2lk
IG1vdmVEYXRhKGNvbnN0IFN0cmluZyYgbmV3UGF0aCwgY29uc3QgU3RyaW5nJiBsb2NhbFN0b3Jh
Z2VQYXRoKTsKKyAgICB2b2lkIG1vdmVEYXRhKGNvbnN0IFN0cmluZyYgbmV3UGF0aCwgY29uc3Qg
U3RyaW5nJiBsb2NhbFN0b3JhZ2VQYXRoLCBjb25zdCBTdHJpbmcmIGlkYlN0b3JhZ2VQYXRoKTsK
IAogcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIFN0b3JhZ2VCdWNrZXRNb2RlIDogYm9vbDsKICAg
ICBjbGFzcyBTdG9yYWdlQnVja2V0OwogICAgIFN0b3JhZ2VCdWNrZXQmIGRlZmF1bHRCdWNrZXQo
KTsKIAotICAgIHZvaWQgY3JlYXRlT3JpZ2luRmlsZUlmTmVjZXNzYXJ5KGNvbnN0IFdlYkNvcmU6
OkNsaWVudE9yaWdpbiYpOwotICAgIHZvaWQgZGVsZXRlT3JpZ2luRmlsZUlmTmVjZXNzYXJ5KCk7
Ci0KICAgICBGdW5jdGlvbjx2b2lkKCk+IG1fd3JpdGVPcmlnaW5GaWxlRnVuY3Rpb247CiAgICAg
c3RkOjp1bmlxdWVfcHRyPFN0b3JhZ2VCdWNrZXQ+IG1fZGVmYXVsdEJ1Y2tldDsKICAgICBTdHJp
bmcgbV9wYXRoOwogICAgIGJvb2wgbV9wZXJzaXN0ZWQgeyBmYWxzZSB9OwogICAgIFN0cmluZyBt
X2xvY2FsU3RvcmFnZVBhdGg7CisgICAgU3RyaW5nIG1faWRiU3RvcmFnZVBhdGg7CisgICAgU3Ry
aW5nIG1fY2FjaGVTdG9yYWdlUGF0aDsKKyAgICBSZWY8UXVvdGFNYW5hZ2VyPiBtX3F1b3RhTWFu
YWdlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1F1b3RhTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvUXVvdGFNYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5i
NDE3ODUzYmZjMjkxM2Q2ZTkwMTVlZGFmYzIxZjY0ZjhkYWJmZTI5Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1F1b3RhTWFuYWdlci5jcHAK
QEAgLTAsMCArMSwxMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiUXVvdGFNYW5hZ2VyLmgiCisKKyNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK1JlZjxRdW90YU1hbmFnZXI+IFF1b3RhTWFuYWdlcjo6Y3JlYXRlKHVp
bnQ2NF90IHF1b3RhLCBHZXRVc2FnZUZ1bmN0aW9uJiYgZ2V0VXNhZ2VGdW5jdGlvbiwgSW5jcmVh
c2VRdW90YUZ1bmN0aW9uJiYgaW5jcmVhc2VRdW90YUZ1bmN0aW9uKQoreworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFF1b3RhTWFuYWdlcihxdW90YSwgV1RGTW92ZShnZXRVc2FnZUZ1bmN0aW9u
KSwgV1RGTW92ZShpbmNyZWFzZVF1b3RhRnVuY3Rpb24pKSk7Cit9CisKK1F1b3RhTWFuYWdlcjo6
UXVvdGFNYW5hZ2VyKHVpbnQ2NF90IHF1b3RhLCBHZXRVc2FnZUZ1bmN0aW9uJiYgZ2V0VXNhZ2VG
dW5jdGlvbiwgSW5jcmVhc2VRdW90YUZ1bmN0aW9uJiYgaW5jcmVhc2VRdW90YUZ1bmN0aW9uKQor
ICAgIDogbV9xdW90YShxdW90YSkKKyAgICAsIG1faW5pdGlhbFF1b3RhKHF1b3RhKQorICAgICwg
bV9nZXRVc2FnZUZ1bmN0aW9uKFdURk1vdmUoZ2V0VXNhZ2VGdW5jdGlvbikpCisgICAgLCBtX2lu
Y3JlYXNlUXVvdGFGdW5jdGlvbihXVEZNb3ZlKGluY3JlYXNlUXVvdGFGdW5jdGlvbikpCit7Cisg
ICAgQVNTRVJUKG1fcXVvdGEpOworfQorCit2b2lkIFF1b3RhTWFuYWdlcjo6cmVxdWVzdFNwYWNl
KHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkLCBSZXF1ZXN0Q2FsbGJhY2smJiBjYWxsYmFjaykKK3sK
KyAgICBtX3JlcXVlc3RzLmFwcGVuZChRdW90YU1hbmFnZXI6OlJlcXVlc3QgeyBzcGFjZVJlcXVl
c3RlZCwgV1RGTW92ZShjYWxsYmFjayksIFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllciB7
IH0gfSk7CisgICAgaGFuZGxlUmVxdWVzdHMoKTsKK30KKwordm9pZCBRdW90YU1hbmFnZXI6Omhh
bmRsZVJlcXVlc3RzKCkKK3sKKyAgICBpZiAobV9jdXJyZW50UmVxdWVzdCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgbV9pc0hhbmRsaW5nUmVxdWVzdHMgPSB0cnVlOworICAgIGF1dG8gY2xlYXJJ
c0hhbmRsaW5nUmVxdWVzdHMgPSBtYWtlU2NvcGVFeGl0KFsmXSB7CisgICAgICAgIG1faXNIYW5k
bGluZ1JlcXVlc3RzID0gZmFsc2U7CisgICAgfSk7CisKKyAgICB3aGlsZSAoIW1fY3VycmVudFJl
cXVlc3QgJiYgIW1fcmVxdWVzdHMuaXNFbXB0eSgpKSB7CisgICAgICAgIG1fY3VycmVudFJlcXVl
c3QgPSBtX3JlcXVlc3RzLnRha2VGaXJzdCgpOworICAgICAgICBpZiAoZ3JhbnRXaXRoQ3VycmVu
dFF1b3RhKG1fY3VycmVudFJlcXVlc3QtPnNwYWNlUmVxdWVzdGVkKSkgeworICAgICAgICAgICAg
bV9jdXJyZW50UmVxdWVzdC0+Y2FsbGJhY2soRGVjaXNpb246OkdyYW50KTsKKyAgICAgICAgICAg
IG1fY3VycmVudFJlcXVlc3QgPSBzdGQ6Om51bGxvcHQ7CisgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgfQorCisgICAgICAgIG1fY3VycmVudFJlcXVlc3QtPmlkZW50aWZpZXIgPSBRdW90
YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXI6OmdlbmVyYXRlVGhyZWFkU2FmZSgpOworICAgICAg
ICBtX2luY3JlYXNlUXVvdGFGdW5jdGlvbihtX2N1cnJlbnRSZXF1ZXN0LT5pZGVudGlmaWVyLCBt
X3F1b3RhLCAqbV91c2FnZSwgbV9jdXJyZW50UmVxdWVzdC0+c3BhY2VSZXF1ZXN0ZWQpOworICAg
IH0KK30KKworYm9vbCBRdW90YU1hbmFnZXI6OmdyYW50V2l0aEN1cnJlbnRRdW90YSh1aW50NjRf
dCBzcGFjZVJlcXVlc3RlZCkKK3sKKyAgICBpZiAoZ3JhbnRGYXN0UGF0aChzcGFjZVJlcXVlc3Rl
ZCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gV2hlbiBRdW90YU1hbmFnZXIgaXMg
dXNlZCBmb3IgdGhlIGZpcnN0IHRpbWUsIHdlIHdhbnQgdG8gbWFrZSBzdXJlIGl0cyBpbml0aWFs
IHF1b3RhIGlzIGJpZ2dlciB0aGFuIGV4aXN0aW5nIGRpc2sgdXNhZ2UsCisgICAgLy8gYmFzZWQg
b24gdGhlIGFzc3VtcHRpb24gdGhhdCB0aGUgcXVvdGEgd2FzIGluY3JlYXNlZCB0byBhdCBsZWFz
dCB0aGUgZGlzayB1c2FnZSB1bmRlciB1c2VyJ3MgcGVybWlzc2lvbiBiZWZvcmUuCisgICAgYm9v
bCBzaG91bGRVcGRhdGVRdW90YUJhc2Vkb25Vc2FnZSA9ICFtX3VzYWdlOworICAgIG1fdXNhZ2Ug
PSBtX2dldFVzYWdlRnVuY3Rpb24oKTsKKyAgICBpZiAoc2hvdWxkVXBkYXRlUXVvdGFCYXNlZG9u
VXNhZ2UpIHsKKyAgICAgICAgYXV0byBkZWZhdWx0UXVvdGFTdGVwID0gbV9xdW90YSAvIDEwOwor
ICAgICAgICBtX3F1b3RhID0gc3RkOjptYXgobV9xdW90YSwgZGVmYXVsdFF1b3RhU3RlcCAqICgo
Km1fdXNhZ2UgLyBkZWZhdWx0UXVvdGFTdGVwKSArIDEpKTsKKyAgICB9CisgICAgbV9xdW90YUNv
dW50ZG93biA9ICptX3VzYWdlIDwgbV9xdW90YSA/IG1fcXVvdGEgLSAqbV91c2FnZSA6IDA7CisK
KyAgICByZXR1cm4gZ3JhbnRGYXN0UGF0aChzcGFjZVJlcXVlc3RlZCk7Cit9CisKK2Jvb2wgUXVv
dGFNYW5hZ2VyOjpncmFudEZhc3RQYXRoKHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkKQoreworICAg
IGlmIChzcGFjZVJlcXVlc3RlZCA8PSBtX3F1b3RhQ291bnRkb3duKSB7CisgICAgICAgIG1fcXVv
dGFDb3VudGRvd24gLT0gc3BhY2VSZXF1ZXN0ZWQ7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBRdW90YU1hbmFnZXI6OmRpZEluY3Jl
YXNlUXVvdGEoUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyIGlkZW50aWZpZXIsIHN0ZDo6
b3B0aW9uYWw8dWludDY0X3Q+IG5ld1F1b3RhKQoreworICAgIGlmICghbV9jdXJyZW50UmVxdWVz
dCB8fCBtX2N1cnJlbnRSZXF1ZXN0LT5pZGVudGlmaWVyICE9IGlkZW50aWZpZXIpCisgICAgICAg
IHJldHVybjsKKworICAgIGlmIChuZXdRdW90YSkgeworICAgICAgICBtX3F1b3RhID0gKm5ld1F1
b3RhOworICAgICAgICBtX3F1b3RhQ291bnRkb3duID0gMDsgLy8gUmVjYWxjdWxhdGUgbV9xdW90
YUNvdW50ZG93biBiYXNlZCBvbiB1c2FnZS4KKyAgICB9CisKKyAgICBhdXRvIGRlY2lzaW9uID0g
Z3JhbnRXaXRoQ3VycmVudFF1b3RhKG1fY3VycmVudFJlcXVlc3QtPnNwYWNlUmVxdWVzdGVkKSA/
IERlY2lzaW9uOjpHcmFudCA6IERlY2lzaW9uOjpEZW55OworICAgIG1fY3VycmVudFJlcXVlc3Qt
PmNhbGxiYWNrKGRlY2lzaW9uKTsKKyAgICBtX2N1cnJlbnRSZXF1ZXN0ID0gc3RkOjpudWxsb3B0
OworCisgICAgaWYgKCFtX2lzSGFuZGxpbmdSZXF1ZXN0cykKKyAgICAgICAgaGFuZGxlUmVxdWVz
dHMoKTsKK30KKwordm9pZCBRdW90YU1hbmFnZXI6OnJlc2V0UXVvdGFVcGRhdGVkQmFzZWRPblVz
YWdlRm9yVGVzdGluZygpCit7CisgICAgbV9xdW90YSA9IG1faW5pdGlhbFF1b3RhOworICAgIG1f
cXVvdGFDb3VudGRvd24gPSAwOworICAgIG1fdXNhZ2UgPSBzdGQ6Om51bGxvcHQ7Cit9CisKK3Zv
aWQgUXVvdGFNYW5hZ2VyOjpyZXNldFF1b3RhRm9yVGVzdGluZygpCit7CisgICAgbV9xdW90YSA9
IG1faW5pdGlhbFF1b3RhOworICAgIG1fcXVvdGFDb3VudGRvd24gPSAwOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c3RvcmFnZS9RdW90YU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3Rv
cmFnZS9RdW90YU1hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MWU1ODQ1NjJhOTU5YzFjMTk4MWQ3ZjNk
MTBkMmUzYTEwY2U2MWNiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zdG9yYWdlL1F1b3RhTWFuYWdlci5oCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRp
Zmllci5oIgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgorI2luY2x1ZGUgPHd0
Zi9EZXF1ZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUXVvdGFNYW5hZ2VyIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFF1b3RhTWFuYWdlcj4sIHB1YmxpYyBDYW5NYWtl
V2Vha1B0cjxRdW90YU1hbmFnZXI+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1
YmxpYzoKKyAgICB1c2luZyBHZXRVc2FnZUZ1bmN0aW9uID0gRnVuY3Rpb248dWludDY0X3QoKT47
CisgICAgdXNpbmcgSW5jcmVhc2VRdW90YUZ1bmN0aW9uID0gRnVuY3Rpb248dm9pZChRdW90YUlu
Y3JlYXNlUmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3Qg
Y3VycmVudFVzYWdlLCB1aW50NjRfdCByZXF1ZXN0ZWRJbmNyZWFzZSk+OworICAgIHN0YXRpYyBS
ZWY8UXVvdGFNYW5hZ2VyPiBjcmVhdGUodWludDY0X3QgcXVvdGEsIEdldFVzYWdlRnVuY3Rpb24m
JiwgSW5jcmVhc2VRdW90YUZ1bmN0aW9uJiYpOworCisgICAgZW51bSBjbGFzcyBEZWNpc2lvbiB7
IERlbnksIEdyYW50IH07CisgICAgdXNpbmcgUmVxdWVzdENhbGxiYWNrID0gQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChEZWNpc2lvbik+OworICAgIHZvaWQgcmVxdWVzdFNwYWNlKHVpbnQ2NF90IHNw
YWNlUmVxdWVzdGVkLCBSZXF1ZXN0Q2FsbGJhY2smJik7CisgICAgdm9pZCBkaWRJbmNyZWFzZVF1
b3RhKFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gbmV3UXVvdGEpOworCisgICAgdm9pZCByZXNldFF1b3RhVXBkYXRlZEJhc2VkT25Vc2FnZUZv
clRlc3RpbmcoKTsKKyAgICB2b2lkIHJlc2V0UXVvdGFGb3JUZXN0aW5nKCk7CisKK3ByaXZhdGU6
CisgICAgUXVvdGFNYW5hZ2VyKHVpbnQ2NF90IHF1b3RhLCBHZXRVc2FnZUZ1bmN0aW9uJiYsIElu
Y3JlYXNlUXVvdGFGdW5jdGlvbiYmKTsKKyAgICB2b2lkIGhhbmRsZVJlcXVlc3RzKCk7CisgICAg
Ym9vbCBncmFudFdpdGhDdXJyZW50UXVvdGEodWludDY0X3Qgc3BhY2VSZXF1ZXN0ZWQpOworICAg
IGJvb2wgZ3JhbnRGYXN0UGF0aCh1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCk7CisKKyAgICBzdHJ1
Y3QgUmVxdWVzdCB7CisgICAgICAgIHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkOworICAgICAgICBS
ZXF1ZXN0Q2FsbGJhY2sgY2FsbGJhY2s7CisgICAgICAgIFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRl
bnRpZmllciBpZGVudGlmaWVyOworICAgIH07CisgICAgRGVxdWU8UmVxdWVzdD4gbV9yZXF1ZXN0
czsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlcXVlc3Q+IG1fY3VycmVudFJlcXVlc3Q7CisgICAgYm9v
bCBtX2lzSGFuZGxpbmdSZXF1ZXN0cyB7IGZhbHNlIH07CisgICAgdWludDY0X3QgbV9xdW90YUNv
dW50ZG93biB7IDAgfTsKKyAgICB1aW50NjRfdCBtX3F1b3RhOworICAgIHVpbnQ2NF90IG1faW5p
dGlhbFF1b3RhOyAvLyBUZXN0IG9ubHkuCisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbV91
c2FnZTsKKyAgICBHZXRVc2FnZUZ1bmN0aW9uIG1fZ2V0VXNhZ2VGdW5jdGlvbjsKKyAgICBJbmNy
ZWFzZVF1b3RhRnVuY3Rpb24gbV9pbmNyZWFzZVF1b3RhRnVuY3Rpb247Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
bWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5Cmlu
ZGV4IDdlYmZhNTE2YjUwMzM2ZDM2ODdmN2VjZGQxN2U4ZTdlYmQxY2Q5ZDcuLjY0NTNhOWQyOTAy
MzI3ZWZiYjFhMDE1Mzc5NmIzNmVhYzU4NjZhODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC9tZXNzYWdlcy5weQpAQCAtMjg3LDYgKzI4Nyw3IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5v
dF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgICAgICdXZWJDb3JlOjpOYXRpdmVJbWFnZVJl
ZmVyZW5jZScsCiAgICAgICAgICdXZWJDb3JlOjpQYWdlSWRlbnRpZmllcicsCiAgICAgICAgICdX
ZWJDb3JlOjpQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyJywKKyAgICAgICAg
J1dlYktpdDo6UXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNv
cmU6OlBsdWdpbkxvYWRDbGllbnRQb2xpY3knLAogICAgICAgICAnV2ViQ29yZTo6UG9pbnRlcklE
JywKICAgICAgICAgJ1dlYkNvcmU6OlB1c2hTdWJzY3JpcHRpb25JZGVudGlmaWVyJywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhL1F1b3RhSW5jcmVhc2VSZXF1
ZXN0SWRlbnRpZmllci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGEvUXVvdGFJ
bmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmU0NTRiNmEwOGI2OGEyMGM2
NTBkYzg5NzYzMjg1NThhMzcyMDFmNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYnNpdGVEYXRhL1F1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllci5oCkBAIC0w
LDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9P
YmplY3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitlbnVtIFF1b3RhSW5j
cmVhc2VSZXF1ZXN0SWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcgUXVvdGFJbmNyZWFzZVJlcXVl
c3RJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxRdW90YUluY3JlYXNlUmVxdWVzdElkZW50
aWZpZXJUeXBlPjsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaAppbmRleCAxNTNiZjkzYmRmNmZm
MTFiNDYwZjY0ODI1YjQ1MDMwOGI4NDVkMzhkLi4yMDk4NDY4MTYyOTkwNDczMzg4NGNmY2IxMjdh
YTU3MjFkMmNlZTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0
YVN0b3JlUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRh
U3RvcmVQYXJhbWV0ZXJzLmgKQEAgLTcxLDggKzcxLDggQEAgc3RydWN0IFdlYnNpdGVEYXRhU3Rv
cmVQYXJhbWV0ZXJzIHsKICAgICBTdHJpbmcgZ2VuZXJhbFN0b3JhZ2VEaXJlY3Rvcnk7CiAgICAg
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGdlbmVyYWxTdG9yYWdlRGlyZWN0b3J5SGFuZGxlOwog
Ci0gICAgdWludDY0X3QgcGVyT3JpZ2luU3RvcmFnZVF1b3RhIHsgV2ViQ29yZTo6U3RvcmFnZVF1
b3RhTWFuYWdlcjo6ZGVmYXVsdFF1b3RhKCkgfTsKLSAgICB1aW50NjRfdCBwZXJUaGlyZFBhcnR5
T3JpZ2luU3RvcmFnZVF1b3RhIHsgV2ViQ29yZTo6U3RvcmFnZVF1b3RhTWFuYWdlcjo6ZGVmYXVs
dFRoaXJkUGFydHlRdW90YSgpIH07CisgICAgdWludDY0X3QgcGVyT3JpZ2luU3RvcmFnZVF1b3Rh
OworICAgIHVpbnQ2NF90IHBlclRoaXJkUGFydHlPcmlnaW5TdG9yYWdlUXVvdGE7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50
eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDRmMGEyMzU0NDFiMmUxYzBjY2Nj
MTQwZGNjNTBmMjZmMDA0NDNjYTAuLmYwNmM3NmM3YjM4NmFmY2YyN2JjZWZjOTM0NzZjNDE4Njc5
ZGUzMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNl
L1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMTQ0LDEwICsxNDQsMTQgQEAgTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwIEBuby11bmlm
eQogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIuY3BwCiBO
ZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlLmNwcAogTmV0d29y
a1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZUhhbmRsZVJlZ2lzdHJ5LmNwcAorTmV0
d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50LmNwcAorTmV0
d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlTWFuYWdlci5jcHAKK05ldHdvcmtQcm9jZXNz
L3N0b3JhZ2UvSURCU3RvcmFnZVJlZ2lzdHJ5LmNwcAogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9M
b2NhbFN0b3JhZ2VNYW5hZ2VyLmNwcAogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9NZW1vcnlTdG9y
YWdlQXJlYS5jcHAKIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2Vy
LmNwcAogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5jcHAKK05l
dHdvcmtQcm9jZXNzL3N0b3JhZ2UvUXVvdGFNYW5hZ2VyLmNwcAogTmV0d29ya1Byb2Nlc3Mvc3Rv
cmFnZS9TUUxpdGVTdG9yYWdlQXJlYS5jcHAKIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU2Vzc2lv
blN0b3JhZ2VNYW5hZ2VyLmNwcAogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TdG9yYWdlQXJlYUJh
c2UuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBhNjc4MzY3YTc3NWE0OWJhODFiMjQ4OGNmMzFlYWI5
ZGNjY2NjOTIxLi4xOTU0NjI3ODc3ZDg0Y2EwOGI1NzIwMGNjODYyZTkzZDIzMzA0Mzc5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5jcHAKQEAgLTE0OTUsNiArMTQ5NSwxNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJv
eHk6OnJlcXVlc3RTdG9yYWdlU3BhY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBX
ZQogICAgIH0pOwogfQogCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmluY3JlYXNlUXVvdGEo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9y
aWdpbiwgUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVpbnQ2NF90
IGN1cnJlbnRRdW90YSwgdWludDY0X3QgY3VycmVudFVzYWdlLCB1aW50NjRfdCBzcGFjZVJlcXVl
c3RlZCkKK3sKKyAgICByZXF1ZXN0U3RvcmFnZVNwYWNlKHNlc3Npb25JRCwgb3JpZ2luLCBjdXJy
ZW50UXVvdGEsIGN1cnJlbnRVc2FnZSwgc3BhY2VSZXF1ZXN0ZWQsIFt0aGlzLCB3ZWFrVGhpcyA9
IFdlYWtQdHIgeyAqdGhpcyB9LCBzZXNzaW9uSUQsIG9yaWdpbiwgaWRlbnRpZmllcl0oYXV0byBy
ZXN1bHQpIG11dGFibGUgeworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpEaWRJbmNyZWFz
ZVF1b3RhKHNlc3Npb25JRCwgb3JpZ2luLCBpZGVudGlmaWVyLCByZXN1bHQpLCAwKTsKKyAgICB9
KTsKK30KKwogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZWdpc3RlclNjaGVtZUZvckxlZ2Fj
eUN1c3RvbVByb3RvY29sKGNvbnN0IFN0cmluZyYgc2NoZW1lKQogewogI2lmIEVOQUJMRShMRUdB
Q1lfQ1VTVE9NX1BST1RPQ09MX01BTkFHRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IGE0ZTM2NDVlYmFhZTMz
NmQxODBiNTQxNGJhZmFhMzVkODNmOTE4YzQuLjI0MWY4ZTQ5ZDVlYmY5MjRkNTc0MTI4MDg5ZjEw
YzJkOGViZGU5ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiUHJv
Y2Vzc0xhdW5jaGVyLmgiCiAjaW5jbHVkZSAiUHJvY2Vzc1Rocm90dGxlci5oIgogI2luY2x1ZGUg
IlByb2Nlc3NUaHJvdHRsZXJDbGllbnQuaCIKKyNpbmNsdWRlICJRdW90YUluY3JlYXNlUmVxdWVz
dElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVy
LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZXNSZXBsaWVzLmgiCiAjaW5jbHVk
ZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgpAQCAtMzQwLDYgKzM0MSw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCB0cmlnZ2VyQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hGb3JOYXZpZ2F0aW9uKFdlYlBh
Z2VQcm94eUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6QnJvd3Np
bmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mIHJlc3BvbnNlRG9tYWluLCBOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllciBleGlz
dGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCBzdWNjZXNzKT4mJik7CiAKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlU3Bh
Y2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIHVpbnQ2NF90
IHF1b3RhLCB1aW50NjRfdCBjdXJyZW50U2l6ZSwgdWludDY0X3Qgc3BhY2VSZXF1aXJlZCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBxdW90YSk+JiYpOwor
ICAgIHZvaWQgaW5jcmVhc2VRdW90YShQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6Q2xp
ZW50T3JpZ2luJiwgUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjdXJy
ZW50UXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRVc2FnZSwgdWludDY0X3Qgc3BhY2VSZXF1ZXN0ZWQp
OwogCiAgICAgV2Vic2l0ZURhdGFTdG9yZSogd2Vic2l0ZURhdGFTdG9yZUZyb21TZXNzaW9uSUQo
UEFMOjpTZXNzaW9uSUQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggMTJk
MDZjZWJkNjJhZjE3NTBlNzg4NTU5YzEzYTFiMzk4M2ZkZDJiYS4uNjhjMzJjNGYzMWVhMWExOGU4
MzAwNDQzMjdkNTBiODQyOTUzNjQxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpA
QCAtNjgsNiArNjgsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc1Byb3h5IExlZ2FjeVJl
Y2VpdmVyIHsKICNlbmRpZgogCiAgICAgUmVxdWVzdFN0b3JhZ2VTcGFjZShQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIHN0cnVjdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luLCB1aW50NjRf
dCBxdW90YSwgdWludDY0X3QgY3VycmVudFNpemUsIHVpbnQ2NF90IHNwYWNlUmVxdWlyZWQpIC0+
IChzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBuZXdRdW90YSkgQXN5bmMKKyAgICBJbmNyZWFzZVF1
b3RhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RydWN0IFdlYkNvcmU6OkNsaWVudE9yaWdp
biBvcmlnaW4sIFdlYktpdDo6UXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIHVpbnQ2NF90IHF1b3RhLCB1aW50NjRfdCBjdXJyZW50U2l6ZSwgdWludDY0X3Qgc3BhY2VS
ZXF1ZXN0ZWQpCiAgICAgCiAgICAgUmVzb3VyY2VMb2FkRGlkU2VuZFJlcXVlc3QoV2ViS2l0OjpX
ZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViS2l0OjpSZXNv
dXJjZUxvYWRJbmZvIHJlc291cmNlTG9hZEluZm8sIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBy
ZXF1ZXN0LCBzdGQ6Om9wdGlvbmFsPElQQzo6Rm9ybURhdGFSZWZlcmVuY2U+IGh0dHBCb2R5KQog
ICAgIFJlc291cmNlTG9hZERpZFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViS2l0OjpXZWJQYWdl
UHJveHlJZGVudGlmaWVyIHBhZ2VJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViS2l0OjpSZXNvdXJjZUxv
YWRJbmZvIHJlc291cmNlTG9hZEluZm8sIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzb3Vy
Y2VSZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
Y3BwCmluZGV4IDA4Y2VjZmViZmUwZGU0NGIxZjVhNGI1MDExNDA1ZTFmZDgxNTA5ZmUuLjEzMjkw
NTU3MmY0YjhjM2QwNzk1ODM0MzE0OGMyZmI1NjgzZmVmYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBA
IC0xNzE2LDcgKzE3MTYsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmRpc3BhdGNoT25RdWV1
ZShGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCiB1aW50NjRfdCBXZWJzaXRlRGF0YVN0b3Jl
OjpwZXJUaGlyZFBhcnR5T3JpZ2luU3RvcmFnZVF1b3RhKCkgY29uc3QKIHsKICAgICAvLyBGSVhN
RTogQ29uc2lkZXIgd2hldGhlciBhbGxvd2luZyB0byBzZXQgYSBwZXJUaGlyZFBhcnR5T3JpZ2lu
U3RvcmFnZVF1b3RhIGZyb20gYSBXZWJzaXRlRGF0YVN0b3JlLgotICAgIHJldHVybiBXZWJDb3Jl
OjpTdG9yYWdlUXVvdGFNYW5hZ2VyOjpkZWZhdWx0VGhpcmRQYXJ0eVF1b3RhRnJvbVBlck9yaWdp
blF1b3RhKHBlck9yaWdpblN0b3JhZ2VRdW90YSgpKTsKKyAgICByZXR1cm4gcGVyT3JpZ2luU3Rv
cmFnZVF1b3RhKCkgLyAxMDsKIH0KIAogdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRDYWNoZU1v
ZGVsU3luY2hyb25vdXNseUZvclRlc3RpbmcoQ2FjaGVNb2RlbCBjYWNoZU1vZGVsKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZS5oCmluZGV4IDZiYzY5MzY5YzMzODMyODY5ZGVhMWY1ZGFhNTBlNzlmYWE2ZTdiZjkuLjg1ZWUz
MWUxMzgzZDk3ZDY0NmM2OThjMmRlZjdkOWMzMzRhYjc1YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKQEAgLTM1
MCw2ICszNTAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHREZXZp
Y2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKTsKICAgICBzdGF0aWMgV1RGOjpTdHJpbmcg
ZGVmYXVsdEphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KCk7CiAgICAgc3RhdGljIGJv
b2wgaHR0cDNFbmFibGVkKCk7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50NjRfdCBkZWZhdWx0
UGVyT3JpZ2luUXVvdGEoKSB7IHJldHVybiAxMDAwICogTUI7IH0KIAogICAgIHZvaWQgcmVzZXRR
dW90YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgY2xlYXJTdG9yYWdl
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbi5jcHAKaW5kZXggYmVhNzU3OWNkZmNlMDc4YjY3NTQ4YTFkMDFkYmY3YTQ3ZjZm
N2E4OS4uYTk2MjI2ZmIyNDY0NjE3YmE1Y2I1MWEyNTRiZTkxMjAyZGQ1OTFiOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcApAQCAtMzMsNiArMzMsNyBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OldlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uKElzUGVyc2lzdGVudCBpc1BlcnNpc3RlbnQsIFdpbGxDb3B5
UGF0aHNGcm9tRXhpc3RpbmdDb25maWd1cmF0aW9uIHdpbGxDb3B5UGF0aHMpCiAgICAgOiBtX2lz
UGVyc2lzdGVudChpc1BlcnNpc3RlbnQpCisgICAgLCBtX3Blck9yaWdpblN0b3JhZ2VRdW90YShX
ZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UGVyT3JpZ2luUXVvdGEoKSkKIHsKICAgICBpZiAoaXNQ
ZXJzaXN0ZW50ID09IElzUGVyc2lzdGVudDo6WWVzICYmIHdpbGxDb3B5UGF0aHMgPT0gV2lsbENv
cHlQYXRoc0Zyb21FeGlzdGluZ0NvbmZpZ3VyYXRpb246Ok5vKSB7CiAgICAgICAgIHNldEFwcGxp
Y2F0aW9uQ2FjaGVEaXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9u
Q2FjaGVEaXJlY3RvcnkoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaApp
bmRleCBmMTcxYWQ0Y2U1ZTFiNWNlMTM5NGVjNzgwOTUyNDEwN2Y4MmMxNzRhLi4zMGEyOTkzMTAy
MjdkMmY3MjRmNDI1NzZiNjYxMjU0N2I5NjFjZjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uLmgKQEAgLTI2LDcgKzI2LDYgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSAiQVBJT2JqZWN0LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9TdG9yYWdlUXVvdGFNYW5hZ2VyLmg+
CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CkBAIC0yMDcsNyArMjA2LDcgQEAgcHJpdmF0ZToKIAogICAgIFN0cmluZyBtX2NhY2hlU3RvcmFn
ZURpcmVjdG9yeTsKICAgICBTdHJpbmcgbV9nZW5lcmFsU3RvcmFnZURpcmVjdG9yeTsKLSAgICB1
aW50NjRfdCBtX3Blck9yaWdpblN0b3JhZ2VRdW90YSB7IFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1h
bmFnZXI6OmRlZmF1bHRRdW90YSgpIH07CisgICAgdWludDY0X3QgbV9wZXJPcmlnaW5TdG9yYWdl
UXVvdGE7CiAgICAgU3RyaW5nIG1fbmV0d29ya0NhY2hlRGlyZWN0b3J5OwogICAgIFN0cmluZyBt
X2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnk7CiAgICAgU3RyaW5nIG1fYXBwbGljYXRpb25DYWNo
ZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSB7ICJGaWxlcyJfcyB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYTFhZDAyMDdiMzAxMjdk
MzBjMDIxZTY2ZGJjNGE2OGE3OGNiZDAzMC4uNTIzNjY1NDQ2YWEyNjg1OWQ4NmI4NThiYTkyZTJk
ZmJlNGIyN2U5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0xNDY2LDYgKzE0NjYsMTEgQEAKIAkJOTNCMjYxNEQyMjdEMTQ5RTAwQjk3
QTc2IC8qIFN0b3JhZ2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5M0IyNjE0OTIyN0QxNDcyMDBCOTdBNzYgLyogU3RvcmFnZU1hbmFnZXIu
aCAqLzsgfTsKIAkJOTNCMjYxNEUyMjdEMTRCMTAwQjk3QTc2IC8qIExvY2FsU3RvcmFnZURhdGFi
YXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Iy
NjE0NTIyN0QxNDcwMDBCOTdBNzYgLyogTG9jYWxTdG9yYWdlRGF0YWJhc2UuaCAqLzsgfTsKIAkJ
OTNCMjYxNEYyMjdEMTRCMTAwQjk3QTc2IC8qIExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCMjYxNDYy
MjdEMTQ3MTAwQjk3QTc2IC8qIExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5oICovOyB9Owor
CQk5M0I2MzFFNTI3QUJBNjI4MDA0NDNBNDQgLyogSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCNjMx
RTQyN0FCQTYyNzAwNDQzQTQ0IC8qIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQuaCAqLzsg
fTsKKwkJOTNCNjMxRTgyN0FCQTY1RDAwNDQzQTQ0IC8qIElEQlN0b3JhZ2VNYW5hZ2VyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0I2MzFFNjI3QUJB
NjVDMDA0NDNBNDQgLyogSURCU3RvcmFnZU1hbmFnZXIuaCAqLzsgfTsKKwkJOTNCNjMxRUQyN0FC
QTZCNDAwNDQzQTQ0IC8qIElEQlN0b3JhZ2VSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCNjMxRUIyN0FCQTZCMzAwNDQzQTQ0IC8qIElE
QlN0b3JhZ2VSZWdpc3RyeS5oICovOyB9OworCQk5M0I2MzFGMTI3QUJBQ0E5MDA0NDNBNDQgLyog
UXVvdGFNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5M0I2MzFFRjI3QUJBQ0E5MDA0NDNBNDQgLyogUXVvdGFNYW5hZ2VyLmggKi87IH07CisJ
CTkzQjYzMUYzMjdBQkFEODAwMDQ0M0E0NCAvKiBRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZp
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjYz
MUYyMjdBQkFEN0YwMDQ0M0E0NCAvKiBRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIuaCAq
LzsgfTsKIAkJOTNCREVCMDExNzFERDdBRjAwQkZFRTFCIC8qIFdLUGFnZUxvYWRUeXBlc1ByaXZh
dGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQkRF
QjAwMTcxREQ3QUYwMEJGRUUxQiAvKiBXS1BhZ2VMb2FkVHlwZXNQcml2YXRlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNENkI3NzIyNTRCQjUx
OTAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uU2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Q2Qjc2QzI1NEI4OTU4MDA1OEREM0EgLyog
U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaCAqLzsgfTsKIAkJOTNENkI3NzMyNTRCQjhDNzAwNThE
RDNBIC8qIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNENkI3NjgyNTRCN0JDNjAwNThERDNBIC8q
IFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5oICovOyB9OwpAQCAtNTM1MSw2ICs1MzU2
LDE1IEBACiAJCTkzQjI2MTQ5MjI3RDE0NzIwMEI5N0E3NiAvKiBTdG9yYWdlTWFuYWdlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdG9yYWdlTWFuYWdlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5M0IyNjE0QTIyN0QxNDcyMDBCOTdBNzYgLyogU3RvcmFn
ZU1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RvcmFn
ZU1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0IyNjE0QzIyN0Qx
NDcyMDBCOTdBNzYgLyogTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk5M0I2MzFFMzI3QUJBNUY3MDA0NDNBNDQgLyogSURCU3RvcmFn
ZUNvbm5lY3Rpb25Ub0NsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJREJTdG9yYWdlQ29u
bmVjdGlvblRvQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNCNjMx
RTQyN0FCQTYyNzAwNDQzQTQ0IC8qIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0I2MzFFNjI3QUJBNjVDMDA0NDNB
NDQgLyogSURCU3RvcmFnZU1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSURCU3RvcmFnZU1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNC
NjMxRTcyN0FCQTY1QzAwNDQzQTQ0IC8qIElEQlN0b3JhZ2VNYW5hZ2VyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElEQlN0b3JhZ2VNYW5hZ2VyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNCNjMxRUEyN0FCQTZCMjAwNDQzQTQ0IC8qIElEQlN0
b3JhZ2VSZWdpc3RyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJ
REJTdG9yYWdlUmVnaXN0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0I2
MzFFQjI3QUJBNkIzMDA0NDNBNDQgLyogSURCU3RvcmFnZVJlZ2lzdHJ5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElEQlN0b3JhZ2VSZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk5M0I2MzFFRTI3QUJBQ0E4MDA0NDNBNDQgLyogUXVvdGFNYW5hZ2Vy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFF1b3RhTWFuYWdlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzQjYzMUVGMjdBQkFDQTkwMDQ0M0E0
NCAvKiBRdW90YU1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUXVv
dGFNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzQjYzMUYyMjdBQkFE
N0YwMDQ0M0E0NCAvKiBRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQkEwNERBMjE1MUFERjMwMDdGNDU1RiAv
KiBXZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5M0JBMDREQjIxNTFBREYzMDA3RjQ1NUYgLyogV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
M0JBMDREQzIxNTFBREYzMDA3RjQ1NUYgLyogV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc1
NjMsNiArNzU3Nyw3IEBACiAJCTFBQkY0Mzc4MUEzNjgwMzUwMDNGQjBFNiAvKiBXZWJzaXRlRGF0
YSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJOTNCNjMx
RjIyN0FCQUQ3RjAwNDQzQTQ0IC8qIFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllci5oICov
LAogCQkJCTFBNDgzMkQ0MUE5Q0RGOTYwMDhCNERGRSAvKiBXZWJzaXRlRGF0YS5jcHAgKi8sCiAJ
CQkJMUE0ODMyRDUxQTlDREY5NjAwOEI0REZFIC8qIFdlYnNpdGVEYXRhLmggKi8sCiAJCQkJMUEy
OEI4Q0IxQzgwRUQ1OTAwNkZENzQzIC8qIFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24uaCAqLywKQEAg
LTEwNDEyLDYgKzEwNDI3LDEyIEBACiAJCQkJOTM1QjU3OTgyNkY1MTI3MDAwOEI0OEFDIC8qIEZp
bGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnkuaCAqLywKIAkJCQk5MzFBMDc1MTI2RjA2MzEw
MDA0NDc0Q0QgLyogRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyLmNwcCAqLywKIAkJCQk5MzFBMDc1
MDI2RjA2MzEwMDA0NDc0Q0QgLyogRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyLmggKi8sCisJCQkJ
OTNCNjMxRTMyN0FCQTVGNzAwNDQzQTQ0IC8qIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQu
Y3BwICovLAorCQkJCTkzQjYzMUU0MjdBQkE2MjcwMDQ0M0E0NCAvKiBJREJTdG9yYWdlQ29ubmVj
dGlvblRvQ2xpZW50LmggKi8sCisJCQkJOTNCNjMxRTcyN0FCQTY1QzAwNDQzQTQ0IC8qIElEQlN0
b3JhZ2VNYW5hZ2VyLmNwcCAqLywKKwkJCQk5M0I2MzFFNjI3QUJBNjVDMDA0NDNBNDQgLyogSURC
U3RvcmFnZU1hbmFnZXIuaCAqLywKKwkJCQk5M0I2MzFFQTI3QUJBNkIyMDA0NDNBNDQgLyogSURC
U3RvcmFnZVJlZ2lzdHJ5LmNwcCAqLywKKwkJCQk5M0I2MzFFQjI3QUJBNkIzMDA0NDNBNDQgLyog
SURCU3RvcmFnZVJlZ2lzdHJ5LmggKi8sCiAJCQkJOTNFNzk5QzkyNzYwNDk3QTAwNzQwMDhBIC8q
IExvY2FsU3RvcmFnZU1hbmFnZXIuY3BwICovLAogCQkJCTkzRTc5OUNCMjc2MDQ5N0EwMDc0MDA4
QSAvKiBMb2NhbFN0b3JhZ2VNYW5hZ2VyLmggKi8sCiAJCQkJOTNFNzk5RDgyNzYxMjEwODAwNzQw
MDhBIC8qIE1lbW9yeVN0b3JhZ2VBcmVhLmNwcCAqLywKQEAgLTEwNDIxLDYgKzEwNDQyLDggQEAK
IAkJCQk5MzA4NURDNzI2RTFDNkVFMDAwRUM2QTcgLyogTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLm1l
c3NhZ2VzLmluICovLAogCQkJCTkzMDg1REM1MjZFMUM2Q0YwMDBFQzZBNyAvKiBPcmlnaW5TdG9y
YWdlTWFuYWdlci5jcHAgKi8sCiAJCQkJOTMwODVEQzYyNkUxQzZDRjAwMEVDNkE3IC8qIE9yaWdp
blN0b3JhZ2VNYW5hZ2VyLmggKi8sCisJCQkJOTNCNjMxRUUyN0FCQUNBODAwNDQzQTQ0IC8qIFF1
b3RhTWFuYWdlci5jcHAgKi8sCisJCQkJOTNCNjMxRUYyN0FCQUNBOTAwNDQzQTQ0IC8qIFF1b3Rh
TWFuYWdlci5oICovLAogCQkJCTkzRTc5OUNDMjc2MDQ5N0IwMDc0MDA4QSAvKiBTZXNzaW9uU3Rv
cmFnZU1hbmFnZXIuY3BwICovLAogCQkJCTkzRTc5OUNBMjc2MDQ5N0EwMDc0MDA4QSAvKiBTZXNz
aW9uU3RvcmFnZU1hbmFnZXIuaCAqLywKIAkJCQk5M0U3OTlEMzI3NjEyMTA3MDA3NDAwOEEgLyog
U1FMaXRlU3RvcmFnZUFyZWEuY3BwICovLApAQCAtMTMwMzEsNiArMTMwNTQsOSBAQAogCQkJCTMx
MkNDOUYyMjE1QjA2RjEwMERFNDBDQSAvKiBIaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyLmggaW4g
SGVhZGVycyAqLywKIAkJCQk4MzlBMkYzMjFFMjA2NzQ1MDAzOTA1N0UgLyogSGlnaFBlcmZvcm1h
bmNlR3JhcGhpY3NVc2FnZVNhbXBsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxQzBDOTc0MURE
RDc2MDAwMDMyQ0FEMyAvKiBJY29uTG9hZGluZ0RlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk5M0I2MzFFNTI3QUJBNjI4MDA0NDNBNDQgLyogSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVu
dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTNCNjMxRTgyN0FCQTY1RDAwNDQzQTQ0IC8qIElEQlN0
b3JhZ2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQk5M0I2MzFFRDI3QUJBNkI0MDA0NDNB
NDQgLyogSURCU3RvcmFnZVJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUUzNTFDQjE4
MEYyQ0NDMDBFNTNCRTkgLyogSURCVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0NG
NkIyNTEyQzkzRTdBMDA4RjlDMzUgLyogSW1hZ2VPcHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQTFFQzY5RTE4NzIwOTIxMDBCOTUxRjAgLyogSW1wb3J0YW5jZUFzc2VydGlvbi5oIGluIEhl
YWRlcnMgKi8sCkBAIC0xMzI0NCw2ICsxMzI3MCw4IEBACiAJCQkJQTFFNjg4NzAxRjZFMkJBQjAw
NzAwNkE2IC8qIFF1YXJhbnRpbmVTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMEMyMjdFMjQ1
MTEzMEEwMEVENjE0RCAvKiBRdWlja0xvb2tUaHVtYm5haWxpbmdTb2Z0TGluay5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUFFRTU3MjUyNDA5RjE0MjAwMjAwNUQ2IC8qIFF1aWNrTG9va1RodW1ibmFp
bExvYWRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTNCNjMxRjMyN0FCQUQ4MDAwNDQzQTQ0IC8q
IFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTNC
NjMxRjEyN0FCQUNBOTAwNDQzQTQ0IC8qIFF1b3RhTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNUNCNkFFNDQyNjA5Nzk5QzAwQjZFRDVBIC8qIFJlYXNvblNQSS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTdGRDMxODIyMkIzNTE1RTAwOEQwRThCIC8qIFJlZGlyZWN0U09BdXRob3JpemF0aW9u
U2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUIxMjI5RDIyM0ZGMkJDQzAwOENBNzUxIC8q
IFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklE
QkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRGF0YWJh
c2VzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwCmluZGV4IDA0YzI0MTBm
MzVhZGNjMDQ2YzU0MDZhZjBjY2UyZmQwZTg0MWFkYjAuLmQ3OTAxNjliZTBmNThlMzAxZWRiZTQ0
YzA0NGM3ODM5MWVmNDc0NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9E
YXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlv
blRvU2VydmVyLmNwcApAQCAtMjksOSArMjksOSBAQAogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2Uu
aCIKICNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiTmV0d29ya1N0
b3JhZ2VNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMu
aCIKICNpbmNsdWRlICJXZWJJREJSZXN1bHQuaCIKLSNpbmNsdWRlICJXZWJJREJTZXJ2ZXJNZXNz
YWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0lEQkNv
bm5lY3Rpb25Ub1NlcnZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSURCQ3Vyc29ySW5mby5oPgpA
QCAtODIsMTMyICs4MiwxMzIgQEAgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uVG9TZXJ2ZXImIFdl
YklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Y29yZUNvbm5lY3Rpb25Ub1NlcnYKIAogdm9pZCBXZWJJ
REJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRlbGV0ZURhdGFiYXNlKGNvbnN0IElEQlJlcXVlc3REYXRh
JiByZXF1ZXN0RGF0YSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OkRlbGV0
ZURhdGFiYXNlKHJlcXVlc3REYXRhKSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyOjpEZWxldGVEYXRhYmFzZShyZXF1ZXN0RGF0YSkpOwogfQogCiB2b2lkIFdlYklE
QkNvbm5lY3Rpb25Ub1NlcnZlcjo6b3BlbkRhdGFiYXNlKGNvbnN0IElEQlJlcXVlc3REYXRhJiBy
ZXF1ZXN0RGF0YSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6Ok9wZW5EYXRh
YmFzZShyZXF1ZXN0RGF0YSkpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFu
YWdlcjo6T3BlbkRhdGFiYXNlKHJlcXVlc3REYXRhKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVj
dGlvblRvU2VydmVyOjphYm9ydFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmll
ciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNl
cnZlcjo6QWJvcnRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbklkZW50aWZpZXIpKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkFib3J0VHJhbnNhY3Rpb24odHJhbnNh
Y3Rpb25JZGVudGlmaWVyKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpj
b21taXRUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9u
SWRlbnRpZmllciwgdWludDY0X3QgcGVuZGluZ1JlcXVlc3RDb3VudCkKIHsKLSAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OkNvbW1pdFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRp
ZmllciwgcGVuZGluZ1JlcXVlc3RDb3VudCkpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtT
dG9yYWdlTWFuYWdlcjo6Q29tbWl0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZGVudGlmaWVyLCBw
ZW5kaW5nUmVxdWVzdENvdW50KSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVy
OjpkaWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbih1aW50NjRfdCBkYXRh
YmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRy
YW5zYWN0aW9uSWRlbnRpZmllcikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6
OkRpZEZpbmlzaEhhbmRsaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKGRhdGFiYXNlQ29ubmVj
dGlvbklkZW50aWZpZXIsIHRyYW5zYWN0aW9uSWRlbnRpZmllcikpOworICAgIHNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6RGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdl
VHJhbnNhY3Rpb24oZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgdHJhbnNhY3Rpb25JZGVu
dGlmaWVyKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpjcmVhdGVPYmpl
Y3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQk9iamVj
dFN0b3JlSW5mbyYgaW5mbykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OkNy
ZWF0ZU9iamVjdFN0b3JlKHJlcXVlc3REYXRhLCBpbmZvKSk7CisgICAgc2VuZChNZXNzYWdlczo6
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpDcmVhdGVPYmplY3RTdG9yZShyZXF1ZXN0RGF0YSwgaW5m
bykpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGVsZXRlT2JqZWN0U3Rv
cmUoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBTdHJpbmcmIG9iamVj
dFN0b3JlTmFtZSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OkRlbGV0ZU9i
amVjdFN0b3JlKHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZU5hbWUpKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkRlbGV0ZU9iamVjdFN0b3JlKHJlcXVlc3REYXRh
LCBvYmplY3RTdG9yZU5hbWUpKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6
OnJlbmFtZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgdWlu
dDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUpCiB7Ci0g
ICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyOjpSZW5hbWVPYmplY3RTdG9yZShyZXF1ZXN0
RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBuZXdOYW1lKSk7CisgICAgc2VuZChNZXNzYWdl
czo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpSZW5hbWVPYmplY3RTdG9yZShyZXF1ZXN0RGF0YSwg
b2JqZWN0U3RvcmVJZGVudGlmaWVyLCBuZXdOYW1lKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVj
dGlvblRvU2VydmVyOjpjbGVhck9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1
ZXN0RGF0YSwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyKQogewotICAgIHNlbmQoTWVz
c2FnZXM6OldlYklEQlNlcnZlcjo6Q2xlYXJPYmplY3RTdG9yZShyZXF1ZXN0RGF0YSwgb2JqZWN0
U3RvcmVJZGVudGlmaWVyKSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5h
Z2VyOjpDbGVhck9iamVjdFN0b3JlKHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIp
KTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmNyZWF0ZUluZGV4KGNvbnN0
IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCSW5kZXhJbmZvJiBpbmZvKQog
ewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6Q3JlYXRlSW5kZXgocmVxdWVzdERh
dGEsIGluZm8pKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkNy
ZWF0ZUluZGV4KHJlcXVlc3REYXRhLCBpbmZvKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlv
blRvU2VydmVyOjpkZWxldGVJbmRleChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEs
IHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpbmRleE5hbWUp
CiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyOjpEZWxldGVJbmRleChyZXF1ZXN0
RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleE5hbWUpKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkRlbGV0ZUluZGV4KHJlcXVlc3REYXRhLCBvYmpl
Y3RTdG9yZUlkZW50aWZpZXIsIGluZGV4TmFtZSkpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rp
b25Ub1NlcnZlcjo6cmVuYW1lSW5kZXgoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRh
LCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNl
cnZlcjo6UmVuYW1lSW5kZXgocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5k
ZXhJZGVudGlmaWVyLCBuZXdOYW1lKSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyOjpSZW5hbWVJbmRleChyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVy
LCBpbmRleElkZW50aWZpZXIsIG5ld05hbWUpKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9u
VG9TZXJ2ZXI6OnB1dE9yQWRkKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29u
c3QgSURCS2V5RGF0YSYga2V5RGF0YSwgY29uc3QgSURCVmFsdWUmIHZhbHVlLCBjb25zdCBJbmRl
eGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSBtb2RlKQogewotICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYklEQlNlcnZlcjo6UHV0T3JBZGQocmVxdWVzdERhdGEsIGtleURhdGEsIHZhbHVlLCBt
b2RlKSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpQdXRPckFk
ZChyZXF1ZXN0RGF0YSwga2V5RGF0YSwgdmFsdWUsIG1vZGUpKTsKIH0KIAogdm9pZCBXZWJJREJD
b25uZWN0aW9uVG9TZXJ2ZXI6OmdldFJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVz
dERhdGEsIGNvbnN0IElEQkdldFJlY29yZERhdGEmIGdldFJlY29yZERhdGEpCiB7Ci0gICAgc2Vu
ZChNZXNzYWdlczo6V2ViSURCU2VydmVyOjpHZXRSZWNvcmQocmVxdWVzdERhdGEsIGdldFJlY29y
ZERhdGEpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkdldFJl
Y29yZChyZXF1ZXN0RGF0YSwgZ2V0UmVjb3JkRGF0YSkpOwogfQogCiB2b2lkIFdlYklEQkNvbm5l
Y3Rpb25Ub1NlcnZlcjo6Z2V0QWxsUmVjb3Jkcyhjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVz
dERhdGEsIGNvbnN0IElEQkdldEFsbFJlY29yZHNEYXRhJiBnZXRBbGxSZWNvcmRzRGF0YSkKIHsK
LSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OkdldEFsbFJlY29yZHMocmVxdWVzdERh
dGEsIGdldEFsbFJlY29yZHNEYXRhKSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyOjpHZXRBbGxSZWNvcmRzKHJlcXVlc3REYXRhLCBnZXRBbGxSZWNvcmRzRGF0YSkp
OwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Z2V0Q291bnQoY29uc3QgSURC
UmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIHJhbmdlKQog
ewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6R2V0Q291bnQocmVxdWVzdERhdGEs
IHJhbmdlKSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpHZXRD
b3VudChyZXF1ZXN0RGF0YSwgcmFuZ2UpKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9T
ZXJ2ZXI6OmRlbGV0ZVJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNv
bnN0IElEQktleVJhbmdlRGF0YSYgcmFuZ2UpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURC
U2VydmVyOjpEZWxldGVSZWNvcmQocmVxdWVzdERhdGEsIHJhbmdlKSk7CisgICAgc2VuZChNZXNz
YWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpEZWxldGVSZWNvcmQocmVxdWVzdERhdGEsIHJh
bmdlKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpvcGVuQ3Vyc29yKGNv
bnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCQ3Vyc29ySW5mbyYgaW5m
bykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6Ok9wZW5DdXJzb3IocmVxdWVz
dERhdGEsIGluZm8pKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6
Ok9wZW5DdXJzb3IocmVxdWVzdERhdGEsIGluZm8pKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0
aW9uVG9TZXJ2ZXI6Oml0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3RE
YXRhLCBjb25zdCBJREJJdGVyYXRlQ3Vyc29yRGF0YSYgZGF0YSkKIHsKLSAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJJREJTZXJ2ZXI6Okl0ZXJhdGVDdXJzb3IocmVxdWVzdERhdGEsIGRhdGEpKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Okl0ZXJhdGVDdXJzb3IocmVx
dWVzdERhdGEsIGRhdGEpKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmVz
dGFibGlzaFRyYW5zYWN0aW9uKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIs
IGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYgaW5mbykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJJREJTZXJ2ZXI6OkVzdGFibGlzaFRyYW5zYWN0aW9uKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50
aWZpZXIsIGluZm8pKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6
OkVzdGFibGlzaFRyYW5zYWN0aW9uKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGluZm8p
KTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRhdGFiYXNlQ29ubmVjdGlv
blBlbmRpbmdDbG9zZSh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKQogewot
ICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6RGF0YWJhc2VDb25uZWN0aW9uUGVuZGlu
Z0Nsb3NlKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpKTsKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkRhdGFiYXNlQ29ubmVjdGlvblBlbmRpbmdDbG9zZShk
YXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlv
blRvU2VydmVyOjpkYXRhYmFzZUNvbm5lY3Rpb25DbG9zZWQodWludDY0X3QgZGF0YWJhc2VDb25u
ZWN0aW9uSWRlbnRpZmllcikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OkRh
dGFiYXNlQ29ubmVjdGlvbkNsb3NlZChkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKSk7Cisg
ICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpEYXRhYmFzZUNvbm5lY3Rp
b25DbG9zZWQoZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcikpOwogfQogCiB2b2lkIFdlYklE
QkNvbm5lY3Rpb25Ub1NlcnZlcjo6YWJvcnRPcGVuQW5kVXBncmFkZU5lZWRlZCh1aW50NjRfdCBk
YXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXIm
IHRyYW5zYWN0aW9uSWRlbnRpZmllcikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2
ZXI6OkFib3J0T3BlbkFuZFVwZ3JhZGVOZWVkZWQoZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmll
ciwgdHJhbnNhY3Rpb25JZGVudGlmaWVyKSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0
b3JhZ2VNYW5hZ2VyOjpBYm9ydE9wZW5BbmRVcGdyYWRlTmVlZGVkKGRhdGFiYXNlQ29ubmVjdGlv
bklkZW50aWZpZXIsIHRyYW5zYWN0aW9uSWRlbnRpZmllcikpOwogfQogCiB2b2lkIFdlYklEQkNv
bm5lY3Rpb25Ub1NlcnZlcjo6ZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudCh1aW50NjRfdCBkYXRh
YmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJl
cXVlc3RJZGVudGlmaWVyLCBjb25zdCBJbmRleGVkREI6OkNvbm5lY3Rpb25DbG9zZWRPbkJlaGFs
Zk9mU2VydmVyIGNvbm5lY3Rpb25DbG9zZWQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURC
U2VydmVyOjpEaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KGRhdGFiYXNlQ29ubmVjdGlvbklkZW50
aWZpZXIsIHJlcXVlc3RJZGVudGlmaWVyLCBjb25uZWN0aW9uQ2xvc2VkKSk7CisgICAgc2VuZChN
ZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpEaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50
KGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHJlcXVlc3RJZGVudGlmaWVyLCBjb25uZWN0
aW9uQ2xvc2VkKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpvcGVuREJS
ZXF1ZXN0Q2FuY2VsbGVkKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkKIHsKLSAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6Ok9wZW5EQlJlcXVlc3RDYW5jZWxsZWQocmVx
dWVzdERhdGEpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Ok9w
ZW5EQlJlcXVlc3RDYW5jZWxsZWQocmVxdWVzdERhdGEpKTsKIH0KIAogdm9pZCBXZWJJREJDb25u
ZWN0aW9uVG9TZXJ2ZXI6OmdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhjb25zdCBJREJS
ZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBDbGllbnRPcmlnaW4m
IG9yaWdpbikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OkdldEFsbERhdGFi
YXNlTmFtZXNBbmRWZXJzaW9ucyhyZXF1ZXN0SWRlbnRpZmllciwgb3JpZ2luKSk7CisgICAgc2Vu
ZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpHZXRBbGxEYXRhYmFzZU5hbWVzQW5k
VmVyc2lvbnMocmVxdWVzdElkZW50aWZpZXIsIG9yaWdpbikpOwogfQogCiB2b2lkIFdlYklEQkNv
bm5lY3Rpb25Ub1NlcnZlcjo6ZGlkRGVsZXRlRGF0YWJhc2UoY29uc3QgSURCUmVzdWx0RGF0YSYg
cmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL0luUHJvY2Vz
c0lEQlNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvSW5Qcm9jZXNzSURC
U2VydmVyLmNwcAppbmRleCBlYTJlMmE3OGY4OGZmZGQxMDFhM2ExMzdmMGQ1YTEwYTU2ZTEwZmIy
Li4wY2FkYjUwNDJiYTE2MTA3N2Y5NDQ5YTk3M2RjZjk4MzJkMzcwMmFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvSW5Qcm9jZXNzSURCU2VydmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvSW5Qcm9jZXNzSURCU2VydmVyLmNwcApAQCAtNDIs
NiArNDIsOCBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAorc3RhdGljIGNvbnN0ZXhw
ciB1aW50NjRfdCBkZWZhdWx0UGVyT3JpZ2luUXVvdGEgPSAgMTAwMCAqIE1COworCiBSZWY8SW5Q
cm9jZXNzSURCU2VydmVyPiBJblByb2Nlc3NJREJTZXJ2ZXI6OmNyZWF0ZShQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQpCiB7CiAgICAgQVNTRVJUKHNlc3Npb25JRC5pc0VwaGVtZXJhbCgpKTsKQEAg
LTczLDcgKzc1LDcgQEAgSW5Qcm9jZXNzSURCU2VydmVyOjp+SW5Qcm9jZXNzSURCU2VydmVyKCkK
IFN0b3JhZ2VRdW90YU1hbmFnZXIqIEluUHJvY2Vzc0lEQlNlcnZlcjo6cXVvdGFNYW5hZ2VyKGNv
bnN0IENsaWVudE9yaWdpbiYgb3JpZ2luKQogewogICAgIHJldHVybiBtX3F1b3RhTWFuYWdlcnMu
ZW5zdXJlKG9yaWdpbiwgW10gewotICAgICAgICByZXR1cm4gU3RvcmFnZVF1b3RhTWFuYWdlcjo6
Y3JlYXRlKFN0b3JhZ2VRdW90YU1hbmFnZXI6OmRlZmF1bHRRdW90YSgpLCBbXSB7CisgICAgICAg
IHJldHVybiBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpjcmVhdGUoZGVmYXVsdFBlck9yaWdpblF1b3Rh
LCBbXSB7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfSwgW10odWludDY0X3QgcXVv
dGEsIHVpbnQ2NF90IGN1cnJlbnRTcGFjZSwgdWludDY0X3Qgc3BhY2VJbmNyZWFzZSwgYXV0byBj
YWxsYmFjaykgewogICAgICAgICAgICAgY2FsbGJhY2socXVvdGEgKyBjdXJyZW50U3BhY2UgKyBz
cGFjZUluY3JlYXNlKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCBlMTBjMGRhOGViOTBkNjdkNTUxMTE5OGE2NjVhYjc3MGU3ZDE4MzQ5Li42NGY4
NmJmNGQyZjY0MGIyMGQ1ZTc0MWNmYzAxNmNlMzhkY2FkM2E2IDEwMDY0NAotLS0gYS9Ub29scy9D
aGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjItMDIt
MDMgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgTWFuYWdlIElu
ZGV4ZWREQiBzdG9yYWdlIGJ5IG9yaWdpbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM0OTI1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NzU1NTAx
ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRh
dGUgZXhpc3RpbmcgdGVzdHMgZm9yIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCRmlsZU5hbWUubW06CisgICAgICAg
IChydW5UZXN0KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0lu
ZGV4ZWREQlBlcnNpc3RlbmNlLm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvU3RvcmVCbG9iVGhlbkRlbGV0ZS5tbToKKyAgICAgICAgKFRFU1QpOgorCiAyMDIy
LTAyLTAxICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBb
RVdTXSBSZW5hbWUgQ29tcGlsZVdlYktpdFdpdGhvdXRQYXRjaCB0byBDb21waWxlV2ViS2l0V2l0
aG91dENoYW5nZQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9JbmRleGVkREJGaWxlTmFtZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvSW5kZXhlZERCRmlsZU5hbWUubW0KaW5kZXggYTZiMDEyOWJjMTA1OWM0ZjljMTE4
ZDFmZDdlZmQyMTIzZWFjMmM3YS4uNDEwMjIyNGU0NTI3NGQzNjM3OWU0YmIwMDJhMGZlZTg5ODMy
ZjViYyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9J
bmRleGVkREJGaWxlTmFtZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0luZGV4ZWREQkZpbGVOYW1lLm1tCkBAIC03MSwyMCArNzEsMjMgQEAgc3RhdGljIHZv
aWQgcnVuVGVzdCgpCiAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBzdHJpbmcyID0gKE5TU3RyaW5n
ICopW2xhc3RTY3JpcHRNZXNzYWdlIGJvZHldOwogICAgIEVYUEVDVF9XS19TVFJFUShAIlN1Y2Nl
c3MiLCBzdHJpbmcyLmdldCgpKTsKIAotICAgIC8vIEZvciBkYXRhYmFzZSB0aGF0IGlzIG5vdCBv
cGVuZWQgYWZ0ZXIgdXBncmFkZSwgaXRzIGZpbGUgc2hvdWxkIGJlIGluIHYwLgorICAgIC8vIEFs
bCBkYXRhYmFzZXMgb2YgYW4gb3JpZ2luIGFyZSBtaWdyYXRlZCB0byBuZXcgdmVyc2lvbiBkaXJl
Y3Rvcnkgd2hlbiB0aGUgb3JpZ2luIGlzIGFjY2Vzc2VkLgogICAgIGF1dG8gZGVmYXVsdEZpbGVN
YW5hZ2VyID0gW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdOwogICAgIE5TU3RyaW5nICpl
eGlzdGluZ0RhdGFiYXNlTmFtZSA9IEAiSW5kZXhlZERCVGVzdCI7CiAgICAgTlNTdHJpbmcgKmNy
ZWF0ZWREYXRhYmFzZU5hbWUgPSBAIkluZGV4ZWREQk90aGVyIjsKICAgICBOU1N0cmluZyAqdW51
c2VkRGF0YWJhc2VOYW1lID0gQCJJbmRleGVkREJVbnVzZWQiOwogICAgIE5TU3RyaW5nICpleGlz
dGluZ0RhdGJhc2VIYXNoID0gV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0ZUhhc2hG
b3JGaWxlTmFtZShleGlzdGluZ0RhdGFiYXNlTmFtZSk7CiAgICAgTlNTdHJpbmcgKmNyZWF0ZWRE
YXRhYmFzZUhhc2ggPSBXZWJDb3JlOjpTUUxpdGVGaWxlU3lzdGVtOjpjb21wdXRlSGFzaEZvckZp
bGVOYW1lKGNyZWF0ZWREYXRhYmFzZU5hbWUpOworICAgIE5TU3RyaW5nICp1bnVzZWREYXRhYmFz
ZUhhc2ggPSBXZWJDb3JlOjpTUUxpdGVGaWxlU3lzdGVtOjpjb21wdXRlSGFzaEZvckZpbGVOYW1l
KGNyZWF0ZWREYXRhYmFzZU5hbWUpOwogICAgIE5TVVJMICppZGJSb290VVJMID0gW1tXS1dlYnNp
dGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5
XTsKICAgICBOU1VSTCAqb2xkVmVyc2lvbkRpcmVjdG9yeVVSTCA9IFtpZGJSb290VVJMIFVSTEJ5
QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAInYwIl07CiAgICAgTlNVUkwgKm5ld1ZlcnNpb25EaXJl
Y3RvcnlVUkwgPSBbaWRiUm9vdFVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJ2MSJd
OwogICAgIE5TVVJMICpvbGRWZXJzaW9uT3JpZ2luRGlyZWN0b3J5VVJMID0gW29sZFZlcnNpb25E
aXJlY3RvcnlVUkwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OiBAImZpbGVfXzAiXTsKICAg
ICBOU1VSTCAqbmV3VmVyc2lvbk9yaWdpbkRpcmVjdG9yeVVSTCA9IFtuZXdWZXJzaW9uRGlyZWN0
b3J5VVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDogQCJmaWxlX18wIl07CiAgICAgTlNV
UkwgKm9sZFZlcnNpb25VbnVzZWREYXRhYmFzZURpcmVjdG9yeVVSTCA9IFtvbGRWZXJzaW9uT3Jp
Z2luRGlyZWN0b3J5VVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDp1bnVzZWREYXRhYmFz
ZU5hbWVdOwotICAgIEVYUEVDVF9UUlVFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0g
ZmlsZUV4aXN0c0F0UGF0aDpvbGRWZXJzaW9uVW51c2VkRGF0YWJhc2VEaXJlY3RvcnlVUkwucGF0
aF0pOworICAgIE5TVVJMICpuZXdWZXJzaW9uVW51c2VkRGF0YWJhc2VEaXJlY3RvcnlVUkwgPSBb
bmV3VmVyc2lvbk9yaWdpbkRpcmVjdG9yeVVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6
dW51c2VkRGF0YWJhc2VIYXNoXTsKKyAgICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRl
ZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOm9sZFZlcnNpb25VbnVzZWREYXRhYmFzZURp
cmVjdG9yeVVSTC5wYXRoXSk7CisgICAgRVhQRUNUX1RSVUUoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1
bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOm5ld1ZlcnNpb25VbnVzZWREYXRhYmFzZURpcmVj
dG9yeVVSTC5wYXRoXSk7CiAgICAgCiAgICAgLy8gRm9yIGRhdGFiYXNlIHRoYXQgaXMgb3BlbmVk
IGFmdGVyIHVwZ3JhZGUsIGl0cyBmaWxlIHNob3VsZCBvbmx5IGJlIGluIHYxLgogICAgIE5TVVJM
ICpvbGRWZXJzaW9uRXhpc3RpbmdEYXRhYmFzZURpcmVjdG9yeVVSTCA9IFtvbGRWZXJzaW9uT3Jp
Z2luRGlyZWN0b3J5VVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDogZXhpc3RpbmdEYXRh
YmFzZU5hbWVdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9JbmRleGVkREJQZXJzaXN0ZW5jZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvSW5kZXhlZERCUGVyc2lzdGVuY2UubW0KaW5kZXggMjcxOGM0YWIzNjlhODE4
MmRhMGUxMThjNDUxNjY2YWU5ZDFlMmM3NC4uNGYwYThlYzk0NDU0OGNhNmM3ODcwMTVjNmI2ZDk1
MDg1ODgzODhiMyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9JbmRleGVkREJQZXJzaXN0ZW5jZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0luZGV4ZWREQlBlcnNpc3RlbmNlLm1tCkBAIC0zMDUsMTAgKzMwNSwx
NCBAQCBURVNUKEluZGV4ZWREQiwgSW5kZXhlZERCVGhpcmRQYXJ0eURhdGFSZW1vdmFsKQogICAg
IEVYUEVDVF9XS19TVFJFUSggQCJkYXRhYmFzZSBpcyBjcmVhdGVkIC0gcHV0IGl0ZW0gc3VjY2Vz
cyIsIChOU1N0cmluZyAqKVtsYXN0U2NyaXB0TWVzc2FnZSBib2R5XSk7CiAKICAgICByZWFkeVRv
Q29udGludWUgPSBmYWxzZTsKLSAgICBbW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0
b3JlXSBmZXRjaERhdGFSZWNvcmRzT2ZUeXBlczp3ZWJzaXRlRGF0YVR5cGVzLmdldCgpIGNvbXBs
ZXRpb25IYW5kbGVyOl4oTlNBcnJheTxXS1dlYnNpdGVEYXRhUmVjb3JkICo+ICpkYXRhUmVjb3Jk
cykgewotICAgICAgICBFWFBFQ1RfRVEoMXUsIGRhdGFSZWNvcmRzLmNvdW50KTsKLSAgICAgICAg
RVhQRUNUX1dLX1NUUkVRKCJpZnJhbWUiLCBbW2RhdGFSZWNvcmRzIGZpcnN0T2JqZWN0XSBkaXNw
bGF5TmFtZV0pOwotICAgICAgICBbW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3Jl
XSByZW1vdmVEYXRhT2ZUeXBlczp3ZWJzaXRlRGF0YVR5cGVzLmdldCgpIGZvckRhdGFSZWNvcmRz
OmRhdGFSZWNvcmRzIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7CisgICAgW1tXS1dlYnNpdGVEYXRh
U3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gZmV0Y2hEYXRhUmVjb3Jkc09mVHlwZXM6d2Vic2l0ZURh
dGFUeXBlcy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8V0tXZWJzaXRlRGF0YVJl
Y29yZCAqPiAqcmVjb3JkcykgeworICAgICAgICBFWFBFQ1RfRVEoMnUsIHJlY29yZHMuY291bnQp
OworICAgICAgICBOU1NvcnREZXNjcmlwdG9yICpyZWNvcmREZXNjcmlwdG9yID0gW05TU29ydERl
c2NyaXB0b3Igc29ydERlc2NyaXB0b3JXaXRoS2V5OkAiZGlzcGxheU5hbWUiIGFzY2VuZGluZzpZ
RVNdOworICAgICAgICBOU0FycmF5ICpzb3J0RGVzY3JpcHRvcnMgPSBAW3JlY29yZERlc2NyaXB0
b3JdOworICAgICAgICBOU0FycmF5ICpzb3J0ZWRSZWNvcmRzID0gW3JlY29yZHMgc29ydGVkQXJy
YXlVc2luZ0Rlc2NyaXB0b3JzOnNvcnREZXNjcmlwdG9yc107CisgICAgICAgIEVYUEVDVF9XS19T
VFJFUSgiaWZyYW1lIiwgW1tzb3J0ZWRSZWNvcmRzIG9iamVjdEF0SW5kZXg6MF0gZGlzcGxheU5h
bWVdKTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKCJ3ZWJraXQub3JnIiwgW1tzb3J0ZWRSZWNv
cmRzIG9iamVjdEF0SW5kZXg6MV0gZGlzcGxheU5hbWVdKTsKKyAgICAgICAgW1tXS1dlYnNpdGVE
YXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gcmVtb3ZlRGF0YU9mVHlwZXM6d2Vic2l0ZURhdGFU
eXBlcy5nZXQoKSBmb3JEYXRhUmVjb3JkczpyZWNvcmRzIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7
CiAgICAgICAgICAgICByZWFkeVRvQ29udGludWUgPSB0cnVlOwogICAgICAgICB9XTsKICAgICB9
XTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU3Rv
cmVCbG9iVGhlbkRlbGV0ZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvU3RvcmVCbG9iVGhlbkRlbGV0ZS5tbQppbmRleCBhYWJmZmY4N2JjNjRiMzk1MmIyNDE0NTIx
NWVlMDM4Mjg2YjdjODkxLi44ZTg1YTQwYTVlODNiYTAzNDMyMWU3ZTc5NjlkODM1NWUzMmMyNDY1
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1N0b3Jl
QmxvYlRoZW5EZWxldGUubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9TdG9yZUJsb2JUaGVuRGVsZXRlLm1tCkBAIC04Nyw3ICs4Nyw3IEBAIFRFU1QoSW5kZXhl
ZERCLCBTdG9yZUJsb2JUaGVuUmVtb3ZlRGF0YSkKICAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVs
dE1hbmFnZXJdIGNvcHlJdGVtQXRQYXRoOmRhdGFiYXNlRmlsZVBhdGggdG9QYXRoOmZha2VTaG1Q
YXRoIGVycm9yOm5pbF07CiAgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjb3B5
SXRlbUF0UGF0aDpkYXRhYmFzZUZpbGVQYXRoIHRvUGF0aDpmYWtlV2FsUGF0aCBlcnJvcjpuaWxd
OwogCi0gICAgLy8gTWFrZSBzb21lIG90aGVyIC5ibG9iIGZpbGVzIGluIHRoZSBkYXRhYmFzZSBk
aXJlY3RvcnkgdG8gbGF0ZXIgdmFsaWRhdGUgdGhhdCBvbmx5IGFwcHJvcHJpYXRlIGZpbGVzIGFy
ZSBkZWxldGVkLgorICAgIC8vIE1ha2Ugc29tZSBvdGhlciAuYmxvYiBmaWxlcyBpbiB0aGUgZGF0
YWJhc2UgZGlyZWN0b3J5IHRvIGxhdGVyIHZhbGlkYXRlIGFsbCBibG9iIGZpbGVzIGluIHRoZSBk
aXJlY3RvcnkgYXJlIGRlbGV0ZWQuCiAgICAgTlNTdHJpbmcgKm90aGVyQmxvYjEgPSBbZGF0YWJh
c2VEaXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiNzE4Mi5ibG9iIl07
CiAgICAgTlNTdHJpbmcgKm90aGVyQmxvYjIgPSBbZGF0YWJhc2VEaXJlY3Rvcnkgc3RyaW5nQnlB
cHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiMWEuYmxvYiJdOwogICAgIE5TU3RyaW5nICpvdGhlckJs
b2IzID0gW2RhdGFiYXNlRGlyZWN0b3J5IHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpA
ImExLmJsb2IiXTsKQEAgLTEwMiwxMyArMTAyLDEyIEBAIFRFU1QoSW5kZXhlZERCLCBTdG9yZUJs
b2JUaGVuUmVtb3ZlRGF0YSkKICAgICAgICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBk
ZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpibG9iRmlsZVBhdGhdKTsKICAgICAgICAg
RVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0
UGF0aDpkYXRhYmFzZUZpbGVQYXRoXSk7CiAKLSAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBmYWtl
IGJsb2IgZmlsZSB3aXRoIGEgdmFsaWQgYmxvYiBmaWxlIG5hbWUgaXMgZ29uZS4KKyAgICAgICAg
Ly8gTWFrZSBzdXJlIGFsbCBmYWtlIGJsb2IgZmlsZSBhcmUgZ29uZS4KICAgICAgICAgRVhQRUNU
X0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpv
dGhlckJsb2IxXSk7CiAKLSAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBmYWtlIGJsb2IgZmlsZXMg
d2l0aCBpbnZhbGlkIGJsb2IgZmlsZSBuYW1lcyBhcmUgc3RpbGwgdGhlcmUuCi0gICAgICAgIEVY
UEVDVF9UUlVFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0
aDpvdGhlckJsb2IyXSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKFtbTlNGaWxlTWFuYWdlciBkZWZh
dWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpvdGhlckJsb2IzXSk7Ci0gICAgICAgIEVYUEVD
VF9UUlVFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpv
dGhlckJsb2I0XSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShbW05TRmlsZU1hbmFnZXIgZGVmYXVs
dE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6b3RoZXJCbG9iMl0pOworICAgICAgICBFWFBFQ1Rf
RkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOm90
aGVyQmxvYjNdKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0
TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpvdGhlckJsb2I0XSk7CiAKICAgICAgICAgLy8gTWFr
ZSBzdXJlIGV2ZXJ5dGhpbmcgcmVsYXRlZCB0byB0aGUgZmFrZSBkYXRhYmFzZSBpcyBnb25lLgog
ICAgICAgICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxl
RXhpc3RzQXRQYXRoOmZha2VTaG1QYXRoXSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNvZGVwcm9qL3hjc2hhcmVkZGF0YS94Y3NjaGVtZXMv
V2ViS2l0VGVzdFJ1bm5lci54Y3NjaGVtZSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0
VGVzdFJ1bm5lci54Y29kZXByb2oveGNzaGFyZWRkYXRhL3hjc2NoZW1lcy9XZWJLaXRUZXN0UnVu
bmVyLnhjc2NoZW1lCmluZGV4IDlmOTgxYTNmZjFjMTkwMzU4NDAwMGIwNmZkZThiOGY5NjhkMDkw
MzEuLmNkOThkMTI5YjI5M2EyMGRkYTM3ZmU0Y2U3YWM4MmUwZTgwM2MyNmYgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2oveGNzaGFy
ZWRkYXRhL3hjc2NoZW1lcy9XZWJLaXRUZXN0UnVubmVyLnhjc2NoZW1lCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2oveGNzaGFyZWRkYXRhL3hj
c2NoZW1lcy9XZWJLaXRUZXN0UnVubmVyLnhjc2NoZW1lCkBAIC00MCw4ICs0MCwxMSBAQAogICAg
ICAgZGVidWdEb2N1bWVudFZlcnNpb25pbmcgPSAiWUVTIgogICAgICAgZGVidWdTZXJ2aWNlRXh0
ZW5zaW9uID0gImludGVybmFsIgogICAgICAgYWxsb3dMb2NhdGlvblNpbXVsYXRpb24gPSAiWUVT
Ij4KLSAgICAgIDxCdWlsZGFibGVQcm9kdWN0UnVubmFibGUKLSAgICAgICAgIHJ1bm5hYmxlRGVi
dWdnaW5nTW9kZSA9ICIwIj4KKyAgICAgIDxQYXRoUnVubmFibGUKKyAgICAgICAgIHJ1bm5hYmxl
RGVidWdnaW5nTW9kZSA9ICIwIgorICAgICAgICAgRmlsZVBhdGggPSAiL1VzZXJzL3NpaHVpbC9E
YXRhL1dlYktpdDEvT3BlblNvdXJjZS9XZWJLaXRCdWlsZC9EZWJ1Zy9XZWJLaXRUZXN0UnVubmVy
Ij4KKyAgICAgIDwvUGF0aFJ1bm5hYmxlPgorICAgICAgPE1hY3JvRXhwYW5zaW9uPgogICAgICAg
ICAgPEJ1aWxkYWJsZVJlZmVyZW5jZQogICAgICAgICAgICAgQnVpbGRhYmxlSWRlbnRpZmllciA9
ICJwcmltYXJ5IgogICAgICAgICAgICAgQmx1ZXByaW50SWRlbnRpZmllciA9ICI4REQ3NkY5NjA0
ODZBQTc2MDBEOTZCNUUiCkBAIC00OSw3ICs1MiwxMyBAQAogICAgICAgICAgICAgQmx1ZXByaW50
TmFtZSA9ICJXZWJLaXRUZXN0UnVubmVyIgogICAgICAgICAgICAgUmVmZXJlbmNlZENvbnRhaW5l
ciA9ICJjb250YWluZXI6V2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2oiPgogICAgICAgICAgPC9C
dWlsZGFibGVSZWZlcmVuY2U+Ci0gICAgICA8L0J1aWxkYWJsZVByb2R1Y3RSdW5uYWJsZT4KKyAg
ICAgIDwvTWFjcm9FeHBhbnNpb24+CisgICAgICA8Q29tbWFuZExpbmVBcmd1bWVudHM+CisgICAg
ICAgICA8Q29tbWFuZExpbmVBcmd1bWVudAorICAgICAgICAgICAgYXJndW1lbnQgPSAiL1VzZXJz
L3NpaHVpbC9EYXRhL1dlYktpdDEvT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
SW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvYWJvcnQtaW4taW5pdGlhbC11cGdyYWRlbmVlZGVk
Lmh0bWwiCisgICAgICAgICAgICBpc0VuYWJsZWQgPSAiWUVTIj4KKyAgICAgICAgIDwvQ29tbWFu
ZExpbmVBcmd1bWVudD4KKyAgICAgIDwvQ29tbWFuZExpbmVBcmd1bWVudHM+CiAgICA8L0xhdW5j
aEFjdGlvbj4KICAgIDxQcm9maWxlQWN0aW9uCiAgICAgICBidWlsZENvbmZpZ3VyYXRpb24gPSAi
UmVsZWFzZSIK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450863</attachid>
            <date>2022-02-03 21:12:52 -0800</date>
            <delta_ts>2022-02-03 23:03:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234925-20220203211251.patch</filename>
            <type>text/plain</type>
            <size>285450</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5MDg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDljMjQxMmNmODI0YjRiNTY1YTVlNWRi
YWQxNWFjZDRhY2RkZDA0MzMuLjg0OWUwMWYyNGIyN2M1YzU4ZGIxYjkzZWQ0NjNlZmNhOGY3YWY2
MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjItMDItMDMgIFNpaHVpIExpdSAgPHNpaHVpX2xp
dUBhcHBsZS5jb20+CisKKyAgICAgICAgTWFuYWdlIEluZGV4ZWREQiBzdG9yYWdlIGJ5IG9yaWdp
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0OTI1
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NzU1NTAxND4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBoZWxwZXIgZnVuY3Rpb24gdG8gZ2V0
IHRoZSB0YXJnZXQgZnJvbSBhIHN5bW9ibGljIGxpbmsgcGF0aC4KKworICAgICAgICAqIHd0Zi9G
aWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6OmdldFN5bWJvbGlj
TGlua1RhcmdldCk6CisgICAgICAgICogd3RmL0ZpbGVTeXN0ZW0uaDoKKwogMjAyMi0wMi0wMyAg
Um9iZXJ0IEplbm5lciAgPEplbm5lckBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwg
cmV2ZXJ0aW5nIHIyODg5MDIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjcyNmQyZjc5ZTk1OTdhN2ExYTZhOWEx
ZDQ2OTVhNWUzYTViOTI1Mi4uNWFhZmJjMzk3NGQ0M2UxNjUwOGY3ZTIyZGRlOTVmOGYzNGIwMjc3
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk2IEBACisyMDIyLTAyLTAzICBTaWh1aSBMaXUgIDxz
aWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIE1hbmFnZSBJbmRleGVkREIgc3RvcmFnZSBi
eSBvcmlnaW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzNDkyNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODc1NTUwMTQ+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQm90aCBXZWJLaXQgYW5kIFdlYktp
dExlZ2FjeSB1c2VkIElEQlNlcnZlciB0byBtYW5hZ2UgVW5pcXVlSURCRGF0YWJhc2VzLCBhbmQg
VW5pcXVlSURCRGF0YWJhc2UgcG9pbnRlZCB0byAKKyAgICAgICAgSURCU2VydmVyLiBOb3cgdGhh
dCBXZWJLaXQgdXNlcyBXZWJLaXQ6OklEQlN0b3JhZ2VNYW5hZ2VyIHRvIG1hbmFnZSBVbmlxdWVJ
REJEYXRhYmFzZXMuIFdlIHVudGllIHRoZSAKKyAgICAgICAga25vdCBiZXR3ZWVuIElEQlNlcnZl
ciBhbmQgVW5pcXVlSURCRGF0YWJhc2UgYnkgYWRkaW5nIGEgbmV3IGFic3RyYWN0IGNsYXNzIFVu
aXF1ZUlEQkRhdGFiYXNlTWFuYWdlciBhbmQgbWFrZQorICAgICAgICBVbmlxdWVJREJEYXRhYmFz
ZSBwb2ludCB0byBVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuCisKKyAgICAgICAgQWxzbywgYXMg
cXVvdGEgY2hlY2sgaXMgbm8gbG9uZ2VyIGFzeW5jIGFjY29yZGluZyB0byBjaGFuZ2VzIGluIFdl
YktpdCwgd2UgbmVlZCB0byB1cGRhdGUgb3BlcmF0aW9ucyBpbgorICAgICAgICBVbmlxdWVJREJE
YXRhYmFzZSB0byBhZG9wdCB0aGUgY2hhbmdlLgorCisgICAgICAgIENvdmVyZWQgYnkgZXhpc3Rp
bmcgdGVzdHMuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnQuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNl
cnZlcjo6SURCU2VydmVyOjpyZWdpc3RlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpJREJTZXJ2ZXI6OnVucmVnaXN0ZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpjcmVhdGVCYWNraW5nU3RvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OnVwZ3JhZGVkRGF0YWJhc2VEaXJlY3Rv
cnkpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OnJlZ2lzdGVyRGF0
YWJhc2VDb25uZWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
SURCU2VydmVyOjp1bnJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0aW9uKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpjbG9zZUFuZFRha2VVbmlxdWVJREJE
YXRhYmFzZSk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lE
QlNlcnZlci5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJC
YWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlJREJC
YWNraW5nU3RvcmU6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJTZXJ2ZXI6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuaDoK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlPYmplY3RTdG9yZTo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5T2JqZWN0U3RvcmU6Ok1lbW9y
eU9iamVjdFN0b3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5
T2JqZWN0U3RvcmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRl
SURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRl
SURCQmFja2luZ1N0b3JlOjpTUUxpdGVJREJCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmVuY29kZURhdGFiYXNlTmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVj
b2RlRGF0YWJhc2VOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURC
QmFja2luZ1N0b3JlOjpnZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbyk6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlQmFja2luZ1N0b3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpm
aWxlbmFtZUZvckRhdGFiYXNlTmFtZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZnVsbERhdGFiYXNlRGlyZWN0b3J5
V2l0aFVwZ3JhZGUpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpVbmlxdWVJREJEYXRhYmFzZTo6VW5pcXVlSURCRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6bWFuYWdlcik6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtQ3VycmVudE9wZW5PcGVy
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6
cGVyZm9ybUN1cnJlbnRPcGVuT3BlcmF0aW9uQWZ0ZXJTcGFjZUNoZWNrKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZUJhY2tpbmdTdG9yZSk6
CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVP
YmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFi
YXNlOjpkZWxldGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVu
aXF1ZUlEQkRhdGFiYXNlOjpyZW5hbWVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpjbGVhck9iamVjdFN0b3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZUluZGV4KToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZUluZGV4
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OnJlbmFt
ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6
OnB1dE9yQWRkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJh
c2U6OnB1dE9yQWRkQWZ0ZXJTcGFjZUNoZWNrKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZl
cjo6VW5pcXVlSURCRGF0YWJhc2U6OmdldFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRBbGxSZWNvcmRzKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmdldENvdW50KToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZVJlY29yZCk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuQ3Vyc29yKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6Oml0ZXJhdGVD
dXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6
Y29tbWl0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJ
REJEYXRhYmFzZTo6YWJvcnRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2
ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjphYm9ydEluUHJvZ3Jlc3NUcmFuc2FjdGlvbnMpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6aGFzRGF0YUluTWVt
b3J5IGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURC
RGF0YWJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJh
c2U6OnNlcnZlcik6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L1VuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbjo6VW5pcXVlSURCRGF0YWJhc2VDb25u
ZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VD
b25uZWN0aW9uOjp+VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uOjptYW5hZ2VyKToKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0
aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29u
bmVjdGlvbjo6c2VydmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXI6On5VbmlxdWVJREJEYXRhYmFz
ZU1hbmFnZXIpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJE
YXRhYmFzZVRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5p
cXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rp
b246On5VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5oOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJFcnJvci5oOgorICAgICAgICAoV2ViQ29yZTo6
SURCRXJyb3I6Om9wZXJhdG9yIGJvb2wgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L3NoYXJlZC9JREJSZXNvdXJjZUlkZW50aWZpZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlJl
c291cmNlSWRlbnRpZmllcjo6b3BlcmF0b3IhPSBjb25zdCk6CisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDIyLTAyLTAzICBCZW4gTmhhbSAgPG5oYW1A
YXBwbGUuY29tPgogCiAgICAgICAgIExvY2FsU3RvcmFnZSB2YWx1ZXMgc2hvdWxkIGJlIDgtYml0
IHN0cmluZ3MgaW4gbWVtb3J5IGlmIHBvc3NpYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGEyODE0OTliY2RlMDY5
Mzk4NjI1OTMzNDg0NmUwMzEzYTU4NDc1NjMuLjZmNzkwMTM2YzRlODEzYmRmNDY4ZjBmYzcwMjU4
NzBhYzliNjZlODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjY1IEBACisyMDIyLTAyLTAzICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIE1hbmFnZSBJbmRleGVkREIg
c3RvcmFnZSBieSBvcmlnaW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzNDkyNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODc1NTUwMTQ+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gbmV0d29yayBw
cm9jZXNzLCBJbmRleGVkREIgZGF0YSBpcyBtYW5hZ2VkIGJ5IFdlYktpdDo6V2ViSURCU2VydmVy
LiBFYWNoIHNlc3Npb24gb3ducyBhIFdlYklEQlNlcnZlciAKKyAgICAgICAgKElEQlNlcnZlcikg
YW5kIGVhY2ggSURCU2VydmVyIG93bnMgb25lIG9yIG1vcmUgVW5pcXVlSURCRGF0YWJhc2VzIChy
ZXNwcmVudGluZyBvbmUgYWN0dWFsIGRhdGFiYXNlIHRoYXQKKyAgICAgICAgSURCRGF0YWJhc2Ug
Y29ubmVjdHMgdG8sIGNhbiBiZSBpZGVudGlmaWVkIGJ5IHtzZXNzaW9uLCBvcmlnaW4sIG5hbWV9
KS4gTm93IHRoYXQgd2UgaGF2ZSBOZXR3b3JrU3RvcmFnZU1hbmFnZXIsIAorICAgICAgICB3aGlj
aCBtYW5hZ2VzIHNlc3Npb24gc3RvcmFnZSBieSBvcmlnaW4sIHdlIGNhbiBtZXJnZSBXZWJJREJT
ZXJ2ZXIgd2l0aCBOZXR3b3JrU3RvcmFnZU1hbmFnZXIsIHNpbmNlIEluZGV4ZWREQiAKKyAgICAg
ICAgc3RvcmFnZSBpcyBub3Qgc2hhcmVkIGFjcm9zcyBvcmlnaW5zLgorCisgICAgICAgIFRoZSBv
bGQgc3RydWN0dXJlIGlzOgorICAgICAgICBOZXR3b3JrU2Vzc2lvbiAtIFdlYklEQlNlcnZlciAt
IElEQlNlcnZlciAtIFVuaXF1ZUlEQkRhdGFiYXNlcworICAgICAgICBUaGUgbmV3IHN0cnVjdHVy
ZSBpczoKKyAgICAgICAgTmV0d29ya1Nlc3Npb24gLSBOZXR3b3JrU3RvcmFnZU1hbmFnZXIgLSBP
cmlnaW5TdG9yYWdlTWFuYWdlciAtIElEQlN0b3JhZ2VNYW5hZ2VyIC0gVW5pcXVlSURCRGF0YWJh
c2UKKworICAgICAgICBUbyBjb21wbGV0ZSB0aGlzIHRyYW5zaXRpb24sIHdlIG5lZWQgdG8gbWFr
ZSBhIGZldyBjaGFuZ2VzOgorICAgICAgICAxLiBXZWIgcHJvY2VzcyBub3cgc2VuZHMgSW5kZXhl
ZERCIHJlbGF0ZWQgbWVzc2FnZXMgdG8gTmV0d29ya1N0b3JhZ2VNYW5hZ2VyIGluc3RlYWQgb2Yg
V2ViSURCU2VydmVyLiAKKyAgICAgICAgMi4gU29tZSBtZXNzYWdlcyBhcmUgc2VudCB0byBvcGVy
YXRlIG9uIFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiBvciBVbmlxdWVJREJEYXRhYmFzZVRy
YW5zYWN0aW9uLCBhbmQgdGhleSAKKyAgICAgICAgdXNlIGlkZW50aWZpZXJzIHRvIHNwZWNpZnkg
dGhlIHRhcmdldC4gVGhlcmVmb3JlLCBOZXR3b3JrU3RvcmFnZU1hbmFnZXJzIG5lZWRzIHRvIGtu
b3cgdGhlIG1hcHBpbmcgYmV0d2VlbiAKKyAgICAgICAgaWRlbnRpZmllcnMgYW5kIHRhcmdldCBv
YmplY3RzLiBXZSBhZGQgYSBuZXcgSURCU3RvcmFnZVJlZ2lzdHJ5IGNsYXNzIHRvIHJlY29yZCB0
aGlzIG1hcHBpbmcuIEVhY2ggCisgICAgICAgIE5ldHdvcmtTdG9yYWdlTWFuYWdlciBvd25zIGEg
SURCU3RvcmFnZVJlZ2lzdHJ5IGFuZCBpdCBwYXNzZXMgSURCU3RvcmFnZVJlZ2lzdHJ5IHRvIElE
QlN0b3JhZ2VNYW5hZ2VyLAorICAgICAgICBJREJTdG9yYWdlTWFuYWdlciB3aWxsIHJlZ2lzdGVy
IG9iamVjdHMgdG8gSURCU3RvcmFnZVJlZ2lzdHJ5IGFuZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXIg
Y2FuIGRvIHNlYXJjaCB2aWEgCisgICAgICAgIElEQlN0b3JhZ2VSZWdpc3RyeS4KKyAgICAgICAg
My4gUXVvdGEgY2hlY2sgZm9yIEluZGV4ZWREQiBvcGVyYXRpb25zIGJlY29tZXMgYXN5bmMgYnkg
YWRkaW5nIG5ldyBRdW90YU1hbmFnZXIgY2xhc3MsIHdoaWNoIGlzIHNpbWlsYXIgdG8gCisgICAg
ICAgIFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXIgYnV0IHByb3ZpZGVzIGFzeW5jIGludGVy
ZmFjZXMuIAorICAgICAgICBXZSB1c2VkIHRvIGJsb2NrIHRoZSBJREJTZXJ2ZXIgdGhyZWFkIHdo
ZW4gaXQgaXMgd2FpdGluZyBmb3IgcXVvdGEgY2hlY2sgcmVzdWx0IGZyb20gVUkgcHJvY2Vzcywg
dGhpcyBpcyBmaW5lIAorICAgICAgICBiZWNhdXNlIElEQlNlcnZlciBydW5zIG9uIGl0cyBvd24g
dGhyZWFkLiBOb3cgdGhhdCBJREJTdG9yYWdlTWFuYWdlciBydW5zIG9uIHRoZSBzYW1lIHRocmVh
ZCBhcyB0aGUgb3RoZXIgCisgICAgICAgIHN0b3JhZ2UgdHlwZXMsIHdlIGNhbm5vdCBibG9jayB0
aGUgdGhyZWFkIG9uIHF1b3RhIGNoZWNrLgorICAgICAgICA0LiBSZW5hbWUgV2ViSURCQ29ubmVj
dGlvblRvQ2xpZW50IHRvIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQgdG8gcmVmbGVjdCB0
aGUgY2hhbmdlIG9uIHRoZSBzdHJ1Y3R1cmUuIEFsc28sCisgICAgICAgIElEQlN0b3JhZ2VDb25u
ZWN0aW9uVG9DbGllbnQgZG9lcyBub3Qga2VlcCByZWZlcmVuY2UgdG8gdGhlIElQQzo6Q29ubmVj
dGlvbiBub3csIGl0IG9ubHkgcmVjb3JkcyAKKyAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpVbmlx
dWVJRC4KKyAgICAgICAgNS4gSW5kZXhlZERCIGRhdGEgbWF5IGJlIHB1dCBpbiBkaWZmZXJlbnQg
dmVyc2lvbiBkaXJjdG9yaWVzLiBXZSB1c2VkIHRvIG1pZ3JhdGUgZGF0YWJhc2UgdG8gbmV3IHZl
cnNpb24gCisgICAgICAgIGRpcmV0b3J5IHdoZW4gdGhlIGRhdGFiYXNlIGlzIGFjY2Vzc2VkLiBB
cyBJREJTdG9yYWdlTWFuYWdlciBub3cgbWFuYWdlcyBJbmRleGVkREIgZGF0YSBvZiBvbmUgb3Jp
Z2luLCBpdCdzIAorICAgICAgICBzaW1wbGVyIGlmIGl0IG9ubHkga2VlcHMgdHJhY2sgb2Ygb25l
IGRpcmVjdG9yeS4gVGhlcmVmb3JlLCB3ZSBub3cgbWlncmF0ZSBhbGwgZGF0YWJhc2VzIG9mIG9u
ZSBvcmlnaW4KKyAgICAgICAgd2hlbiB0aGUgb3JpZ2luIGlzIGFjY2Vzc2VkIChzZWUgSURCU3Rv
cmFnZU1hbmFnZXI6OmlkYlN0b3JhZ2VPcmlnaW5EaXJlY3RvcnkpLiAKKworICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnVwZGF0ZVF1b3RhQmFzZWRP
blNwYWNlVXNhZ2VGb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzRm9ySW5kZXhlZERCKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkaWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzOjpjcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjphZGRXZWJzaXRlRGF0YVN0b3JlKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmZldGNoV2Vic2l0ZURhdGEpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZUFuZFJlc3RyaWN0V2Vic2l0ZURhdGFGb3JS
ZWdpc3RyYWJsZURvbWFpbnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVn
aXN0cmFibGVEb21haW5zV2l0aFdlYnNpdGVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OnByZXBhcmVUb1N1c3BlbmQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6cmVzdW1lKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlc2V0UXVv
dGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGlkSW5jcmVhc2VRdW90YSk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZW5hbWVPcmlnaW5JbldlYnNpdGVE
YXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnN0b3JhZ2VRdW90YU1hbmFn
ZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y29ubmVjdGlvblRvV2ViUHJv
Y2Vzc0Nsb3NlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzdXNwZW5kSURC
U2VydmVycyk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuaDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnNob3VsZFN1c3BlbmRJREJT
ZXJ2ZXJzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vz
c2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjppbnZhbGlkYXRlQW5k
Q2FuY2VsKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OmFkZFN0b3JhZ2VNYW5h
Z2VyU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjplbnN1cmVXZWJJ
REJTZXJ2ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6Y2xv
c2VJREJTZXJ2ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6
YWRkSW5kZXhlZERhdGFiYXNlU2Vzc2lvbik6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Nlc3Npb24uaDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246
OndlYklEQlNlcnZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9u
OjpoYXNJREJEYXRhYmFzZVBhdGggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNh
Y2hlU3RvcmFnZTo6RW5naW5lOjpzdG9yYWdlUGF0aCk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hl
U3RvcmFnZTo6RW5naW5lOjpkaXNrVXNhZ2UpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3Jh
Z2U6OkVuZ2luZTo6cmVxdWVzdFNwYWNlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9D
YWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3Jh
Z2U6OkNhY2hlczo6cmVxdWVzdFNwYWNlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9pb3Mv
TmV0d29ya1Byb2Nlc3NJT1MubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpz
ZXRJc0hvbGRpbmdMb2NrZWRGaWxlcyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFn
ZS9JREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9D
bGllbnQpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50Ojp+
SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3Jh
Z2VDb25uZWN0aW9uVG9DbGllbnQ6OmNvbm5lY3Rpb25Ub0NsaWVudCk6CisgICAgICAgIChXZWJL
aXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZEdldFJlc3VsdCk6CisgICAgICAg
IChXZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZERlbGV0ZURhdGFiYXNl
KToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkT3Bl
bkRhdGFiYXNlKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVu
dDo6ZGlkU3RhcnRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25u
ZWN0aW9uVG9DbGllbnQ6OmRpZEFib3J0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpJ
REJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRDb21taXRUcmFuc2FjdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZENyZWF0ZU9iamVj
dFN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6
ZGlkRGVsZXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVj
dGlvblRvQ2xpZW50OjpkaWRSZW5hbWVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OklE
QlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZENsZWFyT2JqZWN0U3RvcmUpOgorICAgICAg
ICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRDcmVhdGVJbmRleCk6
CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZERlbGV0
ZUluZGV4KToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6
ZGlkUmVuYW1lSW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVjdGlvblRv
Q2xpZW50OjpkaWRQdXRPckFkZCk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0
aW9uVG9DbGllbnQ6OmRpZEdldFJlY29yZCk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VD
b25uZWN0aW9uVG9DbGllbnQ6OmRpZEdldEFsbFJlY29yZHMpOgorICAgICAgICAoV2ViS2l0OjpJ
REJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRHZXRDb3VudCk6CisgICAgICAgIChXZWJL
aXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZERlbGV0ZVJlY29yZCk6CisgICAg
ICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZE9wZW5DdXJzb3Ip
OgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRJdGVy
YXRlQ3Vyc29yKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVu
dDo6ZGlkR2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKToKKyAgICAgICAgKFdlYktpdDo6
SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZmlyZVZlcnNpb25DaGFuZ2VFdmVudCk6Cisg
ICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZENsb3NlRnJv
bVNlcnZlcik6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6
Om5vdGlmeU9wZW5EQlJlcXVlc3RCbG9ja2VkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9z
dG9yYWdlL0lEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQuaDogQWRkZWQuCisgICAgICAgICog
TmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlTWFuYWdlci5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViS2l0OjptaWdyYXRlT3JpZ2luRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0
b3JhZ2VNYW5hZ2VyOjppZGJTdG9yYWdlT3JpZ2luRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktp
dDo6SURCU3RvcmFnZU1hbmFnZXI6OmlkYlN0b3JhZ2VTaXplKToKKyAgICAgICAgKFdlYktpdDo6
Z2V0T3JpZ2luc0ZvclZlcnNpb24pOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlTWFuYWdl
cjo6b3JpZ2luc09mSURCU3RvcmFnZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdl
TWFuYWdlcjo6SURCU3RvcmFnZU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdl
TWFuYWdlcjo6aXNBY3RpdmUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlTWFu
YWdlcjo6aGFzRGF0YUluTWVtb3J5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFn
ZU1hbmFnZXI6OmNsb3NlRGF0YWJhc2VzRm9yRGVsZXRpb24pOgorICAgICAgICAoV2ViS2l0OjpJ
REJTdG9yYWdlTWFuYWdlcjo6c3RvcERhdGFiYXNlQWN0aXZpdGllc0ZvclN1c3BlbmQpOgorICAg
ICAgICAoV2ViS2l0OjpJREJTdG9yYWdlTWFuYWdlcjo6Z2V0T3JDcmVhdGVVbmlxdWVJREJEYXRh
YmFzZSk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VNYW5hZ2VyOjpvcGVuRGF0YWJhc2Up
OgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlRGF0YWJhc2UpOgor
ICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlTWFuYWdlcjo6Z2V0QWxsRGF0YWJhc2VOYW1lc0Fu
ZFZlcnNpb25zKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZU1hbmFnZXI6Om9wZW5EQlJl
cXVlc3RDYW5jZWxsZWQpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlTWFuYWdlcjo6cmVn
aXN0ZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZU1hbmFnZXI6OnVu
cmVnaXN0ZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZU1hbmFnZXI6
OnJlZ2lzdGVyVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlTWFuYWdl
cjo6dW5yZWdpc3RlclRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZU1h
bmFnZXI6OmNyZWF0ZUJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VN
YW5hZ2VyOjpyZXF1ZXN0U3BhY2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2Uv
SURCU3RvcmFnZU1hbmFnZXIuaDogQWRkZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3Rv
cmFnZS9JREJTdG9yYWdlUmVnaXN0cnkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6SURC
U3RvcmFnZVJlZ2lzdHJ5OjpnZXRPckNyZWF0ZUNvbm5lY3Rpb25Ub0NsaWVudCk6CisgICAgICAg
IChXZWJLaXQ6OklEQlN0b3JhZ2VSZWdpc3RyeTo6cmVtb3ZlQ29ubmVjdGlvblRvQ2xpZW50KToK
KyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZVJlZ2lzdHJ5OjpyZWdpc3RlckNvbm5lY3Rpb24p
OgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlUmVnaXN0cnk6OnVucmVnaXN0ZXJDb25uZWN0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZVJlZ2lzdHJ5OjpyZWdpc3RlclRyYW5z
YWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZVJlZ2lzdHJ5Ojp1bnJlZ2lzdGVy
VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlUmVnaXN0cnk6OmdldENv
bm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlUmVnaXN0cnk6OmdldFRyYW5z
YWN0aW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VSZWdp
c3RyeS5oOiBBZGRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtT
dG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdl
cjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpOZXR3
b3JrU3RvcmFnZU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFn
ZXI6OmNhbkhhbmRsZVR5cGVzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5h
Z2VyOjpzdG9wUmVjZWl2aW5nTWVzc2FnZUZyb21Db25uZWN0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpsb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2VyKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkaWRJbmNyZWFzZVF1b3RhKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpnZXRBbGxPcmlnaW5zKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjptb3ZlRGF0YSk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6c3VzcGVuZCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6cmVnaXN0ZXJUZW1wb3JhcnlCbG9iRmlsZVBh
dGhzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpyZXF1ZXN0U3Bh
Y2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnJlc2V0UXVvdGFG
b3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpyZXNl
dFF1b3RhVXBkYXRlZEJhc2VkT25Vc2FnZUZvclRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrU3RvcmFnZU1hbmFnZXI6Om9wZW5EYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtTdG9yYWdlTWFuYWdlcjo6b3BlbkRCUmVxdWVzdENhbmNlbGxlZCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlRGF0YWJhc2UpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmVzdGFibGlzaFRyYW5zYWN0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkYXRhYmFzZUNvbm5lY3Rpb25Q
ZW5kaW5nQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmRh
dGFiYXNlQ29ubmVjdGlvbkNsb3NlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdl
TWFuYWdlcjo6YWJvcnRPcGVuQW5kVXBncmFkZU5lZWRlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudCk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6YWJvcnRUcmFuc2FjdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y29tbWl0VHJhbnNhY3Rpb24pOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmRpZEZpbmlzaEhhbmRsaW5n
VmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyOjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtT
dG9yYWdlTWFuYWdlcjo6ZGVsZXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrU3RvcmFnZU1hbmFnZXI6OnJlbmFtZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjbGVhck9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlSW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnJlbmFtZUluZGV4KToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1N0b3JhZ2VNYW5hZ2VyOjpwdXRPckFkZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtT
dG9yYWdlTWFuYWdlcjo6Z2V0UmVjb3JkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyOjpnZXRBbGxSZWNvcmRzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyOjpnZXRDb3VudCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFu
YWdlcjo6ZGVsZXRlUmVjb3JkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5h
Z2VyOjpvcGVuQ3Vyc29yKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2Vy
OjppdGVyYXRlQ3Vyc29yKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2Vy
OjpnZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIubWVzc2FnZXMuaW46CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0OjpTdG9yYWdl
QnVja2V0KToKKyAgICAgICAgKFdlYktpdDo6T3JpZ2luU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VC
dWNrZXQ6OnRvV2Vic2l0ZURhdGFUeXBlKToKKyAgICAgICAgKFdlYktpdDo6T3JpZ2luU3RvcmFn
ZU1hbmFnZXI6OlN0b3JhZ2VCdWNrZXQ6OnRvU3RvcmFnZUlkZW50aWZpZXIpOgorICAgICAgICAo
V2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldDo6aWRiU3RvcmFnZU1h
bmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1
Y2tldDo6ZXhpc3RpbmdJREJTdG9yYWdlTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdp
blN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0Ojppc0FjdGl2ZSBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0Ojppc0VtcHR5IGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6T3JpZ2luU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VCdWNr
ZXQ6OmRlbGV0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6
U3RvcmFnZUJ1Y2tldDo6bW92ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdl
TWFuYWdlcjo6U3RvcmFnZUJ1Y2tldDo6ZmV0Y2hEYXRhVHlwZXNJbkxpc3RGcm9tTWVtb3J5KToK
KyAgICAgICAgKFdlYktpdDo6T3JpZ2luU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VCdWNrZXQ6OmZl
dGNoRGF0YVR5cGVzSW5MaXN0RnJvbURpc2spOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9y
YWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldDo6ZGVsZXRlSURCU3RvcmFnZURhdGEpOgorICAgICAg
ICAoV2ViS2l0OjpjcmVhdGVRdW90YU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5T
dG9yYWdlTWFuYWdlcjo6T3JpZ2luU3RvcmFnZU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpP
cmlnaW5TdG9yYWdlTWFuYWdlcjo6ZGVmYXVsdEJ1Y2tldCk6CisgICAgICAgIChXZWJLaXQ6Ok9y
aWdpblN0b3JhZ2VNYW5hZ2VyOjpxdW90YU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpPcmln
aW5TdG9yYWdlTWFuYWdlcjo6aWRiU3RvcmFnZU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpP
cmlnaW5TdG9yYWdlTWFuYWdlcjo6ZXhpc3RpbmdJREJTdG9yYWdlTWFuYWdlcik6CisgICAgICAg
IChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjptb3ZlRGF0YSk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL3N0b3JhZ2UvUXVvdGFNYW5hZ2VyLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OlF1b3RhTWFuYWdlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UXVvdGFNYW5h
Z2VyOjpRdW90YU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpRdW90YU1hbmFnZXI6OnJlcXVl
c3RTcGFjZSk6CisgICAgICAgIChXZWJLaXQ6OlF1b3RhTWFuYWdlcjo6aGFuZGxlUmVxdWVzdHMp
OgorICAgICAgICAoV2ViS2l0OjpRdW90YU1hbmFnZXI6OmdyYW50V2l0aEN1cnJlbnRRdW90YSk6
CisgICAgICAgIChXZWJLaXQ6OlF1b3RhTWFuYWdlcjo6Z3JhbnRGYXN0UGF0aCk6CisgICAgICAg
IChXZWJLaXQ6OlF1b3RhTWFuYWdlcjo6ZGlkSW5jcmVhc2VRdW90YSk6CisgICAgICAgIChXZWJL
aXQ6OlF1b3RhTWFuYWdlcjo6cmVzZXRRdW90YVVwZGF0ZWRCYXNlZE9uVXNhZ2VGb3JUZXN0aW5n
KToKKyAgICAgICAgKFdlYktpdDo6UXVvdGFNYW5hZ2VyOjpyZXNldFF1b3RhRm9yVGVzdGluZyk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9RdW90YU1hbmFnZXIuaDogQWRkZWQu
CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICh0eXBlc190
aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKToKKyAgICAgICAgKiBTaGFyZWQvV2Vic2l0
ZURhdGEvUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLmg6IEFkZGVkLgorICAgICAgICAq
IFNoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oOgorICAgICAgICAqIFNvdXJjZXMu
dHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjppbmNyZWFzZVF1b3RhKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnBlclRoaXJkUGFydHlPcmlnaW5TdG9y
YWdlUXVvdGEgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRQ
ZXJPcmlnaW5RdW90YSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb246OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24u
aDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpkZWxldGVE
YXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6b3Bl
bkRhdGFiYXNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjph
Ym9ydFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvU2Vy
dmVyOjpjb21taXRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rp
b25Ub1NlcnZlcjo6ZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmNyZWF0ZU9iamVjdFN0
b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpkZWxldGVP
YmplY3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6
cmVuYW1lT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9T
ZXJ2ZXI6OmNsZWFyT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0
aW9uVG9TZXJ2ZXI6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVj
dGlvblRvU2VydmVyOjpkZWxldGVJbmRleCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5l
Y3Rpb25Ub1NlcnZlcjo6cmVuYW1lSW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25u
ZWN0aW9uVG9TZXJ2ZXI6OnB1dE9yQWRkKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVj
dGlvblRvU2VydmVyOjpnZXRSZWNvcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0
aW9uVG9TZXJ2ZXI6OmdldEFsbFJlY29yZHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25u
ZWN0aW9uVG9TZXJ2ZXI6OmdldENvdW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVj
dGlvblRvU2VydmVyOjpkZWxldGVSZWNvcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25u
ZWN0aW9uVG9TZXJ2ZXI6Om9wZW5DdXJzb3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25u
ZWN0aW9uVG9TZXJ2ZXI6Oml0ZXJhdGVDdXJzb3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJD
b25uZWN0aW9uVG9TZXJ2ZXI6OmVzdGFibGlzaFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpkYXRhYmFzZUNvbm5lY3Rpb25QZW5kaW5nQ2xv
c2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRhdGFiYXNl
Q29ubmVjdGlvbkNsb3NlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub1Nl
cnZlcjo6YWJvcnRPcGVuQW5kVXBncmFkZU5lZWRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYklE
QkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudCk6CisgICAgICAg
IChXZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6b3BlbkRCUmVxdWVzdENhbmNlbGxl
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Z2V0QWxsRGF0
YWJhc2VOYW1lc0FuZFZlcnNpb25zKToKKwogMjAyMi0wMi0wMyAgU2lodWkgTGl1ICA8c2lodWlf
bGl1QGFwcGxlLmNvbT4KIAogICAgICAgICBEZWxheSB3cml0aW5nIG9yaWdpbiBmaWxlIGluIE5l
dHdvcmtTdG9yYWdlTWFuYWdlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwppbmRleCBlNmJhNzMyMmMzNDhl
Y2RlNDc5NGUwOTQ5OTViYWI0ODk2YmY1YTQ5Li5mMTQ2MDI5MTQzMjM0NGM1N2ZmMDY0YTdkZTVk
N2U5MDZkNGVlNzRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIy
LTAyLTAzICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIE1hbmFn
ZSBJbmRleGVkREIgc3RvcmFnZSBieSBvcmlnaW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDkyNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODc1
NTUwMTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBTdG9yYWdlL0luUHJvY2Vzc0lEQlNlcnZlci5jcHA6CisgICAgICAgIChJblByb2Nlc3NJREJT
ZXJ2ZXI6OnF1b3RhTWFuYWdlcik6CisKIDIwMjItMDItMDIgIEVsbGlvdHQgV2lsbGlhbXMgIDxl
bXdAYXBwbGUuY29tPgogCiAgICAgICAgIFtYY29kZV0gRml4IHJlZHVuZGFudCBleGVjdXRpb24g
b2YgIkNoZWNrIFZUYWJsZXMuLi4iIHNjcmlwdApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
RmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAppbmRleCAzODgz
YWMyNjYzZDBhMjAyMzJjYjVlMDliNGU0NTk2OGIwMDE2N2I5Li41MDQxMDNlZDBlNGMxZTAzYzEw
OWY0ZjdmMTljODhkODlhMGZmYmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lz
dGVtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcApAQCAtNjYwLDYgKzY2
MCwxNSBAQCBib29sIGNyZWF0ZVN5bWJvbGljTGluayhjb25zdCBTdHJpbmcmIHRhcmdldFBhdGgs
IGNvbnN0IFN0cmluZyYgc3ltYm9saWNMaW5rUGF0aAogICAgIHJldHVybiAhZWM7CiB9CiAKK1N0
cmluZyBnZXRTeW1ib2xpY0xpbmtUYXJnZXQoY29uc3QgU3RyaW5nJiBzeW1ib2xpY0xpbmtQYXRo
KQoreworICAgIGF1dG8gZmlsZVN5c3RlbVBhdGggPSB0b1N0ZEZpbGVTeXN0ZW1QYXRoKHN5bWJv
bGljTGlua1BhdGgpOworICAgIGlmICghc3RkOjpmaWxlc3lzdGVtOjppc19zeW1saW5rKGZpbGVT
eXN0ZW1QYXRoKSkKKyAgICAgICAgcmV0dXJuIHN5bWJvbGljTGlua1BhdGg7CisKKyAgICByZXR1
cm4gZnJvbVN0ZEZpbGVTeXN0ZW1QYXRoKHN0ZDo6ZmlsZXN5c3RlbTo6cmVhZF9zeW1saW5rKGZp
bGVTeXN0ZW1QYXRoKSk7Cit9CisKIGJvb2wgaGFyZExpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQ
YXRoLCBjb25zdCBTdHJpbmcmIGxpbmtQYXRoKQogewogICAgIHN0ZDo6ZXJyb3JfY29kZSBlYzsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9XVEYvd3Rm
L0ZpbGVTeXN0ZW0uaAppbmRleCBjZTY4MTI4NjBhMDBmOTAyZjI5OTgzZjQ4Y2IxY2ExZWQxOGI5
MDk3Li45ZDhlNDliNTE4YzRlMGQ0ZjMyNmY0YzRhMWNkNzc3ZTNiMjg4ZmUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKKysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5
c3RlbS5oCkBAIC0xMjcsNiArMTI3LDcgQEAgV1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0aW9u
YWw8dWludDY0X3Q+IHZvbHVtZUZyZWVTcGFjZShjb25zdCBTdHJpbmcmKTsKIFdURl9FWFBPUlRf
UFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiB2b2x1bWVGaWxlQmxvY2tTaXplKGNvbnN0
IFN0cmluZyYpOwogV1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0
RmlsZURldmljZUlkKGNvbnN0IENTdHJpbmcmKTsKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGNy
ZWF0ZVN5bWJvbGljTGluayhjb25zdCBTdHJpbmcmIHRhcmdldFBhdGgsIGNvbnN0IFN0cmluZyYg
c3ltYm9saWNMaW5rUGF0aCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGdldFN5bWJvbGlj
TGlua1RhcmdldChjb25zdCBTdHJpbmcmIHN5bWJvbGljTGlua1BhdGgpOwogV1RGX0VYUE9SVF9Q
UklWQVRFIFN0cmluZyBjcmVhdGVUZW1wb3JhcnlaaXBBcmNoaXZlKGNvbnN0IFN0cmluZyYgZGly
ZWN0b3J5KTsKIAogZW51bSBjbGFzcyBGaWxlVHlwZSB7IFJlZ3VsYXIsIERpcmVjdG9yeSwgU3lt
Ym9saWNMaW5rIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIv
U291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCA2Y2IxNzQ1OWE3ZGE4NGY1YTI2Mjk5
ZDY3MDhiMmM3YjczYzBkNmM2Li5kNGQzZjZlZGVkMmYxYTgyNjExYmRkMWNiOGU5MmZhZWE0YjBi
YjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTIyOSw2ICsyMjksNyBAQCBzZXQoV2ViQ29yZV9Q
UklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1Nl
cnZlck9wZW5EQlJlcXVlc3QuaAogICAgIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJ
REJEYXRhYmFzZS5oCiAgICAgTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFi
YXNlQ29ubmVjdGlvbi5oCisgICAgTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRh
dGFiYXNlTWFuYWdlci5oCiAgICAgTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRh
dGFiYXNlVHJhbnNhY3Rpb24uaAogCiAgICAgTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luZGV4
S2V5LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRh
dGFiYXNlSWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2VJZGVudGlmaWVyLmgKaW5kZXggNmMwYjFiNGYyYWIwYzAzMzA3NjY1NGVhNGIyNzY1
NTk0NDU4OTUzNi4uN2YwOWJmYjMyZDUxZTk3ZmE3ZWQ0ZTQ1ZDUxMTMzOGU1YjgxMTdlOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVu
dGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJh
c2VJZGVudGlmaWVyLmgKQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNUcmFu
c2llbnQoKSBjb25zdCB7IHJldHVybiBtX2lzVHJhbnNpZW50OyB9CiAKICAgICBTdHJpbmcgZGF0
YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9vdChjb25zdCBTdHJpbmcmIHJvb3REaXJlY3Rvcnks
IGNvbnN0IFN0cmluZyYgdmVyc2lvblN0cmluZz0idjEiKSBjb25zdDsKLSAgICBzdGF0aWMgU3Ry
aW5nIGRhdGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVUb1Jvb3QoY29uc3QgU2VjdXJpdHlPcmlnaW5E
YXRhJiB0b3BMZXZlbE9yaWdpbiwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcGVuaW5nT3Jp
Z2luLCBjb25zdCBTdHJpbmcmIHJvb3REaXJlY3RvcnksIGNvbnN0IFN0cmluZyYgdmVyc2lvblN0
cmluZyk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBkYXRhYmFzZURpcmVjdG9y
eVJlbGF0aXZlVG9Sb290KGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgdG9wTGV2ZWxPcmlnaW4s
IGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3BlbmluZ09yaWdpbiwgY29uc3QgU3RyaW5nJiBy
b290RGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIHZlcnNpb25TdHJpbmcpOwogCiAgICAgdGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBs
YXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPElEQkRhdGFiYXNlSWRlbnRp
Zmllcj4gZGVjb2RlKERlY29kZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnQuaAppbmRl
eCAyN2Y3MjY5MTlmMTQyMWYyMWE1ZjAzZmZkZmMxNzZkNGM0YmRmM2MyLi5mMDVhYzJmOGM4MmE4
MDljMjcxYzlkZjU5N2Y5NjQ3MzE5ZWY2NDYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQ29ubmVjdGlvblRvQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkNvbm5lY3Rpb25Ub0NsaWVu
dC5oCkBAIC03NCwxMSArNzQsMTEgQEAgcHVibGljOgogCiAgICAgdm9pZCBub3RpZnlPcGVuREJS
ZXF1ZXN0QmxvY2tlZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlm
aWVyLCB1aW50NjRfdCBvbGRWZXJzaW9uLCB1aW50NjRfdCBuZXdWZXJzaW9uKTsKIAotICAgIHZv
aWQgZGlkR2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKGNvbnN0IElEQlJlc291cmNlSWRl
bnRpZmllciYsIFZlY3RvcjxJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiYmKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGRpZEdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhjb25zdCBJ
REJSZXNvdXJjZUlkZW50aWZpZXImLCBWZWN0b3I8SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbj4m
Jik7CiAKICAgICB2b2lkIHJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0aW9uKFVuaXF1ZUlEQkRhdGFi
YXNlQ29ubmVjdGlvbiYpOwogICAgIHZvaWQgdW5yZWdpc3RlckRhdGFiYXNlQ29ubmVjdGlvbihV
bmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mKTsKLSAgICB2b2lkIGNvbm5lY3Rpb25Ub0NsaWVu
dENsb3NlZCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29ubmVjdGlvblRvQ2xpZW50Q2xv
c2VkKCk7CiAgICAgYm9vbCBpc0Nsb3NlZCgpIHsgcmV0dXJuIG1faXNDbG9zZWQ7IH0KICAgICB2
b2lkIGNsZWFyRGVsZWdhdGUoKSB7IG1fZGVsZWdhdGUgPSBudWxscHRyOyB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAK
aW5kZXggZDI2NjkzMTgwODQ2YWY2NjY4OWUxN2FlYTNmZjk5NzE5NTVhZTM2ZS4uNGJhZDQ0MmIx
YjNhOWE0MTc4NTkwNDJmODE2NTc3ZTA3YjEzYmE4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKQEAgLTEwMSwxMyAr
MTAxLDEzIEBAIHZvaWQgSURCU2VydmVyOjp1bnJlZ2lzdGVyVHJhbnNhY3Rpb24oVW5pcXVlSURC
RGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCiAgICAgbV90cmFuc2FjdGlvbnMucmVt
b3ZlKHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCkpOwogfQogCi12b2lkIElEQlNlcnZl
cjo6cmVnaXN0ZXJEYXRhYmFzZUNvbm5lY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9u
JiBjb25uZWN0aW9uKQordm9pZCBJREJTZXJ2ZXI6OnJlZ2lzdGVyQ29ubmVjdGlvbihVbmlxdWVJ
REJEYXRhYmFzZUNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiB7CiAgICAgQVNTRVJUKCFtX2RhdGFi
YXNlQ29ubmVjdGlvbnMuY29udGFpbnMoY29ubmVjdGlvbi5pZGVudGlmaWVyKCkpKTsKICAgICBt
X2RhdGFiYXNlQ29ubmVjdGlvbnMuc2V0KGNvbm5lY3Rpb24uaWRlbnRpZmllcigpLCAmY29ubmVj
dGlvbik7CiB9CiAKLXZvaWQgSURCU2VydmVyOjp1bnJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0aW9u
KFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYgY29ubmVjdGlvbikKK3ZvaWQgSURCU2VydmVy
Ojp1bnJlZ2lzdGVyQ29ubmVjdGlvbihVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24pCiB7CiAgICAgQVNTRVJUKG1fZGF0YWJhc2VDb25uZWN0aW9ucy5jb250YWlucyhjb25u
ZWN0aW9uLmlkZW50aWZpZXIoKSkpOwogICAgIG1fZGF0YWJhc2VDb25uZWN0aW9ucy5yZW1vdmUo
Y29ubmVjdGlvbi5pZGVudGlmaWVyKCkpOwpAQCAtMTI4LDEzICsxMjgsMTMgQEAgc3RkOjp1bmlx
dWVfcHRyPElEQkJhY2tpbmdTdG9yZT4gSURCU2VydmVyOjpjcmVhdGVCYWNraW5nU3RvcmUoY29u
c3QgSURCRGF0YWJhc2UKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBpZiAo
bV9kYXRhYmFzZURpcmVjdG9yeVBhdGguaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxNZW1vcnlJREJCYWNraW5nU3RvcmU+KG1fc2Vzc2lvbklELCBpZGVudGlmaWVyKTsKKyAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TWVtb3J5SURCQmFja2luZ1N0b3JlPihpZGVudGlmaWVy
KTsKIAogICAgIEFTU0VSVCghbV9zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSk7CiAgICAgaWYgKGlk
ZW50aWZpZXIuaXNUcmFuc2llbnQoKSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TWVtb3J5
SURCQmFja2luZ1N0b3JlPihtX3Nlc3Npb25JRCwgaWRlbnRpZmllcik7CisgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPE1lbW9yeUlEQkJhY2tpbmdTdG9yZT4oaWRlbnRpZmllcik7CiAKLSAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxTUUxpdGVJREJCYWNraW5nU3RvcmU+KG1fc2Vzc2lvbklELCBpZGVu
dGlmaWVyLCBtX2RhdGFiYXNlRGlyZWN0b3J5UGF0aCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8
U1FMaXRlSURCQmFja2luZ1N0b3JlPihpZGVudGlmaWVyLCB1cGdyYWRlZERhdGFiYXNlRGlyZWN0
b3J5KGlkZW50aWZpZXIpKTsKIH0KIAogdm9pZCBJREJTZXJ2ZXI6Om9wZW5EYXRhYmFzZShjb25z
dCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEpCkBAIC0xNzcsMTcgKzE3Nyw2IEBAIHZvaWQg
SURCU2VydmVyOjpkZWxldGVEYXRhYmFzZShjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERh
dGEpCiAgICAgICAgIG1fdW5pcXVlSURCRGF0YWJhc2VNYXAucmVtb3ZlKGRhdGFiYXNlLT5pZGVu
dGlmaWVyKCkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8VW5pcXVlSURCRGF0YWJhc2U+IElEQlNl
cnZlcjo6Y2xvc2VBbmRUYWtlVW5pcXVlSURCRGF0YWJhc2UoVW5pcXVlSURCRGF0YWJhc2UmIGRh
dGFiYXNlKQotewotICAgIExPRyhJbmRleGVkREIsICJJREJTZXJ2ZXI6OmNsb3NlVW5pcXVlSURC
RGF0YWJhc2UiKTsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotCi0gICAgYXV0byB1bmlx
dWVQb2ludGVyID0gbV91bmlxdWVJREJEYXRhYmFzZU1hcC50YWtlKGRhdGFiYXNlLmlkZW50aWZp
ZXIoKSk7Ci0gICAgQVNTRVJUKHVuaXF1ZVBvaW50ZXIpOwotCi0gICAgcmV0dXJuIHVuaXF1ZVBv
aW50ZXI7Ci19Ci0KIHZvaWQgSURCU2VydmVyOjphYm9ydFRyYW5zYWN0aW9uKGNvbnN0IElEQlJl
c291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKQogewogICAgIExPRyhJbmRl
eGVkREIsICJJREJTZXJ2ZXI6OmFib3J0VHJhbnNhY3Rpb24iKTsKQEAgLTc1MCw3ICs3MzksNyBA
QCB2b2lkIElEQlNlcnZlcjo6cmVuYW1lT3JpZ2luKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSYgb2xkT3JpZ2luLCBjb25zdAogICAgICAgICBGaWxlU3lzdGVtOjptb3ZlRmlsZShv
bGRPcmlnaW5QYXRoLCBuZXdPcmlnaW5QYXRoKTsKIH0KIAotU3RvcmFnZVF1b3RhTWFuYWdlcjo6
RGVjaXNpb24gSURCU2VydmVyOjpyZXF1ZXN0U3BhY2UoY29uc3QgQ2xpZW50T3JpZ2luJiBvcmln
aW4sIHVpbnQ2NF90IHRhc2tTaXplKSBXVEZfSUdOT1JFU19USFJFQURfU0FGRVRZX0FOQUxZU0lT
Cit2b2lkIElEQlNlcnZlcjo6cmVxdWVzdFNwYWNlKGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2lu
LCB1aW50NjRfdCB0YXNrU2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikgV1RGX0lHTk9SRVNfVEhSRUFEX1NBRkVUWV9BTkFMWVNJUwogewogICAg
IEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVChtX2xvY2suaXNIZWxkKCkpOwpA
QCAtNzYyLDcgKzc1MSw3IEBAIFN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uIElEQlNlcnZl
cjo6cmVxdWVzdFNwYWNlKGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2luCiAgICAgcmVzdWx0ID0g
bV9zcGFjZVJlcXVlc3RlcihvcmlnaW4sIHRhc2tTaXplKTsKICAgICBtX2xvY2subG9jaygpOwog
Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihyZXN1bHQgPT0gU3Rv
cmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb246OkdyYW50KTsKIH0KIAogdWludDY0X3QgSURCU2Vy
dmVyOjpkaXNrVXNhZ2UoY29uc3QgU3RyaW5nJiByb290RGlyZWN0b3J5LCBjb25zdCBDbGllbnRP
cmlnaW4mIG9yaWdpbikKQEAgLTc4NCw2ICs3NzMsMjMgQEAgdm9pZCBJREJTZXJ2ZXI6OnVwZ3Jh
ZGVGaWxlc0lmTmVjZXNzYXJ5KCkKICAgICAgICAgRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9y
aWVzKG5ld1ZlcnNpb25EaXJlY3RvcnkpOwogfQogCitTdHJpbmcgSURCU2VydmVyOjp1cGdyYWRl
ZERhdGFiYXNlRGlyZWN0b3J5KGNvbnN0IFdlYkNvcmU6OklEQkRhdGFiYXNlSWRlbnRpZmllciYg
aWRlbnRpZmllcikKK3sKKyAgICBTdHJpbmcgb2xkT3JpZ2luRGlyZWN0b3J5ID0gaWRlbnRpZmll
ci5kYXRhYmFzZURpcmVjdG9yeVJlbGF0aXZlVG9Sb290KG1fZGF0YWJhc2VEaXJlY3RvcnlQYXRo
LCAidjAiKTsKKyAgICBTdHJpbmcgb2xkRGF0YWJhc2VEaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQob2xkT3JpZ2luRGlyZWN0b3J5LCBTUUxpdGVJREJCYWNr
aW5nU3RvcmU6OmVuY29kZURhdGFiYXNlTmFtZShpZGVudGlmaWVyLmRhdGFiYXNlTmFtZSgpKSk7
CisgICAgU3RyaW5nIG5ld09yaWdpbkRpcmVjdG9yeSA9IGlkZW50aWZpZXIuZGF0YWJhc2VEaXJl
Y3RvcnlSZWxhdGl2ZVRvUm9vdChtX2RhdGFiYXNlRGlyZWN0b3J5UGF0aCwgInYxIik7CisgICAg
U3RyaW5nIGZpbGVOYW1lSGFzaCA9IFNRTGl0ZUZpbGVTeXN0ZW06OmNvbXB1dGVIYXNoRm9yRmls
ZU5hbWUoaWRlbnRpZmllci5kYXRhYmFzZU5hbWUoKSk7CisgICAgU3RyaW5nIG5ld0RhdGFiYXNl
RGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG5ld09yaWdp
bkRpcmVjdG9yeSwgZmlsZU5hbWVIYXNoKTsKKyAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0
b3JpZXMobmV3RGF0YWJhc2VEaXJlY3RvcnkpOworCisgICAgaWYgKEZpbGVTeXN0ZW06OmZpbGVF
eGlzdHMob2xkRGF0YWJhc2VEaXJlY3RvcnkpKSB7CisgICAgICAgIEZpbGVTeXN0ZW06Om1vdmVG
aWxlKG9sZERhdGFiYXNlRGlyZWN0b3J5LCBuZXdEYXRhYmFzZURpcmVjdG9yeSk7CisgICAgICAg
IEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KG9sZE9yaWdpbkRpcmVjdG9yeSk7Cisg
ICAgfQorCisgICAgcmV0dXJuIG5ld0RhdGFiYXNlRGlyZWN0b3J5OworfQorCiBib29sIElEQlNl
cnZlcjo6aGFzRGF0YWJhc2VBY3Rpdml0aWVzT25NYWluVGhyZWFkKCkgY29uc3QKIHsKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5oCmluZGV4IGQ4ODM2NDlhNWM4ZDViNTlmMDJjMmJk
YWNkZGU2NzhhMWNhM2M0MmYuLmI0MzEzZDlhMTA2MDhiN2QzNDJmNmIwODc1YmM3NjQ2MmY3YzAx
NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9J
REJTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
SURCU2VydmVyLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJTdG9yYWdlUXVvdGFNYW5h
Z2VyLmgiCiAjaW5jbHVkZSAiVW5pcXVlSURCRGF0YWJhc2UuaCIKICNpbmNsdWRlICJVbmlxdWVJ
REJEYXRhYmFzZUNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJVbmlxdWVJREJEYXRhYmFzZU1hbmFn
ZXIuaCIKICNpbmNsdWRlIDxwYWwvSHlzdGVyZXNpc0FjdGl2aXR5Lmg+CiAjaW5jbHVkZSA8cGFs
L1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZFRhc2tIYW5kbGVyLmg+CkBA
IC00OCw4ICs0OSw3IEBAIHN0cnVjdCBJREJHZXRSZWNvcmREYXRhOwogCiBuYW1lc3BhY2UgSURC
U2VydmVyIHsKIAotY2xhc3MgSURCU2VydmVyIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKK2NsYXNzIElEQlNlcnZlciA6IHB1YmxpYyBVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIgewog
cHVibGljOgogICAgIHVzaW5nIFN0b3JhZ2VRdW90YU1hbmFnZXJTcGFjZVJlcXVlc3RlciA9IEZ1
bmN0aW9uPFN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uKGNvbnN0IENsaWVudE9yaWdpbiYs
IHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkKT47CiAgICAgV0VCQ09SRV9FWFBPUlQgSURCU2VydmVy
KFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwgU3Rv
cmFnZVF1b3RhTWFuYWdlclNwYWNlUmVxdWVzdGVyJiYsIExvY2smKTsKQEAgLTg4LDE1ICs4OCwx
MSBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldEFsbERhdGFiYXNlTmFt
ZXNBbmRWZXJzaW9ucyhJREJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJ
ZGVudGlmaWVyJiwgY29uc3QgQ2xpZW50T3JpZ2luJik7CiAKLQotICAgIHZvaWQgcmVnaXN0ZXJE
YXRhYmFzZUNvbm5lY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJik7Ci0gICAgdm9p
ZCB1bnJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlv
biYpOwotICAgIHZvaWQgcmVnaXN0ZXJUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5z
YWN0aW9uJik7Ci0gICAgdm9pZCB1bnJlZ2lzdGVyVHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJh
c2VUcmFuc2FjdGlvbiYpOwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPFVuaXF1ZUlEQkRhdGFiYXNl
PiBjbG9zZUFuZFRha2VVbmlxdWVJREJEYXRhYmFzZShVbmlxdWVJREJEYXRhYmFzZSYpOwotCi0g
ICAgc3RkOjp1bmlxdWVfcHRyPElEQkJhY2tpbmdTdG9yZT4gY3JlYXRlQmFja2luZ1N0b3JlKGNv
bnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYpOworICAgIHZvaWQgcmVnaXN0ZXJDb25uZWN0aW9u
KFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYpIGZpbmFsOworICAgIHZvaWQgdW5yZWdpc3Rl
ckNvbm5lY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJikgZmluYWw7CisgICAgdm9p
ZCByZWdpc3RlclRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mKSBmaW5h
bDsKKyAgICB2b2lkIHVucmVnaXN0ZXJUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5z
YWN0aW9uJikgZmluYWw7CisgICAgc3RkOjp1bmlxdWVfcHRyPElEQkJhY2tpbmdTdG9yZT4gY3Jl
YXRlQmFja2luZ1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYpIGZpbmFsOwogCiAg
ICAgV0VCQ09SRV9FWFBPUlQgSGFzaFNldDxTZWN1cml0eU9yaWdpbkRhdGE+IGdldE9yaWdpbnMo
KSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsb3NlQW5kRGVsZXRlRGF0YWJhc2Vz
TW9kaWZpZWRTaW5jZShXYWxsVGltZSk7CkBAIC0xMDQsNyArMTAwLDcgQEAgcHVibGljOgogICAg
IHZvaWQgY2xvc2VEYXRhYmFzZXNGb3JPcmlnaW5zKGNvbnN0IFZlY3RvcjxTZWN1cml0eU9yaWdp
bkRhdGE+JiwgRnVuY3Rpb248Ym9vbChjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBD
bGllbnRPcmlnaW4mKT4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW5hbWVPcmlnaW4o
Y29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJik7CiAKLSAgICBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbiByZXF1
ZXN0U3BhY2UoY29uc3QgQ2xpZW50T3JpZ2luJiwgdWludDY0X3QgdGFza1NpemUpOworICAgIHZv
aWQgcmVxdWVzdFNwYWNlKGNvbnN0IENsaWVudE9yaWdpbiYsIHVpbnQ2NF90IHNpemUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyB1aW50NjRfdCBkaXNrVXNhZ2UoY29uc3QgU3RyaW5nJiByb290RGlyZWN0b3J5LCBjb25z
dCBDbGllbnRPcmlnaW4mKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzRGF0YWJhc2VB
Y3Rpdml0aWVzT25NYWluVGhyZWFkKCkgY29uc3Q7CkBAIC0xMTQsNiArMTEwLDcgQEAgcHJpdmF0
ZToKICAgICBVbmlxdWVJREJEYXRhYmFzZSYgZ2V0T3JDcmVhdGVVbmlxdWVJREJEYXRhYmFzZShj
b25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImKTsKIAogICAgIHZvaWQgdXBncmFkZUZpbGVzSWZO
ZWNlc3NhcnkoKTsKKyAgICBTdHJpbmcgdXBncmFkZWREYXRhYmFzZURpcmVjdG9yeShjb25zdCBX
ZWJDb3JlOjpJREJEYXRhYmFzZUlkZW50aWZpZXImKTsKICAgICB2b2lkIHJlbW92ZURhdGFiYXNl
c01vZGlmaWVkU2luY2VGb3JWZXJzaW9uKFdhbGxUaW1lLCBjb25zdCBTdHJpbmcmKTsKICAgICB2
b2lkIHJlbW92ZURhdGFiYXNlc1dpdGhPcmlnaW5zRm9yVmVyc2lvbihjb25zdCBWZWN0b3I8U2Vj
dXJpdHlPcmlnaW5EYXRhPiYsIGNvbnN0IFN0cmluZyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNr
aW5nU3RvcmUuY3BwCmluZGV4IDdlZTQxNDBhOGFmMTgwMTFjOTZiY2E3YjYwOGQ4NjU5MThhZjg1
ZWEuLmQ2MzM1MDMwOTkzMDU1YjliMTJiNzg0NTY1NWRhODMzNzJiMWE1NTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5n
U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9N
ZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwCkBAIC00NCw5ICs0NCw4IEBAIG5hbWVzcGFjZSBJREJT
ZXJ2ZXIgewogLy8gVGhlIEluZGV4ZWREQiBzcGVjIHN0YXRlcyB0aGUgbWF4aW11bSB2YWx1ZSB5
b3UgY2FuIGdldCBmcm9tIHRoZSBrZXkgZ2VuZXJhdG9yIGlzIDJeNTMuCiBjb25zdGV4cHIgdWlu
dDY0X3QgbWF4R2VuZXJhdGVkS2V5VmFsdWUgPSAweDIwMDAwMDAwMDAwMDAwOwogCi1NZW1vcnlJ
REJCYWNraW5nU3RvcmU6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZShQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYgaWRlbnRpZmllcikKK01lbW9yeUlE
QkJhY2tpbmdTdG9yZTo6TWVtb3J5SURCQmFja2luZ1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlSWRl
bnRpZmllciYgaWRlbnRpZmllcikKICAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQotICAg
ICwgbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQogewogfQogCkBAIC0xMzQsNyArMTMzLDcgQEAgSURC
RXJyb3IgTWVtb3J5SURCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBJREJS
ZXNvdXJjZUlkZW50aWZpZXImIHQKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgQ29uc3RyYWlu
dEVycm9yIH07CiAKICAgICBBU1NFUlQoIW1fb2JqZWN0U3RvcmVzQnlJZGVudGlmaWVyLmNvbnRh
aW5zKGluZm8uaWRlbnRpZmllcigpKSk7Ci0gICAgYXV0byBvYmplY3RTdG9yZSA9IE1lbW9yeU9i
amVjdFN0b3JlOjpjcmVhdGUobV9zZXNzaW9uSUQsIGluZm8pOworICAgIGF1dG8gb2JqZWN0U3Rv
cmUgPSBNZW1vcnlPYmplY3RTdG9yZTo6Y3JlYXRlKGluZm8pOwogCiAgICAgbV9kYXRhYmFzZUlu
Zm8tPmFkZEV4aXN0aW5nT2JqZWN0U3RvcmUoaW5mbyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5n
U3RvcmUuaAppbmRleCA5MmFhNzYwZDIwNzMzNzE4ZmJkYjhjMDQ0Y2ZlNjdkY2FiMTY1MzM1Li45
YzgyMTFiNTkwNjU3YWY2ODA1MTI0MjI5YjEwMjkxMWMyYzAwZWVjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3Jl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlE
QkJhY2tpbmdTdG9yZS5oCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAiSURCUmVzb3VyY2VJ
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSW5kZXhLZXkuaCIKICNpbmNsdWRlICJNZW1vcnlCYWNr
aW5nU3RvcmVUcmFuc2FjdGlvbi5oIgotI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00MSw4ICs0MCw4
IEBAIGNsYXNzIE1lbW9yeU9iamVjdFN0b3JlOwogY2xhc3MgTWVtb3J5SURCQmFja2luZ1N0b3Jl
IGZpbmFsIDogcHVibGljIElEQkJhY2tpbmdTdG9yZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6Ci0gICAgTWVtb3J5SURCQmFja2luZ1N0b3JlKFBBTDo6U2Vzc2lvbklE
LCBjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImKTsKLSAgICB+TWVtb3J5SURCQmFja2luZ1N0
b3JlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgTWVtb3J5SURCQmFja2luZ1N0b3JlKGNvbnN0IElE
QkRhdGFiYXNlSWRlbnRpZmllciYpOworICAgIFdFQkNPUkVfRVhQT1JUIH5NZW1vcnlJREJCYWNr
aW5nU3RvcmUoKTsKIAogICAgIElEQkVycm9yIGdldE9yRXN0YWJsaXNoRGF0YWJhc2VJbmZvKElE
QkRhdGFiYXNlSW5mbyYpIGZpbmFsOwogICAgIHVpbnQ2NF90IGRhdGFiYXNlVmVyc2lvbigpIGZp
bmFsOwpAQCAtOTIsNyArOTEsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgdW5yZWdpc3Rlck9iamVj
dFN0b3JlKE1lbW9yeU9iamVjdFN0b3JlJik7CiAKICAgICBJREJEYXRhYmFzZUlkZW50aWZpZXIg
bV9pZGVudGlmaWVyOwotICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxJREJEYXRhYmFzZUluZm8+IG1fZGF0YWJhc2VJbmZvOwogCiAgICAgSGFzaE1h
cDxJREJSZXNvdXJjZUlkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxNZW1vcnlCYWNraW5nU3Rv
cmVUcmFuc2FjdGlvbj4+IG1fdHJhbnNhY3Rpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5jcHAK
aW5kZXggNWE1M2UyMzE1MjY4NGRlMzgwZGFhMWU1OTczZmIxOTNkZjAxMjY3Ny4uZGZhYjYxMzM1
N2UzNWM1ZTdlZmZjZTg1OTYyNDc5NzBlMjZlMDU0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUu
Y3BwCkBAIC0zOCwxOCArMzgsMTcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NKU1Zh
bHVlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSlNWYWx1ZUlubGluZXMuaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0xvY2suaD4KLSNpbmNsdWRlIDxwYWwvU2Vzc2lvbklE
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiBuYW1lc3Bh
Y2UgSURCU2VydmVyIHsKIAotUmVmPE1lbW9yeU9iamVjdFN0b3JlPiBNZW1vcnlPYmplY3RTdG9y
ZTo6Y3JlYXRlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgSURCT2JqZWN0U3RvcmVJ
bmZvJiBpbmZvKQorUmVmPE1lbW9yeU9iamVjdFN0b3JlPiBNZW1vcnlPYmplY3RTdG9yZTo6Y3Jl
YXRlKGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYgaW5mbykKIHsKLSAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBNZW1vcnlPYmplY3RTdG9yZShzZXNzaW9uSUQsIGluZm8pKTsKKyAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBNZW1vcnlPYmplY3RTdG9yZShpbmZvKSk7CiB9CiAKLU1lbW9yeU9iamVj
dFN0b3JlOjpNZW1vcnlPYmplY3RTdG9yZShQQUw6OlNlc3Npb25JRCwgY29uc3QgSURCT2JqZWN0
U3RvcmVJbmZvJiBpbmZvKQorTWVtb3J5T2JqZWN0U3RvcmU6Ok1lbW9yeU9iamVjdFN0b3JlKGNv
bnN0IElEQk9iamVjdFN0b3JlSW5mbyYgaW5mbykKICAgICA6IG1faW5mbyhpbmZvKQogewogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9y
eU9iamVjdFN0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
TWVtb3J5T2JqZWN0U3RvcmUuaAppbmRleCA4NzFkZWI1ZTRhZTA1MTQ4MmI5MDg5Njg5NWVhMzFj
Mjc2ZGQzMDg2Li5mMDNhM2ExYjBhZDUzNGI5ZjMzOWM0ZmJkN2U3NDBhZGYyMjg0NzAwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2Jq
ZWN0U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
TWVtb3J5T2JqZWN0U3RvcmUuaApAQCAtMzQsMTAgKzM0LDYgQEAKICNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKLW5hbWVzcGFjZSBQQUwgewot
Y2xhc3MgU2Vzc2lvbklEOwotfQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIElEQkN1
cnNvckluZm87CkBAIC02MSw3ICs1Nyw3IEBAIHR5cGVkZWYgSGFzaE1hcDxJREJLZXlEYXRhLCBU
aHJlYWRTYWZlRGF0YUJ1ZmZlciwgSURCS2V5RGF0YUhhc2gsIElEQktleURhdGFIYXNoCiAKIGNs
YXNzIE1lbW9yeU9iamVjdFN0b3JlIDogcHVibGljIFJlZkNvdW50ZWQ8TWVtb3J5T2JqZWN0U3Rv
cmU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPE1lbW9yeU9iamVjdFN0b3JlPiBjcmVhdGUo
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYpOworICAgIHN0YXRpYyBS
ZWY8TWVtb3J5T2JqZWN0U3RvcmU+IGNyZWF0ZShjb25zdCBJREJPYmplY3RTdG9yZUluZm8mKTsK
IAogICAgIH5NZW1vcnlPYmplY3RTdG9yZSgpOwogCkBAIC0xMDgsNyArMTA0LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgcmVuYW1lSW5kZXgoTWVtb3J5SW5kZXgmLCBjb25zdCBTdHJpbmcmIG5ld05h
bWUpOwogCiBwcml2YXRlOgotICAgIE1lbW9yeU9iamVjdFN0b3JlKFBBTDo6U2Vzc2lvbklELCBj
b25zdCBJREJPYmplY3RTdG9yZUluZm8mKTsKKyAgICBNZW1vcnlPYmplY3RTdG9yZShjb25zdCBJ
REJPYmplY3RTdG9yZUluZm8mKTsKIAogICAgIElEQktleURhdGFTZXQ6Oml0ZXJhdG9yIGxvd2Vz
dEl0ZXJhdG9ySW5SYW5nZShjb25zdCBJREJLZXlSYW5nZURhdGEmLCBib29sIHJldmVyc2UpIGNv
bnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDI3Y2Q4ZWVjNTNl
MWFjZmM1OTg1ZWM3YjhmMDVlMjI3NjQ1Yzg3N2UuLmE5OWU3NWI4ZGIzM2FhMDlkYjc4YmVhN2Jh
NDQwYmJjODlkY2I3NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCkBAIC0y
MzYsMTIgKzIzNiwxMCBAQCBzdGF0aWMgQVNDSUlMaXRlcmFsIGluZGV4SW5mb1RhYmxlU2NoZW1h
VGVtcCgpCiAgICAgcmV0dXJuIFRBQkxFX1NDSEVNQV9QUkVGSVggIl9UZW1wX0luZGV4SW5mbyIg
SU5ERVhfSU5GT19UQUJMRV9TQ0hFTUFfU1VGRklYOwogfQogCi1TUUxpdGVJREJCYWNraW5nU3Rv
cmU6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IElEQkRhdGFiYXNlSWRlbnRpZmllciYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkYXRhYmFz
ZVJvb3REaXJlY3RvcnkpCi0gICAgOiBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCi0gICAgLCBtX2lk
ZW50aWZpZXIoaWRlbnRpZmllcikKLSAgICAsIG1fZGF0YWJhc2VSb290RGlyZWN0b3J5KGRhdGFi
YXNlUm9vdERpcmVjdG9yeSkKK1NRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6U1FMaXRlSURCQmFja2lu
Z1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYgaWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBkYXRhYmFzZURpcmVjdG9yeSkKKyAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQor
ICAgICwgbV9kYXRhYmFzZURpcmVjdG9yeShkYXRhYmFzZURpcmVjdG9yeSkKIHsKLSAgICBtX2Rh
dGFiYXNlRGlyZWN0b3J5ID0gZnVsbERhdGFiYXNlRGlyZWN0b3J5V2l0aFVwZ3JhZGUoKTsKIH0K
IAogU1FMaXRlSURCQmFja2luZ1N0b3JlOjp+U1FMaXRlSURCQmFja2luZ1N0b3JlKCkKQEAgLTkx
MiwxOSArOTEwLDI5IEBAIHN0ZDo6dW5pcXVlX3B0cjxJREJEYXRhYmFzZUluZm8+IFNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6ZXh0cmFjdEV4aXN0aW5nRGF0YWJhc2VJCiAgICAgcmV0dXJuIGRhdGFi
YXNlSW5mbzsKIH0KIAotU3RyaW5nIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZmlsZW5hbWVGb3JE
YXRhYmFzZU5hbWUoKSBjb25zdAorU3RyaW5nIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZW5jb2Rl
RGF0YWJhc2VOYW1lKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lKQogewotICAgIEFTU0VSVCgh
bV9pZGVudGlmaWVyLmRhdGFiYXNlTmFtZSgpLmlzTnVsbCgpKTsKLQotICAgIGlmIChtX2lkZW50
aWZpZXIuZGF0YWJhc2VOYW1lKCkuaXNFbXB0eSgpKQorICAgIEFTU0VSVCghZGF0YWJhc2VOYW1l
LmlzTnVsbCgpKTsKKyAgICBpZiAoZGF0YWJhc2VOYW1lLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuICIlMDAiOwogCi0gICAgU3RyaW5nIGZpbGVuYW1lID0gRmlsZVN5c3RlbTo6ZW5jb2RlRm9y
RmlsZU5hbWUobV9pZGVudGlmaWVyLmRhdGFiYXNlTmFtZSgpKTsKKyAgICBTdHJpbmcgZmlsZW5h
bWUgPSBGaWxlU3lzdGVtOjplbmNvZGVGb3JGaWxlTmFtZShkYXRhYmFzZU5hbWUpOwogICAgIGZp
bGVuYW1lLnJlcGxhY2UoJy4nLCAiJTJFIik7CiAKICAgICByZXR1cm4gZmlsZW5hbWU7CiB9CiAK
K1N0cmluZyBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRlY29kZURhdGFiYXNlTmFtZShjb25zdCBT
dHJpbmcmIGVuY29kZWROYW1lKQoreworICAgIGlmIChlbmNvZGVkTmFtZSA9PSAiJTAwIl9zKQor
ICAgICAgICByZXR1cm4geyB9OworCisgICAgU3RyaW5nIG5hbWUgPSBlbmNvZGVkTmFtZTsKKyAg
ICBuYW1lLnJlcGxhY2UoIiUyRSJfcywgIi4iX3MpOworCisgICAgcmV0dXJuIEZpbGVTeXN0ZW06
OmRlY29kZUZyb21GaWxlbmFtZShuYW1lKTsKK30KKwogU3RyaW5nIFNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6ZnVsbERhdGFiYXNlUGF0aEZvckRpcmVjdG9yeShjb25zdCBTdHJpbmcmIGZ1bGxEYXRh
YmFzZURpcmVjdG9yeSkKIHsKICAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KGZ1bGxEYXRhYmFzZURpcmVjdG9yeSwgIkluZGV4ZWREQi5zcWxpdGUzIik7CkBA
IC05NjUsMjMgKzk3Myw2IEBAIHN0ZDo6b3B0aW9uYWw8SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lv
bj4gU1FMaXRlSURCQmFja2luZ1N0b3JlOjpkYXRhYmFzZU5hbWVBbmRWCiAgICAgcmV0dXJuIElE
QkRhdGFiYXNlTmFtZUFuZFZlcnNpb24geyBkYXRhYmFzZU5hbWUsICpkYXRhYmFzZVZlcnNpb24g
fTsKIH0KIAotU3RyaW5nIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZnVsbERhdGFiYXNlRGlyZWN0
b3J5V2l0aFVwZ3JhZGUoKQotewotICAgIFN0cmluZyBvbGRPcmlnaW5EaXJlY3RvcnkgPSBtX2lk
ZW50aWZpZXIuZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9vdChtX2RhdGFiYXNlUm9vdERp
cmVjdG9yeSwgInYwIik7Ci0gICAgU3RyaW5nIG9sZERhdGFiYXNlRGlyZWN0b3J5ID0gRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG9sZE9yaWdpbkRpcmVjdG9yeSwgZmlsZW5h
bWVGb3JEYXRhYmFzZU5hbWUoKSk7Ci0gICAgU3RyaW5nIG5ld09yaWdpbkRpcmVjdG9yeSA9IG1f
aWRlbnRpZmllci5kYXRhYmFzZURpcmVjdG9yeVJlbGF0aXZlVG9Sb290KG1fZGF0YWJhc2VSb290
RGlyZWN0b3J5LCAidjEiKTsKLSAgICBTdHJpbmcgZmlsZU5hbWVIYXNoID0gU1FMaXRlRmlsZVN5
c3RlbTo6Y29tcHV0ZUhhc2hGb3JGaWxlTmFtZShtX2lkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCkp
OwotICAgIFN0cmluZyBuZXdEYXRhYmFzZURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChuZXdPcmlnaW5EaXJlY3RvcnksIGZpbGVOYW1lSGFzaCk7Ci0gICAg
RmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKG5ld0RhdGFiYXNlRGlyZWN0b3J5KTsKLQot
ICAgIGlmIChGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG9sZERhdGFiYXNlRGlyZWN0b3J5KSkgewot
ICAgICAgICBGaWxlU3lzdGVtOjptb3ZlRmlsZShvbGREYXRhYmFzZURpcmVjdG9yeSwgbmV3RGF0
YWJhc2VEaXJlY3RvcnkpOwotICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9y
eShvbGRPcmlnaW5EaXJlY3RvcnkpOwotICAgIH0KLQotICAgIHJldHVybiBuZXdEYXRhYmFzZURp
cmVjdG9yeTsKLX0KLQogSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRPckVzdGFi
bGlzaERhdGFiYXNlSW5mbyhJREJEYXRhYmFzZUluZm8mIGluZm8pCiB7CiAgICAgTE9HKEluZGV4
ZWREQiwgIlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0T3JFc3RhYmxpc2hEYXRhYmFzZUluZm8g
LSBkYXRhYmFzZSAlcyIsIG1faWRlbnRpZmllci5kYXRhYmFzZU5hbWUoKS51dGY4KCkuZGF0YSgp
KTsKQEAgLTk5MSwxMSArOTgyLDExIEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
Z2V0T3JFc3RhYmxpc2hEYXRhYmFzZUluZm8oSURCRGF0YWJhc2VJbmZvJiBpbmZvCiAgICAgICAg
IHJldHVybiBJREJFcnJvciB7IH07CiAgICAgfQogCi0gICAgU3RyaW5nIGRiRmlsZW5hbWUgPSBm
dWxsRGF0YWJhc2VQYXRoKCk7Ci0KKyAgICBTdHJpbmcgZGF0YWJhc2VQYXRoID0gZnVsbERhdGFi
YXNlUGF0aCgpOworICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhGaWxlU3lzdGVt
OjpwYXJlbnRQYXRoKGRhdGFiYXNlUGF0aCkpOwogICAgIG1fc3FsaXRlREIgPSBtYWtlVW5pcXVl
PFNRTGl0ZURhdGFiYXNlPigpOwotICAgIGlmICghbV9zcWxpdGVEQi0+b3BlbihkYkZpbGVuYW1l
KSkgewotICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBvcGVuIFNRTGl0ZSBkYXRhYmFzZSBh
dCBwYXRoICclcyciLCBkYkZpbGVuYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgIGlmICghbV9zcWxp
dGVEQi0+b3BlbihkYXRhYmFzZVBhdGgpKSB7CisgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRv
IG9wZW4gU1FMaXRlIGRhdGFiYXNlIGF0IHBhdGggJyVzJyIsIGRhdGFiYXNlUGF0aC51dGY4KCku
ZGF0YSgpKTsKICAgICAgICAgY2xvc2VTUUxpdGVEQigpOwogICAgIH0KIApAQCAtMTA0NCw3ICsx
MDM1LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRPckVzdGFibGlzaERh
dGFiYXNlSW5mbyhJREJEYXRhYmFzZUluZm8mIGluZm8KICAgICAgICAgZGF0YWJhc2VJbmZvID0g
Y3JlYXRlQW5kUG9wdWxhdGVJbml0aWFsRGF0YWJhc2VJbmZvKCk7CiAKICAgICBpZiAoIWRhdGFi
YXNlSW5mbykgewotICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBlc3RhYmxpc2ggSURCIGRh
dGFiYXNlIGF0IHBhdGggJyVzJyIsIGRiRmlsZW5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAgICAg
IExPR19FUlJPUigiVW5hYmxlIHRvIGVzdGFibGlzaCBJREIgZGF0YWJhc2UgYXQgcGF0aCAnJXMn
IiwgZGF0YWJhc2VQYXRoLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBjbG9zZVNRTGl0ZURCKCk7
CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBlc3Rh
Ymxpc2ggSURCIGRhdGFiYXNlIGZpbGUiX3MgfTsKICAgICB9CkBAIC0yNzk4LDcgKzI3ODksNiBA
QCB2b2lkIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlQmFja2luZ1N0b3JlKCkKIAogICAg
IFNRTGl0ZUZpbGVTeXN0ZW06OmRlbGV0ZURhdGFiYXNlRmlsZShkYXRhYmFzZVBhdGgpOwogICAg
IFNRTGl0ZUZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGF0YWJhc2VEaXJlY3RvcnkobV9kYXRhYmFz
ZURpcmVjdG9yeSk7Ci0gICAgU1FMaXRlRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEYXRhYmFzZURp
cmVjdG9yeShtX2lkZW50aWZpZXIuZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9vdChtX2Rh
dGFiYXNlUm9vdERpcmVjdG9yeSkpOwogfQogCiB2b2lkIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
dW5yZWdpc3RlckN1cnNvcihTUUxpdGVJREJDdXJzb3ImIGN1cnNvcikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3Rv
cmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJC
YWNraW5nU3RvcmUuaAppbmRleCAyZWZlNmIyYTM0MTk5M2JiMjZmZGY5MWNmZjZlN2RlYThkYmJl
ZDM2Li43MzFhOWE0MTkzODY1ZTNjNWYzYzM1ZWQ3NTcxYjEyODJmNzgwOTYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2lu
Z1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NR
TGl0ZUlEQkJhY2tpbmdTdG9yZS5oCkBAIC01MSw5ICs1MSw4IEBAIGNsYXNzIFNRTGl0ZUlEQkN1
cnNvcjsKIGNsYXNzIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZSBmaW5hbCA6IHB1YmxpYyBJREJCYWNr
aW5nU3RvcmUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFNR
TGl0ZUlEQkJhY2tpbmdTdG9yZShQQUw6OlNlc3Npb25JRCwgY29uc3QgSURCRGF0YWJhc2VJZGVu
dGlmaWVyJiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZVJvb3REaXJlY3RvcnkpOwotICAgIAotICAg
IH5TUUxpdGVJREJCYWNraW5nU3RvcmUoKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTUUxp
dGVJREJCYWNraW5nU3RvcmUoY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJiwgY29uc3QgU3Ry
aW5nJiBkYXRhYmFzZURpcmVjdG9yeSk7CisgICAgV0VCQ09SRV9FWFBPUlQgflNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZSgpIGZpbmFsOwogCiAgICAgSURCRXJyb3IgZ2V0T3JFc3RhYmxpc2hEYXRhYmFz
ZUluZm8oSURCRGF0YWJhc2VJbmZvJikgZmluYWw7CiAgICAgdWludDY0X3QgZGF0YWJhc2VWZXJz
aW9uKCkgZmluYWw7CkBAIC05NCwxOCArOTMsMTUgQEAgcHVibGljOgogCiAgICAgSURCRXJyb3Ig
Z2V0QmxvYlJlY29yZHNGb3JPYmplY3RTdG9yZVJlY29yZChpbnQ2NF90IG9iamVjdFN0b3JlUmVj
b3JkLCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIFZlY3RvcjxTdHJpbmc+JiBibG9iRmlsZVBh
dGhzKTsKIAotICAgIHN0YXRpYyB1aW50NjRfdCBkYXRhYmFzZXNTaXplRm9yRGlyZWN0b3J5KGNv
bnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKLQorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB1aW50
NjRfdCBkYXRhYmFzZXNTaXplRm9yRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsK
ICAgICBTdHJpbmcgZGF0YWJhc2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2RhdGFiYXNl
RGlyZWN0b3J5OyB9OwotICAgIHN0YXRpYyBTdHJpbmcgZnVsbERhdGFiYXNlUGF0aEZvckRpcmVj
dG9yeShjb25zdCBTdHJpbmcmKTsKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxJREJEYXRhYmFz
ZU5hbWVBbmRWZXJzaW9uPiBkYXRhYmFzZU5hbWVBbmRWZXJzaW9uRnJvbUZpbGUoY29uc3QgU3Ry
aW5nJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBmdWxsRGF0YWJhc2VQYXRo
Rm9yRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBT
dHJpbmcgZW5jb2RlRGF0YWJhc2VOYW1lKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIGRlY29kZURhdGFiYXNlTmFtZShjb25zdCBT
dHJpbmcmIGVuY29kZWREYXRhYmFzZU5hbWUpOwogCi0gICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklEKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgc3RkOjpvcHRpb25hbDxJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiBkYXRhYmFzZU5h
bWVBbmRWZXJzaW9uRnJvbUZpbGUoY29uc3QgU3RyaW5nJik7CiAKIHByaXZhdGU6Ci0gICAgU3Ry
aW5nIGZpbGVuYW1lRm9yRGF0YWJhc2VOYW1lKCkgY29uc3Q7Ci0gICAgU3RyaW5nIGZ1bGxEYXRh
YmFzZURpcmVjdG9yeVdpdGhVcGdyYWRlKCk7Ci0KICAgICBJREJFcnJvciBlbnN1cmVWYWxpZFJl
Y29yZHNUYWJsZSgpOwogICAgIElEQkVycm9yIGVuc3VyZVZhbGlkSW5kZXhSZWNvcmRzVGFibGUo
KTsKICAgICBJREJFcnJvciBlbnN1cmVWYWxpZEluZGV4UmVjb3Jkc0luZGV4KCk7CkBAIC0yMDYs
NyArMjAyLDYgQEAgcHJpdmF0ZToKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxTUUxpdGVTdGF0ZW1l
bnQ+IG1fY2FjaGVkU3RhdGVtZW50c1tzdGF0aWNfY2FzdDxpbnQ+KFNRTDo6SW52YWxpZCldOwog
Ci0gICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAgICAgSURCRGF0YWJhc2VJZGVudGlm
aWVyIG1faWRlbnRpZmllcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SURCRGF0YWJhc2VJbmZvPiBt
X2RhdGFiYXNlSW5mbzsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SURCRGF0YWJhc2VJbmZvPiBtX29y
aWdpbmFsRGF0YWJhc2VJbmZvQmVmb3JlVmVyc2lvbkNoYW5nZTsKQEAgLTIxNiw3ICsyMTEsNiBA
QCBwcml2YXRlOgogICAgIEhhc2hNYXA8SURCUmVzb3VyY2VJZGVudGlmaWVyLCBzdGQ6OnVuaXF1
ZV9wdHI8U1FMaXRlSURCVHJhbnNhY3Rpb24+PiBtX3RyYW5zYWN0aW9uczsKICAgICBIYXNoTWFw
PElEQlJlc291cmNlSWRlbnRpZmllciwgU1FMaXRlSURCQ3Vyc29yKj4gbV9jdXJzb3JzOwogCi0g
ICAgU3RyaW5nIG1fZGF0YWJhc2VSb290RGlyZWN0b3J5OwogICAgIFN0cmluZyBtX2RhdGFiYXNl
RGlyZWN0b3J5OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAKaW5kZXggMmIxZWFkYjll
YTVjNDY0ZDAyNzVlZDIyM2Y1MDAzYjdiZWYxNTczMy4uMmRmYmJkYjMxOTkzMWUzNzZmMTI1MmVh
NDJjMTQzZDlmZDRjZDFjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCkBAIC00Miw2ICs0
Miw3IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlN0b3JhZ2VRdW90YU1hbmFn
ZXIuaCIKICNpbmNsdWRlICJVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uaCIKKyNpbmNsdWRl
ICJVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuaCIKICNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTM0LDggKzEzNSw4IEBAIHN0YXRpYyBpbmxpbmUgdWlu
dDY0X3QgZXN0aW1hdGVTaXplKGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYgaW5mbykKICAgICBy
ZXR1cm4gc2l6ZTsKIH0KIAotVW5pcXVlSURCRGF0YWJhc2U6OlVuaXF1ZUlEQkRhdGFiYXNlKElE
QlNlcnZlciYgc2VydmVyLCBjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImIGlkZW50aWZpZXIp
Ci0gICAgOiBtX3NlcnZlcihzZXJ2ZXIpCitVbmlxdWVJREJEYXRhYmFzZTo6VW5pcXVlSURCRGF0
YWJhc2UoVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyJiBtYW5hZ2VyLCBjb25zdCBJREJEYXRhYmFz
ZUlkZW50aWZpZXImIGlkZW50aWZpZXIpCisgICAgOiBtX21hbmFnZXIobWFuYWdlcikKICAgICAs
IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkp
OwpAQCAtMTYzLDYgKzE2NCwxMSBAQCBjb25zdCBJREJEYXRhYmFzZUluZm8mIFVuaXF1ZUlEQkRh
dGFiYXNlOjppbmZvKCkgY29uc3QKICAgICByZXR1cm4gKm1fZGF0YWJhc2VJbmZvOwogfQogCitV
bmlxdWVJREJEYXRhYmFzZU1hbmFnZXIqIFVuaXF1ZUlEQkRhdGFiYXNlOjptYW5hZ2VyKCkKK3sK
KyAgICByZXR1cm4gbV9tYW5hZ2VyLmdldCgpOworfQorCiB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNl
OjpvcGVuRGF0YWJhc2VDb25uZWN0aW9uKElEQkNvbm5lY3Rpb25Ub0NsaWVudCYgY29ubmVjdGlv
biwgY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhKQogewogICAgIExPRyhJbmRleGVk
REIsICJVbmlxdWVJREJEYXRhYmFzZTo6b3BlbkRhdGFiYXNlQ29ubmVjdGlvbiIpOwpAQCAtMTg1
LDE3ICsxOTEsNDUgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybUN1cnJlbnRPcGVu
T3BlcmF0aW9uKCkKICAgICBBU1NFUlQobV9jdXJyZW50T3BlbkRCUmVxdWVzdCk7CiAgICAgQVNT
RVJUKG1fY3VycmVudE9wZW5EQlJlcXVlc3QtPmlzT3BlblJlcXVlc3QoKSk7CiAKKyAgICAvLyBX
ZSBkb24ndCBuZWVkIHRvIGNyZWF0ZSB0aGUgZmlsZSBzbyBubyBuZWVkIHRvIGRvIHNwYWNlIGNo
ZWNrLgorICAgIGlmIChtX2JhY2tpbmdTdG9yZSkKKyAgICAgICAgcmV0dXJuIHBlcmZvcm1DdXJy
ZW50T3Blbk9wZXJhdGlvbkFmdGVyU3BhY2VDaGVjayh0cnVlKTsKKworICAgIGlmICghbV9tYW5h
Z2VyKQorICAgICAgICByZXR1cm4gcGVyZm9ybUN1cnJlbnRPcGVuT3BlcmF0aW9uQWZ0ZXJTcGFj
ZUNoZWNrKGZhbHNlKTsKKworICAgIGF1dG8gcmVxdWVzdElkZW50aWZpZXIgPSBtX2N1cnJlbnRP
cGVuREJSZXF1ZXN0LT5yZXF1ZXN0RGF0YSgpLnJlcXVlc3RJZGVudGlmaWVyKCk7CisgICAgaWYg
KG1fb3BlbkRCUmVxdWVzdHNGb3JTcGFjZUNoZWNrLmNvbnRhaW5zKHJlcXVlc3RJZGVudGlmaWVy
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9vcGVuREJSZXF1ZXN0c0ZvclNwYWNlQ2hlY2su
YWRkKHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICBtX21hbmFnZXItPnJlcXVlc3RTcGFjZShtX2lk
ZW50aWZpZXIub3JpZ2luKCksIGRlZmF1bHRXcml0ZU9wZXJhdGlvbkNvc3QsIFt0aGlzLCB3ZWFr
VGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCByZXF1ZXN0SWRlbnRpZmllcl0oYm9vbCBncmFudGVk
KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICBtX29wZW5EQlJlcXVlc3RzRm9yU3BhY2VDaGVjay5yZW1vdmUocmVxdWVzdElk
ZW50aWZpZXIpOworICAgICAgICBpZiAobV9jdXJyZW50T3BlbkRCUmVxdWVzdC0+cmVxdWVzdERh
dGEoKS5yZXF1ZXN0SWRlbnRpZmllcigpICE9IHJlcXVlc3RJZGVudGlmaWVyKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIHBlcmZvcm1DdXJyZW50T3Blbk9wZXJhdGlvbkFmdGVyU3Bh
Y2VDaGVjayhncmFudGVkKTsKKyAgICB9KTsKK30KKwordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6
cGVyZm9ybUN1cnJlbnRPcGVuT3BlcmF0aW9uQWZ0ZXJTcGFjZUNoZWNrKGJvb2wgaXNHcmFudGVk
KQoreworICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybUN1cnJl
bnRPcGVuT3BlcmF0aW9uQWZ0ZXJTcGFjZVJlcXVlc3QgKCVwKSIsIHRoaXMpOworCiAgICAgSURC
RXJyb3IgYmFja2luZ1N0b3JlT3BlbkVycm9yOwogICAgIGlmICghbV9iYWNraW5nU3RvcmUpIHsK
LSAgICAgICAgLy8gUXVvdGEgY2hlY2suCi0gICAgICAgIGF1dG8gZGVjaXNpb24gPSBtX3NlcnZl
ci5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCBkZWZhdWx0V3JpdGVPcGVyYXRp
b25Db3N0KTsKLSAgICAgICAgaWYgKGRlY2lzaW9uID09IFN0b3JhZ2VRdW90YU1hbmFnZXI6OkRl
Y2lzaW9uOjpEZW55KQorICAgICAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAgICAgICAgIGJhY2tp
bmdTdG9yZU9wZW5FcnJvciA9IElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKyAgICAg
ICAgZWxzZSBpZiAoIWlzR3JhbnRlZCkKICAgICAgICAgICAgIGJhY2tpbmdTdG9yZU9wZW5FcnJv
ciA9IElEQkVycm9yIHsgUXVvdGFFeGNlZWRlZEVycm9yLCBxdW90YUVycm9yTWVzc2FnZU5hbWUo
Ik9wZW5CYWNraW5nU3RvcmUiKSB9OwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIG1fYmFj
a2luZ1N0b3JlID0gbV9zZXJ2ZXIuY3JlYXRlQmFja2luZ1N0b3JlKG1faWRlbnRpZmllcik7Cisg
ICAgICAgICAgICBtX2JhY2tpbmdTdG9yZSA9IG1fbWFuYWdlci0+Y3JlYXRlQmFja2luZ1N0b3Jl
KG1faWRlbnRpZmllcik7CiAgICAgICAgICAgICBJREJEYXRhYmFzZUluZm8gZGF0YWJhc2VJbmZv
OwogICAgICAgICAgICAgYmFja2luZ1N0b3JlT3BlbkVycm9yID0gbV9iYWNraW5nU3RvcmUtPmdl
dE9yRXN0YWJsaXNoRGF0YWJhc2VJbmZvKGRhdGFiYXNlSW5mbyk7Ci0gICAgICAgICAgICBpZiAo
YmFja2luZ1N0b3JlT3BlbkVycm9yLmlzTnVsbCgpKQorICAgICAgICAgICAgaWYgKCFiYWNraW5n
U3RvcmVPcGVuRXJyb3IpCiAgICAgICAgICAgICAgICAgbV9kYXRhYmFzZUluZm8gPSBtYWtlVW5p
cXVlPElEQkRhdGFiYXNlSW5mbz4oZGF0YWJhc2VJbmZvKTsKICAgICAgICAgICAgIGVsc2Ugewog
ICAgICAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGdldCBkYXRhYmFzZSBpbmZvICcl
cyciLCBiYWNraW5nU3RvcmVPcGVuRXJyb3IubWVzc2FnZSgpLnV0ZjgoKS5kYXRhKCkpOwpAQCAt
MjA0LDcgKzIzOCw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1DdXJyZW50T3Bl
bk9wZXJhdGlvbigpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoIWJhY2tpbmdTdG9yZU9w
ZW5FcnJvci5pc051bGwoKSkgeworICAgIGlmIChiYWNraW5nU3RvcmVPcGVuRXJyb3IpIHsKICAg
ICAgICAgYXV0byByZXN1bHQgPSBJREJSZXN1bHREYXRhOjplcnJvcihtX2N1cnJlbnRPcGVuREJS
ZXF1ZXN0LT5yZXF1ZXN0RGF0YSgpLnJlcXVlc3RJZGVudGlmaWVyKCksIGJhY2tpbmdTdG9yZU9w
ZW5FcnJvcik7CiAgICAgICAgIG1fY3VycmVudE9wZW5EQlJlcXVlc3QtPmNvbm5lY3Rpb24oKS5k
aWRPcGVuRGF0YWJhc2UocmVzdWx0KTsKICAgICAgICAgbV9jdXJyZW50T3BlbkRCUmVxdWVzdCA9
IG51bGxwdHI7CkBAIC0yOTQsNyArMzI4LDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVs
ZXRlQmFja2luZ1N0b3JlKCkKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMT0co
SW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZUJhY2tpbmdTdG9yZSIpOwogICAg
IAotICAgIGF1dG8gYmFja2luZ1N0b3JlID0gbV9iYWNraW5nU3RvcmUgPyBzdGQ6OmV4Y2hhbmdl
KG1fYmFja2luZ1N0b3JlLCBudWxscHRyKSA6IG1fc2VydmVyLmNyZWF0ZUJhY2tpbmdTdG9yZSht
X2lkZW50aWZpZXIpOworICAgIGF1dG8gYmFja2luZ1N0b3JlID0gbV9iYWNraW5nU3RvcmUgPyBz
dGQ6OmV4Y2hhbmdlKG1fYmFja2luZ1N0b3JlLCBudWxscHRyKSA6IG1fbWFuYWdlci0+Y3JlYXRl
QmFja2luZ1N0b3JlKG1faWRlbnRpZmllcik7CiAgICAgdWludDY0X3QgZGVsZXRlZFZlcnNpb24g
PSBiYWNraW5nU3RvcmUtPmRhdGFiYXNlVmVyc2lvbigpOwogICAgIGJhY2tpbmdTdG9yZS0+ZGVs
ZXRlQmFja2luZ1N0b3JlKCk7CiAgICAgZGlkRGVsZXRlQmFja2luZ1N0b3JlKGRlbGV0ZWRWZXJz
aW9uKTsKQEAgLTU0MiwyMCArNTc2LDMyIEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmFkZE9w
ZW5EYXRhYmFzZUNvbm5lY3Rpb24oUmVmPFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvCiAgICAg
bV9vcGVuRGF0YWJhc2VDb25uZWN0aW9ucy5hZGQoYWRvcHRSZWYoY29ubmVjdGlvbi5sZWFrUmVm
KCkpKTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUoVW5p
cXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIGNvbnN0IElEQk9iamVjdFN0
b3JlSW5mbyYgaW5mbywgRXJyb3JDYWxsYmFjayBjYWxsYmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0
YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRy
YW5zYWN0aW9uLCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mIGluZm8sIEVycm9yQ2FsbGJhY2sg
Y2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgc3BhY2VDaGVja1Jlc3VsdCkKIHsKICAgICBBU1NF
UlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJh
c2U6OmNyZWF0ZU9iamVjdFN0b3JlIik7CiAKLSAgICBBU1NFUlQobV9iYWNraW5nU3RvcmUpOwor
ICAgIGlmICghc3BhY2VDaGVja1Jlc3VsdCkgeworICAgICAgICBpZiAoIW1fbWFuYWdlcikKKyAg
ICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yIH0p
OworCisgICAgICAgIGF1dG8gdGFza1NpemUgPSBkZWZhdWx0V3JpdGVPcGVyYXRpb25Db3N0ICsg
ZXN0aW1hdGVTaXplKGluZm8pOworICAgICAgICBtX21hbmFnZXItPnJlcXVlc3RTcGFjZShtX2lk
ZW50aWZpZXIub3JpZ2luKCksIHRhc2tTaXplLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsg
KnRoaXMgfSwgd2Vha1RyYW5zYWN0aW9uID0gV2Vha1B0ciB7IHRyYW5zYWN0aW9uIH0sIGluZm8s
IGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgZ3JhbnRlZCkgbXV0YWJsZSB7Cisg
ICAgICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICF3ZWFrVHJhbnNhY3Rpb24pCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJEYXRh
YmFzZSBvciB0cmFuc2FjdGlvbiBpcyBjbG9zZWQiIH0pOworICAgICAgICAgICAgY3JlYXRlT2Jq
ZWN0U3RvcmUoKndlYWtUcmFuc2FjdGlvbiwgaW5mbywgV1RGTW92ZShjYWxsYmFjayksIGdyYW50
ZWQpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAgIC8vIFF1b3Rh
IGNoZWNrLgotICAgIGF1dG8gdGFza1NpemUgPSBkZWZhdWx0V3JpdGVPcGVyYXRpb25Db3N0ICsg
ZXN0aW1hdGVTaXplKGluZm8pOwotICAgIGlmIChtX3NlcnZlci5yZXF1ZXN0U3BhY2UobV9pZGVu
dGlmaWVyLm9yaWdpbigpLCB0YXNrU2l6ZSkgPT0gU3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNp
b246OkRlbnkpIHsKKyAgICBpZiAoIXNwYWNlQ2hlY2tSZXN1bHQudmFsdWUoKSkgewogICAgICAg
ICBjYWxsYmFjayhJREJFcnJvciB7IFF1b3RhRXhjZWVkZWRFcnJvciwgcXVvdGFFcnJvck1lc3Nh
Z2VOYW1lKCJDcmVhdGVPYmplY3RTdG9yZSIpIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CisgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVy
cm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJCYWNraW5nIHN0b3JlIGhhcyBjbG9zZWQiIH0pOwor
CiAgICAgYXV0byBlcnJvciA9IG1fYmFja2luZ1N0b3JlLT5jcmVhdGVPYmplY3RTdG9yZSh0cmFu
c2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpLCBpbmZvKTsKICAgICBpZiAoZXJyb3IuaXNOdWxs
KCkpCiAgICAgICAgIG1fZGF0YWJhc2VJbmZvLT5hZGRFeGlzdGluZ09iamVjdFN0b3JlKGluZm8p
OwpAQCAtNTYzLDE4ICs2MDksMzQgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlT2Jq
ZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3QKICAgICBjYWxs
YmFjayhlcnJvcik7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZU9iamVjdFN0
b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBjb25zdCBTdHJp
bmcmIG9iamVjdFN0b3JlTmFtZSwgRXJyb3JDYWxsYmFjayBjYWxsYmFjaykKK3ZvaWQgVW5pcXVl
SURCRGF0YWJhc2U6OmRlbGV0ZU9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rp
b24mIHRyYW5zYWN0aW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSwgRXJyb3JDYWxs
YmFjayBjYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCBzcGFjZUNoZWNrUmVzdWx0KQogewogICAg
IEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJE
YXRhYmFzZTo6ZGVsZXRlT2JqZWN0U3RvcmUiKTsKIAorICAgIGlmICghc3BhY2VDaGVja1Jlc3Vs
dCkgeworICAgICAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAgICAgICAgIHJldHVybiBjYWxsYmFj
ayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yIH0pOworCisgICAgICAgIG1fbWFuYWdlci0+
cmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwgMCwgW3RoaXMsIHdlYWtUaGlzID0g
V2Vha1B0ciB7ICp0aGlzIH0sIHdlYWtUcmFuc2FjdGlvbiA9IFdlYWtQdHIgeyB0cmFuc2FjdGlv
biB9LCBvYmplY3RTdG9yZU5hbWUsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wg
Z3JhbnRlZCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICF3ZWFrVHJh
bnNhY3Rpb24pCisgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52
YWxpZFN0YXRlRXJyb3IsICJEYXRhYmFzZSBvciB0cmFuc2FjdGlvbiBpcyBjbG9zZWQiIH0pOwor
CisgICAgICAgICAgICBkZWxldGVPYmplY3RTdG9yZSgqd2Vha1RyYW5zYWN0aW9uLCBvYmplY3RT
dG9yZU5hbWUsIFdURk1vdmUoY2FsbGJhY2spLCBncmFudGVkKTsKKyAgICAgICAgfSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQoc3BhY2VDaGVja1Jlc3VsdC52YWx1ZSgp
KTsKICAgICBhdXRvKiBpbmZvID0gbV9kYXRhYmFzZUluZm8tPmluZm9Gb3JFeGlzdGluZ09iamVj
dFN0b3JlKG9iamVjdFN0b3JlTmFtZSk7CiAgICAgaWYgKCFpbmZvKSB7CiAgICAgICAgIGNhbGxi
YWNrKElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBkZWxldGUgbm9uLWV4aXN0
YW50IG9iamVjdCBzdG9yZSJfcyB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFT
U0VSVChtX2JhY2tpbmdTdG9yZSk7CisgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkKKyAgICAgICAg
cmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJCYWNraW5nIHN0
b3JlIGlzIGNsb3NlZCIgfSk7CisKICAgICBhdXRvIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPmRl
bGV0ZU9iamVjdFN0b3JlKHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCksIGluZm8tPmlk
ZW50aWZpZXIoKSk7CiAgICAgaWYgKGVycm9yLmlzTnVsbCgpKQogICAgICAgICBtX2RhdGFiYXNl
SW5mby0+ZGVsZXRlT2JqZWN0U3RvcmUoaW5mby0+aWRlbnRpZmllcigpKTsKQEAgLTU4MiwxNCAr
NjQ0LDI2IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZU9iamVjdFN0b3JlKFVuaXF1
ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0CiAgICAgY2FsbGJhY2soZXJyb3IpOwog
fQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpyZW5hbWVPYmplY3RTdG9yZShVbmlxdWVJREJE
YXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUsIEVycm9yQ2FsbGJhY2sgY2FsbGJhY2spCit2
b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpyZW5hbWVPYmplY3RTdG9yZShVbmlxdWVJREJEYXRhYmFz
ZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIG5ld05hbWUsIEVycm9yQ2FsbGJhY2sgY2FsbGJhY2ssIFNwYWNlQ2hl
Y2tSZXN1bHQgc3BhY2VDaGVja1Jlc3VsdCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgp
KTsKICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6OnJlbmFtZU9iamVjdFN0
b3JlIik7CiAKLSAgICAvLyBRdW90YSBjaGVjay4KLSAgICBhdXRvIHRhc2tTaXplID0gZGVmYXVs
dFdyaXRlT3BlcmF0aW9uQ29zdCArIG5ld05hbWUuc2l6ZUluQnl0ZXMoKTsKLSAgICBpZiAobV9z
ZXJ2ZXIucmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwgdGFza1NpemUpID09IFN0
b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uOjpEZW55KSB7CisgICAgaWYgKCFzcGFjZUNoZWNr
UmVzdWx0KSB7CisgICAgICAgIGlmICghbV9tYW5hZ2VyKQorICAgICAgICAgICAgcmV0dXJuIGNh
bGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7CisKKyAgICAgICAgYXV0byB0
YXNrU2l6ZSA9IGRlZmF1bHRXcml0ZU9wZXJhdGlvbkNvc3QgKyBuZXdOYW1lLnNpemVJbkJ5dGVz
KCk7CisgICAgICAgIG1fbWFuYWdlci0+cmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4o
KSwgdGFza1NpemUsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCB3ZWFrVHJh
bnNhY3Rpb24gPSBXZWFrUHRyIHsgdHJhbnNhY3Rpb24gfSwgb2JqZWN0U3RvcmVJZGVudGlmaWVy
LCBuZXdOYW1lLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIGdyYW50ZWQpIG11
dGFibGUgeworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhd2Vha1RyYW5zYWN0aW9uKQor
ICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVy
cm9yLCAiRGF0YWJhc2Ugb3IgdHJhbnNhY3Rpb24gaXMgY2xvc2VkIiB9KTsKKworICAgICAgICAg
ICAgcmVuYW1lT2JqZWN0U3RvcmUoKndlYWtUcmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVJZGVudGlm
aWVyLCBuZXdOYW1lLCBXVEZNb3ZlKGNhbGxiYWNrKSwgZ3JhbnRlZCk7CisgICAgICAgIH0pOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFzcGFjZUNoZWNrUmVzdWx0LnZhbHVl
KCkpIHsKICAgICAgICAgY2FsbGJhY2soSURCRXJyb3IoUXVvdGFFeGNlZWRlZEVycm9yLCBxdW90
YUVycm9yTWVzc2FnZU5hbWUoIlJlbmFtZU9iamVjdFN0b3JlIikpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KQEAgLTYwMCw3ICs2NzQsOSBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpyZW5h
bWVPYmplY3RTdG9yZShVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdAogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgQVNTRVJUKG1fYmFja2luZ1N0b3JlKTsKKyAgICBp
ZiAoIW1fYmFja2luZ1N0b3JlKQorICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJ
bnZhbGlkU3RhdGVFcnJvciwgIkJhY2tpbmcgc3RvcmUgaXMgY2xvc2VkIiB9KTsKKwogICAgIGF1
dG8gZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+cmVuYW1lT2JqZWN0U3RvcmUodHJhbnNhY3Rpb24u
aW5mbygpLmlkZW50aWZpZXIoKSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBuZXdOYW1lKTsKICAg
ICBpZiAoZXJyb3IuaXNOdWxsKCkpCiAgICAgICAgIG1fZGF0YWJhc2VJbmZvLT5yZW5hbWVPYmpl
Y3RTdG9yZShvYmplY3RTdG9yZUlkZW50aWZpZXIsIG5ld05hbWUpOwpAQCAtNjA4LDMwICs2ODQs
NTkgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cmVuYW1lT2JqZWN0U3RvcmUoVW5pcXVlSURC
RGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3QKICAgICBjYWxsYmFjayhlcnJvcik7CiB9CiAK
LXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNsZWFyT2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJh
c2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmll
ciwgRXJyb3JDYWxsYmFjayBjYWxsYmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNsZWFy
T2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIHVp
bnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgRXJyb3JDYWxsYmFjayBjYWxsYmFjaywgU3Bh
Y2VDaGVja1Jlc3VsdCBzcGFjZUNoZWNrUmVzdWx0KQogewogICAgIEFTU0VSVCghaXNNYWluVGhy
ZWFkKCkpOwogICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6Y2xlYXJPYmpl
Y3RTdG9yZSIpOwogCi0gICAgQVNTRVJUKG1fYmFja2luZ1N0b3JlKTsKLSAgICBhdXRvIGVycm9y
ID0gbV9iYWNraW5nU3RvcmUtPmNsZWFyT2JqZWN0U3RvcmUodHJhbnNhY3Rpb24uaW5mbygpLmlk
ZW50aWZpZXIoKSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKKyAgICBpZiAoIXNwYWNlQ2hlY2tS
ZXN1bHQpIHsKKyAgICAgICAgaWYgKCFtX21hbmFnZXIpCisgICAgICAgICAgICByZXR1cm4gY2Fs
bGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciB9KTsKKworICAgICAgICBtX21hbmFn
ZXItPnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIDAsIFt0aGlzLCB3ZWFrVGhp
cyA9IFdlYWtQdHIgeyAqdGhpcyB9LCB3ZWFrVHJhbnNhY3Rpb24gPSBXZWFrUHRyIHsgdHJhbnNh
Y3Rpb24gfSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spXShib29sIGdyYW50ZWQpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8
fCAhd2Vha1RyYW5zYWN0aW9uKQorICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJF
cnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiRGF0YWJhc2Ugb3IgdHJhbnNhY3Rpb24gaXMgY2xv
c2VkIiB9KTsKKworICAgICAgICAgICAgY2xlYXJPYmplY3RTdG9yZSgqd2Vha1RyYW5zYWN0aW9u
LCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spLCBncmFudGVkKTsKKyAg
ICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQoc3BhY2VDaGVj
a1Jlc3VsdC52YWx1ZSgpKTsKKyAgICBpZiAoIW1fYmFja2luZ1N0b3JlKQorICAgICAgICByZXR1
cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkJhY2tpbmcgc3RvcmUg
aXMgY2xvc2VkIiB9KTsKIAorICAgIGF1dG8gZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+Y2xlYXJP
YmplY3RTdG9yZSh0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpLCBvYmplY3RTdG9yZUlk
ZW50aWZpZXIpOwogICAgIGNhbGxiYWNrKGVycm9yKTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRh
YmFzZTo6Y3JlYXRlSW5kZXgoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rp
b24sIGNvbnN0IElEQkluZGV4SW5mbyYgaW5mbywgRXJyb3JDYWxsYmFjayBjYWxsYmFjaykKK3Zv
aWQgVW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZUluZGV4KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNh
Y3Rpb24mIHRyYW5zYWN0aW9uLCBjb25zdCBJREJJbmRleEluZm8mIGluZm8sIEVycm9yQ2FsbGJh
Y2sgY2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgc3BhY2VDaGVja1Jlc3VsdCkKIHsKICAgICBB
U1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0
YWJhc2U6OmNyZWF0ZUluZGV4Iik7CiAKLSAgICAvLyBRdW90YSBjaGVjay4KLSAgICBhdXRvIHRh
c2tTaXplID0gZGVmYXVsdFdyaXRlT3BlcmF0aW9uQ29zdCArIGVzdGltYXRlU2l6ZShpbmZvKTsK
LSAgICBpZiAobV9zZXJ2ZXIucmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwgdGFz
a1NpemUpID09IFN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uOjpEZW55KSB7CisgICAgaWYg
KCFzcGFjZUNoZWNrUmVzdWx0KSB7CisgICAgICAgIGlmICghbV9tYW5hZ2VyKQorICAgICAgICAg
ICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7CisKKyAg
ICAgICAgYXV0byB0YXNrU2l6ZSA9IGRlZmF1bHRXcml0ZU9wZXJhdGlvbkNvc3QgKyBlc3RpbWF0
ZVNpemUoaW5mbyk7CisgICAgICAgIG1fbWFuYWdlci0+cmVxdWVzdFNwYWNlKG1faWRlbnRpZmll
ci5vcmlnaW4oKSwgdGFza1NpemUsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9
LCB3ZWFrVHJhbnNhY3Rpb24gPSBXZWFrUHRyIHsgdHJhbnNhY3Rpb24gfSwgaW5mbywgY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAg
ICAgIGlmICghd2Vha1RoaXMgfHwgIXdlYWtUcmFuc2FjdGlvbikKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkRhdGFiYXNlIG9y
IHRyYW5zYWN0aW9uIGlzIGNsb3NlZCIgfSk7CisKKyAgICAgICAgICAgIGNyZWF0ZUluZGV4KCp3
ZWFrVHJhbnNhY3Rpb24sIGluZm8sIFdURk1vdmUoY2FsbGJhY2spLCBncmFudGVkKTsKKyAgICAg
ICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIXNwYWNlQ2hlY2tSZXN1
bHQudmFsdWUoKSkgewogICAgICAgICBjYWxsYmFjayhJREJFcnJvciB7IFF1b3RhRXhjZWVkZWRF
cnJvciwgcXVvdGFFcnJvck1lc3NhZ2VOYW1lKCJDcmVhdGVJbmRleCIpIH0pOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgQVNTRVJUKG1fYmFja2luZ1N0b3JlKTsKKyAgICBpZiAoIW1f
YmFja2luZ1N0b3JlKQorICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlk
U3RhdGVFcnJvciwgIkJhY2tpbmcgc3RvcmUgaXMgY2xvc2VkIiB9KTsKKwogICAgIGF1dG8gZXJy
b3IgPSBtX2JhY2tpbmdTdG9yZS0+Y3JlYXRlSW5kZXgodHJhbnNhY3Rpb24uaW5mbygpLmlkZW50
aWZpZXIoKSwgaW5mbyk7CiAgICAgaWYgKGVycm9yLmlzTnVsbCgpKSB7CiAgICAgICAgIEFTU0VS
VChtX2RhdGFiYXNlSW5mbyk7CkBAIC02NDQsMTEgKzc0OSwyOCBAQCB2b2lkIFVuaXF1ZUlEQkRh
dGFiYXNlOjpjcmVhdGVJbmRleChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2Fj
dGlvbiwgYwogICAgIGNhbGxiYWNrKGVycm9yKTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFz
ZTo6ZGVsZXRlSW5kZXgoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24s
IHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpbmRleE5hbWUs
IEVycm9yQ2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVJ
bmRleChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgdWludDY0X3Qg
b2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGluZGV4TmFtZSwgRXJyb3JDYWxs
YmFjayBjYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCBzcGFjZUNoZWNrUmVzdWx0KQogewogICAg
IEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJE
YXRhYmFzZTo6ZGVsZXRlSW5kZXgiKTsKIAorICAgIGlmICghc3BhY2VDaGVja1Jlc3VsdCkgewor
ICAgICAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJF
cnJvciB7IEludmFsaWRTdGF0ZUVycm9yIH0pOworCisgICAgICAgIG1fbWFuYWdlci0+cmVxdWVz
dFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwgMCwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0
ciB7ICp0aGlzIH0sIHdlYWtUcmFuc2FjdGlvbiA9IFdlYWtQdHIgeyB0cmFuc2FjdGlvbiB9LCBv
YmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4TmFtZSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKV0oYm9vbCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMg
fHwgIXdlYWtUcmFuc2FjdGlvbikKKyAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURC
RXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkRhdGFiYXNlIG9yIHRyYW5zYWN0aW9uIGlzIGNs
b3NlZCIgfSk7CisKKyAgICAgICAgICAgIGRlbGV0ZUluZGV4KCp3ZWFrVHJhbnNhY3Rpb24sIG9i
amVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhOYW1lLCBXVEZNb3ZlKGNhbGxiYWNrKSwgZ3JhbnRl
ZCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKHNw
YWNlQ2hlY2tSZXN1bHQudmFsdWUoKSk7CisgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkKKyAgICAg
ICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJCYWNraW5n
IHN0b3JlIGlzIGNsb3NlZCIgfSk7CisKICAgICBhdXRvKiBvYmplY3RTdG9yZUluZm8gPSBtX2Rh
dGFiYXNlSW5mby0+aW5mb0ZvckV4aXN0aW5nT2JqZWN0U3RvcmUob2JqZWN0U3RvcmVJZGVudGlm
aWVyKTsKICAgICBpZiAoIW9iamVjdFN0b3JlSW5mbykgewogICAgICAgICBjYWxsYmFjayhJREJF
cnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gZGVsZXRlIGluZGV4IGZyb20gbm9uLWV4
aXN0YW50IG9iamVjdCBzdG9yZSJfcyB9KTsKQEAgLTY2MCw5ICs3ODIsOCBAQCB2b2lkIFVuaXF1
ZUlEQkRhdGFiYXNlOjpkZWxldGVJbmRleChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0
cmFuc2FjdGlvbiwgdQogICAgICAgICBjYWxsYmFjayhJREJFcnJvciB7IFVua25vd25FcnJvciwg
IkF0dGVtcHQgdG8gZGVsZXRlIG5vbi1leGlzdGFudCBpbmRleCJfcyB9KTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KLSAgICBhdXRvIGluZGV4SWRlbnRpZmllciA9IGluZGV4SW5mby0+aWRlbnRp
ZmllcigpOwogCi0gICAgQVNTRVJUKG1fYmFja2luZ1N0b3JlKTsKKyAgICBhdXRvIGluZGV4SWRl
bnRpZmllciA9IGluZGV4SW5mby0+aWRlbnRpZmllcigpOwogICAgIGF1dG8gZXJyb3IgPSBtX2Jh
Y2tpbmdTdG9yZS0+ZGVsZXRlSW5kZXgodHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSwg
b2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleElkZW50aWZpZXIpOwogICAgIGlmIChlcnJvci5p
c051bGwoKSkKICAgICAgICAgb2JqZWN0U3RvcmVJbmZvLT5kZWxldGVJbmRleChpbmRleElkZW50
aWZpZXIpOwpAQCAtNjcwLDE4ICs3OTEsMzMgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVs
ZXRlSW5kZXgoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIHUKICAg
ICBjYWxsYmFjayhlcnJvcik7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnJlbmFtZUlu
ZGV4KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCB1aW50NjRfdCBv
YmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBuZXdOYW1lLCBFcnJvckNhbGxiYWNrIGNhbGxiYWNrKQordm9pZCBVbmlxdWVJREJEYXRh
YmFzZTo6cmVuYW1lSW5kZXgoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rp
b24sIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgdWludDY0X3QgaW5kZXhJZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUsIEVycm9yQ2FsbGJhY2sgY2FsbGJhY2ssIFNwYWNl
Q2hlY2tSZXN1bHQgc3BhY2VDaGVja1Jlc3VsdCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVh
ZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6OnJlbmFtZUluZGV4
Iik7CiAKLSAgICAvLyBRdW90YSBjaGVjay4KLSAgICBhdXRvIHRhc2tTaXplID0gZGVmYXVsdFdy
aXRlT3BlcmF0aW9uQ29zdCArIG5ld05hbWUuc2l6ZUluQnl0ZXMoKTsKLSAgICBpZiAobV9zZXJ2
ZXIucmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwgdGFza1NpemUpID09IFN0b3Jh
Z2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uOjpEZW55KSB7CisgICAgaWYgKCFzcGFjZUNoZWNrUmVz
dWx0KSB7CisgICAgICAgIGlmICghbV9tYW5hZ2VyKQorICAgICAgICAgICAgcmV0dXJuIGNhbGxi
YWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7CisKKyAgICAgICAgYXV0byB0YXNr
U2l6ZSA9IGRlZmF1bHRXcml0ZU9wZXJhdGlvbkNvc3QgKyBuZXdOYW1lLnNpemVJbkJ5dGVzKCk7
CisgICAgICAgIG1fbWFuYWdlci0+cmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwg
dGFza1NpemUsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCB3ZWFrVHJhbnNh
Y3Rpb24gPSBXZWFrUHRyIHsgdHJhbnNhY3Rpb24gfSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBp
bmRleElkZW50aWZpZXIsIG5ld05hbWUsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJv
b2wgZ3JhbnRlZCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICF3ZWFr
VHJhbnNhY3Rpb24pCisgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsg
SW52YWxpZFN0YXRlRXJyb3IsICJEYXRhYmFzZSBvciB0cmFuc2FjdGlvbiBpcyBjbG9zZWQiIH0p
OworCisgICAgICAgICAgICByZW5hbWVJbmRleCgqd2Vha1RyYW5zYWN0aW9uLCBvYmplY3RTdG9y
ZUlkZW50aWZpZXIsIGluZGV4SWRlbnRpZmllciwgbmV3TmFtZSwgV1RGTW92ZShjYWxsYmFjayks
IGdyYW50ZWQpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlm
ICghc3BhY2VDaGVja1Jlc3VsdC52YWx1ZSgpKSB7CiAgICAgICAgIGNhbGxiYWNrKElEQkVycm9y
IHsgUXVvdGFFeGNlZWRlZEVycm9yLCBxdW90YUVycm9yTWVzc2FnZU5hbWUoIlJlbmFtZUluZGV4
IikgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBpZiAoIW1fYmFja2luZ1N0b3Jl
KQorICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwg
IkJhY2tpbmcgc3RvcmUgaXMgY2xvc2VkIiB9KTsKKwogICAgIGF1dG8qIG9iamVjdFN0b3JlSW5m
byA9IG1fZGF0YWJhc2VJbmZvLT5pbmZvRm9yRXhpc3RpbmdPYmplY3RTdG9yZShvYmplY3RTdG9y
ZUlkZW50aWZpZXIpOwogICAgIGlmICghb2JqZWN0U3RvcmVJbmZvKSB7CiAgICAgICAgIGNhbGxi
YWNrKElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byByZW5hbWUgaW5kZXggaW4g
bm9uLWV4aXN0YW50IG9iamVjdCBzdG9yZSJfcyB9KTsKQEAgLTY5NCw3ICs4MzAsNiBAQCB2b2lk
IFVuaXF1ZUlEQkRhdGFiYXNlOjpyZW5hbWVJbmRleChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0
aW9uJiB0cmFuc2FjdGlvbiwgdQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgQVNTRVJU
KG1fYmFja2luZ1N0b3JlKTsKICAgICBhdXRvIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPnJlbmFt
ZUluZGV4KHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCksIG9iamVjdFN0b3JlSWRlbnRp
ZmllciwgaW5kZXhJZGVudGlmaWVyLCBuZXdOYW1lKTsKICAgICBpZiAoZXJyb3IuaXNOdWxsKCkp
CiAgICAgICAgIGluZGV4SW5mby0+cmVuYW1lKG5ld05hbWUpOwpAQCAtNzA5LDE3ICs4NDQsMTkg
QEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cHV0T3JBZGQoY29uc3QgSURCUmVxdWVzdERhdGEm
IHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXkKIAogICAgIEFTU0VSVChtX2RhdGFiYXNlSW5mbyk7
CiAKLSAgICBJREJLZXlEYXRhIHVzZWRLZXk7Ci0gICAgSURCRXJyb3IgZXJyb3I7CisgICAgaWYg
KCFtX2JhY2tpbmdTdG9yZSkKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52
YWxpZFN0YXRlRXJyb3IsICJCYWNraW5nIHN0b3JlIGlzIGNsb3NlZCIgfSwga2V5RGF0YSk7CiAK
LSAgICBBU1NFUlQobV9iYWNraW5nU3RvcmUpOwogICAgIGF1dG8gb2JqZWN0U3RvcmVJZGVudGlm
aWVyID0gcmVxdWVzdERhdGEub2JqZWN0U3RvcmVJZGVudGlmaWVyKCk7CiAgICAgYXV0byogb2Jq
ZWN0U3RvcmVJbmZvID0gbV9iYWNraW5nU3RvcmUtPmluZm9Gb3JPYmplY3RTdG9yZShvYmplY3RT
dG9yZUlkZW50aWZpZXIpOwotICAgIGlmICghb2JqZWN0U3RvcmVJbmZvKSB7Ci0gICAgICAgIGNh
bGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJPYmplY3Qgc3RvcmUgY2Fubm90
IGJlIGZvdW5kIGluIHRoZSBiYWNraW5nIHN0b3JlIl9zIH0sIHVzZWRLZXkpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQorICAgIGlmICghb2JqZWN0U3RvcmVJbmZvKQorICAgICAgICByZXR1cm4g
Y2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIk9iamVjdCBzdG9yZSBjYW5u
b3QgYmUgZm91bmQgaW4gdGhlIGJhY2tpbmcgc3RvcmUiX3MgfSwga2V5RGF0YSk7CisKKyAgICBp
ZiAoIW1fbWFuYWdlcikKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxp
ZFN0YXRlRXJyb3IgfSwga2V5RGF0YSk7CiAKKyAgICBJREJLZXlEYXRhIHVzZWRLZXk7CisgICAg
SURCRXJyb3IgZXJyb3I7CiAgICAgYm9vbCB1c2VkS2V5SXNHZW5lcmF0ZWQgPSBmYWxzZTsKICAg
ICB1aW50NjRfdCBrZXlOdW1iZXI7CiAgICAgYXV0byB0cmFuc2FjdGlvbklkZW50aWZpZXIgPSBy
ZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKTsKQEAgLTczMCw3NiArODY3LDEwNSBA
QCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwdXRPckFkZChjb25zdCBJREJSZXF1ZXN0RGF0YSYg
cmVxdWVzdERhdGEsIGNvbnN0IElEQktleQogCiAgICAgaWYgKG9iamVjdFN0b3JlSW5mby0+YXV0
b0luY3JlbWVudCgpICYmICFrZXlEYXRhLmlzVmFsaWQoKSkgewogICAgICAgICBlcnJvciA9IG1f
YmFja2luZ1N0b3JlLT5nZW5lcmF0ZUtleU51bWJlcih0cmFuc2FjdGlvbklkZW50aWZpZXIsIG9i
amVjdFN0b3JlSWRlbnRpZmllciwga2V5TnVtYmVyKTsKLSAgICAgICAgaWYgKCFlcnJvci5pc051
bGwoKSkgewotICAgICAgICAgICAgY2FsbGJhY2soZXJyb3IsIHVzZWRLZXkpOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9CisgICAgICAgIGlmICghZXJyb3IuaXNOdWxsKCkpCisgICAg
ICAgICAgICByZXR1cm4gY2FsbGJhY2soZXJyb3IsIHVzZWRLZXkpOworCiAgICAgICAgIHVzZWRL
ZXkuc2V0TnVtYmVyVmFsdWUoa2V5TnVtYmVyKTsKICAgICAgICAgdXNlZEtleUlzR2VuZXJhdGVk
ID0gdHJ1ZTsKICAgICB9IGVsc2UKICAgICAgICAgdXNlZEtleSA9IGtleURhdGE7CiAKLSAgICAv
LyBHZW5lcmF0ZSBpbmRleCBrZXlzIHVwIGZyb250IGZvciBtb3JlIGFjY3VyYXRlIHF1b3RhIGNo
ZWNrLgotICAgIEluZGV4SURUb0luZGV4S2V5TWFwIGluZGV4S2V5czsKLSAgICBjYWxsT25JREJT
ZXJpYWxpemF0aW9uVGhyZWFkQW5kV2FpdChbb2JqZWN0U3RvcmVJbmZvID0gb2JqZWN0U3RvcmVJ
bmZvLT5pc29sYXRlZENvcHkoKSwga2V5ID0gdXNlZEtleS5pc29sYXRlZENvcHkoKSwgdmFsdWUg
PSB2YWx1ZS5pc29sYXRlZENvcHkoKSwgJmluZGV4S2V5c10oYXV0byYgZ2xvYmFsT2JqZWN0KSB7
Ci0gICAgICAgIGluZGV4S2V5cyA9IGdlbmVyYXRlSW5kZXhLZXlNYXBGb3JWYWx1ZShnbG9iYWxP
YmplY3QsIG9iamVjdFN0b3JlSW5mbywga2V5LCB2YWx1ZSk7Ci0gICAgfSk7Ci0KICAgICBpZiAo
b3ZlcndyaXRlTW9kZSA9PSBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZTo6Tm9P
dmVyd3JpdGUpIHsKICAgICAgICAgYm9vbCBrZXlFeGlzdHM7CiAgICAgICAgIGVycm9yID0gbV9i
YWNraW5nU3RvcmUtPmtleUV4aXN0c0luT2JqZWN0U3RvcmUodHJhbnNhY3Rpb25JZGVudGlmaWVy
LCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVzZWRLZXksIGtleUV4aXN0cyk7Ci0gICAgICAgIGlm
IChlcnJvci5pc051bGwoKSAmJiBrZXlFeGlzdHMpCisgICAgICAgIGlmICghZXJyb3IgJiYga2V5
RXhpc3RzKQogICAgICAgICAgICAgZXJyb3IgPSBJREJFcnJvciB7IENvbnN0cmFpbnRFcnJvciwg
IktleSBhbHJlYWR5IGV4aXN0cyBpbiB0aGUgb2JqZWN0IHN0b3JlIl9zIH07CiAKLSAgICAgICAg
aWYgKCFlcnJvci5pc051bGwoKSkgewotICAgICAgICAgICAgY2FsbGJhY2soZXJyb3IsIHVzZWRL
ZXkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgICAgIGlmICghIWVycm9y
KQorICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGVycm9yLCB1c2VkS2V5KTsKICAgICB9CiAK
LSAgICAvLyBRdW90YSBjaGVjay4KKyAgICAvLyBHZW5lcmF0ZSBpbmRleCBrZXlzIHVwIGZyb250
IGZvciBtb3JlIGFjY3VyYXRlIHF1b3RhIGNoZWNrLgorICAgIEluZGV4SURUb0luZGV4S2V5TWFw
IGluZGV4S2V5czsKKyAgICBjYWxsT25JREJTZXJpYWxpemF0aW9uVGhyZWFkQW5kV2FpdChbb2Jq
ZWN0U3RvcmVJbmZvID0gb2JqZWN0U3RvcmVJbmZvLT5pc29sYXRlZENvcHkoKSwga2V5ID0gdXNl
ZEtleS5pc29sYXRlZENvcHkoKSwgdmFsdWUgPSB2YWx1ZS5pc29sYXRlZENvcHkoKSwgJmluZGV4
S2V5c10oYXV0byYgZ2xvYmFsT2JqZWN0KSB7CisgICAgICAgIGluZGV4S2V5cyA9IGdlbmVyYXRl
SW5kZXhLZXlNYXBGb3JWYWx1ZShnbG9iYWxPYmplY3QsIG9iamVjdFN0b3JlSW5mbywga2V5LCB2
YWx1ZSk7CisgICAgfSk7CisKKyAgICBnZW5lcmF0ZWRLZXlSZXNldHRlci5yZWxlYXNlKCk7CiAg
ICAgYXV0byBrZXlTaXplID0gZXN0aW1hdGVTaXplKHVzZWRLZXkpOwogICAgIGF1dG8gdmFsdWVT
aXplID0gZXN0aW1hdGVTaXplKHZhbHVlKTsKICAgICBhdXRvIGluZGV4U2l6ZSA9IGVzdGltYXRl
U2l6ZSgqb2JqZWN0U3RvcmVJbmZvLCBpbmRleEtleXMsIGtleVNpemUpOwogICAgIGF1dG8gdGFz
a1NpemUgPSBkZWZhdWx0V3JpdGVPcGVyYXRpb25Db3N0ICsga2V5U2l6ZSArIHZhbHVlU2l6ZSAr
IGluZGV4U2l6ZTsKIAogICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6cHV0
T3JBZGQgcXVvdGEgY2hlY2sgd2l0aCB0YXNrIHNpemU6ICUiIFBSSXU2NCAiIGtleSBzaXplOiAl
IiBQUkl1NjQgIiB2YWx1ZSBzaXplOiAlIiBQUkl1NjQgIiBpbmRleCBzaXplOiAlIiBQUkl1NjQs
IHRhc2tTaXplLCBrZXlTaXplLCB2YWx1ZVNpemUsIGluZGV4U2l6ZSk7CisgICAgbV9tYW5hZ2Vy
LT5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCB0YXNrU2l6ZSwgW3RoaXMsIHdl
YWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHJlcXVlc3REYXRhLCB1c2VkS2V5LCB2YWx1ZSwg
b3ZlcndyaXRlTW9kZSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgdXNlZEtleUlzR2Vu
ZXJhdGVkLCBpbmRleEtleXMsIG9iamVjdFN0b3JlSW5mbyA9ICpvYmplY3RTdG9yZUluZm9dKGJv
b2wgZ3JhbnRlZCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAg
ICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkRhdGFiYXNl
IGlzIGNsb3NlZCIgfSwgdXNlZEtleSk7CiAKLSAgICBpZiAobV9zZXJ2ZXIucmVxdWVzdFNwYWNl
KG1faWRlbnRpZmllci5vcmlnaW4oKSwgdGFza1NpemUpID09IFN0b3JhZ2VRdW90YU1hbmFnZXI6
OkRlY2lzaW9uOjpEZW55KSB7Ci0gICAgICAgIGNhbGxiYWNrKElEQkVycm9yIHsgUXVvdGFFeGNl
ZWRlZEVycm9yLCBxdW90YUVycm9yTWVzc2FnZU5hbWUoIlB1dE9yQWRkIikgfSwgdXNlZEtleSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgICAgIHB1dE9yQWRkQWZ0ZXJTcGFjZUNoZWNr
KHJlcXVlc3REYXRhLCB1c2VkS2V5LCB2YWx1ZSwgb3ZlcndyaXRlTW9kZSwgV1RGTW92ZShjYWxs
YmFjayksIHVzZWRLZXlJc0dlbmVyYXRlZCwgaW5kZXhLZXlzLCBvYmplY3RTdG9yZUluZm8sIGdy
YW50ZWQpOworICAgIH0pOworfQorCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwdXRPckFkZEFm
dGVyU3BhY2VDaGVjayhjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElE
QktleURhdGEmIGtleURhdGEsIGNvbnN0IElEQlZhbHVlJiB2YWx1ZSwgSW5kZXhlZERCOjpPYmpl
Y3RTdG9yZU92ZXJ3cml0ZU1vZGUgb3ZlcndyaXRlTW9kZSwgS2V5RGF0YUNhbGxiYWNrIGNhbGxi
YWNrLCBib29sIGlzS2V5R2VuZXJhdGVkLCBjb25zdCBJbmRleElEVG9JbmRleEtleU1hcCYgaW5k
ZXhLZXlzLCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mIG9iamVjdFN0b3JlSW5mbywgU3BhY2VD
aGVja1Jlc3VsdCBzcGFjZUNoZWNrUmVzdWx0KQoreworICAgIEFTU0VSVCghaXNNYWluVGhyZWFk
KCkpOworICAgIEFTU0VSVChtX2RhdGFiYXNlSW5mbyk7CisKKyAgICBpZiAoIW1fYmFja2luZ1N0
b3JlKQorICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJv
ciwgIkJhY2tpbmcgc3RvcmUgaXMgY2xvc2VkIiB9LCBrZXlEYXRhKTsKKworICAgIHVpbnQ2NF90
IGtleU51bWJlciA9IGlzS2V5R2VuZXJhdGVkID8ga2V5RGF0YS5udW1iZXIoKSA6IDA7CisgICAg
YXV0byBvYmplY3RTdG9yZUlkZW50aWZpZXIgPSBvYmplY3RTdG9yZUluZm8uaWRlbnRpZmllcigp
OworICAgIGF1dG8gdHJhbnNhY3Rpb25JZGVudGlmaWVyID0gcmVxdWVzdERhdGEudHJhbnNhY3Rp
b25JZGVudGlmaWVyKCk7CisgICAgYXV0byBnZW5lcmF0ZWRLZXlSZXNldHRlciA9IG1ha2VTY29w
ZUV4aXQoW3RoaXMsIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgb2JqZWN0U3RvcmVJZGVudGlmaWVy
LCAma2V5TnVtYmVyLCAmaXNLZXlHZW5lcmF0ZWRdKCkgeworICAgICAgICBpZiAoaXNLZXlHZW5l
cmF0ZWQpCisgICAgICAgICAgICBtX2JhY2tpbmdTdG9yZS0+cmV2ZXJ0R2VuZXJhdGVkS2V5TnVt
YmVyKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBrZXlOdW1i
ZXIpOworICAgIH0pOwogCisgICAgaWYgKCFzcGFjZUNoZWNrUmVzdWx0IHx8ICFzcGFjZUNoZWNr
UmVzdWx0LnZhbHVlKCkpCisgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IFF1b3Rh
RXhjZWVkZWRFcnJvciwgcXVvdGFFcnJvck1lc3NhZ2VOYW1lKCJQdXRPckFkZCIpIH0sIGtleURh
dGEpOwogICAgIC8vIElmIGEgcmVjb3JkIGFscmVhZHkgZXhpc3RzIGluIHN0b3JlLCB0aGVuIHJl
bW92ZSB0aGUgcmVjb3JkIGZyb20gc3RvcmUgdXNpbmcgdGhlIHN0ZXBzIGZvciBkZWxldGluZyBy
ZWNvcmRzIGZyb20gYW4gb2JqZWN0IHN0b3JlLgotICAgIC8vIFRoaXMgaXMgaW1wb3J0YW50IGJl
Y2F1c2UgZm9ybWFsbHkgZGVsZXRpbmcgaXQgZnJvbSBmcm9tIHRoZSBvYmplY3Qgc3RvcmUgYWxz
byByZW1vdmVzIGl0IGZyb20gdGhlIGFwcHJvcHJpYXRlIGluZGV4ZXMuCi0gICAgZXJyb3IgPSBt
X2JhY2tpbmdTdG9yZS0+ZGVsZXRlUmFuZ2UodHJhbnNhY3Rpb25JZGVudGlmaWVyLCBvYmplY3RT
dG9yZUlkZW50aWZpZXIsIHVzZWRLZXkpOwotICAgIGlmICghZXJyb3IuaXNOdWxsKCkpIHsKLSAg
ICAgICAgY2FsbGJhY2soZXJyb3IsIHVzZWRLZXkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQor
ICAgIC8vIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UgZm9ybWFsbHkgZGVsZXRpbmcgaXQgZnJv
bSB0aGUgb2JqZWN0IHN0b3JlIGFsc28gcmVtb3ZlcyBpdCBmcm9tIHRoZSBhcHByb3ByaWF0ZSBp
bmRleGVzLgorICAgIElEQkVycm9yIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPmRlbGV0ZVJhbmdl
KHRyYW5zYWN0aW9uSWRlbnRpZmllciwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBrZXlEYXRhKTsK
KyAgICBpZiAoIWVycm9yLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gY2FsbGJhY2soZXJyb3Is
IGtleURhdGEpOwogCi0gICAgZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+YWRkUmVjb3JkKHRyYW5z
YWN0aW9uSWRlbnRpZmllciwgKm9iamVjdFN0b3JlSW5mbywgdXNlZEtleSwgaW5kZXhLZXlzLCB2
YWx1ZSk7Ci0gICAgaWYgKCFlcnJvci5pc051bGwoKSkgewotICAgICAgICBjYWxsYmFjayhlcnJv
ciwgdXNlZEtleSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgZXJyb3IgPSBtX2JhY2tp
bmdTdG9yZS0+YWRkUmVjb3JkKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgb2JqZWN0U3RvcmVJbmZv
LCBrZXlEYXRhLCBpbmRleEtleXMsIHZhbHVlKTsKKyAgICBpZiAoIWVycm9yLmlzTnVsbCgpKQor
ICAgICAgICByZXR1cm4gY2FsbGJhY2soZXJyb3IsIGtleURhdGEpOwogCi0gICAgaWYgKG92ZXJ3
cml0ZU1vZGUgIT0gSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGU6Ok92ZXJ3cml0
ZUZvckN1cnNvciAmJiBvYmplY3RTdG9yZUluZm8tPmF1dG9JbmNyZW1lbnQoKSAmJiBrZXlEYXRh
LnR5cGUoKSA9PSBJbmRleGVkREI6OktleVR5cGU6Ok51bWJlcikKKyAgICBpZiAob3ZlcndyaXRl
TW9kZSAhPSBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZTo6T3ZlcndyaXRlRm9y
Q3Vyc29yICYmIG9iamVjdFN0b3JlSW5mby5hdXRvSW5jcmVtZW50KCkgJiYga2V5RGF0YS50eXBl
KCkgPT0gSW5kZXhlZERCOjpLZXlUeXBlOjpOdW1iZXIpCiAgICAgICAgIGVycm9yID0gbV9iYWNr
aW5nU3RvcmUtPm1heWJlVXBkYXRlS2V5R2VuZXJhdG9yTnVtYmVyKHRyYW5zYWN0aW9uSWRlbnRp
Zmllciwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBrZXlEYXRhLm51bWJlcigpKTsKIAogICAgIGdl
bmVyYXRlZEtleVJlc2V0dGVyLnJlbGVhc2UoKTsKLSAgICBjYWxsYmFjayhlcnJvciwgdXNlZEtl
eSk7CisgICAgY2FsbGJhY2soZXJyb3IsIGtleURhdGEpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRh
dGFiYXNlOjpnZXRSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25z
dCBJREJHZXRSZWNvcmREYXRhJiBnZXRSZWNvcmREYXRhLCBHZXRSZXN1bHRDYWxsYmFjayBjYWxs
YmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmdldFJlY29yZChjb25zdCBJREJSZXF1ZXN0
RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkdldFJlY29yZERhdGEmIGdldFJlY29yZERhdGEs
IEdldFJlc3VsdENhbGxiYWNrIGNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0IHNwYWNlQ2hlY2tS
ZXN1bHQpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWRE
QiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRSZWNvcmQiKTsKIAorICAgIGlmICghc3BhY2VDaGVj
a1Jlc3VsdCkgeworICAgICAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAgICAgICAgIHJldHVybiBj
YWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yIH0sIElEQkdldFJlc3VsdCB7IH0p
OworCisgICAgICAgIG1fbWFuYWdlci0+cmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4o
KSwgMCwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHJlcXVlc3REYXRhLCBn
ZXRSZWNvcmREYXRhLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIGdyYW50ZWQp
IG11dGFibGUgeworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkRhdGFiYXNlIGlz
IGNsb3NlZCIgfSwgSURCR2V0UmVzdWx0IHsgfSk7CisKKyAgICAgICAgICAgIGdldFJlY29yZChy
ZXF1ZXN0RGF0YSwgZ2V0UmVjb3JkRGF0YSwgV1RGTW92ZShjYWxsYmFjayksIGdyYW50ZWQpOwor
ICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChzcGFjZUNo
ZWNrUmVzdWx0LnZhbHVlKCkpOworICAgIGlmICghbV9iYWNraW5nU3RvcmUpCisgICAgICAgIHJl
dHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiQmFja2luZyBzdG9y
ZSBpcyBjbG9zZWQiIH0sIElEQkdldFJlc3VsdCB7IH0pOworCiAgICAgSURCR2V0UmVzdWx0IHJl
c3VsdDsKICAgICBJREJFcnJvciBlcnJvcjsKIAotICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7
CiAgICAgaWYgKHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciA9IHJlcXVlc3REYXRhLmluZGV4SWRl
bnRpZmllcigpKQogICAgICAgICBlcnJvciA9IG1fYmFja2luZ1N0b3JlLT5nZXRJbmRleFJlY29y
ZChyZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSwgcmVxdWVzdERhdGEub2JqZWN0
U3RvcmVJZGVudGlmaWVyKCksIGluZGV4SWRlbnRpZmllciwgcmVxdWVzdERhdGEuaW5kZXhSZWNv
cmRUeXBlKCksIGdldFJlY29yZERhdGEua2V5UmFuZ2VEYXRhLCByZXN1bHQpOwogICAgIGVsc2UK
QEAgLTgwOCw0NyArOTc0LDExMCBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRSZWNvcmQo
Y29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJHZQogICAgIGNhbGxi
YWNrKGVycm9yLCByZXN1bHQpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRBbGxS
ZWNvcmRzKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCR2V0QWxs
UmVjb3Jkc0RhdGEmIGdldEFsbFJlY29yZHNEYXRhLCBHZXRBbGxSZXN1bHRzQ2FsbGJhY2sgY2Fs
bGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRBbGxSZWNvcmRzKGNvbnN0IElEQlJl
cXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCR2V0QWxsUmVjb3Jkc0RhdGEmIGdldEFs
bFJlY29yZHNEYXRhLCBHZXRBbGxSZXN1bHRzQ2FsbGJhY2sgY2FsbGJhY2ssIFNwYWNlQ2hlY2tS
ZXN1bHQgc3BhY2VDaGVja1Jlc3VsdCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsK
ICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6OmdldEFsbFJlY29yZHMiKTsK
IAotICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CisgICAgaWYgKCFzcGFjZUNoZWNrUmVzdWx0
KSB7CisgICAgICAgIGlmICghbV9tYW5hZ2VyKQorICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNr
KElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IgfSwgSURCR2V0QWxsUmVzdWx0IHsgfSk7CisK
KyAgICAgICAgbV9tYW5hZ2VyLT5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCAw
LCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgcmVxdWVzdERhdGEsIGdldEFs
bFJlY29yZHNEYXRhLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIGdyYW50ZWQp
IG11dGFibGUgeworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkRhdGFiYXNlIGlz
IGNsb3NlZCIgfSwgSURCR2V0QWxsUmVzdWx0IHsgfSk7CisKKyAgICAgICAgICAgIGdldEFsbFJl
Y29yZHMocmVxdWVzdERhdGEsIGdldEFsbFJlY29yZHNEYXRhLCBXVEZNb3ZlKGNhbGxiYWNrKSwg
Z3JhbnRlZCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNT
RVJUKHNwYWNlQ2hlY2tSZXN1bHQudmFsdWUoKSk7CisgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkK
KyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJC
YWNraW5nIHN0b3JlIGlzIGNsb3NlZCIgfSwgSURCR2V0QWxsUmVzdWx0IHsgfSk7CisKICAgICBJ
REJHZXRBbGxSZXN1bHQgcmVzdWx0OwogICAgIGF1dG8gZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+
Z2V0QWxsUmVjb3JkcyhyZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSwgZ2V0QWxs
UmVjb3Jkc0RhdGEsIHJlc3VsdCk7CiAKICAgICBjYWxsYmFjayhlcnJvciwgcmVzdWx0KTsKIH0K
IAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Z2V0Q291bnQoY29uc3QgSURCUmVxdWVzdERhdGEm
IHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIHJhbmdlLCBDb3VudENhbGxiYWNr
IGNhbGxiYWNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Z2V0Q291bnQoY29uc3QgSURCUmVx
dWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIHJhbmdlLCBDb3Vu
dENhbGxiYWNrIGNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0IHNwYWNlQ2hlY2tSZXN1bHQpCiB7
CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1
ZUlEQkRhdGFiYXNlOjpnZXRDb3VudCIpOwogCi0gICAgQVNTRVJUKG1fYmFja2luZ1N0b3JlKTsK
KyAgICBpZiAoIXNwYWNlQ2hlY2tSZXN1bHQpIHsKKyAgICAgICAgaWYgKCFtX21hbmFnZXIpCisg
ICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciB9
LCAwKTsKKworICAgICAgICBtX21hbmFnZXItPnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3Jp
Z2luKCksIDAsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCByZXF1ZXN0RGF0
YSwgcmFuZ2UsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgZ3JhbnRlZCkgbXV0
YWJsZSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHJldHVy
biBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiRGF0YWJhc2UgaXMgY2xv
c2VkIiB9LCAwKTsKKworICAgICAgICAgICAgZ2V0Q291bnQocmVxdWVzdERhdGEsIHJhbmdlLCBX
VEZNb3ZlKGNhbGxiYWNrKSwgZ3JhbnRlZCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgQVNTRVJUKHNwYWNlQ2hlY2tSZXN1bHQudmFsdWUoKSk7CisgICAgaWYg
KCFtX2JhY2tpbmdTdG9yZSkKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52
YWxpZFN0YXRlRXJyb3IsICJCYWNraW5nIHN0b3JlIGlzIGNsb3NlZCIgfSwgMCk7CisKICAgICB1
aW50NjRfdCBjb3VudCA9IDA7CiAgICAgYXV0byBlcnJvciA9IG1fYmFja2luZ1N0b3JlLT5nZXRD
b3VudChyZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSwgcmVxdWVzdERhdGEub2Jq
ZWN0U3RvcmVJZGVudGlmaWVyKCksIHJlcXVlc3REYXRhLmluZGV4SWRlbnRpZmllcigpLCByYW5n
ZSwgY291bnQpOwogCiAgICAgY2FsbGJhY2soZXJyb3IsIGNvdW50KTsKIH0KIAotdm9pZCBVbmlx
dWVJREJEYXRhYmFzZTo6ZGVsZXRlUmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0
RGF0YSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5nZURhdGEsIEVycm9yQ2FsbGJhY2sg
Y2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVSZWNvcmQoY29uc3QgSURC
UmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdl
RGF0YSwgRXJyb3JDYWxsYmFjayBjYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCBzcGFjZUNoZWNr
UmVzdWx0KQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIExPRyhJbmRleGVk
REIsICJVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlUmVjb3JkIik7CiAKLSAgICBBU1NFUlQobV9i
YWNraW5nU3RvcmUpOworICAgIGlmICghc3BhY2VDaGVja1Jlc3VsdCkgeworICAgICAgICBpZiAo
IW1fbWFuYWdlcikKKyAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFs
aWRTdGF0ZUVycm9yIH0pOworCisgICAgICAgIG1fbWFuYWdlci0+cmVxdWVzdFNwYWNlKG1faWRl
bnRpZmllci5vcmlnaW4oKSwgMCwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0s
IHJlcXVlc3REYXRhLCBrZXlSYW5nZURhdGEsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayld
KGJvb2wgZ3JhbnRlZCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAg
ICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9y
LCAiRGF0YWJhc2UgaXMgY2xvc2VkIiB9KTsKKworICAgICAgICAgICAgZGVsZXRlUmVjb3JkKHJl
cXVlc3REYXRhLCBrZXlSYW5nZURhdGEsIFdURk1vdmUoY2FsbGJhY2spLCBncmFudGVkKTsKKyAg
ICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQoc3BhY2VDaGVj
a1Jlc3VsdC52YWx1ZSgpKTsKKyAgICBpZiAoIW1fYmFja2luZ1N0b3JlKQorICAgICAgICByZXR1
cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkJhY2tpbmcgc3RvcmUg
aXMgY2xvc2VkIiB9KTsKKwogICAgIGF1dG8gZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+ZGVsZXRl
UmFuZ2UocmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCksIHJlcXVlc3REYXRhLm9i
amVjdFN0b3JlSWRlbnRpZmllcigpLCBrZXlSYW5nZURhdGEpOwogCiAgICAgY2FsbGJhY2soZXJy
b3IpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuQ3Vyc29yKGNvbnN0IElEQlJl
cXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCQ3Vyc29ySW5mbyYgaW5mbywgR2V0UmVz
dWx0Q2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuQ3Vyc29y
KGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCQ3Vyc29ySW5mbyYg
aW5mbywgR2V0UmVzdWx0Q2FsbGJhY2sgY2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgc3BhY2VD
aGVja1Jlc3VsdCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5k
ZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6Om9wZW5DdXJzb3IiKTsKIAotICAgIEFTU0VSVCht
X2JhY2tpbmdTdG9yZSk7CisgICAgaWYgKCFzcGFjZUNoZWNrUmVzdWx0KSB7CisgICAgICAgIGlm
ICghbV9tYW5hZ2VyKQorICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52
YWxpZFN0YXRlRXJyb3IgfSwgSURCR2V0UmVzdWx0IHsgfSk7CisKKyAgICAgICAgbV9tYW5hZ2Vy
LT5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCAwLCBbdGhpcywgd2Vha1RoaXMg
PSBXZWFrUHRyIHsgKnRoaXMgfSwgcmVxdWVzdERhdGEsIGluZm8sIGNhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayldKGJvb2wgZ3JhbnRlZCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXdl
YWtUaGlzKQorICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFs
aWRTdGF0ZUVycm9yLCAiRGF0YWJhc2Ugb3IgdHJhbnNhY3Rpb24gaXMgY2xvc2VkIiB9LCBJREJH
ZXRSZXN1bHQgeyB9KTsKKworICAgICAgICAgICAgb3BlbkN1cnNvcihyZXF1ZXN0RGF0YSwgaW5m
bywgV1RGTW92ZShjYWxsYmFjayksIGdyYW50ZWQpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIEFTU0VSVChzcGFjZUNoZWNrUmVzdWx0LnZhbHVlKCkpOworICAg
IGlmICghbV9iYWNraW5nU3RvcmUpCisgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7
IEludmFsaWRTdGF0ZUVycm9yLCAiQmFja2luZyBzdG9yZSBpcyBjbG9zZWQiIH0sIElEQkdldFJl
c3VsdCB7IH0pOwogCiAgICAgSURCR2V0UmVzdWx0IHJlc3VsdDsKICAgICBhdXRvIGVycm9yID0g
bV9iYWNraW5nU3RvcmUtPm9wZW5DdXJzb3IocmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlm
aWVyKCksIGluZm8sIHJlc3VsdCk7CkBAIC04NTYsMTIgKzEwODUsMjcgQEAgdm9pZCBVbmlxdWVJ
REJEYXRhYmFzZTo6b3BlbkN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEs
IGNvbnN0IElEQkMKICAgICBjYWxsYmFjayhlcnJvciwgcmVzdWx0KTsKIH0KIAotdm9pZCBVbmlx
dWVJREJEYXRhYmFzZTo6aXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVz
dERhdGEsIGNvbnN0IElEQkl0ZXJhdGVDdXJzb3JEYXRhJiBkYXRhLCBHZXRSZXN1bHRDYWxsYmFj
ayBjYWxsYmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6Oml0ZXJhdGVDdXJzb3IoY29uc3Qg
SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJJdGVyYXRlQ3Vyc29yRGF0YSYg
ZGF0YSwgR2V0UmVzdWx0Q2FsbGJhY2sgY2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgc3BhY2VD
aGVja1Jlc3VsdCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5k
ZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6Oml0ZXJhdGVDdXJzb3IiKTsKIAotICAgIEFTU0VS
VChtX2JhY2tpbmdTdG9yZSk7CisgICAgaWYgKCFzcGFjZUNoZWNrUmVzdWx0KSB7CisgICAgICAg
IGlmICghbV9tYW5hZ2VyKQorICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsg
SW52YWxpZFN0YXRlRXJyb3IgfSwgSURCR2V0UmVzdWx0IHsgfSk7CisKKyAgICAgICAgbV9tYW5h
Z2VyLT5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCAwLCBbdGhpcywgd2Vha1Ro
aXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgcmVxdWVzdERhdGEsIGRhdGEsIGNhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayldKGJvb2wgZ3JhbnRlZCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAo
IXdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IElu
dmFsaWRTdGF0ZUVycm9yLCAiRGF0YWJhc2Ugb3IgdHJhbnNhY3Rpb24gaXMgY2xvc2VkIiB9LCBJ
REJHZXRSZXN1bHQgeyB9KTsKKworICAgICAgICAgICAgaXRlcmF0ZUN1cnNvcihyZXF1ZXN0RGF0
YSwgZGF0YSwgV1RGTW92ZShjYWxsYmFjayksIGdyYW50ZWQpOworICAgICAgICB9KTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChzcGFjZUNoZWNrUmVzdWx0LnZhbHVlKCkp
OworICAgIGlmICghbV9iYWNraW5nU3RvcmUpCisgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJF
cnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiQmFja2luZyBzdG9yZSBpcyBjbG9zZWQiIH0sIElE
QkdldFJlc3VsdCB7IH0pOwogCiAgICAgSURCR2V0UmVzdWx0IHJlc3VsdDsKICAgICBhdXRvIHRy
YW5zYWN0aW9uSWRlbnRpZmllciA9IHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigp
OwpAQCAtODcxLDEzICsxMTE1LDMwIEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6Oml0ZXJhdGVD
dXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJCiAgICAgY2Fs
bGJhY2soZXJyb3IsIHJlc3VsdCk7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNvbW1p
dFRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBF
cnJvckNhbGxiYWNrIGNhbGxiYWNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y29tbWl0VHJh
bnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIEVycm9y
Q2FsbGJhY2sgY2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgc3BhY2VDaGVja1Jlc3VsdCkKIHsK
ICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVl
SURCRGF0YWJhc2U6OmNvbW1pdFRyYW5zYWN0aW9uIC0gJXMiLCB0cmFuc2FjdGlvbi5pbmZvKCku
aWRlbnRpZmllcigpLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAorICAgIGlmICgh
c3BhY2VDaGVja1Jlc3VsdCkgeworICAgICAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAgICAgICAg
IHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yIH0pOworCisgICAg
ICAgIG1fbWFuYWdlci0+cmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwgMCwgW3Ro
aXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHdlYWtUcmFuc2FjdGlvbiA9IFdlYWtQ
dHIgeyB0cmFuc2FjdGlvbiB9LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIGdy
YW50ZWQpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhd2Vha1RyYW5z
YWN0aW9uKQorICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFs
aWRTdGF0ZUVycm9yLCAiRGF0YWJhc2Ugb3IgdHJhbnNhY3Rpb24gaXMgY2xvc2VkIiB9KTsKKwor
ICAgICAgICAgICAgY29tbWl0VHJhbnNhY3Rpb24oKndlYWtUcmFuc2FjdGlvbiwgV1RGTW92ZShj
YWxsYmFjayksIGdyYW50ZWQpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIEFTU0VSVChzcGFjZUNoZWNrUmVzdWx0LnZhbHVlKCkpOwogICAgIEFTU0VSVCh0cmFu
c2FjdGlvbi5kYXRhYmFzZUNvbm5lY3Rpb24oKS5kYXRhYmFzZSgpID09IHRoaXMpOwotICAgIEFT
U0VSVChtX2JhY2tpbmdTdG9yZSk7CisKKyAgICBpZiAoIW1fYmFja2luZ1N0b3JlKQorICAgICAg
ICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkJhY2tpbmcg
c3RvcmUgaXMgY2xvc2VkIiB9KTsKKwogICAgIGF1dG8gdGFrZW5UcmFuc2FjdGlvbiA9IG1faW5Q
cm9ncmVzc1RyYW5zYWN0aW9ucy50YWtlKHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCkp
OwogICAgIGlmICghdGFrZW5UcmFuc2FjdGlvbikgewogICAgICAgICBpZiAoIW1fb3BlbkRhdGFi
YXNlQ29ubmVjdGlvbnMuY29udGFpbnMoJnRyYW5zYWN0aW9uLmRhdGFiYXNlQ29ubmVjdGlvbigp
KSkKQEAgLTg5MywxMSArMTE1NCwyNSBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjb21taXRU
cmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdAogICAgIHRy
YW5zYWN0aW9uQ29tcGxldGVkKFdURk1vdmUodGFrZW5UcmFuc2FjdGlvbikpOwogfQogCi12b2lk
IFVuaXF1ZUlEQkRhdGFiYXNlOjphYm9ydFRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJh
bnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBFcnJvckNhbGxiYWNrIGNhbGxiYWNrKQordm9pZCBVbmlx
dWVJREJEYXRhYmFzZTo6YWJvcnRUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0
aW9uJiB0cmFuc2FjdGlvbiwgRXJyb3JDYWxsYmFjayBjYWxsYmFjaywgU3BhY2VDaGVja1Jlc3Vs
dCBzcGFjZUNoZWNrUmVzdWx0KQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAg
IExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6YWJvcnRUcmFuc2FjdGlvbiAtICVz
IiwgdHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKS5sb2dnaW5nU3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7CiAKKyAgICBpZiAoIXNwYWNlQ2hlY2tSZXN1bHQpIHsKKyAgICAgICAgaWYgKCFt
X21hbmFnZXIpCisgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlk
U3RhdGVFcnJvciB9KTsKKworICAgICAgICBtX21hbmFnZXItPnJlcXVlc3RTcGFjZShtX2lkZW50
aWZpZXIub3JpZ2luKCksIDAsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCB3
ZWFrVHJhbnNhY3Rpb24gPSBXZWFrUHRyIHsgdHJhbnNhY3Rpb24gfSwgY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKV0oYm9vbCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICgh
d2Vha1RoaXMgfHwgIXdlYWtUcmFuc2FjdGlvbikKKyAgICAgICAgICAgICAgICByZXR1cm4gY2Fs
bGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkRhdGFiYXNlIG9yIHRyYW5zYWN0
aW9uIGlzIGNsb3NlZCIgfSk7CisKKyAgICAgICAgICAgIGFib3J0VHJhbnNhY3Rpb24oKndlYWtU
cmFuc2FjdGlvbiwgV1RGTW92ZShjYWxsYmFjayksIGdyYW50ZWQpOworICAgICAgICB9KTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChzcGFjZUNoZWNrUmVzdWx0LnZhbHVl
KCkpOwogICAgIEFTU0VSVCh0cmFuc2FjdGlvbi5kYXRhYmFzZUNvbm5lY3Rpb24oKS5kYXRhYmFz
ZSgpID09IHRoaXMpOwogCiAgICAgYXV0byB0YWtlblRyYW5zYWN0aW9uID0gbV9pblByb2dyZXNz
VHJhbnNhY3Rpb25zLnRha2UodHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSk7CkBAIC05
MjUsNyArMTIwMCwxMSBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjphYm9ydFRyYW5zYWN0aW9u
KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aQogICAgICAgICBtX2RhdGFi
YXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPigqbV92ZXJzaW9uQ2hhbmdlVHJh
bnNhY3Rpb24tPm9yaWdpbmFsRGF0YWJhc2VJbmZvKCkpOwogICAgIH0KIAotICAgIGF1dG8gZXJy
b3IgPSBtX2JhY2tpbmdTdG9yZS0+YWJvcnRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbklkZW50aWZp
ZXIpOworICAgIElEQkVycm9yIGVycm9yOworICAgIGlmICghbV9iYWNraW5nU3RvcmUpCisgICAg
ICAgIGVycm9yID0gSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkJhY2tpbmcgc3RvcmUg
aXMgY2xvc2VkIiB9OworICAgIGVsc2UKKyAgICAgICAgZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+
YWJvcnRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbklkZW50aWZpZXIpOwogCiAgICAgY2FsbGJhY2so
ZXJyb3IpOwogICAgIHRyYW5zYWN0aW9uQ29tcGxldGVkKFdURk1vdmUodGFrZW5UcmFuc2FjdGlv
bikpOwpAQCAtMTIwNCw2ICsxNDgzLDEyIEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmFib3J0
QWN0aXZlVHJhbnNhY3Rpb25zKCkKICAgICB9CiB9CiAKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6
OmFib3J0SW5Qcm9ncmVzc1RyYW5zYWN0aW9ucygpCit7CisgICAgZm9yIChhdXRvJiBpZGVudGlm
aWVyIDogY29weVRvVmVjdG9yKG1faW5Qcm9ncmVzc1RyYW5zYWN0aW9ucy5rZXlzKCkpKQorICAg
ICAgICBtX2luUHJvZ3Jlc3NUcmFuc2FjdGlvbnMuZ2V0KGlkZW50aWZpZXIpLT5hYm9ydFdpdGhv
dXRDYWxsYmFjaygpOworfQorCiB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjbG9zZSgpCiB7CiAg
ICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpjbG9zZSIpOwpAQCAtMTIxMyw3
ICsxNDk4LDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y2xvc2UoKQogICAgICAgICBtX2Jh
Y2tpbmdTdG9yZSA9IG51bGxwdHI7CiAgICAgfQogfQotCisgICAgCiBib29sIFVuaXF1ZUlEQkRh
dGFiYXNlOjp0cnlDbG9zZSgpCiB7CiAgICAgaWYgKG1fYmFja2luZ1N0b3JlICYmIG1fYmFja2lu
Z1N0b3JlLT5pc0VwaGVtZXJhbCgpKQpAQCAtMTIyNSw2ICsxNTEwLDExIEBAIGJvb2wgVW5pcXVl
SURCRGF0YWJhc2U6OnRyeUNsb3NlKCkKICAgICBjbG9zZSgpOwogICAgIHJldHVybiB0cnVlOwog
fQorICAgIAorYm9vbCBVbmlxdWVJREJEYXRhYmFzZTo6aGFzRGF0YUluTWVtb3J5KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9iYWNraW5nU3RvcmUgPyBtX2JhY2tpbmdTdG9yZS0+aXNFcGhlbWVy
YWwoKSA6IGZhbHNlOworfQogCiBSZWZQdHI8U2VydmVyT3BlbkRCUmVxdWVzdD4gVW5pcXVlSURC
RGF0YWJhc2U6OnRha2VOZXh0UnVubmFibGVSZXF1ZXN0KFJlcXVlc3RUeXBlIHJlcXVlc3RUeXBl
KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L1VuaXF1ZUlEQkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaAppbmRleCBiMmE3NDE3ZjljODE5Y2ZjMjQxNDZjZTVm
YjVjZjVkMjYxMjg1MDgwLi5iMDRkNzEzOWVmZGYwZGM3OThmNjU4Y2U1MjE2OTZhMGE3NmNmZWE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5p
cXVlSURCRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaApAQCAtNTksOCArNTksOCBAQCBlbnVtIGNsYXNzIElu
ZGV4UmVjb3JkVHlwZSA6IGJvb2w7CiBuYW1lc3BhY2UgSURCU2VydmVyIHsKIAogY2xhc3MgSURC
Q29ubmVjdGlvblRvQ2xpZW50OwotY2xhc3MgSURCU2VydmVyOwogY2xhc3MgVW5pcXVlSURCRGF0
YWJhc2VDb25uZWN0aW9uOworY2xhc3MgVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyOwogCiB0eXBl
ZGVmIEZ1bmN0aW9uPHZvaWQoY29uc3QgSURCRXJyb3ImKT4gRXJyb3JDYWxsYmFjazsKIHR5cGVk
ZWYgRnVuY3Rpb248dm9pZChjb25zdCBJREJFcnJvciYsIGNvbnN0IElEQktleURhdGEmKT4gS2V5
RGF0YUNhbGxiYWNrOwpAQCAtNzEsNTQgKzcxLDU5IEBAIHR5cGVkZWYgRnVuY3Rpb248dm9pZChj
b25zdCBJREJFcnJvciYsIHVpbnQ2NF90KT4gQ291bnRDYWxsYmFjazsKIGNsYXNzIFVuaXF1ZUlE
QkRhdGFiYXNlIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFVuaXF1ZUlEQkRhdGFiYXNlPiB7CiAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgVW5pcXVlSURCRGF0YWJh
c2UoSURCU2VydmVyJiwgY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJik7CisgICAgV0VCQ09S
RV9FWFBPUlQgVW5pcXVlSURCRGF0YWJhc2UoVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyJiwgY29u
c3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJik7CiAgICAgVW5pcXVlSURCRGF0YWJhc2UoVW5pcXVl
SURCRGF0YWJhc2UmKSA9IGRlbGV0ZTsKICAgICBXRUJDT1JFX0VYUE9SVCB+VW5pcXVlSURCRGF0
YWJhc2UoKTsKIAotICAgIHZvaWQgb3BlbkRhdGFiYXNlQ29ubmVjdGlvbihJREJDb25uZWN0aW9u
VG9DbGllbnQmLCBjb25zdCBJREJSZXF1ZXN0RGF0YSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgb3BlbkRhdGFiYXNlQ29ubmVjdGlvbihJREJDb25uZWN0aW9uVG9DbGllbnQmLCBjb25zdCBJ
REJSZXF1ZXN0RGF0YSYpOwogCiAgICAgY29uc3QgSURCRGF0YWJhc2VJbmZvJiBpbmZvKCkgY29u
c3Q7Ci0gICAgSURCU2VydmVyJiBzZXJ2ZXIoKSB7IHJldHVybiBtX3NlcnZlcjsgfQorICAgIFVu
aXF1ZUlEQkRhdGFiYXNlTWFuYWdlciogbWFuYWdlcigpOwogICAgIGNvbnN0IElEQkRhdGFiYXNl
SWRlbnRpZmllciYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQog
Ci0gICAgdm9pZCBjcmVhdGVPYmplY3RTdG9yZShVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9u
JiwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiwgRXJyb3JDYWxsYmFjayk7Ci0gICAgdm9pZCBk
ZWxldGVPYmplY3RTdG9yZShVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgY29uc3QgU3Ry
aW5nJiBvYmplY3RTdG9yZU5hbWUsIEVycm9yQ2FsbGJhY2spOwotICAgIHZvaWQgcmVuYW1lT2Jq
ZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIHVpbnQ2NF90IG9iamVjdFN0
b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lLCBFcnJvckNhbGxiYWNrKTsKLSAg
ICB2b2lkIGNsZWFyT2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIHVp
bnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgRXJyb3JDYWxsYmFjayk7Ci0gICAgdm9pZCBj
cmVhdGVJbmRleChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgY29uc3QgSURCSW5kZXhJ
bmZvJiwgRXJyb3JDYWxsYmFjayk7Ci0gICAgdm9pZCBkZWxldGVJbmRleChVbmlxdWVJREJEYXRh
YmFzZVRyYW5zYWN0aW9uJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIGluZGV4TmFtZSwgRXJyb3JDYWxsYmFjayk7Ci0gICAgdm9pZCByZW5hbWVJbmRleChV
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlm
aWVyLCB1aW50NjRfdCBpbmRleElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSwgRXJy
b3JDYWxsYmFjayk7CisgICAgdXNpbmcgU3BhY2VDaGVja1Jlc3VsdCA9IHN0ZDo6b3B0aW9uYWw8
Ym9vbD47CisgICAgdm9pZCBjcmVhdGVPYmplY3RTdG9yZShVbmlxdWVJREJEYXRhYmFzZVRyYW5z
YWN0aW9uJiwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiwgRXJyb3JDYWxsYmFjaywgU3BhY2VD
aGVja1Jlc3VsdCA9IHN0ZDo6bnVsbG9wdCk7CisgICAgdm9pZCBkZWxldGVPYmplY3RTdG9yZShV
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5h
bWUsIEVycm9yQ2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgPSBzdGQ6Om51bGxvcHQpOworICAg
IHZvaWQgcmVuYW1lT2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIHVp
bnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lLCBFcnJv
ckNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0ID0gc3RkOjpudWxsb3B0KTsKKyAgICB2b2lkIGNs
ZWFyT2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIHVpbnQ2NF90IG9i
amVjdFN0b3JlSWRlbnRpZmllciwgRXJyb3JDYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCA9IHN0
ZDo6bnVsbG9wdCk7CisgICAgdm9pZCBjcmVhdGVJbmRleChVbmlxdWVJREJEYXRhYmFzZVRyYW5z
YWN0aW9uJiwgY29uc3QgSURCSW5kZXhJbmZvJiwgRXJyb3JDYWxsYmFjaywgU3BhY2VDaGVja1Jl
c3VsdCA9IHN0ZDo6bnVsbG9wdCk7CisgICAgdm9pZCBkZWxldGVJbmRleChVbmlxdWVJREJEYXRh
YmFzZVRyYW5zYWN0aW9uJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIGluZGV4TmFtZSwgRXJyb3JDYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCA9IHN0ZDo6
bnVsbG9wdCk7CisgICAgdm9pZCByZW5hbWVJbmRleChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0
aW9uJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRleElkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSwgRXJyb3JDYWxsYmFjaywgU3BhY2VDaGVja1Jl
c3VsdCA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgdm9pZCBwdXRPckFkZChjb25zdCBJREJSZXF1ZXN0
RGF0YSYsIGNvbnN0IElEQktleURhdGEmLCBjb25zdCBJREJWYWx1ZSYsIEluZGV4ZWREQjo6T2Jq
ZWN0U3RvcmVPdmVyd3JpdGVNb2RlLCBLZXlEYXRhQ2FsbGJhY2spOwotICAgIHZvaWQgZ2V0UmVj
b3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCR2V0UmVjb3JkRGF0YSYsIEdldFJl
c3VsdENhbGxiYWNrKTsKLSAgICB2b2lkIGdldEFsbFJlY29yZHMoY29uc3QgSURCUmVxdWVzdERh
dGEmLCBjb25zdCBJREJHZXRBbGxSZWNvcmRzRGF0YSYsIEdldEFsbFJlc3VsdHNDYWxsYmFjayk7
Ci0gICAgdm9pZCBnZXRDb3VudChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleVJh
bmdlRGF0YSYsIENvdW50Q2FsbGJhY2spOwotICAgIHZvaWQgZGVsZXRlUmVjb3JkKGNvbnN0IElE
QlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiwgRXJyb3JDYWxsYmFjayk7Ci0g
ICAgdm9pZCBvcGVuQ3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCQ3Vyc29y
SW5mbyYsIEdldFJlc3VsdENhbGxiYWNrKTsKLSAgICB2b2lkIGl0ZXJhdGVDdXJzb3IoY29uc3Qg
SURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJJdGVyYXRlQ3Vyc29yRGF0YSYsIEdldFJlc3VsdENh
bGxiYWNrKTsKLSAgICB2b2lkIGNvbW1pdFRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJh
bnNhY3Rpb24mLCBFcnJvckNhbGxiYWNrKTsKLSAgICB2b2lkIGFib3J0VHJhbnNhY3Rpb24oVW5p
cXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIEVycm9yQ2FsbGJhY2spOworICAgIHZvaWQgcHV0
T3JBZGRBZnRlclNwYWNlQ2hlY2soY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlE
YXRhJiwgY29uc3QgSURCVmFsdWUmLCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9k
ZSwgS2V5RGF0YUNhbGxiYWNrLCBib29sIGlzS2V5R2VuZXJhdGVkLCBjb25zdCBJbmRleElEVG9J
bmRleEtleU1hcCYsIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYsIFNwYWNlQ2hlY2tSZXN1bHQp
OworICAgIHZvaWQgZ2V0UmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCR2V0
UmVjb3JkRGF0YSYsIEdldFJlc3VsdENhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0ID0gc3RkOjpu
dWxsb3B0KTsKKyAgICB2b2lkIGdldEFsbFJlY29yZHMoY29uc3QgSURCUmVxdWVzdERhdGEmLCBj
b25zdCBJREJHZXRBbGxSZWNvcmRzRGF0YSYsIEdldEFsbFJlc3VsdHNDYWxsYmFjaywgU3BhY2VD
aGVja1Jlc3VsdCA9IHN0ZDo6bnVsbG9wdCk7CisgICAgdm9pZCBnZXRDb3VudChjb25zdCBJREJS
ZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYsIENvdW50Q2FsbGJhY2ssIFNwYWNl
Q2hlY2tSZXN1bHQgPSBzdGQ6Om51bGxvcHQpOworICAgIHZvaWQgZGVsZXRlUmVjb3JkKGNvbnN0
IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiwgRXJyb3JDYWxsYmFjaywg
U3BhY2VDaGVja1Jlc3VsdCA9IHN0ZDo6bnVsbG9wdCk7CisgICAgdm9pZCBvcGVuQ3Vyc29yKGNv
bnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCQ3Vyc29ySW5mbyYsIEdldFJlc3VsdENhbGxi
YWNrLCBTcGFjZUNoZWNrUmVzdWx0ID0gc3RkOjpudWxsb3B0KTsKKyAgICB2b2lkIGl0ZXJhdGVD
dXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJJdGVyYXRlQ3Vyc29yRGF0YSYs
IEdldFJlc3VsdENhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0ID0gc3RkOjpudWxsb3B0KTsKKyAg
ICB2b2lkIGNvbW1pdFRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCBF
cnJvckNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0ID0gc3RkOjpudWxsb3B0KTsKKyAgICB2b2lk
IGFib3J0VHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIEVycm9yQ2Fs
bGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgPSBzdGQ6Om51bGxvcHQpOwogCiAgICAgdm9pZCBkaWRG
aW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2UoVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiwg
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpOwogICAg
IHZvaWQgY29ubmVjdGlvbkNsb3NlZEZyb21DbGllbnQoVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0
aW9uJik7CiAgICAgdm9pZCBkaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KFVuaXF1ZUlEQkRhdGFi
YXNlQ29ubmVjdGlvbiYsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50
aWZpZXIsIEluZGV4ZWREQjo6Q29ubmVjdGlvbkNsb3NlZE9uQmVoYWxmT2ZTZXJ2ZXIpOwotICAg
IHZvaWQgb3BlbkRCUmVxdWVzdENhbmNlbGxlZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXIm
IHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG9wZW5EQlJlcXVl
c3RDYW5jZWxsZWQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmll
cik7CiAKICAgICB2b2lkIGVucXVldWVUcmFuc2FjdGlvbihSZWY8VW5pcXVlSURCRGF0YWJhc2VU
cmFuc2FjdGlvbj4mJik7CiAKLSAgICB2b2lkIGhhbmRsZURlbGV0ZShJREJDb25uZWN0aW9uVG9D
bGllbnQmLCBjb25zdCBJREJSZXF1ZXN0RGF0YSYpOwotICAgIHZvaWQgaW1tZWRpYXRlQ2xvc2Uo
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGhhbmRsZURlbGV0ZShJREJDb25uZWN0aW9uVG9D
bGllbnQmLCBjb25zdCBJREJSZXF1ZXN0RGF0YSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
aW1tZWRpYXRlQ2xvc2UoKTsKIAogICAgIGJvb2wgaGFzQWN0aXZlVHJhbnNhY3Rpb25zKCkgY29u
c3Q7CiAgICAgdm9pZCBhYm9ydEFjdGl2ZVRyYW5zYWN0aW9ucygpOwotICAgIGJvb2wgdHJ5Q2xv
c2UoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFib3J0SW5Qcm9ncmVzc1RyYW5zYWN0aW9u
cygpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgdHJ5Q2xvc2UoKTsKIAotICAgIFN0cmluZyBm
aWxlUGF0aCgpIGNvbnN0OwotICAgIHN0ZDo6b3B0aW9uYWw8SURCRGF0YWJhc2VOYW1lQW5kVmVy
c2lvbj4gbmFtZUFuZFZlcnNpb24oKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcg
ZmlsZVBhdGgoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPElEQkRh
dGFiYXNlTmFtZUFuZFZlcnNpb24+IG5hbWVBbmRWZXJzaW9uKCkgY29uc3Q7CisgICAgV0VCQ09S
RV9FWFBPUlQgYm9vbCBoYXNEYXRhSW5NZW1vcnkoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICB2
b2lkIGhhbmRsZURhdGFiYXNlT3BlcmF0aW9ucygpOwogICAgIHZvaWQgaGFuZGxlQ3VycmVudE9w
ZXJhdGlvbigpOwogICAgIHZvaWQgcGVyZm9ybUN1cnJlbnRPcGVuT3BlcmF0aW9uKCk7CisgICAg
dm9pZCBwZXJmb3JtQ3VycmVudE9wZW5PcGVyYXRpb25BZnRlclNwYWNlQ2hlY2soYm9vbCBpc0dy
YW50ZWQpOwogICAgIHZvaWQgcGVyZm9ybUN1cnJlbnREZWxldGVPcGVyYXRpb24oKTsKICAgICBl
bnVtIGNsYXNzIFJlcXVlc3RUeXBlIHsgRGVsZXRlLCBBbnkgfTsKICAgICBSZWZQdHI8U2VydmVy
T3BlbkRCUmVxdWVzdD4gdGFrZU5leHRSdW5uYWJsZVJlcXVlc3QoUmVxdWVzdFR5cGUgPSBSZXF1
ZXN0VHlwZTo6QW55KTsKQEAgLTE0NiwxMSArMTUxLDEzIEBAIHByaXZhdGU6CiAKICAgICB2b2lk
IGNsZWFyVHJhbnNhY3Rpb25zT25Db25uZWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlv
biYpOwogCi0gICAgSURCU2VydmVyJiBtX3NlcnZlcjsKKyAgICBJREJTZXJ2ZXIqIG1fc2VydmVy
OworICAgIFdlYWtQdHI8VW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyPiBtX21hbmFnZXI7CiAgICAg
SURCRGF0YWJhc2VJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIAogICAgIExpc3RIYXNoU2V0PFJl
ZlB0cjxTZXJ2ZXJPcGVuREJSZXF1ZXN0Pj4gbV9wZW5kaW5nT3BlbkRCUmVxdWVzdHM7CiAgICAg
UmVmUHRyPFNlcnZlck9wZW5EQlJlcXVlc3Q+IG1fY3VycmVudE9wZW5EQlJlcXVlc3Q7CisgICAg
SGFzaFNldDxJREJSZXNvdXJjZUlkZW50aWZpZXI+IG1fb3BlbkRCUmVxdWVzdHNGb3JTcGFjZUNo
ZWNrOwogCiAgICAgTGlzdEhhc2hTZXQ8UmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlv
bj4+IG1fb3BlbkRhdGFiYXNlQ29ubmVjdGlvbnM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRh
dGFiYXNlQ29ubmVjdGlvbi5jcHAKaW5kZXggNzQzZWRjYzNiOGM1OTQwNTFmNzkxMTE2NTI2YWY0
ZDAyMTY5MTM2Ny4uZDZhYTFmYjliYTYyYmM5OWNkNTA5MmNmNTBjZTY5NWQ5OTA3YjZhOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlE
QkRhdGFiYXNlQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5jcHAKQEAgLTMxLDYgKzMx
LDcgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiU2VydmVyT3BlbkRCUmVxdWVz
dC5oIgogI2luY2x1ZGUgIlVuaXF1ZUlEQkRhdGFiYXNlLmgiCisjaW5jbHVkZSAiVW5pcXVlSURC
RGF0YWJhc2VNYW5hZ2VyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBJREJT
ZXJ2ZXIgewpAQCAtNDIsMTEgKzQzLDE0IEBAIFJlZjxVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rp
b24+IFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbjo6Y3JlYXRlKFVuaXF1ZUlEQkRhCiAKIFVu
aXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uKFVu
aXF1ZUlEQkRhdGFiYXNlJiBkYXRhYmFzZSwgU2VydmVyT3BlbkRCUmVxdWVzdCYgcmVxdWVzdCkK
ICAgICA6IG1fZGF0YWJhc2UoZGF0YWJhc2UpCi0gICAgLCBtX3NlcnZlcihkYXRhYmFzZS5zZXJ2
ZXIoKSkKKyAgICAsIG1fbWFuYWdlcihkYXRhYmFzZS5tYW5hZ2VyKCkpCiAgICAgLCBtX2Nvbm5l
Y3Rpb25Ub0NsaWVudChyZXF1ZXN0LmNvbm5lY3Rpb24oKSkKICAgICAsIG1fb3BlblJlcXVlc3RJ
ZGVudGlmaWVyKHJlcXVlc3QucmVxdWVzdERhdGEoKS5yZXF1ZXN0SWRlbnRpZmllcigpKQogewot
ICAgIG1fc2VydmVyLnJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0aW9uKCp0aGlzKTsKKyAgICBpZiAo
YXV0byogbWFuYWdlciA9IGRhdGFiYXNlLm1hbmFnZXIoKSkgeworICAgICAgICBtX21hbmFnZXIg
PSBXZWFrUHRyIHsgKm1hbmFnZXIgfTsKKyAgICAgICAgbV9tYW5hZ2VyLT5yZWdpc3RlckNvbm5l
Y3Rpb24oKnRoaXMpOworICAgIH0KICAgICBtX2Nvbm5lY3Rpb25Ub0NsaWVudC0+cmVnaXN0ZXJE
YXRhYmFzZUNvbm5lY3Rpb24oKnRoaXMpOwogfQogCkBAIC01NCwxMCArNTgsMTYgQEAgVW5pcXVl
SURCRGF0YWJhc2VDb25uZWN0aW9uOjp+VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uKCkKIHsK
ICAgICBBU1NFUlQobV90cmFuc2FjdGlvbk1hcC5pc0VtcHR5KCkpOwogCi0gICAgbV9zZXJ2ZXIu
dW5yZWdpc3RlckRhdGFiYXNlQ29ubmVjdGlvbigqdGhpcyk7CisgICAgaWYgKG1fbWFuYWdlcikK
KyAgICAgICAgbV9tYW5hZ2VyLT51bnJlZ2lzdGVyQ29ubmVjdGlvbigqdGhpcyk7CiAgICAgbV9j
b25uZWN0aW9uVG9DbGllbnQtPnVucmVnaXN0ZXJEYXRhYmFzZUNvbm5lY3Rpb24oKnRoaXMpOwog
fQogCitVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIqIFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlv
bjo6bWFuYWdlcigpCit7CisgICAgcmV0dXJuIG1fbWFuYWdlci5nZXQoKTsKK30KKwogYm9vbCBV
bmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb246Omhhc05vbkZpbmlzaGVkVHJhbnNhY3Rpb25zKCkg
Y29uc3QKIHsKICAgICByZXR1cm4gIW1fdHJhbnNhY3Rpb25NYXAuaXNFbXB0eSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRh
dGFiYXNlQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1VuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5oCmluZGV4IDJlMTlkZmQyZGM5MTQzNGJm
YzVlN2MzYWU0YmU2NmQ4Y2Q4NTg4MTEuLjk4ZmViNTljNzZiZWFlYmU3MGVkZGU0YmU1NThmY2E4
NzFjOThkYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmgKQEAg
LTI1LDcgKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJJREJTZXJ2ZXIuaCIK
ICNpbmNsdWRlICJVbmlxdWVJREJEYXRhYmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CiAjaW5jbHVkZSA8d3RmL0lkZW50aWZpZWQuaD4KQEAgLTM2LDYgKzM1LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBJREJFcnJvcjsKIGNsYXNzIElEQlJlc3VsdERhdGE7CitjbGFz
cyBVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXI7CiAKIG5hbWVzcGFjZSBJREJTZXJ2ZXIgewogCkBA
IC01MiwxMSArNTIsMTEgQEAgcHVibGljOgogCiAgICAgY29uc3QgSURCUmVzb3VyY2VJZGVudGlm
aWVyJiBvcGVuUmVxdWVzdElkZW50aWZpZXIoKSB7IHJldHVybiBtX29wZW5SZXF1ZXN0SWRlbnRp
ZmllcjsgfQogICAgIFVuaXF1ZUlEQkRhdGFiYXNlKiBkYXRhYmFzZSgpIHsgcmV0dXJuIG1fZGF0
YWJhc2UuZ2V0KCk7IH0KLSAgICBJREJTZXJ2ZXIqIHNlcnZlcigpIHsgcmV0dXJuICZtX3NlcnZl
cjsgfQorICAgIFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlciogbWFuYWdlcigpOwogICAgIElEQkNv
bm5lY3Rpb25Ub0NsaWVudCYgY29ubmVjdGlvblRvQ2xpZW50KCkgeyByZXR1cm4gbV9jb25uZWN0
aW9uVG9DbGllbnQ7IH0KIAotICAgIHZvaWQgY29ubmVjdGlvblBlbmRpbmdDbG9zZUZyb21DbGll
bnQoKTsKLSAgICB2b2lkIGNvbm5lY3Rpb25DbG9zZWRGcm9tQ2xpZW50KCk7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBjb25uZWN0aW9uUGVuZGluZ0Nsb3NlRnJvbUNsaWVudCgpOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgY29ubmVjdGlvbkNsb3NlZEZyb21DbGllbnQoKTsKIAogICAgIGJv
b2wgY2xvc2VQZW5kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9jbG9zZVBlbmRpbmc7IH0KIApAQCAt
NjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmaXJlVmVyc2lvbkNoYW5nZUV2ZW50KGNv
bnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IHJl
cXVlc3RlZFZlcnNpb24pOwogICAgIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIGNyZWF0
ZVZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbih1aW50NjRfdCBuZXdWZXJzaW9uKTsKIAotICAgIHZv
aWQgZXN0YWJsaXNoVHJhbnNhY3Rpb24oY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJik7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBlc3RhYmxpc2hUcmFuc2FjdGlvbihjb25zdCBJREJUcmFuc2Fj
dGlvbkluZm8mKTsKICAgICB2b2lkIGRpZEFib3J0VHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJh
c2VUcmFuc2FjdGlvbiYsIGNvbnN0IElEQkVycm9yJik7CiAgICAgdm9pZCBkaWRDb21taXRUcmFu
c2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgY29uc3QgSURCRXJyb3ImKTsK
ICAgICB2b2lkIGRpZENyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlc3VsdERhdGEmKTsKQEAg
LTc1LDggKzc1LDggQEAgcHVibGljOgogICAgIHZvaWQgZGlkQ3JlYXRlSW5kZXgoY29uc3QgSURC
UmVzdWx0RGF0YSYpOwogICAgIHZvaWQgZGlkRGVsZXRlSW5kZXgoY29uc3QgSURCUmVzdWx0RGF0
YSYpOwogICAgIHZvaWQgZGlkUmVuYW1lSW5kZXgoY29uc3QgSURCUmVzdWx0RGF0YSYpOwotICAg
IHZvaWQgZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZp
ZXImIHJlcXVlc3RJZGVudGlmaWVyLCBJbmRleGVkREI6OkNvbm5lY3Rpb25DbG9zZWRPbkJlaGFs
Zk9mU2VydmVyKTsKLSAgICB2b2lkIGRpZEZpbmlzaEhhbmRsaW5nVmVyc2lvbkNoYW5nZShjb25z
dCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBkaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KGNvbnN0IElEQlJlc291
cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIEluZGV4ZWREQjo6Q29ubmVjdGlvbkNs
b3NlZE9uQmVoYWxmT2ZTZXJ2ZXIpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkRmluaXNo
SGFuZGxpbmdWZXJzaW9uQ2hhbmdlKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNh
Y3Rpb25JZGVudGlmaWVyKTsKIAogICAgIHZvaWQgYWJvcnRUcmFuc2FjdGlvbldpdGhvdXRDYWxs
YmFjayhVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJik7CiAKQEAgLTg4LDcgKzg4LDcgQEAg
cHJpdmF0ZToKICAgICBVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24oVW5pcXVlSURCRGF0YWJh
c2UmLCBTZXJ2ZXJPcGVuREJSZXF1ZXN0Jik7CiAKICAgICBXZWFrUHRyPFVuaXF1ZUlEQkRhdGFi
YXNlPiBtX2RhdGFiYXNlOwotICAgIElEQlNlcnZlciYgbV9zZXJ2ZXI7CisgICAgV2Vha1B0cjxV
bmlxdWVJREJEYXRhYmFzZU1hbmFnZXI+IG1fbWFuYWdlcjsKICAgICBSZWY8SURCQ29ubmVjdGlv
blRvQ2xpZW50PiBtX2Nvbm5lY3Rpb25Ub0NsaWVudDsKICAgICBJREJSZXNvdXJjZUlkZW50aWZp
ZXIgbV9vcGVuUmVxdWVzdElkZW50aWZpZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZU1h
bmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45MDg4NmM0ODY4NGYyMDUxMTFmNjdlMjBlNjkyYjRiOTMxY2Rk
MWM4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlci5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIklEQkRhdGFiYXNlSWRlbnRpZmllci5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBDbGllbnRPcmlnaW47CisKK25hbWVz
cGFjZSBJREJTZXJ2ZXIgeworCitjbGFzcyBJREJCYWNraW5nU3RvcmU7CitjbGFzcyBVbmlxdWVJ
REJEYXRhYmFzZUNvbm5lY3Rpb247CitjbGFzcyBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9u
OworCitjbGFzcyBVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQ
dHI8VW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CitwdWJsaWM6CisgICAgdmlydHVhbCB+VW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyKCkgeyB9
CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQ29ubmVjdGlvbihVbmlxdWVJREJEYXRhYmFzZUNv
bm5lY3Rpb24mKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJDb25uZWN0aW9uKFVu
aXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0
ZXJUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCB1bnJlZ2lzdGVyVHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2Fj
dGlvbiYpID0gMDsKKyAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxJREJCYWNraW5nU3RvcmU+
IGNyZWF0ZUJhY2tpbmdTdG9yZShjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHJlcXVlc3RTcGFjZShjb25zdCBDbGllbnRPcmlnaW4mLCB1aW50NjRf
dCBzaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSA9IDA7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBJREJTZXJ2ZXIKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFi
YXNlVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uY3BwCmluZGV4IDFjYzAyODE3YTEyNGM4
ZDBlZDUyZjIxM2FjOGU1MDA2YmE2Yjk2ZGUuLjZlM2NlMDQ0MDZmY2FkMzNiY2MxYzllOWY2MTJl
MmFmNDEwNjk0MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlv
bi5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2luY2x1ZGUgIklEQkl0ZXJhdGVDdXJzb3JEYXRh
LmgiCiAjaW5jbHVkZSAiSURCUmVzdWx0RGF0YS5oIgotI2luY2x1ZGUgIklEQlNlcnZlci5oIgog
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJVbmlxdWVJREJEYXRhYmFzZS5oIgogCkBA
IC01MCwxMiArNDksMTQgQEAgVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6VW5pcXVlSURC
RGF0YWJhc2VUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZUNvbm4KICAgICBpZiAobV90cmFu
c2FjdGlvbkluZm8ubW9kZSgpID09IElEQlRyYW5zYWN0aW9uTW9kZTo6VmVyc2lvbmNoYW5nZSkK
ICAgICAgICAgbV9vcmlnaW5hbERhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJ
bmZvPihkYXRhYmFzZS0+aW5mbygpKTsKIAotICAgIGRhdGFiYXNlQ29ubmVjdGlvbigpLnNlcnZl
cigpLT5yZWdpc3RlclRyYW5zYWN0aW9uKCp0aGlzKTsKKyAgICBpZiAoYXV0byogbWFuYWdlciA9
IGRhdGFiYXNlQ29ubmVjdGlvbigpLm1hbmFnZXIoKSkKKyAgICAgICAgbWFuYWdlci0+cmVnaXN0
ZXJUcmFuc2FjdGlvbigqdGhpcyk7CiB9CiAKIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246
On5VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uKCkKIHsKLSAgICBkYXRhYmFzZUNvbm5lY3Rp
b24oKS5zZXJ2ZXIoKS0+dW5yZWdpc3RlclRyYW5zYWN0aW9uKCp0aGlzKTsKKyAgICBpZiAoYXV0
byogbWFuYWdlciA9IGRhdGFiYXNlQ29ubmVjdGlvbigpLm1hbmFnZXIoKSkKKyAgICAgICAgbWFu
YWdlci0+dW5yZWdpc3RlclRyYW5zYWN0aW9uKCp0aGlzKTsKIH0KIAogVW5pcXVlSURCRGF0YWJh
c2VDb25uZWN0aW9uJiBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpkYXRhYmFzZUNvbm5l
Y3Rpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmgKaW5kZXgg
OTU5NjY1MmFkY2RiYTdhMDQ4YjYxOWY3NGVmMWE5MmNlZWY5ZTBlNS4uZmJhODVjMTczOGI3MzQy
ZTEyODgwMGFlYjlkMWRhNDY3ZWU3YTEwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJh
c2VUcmFuc2FjdGlvbi5oCkBAIC01MSw3ICs1MSw3IEBAIG5hbWVzcGFjZSBJREJTZXJ2ZXIgewog
Y2xhc3MgSURCU2VydmVyOwogY2xhc3MgVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uOwogCi1j
bGFzcyBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8VW5p
cXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbj4geworY2xhc3MgVW5pcXVlSURCRGF0YWJhc2VUcmFu
c2FjdGlvbiA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0
aW9uPiwgcHVibGljIFJlZkNvdW50ZWQ8VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbj4gewog
cHVibGljOgogICAgIHN0YXRpYyBSZWY8VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbj4gY3Jl
YXRlKFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYsIGNvbnN0IElEQlRyYW5zYWN0aW9uSW5m
byYpOwogCkBAIC01OSwyOSArNTksMjkgQEAgcHVibGljOgogCiAgICAgVW5pcXVlSURCRGF0YWJh
c2VDb25uZWN0aW9uJiBkYXRhYmFzZUNvbm5lY3Rpb24oKTsKICAgICBjb25zdCBJREJUcmFuc2Fj
dGlvbkluZm8mIGluZm8oKSBjb25zdCB7IHJldHVybiBtX3RyYW5zYWN0aW9uSW5mbzsgfQotICAg
IGJvb2wgaXNWZXJzaW9uQ2hhbmdlKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBp
c1ZlcnNpb25DaGFuZ2UoKSBjb25zdDsKICAgICBib29sIGlzUmVhZE9ubHkoKSBjb25zdDsKIAog
ICAgIElEQkRhdGFiYXNlSW5mbyogb3JpZ2luYWxEYXRhYmFzZUluZm8oKSBjb25zdDsKIAotICAg
IHZvaWQgYWJvcnQoKTsKLSAgICB2b2lkIGFib3J0V2l0aG91dENhbGxiYWNrKCk7Ci0gICAgdm9p
ZCBjb21taXQodWludDY0X3QgcGVuZGluZ1JlcXVlc3RDb3VudCk7Ci0KLSAgICB2b2lkIGNyZWF0
ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCT2JqZWN0U3RvcmVJ
bmZvJik7Ci0gICAgdm9pZCBkZWxldGVPYmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0YSYs
IGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lKTsKLSAgICB2b2lkIHJlbmFtZU9iamVjdFN0
b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIG5ld05hbWUpOwotICAgIHZvaWQgY2xlYXJPYmplY3RTdG9yZShjb25z
dCBJREJSZXF1ZXN0RGF0YSYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllcik7Ci0gICAg
dm9pZCBjcmVhdGVJbmRleChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkluZGV4SW5m
byYpOwotICAgIHZvaWQgZGVsZXRlSW5kZXgoY29uc3QgSURCUmVxdWVzdERhdGEmLCB1aW50NjRf
dCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lKTsKLSAgICB2
b2lkIHJlbmFtZUluZGV4KGNvbnN0IElEQlJlcXVlc3REYXRhJiwgdWludDY0X3Qgb2JqZWN0U3Rv
cmVJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRleElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3
TmFtZSk7Ci0gICAgdm9pZCBwdXRPckFkZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElE
QktleURhdGEmLCBjb25zdCBJREJWYWx1ZSYsIEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3Jp
dGVNb2RlKTsKLSAgICB2b2lkIGdldFJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0
IElEQkdldFJlY29yZERhdGEmKTsKLSAgICB2b2lkIGdldEFsbFJlY29yZHMoY29uc3QgSURCUmVx
dWVzdERhdGEmLCBjb25zdCBJREJHZXRBbGxSZWNvcmRzRGF0YSYpOwotICAgIHZvaWQgZ2V0Q291
bnQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmKTsKLSAgICB2
b2lkIGRlbGV0ZVJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleVJhbmdl
RGF0YSYpOwotICAgIHZvaWQgb3BlbkN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0
IElEQkN1cnNvckluZm8mKTsKLSAgICB2b2lkIGl0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVxdWVz
dERhdGEmLCBjb25zdCBJREJJdGVyYXRlQ3Vyc29yRGF0YSYpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgYWJvcnQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFib3J0V2l0aG91dENhbGxi
YWNrKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb21taXQodWludDY0X3QgcGVuZGluZ1Jl
cXVlc3RDb3VudCk7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNyZWF0ZU9iamVjdFN0b3Jl
KGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJik7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBkZWxldGVPYmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0
YSYsIGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHJlbmFtZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgdWludDY0X3Qgb2Jq
ZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgY2xlYXJPYmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0YSYsIHVpbnQ2
NF90IG9iamVjdFN0b3JlSWRlbnRpZmllcik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjcmVh
dGVJbmRleChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkluZGV4SW5mbyYpOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZGVsZXRlSW5kZXgoY29uc3QgSURCUmVxdWVzdERhdGEmLCB1
aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbmFtZUluZGV4KGNvbnN0IElEQlJlcXVlc3REYXRh
JiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRleElkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwdXRP
ckFkZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleURhdGEmLCBjb25zdCBJREJW
YWx1ZSYsIEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGdldFJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkdl
dFJlY29yZERhdGEmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldEFsbFJlY29yZHMoY29u
c3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJHZXRBbGxSZWNvcmRzRGF0YSYpOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgZ2V0Q291bnQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJ
REJLZXlSYW5nZURhdGEmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZVJlY29yZChj
b25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgb3BlbkN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElE
QkN1cnNvckluZm8mKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGl0ZXJhdGVDdXJzb3IoY29u
c3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJJdGVyYXRlQ3Vyc29yRGF0YSYpOwogCiAgICAg
dm9pZCBkaWRBY3RpdmF0ZUluQmFja2luZ1N0b3JlKGNvbnN0IElEQkVycm9yJik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJFcnJvci5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkVycm9yLmgKaW5k
ZXggZmYxN2M5OGE0MTE1ZGU2MmNhY2M3MGFkMzI1MmJkNmVkZjExZjM5OS4uYjMwYWQzOTE3NmYw
M2ZmMGQ2YzkzOThkNmIzZWQxOWNkMmU5OTIxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkVycm9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkVycm9yLmgKQEAgLTUyLDYgKzUyLDcgQEAgcHVi
bGljOgogICAgIFN0cmluZyBtZXNzYWdlKCkgY29uc3Q7CiAKICAgICBib29sIGlzTnVsbCgpIGNv
bnN0IHsgcmV0dXJuICFtX2NvZGU7IH0KKyAgICBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1
cm4gIWlzTnVsbCgpOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCBJREJFcnJvciBpc29sYXRlZENv
cHkoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2hhcmVkL0lEQlJlcXVlc3REYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuaAppbmRleCAwMThjYjEzZTc1ZWI2NDVkZDExNGUy
NGY2ZGJmZWEzNGNmNTViMTY0Li4wMDE3ODdhNjY1OGE0MTc4YjZhNzk3MTI4YTA0ZGEzNmI4YWZk
ZmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQv
SURCUmVxdWVzdERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
aGFyZWQvSURCUmVxdWVzdERhdGEuaApAQCAtNTYsOCArNTYsOCBAQCBwdWJsaWM6CiAgICAgV0VC
Q09SRV9FWFBPUlQgSURCUmVxdWVzdERhdGEgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiAKICAgICBJ
REJDb25uZWN0aW9uSWRlbnRpZmllciBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpIGNvbnN0
OwotICAgIElEQlJlc291cmNlSWRlbnRpZmllciByZXF1ZXN0SWRlbnRpZmllcigpIGNvbnN0Owot
ICAgIElEQlJlc291cmNlSWRlbnRpZmllciB0cmFuc2FjdGlvbklkZW50aWZpZXIoKSBjb25zdDsK
KyAgICBXRUJDT1JFX0VYUE9SVCBJREJSZXNvdXJjZUlkZW50aWZpZXIgcmVxdWVzdElkZW50aWZp
ZXIoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBJREJSZXNvdXJjZUlkZW50aWZpZXIgdHJh
bnNhY3Rpb25JZGVudGlmaWVyKCkgY29uc3Q7CiAgICAgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVu
dGlmaWVyKCkgY29uc3Q7CiAgICAgdWludDY0X3QgaW5kZXhJZGVudGlmaWVyKCkgY29uc3Q7CiAg
ICAgSW5kZXhlZERCOjpJbmRleFJlY29yZFR5cGUgaW5kZXhSZWNvcmRUeXBlKCkgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVz
b3VyY2VJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFy
ZWQvSURCUmVzb3VyY2VJZGVudGlmaWVyLmgKaW5kZXggYmUxNjE5N2Y2MzRhNTk2YzM5ZTUxMzAy
ODU5MDY4MzU3NDU4NjgyYS4uYmQzOTU0YTI4OTczY2ViOGE1YmY2NDhmNGFhNTEyM2YyZWZiZWY0
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lE
QlJlc291cmNlSWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NoYXJlZC9JREJSZXNvdXJjZUlkZW50aWZpZXIuaApAQCAtNDksNyArNDksNyBAQCBwdWJs
aWM6CiAgICAgSURCUmVzb3VyY2VJZGVudGlmaWVyKGNvbnN0IElEQkNsaWVudDo6SURCQ29ubmVj
dGlvblByb3h5JiwgY29uc3QgSURCUmVxdWVzdCYpOwogICAgIGV4cGxpY2l0IElEQlJlc291cmNl
SWRlbnRpZmllcihjb25zdCBJREJTZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub0NsaWVudCYpOwogCi0g
ICAgc3RhdGljIElEQlJlc291cmNlSWRlbnRpZmllciBlbXB0eVZhbHVlKCk7CisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIElEQlJlc291cmNlSWRlbnRpZmllciBlbXB0eVZhbHVlKCk7CiAgICAg
Ym9vbCBpc0VtcHR5KCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiAhbV9yZXNvdXJjZU51
bWJlciAmJiAhbV9pZGJDb25uZWN0aW9uSWRlbnRpZmllcjsKQEAgLTYwLDcgKzYwLDggQEAgcHVi
bGljOgogICAgICAgICB1aW50NjRfdCBoYXNoQ29kZXNbMl0gPSB7IG1faWRiQ29ubmVjdGlvbklk
ZW50aWZpZXIudG9VSW50NjQoKSwgbV9yZXNvdXJjZU51bWJlciB9OwogICAgICAgICByZXR1cm4g
U3RyaW5nSGFzaGVyOjpoYXNoTWVtb3J5PHNpemVvZihoYXNoQ29kZXMpPihoYXNoQ29kZXMpOwog
ICAgIH0KLSAgICAKKworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBJREJSZXNvdXJjZUlkZW50
aWZpZXImIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQogICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIG90aGVyKSBjb25zdAog
ICAgIHsKICAgICAgICAgcmV0dXJuIG1faWRiQ29ubmVjdGlvbklkZW50aWZpZXIgPT0gb3RoZXIu
bV9pZGJDb25uZWN0aW9uSWRlbnRpZmllcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGM1ZjQ0ZWYwNGE3MDU4YjE5YjI0Yzg1ZDEx
ZDYzZDk0NTRlM2RiMGMuLmMyNDlmMTU0YjNhZTQ5NTUxNDljMzlkODEzYWZkYTVhN2EzN2E1ZWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTE1NDEsMTAgKzE1NDEsMTAgQEAKIAkJNTExMjNFMkYyNzY5NDBDQTAwRjlENDFCIC8q
IE5vdGlmaWNhdGlvbkRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxMTIzRTJDMjc2OTNDMzIwMEY5RDQxQiAvKiBOb3RpZmljYXRpb25EYXRhLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTExN0Yz
MEUyNUU2MTAyMDAwMkE5RjFFIC8qIFJlbW90ZUNvbW1hbmRMaXN0ZW5lckNvY29hLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTE3RjMwQzI1RTYxMDFG
MDAyQTlGMUUgLyogUmVtb3RlQ29tbWFuZExpc3RlbmVyQ29jb2EuaCAqLzsgfTsKIAkJNTExRUMx
MjgxQzUwQUFDQTAwMzJGOTgzIC8qIElEQlNlcmlhbGl6YXRpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMUVDMTI2MUM1MEFBNTcwMDMyRjk4MyAv
KiBJREJTZXJpYWxpemF0aW9uLmggKi87IH07Ci0JCTUxMUVDMTJDMUM1MEFCQkYwMDMyRjk4MyAv
KiBTUUxpdGVJREJUcmFuc2FjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTExRUMxMkExQzUwQUJCQTAwMzJGOTgzIC8qIFNRTGl0ZUlEQlRyYW5z
YWN0aW9uLmggKi87IH07CisJCTUxMUVDMTJDMUM1MEFCQkYwMDMyRjk4MyAvKiBTUUxpdGVJREJU
cmFuc2FjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTExRUMxMkExQzUwQUJCQTAwMzJGOTgzIC8qIFNRTGl0ZUlEQlRyYW5zYWN0aW9uLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTExRUMxMzAx
QzUwQUJGNTAwMzJGOTgzIC8qIFNRTGl0ZUlEQkN1cnNvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExRUMxMkUxQzUwQUJFQzAwMzJGOTgzIC8qIFNR
TGl0ZUlEQkN1cnNvci5oICovOyB9OwogCQk1MTIwQkJBRjFGMUNFQ0U3MDBFRkVCRjEgLyogQ29v
a2llU3RvcmFnZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTIwQkJBRDFGMUNFNzcwMDBFRkVCRjEgLyogQ29va2llU3RvcmFnZU9ic2Vy
dmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJ
NTEyQkRCNEIxQzQ1NkZGQTAwNjQ5NERGIC8qIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyQkRCNDkxQzQ1NkZB
QjAwNjQ5NERGIC8qIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZS5oICovOyB9OworCQk1MTJCREI0QjFD
NDU2RkZBMDA2NDk0REYgLyogU1FMaXRlSURCQmFja2luZ1N0b3JlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTJCREI0OTFDNDU2RkFCMDA2NDk0REYg
LyogU1FMaXRlSURCQmFja2luZ1N0b3JlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTEyREQ4RjUwRDkxRTZBRjAwMEY4OUVFIC8qIExlZ2FjeVdl
YkFyY2hpdmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxMkREOEVCMEQ5MUU2QUYwMDBGODlFRSAvKiBMZWdhY3lXZWJBcmNoaXZlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTEyREQ4RjYwRDkxRTZB
RjAwMEY4OUVFIC8qIEFyY2hpdmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxMkREOEVDMEQ5MUU2QUYwMDBGODlFRSAvKiBBcmNoaXZlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTEyREQ4RjgwRDkx
RTZBRjAwMEY4OUVFIC8qIEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMkREOEVFMEQ5MUU2QUYwMDBGODlF
RSAvKiBBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uLmggKi87IH07CkBAIC0xNTkwLDcgKzE1OTAs
NyBAQAogCQk1MTZEN0Q3MjFCQjVGMEJEMDBBRjdDNzcgLyogSURCQ29ubmVjdGlvblRvQ2xpZW50
RGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxNkQ3RDZFMUJCNUYwNjUwMEFGN0M3NyAvKiBJREJDb25uZWN0aW9uVG9DbGllbnREZWxlZ2F0
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUx
NkY3RjZEMUMzMUUzOUEwMEYxMTFEQyAvKiBTZXJ2ZXJPcGVuREJSZXF1ZXN0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTZGN0Y2QzFDMzFDNzlEMDBG
MTExREMgLyogU2VydmVyT3BlbkRCUmVxdWVzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxNzEzOEYwMUJFRDFEMUEwMDBENUYwMSAvKiBJbmRl
eEtleS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3
MTM4RUUxQkVEMUQxNzAwMEQ1RjAxIC8qIEluZGV4S2V5LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNTE3MTM4RjgxQkYxMjhCQjAwMEQ1RjAxIC8q
IEluZGV4VmFsdWVTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTE3MTM4RjYxQkYxMjI2MjAwMEQ1RjAxIC8qIEluZGV4VmFsdWVTdG9yZS5oICov
OyB9OworCQk1MTcxMzhGODFCRjEyOEJCMDAwRDVGMDEgLyogSW5kZXhWYWx1ZVN0b3JlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTcxMzhGNjFCRjEy
MjYyMDAwRDVGMDEgLyogSW5kZXhWYWx1ZVN0b3JlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE3MTM4RkMxQkYzQURGNDAwMEQ1RjAxIC8qIElE
QkN1cnNvckluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxNzEzOEZBMUJGM0FEQUMwMDBENUYwMSAvKiBJREJDdXJzb3JJbmZvLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE3MTM5MDYxQkY2NERF
QzAwMEQ1RjAxIC8qIE1lbW9yeU9iamVjdFN0b3JlQ3Vyc29yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTcxMzkwNDFCRjY0REUzMDAwRDVGMDEgLyog
TWVtb3J5T2JqZWN0U3RvcmVDdXJzb3IuaCAqLzsgfTsKIAkJNTE3MTM5MDgxQkY2NERFRjAwMEQ1
RjAxIC8qIE1lbW9yeUN1cnNvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTE3MTM5MDIxQkY2NERFMzAwMEQ1RjAxIC8qIE1lbW9yeUN1cnNvci5oICov
OyB9OwpAQCAtMTY2Niw3ICsxNjY2LDcgQEAKIAkJNTFCOTE0MTAxRkQyNzgyRDAwRUUyODU5IC8q
IFJlZ2lzdHJhdGlvbkRhdGFiYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MUI5MTQwQzFGRDI3ODI1MDBFRTI4NTkgLyogUmVnaXN0cmF0aW9uRGF0
YWJhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk1MUI5MTQxMTFGRDI3ODJEMDBFRTI4NTkgLyogUmVnaXN0cmF0aW9uU3RvcmUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQjkxNDBCMUZEMjc4MjUw
MEVFMjg1OSAvKiBSZWdpc3RyYXRpb25TdG9yZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxQkE0QUM0MUJCQjVDRDgwMERGM0Q2RCAvKiBJREJE
YXRhYmFzZUluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxQkE0QUMyMUJCQjVDQkYwMERGM0Q2RCAvKiBJREJEYXRhYmFzZUluZm8uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk1MUJBNEFDQjFCQkM1
QkQ5MDBERjNENkQgLyogTWVtb3J5SURCQmFja2luZ1N0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJBNEFDOTFCQkM1QjlFMDBERjNENkQgLyog
TWVtb3J5SURCQmFja2luZ1N0b3JlLmggKi87IH07CisJCTUxQkE0QUNCMUJCQzVCRDkwMERGM0Q2
RCAvKiBNZW1vcnlJREJCYWNraW5nU3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkE0QUM5MUJCQzVCOUUwMERGM0Q2RCAvKiBNZW1vcnlJREJC
YWNraW5nU3RvcmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk1MUJBNEFDQzFCQkM1QkREMDBERjNENkQgLyogSURCQmFja2luZ1N0b3JlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJBNEFDNzFCQkM1
QUQ2MDBERjNENkQgLyogSURCQmFja2luZ1N0b3JlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFCQTk0NzEyM0FDMzA1MzAwNDQ0ODQ2IC8qIFJ1
bkphdmFTY3JpcHRQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MUJBOTQ2RjIzQUMzMDUwMDA0NDQ4NDYgLyogUnVuSmF2YVNjcmlwdFBh
cmFtZXRlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk1MUJDQ0UzMDFGOEYxNzlFMDA2QkEwRUQgLyogU2VydmljZVdvcmtlclRocmVhZC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3Qzg3MTAxRjhF
RTcyRTAwRUI4MDc2IC8qIFNlcnZpY2VXb3JrZXJUaHJlYWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTY4Miw3ICsxNjgyLDcgQEAKIAkJNTFF
MEJBQkIwREE1NTQ3MTAwQTlFNDE3IC8qIFN0b3JhZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFMEJBQjkwREE1NTQ3MTAwQTlFNDE3IC8q
IFN0b3JhZ2VFdmVudC5oICovOyB9OwogCQk1MUUwQkFFQjBEQTU1RDRBMDBBOUU0MTcgLyogSlNT
dG9yYWdlRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxRTBCQUU5MERBNTVENEEwMEE5RTQxNyAvKiBKU1N0b3JhZ2VFdmVudC5oICovOyB9Owog
CQk1MUUwQkIzODBEQTVBQ0I2MDBBOUU0MTcgLyogU3RvcmFnZU1hcC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFMEJCMzYwREE1QUNCNjAwQTlFNDE3
IC8qIFN0b3JhZ2VNYXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwotCQk1MUUxQkFDMzFCRDgwNjRFMDA1NUQ4MUYgLyogTWVtb3J5QmFja2luZ1N0b3Jl
VHJhbnNhY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxRTFCQUMxMUJEODA2NDcwMDU1RDgxRiAvKiBNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2Fj
dGlvbi5oICovOyB9OworCQk1MUUxQkFDMzFCRDgwNjRFMDA1NUQ4MUYgLyogTWVtb3J5QmFja2lu
Z1N0b3JlVHJhbnNhY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxRTFCQUMxMUJEODA2NDcwMDU1RDgxRiAvKiBNZW1vcnlCYWNraW5nU3RvcmVU
cmFuc2FjdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTUxRTI2OTM3MUREM0JEOUIwMDZCNkE1OCAvKiBJREJJdGVyYXRlQ3Vyc29yRGF0YS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFMjY5MzUx
REQzQkQ5MTAwNkI2QTU4IC8qIElEQkl0ZXJhdGVDdXJzb3JEYXRhLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFFMzk5MDAxRDZFNDc1MDAwOUM4
ODMxIC8qIEdhbWVDb250cm9sbGVyR2FtZXBhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFMzk4RkMxRDZFNDc0QjAwOUM4ODMxIC8qIEdhbWVDb250
cm9sbGVyR2FtZXBhZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTUxRTM5OTAyMUQ2RTQ3NTAwMDlDODgzMSAvKiBHYW1lQ29udHJvbGxlckdhbWVw
YWRQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTFFMzk4RkUxRDZFNDc0QjAwOUM4ODMxIC8qIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3Zp
ZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTE2OTIsNyArMTY5Miw3IEBACiAJCTUxRUNDM0Y4MjAwNTg3QkYwMDQ4M0VBRSAvKiBNZXNzYWdl
UG9ydENoYW5uZWxSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTFFQ0MzRjEyMDA1ODdCNTAwNDgzRUFFIC8qIE1lc3NhZ2VQb3J0Q2hhbm5l
bFJlZ2lzdHJ5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNTFFQ0MzRkQyMDA1OTMwRDAwNDgzRUFFIC8qIE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3Zp
ZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUVD
QzNGQjIwMDU5MzAxMDA0ODNFQUUgLyogTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUVFN0IzODFB
QTUwQjA1MDBGOTJCMjEgLyogUmVzb3VyY2VMb2FkSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFRTdCMzcxQUE1MEIwNTAwRjkyQjIxIC8qIFJl
c291cmNlTG9hZEluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwotCQk1MUVFQUE3NDFCRUZGQUIxMDAyMTgwMDggLyogSW5kZXhWYWx1ZUVudHJ5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUVFQUE3MjFC
RUZGQTc5MDAyMTgwMDggLyogSW5kZXhWYWx1ZUVudHJ5LmggKi87IH07CisJCTUxRUVBQTc0MUJF
RkZBQjEwMDIxODAwOCAvKiBJbmRleFZhbHVlRW50cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRUVBQTcyMUJFRkZBNzkwMDIxODAwOCAvKiBJbmRl
eFZhbHVlRW50cnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk1MUYxNzRGRTFGMzU4OTkyMDBDNzQ5NTAgLyogV29ya2VyVHlwZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGMTc0RkMxRjM1ODk4ODAw
Qzc0OTUwIC8qIFdvcmtlclR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk1MUYxNzUwMzFGMzU4QjNCMDBDNzQ5NTAgLyogSlNTZXJ2aWNlV29y
a2VyVXBkYXRlVmlhQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxRjE3NTAxMUYzNThCMzYwMEM3NDk1MCAvKiBKU1NlcnZpY2VXb3JrZXJVcGRh
dGVWaWFDYWNoZS5oICovOyB9OwogCQk1MUYxNzUwNjFGMzU4QkY3MDBDNzQ5NTAgLyogSlNXb3Jr
ZXJUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MUYxNzUwNTFGMzU4QkRFMDBDNzQ5NTAgLyogSlNXb3JrZXJUeXBlLmggKi87IH07CkBAIC0yOTky
LDYgKzI5OTIsNyBAQAogCQk5M0IyRDgxNjBGOTkyMEQyMDA2QUU2QjIgLyogU3VkZGVuVGVybWlu
YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkz
QjJEODE1MEY5OTIwRDIwMDZBRTZCMiAvKiBTdWRkZW5UZXJtaW5hdGlvbi5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzQjM4RUMzMjU4MjFEQjQw
MDE5OEU2MyAvKiBXZWJTcGVlY2hSZWNvZ25pemVyVGFzay5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCMzhFQkEyNTgyMTkzQjAwMTk4RTYzIC8qIFdl
YlNwZWVjaFJlY29nbml6ZXJUYXNrLmggKi87IH07CiAJCTkzQjM4RUM0MjU4MjFEQjcwMDE5OEU2
MyAvKiBXZWJTcGVlY2hSZWNvZ25pemVyVGFza01vY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjM4RUJCMjU4MjE5M0QwMDE5OEU2MyAvKiBXZWJT
cGVlY2hSZWNvZ25pemVyVGFza01vY2suaCAqLzsgfTsKKwkJOTNCNjMxRTIyN0FCQTFFNjAwNDQz
QTQ0IC8qIFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCNjMxRTAyN0FCQTFFMjAwNDQzQTQ0IC8qIFVuaXF1
ZUlEQkRhdGFiYXNlTWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTkzQjZBMEU2MEIwQkNBNUMwMEY1MDI3QSAvKiBDb250ZXh0TWVudS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCNkEwRTUw
QjBCQ0E1QzAwRjUwMjdBIC8qIENvbnRleHRNZW51LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNCNzBENjQwOUVCMEM3QzAwOUQ4NDY4IC8qIEpT
RE9NQmluZGluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTNCNzBENDgwOUVCMEM3QzAwOUQ4NDY4IC8qIEpTRE9NQmluZGluZy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzQjcwRDZBMDlFQjBDN0Mw
MDlEODQ2OCAvKiBKU0V2ZW50TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjcwRDRFMDlFQjBDN0MwMDlEODQ2OCAvKiBKU0V2ZW50TGlz
dGVuZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpA
QCAtMTI4MjEsNiArMTI4MjIsNyBAQAogCQk5M0IzOEVCQTI1ODIxOTNCMDAxOThFNjMgLyogV2Vi
U3BlZWNoUmVjb2duaXplclRhc2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViU3BlZWNoUmVjb2duaXplclRhc2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OTNCMzhFQkIyNTgyMTkzRDAwMTk4RTYzIC8qIFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jay5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTcGVlY2hSZWNvZ25pemVyVGFz
a01vY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCMzhFQkMyNTgyMTkzRTAw
MTk4RTYzIC8qIFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViU3BlZWNoUmVjb2duaXplclRhc2subW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzQjYzMUUwMjdBQkExRTIwMDQ0M0E0NCAvKiBVbmlxdWVJ
REJEYXRhYmFzZU1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVW5p
cXVlSURCRGF0YWJhc2VNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkz
QjZBMEU1MEIwQkNBNUMwMEY1MDI3QSAvKiBDb250ZXh0TWVudS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ29udGV4dE1lbnUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTNCNzBENDgwOUVCMEM3QzAwOUQ4NDY4IC8qIEpTRE9NQmluZGluZy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01CaW5kaW5nLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTkzQjcwRDREMDlFQjBDN0MwMDlEODQ2OCAvKiBKU0V2ZW50TGlzdGVu
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRXZlbnRMaXN0
ZW5lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMjEzNiw2ICsyMjEzOCw3
IEBACiAJCQkJNTE4ODY0REYxQkJBRjMwRjAwRTU0MEM5IC8qIFVuaXF1ZUlEQkRhdGFiYXNlLmgg
Ki8sCiAJCQkJNTE5OEY3QTIxQkJEQUEyOTAwRTJDQzVGIC8qIFVuaXF1ZUlEQkRhdGFiYXNlQ29u
bmVjdGlvbi5jcHAgKi8sCiAJCQkJNTE5OEY3QTMxQkJEQUEyOTAwRTJDQzVGIC8qIFVuaXF1ZUlE
QkRhdGFiYXNlQ29ubmVjdGlvbi5oICovLAorCQkJCTkzQjYzMUUwMjdBQkExRTIwMDQ0M0E0NCAv
KiBVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuaCAqLywKIAkJCQk1MTk4RjdBNjFCQkREMzgxMDBF
MkNDNUYgLyogVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHAgKi8sCiAJCQkJNTE5OEY3
QTcxQkJERDM4MTAwRTJDQzVGIC8qIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uaCAqLywK
IAkJCSk7CkBAIC0zNzc1MSw2ICszNzc1NCw3IEBACiAJCQkJQTg2M0UyMDExMzQzNDEyMDAwMjc0
OTI2IC8qIFVuaWNvZGVCaWRpLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTg4NjRFMTFCQkFGNTc0
MDBFNTQwQzkgLyogVW5pcXVlSURCRGF0YWJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxOThG
N0E1MUJCREI3OTMwMEUyQ0M1RiAvKiBVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uaCBpbiBI
ZWFkZXJzICovLAorCQkJCTkzQjYzMUUyMjdBQkExRTYwMDQ0M0E0NCAvKiBVbmlxdWVJREJEYXRh
YmFzZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxOThGN0E5MUJCREQzODUwMEUyQ0M1
RiAvKiBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlF
NEFGQ0ZBNTBEQUYyOUEzMDBGNUY1NUMgLyogVW5pdEJlemllci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQzE4Q0MwQTQyNTgwRUZCMTAwM0Q3NUZCIC8qIFVuaXZlcnNhbEFjY2Vzc1pvb20uaCBpbiBI
ZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCBhMzRmNzliZGUzZTA4
MTY5NmQ3M2E1NWZiZjU5MDU4YmY2ZDhmMzc5Li41NzNmZDhjZjJiNmNmZmMxNTQxYzg0YjIyYmQw
YjI0YTFjZmJkNWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtNTIsMTMgKzUy
LDEzIEBACiAjaW5jbHVkZSAiTmV0d29ya1NvY2tldENoYW5uZWxNZXNzYWdlcy5oIgogI2luY2x1
ZGUgIk5ldHdvcmtTb2NrZXRTdHJlYW0uaCIKICNpbmNsdWRlICJOZXR3b3JrU29ja2V0U3RyZWFt
TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJOZXR3b3JrU3RvcmFnZU1hbmFnZXIuaCIKICNpbmNsdWRl
ICJQaW5nTG9hZC5oIgogI2luY2x1ZGUgIlByZWNvbm5lY3RUYXNrLmgiCiAjaW5jbHVkZSAiUlRD
RGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIK
ICNpbmNsdWRlICJXZWJFcnJvcnMuaCIKLSNpbmNsdWRlICJXZWJJREJTZXJ2ZXIuaCIKICNpbmNs
dWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbE1lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCkBAIC0z
OTAsOCArMzkwLDEyIEBAIGJvb2wgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJl
Y2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lCiAKIHZvaWQgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnVwZGF0ZVF1b3RhQmFzZWRPblNwYWNlVXNhZ2VGb3JUZXN0
aW5nKGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2luKQogewotICAgIGF1dG8gc3RvcmFnZVF1b3Rh
TWFuYWdlciA9IG1fbmV0d29ya1Byb2Nlc3MtPnN0b3JhZ2VRdW90YU1hbmFnZXIoc2Vzc2lvbklE
KCksIG9yaWdpbik7Ci0gICAgc3RvcmFnZVF1b3RhTWFuYWdlci0+cmVzZXRRdW90YVVwZGF0ZWRC
YXNlZE9uVXNhZ2VGb3JUZXN0aW5nKCk7CisgICAgYXV0byogc2Vzc2lvbiA9IG1fbmV0d29ya1By
b2Nlc3MtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCgpKTsKKyAgICBpZiAoIXNlc3Npb24pCisg
ICAgICAgIHJldHVybjsKKworICAgIGlmIChhdXRvKiBzdG9yYWdlTWFuYWdlciA9IHNlc3Npb24t
PnN0b3JhZ2VNYW5hZ2VyKCkpCisgICAgICAgIHN0b3JhZ2VNYW5hZ2VyLT5yZXNldFF1b3RhVXBk
YXRlZEJhc2VkT25Vc2FnZUZvclRlc3Rpbmcob3JpZ2luKTsKIH0KIAogdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
KQpAQCAtOTgzLDggKzk4NywxMCBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Ojp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlc0ZvckluZGV4ZWREQihjb25zdAogICAgICAgICBm
b3IgKGF1dG8mIGZpbGUgOiBmaWxlUmVmZXJlbmNlcykKICAgICAgICAgICAgIGZpbGUtPnJldm9r
ZUZpbGVBY2Nlc3MoKTsKIAotICAgICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNz
aW9uKCkpCi0gICAgICAgICAgICBzZXNzaW9uLT5lbnN1cmVXZWJJREJTZXJ2ZXIoKS5yZWdpc3Rl
clRlbXBvcmFyeUJsb2JGaWxlUGF0aHMobV9jb25uZWN0aW9uLCBmaWxlUGF0aHMpOworICAgICAg
ICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKCkpIHsKKyAgICAgICAgICAgIGlm
IChhdXRvKiBzdG9yYWdlTWFuYWdlciA9IHNlc3Npb24tPnN0b3JhZ2VNYW5hZ2VyKCkpCisgICAg
ICAgICAgICAgICAgc3RvcmFnZU1hbmFnZXItPnJlZ2lzdGVyVGVtcG9yYXJ5QmxvYkZpbGVQYXRo
cyhtX2Nvbm5lY3Rpb24sIGZpbGVQYXRocyk7CisgICAgICAgIH0KICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoV1RGTW92ZShmaWxlUGF0aHMpKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggN2M3OWUyYTIwOTc2
YTEzOWM3ZjY2N2YxMTNjNDg5NDZkZWRkNTY0MS4uMTExODFlMjc4YjgyN2U3YzYwMTZkMDEwYmUy
YWIyNjYzMWY0ZmU0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5jcHAKQEAgLTI2NCw4ICsyNjQsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpk
aWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKQogICAgIC8vIE1ha2Ugc3VyZSB3ZSBmbHVzaCBhbGwg
Y29va2llcyB0byBkaXNrIGJlZm9yZSBleGl0aW5nLgogICAgIGZvckVhY2hOZXR3b3JrU2Vzc2lv
bihbJl0gKGF1dG8mIHNlc3Npb24pIHsKICAgICAgICAgcGxhdGZvcm1GbHVzaENvb2tpZXMoc2Vz
c2lvbi5zZXNzaW9uSUQoKSwgW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKLSAgICAgICAgLy8g
TWFrZSBzdXJlIHJlZmVyZW5jZSB0byBOZXR3b3JrUHJvY2VzcyBpbiBzcGFjZVJlcXVlc3RlciBp
cyByZW1vdmVkLgotICAgICAgICBzZXNzaW9uLmNsb3NlSURCU2VydmVyKFtjYWxsYmFja0FnZ3Jl
Z2F0b3JdIHsgfSk7CiAgICAgfSk7CiB9CiAKQEAgLTM4Miw3ICszODAsNiBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpjcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhQcm9jZXNzSWRl
bnRpZmllciBpZGVudAogICAgIGNvbm5lY3Rpb24uc2V0T25MaW5lU3RhdGUoTmV0d29ya1N0YXRl
Tm90aWZpZXI6OnNpbmdsZXRvbigpLm9uTGluZSgpKTsKIAogICAgIGlmIChhdXRvKiBzZXNzaW9u
ID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICBzZXNzaW9uLT5lbnN1cmVX
ZWJJREJTZXJ2ZXIoKS5hZGRDb25uZWN0aW9uKGNvbm5lY3Rpb24uY29ubmVjdGlvbigpLCBpZGVu
dGlmaWVyKTsKICAgICAgICAgaWYgKGF1dG8qIG1hbmFnZXIgPSBzZXNzaW9uLT5zdG9yYWdlTWFu
YWdlcigpKQogICAgICAgICAgICAgbWFuYWdlci0+c3RhcnRSZWNlaXZpbmdNZXNzYWdlRnJvbUNv
bm5lY3Rpb24oY29ubmVjdGlvbi5jb25uZWN0aW9uKCkpOwogICAgIH0KQEAgLTQwNiw4ICs0MDMs
NyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjphZGRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRh
U3RvcmVQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycwogICAgIGFkZFNlc3Npb25TdG9yYWdlUXVvdGFN
YW5hZ2VyKHNlc3Npb25JRCwgcGFyYW1ldGVycy5wZXJPcmlnaW5TdG9yYWdlUXVvdGEsIHBhcmFt
ZXRlcnMucGVyVGhpcmRQYXJ0eU9yaWdpblN0b3JhZ2VRdW90YSwgcGFyYW1ldGVycy5jYWNoZVN0
b3JhZ2VEaXJlY3RvcnksIHBhcmFtZXRlcnMuY2FjaGVTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9u
SGFuZGxlKTsKIAogICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lv
bklEKSkgewotICAgICAgICBzZXNzaW9uLT5hZGRTdG9yYWdlTWFuYWdlclNlc3Npb24ocGFyYW1l
dGVycy5nZW5lcmFsU3RvcmFnZURpcmVjdG9yeSwgcGFyYW1ldGVycy5nZW5lcmFsU3RvcmFnZURp
cmVjdG9yeUhhbmRsZSwgcGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnksIHBhcmFtZXRl
cnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKLSAgICAgICAgc2Vzc2lv
bi0+YWRkSW5kZXhlZERhdGFiYXNlU2Vzc2lvbihwYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURp
cmVjdG9yeSwgcGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnlFeHRlbnNpb25IYW5k
bGUpOworICAgICAgICBzZXNzaW9uLT5hZGRTdG9yYWdlTWFuYWdlclNlc3Npb24ocGFyYW1ldGVy
cy5nZW5lcmFsU3RvcmFnZURpcmVjdG9yeSwgcGFyYW1ldGVycy5nZW5lcmFsU3RvcmFnZURpcmVj
dG9yeUhhbmRsZSwgcGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnksIHBhcmFtZXRlcnMu
bG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlLCBwYXJhbWV0ZXJzLmluZGV4ZWRE
YXRhYmFzZURpcmVjdG9yeSwgcGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnlFeHRl
bnNpb25IYW5kbGUsIHBhcmFtZXRlcnMuY2FjaGVTdG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0ZXJz
LnBlck9yaWdpblN0b3JhZ2VRdW90YSwgcGFyYW1ldGVycy5wZXJUaGlyZFBhcnR5T3JpZ2luU3Rv
cmFnZVF1b3RhKTsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgICAgIHNlc3Npb24t
PmFkZFNlcnZpY2VXb3JrZXJTZXNzaW9uKHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclByb2Nlc3NU
ZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCwgV1RGTW92ZShwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25EaXJlY3RvcnkpLCBwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogI2VuZGlmCkBAIC0xNDUyLDEzICsxNDQ4LDYg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXQKICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5t
X3dlYnNpdGVEYXRhLmhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUgPSBob3N0TmFtZXNXaXRoSFNUU0Nh
Y2hlKHNlc3Npb25JRCk7CiAjZW5kaWYKIAotICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRh
aW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKSAmJiBzZXNzaW9uICYmIHNl
c3Npb24tPmhhc0lEQkRhdGFiYXNlUGF0aCgpKSB7Ci0gICAgICAgIHNlc3Npb24tPmVuc3VyZVdl
YklEQlNlcnZlcigpLmdldE9yaWdpbnMoW2NhbGxiYWNrQWdncmVnYXRvcl0oYXV0byYmIG9yaWdp
bnMpIHsKLSAgICAgICAgICAgIHdoaWxlICghb3JpZ2lucy5pc0VtcHR5KCkpCi0gICAgICAgICAg
ICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX3dlYnNpdGVEYXRhLmVudHJpZXMuYXBwZW5kKHsg
b3JpZ2lucy50YWtlQW55KCksIFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzLCAw
IH0pOwotICAgICAgICB9KTsKLSAgICB9Ci0KICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAg
ICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9ucykgJiYgc2Vzc2lvbiAmJiBzZXNzaW9uLT5oYXNTZXJ2aWNlV29y
a2VyRGF0YWJhc2VQYXRoKCkpIHsKICAgICAgICAgc2Vzc2lvbi0+ZW5zdXJlU1dTZXJ2ZXIoKS5n
ZXRPcmlnaW5zV2l0aFJlZ2lzdHJhdGlvbnMoW2NhbGxiYWNrQWdncmVnYXRvcl0oY29uc3QgSGFz
aFNldDxTZWN1cml0eU9yaWdpbkRhdGE+JiBzZWN1cml0eU9yaWdpbnMpIG11dGFibGUgewpAQCAt
MTUyNSw5ICsxNTE0LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGEo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2kKICAgICBpZiAod2Vic2l0
ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkRPTUNhY2hlKSAmJiBzZXNzaW9u
KQogICAgICAgICBDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6Y2xlYXJBbGxDYWNoZXMoKnNlc3Npb24s
IFtjbGVhclRhc2tzSGFuZGxlcl0geyB9KTsKIAotICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNv
bnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKSAmJiAhc2Vzc2lvbklE
LmlzRXBoZW1lcmFsKCkgJiYgc2Vzc2lvbikKLSAgICAgICAgc2Vzc2lvbi0+ZW5zdXJlV2ViSURC
U2VydmVyKCkuY2xvc2VBbmREZWxldGVEYXRhYmFzZXNNb2RpZmllZFNpbmNlKG1vZGlmaWVkU2lu
Y2UsIFtjbGVhclRhc2tzSGFuZGxlcl0geyB9KTsKLQogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKICAgICBib29sIGNsZWFyU2VydmljZVdvcmtlcnMgPSB3ZWJzaXRlRGF0YVR5cGVzLmNvbnRh
aW5zKFdlYnNpdGVEYXRhVHlwZTo6RE9NQ2FjaGUpIHx8IHdlYnNpdGVEYXRhVHlwZXMuY29udGFp
bnMoV2Vic2l0ZURhdGFUeXBlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucyk7CiAgICAgaWYg
KGNsZWFyU2VydmljZVdvcmtlcnMgJiYgIXNlc3Npb25JRC5pc0VwaGVtZXJhbCgpICYmIHNlc3Np
b24pCkBAIC0xNjIwLDkgKzE2MDYsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJz
aXRlRGF0YUZvck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpbwogICAgICAg
ICAgICAgQ2FjaGVTdG9yYWdlOjpFbmdpbmU6OmNsZWFyQ2FjaGVzRm9yT3JpZ2luKCpzZXNzaW9u
LCBTZWN1cml0eU9yaWdpbkRhdGEgeyBvcmlnaW5EYXRhIH0sIFtjbGVhclRhc2tzSGFuZGxlcl0g
eyB9KTsKICAgICB9CiAKLSAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRl
RGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykgJiYgIXNlc3Npb25JRC5pc0VwaGVtZXJhbCgp
ICYmIHNlc3Npb24pCi0gICAgICAgIHNlc3Npb24tPmVuc3VyZVdlYklEQlNlcnZlcigpLmNsb3Nl
QW5kRGVsZXRlRGF0YWJhc2VzRm9yT3JpZ2lucyhvcmlnaW5EYXRhcywgW2NsZWFyVGFza3NIYW5k
bGVyXSB7IH0pOwotCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGJvb2wgY2xlYXJT
ZXJ2aWNlV29ya2VycyA9IHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBl
OjpET01DYWNoZSkgfHwgd2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6
OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zKTsKICAgICBpZiAoY2xlYXJTZXJ2aWNlV29ya2Vy
cyAmJiAhc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkgJiYgc2Vzc2lvbikgewpAQCAtMTgxMSwxNyAr
MTc5NCw2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZUFuZFJlc3RyaWN0V2Vic2l0ZURh
dGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoUEFMOjpTZXNzCiAgICAgICAgICAgICB9CiAgICAgICAg
IH0pOwogICAgIH0KLQotICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVE
YXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKSAmJiBzZXNzaW9uICYmIHNlc3Npb24tPmhhc0lE
QkRhdGFiYXNlUGF0aCgpKSB7Ci0gICAgICAgIHNlc3Npb24tPmVuc3VyZVdlYklEQlNlcnZlcigp
LmdldE9yaWdpbnMoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBzZXNzaW9u
SUQsIGNhbGxiYWNrQWdncmVnYXRvciwgZG9tYWluc1RvRGVsZXRlQWxsTm9uQ29va2llV2Vic2l0
ZURhdGFGb3JdKGF1dG8mJiBvcmlnaW5zKSB7Ci0gICAgICAgICAgICBhdXRvKiBzZXNzaW9uID0g
bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKLSAgICAgICAgICAgIGlmICghc2Vzc2lvbiB8fCAh
c2Vzc2lvbi0+d2ViSURCU2VydmVyKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAg
ICAgICAgICBhdXRvIG9yaWdpbnNUb0RlbGV0ZSA9IGZpbHRlckZvclJlZ2lzdHJhYmxlRG9tYWlu
cyhvcmlnaW5zLCBkb21haW5zVG9EZWxldGVBbGxOb25Db29raWVXZWJzaXRlRGF0YUZvciwgY2Fs
bGJhY2tBZ2dyZWdhdG9yLT5tX2RvbWFpbnMpOwotICAgICAgICAgICAgc2Vzc2lvbi0+d2ViSURC
U2VydmVyKCktPmNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzRm9yT3JpZ2lucyhvcmlnaW5zVG9EZWxl
dGUsIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7Ci0gICAgICAgIH0pOwotICAgIH0KICAgICAK
ICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgYm9vbCBjbGVhclNlcnZpY2VXb3JrZXJz
ID0gd2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkRPTUNhY2hlKSB8
fCB3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6U2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbnMpOwpAQCAtMTk1OCwxMyArMTkzMCw2IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OnJlZ2lzdHJhYmxlRG9tYWluc1dpdGhXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsCiAgICAgICAgIH0pOwogICAgIH0KICAgICAKLSAgICBpZiAod2Vic2l0ZURhdGFUeXBl
cy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykgJiYgc2Vzc2lv
biAmJiBzZXNzaW9uLT5oYXNJREJEYXRhYmFzZVBhdGgoKSkgewotICAgICAgICBzZXNzaW9uLT5l
bnN1cmVXZWJJREJTZXJ2ZXIoKS5nZXRPcmlnaW5zKFtjYWxsYmFja0FnZ3JlZ2F0b3JdKGF1dG8m
JiBvcmlnaW5zKSB7Ci0gICAgICAgICAgICB3aGlsZSAoIW9yaWdpbnMuaXNFbXB0eSgpKQotICAg
ICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YS5lbnRyaWVzLmFw
cGVuZCh7IG9yaWdpbnMudGFrZUFueSgpLCBXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFi
YXNlcywgMCB9KTsKLSAgICAgICAgfSk7Ci0gICAgfQotICAgIAogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5
cGU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zKSAmJiBzZXNzaW9uICYmIHNlc3Npb24tPmhh
c1NlcnZpY2VXb3JrZXJEYXRhYmFzZVBhdGgoKSkgewogICAgICAgICBzZXNzaW9uLT5lbnN1cmVT
V1NlcnZlcigpLmdldE9yaWdpbnNXaXRoUmVnaXN0cmF0aW9ucyhbY2FsbGJhY2tBZ2dyZWdhdG9y
XShjb25zdCBIYXNoU2V0PFNlY3VyaXR5T3JpZ2luRGF0YT4mIHNlY3VyaXR5T3JpZ2lucykgbXV0
YWJsZSB7CkBAIC0yMTI5LDQzICsyMDk0LDEwIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnByb2Nl
c3NXaWxsU3VzcGVuZEltbWluZW50bHlGb3JUZXN0aW5nU3luYyhDb21wbGV0aW9uSGFuZGxlCiAg
ICAgcHJlcGFyZVRvU3VzcGVuZCh0cnVlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9
CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OnN1c3BlbmRJREJTZXJ2ZXJzKGJvb2wgaXNTdXNwZW5z
aW9uSW1taW5lbnQpCi17Ci0gICAgbV9zaG91bGRTdXNwZW5kSURCU2VydmVycyA9IHRydWU7Ci0g
ICAgKyttX3N1c3BlbnNpb25JZGVudGlmaWVyOwotCi0gICAgYm9vbCBhbGxTdXNwZW5kZWQgPSB0
cnVlOwotICAgIGF1dG8gY29uZGl0aW9uID0gaXNTdXNwZW5zaW9uSW1taW5lbnQgPyBXZWJJREJT
ZXJ2ZXI6OlN1c3BlbnNpb25Db25kaXRpb246OkFsd2F5cyA6IFdlYklEQlNlcnZlcjo6U3VzcGVu
c2lvbkNvbmRpdGlvbjo6SWZJZGxlOwotICAgIGZvckVhY2hOZXR3b3JrU2Vzc2lvbihbJl0oYXV0
byYgc2Vzc2lvbikgewotICAgICAgICBpZiAoYXV0byogc2VydmVyID0gc2Vzc2lvbi53ZWJJREJT
ZXJ2ZXIoKSkKLSAgICAgICAgICAgIGFsbFN1c3BlbmRlZCAmPSBzZXJ2ZXItPnN1c3BlbmQoY29u
ZGl0aW9uKTsKLSAgICB9KTsKLQotICAgIGlmIChhbGxTdXNwZW5kZWQpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaEFmdGVyKDVfcywgW3RoaXMsIHdlYWtU
aGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHN1c3BlbnNpb25JZGVudGlmaWVyID0gbV9zdXNwZW5z
aW9uSWRlbnRpZmllcl0gewotICAgICAgICBpZiAoIXdlYWtUaGlzKQotICAgICAgICAgICAgcmV0
dXJuOwotCi0gICAgICAgIGlmICghbV9zaG91bGRTdXNwZW5kSURCU2VydmVycyB8fCBzdXNwZW5z
aW9uSWRlbnRpZmllciAhPSBtX3N1c3BlbnNpb25JZGVudGlmaWVyKQotICAgICAgICAgICAgcmV0
dXJuOwotCi0gICAgICAgIGZvckVhY2hOZXR3b3JrU2Vzc2lvbihbXShhdXRvJiBzZXNzaW9uKSB7
Ci0gICAgICAgICAgICBpZiAoYXV0byogc2VydmVyID0gc2Vzc2lvbi53ZWJJREJTZXJ2ZXIoKSkK
LSAgICAgICAgICAgICAgICBzZXJ2ZXItPnN1c3BlbmQoV2ViSURCU2VydmVyOjpTdXNwZW5zaW9u
Q29uZGl0aW9uOjpBbHdheXMpOwotICAgICAgICB9KTsKLSAgICB9KTsKLX0KLQogdm9pZCBOZXR3
b3JrUHJvY2Vzczo6cHJlcGFyZVRvU3VzcGVuZChib29sIGlzU3VzcGVuc2lvbkltbWluZW50LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgUkVM
RUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIE5ldHdvcmtQcm9jZXNzOjpwcmVwYXJl
VG9TdXNwZW5kKCksIGlzU3VzcGVuc2lvbkltbWluZW50PSVkIiwgdGhpcywgaXNTdXNwZW5zaW9u
SW1taW5lbnQpOwogCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBzdXNwZW5kSURCU2Vy
dmVycyhpc1N1c3BlbnNpb25JbW1pbmVudCk7Ci0jZW5kaWYKLQogICAgIGxvd01lbW9yeUhhbmRs
ZXIoQ3JpdGljYWw6Olllcyk7CiAKICAgICBSZWZQdHI8Q2FsbGJhY2tBZ2dyZWdhdG9yPiBjYWxs
YmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShbdGhpcywgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKQEAg
LTIyMjMsMTggKzIxNTUsMTAgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVzdW1lKCkKICNpZiBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgICAgIGlmIChhdXRvKiBzd1NlcnZlciA9IHNlc3Np
b24uc3dTZXJ2ZXIoKSkKICAgICAgICAgICAgIHN3U2VydmVyLT5lbmRTdXNwZW5zaW9uKCk7Ci0j
ZW5kaWYKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgICAgICBpZiAoYXV0byogc2VydmVy
ID0gc2Vzc2lvbi53ZWJJREJTZXJ2ZXIoKSkKLSAgICAgICAgICAgIHNlcnZlci0+cmVzdW1lKCk7
CiAjZW5kaWYKICAgICAgICAgaWYgKGF1dG8qIG1hbmFnZXIgPSBzZXNzaW9uLnN0b3JhZ2VNYW5h
Z2VyKCkpCiAgICAgICAgICAgICBtYW5hZ2VyLT5yZXN1bWUoKTsKICAgICB9KTsKLQotI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCi0gICAgbV9zaG91bGRTdXNwZW5kSURCU2VydmVycyA9IGZhbHNl
OwotI2VuZGlmCiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnByZWZldGNoRE5TKGNvbnN0IFN0
cmluZyYgaG9zdG5hbWUpCkBAIC0yMjgxLDEyICsyMjA1LDEyIEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OnN5bmNMb2NhbFN0b3JhZ2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRp
b25IYW5kCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlc2V0UXVvdGEoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fc2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXJzTG9j
ayB9OwotICAgIGlmIChhdXRvKiBzZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlciA9IG1fc2Vzc2lv
blN0b3JhZ2VRdW90YU1hbmFnZXJzLmdldChzZXNzaW9uSUQpKSB7Ci0gICAgICAgIGZvciAoYXV0
byBzdG9yYWdlUXVvdGFNYW5hZ2VyIDogc2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXItPmV4aXN0
aW5nU3RvcmFnZVF1b3RhTWFuYWdlcnMoKSkKLSAgICAgICAgICAgIHN0b3JhZ2VRdW90YU1hbmFn
ZXItPnJlc2V0UXVvdGFGb3JUZXN0aW5nKCk7Ci0gICAgfQotICAgIGNvbXBsZXRpb25IYW5kbGVy
KCk7CisgICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7CisgICAg
aWYgKCFzZXNzaW9uKQorICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoKTsKKworICAg
IGlmIChhdXRvKiBzdG9yYWdlTWFuYWdlciA9IHNlc3Npb24tPnN0b3JhZ2VNYW5hZ2VyKCkpCisg
ICAgICAgIHN0b3JhZ2VNYW5hZ2VyLT5yZXNldFF1b3RhRm9yVGVzdGluZyhXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNsZWFyU3RvcmFnZShQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKQEAgLTIyOTgsNiArMjIyMiwxNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
OjpjbGVhclN0b3JhZ2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxl
cjx2bwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCit2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpkaWRJbmNyZWFzZVF1b3RhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgQ2xp
ZW50T3JpZ2luJiBvcmlnaW4sIFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllciBpZGVudGlm
aWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBuZXdRdW90YSkKK3sKKyAgICBhdXRvKiBzZXNz
aW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKKyAgICBpZiAoIXNlc3Npb24pCisgICAg
ICAgIHJldHVybjsKKworICAgIGlmIChhdXRvKiBtYW5hZ2VyID0gc2Vzc2lvbi0+c3RvcmFnZU1h
bmFnZXIoKSkKKyAgICAgICAgbWFuYWdlci0+ZGlkSW5jcmVhc2VRdW90YShvcmlnaW4sIGlkZW50
aWZpZXIsIG5ld1F1b3RhKTsKK30KKwogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVuYW1lT3JpZ2lu
SW5XZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgb2xkTmFt
ZSwgY29uc3QgVVJMJiBuZXdOYW1lLCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlw
ZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBhdXRvIGFnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CkBAIC0yMzEwLDkgKzIyNDQsNiBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpyZW5hbWVPcmlnaW5JbldlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Y29uc3QgVQogICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOwog
ICAgIGlmIChhdXRvKiBtYW5hZ2VyID0gc2Vzc2lvbiA/IHNlc3Npb24tPnN0b3JhZ2VNYW5hZ2Vy
KCkgOiBudWxscHRyKQogICAgICAgICBtYW5hZ2VyLT5tb3ZlRGF0YShvbGRPcmlnaW4sIG5ld09y
aWdpbiwgW2FnZ3JlZ2F0b3JdIHsgfSk7Ci0KLSAgICBpZiAoZGF0YVR5cGVzLmNvbnRhaW5zKFdl
YnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKSAmJiBzZXNzaW9uICYmIHNlc3Npb24t
Pmhhc0lEQkRhdGFiYXNlUGF0aCgpKQotICAgICAgICBzZXNzaW9uLT5lbnN1cmVXZWJJREJTZXJ2
ZXIoKS5yZW5hbWVPcmlnaW4ob2xkT3JpZ2luLCBuZXdPcmlnaW4sIFthZ2dyZWdhdG9yXSB7IH0p
OwogfQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpAQCAtMjM3Miw3ICsyMzAzLDggQEAg
UmVmUHRyPFN0b3JhZ2VRdW90YU1hbmFnZXI+IE5ldHdvcmtQcm9jZXNzOjpzdG9yYWdlUXVvdGFN
YW5hZ2VyKFBBTDo6U2Vzc2lvbklEIHMKICAgICBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpVc2FnZUdl
dHRlciB1c2FnZUdldHRlciA9IFtjYWNoZVJvb3RQYXRoID0gc2Vzc2lvblN0b3JhZ2VRdW90YU1h
bmFnZXItPmNhY2hlUm9vdFBhdGgoKS5pc29sYXRlZENvcHkoKSwgaWRiUm9vdFBhdGggPSBpZGJS
b290UGF0aC5pc29sYXRlZENvcHkoKSwgb3JpZ2luID0gb3JpZ2luLmlzb2xhdGVkQ29weSgpXSgp
IHsKICAgICAgICAgQVNTRVJUKCFpc01haW5SdW5Mb29wKCkpOwogCi0gICAgICAgIHJldHVybiBD
YWNoZVN0b3JhZ2U6OkVuZ2luZTo6ZGlza1VzYWdlKGNhY2hlUm9vdFBhdGgsIG9yaWdpbikgKyBJ
REJTZXJ2ZXI6OklEQlNlcnZlcjo6ZGlza1VzYWdlKGlkYlJvb3RQYXRoLCBvcmlnaW4pOworICAg
ICAgICBhdXRvIGNhY2hlU3RvcmFnZVBhdGggPSBDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6c3RvcmFn
ZVBhdGgoY2FjaGVSb290UGF0aCwgb3JpZ2luKTsKKyAgICAgICAgcmV0dXJuIENhY2hlU3RvcmFn
ZTo6RW5naW5lOjpkaXNrVXNhZ2UoY2FjaGVTdG9yYWdlUGF0aCkgKyBJREJTZXJ2ZXI6OklEQlNl
cnZlcjo6ZGlza1VzYWdlKGlkYlJvb3RQYXRoLCBvcmlnaW4pOwogICAgIH07CiAgICAgU3RvcmFn
ZVF1b3RhTWFuYWdlcjo6UXVvdGFJbmNyZWFzZVJlcXVlc3RlciBxdW90YUluY3JlYXNlUmVxdWVz
dGVyID0gW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHNlc3Npb25JRCwgb3Jp
Z2luXSAodWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCBjdXJyZW50U3BhY2UsIHVpbnQ2
NF90IHJlcXVlc3RlZEluY3JlYXNlLCBhdXRvJiYgY2FsbGJhY2spIHsKICAgICAgICAgQVNTRVJU
KGlzTWFpblJ1bkxvb3AoKSk7CkBAIC0yNTg2LDggKzI1MTgsNiBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpyZW1vdmVLZXB0QWxpdmVMb2FkKE5ldHdvcmtSZXNvdXJjZUxvYWRlciYgbG9hZGVyKQog
dm9pZCBOZXR3b3JrUHJvY2Vzczo6Y29ubmVjdGlvblRvV2ViUHJvY2Vzc0Nsb3NlZChJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICBp
ZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKLSAgICAgICAg
aWYgKGF1dG8qIHNlcnZlciA9IHNlc3Npb24tPndlYklEQlNlcnZlcigpKQotICAgICAgICAgICAg
c2VydmVyLT5yZW1vdmVDb25uZWN0aW9uKGNvbm5lY3Rpb24pOwogICAgICAgICBpZiAoYXV0byog
bWFuYWdlciA9IHNlc3Npb24tPnN0b3JhZ2VNYW5hZ2VyKCkpCiAgICAgICAgICAgICBtYW5hZ2Vy
LT5zdG9wUmVjZWl2aW5nTWVzc2FnZUZyb21Db25uZWN0aW9uKGNvbm5lY3Rpb24pOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCA3
ODc3OTI3YTE3YzU1OTZlYjAzYmQ0YWNmNGQ1OGU0MThhYzhiYTIzLi4wZjg1MzNlZDEzZGQyNjI3
N2E2ZGQ1MmFiNmRhYmUyMGMzZTA4ODA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiTG9jYWxT
dG9yYWdlRGF0YWJhc2VUcmFja2VyLmgiCiAjaW5jbHVkZSAiTmV0d29ya0NvbnRlbnRSdWxlTGlz
dE1hbmFnZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllci5oIgor
I2luY2x1ZGUgIlF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJU
Q0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVu
c2lvbi5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCIKQEAgLTI4OCwxMiAr
Mjg5LDExIEBAIHB1YmxpYzoKICAgICBOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlciYgbmV0
d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIoKSB7IHJldHVybiBtX25ldHdvcmtDb250ZW50UnVs
ZUxpc3RNYW5hZ2VyOyB9CiAjZW5kaWYKIAotICAgIGJvb2wgc2hvdWxkU3VzcGVuZElEQlNlcnZl
cnMoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZFN1c3BlbmRJREJTZXJ2ZXJzOyB9Ci0KICAgICB2
b2lkIHN5bmNMb2NhbFN0b3JhZ2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAogICAg
IHZvaWQgcmVzZXRRdW90YShQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKICAgICB2b2lkIGNsZWFyU3RvcmFnZShQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGRpZEluY3JlYXNlUXVvdGEoUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRl
bnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbmV3UXVvdGEpOwogICAgIHZvaWQgcmVu
YW1lT3JpZ2luSW5XZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgY29uc3Qg
VVJMJiwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtNDczLDggKzQ3Myw2IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCByZWdpc3RlclVSTFNjaGVtZUFzTm9BY2Nlc3MoY29uc3QgU3RyaW5n
JikgY29uc3Q7CiAgICAgdm9pZCByZWdpc3RlclVSTFNjaGVtZUFzQ09SU0VuYWJsZWQoY29uc3Qg
U3RyaW5nJikgY29uc3Q7CiAKLSAgICB2b2lkIHN1c3BlbmRJREJTZXJ2ZXJzKGJvb2wgaXNTdXNw
ZW5zaW9uSW1taW5lbnQpOwotCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIHNl
dElzSG9sZGluZ0xvY2tlZEZpbGVzKGJvb2wpOwogI2VuZGlmCkBAIC00ODIsNiArNDgwLDcgQEAg
cHJpdmF0ZToKICAgICBjbGFzcyBTZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlciB7CiAgICAgICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKKyAgICAgICAgU2Vzc2lvblN0
b3JhZ2VRdW90YU1hbmFnZXIoKSA9IGRlbGV0ZTsKICAgICAgICAgU2Vzc2lvblN0b3JhZ2VRdW90
YU1hbmFnZXIoY29uc3QgU3RyaW5nJiBjYWNoZVJvb3RQYXRoLCB1aW50NjRfdCBkZWZhdWx0UXVv
dGEsIHVpbnQ2NF90IGRlZmF1bHRUaGlyZFBhcnR5UXVvdGEpCiAgICAgICAgICAgICA6IG1fY2Fj
aGVSb290UGF0aChjYWNoZVJvb3RQYXRoKQogICAgICAgICAgICAgLCBtX2RlZmF1bHRRdW90YShk
ZWZhdWx0UXVvdGEpCkBAIC01MDgsOCArNTA3LDggQEAgcHJpdmF0ZToKICAgICBwcml2YXRlOgog
ICAgICAgICBTdHJpbmcgbV9jYWNoZVJvb3RQYXRoOwogICAgICAgICBTdHJpbmcgbV9pZGJSb290
UGF0aDsKLSAgICAgICAgdWludDY0X3QgbV9kZWZhdWx0UXVvdGEgeyBXZWJDb3JlOjpTdG9yYWdl
UXVvdGFNYW5hZ2VyOjpkZWZhdWx0UXVvdGEoKSB9OwotICAgICAgICB1aW50NjRfdCBtX2RlZmF1
bHRUaGlyZFBhcnR5UXVvdGEgeyBXZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2VyOjpkZWZhdWx0
VGhpcmRQYXJ0eVF1b3RhKCkgfTsKKyAgICAgICAgdWludDY0X3QgbV9kZWZhdWx0UXVvdGE7Cisg
ICAgICAgIHVpbnQ2NF90IG1fZGVmYXVsdFRoaXJkUGFydHlRdW90YTsKICAgICAgICAgSGFzaE1h
cDxXZWJDb3JlOjpDbGllbnRPcmlnaW4sIFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5h
Z2VyPj4gbV9zdG9yYWdlUXVvdGFNYW5hZ2VyczsKICAgICB9OwogICAgIHZvaWQgYWRkU2Vzc2lv
blN0b3JhZ2VRdW90YU1hbmFnZXIoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IGRlZmF1bHRRdW90
YSwgdWludDY0X3QgZGVmYXVsdFRoaXJkUGFydHlRdW90YSwgY29uc3QgU3RyaW5nJiBjYWNoZVJv
b3RQYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmKTsKQEAgLTU0OSw5ICs1NDgsNiBAQCBw
cml2YXRlOgogICAgIFdlYlNRTGl0ZURhdGFiYXNlVHJhY2tlciBtX3dlYlNRTGl0ZURhdGFiYXNl
VHJhY2tlcjsKICAgICBSZWZQdHI8UHJvY2Vzc0Fzc2VydGlvbj4gbV9ob2xkaW5nTG9ja2VkRmls
ZUFzc2VydGlvbjsKICNlbmRpZgotCi0gICAgYm9vbCBtX3Nob3VsZFN1c3BlbmRJREJTZXJ2ZXJz
IHsgZmFsc2UgfTsKLSAgICB1aW50NjRfdCBtX3N1c3BlbnNpb25JZGVudGlmaWVyIHsgMCB9Owog
ICAgIAogI2lmIEVOQUJMRShXRUJfUlRDKQogICAgIFJlZlB0cjxSVENEYXRhQ2hhbm5lbFJlbW90
ZU1hbmFnZXJQcm94eT4gbV9ydGNEYXRhQ2hhbm5lbFByb3h5OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXgg
NjM3ZTE1OWYxODYzOTNiZWM1Y2MwNWFiNWJkNTc4MGJlOGM2ZmNlNC4uNjMxZTJiNjA3M2MwMTky
MTMwNjhjMjA5NmI4MjdiMjc5ZGJjN2RlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0xNzksNiArMTc5
LDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogCiAgICAg
UmVzZXRRdW90YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+ICgpIEFzeW5jCiAgICAgQ2xl
YXJTdG9yYWdlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKCkgQXN5bmMKKyAgICBEaWRJ
bmNyZWFzZVF1b3RhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RydWN0IFdlYkNvcmU6OkNs
aWVudE9yaWdpbiBvcmlnaW4sIFdlYktpdDo6UXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVy
IGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IG5ld1F1b3RhKQogICAgIAogI2lm
IEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBIYXNBcHBCb3VuZFNlc3Npb24oUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoYm9vbCBoYXNBcHBCb3VuZFNlc3Npb24pIEFzeW5jCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCmluZGV4
IGUyYjI0ZDgzMjJiNmVjMWMzNzcwMWRjYWQ0OTc1MzRjZWYyMzFhMjYuLjljNGJlMmI2MTg5NDc0
Y2NmMjRiZTcwYjExMjcyOTE4ZmMwMmIzZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCkBAIC0yMDQsOCArMjA0LDYgQEAgdm9pZCBOZXR3
b3JrU2Vzc2lvbjo6aW52YWxpZGF0ZUFuZENhbmNlbCgpCiAgICAgaWYgKG1fcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcykKICAgICAgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5pbnZhbGlkYXRl
QW5kQ2FuY2VsKCk7CiAjZW5kaWYKLSAgICBpZiAoYXV0byBzZXJ2ZXIgPSBzdGQ6OmV4Y2hhbmdl
KG1fd2ViSURCU2VydmVyLCBudWxscHRyKSkKLSAgICAgICAgc2VydmVyLT5jbG9zZSgpOwogICAg
IGlmIChhdXRvIG1hbmFnZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fc3RvcmFnZU1hbmFnZXIsIG51bGxw
dHIpKQogICAgICAgICBtYW5hZ2VyLT5jbG9zZSgpOwogICAgIG1fY2FjaGVFbmdpbmUgPSBudWxs
cHRyOwpAQCAtNjUzLDU1ICs2NTEsMTggQEAgYm9vbCBOZXR3b3JrU2Vzc2lvbjo6aGFzU2Vydmlj
ZVdvcmtlckRhdGFiYXNlUGF0aCgpIGNvbnN0CiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCiAKLVdlYklEQlNlcnZlciYgTmV0d29ya1Nlc3Npb246OmVuc3VyZVdlYklEQlNlcnZl
cigpCi17Ci0gICAgaWYgKCFtX3dlYklEQlNlcnZlcikgewotICAgICAgICBTdHJpbmcgcGF0aDsK
LSAgICAgICAgaWYgKCFzZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpKSB7Ci0gICAgICAgICAgICBB
U1NFUlQoIW1faWRiRGF0YWJhc2VQYXRoLmlzTnVsbCgpKTsKLSAgICAgICAgICAgIHBhdGggPSBt
X2lkYkRhdGFiYXNlUGF0aDsKLSAgICAgICAgfQotCi0gICAgICAgIGF1dG8gc3BhY2VSZXF1ZXN0
ZXIgPSBbbmV0d29ya1Byb2Nlc3MgPSBSZWYgeyBuZXR3b3JrUHJvY2VzcygpIH0sIHNlc3Npb25J
RCA9IHNlc3Npb25JRCgpXShjb25zdCBhdXRvJiBvcmlnaW4sIHVpbnQ2NF90IHNwYWNlUmVxdWVz
dGVkKSB7Ci0gICAgICAgICAgICByZXR1cm4gbmV0d29ya1Byb2Nlc3MtPnN0b3JhZ2VRdW90YU1h
bmFnZXIoc2Vzc2lvbklELCBvcmlnaW4pLT5yZXF1ZXN0U3BhY2VPbkJhY2tncm91bmRUaHJlYWQo
c3BhY2VSZXF1ZXN0ZWQpOwotICAgICAgICB9OwotCi0gICAgICAgIG1fd2ViSURCU2VydmVyID0g
V2ViSURCU2VydmVyOjpjcmVhdGUoc2Vzc2lvbklEKCksIHBhdGgsIFdURk1vdmUoc3BhY2VSZXF1
ZXN0ZXIpKTsKLSAgICAgICAgaWYgKG5ldHdvcmtQcm9jZXNzKCkuc2hvdWxkU3VzcGVuZElEQlNl
cnZlcnMoKSkKLSAgICAgICAgICAgIG1fd2ViSURCU2VydmVyLT5zdXNwZW5kKFdlYklEQlNlcnZl
cjo6U3VzcGVuc2lvbkNvbmRpdGlvbjo6QWx3YXlzKTsKLSAgICB9Ci0gICAgcmV0dXJuICptX3dl
YklEQlNlcnZlcjsKLX0KLQotdm9pZCBOZXR3b3JrU2Vzc2lvbjo6Y2xvc2VJREJTZXJ2ZXIoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIGlmICgh
bV93ZWJJREJTZXJ2ZXIpCi0gICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcigpOwotCi0g
ICAgc3RkOjpleGNoYW5nZShtX3dlYklEQlNlcnZlciwgbnVsbHB0ciktPmNsb3NlKFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKLX0KLQotdm9pZCBOZXR3b3JrU2Vzc2lvbjo6YWRkSW5kZXhl
ZERhdGFiYXNlU2Vzc2lvbihjb25zdCBTdHJpbmcmIGluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSwg
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBoYW5kbGUpCi17Ci0gICAgLy8gKioqKioqKioqCi0g
ICAgLy8gSU1QT1JUQU5UOiBEbyBub3QgY2hhbmdlIHRoZSBkaXJlY3Rvcnkgc3RydWN0dXJlIGZv
ciBpbmRleGVkIGRhdGFiYXNlcyBvbiBkaXNrIHdpdGhvdXQgZmlyc3QgY29uc3VsdGluZyBhIHJl
dmlld2VyIGZyb20gQXBwbGUgKDxyZGFyOi8vcHJvYmxlbS8xNzQ1NDcxMj4pCi0gICAgLy8gKioq
KioqKioqCi0gICAgYXV0byBpc05ldyA9IG1faWRiRGF0YWJhc2VQYXRoLmlzTnVsbCgpOwotICAg
IG1faWRiRGF0YWJhc2VQYXRoID0gaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5OwotICAgIGlmIChp
c05ldykgewotICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkoaGFu
ZGxlKTsKLSAgICAgICAgbmV0d29ya1Byb2Nlc3MoKS5zZXRTZXNzaW9uU3RvcmFnZVF1b3RhTWFu
YWdlcklEQlJvb3RQYXRoKHNlc3Npb25JRCgpLCBpbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkpOwot
ICAgIH0KLX0KLQotdm9pZCBOZXR3b3JrU2Vzc2lvbjo6YWRkU3RvcmFnZU1hbmFnZXJTZXNzaW9u
KGNvbnN0IFN0cmluZyYgZ2VuZXJhbFN0b3JhZ2VQYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUmIGdlbmVyYWxTdG9yYWdlUGF0aEhhbmRsZSwgY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VQ
YXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIGxvY2FsU3RvcmFnZVBhdGhIYW5kbGUpCit2
b2lkIE5ldHdvcmtTZXNzaW9uOjphZGRTdG9yYWdlTWFuYWdlclNlc3Npb24oY29uc3QgU3RyaW5n
JiBnZW5lcmFsU3RvcmFnZVBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgZ2VuZXJhbFN0
b3JhZ2VQYXRoSGFuZGxlLCBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZVBhdGgsIFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSYgbG9jYWxTdG9yYWdlUGF0aEhhbmRsZSwgY29uc3QgU3RyaW5nJiBp
ZGJTdG9yYWdlUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBpZGJTdG9yYWdlUGF0aEhh
bmRsZSwgY29uc3QgU3RyaW5nJiBjYWNoZVN0b3JhZ2VQYXRoLCB1aW50NjRfdCBkZWZhdWx0T3Jp
Z2luUXVvdGEsIHVpbnQ2NF90IGRlZmF1bHRUaGlyZFBhcnR5UXVvdGEpCiB7CiAgICAgaWYgKG1f
c3RvcmFnZU1hbmFnZXIpCiAgICAgICAgIHJldHVybjsKIAogICAgIFNhbmRib3hFeHRlbnNpb246
OmNvbnN1bWVQZXJtYW5lbnRseShnZW5lcmFsU3RvcmFnZVBhdGhIYW5kbGUpOwogICAgIFNhbmRi
b3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShsb2NhbFN0b3JhZ2VQYXRoSGFuZGxlKTsK
LSAgICBtX3N0b3JhZ2VNYW5hZ2VyID0gTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjcmVhdGUoc2Vz
c2lvbklEKCksIGdlbmVyYWxTdG9yYWdlUGF0aCwgbG9jYWxTdG9yYWdlUGF0aCk7CisgICAgU2Fu
ZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KGlkYlN0b3JhZ2VQYXRoSGFuZGxlKTsK
KyAgICBJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGNvbm5lY3Rpb25JRDsKKyAgICBpZiAoYXV0
byogY29ubmVjdGlvbiA9IG5ldHdvcmtQcm9jZXNzKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KSkKKyAgICAgICAgY29ubmVjdGlvbklEID0gY29ubmVjdGlvbi0+dW5pcXVlSUQoKTsKKyAgICBt
X3N0b3JhZ2VNYW5hZ2VyID0gTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjcmVhdGUoc2Vzc2lvbklE
KCksIGNvbm5lY3Rpb25JRCwgZ2VuZXJhbFN0b3JhZ2VQYXRoLCBsb2NhbFN0b3JhZ2VQYXRoLCBp
ZGJTdG9yYWdlUGF0aCwgY2FjaGVTdG9yYWdlUGF0aCwgZGVmYXVsdE9yaWdpblF1b3RhLCBkZWZh
dWx0VGhpcmRQYXJ0eVF1b3RhKTsKIH0KIAogdm9pZCBOZXR3b3JrU2Vzc2lvbjo6ZW5zdXJlQ2Fj
aGVFbmdpbmUoRnVuY3Rpb248dm9pZChDYWNoZVN0b3JhZ2U6OkVuZ2luZSYpPiYmIGNhbGxiYWNr
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lv
bi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCmluZGV4
IDE5MzA3Y2Y0MGJlM2IyZjI2MDU3ZDAxNmM3NjZlZGNlNDk4Yzk1NDIuLmJhYTEyMjQ1Y2YyMjY0
ZDkyMTU3ZGRlNDcxZDJlNGIxMDJiYzI5N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKQEAgLTIxMCwxNCArMjEwLDggQEAgcHVibGljOgogICAg
IHZvaWQgYWRkU2VydmljZVdvcmtlclNlc3Npb24oYm9vbCBwcm9jZXNzVGVybWluYXRpb25EZWxh
eUVuYWJsZWQsIFN0cmluZyYmIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnksIGNv
bnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYpOwogI2VuZGlmCiAKLSAgICBXZWJJREJTZXJ2
ZXIqIHdlYklEQlNlcnZlcigpIHsgcmV0dXJuIG1fd2ViSURCU2VydmVyLmdldCgpOyB9Ci0gICAg
V2ViSURCU2VydmVyJiBlbnN1cmVXZWJJREJTZXJ2ZXIoKTsKLSAgICB2b2lkIGNsb3NlSURCU2Vy
dmVyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBhZGRJbmRleGVkRGF0
YWJhc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYgaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5LCBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUmKTsKLSAgICBib29sIGhhc0lEQkRhdGFiYXNlUGF0aCgpIGNv
bnN0IHsgcmV0dXJuICFtX2lkYkRhdGFiYXNlUGF0aC5pc0VtcHR5KCk7IH0KLQogICAgIE5ldHdv
cmtTdG9yYWdlTWFuYWdlciogc3RvcmFnZU1hbmFnZXIoKSB7IHJldHVybiBtX3N0b3JhZ2VNYW5h
Z2VyLmdldCgpOyB9Ci0gICAgdm9pZCBhZGRTdG9yYWdlTWFuYWdlclNlc3Npb24oY29uc3QgU3Ry
aW5nJiBnZW5lcmFsU3RvcmFnZVBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgZ2VuZXJh
bFN0b3JhZ2VQYXRoSGFuZGxlLCBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZVBhdGgsIFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSYgbG9jYWxTdG9yYWdlUGF0aEhhbmRsZSk7CisgICAgdm9pZCBh
ZGRTdG9yYWdlTWFuYWdlclNlc3Npb24oY29uc3QgU3RyaW5nJiBnZW5lcmFsU3RvcmFnZVBhdGgs
IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgZ2VuZXJhbFN0b3JhZ2VQYXRoSGFuZGxlLCBjb25z
dCBTdHJpbmcmIGxvY2FsU3RvcmFnZVBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgbG9j
YWxTdG9yYWdlUGF0aEhhbmRsZSwgY29uc3QgU3RyaW5nJiBpZGJTdG9yYWdlUGF0aCwgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlJiBpZGJTdG9yYWdlUGF0aEhhbmRsZSwgY29uc3QgU3RyaW5nJiBj
YWNoZVN0b3JhZ2VQYXRoLCB1aW50NjRfdCBkZWZhdWx0T3JpZ2luUXVvdGEsIHVpbnQ2NF90IGRl
ZmF1bHRUaGlyZFBhcnR5UXVvdGEpOwogCiAgICAgQ2FjaGVTdG9yYWdlOjpFbmdpbmUqIGNhY2hl
RW5naW5lKCkgeyByZXR1cm4gbV9jYWNoZUVuZ2luZS5nZXQoKTsgfQogICAgIHZvaWQgZW5zdXJl
Q2FjaGVFbmdpbmUoRnVuY3Rpb248dm9pZChDYWNoZVN0b3JhZ2U6OkVuZ2luZSYpPiYmKTsKQEAg
LTMxOSw5ICszMTMsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6
OlNXU2VydmVyPiBtX3N3U2VydmVyOwogI2VuZGlmCiAKLSAgICBTdHJpbmcgbV9pZGJEYXRhYmFz
ZVBhdGg7Ci0gICAgUmVmUHRyPFdlYklEQlNlcnZlcj4gbV93ZWJJREJTZXJ2ZXI7Ci0KICAgICBS
ZWZQdHI8TmV0d29ya1N0b3JhZ2VNYW5hZ2VyPiBtX3N0b3JhZ2VNYW5hZ2VyOwogICAgIFJlZlB0
cjxDYWNoZVN0b3JhZ2U6OkVuZ2luZT4gbV9jYWNoZUVuZ2luZTsKICAgICBWZWN0b3I8RnVuY3Rp
b248dm9pZChDYWNoZVN0b3JhZ2U6OkVuZ2luZSYpPj4gbV9jYWNoZVN0b3JhZ2VQYXJhbWV0ZXJz
Q2FsbGJhY2tzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCmluZGV4IGMyMDBjZThiNWViNGMzYTAzNjU3ZTgy
MjY4OTkwMmI0NmRiZjhhYjAuLjFhMDkwN2RkNDBiM2ZjNzhlZGU5NzM3MmM5MjA1YTExODZiNDAz
MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVT
dG9yYWdlRW5naW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJOZXR3
b3JrQ2FjaGVJT0NoYW5uZWwuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgogI2luY2x1
ZGUgIk5ldHdvcmtTZXNzaW9uLmgiCisjaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmgi
CiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFUeXBlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DYWNoZVF1
ZXJ5T3B0aW9ucy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmV0cmlldmVSZWNvcmRzT3B0aW9ucy5o
PgpAQCAtMjAzLDQwICsyMDQsNDkgQEAgc3RhdGljIHVpbnQ2NF90IGdldERpcmVjdG9yeVNpemUo
Y29uc3QgU3RyaW5nJiBkaXJlY3RvcnlQYXRoKQogICAgIHJldHVybiBkaXJlY3RvcnlTaXplOwog
fQogCi11aW50NjRfdCBFbmdpbmU6OmRpc2tVc2FnZShjb25zdCBTdHJpbmcmIHJvb3RQYXRoLCBj
b25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbikKK1N0cmluZyBFbmdpbmU6OnN0b3Jh
Z2VQYXRoKGNvbnN0IFN0cmluZyYgcm9vdERpcmVjdG9yeSwgY29uc3QgV2ViQ29yZTo6Q2xpZW50
T3JpZ2luJiBvcmlnaW4pCiB7CiAgICAgQVNTRVJUKCFpc01haW5SdW5Mb29wKCkpOworICAgIAor
ICAgIGlmIChyb290RGlyZWN0b3J5LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGVtcHR5U3Ry
aW5nKCk7CiAKLSAgICBpZiAocm9vdFBhdGguaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gMDsK
LQotICAgIFN0cmluZyBzYWx0UGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChyb290UGF0aCwgInNhbHQiX3MpOworICAgIFN0cmluZyBzYWx0UGF0aCA9IEZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyb290RGlyZWN0b3J5LCAic2FsdCJfcyk7CiAg
ICAgYXV0byBzYWx0ID0gRmlsZVN5c3RlbTo6cmVhZE9yTWFrZVNhbHQoc2FsdFBhdGgpOwogICAg
IGlmICghc2FsdCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBlbXB0eVN0cmlu
ZygpOwogCiAgICAgS2V5IGtleShvcmlnaW4udG9wT3JpZ2luLnRvU3RyaW5nKCksIG9yaWdpbi5j
bGllbnRPcmlnaW4udG9TdHJpbmcoKSwgeyB9LCB7IH0sICpzYWx0KTsKLSAgICBTdHJpbmcgZGly
ZWN0b3J5UGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyb290UGF0
aCwga2V5Lmhhc2hBc1N0cmluZygpKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KHJvb3REaXJlY3RvcnksIGtleS5oYXNoQXNTdHJpbmcoKSk7Cit9CisK
K3VpbnQ2NF90IEVuZ2luZTo6ZGlza1VzYWdlKGNvbnN0IFN0cmluZyYgb3JpZ2luRGlyZWN0b3J5
KQoreworICAgIEFTU0VSVCghaXNNYWluUnVuTG9vcCgpKTsKKworICAgIGlmIChvcmlnaW5EaXJl
Y3RvcnkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gMDsKIAotICAgIFN0cmluZyBzaXplRmls
ZVBhdGggPSBDYWNoZXM6OmNhY2hlc1NpemVGaWxlbmFtZShkaXJlY3RvcnlQYXRoKTsKKyAgICBT
dHJpbmcgc2l6ZUZpbGVQYXRoID0gQ2FjaGVzOjpjYWNoZXNTaXplRmlsZW5hbWUob3JpZ2luRGly
ZWN0b3J5KTsKICAgICBpZiAoYXV0byByZWNvcmRlZFNpemUgPSByZWFkU2l6ZUZpbGUoc2l6ZUZp
bGVQYXRoKSkKICAgICAgICAgcmV0dXJuICpyZWNvcmRlZFNpemU7CiAKLSAgICByZXR1cm4gZ2V0
RGlyZWN0b3J5U2l6ZShkaXJlY3RvcnlQYXRoKTsKKyAgICByZXR1cm4gZ2V0RGlyZWN0b3J5U2l6
ZShvcmlnaW5EaXJlY3RvcnkpOwogfQogCi12b2lkIEVuZ2luZTo6cmVxdWVzdFNwYWNlKGNvbnN0
IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCB1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNp
c2lvbik+JiYgY2FsbGJhY2spCit2b2lkIEVuZ2luZTo6cmVxdWVzdFNwYWNlKGNvbnN0IFdlYkNv
cmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCB1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykKIHsKICAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwogCiAgICAgaWYgKCFtX25ldHdvcmtQcm9jZXNzKQotICAgICAgICBjYWxsYmFj
ayhXZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbjo6RGVueSk7CisgICAgICAg
IGNhbGxiYWNrKGZhbHNlKTsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5h
Z2VyPiBzdG9yYWdlUXVvdGFNYW5hZ2VyID0gbV9uZXR3b3JrUHJvY2Vzcy0+c3RvcmFnZVF1b3Rh
TWFuYWdlcihtX3Nlc3Npb25JRCwgb3JpZ2luKTsKLSAgICBpZiAoIXN0b3JhZ2VRdW90YU1hbmFn
ZXIpCi0gICAgICAgIGNhbGxiYWNrKFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lz
aW9uOjpEZW55KTsKKyAgICBhdXRvKiBzZXNzaW9uID0gbV9uZXR3b3JrUHJvY2Vzcy0+bmV0d29y
a1Nlc3Npb24obV9zZXNzaW9uSUQpOworICAgIGlmICghc2Vzc2lvbikKKyAgICAgICAgY2FsbGJh
Y2soZmFsc2UpOwogCi0gICAgc3RvcmFnZVF1b3RhTWFuYWdlci0+cmVxdWVzdFNwYWNlT25NYWlu
VGhyZWFkKHNwYWNlUmVxdWVzdGVkLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgaWYgKGF1dG8q
IHN0b3JhZ2VNYW5hZ2VyID0gc2Vzc2lvbi0+c3RvcmFnZU1hbmFnZXIoKSkKKyAgICAgICAgc3Rv
cmFnZU1hbmFnZXItPnJlcXVlc3RTcGFjZShvcmlnaW4sIHNwYWNlUmVxdWVzdGVkLCBXVEZNb3Zl
KGNhbGxiYWNrKSk7CiB9CiAKIEVuZ2luZTo6RW5naW5lKE5ldHdvcmtTZXNzaW9uJiBuZXR3b3Jr
U2Vzc2lvbiwgU3RyaW5nJiYgcm9vdFBhdGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaAppbmRleCAxNDdmYmFjZTE2
NzdhNjA4NTkxOGFiNzcyYTllMTBhMjA2YzY4ODFlLi5mZTNjMWY5MzBkYWUzOTk4Y2QxYzA0YzM0
ZGJkZGM1MzU1NWE0NzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmgKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNs
dWRlICJOZXR3b3JrQ2FjaGVEYXRhLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGEuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL0NsaWVudE9yaWdpbi5oPgotI2luY2x1ZGUgPFdlYkNvcmUvU3RvcmFnZVF1
b3RhTWFuYWdlci5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC04NCw4ICs4Myw5IEBA
IHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVRdW90YVVzZXIoTmV0d29ya1Nl
c3Npb24mLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwogCi0gICAgc3RhdGljIHVpbnQ2NF90IGRpc2tVc2FnZShjb25zdCBTdHJpbmcm
IHJvb3RQYXRoLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKLSAgICB2b2lkIHJlcXVl
c3RTcGFjZShjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCB1aW50NjRfdCBzcGFjZVJlcXVl
c3RlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2Vy
OjpEZWNpc2lvbik+JiYpOworICAgIHN0YXRpYyBTdHJpbmcgc3RvcmFnZVBhdGgoY29uc3QgU3Ry
aW5nJiByb290RGlyZWN0b3J5LCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKKyAgICBz
dGF0aWMgdWludDY0X3QgZGlza1VzYWdlKGNvbnN0IFN0cmluZyYgb3JpZ2luRGlyZWN0b3J5KTsK
KyAgICB2b2lkIHJlcXVlc3RTcGFjZShjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCB1aW50
NjRfdCBzcGFjZVJlcXVlc3RlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAK
ICAgICBib29sIHNob3VsZFBlcnNpc3QoKSBjb25zdCB7IHJldHVybiAhIW1faW9RdWV1ZTt9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9y
YWdlRW5naW5lQ2FjaGVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
Q2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcAppbmRleCAwNGVkZWNlMWM0YmZlOWVhY2FlMDZh
NzA3YzVkZGZmZTAwZTgxMzhlLi5jMzBjM2JlN2M1YzU1M2JmMjMyOGQ5NTFiNzc0NDQ0MTNiMzJk
NmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hl
U3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwCkBAIC01MjQsMTQgKzUyNCwxMCBA
QCB2b2lkIENhY2hlczo6cmVxdWVzdFNwYWNlKHVpbnQ2NF90IHNwYWNlUmVxdWlyZWQsIFdlYkNv
cmU6OkRPTUNhY2hlRW5naW5lOjpDb21wbAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
bV9lbmdpbmUtPnJlcXVlc3RTcGFjZShtX29yaWdpbiwgc3BhY2VSZXF1aXJlZCwgW2NhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8gZGVjaXNpb24pIG11dGFibGUgewotICAgICAgICBz
d2l0Y2ggKGRlY2lzaW9uKSB7Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6U3RvcmFnZVF1b3RhTWFu
YWdlcjo6RGVjaXNpb246OkRlbnk6Ci0gICAgICAgICAgICBjYWxsYmFjayhFcnJvcjo6UXVvdGFF
eGNlZWRlZCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6U3Rv
cmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb246OkdyYW50OgotICAgICAgICAgICAgY2FsbGJhY2so
eyB9KTsKLSAgICAgICAgfTsKKyAgICBtX2VuZ2luZS0+cmVxdWVzdFNwYWNlKG1fb3JpZ2luLCBz
cGFjZVJlcXVpcmVkLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBncmFudGVk
KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCFncmFudGVkKQorICAgICAgICAgICAgcmV0dXJuIGNh
bGxiYWNrKEVycm9yOjpRdW90YUV4Y2VlZGVkKTsKKyAgICAgICAgY2FsbGJhY2soeyB9KTsKICAg
ICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9pb3Mv
TmV0d29ya1Byb2Nlc3NJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9O
ZXR3b3JrUHJvY2Vzc0lPUy5tbQppbmRleCBhODdhZDgwNWI1ZGYxNTA3ODNiNTM5MWU4ZTAzZjk4
ZTc2NGRmM2Q1Li4yMTk2ZTllNzRkMjQ1MzFjMGRiNWIzOTQ1YWM2MDhmZTNlOThjNzRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lP
Uy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vz
c0lPUy5tbQpAQCAtMTA5LDE5ICsxMDksNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRJc0hv
bGRpbmdMb2NrZWRGaWxlcyhib29sIGlzSG9sZGluZ0xvY2tlZEZpbGVzKQogICAgIC8vIFdlIHN5
bmNocm9ub3VzbHkgdGFrZSBhIHByb2Nlc3MgYXNzZXJ0aW9uIHdoZW4gYmVnaW5uaW5nIGEgU1FM
aXRlIHRyYW5zYWN0aW9uIHNvIHRoYXQgd2UgZG9uJ3QgZ2V0IHN1c3BlbmRlZAogICAgIC8vIHdo
aWxlIGhvbGRpbmcgYSBsb2NrZWQgZmlsZS4gV2Ugd291bGQgZ2V0IGtpbGxlZCBpZiBzdXNwZW5k
ZWQgd2hpbGUgaG9sZGluZyBsb2NrZWQgZmlsZXMuCiAgICAgbV9ob2xkaW5nTG9ja2VkRmlsZUFz
c2VydGlvbiA9IFByb2Nlc3NBc3NlcnRpb246OmNyZWF0ZShnZXRDdXJyZW50UHJvY2Vzc0lEKCks
ICJOZXR3b3JrIFByb2Nlc3MgaXMgaG9sZGluZyBsb2NrZWQgZmlsZXMiX3MsIFByb2Nlc3NBc3Nl
cnRpb25UeXBlOjpGaW5pc2hUYXNrSW50ZXJydXB0YWJsZSwgUHJvY2Vzc0Fzc2VydGlvbjo6TW9k
ZTo6U3luYyk7Ci0gICAgbV9ob2xkaW5nTG9ja2VkRmlsZUFzc2VydGlvbi0+c2V0UHJlcGFyZUZv
ckludmFsaWRhdGlvbkhhbmRsZXIoW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1d
KCkgbXV0YWJsZSB7Ci0gICAgICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOwotICAgICAgICBp
ZiAoIXdlYWtUaGlzKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmICghbV9zaG91
bGRTdXNwZW5kSURCU2VydmVycykKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBmb3JF
YWNoTmV0d29ya1Nlc3Npb24oW10oYXV0byYgc2Vzc2lvbikgewotICAgICAgICAgICAgaWYgKGF1
dG8qIHNlcnZlciA9IHNlc3Npb24ud2ViSURCU2VydmVyKCkpCi0gICAgICAgICAgICAgICAgc2Vy
dmVyLT5zdXNwZW5kKCk7Ci0gICAgICAgIH0pOwotICAgIH0pOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFn
ZS9JREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50LmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44YWY0YzY0NjQzNmI5NmUxNGU4N2IzY2UyYjYxMWRiMDQyODc5MDVmCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VD
b25uZWN0aW9uVG9DbGllbnQuY3BwCkBAIC0wLDAgKzEsMTkxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE2LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0Ns
aWVudC5oIgorCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAi
V2ViSURCQ29ubmVjdGlvblRvU2VydmVyTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJJREJSZXN1
bHQuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0lEQlJlcXVlc3REYXRhLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9JREJSZXN1bHREYXRhLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VbmlxdWVJREJEYXRhYmFz
ZUNvbm5lY3Rpb24uaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK0lEQlN0b3JhZ2VDb25uZWN0
aW9uVG9DbGllbnQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQoSVBDOjpDb25uZWN0aW9u
OjpVbmlxdWVJRCBjb25uZWN0aW9uLCBXZWJDb3JlOjpJREJDb25uZWN0aW9uSWRlbnRpZmllciBp
ZGVudGlmaWVyKQorICAgIDogbV9jb25uZWN0aW9uKGNvbm5lY3Rpb24pCisgICAgLCBtX2lkZW50
aWZpZXIoaWRlbnRpZmllcikKKyAgICAsIG1fY29ubmVjdGlvblRvQ2xpZW50KFdlYkNvcmU6OklE
QlNlcnZlcjo6SURCQ29ubmVjdGlvblRvQ2xpZW50OjpjcmVhdGUoKnRoaXMpKQoreworfQorCitJ
REJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50Ojp+SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVu
dCgpCit7CisgICAgbV9jb25uZWN0aW9uVG9DbGllbnQtPmNsZWFyRGVsZWdhdGUoKTsKK30KKwor
V2ViQ29yZTo6SURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnQmIElEQlN0b3JhZ2VDb25u
ZWN0aW9uVG9DbGllbnQ6OmNvbm5lY3Rpb25Ub0NsaWVudCgpCit7CisgICAgcmV0dXJuIG1fY29u
bmVjdGlvblRvQ2xpZW50OworfQorCit0ZW1wbGF0ZTxjbGFzcyBNZXNzYWdlVHlwZT4gdm9pZCBJ
REJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRHZXRSZXN1bHQoY29uc3QgV2ViQ29yZTo6
SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBpZiAocmVzdWx0RGF0YS50eXBlKCkg
PT0gV2ViQ29yZTo6SURCUmVzdWx0VHlwZTo6RXJyb3IpIHsKKyAgICAgICAgSVBDOjpDb25uZWN0
aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwgTWVzc2FnZVR5cGUocmVzdWx0RGF0YSksIDApOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKHJlc3VsdERhdGEudHlwZSgpID09IFdlYkNv
cmU6OklEQlJlc3VsdFR5cGU6OkdldEFsbFJlY29yZHNTdWNjZXNzICYmIHJlc3VsdERhdGEuZ2V0
QWxsUmVzdWx0KCkudHlwZSgpID09IFdlYkNvcmU6OkluZGV4ZWREQjo6R2V0QWxsVHlwZTo6S2V5
cykgeworICAgICAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQobV9jb25uZWN0aW9uLCBNZXNzYWdl
VHlwZShyZXN1bHREYXRhKSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRv
IGJsb2JGaWxlUGF0aHMgPSByZXN1bHREYXRhLnR5cGUoKSA9PSBXZWJDb3JlOjpJREJSZXN1bHRU
eXBlOjpHZXRBbGxSZWNvcmRzU3VjY2VzcyA/IHJlc3VsdERhdGEuZ2V0QWxsUmVzdWx0KCkuYWxs
QmxvYkZpbGVQYXRocygpIDogcmVzdWx0RGF0YS5nZXRSZXN1bHQoKS52YWx1ZSgpLmJsb2JGaWxl
UGF0aHMoKTsKKyAgICBpZiAoYmxvYkZpbGVQYXRocy5pc0VtcHR5KCkpIHsKKyAgICAgICAgSVBD
OjpDb25uZWN0aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwgTWVzc2FnZVR5cGUocmVzdWx0RGF0YSks
IDApOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5k
KG1fY29ubmVjdGlvbiwgTWVzc2FnZVR5cGUocmVzdWx0RGF0YSksIDApOworfQorCit2b2lkIElE
QlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZERlbGV0ZURhdGFiYXNlKGNvbnN0IFdlYkNv
cmU6OklEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCit7CisgICAgSVBDOjpDb25uZWN0aW9uOjpz
ZW5kKG1fY29ubmVjdGlvbiwgTWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6RGlk
RGVsZXRlRGF0YWJhc2UocmVzdWx0RGF0YSksIDApOworfQorCit2b2lkIElEQlN0b3JhZ2VDb25u
ZWN0aW9uVG9DbGllbnQ6OmRpZE9wZW5EYXRhYmFzZShjb25zdCBXZWJDb3JlOjpJREJSZXN1bHRE
YXRhJiByZXN1bHREYXRhKQoreworICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rp
b24sIE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZE9wZW5EYXRhYmFzZShy
ZXN1bHREYXRhKSwgMCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6
ZGlkU3RhcnRUcmFuc2FjdGlvbihjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXIm
IHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCRXJyb3ImIGVycm9yKQor
eworICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJJ
REJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZFN0YXJ0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZGVu
dGlmaWVyLCBlcnJvciksIDApOworfQorCit2b2lkIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGll
bnQ6OmRpZEFib3J0VHJhbnNhY3Rpb24oY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlm
aWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OklEQkVycm9yJiBlcnJv
cikKK3sKKyAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQobV9jb25uZWN0aW9uLCBNZXNzYWdlczo6
V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWRBYm9ydFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9u
SWRlbnRpZmllciwgZXJyb3IpLCAwKTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRv
Q2xpZW50OjpkaWRDb21taXRUcmFuc2FjdGlvbihjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlk
ZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCRXJyb3Im
IGVycm9yKQoreworICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3Nh
Z2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZENvbW1pdFRyYW5zYWN0aW9uKHRyYW5z
YWN0aW9uSWRlbnRpZmllciwgZXJyb3IpLCAwKTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVj
dGlvblRvQ2xpZW50OjpkaWRDcmVhdGVPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXN1
bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5l
Y3Rpb24sIE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZENyZWF0ZU9iamVj
dFN0b3JlKHJlc3VsdERhdGEpLCAwKTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRv
Q2xpZW50OjpkaWREZWxldGVPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRh
JiByZXN1bHREYXRhKQoreworICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24s
IE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZERlbGV0ZU9iamVjdFN0b3Jl
KHJlc3VsdERhdGEpLCAwKTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50
OjpkaWRSZW5hbWVPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJiByZXN1
bHREYXRhKQoreworICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3Nh
Z2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZFJlbmFtZU9iamVjdFN0b3JlKHJlc3Vs
dERhdGEpLCAwKTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRD
bGVhck9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEp
Cit7CisgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwgTWVzc2FnZXM6Oldl
YklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6RGlkQ2xlYXJPYmplY3RTdG9yZShyZXN1bHREYXRhKSwg
MCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkQ3JlYXRlSW5k
ZXgoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBJUEM6
OkNvbm5lY3Rpb246OnNlbmQobV9jb25uZWN0aW9uLCBNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlv
blRvU2VydmVyOjpEaWRDcmVhdGVJbmRleChyZXN1bHREYXRhKSwgMCk7Cit9CisKK3ZvaWQgSURC
U3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkRGVsZXRlSW5kZXgoY29uc3QgV2ViQ29yZTo6
SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQo
bV9jb25uZWN0aW9uLCBNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWREZWxl
dGVJbmRleChyZXN1bHREYXRhKSwgMCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25U
b0NsaWVudDo6ZGlkUmVuYW1lSW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYgcmVz
dWx0RGF0YSkKK3sKKyAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQobV9jb25uZWN0aW9uLCBNZXNz
YWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWRSZW5hbWVJbmRleChyZXN1bHREYXRh
KSwgMCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkUHV0T3JB
ZGQoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBJUEM6
OkNvbm5lY3Rpb246OnNlbmQobV9jb25uZWN0aW9uLCBNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlv
blRvU2VydmVyOjpEaWRQdXRPckFkZChyZXN1bHREYXRhKSwgMCk7Cit9CisKK3ZvaWQgSURCU3Rv
cmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkR2V0UmVjb3JkKGNvbnN0IFdlYkNvcmU6OklEQlJl
c3VsdERhdGEmIHJlc3VsdERhdGEpCit7CisgICAgZGlkR2V0UmVzdWx0PE1lc3NhZ2VzOjpXZWJJ
REJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZEdldFJlY29yZD4ocmVzdWx0RGF0YSk7Cit9CisKK3Zv
aWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkR2V0QWxsUmVjb3Jkcyhjb25zdCBX
ZWJDb3JlOjpJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIGRpZEdldFJlc3VsdDxN
ZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWRHZXRBbGxSZWNvcmRzPihyZXN1
bHREYXRhKTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRHZXRD
b3VudChjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIElQ
Qzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0
aW9uVG9TZXJ2ZXI6OkRpZEdldENvdW50KHJlc3VsdERhdGEpLCAwKTsKK30KKwordm9pZCBJREJT
dG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWREZWxldGVSZWNvcmQoY29uc3QgV2ViQ29yZTo6
SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQo
bV9jb25uZWN0aW9uLCBNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWREZWxl
dGVSZWNvcmQocmVzdWx0RGF0YSksIDApOworfQorCit2b2lkIElEQlN0b3JhZ2VDb25uZWN0aW9u
VG9DbGllbnQ6OmRpZE9wZW5DdXJzb3IoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYgcmVz
dWx0RGF0YSkKK3sKKyAgICBkaWRHZXRSZXN1bHQ8TWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25U
b1NlcnZlcjo6RGlkT3BlbkN1cnNvcj4ocmVzdWx0RGF0YSk7Cit9CisKK3ZvaWQgSURCU3RvcmFn
ZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkSXRlcmF0ZUN1cnNvcihjb25zdCBXZWJDb3JlOjpJREJS
ZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIGRpZEdldFJlc3VsdDxNZXNzYWdlczo6V2Vi
SURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWRJdGVyYXRlQ3Vyc29yPihyZXN1bHREYXRhKTsKK30K
Kwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRHZXRBbGxEYXRhYmFzZU5h
bWVzQW5kVmVyc2lvbnMoY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1
ZXN0SWRlbnRpZmllciwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OklEQkRhdGFiYXNlTmFtZUFuZFZl
cnNpb24+JiBkYXRhYmFzZXMpCit7CisgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKG1fY29ubmVj
dGlvbiwgTWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6RGlkR2V0QWxsRGF0YWJh
c2VOYW1lc0FuZFZlcnNpb25zKHJlcXVlc3RJZGVudGlmaWVyLCBkYXRhYmFzZXMpLCAwKTsKK30K
Kwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpmaXJlVmVyc2lvbkNoYW5nZUV2
ZW50KFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVu
dGlmaWVyLCB1aW50NjRfdCByZXF1ZXN0ZWRWZXJzaW9uKQoreworICAgIElQQzo6Q29ubmVjdGlv
bjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6
OkZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQoY29ubmVjdGlvbi5pZGVudGlmaWVyKCksIHJlcXVlc3RJ
ZGVudGlmaWVyLCByZXF1ZXN0ZWRWZXJzaW9uKSwgMCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNv
bm5lY3Rpb25Ub0NsaWVudDo6ZGlkQ2xvc2VGcm9tU2VydmVyKFdlYkNvcmU6OklEQlNlcnZlcjo6
VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpJ
REJFcnJvciYgZXJyb3IpCit7CisgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKG1fY29ubmVjdGlv
biwgTWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6RGlkQ2xvc2VGcm9tU2VydmVy
KGNvbm5lY3Rpb24uaWRlbnRpZmllcigpLCBlcnJvciksIDApOworfQorCit2b2lkIElEQlN0b3Jh
Z2VDb25uZWN0aW9uVG9DbGllbnQ6Om5vdGlmeU9wZW5EQlJlcXVlc3RCbG9ja2VkKGNvbnN0IFdl
YkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90
IG9sZFZlcnNpb24sIHVpbnQ2NF90IG5ld1ZlcnNpb24pCit7CisgICAgSVBDOjpDb25uZWN0aW9u
OjpzZW5kKG1fY29ubmVjdGlvbiwgTWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6
Tm90aWZ5T3BlbkRCUmVxdWVzdEJsb2NrZWQocmVxdWVzdElkZW50aWZpZXIsIG9sZFZlcnNpb24s
IG5ld1ZlcnNpb24pLCAwKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZUNvbm5lY3Rp
b25Ub0NsaWVudC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0
b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MGJhMDFiMDIxMjBmMjFkYjYx
MzkxZjNhODc0NGQyMmI1ZmY3MGU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQuaApAQCAt
MCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
IkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0lEQkNvbm5lY3Rpb25Ub0NsaWVudC5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvSURCQ29ubmVjdGlvblRvQ2xpZW50RGVsZWdhdGUuaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQg
ZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6SURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnRE
ZWxlZ2F0ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgSURC
U3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudChJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBXZWJD
b3JlOjpJREJDb25uZWN0aW9uSWRlbnRpZmllcik7CisgICAgfklEQlN0b3JhZ2VDb25uZWN0aW9u
VG9DbGllbnQoKTsKKworICAgIFdlYkNvcmU6OklEQkNvbm5lY3Rpb25JZGVudGlmaWVyIGlkZW50
aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKyAgICBJUEM6OkNv
bm5lY3Rpb246OlVuaXF1ZUlEIGlwY0Nvbm5lY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2Nvbm5l
Y3Rpb247IH0KKyAgICBXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub0NsaWVudCYg
Y29ubmVjdGlvblRvQ2xpZW50KCk7CisKK3ByaXZhdGU6CisgICAgdGVtcGxhdGU8Y2xhc3MgTWVz
c2FnZVR5cGU+IHZvaWQgZGlkR2V0UmVzdWx0KGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEm
KTsKKworICAgIC8vIElEQkNvbm5lY3Rpb25Ub0NsaWVudERlbGVnYXRlCisgICAgdm9pZCBkaWRE
ZWxldGVEYXRhYmFzZShjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJikgZmluYWw7CisgICAg
dm9pZCBkaWRPcGVuRGF0YWJhc2UoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFs
OworICAgIHZvaWQgZGlkQWJvcnRUcmFuc2FjdGlvbihjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJj
ZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCRXJy
b3ImKSBmaW5hbDsKKyAgICB2b2lkIGRpZENvbW1pdFRyYW5zYWN0aW9uKGNvbnN0IFdlYkNvcmU6
OklEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJD
b3JlOjpJREJFcnJvciYpIGZpbmFsOworICAgIHZvaWQgZGlkU3RhcnRUcmFuc2FjdGlvbihjb25z
dCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwg
Y29uc3QgV2ViQ29yZTo6SURCRXJyb3ImKSBmaW5hbDsKKyAgICB2b2lkIGRpZENyZWF0ZU9iamVj
dFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBmaW5hbDsKKyAgICB2b2lkIGRp
ZERlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBmaW5hbDsK
KyAgICB2b2lkIGRpZFJlbmFtZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERh
dGEmKSBmaW5hbDsKKyAgICB2b2lkIGRpZENsZWFyT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6
SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkQ3JlYXRlSW5kZXgoY29uc3QgV2Vi
Q29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkRGVsZXRlSW5kZXgoY29u
c3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVuYW1lSW5k
ZXgoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkUHV0
T3JBZGQoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlk
R2V0UmVjb3JkKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBmaW5hbDsKKyAgICB2b2lk
IGRpZEdldEFsbFJlY29yZHMoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOwor
ICAgIHZvaWQgZGlkR2V0Q291bnQoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFs
OworICAgIHZvaWQgZGlkRGVsZXRlUmVjb3JkKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEm
KSBmaW5hbDsKKyAgICB2b2lkIGRpZE9wZW5DdXJzb3IoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0
RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkSXRlcmF0ZUN1cnNvcihjb25zdCBXZWJDb3JlOjpJ
REJSZXN1bHREYXRhJikgZmluYWw7CisgICAgdm9pZCBkaWRHZXRBbGxEYXRhYmFzZU5hbWVzQW5k
VmVyc2lvbnMoY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiwgY29uc3QgVmVj
dG9yPFdlYkNvcmU6OklEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24+JikgZmluYWw7CisgICAgdm9p
ZCBub3RpZnlPcGVuREJSZXF1ZXN0QmxvY2tlZChjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlk
ZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBvbGRWZXJzaW9uLCB1aW50NjRf
dCBuZXdWZXJzaW9uKSBmaW5hbDsKKyAgICB2b2lkIGZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQoV2Vi
Q29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mLCBjb25zdCBXZWJD
b3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBy
ZXF1ZXN0ZWRWZXJzaW9uKSBmaW5hbDsKKyAgICB2b2lkIGRpZENsb3NlRnJvbVNlcnZlcihXZWJD
b3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYsIGNvbnN0IFdlYkNv
cmU6OklEQkVycm9yJikgZmluYWw7CisKKyAgICBJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIG1f
Y29ubmVjdGlvbjsKKyAgICBXZWJDb3JlOjpJREJDb25uZWN0aW9uSWRlbnRpZmllciBtX2lkZW50
aWZpZXI7CisgICAgUmVmPFdlYkNvcmU6OklEQlNlcnZlcjo6SURCQ29ubmVjdGlvblRvQ2xpZW50
PiBtX2Nvbm5lY3Rpb25Ub0NsaWVudDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VN
YW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9y
YWdlTWFuYWdlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2QwYmNhODY1NThlNzRjZmE3N2JiZThiYTU5NDcy
MGIxMTQ2MDBhNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc3RvcmFnZS9JREJTdG9yYWdlTWFuYWdlci5jcHAKQEAgLTAsMCArMSwyNDIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSURCU3RvcmFnZU1hbmFnZXIu
aCIKKworI2luY2x1ZGUgIklEQlN0b3JhZ2VSZWdpc3RyeS5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
TWVtb3J5SURCQmFja2luZ1N0b3JlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVGaWxlU3lz
dGVtLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVJREJCYWNraW5nU3RvcmUuaD4KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK3N0YXRpYyB2b2lkIG1pZ3JhdGVPcmlnaW5EYXRhKGNvbnN0IFN0
cmluZyYgb2xkT3JpZ2luRGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIG5ld09yaWdpbkRpcmVjdG9y
eSkKK3sKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMob2xkT3JpZ2luRGlyZWN0b3J5
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBmaWxlTmFtZXMgPSBGaWxlU3lzdGVtOjps
aXN0RGlyZWN0b3J5KG9sZE9yaWdpbkRpcmVjdG9yeSk7CisgICAgZm9yIChhdXRvIG5hbWUgOiBm
aWxlTmFtZXMpIHsKKyAgICAgICAgU3RyaW5nIGNoaWxkUGF0aCA9IEZpbGVTeXN0ZW06OmdldFN5
bWJvbGljTGlua1RhcmdldChGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQob2xk
T3JpZ2luRGlyZWN0b3J5LCBuYW1lKSk7CisgICAgICAgIFN0cmluZyBuZXdOYW1lID0gV2ViQ29y
ZTo6U1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0ZUhhc2hGb3JGaWxlTmFtZShXZWJDb3JlOjpJREJT
ZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVjb2RlRGF0YWJhc2VOYW1lKG5hbWUpKTsK
KyAgICAgICAgYXV0byBuZXdDaGlsZFBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQobmV3T3JpZ2luRGlyZWN0b3J5LCBuZXdOYW1lKTsKKyAgICAgICAgRmlsZVN5c3Rl
bTo6bW92ZUZpbGUoY2hpbGRQYXRoLCBuZXdDaGlsZFBhdGgpOworICAgIH0KKworICAgIEZpbGVT
eXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KG9sZE9yaWdpbkRpcmVjdG9yeSk7Cit9CisKK1N0
cmluZyBJREJTdG9yYWdlTWFuYWdlcjo6aWRiU3RvcmFnZU9yaWdpbkRpcmVjdG9yeShjb25zdCBT
dHJpbmcmIHJvb3REaXJlY3RvcnksIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2lu
KQoreworICAgIGlmIChyb290RGlyZWN0b3J5LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGVt
cHR5U3RyaW5nKCk7CisKKyAgICBTdHJpbmcgb3JpZ2luRGlyZWN0b3J5ID0gV2ViQ29yZTo6SURC
RGF0YWJhc2VJZGVudGlmaWVyOjpkYXRhYmFzZURpcmVjdG9yeVJlbGF0aXZlVG9Sb290KG9yaWdp
bi50b3BPcmlnaW4sIG9yaWdpbi5jbGllbnRPcmlnaW4sIHJvb3REaXJlY3RvcnksICJ2MSIpOwor
ICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhvcmlnaW5EaXJlY3RvcnkpOworCisg
ICAgU3RyaW5nIG9sZE9yaWdpbkRpcmVjdG9yeSA9IFdlYkNvcmU6OklEQkRhdGFiYXNlSWRlbnRp
Zmllcjo6ZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9vdChvcmlnaW4udG9wT3JpZ2luLCBv
cmlnaW4uY2xpZW50T3JpZ2luLCByb290RGlyZWN0b3J5LCAidjAiKTsKKyAgICBtaWdyYXRlT3Jp
Z2luRGF0YShvbGRPcmlnaW5EaXJlY3RvcnksIG9yaWdpbkRpcmVjdG9yeSk7CisKKyAgICByZXR1
cm4gb3JpZ2luRGlyZWN0b3J5OworfQorCit1aW50NjRfdCBJREJTdG9yYWdlTWFuYWdlcjo6aWRi
U3RvcmFnZVNpemUoY29uc3QgU3RyaW5nJiBvcmlnaW5EaXJlY3RvcnkpCit7CisgICAgaWYgKG9y
aWdpbkRpcmVjdG9yeS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJu
IFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpkYXRhYmFzZXNTaXpl
Rm9yRGlyZWN0b3J5KG9yaWdpbkRpcmVjdG9yeSk7Cit9CisKK3N0YXRpYyB2b2lkIGdldE9yaWdp
bnNGb3JWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvblBhdGgsIEhhc2hTZXQ8V2ViQ29yZTo6
Q2xpZW50T3JpZ2luPiYgb3JpZ2lucykKK3sKKyAgICBmb3IgKGF1dG8mIHRvcERhdGFiYXNlSWRl
bnRpZmllciA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkodmVyc2lvblBhdGgpKSB7CisgICAg
ICAgIGF1dG8gdG9wT3JpZ2luID0gV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0
YWJhc2VJZGVudGlmaWVyKHRvcERhdGFiYXNlSWRlbnRpZmllcik7CisgICAgICAgIGlmICghdG9w
T3JpZ2luKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgZm9yIChhdXRvJiBkYXRh
YmFzZUlkZW50aWZpZXIgOiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudCh2ZXJzaW9uUGF0aCwgdG9wRGF0YWJhc2VJZGVudGlmaWVy
KSkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIGNsaWVudE9yaWdpbiA9IFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmllcihkYXRhYmFzZUlkZW50aWZpZXIp
KQorICAgICAgICAgICAgICAgIG9yaWdpbnMuYWRkKFdlYkNvcmU6OkNsaWVudE9yaWdpbiB7ICp0
b3BPcmlnaW4sICpjbGllbnRPcmlnaW4gfSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgb3JpZ2lucy5hZGQoV2ViQ29yZTo6Q2xpZW50T3JpZ2luIHsgKnRvcE9yaWdpbiwgKnRv
cE9yaWdpbiB9KTsKKyAgICAgICAgfQorICAgIH0KK30KKworSGFzaFNldDxXZWJDb3JlOjpDbGll
bnRPcmlnaW4+IElEQlN0b3JhZ2VNYW5hZ2VyOjpvcmlnaW5zT2ZJREJTdG9yYWdlRGF0YShjb25z
dCBTdHJpbmcmIHJvb3REaXJlY3RvcnkpCit7CisgICAgSGFzaFNldDxXZWJDb3JlOjpDbGllbnRP
cmlnaW4+IG9yaWdpbnM7CisgICAgaWYgKHJvb3REaXJlY3RvcnkuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm4gb3JpZ2luczsKKworICAgIGdldE9yaWdpbnNGb3JWZXJzaW9uKEZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyb290RGlyZWN0b3J5LCAidjAiKSwgb3JpZ2lucyk7
CisgICAgZ2V0T3JpZ2luc0ZvclZlcnNpb24oRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KHJvb3REaXJlY3RvcnksICJ2MSIpLCBvcmlnaW5zKTsKKyAgICByZXR1cm4gb3JpZ2lu
czsKK30KKworSURCU3RvcmFnZU1hbmFnZXI6OklEQlN0b3JhZ2VNYW5hZ2VyKGNvbnN0IFN0cmlu
ZyYgcGF0aCwgSURCU3RvcmFnZVJlZ2lzdHJ5JiByZWdpc3RyeSwgUXVvdGFDaGVja0Z1bmN0aW9u
JiYgcXVvdGFDaGVja0Z1bmN0aW9uKQorICAgIDogbV9wYXRoKHBhdGgpCisgICAgLCBtX3JlZ2lz
dHJ5KHJlZ2lzdHJ5KQorICAgICwgbV9xdW90YUNoZWNrRnVuY3Rpb24oV1RGTW92ZShxdW90YUNo
ZWNrRnVuY3Rpb24pKQoreworfQorCitib29sIElEQlN0b3JhZ2VNYW5hZ2VyOjppc0FjdGl2ZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuICFtX2RhdGFiYXNlcy5pc0VtcHR5KCk7Cit9CisKK2Jvb2wg
SURCU3RvcmFnZU1hbmFnZXI6Omhhc0RhdGFJbk1lbW9yeSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IFdURjo6YW55T2YobV9kYXRhYmFzZXMudmFsdWVzKCksIFsmXSAoYXV0byYgZGF0YWJhc2UpIHsK
KyAgICAgICAgcmV0dXJuIGRhdGFiYXNlLT5oYXNEYXRhSW5NZW1vcnkoKTsKKyAgICB9KTsKK30K
Kwordm9pZCBJREJTdG9yYWdlTWFuYWdlcjo6Y2xvc2VEYXRhYmFzZXNGb3JEZWxldGlvbigpCit7
CisgICAgZm9yIChhdXRvJiBkYXRhYmFzZSA6IG1fZGF0YWJhc2VzLnZhbHVlcygpKQorICAgICAg
ICBkYXRhYmFzZS0+aW1tZWRpYXRlQ2xvc2UoKTsKKworICAgIG1fZGF0YWJhc2VzLmNsZWFyKCk7
Cit9CisKK3ZvaWQgSURCU3RvcmFnZU1hbmFnZXI6OnN0b3BEYXRhYmFzZUFjdGl2aXRpZXNGb3JT
dXNwZW5kKCkKK3sKKyAgICBpZiAobV9wYXRoLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgZm9yIChhdXRvJiBkYXRhYmFzZSA6IG1fZGF0YWJhc2VzLnZhbHVlcygpKSB7CisgICAg
ICAgIC8vIE9ubHkgc3RvcCBkYXRhYmFzZXMgd2l0aCBub24tZXBoZW1lcmFsIGJhY2tpbmcgc3Rv
cmUgdGhhdCBjYW4gaG9sZCBkYXRhYmFzZSBmaWxlIGxvY2suCisgICAgICAgIGlmICghZGF0YWJh
c2UtPmlkZW50aWZpZXIoKS5pc1RyYW5zaWVudCgpKQorICAgICAgICAgICAgZGF0YWJhc2UtPmFi
b3J0SW5Qcm9ncmVzc1RyYW5zYWN0aW9ucygpOworICAgIH0KK30KKworV2ViQ29yZTo6SURCU2Vy
dmVyOjpVbmlxdWVJREJEYXRhYmFzZSYgSURCU3RvcmFnZU1hbmFnZXI6OmdldE9yQ3JlYXRlVW5p
cXVlSURCRGF0YWJhc2UoY29uc3QgV2ViQ29yZTo6SURCRGF0YWJhc2VJZGVudGlmaWVyJiBpZGVu
dGlmaWVyKQoreworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9kYXRhYmFzZXMuYWRkKGlkZW50aWZp
ZXIsIG51bGxwdHIpOworICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgYWRk
UmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6SURCU2VydmVyOjpV
bmlxdWVJREJEYXRhYmFzZT4oKnRoaXMsIGlkZW50aWZpZXIpOworCisgICAgcmV0dXJuICphZGRS
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlOworfQorCit2b2lkIElEQlN0b3JhZ2VNYW5hZ2VyOjpvcGVu
RGF0YWJhc2UoV2ViQ29yZTo6SURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnQmIGNvbm5l
Y3Rpb25Ub0NsaWVudCwgY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRh
KQoreworICAgIGF1dG8mIGRhdGFiYXNlID0gZ2V0T3JDcmVhdGVVbmlxdWVJREJEYXRhYmFzZShy
ZXF1ZXN0RGF0YS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAgZGF0YWJhc2Uub3BlbkRhdGFi
YXNlQ29ubmVjdGlvbihjb25uZWN0aW9uVG9DbGllbnQsIHJlcXVlc3REYXRhKTsKK30KKwordm9p
ZCBJREJTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlRGF0YWJhc2UoV2ViQ29yZTo6SURCU2VydmVyOjpJ
REJDb25uZWN0aW9uVG9DbGllbnQmIGNvbm5lY3Rpb25Ub0NsaWVudCwgY29uc3QgV2ViQ29yZTo6
SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhKQoreworICAgIGF1dG8mIGRhdGFiYXNlID0gZ2V0
T3JDcmVhdGVVbmlxdWVJREJEYXRhYmFzZShyZXF1ZXN0RGF0YS5kYXRhYmFzZUlkZW50aWZpZXIo
KSk7CisgICAgZGF0YWJhc2UuaGFuZGxlRGVsZXRlKGNvbm5lY3Rpb25Ub0NsaWVudCwgcmVxdWVz
dERhdGEpOworCisgICAgLy8gVGhpcyBkYXRhYmFzZSBpcyBjcmVhdGVkIGZvciBkZWxldGlvbi4K
KyAgICBpZiAoZGF0YWJhc2UudHJ5Q2xvc2UoKSkKKyAgICAgICAgbV9kYXRhYmFzZXMucmVtb3Zl
KGRhdGFiYXNlLmlkZW50aWZpZXIoKSk7Cit9CisKK1ZlY3RvcjxXZWJDb3JlOjpJREJEYXRhYmFz
ZU5hbWVBbmRWZXJzaW9uPiBJREJTdG9yYWdlTWFuYWdlcjo6Z2V0QWxsRGF0YWJhc2VOYW1lc0Fu
ZFZlcnNpb25zKCkKK3sKKyAgICBWZWN0b3I8V2ViQ29yZTo6SURCRGF0YWJhc2VOYW1lQW5kVmVy
c2lvbj4gcmVzdWx0OworICAgIEhhc2hTZXQ8U3RyaW5nPiB2aXNpdGVkRGF0YWJhc2VQYXRoczsK
KyAgICBmb3IgKGF1dG8mIGRhdGFiYXNlIDogbV9kYXRhYmFzZXMudmFsdWVzKCkpIHsKKyAgICAg
ICAgYXV0byBwYXRoID0gZGF0YWJhc2UtPmZpbGVQYXRoKCk7CisgICAgICAgIGlmICghcGF0aC5p
c0VtcHR5KCkpCisgICAgICAgICAgICB2aXNpdGVkRGF0YWJhc2VQYXRocy5hZGQocGF0aCk7CisK
KyAgICAgICAgaWYgKGF1dG8gbmFtZUFuZFZlcnNpb24gPSBkYXRhYmFzZS0+bmFtZUFuZFZlcnNp
b24oKSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoV1RGTW92ZSgqbmFtZUFuZFZlcnNpb24p
KTsKKyAgICB9CisKKyAgICBhdXRvIGRhdGFiYXNlSWRlbnRpZmllcnMgPSBGaWxlU3lzdGVtOjps
aXN0RGlyZWN0b3J5KG1fcGF0aCk7CisgICAgZm9yIChhdXRvIGlkZW50aWZpZXIgOiBkYXRhYmFz
ZUlkZW50aWZpZXJzKSB7CisgICAgICAgIGF1dG8gZGF0YWJhc2VEaXJlY3RvcnkgPSBGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9wYXRoLCBpZGVudGlmaWVyKTsKKyAgICAg
ICAgYXV0byBkYXRhYmFzZVBhdGggPSBXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tp
bmdTdG9yZTo6ZnVsbERhdGFiYXNlUGF0aEZvckRpcmVjdG9yeShkYXRhYmFzZURpcmVjdG9yeSk7
CisgICAgICAgIGlmICh2aXNpdGVkRGF0YWJhc2VQYXRocy5jb250YWlucyhkYXRhYmFzZVBhdGgp
KQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKGF1dG8gbmFtZUFuZFZlcnNp
b24gPSBXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGF0YWJhc2VO
YW1lQW5kVmVyc2lvbkZyb21GaWxlKGRhdGFiYXNlUGF0aCkpCisgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKFdURk1vdmUoKm5hbWVBbmRWZXJzaW9uKSk7CisgICAgfQorCisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKwordm9pZCBJREJTdG9yYWdlTWFuYWdlcjo6b3BlbkRCUmVxdWVzdENhbmNlbGxl
ZChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEpCit7CisgICAgYXV0
byogZGF0YWJhc2UgPSBtX2RhdGFiYXNlcy5nZXQocmVxdWVzdERhdGEuZGF0YWJhc2VJZGVudGlm
aWVyKCkpOworICAgIGlmICghZGF0YWJhc2UpCisgICAgICAgIHJldHVybjsKKworICAgIGRhdGFi
YXNlLT5vcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKHJlcXVlc3REYXRhLnJlcXVlc3RJZGVudGlmaWVy
KCkpOworCisgICAgLy8gRGF0YWJhc2UgYmVjb21lcyBpZGxlIGFmdGVyIHJlcXVlc3QgaXMgY2Fu
Y2VsbGVkLgorICAgIGlmIChkYXRhYmFzZS0+dHJ5Q2xvc2UoKSkKKyAgICAgICAgbV9kYXRhYmFz
ZXMucmVtb3ZlKGRhdGFiYXNlLT5pZGVudGlmaWVyKCkpOworfQorCit2b2lkIElEQlN0b3JhZ2VN
YW5hZ2VyOjpyZWdpc3RlckNvbm5lY3Rpb24oV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJE
YXRhYmFzZUNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCit7CisgICAgbV9yZWdpc3RyeS5yZWdpc3Rl
ckNvbm5lY3Rpb24oY29ubmVjdGlvbik7Cit9CisKK3ZvaWQgSURCU3RvcmFnZU1hbmFnZXI6OnVu
cmVnaXN0ZXJDb25uZWN0aW9uKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VD
b25uZWN0aW9uJiBjb25uZWN0aW9uKQoreworICAgIG1fcmVnaXN0cnkudW5yZWdpc3RlckNvbm5l
Y3Rpb24oY29ubmVjdGlvbik7Cit9CisKK3ZvaWQgSURCU3RvcmFnZU1hbmFnZXI6OnJlZ2lzdGVy
VHJhbnNhY3Rpb24oV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0
aW9uJiB0cmFuc2FjdGlvbikKK3sKKyAgICBtX3JlZ2lzdHJ5LnJlZ2lzdGVyVHJhbnNhY3Rpb24o
dHJhbnNhY3Rpb24pOworfQorCit2b2lkIElEQlN0b3JhZ2VNYW5hZ2VyOjp1bnJlZ2lzdGVyVHJh
bnNhY3Rpb24oV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9u
JiB0cmFuc2FjdGlvbikKK3sKKyAgICBtX3JlZ2lzdHJ5LnVucmVnaXN0ZXJUcmFuc2FjdGlvbih0
cmFuc2FjdGlvbik7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJREJTZXJ2ZXI6OklE
QkJhY2tpbmdTdG9yZT4gSURCU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZUJhY2tpbmdTdG9yZShjb25z
dCBXZWJDb3JlOjpJREJEYXRhYmFzZUlkZW50aWZpZXImIGlkZW50aWZpZXIpCit7CisgICAgaWYg
KG1fcGF0aC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYkNvcmU6OklE
QlNlcnZlcjo6TWVtb3J5SURCQmFja2luZ1N0b3JlPihpZGVudGlmaWVyKTsKKworICAgIGlmIChp
ZGVudGlmaWVyLmlzVHJhbnNpZW50KCkpCisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYkNv
cmU6OklEQlNlcnZlcjo6TWVtb3J5SURCQmFja2luZ1N0b3JlPihpZGVudGlmaWVyKTsKKworICAg
IGF1dG8gbmFtZSA9IFdlYkNvcmU6OlNRTGl0ZUZpbGVTeXN0ZW06OmNvbXB1dGVIYXNoRm9yRmls
ZU5hbWUoaWRlbnRpZmllci5kYXRhYmFzZU5hbWUoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8
V2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU+KGlkZW50aWZpZXIsIEZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3BhdGgsIG5hbWUpKTsKK30KKwor
dm9pZCBJREJTdG9yYWdlTWFuYWdlcjo6cmVxdWVzdFNwYWNlKGNvbnN0IFdlYkNvcmU6OkNsaWVu
dE9yaWdpbiYsIHVpbnQ2NF90IHNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgbV9xdW90YUNoZWNrRnVuY3Rpb24oc2l6ZSwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdl
TWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3Jh
Z2VNYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWRmYThlMDg3MmIzMTRjNTEzODVkMWRlNzU1YjE5M2Vk
OGNkYWUzNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c3RvcmFnZS9JREJTdG9yYWdlTWFuYWdlci5oCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPFdlYkNvcmUvVW5pcXVlSURCRGF0YWJhc2VNYW5h
Z2VyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBJREJTZXJ2ZXIgeworY2xh
c3MgSURCQmFja2luZ1N0b3JlOworY2xhc3MgSURCQ29ubmVjdGlvblRvQ2xpZW50OworY2xhc3Mg
VW5pcXVlSURCRGF0YWJhc2U7CitjbGFzcyBVbmlxdWVJREJUcmFuc2FjdGlvbjsKK30KKworc3Ry
dWN0IElEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb247Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitjbGFzcyBJREJTdG9yYWdlUmVnaXN0cnk7CisKK2NsYXNzIElEQlN0b3JhZ2VNYW5hZ2VyIGZp
bmFsIDogcHVibGljIFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VNYW5hZ2Vy
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgU3RyaW5nIGlkYlN0b3JhZ2VPcmlnaW5EaXJlY3Rvcnko
Y29uc3QgU3RyaW5nJiByb290RGlyZWN0b3J5LCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4m
KTsKKyAgICBzdGF0aWMgdWludDY0X3QgaWRiU3RvcmFnZVNpemUoY29uc3QgU3RyaW5nJiBvcmln
aW5EaXJlY3RvcnkpOworICAgIHN0YXRpYyBIYXNoU2V0PFdlYkNvcmU6OkNsaWVudE9yaWdpbj4g
b3JpZ2luc09mSURCU3RvcmFnZURhdGEoY29uc3QgU3RyaW5nJiByb290RGlyZWN0b3J5KTsKKwor
ICAgIHVzaW5nIFF1b3RhQ2hlY2tGdW5jdGlvbiA9IEZ1bmN0aW9uPHZvaWQodWludDY0X3Qgc3Bh
Y2VSZXF1ZXN0ZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpPjsKKyAgICBJREJT
dG9yYWdlTWFuYWdlcihjb25zdCBTdHJpbmcmIHBhdGgsIElEQlN0b3JhZ2VSZWdpc3RyeSYsIFF1
b3RhQ2hlY2tGdW5jdGlvbiYmKTsKKyAgICB+SURCU3RvcmFnZU1hbmFnZXIoKSBmaW5hbCB7IH0K
KyAgICBib29sIGlzQWN0aXZlKCkgY29uc3Q7CisgICAgYm9vbCBoYXNEYXRhSW5NZW1vcnkoKSBj
b25zdDsKKyAgICB2b2lkIGNsb3NlRGF0YWJhc2VzRm9yRGVsZXRpb24oKTsKKyAgICB2b2lkIHN0
b3BEYXRhYmFzZUFjdGl2aXRpZXNGb3JTdXNwZW5kKCk7CisKKyAgICB2b2lkIG9wZW5EYXRhYmFz
ZShXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub0NsaWVudCYsIGNvbnN0IFdlYkNv
cmU6OklEQlJlcXVlc3REYXRhJik7CisgICAgdm9pZCBvcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKGNv
bnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJik7CisgICAgdm9pZCBkZWxldGVEYXRhYmFzZShX
ZWJDb3JlOjpJREJTZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub0NsaWVudCYsIGNvbnN0IFdlYkNvcmU6
OklEQlJlcXVlc3REYXRhJik7CisgICAgVmVjdG9yPFdlYkNvcmU6OklEQkRhdGFiYXNlTmFtZUFu
ZFZlcnNpb24+IGdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucygpOworCitwcml2YXRlOgor
ICAgIFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2UmIGdldE9yQ3JlYXRlVW5p
cXVlSURCRGF0YWJhc2UoY29uc3QgV2ViQ29yZTo6SURCRGF0YWJhc2VJZGVudGlmaWVyJik7CisK
KyAgICAvLyBXZWJDb3JlOjpVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIKKyAgICB2b2lkIHJlZ2lz
dGVyQ29ubmVjdGlvbihXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVj
dGlvbiYpIGZpbmFsOworICAgIHZvaWQgdW5yZWdpc3RlckNvbm5lY3Rpb24oV2ViQ29yZTo6SURC
U2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mKSBmaW5hbDsKKyAgICB2b2lkIHJl
Z2lzdGVyVHJhbnNhY3Rpb24oV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZVRy
YW5zYWN0aW9uJikgZmluYWw7CisgICAgdm9pZCB1bnJlZ2lzdGVyVHJhbnNhY3Rpb24oV2ViQ29y
ZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJikgZmluYWw7CisgICAg
c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklEQlNlcnZlcjo6SURCQmFja2luZ1N0b3JlPiBjcmVh
dGVCYWNraW5nU3RvcmUoY29uc3QgV2ViQ29yZTo6SURCRGF0YWJhc2VJZGVudGlmaWVyJikgZmlu
YWw7CisgICAgdm9pZCByZXF1ZXN0U3BhY2UoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwg
dWludDY0X3Qgc2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7CisK
KyAgICBTdHJpbmcgbV9wYXRoOworICAgIElEQlN0b3JhZ2VSZWdpc3RyeSYgbV9yZWdpc3RyeTsK
KyAgICBRdW90YUNoZWNrRnVuY3Rpb24gbV9xdW90YUNoZWNrRnVuY3Rpb247CisgICAgSGFzaE1h
cDxXZWJDb3JlOjpJREJEYXRhYmFzZUlkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlPj4gbV9kYXRhYmFzZXM7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc3RvcmFnZS9JREJTdG9yYWdlUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VSZWdpc3RyeS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTAyMTdj
ZTFjNWM2YmI4MjQ4ZWJmOWVmOWM3NDA1ZGViNTY1Y2EwNQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlUmVnaXN0cnkuY3Bw
CkBAIC0wLDAgKzEsMTAxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIklEQlN0b3JhZ2VSZWdpc3RyeS5oIgorCisjaW5jbHVkZSAiSURCU3RvcmFnZUNvbm5l
Y3Rpb25Ub0NsaWVudC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvVW5pcXVlSURCRGF0YWJhc2VDb25u
ZWN0aW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9u
Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitJREJTdG9yYWdlUmVnaXN0cnk6OklEQlN0b3Jh
Z2VSZWdpc3RyeSgpID0gZGVmYXVsdDsKKworV2ViQ29yZTo6SURCU2VydmVyOjpJREJDb25uZWN0
aW9uVG9DbGllbnQmIElEQlN0b3JhZ2VSZWdpc3RyeTo6Z2V0T3JDcmVhdGVDb25uZWN0aW9uVG9D
bGllbnQoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uLCBXZWJDb3JlOjpJREJD
b25uZWN0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIGF1dG8gYWRkUmVzdWx0ID0g
bV9jb25uZWN0aW9uc1RvQ2xpZW50LmFkZChpZGVudGlmaWVyLCBudWxscHRyKTsKKyAgICBpZiAo
YWRkUmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUg
PSBtYWtlVW5pcXVlPElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ+KGNvbm5lY3Rpb24sIGlk
ZW50aWZpZXIpOworCisgICAgQVNTRVJUKGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPmlwY0Nv
bm5lY3Rpb24oKSA9PSBjb25uZWN0aW9uKTsKKyAgICByZXR1cm4gYWRkUmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZS0+Y29ubmVjdGlvblRvQ2xpZW50KCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZVJlZ2lz
dHJ5OjpyZW1vdmVDb25uZWN0aW9uVG9DbGllbnQoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBj
b25uZWN0aW9uKQoreworICAgIGF1dG8gYWxsQ29ubmVjdGlvbnNUb0NsaWVudCA9IHN0ZDo6ZXhj
aGFuZ2UobV9jb25uZWN0aW9uc1RvQ2xpZW50LCB7IH0pOworICAgIGZvciAoYXV0byYgW2lkZW50
aWZpZXIsIGNvbm5lY3Rpb25Ub0NsaWVudF0gOiBhbGxDb25uZWN0aW9uc1RvQ2xpZW50KSB7Cisg
ICAgICAgIGlmIChjb25uZWN0aW9uVG9DbGllbnQtPmlwY0Nvbm5lY3Rpb24oKSAhPSBjb25uZWN0
aW9uKSB7CisgICAgICAgICAgICBtX2Nvbm5lY3Rpb25zVG9DbGllbnQuYWRkKGlkZW50aWZpZXIs
IFdURk1vdmUoY29ubmVjdGlvblRvQ2xpZW50KSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgfQorICAgICAgICBjb25uZWN0aW9uVG9DbGllbnQtPmNvbm5lY3Rpb25Ub0NsaWVudCgp
LmNvbm5lY3Rpb25Ub0NsaWVudENsb3NlZCgpOworICAgIH0KK30KKwordm9pZCBJREJTdG9yYWdl
UmVnaXN0cnk6OnJlZ2lzdGVyQ29ubmVjdGlvbihXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlE
QkRhdGFiYXNlQ29ubmVjdGlvbiYgY29ubmVjdGlvbikKK3sKKyAgICBhdXRvIGlkZW50aWZpZXIg
PSBjb25uZWN0aW9uLmlkZW50aWZpZXIoKTsKKyAgICBBU1NFUlQoIW1fY29ubmVjdGlvbnMuY29u
dGFpbnMoaWRlbnRpZmllcikpOworCisgICAgbV9jb25uZWN0aW9ucy5hZGQoaWRlbnRpZmllciwg
Y29ubmVjdGlvbik7Cit9CisKK3ZvaWQgSURCU3RvcmFnZVJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQ29u
bmVjdGlvbihXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYg
Y29ubmVjdGlvbikKK3sKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBjb25uZWN0aW9uLmlkZW50aWZp
ZXIoKTsKKyAgICBBU1NFUlQobV9jb25uZWN0aW9ucy5jb250YWlucyhpZGVudGlmaWVyKSk7CisK
KyAgICBtX2Nvbm5lY3Rpb25zLnJlbW92ZShpZGVudGlmaWVyKTsKK30KKwordm9pZCBJREJTdG9y
YWdlUmVnaXN0cnk6OnJlZ2lzdGVyVHJhbnNhY3Rpb24oV2ViQ29yZTo6SURCU2VydmVyOjpVbmlx
dWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKK3sKKyAgICBhdXRvIGlkZW50
aWZpZXIgPSB0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpOworICAgIEFTU0VSVCghbV90
cmFuc2FjdGlvbnMuY29udGFpbnMoaWRlbnRpZmllcikpOworCisgICAgbV90cmFuc2FjdGlvbnMu
YWRkKGlkZW50aWZpZXIsIHRyYW5zYWN0aW9uKTsKK30KKwordm9pZCBJREJTdG9yYWdlUmVnaXN0
cnk6OnVucmVnaXN0ZXJUcmFuc2FjdGlvbihXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRh
dGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQoreworICAgIGF1dG8gaWRlbnRpZmllciA9
IHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCk7CisgICAgQVNTRVJUKG1fdHJhbnNhY3Rp
b25zLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKKworICAgIG1fdHJhbnNhY3Rpb25zLnJlbW92ZShp
ZGVudGlmaWVyKTsKK30KKworV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNv
bm5lY3Rpb24qIElEQlN0b3JhZ2VSZWdpc3RyeTo6Z2V0Q29ubmVjdGlvbih1aW50NjRfdCBpZGVu
dGlmaWVyKQoreworICAgIHJldHVybiBtX2Nvbm5lY3Rpb25zLmdldChpZGVudGlmaWVyKS5nZXQo
KTsKK30KKworV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9u
KiBJREJTdG9yYWdlUmVnaXN0cnk6OmdldFRyYW5zYWN0aW9uKFdlYkNvcmU6OklEQlJlc291cmNl
SWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIHJldHVybiBtX3RyYW5zYWN0aW9ucy5nZXQo
aWRlbnRpZmllcikuZ2V0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VSZWdpc3Ry
eS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VSZWdp
c3RyeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmQyMzRlMGU0MWExZmM1ZjNiYjk5MWFkYmQyZTA2MDJjMzhlOTQ1
ODQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3Jh
Z2UvSURCU3RvcmFnZVJlZ2lzdHJ5LmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
SURCUmVzb3VyY2VJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIElEQlNlcnZlciB7CitjbGFzcyBVbmlxdWVJREJE
YXRhYmFzZUNvbm5lY3Rpb247CitjbGFzcyBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOwor
fQorfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgSURCU3RvcmFnZUNvbm5lY3Rpb25U
b0NsaWVudDsKKworY2xhc3MgSURCU3RvcmFnZVJlZ2lzdHJ5IHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBJREJTdG9yYWdlUmVnaXN0cnkoKTsKKyAgICBXZWJD
b3JlOjpJREJTZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub0NsaWVudCYgZ2V0T3JDcmVhdGVDb25uZWN0
aW9uVG9DbGllbnQoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCwgV2ViQ29yZTo6SURCQ29ubmVj
dGlvbklkZW50aWZpZXIpOworICAgIHZvaWQgcmVtb3ZlQ29ubmVjdGlvblRvQ2xpZW50KElQQzo6
Q29ubmVjdGlvbjo6VW5pcXVlSUQpOworICAgIHZvaWQgcmVnaXN0ZXJDb25uZWN0aW9uKFdlYkNv
cmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJik7CisgICAgdm9pZCB1
bnJlZ2lzdGVyQ29ubmVjdGlvbihXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNl
Q29ubmVjdGlvbiYpOworICAgIFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VD
b25uZWN0aW9uKiBnZXRDb25uZWN0aW9uKHVpbnQ2NF90IGlkZW50aWZpZXIpOworICAgIHZvaWQg
cmVnaXN0ZXJUcmFuc2FjdGlvbihXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNl
VHJhbnNhY3Rpb24mKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJUcmFuc2FjdGlvbihXZWJDb3JlOjpJ
REJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mKTsKKyAgICBXZWJDb3JlOjpJ
REJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24qIGdldFRyYW5zYWN0aW9uKFdl
YkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllcik7CisKK3ByaXZhdGU6CisgICAgSGFzaE1hcDxX
ZWJDb3JlOjpJREJDb25uZWN0aW9uSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPElEQlN0b3Jh
Z2VDb25uZWN0aW9uVG9DbGllbnQ+PiBtX2Nvbm5lY3Rpb25zVG9DbGllbnQ7CisgICAgSGFzaE1h
cDx1aW50NjRfdCwgV2Vha1B0cjxXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNl
Q29ubmVjdGlvbj4+IG1fY29ubmVjdGlvbnM7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpJREJSZXNv
dXJjZUlkZW50aWZpZXIsIFdlYWtQdHI8V2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRh
YmFzZVRyYW5zYWN0aW9uPj4gbV90cmFuc2FjdGlvbnM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9O
ZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
dG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAKaW5kZXggODEzZTZlOTVhMTNhYmUzOTE4
NmQxOWIyZGFiMjg3YmJiNTUyNGY3OS4uNjM1NWY3MWI4NmI2NTIyYmVlNjQ5NDliZWM1MjcwYTM1
M2ZkMGIxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdl
L05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAKQEAgLTI2LDE4ICsyNiwyNiBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtTdG9yYWdlTWFuYWdlci5o
IgogCisjaW5jbHVkZSAiQ2FjaGVTdG9yYWdlRW5naW5lLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3Rl
bVN0b3JhZ2VIYW5kbGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW1TdG9yYWdlTWFu
YWdlci5oIgorI2luY2x1ZGUgIklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQuaCIKKyNpbmNs
dWRlICJJREJTdG9yYWdlTWFuYWdlci5oIgorI2luY2x1ZGUgIklEQlN0b3JhZ2VSZWdpc3RyeS5o
IgogI2luY2x1ZGUgIkxvY2FsU3RvcmFnZU1hbmFnZXIuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgi
CisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTmV0
d29ya1N0b3JhZ2VNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJPcmlnaW5TdG9yYWdlTWFu
YWdlci5oIgorI2luY2x1ZGUgIlF1b3RhTWFuYWdlci5oIgogI2luY2x1ZGUgIlNlc3Npb25TdG9y
YWdlTWFuYWdlci5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhQmFzZS5oIgogI2luY2x1ZGUgIlN0
b3JhZ2VBcmVhTWFwTWVzc2FnZXMuaCIKICNpbmNsdWRlICJTdG9yYWdlQXJlYVJlZ2lzdHJ5Lmgi
CiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFUeXBlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0
eU9yaWdpbkRhdGEuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1VuaXF1ZUlEQkRhdGFiYXNlQ29ubmVj
dGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5o
PgogI2luY2x1ZGUgPHBhbC9jcnlwdG8vQ3J5cHRvRGlnZXN0Lmg+CiAjaW5jbHVkZSA8d3RmL1Nj
b3BlLmg+CiAjaW5jbHVkZSA8d3RmL1N1c3BlbmRhYmxlV29ya1F1ZXVlLmg+CkBAIC0xMDAsMjIg
KzEwOCwyOCBAQCBzdGF0aWMgdm9pZCBkZWxldGVPcmlnaW5GaWxlSWZOZWNlc3NhcnkoY29uc3Qg
U3RyaW5nJiBmaWxlUGF0aCkKICAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShmaWxlUGF0
aCk7CiB9CiAKLVJlZjxOZXR3b3JrU3RvcmFnZU1hbmFnZXI+IE5ldHdvcmtTdG9yYWdlTWFuYWdl
cjo6Y3JlYXRlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBwYXRoLCBj
b25zdCBTdHJpbmcmIGN1c3RvbUxvY2FsU3RvcmFnZVBhdGgpCitSZWY8TmV0d29ya1N0b3JhZ2VN
YW5hZ2VyPiBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZShQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5n
JiBwYXRoLCBjb25zdCBTdHJpbmcmIGN1c3RvbUxvY2FsU3RvcmFnZVBhdGgsIGNvbnN0IFN0cmlu
ZyYgY3VzdG9tSURCU3RvcmFnZVBhdGgsIGNvbnN0IFN0cmluZyYgY3VzdG9tQ2FjaGVTdG9yYWdl
UGF0aCwgdWludDY0X3QgZGVmYXVsdE9yaWdpblF1b3RhLCB1aW50NjRfdCBkZWZhdWx0VGhpcmRQ
YXJ0eU9yaWdpblF1b3RhKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5ldHdvcmtTdG9y
YWdlTWFuYWdlcihzZXNzaW9uSUQsIHBhdGgsIGN1c3RvbUxvY2FsU3RvcmFnZVBhdGgpKTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXR3b3JrU3RvcmFnZU1hbmFnZXIoc2Vzc2lvbklELCBj
b25uZWN0aW9uLCBwYXRoLCBjdXN0b21Mb2NhbFN0b3JhZ2VQYXRoLCBjdXN0b21JREJTdG9yYWdl
UGF0aCwgY3VzdG9tQ2FjaGVTdG9yYWdlUGF0aCwgZGVmYXVsdE9yaWdpblF1b3RhLCBkZWZhdWx0
VGhpcmRQYXJ0eU9yaWdpblF1b3RhKSk7CiB9CiAKLU5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6TmV0
d29ya1N0b3JhZ2VNYW5hZ2VyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5n
JiBwYXRoLCBjb25zdCBTdHJpbmcmIGN1c3RvbUxvY2FsU3RvcmFnZVBhdGgpCitOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBw
YXRoLCBjb25zdCBTdHJpbmcmIGN1c3RvbUxvY2FsU3RvcmFnZVBhdGgsIGNvbnN0IFN0cmluZyYg
Y3VzdG9tSURCU3RvcmFnZVBhdGgsIGNvbnN0IFN0cmluZyYgY3VzdG9tQ2FjaGVTdG9yYWdlUGF0
aCwgdWludDY0X3QgZGVmYXVsdE9yaWdpblF1b3RhLCB1aW50NjRfdCBkZWZhdWx0VGhpcmRQYXJ0
eU9yaWdpblF1b3RhKQogICAgIDogbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQogICAgICwgbV9xdWV1
ZShTdXNwZW5kYWJsZVdvcmtRdWV1ZTo6Y3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0LlN0b3JhZ2Ui
KSkKKyAgICAsIG1fZGVmYXVsdE9yaWdpblF1b3RhKGRlZmF1bHRPcmlnaW5RdW90YSkKKyAgICAs
IG1fZGVmYXVsdFRoaXJkUGFydHlPcmlnaW5RdW90YShkZWZhdWx0VGhpcmRQYXJ0eU9yaWdpblF1
b3RhKQorICAgICwgbV9wYXJlbnRDb25uZWN0aW9uKGNvbm5lY3Rpb24pCiB7CiAgICAgQVNTRVJU
KFJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgcGF0aCA9IHBhdGguaXNvbGF0ZWRDb3B5KCksIGN1
c3RvbUxvY2FsU3RvcmFnZVBhdGggPSBjcm9zc1RocmVhZENvcHkoY3VzdG9tTG9jYWxTdG9yYWdl
UGF0aCldKCkgbXV0YWJsZSB7CisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBwYXRoID0gcGF0aC5pc29sYXRlZENvcHkoKSwgY3VzdG9t
TG9jYWxTdG9yYWdlUGF0aCA9IGNyb3NzVGhyZWFkQ29weShjdXN0b21Mb2NhbFN0b3JhZ2VQYXRo
KSwgY3VzdG9tSURCU3RvcmFnZVBhdGggPSBjcm9zc1RocmVhZENvcHkoY3VzdG9tSURCU3RvcmFn
ZVBhdGgpLCBjdXN0b21DYWNoZVN0b3JhZ2VQYXRoID0gY3Jvc3NUaHJlYWRDb3B5KGN1c3RvbUNh
Y2hlU3RvcmFnZVBhdGgpXSgpIG11dGFibGUgewogICAgICAgICBtX2ZpbGVTeXN0ZW1TdG9yYWdl
SGFuZGxlUmVnaXN0cnkgPSBtYWtlVW5pcXVlPEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0
cnk+KCk7CiAgICAgICAgIG1fc3RvcmFnZUFyZWFSZWdpc3RyeSA9IG1ha2VVbmlxdWU8U3RvcmFn
ZUFyZWFSZWdpc3RyeT4oKTsKKyAgICAgICAgbV9pZGJTdG9yYWdlUmVnaXN0cnkgPSBtYWtlVW5p
cXVlPElEQlN0b3JhZ2VSZWdpc3RyeT4oKTsKICAgICAgICAgbV9wYXRoID0gcGF0aDsKICAgICAg
ICAgbV9jdXN0b21Mb2NhbFN0b3JhZ2VQYXRoID0gY3VzdG9tTG9jYWxTdG9yYWdlUGF0aDsKKyAg
ICAgICAgbV9jdXN0b21JREJTdG9yYWdlUGF0aCA9IGN1c3RvbUlEQlN0b3JhZ2VQYXRoOworICAg
ICAgICBtX2N1c3RvbUNhY2hlU3RvcmFnZVBhdGggPSBjdXN0b21DYWNoZVN0b3JhZ2VQYXRoOwog
ICAgICAgICBpZiAoIW1fcGF0aC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGF1dG8gc2FsdFBh
dGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9wYXRoLCAic2FsdCIp
OwogICAgICAgICAgICAgbV9zYWx0ID0gdmFsdWVPckRlZmF1bHQoRmlsZVN5c3RlbTo6cmVhZE9y
TWFrZVNhbHQoc2FsdFBhdGgpKTsKQEAgLTEzMSw3ICsxNDUsMTAgQEAgTmV0d29ya1N0b3JhZ2VN
YW5hZ2VyOjp+TmV0d29ya1N0b3JhZ2VNYW5hZ2VyKCkKIAogYm9vbCBOZXR3b3JrU3RvcmFnZU1h
bmFnZXI6OmNhbkhhbmRsZVR5cGVzKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHR5cGVzKQog
ewotICAgIHJldHVybiB0eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkxvY2FsU3RvcmFn
ZSkgfHwgdHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpTZXNzaW9uU3RvcmFnZSkgfHwg
dHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpGaWxlU3lzdGVtKTsKKyAgICByZXR1cm4g
dHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpMb2NhbFN0b3JhZ2UpCisgICAgICAgIHx8
IHR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6U2Vzc2lvblN0b3JhZ2UpCisgICAgICAg
IHx8IHR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6RmlsZVN5c3RlbSkKKyAgICAgICAg
fHwgdHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpOwog
fQogCiB2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y2xvc2UoKQpAQCAtMTcwLDYgKzE4Nyw3
IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpzdG9wUmVjZWl2aW5nTWVzc2FnZUZyb21D
b25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiYKIAogICAgIGNvbm5lY3Rpb24ucmVtb3ZlV29ya1F1
ZXVlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSk7CiAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBjb25uZWN0aW9uID0gY29ubmVjdGlvbi51bmlxdWVJRCgp
XSgpIG11dGFibGUgeworICAgICAgICBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+cmVtb3ZlQ29ubmVj
dGlvblRvQ2xpZW50KGNvbm5lY3Rpb24pOwogICAgICAgICBtX2xvY2FsT3JpZ2luU3RvcmFnZU1h
bmFnZXJzLnJlbW92ZUlmKFsmXShhdXRvJiBlbnRyeSkgewogICAgICAgICAgICAgYXV0byYgbWFu
YWdlciA9IGVudHJ5LnZhbHVlOwogICAgICAgICAgICAgbWFuYWdlci0+Y29ubmVjdGlvbkNsb3Nl
ZChjb25uZWN0aW9uKTsKQEAgLTIyMiw3ICsyNDAsMTQgQEAgT3JpZ2luU3RvcmFnZU1hbmFnZXIm
IE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6bG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcihjb25zdCBX
ZWIKICAgICAgICAgICAgICAgICB3cml0ZU9yaWdpblRvRmlsZUlmTmVjZXNzYXJ5KG9yaWdpbkZp
bGVQYXRoKG9yaWdpbkRpcmVjdG9yeSksIG9yaWdpbik7CiAgICAgICAgICAgICB9KTsKICAgICAg
ICAgfQotICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxPcmlnaW5TdG9yYWdlTWFuYWdlcj4oV1RG
TW92ZShvcmlnaW5EaXJlY3RvcnkpLCBMb2NhbFN0b3JhZ2VNYW5hZ2VyOjpsb2NhbFN0b3JhZ2VG
aWxlUGF0aChtX2N1c3RvbUxvY2FsU3RvcmFnZVBhdGgsIG9yaWdpbikpOworICAgICAgICBhdXRv
IGxvY2FsU3RvcmFnZVBhdGggPSBMb2NhbFN0b3JhZ2VNYW5hZ2VyOjpsb2NhbFN0b3JhZ2VGaWxl
UGF0aChtX2N1c3RvbUxvY2FsU3RvcmFnZVBhdGgsIG9yaWdpbik7CisgICAgICAgIGF1dG8gaWRi
U3RvcmFnZVBhdGggPSBJREJTdG9yYWdlTWFuYWdlcjo6aWRiU3RvcmFnZU9yaWdpbkRpcmVjdG9y
eShtX2N1c3RvbUlEQlN0b3JhZ2VQYXRoLCBvcmlnaW4pOworICAgICAgICBhdXRvIGNhY2hlU3Rv
cmFnZVBhdGggPSBDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6c3RvcmFnZVBhdGgobV9jdXN0b21DYWNo
ZVN0b3JhZ2VQYXRoLCBvcmlnaW4pOworICAgICAgICB1aW50NjRfdCBxdW90YSA9IG9yaWdpbi50
b3BPcmlnaW4gPT0gb3JpZ2luLmNsaWVudE9yaWdpbiA/IG1fZGVmYXVsdE9yaWdpblF1b3RhIDog
bV9kZWZhdWx0VGhpcmRQYXJ0eU9yaWdpblF1b3RhOworICAgICAgICBRdW90YU1hbmFnZXI6Oklu
Y3JlYXNlUXVvdGFGdW5jdGlvbiBpbmNyZWFzZVF1b3RhRnVuY3Rpb24gPSBbc2Vzc2lvbklEID0g
bV9zZXNzaW9uSUQsIG9yaWdpbiwgY29ubmVjdGlvbiA9IG1fcGFyZW50Q29ubmVjdGlvbl0gKGF1
dG8gaWRlbnRpZmllciwgYXV0byBjdXJyZW50UXVvdGEsIGF1dG8gY3VycmVudFVzYWdlLCBhdXRv
IHJlcXVlc3RlZEluY3JlYXNlKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIElQQzo6Q29ubmVjdGlv
bjo6c2VuZChjb25uZWN0aW9uLCBNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6SW5jcmVh
c2VRdW90YShzZXNzaW9uSUQsIG9yaWdpbiwgaWRlbnRpZmllciwgY3VycmVudFF1b3RhLCBjdXJy
ZW50VXNhZ2UsIHJlcXVlc3RlZEluY3JlYXNlKSwgMCk7CisgICAgICAgIH07CisgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPE9yaWdpblN0b3JhZ2VNYW5hZ2VyPihxdW90YSwgV1RGTW92ZShpbmNy
ZWFzZVF1b3RhRnVuY3Rpb24pLCBXVEZNb3ZlKG9yaWdpbkRpcmVjdG9yeSksIFdURk1vdmUobG9j
YWxTdG9yYWdlUGF0aCksIFdURk1vdmUoaWRiU3RvcmFnZVBhdGgpLCBXVEZNb3ZlKGNhY2hlU3Rv
cmFnZVBhdGgpKTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiB9CiAKQEAgLTI4Miw2ICszMDcs
MTYgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNsZWFyU3RvcmFnZUZvclRlc3Rpbmco
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGMKICAgICB9KTsKIH0KIAordm9pZCBOZXR3b3Jr
U3RvcmFnZU1hbmFnZXI6OmRpZEluY3JlYXNlUXVvdGEoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3Jp
Z2luJiBvcmlnaW4sIFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllciBpZGVudGlmaWVyLCBz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBuZXdRdW90YSkKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOworCisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBSZWYgeyAqdGhpcyB9LCBvcmlnaW4gPSBjcm9zc1RocmVhZENvcHkob3JpZ2luKSwgaWRlbnRp
ZmllciwgbmV3UXVvdGFdKCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChhdXRvIG1hbmFnZXIgPSBt
X2xvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXJzLmdldChvcmlnaW4pKQorICAgICAgICAgICAgbWFu
YWdlci0+cXVvdGFNYW5hZ2VyKCkuZGlkSW5jcmVhc2VRdW90YShpZGVudGlmaWVyLCBuZXdRdW90
YSk7CisgICAgfSk7Cit9CisKIHZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpmaWxlU3lzdGVt
R2V0RGlyZWN0b3J5KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6
Q2xpZW50T3JpZ2luJiBvcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8V2Vi
Q29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigp
KTsKQEAgLTQ1Miw2ICs0ODcsOSBAQCBIYXNoU2V0PFdlYkNvcmU6OkNsaWVudE9yaWdpbj4gTmV0
d29ya1N0b3JhZ2VNYW5hZ2VyOjpnZXRBbGxPcmlnaW5zKCkKICAgICBmb3IgKGF1dG8mIG9yaWdp
biA6IExvY2FsU3RvcmFnZU1hbmFnZXI6Om9yaWdpbnNPZkxvY2FsU3RvcmFnZURhdGEobV9jdXN0
b21Mb2NhbFN0b3JhZ2VQYXRoKSkKICAgICAgICAgYWxsT3JpZ2lucy5hZGQoV2ViQ29yZTo6Q2xp
ZW50T3JpZ2luIHsgb3JpZ2luLCBvcmlnaW4gfSk7CiAKKyAgICBmb3IgKGF1dG8mIG9yaWdpbiA6
IElEQlN0b3JhZ2VNYW5hZ2VyOjpvcmlnaW5zT2ZJREJTdG9yYWdlRGF0YShtX2N1c3RvbUlEQlN0
b3JhZ2VQYXRoKSkKKyAgICAgICAgYWxsT3JpZ2lucy5hZGQob3JpZ2luKTsKKwogICAgIHJldHVy
biBhbGxPcmlnaW5zOwogfQogCkBAIC01NzksMTIgKzYxNywxMiBAQCB2b2lkIE5ldHdvcmtTdG9y
YWdlTWFuYWdlcjo6bW92ZURhdGEoY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBz
b3VyY2UsCiAgICAgICAgIGF1dG8gdGFyZ2V0T3JpZ2luID0gV2ViQ29yZTo6Q2xpZW50T3JpZ2lu
IHsgdGFyZ2V0LCB0YXJnZXQgfTsKICAgICAgICAgCiAgICAgICAgIC8vIENsZWFyIGV4aXN0aW5n
IGRhdGEgb2YgdGFyZ2V0IG9yaWdpbi4KLSAgICAgICAgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlw
ZT4gdHlwZXMgPSB7IFdlYnNpdGVEYXRhVHlwZTo6RmlsZVN5c3RlbSwgV2Vic2l0ZURhdGFUeXBl
OjpMb2NhbFN0b3JhZ2UsIFdlYnNpdGVEYXRhVHlwZTo6U2Vzc2lvblN0b3JhZ2UgIH07CisgICAg
ICAgIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHR5cGVzID0geyBXZWJzaXRlRGF0YVR5cGU6
OkZpbGVTeXN0ZW0sIFdlYnNpdGVEYXRhVHlwZTo6TG9jYWxTdG9yYWdlLCBXZWJzaXRlRGF0YVR5
cGU6OlNlc3Npb25TdG9yYWdlLCBXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcyAg
fTsKICAgICAgICAgbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcih0YXJnZXRPcmlnaW4pLmRlbGV0
ZURhdGEodHlwZXMsIC1XYWxsVGltZTo6aW5maW5pdHkoKSk7CiAgICAgICAgIHJlbW92ZU9yaWdp
blN0b3JhZ2VNYW5hZ2VySWZQb3NzaWJsZSh0YXJnZXRPcmlnaW4pOwogCiAgICAgICAgIC8vIE1v
dmUgZGF0YSBmcm9tIHNvdXJjZSBvcmlnaW4gdG8gdGFyZ2V0IG9yaWdpbi4KLSAgICAgICAgbG9j
YWxPcmlnaW5TdG9yYWdlTWFuYWdlcihzb3VyY2VPcmlnaW4pLm1vdmVEYXRhKG9yaWdpbkRpcmVj
dG9yeVBhdGgobV9wYXRoLCB0YXJnZXRPcmlnaW4sIG1fc2FsdCksIExvY2FsU3RvcmFnZU1hbmFn
ZXI6OmxvY2FsU3RvcmFnZUZpbGVQYXRoKG1fY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCwgdGFyZ2V0
T3JpZ2luKSk7CisgICAgICAgIGxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIoc291cmNlT3JpZ2lu
KS5tb3ZlRGF0YShvcmlnaW5EaXJlY3RvcnlQYXRoKG1fcGF0aCwgdGFyZ2V0T3JpZ2luLCBtX3Nh
bHQpLCBMb2NhbFN0b3JhZ2VNYW5hZ2VyOjpsb2NhbFN0b3JhZ2VGaWxlUGF0aChtX2N1c3RvbUxv
Y2FsU3RvcmFnZVBhdGgsIHRhcmdldE9yaWdpbiksIElEQlN0b3JhZ2VNYW5hZ2VyOjppZGJTdG9y
YWdlT3JpZ2luRGlyZWN0b3J5KG1fY3VzdG9tSURCU3RvcmFnZVBhdGgsIHRhcmdldE9yaWdpbikp
OwogICAgICAgICByZW1vdmVPcmlnaW5TdG9yYWdlTWFuYWdlcklmUG9zc2libGUoc291cmNlT3Jp
Z2luKTsKIAogICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOwpAQCAtNTk5LDYgKzYzNyw4IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VNYW5h
Z2VyOjpzdXNwZW5kKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
CiAgICAgICAgIGZvciAoYXV0byYgbWFuYWdlciA6IG1fbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdl
cnMudmFsdWVzKCkpIHsKICAgICAgICAgICAgIGlmIChhdXRvIGxvY2FsU3RvcmFnZU1hbmFnZXIg
PSBtYW5hZ2VyLT5leGlzdGluZ0xvY2FsU3RvcmFnZU1hbmFnZXIoKSkKICAgICAgICAgICAgICAg
ICBsb2NhbFN0b3JhZ2VNYW5hZ2VyLT5zeW5jTG9jYWxTdG9yYWdlKCk7CisgICAgICAgICAgICBp
ZiAoYXV0byBpZGJTdG9yYWdlTWFuYWdlciA9IG1hbmFnZXItPmV4aXN0aW5nSURCU3RvcmFnZU1h
bmFnZXIoKSkKKyAgICAgICAgICAgICAgICBpZGJTdG9yYWdlTWFuYWdlci0+c3RvcERhdGFiYXNl
QWN0aXZpdGllc0ZvclN1c3BlbmQoKTsKICAgICAgICAgfQogICAgIH0sIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKIH0KQEAgLTYzNiw2ICs2NzYsNTIgQEAgdm9pZCBOZXR3b3JrU3RvcmFn
ZU1hbmFnZXI6OnN5bmNMb2NhbFN0b3JhZ2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNv
bXBsZXQKICAgICB9KTsKIH0KIAordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnJlZ2lzdGVy
VGVtcG9yYXJ5QmxvYkZpbGVQYXRocyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBmaWxlUGF0aHMpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFp
bigpKTsKKworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVm
IHsgKnRoaXMgfSwgY29ubmVjdGlvbklEID0gY29ubmVjdGlvbi51bmlxdWVJRCgpLCBmaWxlUGF0
aHMgPSBjcm9zc1RocmVhZENvcHkoZmlsZVBhdGhzKV0geworICAgICAgICBhdXRvJiB0ZW1wb3Jh
cnlCbG9iUGF0aHMgPSBtX3RlbXBvcmFyeUJsb2JQYXRoc0J5Q29ubmVjdGlvbi5lbnN1cmUoY29u
bmVjdGlvbklELCBbXSB7CisgICAgICAgICAgICByZXR1cm4gSGFzaFNldDxTdHJpbmc+IHsgfTsK
KyAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOworICAgICAgICB0ZW1wb3JhcnlCbG9iUGF0aHMu
YWRkKGZpbGVQYXRocy5iZWdpbigpLCBmaWxlUGF0aHMuZW5kKCkpOworICAgIH0pOworfQorCit2
b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6cmVxdWVzdFNwYWNlKGNvbnN0IFdlYkNvcmU6OkNs
aWVudE9yaWdpbiYgb3JpZ2luLCB1aW50NjRfdCBzaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIEFTU0VSVChSdW5Mb29wOjppc01h
aW4oKSk7CisKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJl
ZiB7ICp0aGlzIH0sIG9yaWdpbiA9IGNyb3NzVGhyZWFkQ29weShvcmlnaW4pLCBzaXplLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewor
ICAgICAgICBsb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2VyKG9yaWdpbikucXVvdGFNYW5hZ2VyKCku
cmVxdWVzdFNwYWNlKHNpemUsIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXShhdXRvIGRlY2lzaW9uKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSwgZGVjaXNpb25dKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoZGVjaXNpb24gPT0gUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbjo6R3JhbnQpOworICAg
ICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0pOworfQorCit2b2lkIE5ldHdvcmtTdG9y
YWdlTWFuYWdlcjo6cmVzZXRRdW90YUZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7
CisKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0
aGlzIH0sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkg
bXV0YWJsZSB7CisgICAgICAgIGZvciAoYXV0byYgbWFuYWdlciA6IG1fbG9jYWxPcmlnaW5TdG9y
YWdlTWFuYWdlcnMudmFsdWVzKCkpCisgICAgICAgICAgICBtYW5hZ2VyLT5xdW90YU1hbmFnZXIo
KS5yZXNldFF1b3RhRm9yVGVzdGluZygpOworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0
Y2goV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIH0pOworfQorCit2b2lkIE5ldHdv
cmtTdG9yYWdlTWFuYWdlcjo6cmVzZXRRdW90YVVwZGF0ZWRCYXNlZE9uVXNhZ2VGb3JUZXN0aW5n
KGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luKQoreworICAgIEFTU0VSVChSdW5M
b29wOjppc01haW4oKSk7CisKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IFJlZiB7ICp0aGlzIH0sIG9yaWdpbiA9IGNyb3NzVGhyZWFkQ29weShvcmlnaW4pXSgp
IG11dGFibGUgeworICAgICAgICBpZiAoYXV0byBtYW5hZ2VyID0gbV9sb2NhbE9yaWdpblN0b3Jh
Z2VNYW5hZ2Vycy5nZXQob3JpZ2luKSkKKyAgICAgICAgICAgIG1hbmFnZXItPnF1b3RhTWFuYWdl
cigpLnJlc2V0UXVvdGFVcGRhdGVkQmFzZWRPblVzYWdlRm9yVGVzdGluZygpOworICAgIH0pOwor
fQorCiB2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y29ubmVjdFRvU3RvcmFnZUFyZWEoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBXZWJDb3JlOjpTdG9yYWdlVHlwZSB0eXBlLCBTdG9y
YWdlQXJlYU1hcElkZW50aWZpZXIgc291cmNlSWRlbnRpZmllciwgU3RvcmFnZU5hbWVzcGFjZUlk
ZW50aWZpZXIgbmFtZXNwYWNlSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2lu
JiBvcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFyZWFJZGVudGlmaWVyLCBI
YXNoTWFwPFN0cmluZywgU3RyaW5nPiwgdWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAtNzIzLDUgKzgwOSwxOTUgQEAg
dm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNsZWFyKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgU3RvcmFnZUFyZWFJZGVudGkKICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCit2
b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6b3BlbkRhdGFiYXNlKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhKQor
eworICAgIGF1dG8mIGNvbm5lY3Rpb25Ub0NsaWVudCA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT5n
ZXRPckNyZWF0ZUNvbm5lY3Rpb25Ub0NsaWVudChjb25uZWN0aW9uLnVuaXF1ZUlEKCksIHJlcXVl
c3REYXRhLnJlcXVlc3RJZGVudGlmaWVyKCkuY29ubmVjdGlvbklkZW50aWZpZXIoKSk7CisgICAg
bG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcihyZXF1ZXN0RGF0YS5kYXRhYmFzZUlkZW50aWZpZXIo
KS5vcmlnaW4oKSkuaWRiU3RvcmFnZU1hbmFnZXIoKm1faWRiU3RvcmFnZVJlZ2lzdHJ5KS5vcGVu
RGF0YWJhc2UoY29ubmVjdGlvblRvQ2xpZW50LCByZXF1ZXN0RGF0YSk7Cit9CisKK3ZvaWQgTmV0
d29ya1N0b3JhZ2VNYW5hZ2VyOjpvcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKGNvbnN0IFdlYkNvcmU6
OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkKK3sKKyAgICBsb2NhbE9yaWdpblN0b3JhZ2VN
YW5hZ2VyKHJlcXVlc3REYXRhLmRhdGFiYXNlSWRlbnRpZmllcigpLm9yaWdpbigpKS5pZGJTdG9y
YWdlTWFuYWdlcigqbV9pZGJTdG9yYWdlUmVnaXN0cnkpLm9wZW5EQlJlcXVlc3RDYW5jZWxsZWQo
cmVxdWVzdERhdGEpOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlRGF0
YWJhc2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpJREJSZXF1
ZXN0RGF0YSYgcmVxdWVzdERhdGEpCit7CisgICAgYXV0byYgY29ubmVjdGlvblRvQ2xpZW50ID0g
bV9pZGJTdG9yYWdlUmVnaXN0cnktPmdldE9yQ3JlYXRlQ29ubmVjdGlvblRvQ2xpZW50KGNvbm5l
Y3Rpb24udW5pcXVlSUQoKSwgcmVxdWVzdERhdGEucmVxdWVzdElkZW50aWZpZXIoKS5jb25uZWN0
aW9uSWRlbnRpZmllcigpKTsKKyAgICBsb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2VyKHJlcXVlc3RE
YXRhLmRhdGFiYXNlSWRlbnRpZmllcigpLm9yaWdpbigpKS5pZGJTdG9yYWdlTWFuYWdlcigqbV9p
ZGJTdG9yYWdlUmVnaXN0cnkpLmRlbGV0ZURhdGFiYXNlKGNvbm5lY3Rpb25Ub0NsaWVudCwgcmVx
dWVzdERhdGEpOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZXN0YWJsaXNoVHJh
bnNhY3Rpb24odWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2Vi
Q29yZTo6SURCVHJhbnNhY3Rpb25JbmZvJiB0cmFuc2FjdGlvbkluZm8pCit7CisgICAgaWYgKGF1
dG8gY29ubmVjdGlvbiA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT5nZXRDb25uZWN0aW9uKGRhdGFi
YXNlQ29ubmVjdGlvbklkZW50aWZpZXIpKQorICAgICAgICBjb25uZWN0aW9uLT5lc3RhYmxpc2hU
cmFuc2FjdGlvbih0cmFuc2FjdGlvbkluZm8pOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFu
YWdlcjo6ZGF0YWJhc2VDb25uZWN0aW9uUGVuZGluZ0Nsb3NlKHVpbnQ2NF90IGRhdGFiYXNlQ29u
bmVjdGlvbklkZW50aWZpZXIpCit7CisgICAgaWYgKGF1dG8gY29ubmVjdGlvbiA9IG1faWRiU3Rv
cmFnZVJlZ2lzdHJ5LT5nZXRDb25uZWN0aW9uKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIp
KQorICAgICAgICBjb25uZWN0aW9uLT5jb25uZWN0aW9uUGVuZGluZ0Nsb3NlRnJvbUNsaWVudCgp
OworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGF0YWJhc2VDb25uZWN0aW9uQ2xv
c2VkKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpCit7CisgICAgaWYgKGF1
dG8gY29ubmVjdGlvbiA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT5nZXRDb25uZWN0aW9uKGRhdGFi
YXNlQ29ubmVjdGlvbklkZW50aWZpZXIpKQorICAgICAgICBjb25uZWN0aW9uLT5jb25uZWN0aW9u
Q2xvc2VkRnJvbUNsaWVudCgpOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6YWJv
cnRPcGVuQW5kVXBncmFkZU5lZWRlZCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlm
aWVyLCBjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRl
bnRpZmllcikKK3sKKyAgICBpZiAoYXV0byB0cmFuc2FjdGlvbiA9IG1faWRiU3RvcmFnZVJlZ2lz
dHJ5LT5nZXRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbklkZW50aWZpZXIpKQorICAgICAgICB0cmFu
c2FjdGlvbi0+YWJvcnRXaXRob3V0Q2FsbGJhY2soKTsKKworICAgIGlmIChhdXRvIGNvbm5lY3Rp
b24gPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+Z2V0Q29ubmVjdGlvbihkYXRhYmFzZUNvbm5lY3Rp
b25JZGVudGlmaWVyKSkKKyAgICAgICAgY29ubmVjdGlvbi0+Y29ubmVjdGlvbkNsb3NlZEZyb21D
bGllbnQoKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmRpZEZpcmVWZXJzaW9u
Q2hhbmdlRXZlbnQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3Qg
V2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgY29uc3Qg
V2ViQ29yZTo6SW5kZXhlZERCOjpDb25uZWN0aW9uQ2xvc2VkT25CZWhhbGZPZlNlcnZlciBjb25u
ZWN0aW9uQ2xvc2VkKQoreworICAgIGlmIChhdXRvIGNvbm5lY3Rpb24gPSBtX2lkYlN0b3JhZ2VS
ZWdpc3RyeS0+Z2V0Q29ubmVjdGlvbihkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKSkKKyAg
ICAgICAgY29ubmVjdGlvbi0+ZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudChyZXF1ZXN0SWRlbnRp
ZmllciwgY29ubmVjdGlvbkNsb3NlZCk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2Vy
OjphYm9ydFRyYW5zYWN0aW9uKGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYg
dHJhbnNhY3Rpb25JZGVudGlmaWVyKQoreworICAgIGlmIChhdXRvIHRyYW5zYWN0aW9uID0gbV9p
ZGJTdG9yYWdlUmVnaXN0cnktPmdldFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllcikp
CisgICAgICAgIHRyYW5zYWN0aW9uLT5hYm9ydCgpOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdl
TWFuYWdlcjo6Y29tbWl0VHJhbnNhY3Rpb24oY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVu
dGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IHBlbmRpbmdSZXF1ZXN0Q291
bnQpCit7CisgICAgaWYgKGF1dG8gdHJhbnNhY3Rpb24gPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+
Z2V0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZGVudGlmaWVyKSkKKyAgICAgICAgdHJhbnNhY3Rp
b24tPmNvbW1pdChwZW5kaW5nUmVxdWVzdENvdW50KTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFn
ZU1hbmFnZXI6OmRpZEZpbmlzaEhhbmRsaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKHVpbnQ2
NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OklEQlJlc291
cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKQoreworICAgIGlmIChhdXRvIGNv
bm5lY3Rpb24gPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+Z2V0Q29ubmVjdGlvbihkYXRhYmFzZUNv
bm5lY3Rpb25JZGVudGlmaWVyKSkKKyAgICAgICAgY29ubmVjdGlvbi0+ZGlkRmluaXNoSGFuZGxp
bmdWZXJzaW9uQ2hhbmdlKHRyYW5zYWN0aW9uSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgTmV0d29y
a1N0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXF1
ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IFdlYkNvcmU6OklEQk9iamVjdFN0b3JlSW5mbyYg
b2JqZWN0U3RvcmVJbmZvKQoreworICAgIGlmIChhdXRvIHRyYW5zYWN0aW9uID0gbV9pZGJTdG9y
YWdlUmVnaXN0cnktPmdldFRyYW5zYWN0aW9uKHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRp
ZmllcigpKSkgeworICAgICAgICBBU1NFUlQodHJhbnNhY3Rpb24tPmlzVmVyc2lvbkNoYW5nZSgp
KTsKKyAgICAgICAgdHJhbnNhY3Rpb24tPmNyZWF0ZU9iamVjdFN0b3JlKHJlcXVlc3REYXRhLCBv
YmplY3RTdG9yZUluZm8pOworICAgIH0KK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6
OmRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0
RGF0YSwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUpCit7CisgICAgaWYgKGF1dG8gdHJh
bnNhY3Rpb24gPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+Z2V0VHJhbnNhY3Rpb24ocmVxdWVzdERh
dGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCkpKSB7CisgICAgICAgIEFTU0VSVCh0cmFuc2FjdGlv
bi0+aXNWZXJzaW9uQ2hhbmdlKCkpOworICAgICAgICB0cmFuc2FjdGlvbi0+ZGVsZXRlT2JqZWN0
U3RvcmUocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlTmFtZSk7CisgICAgfQorfQorCit2b2lkIE5l
dHdvcmtTdG9yYWdlTWFuYWdlcjo6cmVuYW1lT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6SURC
UmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgbmV3TmFtZSkKK3sKKyAgICBpZiAoYXV0byB0cmFuc2FjdGlvbiA9IG1f
aWRiU3RvcmFnZVJlZ2lzdHJ5LT5nZXRUcmFuc2FjdGlvbihyZXF1ZXN0RGF0YS50cmFuc2FjdGlv
bklkZW50aWZpZXIoKSkpIHsKKyAgICAgICAgQVNTRVJUKHRyYW5zYWN0aW9uLT5pc1ZlcnNpb25D
aGFuZ2UoKSk7CisgICAgICAgIHRyYW5zYWN0aW9uLT5yZW5hbWVPYmplY3RTdG9yZShyZXF1ZXN0
RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBuZXdOYW1lKTsKKyAgICB9Cit9CisKK3ZvaWQg
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjbGVhck9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklE
QlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVy
KQoreworICAgIGlmIChhdXRvIHRyYW5zYWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPmdl
dFRyYW5zYWN0aW9uKHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpKSkKKyAgICAg
ICAgdHJhbnNhY3Rpb24tPmNsZWFyT2JqZWN0U3RvcmUocmVxdWVzdERhdGEsIG9iamVjdFN0b3Jl
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVJbmRl
eChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IFdlYkNv
cmU6OklEQkluZGV4SW5mbyYgaW5kZXhJbmZvKQoreworICAgIGlmIChhdXRvIHRyYW5zYWN0aW9u
ID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPmdldFRyYW5zYWN0aW9uKHJlcXVlc3REYXRhLnRyYW5z
YWN0aW9uSWRlbnRpZmllcigpKSkKKyAgICAgICAgdHJhbnNhY3Rpb24tPmNyZWF0ZUluZGV4KHJl
cXVlc3REYXRhLCBpbmRleEluZm8pOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6
ZGVsZXRlSW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCB1
aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lKQor
eworICAgIGlmIChhdXRvIHRyYW5zYWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPmdldFRy
YW5zYWN0aW9uKHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpKSkKKyAgICAgICAg
dHJhbnNhY3Rpb24tPmRlbGV0ZUluZGV4KHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZp
ZXIsIGluZGV4TmFtZSk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpyZW5hbWVJ
bmRleChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIHVpbnQ2NF90
IG9iamVjdFN0b3JlSWRlbnRpZmllciwgdWludDY0X3QgaW5kZXhJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIG5ld05hbWUpCit7CisgICAgaWYgKGF1dG8gdHJhbnNhY3Rpb24gPSBtX2lkYlN0b3Jh
Z2VSZWdpc3RyeS0+Z2V0VHJhbnNhY3Rpb24ocmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlm
aWVyKCkpKQorICAgICAgICB0cmFuc2FjdGlvbi0+cmVuYW1lSW5kZXgocmVxdWVzdERhdGEsIG9i
amVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhJZGVudGlmaWVyLCBuZXdOYW1lKTsKK30KKwordm9p
ZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnB1dE9yQWRkKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBX
ZWJDb3JlOjpJREJLZXlEYXRhJiBrZXlEYXRhLCBjb25zdCBXZWJDb3JlOjpJREJWYWx1ZSYgdmFs
dWUsIFdlYkNvcmU6OkluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlIG92ZXJ3cml0
ZU1vZGUpCit7CisgICAgaWYgKHZhbHVlLmJsb2JVUkxzKCkuc2l6ZSgpICE9IHZhbHVlLmJsb2JG
aWxlUGF0aHMoKS5zaXplKCkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRkFVTFQoSW5kZXhlZERC
LCAiTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpwdXRPckFkZDogTnVtYmVyIG9mIGJsb2IgVVJMcyBk
b2Vzbid0IG1hdGNoIHRoZSBudW1iZXIgb2YgYmxvYiBmaWxlIHBhdGhzLiIpOworICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFZh
bGlkYXRlIHRlbXBvcmFyeSBibG9iIHBhdGhzIGluIHx2YWx1ZXwgdG8gbWFrZSBzdXJlIHRoZXkg
YmVsb25nIHRvIHRoZSBzb3VyY2UgcHJvY2Vzcy4KKyAgICBpZiAoIXZhbHVlLmJsb2JGaWxlUGF0
aHMoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgYXV0byBpdCA9IG1fdGVtcG9yYXJ5QmxvYlBhdGhz
QnlDb25uZWN0aW9uLmZpbmQoY29ubmVjdGlvbi51bmlxdWVJRCgpKTsKKyAgICAgICAgaWYgKGl0
ID09IG1fdGVtcG9yYXJ5QmxvYlBhdGhzQnlDb25uZWN0aW9uLmVuZCgpKSB7CisgICAgICAgICAg
ICBSRUxFQVNFX0xPR19GQVVMVChJbmRleGVkREIsICJOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnB1
dE9yQWRkOiBJREJWYWx1ZSBjb250YWlucyBibG9iIHBhdGhzIGJ1dCBub25lIGFyZSBhbGxvd2Vk
IGZvciB0aGlzIHByb2Nlc3MiKTsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgYXV0byYgdGVtcG9yYXJ5
QmxvYlBhdGhzRm9yQ29ubmVjdGlvbiA9IGl0LT52YWx1ZTsKKyAgICAgICAgZm9yIChhdXRvJiBi
bG9iRmlsZVBhdGggOiB2YWx1ZS5ibG9iRmlsZVBhdGhzKCkpIHsKKyAgICAgICAgICAgIGlmICgh
dGVtcG9yYXJ5QmxvYlBhdGhzRm9yQ29ubmVjdGlvbi5yZW1vdmUoYmxvYkZpbGVQYXRoKSkgewor
ICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0ZBVUxUKEluZGV4ZWREQiwgIk5ldHdvcmtTdG9y
YWdlTWFuYWdlcjo6cHV0T3JBZGQ6IEJsb2IgcGF0aCB3YXMgbm90IGNyZWF0ZWQgZm9yIHRoaXMg
V2ViUHJvY2VzcyIpOworICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKwor
ICAgIGlmIChhdXRvIHRyYW5zYWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPmdldFRyYW5z
YWN0aW9uKHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpKSkKKyAgICAgICAgdHJh
bnNhY3Rpb24tPnB1dE9yQWRkKHJlcXVlc3REYXRhLCBrZXlEYXRhLCB2YWx1ZSwgb3ZlcndyaXRl
TW9kZSk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpnZXRSZWNvcmQoY29uc3Qg
V2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBXZWJDb3JlOjpJREJH
ZXRSZWNvcmREYXRhJiBnZXRSZWNvcmREYXRhKQoreworICAgIGlmIChhdXRvIHRyYW5zYWN0aW9u
ID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPmdldFRyYW5zYWN0aW9uKHJlcXVlc3REYXRhLnRyYW5z
YWN0aW9uSWRlbnRpZmllcigpKSkKKyAgICAgICAgdHJhbnNhY3Rpb24tPmdldFJlY29yZChyZXF1
ZXN0RGF0YSwgZ2V0UmVjb3JkRGF0YSk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2Vy
OjpnZXRBbGxSZWNvcmRzKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0
YSwgY29uc3QgV2ViQ29yZTo6SURCR2V0QWxsUmVjb3Jkc0RhdGEmIGdldEFsbFJlY29yZHNEYXRh
KQoreworICAgIGlmIChhdXRvIHRyYW5zYWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPmdl
dFRyYW5zYWN0aW9uKHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpKSkKKyAgICAg
ICAgdHJhbnNhY3Rpb24tPmdldEFsbFJlY29yZHMocmVxdWVzdERhdGEsIGdldEFsbFJlY29yZHNE
YXRhKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmdldENvdW50KGNvbnN0IFdl
YkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgV2ViQ29yZTo6SURCS2V5
UmFuZ2VEYXRhJiBrZXlSYW5nZURhdGEpCit7CisgICAgaWYgKGF1dG8gdHJhbnNhY3Rpb24gPSBt
X2lkYlN0b3JhZ2VSZWdpc3RyeS0+Z2V0VHJhbnNhY3Rpb24ocmVxdWVzdERhdGEudHJhbnNhY3Rp
b25JZGVudGlmaWVyKCkpKQorICAgICAgICB0cmFuc2FjdGlvbi0+Z2V0Q291bnQocmVxdWVzdERh
dGEsIGtleVJhbmdlRGF0YSk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxl
dGVSZWNvcmQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25z
dCBXZWJDb3JlOjpJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlRGF0YSkKK3sKKyAgICBpZiAoYXV0
byB0cmFuc2FjdGlvbiA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT5nZXRUcmFuc2FjdGlvbihyZXF1
ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSkpCisgICAgICAgIHRyYW5zYWN0aW9uLT5k
ZWxldGVSZWNvcmQocmVxdWVzdERhdGEsIGtleVJhbmdlRGF0YSk7Cit9CisKK3ZvaWQgTmV0d29y
a1N0b3JhZ2VNYW5hZ2VyOjpvcGVuQ3Vyc29yKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRh
JiByZXF1ZXN0RGF0YSwgY29uc3QgV2ViQ29yZTo6SURCQ3Vyc29ySW5mbyYgY3Vyc29ySW5mbykK
K3sKKyAgICBpZiAoYXV0byB0cmFuc2FjdGlvbiA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT5nZXRU
cmFuc2FjdGlvbihyZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSkpCisgICAgICAg
IHRyYW5zYWN0aW9uLT5vcGVuQ3Vyc29yKHJlcXVlc3REYXRhLCBjdXJzb3JJbmZvKTsKK30KKwor
dm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Oml0ZXJhdGVDdXJzb3IoY29uc3QgV2ViQ29yZTo6
SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBXZWJDb3JlOjpJREJJdGVyYXRlQ3Vy
c29yRGF0YSYgY3Vyc29yRGF0YSkKK3sKKyAgICBpZiAoYXV0byB0cmFuc2FjdGlvbiA9IG1faWRi
U3RvcmFnZVJlZ2lzdHJ5LT5nZXRUcmFuc2FjdGlvbihyZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklk
ZW50aWZpZXIoKSkpCisgICAgICAgIHRyYW5zYWN0aW9uLT5pdGVyYXRlQ3Vyc29yKHJlcXVlc3RE
YXRhLCBjdXJzb3JEYXRhKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmdldEFs
bERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNv
bnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIGNv
bnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luKQoreworICAgIGF1dG8mIGNvbm5lY3Rp
b25Ub0NsaWVudCA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT5nZXRPckNyZWF0ZUNvbm5lY3Rpb25U
b0NsaWVudChjb25uZWN0aW9uLnVuaXF1ZUlEKCksIHJlcXVlc3RJZGVudGlmaWVyLmNvbm5lY3Rp
b25JZGVudGlmaWVyKCkpOworICAgIGF1dG8gcmVzdWx0ID0gbG9jYWxPcmlnaW5TdG9yYWdlTWFu
YWdlcihvcmlnaW4pLmlkYlN0b3JhZ2VNYW5hZ2VyKCptX2lkYlN0b3JhZ2VSZWdpc3RyeSkuZ2V0
QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKCk7CisgICAgY29ubmVjdGlvblRvQ2xpZW50LmRp
ZEdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhyZXF1ZXN0SWRlbnRpZmllciwgV1RGTW92
ZShyZXN1bHQpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIu
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1h
bmFnZXIuaAppbmRleCAxNWMwMzcyZTY2YTdmNjI4NDk5MjdmMWMzN2YxNmE2OTU4N2Y0NTAxLi45
YzNkMmQ2NDA2ZmVlOWIyYjRlNmNhMjZmN2I2NWZlMGM3OGI4M2JkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdl
TWFuYWdlci5oCkBAIC0zNiw2ICszNiw4IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9DbGllbnRPcmln
aW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL0lEQlJlc291cmNlSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvSW5kZXhlZERCLmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CiAKQEAgLTQ0LDE4ICs0NiwzMSBAQCBjbGFzcyBTaGFyZWRGaWxlSGFu
ZGxlOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBJREJDdXJzb3JJbmZvOworY2xh
c3MgSURCS2V5RGF0YTsKK2NsYXNzIElEQkluZGV4SW5mbzsKK2NsYXNzIElEQk9iamVjdFN0b3Jl
SW5mbzsKK2NsYXNzIElEQlJlcXVlc3REYXRhOworY2xhc3MgSURCVHJhbnNhY3Rpb25JbmZvOwor
Y2xhc3MgSURCVmFsdWU7CiBzdHJ1Y3QgQ2xpZW50T3JpZ2luOworc3RydWN0IElEQkdldEFsbFJl
Y29yZHNEYXRhOworc3RydWN0IElEQkdldFJlY29yZERhdGE7CitzdHJ1Y3QgSURCR2V0QWxsUmVj
b3Jkc0RhdGE7CitzdHJ1Y3QgSURCSXRlcmF0ZUN1cnNvckRhdGE7CitzdHJ1Y3QgSURCS2V5UmFu
Z2VEYXRhOwogZW51bSBjbGFzcyBTdG9yYWdlVHlwZSA6IHVpbnQ4X3Q7CiB9CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiBjbGFzcyBGaWxlU3lzdGVtU3RvcmFnZUhhbmRsZVJlZ2lzdHJ5OworY2xh
c3MgSURCU3RvcmFnZVJlZ2lzdHJ5OwogY2xhc3MgU3RvcmFnZUFyZWFSZWdpc3RyeTsKIAogY2xh
c3MgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyIGZpbmFsIDogcHVibGljIElQQzo6Q29ubmVjdGlvbjo6
V29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPE5ldHdv
cmtTdG9yYWdlTWFuYWdlcj4gY3JlYXRlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHBh
dGgsIGNvbnN0IFN0cmluZyYgY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCk7CisgICAgc3RhdGljIFJl
ZjxOZXR3b3JrU3RvcmFnZU1hbmFnZXI+IGNyZWF0ZShQQUw6OlNlc3Npb25JRCwgSVBDOjpDb25u
ZWN0aW9uOjpVbmlxdWVJRCwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGN1c3Rv
bUxvY2FsU3RvcmFnZVBhdGgsIGNvbnN0IFN0cmluZyYgY3VzdG9tSURCU3RvcmFnZVBhdGgsIGNv
bnN0IFN0cmluZyYgY3VzdG9tQ2FjaGVTdG9yYWdlUGF0aCwgdWludDY0X3QgZGVmYXVsdE9yaWdp
blF1b3RhLCB1aW50NjRfdCBkZWZhdWx0VGhpcmRQYXJ0eU9yaWdpblF1b3RhKTsKICAgICBzdGF0
aWMgYm9vbCBjYW5IYW5kbGVUeXBlcyhPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPik7CiAKICAg
ICB2b2lkIHN0YXJ0UmVjZWl2aW5nTWVzc2FnZUZyb21Db25uZWN0aW9uKElQQzo6Q29ubmVjdGlv
biYpOwpAQCAtNjQsNiArNzksNyBAQCBwdWJsaWM6CiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklEKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KICAgICB2b2lkIGNsb3NlKCk7CiAg
ICAgdm9pZCBjbGVhclN0b3JhZ2VGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CisgICAgdm9pZCBkaWRJbmNyZWFzZVF1b3RhKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdp
biYsIFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gbmV3UXVvdGEpOwogICAgIHZvaWQgZmV0Y2hEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5
cGU+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJzaXRlRGF0YTo6RW50cnk+JiYp
PiYmKTsKICAgICB2b2lkIGRlbGV0ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIGNv
bnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGRlbGV0ZURhdGFNb2RpZmllZFNpbmNlKE9wdGlvblNl
dDxXZWJzaXRlRGF0YVR5cGU+LCBXYWxsVGltZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKQEAgLTczLDE0ICs4OSwxOCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXN1bWUoKTsKICAgICB2
b2lkIGhhbmRsZUxvd01lbW9yeVdhcm5pbmcoKTsKICAgICB2b2lkIHN5bmNMb2NhbFN0b3JhZ2Uo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHJlZ2lzdGVyVGVtcG9yYXJ5
QmxvYkZpbGVQYXRocyhJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpOwor
ICAgIHZvaWQgcmVxdWVzdFNwYWNlKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIHVpbnQ2
NF90IHNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgcmVz
ZXRRdW90YUZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lk
IHJlc2V0UXVvdGFVcGRhdGVkQmFzZWRPblVzYWdlRm9yVGVzdGluZyhjb25zdCBXZWJDb3JlOjpD
bGllbnRPcmlnaW4mKTsKIAogcHJpdmF0ZToKICAgICBOZXR3b3JrU3RvcmFnZU1hbmFnZXIoUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21Mb2Nh
bFN0b3JhZ2VQYXRoKTsKKyAgICBOZXR3b3JrU3RvcmFnZU1hbmFnZXIoUEFMOjpTZXNzaW9uSUQs
IElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3Ry
aW5nJiBjdXN0b21Mb2NhbFN0b3JhZ2VQYXRoLCBjb25zdCBTdHJpbmcmIGN1c3RvbUlEQlN0b3Jh
Z2VQYXRoLCBjb25zdCBTdHJpbmcmIGN1c3RvbUNhY2hlU3RvcmFnZVBhdGgsIHVpbnQ2NF90IGRl
ZmF1bHRPcmlnaW5RdW90YSwgdWludDY0X3QgZGVmYXVsdFRoaXJkUGFydHlPcmlnaW5RdW90YSk7
CiAgICAgfk5ldHdvcmtTdG9yYWdlTWFuYWdlcigpOwogICAgIE9yaWdpblN0b3JhZ2VNYW5hZ2Vy
JiBsb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2VyKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYp
OwogICAgIGJvb2wgcmVtb3ZlT3JpZ2luU3RvcmFnZU1hbmFnZXJJZlBvc3NpYmxlKGNvbnN0IFdl
YkNvcmU6OkNsaWVudE9yaWdpbiYpOwogICAgIHZvaWQgZGVsZXRlT3JpZ2luRGlyZWN0b3J5SWZQ
b3NzaWJsZShjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKLSAgICBGaWxlU3lzdGVtU3Rv
cmFnZUhhbmRsZVJlZ2lzdHJ5JiBmaWxlU3lzdGVtU3RvcmFnZUhhbmRsZVJlZ2lzdHJ5KCk7CiAK
ICAgICB2b2lkIGZvckVhY2hPcmlnaW5EaXJlY3RvcnkoY29uc3QgRnVuY3Rpb248dm9pZChjb25z
dCBTdHJpbmcmKT4mKTsKICAgICBIYXNoU2V0PFdlYkNvcmU6OkNsaWVudE9yaWdpbj4gZ2V0QWxs
T3JpZ2lucygpOwpAQCAtMTE4LDYgKzEzOCwzNCBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVtb3Zl
SXRlbShJUEM6OkNvbm5lY3Rpb24mLCBTdG9yYWdlQXJlYUlkZW50aWZpZXIsIFN0b3JhZ2VBcmVh
SW1wbElkZW50aWZpZXIsIFN0cmluZyYmIGtleSwgU3RyaW5nJiYgdXJsU3RyaW5nLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgY2xlYXIoSVBDOjpDb25uZWN0aW9uJiwg
U3RvcmFnZUFyZWFJZGVudGlmaWVyLCBTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyLCBTdHJpbmcm
JiB1cmxTdHJpbmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKKyAgICAvLyBNZXNz
YWdlIGhhbmRsZXJzIGZvciBJbmRleGVkREIuCisgICAgdm9pZCBvcGVuRGF0YWJhc2UoSVBDOjpD
b25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmKTsKKyAgICB2b2lkIG9w
ZW5EQlJlcXVlc3RDYW5jZWxsZWQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmKTsKKyAg
ICB2b2lkIGRlbGV0ZURhdGFiYXNlKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OklE
QlJlcXVlc3REYXRhJik7CisgICAgdm9pZCBlc3RhYmxpc2hUcmFuc2FjdGlvbih1aW50NjRfdCBk
YXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJREJUcmFuc2FjdGlv
bkluZm8mKTsKKyAgICB2b2lkIGRhdGFiYXNlQ29ubmVjdGlvblBlbmRpbmdDbG9zZSh1aW50NjRf
dCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKTsKKyAgICB2b2lkIGRhdGFiYXNlQ29ubmVj
dGlvbkNsb3NlZCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKTsKKyAgICB2
b2lkIGFib3J0T3BlbkFuZFVwZ3JhZGVOZWVkZWQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9u
SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2Fj
dGlvbklkZW50aWZpZXIpOworICAgIHZvaWQgZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudCh1aW50
NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJREJSZXNv
dXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJbmRleGVk
REI6OkNvbm5lY3Rpb25DbG9zZWRPbkJlaGFsZk9mU2VydmVyKTsKKyAgICB2b2lkIGFib3J0VHJh
bnNhY3Rpb24oY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJik7CisgICAgdm9p
ZCBjb21taXRUcmFuc2FjdGlvbihjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXIm
LCB1aW50NjRfdCBwZW5kaW5nUmVxdWVzdENvdW50KTsKKyAgICB2b2lkIGRpZEZpbmlzaEhhbmRs
aW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklk
ZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYpOworICAgIHZv
aWQgY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmLCBjb25z
dCBXZWJDb3JlOjpJREJPYmplY3RTdG9yZUluZm8mKTsKKyAgICB2b2lkIGRlbGV0ZU9iamVjdFN0
b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiwgY29uc3QgU3RyaW5nJiBvYmplY3RT
dG9yZU5hbWUpOworICAgIHZvaWQgcmVuYW1lT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6SURC
UmVxdWVzdERhdGEmLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgbmV3TmFtZSk7CisgICAgdm9pZCBjbGVhck9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklE
QlJlcXVlc3REYXRhJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKKyAgICB2b2lk
IGNyZWF0ZUluZGV4KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiwgY29uc3QgV2ViQ29y
ZTo6SURCSW5kZXhJbmZvJik7CisgICAgdm9pZCBkZWxldGVJbmRleChjb25zdCBXZWJDb3JlOjpJ
REJSZXF1ZXN0RGF0YSYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBpbmRleE5hbWUpOworICAgIHZvaWQgcmVuYW1lSW5kZXgoY29uc3QgV2ViQ29yZTo6SURC
UmVxdWVzdERhdGEmLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90IGlu
ZGV4SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lKTsKKyAgICB2b2lkIHB1dE9yQWRk
KElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiwgY29uc3Qg
V2ViQ29yZTo6SURCS2V5RGF0YSYsIGNvbnN0IFdlYkNvcmU6OklEQlZhbHVlJiwgV2ViQ29yZTo6
SW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUpOworICAgIHZvaWQgZ2V0UmVjb3Jk
KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiwgY29uc3QgV2ViQ29yZTo6SURCR2V0UmVj
b3JkRGF0YSYpOworICAgIHZvaWQgZ2V0QWxsUmVjb3Jkcyhjb25zdCBXZWJDb3JlOjpJREJSZXF1
ZXN0RGF0YSYsIGNvbnN0IFdlYkNvcmU6OklEQkdldEFsbFJlY29yZHNEYXRhJik7CisgICAgdm9p
ZCBnZXRDb3VudChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IFdlYkNvcmU6
OklEQktleVJhbmdlRGF0YSYpOworICAgIHZvaWQgZGVsZXRlUmVjb3JkKGNvbnN0IFdlYkNvcmU6
OklEQlJlcXVlc3REYXRhJiwgY29uc3QgV2ViQ29yZTo6SURCS2V5UmFuZ2VEYXRhJik7CisgICAg
dm9pZCBvcGVuQ3Vyc29yKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiwgY29uc3QgV2Vi
Q29yZTo6SURCQ3Vyc29ySW5mbyYpOworICAgIHZvaWQgaXRlcmF0ZUN1cnNvcihjb25zdCBXZWJD
b3JlOjpJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IFdlYkNvcmU6OklEQkl0ZXJhdGVDdXJzb3JEYXRh
Jik7CisgICAgdm9pZCBnZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMoSVBDOjpDb25uZWN0
aW9uJiwgY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiwgY29uc3QgV2ViQ29y
ZTo6Q2xpZW50T3JpZ2luJik7CisKICAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKICAg
ICBSZWY8U3VzcGVuZGFibGVXb3JrUXVldWU+IG1fcXVldWU7CiAgICAgU3RyaW5nIG1fcGF0aDsK
QEAgLTEyNyw3ICsxNzUsMTQgQEAgcHJpdmF0ZToKICAgICBXZWFrSGFzaFNldDxJUEM6OkNvbm5l
Y3Rpb24+IG1fY29ubmVjdGlvbnM7IC8vIE1haW4gdGhyZWFkIG9ubHkuCiAgICAgc3RkOjp1bmlx
dWVfcHRyPEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnk+IG1fZmlsZVN5c3RlbVN0b3Jh
Z2VIYW5kbGVSZWdpc3RyeTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U3RvcmFnZUFyZWFSZWdpc3Ry
eT4gbV9zdG9yYWdlQXJlYVJlZ2lzdHJ5OworICAgIHN0ZDo6dW5pcXVlX3B0cjxJREJTdG9yYWdl
UmVnaXN0cnk+IG1faWRiU3RvcmFnZVJlZ2lzdHJ5OwogICAgIFN0cmluZyBtX2N1c3RvbUxvY2Fs
U3RvcmFnZVBhdGg7CisgICAgU3RyaW5nIG1fY3VzdG9tSURCU3RvcmFnZVBhdGg7CisgICAgU3Ry
aW5nIG1fY3VzdG9tQ2FjaGVTdG9yYWdlUGF0aDsKKyAgICB1aW50NjRfdCBtX2RlZmF1bHRPcmln
aW5RdW90YTsKKyAgICB1aW50NjRfdCBtX2RlZmF1bHRUaGlyZFBhcnR5T3JpZ2luUXVvdGE7Cisg
ICAgSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBtX3BhcmVudENvbm5lY3Rpb247CisgICAgSGFz
aE1hcDxJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBIYXNoU2V0PFN0cmluZz4+IG1fdGVtcG9y
YXJ5QmxvYlBhdGhzQnlDb25uZWN0aW9uOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0
b3JhZ2VNYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
dG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5tZXNzYWdlcy5pbgppbmRleCA1MGI5NjcwMWIw
NzBkZDVjMzI3MTFkYjE0Mjc5MzAzZmU2NTIxMWI3Li40NzMwNWUwZTk4MWNhNWNmYWUwNzc0MjZi
ZjI0Yjc4MTVhNGQ2NGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIubWVzc2Fn
ZXMuaW4KQEAgLTQ3LDQgKzQ3LDMxIEBACiAgICAgU2V0SXRlbShXZWJLaXQ6OlN0b3JhZ2VBcmVh
SWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXIg
aW1wbElkZW50aWZpZXIsIFN0cmluZyBrZXksIFN0cmluZyB2YWx1ZSwgU3RyaW5nIHVybFN0cmlu
ZykgLT4gKGJvb2wgcXVvdGFFeGNlcHRpb24pIEFzeW5jIFdhbnRzQ29ubmVjdGlvbgogICAgIFJl
bW92ZUl0ZW0oV2ViS2l0OjpTdG9yYWdlQXJlYUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViS2l0
OjpTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyIGltcGxJZGVudGlmaWVyLCBTdHJpbmcga2V5LCBT
dHJpbmcgdXJsU3RyaW5nKSAtPiAoKSBBc3luYyBXYW50c0Nvbm5lY3Rpb24KICAgICBDbGVhcihX
ZWJLaXQ6OlN0b3JhZ2VBcmVhSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJLaXQ6OlN0b3JhZ2VB
cmVhSW1wbElkZW50aWZpZXIgaW1wbElkZW50aWZpZXIsIFN0cmluZyB1cmxTdHJpbmcpIC0+ICgp
IEFzeW5jIFdhbnRzQ29ubmVjdGlvbgorCisgICAgT3BlbkRhdGFiYXNlKFdlYkNvcmU6OklEQlJl
cXVlc3REYXRhIHJlcXVlc3REYXRhKSBXYW50c0Nvbm5lY3Rpb24KKyAgICBPcGVuREJSZXF1ZXN0
Q2FuY2VsbGVkKFdlYkNvcmU6OklEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhKQorICAgIERlbGV0
ZURhdGFiYXNlKFdlYkNvcmU6OklEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhKSBXYW50c0Nvbm5l
Y3Rpb24KKyAgICBFc3RhYmxpc2hUcmFuc2FjdGlvbih1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rp
b25JZGVudGlmaWVyLCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkluZm8gaW5mbykKKyAgICBEYXRh
YmFzZUNvbm5lY3Rpb25QZW5kaW5nQ2xvc2UodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRl
bnRpZmllcikKKyAgICBEYXRhYmFzZUNvbm5lY3Rpb25DbG9zZWQodWludDY0X3QgZGF0YWJhc2VD
b25uZWN0aW9uSWRlbnRpZmllcikKKyAgICBBYm9ydE9wZW5BbmRVcGdyYWRlTmVlZGVkKHVpbnQ2
NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OklEQlJlc291cmNlSWRl
bnRpZmllciB0cmFuc2FjdGlvbklkZW50aWZpZXIpCisgICAgRGlkRmlyZVZlcnNpb25DaGFuZ2VF
dmVudCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpJREJS
ZXNvdXJjZUlkZW50aWZpZXIgcmVxdWVzdElkZW50aWZpZXIsIFdlYkNvcmU6OkluZGV4ZWREQjo6
Q29ubmVjdGlvbkNsb3NlZE9uQmVoYWxmT2ZTZXJ2ZXIgY29ubmVjdGlvbkNsb3NlZE9uQmVoYWxm
T2ZTZXJ2ZXIpCisgICAgRGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24o
dWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6SURCUmVzb3Vy
Y2VJZGVudGlmaWVyIHRyYW5zYWN0aW9uSWRlbnRpZmllcikKKyAgICBBYm9ydFRyYW5zYWN0aW9u
KFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciB0cmFuc2FjdGlvbklkZW50aWZpZXIpCisg
ICAgQ29tbWl0VHJhbnNhY3Rpb24oV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyIHRyYW5z
YWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgcGVuZGluZ1JlcXVlc3RDb3VudCkKKyAgICBDcmVh
dGVPYmplY3RTdG9yZShXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YSwgV2ViQ29y
ZTo6SURCT2JqZWN0U3RvcmVJbmZvIGluZm8pCisgICAgRGVsZXRlT2JqZWN0U3RvcmUoV2ViQ29y
ZTo6SURCUmVxdWVzdERhdGEgcmVxdWVzdERhdGEsIFN0cmluZyBvYmplY3RTdG9yZU5hbWUpCisg
ICAgUmVuYW1lT2JqZWN0U3RvcmUoV2ViQ29yZTo6SURCUmVxdWVzdERhdGEgcmVxdWVzdERhdGEs
IHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgU3RyaW5nIG5ld05hbWUpCisgICAgQ2xl
YXJPYmplY3RTdG9yZShXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YSwgdWludDY0
X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyKQorICAgIENyZWF0ZUluZGV4KFdlYkNvcmU6OklEQlJl
cXVlc3REYXRhIHJlcXVlc3REYXRhLCBXZWJDb3JlOjpJREJJbmRleEluZm8gaW5mbykKKyAgICBE
ZWxldGVJbmRleChXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YSwgdWludDY0X3Qg
b2JqZWN0U3RvcmVJZGVudGlmaWVyLCBTdHJpbmcgaW5kZXhOYW1lKQorICAgIFJlbmFtZUluZGV4
KFdlYkNvcmU6OklEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhLCB1aW50NjRfdCBvYmplY3RTdG9y
ZUlkZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciwgU3RyaW5nIG5ld05hbWUpCisg
ICAgUHV0T3JBZGQoV2ViQ29yZTo6SURCUmVxdWVzdERhdGEgcmVxdWVzdERhdGEsIFdlYkNvcmU6
OklEQktleURhdGEga2V5LCBXZWJDb3JlOjpJREJWYWx1ZSB2YWx1ZSwgV2ViQ29yZTo6SW5kZXhl
ZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUgb3ZlcndyaXRlTW9kZSkgV2FudHNDb25uZWN0
aW9uCisgICAgR2V0UmVjb3JkKFdlYkNvcmU6OklEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhLCBz
dHJ1Y3QgV2ViQ29yZTo6SURCR2V0UmVjb3JkRGF0YSBnZXRSZWNvcmREYXRhKQorICAgIEdldEFs
bFJlY29yZHMoV2ViQ29yZTo6SURCUmVxdWVzdERhdGEgcmVxdWVzdERhdGEsIHN0cnVjdCBXZWJD
b3JlOjpJREJHZXRBbGxSZWNvcmRzRGF0YSBnZXRBbGxSZWNvcmRzRGF0YSkKKyAgICBHZXRDb3Vu
dChXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YSwgc3RydWN0IFdlYkNvcmU6OklE
QktleVJhbmdlRGF0YSByYW5nZSkKKyAgICBEZWxldGVSZWNvcmQoV2ViQ29yZTo6SURCUmVxdWVz
dERhdGEgcmVxdWVzdERhdGEsIHN0cnVjdCBXZWJDb3JlOjpJREJLZXlSYW5nZURhdGEgcmFuZ2Up
CisgICAgT3BlbkN1cnNvcihXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YSwgV2Vi
Q29yZTo6SURCQ3Vyc29ySW5mbyBpbmZvKQorICAgIEl0ZXJhdGVDdXJzb3IoV2ViQ29yZTo6SURC
UmVxdWVzdERhdGEgcmVxdWVzdERhdGEsIHN0cnVjdCBXZWJDb3JlOjpJREJJdGVyYXRlQ3Vyc29y
RGF0YSBkYXRhKQorICAgIEdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhXZWJDb3JlOjpJ
REJSZXNvdXJjZUlkZW50aWZpZXIgcmVxdWVzdElkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpD
bGllbnRPcmlnaW4gb3JpZ2luKSBXYW50c0Nvbm5lY3Rpb24KIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFn
ZXIuY3BwCmluZGV4IDIzNGMwOWFiMjk1NTg0YmRhODliZTc0ZTkzODM2ZGZjYTFlYTgyZGUuLjk2
NTRiY2Q1ZWE4NTE2NmE5Y2EzNzE3OGEwYWM4MTEyNTFlYmVjYWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VN
YW5hZ2VyLmNwcApAQCAtMjYsOCArMjYsMTEgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJPcmlnaW5TdG9yYWdlTWFuYWdlci5oIgogCisjaW5jbHVkZSAiQ2FjaGVTdG9yYWdlRW5n
aW5lLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeS5oIgogI2lu
Y2x1ZGUgIkZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlci5oIgorI2luY2x1ZGUgIklEQlN0b3JhZ2VN
YW5hZ2VyLmgiCisjaW5jbHVkZSAiSURCU3RvcmFnZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiTG9j
YWxTdG9yYWdlTWFuYWdlci5oIgogI2luY2x1ZGUgIk1lbW9yeVN0b3JhZ2VBcmVhLmgiCiAjaW5j
bHVkZSAiU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyLmgiCkBAIC00NCwxMCArNDcsMTEgQEAgZW51bSBj
bGFzcyBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldE1vZGUgOiBib29sIHsgQmVz
dEVmZm9ydCwgUGVyc2lzdGUKIGNsYXNzIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVj
a2V0IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBTdG9yYWdl
QnVja2V0KGNvbnN0IFN0cmluZyYgcm9vdFBhdGgsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VQYXRoKQorICAgIFN0b3JhZ2VCdWNrZXQoY29uc3Qg
U3RyaW5nJiByb290UGF0aCwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IGxvY2FsU3RvcmFnZVBhdGgsIGNvbnN0IFN0cmluZyYgaWRiU3RvcmFnZVBhdGgpCiAgICAgICAg
IDogbV9yb290UGF0aChyb290UGF0aCkKICAgICAgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmll
cikKICAgICAgICAgLCBtX2xvY2FsU3RvcmFnZVBhdGgobG9jYWxTdG9yYWdlUGF0aCkKKyAgICAg
ICAgLCBtX2lkYlN0b3JhZ2VQYXRoKGlkYlN0b3JhZ2VQYXRoKQogICAgIHsKICAgICB9CiAKQEAg
LTcwLDYgKzc0LDcgQEAgcHVibGljOgogICAgICAgICBGaWxlU3lzdGVtLAogICAgICAgICBMb2Nh
bFN0b3JhZ2UsCiAgICAgICAgIFNlc3Npb25TdG9yYWdlLAorICAgICAgICBJbmRleGVkREIsCiAg
ICAgfTsKIAogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVEYXRhVHlwZT4gdG9XZWJz
aXRlRGF0YVR5cGUoY29uc3QgU3RyaW5nJiBzdG9yYWdlSWRlbnRpZmllcikKQEAgLTgwLDYgKzg1
LDggQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIFdlYnNpdGVEYXRhVHlwZTo6TG9jYWxT
dG9yYWdlOwogICAgICAgICBpZiAoc3RvcmFnZUlkZW50aWZpZXIgPT0gIlNlc3Npb25TdG9yYWdl
Il9zKQogICAgICAgICAgICAgcmV0dXJuIFdlYnNpdGVEYXRhVHlwZTo6U2Vzc2lvblN0b3JhZ2U7
CisgICAgICAgIGlmIChzdG9yYWdlSWRlbnRpZmllciA9PSAiSW5kZXhlZERCIl9zKQorICAgICAg
ICAgICAgcmV0dXJuIFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzOwogCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQpAQCAtOTMsNiArMTAwLDggQEAgcHVibGlj
OgogICAgICAgICAgICAgcmV0dXJuICJMb2NhbFN0b3JhZ2UiX3M7CiAgICAgICAgIGNhc2UgU3Rv
cmFnZVR5cGU6OlNlc3Npb25TdG9yYWdlOgogICAgICAgICAgICAgcmV0dXJuICJTZXNzaW9uU3Rv
cmFnZSJfczsKKyAgICAgICAgY2FzZSBTdG9yYWdlVHlwZTo6SW5kZXhlZERCOgorICAgICAgICAg
ICAgcmV0dXJuICJJbmRleGVkREIiX3M7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQpAQCAtMTQzLDEzICsxNTIsMjcgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gbV9zZXNzaW9uU3RvcmFnZU1hbmFnZXIuZ2V0KCk7CiAgICAgfQogCisgICAgSURCU3Rv
cmFnZU1hbmFnZXImIGlkYlN0b3JhZ2VNYW5hZ2VyKElEQlN0b3JhZ2VSZWdpc3RyeSYgcmVnaXN0
cnksIElEQlN0b3JhZ2VNYW5hZ2VyOjpRdW90YUNoZWNrRnVuY3Rpb24mJiBxdW90YUNoZWNrRnVu
Y3Rpb24pCisgICAgeworICAgICAgICBpZiAoIW1faWRiU3RvcmFnZU1hbmFnZXIpCisgICAgICAg
ICAgICBtX2lkYlN0b3JhZ2VNYW5hZ2VyID0gbWFrZVVuaXF1ZTxJREJTdG9yYWdlTWFuYWdlcj4o
bV9pZGJTdG9yYWdlUGF0aCwgcmVnaXN0cnksIFdURk1vdmUocXVvdGFDaGVja0Z1bmN0aW9uKSk7
CisKKyAgICAgICAgcmV0dXJuICptX2lkYlN0b3JhZ2VNYW5hZ2VyOworICAgIH0KKworICAgIElE
QlN0b3JhZ2VNYW5hZ2VyKiBleGlzdGluZ0lEQlN0b3JhZ2VNYW5hZ2VyKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBtX2lkYlN0b3JhZ2VNYW5hZ2VyLmdldCgpOworICAgIH0KKwogICAgIGJvb2wg
aXNBY3RpdmUoKSBjb25zdAogICAgIHsKICAgICAgICAgLy8gV2UgY2Fubm90IHJlbW92ZSB0aGUg
YnVja2V0IGlmIGl0IGhhcyBpbi1tZW1vcnkgZGF0YSwgb3RoZXJ3aXNlIHNlc3Npb24KICAgICAg
ICAgLy8gZGF0YSBtYXkgYmUgbG9zdC4KICAgICAgICAgcmV0dXJuIChtX2ZpbGVTeXN0ZW1TdG9y
YWdlTWFuYWdlciAmJiBtX2ZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlci0+aXNBY3RpdmUoKSkKICAg
ICAgICAgICAgIHx8IChtX2xvY2FsU3RvcmFnZU1hbmFnZXIgJiYgKG1fbG9jYWxTdG9yYWdlTWFu
YWdlci0+aGFzRGF0YUluTWVtb3J5KCkgfHwgbV9sb2NhbFN0b3JhZ2VNYW5hZ2VyLT5pc0FjdGl2
ZSgpKSkKLSAgICAgICAgICAgIHx8IChtX3Nlc3Npb25TdG9yYWdlTWFuYWdlciAmJiAobV9zZXNz
aW9uU3RvcmFnZU1hbmFnZXItPmhhc0RhdGFJbk1lbW9yeSgpIHx8IG1fc2Vzc2lvblN0b3JhZ2VN
YW5hZ2VyLT5pc0FjdGl2ZSgpKSk7CisgICAgICAgICAgICB8fCAobV9zZXNzaW9uU3RvcmFnZU1h
bmFnZXIgJiYgKG1fc2Vzc2lvblN0b3JhZ2VNYW5hZ2VyLT5oYXNEYXRhSW5NZW1vcnkoKSB8fCBt
X3Nlc3Npb25TdG9yYWdlTWFuYWdlci0+aXNBY3RpdmUoKSkpCisgICAgICAgICAgICB8fCAobV9p
ZGJTdG9yYWdlTWFuYWdlciAmJiAobV9pZGJTdG9yYWdlTWFuYWdlci0+aGFzRGF0YUluTWVtb3J5
KCkgfHwgbV9pZGJTdG9yYWdlTWFuYWdlci0+aXNBY3RpdmUoKSkpOwogICAgIH0KIAogICAgIGJv
b2wgaXNFbXB0eSgpIGNvbnN0CkBAIC0xNjUsNyArMTg4LDggQEAgcHVibGljOgogICAgICAgICBp
ZiAoaGFzVmFsaWRGaWxlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIHJl
dHVybiAhRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhtX2xvY2FsU3RvcmFnZVBhdGgpOworICAgICAg
ICBGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeShtX2lkYlN0b3JhZ2VQYXRoKTsKKyAg
ICAgICAgcmV0dXJuICFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG1fbG9jYWxTdG9yYWdlUGF0aCkg
JiYgIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobV9pZGJTdG9yYWdlUGF0aCk7CiAgICAgfQogCiAg
ICAgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZmV0Y2hEYXRhVHlwZXNJbkxpc3QoT3B0aW9u
U2V0PFdlYnNpdGVEYXRhVHlwZT4gdHlwZXMpCkBAIC0xODYsOSArMjEwLDEyIEBAIHB1YmxpYzoK
IAogICAgICAgICBpZiAodHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpTZXNzaW9uU3Rv
cmFnZSkgJiYgbW9kaWZpZWRTaW5jZVRpbWUgPCBXYWxsVGltZTo6bm93KCkpCiAgICAgICAgICAg
ICBkZWxldGVTZXNzaW9uU3RvcmFnZURhdGEoKTsKKworICAgICAgICBpZiAodHlwZXMuY29udGFp
bnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpKQorICAgICAgICAgICAgZGVs
ZXRlSURCU3RvcmFnZURhdGEobW9kaWZpZWRTaW5jZVRpbWUpOwogICAgIH0KIAotICAgIHZvaWQg
bW92ZURhdGEoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZVBh
dGgpCisgICAgdm9pZCBtb3ZlRGF0YShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYg
bG9jYWxTdG9yYWdlUGF0aCwgY29uc3QgU3RyaW5nJiBpZGJTdG9yYWdlUGF0aCkKICAgICB7CiAg
ICAgICAgIG1fZmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyID0gbnVsbHB0cjsKICAgICAgICAgaWYg
KG1fbG9jYWxTdG9yYWdlTWFuYWdlcikKQEAgLTIwMSw2ICsyMjgsMTEgQEAgcHVibGljOgogICAg
ICAgICAgICAgRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKEZpbGVTeXN0ZW06OnBhcmVu
dFBhdGgobG9jYWxTdG9yYWdlUGF0aCkpOwogICAgICAgICAgICAgV2ViQ29yZTo6U1FMaXRlRmls
ZVN5c3RlbTo6bW92ZURhdGFiYXNlRmlsZShtX2xvY2FsU3RvcmFnZVBhdGgsIGxvY2FsU3RvcmFn
ZVBhdGgpOwogICAgICAgICB9CisKKyAgICAgICAgaWYgKCFtX2lkYlN0b3JhZ2VQYXRoLmlzRW1w
dHkoKSAmJiAhaWRiU3RvcmFnZVBhdGguaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBGaWxlU3lz
dGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoRmlsZVN5c3RlbTo6cGFyZW50UGF0aChpZGJTdG9yYWdl
UGF0aCkpOworICAgICAgICAgICAgV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6bW92ZURhdGFi
YXNlRmlsZShtX2lkYlN0b3JhZ2VQYXRoLCBpZGJTdG9yYWdlUGF0aCk7CisgICAgICAgIH0KICAg
ICB9CiAKIHByaXZhdGU6CkBAIC0yMTcsNiArMjQ5LDExIEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgcmVzdWx0LmFkZChXZWJzaXRlRGF0YVR5cGU6OlNlc3Npb25TdG9yYWdlKTsKICAgICAg
ICAgfQogCisgICAgICAgIGlmICh0eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4
ZWREQkRhdGFiYXNlcykpIHsKKyAgICAgICAgICAgIGlmIChtX2lkYlN0b3JhZ2VNYW5hZ2VyICYm
IG1faWRiU3RvcmFnZU1hbmFnZXItPmhhc0RhdGFJbk1lbW9yeSgpKQorICAgICAgICAgICAgICAg
IHJlc3VsdC5hZGQoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpOworICAgICAg
ICB9CisKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKQEAgLTIzMyw2ICsyNzAsMTEg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICByZXN1bHQuYWRkKFdlYnNpdGVEYXRhVHlwZTo6
TG9jYWxTdG9yYWdlKTsKICAgICAgICAgfQogCisgICAgICAgIGlmICh0eXBlcy5jb250YWlucyhX
ZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykgJiYgIXJlc3VsdC5jb250YWlucyhX
ZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykpIHsKKyAgICAgICAgICAgIGlmIChh
dXRvIGRhdGFiYXNlcyA9IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobV9pZGJTdG9yYWdlUGF0
aCk7ICFkYXRhYmFzZXMuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQoV2Vi
c2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpOworICAgICAgICB9CisKICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICB9CiAKQEAgLTI3MCw2ICszMTIsMTQgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgIG1fc2Vzc2lvblN0b3JhZ2VNYW5hZ2VyID0gbnVsbHB0cjsKICAgICB9CiAgICAg
CisgICAgdm9pZCBkZWxldGVJREJTdG9yYWdlRGF0YShXYWxsVGltZSB0aW1lKQorICAgIHsKKyAg
ICAgICAgaWYgKG1faWRiU3RvcmFnZU1hbmFnZXIpCisgICAgICAgICAgICBtX2lkYlN0b3JhZ2VN
YW5hZ2VyLT5jbG9zZURhdGFiYXNlc0ZvckRlbGV0aW9uKCk7CisKKyAgICAgICAgRmlsZVN5c3Rl
bTo6ZGVsZXRlQWxsRmlsZXNNb2RpZmllZFNpbmNlKG1faWRiU3RvcmFnZVBhdGgsIHRpbWUpOwor
ICAgIH0KKyAgICAKICAgICBTdHJpbmcgbV9yb290UGF0aDsKICAgICBTdHJpbmcgbV9pZGVudGlm
aWVyOwogICAgIFN0b3JhZ2VCdWNrZXRNb2RlIG1fbW9kZSB7IFN0b3JhZ2VCdWNrZXRNb2RlOjpC
ZXN0RWZmb3J0IH07CkBAIC0yNzcsMTEgKzMyNywyNCBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5p
cXVlX3B0cjxMb2NhbFN0b3JhZ2VNYW5hZ2VyPiBtX2xvY2FsU3RvcmFnZU1hbmFnZXI7CiAgICAg
U3RyaW5nIG1fbG9jYWxTdG9yYWdlUGF0aDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2Vzc2lvblN0
b3JhZ2VNYW5hZ2VyPiBtX3Nlc3Npb25TdG9yYWdlTWFuYWdlcjsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8SURCU3RvcmFnZU1hbmFnZXI+IG1faWRiU3RvcmFnZU1hbmFnZXI7CisgICAgU3RyaW5nIG1f
aWRiU3RvcmFnZVBhdGg7CiB9OwogCi1PcmlnaW5TdG9yYWdlTWFuYWdlcjo6T3JpZ2luU3RvcmFn
ZU1hbmFnZXIoU3RyaW5nJiYgcGF0aCwgU3RyaW5nJiYgbG9jYWxTdG9yYWdlUGF0aCkKK3N0YXRp
YyBSZWY8UXVvdGFNYW5hZ2VyPiBjcmVhdGVRdW90YU1hbmFnZXIodWludDY0X3QgcXVvdGEsIGNv
bnN0IFN0cmluZyYgaWRiU3RvcmFnZVBhdGgsIGNvbnN0IFN0cmluZyYgY2FjaGVTdG9yYWdlUGF0
aCwgUXVvdGFNYW5hZ2VyOjpJbmNyZWFzZVF1b3RhRnVuY3Rpb24mJiBpbmNyZWFzZVF1b3RhRnVu
Y3Rpb24pCit7CisgICAgUXVvdGFNYW5hZ2VyOjpHZXRVc2FnZUZ1bmN0aW9uIGdldFVzYWdlRnVu
Y3Rpb24gPSBbaWRiU3RvcmFnZVBhdGgsIGNhY2hlU3RvcmFnZVBhdGhdKCkgeworICAgICAgICBy
ZXR1cm4gSURCU3RvcmFnZU1hbmFnZXI6OmlkYlN0b3JhZ2VTaXplKGlkYlN0b3JhZ2VQYXRoKSAr
IENhY2hlU3RvcmFnZTo6RW5naW5lOjpkaXNrVXNhZ2UoY2FjaGVTdG9yYWdlUGF0aCk7CisgICAg
fTsKKyAgICByZXR1cm4gUXVvdGFNYW5hZ2VyOjpjcmVhdGUocXVvdGEsIFdURk1vdmUoZ2V0VXNh
Z2VGdW5jdGlvbiksIFdURk1vdmUoaW5jcmVhc2VRdW90YUZ1bmN0aW9uKSk7Cit9CisKK09yaWdp
blN0b3JhZ2VNYW5hZ2VyOjpPcmlnaW5TdG9yYWdlTWFuYWdlcih1aW50NjRfdCBxdW90YSwgUXVv
dGFNYW5hZ2VyOjpJbmNyZWFzZVF1b3RhRnVuY3Rpb24mJiBpbmNyZWFzZVF1b3RhRnVuY3Rpb24s
IFN0cmluZyYmIHBhdGgsIFN0cmluZyYmIGxvY2FsU3RvcmFnZVBhdGgsIFN0cmluZyYmIGlkYlN0
b3JhZ2VQYXRoLCBTdHJpbmcmJiBjYWNoZVN0b3JhZ2VQYXRoKQogICAgIDogbV9wYXRoKFdURk1v
dmUocGF0aCkpCiAgICAgLCBtX2xvY2FsU3RvcmFnZVBhdGgoV1RGTW92ZShsb2NhbFN0b3JhZ2VQ
YXRoKSkKKyAgICAsIG1faWRiU3RvcmFnZVBhdGgoV1RGTW92ZShpZGJTdG9yYWdlUGF0aCkpCisg
ICAgLCBtX2NhY2hlU3RvcmFnZVBhdGgoV1RGTW92ZShjYWNoZVN0b3JhZ2VQYXRoKSkKKyAgICAs
IG1fcXVvdGFNYW5hZ2VyKGNyZWF0ZVF1b3RhTWFuYWdlcihxdW90YSwgbV9pZGJTdG9yYWdlUGF0
aCwgbV9jYWNoZVN0b3JhZ2VQYXRoLCBXVEZNb3ZlKGluY3JlYXNlUXVvdGFGdW5jdGlvbikpKQog
ewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogfQpAQCAtMjk3LDExICszNjAsMTYg
QEAgdm9pZCBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6Y29ubmVjdGlvbkNsb3NlZChJUEM6OkNvbm5l
Y3Rpb246OlVuaXF1ZUlEIGNvbm5lY3Rpb24KIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdl
QnVja2V0JiBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6ZGVmYXVsdEJ1Y2tldCgpCiB7CiAgICAgaWYg
KCFtX2RlZmF1bHRCdWNrZXQpCi0gICAgICAgIG1fZGVmYXVsdEJ1Y2tldCA9IG1ha2VVbmlxdWU8
U3RvcmFnZUJ1Y2tldD4obV9wYXRoLCAiZGVmYXVsdCJfcywgbV9sb2NhbFN0b3JhZ2VQYXRoKTsK
KyAgICAgICAgbV9kZWZhdWx0QnVja2V0ID0gbWFrZVVuaXF1ZTxTdG9yYWdlQnVja2V0PihtX3Bh
dGgsICJkZWZhdWx0Il9zLCBtX2xvY2FsU3RvcmFnZVBhdGgsIG1faWRiU3RvcmFnZVBhdGgpOwog
CiAgICAgcmV0dXJuICptX2RlZmF1bHRCdWNrZXQ7CiB9CiAKK1F1b3RhTWFuYWdlciYgT3JpZ2lu
U3RvcmFnZU1hbmFnZXI6OnF1b3RhTWFuYWdlcigpCit7CisgICAgcmV0dXJuIG1fcXVvdGFNYW5h
Z2VyLmdldCgpOworfQorCiBGaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXImIE9yaWdpblN0b3JhZ2VN
YW5hZ2VyOjpmaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIoRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVS
ZWdpc3RyeSYgcmVnaXN0cnkpCiB7CiAgICAgcmV0dXJuIGRlZmF1bHRCdWNrZXQoKS5maWxlU3lz
dGVtU3RvcmFnZU1hbmFnZXIocmVnaXN0cnkpOwpAQCAtMzI3LDYgKzM5NSwyMyBAQCBTZXNzaW9u
U3RvcmFnZU1hbmFnZXIqIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpleGlzdGluZ1Nlc3Npb25TdG9y
YWdlTWFuYWdlcigpCiAgICAgcmV0dXJuIGRlZmF1bHRCdWNrZXQoKS5leGlzdGluZ1Nlc3Npb25T
dG9yYWdlTWFuYWdlcigpOwogfQogCitJREJTdG9yYWdlTWFuYWdlciYgT3JpZ2luU3RvcmFnZU1h
bmFnZXI6OmlkYlN0b3JhZ2VNYW5hZ2VyKElEQlN0b3JhZ2VSZWdpc3RyeSYgcmVnaXN0cnkpCit7
CisgICAgcmV0dXJuIGRlZmF1bHRCdWNrZXQoKS5pZGJTdG9yYWdlTWFuYWdlcihyZWdpc3RyeSwg
W3F1b3RhTWFuYWdlciA9IFdlYWtQdHIgeyB0aGlzLT5xdW90YU1hbmFnZXIoKSB9XSh1aW50NjRf
dCBzcGFjZVJlcXVlc3RlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikgbXV0YWJsZSB7CisgICAgICAgIGlmICghcXVvdGFNYW5hZ2VyKQorICAgICAg
ICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKworICAgICAgICBxdW90YU1h
bmFnZXItPnJlcXVlc3RTcGFjZShzcGFjZVJlcXVlc3RlZCwgW2NvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1dG8gZGVjaXNpb24pIG11dGFibGUgeworICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZGVjaXNpb24gPT0gUXVvdGFNYW5hZ2VyOjpEZWNp
c2lvbjo6R3JhbnQpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKworSURCU3RvcmFnZU1hbmFn
ZXIqIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpleGlzdGluZ0lEQlN0b3JhZ2VNYW5hZ2VyKCkKK3sK
KyAgICByZXR1cm4gZGVmYXVsdEJ1Y2tldCgpLmV4aXN0aW5nSURCU3RvcmFnZU1hbmFnZXIoKTsK
K30KKwogYm9vbCBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6aXNBY3RpdmUoKQogewogICAgIHJldHVy
biBkZWZhdWx0QnVja2V0KCkuaXNBY3RpdmUoKTsKQEAgLTM1OSwxMSArNDQ0LDExIEBAIHZvaWQg
T3JpZ2luU3RvcmFnZU1hbmFnZXI6OmRlbGV0ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlw
ZT4gdHlwZXMsIFdhbGxUaW1lCiAgICAgZGVmYXVsdEJ1Y2tldCgpLmRlbGV0ZURhdGEodHlwZXMs
IG1vZGlmaWVkU2luY2UpOwogfQogCi12b2lkIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjptb3ZlRGF0
YShjb25zdCBTdHJpbmcmIG5ld1BhdGgsIGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlUGF0aCkK
K3ZvaWQgT3JpZ2luU3RvcmFnZU1hbmFnZXI6Om1vdmVEYXRhKGNvbnN0IFN0cmluZyYgbmV3UGF0
aCwgY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VQYXRoLCBjb25zdCBTdHJpbmcmIGlkYlN0b3Jh
Z2VQYXRoKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgZGVmYXVs
dEJ1Y2tldCgpLm1vdmVEYXRhKG5ld1BhdGgsIGxvY2FsU3RvcmFnZVBhdGgpOworICAgIGRlZmF1
bHRCdWNrZXQoKS5tb3ZlRGF0YShuZXdQYXRoLCBsb2NhbFN0b3JhZ2VQYXRoLCBpZGJTdG9yYWdl
UGF0aCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2VyLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuaApp
bmRleCA1ZTc2Njk5ODZlNDY2ODVmMzg5YjdhNTI3MWU2NmQwZTYzYzJkMTllLi5lYzQ2YzU0YjMx
MTFmYjAxYjNjZTY5NjkyMDdjMTNiZTVkOTk5ZDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuaApA
QCAtMjYsMTYgKzI2LDE1IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24u
aCIKKyNpbmNsdWRlICJRdW90YU1hbmFnZXIuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgewotc3RydWN0IENsaWVudE9yaWdpbjsKLX0KLQog
bmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0
cnk7CiBjbGFzcyBGaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXI7CitjbGFzcyBJREJTdG9yYWdlTWFu
YWdlcjsKK2NsYXNzIElEQlN0b3JhZ2VSZWdpc3RyeTsKIGNsYXNzIExvY2FsU3RvcmFnZU1hbmFn
ZXI7CiBjbGFzcyBTZXNzaW9uU3RvcmFnZU1hbmFnZXI7CiBjbGFzcyBTdG9yYWdlQXJlYVJlZ2lz
dHJ5OwpAQCAtNDQsMzUgKzQzLDM4IEBAIGVudW0gY2xhc3MgV2Vic2l0ZURhdGFUeXBlIDogdWlu
dDMyX3Q7CiBjbGFzcyBPcmlnaW5TdG9yYWdlTWFuYWdlciB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgT3JpZ2luU3RvcmFnZU1hbmFnZXIoU3RyaW5nJiYgcGF0
aCwgU3RyaW5nJiYgbG9jYWxTdG9yYWdlUGF0aCk7CisgICAgT3JpZ2luU3RvcmFnZU1hbmFnZXIo
dWludDY0X3QgcXVvdGEsIFF1b3RhTWFuYWdlcjo6SW5jcmVhc2VRdW90YUZ1bmN0aW9uJiYsIFN0
cmluZyYmIHBhdGgsIFN0cmluZyYmIGxvY2FsU3RvcmFnZVBhdGgsIFN0cmluZyYmIGlkYlN0b3Jh
Z2VQYXRoLCBTdHJpbmcmJiBjYWNoZVN0b3JhZ2VQYXRoKTsKICAgICB+T3JpZ2luU3RvcmFnZU1h
bmFnZXIoKTsKIAogICAgIHZvaWQgY29ubmVjdGlvbkNsb3NlZChJUEM6OkNvbm5lY3Rpb246OlVu
aXF1ZUlEKTsKICAgICBib29sIHBlcnNpc3RlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGVyc2lzdGVk
OyB9CiAgICAgdm9pZCBzZXRQZXJzaXN0ZWQoYm9vbCB2YWx1ZSk7CisgICAgUXVvdGFNYW5hZ2Vy
JiBxdW90YU1hbmFnZXIoKTsKICAgICBGaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXImIGZpbGVTeXN0
ZW1TdG9yYWdlTWFuYWdlcihGaWxlU3lzdGVtU3RvcmFnZUhhbmRsZVJlZ2lzdHJ5Jik7CiAgICAg
TG9jYWxTdG9yYWdlTWFuYWdlciYgbG9jYWxTdG9yYWdlTWFuYWdlcihTdG9yYWdlQXJlYVJlZ2lz
dHJ5Jik7CiAgICAgTG9jYWxTdG9yYWdlTWFuYWdlciogZXhpc3RpbmdMb2NhbFN0b3JhZ2VNYW5h
Z2VyKCk7CiAgICAgU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyJiBzZXNzaW9uU3RvcmFnZU1hbmFnZXIo
U3RvcmFnZUFyZWFSZWdpc3RyeSYpOwogICAgIFNlc3Npb25TdG9yYWdlTWFuYWdlciogZXhpc3Rp
bmdTZXNzaW9uU3RvcmFnZU1hbmFnZXIoKTsKKyAgICBJREJTdG9yYWdlTWFuYWdlciYgaWRiU3Rv
cmFnZU1hbmFnZXIoSURCU3RvcmFnZVJlZ2lzdHJ5Jik7CisgICAgSURCU3RvcmFnZU1hbmFnZXIq
IGV4aXN0aW5nSURCU3RvcmFnZU1hbmFnZXIoKTsKICAgICBib29sIGlzQWN0aXZlKCk7CiAgICAg
Ym9vbCBpc0VtcHR5KCk7CiAgICAgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZmV0Y2hEYXRh
VHlwZXNJbkxpc3QoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4pOwogICAgIHZvaWQgZGVsZXRl
RGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgV2FsbFRpbWUpOwotICAgIHZvaWQgbW92
ZURhdGEoY29uc3QgU3RyaW5nJiBuZXdQYXRoLCBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZVBh
dGgpOworICAgIHZvaWQgbW92ZURhdGEoY29uc3QgU3RyaW5nJiBuZXdQYXRoLCBjb25zdCBTdHJp
bmcmIGxvY2FsU3RvcmFnZVBhdGgsIGNvbnN0IFN0cmluZyYgaWRiU3RvcmFnZVBhdGgpOwogCiBw
cml2YXRlOgogICAgIGVudW0gY2xhc3MgU3RvcmFnZUJ1Y2tldE1vZGUgOiBib29sOwogICAgIGNs
YXNzIFN0b3JhZ2VCdWNrZXQ7CiAgICAgU3RvcmFnZUJ1Y2tldCYgZGVmYXVsdEJ1Y2tldCgpOwog
Ci0gICAgdm9pZCBjcmVhdGVPcmlnaW5GaWxlSWZOZWNlc3NhcnkoY29uc3QgV2ViQ29yZTo6Q2xp
ZW50T3JpZ2luJik7Ci0gICAgdm9pZCBkZWxldGVPcmlnaW5GaWxlSWZOZWNlc3NhcnkoKTsKLQog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxTdG9yYWdlQnVja2V0PiBtX2RlZmF1bHRCdWNrZXQ7CiAgICAg
U3RyaW5nIG1fcGF0aDsKICAgICBib29sIG1fcGVyc2lzdGVkIHsgZmFsc2UgfTsKICAgICBTdHJp
bmcgbV9sb2NhbFN0b3JhZ2VQYXRoOworICAgIFN0cmluZyBtX2lkYlN0b3JhZ2VQYXRoOworICAg
IFN0cmluZyBtX2NhY2hlU3RvcmFnZVBhdGg7CisgICAgUmVmPFF1b3RhTWFuYWdlcj4gbV9xdW90
YU1hbmFnZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9RdW90YU1hbmFnZXIuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1F1b3RhTWFuYWdlci5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYjQxNzg1M2JmYzI5MTNkNmU5MDE1ZWRhZmMyMWY2NGY4ZGFiZmUyOQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9RdW90YU1hbmFnZXIu
Y3BwCkBAIC0wLDAgKzEsMTM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlF1b3RhTWFuYWdlci5oIgorCisjaW5jbHVkZSA8d3RmL1Njb3BlLmg+CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitSZWY8UXVvdGFNYW5hZ2VyPiBRdW90YU1hbmFnZXI6OmNyZWF0
ZSh1aW50NjRfdCBxdW90YSwgR2V0VXNhZ2VGdW5jdGlvbiYmIGdldFVzYWdlRnVuY3Rpb24sIElu
Y3JlYXNlUXVvdGFGdW5jdGlvbiYmIGluY3JlYXNlUXVvdGFGdW5jdGlvbikKK3sKKyAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBRdW90YU1hbmFnZXIocXVvdGEsIFdURk1vdmUoZ2V0VXNhZ2VGdW5j
dGlvbiksIFdURk1vdmUoaW5jcmVhc2VRdW90YUZ1bmN0aW9uKSkpOworfQorCitRdW90YU1hbmFn
ZXI6OlF1b3RhTWFuYWdlcih1aW50NjRfdCBxdW90YSwgR2V0VXNhZ2VGdW5jdGlvbiYmIGdldFVz
YWdlRnVuY3Rpb24sIEluY3JlYXNlUXVvdGFGdW5jdGlvbiYmIGluY3JlYXNlUXVvdGFGdW5jdGlv
bikKKyAgICA6IG1fcXVvdGEocXVvdGEpCisgICAgLCBtX2luaXRpYWxRdW90YShxdW90YSkKKyAg
ICAsIG1fZ2V0VXNhZ2VGdW5jdGlvbihXVEZNb3ZlKGdldFVzYWdlRnVuY3Rpb24pKQorICAgICwg
bV9pbmNyZWFzZVF1b3RhRnVuY3Rpb24oV1RGTW92ZShpbmNyZWFzZVF1b3RhRnVuY3Rpb24pKQor
eworICAgIEFTU0VSVChtX3F1b3RhKTsKK30KKwordm9pZCBRdW90YU1hbmFnZXI6OnJlcXVlc3RT
cGFjZSh1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCwgUmVxdWVzdENhbGxiYWNrJiYgY2FsbGJhY2sp
Cit7CisgICAgbV9yZXF1ZXN0cy5hcHBlbmQoUXVvdGFNYW5hZ2VyOjpSZXF1ZXN0IHsgc3BhY2VS
ZXF1ZXN0ZWQsIFdURk1vdmUoY2FsbGJhY2spLCBRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZp
ZXIgeyB9IH0pOworICAgIGhhbmRsZVJlcXVlc3RzKCk7Cit9CisKK3ZvaWQgUXVvdGFNYW5hZ2Vy
OjpoYW5kbGVSZXF1ZXN0cygpCit7CisgICAgaWYgKG1fY3VycmVudFJlcXVlc3QpCisgICAgICAg
IHJldHVybjsKKworICAgIG1faXNIYW5kbGluZ1JlcXVlc3RzID0gdHJ1ZTsKKyAgICBhdXRvIGNs
ZWFySXNIYW5kbGluZ1JlcXVlc3RzID0gbWFrZVNjb3BlRXhpdChbJl0geworICAgICAgICBtX2lz
SGFuZGxpbmdSZXF1ZXN0cyA9IGZhbHNlOworICAgIH0pOworCisgICAgd2hpbGUgKCFtX2N1cnJl
bnRSZXF1ZXN0ICYmICFtX3JlcXVlc3RzLmlzRW1wdHkoKSkgeworICAgICAgICBtX2N1cnJlbnRS
ZXF1ZXN0ID0gbV9yZXF1ZXN0cy50YWtlRmlyc3QoKTsKKyAgICAgICAgaWYgKGdyYW50V2l0aEN1
cnJlbnRRdW90YShtX2N1cnJlbnRSZXF1ZXN0LT5zcGFjZVJlcXVlc3RlZCkpIHsKKyAgICAgICAg
ICAgIG1fY3VycmVudFJlcXVlc3QtPmNhbGxiYWNrKERlY2lzaW9uOjpHcmFudCk7CisgICAgICAg
ICAgICBtX2N1cnJlbnRSZXF1ZXN0ID0gc3RkOjpudWxsb3B0OworICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgIH0KKworICAgICAgICBtX2N1cnJlbnRSZXF1ZXN0LT5pZGVudGlmaWVyID0g
UXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyOjpnZW5lcmF0ZVRocmVhZFNhZmUoKTsKKyAg
ICAgICAgbV9pbmNyZWFzZVF1b3RhRnVuY3Rpb24obV9jdXJyZW50UmVxdWVzdC0+aWRlbnRpZmll
ciwgbV9xdW90YSwgKm1fdXNhZ2UsIG1fY3VycmVudFJlcXVlc3QtPnNwYWNlUmVxdWVzdGVkKTsK
KyAgICB9Cit9CisKK2Jvb2wgUXVvdGFNYW5hZ2VyOjpncmFudFdpdGhDdXJyZW50UXVvdGEodWlu
dDY0X3Qgc3BhY2VSZXF1ZXN0ZWQpCit7CisgICAgaWYgKGdyYW50RmFzdFBhdGgoc3BhY2VSZXF1
ZXN0ZWQpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIFdoZW4gUXVvdGFNYW5hZ2Vy
IGlzIHVzZWQgZm9yIHRoZSBmaXJzdCB0aW1lLCB3ZSB3YW50IHRvIG1ha2Ugc3VyZSBpdHMgaW5p
dGlhbCBxdW90YSBpcyBiaWdnZXIgdGhhbiBleGlzdGluZyBkaXNrIHVzYWdlLAorICAgIC8vIGJh
c2VkIG9uIHRoZSBhc3N1bXB0aW9uIHRoYXQgdGhlIHF1b3RhIHdhcyBpbmNyZWFzZWQgdG8gYXQg
bGVhc3QgdGhlIGRpc2sgdXNhZ2UgdW5kZXIgdXNlcidzIHBlcm1pc3Npb24gYmVmb3JlLgorICAg
IGJvb2wgc2hvdWxkVXBkYXRlUXVvdGFCYXNlZG9uVXNhZ2UgPSAhbV91c2FnZTsKKyAgICBtX3Vz
YWdlID0gbV9nZXRVc2FnZUZ1bmN0aW9uKCk7CisgICAgaWYgKHNob3VsZFVwZGF0ZVF1b3RhQmFz
ZWRvblVzYWdlKSB7CisgICAgICAgIGF1dG8gZGVmYXVsdFF1b3RhU3RlcCA9IG1fcXVvdGEgLyAx
MDsKKyAgICAgICAgbV9xdW90YSA9IHN0ZDo6bWF4KG1fcXVvdGEsIGRlZmF1bHRRdW90YVN0ZXAg
KiAoKCptX3VzYWdlIC8gZGVmYXVsdFF1b3RhU3RlcCkgKyAxKSk7CisgICAgfQorICAgIG1fcXVv
dGFDb3VudGRvd24gPSAqbV91c2FnZSA8IG1fcXVvdGEgPyBtX3F1b3RhIC0gKm1fdXNhZ2UgOiAw
OworCisgICAgcmV0dXJuIGdyYW50RmFzdFBhdGgoc3BhY2VSZXF1ZXN0ZWQpOworfQorCitib29s
IFF1b3RhTWFuYWdlcjo6Z3JhbnRGYXN0UGF0aCh1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCkKK3sK
KyAgICBpZiAoc3BhY2VSZXF1ZXN0ZWQgPD0gbV9xdW90YUNvdW50ZG93bikgeworICAgICAgICBt
X3F1b3RhQ291bnRkb3duIC09IHNwYWNlUmVxdWVzdGVkOworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgUXVvdGFNYW5hZ2VyOjpkaWRJ
bmNyZWFzZVF1b3RhKFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllciBpZGVudGlmaWVyLCBz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBuZXdRdW90YSkKK3sKKyAgICBpZiAoIW1fY3VycmVudFJl
cXVlc3QgfHwgbV9jdXJyZW50UmVxdWVzdC0+aWRlbnRpZmllciAhPSBpZGVudGlmaWVyKQorICAg
ICAgICByZXR1cm47CisKKyAgICBpZiAobmV3UXVvdGEpIHsKKyAgICAgICAgbV9xdW90YSA9ICpu
ZXdRdW90YTsKKyAgICAgICAgbV9xdW90YUNvdW50ZG93biA9IDA7IC8vIFJlY2FsY3VsYXRlIG1f
cXVvdGFDb3VudGRvd24gYmFzZWQgb24gdXNhZ2UuCisgICAgfQorCisgICAgYXV0byBkZWNpc2lv
biA9IGdyYW50V2l0aEN1cnJlbnRRdW90YShtX2N1cnJlbnRSZXF1ZXN0LT5zcGFjZVJlcXVlc3Rl
ZCkgPyBEZWNpc2lvbjo6R3JhbnQgOiBEZWNpc2lvbjo6RGVueTsKKyAgICBtX2N1cnJlbnRSZXF1
ZXN0LT5jYWxsYmFjayhkZWNpc2lvbik7CisgICAgbV9jdXJyZW50UmVxdWVzdCA9IHN0ZDo6bnVs
bG9wdDsKKworICAgIGlmICghbV9pc0hhbmRsaW5nUmVxdWVzdHMpCisgICAgICAgIGhhbmRsZVJl
cXVlc3RzKCk7Cit9CisKK3ZvaWQgUXVvdGFNYW5hZ2VyOjpyZXNldFF1b3RhVXBkYXRlZEJhc2Vk
T25Vc2FnZUZvclRlc3RpbmcoKQoreworICAgIG1fcXVvdGEgPSBtX2luaXRpYWxRdW90YTsKKyAg
ICBtX3F1b3RhQ291bnRkb3duID0gMDsKKyAgICBtX3VzYWdlID0gc3RkOjpudWxsb3B0OworfQor
Cit2b2lkIFF1b3RhTWFuYWdlcjo6cmVzZXRRdW90YUZvclRlc3RpbmcoKQoreworICAgIG1fcXVv
dGEgPSBtX2luaXRpYWxRdW90YTsKKyAgICBtX3F1b3RhQ291bnRkb3duID0gMDsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3N0b3JhZ2UvUXVvdGFNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3N0b3JhZ2UvUXVvdGFNYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzFlNTg0NTYyYTk1OWMxYzE5ODFk
N2YzZDEwZDJlM2ExMGNlNjFjYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvc3RvcmFnZS9RdW90YU1hbmFnZXIuaApAQCAtMCwwICsxLDcxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJRdW90YUluY3JlYXNlUmVxdWVzdElk
ZW50aWZpZXIuaCIKKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKyNpbmNsdWRl
IDx3dGYvRGVxdWUuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFF1b3RhTWFuYWdl
ciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxRdW90YU1hbmFnZXI+LCBwdWJsaWMgQ2Fu
TWFrZVdlYWtQdHI8UXVvdGFNYW5hZ2VyPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CitwdWJsaWM6CisgICAgdXNpbmcgR2V0VXNhZ2VGdW5jdGlvbiA9IEZ1bmN0aW9uPHVpbnQ2NF90
KCk+OworICAgIHVzaW5nIEluY3JlYXNlUXVvdGFGdW5jdGlvbiA9IEZ1bmN0aW9uPHZvaWQoUXVv
dGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2
NF90IGN1cnJlbnRVc2FnZSwgdWludDY0X3QgcmVxdWVzdGVkSW5jcmVhc2UpPjsKKyAgICBzdGF0
aWMgUmVmPFF1b3RhTWFuYWdlcj4gY3JlYXRlKHVpbnQ2NF90IHF1b3RhLCBHZXRVc2FnZUZ1bmN0
aW9uJiYsIEluY3JlYXNlUXVvdGFGdW5jdGlvbiYmKTsKKworICAgIGVudW0gY2xhc3MgRGVjaXNp
b24geyBEZW55LCBHcmFudCB9OworICAgIHVzaW5nIFJlcXVlc3RDYWxsYmFjayA9IENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoRGVjaXNpb24pPjsKKyAgICB2b2lkIHJlcXVlc3RTcGFjZSh1aW50NjRf
dCBzcGFjZVJlcXVlc3RlZCwgUmVxdWVzdENhbGxiYWNrJiYpOworICAgIHZvaWQgZGlkSW5jcmVh
c2VRdW90YShRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IG5ld1F1b3RhKTsKKworICAgIHZvaWQgcmVzZXRRdW90YVVwZGF0ZWRCYXNlZE9uVXNh
Z2VGb3JUZXN0aW5nKCk7CisgICAgdm9pZCByZXNldFF1b3RhRm9yVGVzdGluZygpOworCitwcml2
YXRlOgorICAgIFF1b3RhTWFuYWdlcih1aW50NjRfdCBxdW90YSwgR2V0VXNhZ2VGdW5jdGlvbiYm
LCBJbmNyZWFzZVF1b3RhRnVuY3Rpb24mJik7CisgICAgdm9pZCBoYW5kbGVSZXF1ZXN0cygpOwor
ICAgIGJvb2wgZ3JhbnRXaXRoQ3VycmVudFF1b3RhKHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkKTsK
KyAgICBib29sIGdyYW50RmFzdFBhdGgodWludDY0X3Qgc3BhY2VSZXF1ZXN0ZWQpOworCisgICAg
c3RydWN0IFJlcXVlc3QgeworICAgICAgICB1aW50NjRfdCBzcGFjZVJlcXVlc3RlZDsKKyAgICAg
ICAgUmVxdWVzdENhbGxiYWNrIGNhbGxiYWNrOworICAgICAgICBRdW90YUluY3JlYXNlUmVxdWVz
dElkZW50aWZpZXIgaWRlbnRpZmllcjsKKyAgICB9OworICAgIERlcXVlPFJlcXVlc3Q+IG1fcmVx
dWVzdHM7CisgICAgc3RkOjpvcHRpb25hbDxSZXF1ZXN0PiBtX2N1cnJlbnRSZXF1ZXN0OworICAg
IGJvb2wgbV9pc0hhbmRsaW5nUmVxdWVzdHMgeyBmYWxzZSB9OworICAgIHVpbnQ2NF90IG1fcXVv
dGFDb3VudGRvd24geyAwIH07CisgICAgdWludDY0X3QgbV9xdW90YTsKKyAgICB1aW50NjRfdCBt
X2luaXRpYWxRdW90YTsgLy8gVGVzdCBvbmx5LgorICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+
IG1fdXNhZ2U7CisgICAgR2V0VXNhZ2VGdW5jdGlvbiBtX2dldFVzYWdlRnVuY3Rpb247CisgICAg
SW5jcmVhc2VRdW90YUZ1bmN0aW9uIG1faW5jcmVhc2VRdW90YUZ1bmN0aW9uOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5w
eQppbmRleCA3ZWJmYTUxNmI1MDMzNmQzNjg3ZjdlY2RkMTdlOGU3ZWJkMWNkOWQ3Li42NDUzYTlk
MjkwMjMyN2VmYmIxYTAxNTM3OTZiMzZlYWM1ODY2YTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTI4Nyw2ICsyODcsNyBAQCBkZWYgdHlwZXNfdGhhdF9j
YW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgpOgogICAgICAgICAnV2ViQ29yZTo6TmF0aXZlSW1h
Z2VSZWZlcmVuY2UnLAogICAgICAgICAnV2ViQ29yZTo6UGFnZUlkZW50aWZpZXInLAogICAgICAg
ICAnV2ViQ29yZTo6UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllcicsCisgICAg
ICAgICdXZWJLaXQ6OlF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllcicsCiAgICAgICAgICdX
ZWJDb3JlOjpQbHVnaW5Mb2FkQ2xpZW50UG9saWN5JywKICAgICAgICAgJ1dlYkNvcmU6OlBvaW50
ZXJJRCcsCiAgICAgICAgICdXZWJDb3JlOjpQdXNoU3Vic2NyaXB0aW9uSWRlbnRpZmllcicsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9RdW90YUluY3JlYXNl
UmVxdWVzdElkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhL1F1
b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJlNDU0YjZhMDhiNjhh
MjBjNjUwZGM4OTc2MzI4NTU4YTM3MjAxZjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9RdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIuaApA
QCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3
dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBRdW90
YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIFF1b3RhSW5jcmVhc2VS
ZXF1ZXN0SWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8UXVvdGFJbmNyZWFzZVJlcXVlc3RJ
ZGVudGlmaWVyVHlwZT47CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmgKaW5kZXggMTUzYmY5M2Jk
ZjZmZjExYjQ2MGY2NDgyNWI0NTAzMDhiODQ1ZDM4ZC4uMjA5ODQ2ODE2Mjk5MDQ3MzM4ODRjZmNi
MTI3YWE1NzIxZDJjZWU4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0
ZURhdGFTdG9yZVBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRl
RGF0YVN0b3JlUGFyYW1ldGVycy5oCkBAIC03MSw4ICs3MSw4IEBAIHN0cnVjdCBXZWJzaXRlRGF0
YVN0b3JlUGFyYW1ldGVycyB7CiAgICAgU3RyaW5nIGdlbmVyYWxTdG9yYWdlRGlyZWN0b3J5Owog
ICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBnZW5lcmFsU3RvcmFnZURpcmVjdG9yeUhhbmRs
ZTsKIAotICAgIHVpbnQ2NF90IHBlck9yaWdpblN0b3JhZ2VRdW90YSB7IFdlYkNvcmU6OlN0b3Jh
Z2VRdW90YU1hbmFnZXI6OmRlZmF1bHRRdW90YSgpIH07Ci0gICAgdWludDY0X3QgcGVyVGhpcmRQ
YXJ0eU9yaWdpblN0b3JhZ2VRdW90YSB7IFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6OmRl
ZmF1bHRUaGlyZFBhcnR5UXVvdGEoKSB9OworICAgIHVpbnQ2NF90IHBlck9yaWdpblN0b3JhZ2VR
dW90YTsKKyAgICB1aW50NjRfdCBwZXJUaGlyZFBhcnR5T3JpZ2luU3RvcmFnZVF1b3RhOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCA1N2VmM2IxNGVhZjJjMTA5
MjA5OGVlOTQzMmY1MDhjNjExZTU4ZTM1Li42YTY2OWJiMDBlYzFhOTZhZWZhNjNkNDhiMTdlYjQy
NWUwZmU3ZTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1Nv
dXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTE0NCwxMCArMTQ0LDE0IEBAIE5ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBAbm8t
dW5pZnkKIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyLmNw
cAogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZUhhbmRsZS5jcHAKIE5l
dHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeS5jcHAK
K05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5jcHAK
K05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZU1hbmFnZXIuY3BwCitOZXR3b3JrUHJv
Y2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VSZWdpc3RyeS5jcHAKIE5ldHdvcmtQcm9jZXNzL3N0b3Jh
Z2UvTG9jYWxTdG9yYWdlTWFuYWdlci5jcHAKIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTWVtb3J5
U3RvcmFnZUFyZWEuY3BwCiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFu
YWdlci5jcHAKIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuY3Bw
CitOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1F1b3RhTWFuYWdlci5jcHAKIE5ldHdvcmtQcm9jZXNz
L3N0b3JhZ2UvU1FMaXRlU3RvcmFnZUFyZWEuY3BwCiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1Nl
c3Npb25TdG9yYWdlTWFuYWdlci5jcHAKIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU3RvcmFnZUFy
ZWFCYXNlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggYTY3ODM2N2E3NzVhNDliYTgxYjI0ODhjZjMx
ZWFiOWRjY2NjYzkyMS4uMTk1NDYyNzg3N2Q4NGNhMDhiNTcyMDBjYzg2MmU5M2QyMzMwNDM3OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuY3BwCkBAIC0xNDk1LDYgKzE0OTUsMTYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpyZXF1ZXN0U3RvcmFnZVNwYWNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29u
c3QgV2UKICAgICB9KTsKIH0KIAordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjppbmNyZWFzZVF1
b3RhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2lu
JiBvcmlnaW4sIFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllciBpZGVudGlmaWVyLCB1aW50
NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRVc2FnZSwgdWludDY0X3Qgc3BhY2VS
ZXF1ZXN0ZWQpCit7CisgICAgcmVxdWVzdFN0b3JhZ2VTcGFjZShzZXNzaW9uSUQsIG9yaWdpbiwg
Y3VycmVudFF1b3RhLCBjdXJyZW50VXNhZ2UsIHNwYWNlUmVxdWVzdGVkLCBbdGhpcywgd2Vha1Ro
aXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgc2Vzc2lvbklELCBvcmlnaW4sIGlkZW50aWZpZXJdKGF1
dG8gcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RGlkSW5j
cmVhc2VRdW90YShzZXNzaW9uSUQsIG9yaWdpbiwgaWRlbnRpZmllciwgcmVzdWx0KSwgMCk7Cisg
ICAgfSk7Cit9CisKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVnaXN0ZXJTY2hlbWVGb3JM
ZWdhY3lDdXN0b21Qcm90b2NvbChjb25zdCBTdHJpbmcmIHNjaGVtZSkKIHsKICNpZiBFTkFCTEUo
TEVHQUNZX0NVU1RPTV9QUk9UT0NPTF9NQU5BR0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCBhNGUzNjQ1ZWJh
YWUzMzZkMTgwYjU0MTRiYWZhYTM1ZDgzZjkxOGM0Li4yNDFmOGU0OWQ1ZWJmOTI0ZDU3NDEyODA4
OWYxMGMyZDhlYmRlOWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUg
IlByb2Nlc3NMYXVuY2hlci5oIgogI2luY2x1ZGUgIlByb2Nlc3NUaHJvdHRsZXIuaCIKICNpbmNs
dWRlICJQcm9jZXNzVGhyb3R0bGVyQ2xpZW50LmgiCisjaW5jbHVkZSAiUXVvdGFJbmNyZWFzZVJl
cXVlc3RJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRp
Zmllci5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzUmVwbGllcy5oIgogI2lu
Y2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKQEAgLTM0MCw2ICszNDEsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgdHJpZ2dlckJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRm9yTmF2aWdhdGlvbihX
ZWJQYWdlUHJveHlJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OkJy
b3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb24sIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluJiByZXNwb25zZURvbWFpbiwgTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIg
ZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wgc3VjY2Vzcyk+JiYpOwogCiAgICAgdm9pZCByZXF1ZXN0U3RvcmFn
ZVNwYWNlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCB1aW50
NjRfdCBxdW90YSwgdWludDY0X3QgY3VycmVudFNpemUsIHVpbnQ2NF90IHNwYWNlUmVxdWlyZWQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcXVvdGEpPiYm
KTsKKyAgICB2b2lkIGluY3JlYXNlUXVvdGEoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6
OkNsaWVudE9yaWdpbiYsIFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3Qg
Y3VycmVudFF1b3RhLCB1aW50NjRfdCBjdXJyZW50VXNhZ2UsIHVpbnQ2NF90IHNwYWNlUmVxdWVz
dGVkKTsKIAogICAgIFdlYnNpdGVEYXRhU3RvcmUqIHdlYnNpdGVEYXRhU3RvcmVGcm9tU2Vzc2lv
bklEKFBBTDo6U2Vzc2lvbklEKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCmluZGV4
IDEyZDA2Y2ViZDYyYWYxNzUwZTc4ODU1OWMxM2ExYjM5ODNmZGQyYmEuLjY4YzMyYzRmMzFlYTFh
MThlODMwMDQ0MzI3ZDUwYjg0Mjk1MzY0MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMu
aW4KQEAgLTY4LDYgKzY4LDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NQcm94eSBMZWdh
Y3lSZWNlaXZlciB7CiAjZW5kaWYKIAogICAgIFJlcXVlc3RTdG9yYWdlU3BhY2UoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBzdHJ1Y3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbiwgdWlu
dDY0X3QgcXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRTaXplLCB1aW50NjRfdCBzcGFjZVJlcXVpcmVk
KSAtPiAoc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbmV3UXVvdGEpIEFzeW5jCisgICAgSW5jcmVh
c2VRdW90YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0cnVjdCBXZWJDb3JlOjpDbGllbnRP
cmlnaW4gb3JpZ2luLCBXZWJLaXQ6OlF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllciBpZGVu
dGlmaWVyLCB1aW50NjRfdCBxdW90YSwgdWludDY0X3QgY3VycmVudFNpemUsIHVpbnQ2NF90IHNw
YWNlUmVxdWVzdGVkKQogICAgIAogICAgIFJlc291cmNlTG9hZERpZFNlbmRSZXF1ZXN0KFdlYktp
dDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSWRlbnRpZmllciwgc3RydWN0IFdlYktpdDo6
UmVzb3VyY2VMb2FkSW5mbyByZXNvdXJjZUxvYWRJbmZvLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QgcmVxdWVzdCwgc3RkOjpvcHRpb25hbDxJUEM6OkZvcm1EYXRhUmVmZXJlbmNlPiBodHRwQm9k
eSkKICAgICBSZXNvdXJjZUxvYWREaWRQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYktpdDo6V2Vi
UGFnZVByb3h5SWRlbnRpZmllciBwYWdlSWRlbnRpZmllciwgc3RydWN0IFdlYktpdDo6UmVzb3Vy
Y2VMb2FkSW5mbyByZXNvdXJjZUxvYWRJbmZvLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJl
c291cmNlUmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlLmNwcAppbmRleCAwOGNlY2ZlYmZlMGRlNDRiMWY1YTRiNTAxMTQwNWUxZmQ4MTUwOWZlLi4x
MzI5MDU1NzJmNGI4YzNkMDc5NTgzNDMxNDhjMmZiNTY4M2ZlZmIyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNw
cApAQCAtMTcxNiw3ICsxNzE2LDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpkaXNwYXRjaE9u
UXVldWUoRnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uKQogdWludDY0X3QgV2Vic2l0ZURhdGFT
dG9yZTo6cGVyVGhpcmRQYXJ0eU9yaWdpblN0b3JhZ2VRdW90YSgpIGNvbnN0CiB7CiAgICAgLy8g
RklYTUU6IENvbnNpZGVyIHdoZXRoZXIgYWxsb3dpbmcgdG8gc2V0IGEgcGVyVGhpcmRQYXJ0eU9y
aWdpblN0b3JhZ2VRdW90YSBmcm9tIGEgV2Vic2l0ZURhdGFTdG9yZS4KLSAgICByZXR1cm4gV2Vi
Q29yZTo6U3RvcmFnZVF1b3RhTWFuYWdlcjo6ZGVmYXVsdFRoaXJkUGFydHlRdW90YUZyb21QZXJP
cmlnaW5RdW90YShwZXJPcmlnaW5TdG9yYWdlUXVvdGEoKSk7CisgICAgcmV0dXJuIHBlck9yaWdp
blN0b3JhZ2VRdW90YSgpIC8gMTA7CiB9CiAKIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0Q2Fj
aGVNb2RlbFN5bmNocm9ub3VzbHlGb3JUZXN0aW5nKENhY2hlTW9kZWwgY2FjaGVNb2RlbCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmUuaAppbmRleCA2YmM2OTM2OWMzMzgzMjg2OWRlYTFmNWRhYTUwZTc5ZmFhNmU3YmY5Li44
NWVlMzFlMTM4M2Q5N2Q2NDZjNjk4YzJkZWY3ZDljMzM0YWI3NWJlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCkBA
IC0zNTAsNiArMzUwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0
RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCk7CiAgICAgc3RhdGljIFdURjo6U3Ry
aW5nIGRlZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpOwogICAgIHN0YXRp
YyBib29sIGh0dHAzRW5hYmxlZCgpOworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDY0X3QgZGVm
YXVsdFBlck9yaWdpblF1b3RhKCkgeyByZXR1cm4gMTAwMCAqIE1COyB9CiAKICAgICB2b2lkIHJl
c2V0UXVvdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGNsZWFyU3Rv
cmFnZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24u
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24uY3BwCmluZGV4IGJlYTc1NzljZGZjZTA3OGI2NzU0OGExZDAxZGJmN2E0
N2Y2ZjdhODkuLmE5NjIyNmZiMjQ2NDYxN2JhNWNiNTFhMjU0YmU5MTIwMmRkNTkxYjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKQEAgLTMzLDYgKzMzLDcgQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiAKIFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpXZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbihJc1BlcnNpc3RlbnQgaXNQZXJzaXN0ZW50LCBXaWxs
Q29weVBhdGhzRnJvbUV4aXN0aW5nQ29uZmlndXJhdGlvbiB3aWxsQ29weVBhdGhzKQogICAgIDog
bV9pc1BlcnNpc3RlbnQoaXNQZXJzaXN0ZW50KQorICAgICwgbV9wZXJPcmlnaW5TdG9yYWdlUXVv
dGEoV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFBlck9yaWdpblF1b3RhKCkpCiB7CiAgICAgaWYg
KGlzUGVyc2lzdGVudCA9PSBJc1BlcnNpc3RlbnQ6OlllcyAmJiB3aWxsQ29weVBhdGhzID09IFdp
bGxDb3B5UGF0aHNGcm9tRXhpc3RpbmdDb25maWd1cmF0aW9uOjpObykgewogICAgICAgICBzZXRB
cHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNh
dGlvbkNhY2hlRGlyZWN0b3J5KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
LmgKaW5kZXggZjE3MWFkNGNlNWUxYjVjZTEzOTRlYzc4MDk1MjQxMDdmODJjMTc0YS4uMzBhMjk5
MzEwMjI3ZDJmNzI0ZjQyNTc2YjY2MTI1NDdiOTYxY2YyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24u
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbi5oCkBAIC0yNiw3ICsyNiw2IEBACiAjcHJhZ21hIG9uY2UKIAogI2lu
Y2x1ZGUgIkFQSU9iamVjdC5oIgotI2luY2x1ZGUgPFdlYkNvcmUvU3RvcmFnZVF1b3RhTWFuYWdl
ci5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIApAQCAtMjA3LDcgKzIwNiw3IEBAIHByaXZhdGU6CiAKICAgICBTdHJpbmcgbV9jYWNoZVN0
b3JhZ2VEaXJlY3Rvcnk7CiAgICAgU3RyaW5nIG1fZ2VuZXJhbFN0b3JhZ2VEaXJlY3Rvcnk7Ci0g
ICAgdWludDY0X3QgbV9wZXJPcmlnaW5TdG9yYWdlUXVvdGEgeyBXZWJDb3JlOjpTdG9yYWdlUXVv
dGFNYW5hZ2VyOjpkZWZhdWx0UXVvdGEoKSB9OworICAgIHVpbnQ2NF90IG1fcGVyT3JpZ2luU3Rv
cmFnZVF1b3RhOwogICAgIFN0cmluZyBtX25ldHdvcmtDYWNoZURpcmVjdG9yeTsKICAgICBTdHJp
bmcgbV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5OwogICAgIFN0cmluZyBtX2FwcGxpY2F0aW9u
Q2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUgeyAiRmlsZXMiX3MgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGE1NmY3MDMxZGYx
MjQ0ZDIyNTVmYjVlZmVhNTZhOGMxZTY1OTE5YzAuLmI0YjMyM2Y1ZTAyMjA4MWFlOWRhMjc4YWQx
M2MxN2I5ZTQ2ODM2NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMTQ2OCw2ICsxNDY4LDExIEBACiAJCTkzQjI2MTREMjI3RDE0OUUw
MEI5N0E3NiAvKiBTdG9yYWdlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTNCMjYxNDkyMjdEMTQ3MjAwQjk3QTc2IC8qIFN0b3JhZ2VNYW5h
Z2VyLmggKi87IH07CiAJCTkzQjI2MTRFMjI3RDE0QjEwMEI5N0E3NiAvKiBMb2NhbFN0b3JhZ2VE
YXRhYmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTNCMjYxNDUyMjdEMTQ3MDAwQjk3QTc2IC8qIExvY2FsU3RvcmFnZURhdGFiYXNlLmggKi87IH07
CiAJCTkzQjI2MTRGMjI3RDE0QjEwMEI5N0E3NiAvKiBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNr
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjI2
MTQ2MjI3RDE0NzEwMEI5N0E3NiAvKiBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuaCAqLzsg
fTsKKwkJOTNCNjMxRTUyN0FCQTYyODAwNDQzQTQ0IC8qIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9D
bGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkz
QjYzMUU0MjdBQkE2MjcwMDQ0M0E0NCAvKiBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50Lmgg
Ki87IH07CisJCTkzQjYzMUU4MjdBQkE2NUQwMDQ0M0E0NCAvKiBJREJTdG9yYWdlTWFuYWdlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCNjMxRTYy
N0FCQTY1QzAwNDQzQTQ0IC8qIElEQlN0b3JhZ2VNYW5hZ2VyLmggKi87IH07CisJCTkzQjYzMUVE
MjdBQkE2QjQwMDQ0M0E0NCAvKiBJREJTdG9yYWdlUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjYzMUVCMjdBQkE2QjMwMDQ0M0E0NCAv
KiBJREJTdG9yYWdlUmVnaXN0cnkuaCAqLzsgfTsKKwkJOTNCNjMxRjEyN0FCQUNBOTAwNDQzQTQ0
IC8qIFF1b3RhTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTNCNjMxRUYyN0FCQUNBOTAwNDQzQTQ0IC8qIFF1b3RhTWFuYWdlci5oICovOyB9
OworCQk5M0I2MzFGMzI3QUJBRDgwMDA0NDNBNDQgLyogUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVu
dGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
M0I2MzFGMjI3QUJBRDdGMDA0NDNBNDQgLyogUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVy
LmggKi87IH07CiAJCTkzQkRFQjAxMTcxREQ3QUYwMEJGRUUxQiAvKiBXS1BhZ2VMb2FkVHlwZXNQ
cml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
M0JERUIwMDE3MUREN0FGMDBCRkVFMUIgLyogV0tQYWdlTG9hZFR5cGVzUHJpdmF0ZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzRDZCNzcyMjU0
QkI1MTkwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblNlcnZlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNENkI3NkMyNTRCODk1ODAwNThERDNB
IC8qIFNwZWVjaFJlY29nbml0aW9uU2VydmVyLmggKi87IH07CiAJCTkzRDZCNzczMjU0QkI4Qzcw
MDU4REQzQSAvKiBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDZCNzY4MjU0QjdCQzYwMDU4REQz
QSAvKiBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaCAqLzsgfTsKQEAgLTUzNTAsNiAr
NTM1NSwxNSBAQAogCQk5M0IyNjE0OTIyN0QxNDcyMDBCOTdBNzYgLyogU3RvcmFnZU1hbmFnZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RvcmFnZU1hbmFnZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCMjYxNEEyMjdEMTQ3MjAwQjk3QTc2IC8qIFN0
b3JhZ2VNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0
b3JhZ2VNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCMjYxNEMy
MjdEMTQ3MjAwQjk3QTc2IC8qIExvY2FsU3RvcmFnZURhdGFiYXNlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExvY2FsU3RvcmFnZURhdGFiYXNlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNCNjMxRTMyN0FCQTVGNzAwNDQzQTQ0IC8qIElEQlN0
b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSURCU3RvcmFn
ZUNvbm5lY3Rpb25Ub0NsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkz
QjYzMUU0MjdBQkE2MjcwMDQ0M0E0NCAvKiBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElEQlN0b3JhZ2VDb25uZWN0aW9uVG9D
bGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNCNjMxRTYyN0FCQTY1QzAw
NDQzQTQ0IC8qIElEQlN0b3JhZ2VNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IElEQlN0b3JhZ2VNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTkzQjYzMUU3MjdBQkE2NUMwMDQ0M0E0NCAvKiBJREJTdG9yYWdlTWFuYWdlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJREJTdG9yYWdlTWFuYWdlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzQjYzMUVBMjdBQkE2QjIwMDQ0M0E0NCAvKiBJ
REJTdG9yYWdlUmVnaXN0cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSURCU3RvcmFnZVJlZ2lzdHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
OTNCNjMxRUIyN0FCQTZCMzAwNDQzQTQ0IC8qIElEQlN0b3JhZ2VSZWdpc3RyeS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJREJTdG9yYWdlUmVnaXN0cnkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNCNjMxRUUyN0FCQUNBODAwNDQzQTQ0IC8qIFF1b3RhTWFu
YWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBRdW90YU1hbmFn
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0I2MzFFRjI3QUJBQ0E5MDA0
NDNBNDQgLyogUXVvdGFNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFF1b3RhTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0I2MzFGMjI3
QUJBRDdGMDA0NDNBNDQgLyogUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmll
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0JBMDREQTIxNTFBREYzMDA3RjQ1
NUYgLyogV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IFdlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOTNCQTA0REIyMTUxQURGMzAwN0Y0NTVGIC8qIFdlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOTNCQTA0REMyMTUxQURGMzAwN0Y0NTVGIC8qIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC03NTU1LDYgKzc1NjksNyBAQAogCQkxQUJGNDM3ODFBMzY4MDM1MDAzRkIwRTYgLyogV2Vic2l0
ZURhdGEgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTkz
QjYzMUYyMjdBQkFEN0YwMDQ0M0E0NCAvKiBRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIu
aCAqLywKIAkJCQkxQTQ4MzJENDFBOUNERjk2MDA4QjRERkUgLyogV2Vic2l0ZURhdGEuY3BwICov
LAogCQkJCTFBNDgzMkQ1MUE5Q0RGOTYwMDhCNERGRSAvKiBXZWJzaXRlRGF0YS5oICovLAogCQkJ
CTFBMjhCOENCMUM4MEVENTkwMDZGRDc0MyAvKiBXZWJzaXRlRGF0YUZldGNoT3B0aW9uLmggKi8s
CkBAIC0xMDQwMSw2ICsxMDQxNiwxMiBAQAogCQkJCTkzNUI1Nzk4MjZGNTEyNzAwMDhCNDhBQyAv
KiBGaWxlU3lzdGVtU3RvcmFnZUhhbmRsZVJlZ2lzdHJ5LmggKi8sCiAJCQkJOTMxQTA3NTEyNkYw
NjMxMDAwNDQ3NENEIC8qIEZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlci5jcHAgKi8sCiAJCQkJOTMx
QTA3NTAyNkYwNjMxMDAwNDQ3NENEIC8qIEZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlci5oICovLAor
CQkJCTkzQjYzMUUzMjdBQkE1RjcwMDQ0M0E0NCAvKiBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xp
ZW50LmNwcCAqLywKKwkJCQk5M0I2MzFFNDI3QUJBNjI3MDA0NDNBNDQgLyogSURCU3RvcmFnZUNv
bm5lY3Rpb25Ub0NsaWVudC5oICovLAorCQkJCTkzQjYzMUU3MjdBQkE2NUMwMDQ0M0E0NCAvKiBJ
REJTdG9yYWdlTWFuYWdlci5jcHAgKi8sCisJCQkJOTNCNjMxRTYyN0FCQTY1QzAwNDQzQTQ0IC8q
IElEQlN0b3JhZ2VNYW5hZ2VyLmggKi8sCisJCQkJOTNCNjMxRUEyN0FCQTZCMjAwNDQzQTQ0IC8q
IElEQlN0b3JhZ2VSZWdpc3RyeS5jcHAgKi8sCisJCQkJOTNCNjMxRUIyN0FCQTZCMzAwNDQzQTQ0
IC8qIElEQlN0b3JhZ2VSZWdpc3RyeS5oICovLAogCQkJCTkzRTc5OUM5Mjc2MDQ5N0EwMDc0MDA4
QSAvKiBMb2NhbFN0b3JhZ2VNYW5hZ2VyLmNwcCAqLywKIAkJCQk5M0U3OTlDQjI3NjA0OTdBMDA3
NDAwOEEgLyogTG9jYWxTdG9yYWdlTWFuYWdlci5oICovLAogCQkJCTkzRTc5OUQ4Mjc2MTIxMDgw
MDc0MDA4QSAvKiBNZW1vcnlTdG9yYWdlQXJlYS5jcHAgKi8sCkBAIC0xMDQxMCw2ICsxMDQzMSw4
IEBACiAJCQkJOTMwODVEQzcyNkUxQzZFRTAwMEVDNkE3IC8qIE5ldHdvcmtTdG9yYWdlTWFuYWdl
ci5tZXNzYWdlcy5pbiAqLywKIAkJCQk5MzA4NURDNTI2RTFDNkNGMDAwRUM2QTcgLyogT3JpZ2lu
U3RvcmFnZU1hbmFnZXIuY3BwICovLAogCQkJCTkzMDg1REM2MjZFMUM2Q0YwMDBFQzZBNyAvKiBP
cmlnaW5TdG9yYWdlTWFuYWdlci5oICovLAorCQkJCTkzQjYzMUVFMjdBQkFDQTgwMDQ0M0E0NCAv
KiBRdW90YU1hbmFnZXIuY3BwICovLAorCQkJCTkzQjYzMUVGMjdBQkFDQTkwMDQ0M0E0NCAvKiBR
dW90YU1hbmFnZXIuaCAqLywKIAkJCQk5M0U3OTlDQzI3NjA0OTdCMDA3NDAwOEEgLyogU2Vzc2lv
blN0b3JhZ2VNYW5hZ2VyLmNwcCAqLywKIAkJCQk5M0U3OTlDQTI3NjA0OTdBMDA3NDAwOEEgLyog
U2Vzc2lvblN0b3JhZ2VNYW5hZ2VyLmggKi8sCiAJCQkJOTNFNzk5RDMyNzYxMjEwNzAwNzQwMDhB
IC8qIFNRTGl0ZVN0b3JhZ2VBcmVhLmNwcCAqLywKQEAgLTEzMDE4LDYgKzEzMDQxLDkgQEAKIAkJ
CQkzMTJDQzlGMjIxNUIwNkYxMDBERTQwQ0EgLyogSGlnaFBlcmZvcm1hbmNlR1BVTWFuYWdlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJODM5QTJGMzIxRTIwNjc0NTAwMzkwNTdFIC8qIEhpZ2hQZXJm
b3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUMwQzk3
NDFEREQ3NjAwMDAzMkNBRDMgLyogSWNvbkxvYWRpbmdEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJOTNCNjMxRTUyN0FCQTYyODAwNDQzQTQ0IC8qIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9D
bGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTkzQjYzMUU4MjdBQkE2NUQwMDQ0M0E0NCAvKiBJ
REJTdG9yYWdlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTNCNjMxRUQyN0FCQTZCNDAw
NDQzQTQ0IC8qIElEQlN0b3JhZ2VSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFFMzUx
Q0IxODBGMkNDQzAwRTUzQkU5IC8qIElEQlV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkNDRjZCMjUxMkM5M0U3QTAwOEY5QzM1IC8qIEltYWdlT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMUExRUM2OUUxODcyMDkyMTAwQjk1MUYwIC8qIEltcG9ydGFuY2VBc3NlcnRpb24uaCBp
biBIZWFkZXJzICovLApAQCAtMTMyMjksNiArMTMyNTUsOCBAQAogCQkJCUExRTY4ODcwMUY2RTJC
QUIwMDcwMDZBNiAvKiBRdWFyYW50aW5lU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTBDMjI3
RTI0NTExMzBBMDBFRDYxNEQgLyogUXVpY2tMb29rVGh1bWJuYWlsaW5nU29mdExpbmsuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFBRUU1NzI1MjQwOUYxNDIwMDIwMDVENiAvKiBRdWlja0xvb2tUaHVt
Ym5haWxMb2FkZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTkzQjYzMUYzMjdBQkFEODAwMDQ0M0E0
NCAvKiBRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTkzQjYzMUYxMjdBQkFDQTkwMDQ0M0E0NCAvKiBRdW90YU1hbmFnZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTVDQjZBRTQ0MjYwOTc5OUMwMEI2RUQ1QSAvKiBSZWFzb25TUEkuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTU3RkQzMTgyMjJCMzUxNUUwMDhEMEU4QiAvKiBSZWRpcmVjdFNPQXV0aG9yaXph
dGlvblNlc3Npb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTlCMTIyOUQyMjNGRjJCQ0MwMDhDQTc1
MSAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9X
ZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0Rh
dGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcAppbmRleCAwNGMy
NDEwZjM1YWRjYzA0NmM1NDA2YWYwY2NlMmZkMGU4NDFhZGIwLi5kNzkwMTY5YmUwZjU4ZTMwMWVk
YmU0NGMwNDRjNzgzOTFlZjQ3NDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5l
Y3Rpb25Ub1NlcnZlci5jcHAKQEAgLTI5LDkgKzI5LDkgQEAKICNpbmNsdWRlICJEYXRhUmVmZXJl
bmNlLmgiCiAjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5o
IgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIk5ldHdv
cmtTdG9yYWdlTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmgiCiAjaW5jbHVkZSAiV2ViSURCUmVzdWx0LmgiCi0jaW5jbHVkZSAiV2ViSURCU2VydmVy
TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9J
REJDb25uZWN0aW9uVG9TZXJ2ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0lEQkN1cnNvckluZm8u
aD4KQEAgLTgyLDEzMiArODIsMTMyIEBAIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblRvU2VydmVy
JiBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmNvcmVDb25uZWN0aW9uVG9TZXJ2CiAKIHZvaWQg
V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpkZWxldGVEYXRhYmFzZShjb25zdCBJREJSZXF1ZXN0
RGF0YSYgcmVxdWVzdERhdGEpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyOjpE
ZWxldGVEYXRhYmFzZShyZXF1ZXN0RGF0YSkpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtT
dG9yYWdlTWFuYWdlcjo6RGVsZXRlRGF0YWJhc2UocmVxdWVzdERhdGEpKTsKIH0KIAogdm9pZCBX
ZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6Om9wZW5EYXRhYmFzZShjb25zdCBJREJSZXF1ZXN0RGF0
YSYgcmVxdWVzdERhdGEpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyOjpPcGVu
RGF0YWJhc2UocmVxdWVzdERhdGEpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFn
ZU1hbmFnZXI6Ok9wZW5EYXRhYmFzZShyZXF1ZXN0RGF0YSkpOwogfQogCiB2b2lkIFdlYklEQkNv
bm5lY3Rpb25Ub1NlcnZlcjo6YWJvcnRUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50
aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJ
REJTZXJ2ZXI6OkFib3J0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZGVudGlmaWVyKSk7CisgICAg
c2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpBYm9ydFRyYW5zYWN0aW9uKHRy
YW5zYWN0aW9uSWRlbnRpZmllcikpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZl
cjo6Y29tbWl0VHJhbnNhY3Rpb24oY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2Fj
dGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IHBlbmRpbmdSZXF1ZXN0Q291bnQpCiB7Ci0gICAgc2Vu
ZChNZXNzYWdlczo6V2ViSURCU2VydmVyOjpDb21taXRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbklk
ZW50aWZpZXIsIHBlbmRpbmdSZXF1ZXN0Q291bnQpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrU3RvcmFnZU1hbmFnZXI6OkNvbW1pdFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmll
ciwgcGVuZGluZ1JlcXVlc3RDb3VudCkpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1Nl
cnZlcjo6ZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24odWludDY0X3Qg
ZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVy
JiB0cmFuc2FjdGlvbklkZW50aWZpZXIpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2Vy
dmVyOjpEaWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbihkYXRhYmFzZUNv
bm5lY3Rpb25JZGVudGlmaWVyLCB0cmFuc2FjdGlvbklkZW50aWZpZXIpKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkRpZEZpbmlzaEhhbmRsaW5nVmVyc2lvbkNo
YW5nZVRyYW5zYWN0aW9uKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHRyYW5zYWN0aW9u
SWRlbnRpZmllcikpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Y3JlYXRl
T2JqZWN0U3RvcmUoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJP
YmplY3RTdG9yZUluZm8mIGluZm8pCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVy
OjpDcmVhdGVPYmplY3RTdG9yZShyZXF1ZXN0RGF0YSwgaW5mbykpOworICAgIHNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Q3JlYXRlT2JqZWN0U3RvcmUocmVxdWVzdERhdGEs
IGluZm8pKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRlbGV0ZU9iamVj
dFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgU3RyaW5nJiBv
YmplY3RTdG9yZU5hbWUpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyOjpEZWxl
dGVPYmplY3RTdG9yZShyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVOYW1lKSk7CisgICAgc2VuZChN
ZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpEZWxldGVPYmplY3RTdG9yZShyZXF1ZXN0
RGF0YSwgb2JqZWN0U3RvcmVOYW1lKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2Vy
dmVyOjpyZW5hbWVPYmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEs
IHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lKQog
ewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6UmVuYW1lT2JqZWN0U3RvcmUocmVx
dWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmllciwgbmV3TmFtZSkpOworICAgIHNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6UmVuYW1lT2JqZWN0U3RvcmUocmVxdWVzdERh
dGEsIG9iamVjdFN0b3JlSWRlbnRpZmllciwgbmV3TmFtZSkpOwogfQogCiB2b2lkIFdlYklEQkNv
bm5lY3Rpb25Ub1NlcnZlcjo6Y2xlYXJPYmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0YSYg
cmVxdWVzdERhdGEsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllcikKIHsKLSAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OkNsZWFyT2JqZWN0U3RvcmUocmVxdWVzdERhdGEsIG9i
amVjdFN0b3JlSWRlbnRpZmllcikpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdl
TWFuYWdlcjo6Q2xlYXJPYmplY3RTdG9yZShyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlm
aWVyKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpjcmVhdGVJbmRleChj
b25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkluZGV4SW5mbyYgaW5m
bykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OkNyZWF0ZUluZGV4KHJlcXVl
c3REYXRhLCBpbmZvKSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2Vy
OjpDcmVhdGVJbmRleChyZXF1ZXN0RGF0YSwgaW5mbykpOwogfQogCiB2b2lkIFdlYklEQkNvbm5l
Y3Rpb25Ub1NlcnZlcjo6ZGVsZXRlSW5kZXgoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3RE
YXRhLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaW5kZXhO
YW1lKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6RGVsZXRlSW5kZXgocmVx
dWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhOYW1lKSk7CisgICAgc2VuZChN
ZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpEZWxldGVJbmRleChyZXF1ZXN0RGF0YSwg
b2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleE5hbWUpKTsKIH0KIAogdm9pZCBXZWJJREJDb25u
ZWN0aW9uVG9TZXJ2ZXI6OnJlbmFtZUluZGV4KGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0
RGF0YSwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRleElkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJ
REJTZXJ2ZXI6OlJlbmFtZUluZGV4KHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIs
IGluZGV4SWRlbnRpZmllciwgbmV3TmFtZSkpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtT
dG9yYWdlTWFuYWdlcjo6UmVuYW1lSW5kZXgocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRp
ZmllciwgaW5kZXhJZGVudGlmaWVyLCBuZXdOYW1lKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVj
dGlvblRvU2VydmVyOjpwdXRPckFkZChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEs
IGNvbnN0IElEQktleURhdGEmIGtleURhdGEsIGNvbnN0IElEQlZhbHVlJiB2YWx1ZSwgY29uc3Qg
SW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUgbW9kZSkKIHsKLSAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OlB1dE9yQWRkKHJlcXVlc3REYXRhLCBrZXlEYXRhLCB2YWx1
ZSwgbW9kZSkpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6UHV0
T3JBZGQocmVxdWVzdERhdGEsIGtleURhdGEsIHZhbHVlLCBtb2RlKSk7CiB9CiAKIHZvaWQgV2Vi
SURCQ29ubmVjdGlvblRvU2VydmVyOjpnZXRSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJl
cXVlc3REYXRhLCBjb25zdCBJREJHZXRSZWNvcmREYXRhJiBnZXRSZWNvcmREYXRhKQogewotICAg
IHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6R2V0UmVjb3JkKHJlcXVlc3REYXRhLCBnZXRS
ZWNvcmREYXRhKSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpH
ZXRSZWNvcmQocmVxdWVzdERhdGEsIGdldFJlY29yZERhdGEpKTsKIH0KIAogdm9pZCBXZWJJREJD
b25uZWN0aW9uVG9TZXJ2ZXI6OmdldEFsbFJlY29yZHMoY29uc3QgSURCUmVxdWVzdERhdGEmIHJl
cXVlc3REYXRhLCBjb25zdCBJREJHZXRBbGxSZWNvcmRzRGF0YSYgZ2V0QWxsUmVjb3Jkc0RhdGEp
CiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyOjpHZXRBbGxSZWNvcmRzKHJlcXVl
c3REYXRhLCBnZXRBbGxSZWNvcmRzRGF0YSkpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtT
dG9yYWdlTWFuYWdlcjo6R2V0QWxsUmVjb3JkcyhyZXF1ZXN0RGF0YSwgZ2V0QWxsUmVjb3Jkc0Rh
dGEpKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmdldENvdW50KGNvbnN0
IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiByYW5n
ZSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OkdldENvdW50KHJlcXVlc3RE
YXRhLCByYW5nZSkpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6
R2V0Q291bnQocmVxdWVzdERhdGEsIHJhbmdlKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlv
blRvU2VydmVyOjpkZWxldGVSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRh
LCBjb25zdCBJREJLZXlSYW5nZURhdGEmIHJhbmdlKQogewotICAgIHNlbmQoTWVzc2FnZXM6Oldl
YklEQlNlcnZlcjo6RGVsZXRlUmVjb3JkKHJlcXVlc3REYXRhLCByYW5nZSkpOworICAgIHNlbmQo
TWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6RGVsZXRlUmVjb3JkKHJlcXVlc3REYXRh
LCByYW5nZSkpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6b3BlbkN1cnNv
cihjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkN1cnNvckluZm8m
IGluZm8pCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyOjpPcGVuQ3Vyc29yKHJl
cXVlc3REYXRhLCBpbmZvKSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5h
Z2VyOjpPcGVuQ3Vyc29yKHJlcXVlc3REYXRhLCBpbmZvKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29u
bmVjdGlvblRvU2VydmVyOjppdGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1
ZXN0RGF0YSwgY29uc3QgSURCSXRlcmF0ZUN1cnNvckRhdGEmIGRhdGEpCiB7Ci0gICAgc2VuZChN
ZXNzYWdlczo6V2ViSURCU2VydmVyOjpJdGVyYXRlQ3Vyc29yKHJlcXVlc3REYXRhLCBkYXRhKSk7
CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpJdGVyYXRlQ3Vyc29y
KHJlcXVlc3REYXRhLCBkYXRhKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVy
Ojplc3RhYmxpc2hUcmFuc2FjdGlvbih1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlm
aWVyLCBjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mIGluZm8pCiB7Ci0gICAgc2VuZChNZXNzYWdl
czo6V2ViSURCU2VydmVyOjpFc3RhYmxpc2hUcmFuc2FjdGlvbihkYXRhYmFzZUNvbm5lY3Rpb25J
ZGVudGlmaWVyLCBpbmZvKSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5h
Z2VyOjpFc3RhYmxpc2hUcmFuc2FjdGlvbihkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBp
bmZvKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpkYXRhYmFzZUNvbm5l
Y3Rpb25QZW5kaW5nQ2xvc2UodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcikK
IHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OkRhdGFiYXNlQ29ubmVjdGlvblBl
bmRpbmdDbG9zZShkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKSk7CisgICAgc2VuZChNZXNz
YWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpEYXRhYmFzZUNvbm5lY3Rpb25QZW5kaW5nQ2xv
c2UoZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcikpOwogfQogCiB2b2lkIFdlYklEQkNvbm5l
Y3Rpb25Ub1NlcnZlcjo6ZGF0YWJhc2VDb25uZWN0aW9uQ2xvc2VkKHVpbnQ2NF90IGRhdGFiYXNl
Q29ubmVjdGlvbklkZW50aWZpZXIpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVy
OjpEYXRhYmFzZUNvbm5lY3Rpb25DbG9zZWQoZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcikp
OworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6RGF0YWJhc2VDb25u
ZWN0aW9uQ2xvc2VkKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpKTsKIH0KIAogdm9pZCBX
ZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmFib3J0T3BlbkFuZFVwZ3JhZGVOZWVkZWQodWludDY0
X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlm
aWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURC
U2VydmVyOjpBYm9ydE9wZW5BbmRVcGdyYWRlTmVlZGVkKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50
aWZpZXIsIHRyYW5zYWN0aW9uSWRlbnRpZmllcikpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdv
cmtTdG9yYWdlTWFuYWdlcjo6QWJvcnRPcGVuQW5kVXBncmFkZU5lZWRlZChkYXRhYmFzZUNvbm5l
Y3Rpb25JZGVudGlmaWVyLCB0cmFuc2FjdGlvbklkZW50aWZpZXIpKTsKIH0KIAogdm9pZCBXZWJJ
REJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRpZEZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQodWludDY0X3Qg
ZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVy
JiByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgSW5kZXhlZERCOjpDb25uZWN0aW9uQ2xvc2VkT25C
ZWhhbGZPZlNlcnZlciBjb25uZWN0aW9uQ2xvc2VkKQogewotICAgIHNlbmQoTWVzc2FnZXM6Oldl
YklEQlNlcnZlcjo6RGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudChkYXRhYmFzZUNvbm5lY3Rpb25J
ZGVudGlmaWVyLCByZXF1ZXN0SWRlbnRpZmllciwgY29ubmVjdGlvbkNsb3NlZCkpOworICAgIHNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6RGlkRmlyZVZlcnNpb25DaGFuZ2VF
dmVudChkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCByZXF1ZXN0SWRlbnRpZmllciwgY29u
bmVjdGlvbkNsb3NlZCkpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6b3Bl
bkRCUmVxdWVzdENhbmNlbGxlZChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEpCiB7
Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyOjpPcGVuREJSZXF1ZXN0Q2FuY2VsbGVk
KHJlcXVlc3REYXRhKSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2Vy
OjpPcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKHJlcXVlc3REYXRhKSk7CiB9CiAKIHZvaWQgV2ViSURC
Q29ubmVjdGlvblRvU2VydmVyOjpnZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMoY29uc3Qg
SURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgQ2xpZW50T3Jp
Z2luJiBvcmlnaW4pCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyOjpHZXRBbGxE
YXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMocmVxdWVzdElkZW50aWZpZXIsIG9yaWdpbikpOworICAg
IHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6R2V0QWxsRGF0YWJhc2VOYW1l
c0FuZFZlcnNpb25zKHJlcXVlc3RJZGVudGlmaWVyLCBvcmlnaW4pKTsKIH0KIAogdm9pZCBXZWJJ
REJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRpZERlbGV0ZURhdGFiYXNlKGNvbnN0IElEQlJlc3VsdERh
dGEmIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9JblBy
b2Nlc3NJREJTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL0luUHJvY2Vz
c0lEQlNlcnZlci5jcHAKaW5kZXggZWEyZTJhNzhmODhmZmRkMTAxYTNhMTM3ZjBkNWExMGE1NmUx
MGZiMi4uMGNhZGI1MDQyYmExNjEwNzdmOTQ0OWE5NzNkY2Y5ODMyZDM3MDJhZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAKQEAg
LTQyLDYgKzQyLDggQEAKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKK3N0YXRpYyBjb25z
dGV4cHIgdWludDY0X3QgZGVmYXVsdFBlck9yaWdpblF1b3RhID0gIDEwMDAgKiBNQjsKKwogUmVm
PEluUHJvY2Vzc0lEQlNlcnZlcj4gSW5Qcm9jZXNzSURCU2VydmVyOjpjcmVhdGUoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklEKQogewogICAgIEFTU0VSVChzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSk7
CkBAIC03Myw3ICs3NSw3IEBAIEluUHJvY2Vzc0lEQlNlcnZlcjo6fkluUHJvY2Vzc0lEQlNlcnZl
cigpCiBTdG9yYWdlUXVvdGFNYW5hZ2VyKiBJblByb2Nlc3NJREJTZXJ2ZXI6OnF1b3RhTWFuYWdl
cihjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbikKIHsKICAgICByZXR1cm4gbV9xdW90YU1hbmFn
ZXJzLmVuc3VyZShvcmlnaW4sIFtdIHsKLSAgICAgICAgcmV0dXJuIFN0b3JhZ2VRdW90YU1hbmFn
ZXI6OmNyZWF0ZShTdG9yYWdlUXVvdGFNYW5hZ2VyOjpkZWZhdWx0UXVvdGEoKSwgW10geworICAg
ICAgICByZXR1cm4gU3RvcmFnZVF1b3RhTWFuYWdlcjo6Y3JlYXRlKGRlZmF1bHRQZXJPcmlnaW5R
dW90YSwgW10gewogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0sIFtdKHVpbnQ2NF90
IHF1b3RhLCB1aW50NjRfdCBjdXJyZW50U3BhY2UsIHVpbnQ2NF90IHNwYWNlSW5jcmVhc2UsIGF1
dG8gY2FsbGJhY2spIHsKICAgICAgICAgICAgIGNhbGxiYWNrKHF1b3RhICsgY3VycmVudFNwYWNl
ICsgc3BhY2VJbmNyZWFzZSk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggMDY0M2U5MTEyMzk0ZTdlMGU5YWMxZGRkYWI1MDA2YTUyNjliMjk4ZC4u
MGI4NzI1ODgxODJkY2Q4NTQ2NGQzMGE0MTdlY2IwNmE1NmQ1YzgyMiAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIy
LTAyLTAzICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIE1hbmFn
ZSBJbmRleGVkREIgc3RvcmFnZSBieSBvcmlnaW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDkyNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODc1
NTUwMTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VXBkYXRlIGV4aXN0aW5nIHRlc3RzIGZvciBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQkZpbGVOYW1lLm1tOgorICAg
ICAgICAocnVuVGVzdCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9JbmRleGVkREJQZXJzaXN0ZW5jZS5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1N0b3JlQmxvYlRoZW5EZWxldGUubW06CisgICAgICAgIChURVNUKToKKwog
MjAyMi0wMi0wMyAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAg
ICAgW2dpdC13ZWJraXRdIENvbmZpZ3VyZSBkZWZhdWx0IGJyYW5jaCBtYW5hZ2VtZW50IApkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJG
aWxlTmFtZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhl
ZERCRmlsZU5hbWUubW0KaW5kZXggYTZiMDEyOWJjMTA1OWM0ZjljMTE4ZDFmZDdlZmQyMTIzZWFj
MmM3YS4uNDEwMjIyNGU0NTI3NGQzNjM3OWU0YmIwMDJhMGZlZTg5ODMyZjViYyAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJGaWxlTmFt
ZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWRE
QkZpbGVOYW1lLm1tCkBAIC03MSwyMCArNzEsMjMgQEAgc3RhdGljIHZvaWQgcnVuVGVzdCgpCiAg
ICAgUmV0YWluUHRyPE5TU3RyaW5nPiBzdHJpbmcyID0gKE5TU3RyaW5nICopW2xhc3RTY3JpcHRN
ZXNzYWdlIGJvZHldOwogICAgIEVYUEVDVF9XS19TVFJFUShAIlN1Y2Nlc3MiLCBzdHJpbmcyLmdl
dCgpKTsKIAotICAgIC8vIEZvciBkYXRhYmFzZSB0aGF0IGlzIG5vdCBvcGVuZWQgYWZ0ZXIgdXBn
cmFkZSwgaXRzIGZpbGUgc2hvdWxkIGJlIGluIHYwLgorICAgIC8vIEFsbCBkYXRhYmFzZXMgb2Yg
YW4gb3JpZ2luIGFyZSBtaWdyYXRlZCB0byBuZXcgdmVyc2lvbiBkaXJlY3Rvcnkgd2hlbiB0aGUg
b3JpZ2luIGlzIGFjY2Vzc2VkLgogICAgIGF1dG8gZGVmYXVsdEZpbGVNYW5hZ2VyID0gW05TRmls
ZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdOwogICAgIE5TU3RyaW5nICpleGlzdGluZ0RhdGFiYXNl
TmFtZSA9IEAiSW5kZXhlZERCVGVzdCI7CiAgICAgTlNTdHJpbmcgKmNyZWF0ZWREYXRhYmFzZU5h
bWUgPSBAIkluZGV4ZWREQk90aGVyIjsKICAgICBOU1N0cmluZyAqdW51c2VkRGF0YWJhc2VOYW1l
ID0gQCJJbmRleGVkREJVbnVzZWQiOwogICAgIE5TU3RyaW5nICpleGlzdGluZ0RhdGJhc2VIYXNo
ID0gV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0ZUhhc2hGb3JGaWxlTmFtZShleGlz
dGluZ0RhdGFiYXNlTmFtZSk7CiAgICAgTlNTdHJpbmcgKmNyZWF0ZWREYXRhYmFzZUhhc2ggPSBX
ZWJDb3JlOjpTUUxpdGVGaWxlU3lzdGVtOjpjb21wdXRlSGFzaEZvckZpbGVOYW1lKGNyZWF0ZWRE
YXRhYmFzZU5hbWUpOworICAgIE5TU3RyaW5nICp1bnVzZWREYXRhYmFzZUhhc2ggPSBXZWJDb3Jl
OjpTUUxpdGVGaWxlU3lzdGVtOjpjb21wdXRlSGFzaEZvckZpbGVOYW1lKGNyZWF0ZWREYXRhYmFz
ZU5hbWUpOwogICAgIE5TVVJMICppZGJSb290VVJMID0gW1tXS1dlYnNpdGVEYXRhU3RvcmUgZGVm
YXVsdERhdGFTdG9yZV0gX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5XTsKICAgICBOU1VSTCAq
b2xkVmVyc2lvbkRpcmVjdG9yeVVSTCA9IFtpZGJSb290VVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENv
bXBvbmVudDpAInYwIl07CiAgICAgTlNVUkwgKm5ld1ZlcnNpb25EaXJlY3RvcnlVUkwgPSBbaWRi
Um9vdFVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJ2MSJdOwogICAgIE5TVVJMICpv
bGRWZXJzaW9uT3JpZ2luRGlyZWN0b3J5VVJMID0gW29sZFZlcnNpb25EaXJlY3RvcnlVUkwgVVJM
QnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OiBAImZpbGVfXzAiXTsKICAgICBOU1VSTCAqbmV3VmVy
c2lvbk9yaWdpbkRpcmVjdG9yeVVSTCA9IFtuZXdWZXJzaW9uRGlyZWN0b3J5VVJMIFVSTEJ5QXBw
ZW5kaW5nUGF0aENvbXBvbmVudDogQCJmaWxlX18wIl07CiAgICAgTlNVUkwgKm9sZFZlcnNpb25V
bnVzZWREYXRhYmFzZURpcmVjdG9yeVVSTCA9IFtvbGRWZXJzaW9uT3JpZ2luRGlyZWN0b3J5VVJM
IFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDp1bnVzZWREYXRhYmFzZU5hbWVdOwotICAgIEVY
UEVDVF9UUlVFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0
aDpvbGRWZXJzaW9uVW51c2VkRGF0YWJhc2VEaXJlY3RvcnlVUkwucGF0aF0pOworICAgIE5TVVJM
ICpuZXdWZXJzaW9uVW51c2VkRGF0YWJhc2VEaXJlY3RvcnlVUkwgPSBbbmV3VmVyc2lvbk9yaWdp
bkRpcmVjdG9yeVVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6dW51c2VkRGF0YWJhc2VI
YXNoXTsKKyAgICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBm
aWxlRXhpc3RzQXRQYXRoOm9sZFZlcnNpb25VbnVzZWREYXRhYmFzZURpcmVjdG9yeVVSTC5wYXRo
XSk7CisgICAgRVhQRUNUX1RSVUUoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxl
RXhpc3RzQXRQYXRoOm5ld1ZlcnNpb25VbnVzZWREYXRhYmFzZURpcmVjdG9yeVVSTC5wYXRoXSk7
CiAgICAgCiAgICAgLy8gRm9yIGRhdGFiYXNlIHRoYXQgaXMgb3BlbmVkIGFmdGVyIHVwZ3JhZGUs
IGl0cyBmaWxlIHNob3VsZCBvbmx5IGJlIGluIHYxLgogICAgIE5TVVJMICpvbGRWZXJzaW9uRXhp
c3RpbmdEYXRhYmFzZURpcmVjdG9yeVVSTCA9IFtvbGRWZXJzaW9uT3JpZ2luRGlyZWN0b3J5VVJM
IFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDogZXhpc3RpbmdEYXRhYmFzZU5hbWVdOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJQ
ZXJzaXN0ZW5jZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5k
ZXhlZERCUGVyc2lzdGVuY2UubW0KaW5kZXggMjcxOGM0YWIzNjlhODE4MmRhMGUxMThjNDUxNjY2
YWU5ZDFlMmM3NC4uNGYwYThlYzk0NDU0OGNhNmM3ODcwMTVjNmI2ZDk1MDg1ODgzODhiMyAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJQ
ZXJzaXN0ZW5jZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0luZGV4ZWREQlBlcnNpc3RlbmNlLm1tCkBAIC0zMDUsMTAgKzMwNSwxNCBAQCBURVNUKEluZGV4
ZWREQiwgSW5kZXhlZERCVGhpcmRQYXJ0eURhdGFSZW1vdmFsKQogICAgIEVYUEVDVF9XS19TVFJF
USggQCJkYXRhYmFzZSBpcyBjcmVhdGVkIC0gcHV0IGl0ZW0gc3VjY2VzcyIsIChOU1N0cmluZyAq
KVtsYXN0U2NyaXB0TWVzc2FnZSBib2R5XSk7CiAKICAgICByZWFkeVRvQ29udGludWUgPSBmYWxz
ZTsKLSAgICBbW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSBmZXRjaERhdGFS
ZWNvcmRzT2ZUeXBlczp3ZWJzaXRlRGF0YVR5cGVzLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4o
TlNBcnJheTxXS1dlYnNpdGVEYXRhUmVjb3JkICo+ICpkYXRhUmVjb3JkcykgewotICAgICAgICBF
WFBFQ1RfRVEoMXUsIGRhdGFSZWNvcmRzLmNvdW50KTsKLSAgICAgICAgRVhQRUNUX1dLX1NUUkVR
KCJpZnJhbWUiLCBbW2RhdGFSZWNvcmRzIGZpcnN0T2JqZWN0XSBkaXNwbGF5TmFtZV0pOwotICAg
ICAgICBbW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSByZW1vdmVEYXRhT2ZU
eXBlczp3ZWJzaXRlRGF0YVR5cGVzLmdldCgpIGZvckRhdGFSZWNvcmRzOmRhdGFSZWNvcmRzIGNv
bXBsZXRpb25IYW5kbGVyOl4oKSB7CisgICAgW1tXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERh
dGFTdG9yZV0gZmV0Y2hEYXRhUmVjb3Jkc09mVHlwZXM6d2Vic2l0ZURhdGFUeXBlcy5nZXQoKSBj
b21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8V0tXZWJzaXRlRGF0YVJlY29yZCAqPiAqcmVjb3Jk
cykgeworICAgICAgICBFWFBFQ1RfRVEoMnUsIHJlY29yZHMuY291bnQpOworICAgICAgICBOU1Nv
cnREZXNjcmlwdG9yICpyZWNvcmREZXNjcmlwdG9yID0gW05TU29ydERlc2NyaXB0b3Igc29ydERl
c2NyaXB0b3JXaXRoS2V5OkAiZGlzcGxheU5hbWUiIGFzY2VuZGluZzpZRVNdOworICAgICAgICBO
U0FycmF5ICpzb3J0RGVzY3JpcHRvcnMgPSBAW3JlY29yZERlc2NyaXB0b3JdOworICAgICAgICBO
U0FycmF5ICpzb3J0ZWRSZWNvcmRzID0gW3JlY29yZHMgc29ydGVkQXJyYXlVc2luZ0Rlc2NyaXB0
b3JzOnNvcnREZXNjcmlwdG9yc107CisgICAgICAgIEVYUEVDVF9XS19TVFJFUSgiaWZyYW1lIiwg
W1tzb3J0ZWRSZWNvcmRzIG9iamVjdEF0SW5kZXg6MF0gZGlzcGxheU5hbWVdKTsKKyAgICAgICAg
RVhQRUNUX1dLX1NUUkVRKCJ3ZWJraXQub3JnIiwgW1tzb3J0ZWRSZWNvcmRzIG9iamVjdEF0SW5k
ZXg6MV0gZGlzcGxheU5hbWVdKTsKKyAgICAgICAgW1tXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVs
dERhdGFTdG9yZV0gcmVtb3ZlRGF0YU9mVHlwZXM6d2Vic2l0ZURhdGFUeXBlcy5nZXQoKSBmb3JE
YXRhUmVjb3JkczpyZWNvcmRzIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7CiAgICAgICAgICAgICBy
ZWFkeVRvQ29udGludWUgPSB0cnVlOwogICAgICAgICB9XTsKICAgICB9XTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU3RvcmVCbG9iVGhlbkRlbGV0
ZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU3RvcmVCbG9iVGhl
bkRlbGV0ZS5tbQppbmRleCBhYWJmZmY4N2JjNjRiMzk1MmIyNDE0NTIxNWVlMDM4Mjg2YjdjODkx
Li44ZTg1YTQwYTVlODNiYTAzNDMyMWU3ZTc5NjlkODM1NWUzMmMyNDY1IDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1N0b3JlQmxvYlRoZW5EZWxldGUu
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TdG9yZUJsb2JU
aGVuRGVsZXRlLm1tCkBAIC04Nyw3ICs4Nyw3IEBAIFRFU1QoSW5kZXhlZERCLCBTdG9yZUJsb2JU
aGVuUmVtb3ZlRGF0YSkKICAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNvcHlJ
dGVtQXRQYXRoOmRhdGFiYXNlRmlsZVBhdGggdG9QYXRoOmZha2VTaG1QYXRoIGVycm9yOm5pbF07
CiAgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjb3B5SXRlbUF0UGF0aDpkYXRh
YmFzZUZpbGVQYXRoIHRvUGF0aDpmYWtlV2FsUGF0aCBlcnJvcjpuaWxdOwogCi0gICAgLy8gTWFr
ZSBzb21lIG90aGVyIC5ibG9iIGZpbGVzIGluIHRoZSBkYXRhYmFzZSBkaXJlY3RvcnkgdG8gbGF0
ZXIgdmFsaWRhdGUgdGhhdCBvbmx5IGFwcHJvcHJpYXRlIGZpbGVzIGFyZSBkZWxldGVkLgorICAg
IC8vIE1ha2Ugc29tZSBvdGhlciAuYmxvYiBmaWxlcyBpbiB0aGUgZGF0YWJhc2UgZGlyZWN0b3J5
IHRvIGxhdGVyIHZhbGlkYXRlIGFsbCBibG9iIGZpbGVzIGluIHRoZSBkaXJlY3RvcnkgYXJlIGRl
bGV0ZWQuCiAgICAgTlNTdHJpbmcgKm90aGVyQmxvYjEgPSBbZGF0YWJhc2VEaXJlY3Rvcnkgc3Ry
aW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiNzE4Mi5ibG9iIl07CiAgICAgTlNTdHJpbmcg
Km90aGVyQmxvYjIgPSBbZGF0YWJhc2VEaXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29t
cG9uZW50OkAiMWEuYmxvYiJdOwogICAgIE5TU3RyaW5nICpvdGhlckJsb2IzID0gW2RhdGFiYXNl
RGlyZWN0b3J5IHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAImExLmJsb2IiXTsKQEAg
LTEwMiwxMyArMTAyLDEyIEBAIFRFU1QoSW5kZXhlZERCLCBTdG9yZUJsb2JUaGVuUmVtb3ZlRGF0
YSkKICAgICAgICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0g
ZmlsZUV4aXN0c0F0UGF0aDpibG9iRmlsZVBhdGhdKTsKICAgICAgICAgRVhQRUNUX0ZBTFNFKFtb
TlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpkYXRhYmFzZUZp
bGVQYXRoXSk7CiAKLSAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBmYWtlIGJsb2IgZmlsZSB3aXRo
IGEgdmFsaWQgYmxvYiBmaWxlIG5hbWUgaXMgZ29uZS4KKyAgICAgICAgLy8gTWFrZSBzdXJlIGFs
bCBmYWtlIGJsb2IgZmlsZSBhcmUgZ29uZS4KICAgICAgICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxl
TWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpvdGhlckJsb2IxXSk7CiAK
LSAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBmYWtlIGJsb2IgZmlsZXMgd2l0aCBpbnZhbGlkIGJs
b2IgZmlsZSBuYW1lcyBhcmUgc3RpbGwgdGhlcmUuCi0gICAgICAgIEVYUEVDVF9UUlVFKFtbTlNG
aWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpvdGhlckJsb2IyXSk7
Ci0gICAgICAgIEVYUEVDVF9UUlVFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmls
ZUV4aXN0c0F0UGF0aDpvdGhlckJsb2IzXSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKFtbTlNGaWxl
TWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpvdGhlckJsb2I0XSk7Cisg
ICAgICAgIEVYUEVDVF9GQUxTRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVF
eGlzdHNBdFBhdGg6b3RoZXJCbG9iMl0pOworICAgICAgICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVN
YW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOm90aGVyQmxvYjNdKTsKKyAg
ICAgICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4
aXN0c0F0UGF0aDpvdGhlckJsb2I0XSk7CiAKICAgICAgICAgLy8gTWFrZSBzdXJlIGV2ZXJ5dGhp
bmcgcmVsYXRlZCB0byB0aGUgZmFrZSBkYXRhYmFzZSBpcyBnb25lLgogICAgICAgICBFWFBFQ1Rf
RkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmZh
a2VTaG1QYXRoXSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYktpdFRl
c3RSdW5uZXIueGNvZGVwcm9qL3hjc2hhcmVkZGF0YS94Y3NjaGVtZXMvV2ViS2l0VGVzdFJ1bm5l
ci54Y3NjaGVtZSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29k
ZXByb2oveGNzaGFyZWRkYXRhL3hjc2NoZW1lcy9XZWJLaXRUZXN0UnVubmVyLnhjc2NoZW1lCmlu
ZGV4IDlmOTgxYTNmZjFjMTkwMzU4NDAwMGIwNmZkZThiOGY5NjhkMDkwMzEuLmNkOThkMTI5YjI5
M2EyMGRkYTM3ZmU0Y2U3YWM4MmUwZTgwM2MyNmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2oveGNzaGFyZWRkYXRhL3hjc2NoZW1l
cy9XZWJLaXRUZXN0UnVubmVyLnhjc2NoZW1lCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
V2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2oveGNzaGFyZWRkYXRhL3hjc2NoZW1lcy9XZWJLaXRU
ZXN0UnVubmVyLnhjc2NoZW1lCkBAIC00MCw4ICs0MCwxMSBAQAogICAgICAgZGVidWdEb2N1bWVu
dFZlcnNpb25pbmcgPSAiWUVTIgogICAgICAgZGVidWdTZXJ2aWNlRXh0ZW5zaW9uID0gImludGVy
bmFsIgogICAgICAgYWxsb3dMb2NhdGlvblNpbXVsYXRpb24gPSAiWUVTIj4KLSAgICAgIDxCdWls
ZGFibGVQcm9kdWN0UnVubmFibGUKLSAgICAgICAgIHJ1bm5hYmxlRGVidWdnaW5nTW9kZSA9ICIw
Ij4KKyAgICAgIDxQYXRoUnVubmFibGUKKyAgICAgICAgIHJ1bm5hYmxlRGVidWdnaW5nTW9kZSA9
ICIwIgorICAgICAgICAgRmlsZVBhdGggPSAiL1VzZXJzL3NpaHVpbC9EYXRhL1dlYktpdDEvT3Bl
blNvdXJjZS9XZWJLaXRCdWlsZC9EZWJ1Zy9XZWJLaXRUZXN0UnVubmVyIj4KKyAgICAgIDwvUGF0
aFJ1bm5hYmxlPgorICAgICAgPE1hY3JvRXhwYW5zaW9uPgogICAgICAgICAgPEJ1aWxkYWJsZVJl
ZmVyZW5jZQogICAgICAgICAgICAgQnVpbGRhYmxlSWRlbnRpZmllciA9ICJwcmltYXJ5IgogICAg
ICAgICAgICAgQmx1ZXByaW50SWRlbnRpZmllciA9ICI4REQ3NkY5NjA0ODZBQTc2MDBEOTZCNUUi
CkBAIC00OSw3ICs1MiwxMyBAQAogICAgICAgICAgICAgQmx1ZXByaW50TmFtZSA9ICJXZWJLaXRU
ZXN0UnVubmVyIgogICAgICAgICAgICAgUmVmZXJlbmNlZENvbnRhaW5lciA9ICJjb250YWluZXI6
V2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2oiPgogICAgICAgICAgPC9CdWlsZGFibGVSZWZlcmVu
Y2U+Ci0gICAgICA8L0J1aWxkYWJsZVByb2R1Y3RSdW5uYWJsZT4KKyAgICAgIDwvTWFjcm9FeHBh
bnNpb24+CisgICAgICA8Q29tbWFuZExpbmVBcmd1bWVudHM+CisgICAgICAgICA8Q29tbWFuZExp
bmVBcmd1bWVudAorICAgICAgICAgICAgYXJndW1lbnQgPSAiL1VzZXJzL3NpaHVpbC9EYXRhL1dl
YktpdDEvT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZh
dGUtYnJvd3NpbmcvYWJvcnQtaW4taW5pdGlhbC11cGdyYWRlbmVlZGVkLmh0bWwiCisgICAgICAg
ICAgICBpc0VuYWJsZWQgPSAiWUVTIj4KKyAgICAgICAgIDwvQ29tbWFuZExpbmVBcmd1bWVudD4K
KyAgICAgIDwvQ29tbWFuZExpbmVBcmd1bWVudHM+CiAgICA8L0xhdW5jaEFjdGlvbj4KICAgIDxQ
cm9maWxlQWN0aW9uCiAgICAgICBidWlsZENvbmZpZ3VyYXRpb24gPSAiUmVsZWFzZSIK
</data>
<flag name="commit-queue"
          id="477384"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450867</attachid>
            <date>2022-02-03 22:31:35 -0800</date>
            <delta_ts>2022-02-03 23:32:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234925-20220203223134.patch</filename>
            <type>text/plain</type>
            <size>285876</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5MDg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDljMjQxMmNmODI0YjRiNTY1YTVlNWRi
YWQxNWFjZDRhY2RkZDA0MzMuLjg0OWUwMWYyNGIyN2M1YzU4ZGIxYjkzZWQ0NjNlZmNhOGY3YWY2
MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjItMDItMDMgIFNpaHVpIExpdSAgPHNpaHVpX2xp
dUBhcHBsZS5jb20+CisKKyAgICAgICAgTWFuYWdlIEluZGV4ZWREQiBzdG9yYWdlIGJ5IG9yaWdp
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0OTI1
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NzU1NTAxND4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBoZWxwZXIgZnVuY3Rpb24gdG8gZ2V0
IHRoZSB0YXJnZXQgZnJvbSBhIHN5bW9ibGljIGxpbmsgcGF0aC4KKworICAgICAgICAqIHd0Zi9G
aWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6OmdldFN5bWJvbGlj
TGlua1RhcmdldCk6CisgICAgICAgICogd3RmL0ZpbGVTeXN0ZW0uaDoKKwogMjAyMi0wMi0wMyAg
Um9iZXJ0IEplbm5lciAgPEplbm5lckBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwg
cmV2ZXJ0aW5nIHIyODg5MDIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjcyNmQyZjc5ZTk1OTdhN2ExYTZhOWEx
ZDQ2OTVhNWUzYTViOTI1Mi4uNWFhZmJjMzk3NGQ0M2UxNjUwOGY3ZTIyZGRlOTVmOGYzNGIwMjc3
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk2IEBACisyMDIyLTAyLTAzICBTaWh1aSBMaXUgIDxz
aWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIE1hbmFnZSBJbmRleGVkREIgc3RvcmFnZSBi
eSBvcmlnaW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzNDkyNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODc1NTUwMTQ+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQm90aCBXZWJLaXQgYW5kIFdlYktp
dExlZ2FjeSB1c2VkIElEQlNlcnZlciB0byBtYW5hZ2UgVW5pcXVlSURCRGF0YWJhc2VzLCBhbmQg
VW5pcXVlSURCRGF0YWJhc2UgcG9pbnRlZCB0byAKKyAgICAgICAgSURCU2VydmVyLiBOb3cgdGhh
dCBXZWJLaXQgdXNlcyBXZWJLaXQ6OklEQlN0b3JhZ2VNYW5hZ2VyIHRvIG1hbmFnZSBVbmlxdWVJ
REJEYXRhYmFzZXMuIFdlIHVudGllIHRoZSAKKyAgICAgICAga25vdCBiZXR3ZWVuIElEQlNlcnZl
ciBhbmQgVW5pcXVlSURCRGF0YWJhc2UgYnkgYWRkaW5nIGEgbmV3IGFic3RyYWN0IGNsYXNzIFVu
aXF1ZUlEQkRhdGFiYXNlTWFuYWdlciBhbmQgbWFrZQorICAgICAgICBVbmlxdWVJREJEYXRhYmFz
ZSBwb2ludCB0byBVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuCisKKyAgICAgICAgQWxzbywgYXMg
cXVvdGEgY2hlY2sgaXMgbm8gbG9uZ2VyIGFzeW5jIGFjY29yZGluZyB0byBjaGFuZ2VzIGluIFdl
YktpdCwgd2UgbmVlZCB0byB1cGRhdGUgb3BlcmF0aW9ucyBpbgorICAgICAgICBVbmlxdWVJREJE
YXRhYmFzZSB0byBhZG9wdCB0aGUgY2hhbmdlLgorCisgICAgICAgIENvdmVyZWQgYnkgZXhpc3Rp
bmcgdGVzdHMuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnQuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNl
cnZlcjo6SURCU2VydmVyOjpyZWdpc3RlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpJREJTZXJ2ZXI6OnVucmVnaXN0ZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpjcmVhdGVCYWNraW5nU3RvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OnVwZ3JhZGVkRGF0YWJhc2VEaXJlY3Rv
cnkpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OnJlZ2lzdGVyRGF0
YWJhc2VDb25uZWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
SURCU2VydmVyOjp1bnJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0aW9uKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpjbG9zZUFuZFRha2VVbmlxdWVJREJE
YXRhYmFzZSk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lE
QlNlcnZlci5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJC
YWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlJREJC
YWNraW5nU3RvcmU6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJTZXJ2ZXI6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuaDoK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlPYmplY3RTdG9yZTo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5T2JqZWN0U3RvcmU6Ok1lbW9y
eU9iamVjdFN0b3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5
T2JqZWN0U3RvcmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRl
SURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRl
SURCQmFja2luZ1N0b3JlOjpTUUxpdGVJREJCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmVuY29kZURhdGFiYXNlTmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVj
b2RlRGF0YWJhc2VOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURC
QmFja2luZ1N0b3JlOjpnZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbyk6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlQmFja2luZ1N0b3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpm
aWxlbmFtZUZvckRhdGFiYXNlTmFtZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZnVsbERhdGFiYXNlRGlyZWN0b3J5
V2l0aFVwZ3JhZGUpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpVbmlxdWVJREJEYXRhYmFzZTo6VW5pcXVlSURCRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6bWFuYWdlcik6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtQ3VycmVudE9wZW5PcGVy
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6
cGVyZm9ybUN1cnJlbnRPcGVuT3BlcmF0aW9uQWZ0ZXJTcGFjZUNoZWNrKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZUJhY2tpbmdTdG9yZSk6
CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVP
YmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFi
YXNlOjpkZWxldGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVu
aXF1ZUlEQkRhdGFiYXNlOjpyZW5hbWVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpjbGVhck9iamVjdFN0b3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZUluZGV4KToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZUluZGV4
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OnJlbmFt
ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6
OnB1dE9yQWRkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJh
c2U6OnB1dE9yQWRkQWZ0ZXJTcGFjZUNoZWNrKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZl
cjo6VW5pcXVlSURCRGF0YWJhc2U6OmdldFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRBbGxSZWNvcmRzKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmdldENvdW50KToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZVJlY29yZCk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuQ3Vyc29yKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6Oml0ZXJhdGVD
dXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6
Y29tbWl0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJ
REJEYXRhYmFzZTo6YWJvcnRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2
ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjphYm9ydEluUHJvZ3Jlc3NUcmFuc2FjdGlvbnMpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6aGFzRGF0YUluTWVt
b3J5IGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURC
RGF0YWJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJh
c2U6OnNlcnZlcik6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L1VuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbjo6VW5pcXVlSURCRGF0YWJhc2VDb25u
ZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VD
b25uZWN0aW9uOjp+VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uOjptYW5hZ2VyKToKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0
aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29u
bmVjdGlvbjo6c2VydmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXI6On5VbmlxdWVJREJEYXRhYmFz
ZU1hbmFnZXIpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJE
YXRhYmFzZVRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5p
cXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rp
b246On5VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5oOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJFcnJvci5oOgorICAgICAgICAoV2ViQ29yZTo6
SURCRXJyb3I6Om9wZXJhdG9yIGJvb2wgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L3NoYXJlZC9JREJSZXNvdXJjZUlkZW50aWZpZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlJl
c291cmNlSWRlbnRpZmllcjo6b3BlcmF0b3IhPSBjb25zdCk6CisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDIyLTAyLTAzICBCZW4gTmhhbSAgPG5oYW1A
YXBwbGUuY29tPgogCiAgICAgICAgIExvY2FsU3RvcmFnZSB2YWx1ZXMgc2hvdWxkIGJlIDgtYml0
IHN0cmluZ3MgaW4gbWVtb3J5IGlmIHBvc3NpYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGEyODE0OTliY2RlMDY5
Mzk4NjI1OTMzNDg0NmUwMzEzYTU4NDc1NjMuLjZmNzkwMTM2YzRlODEzYmRmNDY4ZjBmYzcwMjU4
NzBhYzliNjZlODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjY1IEBACisyMDIyLTAyLTAzICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIE1hbmFnZSBJbmRleGVkREIg
c3RvcmFnZSBieSBvcmlnaW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzNDkyNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODc1NTUwMTQ+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gbmV0d29yayBw
cm9jZXNzLCBJbmRleGVkREIgZGF0YSBpcyBtYW5hZ2VkIGJ5IFdlYktpdDo6V2ViSURCU2VydmVy
LiBFYWNoIHNlc3Npb24gb3ducyBhIFdlYklEQlNlcnZlciAKKyAgICAgICAgKElEQlNlcnZlcikg
YW5kIGVhY2ggSURCU2VydmVyIG93bnMgb25lIG9yIG1vcmUgVW5pcXVlSURCRGF0YWJhc2VzIChy
ZXNwcmVudGluZyBvbmUgYWN0dWFsIGRhdGFiYXNlIHRoYXQKKyAgICAgICAgSURCRGF0YWJhc2Ug
Y29ubmVjdHMgdG8sIGNhbiBiZSBpZGVudGlmaWVkIGJ5IHtzZXNzaW9uLCBvcmlnaW4sIG5hbWV9
KS4gTm93IHRoYXQgd2UgaGF2ZSBOZXR3b3JrU3RvcmFnZU1hbmFnZXIsIAorICAgICAgICB3aGlj
aCBtYW5hZ2VzIHNlc3Npb24gc3RvcmFnZSBieSBvcmlnaW4sIHdlIGNhbiBtZXJnZSBXZWJJREJT
ZXJ2ZXIgd2l0aCBOZXR3b3JrU3RvcmFnZU1hbmFnZXIsIHNpbmNlIEluZGV4ZWREQiAKKyAgICAg
ICAgc3RvcmFnZSBpcyBub3Qgc2hhcmVkIGFjcm9zcyBvcmlnaW5zLgorCisgICAgICAgIFRoZSBv
bGQgc3RydWN0dXJlIGlzOgorICAgICAgICBOZXR3b3JrU2Vzc2lvbiAtIFdlYklEQlNlcnZlciAt
IElEQlNlcnZlciAtIFVuaXF1ZUlEQkRhdGFiYXNlcworICAgICAgICBUaGUgbmV3IHN0cnVjdHVy
ZSBpczoKKyAgICAgICAgTmV0d29ya1Nlc3Npb24gLSBOZXR3b3JrU3RvcmFnZU1hbmFnZXIgLSBP
cmlnaW5TdG9yYWdlTWFuYWdlciAtIElEQlN0b3JhZ2VNYW5hZ2VyIC0gVW5pcXVlSURCRGF0YWJh
c2UKKworICAgICAgICBUbyBjb21wbGV0ZSB0aGlzIHRyYW5zaXRpb24sIHdlIG5lZWQgdG8gbWFr
ZSBhIGZldyBjaGFuZ2VzOgorICAgICAgICAxLiBXZWIgcHJvY2VzcyBub3cgc2VuZHMgSW5kZXhl
ZERCIHJlbGF0ZWQgbWVzc2FnZXMgdG8gTmV0d29ya1N0b3JhZ2VNYW5hZ2VyIGluc3RlYWQgb2Yg
V2ViSURCU2VydmVyLiAKKyAgICAgICAgMi4gU29tZSBtZXNzYWdlcyBhcmUgc2VudCB0byBvcGVy
YXRlIG9uIFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiBvciBVbmlxdWVJREJEYXRhYmFzZVRy
YW5zYWN0aW9uLCBhbmQgdGhleSAKKyAgICAgICAgdXNlIGlkZW50aWZpZXJzIHRvIHNwZWNpZnkg
dGhlIHRhcmdldC4gVGhlcmVmb3JlLCBOZXR3b3JrU3RvcmFnZU1hbmFnZXJzIG5lZWRzIHRvIGtu
b3cgdGhlIG1hcHBpbmcgYmV0d2VlbiAKKyAgICAgICAgaWRlbnRpZmllcnMgYW5kIHRhcmdldCBv
YmplY3RzLiBXZSBhZGQgYSBuZXcgSURCU3RvcmFnZVJlZ2lzdHJ5IGNsYXNzIHRvIHJlY29yZCB0
aGlzIG1hcHBpbmcuIEVhY2ggCisgICAgICAgIE5ldHdvcmtTdG9yYWdlTWFuYWdlciBvd25zIGEg
SURCU3RvcmFnZVJlZ2lzdHJ5IGFuZCBpdCBwYXNzZXMgSURCU3RvcmFnZVJlZ2lzdHJ5IHRvIElE
QlN0b3JhZ2VNYW5hZ2VyLAorICAgICAgICBJREJTdG9yYWdlTWFuYWdlciB3aWxsIHJlZ2lzdGVy
IG9iamVjdHMgdG8gSURCU3RvcmFnZVJlZ2lzdHJ5IGFuZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXIg
Y2FuIGRvIHNlYXJjaCB2aWEgCisgICAgICAgIElEQlN0b3JhZ2VSZWdpc3RyeS4KKyAgICAgICAg
My4gUXVvdGEgY2hlY2sgZm9yIEluZGV4ZWREQiBvcGVyYXRpb25zIGJlY29tZXMgYXN5bmMgYnkg
YWRkaW5nIG5ldyBRdW90YU1hbmFnZXIgY2xhc3MsIHdoaWNoIGlzIHNpbWlsYXIgdG8gCisgICAg
ICAgIFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXIgYnV0IHByb3ZpZGVzIGFzeW5jIGludGVy
ZmFjZXMuIAorICAgICAgICBXZSB1c2VkIHRvIGJsb2NrIHRoZSBJREJTZXJ2ZXIgdGhyZWFkIHdo
ZW4gaXQgaXMgd2FpdGluZyBmb3IgcXVvdGEgY2hlY2sgcmVzdWx0IGZyb20gVUkgcHJvY2Vzcywg
dGhpcyBpcyBmaW5lIAorICAgICAgICBiZWNhdXNlIElEQlNlcnZlciBydW5zIG9uIGl0cyBvd24g
dGhyZWFkLiBOb3cgdGhhdCBJREJTdG9yYWdlTWFuYWdlciBydW5zIG9uIHRoZSBzYW1lIHRocmVh
ZCBhcyB0aGUgb3RoZXIgCisgICAgICAgIHN0b3JhZ2UgdHlwZXMsIHdlIGNhbm5vdCBibG9jayB0
aGUgdGhyZWFkIG9uIHF1b3RhIGNoZWNrLgorICAgICAgICA0LiBSZW5hbWUgV2ViSURCQ29ubmVj
dGlvblRvQ2xpZW50IHRvIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQgdG8gcmVmbGVjdCB0
aGUgY2hhbmdlIG9uIHRoZSBzdHJ1Y3R1cmUuIEFsc28sCisgICAgICAgIElEQlN0b3JhZ2VDb25u
ZWN0aW9uVG9DbGllbnQgZG9lcyBub3Qga2VlcCByZWZlcmVuY2UgdG8gdGhlIElQQzo6Q29ubmVj
dGlvbiBub3csIGl0IG9ubHkgcmVjb3JkcyAKKyAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpVbmlx
dWVJRC4KKyAgICAgICAgNS4gSW5kZXhlZERCIGRhdGEgbWF5IGJlIHB1dCBpbiBkaWZmZXJlbnQg
dmVyc2lvbiBkaXJjdG9yaWVzLiBXZSB1c2VkIHRvIG1pZ3JhdGUgZGF0YWJhc2UgdG8gbmV3IHZl
cnNpb24gCisgICAgICAgIGRpcmV0b3J5IHdoZW4gdGhlIGRhdGFiYXNlIGlzIGFjY2Vzc2VkLiBB
cyBJREJTdG9yYWdlTWFuYWdlciBub3cgbWFuYWdlcyBJbmRleGVkREIgZGF0YSBvZiBvbmUgb3Jp
Z2luLCBpdCdzIAorICAgICAgICBzaW1wbGVyIGlmIGl0IG9ubHkga2VlcHMgdHJhY2sgb2Ygb25l
IGRpcmVjdG9yeS4gVGhlcmVmb3JlLCB3ZSBub3cgbWlncmF0ZSBhbGwgZGF0YWJhc2VzIG9mIG9u
ZSBvcmlnaW4KKyAgICAgICAgd2hlbiB0aGUgb3JpZ2luIGlzIGFjY2Vzc2VkIChzZWUgSURCU3Rv
cmFnZU1hbmFnZXI6OmlkYlN0b3JhZ2VPcmlnaW5EaXJlY3RvcnkpLiAKKworICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnVwZGF0ZVF1b3RhQmFzZWRP
blNwYWNlVXNhZ2VGb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzRm9ySW5kZXhlZERCKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkaWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzOjpjcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjphZGRXZWJzaXRlRGF0YVN0b3JlKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmZldGNoV2Vic2l0ZURhdGEpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZUFuZFJlc3RyaWN0V2Vic2l0ZURhdGFGb3JS
ZWdpc3RyYWJsZURvbWFpbnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVn
aXN0cmFibGVEb21haW5zV2l0aFdlYnNpdGVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OnByZXBhcmVUb1N1c3BlbmQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6cmVzdW1lKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlc2V0UXVv
dGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGlkSW5jcmVhc2VRdW90YSk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZW5hbWVPcmlnaW5JbldlYnNpdGVE
YXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnN0b3JhZ2VRdW90YU1hbmFn
ZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y29ubmVjdGlvblRvV2ViUHJv
Y2Vzc0Nsb3NlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzdXNwZW5kSURC
U2VydmVycyk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuaDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnNob3VsZFN1c3BlbmRJREJT
ZXJ2ZXJzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vz
c2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjppbnZhbGlkYXRlQW5k
Q2FuY2VsKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OmFkZFN0b3JhZ2VNYW5h
Z2VyU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjplbnN1cmVXZWJJ
REJTZXJ2ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6Y2xv
c2VJREJTZXJ2ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6
YWRkSW5kZXhlZERhdGFiYXNlU2Vzc2lvbik6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Nlc3Npb24uaDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246
OndlYklEQlNlcnZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9u
OjpoYXNJREJEYXRhYmFzZVBhdGggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNh
Y2hlU3RvcmFnZTo6RW5naW5lOjpzdG9yYWdlUGF0aCk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hl
U3RvcmFnZTo6RW5naW5lOjpkaXNrVXNhZ2UpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3Jh
Z2U6OkVuZ2luZTo6cmVxdWVzdFNwYWNlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9D
YWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3Jh
Z2U6OkNhY2hlczo6cmVxdWVzdFNwYWNlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9pb3Mv
TmV0d29ya1Byb2Nlc3NJT1MubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpz
ZXRJc0hvbGRpbmdMb2NrZWRGaWxlcyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFn
ZS9JREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9D
bGllbnQpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50Ojp+
SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3Jh
Z2VDb25uZWN0aW9uVG9DbGllbnQ6OmNvbm5lY3Rpb25Ub0NsaWVudCk6CisgICAgICAgIChXZWJL
aXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZEdldFJlc3VsdCk6CisgICAgICAg
IChXZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZERlbGV0ZURhdGFiYXNl
KToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkT3Bl
bkRhdGFiYXNlKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVu
dDo6ZGlkU3RhcnRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25u
ZWN0aW9uVG9DbGllbnQ6OmRpZEFib3J0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpJ
REJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRDb21taXRUcmFuc2FjdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZENyZWF0ZU9iamVj
dFN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6
ZGlkRGVsZXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVj
dGlvblRvQ2xpZW50OjpkaWRSZW5hbWVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OklE
QlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZENsZWFyT2JqZWN0U3RvcmUpOgorICAgICAg
ICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRDcmVhdGVJbmRleCk6
CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZERlbGV0
ZUluZGV4KToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6
ZGlkUmVuYW1lSW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVjdGlvblRv
Q2xpZW50OjpkaWRQdXRPckFkZCk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0
aW9uVG9DbGllbnQ6OmRpZEdldFJlY29yZCk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VD
b25uZWN0aW9uVG9DbGllbnQ6OmRpZEdldEFsbFJlY29yZHMpOgorICAgICAgICAoV2ViS2l0OjpJ
REJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRHZXRDb3VudCk6CisgICAgICAgIChXZWJL
aXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZERlbGV0ZVJlY29yZCk6CisgICAg
ICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZE9wZW5DdXJzb3Ip
OgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRJdGVy
YXRlQ3Vyc29yKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVu
dDo6ZGlkR2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKToKKyAgICAgICAgKFdlYktpdDo6
SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZmlyZVZlcnNpb25DaGFuZ2VFdmVudCk6Cisg
ICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZENsb3NlRnJv
bVNlcnZlcik6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6
Om5vdGlmeU9wZW5EQlJlcXVlc3RCbG9ja2VkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9z
dG9yYWdlL0lEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQuaDogQWRkZWQuCisgICAgICAgICog
TmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlTWFuYWdlci5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViS2l0OjptaWdyYXRlT3JpZ2luRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0
b3JhZ2VNYW5hZ2VyOjppZGJTdG9yYWdlT3JpZ2luRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktp
dDo6SURCU3RvcmFnZU1hbmFnZXI6OmlkYlN0b3JhZ2VTaXplKToKKyAgICAgICAgKFdlYktpdDo6
Z2V0T3JpZ2luc0ZvclZlcnNpb24pOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlTWFuYWdl
cjo6b3JpZ2luc09mSURCU3RvcmFnZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdl
TWFuYWdlcjo6SURCU3RvcmFnZU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdl
TWFuYWdlcjo6aXNBY3RpdmUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlTWFu
YWdlcjo6aGFzRGF0YUluTWVtb3J5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFn
ZU1hbmFnZXI6OmNsb3NlRGF0YWJhc2VzRm9yRGVsZXRpb24pOgorICAgICAgICAoV2ViS2l0OjpJ
REJTdG9yYWdlTWFuYWdlcjo6c3RvcERhdGFiYXNlQWN0aXZpdGllc0ZvclN1c3BlbmQpOgorICAg
ICAgICAoV2ViS2l0OjpJREJTdG9yYWdlTWFuYWdlcjo6Z2V0T3JDcmVhdGVVbmlxdWVJREJEYXRh
YmFzZSk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VNYW5hZ2VyOjpvcGVuRGF0YWJhc2Up
OgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlRGF0YWJhc2UpOgor
ICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlTWFuYWdlcjo6Z2V0QWxsRGF0YWJhc2VOYW1lc0Fu
ZFZlcnNpb25zKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZU1hbmFnZXI6Om9wZW5EQlJl
cXVlc3RDYW5jZWxsZWQpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlTWFuYWdlcjo6cmVn
aXN0ZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZU1hbmFnZXI6OnVu
cmVnaXN0ZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZU1hbmFnZXI6
OnJlZ2lzdGVyVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlTWFuYWdl
cjo6dW5yZWdpc3RlclRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZU1h
bmFnZXI6OmNyZWF0ZUJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VN
YW5hZ2VyOjpyZXF1ZXN0U3BhY2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2Uv
SURCU3RvcmFnZU1hbmFnZXIuaDogQWRkZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3Rv
cmFnZS9JREJTdG9yYWdlUmVnaXN0cnkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6SURC
U3RvcmFnZVJlZ2lzdHJ5OjpnZXRPckNyZWF0ZUNvbm5lY3Rpb25Ub0NsaWVudCk6CisgICAgICAg
IChXZWJLaXQ6OklEQlN0b3JhZ2VSZWdpc3RyeTo6cmVtb3ZlQ29ubmVjdGlvblRvQ2xpZW50KToK
KyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZVJlZ2lzdHJ5OjpyZWdpc3RlckNvbm5lY3Rpb24p
OgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlUmVnaXN0cnk6OnVucmVnaXN0ZXJDb25uZWN0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZVJlZ2lzdHJ5OjpyZWdpc3RlclRyYW5z
YWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZVJlZ2lzdHJ5Ojp1bnJlZ2lzdGVy
VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlUmVnaXN0cnk6OmdldENv
bm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlUmVnaXN0cnk6OmdldFRyYW5z
YWN0aW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VSZWdp
c3RyeS5oOiBBZGRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtT
dG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdl
cjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpOZXR3
b3JrU3RvcmFnZU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFn
ZXI6OmNhbkhhbmRsZVR5cGVzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5h
Z2VyOjpzdG9wUmVjZWl2aW5nTWVzc2FnZUZyb21Db25uZWN0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpsb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2VyKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkaWRJbmNyZWFzZVF1b3RhKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpnZXRBbGxPcmlnaW5zKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjptb3ZlRGF0YSk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6c3VzcGVuZCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6cmVnaXN0ZXJUZW1wb3JhcnlCbG9iRmlsZVBh
dGhzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpyZXF1ZXN0U3Bh
Y2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnJlc2V0UXVvdGFG
b3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpyZXNl
dFF1b3RhVXBkYXRlZEJhc2VkT25Vc2FnZUZvclRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrU3RvcmFnZU1hbmFnZXI6Om9wZW5EYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtTdG9yYWdlTWFuYWdlcjo6b3BlbkRCUmVxdWVzdENhbmNlbGxlZCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlRGF0YWJhc2UpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmVzdGFibGlzaFRyYW5zYWN0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkYXRhYmFzZUNvbm5lY3Rpb25Q
ZW5kaW5nQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmRh
dGFiYXNlQ29ubmVjdGlvbkNsb3NlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdl
TWFuYWdlcjo6YWJvcnRPcGVuQW5kVXBncmFkZU5lZWRlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudCk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6YWJvcnRUcmFuc2FjdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y29tbWl0VHJhbnNhY3Rpb24pOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmRpZEZpbmlzaEhhbmRsaW5n
VmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyOjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtT
dG9yYWdlTWFuYWdlcjo6ZGVsZXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrU3RvcmFnZU1hbmFnZXI6OnJlbmFtZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjbGVhck9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlSW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnJlbmFtZUluZGV4KToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1N0b3JhZ2VNYW5hZ2VyOjpwdXRPckFkZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtT
dG9yYWdlTWFuYWdlcjo6Z2V0UmVjb3JkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyOjpnZXRBbGxSZWNvcmRzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyOjpnZXRDb3VudCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFu
YWdlcjo6ZGVsZXRlUmVjb3JkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5h
Z2VyOjpvcGVuQ3Vyc29yKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2Vy
OjppdGVyYXRlQ3Vyc29yKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2Vy
OjpnZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIubWVzc2FnZXMuaW46CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0OjpTdG9yYWdl
QnVja2V0KToKKyAgICAgICAgKFdlYktpdDo6T3JpZ2luU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VC
dWNrZXQ6OnRvV2Vic2l0ZURhdGFUeXBlKToKKyAgICAgICAgKFdlYktpdDo6T3JpZ2luU3RvcmFn
ZU1hbmFnZXI6OlN0b3JhZ2VCdWNrZXQ6OnRvU3RvcmFnZUlkZW50aWZpZXIpOgorICAgICAgICAo
V2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldDo6aWRiU3RvcmFnZU1h
bmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1
Y2tldDo6ZXhpc3RpbmdJREJTdG9yYWdlTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdp
blN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0Ojppc0FjdGl2ZSBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0Ojppc0VtcHR5IGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6T3JpZ2luU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VCdWNr
ZXQ6OmRlbGV0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6
U3RvcmFnZUJ1Y2tldDo6bW92ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdl
TWFuYWdlcjo6U3RvcmFnZUJ1Y2tldDo6ZmV0Y2hEYXRhVHlwZXNJbkxpc3RGcm9tTWVtb3J5KToK
KyAgICAgICAgKFdlYktpdDo6T3JpZ2luU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VCdWNrZXQ6OmZl
dGNoRGF0YVR5cGVzSW5MaXN0RnJvbURpc2spOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9y
YWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldDo6ZGVsZXRlSURCU3RvcmFnZURhdGEpOgorICAgICAg
ICAoV2ViS2l0OjpjcmVhdGVRdW90YU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5T
dG9yYWdlTWFuYWdlcjo6T3JpZ2luU3RvcmFnZU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpP
cmlnaW5TdG9yYWdlTWFuYWdlcjo6ZGVmYXVsdEJ1Y2tldCk6CisgICAgICAgIChXZWJLaXQ6Ok9y
aWdpblN0b3JhZ2VNYW5hZ2VyOjpxdW90YU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpPcmln
aW5TdG9yYWdlTWFuYWdlcjo6aWRiU3RvcmFnZU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpP
cmlnaW5TdG9yYWdlTWFuYWdlcjo6ZXhpc3RpbmdJREJTdG9yYWdlTWFuYWdlcik6CisgICAgICAg
IChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjptb3ZlRGF0YSk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL3N0b3JhZ2UvUXVvdGFNYW5hZ2VyLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OlF1b3RhTWFuYWdlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UXVvdGFNYW5h
Z2VyOjpRdW90YU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpRdW90YU1hbmFnZXI6OnJlcXVl
c3RTcGFjZSk6CisgICAgICAgIChXZWJLaXQ6OlF1b3RhTWFuYWdlcjo6aGFuZGxlUmVxdWVzdHMp
OgorICAgICAgICAoV2ViS2l0OjpRdW90YU1hbmFnZXI6OmdyYW50V2l0aEN1cnJlbnRRdW90YSk6
CisgICAgICAgIChXZWJLaXQ6OlF1b3RhTWFuYWdlcjo6Z3JhbnRGYXN0UGF0aCk6CisgICAgICAg
IChXZWJLaXQ6OlF1b3RhTWFuYWdlcjo6ZGlkSW5jcmVhc2VRdW90YSk6CisgICAgICAgIChXZWJL
aXQ6OlF1b3RhTWFuYWdlcjo6cmVzZXRRdW90YVVwZGF0ZWRCYXNlZE9uVXNhZ2VGb3JUZXN0aW5n
KToKKyAgICAgICAgKFdlYktpdDo6UXVvdGFNYW5hZ2VyOjpyZXNldFF1b3RhRm9yVGVzdGluZyk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9RdW90YU1hbmFnZXIuaDogQWRkZWQu
CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICh0eXBlc190
aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKToKKyAgICAgICAgKiBTaGFyZWQvV2Vic2l0
ZURhdGEvUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLmg6IEFkZGVkLgorICAgICAgICAq
IFNoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oOgorICAgICAgICAqIFNvdXJjZXMu
dHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjppbmNyZWFzZVF1b3RhKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnBlclRoaXJkUGFydHlPcmlnaW5TdG9y
YWdlUXVvdGEgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRQ
ZXJPcmlnaW5RdW90YSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb246OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24u
aDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpkZWxldGVE
YXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6b3Bl
bkRhdGFiYXNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjph
Ym9ydFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvU2Vy
dmVyOjpjb21taXRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rp
b25Ub1NlcnZlcjo6ZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmNyZWF0ZU9iamVjdFN0
b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpkZWxldGVP
YmplY3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6
cmVuYW1lT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9T
ZXJ2ZXI6OmNsZWFyT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0
aW9uVG9TZXJ2ZXI6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVj
dGlvblRvU2VydmVyOjpkZWxldGVJbmRleCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5l
Y3Rpb25Ub1NlcnZlcjo6cmVuYW1lSW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25u
ZWN0aW9uVG9TZXJ2ZXI6OnB1dE9yQWRkKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVj
dGlvblRvU2VydmVyOjpnZXRSZWNvcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0
aW9uVG9TZXJ2ZXI6OmdldEFsbFJlY29yZHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25u
ZWN0aW9uVG9TZXJ2ZXI6OmdldENvdW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVj
dGlvblRvU2VydmVyOjpkZWxldGVSZWNvcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25u
ZWN0aW9uVG9TZXJ2ZXI6Om9wZW5DdXJzb3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25u
ZWN0aW9uVG9TZXJ2ZXI6Oml0ZXJhdGVDdXJzb3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJD
b25uZWN0aW9uVG9TZXJ2ZXI6OmVzdGFibGlzaFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpkYXRhYmFzZUNvbm5lY3Rpb25QZW5kaW5nQ2xv
c2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRhdGFiYXNl
Q29ubmVjdGlvbkNsb3NlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub1Nl
cnZlcjo6YWJvcnRPcGVuQW5kVXBncmFkZU5lZWRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYklE
QkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudCk6CisgICAgICAg
IChXZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6b3BlbkRCUmVxdWVzdENhbmNlbGxl
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Z2V0QWxsRGF0
YWJhc2VOYW1lc0FuZFZlcnNpb25zKToKKwogMjAyMi0wMi0wMyAgU2lodWkgTGl1ICA8c2lodWlf
bGl1QGFwcGxlLmNvbT4KIAogICAgICAgICBEZWxheSB3cml0aW5nIG9yaWdpbiBmaWxlIGluIE5l
dHdvcmtTdG9yYWdlTWFuYWdlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwppbmRleCBlNmJhNzMyMmMzNDhl
Y2RlNDc5NGUwOTQ5OTViYWI0ODk2YmY1YTQ5Li5mMTQ2MDI5MTQzMjM0NGM1N2ZmMDY0YTdkZTVk
N2U5MDZkNGVlNzRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIy
LTAyLTAzICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIE1hbmFn
ZSBJbmRleGVkREIgc3RvcmFnZSBieSBvcmlnaW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDkyNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODc1
NTUwMTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBTdG9yYWdlL0luUHJvY2Vzc0lEQlNlcnZlci5jcHA6CisgICAgICAgIChJblByb2Nlc3NJREJT
ZXJ2ZXI6OnF1b3RhTWFuYWdlcik6CisKIDIwMjItMDItMDIgIEVsbGlvdHQgV2lsbGlhbXMgIDxl
bXdAYXBwbGUuY29tPgogCiAgICAgICAgIFtYY29kZV0gRml4IHJlZHVuZGFudCBleGVjdXRpb24g
b2YgIkNoZWNrIFZUYWJsZXMuLi4iIHNjcmlwdApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
RmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAppbmRleCAzODgz
YWMyNjYzZDBhMjAyMzJjYjVlMDliNGU0NTk2OGIwMDE2N2I5Li41MDQxMDNlZDBlNGMxZTAzYzEw
OWY0ZjdmMTljODhkODlhMGZmYmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lz
dGVtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcApAQCAtNjYwLDYgKzY2
MCwxNSBAQCBib29sIGNyZWF0ZVN5bWJvbGljTGluayhjb25zdCBTdHJpbmcmIHRhcmdldFBhdGgs
IGNvbnN0IFN0cmluZyYgc3ltYm9saWNMaW5rUGF0aAogICAgIHJldHVybiAhZWM7CiB9CiAKK1N0
cmluZyBnZXRTeW1ib2xpY0xpbmtUYXJnZXQoY29uc3QgU3RyaW5nJiBzeW1ib2xpY0xpbmtQYXRo
KQoreworICAgIGF1dG8gZmlsZVN5c3RlbVBhdGggPSB0b1N0ZEZpbGVTeXN0ZW1QYXRoKHN5bWJv
bGljTGlua1BhdGgpOworICAgIGlmICghc3RkOjpmaWxlc3lzdGVtOjppc19zeW1saW5rKGZpbGVT
eXN0ZW1QYXRoKSkKKyAgICAgICAgcmV0dXJuIHN5bWJvbGljTGlua1BhdGg7CisKKyAgICByZXR1
cm4gZnJvbVN0ZEZpbGVTeXN0ZW1QYXRoKHN0ZDo6ZmlsZXN5c3RlbTo6cmVhZF9zeW1saW5rKGZp
bGVTeXN0ZW1QYXRoKSk7Cit9CisKIGJvb2wgaGFyZExpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQ
YXRoLCBjb25zdCBTdHJpbmcmIGxpbmtQYXRoKQogewogICAgIHN0ZDo6ZXJyb3JfY29kZSBlYzsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9XVEYvd3Rm
L0ZpbGVTeXN0ZW0uaAppbmRleCBjZTY4MTI4NjBhMDBmOTAyZjI5OTgzZjQ4Y2IxY2ExZWQxOGI5
MDk3Li45ZDhlNDliNTE4YzRlMGQ0ZjMyNmY0YzRhMWNkNzc3ZTNiMjg4ZmUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKKysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5
c3RlbS5oCkBAIC0xMjcsNiArMTI3LDcgQEAgV1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0aW9u
YWw8dWludDY0X3Q+IHZvbHVtZUZyZWVTcGFjZShjb25zdCBTdHJpbmcmKTsKIFdURl9FWFBPUlRf
UFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiB2b2x1bWVGaWxlQmxvY2tTaXplKGNvbnN0
IFN0cmluZyYpOwogV1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0
RmlsZURldmljZUlkKGNvbnN0IENTdHJpbmcmKTsKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGNy
ZWF0ZVN5bWJvbGljTGluayhjb25zdCBTdHJpbmcmIHRhcmdldFBhdGgsIGNvbnN0IFN0cmluZyYg
c3ltYm9saWNMaW5rUGF0aCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGdldFN5bWJvbGlj
TGlua1RhcmdldChjb25zdCBTdHJpbmcmIHN5bWJvbGljTGlua1BhdGgpOwogV1RGX0VYUE9SVF9Q
UklWQVRFIFN0cmluZyBjcmVhdGVUZW1wb3JhcnlaaXBBcmNoaXZlKGNvbnN0IFN0cmluZyYgZGly
ZWN0b3J5KTsKIAogZW51bSBjbGFzcyBGaWxlVHlwZSB7IFJlZ3VsYXIsIERpcmVjdG9yeSwgU3lt
Ym9saWNMaW5rIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIv
U291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCA2Y2IxNzQ1OWE3ZGE4NGY1YTI2Mjk5
ZDY3MDhiMmM3YjczYzBkNmM2Li4xZTZlYWEzMTIxY2ZiOTZlMzJhMjgzOThhN2U5MGQxY2Y3OTk4
NzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTIyNCwxMSArMjI0LDE1IEBAIHNldChXZWJDb3Jl
X1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
SURCQ29ubmVjdGlvblRvQ2xpZW50LmgKICAgICBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURC
Q29ubmVjdGlvblRvQ2xpZW50RGVsZWdhdGUuaAogICAgIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9JREJTZXJ2ZXIuaAorICAgIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JbmRleFZhbHVlRW50
cnkuaAorICAgIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JbmRleFZhbHVlU3RvcmUuaAorICAg
IE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbi5o
CiAgICAgTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5oCiAg
ICAgTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5oCiAgICAg
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NlcnZlck9wZW5EQlJlcXVlc3QuaAogICAgIE1vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oCiAgICAgTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5oCisgICAgTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlci5oCiAgICAgTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uaAogCiAgICAgTW9k
dWxlcy9pbmRleGVkZGIvc2hhcmVkL0luZGV4S2V5LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmgKaW5kZXggNmMw
YjFiNGYyYWIwYzAzMzA3NjY1NGVhNGIyNzY1NTk0NDU4OTUzNi4uN2YwOWJmYjMyZDUxZTk3ZmE3
ZWQ0ZTQ1ZDUxMTMzOGU1YjgxMTdlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmgKQEAgLTgyLDcgKzgyLDcg
QEAgcHVibGljOgogICAgIGJvb2wgaXNUcmFuc2llbnQoKSBjb25zdCB7IHJldHVybiBtX2lzVHJh
bnNpZW50OyB9CiAKICAgICBTdHJpbmcgZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9vdChj
b25zdCBTdHJpbmcmIHJvb3REaXJlY3RvcnksIGNvbnN0IFN0cmluZyYgdmVyc2lvblN0cmluZz0i
djEiKSBjb25zdDsKLSAgICBzdGF0aWMgU3RyaW5nIGRhdGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVU
b1Jvb3QoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiB0b3BMZXZlbE9yaWdpbiwgY29uc3QgU2Vj
dXJpdHlPcmlnaW5EYXRhJiBvcGVuaW5nT3JpZ2luLCBjb25zdCBTdHJpbmcmIHJvb3REaXJlY3Rv
cnksIGNvbnN0IFN0cmluZyYgdmVyc2lvblN0cmluZyk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFN0cmluZyBkYXRhYmFzZURpcmVjdG9yeVJlbGF0aXZlVG9Sb290KGNvbnN0IFNlY3VyaXR5
T3JpZ2luRGF0YSYgdG9wTGV2ZWxPcmlnaW4sIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3Bl
bmluZ09yaWdpbiwgY29uc3QgU3RyaW5nJiByb290RGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIHZl
cnNpb25TdHJpbmcpOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUo
RW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPElEQkRhdGFiYXNlSWRlbnRpZmllcj4gZGVjb2RlKERlY29kZXImKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0
aW9uVG9DbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9J
REJDb25uZWN0aW9uVG9DbGllbnQuaAppbmRleCAyN2Y3MjY5MTlmMTQyMWYyMWE1ZjAzZmZkZmMx
NzZkNGM0YmRmM2MyLi5mMDVhYzJmOGM4MmE4MDljMjcxYzlkZjU5N2Y5NjQ3MzE5ZWY2NDYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQ29u
bmVjdGlvblRvQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL0lEQkNvbm5lY3Rpb25Ub0NsaWVudC5oCkBAIC03NCwxMSArNzQsMTEgQEAgcHVibGlj
OgogCiAgICAgdm9pZCBub3RpZnlPcGVuREJSZXF1ZXN0QmxvY2tlZChjb25zdCBJREJSZXNvdXJj
ZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBvbGRWZXJzaW9uLCB1aW50
NjRfdCBuZXdWZXJzaW9uKTsKIAotICAgIHZvaWQgZGlkR2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZl
cnNpb25zKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYsIFZlY3RvcjxJREJEYXRhYmFzZU5h
bWVBbmRWZXJzaW9uPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZEdldEFsbERhdGFi
YXNlTmFtZXNBbmRWZXJzaW9ucyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImLCBWZWN0b3I8
SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbj4mJik7CiAKICAgICB2b2lkIHJlZ2lzdGVyRGF0YWJh
c2VDb25uZWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYpOwogICAgIHZvaWQgdW5y
ZWdpc3RlckRhdGFiYXNlQ29ubmVjdGlvbihVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mKTsK
LSAgICB2b2lkIGNvbm5lY3Rpb25Ub0NsaWVudENsb3NlZCgpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgY29ubmVjdGlvblRvQ2xpZW50Q2xvc2VkKCk7CiAgICAgYm9vbCBpc0Nsb3NlZCgpIHsg
cmV0dXJuIG1faXNDbG9zZWQ7IH0KICAgICB2b2lkIGNsZWFyRGVsZWdhdGUoKSB7IG1fZGVsZWdh
dGUgPSBudWxscHRyOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKaW5kZXggZDI2NjkzMTgwODQ2YWY2NjY4OWUxN2Fl
YTNmZjk5NzE5NTVhZTM2ZS4uNGJhZDQ0MmIxYjNhOWE0MTc4NTkwNDJmODE2NTc3ZTA3YjEzYmE4
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lE
QlNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L0lEQlNlcnZlci5jcHAKQEAgLTEwMSwxMyArMTAxLDEzIEBAIHZvaWQgSURCU2VydmVyOjp1bnJl
Z2lzdGVyVHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rp
b24pCiAgICAgbV90cmFuc2FjdGlvbnMucmVtb3ZlKHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlm
aWVyKCkpOwogfQogCi12b2lkIElEQlNlcnZlcjo6cmVnaXN0ZXJEYXRhYmFzZUNvbm5lY3Rpb24o
VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiBjb25uZWN0aW9uKQordm9pZCBJREJTZXJ2ZXI6
OnJlZ2lzdGVyQ29ubmVjdGlvbihVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24pCiB7CiAgICAgQVNTRVJUKCFtX2RhdGFiYXNlQ29ubmVjdGlvbnMuY29udGFpbnMoY29ubmVj
dGlvbi5pZGVudGlmaWVyKCkpKTsKICAgICBtX2RhdGFiYXNlQ29ubmVjdGlvbnMuc2V0KGNvbm5l
Y3Rpb24uaWRlbnRpZmllcigpLCAmY29ubmVjdGlvbik7CiB9CiAKLXZvaWQgSURCU2VydmVyOjp1
bnJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYg
Y29ubmVjdGlvbikKK3ZvaWQgSURCU2VydmVyOjp1bnJlZ2lzdGVyQ29ubmVjdGlvbihVbmlxdWVJ
REJEYXRhYmFzZUNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiB7CiAgICAgQVNTRVJUKG1fZGF0YWJh
c2VDb25uZWN0aW9ucy5jb250YWlucyhjb25uZWN0aW9uLmlkZW50aWZpZXIoKSkpOwogICAgIG1f
ZGF0YWJhc2VDb25uZWN0aW9ucy5yZW1vdmUoY29ubmVjdGlvbi5pZGVudGlmaWVyKCkpOwpAQCAt
MTI4LDEzICsxMjgsMTMgQEAgc3RkOjp1bmlxdWVfcHRyPElEQkJhY2tpbmdTdG9yZT4gSURCU2Vy
dmVyOjpjcmVhdGVCYWNraW5nU3RvcmUoY29uc3QgSURCRGF0YWJhc2UKIHsKICAgICBBU1NFUlQo
IWlzTWFpblRocmVhZCgpKTsKICAgICBpZiAobV9kYXRhYmFzZURpcmVjdG9yeVBhdGguaXNFbXB0
eSgpKQotICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxNZW1vcnlJREJCYWNraW5nU3RvcmU+KG1f
c2Vzc2lvbklELCBpZGVudGlmaWVyKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TWVtb3J5
SURCQmFja2luZ1N0b3JlPihpZGVudGlmaWVyKTsKIAogICAgIEFTU0VSVCghbV9zZXNzaW9uSUQu
aXNFcGhlbWVyYWwoKSk7CiAgICAgaWYgKGlkZW50aWZpZXIuaXNUcmFuc2llbnQoKSkKLSAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8TWVtb3J5SURCQmFja2luZ1N0b3JlPihtX3Nlc3Npb25JRCwg
aWRlbnRpZmllcik7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPE1lbW9yeUlEQkJhY2tpbmdT
dG9yZT4oaWRlbnRpZmllcik7CiAKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxTUUxpdGVJREJCYWNr
aW5nU3RvcmU+KG1fc2Vzc2lvbklELCBpZGVudGlmaWVyLCBtX2RhdGFiYXNlRGlyZWN0b3J5UGF0
aCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1FMaXRlSURCQmFja2luZ1N0b3JlPihpZGVudGlm
aWVyLCB1cGdyYWRlZERhdGFiYXNlRGlyZWN0b3J5KGlkZW50aWZpZXIpKTsKIH0KIAogdm9pZCBJ
REJTZXJ2ZXI6Om9wZW5EYXRhYmFzZShjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEp
CkBAIC0xNzcsMTcgKzE3Nyw2IEBAIHZvaWQgSURCU2VydmVyOjpkZWxldGVEYXRhYmFzZShjb25z
dCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEpCiAgICAgICAgIG1fdW5pcXVlSURCRGF0YWJh
c2VNYXAucmVtb3ZlKGRhdGFiYXNlLT5pZGVudGlmaWVyKCkpOwogfQogCi1zdGQ6OnVuaXF1ZV9w
dHI8VW5pcXVlSURCRGF0YWJhc2U+IElEQlNlcnZlcjo6Y2xvc2VBbmRUYWtlVW5pcXVlSURCRGF0
YWJhc2UoVW5pcXVlSURCRGF0YWJhc2UmIGRhdGFiYXNlKQotewotICAgIExPRyhJbmRleGVkREIs
ICJJREJTZXJ2ZXI6OmNsb3NlVW5pcXVlSURCRGF0YWJhc2UiKTsKLSAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwotCi0gICAgYXV0byB1bmlxdWVQb2ludGVyID0gbV91bmlxdWVJREJEYXRhYmFz
ZU1hcC50YWtlKGRhdGFiYXNlLmlkZW50aWZpZXIoKSk7Ci0gICAgQVNTRVJUKHVuaXF1ZVBvaW50
ZXIpOwotCi0gICAgcmV0dXJuIHVuaXF1ZVBvaW50ZXI7Ci19Ci0KIHZvaWQgSURCU2VydmVyOjph
Ym9ydFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25J
ZGVudGlmaWVyKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJTZXJ2ZXI6OmFib3J0VHJhbnNh
Y3Rpb24iKTsKQEAgLTc1MCw3ICs3MzksNyBAQCB2b2lkIElEQlNlcnZlcjo6cmVuYW1lT3JpZ2lu
KGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgb2xkT3JpZ2luLCBjb25zdAogICAg
ICAgICBGaWxlU3lzdGVtOjptb3ZlRmlsZShvbGRPcmlnaW5QYXRoLCBuZXdPcmlnaW5QYXRoKTsK
IH0KIAotU3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb24gSURCU2VydmVyOjpyZXF1ZXN0U3Bh
Y2UoY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4sIHVpbnQ2NF90IHRhc2tTaXplKSBXVEZfSUdO
T1JFU19USFJFQURfU0FGRVRZX0FOQUxZU0lTCit2b2lkIElEQlNlcnZlcjo6cmVxdWVzdFNwYWNl
KGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2luLCB1aW50NjRfdCB0YXNrU2l6ZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgV1RGX0lHTk9SRVNfVEhS
RUFEX1NBRkVUWV9BTkFMWVNJUwogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAg
IEFTU0VSVChtX2xvY2suaXNIZWxkKCkpOwpAQCAtNzYyLDcgKzc1MSw3IEBAIFN0b3JhZ2VRdW90
YU1hbmFnZXI6OkRlY2lzaW9uIElEQlNlcnZlcjo6cmVxdWVzdFNwYWNlKGNvbnN0IENsaWVudE9y
aWdpbiYgb3JpZ2luCiAgICAgcmVzdWx0ID0gbV9zcGFjZVJlcXVlc3RlcihvcmlnaW4sIHRhc2tT
aXplKTsKICAgICBtX2xvY2subG9jaygpOwogCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICBjb21w
bGV0aW9uSGFuZGxlcihyZXN1bHQgPT0gU3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb246Okdy
YW50KTsKIH0KIAogdWludDY0X3QgSURCU2VydmVyOjpkaXNrVXNhZ2UoY29uc3QgU3RyaW5nJiBy
b290RGlyZWN0b3J5LCBjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbikKQEAgLTc4NCw2ICs3NzMs
MjMgQEAgdm9pZCBJREJTZXJ2ZXI6OnVwZ3JhZGVGaWxlc0lmTmVjZXNzYXJ5KCkKICAgICAgICAg
RmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKG5ld1ZlcnNpb25EaXJlY3RvcnkpOwogfQog
CitTdHJpbmcgSURCU2VydmVyOjp1cGdyYWRlZERhdGFiYXNlRGlyZWN0b3J5KGNvbnN0IFdlYkNv
cmU6OklEQkRhdGFiYXNlSWRlbnRpZmllciYgaWRlbnRpZmllcikKK3sKKyAgICBTdHJpbmcgb2xk
T3JpZ2luRGlyZWN0b3J5ID0gaWRlbnRpZmllci5kYXRhYmFzZURpcmVjdG9yeVJlbGF0aXZlVG9S
b290KG1fZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCAidjAiKTsKKyAgICBTdHJpbmcgb2xkRGF0YWJh
c2VEaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQob2xkT3Jp
Z2luRGlyZWN0b3J5LCBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmVuY29kZURhdGFiYXNlTmFtZShp
ZGVudGlmaWVyLmRhdGFiYXNlTmFtZSgpKSk7CisgICAgU3RyaW5nIG5ld09yaWdpbkRpcmVjdG9y
eSA9IGlkZW50aWZpZXIuZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9vdChtX2RhdGFiYXNl
RGlyZWN0b3J5UGF0aCwgInYxIik7CisgICAgU3RyaW5nIGZpbGVOYW1lSGFzaCA9IFNRTGl0ZUZp
bGVTeXN0ZW06OmNvbXB1dGVIYXNoRm9yRmlsZU5hbWUoaWRlbnRpZmllci5kYXRhYmFzZU5hbWUo
KSk7CisgICAgU3RyaW5nIG5ld0RhdGFiYXNlRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KG5ld09yaWdpbkRpcmVjdG9yeSwgZmlsZU5hbWVIYXNoKTsKKyAg
ICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMobmV3RGF0YWJhc2VEaXJlY3RvcnkpOwor
CisgICAgaWYgKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMob2xkRGF0YWJhc2VEaXJlY3RvcnkpKSB7
CisgICAgICAgIEZpbGVTeXN0ZW06Om1vdmVGaWxlKG9sZERhdGFiYXNlRGlyZWN0b3J5LCBuZXdE
YXRhYmFzZURpcmVjdG9yeSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0
b3J5KG9sZE9yaWdpbkRpcmVjdG9yeSk7CisgICAgfQorCisgICAgcmV0dXJuIG5ld0RhdGFiYXNl
RGlyZWN0b3J5OworfQorCiBib29sIElEQlNlcnZlcjo6aGFzRGF0YWJhc2VBY3Rpdml0aWVzT25N
YWluVGhyZWFkKCkgY29uc3QKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5oCmlu
ZGV4IGQ4ODM2NDlhNWM4ZDViNTlmMDJjMmJkYWNkZGU2NzhhMWNhM2M0MmYuLmI0MzEzZDlhMTA2
MDhiN2QzNDJmNmIwODc1YmM3NjQ2MmY3YzAxNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmgKQEAgLTMwLDYgKzMwLDcgQEAK
ICNpbmNsdWRlICJTdG9yYWdlUXVvdGFNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiVW5pcXVlSURCRGF0
YWJhc2UuaCIKICNpbmNsdWRlICJVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uaCIKKyNpbmNs
dWRlICJVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuaCIKICNpbmNsdWRlIDxwYWwvSHlzdGVyZXNp
c0FjdGl2aXR5Lmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9D
cm9zc1RocmVhZFRhc2tIYW5kbGVyLmg+CkBAIC00OCw4ICs0OSw3IEBAIHN0cnVjdCBJREJHZXRS
ZWNvcmREYXRhOwogCiBuYW1lc3BhY2UgSURCU2VydmVyIHsKIAotY2xhc3MgSURCU2VydmVyIHsK
LSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK2NsYXNzIElEQlNlcnZlciA6IHB1YmxpYyBV
bmlxdWVJREJEYXRhYmFzZU1hbmFnZXIgewogcHVibGljOgogICAgIHVzaW5nIFN0b3JhZ2VRdW90
YU1hbmFnZXJTcGFjZVJlcXVlc3RlciA9IEZ1bmN0aW9uPFN0b3JhZ2VRdW90YU1hbmFnZXI6OkRl
Y2lzaW9uKGNvbnN0IENsaWVudE9yaWdpbiYsIHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkKT47CiAg
ICAgV0VCQ09SRV9FWFBPUlQgSURCU2VydmVyKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcm
IGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwgU3RvcmFnZVF1b3RhTWFuYWdlclNwYWNlUmVxdWVzdGVy
JiYsIExvY2smKTsKQEAgLTg4LDE1ICs4OCwxMSBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhJREJDb25uZWN0aW9uSWRl
bnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiwgY29uc3QgQ2xpZW50T3JpZ2lu
Jik7CiAKLQotICAgIHZvaWQgcmVnaXN0ZXJEYXRhYmFzZUNvbm5lY3Rpb24oVW5pcXVlSURCRGF0
YWJhc2VDb25uZWN0aW9uJik7Ci0gICAgdm9pZCB1bnJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0aW9u
KFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYpOwotICAgIHZvaWQgcmVnaXN0ZXJUcmFuc2Fj
dGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJik7Ci0gICAgdm9pZCB1bnJlZ2lzdGVy
VHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYpOwotCi0gICAgc3RkOjp1
bmlxdWVfcHRyPFVuaXF1ZUlEQkRhdGFiYXNlPiBjbG9zZUFuZFRha2VVbmlxdWVJREJEYXRhYmFz
ZShVbmlxdWVJREJEYXRhYmFzZSYpOwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPElEQkJhY2tpbmdT
dG9yZT4gY3JlYXRlQmFja2luZ1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYpOwor
ICAgIHZvaWQgcmVnaXN0ZXJDb25uZWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYp
IGZpbmFsOworICAgIHZvaWQgdW5yZWdpc3RlckNvbm5lY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VD
b25uZWN0aW9uJikgZmluYWw7CisgICAgdm9pZCByZWdpc3RlclRyYW5zYWN0aW9uKFVuaXF1ZUlE
QkRhdGFiYXNlVHJhbnNhY3Rpb24mKSBmaW5hbDsKKyAgICB2b2lkIHVucmVnaXN0ZXJUcmFuc2Fj
dGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJikgZmluYWw7CisgICAgc3RkOjp1bmlx
dWVfcHRyPElEQkJhY2tpbmdTdG9yZT4gY3JlYXRlQmFja2luZ1N0b3JlKGNvbnN0IElEQkRhdGFi
YXNlSWRlbnRpZmllciYpIGZpbmFsOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgSGFzaFNldDxTZWN1
cml0eU9yaWdpbkRhdGE+IGdldE9yaWdpbnMoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzTW9kaWZpZWRTaW5jZShXYWxsVGltZSk7CkBAIC0x
MDQsNyArMTAwLDcgQEAgcHVibGljOgogICAgIHZvaWQgY2xvc2VEYXRhYmFzZXNGb3JPcmlnaW5z
KGNvbnN0IFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+JiwgRnVuY3Rpb248Ym9vbChjb25zdCBT
ZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBDbGllbnRPcmlnaW4mKT4mJik7CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCByZW5hbWVPcmlnaW4oY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhJiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJik7CiAKLSAgICBTdG9yYWdl
UXVvdGFNYW5hZ2VyOjpEZWNpc2lvbiByZXF1ZXN0U3BhY2UoY29uc3QgQ2xpZW50T3JpZ2luJiwg
dWludDY0X3QgdGFza1NpemUpOworICAgIHZvaWQgcmVxdWVzdFNwYWNlKGNvbnN0IENsaWVudE9y
aWdpbiYsIHVpbnQ2NF90IHNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZp
bmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB1aW50NjRfdCBkaXNrVXNhZ2UoY29uc3Qg
U3RyaW5nJiByb290RGlyZWN0b3J5LCBjb25zdCBDbGllbnRPcmlnaW4mKTsKIAogICAgIFdFQkNP
UkVfRVhQT1JUIGJvb2wgaGFzRGF0YWJhc2VBY3Rpdml0aWVzT25NYWluVGhyZWFkKCkgY29uc3Q7
CkBAIC0xMTQsNiArMTEwLDcgQEAgcHJpdmF0ZToKICAgICBVbmlxdWVJREJEYXRhYmFzZSYgZ2V0
T3JDcmVhdGVVbmlxdWVJREJEYXRhYmFzZShjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImKTsK
IAogICAgIHZvaWQgdXBncmFkZUZpbGVzSWZOZWNlc3NhcnkoKTsKKyAgICBTdHJpbmcgdXBncmFk
ZWREYXRhYmFzZURpcmVjdG9yeShjb25zdCBXZWJDb3JlOjpJREJEYXRhYmFzZUlkZW50aWZpZXIm
KTsKICAgICB2b2lkIHJlbW92ZURhdGFiYXNlc01vZGlmaWVkU2luY2VGb3JWZXJzaW9uKFdhbGxU
aW1lLCBjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHJlbW92ZURhdGFiYXNlc1dpdGhPcmlnaW5z
Rm9yVmVyc2lvbihjb25zdCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiYsIGNvbnN0IFN0cmlu
ZyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDdlZTQxNDBhOGFm
MTgwMTFjOTZiY2E3YjYwOGQ4NjU5MThhZjg1ZWEuLmQ2MzM1MDMwOTkzMDU1YjliMTJiNzg0NTY1
NWRhODMzNzJiMWE1NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwCkBAIC00
NCw5ICs0NCw4IEBAIG5hbWVzcGFjZSBJREJTZXJ2ZXIgewogLy8gVGhlIEluZGV4ZWREQiBzcGVj
IHN0YXRlcyB0aGUgbWF4aW11bSB2YWx1ZSB5b3UgY2FuIGdldCBmcm9tIHRoZSBrZXkgZ2VuZXJh
dG9yIGlzIDJeNTMuCiBjb25zdGV4cHIgdWludDY0X3QgbWF4R2VuZXJhdGVkS2V5VmFsdWUgPSAw
eDIwMDAwMDAwMDAwMDAwOwogCi1NZW1vcnlJREJCYWNraW5nU3RvcmU6Ok1lbW9yeUlEQkJhY2tp
bmdTdG9yZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IElEQkRhdGFiYXNlSWRlbnRp
ZmllciYgaWRlbnRpZmllcikKK01lbW9yeUlEQkJhY2tpbmdTdG9yZTo6TWVtb3J5SURCQmFja2lu
Z1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYgaWRlbnRpZmllcikKICAgICA6IG1f
aWRlbnRpZmllcihpZGVudGlmaWVyKQotICAgICwgbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQogewog
fQogCkBAIC0xMzQsNyArMTMzLDcgQEAgSURCRXJyb3IgTWVtb3J5SURCQmFja2luZ1N0b3JlOjpj
cmVhdGVPYmplY3RTdG9yZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHQKICAgICAgICAg
cmV0dXJuIElEQkVycm9yIHsgQ29uc3RyYWludEVycm9yIH07CiAKICAgICBBU1NFUlQoIW1fb2Jq
ZWN0U3RvcmVzQnlJZGVudGlmaWVyLmNvbnRhaW5zKGluZm8uaWRlbnRpZmllcigpKSk7Ci0gICAg
YXV0byBvYmplY3RTdG9yZSA9IE1lbW9yeU9iamVjdFN0b3JlOjpjcmVhdGUobV9zZXNzaW9uSUQs
IGluZm8pOworICAgIGF1dG8gb2JqZWN0U3RvcmUgPSBNZW1vcnlPYmplY3RTdG9yZTo6Y3JlYXRl
KGluZm8pOwogCiAgICAgbV9kYXRhYmFzZUluZm8tPmFkZEV4aXN0aW5nT2JqZWN0U3RvcmUoaW5m
byk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9NZW1vcnlJREJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuaAppbmRleCA5MmFhNzYwZDIwNzMzNzE4
ZmJkYjhjMDQ0Y2ZlNjdkY2FiMTY1MzM1Li45YzgyMTFiNTkwNjU3YWY2ODA1MTI0MjI5YjEwMjkx
MWMyYzAwZWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5oCkBAIC0zMCw3ICszMCw2
IEBACiAjaW5jbHVkZSAiSURCUmVzb3VyY2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSW5kZXhL
ZXkuaCIKICNpbmNsdWRlICJNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbi5oIgotI2luY2x1
ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC00MSw4ICs0MCw4IEBAIGNsYXNzIE1lbW9yeU9iamVjdFN0b3JlOwog
Y2xhc3MgTWVtb3J5SURCQmFja2luZ1N0b3JlIGZpbmFsIDogcHVibGljIElEQkJhY2tpbmdTdG9y
ZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgTWVtb3J5SURC
QmFja2luZ1N0b3JlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXIm
KTsKLSAgICB+TWVtb3J5SURCQmFja2luZ1N0b3JlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgTWVt
b3J5SURCQmFja2luZ1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYpOworICAgIFdF
QkNPUkVfRVhQT1JUIH5NZW1vcnlJREJCYWNraW5nU3RvcmUoKTsKIAogICAgIElEQkVycm9yIGdl
dE9yRXN0YWJsaXNoRGF0YWJhc2VJbmZvKElEQkRhdGFiYXNlSW5mbyYpIGZpbmFsOwogICAgIHVp
bnQ2NF90IGRhdGFiYXNlVmVyc2lvbigpIGZpbmFsOwpAQCAtOTIsNyArOTEsNiBAQCBwcml2YXRl
OgogICAgIHZvaWQgdW5yZWdpc3Rlck9iamVjdFN0b3JlKE1lbW9yeU9iamVjdFN0b3JlJik7CiAK
ICAgICBJREJEYXRhYmFzZUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwotICAgIFBBTDo6U2Vzc2lv
bklEIG1fc2Vzc2lvbklEOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJREJEYXRhYmFzZUluZm8+IG1f
ZGF0YWJhc2VJbmZvOwogCiAgICAgSGFzaE1hcDxJREJSZXNvdXJjZUlkZW50aWZpZXIsIHN0ZDo6
dW5pcXVlX3B0cjxNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbj4+IG1fdHJhbnNhY3Rpb25z
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01l
bW9yeU9iamVjdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9NZW1vcnlPYmplY3RTdG9yZS5jcHAKaW5kZXggNWE1M2UyMzE1MjY4NGRlMzgwZGFhMWU1
OTczZmIxOTNkZjAxMjY3Ny4uZGZhYjYxMzM1N2UzNWM1ZTdlZmZjZTg1OTYyNDc5NzBlMjZlMDU0
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01l
bW9yeU9iamVjdFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuY3BwCkBAIC0zOCwxOCArMzgsMTcgQEAKICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NKU1ZhbHVlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSlNDSlNWYWx1ZUlubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0xvY2su
aD4KLSNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVz
aW5nIG5hbWVzcGFjZSBKU0M7CiBuYW1lc3BhY2UgSURCU2VydmVyIHsKIAotUmVmPE1lbW9yeU9i
amVjdFN0b3JlPiBNZW1vcnlPYmplY3RTdG9yZTo6Y3JlYXRlKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiBpbmZvKQorUmVmPE1lbW9yeU9iamVjdFN0
b3JlPiBNZW1vcnlPYmplY3RTdG9yZTo6Y3JlYXRlKGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYg
aW5mbykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZW1vcnlPYmplY3RTdG9yZShzZXNz
aW9uSUQsIGluZm8pKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZW1vcnlPYmplY3RTdG9y
ZShpbmZvKSk7CiB9CiAKLU1lbW9yeU9iamVjdFN0b3JlOjpNZW1vcnlPYmplY3RTdG9yZShQQUw6
OlNlc3Npb25JRCwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiBpbmZvKQorTWVtb3J5T2JqZWN0
U3RvcmU6Ok1lbW9yeU9iamVjdFN0b3JlKGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYgaW5mbykK
ICAgICA6IG1faW5mbyhpbmZvKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuaAppbmRleCA4NzFk
ZWI1ZTRhZTA1MTQ4MmI5MDg5Njg5NWVhMzFjMjc2ZGQzMDg2Li5mMDNhM2ExYjBhZDUzNGI5ZjMz
OWM0ZmJkN2U3NDBhZGYyMjg0NzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuaApAQCAtMzQsMTAg
KzM0LDYgQEAKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CiAKLW5hbWVzcGFjZSBQQUwgewotY2xhc3MgU2Vzc2lvbklEOwotfQotCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIElEQkN1cnNvckluZm87CkBAIC02MSw3ICs1Nyw3IEBAIHR5
cGVkZWYgSGFzaE1hcDxJREJLZXlEYXRhLCBUaHJlYWRTYWZlRGF0YUJ1ZmZlciwgSURCS2V5RGF0
YUhhc2gsIElEQktleURhdGFIYXNoCiAKIGNsYXNzIE1lbW9yeU9iamVjdFN0b3JlIDogcHVibGlj
IFJlZkNvdW50ZWQ8TWVtb3J5T2JqZWN0U3RvcmU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
PE1lbW9yeU9iamVjdFN0b3JlPiBjcmVhdGUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IElEQk9iamVj
dFN0b3JlSW5mbyYpOworICAgIHN0YXRpYyBSZWY8TWVtb3J5T2JqZWN0U3RvcmU+IGNyZWF0ZShj
b25zdCBJREJPYmplY3RTdG9yZUluZm8mKTsKIAogICAgIH5NZW1vcnlPYmplY3RTdG9yZSgpOwog
CkBAIC0xMDgsNyArMTA0LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVuYW1lSW5kZXgoTWVtb3J5
SW5kZXgmLCBjb25zdCBTdHJpbmcmIG5ld05hbWUpOwogCiBwcml2YXRlOgotICAgIE1lbW9yeU9i
amVjdFN0b3JlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mKTsKKyAg
ICBNZW1vcnlPYmplY3RTdG9yZShjb25zdCBJREJPYmplY3RTdG9yZUluZm8mKTsKIAogICAgIElE
QktleURhdGFTZXQ6Oml0ZXJhdG9yIGxvd2VzdEl0ZXJhdG9ySW5SYW5nZShjb25zdCBJREJLZXlS
YW5nZURhdGEmLCBib29sIHJldmVyc2UpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5n
U3RvcmUuY3BwCmluZGV4IDI3Y2Q4ZWVjNTNlMWFjZmM1OTg1ZWM3YjhmMDVlMjI3NjQ1Yzg3N2Uu
LmE5OWU3NWI4ZGIzM2FhMDlkYjc4YmVhN2JhNDQwYmJjODlkY2I3NzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3Rv
cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxp
dGVJREJCYWNraW5nU3RvcmUuY3BwCkBAIC0yMzYsMTIgKzIzNiwxMCBAQCBzdGF0aWMgQVNDSUlM
aXRlcmFsIGluZGV4SW5mb1RhYmxlU2NoZW1hVGVtcCgpCiAgICAgcmV0dXJuIFRBQkxFX1NDSEVN
QV9QUkVGSVggIl9UZW1wX0luZGV4SW5mbyIgSU5ERVhfSU5GT19UQUJMRV9TQ0hFTUFfU1VGRklY
OwogfQogCi1TUUxpdGVJREJCYWNraW5nU3RvcmU6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZShQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYgaWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZVJvb3REaXJlY3RvcnkpCi0gICAgOiBtX3Nlc3Np
b25JRChzZXNzaW9uSUQpCi0gICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKLSAgICAsIG1f
ZGF0YWJhc2VSb290RGlyZWN0b3J5KGRhdGFiYXNlUm9vdERpcmVjdG9yeSkKK1NRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6U1FMaXRlSURCQmFja2luZ1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlSWRlbnRp
ZmllciYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZURpcmVjdG9yeSkKKyAgICA6
IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQorICAgICwgbV9kYXRhYmFzZURpcmVjdG9yeShkYXRh
YmFzZURpcmVjdG9yeSkKIHsKLSAgICBtX2RhdGFiYXNlRGlyZWN0b3J5ID0gZnVsbERhdGFiYXNl
RGlyZWN0b3J5V2l0aFVwZ3JhZGUoKTsKIH0KIAogU1FMaXRlSURCQmFja2luZ1N0b3JlOjp+U1FM
aXRlSURCQmFja2luZ1N0b3JlKCkKQEAgLTkxMiwxOSArOTEwLDI5IEBAIHN0ZDo6dW5pcXVlX3B0
cjxJREJEYXRhYmFzZUluZm8+IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZXh0cmFjdEV4aXN0aW5n
RGF0YWJhc2VJCiAgICAgcmV0dXJuIGRhdGFiYXNlSW5mbzsKIH0KIAotU3RyaW5nIFNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6ZmlsZW5hbWVGb3JEYXRhYmFzZU5hbWUoKSBjb25zdAorU3RyaW5nIFNR
TGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZW5jb2RlRGF0YWJhc2VOYW1lKGNvbnN0IFN0cmluZyYgZGF0
YWJhc2VOYW1lKQogewotICAgIEFTU0VSVCghbV9pZGVudGlmaWVyLmRhdGFiYXNlTmFtZSgpLmlz
TnVsbCgpKTsKLQotICAgIGlmIChtX2lkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCkuaXNFbXB0eSgp
KQorICAgIEFTU0VSVCghZGF0YWJhc2VOYW1lLmlzTnVsbCgpKTsKKyAgICBpZiAoZGF0YWJhc2VO
YW1lLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuICIlMDAiOwogCi0gICAgU3RyaW5nIGZpbGVu
YW1lID0gRmlsZVN5c3RlbTo6ZW5jb2RlRm9yRmlsZU5hbWUobV9pZGVudGlmaWVyLmRhdGFiYXNl
TmFtZSgpKTsKKyAgICBTdHJpbmcgZmlsZW5hbWUgPSBGaWxlU3lzdGVtOjplbmNvZGVGb3JGaWxl
TmFtZShkYXRhYmFzZU5hbWUpOwogICAgIGZpbGVuYW1lLnJlcGxhY2UoJy4nLCAiJTJFIik7CiAK
ICAgICByZXR1cm4gZmlsZW5hbWU7CiB9CiAKK1N0cmluZyBTUUxpdGVJREJCYWNraW5nU3RvcmU6
OmRlY29kZURhdGFiYXNlTmFtZShjb25zdCBTdHJpbmcmIGVuY29kZWROYW1lKQoreworICAgIGlm
IChlbmNvZGVkTmFtZSA9PSAiJTAwIl9zKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgU3Ry
aW5nIG5hbWUgPSBlbmNvZGVkTmFtZTsKKyAgICBuYW1lLnJlcGxhY2UoIiUyRSJfcywgIi4iX3Mp
OworCisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OmRlY29kZUZyb21GaWxlbmFtZShuYW1lKTsKK30K
KwogU3RyaW5nIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZnVsbERhdGFiYXNlUGF0aEZvckRpcmVj
dG9yeShjb25zdCBTdHJpbmcmIGZ1bGxEYXRhYmFzZURpcmVjdG9yeSkKIHsKICAgICByZXR1cm4g
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGZ1bGxEYXRhYmFzZURpcmVjdG9y
eSwgIkluZGV4ZWREQi5zcWxpdGUzIik7CkBAIC05NjUsMjMgKzk3Myw2IEBAIHN0ZDo6b3B0aW9u
YWw8SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbj4gU1FMaXRlSURCQmFja2luZ1N0b3JlOjpkYXRh
YmFzZU5hbWVBbmRWCiAgICAgcmV0dXJuIElEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24geyBkYXRh
YmFzZU5hbWUsICpkYXRhYmFzZVZlcnNpb24gfTsKIH0KIAotU3RyaW5nIFNRTGl0ZUlEQkJhY2tp
bmdTdG9yZTo6ZnVsbERhdGFiYXNlRGlyZWN0b3J5V2l0aFVwZ3JhZGUoKQotewotICAgIFN0cmlu
ZyBvbGRPcmlnaW5EaXJlY3RvcnkgPSBtX2lkZW50aWZpZXIuZGF0YWJhc2VEaXJlY3RvcnlSZWxh
dGl2ZVRvUm9vdChtX2RhdGFiYXNlUm9vdERpcmVjdG9yeSwgInYwIik7Ci0gICAgU3RyaW5nIG9s
ZERhdGFiYXNlRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KG9sZE9yaWdpbkRpcmVjdG9yeSwgZmlsZW5hbWVGb3JEYXRhYmFzZU5hbWUoKSk7Ci0gICAgU3Ry
aW5nIG5ld09yaWdpbkRpcmVjdG9yeSA9IG1faWRlbnRpZmllci5kYXRhYmFzZURpcmVjdG9yeVJl
bGF0aXZlVG9Sb290KG1fZGF0YWJhc2VSb290RGlyZWN0b3J5LCAidjEiKTsKLSAgICBTdHJpbmcg
ZmlsZU5hbWVIYXNoID0gU1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0ZUhhc2hGb3JGaWxlTmFtZSht
X2lkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCkpOwotICAgIFN0cmluZyBuZXdEYXRhYmFzZURpcmVj
dG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChuZXdPcmlnaW5EaXJl
Y3RvcnksIGZpbGVOYW1lSGFzaCk7Ci0gICAgRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVz
KG5ld0RhdGFiYXNlRGlyZWN0b3J5KTsKLQotICAgIGlmIChGaWxlU3lzdGVtOjpmaWxlRXhpc3Rz
KG9sZERhdGFiYXNlRGlyZWN0b3J5KSkgewotICAgICAgICBGaWxlU3lzdGVtOjptb3ZlRmlsZShv
bGREYXRhYmFzZURpcmVjdG9yeSwgbmV3RGF0YWJhc2VEaXJlY3RvcnkpOwotICAgICAgICBGaWxl
U3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeShvbGRPcmlnaW5EaXJlY3RvcnkpOwotICAgIH0K
LQotICAgIHJldHVybiBuZXdEYXRhYmFzZURpcmVjdG9yeTsKLX0KLQogSURCRXJyb3IgU1FMaXRl
SURCQmFja2luZ1N0b3JlOjpnZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbyhJREJEYXRhYmFzZUlu
Zm8mIGluZm8pCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
Z2V0T3JFc3RhYmxpc2hEYXRhYmFzZUluZm8gLSBkYXRhYmFzZSAlcyIsIG1faWRlbnRpZmllci5k
YXRhYmFzZU5hbWUoKS51dGY4KCkuZGF0YSgpKTsKQEAgLTk5MSwxMSArOTgyLDExIEBAIElEQkVy
cm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0T3JFc3RhYmxpc2hEYXRhYmFzZUluZm8oSURC
RGF0YWJhc2VJbmZvJiBpbmZvCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IH07CiAgICAgfQog
Ci0gICAgU3RyaW5nIGRiRmlsZW5hbWUgPSBmdWxsRGF0YWJhc2VQYXRoKCk7Ci0KKyAgICBTdHJp
bmcgZGF0YWJhc2VQYXRoID0gZnVsbERhdGFiYXNlUGF0aCgpOworICAgIEZpbGVTeXN0ZW06Om1h
a2VBbGxEaXJlY3RvcmllcyhGaWxlU3lzdGVtOjpwYXJlbnRQYXRoKGRhdGFiYXNlUGF0aCkpOwog
ICAgIG1fc3FsaXRlREIgPSBtYWtlVW5pcXVlPFNRTGl0ZURhdGFiYXNlPigpOwotICAgIGlmICgh
bV9zcWxpdGVEQi0+b3BlbihkYkZpbGVuYW1lKSkgewotICAgICAgICBMT0dfRVJST1IoIkZhaWxl
ZCB0byBvcGVuIFNRTGl0ZSBkYXRhYmFzZSBhdCBwYXRoICclcyciLCBkYkZpbGVuYW1lLnV0Zjgo
KS5kYXRhKCkpOworICAgIGlmICghbV9zcWxpdGVEQi0+b3BlbihkYXRhYmFzZVBhdGgpKSB7Cisg
ICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIG9wZW4gU1FMaXRlIGRhdGFiYXNlIGF0IHBhdGgg
JyVzJyIsIGRhdGFiYXNlUGF0aC51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgY2xvc2VTUUxpdGVE
QigpOwogICAgIH0KIApAQCAtMTA0NCw3ICsxMDM1LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFj
a2luZ1N0b3JlOjpnZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbyhJREJEYXRhYmFzZUluZm8mIGlu
Zm8KICAgICAgICAgZGF0YWJhc2VJbmZvID0gY3JlYXRlQW5kUG9wdWxhdGVJbml0aWFsRGF0YWJh
c2VJbmZvKCk7CiAKICAgICBpZiAoIWRhdGFiYXNlSW5mbykgewotICAgICAgICBMT0dfRVJST1Io
IlVuYWJsZSB0byBlc3RhYmxpc2ggSURCIGRhdGFiYXNlIGF0IHBhdGggJyVzJyIsIGRiRmlsZW5h
bWUudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGVzdGFibGlz
aCBJREIgZGF0YWJhc2UgYXQgcGF0aCAnJXMnIiwgZGF0YWJhc2VQYXRoLnV0ZjgoKS5kYXRhKCkp
OwogICAgICAgICBjbG9zZVNRTGl0ZURCKCk7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVu
a25vd25FcnJvciwgIlVuYWJsZSB0byBlc3RhYmxpc2ggSURCIGRhdGFiYXNlIGZpbGUiX3MgfTsK
ICAgICB9CkBAIC0yNzk4LDcgKzI3ODksNiBAQCB2b2lkIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
ZGVsZXRlQmFja2luZ1N0b3JlKCkKIAogICAgIFNRTGl0ZUZpbGVTeXN0ZW06OmRlbGV0ZURhdGFi
YXNlRmlsZShkYXRhYmFzZVBhdGgpOwogICAgIFNRTGl0ZUZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5
RGF0YWJhc2VEaXJlY3RvcnkobV9kYXRhYmFzZURpcmVjdG9yeSk7Ci0gICAgU1FMaXRlRmlsZVN5
c3RlbTo6ZGVsZXRlRW1wdHlEYXRhYmFzZURpcmVjdG9yeShtX2lkZW50aWZpZXIuZGF0YWJhc2VE
aXJlY3RvcnlSZWxhdGl2ZVRvUm9vdChtX2RhdGFiYXNlUm9vdERpcmVjdG9yeSkpOwogfQogCiB2
b2lkIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5yZWdpc3RlckN1cnNvcihTUUxpdGVJREJDdXJz
b3ImIGN1cnNvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaAppbmRleCAyZWZlNmIyYTM0
MTk5M2JiMjZmZGY5MWNmZjZlN2RlYThkYmJlZDM2Li43MzFhOWE0MTkzODY1ZTNjNWYzYzM1ZWQ3
NTcxYjEyODJmNzgwOTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5oCkBAIC01MSw5
ICs1MSw4IEBAIGNsYXNzIFNRTGl0ZUlEQkN1cnNvcjsKIGNsYXNzIFNRTGl0ZUlEQkJhY2tpbmdT
dG9yZSBmaW5hbCA6IHB1YmxpYyBJREJCYWNraW5nU3RvcmUgewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgotICAgIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZShQQUw6OlNlc3Np
b25JRCwgY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJiwgY29uc3QgU3RyaW5nJiBkYXRhYmFz
ZVJvb3REaXJlY3RvcnkpOwotICAgIAotICAgIH5TUUxpdGVJREJCYWNraW5nU3RvcmUoKSBmaW5h
bDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTUUxpdGVJREJCYWNraW5nU3RvcmUoY29uc3QgSURCRGF0
YWJhc2VJZGVudGlmaWVyJiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZURpcmVjdG9yeSk7CisgICAg
V0VCQ09SRV9FWFBPUlQgflNRTGl0ZUlEQkJhY2tpbmdTdG9yZSgpIGZpbmFsOwogCiAgICAgSURC
RXJyb3IgZ2V0T3JFc3RhYmxpc2hEYXRhYmFzZUluZm8oSURCRGF0YWJhc2VJbmZvJikgZmluYWw7
CiAgICAgdWludDY0X3QgZGF0YWJhc2VWZXJzaW9uKCkgZmluYWw7CkBAIC05NCwxOCArOTMsMTUg
QEAgcHVibGljOgogCiAgICAgSURCRXJyb3IgZ2V0QmxvYlJlY29yZHNGb3JPYmplY3RTdG9yZVJl
Y29yZChpbnQ2NF90IG9iamVjdFN0b3JlUmVjb3JkLCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMs
IFZlY3RvcjxTdHJpbmc+JiBibG9iRmlsZVBhdGhzKTsKIAotICAgIHN0YXRpYyB1aW50NjRfdCBk
YXRhYmFzZXNTaXplRm9yRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKLQorICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB1aW50NjRfdCBkYXRhYmFzZXNTaXplRm9yRGlyZWN0b3J5
KGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKICAgICBTdHJpbmcgZGF0YWJhc2VEaXJlY3Rvcnko
KSBjb25zdCB7IHJldHVybiBtX2RhdGFiYXNlRGlyZWN0b3J5OyB9OwotICAgIHN0YXRpYyBTdHJp
bmcgZnVsbERhdGFiYXNlUGF0aEZvckRpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKLSAgICBzdGF0
aWMgc3RkOjpvcHRpb25hbDxJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiBkYXRhYmFzZU5hbWVB
bmRWZXJzaW9uRnJvbUZpbGUoY29uc3QgU3RyaW5nJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFN0cmluZyBmdWxsRGF0YWJhc2VQYXRoRm9yRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcgZW5jb2RlRGF0YWJhc2VOYW1lKGNvbnN0
IFN0cmluZyYgZGF0YWJhc2VOYW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5n
IGRlY29kZURhdGFiYXNlTmFtZShjb25zdCBTdHJpbmcmIGVuY29kZWREYXRhYmFzZU5hbWUpOwog
Ci0gICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9u
SUQ7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjpvcHRpb25hbDxJREJEYXRhYmFz
ZU5hbWVBbmRWZXJzaW9uPiBkYXRhYmFzZU5hbWVBbmRWZXJzaW9uRnJvbUZpbGUoY29uc3QgU3Ry
aW5nJik7CiAKIHByaXZhdGU6Ci0gICAgU3RyaW5nIGZpbGVuYW1lRm9yRGF0YWJhc2VOYW1lKCkg
Y29uc3Q7Ci0gICAgU3RyaW5nIGZ1bGxEYXRhYmFzZURpcmVjdG9yeVdpdGhVcGdyYWRlKCk7Ci0K
ICAgICBJREJFcnJvciBlbnN1cmVWYWxpZFJlY29yZHNUYWJsZSgpOwogICAgIElEQkVycm9yIGVu
c3VyZVZhbGlkSW5kZXhSZWNvcmRzVGFibGUoKTsKICAgICBJREJFcnJvciBlbnN1cmVWYWxpZElu
ZGV4UmVjb3Jkc0luZGV4KCk7CkBAIC0yMDYsNyArMjAyLDYgQEAgcHJpdmF0ZToKIAogICAgIHN0
ZDo6dW5pcXVlX3B0cjxTUUxpdGVTdGF0ZW1lbnQ+IG1fY2FjaGVkU3RhdGVtZW50c1tzdGF0aWNf
Y2FzdDxpbnQ+KFNRTDo6SW52YWxpZCldOwogCi0gICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9u
SUQ7CiAgICAgSURCRGF0YWJhc2VJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8SURCRGF0YWJhc2VJbmZvPiBtX2RhdGFiYXNlSW5mbzsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8SURCRGF0YWJhc2VJbmZvPiBtX29yaWdpbmFsRGF0YWJhc2VJbmZvQmVmb3JlVmVyc2lv
bkNoYW5nZTsKQEAgLTIxNiw3ICsyMTEsNiBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8SURCUmVz
b3VyY2VJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlSURCVHJhbnNhY3Rpb24+PiBt
X3RyYW5zYWN0aW9uczsKICAgICBIYXNoTWFwPElEQlJlc291cmNlSWRlbnRpZmllciwgU1FMaXRl
SURCQ3Vyc29yKj4gbV9jdXJzb3JzOwogCi0gICAgU3RyaW5nIG1fZGF0YWJhc2VSb290RGlyZWN0
b3J5OwogICAgIFN0cmluZyBtX2RhdGFiYXNlRGlyZWN0b3J5OwogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJE
YXRhYmFzZS5jcHAKaW5kZXggMmIxZWFkYjllYTVjNDY0ZDAyNzVlZDIyM2Y1MDAzYjdiZWYxNTcz
My4uMmRmYmJkYjMxOTkzMWUzNzZmMTI1MmVhNDJjMTQzZDlmZDRjZDFjYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVl
SURCRGF0YWJhc2UuY3BwCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgog
I2luY2x1ZGUgIlN0b3JhZ2VRdW90YU1hbmFnZXIuaCIKICNpbmNsdWRlICJVbmlxdWVJREJEYXRh
YmFzZUNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuaCIK
ICNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTM0LDgg
KzEzNSw4IEBAIHN0YXRpYyBpbmxpbmUgdWludDY0X3QgZXN0aW1hdGVTaXplKGNvbnN0IElEQk9i
amVjdFN0b3JlSW5mbyYgaW5mbykKICAgICByZXR1cm4gc2l6ZTsKIH0KIAotVW5pcXVlSURCRGF0
YWJhc2U6OlVuaXF1ZUlEQkRhdGFiYXNlKElEQlNlcnZlciYgc2VydmVyLCBjb25zdCBJREJEYXRh
YmFzZUlkZW50aWZpZXImIGlkZW50aWZpZXIpCi0gICAgOiBtX3NlcnZlcihzZXJ2ZXIpCitVbmlx
dWVJREJEYXRhYmFzZTo6VW5pcXVlSURCRGF0YWJhc2UoVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2Vy
JiBtYW5hZ2VyLCBjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImIGlkZW50aWZpZXIpCisgICAg
OiBtX21hbmFnZXIobWFuYWdlcikKICAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogewog
ICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwpAQCAtMTYzLDYgKzE2NCwxMSBAQCBjb25zdCBJ
REJEYXRhYmFzZUluZm8mIFVuaXF1ZUlEQkRhdGFiYXNlOjppbmZvKCkgY29uc3QKICAgICByZXR1
cm4gKm1fZGF0YWJhc2VJbmZvOwogfQogCitVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIqIFVuaXF1
ZUlEQkRhdGFiYXNlOjptYW5hZ2VyKCkKK3sKKyAgICByZXR1cm4gbV9tYW5hZ2VyLmdldCgpOwor
fQorCiB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuRGF0YWJhc2VDb25uZWN0aW9uKElEQkNv
bm5lY3Rpb25Ub0NsaWVudCYgY29ubmVjdGlvbiwgY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVl
c3REYXRhKQogewogICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6b3BlbkRh
dGFiYXNlQ29ubmVjdGlvbiIpOwpAQCAtMTg1LDE3ICsxOTEsNDUgQEAgdm9pZCBVbmlxdWVJREJE
YXRhYmFzZTo6cGVyZm9ybUN1cnJlbnRPcGVuT3BlcmF0aW9uKCkKICAgICBBU1NFUlQobV9jdXJy
ZW50T3BlbkRCUmVxdWVzdCk7CiAgICAgQVNTRVJUKG1fY3VycmVudE9wZW5EQlJlcXVlc3QtPmlz
T3BlblJlcXVlc3QoKSk7CiAKKyAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGNyZWF0ZSB0aGUgZmls
ZSBzbyBubyBuZWVkIHRvIGRvIHNwYWNlIGNoZWNrLgorICAgIGlmIChtX2JhY2tpbmdTdG9yZSkK
KyAgICAgICAgcmV0dXJuIHBlcmZvcm1DdXJyZW50T3Blbk9wZXJhdGlvbkFmdGVyU3BhY2VDaGVj
ayh0cnVlKTsKKworICAgIGlmICghbV9tYW5hZ2VyKQorICAgICAgICByZXR1cm4gcGVyZm9ybUN1
cnJlbnRPcGVuT3BlcmF0aW9uQWZ0ZXJTcGFjZUNoZWNrKGZhbHNlKTsKKworICAgIGF1dG8gcmVx
dWVzdElkZW50aWZpZXIgPSBtX2N1cnJlbnRPcGVuREJSZXF1ZXN0LT5yZXF1ZXN0RGF0YSgpLnJl
cXVlc3RJZGVudGlmaWVyKCk7CisgICAgaWYgKG1fb3BlbkRCUmVxdWVzdHNGb3JTcGFjZUNoZWNr
LmNvbnRhaW5zKHJlcXVlc3RJZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9v
cGVuREJSZXF1ZXN0c0ZvclNwYWNlQ2hlY2suYWRkKHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICBt
X21hbmFnZXItPnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIGRlZmF1bHRXcml0
ZU9wZXJhdGlvbkNvc3QsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCByZXF1
ZXN0SWRlbnRpZmllcl0oYm9vbCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFr
VGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBtX29wZW5EQlJlcXVlc3RzRm9y
U3BhY2VDaGVjay5yZW1vdmUocmVxdWVzdElkZW50aWZpZXIpOworICAgICAgICBpZiAobV9jdXJy
ZW50T3BlbkRCUmVxdWVzdC0+cmVxdWVzdERhdGEoKS5yZXF1ZXN0SWRlbnRpZmllcigpICE9IHJl
cXVlc3RJZGVudGlmaWVyKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHBlcmZvcm1D
dXJyZW50T3Blbk9wZXJhdGlvbkFmdGVyU3BhY2VDaGVjayhncmFudGVkKTsKKyAgICB9KTsKK30K
Kwordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybUN1cnJlbnRPcGVuT3BlcmF0aW9uQWZ0
ZXJTcGFjZUNoZWNrKGJvb2wgaXNHcmFudGVkKQoreworICAgIExPRyhJbmRleGVkREIsICJVbmlx
dWVJREJEYXRhYmFzZTo6cGVyZm9ybUN1cnJlbnRPcGVuT3BlcmF0aW9uQWZ0ZXJTcGFjZVJlcXVl
c3QgKCVwKSIsIHRoaXMpOworCiAgICAgSURCRXJyb3IgYmFja2luZ1N0b3JlT3BlbkVycm9yOwog
ICAgIGlmICghbV9iYWNraW5nU3RvcmUpIHsKLSAgICAgICAgLy8gUXVvdGEgY2hlY2suCi0gICAg
ICAgIGF1dG8gZGVjaXNpb24gPSBtX3NlcnZlci5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9y
aWdpbigpLCBkZWZhdWx0V3JpdGVPcGVyYXRpb25Db3N0KTsKLSAgICAgICAgaWYgKGRlY2lzaW9u
ID09IFN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uOjpEZW55KQorICAgICAgICBpZiAoIW1f
bWFuYWdlcikKKyAgICAgICAgICAgIGJhY2tpbmdTdG9yZU9wZW5FcnJvciA9IElEQkVycm9yIHsg
SW52YWxpZFN0YXRlRXJyb3IgfTsKKyAgICAgICAgZWxzZSBpZiAoIWlzR3JhbnRlZCkKICAgICAg
ICAgICAgIGJhY2tpbmdTdG9yZU9wZW5FcnJvciA9IElEQkVycm9yIHsgUXVvdGFFeGNlZWRlZEVy
cm9yLCBxdW90YUVycm9yTWVzc2FnZU5hbWUoIk9wZW5CYWNraW5nU3RvcmUiKSB9OwogICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICAgIG1fYmFja2luZ1N0b3JlID0gbV9zZXJ2ZXIuY3JlYXRlQmFj
a2luZ1N0b3JlKG1faWRlbnRpZmllcik7CisgICAgICAgICAgICBtX2JhY2tpbmdTdG9yZSA9IG1f
bWFuYWdlci0+Y3JlYXRlQmFja2luZ1N0b3JlKG1faWRlbnRpZmllcik7CiAgICAgICAgICAgICBJ
REJEYXRhYmFzZUluZm8gZGF0YWJhc2VJbmZvOwogICAgICAgICAgICAgYmFja2luZ1N0b3JlT3Bl
bkVycm9yID0gbV9iYWNraW5nU3RvcmUtPmdldE9yRXN0YWJsaXNoRGF0YWJhc2VJbmZvKGRhdGFi
YXNlSW5mbyk7Ci0gICAgICAgICAgICBpZiAoYmFja2luZ1N0b3JlT3BlbkVycm9yLmlzTnVsbCgp
KQorICAgICAgICAgICAgaWYgKCFiYWNraW5nU3RvcmVPcGVuRXJyb3IpCiAgICAgICAgICAgICAg
ICAgbV9kYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oZGF0YWJhc2VJ
bmZvKTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIExPR19FUlJPUigiRmFp
bGVkIHRvIGdldCBkYXRhYmFzZSBpbmZvICclcyciLCBiYWNraW5nU3RvcmVPcGVuRXJyb3IubWVz
c2FnZSgpLnV0ZjgoKS5kYXRhKCkpOwpAQCAtMjA0LDcgKzIzOCw3IEBAIHZvaWQgVW5pcXVlSURC
RGF0YWJhc2U6OnBlcmZvcm1DdXJyZW50T3Blbk9wZXJhdGlvbigpCiAgICAgICAgIH0KICAgICB9
CiAKLSAgICBpZiAoIWJhY2tpbmdTdG9yZU9wZW5FcnJvci5pc051bGwoKSkgeworICAgIGlmIChi
YWNraW5nU3RvcmVPcGVuRXJyb3IpIHsKICAgICAgICAgYXV0byByZXN1bHQgPSBJREJSZXN1bHRE
YXRhOjplcnJvcihtX2N1cnJlbnRPcGVuREJSZXF1ZXN0LT5yZXF1ZXN0RGF0YSgpLnJlcXVlc3RJ
ZGVudGlmaWVyKCksIGJhY2tpbmdTdG9yZU9wZW5FcnJvcik7CiAgICAgICAgIG1fY3VycmVudE9w
ZW5EQlJlcXVlc3QtPmNvbm5lY3Rpb24oKS5kaWRPcGVuRGF0YWJhc2UocmVzdWx0KTsKICAgICAg
ICAgbV9jdXJyZW50T3BlbkRCUmVxdWVzdCA9IG51bGxwdHI7CkBAIC0yOTQsNyArMzI4LDcgQEAg
dm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlQmFja2luZ1N0b3JlKCkKICAgICBBU1NFUlQo
IWlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6
OmRlbGV0ZUJhY2tpbmdTdG9yZSIpOwogICAgIAotICAgIGF1dG8gYmFja2luZ1N0b3JlID0gbV9i
YWNraW5nU3RvcmUgPyBzdGQ6OmV4Y2hhbmdlKG1fYmFja2luZ1N0b3JlLCBudWxscHRyKSA6IG1f
c2VydmVyLmNyZWF0ZUJhY2tpbmdTdG9yZShtX2lkZW50aWZpZXIpOworICAgIGF1dG8gYmFja2lu
Z1N0b3JlID0gbV9iYWNraW5nU3RvcmUgPyBzdGQ6OmV4Y2hhbmdlKG1fYmFja2luZ1N0b3JlLCBu
dWxscHRyKSA6IG1fbWFuYWdlci0+Y3JlYXRlQmFja2luZ1N0b3JlKG1faWRlbnRpZmllcik7CiAg
ICAgdWludDY0X3QgZGVsZXRlZFZlcnNpb24gPSBiYWNraW5nU3RvcmUtPmRhdGFiYXNlVmVyc2lv
bigpOwogICAgIGJhY2tpbmdTdG9yZS0+ZGVsZXRlQmFja2luZ1N0b3JlKCk7CiAgICAgZGlkRGVs
ZXRlQmFja2luZ1N0b3JlKGRlbGV0ZWRWZXJzaW9uKTsKQEAgLTU0MiwyMCArNTc2LDMyIEBAIHZv
aWQgVW5pcXVlSURCRGF0YWJhc2U6OmFkZE9wZW5EYXRhYmFzZUNvbm5lY3Rpb24oUmVmPFVuaXF1
ZUlEQkRhdGFiYXNlQ29ubmVjdGlvCiAgICAgbV9vcGVuRGF0YWJhc2VDb25uZWN0aW9ucy5hZGQo
YWRvcHRSZWYoY29ubmVjdGlvbi5sZWFrUmVmKCkpKTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRh
YmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJh
bnNhY3Rpb24sIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYgaW5mbywgRXJyb3JDYWxsYmFjayBj
YWxsYmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlKFVuaXF1
ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBjb25zdCBJREJPYmplY3RTdG9y
ZUluZm8mIGluZm8sIEVycm9yQ2FsbGJhY2sgY2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgc3Bh
Y2VDaGVja1Jlc3VsdCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMT0co
SW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlIik7CiAKLSAg
ICBBU1NFUlQobV9iYWNraW5nU3RvcmUpOworICAgIGlmICghc3BhY2VDaGVja1Jlc3VsdCkgewor
ICAgICAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJF
cnJvciB7IEludmFsaWRTdGF0ZUVycm9yIH0pOworCisgICAgICAgIGF1dG8gdGFza1NpemUgPSBk
ZWZhdWx0V3JpdGVPcGVyYXRpb25Db3N0ICsgZXN0aW1hdGVTaXplKGluZm8pOworICAgICAgICBt
X21hbmFnZXItPnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIHRhc2tTaXplLCBb
dGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgd2Vha1RyYW5zYWN0aW9uID0gV2Vh
a1B0ciB7IHRyYW5zYWN0aW9uIH0sIGluZm8sIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayld
KGJvb2wgZ3JhbnRlZCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICF3
ZWFrVHJhbnNhY3Rpb24pCisgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9y
IHsgSW52YWxpZFN0YXRlRXJyb3IsICJEYXRhYmFzZSBvciB0cmFuc2FjdGlvbiBpcyBjbG9zZWQi
IH0pOworICAgICAgICAgICAgY3JlYXRlT2JqZWN0U3RvcmUoKndlYWtUcmFuc2FjdGlvbiwgaW5m
bywgV1RGTW92ZShjYWxsYmFjayksIGdyYW50ZWQpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KIAotICAgIC8vIFF1b3RhIGNoZWNrLgotICAgIGF1dG8gdGFza1NpemUgPSBk
ZWZhdWx0V3JpdGVPcGVyYXRpb25Db3N0ICsgZXN0aW1hdGVTaXplKGluZm8pOwotICAgIGlmICht
X3NlcnZlci5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCB0YXNrU2l6ZSkgPT0g
U3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb246OkRlbnkpIHsKKyAgICBpZiAoIXNwYWNlQ2hl
Y2tSZXN1bHQudmFsdWUoKSkgewogICAgICAgICBjYWxsYmFjayhJREJFcnJvciB7IFF1b3RhRXhj
ZWVkZWRFcnJvciwgcXVvdGFFcnJvck1lc3NhZ2VOYW1lKCJDcmVhdGVPYmplY3RTdG9yZSIpIH0p
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkKKyAg
ICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJCYWNr
aW5nIHN0b3JlIGhhcyBjbG9zZWQiIH0pOworCiAgICAgYXV0byBlcnJvciA9IG1fYmFja2luZ1N0
b3JlLT5jcmVhdGVPYmplY3RTdG9yZSh0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpLCBp
bmZvKTsKICAgICBpZiAoZXJyb3IuaXNOdWxsKCkpCiAgICAgICAgIG1fZGF0YWJhc2VJbmZvLT5h
ZGRFeGlzdGluZ09iamVjdFN0b3JlKGluZm8pOwpAQCAtNTYzLDE4ICs2MDksMzQgQEAgdm9pZCBV
bmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFu
c2FjdGlvbiYgdHJhbnNhY3QKICAgICBjYWxsYmFjayhlcnJvcik7CiB9CiAKLXZvaWQgVW5pcXVl
SURCRGF0YWJhc2U6OmRlbGV0ZU9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rp
b24mIHRyYW5zYWN0aW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSwgRXJyb3JDYWxs
YmFjayBjYWxsYmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZU9iamVjdFN0b3Jl
KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBjb25zdCBTdHJpbmcm
IG9iamVjdFN0b3JlTmFtZSwgRXJyb3JDYWxsYmFjayBjYWxsYmFjaywgU3BhY2VDaGVja1Jlc3Vs
dCBzcGFjZUNoZWNrUmVzdWx0KQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAg
IExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlT2JqZWN0U3RvcmUiKTsK
IAorICAgIGlmICghc3BhY2VDaGVja1Jlc3VsdCkgeworICAgICAgICBpZiAoIW1fbWFuYWdlcikK
KyAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9y
IH0pOworCisgICAgICAgIG1fbWFuYWdlci0+cmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmln
aW4oKSwgMCwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHdlYWtUcmFuc2Fj
dGlvbiA9IFdlYWtQdHIgeyB0cmFuc2FjdGlvbiB9LCBvYmplY3RTdG9yZU5hbWUsIGNhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgZ3JhbnRlZCkgbXV0YWJsZSB7CisgICAgICAgICAg
ICBpZiAoIXdlYWtUaGlzIHx8ICF3ZWFrVHJhbnNhY3Rpb24pCisgICAgICAgICAgICAgICAgcmV0
dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJEYXRhYmFzZSBvciB0
cmFuc2FjdGlvbiBpcyBjbG9zZWQiIH0pOworCisgICAgICAgICAgICBkZWxldGVPYmplY3RTdG9y
ZSgqd2Vha1RyYW5zYWN0aW9uLCBvYmplY3RTdG9yZU5hbWUsIFdURk1vdmUoY2FsbGJhY2spLCBn
cmFudGVkKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NF
UlQoc3BhY2VDaGVja1Jlc3VsdC52YWx1ZSgpKTsKICAgICBhdXRvKiBpbmZvID0gbV9kYXRhYmFz
ZUluZm8tPmluZm9Gb3JFeGlzdGluZ09iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSk7CiAgICAg
aWYgKCFpbmZvKSB7CiAgICAgICAgIGNhbGxiYWNrKElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAi
QXR0ZW1wdCB0byBkZWxldGUgbm9uLWV4aXN0YW50IG9iamVjdCBzdG9yZSJfcyB9KTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CisgICAgaWYg
KCFtX2JhY2tpbmdTdG9yZSkKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52
YWxpZFN0YXRlRXJyb3IsICJCYWNraW5nIHN0b3JlIGlzIGNsb3NlZCIgfSk7CisKICAgICBhdXRv
IGVycm9yID0gbV9iYWNraW5nU3RvcmUtPmRlbGV0ZU9iamVjdFN0b3JlKHRyYW5zYWN0aW9uLmlu
Zm8oKS5pZGVudGlmaWVyKCksIGluZm8tPmlkZW50aWZpZXIoKSk7CiAgICAgaWYgKGVycm9yLmlz
TnVsbCgpKQogICAgICAgICBtX2RhdGFiYXNlSW5mby0+ZGVsZXRlT2JqZWN0U3RvcmUoaW5mby0+
aWRlbnRpZmllcigpKTsKQEAgLTU4MiwxNCArNjQ0LDI2IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJh
c2U6OmRlbGV0ZU9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5z
YWN0CiAgICAgY2FsbGJhY2soZXJyb3IpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpy
ZW5hbWVPYmplY3RTdG9yZShVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlv
biwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUs
IEVycm9yQ2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpyZW5hbWVP
YmplY3RTdG9yZShVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgdWlu
dDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUsIEVycm9y
Q2FsbGJhY2sgY2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgc3BhY2VDaGVja1Jlc3VsdCkKIHsK
ICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVl
SURCRGF0YWJhc2U6OnJlbmFtZU9iamVjdFN0b3JlIik7CiAKLSAgICAvLyBRdW90YSBjaGVjay4K
LSAgICBhdXRvIHRhc2tTaXplID0gZGVmYXVsdFdyaXRlT3BlcmF0aW9uQ29zdCArIG5ld05hbWUu
c2l6ZUluQnl0ZXMoKTsKLSAgICBpZiAobV9zZXJ2ZXIucmVxdWVzdFNwYWNlKG1faWRlbnRpZmll
ci5vcmlnaW4oKSwgdGFza1NpemUpID09IFN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uOjpE
ZW55KSB7CisgICAgaWYgKCFzcGFjZUNoZWNrUmVzdWx0KSB7CisgICAgICAgIGlmICghbV9tYW5h
Z2VyKQorICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRl
RXJyb3IgfSk7CisKKyAgICAgICAgYXV0byB0YXNrU2l6ZSA9IGRlZmF1bHRXcml0ZU9wZXJhdGlv
bkNvc3QgKyBuZXdOYW1lLnNpemVJbkJ5dGVzKCk7CisgICAgICAgIG1fbWFuYWdlci0+cmVxdWVz
dFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwgdGFza1NpemUsIFt0aGlzLCB3ZWFrVGhpcyA9
IFdlYWtQdHIgeyAqdGhpcyB9LCB3ZWFrVHJhbnNhY3Rpb24gPSBXZWFrUHRyIHsgdHJhbnNhY3Rp
b24gfSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBuZXdOYW1lLCBjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spXShib29sIGdyYW50ZWQpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCF3ZWFr
VGhpcyB8fCAhd2Vha1RyYW5zYWN0aW9uKQorICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFj
ayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiRGF0YWJhc2Ugb3IgdHJhbnNhY3Rpb24g
aXMgY2xvc2VkIiB9KTsKKworICAgICAgICAgICAgcmVuYW1lT2JqZWN0U3RvcmUoKndlYWtUcmFu
c2FjdGlvbiwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBuZXdOYW1lLCBXVEZNb3ZlKGNhbGxiYWNr
KSwgZ3JhbnRlZCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
aWYgKCFzcGFjZUNoZWNrUmVzdWx0LnZhbHVlKCkpIHsKICAgICAgICAgY2FsbGJhY2soSURCRXJy
b3IoUXVvdGFFeGNlZWRlZEVycm9yLCBxdW90YUVycm9yTWVzc2FnZU5hbWUoIlJlbmFtZU9iamVj
dFN0b3JlIikpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTYwMCw3ICs2NzQsOSBAQCB2
b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpyZW5hbWVPYmplY3RTdG9yZShVbmlxdWVJREJEYXRhYmFz
ZVRyYW5zYWN0aW9uJiB0cmFuc2FjdAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgQVNT
RVJUKG1fYmFja2luZ1N0b3JlKTsKKyAgICBpZiAoIW1fYmFja2luZ1N0b3JlKQorICAgICAgICBy
ZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkJhY2tpbmcgc3Rv
cmUgaXMgY2xvc2VkIiB9KTsKKwogICAgIGF1dG8gZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+cmVu
YW1lT2JqZWN0U3RvcmUodHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSwgb2JqZWN0U3Rv
cmVJZGVudGlmaWVyLCBuZXdOYW1lKTsKICAgICBpZiAoZXJyb3IuaXNOdWxsKCkpCiAgICAgICAg
IG1fZGF0YWJhc2VJbmZvLT5yZW5hbWVPYmplY3RTdG9yZShvYmplY3RTdG9yZUlkZW50aWZpZXIs
IG5ld05hbWUpOwpAQCAtNjA4LDMwICs2ODQsNTkgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6
cmVuYW1lT2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3QK
ICAgICBjYWxsYmFjayhlcnJvcik7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNsZWFy
T2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIHVp
bnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgRXJyb3JDYWxsYmFjayBjYWxsYmFjaykKK3Zv
aWQgVW5pcXVlSURCRGF0YWJhc2U6OmNsZWFyT2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VU
cmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwg
RXJyb3JDYWxsYmFjayBjYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCBzcGFjZUNoZWNrUmVzdWx0
KQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIExPRyhJbmRleGVkREIsICJV
bmlxdWVJREJEYXRhYmFzZTo6Y2xlYXJPYmplY3RTdG9yZSIpOwogCi0gICAgQVNTRVJUKG1fYmFj
a2luZ1N0b3JlKTsKLSAgICBhdXRvIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPmNsZWFyT2JqZWN0
U3RvcmUodHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSwgb2JqZWN0U3RvcmVJZGVudGlm
aWVyKTsKKyAgICBpZiAoIXNwYWNlQ2hlY2tSZXN1bHQpIHsKKyAgICAgICAgaWYgKCFtX21hbmFn
ZXIpCisgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVF
cnJvciB9KTsKKworICAgICAgICBtX21hbmFnZXItPnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIu
b3JpZ2luKCksIDAsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCB3ZWFrVHJh
bnNhY3Rpb24gPSBXZWFrUHRyIHsgdHJhbnNhY3Rpb24gfSwgb2JqZWN0U3RvcmVJZGVudGlmaWVy
LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIGdyYW50ZWQpIG11dGFibGUgewor
ICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhd2Vha1RyYW5zYWN0aW9uKQorICAgICAgICAg
ICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiRGF0
YWJhc2Ugb3IgdHJhbnNhY3Rpb24gaXMgY2xvc2VkIiB9KTsKKworICAgICAgICAgICAgY2xlYXJP
YmplY3RTdG9yZSgqd2Vha1RyYW5zYWN0aW9uLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIFdURk1v
dmUoY2FsbGJhY2spLCBncmFudGVkKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBBU1NFUlQoc3BhY2VDaGVja1Jlc3VsdC52YWx1ZSgpKTsKKyAgICBpZiAoIW1f
YmFja2luZ1N0b3JlKQorICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlk
U3RhdGVFcnJvciwgIkJhY2tpbmcgc3RvcmUgaXMgY2xvc2VkIiB9KTsKIAorICAgIGF1dG8gZXJy
b3IgPSBtX2JhY2tpbmdTdG9yZS0+Y2xlYXJPYmplY3RTdG9yZSh0cmFuc2FjdGlvbi5pbmZvKCku
aWRlbnRpZmllcigpLCBvYmplY3RTdG9yZUlkZW50aWZpZXIpOwogICAgIGNhbGxiYWNrKGVycm9y
KTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlSW5kZXgoVW5pcXVlSURCRGF0
YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIGNvbnN0IElEQkluZGV4SW5mbyYgaW5mbywg
RXJyb3JDYWxsYmFjayBjYWxsYmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZUlu
ZGV4KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBjb25zdCBJREJJ
bmRleEluZm8mIGluZm8sIEVycm9yQ2FsbGJhY2sgY2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQg
c3BhY2VDaGVja1Jlc3VsdCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBM
T0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZUluZGV4Iik7CiAKLSAgICAv
LyBRdW90YSBjaGVjay4KLSAgICBhdXRvIHRhc2tTaXplID0gZGVmYXVsdFdyaXRlT3BlcmF0aW9u
Q29zdCArIGVzdGltYXRlU2l6ZShpbmZvKTsKLSAgICBpZiAobV9zZXJ2ZXIucmVxdWVzdFNwYWNl
KG1faWRlbnRpZmllci5vcmlnaW4oKSwgdGFza1NpemUpID09IFN0b3JhZ2VRdW90YU1hbmFnZXI6
OkRlY2lzaW9uOjpEZW55KSB7CisgICAgaWYgKCFzcGFjZUNoZWNrUmVzdWx0KSB7CisgICAgICAg
IGlmICghbV9tYW5hZ2VyKQorICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsg
SW52YWxpZFN0YXRlRXJyb3IgfSk7CisKKyAgICAgICAgYXV0byB0YXNrU2l6ZSA9IGRlZmF1bHRX
cml0ZU9wZXJhdGlvbkNvc3QgKyBlc3RpbWF0ZVNpemUoaW5mbyk7CisgICAgICAgIG1fbWFuYWdl
ci0+cmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwgdGFza1NpemUsIFt0aGlzLCB3
ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCB3ZWFrVHJhbnNhY3Rpb24gPSBXZWFrUHRyIHsg
dHJhbnNhY3Rpb24gfSwgaW5mbywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBn
cmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMgfHwgIXdlYWtUcmFu
c2FjdGlvbikKKyAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZh
bGlkU3RhdGVFcnJvciwgIkRhdGFiYXNlIG9yIHRyYW5zYWN0aW9uIGlzIGNsb3NlZCIgfSk7CisK
KyAgICAgICAgICAgIGNyZWF0ZUluZGV4KCp3ZWFrVHJhbnNhY3Rpb24sIGluZm8sIFdURk1vdmUo
Y2FsbGJhY2spLCBncmFudGVkKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBpZiAoIXNwYWNlQ2hlY2tSZXN1bHQudmFsdWUoKSkgewogICAgICAgICBjYWxsYmFj
ayhJREJFcnJvciB7IFF1b3RhRXhjZWVkZWRFcnJvciwgcXVvdGFFcnJvck1lc3NhZ2VOYW1lKCJD
cmVhdGVJbmRleCIpIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgQVNTRVJUKG1f
YmFja2luZ1N0b3JlKTsKKyAgICBpZiAoIW1fYmFja2luZ1N0b3JlKQorICAgICAgICByZXR1cm4g
Y2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkJhY2tpbmcgc3RvcmUgaXMg
Y2xvc2VkIiB9KTsKKwogICAgIGF1dG8gZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+Y3JlYXRlSW5k
ZXgodHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSwgaW5mbyk7CiAgICAgaWYgKGVycm9y
LmlzTnVsbCgpKSB7CiAgICAgICAgIEFTU0VSVChtX2RhdGFiYXNlSW5mbyk7CkBAIC02NDQsMTEg
Kzc0OSwyOCBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVJbmRleChVbmlxdWVJREJE
YXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgYwogICAgIGNhbGxiYWNrKGVycm9yKTsK
IH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlSW5kZXgoVW5pcXVlSURCRGF0YWJh
c2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBpbmRleE5hbWUsIEVycm9yQ2FsbGJhY2sgY2FsbGJhY2spCit2b2lk
IFVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVJbmRleChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0
aW9uJiB0cmFuc2FjdGlvbiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIGluZGV4TmFtZSwgRXJyb3JDYWxsYmFjayBjYWxsYmFjaywgU3BhY2VDaGVja1Jlc3Vs
dCBzcGFjZUNoZWNrUmVzdWx0KQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAg
IExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlSW5kZXgiKTsKIAorICAg
IGlmICghc3BhY2VDaGVja1Jlc3VsdCkgeworICAgICAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAg
ICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yIH0pOwor
CisgICAgICAgIG1fbWFuYWdlci0+cmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwg
MCwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHdlYWtUcmFuc2FjdGlvbiA9
IFdlYWtQdHIgeyB0cmFuc2FjdGlvbiB9LCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4TmFt
ZSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBncmFudGVkKSBtdXRhYmxlIHsK
KyAgICAgICAgICAgIGlmICghd2Vha1RoaXMgfHwgIXdlYWtUcmFuc2FjdGlvbikKKyAgICAgICAg
ICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkRh
dGFiYXNlIG9yIHRyYW5zYWN0aW9uIGlzIGNsb3NlZCIgfSk7CisKKyAgICAgICAgICAgIGRlbGV0
ZUluZGV4KCp3ZWFrVHJhbnNhY3Rpb24sIG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhOYW1l
LCBXVEZNb3ZlKGNhbGxiYWNrKSwgZ3JhbnRlZCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgQVNTRVJUKHNwYWNlQ2hlY2tSZXN1bHQudmFsdWUoKSk7CisgICAg
aWYgKCFtX2JhY2tpbmdTdG9yZSkKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsg
SW52YWxpZFN0YXRlRXJyb3IsICJCYWNraW5nIHN0b3JlIGlzIGNsb3NlZCIgfSk7CisKICAgICBh
dXRvKiBvYmplY3RTdG9yZUluZm8gPSBtX2RhdGFiYXNlSW5mby0+aW5mb0ZvckV4aXN0aW5nT2Jq
ZWN0U3RvcmUob2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKICAgICBpZiAoIW9iamVjdFN0b3JlSW5m
bykgewogICAgICAgICBjYWxsYmFjayhJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQg
dG8gZGVsZXRlIGluZGV4IGZyb20gbm9uLWV4aXN0YW50IG9iamVjdCBzdG9yZSJfcyB9KTsKQEAg
LTY2MCw5ICs3ODIsOCBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVJbmRleChVbmlx
dWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgdQogICAgICAgICBjYWxsYmFj
ayhJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gZGVsZXRlIG5vbi1leGlzdGFu
dCBpbmRleCJfcyB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvIGluZGV4SWRl
bnRpZmllciA9IGluZGV4SW5mby0+aWRlbnRpZmllcigpOwogCi0gICAgQVNTRVJUKG1fYmFja2lu
Z1N0b3JlKTsKKyAgICBhdXRvIGluZGV4SWRlbnRpZmllciA9IGluZGV4SW5mby0+aWRlbnRpZmll
cigpOwogICAgIGF1dG8gZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+ZGVsZXRlSW5kZXgodHJhbnNh
Y3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleElk
ZW50aWZpZXIpOwogICAgIGlmIChlcnJvci5pc051bGwoKSkKICAgICAgICAgb2JqZWN0U3RvcmVJ
bmZvLT5kZWxldGVJbmRleChpbmRleElkZW50aWZpZXIpOwpAQCAtNjcwLDE4ICs3OTEsMzMgQEAg
dm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlSW5kZXgoVW5pcXVlSURCRGF0YWJhc2VUcmFu
c2FjdGlvbiYgdHJhbnNhY3Rpb24sIHUKICAgICBjYWxsYmFjayhlcnJvcik7CiB9CiAKLXZvaWQg
VW5pcXVlSURCRGF0YWJhc2U6OnJlbmFtZUluZGV4KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rp
b24mIHRyYW5zYWN0aW9uLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90
IGluZGV4SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lLCBFcnJvckNhbGxiYWNrIGNh
bGxiYWNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cmVuYW1lSW5kZXgoVW5pcXVlSURCRGF0
YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRp
ZmllciwgdWludDY0X3QgaW5kZXhJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUsIEVy
cm9yQ2FsbGJhY2sgY2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgc3BhY2VDaGVja1Jlc3VsdCkK
IHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAiVW5p
cXVlSURCRGF0YWJhc2U6OnJlbmFtZUluZGV4Iik7CiAKLSAgICAvLyBRdW90YSBjaGVjay4KLSAg
ICBhdXRvIHRhc2tTaXplID0gZGVmYXVsdFdyaXRlT3BlcmF0aW9uQ29zdCArIG5ld05hbWUuc2l6
ZUluQnl0ZXMoKTsKLSAgICBpZiAobV9zZXJ2ZXIucmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5v
cmlnaW4oKSwgdGFza1NpemUpID09IFN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uOjpEZW55
KSB7CisgICAgaWYgKCFzcGFjZUNoZWNrUmVzdWx0KSB7CisgICAgICAgIGlmICghbV9tYW5hZ2Vy
KQorICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJy
b3IgfSk7CisKKyAgICAgICAgYXV0byB0YXNrU2l6ZSA9IGRlZmF1bHRXcml0ZU9wZXJhdGlvbkNv
c3QgKyBuZXdOYW1lLnNpemVJbkJ5dGVzKCk7CisgICAgICAgIG1fbWFuYWdlci0+cmVxdWVzdFNw
YWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwgdGFza1NpemUsIFt0aGlzLCB3ZWFrVGhpcyA9IFdl
YWtQdHIgeyAqdGhpcyB9LCB3ZWFrVHJhbnNhY3Rpb24gPSBXZWFrUHRyIHsgdHJhbnNhY3Rpb24g
fSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleElkZW50aWZpZXIsIG5ld05hbWUsIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgZ3JhbnRlZCkgbXV0YWJsZSB7CisgICAgICAg
ICAgICBpZiAoIXdlYWtUaGlzIHx8ICF3ZWFrVHJhbnNhY3Rpb24pCisgICAgICAgICAgICAgICAg
cmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJEYXRhYmFzZSBv
ciB0cmFuc2FjdGlvbiBpcyBjbG9zZWQiIH0pOworCisgICAgICAgICAgICByZW5hbWVJbmRleCgq
d2Vha1RyYW5zYWN0aW9uLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4SWRlbnRpZmllciwg
bmV3TmFtZSwgV1RGTW92ZShjYWxsYmFjayksIGdyYW50ZWQpOworICAgICAgICB9KTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghc3BhY2VDaGVja1Jlc3VsdC52YWx1ZSgpKSB7
CiAgICAgICAgIGNhbGxiYWNrKElEQkVycm9yIHsgUXVvdGFFeGNlZWRlZEVycm9yLCBxdW90YUVy
cm9yTWVzc2FnZU5hbWUoIlJlbmFtZUluZGV4IikgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKKyAgICBpZiAoIW1fYmFja2luZ1N0b3JlKQorICAgICAgICByZXR1cm4gY2FsbGJhY2soSURC
RXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkJhY2tpbmcgc3RvcmUgaXMgY2xvc2VkIiB9KTsK
KwogICAgIGF1dG8qIG9iamVjdFN0b3JlSW5mbyA9IG1fZGF0YWJhc2VJbmZvLT5pbmZvRm9yRXhp
c3RpbmdPYmplY3RTdG9yZShvYmplY3RTdG9yZUlkZW50aWZpZXIpOwogICAgIGlmICghb2JqZWN0
U3RvcmVJbmZvKSB7CiAgICAgICAgIGNhbGxiYWNrKElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAi
QXR0ZW1wdCB0byByZW5hbWUgaW5kZXggaW4gbm9uLWV4aXN0YW50IG9iamVjdCBzdG9yZSJfcyB9
KTsKQEAgLTY5NCw3ICs4MzAsNiBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpyZW5hbWVJbmRl
eChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgdQogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgQVNTRVJUKG1fYmFja2luZ1N0b3JlKTsKICAgICBhdXRvIGVy
cm9yID0gbV9iYWNraW5nU3RvcmUtPnJlbmFtZUluZGV4KHRyYW5zYWN0aW9uLmluZm8oKS5pZGVu
dGlmaWVyKCksIG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhJZGVudGlmaWVyLCBuZXdOYW1l
KTsKICAgICBpZiAoZXJyb3IuaXNOdWxsKCkpCiAgICAgICAgIGluZGV4SW5mby0+cmVuYW1lKG5l
d05hbWUpOwpAQCAtNzA5LDE3ICs4NDQsMTkgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cHV0
T3JBZGQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXkKIAog
ICAgIEFTU0VSVChtX2RhdGFiYXNlSW5mbyk7CiAKLSAgICBJREJLZXlEYXRhIHVzZWRLZXk7Ci0g
ICAgSURCRXJyb3IgZXJyb3I7CisgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkKKyAgICAgICAgcmV0
dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJCYWNraW5nIHN0b3Jl
IGlzIGNsb3NlZCIgfSwga2V5RGF0YSk7CiAKLSAgICBBU1NFUlQobV9iYWNraW5nU3RvcmUpOwog
ICAgIGF1dG8gb2JqZWN0U3RvcmVJZGVudGlmaWVyID0gcmVxdWVzdERhdGEub2JqZWN0U3RvcmVJ
ZGVudGlmaWVyKCk7CiAgICAgYXV0byogb2JqZWN0U3RvcmVJbmZvID0gbV9iYWNraW5nU3RvcmUt
PmluZm9Gb3JPYmplY3RTdG9yZShvYmplY3RTdG9yZUlkZW50aWZpZXIpOwotICAgIGlmICghb2Jq
ZWN0U3RvcmVJbmZvKSB7Ci0gICAgICAgIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRl
RXJyb3IsICJPYmplY3Qgc3RvcmUgY2Fubm90IGJlIGZvdW5kIGluIHRoZSBiYWNraW5nIHN0b3Jl
Il9zIH0sIHVzZWRLZXkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmICghb2JqZWN0
U3RvcmVJbmZvKQorICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3Rh
dGVFcnJvciwgIk9iamVjdCBzdG9yZSBjYW5ub3QgYmUgZm91bmQgaW4gdGhlIGJhY2tpbmcgc3Rv
cmUiX3MgfSwga2V5RGF0YSk7CisKKyAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAgICAgcmV0dXJu
IGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IgfSwga2V5RGF0YSk7CiAKKyAg
ICBJREJLZXlEYXRhIHVzZWRLZXk7CisgICAgSURCRXJyb3IgZXJyb3I7CiAgICAgYm9vbCB1c2Vk
S2V5SXNHZW5lcmF0ZWQgPSBmYWxzZTsKICAgICB1aW50NjRfdCBrZXlOdW1iZXI7CiAgICAgYXV0
byB0cmFuc2FjdGlvbklkZW50aWZpZXIgPSByZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZp
ZXIoKTsKQEAgLTczMCw3NiArODY3LDEwNSBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwdXRP
ckFkZChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQktleQogCiAg
ICAgaWYgKG9iamVjdFN0b3JlSW5mby0+YXV0b0luY3JlbWVudCgpICYmICFrZXlEYXRhLmlzVmFs
aWQoKSkgewogICAgICAgICBlcnJvciA9IG1fYmFja2luZ1N0b3JlLT5nZW5lcmF0ZUtleU51bWJl
cih0cmFuc2FjdGlvbklkZW50aWZpZXIsIG9iamVjdFN0b3JlSWRlbnRpZmllciwga2V5TnVtYmVy
KTsKLSAgICAgICAgaWYgKCFlcnJvci5pc051bGwoKSkgewotICAgICAgICAgICAgY2FsbGJhY2so
ZXJyb3IsIHVzZWRLZXkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgICAg
IGlmICghZXJyb3IuaXNOdWxsKCkpCisgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soZXJyb3Is
IHVzZWRLZXkpOworCiAgICAgICAgIHVzZWRLZXkuc2V0TnVtYmVyVmFsdWUoa2V5TnVtYmVyKTsK
ICAgICAgICAgdXNlZEtleUlzR2VuZXJhdGVkID0gdHJ1ZTsKICAgICB9IGVsc2UKICAgICAgICAg
dXNlZEtleSA9IGtleURhdGE7CiAKLSAgICAvLyBHZW5lcmF0ZSBpbmRleCBrZXlzIHVwIGZyb250
IGZvciBtb3JlIGFjY3VyYXRlIHF1b3RhIGNoZWNrLgotICAgIEluZGV4SURUb0luZGV4S2V5TWFw
IGluZGV4S2V5czsKLSAgICBjYWxsT25JREJTZXJpYWxpemF0aW9uVGhyZWFkQW5kV2FpdChbb2Jq
ZWN0U3RvcmVJbmZvID0gb2JqZWN0U3RvcmVJbmZvLT5pc29sYXRlZENvcHkoKSwga2V5ID0gdXNl
ZEtleS5pc29sYXRlZENvcHkoKSwgdmFsdWUgPSB2YWx1ZS5pc29sYXRlZENvcHkoKSwgJmluZGV4
S2V5c10oYXV0byYgZ2xvYmFsT2JqZWN0KSB7Ci0gICAgICAgIGluZGV4S2V5cyA9IGdlbmVyYXRl
SW5kZXhLZXlNYXBGb3JWYWx1ZShnbG9iYWxPYmplY3QsIG9iamVjdFN0b3JlSW5mbywga2V5LCB2
YWx1ZSk7Ci0gICAgfSk7Ci0KICAgICBpZiAob3ZlcndyaXRlTW9kZSA9PSBJbmRleGVkREI6Ok9i
amVjdFN0b3JlT3ZlcndyaXRlTW9kZTo6Tm9PdmVyd3JpdGUpIHsKICAgICAgICAgYm9vbCBrZXlF
eGlzdHM7CiAgICAgICAgIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPmtleUV4aXN0c0luT2JqZWN0
U3RvcmUodHJhbnNhY3Rpb25JZGVudGlmaWVyLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVzZWRL
ZXksIGtleUV4aXN0cyk7Ci0gICAgICAgIGlmIChlcnJvci5pc051bGwoKSAmJiBrZXlFeGlzdHMp
CisgICAgICAgIGlmICghZXJyb3IgJiYga2V5RXhpc3RzKQogICAgICAgICAgICAgZXJyb3IgPSBJ
REJFcnJvciB7IENvbnN0cmFpbnRFcnJvciwgIktleSBhbHJlYWR5IGV4aXN0cyBpbiB0aGUgb2Jq
ZWN0IHN0b3JlIl9zIH07CiAKLSAgICAgICAgaWYgKCFlcnJvci5pc051bGwoKSkgewotICAgICAg
ICAgICAgY2FsbGJhY2soZXJyb3IsIHVzZWRLZXkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9CisgICAgICAgIGlmICghIWVycm9yKQorICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNr
KGVycm9yLCB1c2VkS2V5KTsKICAgICB9CiAKLSAgICAvLyBRdW90YSBjaGVjay4KKyAgICAvLyBH
ZW5lcmF0ZSBpbmRleCBrZXlzIHVwIGZyb250IGZvciBtb3JlIGFjY3VyYXRlIHF1b3RhIGNoZWNr
LgorICAgIEluZGV4SURUb0luZGV4S2V5TWFwIGluZGV4S2V5czsKKyAgICBjYWxsT25JREJTZXJp
YWxpemF0aW9uVGhyZWFkQW5kV2FpdChbb2JqZWN0U3RvcmVJbmZvID0gb2JqZWN0U3RvcmVJbmZv
LT5pc29sYXRlZENvcHkoKSwga2V5ID0gdXNlZEtleS5pc29sYXRlZENvcHkoKSwgdmFsdWUgPSB2
YWx1ZS5pc29sYXRlZENvcHkoKSwgJmluZGV4S2V5c10oYXV0byYgZ2xvYmFsT2JqZWN0KSB7Cisg
ICAgICAgIGluZGV4S2V5cyA9IGdlbmVyYXRlSW5kZXhLZXlNYXBGb3JWYWx1ZShnbG9iYWxPYmpl
Y3QsIG9iamVjdFN0b3JlSW5mbywga2V5LCB2YWx1ZSk7CisgICAgfSk7CisKKyAgICBnZW5lcmF0
ZWRLZXlSZXNldHRlci5yZWxlYXNlKCk7CiAgICAgYXV0byBrZXlTaXplID0gZXN0aW1hdGVTaXpl
KHVzZWRLZXkpOwogICAgIGF1dG8gdmFsdWVTaXplID0gZXN0aW1hdGVTaXplKHZhbHVlKTsKICAg
ICBhdXRvIGluZGV4U2l6ZSA9IGVzdGltYXRlU2l6ZSgqb2JqZWN0U3RvcmVJbmZvLCBpbmRleEtl
eXMsIGtleVNpemUpOwogICAgIGF1dG8gdGFza1NpemUgPSBkZWZhdWx0V3JpdGVPcGVyYXRpb25D
b3N0ICsga2V5U2l6ZSArIHZhbHVlU2l6ZSArIGluZGV4U2l6ZTsKIAogICAgIExPRyhJbmRleGVk
REIsICJVbmlxdWVJREJEYXRhYmFzZTo6cHV0T3JBZGQgcXVvdGEgY2hlY2sgd2l0aCB0YXNrIHNp
emU6ICUiIFBSSXU2NCAiIGtleSBzaXplOiAlIiBQUkl1NjQgIiB2YWx1ZSBzaXplOiAlIiBQUkl1
NjQgIiBpbmRleCBzaXplOiAlIiBQUkl1NjQsIHRhc2tTaXplLCBrZXlTaXplLCB2YWx1ZVNpemUs
IGluZGV4U2l6ZSk7CisgICAgbV9tYW5hZ2VyLT5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9y
aWdpbigpLCB0YXNrU2l6ZSwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHJl
cXVlc3REYXRhLCB1c2VkS2V5LCB2YWx1ZSwgb3ZlcndyaXRlTW9kZSwgY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKSwgdXNlZEtleUlzR2VuZXJhdGVkLCBpbmRleEtleXMsIG9iamVjdFN0b3Jl
SW5mbyA9ICpvYmplY3RTdG9yZUluZm9dKGJvb2wgZ3JhbnRlZCkgbXV0YWJsZSB7CisgICAgICAg
IGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJ
bnZhbGlkU3RhdGVFcnJvciwgIkRhdGFiYXNlIGlzIGNsb3NlZCIgfSwgdXNlZEtleSk7CiAKLSAg
ICBpZiAobV9zZXJ2ZXIucmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwgdGFza1Np
emUpID09IFN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uOjpEZW55KSB7Ci0gICAgICAgIGNh
bGxiYWNrKElEQkVycm9yIHsgUXVvdGFFeGNlZWRlZEVycm9yLCBxdW90YUVycm9yTWVzc2FnZU5h
bWUoIlB1dE9yQWRkIikgfSwgdXNlZEtleSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAg
ICAgIHB1dE9yQWRkQWZ0ZXJTcGFjZUNoZWNrKHJlcXVlc3REYXRhLCB1c2VkS2V5LCB2YWx1ZSwg
b3ZlcndyaXRlTW9kZSwgV1RGTW92ZShjYWxsYmFjayksIHVzZWRLZXlJc0dlbmVyYXRlZCwgaW5k
ZXhLZXlzLCBvYmplY3RTdG9yZUluZm8sIGdyYW50ZWQpOworICAgIH0pOworfQorCit2b2lkIFVu
aXF1ZUlEQkRhdGFiYXNlOjpwdXRPckFkZEFmdGVyU3BhY2VDaGVjayhjb25zdCBJREJSZXF1ZXN0
RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQktleURhdGEmIGtleURhdGEsIGNvbnN0IElEQlZh
bHVlJiB2YWx1ZSwgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUgb3ZlcndyaXRl
TW9kZSwgS2V5RGF0YUNhbGxiYWNrIGNhbGxiYWNrLCBib29sIGlzS2V5R2VuZXJhdGVkLCBjb25z
dCBJbmRleElEVG9JbmRleEtleU1hcCYgaW5kZXhLZXlzLCBjb25zdCBJREJPYmplY3RTdG9yZUlu
Zm8mIG9iamVjdFN0b3JlSW5mbywgU3BhY2VDaGVja1Jlc3VsdCBzcGFjZUNoZWNrUmVzdWx0KQor
eworICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChtX2RhdGFiYXNlSW5m
byk7CisKKyAgICBpZiAoIW1fYmFja2luZ1N0b3JlKQorICAgICAgICByZXR1cm4gY2FsbGJhY2so
SURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkJhY2tpbmcgc3RvcmUgaXMgY2xvc2VkIiB9
LCBrZXlEYXRhKTsKKworICAgIHVpbnQ2NF90IGtleU51bWJlciA9IGlzS2V5R2VuZXJhdGVkID8g
a2V5RGF0YS5udW1iZXIoKSA6IDA7CisgICAgYXV0byBvYmplY3RTdG9yZUlkZW50aWZpZXIgPSBv
YmplY3RTdG9yZUluZm8uaWRlbnRpZmllcigpOworICAgIGF1dG8gdHJhbnNhY3Rpb25JZGVudGlm
aWVyID0gcmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCk7CisgICAgYXV0byBnZW5l
cmF0ZWRLZXlSZXNldHRlciA9IG1ha2VTY29wZUV4aXQoW3RoaXMsIHRyYW5zYWN0aW9uSWRlbnRp
Zmllciwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCAma2V5TnVtYmVyLCAmaXNLZXlHZW5lcmF0ZWRd
KCkgeworICAgICAgICBpZiAoaXNLZXlHZW5lcmF0ZWQpCisgICAgICAgICAgICBtX2JhY2tpbmdT
dG9yZS0+cmV2ZXJ0R2VuZXJhdGVkS2V5TnVtYmVyKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgb2Jq
ZWN0U3RvcmVJZGVudGlmaWVyLCBrZXlOdW1iZXIpOworICAgIH0pOwogCisgICAgaWYgKCFzcGFj
ZUNoZWNrUmVzdWx0IHx8ICFzcGFjZUNoZWNrUmVzdWx0LnZhbHVlKCkpCisgICAgICAgIHJldHVy
biBjYWxsYmFjayhJREJFcnJvciB7IFF1b3RhRXhjZWVkZWRFcnJvciwgcXVvdGFFcnJvck1lc3Nh
Z2VOYW1lKCJQdXRPckFkZCIpIH0sIGtleURhdGEpOwogICAgIC8vIElmIGEgcmVjb3JkIGFscmVh
ZHkgZXhpc3RzIGluIHN0b3JlLCB0aGVuIHJlbW92ZSB0aGUgcmVjb3JkIGZyb20gc3RvcmUgdXNp
bmcgdGhlIHN0ZXBzIGZvciBkZWxldGluZyByZWNvcmRzIGZyb20gYW4gb2JqZWN0IHN0b3JlLgot
ICAgIC8vIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UgZm9ybWFsbHkgZGVsZXRpbmcgaXQgZnJv
bSBmcm9tIHRoZSBvYmplY3Qgc3RvcmUgYWxzbyByZW1vdmVzIGl0IGZyb20gdGhlIGFwcHJvcHJp
YXRlIGluZGV4ZXMuCi0gICAgZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+ZGVsZXRlUmFuZ2UodHJh
bnNhY3Rpb25JZGVudGlmaWVyLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVzZWRLZXkpOwotICAg
IGlmICghZXJyb3IuaXNOdWxsKCkpIHsKLSAgICAgICAgY2FsbGJhY2soZXJyb3IsIHVzZWRLZXkp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIC8vIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1
c2UgZm9ybWFsbHkgZGVsZXRpbmcgaXQgZnJvbSB0aGUgb2JqZWN0IHN0b3JlIGFsc28gcmVtb3Zl
cyBpdCBmcm9tIHRoZSBhcHByb3ByaWF0ZSBpbmRleGVzLgorICAgIElEQkVycm9yIGVycm9yID0g
bV9iYWNraW5nU3RvcmUtPmRlbGV0ZVJhbmdlKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgb2JqZWN0
U3RvcmVJZGVudGlmaWVyLCBrZXlEYXRhKTsKKyAgICBpZiAoIWVycm9yLmlzTnVsbCgpKQorICAg
ICAgICByZXR1cm4gY2FsbGJhY2soZXJyb3IsIGtleURhdGEpOwogCi0gICAgZXJyb3IgPSBtX2Jh
Y2tpbmdTdG9yZS0+YWRkUmVjb3JkKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgKm9iamVjdFN0b3Jl
SW5mbywgdXNlZEtleSwgaW5kZXhLZXlzLCB2YWx1ZSk7Ci0gICAgaWYgKCFlcnJvci5pc051bGwo
KSkgewotICAgICAgICBjYWxsYmFjayhlcnJvciwgdXNlZEtleSk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9CisgICAgZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+YWRkUmVjb3JkKHRyYW5zYWN0aW9u
SWRlbnRpZmllciwgb2JqZWN0U3RvcmVJbmZvLCBrZXlEYXRhLCBpbmRleEtleXMsIHZhbHVlKTsK
KyAgICBpZiAoIWVycm9yLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gY2FsbGJhY2soZXJyb3Is
IGtleURhdGEpOwogCi0gICAgaWYgKG92ZXJ3cml0ZU1vZGUgIT0gSW5kZXhlZERCOjpPYmplY3RT
dG9yZU92ZXJ3cml0ZU1vZGU6Ok92ZXJ3cml0ZUZvckN1cnNvciAmJiBvYmplY3RTdG9yZUluZm8t
PmF1dG9JbmNyZW1lbnQoKSAmJiBrZXlEYXRhLnR5cGUoKSA9PSBJbmRleGVkREI6OktleVR5cGU6
Ok51bWJlcikKKyAgICBpZiAob3ZlcndyaXRlTW9kZSAhPSBJbmRleGVkREI6Ok9iamVjdFN0b3Jl
T3ZlcndyaXRlTW9kZTo6T3ZlcndyaXRlRm9yQ3Vyc29yICYmIG9iamVjdFN0b3JlSW5mby5hdXRv
SW5jcmVtZW50KCkgJiYga2V5RGF0YS50eXBlKCkgPT0gSW5kZXhlZERCOjpLZXlUeXBlOjpOdW1i
ZXIpCiAgICAgICAgIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPm1heWJlVXBkYXRlS2V5R2VuZXJh
dG9yTnVtYmVyKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBr
ZXlEYXRhLm51bWJlcigpKTsKIAogICAgIGdlbmVyYXRlZEtleVJlc2V0dGVyLnJlbGVhc2UoKTsK
LSAgICBjYWxsYmFjayhlcnJvciwgdXNlZEtleSk7CisgICAgY2FsbGJhY2soZXJyb3IsIGtleURh
dGEpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRSZWNvcmQoY29uc3QgSURCUmVx
dWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJHZXRSZWNvcmREYXRhJiBnZXRSZWNvcmRE
YXRhLCBHZXRSZXN1bHRDYWxsYmFjayBjYWxsYmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6
OmdldFJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkdl
dFJlY29yZERhdGEmIGdldFJlY29yZERhdGEsIEdldFJlc3VsdENhbGxiYWNrIGNhbGxiYWNrLCBT
cGFjZUNoZWNrUmVzdWx0IHNwYWNlQ2hlY2tSZXN1bHQpCiB7CiAgICAgQVNTRVJUKCFpc01haW5U
aHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRSZWNv
cmQiKTsKIAorICAgIGlmICghc3BhY2VDaGVja1Jlc3VsdCkgeworICAgICAgICBpZiAoIW1fbWFu
YWdlcikKKyAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0
ZUVycm9yIH0sIElEQkdldFJlc3VsdCB7IH0pOworCisgICAgICAgIG1fbWFuYWdlci0+cmVxdWVz
dFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwgMCwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0
ciB7ICp0aGlzIH0sIHJlcXVlc3REYXRhLCBnZXRSZWNvcmREYXRhLCBjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spXShib29sIGdyYW50ZWQpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCF3
ZWFrVGhpcykKKyAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZh
bGlkU3RhdGVFcnJvciwgIkRhdGFiYXNlIGlzIGNsb3NlZCIgfSwgSURCR2V0UmVzdWx0IHsgfSk7
CisKKyAgICAgICAgICAgIGdldFJlY29yZChyZXF1ZXN0RGF0YSwgZ2V0UmVjb3JkRGF0YSwgV1RG
TW92ZShjYWxsYmFjayksIGdyYW50ZWQpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIEFTU0VSVChzcGFjZUNoZWNrUmVzdWx0LnZhbHVlKCkpOworICAgIGlmICgh
bV9iYWNraW5nU3RvcmUpCisgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFs
aWRTdGF0ZUVycm9yLCAiQmFja2luZyBzdG9yZSBpcyBjbG9zZWQiIH0sIElEQkdldFJlc3VsdCB7
IH0pOworCiAgICAgSURCR2V0UmVzdWx0IHJlc3VsdDsKICAgICBJREJFcnJvciBlcnJvcjsKIAot
ICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CiAgICAgaWYgKHVpbnQ2NF90IGluZGV4SWRlbnRp
ZmllciA9IHJlcXVlc3REYXRhLmluZGV4SWRlbnRpZmllcigpKQogICAgICAgICBlcnJvciA9IG1f
YmFja2luZ1N0b3JlLT5nZXRJbmRleFJlY29yZChyZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50
aWZpZXIoKSwgcmVxdWVzdERhdGEub2JqZWN0U3RvcmVJZGVudGlmaWVyKCksIGluZGV4SWRlbnRp
ZmllciwgcmVxdWVzdERhdGEuaW5kZXhSZWNvcmRUeXBlKCksIGdldFJlY29yZERhdGEua2V5UmFu
Z2VEYXRhLCByZXN1bHQpOwogICAgIGVsc2UKQEAgLTgwOCw0NyArOTc0LDExMCBAQCB2b2lkIFVu
aXF1ZUlEQkRhdGFiYXNlOjpnZXRSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3RE
YXRhLCBjb25zdCBJREJHZQogICAgIGNhbGxiYWNrKGVycm9yLCByZXN1bHQpOwogfQogCi12b2lk
IFVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRBbGxSZWNvcmRzKGNvbnN0IElEQlJlcXVlc3REYXRhJiBy
ZXF1ZXN0RGF0YSwgY29uc3QgSURCR2V0QWxsUmVjb3Jkc0RhdGEmIGdldEFsbFJlY29yZHNEYXRh
LCBHZXRBbGxSZXN1bHRzQ2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNl
OjpnZXRBbGxSZWNvcmRzKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3Qg
SURCR2V0QWxsUmVjb3Jkc0RhdGEmIGdldEFsbFJlY29yZHNEYXRhLCBHZXRBbGxSZXN1bHRzQ2Fs
bGJhY2sgY2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgc3BhY2VDaGVja1Jlc3VsdCkKIHsKICAg
ICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURC
RGF0YWJhc2U6OmdldEFsbFJlY29yZHMiKTsKIAotICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7
CisgICAgaWYgKCFzcGFjZUNoZWNrUmVzdWx0KSB7CisgICAgICAgIGlmICghbV9tYW5hZ2VyKQor
ICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3Ig
fSwgSURCR2V0QWxsUmVzdWx0IHsgfSk7CisKKyAgICAgICAgbV9tYW5hZ2VyLT5yZXF1ZXN0U3Bh
Y2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCAwLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsg
KnRoaXMgfSwgcmVxdWVzdERhdGEsIGdldEFsbFJlY29yZHNEYXRhLCBjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spXShib29sIGdyYW50ZWQpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCF3
ZWFrVGhpcykKKyAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZh
bGlkU3RhdGVFcnJvciwgIkRhdGFiYXNlIGlzIGNsb3NlZCIgfSwgSURCR2V0QWxsUmVzdWx0IHsg
fSk7CisKKyAgICAgICAgICAgIGdldEFsbFJlY29yZHMocmVxdWVzdERhdGEsIGdldEFsbFJlY29y
ZHNEYXRhLCBXVEZNb3ZlKGNhbGxiYWNrKSwgZ3JhbnRlZCk7CisgICAgICAgIH0pOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKHNwYWNlQ2hlY2tSZXN1bHQudmFsdWUoKSk7
CisgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVy
cm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJCYWNraW5nIHN0b3JlIGlzIGNsb3NlZCIgfSwgSURC
R2V0QWxsUmVzdWx0IHsgfSk7CisKICAgICBJREJHZXRBbGxSZXN1bHQgcmVzdWx0OwogICAgIGF1
dG8gZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+Z2V0QWxsUmVjb3JkcyhyZXF1ZXN0RGF0YS50cmFu
c2FjdGlvbklkZW50aWZpZXIoKSwgZ2V0QWxsUmVjb3Jkc0RhdGEsIHJlc3VsdCk7CiAKICAgICBj
YWxsYmFjayhlcnJvciwgcmVzdWx0KTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Z2V0
Q291bnQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXlSYW5n
ZURhdGEmIHJhbmdlLCBDb3VudENhbGxiYWNrIGNhbGxiYWNrKQordm9pZCBVbmlxdWVJREJEYXRh
YmFzZTo6Z2V0Q291bnQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJ
REJLZXlSYW5nZURhdGEmIHJhbmdlLCBDb3VudENhbGxiYWNrIGNhbGxiYWNrLCBTcGFjZUNoZWNr
UmVzdWx0IHNwYWNlQ2hlY2tSZXN1bHQpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7
CiAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRDb3VudCIpOwogCi0g
ICAgQVNTRVJUKG1fYmFja2luZ1N0b3JlKTsKKyAgICBpZiAoIXNwYWNlQ2hlY2tSZXN1bHQpIHsK
KyAgICAgICAgaWYgKCFtX21hbmFnZXIpCisgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURC
RXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciB9LCAwKTsKKworICAgICAgICBtX21hbmFnZXItPnJl
cXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIDAsIFt0aGlzLCB3ZWFrVGhpcyA9IFdl
YWtQdHIgeyAqdGhpcyB9LCByZXF1ZXN0RGF0YSwgcmFuZ2UsIGNhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayldKGJvb2wgZ3JhbnRlZCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXdlYWtU
aGlzKQorICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRT
dGF0ZUVycm9yLCAiRGF0YWJhc2UgaXMgY2xvc2VkIiB9LCAwKTsKKworICAgICAgICAgICAgZ2V0
Q291bnQocmVxdWVzdERhdGEsIHJhbmdlLCBXVEZNb3ZlKGNhbGxiYWNrKSwgZ3JhbnRlZCk7Cisg
ICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKHNwYWNlQ2hl
Y2tSZXN1bHQudmFsdWUoKSk7CisgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkKKyAgICAgICAgcmV0
dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJCYWNraW5nIHN0b3Jl
IGlzIGNsb3NlZCIgfSwgMCk7CisKICAgICB1aW50NjRfdCBjb3VudCA9IDA7CiAgICAgYXV0byBl
cnJvciA9IG1fYmFja2luZ1N0b3JlLT5nZXRDb3VudChyZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklk
ZW50aWZpZXIoKSwgcmVxdWVzdERhdGEub2JqZWN0U3RvcmVJZGVudGlmaWVyKCksIHJlcXVlc3RE
YXRhLmluZGV4SWRlbnRpZmllcigpLCByYW5nZSwgY291bnQpOwogCiAgICAgY2FsbGJhY2soZXJy
b3IsIGNvdW50KTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlUmVjb3JkKGNv
bnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBr
ZXlSYW5nZURhdGEsIEVycm9yQ2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFi
YXNlOjpkZWxldGVSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25z
dCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlRGF0YSwgRXJyb3JDYWxsYmFjayBjYWxsYmFjaywg
U3BhY2VDaGVja1Jlc3VsdCBzcGFjZUNoZWNrUmVzdWx0KQogewogICAgIEFTU0VSVCghaXNNYWlu
VGhyZWFkKCkpOwogICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRl
UmVjb3JkIik7CiAKLSAgICBBU1NFUlQobV9iYWNraW5nU3RvcmUpOworICAgIGlmICghc3BhY2VD
aGVja1Jlc3VsdCkgeworICAgICAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAgICAgICAgIHJldHVy
biBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yIH0pOworCisgICAgICAgIG1f
bWFuYWdlci0+cmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwgMCwgW3RoaXMsIHdl
YWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHJlcXVlc3REYXRhLCBrZXlSYW5nZURhdGEsIGNh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgZ3JhbnRlZCkgbXV0YWJsZSB7CisgICAg
ICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJ
REJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiRGF0YWJhc2UgaXMgY2xvc2VkIiB9KTsKKwor
ICAgICAgICAgICAgZGVsZXRlUmVjb3JkKHJlcXVlc3REYXRhLCBrZXlSYW5nZURhdGEsIFdURk1v
dmUoY2FsbGJhY2spLCBncmFudGVkKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBBU1NFUlQoc3BhY2VDaGVja1Jlc3VsdC52YWx1ZSgpKTsKKyAgICBpZiAoIW1f
YmFja2luZ1N0b3JlKQorICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlk
U3RhdGVFcnJvciwgIkJhY2tpbmcgc3RvcmUgaXMgY2xvc2VkIiB9KTsKKwogICAgIGF1dG8gZXJy
b3IgPSBtX2JhY2tpbmdTdG9yZS0+ZGVsZXRlUmFuZ2UocmVxdWVzdERhdGEudHJhbnNhY3Rpb25J
ZGVudGlmaWVyKCksIHJlcXVlc3REYXRhLm9iamVjdFN0b3JlSWRlbnRpZmllcigpLCBrZXlSYW5n
ZURhdGEpOwogCiAgICAgY2FsbGJhY2soZXJyb3IpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFi
YXNlOjpvcGVuQ3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3Qg
SURCQ3Vyc29ySW5mbyYgaW5mbywgR2V0UmVzdWx0Q2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIFVu
aXF1ZUlEQkRhdGFiYXNlOjpvcGVuQ3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0
RGF0YSwgY29uc3QgSURCQ3Vyc29ySW5mbyYgaW5mbywgR2V0UmVzdWx0Q2FsbGJhY2sgY2FsbGJh
Y2ssIFNwYWNlQ2hlY2tSZXN1bHQgc3BhY2VDaGVja1Jlc3VsdCkKIHsKICAgICBBU1NFUlQoIWlz
TWFpblRocmVhZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6Om9w
ZW5DdXJzb3IiKTsKIAotICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CisgICAgaWYgKCFzcGFj
ZUNoZWNrUmVzdWx0KSB7CisgICAgICAgIGlmICghbV9tYW5hZ2VyKQorICAgICAgICAgICAgcmV0
dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IgfSwgSURCR2V0UmVzdWx0
IHsgfSk7CisKKyAgICAgICAgbV9tYW5hZ2VyLT5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9y
aWdpbigpLCAwLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgcmVxdWVzdERh
dGEsIGluZm8sIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgZ3JhbnRlZCkgbXV0
YWJsZSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHJldHVy
biBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiRGF0YWJhc2Ugb3IgdHJh
bnNhY3Rpb24gaXMgY2xvc2VkIiB9LCBJREJHZXRSZXN1bHQgeyB9KTsKKworICAgICAgICAgICAg
b3BlbkN1cnNvcihyZXF1ZXN0RGF0YSwgaW5mbywgV1RGTW92ZShjYWxsYmFjayksIGdyYW50ZWQp
OworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChzcGFj
ZUNoZWNrUmVzdWx0LnZhbHVlKCkpOworICAgIGlmICghbV9iYWNraW5nU3RvcmUpCisgICAgICAg
IHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiQmFja2luZyBz
dG9yZSBpcyBjbG9zZWQiIH0sIElEQkdldFJlc3VsdCB7IH0pOwogCiAgICAgSURCR2V0UmVzdWx0
IHJlc3VsdDsKICAgICBhdXRvIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPm9wZW5DdXJzb3IocmVx
dWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCksIGluZm8sIHJlc3VsdCk7CkBAIC04NTYs
MTIgKzEwODUsMjcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6b3BlbkN1cnNvcihjb25zdCBJ
REJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkMKICAgICBjYWxsYmFjayhlcnJv
ciwgcmVzdWx0KTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6aXRlcmF0ZUN1cnNvcihj
b25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkl0ZXJhdGVDdXJzb3JE
YXRhJiBkYXRhLCBHZXRSZXN1bHRDYWxsYmFjayBjYWxsYmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0
YWJhc2U6Oml0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBj
b25zdCBJREJJdGVyYXRlQ3Vyc29yRGF0YSYgZGF0YSwgR2V0UmVzdWx0Q2FsbGJhY2sgY2FsbGJh
Y2ssIFNwYWNlQ2hlY2tSZXN1bHQgc3BhY2VDaGVja1Jlc3VsdCkKIHsKICAgICBBU1NFUlQoIWlz
TWFpblRocmVhZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6Oml0
ZXJhdGVDdXJzb3IiKTsKIAotICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CisgICAgaWYgKCFz
cGFjZUNoZWNrUmVzdWx0KSB7CisgICAgICAgIGlmICghbV9tYW5hZ2VyKQorICAgICAgICAgICAg
cmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IgfSwgSURCR2V0UmVz
dWx0IHsgfSk7CisKKyAgICAgICAgbV9tYW5hZ2VyLT5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVy
Lm9yaWdpbigpLCAwLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgcmVxdWVz
dERhdGEsIGRhdGEsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgZ3JhbnRlZCkg
bXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHJl
dHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiRGF0YWJhc2Ugb3Ig
dHJhbnNhY3Rpb24gaXMgY2xvc2VkIiB9LCBJREJHZXRSZXN1bHQgeyB9KTsKKworICAgICAgICAg
ICAgaXRlcmF0ZUN1cnNvcihyZXF1ZXN0RGF0YSwgZGF0YSwgV1RGTW92ZShjYWxsYmFjayksIGdy
YW50ZWQpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VS
VChzcGFjZUNoZWNrUmVzdWx0LnZhbHVlKCkpOworICAgIGlmICghbV9iYWNraW5nU3RvcmUpCisg
ICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiQmFj
a2luZyBzdG9yZSBpcyBjbG9zZWQiIH0sIElEQkdldFJlc3VsdCB7IH0pOwogCiAgICAgSURCR2V0
UmVzdWx0IHJlc3VsdDsKICAgICBhdXRvIHRyYW5zYWN0aW9uSWRlbnRpZmllciA9IHJlcXVlc3RE
YXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpOwpAQCAtODcxLDEzICsxMTE1LDMwIEBAIHZvaWQg
VW5pcXVlSURCRGF0YWJhc2U6Oml0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEmIHJl
cXVlc3REYXRhLCBjb25zdCBJCiAgICAgY2FsbGJhY2soZXJyb3IsIHJlc3VsdCk7CiB9CiAKLXZv
aWQgVW5pcXVlSURCRGF0YWJhc2U6OmNvbW1pdFRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNl
VHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBFcnJvckNhbGxiYWNrIGNhbGxiYWNrKQordm9pZCBV
bmlxdWVJREJEYXRhYmFzZTo6Y29tbWl0VHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFu
c2FjdGlvbiYgdHJhbnNhY3Rpb24sIEVycm9yQ2FsbGJhY2sgY2FsbGJhY2ssIFNwYWNlQ2hlY2tS
ZXN1bHQgc3BhY2VDaGVja1Jlc3VsdCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsK
ICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6OmNvbW1pdFRyYW5zYWN0aW9u
IC0gJXMiLCB0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpLmxvZ2dpbmdTdHJpbmcoKS51
dGY4KCkuZGF0YSgpKTsKIAorICAgIGlmICghc3BhY2VDaGVja1Jlc3VsdCkgeworICAgICAgICBp
ZiAoIW1fbWFuYWdlcikKKyAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IElu
dmFsaWRTdGF0ZUVycm9yIH0pOworCisgICAgICAgIG1fbWFuYWdlci0+cmVxdWVzdFNwYWNlKG1f
aWRlbnRpZmllci5vcmlnaW4oKSwgMCwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlz
IH0sIHdlYWtUcmFuc2FjdGlvbiA9IFdlYWtQdHIgeyB0cmFuc2FjdGlvbiB9LCBjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spXShib29sIGdyYW50ZWQpIG11dGFibGUgeworICAgICAgICAgICAg
aWYgKCF3ZWFrVGhpcyB8fCAhd2Vha1RyYW5zYWN0aW9uKQorICAgICAgICAgICAgICAgIHJldHVy
biBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiRGF0YWJhc2Ugb3IgdHJh
bnNhY3Rpb24gaXMgY2xvc2VkIiB9KTsKKworICAgICAgICAgICAgY29tbWl0VHJhbnNhY3Rpb24o
KndlYWtUcmFuc2FjdGlvbiwgV1RGTW92ZShjYWxsYmFjayksIGdyYW50ZWQpOworICAgICAgICB9
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChzcGFjZUNoZWNrUmVzdWx0
LnZhbHVlKCkpOwogICAgIEFTU0VSVCh0cmFuc2FjdGlvbi5kYXRhYmFzZUNvbm5lY3Rpb24oKS5k
YXRhYmFzZSgpID09IHRoaXMpOwotICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CisKKyAgICBp
ZiAoIW1fYmFja2luZ1N0b3JlKQorICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJ
bnZhbGlkU3RhdGVFcnJvciwgIkJhY2tpbmcgc3RvcmUgaXMgY2xvc2VkIiB9KTsKKwogICAgIGF1
dG8gdGFrZW5UcmFuc2FjdGlvbiA9IG1faW5Qcm9ncmVzc1RyYW5zYWN0aW9ucy50YWtlKHRyYW5z
YWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCkpOwogICAgIGlmICghdGFrZW5UcmFuc2FjdGlvbikg
ewogICAgICAgICBpZiAoIW1fb3BlbkRhdGFiYXNlQ29ubmVjdGlvbnMuY29udGFpbnMoJnRyYW5z
YWN0aW9uLmRhdGFiYXNlQ29ubmVjdGlvbigpKSkKQEAgLTg5MywxMSArMTE1NCwyNSBAQCB2b2lk
IFVuaXF1ZUlEQkRhdGFiYXNlOjpjb21taXRUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRy
YW5zYWN0aW9uJiB0cmFuc2FjdAogICAgIHRyYW5zYWN0aW9uQ29tcGxldGVkKFdURk1vdmUodGFr
ZW5UcmFuc2FjdGlvbikpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjphYm9ydFRyYW5z
YWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBFcnJvckNh
bGxiYWNrIGNhbGxiYWNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6YWJvcnRUcmFuc2FjdGlv
bihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgRXJyb3JDYWxsYmFj
ayBjYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCBzcGFjZUNoZWNrUmVzdWx0KQogewogICAgIEFT
U0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRh
YmFzZTo6YWJvcnRUcmFuc2FjdGlvbiAtICVzIiwgdHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZp
ZXIoKS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKKyAgICBpZiAoIXNwYWNlQ2hl
Y2tSZXN1bHQpIHsKKyAgICAgICAgaWYgKCFtX21hbmFnZXIpCisgICAgICAgICAgICByZXR1cm4g
Y2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciB9KTsKKworICAgICAgICBtX21h
bmFnZXItPnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIDAsIFt0aGlzLCB3ZWFr
VGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCB3ZWFrVHJhbnNhY3Rpb24gPSBXZWFrUHRyIHsgdHJh
bnNhY3Rpb24gfSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBncmFudGVkKSBt
dXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMgfHwgIXdlYWtUcmFuc2FjdGlvbikK
KyAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVF
cnJvciwgIkRhdGFiYXNlIG9yIHRyYW5zYWN0aW9uIGlzIGNsb3NlZCIgfSk7CisKKyAgICAgICAg
ICAgIGFib3J0VHJhbnNhY3Rpb24oKndlYWtUcmFuc2FjdGlvbiwgV1RGTW92ZShjYWxsYmFjayks
IGdyYW50ZWQpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFT
U0VSVChzcGFjZUNoZWNrUmVzdWx0LnZhbHVlKCkpOwogICAgIEFTU0VSVCh0cmFuc2FjdGlvbi5k
YXRhYmFzZUNvbm5lY3Rpb24oKS5kYXRhYmFzZSgpID09IHRoaXMpOwogCiAgICAgYXV0byB0YWtl
blRyYW5zYWN0aW9uID0gbV9pblByb2dyZXNzVHJhbnNhY3Rpb25zLnRha2UodHJhbnNhY3Rpb24u
aW5mbygpLmlkZW50aWZpZXIoKSk7CkBAIC05MjUsNyArMTIwMCwxMSBAQCB2b2lkIFVuaXF1ZUlE
QkRhdGFiYXNlOjphYm9ydFRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24m
IHRyYW5zYWN0aQogICAgICAgICBtX2RhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJh
c2VJbmZvPigqbV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24tPm9yaWdpbmFsRGF0YWJhc2VJbmZv
KCkpOwogICAgIH0KIAotICAgIGF1dG8gZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+YWJvcnRUcmFu
c2FjdGlvbih0cmFuc2FjdGlvbklkZW50aWZpZXIpOworICAgIElEQkVycm9yIGVycm9yOworICAg
IGlmICghbV9iYWNraW5nU3RvcmUpCisgICAgICAgIGVycm9yID0gSURCRXJyb3IgeyBJbnZhbGlk
U3RhdGVFcnJvciwgIkJhY2tpbmcgc3RvcmUgaXMgY2xvc2VkIiB9OworICAgIGVsc2UKKyAgICAg
ICAgZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+YWJvcnRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbklk
ZW50aWZpZXIpOwogCiAgICAgY2FsbGJhY2soZXJyb3IpOwogICAgIHRyYW5zYWN0aW9uQ29tcGxl
dGVkKFdURk1vdmUodGFrZW5UcmFuc2FjdGlvbikpOwpAQCAtMTIwNCw2ICsxNDgzLDEyIEBAIHZv
aWQgVW5pcXVlSURCRGF0YWJhc2U6OmFib3J0QWN0aXZlVHJhbnNhY3Rpb25zKCkKICAgICB9CiB9
CiAKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmFib3J0SW5Qcm9ncmVzc1RyYW5zYWN0aW9ucygp
Cit7CisgICAgZm9yIChhdXRvJiBpZGVudGlmaWVyIDogY29weVRvVmVjdG9yKG1faW5Qcm9ncmVz
c1RyYW5zYWN0aW9ucy5rZXlzKCkpKQorICAgICAgICBtX2luUHJvZ3Jlc3NUcmFuc2FjdGlvbnMu
Z2V0KGlkZW50aWZpZXIpLT5hYm9ydFdpdGhvdXRDYWxsYmFjaygpOworfQorCiB2b2lkIFVuaXF1
ZUlEQkRhdGFiYXNlOjpjbG9zZSgpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRh
dGFiYXNlOjpjbG9zZSIpOwpAQCAtMTIxMyw3ICsxNDk4LDcgQEAgdm9pZCBVbmlxdWVJREJEYXRh
YmFzZTo6Y2xvc2UoKQogICAgICAgICBtX2JhY2tpbmdTdG9yZSA9IG51bGxwdHI7CiAgICAgfQog
fQotCisgICAgCiBib29sIFVuaXF1ZUlEQkRhdGFiYXNlOjp0cnlDbG9zZSgpCiB7CiAgICAgaWYg
KG1fYmFja2luZ1N0b3JlICYmIG1fYmFja2luZ1N0b3JlLT5pc0VwaGVtZXJhbCgpKQpAQCAtMTIy
NSw2ICsxNTEwLDExIEBAIGJvb2wgVW5pcXVlSURCRGF0YWJhc2U6OnRyeUNsb3NlKCkKICAgICBj
bG9zZSgpOwogICAgIHJldHVybiB0cnVlOwogfQorICAgIAorYm9vbCBVbmlxdWVJREJEYXRhYmFz
ZTo6aGFzRGF0YUluTWVtb3J5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9iYWNraW5nU3RvcmUg
PyBtX2JhY2tpbmdTdG9yZS0+aXNFcGhlbWVyYWwoKSA6IGZhbHNlOworfQogCiBSZWZQdHI8U2Vy
dmVyT3BlbkRCUmVxdWVzdD4gVW5pcXVlSURCRGF0YWJhc2U6OnRha2VOZXh0UnVubmFibGVSZXF1
ZXN0KFJlcXVlc3RUeXBlIHJlcXVlc3RUeXBlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaAppbmRl
eCBiMmE3NDE3ZjljODE5Y2ZjMjQxNDZjZTVmYjVjZjVkMjYxMjg1MDgwLi5iMDRkNzEzOWVmZGYw
ZGM3OThmNjU4Y2U1MjE2OTZhMGE3NmNmZWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaApAQCAt
NTksOCArNTksOCBAQCBlbnVtIGNsYXNzIEluZGV4UmVjb3JkVHlwZSA6IGJvb2w7CiBuYW1lc3Bh
Y2UgSURCU2VydmVyIHsKIAogY2xhc3MgSURCQ29ubmVjdGlvblRvQ2xpZW50OwotY2xhc3MgSURC
U2VydmVyOwogY2xhc3MgVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uOworY2xhc3MgVW5pcXVl
SURCRGF0YWJhc2VNYW5hZ2VyOwogCiB0eXBlZGVmIEZ1bmN0aW9uPHZvaWQoY29uc3QgSURCRXJy
b3ImKT4gRXJyb3JDYWxsYmFjazsKIHR5cGVkZWYgRnVuY3Rpb248dm9pZChjb25zdCBJREJFcnJv
ciYsIGNvbnN0IElEQktleURhdGEmKT4gS2V5RGF0YUNhbGxiYWNrOwpAQCAtNzEsNTQgKzcxLDU5
IEBAIHR5cGVkZWYgRnVuY3Rpb248dm9pZChjb25zdCBJREJFcnJvciYsIHVpbnQ2NF90KT4gQ291
bnRDYWxsYmFjazsKIGNsYXNzIFVuaXF1ZUlEQkRhdGFiYXNlIDogcHVibGljIENhbk1ha2VXZWFr
UHRyPFVuaXF1ZUlEQkRhdGFiYXNlPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6Ci0gICAgVW5pcXVlSURCRGF0YWJhc2UoSURCU2VydmVyJiwgY29uc3QgSURCRGF0YWJh
c2VJZGVudGlmaWVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgVW5pcXVlSURCRGF0YWJhc2UoVW5p
cXVlSURCRGF0YWJhc2VNYW5hZ2VyJiwgY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJik7CiAg
ICAgVW5pcXVlSURCRGF0YWJhc2UoVW5pcXVlSURCRGF0YWJhc2UmKSA9IGRlbGV0ZTsKICAgICBX
RUJDT1JFX0VYUE9SVCB+VW5pcXVlSURCRGF0YWJhc2UoKTsKIAotICAgIHZvaWQgb3BlbkRhdGFi
YXNlQ29ubmVjdGlvbihJREJDb25uZWN0aW9uVG9DbGllbnQmLCBjb25zdCBJREJSZXF1ZXN0RGF0
YSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgb3BlbkRhdGFiYXNlQ29ubmVjdGlvbihJREJD
b25uZWN0aW9uVG9DbGllbnQmLCBjb25zdCBJREJSZXF1ZXN0RGF0YSYpOwogCiAgICAgY29uc3Qg
SURCRGF0YWJhc2VJbmZvJiBpbmZvKCkgY29uc3Q7Ci0gICAgSURCU2VydmVyJiBzZXJ2ZXIoKSB7
IHJldHVybiBtX3NlcnZlcjsgfQorICAgIFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlciogbWFuYWdl
cigpOwogICAgIGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYgaWRlbnRpZmllcigpIGNvbnN0
IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogCi0gICAgdm9pZCBjcmVhdGVPYmplY3RTdG9yZShV
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiwg
RXJyb3JDYWxsYmFjayk7Ci0gICAgdm9pZCBkZWxldGVPYmplY3RTdG9yZShVbmlxdWVJREJEYXRh
YmFzZVRyYW5zYWN0aW9uJiwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUsIEVycm9yQ2Fs
bGJhY2spOwotICAgIHZvaWQgcmVuYW1lT2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFu
c2FjdGlvbiYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBu
ZXdOYW1lLCBFcnJvckNhbGxiYWNrKTsKLSAgICB2b2lkIGNsZWFyT2JqZWN0U3RvcmUoVW5pcXVl
SURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwg
RXJyb3JDYWxsYmFjayk7Ci0gICAgdm9pZCBjcmVhdGVJbmRleChVbmlxdWVJREJEYXRhYmFzZVRy
YW5zYWN0aW9uJiwgY29uc3QgSURCSW5kZXhJbmZvJiwgRXJyb3JDYWxsYmFjayk7Ci0gICAgdm9p
ZCBkZWxldGVJbmRleChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgdWludDY0X3Qgb2Jq
ZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGluZGV4TmFtZSwgRXJyb3JDYWxsYmFj
ayk7Ci0gICAgdm9pZCByZW5hbWVJbmRleChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwg
dWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRleElkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgbmV3TmFtZSwgRXJyb3JDYWxsYmFjayk7CisgICAgdXNpbmcgU3BhY2VD
aGVja1Jlc3VsdCA9IHN0ZDo6b3B0aW9uYWw8Ym9vbD47CisgICAgdm9pZCBjcmVhdGVPYmplY3RT
dG9yZShVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgY29uc3QgSURCT2JqZWN0U3RvcmVJ
bmZvJiwgRXJyb3JDYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCA9IHN0ZDo6bnVsbG9wdCk7Cisg
ICAgdm9pZCBkZWxldGVPYmplY3RTdG9yZShVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwg
Y29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUsIEVycm9yQ2FsbGJhY2ssIFNwYWNlQ2hlY2tS
ZXN1bHQgPSBzdGQ6Om51bGxvcHQpOworICAgIHZvaWQgcmVuYW1lT2JqZWN0U3RvcmUoVW5pcXVl
SURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBuZXdOYW1lLCBFcnJvckNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0ID0g
c3RkOjpudWxsb3B0KTsKKyAgICB2b2lkIGNsZWFyT2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJh
c2VUcmFuc2FjdGlvbiYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgRXJyb3JDYWxs
YmFjaywgU3BhY2VDaGVja1Jlc3VsdCA9IHN0ZDo6bnVsbG9wdCk7CisgICAgdm9pZCBjcmVhdGVJ
bmRleChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgY29uc3QgSURCSW5kZXhJbmZvJiwg
RXJyb3JDYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCA9IHN0ZDo6bnVsbG9wdCk7CisgICAgdm9p
ZCBkZWxldGVJbmRleChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgdWludDY0X3Qgb2Jq
ZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGluZGV4TmFtZSwgRXJyb3JDYWxsYmFj
aywgU3BhY2VDaGVja1Jlc3VsdCA9IHN0ZDo6bnVsbG9wdCk7CisgICAgdm9pZCByZW5hbWVJbmRl
eChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVu
dGlmaWVyLCB1aW50NjRfdCBpbmRleElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSwg
RXJyb3JDYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgdm9p
ZCBwdXRPckFkZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleURhdGEmLCBjb25z
dCBJREJWYWx1ZSYsIEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlLCBLZXlEYXRh
Q2FsbGJhY2spOwotICAgIHZvaWQgZ2V0UmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29u
c3QgSURCR2V0UmVjb3JkRGF0YSYsIEdldFJlc3VsdENhbGxiYWNrKTsKLSAgICB2b2lkIGdldEFs
bFJlY29yZHMoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJHZXRBbGxSZWNvcmRzRGF0
YSYsIEdldEFsbFJlc3VsdHNDYWxsYmFjayk7Ci0gICAgdm9pZCBnZXRDb3VudChjb25zdCBJREJS
ZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYsIENvdW50Q2FsbGJhY2spOwotICAg
IHZvaWQgZGVsZXRlUmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5UmFu
Z2VEYXRhJiwgRXJyb3JDYWxsYmFjayk7Ci0gICAgdm9pZCBvcGVuQ3Vyc29yKGNvbnN0IElEQlJl
cXVlc3REYXRhJiwgY29uc3QgSURCQ3Vyc29ySW5mbyYsIEdldFJlc3VsdENhbGxiYWNrKTsKLSAg
ICB2b2lkIGl0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJJdGVy
YXRlQ3Vyc29yRGF0YSYsIEdldFJlc3VsdENhbGxiYWNrKTsKLSAgICB2b2lkIGNvbW1pdFRyYW5z
YWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCBFcnJvckNhbGxiYWNrKTsKLSAg
ICB2b2lkIGFib3J0VHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIEVy
cm9yQ2FsbGJhY2spOworICAgIHZvaWQgcHV0T3JBZGRBZnRlclNwYWNlQ2hlY2soY29uc3QgSURC
UmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlEYXRhJiwgY29uc3QgSURCVmFsdWUmLCBJbmRleGVk
REI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSwgS2V5RGF0YUNhbGxiYWNrLCBib29sIGlzS2V5
R2VuZXJhdGVkLCBjb25zdCBJbmRleElEVG9JbmRleEtleU1hcCYsIGNvbnN0IElEQk9iamVjdFN0
b3JlSW5mbyYsIFNwYWNlQ2hlY2tSZXN1bHQpOworICAgIHZvaWQgZ2V0UmVjb3JkKGNvbnN0IElE
QlJlcXVlc3REYXRhJiwgY29uc3QgSURCR2V0UmVjb3JkRGF0YSYsIEdldFJlc3VsdENhbGxiYWNr
LCBTcGFjZUNoZWNrUmVzdWx0ID0gc3RkOjpudWxsb3B0KTsKKyAgICB2b2lkIGdldEFsbFJlY29y
ZHMoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJHZXRBbGxSZWNvcmRzRGF0YSYsIEdl
dEFsbFJlc3VsdHNDYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCA9IHN0ZDo6bnVsbG9wdCk7Cisg
ICAgdm9pZCBnZXRDb3VudChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleVJhbmdl
RGF0YSYsIENvdW50Q2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgPSBzdGQ6Om51bGxvcHQpOwor
ICAgIHZvaWQgZGVsZXRlUmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5
UmFuZ2VEYXRhJiwgRXJyb3JDYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCA9IHN0ZDo6bnVsbG9w
dCk7CisgICAgdm9pZCBvcGVuQ3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURC
Q3Vyc29ySW5mbyYsIEdldFJlc3VsdENhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0ID0gc3RkOjpu
dWxsb3B0KTsKKyAgICB2b2lkIGl0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEmLCBj
b25zdCBJREJJdGVyYXRlQ3Vyc29yRGF0YSYsIEdldFJlc3VsdENhbGxiYWNrLCBTcGFjZUNoZWNr
UmVzdWx0ID0gc3RkOjpudWxsb3B0KTsKKyAgICB2b2lkIGNvbW1pdFRyYW5zYWN0aW9uKFVuaXF1
ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCBFcnJvckNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0
ID0gc3RkOjpudWxsb3B0KTsKKyAgICB2b2lkIGFib3J0VHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0
YWJhc2VUcmFuc2FjdGlvbiYsIEVycm9yQ2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgPSBzdGQ6
Om51bGxvcHQpOwogCiAgICAgdm9pZCBkaWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2UoVW5p
cXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0
cmFuc2FjdGlvbklkZW50aWZpZXIpOwogICAgIHZvaWQgY29ubmVjdGlvbkNsb3NlZEZyb21DbGll
bnQoVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJik7CiAgICAgdm9pZCBkaWRGaXJlVmVyc2lv
bkNoYW5nZUV2ZW50KFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYsIGNvbnN0IElEQlJlc291
cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIEluZGV4ZWREQjo6Q29ubmVjdGlvbkNs
b3NlZE9uQmVoYWxmT2ZTZXJ2ZXIpOwotICAgIHZvaWQgb3BlbkRCUmVxdWVzdENhbmNlbGxlZChj
b25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIG9wZW5EQlJlcXVlc3RDYW5jZWxsZWQoY29uc3QgSURCUmVzb3VyY2VJ
ZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllcik7CiAKICAgICB2b2lkIGVucXVldWVUcmFuc2Fj
dGlvbihSZWY8VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbj4mJik7CiAKLSAgICB2b2lkIGhh
bmRsZURlbGV0ZShJREJDb25uZWN0aW9uVG9DbGllbnQmLCBjb25zdCBJREJSZXF1ZXN0RGF0YSYp
OwotICAgIHZvaWQgaW1tZWRpYXRlQ2xvc2UoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGhh
bmRsZURlbGV0ZShJREJDb25uZWN0aW9uVG9DbGllbnQmLCBjb25zdCBJREJSZXF1ZXN0RGF0YSYp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW1tZWRpYXRlQ2xvc2UoKTsKIAogICAgIGJvb2wg
aGFzQWN0aXZlVHJhbnNhY3Rpb25zKCkgY29uc3Q7CiAgICAgdm9pZCBhYm9ydEFjdGl2ZVRyYW5z
YWN0aW9ucygpOwotICAgIGJvb2wgdHJ5Q2xvc2UoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGFib3J0SW5Qcm9ncmVzc1RyYW5zYWN0aW9ucygpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
dHJ5Q2xvc2UoKTsKIAotICAgIFN0cmluZyBmaWxlUGF0aCgpIGNvbnN0OwotICAgIHN0ZDo6b3B0
aW9uYWw8SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbj4gbmFtZUFuZFZlcnNpb24oKSBjb25zdDsK
KyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgZmlsZVBhdGgoKSBjb25zdDsKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGQ6Om9wdGlvbmFsPElEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24+IG5hbWVBbmRW
ZXJzaW9uKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNEYXRhSW5NZW1vcnko
KSBjb25zdDsKIAogcHJpdmF0ZToKICAgICB2b2lkIGhhbmRsZURhdGFiYXNlT3BlcmF0aW9ucygp
OwogICAgIHZvaWQgaGFuZGxlQ3VycmVudE9wZXJhdGlvbigpOwogICAgIHZvaWQgcGVyZm9ybUN1
cnJlbnRPcGVuT3BlcmF0aW9uKCk7CisgICAgdm9pZCBwZXJmb3JtQ3VycmVudE9wZW5PcGVyYXRp
b25BZnRlclNwYWNlQ2hlY2soYm9vbCBpc0dyYW50ZWQpOwogICAgIHZvaWQgcGVyZm9ybUN1cnJl
bnREZWxldGVPcGVyYXRpb24oKTsKICAgICBlbnVtIGNsYXNzIFJlcXVlc3RUeXBlIHsgRGVsZXRl
LCBBbnkgfTsKICAgICBSZWZQdHI8U2VydmVyT3BlbkRCUmVxdWVzdD4gdGFrZU5leHRSdW5uYWJs
ZVJlcXVlc3QoUmVxdWVzdFR5cGUgPSBSZXF1ZXN0VHlwZTo6QW55KTsKQEAgLTE0NiwxMSArMTUx
LDEzIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNsZWFyVHJhbnNhY3Rpb25zT25Db25uZWN0aW9u
KFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYpOwogCi0gICAgSURCU2VydmVyJiBtX3NlcnZl
cjsKKyAgICBJREJTZXJ2ZXIqIG1fc2VydmVyOworICAgIFdlYWtQdHI8VW5pcXVlSURCRGF0YWJh
c2VNYW5hZ2VyPiBtX21hbmFnZXI7CiAgICAgSURCRGF0YWJhc2VJZGVudGlmaWVyIG1faWRlbnRp
ZmllcjsKIAogICAgIExpc3RIYXNoU2V0PFJlZlB0cjxTZXJ2ZXJPcGVuREJSZXF1ZXN0Pj4gbV9w
ZW5kaW5nT3BlbkRCUmVxdWVzdHM7CiAgICAgUmVmUHRyPFNlcnZlck9wZW5EQlJlcXVlc3Q+IG1f
Y3VycmVudE9wZW5EQlJlcXVlc3Q7CisgICAgSGFzaFNldDxJREJSZXNvdXJjZUlkZW50aWZpZXI+
IG1fb3BlbkRCUmVxdWVzdHNGb3JTcGFjZUNoZWNrOwogCiAgICAgTGlzdEhhc2hTZXQ8UmVmUHRy
PFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbj4+IG1fb3BlbkRhdGFiYXNlQ29ubmVjdGlvbnM7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9V
bmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5jcHAKaW5kZXggNzQz
ZWRjYzNiOGM1OTQwNTFmNzkxMTE2NTI2YWY0ZDAyMTY5MTM2Ny4uZDZhYTFmYjliYTYyYmM5OWNk
NTA5MmNmNTBjZTY5NWQ5OTA3YjZhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNl
Q29ubmVjdGlvbi5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAj
aW5jbHVkZSAiU2VydmVyT3BlbkRCUmVxdWVzdC5oIgogI2luY2x1ZGUgIlVuaXF1ZUlEQkRhdGFi
YXNlLmgiCisjaW5jbHVkZSAiVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBJREJTZXJ2ZXIgewpAQCAtNDIsMTEgKzQzLDE0IEBAIFJl
ZjxVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24+IFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlv
bjo6Y3JlYXRlKFVuaXF1ZUlEQkRhCiAKIFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbjo6VW5p
cXVlSURCRGF0YWJhc2VDb25uZWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlJiBkYXRhYmFzZSwgU2Vy
dmVyT3BlbkRCUmVxdWVzdCYgcmVxdWVzdCkKICAgICA6IG1fZGF0YWJhc2UoZGF0YWJhc2UpCi0g
ICAgLCBtX3NlcnZlcihkYXRhYmFzZS5zZXJ2ZXIoKSkKKyAgICAsIG1fbWFuYWdlcihkYXRhYmFz
ZS5tYW5hZ2VyKCkpCiAgICAgLCBtX2Nvbm5lY3Rpb25Ub0NsaWVudChyZXF1ZXN0LmNvbm5lY3Rp
b24oKSkKICAgICAsIG1fb3BlblJlcXVlc3RJZGVudGlmaWVyKHJlcXVlc3QucmVxdWVzdERhdGEo
KS5yZXF1ZXN0SWRlbnRpZmllcigpKQogewotICAgIG1fc2VydmVyLnJlZ2lzdGVyRGF0YWJhc2VD
b25uZWN0aW9uKCp0aGlzKTsKKyAgICBpZiAoYXV0byogbWFuYWdlciA9IGRhdGFiYXNlLm1hbmFn
ZXIoKSkgeworICAgICAgICBtX21hbmFnZXIgPSBXZWFrUHRyIHsgKm1hbmFnZXIgfTsKKyAgICAg
ICAgbV9tYW5hZ2VyLT5yZWdpc3RlckNvbm5lY3Rpb24oKnRoaXMpOworICAgIH0KICAgICBtX2Nv
bm5lY3Rpb25Ub0NsaWVudC0+cmVnaXN0ZXJEYXRhYmFzZUNvbm5lY3Rpb24oKnRoaXMpOwogfQog
CkBAIC01NCwxMCArNTgsMTYgQEAgVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uOjp+VW5pcXVl
SURCRGF0YWJhc2VDb25uZWN0aW9uKCkKIHsKICAgICBBU1NFUlQobV90cmFuc2FjdGlvbk1hcC5p
c0VtcHR5KCkpOwogCi0gICAgbV9zZXJ2ZXIudW5yZWdpc3RlckRhdGFiYXNlQ29ubmVjdGlvbigq
dGhpcyk7CisgICAgaWYgKG1fbWFuYWdlcikKKyAgICAgICAgbV9tYW5hZ2VyLT51bnJlZ2lzdGVy
Q29ubmVjdGlvbigqdGhpcyk7CiAgICAgbV9jb25uZWN0aW9uVG9DbGllbnQtPnVucmVnaXN0ZXJE
YXRhYmFzZUNvbm5lY3Rpb24oKnRoaXMpOwogfQogCitVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIq
IFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbjo6bWFuYWdlcigpCit7CisgICAgcmV0dXJuIG1f
bWFuYWdlci5nZXQoKTsKK30KKwogYm9vbCBVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb246Omhh
c05vbkZpbmlzaGVkVHJhbnNhY3Rpb25zKCkgY29uc3QKIHsKICAgICByZXR1cm4gIW1fdHJhbnNh
Y3Rpb25NYXAuaXNFbXB0eSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlv
bi5oCmluZGV4IDJlMTlkZmQyZGM5MTQzNGJmYzVlN2MzYWU0YmU2NmQ4Y2Q4NTg4MTEuLjk4ZmVi
NTljNzZiZWFlYmU3MGVkZGU0YmU1NThmY2E4NzFjOThkYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rp
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVl
SURCRGF0YWJhc2VDb25uZWN0aW9uLmgKQEAgLTI1LDcgKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNl
CiAKLSNpbmNsdWRlICJJREJTZXJ2ZXIuaCIKICNpbmNsdWRlICJVbmlxdWVJREJEYXRhYmFzZS5o
IgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0lkZW50aWZpZWQuaD4K
QEAgLTM2LDYgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJREJFcnJvcjsK
IGNsYXNzIElEQlJlc3VsdERhdGE7CitjbGFzcyBVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXI7CiAK
IG5hbWVzcGFjZSBJREJTZXJ2ZXIgewogCkBAIC01MiwxMSArNTIsMTEgQEAgcHVibGljOgogCiAg
ICAgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiBvcGVuUmVxdWVzdElkZW50aWZpZXIoKSB7
IHJldHVybiBtX29wZW5SZXF1ZXN0SWRlbnRpZmllcjsgfQogICAgIFVuaXF1ZUlEQkRhdGFiYXNl
KiBkYXRhYmFzZSgpIHsgcmV0dXJuIG1fZGF0YWJhc2UuZ2V0KCk7IH0KLSAgICBJREJTZXJ2ZXIq
IHNlcnZlcigpIHsgcmV0dXJuICZtX3NlcnZlcjsgfQorICAgIFVuaXF1ZUlEQkRhdGFiYXNlTWFu
YWdlciogbWFuYWdlcigpOwogICAgIElEQkNvbm5lY3Rpb25Ub0NsaWVudCYgY29ubmVjdGlvblRv
Q2xpZW50KCkgeyByZXR1cm4gbV9jb25uZWN0aW9uVG9DbGllbnQ7IH0KIAotICAgIHZvaWQgY29u
bmVjdGlvblBlbmRpbmdDbG9zZUZyb21DbGllbnQoKTsKLSAgICB2b2lkIGNvbm5lY3Rpb25DbG9z
ZWRGcm9tQ2xpZW50KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb25uZWN0aW9uUGVuZGlu
Z0Nsb3NlRnJvbUNsaWVudCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29ubmVjdGlvbkNs
b3NlZEZyb21DbGllbnQoKTsKIAogICAgIGJvb2wgY2xvc2VQZW5kaW5nKCkgY29uc3QgeyByZXR1
cm4gbV9jbG9zZVBlbmRpbmc7IH0KIApAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBmaXJlVmVyc2lvbkNoYW5nZUV2ZW50KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVx
dWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IHJlcXVlc3RlZFZlcnNpb24pOwogICAgIFVuaXF1ZUlE
QkRhdGFiYXNlVHJhbnNhY3Rpb24mIGNyZWF0ZVZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbih1aW50
NjRfdCBuZXdWZXJzaW9uKTsKIAotICAgIHZvaWQgZXN0YWJsaXNoVHJhbnNhY3Rpb24oY29uc3Qg
SURCVHJhbnNhY3Rpb25JbmZvJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlc3RhYmxpc2hU
cmFuc2FjdGlvbihjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mKTsKICAgICB2b2lkIGRpZEFib3J0
VHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIGNvbnN0IElEQkVycm9y
Jik7CiAgICAgdm9pZCBkaWRDb21taXRUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5z
YWN0aW9uJiwgY29uc3QgSURCRXJyb3ImKTsKICAgICB2b2lkIGRpZENyZWF0ZU9iamVjdFN0b3Jl
KGNvbnN0IElEQlJlc3VsdERhdGEmKTsKQEAgLTc1LDggKzc1LDggQEAgcHVibGljOgogICAgIHZv
aWQgZGlkQ3JlYXRlSW5kZXgoY29uc3QgSURCUmVzdWx0RGF0YSYpOwogICAgIHZvaWQgZGlkRGVs
ZXRlSW5kZXgoY29uc3QgSURCUmVzdWx0RGF0YSYpOwogICAgIHZvaWQgZGlkUmVuYW1lSW5kZXgo
Y29uc3QgSURCUmVzdWx0RGF0YSYpOwotICAgIHZvaWQgZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVu
dChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBJbmRleGVk
REI6OkNvbm5lY3Rpb25DbG9zZWRPbkJlaGFsZk9mU2VydmVyKTsKLSAgICB2b2lkIGRpZEZpbmlz
aEhhbmRsaW5nVmVyc2lvbkNoYW5nZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5z
YWN0aW9uSWRlbnRpZmllcik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRGaXJlVmVyc2lv
bkNoYW5nZUV2ZW50KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZp
ZXIsIEluZGV4ZWREQjo6Q29ubmVjdGlvbkNsb3NlZE9uQmVoYWxmT2ZTZXJ2ZXIpOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlKGNvbnN0IElE
QlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKIAogICAgIHZvaWQg
YWJvcnRUcmFuc2FjdGlvbldpdGhvdXRDYWxsYmFjayhVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0
aW9uJik7CiAKQEAgLTg4LDcgKzg4LDcgQEAgcHJpdmF0ZToKICAgICBVbmlxdWVJREJEYXRhYmFz
ZUNvbm5lY3Rpb24oVW5pcXVlSURCRGF0YWJhc2UmLCBTZXJ2ZXJPcGVuREJSZXF1ZXN0Jik7CiAK
ICAgICBXZWFrUHRyPFVuaXF1ZUlEQkRhdGFiYXNlPiBtX2RhdGFiYXNlOwotICAgIElEQlNlcnZl
ciYgbV9zZXJ2ZXI7CisgICAgV2Vha1B0cjxVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXI+IG1fbWFu
YWdlcjsKICAgICBSZWY8SURCQ29ubmVjdGlvblRvQ2xpZW50PiBtX2Nvbm5lY3Rpb25Ub0NsaWVu
dDsKICAgICBJREJSZXNvdXJjZUlkZW50aWZpZXIgbV9vcGVuUmVxdWVzdElkZW50aWZpZXI7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9Vbmlx
dWVJREJEYXRhYmFzZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MDg4NmM0ODY4
NGYyMDUxMTFmNjdlMjBlNjkyYjRiOTMxY2RkMWM4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlTWFuYWdl
ci5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgIklEQkRhdGFiYXNlSWRlbnRpZmllci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0
cnVjdCBDbGllbnRPcmlnaW47CisKK25hbWVzcGFjZSBJREJTZXJ2ZXIgeworCitjbGFzcyBJREJC
YWNraW5nU3RvcmU7CitjbGFzcyBVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb247CitjbGFzcyBV
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOworCitjbGFzcyBVbmlxdWVJREJEYXRhYmFzZU1h
bmFnZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8VW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyPiB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgdmlydHVhbCB+VW5p
cXVlSURCRGF0YWJhc2VNYW5hZ2VyKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQ29u
bmVjdGlvbihVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHVucmVnaXN0ZXJDb25uZWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFz
ZVRyYW5zYWN0aW9uJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyVHJhbnNhY3Rp
b24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYpID0gMDsKKyAgICB2aXJ0dWFsIHN0ZDo6
dW5pcXVlX3B0cjxJREJCYWNraW5nU3RvcmU+IGNyZWF0ZUJhY2tpbmdTdG9yZShjb25zdCBJREJE
YXRhYmFzZUlkZW50aWZpZXImKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RTcGFjZShj
b25zdCBDbGllbnRPcmlnaW4mLCB1aW50NjRfdCBzaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBJREJTZXJ2ZXIKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rp
b24uY3BwCmluZGV4IDFjYzAyODE3YTEyNGM4ZDBlZDUyZjIxM2FjOGU1MDA2YmE2Yjk2ZGUuLjZl
M2NlMDQ0MDZmY2FkMzNiY2MxYzllOWY2MTJlMmFmNDEwNjk0MWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5z
YWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lu
Y2x1ZGUgIklEQkl0ZXJhdGVDdXJzb3JEYXRhLmgiCiAjaW5jbHVkZSAiSURCUmVzdWx0RGF0YS5o
IgotI2luY2x1ZGUgIklEQlNlcnZlci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRl
ICJVbmlxdWVJREJEYXRhYmFzZS5oIgogCkBAIC01MCwxMiArNDksMTQgQEAgVW5pcXVlSURCRGF0
YWJhc2VUcmFuc2FjdGlvbjo6VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbihVbmlxdWVJREJE
YXRhYmFzZUNvbm4KICAgICBpZiAobV90cmFuc2FjdGlvbkluZm8ubW9kZSgpID09IElEQlRyYW5z
YWN0aW9uTW9kZTo6VmVyc2lvbmNoYW5nZSkKICAgICAgICAgbV9vcmlnaW5hbERhdGFiYXNlSW5m
byA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPihkYXRhYmFzZS0+aW5mbygpKTsKIAotICAg
IGRhdGFiYXNlQ29ubmVjdGlvbigpLnNlcnZlcigpLT5yZWdpc3RlclRyYW5zYWN0aW9uKCp0aGlz
KTsKKyAgICBpZiAoYXV0byogbWFuYWdlciA9IGRhdGFiYXNlQ29ubmVjdGlvbigpLm1hbmFnZXIo
KSkKKyAgICAgICAgbWFuYWdlci0+cmVnaXN0ZXJUcmFuc2FjdGlvbigqdGhpcyk7CiB9CiAKIFVu
aXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246On5VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9u
KCkKIHsKLSAgICBkYXRhYmFzZUNvbm5lY3Rpb24oKS5zZXJ2ZXIoKS0+dW5yZWdpc3RlclRyYW5z
YWN0aW9uKCp0aGlzKTsKKyAgICBpZiAoYXV0byogbWFuYWdlciA9IGRhdGFiYXNlQ29ubmVjdGlv
bigpLm1hbmFnZXIoKSkKKyAgICAgICAgbWFuYWdlci0+dW5yZWdpc3RlclRyYW5zYWN0aW9uKCp0
aGlzKTsKIH0KIAogVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiBVbmlxdWVJREJEYXRhYmFz
ZVRyYW5zYWN0aW9uOjpkYXRhYmFzZUNvbm5lY3Rpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJE
YXRhYmFzZVRyYW5zYWN0aW9uLmgKaW5kZXggOTU5NjY1MmFkY2RiYTdhMDQ4YjYxOWY3NGVmMWE5
MmNlZWY5ZTBlNS4uZmJhODVjMTczOGI3MzQyZTEyODgwMGFlYjlkMWRhNDY3ZWU3YTEwMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlE
QkRhdGFiYXNlVHJhbnNhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5oCkBAIC01MSw3ICs1MSw3
IEBAIG5hbWVzcGFjZSBJREJTZXJ2ZXIgewogY2xhc3MgSURCU2VydmVyOwogY2xhc3MgVW5pcXVl
SURCRGF0YWJhc2VDb25uZWN0aW9uOwogCi1jbGFzcyBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0
aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbj4gewor
Y2xhc3MgVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0
cjxVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uPiwgcHVibGljIFJlZkNvdW50ZWQ8VW5pcXVl
SURCRGF0YWJhc2VUcmFuc2FjdGlvbj4gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8VW5pcXVl
SURCRGF0YWJhc2VUcmFuc2FjdGlvbj4gY3JlYXRlKFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlv
biYsIGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYpOwogCkBAIC01OSwyOSArNTksMjkgQEAgcHVi
bGljOgogCiAgICAgVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiBkYXRhYmFzZUNvbm5lY3Rp
b24oKTsKICAgICBjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mIGluZm8oKSBjb25zdCB7IHJldHVy
biBtX3RyYW5zYWN0aW9uSW5mbzsgfQotICAgIGJvb2wgaXNWZXJzaW9uQ2hhbmdlKCkgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc1ZlcnNpb25DaGFuZ2UoKSBjb25zdDsKICAgICBi
b29sIGlzUmVhZE9ubHkoKSBjb25zdDsKIAogICAgIElEQkRhdGFiYXNlSW5mbyogb3JpZ2luYWxE
YXRhYmFzZUluZm8oKSBjb25zdDsKIAotICAgIHZvaWQgYWJvcnQoKTsKLSAgICB2b2lkIGFib3J0
V2l0aG91dENhbGxiYWNrKCk7Ci0gICAgdm9pZCBjb21taXQodWludDY0X3QgcGVuZGluZ1JlcXVl
c3RDb3VudCk7Ci0KLSAgICB2b2lkIGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3RE
YXRhJiwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJik7Ci0gICAgdm9pZCBkZWxldGVPYmplY3RT
dG9yZShjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1l
KTsKLSAgICB2b2lkIHJlbmFtZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgdWlu
dDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUpOwotICAg
IHZvaWQgY2xlYXJPYmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0YSYsIHVpbnQ2NF90IG9i
amVjdFN0b3JlSWRlbnRpZmllcik7Ci0gICAgdm9pZCBjcmVhdGVJbmRleChjb25zdCBJREJSZXF1
ZXN0RGF0YSYsIGNvbnN0IElEQkluZGV4SW5mbyYpOwotICAgIHZvaWQgZGVsZXRlSW5kZXgoY29u
c3QgSURCUmVxdWVzdERhdGEmLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgaW5kZXhOYW1lKTsKLSAgICB2b2lkIHJlbmFtZUluZGV4KGNvbnN0IElEQlJlcXVl
c3REYXRhJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRleElk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSk7Ci0gICAgdm9pZCBwdXRPckFkZChjb25z
dCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleURhdGEmLCBjb25zdCBJREJWYWx1ZSYsIElu
ZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlKTsKLSAgICB2b2lkIGdldFJlY29yZChj
b25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkdldFJlY29yZERhdGEmKTsKLSAgICB2b2lk
IGdldEFsbFJlY29yZHMoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJHZXRBbGxSZWNv
cmRzRGF0YSYpOwotICAgIHZvaWQgZ2V0Q291bnQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25z
dCBJREJLZXlSYW5nZURhdGEmKTsKLSAgICB2b2lkIGRlbGV0ZVJlY29yZChjb25zdCBJREJSZXF1
ZXN0RGF0YSYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYpOwotICAgIHZvaWQgb3BlbkN1cnNvcihj
b25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkN1cnNvckluZm8mKTsKLSAgICB2b2lkIGl0
ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJJdGVyYXRlQ3Vyc29y
RGF0YSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWJvcnQoKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGFib3J0V2l0aG91dENhbGxiYWNrKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBjb21taXQodWludDY0X3QgcGVuZGluZ1JlcXVlc3RDb3VudCk7CisKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3Qg
SURCT2JqZWN0U3RvcmVJbmZvJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkZWxldGVPYmpl
Y3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVO
YW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbmFtZU9iamVjdFN0b3JlKGNvbnN0IElE
QlJlcXVlc3REYXRhJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIG5ld05hbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJPYmplY3RTdG9yZShj
b25zdCBJREJSZXF1ZXN0RGF0YSYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllcik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjcmVhdGVJbmRleChjb25zdCBJREJSZXF1ZXN0RGF0YSYs
IGNvbnN0IElEQkluZGV4SW5mbyYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGVsZXRlSW5k
ZXgoY29uc3QgSURCUmVxdWVzdERhdGEmLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbmFt
ZUluZGV4KGNvbnN0IElEQlJlcXVlc3REYXRhJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlm
aWVyLCB1aW50NjRfdCBpbmRleElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwdXRPckFkZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNv
bnN0IElEQktleURhdGEmLCBjb25zdCBJREJWYWx1ZSYsIEluZGV4ZWREQjo6T2JqZWN0U3RvcmVP
dmVyd3JpdGVNb2RlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldFJlY29yZChjb25zdCBJ
REJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkdldFJlY29yZERhdGEmKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGdldEFsbFJlY29yZHMoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJH
ZXRBbGxSZWNvcmRzRGF0YSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0Q291bnQoY29u
c3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGRlbGV0ZVJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElE
QktleVJhbmdlRGF0YSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgb3BlbkN1cnNvcihjb25z
dCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkN1cnNvckluZm8mKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGl0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJJ
dGVyYXRlQ3Vyc29yRGF0YSYpOwogCiAgICAgdm9pZCBkaWRBY3RpdmF0ZUluQmFja2luZ1N0b3Jl
KGNvbnN0IElEQkVycm9yJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NoYXJlZC9JREJFcnJvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2hhcmVkL0lEQkVycm9yLmgKaW5kZXggZmYxN2M5OGE0MTE1ZGU2MmNhY2M3MGFkMzI1
MmJkNmVkZjExZjM5OS4uYjMwYWQzOTE3NmYwM2ZmMGQ2YzkzOThkNmIzZWQxOWNkMmU5OTIxZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkVy
cm9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkVy
cm9yLmgKQEAgLTUyLDYgKzUyLDcgQEAgcHVibGljOgogICAgIFN0cmluZyBtZXNzYWdlKCkgY29u
c3Q7CiAKICAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuICFtX2NvZGU7IH0KKyAgICBv
cGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gIWlzTnVsbCgpOyB9CiAKICAgICBXRUJDT1JF
X0VYUE9SVCBJREJFcnJvciBpc29sYXRlZENvcHkoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3REYXRhLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuaApp
bmRleCAwMThjYjEzZTc1ZWI2NDVkZDExNGUyNGY2ZGJmZWEzNGNmNTViMTY0Li4wMDE3ODdhNjY1
OGE0MTc4YjZhNzk3MTI4YTA0ZGEzNmI4YWZkZmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuaApAQCAtNTYs
OCArNTYsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgSURCUmVxdWVzdERhdGEgaXNv
bGF0ZWRDb3B5KCkgY29uc3Q7CiAKICAgICBJREJDb25uZWN0aW9uSWRlbnRpZmllciBzZXJ2ZXJD
b25uZWN0aW9uSWRlbnRpZmllcigpIGNvbnN0OwotICAgIElEQlJlc291cmNlSWRlbnRpZmllciBy
ZXF1ZXN0SWRlbnRpZmllcigpIGNvbnN0OwotICAgIElEQlJlc291cmNlSWRlbnRpZmllciB0cmFu
c2FjdGlvbklkZW50aWZpZXIoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBJREJSZXNvdXJj
ZUlkZW50aWZpZXIgcmVxdWVzdElkZW50aWZpZXIoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBJREJSZXNvdXJjZUlkZW50aWZpZXIgdHJhbnNhY3Rpb25JZGVudGlmaWVyKCkgY29uc3Q7CiAg
ICAgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyKCkgY29uc3Q7CiAgICAgdWludDY0X3Qg
aW5kZXhJZGVudGlmaWVyKCkgY29uc3Q7CiAgICAgSW5kZXhlZERCOjpJbmRleFJlY29yZFR5cGUg
aW5kZXhSZWNvcmRUeXBlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzb3VyY2VJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzb3VyY2VJZGVudGlmaWVyLmgKaW5k
ZXggYmUxNjE5N2Y2MzRhNTk2YzM5ZTUxMzAyODU5MDY4MzU3NDU4NjgyYS4uYmQzOTU0YTI4OTcz
Y2ViOGE1YmY2NDhmNGFhNTEyM2YyZWZiZWY0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc291cmNlSWRlbnRpZmllci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXNvdXJjZUlkZW50aWZp
ZXIuaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgSURCUmVzb3VyY2VJZGVudGlmaWVy
KGNvbnN0IElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5JiwgY29uc3QgSURCUmVxdWVzdCYp
OwogICAgIGV4cGxpY2l0IElEQlJlc291cmNlSWRlbnRpZmllcihjb25zdCBJREJTZXJ2ZXI6OklE
QkNvbm5lY3Rpb25Ub0NsaWVudCYpOwogCi0gICAgc3RhdGljIElEQlJlc291cmNlSWRlbnRpZmll
ciBlbXB0eVZhbHVlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIElEQlJlc291cmNlSWRl
bnRpZmllciBlbXB0eVZhbHVlKCk7CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QKICAgICB7CiAg
ICAgICAgIHJldHVybiAhbV9yZXNvdXJjZU51bWJlciAmJiAhbV9pZGJDb25uZWN0aW9uSWRlbnRp
ZmllcjsKQEAgLTYwLDcgKzYwLDggQEAgcHVibGljOgogICAgICAgICB1aW50NjRfdCBoYXNoQ29k
ZXNbMl0gPSB7IG1faWRiQ29ubmVjdGlvbklkZW50aWZpZXIudG9VSW50NjQoKSwgbV9yZXNvdXJj
ZU51bWJlciB9OwogICAgICAgICByZXR1cm4gU3RyaW5nSGFzaGVyOjpoYXNoTWVtb3J5PHNpemVv
ZihoYXNoQ29kZXMpPihoYXNoQ29kZXMpOwogICAgIH0KLSAgICAKKworICAgIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIG90aGVyKSBjb25zdCB7IHJldHVybiAh
KCp0aGlzID09IG90aGVyKTsgfQogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJREJSZXNvdXJj
ZUlkZW50aWZpZXImIG90aGVyKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1faWRiQ29u
bmVjdGlvbklkZW50aWZpZXIgPT0gb3RoZXIubV9pZGJDb25uZWN0aW9uSWRlbnRpZmllcgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IGM1ZjQ0ZWYwNGE3MDU4YjE5YjI0Yzg1ZDExZDYzZDk0NTRlM2RiMGMuLmMyNDlmMTU0YjNhZTQ5
NTUxNDljMzlkODEzYWZkYTVhN2EzN2E1ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE1NDEsMTAgKzE1NDEsMTAgQEAKIAkJ
NTExMjNFMkYyNzY5NDBDQTAwRjlENDFCIC8qIE5vdGlmaWNhdGlvbkRhdGEuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMTIzRTJDMjc2OTNDMzIwMEY5
RDQxQiAvKiBOb3RpZmljYXRpb25EYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTExN0YzMEUyNUU2MTAyMDAwMkE5RjFFIC8qIFJlbW90ZUNv
bW1hbmRMaXN0ZW5lckNvY29hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTE3RjMwQzI1RTYxMDFGMDAyQTlGMUUgLyogUmVtb3RlQ29tbWFuZExpc3Rl
bmVyQ29jb2EuaCAqLzsgfTsKIAkJNTExRUMxMjgxQzUwQUFDQTAwMzJGOTgzIC8qIElEQlNlcmlh
bGl6YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxMUVDMTI2MUM1MEFBNTcwMDMyRjk4MyAvKiBJREJTZXJpYWxpemF0aW9uLmggKi87IH07Ci0J
CTUxMUVDMTJDMUM1MEFCQkYwMDMyRjk4MyAvKiBTUUxpdGVJREJUcmFuc2FjdGlvbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExRUMxMkExQzUwQUJC
QTAwMzJGOTgzIC8qIFNRTGl0ZUlEQlRyYW5zYWN0aW9uLmggKi87IH07CisJCTUxMUVDMTJDMUM1
MEFCQkYwMDMyRjk4MyAvKiBTUUxpdGVJREJUcmFuc2FjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExRUMxMkExQzUwQUJCQTAwMzJGOTgzIC8q
IFNRTGl0ZUlEQlRyYW5zYWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNTExRUMxMzAxQzUwQUJGNTAwMzJGOTgzIC8qIFNRTGl0ZUlEQkN1
cnNvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEx
RUMxMkUxQzUwQUJFQzAwMzJGOTgzIC8qIFNRTGl0ZUlEQkN1cnNvci5oICovOyB9OwogCQk1MTIw
QkJBRjFGMUNFQ0U3MDBFRkVCRjEgLyogQ29va2llU3RvcmFnZU9ic2VydmVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTIwQkJBRDFGMUNFNzcwMDBF
RkVCRjEgLyogQ29va2llU3RvcmFnZU9ic2VydmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNTEyQkRCNEIxQzQ1NkZGQTAwNjQ5NERGIC8qIFNR
TGl0ZUlEQkJhY2tpbmdTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTEyQkRCNDkxQzQ1NkZBQjAwNjQ5NERGIC8qIFNRTGl0ZUlEQkJhY2tpbmdT
dG9yZS5oICovOyB9OworCQk1MTJCREI0QjFDNDU2RkZBMDA2NDk0REYgLyogU1FMaXRlSURCQmFj
a2luZ1N0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTJCREI0OTFDNDU2RkFCMDA2NDk0REYgLyogU1FMaXRlSURCQmFja2luZ1N0b3JlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTEyREQ4RjUw
RDkxRTZBRjAwMEY4OUVFIC8qIExlZ2FjeVdlYkFyY2hpdmUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMkREOEVCMEQ5MUU2QUYwMDBGODlFRSAvKiBM
ZWdhY3lXZWJBcmNoaXZlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNTEyREQ4RjYwRDkxRTZBRjAwMEY4OUVFIC8qIEFyY2hpdmUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMkREOEVDMEQ5MUU2QUYw
MDBGODlFRSAvKiBBcmNoaXZlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNTEyREQ4RjgwRDkxRTZBRjAwMEY4OUVFIC8qIEFyY2hpdmVSZXNvdXJj
ZUNvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxMkREOEVFMEQ5MUU2QUYwMDBGODlFRSAvKiBBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9u
LmggKi87IH07CkBAIC0xNTkwLDcgKzE1OTAsNyBAQAogCQk1MTZEN0Q3MjFCQjVGMEJEMDBBRjdD
NzcgLyogSURCQ29ubmVjdGlvblRvQ2xpZW50RGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNkQ3RDZFMUJCNUYwNjUwMEFGN0M3NyAvKiBJ
REJDb25uZWN0aW9uVG9DbGllbnREZWxlZ2F0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxNkY3RjZEMUMzMUUzOUEwMEYxMTFEQyAvKiBTZXJ2
ZXJPcGVuREJSZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MTZGN0Y2QzFDMzFDNzlEMDBGMTExREMgLyogU2VydmVyT3BlbkRCUmVxdWVzdC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxNzEz
OEYwMUJFRDFEMUEwMDBENUYwMSAvKiBJbmRleEtleS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3MTM4RUUxQkVEMUQxNzAwMEQ1RjAxIC8qIEluZGV4
S2V5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJ
NTE3MTM4RjgxQkYxMjhCQjAwMEQ1RjAxIC8qIEluZGV4VmFsdWVTdG9yZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3MTM4RjYxQkYxMjI2MjAwMEQ1
RjAxIC8qIEluZGV4VmFsdWVTdG9yZS5oICovOyB9OworCQk1MTcxMzhGODFCRjEyOEJCMDAwRDVG
MDEgLyogSW5kZXhWYWx1ZVN0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTcxMzhGNjFCRjEyMjYyMDAwRDVGMDEgLyogSW5kZXhWYWx1ZVN0b3Jl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE3
MTM4RkMxQkYzQURGNDAwMEQ1RjAxIC8qIElEQkN1cnNvckluZm8uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNzEzOEZBMUJGM0FEQUMwMDBENUYwMSAv
KiBJREJDdXJzb3JJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNTE3MTM5MDYxQkY2NERFQzAwMEQ1RjAxIC8qIE1lbW9yeU9iamVjdFN0b3Jl
Q3Vyc29yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTcxMzkwNDFCRjY0REUzMDAwRDVGMDEgLyogTWVtb3J5T2JqZWN0U3RvcmVDdXJzb3IuaCAqLzsg
fTsKIAkJNTE3MTM5MDgxQkY2NERFRjAwMEQ1RjAxIC8qIE1lbW9yeUN1cnNvci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3MTM5MDIxQkY2NERFMzAw
MEQ1RjAxIC8qIE1lbW9yeUN1cnNvci5oICovOyB9OwpAQCAtMTY2Niw3ICsxNjY2LDcgQEAKIAkJ
NTFCOTE0MTAxRkQyNzgyRDAwRUUyODU5IC8qIFJlZ2lzdHJhdGlvbkRhdGFiYXNlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUI5MTQwQzFGRDI3ODI1
MDBFRTI4NTkgLyogUmVnaXN0cmF0aW9uRGF0YWJhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUI5MTQxMTFGRDI3ODJEMDBFRTI4NTkgLyog
UmVnaXN0cmF0aW9uU3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxQjkxNDBCMUZEMjc4MjUwMEVFMjg1OSAvKiBSZWdpc3RyYXRpb25TdG9yZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxQkE0
QUM0MUJCQjVDRDgwMERGM0Q2RCAvKiBJREJEYXRhYmFzZUluZm8uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkE0QUMyMUJCQjVDQkYwMERGM0Q2RCAv
KiBJREJEYXRhYmFzZUluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwotCQk1MUJBNEFDQjFCQkM1QkQ5MDBERjNENkQgLyogTWVtb3J5SURCQmFja2lu
Z1N0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MUJBNEFDOTFCQkM1QjlFMDBERjNENkQgLyogTWVtb3J5SURCQmFja2luZ1N0b3JlLmggKi87IH07
CisJCTUxQkE0QUNCMUJCQzVCRDkwMERGM0Q2RCAvKiBNZW1vcnlJREJCYWNraW5nU3RvcmUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkE0QUM5MUJC
QzVCOUUwMERGM0Q2RCAvKiBNZW1vcnlJREJCYWNraW5nU3RvcmUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUJBNEFDQzFCQkM1QkREMDBERjNE
NkQgLyogSURCQmFja2luZ1N0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MUJBNEFDNzFCQkM1QUQ2MDBERjNENkQgLyogSURCQmFja2luZ1N0b3Jl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFC
QTk0NzEyM0FDMzA1MzAwNDQ0ODQ2IC8qIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJBOTQ2RjIzQUMzMDUw
MDA0NDQ4NDYgLyogUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUJDQ0UzMDFGOEYxNzlFMDA2QkEwRUQg
LyogU2VydmljZVdvcmtlclRocmVhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTE3Qzg3MTAxRjhFRTcyRTAwRUI4MDc2IC8qIFNlcnZpY2VXb3JrZXJU
aHJlYWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpA
QCAtMTY4Miw3ICsxNjgyLDcgQEAKIAkJNTFFMEJBQkIwREE1NTQ3MTAwQTlFNDE3IC8qIFN0b3Jh
Z2VFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTFFMEJBQjkwREE1NTQ3MTAwQTlFNDE3IC8qIFN0b3JhZ2VFdmVudC5oICovOyB9OwogCQk1MUUw
QkFFQjBEQTU1RDRBMDBBOUU0MTcgLyogSlNTdG9yYWdlRXZlbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTBCQUU5MERBNTVENEEwMEE5RTQxNyAv
KiBKU1N0b3JhZ2VFdmVudC5oICovOyB9OwogCQk1MUUwQkIzODBEQTVBQ0I2MDBBOUU0MTcgLyog
U3RvcmFnZU1hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTFFMEJCMzYwREE1QUNCNjAwQTlFNDE3IC8qIFN0b3JhZ2VNYXAuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk1MUUxQkFDMzFCRDgwNjRFMDA1
NUQ4MUYgLyogTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTFCQUMxMUJEODA2NDcwMDU1RDgxRiAv
KiBNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbi5oICovOyB9OworCQk1MUUxQkFDMzFCRDgw
NjRFMDA1NUQ4MUYgLyogTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTFCQUMxMUJEODA2NDcwMDU1
RDgxRiAvKiBNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbi5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxRTI2OTM3MUREM0JEOUIwMDZCNkE1
OCAvKiBJREJJdGVyYXRlQ3Vyc29yRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTFFMjY5MzUxREQzQkQ5MTAwNkI2QTU4IC8qIElEQkl0ZXJhdGVD
dXJzb3JEYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNTFFMzk5MDAxRDZFNDc1MDAwOUM4ODMxIC8qIEdhbWVDb250cm9sbGVyR2FtZXBhZC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFMzk4RkMx
RDZFNDc0QjAwOUM4ODMxIC8qIEdhbWVDb250cm9sbGVyR2FtZXBhZC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxRTM5OTAyMUQ2RTQ3NTAwMDlD
ODgzMSAvKiBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFMzk4RkUxRDZFNDc0QjAwOUM4ODMxIC8q
IEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE2OTIsNyArMTY5Miw3IEBACiAJCTUxRUNDM0Y4
MjAwNTg3QkYwMDQ4M0VBRSAvKiBNZXNzYWdlUG9ydENoYW5uZWxSZWdpc3RyeS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFQ0MzRjEyMDA1ODdCNTAw
NDgzRUFFIC8qIE1lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFFQ0MzRkQyMDA1OTMwRDAwNDgzRUFF
IC8qIE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUVDQzNGQjIwMDU5MzAxMDA0ODNFQUUgLyogTWVzc2Fn
ZVBvcnRDaGFubmVsUHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk1MUVFN0IzODFBQTUwQjA1MDBGOTJCMjEgLyogUmVzb3VyY2VMb2Fk
SW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFF
RTdCMzcxQUE1MEIwNTAwRjkyQjIxIC8qIFJlc291cmNlTG9hZEluZm8uaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk1MUVFQUE3NDFCRUZGQUIxMDAy
MTgwMDggLyogSW5kZXhWYWx1ZUVudHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MUVFQUE3MjFCRUZGQTc5MDAyMTgwMDggLyogSW5kZXhWYWx1ZUVu
dHJ5LmggKi87IH07CisJCTUxRUVBQTc0MUJFRkZBQjEwMDIxODAwOCAvKiBJbmRleFZhbHVlRW50
cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRUVB
QTcyMUJFRkZBNzkwMDIxODAwOCAvKiBJbmRleFZhbHVlRW50cnkuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUYxNzRGRTFGMzU4OTkyMDBDNzQ5
NTAgLyogV29ya2VyVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTFGMTc0RkMxRjM1ODk4ODAwQzc0OTUwIC8qIFdvcmtlclR5cGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUYxNzUwMzFGMzU4
QjNCMDBDNzQ5NTAgLyogSlNTZXJ2aWNlV29ya2VyVXBkYXRlVmlhQ2FjaGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjE3NTAxMUYzNThCMzYwMEM3
NDk1MCAvKiBKU1NlcnZpY2VXb3JrZXJVcGRhdGVWaWFDYWNoZS5oICovOyB9OwogCQk1MUYxNzUw
NjFGMzU4QkY3MDBDNzQ5NTAgLyogSlNXb3JrZXJUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUYxNzUwNTFGMzU4QkRFMDBDNzQ5NTAgLyogSlNX
b3JrZXJUeXBlLmggKi87IH07CkBAIC0yOTkyLDYgKzI5OTIsNyBAQAogCQk5M0IyRDgxNjBGOTky
MEQyMDA2QUU2QjIgLyogU3VkZGVuVGVybWluYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjJEODE1MEY5OTIwRDIwMDZBRTZCMiAvKiBTdWRk
ZW5UZXJtaW5hdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTkzQjM4RUMzMjU4MjFEQjQwMDE5OEU2MyAvKiBXZWJTcGVlY2hSZWNvZ25pemVy
VGFzay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNC
MzhFQkEyNTgyMTkzQjAwMTk4RTYzIC8qIFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrLmggKi87IH07
CiAJCTkzQjM4RUM0MjU4MjFEQjcwMDE5OEU2MyAvKiBXZWJTcGVlY2hSZWNvZ25pemVyVGFza01v
Y2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjM4
RUJCMjU4MjE5M0QwMDE5OEU2MyAvKiBXZWJTcGVlY2hSZWNvZ25pemVyVGFza01vY2suaCAqLzsg
fTsKKwkJOTNCNjMxRTIyN0FCQTFFNjAwNDQzQTQ0IC8qIFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCNjMx
RTAyN0FCQTFFMjAwNDQzQTQ0IC8qIFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzQjZBMEU2MEIwQkNB
NUMwMEY1MDI3QSAvKiBDb250ZXh0TWVudS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTNCNkEwRTUwQjBCQ0E1QzAwRjUwMjdBIC8qIENvbnRleHRNZW51
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNC
NzBENjQwOUVCMEM3QzAwOUQ4NDY4IC8qIEpTRE9NQmluZGluZy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCNzBENDgwOUVCMEM3QzAwOUQ4NDY4IC8q
IEpTRE9NQmluZGluZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTkzQjcwRDZBMDlFQjBDN0MwMDlEODQ2OCAvKiBKU0V2ZW50TGlzdGVuZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjcwRDRFMDlF
QjBDN0MwMDlEODQ2OCAvKiBKU0V2ZW50TGlzdGVuZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTI4MjEsNiArMTI4MjIsNyBAQAogCQk5M0Iz
OEVCQTI1ODIxOTNCMDAxOThFNjMgLyogV2ViU3BlZWNoUmVjb2duaXplclRhc2suaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU3BlZWNoUmVjb2duaXplclRhc2suaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCMzhFQkIyNTgyMTkzRDAwMTk4RTYzIC8qIFdl
YlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJTcGVlY2hSZWNvZ25pemVyVGFza01vY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTNCMzhFQkMyNTgyMTkzRTAwMTk4RTYzIC8qIFdlYlNwZWVjaFJlY29nbml6ZXJU
YXNrLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViU3BlZWNo
UmVjb2duaXplclRhc2subW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzQjYzMUUw
MjdBQkExRTIwMDQ0M0E0NCAvKiBVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQjZBMEU1MEIwQkNBNUMwMEY1MDI3QSAvKiBDb250
ZXh0TWVudS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29udGV4dE1lbnUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCNzBENDgwOUVCMEM3QzAwOUQ4NDY4
IC8qIEpTRE9NQmluZGluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNE
T01CaW5kaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQjcwRDREMDlFQjBD
N0MwMDlEODQ2OCAvKiBKU0V2ZW50TGlzdGVuZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTRXZlbnRMaXN0ZW5lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0yMjEzNiw2ICsyMjEzOCw3IEBACiAJCQkJNTE4ODY0REYxQkJBRjMwRjAwRTU0
MEM5IC8qIFVuaXF1ZUlEQkRhdGFiYXNlLmggKi8sCiAJCQkJNTE5OEY3QTIxQkJEQUEyOTAwRTJD
QzVGIC8qIFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5jcHAgKi8sCiAJCQkJNTE5OEY3QTMx
QkJEQUEyOTAwRTJDQzVGIC8qIFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5oICovLAorCQkJ
CTkzQjYzMUUwMjdBQkExRTIwMDQ0M0E0NCAvKiBVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuaCAq
LywKIAkJCQk1MTk4RjdBNjFCQkREMzgxMDBFMkNDNUYgLyogVW5pcXVlSURCRGF0YWJhc2VUcmFu
c2FjdGlvbi5jcHAgKi8sCiAJCQkJNTE5OEY3QTcxQkJERDM4MTAwRTJDQzVGIC8qIFVuaXF1ZUlE
QkRhdGFiYXNlVHJhbnNhY3Rpb24uaCAqLywKIAkJCSk7CkBAIC0zNzc1MSw2ICszNzc1NCw3IEBA
CiAJCQkJQTg2M0UyMDExMzQzNDEyMDAwMjc0OTI2IC8qIFVuaWNvZGVCaWRpLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1MTg4NjRFMTFCQkFGNTc0MDBFNTQwQzkgLyogVW5pcXVlSURCRGF0YWJhc2Uu
aCBpbiBIZWFkZXJzICovLAogCQkJCTUxOThGN0E1MUJCREI3OTMwMEUyQ0M1RiAvKiBVbmlxdWVJ
REJEYXRhYmFzZUNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTkzQjYzMUUyMjdBQkEx
RTYwMDQ0M0E0NCAvKiBVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTUxOThGN0E5MUJCREQzODUwMEUyQ0M1RiAvKiBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0
aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNEFGQ0ZBNTBEQUYyOUEzMDBGNUY1NUMgLyogVW5p
dEJlemllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzE4Q0MwQTQyNTgwRUZCMTAwM0Q3NUZCIC8q
IFVuaXZlcnNhbEFjY2Vzc1pvb20uaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcAppbmRleCBhMzRmNzliZGUzZTA4MTY5NmQ3M2E1NWZiZjU5MDU4YmY2ZDhmMzc5Li41
NzNmZDhjZjJiNmNmZmMxNTQxYzg0YjIyYmQwYjI0YTFjZmJkNWY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcApAQCAtNTIsMTMgKzUyLDEzIEBACiAjaW5jbHVkZSAiTmV0d29ya1NvY2tl
dENoYW5uZWxNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtTb2NrZXRTdHJlYW0uaCIKICNp
bmNsdWRlICJOZXR3b3JrU29ja2V0U3RyZWFtTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJOZXR3b3Jr
U3RvcmFnZU1hbmFnZXIuaCIKICNpbmNsdWRlICJQaW5nTG9hZC5oIgogI2luY2x1ZGUgIlByZWNv
bm5lY3RUYXNrLmgiCiAjaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyUHJveHku
aCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrTWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJFcnJvcnMuaCIKLSNpbmNs
dWRlICJXZWJJREJTZXJ2ZXIuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNp
bmNsdWRlICJXZWJQcm9jZXNzUG9vbE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmgiCkBAIC0zOTAsOCArMzkwLDEyIEBAIGJvb2wgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lCiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnVwZGF0ZVF1
b3RhQmFzZWRPblNwYWNlVXNhZ2VGb3JUZXN0aW5nKGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2lu
KQogewotICAgIGF1dG8gc3RvcmFnZVF1b3RhTWFuYWdlciA9IG1fbmV0d29ya1Byb2Nlc3MtPnN0
b3JhZ2VRdW90YU1hbmFnZXIoc2Vzc2lvbklEKCksIG9yaWdpbik7Ci0gICAgc3RvcmFnZVF1b3Rh
TWFuYWdlci0+cmVzZXRRdW90YVVwZGF0ZWRCYXNlZE9uVXNhZ2VGb3JUZXN0aW5nKCk7CisgICAg
YXV0byogc2Vzc2lvbiA9IG1fbmV0d29ya1Byb2Nlc3MtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25J
RCgpKTsKKyAgICBpZiAoIXNlc3Npb24pCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChhdXRv
KiBzdG9yYWdlTWFuYWdlciA9IHNlc3Npb24tPnN0b3JhZ2VNYW5hZ2VyKCkpCisgICAgICAgIHN0
b3JhZ2VNYW5hZ2VyLT5yZXNldFF1b3RhVXBkYXRlZEJhc2VkT25Vc2FnZUZvclRlc3Rpbmcob3Jp
Z2luKTsKIH0KIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkQ2xvc2Uo
SVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQpAQCAtOTgzLDggKzk4NywxMCBAQCB2b2lkIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlc0Zv
ckluZGV4ZWREQihjb25zdAogICAgICAgICBmb3IgKGF1dG8mIGZpbGUgOiBmaWxlUmVmZXJlbmNl
cykKICAgICAgICAgICAgIGZpbGUtPnJldm9rZUZpbGVBY2Nlc3MoKTsKIAotICAgICAgICBpZiAo
YXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKCkpCi0gICAgICAgICAgICBzZXNzaW9uLT5l
bnN1cmVXZWJJREJTZXJ2ZXIoKS5yZWdpc3RlclRlbXBvcmFyeUJsb2JGaWxlUGF0aHMobV9jb25u
ZWN0aW9uLCBmaWxlUGF0aHMpOworICAgICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtT
ZXNzaW9uKCkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBzdG9yYWdlTWFuYWdlciA9IHNlc3Np
b24tPnN0b3JhZ2VNYW5hZ2VyKCkpCisgICAgICAgICAgICAgICAgc3RvcmFnZU1hbmFnZXItPnJl
Z2lzdGVyVGVtcG9yYXJ5QmxvYkZpbGVQYXRocyhtX2Nvbm5lY3Rpb24sIGZpbGVQYXRocyk7Cisg
ICAgICAgIH0KICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShmaWxlUGF0aHMpKTsK
ICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5jcHAKaW5kZXggN2M3OWUyYTIwOTc2YTEzOWM3ZjY2N2YxMTNjNDg5NDZkZWRkNTY0MS4u
MTExODFlMjc4YjgyN2U3YzYwMTZkMDEwYmUyYWIyNjYzMWY0ZmU0MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTI2NCw4ICsyNjQs
NiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKQogICAg
IC8vIE1ha2Ugc3VyZSB3ZSBmbHVzaCBhbGwgY29va2llcyB0byBkaXNrIGJlZm9yZSBleGl0aW5n
LgogICAgIGZvckVhY2hOZXR3b3JrU2Vzc2lvbihbJl0gKGF1dG8mIHNlc3Npb24pIHsKICAgICAg
ICAgcGxhdGZvcm1GbHVzaENvb2tpZXMoc2Vzc2lvbi5zZXNzaW9uSUQoKSwgW2NhbGxiYWNrQWdn
cmVnYXRvcl0geyB9KTsKLSAgICAgICAgLy8gTWFrZSBzdXJlIHJlZmVyZW5jZSB0byBOZXR3b3Jr
UHJvY2VzcyBpbiBzcGFjZVJlcXVlc3RlciBpcyByZW1vdmVkLgotICAgICAgICBzZXNzaW9uLmNs
b3NlSURCU2VydmVyKFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiAgICAgfSk7CiB9CiAKQEAg
LTM4Miw3ICszODAsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjcmVhdGVOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyhQcm9jZXNzSWRlbnRpZmllciBpZGVudAogICAgIGNvbm5lY3Rpb24u
c2V0T25MaW5lU3RhdGUoTmV0d29ya1N0YXRlTm90aWZpZXI6OnNpbmdsZXRvbigpLm9uTGluZSgp
KTsKIAogICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkg
ewotICAgICAgICBzZXNzaW9uLT5lbnN1cmVXZWJJREJTZXJ2ZXIoKS5hZGRDb25uZWN0aW9uKGNv
bm5lY3Rpb24uY29ubmVjdGlvbigpLCBpZGVudGlmaWVyKTsKICAgICAgICAgaWYgKGF1dG8qIG1h
bmFnZXIgPSBzZXNzaW9uLT5zdG9yYWdlTWFuYWdlcigpKQogICAgICAgICAgICAgbWFuYWdlci0+
c3RhcnRSZWNlaXZpbmdNZXNzYWdlRnJvbUNvbm5lY3Rpb24oY29ubmVjdGlvbi5jb25uZWN0aW9u
KCkpOwogICAgIH0KQEAgLTQwNiw4ICs0MDMsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjphZGRX
ZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycwog
ICAgIGFkZFNlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2VyKHNlc3Npb25JRCwgcGFyYW1ldGVycy5w
ZXJPcmlnaW5TdG9yYWdlUXVvdGEsIHBhcmFtZXRlcnMucGVyVGhpcmRQYXJ0eU9yaWdpblN0b3Jh
Z2VRdW90YSwgcGFyYW1ldGVycy5jYWNoZVN0b3JhZ2VEaXJlY3RvcnksIHBhcmFtZXRlcnMuY2Fj
aGVTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKIAogICAgIGlmIChhdXRvKiBzZXNz
aW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICBzZXNzaW9uLT5hZGRT
dG9yYWdlTWFuYWdlclNlc3Npb24ocGFyYW1ldGVycy5nZW5lcmFsU3RvcmFnZURpcmVjdG9yeSwg
cGFyYW1ldGVycy5nZW5lcmFsU3RvcmFnZURpcmVjdG9yeUhhbmRsZSwgcGFyYW1ldGVycy5sb2Nh
bFN0b3JhZ2VEaXJlY3RvcnksIHBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5z
aW9uSGFuZGxlKTsKLSAgICAgICAgc2Vzc2lvbi0+YWRkSW5kZXhlZERhdGFiYXNlU2Vzc2lvbihw
YXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSwgcGFyYW1ldGVycy5pbmRleGVkRGF0
YWJhc2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOworICAgICAgICBzZXNzaW9uLT5hZGRTdG9y
YWdlTWFuYWdlclNlc3Npb24ocGFyYW1ldGVycy5nZW5lcmFsU3RvcmFnZURpcmVjdG9yeSwgcGFy
YW1ldGVycy5nZW5lcmFsU3RvcmFnZURpcmVjdG9yeUhhbmRsZSwgcGFyYW1ldGVycy5sb2NhbFN0
b3JhZ2VEaXJlY3RvcnksIHBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9u
SGFuZGxlLCBwYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSwgcGFyYW1ldGVycy5p
bmRleGVkRGF0YWJhc2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUsIHBhcmFtZXRlcnMuY2FjaGVT
dG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLnBlck9yaWdpblN0b3JhZ2VRdW90YSwgcGFyYW1l
dGVycy5wZXJUaGlyZFBhcnR5T3JpZ2luU3RvcmFnZVF1b3RhKTsKICNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCiAgICAgICAgIHNlc3Npb24tPmFkZFNlcnZpY2VXb3JrZXJTZXNzaW9uKHBhcmFt
ZXRlcnMuc2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCwgV1RGTW92
ZShwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkpLCBwYXJhbWV0
ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwog
I2VuZGlmCkBAIC0xNDUyLDEzICsxNDQ4LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZmV0Y2hX
ZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXQKICAg
ICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX3dlYnNpdGVEYXRhLmhvc3ROYW1lc1dpdGhIU1RT
Q2FjaGUgPSBob3N0TmFtZXNXaXRoSFNUU0NhY2hlKHNlc3Npb25JRCk7CiAjZW5kaWYKIAotICAg
IGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERC
RGF0YWJhc2VzKSAmJiBzZXNzaW9uICYmIHNlc3Npb24tPmhhc0lEQkRhdGFiYXNlUGF0aCgpKSB7
Ci0gICAgICAgIHNlc3Npb24tPmVuc3VyZVdlYklEQlNlcnZlcigpLmdldE9yaWdpbnMoW2NhbGxi
YWNrQWdncmVnYXRvcl0oYXV0byYmIG9yaWdpbnMpIHsKLSAgICAgICAgICAgIHdoaWxlICghb3Jp
Z2lucy5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX3dl
YnNpdGVEYXRhLmVudHJpZXMuYXBwZW5kKHsgb3JpZ2lucy50YWtlQW55KCksIFdlYnNpdGVEYXRh
VHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzLCAwIH0pOwotICAgICAgICB9KTsKLSAgICB9Ci0KICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFp
bnMoV2Vic2l0ZURhdGFUeXBlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucykgJiYgc2Vzc2lv
biAmJiBzZXNzaW9uLT5oYXNTZXJ2aWNlV29ya2VyRGF0YWJhc2VQYXRoKCkpIHsKICAgICAgICAg
c2Vzc2lvbi0+ZW5zdXJlU1dTZXJ2ZXIoKS5nZXRPcmlnaW5zV2l0aFJlZ2lzdHJhdGlvbnMoW2Nh
bGxiYWNrQWdncmVnYXRvcl0oY29uc3QgSGFzaFNldDxTZWN1cml0eU9yaWdpbkRhdGE+JiBzZWN1
cml0eU9yaWdpbnMpIG11dGFibGUgewpAQCAtMTUyNSw5ICsxNTE0LDYgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRp
b25TZXQ8V2Vic2kKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0
YVR5cGU6OkRPTUNhY2hlKSAmJiBzZXNzaW9uKQogICAgICAgICBDYWNoZVN0b3JhZ2U6OkVuZ2lu
ZTo6Y2xlYXJBbGxDYWNoZXMoKnNlc3Npb24sIFtjbGVhclRhc2tzSGFuZGxlcl0geyB9KTsKIAot
ICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhl
ZERCRGF0YWJhc2VzKSAmJiAhc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkgJiYgc2Vzc2lvbikKLSAg
ICAgICAgc2Vzc2lvbi0+ZW5zdXJlV2ViSURCU2VydmVyKCkuY2xvc2VBbmREZWxldGVEYXRhYmFz
ZXNNb2RpZmllZFNpbmNlKG1vZGlmaWVkU2luY2UsIFtjbGVhclRhc2tzSGFuZGxlcl0geyB9KTsK
LQogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBib29sIGNsZWFyU2VydmljZVdvcmtl
cnMgPSB3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6RE9NQ2FjaGUp
IHx8IHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9ucyk7CiAgICAgaWYgKGNsZWFyU2VydmljZVdvcmtlcnMgJiYgIXNlc3Np
b25JRC5pc0VwaGVtZXJhbCgpICYmIHNlc3Npb24pCkBAIC0xNjIwLDkgKzE2MDYsNiBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBPcHRpbwogICAgICAgICAgICAgQ2FjaGVTdG9yYWdlOjpFbmdpbmU6OmNs
ZWFyQ2FjaGVzRm9yT3JpZ2luKCpzZXNzaW9uLCBTZWN1cml0eU9yaWdpbkRhdGEgeyBvcmlnaW5E
YXRhIH0sIFtjbGVhclRhc2tzSGFuZGxlcl0geyB9KTsKICAgICB9CiAKLSAgICBpZiAod2Vic2l0
ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykg
JiYgIXNlc3Npb25JRC5pc0VwaGVtZXJhbCgpICYmIHNlc3Npb24pCi0gICAgICAgIHNlc3Npb24t
PmVuc3VyZVdlYklEQlNlcnZlcigpLmNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzRm9yT3JpZ2lucyhv
cmlnaW5EYXRhcywgW2NsZWFyVGFza3NIYW5kbGVyXSB7IH0pOwotCiAjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQogICAgIGJvb2wgY2xlYXJTZXJ2aWNlV29ya2VycyA9IHdlYnNpdGVEYXRhVHlw
ZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSkgfHwgd2Vic2l0ZURhdGFUeXBl
cy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zKTsK
ICAgICBpZiAoY2xlYXJTZXJ2aWNlV29ya2VycyAmJiAhc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkg
JiYgc2Vzc2lvbikgewpAQCAtMTgxMSwxNyArMTc5NCw2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OmRlbGV0ZUFuZFJlc3RyaWN0V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoUEFMOjpT
ZXNzCiAgICAgICAgICAgICB9CiAgICAgICAgIH0pOwogICAgIH0KLQotICAgIGlmICh3ZWJzaXRl
RGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKSAm
JiBzZXNzaW9uICYmIHNlc3Npb24tPmhhc0lEQkRhdGFiYXNlUGF0aCgpKSB7Ci0gICAgICAgIHNl
c3Npb24tPmVuc3VyZVdlYklEQlNlcnZlcigpLmdldE9yaWdpbnMoW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBSZWYgeyAqdGhpcyB9LCBzZXNzaW9uSUQsIGNhbGxiYWNrQWdncmVnYXRvciwgZG9tYWlu
c1RvRGVsZXRlQWxsTm9uQ29va2llV2Vic2l0ZURhdGFGb3JdKGF1dG8mJiBvcmlnaW5zKSB7Ci0g
ICAgICAgICAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKLSAg
ICAgICAgICAgIGlmICghc2Vzc2lvbiB8fCAhc2Vzc2lvbi0+d2ViSURCU2VydmVyKCkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICBhdXRvIG9yaWdpbnNUb0RlbGV0ZSA9
IGZpbHRlckZvclJlZ2lzdHJhYmxlRG9tYWlucyhvcmlnaW5zLCBkb21haW5zVG9EZWxldGVBbGxO
b25Db29raWVXZWJzaXRlRGF0YUZvciwgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX2RvbWFpbnMpOwot
ICAgICAgICAgICAgc2Vzc2lvbi0+d2ViSURCU2VydmVyKCktPmNsb3NlQW5kRGVsZXRlRGF0YWJh
c2VzRm9yT3JpZ2lucyhvcmlnaW5zVG9EZWxldGUsIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7
Ci0gICAgICAgIH0pOwotICAgIH0KICAgICAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAg
ICAgYm9vbCBjbGVhclNlcnZpY2VXb3JrZXJzID0gd2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhX
ZWJzaXRlRGF0YVR5cGU6OkRPTUNhY2hlKSB8fCB3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdl
YnNpdGVEYXRhVHlwZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMpOwpAQCAtMTk1OCwxMyAr
MTkzMCw2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlZ2lzdHJhYmxlRG9tYWluc1dpdGhXZWJz
aXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsCiAgICAgICAgIH0pOwogICAgIH0KICAg
ICAKLSAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6Oklu
ZGV4ZWREQkRhdGFiYXNlcykgJiYgc2Vzc2lvbiAmJiBzZXNzaW9uLT5oYXNJREJEYXRhYmFzZVBh
dGgoKSkgewotICAgICAgICBzZXNzaW9uLT5lbnN1cmVXZWJJREJTZXJ2ZXIoKS5nZXRPcmlnaW5z
KFtjYWxsYmFja0FnZ3JlZ2F0b3JdKGF1dG8mJiBvcmlnaW5zKSB7Ci0gICAgICAgICAgICB3aGls
ZSAoIW9yaWdpbnMuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRv
ci0+bV93ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVuZCh7IG9yaWdpbnMudGFrZUFueSgpLCBXZWJz
aXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcywgMCB9KTsKLSAgICAgICAgfSk7Ci0gICAg
fQotICAgIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBpZiAod2Vic2l0ZURhdGFU
eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25z
KSAmJiBzZXNzaW9uICYmIHNlc3Npb24tPmhhc1NlcnZpY2VXb3JrZXJEYXRhYmFzZVBhdGgoKSkg
ewogICAgICAgICBzZXNzaW9uLT5lbnN1cmVTV1NlcnZlcigpLmdldE9yaWdpbnNXaXRoUmVnaXN0
cmF0aW9ucyhbY2FsbGJhY2tBZ2dyZWdhdG9yXShjb25zdCBIYXNoU2V0PFNlY3VyaXR5T3JpZ2lu
RGF0YT4mIHNlY3VyaXR5T3JpZ2lucykgbXV0YWJsZSB7CkBAIC0yMTI5LDQzICsyMDk0LDEwIEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OnByb2Nlc3NXaWxsU3VzcGVuZEltbWluZW50bHlGb3JUZXN0
aW5nU3luYyhDb21wbGV0aW9uSGFuZGxlCiAgICAgcHJlcGFyZVRvU3VzcGVuZCh0cnVlLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OnN1c3Bl
bmRJREJTZXJ2ZXJzKGJvb2wgaXNTdXNwZW5zaW9uSW1taW5lbnQpCi17Ci0gICAgbV9zaG91bGRT
dXNwZW5kSURCU2VydmVycyA9IHRydWU7Ci0gICAgKyttX3N1c3BlbnNpb25JZGVudGlmaWVyOwot
Ci0gICAgYm9vbCBhbGxTdXNwZW5kZWQgPSB0cnVlOwotICAgIGF1dG8gY29uZGl0aW9uID0gaXNT
dXNwZW5zaW9uSW1taW5lbnQgPyBXZWJJREJTZXJ2ZXI6OlN1c3BlbnNpb25Db25kaXRpb246OkFs
d2F5cyA6IFdlYklEQlNlcnZlcjo6U3VzcGVuc2lvbkNvbmRpdGlvbjo6SWZJZGxlOwotICAgIGZv
ckVhY2hOZXR3b3JrU2Vzc2lvbihbJl0oYXV0byYgc2Vzc2lvbikgewotICAgICAgICBpZiAoYXV0
byogc2VydmVyID0gc2Vzc2lvbi53ZWJJREJTZXJ2ZXIoKSkKLSAgICAgICAgICAgIGFsbFN1c3Bl
bmRlZCAmPSBzZXJ2ZXItPnN1c3BlbmQoY29uZGl0aW9uKTsKLSAgICB9KTsKLQotICAgIGlmIChh
bGxTdXNwZW5kZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNw
YXRjaEFmdGVyKDVfcywgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHN1c3Bl
bnNpb25JZGVudGlmaWVyID0gbV9zdXNwZW5zaW9uSWRlbnRpZmllcl0gewotICAgICAgICBpZiAo
IXdlYWtUaGlzKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmICghbV9zaG91bGRT
dXNwZW5kSURCU2VydmVycyB8fCBzdXNwZW5zaW9uSWRlbnRpZmllciAhPSBtX3N1c3BlbnNpb25J
ZGVudGlmaWVyKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGZvckVhY2hOZXR3b3Jr
U2Vzc2lvbihbXShhdXRvJiBzZXNzaW9uKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byogc2VydmVy
ID0gc2Vzc2lvbi53ZWJJREJTZXJ2ZXIoKSkKLSAgICAgICAgICAgICAgICBzZXJ2ZXItPnN1c3Bl
bmQoV2ViSURCU2VydmVyOjpTdXNwZW5zaW9uQ29uZGl0aW9uOjpBbHdheXMpOwotICAgICAgICB9
KTsKLSAgICB9KTsKLX0KLQogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlcGFyZVRvU3VzcGVuZChi
b29sIGlzU3VzcGVuc2lvbkltbWluZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICIl
cCAtIE5ldHdvcmtQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5kKCksIGlzU3VzcGVuc2lvbkltbWlu
ZW50PSVkIiwgdGhpcywgaXNTdXNwZW5zaW9uSW1taW5lbnQpOwogCi0jaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKLSAgICBzdXNwZW5kSURCU2VydmVycyhpc1N1c3BlbnNpb25JbW1pbmVudCk7Ci0j
ZW5kaWYKLQogICAgIGxvd01lbW9yeUhhbmRsZXIoQ3JpdGljYWw6Olllcyk7CiAKICAgICBSZWZQ
dHI8Q2FsbGJhY2tBZ2dyZWdhdG9yPiBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3Jl
Z2F0b3I6OmNyZWF0ZShbdGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKQEAgLTIyMjMsMTggKzIxNTUsMTAgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzczo6cmVzdW1lKCkKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgICAg
IGlmIChhdXRvKiBzd1NlcnZlciA9IHNlc3Npb24uc3dTZXJ2ZXIoKSkKICAgICAgICAgICAgIHN3
U2VydmVyLT5lbmRTdXNwZW5zaW9uKCk7Ci0jZW5kaWYKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQotICAgICAgICBpZiAoYXV0byogc2VydmVyID0gc2Vzc2lvbi53ZWJJREJTZXJ2ZXIoKSkKLSAg
ICAgICAgICAgIHNlcnZlci0+cmVzdW1lKCk7CiAjZW5kaWYKICAgICAgICAgaWYgKGF1dG8qIG1h
bmFnZXIgPSBzZXNzaW9uLnN0b3JhZ2VNYW5hZ2VyKCkpCiAgICAgICAgICAgICBtYW5hZ2VyLT5y
ZXN1bWUoKTsKICAgICB9KTsKLQotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgbV9zaG91
bGRTdXNwZW5kSURCU2VydmVycyA9IGZhbHNlOwotI2VuZGlmCiB9CiAKIHZvaWQgTmV0d29ya1By
b2Nlc3M6OnByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCkBAIC0yMjgxLDEyICsy
MjA1LDEyIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnN5bmNMb2NhbFN0b3JhZ2UoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OnJlc2V0UXVvdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fc2Vz
c2lvblN0b3JhZ2VRdW90YU1hbmFnZXJzTG9jayB9OwotICAgIGlmIChhdXRvKiBzZXNzaW9uU3Rv
cmFnZVF1b3RhTWFuYWdlciA9IG1fc2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXJzLmdldChzZXNz
aW9uSUQpKSB7Ci0gICAgICAgIGZvciAoYXV0byBzdG9yYWdlUXVvdGFNYW5hZ2VyIDogc2Vzc2lv
blN0b3JhZ2VRdW90YU1hbmFnZXItPmV4aXN0aW5nU3RvcmFnZVF1b3RhTWFuYWdlcnMoKSkKLSAg
ICAgICAgICAgIHN0b3JhZ2VRdW90YU1hbmFnZXItPnJlc2V0UXVvdGFGb3JUZXN0aW5nKCk7Ci0g
ICAgfQotICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgYXV0byogc2Vzc2lvbiA9IG5ldHdv
cmtTZXNzaW9uKHNlc3Npb25JRCk7CisgICAgaWYgKCFzZXNzaW9uKQorICAgICAgICByZXR1cm4g
Y29tcGxldGlvbkhhbmRsZXIoKTsKKworICAgIGlmIChhdXRvKiBzdG9yYWdlTWFuYWdlciA9IHNl
c3Npb24tPnN0b3JhZ2VNYW5hZ2VyKCkpCisgICAgICAgIHN0b3JhZ2VNYW5hZ2VyLT5yZXNldFF1
b3RhRm9yVGVzdGluZyhXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OmNsZWFyU3RvcmFnZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTIyOTgsNiArMjIy
MiwxNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVhclN0b3JhZ2UoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2bwogICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cigpOwogfQogCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpkaWRJbmNyZWFzZVF1b3RhKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4sIFF1b3RhSW5jcmVh
c2VSZXF1ZXN0SWRlbnRpZmllciBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBu
ZXdRdW90YSkKK3sKKyAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklE
KTsKKyAgICBpZiAoIXNlc3Npb24pCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChhdXRvKiBt
YW5hZ2VyID0gc2Vzc2lvbi0+c3RvcmFnZU1hbmFnZXIoKSkKKyAgICAgICAgbWFuYWdlci0+ZGlk
SW5jcmVhc2VRdW90YShvcmlnaW4sIGlkZW50aWZpZXIsIG5ld1F1b3RhKTsKK30KKwogdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6cmVuYW1lT3JpZ2luSW5XZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IFVSTCYgb2xkTmFtZSwgY29uc3QgVVJMJiBuZXdOYW1lLCBPcHRpb25T
ZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvIGFnZ3JlZ2F0b3IgPSBDYWxsYmFja0Fn
Z3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CkBAIC0yMzEwLDkg
KzIyNDQsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZW5hbWVPcmlnaW5JbldlYnNpdGVEYXRh
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVQogICAgIGF1dG8qIHNlc3Npb24gPSBu
ZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOwogICAgIGlmIChhdXRvKiBtYW5hZ2VyID0gc2Vzc2lv
biA/IHNlc3Npb24tPnN0b3JhZ2VNYW5hZ2VyKCkgOiBudWxscHRyKQogICAgICAgICBtYW5hZ2Vy
LT5tb3ZlRGF0YShvbGRPcmlnaW4sIG5ld09yaWdpbiwgW2FnZ3JlZ2F0b3JdIHsgfSk7Ci0KLSAg
ICBpZiAoZGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJh
c2VzKSAmJiBzZXNzaW9uICYmIHNlc3Npb24tPmhhc0lEQkRhdGFiYXNlUGF0aCgpKQotICAgICAg
ICBzZXNzaW9uLT5lbnN1cmVXZWJJREJTZXJ2ZXIoKS5yZW5hbWVPcmlnaW4ob2xkT3JpZ2luLCBu
ZXdPcmlnaW4sIFthZ2dyZWdhdG9yXSB7IH0pOwogfQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQpAQCAtMjM3Miw3ICsyMzAzLDggQEAgUmVmUHRyPFN0b3JhZ2VRdW90YU1hbmFnZXI+IE5l
dHdvcmtQcm9jZXNzOjpzdG9yYWdlUXVvdGFNYW5hZ2VyKFBBTDo6U2Vzc2lvbklEIHMKICAgICBT
dG9yYWdlUXVvdGFNYW5hZ2VyOjpVc2FnZUdldHRlciB1c2FnZUdldHRlciA9IFtjYWNoZVJvb3RQ
YXRoID0gc2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXItPmNhY2hlUm9vdFBhdGgoKS5pc29sYXRl
ZENvcHkoKSwgaWRiUm9vdFBhdGggPSBpZGJSb290UGF0aC5pc29sYXRlZENvcHkoKSwgb3JpZ2lu
ID0gb3JpZ2luLmlzb2xhdGVkQ29weSgpXSgpIHsKICAgICAgICAgQVNTRVJUKCFpc01haW5SdW5M
b29wKCkpOwogCi0gICAgICAgIHJldHVybiBDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6ZGlza1VzYWdl
KGNhY2hlUm9vdFBhdGgsIG9yaWdpbikgKyBJREJTZXJ2ZXI6OklEQlNlcnZlcjo6ZGlza1VzYWdl
KGlkYlJvb3RQYXRoLCBvcmlnaW4pOworICAgICAgICBhdXRvIGNhY2hlU3RvcmFnZVBhdGggPSBD
YWNoZVN0b3JhZ2U6OkVuZ2luZTo6c3RvcmFnZVBhdGgoY2FjaGVSb290UGF0aCwgb3JpZ2luKTsK
KyAgICAgICAgcmV0dXJuIENhY2hlU3RvcmFnZTo6RW5naW5lOjpkaXNrVXNhZ2UoY2FjaGVTdG9y
YWdlUGF0aCkgKyBJREJTZXJ2ZXI6OklEQlNlcnZlcjo6ZGlza1VzYWdlKGlkYlJvb3RQYXRoLCBv
cmlnaW4pOwogICAgIH07CiAgICAgU3RvcmFnZVF1b3RhTWFuYWdlcjo6UXVvdGFJbmNyZWFzZVJl
cXVlc3RlciBxdW90YUluY3JlYXNlUmVxdWVzdGVyID0gW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0
ciB7ICp0aGlzIH0sIHNlc3Npb25JRCwgb3JpZ2luXSAodWludDY0X3QgY3VycmVudFF1b3RhLCB1
aW50NjRfdCBjdXJyZW50U3BhY2UsIHVpbnQ2NF90IHJlcXVlc3RlZEluY3JlYXNlLCBhdXRvJiYg
Y2FsbGJhY2spIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7CkBAIC0yNTg2LDgg
KzI1MTgsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZW1vdmVLZXB0QWxpdmVMb2FkKE5ldHdv
cmtSZXNvdXJjZUxvYWRlciYgbG9hZGVyKQogdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y29ubmVjdGlv
blRvV2ViUHJvY2Vzc0Nsb3NlZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCkKIHsKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNz
aW9uKHNlc3Npb25JRCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHNlcnZlciA9IHNlc3Npb24tPndl
YklEQlNlcnZlcigpKQotICAgICAgICAgICAgc2VydmVyLT5yZW1vdmVDb25uZWN0aW9uKGNvbm5l
Y3Rpb24pOwogICAgICAgICBpZiAoYXV0byogbWFuYWdlciA9IHNlc3Npb24tPnN0b3JhZ2VNYW5h
Z2VyKCkpCiAgICAgICAgICAgICBtYW5hZ2VyLT5zdG9wUmVjZWl2aW5nTWVzc2FnZUZyb21Db25u
ZWN0aW9uKGNvbm5lY3Rpb24pOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCA3ODc3OTI3YTE3YzU1OTZlYjAzYmQ0YWNmNGQ1OGU0
MThhYzhiYTIzLi4wZjg1MzNlZDEzZGQyNjI3N2E2ZGQ1MmFiNmRhYmUyMGMzZTA4ODA1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0zMyw2
ICszMyw3IEBACiAjaW5jbHVkZSAiTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmgiCiAjaW5j
bHVkZSAiTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuaCIKICNpbmNsdWRlICJOZXR3b3Jr
UmVzb3VyY2VMb2FkSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlF1b3RhSW5jcmVhc2VSZXF1ZXN0
SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlclByb3h5
LmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94
eUlkZW50aWZpZXIuaCIKQEAgLTI4OCwxMiArMjg5LDExIEBAIHB1YmxpYzoKICAgICBOZXR3b3Jr
Q29udGVudFJ1bGVMaXN0TWFuYWdlciYgbmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIoKSB7
IHJldHVybiBtX25ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyOyB9CiAjZW5kaWYKIAotICAg
IGJvb2wgc2hvdWxkU3VzcGVuZElEQlNlcnZlcnMoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZFN1
c3BlbmRJREJTZXJ2ZXJzOyB9Ci0KICAgICB2b2lkIHN5bmNMb2NhbFN0b3JhZ2UoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKIAogICAgIHZvaWQgcmVzZXRRdW90YShQQUw6OlNlc3Npb25J
RCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGNsZWFyU3RvcmFnZShQ
QUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGRp
ZEluY3JlYXNlUXVvdGEoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdp
biYsIFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gbmV3UXVvdGEpOwogICAgIHZvaWQgcmVuYW1lT3JpZ2luSW5XZWJzaXRlRGF0YShQQUw6OlNl
c3Npb25JRCwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlw
ZT4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQpAQCAtNDczLDggKzQ3Myw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWdpc3RlclVSTFNj
aGVtZUFzTm9BY2Nlc3MoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAgdm9pZCByZWdpc3RlclVS
TFNjaGVtZUFzQ09SU0VuYWJsZWQoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAKLSAgICB2b2lkIHN1
c3BlbmRJREJTZXJ2ZXJzKGJvb2wgaXNTdXNwZW5zaW9uSW1taW5lbnQpOwotCiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIHNldElzSG9sZGluZ0xvY2tlZEZpbGVzKGJvb2wpOwog
I2VuZGlmCkBAIC00ODIsNiArNDgwLDcgQEAgcHJpdmF0ZToKICAgICBjbGFzcyBTZXNzaW9uU3Rv
cmFnZVF1b3RhTWFuYWdlciB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAg
IHB1YmxpYzoKKyAgICAgICAgU2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXIoKSA9IGRlbGV0ZTsK
ICAgICAgICAgU2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXIoY29uc3QgU3RyaW5nJiBjYWNoZVJv
b3RQYXRoLCB1aW50NjRfdCBkZWZhdWx0UXVvdGEsIHVpbnQ2NF90IGRlZmF1bHRUaGlyZFBhcnR5
UXVvdGEpCiAgICAgICAgICAgICA6IG1fY2FjaGVSb290UGF0aChjYWNoZVJvb3RQYXRoKQogICAg
ICAgICAgICAgLCBtX2RlZmF1bHRRdW90YShkZWZhdWx0UXVvdGEpCkBAIC01MDgsOCArNTA3LDgg
QEAgcHJpdmF0ZToKICAgICBwcml2YXRlOgogICAgICAgICBTdHJpbmcgbV9jYWNoZVJvb3RQYXRo
OwogICAgICAgICBTdHJpbmcgbV9pZGJSb290UGF0aDsKLSAgICAgICAgdWludDY0X3QgbV9kZWZh
dWx0UXVvdGEgeyBXZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2VyOjpkZWZhdWx0UXVvdGEoKSB9
OwotICAgICAgICB1aW50NjRfdCBtX2RlZmF1bHRUaGlyZFBhcnR5UXVvdGEgeyBXZWJDb3JlOjpT
dG9yYWdlUXVvdGFNYW5hZ2VyOjpkZWZhdWx0VGhpcmRQYXJ0eVF1b3RhKCkgfTsKKyAgICAgICAg
dWludDY0X3QgbV9kZWZhdWx0UXVvdGE7CisgICAgICAgIHVpbnQ2NF90IG1fZGVmYXVsdFRoaXJk
UGFydHlRdW90YTsKICAgICAgICAgSGFzaE1hcDxXZWJDb3JlOjpDbGllbnRPcmlnaW4sIFJlZlB0
cjxXZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2VyPj4gbV9zdG9yYWdlUXVvdGFNYW5hZ2VyczsK
ICAgICB9OwogICAgIHZvaWQgYWRkU2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXIoUEFMOjpTZXNz
aW9uSUQsIHVpbnQ2NF90IGRlZmF1bHRRdW90YSwgdWludDY0X3QgZGVmYXVsdFRoaXJkUGFydHlR
dW90YSwgY29uc3QgU3RyaW5nJiBjYWNoZVJvb3RQYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUmKTsKQEAgLTU0OSw5ICs1NDgsNiBAQCBwcml2YXRlOgogICAgIFdlYlNRTGl0ZURhdGFiYXNl
VHJhY2tlciBtX3dlYlNRTGl0ZURhdGFiYXNlVHJhY2tlcjsKICAgICBSZWZQdHI8UHJvY2Vzc0Fz
c2VydGlvbj4gbV9ob2xkaW5nTG9ja2VkRmlsZUFzc2VydGlvbjsKICNlbmRpZgotCi0gICAgYm9v
bCBtX3Nob3VsZFN1c3BlbmRJREJTZXJ2ZXJzIHsgZmFsc2UgfTsKLSAgICB1aW50NjRfdCBtX3N1
c3BlbnNpb25JZGVudGlmaWVyIHsgMCB9OwogICAgIAogI2lmIEVOQUJMRShXRUJfUlRDKQogICAg
IFJlZlB0cjxSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXJQcm94eT4gbV9ydGNEYXRhQ2hhbm5l
bFByb3h5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggNjM3ZTE1OWYxODYzOTNiZWM1Y2MwNWFiNWJkNTc4
MGJlOGM2ZmNlNC4uNjMxZTJiNjA3M2MwMTkyMTMwNjhjMjA5NmI4MjdiMjc5ZGJjN2RlMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
Lm1lc3NhZ2VzLmluCkBAIC0xNzksNiArMTc5LDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nl
c3MgTGVnYWN5UmVjZWl2ZXIgewogCiAgICAgUmVzZXRRdW90YShQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQpIC0+ICgpIEFzeW5jCiAgICAgQ2xlYXJTdG9yYWdlKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCkgLT4gKCkgQXN5bmMKKyAgICBEaWRJbmNyZWFzZVF1b3RhKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgc3RydWN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiBvcmlnaW4sIFdlYktpdDo6UXVv
dGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IG5ld1F1b3RhKQogICAgIAogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAg
ICBIYXNBcHBCb3VuZFNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoYm9vbCBo
YXNBcHBCb3VuZFNlc3Npb24pIEFzeW5jCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Nlc3Npb24uY3BwCmluZGV4IGUyYjI0ZDgzMjJiNmVjMWMzNzcwMWRjYWQ0OTc1
MzRjZWYyMzFhMjYuLjljNGJlMmI2MTg5NDc0Y2NmMjRiZTcwYjExMjcyOTE4ZmMwMmIzZTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCkBA
IC0yMDQsOCArMjA0LDYgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbjo6aW52YWxpZGF0ZUFuZENhbmNl
bCgpCiAgICAgaWYgKG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcykKICAgICAgICAgbV9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzLT5pbnZhbGlkYXRlQW5kQ2FuY2VsKCk7CiAjZW5kaWYKLSAgICBpZiAo
YXV0byBzZXJ2ZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fd2ViSURCU2VydmVyLCBudWxscHRyKSkKLSAg
ICAgICAgc2VydmVyLT5jbG9zZSgpOwogICAgIGlmIChhdXRvIG1hbmFnZXIgPSBzdGQ6OmV4Y2hh
bmdlKG1fc3RvcmFnZU1hbmFnZXIsIG51bGxwdHIpKQogICAgICAgICBtYW5hZ2VyLT5jbG9zZSgp
OwogICAgIG1fY2FjaGVFbmdpbmUgPSBudWxscHRyOwpAQCAtNjUzLDU1ICs2NTEsMTggQEAgYm9v
bCBOZXR3b3JrU2Vzc2lvbjo6aGFzU2VydmljZVdvcmtlckRhdGFiYXNlUGF0aCgpIGNvbnN0CiAK
ICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKLVdlYklEQlNlcnZlciYgTmV0d29y
a1Nlc3Npb246OmVuc3VyZVdlYklEQlNlcnZlcigpCi17Ci0gICAgaWYgKCFtX3dlYklEQlNlcnZl
cikgewotICAgICAgICBTdHJpbmcgcGF0aDsKLSAgICAgICAgaWYgKCFzZXNzaW9uSUQoKS5pc0Vw
aGVtZXJhbCgpKSB7Ci0gICAgICAgICAgICBBU1NFUlQoIW1faWRiRGF0YWJhc2VQYXRoLmlzTnVs
bCgpKTsKLSAgICAgICAgICAgIHBhdGggPSBtX2lkYkRhdGFiYXNlUGF0aDsKLSAgICAgICAgfQot
Ci0gICAgICAgIGF1dG8gc3BhY2VSZXF1ZXN0ZXIgPSBbbmV0d29ya1Byb2Nlc3MgPSBSZWYgeyBu
ZXR3b3JrUHJvY2VzcygpIH0sIHNlc3Npb25JRCA9IHNlc3Npb25JRCgpXShjb25zdCBhdXRvJiBv
cmlnaW4sIHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkKSB7Ci0gICAgICAgICAgICByZXR1cm4gbmV0
d29ya1Byb2Nlc3MtPnN0b3JhZ2VRdW90YU1hbmFnZXIoc2Vzc2lvbklELCBvcmlnaW4pLT5yZXF1
ZXN0U3BhY2VPbkJhY2tncm91bmRUaHJlYWQoc3BhY2VSZXF1ZXN0ZWQpOwotICAgICAgICB9Owot
Ci0gICAgICAgIG1fd2ViSURCU2VydmVyID0gV2ViSURCU2VydmVyOjpjcmVhdGUoc2Vzc2lvbklE
KCksIHBhdGgsIFdURk1vdmUoc3BhY2VSZXF1ZXN0ZXIpKTsKLSAgICAgICAgaWYgKG5ldHdvcmtQ
cm9jZXNzKCkuc2hvdWxkU3VzcGVuZElEQlNlcnZlcnMoKSkKLSAgICAgICAgICAgIG1fd2ViSURC
U2VydmVyLT5zdXNwZW5kKFdlYklEQlNlcnZlcjo6U3VzcGVuc2lvbkNvbmRpdGlvbjo6QWx3YXlz
KTsKLSAgICB9Ci0gICAgcmV0dXJuICptX3dlYklEQlNlcnZlcjsKLX0KLQotdm9pZCBOZXR3b3Jr
U2Vzc2lvbjo6Y2xvc2VJREJTZXJ2ZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQotewotICAgIGlmICghbV93ZWJJREJTZXJ2ZXIpCi0gICAgICAgIHJldHVy
biBjb21wbGV0aW9uSGFuZGxlcigpOwotCi0gICAgc3RkOjpleGNoYW5nZShtX3dlYklEQlNlcnZl
ciwgbnVsbHB0ciktPmNsb3NlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLX0KLQotdm9p
ZCBOZXR3b3JrU2Vzc2lvbjo6YWRkSW5kZXhlZERhdGFiYXNlU2Vzc2lvbihjb25zdCBTdHJpbmcm
IGluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBoYW5k
bGUpCi17Ci0gICAgLy8gKioqKioqKioqCi0gICAgLy8gSU1QT1JUQU5UOiBEbyBub3QgY2hhbmdl
IHRoZSBkaXJlY3Rvcnkgc3RydWN0dXJlIGZvciBpbmRleGVkIGRhdGFiYXNlcyBvbiBkaXNrIHdp
dGhvdXQgZmlyc3QgY29uc3VsdGluZyBhIHJldmlld2VyIGZyb20gQXBwbGUgKDxyZGFyOi8vcHJv
YmxlbS8xNzQ1NDcxMj4pCi0gICAgLy8gKioqKioqKioqCi0gICAgYXV0byBpc05ldyA9IG1faWRi
RGF0YWJhc2VQYXRoLmlzTnVsbCgpOwotICAgIG1faWRiRGF0YWJhc2VQYXRoID0gaW5kZXhlZERh
dGFiYXNlRGlyZWN0b3J5OwotICAgIGlmIChpc05ldykgewotICAgICAgICBTYW5kYm94RXh0ZW5z
aW9uOjpjb25zdW1lUGVybWFuZW50bHkoaGFuZGxlKTsKLSAgICAgICAgbmV0d29ya1Byb2Nlc3Mo
KS5zZXRTZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlcklEQlJvb3RQYXRoKHNlc3Npb25JRCgpLCBp
bmRleGVkRGF0YWJhc2VEaXJlY3RvcnkpOwotICAgIH0KLX0KLQotdm9pZCBOZXR3b3JrU2Vzc2lv
bjo6YWRkU3RvcmFnZU1hbmFnZXJTZXNzaW9uKGNvbnN0IFN0cmluZyYgZ2VuZXJhbFN0b3JhZ2VQ
YXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIGdlbmVyYWxTdG9yYWdlUGF0aEhhbmRsZSwg
Y29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VQYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUm
IGxvY2FsU3RvcmFnZVBhdGhIYW5kbGUpCit2b2lkIE5ldHdvcmtTZXNzaW9uOjphZGRTdG9yYWdl
TWFuYWdlclNlc3Npb24oY29uc3QgU3RyaW5nJiBnZW5lcmFsU3RvcmFnZVBhdGgsIFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSYgZ2VuZXJhbFN0b3JhZ2VQYXRoSGFuZGxlLCBjb25zdCBTdHJpbmcm
IGxvY2FsU3RvcmFnZVBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgbG9jYWxTdG9yYWdl
UGF0aEhhbmRsZSwgY29uc3QgU3RyaW5nJiBpZGJTdG9yYWdlUGF0aCwgU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlJiBpZGJTdG9yYWdlUGF0aEhhbmRsZSwgY29uc3QgU3RyaW5nJiBjYWNoZVN0b3Jh
Z2VQYXRoLCB1aW50NjRfdCBkZWZhdWx0T3JpZ2luUXVvdGEsIHVpbnQ2NF90IGRlZmF1bHRUaGly
ZFBhcnR5UXVvdGEpCiB7CiAgICAgaWYgKG1fc3RvcmFnZU1hbmFnZXIpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShnZW5lcmFsU3Rv
cmFnZVBhdGhIYW5kbGUpOwogICAgIFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRs
eShsb2NhbFN0b3JhZ2VQYXRoSGFuZGxlKTsKLSAgICBtX3N0b3JhZ2VNYW5hZ2VyID0gTmV0d29y
a1N0b3JhZ2VNYW5hZ2VyOjpjcmVhdGUoc2Vzc2lvbklEKCksIGdlbmVyYWxTdG9yYWdlUGF0aCwg
bG9jYWxTdG9yYWdlUGF0aCk7CisgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVu
dGx5KGlkYlN0b3JhZ2VQYXRoSGFuZGxlKTsKKyAgICBJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlE
IGNvbm5lY3Rpb25JRDsKKyAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IG5ldHdvcmtQcm9jZXNz
KCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKSkKKyAgICAgICAgY29ubmVjdGlvbklEID0gY29u
bmVjdGlvbi0+dW5pcXVlSUQoKTsKKyAgICBtX3N0b3JhZ2VNYW5hZ2VyID0gTmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyOjpjcmVhdGUoc2Vzc2lvbklEKCksIGNvbm5lY3Rpb25JRCwgZ2VuZXJhbFN0b3Jh
Z2VQYXRoLCBsb2NhbFN0b3JhZ2VQYXRoLCBpZGJTdG9yYWdlUGF0aCwgY2FjaGVTdG9yYWdlUGF0
aCwgZGVmYXVsdE9yaWdpblF1b3RhLCBkZWZhdWx0VGhpcmRQYXJ0eVF1b3RhKTsKIH0KIAogdm9p
ZCBOZXR3b3JrU2Vzc2lvbjo6ZW5zdXJlQ2FjaGVFbmdpbmUoRnVuY3Rpb248dm9pZChDYWNoZVN0
b3JhZ2U6OkVuZ2luZSYpPiYmIGNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCmluZGV4IDE5MzA3Y2Y0MGJlM2IyZjI2MDU3ZDAxNmM3NjZl
ZGNlNDk4Yzk1NDIuLmJhYTEyMjQ1Y2YyMjY0ZDkyMTU3ZGRlNDcxZDJlNGIxMDJiYzI5N2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKQEAgLTIx
MCwxNCArMjEwLDggQEAgcHVibGljOgogICAgIHZvaWQgYWRkU2VydmljZVdvcmtlclNlc3Npb24o
Ym9vbCBwcm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQsIFN0cmluZyYmIHNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25EaXJlY3RvcnksIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYp
OwogI2VuZGlmCiAKLSAgICBXZWJJREJTZXJ2ZXIqIHdlYklEQlNlcnZlcigpIHsgcmV0dXJuIG1f
d2ViSURCU2VydmVyLmdldCgpOyB9Ci0gICAgV2ViSURCU2VydmVyJiBlbnN1cmVXZWJJREJTZXJ2
ZXIoKTsKLSAgICB2b2lkIGNsb3NlSURCU2VydmVyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7Ci0gICAgdm9pZCBhZGRJbmRleGVkRGF0YWJhc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYgaW5k
ZXhlZERhdGFiYXNlRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmKTsKLSAgICBi
b29sIGhhc0lEQkRhdGFiYXNlUGF0aCgpIGNvbnN0IHsgcmV0dXJuICFtX2lkYkRhdGFiYXNlUGF0
aC5pc0VtcHR5KCk7IH0KLQogICAgIE5ldHdvcmtTdG9yYWdlTWFuYWdlciogc3RvcmFnZU1hbmFn
ZXIoKSB7IHJldHVybiBtX3N0b3JhZ2VNYW5hZ2VyLmdldCgpOyB9Ci0gICAgdm9pZCBhZGRTdG9y
YWdlTWFuYWdlclNlc3Npb24oY29uc3QgU3RyaW5nJiBnZW5lcmFsU3RvcmFnZVBhdGgsIFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSYgZ2VuZXJhbFN0b3JhZ2VQYXRoSGFuZGxlLCBjb25zdCBTdHJp
bmcmIGxvY2FsU3RvcmFnZVBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgbG9jYWxTdG9y
YWdlUGF0aEhhbmRsZSk7CisgICAgdm9pZCBhZGRTdG9yYWdlTWFuYWdlclNlc3Npb24oY29uc3Qg
U3RyaW5nJiBnZW5lcmFsU3RvcmFnZVBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgZ2Vu
ZXJhbFN0b3JhZ2VQYXRoSGFuZGxlLCBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZVBhdGgsIFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZSYgbG9jYWxTdG9yYWdlUGF0aEhhbmRsZSwgY29uc3QgU3Ry
aW5nJiBpZGJTdG9yYWdlUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBpZGJTdG9yYWdl
UGF0aEhhbmRsZSwgY29uc3QgU3RyaW5nJiBjYWNoZVN0b3JhZ2VQYXRoLCB1aW50NjRfdCBkZWZh
dWx0T3JpZ2luUXVvdGEsIHVpbnQ2NF90IGRlZmF1bHRUaGlyZFBhcnR5UXVvdGEpOwogCiAgICAg
Q2FjaGVTdG9yYWdlOjpFbmdpbmUqIGNhY2hlRW5naW5lKCkgeyByZXR1cm4gbV9jYWNoZUVuZ2lu
ZS5nZXQoKTsgfQogICAgIHZvaWQgZW5zdXJlQ2FjaGVFbmdpbmUoRnVuY3Rpb248dm9pZChDYWNo
ZVN0b3JhZ2U6OkVuZ2luZSYpPiYmKTsKQEAgLTMxOSw5ICszMTMsNiBAQCBwcm90ZWN0ZWQ6CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNXU2VydmVyPiBtX3N3U2VydmVyOwogI2VuZGlm
CiAKLSAgICBTdHJpbmcgbV9pZGJEYXRhYmFzZVBhdGg7Ci0gICAgUmVmUHRyPFdlYklEQlNlcnZl
cj4gbV93ZWJJREJTZXJ2ZXI7Ci0KICAgICBSZWZQdHI8TmV0d29ya1N0b3JhZ2VNYW5hZ2VyPiBt
X3N0b3JhZ2VNYW5hZ2VyOwogICAgIFJlZlB0cjxDYWNoZVN0b3JhZ2U6OkVuZ2luZT4gbV9jYWNo
ZUVuZ2luZTsKICAgICBWZWN0b3I8RnVuY3Rpb248dm9pZChDYWNoZVN0b3JhZ2U6OkVuZ2luZSYp
Pj4gbV9jYWNoZVN0b3JhZ2VQYXJhbWV0ZXJzQ2FsbGJhY2tzOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCmlu
ZGV4IGMyMDBjZThiNWViNGMzYTAzNjU3ZTgyMjY4OTkwMmI0NmRiZjhhYjAuLjFhMDkwN2RkNDBi
M2ZjNzhlZGU5NzM3MmM5MjA1YTExODZiNDAzMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKQEAgLTMx
LDYgKzMxLDcgQEAKICNpbmNsdWRlICJOZXR3b3JrQ2FjaGVJT0NoYW5uZWwuaCIKICNpbmNsdWRl
ICJOZXR3b3JrUHJvY2Vzcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtTZXNzaW9uLmgiCisjaW5jbHVk
ZSAiTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFUeXBlLmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9DYWNoZVF1ZXJ5T3B0aW9ucy5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUmV0cmlldmVSZWNvcmRzT3B0aW9ucy5oPgpAQCAtMjAzLDQwICsyMDQsNDkgQEAgc3RhdGlj
IHVpbnQ2NF90IGdldERpcmVjdG9yeVNpemUoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnlQYXRoKQog
ICAgIHJldHVybiBkaXJlY3RvcnlTaXplOwogfQogCi11aW50NjRfdCBFbmdpbmU6OmRpc2tVc2Fn
ZShjb25zdCBTdHJpbmcmIHJvb3RQYXRoLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9y
aWdpbikKK1N0cmluZyBFbmdpbmU6OnN0b3JhZ2VQYXRoKGNvbnN0IFN0cmluZyYgcm9vdERpcmVj
dG9yeSwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4pCiB7CiAgICAgQVNTRVJU
KCFpc01haW5SdW5Mb29wKCkpOworICAgIAorICAgIGlmIChyb290RGlyZWN0b3J5LmlzRW1wdHko
KSkKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKLSAgICBpZiAocm9vdFBhdGguaXNF
bXB0eSgpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIFN0cmluZyBzYWx0UGF0aCA9IEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyb290UGF0aCwgInNhbHQiX3MpOworICAg
IFN0cmluZyBzYWx0UGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChy
b290RGlyZWN0b3J5LCAic2FsdCJfcyk7CiAgICAgYXV0byBzYWx0ID0gRmlsZVN5c3RlbTo6cmVh
ZE9yTWFrZVNhbHQoc2FsdFBhdGgpOwogICAgIGlmICghc2FsdCkKLSAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCiAgICAgS2V5IGtleShvcmlnaW4udG9w
T3JpZ2luLnRvU3RyaW5nKCksIG9yaWdpbi5jbGllbnRPcmlnaW4udG9TdHJpbmcoKSwgeyB9LCB7
IH0sICpzYWx0KTsKLSAgICBTdHJpbmcgZGlyZWN0b3J5UGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChyb290UGF0aCwga2V5Lmhhc2hBc1N0cmluZygpKTsKKyAgICBy
ZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJvb3REaXJlY3Rvcnks
IGtleS5oYXNoQXNTdHJpbmcoKSk7Cit9CisKK3VpbnQ2NF90IEVuZ2luZTo6ZGlza1VzYWdlKGNv
bnN0IFN0cmluZyYgb3JpZ2luRGlyZWN0b3J5KQoreworICAgIEFTU0VSVCghaXNNYWluUnVuTG9v
cCgpKTsKKworICAgIGlmIChvcmlnaW5EaXJlY3RvcnkuaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm4gMDsKIAotICAgIFN0cmluZyBzaXplRmlsZVBhdGggPSBDYWNoZXM6OmNhY2hlc1NpemVGaWxl
bmFtZShkaXJlY3RvcnlQYXRoKTsKKyAgICBTdHJpbmcgc2l6ZUZpbGVQYXRoID0gQ2FjaGVzOjpj
YWNoZXNTaXplRmlsZW5hbWUob3JpZ2luRGlyZWN0b3J5KTsKICAgICBpZiAoYXV0byByZWNvcmRl
ZFNpemUgPSByZWFkU2l6ZUZpbGUoc2l6ZUZpbGVQYXRoKSkKICAgICAgICAgcmV0dXJuICpyZWNv
cmRlZFNpemU7CiAKLSAgICByZXR1cm4gZ2V0RGlyZWN0b3J5U2l6ZShkaXJlY3RvcnlQYXRoKTsK
KyAgICByZXR1cm4gZ2V0RGlyZWN0b3J5U2l6ZShvcmlnaW5EaXJlY3RvcnkpOwogfQogCi12b2lk
IEVuZ2luZTo6cmVxdWVzdFNwYWNlKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2lu
LCB1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3Jl
OjpTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbik+JiYgY2FsbGJhY2spCit2b2lkIEVuZ2lu
ZTo6cmVxdWVzdFNwYWNlKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCB1aW50
NjRfdCBzcGFjZVJlcXVlc3RlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxs
YmFjaykKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAgaWYgKCFtX25ldHdv
cmtQcm9jZXNzKQotICAgICAgICBjYWxsYmFjayhXZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2Vy
OjpEZWNpc2lvbjo6RGVueSk7CisgICAgICAgIGNhbGxiYWNrKGZhbHNlKTsKIAotICAgIFJlZlB0
cjxXZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2VyPiBzdG9yYWdlUXVvdGFNYW5hZ2VyID0gbV9u
ZXR3b3JrUHJvY2Vzcy0+c3RvcmFnZVF1b3RhTWFuYWdlcihtX3Nlc3Npb25JRCwgb3JpZ2luKTsK
LSAgICBpZiAoIXN0b3JhZ2VRdW90YU1hbmFnZXIpCi0gICAgICAgIGNhbGxiYWNrKFdlYkNvcmU6
OlN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uOjpEZW55KTsKKyAgICBhdXRvKiBzZXNzaW9u
ID0gbV9uZXR3b3JrUHJvY2Vzcy0+bmV0d29ya1Nlc3Npb24obV9zZXNzaW9uSUQpOworICAgIGlm
ICghc2Vzc2lvbikKKyAgICAgICAgY2FsbGJhY2soZmFsc2UpOwogCi0gICAgc3RvcmFnZVF1b3Rh
TWFuYWdlci0+cmVxdWVzdFNwYWNlT25NYWluVGhyZWFkKHNwYWNlUmVxdWVzdGVkLCBXVEZNb3Zl
KGNhbGxiYWNrKSk7CisgICAgaWYgKGF1dG8qIHN0b3JhZ2VNYW5hZ2VyID0gc2Vzc2lvbi0+c3Rv
cmFnZU1hbmFnZXIoKSkKKyAgICAgICAgc3RvcmFnZU1hbmFnZXItPnJlcXVlc3RTcGFjZShvcmln
aW4sIHNwYWNlUmVxdWVzdGVkLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKIEVuZ2luZTo6RW5n
aW5lKE5ldHdvcmtTZXNzaW9uJiBuZXR3b3JrU2Vzc2lvbiwgU3RyaW5nJiYgcm9vdFBhdGgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFn
ZUVuZ2luZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3Jh
Z2VFbmdpbmUuaAppbmRleCAxNDdmYmFjZTE2NzdhNjA4NTkxOGFiNzcyYTllMTBhMjA2YzY4ODFl
Li5mZTNjMWY5MzBkYWUzOTk4Y2QxYzA0YzM0ZGJkZGM1MzU1NWE0NzAyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5l
LmgKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJOZXR3b3JrQ2FjaGVEYXRhLmgiCiAjaW5j
bHVkZSAiV2Vic2l0ZURhdGEuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NsaWVudE9yaWdpbi5oPgot
I2luY2x1ZGUgPFdlYkNvcmUvU3RvcmFnZVF1b3RhTWFuYWdlci5oPgogI2luY2x1ZGUgPHBhbC9T
ZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CkBAIC04NCw4ICs4Myw5IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIGlu
aXRpYWxpemVRdW90YVVzZXIoTmV0d29ya1Nlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpDbGllbnRP
cmlnaW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCi0gICAgc3RhdGljIHVpbnQ2
NF90IGRpc2tVc2FnZShjb25zdCBTdHJpbmcmIHJvb3RQYXRoLCBjb25zdCBXZWJDb3JlOjpDbGll
bnRPcmlnaW4mKTsKLSAgICB2b2lkIHJlcXVlc3RTcGFjZShjb25zdCBXZWJDb3JlOjpDbGllbnRP
cmlnaW4mLCB1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChX
ZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbik+JiYpOworICAgIHN0YXRpYyBT
dHJpbmcgc3RvcmFnZVBhdGgoY29uc3QgU3RyaW5nJiByb290RGlyZWN0b3J5LCBjb25zdCBXZWJD
b3JlOjpDbGllbnRPcmlnaW4mKTsKKyAgICBzdGF0aWMgdWludDY0X3QgZGlza1VzYWdlKGNvbnN0
IFN0cmluZyYgb3JpZ2luRGlyZWN0b3J5KTsKKyAgICB2b2lkIHJlcXVlc3RTcGFjZShjb25zdCBX
ZWJDb3JlOjpDbGllbnRPcmlnaW4mLCB1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAKICAgICBib29sIHNob3VsZFBlcnNpc3QoKSBjb25z
dCB7IHJldHVybiAhIW1faW9RdWV1ZTt9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcApp
bmRleCAwNGVkZWNlMWM0YmZlOWVhY2FlMDZhNzA3YzVkZGZmZTAwZTgxMzhlLi5jMzBjM2JlN2M1
YzU1M2JmMjMyOGQ5NTFiNzc0NDQ0MTNiMzJkNmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNo
ZXMuY3BwCkBAIC01MjQsMTQgKzUyNCwxMCBAQCB2b2lkIENhY2hlczo6cmVxdWVzdFNwYWNlKHVp
bnQ2NF90IHNwYWNlUmVxdWlyZWQsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDb21wbAogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9lbmdpbmUtPnJlcXVlc3RTcGFjZShtX29yaWdp
biwgc3BhY2VSZXF1aXJlZCwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8gZGVj
aXNpb24pIG11dGFibGUgewotICAgICAgICBzd2l0Y2ggKGRlY2lzaW9uKSB7Ci0gICAgICAgIGNh
c2UgV2ViQ29yZTo6U3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb246OkRlbnk6Ci0gICAgICAg
ICAgICBjYWxsYmFjayhFcnJvcjo6UXVvdGFFeGNlZWRlZCk7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6U3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb246Okdy
YW50OgotICAgICAgICAgICAgY2FsbGJhY2soeyB9KTsKLSAgICAgICAgfTsKKyAgICBtX2VuZ2lu
ZS0+cmVxdWVzdFNwYWNlKG1fb3JpZ2luLCBzcGFjZVJlcXVpcmVkLCBbY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKV0oYm9vbCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCFncmFu
dGVkKQorICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKEVycm9yOjpRdW90YUV4Y2VlZGVkKTsK
KyAgICAgICAgY2FsbGJhY2soeyB9KTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya1Byb2Nlc3NJT1MubW0gYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lPUy5tbQppbmRleCBhODdh
ZDgwNWI1ZGYxNTA3ODNiNTM5MWU4ZTAzZjk4ZTc2NGRmM2Q1Li4yMTk2ZTllNzRkMjQ1MzFjMGRi
NWIzOTQ1YWM2MDhmZTNlOThjNzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lPUy5tbQpAQCAtMTA5LDE5ICsxMDksNiBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRJc0hvbGRpbmdMb2NrZWRGaWxlcyhib29sIGlzSG9sZGlu
Z0xvY2tlZEZpbGVzKQogICAgIC8vIFdlIHN5bmNocm9ub3VzbHkgdGFrZSBhIHByb2Nlc3MgYXNz
ZXJ0aW9uIHdoZW4gYmVnaW5uaW5nIGEgU1FMaXRlIHRyYW5zYWN0aW9uIHNvIHRoYXQgd2UgZG9u
J3QgZ2V0IHN1c3BlbmRlZAogICAgIC8vIHdoaWxlIGhvbGRpbmcgYSBsb2NrZWQgZmlsZS4gV2Ug
d291bGQgZ2V0IGtpbGxlZCBpZiBzdXNwZW5kZWQgd2hpbGUgaG9sZGluZyBsb2NrZWQgZmlsZXMu
CiAgICAgbV9ob2xkaW5nTG9ja2VkRmlsZUFzc2VydGlvbiA9IFByb2Nlc3NBc3NlcnRpb246OmNy
ZWF0ZShnZXRDdXJyZW50UHJvY2Vzc0lEKCksICJOZXR3b3JrIFByb2Nlc3MgaXMgaG9sZGluZyBs
b2NrZWQgZmlsZXMiX3MsIFByb2Nlc3NBc3NlcnRpb25UeXBlOjpGaW5pc2hUYXNrSW50ZXJydXB0
YWJsZSwgUHJvY2Vzc0Fzc2VydGlvbjo6TW9kZTo6U3luYyk7Ci0gICAgbV9ob2xkaW5nTG9ja2Vk
RmlsZUFzc2VydGlvbi0+c2V0UHJlcGFyZUZvckludmFsaWRhdGlvbkhhbmRsZXIoW3RoaXMsIHdl
YWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dKCkgbXV0YWJsZSB7Ci0gICAgICAgIEFTU0VSVChp
c01haW5SdW5Mb29wKCkpOwotICAgICAgICBpZiAoIXdlYWtUaGlzKQotICAgICAgICAgICAgcmV0
dXJuOwotCi0gICAgICAgIGlmICghbV9zaG91bGRTdXNwZW5kSURCU2VydmVycykKLSAgICAgICAg
ICAgIHJldHVybjsKLQotICAgICAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oW10oYXV0byYgc2Vz
c2lvbikgewotICAgICAgICAgICAgaWYgKGF1dG8qIHNlcnZlciA9IHNlc3Npb24ud2ViSURCU2Vy
dmVyKCkpCi0gICAgICAgICAgICAgICAgc2VydmVyLT5zdXNwZW5kKCk7Ci0gICAgICAgIH0pOwot
ICAgIH0pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlQ29u
bmVjdGlvblRvQ2xpZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YWY0YzY0NjQzNmI5NmUxNGU4N2IzY2Uy
YjYxMWRiMDQyODc5MDVmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQuY3BwCkBAIC0wLDAg
KzEsMTkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5oIgorCisjaW5jbHVkZSAiV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiV2ViSURCQ29ubmVjdGlvblRvU2VydmVyTWVzc2Fn
ZXMuaCIKKyNpbmNsdWRlICJXZWJJREJSZXN1bHQuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0lEQlJl
cXVlc3REYXRhLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JREJSZXN1bHREYXRhLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uaD4KKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK0lEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OklEQlN0b3JhZ2VDb25uZWN0
aW9uVG9DbGllbnQoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uLCBXZWJDb3Jl
OjpJREJDb25uZWN0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKQorICAgIDogbV9jb25uZWN0aW9u
KGNvbm5lY3Rpb24pCisgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKKyAgICAsIG1fY29u
bmVjdGlvblRvQ2xpZW50KFdlYkNvcmU6OklEQlNlcnZlcjo6SURCQ29ubmVjdGlvblRvQ2xpZW50
OjpjcmVhdGUoKnRoaXMpKQoreworfQorCitJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50Ojp+
SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudCgpCit7CisgICAgbV9jb25uZWN0aW9uVG9DbGll
bnQtPmNsZWFyRGVsZWdhdGUoKTsKK30KKworV2ViQ29yZTo6SURCU2VydmVyOjpJREJDb25uZWN0
aW9uVG9DbGllbnQmIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmNvbm5lY3Rpb25Ub0Ns
aWVudCgpCit7CisgICAgcmV0dXJuIG1fY29ubmVjdGlvblRvQ2xpZW50OworfQorCit0ZW1wbGF0
ZTxjbGFzcyBNZXNzYWdlVHlwZT4gdm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50Ojpk
aWRHZXRSZXN1bHQoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sK
KyAgICBpZiAocmVzdWx0RGF0YS50eXBlKCkgPT0gV2ViQ29yZTo6SURCUmVzdWx0VHlwZTo6RXJy
b3IpIHsKKyAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwgTWVzc2Fn
ZVR5cGUocmVzdWx0RGF0YSksIDApOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYg
KHJlc3VsdERhdGEudHlwZSgpID09IFdlYkNvcmU6OklEQlJlc3VsdFR5cGU6OkdldEFsbFJlY29y
ZHNTdWNjZXNzICYmIHJlc3VsdERhdGEuZ2V0QWxsUmVzdWx0KCkudHlwZSgpID09IFdlYkNvcmU6
OkluZGV4ZWREQjo6R2V0QWxsVHlwZTo6S2V5cykgeworICAgICAgICBJUEM6OkNvbm5lY3Rpb246
OnNlbmQobV9jb25uZWN0aW9uLCBNZXNzYWdlVHlwZShyZXN1bHREYXRhKSwgMCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGJsb2JGaWxlUGF0aHMgPSByZXN1bHREYXRhLnR5
cGUoKSA9PSBXZWJDb3JlOjpJREJSZXN1bHRUeXBlOjpHZXRBbGxSZWNvcmRzU3VjY2VzcyA/IHJl
c3VsdERhdGEuZ2V0QWxsUmVzdWx0KCkuYWxsQmxvYkZpbGVQYXRocygpIDogcmVzdWx0RGF0YS5n
ZXRSZXN1bHQoKS52YWx1ZSgpLmJsb2JGaWxlUGF0aHMoKTsKKyAgICBpZiAoYmxvYkZpbGVQYXRo
cy5pc0VtcHR5KCkpIHsKKyAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKG1fY29ubmVjdGlv
biwgTWVzc2FnZVR5cGUocmVzdWx0RGF0YSksIDApOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwgTWVzc2FnZVR5cGUocmVz
dWx0RGF0YSksIDApOworfQorCit2b2lkIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRp
ZERlbGV0ZURhdGFiYXNlKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEp
Cit7CisgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwgTWVzc2FnZXM6Oldl
YklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6RGlkRGVsZXRlRGF0YWJhc2UocmVzdWx0RGF0YSksIDAp
OworfQorCit2b2lkIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZE9wZW5EYXRhYmFz
ZShjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIElQQzo6
Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0aW9u
VG9TZXJ2ZXI6OkRpZE9wZW5EYXRhYmFzZShyZXN1bHREYXRhKSwgMCk7Cit9CisKK3ZvaWQgSURC
U3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkU3RhcnRUcmFuc2FjdGlvbihjb25zdCBXZWJD
b3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3Qg
V2ViQ29yZTo6SURCRXJyb3ImIGVycm9yKQoreworICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZCht
X2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZFN0YXJ0
VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZGVudGlmaWVyLCBlcnJvciksIDApOworfQorCit2b2lk
IElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZEFib3J0VHJhbnNhY3Rpb24oY29uc3Qg
V2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNv
bnN0IFdlYkNvcmU6OklEQkVycm9yJiBlcnJvcikKK3sKKyAgICBJUEM6OkNvbm5lY3Rpb246OnNl
bmQobV9jb25uZWN0aW9uLCBNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWRB
Ym9ydFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgZXJyb3IpLCAwKTsKK30KKwor
dm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRDb21taXRUcmFuc2FjdGlvbihj
b25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmll
ciwgY29uc3QgV2ViQ29yZTo6SURCRXJyb3ImIGVycm9yKQoreworICAgIElQQzo6Q29ubmVjdGlv
bjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6
OkRpZENvbW1pdFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgZXJyb3IpLCAwKTsK
K30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRDcmVhdGVPYmplY3RT
dG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIElQ
Qzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0
aW9uVG9TZXJ2ZXI6OkRpZENyZWF0ZU9iamVjdFN0b3JlKHJlc3VsdERhdGEpLCAwKTsKK30KKwor
dm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWREZWxldGVPYmplY3RTdG9yZShj
b25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIElQQzo6Q29u
bmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9T
ZXJ2ZXI6OkRpZERlbGV0ZU9iamVjdFN0b3JlKHJlc3VsdERhdGEpLCAwKTsKK30KKwordm9pZCBJ
REJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRSZW5hbWVPYmplY3RTdG9yZShjb25zdCBX
ZWJDb3JlOjpJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIElQQzo6Q29ubmVjdGlv
bjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6
OkRpZFJlbmFtZU9iamVjdFN0b3JlKHJlc3VsdERhdGEpLCAwKTsKK30KKwordm9pZCBJREJTdG9y
YWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRDbGVhck9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6
OklEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCit7CisgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5k
KG1fY29ubmVjdGlvbiwgTWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6RGlkQ2xl
YXJPYmplY3RTdG9yZShyZXN1bHREYXRhKSwgMCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5l
Y3Rpb25Ub0NsaWVudDo6ZGlkQ3JlYXRlSW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0
YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQobV9jb25uZWN0aW9u
LCBNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWRDcmVhdGVJbmRleChyZXN1
bHREYXRhKSwgMCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlk
RGVsZXRlSW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sK
KyAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQobV9jb25uZWN0aW9uLCBNZXNzYWdlczo6V2ViSURC
Q29ubmVjdGlvblRvU2VydmVyOjpEaWREZWxldGVJbmRleChyZXN1bHREYXRhKSwgMCk7Cit9CisK
K3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkUmVuYW1lSW5kZXgoY29uc3Qg
V2ViQ29yZTo6SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBJUEM6OkNvbm5lY3Rp
b246OnNlbmQobV9jb25uZWN0aW9uLCBNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVy
OjpEaWRSZW5hbWVJbmRleChyZXN1bHREYXRhKSwgMCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNv
bm5lY3Rpb25Ub0NsaWVudDo6ZGlkUHV0T3JBZGQoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0
YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQobV9jb25uZWN0aW9u
LCBNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWRQdXRPckFkZChyZXN1bHRE
YXRhKSwgMCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkR2V0
UmVjb3JkKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCit7CisgICAg
ZGlkR2V0UmVzdWx0PE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZEdldFJl
Y29yZD4ocmVzdWx0RGF0YSk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVu
dDo6ZGlkR2V0QWxsUmVjb3Jkcyhjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJiByZXN1bHRE
YXRhKQoreworICAgIGRpZEdldFJlc3VsdDxNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2Vy
dmVyOjpEaWRHZXRBbGxSZWNvcmRzPihyZXN1bHREYXRhKTsKK30KKwordm9pZCBJREJTdG9yYWdl
Q29ubmVjdGlvblRvQ2xpZW50OjpkaWRHZXRDb3VudChjb25zdCBXZWJDb3JlOjpJREJSZXN1bHRE
YXRhJiByZXN1bHREYXRhKQoreworICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rp
b24sIE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZEdldENvdW50KHJlc3Vs
dERhdGEpLCAwKTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRE
ZWxldGVSZWNvcmQoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sK
KyAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQobV9jb25uZWN0aW9uLCBNZXNzYWdlczo6V2ViSURC
Q29ubmVjdGlvblRvU2VydmVyOjpEaWREZWxldGVSZWNvcmQocmVzdWx0RGF0YSksIDApOworfQor
Cit2b2lkIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZE9wZW5DdXJzb3IoY29uc3Qg
V2ViQ29yZTo6SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBkaWRHZXRSZXN1bHQ8
TWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6RGlkT3BlbkN1cnNvcj4ocmVzdWx0
RGF0YSk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkSXRlcmF0
ZUN1cnNvcihjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAg
IGRpZEdldFJlc3VsdDxNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWRJdGVy
YXRlQ3Vyc29yPihyZXN1bHREYXRhKTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRv
Q2xpZW50OjpkaWRHZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMoY29uc3QgV2ViQ29yZTo6
SURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgVmVjdG9yPFdl
YkNvcmU6OklEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24+JiBkYXRhYmFzZXMpCit7CisgICAgSVBD
OjpDb25uZWN0aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwgTWVzc2FnZXM6OldlYklEQkNvbm5lY3Rp
b25Ub1NlcnZlcjo6RGlkR2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKHJlcXVlc3RJZGVu
dGlmaWVyLCBkYXRhYmFzZXMpLCAwKTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRv
Q2xpZW50OjpmaXJlVmVyc2lvbkNoYW5nZUV2ZW50KFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVl
SURCRGF0YWJhc2VDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpJREJSZXNv
dXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCByZXF1ZXN0ZWRWZXJz
aW9uKQoreworICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2Vz
OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQoY29ubmVj
dGlvbi5pZGVudGlmaWVyKCksIHJlcXVlc3RJZGVudGlmaWVyLCByZXF1ZXN0ZWRWZXJzaW9uKSwg
MCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkQ2xvc2VGcm9t
U2VydmVyKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiBj
b25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpJREJFcnJvciYgZXJyb3IpCit7CisgICAgSVBDOjpD
b25uZWN0aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwgTWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25U
b1NlcnZlcjo6RGlkQ2xvc2VGcm9tU2VydmVyKGNvbm5lY3Rpb24uaWRlbnRpZmllcigpLCBlcnJv
ciksIDApOworfQorCit2b2lkIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6Om5vdGlmeU9w
ZW5EQlJlcXVlc3RCbG9ja2VkKGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYg
cmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IG9sZFZlcnNpb24sIHVpbnQ2NF90IG5ld1ZlcnNp
b24pCit7CisgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwgTWVzc2FnZXM6
OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Tm90aWZ5T3BlbkRCUmVxdWVzdEJsb2NrZWQocmVx
dWVzdElkZW50aWZpZXIsIG9sZFZlcnNpb24sIG5ld1ZlcnNpb24pLCAwKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3N0b3JhZ2UvSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41MGJhMDFiMDIxMjBmMjFkYjYxMzkxZjNhODc0NGQyMmI1ZmY3MGU0Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3Jh
Z2VDb25uZWN0aW9uVG9DbGllbnQuaApAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE2LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlIDxXZWJD
b3JlL0lEQkNvbm5lY3Rpb25Ub0NsaWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSURCQ29ubmVj
dGlvblRvQ2xpZW50RGVsZWdhdGUuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIElE
QlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6SURCU2Vy
dmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnREZWxlZ2F0ZSB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CitwdWJsaWM6CisgICAgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudChJUEM6
OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBXZWJDb3JlOjpJREJDb25uZWN0aW9uSWRlbnRpZmllcik7
CisgICAgfklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQoKTsKKworICAgIFdlYkNvcmU6OklE
QkNvbm5lY3Rpb25JZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X2lkZW50aWZpZXI7IH0KKyAgICBJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGlwY0Nvbm5lY3Rp
b24oKSBjb25zdCB7IHJldHVybiBtX2Nvbm5lY3Rpb247IH0KKyAgICBXZWJDb3JlOjpJREJTZXJ2
ZXI6OklEQkNvbm5lY3Rpb25Ub0NsaWVudCYgY29ubmVjdGlvblRvQ2xpZW50KCk7CisKK3ByaXZh
dGU6CisgICAgdGVtcGxhdGU8Y2xhc3MgTWVzc2FnZVR5cGU+IHZvaWQgZGlkR2V0UmVzdWx0KGNv
bnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKTsKKworICAgIC8vIElEQkNvbm5lY3Rpb25Ub0Ns
aWVudERlbGVnYXRlCisgICAgdm9pZCBkaWREZWxldGVEYXRhYmFzZShjb25zdCBXZWJDb3JlOjpJ
REJSZXN1bHREYXRhJikgZmluYWw7CisgICAgdm9pZCBkaWRPcGVuRGF0YWJhc2UoY29uc3QgV2Vi
Q29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkQWJvcnRUcmFuc2FjdGlv
bihjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRp
ZmllciwgY29uc3QgV2ViQ29yZTo6SURCRXJyb3ImKSBmaW5hbDsKKyAgICB2b2lkIGRpZENvbW1p
dFRyYW5zYWN0aW9uKGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNh
Y3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJREJFcnJvciYpIGZpbmFsOworICAgIHZv
aWQgZGlkU3RhcnRUcmFuc2FjdGlvbihjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZp
ZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCRXJyb3ImKSBmaW5h
bDsKKyAgICB2b2lkIGRpZENyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlc3Vs
dERhdGEmKSBmaW5hbDsKKyAgICB2b2lkIGRpZERlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNv
cmU6OklEQlJlc3VsdERhdGEmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlbmFtZU9iamVjdFN0b3Jl
KGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBmaW5hbDsKKyAgICB2b2lkIGRpZENsZWFy
T2JqZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZv
aWQgZGlkQ3JlYXRlSW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOwor
ICAgIHZvaWQgZGlkRGVsZXRlSW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZp
bmFsOworICAgIHZvaWQgZGlkUmVuYW1lSW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0
YSYpIGZpbmFsOworICAgIHZvaWQgZGlkUHV0T3JBZGQoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0
RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkR2V0UmVjb3JkKGNvbnN0IFdlYkNvcmU6OklEQlJl
c3VsdERhdGEmKSBmaW5hbDsKKyAgICB2b2lkIGRpZEdldEFsbFJlY29yZHMoY29uc3QgV2ViQ29y
ZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkR2V0Q291bnQoY29uc3QgV2Vi
Q29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkRGVsZXRlUmVjb3JkKGNv
bnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBmaW5hbDsKKyAgICB2b2lkIGRpZE9wZW5DdXJz
b3IoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkSXRl
cmF0ZUN1cnNvcihjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJikgZmluYWw7CisgICAgdm9p
ZCBkaWRHZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMoY29uc3QgV2ViQ29yZTo6SURCUmVz
b3VyY2VJZGVudGlmaWVyJiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OklEQkRhdGFiYXNlTmFtZUFu
ZFZlcnNpb24+JikgZmluYWw7CisgICAgdm9pZCBub3RpZnlPcGVuREJSZXF1ZXN0QmxvY2tlZChj
b25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCB1
aW50NjRfdCBvbGRWZXJzaW9uLCB1aW50NjRfdCBuZXdWZXJzaW9uKSBmaW5hbDsKKyAgICB2b2lk
IGZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRh
YmFzZUNvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHJl
cXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCByZXF1ZXN0ZWRWZXJzaW9uKSBmaW5hbDsKKyAgICB2
b2lkIGRpZENsb3NlRnJvbVNlcnZlcihXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFi
YXNlQ29ubmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OklEQkVycm9yJikgZmluYWw7CisKKyAgICBJ
UEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIG1fY29ubmVjdGlvbjsKKyAgICBXZWJDb3JlOjpJREJD
b25uZWN0aW9uSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CisgICAgUmVmPFdlYkNvcmU6OklEQlNl
cnZlcjo6SURCQ29ubmVjdGlvblRvQ2xpZW50PiBtX2Nvbm5lY3Rpb25Ub0NsaWVudDsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlTWFuYWdlci5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2Qw
YmNhODY1NThlNzRjZmE3N2JiZThiYTU5NDcyMGIxMTQ2MDBhNAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlTWFuYWdlci5j
cHAKQEAgLTAsMCArMSwyNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiSURCU3RvcmFnZU1hbmFnZXIuaCIKKworI2luY2x1ZGUgIklEQlN0b3JhZ2VSZWdp
c3RyeS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTWVtb3J5SURCQmFja2luZ1N0b3JlLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9TUUxpdGVGaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TUUxp
dGVJREJCYWNraW5nU3RvcmUuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0YXRpYyB2b2lk
IG1pZ3JhdGVPcmlnaW5EYXRhKGNvbnN0IFN0cmluZyYgb2xkT3JpZ2luRGlyZWN0b3J5LCBjb25z
dCBTdHJpbmcmIG5ld09yaWdpbkRpcmVjdG9yeSkKK3sKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmZp
bGVFeGlzdHMob2xkT3JpZ2luRGlyZWN0b3J5KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0
byBmaWxlTmFtZXMgPSBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KG9sZE9yaWdpbkRpcmVjdG9y
eSk7CisgICAgZm9yIChhdXRvIG5hbWUgOiBmaWxlTmFtZXMpIHsKKyAgICAgICAgU3RyaW5nIGNo
aWxkUGF0aCA9IEZpbGVTeXN0ZW06OmdldFN5bWJvbGljTGlua1RhcmdldChGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQob2xkT3JpZ2luRGlyZWN0b3J5LCBuYW1lKSk7CisgICAg
ICAgIFN0cmluZyBuZXdOYW1lID0gV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0ZUhh
c2hGb3JGaWxlTmFtZShXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
ZGVjb2RlRGF0YWJhc2VOYW1lKG5hbWUpKTsKKyAgICAgICAgYXV0byBuZXdDaGlsZFBhdGggPSBG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobmV3T3JpZ2luRGlyZWN0b3J5LCBu
ZXdOYW1lKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6bW92ZUZpbGUoY2hpbGRQYXRoLCBuZXdDaGls
ZFBhdGgpOworICAgIH0KKworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KG9s
ZE9yaWdpbkRpcmVjdG9yeSk7Cit9CisKK1N0cmluZyBJREJTdG9yYWdlTWFuYWdlcjo6aWRiU3Rv
cmFnZU9yaWdpbkRpcmVjdG9yeShjb25zdCBTdHJpbmcmIHJvb3REaXJlY3RvcnksIGNvbnN0IFdl
YkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luKQoreworICAgIGlmIChyb290RGlyZWN0b3J5Lmlz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisKKyAgICBTdHJpbmcgb3Jp
Z2luRGlyZWN0b3J5ID0gV2ViQ29yZTo6SURCRGF0YWJhc2VJZGVudGlmaWVyOjpkYXRhYmFzZURp
cmVjdG9yeVJlbGF0aXZlVG9Sb290KG9yaWdpbi50b3BPcmlnaW4sIG9yaWdpbi5jbGllbnRPcmln
aW4sIHJvb3REaXJlY3RvcnksICJ2MSIpOworICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3Rv
cmllcyhvcmlnaW5EaXJlY3RvcnkpOworCisgICAgU3RyaW5nIG9sZE9yaWdpbkRpcmVjdG9yeSA9
IFdlYkNvcmU6OklEQkRhdGFiYXNlSWRlbnRpZmllcjo6ZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2
ZVRvUm9vdChvcmlnaW4udG9wT3JpZ2luLCBvcmlnaW4uY2xpZW50T3JpZ2luLCByb290RGlyZWN0
b3J5LCAidjAiKTsKKyAgICBtaWdyYXRlT3JpZ2luRGF0YShvbGRPcmlnaW5EaXJlY3RvcnksIG9y
aWdpbkRpcmVjdG9yeSk7CisKKyAgICByZXR1cm4gb3JpZ2luRGlyZWN0b3J5OworfQorCit1aW50
NjRfdCBJREJTdG9yYWdlTWFuYWdlcjo6aWRiU3RvcmFnZVNpemUoY29uc3QgU3RyaW5nJiBvcmln
aW5EaXJlY3RvcnkpCit7CisgICAgaWYgKG9yaWdpbkRpcmVjdG9yeS5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURC
QmFja2luZ1N0b3JlOjpkYXRhYmFzZXNTaXplRm9yRGlyZWN0b3J5KG9yaWdpbkRpcmVjdG9yeSk7
Cit9CisKK3N0YXRpYyB2b2lkIGdldE9yaWdpbnNGb3JWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVy
c2lvblBhdGgsIEhhc2hTZXQ8V2ViQ29yZTo6Q2xpZW50T3JpZ2luPiYgb3JpZ2lucykKK3sKKyAg
ICBmb3IgKGF1dG8mIHRvcERhdGFiYXNlSWRlbnRpZmllciA6IEZpbGVTeXN0ZW06Omxpc3REaXJl
Y3RvcnkodmVyc2lvblBhdGgpKSB7CisgICAgICAgIGF1dG8gdG9wT3JpZ2luID0gV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKHRvcERhdGFiYXNlSWRl
bnRpZmllcik7CisgICAgICAgIGlmICghdG9wT3JpZ2luKQorICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgZm9yIChhdXRvJiBkYXRhYmFzZUlkZW50aWZpZXIgOiBGaWxlU3lzdGVtOjps
aXN0RGlyZWN0b3J5KEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh2ZXJzaW9u
UGF0aCwgdG9wRGF0YWJhc2VJZGVudGlmaWVyKSkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIGNs
aWVudE9yaWdpbiA9IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNlSWRl
bnRpZmllcihkYXRhYmFzZUlkZW50aWZpZXIpKQorICAgICAgICAgICAgICAgIG9yaWdpbnMuYWRk
KFdlYkNvcmU6OkNsaWVudE9yaWdpbiB7ICp0b3BPcmlnaW4sICpjbGllbnRPcmlnaW4gfSk7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgb3JpZ2lucy5hZGQoV2ViQ29yZTo6Q2xp
ZW50T3JpZ2luIHsgKnRvcE9yaWdpbiwgKnRvcE9yaWdpbiB9KTsKKyAgICAgICAgfQorICAgIH0K
K30KKworSGFzaFNldDxXZWJDb3JlOjpDbGllbnRPcmlnaW4+IElEQlN0b3JhZ2VNYW5hZ2VyOjpv
cmlnaW5zT2ZJREJTdG9yYWdlRGF0YShjb25zdCBTdHJpbmcmIHJvb3REaXJlY3RvcnkpCit7Cisg
ICAgSGFzaFNldDxXZWJDb3JlOjpDbGllbnRPcmlnaW4+IG9yaWdpbnM7CisgICAgaWYgKHJvb3RE
aXJlY3RvcnkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gb3JpZ2luczsKKworICAgIGdldE9y
aWdpbnNGb3JWZXJzaW9uKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyb290
RGlyZWN0b3J5LCAidjAiKSwgb3JpZ2lucyk7CisgICAgZ2V0T3JpZ2luc0ZvclZlcnNpb24oRmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJvb3REaXJlY3RvcnksICJ2MSIpLCBv
cmlnaW5zKTsKKyAgICByZXR1cm4gb3JpZ2luczsKK30KKworSURCU3RvcmFnZU1hbmFnZXI6OklE
QlN0b3JhZ2VNYW5hZ2VyKGNvbnN0IFN0cmluZyYgcGF0aCwgSURCU3RvcmFnZVJlZ2lzdHJ5JiBy
ZWdpc3RyeSwgUXVvdGFDaGVja0Z1bmN0aW9uJiYgcXVvdGFDaGVja0Z1bmN0aW9uKQorICAgIDog
bV9wYXRoKHBhdGgpCisgICAgLCBtX3JlZ2lzdHJ5KHJlZ2lzdHJ5KQorICAgICwgbV9xdW90YUNo
ZWNrRnVuY3Rpb24oV1RGTW92ZShxdW90YUNoZWNrRnVuY3Rpb24pKQoreworfQorCitib29sIElE
QlN0b3JhZ2VNYW5hZ2VyOjppc0FjdGl2ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFtX2RhdGFi
YXNlcy5pc0VtcHR5KCk7Cit9CisKK2Jvb2wgSURCU3RvcmFnZU1hbmFnZXI6Omhhc0RhdGFJbk1l
bW9yeSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdURjo6YW55T2YobV9kYXRhYmFzZXMudmFsdWVz
KCksIFsmXSAoYXV0byYgZGF0YWJhc2UpIHsKKyAgICAgICAgcmV0dXJuIGRhdGFiYXNlLT5oYXNE
YXRhSW5NZW1vcnkoKTsKKyAgICB9KTsKK30KKwordm9pZCBJREJTdG9yYWdlTWFuYWdlcjo6Y2xv
c2VEYXRhYmFzZXNGb3JEZWxldGlvbigpCit7CisgICAgZm9yIChhdXRvJiBkYXRhYmFzZSA6IG1f
ZGF0YWJhc2VzLnZhbHVlcygpKQorICAgICAgICBkYXRhYmFzZS0+aW1tZWRpYXRlQ2xvc2UoKTsK
KworICAgIG1fZGF0YWJhc2VzLmNsZWFyKCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZU1hbmFnZXI6
OnN0b3BEYXRhYmFzZUFjdGl2aXRpZXNGb3JTdXNwZW5kKCkKK3sKKyAgICBpZiAobV9wYXRoLmlz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChhdXRvJiBkYXRhYmFzZSA6IG1f
ZGF0YWJhc2VzLnZhbHVlcygpKSB7CisgICAgICAgIC8vIE9ubHkgc3RvcCBkYXRhYmFzZXMgd2l0
aCBub24tZXBoZW1lcmFsIGJhY2tpbmcgc3RvcmUgdGhhdCBjYW4gaG9sZCBkYXRhYmFzZSBmaWxl
IGxvY2suCisgICAgICAgIGlmICghZGF0YWJhc2UtPmlkZW50aWZpZXIoKS5pc1RyYW5zaWVudCgp
KQorICAgICAgICAgICAgZGF0YWJhc2UtPmFib3J0SW5Qcm9ncmVzc1RyYW5zYWN0aW9ucygpOwor
ICAgIH0KK30KKworV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZSYgSURCU3Rv
cmFnZU1hbmFnZXI6OmdldE9yQ3JlYXRlVW5pcXVlSURCRGF0YWJhc2UoY29uc3QgV2ViQ29yZTo6
SURCRGF0YWJhc2VJZGVudGlmaWVyJiBpZGVudGlmaWVyKQoreworICAgIGF1dG8gYWRkUmVzdWx0
ID0gbV9kYXRhYmFzZXMuYWRkKGlkZW50aWZpZXIsIG51bGxwdHIpOworICAgIGlmIChhZGRSZXN1
bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VV
bmlxdWU8V2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZT4oKnRoaXMsIGlkZW50
aWZpZXIpOworCisgICAgcmV0dXJuICphZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOworfQorCit2
b2lkIElEQlN0b3JhZ2VNYW5hZ2VyOjpvcGVuRGF0YWJhc2UoV2ViQ29yZTo6SURCU2VydmVyOjpJ
REJDb25uZWN0aW9uVG9DbGllbnQmIGNvbm5lY3Rpb25Ub0NsaWVudCwgY29uc3QgV2ViQ29yZTo6
SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhKQoreworICAgIGF1dG8mIGRhdGFiYXNlID0gZ2V0
T3JDcmVhdGVVbmlxdWVJREJEYXRhYmFzZShyZXF1ZXN0RGF0YS5kYXRhYmFzZUlkZW50aWZpZXIo
KSk7CisgICAgZGF0YWJhc2Uub3BlbkRhdGFiYXNlQ29ubmVjdGlvbihjb25uZWN0aW9uVG9DbGll
bnQsIHJlcXVlc3REYXRhKTsKK30KKwordm9pZCBJREJTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlRGF0
YWJhc2UoV2ViQ29yZTo6SURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnQmIGNvbm5lY3Rp
b25Ub0NsaWVudCwgY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhKQor
eworICAgIGF1dG8mIGRhdGFiYXNlID0gZ2V0T3JDcmVhdGVVbmlxdWVJREJEYXRhYmFzZShyZXF1
ZXN0RGF0YS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAgZGF0YWJhc2UuaGFuZGxlRGVsZXRl
KGNvbm5lY3Rpb25Ub0NsaWVudCwgcmVxdWVzdERhdGEpOworCisgICAgLy8gVGhpcyBkYXRhYmFz
ZSBpcyBjcmVhdGVkIGZvciBkZWxldGlvbi4KKyAgICBpZiAoZGF0YWJhc2UudHJ5Q2xvc2UoKSkK
KyAgICAgICAgbV9kYXRhYmFzZXMucmVtb3ZlKGRhdGFiYXNlLmlkZW50aWZpZXIoKSk7Cit9CisK
K1ZlY3RvcjxXZWJDb3JlOjpJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiBJREJTdG9yYWdlTWFu
YWdlcjo6Z2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKCkKK3sKKyAgICBWZWN0b3I8V2Vi
Q29yZTo6SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbj4gcmVzdWx0OworICAgIEhhc2hTZXQ8U3Ry
aW5nPiB2aXNpdGVkRGF0YWJhc2VQYXRoczsKKyAgICBmb3IgKGF1dG8mIGRhdGFiYXNlIDogbV9k
YXRhYmFzZXMudmFsdWVzKCkpIHsKKyAgICAgICAgYXV0byBwYXRoID0gZGF0YWJhc2UtPmZpbGVQ
YXRoKCk7CisgICAgICAgIGlmICghcGF0aC5pc0VtcHR5KCkpCisgICAgICAgICAgICB2aXNpdGVk
RGF0YWJhc2VQYXRocy5hZGQocGF0aCk7CisKKyAgICAgICAgaWYgKGF1dG8gbmFtZUFuZFZlcnNp
b24gPSBkYXRhYmFzZS0+bmFtZUFuZFZlcnNpb24oKSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmQoV1RGTW92ZSgqbmFtZUFuZFZlcnNpb24pKTsKKyAgICB9CisKKyAgICBhdXRvIGRhdGFiYXNl
SWRlbnRpZmllcnMgPSBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KG1fcGF0aCk7CisgICAgZm9y
IChhdXRvIGlkZW50aWZpZXIgOiBkYXRhYmFzZUlkZW50aWZpZXJzKSB7CisgICAgICAgIGF1dG8g
ZGF0YWJhc2VEaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
bV9wYXRoLCBpZGVudGlmaWVyKTsKKyAgICAgICAgYXV0byBkYXRhYmFzZVBhdGggPSBXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZnVsbERhdGFiYXNlUGF0aEZvckRp
cmVjdG9yeShkYXRhYmFzZURpcmVjdG9yeSk7CisgICAgICAgIGlmICh2aXNpdGVkRGF0YWJhc2VQ
YXRocy5jb250YWlucyhkYXRhYmFzZVBhdGgpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAg
ICAgICAgaWYgKGF1dG8gbmFtZUFuZFZlcnNpb24gPSBXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0
ZUlEQkJhY2tpbmdTdG9yZTo6ZGF0YWJhc2VOYW1lQW5kVmVyc2lvbkZyb21GaWxlKGRhdGFiYXNl
UGF0aCkpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKFdURk1vdmUoKm5hbWVBbmRWZXJzaW9u
KSk7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBJREJTdG9yYWdlTWFu
YWdlcjo6b3BlbkRCUmVxdWVzdENhbmNlbGxlZChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0
YSYgcmVxdWVzdERhdGEpCit7CisgICAgYXV0byogZGF0YWJhc2UgPSBtX2RhdGFiYXNlcy5nZXQo
cmVxdWVzdERhdGEuZGF0YWJhc2VJZGVudGlmaWVyKCkpOworICAgIGlmICghZGF0YWJhc2UpCisg
ICAgICAgIHJldHVybjsKKworICAgIGRhdGFiYXNlLT5vcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKHJl
cXVlc3REYXRhLnJlcXVlc3RJZGVudGlmaWVyKCkpOworCisgICAgLy8gRGF0YWJhc2UgYmVjb21l
cyBpZGxlIGFmdGVyIHJlcXVlc3QgaXMgY2FuY2VsbGVkLgorICAgIGlmIChkYXRhYmFzZS0+dHJ5
Q2xvc2UoKSkKKyAgICAgICAgbV9kYXRhYmFzZXMucmVtb3ZlKGRhdGFiYXNlLT5pZGVudGlmaWVy
KCkpOworfQorCit2b2lkIElEQlN0b3JhZ2VNYW5hZ2VyOjpyZWdpc3RlckNvbm5lY3Rpb24oV2Vi
Q29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mIGNvbm5lY3Rpb24p
Cit7CisgICAgbV9yZWdpc3RyeS5yZWdpc3RlckNvbm5lY3Rpb24oY29ubmVjdGlvbik7Cit9CisK
K3ZvaWQgSURCU3RvcmFnZU1hbmFnZXI6OnVucmVnaXN0ZXJDb25uZWN0aW9uKFdlYkNvcmU6OklE
QlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiBjb25uZWN0aW9uKQoreworICAg
IG1fcmVnaXN0cnkudW5yZWdpc3RlckNvbm5lY3Rpb24oY29ubmVjdGlvbik7Cit9CisKK3ZvaWQg
SURCU3RvcmFnZU1hbmFnZXI6OnJlZ2lzdGVyVHJhbnNhY3Rpb24oV2ViQ29yZTo6SURCU2VydmVy
OjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKK3sKKyAgICBtX3Jl
Z2lzdHJ5LnJlZ2lzdGVyVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pOworfQorCit2b2lkIElEQlN0
b3JhZ2VNYW5hZ2VyOjp1bnJlZ2lzdGVyVHJhbnNhY3Rpb24oV2ViQ29yZTo6SURCU2VydmVyOjpV
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKK3sKKyAgICBtX3JlZ2lz
dHJ5LnVucmVnaXN0ZXJUcmFuc2FjdGlvbih0cmFuc2FjdGlvbik7Cit9CisKK3N0ZDo6dW5pcXVl
X3B0cjxXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQkJhY2tpbmdTdG9yZT4gSURCU3RvcmFnZU1hbmFn
ZXI6OmNyZWF0ZUJhY2tpbmdTdG9yZShjb25zdCBXZWJDb3JlOjpJREJEYXRhYmFzZUlkZW50aWZp
ZXImIGlkZW50aWZpZXIpCit7CisgICAgaWYgKG1fcGF0aC5pc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5SURCQmFja2luZ1N0b3Jl
PihpZGVudGlmaWVyKTsKKworICAgIGlmIChpZGVudGlmaWVyLmlzVHJhbnNpZW50KCkpCisgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5SURCQmFja2lu
Z1N0b3JlPihpZGVudGlmaWVyKTsKKworICAgIGF1dG8gbmFtZSA9IFdlYkNvcmU6OlNRTGl0ZUZp
bGVTeXN0ZW06OmNvbXB1dGVIYXNoRm9yRmlsZU5hbWUoaWRlbnRpZmllci5kYXRhYmFzZU5hbWUo
KSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJC
YWNraW5nU3RvcmU+KGlkZW50aWZpZXIsIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChtX3BhdGgsIG5hbWUpKTsKK30KKwordm9pZCBJREJTdG9yYWdlTWFuYWdlcjo6cmVxdWVz
dFNwYWNlKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIHVpbnQ2NF90IHNpemUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgbV9x
dW90YUNoZWNrRnVuY3Rpb24oc2l6ZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VNYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWRmYThl
MDg3MmIzMTRjNTEzODVkMWRlNzU1YjE5M2VkOGNkYWUzNgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlTWFuYWdlci5oCkBA
IC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPFdl
YkNvcmUvVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
K25hbWVzcGFjZSBJREJTZXJ2ZXIgeworY2xhc3MgSURCQmFja2luZ1N0b3JlOworY2xhc3MgSURC
Q29ubmVjdGlvblRvQ2xpZW50OworY2xhc3MgVW5pcXVlSURCRGF0YWJhc2U7CitjbGFzcyBVbmlx
dWVJREJUcmFuc2FjdGlvbjsKK30KKworc3RydWN0IElEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb247
Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBJREJTdG9yYWdlUmVnaXN0cnk7CisK
K2NsYXNzIElEQlN0b3JhZ2VNYW5hZ2VyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OklEQlNlcnZl
cjo6VW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgU3RyaW5n
IGlkYlN0b3JhZ2VPcmlnaW5EaXJlY3RvcnkoY29uc3QgU3RyaW5nJiByb290RGlyZWN0b3J5LCBj
b25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKKyAgICBzdGF0aWMgdWludDY0X3QgaWRiU3Rv
cmFnZVNpemUoY29uc3QgU3RyaW5nJiBvcmlnaW5EaXJlY3RvcnkpOworICAgIHN0YXRpYyBIYXNo
U2V0PFdlYkNvcmU6OkNsaWVudE9yaWdpbj4gb3JpZ2luc09mSURCU3RvcmFnZURhdGEoY29uc3Qg
U3RyaW5nJiByb290RGlyZWN0b3J5KTsKKworICAgIHVzaW5nIFF1b3RhQ2hlY2tGdW5jdGlvbiA9
IEZ1bmN0aW9uPHZvaWQodWludDY0X3Qgc3BhY2VSZXF1ZXN0ZWQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYpPjsKKyAgICBJREJTdG9yYWdlTWFuYWdlcihjb25zdCBTdHJpbmcmIHBh
dGgsIElEQlN0b3JhZ2VSZWdpc3RyeSYsIFF1b3RhQ2hlY2tGdW5jdGlvbiYmKTsKKyAgICB+SURC
U3RvcmFnZU1hbmFnZXIoKSBmaW5hbCB7IH0KKyAgICBib29sIGlzQWN0aXZlKCkgY29uc3Q7Cisg
ICAgYm9vbCBoYXNEYXRhSW5NZW1vcnkoKSBjb25zdDsKKyAgICB2b2lkIGNsb3NlRGF0YWJhc2Vz
Rm9yRGVsZXRpb24oKTsKKyAgICB2b2lkIHN0b3BEYXRhYmFzZUFjdGl2aXRpZXNGb3JTdXNwZW5k
KCk7CisKKyAgICB2b2lkIG9wZW5EYXRhYmFzZShXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQkNvbm5l
Y3Rpb25Ub0NsaWVudCYsIGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJik7CisgICAgdm9p
ZCBvcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJik7
CisgICAgdm9pZCBkZWxldGVEYXRhYmFzZShXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQkNvbm5lY3Rp
b25Ub0NsaWVudCYsIGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJik7CisgICAgVmVjdG9y
PFdlYkNvcmU6OklEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24+IGdldEFsbERhdGFiYXNlTmFtZXNB
bmRWZXJzaW9ucygpOworCitwcml2YXRlOgorICAgIFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVl
SURCRGF0YWJhc2UmIGdldE9yQ3JlYXRlVW5pcXVlSURCRGF0YWJhc2UoY29uc3QgV2ViQ29yZTo6
SURCRGF0YWJhc2VJZGVudGlmaWVyJik7CisKKyAgICAvLyBXZWJDb3JlOjpVbmlxdWVJREJEYXRh
YmFzZU1hbmFnZXIKKyAgICB2b2lkIHJlZ2lzdGVyQ29ubmVjdGlvbihXZWJDb3JlOjpJREJTZXJ2
ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYpIGZpbmFsOworICAgIHZvaWQgdW5yZWdp
c3RlckNvbm5lY3Rpb24oV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5l
Y3Rpb24mKSBmaW5hbDsKKyAgICB2b2lkIHJlZ2lzdGVyVHJhbnNhY3Rpb24oV2ViQ29yZTo6SURC
U2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJikgZmluYWw7CisgICAgdm9pZCB1
bnJlZ2lzdGVyVHJhbnNhY3Rpb24oV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFz
ZVRyYW5zYWN0aW9uJikgZmluYWw7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklEQlNl
cnZlcjo6SURCQmFja2luZ1N0b3JlPiBjcmVhdGVCYWNraW5nU3RvcmUoY29uc3QgV2ViQ29yZTo6
SURCRGF0YWJhc2VJZGVudGlmaWVyJikgZmluYWw7CisgICAgdm9pZCByZXF1ZXN0U3BhY2UoY29u
c3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgdWludDY0X3Qgc2l6ZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJikgZmluYWw7CisKKyAgICBTdHJpbmcgbV9wYXRoOworICAgIElEQlN0
b3JhZ2VSZWdpc3RyeSYgbV9yZWdpc3RyeTsKKyAgICBRdW90YUNoZWNrRnVuY3Rpb24gbV9xdW90
YUNoZWNrRnVuY3Rpb247CisgICAgSGFzaE1hcDxXZWJDb3JlOjpJREJEYXRhYmFzZUlkZW50aWZp
ZXIsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNl
Pj4gbV9kYXRhYmFzZXM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlUmVnaXN0cnku
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VSZWdp
c3RyeS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMTAyMTdjZTFjNWM2YmI4MjQ4ZWJmOWVmOWM3NDA1ZGViNTY1
Y2EwNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3Rv
cmFnZS9JREJTdG9yYWdlUmVnaXN0cnkuY3BwCkBAIC0wLDAgKzEsMTAxIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIklEQlN0b3JhZ2VSZWdpc3RyeS5oIgor
CisjaW5jbHVkZSAiSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5oIgorI2luY2x1ZGUgPFdl
YkNvcmUvVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9V
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitJ
REJTdG9yYWdlUmVnaXN0cnk6OklEQlN0b3JhZ2VSZWdpc3RyeSgpID0gZGVmYXVsdDsKKworV2Vi
Q29yZTo6SURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnQmIElEQlN0b3JhZ2VSZWdpc3Ry
eTo6Z2V0T3JDcmVhdGVDb25uZWN0aW9uVG9DbGllbnQoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJ
RCBjb25uZWN0aW9uLCBXZWJDb3JlOjpJREJDb25uZWN0aW9uSWRlbnRpZmllciBpZGVudGlmaWVy
KQoreworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9jb25uZWN0aW9uc1RvQ2xpZW50LmFkZChpZGVu
dGlmaWVyLCBudWxscHRyKTsKKyAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAg
IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPElEQlN0b3JhZ2VDb25uZWN0
aW9uVG9DbGllbnQ+KGNvbm5lY3Rpb24sIGlkZW50aWZpZXIpOworCisgICAgQVNTRVJUKGFkZFJl
c3VsdC5pdGVyYXRvci0+dmFsdWUtPmlwY0Nvbm5lY3Rpb24oKSA9PSBjb25uZWN0aW9uKTsKKyAg
ICByZXR1cm4gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+Y29ubmVjdGlvblRvQ2xpZW50KCk7
Cit9CisKK3ZvaWQgSURCU3RvcmFnZVJlZ2lzdHJ5OjpyZW1vdmVDb25uZWN0aW9uVG9DbGllbnQo
SVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uKQoreworICAgIGF1dG8gYWxsQ29u
bmVjdGlvbnNUb0NsaWVudCA9IHN0ZDo6ZXhjaGFuZ2UobV9jb25uZWN0aW9uc1RvQ2xpZW50LCB7
IH0pOworICAgIGZvciAoYXV0byYgW2lkZW50aWZpZXIsIGNvbm5lY3Rpb25Ub0NsaWVudF0gOiBh
bGxDb25uZWN0aW9uc1RvQ2xpZW50KSB7CisgICAgICAgIGlmIChjb25uZWN0aW9uVG9DbGllbnQt
PmlwY0Nvbm5lY3Rpb24oKSAhPSBjb25uZWN0aW9uKSB7CisgICAgICAgICAgICBtX2Nvbm5lY3Rp
b25zVG9DbGllbnQuYWRkKGlkZW50aWZpZXIsIFdURk1vdmUoY29ubmVjdGlvblRvQ2xpZW50KSk7
CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBjb25uZWN0aW9uVG9D
bGllbnQtPmNvbm5lY3Rpb25Ub0NsaWVudCgpLmNvbm5lY3Rpb25Ub0NsaWVudENsb3NlZCgpOwor
ICAgIH0KK30KKwordm9pZCBJREJTdG9yYWdlUmVnaXN0cnk6OnJlZ2lzdGVyQ29ubmVjdGlvbihX
ZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYgY29ubmVjdGlv
bikKK3sKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBjb25uZWN0aW9uLmlkZW50aWZpZXIoKTsKKyAg
ICBBU1NFUlQoIW1fY29ubmVjdGlvbnMuY29udGFpbnMoaWRlbnRpZmllcikpOworCisgICAgbV9j
b25uZWN0aW9ucy5hZGQoaWRlbnRpZmllciwgY29ubmVjdGlvbik7Cit9CisKK3ZvaWQgSURCU3Rv
cmFnZVJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQ29ubmVjdGlvbihXZWJDb3JlOjpJREJTZXJ2ZXI6OlVu
aXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYgY29ubmVjdGlvbikKK3sKKyAgICBhdXRvIGlkZW50
aWZpZXIgPSBjb25uZWN0aW9uLmlkZW50aWZpZXIoKTsKKyAgICBBU1NFUlQobV9jb25uZWN0aW9u
cy5jb250YWlucyhpZGVudGlmaWVyKSk7CisKKyAgICBtX2Nvbm5lY3Rpb25zLnJlbW92ZShpZGVu
dGlmaWVyKTsKK30KKwordm9pZCBJREJTdG9yYWdlUmVnaXN0cnk6OnJlZ2lzdGVyVHJhbnNhY3Rp
b24oV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFu
c2FjdGlvbikKK3sKKyAgICBhdXRvIGlkZW50aWZpZXIgPSB0cmFuc2FjdGlvbi5pbmZvKCkuaWRl
bnRpZmllcigpOworICAgIEFTU0VSVCghbV90cmFuc2FjdGlvbnMuY29udGFpbnMoaWRlbnRpZmll
cikpOworCisgICAgbV90cmFuc2FjdGlvbnMuYWRkKGlkZW50aWZpZXIsIHRyYW5zYWN0aW9uKTsK
K30KKwordm9pZCBJREJTdG9yYWdlUmVnaXN0cnk6OnVucmVnaXN0ZXJUcmFuc2FjdGlvbihXZWJD
b3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9u
KQoreworICAgIGF1dG8gaWRlbnRpZmllciA9IHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVy
KCk7CisgICAgQVNTRVJUKG1fdHJhbnNhY3Rpb25zLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKKwor
ICAgIG1fdHJhbnNhY3Rpb25zLnJlbW92ZShpZGVudGlmaWVyKTsKK30KKworV2ViQ29yZTo6SURC
U2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24qIElEQlN0b3JhZ2VSZWdpc3RyeTo6
Z2V0Q29ubmVjdGlvbih1aW50NjRfdCBpZGVudGlmaWVyKQoreworICAgIHJldHVybiBtX2Nvbm5l
Y3Rpb25zLmdldChpZGVudGlmaWVyKS5nZXQoKTsKK30KKworV2ViQ29yZTo6SURCU2VydmVyOjpV
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uKiBJREJTdG9yYWdlUmVnaXN0cnk6OmdldFRyYW5z
YWN0aW9uKFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAg
IHJldHVybiBtX3RyYW5zYWN0aW9ucy5nZXQoaWRlbnRpZmllcikuZ2V0KCk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9zdG9yYWdlL0lEQlN0b3JhZ2VSZWdpc3RyeS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VSZWdpc3RyeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQyMzRlMGU0MWEx
ZmM1ZjNiYjk5MWFkYmQyZTA2MDJjMzhlOTQ1ODQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZVJlZ2lzdHJ5LmgKQEAgLTAs
MCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ29ubmVj
dGlvbi5oIgorI2luY2x1ZGUgPFdlYkNvcmUvSURCUmVzb3VyY2VJZGVudGlmaWVyLmg+CisjaW5j
bHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIElE
QlNlcnZlciB7CitjbGFzcyBVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb247CitjbGFzcyBVbmlx
dWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOworfQorfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
Y2xhc3MgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDsKKworY2xhc3MgSURCU3RvcmFnZVJl
Z2lzdHJ5IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBJREJT
dG9yYWdlUmVnaXN0cnkoKTsKKyAgICBXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQkNvbm5lY3Rpb25U
b0NsaWVudCYgZ2V0T3JDcmVhdGVDb25uZWN0aW9uVG9DbGllbnQoSVBDOjpDb25uZWN0aW9uOjpV
bmlxdWVJRCwgV2ViQ29yZTo6SURCQ29ubmVjdGlvbklkZW50aWZpZXIpOworICAgIHZvaWQgcmVt
b3ZlQ29ubmVjdGlvblRvQ2xpZW50KElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQpOworICAgIHZv
aWQgcmVnaXN0ZXJDb25uZWN0aW9uKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJh
c2VDb25uZWN0aW9uJik7CisgICAgdm9pZCB1bnJlZ2lzdGVyQ29ubmVjdGlvbihXZWJDb3JlOjpJ
REJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYpOworICAgIFdlYkNvcmU6OklE
QlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uKiBnZXRDb25uZWN0aW9uKHVpbnQ2
NF90IGlkZW50aWZpZXIpOworICAgIHZvaWQgcmVnaXN0ZXJUcmFuc2FjdGlvbihXZWJDb3JlOjpJ
REJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mKTsKKyAgICB2b2lkIHVucmVn
aXN0ZXJUcmFuc2FjdGlvbihXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlVHJh
bnNhY3Rpb24mKTsKKyAgICBXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlVHJh
bnNhY3Rpb24qIGdldFRyYW5zYWN0aW9uKFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllcik7
CisKK3ByaXZhdGU6CisgICAgSGFzaE1hcDxXZWJDb3JlOjpJREJDb25uZWN0aW9uSWRlbnRpZmll
ciwgc3RkOjp1bmlxdWVfcHRyPElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ+PiBtX2Nvbm5l
Y3Rpb25zVG9DbGllbnQ7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgV2Vha1B0cjxXZWJDb3JlOjpJ
REJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbj4+IG1fY29ubmVjdGlvbnM7Cisg
ICAgSGFzaE1hcDxXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXIsIFdlYWtQdHI8V2ViQ29y
ZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uPj4gbV90cmFuc2FjdGlv
bnM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5j
cHAKaW5kZXggODEzZTZlOTVhMTNhYmUzOTE4NmQxOWIyZGFiMjg3YmJiNTUyNGY3OS4uNjM1NWY3
MWI4NmI2NTIyYmVlNjQ5NDliZWM1MjcwYTM1M2ZkMGIxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFu
YWdlci5jcHAKQEAgLTI2LDE4ICsyNiwyNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIk5ldHdvcmtTdG9yYWdlTWFuYWdlci5oIgogCisjaW5jbHVkZSAiQ2FjaGVTdG9yYWdlRW5n
aW5lLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeS5oIgogI2lu
Y2x1ZGUgIkZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlci5oIgorI2luY2x1ZGUgIklEQlN0b3JhZ2VD
b25uZWN0aW9uVG9DbGllbnQuaCIKKyNpbmNsdWRlICJJREJTdG9yYWdlTWFuYWdlci5oIgorI2lu
Y2x1ZGUgIklEQlN0b3JhZ2VSZWdpc3RyeS5oIgogI2luY2x1ZGUgIkxvY2FsU3RvcmFnZU1hbmFn
ZXIuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94
eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VNYW5hZ2VyTWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJPcmlnaW5TdG9yYWdlTWFuYWdlci5oIgorI2luY2x1ZGUgIlF1b3RhTWFuYWdl
ci5oIgogI2luY2x1ZGUgIlNlc3Npb25TdG9yYWdlTWFuYWdlci5oIgogI2luY2x1ZGUgIlN0b3Jh
Z2VBcmVhQmFzZS5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhTWFwTWVzc2FnZXMuaCIKICNpbmNs
dWRlICJTdG9yYWdlQXJlYVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFUeXBlLmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1VuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVW5p
cXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5oPgogI2luY2x1ZGUgPHBhbC9jcnlwdG8vQ3J5cHRv
RGlnZXN0Lmg+CiAjaW5jbHVkZSA8d3RmL1Njb3BlLmg+CiAjaW5jbHVkZSA8d3RmL1N1c3BlbmRh
YmxlV29ya1F1ZXVlLmg+CkBAIC0xMDAsMjIgKzEwOCwyOCBAQCBzdGF0aWMgdm9pZCBkZWxldGVP
cmlnaW5GaWxlSWZOZWNlc3NhcnkoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKICAgICAgICAgRmls
ZVN5c3RlbTo6ZGVsZXRlRmlsZShmaWxlUGF0aCk7CiB9CiAKLVJlZjxOZXR3b3JrU3RvcmFnZU1h
bmFnZXI+IE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGN1c3RvbUxvY2FsU3RvcmFn
ZVBhdGgpCitSZWY8TmV0d29ya1N0b3JhZ2VNYW5hZ2VyPiBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6
OmNyZWF0ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIElQQzo6Q29ubmVjdGlvbjo6VW5pcXVl
SUQgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGN1c3RvbUxv
Y2FsU3RvcmFnZVBhdGgsIGNvbnN0IFN0cmluZyYgY3VzdG9tSURCU3RvcmFnZVBhdGgsIGNvbnN0
IFN0cmluZyYgY3VzdG9tQ2FjaGVTdG9yYWdlUGF0aCwgdWludDY0X3QgZGVmYXVsdE9yaWdpblF1
b3RhLCB1aW50NjRfdCBkZWZhdWx0VGhpcmRQYXJ0eU9yaWdpblF1b3RhKQogewotICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IE5ldHdvcmtTdG9yYWdlTWFuYWdlcihzZXNzaW9uSUQsIHBhdGgsIGN1
c3RvbUxvY2FsU3RvcmFnZVBhdGgpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXR3b3Jr
U3RvcmFnZU1hbmFnZXIoc2Vzc2lvbklELCBjb25uZWN0aW9uLCBwYXRoLCBjdXN0b21Mb2NhbFN0
b3JhZ2VQYXRoLCBjdXN0b21JREJTdG9yYWdlUGF0aCwgY3VzdG9tQ2FjaGVTdG9yYWdlUGF0aCwg
ZGVmYXVsdE9yaWdpblF1b3RhLCBkZWZhdWx0VGhpcmRQYXJ0eU9yaWdpblF1b3RhKSk7CiB9CiAK
LU5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGN1c3RvbUxv
Y2FsU3RvcmFnZVBhdGgpCitOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Ok5ldHdvcmtTdG9yYWdlTWFu
YWdlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQg
Y29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGN1c3RvbUxvY2Fs
U3RvcmFnZVBhdGgsIGNvbnN0IFN0cmluZyYgY3VzdG9tSURCU3RvcmFnZVBhdGgsIGNvbnN0IFN0
cmluZyYgY3VzdG9tQ2FjaGVTdG9yYWdlUGF0aCwgdWludDY0X3QgZGVmYXVsdE9yaWdpblF1b3Rh
LCB1aW50NjRfdCBkZWZhdWx0VGhpcmRQYXJ0eU9yaWdpblF1b3RhKQogICAgIDogbV9zZXNzaW9u
SUQoc2Vzc2lvbklEKQogICAgICwgbV9xdWV1ZShTdXNwZW5kYWJsZVdvcmtRdWV1ZTo6Y3JlYXRl
KCJjb20uYXBwbGUuV2ViS2l0LlN0b3JhZ2UiKSkKKyAgICAsIG1fZGVmYXVsdE9yaWdpblF1b3Rh
KGRlZmF1bHRPcmlnaW5RdW90YSkKKyAgICAsIG1fZGVmYXVsdFRoaXJkUGFydHlPcmlnaW5RdW90
YShkZWZhdWx0VGhpcmRQYXJ0eU9yaWdpblF1b3RhKQorICAgICwgbV9wYXJlbnRDb25uZWN0aW9u
KGNvbm5lY3Rpb24pCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIG1f
cXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgcGF0
aCA9IHBhdGguaXNvbGF0ZWRDb3B5KCksIGN1c3RvbUxvY2FsU3RvcmFnZVBhdGggPSBjcm9zc1Ro
cmVhZENvcHkoY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCldKCkgbXV0YWJsZSB7CisgICAgbV9xdWV1
ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBwYXRoID0g
cGF0aC5pc29sYXRlZENvcHkoKSwgY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCA9IGNyb3NzVGhyZWFk
Q29weShjdXN0b21Mb2NhbFN0b3JhZ2VQYXRoKSwgY3VzdG9tSURCU3RvcmFnZVBhdGggPSBjcm9z
c1RocmVhZENvcHkoY3VzdG9tSURCU3RvcmFnZVBhdGgpLCBjdXN0b21DYWNoZVN0b3JhZ2VQYXRo
ID0gY3Jvc3NUaHJlYWRDb3B5KGN1c3RvbUNhY2hlU3RvcmFnZVBhdGgpXSgpIG11dGFibGUgewog
ICAgICAgICBtX2ZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnkgPSBtYWtlVW5pcXVlPEZp
bGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnk+KCk7CiAgICAgICAgIG1fc3RvcmFnZUFyZWFS
ZWdpc3RyeSA9IG1ha2VVbmlxdWU8U3RvcmFnZUFyZWFSZWdpc3RyeT4oKTsKKyAgICAgICAgbV9p
ZGJTdG9yYWdlUmVnaXN0cnkgPSBtYWtlVW5pcXVlPElEQlN0b3JhZ2VSZWdpc3RyeT4oKTsKICAg
ICAgICAgbV9wYXRoID0gcGF0aDsKICAgICAgICAgbV9jdXN0b21Mb2NhbFN0b3JhZ2VQYXRoID0g
Y3VzdG9tTG9jYWxTdG9yYWdlUGF0aDsKKyAgICAgICAgbV9jdXN0b21JREJTdG9yYWdlUGF0aCA9
IGN1c3RvbUlEQlN0b3JhZ2VQYXRoOworICAgICAgICBtX2N1c3RvbUNhY2hlU3RvcmFnZVBhdGgg
PSBjdXN0b21DYWNoZVN0b3JhZ2VQYXRoOwogICAgICAgICBpZiAoIW1fcGF0aC5pc0VtcHR5KCkp
IHsKICAgICAgICAgICAgIGF1dG8gc2FsdFBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQobV9wYXRoLCAic2FsdCIpOwogICAgICAgICAgICAgbV9zYWx0ID0gdmFsdWVP
ckRlZmF1bHQoRmlsZVN5c3RlbTo6cmVhZE9yTWFrZVNhbHQoc2FsdFBhdGgpKTsKQEAgLTEzMSw3
ICsxNDUsMTAgQEAgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjp+TmV0d29ya1N0b3JhZ2VNYW5hZ2Vy
KCkKIAogYm9vbCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNhbkhhbmRsZVR5cGVzKE9wdGlvblNl
dDxXZWJzaXRlRGF0YVR5cGU+IHR5cGVzKQogewotICAgIHJldHVybiB0eXBlcy5jb250YWlucyhX
ZWJzaXRlRGF0YVR5cGU6OkxvY2FsU3RvcmFnZSkgfHwgdHlwZXMuY29udGFpbnMoV2Vic2l0ZURh
dGFUeXBlOjpTZXNzaW9uU3RvcmFnZSkgfHwgdHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBl
OjpGaWxlU3lzdGVtKTsKKyAgICByZXR1cm4gdHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBl
OjpMb2NhbFN0b3JhZ2UpCisgICAgICAgIHx8IHR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlw
ZTo6U2Vzc2lvblN0b3JhZ2UpCisgICAgICAgIHx8IHR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRh
VHlwZTo6RmlsZVN5c3RlbSkKKyAgICAgICAgfHwgdHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFU
eXBlOjpJbmRleGVkREJEYXRhYmFzZXMpOwogfQogCiB2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdl
cjo6Y2xvc2UoKQpAQCAtMTcwLDYgKzE4Nyw3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2Vy
OjpzdG9wUmVjZWl2aW5nTWVzc2FnZUZyb21Db25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiYKIAog
ICAgIGNvbm5lY3Rpb24ucmVtb3ZlV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpO
ZXR3b3JrU3RvcmFnZU1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7CiAgICAgbV9xdWV1
ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBjb25uZWN0
aW9uID0gY29ubmVjdGlvbi51bmlxdWVJRCgpXSgpIG11dGFibGUgeworICAgICAgICBtX2lkYlN0
b3JhZ2VSZWdpc3RyeS0+cmVtb3ZlQ29ubmVjdGlvblRvQ2xpZW50KGNvbm5lY3Rpb24pOwogICAg
ICAgICBtX2xvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXJzLnJlbW92ZUlmKFsmXShhdXRvJiBlbnRy
eSkgewogICAgICAgICAgICAgYXV0byYgbWFuYWdlciA9IGVudHJ5LnZhbHVlOwogICAgICAgICAg
ICAgbWFuYWdlci0+Y29ubmVjdGlvbkNsb3NlZChjb25uZWN0aW9uKTsKQEAgLTIyMiw3ICsyNDAs
MTQgQEAgT3JpZ2luU3RvcmFnZU1hbmFnZXImIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6bG9jYWxP
cmlnaW5TdG9yYWdlTWFuYWdlcihjb25zdCBXZWIKICAgICAgICAgICAgICAgICB3cml0ZU9yaWdp
blRvRmlsZUlmTmVjZXNzYXJ5KG9yaWdpbkZpbGVQYXRoKG9yaWdpbkRpcmVjdG9yeSksIG9yaWdp
bik7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxPcmlnaW5TdG9yYWdlTWFuYWdlcj4oV1RGTW92ZShvcmlnaW5EaXJlY3RvcnkpLCBMb2NhbFN0
b3JhZ2VNYW5hZ2VyOjpsb2NhbFN0b3JhZ2VGaWxlUGF0aChtX2N1c3RvbUxvY2FsU3RvcmFnZVBh
dGgsIG9yaWdpbikpOworICAgICAgICBhdXRvIGxvY2FsU3RvcmFnZVBhdGggPSBMb2NhbFN0b3Jh
Z2VNYW5hZ2VyOjpsb2NhbFN0b3JhZ2VGaWxlUGF0aChtX2N1c3RvbUxvY2FsU3RvcmFnZVBhdGgs
IG9yaWdpbik7CisgICAgICAgIGF1dG8gaWRiU3RvcmFnZVBhdGggPSBJREJTdG9yYWdlTWFuYWdl
cjo6aWRiU3RvcmFnZU9yaWdpbkRpcmVjdG9yeShtX2N1c3RvbUlEQlN0b3JhZ2VQYXRoLCBvcmln
aW4pOworICAgICAgICBhdXRvIGNhY2hlU3RvcmFnZVBhdGggPSBDYWNoZVN0b3JhZ2U6OkVuZ2lu
ZTo6c3RvcmFnZVBhdGgobV9jdXN0b21DYWNoZVN0b3JhZ2VQYXRoLCBvcmlnaW4pOworICAgICAg
ICB1aW50NjRfdCBxdW90YSA9IG9yaWdpbi50b3BPcmlnaW4gPT0gb3JpZ2luLmNsaWVudE9yaWdp
biA/IG1fZGVmYXVsdE9yaWdpblF1b3RhIDogbV9kZWZhdWx0VGhpcmRQYXJ0eU9yaWdpblF1b3Rh
OworICAgICAgICBRdW90YU1hbmFnZXI6OkluY3JlYXNlUXVvdGFGdW5jdGlvbiBpbmNyZWFzZVF1
b3RhRnVuY3Rpb24gPSBbc2Vzc2lvbklEID0gbV9zZXNzaW9uSUQsIG9yaWdpbiwgY29ubmVjdGlv
biA9IG1fcGFyZW50Q29ubmVjdGlvbl0gKGF1dG8gaWRlbnRpZmllciwgYXV0byBjdXJyZW50UXVv
dGEsIGF1dG8gY3VycmVudFVzYWdlLCBhdXRvIHJlcXVlc3RlZEluY3JlYXNlKSBtdXRhYmxlIHsK
KyAgICAgICAgICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChjb25uZWN0aW9uLCBNZXNzYWdlczo6
TmV0d29ya1Byb2Nlc3NQcm94eTo6SW5jcmVhc2VRdW90YShzZXNzaW9uSUQsIG9yaWdpbiwgaWRl
bnRpZmllciwgY3VycmVudFF1b3RhLCBjdXJyZW50VXNhZ2UsIHJlcXVlc3RlZEluY3JlYXNlKSwg
MCk7CisgICAgICAgIH07CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPE9yaWdpblN0b3JhZ2VN
YW5hZ2VyPihxdW90YSwgV1RGTW92ZShpbmNyZWFzZVF1b3RhRnVuY3Rpb24pLCBXVEZNb3ZlKG9y
aWdpbkRpcmVjdG9yeSksIFdURk1vdmUobG9jYWxTdG9yYWdlUGF0aCksIFdURk1vdmUoaWRiU3Rv
cmFnZVBhdGgpLCBXVEZNb3ZlKGNhY2hlU3RvcmFnZVBhdGgpKTsKICAgICB9KS5pdGVyYXRvci0+
dmFsdWU7CiB9CiAKQEAgLTI4Miw2ICszMDcsMTYgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFn
ZXI6OmNsZWFyU3RvcmFnZUZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGMK
ICAgICB9KTsKIH0KIAordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmRpZEluY3JlYXNlUXVv
dGEoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIFF1b3RhSW5jcmVhc2VSZXF1
ZXN0SWRlbnRpZmllciBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBuZXdRdW90
YSkKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgbV9xdWV1ZS0+ZGlz
cGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBvcmlnaW4gPSBjcm9z
c1RocmVhZENvcHkob3JpZ2luKSwgaWRlbnRpZmllciwgbmV3UXVvdGFdKCkgbXV0YWJsZSB7Cisg
ICAgICAgIGlmIChhdXRvIG1hbmFnZXIgPSBtX2xvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXJzLmdl
dChvcmlnaW4pKQorICAgICAgICAgICAgbWFuYWdlci0+cXVvdGFNYW5hZ2VyKCkuZGlkSW5jcmVh
c2VRdW90YShpZGVudGlmaWVyLCBuZXdRdW90YSk7CisgICAgfSk7Cit9CisKIHZvaWQgTmV0d29y
a1N0b3JhZ2VNYW5hZ2VyOjpmaWxlU3lzdGVtR2V0RGlyZWN0b3J5KElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8V2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZp
ZXIsIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKQEAgLTQ1Miw2ICs0ODcsOSBAQCBIYXNoU2V0
PFdlYkNvcmU6OkNsaWVudE9yaWdpbj4gTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpnZXRBbGxPcmln
aW5zKCkKICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IExvY2FsU3RvcmFnZU1hbmFnZXI6Om9yaWdp
bnNPZkxvY2FsU3RvcmFnZURhdGEobV9jdXN0b21Mb2NhbFN0b3JhZ2VQYXRoKSkKICAgICAgICAg
YWxsT3JpZ2lucy5hZGQoV2ViQ29yZTo6Q2xpZW50T3JpZ2luIHsgb3JpZ2luLCBvcmlnaW4gfSk7
CiAKKyAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IElEQlN0b3JhZ2VNYW5hZ2VyOjpvcmlnaW5zT2ZJ
REJTdG9yYWdlRGF0YShtX2N1c3RvbUlEQlN0b3JhZ2VQYXRoKSkKKyAgICAgICAgYWxsT3JpZ2lu
cy5hZGQob3JpZ2luKTsKKwogICAgIHJldHVybiBhbGxPcmlnaW5zOwogfQogCkBAIC01NzksMTIg
KzYxNywxMiBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6bW92ZURhdGEoY29uc3QgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBzb3VyY2UsCiAgICAgICAgIGF1dG8gdGFyZ2V0T3Jp
Z2luID0gV2ViQ29yZTo6Q2xpZW50T3JpZ2luIHsgdGFyZ2V0LCB0YXJnZXQgfTsKICAgICAgICAg
CiAgICAgICAgIC8vIENsZWFyIGV4aXN0aW5nIGRhdGEgb2YgdGFyZ2V0IG9yaWdpbi4KLSAgICAg
ICAgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gdHlwZXMgPSB7IFdlYnNpdGVEYXRhVHlwZTo6
RmlsZVN5c3RlbSwgV2Vic2l0ZURhdGFUeXBlOjpMb2NhbFN0b3JhZ2UsIFdlYnNpdGVEYXRhVHlw
ZTo6U2Vzc2lvblN0b3JhZ2UgIH07CisgICAgICAgIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+
IHR5cGVzID0geyBXZWJzaXRlRGF0YVR5cGU6OkZpbGVTeXN0ZW0sIFdlYnNpdGVEYXRhVHlwZTo6
TG9jYWxTdG9yYWdlLCBXZWJzaXRlRGF0YVR5cGU6OlNlc3Npb25TdG9yYWdlLCBXZWJzaXRlRGF0
YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcyAgfTsKICAgICAgICAgbG9jYWxPcmlnaW5TdG9yYWdl
TWFuYWdlcih0YXJnZXRPcmlnaW4pLmRlbGV0ZURhdGEodHlwZXMsIC1XYWxsVGltZTo6aW5maW5p
dHkoKSk7CiAgICAgICAgIHJlbW92ZU9yaWdpblN0b3JhZ2VNYW5hZ2VySWZQb3NzaWJsZSh0YXJn
ZXRPcmlnaW4pOwogCiAgICAgICAgIC8vIE1vdmUgZGF0YSBmcm9tIHNvdXJjZSBvcmlnaW4gdG8g
dGFyZ2V0IG9yaWdpbi4KLSAgICAgICAgbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcihzb3VyY2VP
cmlnaW4pLm1vdmVEYXRhKG9yaWdpbkRpcmVjdG9yeVBhdGgobV9wYXRoLCB0YXJnZXRPcmlnaW4s
IG1fc2FsdCksIExvY2FsU3RvcmFnZU1hbmFnZXI6OmxvY2FsU3RvcmFnZUZpbGVQYXRoKG1fY3Vz
dG9tTG9jYWxTdG9yYWdlUGF0aCwgdGFyZ2V0T3JpZ2luKSk7CisgICAgICAgIGxvY2FsT3JpZ2lu
U3RvcmFnZU1hbmFnZXIoc291cmNlT3JpZ2luKS5tb3ZlRGF0YShvcmlnaW5EaXJlY3RvcnlQYXRo
KG1fcGF0aCwgdGFyZ2V0T3JpZ2luLCBtX3NhbHQpLCBMb2NhbFN0b3JhZ2VNYW5hZ2VyOjpsb2Nh
bFN0b3JhZ2VGaWxlUGF0aChtX2N1c3RvbUxvY2FsU3RvcmFnZVBhdGgsIHRhcmdldE9yaWdpbiks
IElEQlN0b3JhZ2VNYW5hZ2VyOjppZGJTdG9yYWdlT3JpZ2luRGlyZWN0b3J5KG1fY3VzdG9tSURC
U3RvcmFnZVBhdGgsIHRhcmdldE9yaWdpbikpOwogICAgICAgICByZW1vdmVPcmlnaW5TdG9yYWdl
TWFuYWdlcklmUG9zc2libGUoc291cmNlT3JpZ2luKTsKIAogICAgICAgICBSdW5Mb29wOjptYWlu
KCkuZGlzcGF0Y2goV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwpAQCAtNTk5LDYgKzYzNyw4
IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpzdXNwZW5kKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlCiAgICAgICAgIGZvciAoYXV0byYgbWFuYWdlciA6
IG1fbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcnMudmFsdWVzKCkpIHsKICAgICAgICAgICAgIGlm
IChhdXRvIGxvY2FsU3RvcmFnZU1hbmFnZXIgPSBtYW5hZ2VyLT5leGlzdGluZ0xvY2FsU3RvcmFn
ZU1hbmFnZXIoKSkKICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2VNYW5hZ2VyLT5zeW5jTG9j
YWxTdG9yYWdlKCk7CisgICAgICAgICAgICBpZiAoYXV0byBpZGJTdG9yYWdlTWFuYWdlciA9IG1h
bmFnZXItPmV4aXN0aW5nSURCU3RvcmFnZU1hbmFnZXIoKSkKKyAgICAgICAgICAgICAgICBpZGJT
dG9yYWdlTWFuYWdlci0+c3RvcERhdGFiYXNlQWN0aXZpdGllc0ZvclN1c3BlbmQoKTsKICAgICAg
ICAgfQogICAgIH0sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KQEAgLTYzNiw2ICs2
NzYsNTIgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnN5bmNMb2NhbFN0b3JhZ2UoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXQKICAgICB9KTsKIH0KIAordm9pZCBOZXR3
b3JrU3RvcmFnZU1hbmFnZXI6OnJlZ2lzdGVyVGVtcG9yYXJ5QmxvYkZpbGVQYXRocyhJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlUGF0aHMpCit7
CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIG1fcXVldWUtPmRpc3BhdGNo
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY29ubmVjdGlvbklEID0gY29u
bmVjdGlvbi51bmlxdWVJRCgpLCBmaWxlUGF0aHMgPSBjcm9zc1RocmVhZENvcHkoZmlsZVBhdGhz
KV0geworICAgICAgICBhdXRvJiB0ZW1wb3JhcnlCbG9iUGF0aHMgPSBtX3RlbXBvcmFyeUJsb2JQ
YXRoc0J5Q29ubmVjdGlvbi5lbnN1cmUoY29ubmVjdGlvbklELCBbXSB7CisgICAgICAgICAgICBy
ZXR1cm4gSGFzaFNldDxTdHJpbmc+IHsgfTsKKyAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwor
ICAgICAgICB0ZW1wb3JhcnlCbG9iUGF0aHMuYWRkKGZpbGVQYXRocy5iZWdpbigpLCBmaWxlUGF0
aHMuZW5kKCkpOworICAgIH0pOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6cmVx
dWVzdFNwYWNlKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCB1aW50NjRfdCBz
aXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
eworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBtX3F1ZXVlLT5kaXNwYXRj
aChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIG9yaWdpbiA9IGNyb3NzVGhy
ZWFkQ29weShvcmlnaW4pLCBzaXplLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICBsb2NhbE9yaWdpblN0b3JhZ2VNYW5h
Z2VyKG9yaWdpbikucXVvdGFNYW5hZ2VyKCkucmVxdWVzdFNwYWNlKHNpemUsIFtjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvIGRlY2lzaW9uKSBtdXRh
YmxlIHsKKyAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgZGVjaXNpb25dKCkgbXV0YWJsZSB7
CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZGVjaXNpb24gPT0gUXVvdGFNYW5h
Z2VyOjpEZWNpc2lvbjo6R3JhbnQpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAg
IH0pOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6cmVzZXRRdW90YUZvclRlc3Rp
bmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAg
IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIGZvciAoYXV0byYg
bWFuYWdlciA6IG1fbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcnMudmFsdWVzKCkpCisgICAgICAg
ICAgICBtYW5hZ2VyLT5xdW90YU1hbmFnZXIoKS5yZXNldFF1b3RhRm9yVGVzdGluZygpOworICAg
ICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OworICAgIH0pOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6cmVzZXRRdW90YVVw
ZGF0ZWRCYXNlZE9uVXNhZ2VGb3JUZXN0aW5nKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYg
b3JpZ2luKQoreworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBtX3F1ZXVl
LT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIG9yaWdpbiA9
IGNyb3NzVGhyZWFkQ29weShvcmlnaW4pXSgpIG11dGFibGUgeworICAgICAgICBpZiAoYXV0byBt
YW5hZ2VyID0gbV9sb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2Vycy5nZXQob3JpZ2luKSkKKyAgICAg
ICAgICAgIG1hbmFnZXItPnF1b3RhTWFuYWdlcigpLnJlc2V0UXVvdGFVcGRhdGVkQmFzZWRPblVz
YWdlRm9yVGVzdGluZygpOworICAgIH0pOworfQorCiB2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdl
cjo6Y29ubmVjdFRvU3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBXZWJD
b3JlOjpTdG9yYWdlVHlwZSB0eXBlLCBTdG9yYWdlQXJlYU1hcElkZW50aWZpZXIgc291cmNlSWRl
bnRpZmllciwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIgbmFtZXNwYWNlSWRlbnRpZmllciwg
Y29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoU3RvcmFnZUFyZWFJZGVudGlmaWVyLCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiwgdWludDY0
X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWlu
KCkpOwpAQCAtNzIzLDUgKzgwOSwxOTUgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNs
ZWFyKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU3RvcmFnZUFyZWFJZGVudGkKICAgICBj
b21wbGV0aW9uSGFuZGxlcigpOwogfQogCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6b3Bl
bkRhdGFiYXNlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6SURC
UmVxdWVzdERhdGEmIHJlcXVlc3REYXRhKQoreworICAgIGF1dG8mIGNvbm5lY3Rpb25Ub0NsaWVu
dCA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT5nZXRPckNyZWF0ZUNvbm5lY3Rpb25Ub0NsaWVudChj
b25uZWN0aW9uLnVuaXF1ZUlEKCksIHJlcXVlc3REYXRhLnJlcXVlc3RJZGVudGlmaWVyKCkuY29u
bmVjdGlvbklkZW50aWZpZXIoKSk7CisgICAgbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcihyZXF1
ZXN0RGF0YS5kYXRhYmFzZUlkZW50aWZpZXIoKS5vcmlnaW4oKSkuaWRiU3RvcmFnZU1hbmFnZXIo
Km1faWRiU3RvcmFnZVJlZ2lzdHJ5KS5vcGVuRGF0YWJhc2UoY29ubmVjdGlvblRvQ2xpZW50LCBy
ZXF1ZXN0RGF0YSk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpvcGVuREJSZXF1
ZXN0Q2FuY2VsbGVkKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkK
K3sKKyAgICBsb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2VyKHJlcXVlc3REYXRhLmRhdGFiYXNlSWRl
bnRpZmllcigpLm9yaWdpbigpKS5pZGJTdG9yYWdlTWFuYWdlcigqbV9pZGJTdG9yYWdlUmVnaXN0
cnkpLm9wZW5EQlJlcXVlc3RDYW5jZWxsZWQocmVxdWVzdERhdGEpOworfQorCit2b2lkIE5ldHdv
cmtTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlRGF0YWJhc2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEpCit7CisgICAg
YXV0byYgY29ubmVjdGlvblRvQ2xpZW50ID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPmdldE9yQ3Jl
YXRlQ29ubmVjdGlvblRvQ2xpZW50KGNvbm5lY3Rpb24udW5pcXVlSUQoKSwgcmVxdWVzdERhdGEu
cmVxdWVzdElkZW50aWZpZXIoKS5jb25uZWN0aW9uSWRlbnRpZmllcigpKTsKKyAgICBsb2NhbE9y
aWdpblN0b3JhZ2VNYW5hZ2VyKHJlcXVlc3REYXRhLmRhdGFiYXNlSWRlbnRpZmllcigpLm9yaWdp
bigpKS5pZGJTdG9yYWdlTWFuYWdlcigqbV9pZGJTdG9yYWdlUmVnaXN0cnkpLmRlbGV0ZURhdGFi
YXNlKGNvbm5lY3Rpb25Ub0NsaWVudCwgcmVxdWVzdERhdGEpOworfQorCit2b2lkIE5ldHdvcmtT
dG9yYWdlTWFuYWdlcjo6ZXN0YWJsaXNoVHJhbnNhY3Rpb24odWludDY0X3QgZGF0YWJhc2VDb25u
ZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25JbmZvJiB0cmFu
c2FjdGlvbkluZm8pCit7CisgICAgaWYgKGF1dG8gY29ubmVjdGlvbiA9IG1faWRiU3RvcmFnZVJl
Z2lzdHJ5LT5nZXRDb25uZWN0aW9uKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpKQorICAg
ICAgICBjb25uZWN0aW9uLT5lc3RhYmxpc2hUcmFuc2FjdGlvbih0cmFuc2FjdGlvbkluZm8pOwor
fQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGF0YWJhc2VDb25uZWN0aW9uUGVuZGlu
Z0Nsb3NlKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpCit7CisgICAgaWYg
KGF1dG8gY29ubmVjdGlvbiA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT5nZXRDb25uZWN0aW9uKGRh
dGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpKQorICAgICAgICBjb25uZWN0aW9uLT5jb25uZWN0
aW9uUGVuZGluZ0Nsb3NlRnJvbUNsaWVudCgpOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFu
YWdlcjo6ZGF0YWJhc2VDb25uZWN0aW9uQ2xvc2VkKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlv
bklkZW50aWZpZXIpCit7CisgICAgaWYgKGF1dG8gY29ubmVjdGlvbiA9IG1faWRiU3RvcmFnZVJl
Z2lzdHJ5LT5nZXRDb25uZWN0aW9uKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpKQorICAg
ICAgICBjb25uZWN0aW9uLT5jb25uZWN0aW9uQ2xvc2VkRnJvbUNsaWVudCgpOworfQorCit2b2lk
IE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6YWJvcnRPcGVuQW5kVXBncmFkZU5lZWRlZCh1aW50NjRf
dCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJj
ZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcikKK3sKKyAgICBpZiAoYXV0byB0cmFu
c2FjdGlvbiA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT5nZXRUcmFuc2FjdGlvbih0cmFuc2FjdGlv
bklkZW50aWZpZXIpKQorICAgICAgICB0cmFuc2FjdGlvbi0+YWJvcnRXaXRob3V0Q2FsbGJhY2so
KTsKKworICAgIGlmIChhdXRvIGNvbm5lY3Rpb24gPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+Z2V0
Q29ubmVjdGlvbihkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKSkKKyAgICAgICAgY29ubmVj
dGlvbi0+Y29ubmVjdGlvbkNsb3NlZEZyb21DbGllbnQoKTsKK30KKwordm9pZCBOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6OmRpZEZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQodWludDY0X3QgZGF0YWJhc2VD
b25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVy
JiByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SW5kZXhlZERCOjpDb25uZWN0aW9u
Q2xvc2VkT25CZWhhbGZPZlNlcnZlciBjb25uZWN0aW9uQ2xvc2VkKQoreworICAgIGlmIChhdXRv
IGNvbm5lY3Rpb24gPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+Z2V0Q29ubmVjdGlvbihkYXRhYmFz
ZUNvbm5lY3Rpb25JZGVudGlmaWVyKSkKKyAgICAgICAgY29ubmVjdGlvbi0+ZGlkRmlyZVZlcnNp
b25DaGFuZ2VFdmVudChyZXF1ZXN0SWRlbnRpZmllciwgY29ubmVjdGlvbkNsb3NlZCk7Cit9CisK
K3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjphYm9ydFRyYW5zYWN0aW9uKGNvbnN0IFdlYkNv
cmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKQoreworICAg
IGlmIChhdXRvIHRyYW5zYWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPmdldFRyYW5zYWN0
aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllcikpCisgICAgICAgIHRyYW5zYWN0aW9uLT5hYm9ydCgp
OworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y29tbWl0VHJhbnNhY3Rpb24oY29u
c3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIs
IHVpbnQ2NF90IHBlbmRpbmdSZXF1ZXN0Q291bnQpCit7CisgICAgaWYgKGF1dG8gdHJhbnNhY3Rp
b24gPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+Z2V0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZGVu
dGlmaWVyKSkKKyAgICAgICAgdHJhbnNhY3Rpb24tPmNvbW1pdChwZW5kaW5nUmVxdWVzdENvdW50
KTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmRpZEZpbmlzaEhhbmRsaW5nVmVy
c2lvbkNoYW5nZVRyYW5zYWN0aW9uKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZp
ZXIsIGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVu
dGlmaWVyKQoreworICAgIGlmIChhdXRvIGNvbm5lY3Rpb24gPSBtX2lkYlN0b3JhZ2VSZWdpc3Ry
eS0+Z2V0Q29ubmVjdGlvbihkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKSkKKyAgICAgICAg
Y29ubmVjdGlvbi0+ZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlKHRyYW5zYWN0aW9uSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVPYmplY3RT
dG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IFdl
YkNvcmU6OklEQk9iamVjdFN0b3JlSW5mbyYgb2JqZWN0U3RvcmVJbmZvKQoreworICAgIGlmIChh
dXRvIHRyYW5zYWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPmdldFRyYW5zYWN0aW9uKHJl
cXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpKSkgeworICAgICAgICBBU1NFUlQodHJh
bnNhY3Rpb24tPmlzVmVyc2lvbkNoYW5nZSgpKTsKKyAgICAgICAgdHJhbnNhY3Rpb24tPmNyZWF0
ZU9iamVjdFN0b3JlKHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUluZm8pOworICAgIH0KK30KKwor
dm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNv
cmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9y
ZU5hbWUpCit7CisgICAgaWYgKGF1dG8gdHJhbnNhY3Rpb24gPSBtX2lkYlN0b3JhZ2VSZWdpc3Ry
eS0+Z2V0VHJhbnNhY3Rpb24ocmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCkpKSB7
CisgICAgICAgIEFTU0VSVCh0cmFuc2FjdGlvbi0+aXNWZXJzaW9uQ2hhbmdlKCkpOworICAgICAg
ICB0cmFuc2FjdGlvbi0+ZGVsZXRlT2JqZWN0U3RvcmUocmVxdWVzdERhdGEsIG9iamVjdFN0b3Jl
TmFtZSk7CisgICAgfQorfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6cmVuYW1lT2Jq
ZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCB1aW50
NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSkKK3sKKyAg
ICBpZiAoYXV0byB0cmFuc2FjdGlvbiA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT5nZXRUcmFuc2Fj
dGlvbihyZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSkpIHsKKyAgICAgICAgQVNT
RVJUKHRyYW5zYWN0aW9uLT5pc1ZlcnNpb25DaGFuZ2UoKSk7CisgICAgICAgIHRyYW5zYWN0aW9u
LT5yZW5hbWVPYmplY3RTdG9yZShyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBu
ZXdOYW1lKTsKKyAgICB9Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjbGVhck9i
amVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgdWlu
dDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyKQoreworICAgIGlmIChhdXRvIHRyYW5zYWN0aW9u
ID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPmdldFRyYW5zYWN0aW9uKHJlcXVlc3REYXRhLnRyYW5z
YWN0aW9uSWRlbnRpZmllcigpKSkKKyAgICAgICAgdHJhbnNhY3Rpb24tPmNsZWFyT2JqZWN0U3Rv
cmUocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgTmV0d29y
a1N0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVJbmRleChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0
YSYgcmVxdWVzdERhdGEsIGNvbnN0IFdlYkNvcmU6OklEQkluZGV4SW5mbyYgaW5kZXhJbmZvKQor
eworICAgIGlmIChhdXRvIHRyYW5zYWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPmdldFRy
YW5zYWN0aW9uKHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpKSkKKyAgICAgICAg
dHJhbnNhY3Rpb24tPmNyZWF0ZUluZGV4KHJlcXVlc3REYXRhLCBpbmRleEluZm8pOworfQorCit2
b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlSW5kZXgoY29uc3QgV2ViQ29yZTo6SURC
UmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lKQoreworICAgIGlmIChhdXRvIHRyYW5zYWN0aW9uID0g
bV9pZGJTdG9yYWdlUmVnaXN0cnktPmdldFRyYW5zYWN0aW9uKHJlcXVlc3REYXRhLnRyYW5zYWN0
aW9uSWRlbnRpZmllcigpKSkKKyAgICAgICAgdHJhbnNhY3Rpb24tPmRlbGV0ZUluZGV4KHJlcXVl
c3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4TmFtZSk7Cit9CisKK3ZvaWQgTmV0
d29ya1N0b3JhZ2VNYW5hZ2VyOjpyZW5hbWVJbmRleChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0
RGF0YSYgcmVxdWVzdERhdGEsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgdWludDY0
X3QgaW5kZXhJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUpCit7CisgICAgaWYgKGF1
dG8gdHJhbnNhY3Rpb24gPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+Z2V0VHJhbnNhY3Rpb24ocmVx
dWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCkpKQorICAgICAgICB0cmFuc2FjdGlvbi0+
cmVuYW1lSW5kZXgocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhJZGVu
dGlmaWVyLCBuZXdOYW1lKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnB1dE9y
QWRkKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6SURCUmVxdWVz
dERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBXZWJDb3JlOjpJREJLZXlEYXRhJiBrZXlEYXRhLCBj
b25zdCBXZWJDb3JlOjpJREJWYWx1ZSYgdmFsdWUsIFdlYkNvcmU6OkluZGV4ZWREQjo6T2JqZWN0
U3RvcmVPdmVyd3JpdGVNb2RlIG92ZXJ3cml0ZU1vZGUpCit7CisgICAgaWYgKHZhbHVlLmJsb2JV
UkxzKCkuc2l6ZSgpICE9IHZhbHVlLmJsb2JGaWxlUGF0aHMoKS5zaXplKCkpIHsKKyAgICAgICAg
UkVMRUFTRV9MT0dfRkFVTFQoSW5kZXhlZERCLCAiTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpwdXRP
ckFkZDogTnVtYmVyIG9mIGJsb2IgVVJMcyBkb2Vzbid0IG1hdGNoIHRoZSBudW1iZXIgb2YgYmxv
YiBmaWxlIHBhdGhzLiIpOworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIC8vIFZhbGlkYXRlIHRlbXBvcmFyeSBibG9iIHBhdGhzIGlu
IHx2YWx1ZXwgdG8gbWFrZSBzdXJlIHRoZXkgYmVsb25nIHRvIHRoZSBzb3VyY2UgcHJvY2Vzcy4K
KyAgICBpZiAoIXZhbHVlLmJsb2JGaWxlUGF0aHMoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgYXV0
byBpdCA9IG1fdGVtcG9yYXJ5QmxvYlBhdGhzQnlDb25uZWN0aW9uLmZpbmQoY29ubmVjdGlvbi51
bmlxdWVJRCgpKTsKKyAgICAgICAgaWYgKGl0ID09IG1fdGVtcG9yYXJ5QmxvYlBhdGhzQnlDb25u
ZWN0aW9uLmVuZCgpKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19GQVVMVChJbmRleGVkREIs
ICJOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnB1dE9yQWRkOiBJREJWYWx1ZSBjb250YWlucyBibG9i
IHBhdGhzIGJ1dCBub25lIGFyZSBhbGxvd2VkIGZvciB0aGlzIHByb2Nlc3MiKTsKKyAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKKyAgICAgICAgYXV0byYgdGVtcG9yYXJ5QmxvYlBhdGhzRm9yQ29ubmVjdGlvbiA9IGl0LT52
YWx1ZTsKKyAgICAgICAgZm9yIChhdXRvJiBibG9iRmlsZVBhdGggOiB2YWx1ZS5ibG9iRmlsZVBh
dGhzKCkpIHsKKyAgICAgICAgICAgIGlmICghdGVtcG9yYXJ5QmxvYlBhdGhzRm9yQ29ubmVjdGlv
bi5yZW1vdmUoYmxvYkZpbGVQYXRoKSkgeworICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0ZB
VUxUKEluZGV4ZWREQiwgIk5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6cHV0T3JBZGQ6IEJsb2IgcGF0
aCB3YXMgbm90IGNyZWF0ZWQgZm9yIHRoaXMgV2ViUHJvY2VzcyIpOworICAgICAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChhdXRvIHRyYW5zYWN0aW9uID0gbV9p
ZGJTdG9yYWdlUmVnaXN0cnktPmdldFRyYW5zYWN0aW9uKHJlcXVlc3REYXRhLnRyYW5zYWN0aW9u
SWRlbnRpZmllcigpKSkKKyAgICAgICAgdHJhbnNhY3Rpb24tPnB1dE9yQWRkKHJlcXVlc3REYXRh
LCBrZXlEYXRhLCB2YWx1ZSwgb3ZlcndyaXRlTW9kZSk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyOjpnZXRSZWNvcmQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVl
c3REYXRhLCBjb25zdCBXZWJDb3JlOjpJREJHZXRSZWNvcmREYXRhJiBnZXRSZWNvcmREYXRhKQor
eworICAgIGlmIChhdXRvIHRyYW5zYWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPmdldFRy
YW5zYWN0aW9uKHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpKSkKKyAgICAgICAg
dHJhbnNhY3Rpb24tPmdldFJlY29yZChyZXF1ZXN0RGF0YSwgZ2V0UmVjb3JkRGF0YSk7Cit9CisK
K3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpnZXRBbGxSZWNvcmRzKGNvbnN0IFdlYkNvcmU6
OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgV2ViQ29yZTo6SURCR2V0QWxsUmVj
b3Jkc0RhdGEmIGdldEFsbFJlY29yZHNEYXRhKQoreworICAgIGlmIChhdXRvIHRyYW5zYWN0aW9u
ID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPmdldFRyYW5zYWN0aW9uKHJlcXVlc3REYXRhLnRyYW5z
YWN0aW9uSWRlbnRpZmllcigpKSkKKyAgICAgICAgdHJhbnNhY3Rpb24tPmdldEFsbFJlY29yZHMo
cmVxdWVzdERhdGEsIGdldEFsbFJlY29yZHNEYXRhKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFn
ZU1hbmFnZXI6OmdldENvdW50KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0
RGF0YSwgY29uc3QgV2ViQ29yZTo6SURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5nZURhdGEpCit7Cisg
ICAgaWYgKGF1dG8gdHJhbnNhY3Rpb24gPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+Z2V0VHJhbnNh
Y3Rpb24ocmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCkpKQorICAgICAgICB0cmFu
c2FjdGlvbi0+Z2V0Q291bnQocmVxdWVzdERhdGEsIGtleVJhbmdlRGF0YSk7Cit9CisKK3ZvaWQg
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVSZWNvcmQoY29uc3QgV2ViQ29yZTo6SURCUmVx
dWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBXZWJDb3JlOjpJREJLZXlSYW5nZURhdGEmIGtl
eVJhbmdlRGF0YSkKK3sKKyAgICBpZiAoYXV0byB0cmFuc2FjdGlvbiA9IG1faWRiU3RvcmFnZVJl
Z2lzdHJ5LT5nZXRUcmFuc2FjdGlvbihyZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIo
KSkpCisgICAgICAgIHRyYW5zYWN0aW9uLT5kZWxldGVSZWNvcmQocmVxdWVzdERhdGEsIGtleVJh
bmdlRGF0YSk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpvcGVuQ3Vyc29yKGNv
bnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgV2ViQ29yZTo6
SURCQ3Vyc29ySW5mbyYgY3Vyc29ySW5mbykKK3sKKyAgICBpZiAoYXV0byB0cmFuc2FjdGlvbiA9
IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT5nZXRUcmFuc2FjdGlvbihyZXF1ZXN0RGF0YS50cmFuc2Fj
dGlvbklkZW50aWZpZXIoKSkpCisgICAgICAgIHRyYW5zYWN0aW9uLT5vcGVuQ3Vyc29yKHJlcXVl
c3REYXRhLCBjdXJzb3JJbmZvKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Oml0
ZXJhdGVDdXJzb3IoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBj
b25zdCBXZWJDb3JlOjpJREJJdGVyYXRlQ3Vyc29yRGF0YSYgY3Vyc29yRGF0YSkKK3sKKyAgICBp
ZiAoYXV0byB0cmFuc2FjdGlvbiA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT5nZXRUcmFuc2FjdGlv
bihyZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSkpCisgICAgICAgIHRyYW5zYWN0
aW9uLT5pdGVyYXRlQ3Vyc29yKHJlcXVlc3REYXRhLCBjdXJzb3JEYXRhKTsKK30KKwordm9pZCBO
ZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRp
ZmllciYgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3Jp
Z2luKQoreworICAgIGF1dG8mIGNvbm5lY3Rpb25Ub0NsaWVudCA9IG1faWRiU3RvcmFnZVJlZ2lz
dHJ5LT5nZXRPckNyZWF0ZUNvbm5lY3Rpb25Ub0NsaWVudChjb25uZWN0aW9uLnVuaXF1ZUlEKCks
IHJlcXVlc3RJZGVudGlmaWVyLmNvbm5lY3Rpb25JZGVudGlmaWVyKCkpOworICAgIGF1dG8gcmVz
dWx0ID0gbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcihvcmlnaW4pLmlkYlN0b3JhZ2VNYW5hZ2Vy
KCptX2lkYlN0b3JhZ2VSZWdpc3RyeSkuZ2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKCk7
CisgICAgY29ubmVjdGlvblRvQ2xpZW50LmRpZEdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9u
cyhyZXF1ZXN0SWRlbnRpZmllciwgV1RGTW92ZShyZXN1bHQpKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3Rv
cmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuaAppbmRleCAxNWMwMzcyZTY2YTdmNjI4
NDk5MjdmMWMzN2YxNmE2OTU4N2Y0NTAxLi45YzNkMmQ2NDA2ZmVlOWIyYjRlNmNhMjZmN2I2NWZl
MGM3OGI4M2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3Jh
Z2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5oCkBAIC0zNiw2ICszNiw4IEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9DbGllbnRPcmlnaW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVT
eXN0ZW1IYW5kbGVJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtU3lu
Y0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0lEQlJlc291cmNl
SWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSW5kZXhlZERCLmg+CiAjaW5jbHVkZSA8
cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKQEAgLTQ0LDE4ICs0
NiwzMSBAQCBjbGFzcyBTaGFyZWRGaWxlSGFuZGxlOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CitjbGFzcyBJREJDdXJzb3JJbmZvOworY2xhc3MgSURCS2V5RGF0YTsKK2NsYXNzIElEQkluZGV4
SW5mbzsKK2NsYXNzIElEQk9iamVjdFN0b3JlSW5mbzsKK2NsYXNzIElEQlJlcXVlc3REYXRhOwor
Y2xhc3MgSURCVHJhbnNhY3Rpb25JbmZvOworY2xhc3MgSURCVmFsdWU7CiBzdHJ1Y3QgQ2xpZW50
T3JpZ2luOworc3RydWN0IElEQkdldEFsbFJlY29yZHNEYXRhOworc3RydWN0IElEQkdldFJlY29y
ZERhdGE7CitzdHJ1Y3QgSURCR2V0QWxsUmVjb3Jkc0RhdGE7CitzdHJ1Y3QgSURCSXRlcmF0ZUN1
cnNvckRhdGE7CitzdHJ1Y3QgSURCS2V5UmFuZ2VEYXRhOwogZW51bSBjbGFzcyBTdG9yYWdlVHlw
ZSA6IHVpbnQ4X3Q7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBGaWxlU3lzdGVt
U3RvcmFnZUhhbmRsZVJlZ2lzdHJ5OworY2xhc3MgSURCU3RvcmFnZVJlZ2lzdHJ5OwogY2xhc3Mg
U3RvcmFnZUFyZWFSZWdpc3RyeTsKIAogY2xhc3MgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyIGZpbmFs
IDogcHVibGljIElQQzo6Q29ubmVjdGlvbjo6V29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyIHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPE5ldHdvcmtTdG9yYWdlTWFuYWdlcj4gY3JlYXRlKFBBTDo6
U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY3VzdG9tTG9jYWxT
dG9yYWdlUGF0aCk7CisgICAgc3RhdGljIFJlZjxOZXR3b3JrU3RvcmFnZU1hbmFnZXI+IGNyZWF0
ZShQQUw6OlNlc3Npb25JRCwgSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCwgY29uc3QgU3RyaW5n
JiBwYXRoLCBjb25zdCBTdHJpbmcmIGN1c3RvbUxvY2FsU3RvcmFnZVBhdGgsIGNvbnN0IFN0cmlu
ZyYgY3VzdG9tSURCU3RvcmFnZVBhdGgsIGNvbnN0IFN0cmluZyYgY3VzdG9tQ2FjaGVTdG9yYWdl
UGF0aCwgdWludDY0X3QgZGVmYXVsdE9yaWdpblF1b3RhLCB1aW50NjRfdCBkZWZhdWx0VGhpcmRQ
YXJ0eU9yaWdpblF1b3RhKTsKICAgICBzdGF0aWMgYm9vbCBjYW5IYW5kbGVUeXBlcyhPcHRpb25T
ZXQ8V2Vic2l0ZURhdGFUeXBlPik7CiAKICAgICB2b2lkIHN0YXJ0UmVjZWl2aW5nTWVzc2FnZUZy
b21Db25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiYpOwpAQCAtNjQsNiArNzksNyBAQCBwdWJsaWM6
CiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9u
SUQ7IH0KICAgICB2b2lkIGNsb3NlKCk7CiAgICAgdm9pZCBjbGVhclN0b3JhZ2VGb3JUZXN0aW5n
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBkaWRJbmNyZWFzZVF1b3Rh
KGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRp
Zmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbmV3UXVvdGEpOwogICAgIHZvaWQgZmV0Y2hE
YXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZl
Y3RvcjxXZWJzaXRlRGF0YTo6RW50cnk+JiYpPiYmKTsKICAgICB2b2lkIGRlbGV0ZURhdGEoT3B0
aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGE+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGRlbGV0
ZURhdGFNb2RpZmllZFNpbmNlKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBXYWxsVGltZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKQEAgLTczLDE0ICs4OSwxOCBAQCBwdWJsaWM6
CiAgICAgdm9pZCByZXN1bWUoKTsKICAgICB2b2lkIGhhbmRsZUxvd01lbW9yeVdhcm5pbmcoKTsK
ICAgICB2b2lkIHN5bmNMb2NhbFN0b3JhZ2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
KyAgICB2b2lkIHJlZ2lzdGVyVGVtcG9yYXJ5QmxvYkZpbGVQYXRocyhJUEM6OkNvbm5lY3Rpb24m
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpOworICAgIHZvaWQgcmVxdWVzdFNwYWNlKGNvbnN0IFdl
YkNvcmU6OkNsaWVudE9yaWdpbiYsIHVpbnQ2NF90IHNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYpOworICAgIHZvaWQgcmVzZXRRdW90YUZvclRlc3RpbmcoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHJlc2V0UXVvdGFVcGRhdGVkQmFzZWRPblVzYWdl
Rm9yVGVzdGluZyhjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKIAogcHJpdmF0ZToKICAg
ICBOZXR3b3JrU3RvcmFnZU1hbmFnZXIoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcGF0
aCwgY29uc3QgU3RyaW5nJiBjdXN0b21Mb2NhbFN0b3JhZ2VQYXRoKTsKKyAgICBOZXR3b3JrU3Rv
cmFnZU1hbmFnZXIoUEFMOjpTZXNzaW9uSUQsIElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIGNv
bnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21Mb2NhbFN0b3JhZ2VQYXRoLCBj
b25zdCBTdHJpbmcmIGN1c3RvbUlEQlN0b3JhZ2VQYXRoLCBjb25zdCBTdHJpbmcmIGN1c3RvbUNh
Y2hlU3RvcmFnZVBhdGgsIHVpbnQ2NF90IGRlZmF1bHRPcmlnaW5RdW90YSwgdWludDY0X3QgZGVm
YXVsdFRoaXJkUGFydHlPcmlnaW5RdW90YSk7CiAgICAgfk5ldHdvcmtTdG9yYWdlTWFuYWdlcigp
OwogICAgIE9yaWdpblN0b3JhZ2VNYW5hZ2VyJiBsb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2VyKGNv
bnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYpOwogICAgIGJvb2wgcmVtb3ZlT3JpZ2luU3RvcmFn
ZU1hbmFnZXJJZlBvc3NpYmxlKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYpOwogICAgIHZv
aWQgZGVsZXRlT3JpZ2luRGlyZWN0b3J5SWZQb3NzaWJsZShjb25zdCBXZWJDb3JlOjpDbGllbnRP
cmlnaW4mKTsKLSAgICBGaWxlU3lzdGVtU3RvcmFnZUhhbmRsZVJlZ2lzdHJ5JiBmaWxlU3lzdGVt
U3RvcmFnZUhhbmRsZVJlZ2lzdHJ5KCk7CiAKICAgICB2b2lkIGZvckVhY2hPcmlnaW5EaXJlY3Rv
cnkoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mKTsKICAgICBIYXNoU2V0PFdl
YkNvcmU6OkNsaWVudE9yaWdpbj4gZ2V0QWxsT3JpZ2lucygpOwpAQCAtMTE4LDYgKzEzOCwzNCBA
QCBwcml2YXRlOgogICAgIHZvaWQgcmVtb3ZlSXRlbShJUEM6OkNvbm5lY3Rpb24mLCBTdG9yYWdl
QXJlYUlkZW50aWZpZXIsIFN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXIsIFN0cmluZyYmIGtleSwg
U3RyaW5nJiYgdXJsU3RyaW5nLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZv
aWQgY2xlYXIoSVBDOjpDb25uZWN0aW9uJiwgU3RvcmFnZUFyZWFJZGVudGlmaWVyLCBTdG9yYWdl
QXJlYUltcGxJZGVudGlmaWVyLCBTdHJpbmcmJiB1cmxTdHJpbmcsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CiAKKyAgICAvLyBNZXNzYWdlIGhhbmRsZXJzIGZvciBJbmRleGVkREIuCisg
ICAgdm9pZCBvcGVuRGF0YWJhc2UoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6SURC
UmVxdWVzdERhdGEmKTsKKyAgICB2b2lkIG9wZW5EQlJlcXVlc3RDYW5jZWxsZWQoY29uc3QgV2Vi
Q29yZTo6SURCUmVxdWVzdERhdGEmKTsKKyAgICB2b2lkIGRlbGV0ZURhdGFiYXNlKElQQzo6Q29u
bmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJik7CisgICAgdm9pZCBlc3Rh
Ymxpc2hUcmFuc2FjdGlvbih1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBj
b25zdCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkluZm8mKTsKKyAgICB2b2lkIGRhdGFiYXNlQ29u
bmVjdGlvblBlbmRpbmdDbG9zZSh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVy
KTsKKyAgICB2b2lkIGRhdGFiYXNlQ29ubmVjdGlvbkNsb3NlZCh1aW50NjRfdCBkYXRhYmFzZUNv
bm5lY3Rpb25JZGVudGlmaWVyKTsKKyAgICB2b2lkIGFib3J0T3BlbkFuZFVwZ3JhZGVOZWVkZWQo
dWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURC
UmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpOworICAgIHZvaWQgZGlk
RmlyZVZlcnNpb25DaGFuZ2VFdmVudCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlm
aWVyLCBjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlm
aWVyLCBjb25zdCBXZWJDb3JlOjpJbmRleGVkREI6OkNvbm5lY3Rpb25DbG9zZWRPbkJlaGFsZk9m
U2VydmVyKTsKKyAgICB2b2lkIGFib3J0VHJhbnNhY3Rpb24oY29uc3QgV2ViQ29yZTo6SURCUmVz
b3VyY2VJZGVudGlmaWVyJik7CisgICAgdm9pZCBjb21taXRUcmFuc2FjdGlvbihjb25zdCBXZWJD
b3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImLCB1aW50NjRfdCBwZW5kaW5nUmVxdWVzdENvdW50
KTsKKyAgICB2b2lkIGRpZEZpbmlzaEhhbmRsaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKHVp
bnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OklEQlJl
c291cmNlSWRlbnRpZmllciYpOworICAgIHZvaWQgY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgV2Vi
Q29yZTo6SURCUmVxdWVzdERhdGEmLCBjb25zdCBXZWJDb3JlOjpJREJPYmplY3RTdG9yZUluZm8m
KTsKKyAgICB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3RE
YXRhJiwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUpOworICAgIHZvaWQgcmVuYW1lT2Jq
ZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmLCB1aW50NjRfdCBvYmplY3RT
dG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSk7CisgICAgdm9pZCBjbGVhck9i
amVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiwgdWludDY0X3Qgb2JqZWN0
U3RvcmVJZGVudGlmaWVyKTsKKyAgICB2b2lkIGNyZWF0ZUluZGV4KGNvbnN0IFdlYkNvcmU6OklE
QlJlcXVlc3REYXRhJiwgY29uc3QgV2ViQ29yZTo6SURCSW5kZXhJbmZvJik7CisgICAgdm9pZCBk
ZWxldGVJbmRleChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYsIHVpbnQ2NF90IG9iamVj
dFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpbmRleE5hbWUpOworICAgIHZvaWQgcmVu
YW1lSW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmLCB1aW50NjRfdCBvYmplY3RT
dG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBu
ZXdOYW1lKTsKKyAgICB2b2lkIHB1dE9yQWRkKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFdlYkNv
cmU6OklEQlJlcXVlc3REYXRhJiwgY29uc3QgV2ViQ29yZTo6SURCS2V5RGF0YSYsIGNvbnN0IFdl
YkNvcmU6OklEQlZhbHVlJiwgV2ViQ29yZTo6SW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0
ZU1vZGUpOworICAgIHZvaWQgZ2V0UmVjb3JkKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRh
JiwgY29uc3QgV2ViQ29yZTo6SURCR2V0UmVjb3JkRGF0YSYpOworICAgIHZvaWQgZ2V0QWxsUmVj
b3Jkcyhjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IFdlYkNvcmU6OklEQkdl
dEFsbFJlY29yZHNEYXRhJik7CisgICAgdm9pZCBnZXRDb3VudChjb25zdCBXZWJDb3JlOjpJREJS
ZXF1ZXN0RGF0YSYsIGNvbnN0IFdlYkNvcmU6OklEQktleVJhbmdlRGF0YSYpOworICAgIHZvaWQg
ZGVsZXRlUmVjb3JkKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiwgY29uc3QgV2ViQ29y
ZTo6SURCS2V5UmFuZ2VEYXRhJik7CisgICAgdm9pZCBvcGVuQ3Vyc29yKGNvbnN0IFdlYkNvcmU6
OklEQlJlcXVlc3REYXRhJiwgY29uc3QgV2ViQ29yZTo6SURCQ3Vyc29ySW5mbyYpOworICAgIHZv
aWQgaXRlcmF0ZUN1cnNvcihjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IFdl
YkNvcmU6OklEQkl0ZXJhdGVDdXJzb3JEYXRhJik7CisgICAgdm9pZCBnZXRBbGxEYXRhYmFzZU5h
bWVzQW5kVmVyc2lvbnMoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6SURCUmVzb3Vy
Y2VJZGVudGlmaWVyJiwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJik7CisKICAgICBQQUw6
OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKICAgICBSZWY8U3VzcGVuZGFibGVXb3JrUXVldWU+IG1f
cXVldWU7CiAgICAgU3RyaW5nIG1fcGF0aDsKQEAgLTEyNyw3ICsxNzUsMTQgQEAgcHJpdmF0ZToK
ICAgICBXZWFrSGFzaFNldDxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbnM7IC8vIE1haW4g
dGhyZWFkIG9ubHkuCiAgICAgc3RkOjp1bmlxdWVfcHRyPEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxl
UmVnaXN0cnk+IG1fZmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeTsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8U3RvcmFnZUFyZWFSZWdpc3RyeT4gbV9zdG9yYWdlQXJlYVJlZ2lzdHJ5OworICAg
IHN0ZDo6dW5pcXVlX3B0cjxJREJTdG9yYWdlUmVnaXN0cnk+IG1faWRiU3RvcmFnZVJlZ2lzdHJ5
OwogICAgIFN0cmluZyBtX2N1c3RvbUxvY2FsU3RvcmFnZVBhdGg7CisgICAgU3RyaW5nIG1fY3Vz
dG9tSURCU3RvcmFnZVBhdGg7CisgICAgU3RyaW5nIG1fY3VzdG9tQ2FjaGVTdG9yYWdlUGF0aDsK
KyAgICB1aW50NjRfdCBtX2RlZmF1bHRPcmlnaW5RdW90YTsKKyAgICB1aW50NjRfdCBtX2RlZmF1
bHRUaGlyZFBhcnR5T3JpZ2luUXVvdGE7CisgICAgSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBt
X3BhcmVudENvbm5lY3Rpb247CisgICAgSGFzaE1hcDxJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlE
LCBIYXNoU2V0PFN0cmluZz4+IG1fdGVtcG9yYXJ5QmxvYlBhdGhzQnlDb25uZWN0aW9uOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5t
ZXNzYWdlcy5pbgppbmRleCA1MGI5NjcwMWIwNzBkZDVjMzI3MTFkYjE0Mjc5MzAzZmU2NTIxMWI3
Li40NzMwNWUwZTk4MWNhNWNmYWUwNzc0MjZiZjI0Yjc4MTVhNGQ2NGNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2Vy
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9O
ZXR3b3JrU3RvcmFnZU1hbmFnZXIubWVzc2FnZXMuaW4KQEAgLTQ3LDQgKzQ3LDMxIEBACiAgICAg
U2V0SXRlbShXZWJLaXQ6OlN0b3JhZ2VBcmVhSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJLaXQ6
OlN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXIgaW1wbElkZW50aWZpZXIsIFN0cmluZyBrZXksIFN0
cmluZyB2YWx1ZSwgU3RyaW5nIHVybFN0cmluZykgLT4gKGJvb2wgcXVvdGFFeGNlcHRpb24pIEFz
eW5jIFdhbnRzQ29ubmVjdGlvbgogICAgIFJlbW92ZUl0ZW0oV2ViS2l0OjpTdG9yYWdlQXJlYUlk
ZW50aWZpZXIgaWRlbnRpZmllciwgV2ViS2l0OjpTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyIGlt
cGxJZGVudGlmaWVyLCBTdHJpbmcga2V5LCBTdHJpbmcgdXJsU3RyaW5nKSAtPiAoKSBBc3luYyBX
YW50c0Nvbm5lY3Rpb24KICAgICBDbGVhcihXZWJLaXQ6OlN0b3JhZ2VBcmVhSWRlbnRpZmllciBp
ZGVudGlmaWVyLCBXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXIgaW1wbElkZW50aWZp
ZXIsIFN0cmluZyB1cmxTdHJpbmcpIC0+ICgpIEFzeW5jIFdhbnRzQ29ubmVjdGlvbgorCisgICAg
T3BlbkRhdGFiYXNlKFdlYkNvcmU6OklEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhKSBXYW50c0Nv
bm5lY3Rpb24KKyAgICBPcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKFdlYkNvcmU6OklEQlJlcXVlc3RE
YXRhIHJlcXVlc3REYXRhKQorICAgIERlbGV0ZURhdGFiYXNlKFdlYkNvcmU6OklEQlJlcXVlc3RE
YXRhIHJlcXVlc3REYXRhKSBXYW50c0Nvbm5lY3Rpb24KKyAgICBFc3RhYmxpc2hUcmFuc2FjdGlv
bih1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpJREJUcmFu
c2FjdGlvbkluZm8gaW5mbykKKyAgICBEYXRhYmFzZUNvbm5lY3Rpb25QZW5kaW5nQ2xvc2UodWlu
dDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcikKKyAgICBEYXRhYmFzZUNvbm5lY3Rp
b25DbG9zZWQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcikKKyAgICBBYm9y
dE9wZW5BbmRVcGdyYWRlTmVlZGVkKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZp
ZXIsIFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciB0cmFuc2FjdGlvbklkZW50aWZpZXIp
CisgICAgRGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rp
b25JZGVudGlmaWVyLCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXIgcmVxdWVzdElkZW50
aWZpZXIsIFdlYkNvcmU6OkluZGV4ZWREQjo6Q29ubmVjdGlvbkNsb3NlZE9uQmVoYWxmT2ZTZXJ2
ZXIgY29ubmVjdGlvbkNsb3NlZE9uQmVoYWxmT2ZTZXJ2ZXIpCisgICAgRGlkRmluaXNoSGFuZGxp
bmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24odWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRl
bnRpZmllciwgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyIHRyYW5zYWN0aW9uSWRlbnRp
ZmllcikKKyAgICBBYm9ydFRyYW5zYWN0aW9uKFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmll
ciB0cmFuc2FjdGlvbklkZW50aWZpZXIpCisgICAgQ29tbWl0VHJhbnNhY3Rpb24oV2ViQ29yZTo6
SURCUmVzb3VyY2VJZGVudGlmaWVyIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgcGVu
ZGluZ1JlcXVlc3RDb3VudCkKKyAgICBDcmVhdGVPYmplY3RTdG9yZShXZWJDb3JlOjpJREJSZXF1
ZXN0RGF0YSByZXF1ZXN0RGF0YSwgV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVJbmZvIGluZm8pCisg
ICAgRGVsZXRlT2JqZWN0U3RvcmUoV2ViQ29yZTo6SURCUmVxdWVzdERhdGEgcmVxdWVzdERhdGEs
IFN0cmluZyBvYmplY3RTdG9yZU5hbWUpCisgICAgUmVuYW1lT2JqZWN0U3RvcmUoV2ViQ29yZTo6
SURCUmVxdWVzdERhdGEgcmVxdWVzdERhdGEsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmll
ciwgU3RyaW5nIG5ld05hbWUpCisgICAgQ2xlYXJPYmplY3RTdG9yZShXZWJDb3JlOjpJREJSZXF1
ZXN0RGF0YSByZXF1ZXN0RGF0YSwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyKQorICAg
IENyZWF0ZUluZGV4KFdlYkNvcmU6OklEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhLCBXZWJDb3Jl
OjpJREJJbmRleEluZm8gaW5mbykKKyAgICBEZWxldGVJbmRleChXZWJDb3JlOjpJREJSZXF1ZXN0
RGF0YSByZXF1ZXN0RGF0YSwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBTdHJpbmcg
aW5kZXhOYW1lKQorICAgIFJlbmFtZUluZGV4KFdlYkNvcmU6OklEQlJlcXVlc3REYXRhIHJlcXVl
c3REYXRhLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRl
bnRpZmllciwgU3RyaW5nIG5ld05hbWUpCisgICAgUHV0T3JBZGQoV2ViQ29yZTo6SURCUmVxdWVz
dERhdGEgcmVxdWVzdERhdGEsIFdlYkNvcmU6OklEQktleURhdGEga2V5LCBXZWJDb3JlOjpJREJW
YWx1ZSB2YWx1ZSwgV2ViQ29yZTo6SW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUg
b3ZlcndyaXRlTW9kZSkgV2FudHNDb25uZWN0aW9uCisgICAgR2V0UmVjb3JkKFdlYkNvcmU6OklE
QlJlcXVlc3REYXRhIHJlcXVlc3REYXRhLCBzdHJ1Y3QgV2ViQ29yZTo6SURCR2V0UmVjb3JkRGF0
YSBnZXRSZWNvcmREYXRhKQorICAgIEdldEFsbFJlY29yZHMoV2ViQ29yZTo6SURCUmVxdWVzdERh
dGEgcmVxdWVzdERhdGEsIHN0cnVjdCBXZWJDb3JlOjpJREJHZXRBbGxSZWNvcmRzRGF0YSBnZXRB
bGxSZWNvcmRzRGF0YSkKKyAgICBHZXRDb3VudChXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSByZXF1
ZXN0RGF0YSwgc3RydWN0IFdlYkNvcmU6OklEQktleVJhbmdlRGF0YSByYW5nZSkKKyAgICBEZWxl
dGVSZWNvcmQoV2ViQ29yZTo6SURCUmVxdWVzdERhdGEgcmVxdWVzdERhdGEsIHN0cnVjdCBXZWJD
b3JlOjpJREJLZXlSYW5nZURhdGEgcmFuZ2UpCisgICAgT3BlbkN1cnNvcihXZWJDb3JlOjpJREJS
ZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YSwgV2ViQ29yZTo6SURCQ3Vyc29ySW5mbyBpbmZvKQorICAg
IEl0ZXJhdGVDdXJzb3IoV2ViQ29yZTo6SURCUmVxdWVzdERhdGEgcmVxdWVzdERhdGEsIHN0cnVj
dCBXZWJDb3JlOjpJREJJdGVyYXRlQ3Vyc29yRGF0YSBkYXRhKQorICAgIEdldEFsbERhdGFiYXNl
TmFtZXNBbmRWZXJzaW9ucyhXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXIgcmVxdWVzdElk
ZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luKSBXYW50c0Nvbm5l
Y3Rpb24KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFn
ZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IDIzNGMwOWFiMjk1NTg0YmRh
ODliZTc0ZTkzODM2ZGZjYTFlYTgyZGUuLjk2NTRiY2Q1ZWE4NTE2NmE5Y2EzNzE3OGEwYWM4MTEy
NTFlYmVjYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFn
ZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2VyLmNwcApAQCAtMjYsOCArMjYsMTEgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJPcmlnaW5TdG9yYWdlTWFuYWdlci5oIgog
CisjaW5jbHVkZSAiQ2FjaGVTdG9yYWdlRW5naW5lLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbVN0
b3JhZ2VIYW5kbGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdl
ci5oIgorI2luY2x1ZGUgIklEQlN0b3JhZ2VNYW5hZ2VyLmgiCisjaW5jbHVkZSAiSURCU3RvcmFn
ZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiTG9jYWxTdG9yYWdlTWFuYWdlci5oIgogI2luY2x1ZGUg
Ik1lbW9yeVN0b3JhZ2VBcmVhLmgiCiAjaW5jbHVkZSAiU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyLmgi
CkBAIC00NCwxMCArNDcsMTEgQEAgZW51bSBjbGFzcyBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6U3Rv
cmFnZUJ1Y2tldE1vZGUgOiBib29sIHsgQmVzdEVmZm9ydCwgUGVyc2lzdGUKIGNsYXNzIE9yaWdp
blN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKLSAgICBTdG9yYWdlQnVja2V0KGNvbnN0IFN0cmluZyYgcm9vdFBhdGgs
IGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VQYXRo
KQorICAgIFN0b3JhZ2VCdWNrZXQoY29uc3QgU3RyaW5nJiByb290UGF0aCwgY29uc3QgU3RyaW5n
JiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZVBhdGgsIGNvbnN0IFN0cmlu
ZyYgaWRiU3RvcmFnZVBhdGgpCiAgICAgICAgIDogbV9yb290UGF0aChyb290UGF0aCkKICAgICAg
ICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKICAgICAgICAgLCBtX2xvY2FsU3RvcmFnZVBh
dGgobG9jYWxTdG9yYWdlUGF0aCkKKyAgICAgICAgLCBtX2lkYlN0b3JhZ2VQYXRoKGlkYlN0b3Jh
Z2VQYXRoKQogICAgIHsKICAgICB9CiAKQEAgLTcwLDYgKzc0LDcgQEAgcHVibGljOgogICAgICAg
ICBGaWxlU3lzdGVtLAogICAgICAgICBMb2NhbFN0b3JhZ2UsCiAgICAgICAgIFNlc3Npb25TdG9y
YWdlLAorICAgICAgICBJbmRleGVkREIsCiAgICAgfTsKIAogICAgIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPFdlYnNpdGVEYXRhVHlwZT4gdG9XZWJzaXRlRGF0YVR5cGUoY29uc3QgU3RyaW5nJiBzdG9y
YWdlSWRlbnRpZmllcikKQEAgLTgwLDYgKzg1LDggQEAgcHVibGljOgogICAgICAgICAgICAgcmV0
dXJuIFdlYnNpdGVEYXRhVHlwZTo6TG9jYWxTdG9yYWdlOwogICAgICAgICBpZiAoc3RvcmFnZUlk
ZW50aWZpZXIgPT0gIlNlc3Npb25TdG9yYWdlIl9zKQogICAgICAgICAgICAgcmV0dXJuIFdlYnNp
dGVEYXRhVHlwZTo6U2Vzc2lvblN0b3JhZ2U7CisgICAgICAgIGlmIChzdG9yYWdlSWRlbnRpZmll
ciA9PSAiSW5kZXhlZERCIl9zKQorICAgICAgICAgICAgcmV0dXJuIFdlYnNpdGVEYXRhVHlwZTo6
SW5kZXhlZERCRGF0YWJhc2VzOwogCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
fQpAQCAtOTMsNiArMTAwLDggQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuICJMb2NhbFN0
b3JhZ2UiX3M7CiAgICAgICAgIGNhc2UgU3RvcmFnZVR5cGU6OlNlc3Npb25TdG9yYWdlOgogICAg
ICAgICAgICAgcmV0dXJuICJTZXNzaW9uU3RvcmFnZSJfczsKKyAgICAgICAgY2FzZSBTdG9yYWdl
VHlwZTo6SW5kZXhlZERCOgorICAgICAgICAgICAgcmV0dXJuICJJbmRleGVkREIiX3M7CiAgICAg
ICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMTQzLDEzICsx
NTIsMjcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9zZXNzaW9uU3RvcmFnZU1hbmFnZXIu
Z2V0KCk7CiAgICAgfQogCisgICAgSURCU3RvcmFnZU1hbmFnZXImIGlkYlN0b3JhZ2VNYW5hZ2Vy
KElEQlN0b3JhZ2VSZWdpc3RyeSYgcmVnaXN0cnksIElEQlN0b3JhZ2VNYW5hZ2VyOjpRdW90YUNo
ZWNrRnVuY3Rpb24mJiBxdW90YUNoZWNrRnVuY3Rpb24pCisgICAgeworICAgICAgICBpZiAoIW1f
aWRiU3RvcmFnZU1hbmFnZXIpCisgICAgICAgICAgICBtX2lkYlN0b3JhZ2VNYW5hZ2VyID0gbWFr
ZVVuaXF1ZTxJREJTdG9yYWdlTWFuYWdlcj4obV9pZGJTdG9yYWdlUGF0aCwgcmVnaXN0cnksIFdU
Rk1vdmUocXVvdGFDaGVja0Z1bmN0aW9uKSk7CisKKyAgICAgICAgcmV0dXJuICptX2lkYlN0b3Jh
Z2VNYW5hZ2VyOworICAgIH0KKworICAgIElEQlN0b3JhZ2VNYW5hZ2VyKiBleGlzdGluZ0lEQlN0
b3JhZ2VNYW5hZ2VyKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2lkYlN0b3JhZ2VNYW5hZ2Vy
LmdldCgpOworICAgIH0KKwogICAgIGJvb2wgaXNBY3RpdmUoKSBjb25zdAogICAgIHsKICAgICAg
ICAgLy8gV2UgY2Fubm90IHJlbW92ZSB0aGUgYnVja2V0IGlmIGl0IGhhcyBpbi1tZW1vcnkgZGF0
YSwgb3RoZXJ3aXNlIHNlc3Npb24KICAgICAgICAgLy8gZGF0YSBtYXkgYmUgbG9zdC4KICAgICAg
ICAgcmV0dXJuIChtX2ZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlciAmJiBtX2ZpbGVTeXN0ZW1TdG9y
YWdlTWFuYWdlci0+aXNBY3RpdmUoKSkKICAgICAgICAgICAgIHx8IChtX2xvY2FsU3RvcmFnZU1h
bmFnZXIgJiYgKG1fbG9jYWxTdG9yYWdlTWFuYWdlci0+aGFzRGF0YUluTWVtb3J5KCkgfHwgbV9s
b2NhbFN0b3JhZ2VNYW5hZ2VyLT5pc0FjdGl2ZSgpKSkKLSAgICAgICAgICAgIHx8IChtX3Nlc3Np
b25TdG9yYWdlTWFuYWdlciAmJiAobV9zZXNzaW9uU3RvcmFnZU1hbmFnZXItPmhhc0RhdGFJbk1l
bW9yeSgpIHx8IG1fc2Vzc2lvblN0b3JhZ2VNYW5hZ2VyLT5pc0FjdGl2ZSgpKSk7CisgICAgICAg
ICAgICB8fCAobV9zZXNzaW9uU3RvcmFnZU1hbmFnZXIgJiYgKG1fc2Vzc2lvblN0b3JhZ2VNYW5h
Z2VyLT5oYXNEYXRhSW5NZW1vcnkoKSB8fCBtX3Nlc3Npb25TdG9yYWdlTWFuYWdlci0+aXNBY3Rp
dmUoKSkpCisgICAgICAgICAgICB8fCAobV9pZGJTdG9yYWdlTWFuYWdlciAmJiAobV9pZGJTdG9y
YWdlTWFuYWdlci0+aGFzRGF0YUluTWVtb3J5KCkgfHwgbV9pZGJTdG9yYWdlTWFuYWdlci0+aXNB
Y3RpdmUoKSkpOwogICAgIH0KIAogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0CkBAIC0xNjUsNyAr
MTg4LDggQEAgcHVibGljOgogICAgICAgICBpZiAoaGFzVmFsaWRGaWxlKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgICAgIHJldHVybiAhRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyht
X2xvY2FsU3RvcmFnZVBhdGgpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVj
dG9yeShtX2lkYlN0b3JhZ2VQYXRoKTsKKyAgICAgICAgcmV0dXJuICFGaWxlU3lzdGVtOjpmaWxl
RXhpc3RzKG1fbG9jYWxTdG9yYWdlUGF0aCkgJiYgIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobV9p
ZGJTdG9yYWdlUGF0aCk7CiAgICAgfQogCiAgICAgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4g
ZmV0Y2hEYXRhVHlwZXNJbkxpc3QoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gdHlwZXMpCkBA
IC0xODYsOSArMjEwLDEyIEBAIHB1YmxpYzoKIAogICAgICAgICBpZiAodHlwZXMuY29udGFpbnMo
V2Vic2l0ZURhdGFUeXBlOjpTZXNzaW9uU3RvcmFnZSkgJiYgbW9kaWZpZWRTaW5jZVRpbWUgPCBX
YWxsVGltZTo6bm93KCkpCiAgICAgICAgICAgICBkZWxldGVTZXNzaW9uU3RvcmFnZURhdGEoKTsK
KworICAgICAgICBpZiAodHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJE
YXRhYmFzZXMpKQorICAgICAgICAgICAgZGVsZXRlSURCU3RvcmFnZURhdGEobW9kaWZpZWRTaW5j
ZVRpbWUpOwogICAgIH0KIAotICAgIHZvaWQgbW92ZURhdGEoY29uc3QgU3RyaW5nJiBwYXRoLCBj
b25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZVBhdGgpCisgICAgdm9pZCBtb3ZlRGF0YShjb25zdCBT
dHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlUGF0aCwgY29uc3QgU3RyaW5n
JiBpZGJTdG9yYWdlUGF0aCkKICAgICB7CiAgICAgICAgIG1fZmlsZVN5c3RlbVN0b3JhZ2VNYW5h
Z2VyID0gbnVsbHB0cjsKICAgICAgICAgaWYgKG1fbG9jYWxTdG9yYWdlTWFuYWdlcikKQEAgLTIw
MSw2ICsyMjgsMTEgQEAgcHVibGljOgogICAgICAgICAgICAgRmlsZVN5c3RlbTo6bWFrZUFsbERp
cmVjdG9yaWVzKEZpbGVTeXN0ZW06OnBhcmVudFBhdGgobG9jYWxTdG9yYWdlUGF0aCkpOwogICAg
ICAgICAgICAgV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6bW92ZURhdGFiYXNlRmlsZShtX2xv
Y2FsU3RvcmFnZVBhdGgsIGxvY2FsU3RvcmFnZVBhdGgpOwogICAgICAgICB9CisKKyAgICAgICAg
aWYgKCFtX2lkYlN0b3JhZ2VQYXRoLmlzRW1wdHkoKSAmJiAhaWRiU3RvcmFnZVBhdGguaXNFbXB0
eSgpKSB7CisgICAgICAgICAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoRmlsZVN5
c3RlbTo6cGFyZW50UGF0aChpZGJTdG9yYWdlUGF0aCkpOworICAgICAgICAgICAgV2ViQ29yZTo6
U1FMaXRlRmlsZVN5c3RlbTo6bW92ZURhdGFiYXNlRmlsZShtX2lkYlN0b3JhZ2VQYXRoLCBpZGJT
dG9yYWdlUGF0aCk7CisgICAgICAgIH0KICAgICB9CiAKIHByaXZhdGU6CkBAIC0yMTcsNiArMjQ5
LDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgcmVzdWx0LmFkZChXZWJzaXRlRGF0YVR5
cGU6OlNlc3Npb25TdG9yYWdlKTsKICAgICAgICAgfQogCisgICAgICAgIGlmICh0eXBlcy5jb250
YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykpIHsKKyAgICAgICAgICAg
IGlmIChtX2lkYlN0b3JhZ2VNYW5hZ2VyICYmIG1faWRiU3RvcmFnZU1hbmFnZXItPmhhc0RhdGFJ
bk1lbW9yeSgpKQorICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQoV2Vic2l0ZURhdGFUeXBlOjpJ
bmRleGVkREJEYXRhYmFzZXMpOworICAgICAgICB9CisKICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICB9CiAKQEAgLTIzMyw2ICsyNzAsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBy
ZXN1bHQuYWRkKFdlYnNpdGVEYXRhVHlwZTo6TG9jYWxTdG9yYWdlKTsKICAgICAgICAgfQogCisg
ICAgICAgIGlmICh0eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFi
YXNlcykgJiYgIXJlc3VsdC5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFi
YXNlcykpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIGRhdGFiYXNlcyA9IEZpbGVTeXN0ZW06Omxp
c3REaXJlY3RvcnkobV9pZGJTdG9yYWdlUGF0aCk7ICFkYXRhYmFzZXMuaXNFbXB0eSgpKQorICAg
ICAgICAgICAgICAgIHJlc3VsdC5hZGQoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFz
ZXMpOworICAgICAgICB9CisKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKQEAgLTI3
MCw2ICszMTIsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1fc2Vzc2lvblN0b3JhZ2VNYW5h
Z2VyID0gbnVsbHB0cjsKICAgICB9CiAgICAgCisgICAgdm9pZCBkZWxldGVJREJTdG9yYWdlRGF0
YShXYWxsVGltZSB0aW1lKQorICAgIHsKKyAgICAgICAgaWYgKG1faWRiU3RvcmFnZU1hbmFnZXIp
CisgICAgICAgICAgICBtX2lkYlN0b3JhZ2VNYW5hZ2VyLT5jbG9zZURhdGFiYXNlc0ZvckRlbGV0
aW9uKCk7CisKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlQWxsRmlsZXNNb2RpZmllZFNpbmNl
KG1faWRiU3RvcmFnZVBhdGgsIHRpbWUpOworICAgIH0KKyAgICAKICAgICBTdHJpbmcgbV9yb290
UGF0aDsKICAgICBTdHJpbmcgbV9pZGVudGlmaWVyOwogICAgIFN0b3JhZ2VCdWNrZXRNb2RlIG1f
bW9kZSB7IFN0b3JhZ2VCdWNrZXRNb2RlOjpCZXN0RWZmb3J0IH07CkBAIC0yNzcsMTEgKzMyNywy
NCBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxMb2NhbFN0b3JhZ2VNYW5hZ2VyPiBt
X2xvY2FsU3RvcmFnZU1hbmFnZXI7CiAgICAgU3RyaW5nIG1fbG9jYWxTdG9yYWdlUGF0aDsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8U2Vzc2lvblN0b3JhZ2VNYW5hZ2VyPiBtX3Nlc3Npb25TdG9yYWdl
TWFuYWdlcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SURCU3RvcmFnZU1hbmFnZXI+IG1faWRiU3Rv
cmFnZU1hbmFnZXI7CisgICAgU3RyaW5nIG1faWRiU3RvcmFnZVBhdGg7CiB9OwogCi1PcmlnaW5T
dG9yYWdlTWFuYWdlcjo6T3JpZ2luU3RvcmFnZU1hbmFnZXIoU3RyaW5nJiYgcGF0aCwgU3RyaW5n
JiYgbG9jYWxTdG9yYWdlUGF0aCkKK3N0YXRpYyBSZWY8UXVvdGFNYW5hZ2VyPiBjcmVhdGVRdW90
YU1hbmFnZXIodWludDY0X3QgcXVvdGEsIGNvbnN0IFN0cmluZyYgaWRiU3RvcmFnZVBhdGgsIGNv
bnN0IFN0cmluZyYgY2FjaGVTdG9yYWdlUGF0aCwgUXVvdGFNYW5hZ2VyOjpJbmNyZWFzZVF1b3Rh
RnVuY3Rpb24mJiBpbmNyZWFzZVF1b3RhRnVuY3Rpb24pCit7CisgICAgUXVvdGFNYW5hZ2VyOjpH
ZXRVc2FnZUZ1bmN0aW9uIGdldFVzYWdlRnVuY3Rpb24gPSBbaWRiU3RvcmFnZVBhdGgsIGNhY2hl
U3RvcmFnZVBhdGhdKCkgeworICAgICAgICByZXR1cm4gSURCU3RvcmFnZU1hbmFnZXI6OmlkYlN0
b3JhZ2VTaXplKGlkYlN0b3JhZ2VQYXRoKSArIENhY2hlU3RvcmFnZTo6RW5naW5lOjpkaXNrVXNh
Z2UoY2FjaGVTdG9yYWdlUGF0aCk7CisgICAgfTsKKyAgICByZXR1cm4gUXVvdGFNYW5hZ2VyOjpj
cmVhdGUocXVvdGEsIFdURk1vdmUoZ2V0VXNhZ2VGdW5jdGlvbiksIFdURk1vdmUoaW5jcmVhc2VR
dW90YUZ1bmN0aW9uKSk7Cit9CisKK09yaWdpblN0b3JhZ2VNYW5hZ2VyOjpPcmlnaW5TdG9yYWdl
TWFuYWdlcih1aW50NjRfdCBxdW90YSwgUXVvdGFNYW5hZ2VyOjpJbmNyZWFzZVF1b3RhRnVuY3Rp
b24mJiBpbmNyZWFzZVF1b3RhRnVuY3Rpb24sIFN0cmluZyYmIHBhdGgsIFN0cmluZyYmIGxvY2Fs
U3RvcmFnZVBhdGgsIFN0cmluZyYmIGlkYlN0b3JhZ2VQYXRoLCBTdHJpbmcmJiBjYWNoZVN0b3Jh
Z2VQYXRoKQogICAgIDogbV9wYXRoKFdURk1vdmUocGF0aCkpCiAgICAgLCBtX2xvY2FsU3RvcmFn
ZVBhdGgoV1RGTW92ZShsb2NhbFN0b3JhZ2VQYXRoKSkKKyAgICAsIG1faWRiU3RvcmFnZVBhdGgo
V1RGTW92ZShpZGJTdG9yYWdlUGF0aCkpCisgICAgLCBtX2NhY2hlU3RvcmFnZVBhdGgoV1RGTW92
ZShjYWNoZVN0b3JhZ2VQYXRoKSkKKyAgICAsIG1fcXVvdGFNYW5hZ2VyKGNyZWF0ZVF1b3RhTWFu
YWdlcihxdW90YSwgbV9pZGJTdG9yYWdlUGF0aCwgbV9jYWNoZVN0b3JhZ2VQYXRoLCBXVEZNb3Zl
KGluY3JlYXNlUXVvdGFGdW5jdGlvbikpKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWlu
KCkpOwogfQpAQCAtMjk3LDExICszNjAsMTYgQEAgdm9pZCBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6
Y29ubmVjdGlvbkNsb3NlZChJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGNvbm5lY3Rpb24KIE9y
aWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0JiBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6
ZGVmYXVsdEJ1Y2tldCgpCiB7CiAgICAgaWYgKCFtX2RlZmF1bHRCdWNrZXQpCi0gICAgICAgIG1f
ZGVmYXVsdEJ1Y2tldCA9IG1ha2VVbmlxdWU8U3RvcmFnZUJ1Y2tldD4obV9wYXRoLCAiZGVmYXVs
dCJfcywgbV9sb2NhbFN0b3JhZ2VQYXRoKTsKKyAgICAgICAgbV9kZWZhdWx0QnVja2V0ID0gbWFr
ZVVuaXF1ZTxTdG9yYWdlQnVja2V0PihtX3BhdGgsICJkZWZhdWx0Il9zLCBtX2xvY2FsU3RvcmFn
ZVBhdGgsIG1faWRiU3RvcmFnZVBhdGgpOwogCiAgICAgcmV0dXJuICptX2RlZmF1bHRCdWNrZXQ7
CiB9CiAKK1F1b3RhTWFuYWdlciYgT3JpZ2luU3RvcmFnZU1hbmFnZXI6OnF1b3RhTWFuYWdlcigp
Cit7CisgICAgcmV0dXJuIG1fcXVvdGFNYW5hZ2VyLmdldCgpOworfQorCiBGaWxlU3lzdGVtU3Rv
cmFnZU1hbmFnZXImIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpmaWxlU3lzdGVtU3RvcmFnZU1hbmFn
ZXIoRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeSYgcmVnaXN0cnkpCiB7CiAgICAgcmV0
dXJuIGRlZmF1bHRCdWNrZXQoKS5maWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIocmVnaXN0cnkpOwpA
QCAtMzI3LDYgKzM5NSwyMyBAQCBTZXNzaW9uU3RvcmFnZU1hbmFnZXIqIE9yaWdpblN0b3JhZ2VN
YW5hZ2VyOjpleGlzdGluZ1Nlc3Npb25TdG9yYWdlTWFuYWdlcigpCiAgICAgcmV0dXJuIGRlZmF1
bHRCdWNrZXQoKS5leGlzdGluZ1Nlc3Npb25TdG9yYWdlTWFuYWdlcigpOwogfQogCitJREJTdG9y
YWdlTWFuYWdlciYgT3JpZ2luU3RvcmFnZU1hbmFnZXI6OmlkYlN0b3JhZ2VNYW5hZ2VyKElEQlN0
b3JhZ2VSZWdpc3RyeSYgcmVnaXN0cnkpCit7CisgICAgcmV0dXJuIGRlZmF1bHRCdWNrZXQoKS5p
ZGJTdG9yYWdlTWFuYWdlcihyZWdpc3RyeSwgW3F1b3RhTWFuYWdlciA9IFdlYWtQdHIgeyB0aGlz
LT5xdW90YU1hbmFnZXIoKSB9XSh1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgbXV0YWJsZSB7CisgICAgICAg
IGlmICghcXVvdGFNYW5hZ2VyKQorICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVy
KGZhbHNlKTsKKworICAgICAgICBxdW90YU1hbmFnZXItPnJlcXVlc3RTcGFjZShzcGFjZVJlcXVl
c3RlZCwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1
dG8gZGVjaXNpb24pIG11dGFibGUgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZGVj
aXNpb24gPT0gUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbjo6R3JhbnQpOworICAgICAgICB9KTsKKyAg
ICB9KTsKK30KKworSURCU3RvcmFnZU1hbmFnZXIqIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpleGlz
dGluZ0lEQlN0b3JhZ2VNYW5hZ2VyKCkKK3sKKyAgICByZXR1cm4gZGVmYXVsdEJ1Y2tldCgpLmV4
aXN0aW5nSURCU3RvcmFnZU1hbmFnZXIoKTsKK30KKwogYm9vbCBPcmlnaW5TdG9yYWdlTWFuYWdl
cjo6aXNBY3RpdmUoKQogewogICAgIHJldHVybiBkZWZhdWx0QnVja2V0KCkuaXNBY3RpdmUoKTsK
QEAgLTM1OSwxMSArNDQ0LDExIEBAIHZvaWQgT3JpZ2luU3RvcmFnZU1hbmFnZXI6OmRlbGV0ZURh
dGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gdHlwZXMsIFdhbGxUaW1lCiAgICAgZGVmYXVs
dEJ1Y2tldCgpLmRlbGV0ZURhdGEodHlwZXMsIG1vZGlmaWVkU2luY2UpOwogfQogCi12b2lkIE9y
aWdpblN0b3JhZ2VNYW5hZ2VyOjptb3ZlRGF0YShjb25zdCBTdHJpbmcmIG5ld1BhdGgsIGNvbnN0
IFN0cmluZyYgbG9jYWxTdG9yYWdlUGF0aCkKK3ZvaWQgT3JpZ2luU3RvcmFnZU1hbmFnZXI6Om1v
dmVEYXRhKGNvbnN0IFN0cmluZyYgbmV3UGF0aCwgY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VQ
YXRoLCBjb25zdCBTdHJpbmcmIGlkYlN0b3JhZ2VQYXRoKQogewogICAgIEFTU0VSVCghUnVuTG9v
cDo6aXNNYWluKCkpOwogCi0gICAgZGVmYXVsdEJ1Y2tldCgpLm1vdmVEYXRhKG5ld1BhdGgsIGxv
Y2FsU3RvcmFnZVBhdGgpOworICAgIGRlZmF1bHRCdWNrZXQoKS5tb3ZlRGF0YShuZXdQYXRoLCBs
b2NhbFN0b3JhZ2VQYXRoLCBpZGJTdG9yYWdlUGF0aCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09y
aWdpblN0b3JhZ2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3Jh
Z2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuaAppbmRleCA1ZTc2Njk5ODZlNDY2ODVmMzg5YjdhNTI3
MWU2NmQwZTYzYzJkMTllLi5lYzQ2YzU0YjMxMTFmYjAxYjNjZTY5NjkyMDdjMTNiZTVkOTk5ZDk2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2lu
U3RvcmFnZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3Jh
Z2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuaApAQCAtMjYsMTYgKzI2LDE1IEBACiAjcHJhZ21hIG9u
Y2UKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJRdW90YU1hbmFnZXIuaCIK
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgewot
c3RydWN0IENsaWVudE9yaWdpbjsKLX0KLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEZp
bGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnk7CiBjbGFzcyBGaWxlU3lzdGVtU3RvcmFnZU1h
bmFnZXI7CitjbGFzcyBJREJTdG9yYWdlTWFuYWdlcjsKK2NsYXNzIElEQlN0b3JhZ2VSZWdpc3Ry
eTsKIGNsYXNzIExvY2FsU3RvcmFnZU1hbmFnZXI7CiBjbGFzcyBTZXNzaW9uU3RvcmFnZU1hbmFn
ZXI7CiBjbGFzcyBTdG9yYWdlQXJlYVJlZ2lzdHJ5OwpAQCAtNDQsMzUgKzQzLDM4IEBAIGVudW0g
Y2xhc3MgV2Vic2l0ZURhdGFUeXBlIDogdWludDMyX3Q7CiBjbGFzcyBPcmlnaW5TdG9yYWdlTWFu
YWdlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgT3JpZ2lu
U3RvcmFnZU1hbmFnZXIoU3RyaW5nJiYgcGF0aCwgU3RyaW5nJiYgbG9jYWxTdG9yYWdlUGF0aCk7
CisgICAgT3JpZ2luU3RvcmFnZU1hbmFnZXIodWludDY0X3QgcXVvdGEsIFF1b3RhTWFuYWdlcjo6
SW5jcmVhc2VRdW90YUZ1bmN0aW9uJiYsIFN0cmluZyYmIHBhdGgsIFN0cmluZyYmIGxvY2FsU3Rv
cmFnZVBhdGgsIFN0cmluZyYmIGlkYlN0b3JhZ2VQYXRoLCBTdHJpbmcmJiBjYWNoZVN0b3JhZ2VQ
YXRoKTsKICAgICB+T3JpZ2luU3RvcmFnZU1hbmFnZXIoKTsKIAogICAgIHZvaWQgY29ubmVjdGlv
bkNsb3NlZChJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEKTsKICAgICBib29sIHBlcnNpc3RlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fcGVyc2lzdGVkOyB9CiAgICAgdm9pZCBzZXRQZXJzaXN0ZWQoYm9v
bCB2YWx1ZSk7CisgICAgUXVvdGFNYW5hZ2VyJiBxdW90YU1hbmFnZXIoKTsKICAgICBGaWxlU3lz
dGVtU3RvcmFnZU1hbmFnZXImIGZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlcihGaWxlU3lzdGVtU3Rv
cmFnZUhhbmRsZVJlZ2lzdHJ5Jik7CiAgICAgTG9jYWxTdG9yYWdlTWFuYWdlciYgbG9jYWxTdG9y
YWdlTWFuYWdlcihTdG9yYWdlQXJlYVJlZ2lzdHJ5Jik7CiAgICAgTG9jYWxTdG9yYWdlTWFuYWdl
ciogZXhpc3RpbmdMb2NhbFN0b3JhZ2VNYW5hZ2VyKCk7CiAgICAgU2Vzc2lvblN0b3JhZ2VNYW5h
Z2VyJiBzZXNzaW9uU3RvcmFnZU1hbmFnZXIoU3RvcmFnZUFyZWFSZWdpc3RyeSYpOwogICAgIFNl
c3Npb25TdG9yYWdlTWFuYWdlciogZXhpc3RpbmdTZXNzaW9uU3RvcmFnZU1hbmFnZXIoKTsKKyAg
ICBJREJTdG9yYWdlTWFuYWdlciYgaWRiU3RvcmFnZU1hbmFnZXIoSURCU3RvcmFnZVJlZ2lzdHJ5
Jik7CisgICAgSURCU3RvcmFnZU1hbmFnZXIqIGV4aXN0aW5nSURCU3RvcmFnZU1hbmFnZXIoKTsK
ICAgICBib29sIGlzQWN0aXZlKCk7CiAgICAgYm9vbCBpc0VtcHR5KCk7CiAgICAgT3B0aW9uU2V0
PFdlYnNpdGVEYXRhVHlwZT4gZmV0Y2hEYXRhVHlwZXNJbkxpc3QoT3B0aW9uU2V0PFdlYnNpdGVE
YXRhVHlwZT4pOwogICAgIHZvaWQgZGVsZXRlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBl
PiwgV2FsbFRpbWUpOwotICAgIHZvaWQgbW92ZURhdGEoY29uc3QgU3RyaW5nJiBuZXdQYXRoLCBj
b25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZVBhdGgpOworICAgIHZvaWQgbW92ZURhdGEoY29uc3Qg
U3RyaW5nJiBuZXdQYXRoLCBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZVBhdGgsIGNvbnN0IFN0
cmluZyYgaWRiU3RvcmFnZVBhdGgpOwogCiBwcml2YXRlOgogICAgIGVudW0gY2xhc3MgU3RvcmFn
ZUJ1Y2tldE1vZGUgOiBib29sOwogICAgIGNsYXNzIFN0b3JhZ2VCdWNrZXQ7CiAgICAgU3RvcmFn
ZUJ1Y2tldCYgZGVmYXVsdEJ1Y2tldCgpOwogCi0gICAgdm9pZCBjcmVhdGVPcmlnaW5GaWxlSWZO
ZWNlc3NhcnkoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJik7Ci0gICAgdm9pZCBkZWxldGVP
cmlnaW5GaWxlSWZOZWNlc3NhcnkoKTsKLQogICAgIHN0ZDo6dW5pcXVlX3B0cjxTdG9yYWdlQnVj
a2V0PiBtX2RlZmF1bHRCdWNrZXQ7CiAgICAgU3RyaW5nIG1fcGF0aDsKICAgICBib29sIG1fcGVy
c2lzdGVkIHsgZmFsc2UgfTsKICAgICBTdHJpbmcgbV9sb2NhbFN0b3JhZ2VQYXRoOworICAgIFN0
cmluZyBtX2lkYlN0b3JhZ2VQYXRoOworICAgIFN0cmluZyBtX2NhY2hlU3RvcmFnZVBhdGg7Cisg
ICAgUmVmPFF1b3RhTWFuYWdlcj4gbV9xdW90YU1hbmFnZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFn
ZS9RdW90YU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdl
L1F1b3RhTWFuYWdlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjQxNzg1M2JmYzI5MTNkNmU5MDE1ZWRhZmMy
MWY2NGY4ZGFiZmUyOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvc3RvcmFnZS9RdW90YU1hbmFnZXIuY3BwCkBAIC0wLDAgKzEsMTM1IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlF1b3RhTWFuYWdlci5oIgorCisj
aW5jbHVkZSA8d3RmL1Njb3BlLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitSZWY8UXVvdGFN
YW5hZ2VyPiBRdW90YU1hbmFnZXI6OmNyZWF0ZSh1aW50NjRfdCBxdW90YSwgR2V0VXNhZ2VGdW5j
dGlvbiYmIGdldFVzYWdlRnVuY3Rpb24sIEluY3JlYXNlUXVvdGFGdW5jdGlvbiYmIGluY3JlYXNl
UXVvdGFGdW5jdGlvbikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBRdW90YU1hbmFnZXIo
cXVvdGEsIFdURk1vdmUoZ2V0VXNhZ2VGdW5jdGlvbiksIFdURk1vdmUoaW5jcmVhc2VRdW90YUZ1
bmN0aW9uKSkpOworfQorCitRdW90YU1hbmFnZXI6OlF1b3RhTWFuYWdlcih1aW50NjRfdCBxdW90
YSwgR2V0VXNhZ2VGdW5jdGlvbiYmIGdldFVzYWdlRnVuY3Rpb24sIEluY3JlYXNlUXVvdGFGdW5j
dGlvbiYmIGluY3JlYXNlUXVvdGFGdW5jdGlvbikKKyAgICA6IG1fcXVvdGEocXVvdGEpCisgICAg
LCBtX2luaXRpYWxRdW90YShxdW90YSkKKyAgICAsIG1fZ2V0VXNhZ2VGdW5jdGlvbihXVEZNb3Zl
KGdldFVzYWdlRnVuY3Rpb24pKQorICAgICwgbV9pbmNyZWFzZVF1b3RhRnVuY3Rpb24oV1RGTW92
ZShpbmNyZWFzZVF1b3RhRnVuY3Rpb24pKQoreworICAgIEFTU0VSVChtX3F1b3RhKTsKK30KKwor
dm9pZCBRdW90YU1hbmFnZXI6OnJlcXVlc3RTcGFjZSh1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCwg
UmVxdWVzdENhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgbV9yZXF1ZXN0cy5hcHBlbmQoUXVv
dGFNYW5hZ2VyOjpSZXF1ZXN0IHsgc3BhY2VSZXF1ZXN0ZWQsIFdURk1vdmUoY2FsbGJhY2spLCBR
dW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIgeyB9IH0pOworICAgIGhhbmRsZVJlcXVlc3Rz
KCk7Cit9CisKK3ZvaWQgUXVvdGFNYW5hZ2VyOjpoYW5kbGVSZXF1ZXN0cygpCit7CisgICAgaWYg
KG1fY3VycmVudFJlcXVlc3QpCisgICAgICAgIHJldHVybjsKKworICAgIG1faXNIYW5kbGluZ1Jl
cXVlc3RzID0gdHJ1ZTsKKyAgICBhdXRvIGNsZWFySXNIYW5kbGluZ1JlcXVlc3RzID0gbWFrZVNj
b3BlRXhpdChbJl0geworICAgICAgICBtX2lzSGFuZGxpbmdSZXF1ZXN0cyA9IGZhbHNlOworICAg
IH0pOworCisgICAgd2hpbGUgKCFtX2N1cnJlbnRSZXF1ZXN0ICYmICFtX3JlcXVlc3RzLmlzRW1w
dHkoKSkgeworICAgICAgICBtX2N1cnJlbnRSZXF1ZXN0ID0gbV9yZXF1ZXN0cy50YWtlRmlyc3Qo
KTsKKyAgICAgICAgaWYgKGdyYW50V2l0aEN1cnJlbnRRdW90YShtX2N1cnJlbnRSZXF1ZXN0LT5z
cGFjZVJlcXVlc3RlZCkpIHsKKyAgICAgICAgICAgIG1fY3VycmVudFJlcXVlc3QtPmNhbGxiYWNr
KERlY2lzaW9uOjpHcmFudCk7CisgICAgICAgICAgICBtX2N1cnJlbnRSZXF1ZXN0ID0gc3RkOjpu
dWxsb3B0OworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBtX2N1
cnJlbnRSZXF1ZXN0LT5pZGVudGlmaWVyID0gUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVy
OjpnZW5lcmF0ZVRocmVhZFNhZmUoKTsKKyAgICAgICAgbV9pbmNyZWFzZVF1b3RhRnVuY3Rpb24o
bV9jdXJyZW50UmVxdWVzdC0+aWRlbnRpZmllciwgbV9xdW90YSwgKm1fdXNhZ2UsIG1fY3VycmVu
dFJlcXVlc3QtPnNwYWNlUmVxdWVzdGVkKTsKKyAgICB9Cit9CisKK2Jvb2wgUXVvdGFNYW5hZ2Vy
OjpncmFudFdpdGhDdXJyZW50UXVvdGEodWludDY0X3Qgc3BhY2VSZXF1ZXN0ZWQpCit7CisgICAg
aWYgKGdyYW50RmFzdFBhdGgoc3BhY2VSZXF1ZXN0ZWQpKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KworICAgIC8vIFdoZW4gUXVvdGFNYW5hZ2VyIGlzIHVzZWQgZm9yIHRoZSBmaXJzdCB0aW1lLCB3
ZSB3YW50IHRvIG1ha2Ugc3VyZSBpdHMgaW5pdGlhbCBxdW90YSBpcyBiaWdnZXIgdGhhbiBleGlz
dGluZyBkaXNrIHVzYWdlLAorICAgIC8vIGJhc2VkIG9uIHRoZSBhc3N1bXB0aW9uIHRoYXQgdGhl
IHF1b3RhIHdhcyBpbmNyZWFzZWQgdG8gYXQgbGVhc3QgdGhlIGRpc2sgdXNhZ2UgdW5kZXIgdXNl
cidzIHBlcm1pc3Npb24gYmVmb3JlLgorICAgIGJvb2wgc2hvdWxkVXBkYXRlUXVvdGFCYXNlZG9u
VXNhZ2UgPSAhbV91c2FnZTsKKyAgICBtX3VzYWdlID0gbV9nZXRVc2FnZUZ1bmN0aW9uKCk7Cisg
ICAgaWYgKHNob3VsZFVwZGF0ZVF1b3RhQmFzZWRvblVzYWdlKSB7CisgICAgICAgIGF1dG8gZGVm
YXVsdFF1b3RhU3RlcCA9IG1fcXVvdGEgLyAxMDsKKyAgICAgICAgbV9xdW90YSA9IHN0ZDo6bWF4
KG1fcXVvdGEsIGRlZmF1bHRRdW90YVN0ZXAgKiAoKCptX3VzYWdlIC8gZGVmYXVsdFF1b3RhU3Rl
cCkgKyAxKSk7CisgICAgfQorICAgIG1fcXVvdGFDb3VudGRvd24gPSAqbV91c2FnZSA8IG1fcXVv
dGEgPyBtX3F1b3RhIC0gKm1fdXNhZ2UgOiAwOworCisgICAgcmV0dXJuIGdyYW50RmFzdFBhdGgo
c3BhY2VSZXF1ZXN0ZWQpOworfQorCitib29sIFF1b3RhTWFuYWdlcjo6Z3JhbnRGYXN0UGF0aCh1
aW50NjRfdCBzcGFjZVJlcXVlc3RlZCkKK3sKKyAgICBpZiAoc3BhY2VSZXF1ZXN0ZWQgPD0gbV9x
dW90YUNvdW50ZG93bikgeworICAgICAgICBtX3F1b3RhQ291bnRkb3duIC09IHNwYWNlUmVxdWVz
dGVkOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK3ZvaWQgUXVvdGFNYW5hZ2VyOjpkaWRJbmNyZWFzZVF1b3RhKFF1b3RhSW5jcmVhc2VSZXF1
ZXN0SWRlbnRpZmllciBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBuZXdRdW90
YSkKK3sKKyAgICBpZiAoIW1fY3VycmVudFJlcXVlc3QgfHwgbV9jdXJyZW50UmVxdWVzdC0+aWRl
bnRpZmllciAhPSBpZGVudGlmaWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobmV3UXVv
dGEpIHsKKyAgICAgICAgbV9xdW90YSA9ICpuZXdRdW90YTsKKyAgICAgICAgbV9xdW90YUNvdW50
ZG93biA9IDA7IC8vIFJlY2FsY3VsYXRlIG1fcXVvdGFDb3VudGRvd24gYmFzZWQgb24gdXNhZ2Uu
CisgICAgfQorCisgICAgYXV0byBkZWNpc2lvbiA9IGdyYW50V2l0aEN1cnJlbnRRdW90YShtX2N1
cnJlbnRSZXF1ZXN0LT5zcGFjZVJlcXVlc3RlZCkgPyBEZWNpc2lvbjo6R3JhbnQgOiBEZWNpc2lv
bjo6RGVueTsKKyAgICBtX2N1cnJlbnRSZXF1ZXN0LT5jYWxsYmFjayhkZWNpc2lvbik7CisgICAg
bV9jdXJyZW50UmVxdWVzdCA9IHN0ZDo6bnVsbG9wdDsKKworICAgIGlmICghbV9pc0hhbmRsaW5n
UmVxdWVzdHMpCisgICAgICAgIGhhbmRsZVJlcXVlc3RzKCk7Cit9CisKK3ZvaWQgUXVvdGFNYW5h
Z2VyOjpyZXNldFF1b3RhVXBkYXRlZEJhc2VkT25Vc2FnZUZvclRlc3RpbmcoKQoreworICAgIG1f
cXVvdGEgPSBtX2luaXRpYWxRdW90YTsKKyAgICBtX3F1b3RhQ291bnRkb3duID0gMDsKKyAgICBt
X3VzYWdlID0gc3RkOjpudWxsb3B0OworfQorCit2b2lkIFF1b3RhTWFuYWdlcjo6cmVzZXRRdW90
YUZvclRlc3RpbmcoKQoreworICAgIG1fcXVvdGEgPSBtX2luaXRpYWxRdW90YTsKKyAgICBtX3F1
b3RhQ291bnRkb3duID0gMDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvUXVvdGFNYW5hZ2VyLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvUXVvdGFNYW5hZ2VyLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNzFlNTg0NTYyYTk1OWMxYzE5ODFkN2YzZDEwZDJlM2ExMGNlNjFjYgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9RdW90YU1hbmFn
ZXIuaApAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDx3dGYvQ29t
cGxldGlvbkhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK2NsYXNzIFF1b3RhTWFuYWdlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxRdW90YU1hbmFnZXI+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UXVvdGFNYW5hZ2VyPiB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgdXNpbmcgR2V0VXNhZ2VG
dW5jdGlvbiA9IEZ1bmN0aW9uPHVpbnQ2NF90KCk+OworICAgIHVzaW5nIEluY3JlYXNlUXVvdGFG
dW5jdGlvbiA9IEZ1bmN0aW9uPHZvaWQoUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLCB1
aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRVc2FnZSwgdWludDY0X3QgcmVx
dWVzdGVkSW5jcmVhc2UpPjsKKyAgICBzdGF0aWMgUmVmPFF1b3RhTWFuYWdlcj4gY3JlYXRlKHVp
bnQ2NF90IHF1b3RhLCBHZXRVc2FnZUZ1bmN0aW9uJiYsIEluY3JlYXNlUXVvdGFGdW5jdGlvbiYm
KTsKKworICAgIGVudW0gY2xhc3MgRGVjaXNpb24geyBEZW55LCBHcmFudCB9OworICAgIHVzaW5n
IFJlcXVlc3RDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRGVjaXNpb24pPjsKKyAg
ICB2b2lkIHJlcXVlc3RTcGFjZSh1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCwgUmVxdWVzdENhbGxi
YWNrJiYpOworICAgIHZvaWQgZGlkSW5jcmVhc2VRdW90YShRdW90YUluY3JlYXNlUmVxdWVzdElk
ZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IG5ld1F1b3RhKTsKKworICAgIHZvaWQg
cmVzZXRRdW90YVVwZGF0ZWRCYXNlZE9uVXNhZ2VGb3JUZXN0aW5nKCk7CisgICAgdm9pZCByZXNl
dFF1b3RhRm9yVGVzdGluZygpOworCitwcml2YXRlOgorICAgIFF1b3RhTWFuYWdlcih1aW50NjRf
dCBxdW90YSwgR2V0VXNhZ2VGdW5jdGlvbiYmLCBJbmNyZWFzZVF1b3RhRnVuY3Rpb24mJik7Cisg
ICAgdm9pZCBoYW5kbGVSZXF1ZXN0cygpOworICAgIGJvb2wgZ3JhbnRXaXRoQ3VycmVudFF1b3Rh
KHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkKTsKKyAgICBib29sIGdyYW50RmFzdFBhdGgodWludDY0
X3Qgc3BhY2VSZXF1ZXN0ZWQpOworCisgICAgc3RydWN0IFJlcXVlc3QgeworICAgICAgICB1aW50
NjRfdCBzcGFjZVJlcXVlc3RlZDsKKyAgICAgICAgUmVxdWVzdENhbGxiYWNrIGNhbGxiYWNrOwor
ICAgICAgICBRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIgaWRlbnRpZmllcjsKKyAgICB9
OworICAgIERlcXVlPFJlcXVlc3Q+IG1fcmVxdWVzdHM7CisgICAgc3RkOjpvcHRpb25hbDxSZXF1
ZXN0PiBtX2N1cnJlbnRSZXF1ZXN0OworICAgIGJvb2wgbV9pc0hhbmRsaW5nUmVxdWVzdHMgeyBm
YWxzZSB9OworICAgIHVpbnQ2NF90IG1fcXVvdGFDb3VudGRvd24geyAwIH07CisgICAgdWludDY0
X3QgbV9xdW90YTsKKyAgICB1aW50NjRfdCBtX2luaXRpYWxRdW90YTsgLy8gVGVzdCBvbmx5Lgor
ICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IG1fdXNhZ2U7CisgICAgR2V0VXNhZ2VGdW5jdGlv
biBtX2dldFVzYWdlRnVuY3Rpb247CisgICAgSW5jcmVhc2VRdW90YUZ1bmN0aW9uIG1faW5jcmVh
c2VRdW90YUZ1bmN0aW9uOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCA3ZWJmYTUxNmI1MDMzNmQzNjg3Zjdl
Y2RkMTdlOGU3ZWJkMWNkOWQ3Li42NDUzYTlkMjkwMjMyN2VmYmIxYTAxNTM3OTZiMzZlYWM1ODY2
YTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTI4Nyw2
ICsyODcsNyBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgpOgog
ICAgICAgICAnV2ViQ29yZTo6TmF0aXZlSW1hZ2VSZWZlcmVuY2UnLAogICAgICAgICAnV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6UGxheWJhY2tUYXJnZXRDbGll
bnRDb250ZXh0SWRlbnRpZmllcicsCisgICAgICAgICdXZWJLaXQ6OlF1b3RhSW5jcmVhc2VSZXF1
ZXN0SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpQbHVnaW5Mb2FkQ2xpZW50UG9saWN5
JywKICAgICAgICAgJ1dlYkNvcmU6OlBvaW50ZXJJRCcsCiAgICAgICAgICdXZWJDb3JlOjpQdXNo
U3Vic2NyaXB0aW9uSWRlbnRpZmllcicsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJzaXRlRGF0YS9RdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIuaCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhL1F1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmJlNDU0YjZhMDhiNjhhMjBjNjUwZGM4OTc2MzI4NTU4YTM3MjAxZjUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9RdW90YUlu
Y3JlYXNlUmVxdWVzdElkZW50aWZpZXIuaApAQCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworZW51bSBRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXJUeXBl
IHsgfTsKK3VzaW5nIFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllciA9IE9iamVjdElkZW50
aWZpZXI8UXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyVHlwZT47CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGFT
dG9yZVBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQ
YXJhbWV0ZXJzLmgKaW5kZXggMTUzYmY5M2JkZjZmZjExYjQ2MGY2NDgyNWI0NTAzMDhiODQ1ZDM4
ZC4uMjA5ODQ2ODE2Mjk5MDQ3MzM4ODRjZmNiMTI3YWE1NzIxZDJjZWU4OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oCkBAIC03MSw4
ICs3MSw4IEBAIHN0cnVjdCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyB7CiAgICAgU3RyaW5n
IGdlbmVyYWxTdG9yYWdlRGlyZWN0b3J5OwogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBn
ZW5lcmFsU3RvcmFnZURpcmVjdG9yeUhhbmRsZTsKIAotICAgIHVpbnQ2NF90IHBlck9yaWdpblN0
b3JhZ2VRdW90YSB7IFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6OmRlZmF1bHRRdW90YSgp
IH07Ci0gICAgdWludDY0X3QgcGVyVGhpcmRQYXJ0eU9yaWdpblN0b3JhZ2VRdW90YSB7IFdlYkNv
cmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6OmRlZmF1bHRUaGlyZFBhcnR5UXVvdGEoKSB9OworICAg
IHVpbnQ2NF90IHBlck9yaWdpblN0b3JhZ2VRdW90YTsKKyAgICB1aW50NjRfdCBwZXJUaGlyZFBh
cnR5T3JpZ2luU3RvcmFnZVF1b3RhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2Vz
LnR4dAppbmRleCA1N2VmM2IxNGVhZjJjMTA5MjA5OGVlOTQzMmY1MDhjNjExZTU4ZTM1Li42YTY2
OWJiMDBlYzFhOTZhZWZhNjNkNDhiMTdlYjQyNWUwZmU3ZTcwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTE0
NCwxMCArMTQ0LDE0IEBAIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLmNwcCBAbm8tdW5pZnkKIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2Uv
RmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyLmNwcAogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxl
U3lzdGVtU3RvcmFnZUhhbmRsZS5jcHAKIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3Rl
bVN0b3JhZ2VIYW5kbGVSZWdpc3RyeS5jcHAKK05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3Rv
cmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5jcHAKK05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3Rv
cmFnZU1hbmFnZXIuY3BwCitOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VSZWdpc3Ry
eS5jcHAKIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTG9jYWxTdG9yYWdlTWFuYWdlci5jcHAKIE5l
dHdvcmtQcm9jZXNzL3N0b3JhZ2UvTWVtb3J5U3RvcmFnZUFyZWEuY3BwCiBOZXR3b3JrUHJvY2Vz
cy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAKIE5ldHdvcmtQcm9jZXNzL3N0b3Jh
Z2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuY3BwCitOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1F1b3Rh
TWFuYWdlci5jcHAKIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU1FMaXRlU3RvcmFnZUFyZWEuY3Bw
CiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1Nlc3Npb25TdG9yYWdlTWFuYWdlci5jcHAKIE5ldHdv
cmtQcm9jZXNzL3N0b3JhZ2UvU3RvcmFnZUFyZWFCYXNlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXgg
YTY3ODM2N2E3NzVhNDliYTgxYjI0ODhjZjMxZWFiOWRjY2NjYzkyMS4uMTk1NDYyNzg3N2Q4NGNh
MDhiNTcyMDBjYzg2MmU5M2QyMzMwNDM3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0xNDk1LDYgKzE0
OTUsMTYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXF1ZXN0U3RvcmFnZVNwYWNlKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgV2UKICAgICB9KTsKIH0KIAordm9pZCBOZXR3
b3JrUHJvY2Vzc1Byb3h5OjppbmNyZWFzZVF1b3RhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Y29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIFF1b3RhSW5jcmVhc2VSZXF1ZXN0
SWRlbnRpZmllciBpZGVudGlmaWVyLCB1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IGN1
cnJlbnRVc2FnZSwgdWludDY0X3Qgc3BhY2VSZXF1ZXN0ZWQpCit7CisgICAgcmVxdWVzdFN0b3Jh
Z2VTcGFjZShzZXNzaW9uSUQsIG9yaWdpbiwgY3VycmVudFF1b3RhLCBjdXJyZW50VXNhZ2UsIHNw
YWNlUmVxdWVzdGVkLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgc2Vzc2lv
bklELCBvcmlnaW4sIGlkZW50aWZpZXJdKGF1dG8gcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAg
aWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBzZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrUHJvY2Vzczo6RGlkSW5jcmVhc2VRdW90YShzZXNzaW9uSUQsIG9yaWdpbiwg
aWRlbnRpZmllciwgcmVzdWx0KSwgMCk7CisgICAgfSk7Cit9CisKIHZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6cmVnaXN0ZXJTY2hlbWVGb3JMZWdhY3lDdXN0b21Qcm90b2NvbChjb25zdCBTdHJp
bmcmIHNjaGVtZSkKIHsKICNpZiBFTkFCTEUoTEVHQUNZX0NVU1RPTV9QUk9UT0NPTF9NQU5BR0VS
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuaAppbmRleCBhNGUzNjQ1ZWJhYWUzMzZkMTgwYjU0MTRiYWZhYTM1ZDgzZjkxOGM0
Li4yNDFmOGU0OWQ1ZWJmOTI0ZDU3NDEyODA4OWYxMGMyZDhlYmRlOWRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApA
QCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIlByb2Nlc3NMYXVuY2hlci5oIgogI2luY2x1ZGUg
IlByb2Nlc3NUaHJvdHRsZXIuaCIKICNpbmNsdWRlICJQcm9jZXNzVGhyb3R0bGVyQ2xpZW50Lmgi
CisjaW5jbHVkZSAiUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAi
VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQ
cm94eU1lc3NhZ2VzUmVwbGllcy5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKQEAg
LTM0MCw2ICszNDEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgdHJpZ2dlckJyb3dzaW5nQ29udGV4
dEdyb3VwU3dpdGNoRm9yTmF2aWdhdGlvbihXZWJQYWdlUHJveHlJZGVudGlmaWVyLCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OkJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNp
b24sIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiByZXNwb25zZURvbWFpbiwgTmV0
d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIgZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRl
bnRpZmllclRvUmVzdW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wgc3VjY2Vzcyk+JiYp
OwogCiAgICAgdm9pZCByZXF1ZXN0U3RvcmFnZVNwYWNlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBX
ZWJDb3JlOjpDbGllbnRPcmlnaW4mLCB1aW50NjRfdCBxdW90YSwgdWludDY0X3QgY3VycmVudFNp
emUsIHVpbnQ2NF90IHNwYWNlUmVxdWlyZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpv
cHRpb25hbDx1aW50NjRfdD4gcXVvdGEpPiYmKTsKKyAgICB2b2lkIGluY3JlYXNlUXVvdGEoUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIFF1b3RhSW5jcmVhc2VS
ZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCBjdXJyZW50
VXNhZ2UsIHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkKTsKIAogICAgIFdlYnNpdGVEYXRhU3RvcmUq
IHdlYnNpdGVEYXRhU3RvcmVGcm9tU2Vzc2lvbklEKFBBTDo6U2Vzc2lvbklEKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDEyZDA2Y2ViZDYyYWYxNzUwZTc4ODU1OWMxM2Ex
YjM5ODNmZGQyYmEuLjY4YzMyYzRmMzFlYTFhMThlODMwMDQ0MzI3ZDUwYjg0Mjk1MzY0MTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTY4LDYgKzY4LDcgQEAgbWVzc2FnZXMg
LT4gTmV0d29ya1Byb2Nlc3NQcm94eSBMZWdhY3lSZWNlaXZlciB7CiAjZW5kaWYKIAogICAgIFJl
cXVlc3RTdG9yYWdlU3BhY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdHJ1Y3QgV2ViQ29y
ZTo6Q2xpZW50T3JpZ2luIG9yaWdpbiwgdWludDY0X3QgcXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRT
aXplLCB1aW50NjRfdCBzcGFjZVJlcXVpcmVkKSAtPiAoc3RkOjpvcHRpb25hbDx1aW50NjRfdD4g
bmV3UXVvdGEpIEFzeW5jCisgICAgSW5jcmVhc2VRdW90YShQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIHN0cnVjdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luLCBXZWJLaXQ6OlF1b3RhSW5j
cmVhc2VSZXF1ZXN0SWRlbnRpZmllciBpZGVudGlmaWVyLCB1aW50NjRfdCBxdW90YSwgdWludDY0
X3QgY3VycmVudFNpemUsIHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkKQogICAgIAogICAgIFJlc291
cmNlTG9hZERpZFNlbmRSZXF1ZXN0KFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdl
SWRlbnRpZmllciwgc3RydWN0IFdlYktpdDo6UmVzb3VyY2VMb2FkSW5mbyByZXNvdXJjZUxvYWRJ
bmZvLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgc3RkOjpvcHRpb25hbDxJUEM6
OkZvcm1EYXRhUmVmZXJlbmNlPiBodHRwQm9keSkKICAgICBSZXNvdXJjZUxvYWREaWRQZXJmb3Jt
SFRUUFJlZGlyZWN0aW9uKFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSWRlbnRp
Zmllciwgc3RydWN0IFdlYktpdDo6UmVzb3VyY2VMb2FkSW5mbyByZXNvdXJjZUxvYWRJbmZvLCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc291cmNlUmVzcG9uc2UsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCByZXF1ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCAwOGNlY2ZlYmZlMGRlNDRi
MWY1YTRiNTAxMTQwNWUxZmQ4MTUwOWZlLi4xMzI5MDU1NzJmNGI4YzNkMDc5NTgzNDMxNDhjMmZi
NTY4M2ZlZmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMTcxNiw3ICsxNzE2LDcgQEAgdm9pZCBX
ZWJzaXRlRGF0YVN0b3JlOjpkaXNwYXRjaE9uUXVldWUoRnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0
aW9uKQogdWludDY0X3QgV2Vic2l0ZURhdGFTdG9yZTo6cGVyVGhpcmRQYXJ0eU9yaWdpblN0b3Jh
Z2VRdW90YSgpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IENvbnNpZGVyIHdoZXRoZXIgYWxsb3dp
bmcgdG8gc2V0IGEgcGVyVGhpcmRQYXJ0eU9yaWdpblN0b3JhZ2VRdW90YSBmcm9tIGEgV2Vic2l0
ZURhdGFTdG9yZS4KLSAgICByZXR1cm4gV2ViQ29yZTo6U3RvcmFnZVF1b3RhTWFuYWdlcjo6ZGVm
YXVsdFRoaXJkUGFydHlRdW90YUZyb21QZXJPcmlnaW5RdW90YShwZXJPcmlnaW5TdG9yYWdlUXVv
dGEoKSk7CisgICAgcmV0dXJuIHBlck9yaWdpblN0b3JhZ2VRdW90YSgpIC8gMTA7CiB9CiAKIHZv
aWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0Q2FjaGVNb2RlbFN5bmNocm9ub3VzbHlGb3JUZXN0aW5n
KENhY2hlTW9kZWwgY2FjaGVNb2RlbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAppbmRleCA2YmM2OTM2OWMzMzgzMjg2
OWRlYTFmNWRhYTUwZTc5ZmFhNmU3YmY5Li44NWVlMzFlMTM4M2Q5N2Q2NDZjNjk4YzJkZWY3ZDlj
MzM0YWI3NWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCkBAIC0zNTAsNiArMzUwLDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0
b3J5KCk7CiAgICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJh
dGlvbkRpcmVjdG9yeSgpOwogICAgIHN0YXRpYyBib29sIGh0dHAzRW5hYmxlZCgpOworICAgIHN0
YXRpYyBjb25zdGV4cHIgdWludDY0X3QgZGVmYXVsdFBlck9yaWdpblF1b3RhKCkgeyByZXR1cm4g
MTAwMCAqIE1COyB9CiAKICAgICB2b2lkIHJlc2V0UXVvdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKICAgICB2b2lkIGNsZWFyU3RvcmFnZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCmluZGV4IGJlYTc1
NzljZGZjZTA3OGI2NzU0OGExZDAxZGJmN2E0N2Y2ZjdhODkuLmE5NjIyNmZiMjQ2NDYxN2JhNWNi
NTFhMjU0YmU5MTIwMmRkNTkxYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbi5jcHAKQEAgLTMzLDYgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIFdlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uOjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbihJc1Bl
cnNpc3RlbnQgaXNQZXJzaXN0ZW50LCBXaWxsQ29weVBhdGhzRnJvbUV4aXN0aW5nQ29uZmlndXJh
dGlvbiB3aWxsQ29weVBhdGhzKQogICAgIDogbV9pc1BlcnNpc3RlbnQoaXNQZXJzaXN0ZW50KQor
ICAgICwgbV9wZXJPcmlnaW5TdG9yYWdlUXVvdGEoV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFBl
ck9yaWdpblF1b3RhKCkpCiB7CiAgICAgaWYgKGlzUGVyc2lzdGVudCA9PSBJc1BlcnNpc3RlbnQ6
OlllcyAmJiB3aWxsQ29weVBhdGhzID09IFdpbGxDb3B5UGF0aHNGcm9tRXhpc3RpbmdDb25maWd1
cmF0aW9uOjpObykgewogICAgICAgICBzZXRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KFdlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgKaW5kZXggZjE3MWFkNGNlNWUxYjVjZTEzOTRl
Yzc4MDk1MjQxMDdmODJjMTc0YS4uMzBhMjk5MzEwMjI3ZDJmNzI0ZjQyNTc2YjY2MTI1NDdiOTYx
Y2YyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCkBAIC0yNiw3ICsy
Niw2IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgotI2luY2x1ZGUg
PFdlYkNvcmUvU3RvcmFnZVF1b3RhTWFuYWdlci5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtMjA3LDcgKzIwNiw3IEBAIHByaXZh
dGU6CiAKICAgICBTdHJpbmcgbV9jYWNoZVN0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgU3RyaW5nIG1f
Z2VuZXJhbFN0b3JhZ2VEaXJlY3Rvcnk7Ci0gICAgdWludDY0X3QgbV9wZXJPcmlnaW5TdG9yYWdl
UXVvdGEgeyBXZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2VyOjpkZWZhdWx0UXVvdGEoKSB9Owor
ICAgIHVpbnQ2NF90IG1fcGVyT3JpZ2luU3RvcmFnZVF1b3RhOwogICAgIFN0cmluZyBtX25ldHdv
cmtDYWNoZURpcmVjdG9yeTsKICAgICBTdHJpbmcgbV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5
OwogICAgIFN0cmluZyBtX2FwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUg
eyAiRmlsZXMiX3MgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IGE1NmY3MDMxZGYxMjQ0ZDIyNTVmYjVlZmVhNTZhOGMxZTY1OTE5YzAu
LmI0YjMyM2Y1ZTAyMjA4MWFlOWRhMjc4YWQxM2MxN2I5ZTQ2ODM2NTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQ2OCw2ICsxNDY4
LDExIEBACiAJCTkzQjI2MTREMjI3RDE0OUUwMEI5N0E3NiAvKiBTdG9yYWdlTWFuYWdlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCMjYxNDkyMjdE
MTQ3MjAwQjk3QTc2IC8qIFN0b3JhZ2VNYW5hZ2VyLmggKi87IH07CiAJCTkzQjI2MTRFMjI3RDE0
QjEwMEI5N0E3NiAvKiBMb2NhbFN0b3JhZ2VEYXRhYmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCMjYxNDUyMjdEMTQ3MDAwQjk3QTc2IC8qIExv
Y2FsU3RvcmFnZURhdGFiYXNlLmggKi87IH07CiAJCTkzQjI2MTRGMjI3RDE0QjEwMEI5N0E3NiAv
KiBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjI2MTQ2MjI3RDE0NzEwMEI5N0E3NiAvKiBMb2NhbFN0
b3JhZ2VEYXRhYmFzZVRyYWNrZXIuaCAqLzsgfTsKKwkJOTNCNjMxRTUyN0FCQTYyODAwNDQzQTQ0
IC8qIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjYzMUU0MjdBQkE2MjcwMDQ0M0E0NCAvKiBJREJT
dG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50LmggKi87IH07CisJCTkzQjYzMUU4MjdBQkE2NUQwMDQ0
M0E0NCAvKiBJREJTdG9yYWdlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTNCNjMxRTYyN0FCQTY1QzAwNDQzQTQ0IC8qIElEQlN0b3JhZ2VN
YW5hZ2VyLmggKi87IH07CisJCTkzQjYzMUVEMjdBQkE2QjQwMDQ0M0E0NCAvKiBJREJTdG9yYWdl
UmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDkzQjYzMUVCMjdBQkE2QjMwMDQ0M0E0NCAvKiBJREJTdG9yYWdlUmVnaXN0cnkuaCAqLzsgfTsK
KwkJOTNCNjMxRjEyN0FCQUNBOTAwNDQzQTQ0IC8qIFF1b3RhTWFuYWdlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCNjMxRUYyN0FCQUNBOTAwNDQz
QTQ0IC8qIFF1b3RhTWFuYWdlci5oICovOyB9OworCQk5M0I2MzFGMzI3QUJBRDgwMDA0NDNBNDQg
LyogUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0I2MzFGMjI3QUJBRDdGMDA0NDNBNDQgLyogUXVv
dGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLmggKi87IH07CiAJCTkzQkRFQjAxMTcxREQ3QUYw
MEJGRUUxQiAvKiBXS1BhZ2VMb2FkVHlwZXNQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0JERUIwMDE3MUREN0FGMDBCRkVFMUIgLyogV0tQ
YWdlTG9hZFR5cGVzUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTkzRDZCNzcyMjU0QkI1MTkwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25p
dGlvblNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTNENkI3NkMyNTRCODk1ODAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uU2VydmVyLmgg
Ki87IH07CiAJCTkzRDZCNzczMjU0QkI4QzcwMDU4REQzQSAvKiBXZWJTcGVlY2hSZWNvZ25pdGlv
bkNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDkzRDZCNzY4MjU0QjdCQzYwMDU4REQzQSAvKiBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5l
Y3Rpb24uaCAqLzsgfTsKQEAgLTUzNTAsNiArNTM1NSwxNSBAQAogCQk5M0IyNjE0OTIyN0QxNDcy
MDBCOTdBNzYgLyogU3RvcmFnZU1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU3RvcmFnZU1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNC
MjYxNEEyMjdEMTQ3MjAwQjk3QTc2IC8qIFN0b3JhZ2VNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0b3JhZ2VNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTNCMjYxNEMyMjdEMTQ3MjAwQjk3QTc2IC8qIExvY2FsU3RvcmFn
ZURhdGFiYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExvY2Fs
U3RvcmFnZURhdGFiYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNCNjMx
RTMyN0FCQTVGNzAwNDQzQTQ0IC8qIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzQjYzMUU0MjdBQkE2MjcwMDQ0M0E0NCAvKiBJREJT
dG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOTNCNjMxRTYyN0FCQTY1QzAwNDQzQTQ0IC8qIElEQlN0b3JhZ2VNYW5hZ2VyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElEQlN0b3JhZ2VNYW5hZ2VyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzQjYzMUU3MjdBQkE2NUMwMDQ0M0E0NCAvKiBJ
REJTdG9yYWdlTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBJREJTdG9yYWdlTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkz
QjYzMUVBMjdBQkE2QjIwMDQ0M0E0NCAvKiBJREJTdG9yYWdlUmVnaXN0cnkuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSURCU3RvcmFnZVJlZ2lzdHJ5LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNCNjMxRUIyN0FCQTZCMzAwNDQzQTQ0IC8qIElE
QlN0b3JhZ2VSZWdpc3RyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJREJT
dG9yYWdlUmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNCNjMxRUUy
N0FCQUNBODAwNDQzQTQ0IC8qIFF1b3RhTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBRdW90YU1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk5M0I2MzFFRjI3QUJBQ0E5MDA0NDNBNDQgLyogUXVvdGFNYW5hZ2VyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFF1b3RhTWFuYWdlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk5M0I2MzFGMjI3QUJBRDdGMDA0NDNBNDQgLyogUXVvdGFJbmNyZWFz
ZVJlcXVlc3RJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFF1
b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5M0JBMDREQTIxNTFBREYzMDA3RjQ1NUYgLyogV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1l
c3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYlNXU2VydmVyQ29ubmVjdGlvbi5t
ZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCQTA0REIyMTUxQURG
MzAwN0Y0NTVGIC8qIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCQTA0REMyMTUxQURGMzAwN0Y0NTVGIC8q
IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW47IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NTU1LDYgKzc1NjksNyBAQAogCQkxQUJGNDM3
ODFBMzY4MDM1MDAzRkIwRTYgLyogV2Vic2l0ZURhdGEgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTkzQjYzMUYyMjdBQkFEN0YwMDQ0M0E0NCAvKiBRdW90
YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIuaCAqLywKIAkJCQkxQTQ4MzJENDFBOUNERjk2MDA4
QjRERkUgLyogV2Vic2l0ZURhdGEuY3BwICovLAogCQkJCTFBNDgzMkQ1MUE5Q0RGOTYwMDhCNERG
RSAvKiBXZWJzaXRlRGF0YS5oICovLAogCQkJCTFBMjhCOENCMUM4MEVENTkwMDZGRDc0MyAvKiBX
ZWJzaXRlRGF0YUZldGNoT3B0aW9uLmggKi8sCkBAIC0xMDQwMSw2ICsxMDQxNiwxMiBAQAogCQkJ
CTkzNUI1Nzk4MjZGNTEyNzAwMDhCNDhBQyAvKiBGaWxlU3lzdGVtU3RvcmFnZUhhbmRsZVJlZ2lz
dHJ5LmggKi8sCiAJCQkJOTMxQTA3NTEyNkYwNjMxMDAwNDQ3NENEIC8qIEZpbGVTeXN0ZW1TdG9y
YWdlTWFuYWdlci5jcHAgKi8sCiAJCQkJOTMxQTA3NTAyNkYwNjMxMDAwNDQ3NENEIC8qIEZpbGVT
eXN0ZW1TdG9yYWdlTWFuYWdlci5oICovLAorCQkJCTkzQjYzMUUzMjdBQkE1RjcwMDQ0M0E0NCAv
KiBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50LmNwcCAqLywKKwkJCQk5M0I2MzFFNDI3QUJB
NjI3MDA0NDNBNDQgLyogSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5oICovLAorCQkJCTkz
QjYzMUU3MjdBQkE2NUMwMDQ0M0E0NCAvKiBJREJTdG9yYWdlTWFuYWdlci5jcHAgKi8sCisJCQkJ
OTNCNjMxRTYyN0FCQTY1QzAwNDQzQTQ0IC8qIElEQlN0b3JhZ2VNYW5hZ2VyLmggKi8sCisJCQkJ
OTNCNjMxRUEyN0FCQTZCMjAwNDQzQTQ0IC8qIElEQlN0b3JhZ2VSZWdpc3RyeS5jcHAgKi8sCisJ
CQkJOTNCNjMxRUIyN0FCQTZCMzAwNDQzQTQ0IC8qIElEQlN0b3JhZ2VSZWdpc3RyeS5oICovLAog
CQkJCTkzRTc5OUM5Mjc2MDQ5N0EwMDc0MDA4QSAvKiBMb2NhbFN0b3JhZ2VNYW5hZ2VyLmNwcCAq
LywKIAkJCQk5M0U3OTlDQjI3NjA0OTdBMDA3NDAwOEEgLyogTG9jYWxTdG9yYWdlTWFuYWdlci5o
ICovLAogCQkJCTkzRTc5OUQ4Mjc2MTIxMDgwMDc0MDA4QSAvKiBNZW1vcnlTdG9yYWdlQXJlYS5j
cHAgKi8sCkBAIC0xMDQxMCw2ICsxMDQzMSw4IEBACiAJCQkJOTMwODVEQzcyNkUxQzZFRTAwMEVD
NkE3IC8qIE5ldHdvcmtTdG9yYWdlTWFuYWdlci5tZXNzYWdlcy5pbiAqLywKIAkJCQk5MzA4NURD
NTI2RTFDNkNGMDAwRUM2QTcgLyogT3JpZ2luU3RvcmFnZU1hbmFnZXIuY3BwICovLAogCQkJCTkz
MDg1REM2MjZFMUM2Q0YwMDBFQzZBNyAvKiBPcmlnaW5TdG9yYWdlTWFuYWdlci5oICovLAorCQkJ
CTkzQjYzMUVFMjdBQkFDQTgwMDQ0M0E0NCAvKiBRdW90YU1hbmFnZXIuY3BwICovLAorCQkJCTkz
QjYzMUVGMjdBQkFDQTkwMDQ0M0E0NCAvKiBRdW90YU1hbmFnZXIuaCAqLywKIAkJCQk5M0U3OTlD
QzI3NjA0OTdCMDA3NDAwOEEgLyogU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyLmNwcCAqLywKIAkJCQk5
M0U3OTlDQTI3NjA0OTdBMDA3NDAwOEEgLyogU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyLmggKi8sCiAJ
CQkJOTNFNzk5RDMyNzYxMjEwNzAwNzQwMDhBIC8qIFNRTGl0ZVN0b3JhZ2VBcmVhLmNwcCAqLywK
QEAgLTEzMDE4LDYgKzEzMDQxLDkgQEAKIAkJCQkzMTJDQzlGMjIxNUIwNkYxMDBERTQwQ0EgLyog
SGlnaFBlcmZvcm1hbmNlR1BVTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODM5QTJGMzIx
RTIwNjc0NTAwMzkwNTdFIC8qIEhpZ2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1MUMwQzk3NDFEREQ3NjAwMDAzMkNBRDMgLyogSWNvbkxvYWRp
bmdEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTNCNjMxRTUyN0FCQTYyODAwNDQzQTQ0
IC8qIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTkz
QjYzMUU4MjdBQkE2NUQwMDQ0M0E0NCAvKiBJREJTdG9yYWdlTWFuYWdlci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJOTNCNjMxRUQyN0FCQTZCNDAwNDQzQTQ0IC8qIElEQlN0b3JhZ2VSZWdpc3RyeS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTFFMzUxQ0IxODBGMkNDQzAwRTUzQkU5IC8qIElEQlV0aWxp
dGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNDRjZCMjUxMkM5M0U3QTAwOEY5QzM1IC8qIElt
YWdlT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUExRUM2OUUxODcyMDkyMTAwQjk1MUYw
IC8qIEltcG9ydGFuY2VBc3NlcnRpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMTMyMjksNiArMTMy
NTUsOCBAQAogCQkJCUExRTY4ODcwMUY2RTJCQUIwMDcwMDZBNiAvKiBRdWFyYW50aW5lU1BJLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQTBDMjI3RTI0NTExMzBBMDBFRDYxNEQgLyogUXVpY2tMb29r
VGh1bWJuYWlsaW5nU29mdExpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRUU1NzI1MjQwOUYx
NDIwMDIwMDVENiAvKiBRdWlja0xvb2tUaHVtYm5haWxMb2FkZXIuaCBpbiBIZWFkZXJzICovLAor
CQkJCTkzQjYzMUYzMjdBQkFEODAwMDQ0M0E0NCAvKiBRdW90YUluY3JlYXNlUmVxdWVzdElkZW50
aWZpZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTkzQjYzMUYxMjdBQkFDQTkwMDQ0M0E0NCAvKiBR
dW90YU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDQjZBRTQ0MjYwOTc5OUMwMEI2RUQ1
QSAvKiBSZWFzb25TUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3RkQzMTgyMjJCMzUxNUUwMDhE
MEU4QiAvKiBSZWRpcmVjdFNPQXV0aG9yaXphdGlvblNlc3Npb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCTlCMTIyOUQyMjNGRjJCQ0MwMDhDQTc1MSAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRl
bnRpZmllci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVj
dGlvblRvU2VydmVyLmNwcAppbmRleCAwNGMyNDEwZjM1YWRjYzA0NmM1NDA2YWYwY2NlMmZkMGU4
NDFhZGIwLi5kNzkwMTY5YmUwZjU4ZTMwMWVkYmU0NGMwNDRjNzgzOTFlZjQ3NDUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJD
b25uZWN0aW9uVG9TZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9EYXRh
YmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAKQEAgLTI5LDkgKzI5
LDkgQEAKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbi5oIgorI2luY2x1ZGUgIk5ldHdvcmtTdG9yYWdlTWFuYWdlck1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViSURCUmVzdWx0
LmgiCi0jaW5jbHVkZSAiV2ViSURCU2VydmVyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9j
ZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0lEQkN1cnNvckluZm8uaD4KQEAgLTgyLDEzMiArODIsMTMyIEBAIElEQkNs
aWVudDo6SURCQ29ubmVjdGlvblRvU2VydmVyJiBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmNv
cmVDb25uZWN0aW9uVG9TZXJ2CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpkZWxl
dGVEYXRhYmFzZShjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEpCiB7Ci0gICAgc2Vu
ZChNZXNzYWdlczo6V2ViSURCU2VydmVyOjpEZWxldGVEYXRhYmFzZShyZXF1ZXN0RGF0YSkpOwor
ICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6RGVsZXRlRGF0YWJhc2Uo
cmVxdWVzdERhdGEpKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6Om9wZW5E
YXRhYmFzZShjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEpCiB7Ci0gICAgc2VuZChN
ZXNzYWdlczo6V2ViSURCU2VydmVyOjpPcGVuRGF0YWJhc2UocmVxdWVzdERhdGEpKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Ok9wZW5EYXRhYmFzZShyZXF1ZXN0
RGF0YSkpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6YWJvcnRUcmFuc2Fj
dGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcikK
IHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OkFib3J0VHJhbnNhY3Rpb24odHJh
bnNhY3Rpb25JZGVudGlmaWVyKSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VN
YW5hZ2VyOjpBYm9ydFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllcikpOwogfQogCiB2
b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Y29tbWl0VHJhbnNhY3Rpb24oY29uc3QgSURC
UmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IHBlbmRp
bmdSZXF1ZXN0Q291bnQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyOjpDb21t
aXRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbklkZW50aWZpZXIsIHBlbmRpbmdSZXF1ZXN0Q291bnQp
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkNvbW1pdFRyYW5z
YWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgcGVuZGluZ1JlcXVlc3RDb3VudCkpOwogfQog
CiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9u
Q2hhbmdlVHJhbnNhY3Rpb24odWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwg
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpCiB7Ci0g
ICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyOjpEaWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25D
aGFuZ2VUcmFuc2FjdGlvbihkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCB0cmFuc2FjdGlv
bklkZW50aWZpZXIpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6
OkRpZEZpbmlzaEhhbmRsaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKGRhdGFiYXNlQ29ubmVj
dGlvbklkZW50aWZpZXIsIHRyYW5zYWN0aW9uSWRlbnRpZmllcikpOwogfQogCiB2b2lkIFdlYklE
QkNvbm5lY3Rpb25Ub1NlcnZlcjo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVxdWVzdERh
dGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mIGluZm8pCiB7Ci0gICAg
c2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyOjpDcmVhdGVPYmplY3RTdG9yZShyZXF1ZXN0RGF0
YSwgaW5mbykpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Q3Jl
YXRlT2JqZWN0U3RvcmUocmVxdWVzdERhdGEsIGluZm8pKTsKIH0KIAogdm9pZCBXZWJJREJDb25u
ZWN0aW9uVG9TZXJ2ZXI6OmRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiBy
ZXF1ZXN0RGF0YSwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUpCiB7Ci0gICAgc2VuZChN
ZXNzYWdlczo6V2ViSURCU2VydmVyOjpEZWxldGVPYmplY3RTdG9yZShyZXF1ZXN0RGF0YSwgb2Jq
ZWN0U3RvcmVOYW1lKSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2Vy
OjpEZWxldGVPYmplY3RTdG9yZShyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVOYW1lKSk7CiB9CiAK
IHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpyZW5hbWVPYmplY3RTdG9yZShjb25zdCBJ
REJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNl
cnZlcjo6UmVuYW1lT2JqZWN0U3RvcmUocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmll
ciwgbmV3TmFtZSkpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6
UmVuYW1lT2JqZWN0U3RvcmUocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmllciwgbmV3
TmFtZSkpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Y2xlYXJPYmplY3RT
dG9yZShjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIHVpbnQ2NF90IG9iamVjdFN0
b3JlSWRlbnRpZmllcikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OkNsZWFy
T2JqZWN0U3RvcmUocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmllcikpOworICAgIHNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Q2xlYXJPYmplY3RTdG9yZShyZXF1
ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVj
dGlvblRvU2VydmVyOjpjcmVhdGVJbmRleChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERh
dGEsIGNvbnN0IElEQkluZGV4SW5mbyYgaW5mbykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJ
REJTZXJ2ZXI6OkNyZWF0ZUluZGV4KHJlcXVlc3REYXRhLCBpbmZvKSk7CisgICAgc2VuZChNZXNz
YWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpDcmVhdGVJbmRleChyZXF1ZXN0RGF0YSwgaW5m
bykpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGVsZXRlSW5kZXgoY29u
c3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lKQogewotICAgIHNlbmQoTWVzc2FnZXM6Oldl
YklEQlNlcnZlcjo6RGVsZXRlSW5kZXgocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmll
ciwgaW5kZXhOYW1lKSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2Vy
OjpEZWxldGVJbmRleChyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleE5h
bWUpKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OnJlbmFtZUluZGV4KGNv
bnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVu
dGlmaWVyLCB1aW50NjRfdCBpbmRleElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSkK
IHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OlJlbmFtZUluZGV4KHJlcXVlc3RE
YXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4SWRlbnRpZmllciwgbmV3TmFtZSkpOwor
ICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6UmVuYW1lSW5kZXgocmVx
dWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhJZGVudGlmaWVyLCBuZXdOYW1l
KSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpwdXRPckFkZChjb25zdCBJ
REJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQktleURhdGEmIGtleURhdGEsIGNv
bnN0IElEQlZhbHVlJiB2YWx1ZSwgY29uc3QgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0
ZU1vZGUgbW9kZSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OlB1dE9yQWRk
KHJlcXVlc3REYXRhLCBrZXlEYXRhLCB2YWx1ZSwgbW9kZSkpOworICAgIHNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6UHV0T3JBZGQocmVxdWVzdERhdGEsIGtleURhdGEsIHZh
bHVlLCBtb2RlKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpnZXRSZWNv
cmQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJHZXRSZWNvcmRE
YXRhJiBnZXRSZWNvcmREYXRhKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6
R2V0UmVjb3JkKHJlcXVlc3REYXRhLCBnZXRSZWNvcmREYXRhKSk7CisgICAgc2VuZChNZXNzYWdl
czo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpHZXRSZWNvcmQocmVxdWVzdERhdGEsIGdldFJlY29y
ZERhdGEpKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmdldEFsbFJlY29y
ZHMoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJHZXRBbGxSZWNv
cmRzRGF0YSYgZ2V0QWxsUmVjb3Jkc0RhdGEpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURC
U2VydmVyOjpHZXRBbGxSZWNvcmRzKHJlcXVlc3REYXRhLCBnZXRBbGxSZWNvcmRzRGF0YSkpOwor
ICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6R2V0QWxsUmVjb3Jkcyhy
ZXF1ZXN0RGF0YSwgZ2V0QWxsUmVjb3Jkc0RhdGEpKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0
aW9uVG9TZXJ2ZXI6OmdldENvdW50KGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwg
Y29uc3QgSURCS2V5UmFuZ2VEYXRhJiByYW5nZSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJ
REJTZXJ2ZXI6OkdldENvdW50KHJlcXVlc3REYXRhLCByYW5nZSkpOworICAgIHNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6R2V0Q291bnQocmVxdWVzdERhdGEsIHJhbmdlKSk7
CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpkZWxldGVSZWNvcmQoY29uc3Qg
SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIHJhbmdl
KQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6RGVsZXRlUmVjb3JkKHJlcXVl
c3REYXRhLCByYW5nZSkpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdl
cjo6RGVsZXRlUmVjb3JkKHJlcXVlc3REYXRhLCByYW5nZSkpOwogfQogCiB2b2lkIFdlYklEQkNv
bm5lY3Rpb25Ub1NlcnZlcjo6b3BlbkN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVz
dERhdGEsIGNvbnN0IElEQkN1cnNvckluZm8mIGluZm8pCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6
V2ViSURCU2VydmVyOjpPcGVuQ3Vyc29yKHJlcXVlc3REYXRhLCBpbmZvKSk7CisgICAgc2VuZChN
ZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpPcGVuQ3Vyc29yKHJlcXVlc3REYXRhLCBp
bmZvKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjppdGVyYXRlQ3Vyc29y
KGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCSXRlcmF0ZUN1cnNv
ckRhdGEmIGRhdGEpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyOjpJdGVyYXRl
Q3Vyc29yKHJlcXVlc3REYXRhLCBkYXRhKSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0
b3JhZ2VNYW5hZ2VyOjpJdGVyYXRlQ3Vyc29yKHJlcXVlc3REYXRhLCBkYXRhKSk7CiB9CiAKIHZv
aWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjplc3RhYmxpc2hUcmFuc2FjdGlvbih1aW50NjRf
dCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJUcmFuc2FjdGlvbkluZm8m
IGluZm8pCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyOjpFc3RhYmxpc2hUcmFu
c2FjdGlvbihkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBpbmZvKSk7CisgICAgc2VuZChN
ZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpFc3RhYmxpc2hUcmFuc2FjdGlvbihkYXRh
YmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBpbmZvKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVj
dGlvblRvU2VydmVyOjpkYXRhYmFzZUNvbm5lY3Rpb25QZW5kaW5nQ2xvc2UodWludDY0X3QgZGF0
YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJT
ZXJ2ZXI6OkRhdGFiYXNlQ29ubmVjdGlvblBlbmRpbmdDbG9zZShkYXRhYmFzZUNvbm5lY3Rpb25J
ZGVudGlmaWVyKSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpE
YXRhYmFzZUNvbm5lY3Rpb25QZW5kaW5nQ2xvc2UoZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmll
cikpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGF0YWJhc2VDb25uZWN0
aW9uQ2xvc2VkKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpCiB7Ci0gICAg
c2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyOjpEYXRhYmFzZUNvbm5lY3Rpb25DbG9zZWQoZGF0
YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcikpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtT
dG9yYWdlTWFuYWdlcjo6RGF0YWJhc2VDb25uZWN0aW9uQ2xvc2VkKGRhdGFiYXNlQ29ubmVjdGlv
bklkZW50aWZpZXIpKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmFib3J0
T3BlbkFuZFVwZ3JhZGVOZWVkZWQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmll
ciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpCiB7
Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyOjpBYm9ydE9wZW5BbmRVcGdyYWRlTmVl
ZGVkKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHRyYW5zYWN0aW9uSWRlbnRpZmllcikp
OworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6QWJvcnRPcGVuQW5k
VXBncmFkZU5lZWRlZChkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCB0cmFuc2FjdGlvbklk
ZW50aWZpZXIpKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRpZEZpcmVW
ZXJzaW9uQ2hhbmdlRXZlbnQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwg
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgSW5k
ZXhlZERCOjpDb25uZWN0aW9uQ2xvc2VkT25CZWhhbGZPZlNlcnZlciBjb25uZWN0aW9uQ2xvc2Vk
KQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6RGlkRmlyZVZlcnNpb25DaGFu
Z2VFdmVudChkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCByZXF1ZXN0SWRlbnRpZmllciwg
Y29ubmVjdGlvbkNsb3NlZCkpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFu
YWdlcjo6RGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudChkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlm
aWVyLCByZXF1ZXN0SWRlbnRpZmllciwgY29ubmVjdGlvbkNsb3NlZCkpOwogfQogCiB2b2lkIFdl
YklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6b3BlbkRCUmVxdWVzdENhbmNlbGxlZChjb25zdCBJREJS
ZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2Vy
dmVyOjpPcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKHJlcXVlc3REYXRhKSk7CisgICAgc2VuZChNZXNz
YWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpPcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKHJlcXVl
c3REYXRhKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpnZXRBbGxEYXRh
YmFzZU5hbWVzQW5kVmVyc2lvbnMoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0
SWRlbnRpZmllciwgY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4pCiB7Ci0gICAgc2VuZChNZXNz
YWdlczo6V2ViSURCU2VydmVyOjpHZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMocmVxdWVz
dElkZW50aWZpZXIsIG9yaWdpbikpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdl
TWFuYWdlcjo6R2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKHJlcXVlc3RJZGVudGlmaWVy
LCBvcmlnaW4pKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRpZERlbGV0
ZURhdGFiYXNlKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwIGIvU291cmNlL1dl
YktpdExlZ2FjeS9TdG9yYWdlL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAKaW5kZXggZWEyZTJhNzhm
ODhmZmRkMTAxYTNhMTM3ZjBkNWExMGE1NmUxMGZiMi4uMGNhZGI1MDQyYmExNjEwNzdmOTQ0OWE5
NzNkY2Y5ODMyZDM3MDJhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdl
L0luUHJvY2Vzc0lEQlNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdl
L0luUHJvY2Vzc0lEQlNlcnZlci5jcHAKQEAgLTQyLDYgKzQyLDggQEAKIAogdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKK3N0YXRpYyBjb25zdGV4cHIgdWludDY0X3QgZGVmYXVsdFBlck9yaWdp
blF1b3RhID0gIDEwMDAgKiBNQjsKKwogUmVmPEluUHJvY2Vzc0lEQlNlcnZlcj4gSW5Qcm9jZXNz
SURCU2VydmVyOjpjcmVhdGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAgIEFTU0VS
VChzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSk7CkBAIC03Myw3ICs3NSw3IEBAIEluUHJvY2Vzc0lE
QlNlcnZlcjo6fkluUHJvY2Vzc0lEQlNlcnZlcigpCiBTdG9yYWdlUXVvdGFNYW5hZ2VyKiBJblBy
b2Nlc3NJREJTZXJ2ZXI6OnF1b3RhTWFuYWdlcihjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbikK
IHsKICAgICByZXR1cm4gbV9xdW90YU1hbmFnZXJzLmVuc3VyZShvcmlnaW4sIFtdIHsKLSAgICAg
ICAgcmV0dXJuIFN0b3JhZ2VRdW90YU1hbmFnZXI6OmNyZWF0ZShTdG9yYWdlUXVvdGFNYW5hZ2Vy
OjpkZWZhdWx0UXVvdGEoKSwgW10geworICAgICAgICByZXR1cm4gU3RvcmFnZVF1b3RhTWFuYWdl
cjo6Y3JlYXRlKGRlZmF1bHRQZXJPcmlnaW5RdW90YSwgW10gewogICAgICAgICAgICAgcmV0dXJu
IDA7CiAgICAgICAgIH0sIFtdKHVpbnQ2NF90IHF1b3RhLCB1aW50NjRfdCBjdXJyZW50U3BhY2Us
IHVpbnQ2NF90IHNwYWNlSW5jcmVhc2UsIGF1dG8gY2FsbGJhY2spIHsKICAgICAgICAgICAgIGNh
bGxiYWNrKHF1b3RhICsgY3VycmVudFNwYWNlICsgc3BhY2VJbmNyZWFzZSk7CmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMDY0M2U5MTEyMzk0ZTdl
MGU5YWMxZGRkYWI1MDA2YTUyNjliMjk4ZC4uMGI4NzI1ODgxODJkY2Q4NTQ2NGQzMGE0MTdlY2Iw
NmE1NmQ1YzgyMiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIyLTAyLTAzICBTaWh1aSBMaXUgIDxzaWh1aV9saXVA
YXBwbGUuY29tPgorCisgICAgICAgIE1hbmFnZSBJbmRleGVkREIgc3RvcmFnZSBieSBvcmlnaW4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDkyNQor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vODc1NTUwMTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGV4aXN0aW5nIHRlc3RzIGZvciBiZWhh
dmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0luZGV4ZWREQkZpbGVOYW1lLm1tOgorICAgICAgICAocnVuVGVzdCk6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJQZXJzaXN0ZW5jZS5tbToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1N0b3JlQmxvYlRoZW5EZWxl
dGUubW06CisgICAgICAgIChURVNUKToKKwogMjAyMi0wMi0wMyAgSm9uYXRoYW4gQmVkYXJkICA8
amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgW2dpdC13ZWJraXRdIENvbmZpZ3VyZSBkZWZh
dWx0IGJyYW5jaCBtYW5hZ2VtZW50IApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJGaWxlTmFtZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCRmlsZU5hbWUubW0KaW5kZXggYTZiMDEyOWJj
MTA1OWM0ZjljMTE4ZDFmZDdlZmQyMTIzZWFjMmM3YS4uNDEwMjIyNGU0NTI3NGQzNjM3OWU0YmIw
MDJhMGZlZTg5ODMyZjViYyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9JbmRleGVkREJGaWxlTmFtZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQkZpbGVOYW1lLm1tCkBAIC03MSwyMCArNzEsMjMg
QEAgc3RhdGljIHZvaWQgcnVuVGVzdCgpCiAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBzdHJpbmcy
ID0gKE5TU3RyaW5nICopW2xhc3RTY3JpcHRNZXNzYWdlIGJvZHldOwogICAgIEVYUEVDVF9XS19T
VFJFUShAIlN1Y2Nlc3MiLCBzdHJpbmcyLmdldCgpKTsKIAotICAgIC8vIEZvciBkYXRhYmFzZSB0
aGF0IGlzIG5vdCBvcGVuZWQgYWZ0ZXIgdXBncmFkZSwgaXRzIGZpbGUgc2hvdWxkIGJlIGluIHYw
LgorICAgIC8vIEFsbCBkYXRhYmFzZXMgb2YgYW4gb3JpZ2luIGFyZSBtaWdyYXRlZCB0byBuZXcg
dmVyc2lvbiBkaXJlY3Rvcnkgd2hlbiB0aGUgb3JpZ2luIGlzIGFjY2Vzc2VkLgogICAgIGF1dG8g
ZGVmYXVsdEZpbGVNYW5hZ2VyID0gW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdOwogICAg
IE5TU3RyaW5nICpleGlzdGluZ0RhdGFiYXNlTmFtZSA9IEAiSW5kZXhlZERCVGVzdCI7CiAgICAg
TlNTdHJpbmcgKmNyZWF0ZWREYXRhYmFzZU5hbWUgPSBAIkluZGV4ZWREQk90aGVyIjsKICAgICBO
U1N0cmluZyAqdW51c2VkRGF0YWJhc2VOYW1lID0gQCJJbmRleGVkREJVbnVzZWQiOwogICAgIE5T
U3RyaW5nICpleGlzdGluZ0RhdGJhc2VIYXNoID0gV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6
Y29tcHV0ZUhhc2hGb3JGaWxlTmFtZShleGlzdGluZ0RhdGFiYXNlTmFtZSk7CiAgICAgTlNTdHJp
bmcgKmNyZWF0ZWREYXRhYmFzZUhhc2ggPSBXZWJDb3JlOjpTUUxpdGVGaWxlU3lzdGVtOjpjb21w
dXRlSGFzaEZvckZpbGVOYW1lKGNyZWF0ZWREYXRhYmFzZU5hbWUpOworICAgIE5TU3RyaW5nICp1
bnVzZWREYXRhYmFzZUhhc2ggPSBXZWJDb3JlOjpTUUxpdGVGaWxlU3lzdGVtOjpjb21wdXRlSGFz
aEZvckZpbGVOYW1lKGNyZWF0ZWREYXRhYmFzZU5hbWUpOwogICAgIE5TVVJMICppZGJSb290VVJM
ID0gW1tXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gX2luZGV4ZWREQkRhdGFi
YXNlRGlyZWN0b3J5XTsKICAgICBOU1VSTCAqb2xkVmVyc2lvbkRpcmVjdG9yeVVSTCA9IFtpZGJS
b290VVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAInYwIl07CiAgICAgTlNVUkwgKm5l
d1ZlcnNpb25EaXJlY3RvcnlVUkwgPSBbaWRiUm9vdFVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21w
b25lbnQ6QCJ2MSJdOwogICAgIE5TVVJMICpvbGRWZXJzaW9uT3JpZ2luRGlyZWN0b3J5VVJMID0g
W29sZFZlcnNpb25EaXJlY3RvcnlVUkwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OiBAImZp
bGVfXzAiXTsKICAgICBOU1VSTCAqbmV3VmVyc2lvbk9yaWdpbkRpcmVjdG9yeVVSTCA9IFtuZXdW
ZXJzaW9uRGlyZWN0b3J5VVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDogQCJmaWxlX18w
Il07CiAgICAgTlNVUkwgKm9sZFZlcnNpb25VbnVzZWREYXRhYmFzZURpcmVjdG9yeVVSTCA9IFtv
bGRWZXJzaW9uT3JpZ2luRGlyZWN0b3J5VVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDp1
bnVzZWREYXRhYmFzZU5hbWVdOwotICAgIEVYUEVDVF9UUlVFKFtbTlNGaWxlTWFuYWdlciBkZWZh
dWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpvbGRWZXJzaW9uVW51c2VkRGF0YWJhc2VEaXJl
Y3RvcnlVUkwucGF0aF0pOworICAgIE5TVVJMICpuZXdWZXJzaW9uVW51c2VkRGF0YWJhc2VEaXJl
Y3RvcnlVUkwgPSBbbmV3VmVyc2lvbk9yaWdpbkRpcmVjdG9yeVVSTCBVUkxCeUFwcGVuZGluZ1Bh
dGhDb21wb25lbnQ6dW51c2VkRGF0YWJhc2VIYXNoXTsKKyAgICBFWFBFQ1RfRkFMU0UoW1tOU0Zp
bGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOm9sZFZlcnNpb25VbnVz
ZWREYXRhYmFzZURpcmVjdG9yeVVSTC5wYXRoXSk7CisgICAgRVhQRUNUX1RSVUUoW1tOU0ZpbGVN
YW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOm5ld1ZlcnNpb25VbnVzZWRE
YXRhYmFzZURpcmVjdG9yeVVSTC5wYXRoXSk7CiAgICAgCiAgICAgLy8gRm9yIGRhdGFiYXNlIHRo
YXQgaXMgb3BlbmVkIGFmdGVyIHVwZ3JhZGUsIGl0cyBmaWxlIHNob3VsZCBvbmx5IGJlIGluIHYx
LgogICAgIE5TVVJMICpvbGRWZXJzaW9uRXhpc3RpbmdEYXRhYmFzZURpcmVjdG9yeVVSTCA9IFtv
bGRWZXJzaW9uT3JpZ2luRGlyZWN0b3J5VVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDog
ZXhpc3RpbmdEYXRhYmFzZU5hbWVdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJQZXJzaXN0ZW5jZS5tbSBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCUGVyc2lzdGVuY2UubW0KaW5kZXggMjcx
OGM0YWIzNjlhODE4MmRhMGUxMThjNDUxNjY2YWU5ZDFlMmM3NC4uNGYwYThlYzk0NDU0OGNhNmM3
ODcwMTVjNmI2ZDk1MDg1ODgzODhiMyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJQZXJzaXN0ZW5jZS5tbQorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlBlcnNpc3RlbmNlLm1tCkBAIC0z
MDUsMTAgKzMwNSwxNCBAQCBURVNUKEluZGV4ZWREQiwgSW5kZXhlZERCVGhpcmRQYXJ0eURhdGFS
ZW1vdmFsKQogICAgIEVYUEVDVF9XS19TVFJFUSggQCJkYXRhYmFzZSBpcyBjcmVhdGVkIC0gcHV0
IGl0ZW0gc3VjY2VzcyIsIChOU1N0cmluZyAqKVtsYXN0U2NyaXB0TWVzc2FnZSBib2R5XSk7CiAK
ICAgICByZWFkeVRvQ29udGludWUgPSBmYWxzZTsKLSAgICBbW1dLV2Vic2l0ZURhdGFTdG9yZSBk
ZWZhdWx0RGF0YVN0b3JlXSBmZXRjaERhdGFSZWNvcmRzT2ZUeXBlczp3ZWJzaXRlRGF0YVR5cGVz
LmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxXS1dlYnNpdGVEYXRhUmVjb3JkICo+
ICpkYXRhUmVjb3JkcykgewotICAgICAgICBFWFBFQ1RfRVEoMXUsIGRhdGFSZWNvcmRzLmNvdW50
KTsKLSAgICAgICAgRVhQRUNUX1dLX1NUUkVRKCJpZnJhbWUiLCBbW2RhdGFSZWNvcmRzIGZpcnN0
T2JqZWN0XSBkaXNwbGF5TmFtZV0pOwotICAgICAgICBbW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZh
dWx0RGF0YVN0b3JlXSByZW1vdmVEYXRhT2ZUeXBlczp3ZWJzaXRlRGF0YVR5cGVzLmdldCgpIGZv
ckRhdGFSZWNvcmRzOmRhdGFSZWNvcmRzIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7CisgICAgW1tX
S1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gZmV0Y2hEYXRhUmVjb3Jkc09mVHlw
ZXM6d2Vic2l0ZURhdGFUeXBlcy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8V0tX
ZWJzaXRlRGF0YVJlY29yZCAqPiAqcmVjb3JkcykgeworICAgICAgICBFWFBFQ1RfRVEoMnUsIHJl
Y29yZHMuY291bnQpOworICAgICAgICBOU1NvcnREZXNjcmlwdG9yICpyZWNvcmREZXNjcmlwdG9y
ID0gW05TU29ydERlc2NyaXB0b3Igc29ydERlc2NyaXB0b3JXaXRoS2V5OkAiZGlzcGxheU5hbWUi
IGFzY2VuZGluZzpZRVNdOworICAgICAgICBOU0FycmF5ICpzb3J0RGVzY3JpcHRvcnMgPSBAW3Jl
Y29yZERlc2NyaXB0b3JdOworICAgICAgICBOU0FycmF5ICpzb3J0ZWRSZWNvcmRzID0gW3JlY29y
ZHMgc29ydGVkQXJyYXlVc2luZ0Rlc2NyaXB0b3JzOnNvcnREZXNjcmlwdG9yc107CisgICAgICAg
IEVYUEVDVF9XS19TVFJFUSgiaWZyYW1lIiwgW1tzb3J0ZWRSZWNvcmRzIG9iamVjdEF0SW5kZXg6
MF0gZGlzcGxheU5hbWVdKTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKCJ3ZWJraXQub3JnIiwg
W1tzb3J0ZWRSZWNvcmRzIG9iamVjdEF0SW5kZXg6MV0gZGlzcGxheU5hbWVdKTsKKyAgICAgICAg
W1tXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gcmVtb3ZlRGF0YU9mVHlwZXM6
d2Vic2l0ZURhdGFUeXBlcy5nZXQoKSBmb3JEYXRhUmVjb3JkczpyZWNvcmRzIGNvbXBsZXRpb25I
YW5kbGVyOl4oKSB7CiAgICAgICAgICAgICByZWFkeVRvQ29udGludWUgPSB0cnVlOwogICAgICAg
ICB9XTsKICAgICB9XTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvU3RvcmVCbG9iVGhlbkRlbGV0ZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvU3RvcmVCbG9iVGhlbkRlbGV0ZS5tbQppbmRleCBhYWJmZmY4N2JjNjRi
Mzk1MmIyNDE0NTIxNWVlMDM4Mjg2YjdjODkxLi44ZTg1YTQwYTVlODNiYTAzNDMyMWU3ZTc5Njlk
ODM1NWUzMmMyNDY1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1N0b3JlQmxvYlRoZW5EZWxldGUubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9TdG9yZUJsb2JUaGVuRGVsZXRlLm1tCkBAIC04Nyw3ICs4Nyw3IEBA
IFRFU1QoSW5kZXhlZERCLCBTdG9yZUJsb2JUaGVuUmVtb3ZlRGF0YSkKICAgICBbW05TRmlsZU1h
bmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNvcHlJdGVtQXRQYXRoOmRhdGFiYXNlRmlsZVBhdGggdG9Q
YXRoOmZha2VTaG1QYXRoIGVycm9yOm5pbF07CiAgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRN
YW5hZ2VyXSBjb3B5SXRlbUF0UGF0aDpkYXRhYmFzZUZpbGVQYXRoIHRvUGF0aDpmYWtlV2FsUGF0
aCBlcnJvcjpuaWxdOwogCi0gICAgLy8gTWFrZSBzb21lIG90aGVyIC5ibG9iIGZpbGVzIGluIHRo
ZSBkYXRhYmFzZSBkaXJlY3RvcnkgdG8gbGF0ZXIgdmFsaWRhdGUgdGhhdCBvbmx5IGFwcHJvcHJp
YXRlIGZpbGVzIGFyZSBkZWxldGVkLgorICAgIC8vIE1ha2Ugc29tZSBvdGhlciAuYmxvYiBmaWxl
cyBpbiB0aGUgZGF0YWJhc2UgZGlyZWN0b3J5IHRvIGxhdGVyIHZhbGlkYXRlIGFsbCBibG9iIGZp
bGVzIGluIHRoZSBkaXJlY3RvcnkgYXJlIGRlbGV0ZWQuCiAgICAgTlNTdHJpbmcgKm90aGVyQmxv
YjEgPSBbZGF0YWJhc2VEaXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAi
NzE4Mi5ibG9iIl07CiAgICAgTlNTdHJpbmcgKm90aGVyQmxvYjIgPSBbZGF0YWJhc2VEaXJlY3Rv
cnkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiMWEuYmxvYiJdOwogICAgIE5TU3Ry
aW5nICpvdGhlckJsb2IzID0gW2RhdGFiYXNlRGlyZWN0b3J5IHN0cmluZ0J5QXBwZW5kaW5nUGF0
aENvbXBvbmVudDpAImExLmJsb2IiXTsKQEAgLTEwMiwxMyArMTAyLDEyIEBAIFRFU1QoSW5kZXhl
ZERCLCBTdG9yZUJsb2JUaGVuUmVtb3ZlRGF0YSkKICAgICAgICAgRVhQRUNUX0ZBTFNFKFtbTlNG
aWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpibG9iRmlsZVBhdGhd
KTsKICAgICAgICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0g
ZmlsZUV4aXN0c0F0UGF0aDpkYXRhYmFzZUZpbGVQYXRoXSk7CiAKLSAgICAgICAgLy8gTWFrZSBz
dXJlIHRoZSBmYWtlIGJsb2IgZmlsZSB3aXRoIGEgdmFsaWQgYmxvYiBmaWxlIG5hbWUgaXMgZ29u
ZS4KKyAgICAgICAgLy8gTWFrZSBzdXJlIGFsbCBmYWtlIGJsb2IgZmlsZSBhcmUgZ29uZS4KICAg
ICAgICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4
aXN0c0F0UGF0aDpvdGhlckJsb2IxXSk7CiAKLSAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBmYWtl
IGJsb2IgZmlsZXMgd2l0aCBpbnZhbGlkIGJsb2IgZmlsZSBuYW1lcyBhcmUgc3RpbGwgdGhlcmUu
Ci0gICAgICAgIEVYUEVDVF9UUlVFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmls
ZUV4aXN0c0F0UGF0aDpvdGhlckJsb2IyXSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKFtbTlNGaWxl
TWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpvdGhlckJsb2IzXSk7Ci0g
ICAgICAgIEVYUEVDVF9UUlVFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4
aXN0c0F0UGF0aDpvdGhlckJsb2I0XSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShbW05TRmlsZU1h
bmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6b3RoZXJCbG9iMl0pOworICAg
ICAgICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhp
c3RzQXRQYXRoOm90aGVyQmxvYjNdKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFu
YWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpvdGhlckJsb2I0XSk7CiAKICAg
ICAgICAgLy8gTWFrZSBzdXJlIGV2ZXJ5dGhpbmcgcmVsYXRlZCB0byB0aGUgZmFrZSBkYXRhYmFz
ZSBpcyBnb25lLgogICAgICAgICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRN
YW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmZha2VTaG1QYXRoXSk7CmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNvZGVwcm9qL3hjc2hhcmVkZGF0
YS94Y3NjaGVtZXMvV2ViS2l0VGVzdFJ1bm5lci54Y3NjaGVtZSBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2oveGNzaGFyZWRkYXRhL3hjc2NoZW1lcy9X
ZWJLaXRUZXN0UnVubmVyLnhjc2NoZW1lCmluZGV4IDlmOTgxYTNmZjFjMTkwMzU4NDAwMGIwNmZk
ZThiOGY5NjhkMDkwMzEuLmNkOThkMTI5YjI5M2EyMGRkYTM3ZmU0Y2U3YWM4MmUwZTgwM2MyNmYg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29k
ZXByb2oveGNzaGFyZWRkYXRhL3hjc2NoZW1lcy9XZWJLaXRUZXN0UnVubmVyLnhjc2NoZW1lCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2oveGNz
aGFyZWRkYXRhL3hjc2NoZW1lcy9XZWJLaXRUZXN0UnVubmVyLnhjc2NoZW1lCkBAIC00MCw4ICs0
MCwxMSBAQAogICAgICAgZGVidWdEb2N1bWVudFZlcnNpb25pbmcgPSAiWUVTIgogICAgICAgZGVi
dWdTZXJ2aWNlRXh0ZW5zaW9uID0gImludGVybmFsIgogICAgICAgYWxsb3dMb2NhdGlvblNpbXVs
YXRpb24gPSAiWUVTIj4KLSAgICAgIDxCdWlsZGFibGVQcm9kdWN0UnVubmFibGUKLSAgICAgICAg
IHJ1bm5hYmxlRGVidWdnaW5nTW9kZSA9ICIwIj4KKyAgICAgIDxQYXRoUnVubmFibGUKKyAgICAg
ICAgIHJ1bm5hYmxlRGVidWdnaW5nTW9kZSA9ICIwIgorICAgICAgICAgRmlsZVBhdGggPSAiL1Vz
ZXJzL3NpaHVpbC9EYXRhL1dlYktpdDEvT3BlblNvdXJjZS9XZWJLaXRCdWlsZC9EZWJ1Zy9XZWJL
aXRUZXN0UnVubmVyIj4KKyAgICAgIDwvUGF0aFJ1bm5hYmxlPgorICAgICAgPE1hY3JvRXhwYW5z
aW9uPgogICAgICAgICAgPEJ1aWxkYWJsZVJlZmVyZW5jZQogICAgICAgICAgICAgQnVpbGRhYmxl
SWRlbnRpZmllciA9ICJwcmltYXJ5IgogICAgICAgICAgICAgQmx1ZXByaW50SWRlbnRpZmllciA9
ICI4REQ3NkY5NjA0ODZBQTc2MDBEOTZCNUUiCkBAIC00OSw3ICs1MiwxMyBAQAogICAgICAgICAg
ICAgQmx1ZXByaW50TmFtZSA9ICJXZWJLaXRUZXN0UnVubmVyIgogICAgICAgICAgICAgUmVmZXJl
bmNlZENvbnRhaW5lciA9ICJjb250YWluZXI6V2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2oiPgog
ICAgICAgICAgPC9CdWlsZGFibGVSZWZlcmVuY2U+Ci0gICAgICA8L0J1aWxkYWJsZVByb2R1Y3RS
dW5uYWJsZT4KKyAgICAgIDwvTWFjcm9FeHBhbnNpb24+CisgICAgICA8Q29tbWFuZExpbmVBcmd1
bWVudHM+CisgICAgICAgICA8Q29tbWFuZExpbmVBcmd1bWVudAorICAgICAgICAgICAgYXJndW1l
bnQgPSAiL1VzZXJzL3NpaHVpbC9EYXRhL1dlYktpdDEvT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvYWJvcnQtaW4taW5pdGlhbC11
cGdyYWRlbmVlZGVkLmh0bWwiCisgICAgICAgICAgICBpc0VuYWJsZWQgPSAiWUVTIj4KKyAgICAg
ICAgIDwvQ29tbWFuZExpbmVBcmd1bWVudD4KKyAgICAgIDwvQ29tbWFuZExpbmVBcmd1bWVudHM+
CiAgICA8L0xhdW5jaEFjdGlvbj4KICAgIDxQcm9maWxlQWN0aW9uCiAgICAgICBidWlsZENvbmZp
Z3VyYXRpb24gPSAiUmVsZWFzZSIK
</data>
<flag name="commit-queue"
          id="477388"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450868</attachid>
            <date>2022-02-03 23:02:38 -0800</date>
            <delta_ts>2022-02-06 17:12:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234925-20220203230237.patch</filename>
            <type>text/plain</type>
            <size>285929</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5MDg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDljMjQxMmNmODI0YjRiNTY1YTVlNWRi
YWQxNWFjZDRhY2RkZDA0MzMuLjg0OWUwMWYyNGIyN2M1YzU4ZGIxYjkzZWQ0NjNlZmNhOGY3YWY2
MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjItMDItMDMgIFNpaHVpIExpdSAgPHNpaHVpX2xp
dUBhcHBsZS5jb20+CisKKyAgICAgICAgTWFuYWdlIEluZGV4ZWREQiBzdG9yYWdlIGJ5IG9yaWdp
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0OTI1
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NzU1NTAxND4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBoZWxwZXIgZnVuY3Rpb24gdG8gZ2V0
IHRoZSB0YXJnZXQgZnJvbSBhIHN5bW9ibGljIGxpbmsgcGF0aC4KKworICAgICAgICAqIHd0Zi9G
aWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6OmdldFN5bWJvbGlj
TGlua1RhcmdldCk6CisgICAgICAgICogd3RmL0ZpbGVTeXN0ZW0uaDoKKwogMjAyMi0wMi0wMyAg
Um9iZXJ0IEplbm5lciAgPEplbm5lckBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwg
cmV2ZXJ0aW5nIHIyODg5MDIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjcyNmQyZjc5ZTk1OTdhN2ExYTZhOWEx
ZDQ2OTVhNWUzYTViOTI1Mi4uNWFhZmJjMzk3NGQ0M2UxNjUwOGY3ZTIyZGRlOTVmOGYzNGIwMjc3
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk2IEBACisyMDIyLTAyLTAzICBTaWh1aSBMaXUgIDxz
aWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIE1hbmFnZSBJbmRleGVkREIgc3RvcmFnZSBi
eSBvcmlnaW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzNDkyNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODc1NTUwMTQ+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQm90aCBXZWJLaXQgYW5kIFdlYktp
dExlZ2FjeSB1c2VkIElEQlNlcnZlciB0byBtYW5hZ2UgVW5pcXVlSURCRGF0YWJhc2VzLCBhbmQg
VW5pcXVlSURCRGF0YWJhc2UgcG9pbnRlZCB0byAKKyAgICAgICAgSURCU2VydmVyLiBOb3cgdGhh
dCBXZWJLaXQgdXNlcyBXZWJLaXQ6OklEQlN0b3JhZ2VNYW5hZ2VyIHRvIG1hbmFnZSBVbmlxdWVJ
REJEYXRhYmFzZXMuIFdlIHVudGllIHRoZSAKKyAgICAgICAga25vdCBiZXR3ZWVuIElEQlNlcnZl
ciBhbmQgVW5pcXVlSURCRGF0YWJhc2UgYnkgYWRkaW5nIGEgbmV3IGFic3RyYWN0IGNsYXNzIFVu
aXF1ZUlEQkRhdGFiYXNlTWFuYWdlciBhbmQgbWFrZQorICAgICAgICBVbmlxdWVJREJEYXRhYmFz
ZSBwb2ludCB0byBVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuCisKKyAgICAgICAgQWxzbywgYXMg
cXVvdGEgY2hlY2sgaXMgbm8gbG9uZ2VyIGFzeW5jIGFjY29yZGluZyB0byBjaGFuZ2VzIGluIFdl
YktpdCwgd2UgbmVlZCB0byB1cGRhdGUgb3BlcmF0aW9ucyBpbgorICAgICAgICBVbmlxdWVJREJE
YXRhYmFzZSB0byBhZG9wdCB0aGUgY2hhbmdlLgorCisgICAgICAgIENvdmVyZWQgYnkgZXhpc3Rp
bmcgdGVzdHMuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnQuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNl
cnZlcjo6SURCU2VydmVyOjpyZWdpc3RlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpJREJTZXJ2ZXI6OnVucmVnaXN0ZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpjcmVhdGVCYWNraW5nU3RvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OnVwZ3JhZGVkRGF0YWJhc2VEaXJlY3Rv
cnkpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OnJlZ2lzdGVyRGF0
YWJhc2VDb25uZWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
SURCU2VydmVyOjp1bnJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0aW9uKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpjbG9zZUFuZFRha2VVbmlxdWVJREJE
YXRhYmFzZSk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lE
QlNlcnZlci5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJC
YWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlJREJC
YWNraW5nU3RvcmU6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJTZXJ2ZXI6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuaDoK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlPYmplY3RTdG9yZTo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5T2JqZWN0U3RvcmU6Ok1lbW9y
eU9iamVjdFN0b3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5
T2JqZWN0U3RvcmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRl
SURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRl
SURCQmFja2luZ1N0b3JlOjpTUUxpdGVJREJCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmVuY29kZURhdGFiYXNlTmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVj
b2RlRGF0YWJhc2VOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURC
QmFja2luZ1N0b3JlOjpnZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbyk6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlQmFja2luZ1N0b3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpm
aWxlbmFtZUZvckRhdGFiYXNlTmFtZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZnVsbERhdGFiYXNlRGlyZWN0b3J5
V2l0aFVwZ3JhZGUpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpVbmlxdWVJREJEYXRhYmFzZTo6VW5pcXVlSURCRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6bWFuYWdlcik6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtQ3VycmVudE9wZW5PcGVy
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6
cGVyZm9ybUN1cnJlbnRPcGVuT3BlcmF0aW9uQWZ0ZXJTcGFjZUNoZWNrKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZUJhY2tpbmdTdG9yZSk6
CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVP
YmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFi
YXNlOjpkZWxldGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVu
aXF1ZUlEQkRhdGFiYXNlOjpyZW5hbWVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpjbGVhck9iamVjdFN0b3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZUluZGV4KToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZUluZGV4
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OnJlbmFt
ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6
OnB1dE9yQWRkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJh
c2U6OnB1dE9yQWRkQWZ0ZXJTcGFjZUNoZWNrKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZl
cjo6VW5pcXVlSURCRGF0YWJhc2U6OmdldFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRBbGxSZWNvcmRzKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmdldENvdW50KToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZVJlY29yZCk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuQ3Vyc29yKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6Oml0ZXJhdGVD
dXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6
Y29tbWl0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJ
REJEYXRhYmFzZTo6YWJvcnRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2
ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjphYm9ydEluUHJvZ3Jlc3NUcmFuc2FjdGlvbnMpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6aGFzRGF0YUluTWVt
b3J5IGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURC
RGF0YWJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJh
c2U6OnNlcnZlcik6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L1VuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbjo6VW5pcXVlSURCRGF0YWJhc2VDb25u
ZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VD
b25uZWN0aW9uOjp+VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uOjptYW5hZ2VyKToKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0
aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29u
bmVjdGlvbjo6c2VydmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXI6On5VbmlxdWVJREJEYXRhYmFz
ZU1hbmFnZXIpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJE
YXRhYmFzZVRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5p
cXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rp
b246On5VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5oOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJFcnJvci5oOgorICAgICAgICAoV2ViQ29yZTo6
SURCRXJyb3I6Om9wZXJhdG9yIGJvb2wgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L3NoYXJlZC9JREJSZXNvdXJjZUlkZW50aWZpZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlJl
c291cmNlSWRlbnRpZmllcjo6b3BlcmF0b3IhPSBjb25zdCk6CisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDIyLTAyLTAzICBCZW4gTmhhbSAgPG5oYW1A
YXBwbGUuY29tPgogCiAgICAgICAgIExvY2FsU3RvcmFnZSB2YWx1ZXMgc2hvdWxkIGJlIDgtYml0
IHN0cmluZ3MgaW4gbWVtb3J5IGlmIHBvc3NpYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGEyODE0OTliY2RlMDY5
Mzk4NjI1OTMzNDg0NmUwMzEzYTU4NDc1NjMuLjZmNzkwMTM2YzRlODEzYmRmNDY4ZjBmYzcwMjU4
NzBhYzliNjZlODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjY1IEBACisyMDIyLTAyLTAzICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIE1hbmFnZSBJbmRleGVkREIg
c3RvcmFnZSBieSBvcmlnaW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzNDkyNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODc1NTUwMTQ+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gbmV0d29yayBw
cm9jZXNzLCBJbmRleGVkREIgZGF0YSBpcyBtYW5hZ2VkIGJ5IFdlYktpdDo6V2ViSURCU2VydmVy
LiBFYWNoIHNlc3Npb24gb3ducyBhIFdlYklEQlNlcnZlciAKKyAgICAgICAgKElEQlNlcnZlcikg
YW5kIGVhY2ggSURCU2VydmVyIG93bnMgb25lIG9yIG1vcmUgVW5pcXVlSURCRGF0YWJhc2VzIChy
ZXNwcmVudGluZyBvbmUgYWN0dWFsIGRhdGFiYXNlIHRoYXQKKyAgICAgICAgSURCRGF0YWJhc2Ug
Y29ubmVjdHMgdG8sIGNhbiBiZSBpZGVudGlmaWVkIGJ5IHtzZXNzaW9uLCBvcmlnaW4sIG5hbWV9
KS4gTm93IHRoYXQgd2UgaGF2ZSBOZXR3b3JrU3RvcmFnZU1hbmFnZXIsIAorICAgICAgICB3aGlj
aCBtYW5hZ2VzIHNlc3Npb24gc3RvcmFnZSBieSBvcmlnaW4sIHdlIGNhbiBtZXJnZSBXZWJJREJT
ZXJ2ZXIgd2l0aCBOZXR3b3JrU3RvcmFnZU1hbmFnZXIsIHNpbmNlIEluZGV4ZWREQiAKKyAgICAg
ICAgc3RvcmFnZSBpcyBub3Qgc2hhcmVkIGFjcm9zcyBvcmlnaW5zLgorCisgICAgICAgIFRoZSBv
bGQgc3RydWN0dXJlIGlzOgorICAgICAgICBOZXR3b3JrU2Vzc2lvbiAtIFdlYklEQlNlcnZlciAt
IElEQlNlcnZlciAtIFVuaXF1ZUlEQkRhdGFiYXNlcworICAgICAgICBUaGUgbmV3IHN0cnVjdHVy
ZSBpczoKKyAgICAgICAgTmV0d29ya1Nlc3Npb24gLSBOZXR3b3JrU3RvcmFnZU1hbmFnZXIgLSBP
cmlnaW5TdG9yYWdlTWFuYWdlciAtIElEQlN0b3JhZ2VNYW5hZ2VyIC0gVW5pcXVlSURCRGF0YWJh
c2UKKworICAgICAgICBUbyBjb21wbGV0ZSB0aGlzIHRyYW5zaXRpb24sIHdlIG5lZWQgdG8gbWFr
ZSBhIGZldyBjaGFuZ2VzOgorICAgICAgICAxLiBXZWIgcHJvY2VzcyBub3cgc2VuZHMgSW5kZXhl
ZERCIHJlbGF0ZWQgbWVzc2FnZXMgdG8gTmV0d29ya1N0b3JhZ2VNYW5hZ2VyIGluc3RlYWQgb2Yg
V2ViSURCU2VydmVyLiAKKyAgICAgICAgMi4gU29tZSBtZXNzYWdlcyBhcmUgc2VudCB0byBvcGVy
YXRlIG9uIFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiBvciBVbmlxdWVJREJEYXRhYmFzZVRy
YW5zYWN0aW9uLCBhbmQgdGhleSAKKyAgICAgICAgdXNlIGlkZW50aWZpZXJzIHRvIHNwZWNpZnkg
dGhlIHRhcmdldC4gVGhlcmVmb3JlLCBOZXR3b3JrU3RvcmFnZU1hbmFnZXJzIG5lZWRzIHRvIGtu
b3cgdGhlIG1hcHBpbmcgYmV0d2VlbiAKKyAgICAgICAgaWRlbnRpZmllcnMgYW5kIHRhcmdldCBv
YmplY3RzLiBXZSBhZGQgYSBuZXcgSURCU3RvcmFnZVJlZ2lzdHJ5IGNsYXNzIHRvIHJlY29yZCB0
aGlzIG1hcHBpbmcuIEVhY2ggCisgICAgICAgIE5ldHdvcmtTdG9yYWdlTWFuYWdlciBvd25zIGEg
SURCU3RvcmFnZVJlZ2lzdHJ5IGFuZCBpdCBwYXNzZXMgSURCU3RvcmFnZVJlZ2lzdHJ5IHRvIElE
QlN0b3JhZ2VNYW5hZ2VyLAorICAgICAgICBJREJTdG9yYWdlTWFuYWdlciB3aWxsIHJlZ2lzdGVy
IG9iamVjdHMgdG8gSURCU3RvcmFnZVJlZ2lzdHJ5IGFuZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXIg
Y2FuIGRvIHNlYXJjaCB2aWEgCisgICAgICAgIElEQlN0b3JhZ2VSZWdpc3RyeS4KKyAgICAgICAg
My4gUXVvdGEgY2hlY2sgZm9yIEluZGV4ZWREQiBvcGVyYXRpb25zIGJlY29tZXMgYXN5bmMgYnkg
YWRkaW5nIG5ldyBRdW90YU1hbmFnZXIgY2xhc3MsIHdoaWNoIGlzIHNpbWlsYXIgdG8gCisgICAg
ICAgIFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXIgYnV0IHByb3ZpZGVzIGFzeW5jIGludGVy
ZmFjZXMuIAorICAgICAgICBXZSB1c2VkIHRvIGJsb2NrIHRoZSBJREJTZXJ2ZXIgdGhyZWFkIHdo
ZW4gaXQgaXMgd2FpdGluZyBmb3IgcXVvdGEgY2hlY2sgcmVzdWx0IGZyb20gVUkgcHJvY2Vzcywg
dGhpcyBpcyBmaW5lIAorICAgICAgICBiZWNhdXNlIElEQlNlcnZlciBydW5zIG9uIGl0cyBvd24g
dGhyZWFkLiBOb3cgdGhhdCBJREJTdG9yYWdlTWFuYWdlciBydW5zIG9uIHRoZSBzYW1lIHRocmVh
ZCBhcyB0aGUgb3RoZXIgCisgICAgICAgIHN0b3JhZ2UgdHlwZXMsIHdlIGNhbm5vdCBibG9jayB0
aGUgdGhyZWFkIG9uIHF1b3RhIGNoZWNrLgorICAgICAgICA0LiBSZW5hbWUgV2ViSURCQ29ubmVj
dGlvblRvQ2xpZW50IHRvIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQgdG8gcmVmbGVjdCB0
aGUgY2hhbmdlIG9uIHRoZSBzdHJ1Y3R1cmUuIEFsc28sCisgICAgICAgIElEQlN0b3JhZ2VDb25u
ZWN0aW9uVG9DbGllbnQgZG9lcyBub3Qga2VlcCByZWZlcmVuY2UgdG8gdGhlIElQQzo6Q29ubmVj
dGlvbiBub3csIGl0IG9ubHkgcmVjb3JkcyAKKyAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpVbmlx
dWVJRC4KKyAgICAgICAgNS4gSW5kZXhlZERCIGRhdGEgbWF5IGJlIHB1dCBpbiBkaWZmZXJlbnQg
dmVyc2lvbiBkaXJjdG9yaWVzLiBXZSB1c2VkIHRvIG1pZ3JhdGUgZGF0YWJhc2UgdG8gbmV3IHZl
cnNpb24gCisgICAgICAgIGRpcmV0b3J5IHdoZW4gdGhlIGRhdGFiYXNlIGlzIGFjY2Vzc2VkLiBB
cyBJREJTdG9yYWdlTWFuYWdlciBub3cgbWFuYWdlcyBJbmRleGVkREIgZGF0YSBvZiBvbmUgb3Jp
Z2luLCBpdCdzIAorICAgICAgICBzaW1wbGVyIGlmIGl0IG9ubHkga2VlcHMgdHJhY2sgb2Ygb25l
IGRpcmVjdG9yeS4gVGhlcmVmb3JlLCB3ZSBub3cgbWlncmF0ZSBhbGwgZGF0YWJhc2VzIG9mIG9u
ZSBvcmlnaW4KKyAgICAgICAgd2hlbiB0aGUgb3JpZ2luIGlzIGFjY2Vzc2VkIChzZWUgSURCU3Rv
cmFnZU1hbmFnZXI6OmlkYlN0b3JhZ2VPcmlnaW5EaXJlY3RvcnkpLiAKKworICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnVwZGF0ZVF1b3RhQmFzZWRP
blNwYWNlVXNhZ2VGb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzRm9ySW5kZXhlZERCKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkaWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzOjpjcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjphZGRXZWJzaXRlRGF0YVN0b3JlKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmZldGNoV2Vic2l0ZURhdGEpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZUFuZFJlc3RyaWN0V2Vic2l0ZURhdGFGb3JS
ZWdpc3RyYWJsZURvbWFpbnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVn
aXN0cmFibGVEb21haW5zV2l0aFdlYnNpdGVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OnByZXBhcmVUb1N1c3BlbmQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6cmVzdW1lKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlc2V0UXVv
dGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGlkSW5jcmVhc2VRdW90YSk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZW5hbWVPcmlnaW5JbldlYnNpdGVE
YXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnN0b3JhZ2VRdW90YU1hbmFn
ZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y29ubmVjdGlvblRvV2ViUHJv
Y2Vzc0Nsb3NlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzdXNwZW5kSURC
U2VydmVycyk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuaDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnNob3VsZFN1c3BlbmRJREJT
ZXJ2ZXJzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vz
c2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjppbnZhbGlkYXRlQW5k
Q2FuY2VsKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OmFkZFN0b3JhZ2VNYW5h
Z2VyU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjplbnN1cmVXZWJJ
REJTZXJ2ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6Y2xv
c2VJREJTZXJ2ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6
YWRkSW5kZXhlZERhdGFiYXNlU2Vzc2lvbik6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Nlc3Npb24uaDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246
OndlYklEQlNlcnZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9u
OjpoYXNJREJEYXRhYmFzZVBhdGggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNh
Y2hlU3RvcmFnZTo6RW5naW5lOjpzdG9yYWdlUGF0aCk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hl
U3RvcmFnZTo6RW5naW5lOjpkaXNrVXNhZ2UpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3Jh
Z2U6OkVuZ2luZTo6cmVxdWVzdFNwYWNlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9D
YWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3Jh
Z2U6OkNhY2hlczo6cmVxdWVzdFNwYWNlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9pb3Mv
TmV0d29ya1Byb2Nlc3NJT1MubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpz
ZXRJc0hvbGRpbmdMb2NrZWRGaWxlcyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFn
ZS9JREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9D
bGllbnQpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50Ojp+
SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3Jh
Z2VDb25uZWN0aW9uVG9DbGllbnQ6OmNvbm5lY3Rpb25Ub0NsaWVudCk6CisgICAgICAgIChXZWJL
aXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZEdldFJlc3VsdCk6CisgICAgICAg
IChXZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZERlbGV0ZURhdGFiYXNl
KToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkT3Bl
bkRhdGFiYXNlKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVu
dDo6ZGlkU3RhcnRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25u
ZWN0aW9uVG9DbGllbnQ6OmRpZEFib3J0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpJ
REJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRDb21taXRUcmFuc2FjdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZENyZWF0ZU9iamVj
dFN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6
ZGlkRGVsZXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVj
dGlvblRvQ2xpZW50OjpkaWRSZW5hbWVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OklE
QlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZENsZWFyT2JqZWN0U3RvcmUpOgorICAgICAg
ICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRDcmVhdGVJbmRleCk6
CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZERlbGV0
ZUluZGV4KToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6
ZGlkUmVuYW1lSW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVjdGlvblRv
Q2xpZW50OjpkaWRQdXRPckFkZCk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0
aW9uVG9DbGllbnQ6OmRpZEdldFJlY29yZCk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VD
b25uZWN0aW9uVG9DbGllbnQ6OmRpZEdldEFsbFJlY29yZHMpOgorICAgICAgICAoV2ViS2l0OjpJ
REJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRHZXRDb3VudCk6CisgICAgICAgIChXZWJL
aXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZERlbGV0ZVJlY29yZCk6CisgICAg
ICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZE9wZW5DdXJzb3Ip
OgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRJdGVy
YXRlQ3Vyc29yKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVu
dDo6ZGlkR2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKToKKyAgICAgICAgKFdlYktpdDo6
SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZmlyZVZlcnNpb25DaGFuZ2VFdmVudCk6Cisg
ICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZENsb3NlRnJv
bVNlcnZlcik6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6
Om5vdGlmeU9wZW5EQlJlcXVlc3RCbG9ja2VkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9z
dG9yYWdlL0lEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQuaDogQWRkZWQuCisgICAgICAgICog
TmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlTWFuYWdlci5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViS2l0OjptaWdyYXRlT3JpZ2luRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0
b3JhZ2VNYW5hZ2VyOjppZGJTdG9yYWdlT3JpZ2luRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktp
dDo6SURCU3RvcmFnZU1hbmFnZXI6OmlkYlN0b3JhZ2VTaXplKToKKyAgICAgICAgKFdlYktpdDo6
Z2V0T3JpZ2luc0ZvclZlcnNpb24pOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlTWFuYWdl
cjo6b3JpZ2luc09mSURCU3RvcmFnZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdl
TWFuYWdlcjo6SURCU3RvcmFnZU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdl
TWFuYWdlcjo6aXNBY3RpdmUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlTWFu
YWdlcjo6aGFzRGF0YUluTWVtb3J5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFn
ZU1hbmFnZXI6OmNsb3NlRGF0YWJhc2VzRm9yRGVsZXRpb24pOgorICAgICAgICAoV2ViS2l0OjpJ
REJTdG9yYWdlTWFuYWdlcjo6c3RvcERhdGFiYXNlQWN0aXZpdGllc0ZvclN1c3BlbmQpOgorICAg
ICAgICAoV2ViS2l0OjpJREJTdG9yYWdlTWFuYWdlcjo6Z2V0T3JDcmVhdGVVbmlxdWVJREJEYXRh
YmFzZSk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VNYW5hZ2VyOjpvcGVuRGF0YWJhc2Up
OgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlRGF0YWJhc2UpOgor
ICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlTWFuYWdlcjo6Z2V0QWxsRGF0YWJhc2VOYW1lc0Fu
ZFZlcnNpb25zKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZU1hbmFnZXI6Om9wZW5EQlJl
cXVlc3RDYW5jZWxsZWQpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlTWFuYWdlcjo6cmVn
aXN0ZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZU1hbmFnZXI6OnVu
cmVnaXN0ZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZU1hbmFnZXI6
OnJlZ2lzdGVyVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlTWFuYWdl
cjo6dW5yZWdpc3RlclRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZU1h
bmFnZXI6OmNyZWF0ZUJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VN
YW5hZ2VyOjpyZXF1ZXN0U3BhY2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2Uv
SURCU3RvcmFnZU1hbmFnZXIuaDogQWRkZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3Rv
cmFnZS9JREJTdG9yYWdlUmVnaXN0cnkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6SURC
U3RvcmFnZVJlZ2lzdHJ5OjpnZXRPckNyZWF0ZUNvbm5lY3Rpb25Ub0NsaWVudCk6CisgICAgICAg
IChXZWJLaXQ6OklEQlN0b3JhZ2VSZWdpc3RyeTo6cmVtb3ZlQ29ubmVjdGlvblRvQ2xpZW50KToK
KyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZVJlZ2lzdHJ5OjpyZWdpc3RlckNvbm5lY3Rpb24p
OgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlUmVnaXN0cnk6OnVucmVnaXN0ZXJDb25uZWN0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZVJlZ2lzdHJ5OjpyZWdpc3RlclRyYW5z
YWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZVJlZ2lzdHJ5Ojp1bnJlZ2lzdGVy
VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlUmVnaXN0cnk6OmdldENv
bm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlUmVnaXN0cnk6OmdldFRyYW5z
YWN0aW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VSZWdp
c3RyeS5oOiBBZGRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtT
dG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdl
cjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpOZXR3
b3JrU3RvcmFnZU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFn
ZXI6OmNhbkhhbmRsZVR5cGVzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5h
Z2VyOjpzdG9wUmVjZWl2aW5nTWVzc2FnZUZyb21Db25uZWN0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpsb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2VyKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkaWRJbmNyZWFzZVF1b3RhKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpnZXRBbGxPcmlnaW5zKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjptb3ZlRGF0YSk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6c3VzcGVuZCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6cmVnaXN0ZXJUZW1wb3JhcnlCbG9iRmlsZVBh
dGhzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpyZXF1ZXN0U3Bh
Y2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnJlc2V0UXVvdGFG
b3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpyZXNl
dFF1b3RhVXBkYXRlZEJhc2VkT25Vc2FnZUZvclRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrU3RvcmFnZU1hbmFnZXI6Om9wZW5EYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtTdG9yYWdlTWFuYWdlcjo6b3BlbkRCUmVxdWVzdENhbmNlbGxlZCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlRGF0YWJhc2UpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmVzdGFibGlzaFRyYW5zYWN0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkYXRhYmFzZUNvbm5lY3Rpb25Q
ZW5kaW5nQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmRh
dGFiYXNlQ29ubmVjdGlvbkNsb3NlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdl
TWFuYWdlcjo6YWJvcnRPcGVuQW5kVXBncmFkZU5lZWRlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudCk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6YWJvcnRUcmFuc2FjdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y29tbWl0VHJhbnNhY3Rpb24pOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmRpZEZpbmlzaEhhbmRsaW5n
VmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyOjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtT
dG9yYWdlTWFuYWdlcjo6ZGVsZXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrU3RvcmFnZU1hbmFnZXI6OnJlbmFtZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjbGVhck9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlSW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnJlbmFtZUluZGV4KToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1N0b3JhZ2VNYW5hZ2VyOjpwdXRPckFkZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtT
dG9yYWdlTWFuYWdlcjo6Z2V0UmVjb3JkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyOjpnZXRBbGxSZWNvcmRzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyOjpnZXRDb3VudCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFu
YWdlcjo6ZGVsZXRlUmVjb3JkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5h
Z2VyOjpvcGVuQ3Vyc29yKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2Vy
OjppdGVyYXRlQ3Vyc29yKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2Vy
OjpnZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIubWVzc2FnZXMuaW46CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0OjpTdG9yYWdl
QnVja2V0KToKKyAgICAgICAgKFdlYktpdDo6T3JpZ2luU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VC
dWNrZXQ6OnRvV2Vic2l0ZURhdGFUeXBlKToKKyAgICAgICAgKFdlYktpdDo6T3JpZ2luU3RvcmFn
ZU1hbmFnZXI6OlN0b3JhZ2VCdWNrZXQ6OnRvU3RvcmFnZUlkZW50aWZpZXIpOgorICAgICAgICAo
V2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldDo6aWRiU3RvcmFnZU1h
bmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1
Y2tldDo6ZXhpc3RpbmdJREJTdG9yYWdlTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdp
blN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0Ojppc0FjdGl2ZSBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0Ojppc0VtcHR5IGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6T3JpZ2luU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VCdWNr
ZXQ6OmRlbGV0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6
U3RvcmFnZUJ1Y2tldDo6bW92ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdl
TWFuYWdlcjo6U3RvcmFnZUJ1Y2tldDo6ZmV0Y2hEYXRhVHlwZXNJbkxpc3RGcm9tTWVtb3J5KToK
KyAgICAgICAgKFdlYktpdDo6T3JpZ2luU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VCdWNrZXQ6OmZl
dGNoRGF0YVR5cGVzSW5MaXN0RnJvbURpc2spOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9y
YWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldDo6ZGVsZXRlSURCU3RvcmFnZURhdGEpOgorICAgICAg
ICAoV2ViS2l0OjpjcmVhdGVRdW90YU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5T
dG9yYWdlTWFuYWdlcjo6T3JpZ2luU3RvcmFnZU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpP
cmlnaW5TdG9yYWdlTWFuYWdlcjo6ZGVmYXVsdEJ1Y2tldCk6CisgICAgICAgIChXZWJLaXQ6Ok9y
aWdpblN0b3JhZ2VNYW5hZ2VyOjpxdW90YU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpPcmln
aW5TdG9yYWdlTWFuYWdlcjo6aWRiU3RvcmFnZU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpP
cmlnaW5TdG9yYWdlTWFuYWdlcjo6ZXhpc3RpbmdJREJTdG9yYWdlTWFuYWdlcik6CisgICAgICAg
IChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjptb3ZlRGF0YSk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL3N0b3JhZ2UvUXVvdGFNYW5hZ2VyLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OlF1b3RhTWFuYWdlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UXVvdGFNYW5h
Z2VyOjpRdW90YU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpRdW90YU1hbmFnZXI6OnJlcXVl
c3RTcGFjZSk6CisgICAgICAgIChXZWJLaXQ6OlF1b3RhTWFuYWdlcjo6aGFuZGxlUmVxdWVzdHMp
OgorICAgICAgICAoV2ViS2l0OjpRdW90YU1hbmFnZXI6OmdyYW50V2l0aEN1cnJlbnRRdW90YSk6
CisgICAgICAgIChXZWJLaXQ6OlF1b3RhTWFuYWdlcjo6Z3JhbnRGYXN0UGF0aCk6CisgICAgICAg
IChXZWJLaXQ6OlF1b3RhTWFuYWdlcjo6ZGlkSW5jcmVhc2VRdW90YSk6CisgICAgICAgIChXZWJL
aXQ6OlF1b3RhTWFuYWdlcjo6cmVzZXRRdW90YVVwZGF0ZWRCYXNlZE9uVXNhZ2VGb3JUZXN0aW5n
KToKKyAgICAgICAgKFdlYktpdDo6UXVvdGFNYW5hZ2VyOjpyZXNldFF1b3RhRm9yVGVzdGluZyk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9RdW90YU1hbmFnZXIuaDogQWRkZWQu
CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICh0eXBlc190
aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKToKKyAgICAgICAgKiBTaGFyZWQvV2Vic2l0
ZURhdGEvUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLmg6IEFkZGVkLgorICAgICAgICAq
IFNoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oOgorICAgICAgICAqIFNvdXJjZXMu
dHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjppbmNyZWFzZVF1b3RhKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnBlclRoaXJkUGFydHlPcmlnaW5TdG9y
YWdlUXVvdGEgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRQ
ZXJPcmlnaW5RdW90YSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb246OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24u
aDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpkZWxldGVE
YXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6b3Bl
bkRhdGFiYXNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjph
Ym9ydFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvU2Vy
dmVyOjpjb21taXRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rp
b25Ub1NlcnZlcjo6ZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmNyZWF0ZU9iamVjdFN0
b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpkZWxldGVP
YmplY3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6
cmVuYW1lT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9T
ZXJ2ZXI6OmNsZWFyT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0
aW9uVG9TZXJ2ZXI6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVj
dGlvblRvU2VydmVyOjpkZWxldGVJbmRleCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5l
Y3Rpb25Ub1NlcnZlcjo6cmVuYW1lSW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25u
ZWN0aW9uVG9TZXJ2ZXI6OnB1dE9yQWRkKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVj
dGlvblRvU2VydmVyOjpnZXRSZWNvcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0
aW9uVG9TZXJ2ZXI6OmdldEFsbFJlY29yZHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25u
ZWN0aW9uVG9TZXJ2ZXI6OmdldENvdW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVj
dGlvblRvU2VydmVyOjpkZWxldGVSZWNvcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25u
ZWN0aW9uVG9TZXJ2ZXI6Om9wZW5DdXJzb3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25u
ZWN0aW9uVG9TZXJ2ZXI6Oml0ZXJhdGVDdXJzb3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJD
b25uZWN0aW9uVG9TZXJ2ZXI6OmVzdGFibGlzaFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpkYXRhYmFzZUNvbm5lY3Rpb25QZW5kaW5nQ2xv
c2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRhdGFiYXNl
Q29ubmVjdGlvbkNsb3NlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub1Nl
cnZlcjo6YWJvcnRPcGVuQW5kVXBncmFkZU5lZWRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYklE
QkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudCk6CisgICAgICAg
IChXZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6b3BlbkRCUmVxdWVzdENhbmNlbGxl
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Z2V0QWxsRGF0
YWJhc2VOYW1lc0FuZFZlcnNpb25zKToKKwogMjAyMi0wMi0wMyAgU2lodWkgTGl1ICA8c2lodWlf
bGl1QGFwcGxlLmNvbT4KIAogICAgICAgICBEZWxheSB3cml0aW5nIG9yaWdpbiBmaWxlIGluIE5l
dHdvcmtTdG9yYWdlTWFuYWdlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwppbmRleCBlNmJhNzMyMmMzNDhl
Y2RlNDc5NGUwOTQ5OTViYWI0ODk2YmY1YTQ5Li5mMTQ2MDI5MTQzMjM0NGM1N2ZmMDY0YTdkZTVk
N2U5MDZkNGVlNzRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIy
LTAyLTAzICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIE1hbmFn
ZSBJbmRleGVkREIgc3RvcmFnZSBieSBvcmlnaW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDkyNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODc1
NTUwMTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBTdG9yYWdlL0luUHJvY2Vzc0lEQlNlcnZlci5jcHA6CisgICAgICAgIChJblByb2Nlc3NJREJT
ZXJ2ZXI6OnF1b3RhTWFuYWdlcik6CisKIDIwMjItMDItMDIgIEVsbGlvdHQgV2lsbGlhbXMgIDxl
bXdAYXBwbGUuY29tPgogCiAgICAgICAgIFtYY29kZV0gRml4IHJlZHVuZGFudCBleGVjdXRpb24g
b2YgIkNoZWNrIFZUYWJsZXMuLi4iIHNjcmlwdApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
RmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAppbmRleCAzODgz
YWMyNjYzZDBhMjAyMzJjYjVlMDliNGU0NTk2OGIwMDE2N2I5Li41MDQxMDNlZDBlNGMxZTAzYzEw
OWY0ZjdmMTljODhkODlhMGZmYmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lz
dGVtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcApAQCAtNjYwLDYgKzY2
MCwxNSBAQCBib29sIGNyZWF0ZVN5bWJvbGljTGluayhjb25zdCBTdHJpbmcmIHRhcmdldFBhdGgs
IGNvbnN0IFN0cmluZyYgc3ltYm9saWNMaW5rUGF0aAogICAgIHJldHVybiAhZWM7CiB9CiAKK1N0
cmluZyBnZXRTeW1ib2xpY0xpbmtUYXJnZXQoY29uc3QgU3RyaW5nJiBzeW1ib2xpY0xpbmtQYXRo
KQoreworICAgIGF1dG8gZmlsZVN5c3RlbVBhdGggPSB0b1N0ZEZpbGVTeXN0ZW1QYXRoKHN5bWJv
bGljTGlua1BhdGgpOworICAgIGlmICghc3RkOjpmaWxlc3lzdGVtOjppc19zeW1saW5rKGZpbGVT
eXN0ZW1QYXRoKSkKKyAgICAgICAgcmV0dXJuIHN5bWJvbGljTGlua1BhdGg7CisKKyAgICByZXR1
cm4gZnJvbVN0ZEZpbGVTeXN0ZW1QYXRoKHN0ZDo6ZmlsZXN5c3RlbTo6cmVhZF9zeW1saW5rKGZp
bGVTeXN0ZW1QYXRoKSk7Cit9CisKIGJvb2wgaGFyZExpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQ
YXRoLCBjb25zdCBTdHJpbmcmIGxpbmtQYXRoKQogewogICAgIHN0ZDo6ZXJyb3JfY29kZSBlYzsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9XVEYvd3Rm
L0ZpbGVTeXN0ZW0uaAppbmRleCBjZTY4MTI4NjBhMDBmOTAyZjI5OTgzZjQ4Y2IxY2ExZWQxOGI5
MDk3Li45ZDhlNDliNTE4YzRlMGQ0ZjMyNmY0YzRhMWNkNzc3ZTNiMjg4ZmUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKKysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5
c3RlbS5oCkBAIC0xMjcsNiArMTI3LDcgQEAgV1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0aW9u
YWw8dWludDY0X3Q+IHZvbHVtZUZyZWVTcGFjZShjb25zdCBTdHJpbmcmKTsKIFdURl9FWFBPUlRf
UFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiB2b2x1bWVGaWxlQmxvY2tTaXplKGNvbnN0
IFN0cmluZyYpOwogV1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0
RmlsZURldmljZUlkKGNvbnN0IENTdHJpbmcmKTsKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGNy
ZWF0ZVN5bWJvbGljTGluayhjb25zdCBTdHJpbmcmIHRhcmdldFBhdGgsIGNvbnN0IFN0cmluZyYg
c3ltYm9saWNMaW5rUGF0aCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGdldFN5bWJvbGlj
TGlua1RhcmdldChjb25zdCBTdHJpbmcmIHN5bWJvbGljTGlua1BhdGgpOwogV1RGX0VYUE9SVF9Q
UklWQVRFIFN0cmluZyBjcmVhdGVUZW1wb3JhcnlaaXBBcmNoaXZlKGNvbnN0IFN0cmluZyYgZGly
ZWN0b3J5KTsKIAogZW51bSBjbGFzcyBGaWxlVHlwZSB7IFJlZ3VsYXIsIERpcmVjdG9yeSwgU3lt
Ym9saWNMaW5rIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIv
U291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCA2Y2IxNzQ1OWE3ZGE4NGY1YTI2Mjk5
ZDY3MDhiMmM3YjczYzBkNmM2Li45NWI4NzQ4NGYxN2RiNTVkMDNlNDgxM2QyZmM5MDYyNTdmMzRk
NWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTIyNCwxMSArMjI0LDE2IEBAIHNldChXZWJDb3Jl
X1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
SURCQ29ubmVjdGlvblRvQ2xpZW50LmgKICAgICBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURC
Q29ubmVjdGlvblRvQ2xpZW50RGVsZWdhdGUuaAogICAgIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9JREJTZXJ2ZXIuaAorICAgIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JbmRleFZhbHVlRW50
cnkuaAorICAgIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JbmRleFZhbHVlU3RvcmUuaAorICAg
IE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbi5o
CiAgICAgTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5oCiAg
ICAgTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5oCisgICAg
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQlRyYW5zYWN0aW9uLmgKICAgICBNb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU2VydmVyT3BlbkRCUmVxdWVzdC5oCiAgICAgTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmgKICAgICBNb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmgKKyAgICBNb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyLmgKICAgICBNb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5oCiAKICAgICBNb2R1bGVz
L2luZGV4ZWRkYi9zaGFyZWQvSW5kZXhLZXkuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuaAppbmRleCA2YzBiMWI0
ZjJhYjBjMDMzMDc2NjU0ZWE0YjI3NjU1OTQ0NTg5NTM2Li43ZjA5YmZiMzJkNTFlOTdmYTdlZDRl
NDVkNTExMzM4ZTViODExN2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuaApAQCAtODIsNyArODIsNyBAQCBw
dWJsaWM6CiAgICAgYm9vbCBpc1RyYW5zaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1faXNUcmFuc2ll
bnQ7IH0KIAogICAgIFN0cmluZyBkYXRhYmFzZURpcmVjdG9yeVJlbGF0aXZlVG9Sb290KGNvbnN0
IFN0cmluZyYgcm9vdERpcmVjdG9yeSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uU3RyaW5nPSJ2MSIp
IGNvbnN0OwotICAgIHN0YXRpYyBTdHJpbmcgZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9v
dChjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHRvcExldmVsT3JpZ2luLCBjb25zdCBTZWN1cml0
eU9yaWdpbkRhdGEmIG9wZW5pbmdPcmlnaW4sIGNvbnN0IFN0cmluZyYgcm9vdERpcmVjdG9yeSwg
Y29uc3QgU3RyaW5nJiB2ZXJzaW9uU3RyaW5nKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
U3RyaW5nIGRhdGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVUb1Jvb3QoY29uc3QgU2VjdXJpdHlPcmln
aW5EYXRhJiB0b3BMZXZlbE9yaWdpbiwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcGVuaW5n
T3JpZ2luLCBjb25zdCBTdHJpbmcmIHJvb3REaXJlY3RvcnksIGNvbnN0IFN0cmluZyYgdmVyc2lv
blN0cmluZyk7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNv
ZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0
aW9uYWw8SURCRGF0YWJhc2VJZGVudGlmaWVyPiBkZWNvZGUoRGVjb2RlciYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkNvbm5lY3Rpb25U
b0NsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkNv
bm5lY3Rpb25Ub0NsaWVudC5oCmluZGV4IDI3ZjcyNjkxOWYxNDIxZjIxYTVmMDNmZmRmYzE3NmQ0
YzRiZGYzYzIuLmYwNWFjMmY4YzgyYTgwOWMyNzFjOWRmNTk3Zjk2NDczMTllZjY0NjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0
aW9uVG9DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvSURCQ29ubmVjdGlvblRvQ2xpZW50LmgKQEAgLTc0LDExICs3NCwxMSBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIG5vdGlmeU9wZW5EQlJlcXVlc3RCbG9ja2VkKGNvbnN0IElEQlJlc291cmNlSWRl
bnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IG9sZFZlcnNpb24sIHVpbnQ2NF90
IG5ld1ZlcnNpb24pOwogCi0gICAgdm9pZCBkaWRHZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lv
bnMoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiwgVmVjdG9yPElEQkRhdGFiYXNlTmFtZUFu
ZFZlcnNpb24+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkR2V0QWxsRGF0YWJhc2VO
YW1lc0FuZFZlcnNpb25zKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYsIFZlY3RvcjxJREJE
YXRhYmFzZU5hbWVBbmRWZXJzaW9uPiYmKTsKIAogICAgIHZvaWQgcmVnaXN0ZXJEYXRhYmFzZUNv
bm5lY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJik7CiAgICAgdm9pZCB1bnJlZ2lz
dGVyRGF0YWJhc2VDb25uZWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYpOwotICAg
IHZvaWQgY29ubmVjdGlvblRvQ2xpZW50Q2xvc2VkKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBjb25uZWN0aW9uVG9DbGllbnRDbG9zZWQoKTsKICAgICBib29sIGlzQ2xvc2VkKCkgeyByZXR1
cm4gbV9pc0Nsb3NlZDsgfQogICAgIHZvaWQgY2xlYXJEZWxlZ2F0ZSgpIHsgbV9kZWxlZ2F0ZSA9
IG51bGxwdHI7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0lEQlNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvSURCU2VydmVyLmNwcAppbmRleCBkMjY2OTMxODA4NDZhZjY2Njg5ZTE3YWVhM2Zm
OTk3MTk1NWFlMzZlLi40YmFkNDQyYjFiM2E5YTQxNzg1OTA0MmY4MTY1NzdlMDdiMTNiYThhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2Vy
dmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURC
U2VydmVyLmNwcApAQCAtMTAxLDEzICsxMDEsMTMgQEAgdm9pZCBJREJTZXJ2ZXI6OnVucmVnaXN0
ZXJUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikK
ICAgICBtX3RyYW5zYWN0aW9ucy5yZW1vdmUodHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIo
KSk7CiB9CiAKLXZvaWQgSURCU2VydmVyOjpyZWdpc3RlckRhdGFiYXNlQ29ubmVjdGlvbihVbmlx
dWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCit2b2lkIElEQlNlcnZlcjo6cmVn
aXN0ZXJDb25uZWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYgY29ubmVjdGlvbikK
IHsKICAgICBBU1NFUlQoIW1fZGF0YWJhc2VDb25uZWN0aW9ucy5jb250YWlucyhjb25uZWN0aW9u
LmlkZW50aWZpZXIoKSkpOwogICAgIG1fZGF0YWJhc2VDb25uZWN0aW9ucy5zZXQoY29ubmVjdGlv
bi5pZGVudGlmaWVyKCksICZjb25uZWN0aW9uKTsKIH0KIAotdm9pZCBJREJTZXJ2ZXI6OnVucmVn
aXN0ZXJEYXRhYmFzZUNvbm5lY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiBjb25u
ZWN0aW9uKQordm9pZCBJREJTZXJ2ZXI6OnVucmVnaXN0ZXJDb25uZWN0aW9uKFVuaXF1ZUlEQkRh
dGFiYXNlQ29ubmVjdGlvbiYgY29ubmVjdGlvbikKIHsKICAgICBBU1NFUlQobV9kYXRhYmFzZUNv
bm5lY3Rpb25zLmNvbnRhaW5zKGNvbm5lY3Rpb24uaWRlbnRpZmllcigpKSk7CiAgICAgbV9kYXRh
YmFzZUNvbm5lY3Rpb25zLnJlbW92ZShjb25uZWN0aW9uLmlkZW50aWZpZXIoKSk7CkBAIC0xMjgs
MTMgKzEyOCwxMyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SURCQmFja2luZ1N0b3JlPiBJREJTZXJ2ZXI6
OmNyZWF0ZUJhY2tpbmdTdG9yZShjb25zdCBJREJEYXRhYmFzZQogewogICAgIEFTU0VSVCghaXNN
YWluVGhyZWFkKCkpOwogICAgIGlmIChtX2RhdGFiYXNlRGlyZWN0b3J5UGF0aC5pc0VtcHR5KCkp
Ci0gICAgICAgIHJldHVybiBtYWtlVW5pcXVlPE1lbW9yeUlEQkJhY2tpbmdTdG9yZT4obV9zZXNz
aW9uSUQsIGlkZW50aWZpZXIpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxNZW1vcnlJREJC
YWNraW5nU3RvcmU+KGlkZW50aWZpZXIpOwogCiAgICAgQVNTRVJUKCFtX3Nlc3Npb25JRC5pc0Vw
aGVtZXJhbCgpKTsKICAgICBpZiAoaWRlbnRpZmllci5pc1RyYW5zaWVudCgpKQotICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxNZW1vcnlJREJCYWNraW5nU3RvcmU+KG1fc2Vzc2lvbklELCBpZGVu
dGlmaWVyKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TWVtb3J5SURCQmFja2luZ1N0b3Jl
PihpZGVudGlmaWVyKTsKIAotICAgIHJldHVybiBtYWtlVW5pcXVlPFNRTGl0ZUlEQkJhY2tpbmdT
dG9yZT4obV9zZXNzaW9uSUQsIGlkZW50aWZpZXIsIG1fZGF0YWJhc2VEaXJlY3RvcnlQYXRoKTsK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZTxTUUxpdGVJREJCYWNraW5nU3RvcmU+KGlkZW50aWZpZXIs
IHVwZ3JhZGVkRGF0YWJhc2VEaXJlY3RvcnkoaWRlbnRpZmllcikpOwogfQogCiB2b2lkIElEQlNl
cnZlcjo6b3BlbkRhdGFiYXNlKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkKQEAg
LTE3NywxNyArMTc3LDYgQEAgdm9pZCBJREJTZXJ2ZXI6OmRlbGV0ZURhdGFiYXNlKGNvbnN0IElE
QlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkKICAgICAgICAgbV91bmlxdWVJREJEYXRhYmFzZU1h
cC5yZW1vdmUoZGF0YWJhc2UtPmlkZW50aWZpZXIoKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxV
bmlxdWVJREJEYXRhYmFzZT4gSURCU2VydmVyOjpjbG9zZUFuZFRha2VVbmlxdWVJREJEYXRhYmFz
ZShVbmlxdWVJREJEYXRhYmFzZSYgZGF0YWJhc2UpCi17Ci0gICAgTE9HKEluZGV4ZWREQiwgIklE
QlNlcnZlcjo6Y2xvc2VVbmlxdWVJREJEYXRhYmFzZSIpOwotICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7Ci0KLSAgICBhdXRvIHVuaXF1ZVBvaW50ZXIgPSBtX3VuaXF1ZUlEQkRhdGFiYXNlTWFw
LnRha2UoZGF0YWJhc2UuaWRlbnRpZmllcigpKTsKLSAgICBBU1NFUlQodW5pcXVlUG9pbnRlcik7
Ci0KLSAgICByZXR1cm4gdW5pcXVlUG9pbnRlcjsKLX0KLQogdm9pZCBJREJTZXJ2ZXI6OmFib3J0
VHJhbnNhY3Rpb24oY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50
aWZpZXIpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlNlcnZlcjo6YWJvcnRUcmFuc2FjdGlv
biIpOwpAQCAtNzUwLDcgKzczOSw3IEBAIHZvaWQgSURCU2VydmVyOjpyZW5hbWVPcmlnaW4oY29u
c3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBvbGRPcmlnaW4sIGNvbnN0CiAgICAgICAg
IEZpbGVTeXN0ZW06Om1vdmVGaWxlKG9sZE9yaWdpblBhdGgsIG5ld09yaWdpblBhdGgpOwogfQog
Ci1TdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbiBJREJTZXJ2ZXI6OnJlcXVlc3RTcGFjZShj
b25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbiwgdWludDY0X3QgdGFza1NpemUpIFdURl9JR05PUkVT
X1RIUkVBRF9TQUZFVFlfQU5BTFlTSVMKK3ZvaWQgSURCU2VydmVyOjpyZXF1ZXN0U3BhY2UoY29u
c3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4sIHVpbnQ2NF90IHRhc2tTaXplLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBXVEZfSUdOT1JFU19USFJFQURf
U0FGRVRZX0FOQUxZU0lTCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgQVNT
RVJUKG1fbG9jay5pc0hlbGQoKSk7CkBAIC03NjIsNyArNzUxLDcgQEAgU3RvcmFnZVF1b3RhTWFu
YWdlcjo6RGVjaXNpb24gSURCU2VydmVyOjpyZXF1ZXN0U3BhY2UoY29uc3QgQ2xpZW50T3JpZ2lu
JiBvcmlnaW4KICAgICByZXN1bHQgPSBtX3NwYWNlUmVxdWVzdGVyKG9yaWdpbiwgdGFza1NpemUp
OwogICAgIG1fbG9jay5sb2NrKCk7CiAKLSAgICByZXR1cm4gcmVzdWx0OworICAgIGNvbXBsZXRp
b25IYW5kbGVyKHJlc3VsdCA9PSBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbjo6R3JhbnQp
OwogfQogCiB1aW50NjRfdCBJREJTZXJ2ZXI6OmRpc2tVc2FnZShjb25zdCBTdHJpbmcmIHJvb3RE
aXJlY3RvcnksIGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2luKQpAQCAtNzg0LDYgKzc3MywyMyBA
QCB2b2lkIElEQlNlcnZlcjo6dXBncmFkZUZpbGVzSWZOZWNlc3NhcnkoKQogICAgICAgICBGaWxl
U3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMobmV3VmVyc2lvbkRpcmVjdG9yeSk7CiB9CiAKK1N0
cmluZyBJREJTZXJ2ZXI6OnVwZ3JhZGVkRGF0YWJhc2VEaXJlY3RvcnkoY29uc3QgV2ViQ29yZTo6
SURCRGF0YWJhc2VJZGVudGlmaWVyJiBpZGVudGlmaWVyKQoreworICAgIFN0cmluZyBvbGRPcmln
aW5EaXJlY3RvcnkgPSBpZGVudGlmaWVyLmRhdGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVUb1Jvb3Qo
bV9kYXRhYmFzZURpcmVjdG9yeVBhdGgsICJ2MCIpOworICAgIFN0cmluZyBvbGREYXRhYmFzZURp
cmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChvbGRPcmlnaW5E
aXJlY3RvcnksIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZW5jb2RlRGF0YWJhc2VOYW1lKGlkZW50
aWZpZXIuZGF0YWJhc2VOYW1lKCkpKTsKKyAgICBTdHJpbmcgbmV3T3JpZ2luRGlyZWN0b3J5ID0g
aWRlbnRpZmllci5kYXRhYmFzZURpcmVjdG9yeVJlbGF0aXZlVG9Sb290KG1fZGF0YWJhc2VEaXJl
Y3RvcnlQYXRoLCAidjEiKTsKKyAgICBTdHJpbmcgZmlsZU5hbWVIYXNoID0gU1FMaXRlRmlsZVN5
c3RlbTo6Y29tcHV0ZUhhc2hGb3JGaWxlTmFtZShpZGVudGlmaWVyLmRhdGFiYXNlTmFtZSgpKTsK
KyAgICBTdHJpbmcgbmV3RGF0YWJhc2VEaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQobmV3T3JpZ2luRGlyZWN0b3J5LCBmaWxlTmFtZUhhc2gpOworICAgIEZp
bGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhuZXdEYXRhYmFzZURpcmVjdG9yeSk7CisKKyAg
ICBpZiAoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhvbGREYXRhYmFzZURpcmVjdG9yeSkpIHsKKyAg
ICAgICAgRmlsZVN5c3RlbTo6bW92ZUZpbGUob2xkRGF0YWJhc2VEaXJlY3RvcnksIG5ld0RhdGFi
YXNlRGlyZWN0b3J5KTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3Rvcnko
b2xkT3JpZ2luRGlyZWN0b3J5KTsKKyAgICB9CisKKyAgICByZXR1cm4gbmV3RGF0YWJhc2VEaXJl
Y3Rvcnk7Cit9CisKIGJvb2wgSURCU2VydmVyOjpoYXNEYXRhYmFzZUFjdGl2aXRpZXNPbk1haW5U
aHJlYWQoKSBjb25zdAogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmgKaW5kZXgg
ZDg4MzY0OWE1YzhkNWI1OWYwMmMyYmRhY2RkZTY3OGExY2EzYzQyZi4uYjQzMTNkOWExMDYwOGI3
ZDM0MmY2YjA4NzViYzc2NDYyZjdjMDE1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaApAQCAtMzAsNiArMzAsNyBAQAogI2lu
Y2x1ZGUgIlN0b3JhZ2VRdW90YU1hbmFnZXIuaCIKICNpbmNsdWRlICJVbmlxdWVJREJEYXRhYmFz
ZS5oIgogI2luY2x1ZGUgIlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUg
IlVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlci5oIgogI2luY2x1ZGUgPHBhbC9IeXN0ZXJlc2lzQWN0
aXZpdHkuaD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL0Nyb3Nz
VGhyZWFkVGFza0hhbmRsZXIuaD4KQEAgLTQ4LDggKzQ5LDcgQEAgc3RydWN0IElEQkdldFJlY29y
ZERhdGE7CiAKIG5hbWVzcGFjZSBJREJTZXJ2ZXIgewogCi1jbGFzcyBJREJTZXJ2ZXIgewotICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworY2xhc3MgSURCU2VydmVyIDogcHVibGljIFVuaXF1
ZUlEQkRhdGFiYXNlTWFuYWdlciB7CiBwdWJsaWM6CiAgICAgdXNpbmcgU3RvcmFnZVF1b3RhTWFu
YWdlclNwYWNlUmVxdWVzdGVyID0gRnVuY3Rpb248U3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNp
b24oY29uc3QgQ2xpZW50T3JpZ2luJiwgdWludDY0X3Qgc3BhY2VSZXF1ZXN0ZWQpPjsKICAgICBX
RUJDT1JFX0VYUE9SVCBJREJTZXJ2ZXIoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgZGF0
YWJhc2VEaXJlY3RvcnlQYXRoLCBTdG9yYWdlUXVvdGFNYW5hZ2VyU3BhY2VSZXF1ZXN0ZXImJiwg
TG9jayYpOwpAQCAtODgsMTUgKzg4LDExIEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZ2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKElEQkNvbm5lY3Rpb25JZGVudGlm
aWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImLCBjb25zdCBDbGllbnRPcmlnaW4mKTsK
IAotCi0gICAgdm9pZCByZWdpc3RlckRhdGFiYXNlQ29ubmVjdGlvbihVbmlxdWVJREJEYXRhYmFz
ZUNvbm5lY3Rpb24mKTsKLSAgICB2b2lkIHVucmVnaXN0ZXJEYXRhYmFzZUNvbm5lY3Rpb24oVW5p
cXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJik7Ci0gICAgdm9pZCByZWdpc3RlclRyYW5zYWN0aW9u
KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mKTsKLSAgICB2b2lkIHVucmVnaXN0ZXJUcmFu
c2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJik7Ci0KLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8VW5pcXVlSURCRGF0YWJhc2U+IGNsb3NlQW5kVGFrZVVuaXF1ZUlEQkRhdGFiYXNlKFVu
aXF1ZUlEQkRhdGFiYXNlJik7Ci0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SURCQmFja2luZ1N0b3Jl
PiBjcmVhdGVCYWNraW5nU3RvcmUoY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJik7CisgICAg
dm9pZCByZWdpc3RlckNvbm5lY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJikgZmlu
YWw7CisgICAgdm9pZCB1bnJlZ2lzdGVyQ29ubmVjdGlvbihVbmlxdWVJREJEYXRhYmFzZUNvbm5l
Y3Rpb24mKSBmaW5hbDsKKyAgICB2b2lkIHJlZ2lzdGVyVHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0
YWJhc2VUcmFuc2FjdGlvbiYpIGZpbmFsOworICAgIHZvaWQgdW5yZWdpc3RlclRyYW5zYWN0aW9u
KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mKSBmaW5hbDsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8SURCQmFja2luZ1N0b3JlPiBjcmVhdGVCYWNraW5nU3RvcmUoY29uc3QgSURCRGF0YWJhc2VJ
ZGVudGlmaWVyJikgZmluYWw7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBIYXNoU2V0PFNlY3VyaXR5
T3JpZ2luRGF0YT4gZ2V0T3JpZ2lucygpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
Y2xvc2VBbmREZWxldGVEYXRhYmFzZXNNb2RpZmllZFNpbmNlKFdhbGxUaW1lKTsKQEAgLTEwNCw3
ICsxMDAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbG9zZURhdGFiYXNlc0Zvck9yaWdpbnMoY29u
c3QgVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4mLCBGdW5jdGlvbjxib29sKGNvbnN0IFNlY3Vy
aXR5T3JpZ2luRGF0YSYsIGNvbnN0IENsaWVudE9yaWdpbiYpPiYmKTsKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHJlbmFtZU9yaWdpbihjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEm
LCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmKTsKIAotICAgIFN0b3JhZ2VRdW90
YU1hbmFnZXI6OkRlY2lzaW9uIHJlcXVlc3RTcGFjZShjb25zdCBDbGllbnRPcmlnaW4mLCB1aW50
NjRfdCB0YXNrU2l6ZSk7CisgICAgdm9pZCByZXF1ZXN0U3BhY2UoY29uc3QgQ2xpZW50T3JpZ2lu
JiwgdWludDY0X3Qgc2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7
CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHVpbnQ2NF90IGRpc2tVc2FnZShjb25zdCBTdHJp
bmcmIHJvb3REaXJlY3RvcnksIGNvbnN0IENsaWVudE9yaWdpbiYpOwogCiAgICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBoYXNEYXRhYmFzZUFjdGl2aXRpZXNPbk1haW5UaHJlYWQoKSBjb25zdDsKQEAg
LTExNCw2ICsxMTAsNyBAQCBwcml2YXRlOgogICAgIFVuaXF1ZUlEQkRhdGFiYXNlJiBnZXRPckNy
ZWF0ZVVuaXF1ZUlEQkRhdGFiYXNlKGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYpOwogCiAg
ICAgdm9pZCB1cGdyYWRlRmlsZXNJZk5lY2Vzc2FyeSgpOworICAgIFN0cmluZyB1cGdyYWRlZERh
dGFiYXNlRGlyZWN0b3J5KGNvbnN0IFdlYkNvcmU6OklEQkRhdGFiYXNlSWRlbnRpZmllciYpOwog
ICAgIHZvaWQgcmVtb3ZlRGF0YWJhc2VzTW9kaWZpZWRTaW5jZUZvclZlcnNpb24oV2FsbFRpbWUs
IGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgcmVtb3ZlRGF0YWJhc2VzV2l0aE9yaWdpbnNGb3JW
ZXJzaW9uKGNvbnN0IFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+JiwgY29uc3QgU3RyaW5nJik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9N
ZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggN2VlNDE0MGE4YWYxODAx
MWM5NmJjYTdiNjA4ZDg2NTkxOGFmODVlYS4uZDYzMzUwMzA5OTMwNTViOWIxMmI3ODQ1NjU1ZGE4
MzM3MmIxYTU1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTQ0LDkg
KzQ0LDggQEAgbmFtZXNwYWNlIElEQlNlcnZlciB7CiAvLyBUaGUgSW5kZXhlZERCIHNwZWMgc3Rh
dGVzIHRoZSBtYXhpbXVtIHZhbHVlIHlvdSBjYW4gZ2V0IGZyb20gdGhlIGtleSBnZW5lcmF0b3Ig
aXMgMl41My4KIGNvbnN0ZXhwciB1aW50NjRfdCBtYXhHZW5lcmF0ZWRLZXlWYWx1ZSA9IDB4MjAw
MDAwMDAwMDAwMDA7CiAKLU1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6TWVtb3J5SURCQmFja2luZ1N0
b3JlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVy
JiBpZGVudGlmaWVyKQorTWVtb3J5SURCQmFja2luZ1N0b3JlOjpNZW1vcnlJREJCYWNraW5nU3Rv
cmUoY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJiBpZGVudGlmaWVyKQogICAgIDogbV9pZGVu
dGlmaWVyKGlkZW50aWZpZXIpCi0gICAgLCBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCiB7CiB9CiAK
QEAgLTEzNCw3ICsxMzMsNyBAQCBJREJFcnJvciBNZW1vcnlJREJCYWNraW5nU3RvcmU6OmNyZWF0
ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdAogICAgICAgICByZXR1
cm4gSURCRXJyb3IgeyBDb25zdHJhaW50RXJyb3IgfTsKIAogICAgIEFTU0VSVCghbV9vYmplY3RT
dG9yZXNCeUlkZW50aWZpZXIuY29udGFpbnMoaW5mby5pZGVudGlmaWVyKCkpKTsKLSAgICBhdXRv
IG9iamVjdFN0b3JlID0gTWVtb3J5T2JqZWN0U3RvcmU6OmNyZWF0ZShtX3Nlc3Npb25JRCwgaW5m
byk7CisgICAgYXV0byBvYmplY3RTdG9yZSA9IE1lbW9yeU9iamVjdFN0b3JlOjpjcmVhdGUoaW5m
byk7CiAKICAgICBtX2RhdGFiYXNlSW5mby0+YWRkRXhpc3RpbmdPYmplY3RTdG9yZShpbmZvKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01l
bW9yeUlEQkJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5oCmluZGV4IDkyYWE3NjBkMjA3MzM3MThmYmRi
OGMwNDRjZmU2N2RjYWIxNjUzMzUuLjljODIxMWI1OTA2NTdhZjY4MDUxMjQyMjliMTAyOTExYzJj
MDBlZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9NZW1vcnlJREJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmgKQEAgLTMwLDcgKzMwLDYgQEAK
ICNpbmNsdWRlICJJREJSZXNvdXJjZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJJbmRleEtleS5o
IgogI2luY2x1ZGUgIk1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uLmgiCi0jaW5jbHVkZSA8
cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTQxLDggKzQwLDggQEAgY2xhc3MgTWVtb3J5T2JqZWN0U3RvcmU7CiBjbGFz
cyBNZW1vcnlJREJCYWNraW5nU3RvcmUgZmluYWwgOiBwdWJsaWMgSURCQmFja2luZ1N0b3JlIHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBNZW1vcnlJREJCYWNr
aW5nU3RvcmUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYpOwot
ICAgIH5NZW1vcnlJREJCYWNraW5nU3RvcmUoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBNZW1vcnlJ
REJCYWNraW5nU3RvcmUoY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJik7CisgICAgV0VCQ09S
RV9FWFBPUlQgfk1lbW9yeUlEQkJhY2tpbmdTdG9yZSgpOwogCiAgICAgSURCRXJyb3IgZ2V0T3JF
c3RhYmxpc2hEYXRhYmFzZUluZm8oSURCRGF0YWJhc2VJbmZvJikgZmluYWw7CiAgICAgdWludDY0
X3QgZGF0YWJhc2VWZXJzaW9uKCkgZmluYWw7CkBAIC05Miw3ICs5MSw2IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCB1bnJlZ2lzdGVyT2JqZWN0U3RvcmUoTWVtb3J5T2JqZWN0U3RvcmUmKTsKIAogICAg
IElEQkRhdGFiYXNlSWRlbnRpZmllciBtX2lkZW50aWZpZXI7Ci0gICAgUEFMOjpTZXNzaW9uSUQg
bV9zZXNzaW9uSUQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPElEQkRhdGFiYXNlSW5mbz4gbV9kYXRh
YmFzZUluZm87CiAKICAgICBIYXNoTWFwPElEQlJlc291cmNlSWRlbnRpZmllciwgc3RkOjp1bmlx
dWVfcHRyPE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uPj4gbV90cmFuc2FjdGlvbnM7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5
T2JqZWN0U3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L01lbW9yeU9iamVjdFN0b3JlLmNwcAppbmRleCA1YTUzZTIzMTUyNjg0ZGUzODBkYWExZTU5NzNm
YjE5M2RmMDEyNjc3Li5kZmFiNjEzMzU3ZTM1YzVlN2VmZmNlODU5NjI0Nzk3MGUyNmUwNTQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5
T2JqZWN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9NZW1vcnlPYmplY3RTdG9yZS5jcHAKQEAgLTM4LDE4ICszOCwxNyBAQAogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTQ0pTVmFsdWUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9K
U0NKU1ZhbHVlSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTTG9jay5oPgot
I2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcg
bmFtZXNwYWNlIEpTQzsKIG5hbWVzcGFjZSBJREJTZXJ2ZXIgewogCi1SZWY8TWVtb3J5T2JqZWN0
U3RvcmU+IE1lbW9yeU9iamVjdFN0b3JlOjpjcmVhdGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mIGluZm8pCitSZWY8TWVtb3J5T2JqZWN0U3RvcmU+
IE1lbW9yeU9iamVjdFN0b3JlOjpjcmVhdGUoY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiBpbmZv
KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lbW9yeU9iamVjdFN0b3JlKHNlc3Npb25J
RCwgaW5mbykpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lbW9yeU9iamVjdFN0b3JlKGlu
Zm8pKTsKIH0KIAotTWVtb3J5T2JqZWN0U3RvcmU6Ok1lbW9yeU9iamVjdFN0b3JlKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mIGluZm8pCitNZW1vcnlPYmplY3RTdG9y
ZTo6TWVtb3J5T2JqZWN0U3RvcmUoY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiBpbmZvKQogICAg
IDogbV9pbmZvKGluZm8pCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5oCmluZGV4IDg3MWRlYjVl
NGFlMDUxNDgyYjkwODk2ODk1ZWEzMWMyNzZkZDMwODYuLmYwM2EzYTFiMGFkNTM0YjlmMzM5YzRm
YmQ3ZTc0MGFkZjIyODQ3MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5oCkBAIC0zNCwxMCArMzQs
NiBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KIAotbmFtZXNwYWNlIFBBTCB7Ci1jbGFzcyBTZXNzaW9uSUQ7Ci19Ci0KIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgSURCQ3Vyc29ySW5mbzsKQEAgLTYxLDcgKzU3LDcgQEAgdHlwZWRl
ZiBIYXNoTWFwPElEQktleURhdGEsIFRocmVhZFNhZmVEYXRhQnVmZmVyLCBJREJLZXlEYXRhSGFz
aCwgSURCS2V5RGF0YUhhc2gKIAogY2xhc3MgTWVtb3J5T2JqZWN0U3RvcmUgOiBwdWJsaWMgUmVm
Q291bnRlZDxNZW1vcnlPYmplY3RTdG9yZT4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8TWVt
b3J5T2JqZWN0U3RvcmU+IGNyZWF0ZShQQUw6OlNlc3Npb25JRCwgY29uc3QgSURCT2JqZWN0U3Rv
cmVJbmZvJik7CisgICAgc3RhdGljIFJlZjxNZW1vcnlPYmplY3RTdG9yZT4gY3JlYXRlKGNvbnN0
IElEQk9iamVjdFN0b3JlSW5mbyYpOwogCiAgICAgfk1lbW9yeU9iamVjdFN0b3JlKCk7CiAKQEAg
LTEwOCw3ICsxMDQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW5hbWVJbmRleChNZW1vcnlJbmRl
eCYsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSk7CiAKIHByaXZhdGU6Ci0gICAgTWVtb3J5T2JqZWN0
U3RvcmUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYpOworICAgIE1l
bW9yeU9iamVjdFN0b3JlKGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYpOwogCiAgICAgSURCS2V5
RGF0YVNldDo6aXRlcmF0b3IgbG93ZXN0SXRlcmF0b3JJblJhbmdlKGNvbnN0IElEQktleVJhbmdl
RGF0YSYsIGJvb2wgcmV2ZXJzZSkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9y
ZS5jcHAKaW5kZXggMjdjZDhlZWM1M2UxYWNmYzU5ODVlYzdiOGYwNWUyMjc2NDVjODc3ZS4uYTk5
ZTc1YjhkYjMzYWEwOWRiNzhiZWE3YmE0NDBiYmM4OWRjYjc3NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlE
QkJhY2tpbmdTdG9yZS5jcHAKQEAgLTIzNiwxMiArMjM2LDEwIEBAIHN0YXRpYyBBU0NJSUxpdGVy
YWwgaW5kZXhJbmZvVGFibGVTY2hlbWFUZW1wKCkKICAgICByZXR1cm4gVEFCTEVfU0NIRU1BX1BS
RUZJWCAiX1RlbXBfSW5kZXhJbmZvIiBJTkRFWF9JTkZPX1RBQkxFX1NDSEVNQV9TVUZGSVg7CiB9
CiAKLVNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6U1FMaXRlSURCQmFja2luZ1N0b3JlKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJiBpZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlUm9vdERpcmVjdG9yeSkKLSAgICA6IG1fc2Vzc2lvbklE
KHNlc3Npb25JRCkKLSAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQotICAgICwgbV9kYXRh
YmFzZVJvb3REaXJlY3RvcnkoZGF0YWJhc2VSb290RGlyZWN0b3J5KQorU1FMaXRlSURCQmFja2lu
Z1N0b3JlOjpTUUxpdGVJREJCYWNraW5nU3RvcmUoY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVy
JiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5KQorICAgIDogbV9p
ZGVudGlmaWVyKGlkZW50aWZpZXIpCisgICAgLCBtX2RhdGFiYXNlRGlyZWN0b3J5KGRhdGFiYXNl
RGlyZWN0b3J5KQogewotICAgIG1fZGF0YWJhc2VEaXJlY3RvcnkgPSBmdWxsRGF0YWJhc2VEaXJl
Y3RvcnlXaXRoVXBncmFkZSgpOwogfQogCiBTUUxpdGVJREJCYWNraW5nU3RvcmU6On5TUUxpdGVJ
REJCYWNraW5nU3RvcmUoKQpAQCAtOTEyLDE5ICs5MTAsMjkgQEAgc3RkOjp1bmlxdWVfcHRyPElE
QkRhdGFiYXNlSW5mbz4gU1FMaXRlSURCQmFja2luZ1N0b3JlOjpleHRyYWN0RXhpc3RpbmdEYXRh
YmFzZUkKICAgICByZXR1cm4gZGF0YWJhc2VJbmZvOwogfQogCi1TdHJpbmcgU1FMaXRlSURCQmFj
a2luZ1N0b3JlOjpmaWxlbmFtZUZvckRhdGFiYXNlTmFtZSgpIGNvbnN0CitTdHJpbmcgU1FMaXRl
SURCQmFja2luZ1N0b3JlOjplbmNvZGVEYXRhYmFzZU5hbWUoY29uc3QgU3RyaW5nJiBkYXRhYmFz
ZU5hbWUpCiB7Ci0gICAgQVNTRVJUKCFtX2lkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCkuaXNOdWxs
KCkpOwotCi0gICAgaWYgKG1faWRlbnRpZmllci5kYXRhYmFzZU5hbWUoKS5pc0VtcHR5KCkpCisg
ICAgQVNTRVJUKCFkYXRhYmFzZU5hbWUuaXNOdWxsKCkpOworICAgIGlmIChkYXRhYmFzZU5hbWUu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gIiUwMCI7CiAKLSAgICBTdHJpbmcgZmlsZW5hbWUg
PSBGaWxlU3lzdGVtOjplbmNvZGVGb3JGaWxlTmFtZShtX2lkZW50aWZpZXIuZGF0YWJhc2VOYW1l
KCkpOworICAgIFN0cmluZyBmaWxlbmFtZSA9IEZpbGVTeXN0ZW06OmVuY29kZUZvckZpbGVOYW1l
KGRhdGFiYXNlTmFtZSk7CiAgICAgZmlsZW5hbWUucmVwbGFjZSgnLicsICIlMkUiKTsKIAogICAg
IHJldHVybiBmaWxlbmFtZTsKIH0KIAorU3RyaW5nIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVj
b2RlRGF0YWJhc2VOYW1lKGNvbnN0IFN0cmluZyYgZW5jb2RlZE5hbWUpCit7CisgICAgaWYgKGVu
Y29kZWROYW1lID09ICIlMDAiX3MpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBTdHJpbmcg
bmFtZSA9IGVuY29kZWROYW1lOworICAgIG5hbWUucmVwbGFjZSgiJTJFIl9zLCAiLiJfcyk7CisK
KyAgICByZXR1cm4gRmlsZVN5c3RlbTo6ZGVjb2RlRnJvbUZpbGVuYW1lKG5hbWUpOworfQorCiBT
dHJpbmcgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpmdWxsRGF0YWJhc2VQYXRoRm9yRGlyZWN0b3J5
KGNvbnN0IFN0cmluZyYgZnVsbERhdGFiYXNlRGlyZWN0b3J5KQogewogICAgIHJldHVybiBGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZnVsbERhdGFiYXNlRGlyZWN0b3J5LCAi
SW5kZXhlZERCLnNxbGl0ZTMiKTsKQEAgLTk2NSwyMyArOTczLDYgQEAgc3RkOjpvcHRpb25hbDxJ
REJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRhdGFiYXNl
TmFtZUFuZFYKICAgICByZXR1cm4gSURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbiB7IGRhdGFiYXNl
TmFtZSwgKmRhdGFiYXNlVmVyc2lvbiB9OwogfQogCi1TdHJpbmcgU1FMaXRlSURCQmFja2luZ1N0
b3JlOjpmdWxsRGF0YWJhc2VEaXJlY3RvcnlXaXRoVXBncmFkZSgpCi17Ci0gICAgU3RyaW5nIG9s
ZE9yaWdpbkRpcmVjdG9yeSA9IG1faWRlbnRpZmllci5kYXRhYmFzZURpcmVjdG9yeVJlbGF0aXZl
VG9Sb290KG1fZGF0YWJhc2VSb290RGlyZWN0b3J5LCAidjAiKTsKLSAgICBTdHJpbmcgb2xkRGF0
YWJhc2VEaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQob2xk
T3JpZ2luRGlyZWN0b3J5LCBmaWxlbmFtZUZvckRhdGFiYXNlTmFtZSgpKTsKLSAgICBTdHJpbmcg
bmV3T3JpZ2luRGlyZWN0b3J5ID0gbV9pZGVudGlmaWVyLmRhdGFiYXNlRGlyZWN0b3J5UmVsYXRp
dmVUb1Jvb3QobV9kYXRhYmFzZVJvb3REaXJlY3RvcnksICJ2MSIpOwotICAgIFN0cmluZyBmaWxl
TmFtZUhhc2ggPSBTUUxpdGVGaWxlU3lzdGVtOjpjb21wdXRlSGFzaEZvckZpbGVOYW1lKG1faWRl
bnRpZmllci5kYXRhYmFzZU5hbWUoKSk7Ci0gICAgU3RyaW5nIG5ld0RhdGFiYXNlRGlyZWN0b3J5
ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG5ld09yaWdpbkRpcmVjdG9y
eSwgZmlsZU5hbWVIYXNoKTsKLSAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMobmV3
RGF0YWJhc2VEaXJlY3RvcnkpOwotCi0gICAgaWYgKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMob2xk
RGF0YWJhc2VEaXJlY3RvcnkpKSB7Ci0gICAgICAgIEZpbGVTeXN0ZW06Om1vdmVGaWxlKG9sZERh
dGFiYXNlRGlyZWN0b3J5LCBuZXdEYXRhYmFzZURpcmVjdG9yeSk7Ci0gICAgICAgIEZpbGVTeXN0
ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KG9sZE9yaWdpbkRpcmVjdG9yeSk7Ci0gICAgfQotCi0g
ICAgcmV0dXJuIG5ld0RhdGFiYXNlRGlyZWN0b3J5OwotfQotCiBJREJFcnJvciBTUUxpdGVJREJC
YWNraW5nU3RvcmU6OmdldE9yRXN0YWJsaXNoRGF0YWJhc2VJbmZvKElEQkRhdGFiYXNlSW5mbyYg
aW5mbykKIHsKICAgICBMT0coSW5kZXhlZERCLCAiU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRP
ckVzdGFibGlzaERhdGFiYXNlSW5mbyAtIGRhdGFiYXNlICVzIiwgbV9pZGVudGlmaWVyLmRhdGFi
YXNlTmFtZSgpLnV0ZjgoKS5kYXRhKCkpOwpAQCAtOTkxLDExICs5ODIsMTEgQEAgSURCRXJyb3Ig
U1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbyhJREJEYXRh
YmFzZUluZm8mIGluZm8KICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgfTsKICAgICB9CiAKLSAg
ICBTdHJpbmcgZGJGaWxlbmFtZSA9IGZ1bGxEYXRhYmFzZVBhdGgoKTsKLQorICAgIFN0cmluZyBk
YXRhYmFzZVBhdGggPSBmdWxsRGF0YWJhc2VQYXRoKCk7CisgICAgRmlsZVN5c3RlbTo6bWFrZUFs
bERpcmVjdG9yaWVzKEZpbGVTeXN0ZW06OnBhcmVudFBhdGgoZGF0YWJhc2VQYXRoKSk7CiAgICAg
bV9zcWxpdGVEQiA9IG1ha2VVbmlxdWU8U1FMaXRlRGF0YWJhc2U+KCk7Ci0gICAgaWYgKCFtX3Nx
bGl0ZURCLT5vcGVuKGRiRmlsZW5hbWUpKSB7Ci0gICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRv
IG9wZW4gU1FMaXRlIGRhdGFiYXNlIGF0IHBhdGggJyVzJyIsIGRiRmlsZW5hbWUudXRmOCgpLmRh
dGEoKSk7CisgICAgaWYgKCFtX3NxbGl0ZURCLT5vcGVuKGRhdGFiYXNlUGF0aCkpIHsKKyAgICAg
ICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gb3BlbiBTUUxpdGUgZGF0YWJhc2UgYXQgcGF0aCAnJXMn
IiwgZGF0YWJhc2VQYXRoLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBjbG9zZVNRTGl0ZURCKCk7
CiAgICAgfQogCkBAIC0xMDQ0LDcgKzEwMzUsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5n
U3RvcmU6OmdldE9yRXN0YWJsaXNoRGF0YWJhc2VJbmZvKElEQkRhdGFiYXNlSW5mbyYgaW5mbwog
ICAgICAgICBkYXRhYmFzZUluZm8gPSBjcmVhdGVBbmRQb3B1bGF0ZUluaXRpYWxEYXRhYmFzZUlu
Zm8oKTsKIAogICAgIGlmICghZGF0YWJhc2VJbmZvKSB7Ci0gICAgICAgIExPR19FUlJPUigiVW5h
YmxlIHRvIGVzdGFibGlzaCBJREIgZGF0YWJhc2UgYXQgcGF0aCAnJXMnIiwgZGJGaWxlbmFtZS51
dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gZXN0YWJsaXNoIElE
QiBkYXRhYmFzZSBhdCBwYXRoICclcyciLCBkYXRhYmFzZVBhdGgudXRmOCgpLmRhdGEoKSk7CiAg
ICAgICAgIGNsb3NlU1FMaXRlREIoKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93
bkVycm9yLCAiVW5hYmxlIHRvIGVzdGFibGlzaCBJREIgZGF0YWJhc2UgZmlsZSJfcyB9OwogICAg
IH0KQEAgLTI3OTgsNyArMjc4OSw2IEBAIHZvaWQgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxl
dGVCYWNraW5nU3RvcmUoKQogCiAgICAgU1FMaXRlRmlsZVN5c3RlbTo6ZGVsZXRlRGF0YWJhc2VG
aWxlKGRhdGFiYXNlUGF0aCk7CiAgICAgU1FMaXRlRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEYXRh
YmFzZURpcmVjdG9yeShtX2RhdGFiYXNlRGlyZWN0b3J5KTsKLSAgICBTUUxpdGVGaWxlU3lzdGVt
OjpkZWxldGVFbXB0eURhdGFiYXNlRGlyZWN0b3J5KG1faWRlbnRpZmllci5kYXRhYmFzZURpcmVj
dG9yeVJlbGF0aXZlVG9Sb290KG1fZGF0YWJhc2VSb290RGlyZWN0b3J5KSk7CiB9CiAKIHZvaWQg
U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bnJlZ2lzdGVyQ3Vyc29yKFNRTGl0ZUlEQkN1cnNvciYg
Y3Vyc29yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5oCmluZGV4IDJlZmU2YjJhMzQxOTkz
YmIyNmZkZjkxY2ZmNmU3ZGVhOGRiYmVkMzYuLjczMWE5YTQxOTM4NjVlM2M1ZjNjMzVlZDc1NzFi
MTI4MmY3ODA5NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmgKQEAgLTUxLDkgKzUx
LDggQEAgY2xhc3MgU1FMaXRlSURCQ3Vyc29yOwogY2xhc3MgU1FMaXRlSURCQmFja2luZ1N0b3Jl
IGZpbmFsIDogcHVibGljIElEQkJhY2tpbmdTdG9yZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6Ci0gICAgU1FMaXRlSURCQmFja2luZ1N0b3JlKFBBTDo6U2Vzc2lvbklE
LCBjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlUm9v
dERpcmVjdG9yeSk7Ci0gICAgCi0gICAgflNRTGl0ZUlEQkJhY2tpbmdTdG9yZSgpIGZpbmFsOwor
ICAgIFdFQkNPUkVfRVhQT1JUIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZShjb25zdCBJREJEYXRhYmFz
ZUlkZW50aWZpZXImLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5KTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB+U1FMaXRlSURCQmFja2luZ1N0b3JlKCkgZmluYWw7CiAKICAgICBJREJFcnJv
ciBnZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbyhJREJEYXRhYmFzZUluZm8mKSBmaW5hbDsKICAg
ICB1aW50NjRfdCBkYXRhYmFzZVZlcnNpb24oKSBmaW5hbDsKQEAgLTk0LDE4ICs5MywxNSBAQCBw
dWJsaWM6CiAKICAgICBJREJFcnJvciBnZXRCbG9iUmVjb3Jkc0Zvck9iamVjdFN0b3JlUmVjb3Jk
KGludDY0X3Qgb2JqZWN0U3RvcmVSZWNvcmQsIFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgVmVj
dG9yPFN0cmluZz4mIGJsb2JGaWxlUGF0aHMpOwogCi0gICAgc3RhdGljIHVpbnQ2NF90IGRhdGFi
YXNlc1NpemVGb3JEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpOwotCisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIHVpbnQ2NF90IGRhdGFiYXNlc1NpemVGb3JEaXJlY3RvcnkoY29u
c3QgU3RyaW5nJiBkaXJlY3RvcnkpOwogICAgIFN0cmluZyBkYXRhYmFzZURpcmVjdG9yeSgpIGNv
bnN0IHsgcmV0dXJuIG1fZGF0YWJhc2VEaXJlY3Rvcnk7IH07Ci0gICAgc3RhdGljIFN0cmluZyBm
dWxsRGF0YWJhc2VQYXRoRm9yRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpOwotICAgIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPElEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24+IGRhdGFiYXNlTmFtZUFuZFZl
cnNpb25Gcm9tRmlsZShjb25zdCBTdHJpbmcmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
U3RyaW5nIGZ1bGxEYXRhYmFzZVBhdGhGb3JEaXJlY3RvcnkoY29uc3QgU3RyaW5nJik7CisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBlbmNvZGVEYXRhYmFzZU5hbWUoY29uc3QgU3Ry
aW5nJiBkYXRhYmFzZU5hbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcgZGVj
b2RlRGF0YWJhc2VOYW1lKGNvbnN0IFN0cmluZyYgZW5jb2RlZERhdGFiYXNlTmFtZSk7CiAKLSAg
ICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb25JRDsg
fQorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPElEQkRhdGFiYXNlTmFt
ZUFuZFZlcnNpb24+IGRhdGFiYXNlTmFtZUFuZFZlcnNpb25Gcm9tRmlsZShjb25zdCBTdHJpbmcm
KTsKIAogcHJpdmF0ZToKLSAgICBTdHJpbmcgZmlsZW5hbWVGb3JEYXRhYmFzZU5hbWUoKSBjb25z
dDsKLSAgICBTdHJpbmcgZnVsbERhdGFiYXNlRGlyZWN0b3J5V2l0aFVwZ3JhZGUoKTsKLQogICAg
IElEQkVycm9yIGVuc3VyZVZhbGlkUmVjb3Jkc1RhYmxlKCk7CiAgICAgSURCRXJyb3IgZW5zdXJl
VmFsaWRJbmRleFJlY29yZHNUYWJsZSgpOwogICAgIElEQkVycm9yIGVuc3VyZVZhbGlkSW5kZXhS
ZWNvcmRzSW5kZXgoKTsKQEAgLTIwNiw3ICsyMDIsNiBAQCBwcml2YXRlOgogCiAgICAgc3RkOjp1
bmlxdWVfcHRyPFNRTGl0ZVN0YXRlbWVudD4gbV9jYWNoZWRTdGF0ZW1lbnRzW3N0YXRpY19jYXN0
PGludD4oU1FMOjpJbnZhbGlkKV07CiAKLSAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsK
ICAgICBJREJEYXRhYmFzZUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxJREJEYXRhYmFzZUluZm8+IG1fZGF0YWJhc2VJbmZvOwogICAgIHN0ZDo6dW5pcXVlX3B0
cjxJREJEYXRhYmFzZUluZm8+IG1fb3JpZ2luYWxEYXRhYmFzZUluZm9CZWZvcmVWZXJzaW9uQ2hh
bmdlOwpAQCAtMjE2LDcgKzIxMSw2IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxJREJSZXNvdXJj
ZUlkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxTUUxpdGVJREJUcmFuc2FjdGlvbj4+IG1fdHJh
bnNhY3Rpb25zOwogICAgIEhhc2hNYXA8SURCUmVzb3VyY2VJZGVudGlmaWVyLCBTUUxpdGVJREJD
dXJzb3IqPiBtX2N1cnNvcnM7CiAKLSAgICBTdHJpbmcgbV9kYXRhYmFzZVJvb3REaXJlY3Rvcnk7
CiAgICAgU3RyaW5nIG1fZGF0YWJhc2VEaXJlY3Rvcnk7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFi
YXNlLmNwcAppbmRleCAyYjFlYWRiOWVhNWM0NjRkMDI3NWVkMjIzZjUwMDNiN2JlZjE1NzMzLi4y
ZGZiYmRiMzE5OTMxZTM3NmYxMjUyZWE0MmMxNDNkOWZkNGNkMWNhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJE
YXRhYmFzZS5jcHAKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5j
bHVkZSAiU3RvcmFnZVF1b3RhTWFuYWdlci5oIgogI2luY2x1ZGUgIlVuaXF1ZUlEQkRhdGFiYXNl
Q29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIlVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlci5oIgogI2lu
Y2x1ZGUgPHd0Zi9TY29wZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMzQsOCArMTM1
LDggQEAgc3RhdGljIGlubGluZSB1aW50NjRfdCBlc3RpbWF0ZVNpemUoY29uc3QgSURCT2JqZWN0
U3RvcmVJbmZvJiBpbmZvKQogICAgIHJldHVybiBzaXplOwogfQogCi1VbmlxdWVJREJEYXRhYmFz
ZTo6VW5pcXVlSURCRGF0YWJhc2UoSURCU2VydmVyJiBzZXJ2ZXIsIGNvbnN0IElEQkRhdGFiYXNl
SWRlbnRpZmllciYgaWRlbnRpZmllcikKLSAgICA6IG1fc2VydmVyKHNlcnZlcikKK1VuaXF1ZUlE
QkRhdGFiYXNlOjpVbmlxdWVJREJEYXRhYmFzZShVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXImIG1h
bmFnZXIsIGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYgaWRlbnRpZmllcikKKyAgICA6IG1f
bWFuYWdlcihtYW5hZ2VyKQogICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiB7CiAgICAg
QVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CkBAIC0xNjMsNiArMTY0LDExIEBAIGNvbnN0IElEQkRh
dGFiYXNlSW5mbyYgVW5pcXVlSURCRGF0YWJhc2U6OmluZm8oKSBjb25zdAogICAgIHJldHVybiAq
bV9kYXRhYmFzZUluZm87CiB9CiAKK1VuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlciogVW5pcXVlSURC
RGF0YWJhc2U6Om1hbmFnZXIoKQoreworICAgIHJldHVybiBtX21hbmFnZXIuZ2V0KCk7Cit9CisK
IHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6Om9wZW5EYXRhYmFzZUNvbm5lY3Rpb24oSURCQ29ubmVj
dGlvblRvQ2xpZW50JiBjb25uZWN0aW9uLCBjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERh
dGEpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuRGF0YWJh
c2VDb25uZWN0aW9uIik7CkBAIC0xODUsMTcgKzE5MSw0NSBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFi
YXNlOjpwZXJmb3JtQ3VycmVudE9wZW5PcGVyYXRpb24oKQogICAgIEFTU0VSVChtX2N1cnJlbnRP
cGVuREJSZXF1ZXN0KTsKICAgICBBU1NFUlQobV9jdXJyZW50T3BlbkRCUmVxdWVzdC0+aXNPcGVu
UmVxdWVzdCgpKTsKIAorICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gY3JlYXRlIHRoZSBmaWxlIHNv
IG5vIG5lZWQgdG8gZG8gc3BhY2UgY2hlY2suCisgICAgaWYgKG1fYmFja2luZ1N0b3JlKQorICAg
ICAgICByZXR1cm4gcGVyZm9ybUN1cnJlbnRPcGVuT3BlcmF0aW9uQWZ0ZXJTcGFjZUNoZWNrKHRy
dWUpOworCisgICAgaWYgKCFtX21hbmFnZXIpCisgICAgICAgIHJldHVybiBwZXJmb3JtQ3VycmVu
dE9wZW5PcGVyYXRpb25BZnRlclNwYWNlQ2hlY2soZmFsc2UpOworCisgICAgYXV0byByZXF1ZXN0
SWRlbnRpZmllciA9IG1fY3VycmVudE9wZW5EQlJlcXVlc3QtPnJlcXVlc3REYXRhKCkucmVxdWVz
dElkZW50aWZpZXIoKTsKKyAgICBpZiAobV9vcGVuREJSZXF1ZXN0c0ZvclNwYWNlQ2hlY2suY29u
dGFpbnMocmVxdWVzdElkZW50aWZpZXIpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX29wZW5E
QlJlcXVlc3RzRm9yU3BhY2VDaGVjay5hZGQocmVxdWVzdElkZW50aWZpZXIpOworICAgIG1fbWFu
YWdlci0+cmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwgZGVmYXVsdFdyaXRlT3Bl
cmF0aW9uQ29zdCwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHJlcXVlc3RJ
ZGVudGlmaWVyXShib29sIGdyYW50ZWQpIG11dGFibGUgeworICAgICAgICBpZiAoIXdlYWtUaGlz
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIG1fb3BlbkRCUmVxdWVzdHNGb3JTcGFj
ZUNoZWNrLnJlbW92ZShyZXF1ZXN0SWRlbnRpZmllcik7CisgICAgICAgIGlmIChtX2N1cnJlbnRP
cGVuREJSZXF1ZXN0LT5yZXF1ZXN0RGF0YSgpLnJlcXVlc3RJZGVudGlmaWVyKCkgIT0gcmVxdWVz
dElkZW50aWZpZXIpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgcGVyZm9ybUN1cnJl
bnRPcGVuT3BlcmF0aW9uQWZ0ZXJTcGFjZUNoZWNrKGdyYW50ZWQpOworICAgIH0pOworfQorCit2
b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtQ3VycmVudE9wZW5PcGVyYXRpb25BZnRlclNw
YWNlQ2hlY2soYm9vbCBpc0dyYW50ZWQpCit7CisgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlE
QkRhdGFiYXNlOjpwZXJmb3JtQ3VycmVudE9wZW5PcGVyYXRpb25BZnRlclNwYWNlUmVxdWVzdCAo
JXApIiwgdGhpcyk7CisKICAgICBJREJFcnJvciBiYWNraW5nU3RvcmVPcGVuRXJyb3I7CiAgICAg
aWYgKCFtX2JhY2tpbmdTdG9yZSkgewotICAgICAgICAvLyBRdW90YSBjaGVjay4KLSAgICAgICAg
YXV0byBkZWNpc2lvbiA9IG1fc2VydmVyLnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2lu
KCksIGRlZmF1bHRXcml0ZU9wZXJhdGlvbkNvc3QpOwotICAgICAgICBpZiAoZGVjaXNpb24gPT0g
U3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb246OkRlbnkpCisgICAgICAgIGlmICghbV9tYW5h
Z2VyKQorICAgICAgICAgICAgYmFja2luZ1N0b3JlT3BlbkVycm9yID0gSURCRXJyb3IgeyBJbnZh
bGlkU3RhdGVFcnJvciB9OworICAgICAgICBlbHNlIGlmICghaXNHcmFudGVkKQogICAgICAgICAg
ICAgYmFja2luZ1N0b3JlT3BlbkVycm9yID0gSURCRXJyb3IgeyBRdW90YUV4Y2VlZGVkRXJyb3Is
IHF1b3RhRXJyb3JNZXNzYWdlTmFtZSgiT3BlbkJhY2tpbmdTdG9yZSIpIH07CiAgICAgICAgIGVs
c2UgewotICAgICAgICAgICAgbV9iYWNraW5nU3RvcmUgPSBtX3NlcnZlci5jcmVhdGVCYWNraW5n
U3RvcmUobV9pZGVudGlmaWVyKTsKKyAgICAgICAgICAgIG1fYmFja2luZ1N0b3JlID0gbV9tYW5h
Z2VyLT5jcmVhdGVCYWNraW5nU3RvcmUobV9pZGVudGlmaWVyKTsKICAgICAgICAgICAgIElEQkRh
dGFiYXNlSW5mbyBkYXRhYmFzZUluZm87CiAgICAgICAgICAgICBiYWNraW5nU3RvcmVPcGVuRXJy
b3IgPSBtX2JhY2tpbmdTdG9yZS0+Z2V0T3JFc3RhYmxpc2hEYXRhYmFzZUluZm8oZGF0YWJhc2VJ
bmZvKTsKLSAgICAgICAgICAgIGlmIChiYWNraW5nU3RvcmVPcGVuRXJyb3IuaXNOdWxsKCkpCisg
ICAgICAgICAgICBpZiAoIWJhY2tpbmdTdG9yZU9wZW5FcnJvcikKICAgICAgICAgICAgICAgICBt
X2RhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPihkYXRhYmFzZUluZm8p
OwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQg
dG8gZ2V0IGRhdGFiYXNlIGluZm8gJyVzJyIsIGJhY2tpbmdTdG9yZU9wZW5FcnJvci5tZXNzYWdl
KCkudXRmOCgpLmRhdGEoKSk7CkBAIC0yMDQsNyArMjM4LDcgQEAgdm9pZCBVbmlxdWVJREJEYXRh
YmFzZTo6cGVyZm9ybUN1cnJlbnRPcGVuT3BlcmF0aW9uKCkKICAgICAgICAgfQogICAgIH0KIAot
ICAgIGlmICghYmFja2luZ1N0b3JlT3BlbkVycm9yLmlzTnVsbCgpKSB7CisgICAgaWYgKGJhY2tp
bmdTdG9yZU9wZW5FcnJvcikgewogICAgICAgICBhdXRvIHJlc3VsdCA9IElEQlJlc3VsdERhdGE6
OmVycm9yKG1fY3VycmVudE9wZW5EQlJlcXVlc3QtPnJlcXVlc3REYXRhKCkucmVxdWVzdElkZW50
aWZpZXIoKSwgYmFja2luZ1N0b3JlT3BlbkVycm9yKTsKICAgICAgICAgbV9jdXJyZW50T3BlbkRC
UmVxdWVzdC0+Y29ubmVjdGlvbigpLmRpZE9wZW5EYXRhYmFzZShyZXN1bHQpOwogICAgICAgICBt
X2N1cnJlbnRPcGVuREJSZXF1ZXN0ID0gbnVsbHB0cjsKQEAgLTI5NCw3ICszMjgsNyBAQCB2b2lk
IFVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVCYWNraW5nU3RvcmUoKQogICAgIEFTU0VSVCghaXNN
YWluVGhyZWFkKCkpOwogICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6ZGVs
ZXRlQmFja2luZ1N0b3JlIik7CiAgICAgCi0gICAgYXV0byBiYWNraW5nU3RvcmUgPSBtX2JhY2tp
bmdTdG9yZSA/IHN0ZDo6ZXhjaGFuZ2UobV9iYWNraW5nU3RvcmUsIG51bGxwdHIpIDogbV9zZXJ2
ZXIuY3JlYXRlQmFja2luZ1N0b3JlKG1faWRlbnRpZmllcik7CisgICAgYXV0byBiYWNraW5nU3Rv
cmUgPSBtX2JhY2tpbmdTdG9yZSA/IHN0ZDo6ZXhjaGFuZ2UobV9iYWNraW5nU3RvcmUsIG51bGxw
dHIpIDogbV9tYW5hZ2VyLT5jcmVhdGVCYWNraW5nU3RvcmUobV9pZGVudGlmaWVyKTsKICAgICB1
aW50NjRfdCBkZWxldGVkVmVyc2lvbiA9IGJhY2tpbmdTdG9yZS0+ZGF0YWJhc2VWZXJzaW9uKCk7
CiAgICAgYmFja2luZ1N0b3JlLT5kZWxldGVCYWNraW5nU3RvcmUoKTsKICAgICBkaWREZWxldGVC
YWNraW5nU3RvcmUoZGVsZXRlZFZlcnNpb24pOwpAQCAtNTQyLDIwICs1NzYsMzIgQEAgdm9pZCBV
bmlxdWVJREJEYXRhYmFzZTo6YWRkT3BlbkRhdGFiYXNlQ29ubmVjdGlvbihSZWY8VW5pcXVlSURC
RGF0YWJhc2VDb25uZWN0aW8KICAgICBtX29wZW5EYXRhYmFzZUNvbm5lY3Rpb25zLmFkZChhZG9w
dFJlZihjb25uZWN0aW9uLmxlYWtSZWYoKSkpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNl
OjpjcmVhdGVPYmplY3RTdG9yZShVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2Fj
dGlvbiwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiBpbmZvLCBFcnJvckNhbGxiYWNrIGNhbGxi
YWNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUoVW5pcXVlSURC
RGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIGNvbnN0IElEQk9iamVjdFN0b3JlSW5m
byYgaW5mbywgRXJyb3JDYWxsYmFjayBjYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCBzcGFjZUNo
ZWNrUmVzdWx0KQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIExPRyhJbmRl
eGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUiKTsKIAotICAgIEFT
U0VSVChtX2JhY2tpbmdTdG9yZSk7CisgICAgaWYgKCFzcGFjZUNoZWNrUmVzdWx0KSB7CisgICAg
ICAgIGlmICghbV9tYW5hZ2VyKQorICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9y
IHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7CisKKyAgICAgICAgYXV0byB0YXNrU2l6ZSA9IGRlZmF1
bHRXcml0ZU9wZXJhdGlvbkNvc3QgKyBlc3RpbWF0ZVNpemUoaW5mbyk7CisgICAgICAgIG1fbWFu
YWdlci0+cmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwgdGFza1NpemUsIFt0aGlz
LCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCB3ZWFrVHJhbnNhY3Rpb24gPSBXZWFrUHRy
IHsgdHJhbnNhY3Rpb24gfSwgaW5mbywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9v
bCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMgfHwgIXdlYWtU
cmFuc2FjdGlvbikKKyAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJ
bnZhbGlkU3RhdGVFcnJvciwgIkRhdGFiYXNlIG9yIHRyYW5zYWN0aW9uIGlzIGNsb3NlZCIgfSk7
CisgICAgICAgICAgICBjcmVhdGVPYmplY3RTdG9yZSgqd2Vha1RyYW5zYWN0aW9uLCBpbmZvLCBX
VEZNb3ZlKGNhbGxiYWNrKSwgZ3JhbnRlZCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47
CisgICAgfQogCi0gICAgLy8gUXVvdGEgY2hlY2suCi0gICAgYXV0byB0YXNrU2l6ZSA9IGRlZmF1
bHRXcml0ZU9wZXJhdGlvbkNvc3QgKyBlc3RpbWF0ZVNpemUoaW5mbyk7Ci0gICAgaWYgKG1fc2Vy
dmVyLnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIHRhc2tTaXplKSA9PSBTdG9y
YWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbjo6RGVueSkgeworICAgIGlmICghc3BhY2VDaGVja1Jl
c3VsdC52YWx1ZSgpKSB7CiAgICAgICAgIGNhbGxiYWNrKElEQkVycm9yIHsgUXVvdGFFeGNlZWRl
ZEVycm9yLCBxdW90YUVycm9yTWVzc2FnZU5hbWUoIkNyZWF0ZU9iamVjdFN0b3JlIikgfSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBpZiAoIW1fYmFja2luZ1N0b3JlKQorICAgICAg
ICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkJhY2tpbmcg
c3RvcmUgaGFzIGNsb3NlZCIgfSk7CisKICAgICBhdXRvIGVycm9yID0gbV9iYWNraW5nU3RvcmUt
PmNyZWF0ZU9iamVjdFN0b3JlKHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCksIGluZm8p
OwogICAgIGlmIChlcnJvci5pc051bGwoKSkKICAgICAgICAgbV9kYXRhYmFzZUluZm8tPmFkZEV4
aXN0aW5nT2JqZWN0U3RvcmUoaW5mbyk7CkBAIC01NjMsMTggKzYwOSwzNCBAQCB2b2lkIFVuaXF1
ZUlEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZShVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0
aW9uJiB0cmFuc2FjdAogICAgIGNhbGxiYWNrKGVycm9yKTsKIH0KIAotdm9pZCBVbmlxdWVJREJE
YXRhYmFzZTo6ZGVsZXRlT2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYg
dHJhbnNhY3Rpb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lLCBFcnJvckNhbGxiYWNr
IGNhbGxiYWNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlT2JqZWN0U3RvcmUoVW5p
cXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIGNvbnN0IFN0cmluZyYgb2Jq
ZWN0U3RvcmVOYW1lLCBFcnJvckNhbGxiYWNrIGNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0IHNw
YWNlQ2hlY2tSZXN1bHQpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgTE9H
KEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVPYmplY3RTdG9yZSIpOwogCisg
ICAgaWYgKCFzcGFjZUNoZWNrUmVzdWx0KSB7CisgICAgICAgIGlmICghbV9tYW5hZ2VyKQorICAg
ICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7
CisKKyAgICAgICAgbV9tYW5hZ2VyLT5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigp
LCAwLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgd2Vha1RyYW5zYWN0aW9u
ID0gV2Vha1B0ciB7IHRyYW5zYWN0aW9uIH0sIG9iamVjdFN0b3JlTmFtZSwgY2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlm
ICghd2Vha1RoaXMgfHwgIXdlYWtUcmFuc2FjdGlvbikKKyAgICAgICAgICAgICAgICByZXR1cm4g
Y2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkRhdGFiYXNlIG9yIHRyYW5z
YWN0aW9uIGlzIGNsb3NlZCIgfSk7CisKKyAgICAgICAgICAgIGRlbGV0ZU9iamVjdFN0b3JlKCp3
ZWFrVHJhbnNhY3Rpb24sIG9iamVjdFN0b3JlTmFtZSwgV1RGTW92ZShjYWxsYmFjayksIGdyYW50
ZWQpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChz
cGFjZUNoZWNrUmVzdWx0LnZhbHVlKCkpOwogICAgIGF1dG8qIGluZm8gPSBtX2RhdGFiYXNlSW5m
by0+aW5mb0ZvckV4aXN0aW5nT2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lKTsKICAgICBpZiAo
IWluZm8pIHsKICAgICAgICAgY2FsbGJhY2soSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRl
bXB0IHRvIGRlbGV0ZSBub24tZXhpc3RhbnQgb2JqZWN0IHN0b3JlIl9zIH0pOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgQVNTRVJUKG1fYmFja2luZ1N0b3JlKTsKKyAgICBpZiAoIW1f
YmFja2luZ1N0b3JlKQorICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlk
U3RhdGVFcnJvciwgIkJhY2tpbmcgc3RvcmUgaXMgY2xvc2VkIiB9KTsKKwogICAgIGF1dG8gZXJy
b3IgPSBtX2JhY2tpbmdTdG9yZS0+ZGVsZXRlT2JqZWN0U3RvcmUodHJhbnNhY3Rpb24uaW5mbygp
LmlkZW50aWZpZXIoKSwgaW5mby0+aWRlbnRpZmllcigpKTsKICAgICBpZiAoZXJyb3IuaXNOdWxs
KCkpCiAgICAgICAgIG1fZGF0YWJhc2VJbmZvLT5kZWxldGVPYmplY3RTdG9yZShpbmZvLT5pZGVu
dGlmaWVyKCkpOwpAQCAtNTgyLDE0ICs2NDQsMjYgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6
ZGVsZXRlT2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3QK
ICAgICBjYWxsYmFjayhlcnJvcik7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnJlbmFt
ZU9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCB1
aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSwgRXJy
b3JDYWxsYmFjayBjYWxsYmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnJlbmFtZU9iamVj
dFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCB1aW50NjRf
dCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSwgRXJyb3JDYWxs
YmFjayBjYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCBzcGFjZUNoZWNrUmVzdWx0KQogewogICAg
IEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJE
YXRhYmFzZTo6cmVuYW1lT2JqZWN0U3RvcmUiKTsKIAotICAgIC8vIFF1b3RhIGNoZWNrLgotICAg
IGF1dG8gdGFza1NpemUgPSBkZWZhdWx0V3JpdGVPcGVyYXRpb25Db3N0ICsgbmV3TmFtZS5zaXpl
SW5CeXRlcygpOwotICAgIGlmIChtX3NlcnZlci5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9y
aWdpbigpLCB0YXNrU2l6ZSkgPT0gU3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb246OkRlbnkp
IHsKKyAgICBpZiAoIXNwYWNlQ2hlY2tSZXN1bHQpIHsKKyAgICAgICAgaWYgKCFtX21hbmFnZXIp
CisgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJv
ciB9KTsKKworICAgICAgICBhdXRvIHRhc2tTaXplID0gZGVmYXVsdFdyaXRlT3BlcmF0aW9uQ29z
dCArIG5ld05hbWUuc2l6ZUluQnl0ZXMoKTsKKyAgICAgICAgbV9tYW5hZ2VyLT5yZXF1ZXN0U3Bh
Y2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCB0YXNrU2l6ZSwgW3RoaXMsIHdlYWtUaGlzID0gV2Vh
a1B0ciB7ICp0aGlzIH0sIHdlYWtUcmFuc2FjdGlvbiA9IFdlYWtQdHIgeyB0cmFuc2FjdGlvbiB9
LCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIG5ld05hbWUsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayldKGJvb2wgZ3JhbnRlZCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlz
IHx8ICF3ZWFrVHJhbnNhY3Rpb24pCisgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElE
QkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJEYXRhYmFzZSBvciB0cmFuc2FjdGlvbiBpcyBj
bG9zZWQiIH0pOworCisgICAgICAgICAgICByZW5hbWVPYmplY3RTdG9yZSgqd2Vha1RyYW5zYWN0
aW9uLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIG5ld05hbWUsIFdURk1vdmUoY2FsbGJhY2spLCBn
cmFudGVkKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAo
IXNwYWNlQ2hlY2tSZXN1bHQudmFsdWUoKSkgewogICAgICAgICBjYWxsYmFjayhJREJFcnJvcihR
dW90YUV4Y2VlZGVkRXJyb3IsIHF1b3RhRXJyb3JNZXNzYWdlTmFtZSgiUmVuYW1lT2JqZWN0U3Rv
cmUiKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNjAwLDcgKzY3NCw5IEBAIHZvaWQg
VW5pcXVlSURCRGF0YWJhc2U6OnJlbmFtZU9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJh
bnNhY3Rpb24mIHRyYW5zYWN0CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBBU1NFUlQo
bV9iYWNraW5nU3RvcmUpOworICAgIGlmICghbV9iYWNraW5nU3RvcmUpCisgICAgICAgIHJldHVy
biBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiQmFja2luZyBzdG9yZSBp
cyBjbG9zZWQiIH0pOworCiAgICAgYXV0byBlcnJvciA9IG1fYmFja2luZ1N0b3JlLT5yZW5hbWVP
YmplY3RTdG9yZSh0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpLCBvYmplY3RTdG9yZUlk
ZW50aWZpZXIsIG5ld05hbWUpOwogICAgIGlmIChlcnJvci5pc051bGwoKSkKICAgICAgICAgbV9k
YXRhYmFzZUluZm8tPnJlbmFtZU9iamVjdFN0b3JlKG9iamVjdFN0b3JlSWRlbnRpZmllciwgbmV3
TmFtZSk7CkBAIC02MDgsMzAgKzY4NCw1OSBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpyZW5h
bWVPYmplY3RTdG9yZShVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdAogICAg
IGNhbGxiYWNrKGVycm9yKTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y2xlYXJPYmpl
Y3RTdG9yZShVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgdWludDY0
X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBFcnJvckNhbGxiYWNrIGNhbGxiYWNrKQordm9pZCBV
bmlxdWVJREJEYXRhYmFzZTo6Y2xlYXJPYmplY3RTdG9yZShVbmlxdWVJREJEYXRhYmFzZVRyYW5z
YWN0aW9uJiB0cmFuc2FjdGlvbiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBFcnJv
ckNhbGxiYWNrIGNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0IHNwYWNlQ2hlY2tSZXN1bHQpCiB7
CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1
ZUlEQkRhdGFiYXNlOjpjbGVhck9iamVjdFN0b3JlIik7CiAKLSAgICBBU1NFUlQobV9iYWNraW5n
U3RvcmUpOwotICAgIGF1dG8gZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+Y2xlYXJPYmplY3RTdG9y
ZSh0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpLCBvYmplY3RTdG9yZUlkZW50aWZpZXIp
OworICAgIGlmICghc3BhY2VDaGVja1Jlc3VsdCkgeworICAgICAgICBpZiAoIW1fbWFuYWdlcikK
KyAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9y
IH0pOworCisgICAgICAgIG1fbWFuYWdlci0+cmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmln
aW4oKSwgMCwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHdlYWtUcmFuc2Fj
dGlvbiA9IFdlYWtQdHIgeyB0cmFuc2FjdGlvbiB9LCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgZ3JhbnRlZCkgbXV0YWJsZSB7CisgICAg
ICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICF3ZWFrVHJhbnNhY3Rpb24pCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJEYXRhYmFz
ZSBvciB0cmFuc2FjdGlvbiBpcyBjbG9zZWQiIH0pOworCisgICAgICAgICAgICBjbGVhck9iamVj
dFN0b3JlKCp3ZWFrVHJhbnNhY3Rpb24sIG9iamVjdFN0b3JlSWRlbnRpZmllciwgV1RGTW92ZShj
YWxsYmFjayksIGdyYW50ZWQpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIEFTU0VSVChzcGFjZUNoZWNrUmVzdWx0LnZhbHVlKCkpOworICAgIGlmICghbV9iYWNr
aW5nU3RvcmUpCisgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0
ZUVycm9yLCAiQmFja2luZyBzdG9yZSBpcyBjbG9zZWQiIH0pOwogCisgICAgYXV0byBlcnJvciA9
IG1fYmFja2luZ1N0b3JlLT5jbGVhck9iamVjdFN0b3JlKHRyYW5zYWN0aW9uLmluZm8oKS5pZGVu
dGlmaWVyKCksIG9iamVjdFN0b3JlSWRlbnRpZmllcik7CiAgICAgY2FsbGJhY2soZXJyb3IpOwog
fQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVJbmRleChVbmlxdWVJREJEYXRhYmFz
ZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgY29uc3QgSURCSW5kZXhJbmZvJiBpbmZvLCBFcnJv
ckNhbGxiYWNrIGNhbGxiYWNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlSW5kZXgo
VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIGNvbnN0IElEQkluZGV4
SW5mbyYgaW5mbywgRXJyb3JDYWxsYmFjayBjYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCBzcGFj
ZUNoZWNrUmVzdWx0KQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIExPRyhJ
bmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlSW5kZXgiKTsKIAotICAgIC8vIFF1
b3RhIGNoZWNrLgotICAgIGF1dG8gdGFza1NpemUgPSBkZWZhdWx0V3JpdGVPcGVyYXRpb25Db3N0
ICsgZXN0aW1hdGVTaXplKGluZm8pOwotICAgIGlmIChtX3NlcnZlci5yZXF1ZXN0U3BhY2UobV9p
ZGVudGlmaWVyLm9yaWdpbigpLCB0YXNrU2l6ZSkgPT0gU3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVj
aXNpb246OkRlbnkpIHsKKyAgICBpZiAoIXNwYWNlQ2hlY2tSZXN1bHQpIHsKKyAgICAgICAgaWYg
KCFtX21hbmFnZXIpCisgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZh
bGlkU3RhdGVFcnJvciB9KTsKKworICAgICAgICBhdXRvIHRhc2tTaXplID0gZGVmYXVsdFdyaXRl
T3BlcmF0aW9uQ29zdCArIGVzdGltYXRlU2l6ZShpbmZvKTsKKyAgICAgICAgbV9tYW5hZ2VyLT5y
ZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCB0YXNrU2l6ZSwgW3RoaXMsIHdlYWtU
aGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHdlYWtUcmFuc2FjdGlvbiA9IFdlYWtQdHIgeyB0cmFu
c2FjdGlvbiB9LCBpbmZvLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIGdyYW50
ZWQpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhd2Vha1RyYW5zYWN0
aW9uKQorICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRT
dGF0ZUVycm9yLCAiRGF0YWJhc2Ugb3IgdHJhbnNhY3Rpb24gaXMgY2xvc2VkIiB9KTsKKworICAg
ICAgICAgICAgY3JlYXRlSW5kZXgoKndlYWtUcmFuc2FjdGlvbiwgaW5mbywgV1RGTW92ZShjYWxs
YmFjayksIGdyYW50ZWQpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGlmICghc3BhY2VDaGVja1Jlc3VsdC52YWx1ZSgpKSB7CiAgICAgICAgIGNhbGxiYWNrKElE
QkVycm9yIHsgUXVvdGFFeGNlZWRlZEVycm9yLCBxdW90YUVycm9yTWVzc2FnZU5hbWUoIkNyZWF0
ZUluZGV4IikgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBBU1NFUlQobV9iYWNr
aW5nU3RvcmUpOworICAgIGlmICghbV9iYWNraW5nU3RvcmUpCisgICAgICAgIHJldHVybiBjYWxs
YmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiQmFja2luZyBzdG9yZSBpcyBjbG9z
ZWQiIH0pOworCiAgICAgYXV0byBlcnJvciA9IG1fYmFja2luZ1N0b3JlLT5jcmVhdGVJbmRleCh0
cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpLCBpbmZvKTsKICAgICBpZiAoZXJyb3IuaXNO
dWxsKCkpIHsKICAgICAgICAgQVNTRVJUKG1fZGF0YWJhc2VJbmZvKTsKQEAgLTY0NCwxMSArNzQ5
LDI4IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZUluZGV4KFVuaXF1ZUlEQkRhdGFi
YXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBjCiAgICAgY2FsbGJhY2soZXJyb3IpOwogfQog
Ci12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVJbmRleChVbmlxdWVJREJEYXRhYmFzZVRy
YW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIGluZGV4TmFtZSwgRXJyb3JDYWxsYmFjayBjYWxsYmFjaykKK3ZvaWQgVW5p
cXVlSURCRGF0YWJhc2U6OmRlbGV0ZUluZGV4KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24m
IHRyYW5zYWN0aW9uLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgaW5kZXhOYW1lLCBFcnJvckNhbGxiYWNrIGNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0IHNw
YWNlQ2hlY2tSZXN1bHQpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgTE9H
KEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVJbmRleCIpOwogCisgICAgaWYg
KCFzcGFjZUNoZWNrUmVzdWx0KSB7CisgICAgICAgIGlmICghbV9tYW5hZ2VyKQorICAgICAgICAg
ICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7CisKKyAg
ICAgICAgbV9tYW5hZ2VyLT5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCAwLCBb
dGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgd2Vha1RyYW5zYWN0aW9uID0gV2Vh
a1B0ciB7IHRyYW5zYWN0aW9uIH0sIG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhOYW1lLCBj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIGdyYW50ZWQpIG11dGFibGUgeworICAg
ICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhd2Vha1RyYW5zYWN0aW9uKQorICAgICAgICAgICAg
ICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiRGF0YWJh
c2Ugb3IgdHJhbnNhY3Rpb24gaXMgY2xvc2VkIiB9KTsKKworICAgICAgICAgICAgZGVsZXRlSW5k
ZXgoKndlYWtUcmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleE5hbWUsIFdU
Rk1vdmUoY2FsbGJhY2spLCBncmFudGVkKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBBU1NFUlQoc3BhY2VDaGVja1Jlc3VsdC52YWx1ZSgpKTsKKyAgICBpZiAo
IW1fYmFja2luZ1N0b3JlKQorICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZh
bGlkU3RhdGVFcnJvciwgIkJhY2tpbmcgc3RvcmUgaXMgY2xvc2VkIiB9KTsKKwogICAgIGF1dG8q
IG9iamVjdFN0b3JlSW5mbyA9IG1fZGF0YWJhc2VJbmZvLT5pbmZvRm9yRXhpc3RpbmdPYmplY3RT
dG9yZShvYmplY3RTdG9yZUlkZW50aWZpZXIpOwogICAgIGlmICghb2JqZWN0U3RvcmVJbmZvKSB7
CiAgICAgICAgIGNhbGxiYWNrKElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBk
ZWxldGUgaW5kZXggZnJvbSBub24tZXhpc3RhbnQgb2JqZWN0IHN0b3JlIl9zIH0pOwpAQCAtNjYw
LDkgKzc4Miw4IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZUluZGV4KFVuaXF1ZUlE
QkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCB1CiAgICAgICAgIGNhbGxiYWNrKElE
QkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBkZWxldGUgbm9uLWV4aXN0YW50IGlu
ZGV4Il9zIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8gaW5kZXhJZGVudGlm
aWVyID0gaW5kZXhJbmZvLT5pZGVudGlmaWVyKCk7CiAKLSAgICBBU1NFUlQobV9iYWNraW5nU3Rv
cmUpOworICAgIGF1dG8gaW5kZXhJZGVudGlmaWVyID0gaW5kZXhJbmZvLT5pZGVudGlmaWVyKCk7
CiAgICAgYXV0byBlcnJvciA9IG1fYmFja2luZ1N0b3JlLT5kZWxldGVJbmRleCh0cmFuc2FjdGlv
bi5pbmZvKCkuaWRlbnRpZmllcigpLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4SWRlbnRp
Zmllcik7CiAgICAgaWYgKGVycm9yLmlzTnVsbCgpKQogICAgICAgICBvYmplY3RTdG9yZUluZm8t
PmRlbGV0ZUluZGV4KGluZGV4SWRlbnRpZmllcik7CkBAIC02NzAsMTggKzc5MSwzMyBAQCB2b2lk
IFVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVJbmRleChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0
aW9uJiB0cmFuc2FjdGlvbiwgdQogICAgIGNhbGxiYWNrKGVycm9yKTsKIH0KIAotdm9pZCBVbmlx
dWVJREJEYXRhYmFzZTo6cmVuYW1lSW5kZXgoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYg
dHJhbnNhY3Rpb24sIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgdWludDY0X3QgaW5k
ZXhJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUsIEVycm9yQ2FsbGJhY2sgY2FsbGJh
Y2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpyZW5hbWVJbmRleChVbmlxdWVJREJEYXRhYmFz
ZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVy
LCB1aW50NjRfdCBpbmRleElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSwgRXJyb3JD
YWxsYmFjayBjYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCBzcGFjZUNoZWNrUmVzdWx0KQogewog
ICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJ
REJEYXRhYmFzZTo6cmVuYW1lSW5kZXgiKTsKIAotICAgIC8vIFF1b3RhIGNoZWNrLgotICAgIGF1
dG8gdGFza1NpemUgPSBkZWZhdWx0V3JpdGVPcGVyYXRpb25Db3N0ICsgbmV3TmFtZS5zaXplSW5C
eXRlcygpOwotICAgIGlmIChtX3NlcnZlci5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdp
bigpLCB0YXNrU2l6ZSkgPT0gU3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb246OkRlbnkpIHsK
KyAgICBpZiAoIXNwYWNlQ2hlY2tSZXN1bHQpIHsKKyAgICAgICAgaWYgKCFtX21hbmFnZXIpCisg
ICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciB9
KTsKKworICAgICAgICBhdXRvIHRhc2tTaXplID0gZGVmYXVsdFdyaXRlT3BlcmF0aW9uQ29zdCAr
IG5ld05hbWUuc2l6ZUluQnl0ZXMoKTsKKyAgICAgICAgbV9tYW5hZ2VyLT5yZXF1ZXN0U3BhY2Uo
bV9pZGVudGlmaWVyLm9yaWdpbigpLCB0YXNrU2l6ZSwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0
ciB7ICp0aGlzIH0sIHdlYWtUcmFuc2FjdGlvbiA9IFdlYWtQdHIgeyB0cmFuc2FjdGlvbiB9LCBv
YmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4SWRlbnRpZmllciwgbmV3TmFtZSwgY2FsbGJhY2sg
PSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAgICAg
IGlmICghd2Vha1RoaXMgfHwgIXdlYWtUcmFuc2FjdGlvbikKKyAgICAgICAgICAgICAgICByZXR1
cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkRhdGFiYXNlIG9yIHRy
YW5zYWN0aW9uIGlzIGNsb3NlZCIgfSk7CisKKyAgICAgICAgICAgIHJlbmFtZUluZGV4KCp3ZWFr
VHJhbnNhY3Rpb24sIG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhJZGVudGlmaWVyLCBuZXdO
YW1lLCBXVEZNb3ZlKGNhbGxiYWNrKSwgZ3JhbnRlZCk7CisgICAgICAgIH0pOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgaWYgKCFzcGFjZUNoZWNrUmVzdWx0LnZhbHVlKCkpIHsKICAg
ICAgICAgY2FsbGJhY2soSURCRXJyb3IgeyBRdW90YUV4Y2VlZGVkRXJyb3IsIHF1b3RhRXJyb3JN
ZXNzYWdlTmFtZSgiUmVuYW1lSW5kZXgiKSB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAor
ICAgIGlmICghbV9iYWNraW5nU3RvcmUpCisgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJv
ciB7IEludmFsaWRTdGF0ZUVycm9yLCAiQmFja2luZyBzdG9yZSBpcyBjbG9zZWQiIH0pOworCiAg
ICAgYXV0byogb2JqZWN0U3RvcmVJbmZvID0gbV9kYXRhYmFzZUluZm8tPmluZm9Gb3JFeGlzdGlu
Z09iamVjdFN0b3JlKG9iamVjdFN0b3JlSWRlbnRpZmllcik7CiAgICAgaWYgKCFvYmplY3RTdG9y
ZUluZm8pIHsKICAgICAgICAgY2FsbGJhY2soSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRl
bXB0IHRvIHJlbmFtZSBpbmRleCBpbiBub24tZXhpc3RhbnQgb2JqZWN0IHN0b3JlIl9zIH0pOwpA
QCAtNjk0LDcgKzgzMCw2IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnJlbmFtZUluZGV4KFVu
aXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCB1CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBBU1NFUlQobV9iYWNraW5nU3RvcmUpOwogICAgIGF1dG8gZXJyb3Ig
PSBtX2JhY2tpbmdTdG9yZS0+cmVuYW1lSW5kZXgodHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZp
ZXIoKSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleElkZW50aWZpZXIsIG5ld05hbWUpOwog
ICAgIGlmIChlcnJvci5pc051bGwoKSkKICAgICAgICAgaW5kZXhJbmZvLT5yZW5hbWUobmV3TmFt
ZSk7CkBAIC03MDksMTcgKzg0NCwxOSBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwdXRPckFk
ZChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQktleQogCiAgICAg
QVNTRVJUKG1fZGF0YWJhc2VJbmZvKTsKIAotICAgIElEQktleURhdGEgdXNlZEtleTsKLSAgICBJ
REJFcnJvciBlcnJvcjsKKyAgICBpZiAoIW1fYmFja2luZ1N0b3JlKQorICAgICAgICByZXR1cm4g
Y2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkJhY2tpbmcgc3RvcmUgaXMg
Y2xvc2VkIiB9LCBrZXlEYXRhKTsKIAotICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CiAgICAg
YXV0byBvYmplY3RTdG9yZUlkZW50aWZpZXIgPSByZXF1ZXN0RGF0YS5vYmplY3RTdG9yZUlkZW50
aWZpZXIoKTsKICAgICBhdXRvKiBvYmplY3RTdG9yZUluZm8gPSBtX2JhY2tpbmdTdG9yZS0+aW5m
b0Zvck9iamVjdFN0b3JlKG9iamVjdFN0b3JlSWRlbnRpZmllcik7Ci0gICAgaWYgKCFvYmplY3RT
dG9yZUluZm8pIHsKLSAgICAgICAgY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJv
ciwgIk9iamVjdCBzdG9yZSBjYW5ub3QgYmUgZm91bmQgaW4gdGhlIGJhY2tpbmcgc3RvcmUiX3Mg
fSwgdXNlZEtleSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKCFvYmplY3RTdG9y
ZUluZm8pCisgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVy
cm9yLCAiT2JqZWN0IHN0b3JlIGNhbm5vdCBiZSBmb3VuZCBpbiB0aGUgYmFja2luZyBzdG9yZSJf
cyB9LCBrZXlEYXRhKTsKKworICAgIGlmICghbV9tYW5hZ2VyKQorICAgICAgICByZXR1cm4gY2Fs
bGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciB9LCBrZXlEYXRhKTsKIAorICAgIElE
QktleURhdGEgdXNlZEtleTsKKyAgICBJREJFcnJvciBlcnJvcjsKICAgICBib29sIHVzZWRLZXlJ
c0dlbmVyYXRlZCA9IGZhbHNlOwogICAgIHVpbnQ2NF90IGtleU51bWJlcjsKICAgICBhdXRvIHRy
YW5zYWN0aW9uSWRlbnRpZmllciA9IHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigp
OwpAQCAtNzMwLDc2ICs4NjcsMTA1IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnB1dE9yQWRk
KGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5CiAKICAgICBp
ZiAob2JqZWN0U3RvcmVJbmZvLT5hdXRvSW5jcmVtZW50KCkgJiYgIWtleURhdGEuaXNWYWxpZCgp
KSB7CiAgICAgICAgIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPmdlbmVyYXRlS2V5TnVtYmVyKHRy
YW5zYWN0aW9uSWRlbnRpZmllciwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBrZXlOdW1iZXIpOwot
ICAgICAgICBpZiAoIWVycm9yLmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhlcnJv
ciwgdXNlZEtleSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAgaWYg
KCFlcnJvci5pc051bGwoKSkKKyAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhlcnJvciwgdXNl
ZEtleSk7CisKICAgICAgICAgdXNlZEtleS5zZXROdW1iZXJWYWx1ZShrZXlOdW1iZXIpOwogICAg
ICAgICB1c2VkS2V5SXNHZW5lcmF0ZWQgPSB0cnVlOwogICAgIH0gZWxzZQogICAgICAgICB1c2Vk
S2V5ID0ga2V5RGF0YTsKIAotICAgIC8vIEdlbmVyYXRlIGluZGV4IGtleXMgdXAgZnJvbnQgZm9y
IG1vcmUgYWNjdXJhdGUgcXVvdGEgY2hlY2suCi0gICAgSW5kZXhJRFRvSW5kZXhLZXlNYXAgaW5k
ZXhLZXlzOwotICAgIGNhbGxPbklEQlNlcmlhbGl6YXRpb25UaHJlYWRBbmRXYWl0KFtvYmplY3RT
dG9yZUluZm8gPSBvYmplY3RTdG9yZUluZm8tPmlzb2xhdGVkQ29weSgpLCBrZXkgPSB1c2VkS2V5
Lmlzb2xhdGVkQ29weSgpLCB2YWx1ZSA9IHZhbHVlLmlzb2xhdGVkQ29weSgpLCAmaW5kZXhLZXlz
XShhdXRvJiBnbG9iYWxPYmplY3QpIHsKLSAgICAgICAgaW5kZXhLZXlzID0gZ2VuZXJhdGVJbmRl
eEtleU1hcEZvclZhbHVlKGdsb2JhbE9iamVjdCwgb2JqZWN0U3RvcmVJbmZvLCBrZXksIHZhbHVl
KTsKLSAgICB9KTsKLQogICAgIGlmIChvdmVyd3JpdGVNb2RlID09IEluZGV4ZWREQjo6T2JqZWN0
U3RvcmVPdmVyd3JpdGVNb2RlOjpOb092ZXJ3cml0ZSkgewogICAgICAgICBib29sIGtleUV4aXN0
czsKICAgICAgICAgZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+a2V5RXhpc3RzSW5PYmplY3RTdG9y
ZSh0cmFuc2FjdGlvbklkZW50aWZpZXIsIG9iamVjdFN0b3JlSWRlbnRpZmllciwgdXNlZEtleSwg
a2V5RXhpc3RzKTsKLSAgICAgICAgaWYgKGVycm9yLmlzTnVsbCgpICYmIGtleUV4aXN0cykKKyAg
ICAgICAgaWYgKCFlcnJvciAmJiBrZXlFeGlzdHMpCiAgICAgICAgICAgICBlcnJvciA9IElEQkVy
cm9yIHsgQ29uc3RyYWludEVycm9yLCAiS2V5IGFscmVhZHkgZXhpc3RzIGluIHRoZSBvYmplY3Qg
c3RvcmUiX3MgfTsKIAotICAgICAgICBpZiAoIWVycm9yLmlzTnVsbCgpKSB7Ci0gICAgICAgICAg
ICBjYWxsYmFjayhlcnJvciwgdXNlZEtleSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KKyAgICAgICAgaWYgKCEhZXJyb3IpCisgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soZXJy
b3IsIHVzZWRLZXkpOwogICAgIH0KIAotICAgIC8vIFF1b3RhIGNoZWNrLgorICAgIC8vIEdlbmVy
YXRlIGluZGV4IGtleXMgdXAgZnJvbnQgZm9yIG1vcmUgYWNjdXJhdGUgcXVvdGEgY2hlY2suCisg
ICAgSW5kZXhJRFRvSW5kZXhLZXlNYXAgaW5kZXhLZXlzOworICAgIGNhbGxPbklEQlNlcmlhbGl6
YXRpb25UaHJlYWRBbmRXYWl0KFtvYmplY3RTdG9yZUluZm8gPSBvYmplY3RTdG9yZUluZm8tPmlz
b2xhdGVkQ29weSgpLCBrZXkgPSB1c2VkS2V5Lmlzb2xhdGVkQ29weSgpLCB2YWx1ZSA9IHZhbHVl
Lmlzb2xhdGVkQ29weSgpLCAmaW5kZXhLZXlzXShhdXRvJiBnbG9iYWxPYmplY3QpIHsKKyAgICAg
ICAgaW5kZXhLZXlzID0gZ2VuZXJhdGVJbmRleEtleU1hcEZvclZhbHVlKGdsb2JhbE9iamVjdCwg
b2JqZWN0U3RvcmVJbmZvLCBrZXksIHZhbHVlKTsKKyAgICB9KTsKKworICAgIGdlbmVyYXRlZEtl
eVJlc2V0dGVyLnJlbGVhc2UoKTsKICAgICBhdXRvIGtleVNpemUgPSBlc3RpbWF0ZVNpemUodXNl
ZEtleSk7CiAgICAgYXV0byB2YWx1ZVNpemUgPSBlc3RpbWF0ZVNpemUodmFsdWUpOwogICAgIGF1
dG8gaW5kZXhTaXplID0gZXN0aW1hdGVTaXplKCpvYmplY3RTdG9yZUluZm8sIGluZGV4S2V5cywg
a2V5U2l6ZSk7CiAgICAgYXV0byB0YXNrU2l6ZSA9IGRlZmF1bHRXcml0ZU9wZXJhdGlvbkNvc3Qg
KyBrZXlTaXplICsgdmFsdWVTaXplICsgaW5kZXhTaXplOwogCiAgICAgTE9HKEluZGV4ZWREQiwg
IlVuaXF1ZUlEQkRhdGFiYXNlOjpwdXRPckFkZCBxdW90YSBjaGVjayB3aXRoIHRhc2sgc2l6ZTog
JSIgUFJJdTY0ICIga2V5IHNpemU6ICUiIFBSSXU2NCAiIHZhbHVlIHNpemU6ICUiIFBSSXU2NCAi
IGluZGV4IHNpemU6ICUiIFBSSXU2NCwgdGFza1NpemUsIGtleVNpemUsIHZhbHVlU2l6ZSwgaW5k
ZXhTaXplKTsKKyAgICBtX21hbmFnZXItPnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2lu
KCksIHRhc2tTaXplLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgcmVxdWVz
dERhdGEsIHVzZWRLZXksIHZhbHVlLCBvdmVyd3JpdGVNb2RlLCBjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spLCB1c2VkS2V5SXNHZW5lcmF0ZWQsIGluZGV4S2V5cywgb2JqZWN0U3RvcmVJbmZv
ID0gKm9iamVjdFN0b3JlSW5mb10oYm9vbCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAgaWYg
KCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFs
aWRTdGF0ZUVycm9yLCAiRGF0YWJhc2UgaXMgY2xvc2VkIiB9LCB1c2VkS2V5KTsKIAotICAgIGlm
IChtX3NlcnZlci5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCB0YXNrU2l6ZSkg
PT0gU3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb246OkRlbnkpIHsKLSAgICAgICAgY2FsbGJh
Y2soSURCRXJyb3IgeyBRdW90YUV4Y2VlZGVkRXJyb3IsIHF1b3RhRXJyb3JNZXNzYWdlTmFtZSgi
UHV0T3JBZGQiKSB9LCB1c2VkS2V5KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICAgICAg
cHV0T3JBZGRBZnRlclNwYWNlQ2hlY2socmVxdWVzdERhdGEsIHVzZWRLZXksIHZhbHVlLCBvdmVy
d3JpdGVNb2RlLCBXVEZNb3ZlKGNhbGxiYWNrKSwgdXNlZEtleUlzR2VuZXJhdGVkLCBpbmRleEtl
eXMsIG9iamVjdFN0b3JlSW5mbywgZ3JhbnRlZCk7CisgICAgfSk7Cit9CisKK3ZvaWQgVW5pcXVl
SURCRGF0YWJhc2U6OnB1dE9yQWRkQWZ0ZXJTcGFjZUNoZWNrKGNvbnN0IElEQlJlcXVlc3REYXRh
JiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5RGF0YSYga2V5RGF0YSwgY29uc3QgSURCVmFsdWUm
IHZhbHVlLCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSBvdmVyd3JpdGVNb2Rl
LCBLZXlEYXRhQ2FsbGJhY2sgY2FsbGJhY2ssIGJvb2wgaXNLZXlHZW5lcmF0ZWQsIGNvbnN0IElu
ZGV4SURUb0luZGV4S2V5TWFwJiBpbmRleEtleXMsIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYg
b2JqZWN0U3RvcmVJbmZvLCBTcGFjZUNoZWNrUmVzdWx0IHNwYWNlQ2hlY2tSZXN1bHQpCit7Cisg
ICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKG1fZGF0YWJhc2VJbmZvKTsK
KworICAgIGlmICghbV9iYWNraW5nU3RvcmUpCisgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJF
cnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiQmFja2luZyBzdG9yZSBpcyBjbG9zZWQiIH0sIGtl
eURhdGEpOworCisgICAgdWludDY0X3Qga2V5TnVtYmVyID0gaXNLZXlHZW5lcmF0ZWQgPyBrZXlE
YXRhLm51bWJlcigpIDogMDsKKyAgICBhdXRvIG9iamVjdFN0b3JlSWRlbnRpZmllciA9IG9iamVj
dFN0b3JlSW5mby5pZGVudGlmaWVyKCk7CisgICAgYXV0byB0cmFuc2FjdGlvbklkZW50aWZpZXIg
PSByZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKTsKKyAgICBhdXRvIGdlbmVyYXRl
ZEtleVJlc2V0dGVyID0gbWFrZVNjb3BlRXhpdChbdGhpcywgdHJhbnNhY3Rpb25JZGVudGlmaWVy
LCBvYmplY3RTdG9yZUlkZW50aWZpZXIsICZrZXlOdW1iZXIsICZpc0tleUdlbmVyYXRlZF0oKSB7
CisgICAgICAgIGlmIChpc0tleUdlbmVyYXRlZCkKKyAgICAgICAgICAgIG1fYmFja2luZ1N0b3Jl
LT5yZXZlcnRHZW5lcmF0ZWRLZXlOdW1iZXIodHJhbnNhY3Rpb25JZGVudGlmaWVyLCBvYmplY3RT
dG9yZUlkZW50aWZpZXIsIGtleU51bWJlcik7CisgICAgfSk7CiAKKyAgICBpZiAoIXNwYWNlQ2hl
Y2tSZXN1bHQgfHwgIXNwYWNlQ2hlY2tSZXN1bHQudmFsdWUoKSkKKyAgICAgICAgcmV0dXJuIGNh
bGxiYWNrKElEQkVycm9yIHsgUXVvdGFFeGNlZWRlZEVycm9yLCBxdW90YUVycm9yTWVzc2FnZU5h
bWUoIlB1dE9yQWRkIikgfSwga2V5RGF0YSk7CiAgICAgLy8gSWYgYSByZWNvcmQgYWxyZWFkeSBl
eGlzdHMgaW4gc3RvcmUsIHRoZW4gcmVtb3ZlIHRoZSByZWNvcmQgZnJvbSBzdG9yZSB1c2luZyB0
aGUgc3RlcHMgZm9yIGRlbGV0aW5nIHJlY29yZHMgZnJvbSBhbiBvYmplY3Qgc3RvcmUuCi0gICAg
Ly8gVGhpcyBpcyBpbXBvcnRhbnQgYmVjYXVzZSBmb3JtYWxseSBkZWxldGluZyBpdCBmcm9tIGZy
b20gdGhlIG9iamVjdCBzdG9yZSBhbHNvIHJlbW92ZXMgaXQgZnJvbSB0aGUgYXBwcm9wcmlhdGUg
aW5kZXhlcy4KLSAgICBlcnJvciA9IG1fYmFja2luZ1N0b3JlLT5kZWxldGVSYW5nZSh0cmFuc2Fj
dGlvbklkZW50aWZpZXIsIG9iamVjdFN0b3JlSWRlbnRpZmllciwgdXNlZEtleSk7Ci0gICAgaWYg
KCFlcnJvci5pc051bGwoKSkgewotICAgICAgICBjYWxsYmFjayhlcnJvciwgdXNlZEtleSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9CisgICAgLy8gVGhpcyBpcyBpbXBvcnRhbnQgYmVjYXVzZSBm
b3JtYWxseSBkZWxldGluZyBpdCBmcm9tIHRoZSBvYmplY3Qgc3RvcmUgYWxzbyByZW1vdmVzIGl0
IGZyb20gdGhlIGFwcHJvcHJpYXRlIGluZGV4ZXMuCisgICAgSURCRXJyb3IgZXJyb3IgPSBtX2Jh
Y2tpbmdTdG9yZS0+ZGVsZXRlUmFuZ2UodHJhbnNhY3Rpb25JZGVudGlmaWVyLCBvYmplY3RTdG9y
ZUlkZW50aWZpZXIsIGtleURhdGEpOworICAgIGlmICghZXJyb3IuaXNOdWxsKCkpCisgICAgICAg
IHJldHVybiBjYWxsYmFjayhlcnJvciwga2V5RGF0YSk7CiAKLSAgICBlcnJvciA9IG1fYmFja2lu
Z1N0b3JlLT5hZGRSZWNvcmQodHJhbnNhY3Rpb25JZGVudGlmaWVyLCAqb2JqZWN0U3RvcmVJbmZv
LCB1c2VkS2V5LCBpbmRleEtleXMsIHZhbHVlKTsKLSAgICBpZiAoIWVycm9yLmlzTnVsbCgpKSB7
Ci0gICAgICAgIGNhbGxiYWNrKGVycm9yLCB1c2VkS2V5KTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KKyAgICBlcnJvciA9IG1fYmFja2luZ1N0b3JlLT5hZGRSZWNvcmQodHJhbnNhY3Rpb25JZGVu
dGlmaWVyLCBvYmplY3RTdG9yZUluZm8sIGtleURhdGEsIGluZGV4S2V5cywgdmFsdWUpOworICAg
IGlmICghZXJyb3IuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBjYWxsYmFjayhlcnJvciwga2V5
RGF0YSk7CiAKLSAgICBpZiAob3ZlcndyaXRlTW9kZSAhPSBJbmRleGVkREI6Ok9iamVjdFN0b3Jl
T3ZlcndyaXRlTW9kZTo6T3ZlcndyaXRlRm9yQ3Vyc29yICYmIG9iamVjdFN0b3JlSW5mby0+YXV0
b0luY3JlbWVudCgpICYmIGtleURhdGEudHlwZSgpID09IEluZGV4ZWREQjo6S2V5VHlwZTo6TnVt
YmVyKQorICAgIGlmIChvdmVyd3JpdGVNb2RlICE9IEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVy
d3JpdGVNb2RlOjpPdmVyd3JpdGVGb3JDdXJzb3IgJiYgb2JqZWN0U3RvcmVJbmZvLmF1dG9JbmNy
ZW1lbnQoKSAmJiBrZXlEYXRhLnR5cGUoKSA9PSBJbmRleGVkREI6OktleVR5cGU6Ok51bWJlcikK
ICAgICAgICAgZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+bWF5YmVVcGRhdGVLZXlHZW5lcmF0b3JO
dW1iZXIodHJhbnNhY3Rpb25JZGVudGlmaWVyLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGtleURh
dGEubnVtYmVyKCkpOwogCiAgICAgZ2VuZXJhdGVkS2V5UmVzZXR0ZXIucmVsZWFzZSgpOwotICAg
IGNhbGxiYWNrKGVycm9yLCB1c2VkS2V5KTsKKyAgICBjYWxsYmFjayhlcnJvciwga2V5RGF0YSk7
CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmdldFJlY29yZChjb25zdCBJREJSZXF1ZXN0
RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkdldFJlY29yZERhdGEmIGdldFJlY29yZERhdGEs
IEdldFJlc3VsdENhbGxiYWNrIGNhbGxiYWNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Z2V0
UmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCR2V0UmVj
b3JkRGF0YSYgZ2V0UmVjb3JkRGF0YSwgR2V0UmVzdWx0Q2FsbGJhY2sgY2FsbGJhY2ssIFNwYWNl
Q2hlY2tSZXN1bHQgc3BhY2VDaGVja1Jlc3VsdCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVh
ZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6OmdldFJlY29yZCIp
OwogCisgICAgaWYgKCFzcGFjZUNoZWNrUmVzdWx0KSB7CisgICAgICAgIGlmICghbV9tYW5hZ2Vy
KQorICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJy
b3IgfSwgSURCR2V0UmVzdWx0IHsgfSk7CisKKyAgICAgICAgbV9tYW5hZ2VyLT5yZXF1ZXN0U3Bh
Y2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCAwLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsg
KnRoaXMgfSwgcmVxdWVzdERhdGEsIGdldFJlY29yZERhdGEsIGNhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayldKGJvb2wgZ3JhbnRlZCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXdlYWtU
aGlzKQorICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRT
dGF0ZUVycm9yLCAiRGF0YWJhc2UgaXMgY2xvc2VkIiB9LCBJREJHZXRSZXN1bHQgeyB9KTsKKwor
ICAgICAgICAgICAgZ2V0UmVjb3JkKHJlcXVlc3REYXRhLCBnZXRSZWNvcmREYXRhLCBXVEZNb3Zl
KGNhbGxiYWNrKSwgZ3JhbnRlZCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgQVNTRVJUKHNwYWNlQ2hlY2tSZXN1bHQudmFsdWUoKSk7CisgICAgaWYgKCFtX2Jh
Y2tpbmdTdG9yZSkKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0
YXRlRXJyb3IsICJCYWNraW5nIHN0b3JlIGlzIGNsb3NlZCIgfSwgSURCR2V0UmVzdWx0IHsgfSk7
CisKICAgICBJREJHZXRSZXN1bHQgcmVzdWx0OwogICAgIElEQkVycm9yIGVycm9yOwogCi0gICAg
QVNTRVJUKG1fYmFja2luZ1N0b3JlKTsKICAgICBpZiAodWludDY0X3QgaW5kZXhJZGVudGlmaWVy
ID0gcmVxdWVzdERhdGEuaW5kZXhJZGVudGlmaWVyKCkpCiAgICAgICAgIGVycm9yID0gbV9iYWNr
aW5nU3RvcmUtPmdldEluZGV4UmVjb3JkKHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmll
cigpLCByZXF1ZXN0RGF0YS5vYmplY3RTdG9yZUlkZW50aWZpZXIoKSwgaW5kZXhJZGVudGlmaWVy
LCByZXF1ZXN0RGF0YS5pbmRleFJlY29yZFR5cGUoKSwgZ2V0UmVjb3JkRGF0YS5rZXlSYW5nZURh
dGEsIHJlc3VsdCk7CiAgICAgZWxzZQpAQCAtODA4LDQ3ICs5NzQsMTEwIEBAIHZvaWQgVW5pcXVl
SURCRGF0YWJhc2U6OmdldFJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEs
IGNvbnN0IElEQkdlCiAgICAgY2FsbGJhY2soZXJyb3IsIHJlc3VsdCk7CiB9CiAKLXZvaWQgVW5p
cXVlSURCRGF0YWJhc2U6OmdldEFsbFJlY29yZHMoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVl
c3REYXRhLCBjb25zdCBJREJHZXRBbGxSZWNvcmRzRGF0YSYgZ2V0QWxsUmVjb3Jkc0RhdGEsIEdl
dEFsbFJlc3VsdHNDYWxsYmFjayBjYWxsYmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6Omdl
dEFsbFJlY29yZHMoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJH
ZXRBbGxSZWNvcmRzRGF0YSYgZ2V0QWxsUmVjb3Jkc0RhdGEsIEdldEFsbFJlc3VsdHNDYWxsYmFj
ayBjYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCBzcGFjZUNoZWNrUmVzdWx0KQogewogICAgIEFT
U0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRh
YmFzZTo6Z2V0QWxsUmVjb3JkcyIpOwogCi0gICAgQVNTRVJUKG1fYmFja2luZ1N0b3JlKTsKKyAg
ICBpZiAoIXNwYWNlQ2hlY2tSZXN1bHQpIHsKKyAgICAgICAgaWYgKCFtX21hbmFnZXIpCisgICAg
ICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciB9LCBJ
REJHZXRBbGxSZXN1bHQgeyB9KTsKKworICAgICAgICBtX21hbmFnZXItPnJlcXVlc3RTcGFjZSht
X2lkZW50aWZpZXIub3JpZ2luKCksIDAsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhp
cyB9LCByZXF1ZXN0RGF0YSwgZ2V0QWxsUmVjb3Jkc0RhdGEsIGNhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayldKGJvb2wgZ3JhbnRlZCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXdlYWtU
aGlzKQorICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRT
dGF0ZUVycm9yLCAiRGF0YWJhc2UgaXMgY2xvc2VkIiB9LCBJREJHZXRBbGxSZXN1bHQgeyB9KTsK
KworICAgICAgICAgICAgZ2V0QWxsUmVjb3JkcyhyZXF1ZXN0RGF0YSwgZ2V0QWxsUmVjb3Jkc0Rh
dGEsIFdURk1vdmUoY2FsbGJhY2spLCBncmFudGVkKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQoc3BhY2VDaGVja1Jlc3VsdC52YWx1ZSgpKTsKKyAg
ICBpZiAoIW1fYmFja2luZ1N0b3JlKQorICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3Ig
eyBJbnZhbGlkU3RhdGVFcnJvciwgIkJhY2tpbmcgc3RvcmUgaXMgY2xvc2VkIiB9LCBJREJHZXRB
bGxSZXN1bHQgeyB9KTsKKwogICAgIElEQkdldEFsbFJlc3VsdCByZXN1bHQ7CiAgICAgYXV0byBl
cnJvciA9IG1fYmFja2luZ1N0b3JlLT5nZXRBbGxSZWNvcmRzKHJlcXVlc3REYXRhLnRyYW5zYWN0
aW9uSWRlbnRpZmllcigpLCBnZXRBbGxSZWNvcmRzRGF0YSwgcmVzdWx0KTsKIAogICAgIGNhbGxi
YWNrKGVycm9yLCByZXN1bHQpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRDb3Vu
dChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQktleVJhbmdlRGF0
YSYgcmFuZ2UsIENvdW50Q2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNl
OjpnZXRDb3VudChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQktl
eVJhbmdlRGF0YSYgcmFuZ2UsIENvdW50Q2FsbGJhY2sgY2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1
bHQgc3BhY2VDaGVja1Jlc3VsdCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAg
ICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6OmdldENvdW50Iik7CiAKLSAgICBB
U1NFUlQobV9iYWNraW5nU3RvcmUpOworICAgIGlmICghc3BhY2VDaGVja1Jlc3VsdCkgeworICAg
ICAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJv
ciB7IEludmFsaWRTdGF0ZUVycm9yIH0sIDApOworCisgICAgICAgIG1fbWFuYWdlci0+cmVxdWVz
dFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwgMCwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0
ciB7ICp0aGlzIH0sIHJlcXVlc3REYXRhLCByYW5nZSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKV0oYm9vbCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMp
CisgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRl
RXJyb3IsICJEYXRhYmFzZSBpcyBjbG9zZWQiIH0sIDApOworCisgICAgICAgICAgICBnZXRDb3Vu
dChyZXF1ZXN0RGF0YSwgcmFuZ2UsIFdURk1vdmUoY2FsbGJhY2spLCBncmFudGVkKTsKKyAgICAg
ICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQoc3BhY2VDaGVja1Jl
c3VsdC52YWx1ZSgpKTsKKyAgICBpZiAoIW1fYmFja2luZ1N0b3JlKQorICAgICAgICByZXR1cm4g
Y2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkJhY2tpbmcgc3RvcmUgaXMg
Y2xvc2VkIiB9LCAwKTsKKwogICAgIHVpbnQ2NF90IGNvdW50ID0gMDsKICAgICBhdXRvIGVycm9y
ID0gbV9iYWNraW5nU3RvcmUtPmdldENvdW50KHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRp
ZmllcigpLCByZXF1ZXN0RGF0YS5vYmplY3RTdG9yZUlkZW50aWZpZXIoKSwgcmVxdWVzdERhdGEu
aW5kZXhJZGVudGlmaWVyKCksIHJhbmdlLCBjb3VudCk7CiAKICAgICBjYWxsYmFjayhlcnJvciwg
Y291bnQpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVSZWNvcmQoY29uc3Qg
SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJh
bmdlRGF0YSwgRXJyb3JDYWxsYmFjayBjYWxsYmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6
OmRlbGV0ZVJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElE
QktleVJhbmdlRGF0YSYga2V5UmFuZ2VEYXRhLCBFcnJvckNhbGxiYWNrIGNhbGxiYWNrLCBTcGFj
ZUNoZWNrUmVzdWx0IHNwYWNlQ2hlY2tSZXN1bHQpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJl
YWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVSZWNv
cmQiKTsKIAotICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CisgICAgaWYgKCFzcGFjZUNoZWNr
UmVzdWx0KSB7CisgICAgICAgIGlmICghbV9tYW5hZ2VyKQorICAgICAgICAgICAgcmV0dXJuIGNh
bGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7CisKKyAgICAgICAgbV9tYW5h
Z2VyLT5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCAwLCBbdGhpcywgd2Vha1Ro
aXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgcmVxdWVzdERhdGEsIGtleVJhbmdlRGF0YSwgY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAg
ICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVy
cm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJEYXRhYmFzZSBpcyBjbG9zZWQiIH0pOworCisgICAg
ICAgICAgICBkZWxldGVSZWNvcmQocmVxdWVzdERhdGEsIGtleVJhbmdlRGF0YSwgV1RGTW92ZShj
YWxsYmFjayksIGdyYW50ZWQpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIEFTU0VSVChzcGFjZUNoZWNrUmVzdWx0LnZhbHVlKCkpOworICAgIGlmICghbV9iYWNr
aW5nU3RvcmUpCisgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0
ZUVycm9yLCAiQmFja2luZyBzdG9yZSBpcyBjbG9zZWQiIH0pOworCiAgICAgYXV0byBlcnJvciA9
IG1fYmFja2luZ1N0b3JlLT5kZWxldGVSYW5nZShyZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50
aWZpZXIoKSwgcmVxdWVzdERhdGEub2JqZWN0U3RvcmVJZGVudGlmaWVyKCksIGtleVJhbmdlRGF0
YSk7CiAKICAgICBjYWxsYmFjayhlcnJvcik7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6
Om9wZW5DdXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJD
dXJzb3JJbmZvJiBpbmZvLCBHZXRSZXN1bHRDYWxsYmFjayBjYWxsYmFjaykKK3ZvaWQgVW5pcXVl
SURCRGF0YWJhc2U6Om9wZW5DdXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRh
LCBjb25zdCBJREJDdXJzb3JJbmZvJiBpbmZvLCBHZXRSZXN1bHRDYWxsYmFjayBjYWxsYmFjaywg
U3BhY2VDaGVja1Jlc3VsdCBzcGFjZUNoZWNrUmVzdWx0KQogewogICAgIEFTU0VSVCghaXNNYWlu
VGhyZWFkKCkpOwogICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6b3BlbkN1
cnNvciIpOwogCi0gICAgQVNTRVJUKG1fYmFja2luZ1N0b3JlKTsKKyAgICBpZiAoIXNwYWNlQ2hl
Y2tSZXN1bHQpIHsKKyAgICAgICAgaWYgKCFtX21hbmFnZXIpCisgICAgICAgICAgICByZXR1cm4g
Y2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciB9LCBJREJHZXRSZXN1bHQgeyB9
KTsKKworICAgICAgICBtX21hbmFnZXItPnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2lu
KCksIDAsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCByZXF1ZXN0RGF0YSwg
aW5mbywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBncmFudGVkKSBtdXRhYmxl
IHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICAgICAgcmV0dXJuIGNh
bGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJEYXRhYmFzZSBvciB0cmFuc2Fj
dGlvbiBpcyBjbG9zZWQiIH0sIElEQkdldFJlc3VsdCB7IH0pOworCisgICAgICAgICAgICBvcGVu
Q3Vyc29yKHJlcXVlc3REYXRhLCBpbmZvLCBXVEZNb3ZlKGNhbGxiYWNrKSwgZ3JhbnRlZCk7Cisg
ICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKHNwYWNlQ2hl
Y2tSZXN1bHQudmFsdWUoKSk7CisgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkKKyAgICAgICAgcmV0
dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJCYWNraW5nIHN0b3Jl
IGlzIGNsb3NlZCIgfSwgSURCR2V0UmVzdWx0IHsgfSk7CiAKICAgICBJREJHZXRSZXN1bHQgcmVz
dWx0OwogICAgIGF1dG8gZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+b3BlbkN1cnNvcihyZXF1ZXN0
RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSwgaW5mbywgcmVzdWx0KTsKQEAgLTg1NiwxMiAr
MTA4NSwyNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuQ3Vyc29yKGNvbnN0IElEQlJl
cXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCQwogICAgIGNhbGxiYWNrKGVycm9yLCBy
ZXN1bHQpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjppdGVyYXRlQ3Vyc29yKGNvbnN0
IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCSXRlcmF0ZUN1cnNvckRhdGEm
IGRhdGEsIEdldFJlc3VsdENhbGxiYWNrIGNhbGxiYWNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFz
ZTo6aXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0
IElEQkl0ZXJhdGVDdXJzb3JEYXRhJiBkYXRhLCBHZXRSZXN1bHRDYWxsYmFjayBjYWxsYmFjaywg
U3BhY2VDaGVja1Jlc3VsdCBzcGFjZUNoZWNrUmVzdWx0KQogewogICAgIEFTU0VSVCghaXNNYWlu
VGhyZWFkKCkpOwogICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6aXRlcmF0
ZUN1cnNvciIpOwogCi0gICAgQVNTRVJUKG1fYmFja2luZ1N0b3JlKTsKKyAgICBpZiAoIXNwYWNl
Q2hlY2tSZXN1bHQpIHsKKyAgICAgICAgaWYgKCFtX21hbmFnZXIpCisgICAgICAgICAgICByZXR1
cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciB9LCBJREJHZXRSZXN1bHQg
eyB9KTsKKworICAgICAgICBtX21hbmFnZXItPnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3Jp
Z2luKCksIDAsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCByZXF1ZXN0RGF0
YSwgZGF0YSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBncmFudGVkKSBtdXRh
YmxlIHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICAgICAgcmV0dXJu
IGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJEYXRhYmFzZSBvciB0cmFu
c2FjdGlvbiBpcyBjbG9zZWQiIH0sIElEQkdldFJlc3VsdCB7IH0pOworCisgICAgICAgICAgICBp
dGVyYXRlQ3Vyc29yKHJlcXVlc3REYXRhLCBkYXRhLCBXVEZNb3ZlKGNhbGxiYWNrKSwgZ3JhbnRl
ZCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKHNw
YWNlQ2hlY2tSZXN1bHQudmFsdWUoKSk7CisgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkKKyAgICAg
ICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJCYWNraW5n
IHN0b3JlIGlzIGNsb3NlZCIgfSwgSURCR2V0UmVzdWx0IHsgfSk7CiAKICAgICBJREJHZXRSZXN1
bHQgcmVzdWx0OwogICAgIGF1dG8gdHJhbnNhY3Rpb25JZGVudGlmaWVyID0gcmVxdWVzdERhdGEu
dHJhbnNhY3Rpb25JZGVudGlmaWVyKCk7CkBAIC04NzEsMTMgKzExMTUsMzAgQEAgdm9pZCBVbmlx
dWVJREJEYXRhYmFzZTo6aXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVz
dERhdGEsIGNvbnN0IEkKICAgICBjYWxsYmFjayhlcnJvciwgcmVzdWx0KTsKIH0KIAotdm9pZCBV
bmlxdWVJREJEYXRhYmFzZTo6Y29tbWl0VHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFu
c2FjdGlvbiYgdHJhbnNhY3Rpb24sIEVycm9yQ2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIFVuaXF1
ZUlEQkRhdGFiYXNlOjpjb21taXRUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0
aW9uJiB0cmFuc2FjdGlvbiwgRXJyb3JDYWxsYmFjayBjYWxsYmFjaywgU3BhY2VDaGVja1Jlc3Vs
dCBzcGFjZUNoZWNrUmVzdWx0KQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAg
IExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6Y29tbWl0VHJhbnNhY3Rpb24gLSAl
cyIsIHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCkubG9nZ2luZ1N0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOwogCisgICAgaWYgKCFzcGFjZUNoZWNrUmVzdWx0KSB7CisgICAgICAgIGlmICgh
bV9tYW5hZ2VyKQorICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxp
ZFN0YXRlRXJyb3IgfSk7CisKKyAgICAgICAgbV9tYW5hZ2VyLT5yZXF1ZXN0U3BhY2UobV9pZGVu
dGlmaWVyLm9yaWdpbigpLCAwLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwg
d2Vha1RyYW5zYWN0aW9uID0gV2Vha1B0ciB7IHRyYW5zYWN0aW9uIH0sIGNhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayldKGJvb2wgZ3JhbnRlZCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAo
IXdlYWtUaGlzIHx8ICF3ZWFrVHJhbnNhY3Rpb24pCisgICAgICAgICAgICAgICAgcmV0dXJuIGNh
bGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJEYXRhYmFzZSBvciB0cmFuc2Fj
dGlvbiBpcyBjbG9zZWQiIH0pOworCisgICAgICAgICAgICBjb21taXRUcmFuc2FjdGlvbigqd2Vh
a1RyYW5zYWN0aW9uLCBXVEZNb3ZlKGNhbGxiYWNrKSwgZ3JhbnRlZCk7CisgICAgICAgIH0pOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKHNwYWNlQ2hlY2tSZXN1bHQudmFs
dWUoKSk7CiAgICAgQVNTRVJUKHRyYW5zYWN0aW9uLmRhdGFiYXNlQ29ubmVjdGlvbigpLmRhdGFi
YXNlKCkgPT0gdGhpcyk7Ci0gICAgQVNTRVJUKG1fYmFja2luZ1N0b3JlKTsKKworICAgIGlmICgh
bV9iYWNraW5nU3RvcmUpCisgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFs
aWRTdGF0ZUVycm9yLCAiQmFja2luZyBzdG9yZSBpcyBjbG9zZWQiIH0pOworCiAgICAgYXV0byB0
YWtlblRyYW5zYWN0aW9uID0gbV9pblByb2dyZXNzVHJhbnNhY3Rpb25zLnRha2UodHJhbnNhY3Rp
b24uaW5mbygpLmlkZW50aWZpZXIoKSk7CiAgICAgaWYgKCF0YWtlblRyYW5zYWN0aW9uKSB7CiAg
ICAgICAgIGlmICghbV9vcGVuRGF0YWJhc2VDb25uZWN0aW9ucy5jb250YWlucygmdHJhbnNhY3Rp
b24uZGF0YWJhc2VDb25uZWN0aW9uKCkpKQpAQCAtODkzLDExICsxMTU0LDI1IEBAIHZvaWQgVW5p
cXVlSURCRGF0YWJhc2U6OmNvbW1pdFRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNh
Y3Rpb24mIHRyYW5zYWN0CiAgICAgdHJhbnNhY3Rpb25Db21wbGV0ZWQoV1RGTW92ZSh0YWtlblRy
YW5zYWN0aW9uKSk7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmFib3J0VHJhbnNhY3Rp
b24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIEVycm9yQ2FsbGJh
Y2sgY2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjphYm9ydFRyYW5zYWN0aW9uKFVu
aXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBFcnJvckNhbGxiYWNrIGNh
bGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0IHNwYWNlQ2hlY2tSZXN1bHQpCiB7CiAgICAgQVNTRVJU
KCFpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNl
OjphYm9ydFRyYW5zYWN0aW9uIC0gJXMiLCB0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigp
LmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAorICAgIGlmICghc3BhY2VDaGVja1Jl
c3VsdCkgeworICAgICAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAgICAgICAgIHJldHVybiBjYWxs
YmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yIH0pOworCisgICAgICAgIG1fbWFuYWdl
ci0+cmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwgMCwgW3RoaXMsIHdlYWtUaGlz
ID0gV2Vha1B0ciB7ICp0aGlzIH0sIHdlYWtUcmFuc2FjdGlvbiA9IFdlYWtQdHIgeyB0cmFuc2Fj
dGlvbiB9LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIGdyYW50ZWQpIG11dGFi
bGUgeworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhd2Vha1RyYW5zYWN0aW9uKQorICAg
ICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9y
LCAiRGF0YWJhc2Ugb3IgdHJhbnNhY3Rpb24gaXMgY2xvc2VkIiB9KTsKKworICAgICAgICAgICAg
YWJvcnRUcmFuc2FjdGlvbigqd2Vha1RyYW5zYWN0aW9uLCBXVEZNb3ZlKGNhbGxiYWNrKSwgZ3Jh
bnRlZCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJU
KHNwYWNlQ2hlY2tSZXN1bHQudmFsdWUoKSk7CiAgICAgQVNTRVJUKHRyYW5zYWN0aW9uLmRhdGFi
YXNlQ29ubmVjdGlvbigpLmRhdGFiYXNlKCkgPT0gdGhpcyk7CiAKICAgICBhdXRvIHRha2VuVHJh
bnNhY3Rpb24gPSBtX2luUHJvZ3Jlc3NUcmFuc2FjdGlvbnMudGFrZSh0cmFuc2FjdGlvbi5pbmZv
KCkuaWRlbnRpZmllcigpKTsKQEAgLTkyNSw3ICsxMjAwLDExIEBAIHZvaWQgVW5pcXVlSURCRGF0
YWJhc2U6OmFib3J0VHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJh
bnNhY3RpCiAgICAgICAgIG1fZGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUlu
Zm8+KCptX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi0+b3JpZ2luYWxEYXRhYmFzZUluZm8oKSk7
CiAgICAgfQogCi0gICAgYXV0byBlcnJvciA9IG1fYmFja2luZ1N0b3JlLT5hYm9ydFRyYW5zYWN0
aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CisgICAgSURCRXJyb3IgZXJyb3I7CisgICAgaWYg
KCFtX2JhY2tpbmdTdG9yZSkKKyAgICAgICAgZXJyb3IgPSBJREJFcnJvciB7IEludmFsaWRTdGF0
ZUVycm9yLCAiQmFja2luZyBzdG9yZSBpcyBjbG9zZWQiIH07CisgICAgZWxzZQorICAgICAgICBl
cnJvciA9IG1fYmFja2luZ1N0b3JlLT5hYm9ydFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRp
Zmllcik7CiAKICAgICBjYWxsYmFjayhlcnJvcik7CiAgICAgdHJhbnNhY3Rpb25Db21wbGV0ZWQo
V1RGTW92ZSh0YWtlblRyYW5zYWN0aW9uKSk7CkBAIC0xMjA0LDYgKzE0ODMsMTIgQEAgdm9pZCBV
bmlxdWVJREJEYXRhYmFzZTo6YWJvcnRBY3RpdmVUcmFuc2FjdGlvbnMoKQogICAgIH0KIH0KIAor
dm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6YWJvcnRJblByb2dyZXNzVHJhbnNhY3Rpb25zKCkKK3sK
KyAgICBmb3IgKGF1dG8mIGlkZW50aWZpZXIgOiBjb3B5VG9WZWN0b3IobV9pblByb2dyZXNzVHJh
bnNhY3Rpb25zLmtleXMoKSkpCisgICAgICAgIG1faW5Qcm9ncmVzc1RyYW5zYWN0aW9ucy5nZXQo
aWRlbnRpZmllciktPmFib3J0V2l0aG91dENhbGxiYWNrKCk7Cit9CisKIHZvaWQgVW5pcXVlSURC
RGF0YWJhc2U6OmNsb3NlKCkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJh
c2U6OmNsb3NlIik7CkBAIC0xMjEzLDcgKzE0OTgsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNl
OjpjbG9zZSgpCiAgICAgICAgIG1fYmFja2luZ1N0b3JlID0gbnVsbHB0cjsKICAgICB9CiB9Ci0K
KyAgICAKIGJvb2wgVW5pcXVlSURCRGF0YWJhc2U6OnRyeUNsb3NlKCkKIHsKICAgICBpZiAobV9i
YWNraW5nU3RvcmUgJiYgbV9iYWNraW5nU3RvcmUtPmlzRXBoZW1lcmFsKCkpCkBAIC0xMjI1LDYg
KzE1MTAsMTEgQEAgYm9vbCBVbmlxdWVJREJEYXRhYmFzZTo6dHJ5Q2xvc2UoKQogICAgIGNsb3Nl
KCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CisgICAgCitib29sIFVuaXF1ZUlEQkRhdGFiYXNlOjpo
YXNEYXRhSW5NZW1vcnkoKSBjb25zdAoreworICAgIHJldHVybiBtX2JhY2tpbmdTdG9yZSA/IG1f
YmFja2luZ1N0b3JlLT5pc0VwaGVtZXJhbCgpIDogZmFsc2U7Cit9CiAKIFJlZlB0cjxTZXJ2ZXJP
cGVuREJSZXF1ZXN0PiBVbmlxdWVJREJEYXRhYmFzZTo6dGFrZU5leHRSdW5uYWJsZVJlcXVlc3Qo
UmVxdWVzdFR5cGUgcmVxdWVzdFR5cGUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oCmluZGV4IGIy
YTc0MTdmOWM4MTljZmMyNDE0NmNlNWZiNWNmNWQyNjEyODUwODAuLmIwNGQ3MTM5ZWZkZjBkYzc5
OGY2NThjZTUyMTY5NmEwYTc2Y2ZlYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oCkBAIC01OSw4
ICs1OSw4IEBAIGVudW0gY2xhc3MgSW5kZXhSZWNvcmRUeXBlIDogYm9vbDsKIG5hbWVzcGFjZSBJ
REJTZXJ2ZXIgewogCiBjbGFzcyBJREJDb25uZWN0aW9uVG9DbGllbnQ7Ci1jbGFzcyBJREJTZXJ2
ZXI7CiBjbGFzcyBVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb247CitjbGFzcyBVbmlxdWVJREJE
YXRhYmFzZU1hbmFnZXI7CiAKIHR5cGVkZWYgRnVuY3Rpb248dm9pZChjb25zdCBJREJFcnJvciYp
PiBFcnJvckNhbGxiYWNrOwogdHlwZWRlZiBGdW5jdGlvbjx2b2lkKGNvbnN0IElEQkVycm9yJiwg
Y29uc3QgSURCS2V5RGF0YSYpPiBLZXlEYXRhQ2FsbGJhY2s7CkBAIC03MSw1NCArNzEsNTkgQEAg
dHlwZWRlZiBGdW5jdGlvbjx2b2lkKGNvbnN0IElEQkVycm9yJiwgdWludDY0X3QpPiBDb3VudENh
bGxiYWNrOwogY2xhc3MgVW5pcXVlSURCRGF0YWJhc2UgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8
VW5pcXVlSURCRGF0YWJhc2U+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKLSAgICBVbmlxdWVJREJEYXRhYmFzZShJREJTZXJ2ZXImLCBjb25zdCBJREJEYXRhYmFzZUlk
ZW50aWZpZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBVbmlxdWVJREJEYXRhYmFzZShVbmlxdWVJ
REJEYXRhYmFzZU1hbmFnZXImLCBjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImKTsKICAgICBV
bmlxdWVJREJEYXRhYmFzZShVbmlxdWVJREJEYXRhYmFzZSYpID0gZGVsZXRlOwogICAgIFdFQkNP
UkVfRVhQT1JUIH5VbmlxdWVJREJEYXRhYmFzZSgpOwogCi0gICAgdm9pZCBvcGVuRGF0YWJhc2VD
b25uZWN0aW9uKElEQkNvbm5lY3Rpb25Ub0NsaWVudCYsIGNvbnN0IElEQlJlcXVlc3REYXRhJik7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBvcGVuRGF0YWJhc2VDb25uZWN0aW9uKElEQkNvbm5l
Y3Rpb25Ub0NsaWVudCYsIGNvbnN0IElEQlJlcXVlc3REYXRhJik7CiAKICAgICBjb25zdCBJREJE
YXRhYmFzZUluZm8mIGluZm8oKSBjb25zdDsKLSAgICBJREJTZXJ2ZXImIHNlcnZlcigpIHsgcmV0
dXJuIG1fc2VydmVyOyB9CisgICAgVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyKiBtYW5hZ2VyKCk7
CiAgICAgY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJiBpZGVudGlmaWVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAKLSAgICB2b2lkIGNyZWF0ZU9iamVjdFN0b3JlKFVuaXF1
ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mLCBFcnJv
ckNhbGxiYWNrKTsKLSAgICB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNl
VHJhbnNhY3Rpb24mLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSwgRXJyb3JDYWxsYmFj
ayk7Ci0gICAgdm9pZCByZW5hbWVPYmplY3RTdG9yZShVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0
aW9uJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05h
bWUsIEVycm9yQ2FsbGJhY2spOwotICAgIHZvaWQgY2xlYXJPYmplY3RTdG9yZShVbmlxdWVJREJE
YXRhYmFzZVRyYW5zYWN0aW9uJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBFcnJv
ckNhbGxiYWNrKTsKLSAgICB2b2lkIGNyZWF0ZUluZGV4KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNh
Y3Rpb24mLCBjb25zdCBJREJJbmRleEluZm8mLCBFcnJvckNhbGxiYWNrKTsKLSAgICB2b2lkIGRl
bGV0ZUluZGV4KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCB1aW50NjRfdCBvYmplY3RT
dG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lLCBFcnJvckNhbGxiYWNrKTsK
LSAgICB2b2lkIHJlbmFtZUluZGV4KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCB1aW50
NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBuZXdOYW1lLCBFcnJvckNhbGxiYWNrKTsKKyAgICB1c2luZyBTcGFjZUNoZWNr
UmVzdWx0ID0gc3RkOjpvcHRpb25hbDxib29sPjsKKyAgICB2b2lkIGNyZWF0ZU9iamVjdFN0b3Jl
KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8m
LCBFcnJvckNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0ID0gc3RkOjpudWxsb3B0KTsKKyAgICB2
b2lkIGRlbGV0ZU9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCBjb25z
dCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSwgRXJyb3JDYWxsYmFjaywgU3BhY2VDaGVja1Jlc3Vs
dCA9IHN0ZDo6bnVsbG9wdCk7CisgICAgdm9pZCByZW5hbWVPYmplY3RTdG9yZShVbmlxdWVJREJE
YXRhYmFzZVRyYW5zYWN0aW9uJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIG5ld05hbWUsIEVycm9yQ2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgPSBzdGQ6
Om51bGxvcHQpOworICAgIHZvaWQgY2xlYXJPYmplY3RTdG9yZShVbmlxdWVJREJEYXRhYmFzZVRy
YW5zYWN0aW9uJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBFcnJvckNhbGxiYWNr
LCBTcGFjZUNoZWNrUmVzdWx0ID0gc3RkOjpudWxsb3B0KTsKKyAgICB2b2lkIGNyZWF0ZUluZGV4
KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCBjb25zdCBJREJJbmRleEluZm8mLCBFcnJv
ckNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0ID0gc3RkOjpudWxsb3B0KTsKKyAgICB2b2lkIGRl
bGV0ZUluZGV4KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCB1aW50NjRfdCBvYmplY3RT
dG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lLCBFcnJvckNhbGxiYWNrLCBT
cGFjZUNoZWNrUmVzdWx0ID0gc3RkOjpudWxsb3B0KTsKKyAgICB2b2lkIHJlbmFtZUluZGV4KFVu
aXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZp
ZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lLCBFcnJv
ckNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0ID0gc3RkOjpudWxsb3B0KTsKICAgICB2b2lkIHB1
dE9yQWRkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5RGF0YSYsIGNvbnN0IElE
QlZhbHVlJiwgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUsIEtleURhdGFDYWxs
YmFjayk7Ci0gICAgdm9pZCBnZXRSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJ
REJHZXRSZWNvcmREYXRhJiwgR2V0UmVzdWx0Q2FsbGJhY2spOwotICAgIHZvaWQgZ2V0QWxsUmVj
b3Jkcyhjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkdldEFsbFJlY29yZHNEYXRhJiwg
R2V0QWxsUmVzdWx0c0NhbGxiYWNrKTsKLSAgICB2b2lkIGdldENvdW50KGNvbnN0IElEQlJlcXVl
c3REYXRhJiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiwgQ291bnRDYWxsYmFjayk7Ci0gICAgdm9p
ZCBkZWxldGVSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlSYW5nZURh
dGEmLCBFcnJvckNhbGxiYWNrKTsKLSAgICB2b2lkIG9wZW5DdXJzb3IoY29uc3QgSURCUmVxdWVz
dERhdGEmLCBjb25zdCBJREJDdXJzb3JJbmZvJiwgR2V0UmVzdWx0Q2FsbGJhY2spOwotICAgIHZv
aWQgaXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkl0ZXJhdGVD
dXJzb3JEYXRhJiwgR2V0UmVzdWx0Q2FsbGJhY2spOwotICAgIHZvaWQgY29tbWl0VHJhbnNhY3Rp
b24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIEVycm9yQ2FsbGJhY2spOwotICAgIHZv
aWQgYWJvcnRUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgRXJyb3JD
YWxsYmFjayk7CisgICAgdm9pZCBwdXRPckFkZEFmdGVyU3BhY2VDaGVjayhjb25zdCBJREJSZXF1
ZXN0RGF0YSYsIGNvbnN0IElEQktleURhdGEmLCBjb25zdCBJREJWYWx1ZSYsIEluZGV4ZWREQjo6
T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlLCBLZXlEYXRhQ2FsbGJhY2ssIGJvb2wgaXNLZXlHZW5l
cmF0ZWQsIGNvbnN0IEluZGV4SURUb0luZGV4S2V5TWFwJiwgY29uc3QgSURCT2JqZWN0U3RvcmVJ
bmZvJiwgU3BhY2VDaGVja1Jlc3VsdCk7CisgICAgdm9pZCBnZXRSZWNvcmQoY29uc3QgSURCUmVx
dWVzdERhdGEmLCBjb25zdCBJREJHZXRSZWNvcmREYXRhJiwgR2V0UmVzdWx0Q2FsbGJhY2ssIFNw
YWNlQ2hlY2tSZXN1bHQgPSBzdGQ6Om51bGxvcHQpOworICAgIHZvaWQgZ2V0QWxsUmVjb3Jkcyhj
b25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkdldEFsbFJlY29yZHNEYXRhJiwgR2V0QWxs
UmVzdWx0c0NhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0ID0gc3RkOjpudWxsb3B0KTsKKyAgICB2
b2lkIGdldENvdW50KGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5UmFuZ2VEYXRh
JiwgQ291bnRDYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCA9IHN0ZDo6bnVsbG9wdCk7CisgICAg
dm9pZCBkZWxldGVSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlSYW5n
ZURhdGEmLCBFcnJvckNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0ID0gc3RkOjpudWxsb3B0KTsK
KyAgICB2b2lkIG9wZW5DdXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJDdXJz
b3JJbmZvJiwgR2V0UmVzdWx0Q2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgPSBzdGQ6Om51bGxv
cHQpOworICAgIHZvaWQgaXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0
IElEQkl0ZXJhdGVDdXJzb3JEYXRhJiwgR2V0UmVzdWx0Q2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1
bHQgPSBzdGQ6Om51bGxvcHQpOworICAgIHZvaWQgY29tbWl0VHJhbnNhY3Rpb24oVW5pcXVlSURC
RGF0YWJhc2VUcmFuc2FjdGlvbiYsIEVycm9yQ2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgPSBz
dGQ6Om51bGxvcHQpOworICAgIHZvaWQgYWJvcnRUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFz
ZVRyYW5zYWN0aW9uJiwgRXJyb3JDYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCA9IHN0ZDo6bnVs
bG9wdCk7CiAKICAgICB2b2lkIGRpZEZpbmlzaEhhbmRsaW5nVmVyc2lvbkNoYW5nZShVbmlxdWVJ
REJEYXRhYmFzZUNvbm5lY3Rpb24mLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5z
YWN0aW9uSWRlbnRpZmllcik7CiAgICAgdm9pZCBjb25uZWN0aW9uQ2xvc2VkRnJvbUNsaWVudChV
bmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mKTsKICAgICB2b2lkIGRpZEZpcmVWZXJzaW9uQ2hh
bmdlRXZlbnQoVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiwgY29uc3QgSURCUmVzb3VyY2VJ
ZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgSW5kZXhlZERCOjpDb25uZWN0aW9uQ2xvc2Vk
T25CZWhhbGZPZlNlcnZlcik7Ci0gICAgdm9pZCBvcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKGNvbnN0
IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgb3BlbkRCUmVxdWVzdENhbmNlbGxlZChjb25zdCBJREJSZXNvdXJjZUlkZW50
aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyKTsKIAogICAgIHZvaWQgZW5xdWV1ZVRyYW5zYWN0aW9u
KFJlZjxVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uPiYmKTsKIAotICAgIHZvaWQgaGFuZGxl
RGVsZXRlKElEQkNvbm5lY3Rpb25Ub0NsaWVudCYsIGNvbnN0IElEQlJlcXVlc3REYXRhJik7Ci0g
ICAgdm9pZCBpbW1lZGlhdGVDbG9zZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFuZGxl
RGVsZXRlKElEQkNvbm5lY3Rpb25Ub0NsaWVudCYsIGNvbnN0IElEQlJlcXVlc3REYXRhJik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbW1lZGlhdGVDbG9zZSgpOwogCiAgICAgYm9vbCBoYXNB
Y3RpdmVUcmFuc2FjdGlvbnMoKSBjb25zdDsKICAgICB2b2lkIGFib3J0QWN0aXZlVHJhbnNhY3Rp
b25zKCk7Ci0gICAgYm9vbCB0cnlDbG9zZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWJv
cnRJblByb2dyZXNzVHJhbnNhY3Rpb25zKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCB0cnlD
bG9zZSgpOwogCi0gICAgU3RyaW5nIGZpbGVQYXRoKCkgY29uc3Q7Ci0gICAgc3RkOjpvcHRpb25h
bDxJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiBuYW1lQW5kVmVyc2lvbigpIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIFN0cmluZyBmaWxlUGF0aCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0ZDo6b3B0aW9uYWw8SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbj4gbmFtZUFuZFZlcnNp
b24oKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhhc0RhdGFJbk1lbW9yeSgpIGNv
bnN0OwogCiBwcml2YXRlOgogICAgIHZvaWQgaGFuZGxlRGF0YWJhc2VPcGVyYXRpb25zKCk7CiAg
ICAgdm9pZCBoYW5kbGVDdXJyZW50T3BlcmF0aW9uKCk7CiAgICAgdm9pZCBwZXJmb3JtQ3VycmVu
dE9wZW5PcGVyYXRpb24oKTsKKyAgICB2b2lkIHBlcmZvcm1DdXJyZW50T3Blbk9wZXJhdGlvbkFm
dGVyU3BhY2VDaGVjayhib29sIGlzR3JhbnRlZCk7CiAgICAgdm9pZCBwZXJmb3JtQ3VycmVudERl
bGV0ZU9wZXJhdGlvbigpOwogICAgIGVudW0gY2xhc3MgUmVxdWVzdFR5cGUgeyBEZWxldGUsIEFu
eSB9OwogICAgIFJlZlB0cjxTZXJ2ZXJPcGVuREJSZXF1ZXN0PiB0YWtlTmV4dFJ1bm5hYmxlUmVx
dWVzdChSZXF1ZXN0VHlwZSA9IFJlcXVlc3RUeXBlOjpBbnkpOwpAQCAtMTQ2LDExICsxNTEsMTMg
QEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY2xlYXJUcmFuc2FjdGlvbnNPbkNvbm5lY3Rpb24oVW5p
cXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJik7CiAKLSAgICBJREJTZXJ2ZXImIG1fc2VydmVyOwor
ICAgIElEQlNlcnZlciogbV9zZXJ2ZXI7CisgICAgV2Vha1B0cjxVbmlxdWVJREJEYXRhYmFzZU1h
bmFnZXI+IG1fbWFuYWdlcjsKICAgICBJREJEYXRhYmFzZUlkZW50aWZpZXIgbV9pZGVudGlmaWVy
OwogCiAgICAgTGlzdEhhc2hTZXQ8UmVmUHRyPFNlcnZlck9wZW5EQlJlcXVlc3Q+PiBtX3BlbmRp
bmdPcGVuREJSZXF1ZXN0czsKICAgICBSZWZQdHI8U2VydmVyT3BlbkRCUmVxdWVzdD4gbV9jdXJy
ZW50T3BlbkRCUmVxdWVzdDsKKyAgICBIYXNoU2V0PElEQlJlc291cmNlSWRlbnRpZmllcj4gbV9v
cGVuREJSZXF1ZXN0c0ZvclNwYWNlQ2hlY2s7CiAKICAgICBMaXN0SGFzaFNldDxSZWZQdHI8VW5p
cXVlSURCRGF0YWJhc2VDb25uZWN0aW9uPj4gbV9vcGVuRGF0YWJhc2VDb25uZWN0aW9uczsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1
ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmNwcAppbmRleCA3NDNlZGNj
M2I4YzU5NDA1MWY3OTExMTY1MjZhZjRkMDIxNjkxMzY3Li5kNmFhMWZiOWJhNjJiYzk5Y2Q1MDky
Y2Y1MGNlNjk1ZDk5MDdiNmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VDb25u
ZWN0aW9uLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNs
dWRlICJTZXJ2ZXJPcGVuREJSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiVW5pcXVlSURCRGF0YWJhc2Uu
aCIKKyNpbmNsdWRlICJVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogbmFtZXNwYWNlIElEQlNlcnZlciB7CkBAIC00MiwxMSArNDMsMTQgQEAgUmVmPFVu
aXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbj4gVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uOjpj
cmVhdGUoVW5pcXVlSURCRGEKIAogVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uOjpVbmlxdWVJ
REJEYXRhYmFzZUNvbm5lY3Rpb24oVW5pcXVlSURCRGF0YWJhc2UmIGRhdGFiYXNlLCBTZXJ2ZXJP
cGVuREJSZXF1ZXN0JiByZXF1ZXN0KQogICAgIDogbV9kYXRhYmFzZShkYXRhYmFzZSkKLSAgICAs
IG1fc2VydmVyKGRhdGFiYXNlLnNlcnZlcigpKQorICAgICwgbV9tYW5hZ2VyKGRhdGFiYXNlLm1h
bmFnZXIoKSkKICAgICAsIG1fY29ubmVjdGlvblRvQ2xpZW50KHJlcXVlc3QuY29ubmVjdGlvbigp
KQogICAgICwgbV9vcGVuUmVxdWVzdElkZW50aWZpZXIocmVxdWVzdC5yZXF1ZXN0RGF0YSgpLnJl
cXVlc3RJZGVudGlmaWVyKCkpCiB7Ci0gICAgbV9zZXJ2ZXIucmVnaXN0ZXJEYXRhYmFzZUNvbm5l
Y3Rpb24oKnRoaXMpOworICAgIGlmIChhdXRvKiBtYW5hZ2VyID0gZGF0YWJhc2UubWFuYWdlcigp
KSB7CisgICAgICAgIG1fbWFuYWdlciA9IFdlYWtQdHIgeyAqbWFuYWdlciB9OworICAgICAgICBt
X21hbmFnZXItPnJlZ2lzdGVyQ29ubmVjdGlvbigqdGhpcyk7CisgICAgfQogICAgIG1fY29ubmVj
dGlvblRvQ2xpZW50LT5yZWdpc3RlckRhdGFiYXNlQ29ubmVjdGlvbigqdGhpcyk7CiB9CiAKQEAg
LTU0LDEwICs1OCwxNiBAQCBVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb246On5VbmlxdWVJREJE
YXRhYmFzZUNvbm5lY3Rpb24oKQogewogICAgIEFTU0VSVChtX3RyYW5zYWN0aW9uTWFwLmlzRW1w
dHkoKSk7CiAKLSAgICBtX3NlcnZlci51bnJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0aW9uKCp0aGlz
KTsKKyAgICBpZiAobV9tYW5hZ2VyKQorICAgICAgICBtX21hbmFnZXItPnVucmVnaXN0ZXJDb25u
ZWN0aW9uKCp0aGlzKTsKICAgICBtX2Nvbm5lY3Rpb25Ub0NsaWVudC0+dW5yZWdpc3RlckRhdGFi
YXNlQ29ubmVjdGlvbigqdGhpcyk7CiB9CiAKK1VuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlciogVW5p
cXVlSURCRGF0YWJhc2VDb25uZWN0aW9uOjptYW5hZ2VyKCkKK3sKKyAgICByZXR1cm4gbV9tYW5h
Z2VyLmdldCgpOworfQorCiBib29sIFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbjo6aGFzTm9u
RmluaXNoZWRUcmFuc2FjdGlvbnMoKSBjb25zdAogewogICAgIHJldHVybiAhbV90cmFuc2FjdGlv
bk1hcC5pc0VtcHR5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmgK
aW5kZXggMmUxOWRmZDJkYzkxNDM0YmZjNWU3YzNhZTRiZTY2ZDhjZDg1ODgxMS4uOThmZWI1OWM3
NmJlYWViZTcwZWRkZTRiZTU1OGZjYTg3MWM5OGRjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJE
YXRhYmFzZUNvbm5lY3Rpb24uaApAQCAtMjUsNyArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAot
I2luY2x1ZGUgIklEQlNlcnZlci5oIgogI2luY2x1ZGUgIlVuaXF1ZUlEQkRhdGFiYXNlLmgiCiAj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSWRlbnRpZmllZC5oPgpAQCAt
MzYsNiArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIElEQkVycm9yOwogY2xh
c3MgSURCUmVzdWx0RGF0YTsKK2NsYXNzIFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlcjsKIAogbmFt
ZXNwYWNlIElEQlNlcnZlciB7CiAKQEAgLTUyLDExICs1MiwxMSBAQCBwdWJsaWM6CiAKICAgICBj
b25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIG9wZW5SZXF1ZXN0SWRlbnRpZmllcigpIHsgcmV0
dXJuIG1fb3BlblJlcXVlc3RJZGVudGlmaWVyOyB9CiAgICAgVW5pcXVlSURCRGF0YWJhc2UqIGRh
dGFiYXNlKCkgeyByZXR1cm4gbV9kYXRhYmFzZS5nZXQoKTsgfQotICAgIElEQlNlcnZlciogc2Vy
dmVyKCkgeyByZXR1cm4gJm1fc2VydmVyOyB9CisgICAgVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2Vy
KiBtYW5hZ2VyKCk7CiAgICAgSURCQ29ubmVjdGlvblRvQ2xpZW50JiBjb25uZWN0aW9uVG9DbGll
bnQoKSB7IHJldHVybiBtX2Nvbm5lY3Rpb25Ub0NsaWVudDsgfQogCi0gICAgdm9pZCBjb25uZWN0
aW9uUGVuZGluZ0Nsb3NlRnJvbUNsaWVudCgpOwotICAgIHZvaWQgY29ubmVjdGlvbkNsb3NlZEZy
b21DbGllbnQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbm5lY3Rpb25QZW5kaW5nQ2xv
c2VGcm9tQ2xpZW50KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb25uZWN0aW9uQ2xvc2Vk
RnJvbUNsaWVudCgpOwogCiAgICAgYm9vbCBjbG9zZVBlbmRpbmcoKSBjb25zdCB7IHJldHVybiBt
X2Nsb3NlUGVuZGluZzsgfQogCkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGZp
cmVWZXJzaW9uQ2hhbmdlRXZlbnQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0
SWRlbnRpZmllciwgdWludDY0X3QgcmVxdWVzdGVkVmVyc2lvbik7CiAgICAgVW5pcXVlSURCRGF0
YWJhc2VUcmFuc2FjdGlvbiYgY3JlYXRlVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKHVpbnQ2NF90
IG5ld1ZlcnNpb24pOwogCi0gICAgdm9pZCBlc3RhYmxpc2hUcmFuc2FjdGlvbihjb25zdCBJREJU
cmFuc2FjdGlvbkluZm8mKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVzdGFibGlzaFRyYW5z
YWN0aW9uKGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYpOwogICAgIHZvaWQgZGlkQWJvcnRUcmFu
c2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgY29uc3QgSURCRXJyb3ImKTsK
ICAgICB2b2lkIGRpZENvbW1pdFRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rp
b24mLCBjb25zdCBJREJFcnJvciYpOwogICAgIHZvaWQgZGlkQ3JlYXRlT2JqZWN0U3RvcmUoY29u
c3QgSURCUmVzdWx0RGF0YSYpOwpAQCAtNzUsOCArNzUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBk
aWRDcmVhdGVJbmRleChjb25zdCBJREJSZXN1bHREYXRhJik7CiAgICAgdm9pZCBkaWREZWxldGVJ
bmRleChjb25zdCBJREJSZXN1bHREYXRhJik7CiAgICAgdm9pZCBkaWRSZW5hbWVJbmRleChjb25z
dCBJREJSZXN1bHREYXRhJik7Ci0gICAgdm9pZCBkaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KGNv
bnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIEluZGV4ZWREQjo6
Q29ubmVjdGlvbkNsb3NlZE9uQmVoYWxmT2ZTZXJ2ZXIpOwotICAgIHZvaWQgZGlkRmluaXNoSGFu
ZGxpbmdWZXJzaW9uQ2hhbmdlKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rp
b25JZGVudGlmaWVyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZEZpcmVWZXJzaW9uQ2hh
bmdlRXZlbnQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwg
SW5kZXhlZERCOjpDb25uZWN0aW9uQ2xvc2VkT25CZWhhbGZPZlNlcnZlcik7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBkaWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2UoY29uc3QgSURCUmVz
b3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpOwogCiAgICAgdm9pZCBhYm9y
dFRyYW5zYWN0aW9uV2l0aG91dENhbGxiYWNrKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24m
KTsKIApAQCAtODgsNyArODgsNyBAQCBwcml2YXRlOgogICAgIFVuaXF1ZUlEQkRhdGFiYXNlQ29u
bmVjdGlvbihVbmlxdWVJREJEYXRhYmFzZSYsIFNlcnZlck9wZW5EQlJlcXVlc3QmKTsKIAogICAg
IFdlYWtQdHI8VW5pcXVlSURCRGF0YWJhc2U+IG1fZGF0YWJhc2U7Ci0gICAgSURCU2VydmVyJiBt
X3NlcnZlcjsKKyAgICBXZWFrUHRyPFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlcj4gbV9tYW5hZ2Vy
OwogICAgIFJlZjxJREJDb25uZWN0aW9uVG9DbGllbnQ+IG1fY29ubmVjdGlvblRvQ2xpZW50Owog
ICAgIElEQlJlc291cmNlSWRlbnRpZmllciBtX29wZW5SZXF1ZXN0SWRlbnRpZmllcjsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlE
QkRhdGFiYXNlTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1VuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwODg2YzQ4Njg0ZjIw
NTExMWY2N2UyMGU2OTJiNGI5MzFjZGQxYzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyLmgK
QEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
SURCRGF0YWJhc2VJZGVudGlmaWVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0
IENsaWVudE9yaWdpbjsKKworbmFtZXNwYWNlIElEQlNlcnZlciB7CisKK2NsYXNzIElEQkJhY2tp
bmdTdG9yZTsKK2NsYXNzIFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbjsKK2NsYXNzIFVuaXF1
ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb247CisKK2NsYXNzIFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdl
ciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXI+IHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5VbmlxdWVJ
REJEYXRhYmFzZU1hbmFnZXIoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJDb25uZWN0
aW9uKFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
dW5yZWdpc3RlckNvbm5lY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJh
bnNhY3Rpb24mKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJUcmFuc2FjdGlvbihV
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJikgPSAwOworICAgIHZpcnR1YWwgc3RkOjp1bmlx
dWVfcHRyPElEQkJhY2tpbmdTdG9yZT4gY3JlYXRlQmFja2luZ1N0b3JlKGNvbnN0IElEQkRhdGFi
YXNlSWRlbnRpZmllciYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFNwYWNlKGNvbnN0
IENsaWVudE9yaWdpbiYsIHVpbnQ2NF90IHNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIElEQlNlcnZlcgorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5j
cHAKaW5kZXggMWNjMDI4MTdhMTI0YzhkMGVkNTJmMjEzYWM4ZTUwMDZiYTZiOTZkZS4uNmUzY2Uw
NDQwNmZjYWQzM2JjYzFjOWU5ZjYxMmUyYWY0MTA2OTQxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9Vbmlx
dWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcApAQCAtMjgsNyArMjgsNiBAQAogCiAjaW5jbHVk
ZSAiSURCSXRlcmF0ZUN1cnNvckRhdGEuaCIKICNpbmNsdWRlICJJREJSZXN1bHREYXRhLmgiCi0j
aW5jbHVkZSAiSURCU2VydmVyLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlVu
aXF1ZUlEQkRhdGFiYXNlLmgiCiAKQEAgLTUwLDEyICs0OSwxNCBAQCBVbmlxdWVJREJEYXRhYmFz
ZVRyYW5zYWN0aW9uOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFi
YXNlQ29ubgogICAgIGlmIChtX3RyYW5zYWN0aW9uSW5mby5tb2RlKCkgPT0gSURCVHJhbnNhY3Rp
b25Nb2RlOjpWZXJzaW9uY2hhbmdlKQogICAgICAgICBtX29yaWdpbmFsRGF0YWJhc2VJbmZvID0g
bWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KGRhdGFiYXNlLT5pbmZvKCkpOwogCi0gICAgZGF0
YWJhc2VDb25uZWN0aW9uKCkuc2VydmVyKCktPnJlZ2lzdGVyVHJhbnNhY3Rpb24oKnRoaXMpOwor
ICAgIGlmIChhdXRvKiBtYW5hZ2VyID0gZGF0YWJhc2VDb25uZWN0aW9uKCkubWFuYWdlcigpKQor
ICAgICAgICBtYW5hZ2VyLT5yZWdpc3RlclRyYW5zYWN0aW9uKCp0aGlzKTsKIH0KIAogVW5pcXVl
SURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6flVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24oKQog
ewotICAgIGRhdGFiYXNlQ29ubmVjdGlvbigpLnNlcnZlcigpLT51bnJlZ2lzdGVyVHJhbnNhY3Rp
b24oKnRoaXMpOworICAgIGlmIChhdXRvKiBtYW5hZ2VyID0gZGF0YWJhc2VDb25uZWN0aW9uKCku
bWFuYWdlcigpKQorICAgICAgICBtYW5hZ2VyLT51bnJlZ2lzdGVyVHJhbnNhY3Rpb24oKnRoaXMp
OwogfQogCiBVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mIFVuaXF1ZUlEQkRhdGFiYXNlVHJh
bnNhY3Rpb246OmRhdGFiYXNlQ29ubmVjdGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFi
YXNlVHJhbnNhY3Rpb24uaAppbmRleCA5NTk2NjUyYWRjZGJhN2EwNDhiNjE5Zjc0ZWYxYTkyY2Vl
ZjllMGU1Li5mYmE4NWMxNzM4YjczNDJlMTI4ODAwYWViOWQxZGE0NjdlZTdhMTAxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0
YWJhc2VUcmFuc2FjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmgKQEAgLTUxLDcgKzUxLDcgQEAg
bmFtZXNwYWNlIElEQlNlcnZlciB7CiBjbGFzcyBJREJTZXJ2ZXI7CiBjbGFzcyBVbmlxdWVJREJE
YXRhYmFzZUNvbm5lY3Rpb247CiAKLWNsYXNzIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24g
OiBwdWJsaWMgUmVmQ291bnRlZDxVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uPiB7CitjbGFz
cyBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFVu
aXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24+LCBwdWJsaWMgUmVmQ291bnRlZDxVbmlxdWVJREJE
YXRhYmFzZVRyYW5zYWN0aW9uPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxVbmlxdWVJREJE
YXRhYmFzZVRyYW5zYWN0aW9uPiBjcmVhdGUoVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiwg
Y29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJik7CiAKQEAgLTU5LDI5ICs1OSwyOSBAQCBwdWJsaWM6
CiAKICAgICBVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mIGRhdGFiYXNlQ29ubmVjdGlvbigp
OwogICAgIGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYgaW5mbygpIGNvbnN0IHsgcmV0dXJuIG1f
dHJhbnNhY3Rpb25JbmZvOyB9Ci0gICAgYm9vbCBpc1ZlcnNpb25DaGFuZ2UoKSBjb25zdDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIGlzVmVyc2lvbkNoYW5nZSgpIGNvbnN0OwogICAgIGJvb2wg
aXNSZWFkT25seSgpIGNvbnN0OwogCiAgICAgSURCRGF0YWJhc2VJbmZvKiBvcmlnaW5hbERhdGFi
YXNlSW5mbygpIGNvbnN0OwogCi0gICAgdm9pZCBhYm9ydCgpOwotICAgIHZvaWQgYWJvcnRXaXRo
b3V0Q2FsbGJhY2soKTsKLSAgICB2b2lkIGNvbW1pdCh1aW50NjRfdCBwZW5kaW5nUmVxdWVzdENv
dW50KTsKLQotICAgIHZvaWQgY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVxdWVzdERhdGEm
LCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mKTsKLSAgICB2b2lkIGRlbGV0ZU9iamVjdFN0b3Jl
KGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUpOwot
ICAgIHZvaWQgcmVuYW1lT2JqZWN0U3RvcmUoY29uc3QgSURCUmVxdWVzdERhdGEmLCB1aW50NjRf
dCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSk7Ci0gICAgdm9p
ZCBjbGVhck9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgdWludDY0X3Qgb2JqZWN0
U3RvcmVJZGVudGlmaWVyKTsKLSAgICB2b2lkIGNyZWF0ZUluZGV4KGNvbnN0IElEQlJlcXVlc3RE
YXRhJiwgY29uc3QgSURCSW5kZXhJbmZvJik7Ci0gICAgdm9pZCBkZWxldGVJbmRleChjb25zdCBJ
REJSZXF1ZXN0RGF0YSYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBpbmRleE5hbWUpOwotICAgIHZvaWQgcmVuYW1lSW5kZXgoY29uc3QgSURCUmVxdWVzdERh
dGEmLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lKTsKLSAgICB2b2lkIHB1dE9yQWRkKGNvbnN0IElE
QlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5RGF0YSYsIGNvbnN0IElEQlZhbHVlJiwgSW5kZXhl
ZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUpOwotICAgIHZvaWQgZ2V0UmVjb3JkKGNvbnN0
IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCR2V0UmVjb3JkRGF0YSYpOwotICAgIHZvaWQgZ2V0
QWxsUmVjb3Jkcyhjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkdldEFsbFJlY29yZHNE
YXRhJik7Ci0gICAgdm9pZCBnZXRDb3VudChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElE
QktleVJhbmdlRGF0YSYpOwotICAgIHZvaWQgZGVsZXRlUmVjb3JkKGNvbnN0IElEQlJlcXVlc3RE
YXRhJiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJik7Ci0gICAgdm9pZCBvcGVuQ3Vyc29yKGNvbnN0
IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCQ3Vyc29ySW5mbyYpOwotICAgIHZvaWQgaXRlcmF0
ZUN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkl0ZXJhdGVDdXJzb3JEYXRh
Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhYm9ydCgpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgYWJvcnRXaXRob3V0Q2FsbGJhY2soKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNv
bW1pdCh1aW50NjRfdCBwZW5kaW5nUmVxdWVzdENvdW50KTsKKworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJP
YmplY3RTdG9yZUluZm8mKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZU9iamVjdFN0
b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVuYW1lT2JqZWN0U3RvcmUoY29uc3QgSURCUmVx
dWVzdERhdGEmLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
bmV3TmFtZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhck9iamVjdFN0b3JlKGNvbnN0
IElEQlJlcXVlc3REYXRhJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGNyZWF0ZUluZGV4KGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29u
c3QgSURCSW5kZXhJbmZvJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkZWxldGVJbmRleChj
b25zdCBJREJSZXF1ZXN0RGF0YSYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBpbmRleE5hbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVuYW1lSW5k
ZXgoY29uc3QgSURCUmVxdWVzdERhdGEmLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIs
IHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHB1dE9yQWRkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3Qg
SURCS2V5RGF0YSYsIGNvbnN0IElEQlZhbHVlJiwgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3
cml0ZU1vZGUpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0UmVjb3JkKGNvbnN0IElEQlJl
cXVlc3REYXRhJiwgY29uc3QgSURCR2V0UmVjb3JkRGF0YSYpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZ2V0QWxsUmVjb3Jkcyhjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkdldEFs
bFJlY29yZHNEYXRhJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRDb3VudChjb25zdCBJ
REJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgZGVsZXRlUmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5
UmFuZ2VEYXRhJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBvcGVuQ3Vyc29yKGNvbnN0IElE
QlJlcXVlc3REYXRhJiwgY29uc3QgSURCQ3Vyc29ySW5mbyYpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgaXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkl0ZXJh
dGVDdXJzb3JEYXRhJik7CiAKICAgICB2b2lkIGRpZEFjdGl2YXRlSW5CYWNraW5nU3RvcmUoY29u
c3QgSURCRXJyb3ImKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2hhcmVkL0lEQkVycm9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zaGFyZWQvSURCRXJyb3IuaAppbmRleCBmZjE3Yzk4YTQxMTVkZTYyY2FjYzcwYWQzMjUyYmQ2
ZWRmMTFmMzk5Li5iMzBhZDM5MTc2ZjAzZmYwZDZjOTM5OGQ2YjNlZDE5Y2QyZTk5MjFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3Iu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3Iu
aApAQCAtNTIsNiArNTIsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIG1lc3NhZ2UoKSBjb25zdDsK
IAogICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gIW1fY29kZTsgfQorICAgIG9wZXJh
dG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhaXNOdWxsKCk7IH0KIAogICAgIFdFQkNPUkVfRVhQ
T1JUIElEQkVycm9yIGlzb2xhdGVkQ29weSgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5oCmluZGV4
IDAxOGNiMTNlNzVlYjY0NWRkMTE0ZTI0ZjZkYmZlYTM0Y2Y1NWIxNjQuLjAwMTc4N2E2NjU4YTQx
NzhiNmE3OTcxMjhhMDRkYTM2YjhhZmRmZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5oCkBAIC01Niw4ICs1
Niw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBJREJSZXF1ZXN0RGF0YSBpc29sYXRl
ZENvcHkoKSBjb25zdDsKIAogICAgIElEQkNvbm5lY3Rpb25JZGVudGlmaWVyIHNlcnZlckNvbm5l
Y3Rpb25JZGVudGlmaWVyKCkgY29uc3Q7Ci0gICAgSURCUmVzb3VyY2VJZGVudGlmaWVyIHJlcXVl
c3RJZGVudGlmaWVyKCkgY29uc3Q7Ci0gICAgSURCUmVzb3VyY2VJZGVudGlmaWVyIHRyYW5zYWN0
aW9uSWRlbnRpZmllcigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIElEQlJlc291cmNlSWRl
bnRpZmllciByZXF1ZXN0SWRlbnRpZmllcigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIElE
QlJlc291cmNlSWRlbnRpZmllciB0cmFuc2FjdGlvbklkZW50aWZpZXIoKSBjb25zdDsKICAgICB1
aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIoKSBjb25zdDsKICAgICB1aW50NjRfdCBpbmRl
eElkZW50aWZpZXIoKSBjb25zdDsKICAgICBJbmRleGVkREI6OkluZGV4UmVjb3JkVHlwZSBpbmRl
eFJlY29yZFR5cGUoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NoYXJlZC9JREJSZXNvdXJjZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXNvdXJjZUlkZW50aWZpZXIuaAppbmRleCBi
ZTE2MTk3ZjYzNGE1OTZjMzllNTEzMDI4NTkwNjgzNTc0NTg2ODJhLi5iZDM5NTRhMjg5NzNjZWI4
YTViZjY0OGY0YWE1MTIzZjJlZmJlZjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzb3VyY2VJZGVudGlmaWVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc291cmNlSWRlbnRpZmllci5o
CkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICBJREJSZXNvdXJjZUlkZW50aWZpZXIoY29u
c3QgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkmLCBjb25zdCBJREJSZXF1ZXN0Jik7CiAg
ICAgZXhwbGljaXQgSURCUmVzb3VyY2VJZGVudGlmaWVyKGNvbnN0IElEQlNlcnZlcjo6SURCQ29u
bmVjdGlvblRvQ2xpZW50Jik7CiAKLSAgICBzdGF0aWMgSURCUmVzb3VyY2VJZGVudGlmaWVyIGVt
cHR5VmFsdWUoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSURCUmVzb3VyY2VJZGVudGlm
aWVyIGVtcHR5VmFsdWUoKTsKICAgICBib29sIGlzRW1wdHkoKSBjb25zdAogICAgIHsKICAgICAg
ICAgcmV0dXJuICFtX3Jlc291cmNlTnVtYmVyICYmICFtX2lkYkNvbm5lY3Rpb25JZGVudGlmaWVy
OwpAQCAtNjAsNyArNjAsOCBAQCBwdWJsaWM6CiAgICAgICAgIHVpbnQ2NF90IGhhc2hDb2Rlc1sy
XSA9IHsgbV9pZGJDb25uZWN0aW9uSWRlbnRpZmllci50b1VJbnQ2NCgpLCBtX3Jlc291cmNlTnVt
YmVyIH07CiAgICAgICAgIHJldHVybiBTdHJpbmdIYXNoZXI6Omhhc2hNZW1vcnk8c2l6ZW9mKGhh
c2hDb2Rlcyk+KGhhc2hDb2Rlcyk7CiAgICAgfQotICAgIAorCisgICAgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRo
aXMgPT0gb3RoZXIpOyB9CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IElEQlJlc291cmNlSWRl
bnRpZmllciYgb3RoZXIpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9pZGJDb25uZWN0
aW9uSWRlbnRpZmllciA9PSBvdGhlci5tX2lkYkNvbm5lY3Rpb25JZGVudGlmaWVyCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYzVm
NDRlZjA0YTcwNThiMTliMjRjODVkMTFkNjNkOTQ1NGUzZGIwYy4uYzI0OWYxNTRiM2FlNDk1NTE0
OWMzOWQ4MTNhZmRhNWE3YTM3YTVlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTU0MSwxMCArMTU0MSwxMCBAQAogCQk1MTEy
M0UyRjI3Njk0MENBMDBGOUQ0MUIgLyogTm90aWZpY2F0aW9uRGF0YS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExMjNFMkMyNzY5M0MzMjAwRjlENDFC
IC8qIE5vdGlmaWNhdGlvbkRhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk1MTE3RjMwRTI1RTYxMDIwMDAyQTlGMUUgLyogUmVtb3RlQ29tbWFu
ZExpc3RlbmVyQ29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxMTdGMzBDMjVFNjEwMUYwMDJBOUYxRSAvKiBSZW1vdGVDb21tYW5kTGlzdGVuZXJD
b2NvYS5oICovOyB9OwogCQk1MTFFQzEyODFDNTBBQUNBMDAzMkY5ODMgLyogSURCU2VyaWFsaXph
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEx
RUMxMjYxQzUwQUE1NzAwMzJGOTgzIC8qIElEQlNlcmlhbGl6YXRpb24uaCAqLzsgfTsKLQkJNTEx
RUMxMkMxQzUwQUJCRjAwMzJGOTgzIC8qIFNRTGl0ZUlEQlRyYW5zYWN0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTFFQzEyQTFDNTBBQkJBMDAz
MkY5ODMgLyogU1FMaXRlSURCVHJhbnNhY3Rpb24uaCAqLzsgfTsKKwkJNTExRUMxMkMxQzUwQUJC
RjAwMzJGOTgzIC8qIFNRTGl0ZUlEQlRyYW5zYWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTFFQzEyQTFDNTBBQkJBMDAzMkY5ODMgLyogU1FM
aXRlSURCVHJhbnNhY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk1MTFFQzEzMDFDNTBBQkY1MDAzMkY5ODMgLyogU1FMaXRlSURCQ3Vyc29y
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTFFQzEy
RTFDNTBBQkVDMDAzMkY5ODMgLyogU1FMaXRlSURCQ3Vyc29yLmggKi87IH07CiAJCTUxMjBCQkFG
MUYxQ0VDRTcwMEVGRUJGMSAvKiBDb29raWVTdG9yYWdlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMjBCQkFEMUYxQ0U3NzAwMEVGRUJG
MSAvKiBDb29raWVTdG9yYWdlT2JzZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwotCQk1MTJCREI0QjFDNDU2RkZBMDA2NDk0REYgLyogU1FMaXRl
SURCQmFja2luZ1N0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MTJCREI0OTFDNDU2RkFCMDA2NDk0REYgLyogU1FMaXRlSURCQmFja2luZ1N0b3Jl
LmggKi87IH07CisJCTUxMkJEQjRCMUM0NTZGRkEwMDY0OTRERiAvKiBTUUxpdGVJREJCYWNraW5n
U3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
MkJEQjQ5MUM0NTZGQUIwMDY0OTRERiAvKiBTUUxpdGVJREJCYWNraW5nU3RvcmUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTJERDhGNTBEOTFF
NkFGMDAwRjg5RUUgLyogTGVnYWN5V2ViQXJjaGl2ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyREQ4RUIwRDkxRTZBRjAwMEY4OUVFIC8qIExlZ2Fj
eVdlYkFyY2hpdmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk1MTJERDhGNjBEOTFFNkFGMDAwRjg5RUUgLyogQXJjaGl2ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyREQ4RUMwRDkxRTZBRjAwMEY4
OUVFIC8qIEFyY2hpdmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk1MTJERDhGODBEOTFFNkFGMDAwRjg5RUUgLyogQXJjaGl2ZVJlc291cmNlQ29s
bGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTEyREQ4RUUwRDkxRTZBRjAwMEY4OUVFIC8qIEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24uaCAq
LzsgfTsKQEAgLTE1OTAsNyArMTU5MCw3IEBACiAJCTUxNkQ3RDcyMUJCNUYwQkQwMEFGN0M3NyAv
KiBJREJDb25uZWN0aW9uVG9DbGllbnREZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE2RDdENkUxQkI1RjA2NTAwQUY3Qzc3IC8qIElEQkNv
bm5lY3Rpb25Ub0NsaWVudERlbGVnYXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE2RjdGNkQxQzMxRTM5QTAwRjExMURDIC8qIFNlcnZlck9w
ZW5EQlJlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxNkY3RjZDMUMzMUM3OUQwMEYxMTFEQyAvKiBTZXJ2ZXJPcGVuREJSZXF1ZXN0LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE3MTM4RjAx
QkVEMUQxQTAwMEQ1RjAxIC8qIEluZGV4S2V5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTcxMzhFRTFCRUQxRDE3MDAwRDVGMDEgLyogSW5kZXhLZXku
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk1MTcx
MzhGODFCRjEyOEJCMDAwRDVGMDEgLyogSW5kZXhWYWx1ZVN0b3JlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTcxMzhGNjFCRjEyMjYyMDAwRDVGMDEg
LyogSW5kZXhWYWx1ZVN0b3JlLmggKi87IH07CisJCTUxNzEzOEY4MUJGMTI4QkIwMDBENUYwMSAv
KiBJbmRleFZhbHVlU3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxNzEzOEY2MUJGMTIyNjIwMDBENUYwMSAvKiBJbmRleFZhbHVlU3RvcmUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTcxMzhG
QzFCRjNBREY0MDAwRDVGMDEgLyogSURCQ3Vyc29ySW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3MTM4RkExQkYzQURBQzAwMEQ1RjAxIC8qIElE
QkN1cnNvckluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk1MTcxMzkwNjFCRjY0REVDMDAwRDVGMDEgLyogTWVtb3J5T2JqZWN0U3RvcmVDdXJz
b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNzEz
OTA0MUJGNjRERTMwMDBENUYwMSAvKiBNZW1vcnlPYmplY3RTdG9yZUN1cnNvci5oICovOyB9Owog
CQk1MTcxMzkwODFCRjY0REVGMDAwRDVGMDEgLyogTWVtb3J5Q3Vyc29yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTcxMzkwMjFCRjY0REUzMDAwRDVG
MDEgLyogTWVtb3J5Q3Vyc29yLmggKi87IH07CkBAIC0xNjY2LDcgKzE2NjYsNyBAQAogCQk1MUI5
MTQxMDFGRDI3ODJEMDBFRTI4NTkgLyogUmVnaXN0cmF0aW9uRGF0YWJhc2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQjkxNDBDMUZEMjc4MjUwMEVF
Mjg1OSAvKiBSZWdpc3RyYXRpb25EYXRhYmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxQjkxNDExMUZEMjc4MkQwMEVFMjg1OSAvKiBSZWdp
c3RyYXRpb25TdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTFCOTE0MEIxRkQyNzgyNTAwRUUyODU5IC8qIFJlZ2lzdHJhdGlvblN0b3JlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFCQTRBQzQx
QkJCNUNEODAwREYzRDZEIC8qIElEQkRhdGFiYXNlSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCQTRBQzIxQkJCNUNCRjAwREYzRDZEIC8qIElE
QkRhdGFiYXNlSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07Ci0JCTUxQkE0QUNCMUJCQzVCRDkwMERGM0Q2RCAvKiBNZW1vcnlJREJCYWNraW5nU3Rv
cmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkE0
QUM5MUJCQzVCOUUwMERGM0Q2RCAvKiBNZW1vcnlJREJCYWNraW5nU3RvcmUuaCAqLzsgfTsKKwkJ
NTFCQTRBQ0IxQkJDNUJEOTAwREYzRDZEIC8qIE1lbW9yeUlEQkJhY2tpbmdTdG9yZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCQTRBQzkxQkJDNUI5
RTAwREYzRDZEIC8qIE1lbW9yeUlEQkJhY2tpbmdTdG9yZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxQkE0QUNDMUJCQzVCREQwMERGM0Q2RCAv
KiBJREJCYWNraW5nU3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxQkE0QUM3MUJCQzVBRDYwMERGM0Q2RCAvKiBJREJCYWNraW5nU3RvcmUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUJBOTQ3
MTIzQUMzMDUzMDA0NDQ4NDYgLyogUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkE5NDZGMjNBQzMwNTAwMDQ0
NDg0NiAvKiBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxQkNDRTMwMUY4RjE3OUUwMDZCQTBFRCAvKiBT
ZXJ2aWNlV29ya2VyVGhyZWFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTdDODcxMDFGOEVFNzJFMDBFQjgwNzYgLyogU2VydmljZVdvcmtlclRocmVh
ZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0x
NjgyLDcgKzE2ODIsNyBAQAogCQk1MUUwQkFCQjBEQTU1NDcxMDBBOUU0MTcgLyogU3RvcmFnZUV2
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUw
QkFCOTBEQTU1NDcxMDBBOUU0MTcgLyogU3RvcmFnZUV2ZW50LmggKi87IH07CiAJCTUxRTBCQUVC
MERBNTVENEEwMEE5RTQxNyAvKiBKU1N0b3JhZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFMEJBRTkwREE1NUQ0QTAwQTlFNDE3IC8qIEpT
U3RvcmFnZUV2ZW50LmggKi87IH07CiAJCTUxRTBCQjM4MERBNUFDQjYwMEE5RTQxNyAvKiBTdG9y
YWdlTWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MUUwQkIzNjBEQTVBQ0I2MDBBOUU0MTcgLyogU3RvcmFnZU1hcC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTUxRTFCQUMzMUJEODA2NEUwMDU1RDgx
RiAvKiBNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFMUJBQzExQkQ4MDY0NzAwNTVEODFGIC8qIE1l
bW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uLmggKi87IH07CisJCTUxRTFCQUMzMUJEODA2NEUw
MDU1RDgxRiAvKiBNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFMUJBQzExQkQ4MDY0NzAwNTVEODFG
IC8qIE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFFMjY5MzcxREQzQkQ5QjAwNkI2QTU4IC8q
IElEQkl0ZXJhdGVDdXJzb3JEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MUUyNjkzNTFERDNCRDkxMDA2QjZBNTggLyogSURCSXRlcmF0ZUN1cnNv
ckRhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk1MUUzOTkwMDFENkU0NzUwMDA5Qzg4MzEgLyogR2FtZUNvbnRyb2xsZXJHYW1lcGFkLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUzOThGQzFENkU0
NzRCMDA5Qzg4MzEgLyogR2FtZUNvbnRyb2xsZXJHYW1lcGFkLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFFMzk5MDIxRDZFNDc1MDAwOUM4ODMx
IC8qIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUzOThGRTFENkU0NzRCMDA5Qzg4MzEgLyogR2Ft
ZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTY5Miw3ICsxNjkyLDcgQEAKIAkJNTFFQ0MzRjgyMDA1
ODdCRjAwNDgzRUFFIC8qIE1lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUVDQzNGMTIwMDU4N0I1MDA0ODNF
QUUgLyogTWVzc2FnZVBvcnRDaGFubmVsUmVnaXN0cnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUVDQzNGRDIwMDU5MzBEMDA0ODNFQUUgLyog
TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxRUNDM0ZCMjAwNTkzMDEwMDQ4M0VBRSAvKiBNZXNzYWdlUG9y
dENoYW5uZWxQcm92aWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTUxRUU3QjM4MUFBNTBCMDUwMEY5MkIyMSAvKiBSZXNvdXJjZUxvYWRJbmZv
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUVFN0Iz
NzFBQTUwQjA1MDBGOTJCMjEgLyogUmVzb3VyY2VMb2FkSW5mby5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTUxRUVBQTc0MUJFRkZBQjEwMDIxODAw
OCAvKiBJbmRleFZhbHVlRW50cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxRUVBQTcyMUJFRkZBNzkwMDIxODAwOCAvKiBJbmRleFZhbHVlRW50cnku
aCAqLzsgfTsKKwkJNTFFRUFBNzQxQkVGRkFCMTAwMjE4MDA4IC8qIEluZGV4VmFsdWVFbnRyeS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFRUFBNzIx
QkVGRkE3OTAwMjE4MDA4IC8qIEluZGV4VmFsdWVFbnRyeS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxRjE3NEZFMUYzNTg5OTIwMEM3NDk1MCAv
KiBXb3JrZXJUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MUYxNzRGQzFGMzU4OTg4MDBDNzQ5NTAgLyogV29ya2VyVHlwZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxRjE3NTAzMUYzNThCM0Iw
MEM3NDk1MCAvKiBKU1NlcnZpY2VXb3JrZXJVcGRhdGVWaWFDYWNoZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGMTc1MDExRjM1OEIzNjAwQzc0OTUw
IC8qIEpTU2VydmljZVdvcmtlclVwZGF0ZVZpYUNhY2hlLmggKi87IH07CiAJCTUxRjE3NTA2MUYz
NThCRjcwMEM3NDk1MCAvKiBKU1dvcmtlclR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjE3NTA1MUYzNThCREUwMEM3NDk1MCAvKiBKU1dvcmtl
clR5cGUuaCAqLzsgfTsKQEAgLTI5OTIsNiArMjk5Miw3IEBACiAJCTkzQjJEODE2MEY5OTIwRDIw
MDZBRTZCMiAvKiBTdWRkZW5UZXJtaW5hdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCMkQ4MTUwRjk5MjBEMjAwNkFFNkIyIC8qIFN1ZGRlblRl
cm1pbmF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJOTNCMzhFQzMyNTgyMURCNDAwMTk4RTYzIC8qIFdlYlNwZWVjaFJlY29nbml6ZXJUYXNr
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0IzOEVC
QTI1ODIxOTNCMDAxOThFNjMgLyogV2ViU3BlZWNoUmVjb2duaXplclRhc2suaCAqLzsgfTsKIAkJ
OTNCMzhFQzQyNTgyMURCNzAwMTk4RTYzIC8qIFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jay5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCMzhFQkIy
NTgyMTkzRDAwMTk4RTYzIC8qIFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jay5oICovOyB9Owor
CQk5M0I2MzFFMjI3QUJBMUU2MDA0NDNBNDQgLyogVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0I2MzFFMDI3
QUJBMUUyMDA0NDNBNDQgLyogVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNCNkEwRTYwQjBCQ0E1QzAw
RjUwMjdBIC8qIENvbnRleHRNZW51LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5M0I2QTBFNTBCMEJDQTVDMDBGNTAyN0EgLyogQ29udGV4dE1lbnUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0I3MEQ2
NDA5RUIwQzdDMDA5RDg0NjggLyogSlNET01CaW5kaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0I3MEQ0ODA5RUIwQzdDMDA5RDg0NjggLyogSlNE
T01CaW5kaW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJOTNCNzBENkEwOUVCMEM3QzAwOUQ4NDY4IC8qIEpTRXZlbnRMaXN0ZW5lci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCNzBENEUwOUVCMEM3
QzAwOUQ4NDY4IC8qIEpTRXZlbnRMaXN0ZW5lci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMjgyMSw2ICsxMjgyMiw3IEBACiAJCTkzQjM4RUJB
MjU4MjE5M0IwMDE5OEU2MyAvKiBXZWJTcGVlY2hSZWNvZ25pemVyVGFzay5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTcGVlY2hSZWNvZ25pemVyVGFzay5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5M0IzOEVCQjI1ODIxOTNEMDAxOThFNjMgLyogV2ViU3Bl
ZWNoUmVjb2duaXplclRhc2tNb2NrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5M0IzOEVCQzI1ODIxOTNFMDAxOThFNjMgLyogV2ViU3BlZWNoUmVjb2duaXplclRhc2su
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJTcGVlY2hSZWNv
Z25pemVyVGFzay5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNCNjMxRTAyN0FC
QTFFMjAwNDQzQTQ0IC8qIFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCNkEwRTUwQjBCQ0E1QzAwRjUwMjdBIC8qIENvbnRleHRN
ZW51LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb250ZXh0TWVudS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0I3MEQ0ODA5RUIwQzdDMDA5RDg0NjggLyog
SlNET01CaW5kaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RPTUJp
bmRpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCNzBENEQwOUVCMEM3QzAw
OUQ4NDY4IC8qIEpTRXZlbnRMaXN0ZW5lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNFdmVudExpc3RlbmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTIyMTM2LDYgKzIyMTM4LDcgQEAKIAkJCQk1MTg4NjRERjFCQkFGMzBGMDBFNTQwQzkg
LyogVW5pcXVlSURCRGF0YWJhc2UuaCAqLywKIAkJCQk1MTk4RjdBMjFCQkRBQTI5MDBFMkNDNUYg
LyogVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmNwcCAqLywKIAkJCQk1MTk4RjdBMzFCQkRB
QTI5MDBFMkNDNUYgLyogVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmggKi8sCisJCQkJOTNC
NjMxRTAyN0FCQTFFMjAwNDQzQTQ0IC8qIFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlci5oICovLAog
CQkJCTUxOThGN0E2MUJCREQzODEwMEUyQ0M1RiAvKiBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0
aW9uLmNwcCAqLywKIAkJCQk1MTk4RjdBNzFCQkREMzgxMDBFMkNDNUYgLyogVW5pcXVlSURCRGF0
YWJhc2VUcmFuc2FjdGlvbi5oICovLAogCQkJKTsKQEAgLTM3NzUxLDYgKzM3NzU0LDcgQEAKIAkJ
CQlBODYzRTIwMTEzNDM0MTIwMDAyNzQ5MjYgLyogVW5pY29kZUJpZGkuaCBpbiBIZWFkZXJzICov
LAogCQkJCTUxODg2NEUxMUJCQUY1NzQwMEU1NDBDOSAvKiBVbmlxdWVJREJEYXRhYmFzZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTE5OEY3QTUxQkJEQjc5MzAwRTJDQzVGIC8qIFVuaXF1ZUlEQkRh
dGFiYXNlQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTNCNjMxRTIyN0FCQTFFNjAw
NDQzQTQ0IC8qIFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTE5OEY3QTkxQkJERDM4NTAwRTJDQzVGIC8qIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24u
aCBpbiBIZWFkZXJzICovLAogCQkJCUU0QUZDRkE1MERBRjI5QTMwMEY1RjU1QyAvKiBVbml0QmV6
aWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMThDQzBBNDI1ODBFRkIxMDAzRDc1RkIgLyogVW5p
dmVyc2FsQWNjZXNzWm9vbS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y3BwCmluZGV4IGEzNGY3OWJkZTNlMDgxNjk2ZDczYTU1ZmJmNTkwNThiZjZkOGYzNzkuLjU3M2Zk
OGNmMmI2Y2ZmYzE1NDFjODRiMjJiZDBiMjRhMWNmYmQ1ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwCkBAIC01MiwxMyArNTIsMTMgQEAKICNpbmNsdWRlICJOZXR3b3JrU29ja2V0Q2hh
bm5lbE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1NvY2tldFN0cmVhbS5oIgogI2luY2x1
ZGUgIk5ldHdvcmtTb2NrZXRTdHJlYW1NZXNzYWdlcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtTdG9y
YWdlTWFuYWdlci5oIgogI2luY2x1ZGUgIlBpbmdMb2FkLmgiCiAjaW5jbHVkZSAiUHJlY29ubmVj
dFRhc2suaCIKICNpbmNsdWRlICJSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXJQcm94eS5oIgog
I2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldl
YkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYkVycm9ycy5oIgotI2luY2x1ZGUg
IldlYklEQlNlcnZlci5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1
ZGUgIldlYlByb2Nlc3NQb29sTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuaCIKQEAgLTM5MCw4ICszOTAsMTIgQEAgYm9vbCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmUKIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6dXBkYXRlUXVvdGFC
YXNlZE9uU3BhY2VVc2FnZUZvclRlc3RpbmcoY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4pCiB7
Ci0gICAgYXV0byBzdG9yYWdlUXVvdGFNYW5hZ2VyID0gbV9uZXR3b3JrUHJvY2Vzcy0+c3RvcmFn
ZVF1b3RhTWFuYWdlcihzZXNzaW9uSUQoKSwgb3JpZ2luKTsKLSAgICBzdG9yYWdlUXVvdGFNYW5h
Z2VyLT5yZXNldFF1b3RhVXBkYXRlZEJhc2VkT25Vc2FnZUZvclRlc3RpbmcoKTsKKyAgICBhdXRv
KiBzZXNzaW9uID0gbV9uZXR3b3JrUHJvY2Vzcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKCkp
OworICAgIGlmICghc2Vzc2lvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGF1dG8qIHN0
b3JhZ2VNYW5hZ2VyID0gc2Vzc2lvbi0+c3RvcmFnZU1hbmFnZXIoKSkKKyAgICAgICAgc3RvcmFn
ZU1hbmFnZXItPnJlc2V0UXVvdGFVcGRhdGVkQmFzZWRPblVzYWdlRm9yVGVzdGluZyhvcmlnaW4p
OwogfQogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRDbG9zZShJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCkBAIC05ODMsOCArOTg3LDEwIEBAIHZvaWQgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzRm9ySW5k
ZXhlZERCKGNvbnN0CiAgICAgICAgIGZvciAoYXV0byYgZmlsZSA6IGZpbGVSZWZlcmVuY2VzKQog
ICAgICAgICAgICAgZmlsZS0+cmV2b2tlRmlsZUFjY2VzcygpOwogCi0gICAgICAgIGlmIChhdXRv
KiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oKSkKLSAgICAgICAgICAgIHNlc3Npb24tPmVuc3Vy
ZVdlYklEQlNlcnZlcigpLnJlZ2lzdGVyVGVtcG9yYXJ5QmxvYkZpbGVQYXRocyhtX2Nvbm5lY3Rp
b24sIGZpbGVQYXRocyk7CisgICAgICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Np
b24oKSkgeworICAgICAgICAgICAgaWYgKGF1dG8qIHN0b3JhZ2VNYW5hZ2VyID0gc2Vzc2lvbi0+
c3RvcmFnZU1hbmFnZXIoKSkKKyAgICAgICAgICAgICAgICBzdG9yYWdlTWFuYWdlci0+cmVnaXN0
ZXJUZW1wb3JhcnlCbG9iRmlsZVBhdGhzKG1fY29ubmVjdGlvbiwgZmlsZVBhdGhzKTsKKyAgICAg
ICAgfQogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGZpbGVQYXRocykpOwogICAg
IH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcAppbmRleCA3Yzc5ZTJhMjA5NzZhMTM5YzdmNjY3ZjExM2M0ODk0NmRlZGQ1NjQxLi4xMTE4
MWUyNzhiODI3ZTdjNjAxNmQwMTBiZTJhYjI2NjMxZjRmZTQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMjY0LDggKzI2NCw2IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpCiAgICAgLy8g
TWFrZSBzdXJlIHdlIGZsdXNoIGFsbCBjb29raWVzIHRvIGRpc2sgYmVmb3JlIGV4aXRpbmcuCiAg
ICAgZm9yRWFjaE5ldHdvcmtTZXNzaW9uKFsmXSAoYXV0byYgc2Vzc2lvbikgewogICAgICAgICBw
bGF0Zm9ybUZsdXNoQ29va2llcyhzZXNzaW9uLnNlc3Npb25JRCgpLCBbY2FsbGJhY2tBZ2dyZWdh
dG9yXSB7IH0pOwotICAgICAgICAvLyBNYWtlIHN1cmUgcmVmZXJlbmNlIHRvIE5ldHdvcmtQcm9j
ZXNzIGluIHNwYWNlUmVxdWVzdGVyIGlzIHJlbW92ZWQuCi0gICAgICAgIHNlc3Npb24uY2xvc2VJ
REJTZXJ2ZXIoW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKICAgICB9KTsKIH0KIApAQCAtMzgy
LDcgKzM4MCw2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKFByb2Nlc3NJZGVudGlmaWVyIGlkZW50CiAgICAgY29ubmVjdGlvbi5zZXRP
bkxpbmVTdGF0ZShOZXR3b3JrU3RhdGVOb3RpZmllcjo6c2luZ2xldG9uKCkub25MaW5lKCkpOwog
CiAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0g
ICAgICAgIHNlc3Npb24tPmVuc3VyZVdlYklEQlNlcnZlcigpLmFkZENvbm5lY3Rpb24oY29ubmVj
dGlvbi5jb25uZWN0aW9uKCksIGlkZW50aWZpZXIpOwogICAgICAgICBpZiAoYXV0byogbWFuYWdl
ciA9IHNlc3Npb24tPnN0b3JhZ2VNYW5hZ2VyKCkpCiAgICAgICAgICAgICBtYW5hZ2VyLT5zdGFy
dFJlY2VpdmluZ01lc3NhZ2VGcm9tQ29ubmVjdGlvbihjb25uZWN0aW9uLmNvbm5lY3Rpb24oKSk7
CiAgICAgfQpAQCAtNDA2LDggKzQwMyw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmFkZFdlYnNp
dGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzCiAgICAg
YWRkU2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXIoc2Vzc2lvbklELCBwYXJhbWV0ZXJzLnBlck9y
aWdpblN0b3JhZ2VRdW90YSwgcGFyYW1ldGVycy5wZXJUaGlyZFBhcnR5T3JpZ2luU3RvcmFnZVF1
b3RhLCBwYXJhbWV0ZXJzLmNhY2hlU3RvcmFnZURpcmVjdG9yeSwgcGFyYW1ldGVycy5jYWNoZVN0
b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogCiAgICAgaWYgKGF1dG8qIHNlc3Npb24g
PSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIHNlc3Npb24tPmFkZFN0b3Jh
Z2VNYW5hZ2VyU2Vzc2lvbihwYXJhbWV0ZXJzLmdlbmVyYWxTdG9yYWdlRGlyZWN0b3J5LCBwYXJh
bWV0ZXJzLmdlbmVyYWxTdG9yYWdlRGlyZWN0b3J5SGFuZGxlLCBwYXJhbWV0ZXJzLmxvY2FsU3Rv
cmFnZURpcmVjdG9yeSwgcGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25I
YW5kbGUpOwotICAgICAgICBzZXNzaW9uLT5hZGRJbmRleGVkRGF0YWJhc2VTZXNzaW9uKHBhcmFt
ZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFz
ZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CisgICAgICAgIHNlc3Npb24tPmFkZFN0b3JhZ2VN
YW5hZ2VyU2Vzc2lvbihwYXJhbWV0ZXJzLmdlbmVyYWxTdG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0
ZXJzLmdlbmVyYWxTdG9yYWdlRGlyZWN0b3J5SGFuZGxlLCBwYXJhbWV0ZXJzLmxvY2FsU3RvcmFn
ZURpcmVjdG9yeSwgcGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5k
bGUsIHBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmluZGV4
ZWREYXRhYmFzZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSwgcGFyYW1ldGVycy5jYWNoZVN0b3Jh
Z2VEaXJlY3RvcnksIHBhcmFtZXRlcnMucGVyT3JpZ2luU3RvcmFnZVF1b3RhLCBwYXJhbWV0ZXJz
LnBlclRoaXJkUGFydHlPcmlnaW5TdG9yYWdlUXVvdGEpOwogI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKICAgICAgICAgc2Vzc2lvbi0+YWRkU2VydmljZVdvcmtlclNlc3Npb24ocGFyYW1ldGVy
cy5zZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkLCBXVEZNb3ZlKHBh
cmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSksIHBhcmFtZXRlcnMu
c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAjZW5k
aWYKQEAgLTE0NTIsMTMgKzE0NDgsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpmZXRjaFdlYnNp
dGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdAogICAgICAg
ICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fd2Vic2l0ZURhdGEuaG9zdE5hbWVzV2l0aEhTVFNDYWNo
ZSA9IGhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUoc2Vzc2lvbklEKTsKICNlbmRpZgogCi0gICAgaWYg
KHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRh
YmFzZXMpICYmIHNlc3Npb24gJiYgc2Vzc2lvbi0+aGFzSURCRGF0YWJhc2VQYXRoKCkpIHsKLSAg
ICAgICAgc2Vzc2lvbi0+ZW5zdXJlV2ViSURCU2VydmVyKCkuZ2V0T3JpZ2lucyhbY2FsbGJhY2tB
Z2dyZWdhdG9yXShhdXRvJiYgb3JpZ2lucykgewotICAgICAgICAgICAgd2hpbGUgKCFvcmlnaW5z
LmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fd2Vic2l0
ZURhdGEuZW50cmllcy5hcHBlbmQoeyBvcmlnaW5zLnRha2VBbnkoKSwgV2Vic2l0ZURhdGFUeXBl
OjpJbmRleGVkREJEYXRhYmFzZXMsIDAgfSk7Ci0gICAgICAgIH0pOwotICAgIH0KLQogI2lmIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhX
ZWJzaXRlRGF0YVR5cGU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zKSAmJiBzZXNzaW9uICYm
IHNlc3Npb24tPmhhc1NlcnZpY2VXb3JrZXJEYXRhYmFzZVBhdGgoKSkgewogICAgICAgICBzZXNz
aW9uLT5lbnN1cmVTV1NlcnZlcigpLmdldE9yaWdpbnNXaXRoUmVnaXN0cmF0aW9ucyhbY2FsbGJh
Y2tBZ2dyZWdhdG9yXShjb25zdCBIYXNoU2V0PFNlY3VyaXR5T3JpZ2luRGF0YT4mIHNlY3VyaXR5
T3JpZ2lucykgbXV0YWJsZSB7CkBAIC0xNTI1LDkgKzE1MTQsNiBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpkZWxldGVXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNl
dDxXZWJzaQogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlw
ZTo6RE9NQ2FjaGUpICYmIHNlc3Npb24pCiAgICAgICAgIENhY2hlU3RvcmFnZTo6RW5naW5lOjpj
bGVhckFsbENhY2hlcygqc2Vzc2lvbiwgW2NsZWFyVGFza3NIYW5kbGVyXSB7IH0pOwogCi0gICAg
aWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJE
YXRhYmFzZXMpICYmICFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSAmJiBzZXNzaW9uKQotICAgICAg
ICBzZXNzaW9uLT5lbnN1cmVXZWJJREJTZXJ2ZXIoKS5jbG9zZUFuZERlbGV0ZURhdGFiYXNlc01v
ZGlmaWVkU2luY2UobW9kaWZpZWRTaW5jZSwgW2NsZWFyVGFza3NIYW5kbGVyXSB7IH0pOwotCiAj
aWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGJvb2wgY2xlYXJTZXJ2aWNlV29ya2VycyA9
IHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSkgfHwg
d2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25zKTsKICAgICBpZiAoY2xlYXJTZXJ2aWNlV29ya2VycyAmJiAhc2Vzc2lvbklE
LmlzRXBoZW1lcmFsKCkgJiYgc2Vzc2lvbikKQEAgLTE2MjAsOSArMTYwNiw2IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIE9wdGlvCiAgICAgICAgICAgICBDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6Y2xlYXJD
YWNoZXNGb3JPcmlnaW4oKnNlc3Npb24sIFNlY3VyaXR5T3JpZ2luRGF0YSB7IG9yaWdpbkRhdGEg
fSwgW2NsZWFyVGFza3NIYW5kbGVyXSB7IH0pOwogICAgIH0KIAotICAgIGlmICh3ZWJzaXRlRGF0
YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKSAmJiAh
c2Vzc2lvbklELmlzRXBoZW1lcmFsKCkgJiYgc2Vzc2lvbikKLSAgICAgICAgc2Vzc2lvbi0+ZW5z
dXJlV2ViSURCU2VydmVyKCkuY2xvc2VBbmREZWxldGVEYXRhYmFzZXNGb3JPcmlnaW5zKG9yaWdp
bkRhdGFzLCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7Ci0KICNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCiAgICAgYm9vbCBjbGVhclNlcnZpY2VXb3JrZXJzID0gd2Vic2l0ZURhdGFUeXBlcy5j
b250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkRPTUNhY2hlKSB8fCB3ZWJzaXRlRGF0YVR5cGVzLmNv
bnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMpOwogICAg
IGlmIChjbGVhclNlcnZpY2VXb3JrZXJzICYmICFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSAmJiBz
ZXNzaW9uKSB7CkBAIC0xODExLDE3ICsxNzk0LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVs
ZXRlQW5kUmVzdHJpY3RXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhQQUw6OlNlc3MK
ICAgICAgICAgICAgIH0KICAgICAgICAgfSk7CiAgICAgfQotCi0gICAgaWYgKHdlYnNpdGVEYXRh
VHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpICYmIHNl
c3Npb24gJiYgc2Vzc2lvbi0+aGFzSURCRGF0YWJhc2VQYXRoKCkpIHsKLSAgICAgICAgc2Vzc2lv
bi0+ZW5zdXJlV2ViSURCU2VydmVyKCkuZ2V0T3JpZ2lucyhbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IFJlZiB7ICp0aGlzIH0sIHNlc3Npb25JRCwgY2FsbGJhY2tBZ2dyZWdhdG9yLCBkb21haW5zVG9E
ZWxldGVBbGxOb25Db29raWVXZWJzaXRlRGF0YUZvcl0oYXV0byYmIG9yaWdpbnMpIHsKLSAgICAg
ICAgICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOwotICAgICAg
ICAgICAgaWYgKCFzZXNzaW9uIHx8ICFzZXNzaW9uLT53ZWJJREJTZXJ2ZXIoKSkKLSAgICAgICAg
ICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIGF1dG8gb3JpZ2luc1RvRGVsZXRlID0gZmls
dGVyRm9yUmVnaXN0cmFibGVEb21haW5zKG9yaWdpbnMsIGRvbWFpbnNUb0RlbGV0ZUFsbE5vbkNv
b2tpZVdlYnNpdGVEYXRhRm9yLCBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fZG9tYWlucyk7Ci0gICAg
ICAgICAgICBzZXNzaW9uLT53ZWJJREJTZXJ2ZXIoKS0+Y2xvc2VBbmREZWxldGVEYXRhYmFzZXNG
b3JPcmlnaW5zKG9yaWdpbnNUb0RlbGV0ZSwgW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKLSAg
ICAgICAgfSk7Ci0gICAgfQogICAgIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBi
b29sIGNsZWFyU2VydmljZVdvcmtlcnMgPSB3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNp
dGVEYXRhVHlwZTo6RE9NQ2FjaGUpIHx8IHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0
ZURhdGFUeXBlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucyk7CkBAIC0xOTU4LDEzICsxOTMw
LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVnaXN0cmFibGVEb21haW5zV2l0aFdlYnNpdGVE
YXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwKICAgICAgICAgfSk7CiAgICAgfQogICAgIAot
ICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhl
ZERCRGF0YWJhc2VzKSAmJiBzZXNzaW9uICYmIHNlc3Npb24tPmhhc0lEQkRhdGFiYXNlUGF0aCgp
KSB7Ci0gICAgICAgIHNlc3Npb24tPmVuc3VyZVdlYklEQlNlcnZlcigpLmdldE9yaWdpbnMoW2Nh
bGxiYWNrQWdncmVnYXRvcl0oYXV0byYmIG9yaWdpbnMpIHsKLSAgICAgICAgICAgIHdoaWxlICgh
b3JpZ2lucy5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5t
X3dlYnNpdGVEYXRhLmVudHJpZXMuYXBwZW5kKHsgb3JpZ2lucy50YWtlQW55KCksIFdlYnNpdGVE
YXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzLCAwIH0pOwotICAgICAgICB9KTsKLSAgICB9Ci0g
ICAgCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVz
LmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMpICYm
IHNlc3Npb24gJiYgc2Vzc2lvbi0+aGFzU2VydmljZVdvcmtlckRhdGFiYXNlUGF0aCgpKSB7CiAg
ICAgICAgIHNlc3Npb24tPmVuc3VyZVNXU2VydmVyKCkuZ2V0T3JpZ2luc1dpdGhSZWdpc3RyYXRp
b25zKFtjYWxsYmFja0FnZ3JlZ2F0b3JdKGNvbnN0IEhhc2hTZXQ8U2VjdXJpdHlPcmlnaW5EYXRh
PiYgc2VjdXJpdHlPcmlnaW5zKSBtdXRhYmxlIHsKQEAgLTIxMjksNDMgKzIwOTQsMTAgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6cHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseUZvclRlc3RpbmdT
eW5jKENvbXBsZXRpb25IYW5kbGUKICAgICBwcmVwYXJlVG9TdXNwZW5kKHRydWUsIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6c3VzcGVuZElE
QlNlcnZlcnMoYm9vbCBpc1N1c3BlbnNpb25JbW1pbmVudCkKLXsKLSAgICBtX3Nob3VsZFN1c3Bl
bmRJREJTZXJ2ZXJzID0gdHJ1ZTsKLSAgICArK21fc3VzcGVuc2lvbklkZW50aWZpZXI7Ci0KLSAg
ICBib29sIGFsbFN1c3BlbmRlZCA9IHRydWU7Ci0gICAgYXV0byBjb25kaXRpb24gPSBpc1N1c3Bl
bnNpb25JbW1pbmVudCA/IFdlYklEQlNlcnZlcjo6U3VzcGVuc2lvbkNvbmRpdGlvbjo6QWx3YXlz
IDogV2ViSURCU2VydmVyOjpTdXNwZW5zaW9uQ29uZGl0aW9uOjpJZklkbGU7Ci0gICAgZm9yRWFj
aE5ldHdvcmtTZXNzaW9uKFsmXShhdXRvJiBzZXNzaW9uKSB7Ci0gICAgICAgIGlmIChhdXRvKiBz
ZXJ2ZXIgPSBzZXNzaW9uLndlYklEQlNlcnZlcigpKQotICAgICAgICAgICAgYWxsU3VzcGVuZGVk
ICY9IHNlcnZlci0+c3VzcGVuZChjb25kaXRpb24pOwotICAgIH0pOwotCi0gICAgaWYgKGFsbFN1
c3BlbmRlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNo
QWZ0ZXIoNV9zLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgc3VzcGVuc2lv
bklkZW50aWZpZXIgPSBtX3N1c3BlbnNpb25JZGVudGlmaWVyXSB7Ci0gICAgICAgIGlmICghd2Vh
a1RoaXMpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKCFtX3Nob3VsZFN1c3Bl
bmRJREJTZXJ2ZXJzIHx8IHN1c3BlbnNpb25JZGVudGlmaWVyICE9IG1fc3VzcGVuc2lvbklkZW50
aWZpZXIpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgZm9yRWFjaE5ldHdvcmtTZXNz
aW9uKFtdKGF1dG8mIHNlc3Npb24pIHsKLSAgICAgICAgICAgIGlmIChhdXRvKiBzZXJ2ZXIgPSBz
ZXNzaW9uLndlYklEQlNlcnZlcigpKQotICAgICAgICAgICAgICAgIHNlcnZlci0+c3VzcGVuZChX
ZWJJREJTZXJ2ZXI6OlN1c3BlbnNpb25Db25kaXRpb246OkFsd2F5cyk7Ci0gICAgICAgIH0pOwot
ICAgIH0pOwotfQotCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5kKGJvb2wg
aXNTdXNwZW5zaW9uSW1taW5lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0g
TmV0d29ya1Byb2Nlc3M6OnByZXBhcmVUb1N1c3BlbmQoKSwgaXNTdXNwZW5zaW9uSW1taW5lbnQ9
JWQiLCB0aGlzLCBpc1N1c3BlbnNpb25JbW1pbmVudCk7CiAKLSNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQotICAgIHN1c3BlbmRJREJTZXJ2ZXJzKGlzU3VzcGVuc2lvbkltbWluZW50KTsKLSNlbmRp
ZgotCiAgICAgbG93TWVtb3J5SGFuZGxlcihDcml0aWNhbDo6WWVzKTsKIAogICAgIFJlZlB0cjxD
YWxsYmFja0FnZ3JlZ2F0b3I+IGNhbGxiYWNrQWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRv
cjo6Y3JlYXRlKFt0aGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXSgpIG11dGFibGUgewpAQCAtMjIyMywxOCArMjE1NSwxMCBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpyZXN1bWUoKQogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICAgICAgaWYg
KGF1dG8qIHN3U2VydmVyID0gc2Vzc2lvbi5zd1NlcnZlcigpKQogICAgICAgICAgICAgc3dTZXJ2
ZXItPmVuZFN1c3BlbnNpb24oKTsKLSNlbmRpZgotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0g
ICAgICAgIGlmIChhdXRvKiBzZXJ2ZXIgPSBzZXNzaW9uLndlYklEQlNlcnZlcigpKQotICAgICAg
ICAgICAgc2VydmVyLT5yZXN1bWUoKTsKICNlbmRpZgogICAgICAgICBpZiAoYXV0byogbWFuYWdl
ciA9IHNlc3Npb24uc3RvcmFnZU1hbmFnZXIoKSkKICAgICAgICAgICAgIG1hbmFnZXItPnJlc3Vt
ZSgpOwogICAgIH0pOwotCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBtX3Nob3VsZFN1
c3BlbmRJREJTZXJ2ZXJzID0gZmFsc2U7Ci0jZW5kaWYKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vz
czo6cHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKQEAgLTIyODEsMTIgKzIyMDUs
MTIgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c3luY0xvY2FsU3RvcmFnZShDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmQKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVz
ZXRRdW90YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXNzaW9u
U3RvcmFnZVF1b3RhTWFuYWdlcnNMb2NrIH07Ci0gICAgaWYgKGF1dG8qIHNlc3Npb25TdG9yYWdl
UXVvdGFNYW5hZ2VyID0gbV9zZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlcnMuZ2V0KHNlc3Npb25J
RCkpIHsKLSAgICAgICAgZm9yIChhdXRvIHN0b3JhZ2VRdW90YU1hbmFnZXIgOiBzZXNzaW9uU3Rv
cmFnZVF1b3RhTWFuYWdlci0+ZXhpc3RpbmdTdG9yYWdlUXVvdGFNYW5hZ2VycygpKQotICAgICAg
ICAgICAgc3RvcmFnZVF1b3RhTWFuYWdlci0+cmVzZXRRdW90YUZvclRlc3RpbmcoKTsKLSAgICB9
Ci0gICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nl
c3Npb24oc2Vzc2lvbklEKTsKKyAgICBpZiAoIXNlc3Npb24pCisgICAgICAgIHJldHVybiBjb21w
bGV0aW9uSGFuZGxlcigpOworCisgICAgaWYgKGF1dG8qIHN0b3JhZ2VNYW5hZ2VyID0gc2Vzc2lv
bi0+c3RvcmFnZU1hbmFnZXIoKSkKKyAgICAgICAgc3RvcmFnZU1hbmFnZXItPnJlc2V0UXVvdGFG
b3JUZXN0aW5nKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6Y2xlYXJTdG9yYWdlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMjI5OCw2ICsyMjIyLDE2
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNsZWFyU3RvcmFnZShQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7
CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmRpZEluY3JlYXNlUXVvdGEoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbiwgUXVvdGFJbmNyZWFzZVJl
cXVlc3RJZGVudGlmaWVyIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IG5ld1F1
b3RhKQoreworICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOwor
ICAgIGlmICghc2Vzc2lvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGF1dG8qIG1hbmFn
ZXIgPSBzZXNzaW9uLT5zdG9yYWdlTWFuYWdlcigpKQorICAgICAgICBtYW5hZ2VyLT5kaWRJbmNy
ZWFzZVF1b3RhKG9yaWdpbiwgaWRlbnRpZmllciwgbmV3UXVvdGEpOworfQorCiB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpyZW5hbWVPcmlnaW5JbldlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgVVJMJiBvbGROYW1lLCBjb25zdCBVUkwmIG5ld05hbWUsIE9wdGlvblNldDxX
ZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8gYWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVn
YXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKQEAgLTIzMTAsOSArMjI0
NCw2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlbmFtZU9yaWdpbkluV2Vic2l0ZURhdGEoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVCiAgICAgYXV0byogc2Vzc2lvbiA9IG5ldHdv
cmtTZXNzaW9uKHNlc3Npb25JRCk7CiAgICAgaWYgKGF1dG8qIG1hbmFnZXIgPSBzZXNzaW9uID8g
c2Vzc2lvbi0+c3RvcmFnZU1hbmFnZXIoKSA6IG51bGxwdHIpCiAgICAgICAgIG1hbmFnZXItPm1v
dmVEYXRhKG9sZE9yaWdpbiwgbmV3T3JpZ2luLCBbYWdncmVnYXRvcl0geyB9KTsKLQotICAgIGlm
IChkYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMp
ICYmIHNlc3Npb24gJiYgc2Vzc2lvbi0+aGFzSURCRGF0YWJhc2VQYXRoKCkpCi0gICAgICAgIHNl
c3Npb24tPmVuc3VyZVdlYklEQlNlcnZlcigpLnJlbmFtZU9yaWdpbihvbGRPcmlnaW4sIG5ld09y
aWdpbiwgW2FnZ3JlZ2F0b3JdIHsgfSk7CiB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CkBAIC0yMzcyLDcgKzIzMDMsOCBAQCBSZWZQdHI8U3RvcmFnZVF1b3RhTWFuYWdlcj4gTmV0d29y
a1Byb2Nlc3M6OnN0b3JhZ2VRdW90YU1hbmFnZXIoUEFMOjpTZXNzaW9uSUQgcwogICAgIFN0b3Jh
Z2VRdW90YU1hbmFnZXI6OlVzYWdlR2V0dGVyIHVzYWdlR2V0dGVyID0gW2NhY2hlUm9vdFBhdGgg
PSBzZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlci0+Y2FjaGVSb290UGF0aCgpLmlzb2xhdGVkQ29w
eSgpLCBpZGJSb290UGF0aCA9IGlkYlJvb3RQYXRoLmlzb2xhdGVkQ29weSgpLCBvcmlnaW4gPSBv
cmlnaW4uaXNvbGF0ZWRDb3B5KCldKCkgewogICAgICAgICBBU1NFUlQoIWlzTWFpblJ1bkxvb3Ao
KSk7CiAKLSAgICAgICAgcmV0dXJuIENhY2hlU3RvcmFnZTo6RW5naW5lOjpkaXNrVXNhZ2UoY2Fj
aGVSb290UGF0aCwgb3JpZ2luKSArIElEQlNlcnZlcjo6SURCU2VydmVyOjpkaXNrVXNhZ2UoaWRi
Um9vdFBhdGgsIG9yaWdpbik7CisgICAgICAgIGF1dG8gY2FjaGVTdG9yYWdlUGF0aCA9IENhY2hl
U3RvcmFnZTo6RW5naW5lOjpzdG9yYWdlUGF0aChjYWNoZVJvb3RQYXRoLCBvcmlnaW4pOworICAg
ICAgICByZXR1cm4gQ2FjaGVTdG9yYWdlOjpFbmdpbmU6OmRpc2tVc2FnZShjYWNoZVN0b3JhZ2VQ
YXRoKSArIElEQlNlcnZlcjo6SURCU2VydmVyOjpkaXNrVXNhZ2UoaWRiUm9vdFBhdGgsIG9yaWdp
bik7CiAgICAgfTsKICAgICBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpRdW90YUluY3JlYXNlUmVxdWVz
dGVyIHF1b3RhSW5jcmVhc2VSZXF1ZXN0ZXIgPSBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsg
KnRoaXMgfSwgc2Vzc2lvbklELCBvcmlnaW5dICh1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2
NF90IGN1cnJlbnRTcGFjZSwgdWludDY0X3QgcmVxdWVzdGVkSW5jcmVhc2UsIGF1dG8mJiBjYWxs
YmFjaykgewogICAgICAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgpKTsKQEAgLTI1ODYsOCArMjUx
OCw2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlbW92ZUtlcHRBbGl2ZUxvYWQoTmV0d29ya1Jl
c291cmNlTG9hZGVyJiBsb2FkZXIpCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjb25uZWN0aW9uVG9X
ZWJQcm9jZXNzQ2xvc2VkKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklEKQogewogICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24o
c2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byogc2VydmVyID0gc2Vzc2lvbi0+d2ViSURC
U2VydmVyKCkpCi0gICAgICAgICAgICBzZXJ2ZXItPnJlbW92ZUNvbm5lY3Rpb24oY29ubmVjdGlv
bik7CiAgICAgICAgIGlmIChhdXRvKiBtYW5hZ2VyID0gc2Vzc2lvbi0+c3RvcmFnZU1hbmFnZXIo
KSkKICAgICAgICAgICAgIG1hbmFnZXItPnN0b3BSZWNlaXZpbmdNZXNzYWdlRnJvbUNvbm5lY3Rp
b24oY29ubmVjdGlvbik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5oCmluZGV4IDc4Nzc5MjdhMTdjNTU5NmViMDNiZDRhY2Y0ZDU4ZTQxOGFj
OGJhMjMuLjBmODUzM2VkMTNkZDI2Mjc3YTZkZDUyYWI2ZGFiZTIwYzNlMDg4MDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTMzLDYgKzMz
LDcgQEAKICNpbmNsdWRlICJMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuaCIKICNpbmNsdWRl
ICJOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNv
dXJjZUxvYWRJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVu
dGlmaWVyLmgiCiAjaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyUHJveHkuaCIK
ICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5SWRl
bnRpZmllci5oIgpAQCAtMjg4LDEyICsyODksMTEgQEAgcHVibGljOgogICAgIE5ldHdvcmtDb250
ZW50UnVsZUxpc3RNYW5hZ2VyJiBuZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcigpIHsgcmV0
dXJuIG1fbmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXI7IH0KICNlbmRpZgogCi0gICAgYm9v
bCBzaG91bGRTdXNwZW5kSURCU2VydmVycygpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkU3VzcGVu
ZElEQlNlcnZlcnM7IH0KLQogICAgIHZvaWQgc3luY0xvY2FsU3RvcmFnZShDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwogCiAgICAgdm9pZCByZXNldFF1b3RhKFBBTDo6U2Vzc2lvbklELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgY2xlYXJTdG9yYWdlKFBBTDo6
U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgZGlkSW5j
cmVhc2VRdW90YShQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwg
UXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBu
ZXdRdW90YSk7CiAgICAgdm9pZCByZW5hbWVPcmlnaW5JbldlYnNpdGVEYXRhKFBBTDo6U2Vzc2lv
bklELCBjb25zdCBVUkwmLCBjb25zdCBVUkwmLCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CkBAIC00NzMsOCArNDczLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1l
QXNOb0FjY2Vzcyhjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICB2b2lkIHJlZ2lzdGVyVVJMU2No
ZW1lQXNDT1JTRW5hYmxlZChjb25zdCBTdHJpbmcmKSBjb25zdDsKIAotICAgIHZvaWQgc3VzcGVu
ZElEQlNlcnZlcnMoYm9vbCBpc1N1c3BlbnNpb25JbW1pbmVudCk7Ci0KICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIHZvaWQgc2V0SXNIb2xkaW5nTG9ja2VkRmlsZXMoYm9vbCk7CiAjZW5k
aWYKQEAgLTQ4Miw2ICs0ODAsNyBAQCBwcml2YXRlOgogICAgIGNsYXNzIFNlc3Npb25TdG9yYWdl
UXVvdGFNYW5hZ2VyIHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVi
bGljOgorICAgICAgICBTZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlcigpID0gZGVsZXRlOwogICAg
ICAgICBTZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlcihjb25zdCBTdHJpbmcmIGNhY2hlUm9vdFBh
dGgsIHVpbnQ2NF90IGRlZmF1bHRRdW90YSwgdWludDY0X3QgZGVmYXVsdFRoaXJkUGFydHlRdW90
YSkKICAgICAgICAgICAgIDogbV9jYWNoZVJvb3RQYXRoKGNhY2hlUm9vdFBhdGgpCiAgICAgICAg
ICAgICAsIG1fZGVmYXVsdFF1b3RhKGRlZmF1bHRRdW90YSkKQEAgLTUwOCw4ICs1MDcsOCBAQCBw
cml2YXRlOgogICAgIHByaXZhdGU6CiAgICAgICAgIFN0cmluZyBtX2NhY2hlUm9vdFBhdGg7CiAg
ICAgICAgIFN0cmluZyBtX2lkYlJvb3RQYXRoOwotICAgICAgICB1aW50NjRfdCBtX2RlZmF1bHRR
dW90YSB7IFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6OmRlZmF1bHRRdW90YSgpIH07Ci0g
ICAgICAgIHVpbnQ2NF90IG1fZGVmYXVsdFRoaXJkUGFydHlRdW90YSB7IFdlYkNvcmU6OlN0b3Jh
Z2VRdW90YU1hbmFnZXI6OmRlZmF1bHRUaGlyZFBhcnR5UXVvdGEoKSB9OworICAgICAgICB1aW50
NjRfdCBtX2RlZmF1bHRRdW90YTsKKyAgICAgICAgdWludDY0X3QgbV9kZWZhdWx0VGhpcmRQYXJ0
eVF1b3RhOwogICAgICAgICBIYXNoTWFwPFdlYkNvcmU6OkNsaWVudE9yaWdpbiwgUmVmUHRyPFdl
YkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI+PiBtX3N0b3JhZ2VRdW90YU1hbmFnZXJzOwogICAg
IH07CiAgICAgdm9pZCBhZGRTZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlcihQQUw6OlNlc3Npb25J
RCwgdWludDY0X3QgZGVmYXVsdFF1b3RhLCB1aW50NjRfdCBkZWZhdWx0VGhpcmRQYXJ0eVF1b3Rh
LCBjb25zdCBTdHJpbmcmIGNhY2hlUm9vdFBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYp
OwpAQCAtNTQ5LDkgKzU0OCw2IEBAIHByaXZhdGU6CiAgICAgV2ViU1FMaXRlRGF0YWJhc2VUcmFj
a2VyIG1fd2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyOwogICAgIFJlZlB0cjxQcm9jZXNzQXNzZXJ0
aW9uPiBtX2hvbGRpbmdMb2NrZWRGaWxlQXNzZXJ0aW9uOwogI2VuZGlmCi0KLSAgICBib29sIG1f
c2hvdWxkU3VzcGVuZElEQlNlcnZlcnMgeyBmYWxzZSB9OwotICAgIHVpbnQ2NF90IG1fc3VzcGVu
c2lvbklkZW50aWZpZXIgeyAwIH07CiAgICAgCiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAgICAgUmVm
UHRyPFJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlclByb3h5PiBtX3J0Y0RhdGFDaGFubmVsUHJv
eHk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5tZXNzYWdlcy5pbgppbmRleCA2MzdlMTU5ZjE4NjM5M2JlYzVjYzA1YWI1YmQ1NzgwYmU4
YzZmY2U0Li42MzFlMmI2MDczYzAxOTIxMzA2OGMyMDk2YjgyN2IyNzlkYmM3ZGUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVz
c2FnZXMuaW4KQEAgLTE3OSw2ICsxNzksNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBM
ZWdhY3lSZWNlaXZlciB7CiAKICAgICBSZXNldFF1b3RhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCkgLT4gKCkgQXN5bmMKICAgICBDbGVhclN0b3JhZ2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
KSAtPiAoKSBBc3luYworICAgIERpZEluY3JlYXNlUXVvdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBzdHJ1Y3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbiwgV2ViS2l0OjpRdW90YUlu
Y3JlYXNlUmVxdWVzdElkZW50aWZpZXIgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gbmV3UXVvdGEpCiAgICAgCiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIEhh
c0FwcEJvdW5kU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+IChib29sIGhhc0Fw
cEJvdW5kU2Vzc2lvbikgQXN5bmMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU2Vzc2lvbi5jcHAKaW5kZXggZTJiMjRkODMyMmI2ZWMxYzM3NzAxZGNhZDQ5NzUzNGNl
ZjIzMWEyNi4uOWM0YmUyYjYxODk0NzRjY2YyNGJlNzBiMTEyNzI5MThmYzAyYjNlMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKQEAgLTIw
NCw4ICsyMDQsNiBAQCB2b2lkIE5ldHdvcmtTZXNzaW9uOjppbnZhbGlkYXRlQW5kQ2FuY2VsKCkK
ICAgICBpZiAobV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKQogICAgICAgICBtX3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3MtPmludmFsaWRhdGVBbmRDYW5jZWwoKTsKICNlbmRpZgotICAgIGlmIChhdXRv
IHNlcnZlciA9IHN0ZDo6ZXhjaGFuZ2UobV93ZWJJREJTZXJ2ZXIsIG51bGxwdHIpKQotICAgICAg
ICBzZXJ2ZXItPmNsb3NlKCk7CiAgICAgaWYgKGF1dG8gbWFuYWdlciA9IHN0ZDo6ZXhjaGFuZ2Uo
bV9zdG9yYWdlTWFuYWdlciwgbnVsbHB0cikpCiAgICAgICAgIG1hbmFnZXItPmNsb3NlKCk7CiAg
ICAgbV9jYWNoZUVuZ2luZSA9IG51bGxwdHI7CkBAIC02NTMsNTUgKzY1MSwxOCBAQCBib29sIE5l
dHdvcmtTZXNzaW9uOjpoYXNTZXJ2aWNlV29ya2VyRGF0YWJhc2VQYXRoKCkgY29uc3QKIAogI2Vu
ZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAotV2ViSURCU2VydmVyJiBOZXR3b3JrU2Vz
c2lvbjo6ZW5zdXJlV2ViSURCU2VydmVyKCkKLXsKLSAgICBpZiAoIW1fd2ViSURCU2VydmVyKSB7
Ci0gICAgICAgIFN0cmluZyBwYXRoOwotICAgICAgICBpZiAoIXNlc3Npb25JRCgpLmlzRXBoZW1l
cmFsKCkpIHsKLSAgICAgICAgICAgIEFTU0VSVCghbV9pZGJEYXRhYmFzZVBhdGguaXNOdWxsKCkp
OwotICAgICAgICAgICAgcGF0aCA9IG1faWRiRGF0YWJhc2VQYXRoOwotICAgICAgICB9Ci0KLSAg
ICAgICAgYXV0byBzcGFjZVJlcXVlc3RlciA9IFtuZXR3b3JrUHJvY2VzcyA9IFJlZiB7IG5ldHdv
cmtQcm9jZXNzKCkgfSwgc2Vzc2lvbklEID0gc2Vzc2lvbklEKCldKGNvbnN0IGF1dG8mIG9yaWdp
biwgdWludDY0X3Qgc3BhY2VSZXF1ZXN0ZWQpIHsKLSAgICAgICAgICAgIHJldHVybiBuZXR3b3Jr
UHJvY2Vzcy0+c3RvcmFnZVF1b3RhTWFuYWdlcihzZXNzaW9uSUQsIG9yaWdpbiktPnJlcXVlc3RT
cGFjZU9uQmFja2dyb3VuZFRocmVhZChzcGFjZVJlcXVlc3RlZCk7Ci0gICAgICAgIH07Ci0KLSAg
ICAgICAgbV93ZWJJREJTZXJ2ZXIgPSBXZWJJREJTZXJ2ZXI6OmNyZWF0ZShzZXNzaW9uSUQoKSwg
cGF0aCwgV1RGTW92ZShzcGFjZVJlcXVlc3RlcikpOwotICAgICAgICBpZiAobmV0d29ya1Byb2Nl
c3MoKS5zaG91bGRTdXNwZW5kSURCU2VydmVycygpKQotICAgICAgICAgICAgbV93ZWJJREJTZXJ2
ZXItPnN1c3BlbmQoV2ViSURCU2VydmVyOjpTdXNwZW5zaW9uQ29uZGl0aW9uOjpBbHdheXMpOwot
ICAgIH0KLSAgICByZXR1cm4gKm1fd2ViSURCU2VydmVyOwotfQotCi12b2lkIE5ldHdvcmtTZXNz
aW9uOjpjbG9zZUlEQlNlcnZlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCi17Ci0gICAgaWYgKCFtX3dlYklEQlNlcnZlcikKLSAgICAgICAgcmV0dXJuIGNv
bXBsZXRpb25IYW5kbGVyKCk7Ci0KLSAgICBzdGQ6OmV4Y2hhbmdlKG1fd2ViSURCU2VydmVyLCBu
dWxscHRyKS0+Y2xvc2UoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotfQotCi12b2lkIE5l
dHdvcmtTZXNzaW9uOjphZGRJbmRleGVkRGF0YWJhc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYgaW5k
ZXhlZERhdGFiYXNlRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIGhhbmRsZSkK
LXsKLSAgICAvLyAqKioqKioqKioKLSAgICAvLyBJTVBPUlRBTlQ6IERvIG5vdCBjaGFuZ2UgdGhl
IGRpcmVjdG9yeSBzdHJ1Y3R1cmUgZm9yIGluZGV4ZWQgZGF0YWJhc2VzIG9uIGRpc2sgd2l0aG91
dCBmaXJzdCBjb25zdWx0aW5nIGEgcmV2aWV3ZXIgZnJvbSBBcHBsZSAoPHJkYXI6Ly9wcm9ibGVt
LzE3NDU0NzEyPikKLSAgICAvLyAqKioqKioqKioKLSAgICBhdXRvIGlzTmV3ID0gbV9pZGJEYXRh
YmFzZVBhdGguaXNOdWxsKCk7Ci0gICAgbV9pZGJEYXRhYmFzZVBhdGggPSBpbmRleGVkRGF0YWJh
c2VEaXJlY3Rvcnk7Ci0gICAgaWYgKGlzTmV3KSB7Ci0gICAgICAgIFNhbmRib3hFeHRlbnNpb246
OmNvbnN1bWVQZXJtYW5lbnRseShoYW5kbGUpOwotICAgICAgICBuZXR3b3JrUHJvY2VzcygpLnNl
dFNlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2VySURCUm9vdFBhdGgoc2Vzc2lvbklEKCksIGluZGV4
ZWREYXRhYmFzZURpcmVjdG9yeSk7Ci0gICAgfQotfQotCi12b2lkIE5ldHdvcmtTZXNzaW9uOjph
ZGRTdG9yYWdlTWFuYWdlclNlc3Npb24oY29uc3QgU3RyaW5nJiBnZW5lcmFsU3RvcmFnZVBhdGgs
IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgZ2VuZXJhbFN0b3JhZ2VQYXRoSGFuZGxlLCBjb25z
dCBTdHJpbmcmIGxvY2FsU3RvcmFnZVBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgbG9j
YWxTdG9yYWdlUGF0aEhhbmRsZSkKK3ZvaWQgTmV0d29ya1Nlc3Npb246OmFkZFN0b3JhZ2VNYW5h
Z2VyU2Vzc2lvbihjb25zdCBTdHJpbmcmIGdlbmVyYWxTdG9yYWdlUGF0aCwgU2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlJiBnZW5lcmFsU3RvcmFnZVBhdGhIYW5kbGUsIGNvbnN0IFN0cmluZyYgbG9j
YWxTdG9yYWdlUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBsb2NhbFN0b3JhZ2VQYXRo
SGFuZGxlLCBjb25zdCBTdHJpbmcmIGlkYlN0b3JhZ2VQYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGUmIGlkYlN0b3JhZ2VQYXRoSGFuZGxlLCBjb25zdCBTdHJpbmcmIGNhY2hlU3RvcmFnZVBh
dGgsIHVpbnQ2NF90IGRlZmF1bHRPcmlnaW5RdW90YSwgdWludDY0X3QgZGVmYXVsdFRoaXJkUGFy
dHlRdW90YSkKIHsKICAgICBpZiAobV9zdG9yYWdlTWFuYWdlcikKICAgICAgICAgcmV0dXJuOwog
CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KGdlbmVyYWxTdG9yYWdl
UGF0aEhhbmRsZSk7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KGxv
Y2FsU3RvcmFnZVBhdGhIYW5kbGUpOwotICAgIG1fc3RvcmFnZU1hbmFnZXIgPSBOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6OmNyZWF0ZShzZXNzaW9uSUQoKSwgZ2VuZXJhbFN0b3JhZ2VQYXRoLCBsb2Nh
bFN0b3JhZ2VQYXRoKTsKKyAgICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHko
aWRiU3RvcmFnZVBhdGhIYW5kbGUpOworICAgIElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgY29u
bmVjdGlvbklEOworICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gbmV0d29ya1Byb2Nlc3MoKS5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpKQorICAgICAgICBjb25uZWN0aW9uSUQgPSBjb25uZWN0
aW9uLT51bmlxdWVJRCgpOworICAgIG1fc3RvcmFnZU1hbmFnZXIgPSBOZXR3b3JrU3RvcmFnZU1h
bmFnZXI6OmNyZWF0ZShzZXNzaW9uSUQoKSwgY29ubmVjdGlvbklELCBnZW5lcmFsU3RvcmFnZVBh
dGgsIGxvY2FsU3RvcmFnZVBhdGgsIGlkYlN0b3JhZ2VQYXRoLCBjYWNoZVN0b3JhZ2VQYXRoLCBk
ZWZhdWx0T3JpZ2luUXVvdGEsIGRlZmF1bHRUaGlyZFBhcnR5UXVvdGEpOwogfQogCiB2b2lkIE5l
dHdvcmtTZXNzaW9uOjplbnN1cmVDYWNoZUVuZ2luZShGdW5jdGlvbjx2b2lkKENhY2hlU3RvcmFn
ZTo6RW5naW5lJik+JiYgY2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtTZXNzaW9uLmgKaW5kZXggMTkzMDdjZjQwYmUzYjJmMjYwNTdkMDE2Yzc2NmVkY2U0
OThjOTU0Mi4uYmFhMTIyNDVjZjIyNjRkOTIxNTdkZGU0NzFkMmU0YjEwMmJjMjk3ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaApAQCAtMjEwLDE0
ICsyMTAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRTZXJ2aWNlV29ya2VyU2Vzc2lvbihib29s
IHByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCwgU3RyaW5nJiYgc2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbkRpcmVjdG9yeSwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJik7CiAj
ZW5kaWYKIAotICAgIFdlYklEQlNlcnZlciogd2ViSURCU2VydmVyKCkgeyByZXR1cm4gbV93ZWJJ
REJTZXJ2ZXIuZ2V0KCk7IH0KLSAgICBXZWJJREJTZXJ2ZXImIGVuc3VyZVdlYklEQlNlcnZlcigp
OwotICAgIHZvaWQgY2xvc2VJREJTZXJ2ZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
LSAgICB2b2lkIGFkZEluZGV4ZWREYXRhYmFzZVNlc3Npb24oY29uc3QgU3RyaW5nJiBpbmRleGVk
RGF0YWJhc2VEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYpOwotICAgIGJvb2wg
aGFzSURCRGF0YWJhc2VQYXRoKCkgY29uc3QgeyByZXR1cm4gIW1faWRiRGF0YWJhc2VQYXRoLmlz
RW1wdHkoKTsgfQotCiAgICAgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyKiBzdG9yYWdlTWFuYWdlcigp
IHsgcmV0dXJuIG1fc3RvcmFnZU1hbmFnZXIuZ2V0KCk7IH0KLSAgICB2b2lkIGFkZFN0b3JhZ2VN
YW5hZ2VyU2Vzc2lvbihjb25zdCBTdHJpbmcmIGdlbmVyYWxTdG9yYWdlUGF0aCwgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlJiBnZW5lcmFsU3RvcmFnZVBhdGhIYW5kbGUsIGNvbnN0IFN0cmluZyYg
bG9jYWxTdG9yYWdlUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBsb2NhbFN0b3JhZ2VQ
YXRoSGFuZGxlKTsKKyAgICB2b2lkIGFkZFN0b3JhZ2VNYW5hZ2VyU2Vzc2lvbihjb25zdCBTdHJp
bmcmIGdlbmVyYWxTdG9yYWdlUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBnZW5lcmFs
U3RvcmFnZVBhdGhIYW5kbGUsIGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlUGF0aCwgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlJiBsb2NhbFN0b3JhZ2VQYXRoSGFuZGxlLCBjb25zdCBTdHJpbmcm
IGlkYlN0b3JhZ2VQYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIGlkYlN0b3JhZ2VQYXRo
SGFuZGxlLCBjb25zdCBTdHJpbmcmIGNhY2hlU3RvcmFnZVBhdGgsIHVpbnQ2NF90IGRlZmF1bHRP
cmlnaW5RdW90YSwgdWludDY0X3QgZGVmYXVsdFRoaXJkUGFydHlRdW90YSk7CiAKICAgICBDYWNo
ZVN0b3JhZ2U6OkVuZ2luZSogY2FjaGVFbmdpbmUoKSB7IHJldHVybiBtX2NhY2hlRW5naW5lLmdl
dCgpOyB9CiAgICAgdm9pZCBlbnN1cmVDYWNoZUVuZ2luZShGdW5jdGlvbjx2b2lkKENhY2hlU3Rv
cmFnZTo6RW5naW5lJik+JiYpOwpAQCAtMzE5LDkgKzMxMyw2IEBAIHByb3RlY3RlZDoKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1dTZXJ2ZXI+IG1fc3dTZXJ2ZXI7CiAjZW5kaWYKIAot
ICAgIFN0cmluZyBtX2lkYkRhdGFiYXNlUGF0aDsKLSAgICBSZWZQdHI8V2ViSURCU2VydmVyPiBt
X3dlYklEQlNlcnZlcjsKLQogICAgIFJlZlB0cjxOZXR3b3JrU3RvcmFnZU1hbmFnZXI+IG1fc3Rv
cmFnZU1hbmFnZXI7CiAgICAgUmVmUHRyPENhY2hlU3RvcmFnZTo6RW5naW5lPiBtX2NhY2hlRW5n
aW5lOwogICAgIFZlY3RvcjxGdW5jdGlvbjx2b2lkKENhY2hlU3RvcmFnZTo6RW5naW5lJik+PiBt
X2NhY2hlU3RvcmFnZVBhcmFtZXRlcnNDYWxsYmFja3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKaW5kZXgg
YzIwMGNlOGI1ZWI0YzNhMDM2NTdlODIyNjg5OTAyYjQ2ZGJmOGFiMC4uMWEwOTA3ZGQ0MGIzZmM3
OGVkZTk3MzcyYzkyMDVhMTE4NmI0MDMxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcApAQCAtMzEsNiAr
MzEsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtDYWNoZUlPQ2hhbm5lbC5oIgogI2luY2x1ZGUgIk5l
dHdvcmtQcm9jZXNzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Nlc3Npb24uaCIKKyNpbmNsdWRlICJO
ZXR3b3JrU3RvcmFnZU1hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVR5cGUuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL0NhY2hlUXVlcnlPcHRpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9S
ZXRyaWV2ZVJlY29yZHNPcHRpb25zLmg+CkBAIC0yMDMsNDAgKzIwNCw0OSBAQCBzdGF0aWMgdWlu
dDY0X3QgZ2V0RGlyZWN0b3J5U2l6ZShjb25zdCBTdHJpbmcmIGRpcmVjdG9yeVBhdGgpCiAgICAg
cmV0dXJuIGRpcmVjdG9yeVNpemU7CiB9CiAKLXVpbnQ2NF90IEVuZ2luZTo6ZGlza1VzYWdlKGNv
bnN0IFN0cmluZyYgcm9vdFBhdGgsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2lu
KQorU3RyaW5nIEVuZ2luZTo6c3RvcmFnZVBhdGgoY29uc3QgU3RyaW5nJiByb290RGlyZWN0b3J5
LCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbikKIHsKICAgICBBU1NFUlQoIWlz
TWFpblJ1bkxvb3AoKSk7CisgICAgCisgICAgaWYgKHJvb3REaXJlY3RvcnkuaXNFbXB0eSgpKQor
ICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAotICAgIGlmIChyb290UGF0aC5pc0VtcHR5
KCkpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgU3RyaW5nIHNhbHRQYXRoID0gRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJvb3RQYXRoLCAic2FsdCJfcyk7CisgICAgU3Ry
aW5nIHNhbHRQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJvb3RE
aXJlY3RvcnksICJzYWx0Il9zKTsKICAgICBhdXRvIHNhbHQgPSBGaWxlU3lzdGVtOjpyZWFkT3JN
YWtlU2FsdChzYWx0UGF0aCk7CiAgICAgaWYgKCFzYWx0KQotICAgICAgICByZXR1cm4gMDsKKyAg
ICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKICAgICBLZXkga2V5KG9yaWdpbi50b3BPcmln
aW4udG9TdHJpbmcoKSwgb3JpZ2luLmNsaWVudE9yaWdpbi50b1N0cmluZygpLCB7IH0sIHsgfSwg
KnNhbHQpOwotICAgIFN0cmluZyBkaXJlY3RvcnlQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KHJvb3RQYXRoLCBrZXkuaGFzaEFzU3RyaW5nKCkpOworICAgIHJldHVy
biBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocm9vdERpcmVjdG9yeSwga2V5
Lmhhc2hBc1N0cmluZygpKTsKK30KKwordWludDY0X3QgRW5naW5lOjpkaXNrVXNhZ2UoY29uc3Qg
U3RyaW5nJiBvcmlnaW5EaXJlY3RvcnkpCit7CisgICAgQVNTRVJUKCFpc01haW5SdW5Mb29wKCkp
OworCisgICAgaWYgKG9yaWdpbkRpcmVjdG9yeS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiAw
OwogCi0gICAgU3RyaW5nIHNpemVGaWxlUGF0aCA9IENhY2hlczo6Y2FjaGVzU2l6ZUZpbGVuYW1l
KGRpcmVjdG9yeVBhdGgpOworICAgIFN0cmluZyBzaXplRmlsZVBhdGggPSBDYWNoZXM6OmNhY2hl
c1NpemVGaWxlbmFtZShvcmlnaW5EaXJlY3RvcnkpOwogICAgIGlmIChhdXRvIHJlY29yZGVkU2l6
ZSA9IHJlYWRTaXplRmlsZShzaXplRmlsZVBhdGgpKQogICAgICAgICByZXR1cm4gKnJlY29yZGVk
U2l6ZTsKIAotICAgIHJldHVybiBnZXREaXJlY3RvcnlTaXplKGRpcmVjdG9yeVBhdGgpOworICAg
IHJldHVybiBnZXREaXJlY3RvcnlTaXplKG9yaWdpbkRpcmVjdG9yeSk7CiB9CiAKLXZvaWQgRW5n
aW5lOjpyZXF1ZXN0U3BhY2UoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIHVp
bnQ2NF90IHNwYWNlUmVxdWVzdGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0
b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uKT4mJiBjYWxsYmFjaykKK3ZvaWQgRW5naW5lOjpy
ZXF1ZXN0U3BhY2UoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIHVpbnQ2NF90
IHNwYWNlUmVxdWVzdGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNr
KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICBpZiAoIW1fbmV0d29ya1By
b2Nlc3MpCi0gICAgICAgIGNhbGxiYWNrKFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6OkRl
Y2lzaW9uOjpEZW55KTsKKyAgICAgICAgY2FsbGJhY2soZmFsc2UpOwogCi0gICAgUmVmUHRyPFdl
YkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI+IHN0b3JhZ2VRdW90YU1hbmFnZXIgPSBtX25ldHdv
cmtQcm9jZXNzLT5zdG9yYWdlUXVvdGFNYW5hZ2VyKG1fc2Vzc2lvbklELCBvcmlnaW4pOwotICAg
IGlmICghc3RvcmFnZVF1b3RhTWFuYWdlcikKLSAgICAgICAgY2FsbGJhY2soV2ViQ29yZTo6U3Rv
cmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb246OkRlbnkpOworICAgIGF1dG8qIHNlc3Npb24gPSBt
X25ldHdvcmtQcm9jZXNzLT5uZXR3b3JrU2Vzc2lvbihtX3Nlc3Npb25JRCk7CisgICAgaWYgKCFz
ZXNzaW9uKQorICAgICAgICBjYWxsYmFjayhmYWxzZSk7CiAKLSAgICBzdG9yYWdlUXVvdGFNYW5h
Z2VyLT5yZXF1ZXN0U3BhY2VPbk1haW5UaHJlYWQoc3BhY2VSZXF1ZXN0ZWQsIFdURk1vdmUoY2Fs
bGJhY2spKTsKKyAgICBpZiAoYXV0byogc3RvcmFnZU1hbmFnZXIgPSBzZXNzaW9uLT5zdG9yYWdl
TWFuYWdlcigpKQorICAgICAgICBzdG9yYWdlTWFuYWdlci0+cmVxdWVzdFNwYWNlKG9yaWdpbiwg
c3BhY2VSZXF1ZXN0ZWQsIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAogRW5naW5lOjpFbmdpbmUo
TmV0d29ya1Nlc3Npb24mIG5ldHdvcmtTZXNzaW9uLCBTdHJpbmcmJiByb290UGF0aCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5n
aW5lLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVu
Z2luZS5oCmluZGV4IDE0N2ZiYWNlMTY3N2E2MDg1OTE4YWI3NzJhOWUxMGEyMDZjNjg4MWUuLmZl
M2MxZjkzMGRhZTM5OThjZDFjMDRjMzRkYmRkYzUzNTU1YTQ3MDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaApA
QCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgIk5ldHdvcmtDYWNoZURhdGEuaCIKICNpbmNsdWRl
ICJXZWJzaXRlRGF0YS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ2xpZW50T3JpZ2luLmg+Ci0jaW5j
bHVkZSA8V2ViQ29yZS9TdG9yYWdlUXVvdGFNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Np
b25JRC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KQEAgLTg0LDggKzgzLDkgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgaW5pdGlh
bGl6ZVF1b3RhVXNlcihOZXR3b3JrU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdp
biYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKLSAgICBzdGF0aWMgdWludDY0X3Qg
ZGlza1VzYWdlKGNvbnN0IFN0cmluZyYgcm9vdFBhdGgsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9y
aWdpbiYpOwotICAgIHZvaWQgcmVxdWVzdFNwYWNlKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdp
biYsIHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNv
cmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uKT4mJik7CisgICAgc3RhdGljIFN0cmlu
ZyBzdG9yYWdlUGF0aChjb25zdCBTdHJpbmcmIHJvb3REaXJlY3RvcnksIGNvbnN0IFdlYkNvcmU6
OkNsaWVudE9yaWdpbiYpOworICAgIHN0YXRpYyB1aW50NjRfdCBkaXNrVXNhZ2UoY29uc3QgU3Ry
aW5nJiBvcmlnaW5EaXJlY3RvcnkpOworICAgIHZvaWQgcmVxdWVzdFNwYWNlKGNvbnN0IFdlYkNv
cmU6OkNsaWVudE9yaWdpbiYsIHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmKTsKIAogICAgIGJvb2wgc2hvdWxkUGVyc2lzdCgpIGNvbnN0IHsg
cmV0dXJuICEhbV9pb1F1ZXVlO30KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwCmluZGV4
IDA0ZWRlY2UxYzRiZmU5ZWFjYWUwNmE3MDdjNWRkZmZlMDBlODEzOGUuLmMzMGMzYmU3YzVjNTUz
YmYyMzI4ZDk1MWI3NzQ0NDQxM2IzMmQ2YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5j
cHAKQEAgLTUyNCwxNCArNTI0LDEwIEBAIHZvaWQgQ2FjaGVzOjpyZXF1ZXN0U3BhY2UodWludDY0
X3Qgc3BhY2VSZXF1aXJlZCwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNvbXBsCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBtX2VuZ2luZS0+cmVxdWVzdFNwYWNlKG1fb3JpZ2luLCBz
cGFjZVJlcXVpcmVkLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byBkZWNpc2lv
bikgbXV0YWJsZSB7Ci0gICAgICAgIHN3aXRjaCAoZGVjaXNpb24pIHsKLSAgICAgICAgY2FzZSBX
ZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbjo6RGVueToKLSAgICAgICAgICAg
IGNhbGxiYWNrKEVycm9yOjpRdW90YUV4Y2VlZGVkKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgY2FzZSBXZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbjo6R3JhbnQ6
Ci0gICAgICAgICAgICBjYWxsYmFjayh7IH0pOwotICAgICAgICB9OworICAgIG1fZW5naW5lLT5y
ZXF1ZXN0U3BhY2UobV9vcmlnaW4sIHNwYWNlUmVxdWlyZWQsIFtjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spXShib29sIGdyYW50ZWQpIG11dGFibGUgeworICAgICAgICBpZiAoIWdyYW50ZWQp
CisgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soRXJyb3I6OlF1b3RhRXhjZWVkZWQpOworICAg
ICAgICBjYWxsYmFjayh7IH0pOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lPUy5tbSBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNzSU9TLm1tCmluZGV4IGE4N2FkODA1
YjVkZjE1MDc4M2I1MzkxZThlMDNmOThlNzY0ZGYzZDUuLjIxOTZlOWU3NGQyNDUzMWMwZGI1YjM5
NDVhYzYwOGZlM2U5OGM3NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvaW9zL05ldHdvcmtQcm9jZXNzSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNzSU9TLm1tCkBAIC0xMDksMTkgKzEwOSw2IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OnNldElzSG9sZGluZ0xvY2tlZEZpbGVzKGJvb2wgaXNIb2xkaW5nTG9j
a2VkRmlsZXMpCiAgICAgLy8gV2Ugc3luY2hyb25vdXNseSB0YWtlIGEgcHJvY2VzcyBhc3NlcnRp
b24gd2hlbiBiZWdpbm5pbmcgYSBTUUxpdGUgdHJhbnNhY3Rpb24gc28gdGhhdCB3ZSBkb24ndCBn
ZXQgc3VzcGVuZGVkCiAgICAgLy8gd2hpbGUgaG9sZGluZyBhIGxvY2tlZCBmaWxlLiBXZSB3b3Vs
ZCBnZXQga2lsbGVkIGlmIHN1c3BlbmRlZCB3aGlsZSBob2xkaW5nIGxvY2tlZCBmaWxlcy4KICAg
ICBtX2hvbGRpbmdMb2NrZWRGaWxlQXNzZXJ0aW9uID0gUHJvY2Vzc0Fzc2VydGlvbjo6Y3JlYXRl
KGdldEN1cnJlbnRQcm9jZXNzSUQoKSwgIk5ldHdvcmsgUHJvY2VzcyBpcyBob2xkaW5nIGxvY2tl
ZCBmaWxlcyJfcywgUHJvY2Vzc0Fzc2VydGlvblR5cGU6OkZpbmlzaFRhc2tJbnRlcnJ1cHRhYmxl
LCBQcm9jZXNzQXNzZXJ0aW9uOjpNb2RlOjpTeW5jKTsKLSAgICBtX2hvbGRpbmdMb2NrZWRGaWxl
QXNzZXJ0aW9uLT5zZXRQcmVwYXJlRm9ySW52YWxpZGF0aW9uSGFuZGxlcihbdGhpcywgd2Vha1Ro
aXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0oKSBtdXRhYmxlIHsKLSAgICAgICAgQVNTRVJUKGlzTWFp
blJ1bkxvb3AoKSk7Ci0gICAgICAgIGlmICghd2Vha1RoaXMpCi0gICAgICAgICAgICByZXR1cm47
Ci0KLSAgICAgICAgaWYgKCFtX3Nob3VsZFN1c3BlbmRJREJTZXJ2ZXJzKQotICAgICAgICAgICAg
cmV0dXJuOwotCi0gICAgICAgIGZvckVhY2hOZXR3b3JrU2Vzc2lvbihbXShhdXRvJiBzZXNzaW9u
KSB7Ci0gICAgICAgICAgICBpZiAoYXV0byogc2VydmVyID0gc2Vzc2lvbi53ZWJJREJTZXJ2ZXIo
KSkKLSAgICAgICAgICAgICAgICBzZXJ2ZXItPnN1c3BlbmQoKTsKLSAgICAgICAgfSk7Ci0gICAg
fSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VDb25uZWN0
aW9uVG9DbGllbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhhZjRjNjQ2NDM2Yjk2ZTE0ZTg3YjNjZTJiNjEx
ZGIwNDI4NzkwNWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3N0b3JhZ2UvSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5jcHAKQEAgLTAsMCArMSwx
OTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJ
REJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50LmgiCisKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1l
bnRDb2RlcnMuaCIKKyNpbmNsdWRlICJXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXJNZXNzYWdlcy5o
IgorI2luY2x1ZGUgIldlYklEQlJlc3VsdC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvSURCUmVxdWVz
dERhdGEuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0lEQlJlc3VsdERhdGEuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1VuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5oPgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6SURCU3RvcmFnZUNvbm5lY3Rpb25U
b0NsaWVudChJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGNvbm5lY3Rpb24sIFdlYkNvcmU6OklE
QkNvbm5lY3Rpb25JZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgOiBtX2Nvbm5lY3Rpb24oY29u
bmVjdGlvbikKKyAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQorICAgICwgbV9jb25uZWN0
aW9uVG9DbGllbnQoV2ViQ29yZTo6SURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnQ6OmNy
ZWF0ZSgqdGhpcykpCit7Cit9CisKK0lEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6On5JREJT
dG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50KCkKK3sKKyAgICBtX2Nvbm5lY3Rpb25Ub0NsaWVudC0+
Y2xlYXJEZWxlZ2F0ZSgpOworfQorCitXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQkNvbm5lY3Rpb25U
b0NsaWVudCYgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6Y29ubmVjdGlvblRvQ2xpZW50
KCkKK3sKKyAgICByZXR1cm4gbV9jb25uZWN0aW9uVG9DbGllbnQ7Cit9CisKK3RlbXBsYXRlPGNs
YXNzIE1lc3NhZ2VUeXBlPiB2b2lkIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZEdl
dFJlc3VsdChjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAg
IGlmIChyZXN1bHREYXRhLnR5cGUoKSA9PSBXZWJDb3JlOjpJREJSZXN1bHRUeXBlOjpFcnJvcikg
eworICAgICAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQobV9jb25uZWN0aW9uLCBNZXNzYWdlVHlw
ZShyZXN1bHREYXRhKSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAocmVz
dWx0RGF0YS50eXBlKCkgPT0gV2ViQ29yZTo6SURCUmVzdWx0VHlwZTo6R2V0QWxsUmVjb3Jkc1N1
Y2Nlc3MgJiYgcmVzdWx0RGF0YS5nZXRBbGxSZXN1bHQoKS50eXBlKCkgPT0gV2ViQ29yZTo6SW5k
ZXhlZERCOjpHZXRBbGxUeXBlOjpLZXlzKSB7CisgICAgICAgIElQQzo6Q29ubmVjdGlvbjo6c2Vu
ZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VUeXBlKHJlc3VsdERhdGEpLCAwKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGF1dG8gYmxvYkZpbGVQYXRocyA9IHJlc3VsdERhdGEudHlwZSgp
ID09IFdlYkNvcmU6OklEQlJlc3VsdFR5cGU6OkdldEFsbFJlY29yZHNTdWNjZXNzID8gcmVzdWx0
RGF0YS5nZXRBbGxSZXN1bHQoKS5hbGxCbG9iRmlsZVBhdGhzKCkgOiByZXN1bHREYXRhLmdldFJl
c3VsdCgpLnZhbHVlKCkuYmxvYkZpbGVQYXRocygpOworICAgIGlmIChibG9iRmlsZVBhdGhzLmlz
RW1wdHkoKSkgeworICAgICAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQobV9jb25uZWN0aW9uLCBN
ZXNzYWdlVHlwZShyZXN1bHREYXRhKSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBJUEM6OkNvbm5lY3Rpb246OnNlbmQobV9jb25uZWN0aW9uLCBNZXNzYWdlVHlwZShyZXN1bHRE
YXRhKSwgMCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkRGVs
ZXRlRGF0YWJhc2UoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sK
KyAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQobV9jb25uZWN0aW9uLCBNZXNzYWdlczo6V2ViSURC
Q29ubmVjdGlvblRvU2VydmVyOjpEaWREZWxldGVEYXRhYmFzZShyZXN1bHREYXRhKSwgMCk7Cit9
CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkT3BlbkRhdGFiYXNlKGNv
bnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCit7CisgICAgSVBDOjpDb25u
ZWN0aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwgTWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub1Nl
cnZlcjo6RGlkT3BlbkRhdGFiYXNlKHJlc3VsdERhdGEpLCAwKTsKK30KKwordm9pZCBJREJTdG9y
YWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRTdGFydFRyYW5zYWN0aW9uKGNvbnN0IFdlYkNvcmU6
OklEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJD
b3JlOjpJREJFcnJvciYgZXJyb3IpCit7CisgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKG1fY29u
bmVjdGlvbiwgTWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6RGlkU3RhcnRUcmFu
c2FjdGlvbih0cmFuc2FjdGlvbklkZW50aWZpZXIsIGVycm9yKSwgMCk7Cit9CisKK3ZvaWQgSURC
U3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkQWJvcnRUcmFuc2FjdGlvbihjb25zdCBXZWJD
b3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3Qg
V2ViQ29yZTo6SURCRXJyb3ImIGVycm9yKQoreworICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZCht
X2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZEFib3J0
VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZGVudGlmaWVyLCBlcnJvciksIDApOworfQorCit2b2lk
IElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZENvbW1pdFRyYW5zYWN0aW9uKGNvbnN0
IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBj
b25zdCBXZWJDb3JlOjpJREJFcnJvciYgZXJyb3IpCit7CisgICAgSVBDOjpDb25uZWN0aW9uOjpz
ZW5kKG1fY29ubmVjdGlvbiwgTWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6RGlk
Q29tbWl0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZGVudGlmaWVyLCBlcnJvciksIDApOworfQor
Cit2b2lkIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZENyZWF0ZU9iamVjdFN0b3Jl
KGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCit7CisgICAgSVBDOjpD
b25uZWN0aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwgTWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25U
b1NlcnZlcjo6RGlkQ3JlYXRlT2JqZWN0U3RvcmUocmVzdWx0RGF0YSksIDApOworfQorCit2b2lk
IElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZERlbGV0ZU9iamVjdFN0b3JlKGNvbnN0
IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCit7CisgICAgSVBDOjpDb25uZWN0
aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwgTWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZl
cjo6RGlkRGVsZXRlT2JqZWN0U3RvcmUocmVzdWx0RGF0YSksIDApOworfQorCit2b2lkIElEQlN0
b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZFJlbmFtZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNv
cmU6OklEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCit7CisgICAgSVBDOjpDb25uZWN0aW9uOjpz
ZW5kKG1fY29ubmVjdGlvbiwgTWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6RGlk
UmVuYW1lT2JqZWN0U3RvcmUocmVzdWx0RGF0YSksIDApOworfQorCit2b2lkIElEQlN0b3JhZ2VD
b25uZWN0aW9uVG9DbGllbnQ6OmRpZENsZWFyT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6SURC
UmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQobV9j
b25uZWN0aW9uLCBNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWRDbGVhck9i
amVjdFN0b3JlKHJlc3VsdERhdGEpLCAwKTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlv
blRvQ2xpZW50OjpkaWRDcmVhdGVJbmRleChjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJiBy
ZXN1bHREYXRhKQoreworICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1l
c3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZENyZWF0ZUluZGV4KHJlc3VsdERh
dGEpLCAwKTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWREZWxl
dGVJbmRleChjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAg
IElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJJREJDb25u
ZWN0aW9uVG9TZXJ2ZXI6OkRpZERlbGV0ZUluZGV4KHJlc3VsdERhdGEpLCAwKTsKK30KKwordm9p
ZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRSZW5hbWVJbmRleChjb25zdCBXZWJD
b3JlOjpJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIElQQzo6Q29ubmVjdGlvbjo6
c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRp
ZFJlbmFtZUluZGV4KHJlc3VsdERhdGEpLCAwKTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVj
dGlvblRvQ2xpZW50OjpkaWRQdXRPckFkZChjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJiBy
ZXN1bHREYXRhKQoreworICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1l
c3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZFB1dE9yQWRkKHJlc3VsdERhdGEp
LCAwKTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRHZXRSZWNv
cmQoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBkaWRH
ZXRSZXN1bHQ8TWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6RGlkR2V0UmVjb3Jk
PihyZXN1bHREYXRhKTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50Ojpk
aWRHZXRBbGxSZWNvcmRzKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEp
Cit7CisgICAgZGlkR2V0UmVzdWx0PE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6
OkRpZEdldEFsbFJlY29yZHM+KHJlc3VsdERhdGEpOworfQorCit2b2lkIElEQlN0b3JhZ2VDb25u
ZWN0aW9uVG9DbGllbnQ6OmRpZEdldENvdW50KGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEm
IHJlc3VsdERhdGEpCit7CisgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwg
TWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6RGlkR2V0Q291bnQocmVzdWx0RGF0
YSksIDApOworfQorCit2b2lkIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZERlbGV0
ZVJlY29yZChjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAg
IElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJJREJDb25u
ZWN0aW9uVG9TZXJ2ZXI6OkRpZERlbGV0ZVJlY29yZChyZXN1bHREYXRhKSwgMCk7Cit9CisKK3Zv
aWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkT3BlbkN1cnNvcihjb25zdCBXZWJD
b3JlOjpJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIGRpZEdldFJlc3VsdDxNZXNz
YWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWRPcGVuQ3Vyc29yPihyZXN1bHREYXRh
KTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRJdGVyYXRlQ3Vy
c29yKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCit7CisgICAgZGlk
R2V0UmVzdWx0PE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZEl0ZXJhdGVD
dXJzb3I+KHJlc3VsdERhdGEpOworfQorCit2b2lkIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGll
bnQ6OmRpZEdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhjb25zdCBXZWJDb3JlOjpJREJS
ZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbj4mIGRhdGFiYXNlcykKK3sKKyAgICBJUEM6OkNv
bm5lY3Rpb246OnNlbmQobV9jb25uZWN0aW9uLCBNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRv
U2VydmVyOjpEaWRHZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMocmVxdWVzdElkZW50aWZp
ZXIsIGRhdGFiYXNlcyksIDApOworfQorCit2b2lkIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGll
bnQ6OmZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJE
YXRhYmFzZUNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNl
SWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IHJlcXVlc3RlZFZlcnNpb24p
Cit7CisgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwgTWVzc2FnZXM6Oldl
YklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6RmlyZVZlcnNpb25DaGFuZ2VFdmVudChjb25uZWN0aW9u
LmlkZW50aWZpZXIoKSwgcmVxdWVzdElkZW50aWZpZXIsIHJlcXVlc3RlZFZlcnNpb24pLCAwKTsK
K30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRDbG9zZUZyb21TZXJ2
ZXIoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24sIGNvbnN0IFdlYkNvcmU6OklEQkVycm9yJiBlcnJvcikKK3sKKyAgICBJUEM6OkNvbm5l
Y3Rpb246OnNlbmQobV9jb25uZWN0aW9uLCBNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2Vy
dmVyOjpEaWRDbG9zZUZyb21TZXJ2ZXIoY29ubmVjdGlvbi5pZGVudGlmaWVyKCksIGVycm9yKSwg
MCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6bm90aWZ5T3BlbkRC
UmVxdWVzdEJsb2NrZWQoY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1
ZXN0SWRlbnRpZmllciwgdWludDY0X3Qgb2xkVmVyc2lvbiwgdWludDY0X3QgbmV3VmVyc2lvbikK
K3sKKyAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQobV9jb25uZWN0aW9uLCBNZXNzYWdlczo6V2Vi
SURCQ29ubmVjdGlvblRvU2VydmVyOjpOb3RpZnlPcGVuREJSZXF1ZXN0QmxvY2tlZChyZXF1ZXN0
SWRlbnRpZmllciwgb2xkVmVyc2lvbiwgbmV3VmVyc2lvbiksIDApOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3Rv
cmFnZS9JREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjUwYmEwMWIwMjEyMGYyMWRiNjEzOTFmM2E4NzQ0ZDIyYjVmZjcwZTQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZUNv
bm5lY3Rpb25Ub0NsaWVudC5oCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTYtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
SURCQ29ubmVjdGlvblRvQ2xpZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JREJDb25uZWN0aW9u
VG9DbGllbnREZWxlZ2F0ZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgSURCU3Rv
cmFnZUNvbm5lY3Rpb25Ub0NsaWVudCBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpJREJTZXJ2ZXI6
OklEQkNvbm5lY3Rpb25Ub0NsaWVudERlbGVnYXRlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKK3B1YmxpYzoKKyAgICBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50KElQQzo6Q29u
bmVjdGlvbjo6VW5pcXVlSUQsIFdlYkNvcmU6OklEQkNvbm5lY3Rpb25JZGVudGlmaWVyKTsKKyAg
ICB+SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudCgpOworCisgICAgV2ViQ29yZTo6SURCQ29u
bmVjdGlvbklkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faWRl
bnRpZmllcjsgfQorICAgIElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgaXBjQ29ubmVjdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fY29ubmVjdGlvbjsgfQorICAgIFdlYkNvcmU6OklEQlNlcnZlcjo6
SURCQ29ubmVjdGlvblRvQ2xpZW50JiBjb25uZWN0aW9uVG9DbGllbnQoKTsKKworcHJpdmF0ZToK
KyAgICB0ZW1wbGF0ZTxjbGFzcyBNZXNzYWdlVHlwZT4gdm9pZCBkaWRHZXRSZXN1bHQoY29uc3Qg
V2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpOworCisgICAgLy8gSURCQ29ubmVjdGlvblRvQ2xpZW50
RGVsZWdhdGUKKyAgICB2b2lkIGRpZERlbGV0ZURhdGFiYXNlKGNvbnN0IFdlYkNvcmU6OklEQlJl
c3VsdERhdGEmKSBmaW5hbDsKKyAgICB2b2lkIGRpZE9wZW5EYXRhYmFzZShjb25zdCBXZWJDb3Jl
OjpJREJSZXN1bHREYXRhJikgZmluYWw7CisgICAgdm9pZCBkaWRBYm9ydFRyYW5zYWN0aW9uKGNv
bnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVy
LCBjb25zdCBXZWJDb3JlOjpJREJFcnJvciYpIGZpbmFsOworICAgIHZvaWQgZGlkQ29tbWl0VHJh
bnNhY3Rpb24oY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlv
bklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OklEQkVycm9yJikgZmluYWw7CisgICAgdm9pZCBk
aWRTdGFydFRyYW5zYWN0aW9uKGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYg
dHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJREJFcnJvciYpIGZpbmFsOwor
ICAgIHZvaWQgZGlkQ3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0
YSYpIGZpbmFsOworICAgIHZvaWQgZGlkRGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6
SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVuYW1lT2JqZWN0U3RvcmUoY29u
c3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkQ2xlYXJPYmpl
Y3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJikgZmluYWw7CisgICAgdm9pZCBk
aWRDcmVhdGVJbmRleChjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJikgZmluYWw7CisgICAg
dm9pZCBkaWREZWxldGVJbmRleChjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJikgZmluYWw7
CisgICAgdm9pZCBkaWRSZW5hbWVJbmRleChjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJikg
ZmluYWw7CisgICAgdm9pZCBkaWRQdXRPckFkZChjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRh
JikgZmluYWw7CisgICAgdm9pZCBkaWRHZXRSZWNvcmQoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0
RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkR2V0QWxsUmVjb3Jkcyhjb25zdCBXZWJDb3JlOjpJ
REJSZXN1bHREYXRhJikgZmluYWw7CisgICAgdm9pZCBkaWRHZXRDb3VudChjb25zdCBXZWJDb3Jl
OjpJREJSZXN1bHREYXRhJikgZmluYWw7CisgICAgdm9pZCBkaWREZWxldGVSZWNvcmQoY29uc3Qg
V2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkT3BlbkN1cnNvcihj
b25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJikgZmluYWw7CisgICAgdm9pZCBkaWRJdGVyYXRl
Q3Vyc29yKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBmaW5hbDsKKyAgICB2b2lkIGRp
ZEdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJj
ZUlkZW50aWZpZXImLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6SURCRGF0YWJhc2VOYW1lQW5kVmVy
c2lvbj4mKSBmaW5hbDsKKyAgICB2b2lkIG5vdGlmeU9wZW5EQlJlcXVlc3RCbG9ja2VkKGNvbnN0
IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2
NF90IG9sZFZlcnNpb24sIHVpbnQ2NF90IG5ld1ZlcnNpb24pIGZpbmFsOworICAgIHZvaWQgZmly
ZVZlcnNpb25DaGFuZ2VFdmVudChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNl
Q29ubmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVz
dElkZW50aWZpZXIsIHVpbnQ2NF90IHJlcXVlc3RlZFZlcnNpb24pIGZpbmFsOworICAgIHZvaWQg
ZGlkQ2xvc2VGcm9tU2VydmVyKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VD
b25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6SURCRXJyb3ImKSBmaW5hbDsKKworICAgIElQQzo6
Q29ubmVjdGlvbjo6VW5pcXVlSUQgbV9jb25uZWN0aW9uOworICAgIFdlYkNvcmU6OklEQkNvbm5l
Y3Rpb25JZGVudGlmaWVyIG1faWRlbnRpZmllcjsKKyAgICBSZWY8V2ViQ29yZTo6SURCU2VydmVy
OjpJREJDb25uZWN0aW9uVG9DbGllbnQ+IG1fY29ubmVjdGlvblRvQ2xpZW50OworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3N0b3JhZ2UvSURCU3RvcmFnZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VNYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZDBiY2E4
NjU1OGU3NGNmYTc3YmJlOGJhNTk0NzIwYjExNDYwMGE0Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VNYW5hZ2VyLmNwcApA
QCAtMCwwICsxLDI0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJJREJTdG9yYWdlTWFuYWdlci5oIgorCisjaW5jbHVkZSAiSURCU3RvcmFnZVJlZ2lzdHJ5
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9NZW1vcnlJREJCYWNraW5nU3RvcmUuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1NRTGl0ZUZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZUlE
QkJhY2tpbmdTdG9yZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGljIHZvaWQgbWln
cmF0ZU9yaWdpbkRhdGEoY29uc3QgU3RyaW5nJiBvbGRPcmlnaW5EaXJlY3RvcnksIGNvbnN0IFN0
cmluZyYgbmV3T3JpZ2luRGlyZWN0b3J5KQoreworICAgIGlmICghRmlsZVN5c3RlbTo6ZmlsZUV4
aXN0cyhvbGRPcmlnaW5EaXJlY3RvcnkpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGZp
bGVOYW1lcyA9IEZpbGVTeXN0ZW06Omxpc3REaXJlY3Rvcnkob2xkT3JpZ2luRGlyZWN0b3J5KTsK
KyAgICBmb3IgKGF1dG8gbmFtZSA6IGZpbGVOYW1lcykgeworICAgICAgICBTdHJpbmcgY2hpbGRQ
YXRoID0gRmlsZVN5c3RlbTo6Z2V0U3ltYm9saWNMaW5rVGFyZ2V0KEZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChvbGRPcmlnaW5EaXJlY3RvcnksIG5hbWUpKTsKKyAgICAgICAg
U3RyaW5nIG5ld05hbWUgPSBXZWJDb3JlOjpTUUxpdGVGaWxlU3lzdGVtOjpjb21wdXRlSGFzaEZv
ckZpbGVOYW1lKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWNv
ZGVEYXRhYmFzZU5hbWUobmFtZSkpOworICAgICAgICBhdXRvIG5ld0NoaWxkUGF0aCA9IEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChuZXdPcmlnaW5EaXJlY3RvcnksIG5ld05h
bWUpOworICAgICAgICBGaWxlU3lzdGVtOjptb3ZlRmlsZShjaGlsZFBhdGgsIG5ld0NoaWxkUGF0
aCk7CisgICAgfQorCisgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3Rvcnkob2xkT3Jp
Z2luRGlyZWN0b3J5KTsKK30KKworU3RyaW5nIElEQlN0b3JhZ2VNYW5hZ2VyOjppZGJTdG9yYWdl
T3JpZ2luRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcm9vdERpcmVjdG9yeSwgY29uc3QgV2ViQ29y
ZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4pCit7CisgICAgaWYgKHJvb3REaXJlY3RvcnkuaXNFbXB0
eSgpKQorICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKworICAgIFN0cmluZyBvcmlnaW5E
aXJlY3RvcnkgPSBXZWJDb3JlOjpJREJEYXRhYmFzZUlkZW50aWZpZXI6OmRhdGFiYXNlRGlyZWN0
b3J5UmVsYXRpdmVUb1Jvb3Qob3JpZ2luLnRvcE9yaWdpbiwgb3JpZ2luLmNsaWVudE9yaWdpbiwg
cm9vdERpcmVjdG9yeSwgInYxIik7CisgICAgRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVz
KG9yaWdpbkRpcmVjdG9yeSk7CisKKyAgICBTdHJpbmcgb2xkT3JpZ2luRGlyZWN0b3J5ID0gV2Vi
Q29yZTo6SURCRGF0YWJhc2VJZGVudGlmaWVyOjpkYXRhYmFzZURpcmVjdG9yeVJlbGF0aXZlVG9S
b290KG9yaWdpbi50b3BPcmlnaW4sIG9yaWdpbi5jbGllbnRPcmlnaW4sIHJvb3REaXJlY3Rvcnks
ICJ2MCIpOworICAgIG1pZ3JhdGVPcmlnaW5EYXRhKG9sZE9yaWdpbkRpcmVjdG9yeSwgb3JpZ2lu
RGlyZWN0b3J5KTsKKworICAgIHJldHVybiBvcmlnaW5EaXJlY3Rvcnk7Cit9CisKK3VpbnQ2NF90
IElEQlN0b3JhZ2VNYW5hZ2VyOjppZGJTdG9yYWdlU2l6ZShjb25zdCBTdHJpbmcmIG9yaWdpbkRp
cmVjdG9yeSkKK3sKKyAgICBpZiAob3JpZ2luRGlyZWN0b3J5LmlzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuIDA7CisKKyAgICByZXR1cm4gV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNr
aW5nU3RvcmU6OmRhdGFiYXNlc1NpemVGb3JEaXJlY3Rvcnkob3JpZ2luRGlyZWN0b3J5KTsKK30K
Kworc3RhdGljIHZvaWQgZ2V0T3JpZ2luc0ZvclZlcnNpb24oY29uc3QgU3RyaW5nJiB2ZXJzaW9u
UGF0aCwgSGFzaFNldDxXZWJDb3JlOjpDbGllbnRPcmlnaW4+JiBvcmlnaW5zKQoreworICAgIGZv
ciAoYXV0byYgdG9wRGF0YWJhc2VJZGVudGlmaWVyIDogRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9y
eSh2ZXJzaW9uUGF0aCkpIHsKKyAgICAgICAgYXV0byB0b3BPcmlnaW4gPSBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZpZXIodG9wRGF0YWJhc2VJZGVudGlm
aWVyKTsKKyAgICAgICAgaWYgKCF0b3BPcmlnaW4pCisgICAgICAgICAgICBjb250aW51ZTsKKwor
ICAgICAgICBmb3IgKGF1dG8mIGRhdGFiYXNlSWRlbnRpZmllciA6IEZpbGVTeXN0ZW06Omxpc3RE
aXJlY3RvcnkoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHZlcnNpb25QYXRo
LCB0b3BEYXRhYmFzZUlkZW50aWZpZXIpKSkgeworICAgICAgICAgICAgaWYgKGF1dG8gY2xpZW50
T3JpZ2luID0gV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlm
aWVyKGRhdGFiYXNlSWRlbnRpZmllcikpCisgICAgICAgICAgICAgICAgb3JpZ2lucy5hZGQoV2Vi
Q29yZTo6Q2xpZW50T3JpZ2luIHsgKnRvcE9yaWdpbiwgKmNsaWVudE9yaWdpbiB9KTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBvcmlnaW5zLmFkZChXZWJDb3JlOjpDbGllbnRP
cmlnaW4geyAqdG9wT3JpZ2luLCAqdG9wT3JpZ2luIH0pOworICAgICAgICB9CisgICAgfQorfQor
CitIYXNoU2V0PFdlYkNvcmU6OkNsaWVudE9yaWdpbj4gSURCU3RvcmFnZU1hbmFnZXI6Om9yaWdp
bnNPZklEQlN0b3JhZ2VEYXRhKGNvbnN0IFN0cmluZyYgcm9vdERpcmVjdG9yeSkKK3sKKyAgICBI
YXNoU2V0PFdlYkNvcmU6OkNsaWVudE9yaWdpbj4gb3JpZ2luczsKKyAgICBpZiAocm9vdERpcmVj
dG9yeS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBvcmlnaW5zOworCisgICAgZ2V0T3JpZ2lu
c0ZvclZlcnNpb24oRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJvb3REaXJl
Y3RvcnksICJ2MCIpLCBvcmlnaW5zKTsKKyAgICBnZXRPcmlnaW5zRm9yVmVyc2lvbihGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocm9vdERpcmVjdG9yeSwgInYxIiksIG9yaWdp
bnMpOworICAgIHJldHVybiBvcmlnaW5zOworfQorCitJREJTdG9yYWdlTWFuYWdlcjo6SURCU3Rv
cmFnZU1hbmFnZXIoY29uc3QgU3RyaW5nJiBwYXRoLCBJREJTdG9yYWdlUmVnaXN0cnkmIHJlZ2lz
dHJ5LCBRdW90YUNoZWNrRnVuY3Rpb24mJiBxdW90YUNoZWNrRnVuY3Rpb24pCisgICAgOiBtX3Bh
dGgocGF0aCkKKyAgICAsIG1fcmVnaXN0cnkocmVnaXN0cnkpCisgICAgLCBtX3F1b3RhQ2hlY2tG
dW5jdGlvbihXVEZNb3ZlKHF1b3RhQ2hlY2tGdW5jdGlvbikpCit7Cit9CisKK2Jvb2wgSURCU3Rv
cmFnZU1hbmFnZXI6OmlzQWN0aXZlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIW1fZGF0YWJhc2Vz
LmlzRW1wdHkoKTsKK30KKworYm9vbCBJREJTdG9yYWdlTWFuYWdlcjo6aGFzRGF0YUluTWVtb3J5
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gV1RGOjphbnlPZihtX2RhdGFiYXNlcy52YWx1ZXMoKSwg
WyZdIChhdXRvJiBkYXRhYmFzZSkgeworICAgICAgICByZXR1cm4gZGF0YWJhc2UtPmhhc0RhdGFJ
bk1lbW9yeSgpOworICAgIH0pOworfQorCit2b2lkIElEQlN0b3JhZ2VNYW5hZ2VyOjpjbG9zZURh
dGFiYXNlc0ZvckRlbGV0aW9uKCkKK3sKKyAgICBmb3IgKGF1dG8mIGRhdGFiYXNlIDogbV9kYXRh
YmFzZXMudmFsdWVzKCkpCisgICAgICAgIGRhdGFiYXNlLT5pbW1lZGlhdGVDbG9zZSgpOworCisg
ICAgbV9kYXRhYmFzZXMuY2xlYXIoKTsKK30KKwordm9pZCBJREJTdG9yYWdlTWFuYWdlcjo6c3Rv
cERhdGFiYXNlQWN0aXZpdGllc0ZvclN1c3BlbmQoKQoreworICAgIGlmIChtX3BhdGguaXNFbXB0
eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKGF1dG8mIGRhdGFiYXNlIDogbV9kYXRh
YmFzZXMudmFsdWVzKCkpIHsKKyAgICAgICAgLy8gT25seSBzdG9wIGRhdGFiYXNlcyB3aXRoIG5v
bi1lcGhlbWVyYWwgYmFja2luZyBzdG9yZSB0aGF0IGNhbiBob2xkIGRhdGFiYXNlIGZpbGUgbG9j
ay4KKyAgICAgICAgaWYgKCFkYXRhYmFzZS0+aWRlbnRpZmllcigpLmlzVHJhbnNpZW50KCkpCisg
ICAgICAgICAgICBkYXRhYmFzZS0+YWJvcnRJblByb2dyZXNzVHJhbnNhY3Rpb25zKCk7CisgICAg
fQorfQorCitXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlJiBJREJTdG9yYWdl
TWFuYWdlcjo6Z2V0T3JDcmVhdGVVbmlxdWVJREJEYXRhYmFzZShjb25zdCBXZWJDb3JlOjpJREJE
YXRhYmFzZUlkZW50aWZpZXImIGlkZW50aWZpZXIpCit7CisgICAgYXV0byBhZGRSZXN1bHQgPSBt
X2RhdGFiYXNlcy5hZGQoaWRlbnRpZmllciwgbnVsbHB0cik7CisgICAgaWYgKGFkZFJlc3VsdC5p
c05ld0VudHJ5KQorICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1
ZTxXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlPigqdGhpcywgaWRlbnRpZmll
cik7CisKKyAgICByZXR1cm4gKmFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7Cit9CisKK3ZvaWQg
SURCU3RvcmFnZU1hbmFnZXI6Om9wZW5EYXRhYmFzZShXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQkNv
bm5lY3Rpb25Ub0NsaWVudCYgY29ubmVjdGlvblRvQ2xpZW50LCBjb25zdCBXZWJDb3JlOjpJREJS
ZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEpCit7CisgICAgYXV0byYgZGF0YWJhc2UgPSBnZXRPckNy
ZWF0ZVVuaXF1ZUlEQkRhdGFiYXNlKHJlcXVlc3REYXRhLmRhdGFiYXNlSWRlbnRpZmllcigpKTsK
KyAgICBkYXRhYmFzZS5vcGVuRGF0YWJhc2VDb25uZWN0aW9uKGNvbm5lY3Rpb25Ub0NsaWVudCwg
cmVxdWVzdERhdGEpOworfQorCit2b2lkIElEQlN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVEYXRhYmFz
ZShXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub0NsaWVudCYgY29ubmVjdGlvblRv
Q2xpZW50LCBjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEpCit7Cisg
ICAgYXV0byYgZGF0YWJhc2UgPSBnZXRPckNyZWF0ZVVuaXF1ZUlEQkRhdGFiYXNlKHJlcXVlc3RE
YXRhLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICBkYXRhYmFzZS5oYW5kbGVEZWxldGUoY29u
bmVjdGlvblRvQ2xpZW50LCByZXF1ZXN0RGF0YSk7CisKKyAgICAvLyBUaGlzIGRhdGFiYXNlIGlz
IGNyZWF0ZWQgZm9yIGRlbGV0aW9uLgorICAgIGlmIChkYXRhYmFzZS50cnlDbG9zZSgpKQorICAg
ICAgICBtX2RhdGFiYXNlcy5yZW1vdmUoZGF0YWJhc2UuaWRlbnRpZmllcigpKTsKK30KKworVmVj
dG9yPFdlYkNvcmU6OklEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24+IElEQlN0b3JhZ2VNYW5hZ2Vy
OjpnZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMoKQoreworICAgIFZlY3RvcjxXZWJDb3Jl
OjpJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiByZXN1bHQ7CisgICAgSGFzaFNldDxTdHJpbmc+
IHZpc2l0ZWREYXRhYmFzZVBhdGhzOworICAgIGZvciAoYXV0byYgZGF0YWJhc2UgOiBtX2RhdGFi
YXNlcy52YWx1ZXMoKSkgeworICAgICAgICBhdXRvIHBhdGggPSBkYXRhYmFzZS0+ZmlsZVBhdGgo
KTsKKyAgICAgICAgaWYgKCFwYXRoLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHZpc2l0ZWREYXRh
YmFzZVBhdGhzLmFkZChwYXRoKTsKKworICAgICAgICBpZiAoYXV0byBuYW1lQW5kVmVyc2lvbiA9
IGRhdGFiYXNlLT5uYW1lQW5kVmVyc2lvbigpKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChX
VEZNb3ZlKCpuYW1lQW5kVmVyc2lvbikpOworICAgIH0KKworICAgIGF1dG8gZGF0YWJhc2VJZGVu
dGlmaWVycyA9IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobV9wYXRoKTsKKyAgICBmb3IgKGF1
dG8gaWRlbnRpZmllciA6IGRhdGFiYXNlSWRlbnRpZmllcnMpIHsKKyAgICAgICAgYXV0byBkYXRh
YmFzZURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3Bh
dGgsIGlkZW50aWZpZXIpOworICAgICAgICBhdXRvIGRhdGFiYXNlUGF0aCA9IFdlYkNvcmU6OklE
QlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpmdWxsRGF0YWJhc2VQYXRoRm9yRGlyZWN0
b3J5KGRhdGFiYXNlRGlyZWN0b3J5KTsKKyAgICAgICAgaWYgKHZpc2l0ZWREYXRhYmFzZVBhdGhz
LmNvbnRhaW5zKGRhdGFiYXNlUGF0aCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAg
ICBpZiAoYXV0byBuYW1lQW5kVmVyc2lvbiA9IFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURC
QmFja2luZ1N0b3JlOjpkYXRhYmFzZU5hbWVBbmRWZXJzaW9uRnJvbUZpbGUoZGF0YWJhc2VQYXRo
KSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoV1RGTW92ZSgqbmFtZUFuZFZlcnNpb24pKTsK
KyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkIElEQlN0b3JhZ2VNYW5hZ2Vy
OjpvcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiBy
ZXF1ZXN0RGF0YSkKK3sKKyAgICBhdXRvKiBkYXRhYmFzZSA9IG1fZGF0YWJhc2VzLmdldChyZXF1
ZXN0RGF0YS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAgaWYgKCFkYXRhYmFzZSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgZGF0YWJhc2UtPm9wZW5EQlJlcXVlc3RDYW5jZWxsZWQocmVxdWVz
dERhdGEucmVxdWVzdElkZW50aWZpZXIoKSk7CisKKyAgICAvLyBEYXRhYmFzZSBiZWNvbWVzIGlk
bGUgYWZ0ZXIgcmVxdWVzdCBpcyBjYW5jZWxsZWQuCisgICAgaWYgKGRhdGFiYXNlLT50cnlDbG9z
ZSgpKQorICAgICAgICBtX2RhdGFiYXNlcy5yZW1vdmUoZGF0YWJhc2UtPmlkZW50aWZpZXIoKSk7
Cit9CisKK3ZvaWQgSURCU3RvcmFnZU1hbmFnZXI6OnJlZ2lzdGVyQ29ubmVjdGlvbihXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYgY29ubmVjdGlvbikKK3sK
KyAgICBtX3JlZ2lzdHJ5LnJlZ2lzdGVyQ29ubmVjdGlvbihjb25uZWN0aW9uKTsKK30KKwordm9p
ZCBJREJTdG9yYWdlTWFuYWdlcjo6dW5yZWdpc3RlckNvbm5lY3Rpb24oV2ViQ29yZTo6SURCU2Vy
dmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCit7CisgICAgbV9y
ZWdpc3RyeS51bnJlZ2lzdGVyQ29ubmVjdGlvbihjb25uZWN0aW9uKTsKK30KKwordm9pZCBJREJT
dG9yYWdlTWFuYWdlcjo6cmVnaXN0ZXJUcmFuc2FjdGlvbihXZWJDb3JlOjpJREJTZXJ2ZXI6OlVu
aXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQoreworICAgIG1fcmVnaXN0
cnkucmVnaXN0ZXJUcmFuc2FjdGlvbih0cmFuc2FjdGlvbik7Cit9CisKK3ZvaWQgSURCU3RvcmFn
ZU1hbmFnZXI6OnVucmVnaXN0ZXJUcmFuc2FjdGlvbihXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1
ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQoreworICAgIG1fcmVnaXN0cnku
dW5yZWdpc3RlclRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKTsKK30KKworc3RkOjp1bmlxdWVfcHRy
PFdlYkNvcmU6OklEQlNlcnZlcjo6SURCQmFja2luZ1N0b3JlPiBJREJTdG9yYWdlTWFuYWdlcjo6
Y3JlYXRlQmFja2luZ1N0b3JlKGNvbnN0IFdlYkNvcmU6OklEQkRhdGFiYXNlSWRlbnRpZmllciYg
aWRlbnRpZmllcikKK3sKKyAgICBpZiAobV9wYXRoLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8V2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlJREJCYWNraW5nU3RvcmU+KGlk
ZW50aWZpZXIpOworCisgICAgaWYgKGlkZW50aWZpZXIuaXNUcmFuc2llbnQoKSkKKyAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8V2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlJREJCYWNraW5nU3Rv
cmU+KGlkZW50aWZpZXIpOworCisgICAgYXV0byBuYW1lID0gV2ViQ29yZTo6U1FMaXRlRmlsZVN5
c3RlbTo6Y29tcHV0ZUhhc2hGb3JGaWxlTmFtZShpZGVudGlmaWVyLmRhdGFiYXNlTmFtZSgpKTsK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tp
bmdTdG9yZT4oaWRlbnRpZmllciwgRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KG1fcGF0aCwgbmFtZSkpOworfQorCit2b2lkIElEQlN0b3JhZ2VNYW5hZ2VyOjpyZXF1ZXN0U3Bh
Y2UoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgdWludDY0X3Qgc2l6ZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBtX3F1b3Rh
Q2hlY2tGdW5jdGlvbihzaXplLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZU1hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZGZhOGUwODcy
YjMxNGM1MTM4NWQxZGU3NTViMTkzZWQ4Y2RhZTM2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VNYW5hZ2VyLmgKQEAgLTAs
MCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8V2ViQ29y
ZS9VbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworbmFt
ZXNwYWNlIElEQlNlcnZlciB7CitjbGFzcyBJREJCYWNraW5nU3RvcmU7CitjbGFzcyBJREJDb25u
ZWN0aW9uVG9DbGllbnQ7CitjbGFzcyBVbmlxdWVJREJEYXRhYmFzZTsKK2NsYXNzIFVuaXF1ZUlE
QlRyYW5zYWN0aW9uOworfQorCitzdHJ1Y3QgSURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbjsKK30K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIElEQlN0b3JhZ2VSZWdpc3RyeTsKKworY2xh
c3MgSURCU3RvcmFnZU1hbmFnZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6SURCU2VydmVyOjpV
bmlxdWVJREJEYXRhYmFzZU1hbmFnZXIgeworcHVibGljOgorICAgIHN0YXRpYyBTdHJpbmcgaWRi
U3RvcmFnZU9yaWdpbkRpcmVjdG9yeShjb25zdCBTdHJpbmcmIHJvb3REaXJlY3RvcnksIGNvbnN0
IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYpOworICAgIHN0YXRpYyB1aW50NjRfdCBpZGJTdG9yYWdl
U2l6ZShjb25zdCBTdHJpbmcmIG9yaWdpbkRpcmVjdG9yeSk7CisgICAgc3RhdGljIEhhc2hTZXQ8
V2ViQ29yZTo6Q2xpZW50T3JpZ2luPiBvcmlnaW5zT2ZJREJTdG9yYWdlRGF0YShjb25zdCBTdHJp
bmcmIHJvb3REaXJlY3RvcnkpOworCisgICAgdXNpbmcgUXVvdGFDaGVja0Z1bmN0aW9uID0gRnVu
Y3Rpb248dm9pZCh1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJik+OworICAgIElEQlN0b3JhZ2VNYW5hZ2VyKGNvbnN0IFN0cmluZyYgcGF0aCwg
SURCU3RvcmFnZVJlZ2lzdHJ5JiwgUXVvdGFDaGVja0Z1bmN0aW9uJiYpOworICAgIH5JREJTdG9y
YWdlTWFuYWdlcigpIGZpbmFsIHsgfQorICAgIGJvb2wgaXNBY3RpdmUoKSBjb25zdDsKKyAgICBi
b29sIGhhc0RhdGFJbk1lbW9yeSgpIGNvbnN0OworICAgIHZvaWQgY2xvc2VEYXRhYmFzZXNGb3JE
ZWxldGlvbigpOworICAgIHZvaWQgc3RvcERhdGFiYXNlQWN0aXZpdGllc0ZvclN1c3BlbmQoKTsK
KworICAgIHZvaWQgb3BlbkRhdGFiYXNlKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCQ29ubmVjdGlv
blRvQ2xpZW50JiwgY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmKTsKKyAgICB2b2lkIG9w
ZW5EQlJlcXVlc3RDYW5jZWxsZWQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmKTsKKyAg
ICB2b2lkIGRlbGV0ZURhdGFiYXNlKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCQ29ubmVjdGlvblRv
Q2xpZW50JiwgY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmKTsKKyAgICBWZWN0b3I8V2Vi
Q29yZTo6SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbj4gZ2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZl
cnNpb25zKCk7CisKK3ByaXZhdGU6CisgICAgV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJE
YXRhYmFzZSYgZ2V0T3JDcmVhdGVVbmlxdWVJREJEYXRhYmFzZShjb25zdCBXZWJDb3JlOjpJREJE
YXRhYmFzZUlkZW50aWZpZXImKTsKKworICAgIC8vIFdlYkNvcmU6OlVuaXF1ZUlEQkRhdGFiYXNl
TWFuYWdlcgorICAgIHZvaWQgcmVnaXN0ZXJDb25uZWN0aW9uKFdlYkNvcmU6OklEQlNlcnZlcjo6
VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJikgZmluYWw7CisgICAgdm9pZCB1bnJlZ2lzdGVy
Q29ubmVjdGlvbihXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlv
biYpIGZpbmFsOworICAgIHZvaWQgcmVnaXN0ZXJUcmFuc2FjdGlvbihXZWJDb3JlOjpJREJTZXJ2
ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mKSBmaW5hbDsKKyAgICB2b2lkIHVucmVn
aXN0ZXJUcmFuc2FjdGlvbihXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlVHJh
bnNhY3Rpb24mKSBmaW5hbDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SURCU2VydmVy
OjpJREJCYWNraW5nU3RvcmU+IGNyZWF0ZUJhY2tpbmdTdG9yZShjb25zdCBXZWJDb3JlOjpJREJE
YXRhYmFzZUlkZW50aWZpZXImKSBmaW5hbDsKKyAgICB2b2lkIHJlcXVlc3RTcGFjZShjb25zdCBX
ZWJDb3JlOjpDbGllbnRPcmlnaW4mLCB1aW50NjRfdCBzaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmKSBmaW5hbDsKKworICAgIFN0cmluZyBtX3BhdGg7CisgICAgSURCU3RvcmFn
ZVJlZ2lzdHJ5JiBtX3JlZ2lzdHJ5OworICAgIFF1b3RhQ2hlY2tGdW5jdGlvbiBtX3F1b3RhQ2hl
Y2tGdW5jdGlvbjsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OklEQkRhdGFiYXNlSWRlbnRpZmllciwg
c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U+PiBt
X2RhdGFiYXNlczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VSZWdpc3RyeS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZVJlZ2lzdHJ5
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xMDIxN2NlMWM1YzZiYjgyNDhlYmY5ZWY5Yzc0MDVkZWI1NjVjYTA1
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdl
L0lEQlN0b3JhZ2VSZWdpc3RyeS5jcHAKQEAgLTAsMCArMSwxMDEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSURCU3RvcmFnZVJlZ2lzdHJ5LmgiCisKKyNp
bmNsdWRlICJJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50LmgiCisjaW5jbHVkZSA8V2ViQ29y
ZS9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1VuaXF1
ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK0lEQlN0
b3JhZ2VSZWdpc3RyeTo6SURCU3RvcmFnZVJlZ2lzdHJ5KCkgPSBkZWZhdWx0OworCitXZWJDb3Jl
OjpJREJTZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub0NsaWVudCYgSURCU3RvcmFnZVJlZ2lzdHJ5Ojpn
ZXRPckNyZWF0ZUNvbm5lY3Rpb25Ub0NsaWVudChJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGNv
bm5lY3Rpb24sIFdlYkNvcmU6OklEQkNvbm5lY3Rpb25JZGVudGlmaWVyIGlkZW50aWZpZXIpCit7
CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX2Nvbm5lY3Rpb25zVG9DbGllbnQuYWRkKGlkZW50aWZp
ZXIsIG51bGxwdHIpOworICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgYWRk
UmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8SURCU3RvcmFnZUNvbm5lY3Rpb25U
b0NsaWVudD4oY29ubmVjdGlvbiwgaWRlbnRpZmllcik7CisKKyAgICBBU1NFUlQoYWRkUmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZS0+aXBjQ29ubmVjdGlvbigpID09IGNvbm5lY3Rpb24pOworICAgIHJl
dHVybiBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5jb25uZWN0aW9uVG9DbGllbnQoKTsKK30K
Kwordm9pZCBJREJTdG9yYWdlUmVnaXN0cnk6OnJlbW92ZUNvbm5lY3Rpb25Ub0NsaWVudChJUEM6
OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGNvbm5lY3Rpb24pCit7CisgICAgYXV0byBhbGxDb25uZWN0
aW9uc1RvQ2xpZW50ID0gc3RkOjpleGNoYW5nZShtX2Nvbm5lY3Rpb25zVG9DbGllbnQsIHsgfSk7
CisgICAgZm9yIChhdXRvJiBbaWRlbnRpZmllciwgY29ubmVjdGlvblRvQ2xpZW50XSA6IGFsbENv
bm5lY3Rpb25zVG9DbGllbnQpIHsKKyAgICAgICAgaWYgKGNvbm5lY3Rpb25Ub0NsaWVudC0+aXBj
Q29ubmVjdGlvbigpICE9IGNvbm5lY3Rpb24pIHsKKyAgICAgICAgICAgIG1fY29ubmVjdGlvbnNU
b0NsaWVudC5hZGQoaWRlbnRpZmllciwgV1RGTW92ZShjb25uZWN0aW9uVG9DbGllbnQpKTsKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGNvbm5lY3Rpb25Ub0NsaWVu
dC0+Y29ubmVjdGlvblRvQ2xpZW50KCkuY29ubmVjdGlvblRvQ2xpZW50Q2xvc2VkKCk7CisgICAg
fQorfQorCit2b2lkIElEQlN0b3JhZ2VSZWdpc3RyeTo6cmVnaXN0ZXJDb25uZWN0aW9uKFdlYkNv
cmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiBjb25uZWN0aW9uKQor
eworICAgIGF1dG8gaWRlbnRpZmllciA9IGNvbm5lY3Rpb24uaWRlbnRpZmllcigpOworICAgIEFT
U0VSVCghbV9jb25uZWN0aW9ucy5jb250YWlucyhpZGVudGlmaWVyKSk7CisKKyAgICBtX2Nvbm5l
Y3Rpb25zLmFkZChpZGVudGlmaWVyLCBjb25uZWN0aW9uKTsKK30KKwordm9pZCBJREJTdG9yYWdl
UmVnaXN0cnk6OnVucmVnaXN0ZXJDb25uZWN0aW9uKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVl
SURCRGF0YWJhc2VDb25uZWN0aW9uJiBjb25uZWN0aW9uKQoreworICAgIGF1dG8gaWRlbnRpZmll
ciA9IGNvbm5lY3Rpb24uaWRlbnRpZmllcigpOworICAgIEFTU0VSVChtX2Nvbm5lY3Rpb25zLmNv
bnRhaW5zKGlkZW50aWZpZXIpKTsKKworICAgIG1fY29ubmVjdGlvbnMucmVtb3ZlKGlkZW50aWZp
ZXIpOworfQorCit2b2lkIElEQlN0b3JhZ2VSZWdpc3RyeTo6cmVnaXN0ZXJUcmFuc2FjdGlvbihX
ZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0
aW9uKQoreworICAgIGF1dG8gaWRlbnRpZmllciA9IHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlm
aWVyKCk7CisgICAgQVNTRVJUKCFtX3RyYW5zYWN0aW9ucy5jb250YWlucyhpZGVudGlmaWVyKSk7
CisKKyAgICBtX3RyYW5zYWN0aW9ucy5hZGQoaWRlbnRpZmllciwgdHJhbnNhY3Rpb24pOworfQor
Cit2b2lkIElEQlN0b3JhZ2VSZWdpc3RyeTo6dW5yZWdpc3RlclRyYW5zYWN0aW9uKFdlYkNvcmU6
OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCit7
CisgICAgYXV0byBpZGVudGlmaWVyID0gdHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKTsK
KyAgICBBU1NFUlQobV90cmFuc2FjdGlvbnMuY29udGFpbnMoaWRlbnRpZmllcikpOworCisgICAg
bV90cmFuc2FjdGlvbnMucmVtb3ZlKGlkZW50aWZpZXIpOworfQorCitXZWJDb3JlOjpJREJTZXJ2
ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiogSURCU3RvcmFnZVJlZ2lzdHJ5OjpnZXRD
b25uZWN0aW9uKHVpbnQ2NF90IGlkZW50aWZpZXIpCit7CisgICAgcmV0dXJuIG1fY29ubmVjdGlv
bnMuZ2V0KGlkZW50aWZpZXIpLmdldCgpOworfQorCitXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1
ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24qIElEQlN0b3JhZ2VSZWdpc3RyeTo6Z2V0VHJhbnNhY3Rp
b24oV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgcmV0
dXJuIG1fdHJhbnNhY3Rpb25zLmdldChpZGVudGlmaWVyKS5nZXQoKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0
b3JhZ2UvSURCU3RvcmFnZVJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3N0b3JhZ2UvSURCU3RvcmFnZVJlZ2lzdHJ5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDIzNGUwZTQxYTFmYzVm
M2JiOTkxYWRiZDJlMDYwMmMzOGU5NDU4NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlUmVnaXN0cnkuaApAQCAtMCwwICsx
LDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDb25uZWN0aW9u
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9JREJSZXNvdXJjZUlkZW50aWZpZXIuaD4KKyNpbmNsdWRl
IDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgSURCU2Vy
dmVyIHsKK2NsYXNzIFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbjsKK2NsYXNzIFVuaXF1ZUlE
QkRhdGFiYXNlVHJhbnNhY3Rpb247Cit9Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFz
cyBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OworCitjbGFzcyBJREJTdG9yYWdlUmVnaXN0
cnkgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIElEQlN0b3Jh
Z2VSZWdpc3RyeSgpOworICAgIFdlYkNvcmU6OklEQlNlcnZlcjo6SURCQ29ubmVjdGlvblRvQ2xp
ZW50JiBnZXRPckNyZWF0ZUNvbm5lY3Rpb25Ub0NsaWVudChJUEM6OkNvbm5lY3Rpb246OlVuaXF1
ZUlELCBXZWJDb3JlOjpJREJDb25uZWN0aW9uSWRlbnRpZmllcik7CisgICAgdm9pZCByZW1vdmVD
b25uZWN0aW9uVG9DbGllbnQoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCk7CisgICAgdm9pZCBy
ZWdpc3RlckNvbm5lY3Rpb24oV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNv
bm5lY3Rpb24mKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJDb25uZWN0aW9uKFdlYkNvcmU6OklEQlNl
cnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJik7CisgICAgV2ViQ29yZTo6SURCU2Vy
dmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24qIGdldENvbm5lY3Rpb24odWludDY0X3Qg
aWRlbnRpZmllcik7CisgICAgdm9pZCByZWdpc3RlclRyYW5zYWN0aW9uKFdlYkNvcmU6OklEQlNl
cnZlcjo6VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYpOworICAgIHZvaWQgdW5yZWdpc3Rl
clRyYW5zYWN0aW9uKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VUcmFuc2Fj
dGlvbiYpOworICAgIFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VUcmFuc2Fj
dGlvbiogZ2V0VHJhbnNhY3Rpb24oV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyKTsKKwor
cHJpdmF0ZToKKyAgICBIYXNoTWFwPFdlYkNvcmU6OklEQkNvbm5lY3Rpb25JZGVudGlmaWVyLCBz
dGQ6OnVuaXF1ZV9wdHI8SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudD4+IG1fY29ubmVjdGlv
bnNUb0NsaWVudDsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBXZWFrUHRyPFdlYkNvcmU6OklEQlNl
cnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uPj4gbV9jb25uZWN0aW9uczsKKyAgICBI
YXNoTWFwPFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciwgV2Vha1B0cjxXZWJDb3JlOjpJ
REJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24+PiBtX3RyYW5zYWN0aW9uczsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmNwcApp
bmRleCA4MTNlNmU5NWExM2FiZTM5MTg2ZDE5YjJkYWIyODdiYmI1NTI0Zjc5Li42MzU1ZjcxYjg2
YjY1MjJiZWU2NDk0OWJlYzUyNzBhMzUzZmQwYjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2Vy
LmNwcApAQCAtMjYsMTggKzI2LDI2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmgiCiAKKyNpbmNsdWRlICJDYWNoZVN0b3JhZ2VFbmdpbmUu
aCIKICNpbmNsdWRlICJGaWxlU3lzdGVtU3RvcmFnZUhhbmRsZVJlZ2lzdHJ5LmgiCiAjaW5jbHVk
ZSAiRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyLmgiCisjaW5jbHVkZSAiSURCU3RvcmFnZUNvbm5l
Y3Rpb25Ub0NsaWVudC5oIgorI2luY2x1ZGUgIklEQlN0b3JhZ2VNYW5hZ2VyLmgiCisjaW5jbHVk
ZSAiSURCU3RvcmFnZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiTG9jYWxTdG9yYWdlTWFuYWdlci5o
IgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1Byb3h5TWVz
c2FnZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrU3RvcmFnZU1hbmFnZXJNZXNzYWdlcy5oIgogI2lu
Y2x1ZGUgIk9yaWdpblN0b3JhZ2VNYW5hZ2VyLmgiCisjaW5jbHVkZSAiUXVvdGFNYW5hZ2VyLmgi
CiAjaW5jbHVkZSAiU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFy
ZWFCYXNlLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFyZWFNYXBNZXNzYWdlcy5oIgogI2luY2x1ZGUg
IlN0b3JhZ2VBcmVhUmVnaXN0cnkuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVR5cGUuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VbmlxdWVJ
REJEYXRhYmFzZVRyYW5zYWN0aW9uLmg+CiAjaW5jbHVkZSA8cGFsL2NyeXB0by9DcnlwdG9EaWdl
c3QuaD4KICNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KICNpbmNsdWRlIDx3dGYvU3VzcGVuZGFibGVX
b3JrUXVldWUuaD4KQEAgLTEwMCwyMiArMTA4LDI4IEBAIHN0YXRpYyB2b2lkIGRlbGV0ZU9yaWdp
bkZpbGVJZk5lY2Vzc2FyeShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogICAgICAgICBGaWxlU3lz
dGVtOjpkZWxldGVGaWxlKGZpbGVQYXRoKTsKIH0KIAotUmVmPE5ldHdvcmtTdG9yYWdlTWFuYWdl
cj4gTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjcmVhdGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY3VzdG9tTG9jYWxTdG9yYWdlUGF0
aCkKK1JlZjxOZXR3b3JrU3RvcmFnZU1hbmFnZXI+IE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y3Jl
YXRlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBj
b25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY3VzdG9tTG9jYWxT
dG9yYWdlUGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21JREJTdG9yYWdlUGF0aCwgY29uc3QgU3Ry
aW5nJiBjdXN0b21DYWNoZVN0b3JhZ2VQYXRoLCB1aW50NjRfdCBkZWZhdWx0T3JpZ2luUXVvdGEs
IHVpbnQ2NF90IGRlZmF1bHRUaGlyZFBhcnR5T3JpZ2luUXVvdGEpCiB7Ci0gICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyKHNlc3Npb25JRCwgcGF0aCwgY3VzdG9t
TG9jYWxTdG9yYWdlUGF0aCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5ldHdvcmtTdG9y
YWdlTWFuYWdlcihzZXNzaW9uSUQsIGNvbm5lY3Rpb24sIHBhdGgsIGN1c3RvbUxvY2FsU3RvcmFn
ZVBhdGgsIGN1c3RvbUlEQlN0b3JhZ2VQYXRoLCBjdXN0b21DYWNoZVN0b3JhZ2VQYXRoLCBkZWZh
dWx0T3JpZ2luUXVvdGEsIGRlZmF1bHRUaGlyZFBhcnR5T3JpZ2luUXVvdGEpKTsKIH0KIAotTmV0
d29ya1N0b3JhZ2VNYW5hZ2VyOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXIoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY3VzdG9tTG9jYWxT
dG9yYWdlUGF0aCkKK05ldHdvcmtTdG9yYWdlTWFuYWdlcjo6TmV0d29ya1N0b3JhZ2VNYW5hZ2Vy
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25u
ZWN0aW9uLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY3VzdG9tTG9jYWxTdG9y
YWdlUGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21JREJTdG9yYWdlUGF0aCwgY29uc3QgU3RyaW5n
JiBjdXN0b21DYWNoZVN0b3JhZ2VQYXRoLCB1aW50NjRfdCBkZWZhdWx0T3JpZ2luUXVvdGEsIHVp
bnQ2NF90IGRlZmF1bHRUaGlyZFBhcnR5T3JpZ2luUXVvdGEpCiAgICAgOiBtX3Nlc3Npb25JRChz
ZXNzaW9uSUQpCiAgICAgLCBtX3F1ZXVlKFN1c3BlbmRhYmxlV29ya1F1ZXVlOjpjcmVhdGUoImNv
bS5hcHBsZS5XZWJLaXQuU3RvcmFnZSIpKQorICAgICwgbV9kZWZhdWx0T3JpZ2luUXVvdGEoZGVm
YXVsdE9yaWdpblF1b3RhKQorICAgICwgbV9kZWZhdWx0VGhpcmRQYXJ0eU9yaWdpblF1b3RhKGRl
ZmF1bHRUaGlyZFBhcnR5T3JpZ2luUXVvdGEpCisgICAgLCBtX3BhcmVudENvbm5lY3Rpb24oY29u
bmVjdGlvbikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgbV9xdWV1
ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBwYXRoID0g
cGF0aC5pc29sYXRlZENvcHkoKSwgY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCA9IGNyb3NzVGhyZWFk
Q29weShjdXN0b21Mb2NhbFN0b3JhZ2VQYXRoKV0oKSBtdXRhYmxlIHsKKyAgICBtX3F1ZXVlLT5k
aXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHBhdGggPSBwYXRo
Lmlzb2xhdGVkQ29weSgpLCBjdXN0b21Mb2NhbFN0b3JhZ2VQYXRoID0gY3Jvc3NUaHJlYWRDb3B5
KGN1c3RvbUxvY2FsU3RvcmFnZVBhdGgpLCBjdXN0b21JREJTdG9yYWdlUGF0aCA9IGNyb3NzVGhy
ZWFkQ29weShjdXN0b21JREJTdG9yYWdlUGF0aCksIGN1c3RvbUNhY2hlU3RvcmFnZVBhdGggPSBj
cm9zc1RocmVhZENvcHkoY3VzdG9tQ2FjaGVTdG9yYWdlUGF0aCldKCkgbXV0YWJsZSB7CiAgICAg
ICAgIG1fZmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeSA9IG1ha2VVbmlxdWU8RmlsZVN5
c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeT4oKTsKICAgICAgICAgbV9zdG9yYWdlQXJlYVJlZ2lz
dHJ5ID0gbWFrZVVuaXF1ZTxTdG9yYWdlQXJlYVJlZ2lzdHJ5PigpOworICAgICAgICBtX2lkYlN0
b3JhZ2VSZWdpc3RyeSA9IG1ha2VVbmlxdWU8SURCU3RvcmFnZVJlZ2lzdHJ5PigpOwogICAgICAg
ICBtX3BhdGggPSBwYXRoOwogICAgICAgICBtX2N1c3RvbUxvY2FsU3RvcmFnZVBhdGggPSBjdXN0
b21Mb2NhbFN0b3JhZ2VQYXRoOworICAgICAgICBtX2N1c3RvbUlEQlN0b3JhZ2VQYXRoID0gY3Vz
dG9tSURCU3RvcmFnZVBhdGg7CisgICAgICAgIG1fY3VzdG9tQ2FjaGVTdG9yYWdlUGF0aCA9IGN1
c3RvbUNhY2hlU3RvcmFnZVBhdGg7CiAgICAgICAgIGlmICghbV9wYXRoLmlzRW1wdHkoKSkgewog
ICAgICAgICAgICAgYXV0byBzYWx0UGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChtX3BhdGgsICJzYWx0Iik7CiAgICAgICAgICAgICBtX3NhbHQgPSB2YWx1ZU9yRGVm
YXVsdChGaWxlU3lzdGVtOjpyZWFkT3JNYWtlU2FsdChzYWx0UGF0aCkpOwpAQCAtMTMxLDcgKzE0
NSwxMCBAQCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6On5OZXR3b3JrU3RvcmFnZU1hbmFnZXIoKQog
CiBib29sIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y2FuSGFuZGxlVHlwZXMoT3B0aW9uU2V0PFdl
YnNpdGVEYXRhVHlwZT4gdHlwZXMpCiB7Ci0gICAgcmV0dXJuIHR5cGVzLmNvbnRhaW5zKFdlYnNp
dGVEYXRhVHlwZTo6TG9jYWxTdG9yYWdlKSB8fCB0eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5
cGU6OlNlc3Npb25TdG9yYWdlKSB8fCB0eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkZp
bGVTeXN0ZW0pOworICAgIHJldHVybiB0eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6Okxv
Y2FsU3RvcmFnZSkKKyAgICAgICAgfHwgdHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpT
ZXNzaW9uU3RvcmFnZSkKKyAgICAgICAgfHwgdHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBl
OjpGaWxlU3lzdGVtKQorICAgICAgICB8fCB0eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6
OkluZGV4ZWREQkRhdGFiYXNlcyk7CiB9CiAKIHZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpj
bG9zZSgpCkBAIC0xNzAsNiArMTg3LDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnN0
b3BSZWNlaXZpbmdNZXNzYWdlRnJvbUNvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uJgogCiAgICAg
Y29ubmVjdGlvbi5yZW1vdmVXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6Ok5ldHdv
cmtTdG9yYWdlTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKICAgICBtX3F1ZXVlLT5k
aXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNvbm5lY3Rpb24g
PSBjb25uZWN0aW9uLnVuaXF1ZUlEKCldKCkgbXV0YWJsZSB7CisgICAgICAgIG1faWRiU3RvcmFn
ZVJlZ2lzdHJ5LT5yZW1vdmVDb25uZWN0aW9uVG9DbGllbnQoY29ubmVjdGlvbik7CiAgICAgICAg
IG1fbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcnMucmVtb3ZlSWYoWyZdKGF1dG8mIGVudHJ5KSB7
CiAgICAgICAgICAgICBhdXRvJiBtYW5hZ2VyID0gZW50cnkudmFsdWU7CiAgICAgICAgICAgICBt
YW5hZ2VyLT5jb25uZWN0aW9uQ2xvc2VkKGNvbm5lY3Rpb24pOwpAQCAtMjIyLDcgKzI0MCwxNCBA
QCBPcmlnaW5TdG9yYWdlTWFuYWdlciYgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpsb2NhbE9yaWdp
blN0b3JhZ2VNYW5hZ2VyKGNvbnN0IFdlYgogICAgICAgICAgICAgICAgIHdyaXRlT3JpZ2luVG9G
aWxlSWZOZWNlc3Nhcnkob3JpZ2luRmlsZVBhdGgob3JpZ2luRGlyZWN0b3J5KSwgb3JpZ2luKTsK
ICAgICAgICAgICAgIH0pOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBtYWtlVW5pcXVlPE9y
aWdpblN0b3JhZ2VNYW5hZ2VyPihXVEZNb3ZlKG9yaWdpbkRpcmVjdG9yeSksIExvY2FsU3RvcmFn
ZU1hbmFnZXI6OmxvY2FsU3RvcmFnZUZpbGVQYXRoKG1fY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCwg
b3JpZ2luKSk7CisgICAgICAgIGF1dG8gbG9jYWxTdG9yYWdlUGF0aCA9IExvY2FsU3RvcmFnZU1h
bmFnZXI6OmxvY2FsU3RvcmFnZUZpbGVQYXRoKG1fY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCwgb3Jp
Z2luKTsKKyAgICAgICAgYXV0byBpZGJTdG9yYWdlUGF0aCA9IElEQlN0b3JhZ2VNYW5hZ2VyOjpp
ZGJTdG9yYWdlT3JpZ2luRGlyZWN0b3J5KG1fY3VzdG9tSURCU3RvcmFnZVBhdGgsIG9yaWdpbik7
CisgICAgICAgIGF1dG8gY2FjaGVTdG9yYWdlUGF0aCA9IENhY2hlU3RvcmFnZTo6RW5naW5lOjpz
dG9yYWdlUGF0aChtX2N1c3RvbUNhY2hlU3RvcmFnZVBhdGgsIG9yaWdpbik7CisgICAgICAgIHVp
bnQ2NF90IHF1b3RhID0gb3JpZ2luLnRvcE9yaWdpbiA9PSBvcmlnaW4uY2xpZW50T3JpZ2luID8g
bV9kZWZhdWx0T3JpZ2luUXVvdGEgOiBtX2RlZmF1bHRUaGlyZFBhcnR5T3JpZ2luUXVvdGE7Cisg
ICAgICAgIFF1b3RhTWFuYWdlcjo6SW5jcmVhc2VRdW90YUZ1bmN0aW9uIGluY3JlYXNlUXVvdGFG
dW5jdGlvbiA9IFtzZXNzaW9uSUQgPSBtX3Nlc3Npb25JRCwgb3JpZ2luLCBjb25uZWN0aW9uID0g
bV9wYXJlbnRDb25uZWN0aW9uXSAoYXV0byBpZGVudGlmaWVyLCBhdXRvIGN1cnJlbnRRdW90YSwg
YXV0byBjdXJyZW50VXNhZ2UsIGF1dG8gcmVxdWVzdGVkSW5jcmVhc2UpIG11dGFibGUgeworICAg
ICAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKGNvbm5lY3Rpb24sIE1lc3NhZ2VzOjpOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpJbmNyZWFzZVF1b3RhKHNlc3Npb25JRCwgb3JpZ2luLCBpZGVudGlm
aWVyLCBjdXJyZW50UXVvdGEsIGN1cnJlbnRVc2FnZSwgcmVxdWVzdGVkSW5jcmVhc2UpLCAwKTsK
KyAgICAgICAgfTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8T3JpZ2luU3RvcmFnZU1hbmFn
ZXI+KHF1b3RhLCBXVEZNb3ZlKGluY3JlYXNlUXVvdGFGdW5jdGlvbiksIFdURk1vdmUob3JpZ2lu
RGlyZWN0b3J5KSwgV1RGTW92ZShsb2NhbFN0b3JhZ2VQYXRoKSwgV1RGTW92ZShpZGJTdG9yYWdl
UGF0aCksIFdURk1vdmUoY2FjaGVTdG9yYWdlUGF0aCkpOwogICAgIH0pLml0ZXJhdG9yLT52YWx1
ZTsKIH0KIApAQCAtMjgyLDYgKzMwNywxNiBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6
Y2xlYXJTdG9yYWdlRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgYwogICAg
IH0pOwogfQogCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGlkSW5jcmVhc2VRdW90YShj
b25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgUXVvdGFJbmNyZWFzZVJlcXVlc3RJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IG5ld1F1b3RhKQor
eworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBtX3F1ZXVlLT5kaXNwYXRj
aChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIG9yaWdpbiA9IGNyb3NzVGhy
ZWFkQ29weShvcmlnaW4pLCBpZGVudGlmaWVyLCBuZXdRdW90YV0oKSBtdXRhYmxlIHsKKyAgICAg
ICAgaWYgKGF1dG8gbWFuYWdlciA9IG1fbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcnMuZ2V0KG9y
aWdpbikpCisgICAgICAgICAgICBtYW5hZ2VyLT5xdW90YU1hbmFnZXIoKS5kaWRJbmNyZWFzZVF1
b3RhKGlkZW50aWZpZXIsIG5ld1F1b3RhKTsKKyAgICB9KTsKK30KKwogdm9pZCBOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6OmZpbGVTeXN0ZW1HZXREaXJlY3RvcnkoSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChFeHBlY3RlZDxXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwg
RmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFT
U0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAtNDUyLDYgKzQ4Nyw5IEBAIEhhc2hTZXQ8V2Vi
Q29yZTo6Q2xpZW50T3JpZ2luPiBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmdldEFsbE9yaWdpbnMo
KQogICAgIGZvciAoYXV0byYgb3JpZ2luIDogTG9jYWxTdG9yYWdlTWFuYWdlcjo6b3JpZ2luc09m
TG9jYWxTdG9yYWdlRGF0YShtX2N1c3RvbUxvY2FsU3RvcmFnZVBhdGgpKQogICAgICAgICBhbGxP
cmlnaW5zLmFkZChXZWJDb3JlOjpDbGllbnRPcmlnaW4geyBvcmlnaW4sIG9yaWdpbiB9KTsKIAor
ICAgIGZvciAoYXV0byYgb3JpZ2luIDogSURCU3RvcmFnZU1hbmFnZXI6Om9yaWdpbnNPZklEQlN0
b3JhZ2VEYXRhKG1fY3VzdG9tSURCU3RvcmFnZVBhdGgpKQorICAgICAgICBhbGxPcmlnaW5zLmFk
ZChvcmlnaW4pOworCiAgICAgcmV0dXJuIGFsbE9yaWdpbnM7CiB9CiAKQEAgLTU3OSwxMiArNjE3
LDEyIEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjptb3ZlRGF0YShjb25zdCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEmIHNvdXJjZSwKICAgICAgICAgYXV0byB0YXJnZXRPcmlnaW4g
PSBXZWJDb3JlOjpDbGllbnRPcmlnaW4geyB0YXJnZXQsIHRhcmdldCB9OwogICAgICAgICAKICAg
ICAgICAgLy8gQ2xlYXIgZXhpc3RpbmcgZGF0YSBvZiB0YXJnZXQgb3JpZ2luLgotICAgICAgICBP
cHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB0eXBlcyA9IHsgV2Vic2l0ZURhdGFUeXBlOjpGaWxl
U3lzdGVtLCBXZWJzaXRlRGF0YVR5cGU6OkxvY2FsU3RvcmFnZSwgV2Vic2l0ZURhdGFUeXBlOjpT
ZXNzaW9uU3RvcmFnZSAgfTsKKyAgICAgICAgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gdHlw
ZXMgPSB7IFdlYnNpdGVEYXRhVHlwZTo6RmlsZVN5c3RlbSwgV2Vic2l0ZURhdGFUeXBlOjpMb2Nh
bFN0b3JhZ2UsIFdlYnNpdGVEYXRhVHlwZTo6U2Vzc2lvblN0b3JhZ2UsIFdlYnNpdGVEYXRhVHlw
ZTo6SW5kZXhlZERCRGF0YWJhc2VzICB9OwogICAgICAgICBsb2NhbE9yaWdpblN0b3JhZ2VNYW5h
Z2VyKHRhcmdldE9yaWdpbikuZGVsZXRlRGF0YSh0eXBlcywgLVdhbGxUaW1lOjppbmZpbml0eSgp
KTsKICAgICAgICAgcmVtb3ZlT3JpZ2luU3RvcmFnZU1hbmFnZXJJZlBvc3NpYmxlKHRhcmdldE9y
aWdpbik7CiAKICAgICAgICAgLy8gTW92ZSBkYXRhIGZyb20gc291cmNlIG9yaWdpbiB0byB0YXJn
ZXQgb3JpZ2luLgotICAgICAgICBsb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2VyKHNvdXJjZU9yaWdp
bikubW92ZURhdGEob3JpZ2luRGlyZWN0b3J5UGF0aChtX3BhdGgsIHRhcmdldE9yaWdpbiwgbV9z
YWx0KSwgTG9jYWxTdG9yYWdlTWFuYWdlcjo6bG9jYWxTdG9yYWdlRmlsZVBhdGgobV9jdXN0b21M
b2NhbFN0b3JhZ2VQYXRoLCB0YXJnZXRPcmlnaW4pKTsKKyAgICAgICAgbG9jYWxPcmlnaW5TdG9y
YWdlTWFuYWdlcihzb3VyY2VPcmlnaW4pLm1vdmVEYXRhKG9yaWdpbkRpcmVjdG9yeVBhdGgobV9w
YXRoLCB0YXJnZXRPcmlnaW4sIG1fc2FsdCksIExvY2FsU3RvcmFnZU1hbmFnZXI6OmxvY2FsU3Rv
cmFnZUZpbGVQYXRoKG1fY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCwgdGFyZ2V0T3JpZ2luKSwgSURC
U3RvcmFnZU1hbmFnZXI6OmlkYlN0b3JhZ2VPcmlnaW5EaXJlY3RvcnkobV9jdXN0b21JREJTdG9y
YWdlUGF0aCwgdGFyZ2V0T3JpZ2luKSk7CiAgICAgICAgIHJlbW92ZU9yaWdpblN0b3JhZ2VNYW5h
Z2VySWZQb3NzaWJsZShzb3VyY2VPcmlnaW4pOwogCiAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5k
aXNwYXRjaChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CkBAIC01OTksNiArNjM3LDggQEAg
dm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnN1c3BlbmQoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGUKICAgICAgICAgZm9yIChhdXRvJiBtYW5hZ2VyIDogbV9s
b2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2Vycy52YWx1ZXMoKSkgewogICAgICAgICAgICAgaWYgKGF1
dG8gbG9jYWxTdG9yYWdlTWFuYWdlciA9IG1hbmFnZXItPmV4aXN0aW5nTG9jYWxTdG9yYWdlTWFu
YWdlcigpKQogICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZU1hbmFnZXItPnN5bmNMb2NhbFN0
b3JhZ2UoKTsKKyAgICAgICAgICAgIGlmIChhdXRvIGlkYlN0b3JhZ2VNYW5hZ2VyID0gbWFuYWdl
ci0+ZXhpc3RpbmdJREJTdG9yYWdlTWFuYWdlcigpKQorICAgICAgICAgICAgICAgIGlkYlN0b3Jh
Z2VNYW5hZ2VyLT5zdG9wRGF0YWJhc2VBY3Rpdml0aWVzRm9yU3VzcGVuZCgpOwogICAgICAgICB9
CiAgICAgfSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQpAQCAtNjM2LDYgKzY3Niw1
MiBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6c3luY0xvY2FsU3RvcmFnZShDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldAogICAgIH0pOwogfQogCit2b2lkIE5ldHdvcmtT
dG9yYWdlTWFuYWdlcjo6cmVnaXN0ZXJUZW1wb3JhcnlCbG9iRmlsZVBhdGhzKElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVQYXRocykKK3sKKyAg
ICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBjb25uZWN0aW9uSUQgPSBjb25uZWN0
aW9uLnVuaXF1ZUlEKCksIGZpbGVQYXRocyA9IGNyb3NzVGhyZWFkQ29weShmaWxlUGF0aHMpXSB7
CisgICAgICAgIGF1dG8mIHRlbXBvcmFyeUJsb2JQYXRocyA9IG1fdGVtcG9yYXJ5QmxvYlBhdGhz
QnlDb25uZWN0aW9uLmVuc3VyZShjb25uZWN0aW9uSUQsIFtdIHsKKyAgICAgICAgICAgIHJldHVy
biBIYXNoU2V0PFN0cmluZz4geyB9OworICAgICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CisgICAg
ICAgIHRlbXBvcmFyeUJsb2JQYXRocy5hZGQoZmlsZVBhdGhzLmJlZ2luKCksIGZpbGVQYXRocy5l
bmQoKSk7CisgICAgfSk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpyZXF1ZXN0
U3BhY2UoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIHVpbnQ2NF90IHNpemUs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7Cisg
ICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgb3JpZ2luID0gY3Jvc3NUaHJlYWRD
b3B5KG9yaWdpbiksIHNpemUsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIGxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIo
b3JpZ2luKS5xdW90YU1hbmFnZXIoKS5yZXF1ZXN0U3BhY2Uoc2l6ZSwgW2NvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1dG8gZGVjaXNpb24pIG11dGFibGUg
eworICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBkZWNpc2lvbl0oKSBtdXRhYmxlIHsKKyAg
ICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihkZWNpc2lvbiA9PSBRdW90YU1hbmFnZXI6
OkRlY2lzaW9uOjpHcmFudCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfSk7
Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpyZXNldFF1b3RhRm9yVGVzdGluZyhD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNT
RVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgZm9yIChhdXRvJiBtYW5h
Z2VyIDogbV9sb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2Vycy52YWx1ZXMoKSkKKyAgICAgICAgICAg
IG1hbmFnZXItPnF1b3RhTWFuYWdlcigpLnJlc2V0UXVvdGFGb3JUZXN0aW5nKCk7CisgICAgICAg
IFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cisg
ICAgfSk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpyZXNldFF1b3RhVXBkYXRl
ZEJhc2VkT25Vc2FnZUZvclRlc3RpbmcoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmln
aW4pCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIG1fcXVldWUtPmRp
c3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgb3JpZ2luID0gY3Jv
c3NUaHJlYWRDb3B5KG9yaWdpbildKCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChhdXRvIG1hbmFn
ZXIgPSBtX2xvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXJzLmdldChvcmlnaW4pKQorICAgICAgICAg
ICAgbWFuYWdlci0+cXVvdGFNYW5hZ2VyKCkucmVzZXRRdW90YVVwZGF0ZWRCYXNlZE9uVXNhZ2VG
b3JUZXN0aW5nKCk7CisgICAgfSk7Cit9CisKIHZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpj
b25uZWN0VG9TdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFdlYkNvcmU6
OlN0b3JhZ2VUeXBlIHR5cGUsIFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllciBzb3VyY2VJZGVudGlm
aWVyLCBTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllciBuYW1lc3BhY2VJZGVudGlmaWVyLCBjb25z
dCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChT
dG9yYWdlQXJlYUlkZW50aWZpZXIsIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+LCB1aW50NjRfdCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7
CkBAIC03MjMsNSArODA5LDE5NSBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y2xlYXIo
SVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBTdG9yYWdlQXJlYUlkZW50aQogICAgIGNvbXBs
ZXRpb25IYW5kbGVyKCk7CiB9CiAKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpvcGVuRGF0
YWJhc2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpJREJSZXF1
ZXN0RGF0YSYgcmVxdWVzdERhdGEpCit7CisgICAgYXV0byYgY29ubmVjdGlvblRvQ2xpZW50ID0g
bV9pZGJTdG9yYWdlUmVnaXN0cnktPmdldE9yQ3JlYXRlQ29ubmVjdGlvblRvQ2xpZW50KGNvbm5l
Y3Rpb24udW5pcXVlSUQoKSwgcmVxdWVzdERhdGEucmVxdWVzdElkZW50aWZpZXIoKS5jb25uZWN0
aW9uSWRlbnRpZmllcigpKTsKKyAgICBsb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2VyKHJlcXVlc3RE
YXRhLmRhdGFiYXNlSWRlbnRpZmllcigpLm9yaWdpbigpKS5pZGJTdG9yYWdlTWFuYWdlcigqbV9p
ZGJTdG9yYWdlUmVnaXN0cnkpLm9wZW5EYXRhYmFzZShjb25uZWN0aW9uVG9DbGllbnQsIHJlcXVl
c3REYXRhKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Om9wZW5EQlJlcXVlc3RD
YW5jZWxsZWQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhKQorewor
ICAgIGxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIocmVxdWVzdERhdGEuZGF0YWJhc2VJZGVudGlm
aWVyKCkub3JpZ2luKCkpLmlkYlN0b3JhZ2VNYW5hZ2VyKCptX2lkYlN0b3JhZ2VSZWdpc3RyeSku
b3BlbkRCUmVxdWVzdENhbmNlbGxlZChyZXF1ZXN0RGF0YSk7Cit9CisKK3ZvaWQgTmV0d29ya1N0
b3JhZ2VNYW5hZ2VyOjpkZWxldGVEYXRhYmFzZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
IGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkKK3sKKyAgICBhdXRv
JiBjb25uZWN0aW9uVG9DbGllbnQgPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+Z2V0T3JDcmVhdGVD
b25uZWN0aW9uVG9DbGllbnQoY29ubmVjdGlvbi51bmlxdWVJRCgpLCByZXF1ZXN0RGF0YS5yZXF1
ZXN0SWRlbnRpZmllcigpLmNvbm5lY3Rpb25JZGVudGlmaWVyKCkpOworICAgIGxvY2FsT3JpZ2lu
U3RvcmFnZU1hbmFnZXIocmVxdWVzdERhdGEuZGF0YWJhc2VJZGVudGlmaWVyKCkub3JpZ2luKCkp
LmlkYlN0b3JhZ2VNYW5hZ2VyKCptX2lkYlN0b3JhZ2VSZWdpc3RyeSkuZGVsZXRlRGF0YWJhc2Uo
Y29ubmVjdGlvblRvQ2xpZW50LCByZXF1ZXN0RGF0YSk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyOjplc3RhYmxpc2hUcmFuc2FjdGlvbih1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rp
b25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkluZm8mIHRyYW5zYWN0
aW9uSW5mbykKK3sKKyAgICBpZiAoYXV0byBjb25uZWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0
cnktPmdldENvbm5lY3Rpb24oZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcikpCisgICAgICAg
IGNvbm5lY3Rpb24tPmVzdGFibGlzaFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSW5mbyk7Cit9CisK
K3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkYXRhYmFzZUNvbm5lY3Rpb25QZW5kaW5nQ2xv
c2UodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcikKK3sKKyAgICBpZiAoYXV0
byBjb25uZWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPmdldENvbm5lY3Rpb24oZGF0YWJh
c2VDb25uZWN0aW9uSWRlbnRpZmllcikpCisgICAgICAgIGNvbm5lY3Rpb24tPmNvbm5lY3Rpb25Q
ZW5kaW5nQ2xvc2VGcm9tQ2xpZW50KCk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2Vy
OjpkYXRhYmFzZUNvbm5lY3Rpb25DbG9zZWQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRl
bnRpZmllcikKK3sKKyAgICBpZiAoYXV0byBjb25uZWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0
cnktPmdldENvbm5lY3Rpb24oZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcikpCisgICAgICAg
IGNvbm5lY3Rpb24tPmNvbm5lY3Rpb25DbG9zZWRGcm9tQ2xpZW50KCk7Cit9CisKK3ZvaWQgTmV0
d29ya1N0b3JhZ2VNYW5hZ2VyOjphYm9ydE9wZW5BbmRVcGdyYWRlTmVlZGVkKHVpbnQ2NF90IGRh
dGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRl
bnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKQoreworICAgIGlmIChhdXRvIHRyYW5zYWN0
aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPmdldFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRl
bnRpZmllcikpCisgICAgICAgIHRyYW5zYWN0aW9uLT5hYm9ydFdpdGhvdXRDYWxsYmFjaygpOwor
CisgICAgaWYgKGF1dG8gY29ubmVjdGlvbiA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT5nZXRDb25u
ZWN0aW9uKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpKQorICAgICAgICBjb25uZWN0aW9u
LT5jb25uZWN0aW9uQ2xvc2VkRnJvbUNsaWVudCgpOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdl
TWFuYWdlcjo6ZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudCh1aW50NjRfdCBkYXRhYmFzZUNvbm5l
Y3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHJl
cXVlc3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJbmRleGVkREI6OkNvbm5lY3Rpb25DbG9z
ZWRPbkJlaGFsZk9mU2VydmVyIGNvbm5lY3Rpb25DbG9zZWQpCit7CisgICAgaWYgKGF1dG8gY29u
bmVjdGlvbiA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT5nZXRDb25uZWN0aW9uKGRhdGFiYXNlQ29u
bmVjdGlvbklkZW50aWZpZXIpKQorICAgICAgICBjb25uZWN0aW9uLT5kaWRGaXJlVmVyc2lvbkNo
YW5nZUV2ZW50KHJlcXVlc3RJZGVudGlmaWVyLCBjb25uZWN0aW9uQ2xvc2VkKTsKK30KKwordm9p
ZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmFib3J0VHJhbnNhY3Rpb24oY29uc3QgV2ViQ29yZTo6
SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpCit7CisgICAgaWYg
KGF1dG8gdHJhbnNhY3Rpb24gPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+Z2V0VHJhbnNhY3Rpb24o
dHJhbnNhY3Rpb25JZGVudGlmaWVyKSkKKyAgICAgICAgdHJhbnNhY3Rpb24tPmFib3J0KCk7Cit9
CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjb21taXRUcmFuc2FjdGlvbihjb25zdCBX
ZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWlu
dDY0X3QgcGVuZGluZ1JlcXVlc3RDb3VudCkKK3sKKyAgICBpZiAoYXV0byB0cmFuc2FjdGlvbiA9
IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT5nZXRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbklkZW50aWZp
ZXIpKQorICAgICAgICB0cmFuc2FjdGlvbi0+Y29tbWl0KHBlbmRpbmdSZXF1ZXN0Q291bnQpOwor
fQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9u
Q2hhbmdlVHJhbnNhY3Rpb24odWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwg
Y29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZp
ZXIpCit7CisgICAgaWYgKGF1dG8gY29ubmVjdGlvbiA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT5n
ZXRDb25uZWN0aW9uKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpKQorICAgICAgICBjb25u
ZWN0aW9uLT5kaWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2UodHJhbnNhY3Rpb25JZGVudGlm
aWVyKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZU9iamVjdFN0b3Jl
KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgV2ViQ29y
ZTo6SURCT2JqZWN0U3RvcmVJbmZvJiBvYmplY3RTdG9yZUluZm8pCit7CisgICAgaWYgKGF1dG8g
dHJhbnNhY3Rpb24gPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+Z2V0VHJhbnNhY3Rpb24ocmVxdWVz
dERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCkpKSB7CisgICAgICAgIEFTU0VSVCh0cmFuc2Fj
dGlvbi0+aXNWZXJzaW9uQ2hhbmdlKCkpOworICAgICAgICB0cmFuc2FjdGlvbi0+Y3JlYXRlT2Jq
ZWN0U3RvcmUocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSW5mbyk7CisgICAgfQorfQorCit2b2lk
IE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6
SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFt
ZSkKK3sKKyAgICBpZiAoYXV0byB0cmFuc2FjdGlvbiA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT5n
ZXRUcmFuc2FjdGlvbihyZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSkpIHsKKyAg
ICAgICAgQVNTRVJUKHRyYW5zYWN0aW9uLT5pc1ZlcnNpb25DaGFuZ2UoKSk7CisgICAgICAgIHRy
YW5zYWN0aW9uLT5kZWxldGVPYmplY3RTdG9yZShyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVOYW1l
KTsKKyAgICB9Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpyZW5hbWVPYmplY3RT
dG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIHVpbnQ2NF90
IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lKQoreworICAgIGlm
IChhdXRvIHRyYW5zYWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPmdldFRyYW5zYWN0aW9u
KHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpKSkgeworICAgICAgICBBU1NFUlQo
dHJhbnNhY3Rpb24tPmlzVmVyc2lvbkNoYW5nZSgpKTsKKyAgICAgICAgdHJhbnNhY3Rpb24tPnJl
bmFtZU9iamVjdFN0b3JlKHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIG5ld05h
bWUpOworICAgIH0KK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNsZWFyT2JqZWN0
U3RvcmUoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCB1aW50NjRf
dCBvYmplY3RTdG9yZUlkZW50aWZpZXIpCit7CisgICAgaWYgKGF1dG8gdHJhbnNhY3Rpb24gPSBt
X2lkYlN0b3JhZ2VSZWdpc3RyeS0+Z2V0VHJhbnNhY3Rpb24ocmVxdWVzdERhdGEudHJhbnNhY3Rp
b25JZGVudGlmaWVyKCkpKQorICAgICAgICB0cmFuc2FjdGlvbi0+Y2xlYXJPYmplY3RTdG9yZShy
ZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKK30KKwordm9pZCBOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6OmNyZWF0ZUluZGV4KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiBy
ZXF1ZXN0RGF0YSwgY29uc3QgV2ViQ29yZTo6SURCSW5kZXhJbmZvJiBpbmRleEluZm8pCit7Cisg
ICAgaWYgKGF1dG8gdHJhbnNhY3Rpb24gPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+Z2V0VHJhbnNh
Y3Rpb24ocmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCkpKQorICAgICAgICB0cmFu
c2FjdGlvbi0+Y3JlYXRlSW5kZXgocmVxdWVzdERhdGEsIGluZGV4SW5mbyk7Cit9CisKK3ZvaWQg
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVJbmRleChjb25zdCBXZWJDb3JlOjpJREJSZXF1
ZXN0RGF0YSYgcmVxdWVzdERhdGEsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBpbmRleE5hbWUpCit7CisgICAgaWYgKGF1dG8gdHJhbnNhY3Rpb24gPSBtX2lk
YlN0b3JhZ2VSZWdpc3RyeS0+Z2V0VHJhbnNhY3Rpb24ocmVxdWVzdERhdGEudHJhbnNhY3Rpb25J
ZGVudGlmaWVyKCkpKQorICAgICAgICB0cmFuc2FjdGlvbi0+ZGVsZXRlSW5kZXgocmVxdWVzdERh
dGEsIG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhOYW1lKTsKK30KKwordm9pZCBOZXR3b3Jr
U3RvcmFnZU1hbmFnZXI6OnJlbmFtZUluZGV4KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRh
JiByZXF1ZXN0RGF0YSwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50NjRfdCBp
bmRleElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSkKK3sKKyAgICBpZiAoYXV0byB0
cmFuc2FjdGlvbiA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT5nZXRUcmFuc2FjdGlvbihyZXF1ZXN0
RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSkpCisgICAgICAgIHRyYW5zYWN0aW9uLT5yZW5h
bWVJbmRleChyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleElkZW50aWZp
ZXIsIG5ld05hbWUpOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6cHV0T3JBZGQo
SVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0
YSYgcmVxdWVzdERhdGEsIGNvbnN0IFdlYkNvcmU6OklEQktleURhdGEmIGtleURhdGEsIGNvbnN0
IFdlYkNvcmU6OklEQlZhbHVlJiB2YWx1ZSwgV2ViQ29yZTo6SW5kZXhlZERCOjpPYmplY3RTdG9y
ZU92ZXJ3cml0ZU1vZGUgb3ZlcndyaXRlTW9kZSkKK3sKKyAgICBpZiAodmFsdWUuYmxvYlVSTHMo
KS5zaXplKCkgIT0gdmFsdWUuYmxvYkZpbGVQYXRocygpLnNpemUoKSkgeworICAgICAgICBSRUxF
QVNFX0xPR19GQVVMVChJbmRleGVkREIsICJOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnB1dE9yQWRk
OiBOdW1iZXIgb2YgYmxvYiBVUkxzIGRvZXNuJ3QgbWF0Y2ggdGhlIG51bWJlciBvZiBibG9iIGZp
bGUgcGF0aHMuIik7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgLy8gVmFsaWRhdGUgdGVtcG9yYXJ5IGJsb2IgcGF0aHMgaW4gfHZh
bHVlfCB0byBtYWtlIHN1cmUgdGhleSBiZWxvbmcgdG8gdGhlIHNvdXJjZSBwcm9jZXNzLgorICAg
IGlmICghdmFsdWUuYmxvYkZpbGVQYXRocygpLmlzRW1wdHkoKSkgeworICAgICAgICBhdXRvIGl0
ID0gbV90ZW1wb3JhcnlCbG9iUGF0aHNCeUNvbm5lY3Rpb24uZmluZChjb25uZWN0aW9uLnVuaXF1
ZUlEKCkpOworICAgICAgICBpZiAoaXQgPT0gbV90ZW1wb3JhcnlCbG9iUGF0aHNCeUNvbm5lY3Rp
b24uZW5kKCkpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0ZBVUxUKEluZGV4ZWREQiwgIk5l
dHdvcmtTdG9yYWdlTWFuYWdlcjo6cHV0T3JBZGQ6IElEQlZhbHVlIGNvbnRhaW5zIGJsb2IgcGF0
aHMgYnV0IG5vbmUgYXJlIGFsbG93ZWQgZm9yIHRoaXMgcHJvY2VzcyIpOworICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICBhdXRvJiB0ZW1wb3JhcnlCbG9iUGF0aHNGb3JDb25uZWN0aW9uID0gaXQtPnZhbHVl
OworICAgICAgICBmb3IgKGF1dG8mIGJsb2JGaWxlUGF0aCA6IHZhbHVlLmJsb2JGaWxlUGF0aHMo
KSkgeworICAgICAgICAgICAgaWYgKCF0ZW1wb3JhcnlCbG9iUGF0aHNGb3JDb25uZWN0aW9uLnJl
bW92ZShibG9iRmlsZVBhdGgpKSB7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRkFVTFQo
SW5kZXhlZERCLCAiTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpwdXRPckFkZDogQmxvYiBwYXRoIHdh
cyBub3QgY3JlYXRlZCBmb3IgdGhpcyBXZWJQcm9jZXNzIik7CisgICAgICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGF1dG8gdHJhbnNhY3Rpb24gPSBtX2lkYlN0
b3JhZ2VSZWdpc3RyeS0+Z2V0VHJhbnNhY3Rpb24ocmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVu
dGlmaWVyKCkpKQorICAgICAgICB0cmFuc2FjdGlvbi0+cHV0T3JBZGQocmVxdWVzdERhdGEsIGtl
eURhdGEsIHZhbHVlLCBvdmVyd3JpdGVNb2RlKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1h
bmFnZXI6OmdldFJlY29yZChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERh
dGEsIGNvbnN0IFdlYkNvcmU6OklEQkdldFJlY29yZERhdGEmIGdldFJlY29yZERhdGEpCit7Cisg
ICAgaWYgKGF1dG8gdHJhbnNhY3Rpb24gPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+Z2V0VHJhbnNh
Y3Rpb24ocmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCkpKQorICAgICAgICB0cmFu
c2FjdGlvbi0+Z2V0UmVjb3JkKHJlcXVlc3REYXRhLCBnZXRSZWNvcmREYXRhKTsKK30KKwordm9p
ZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmdldEFsbFJlY29yZHMoY29uc3QgV2ViQ29yZTo6SURC
UmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBXZWJDb3JlOjpJREJHZXRBbGxSZWNvcmRz
RGF0YSYgZ2V0QWxsUmVjb3Jkc0RhdGEpCit7CisgICAgaWYgKGF1dG8gdHJhbnNhY3Rpb24gPSBt
X2lkYlN0b3JhZ2VSZWdpc3RyeS0+Z2V0VHJhbnNhY3Rpb24ocmVxdWVzdERhdGEudHJhbnNhY3Rp
b25JZGVudGlmaWVyKCkpKQorICAgICAgICB0cmFuc2FjdGlvbi0+Z2V0QWxsUmVjb3JkcyhyZXF1
ZXN0RGF0YSwgZ2V0QWxsUmVjb3Jkc0RhdGEpOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFu
YWdlcjo6Z2V0Q291bnQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRh
LCBjb25zdCBXZWJDb3JlOjpJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlRGF0YSkKK3sKKyAgICBp
ZiAoYXV0byB0cmFuc2FjdGlvbiA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT5nZXRUcmFuc2FjdGlv
bihyZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSkpCisgICAgICAgIHRyYW5zYWN0
aW9uLT5nZXRDb3VudChyZXF1ZXN0RGF0YSwga2V5UmFuZ2VEYXRhKTsKK30KKwordm9pZCBOZXR3
b3JrU3RvcmFnZU1hbmFnZXI6OmRlbGV0ZVJlY29yZChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0
RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IFdlYkNvcmU6OklEQktleVJhbmdlRGF0YSYga2V5UmFu
Z2VEYXRhKQoreworICAgIGlmIChhdXRvIHRyYW5zYWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0
cnktPmdldFRyYW5zYWN0aW9uKHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpKSkK
KyAgICAgICAgdHJhbnNhY3Rpb24tPmRlbGV0ZVJlY29yZChyZXF1ZXN0RGF0YSwga2V5UmFuZ2VE
YXRhKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Om9wZW5DdXJzb3IoY29uc3Qg
V2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBXZWJDb3JlOjpJREJD
dXJzb3JJbmZvJiBjdXJzb3JJbmZvKQoreworICAgIGlmIChhdXRvIHRyYW5zYWN0aW9uID0gbV9p
ZGJTdG9yYWdlUmVnaXN0cnktPmdldFRyYW5zYWN0aW9uKHJlcXVlc3REYXRhLnRyYW5zYWN0aW9u
SWRlbnRpZmllcigpKSkKKyAgICAgICAgdHJhbnNhY3Rpb24tPm9wZW5DdXJzb3IocmVxdWVzdERh
dGEsIGN1cnNvckluZm8pOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6aXRlcmF0
ZUN1cnNvcihjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0
IFdlYkNvcmU6OklEQkl0ZXJhdGVDdXJzb3JEYXRhJiBjdXJzb3JEYXRhKQoreworICAgIGlmIChh
dXRvIHRyYW5zYWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPmdldFRyYW5zYWN0aW9uKHJl
cXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpKSkKKyAgICAgICAgdHJhbnNhY3Rpb24t
Pml0ZXJhdGVDdXJzb3IocmVxdWVzdERhdGEsIGN1cnNvckRhdGEpOworfQorCit2b2lkIE5ldHdv
cmtTdG9yYWdlTWFuYWdlcjo6Z2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVy
JiByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4p
Cit7CisgICAgYXV0byYgY29ubmVjdGlvblRvQ2xpZW50ID0gbV9pZGJTdG9yYWdlUmVnaXN0cnkt
PmdldE9yQ3JlYXRlQ29ubmVjdGlvblRvQ2xpZW50KGNvbm5lY3Rpb24udW5pcXVlSUQoKSwgcmVx
dWVzdElkZW50aWZpZXIuY29ubmVjdGlvbklkZW50aWZpZXIoKSk7CisgICAgYXV0byByZXN1bHQg
PSBsb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2VyKG9yaWdpbikuaWRiU3RvcmFnZU1hbmFnZXIoKm1f
aWRiU3RvcmFnZVJlZ2lzdHJ5KS5nZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMoKTsKKyAg
ICBjb25uZWN0aW9uVG9DbGllbnQuZGlkR2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKHJl
cXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKHJlc3VsdCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdl
L05ldHdvcmtTdG9yYWdlTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
dG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5oCmluZGV4IDE1YzAzNzJlNjZhN2Y2Mjg0OTky
N2YxYzM3ZjE2YTY5NTg3ZjQ1MDEuLjljM2QyZDY0MDZmZWU5YjJiNGU2Y2EyNmY3YjY1ZmUwYzc4
YjgzYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9O
ZXR3b3JrU3RvcmFnZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmgKQEAgLTM2LDYgKzM2LDggQEAKICNpbmNs
dWRlIDxXZWJDb3JlL0NsaWVudE9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3Rl
bUhhbmRsZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW1TeW5jQWNj
ZXNzSGFuZGxlSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSURCUmVzb3VyY2VJZGVu
dGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JbmRleGVkREIuaD4KICNpbmNsdWRlIDxwYWwv
U2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIApAQCAtNDQsMTggKzQ2LDMx
IEBAIGNsYXNzIFNoYXJlZEZpbGVIYW5kbGU7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2Ns
YXNzIElEQkN1cnNvckluZm87CitjbGFzcyBJREJLZXlEYXRhOworY2xhc3MgSURCSW5kZXhJbmZv
OworY2xhc3MgSURCT2JqZWN0U3RvcmVJbmZvOworY2xhc3MgSURCUmVxdWVzdERhdGE7CitjbGFz
cyBJREJUcmFuc2FjdGlvbkluZm87CitjbGFzcyBJREJWYWx1ZTsKIHN0cnVjdCBDbGllbnRPcmln
aW47CitzdHJ1Y3QgSURCR2V0QWxsUmVjb3Jkc0RhdGE7CitzdHJ1Y3QgSURCR2V0UmVjb3JkRGF0
YTsKK3N0cnVjdCBJREJHZXRBbGxSZWNvcmRzRGF0YTsKK3N0cnVjdCBJREJJdGVyYXRlQ3Vyc29y
RGF0YTsKK3N0cnVjdCBJREJLZXlSYW5nZURhdGE7CiBlbnVtIGNsYXNzIFN0b3JhZ2VUeXBlIDog
dWludDhfdDsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEZpbGVTeXN0ZW1TdG9y
YWdlSGFuZGxlUmVnaXN0cnk7CitjbGFzcyBJREJTdG9yYWdlUmVnaXN0cnk7CiBjbGFzcyBTdG9y
YWdlQXJlYVJlZ2lzdHJ5OwogCiBjbGFzcyBOZXR3b3JrU3RvcmFnZU1hbmFnZXIgZmluYWwgOiBw
dWJsaWMgSVBDOjpDb25uZWN0aW9uOjpXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIgewogcHVibGlj
OgotICAgIHN0YXRpYyBSZWY8TmV0d29ya1N0b3JhZ2VNYW5hZ2VyPiBjcmVhdGUoUEFMOjpTZXNz
aW9uSUQsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21Mb2NhbFN0b3Jh
Z2VQYXRoKTsKKyAgICBzdGF0aWMgUmVmPE5ldHdvcmtTdG9yYWdlTWFuYWdlcj4gY3JlYXRlKFBB
TDo6U2Vzc2lvbklELCBJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBjb25zdCBTdHJpbmcmIHBh
dGgsIGNvbnN0IFN0cmluZyYgY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCwgY29uc3QgU3RyaW5nJiBj
dXN0b21JREJTdG9yYWdlUGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21DYWNoZVN0b3JhZ2VQYXRo
LCB1aW50NjRfdCBkZWZhdWx0T3JpZ2luUXVvdGEsIHVpbnQ2NF90IGRlZmF1bHRUaGlyZFBhcnR5
T3JpZ2luUXVvdGEpOwogICAgIHN0YXRpYyBib29sIGNhbkhhbmRsZVR5cGVzKE9wdGlvblNldDxX
ZWJzaXRlRGF0YVR5cGU+KTsKIAogICAgIHZvaWQgc3RhcnRSZWNlaXZpbmdNZXNzYWdlRnJvbUNv
bm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uJik7CkBAIC02NCw2ICs3OSw3IEBAIHB1YmxpYzoKICAg
ICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb25JRDsg
fQogICAgIHZvaWQgY2xvc2UoKTsKICAgICB2b2lkIGNsZWFyU3RvcmFnZUZvclRlc3RpbmcoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGRpZEluY3JlYXNlUXVvdGEoY29u
c3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVy
LCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBuZXdRdW90YSk7CiAgICAgdm9pZCBmZXRjaERhdGEo
T3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9y
PFdlYnNpdGVEYXRhOjpFbnRyeT4mJik+JiYpOwogICAgIHZvaWQgZGVsZXRlRGF0YShPcHRpb25T
ZXQ8V2Vic2l0ZURhdGFUeXBlPiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YT4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgZGVsZXRlRGF0
YU1vZGlmaWVkU2luY2UoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIFdhbGxUaW1lLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAtNzMsMTQgKzg5LDE4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHJlc3VtZSgpOwogICAgIHZvaWQgaGFuZGxlTG93TWVtb3J5V2FybmluZygpOwogICAg
IHZvaWQgc3luY0xvY2FsU3RvcmFnZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAg
IHZvaWQgcmVnaXN0ZXJUZW1wb3JhcnlCbG9iRmlsZVBhdGhzKElQQzo6Q29ubmVjdGlvbiYsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+Jik7CisgICAgdm9pZCByZXF1ZXN0U3BhY2UoY29uc3QgV2ViQ29y
ZTo6Q2xpZW50T3JpZ2luJiwgdWludDY0X3Qgc2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJik7CisgICAgdm9pZCByZXNldFF1b3RhRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOworICAgIHZvaWQgcmVzZXRRdW90YVVwZGF0ZWRCYXNlZE9uVXNhZ2VGb3JU
ZXN0aW5nKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYpOwogCiBwcml2YXRlOgogICAgIE5l
dHdvcmtTdG9yYWdlTWFuYWdlcihQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBwYXRoLCBj
b25zdCBTdHJpbmcmIGN1c3RvbUxvY2FsU3RvcmFnZVBhdGgpOworICAgIE5ldHdvcmtTdG9yYWdl
TWFuYWdlcihQQUw6OlNlc3Npb25JRCwgSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCwgY29uc3Qg
U3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGN1c3RvbUxvY2FsU3RvcmFnZVBhdGgsIGNvbnN0
IFN0cmluZyYgY3VzdG9tSURCU3RvcmFnZVBhdGgsIGNvbnN0IFN0cmluZyYgY3VzdG9tQ2FjaGVT
dG9yYWdlUGF0aCwgdWludDY0X3QgZGVmYXVsdE9yaWdpblF1b3RhLCB1aW50NjRfdCBkZWZhdWx0
VGhpcmRQYXJ0eU9yaWdpblF1b3RhKTsKICAgICB+TmV0d29ya1N0b3JhZ2VNYW5hZ2VyKCk7CiAg
ICAgT3JpZ2luU3RvcmFnZU1hbmFnZXImIGxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIoY29uc3Qg
V2ViQ29yZTo6Q2xpZW50T3JpZ2luJik7CiAgICAgYm9vbCByZW1vdmVPcmlnaW5TdG9yYWdlTWFu
YWdlcklmUG9zc2libGUoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJik7CiAgICAgdm9pZCBk
ZWxldGVPcmlnaW5EaXJlY3RvcnlJZlBvc3NpYmxlKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdp
biYpOwotICAgIEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnkmIGZpbGVTeXN0ZW1TdG9y
YWdlSGFuZGxlUmVnaXN0cnkoKTsKIAogICAgIHZvaWQgZm9yRWFjaE9yaWdpbkRpcmVjdG9yeShj
b25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYpOwogICAgIEhhc2hTZXQ8V2ViQ29y
ZTo6Q2xpZW50T3JpZ2luPiBnZXRBbGxPcmlnaW5zKCk7CkBAIC0xMTgsNiArMTM4LDM0IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCByZW1vdmVJdGVtKElQQzo6Q29ubmVjdGlvbiYsIFN0b3JhZ2VBcmVh
SWRlbnRpZmllciwgU3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllciwgU3RyaW5nJiYga2V5LCBTdHJp
bmcmJiB1cmxTdHJpbmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBj
bGVhcihJUEM6OkNvbm5lY3Rpb24mLCBTdG9yYWdlQXJlYUlkZW50aWZpZXIsIFN0b3JhZ2VBcmVh
SW1wbElkZW50aWZpZXIsIFN0cmluZyYmIHVybFN0cmluZywgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKIAorICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMgZm9yIEluZGV4ZWREQi4KKyAgICB2
b2lkIG9wZW5EYXRhYmFzZShJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpJREJSZXF1
ZXN0RGF0YSYpOworICAgIHZvaWQgb3BlbkRCUmVxdWVzdENhbmNlbGxlZChjb25zdCBXZWJDb3Jl
OjpJREJSZXF1ZXN0RGF0YSYpOworICAgIHZvaWQgZGVsZXRlRGF0YWJhc2UoSVBDOjpDb25uZWN0
aW9uJiwgY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmKTsKKyAgICB2b2lkIGVzdGFibGlz
aFRyYW5zYWN0aW9uKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0
IFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uSW5mbyYpOworICAgIHZvaWQgZGF0YWJhc2VDb25uZWN0
aW9uUGVuZGluZ0Nsb3NlKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpOwor
ICAgIHZvaWQgZGF0YWJhc2VDb25uZWN0aW9uQ2xvc2VkKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVj
dGlvbklkZW50aWZpZXIpOworICAgIHZvaWQgYWJvcnRPcGVuQW5kVXBncmFkZU5lZWRlZCh1aW50
NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJREJSZXNv
dXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CisgICAgdm9pZCBkaWRGaXJl
VmVyc2lvbkNoYW5nZUV2ZW50KHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIs
IGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIs
IGNvbnN0IFdlYkNvcmU6OkluZGV4ZWREQjo6Q29ubmVjdGlvbkNsb3NlZE9uQmVoYWxmT2ZTZXJ2
ZXIpOworICAgIHZvaWQgYWJvcnRUcmFuc2FjdGlvbihjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJj
ZUlkZW50aWZpZXImKTsKKyAgICB2b2lkIGNvbW1pdFRyYW5zYWN0aW9uKGNvbnN0IFdlYkNvcmU6
OklEQlJlc291cmNlSWRlbnRpZmllciYsIHVpbnQ2NF90IHBlbmRpbmdSZXF1ZXN0Q291bnQpOwor
ICAgIHZvaWQgZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24odWludDY0
X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCUmVzb3Vy
Y2VJZGVudGlmaWVyJik7CisgICAgdm9pZCBjcmVhdGVPYmplY3RTdG9yZShjb25zdCBXZWJDb3Jl
OjpJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IFdlYkNvcmU6OklEQk9iamVjdFN0b3JlSW5mbyYpOwor
ICAgIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEm
LCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSk7CisgICAgdm9pZCByZW5hbWVPYmplY3RT
dG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYsIHVpbnQ2NF90IG9iamVjdFN0b3Jl
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lKTsKKyAgICB2b2lkIGNsZWFyT2JqZWN0
U3RvcmUoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmLCB1aW50NjRfdCBvYmplY3RTdG9y
ZUlkZW50aWZpZXIpOworICAgIHZvaWQgY3JlYXRlSW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVx
dWVzdERhdGEmLCBjb25zdCBXZWJDb3JlOjpJREJJbmRleEluZm8mKTsKKyAgICB2b2lkIGRlbGV0
ZUluZGV4KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiwgdWludDY0X3Qgb2JqZWN0U3Rv
cmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGluZGV4TmFtZSk7CisgICAgdm9pZCByZW5hbWVJ
bmRleChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYsIHVpbnQ2NF90IG9iamVjdFN0b3Jl
SWRlbnRpZmllciwgdWludDY0X3QgaW5kZXhJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05h
bWUpOworICAgIHZvaWQgcHV0T3JBZGQoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6
SURCUmVxdWVzdERhdGEmLCBjb25zdCBXZWJDb3JlOjpJREJLZXlEYXRhJiwgY29uc3QgV2ViQ29y
ZTo6SURCVmFsdWUmLCBXZWJDb3JlOjpJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9k
ZSk7CisgICAgdm9pZCBnZXRSZWNvcmQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmLCBj
b25zdCBXZWJDb3JlOjpJREJHZXRSZWNvcmREYXRhJik7CisgICAgdm9pZCBnZXRBbGxSZWNvcmRz
KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiwgY29uc3QgV2ViQ29yZTo6SURCR2V0QWxs
UmVjb3Jkc0RhdGEmKTsKKyAgICB2b2lkIGdldENvdW50KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVl
c3REYXRhJiwgY29uc3QgV2ViQ29yZTo6SURCS2V5UmFuZ2VEYXRhJik7CisgICAgdm9pZCBkZWxl
dGVSZWNvcmQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmLCBjb25zdCBXZWJDb3JlOjpJ
REJLZXlSYW5nZURhdGEmKTsKKyAgICB2b2lkIG9wZW5DdXJzb3IoY29uc3QgV2ViQ29yZTo6SURC
UmVxdWVzdERhdGEmLCBjb25zdCBXZWJDb3JlOjpJREJDdXJzb3JJbmZvJik7CisgICAgdm9pZCBp
dGVyYXRlQ3Vyc29yKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiwgY29uc3QgV2ViQ29y
ZTo6SURCSXRlcmF0ZUN1cnNvckRhdGEmKTsKKyAgICB2b2lkIGdldEFsbERhdGFiYXNlTmFtZXNB
bmRWZXJzaW9ucyhJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlk
ZW50aWZpZXImLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKKwogICAgIFBBTDo6U2Vz
c2lvbklEIG1fc2Vzc2lvbklEOwogICAgIFJlZjxTdXNwZW5kYWJsZVdvcmtRdWV1ZT4gbV9xdWV1
ZTsKICAgICBTdHJpbmcgbV9wYXRoOwpAQCAtMTI3LDcgKzE3NSwxNCBAQCBwcml2YXRlOgogICAg
IFdlYWtIYXNoU2V0PElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uczsgLy8gTWFpbiB0aHJl
YWQgb25seS4KICAgICBzdGQ6OnVuaXF1ZV9wdHI8RmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdp
c3RyeT4gbV9maWxlU3lzdGVtU3RvcmFnZUhhbmRsZVJlZ2lzdHJ5OwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxTdG9yYWdlQXJlYVJlZ2lzdHJ5PiBtX3N0b3JhZ2VBcmVhUmVnaXN0cnk7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPElEQlN0b3JhZ2VSZWdpc3RyeT4gbV9pZGJTdG9yYWdlUmVnaXN0cnk7CiAg
ICAgU3RyaW5nIG1fY3VzdG9tTG9jYWxTdG9yYWdlUGF0aDsKKyAgICBTdHJpbmcgbV9jdXN0b21J
REJTdG9yYWdlUGF0aDsKKyAgICBTdHJpbmcgbV9jdXN0b21DYWNoZVN0b3JhZ2VQYXRoOworICAg
IHVpbnQ2NF90IG1fZGVmYXVsdE9yaWdpblF1b3RhOworICAgIHVpbnQ2NF90IG1fZGVmYXVsdFRo
aXJkUGFydHlPcmlnaW5RdW90YTsKKyAgICBJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIG1fcGFy
ZW50Q29ubmVjdGlvbjsKKyAgICBIYXNoTWFwPElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIEhh
c2hTZXQ8U3RyaW5nPj4gbV90ZW1wb3JhcnlCbG9iUGF0aHNCeUNvbm5lY3Rpb247CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLm1lc3Nh
Z2VzLmluCmluZGV4IDUwYjk2NzAxYjA3MGRkNWMzMjcxMWRiMTQyNzkzMDNmZTY1MjExYjcuLjQ3
MzA1ZTBlOTgxY2E1Y2ZhZTA3NzQyNmJmMjRiNzgxNWE0ZDY0Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdv
cmtTdG9yYWdlTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtNDcsNCArNDcsMzEgQEAKICAgICBTZXRJ
dGVtKFdlYktpdDo6U3RvcmFnZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYktpdDo6U3Rv
cmFnZUFyZWFJbXBsSWRlbnRpZmllciBpbXBsSWRlbnRpZmllciwgU3RyaW5nIGtleSwgU3RyaW5n
IHZhbHVlLCBTdHJpbmcgdXJsU3RyaW5nKSAtPiAoYm9vbCBxdW90YUV4Y2VwdGlvbikgQXN5bmMg
V2FudHNDb25uZWN0aW9uCiAgICAgUmVtb3ZlSXRlbShXZWJLaXQ6OlN0b3JhZ2VBcmVhSWRlbnRp
ZmllciBpZGVudGlmaWVyLCBXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXIgaW1wbElk
ZW50aWZpZXIsIFN0cmluZyBrZXksIFN0cmluZyB1cmxTdHJpbmcpIC0+ICgpIEFzeW5jIFdhbnRz
Q29ubmVjdGlvbgogICAgIENsZWFyKFdlYktpdDo6U3RvcmFnZUFyZWFJZGVudGlmaWVyIGlkZW50
aWZpZXIsIFdlYktpdDo6U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllciBpbXBsSWRlbnRpZmllciwg
U3RyaW5nIHVybFN0cmluZykgLT4gKCkgQXN5bmMgV2FudHNDb25uZWN0aW9uCisKKyAgICBPcGVu
RGF0YWJhc2UoV2ViQ29yZTo6SURCUmVxdWVzdERhdGEgcmVxdWVzdERhdGEpIFdhbnRzQ29ubmVj
dGlvbgorICAgIE9wZW5EQlJlcXVlc3RDYW5jZWxsZWQoV2ViQ29yZTo6SURCUmVxdWVzdERhdGEg
cmVxdWVzdERhdGEpCisgICAgRGVsZXRlRGF0YWJhc2UoV2ViQ29yZTo6SURCUmVxdWVzdERhdGEg
cmVxdWVzdERhdGEpIFdhbnRzQ29ubmVjdGlvbgorICAgIEVzdGFibGlzaFRyYW5zYWN0aW9uKHVp
bnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OklEQlRyYW5zYWN0
aW9uSW5mbyBpbmZvKQorICAgIERhdGFiYXNlQ29ubmVjdGlvblBlbmRpbmdDbG9zZSh1aW50NjRf
dCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKQorICAgIERhdGFiYXNlQ29ubmVjdGlvbkNs
b3NlZCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKQorICAgIEFib3J0T3Bl
bkFuZFVwZ3JhZGVOZWVkZWQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwg
V2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyIHRyYW5zYWN0aW9uSWRlbnRpZmllcikKKyAg
ICBEaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklk
ZW50aWZpZXIsIFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciByZXF1ZXN0SWRlbnRpZmll
ciwgV2ViQ29yZTo6SW5kZXhlZERCOjpDb25uZWN0aW9uQ2xvc2VkT25CZWhhbGZPZlNlcnZlciBj
b25uZWN0aW9uQ2xvc2VkT25CZWhhbGZPZlNlcnZlcikKKyAgICBEaWRGaW5pc2hIYW5kbGluZ1Zl
cnNpb25DaGFuZ2VUcmFuc2FjdGlvbih1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlm
aWVyLCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXIgdHJhbnNhY3Rpb25JZGVudGlmaWVy
KQorICAgIEFib3J0VHJhbnNhY3Rpb24oV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyIHRy
YW5zYWN0aW9uSWRlbnRpZmllcikKKyAgICBDb21taXRUcmFuc2FjdGlvbihXZWJDb3JlOjpJREJS
ZXNvdXJjZUlkZW50aWZpZXIgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBwZW5kaW5n
UmVxdWVzdENvdW50KQorICAgIENyZWF0ZU9iamVjdFN0b3JlKFdlYkNvcmU6OklEQlJlcXVlc3RE
YXRhIHJlcXVlc3REYXRhLCBXZWJDb3JlOjpJREJPYmplY3RTdG9yZUluZm8gaW5mbykKKyAgICBE
ZWxldGVPYmplY3RTdG9yZShXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YSwgU3Ry
aW5nIG9iamVjdFN0b3JlTmFtZSkKKyAgICBSZW5hbWVPYmplY3RTdG9yZShXZWJDb3JlOjpJREJS
ZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YSwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBT
dHJpbmcgbmV3TmFtZSkKKyAgICBDbGVhck9iamVjdFN0b3JlKFdlYkNvcmU6OklEQlJlcXVlc3RE
YXRhIHJlcXVlc3REYXRhLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIpCisgICAgQ3Jl
YXRlSW5kZXgoV2ViQ29yZTo6SURCUmVxdWVzdERhdGEgcmVxdWVzdERhdGEsIFdlYkNvcmU6OklE
QkluZGV4SW5mbyBpbmZvKQorICAgIERlbGV0ZUluZGV4KFdlYkNvcmU6OklEQlJlcXVlc3REYXRh
IHJlcXVlc3REYXRhLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIFN0cmluZyBpbmRl
eE5hbWUpCisgICAgUmVuYW1lSW5kZXgoV2ViQ29yZTo6SURCUmVxdWVzdERhdGEgcmVxdWVzdERh
dGEsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgdWludDY0X3QgaW5kZXhJZGVudGlm
aWVyLCBTdHJpbmcgbmV3TmFtZSkKKyAgICBQdXRPckFkZChXZWJDb3JlOjpJREJSZXF1ZXN0RGF0
YSByZXF1ZXN0RGF0YSwgV2ViQ29yZTo6SURCS2V5RGF0YSBrZXksIFdlYkNvcmU6OklEQlZhbHVl
IHZhbHVlLCBXZWJDb3JlOjpJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSBvdmVy
d3JpdGVNb2RlKSBXYW50c0Nvbm5lY3Rpb24KKyAgICBHZXRSZWNvcmQoV2ViQ29yZTo6SURCUmVx
dWVzdERhdGEgcmVxdWVzdERhdGEsIHN0cnVjdCBXZWJDb3JlOjpJREJHZXRSZWNvcmREYXRhIGdl
dFJlY29yZERhdGEpCisgICAgR2V0QWxsUmVjb3JkcyhXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSBy
ZXF1ZXN0RGF0YSwgc3RydWN0IFdlYkNvcmU6OklEQkdldEFsbFJlY29yZHNEYXRhIGdldEFsbFJl
Y29yZHNEYXRhKQorICAgIEdldENvdW50KFdlYkNvcmU6OklEQlJlcXVlc3REYXRhIHJlcXVlc3RE
YXRhLCBzdHJ1Y3QgV2ViQ29yZTo6SURCS2V5UmFuZ2VEYXRhIHJhbmdlKQorICAgIERlbGV0ZVJl
Y29yZChXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YSwgc3RydWN0IFdlYkNvcmU6
OklEQktleVJhbmdlRGF0YSByYW5nZSkKKyAgICBPcGVuQ3Vyc29yKFdlYkNvcmU6OklEQlJlcXVl
c3REYXRhIHJlcXVlc3REYXRhLCBXZWJDb3JlOjpJREJDdXJzb3JJbmZvIGluZm8pCisgICAgSXRl
cmF0ZUN1cnNvcihXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YSwgc3RydWN0IFdl
YkNvcmU6OklEQkl0ZXJhdGVDdXJzb3JEYXRhIGRhdGEpCisgICAgR2V0QWxsRGF0YWJhc2VOYW1l
c0FuZFZlcnNpb25zKFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciByZXF1ZXN0SWRlbnRp
Zmllciwgc3RydWN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiBvcmlnaW4pIFdhbnRzQ29ubmVjdGlv
bgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09y
aWdpblN0b3JhZ2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3Rv
cmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5jcHAKaW5kZXggMjM0YzA5YWIyOTU1ODRiZGE4OWJl
NzRlOTM4MzZkZmNhMWVhODJkZS4uOTY1NGJjZDVlYTg1MTY2YTljYTM3MTc4YTBhYzgxMTI1MWVi
ZWNhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09y
aWdpblN0b3JhZ2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuY3BwCkBAIC0yNiw4ICsyNiwxMSBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk9yaWdpblN0b3JhZ2VNYW5hZ2VyLmgiCiAKKyNp
bmNsdWRlICJDYWNoZVN0b3JhZ2VFbmdpbmUuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtU3RvcmFn
ZUhhbmRsZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyLmgi
CisjaW5jbHVkZSAiSURCU3RvcmFnZU1hbmFnZXIuaCIKKyNpbmNsdWRlICJJREJTdG9yYWdlUmVn
aXN0cnkuaCIKICNpbmNsdWRlICJMb2NhbFN0b3JhZ2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiTWVt
b3J5U3RvcmFnZUFyZWEuaCIKICNpbmNsdWRlICJTZXNzaW9uU3RvcmFnZU1hbmFnZXIuaCIKQEAg
LTQ0LDEwICs0NywxMSBAQCBlbnVtIGNsYXNzIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdl
QnVja2V0TW9kZSA6IGJvb2wgeyBCZXN0RWZmb3J0LCBQZXJzaXN0ZQogY2xhc3MgT3JpZ2luU3Rv
cmFnZU1hbmFnZXI6OlN0b3JhZ2VCdWNrZXQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgotICAgIFN0b3JhZ2VCdWNrZXQoY29uc3QgU3RyaW5nJiByb290UGF0aCwgY29u
c3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZVBhdGgpCisg
ICAgU3RvcmFnZUJ1Y2tldChjb25zdCBTdHJpbmcmIHJvb3RQYXRoLCBjb25zdCBTdHJpbmcmIGlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlUGF0aCwgY29uc3QgU3RyaW5nJiBp
ZGJTdG9yYWdlUGF0aCkKICAgICAgICAgOiBtX3Jvb3RQYXRoKHJvb3RQYXRoKQogICAgICAgICAs
IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogICAgICAgICAsIG1fbG9jYWxTdG9yYWdlUGF0aChs
b2NhbFN0b3JhZ2VQYXRoKQorICAgICAgICAsIG1faWRiU3RvcmFnZVBhdGgoaWRiU3RvcmFnZVBh
dGgpCiAgICAgewogICAgIH0KIApAQCAtNzAsNiArNzQsNyBAQCBwdWJsaWM6CiAgICAgICAgIEZp
bGVTeXN0ZW0sCiAgICAgICAgIExvY2FsU3RvcmFnZSwKICAgICAgICAgU2Vzc2lvblN0b3JhZ2Us
CisgICAgICAgIEluZGV4ZWREQiwKICAgICB9OwogCiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
V2Vic2l0ZURhdGFUeXBlPiB0b1dlYnNpdGVEYXRhVHlwZShjb25zdCBTdHJpbmcmIHN0b3JhZ2VJ
ZGVudGlmaWVyKQpAQCAtODAsNiArODUsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4g
V2Vic2l0ZURhdGFUeXBlOjpMb2NhbFN0b3JhZ2U7CiAgICAgICAgIGlmIChzdG9yYWdlSWRlbnRp
ZmllciA9PSAiU2Vzc2lvblN0b3JhZ2UiX3MpCiAgICAgICAgICAgICByZXR1cm4gV2Vic2l0ZURh
dGFUeXBlOjpTZXNzaW9uU3RvcmFnZTsKKyAgICAgICAgaWYgKHN0b3JhZ2VJZGVudGlmaWVyID09
ICJJbmRleGVkREIiX3MpCisgICAgICAgICAgICByZXR1cm4gV2Vic2l0ZURhdGFUeXBlOjpJbmRl
eGVkREJEYXRhYmFzZXM7CiAKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CkBA
IC05Myw2ICsxMDAsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gIkxvY2FsU3RvcmFn
ZSJfczsKICAgICAgICAgY2FzZSBTdG9yYWdlVHlwZTo6U2Vzc2lvblN0b3JhZ2U6CiAgICAgICAg
ICAgICByZXR1cm4gIlNlc3Npb25TdG9yYWdlIl9zOworICAgICAgICBjYXNlIFN0b3JhZ2VUeXBl
OjpJbmRleGVkREI6CisgICAgICAgICAgICByZXR1cm4gIkluZGV4ZWREQiJfczsKICAgICAgICAg
ZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0xNDMsMTMgKzE1Miwy
NyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX3Nlc3Npb25TdG9yYWdlTWFuYWdlci5nZXQo
KTsKICAgICB9CiAKKyAgICBJREJTdG9yYWdlTWFuYWdlciYgaWRiU3RvcmFnZU1hbmFnZXIoSURC
U3RvcmFnZVJlZ2lzdHJ5JiByZWdpc3RyeSwgSURCU3RvcmFnZU1hbmFnZXI6OlF1b3RhQ2hlY2tG
dW5jdGlvbiYmIHF1b3RhQ2hlY2tGdW5jdGlvbikKKyAgICB7CisgICAgICAgIGlmICghbV9pZGJT
dG9yYWdlTWFuYWdlcikKKyAgICAgICAgICAgIG1faWRiU3RvcmFnZU1hbmFnZXIgPSBtYWtlVW5p
cXVlPElEQlN0b3JhZ2VNYW5hZ2VyPihtX2lkYlN0b3JhZ2VQYXRoLCByZWdpc3RyeSwgV1RGTW92
ZShxdW90YUNoZWNrRnVuY3Rpb24pKTsKKworICAgICAgICByZXR1cm4gKm1faWRiU3RvcmFnZU1h
bmFnZXI7CisgICAgfQorCisgICAgSURCU3RvcmFnZU1hbmFnZXIqIGV4aXN0aW5nSURCU3RvcmFn
ZU1hbmFnZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1faWRiU3RvcmFnZU1hbmFnZXIuZ2V0
KCk7CisgICAgfQorCiAgICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0CiAgICAgewogICAgICAgICAv
LyBXZSBjYW5ub3QgcmVtb3ZlIHRoZSBidWNrZXQgaWYgaXQgaGFzIGluLW1lbW9yeSBkYXRhLCBv
dGhlcndpc2Ugc2Vzc2lvbgogICAgICAgICAvLyBkYXRhIG1heSBiZSBsb3N0LgogICAgICAgICBy
ZXR1cm4gKG1fZmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyICYmIG1fZmlsZVN5c3RlbVN0b3JhZ2VN
YW5hZ2VyLT5pc0FjdGl2ZSgpKQogICAgICAgICAgICAgfHwgKG1fbG9jYWxTdG9yYWdlTWFuYWdl
ciAmJiAobV9sb2NhbFN0b3JhZ2VNYW5hZ2VyLT5oYXNEYXRhSW5NZW1vcnkoKSB8fCBtX2xvY2Fs
U3RvcmFnZU1hbmFnZXItPmlzQWN0aXZlKCkpKQotICAgICAgICAgICAgfHwgKG1fc2Vzc2lvblN0
b3JhZ2VNYW5hZ2VyICYmIChtX3Nlc3Npb25TdG9yYWdlTWFuYWdlci0+aGFzRGF0YUluTWVtb3J5
KCkgfHwgbV9zZXNzaW9uU3RvcmFnZU1hbmFnZXItPmlzQWN0aXZlKCkpKTsKKyAgICAgICAgICAg
IHx8IChtX3Nlc3Npb25TdG9yYWdlTWFuYWdlciAmJiAobV9zZXNzaW9uU3RvcmFnZU1hbmFnZXIt
Pmhhc0RhdGFJbk1lbW9yeSgpIHx8IG1fc2Vzc2lvblN0b3JhZ2VNYW5hZ2VyLT5pc0FjdGl2ZSgp
KSkKKyAgICAgICAgICAgIHx8IChtX2lkYlN0b3JhZ2VNYW5hZ2VyICYmIChtX2lkYlN0b3JhZ2VN
YW5hZ2VyLT5oYXNEYXRhSW5NZW1vcnkoKSB8fCBtX2lkYlN0b3JhZ2VNYW5hZ2VyLT5pc0FjdGl2
ZSgpKSk7CiAgICAgfQogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QKQEAgLTE2NSw3ICsxODgs
OCBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChoYXNWYWxpZEZpbGUpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICAgICAgcmV0dXJuICFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG1fbG9j
YWxTdG9yYWdlUGF0aCk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5
KG1faWRiU3RvcmFnZVBhdGgpOworICAgICAgICByZXR1cm4gIUZpbGVTeXN0ZW06OmZpbGVFeGlz
dHMobV9sb2NhbFN0b3JhZ2VQYXRoKSAmJiAhRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhtX2lkYlN0
b3JhZ2VQYXRoKTsKICAgICB9CiAKICAgICBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBmZXRj
aERhdGFUeXBlc0luTGlzdChPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB0eXBlcykKQEAgLTE4
Niw5ICsyMTAsMTIgQEAgcHVibGljOgogCiAgICAgICAgIGlmICh0eXBlcy5jb250YWlucyhXZWJz
aXRlRGF0YVR5cGU6OlNlc3Npb25TdG9yYWdlKSAmJiBtb2RpZmllZFNpbmNlVGltZSA8IFdhbGxU
aW1lOjpub3coKSkKICAgICAgICAgICAgIGRlbGV0ZVNlc3Npb25TdG9yYWdlRGF0YSgpOworCisg
ICAgICAgIGlmICh0eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFi
YXNlcykpCisgICAgICAgICAgICBkZWxldGVJREJTdG9yYWdlRGF0YShtb2RpZmllZFNpbmNlVGlt
ZSk7CiAgICAgfQogCi0gICAgdm9pZCBtb3ZlRGF0YShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0
IFN0cmluZyYgbG9jYWxTdG9yYWdlUGF0aCkKKyAgICB2b2lkIG1vdmVEYXRhKGNvbnN0IFN0cmlu
ZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VQYXRoLCBjb25zdCBTdHJpbmcmIGlk
YlN0b3JhZ2VQYXRoKQogICAgIHsKICAgICAgICAgbV9maWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIg
PSBudWxscHRyOwogICAgICAgICBpZiAobV9sb2NhbFN0b3JhZ2VNYW5hZ2VyKQpAQCAtMjAxLDYg
KzIyOCwxMSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0
b3JpZXMoRmlsZVN5c3RlbTo6cGFyZW50UGF0aChsb2NhbFN0b3JhZ2VQYXRoKSk7CiAgICAgICAg
ICAgICBXZWJDb3JlOjpTUUxpdGVGaWxlU3lzdGVtOjptb3ZlRGF0YWJhc2VGaWxlKG1fbG9jYWxT
dG9yYWdlUGF0aCwgbG9jYWxTdG9yYWdlUGF0aCk7CiAgICAgICAgIH0KKworICAgICAgICBpZiAo
IW1faWRiU3RvcmFnZVBhdGguaXNFbXB0eSgpICYmICFpZGJTdG9yYWdlUGF0aC5pc0VtcHR5KCkp
IHsKKyAgICAgICAgICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhGaWxlU3lzdGVt
OjpwYXJlbnRQYXRoKGlkYlN0b3JhZ2VQYXRoKSk7CisgICAgICAgICAgICBXZWJDb3JlOjpTUUxp
dGVGaWxlU3lzdGVtOjptb3ZlRGF0YWJhc2VGaWxlKG1faWRiU3RvcmFnZVBhdGgsIGlkYlN0b3Jh
Z2VQYXRoKTsKKyAgICAgICAgfQogICAgIH0KIAogcHJpdmF0ZToKQEAgLTIxNyw2ICsyNDksMTEg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICByZXN1bHQuYWRkKFdlYnNpdGVEYXRhVHlwZTo6
U2Vzc2lvblN0b3JhZ2UpOwogICAgICAgICB9CiAKKyAgICAgICAgaWYgKHR5cGVzLmNvbnRhaW5z
KFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKSkgeworICAgICAgICAgICAgaWYg
KG1faWRiU3RvcmFnZU1hbmFnZXIgJiYgbV9pZGJTdG9yYWdlTWFuYWdlci0+aGFzRGF0YUluTWVt
b3J5KCkpCisgICAgICAgICAgICAgICAgcmVzdWx0LmFkZChXZWJzaXRlRGF0YVR5cGU6OkluZGV4
ZWREQkRhdGFiYXNlcyk7CisgICAgICAgIH0KKwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg
IH0KIApAQCAtMjMzLDYgKzI3MCwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHJlc3Vs
dC5hZGQoV2Vic2l0ZURhdGFUeXBlOjpMb2NhbFN0b3JhZ2UpOwogICAgICAgICB9CiAKKyAgICAg
ICAgaWYgKHR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2Vz
KSAmJiAhcmVzdWx0LmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2Vz
KSkgeworICAgICAgICAgICAgaWYgKGF1dG8gZGF0YWJhc2VzID0gRmlsZVN5c3RlbTo6bGlzdERp
cmVjdG9yeShtX2lkYlN0b3JhZ2VQYXRoKTsgIWRhdGFiYXNlcy5pc0VtcHR5KCkpCisgICAgICAg
ICAgICAgICAgcmVzdWx0LmFkZChXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcyk7
CisgICAgICAgIH0KKwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIApAQCAtMjcwLDYg
KzMxMiwxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV9zZXNzaW9uU3RvcmFnZU1hbmFnZXIg
PSBudWxscHRyOwogICAgIH0KICAgICAKKyAgICB2b2lkIGRlbGV0ZUlEQlN0b3JhZ2VEYXRhKFdh
bGxUaW1lIHRpbWUpCisgICAgeworICAgICAgICBpZiAobV9pZGJTdG9yYWdlTWFuYWdlcikKKyAg
ICAgICAgICAgIG1faWRiU3RvcmFnZU1hbmFnZXItPmNsb3NlRGF0YWJhc2VzRm9yRGVsZXRpb24o
KTsKKworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVBbGxGaWxlc01vZGlmaWVkU2luY2UobV9p
ZGJTdG9yYWdlUGF0aCwgdGltZSk7CisgICAgfQorICAgIAogICAgIFN0cmluZyBtX3Jvb3RQYXRo
OwogICAgIFN0cmluZyBtX2lkZW50aWZpZXI7CiAgICAgU3RvcmFnZUJ1Y2tldE1vZGUgbV9tb2Rl
IHsgU3RvcmFnZUJ1Y2tldE1vZGU6OkJlc3RFZmZvcnQgfTsKQEAgLTI3NywxMSArMzI3LDI0IEBA
IHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPExvY2FsU3RvcmFnZU1hbmFnZXI+IG1fbG9j
YWxTdG9yYWdlTWFuYWdlcjsKICAgICBTdHJpbmcgbV9sb2NhbFN0b3JhZ2VQYXRoOwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxTZXNzaW9uU3RvcmFnZU1hbmFnZXI+IG1fc2Vzc2lvblN0b3JhZ2VNYW5h
Z2VyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJREJTdG9yYWdlTWFuYWdlcj4gbV9pZGJTdG9yYWdl
TWFuYWdlcjsKKyAgICBTdHJpbmcgbV9pZGJTdG9yYWdlUGF0aDsKIH07CiAKLU9yaWdpblN0b3Jh
Z2VNYW5hZ2VyOjpPcmlnaW5TdG9yYWdlTWFuYWdlcihTdHJpbmcmJiBwYXRoLCBTdHJpbmcmJiBs
b2NhbFN0b3JhZ2VQYXRoKQorc3RhdGljIFJlZjxRdW90YU1hbmFnZXI+IGNyZWF0ZVF1b3RhTWFu
YWdlcih1aW50NjRfdCBxdW90YSwgY29uc3QgU3RyaW5nJiBpZGJTdG9yYWdlUGF0aCwgY29uc3Qg
U3RyaW5nJiBjYWNoZVN0b3JhZ2VQYXRoLCBRdW90YU1hbmFnZXI6OkluY3JlYXNlUXVvdGFGdW5j
dGlvbiYmIGluY3JlYXNlUXVvdGFGdW5jdGlvbikKK3sKKyAgICBRdW90YU1hbmFnZXI6OkdldFVz
YWdlRnVuY3Rpb24gZ2V0VXNhZ2VGdW5jdGlvbiA9IFtpZGJTdG9yYWdlUGF0aCwgY2FjaGVTdG9y
YWdlUGF0aF0oKSB7CisgICAgICAgIHJldHVybiBJREJTdG9yYWdlTWFuYWdlcjo6aWRiU3RvcmFn
ZVNpemUoaWRiU3RvcmFnZVBhdGgpICsgQ2FjaGVTdG9yYWdlOjpFbmdpbmU6OmRpc2tVc2FnZShj
YWNoZVN0b3JhZ2VQYXRoKTsKKyAgICB9OworICAgIHJldHVybiBRdW90YU1hbmFnZXI6OmNyZWF0
ZShxdW90YSwgV1RGTW92ZShnZXRVc2FnZUZ1bmN0aW9uKSwgV1RGTW92ZShpbmNyZWFzZVF1b3Rh
RnVuY3Rpb24pKTsKK30KKworT3JpZ2luU3RvcmFnZU1hbmFnZXI6Ok9yaWdpblN0b3JhZ2VNYW5h
Z2VyKHVpbnQ2NF90IHF1b3RhLCBRdW90YU1hbmFnZXI6OkluY3JlYXNlUXVvdGFGdW5jdGlvbiYm
IGluY3JlYXNlUXVvdGFGdW5jdGlvbiwgU3RyaW5nJiYgcGF0aCwgU3RyaW5nJiYgbG9jYWxTdG9y
YWdlUGF0aCwgU3RyaW5nJiYgaWRiU3RvcmFnZVBhdGgsIFN0cmluZyYmIGNhY2hlU3RvcmFnZVBh
dGgpCiAgICAgOiBtX3BhdGgoV1RGTW92ZShwYXRoKSkKICAgICAsIG1fbG9jYWxTdG9yYWdlUGF0
aChXVEZNb3ZlKGxvY2FsU3RvcmFnZVBhdGgpKQorICAgICwgbV9pZGJTdG9yYWdlUGF0aChXVEZN
b3ZlKGlkYlN0b3JhZ2VQYXRoKSkKKyAgICAsIG1fY2FjaGVTdG9yYWdlUGF0aChXVEZNb3ZlKGNh
Y2hlU3RvcmFnZVBhdGgpKQorICAgICwgbV9xdW90YU1hbmFnZXIoY3JlYXRlUXVvdGFNYW5hZ2Vy
KHF1b3RhLCBtX2lkYlN0b3JhZ2VQYXRoLCBtX2NhY2hlU3RvcmFnZVBhdGgsIFdURk1vdmUoaW5j
cmVhc2VRdW90YUZ1bmN0aW9uKSkpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7
CiB9CkBAIC0yOTcsMTEgKzM2MCwxNiBAQCB2b2lkIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpjb25u
ZWN0aW9uQ2xvc2VkKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgY29ubmVjdGlvbgogT3JpZ2lu
U3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VCdWNrZXQmIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpkZWZh
dWx0QnVja2V0KCkKIHsKICAgICBpZiAoIW1fZGVmYXVsdEJ1Y2tldCkKLSAgICAgICAgbV9kZWZh
dWx0QnVja2V0ID0gbWFrZVVuaXF1ZTxTdG9yYWdlQnVja2V0PihtX3BhdGgsICJkZWZhdWx0Il9z
LCBtX2xvY2FsU3RvcmFnZVBhdGgpOworICAgICAgICBtX2RlZmF1bHRCdWNrZXQgPSBtYWtlVW5p
cXVlPFN0b3JhZ2VCdWNrZXQ+KG1fcGF0aCwgImRlZmF1bHQiX3MsIG1fbG9jYWxTdG9yYWdlUGF0
aCwgbV9pZGJTdG9yYWdlUGF0aCk7CiAKICAgICByZXR1cm4gKm1fZGVmYXVsdEJ1Y2tldDsKIH0K
IAorUXVvdGFNYW5hZ2VyJiBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6cXVvdGFNYW5hZ2VyKCkKK3sK
KyAgICByZXR1cm4gbV9xdW90YU1hbmFnZXIuZ2V0KCk7Cit9CisKIEZpbGVTeXN0ZW1TdG9yYWdl
TWFuYWdlciYgT3JpZ2luU3RvcmFnZU1hbmFnZXI6OmZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlcihG
aWxlU3lzdGVtU3RvcmFnZUhhbmRsZVJlZ2lzdHJ5JiByZWdpc3RyeSkKIHsKICAgICByZXR1cm4g
ZGVmYXVsdEJ1Y2tldCgpLmZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlcihyZWdpc3RyeSk7CkBAIC0z
MjcsNiArMzk1LDIzIEBAIFNlc3Npb25TdG9yYWdlTWFuYWdlciogT3JpZ2luU3RvcmFnZU1hbmFn
ZXI6OmV4aXN0aW5nU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyKCkKICAgICByZXR1cm4gZGVmYXVsdEJ1
Y2tldCgpLmV4aXN0aW5nU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyKCk7CiB9CiAKK0lEQlN0b3JhZ2VN
YW5hZ2VyJiBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6aWRiU3RvcmFnZU1hbmFnZXIoSURCU3RvcmFn
ZVJlZ2lzdHJ5JiByZWdpc3RyeSkKK3sKKyAgICByZXR1cm4gZGVmYXVsdEJ1Y2tldCgpLmlkYlN0
b3JhZ2VNYW5hZ2VyKHJlZ2lzdHJ5LCBbcXVvdGFNYW5hZ2VyID0gV2Vha1B0ciB7IHRoaXMtPnF1
b3RhTWFuYWdlcigpIH1dKHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBtdXRhYmxlIHsKKyAgICAgICAgaWYg
KCFxdW90YU1hbmFnZXIpCisgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFs
c2UpOworCisgICAgICAgIHF1b3RhTWFuYWdlci0+cmVxdWVzdFNwYWNlKHNwYWNlUmVxdWVzdGVk
LCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byBk
ZWNpc2lvbikgbXV0YWJsZSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihkZWNpc2lv
biA9PSBRdW90YU1hbmFnZXI6OkRlY2lzaW9uOjpHcmFudCk7CisgICAgICAgIH0pOworICAgIH0p
OworfQorCitJREJTdG9yYWdlTWFuYWdlciogT3JpZ2luU3RvcmFnZU1hbmFnZXI6OmV4aXN0aW5n
SURCU3RvcmFnZU1hbmFnZXIoKQoreworICAgIHJldHVybiBkZWZhdWx0QnVja2V0KCkuZXhpc3Rp
bmdJREJTdG9yYWdlTWFuYWdlcigpOworfQorCiBib29sIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpp
c0FjdGl2ZSgpCiB7CiAgICAgcmV0dXJuIGRlZmF1bHRCdWNrZXQoKS5pc0FjdGl2ZSgpOwpAQCAt
MzU5LDExICs0NDQsMTEgQEAgdm9pZCBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6ZGVsZXRlRGF0YShP
cHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB0eXBlcywgV2FsbFRpbWUKICAgICBkZWZhdWx0QnVj
a2V0KCkuZGVsZXRlRGF0YSh0eXBlcywgbW9kaWZpZWRTaW5jZSk7CiB9CiAKLXZvaWQgT3JpZ2lu
U3RvcmFnZU1hbmFnZXI6Om1vdmVEYXRhKGNvbnN0IFN0cmluZyYgbmV3UGF0aCwgY29uc3QgU3Ry
aW5nJiBsb2NhbFN0b3JhZ2VQYXRoKQordm9pZCBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6bW92ZURh
dGEoY29uc3QgU3RyaW5nJiBuZXdQYXRoLCBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZVBhdGgs
IGNvbnN0IFN0cmluZyYgaWRiU3RvcmFnZVBhdGgpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjpp
c01haW4oKSk7CiAKLSAgICBkZWZhdWx0QnVja2V0KCkubW92ZURhdGEobmV3UGF0aCwgbG9jYWxT
dG9yYWdlUGF0aCk7CisgICAgZGVmYXVsdEJ1Y2tldCgpLm1vdmVEYXRhKG5ld1BhdGgsIGxvY2Fs
U3RvcmFnZVBhdGgsIGlkYlN0b3JhZ2VQYXRoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2lu
U3RvcmFnZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9P
cmlnaW5TdG9yYWdlTWFuYWdlci5oCmluZGV4IDVlNzY2OTk4NmU0NjY4NWYzODliN2E1MjcxZTY2
ZDBlNjNjMmQxOWUuLmVjNDZjNTRiMzExMWZiMDFiM2NlNjk2OTIwN2MxM2JlNWQ5OTlkOTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9y
YWdlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9P
cmlnaW5TdG9yYWdlTWFuYWdlci5oCkBAIC0yNiwxNiArMjYsMTUgQEAKICNwcmFnbWEgb25jZQog
CiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIlF1b3RhTWFuYWdlci5oIgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1zdHJ1
Y3QgQ2xpZW50T3JpZ2luOwotfQotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgRmlsZVN5
c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeTsKIGNsYXNzIEZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdl
cjsKK2NsYXNzIElEQlN0b3JhZ2VNYW5hZ2VyOworY2xhc3MgSURCU3RvcmFnZVJlZ2lzdHJ5Owog
Y2xhc3MgTG9jYWxTdG9yYWdlTWFuYWdlcjsKIGNsYXNzIFNlc3Npb25TdG9yYWdlTWFuYWdlcjsK
IGNsYXNzIFN0b3JhZ2VBcmVhUmVnaXN0cnk7CkBAIC00NCwzNSArNDMsMzggQEAgZW51bSBjbGFz
cyBXZWJzaXRlRGF0YVR5cGUgOiB1aW50MzJfdDsKIGNsYXNzIE9yaWdpblN0b3JhZ2VNYW5hZ2Vy
IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBPcmlnaW5TdG9y
YWdlTWFuYWdlcihTdHJpbmcmJiBwYXRoLCBTdHJpbmcmJiBsb2NhbFN0b3JhZ2VQYXRoKTsKKyAg
ICBPcmlnaW5TdG9yYWdlTWFuYWdlcih1aW50NjRfdCBxdW90YSwgUXVvdGFNYW5hZ2VyOjpJbmNy
ZWFzZVF1b3RhRnVuY3Rpb24mJiwgU3RyaW5nJiYgcGF0aCwgU3RyaW5nJiYgbG9jYWxTdG9yYWdl
UGF0aCwgU3RyaW5nJiYgaWRiU3RvcmFnZVBhdGgsIFN0cmluZyYmIGNhY2hlU3RvcmFnZVBhdGgp
OwogICAgIH5PcmlnaW5TdG9yYWdlTWFuYWdlcigpOwogCiAgICAgdm9pZCBjb25uZWN0aW9uQ2xv
c2VkKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQpOwogICAgIGJvb2wgcGVyc2lzdGVkKCkgY29u
c3QgeyByZXR1cm4gbV9wZXJzaXN0ZWQ7IH0KICAgICB2b2lkIHNldFBlcnNpc3RlZChib29sIHZh
bHVlKTsKKyAgICBRdW90YU1hbmFnZXImIHF1b3RhTWFuYWdlcigpOwogICAgIEZpbGVTeXN0ZW1T
dG9yYWdlTWFuYWdlciYgZmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyKEZpbGVTeXN0ZW1TdG9yYWdl
SGFuZGxlUmVnaXN0cnkmKTsKICAgICBMb2NhbFN0b3JhZ2VNYW5hZ2VyJiBsb2NhbFN0b3JhZ2VN
YW5hZ2VyKFN0b3JhZ2VBcmVhUmVnaXN0cnkmKTsKICAgICBMb2NhbFN0b3JhZ2VNYW5hZ2VyKiBl
eGlzdGluZ0xvY2FsU3RvcmFnZU1hbmFnZXIoKTsKICAgICBTZXNzaW9uU3RvcmFnZU1hbmFnZXIm
IHNlc3Npb25TdG9yYWdlTWFuYWdlcihTdG9yYWdlQXJlYVJlZ2lzdHJ5Jik7CiAgICAgU2Vzc2lv
blN0b3JhZ2VNYW5hZ2VyKiBleGlzdGluZ1Nlc3Npb25TdG9yYWdlTWFuYWdlcigpOworICAgIElE
QlN0b3JhZ2VNYW5hZ2VyJiBpZGJTdG9yYWdlTWFuYWdlcihJREJTdG9yYWdlUmVnaXN0cnkmKTsK
KyAgICBJREJTdG9yYWdlTWFuYWdlciogZXhpc3RpbmdJREJTdG9yYWdlTWFuYWdlcigpOwogICAg
IGJvb2wgaXNBY3RpdmUoKTsKICAgICBib29sIGlzRW1wdHkoKTsKICAgICBPcHRpb25TZXQ8V2Vi
c2l0ZURhdGFUeXBlPiBmZXRjaERhdGFUeXBlc0luTGlzdChPcHRpb25TZXQ8V2Vic2l0ZURhdGFU
eXBlPik7CiAgICAgdm9pZCBkZWxldGVEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBX
YWxsVGltZSk7Ci0gICAgdm9pZCBtb3ZlRGF0YShjb25zdCBTdHJpbmcmIG5ld1BhdGgsIGNvbnN0
IFN0cmluZyYgbG9jYWxTdG9yYWdlUGF0aCk7CisgICAgdm9pZCBtb3ZlRGF0YShjb25zdCBTdHJp
bmcmIG5ld1BhdGgsIGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlUGF0aCwgY29uc3QgU3RyaW5n
JiBpZGJTdG9yYWdlUGF0aCk7CiAKIHByaXZhdGU6CiAgICAgZW51bSBjbGFzcyBTdG9yYWdlQnVj
a2V0TW9kZSA6IGJvb2w7CiAgICAgY2xhc3MgU3RvcmFnZUJ1Y2tldDsKICAgICBTdG9yYWdlQnVj
a2V0JiBkZWZhdWx0QnVja2V0KCk7CiAKLSAgICB2b2lkIGNyZWF0ZU9yaWdpbkZpbGVJZk5lY2Vz
c2FyeShjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKLSAgICB2b2lkIGRlbGV0ZU9yaWdp
bkZpbGVJZk5lY2Vzc2FyeSgpOwotCiAgICAgc3RkOjp1bmlxdWVfcHRyPFN0b3JhZ2VCdWNrZXQ+
IG1fZGVmYXVsdEJ1Y2tldDsKICAgICBTdHJpbmcgbV9wYXRoOwogICAgIGJvb2wgbV9wZXJzaXN0
ZWQgeyBmYWxzZSB9OwogICAgIFN0cmluZyBtX2xvY2FsU3RvcmFnZVBhdGg7CisgICAgU3RyaW5n
IG1faWRiU3RvcmFnZVBhdGg7CisgICAgU3RyaW5nIG1fY2FjaGVTdG9yYWdlUGF0aDsKKyAgICBS
ZWY8UXVvdGFNYW5hZ2VyPiBtX3F1b3RhTWFuYWdlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1F1
b3RhTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvUXVv
dGFNYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNDE3ODUzYmZjMjkxM2Q2ZTkwMTVlZGFmYzIxZjY0
ZjhkYWJmZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9zdG9yYWdlL1F1b3RhTWFuYWdlci5jcHAKQEAgLTAsMCArMSwxMzUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUXVvdGFNYW5hZ2VyLmgiCisKKyNpbmNs
dWRlIDx3dGYvU2NvcGUuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1JlZjxRdW90YU1hbmFn
ZXI+IFF1b3RhTWFuYWdlcjo6Y3JlYXRlKHVpbnQ2NF90IHF1b3RhLCBHZXRVc2FnZUZ1bmN0aW9u
JiYgZ2V0VXNhZ2VGdW5jdGlvbiwgSW5jcmVhc2VRdW90YUZ1bmN0aW9uJiYgaW5jcmVhc2VRdW90
YUZ1bmN0aW9uKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFF1b3RhTWFuYWdlcihxdW90
YSwgV1RGTW92ZShnZXRVc2FnZUZ1bmN0aW9uKSwgV1RGTW92ZShpbmNyZWFzZVF1b3RhRnVuY3Rp
b24pKSk7Cit9CisKK1F1b3RhTWFuYWdlcjo6UXVvdGFNYW5hZ2VyKHVpbnQ2NF90IHF1b3RhLCBH
ZXRVc2FnZUZ1bmN0aW9uJiYgZ2V0VXNhZ2VGdW5jdGlvbiwgSW5jcmVhc2VRdW90YUZ1bmN0aW9u
JiYgaW5jcmVhc2VRdW90YUZ1bmN0aW9uKQorICAgIDogbV9xdW90YShxdW90YSkKKyAgICAsIG1f
aW5pdGlhbFF1b3RhKHF1b3RhKQorICAgICwgbV9nZXRVc2FnZUZ1bmN0aW9uKFdURk1vdmUoZ2V0
VXNhZ2VGdW5jdGlvbikpCisgICAgLCBtX2luY3JlYXNlUXVvdGFGdW5jdGlvbihXVEZNb3ZlKGlu
Y3JlYXNlUXVvdGFGdW5jdGlvbikpCit7CisgICAgQVNTRVJUKG1fcXVvdGEpOworfQorCit2b2lk
IFF1b3RhTWFuYWdlcjo6cmVxdWVzdFNwYWNlKHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkLCBSZXF1
ZXN0Q2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBtX3JlcXVlc3RzLmFwcGVuZChRdW90YU1h
bmFnZXI6OlJlcXVlc3QgeyBzcGFjZVJlcXVlc3RlZCwgV1RGTW92ZShjYWxsYmFjayksIFF1b3Rh
SW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllciB7IH0gfSk7CisgICAgaGFuZGxlUmVxdWVzdHMoKTsK
K30KKwordm9pZCBRdW90YU1hbmFnZXI6OmhhbmRsZVJlcXVlc3RzKCkKK3sKKyAgICBpZiAobV9j
dXJyZW50UmVxdWVzdCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9pc0hhbmRsaW5nUmVxdWVz
dHMgPSB0cnVlOworICAgIGF1dG8gY2xlYXJJc0hhbmRsaW5nUmVxdWVzdHMgPSBtYWtlU2NvcGVF
eGl0KFsmXSB7CisgICAgICAgIG1faXNIYW5kbGluZ1JlcXVlc3RzID0gZmFsc2U7CisgICAgfSk7
CisKKyAgICB3aGlsZSAoIW1fY3VycmVudFJlcXVlc3QgJiYgIW1fcmVxdWVzdHMuaXNFbXB0eSgp
KSB7CisgICAgICAgIG1fY3VycmVudFJlcXVlc3QgPSBtX3JlcXVlc3RzLnRha2VGaXJzdCgpOwor
ICAgICAgICBpZiAoZ3JhbnRXaXRoQ3VycmVudFF1b3RhKG1fY3VycmVudFJlcXVlc3QtPnNwYWNl
UmVxdWVzdGVkKSkgeworICAgICAgICAgICAgbV9jdXJyZW50UmVxdWVzdC0+Y2FsbGJhY2soRGVj
aXNpb246OkdyYW50KTsKKyAgICAgICAgICAgIG1fY3VycmVudFJlcXVlc3QgPSBzdGQ6Om51bGxv
cHQ7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIG1fY3VycmVu
dFJlcXVlc3QtPmlkZW50aWZpZXIgPSBRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXI6Omdl
bmVyYXRlVGhyZWFkU2FmZSgpOworICAgICAgICBtX2luY3JlYXNlUXVvdGFGdW5jdGlvbihtX2N1
cnJlbnRSZXF1ZXN0LT5pZGVudGlmaWVyLCBtX3F1b3RhLCAqbV91c2FnZSwgbV9jdXJyZW50UmVx
dWVzdC0+c3BhY2VSZXF1ZXN0ZWQpOworICAgIH0KK30KKworYm9vbCBRdW90YU1hbmFnZXI6Omdy
YW50V2l0aEN1cnJlbnRRdW90YSh1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCkKK3sKKyAgICBpZiAo
Z3JhbnRGYXN0UGF0aChzcGFjZVJlcXVlc3RlZCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisg
ICAgLy8gV2hlbiBRdW90YU1hbmFnZXIgaXMgdXNlZCBmb3IgdGhlIGZpcnN0IHRpbWUsIHdlIHdh
bnQgdG8gbWFrZSBzdXJlIGl0cyBpbml0aWFsIHF1b3RhIGlzIGJpZ2dlciB0aGFuIGV4aXN0aW5n
IGRpc2sgdXNhZ2UsCisgICAgLy8gYmFzZWQgb24gdGhlIGFzc3VtcHRpb24gdGhhdCB0aGUgcXVv
dGEgd2FzIGluY3JlYXNlZCB0byBhdCBsZWFzdCB0aGUgZGlzayB1c2FnZSB1bmRlciB1c2VyJ3Mg
cGVybWlzc2lvbiBiZWZvcmUuCisgICAgYm9vbCBzaG91bGRVcGRhdGVRdW90YUJhc2Vkb25Vc2Fn
ZSA9ICFtX3VzYWdlOworICAgIG1fdXNhZ2UgPSBtX2dldFVzYWdlRnVuY3Rpb24oKTsKKyAgICBp
ZiAoc2hvdWxkVXBkYXRlUXVvdGFCYXNlZG9uVXNhZ2UpIHsKKyAgICAgICAgYXV0byBkZWZhdWx0
UXVvdGFTdGVwID0gbV9xdW90YSAvIDEwOworICAgICAgICBtX3F1b3RhID0gc3RkOjptYXgobV9x
dW90YSwgZGVmYXVsdFF1b3RhU3RlcCAqICgoKm1fdXNhZ2UgLyBkZWZhdWx0UXVvdGFTdGVwKSAr
IDEpKTsKKyAgICB9CisgICAgbV9xdW90YUNvdW50ZG93biA9ICptX3VzYWdlIDwgbV9xdW90YSA/
IG1fcXVvdGEgLSAqbV91c2FnZSA6IDA7CisKKyAgICByZXR1cm4gZ3JhbnRGYXN0UGF0aChzcGFj
ZVJlcXVlc3RlZCk7Cit9CisKK2Jvb2wgUXVvdGFNYW5hZ2VyOjpncmFudEZhc3RQYXRoKHVpbnQ2
NF90IHNwYWNlUmVxdWVzdGVkKQoreworICAgIGlmIChzcGFjZVJlcXVlc3RlZCA8PSBtX3F1b3Rh
Q291bnRkb3duKSB7CisgICAgICAgIG1fcXVvdGFDb3VudGRvd24gLT0gc3BhY2VSZXF1ZXN0ZWQ7
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKwor
dm9pZCBRdW90YU1hbmFnZXI6OmRpZEluY3JlYXNlUXVvdGEoUXVvdGFJbmNyZWFzZVJlcXVlc3RJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IG5ld1F1b3RhKQor
eworICAgIGlmICghbV9jdXJyZW50UmVxdWVzdCB8fCBtX2N1cnJlbnRSZXF1ZXN0LT5pZGVudGlm
aWVyICE9IGlkZW50aWZpZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChuZXdRdW90YSkg
eworICAgICAgICBtX3F1b3RhID0gKm5ld1F1b3RhOworICAgICAgICBtX3F1b3RhQ291bnRkb3du
ID0gMDsgLy8gUmVjYWxjdWxhdGUgbV9xdW90YUNvdW50ZG93biBiYXNlZCBvbiB1c2FnZS4KKyAg
ICB9CisKKyAgICBhdXRvIGRlY2lzaW9uID0gZ3JhbnRXaXRoQ3VycmVudFF1b3RhKG1fY3VycmVu
dFJlcXVlc3QtPnNwYWNlUmVxdWVzdGVkKSA/IERlY2lzaW9uOjpHcmFudCA6IERlY2lzaW9uOjpE
ZW55OworICAgIG1fY3VycmVudFJlcXVlc3QtPmNhbGxiYWNrKGRlY2lzaW9uKTsKKyAgICBtX2N1
cnJlbnRSZXF1ZXN0ID0gc3RkOjpudWxsb3B0OworCisgICAgaWYgKCFtX2lzSGFuZGxpbmdSZXF1
ZXN0cykKKyAgICAgICAgaGFuZGxlUmVxdWVzdHMoKTsKK30KKwordm9pZCBRdW90YU1hbmFnZXI6
OnJlc2V0UXVvdGFVcGRhdGVkQmFzZWRPblVzYWdlRm9yVGVzdGluZygpCit7CisgICAgbV9xdW90
YSA9IG1faW5pdGlhbFF1b3RhOworICAgIG1fcXVvdGFDb3VudGRvd24gPSAwOworICAgIG1fdXNh
Z2UgPSBzdGQ6Om51bGxvcHQ7Cit9CisKK3ZvaWQgUXVvdGFNYW5hZ2VyOjpyZXNldFF1b3RhRm9y
VGVzdGluZygpCit7CisgICAgbV9xdW90YSA9IG1faW5pdGlhbFF1b3RhOworICAgIG1fcXVvdGFD
b3VudGRvd24gPSAwOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9RdW90YU1hbmFnZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9RdW90YU1hbmFnZXIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li43MWU1ODQ1NjJhOTU5YzFjMTk4MWQ3ZjNkMTBkMmUzYTEwY2U2MWNiCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1F1b3RhTWFuYWdlci5o
CkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
IlF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllci5oIgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0
aW9uSGFuZGxlci5oPgorI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworY2xhc3MgUXVvdGFNYW5hZ2VyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFF1
b3RhTWFuYWdlcj4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxRdW90YU1hbmFnZXI+IHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICB1c2luZyBHZXRVc2FnZUZ1bmN0
aW9uID0gRnVuY3Rpb248dWludDY0X3QoKT47CisgICAgdXNpbmcgSW5jcmVhc2VRdW90YUZ1bmN0
aW9uID0gRnVuY3Rpb248dm9pZChRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2
NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgY3VycmVudFVzYWdlLCB1aW50NjRfdCByZXF1ZXN0
ZWRJbmNyZWFzZSk+OworICAgIHN0YXRpYyBSZWY8UXVvdGFNYW5hZ2VyPiBjcmVhdGUodWludDY0
X3QgcXVvdGEsIEdldFVzYWdlRnVuY3Rpb24mJiwgSW5jcmVhc2VRdW90YUZ1bmN0aW9uJiYpOwor
CisgICAgZW51bSBjbGFzcyBEZWNpc2lvbiB7IERlbnksIEdyYW50IH07CisgICAgdXNpbmcgUmVx
dWVzdENhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChEZWNpc2lvbik+OworICAgIHZv
aWQgcmVxdWVzdFNwYWNlKHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkLCBSZXF1ZXN0Q2FsbGJhY2sm
Jik7CisgICAgdm9pZCBkaWRJbmNyZWFzZVF1b3RhKFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRp
Zmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbmV3UXVvdGEpOworCisgICAgdm9pZCByZXNl
dFF1b3RhVXBkYXRlZEJhc2VkT25Vc2FnZUZvclRlc3RpbmcoKTsKKyAgICB2b2lkIHJlc2V0UXVv
dGFGb3JUZXN0aW5nKCk7CisKK3ByaXZhdGU6CisgICAgUXVvdGFNYW5hZ2VyKHVpbnQ2NF90IHF1
b3RhLCBHZXRVc2FnZUZ1bmN0aW9uJiYsIEluY3JlYXNlUXVvdGFGdW5jdGlvbiYmKTsKKyAgICB2
b2lkIGhhbmRsZVJlcXVlc3RzKCk7CisgICAgYm9vbCBncmFudFdpdGhDdXJyZW50UXVvdGEodWlu
dDY0X3Qgc3BhY2VSZXF1ZXN0ZWQpOworICAgIGJvb2wgZ3JhbnRGYXN0UGF0aCh1aW50NjRfdCBz
cGFjZVJlcXVlc3RlZCk7CisKKyAgICBzdHJ1Y3QgUmVxdWVzdCB7CisgICAgICAgIHVpbnQ2NF90
IHNwYWNlUmVxdWVzdGVkOworICAgICAgICBSZXF1ZXN0Q2FsbGJhY2sgY2FsbGJhY2s7CisgICAg
ICAgIFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllciBpZGVudGlmaWVyOworICAgIH07Cisg
ICAgRGVxdWU8UmVxdWVzdD4gbV9yZXF1ZXN0czsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlcXVlc3Q+
IG1fY3VycmVudFJlcXVlc3Q7CisgICAgYm9vbCBtX2lzSGFuZGxpbmdSZXF1ZXN0cyB7IGZhbHNl
IH07CisgICAgdWludDY0X3QgbV9xdW90YUNvdW50ZG93biB7IDAgfTsKKyAgICB1aW50NjRfdCBt
X3F1b3RhOworICAgIHVpbnQ2NF90IG1faW5pdGlhbFF1b3RhOyAvLyBUZXN0IG9ubHkuCisgICAg
c3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbV91c2FnZTsKKyAgICBHZXRVc2FnZUZ1bmN0aW9uIG1f
Z2V0VXNhZ2VGdW5jdGlvbjsKKyAgICBJbmNyZWFzZVF1b3RhRnVuY3Rpb24gbV9pbmNyZWFzZVF1
b3RhRnVuY3Rpb247Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDdlYmZhNTE2YjUwMzM2ZDM2ODdmN2VjZGQx
N2U4ZTdlYmQxY2Q5ZDcuLjY0NTNhOWQyOTAyMzI3ZWZiYjFhMDE1Mzc5NmIzNmVhYzU4NjZhODAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysr
IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtMjg3LDYgKzI4
Nyw3IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAgICAg
ICAgICdXZWJDb3JlOjpOYXRpdmVJbWFnZVJlZmVyZW5jZScsCiAgICAgICAgICdXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpQbGF5YmFja1RhcmdldENsaWVudENv
bnRleHRJZGVudGlmaWVyJywKKyAgICAgICAgJ1dlYktpdDo6UXVvdGFJbmNyZWFzZVJlcXVlc3RJ
ZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQb2xpY3knLAog
ICAgICAgICAnV2ViQ29yZTo6UG9pbnRlcklEJywKICAgICAgICAgJ1dlYkNvcmU6OlB1c2hTdWJz
Y3JpcHRpb25JZGVudGlmaWVyJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YnNpdGVEYXRhL1F1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllci5oIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2Vic2l0ZURhdGEvUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYmU0NTRiNmEwOGI2OGEyMGM2NTBkYzg5NzYzMjg1NThhMzcyMDFmNQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhL1F1b3RhSW5jcmVh
c2VSZXF1ZXN0SWRlbnRpZmllci5oCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitlbnVtIFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllclR5cGUgeyB9
OwordXNpbmcgUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmll
cjxRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXJUeXBlPjsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0b3Jl
UGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFt
ZXRlcnMuaAppbmRleCAxNTNiZjkzYmRmNmZmMTFiNDYwZjY0ODI1YjQ1MDMwOGI4NDVkMzhkLi4y
MDk4NDY4MTYyOTkwNDczMzg4NGNmY2IxMjdhYTU3MjFkMmNlZTg5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmgKQEAgLTcxLDggKzcx
LDggQEAgc3RydWN0IFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIHsKICAgICBTdHJpbmcgZ2Vu
ZXJhbFN0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGdlbmVy
YWxTdG9yYWdlRGlyZWN0b3J5SGFuZGxlOwogCi0gICAgdWludDY0X3QgcGVyT3JpZ2luU3RvcmFn
ZVF1b3RhIHsgV2ViQ29yZTo6U3RvcmFnZVF1b3RhTWFuYWdlcjo6ZGVmYXVsdFF1b3RhKCkgfTsK
LSAgICB1aW50NjRfdCBwZXJUaGlyZFBhcnR5T3JpZ2luU3RvcmFnZVF1b3RhIHsgV2ViQ29yZTo6
U3RvcmFnZVF1b3RhTWFuYWdlcjo6ZGVmYXVsdFRoaXJkUGFydHlRdW90YSgpIH07CisgICAgdWlu
dDY0X3QgcGVyT3JpZ2luU3RvcmFnZVF1b3RhOworICAgIHVpbnQ2NF90IHBlclRoaXJkUGFydHlP
cmlnaW5TdG9yYWdlUXVvdGE7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0
CmluZGV4IDU3ZWYzYjE0ZWFmMmMxMDkyMDk4ZWU5NDMyZjUwOGM2MTFlNThlMzUuLjZhNjY5YmIw
MGVjMWE5NmFlZmE2M2Q0OGIxN2ViNDI1ZTBmZTdlNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMTQ0LDEw
ICsxNDQsMTQgQEAgTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uY3BwIEBuby11bmlmeQogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxl
U3lzdGVtU3RvcmFnZU1hbmFnZXIuY3BwCiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0
ZW1TdG9yYWdlSGFuZGxlLmNwcAogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3Rv
cmFnZUhhbmRsZVJlZ2lzdHJ5LmNwcAorTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdl
Q29ubmVjdGlvblRvQ2xpZW50LmNwcAorTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdl
TWFuYWdlci5jcHAKK05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZVJlZ2lzdHJ5LmNw
cAogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9Mb2NhbFN0b3JhZ2VNYW5hZ2VyLmNwcAogTmV0d29y
a1Byb2Nlc3Mvc3RvcmFnZS9NZW1vcnlTdG9yYWdlQXJlYS5jcHAKIE5ldHdvcmtQcm9jZXNzL3N0
b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmNwcAogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9P
cmlnaW5TdG9yYWdlTWFuYWdlci5jcHAKK05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvUXVvdGFNYW5h
Z2VyLmNwcAogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TUUxpdGVTdG9yYWdlQXJlYS5jcHAKIE5l
dHdvcmtQcm9jZXNzL3N0b3JhZ2UvU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyLmNwcAogTmV0d29ya1By
b2Nlc3Mvc3RvcmFnZS9TdG9yYWdlQXJlYUJhc2UuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBhNjc4
MzY3YTc3NWE0OWJhODFiMjQ4OGNmMzFlYWI5ZGNjY2NjOTIxLi4xOTU0NjI3ODc3ZDg0Y2EwOGI1
NzIwMGNjODYyZTkzZDIzMzA0Mzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTE0OTUsNiArMTQ5NSwx
NiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlcXVlc3RTdG9yYWdlU3BhY2UoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBXZQogICAgIH0pOwogfQogCit2b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6OmluY3JlYXNlUXVvdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25z
dCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgY3VycmVu
dFVzYWdlLCB1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCkKK3sKKyAgICByZXF1ZXN0U3RvcmFnZVNw
YWNlKHNlc3Npb25JRCwgb3JpZ2luLCBjdXJyZW50UXVvdGEsIGN1cnJlbnRVc2FnZSwgc3BhY2VS
ZXF1ZXN0ZWQsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBzZXNzaW9uSUQs
IG9yaWdpbiwgaWRlbnRpZmllcl0oYXV0byByZXN1bHQpIG11dGFibGUgeworICAgICAgICBpZiAo
IXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtQcm9jZXNzOjpEaWRJbmNyZWFzZVF1b3RhKHNlc3Npb25JRCwgb3JpZ2luLCBpZGVu
dGlmaWVyLCByZXN1bHQpLCAwKTsKKyAgICB9KTsKK30KKwogdm9pZCBOZXR3b3JrUHJvY2Vzc1By
b3h5OjpyZWdpc3RlclNjaGVtZUZvckxlZ2FjeUN1c3RvbVByb3RvY29sKGNvbnN0IFN0cmluZyYg
c2NoZW1lKQogewogI2lmIEVOQUJMRShMRUdBQ1lfQ1VTVE9NX1BST1RPQ09MX01BTkFHRVIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5oCmluZGV4IGE0ZTM2NDVlYmFhZTMzNmQxODBiNTQxNGJhZmFhMzVkODNmOTE4YzQuLjI0
MWY4ZTQ5ZDVlYmY5MjRkNTc0MTI4MDg5ZjEwYzJkOGViZGU5ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0z
Myw2ICszMyw3IEBACiAjaW5jbHVkZSAiUHJvY2Vzc0xhdW5jaGVyLmgiCiAjaW5jbHVkZSAiUHJv
Y2Vzc1Rocm90dGxlci5oIgogI2luY2x1ZGUgIlByb2Nlc3NUaHJvdHRsZXJDbGllbnQuaCIKKyNp
bmNsdWRlICJRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJVc2Vy
Q29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5
TWVzc2FnZXNSZXBsaWVzLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgpAQCAtMzQw
LDYgKzM0MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB0cmlnZ2VyQnJvd3NpbmdDb250ZXh0R3Jv
dXBTd2l0Y2hGb3JOYXZpZ2F0aW9uKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgV2ViQ29yZTo6QnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbiwg
Y29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlc3BvbnNlRG9tYWluLCBOZXR3b3Jr
UmVzb3VyY2VMb2FkSWRlbnRpZmllciBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlm
aWVyVG9SZXN1bWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBzdWNjZXNzKT4mJik7CiAK
ICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlU3BhY2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNv
cmU6OkNsaWVudE9yaWdpbiYsIHVpbnQ2NF90IHF1b3RhLCB1aW50NjRfdCBjdXJyZW50U2l6ZSwg
dWludDY0X3Qgc3BhY2VSZXF1aXJlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlv
bmFsPHVpbnQ2NF90PiBxdW90YSk+JiYpOworICAgIHZvaWQgaW5jcmVhc2VRdW90YShQQUw6OlNl
c3Npb25JRCwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgUXVvdGFJbmNyZWFzZVJlcXVl
c3RJZGVudGlmaWVyLCB1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRVc2Fn
ZSwgdWludDY0X3Qgc3BhY2VSZXF1ZXN0ZWQpOwogCiAgICAgV2Vic2l0ZURhdGFTdG9yZSogd2Vi
c2l0ZURhdGFTdG9yZUZyb21TZXNzaW9uSUQoUEFMOjpTZXNzaW9uSUQpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkubWVzc2FnZXMuaW4KaW5kZXggMTJkMDZjZWJkNjJhZjE3NTBlNzg4NTU5YzEzYTFiMzk4
M2ZkZDJiYS4uNjhjMzJjNGYzMWVhMWExOGU4MzAwNDQzMjdkNTBiODQyOTUzNjQxMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtNjgsNiArNjgsNyBAQCBtZXNzYWdlcyAtPiBO
ZXR3b3JrUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIHsKICNlbmRpZgogCiAgICAgUmVxdWVz
dFN0b3JhZ2VTcGFjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0cnVjdCBXZWJDb3JlOjpD
bGllbnRPcmlnaW4gb3JpZ2luLCB1aW50NjRfdCBxdW90YSwgdWludDY0X3QgY3VycmVudFNpemUs
IHVpbnQ2NF90IHNwYWNlUmVxdWlyZWQpIC0+IChzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBuZXdR
dW90YSkgQXN5bmMKKyAgICBJbmNyZWFzZVF1b3RhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
c3RydWN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiBvcmlnaW4sIFdlYktpdDo6UXVvdGFJbmNyZWFz
ZVJlcXVlc3RJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVpbnQ2NF90IHF1b3RhLCB1aW50NjRfdCBj
dXJyZW50U2l6ZSwgdWludDY0X3Qgc3BhY2VSZXF1ZXN0ZWQpCiAgICAgCiAgICAgUmVzb3VyY2VM
b2FkRGlkU2VuZFJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJZGVu
dGlmaWVyLCBzdHJ1Y3QgV2ViS2l0OjpSZXNvdXJjZUxvYWRJbmZvIHJlc291cmNlTG9hZEluZm8s
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBzdGQ6Om9wdGlvbmFsPElQQzo6Rm9y
bURhdGFSZWZlcmVuY2U+IGh0dHBCb2R5KQogICAgIFJlc291cmNlTG9hZERpZFBlcmZvcm1IVFRQ
UmVkaXJlY3Rpb24oV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJZGVudGlmaWVy
LCBzdHJ1Y3QgV2ViS2l0OjpSZXNvdXJjZUxvYWRJbmZvIHJlc291cmNlTG9hZEluZm8sIFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UgcmVzb3VyY2VSZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0IHJlcXVlc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IDA4Y2VjZmViZmUwZGU0NGIxZjVh
NGI1MDExNDA1ZTFmZDgxNTA5ZmUuLjEzMjkwNTU3MmY0YjhjM2QwNzk1ODM0MzE0OGMyZmI1Njgz
ZmVmYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC0xNzE2LDcgKzE3MTYsNyBAQCB2b2lkIFdlYnNp
dGVEYXRhU3RvcmU6OmRpc3BhdGNoT25RdWV1ZShGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24p
CiB1aW50NjRfdCBXZWJzaXRlRGF0YVN0b3JlOjpwZXJUaGlyZFBhcnR5T3JpZ2luU3RvcmFnZVF1
b3RhKCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogQ29uc2lkZXIgd2hldGhlciBhbGxvd2luZyB0
byBzZXQgYSBwZXJUaGlyZFBhcnR5T3JpZ2luU3RvcmFnZVF1b3RhIGZyb20gYSBXZWJzaXRlRGF0
YVN0b3JlLgotICAgIHJldHVybiBXZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2VyOjpkZWZhdWx0
VGhpcmRQYXJ0eVF1b3RhRnJvbVBlck9yaWdpblF1b3RhKHBlck9yaWdpblN0b3JhZ2VRdW90YSgp
KTsKKyAgICByZXR1cm4gcGVyT3JpZ2luU3RvcmFnZVF1b3RhKCkgLyAxMDsKIH0KIAogdm9pZCBX
ZWJzaXRlRGF0YVN0b3JlOjpzZXRDYWNoZU1vZGVsU3luY2hyb25vdXNseUZvclRlc3RpbmcoQ2Fj
aGVNb2RlbCBjYWNoZU1vZGVsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCmluZGV4IDZiYzY5MzY5YzMzODMyODY5ZGVh
MWY1ZGFhNTBlNzlmYWE2ZTdiZjkuLjg1ZWUzMWUxMzgzZDk3ZDY0NmM2OThjMmRlZjdkOWMzMzRh
Yjc1YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmgKQEAgLTM1MCw2ICszNTAsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIFdURjo6U3RyaW5nIGRlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3Rvcnko
KTsKICAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdEphdmFTY3JpcHRDb25maWd1cmF0aW9u
RGlyZWN0b3J5KCk7CiAgICAgc3RhdGljIGJvb2wgaHR0cDNFbmFibGVkKCk7CisgICAgc3RhdGlj
IGNvbnN0ZXhwciB1aW50NjRfdCBkZWZhdWx0UGVyT3JpZ2luUXVvdGEoKSB7IHJldHVybiAxMDAw
ICogTUI7IH0KIAogICAgIHZvaWQgcmVzZXRRdW90YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwogICAgIHZvaWQgY2xlYXJTdG9yYWdlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKaW5kZXggYmVhNzU3OWNk
ZmNlMDc4YjY3NTQ4YTFkMDFkYmY3YTQ3ZjZmN2E4OS4uYTk2MjI2ZmIyNDY0NjE3YmE1Y2I1MWEy
NTRiZTkxMjAyZGQ1OTFiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
LmNwcApAQCAtMzMsNiArMzMsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb246OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKElzUGVyc2lz
dGVudCBpc1BlcnNpc3RlbnQsIFdpbGxDb3B5UGF0aHNGcm9tRXhpc3RpbmdDb25maWd1cmF0aW9u
IHdpbGxDb3B5UGF0aHMpCiAgICAgOiBtX2lzUGVyc2lzdGVudChpc1BlcnNpc3RlbnQpCisgICAg
LCBtX3Blck9yaWdpblN0b3JhZ2VRdW90YShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UGVyT3Jp
Z2luUXVvdGEoKSkKIHsKICAgICBpZiAoaXNQZXJzaXN0ZW50ID09IElzUGVyc2lzdGVudDo6WWVz
ICYmIHdpbGxDb3B5UGF0aHMgPT0gV2lsbENvcHlQYXRoc0Zyb21FeGlzdGluZ0NvbmZpZ3VyYXRp
b246Ok5vKSB7CiAgICAgICAgIHNldEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoV2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaAppbmRleCBmMTcxYWQ0Y2U1ZTFiNWNlMTM5NGVjNzgw
OTUyNDEwN2Y4MmMxNzRhLi4zMGEyOTkzMTAyMjdkMmY3MjRmNDI1NzZiNjYxMjU0N2I5NjFjZjI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgKQEAgLTI2LDcgKzI2LDYg
QEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCi0jaW5jbHVkZSA8V2Vi
Q29yZS9TdG9yYWdlUXVvdGFNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC0yMDcsNyArMjA2LDcgQEAgcHJpdmF0ZToK
IAogICAgIFN0cmluZyBtX2NhY2hlU3RvcmFnZURpcmVjdG9yeTsKICAgICBTdHJpbmcgbV9nZW5l
cmFsU3RvcmFnZURpcmVjdG9yeTsKLSAgICB1aW50NjRfdCBtX3Blck9yaWdpblN0b3JhZ2VRdW90
YSB7IFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6OmRlZmF1bHRRdW90YSgpIH07CisgICAg
dWludDY0X3QgbV9wZXJPcmlnaW5TdG9yYWdlUXVvdGE7CiAgICAgU3RyaW5nIG1fbmV0d29ya0Nh
Y2hlRGlyZWN0b3J5OwogICAgIFN0cmluZyBtX2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnk7CiAg
ICAgU3RyaW5nIG1fYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSB7ICJG
aWxlcyJfcyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggYTU2ZjcwMzFkZjEyNDRkMjI1NWZiNWVmZWE1NmE4YzFlNjU5MTljMC4uYjRi
MzIzZjVlMDIyMDgxYWU5ZGEyNzhhZDEzYzE3YjllNDY4MzY1OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNDY4LDYgKzE0NjgsMTEg
QEAKIAkJOTNCMjYxNEQyMjdEMTQ5RTAwQjk3QTc2IC8qIFN0b3JhZ2VNYW5hZ2VyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0IyNjE0OTIyN0QxNDcy
MDBCOTdBNzYgLyogU3RvcmFnZU1hbmFnZXIuaCAqLzsgfTsKIAkJOTNCMjYxNEUyMjdEMTRCMTAw
Qjk3QTc2IC8qIExvY2FsU3RvcmFnZURhdGFiYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0IyNjE0NTIyN0QxNDcwMDBCOTdBNzYgLyogTG9jYWxT
dG9yYWdlRGF0YWJhc2UuaCAqLzsgfTsKIAkJOTNCMjYxNEYyMjdEMTRCMTAwQjk3QTc2IC8qIExv
Y2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTNCMjYxNDYyMjdEMTQ3MTAwQjk3QTc2IC8qIExvY2FsU3RvcmFn
ZURhdGFiYXNlVHJhY2tlci5oICovOyB9OworCQk5M0I2MzFFNTI3QUJBNjI4MDA0NDNBNDQgLyog
SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCNjMxRTQyN0FCQTYyNzAwNDQzQTQ0IC8qIElEQlN0b3Jh
Z2VDb25uZWN0aW9uVG9DbGllbnQuaCAqLzsgfTsKKwkJOTNCNjMxRTgyN0FCQTY1RDAwNDQzQTQ0
IC8qIElEQlN0b3JhZ2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5M0I2MzFFNjI3QUJBNjVDMDA0NDNBNDQgLyogSURCU3RvcmFnZU1hbmFn
ZXIuaCAqLzsgfTsKKwkJOTNCNjMxRUQyN0FCQTZCNDAwNDQzQTQ0IC8qIElEQlN0b3JhZ2VSZWdp
c3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNC
NjMxRUIyN0FCQTZCMzAwNDQzQTQ0IC8qIElEQlN0b3JhZ2VSZWdpc3RyeS5oICovOyB9OworCQk5
M0I2MzFGMTI3QUJBQ0E5MDA0NDNBNDQgLyogUXVvdGFNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0I2MzFFRjI3QUJBQ0E5MDA0NDNBNDQg
LyogUXVvdGFNYW5hZ2VyLmggKi87IH07CisJCTkzQjYzMUYzMjdBQkFEODAwMDQ0M0E0NCAvKiBR
dW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjYzMUYyMjdBQkFEN0YwMDQ0M0E0NCAvKiBRdW90YUlu
Y3JlYXNlUmVxdWVzdElkZW50aWZpZXIuaCAqLzsgfTsKIAkJOTNCREVCMDExNzFERDdBRjAwQkZF
RTFCIC8qIFdLUGFnZUxvYWRUeXBlc1ByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQkRFQjAwMTcxREQ3QUYwMEJGRUUxQiAvKiBXS1BhZ2VM
b2FkVHlwZXNQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJOTNENkI3NzIyNTRCQjUxOTAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9u
U2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
M0Q2Qjc2QzI1NEI4OTU4MDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaCAqLzsg
fTsKIAkJOTNENkI3NzMyNTRCQjhDNzAwNThERDNBIC8qIFdlYlNwZWVjaFJlY29nbml0aW9uQ29u
bmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTNENkI3NjgyNTRCN0JDNjAwNThERDNBIC8qIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlv
bi5oICovOyB9OwpAQCAtNTM1MCw2ICs1MzU1LDE1IEBACiAJCTkzQjI2MTQ5MjI3RDE0NzIwMEI5
N0E3NiAvKiBTdG9yYWdlTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTdG9yYWdlTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0IyNjE0
QTIyN0QxNDcyMDBCOTdBNzYgLyogU3RvcmFnZU1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU3RvcmFnZU1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5M0IyNjE0QzIyN0QxNDcyMDBCOTdBNzYgLyogTG9jYWxTdG9yYWdlRGF0
YWJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTG9jYWxTdG9y
YWdlRGF0YWJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0I2MzFFMzI3
QUJBNUY3MDA0NDNBNDQgLyogSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNCNjMxRTQyN0FCQTYyNzAwNDQzQTQ0IC8qIElEQlN0b3Jh
Z2VDb25uZWN0aW9uVG9DbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk5M0I2MzFFNjI3QUJBNjVDMDA0NDNBNDQgLyogSURCU3RvcmFnZU1hbmFnZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSURCU3RvcmFnZU1hbmFnZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNCNjMxRTcyN0FCQTY1QzAwNDQzQTQ0IC8qIElEQlN0
b3JhZ2VNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElE
QlN0b3JhZ2VNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNCNjMx
RUEyN0FCQTZCMjAwNDQzQTQ0IC8qIElEQlN0b3JhZ2VSZWdpc3RyeS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJREJTdG9yYWdlUmVnaXN0cnkuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk5M0I2MzFFQjI3QUJBNkIzMDA0NDNBNDQgLyogSURCU3Rv
cmFnZVJlZ2lzdHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElEQlN0b3Jh
Z2VSZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0I2MzFFRTI3QUJB
Q0E4MDA0NDNBNDQgLyogUXVvdGFNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFF1b3RhTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTkzQjYzMUVGMjdBQkFDQTkwMDQ0M0E0NCAvKiBRdW90YU1hbmFnZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUXVvdGFNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTkzQjYzMUYyMjdBQkFEN0YwMDQ0M0E0NCAvKiBRdW90YUluY3JlYXNlUmVx
dWVzdElkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUXVvdGFJ
bmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTkzQkEwNERBMjE1MUFERjMwMDdGNDU1RiAvKiBXZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2Fn
ZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3Nh
Z2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0JBMDREQjIxNTFBREYzMDA3
RjQ1NUYgLyogV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0JBMDREQzIxNTFBREYzMDA3RjQ1NUYgLyogV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc1NTUsNiArNzU2OSw3IEBACiAJCTFBQkY0Mzc4MUEz
NjgwMzUwMDNGQjBFNiAvKiBXZWJzaXRlRGF0YSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwog
CQkJY2hpbGRyZW4gPSAoCisJCQkJOTNCNjMxRjIyN0FCQUQ3RjAwNDQzQTQ0IC8qIFF1b3RhSW5j
cmVhc2VSZXF1ZXN0SWRlbnRpZmllci5oICovLAogCQkJCTFBNDgzMkQ0MUE5Q0RGOTYwMDhCNERG
RSAvKiBXZWJzaXRlRGF0YS5jcHAgKi8sCiAJCQkJMUE0ODMyRDUxQTlDREY5NjAwOEI0REZFIC8q
IFdlYnNpdGVEYXRhLmggKi8sCiAJCQkJMUEyOEI4Q0IxQzgwRUQ1OTAwNkZENzQzIC8qIFdlYnNp
dGVEYXRhRmV0Y2hPcHRpb24uaCAqLywKQEAgLTEwNDAxLDYgKzEwNDE2LDEyIEBACiAJCQkJOTM1
QjU3OTgyNkY1MTI3MDAwOEI0OEFDIC8qIEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnku
aCAqLywKIAkJCQk5MzFBMDc1MTI2RjA2MzEwMDA0NDc0Q0QgLyogRmlsZVN5c3RlbVN0b3JhZ2VN
YW5hZ2VyLmNwcCAqLywKIAkJCQk5MzFBMDc1MDI2RjA2MzEwMDA0NDc0Q0QgLyogRmlsZVN5c3Rl
bVN0b3JhZ2VNYW5hZ2VyLmggKi8sCisJCQkJOTNCNjMxRTMyN0FCQTVGNzAwNDQzQTQ0IC8qIElE
QlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQuY3BwICovLAorCQkJCTkzQjYzMUU0MjdBQkE2Mjcw
MDQ0M0E0NCAvKiBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50LmggKi8sCisJCQkJOTNCNjMx
RTcyN0FCQTY1QzAwNDQzQTQ0IC8qIElEQlN0b3JhZ2VNYW5hZ2VyLmNwcCAqLywKKwkJCQk5M0I2
MzFFNjI3QUJBNjVDMDA0NDNBNDQgLyogSURCU3RvcmFnZU1hbmFnZXIuaCAqLywKKwkJCQk5M0I2
MzFFQTI3QUJBNkIyMDA0NDNBNDQgLyogSURCU3RvcmFnZVJlZ2lzdHJ5LmNwcCAqLywKKwkJCQk5
M0I2MzFFQjI3QUJBNkIzMDA0NDNBNDQgLyogSURCU3RvcmFnZVJlZ2lzdHJ5LmggKi8sCiAJCQkJ
OTNFNzk5QzkyNzYwNDk3QTAwNzQwMDhBIC8qIExvY2FsU3RvcmFnZU1hbmFnZXIuY3BwICovLAog
CQkJCTkzRTc5OUNCMjc2MDQ5N0EwMDc0MDA4QSAvKiBMb2NhbFN0b3JhZ2VNYW5hZ2VyLmggKi8s
CiAJCQkJOTNFNzk5RDgyNzYxMjEwODAwNzQwMDhBIC8qIE1lbW9yeVN0b3JhZ2VBcmVhLmNwcCAq
LywKQEAgLTEwNDEwLDYgKzEwNDMxLDggQEAKIAkJCQk5MzA4NURDNzI2RTFDNkVFMDAwRUM2QTcg
LyogTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLm1lc3NhZ2VzLmluICovLAogCQkJCTkzMDg1REM1MjZF
MUM2Q0YwMDBFQzZBNyAvKiBPcmlnaW5TdG9yYWdlTWFuYWdlci5jcHAgKi8sCiAJCQkJOTMwODVE
QzYyNkUxQzZDRjAwMEVDNkE3IC8qIE9yaWdpblN0b3JhZ2VNYW5hZ2VyLmggKi8sCisJCQkJOTNC
NjMxRUUyN0FCQUNBODAwNDQzQTQ0IC8qIFF1b3RhTWFuYWdlci5jcHAgKi8sCisJCQkJOTNCNjMx
RUYyN0FCQUNBOTAwNDQzQTQ0IC8qIFF1b3RhTWFuYWdlci5oICovLAogCQkJCTkzRTc5OUNDMjc2
MDQ5N0IwMDc0MDA4QSAvKiBTZXNzaW9uU3RvcmFnZU1hbmFnZXIuY3BwICovLAogCQkJCTkzRTc5
OUNBMjc2MDQ5N0EwMDc0MDA4QSAvKiBTZXNzaW9uU3RvcmFnZU1hbmFnZXIuaCAqLywKIAkJCQk5
M0U3OTlEMzI3NjEyMTA3MDA3NDAwOEEgLyogU1FMaXRlU3RvcmFnZUFyZWEuY3BwICovLApAQCAt
MTMwMTgsNiArMTMwNDEsOSBAQAogCQkJCTMxMkNDOUYyMjE1QjA2RjEwMERFNDBDQSAvKiBIaWdo
UGVyZm9ybWFuY2VHUFVNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzlBMkYzMjFFMjA2
NzQ1MDAzOTA1N0UgLyogSGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTUxQzBDOTc0MURERDc2MDAwMDMyQ0FEMyAvKiBJY29uTG9hZGluZ0Rl
bGVnYXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQk5M0I2MzFFNTI3QUJBNjI4MDA0NDNBNDQgLyog
SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTNCNjMx
RTgyN0FCQTY1RDAwNDQzQTQ0IC8qIElEQlN0b3JhZ2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywK
KwkJCQk5M0I2MzFFRDI3QUJBNkI0MDA0NDNBNDQgLyogSURCU3RvcmFnZVJlZ2lzdHJ5LmggaW4g
SGVhZGVycyAqLywKIAkJCQk1MUUzNTFDQjE4MEYyQ0NDMDBFNTNCRTkgLyogSURCVXRpbGl0aWVz
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0NGNkIyNTEyQzkzRTdBMDA4RjlDMzUgLyogSW1hZ2VP
cHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTFFQzY5RTE4NzIwOTIxMDBCOTUxRjAgLyog
SW1wb3J0YW5jZUFzc2VydGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMzIyOSw2ICsxMzI1NSw4
IEBACiAJCQkJQTFFNjg4NzAxRjZFMkJBQjAwNzAwNkE2IC8qIFF1YXJhbnRpbmVTUEkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFBMEMyMjdFMjQ1MTEzMEEwMEVENjE0RCAvKiBRdWlja0xvb2tUaHVt
Ym5haWxpbmdTb2Z0TGluay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFRTU3MjUyNDA5RjE0MjAw
MjAwNUQ2IC8qIFF1aWNrTG9va1RodW1ibmFpbExvYWRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
OTNCNjMxRjMyN0FCQUQ4MDAwNDQzQTQ0IC8qIFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmll
ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTNCNjMxRjEyN0FCQUNBOTAwNDQzQTQ0IC8qIFF1b3Rh
TWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNCNkFFNDQyNjA5Nzk5QzAwQjZFRDVBIC8q
IFJlYXNvblNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdGRDMxODIyMkIzNTE1RTAwOEQwRThC
IC8qIFJlZGlyZWN0U09BdXRob3JpemF0aW9uU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OUIxMjI5RDIyM0ZGMkJDQzAwOENBNzUxIC8qIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlm
aWVyLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9u
VG9TZXJ2ZXIuY3BwCmluZGV4IDA0YzI0MTBmMzVhZGNjMDQ2YzU0MDZhZjBjY2UyZmQwZTg0MWFk
YjAuLmQ3OTAxNjliZTBmNThlMzAxZWRiZTQ0YzA0NGM3ODM5MWVmNDc0NTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5l
Y3Rpb25Ub1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0RhdGFiYXNl
cy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcApAQCAtMjksOSArMjksOSBA
QAogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uLmgiCisjaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNs
dWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJJREJSZXN1bHQuaCIK
LSNpbmNsdWRlICJXZWJJREJTZXJ2ZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3Mu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvSURCQ3Vyc29ySW5mby5oPgpAQCAtODIsMTMyICs4MiwxMzIgQEAgSURCQ2xpZW50
OjpJREJDb25uZWN0aW9uVG9TZXJ2ZXImIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Y29yZUNv
bm5lY3Rpb25Ub1NlcnYKIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRlbGV0ZURh
dGFiYXNlKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkKIHsKLSAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OkRlbGV0ZURhdGFiYXNlKHJlcXVlc3REYXRhKSk7CisgICAg
c2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpEZWxldGVEYXRhYmFzZShyZXF1
ZXN0RGF0YSkpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6b3BlbkRhdGFi
YXNlKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkKIHsKLSAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJJREJTZXJ2ZXI6Ok9wZW5EYXRhYmFzZShyZXF1ZXN0RGF0YSkpOworICAgIHNlbmQo
TWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6T3BlbkRhdGFiYXNlKHJlcXVlc3REYXRh
KSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjphYm9ydFRyYW5zYWN0aW9u
KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKQogewot
ICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6QWJvcnRUcmFuc2FjdGlvbih0cmFuc2Fj
dGlvbklkZW50aWZpZXIpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFn
ZXI6OkFib3J0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZGVudGlmaWVyKSk7CiB9CiAKIHZvaWQg
V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpjb21taXRUcmFuc2FjdGlvbihjb25zdCBJREJSZXNv
dXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgcGVuZGluZ1Jl
cXVlc3RDb3VudCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OkNvbW1pdFRy
YW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgcGVuZGluZ1JlcXVlc3RDb3VudCkpOwor
ICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Q29tbWl0VHJhbnNhY3Rp
b24odHJhbnNhY3Rpb25JZGVudGlmaWVyLCBwZW5kaW5nUmVxdWVzdENvdW50KSk7CiB9CiAKIHZv
aWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpkaWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFu
Z2VUcmFuc2FjdGlvbih1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25z
dCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcikKIHsKLSAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OkRpZEZpbmlzaEhhbmRsaW5nVmVyc2lvbkNoYW5n
ZVRyYW5zYWN0aW9uKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHRyYW5zYWN0aW9uSWRl
bnRpZmllcikpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6RGlk
RmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24oZGF0YWJhc2VDb25uZWN0aW9u
SWRlbnRpZmllciwgdHJhbnNhY3Rpb25JZGVudGlmaWVyKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29u
bmVjdGlvblRvU2VydmVyOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0YSYg
cmVxdWVzdERhdGEsIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYgaW5mbykKIHsKLSAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OkNyZWF0ZU9iamVjdFN0b3JlKHJlcXVlc3REYXRhLCBp
bmZvKSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpDcmVhdGVP
YmplY3RTdG9yZShyZXF1ZXN0RGF0YSwgaW5mbykpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rp
b25Ub1NlcnZlcjo6ZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVl
c3REYXRhLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSkKIHsKLSAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJJREJTZXJ2ZXI6OkRlbGV0ZU9iamVjdFN0b3JlKHJlcXVlc3REYXRhLCBvYmplY3RT
dG9yZU5hbWUpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkRl
bGV0ZU9iamVjdFN0b3JlKHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZU5hbWUpKTsKIH0KIAogdm9p
ZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OnJlbmFtZU9iamVjdFN0b3JlKGNvbnN0IElEQlJl
cXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIG5ld05hbWUpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVy
OjpSZW5hbWVPYmplY3RTdG9yZShyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBu
ZXdOYW1lKSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpSZW5h
bWVPYmplY3RTdG9yZShyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBuZXdOYW1l
KSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpjbGVhck9iamVjdFN0b3Jl
KGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgdWludDY0X3Qgb2JqZWN0U3RvcmVJ
ZGVudGlmaWVyKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6Q2xlYXJPYmpl
Y3RTdG9yZShyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyKSk7CisgICAgc2VuZChN
ZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpDbGVhck9iamVjdFN0b3JlKHJlcXVlc3RE
YXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIpKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9u
VG9TZXJ2ZXI6OmNyZWF0ZUluZGV4KGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwg
Y29uc3QgSURCSW5kZXhJbmZvJiBpbmZvKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNl
cnZlcjo6Q3JlYXRlSW5kZXgocmVxdWVzdERhdGEsIGluZm8pKTsKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkNyZWF0ZUluZGV4KHJlcXVlc3REYXRhLCBpbmZvKSk7
CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpkZWxldGVJbmRleChjb25zdCBJ
REJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBpbmRleE5hbWUpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURC
U2VydmVyOjpEZWxldGVJbmRleChyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBp
bmRleE5hbWUpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkRl
bGV0ZUluZGV4KHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4TmFtZSkp
OwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6cmVuYW1lSW5kZXgoY29uc3Qg
SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZp
ZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lKQogewot
ICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6UmVuYW1lSW5kZXgocmVxdWVzdERhdGEs
IG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhJZGVudGlmaWVyLCBuZXdOYW1lKSk7CisgICAg
c2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpSZW5hbWVJbmRleChyZXF1ZXN0
RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleElkZW50aWZpZXIsIG5ld05hbWUpKTsK
IH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OnB1dE9yQWRkKGNvbnN0IElEQlJl
cXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5RGF0YSYga2V5RGF0YSwgY29uc3Qg
SURCVmFsdWUmIHZhbHVlLCBjb25zdCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9k
ZSBtb2RlKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6UHV0T3JBZGQocmVx
dWVzdERhdGEsIGtleURhdGEsIHZhbHVlLCBtb2RlKSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0
d29ya1N0b3JhZ2VNYW5hZ2VyOjpQdXRPckFkZChyZXF1ZXN0RGF0YSwga2V5RGF0YSwgdmFsdWUs
IG1vZGUpKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmdldFJlY29yZChj
b25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkdldFJlY29yZERhdGEm
IGdldFJlY29yZERhdGEpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyOjpHZXRS
ZWNvcmQocmVxdWVzdERhdGEsIGdldFJlY29yZERhdGEpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkdldFJlY29yZChyZXF1ZXN0RGF0YSwgZ2V0UmVjb3JkRGF0
YSkpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Z2V0QWxsUmVjb3Jkcyhj
b25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkdldEFsbFJlY29yZHNE
YXRhJiBnZXRBbGxSZWNvcmRzRGF0YSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2
ZXI6OkdldEFsbFJlY29yZHMocmVxdWVzdERhdGEsIGdldEFsbFJlY29yZHNEYXRhKSk7CisgICAg
c2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpHZXRBbGxSZWNvcmRzKHJlcXVl
c3REYXRhLCBnZXRBbGxSZWNvcmRzRGF0YSkpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25U
b1NlcnZlcjo6Z2V0Q291bnQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25z
dCBJREJLZXlSYW5nZURhdGEmIHJhbmdlKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNl
cnZlcjo6R2V0Q291bnQocmVxdWVzdERhdGEsIHJhbmdlKSk7CisgICAgc2VuZChNZXNzYWdlczo6
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpHZXRDb3VudChyZXF1ZXN0RGF0YSwgcmFuZ2UpKTsKIH0K
IAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRlbGV0ZVJlY29yZChjb25zdCBJREJS
ZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQktleVJhbmdlRGF0YSYgcmFuZ2UpCiB7
Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyOjpEZWxldGVSZWNvcmQocmVxdWVzdERh
dGEsIHJhbmdlKSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpE
ZWxldGVSZWNvcmQocmVxdWVzdERhdGEsIHJhbmdlKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVj
dGlvblRvU2VydmVyOjpvcGVuQ3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0
YSwgY29uc3QgSURCQ3Vyc29ySW5mbyYgaW5mbykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJ
REJTZXJ2ZXI6Ok9wZW5DdXJzb3IocmVxdWVzdERhdGEsIGluZm8pKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Ok9wZW5DdXJzb3IocmVxdWVzdERhdGEsIGluZm8p
KTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6Oml0ZXJhdGVDdXJzb3IoY29u
c3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJJdGVyYXRlQ3Vyc29yRGF0
YSYgZGF0YSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6Okl0ZXJhdGVDdXJz
b3IocmVxdWVzdERhdGEsIGRhdGEpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFn
ZU1hbmFnZXI6Okl0ZXJhdGVDdXJzb3IocmVxdWVzdERhdGEsIGRhdGEpKTsKIH0KIAogdm9pZCBX
ZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmVzdGFibGlzaFRyYW5zYWN0aW9uKHVpbnQ2NF90IGRh
dGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYgaW5m
bykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OkVzdGFibGlzaFRyYW5zYWN0
aW9uKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGluZm8pKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkVzdGFibGlzaFRyYW5zYWN0aW9uKGRhdGFiYXNl
Q29ubmVjdGlvbklkZW50aWZpZXIsIGluZm8pKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9u
VG9TZXJ2ZXI6OmRhdGFiYXNlQ29ubmVjdGlvblBlbmRpbmdDbG9zZSh1aW50NjRfdCBkYXRhYmFz
ZUNvbm5lY3Rpb25JZGVudGlmaWVyKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZl
cjo6RGF0YWJhc2VDb25uZWN0aW9uUGVuZGluZ0Nsb3NlKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50
aWZpZXIpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkRhdGFi
YXNlQ29ubmVjdGlvblBlbmRpbmdDbG9zZShkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKSk7
CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpkYXRhYmFzZUNvbm5lY3Rpb25D
bG9zZWQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcikKIHsKLSAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OkRhdGFiYXNlQ29ubmVjdGlvbkNsb3NlZChkYXRhYmFz
ZUNvbm5lY3Rpb25JZGVudGlmaWVyKSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyOjpEYXRhYmFzZUNvbm5lY3Rpb25DbG9zZWQoZGF0YWJhc2VDb25uZWN0aW9uSWRl
bnRpZmllcikpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6YWJvcnRPcGVu
QW5kVXBncmFkZU5lZWRlZCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBj
b25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcikKIHsKLSAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OkFib3J0T3BlbkFuZFVwZ3JhZGVOZWVkZWQo
ZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgdHJhbnNhY3Rpb25JZGVudGlmaWVyKSk7Cisg
ICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpBYm9ydE9wZW5BbmRVcGdy
YWRlTmVlZGVkKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHRyYW5zYWN0aW9uSWRlbnRp
ZmllcikpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGlkRmlyZVZlcnNp
b25DaGFuZ2VFdmVudCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25z
dCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBJbmRleGVk
REI6OkNvbm5lY3Rpb25DbG9zZWRPbkJlaGFsZk9mU2VydmVyIGNvbm5lY3Rpb25DbG9zZWQpCiB7
Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyOjpEaWRGaXJlVmVyc2lvbkNoYW5nZUV2
ZW50KGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHJlcXVlc3RJZGVudGlmaWVyLCBjb25u
ZWN0aW9uQ2xvc2VkKSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2Vy
OjpEaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIs
IHJlcXVlc3RJZGVudGlmaWVyLCBjb25uZWN0aW9uQ2xvc2VkKSk7CiB9CiAKIHZvaWQgV2ViSURC
Q29ubmVjdGlvblRvU2VydmVyOjpvcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKGNvbnN0IElEQlJlcXVl
c3REYXRhJiByZXF1ZXN0RGF0YSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6
Ok9wZW5EQlJlcXVlc3RDYW5jZWxsZWQocmVxdWVzdERhdGEpKTsKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Ok9wZW5EQlJlcXVlc3RDYW5jZWxsZWQocmVxdWVzdERh
dGEpKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmdldEFsbERhdGFiYXNl
TmFtZXNBbmRWZXJzaW9ucyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVu
dGlmaWVyLCBjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbikKIHsKLSAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJJREJTZXJ2ZXI6OkdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhyZXF1ZXN0SWRl
bnRpZmllciwgb3JpZ2luKSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5h
Z2VyOjpHZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMocmVxdWVzdElkZW50aWZpZXIsIG9y
aWdpbikpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGlkRGVsZXRlRGF0
YWJhc2UoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9TdG9yYWdlL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L1N0b3JhZ2UvSW5Qcm9jZXNzSURCU2VydmVyLmNwcAppbmRleCBlYTJlMmE3OGY4OGZm
ZGQxMDFhM2ExMzdmMGQ1YTEwYTU2ZTEwZmIyLi4wY2FkYjUwNDJiYTE2MTA3N2Y5NDQ5YTk3M2Rj
Zjk4MzJkMzcwMmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvSW5Q
cm9jZXNzSURCU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvSW5Q
cm9jZXNzSURCU2VydmVyLmNwcApAQCAtNDIsNiArNDIsOCBAQAogCiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIAorc3RhdGljIGNvbnN0ZXhwciB1aW50NjRfdCBkZWZhdWx0UGVyT3JpZ2luUXVv
dGEgPSAgMTAwMCAqIE1COworCiBSZWY8SW5Qcm9jZXNzSURCU2VydmVyPiBJblByb2Nlc3NJREJT
ZXJ2ZXI6OmNyZWF0ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7CiAgICAgQVNTRVJUKHNl
c3Npb25JRC5pc0VwaGVtZXJhbCgpKTsKQEAgLTczLDcgKzc1LDcgQEAgSW5Qcm9jZXNzSURCU2Vy
dmVyOjp+SW5Qcm9jZXNzSURCU2VydmVyKCkKIFN0b3JhZ2VRdW90YU1hbmFnZXIqIEluUHJvY2Vz
c0lEQlNlcnZlcjo6cXVvdGFNYW5hZ2VyKGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2luKQogewog
ICAgIHJldHVybiBtX3F1b3RhTWFuYWdlcnMuZW5zdXJlKG9yaWdpbiwgW10gewotICAgICAgICBy
ZXR1cm4gU3RvcmFnZVF1b3RhTWFuYWdlcjo6Y3JlYXRlKFN0b3JhZ2VRdW90YU1hbmFnZXI6OmRl
ZmF1bHRRdW90YSgpLCBbXSB7CisgICAgICAgIHJldHVybiBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpj
cmVhdGUoZGVmYXVsdFBlck9yaWdpblF1b3RhLCBbXSB7CiAgICAgICAgICAgICByZXR1cm4gMDsK
ICAgICAgICAgfSwgW10odWludDY0X3QgcXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRTcGFjZSwgdWlu
dDY0X3Qgc3BhY2VJbmNyZWFzZSwgYXV0byBjYWxsYmFjaykgewogICAgICAgICAgICAgY2FsbGJh
Y2socXVvdGEgKyBjdXJyZW50U3BhY2UgKyBzcGFjZUluY3JlYXNlKTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAwNjQzZTkxMTIzOTRlN2UwZTlh
YzFkZGRhYjUwMDZhNTI2OWIyOThkLi4wYjg3MjU4ODE4MmRjZDg1NDY0ZDMwYTQxN2VjYjA2YTU2
ZDVjODIyIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTkgQEAKKzIwMjItMDItMDMgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBs
ZS5jb20+CisKKyAgICAgICAgTWFuYWdlIEluZGV4ZWREQiBzdG9yYWdlIGJ5IG9yaWdpbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0OTI1CisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS84NzU1NTAxND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgZXhpc3RpbmcgdGVzdHMgZm9yIGJlaGF2aW9y
IGNoYW5nZS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5k
ZXhlZERCRmlsZU5hbWUubW06CisgICAgICAgIChydW5UZXN0KToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlBlcnNpc3RlbmNlLm1tOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU3RvcmVCbG9iVGhlbkRlbGV0ZS5t
bToKKyAgICAgICAgKFRFU1QpOgorCiAyMDIyLTAyLTAzICBKb25hdGhhbiBCZWRhcmQgIDxqYmVk
YXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBbZ2l0LXdlYmtpdF0gQ29uZmlndXJlIGRlZmF1bHQg
YnJhbmNoIG1hbmFnZW1lbnQgCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0luZGV4ZWREQkZpbGVOYW1lLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJGaWxlTmFtZS5tbQppbmRleCBhNmIwMTI5YmMxMDU5
YzRmOWMxMThkMWZkN2VmZDIxMjNlYWMyYzdhLi40MTAyMjI0ZTQ1Mjc0ZDM2Mzc5ZTRiYjAwMmEw
ZmVlODk4MzJmNWJjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0luZGV4ZWREQkZpbGVOYW1lLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCRmlsZU5hbWUubW0KQEAgLTcxLDIwICs3MSwyMyBAQCBz
dGF0aWMgdm9pZCBydW5UZXN0KCkKICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IHN0cmluZzIgPSAo
TlNTdHJpbmcgKilbbGFzdFNjcmlwdE1lc3NhZ2UgYm9keV07CiAgICAgRVhQRUNUX1dLX1NUUkVR
KEAiU3VjY2VzcyIsIHN0cmluZzIuZ2V0KCkpOwogCi0gICAgLy8gRm9yIGRhdGFiYXNlIHRoYXQg
aXMgbm90IG9wZW5lZCBhZnRlciB1cGdyYWRlLCBpdHMgZmlsZSBzaG91bGQgYmUgaW4gdjAuCisg
ICAgLy8gQWxsIGRhdGFiYXNlcyBvZiBhbiBvcmlnaW4gYXJlIG1pZ3JhdGVkIHRvIG5ldyB2ZXJz
aW9uIGRpcmVjdG9yeSB3aGVuIHRoZSBvcmlnaW4gaXMgYWNjZXNzZWQuCiAgICAgYXV0byBkZWZh
dWx0RmlsZU1hbmFnZXIgPSBbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl07CiAgICAgTlNT
dHJpbmcgKmV4aXN0aW5nRGF0YWJhc2VOYW1lID0gQCJJbmRleGVkREJUZXN0IjsKICAgICBOU1N0
cmluZyAqY3JlYXRlZERhdGFiYXNlTmFtZSA9IEAiSW5kZXhlZERCT3RoZXIiOwogICAgIE5TU3Ry
aW5nICp1bnVzZWREYXRhYmFzZU5hbWUgPSBAIkluZGV4ZWREQlVudXNlZCI7CiAgICAgTlNTdHJp
bmcgKmV4aXN0aW5nRGF0YmFzZUhhc2ggPSBXZWJDb3JlOjpTUUxpdGVGaWxlU3lzdGVtOjpjb21w
dXRlSGFzaEZvckZpbGVOYW1lKGV4aXN0aW5nRGF0YWJhc2VOYW1lKTsKICAgICBOU1N0cmluZyAq
Y3JlYXRlZERhdGFiYXNlSGFzaCA9IFdlYkNvcmU6OlNRTGl0ZUZpbGVTeXN0ZW06OmNvbXB1dGVI
YXNoRm9yRmlsZU5hbWUoY3JlYXRlZERhdGFiYXNlTmFtZSk7CisgICAgTlNTdHJpbmcgKnVudXNl
ZERhdGFiYXNlSGFzaCA9IFdlYkNvcmU6OlNRTGl0ZUZpbGVTeXN0ZW06OmNvbXB1dGVIYXNoRm9y
RmlsZU5hbWUoY3JlYXRlZERhdGFiYXNlTmFtZSk7CiAgICAgTlNVUkwgKmlkYlJvb3RVUkwgPSBb
W1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSBfaW5kZXhlZERCRGF0YWJhc2VE
aXJlY3RvcnldOwogICAgIE5TVVJMICpvbGRWZXJzaW9uRGlyZWN0b3J5VVJMID0gW2lkYlJvb3RV
UkwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAidjAiXTsKICAgICBOU1VSTCAqbmV3VmVy
c2lvbkRpcmVjdG9yeVVSTCA9IFtpZGJSb290VVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVu
dDpAInYxIl07CiAgICAgTlNVUkwgKm9sZFZlcnNpb25PcmlnaW5EaXJlY3RvcnlVUkwgPSBbb2xk
VmVyc2lvbkRpcmVjdG9yeVVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6IEAiZmlsZV9f
MCJdOwogICAgIE5TVVJMICpuZXdWZXJzaW9uT3JpZ2luRGlyZWN0b3J5VVJMID0gW25ld1ZlcnNp
b25EaXJlY3RvcnlVUkwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OiBAImZpbGVfXzAiXTsK
ICAgICBOU1VSTCAqb2xkVmVyc2lvblVudXNlZERhdGFiYXNlRGlyZWN0b3J5VVJMID0gW29sZFZl
cnNpb25PcmlnaW5EaXJlY3RvcnlVUkwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OnVudXNl
ZERhdGFiYXNlTmFtZV07Ci0gICAgRVhQRUNUX1RSVUUoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRN
YW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOm9sZFZlcnNpb25VbnVzZWREYXRhYmFzZURpcmVjdG9y
eVVSTC5wYXRoXSk7CisgICAgTlNVUkwgKm5ld1ZlcnNpb25VbnVzZWREYXRhYmFzZURpcmVjdG9y
eVVSTCA9IFtuZXdWZXJzaW9uT3JpZ2luRGlyZWN0b3J5VVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENv
bXBvbmVudDp1bnVzZWREYXRhYmFzZUhhc2hdOworICAgIEVYUEVDVF9GQUxTRShbW05TRmlsZU1h
bmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6b2xkVmVyc2lvblVudXNlZERh
dGFiYXNlRGlyZWN0b3J5VVJMLnBhdGhdKTsKKyAgICBFWFBFQ1RfVFJVRShbW05TRmlsZU1hbmFn
ZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6bmV3VmVyc2lvblVudXNlZERhdGFi
YXNlRGlyZWN0b3J5VVJMLnBhdGhdKTsKICAgICAKICAgICAvLyBGb3IgZGF0YWJhc2UgdGhhdCBp
cyBvcGVuZWQgYWZ0ZXIgdXBncmFkZSwgaXRzIGZpbGUgc2hvdWxkIG9ubHkgYmUgaW4gdjEuCiAg
ICAgTlNVUkwgKm9sZFZlcnNpb25FeGlzdGluZ0RhdGFiYXNlRGlyZWN0b3J5VVJMID0gW29sZFZl
cnNpb25PcmlnaW5EaXJlY3RvcnlVUkwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OiBleGlz
dGluZ0RhdGFiYXNlTmFtZV07CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0luZGV4ZWREQlBlcnNpc3RlbmNlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJQZXJzaXN0ZW5jZS5tbQppbmRleCAyNzE4YzRh
YjM2OWE4MTgyZGEwZTExOGM0NTE2NjZhZTlkMWUyYzc0Li40ZjBhOGVjOTQ0NTQ4Y2E2Yzc4NzAx
NWM2YjZkOTUwODU4ODM4OGIzIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0luZGV4ZWREQlBlcnNpc3RlbmNlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCUGVyc2lzdGVuY2UubW0KQEAgLTMwNSwx
MCArMzA1LDE0IEBAIFRFU1QoSW5kZXhlZERCLCBJbmRleGVkREJUaGlyZFBhcnR5RGF0YVJlbW92
YWwpCiAgICAgRVhQRUNUX1dLX1NUUkVRKCBAImRhdGFiYXNlIGlzIGNyZWF0ZWQgLSBwdXQgaXRl
bSBzdWNjZXNzIiwgKE5TU3RyaW5nICopW2xhc3RTY3JpcHRNZXNzYWdlIGJvZHldKTsKIAogICAg
IHJlYWR5VG9Db250aW51ZSA9IGZhbHNlOwotICAgIFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1
bHREYXRhU3RvcmVdIGZldGNoRGF0YVJlY29yZHNPZlR5cGVzOndlYnNpdGVEYXRhVHlwZXMuZ2V0
KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5PFdLV2Vic2l0ZURhdGFSZWNvcmQgKj4gKmRh
dGFSZWNvcmRzKSB7Ci0gICAgICAgIEVYUEVDVF9FUSgxdSwgZGF0YVJlY29yZHMuY291bnQpOwot
ICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoImlmcmFtZSIsIFtbZGF0YVJlY29yZHMgZmlyc3RPYmpl
Y3RdIGRpc3BsYXlOYW1lXSk7Ci0gICAgICAgIFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHRE
YXRhU3RvcmVdIHJlbW92ZURhdGFPZlR5cGVzOndlYnNpdGVEYXRhVHlwZXMuZ2V0KCkgZm9yRGF0
YVJlY29yZHM6ZGF0YVJlY29yZHMgY29tcGxldGlvbkhhbmRsZXI6XigpIHsKKyAgICBbW1dLV2Vi
c2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSBmZXRjaERhdGFSZWNvcmRzT2ZUeXBlczp3
ZWJzaXRlRGF0YVR5cGVzLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxXS1dlYnNp
dGVEYXRhUmVjb3JkICo+ICpyZWNvcmRzKSB7CisgICAgICAgIEVYUEVDVF9FUSgydSwgcmVjb3Jk
cy5jb3VudCk7CisgICAgICAgIE5TU29ydERlc2NyaXB0b3IgKnJlY29yZERlc2NyaXB0b3IgPSBb
TlNTb3J0RGVzY3JpcHRvciBzb3J0RGVzY3JpcHRvcldpdGhLZXk6QCJkaXNwbGF5TmFtZSIgYXNj
ZW5kaW5nOllFU107CisgICAgICAgIE5TQXJyYXkgKnNvcnREZXNjcmlwdG9ycyA9IEBbcmVjb3Jk
RGVzY3JpcHRvcl07CisgICAgICAgIE5TQXJyYXkgKnNvcnRlZFJlY29yZHMgPSBbcmVjb3JkcyBz
b3J0ZWRBcnJheVVzaW5nRGVzY3JpcHRvcnM6c29ydERlc2NyaXB0b3JzXTsKKyAgICAgICAgRVhQ
RUNUX1dLX1NUUkVRKCJpZnJhbWUiLCBbW3NvcnRlZFJlY29yZHMgb2JqZWN0QXRJbmRleDowXSBk
aXNwbGF5TmFtZV0pOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoIndlYmtpdC5vcmciLCBbW3Nv
cnRlZFJlY29yZHMgb2JqZWN0QXRJbmRleDoxXSBkaXNwbGF5TmFtZV0pOworICAgICAgICBbW1dL
V2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSByZW1vdmVEYXRhT2ZUeXBlczp3ZWJz
aXRlRGF0YVR5cGVzLmdldCgpIGZvckRhdGFSZWNvcmRzOnJlY29yZHMgY29tcGxldGlvbkhhbmRs
ZXI6XigpIHsKICAgICAgICAgICAgIHJlYWR5VG9Db250aW51ZSA9IHRydWU7CiAgICAgICAgIH1d
OwogICAgIH1dOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9TdG9yZUJsb2JUaGVuRGVsZXRlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9TdG9yZUJsb2JUaGVuRGVsZXRlLm1tCmluZGV4IGFhYmZmZjg3YmM2NGIzOTUy
YjI0MTQ1MjE1ZWUwMzgyODZiN2M4OTEuLjhlODVhNDBhNWU4M2JhMDM0MzIxZTdlNzk2OWQ4MzU1
ZTMyYzI0NjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvU3RvcmVCbG9iVGhlbkRlbGV0ZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1N0b3JlQmxvYlRoZW5EZWxldGUubW0KQEAgLTg3LDcgKzg3LDcgQEAgVEVT
VChJbmRleGVkREIsIFN0b3JlQmxvYlRoZW5SZW1vdmVEYXRhKQogICAgIFtbTlNGaWxlTWFuYWdl
ciBkZWZhdWx0TWFuYWdlcl0gY29weUl0ZW1BdFBhdGg6ZGF0YWJhc2VGaWxlUGF0aCB0b1BhdGg6
ZmFrZVNobVBhdGggZXJyb3I6bmlsXTsKICAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFn
ZXJdIGNvcHlJdGVtQXRQYXRoOmRhdGFiYXNlRmlsZVBhdGggdG9QYXRoOmZha2VXYWxQYXRoIGVy
cm9yOm5pbF07CiAKLSAgICAvLyBNYWtlIHNvbWUgb3RoZXIgLmJsb2IgZmlsZXMgaW4gdGhlIGRh
dGFiYXNlIGRpcmVjdG9yeSB0byBsYXRlciB2YWxpZGF0ZSB0aGF0IG9ubHkgYXBwcm9wcmlhdGUg
ZmlsZXMgYXJlIGRlbGV0ZWQuCisgICAgLy8gTWFrZSBzb21lIG90aGVyIC5ibG9iIGZpbGVzIGlu
IHRoZSBkYXRhYmFzZSBkaXJlY3RvcnkgdG8gbGF0ZXIgdmFsaWRhdGUgYWxsIGJsb2IgZmlsZXMg
aW4gdGhlIGRpcmVjdG9yeSBhcmUgZGVsZXRlZC4KICAgICBOU1N0cmluZyAqb3RoZXJCbG9iMSA9
IFtkYXRhYmFzZURpcmVjdG9yeSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCI3MTgy
LmJsb2IiXTsKICAgICBOU1N0cmluZyAqb3RoZXJCbG9iMiA9IFtkYXRhYmFzZURpcmVjdG9yeSBz
dHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCIxYS5ibG9iIl07CiAgICAgTlNTdHJpbmcg
Km90aGVyQmxvYjMgPSBbZGF0YWJhc2VEaXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29t
cG9uZW50OkAiYTEuYmxvYiJdOwpAQCAtMTAyLDEzICsxMDIsMTIgQEAgVEVTVChJbmRleGVkREIs
IFN0b3JlQmxvYlRoZW5SZW1vdmVEYXRhKQogICAgICAgICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVN
YW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmJsb2JGaWxlUGF0aF0pOwog
ICAgICAgICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxl
RXhpc3RzQXRQYXRoOmRhdGFiYXNlRmlsZVBhdGhdKTsKIAotICAgICAgICAvLyBNYWtlIHN1cmUg
dGhlIGZha2UgYmxvYiBmaWxlIHdpdGggYSB2YWxpZCBibG9iIGZpbGUgbmFtZSBpcyBnb25lLgor
ICAgICAgICAvLyBNYWtlIHN1cmUgYWxsIGZha2UgYmxvYiBmaWxlIGFyZSBnb25lLgogICAgICAg
ICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3Rz
QXRQYXRoOm90aGVyQmxvYjFdKTsKIAotICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIGZha2UgYmxv
YiBmaWxlcyB3aXRoIGludmFsaWQgYmxvYiBmaWxlIG5hbWVzIGFyZSBzdGlsbCB0aGVyZS4KLSAg
ICAgICAgRVhQRUNUX1RSVUUoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhp
c3RzQXRQYXRoOm90aGVyQmxvYjJdKTsKLSAgICAgICAgRVhQRUNUX1RSVUUoW1tOU0ZpbGVNYW5h
Z2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOm90aGVyQmxvYjNdKTsKLSAgICAg
ICAgRVhQRUNUX1RSVUUoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3Rz
QXRQYXRoOm90aGVyQmxvYjRdKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdl
ciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpvdGhlckJsb2IyXSk7CisgICAgICAg
IEVYUEVDVF9GQUxTRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNB
dFBhdGg6b3RoZXJCbG9iM10pOworICAgICAgICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVNYW5hZ2Vy
IGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOm90aGVyQmxvYjRdKTsKIAogICAgICAg
ICAvLyBNYWtlIHN1cmUgZXZlcnl0aGluZyByZWxhdGVkIHRvIHRoZSBmYWtlIGRhdGFiYXNlIGlz
IGdvbmUuCiAgICAgICAgIEVYUEVDVF9GQUxTRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFn
ZXJdIGZpbGVFeGlzdHNBdFBhdGg6ZmFrZVNobVBhdGhdKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2oveGNzaGFyZWRkYXRhL3hj
c2NoZW1lcy9XZWJLaXRUZXN0UnVubmVyLnhjc2NoZW1lIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai94Y3NoYXJlZGRhdGEveGNzY2hlbWVzL1dlYktp
dFRlc3RSdW5uZXIueGNzY2hlbWUKaW5kZXggOWY5ODFhM2ZmMWMxOTAzNTg0MDAwYjA2ZmRlOGI4
Zjk2OGQwOTAzMS4uY2Q5OGQxMjliMjkzYTIwZGRhMzdmZTRjZTdhYzgyZTBlODAzYzI2ZiAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJv
ai94Y3NoYXJlZGRhdGEveGNzY2hlbWVzL1dlYktpdFRlc3RSdW5uZXIueGNzY2hlbWUKKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai94Y3NoYXJl
ZGRhdGEveGNzY2hlbWVzL1dlYktpdFRlc3RSdW5uZXIueGNzY2hlbWUKQEAgLTQwLDggKzQwLDEx
IEBACiAgICAgICBkZWJ1Z0RvY3VtZW50VmVyc2lvbmluZyA9ICJZRVMiCiAgICAgICBkZWJ1Z1Nl
cnZpY2VFeHRlbnNpb24gPSAiaW50ZXJuYWwiCiAgICAgICBhbGxvd0xvY2F0aW9uU2ltdWxhdGlv
biA9ICJZRVMiPgotICAgICAgPEJ1aWxkYWJsZVByb2R1Y3RSdW5uYWJsZQotICAgICAgICAgcnVu
bmFibGVEZWJ1Z2dpbmdNb2RlID0gIjAiPgorICAgICAgPFBhdGhSdW5uYWJsZQorICAgICAgICAg
cnVubmFibGVEZWJ1Z2dpbmdNb2RlID0gIjAiCisgICAgICAgICBGaWxlUGF0aCA9ICIvVXNlcnMv
c2lodWlsL0RhdGEvV2ViS2l0MS9PcGVuU291cmNlL1dlYktpdEJ1aWxkL0RlYnVnL1dlYktpdFRl
c3RSdW5uZXIiPgorICAgICAgPC9QYXRoUnVubmFibGU+CisgICAgICA8TWFjcm9FeHBhbnNpb24+
CiAgICAgICAgICA8QnVpbGRhYmxlUmVmZXJlbmNlCiAgICAgICAgICAgICBCdWlsZGFibGVJZGVu
dGlmaWVyID0gInByaW1hcnkiCiAgICAgICAgICAgICBCbHVlcHJpbnRJZGVudGlmaWVyID0gIjhE
RDc2Rjk2MDQ4NkFBNzYwMEQ5NkI1RSIKQEAgLTQ5LDcgKzUyLDEzIEBACiAgICAgICAgICAgICBC
bHVlcHJpbnROYW1lID0gIldlYktpdFRlc3RSdW5uZXIiCiAgICAgICAgICAgICBSZWZlcmVuY2Vk
Q29udGFpbmVyID0gImNvbnRhaW5lcjpXZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvaiI+CiAgICAg
ICAgICA8L0J1aWxkYWJsZVJlZmVyZW5jZT4KLSAgICAgIDwvQnVpbGRhYmxlUHJvZHVjdFJ1bm5h
YmxlPgorICAgICAgPC9NYWNyb0V4cGFuc2lvbj4KKyAgICAgIDxDb21tYW5kTGluZUFyZ3VtZW50
cz4KKyAgICAgICAgIDxDb21tYW5kTGluZUFyZ3VtZW50CisgICAgICAgICAgICBhcmd1bWVudCA9
ICIvVXNlcnMvc2lodWlsL0RhdGEvV2ViS2l0MS9PcGVuU291cmNlL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9hYm9ydC1pbi1pbml0aWFsLXVwZ3Jh
ZGVuZWVkZWQuaHRtbCIKKyAgICAgICAgICAgIGlzRW5hYmxlZCA9ICJZRVMiPgorICAgICAgICAg
PC9Db21tYW5kTGluZUFyZ3VtZW50PgorICAgICAgPC9Db21tYW5kTGluZUFyZ3VtZW50cz4KICAg
IDwvTGF1bmNoQWN0aW9uPgogICAgPFByb2ZpbGVBY3Rpb24KICAgICAgIGJ1aWxkQ29uZmlndXJh
dGlvbiA9ICJSZWxlYXNlIgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451054</attachid>
            <date>2022-02-06 17:12:13 -0800</date>
            <delta_ts>2022-02-07 17:16:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234925-20220206171209.patch</filename>
            <type>text/plain</type>
            <size>286479</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5MDg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDljMjQxMmNmODI0YjRiNTY1YTVlNWRi
YWQxNWFjZDRhY2RkZDA0MzMuLjAwZDg2YjA4YWZkMjIxNTM0N2ZkMGI4OGZlNjRmOWQzNzNhNWZm
MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjItMDItMDYgIFNpaHVpIExpdSAgPHNpaHVpX2xp
dUBhcHBsZS5jb20+CisKKyAgICAgICAgTWFuYWdlIEluZGV4ZWREQiBzdG9yYWdlIGJ5IG9yaWdp
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0OTI1
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NzU1NTAxND4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBoZWxwZXIgZnVuY3Rpb24gdG8gZ2V0
IHRoZSB0YXJnZXQgZnJvbSBhIHN5bW9ibGljIGxpbmsgcGF0aC4KKworICAgICAgICAqIHd0Zi9G
aWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6OmdldFN5bWJvbGlj
TGlua1RhcmdldCk6CisgICAgICAgICogd3RmL0ZpbGVTeXN0ZW0uaDoKKwogMjAyMi0wMi0wMyAg
Um9iZXJ0IEplbm5lciAgPEplbm5lckBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwg
cmV2ZXJ0aW5nIHIyODg5MDIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjcyNmQyZjc5ZTk1OTdhN2ExYTZhOWEx
ZDQ2OTVhNWUzYTViOTI1Mi4uNmI2MjI0NGE3NTZhMjZhMDI3YzhjYmYxMmE1NGNjMWViZjRlM2Q4
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk1IEBACisyMDIyLTAyLTA2ICBTaWh1aSBMaXUgIDxz
aWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIE1hbmFnZSBJbmRleGVkREIgc3RvcmFnZSBi
eSBvcmlnaW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzNDkyNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODc1NTUwMTQ+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQm90aCBXZWJLaXQgYW5kIFdlYktp
dExlZ2FjeSB1c2VkIElEQlNlcnZlciB0byBtYW5hZ2UgVW5pcXVlSURCRGF0YWJhc2VzLCBhbmQg
VW5pcXVlSURCRGF0YWJhc2UgcG9pbnRlZCB0byAKKyAgICAgICAgSURCU2VydmVyLiBOb3cgdGhh
dCBXZWJLaXQgdXNlcyBXZWJLaXQ6OklEQlN0b3JhZ2VNYW5hZ2VyIHRvIG1hbmFnZSBVbmlxdWVJ
REJEYXRhYmFzZXMuIFdlIHVudGllIHRoZSAKKyAgICAgICAga25vdCBiZXR3ZWVuIElEQlNlcnZl
ciBhbmQgVW5pcXVlSURCRGF0YWJhc2UgYnkgYWRkaW5nIGEgbmV3IGFic3RyYWN0IGNsYXNzIFVu
aXF1ZUlEQkRhdGFiYXNlTWFuYWdlciBhbmQgbWFrZQorICAgICAgICBVbmlxdWVJREJEYXRhYmFz
ZSBwb2ludCB0byBVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuCisKKyAgICAgICAgQWxzbywgYXMg
cXVvdGEgY2hlY2sgaXMgbm8gbG9uZ2VyIGFzeW5jIGFjY29yZGluZyB0byBjaGFuZ2VzIGluIFdl
YktpdCwgd2UgbmVlZCB0byB1cGRhdGUgb3BlcmF0aW9ucyBpbgorICAgICAgICBVbmlxdWVJREJE
YXRhYmFzZSB0byBhZG9wdCB0aGUgY2hhbmdlLgorCisgICAgICAgIENvdmVyZWQgYnkgZXhpc3Rp
bmcgdGVzdHMuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnQuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNl
cnZlcjo6SURCU2VydmVyOjpyZWdpc3RlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpJREJTZXJ2ZXI6OnVucmVnaXN0ZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpjcmVhdGVCYWNraW5nU3RvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OnVwZ3JhZGVkRGF0YWJhc2VEaXJlY3Rv
cnkpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OnJlZ2lzdGVyRGF0
YWJhc2VDb25uZWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
SURCU2VydmVyOjp1bnJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0aW9uKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpjbG9zZUFuZFRha2VVbmlxdWVJREJE
YXRhYmFzZSk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lE
QlNlcnZlci5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJC
YWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlJREJC
YWNraW5nU3RvcmU6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJTZXJ2ZXI6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuaDoK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlPYmplY3RTdG9yZTo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5T2JqZWN0U3RvcmU6Ok1lbW9y
eU9iamVjdFN0b3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5
T2JqZWN0U3RvcmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRl
SURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRl
SURCQmFja2luZ1N0b3JlOjpTUUxpdGVJREJCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmVuY29kZURhdGFiYXNlTmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVj
b2RlRGF0YWJhc2VOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURC
QmFja2luZ1N0b3JlOjpnZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbyk6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlQmFja2luZ1N0b3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpm
aWxlbmFtZUZvckRhdGFiYXNlTmFtZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZnVsbERhdGFiYXNlRGlyZWN0b3J5
V2l0aFVwZ3JhZGUpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpVbmlxdWVJREJEYXRhYmFzZTo6VW5pcXVlSURCRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6bWFuYWdlcik6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtQ3VycmVudE9wZW5PcGVy
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6
cGVyZm9ybUN1cnJlbnRPcGVuT3BlcmF0aW9uQWZ0ZXJTcGFjZUNoZWNrKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZUJhY2tpbmdTdG9yZSk6
CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVP
YmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFi
YXNlOjpkZWxldGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVu
aXF1ZUlEQkRhdGFiYXNlOjpyZW5hbWVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpjbGVhck9iamVjdFN0b3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZUluZGV4KToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZUluZGV4
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OnJlbmFt
ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6
OnB1dE9yQWRkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJh
c2U6OnB1dE9yQWRkQWZ0ZXJTcGFjZUNoZWNrKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZl
cjo6VW5pcXVlSURCRGF0YWJhc2U6OmdldFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRBbGxSZWNvcmRzKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmdldENvdW50KToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZVJlY29yZCk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuQ3Vyc29yKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6Oml0ZXJhdGVD
dXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6
Y29tbWl0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJ
REJEYXRhYmFzZTo6YWJvcnRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2
ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpoYXNEYXRhSW5NZW1vcnkgY29uc3QpOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6c2VydmVyKTogRGVsZXRlZC4K
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VDb25u
ZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJh
c2VDb25uZWN0aW9uOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb246On5VbmlxdWVJREJE
YXRhYmFzZUNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJ
REJEYXRhYmFzZUNvbm5lY3Rpb246Om1hbmFnZXIpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uaDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uOjpzZXJ2ZXIpOiBEZWxl
dGVkLgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFz
ZU1hbmFnZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlE
QkRhdGFiYXNlTWFuYWdlcjo6flVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlcik6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0
aW9uOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6flVuaXF1ZUlEQkRhdGFiYXNl
VHJhbnNhY3Rpb24pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJ
REJEYXRhYmFzZVRyYW5zYWN0aW9uLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hh
cmVkL0lEQkVycm9yLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJFcnJvcjo6b3BlcmF0b3IgYm9v
bCBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3RE
YXRhLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc291cmNlSWRl
bnRpZmllci5oOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyOjpvcGVy
YXRvciE9IGNvbnN0KToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisKIDIwMjItMDItMDMgIEJlbiBOaGFtICA8bmhhbUBhcHBsZS5jb20+CiAKICAgICAgICAg
TG9jYWxTdG9yYWdlIHZhbHVlcyBzaG91bGQgYmUgOC1iaXQgc3RyaW5ncyBpbiBtZW1vcnkgaWYg
cG9zc2libGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKaW5kZXggYTI4MTQ5OWJjZGUwNjkzOTg2MjU5MzM0ODQ2ZTAzMTNhNTg0
NzU2My4uZTQ1OTUxOGRlMzdlMThlNDdlMWU1YTgwOGY2ZTMxZDY5MjAzZjlmOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyNjUgQEAKKzIwMjItMDItMDYgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBs
ZS5jb20+CisKKyAgICAgICAgTWFuYWdlIEluZGV4ZWREQiBzdG9yYWdlIGJ5IG9yaWdpbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0OTI1CisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS84NzU1NTAxND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBJbiBuZXR3b3JrIHByb2Nlc3MsIEluZGV4ZWREQiBkYXRh
IGlzIG1hbmFnZWQgYnkgV2ViS2l0OjpXZWJJREJTZXJ2ZXIuIEVhY2ggc2Vzc2lvbiBvd25zIGEg
V2ViSURCU2VydmVyIAorICAgICAgICAoSURCU2VydmVyKSBhbmQgZWFjaCBJREJTZXJ2ZXIgb3du
cyBvbmUgb3IgbW9yZSBVbmlxdWVJREJEYXRhYmFzZXMgKHJlc3ByZW50aW5nIG9uZSBhY3R1YWwg
ZGF0YWJhc2UgdGhhdAorICAgICAgICBJREJEYXRhYmFzZSBjb25uZWN0cyB0bywgY2FuIGJlIGlk
ZW50aWZpZWQgYnkge3Nlc3Npb24sIG9yaWdpbiwgbmFtZX0pLiBOb3cgdGhhdCB3ZSBoYXZlIE5l
dHdvcmtTdG9yYWdlTWFuYWdlciwgCisgICAgICAgIHdoaWNoIG1hbmFnZXMgc2Vzc2lvbiBzdG9y
YWdlIGJ5IG9yaWdpbiwgd2UgY2FuIG1lcmdlIFdlYklEQlNlcnZlciB3aXRoIE5ldHdvcmtTdG9y
YWdlTWFuYWdlciwgc2luY2UgSW5kZXhlZERCIAorICAgICAgICBzdG9yYWdlIGlzIG5vdCBzaGFy
ZWQgYWNyb3NzIG9yaWdpbnMuCisKKyAgICAgICAgVGhlIG9sZCBzdHJ1Y3R1cmUgaXM6CisgICAg
ICAgIE5ldHdvcmtTZXNzaW9uIC0gV2ViSURCU2VydmVyIC0gSURCU2VydmVyIC0gVW5pcXVlSURC
RGF0YWJhc2VzCisgICAgICAgIFRoZSBuZXcgc3RydWN0dXJlIGlzOgorICAgICAgICBOZXR3b3Jr
U2Vzc2lvbiAtIE5ldHdvcmtTdG9yYWdlTWFuYWdlciAtIE9yaWdpblN0b3JhZ2VNYW5hZ2VyIC0g
SURCU3RvcmFnZU1hbmFnZXIgLSBVbmlxdWVJREJEYXRhYmFzZQorCisgICAgICAgIFRvIGNvbXBs
ZXRlIHRoaXMgdHJhbnNpdGlvbiwgd2UgbmVlZCB0byBtYWtlIGEgZmV3IGNoYW5nZXM6CisgICAg
ICAgIDEuIFdlYiBwcm9jZXNzIG5vdyBzZW5kcyBJbmRleGVkREIgcmVsYXRlZCBtZXNzYWdlcyB0
byBOZXR3b3JrU3RvcmFnZU1hbmFnZXIgaW5zdGVhZCBvZiBXZWJJREJTZXJ2ZXIuIAorICAgICAg
ICAyLiBTb21lIG1lc3NhZ2VzIGFyZSBzZW50IHRvIG9wZXJhdGUgb24gVW5pcXVlSURCRGF0YWJh
c2VDb25uZWN0aW9uIG9yIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24sIGFuZCB0aGV5IAor
ICAgICAgICB1c2UgaWRlbnRpZmllcnMgdG8gc3BlY2lmeSB0aGUgdGFyZ2V0LiBUaGVyZWZvcmUs
IE5ldHdvcmtTdG9yYWdlTWFuYWdlcnMgbmVlZHMgdG8ga25vdyB0aGUgbWFwcGluZyBiZXR3ZWVu
IAorICAgICAgICBpZGVudGlmaWVycyBhbmQgdGFyZ2V0IG9iamVjdHMuIEEgbmV3IGNsYXMgSURC
U3RvcmFnZVJlZ2lzdHJ5IGlzIGFkZGVkIHJlY29yZCB0aGlzIG1hcHBpbmcuIEVhY2ggCisgICAg
ICAgIE5ldHdvcmtTdG9yYWdlTWFuYWdlciBvd25zIGEgSURCU3RvcmFnZVJlZ2lzdHJ5IGFuZCBp
dCBwYXNzZXMgSURCU3RvcmFnZVJlZ2lzdHJ5IHRvIElEQlN0b3JhZ2VNYW5hZ2VyLAorICAgICAg
ICBJREJTdG9yYWdlTWFuYWdlciB3aWxsIHJlZ2lzdGVyIG9iamVjdHMgdG8gSURCU3RvcmFnZVJl
Z2lzdHJ5IGFuZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXIgY2FuIGRvIHNlYXJjaCB2aWEgCisgICAg
ICAgIElEQlN0b3JhZ2VSZWdpc3RyeS4KKyAgICAgICAgMy4gUXVvdGEgY2hlY2sgZm9yIEluZGV4
ZWREQiBvcGVyYXRpb25zIGJlY29tZXMgYXN5bmMgYnkgYWRkaW5nIG5ldyBRdW90YU1hbmFnZXIg
Y2xhc3MsIHdoaWNoIGlzIHNpbWlsYXIgdG8gCisgICAgICAgIFdlYkNvcmU6OlN0b3JhZ2VRdW90
YU1hbmFnZXIgYnV0IHByb3ZpZGVzIGFzeW5jIGludGVyZmFjZXMuIAorICAgICAgICBXZSB1c2Vk
IHRvIGJsb2NrIHRoZSBJREJTZXJ2ZXIgdGhyZWFkIHdoZW4gaXQgaXMgd2FpdGluZyBmb3IgcXVv
dGEgY2hlY2sgcmVzdWx0IGZyb20gVUkgcHJvY2VzcywgdGhpcyBpcyBmaW5lIAorICAgICAgICBi
ZWNhdXNlIElEQlNlcnZlciBydW5zIG9uIGl0cyBvd24gdGhyZWFkLiBOb3cgdGhhdCBJREJTdG9y
YWdlTWFuYWdlciBydW5zIG9uIHRoZSBzYW1lIHRocmVhZCBhcyB0aGUgb3RoZXIgCisgICAgICAg
IHN0b3JhZ2UgdHlwZXMsIHdlIGNhbm5vdCBibG9jayB0aGUgdGhyZWFkIG9uIHF1b3RhIGNoZWNr
LgorICAgICAgICA0LiBSZW5hbWUgV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50IHRvIElEQlN0b3Jh
Z2VDb25uZWN0aW9uVG9DbGllbnQgdG8gcmVmbGVjdCB0aGUgY2hhbmdlIG9uIHRoZSBzdHJ1Y3R1
cmUuIEFsc28sCisgICAgICAgIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQgZG9lcyBub3Qg
a2VlcCByZWZlcmVuY2UgdG8gdGhlIElQQzo6Q29ubmVjdGlvbiBub3csIGl0IG9ubHkgcmVjb3Jk
cyAKKyAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRC4KKyAgICAgICAgNS4gSW5kZXhl
ZERCIGRhdGEgbWF5IGJlIHB1dCBpbiBkaWZmZXJlbnQgdmVyc2lvbiBkaXJjdG9yaWVzLiBXZSB1
c2VkIHRvIG1pZ3JhdGUgZGF0YWJhc2UgdG8gbmV3IHZlcnNpb24gCisgICAgICAgIGRpcmV0b3J5
IHdoZW4gdGhlIGRhdGFiYXNlIGlzIGFjY2Vzc2VkLiBBcyBJREJTdG9yYWdlTWFuYWdlciBub3cg
bWFuYWdlcyBJbmRleGVkREIgZGF0YSBvZiBvbmUgb3JpZ2luLCBpdCdzIAorICAgICAgICBzaW1w
bGVyIGlmIGl0IG9ubHkga2VlcHMgdHJhY2sgb2Ygb25lIGRpcmVjdG9yeS4gVGhlcmVmb3JlLCB3
ZSBub3cgbWlncmF0ZSBhbGwgZGF0YWJhc2VzIG9mIG9uZSBvcmlnaW4KKyAgICAgICAgd2hlbiB0
aGUgb3JpZ2luIGlzIGFjY2Vzc2VkIChzZWUgSURCU3RvcmFnZU1hbmFnZXI6OmlkYlN0b3JhZ2VP
cmlnaW5EaXJlY3RvcnkpLiAKKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnVwZGF0ZVF1b3RhQmFzZWRPblNwYWNlVXNhZ2VGb3JUZXN0aW5nKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OndyaXRlQmxv
YnNUb1RlbXBvcmFyeUZpbGVzRm9ySW5kZXhlZERCKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpk
aWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpjcmVhdGVOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
OjphZGRXZWJzaXRlRGF0YVN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OmZldGNoV2Vic2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVs
ZXRlV2Vic2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRl
V2Vic2l0ZURhdGFGb3JPcmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OmRlbGV0ZUFuZFJlc3RyaWN0V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVnaXN0cmFibGVEb21haW5zV2l0aFdlYnNp
dGVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnByZXBhcmVUb1N1c3Bl
bmQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVzdW1lKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlc2V0UXVvdGEpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6ZGlkSW5jcmVhc2VRdW90YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzOjpyZW5hbWVPcmlnaW5JbldlYnNpdGVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3M6OnN0b3JhZ2VRdW90YU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6Y29ubmVjdGlvblRvV2ViUHJvY2Vzc0Nsb3NlZCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzdXNwZW5kSURCU2VydmVycyk6IERlbGV0ZWQuCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3M6OnNob3VsZFN1c3BlbmRJREJTZXJ2ZXJzIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtTZXNzaW9uOjppbnZhbGlkYXRlQW5kQ2FuY2VsKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Nlc3Npb246OmFkZFN0b3JhZ2VNYW5hZ2VyU2Vzc2lvbik6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjplbnN1cmVXZWJJREJTZXJ2ZXIpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6Y2xvc2VJREJTZXJ2ZXIpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6YWRkSW5kZXhlZERhdGFiYXNlU2Vzc2lv
bik6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OndlYklEQlNlcnZlcik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpoYXNJREJEYXRhYmFzZVBhdGggY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFn
ZUVuZ2luZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpzdG9y
YWdlUGF0aCk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpkaXNrVXNh
Z2UpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6cmVxdWVzdFNwYWNl
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlczo6cmVxdWVzdFNwYWNl
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya1Byb2Nlc3NJT1MubW06Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzZXRJc0hvbGRpbmdMb2NrZWRGaWxlcyk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlQ29ubmVjdGlvblRv
Q2xpZW50LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9u
VG9DbGllbnQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQpOgorICAgICAgICAoV2ViS2l0
OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50Ojp+SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0Ns
aWVudCk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmNv
bm5lY3Rpb25Ub0NsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9u
VG9DbGllbnQ6OmRpZEdldFJlc3VsdCk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25u
ZWN0aW9uVG9DbGllbnQ6OmRpZERlbGV0ZURhdGFiYXNlKToKKyAgICAgICAgKFdlYktpdDo6SURC
U3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkT3BlbkRhdGFiYXNlKToKKyAgICAgICAgKFdl
YktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkU3RhcnRUcmFuc2FjdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZEFib3J0
VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xp
ZW50OjpkaWRDb21taXRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VD
b25uZWN0aW9uVG9DbGllbnQ6OmRpZENyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYktp
dDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkRGVsZXRlT2JqZWN0U3RvcmUpOgor
ICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRSZW5hbWVP
YmplY3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGll
bnQ6OmRpZENsZWFyT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29u
bmVjdGlvblRvQ2xpZW50OjpkaWRDcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0
b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZERlbGV0ZUluZGV4KToKKyAgICAgICAgKFdlYktp
dDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkUmVuYW1lSW5kZXgpOgorICAgICAg
ICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRQdXRPckFkZCk6Cisg
ICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZEdldFJlY29y
ZCk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZEdl
dEFsbFJlY29yZHMpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xp
ZW50OjpkaWRHZXRDb3VudCk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9u
VG9DbGllbnQ6OmRpZERlbGV0ZVJlY29yZCk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VD
b25uZWN0aW9uVG9DbGllbnQ6OmRpZE9wZW5DdXJzb3IpOgorICAgICAgICAoV2ViS2l0OjpJREJT
dG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRJdGVyYXRlQ3Vyc29yKToKKyAgICAgICAgKFdl
YktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkR2V0QWxsRGF0YWJhc2VOYW1l
c0FuZFZlcnNpb25zKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0Ns
aWVudDo6ZmlyZVZlcnNpb25DaGFuZ2VFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3Jh
Z2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZENsb3NlRnJvbVNlcnZlcik6CisgICAgICAgIChXZWJL
aXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6Om5vdGlmeU9wZW5EQlJlcXVlc3RCbG9j
a2VkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VDb25uZWN0
aW9uVG9DbGllbnQuaDogQWRkZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9J
REJTdG9yYWdlTWFuYWdlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjptaWdyYXRlT3Jp
Z2luRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VNYW5hZ2VyOjppZGJTdG9yYWdl
T3JpZ2luRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZU1hbmFnZXI6Omlk
YlN0b3JhZ2VTaXplKToKKyAgICAgICAgKFdlYktpdDo6Z2V0T3JpZ2luc0ZvclZlcnNpb24pOgor
ICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlTWFuYWdlcjo6b3JpZ2luc09mSURCU3RvcmFnZURh
dGEpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlTWFuYWdlcjo6SURCU3RvcmFnZU1hbmFn
ZXIpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlTWFuYWdlcjo6aXNBY3RpdmUgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlTWFuYWdlcjo6aGFzRGF0YUluTWVtb3J5IGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZU1hbmFnZXI6OmNsb3NlRGF0YWJhc2Vz
Rm9yRGVsZXRpb24pOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlTWFuYWdlcjo6c3RvcERh
dGFiYXNlQWN0aXZpdGllc0ZvclN1c3BlbmQpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdl
TWFuYWdlcjo6Z2V0T3JDcmVhdGVVbmlxdWVJREJEYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6
OklEQlN0b3JhZ2VNYW5hZ2VyOjpvcGVuRGF0YWJhc2UpOgorICAgICAgICAoV2ViS2l0OjpJREJT
dG9yYWdlTWFuYWdlcjo6ZGVsZXRlRGF0YWJhc2UpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9y
YWdlTWFuYWdlcjo6Z2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKToKKyAgICAgICAgKFdl
YktpdDo6SURCU3RvcmFnZU1hbmFnZXI6Om9wZW5EQlJlcXVlc3RDYW5jZWxsZWQpOgorICAgICAg
ICAoV2ViS2l0OjpJREJTdG9yYWdlTWFuYWdlcjo6cmVnaXN0ZXJDb25uZWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6SURCU3RvcmFnZU1hbmFnZXI6OnVucmVnaXN0ZXJDb25uZWN0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6SURCU3RvcmFnZU1hbmFnZXI6OnJlZ2lzdGVyVHJhbnNhY3Rpb24pOgor
ICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlTWFuYWdlcjo6dW5yZWdpc3RlclRyYW5zYWN0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZUJhY2tpbmdTdG9y
ZSk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VNYW5hZ2VyOjpyZXF1ZXN0U3BhY2UpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZU1hbmFnZXIuaDogQWRk
ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlUmVnaXN0cnku
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZVJlZ2lzdHJ5OjpnZXRPckNy
ZWF0ZUNvbm5lY3Rpb25Ub0NsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VSZWdp
c3RyeTo6cmVtb3ZlQ29ubmVjdGlvblRvQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6SURCU3Rv
cmFnZVJlZ2lzdHJ5OjpyZWdpc3RlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpJREJT
dG9yYWdlUmVnaXN0cnk6OnVucmVnaXN0ZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
SURCU3RvcmFnZVJlZ2lzdHJ5OjpyZWdpc3RlclRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6SURCU3RvcmFnZVJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyVHJhbnNhY3Rpb24pOgorICAgICAgICAo
V2ViS2l0OjpJREJTdG9yYWdlUmVnaXN0cnk6OmdldENvbm5lY3Rpb24pOgorICAgICAgICAoV2Vi
S2l0OjpJREJTdG9yYWdlUmVnaXN0cnk6OmdldFRyYW5zYWN0aW9uKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VSZWdpc3RyeS5oOiBBZGRlZC4KKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXIpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNhbkhhbmRsZVR5cGVzKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpzdG9wUmVjZWl2aW5nTWVzc2Fn
ZUZyb21Db25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2Vy
Ojpsb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0
b3JhZ2VNYW5hZ2VyOjpkaWRJbmNyZWFzZVF1b3RhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1N0b3JhZ2VNYW5hZ2VyOjpnZXRBbGxPcmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1N0b3JhZ2VNYW5hZ2VyOjptb3ZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9y
YWdlTWFuYWdlcjo6c3VzcGVuZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFu
YWdlcjo6cmVnaXN0ZXJUZW1wb3JhcnlCbG9iRmlsZVBhdGhzKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpyZXF1ZXN0U3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnJlc2V0UXVvdGFGb3JUZXN0aW5nKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpyZXNldFF1b3RhVXBkYXRlZEJhc2VkT25Vc2Fn
ZUZvclRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Om9w
ZW5EYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6b3Bl
bkRCUmVxdWVzdENhbmNlbGxlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFu
YWdlcjo6ZGVsZXRlRGF0YWJhc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1h
bmFnZXI6OmVzdGFibGlzaFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0
b3JhZ2VNYW5hZ2VyOjpkYXRhYmFzZUNvbm5lY3Rpb25QZW5kaW5nQ2xvc2UpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmRhdGFiYXNlQ29ubmVjdGlvbkNsb3NlZCk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6YWJvcnRPcGVuQW5kVXBn
cmFkZU5lZWRlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGlk
RmlyZVZlcnNpb25DaGFuZ2VFdmVudCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdl
TWFuYWdlcjo6YWJvcnRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9y
YWdlTWFuYWdlcjo6Y29tbWl0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
U3RvcmFnZU1hbmFnZXI6OmRpZEZpbmlzaEhhbmRsaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVPYmplY3RT
dG9yZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlT2Jq
ZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnJlbmFt
ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpj
bGVhck9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2Vy
OjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6
ZGVsZXRlSW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnJl
bmFtZUluZGV4KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpwdXRP
ckFkZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Z2V0UmVjb3Jk
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpnZXRBbGxSZWNvcmRz
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpnZXRDb3VudCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlUmVjb3JkKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpvcGVuQ3Vyc29yKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjppdGVyYXRlQ3Vyc29yKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpnZXRBbGxEYXRhYmFzZU5hbWVzQW5k
VmVyc2lvbnMpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3Rv
cmFnZU1hbmFnZXIubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFn
ZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3Jh
Z2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0OjpTdG9yYWdlQnVja2V0KToKKyAgICAgICAgKFdlYktp
dDo6T3JpZ2luU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VCdWNrZXQ6OnRvV2Vic2l0ZURhdGFUeXBl
KToKKyAgICAgICAgKFdlYktpdDo6T3JpZ2luU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VCdWNrZXQ6
OnRvU3RvcmFnZUlkZW50aWZpZXIpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFu
YWdlcjo6U3RvcmFnZUJ1Y2tldDo6aWRiU3RvcmFnZU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0
OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldDo6ZXhpc3RpbmdJREJTdG9yYWdl
TWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdl
QnVja2V0Ojppc0FjdGl2ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VN
YW5hZ2VyOjpTdG9yYWdlQnVja2V0Ojppc0VtcHR5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
T3JpZ2luU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VCdWNrZXQ6OmRlbGV0ZURhdGEpOgorICAgICAg
ICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldDo6bW92ZURhdGEp
OgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldDo6
ZmV0Y2hEYXRhVHlwZXNJbkxpc3RGcm9tTWVtb3J5KToKKyAgICAgICAgKFdlYktpdDo6T3JpZ2lu
U3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VCdWNrZXQ6OmZldGNoRGF0YVR5cGVzSW5MaXN0RnJvbURp
c2spOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tl
dDo6ZGVsZXRlSURCU3RvcmFnZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpjcmVhdGVRdW90YU1h
bmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6T3JpZ2luU3Rv
cmFnZU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6ZGVm
YXVsdEJ1Y2tldCk6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpxdW90
YU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6aWRiU3Rv
cmFnZU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6ZXhp
c3RpbmdJREJTdG9yYWdlTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VN
YW5hZ2VyOjptb3ZlRGF0YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9Pcmln
aW5TdG9yYWdlTWFuYWdlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvUXVv
dGFNYW5hZ2VyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlF1b3RhTWFuYWdlcjo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYktpdDo6UXVvdGFNYW5hZ2VyOjpRdW90YU1hbmFnZXIpOgorICAg
ICAgICAoV2ViS2l0OjpRdW90YU1hbmFnZXI6OnJlcXVlc3RTcGFjZSk6CisgICAgICAgIChXZWJL
aXQ6OlF1b3RhTWFuYWdlcjo6aGFuZGxlUmVxdWVzdHMpOgorICAgICAgICAoV2ViS2l0OjpRdW90
YU1hbmFnZXI6OmdyYW50V2l0aEN1cnJlbnRRdW90YSk6CisgICAgICAgIChXZWJLaXQ6OlF1b3Rh
TWFuYWdlcjo6Z3JhbnRGYXN0UGF0aCk6CisgICAgICAgIChXZWJLaXQ6OlF1b3RhTWFuYWdlcjo6
ZGlkSW5jcmVhc2VRdW90YSk6CisgICAgICAgIChXZWJLaXQ6OlF1b3RhTWFuYWdlcjo6cmVzZXRR
dW90YVVwZGF0ZWRCYXNlZE9uVXNhZ2VGb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6UXVv
dGFNYW5hZ2VyOjpyZXNldFF1b3RhRm9yVGVzdGluZyk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3Mvc3RvcmFnZS9RdW90YU1hbmFnZXIuaDogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXQvbWVzc2FnZXMucHk6CisgICAgICAgICh0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2Rl
Y2xhcmVkKToKKyAgICAgICAgKiBTaGFyZWQvV2Vic2l0ZURhdGEvUXVvdGFJbmNyZWFzZVJlcXVl
c3RJZGVudGlmaWVyLmg6IEFkZGVkLgorICAgICAgICAqIFNoYXJlZC9XZWJzaXRlRGF0YVN0b3Jl
UGFyYW1ldGVycy5oOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFVJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzc1Byb3h5OjppbmNyZWFzZVF1b3RhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmU6OnBlclRoaXJkUGFydHlPcmlnaW5TdG9yYWdlUXVvdGEgY29uc3QpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmg6CisgICAgICAgIChX
ZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRQZXJPcmlnaW5RdW90YSk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OldlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKiBXZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0RhdGFiYXNlcy9J
bmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpkZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6b3BlbkRhdGFiYXNlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjphYm9ydFRyYW5zYWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpjb21taXRUcmFuc2FjdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGlkRmluaXNoSGFu
ZGxpbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJD
b25uZWN0aW9uVG9TZXJ2ZXI6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpkZWxldGVPYmplY3RTdG9yZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6cmVuYW1lT2JqZWN0U3RvcmUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmNsZWFyT2JqZWN0U3RvcmUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmNyZWF0ZUluZGV4
KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpkZWxldGVJbmRl
eCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6cmVuYW1lSW5k
ZXgpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OnB1dE9yQWRk
KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpnZXRSZWNvcmQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmdldEFsbFJlY29y
ZHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmdldENvdW50
KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpkZWxldGVSZWNv
cmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6Om9wZW5DdXJz
b3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6Oml0ZXJhdGVD
dXJzb3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmVzdGFi
bGlzaFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvU2Vy
dmVyOjpkYXRhYmFzZUNvbm5lY3Rpb25QZW5kaW5nQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRhdGFiYXNlQ29ubmVjdGlvbkNsb3NlZCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6YWJvcnRPcGVuQW5kVXBncmFk
ZU5lZWRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGlk
RmlyZVZlcnNpb25DaGFuZ2VFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rp
b25Ub1NlcnZlcjo6b3BlbkRCUmVxdWVzdENhbmNlbGxlZCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Z2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKToK
KwogMjAyMi0wMi0wMyAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KIAogICAgICAg
ICBEZWxheSB3cml0aW5nIG9yaWdpbiBmaWxlIGluIE5ldHdvcmtTdG9yYWdlTWFuYWdlcgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L0NoYW5nZUxvZwppbmRleCBlNmJhNzMyMmMzNDhlY2RlNDc5NGUwOTQ5OTViYWI0ODk2YmY1
YTQ5Li43OGQ3NGIxMTI5YjIxNTQxNTRkMWViMTIzNGYwMWRlYzQyNWQxNWIwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIyLTAyLTA2ICBTaWh1aSBMaXUgIDxzaWh1
aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIE1hbmFnZSBJbmRleGVkREIgc3RvcmFnZSBieSBv
cmlnaW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
NDkyNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODc1NTUwMTQ+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTdG9yYWdlL0luUHJvY2Vzc0lEQlNl
cnZlci5jcHA6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OnF1b3RhTWFuYWdlcik6CisK
IDIwMjItMDItMDIgIEVsbGlvdHQgV2lsbGlhbXMgIDxlbXdAYXBwbGUuY29tPgogCiAgICAgICAg
IFtYY29kZV0gRml4IHJlZHVuZGFudCBleGVjdXRpb24gb2YgIkNoZWNrIFZUYWJsZXMuLi4iIHNj
cmlwdApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2Uv
V1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAppbmRleCAzODgzYWMyNjYzZDBhMjAyMzJjYjVlMDliNGU0
NTk2OGIwMDE2N2I5Li41MDQxMDNlZDBlNGMxZTAzYzEwOWY0ZjdmMTljODhkODlhMGZmYmI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9GaWxlU3lzdGVtLmNwcApAQCAtNjYwLDYgKzY2MCwxNSBAQCBib29sIGNyZWF0ZVN5bWJv
bGljTGluayhjb25zdCBTdHJpbmcmIHRhcmdldFBhdGgsIGNvbnN0IFN0cmluZyYgc3ltYm9saWNM
aW5rUGF0aAogICAgIHJldHVybiAhZWM7CiB9CiAKK1N0cmluZyBnZXRTeW1ib2xpY0xpbmtUYXJn
ZXQoY29uc3QgU3RyaW5nJiBzeW1ib2xpY0xpbmtQYXRoKQoreworICAgIGF1dG8gZmlsZVN5c3Rl
bVBhdGggPSB0b1N0ZEZpbGVTeXN0ZW1QYXRoKHN5bWJvbGljTGlua1BhdGgpOworICAgIGlmICgh
c3RkOjpmaWxlc3lzdGVtOjppc19zeW1saW5rKGZpbGVTeXN0ZW1QYXRoKSkKKyAgICAgICAgcmV0
dXJuIHN5bWJvbGljTGlua1BhdGg7CisKKyAgICByZXR1cm4gZnJvbVN0ZEZpbGVTeXN0ZW1QYXRo
KHN0ZDo6ZmlsZXN5c3RlbTo6cmVhZF9zeW1saW5rKGZpbGVTeXN0ZW1QYXRoKSk7Cit9CisKIGJv
b2wgaGFyZExpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIGxpbmtQ
YXRoKQogewogICAgIHN0ZDo6ZXJyb3JfY29kZSBlYzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL0ZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaAppbmRleCBjZTY4
MTI4NjBhMDBmOTAyZjI5OTgzZjQ4Y2IxY2ExZWQxOGI5MDk3Li45ZDhlNDliNTE4YzRlMGQ0ZjMy
NmY0YzRhMWNkNzc3ZTNiMjg4ZmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lz
dGVtLmgKKysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCkBAIC0xMjcsNiArMTI3LDcg
QEAgV1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHZvbHVtZUZyZWVT
cGFjZShjb25zdCBTdHJpbmcmKTsKIFdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVp
bnQzMl90PiB2b2x1bWVGaWxlQmxvY2tTaXplKGNvbnN0IFN0cmluZyYpOwogV1RGX0VYUE9SVF9Q
UklWQVRFIHN0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0IENTdHJp
bmcmKTsKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGNyZWF0ZVN5bWJvbGljTGluayhjb25zdCBT
dHJpbmcmIHRhcmdldFBhdGgsIGNvbnN0IFN0cmluZyYgc3ltYm9saWNMaW5rUGF0aCk7CitXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nIGdldFN5bWJvbGljTGlua1RhcmdldChjb25zdCBTdHJpbmcm
IHN5bWJvbGljTGlua1BhdGgpOwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBjcmVhdGVUZW1w
b3JhcnlaaXBBcmNoaXZlKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKIAogZW51bSBjbGFzcyBG
aWxlVHlwZSB7IFJlZ3VsYXIsIERpcmVjdG9yeSwgU3ltYm9saWNMaW5rIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZQppbmRleCA2Y2IxNzQ1OWE3ZGE4NGY1YTI2Mjk5ZDY3MDhiMmM3YjczYzBkNmM2Li45NWI4
NzQ4NGYxN2RiNTVkMDNlNDgxM2QyZmM5MDYyNTdmMzRkNWVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UK
QEAgLTIyNCwxMSArMjI0LDE2IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURF
UlMKICAgICBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQ29ubmVjdGlvblRvQ2xpZW50LmgK
ICAgICBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQ29ubmVjdGlvblRvQ2xpZW50RGVsZWdh
dGUuaAogICAgIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaAorICAgIE1vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9JbmRleFZhbHVlRW50cnkuaAorICAgIE1vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9JbmRleFZhbHVlU3RvcmUuaAorICAgIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9NZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbi5oCiAgICAgTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5oCiAgICAgTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5oCisgICAgTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L1NRTGl0ZUlEQlRyYW5zYWN0aW9uLmgKICAgICBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU2Vy
dmVyT3BlbkRCUmVxdWVzdC5oCiAgICAgTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlE
QkRhdGFiYXNlLmgKICAgICBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJh
c2VDb25uZWN0aW9uLmgKKyAgICBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0
YWJhc2VNYW5hZ2VyLmgKICAgICBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0
YWJhc2VUcmFuc2FjdGlvbi5oCiAKICAgICBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5kZXhL
ZXkuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2VJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZUlkZW50aWZpZXIuaAppbmRleCA2YzBiMWI0ZjJhYjBjMDMzMDc2NjU0ZWE0YjI3NjU1
OTQ0NTg5NTM2Li43ZjA5YmZiMzJkNTFlOTdmYTdlZDRlNDVkNTExMzM4ZTViODExN2U4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50
aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFz
ZUlkZW50aWZpZXIuaApAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1RyYW5z
aWVudCgpIGNvbnN0IHsgcmV0dXJuIG1faXNUcmFuc2llbnQ7IH0KIAogICAgIFN0cmluZyBkYXRh
YmFzZURpcmVjdG9yeVJlbGF0aXZlVG9Sb290KGNvbnN0IFN0cmluZyYgcm9vdERpcmVjdG9yeSwg
Y29uc3QgU3RyaW5nJiB2ZXJzaW9uU3RyaW5nPSJ2MSIpIGNvbnN0OwotICAgIHN0YXRpYyBTdHJp
bmcgZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9vdChjb25zdCBTZWN1cml0eU9yaWdpbkRh
dGEmIHRvcExldmVsT3JpZ2luLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9wZW5pbmdPcmln
aW4sIGNvbnN0IFN0cmluZyYgcm9vdERpcmVjdG9yeSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uU3Ry
aW5nKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIGRhdGFiYXNlRGlyZWN0b3J5
UmVsYXRpdmVUb1Jvb3QoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiB0b3BMZXZlbE9yaWdpbiwg
Y29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcGVuaW5nT3JpZ2luLCBjb25zdCBTdHJpbmcmIHJv
b3REaXJlY3RvcnksIGNvbnN0IFN0cmluZyYgdmVyc2lvblN0cmluZyk7CiAKICAgICB0ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8SURCRGF0YWJhc2VJZGVudGlm
aWVyPiBkZWNvZGUoRGVjb2RlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL0lEQkNvbm5lY3Rpb25Ub0NsaWVudC5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkNvbm5lY3Rpb25Ub0NsaWVudC5oCmluZGV4
IDI3ZjcyNjkxOWYxNDIxZjIxYTVmMDNmZmRmYzE3NmQ0YzRiZGYzYzIuLmYwNWFjMmY4YzgyYTgw
OWMyNzFjOWRmNTk3Zjk2NDczMTllZjY0NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQ29ubmVjdGlvblRvQ2xpZW50
LmgKQEAgLTc0LDExICs3NCwxMSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIG5vdGlmeU9wZW5EQlJl
cXVlc3RCbG9ja2VkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZp
ZXIsIHVpbnQ2NF90IG9sZFZlcnNpb24sIHVpbnQ2NF90IG5ld1ZlcnNpb24pOwogCi0gICAgdm9p
ZCBkaWRHZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMoY29uc3QgSURCUmVzb3VyY2VJZGVu
dGlmaWVyJiwgVmVjdG9yPElEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24+JiYpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgZGlkR2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKGNvbnN0IElE
QlJlc291cmNlSWRlbnRpZmllciYsIFZlY3RvcjxJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiYm
KTsKIAogICAgIHZvaWQgcmVnaXN0ZXJEYXRhYmFzZUNvbm5lY3Rpb24oVW5pcXVlSURCRGF0YWJh
c2VDb25uZWN0aW9uJik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0aW9uKFVu
aXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYpOwotICAgIHZvaWQgY29ubmVjdGlvblRvQ2xpZW50
Q2xvc2VkKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb25uZWN0aW9uVG9DbGllbnRDbG9z
ZWQoKTsKICAgICBib29sIGlzQ2xvc2VkKCkgeyByZXR1cm4gbV9pc0Nsb3NlZDsgfQogICAgIHZv
aWQgY2xlYXJEZWxlZ2F0ZSgpIHsgbV9kZWxlZ2F0ZSA9IG51bGxwdHI7IH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcApp
bmRleCBkMjY2OTMxODA4NDZhZjY2Njg5ZTE3YWVhM2ZmOTk3MTk1NWFlMzZlLi40YmFkNDQyYjFi
M2E5YTQxNzg1OTA0MmY4MTY1NzdlMDdiMTNiYThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcApAQCAtMTAxLDEzICsx
MDEsMTMgQEAgdm9pZCBJREJTZXJ2ZXI6OnVucmVnaXN0ZXJUcmFuc2FjdGlvbihVbmlxdWVJREJE
YXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKICAgICBtX3RyYW5zYWN0aW9ucy5yZW1v
dmUodHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSk7CiB9CiAKLXZvaWQgSURCU2VydmVy
OjpyZWdpc3RlckRhdGFiYXNlQ29ubmVjdGlvbihVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24pCit2b2lkIElEQlNlcnZlcjo6cmVnaXN0ZXJDb25uZWN0aW9uKFVuaXF1ZUlE
QkRhdGFiYXNlQ29ubmVjdGlvbiYgY29ubmVjdGlvbikKIHsKICAgICBBU1NFUlQoIW1fZGF0YWJh
c2VDb25uZWN0aW9ucy5jb250YWlucyhjb25uZWN0aW9uLmlkZW50aWZpZXIoKSkpOwogICAgIG1f
ZGF0YWJhc2VDb25uZWN0aW9ucy5zZXQoY29ubmVjdGlvbi5pZGVudGlmaWVyKCksICZjb25uZWN0
aW9uKTsKIH0KIAotdm9pZCBJREJTZXJ2ZXI6OnVucmVnaXN0ZXJEYXRhYmFzZUNvbm5lY3Rpb24o
VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiBjb25uZWN0aW9uKQordm9pZCBJREJTZXJ2ZXI6
OnVucmVnaXN0ZXJDb25uZWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYgY29ubmVj
dGlvbikKIHsKICAgICBBU1NFUlQobV9kYXRhYmFzZUNvbm5lY3Rpb25zLmNvbnRhaW5zKGNvbm5l
Y3Rpb24uaWRlbnRpZmllcigpKSk7CiAgICAgbV9kYXRhYmFzZUNvbm5lY3Rpb25zLnJlbW92ZShj
b25uZWN0aW9uLmlkZW50aWZpZXIoKSk7CkBAIC0xMjgsMTMgKzEyOCwxMyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8SURCQmFja2luZ1N0b3JlPiBJREJTZXJ2ZXI6OmNyZWF0ZUJhY2tpbmdTdG9yZShjb25z
dCBJREJEYXRhYmFzZQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIGlmICht
X2RhdGFiYXNlRGlyZWN0b3J5UGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPE1lbW9yeUlEQkJhY2tpbmdTdG9yZT4obV9zZXNzaW9uSUQsIGlkZW50aWZpZXIpOworICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxNZW1vcnlJREJCYWNraW5nU3RvcmU+KGlkZW50aWZpZXIp
OwogCiAgICAgQVNTRVJUKCFtX3Nlc3Npb25JRC5pc0VwaGVtZXJhbCgpKTsKICAgICBpZiAoaWRl
bnRpZmllci5pc1RyYW5zaWVudCgpKQotICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxNZW1vcnlJ
REJCYWNraW5nU3RvcmU+KG1fc2Vzc2lvbklELCBpZGVudGlmaWVyKTsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8TWVtb3J5SURCQmFja2luZ1N0b3JlPihpZGVudGlmaWVyKTsKIAotICAgIHJl
dHVybiBtYWtlVW5pcXVlPFNRTGl0ZUlEQkJhY2tpbmdTdG9yZT4obV9zZXNzaW9uSUQsIGlkZW50
aWZpZXIsIG1fZGF0YWJhc2VEaXJlY3RvcnlQYXRoKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxT
UUxpdGVJREJCYWNraW5nU3RvcmU+KGlkZW50aWZpZXIsIHVwZ3JhZGVkRGF0YWJhc2VEaXJlY3Rv
cnkoaWRlbnRpZmllcikpOwogfQogCiB2b2lkIElEQlNlcnZlcjo6b3BlbkRhdGFiYXNlKGNvbnN0
IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkKQEAgLTE3NywxNyArMTc3LDYgQEAgdm9pZCBJ
REJTZXJ2ZXI6OmRlbGV0ZURhdGFiYXNlKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0
YSkKICAgICAgICAgbV91bmlxdWVJREJEYXRhYmFzZU1hcC5yZW1vdmUoZGF0YWJhc2UtPmlkZW50
aWZpZXIoKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxVbmlxdWVJREJEYXRhYmFzZT4gSURCU2Vy
dmVyOjpjbG9zZUFuZFRha2VVbmlxdWVJREJEYXRhYmFzZShVbmlxdWVJREJEYXRhYmFzZSYgZGF0
YWJhc2UpCi17Ci0gICAgTE9HKEluZGV4ZWREQiwgIklEQlNlcnZlcjo6Y2xvc2VVbmlxdWVJREJE
YXRhYmFzZSIpOwotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0KLSAgICBhdXRvIHVuaXF1
ZVBvaW50ZXIgPSBtX3VuaXF1ZUlEQkRhdGFiYXNlTWFwLnRha2UoZGF0YWJhc2UuaWRlbnRpZmll
cigpKTsKLSAgICBBU1NFUlQodW5pcXVlUG9pbnRlcik7Ci0KLSAgICByZXR1cm4gdW5pcXVlUG9p
bnRlcjsKLX0KLQogdm9pZCBJREJTZXJ2ZXI6OmFib3J0VHJhbnNhY3Rpb24oY29uc3QgSURCUmVz
b3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpCiB7CiAgICAgTE9HKEluZGV4
ZWREQiwgIklEQlNlcnZlcjo6YWJvcnRUcmFuc2FjdGlvbiIpOwpAQCAtNzUwLDcgKzczOSw3IEBA
IHZvaWQgSURCU2VydmVyOjpyZW5hbWVPcmlnaW4oY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhJiBvbGRPcmlnaW4sIGNvbnN0CiAgICAgICAgIEZpbGVTeXN0ZW06Om1vdmVGaWxlKG9s
ZE9yaWdpblBhdGgsIG5ld09yaWdpblBhdGgpOwogfQogCi1TdG9yYWdlUXVvdGFNYW5hZ2VyOjpE
ZWNpc2lvbiBJREJTZXJ2ZXI6OnJlcXVlc3RTcGFjZShjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdp
biwgdWludDY0X3QgdGFza1NpemUpIFdURl9JR05PUkVTX1RIUkVBRF9TQUZFVFlfQU5BTFlTSVMK
K3ZvaWQgSURCU2VydmVyOjpyZXF1ZXN0U3BhY2UoY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4s
IHVpbnQ2NF90IHRhc2tTaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKSBXVEZfSUdOT1JFU19USFJFQURfU0FGRVRZX0FOQUxZU0lTCiB7CiAgICAg
QVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKG1fbG9jay5pc0hlbGQoKSk7CkBA
IC03NjIsNyArNzUxLDcgQEAgU3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb24gSURCU2VydmVy
OjpyZXF1ZXN0U3BhY2UoY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4KICAgICByZXN1bHQgPSBt
X3NwYWNlUmVxdWVzdGVyKG9yaWdpbiwgdGFza1NpemUpOwogICAgIG1fbG9jay5sb2NrKCk7CiAK
LSAgICByZXR1cm4gcmVzdWx0OworICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlc3VsdCA9PSBTdG9y
YWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbjo6R3JhbnQpOwogfQogCiB1aW50NjRfdCBJREJTZXJ2
ZXI6OmRpc2tVc2FnZShjb25zdCBTdHJpbmcmIHJvb3REaXJlY3RvcnksIGNvbnN0IENsaWVudE9y
aWdpbiYgb3JpZ2luKQpAQCAtNzg0LDYgKzc3MywyMyBAQCB2b2lkIElEQlNlcnZlcjo6dXBncmFk
ZUZpbGVzSWZOZWNlc3NhcnkoKQogICAgICAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3Jp
ZXMobmV3VmVyc2lvbkRpcmVjdG9yeSk7CiB9CiAKK1N0cmluZyBJREJTZXJ2ZXI6OnVwZ3JhZGVk
RGF0YWJhc2VEaXJlY3RvcnkoY29uc3QgV2ViQ29yZTo6SURCRGF0YWJhc2VJZGVudGlmaWVyJiBp
ZGVudGlmaWVyKQoreworICAgIFN0cmluZyBvbGRPcmlnaW5EaXJlY3RvcnkgPSBpZGVudGlmaWVy
LmRhdGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVUb1Jvb3QobV9kYXRhYmFzZURpcmVjdG9yeVBhdGgs
ICJ2MCIpOworICAgIFN0cmluZyBvbGREYXRhYmFzZURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChvbGRPcmlnaW5EaXJlY3RvcnksIFNRTGl0ZUlEQkJhY2tp
bmdTdG9yZTo6ZW5jb2RlRGF0YWJhc2VOYW1lKGlkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCkpKTsK
KyAgICBTdHJpbmcgbmV3T3JpZ2luRGlyZWN0b3J5ID0gaWRlbnRpZmllci5kYXRhYmFzZURpcmVj
dG9yeVJlbGF0aXZlVG9Sb290KG1fZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCAidjEiKTsKKyAgICBT
dHJpbmcgZmlsZU5hbWVIYXNoID0gU1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0ZUhhc2hGb3JGaWxl
TmFtZShpZGVudGlmaWVyLmRhdGFiYXNlTmFtZSgpKTsKKyAgICBTdHJpbmcgbmV3RGF0YWJhc2VE
aXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobmV3T3JpZ2lu
RGlyZWN0b3J5LCBmaWxlTmFtZUhhc2gpOworICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3Rv
cmllcyhuZXdEYXRhYmFzZURpcmVjdG9yeSk7CisKKyAgICBpZiAoRmlsZVN5c3RlbTo6ZmlsZUV4
aXN0cyhvbGREYXRhYmFzZURpcmVjdG9yeSkpIHsKKyAgICAgICAgRmlsZVN5c3RlbTo6bW92ZUZp
bGUob2xkRGF0YWJhc2VEaXJlY3RvcnksIG5ld0RhdGFiYXNlRGlyZWN0b3J5KTsKKyAgICAgICAg
RmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3Rvcnkob2xkT3JpZ2luRGlyZWN0b3J5KTsKKyAg
ICB9CisKKyAgICByZXR1cm4gbmV3RGF0YWJhc2VEaXJlY3Rvcnk7Cit9CisKIGJvb2wgSURCU2Vy
dmVyOjpoYXNEYXRhYmFzZUFjdGl2aXRpZXNPbk1haW5UaHJlYWQoKSBjb25zdAogewogICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmgKaW5kZXggZDg4MzY0OWE1YzhkNWI1OWYwMmMyYmRh
Y2RkZTY3OGExY2EzYzQyZi4uYjQzMTNkOWExMDYwOGI3ZDM0MmY2YjA4NzViYzc2NDYyZjdjMDE1
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lE
QlNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9J
REJTZXJ2ZXIuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIlN0b3JhZ2VRdW90YU1hbmFn
ZXIuaCIKICNpbmNsdWRlICJVbmlxdWVJREJEYXRhYmFzZS5oIgogI2luY2x1ZGUgIlVuaXF1ZUlE
QkRhdGFiYXNlQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIlVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdl
ci5oIgogI2luY2x1ZGUgPHBhbC9IeXN0ZXJlc2lzQWN0aXZpdHkuaD4KICNpbmNsdWRlIDxwYWwv
U2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkVGFza0hhbmRsZXIuaD4KQEAg
LTQ4LDggKzQ5LDcgQEAgc3RydWN0IElEQkdldFJlY29yZERhdGE7CiAKIG5hbWVzcGFjZSBJREJT
ZXJ2ZXIgewogCi1jbGFzcyBJREJTZXJ2ZXIgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OworY2xhc3MgSURCU2VydmVyIDogcHVibGljIFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlciB7CiBw
dWJsaWM6CiAgICAgdXNpbmcgU3RvcmFnZVF1b3RhTWFuYWdlclNwYWNlUmVxdWVzdGVyID0gRnVu
Y3Rpb248U3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb24oY29uc3QgQ2xpZW50T3JpZ2luJiwg
dWludDY0X3Qgc3BhY2VSZXF1ZXN0ZWQpPjsKICAgICBXRUJDT1JFX0VYUE9SVCBJREJTZXJ2ZXIo
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCBTdG9y
YWdlUXVvdGFNYW5hZ2VyU3BhY2VSZXF1ZXN0ZXImJiwgTG9jayYpOwpAQCAtODgsMTUgKzg4LDEx
IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0QWxsRGF0YWJhc2VOYW1l
c0FuZFZlcnNpb25zKElEQkNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlk
ZW50aWZpZXImLCBjb25zdCBDbGllbnRPcmlnaW4mKTsKIAotCi0gICAgdm9pZCByZWdpc3RlckRh
dGFiYXNlQ29ubmVjdGlvbihVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mKTsKLSAgICB2b2lk
IHVucmVnaXN0ZXJEYXRhYmFzZUNvbm5lY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9u
Jik7Ci0gICAgdm9pZCByZWdpc3RlclRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNh
Y3Rpb24mKTsKLSAgICB2b2lkIHVucmVnaXN0ZXJUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFz
ZVRyYW5zYWN0aW9uJik7Ci0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8VW5pcXVlSURCRGF0YWJhc2U+
IGNsb3NlQW5kVGFrZVVuaXF1ZUlEQkRhdGFiYXNlKFVuaXF1ZUlEQkRhdGFiYXNlJik7Ci0KLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SURCQmFja2luZ1N0b3JlPiBjcmVhdGVCYWNraW5nU3RvcmUoY29u
c3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJik7CisgICAgdm9pZCByZWdpc3RlckNvbm5lY3Rpb24o
VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJikgZmluYWw7CisgICAgdm9pZCB1bnJlZ2lzdGVy
Q29ubmVjdGlvbihVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mKSBmaW5hbDsKKyAgICB2b2lk
IHJlZ2lzdGVyVHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYpIGZpbmFs
OworICAgIHZvaWQgdW5yZWdpc3RlclRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNh
Y3Rpb24mKSBmaW5hbDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SURCQmFja2luZ1N0b3JlPiBjcmVh
dGVCYWNraW5nU3RvcmUoY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJikgZmluYWw7CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCBIYXNoU2V0PFNlY3VyaXR5T3JpZ2luRGF0YT4gZ2V0T3JpZ2lucygp
IGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xvc2VBbmREZWxldGVEYXRhYmFzZXNN
b2RpZmllZFNpbmNlKFdhbGxUaW1lKTsKQEAgLTEwNCw3ICsxMDAsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBjbG9zZURhdGFiYXNlc0Zvck9yaWdpbnMoY29uc3QgVmVjdG9yPFNlY3VyaXR5T3JpZ2lu
RGF0YT4mLCBGdW5jdGlvbjxib29sKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IENs
aWVudE9yaWdpbiYpPiYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbmFtZU9yaWdpbihj
b25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGEmKTsKIAotICAgIFN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uIHJlcXVl
c3RTcGFjZShjb25zdCBDbGllbnRPcmlnaW4mLCB1aW50NjRfdCB0YXNrU2l6ZSk7CisgICAgdm9p
ZCByZXF1ZXN0U3BhY2UoY29uc3QgQ2xpZW50T3JpZ2luJiwgdWludDY0X3Qgc2l6ZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIHVpbnQ2NF90IGRpc2tVc2FnZShjb25zdCBTdHJpbmcmIHJvb3REaXJlY3RvcnksIGNvbnN0
IENsaWVudE9yaWdpbiYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNEYXRhYmFzZUFj
dGl2aXRpZXNPbk1haW5UaHJlYWQoKSBjb25zdDsKQEAgLTExNCw2ICsxMTAsNyBAQCBwcml2YXRl
OgogICAgIFVuaXF1ZUlEQkRhdGFiYXNlJiBnZXRPckNyZWF0ZVVuaXF1ZUlEQkRhdGFiYXNlKGNv
bnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYpOwogCiAgICAgdm9pZCB1cGdyYWRlRmlsZXNJZk5l
Y2Vzc2FyeSgpOworICAgIFN0cmluZyB1cGdyYWRlZERhdGFiYXNlRGlyZWN0b3J5KGNvbnN0IFdl
YkNvcmU6OklEQkRhdGFiYXNlSWRlbnRpZmllciYpOwogICAgIHZvaWQgcmVtb3ZlRGF0YWJhc2Vz
TW9kaWZpZWRTaW5jZUZvclZlcnNpb24oV2FsbFRpbWUsIGNvbnN0IFN0cmluZyYpOwogICAgIHZv
aWQgcmVtb3ZlRGF0YWJhc2VzV2l0aE9yaWdpbnNGb3JWZXJzaW9uKGNvbnN0IFZlY3RvcjxTZWN1
cml0eU9yaWdpbkRhdGE+JiwgY29uc3QgU3RyaW5nJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tp
bmdTdG9yZS5jcHAKaW5kZXggN2VlNDE0MGE4YWYxODAxMWM5NmJjYTdiNjA4ZDg2NTkxOGFmODVl
YS4uZDYzMzUwMzA5OTMwNTViOWIxMmI3ODQ1NjU1ZGE4MzM3MmIxYTU1MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdT
dG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01l
bW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTQ0LDkgKzQ0LDggQEAgbmFtZXNwYWNlIElEQlNl
cnZlciB7CiAvLyBUaGUgSW5kZXhlZERCIHNwZWMgc3RhdGVzIHRoZSBtYXhpbXVtIHZhbHVlIHlv
dSBjYW4gZ2V0IGZyb20gdGhlIGtleSBnZW5lcmF0b3IgaXMgMl41My4KIGNvbnN0ZXhwciB1aW50
NjRfdCBtYXhHZW5lcmF0ZWRLZXlWYWx1ZSA9IDB4MjAwMDAwMDAwMDAwMDA7CiAKLU1lbW9yeUlE
QkJhY2tpbmdTdG9yZTo6TWVtb3J5SURCQmFja2luZ1N0b3JlKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJiBpZGVudGlmaWVyKQorTWVtb3J5SURC
QmFja2luZ1N0b3JlOjpNZW1vcnlJREJCYWNraW5nU3RvcmUoY29uc3QgSURCRGF0YWJhc2VJZGVu
dGlmaWVyJiBpZGVudGlmaWVyKQogICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCi0gICAg
LCBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCiB7CiB9CiAKQEAgLTEzNCw3ICsxMzMsNyBAQCBJREJF
cnJvciBNZW1vcnlJREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJl
c291cmNlSWRlbnRpZmllciYgdAogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBDb25zdHJhaW50
RXJyb3IgfTsKIAogICAgIEFTU0VSVCghbV9vYmplY3RTdG9yZXNCeUlkZW50aWZpZXIuY29udGFp
bnMoaW5mby5pZGVudGlmaWVyKCkpKTsKLSAgICBhdXRvIG9iamVjdFN0b3JlID0gTWVtb3J5T2Jq
ZWN0U3RvcmU6OmNyZWF0ZShtX3Nlc3Npb25JRCwgaW5mbyk7CisgICAgYXV0byBvYmplY3RTdG9y
ZSA9IE1lbW9yeU9iamVjdFN0b3JlOjpjcmVhdGUoaW5mbyk7CiAKICAgICBtX2RhdGFiYXNlSW5m
by0+YWRkRXhpc3RpbmdPYmplY3RTdG9yZShpbmZvKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdT
dG9yZS5oCmluZGV4IDkyYWE3NjBkMjA3MzM3MThmYmRiOGMwNDRjZmU2N2RjYWIxNjUzMzUuLjlj
ODIxMWI1OTA2NTdhZjY4MDUxMjQyMjliMTAyOTExYzJjMDBlZWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURC
QmFja2luZ1N0b3JlLmgKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJJREJSZXNvdXJjZUlk
ZW50aWZpZXIuaCIKICNpbmNsdWRlICJJbmRleEtleS5oIgogI2luY2x1ZGUgIk1lbW9yeUJhY2tp
bmdTdG9yZVRyYW5zYWN0aW9uLmgiCi0jaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQxLDggKzQwLDgg
QEAgY2xhc3MgTWVtb3J5T2JqZWN0U3RvcmU7CiBjbGFzcyBNZW1vcnlJREJCYWNraW5nU3RvcmUg
ZmluYWwgOiBwdWJsaWMgSURCQmFja2luZ1N0b3JlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKLSAgICBNZW1vcnlJREJCYWNraW5nU3RvcmUoUEFMOjpTZXNzaW9uSUQs
IGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYpOwotICAgIH5NZW1vcnlJREJCYWNraW5nU3Rv
cmUoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBNZW1vcnlJREJCYWNraW5nU3RvcmUoY29uc3QgSURC
RGF0YWJhc2VJZGVudGlmaWVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgfk1lbW9yeUlEQkJhY2tp
bmdTdG9yZSgpOwogCiAgICAgSURCRXJyb3IgZ2V0T3JFc3RhYmxpc2hEYXRhYmFzZUluZm8oSURC
RGF0YWJhc2VJbmZvJikgZmluYWw7CiAgICAgdWludDY0X3QgZGF0YWJhc2VWZXJzaW9uKCkgZmlu
YWw7CkBAIC05Miw3ICs5MSw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1bnJlZ2lzdGVyT2JqZWN0
U3RvcmUoTWVtb3J5T2JqZWN0U3RvcmUmKTsKIAogICAgIElEQkRhdGFiYXNlSWRlbnRpZmllciBt
X2lkZW50aWZpZXI7Ci0gICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPElEQkRhdGFiYXNlSW5mbz4gbV9kYXRhYmFzZUluZm87CiAKICAgICBIYXNoTWFw
PElEQlJlc291cmNlSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPE1lbW9yeUJhY2tpbmdTdG9y
ZVRyYW5zYWN0aW9uPj4gbV90cmFuc2FjdGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmNwcApp
bmRleCA1YTUzZTIzMTUyNjg0ZGUzODBkYWExZTU5NzNmYjE5M2RmMDEyNjc3Li5kZmFiNjEzMzU3
ZTM1YzVlN2VmZmNlODU5NjI0Nzk3MGUyNmUwNTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5j
cHAKQEAgLTM4LDE4ICszOCwxNyBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0pTVmFs
dWUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NKU1ZhbHVlSW5saW5lcy5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTTG9jay5oPgotI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIG5hbWVzcGFj
ZSBJREJTZXJ2ZXIgewogCi1SZWY8TWVtb3J5T2JqZWN0U3RvcmU+IE1lbW9yeU9iamVjdFN0b3Jl
OjpjcmVhdGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBJREJPYmplY3RTdG9yZUlu
Zm8mIGluZm8pCitSZWY8TWVtb3J5T2JqZWN0U3RvcmU+IE1lbW9yeU9iamVjdFN0b3JlOjpjcmVh
dGUoY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiBpbmZvKQogewotICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IE1lbW9yeU9iamVjdFN0b3JlKHNlc3Npb25JRCwgaW5mbykpOworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IE1lbW9yeU9iamVjdFN0b3JlKGluZm8pKTsKIH0KIAotTWVtb3J5T2JqZWN0
U3RvcmU6Ok1lbW9yeU9iamVjdFN0b3JlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBJREJPYmplY3RT
dG9yZUluZm8mIGluZm8pCitNZW1vcnlPYmplY3RTdG9yZTo6TWVtb3J5T2JqZWN0U3RvcmUoY29u
c3QgSURCT2JqZWN0U3RvcmVJbmZvJiBpbmZvKQogICAgIDogbV9pbmZvKGluZm8pCiB7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5
T2JqZWN0U3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9N
ZW1vcnlPYmplY3RTdG9yZS5oCmluZGV4IDg3MWRlYjVlNGFlMDUxNDgyYjkwODk2ODk1ZWEzMWMy
NzZkZDMwODYuLmYwM2EzYTFiMGFkNTM0YjlmMzM5YzRmYmQ3ZTc0MGFkZjIyODQ3MDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmpl
Y3RTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9N
ZW1vcnlPYmplY3RTdG9yZS5oCkBAIC0zNCwxMCArMzQsNiBAQAogI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAotbmFtZXNwYWNlIFBBTCB7Ci1j
bGFzcyBTZXNzaW9uSUQ7Ci19Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSURCQ3Vy
c29ySW5mbzsKQEAgLTYxLDcgKzU3LDcgQEAgdHlwZWRlZiBIYXNoTWFwPElEQktleURhdGEsIFRo
cmVhZFNhZmVEYXRhQnVmZmVyLCBJREJLZXlEYXRhSGFzaCwgSURCS2V5RGF0YUhhc2gKIAogY2xh
c3MgTWVtb3J5T2JqZWN0U3RvcmUgOiBwdWJsaWMgUmVmQ291bnRlZDxNZW1vcnlPYmplY3RTdG9y
ZT4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8TWVtb3J5T2JqZWN0U3RvcmU+IGNyZWF0ZShQ
QUw6OlNlc3Npb25JRCwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJik7CisgICAgc3RhdGljIFJl
ZjxNZW1vcnlPYmplY3RTdG9yZT4gY3JlYXRlKGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYpOwog
CiAgICAgfk1lbW9yeU9iamVjdFN0b3JlKCk7CiAKQEAgLTEwOCw3ICsxMDQsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCByZW5hbWVJbmRleChNZW1vcnlJbmRleCYsIGNvbnN0IFN0cmluZyYgbmV3TmFt
ZSk7CiAKIHByaXZhdGU6Ci0gICAgTWVtb3J5T2JqZWN0U3RvcmUoUEFMOjpTZXNzaW9uSUQsIGNv
bnN0IElEQk9iamVjdFN0b3JlSW5mbyYpOworICAgIE1lbW9yeU9iamVjdFN0b3JlKGNvbnN0IElE
Qk9iamVjdFN0b3JlSW5mbyYpOwogCiAgICAgSURCS2V5RGF0YVNldDo6aXRlcmF0b3IgbG93ZXN0
SXRlcmF0b3JJblJhbmdlKGNvbnN0IElEQktleVJhbmdlRGF0YSYsIGJvb2wgcmV2ZXJzZSkgY29u
c3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggMjdjZDhlZWM1M2Ux
YWNmYzU5ODVlYzdiOGYwNWUyMjc2NDVjODc3ZS4uYTk5ZTc1YjhkYjMzYWEwOWRiNzhiZWE3YmE0
NDBiYmM4OWRjYjc3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTIz
NiwxMiArMjM2LDEwIEBAIHN0YXRpYyBBU0NJSUxpdGVyYWwgaW5kZXhJbmZvVGFibGVTY2hlbWFU
ZW1wKCkKICAgICByZXR1cm4gVEFCTEVfU0NIRU1BX1BSRUZJWCAiX1RlbXBfSW5kZXhJbmZvIiBJ
TkRFWF9JTkZPX1RBQkxFX1NDSEVNQV9TVUZGSVg7CiB9CiAKLVNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6U1FMaXRlSURCQmFja2luZ1N0b3JlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
SURCRGF0YWJhc2VJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNl
Um9vdERpcmVjdG9yeSkKLSAgICA6IG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKLSAgICAsIG1faWRl
bnRpZmllcihpZGVudGlmaWVyKQotICAgICwgbV9kYXRhYmFzZVJvb3REaXJlY3RvcnkoZGF0YWJh
c2VSb290RGlyZWN0b3J5KQorU1FMaXRlSURCQmFja2luZ1N0b3JlOjpTUUxpdGVJREJCYWNraW5n
U3RvcmUoY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIGRhdGFiYXNlRGlyZWN0b3J5KQorICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCisg
ICAgLCBtX2RhdGFiYXNlRGlyZWN0b3J5KGRhdGFiYXNlRGlyZWN0b3J5KQogewotICAgIG1fZGF0
YWJhc2VEaXJlY3RvcnkgPSBmdWxsRGF0YWJhc2VEaXJlY3RvcnlXaXRoVXBncmFkZSgpOwogfQog
CiBTUUxpdGVJREJCYWNraW5nU3RvcmU6On5TUUxpdGVJREJCYWNraW5nU3RvcmUoKQpAQCAtOTEy
LDE5ICs5MTAsMjkgQEAgc3RkOjp1bmlxdWVfcHRyPElEQkRhdGFiYXNlSW5mbz4gU1FMaXRlSURC
QmFja2luZ1N0b3JlOjpleHRyYWN0RXhpc3RpbmdEYXRhYmFzZUkKICAgICByZXR1cm4gZGF0YWJh
c2VJbmZvOwogfQogCi1TdHJpbmcgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpmaWxlbmFtZUZvckRh
dGFiYXNlTmFtZSgpIGNvbnN0CitTdHJpbmcgU1FMaXRlSURCQmFja2luZ1N0b3JlOjplbmNvZGVE
YXRhYmFzZU5hbWUoY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUpCiB7Ci0gICAgQVNTRVJUKCFt
X2lkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCkuaXNOdWxsKCkpOwotCi0gICAgaWYgKG1faWRlbnRp
Zmllci5kYXRhYmFzZU5hbWUoKS5pc0VtcHR5KCkpCisgICAgQVNTRVJUKCFkYXRhYmFzZU5hbWUu
aXNOdWxsKCkpOworICAgIGlmIChkYXRhYmFzZU5hbWUuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gIiUwMCI7CiAKLSAgICBTdHJpbmcgZmlsZW5hbWUgPSBGaWxlU3lzdGVtOjplbmNvZGVGb3JG
aWxlTmFtZShtX2lkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCkpOworICAgIFN0cmluZyBmaWxlbmFt
ZSA9IEZpbGVTeXN0ZW06OmVuY29kZUZvckZpbGVOYW1lKGRhdGFiYXNlTmFtZSk7CiAgICAgZmls
ZW5hbWUucmVwbGFjZSgnLicsICIlMkUiKTsKIAogICAgIHJldHVybiBmaWxlbmFtZTsKIH0KIAor
U3RyaW5nIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVjb2RlRGF0YWJhc2VOYW1lKGNvbnN0IFN0
cmluZyYgZW5jb2RlZE5hbWUpCit7CisgICAgaWYgKGVuY29kZWROYW1lID09ICIlMDAiX3MpCisg
ICAgICAgIHJldHVybiB7IH07CisKKyAgICBTdHJpbmcgbmFtZSA9IGVuY29kZWROYW1lOworICAg
IG5hbWUucmVwbGFjZSgiJTJFIl9zLCAiLiJfcyk7CisKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6
ZGVjb2RlRnJvbUZpbGVuYW1lKG5hbWUpOworfQorCiBTdHJpbmcgU1FMaXRlSURCQmFja2luZ1N0
b3JlOjpmdWxsRGF0YWJhc2VQYXRoRm9yRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgZnVsbERhdGFi
YXNlRGlyZWN0b3J5KQogewogICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQoZnVsbERhdGFiYXNlRGlyZWN0b3J5LCAiSW5kZXhlZERCLnNxbGl0ZTMiKTsKQEAg
LTk2NSwyMyArOTczLDYgQEAgc3RkOjpvcHRpb25hbDxJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9u
PiBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRhdGFiYXNlTmFtZUFuZFYKICAgICByZXR1cm4gSURC
RGF0YWJhc2VOYW1lQW5kVmVyc2lvbiB7IGRhdGFiYXNlTmFtZSwgKmRhdGFiYXNlVmVyc2lvbiB9
OwogfQogCi1TdHJpbmcgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpmdWxsRGF0YWJhc2VEaXJlY3Rv
cnlXaXRoVXBncmFkZSgpCi17Ci0gICAgU3RyaW5nIG9sZE9yaWdpbkRpcmVjdG9yeSA9IG1faWRl
bnRpZmllci5kYXRhYmFzZURpcmVjdG9yeVJlbGF0aXZlVG9Sb290KG1fZGF0YWJhc2VSb290RGly
ZWN0b3J5LCAidjAiKTsKLSAgICBTdHJpbmcgb2xkRGF0YWJhc2VEaXJlY3RvcnkgPSBGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQob2xkT3JpZ2luRGlyZWN0b3J5LCBmaWxlbmFt
ZUZvckRhdGFiYXNlTmFtZSgpKTsKLSAgICBTdHJpbmcgbmV3T3JpZ2luRGlyZWN0b3J5ID0gbV9p
ZGVudGlmaWVyLmRhdGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVUb1Jvb3QobV9kYXRhYmFzZVJvb3RE
aXJlY3RvcnksICJ2MSIpOwotICAgIFN0cmluZyBmaWxlTmFtZUhhc2ggPSBTUUxpdGVGaWxlU3lz
dGVtOjpjb21wdXRlSGFzaEZvckZpbGVOYW1lKG1faWRlbnRpZmllci5kYXRhYmFzZU5hbWUoKSk7
Ci0gICAgU3RyaW5nIG5ld0RhdGFiYXNlRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KG5ld09yaWdpbkRpcmVjdG9yeSwgZmlsZU5hbWVIYXNoKTsKLSAgICBG
aWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMobmV3RGF0YWJhc2VEaXJlY3RvcnkpOwotCi0g
ICAgaWYgKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMob2xkRGF0YWJhc2VEaXJlY3RvcnkpKSB7Ci0g
ICAgICAgIEZpbGVTeXN0ZW06Om1vdmVGaWxlKG9sZERhdGFiYXNlRGlyZWN0b3J5LCBuZXdEYXRh
YmFzZURpcmVjdG9yeSk7Ci0gICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5
KG9sZE9yaWdpbkRpcmVjdG9yeSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIG5ld0RhdGFiYXNlRGly
ZWN0b3J5OwotfQotCiBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldE9yRXN0YWJs
aXNoRGF0YWJhc2VJbmZvKElEQkRhdGFiYXNlSW5mbyYgaW5mbykKIHsKICAgICBMT0coSW5kZXhl
ZERCLCAiU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbyAt
IGRhdGFiYXNlICVzIiwgbV9pZGVudGlmaWVyLmRhdGFiYXNlTmFtZSgpLnV0ZjgoKS5kYXRhKCkp
OwpAQCAtOTkxLDExICs5ODIsMTEgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpn
ZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbyhJREJEYXRhYmFzZUluZm8mIGluZm8KICAgICAgICAg
cmV0dXJuIElEQkVycm9yIHsgfTsKICAgICB9CiAKLSAgICBTdHJpbmcgZGJGaWxlbmFtZSA9IGZ1
bGxEYXRhYmFzZVBhdGgoKTsKLQorICAgIFN0cmluZyBkYXRhYmFzZVBhdGggPSBmdWxsRGF0YWJh
c2VQYXRoKCk7CisgICAgRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKEZpbGVTeXN0ZW06
OnBhcmVudFBhdGgoZGF0YWJhc2VQYXRoKSk7CiAgICAgbV9zcWxpdGVEQiA9IG1ha2VVbmlxdWU8
U1FMaXRlRGF0YWJhc2U+KCk7Ci0gICAgaWYgKCFtX3NxbGl0ZURCLT5vcGVuKGRiRmlsZW5hbWUp
KSB7Ci0gICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIG9wZW4gU1FMaXRlIGRhdGFiYXNlIGF0
IHBhdGggJyVzJyIsIGRiRmlsZW5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAgaWYgKCFtX3NxbGl0
ZURCLT5vcGVuKGRhdGFiYXNlUGF0aCkpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8g
b3BlbiBTUUxpdGUgZGF0YWJhc2UgYXQgcGF0aCAnJXMnIiwgZGF0YWJhc2VQYXRoLnV0ZjgoKS5k
YXRhKCkpOwogICAgICAgICBjbG9zZVNRTGl0ZURCKCk7CiAgICAgfQogCkBAIC0xMDQ0LDcgKzEw
MzUsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldE9yRXN0YWJsaXNoRGF0
YWJhc2VJbmZvKElEQkRhdGFiYXNlSW5mbyYgaW5mbwogICAgICAgICBkYXRhYmFzZUluZm8gPSBj
cmVhdGVBbmRQb3B1bGF0ZUluaXRpYWxEYXRhYmFzZUluZm8oKTsKIAogICAgIGlmICghZGF0YWJh
c2VJbmZvKSB7Ci0gICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGVzdGFibGlzaCBJREIgZGF0
YWJhc2UgYXQgcGF0aCAnJXMnIiwgZGJGaWxlbmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAg
TE9HX0VSUk9SKCJVbmFibGUgdG8gZXN0YWJsaXNoIElEQiBkYXRhYmFzZSBhdCBwYXRoICclcyci
LCBkYXRhYmFzZVBhdGgudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIGNsb3NlU1FMaXRlREIoKTsK
ICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIGVzdGFi
bGlzaCBJREIgZGF0YWJhc2UgZmlsZSJfcyB9OwogICAgIH0KQEAgLTI3OTgsNyArMjc4OSw2IEBA
IHZvaWQgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVCYWNraW5nU3RvcmUoKQogCiAgICAg
U1FMaXRlRmlsZVN5c3RlbTo6ZGVsZXRlRGF0YWJhc2VGaWxlKGRhdGFiYXNlUGF0aCk7CiAgICAg
U1FMaXRlRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEYXRhYmFzZURpcmVjdG9yeShtX2RhdGFiYXNl
RGlyZWN0b3J5KTsKLSAgICBTUUxpdGVGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURhdGFiYXNlRGly
ZWN0b3J5KG1faWRlbnRpZmllci5kYXRhYmFzZURpcmVjdG9yeVJlbGF0aXZlVG9Sb290KG1fZGF0
YWJhc2VSb290RGlyZWN0b3J5KSk7CiB9CiAKIHZvaWQgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1
bnJlZ2lzdGVyQ3Vyc29yKFNRTGl0ZUlEQkN1cnNvciYgY3Vyc29yKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9y
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJh
Y2tpbmdTdG9yZS5oCmluZGV4IDJlZmU2YjJhMzQxOTkzYmIyNmZkZjkxY2ZmNmU3ZGVhOGRiYmVk
MzYuLjczMWE5YTQxOTM4NjVlM2M1ZjNjMzVlZDc1NzFiMTI4MmY3ODA5NjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5n
U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FM
aXRlSURCQmFja2luZ1N0b3JlLmgKQEAgLTUxLDkgKzUxLDggQEAgY2xhc3MgU1FMaXRlSURCQ3Vy
c29yOwogY2xhc3MgU1FMaXRlSURCQmFja2luZ1N0b3JlIGZpbmFsIDogcHVibGljIElEQkJhY2tp
bmdTdG9yZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgU1FM
aXRlSURCQmFja2luZ1N0b3JlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBJREJEYXRhYmFzZUlkZW50
aWZpZXImLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlUm9vdERpcmVjdG9yeSk7Ci0gICAgCi0gICAg
flNRTGl0ZUlEQkJhY2tpbmdTdG9yZSgpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIFNRTGl0
ZUlEQkJhY2tpbmdTdG9yZShjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImLCBjb25zdCBTdHJp
bmcmIGRhdGFiYXNlRGlyZWN0b3J5KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB+U1FMaXRlSURCQmFj
a2luZ1N0b3JlKCkgZmluYWw7CiAKICAgICBJREJFcnJvciBnZXRPckVzdGFibGlzaERhdGFiYXNl
SW5mbyhJREJEYXRhYmFzZUluZm8mKSBmaW5hbDsKICAgICB1aW50NjRfdCBkYXRhYmFzZVZlcnNp
b24oKSBmaW5hbDsKQEAgLTk0LDE4ICs5MywxNSBAQCBwdWJsaWM6CiAKICAgICBJREJFcnJvciBn
ZXRCbG9iUmVjb3Jkc0Zvck9iamVjdFN0b3JlUmVjb3JkKGludDY0X3Qgb2JqZWN0U3RvcmVSZWNv
cmQsIFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgVmVjdG9yPFN0cmluZz4mIGJsb2JGaWxlUGF0
aHMpOwogCi0gICAgc3RhdGljIHVpbnQ2NF90IGRhdGFiYXNlc1NpemVGb3JEaXJlY3RvcnkoY29u
c3QgU3RyaW5nJiBkaXJlY3RvcnkpOwotCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHVpbnQ2
NF90IGRhdGFiYXNlc1NpemVGb3JEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpOwog
ICAgIFN0cmluZyBkYXRhYmFzZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YWJhc2VE
aXJlY3Rvcnk7IH07Ci0gICAgc3RhdGljIFN0cmluZyBmdWxsRGF0YWJhc2VQYXRoRm9yRGlyZWN0
b3J5KGNvbnN0IFN0cmluZyYpOwotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPElEQkRhdGFiYXNl
TmFtZUFuZFZlcnNpb24+IGRhdGFiYXNlTmFtZUFuZFZlcnNpb25Gcm9tRmlsZShjb25zdCBTdHJp
bmcmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIGZ1bGxEYXRhYmFzZVBhdGhG
b3JEaXJlY3RvcnkoY29uc3QgU3RyaW5nJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0
cmluZyBlbmNvZGVEYXRhYmFzZU5hbWUoY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUpOworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcgZGVjb2RlRGF0YWJhc2VOYW1lKGNvbnN0IFN0
cmluZyYgZW5jb2RlZERhdGFiYXNlTmFtZSk7CiAKLSAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQoKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb25JRDsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPElEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24+IGRhdGFiYXNlTmFt
ZUFuZFZlcnNpb25Gcm9tRmlsZShjb25zdCBTdHJpbmcmKTsKIAogcHJpdmF0ZToKLSAgICBTdHJp
bmcgZmlsZW5hbWVGb3JEYXRhYmFzZU5hbWUoKSBjb25zdDsKLSAgICBTdHJpbmcgZnVsbERhdGFi
YXNlRGlyZWN0b3J5V2l0aFVwZ3JhZGUoKTsKLQogICAgIElEQkVycm9yIGVuc3VyZVZhbGlkUmVj
b3Jkc1RhYmxlKCk7CiAgICAgSURCRXJyb3IgZW5zdXJlVmFsaWRJbmRleFJlY29yZHNUYWJsZSgp
OwogICAgIElEQkVycm9yIGVuc3VyZVZhbGlkSW5kZXhSZWNvcmRzSW5kZXgoKTsKQEAgLTIwNiw3
ICsyMDIsNiBAQCBwcml2YXRlOgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNRTGl0ZVN0YXRlbWVu
dD4gbV9jYWNoZWRTdGF0ZW1lbnRzW3N0YXRpY19jYXN0PGludD4oU1FMOjpJbnZhbGlkKV07CiAK
LSAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKICAgICBJREJEYXRhYmFzZUlkZW50aWZp
ZXIgbV9pZGVudGlmaWVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJREJEYXRhYmFzZUluZm8+IG1f
ZGF0YWJhc2VJbmZvOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJREJEYXRhYmFzZUluZm8+IG1fb3Jp
Z2luYWxEYXRhYmFzZUluZm9CZWZvcmVWZXJzaW9uQ2hhbmdlOwpAQCAtMjE2LDcgKzIxMSw2IEBA
IHByaXZhdGU6CiAgICAgSGFzaE1hcDxJREJSZXNvdXJjZUlkZW50aWZpZXIsIHN0ZDo6dW5pcXVl
X3B0cjxTUUxpdGVJREJUcmFuc2FjdGlvbj4+IG1fdHJhbnNhY3Rpb25zOwogICAgIEhhc2hNYXA8
SURCUmVzb3VyY2VJZGVudGlmaWVyLCBTUUxpdGVJREJDdXJzb3IqPiBtX2N1cnNvcnM7CiAKLSAg
ICBTdHJpbmcgbV9kYXRhYmFzZVJvb3REaXJlY3Rvcnk7CiAgICAgU3RyaW5nIG1fZGF0YWJhc2VE
aXJlY3Rvcnk7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcAppbmRleCAyYjFlYWRiOWVh
NWM0NjRkMDI3NWVkMjIzZjUwMDNiN2JlZjE1NzMzLi4xNThiYTgzMTY2YTg5ZjdiNTBhYWVlZWYy
OGNhZWU2ZjhkNGVjMTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAKQEAgLTQyLDYgKzQy
LDcgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiU3RvcmFnZVF1b3RhTWFuYWdl
ci5oIgogI2luY2x1ZGUgIlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUg
IlVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlci5oIgogI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMzQsOCArMTM1LDggQEAgc3RhdGljIGlubGluZSB1aW50
NjRfdCBlc3RpbWF0ZVNpemUoY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiBpbmZvKQogICAgIHJl
dHVybiBzaXplOwogfQogCi1VbmlxdWVJREJEYXRhYmFzZTo6VW5pcXVlSURCRGF0YWJhc2UoSURC
U2VydmVyJiBzZXJ2ZXIsIGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYgaWRlbnRpZmllcikK
LSAgICA6IG1fc2VydmVyKHNlcnZlcikKK1VuaXF1ZUlEQkRhdGFiYXNlOjpVbmlxdWVJREJEYXRh
YmFzZShVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXImIG1hbmFnZXIsIGNvbnN0IElEQkRhdGFiYXNl
SWRlbnRpZmllciYgaWRlbnRpZmllcikKKyAgICA6IG1fbWFuYWdlcihtYW5hZ2VyKQogICAgICwg
bV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7
CkBAIC0xNjMsNiArMTY0LDExIEBAIGNvbnN0IElEQkRhdGFiYXNlSW5mbyYgVW5pcXVlSURCRGF0
YWJhc2U6OmluZm8oKSBjb25zdAogICAgIHJldHVybiAqbV9kYXRhYmFzZUluZm87CiB9CiAKK1Vu
aXF1ZUlEQkRhdGFiYXNlTWFuYWdlciogVW5pcXVlSURCRGF0YWJhc2U6Om1hbmFnZXIoKQorewor
ICAgIHJldHVybiBtX21hbmFnZXIuZ2V0KCk7Cit9CisKIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6
Om9wZW5EYXRhYmFzZUNvbm5lY3Rpb24oSURCQ29ubmVjdGlvblRvQ2xpZW50JiBjb25uZWN0aW9u
LCBjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEpCiB7CiAgICAgTE9HKEluZGV4ZWRE
QiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuRGF0YWJhc2VDb25uZWN0aW9uIik7CkBAIC0xODUs
MTcgKzE5MSw0NSBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtQ3VycmVudE9wZW5P
cGVyYXRpb24oKQogICAgIEFTU0VSVChtX2N1cnJlbnRPcGVuREJSZXF1ZXN0KTsKICAgICBBU1NF
UlQobV9jdXJyZW50T3BlbkRCUmVxdWVzdC0+aXNPcGVuUmVxdWVzdCgpKTsKIAorICAgIC8vIFdl
IGRvbid0IG5lZWQgdG8gY3JlYXRlIHRoZSBmaWxlIHNvIG5vIG5lZWQgdG8gZG8gc3BhY2UgY2hl
Y2suCisgICAgaWYgKG1fYmFja2luZ1N0b3JlKQorICAgICAgICByZXR1cm4gcGVyZm9ybUN1cnJl
bnRPcGVuT3BlcmF0aW9uQWZ0ZXJTcGFjZUNoZWNrKHRydWUpOworCisgICAgaWYgKCFtX21hbmFn
ZXIpCisgICAgICAgIHJldHVybiBwZXJmb3JtQ3VycmVudE9wZW5PcGVyYXRpb25BZnRlclNwYWNl
Q2hlY2soZmFsc2UpOworCisgICAgYXV0byByZXF1ZXN0SWRlbnRpZmllciA9IG1fY3VycmVudE9w
ZW5EQlJlcXVlc3QtPnJlcXVlc3REYXRhKCkucmVxdWVzdElkZW50aWZpZXIoKTsKKyAgICBpZiAo
bV9vcGVuREJSZXF1ZXN0c0ZvclNwYWNlQ2hlY2suY29udGFpbnMocmVxdWVzdElkZW50aWZpZXIp
KQorICAgICAgICByZXR1cm47CisKKyAgICBtX29wZW5EQlJlcXVlc3RzRm9yU3BhY2VDaGVjay5h
ZGQocmVxdWVzdElkZW50aWZpZXIpOworICAgIG1fbWFuYWdlci0+cmVxdWVzdFNwYWNlKG1faWRl
bnRpZmllci5vcmlnaW4oKSwgZGVmYXVsdFdyaXRlT3BlcmF0aW9uQ29zdCwgW3RoaXMsIHdlYWtU
aGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHJlcXVlc3RJZGVudGlmaWVyXShib29sIGdyYW50ZWQp
IG11dGFibGUgeworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIG1fb3BlbkRCUmVxdWVzdHNGb3JTcGFjZUNoZWNrLnJlbW92ZShyZXF1ZXN0SWRl
bnRpZmllcik7CisgICAgICAgIGlmIChtX2N1cnJlbnRPcGVuREJSZXF1ZXN0LT5yZXF1ZXN0RGF0
YSgpLnJlcXVlc3RJZGVudGlmaWVyKCkgIT0gcmVxdWVzdElkZW50aWZpZXIpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgcGVyZm9ybUN1cnJlbnRPcGVuT3BlcmF0aW9uQWZ0ZXJTcGFj
ZUNoZWNrKGdyYW50ZWQpOworICAgIH0pOworfQorCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpw
ZXJmb3JtQ3VycmVudE9wZW5PcGVyYXRpb25BZnRlclNwYWNlQ2hlY2soYm9vbCBpc0dyYW50ZWQp
Cit7CisgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtQ3VycmVu
dE9wZW5PcGVyYXRpb25BZnRlclNwYWNlUmVxdWVzdCAoJXApIiwgdGhpcyk7CisKICAgICBJREJF
cnJvciBiYWNraW5nU3RvcmVPcGVuRXJyb3I7CiAgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkgewot
ICAgICAgICAvLyBRdW90YSBjaGVjay4KLSAgICAgICAgYXV0byBkZWNpc2lvbiA9IG1fc2VydmVy
LnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIGRlZmF1bHRXcml0ZU9wZXJhdGlv
bkNvc3QpOwotICAgICAgICBpZiAoZGVjaXNpb24gPT0gU3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVj
aXNpb246OkRlbnkpCisgICAgICAgIGlmICghbV9tYW5hZ2VyKQorICAgICAgICAgICAgYmFja2lu
Z1N0b3JlT3BlbkVycm9yID0gSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciB9OworICAgICAg
ICBlbHNlIGlmICghaXNHcmFudGVkKQogICAgICAgICAgICAgYmFja2luZ1N0b3JlT3BlbkVycm9y
ID0gSURCRXJyb3IgeyBRdW90YUV4Y2VlZGVkRXJyb3IsIHF1b3RhRXJyb3JNZXNzYWdlTmFtZSgi
T3BlbkJhY2tpbmdTdG9yZSIpIH07CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgbV9iYWNr
aW5nU3RvcmUgPSBtX3NlcnZlci5jcmVhdGVCYWNraW5nU3RvcmUobV9pZGVudGlmaWVyKTsKKyAg
ICAgICAgICAgIG1fYmFja2luZ1N0b3JlID0gbV9tYW5hZ2VyLT5jcmVhdGVCYWNraW5nU3RvcmUo
bV9pZGVudGlmaWVyKTsKICAgICAgICAgICAgIElEQkRhdGFiYXNlSW5mbyBkYXRhYmFzZUluZm87
CiAgICAgICAgICAgICBiYWNraW5nU3RvcmVPcGVuRXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+Z2V0
T3JFc3RhYmxpc2hEYXRhYmFzZUluZm8oZGF0YWJhc2VJbmZvKTsKLSAgICAgICAgICAgIGlmIChi
YWNraW5nU3RvcmVPcGVuRXJyb3IuaXNOdWxsKCkpCisgICAgICAgICAgICBpZiAoIWJhY2tpbmdT
dG9yZU9wZW5FcnJvcikKICAgICAgICAgICAgICAgICBtX2RhdGFiYXNlSW5mbyA9IG1ha2VVbmlx
dWU8SURCRGF0YWJhc2VJbmZvPihkYXRhYmFzZUluZm8pOwogICAgICAgICAgICAgZWxzZSB7CiAg
ICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZ2V0IGRhdGFiYXNlIGluZm8gJyVz
JyIsIGJhY2tpbmdTdG9yZU9wZW5FcnJvci5tZXNzYWdlKCkudXRmOCgpLmRhdGEoKSk7CkBAIC0y
MDQsNyArMjM4LDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybUN1cnJlbnRPcGVu
T3BlcmF0aW9uKCkKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmICghYmFja2luZ1N0b3JlT3Bl
bkVycm9yLmlzTnVsbCgpKSB7CisgICAgaWYgKGJhY2tpbmdTdG9yZU9wZW5FcnJvcikgewogICAg
ICAgICBhdXRvIHJlc3VsdCA9IElEQlJlc3VsdERhdGE6OmVycm9yKG1fY3VycmVudE9wZW5EQlJl
cXVlc3QtPnJlcXVlc3REYXRhKCkucmVxdWVzdElkZW50aWZpZXIoKSwgYmFja2luZ1N0b3JlT3Bl
bkVycm9yKTsKICAgICAgICAgbV9jdXJyZW50T3BlbkRCUmVxdWVzdC0+Y29ubmVjdGlvbigpLmRp
ZE9wZW5EYXRhYmFzZShyZXN1bHQpOwogICAgICAgICBtX2N1cnJlbnRPcGVuREJSZXF1ZXN0ID0g
bnVsbHB0cjsKQEAgLTI5NCw3ICszMjgsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxl
dGVCYWNraW5nU3RvcmUoKQogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIExPRyhJ
bmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlQmFja2luZ1N0b3JlIik7CiAgICAg
Ci0gICAgYXV0byBiYWNraW5nU3RvcmUgPSBtX2JhY2tpbmdTdG9yZSA/IHN0ZDo6ZXhjaGFuZ2Uo
bV9iYWNraW5nU3RvcmUsIG51bGxwdHIpIDogbV9zZXJ2ZXIuY3JlYXRlQmFja2luZ1N0b3JlKG1f
aWRlbnRpZmllcik7CisgICAgYXV0byBiYWNraW5nU3RvcmUgPSBtX2JhY2tpbmdTdG9yZSA/IHN0
ZDo6ZXhjaGFuZ2UobV9iYWNraW5nU3RvcmUsIG51bGxwdHIpIDogbV9tYW5hZ2VyLT5jcmVhdGVC
YWNraW5nU3RvcmUobV9pZGVudGlmaWVyKTsKICAgICB1aW50NjRfdCBkZWxldGVkVmVyc2lvbiA9
IGJhY2tpbmdTdG9yZS0+ZGF0YWJhc2VWZXJzaW9uKCk7CiAgICAgYmFja2luZ1N0b3JlLT5kZWxl
dGVCYWNraW5nU3RvcmUoKTsKICAgICBkaWREZWxldGVCYWNraW5nU3RvcmUoZGVsZXRlZFZlcnNp
b24pOwpAQCAtNTQyLDIwICs1NzYsMzIgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6YWRkT3Bl
bkRhdGFiYXNlQ29ubmVjdGlvbihSZWY8VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW8KICAgICBt
X29wZW5EYXRhYmFzZUNvbm5lY3Rpb25zLmFkZChhZG9wdFJlZihjb25uZWN0aW9uLmxlYWtSZWYo
KSkpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZShVbmlx
dWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgY29uc3QgSURCT2JqZWN0U3Rv
cmVJbmZvJiBpbmZvLCBFcnJvckNhbGxiYWNrIGNhbGxiYWNrKQordm9pZCBVbmlxdWVJREJEYXRh
YmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJh
bnNhY3Rpb24sIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYgaW5mbywgRXJyb3JDYWxsYmFjayBj
YWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCBzcGFjZUNoZWNrUmVzdWx0KQogewogICAgIEFTU0VS
VCghaXNNYWluVGhyZWFkKCkpOwogICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFz
ZTo6Y3JlYXRlT2JqZWN0U3RvcmUiKTsKIAotICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7Cisg
ICAgaWYgKCFzcGFjZUNoZWNrUmVzdWx0KSB7CisgICAgICAgIGlmICghbV9tYW5hZ2VyKQorICAg
ICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7
CiAKLSAgICAvLyBRdW90YSBjaGVjay4KLSAgICBhdXRvIHRhc2tTaXplID0gZGVmYXVsdFdyaXRl
T3BlcmF0aW9uQ29zdCArIGVzdGltYXRlU2l6ZShpbmZvKTsKLSAgICBpZiAobV9zZXJ2ZXIucmVx
dWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwgdGFza1NpemUpID09IFN0b3JhZ2VRdW90
YU1hbmFnZXI6OkRlY2lzaW9uOjpEZW55KSB7CisgICAgICAgIGF1dG8gdGFza1NpemUgPSBkZWZh
dWx0V3JpdGVPcGVyYXRpb25Db3N0ICsgZXN0aW1hdGVTaXplKGluZm8pOworICAgICAgICBtX21h
bmFnZXItPnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIHRhc2tTaXplLCBbdGhp
cywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgd2Vha1RyYW5zYWN0aW9uID0gV2Vha1B0
ciB7IHRyYW5zYWN0aW9uIH0sIGluZm8sIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJv
b2wgZ3JhbnRlZCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICF3ZWFr
VHJhbnNhY3Rpb24pCisgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsg
SW52YWxpZFN0YXRlRXJyb3IsICJEYXRhYmFzZSBvciB0cmFuc2FjdGlvbiBpcyBjbG9zZWQiIH0p
OworICAgICAgICAgICAgY3JlYXRlT2JqZWN0U3RvcmUoKndlYWtUcmFuc2FjdGlvbiwgaW5mbywg
V1RGTW92ZShjYWxsYmFjayksIGdyYW50ZWQpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGlmICghc3BhY2VDaGVja1Jlc3VsdC52YWx1ZSgpKSB7CiAgICAgICAg
IGNhbGxiYWNrKElEQkVycm9yIHsgUXVvdGFFeGNlZWRlZEVycm9yLCBxdW90YUVycm9yTWVzc2Fn
ZU5hbWUoIkNyZWF0ZU9iamVjdFN0b3JlIikgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
KyAgICBpZiAoIW1fYmFja2luZ1N0b3JlKQorICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJy
b3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkJhY2tpbmcgc3RvcmUgaGFzIGNsb3NlZCIgfSk7CisK
ICAgICBhdXRvIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPmNyZWF0ZU9iamVjdFN0b3JlKHRyYW5z
YWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCksIGluZm8pOwogICAgIGlmIChlcnJvci5pc051bGwo
KSkKICAgICAgICAgbV9kYXRhYmFzZUluZm8tPmFkZEV4aXN0aW5nT2JqZWN0U3RvcmUoaW5mbyk7
CkBAIC01NjMsMTggKzYwOSwzNCBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVPYmpl
Y3RTdG9yZShVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdAogICAgIGNhbGxi
YWNrKGVycm9yKTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlT2JqZWN0U3Rv
cmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIGNvbnN0IFN0cmlu
ZyYgb2JqZWN0U3RvcmVOYW1lLCBFcnJvckNhbGxiYWNrIGNhbGxiYWNrKQordm9pZCBVbmlxdWVJ
REJEYXRhYmFzZTo6ZGVsZXRlT2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlv
biYgdHJhbnNhY3Rpb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lLCBFcnJvckNhbGxi
YWNrIGNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0IHNwYWNlQ2hlY2tSZXN1bHQpCiB7CiAgICAg
QVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRh
dGFiYXNlOjpkZWxldGVPYmplY3RTdG9yZSIpOwogCisgICAgaWYgKCFzcGFjZUNoZWNrUmVzdWx0
KSB7CisgICAgICAgIGlmICghbV9tYW5hZ2VyKQorICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNr
KElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7CisKKyAgICAgICAgbV9tYW5hZ2VyLT5y
ZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCAwLCBbdGhpcywgd2Vha1RoaXMgPSBX
ZWFrUHRyIHsgKnRoaXMgfSwgd2Vha1RyYW5zYWN0aW9uID0gV2Vha1B0ciB7IHRyYW5zYWN0aW9u
IH0sIG9iamVjdFN0b3JlTmFtZSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBn
cmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMgfHwgIXdlYWtUcmFu
c2FjdGlvbikKKyAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZh
bGlkU3RhdGVFcnJvciwgIkRhdGFiYXNlIG9yIHRyYW5zYWN0aW9uIGlzIGNsb3NlZCIgfSk7CisK
KyAgICAgICAgICAgIGRlbGV0ZU9iamVjdFN0b3JlKCp3ZWFrVHJhbnNhY3Rpb24sIG9iamVjdFN0
b3JlTmFtZSwgV1RGTW92ZShjYWxsYmFjayksIGdyYW50ZWQpOworICAgICAgICB9KTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChzcGFjZUNoZWNrUmVzdWx0LnZhbHVlKCkp
OwogICAgIGF1dG8qIGluZm8gPSBtX2RhdGFiYXNlSW5mby0+aW5mb0ZvckV4aXN0aW5nT2JqZWN0
U3RvcmUob2JqZWN0U3RvcmVOYW1lKTsKICAgICBpZiAoIWluZm8pIHsKICAgICAgICAgY2FsbGJh
Y2soSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIGRlbGV0ZSBub24tZXhpc3Rh
bnQgb2JqZWN0IHN0b3JlIl9zIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgQVNT
RVJUKG1fYmFja2luZ1N0b3JlKTsKKyAgICBpZiAoIW1fYmFja2luZ1N0b3JlKQorICAgICAgICBy
ZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkJhY2tpbmcgc3Rv
cmUgaXMgY2xvc2VkIiB9KTsKKwogICAgIGF1dG8gZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+ZGVs
ZXRlT2JqZWN0U3RvcmUodHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSwgaW5mby0+aWRl
bnRpZmllcigpKTsKICAgICBpZiAoZXJyb3IuaXNOdWxsKCkpCiAgICAgICAgIG1fZGF0YWJhc2VJ
bmZvLT5kZWxldGVPYmplY3RTdG9yZShpbmZvLT5pZGVudGlmaWVyKCkpOwpAQCAtNTgyLDE0ICs2
NDQsMjYgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlT2JqZWN0U3RvcmUoVW5pcXVl
SURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3QKICAgICBjYWxsYmFjayhlcnJvcik7CiB9
CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnJlbmFtZU9iamVjdFN0b3JlKFVuaXF1ZUlEQkRh
dGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSwgRXJyb3JDYWxsYmFjayBjYWxsYmFjaykKK3Zv
aWQgVW5pcXVlSURCRGF0YWJhc2U6OnJlbmFtZU9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNl
VHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgbmV3TmFtZSwgRXJyb3JDYWxsYmFjayBjYWxsYmFjaywgU3BhY2VDaGVj
a1Jlc3VsdCBzcGFjZUNoZWNrUmVzdWx0KQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkp
OwogICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6cmVuYW1lT2JqZWN0U3Rv
cmUiKTsKIAotICAgIC8vIFF1b3RhIGNoZWNrLgotICAgIGF1dG8gdGFza1NpemUgPSBkZWZhdWx0
V3JpdGVPcGVyYXRpb25Db3N0ICsgbmV3TmFtZS5zaXplSW5CeXRlcygpOwotICAgIGlmIChtX3Nl
cnZlci5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCB0YXNrU2l6ZSkgPT0gU3Rv
cmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb246OkRlbnkpIHsKKyAgICBpZiAoIXNwYWNlQ2hlY2tS
ZXN1bHQpIHsKKyAgICAgICAgaWYgKCFtX21hbmFnZXIpCisgICAgICAgICAgICByZXR1cm4gY2Fs
bGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciB9KTsKKworICAgICAgICBhdXRvIHRh
c2tTaXplID0gZGVmYXVsdFdyaXRlT3BlcmF0aW9uQ29zdCArIG5ld05hbWUuc2l6ZUluQnl0ZXMo
KTsKKyAgICAgICAgbV9tYW5hZ2VyLT5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigp
LCB0YXNrU2l6ZSwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHdlYWtUcmFu
c2FjdGlvbiA9IFdlYWtQdHIgeyB0cmFuc2FjdGlvbiB9LCBvYmplY3RTdG9yZUlkZW50aWZpZXIs
IG5ld05hbWUsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgZ3JhbnRlZCkgbXV0
YWJsZSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICF3ZWFrVHJhbnNhY3Rpb24pCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJy
b3IsICJEYXRhYmFzZSBvciB0cmFuc2FjdGlvbiBpcyBjbG9zZWQiIH0pOworCisgICAgICAgICAg
ICByZW5hbWVPYmplY3RTdG9yZSgqd2Vha1RyYW5zYWN0aW9uLCBvYmplY3RTdG9yZUlkZW50aWZp
ZXIsIG5ld05hbWUsIFdURk1vdmUoY2FsbGJhY2spLCBncmFudGVkKTsKKyAgICAgICAgfSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIXNwYWNlQ2hlY2tSZXN1bHQudmFsdWUo
KSkgewogICAgICAgICBjYWxsYmFjayhJREJFcnJvcihRdW90YUV4Y2VlZGVkRXJyb3IsIHF1b3Rh
RXJyb3JNZXNzYWdlTmFtZSgiUmVuYW1lT2JqZWN0U3RvcmUiKSkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQpAQCAtNjAwLDcgKzY3NCw5IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnJlbmFt
ZU9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBBU1NFUlQobV9iYWNraW5nU3RvcmUpOworICAgIGlm
ICghbV9iYWNraW5nU3RvcmUpCisgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IElu
dmFsaWRTdGF0ZUVycm9yLCAiQmFja2luZyBzdG9yZSBpcyBjbG9zZWQiIH0pOworCiAgICAgYXV0
byBlcnJvciA9IG1fYmFja2luZ1N0b3JlLT5yZW5hbWVPYmplY3RTdG9yZSh0cmFuc2FjdGlvbi5p
bmZvKCkuaWRlbnRpZmllcigpLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIG5ld05hbWUpOwogICAg
IGlmIChlcnJvci5pc051bGwoKSkKICAgICAgICAgbV9kYXRhYmFzZUluZm8tPnJlbmFtZU9iamVj
dFN0b3JlKG9iamVjdFN0b3JlSWRlbnRpZmllciwgbmV3TmFtZSk7CkBAIC02MDgsMzAgKzY4NCw1
OSBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpyZW5hbWVPYmplY3RTdG9yZShVbmlxdWVJREJE
YXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdAogICAgIGNhbGxiYWNrKGVycm9yKTsKIH0KIAot
dm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y2xlYXJPYmplY3RTdG9yZShVbmlxdWVJREJEYXRhYmFz
ZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVy
LCBFcnJvckNhbGxiYWNrIGNhbGxiYWNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y2xlYXJP
YmplY3RTdG9yZShVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgdWlu
dDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBFcnJvckNhbGxiYWNrIGNhbGxiYWNrLCBTcGFj
ZUNoZWNrUmVzdWx0IHNwYWNlQ2hlY2tSZXN1bHQpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJl
YWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpjbGVhck9iamVj
dFN0b3JlIik7CiAKLSAgICBBU1NFUlQobV9iYWNraW5nU3RvcmUpOwotICAgIGF1dG8gZXJyb3Ig
PSBtX2JhY2tpbmdTdG9yZS0+Y2xlYXJPYmplY3RTdG9yZSh0cmFuc2FjdGlvbi5pbmZvKCkuaWRl
bnRpZmllcigpLCBvYmplY3RTdG9yZUlkZW50aWZpZXIpOworICAgIGlmICghc3BhY2VDaGVja1Jl
c3VsdCkgeworICAgICAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAgICAgICAgIHJldHVybiBjYWxs
YmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yIH0pOworCisgICAgICAgIG1fbWFuYWdl
ci0+cmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwgMCwgW3RoaXMsIHdlYWtUaGlz
ID0gV2Vha1B0ciB7ICp0aGlzIH0sIHdlYWtUcmFuc2FjdGlvbiA9IFdlYWtQdHIgeyB0cmFuc2Fj
dGlvbiB9LCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayldKGJvb2wgZ3JhbnRlZCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzIHx8
ICF3ZWFrVHJhbnNhY3Rpb24pCisgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVy
cm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJEYXRhYmFzZSBvciB0cmFuc2FjdGlvbiBpcyBjbG9z
ZWQiIH0pOworCisgICAgICAgICAgICBjbGVhck9iamVjdFN0b3JlKCp3ZWFrVHJhbnNhY3Rpb24s
IG9iamVjdFN0b3JlSWRlbnRpZmllciwgV1RGTW92ZShjYWxsYmFjayksIGdyYW50ZWQpOworICAg
ICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChzcGFjZUNoZWNr
UmVzdWx0LnZhbHVlKCkpOworICAgIGlmICghbV9iYWNraW5nU3RvcmUpCisgICAgICAgIHJldHVy
biBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiQmFja2luZyBzdG9yZSBp
cyBjbG9zZWQiIH0pOwogCisgICAgYXV0byBlcnJvciA9IG1fYmFja2luZ1N0b3JlLT5jbGVhck9i
amVjdFN0b3JlKHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCksIG9iamVjdFN0b3JlSWRl
bnRpZmllcik7CiAgICAgY2FsbGJhY2soZXJyb3IpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFi
YXNlOjpjcmVhdGVJbmRleChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlv
biwgY29uc3QgSURCSW5kZXhJbmZvJiBpbmZvLCBFcnJvckNhbGxiYWNrIGNhbGxiYWNrKQordm9p
ZCBVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlSW5kZXgoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2Fj
dGlvbiYgdHJhbnNhY3Rpb24sIGNvbnN0IElEQkluZGV4SW5mbyYgaW5mbywgRXJyb3JDYWxsYmFj
ayBjYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCBzcGFjZUNoZWNrUmVzdWx0KQogewogICAgIEFT
U0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRh
YmFzZTo6Y3JlYXRlSW5kZXgiKTsKIAotICAgIC8vIFF1b3RhIGNoZWNrLgotICAgIGF1dG8gdGFz
a1NpemUgPSBkZWZhdWx0V3JpdGVPcGVyYXRpb25Db3N0ICsgZXN0aW1hdGVTaXplKGluZm8pOwot
ICAgIGlmIChtX3NlcnZlci5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCB0YXNr
U2l6ZSkgPT0gU3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb246OkRlbnkpIHsKKyAgICBpZiAo
IXNwYWNlQ2hlY2tSZXN1bHQpIHsKKyAgICAgICAgaWYgKCFtX21hbmFnZXIpCisgICAgICAgICAg
ICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciB9KTsKKworICAg
ICAgICBhdXRvIHRhc2tTaXplID0gZGVmYXVsdFdyaXRlT3BlcmF0aW9uQ29zdCArIGVzdGltYXRl
U2l6ZShpbmZvKTsKKyAgICAgICAgbV9tYW5hZ2VyLT5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVy
Lm9yaWdpbigpLCB0YXNrU2l6ZSwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0s
IHdlYWtUcmFuc2FjdGlvbiA9IFdlYWtQdHIgeyB0cmFuc2FjdGlvbiB9LCBpbmZvLCBjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIGdyYW50ZWQpIG11dGFibGUgeworICAgICAgICAg
ICAgaWYgKCF3ZWFrVGhpcyB8fCAhd2Vha1RyYW5zYWN0aW9uKQorICAgICAgICAgICAgICAgIHJl
dHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiRGF0YWJhc2Ugb3Ig
dHJhbnNhY3Rpb24gaXMgY2xvc2VkIiB9KTsKKworICAgICAgICAgICAgY3JlYXRlSW5kZXgoKndl
YWtUcmFuc2FjdGlvbiwgaW5mbywgV1RGTW92ZShjYWxsYmFjayksIGdyYW50ZWQpOworICAgICAg
ICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghc3BhY2VDaGVja1Jlc3Vs
dC52YWx1ZSgpKSB7CiAgICAgICAgIGNhbGxiYWNrKElEQkVycm9yIHsgUXVvdGFFeGNlZWRlZEVy
cm9yLCBxdW90YUVycm9yTWVzc2FnZU5hbWUoIkNyZWF0ZUluZGV4IikgfSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBBU1NFUlQobV9iYWNraW5nU3RvcmUpOworICAgIGlmICghbV9i
YWNraW5nU3RvcmUpCisgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRT
dGF0ZUVycm9yLCAiQmFja2luZyBzdG9yZSBpcyBjbG9zZWQiIH0pOworCiAgICAgYXV0byBlcnJv
ciA9IG1fYmFja2luZ1N0b3JlLT5jcmVhdGVJbmRleCh0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRp
ZmllcigpLCBpbmZvKTsKICAgICBpZiAoZXJyb3IuaXNOdWxsKCkpIHsKICAgICAgICAgQVNTRVJU
KG1fZGF0YWJhc2VJbmZvKTsKQEAgLTY0NCwxMSArNzQ5LDI4IEBAIHZvaWQgVW5pcXVlSURCRGF0
YWJhc2U6OmNyZWF0ZUluZGV4KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0
aW9uLCBjCiAgICAgY2FsbGJhY2soZXJyb3IpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNl
OjpkZWxldGVJbmRleChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwg
dWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGluZGV4TmFtZSwg
RXJyb3JDYWxsYmFjayBjYWxsYmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZUlu
ZGV4KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCB1aW50NjRfdCBv
YmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lLCBFcnJvckNhbGxi
YWNrIGNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0IHNwYWNlQ2hlY2tSZXN1bHQpCiB7CiAgICAg
QVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRh
dGFiYXNlOjpkZWxldGVJbmRleCIpOwogCisgICAgaWYgKCFzcGFjZUNoZWNrUmVzdWx0KSB7Cisg
ICAgICAgIGlmICghbV9tYW5hZ2VyKQorICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVy
cm9yIHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7CisKKyAgICAgICAgbV9tYW5hZ2VyLT5yZXF1ZXN0
U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCAwLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRy
IHsgKnRoaXMgfSwgd2Vha1RyYW5zYWN0aW9uID0gV2Vha1B0ciB7IHRyYW5zYWN0aW9uIH0sIG9i
amVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhOYW1lLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spXShib29sIGdyYW50ZWQpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8
fCAhd2Vha1RyYW5zYWN0aW9uKQorICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJF
cnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiRGF0YWJhc2Ugb3IgdHJhbnNhY3Rpb24gaXMgY2xv
c2VkIiB9KTsKKworICAgICAgICAgICAgZGVsZXRlSW5kZXgoKndlYWtUcmFuc2FjdGlvbiwgb2Jq
ZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleE5hbWUsIFdURk1vdmUoY2FsbGJhY2spLCBncmFudGVk
KTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQoc3Bh
Y2VDaGVja1Jlc3VsdC52YWx1ZSgpKTsKKyAgICBpZiAoIW1fYmFja2luZ1N0b3JlKQorICAgICAg
ICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkJhY2tpbmcg
c3RvcmUgaXMgY2xvc2VkIiB9KTsKKwogICAgIGF1dG8qIG9iamVjdFN0b3JlSW5mbyA9IG1fZGF0
YWJhc2VJbmZvLT5pbmZvRm9yRXhpc3RpbmdPYmplY3RTdG9yZShvYmplY3RTdG9yZUlkZW50aWZp
ZXIpOwogICAgIGlmICghb2JqZWN0U3RvcmVJbmZvKSB7CiAgICAgICAgIGNhbGxiYWNrKElEQkVy
cm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBkZWxldGUgaW5kZXggZnJvbSBub24tZXhp
c3RhbnQgb2JqZWN0IHN0b3JlIl9zIH0pOwpAQCAtNjYwLDkgKzc4Miw4IEBAIHZvaWQgVW5pcXVl
SURCRGF0YWJhc2U6OmRlbGV0ZUluZGV4KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRy
YW5zYWN0aW9uLCB1CiAgICAgICAgIGNhbGxiYWNrKElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAi
QXR0ZW1wdCB0byBkZWxldGUgbm9uLWV4aXN0YW50IGluZGV4Il9zIH0pOwogICAgICAgICByZXR1
cm47CiAgICAgfQotICAgIGF1dG8gaW5kZXhJZGVudGlmaWVyID0gaW5kZXhJbmZvLT5pZGVudGlm
aWVyKCk7CiAKLSAgICBBU1NFUlQobV9iYWNraW5nU3RvcmUpOworICAgIGF1dG8gaW5kZXhJZGVu
dGlmaWVyID0gaW5kZXhJbmZvLT5pZGVudGlmaWVyKCk7CiAgICAgYXV0byBlcnJvciA9IG1fYmFj
a2luZ1N0b3JlLT5kZWxldGVJbmRleCh0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpLCBv
YmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4SWRlbnRpZmllcik7CiAgICAgaWYgKGVycm9yLmlz
TnVsbCgpKQogICAgICAgICBvYmplY3RTdG9yZUluZm8tPmRlbGV0ZUluZGV4KGluZGV4SWRlbnRp
Zmllcik7CkBAIC02NzAsMTggKzc5MSwzMyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxl
dGVJbmRleChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgdQogICAg
IGNhbGxiYWNrKGVycm9yKTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cmVuYW1lSW5k
ZXgoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIHVpbnQ2NF90IG9i
amVjdFN0b3JlSWRlbnRpZmllciwgdWludDY0X3QgaW5kZXhJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIG5ld05hbWUsIEVycm9yQ2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFi
YXNlOjpyZW5hbWVJbmRleChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlv
biwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRleElkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSwgRXJyb3JDYWxsYmFjayBjYWxsYmFjaywgU3BhY2VD
aGVja1Jlc3VsdCBzcGFjZUNoZWNrUmVzdWx0KQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFk
KCkpOwogICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6cmVuYW1lSW5kZXgi
KTsKIAotICAgIC8vIFF1b3RhIGNoZWNrLgotICAgIGF1dG8gdGFza1NpemUgPSBkZWZhdWx0V3Jp
dGVPcGVyYXRpb25Db3N0ICsgbmV3TmFtZS5zaXplSW5CeXRlcygpOwotICAgIGlmIChtX3NlcnZl
ci5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCB0YXNrU2l6ZSkgPT0gU3RvcmFn
ZVF1b3RhTWFuYWdlcjo6RGVjaXNpb246OkRlbnkpIHsKKyAgICBpZiAoIXNwYWNlQ2hlY2tSZXN1
bHQpIHsKKyAgICAgICAgaWYgKCFtX21hbmFnZXIpCisgICAgICAgICAgICByZXR1cm4gY2FsbGJh
Y2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciB9KTsKKworICAgICAgICBhdXRvIHRhc2tT
aXplID0gZGVmYXVsdFdyaXRlT3BlcmF0aW9uQ29zdCArIG5ld05hbWUuc2l6ZUluQnl0ZXMoKTsK
KyAgICAgICAgbV9tYW5hZ2VyLT5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCB0
YXNrU2l6ZSwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHdlYWtUcmFuc2Fj
dGlvbiA9IFdlYWtQdHIgeyB0cmFuc2FjdGlvbiB9LCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGlu
ZGV4SWRlbnRpZmllciwgbmV3TmFtZSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9v
bCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMgfHwgIXdlYWtU
cmFuc2FjdGlvbikKKyAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJ
bnZhbGlkU3RhdGVFcnJvciwgIkRhdGFiYXNlIG9yIHRyYW5zYWN0aW9uIGlzIGNsb3NlZCIgfSk7
CisKKyAgICAgICAgICAgIHJlbmFtZUluZGV4KCp3ZWFrVHJhbnNhY3Rpb24sIG9iamVjdFN0b3Jl
SWRlbnRpZmllciwgaW5kZXhJZGVudGlmaWVyLCBuZXdOYW1lLCBXVEZNb3ZlKGNhbGxiYWNrKSwg
Z3JhbnRlZCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYg
KCFzcGFjZUNoZWNrUmVzdWx0LnZhbHVlKCkpIHsKICAgICAgICAgY2FsbGJhY2soSURCRXJyb3Ig
eyBRdW90YUV4Y2VlZGVkRXJyb3IsIHF1b3RhRXJyb3JNZXNzYWdlTmFtZSgiUmVuYW1lSW5kZXgi
KSB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIGlmICghbV9iYWNraW5nU3RvcmUp
CisgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAi
QmFja2luZyBzdG9yZSBpcyBjbG9zZWQiIH0pOworCiAgICAgYXV0byogb2JqZWN0U3RvcmVJbmZv
ID0gbV9kYXRhYmFzZUluZm8tPmluZm9Gb3JFeGlzdGluZ09iamVjdFN0b3JlKG9iamVjdFN0b3Jl
SWRlbnRpZmllcik7CiAgICAgaWYgKCFvYmplY3RTdG9yZUluZm8pIHsKICAgICAgICAgY2FsbGJh
Y2soSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIHJlbmFtZSBpbmRleCBpbiBu
b24tZXhpc3RhbnQgb2JqZWN0IHN0b3JlIl9zIH0pOwpAQCAtNjk0LDcgKzgzMCw2IEBAIHZvaWQg
VW5pcXVlSURCRGF0YWJhc2U6OnJlbmFtZUluZGV4KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rp
b24mIHRyYW5zYWN0aW9uLCB1CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBBU1NFUlQo
bV9iYWNraW5nU3RvcmUpOwogICAgIGF1dG8gZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+cmVuYW1l
SW5kZXgodHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSwgb2JqZWN0U3RvcmVJZGVudGlm
aWVyLCBpbmRleElkZW50aWZpZXIsIG5ld05hbWUpOwogICAgIGlmIChlcnJvci5pc051bGwoKSkK
ICAgICAgICAgaW5kZXhJbmZvLT5yZW5hbWUobmV3TmFtZSk7CkBAIC03MDIsNiArODM3LDggQEAg
dm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cmVuYW1lSW5kZXgoVW5pcXVlSURCRGF0YWJhc2VUcmFu
c2FjdGlvbiYgdHJhbnNhY3Rpb24sIHUKICAgICBjYWxsYmFjayhlcnJvcik7CiB9CiAKK3N0YXRp
YyBpbnQgbXlDb3VudCA9IDA7CisKIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnB1dE9yQWRkKGNv
bnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5RGF0YSYga2V5RGF0
YSwgY29uc3QgSURCVmFsdWUmIHZhbHVlLCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRl
TW9kZSBvdmVyd3JpdGVNb2RlLCBLZXlEYXRhQ2FsbGJhY2sgY2FsbGJhY2spCiB7CiAgICAgQVNT
RVJUKCFpc01haW5UaHJlYWQoKSk7CkBAIC03MDksMTcgKzg0NiwxOSBAQCB2b2lkIFVuaXF1ZUlE
QkRhdGFiYXNlOjpwdXRPckFkZChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNv
bnN0IElEQktleQogCiAgICAgQVNTRVJUKG1fZGF0YWJhc2VJbmZvKTsKIAotICAgIElEQktleURh
dGEgdXNlZEtleTsKLSAgICBJREJFcnJvciBlcnJvcjsKKyAgICBpZiAoIW1fYmFja2luZ1N0b3Jl
KQorICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwg
IkJhY2tpbmcgc3RvcmUgaXMgY2xvc2VkIiB9LCBrZXlEYXRhKTsKIAotICAgIEFTU0VSVChtX2Jh
Y2tpbmdTdG9yZSk7CiAgICAgYXV0byBvYmplY3RTdG9yZUlkZW50aWZpZXIgPSByZXF1ZXN0RGF0
YS5vYmplY3RTdG9yZUlkZW50aWZpZXIoKTsKICAgICBhdXRvKiBvYmplY3RTdG9yZUluZm8gPSBt
X2JhY2tpbmdTdG9yZS0+aW5mb0Zvck9iamVjdFN0b3JlKG9iamVjdFN0b3JlSWRlbnRpZmllcik7
Ci0gICAgaWYgKCFvYmplY3RTdG9yZUluZm8pIHsKLSAgICAgICAgY2FsbGJhY2soSURCRXJyb3Ig
eyBJbnZhbGlkU3RhdGVFcnJvciwgIk9iamVjdCBzdG9yZSBjYW5ub3QgYmUgZm91bmQgaW4gdGhl
IGJhY2tpbmcgc3RvcmUiX3MgfSwgdXNlZEtleSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Cisg
ICAgaWYgKCFvYmplY3RTdG9yZUluZm8pCisgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJv
ciB7IEludmFsaWRTdGF0ZUVycm9yLCAiT2JqZWN0IHN0b3JlIGNhbm5vdCBiZSBmb3VuZCBpbiB0
aGUgYmFja2luZyBzdG9yZSJfcyB9LCBrZXlEYXRhKTsKKworICAgIGlmICghbV9tYW5hZ2VyKQor
ICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciB9LCBr
ZXlEYXRhKTsKIAorICAgIElEQktleURhdGEgdXNlZEtleTsKKyAgICBJREJFcnJvciBlcnJvcjsK
ICAgICBib29sIHVzZWRLZXlJc0dlbmVyYXRlZCA9IGZhbHNlOwogICAgIHVpbnQ2NF90IGtleU51
bWJlcjsKICAgICBhdXRvIHRyYW5zYWN0aW9uSWRlbnRpZmllciA9IHJlcXVlc3REYXRhLnRyYW5z
YWN0aW9uSWRlbnRpZmllcigpOwpAQCAtNzMwLDc2ICs4NjksMTA1IEBAIHZvaWQgVW5pcXVlSURC
RGF0YWJhc2U6OnB1dE9yQWRkKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29u
c3QgSURCS2V5CiAKICAgICBpZiAob2JqZWN0U3RvcmVJbmZvLT5hdXRvSW5jcmVtZW50KCkgJiYg
IWtleURhdGEuaXNWYWxpZCgpKSB7CiAgICAgICAgIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPmdl
bmVyYXRlS2V5TnVtYmVyKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgb2JqZWN0U3RvcmVJZGVudGlm
aWVyLCBrZXlOdW1iZXIpOwotICAgICAgICBpZiAoIWVycm9yLmlzTnVsbCgpKSB7Ci0gICAgICAg
ICAgICBjYWxsYmFjayhlcnJvciwgdXNlZEtleSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KKyAgICAgICAgaWYgKCFlcnJvci5pc051bGwoKSkKKyAgICAgICAgICAgIHJldHVybiBj
YWxsYmFjayhlcnJvciwgdXNlZEtleSk7CisKICAgICAgICAgdXNlZEtleS5zZXROdW1iZXJWYWx1
ZShrZXlOdW1iZXIpOwogICAgICAgICB1c2VkS2V5SXNHZW5lcmF0ZWQgPSB0cnVlOwogICAgIH0g
ZWxzZQogICAgICAgICB1c2VkS2V5ID0ga2V5RGF0YTsKIAotICAgIC8vIEdlbmVyYXRlIGluZGV4
IGtleXMgdXAgZnJvbnQgZm9yIG1vcmUgYWNjdXJhdGUgcXVvdGEgY2hlY2suCi0gICAgSW5kZXhJ
RFRvSW5kZXhLZXlNYXAgaW5kZXhLZXlzOwotICAgIGNhbGxPbklEQlNlcmlhbGl6YXRpb25UaHJl
YWRBbmRXYWl0KFtvYmplY3RTdG9yZUluZm8gPSBvYmplY3RTdG9yZUluZm8tPmlzb2xhdGVkQ29w
eSgpLCBrZXkgPSB1c2VkS2V5Lmlzb2xhdGVkQ29weSgpLCB2YWx1ZSA9IHZhbHVlLmlzb2xhdGVk
Q29weSgpLCAmaW5kZXhLZXlzXShhdXRvJiBnbG9iYWxPYmplY3QpIHsKLSAgICAgICAgaW5kZXhL
ZXlzID0gZ2VuZXJhdGVJbmRleEtleU1hcEZvclZhbHVlKGdsb2JhbE9iamVjdCwgb2JqZWN0U3Rv
cmVJbmZvLCBrZXksIHZhbHVlKTsKLSAgICB9KTsKLQogICAgIGlmIChvdmVyd3JpdGVNb2RlID09
IEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlOjpOb092ZXJ3cml0ZSkgewogICAg
ICAgICBib29sIGtleUV4aXN0czsKICAgICAgICAgZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+a2V5
RXhpc3RzSW5PYmplY3RTdG9yZSh0cmFuc2FjdGlvbklkZW50aWZpZXIsIG9iamVjdFN0b3JlSWRl
bnRpZmllciwgdXNlZEtleSwga2V5RXhpc3RzKTsKLSAgICAgICAgaWYgKGVycm9yLmlzTnVsbCgp
ICYmIGtleUV4aXN0cykKKyAgICAgICAgaWYgKCFlcnJvciAmJiBrZXlFeGlzdHMpCiAgICAgICAg
ICAgICBlcnJvciA9IElEQkVycm9yIHsgQ29uc3RyYWludEVycm9yLCAiS2V5IGFscmVhZHkgZXhp
c3RzIGluIHRoZSBvYmplY3Qgc3RvcmUiX3MgfTsKIAotICAgICAgICBpZiAoIWVycm9yLmlzTnVs
bCgpKSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhlcnJvciwgdXNlZEtleSk7Ci0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKCEhZXJyb3IpCisgICAgICAgICAgICBy
ZXR1cm4gY2FsbGJhY2soZXJyb3IsIHVzZWRLZXkpOwogICAgIH0KIAotICAgIC8vIFF1b3RhIGNo
ZWNrLgorICAgIC8vIEdlbmVyYXRlIGluZGV4IGtleXMgdXAgZnJvbnQgZm9yIG1vcmUgYWNjdXJh
dGUgcXVvdGEgY2hlY2suCisgICAgSW5kZXhJRFRvSW5kZXhLZXlNYXAgaW5kZXhLZXlzOworICAg
IGNhbGxPbklEQlNlcmlhbGl6YXRpb25UaHJlYWRBbmRXYWl0KFtvYmplY3RTdG9yZUluZm8gPSBv
YmplY3RTdG9yZUluZm8tPmlzb2xhdGVkQ29weSgpLCBrZXkgPSB1c2VkS2V5Lmlzb2xhdGVkQ29w
eSgpLCB2YWx1ZSA9IHZhbHVlLmlzb2xhdGVkQ29weSgpLCAmaW5kZXhLZXlzXShhdXRvJiBnbG9i
YWxPYmplY3QpIHsKKyAgICAgICAgaW5kZXhLZXlzID0gZ2VuZXJhdGVJbmRleEtleU1hcEZvclZh
bHVlKGdsb2JhbE9iamVjdCwgb2JqZWN0U3RvcmVJbmZvLCBrZXksIHZhbHVlKTsKKyAgICB9KTsK
KworICAgIGdlbmVyYXRlZEtleVJlc2V0dGVyLnJlbGVhc2UoKTsKICAgICBhdXRvIGtleVNpemUg
PSBlc3RpbWF0ZVNpemUodXNlZEtleSk7CiAgICAgYXV0byB2YWx1ZVNpemUgPSBlc3RpbWF0ZVNp
emUodmFsdWUpOwogICAgIGF1dG8gaW5kZXhTaXplID0gZXN0aW1hdGVTaXplKCpvYmplY3RTdG9y
ZUluZm8sIGluZGV4S2V5cywga2V5U2l6ZSk7CiAgICAgYXV0byB0YXNrU2l6ZSA9IGRlZmF1bHRX
cml0ZU9wZXJhdGlvbkNvc3QgKyBrZXlTaXplICsgdmFsdWVTaXplICsgaW5kZXhTaXplOwogCiAg
ICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpwdXRPckFkZCBxdW90YSBjaGVj
ayB3aXRoIHRhc2sgc2l6ZTogJSIgUFJJdTY0ICIga2V5IHNpemU6ICUiIFBSSXU2NCAiIHZhbHVl
IHNpemU6ICUiIFBSSXU2NCAiIGluZGV4IHNpemU6ICUiIFBSSXU2NCwgdGFza1NpemUsIGtleVNp
emUsIHZhbHVlU2l6ZSwgaW5kZXhTaXplKTsKKyAgICBtX21hbmFnZXItPnJlcXVlc3RTcGFjZSht
X2lkZW50aWZpZXIub3JpZ2luKCksIHRhc2tTaXplLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRy
IHsgKnRoaXMgfSwgcmVxdWVzdERhdGEsIHVzZWRLZXksIHZhbHVlLCBvdmVyd3JpdGVNb2RlLCBj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCB1c2VkS2V5SXNHZW5lcmF0ZWQsIGluZGV4S2V5
cywgb2JqZWN0U3RvcmVJbmZvID0gKm9iamVjdFN0b3JlSW5mb10oYm9vbCBncmFudGVkKSBtdXRh
YmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybiBjYWxsYmFj
ayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiRGF0YWJhc2UgaXMgY2xvc2VkIiB9LCB1
c2VkS2V5KTsKIAotICAgIGlmIChtX3NlcnZlci5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9y
aWdpbigpLCB0YXNrU2l6ZSkgPT0gU3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb246OkRlbnkp
IHsKLSAgICAgICAgY2FsbGJhY2soSURCRXJyb3IgeyBRdW90YUV4Y2VlZGVkRXJyb3IsIHF1b3Rh
RXJyb3JNZXNzYWdlTmFtZSgiUHV0T3JBZGQiKSB9LCB1c2VkS2V5KTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KKyAgICAgICAgcHV0T3JBZGRBZnRlclNwYWNlQ2hlY2socmVxdWVzdERhdGEsIHVz
ZWRLZXksIHZhbHVlLCBvdmVyd3JpdGVNb2RlLCBXVEZNb3ZlKGNhbGxiYWNrKSwgdXNlZEtleUlz
R2VuZXJhdGVkLCBpbmRleEtleXMsIG9iamVjdFN0b3JlSW5mbywgZ3JhbnRlZCk7CisgICAgfSk7
Cit9CisKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnB1dE9yQWRkQWZ0ZXJTcGFjZUNoZWNrKGNv
bnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5RGF0YSYga2V5RGF0
YSwgY29uc3QgSURCVmFsdWUmIHZhbHVlLCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRl
TW9kZSBvdmVyd3JpdGVNb2RlLCBLZXlEYXRhQ2FsbGJhY2sgY2FsbGJhY2ssIGJvb2wgaXNLZXlH
ZW5lcmF0ZWQsIGNvbnN0IEluZGV4SURUb0luZGV4S2V5TWFwJiBpbmRleEtleXMsIGNvbnN0IElE
Qk9iamVjdFN0b3JlSW5mbyYgb2JqZWN0U3RvcmVJbmZvLCBTcGFjZUNoZWNrUmVzdWx0IHNwYWNl
Q2hlY2tSZXN1bHQpCit7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJU
KG1fZGF0YWJhc2VJbmZvKTsKKworICAgIGlmICghbV9iYWNraW5nU3RvcmUpCisgICAgICAgIHJl
dHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiQmFja2luZyBzdG9y
ZSBpcyBjbG9zZWQiIH0sIGtleURhdGEpOworCisgICAgdWludDY0X3Qga2V5TnVtYmVyID0gaXNL
ZXlHZW5lcmF0ZWQgPyBrZXlEYXRhLm51bWJlcigpIDogMDsKKyAgICBhdXRvIG9iamVjdFN0b3Jl
SWRlbnRpZmllciA9IG9iamVjdFN0b3JlSW5mby5pZGVudGlmaWVyKCk7CisgICAgYXV0byB0cmFu
c2FjdGlvbklkZW50aWZpZXIgPSByZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKTsK
KyAgICBhdXRvIGdlbmVyYXRlZEtleVJlc2V0dGVyID0gbWFrZVNjb3BlRXhpdChbdGhpcywgdHJh
bnNhY3Rpb25JZGVudGlmaWVyLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsICZrZXlOdW1iZXIsICZp
c0tleUdlbmVyYXRlZF0oKSB7CisgICAgICAgIGlmIChpc0tleUdlbmVyYXRlZCkKKyAgICAgICAg
ICAgIG1fYmFja2luZ1N0b3JlLT5yZXZlcnRHZW5lcmF0ZWRLZXlOdW1iZXIodHJhbnNhY3Rpb25J
ZGVudGlmaWVyLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGtleU51bWJlcik7CisgICAgfSk7CiAK
KyAgICBpZiAoIXNwYWNlQ2hlY2tSZXN1bHQgfHwgIXNwYWNlQ2hlY2tSZXN1bHQudmFsdWUoKSkK
KyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgUXVvdGFFeGNlZWRlZEVycm9yLCBx
dW90YUVycm9yTWVzc2FnZU5hbWUoIlB1dE9yQWRkIikgfSwga2V5RGF0YSk7CiAgICAgLy8gSWYg
YSByZWNvcmQgYWxyZWFkeSBleGlzdHMgaW4gc3RvcmUsIHRoZW4gcmVtb3ZlIHRoZSByZWNvcmQg
ZnJvbSBzdG9yZSB1c2luZyB0aGUgc3RlcHMgZm9yIGRlbGV0aW5nIHJlY29yZHMgZnJvbSBhbiBv
YmplY3Qgc3RvcmUuCi0gICAgLy8gVGhpcyBpcyBpbXBvcnRhbnQgYmVjYXVzZSBmb3JtYWxseSBk
ZWxldGluZyBpdCBmcm9tIGZyb20gdGhlIG9iamVjdCBzdG9yZSBhbHNvIHJlbW92ZXMgaXQgZnJv
bSB0aGUgYXBwcm9wcmlhdGUgaW5kZXhlcy4KLSAgICBlcnJvciA9IG1fYmFja2luZ1N0b3JlLT5k
ZWxldGVSYW5nZSh0cmFuc2FjdGlvbklkZW50aWZpZXIsIG9iamVjdFN0b3JlSWRlbnRpZmllciwg
dXNlZEtleSk7Ci0gICAgaWYgKCFlcnJvci5pc051bGwoKSkgewotICAgICAgICBjYWxsYmFjayhl
cnJvciwgdXNlZEtleSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgLy8gVGhpcyBpcyBp
bXBvcnRhbnQgYmVjYXVzZSBmb3JtYWxseSBkZWxldGluZyBpdCBmcm9tIHRoZSBvYmplY3Qgc3Rv
cmUgYWxzbyByZW1vdmVzIGl0IGZyb20gdGhlIGFwcHJvcHJpYXRlIGluZGV4ZXMuCisgICAgSURC
RXJyb3IgZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+ZGVsZXRlUmFuZ2UodHJhbnNhY3Rpb25JZGVu
dGlmaWVyLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGtleURhdGEpOworICAgIGlmICghZXJyb3Iu
aXNOdWxsKCkpCisgICAgICAgIHJldHVybiBjYWxsYmFjayhlcnJvciwga2V5RGF0YSk7CiAKLSAg
ICBlcnJvciA9IG1fYmFja2luZ1N0b3JlLT5hZGRSZWNvcmQodHJhbnNhY3Rpb25JZGVudGlmaWVy
LCAqb2JqZWN0U3RvcmVJbmZvLCB1c2VkS2V5LCBpbmRleEtleXMsIHZhbHVlKTsKLSAgICBpZiAo
IWVycm9yLmlzTnVsbCgpKSB7Ci0gICAgICAgIGNhbGxiYWNrKGVycm9yLCB1c2VkS2V5KTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBlcnJvciA9IG1fYmFja2luZ1N0b3JlLT5hZGRSZWNv
cmQodHJhbnNhY3Rpb25JZGVudGlmaWVyLCBvYmplY3RTdG9yZUluZm8sIGtleURhdGEsIGluZGV4
S2V5cywgdmFsdWUpOworICAgIGlmICghZXJyb3IuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBj
YWxsYmFjayhlcnJvciwga2V5RGF0YSk7CiAKLSAgICBpZiAob3ZlcndyaXRlTW9kZSAhPSBJbmRl
eGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZTo6T3ZlcndyaXRlRm9yQ3Vyc29yICYmIG9i
amVjdFN0b3JlSW5mby0+YXV0b0luY3JlbWVudCgpICYmIGtleURhdGEudHlwZSgpID09IEluZGV4
ZWREQjo6S2V5VHlwZTo6TnVtYmVyKQorICAgIGlmIChvdmVyd3JpdGVNb2RlICE9IEluZGV4ZWRE
Qjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlOjpPdmVyd3JpdGVGb3JDdXJzb3IgJiYgb2JqZWN0
U3RvcmVJbmZvLmF1dG9JbmNyZW1lbnQoKSAmJiBrZXlEYXRhLnR5cGUoKSA9PSBJbmRleGVkREI6
OktleVR5cGU6Ok51bWJlcikKICAgICAgICAgZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+bWF5YmVV
cGRhdGVLZXlHZW5lcmF0b3JOdW1iZXIodHJhbnNhY3Rpb25JZGVudGlmaWVyLCBvYmplY3RTdG9y
ZUlkZW50aWZpZXIsIGtleURhdGEubnVtYmVyKCkpOwogCiAgICAgZ2VuZXJhdGVkS2V5UmVzZXR0
ZXIucmVsZWFzZSgpOwotICAgIGNhbGxiYWNrKGVycm9yLCB1c2VkS2V5KTsKKyAgICBjYWxsYmFj
ayhlcnJvciwga2V5RGF0YSk7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmdldFJlY29y
ZChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkdldFJlY29yZERh
dGEmIGdldFJlY29yZERhdGEsIEdldFJlc3VsdENhbGxiYWNrIGNhbGxiYWNrKQordm9pZCBVbmlx
dWVJREJEYXRhYmFzZTo6Z2V0UmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0
YSwgY29uc3QgSURCR2V0UmVjb3JkRGF0YSYgZ2V0UmVjb3JkRGF0YSwgR2V0UmVzdWx0Q2FsbGJh
Y2sgY2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgc3BhY2VDaGVja1Jlc3VsdCkKIHsKICAgICBB
U1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0
YWJhc2U6OmdldFJlY29yZCIpOwogCisgICAgaWYgKCFzcGFjZUNoZWNrUmVzdWx0KSB7CisgICAg
ICAgIGlmICghbV9tYW5hZ2VyKQorICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9y
IHsgSW52YWxpZFN0YXRlRXJyb3IgfSwgSURCR2V0UmVzdWx0IHsgfSk7CisKKyAgICAgICAgbV9t
YW5hZ2VyLT5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCAwLCBbdGhpcywgd2Vh
a1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgcmVxdWVzdERhdGEsIGdldFJlY29yZERhdGEsIGNh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgZ3JhbnRlZCkgbXV0YWJsZSB7CisgICAg
ICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJ
REJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiRGF0YWJhc2UgaXMgY2xvc2VkIiB9LCBJREJH
ZXRSZXN1bHQgeyB9KTsKKworICAgICAgICAgICAgZ2V0UmVjb3JkKHJlcXVlc3REYXRhLCBnZXRS
ZWNvcmREYXRhLCBXVEZNb3ZlKGNhbGxiYWNrKSwgZ3JhbnRlZCk7CisgICAgICAgIH0pOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKHNwYWNlQ2hlY2tSZXN1bHQudmFsdWUo
KSk7CisgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElE
QkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJCYWNraW5nIHN0b3JlIGlzIGNsb3NlZCIgfSwg
SURCR2V0UmVzdWx0IHsgfSk7CisKICAgICBJREJHZXRSZXN1bHQgcmVzdWx0OwogICAgIElEQkVy
cm9yIGVycm9yOwogCi0gICAgQVNTRVJUKG1fYmFja2luZ1N0b3JlKTsKICAgICBpZiAodWludDY0
X3QgaW5kZXhJZGVudGlmaWVyID0gcmVxdWVzdERhdGEuaW5kZXhJZGVudGlmaWVyKCkpCiAgICAg
ICAgIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPmdldEluZGV4UmVjb3JkKHJlcXVlc3REYXRhLnRy
YW5zYWN0aW9uSWRlbnRpZmllcigpLCByZXF1ZXN0RGF0YS5vYmplY3RTdG9yZUlkZW50aWZpZXIo
KSwgaW5kZXhJZGVudGlmaWVyLCByZXF1ZXN0RGF0YS5pbmRleFJlY29yZFR5cGUoKSwgZ2V0UmVj
b3JkRGF0YS5rZXlSYW5nZURhdGEsIHJlc3VsdCk7CiAgICAgZWxzZQpAQCAtODA4LDQ3ICs5NzYs
MTEwIEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmdldFJlY29yZChjb25zdCBJREJSZXF1ZXN0
RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkdlCiAgICAgY2FsbGJhY2soZXJyb3IsIHJlc3Vs
dCk7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmdldEFsbFJlY29yZHMoY29uc3QgSURC
UmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJHZXRBbGxSZWNvcmRzRGF0YSYgZ2V0
QWxsUmVjb3Jkc0RhdGEsIEdldEFsbFJlc3VsdHNDYWxsYmFjayBjYWxsYmFjaykKK3ZvaWQgVW5p
cXVlSURCRGF0YWJhc2U6OmdldEFsbFJlY29yZHMoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVl
c3REYXRhLCBjb25zdCBJREJHZXRBbGxSZWNvcmRzRGF0YSYgZ2V0QWxsUmVjb3Jkc0RhdGEsIEdl
dEFsbFJlc3VsdHNDYWxsYmFjayBjYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCBzcGFjZUNoZWNr
UmVzdWx0KQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIExPRyhJbmRleGVk
REIsICJVbmlxdWVJREJEYXRhYmFzZTo6Z2V0QWxsUmVjb3JkcyIpOwogCi0gICAgQVNTRVJUKG1f
YmFja2luZ1N0b3JlKTsKKyAgICBpZiAoIXNwYWNlQ2hlY2tSZXN1bHQpIHsKKyAgICAgICAgaWYg
KCFtX21hbmFnZXIpCisgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZh
bGlkU3RhdGVFcnJvciB9LCBJREJHZXRBbGxSZXN1bHQgeyB9KTsKKworICAgICAgICBtX21hbmFn
ZXItPnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIDAsIFt0aGlzLCB3ZWFrVGhp
cyA9IFdlYWtQdHIgeyAqdGhpcyB9LCByZXF1ZXN0RGF0YSwgZ2V0QWxsUmVjb3Jkc0RhdGEsIGNh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgZ3JhbnRlZCkgbXV0YWJsZSB7CisgICAg
ICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJ
REJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiRGF0YWJhc2UgaXMgY2xvc2VkIiB9LCBJREJH
ZXRBbGxSZXN1bHQgeyB9KTsKKworICAgICAgICAgICAgZ2V0QWxsUmVjb3JkcyhyZXF1ZXN0RGF0
YSwgZ2V0QWxsUmVjb3Jkc0RhdGEsIFdURk1vdmUoY2FsbGJhY2spLCBncmFudGVkKTsKKyAgICAg
ICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQoc3BhY2VDaGVja1Jl
c3VsdC52YWx1ZSgpKTsKKyAgICBpZiAoIW1fYmFja2luZ1N0b3JlKQorICAgICAgICByZXR1cm4g
Y2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkJhY2tpbmcgc3RvcmUgaXMg
Y2xvc2VkIiB9LCBJREJHZXRBbGxSZXN1bHQgeyB9KTsKKwogICAgIElEQkdldEFsbFJlc3VsdCBy
ZXN1bHQ7CiAgICAgYXV0byBlcnJvciA9IG1fYmFja2luZ1N0b3JlLT5nZXRBbGxSZWNvcmRzKHJl
cXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpLCBnZXRBbGxSZWNvcmRzRGF0YSwgcmVz
dWx0KTsKIAogICAgIGNhbGxiYWNrKGVycm9yLCByZXN1bHQpOwogfQogCi12b2lkIFVuaXF1ZUlE
QkRhdGFiYXNlOjpnZXRDb3VudChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNv
bnN0IElEQktleVJhbmdlRGF0YSYgcmFuZ2UsIENvdW50Q2FsbGJhY2sgY2FsbGJhY2spCit2b2lk
IFVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRDb3VudChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVz
dERhdGEsIGNvbnN0IElEQktleVJhbmdlRGF0YSYgcmFuZ2UsIENvdW50Q2FsbGJhY2sgY2FsbGJh
Y2ssIFNwYWNlQ2hlY2tSZXN1bHQgc3BhY2VDaGVja1Jlc3VsdCkKIHsKICAgICBBU1NFUlQoIWlz
TWFpblRocmVhZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6Omdl
dENvdW50Iik7CiAKLSAgICBBU1NFUlQobV9iYWNraW5nU3RvcmUpOworICAgIGlmICghc3BhY2VD
aGVja1Jlc3VsdCkgeworICAgICAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAgICAgICAgIHJldHVy
biBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yIH0sIDApOworCisgICAgICAg
IG1fbWFuYWdlci0+cmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwgMCwgW3RoaXMs
IHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHJlcXVlc3REYXRhLCByYW5nZSwgY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAg
ICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVy
cm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJEYXRhYmFzZSBpcyBjbG9zZWQiIH0sIDApOworCisg
ICAgICAgICAgICBnZXRDb3VudChyZXF1ZXN0RGF0YSwgcmFuZ2UsIFdURk1vdmUoY2FsbGJhY2sp
LCBncmFudGVkKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBB
U1NFUlQoc3BhY2VDaGVja1Jlc3VsdC52YWx1ZSgpKTsKKyAgICBpZiAoIW1fYmFja2luZ1N0b3Jl
KQorICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwg
IkJhY2tpbmcgc3RvcmUgaXMgY2xvc2VkIiB9LCAwKTsKKwogICAgIHVpbnQ2NF90IGNvdW50ID0g
MDsKICAgICBhdXRvIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPmdldENvdW50KHJlcXVlc3REYXRh
LnRyYW5zYWN0aW9uSWRlbnRpZmllcigpLCByZXF1ZXN0RGF0YS5vYmplY3RTdG9yZUlkZW50aWZp
ZXIoKSwgcmVxdWVzdERhdGEuaW5kZXhJZGVudGlmaWVyKCksIHJhbmdlLCBjb3VudCk7CiAKICAg
ICBjYWxsYmFjayhlcnJvciwgY291bnQpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpk
ZWxldGVSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJL
ZXlSYW5nZURhdGEmIGtleVJhbmdlRGF0YSwgRXJyb3JDYWxsYmFjayBjYWxsYmFjaykKK3ZvaWQg
VW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZVJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVx
dWVzdERhdGEsIGNvbnN0IElEQktleVJhbmdlRGF0YSYga2V5UmFuZ2VEYXRhLCBFcnJvckNhbGxi
YWNrIGNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0IHNwYWNlQ2hlY2tSZXN1bHQpCiB7CiAgICAg
QVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRh
dGFiYXNlOjpkZWxldGVSZWNvcmQiKTsKIAotICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7Cisg
ICAgaWYgKCFzcGFjZUNoZWNrUmVzdWx0KSB7CisgICAgICAgIGlmICghbV9tYW5hZ2VyKQorICAg
ICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7
CisKKyAgICAgICAgbV9tYW5hZ2VyLT5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigp
LCAwLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgcmVxdWVzdERhdGEsIGtl
eVJhbmdlRGF0YSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBncmFudGVkKSBt
dXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICAgICAgcmV0
dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJEYXRhYmFzZSBpcyBj
bG9zZWQiIH0pOworCisgICAgICAgICAgICBkZWxldGVSZWNvcmQocmVxdWVzdERhdGEsIGtleVJh
bmdlRGF0YSwgV1RGTW92ZShjYWxsYmFjayksIGdyYW50ZWQpOworICAgICAgICB9KTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChzcGFjZUNoZWNrUmVzdWx0LnZhbHVlKCkp
OworICAgIGlmICghbV9iYWNraW5nU3RvcmUpCisgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJF
cnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiQmFja2luZyBzdG9yZSBpcyBjbG9zZWQiIH0pOwor
CiAgICAgYXV0byBlcnJvciA9IG1fYmFja2luZ1N0b3JlLT5kZWxldGVSYW5nZShyZXF1ZXN0RGF0
YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSwgcmVxdWVzdERhdGEub2JqZWN0U3RvcmVJZGVudGlm
aWVyKCksIGtleVJhbmdlRGF0YSk7CiAKICAgICBjYWxsYmFjayhlcnJvcik7CiB9CiAKLXZvaWQg
VW5pcXVlSURCRGF0YWJhc2U6Om9wZW5DdXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVl
c3REYXRhLCBjb25zdCBJREJDdXJzb3JJbmZvJiBpbmZvLCBHZXRSZXN1bHRDYWxsYmFjayBjYWxs
YmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6Om9wZW5DdXJzb3IoY29uc3QgSURCUmVxdWVz
dERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJDdXJzb3JJbmZvJiBpbmZvLCBHZXRSZXN1bHRD
YWxsYmFjayBjYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCBzcGFjZUNoZWNrUmVzdWx0KQogewog
ICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJ
REJEYXRhYmFzZTo6b3BlbkN1cnNvciIpOwogCi0gICAgQVNTRVJUKG1fYmFja2luZ1N0b3JlKTsK
KyAgICBpZiAoIXNwYWNlQ2hlY2tSZXN1bHQpIHsKKyAgICAgICAgaWYgKCFtX21hbmFnZXIpCisg
ICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciB9
LCBJREJHZXRSZXN1bHQgeyB9KTsKKworICAgICAgICBtX21hbmFnZXItPnJlcXVlc3RTcGFjZSht
X2lkZW50aWZpZXIub3JpZ2luKCksIDAsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhp
cyB9LCByZXF1ZXN0RGF0YSwgaW5mbywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9v
bCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJE
YXRhYmFzZSBvciB0cmFuc2FjdGlvbiBpcyBjbG9zZWQiIH0sIElEQkdldFJlc3VsdCB7IH0pOwor
CisgICAgICAgICAgICBvcGVuQ3Vyc29yKHJlcXVlc3REYXRhLCBpbmZvLCBXVEZNb3ZlKGNhbGxi
YWNrKSwgZ3JhbnRlZCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgQVNTRVJUKHNwYWNlQ2hlY2tSZXN1bHQudmFsdWUoKSk7CisgICAgaWYgKCFtX2JhY2tpbmdT
dG9yZSkKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJy
b3IsICJCYWNraW5nIHN0b3JlIGlzIGNsb3NlZCIgfSwgSURCR2V0UmVzdWx0IHsgfSk7CiAKICAg
ICBJREJHZXRSZXN1bHQgcmVzdWx0OwogICAgIGF1dG8gZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+
b3BlbkN1cnNvcihyZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSwgaW5mbywgcmVz
dWx0KTsKQEAgLTg1NiwxMiArMTA4NywyNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVu
Q3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCQwogICAg
IGNhbGxiYWNrKGVycm9yLCByZXN1bHQpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpp
dGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURC
SXRlcmF0ZUN1cnNvckRhdGEmIGRhdGEsIEdldFJlc3VsdENhbGxiYWNrIGNhbGxiYWNrKQordm9p
ZCBVbmlxdWVJREJEYXRhYmFzZTo6aXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYg
cmVxdWVzdERhdGEsIGNvbnN0IElEQkl0ZXJhdGVDdXJzb3JEYXRhJiBkYXRhLCBHZXRSZXN1bHRD
YWxsYmFjayBjYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCBzcGFjZUNoZWNrUmVzdWx0KQogewog
ICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJ
REJEYXRhYmFzZTo6aXRlcmF0ZUN1cnNvciIpOwogCi0gICAgQVNTRVJUKG1fYmFja2luZ1N0b3Jl
KTsKKyAgICBpZiAoIXNwYWNlQ2hlY2tSZXN1bHQpIHsKKyAgICAgICAgaWYgKCFtX21hbmFnZXIp
CisgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJv
ciB9LCBJREJHZXRSZXN1bHQgeyB9KTsKKworICAgICAgICBtX21hbmFnZXItPnJlcXVlc3RTcGFj
ZShtX2lkZW50aWZpZXIub3JpZ2luKCksIDAsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAq
dGhpcyB9LCByZXF1ZXN0RGF0YSwgZGF0YSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0o
Ym9vbCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3Is
ICJEYXRhYmFzZSBvciB0cmFuc2FjdGlvbiBpcyBjbG9zZWQiIH0sIElEQkdldFJlc3VsdCB7IH0p
OworCisgICAgICAgICAgICBpdGVyYXRlQ3Vyc29yKHJlcXVlc3REYXRhLCBkYXRhLCBXVEZNb3Zl
KGNhbGxiYWNrKSwgZ3JhbnRlZCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgQVNTRVJUKHNwYWNlQ2hlY2tSZXN1bHQudmFsdWUoKSk7CisgICAgaWYgKCFtX2Jh
Y2tpbmdTdG9yZSkKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0
YXRlRXJyb3IsICJCYWNraW5nIHN0b3JlIGlzIGNsb3NlZCIgfSwgSURCR2V0UmVzdWx0IHsgfSk7
CiAKICAgICBJREJHZXRSZXN1bHQgcmVzdWx0OwogICAgIGF1dG8gdHJhbnNhY3Rpb25JZGVudGlm
aWVyID0gcmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCk7CkBAIC04NzEsMTMgKzEx
MTcsMzAgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6aXRlcmF0ZUN1cnNvcihjb25zdCBJREJS
ZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IEkKICAgICBjYWxsYmFjayhlcnJvciwgcmVz
dWx0KTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y29tbWl0VHJhbnNhY3Rpb24oVW5p
cXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIEVycm9yQ2FsbGJhY2sgY2Fs
bGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjb21taXRUcmFuc2FjdGlvbihVbmlxdWVJ
REJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgRXJyb3JDYWxsYmFjayBjYWxsYmFj
aywgU3BhY2VDaGVja1Jlc3VsdCBzcGFjZUNoZWNrUmVzdWx0KQogewogICAgIEFTU0VSVCghaXNN
YWluVGhyZWFkKCkpOwogICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6Y29t
bWl0VHJhbnNhY3Rpb24gLSAlcyIsIHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCkubG9n
Z2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCisgICAgaWYgKCFzcGFjZUNoZWNrUmVzdWx0
KSB7CisgICAgICAgIGlmICghbV9tYW5hZ2VyKQorICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNr
KElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7CisKKyAgICAgICAgbV9tYW5hZ2VyLT5y
ZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCAwLCBbdGhpcywgd2Vha1RoaXMgPSBX
ZWFrUHRyIHsgKnRoaXMgfSwgd2Vha1RyYW5zYWN0aW9uID0gV2Vha1B0ciB7IHRyYW5zYWN0aW9u
IH0sIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgZ3JhbnRlZCkgbXV0YWJsZSB7
CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICF3ZWFrVHJhbnNhY3Rpb24pCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJE
YXRhYmFzZSBvciB0cmFuc2FjdGlvbiBpcyBjbG9zZWQiIH0pOworCisgICAgICAgICAgICBjb21t
aXRUcmFuc2FjdGlvbigqd2Vha1RyYW5zYWN0aW9uLCBXVEZNb3ZlKGNhbGxiYWNrKSwgZ3JhbnRl
ZCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKHNw
YWNlQ2hlY2tSZXN1bHQudmFsdWUoKSk7CiAgICAgQVNTRVJUKHRyYW5zYWN0aW9uLmRhdGFiYXNl
Q29ubmVjdGlvbigpLmRhdGFiYXNlKCkgPT0gdGhpcyk7Ci0gICAgQVNTRVJUKG1fYmFja2luZ1N0
b3JlKTsKKworICAgIGlmICghbV9iYWNraW5nU3RvcmUpCisgICAgICAgIHJldHVybiBjYWxsYmFj
ayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiQmFja2luZyBzdG9yZSBpcyBjbG9zZWQi
IH0pOworCiAgICAgYXV0byB0YWtlblRyYW5zYWN0aW9uID0gbV9pblByb2dyZXNzVHJhbnNhY3Rp
b25zLnRha2UodHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSk7CiAgICAgaWYgKCF0YWtl
blRyYW5zYWN0aW9uKSB7CiAgICAgICAgIGlmICghbV9vcGVuRGF0YWJhc2VDb25uZWN0aW9ucy5j
b250YWlucygmdHJhbnNhY3Rpb24uZGF0YWJhc2VDb25uZWN0aW9uKCkpKQpAQCAtODkzLDExICsx
MTU2LDI1IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNvbW1pdFRyYW5zYWN0aW9uKFVuaXF1
ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0CiAgICAgdHJhbnNhY3Rpb25Db21wbGV0
ZWQoV1RGTW92ZSh0YWtlblRyYW5zYWN0aW9uKSk7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJh
c2U6OmFib3J0VHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNh
Y3Rpb24sIEVycm9yQ2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjph
Ym9ydFRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9u
LCBFcnJvckNhbGxiYWNrIGNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0IHNwYWNlQ2hlY2tSZXN1
bHQpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwg
IlVuaXF1ZUlEQkRhdGFiYXNlOjphYm9ydFRyYW5zYWN0aW9uIC0gJXMiLCB0cmFuc2FjdGlvbi5p
bmZvKCkuaWRlbnRpZmllcigpLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAorICAg
IGlmICghc3BhY2VDaGVja1Jlc3VsdCkgeworICAgICAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAg
ICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yIH0pOwor
CisgICAgICAgIG1fbWFuYWdlci0+cmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwg
MCwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHdlYWtUcmFuc2FjdGlvbiA9
IFdlYWtQdHIgeyB0cmFuc2FjdGlvbiB9LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShi
b29sIGdyYW50ZWQpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhd2Vh
a1RyYW5zYWN0aW9uKQorICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7
IEludmFsaWRTdGF0ZUVycm9yLCAiRGF0YWJhc2Ugb3IgdHJhbnNhY3Rpb24gaXMgY2xvc2VkIiB9
KTsKKworICAgICAgICAgICAgYWJvcnRUcmFuc2FjdGlvbigqd2Vha1RyYW5zYWN0aW9uLCBXVEZN
b3ZlKGNhbGxiYWNrKSwgZ3JhbnRlZCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgQVNTRVJUKHNwYWNlQ2hlY2tSZXN1bHQudmFsdWUoKSk7CiAgICAgQVNTRVJU
KHRyYW5zYWN0aW9uLmRhdGFiYXNlQ29ubmVjdGlvbigpLmRhdGFiYXNlKCkgPT0gdGhpcyk7CiAK
ICAgICBhdXRvIHRha2VuVHJhbnNhY3Rpb24gPSBtX2luUHJvZ3Jlc3NUcmFuc2FjdGlvbnMudGFr
ZSh0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpKTsKQEAgLTkyNSw3ICsxMjAyLDExIEBA
IHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmFib3J0VHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJh
c2VUcmFuc2FjdGlvbiYgdHJhbnNhY3RpCiAgICAgICAgIG1fZGF0YWJhc2VJbmZvID0gbWFrZVVu
aXF1ZTxJREJEYXRhYmFzZUluZm8+KCptX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi0+b3JpZ2lu
YWxEYXRhYmFzZUluZm8oKSk7CiAgICAgfQogCi0gICAgYXV0byBlcnJvciA9IG1fYmFja2luZ1N0
b3JlLT5hYm9ydFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CisgICAgSURCRXJy
b3IgZXJyb3I7CisgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkKKyAgICAgICAgZXJyb3IgPSBJREJF
cnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiQmFja2luZyBzdG9yZSBpcyBjbG9zZWQiIH07Cisg
ICAgZWxzZQorICAgICAgICBlcnJvciA9IG1fYmFja2luZ1N0b3JlLT5hYm9ydFRyYW5zYWN0aW9u
KHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CiAKICAgICBjYWxsYmFjayhlcnJvcik7CiAgICAgdHJh
bnNhY3Rpb25Db21wbGV0ZWQoV1RGTW92ZSh0YWtlblRyYW5zYWN0aW9uKSk7CkBAIC0xMjI1LDYg
KzE1MDYsMTEgQEAgYm9vbCBVbmlxdWVJREJEYXRhYmFzZTo6dHJ5Q2xvc2UoKQogICAgIGNsb3Nl
KCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CisgICAgCitib29sIFVuaXF1ZUlEQkRhdGFiYXNlOjpo
YXNEYXRhSW5NZW1vcnkoKSBjb25zdAoreworICAgIHJldHVybiBtX2JhY2tpbmdTdG9yZSA/IG1f
YmFja2luZ1N0b3JlLT5pc0VwaGVtZXJhbCgpIDogZmFsc2U7Cit9CiAKIFJlZlB0cjxTZXJ2ZXJP
cGVuREJSZXF1ZXN0PiBVbmlxdWVJREJEYXRhYmFzZTo6dGFrZU5leHRSdW5uYWJsZVJlcXVlc3Qo
UmVxdWVzdFR5cGUgcmVxdWVzdFR5cGUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oCmluZGV4IGIy
YTc0MTdmOWM4MTljZmMyNDE0NmNlNWZiNWNmNWQyNjEyODUwODAuLjNmZjlkYmFiMmU0YWVkMThi
MzRmNWZiYTAzMTAwODU5NGI4OWNkZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oCkBAIC01OSw4
ICs1OSw4IEBAIGVudW0gY2xhc3MgSW5kZXhSZWNvcmRUeXBlIDogYm9vbDsKIG5hbWVzcGFjZSBJ
REJTZXJ2ZXIgewogCiBjbGFzcyBJREJDb25uZWN0aW9uVG9DbGllbnQ7Ci1jbGFzcyBJREJTZXJ2
ZXI7CiBjbGFzcyBVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb247CitjbGFzcyBVbmlxdWVJREJE
YXRhYmFzZU1hbmFnZXI7CiAKIHR5cGVkZWYgRnVuY3Rpb248dm9pZChjb25zdCBJREJFcnJvciYp
PiBFcnJvckNhbGxiYWNrOwogdHlwZWRlZiBGdW5jdGlvbjx2b2lkKGNvbnN0IElEQkVycm9yJiwg
Y29uc3QgSURCS2V5RGF0YSYpPiBLZXlEYXRhQ2FsbGJhY2s7CkBAIC03MSw1NCArNzEsNTggQEAg
dHlwZWRlZiBGdW5jdGlvbjx2b2lkKGNvbnN0IElEQkVycm9yJiwgdWludDY0X3QpPiBDb3VudENh
bGxiYWNrOwogY2xhc3MgVW5pcXVlSURCRGF0YWJhc2UgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8
VW5pcXVlSURCRGF0YWJhc2U+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKLSAgICBVbmlxdWVJREJEYXRhYmFzZShJREJTZXJ2ZXImLCBjb25zdCBJREJEYXRhYmFzZUlk
ZW50aWZpZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBVbmlxdWVJREJEYXRhYmFzZShVbmlxdWVJ
REJEYXRhYmFzZU1hbmFnZXImLCBjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImKTsKICAgICBV
bmlxdWVJREJEYXRhYmFzZShVbmlxdWVJREJEYXRhYmFzZSYpID0gZGVsZXRlOwogICAgIFdFQkNP
UkVfRVhQT1JUIH5VbmlxdWVJREJEYXRhYmFzZSgpOwogCi0gICAgdm9pZCBvcGVuRGF0YWJhc2VD
b25uZWN0aW9uKElEQkNvbm5lY3Rpb25Ub0NsaWVudCYsIGNvbnN0IElEQlJlcXVlc3REYXRhJik7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBvcGVuRGF0YWJhc2VDb25uZWN0aW9uKElEQkNvbm5l
Y3Rpb25Ub0NsaWVudCYsIGNvbnN0IElEQlJlcXVlc3REYXRhJik7CiAKICAgICBjb25zdCBJREJE
YXRhYmFzZUluZm8mIGluZm8oKSBjb25zdDsKLSAgICBJREJTZXJ2ZXImIHNlcnZlcigpIHsgcmV0
dXJuIG1fc2VydmVyOyB9CisgICAgVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyKiBtYW5hZ2VyKCk7
CiAgICAgY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJiBpZGVudGlmaWVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAKLSAgICB2b2lkIGNyZWF0ZU9iamVjdFN0b3JlKFVuaXF1
ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mLCBFcnJv
ckNhbGxiYWNrKTsKLSAgICB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNl
VHJhbnNhY3Rpb24mLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSwgRXJyb3JDYWxsYmFj
ayk7Ci0gICAgdm9pZCByZW5hbWVPYmplY3RTdG9yZShVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0
aW9uJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05h
bWUsIEVycm9yQ2FsbGJhY2spOwotICAgIHZvaWQgY2xlYXJPYmplY3RTdG9yZShVbmlxdWVJREJE
YXRhYmFzZVRyYW5zYWN0aW9uJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBFcnJv
ckNhbGxiYWNrKTsKLSAgICB2b2lkIGNyZWF0ZUluZGV4KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNh
Y3Rpb24mLCBjb25zdCBJREJJbmRleEluZm8mLCBFcnJvckNhbGxiYWNrKTsKLSAgICB2b2lkIGRl
bGV0ZUluZGV4KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCB1aW50NjRfdCBvYmplY3RT
dG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lLCBFcnJvckNhbGxiYWNrKTsK
LSAgICB2b2lkIHJlbmFtZUluZGV4KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCB1aW50
NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBuZXdOYW1lLCBFcnJvckNhbGxiYWNrKTsKKyAgICB1c2luZyBTcGFjZUNoZWNr
UmVzdWx0ID0gc3RkOjpvcHRpb25hbDxib29sPjsKKyAgICB2b2lkIGNyZWF0ZU9iamVjdFN0b3Jl
KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8m
LCBFcnJvckNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0ID0gc3RkOjpudWxsb3B0KTsKKyAgICB2
b2lkIGRlbGV0ZU9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCBjb25z
dCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSwgRXJyb3JDYWxsYmFjaywgU3BhY2VDaGVja1Jlc3Vs
dCA9IHN0ZDo6bnVsbG9wdCk7CisgICAgdm9pZCByZW5hbWVPYmplY3RTdG9yZShVbmlxdWVJREJE
YXRhYmFzZVRyYW5zYWN0aW9uJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIG5ld05hbWUsIEVycm9yQ2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgPSBzdGQ6
Om51bGxvcHQpOworICAgIHZvaWQgY2xlYXJPYmplY3RTdG9yZShVbmlxdWVJREJEYXRhYmFzZVRy
YW5zYWN0aW9uJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBFcnJvckNhbGxiYWNr
LCBTcGFjZUNoZWNrUmVzdWx0ID0gc3RkOjpudWxsb3B0KTsKKyAgICB2b2lkIGNyZWF0ZUluZGV4
KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCBjb25zdCBJREJJbmRleEluZm8mLCBFcnJv
ckNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0ID0gc3RkOjpudWxsb3B0KTsKKyAgICB2b2lkIGRl
bGV0ZUluZGV4KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCB1aW50NjRfdCBvYmplY3RT
dG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lLCBFcnJvckNhbGxiYWNrLCBT
cGFjZUNoZWNrUmVzdWx0ID0gc3RkOjpudWxsb3B0KTsKKyAgICB2b2lkIHJlbmFtZUluZGV4KFVu
aXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZp
ZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lLCBFcnJv
ckNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0ID0gc3RkOjpudWxsb3B0KTsKICAgICB2b2lkIHB1
dE9yQWRkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5RGF0YSYsIGNvbnN0IElE
QlZhbHVlJiwgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUsIEtleURhdGFDYWxs
YmFjayk7Ci0gICAgdm9pZCBnZXRSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJ
REJHZXRSZWNvcmREYXRhJiwgR2V0UmVzdWx0Q2FsbGJhY2spOwotICAgIHZvaWQgZ2V0QWxsUmVj
b3Jkcyhjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkdldEFsbFJlY29yZHNEYXRhJiwg
R2V0QWxsUmVzdWx0c0NhbGxiYWNrKTsKLSAgICB2b2lkIGdldENvdW50KGNvbnN0IElEQlJlcXVl
c3REYXRhJiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiwgQ291bnRDYWxsYmFjayk7Ci0gICAgdm9p
ZCBkZWxldGVSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlSYW5nZURh
dGEmLCBFcnJvckNhbGxiYWNrKTsKLSAgICB2b2lkIG9wZW5DdXJzb3IoY29uc3QgSURCUmVxdWVz
dERhdGEmLCBjb25zdCBJREJDdXJzb3JJbmZvJiwgR2V0UmVzdWx0Q2FsbGJhY2spOwotICAgIHZv
aWQgaXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkl0ZXJhdGVD
dXJzb3JEYXRhJiwgR2V0UmVzdWx0Q2FsbGJhY2spOwotICAgIHZvaWQgY29tbWl0VHJhbnNhY3Rp
b24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIEVycm9yQ2FsbGJhY2spOwotICAgIHZv
aWQgYWJvcnRUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgRXJyb3JD
YWxsYmFjayk7CisgICAgdm9pZCBwdXRPckFkZEFmdGVyU3BhY2VDaGVjayhjb25zdCBJREJSZXF1
ZXN0RGF0YSYsIGNvbnN0IElEQktleURhdGEmLCBjb25zdCBJREJWYWx1ZSYsIEluZGV4ZWREQjo6
T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlLCBLZXlEYXRhQ2FsbGJhY2ssIGJvb2wgaXNLZXlHZW5l
cmF0ZWQsIGNvbnN0IEluZGV4SURUb0luZGV4S2V5TWFwJiwgY29uc3QgSURCT2JqZWN0U3RvcmVJ
bmZvJiwgU3BhY2VDaGVja1Jlc3VsdCk7CisgICAgdm9pZCBnZXRSZWNvcmQoY29uc3QgSURCUmVx
dWVzdERhdGEmLCBjb25zdCBJREJHZXRSZWNvcmREYXRhJiwgR2V0UmVzdWx0Q2FsbGJhY2ssIFNw
YWNlQ2hlY2tSZXN1bHQgPSBzdGQ6Om51bGxvcHQpOworICAgIHZvaWQgZ2V0QWxsUmVjb3Jkcyhj
b25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkdldEFsbFJlY29yZHNEYXRhJiwgR2V0QWxs
UmVzdWx0c0NhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0ID0gc3RkOjpudWxsb3B0KTsKKyAgICB2
b2lkIGdldENvdW50KGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5UmFuZ2VEYXRh
JiwgQ291bnRDYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCA9IHN0ZDo6bnVsbG9wdCk7CisgICAg
dm9pZCBkZWxldGVSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlSYW5n
ZURhdGEmLCBFcnJvckNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0ID0gc3RkOjpudWxsb3B0KTsK
KyAgICB2b2lkIG9wZW5DdXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJDdXJz
b3JJbmZvJiwgR2V0UmVzdWx0Q2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgPSBzdGQ6Om51bGxv
cHQpOworICAgIHZvaWQgaXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0
IElEQkl0ZXJhdGVDdXJzb3JEYXRhJiwgR2V0UmVzdWx0Q2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1
bHQgPSBzdGQ6Om51bGxvcHQpOworICAgIHZvaWQgY29tbWl0VHJhbnNhY3Rpb24oVW5pcXVlSURC
RGF0YWJhc2VUcmFuc2FjdGlvbiYsIEVycm9yQ2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgPSBz
dGQ6Om51bGxvcHQpOworICAgIHZvaWQgYWJvcnRUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFz
ZVRyYW5zYWN0aW9uJiwgRXJyb3JDYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCA9IHN0ZDo6bnVs
bG9wdCk7CiAKICAgICB2b2lkIGRpZEZpbmlzaEhhbmRsaW5nVmVyc2lvbkNoYW5nZShVbmlxdWVJ
REJEYXRhYmFzZUNvbm5lY3Rpb24mLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5z
YWN0aW9uSWRlbnRpZmllcik7CiAgICAgdm9pZCBjb25uZWN0aW9uQ2xvc2VkRnJvbUNsaWVudChV
bmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mKTsKICAgICB2b2lkIGRpZEZpcmVWZXJzaW9uQ2hh
bmdlRXZlbnQoVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiwgY29uc3QgSURCUmVzb3VyY2VJ
ZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgSW5kZXhlZERCOjpDb25uZWN0aW9uQ2xvc2Vk
T25CZWhhbGZPZlNlcnZlcik7Ci0gICAgdm9pZCBvcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKGNvbnN0
IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgb3BlbkRCUmVxdWVzdENhbmNlbGxlZChjb25zdCBJREJSZXNvdXJjZUlkZW50
aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyKTsKIAogICAgIHZvaWQgZW5xdWV1ZVRyYW5zYWN0aW9u
KFJlZjxVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uPiYmKTsKIAotICAgIHZvaWQgaGFuZGxl
RGVsZXRlKElEQkNvbm5lY3Rpb25Ub0NsaWVudCYsIGNvbnN0IElEQlJlcXVlc3REYXRhJik7Ci0g
ICAgdm9pZCBpbW1lZGlhdGVDbG9zZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFuZGxl
RGVsZXRlKElEQkNvbm5lY3Rpb25Ub0NsaWVudCYsIGNvbnN0IElEQlJlcXVlc3REYXRhJik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbW1lZGlhdGVDbG9zZSgpOwogCiAgICAgYm9vbCBoYXNB
Y3RpdmVUcmFuc2FjdGlvbnMoKSBjb25zdDsKLSAgICB2b2lkIGFib3J0QWN0aXZlVHJhbnNhY3Rp
b25zKCk7Ci0gICAgYm9vbCB0cnlDbG9zZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWJv
cnRBY3RpdmVUcmFuc2FjdGlvbnMoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIHRyeUNsb3Nl
KCk7CiAKLSAgICBTdHJpbmcgZmlsZVBhdGgoKSBjb25zdDsKLSAgICBzdGQ6Om9wdGlvbmFsPElE
QkRhdGFiYXNlTmFtZUFuZFZlcnNpb24+IG5hbWVBbmRWZXJzaW9uKCkgY29uc3Q7CisgICAgV0VC
Q09SRV9FWFBPUlQgU3RyaW5nIGZpbGVQYXRoKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
c3RkOjpvcHRpb25hbDxJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiBuYW1lQW5kVmVyc2lvbigp
IGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzRGF0YUluTWVtb3J5KCkgY29uc3Q7
CiAKIHByaXZhdGU6CiAgICAgdm9pZCBoYW5kbGVEYXRhYmFzZU9wZXJhdGlvbnMoKTsKICAgICB2
b2lkIGhhbmRsZUN1cnJlbnRPcGVyYXRpb24oKTsKICAgICB2b2lkIHBlcmZvcm1DdXJyZW50T3Bl
bk9wZXJhdGlvbigpOworICAgIHZvaWQgcGVyZm9ybUN1cnJlbnRPcGVuT3BlcmF0aW9uQWZ0ZXJT
cGFjZUNoZWNrKGJvb2wgaXNHcmFudGVkKTsKICAgICB2b2lkIHBlcmZvcm1DdXJyZW50RGVsZXRl
T3BlcmF0aW9uKCk7CiAgICAgZW51bSBjbGFzcyBSZXF1ZXN0VHlwZSB7IERlbGV0ZSwgQW55IH07
CiAgICAgUmVmUHRyPFNlcnZlck9wZW5EQlJlcXVlc3Q+IHRha2VOZXh0UnVubmFibGVSZXF1ZXN0
KFJlcXVlc3RUeXBlID0gUmVxdWVzdFR5cGU6OkFueSk7CkBAIC0xNDYsMTEgKzE1MCwxMyBAQCBw
cml2YXRlOgogCiAgICAgdm9pZCBjbGVhclRyYW5zYWN0aW9uc09uQ29ubmVjdGlvbihVbmlxdWVJ
REJEYXRhYmFzZUNvbm5lY3Rpb24mKTsKIAotICAgIElEQlNlcnZlciYgbV9zZXJ2ZXI7CisgICAg
SURCU2VydmVyKiBtX3NlcnZlcjsKKyAgICBXZWFrUHRyPFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdl
cj4gbV9tYW5hZ2VyOwogICAgIElEQkRhdGFiYXNlSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAK
ICAgICBMaXN0SGFzaFNldDxSZWZQdHI8U2VydmVyT3BlbkRCUmVxdWVzdD4+IG1fcGVuZGluZ09w
ZW5EQlJlcXVlc3RzOwogICAgIFJlZlB0cjxTZXJ2ZXJPcGVuREJSZXF1ZXN0PiBtX2N1cnJlbnRP
cGVuREJSZXF1ZXN0OworICAgIEhhc2hTZXQ8SURCUmVzb3VyY2VJZGVudGlmaWVyPiBtX29wZW5E
QlJlcXVlc3RzRm9yU3BhY2VDaGVjazsKIAogICAgIExpc3RIYXNoU2V0PFJlZlB0cjxVbmlxdWVJ
REJEYXRhYmFzZUNvbm5lY3Rpb24+PiBtX29wZW5EYXRhYmFzZUNvbm5lY3Rpb25zOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURC
RGF0YWJhc2VDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uY3BwCmluZGV4IDc0M2VkY2MzYjhj
NTk0MDUxZjc5MTExNjUyNmFmNGQwMjE2OTEzNjcuLmQ2YWExZmI5YmE2MmJjOTljZDUwOTJjZjUw
Y2U2OTVkOTkwN2I2YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rp
b24uY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUg
IlNlcnZlck9wZW5EQlJlcXVlc3QuaCIKICNpbmNsdWRlICJVbmlxdWVJREJEYXRhYmFzZS5oIgor
I2luY2x1ZGUgIlVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBuYW1lc3BhY2UgSURCU2VydmVyIHsKQEAgLTQyLDExICs0MywxNCBAQCBSZWY8VW5pcXVl
SURCRGF0YWJhc2VDb25uZWN0aW9uPiBVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb246OmNyZWF0
ZShVbmlxdWVJREJEYQogCiBVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb246OlVuaXF1ZUlEQkRh
dGFiYXNlQ29ubmVjdGlvbihVbmlxdWVJREJEYXRhYmFzZSYgZGF0YWJhc2UsIFNlcnZlck9wZW5E
QlJlcXVlc3QmIHJlcXVlc3QpCiAgICAgOiBtX2RhdGFiYXNlKGRhdGFiYXNlKQotICAgICwgbV9z
ZXJ2ZXIoZGF0YWJhc2Uuc2VydmVyKCkpCisgICAgLCBtX21hbmFnZXIoZGF0YWJhc2UubWFuYWdl
cigpKQogICAgICwgbV9jb25uZWN0aW9uVG9DbGllbnQocmVxdWVzdC5jb25uZWN0aW9uKCkpCiAg
ICAgLCBtX29wZW5SZXF1ZXN0SWRlbnRpZmllcihyZXF1ZXN0LnJlcXVlc3REYXRhKCkucmVxdWVz
dElkZW50aWZpZXIoKSkKIHsKLSAgICBtX3NlcnZlci5yZWdpc3RlckRhdGFiYXNlQ29ubmVjdGlv
bigqdGhpcyk7CisgICAgaWYgKGF1dG8qIG1hbmFnZXIgPSBkYXRhYmFzZS5tYW5hZ2VyKCkpIHsK
KyAgICAgICAgbV9tYW5hZ2VyID0gV2Vha1B0ciB7ICptYW5hZ2VyIH07CisgICAgICAgIG1fbWFu
YWdlci0+cmVnaXN0ZXJDb25uZWN0aW9uKCp0aGlzKTsKKyAgICB9CiAgICAgbV9jb25uZWN0aW9u
VG9DbGllbnQtPnJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0aW9uKCp0aGlzKTsKIH0KIApAQCAtNTQs
MTAgKzU4LDE2IEBAIFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbjo6flVuaXF1ZUlEQkRhdGFi
YXNlQ29ubmVjdGlvbigpCiB7CiAgICAgQVNTRVJUKG1fdHJhbnNhY3Rpb25NYXAuaXNFbXB0eSgp
KTsKIAotICAgIG1fc2VydmVyLnVucmVnaXN0ZXJEYXRhYmFzZUNvbm5lY3Rpb24oKnRoaXMpOwor
ICAgIGlmIChtX21hbmFnZXIpCisgICAgICAgIG1fbWFuYWdlci0+dW5yZWdpc3RlckNvbm5lY3Rp
b24oKnRoaXMpOwogICAgIG1fY29ubmVjdGlvblRvQ2xpZW50LT51bnJlZ2lzdGVyRGF0YWJhc2VD
b25uZWN0aW9uKCp0aGlzKTsKIH0KIAorVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyKiBVbmlxdWVJ
REJEYXRhYmFzZUNvbm5lY3Rpb246Om1hbmFnZXIoKQoreworICAgIHJldHVybiBtX21hbmFnZXIu
Z2V0KCk7Cit9CisKIGJvb2wgVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uOjpoYXNOb25GaW5p
c2hlZFRyYW5zYWN0aW9ucygpIGNvbnN0CiB7CiAgICAgcmV0dXJuICFtX3RyYW5zYWN0aW9uTWFw
LmlzRW1wdHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uaAppbmRl
eCAyZTE5ZGZkMmRjOTE0MzRiZmM1ZTdjM2FlNGJlNjZkOGNkODU4ODExLi45OGZlYjU5Yzc2YmVh
ZWJlNzBlZGRlNGJlNTU4ZmNhODcxYzk4ZGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFi
YXNlQ29ubmVjdGlvbi5oCkBAIC0yNSw3ICsyNSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5j
bHVkZSAiSURCU2VydmVyLmgiCiAjaW5jbHVkZSAiVW5pcXVlSURCRGF0YWJhc2UuaCIKICNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9JZGVudGlmaWVkLmg+CkBAIC0zNiw2
ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSURCRXJyb3I7CiBjbGFzcyBJ
REJSZXN1bHREYXRhOworY2xhc3MgVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyOwogCiBuYW1lc3Bh
Y2UgSURCU2VydmVyIHsKIApAQCAtNTIsMTEgKzUyLDExIEBAIHB1YmxpYzoKIAogICAgIGNvbnN0
IElEQlJlc291cmNlSWRlbnRpZmllciYgb3BlblJlcXVlc3RJZGVudGlmaWVyKCkgeyByZXR1cm4g
bV9vcGVuUmVxdWVzdElkZW50aWZpZXI7IH0KICAgICBVbmlxdWVJREJEYXRhYmFzZSogZGF0YWJh
c2UoKSB7IHJldHVybiBtX2RhdGFiYXNlLmdldCgpOyB9Ci0gICAgSURCU2VydmVyKiBzZXJ2ZXIo
KSB7IHJldHVybiAmbV9zZXJ2ZXI7IH0KKyAgICBVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIqIG1h
bmFnZXIoKTsKICAgICBJREJDb25uZWN0aW9uVG9DbGllbnQmIGNvbm5lY3Rpb25Ub0NsaWVudCgp
IHsgcmV0dXJuIG1fY29ubmVjdGlvblRvQ2xpZW50OyB9CiAKLSAgICB2b2lkIGNvbm5lY3Rpb25Q
ZW5kaW5nQ2xvc2VGcm9tQ2xpZW50KCk7Ci0gICAgdm9pZCBjb25uZWN0aW9uQ2xvc2VkRnJvbUNs
aWVudCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29ubmVjdGlvblBlbmRpbmdDbG9zZUZy
b21DbGllbnQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbm5lY3Rpb25DbG9zZWRGcm9t
Q2xpZW50KCk7CiAKICAgICBib29sIGNsb3NlUGVuZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fY2xv
c2VQZW5kaW5nOyB9CiAKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogICAgIHZvaWQgZmlyZVZl
cnNpb25DaGFuZ2VFdmVudChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVu
dGlmaWVyLCB1aW50NjRfdCByZXF1ZXN0ZWRWZXJzaW9uKTsKICAgICBVbmlxdWVJREJEYXRhYmFz
ZVRyYW5zYWN0aW9uJiBjcmVhdGVWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24odWludDY0X3QgbmV3
VmVyc2lvbik7CiAKLSAgICB2b2lkIGVzdGFibGlzaFRyYW5zYWN0aW9uKGNvbnN0IElEQlRyYW5z
YWN0aW9uSW5mbyYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZXN0YWJsaXNoVHJhbnNhY3Rp
b24oY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJik7CiAgICAgdm9pZCBkaWRBYm9ydFRyYW5zYWN0
aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCBjb25zdCBJREJFcnJvciYpOwogICAg
IHZvaWQgZGlkQ29tbWl0VHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYs
IGNvbnN0IElEQkVycm9yJik7CiAgICAgdm9pZCBkaWRDcmVhdGVPYmplY3RTdG9yZShjb25zdCBJ
REJSZXN1bHREYXRhJik7CkBAIC03NSw4ICs3NSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZENy
ZWF0ZUluZGV4KGNvbnN0IElEQlJlc3VsdERhdGEmKTsKICAgICB2b2lkIGRpZERlbGV0ZUluZGV4
KGNvbnN0IElEQlJlc3VsdERhdGEmKTsKICAgICB2b2lkIGRpZFJlbmFtZUluZGV4KGNvbnN0IElE
QlJlc3VsdERhdGEmKTsKLSAgICB2b2lkIGRpZEZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQoY29uc3Qg
SURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgSW5kZXhlZERCOjpDb25u
ZWN0aW9uQ2xvc2VkT25CZWhhbGZPZlNlcnZlcik7Ci0gICAgdm9pZCBkaWRGaW5pc2hIYW5kbGlu
Z1ZlcnNpb25DaGFuZ2UoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklk
ZW50aWZpZXIpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkRmlyZVZlcnNpb25DaGFuZ2VF
dmVudChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBJbmRl
eGVkREI6OkNvbm5lY3Rpb25DbG9zZWRPbkJlaGFsZk9mU2VydmVyKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGRpZEZpbmlzaEhhbmRsaW5nVmVyc2lvbkNoYW5nZShjb25zdCBJREJSZXNvdXJj
ZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CiAKICAgICB2b2lkIGFib3J0VHJh
bnNhY3Rpb25XaXRob3V0Q2FsbGJhY2soVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYpOwog
CkBAIC04OCw3ICs4OCw3IEBAIHByaXZhdGU6CiAgICAgVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0
aW9uKFVuaXF1ZUlEQkRhdGFiYXNlJiwgU2VydmVyT3BlbkRCUmVxdWVzdCYpOwogCiAgICAgV2Vh
a1B0cjxVbmlxdWVJREJEYXRhYmFzZT4gbV9kYXRhYmFzZTsKLSAgICBJREJTZXJ2ZXImIG1fc2Vy
dmVyOworICAgIFdlYWtQdHI8VW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyPiBtX21hbmFnZXI7CiAg
ICAgUmVmPElEQkNvbm5lY3Rpb25Ub0NsaWVudD4gbV9jb25uZWN0aW9uVG9DbGllbnQ7CiAgICAg
SURCUmVzb3VyY2VJZGVudGlmaWVyIG1fb3BlblJlcXVlc3RJZGVudGlmaWVyOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0
YWJhc2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
VW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTA4ODZjNDg2ODRmMjA1MTEx
ZjY3ZTIwZTY5MmI0YjkzMWNkZDFjOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuaApAQCAt
MCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJREJE
YXRhYmFzZUlkZW50aWZpZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgQ2xp
ZW50T3JpZ2luOworCituYW1lc3BhY2UgSURCU2VydmVyIHsKKworY2xhc3MgSURCQmFja2luZ1N0
b3JlOworY2xhc3MgVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uOworY2xhc3MgVW5pcXVlSURC
RGF0YWJhc2VUcmFuc2FjdGlvbjsKKworY2xhc3MgVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyIDog
cHVibGljIENhbk1ha2VXZWFrUHRyPFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlcj4geworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHZpcnR1YWwgflVuaXF1ZUlEQkRh
dGFiYXNlTWFuYWdlcigpIHsgfQorICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckNvbm5lY3Rpb24o
VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bnJl
Z2lzdGVyQ29ubmVjdGlvbihVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHJlZ2lzdGVyVHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2Fj
dGlvbiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlclRyYW5zYWN0aW9uKFVuaXF1
ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mKSA9IDA7CisgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9w
dHI8SURCQmFja2luZ1N0b3JlPiBjcmVhdGVCYWNraW5nU3RvcmUoY29uc3QgSURCRGF0YWJhc2VJ
ZGVudGlmaWVyJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0U3BhY2UoY29uc3QgQ2xp
ZW50T3JpZ2luJiwgdWludDY0X3Qgc2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
JikgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgSURCU2VydmVyCisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcApp
bmRleCAxY2MwMjgxN2ExMjRjOGQwZWQ1MmYyMTNhYzhlNTAwNmJhNmI5NmRlLi42ZTNjZTA0NDA2
ZmNhZDMzYmNjMWM5ZTlmNjEyZTJhZjQxMDY5NDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlE
QkRhdGFiYXNlVHJhbnNhY3Rpb24uY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbmNsdWRlICJJ
REJJdGVyYXRlQ3Vyc29yRGF0YS5oIgogI2luY2x1ZGUgIklEQlJlc3VsdERhdGEuaCIKLSNpbmNs
dWRlICJJREJTZXJ2ZXIuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiVW5pcXVl
SURCRGF0YWJhc2UuaCIKIApAQCAtNTAsMTIgKzQ5LDE0IEBAIFVuaXF1ZUlEQkRhdGFiYXNlVHJh
bnNhY3Rpb246OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VD
b25uCiAgICAgaWYgKG1fdHJhbnNhY3Rpb25JbmZvLm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbk1v
ZGU6OlZlcnNpb25jaGFuZ2UpCiAgICAgICAgIG1fb3JpZ2luYWxEYXRhYmFzZUluZm8gPSBtYWtl
VW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oZGF0YWJhc2UtPmluZm8oKSk7CiAKLSAgICBkYXRhYmFz
ZUNvbm5lY3Rpb24oKS5zZXJ2ZXIoKS0+cmVnaXN0ZXJUcmFuc2FjdGlvbigqdGhpcyk7CisgICAg
aWYgKGF1dG8qIG1hbmFnZXIgPSBkYXRhYmFzZUNvbm5lY3Rpb24oKS5tYW5hZ2VyKCkpCisgICAg
ICAgIG1hbmFnZXItPnJlZ2lzdGVyVHJhbnNhY3Rpb24oKnRoaXMpOwogfQogCiBVbmlxdWVJREJE
YXRhYmFzZVRyYW5zYWN0aW9uOjp+VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbigpCiB7Ci0g
ICAgZGF0YWJhc2VDb25uZWN0aW9uKCkuc2VydmVyKCktPnVucmVnaXN0ZXJUcmFuc2FjdGlvbigq
dGhpcyk7CisgICAgaWYgKGF1dG8qIG1hbmFnZXIgPSBkYXRhYmFzZUNvbm5lY3Rpb24oKS5tYW5h
Z2VyKCkpCisgICAgICAgIG1hbmFnZXItPnVucmVnaXN0ZXJUcmFuc2FjdGlvbigqdGhpcyk7CiB9
CiAKIFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYgVW5pcXVlSURCRGF0YWJhc2VUcmFuc2Fj
dGlvbjo6ZGF0YWJhc2VDb25uZWN0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VU
cmFuc2FjdGlvbi5oCmluZGV4IDk1OTY2NTJhZGNkYmE3YTA0OGI2MTlmNzRlZjFhOTJjZWVmOWUw
ZTUuLmZiYTg1YzE3MzhiNzM0MmUxMjg4MDBhZWI5ZDFkYTQ2N2VlN2ExMDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFz
ZVRyYW5zYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uaApAQCAtNTEsNyArNTEsNyBAQCBuYW1l
c3BhY2UgSURCU2VydmVyIHsKIGNsYXNzIElEQlNlcnZlcjsKIGNsYXNzIFVuaXF1ZUlEQkRhdGFi
YXNlQ29ubmVjdGlvbjsKIAotY2xhc3MgVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiA6IHB1
YmxpYyBSZWZDb3VudGVkPFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24+IHsKK2NsYXNzIFVu
aXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24gOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8VW5pcXVl
SURCRGF0YWJhc2VUcmFuc2FjdGlvbj4sIHB1YmxpYyBSZWZDb3VudGVkPFVuaXF1ZUlEQkRhdGFi
YXNlVHJhbnNhY3Rpb24+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFVuaXF1ZUlEQkRhdGFi
YXNlVHJhbnNhY3Rpb24+IGNyZWF0ZShVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mLCBjb25z
dCBJREJUcmFuc2FjdGlvbkluZm8mKTsKIApAQCAtNTksMjkgKzU5LDI5IEBAIHB1YmxpYzoKIAog
ICAgIFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYgZGF0YWJhc2VDb25uZWN0aW9uKCk7CiAg
ICAgY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJiBpbmZvKCkgY29uc3QgeyByZXR1cm4gbV90cmFu
c2FjdGlvbkluZm87IH0KLSAgICBib29sIGlzVmVyc2lvbkNoYW5nZSgpIGNvbnN0OworICAgIFdF
QkNPUkVfRVhQT1JUIGJvb2wgaXNWZXJzaW9uQ2hhbmdlKCkgY29uc3Q7CiAgICAgYm9vbCBpc1Jl
YWRPbmx5KCkgY29uc3Q7CiAKICAgICBJREJEYXRhYmFzZUluZm8qIG9yaWdpbmFsRGF0YWJhc2VJ
bmZvKCkgY29uc3Q7CiAKLSAgICB2b2lkIGFib3J0KCk7Ci0gICAgdm9pZCBhYm9ydFdpdGhvdXRD
YWxsYmFjaygpOwotICAgIHZvaWQgY29tbWl0KHVpbnQ2NF90IHBlbmRpbmdSZXF1ZXN0Q291bnQp
OwotCi0gICAgdm9pZCBjcmVhdGVPYmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNv
bnN0IElEQk9iamVjdFN0b3JlSW5mbyYpOwotICAgIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoY29u
c3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSk7Ci0gICAg
dm9pZCByZW5hbWVPYmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0YSYsIHVpbnQ2NF90IG9i
amVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lKTsKLSAgICB2b2lkIGNs
ZWFyT2JqZWN0U3RvcmUoY29uc3QgSURCUmVxdWVzdERhdGEmLCB1aW50NjRfdCBvYmplY3RTdG9y
ZUlkZW50aWZpZXIpOwotICAgIHZvaWQgY3JlYXRlSW5kZXgoY29uc3QgSURCUmVxdWVzdERhdGEm
LCBjb25zdCBJREJJbmRleEluZm8mKTsKLSAgICB2b2lkIGRlbGV0ZUluZGV4KGNvbnN0IElEQlJl
cXVlc3REYXRhJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IGluZGV4TmFtZSk7Ci0gICAgdm9pZCByZW5hbWVJbmRleChjb25zdCBJREJSZXF1ZXN0RGF0YSYs
IHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgdWludDY0X3QgaW5kZXhJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIG5ld05hbWUpOwotICAgIHZvaWQgcHV0T3JBZGQoY29uc3QgSURCUmVx
dWVzdERhdGEmLCBjb25zdCBJREJLZXlEYXRhJiwgY29uc3QgSURCVmFsdWUmLCBJbmRleGVkREI6
Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSk7Ci0gICAgdm9pZCBnZXRSZWNvcmQoY29uc3QgSURC
UmVxdWVzdERhdGEmLCBjb25zdCBJREJHZXRSZWNvcmREYXRhJik7Ci0gICAgdm9pZCBnZXRBbGxS
ZWNvcmRzKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCR2V0QWxsUmVjb3Jkc0RhdGEm
KTsKLSAgICB2b2lkIGdldENvdW50KGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5
UmFuZ2VEYXRhJik7Ci0gICAgdm9pZCBkZWxldGVSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEm
LCBjb25zdCBJREJLZXlSYW5nZURhdGEmKTsKLSAgICB2b2lkIG9wZW5DdXJzb3IoY29uc3QgSURC
UmVxdWVzdERhdGEmLCBjb25zdCBJREJDdXJzb3JJbmZvJik7Ci0gICAgdm9pZCBpdGVyYXRlQ3Vy
c29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCSXRlcmF0ZUN1cnNvckRhdGEmKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFib3J0KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBhYm9ydFdpdGhvdXRDYWxsYmFjaygpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29tbWl0
KHVpbnQ2NF90IHBlbmRpbmdSZXF1ZXN0Q291bnQpOworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBjcmVhdGVPYmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQk9iamVj
dFN0b3JlSW5mbyYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUo
Y29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW5hbWVPYmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0
RGF0YSYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdO
YW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyT2JqZWN0U3RvcmUoY29uc3QgSURC
UmVxdWVzdERhdGEmLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgY3JlYXRlSW5kZXgoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJ
REJJbmRleEluZm8mKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUluZGV4KGNvbnN0
IElEQlJlcXVlc3REYXRhJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIGluZGV4TmFtZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW5hbWVJbmRleChj
b25zdCBJREJSZXF1ZXN0RGF0YSYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgdWlu
dDY0X3QgaW5kZXhJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgcHV0T3JBZGQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJL
ZXlEYXRhJiwgY29uc3QgSURCVmFsdWUmLCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRl
TW9kZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRSZWNvcmQoY29uc3QgSURCUmVxdWVz
dERhdGEmLCBjb25zdCBJREJHZXRSZWNvcmREYXRhJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBnZXRBbGxSZWNvcmRzKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCR2V0QWxsUmVj
b3Jkc0RhdGEmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldENvdW50KGNvbnN0IElEQlJl
cXVlc3REYXRhJiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJik7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBkZWxldGVSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlSYW5n
ZURhdGEmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG9wZW5DdXJzb3IoY29uc3QgSURCUmVx
dWVzdERhdGEmLCBjb25zdCBJREJDdXJzb3JJbmZvJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBpdGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCSXRlcmF0ZUN1
cnNvckRhdGEmKTsKIAogICAgIHZvaWQgZGlkQWN0aXZhdGVJbkJhY2tpbmdTdG9yZShjb25zdCBJ
REJFcnJvciYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zaGFyZWQvSURCRXJyb3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3No
YXJlZC9JREJFcnJvci5oCmluZGV4IGZmMTdjOThhNDExNWRlNjJjYWNjNzBhZDMyNTJiZDZlZGYx
MWYzOTkuLmIzMGFkMzkxNzZmMDNmZjBkNmM5Mzk4ZDZiM2VkMTljZDJlOTkyMWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJFcnJvci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJFcnJvci5oCkBA
IC01Miw2ICs1Miw3IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgbWVzc2FnZSgpIGNvbnN0OwogCiAg
ICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhbV9jb2RlOyB9CisgICAgb3BlcmF0b3Ig
Ym9vbCgpIGNvbnN0IHsgcmV0dXJuICFpc051bGwoKTsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQg
SURCRXJyb3IgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3REYXRhLmgKaW5kZXggMDE4
Y2IxM2U3NWViNjQ1ZGQxMTRlMjRmNmRiZmVhMzRjZjU1YjE2NC4uMDAxNzg3YTY2NThhNDE3OGI2
YTc5NzEyOGEwNGRhMzZiOGFmZGZmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3REYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3REYXRhLmgKQEAgLTU2LDggKzU2LDgg
QEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIElEQlJlcXVlc3REYXRhIGlzb2xhdGVkQ29w
eSgpIGNvbnN0OwogCiAgICAgSURCQ29ubmVjdGlvbklkZW50aWZpZXIgc2VydmVyQ29ubmVjdGlv
bklkZW50aWZpZXIoKSBjb25zdDsKLSAgICBJREJSZXNvdXJjZUlkZW50aWZpZXIgcmVxdWVzdElk
ZW50aWZpZXIoKSBjb25zdDsKLSAgICBJREJSZXNvdXJjZUlkZW50aWZpZXIgdHJhbnNhY3Rpb25J
ZGVudGlmaWVyKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgSURCUmVzb3VyY2VJZGVudGlm
aWVyIHJlcXVlc3RJZGVudGlmaWVyKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgSURCUmVz
b3VyY2VJZGVudGlmaWVyIHRyYW5zYWN0aW9uSWRlbnRpZmllcigpIGNvbnN0OwogICAgIHVpbnQ2
NF90IG9iamVjdFN0b3JlSWRlbnRpZmllcigpIGNvbnN0OwogICAgIHVpbnQ2NF90IGluZGV4SWRl
bnRpZmllcigpIGNvbnN0OwogICAgIEluZGV4ZWREQjo6SW5kZXhSZWNvcmRUeXBlIGluZGV4UmVj
b3JkVHlwZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2hhcmVkL0lEQlJlc291cmNlSWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc291cmNlSWRlbnRpZmllci5oCmluZGV4IGJlMTYx
OTdmNjM0YTU5NmMzOWU1MTMwMjg1OTA2ODM1NzQ1ODY4MmEuLmJkMzk1NGEyODk3M2NlYjhhNWJm
NjQ4ZjRhYTUxMjNmMmVmYmVmNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NoYXJlZC9JREJSZXNvdXJjZUlkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzb3VyY2VJZGVudGlmaWVyLmgKQEAg
LTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIElEQlJlc291cmNlSWRlbnRpZmllcihjb25zdCBJ
REJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSYsIGNvbnN0IElEQlJlcXVlc3QmKTsKICAgICBl
eHBsaWNpdCBJREJSZXNvdXJjZUlkZW50aWZpZXIoY29uc3QgSURCU2VydmVyOjpJREJDb25uZWN0
aW9uVG9DbGllbnQmKTsKIAotICAgIHN0YXRpYyBJREJSZXNvdXJjZUlkZW50aWZpZXIgZW1wdHlW
YWx1ZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBJREJSZXNvdXJjZUlkZW50aWZpZXIg
ZW1wdHlWYWx1ZSgpOwogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0CiAgICAgewogICAgICAgICBy
ZXR1cm4gIW1fcmVzb3VyY2VOdW1iZXIgJiYgIW1faWRiQ29ubmVjdGlvbklkZW50aWZpZXI7CkBA
IC02MCw3ICs2MCw4IEBAIHB1YmxpYzoKICAgICAgICAgdWludDY0X3QgaGFzaENvZGVzWzJdID0g
eyBtX2lkYkNvbm5lY3Rpb25JZGVudGlmaWVyLnRvVUludDY0KCksIG1fcmVzb3VyY2VOdW1iZXIg
fTsKICAgICAgICAgcmV0dXJuIFN0cmluZ0hhc2hlcjo6aGFzaE1lbW9yeTxzaXplb2YoaGFzaENv
ZGVzKT4oaGFzaENvZGVzKTsKICAgICB9Ci0gICAgCisKKyAgICBib29sIG9wZXJhdG9yIT0oY29u
c3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9
PSBvdGhlcik7IH0KICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgSURCUmVzb3VyY2VJZGVudGlm
aWVyJiBvdGhlcikgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX2lkYkNvbm5lY3Rpb25J
ZGVudGlmaWVyID09IG90aGVyLm1faWRiQ29ubmVjdGlvbklkZW50aWZpZXIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjNWY0NGVm
MDRhNzA1OGIxOWIyNGM4NWQxMWQ2M2Q5NDU0ZTNkYjBjLi5jMjQ5ZjE1NGIzYWU0OTU1MTQ5YzM5
ZDgxM2FmZGE1YTdhMzdhNWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNTQxLDEwICsxNTQxLDEwIEBACiAJCTUxMTIzRTJG
Mjc2OTQwQ0EwMEY5RDQxQiAvKiBOb3RpZmljYXRpb25EYXRhLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTEyM0UyQzI3NjkzQzMyMDBGOUQ0MUIgLyog
Tm90aWZpY2F0aW9uRGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTUxMTdGMzBFMjVFNjEwMjAwMDJBOUYxRSAvKiBSZW1vdGVDb21tYW5kTGlz
dGVuZXJDb2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTExN0YzMEMyNUU2MTAxRjAwMkE5RjFFIC8qIFJlbW90ZUNvbW1hbmRMaXN0ZW5lckNvY29h
LmggKi87IH07CiAJCTUxMUVDMTI4MUM1MEFBQ0EwMDMyRjk4MyAvKiBJREJTZXJpYWxpemF0aW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTFFQzEy
NjFDNTBBQTU3MDAzMkY5ODMgLyogSURCU2VyaWFsaXphdGlvbi5oICovOyB9OwotCQk1MTFFQzEy
QzFDNTBBQkJGMDAzMkY5ODMgLyogU1FMaXRlSURCVHJhbnNhY3Rpb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMUVDMTJBMUM1MEFCQkEwMDMyRjk4
MyAvKiBTUUxpdGVJREJUcmFuc2FjdGlvbi5oICovOyB9OworCQk1MTFFQzEyQzFDNTBBQkJGMDAz
MkY5ODMgLyogU1FMaXRlSURCVHJhbnNhY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMUVDMTJBMUM1MEFCQkEwMDMyRjk4MyAvKiBTUUxpdGVJ
REJUcmFuc2FjdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTUxMUVDMTMwMUM1MEFCRjUwMDMyRjk4MyAvKiBTUUxpdGVJREJDdXJzb3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMUVDMTJFMUM1
MEFCRUMwMDMyRjk4MyAvKiBTUUxpdGVJREJDdXJzb3IuaCAqLzsgfTsKIAkJNTEyMEJCQUYxRjFD
RUNFNzAwRUZFQkYxIC8qIENvb2tpZVN0b3JhZ2VPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyMEJCQUQxRjFDRTc3MDAwRUZFQkYxIC8q
IENvb2tpZVN0b3JhZ2VPYnNlcnZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07Ci0JCTUxMkJEQjRCMUM0NTZGRkEwMDY0OTRERiAvKiBTUUxpdGVJREJC
YWNraW5nU3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxMkJEQjQ5MUM0NTZGQUIwMDY0OTRERiAvKiBTUUxpdGVJREJCYWNraW5nU3RvcmUuaCAq
LzsgfTsKKwkJNTEyQkRCNEIxQzQ1NkZGQTAwNjQ5NERGIC8qIFNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyQkRC
NDkxQzQ1NkZBQjAwNjQ5NERGIC8qIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxMkREOEY1MEQ5MUU2QUYw
MDBGODlFRSAvKiBMZWdhY3lXZWJBcmNoaXZlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTJERDhFQjBEOTFFNkFGMDAwRjg5RUUgLyogTGVnYWN5V2Vi
QXJjaGl2ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTUxMkREOEY2MEQ5MUU2QUYwMDBGODlFRSAvKiBBcmNoaXZlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTJERDhFQzBEOTFFNkFGMDAwRjg5RUUg
LyogQXJjaGl2ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTUxMkREOEY4MEQ5MUU2QUYwMDBGODlFRSAvKiBBcmNoaXZlUmVzb3VyY2VDb2xsZWN0
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTJE
RDhFRTBEOTFFNkFGMDAwRjg5RUUgLyogQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbi5oICovOyB9
OwpAQCAtMTU5MCw3ICsxNTkwLDcgQEAKIAkJNTE2RDdENzIxQkI1RjBCRDAwQUY3Qzc3IC8qIElE
QkNvbm5lY3Rpb25Ub0NsaWVudERlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTZEN0Q2RTFCQjVGMDY1MDBBRjdDNzcgLyogSURCQ29ubmVj
dGlvblRvQ2xpZW50RGVsZWdhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk1MTZGN0Y2RDFDMzFFMzlBMDBGMTExREMgLyogU2VydmVyT3BlbkRC
UmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTE2RjdGNkMxQzMxQzc5RDAwRjExMURDIC8qIFNlcnZlck9wZW5EQlJlcXVlc3QuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTcxMzhGMDFCRUQx
RDFBMDAwRDVGMDEgLyogSW5kZXhLZXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxNzEzOEVFMUJFRDFEMTcwMDBENUYwMSAvKiBJbmRleEtleS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTUxNzEzOEY4
MUJGMTI4QkIwMDBENUYwMSAvKiBJbmRleFZhbHVlU3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNzEzOEY2MUJGMTIyNjIwMDBENUYwMSAvKiBJ
bmRleFZhbHVlU3RvcmUuaCAqLzsgfTsKKwkJNTE3MTM4RjgxQkYxMjhCQjAwMEQ1RjAxIC8qIElu
ZGV4VmFsdWVTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTE3MTM4RjYxQkYxMjI2MjAwMEQ1RjAxIC8qIEluZGV4VmFsdWVTdG9yZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxNzEzOEZDMUJG
M0FERjQwMDBENUYwMSAvKiBJREJDdXJzb3JJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTcxMzhGQTFCRjNBREFDMDAwRDVGMDEgLyogSURCQ3Vy
c29ySW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTUxNzEzOTA2MUJGNjRERUMwMDBENUYwMSAvKiBNZW1vcnlPYmplY3RTdG9yZUN1cnNvci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3MTM5MDQx
QkY2NERFMzAwMEQ1RjAxIC8qIE1lbW9yeU9iamVjdFN0b3JlQ3Vyc29yLmggKi87IH07CiAJCTUx
NzEzOTA4MUJGNjRERUYwMDBENUYwMSAvKiBNZW1vcnlDdXJzb3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNzEzOTAyMUJGNjRERTMwMDBENUYwMSAv
KiBNZW1vcnlDdXJzb3IuaCAqLzsgfTsKQEAgLTE2NjYsNyArMTY2Niw3IEBACiAJCTUxQjkxNDEw
MUZEMjc4MkQwMEVFMjg1OSAvKiBSZWdpc3RyYXRpb25EYXRhYmFzZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCOTE0MEMxRkQyNzgyNTAwRUUyODU5
IC8qIFJlZ2lzdHJhdGlvbkRhdGFiYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFCOTE0MTExRkQyNzgyRDAwRUUyODU5IC8qIFJlZ2lzdHJh
dGlvblN0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MUI5MTQwQjFGRDI3ODI1MDBFRTI4NTkgLyogUmVnaXN0cmF0aW9uU3RvcmUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUJBNEFDNDFCQkI1
Q0Q4MDBERjNENkQgLyogSURCRGF0YWJhc2VJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJBNEFDMjFCQkI1Q0JGMDBERjNENkQgLyogSURCRGF0
YWJhc2VJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKLQkJNTFCQTRBQ0IxQkJDNUJEOTAwREYzRDZEIC8qIE1lbW9yeUlEQkJhY2tpbmdTdG9yZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCQTRBQzkx
QkJDNUI5RTAwREYzRDZEIC8qIE1lbW9yeUlEQkJhY2tpbmdTdG9yZS5oICovOyB9OworCQk1MUJB
NEFDQjFCQkM1QkQ5MDBERjNENkQgLyogTWVtb3J5SURCQmFja2luZ1N0b3JlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJBNEFDOTFCQkM1QjlFMDBE
RjNENkQgLyogTWVtb3J5SURCQmFja2luZ1N0b3JlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFCQTRBQ0MxQkJDNUJERDAwREYzRDZEIC8qIElE
QkJhY2tpbmdTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTFCQTRBQzcxQkJDNUFENjAwREYzRDZEIC8qIElEQkJhY2tpbmdTdG9yZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxQkE5NDcxMjNB
QzMwNTMwMDQ0NDg0NiAvKiBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCQTk0NkYyM0FDMzA1MDAwNDQ0ODQ2
IC8qIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFCQ0NFMzAxRjhGMTc5RTAwNkJBMEVEIC8qIFNlcnZp
Y2VXb3JrZXJUaHJlYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxN0M4NzEwMUY4RUU3MkUwMEVCODA3NiAvKiBTZXJ2aWNlV29ya2VyVGhyZWFkLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE2ODIs
NyArMTY4Miw3IEBACiAJCTUxRTBCQUJCMERBNTU0NzEwMEE5RTQxNyAvKiBTdG9yYWdlRXZlbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTBCQUI5
MERBNTU0NzEwMEE5RTQxNyAvKiBTdG9yYWdlRXZlbnQuaCAqLzsgfTsKIAkJNTFFMEJBRUIwREE1
NUQ0QTAwQTlFNDE3IC8qIEpTU3RvcmFnZUV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUwQkFFOTBEQTU1RDRBMDBBOUU0MTcgLyogSlNTdG9y
YWdlRXZlbnQuaCAqLzsgfTsKIAkJNTFFMEJCMzgwREE1QUNCNjAwQTlFNDE3IC8qIFN0b3JhZ2VN
YXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTBC
QjM2MERBNUFDQjYwMEE5RTQxNyAvKiBTdG9yYWdlTWFwLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNTFFMUJBQzMxQkQ4MDY0RTAwNTVEODFGIC8q
IE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUxQkFDMTFCRDgwNjQ3MDA1NUQ4MUYgLyogTWVtb3J5
QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uaCAqLzsgfTsKKwkJNTFFMUJBQzMxQkQ4MDY0RTAwNTVE
ODFGIC8qIE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUxQkFDMTFCRDgwNjQ3MDA1NUQ4MUYgLyog
TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUUyNjkzNzFERDNCRDlCMDA2QjZBNTggLyogSURC
SXRlcmF0ZUN1cnNvckRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxRTI2OTM1MUREM0JEOTEwMDZCNkE1OCAvKiBJREJJdGVyYXRlQ3Vyc29yRGF0
YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUx
RTM5OTAwMUQ2RTQ3NTAwMDlDODgzMSAvKiBHYW1lQ29udHJvbGxlckdhbWVwYWQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTM5OEZDMUQ2RTQ3NEIw
MDlDODgzMSAvKiBHYW1lQ29udHJvbGxlckdhbWVwYWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUUzOTkwMjFENkU0NzUwMDA5Qzg4MzEgLyog
R2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTM5OEZFMUQ2RTQ3NEIwMDlDODgzMSAvKiBHYW1lQ29u
dHJvbGxlckdhbWVwYWRQcm92aWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC0xNjkyLDcgKzE2OTIsNyBAQAogCQk1MUVDQzNGODIwMDU4N0JG
MDA0ODNFQUUgLyogTWVzc2FnZVBvcnRDaGFubmVsUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRUNDM0YxMjAwNTg3QjUwMDQ4M0VBRSAv
KiBNZXNzYWdlUG9ydENoYW5uZWxSZWdpc3RyeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxRUNDM0ZEMjAwNTkzMEQwMDQ4M0VBRSAvKiBNZXNz
YWdlUG9ydENoYW5uZWxQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTFFQ0MzRkIyMDA1OTMwMTAwNDgzRUFFIC8qIE1lc3NhZ2VQb3J0Q2hh
bm5lbFByb3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNTFFRTdCMzgxQUE1MEIwNTAwRjkyQjIxIC8qIFJlc291cmNlTG9hZEluZm8uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRUU3QjM3MUFB
NTBCMDUwMEY5MkIyMSAvKiBSZXNvdXJjZUxvYWRJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNTFFRUFBNzQxQkVGRkFCMTAwMjE4MDA4IC8q
IEluZGV4VmFsdWVFbnRyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTFFRUFBNzIxQkVGRkE3OTAwMjE4MDA4IC8qIEluZGV4VmFsdWVFbnRyeS5oICov
OyB9OworCQk1MUVFQUE3NDFCRUZGQUIxMDAyMTgwMDggLyogSW5kZXhWYWx1ZUVudHJ5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUVFQUE3MjFCRUZG
QTc5MDAyMTgwMDggLyogSW5kZXhWYWx1ZUVudHJ5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFGMTc0RkUxRjM1ODk5MjAwQzc0OTUwIC8qIFdv
cmtlclR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxRjE3NEZDMUYzNTg5ODgwMEM3NDk1MCAvKiBXb3JrZXJUeXBlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFGMTc1MDMxRjM1OEIzQjAwQzc0
OTUwIC8qIEpTU2VydmljZVdvcmtlclVwZGF0ZVZpYUNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUYxNzUwMTFGMzU4QjM2MDBDNzQ5NTAgLyog
SlNTZXJ2aWNlV29ya2VyVXBkYXRlVmlhQ2FjaGUuaCAqLzsgfTsKIAkJNTFGMTc1MDYxRjM1OEJG
NzAwQzc0OTUwIC8qIEpTV29ya2VyVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTFGMTc1MDUxRjM1OEJERTAwQzc0OTUwIC8qIEpTV29ya2VyVHlw
ZS5oICovOyB9OwpAQCAtMjk5Miw2ICsyOTkyLDcgQEAKIAkJOTNCMkQ4MTYwRjk5MjBEMjAwNkFF
NkIyIC8qIFN1ZGRlblRlcm1pbmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5M0IyRDgxNTBGOTkyMEQyMDA2QUU2QjIgLyogU3VkZGVuVGVybWlu
YXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk5M0IzOEVDMzI1ODIxREI0MDAxOThFNjMgLyogV2ViU3BlZWNoUmVjb2duaXplclRhc2suaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjM4RUJBMjU4
MjE5M0IwMDE5OEU2MyAvKiBXZWJTcGVlY2hSZWNvZ25pemVyVGFzay5oICovOyB9OwogCQk5M0Iz
OEVDNDI1ODIxREI3MDAxOThFNjMgLyogV2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2NrLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0IzOEVCQjI1ODIx
OTNEMDAxOThFNjMgLyogV2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2NrLmggKi87IH07CisJCTkz
QjYzMUUyMjdBQkExRTYwMDQ0M0E0NCAvKiBVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjYzMUUwMjdBQkEx
RTIwMDQ0M0E0NCAvKiBVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0I2QTBFNjBCMEJDQTVDMDBGNTAy
N0EgLyogQ29udGV4dE1lbnUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDkzQjZBMEU1MEIwQkNBNUMwMEY1MDI3QSAvKiBDb250ZXh0TWVudS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzQjcwRDY0MDlF
QjBDN0MwMDlEODQ2OCAvKiBKU0RPTUJpbmRpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjcwRDQ4MDlFQjBDN0MwMDlEODQ2OCAvKiBKU0RPTUJp
bmRpbmcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk5M0I3MEQ2QTA5RUIwQzdDMDA5RDg0NjggLyogSlNFdmVudExpc3RlbmVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0I3MEQ0RTA5RUIwQzdDMDA5
RDg0NjggLyogSlNFdmVudExpc3RlbmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEyODIxLDYgKzEyODIyLDcgQEAKIAkJOTNCMzhFQkEyNTgy
MTkzQjAwMTk4RTYzIC8qIFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTkzQjM4RUJCMjU4MjE5M0QwMDE5OEU2MyAvKiBXZWJTcGVlY2hS
ZWNvZ25pemVyVGFza01vY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
U3BlZWNoUmVjb2duaXplclRhc2tNb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTkzQjM4RUJDMjU4MjE5M0UwMDE5OEU2MyAvKiBXZWJTcGVlY2hSZWNvZ25pemVyVGFzay5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlNwZWVjaFJlY29nbml6
ZXJUYXNrLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0I2MzFFMDI3QUJBMUUy
MDA0NDNBNDQgLyogVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5M0I2QTBFNTBCMEJDQTVDMDBGNTAyN0EgLyogQ29udGV4dE1lbnUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnRleHRNZW51Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQjcwRDQ4MDlFQjBDN0MwMDlEODQ2OCAvKiBKU0RP
TUJpbmRpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NQmluZGlu
Zy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0I3MEQ0RDA5RUIwQzdDMDA5RDg0
NjggLyogSlNFdmVudExpc3RlbmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU0V2ZW50TGlzdGVuZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMjIxMzYsNiArMjIxMzgsNyBAQAogCQkJCTUxODg2NERGMUJCQUYzMEYwMEU1NDBDOSAvKiBV
bmlxdWVJREJEYXRhYmFzZS5oICovLAogCQkJCTUxOThGN0EyMUJCREFBMjkwMEUyQ0M1RiAvKiBV
bmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uY3BwICovLAogCQkJCTUxOThGN0EzMUJCREFBMjkw
MEUyQ0M1RiAvKiBVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uaCAqLywKKwkJCQk5M0I2MzFF
MDI3QUJBMUUyMDA0NDNBNDQgLyogVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyLmggKi8sCiAJCQkJ
NTE5OEY3QTYxQkJERDM4MTAwRTJDQzVGIC8qIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24u
Y3BwICovLAogCQkJCTUxOThGN0E3MUJCREQzODEwMEUyQ0M1RiAvKiBVbmlxdWVJREJEYXRhYmFz
ZVRyYW5zYWN0aW9uLmggKi8sCiAJCQkpOwpAQCAtMzc3NTEsNiArMzc3NTQsNyBAQAogCQkJCUE4
NjNFMjAxMTM0MzQxMjAwMDI3NDkyNiAvKiBVbmljb2RlQmlkaS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTE4ODY0RTExQkJBRjU3NDAwRTU0MEM5IC8qIFVuaXF1ZUlEQkRhdGFiYXNlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MTk4RjdBNTFCQkRCNzkzMDBFMkNDNUYgLyogVW5pcXVlSURCRGF0YWJh
c2VDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk5M0I2MzFFMjI3QUJBMUU2MDA0NDNB
NDQgLyogVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTk4
RjdBOTFCQkREMzg1MDBFMkNDNUYgLyogVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRTRBRkNGQTUwREFGMjlBMzAwRjVGNTVDIC8qIFVuaXRCZXppZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCUMxOENDMEE0MjU4MEVGQjEwMDNENzVGQiAvKiBVbml2ZXJz
YWxBY2Nlc3Nab29tLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAK
aW5kZXggYTM0Zjc5YmRlM2UwODE2OTZkNzNhNTVmYmY1OTA1OGJmNmQ4ZjM3OS4uNTczZmQ4Y2Yy
YjZjZmZjMTU0MWM4NGIyMmJkMGIyNGExY2ZiZDVmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAKQEAgLTUyLDEzICs1MiwxMyBAQAogI2luY2x1ZGUgIk5ldHdvcmtTb2NrZXRDaGFubmVs
TWVzc2FnZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrU29ja2V0U3RyZWFtLmgiCiAjaW5jbHVkZSAi
TmV0d29ya1NvY2tldFN0cmVhbU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VN
YW5hZ2VyLmgiCiAjaW5jbHVkZSAiUGluZ0xvYWQuaCIKICNpbmNsdWRlICJQcmVjb25uZWN0VGFz
ay5oIgogI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlclByb3h5LmgiCiAjaW5j
bHVkZSAiU2VydmljZVdvcmtlckZldGNoVGFza01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViRXJyb3JzLmgiCi0jaW5jbHVkZSAiV2Vi
SURCU2VydmVyLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAi
V2ViUHJvY2Vzc1Bvb2xNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5oIgpAQCAtMzkwLDggKzM5MCwxMiBAQCBib29sIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25u
ZQogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1cGRhdGVRdW90YUJhc2Vk
T25TcGFjZVVzYWdlRm9yVGVzdGluZyhjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbikKIHsKLSAg
ICBhdXRvIHN0b3JhZ2VRdW90YU1hbmFnZXIgPSBtX25ldHdvcmtQcm9jZXNzLT5zdG9yYWdlUXVv
dGFNYW5hZ2VyKHNlc3Npb25JRCgpLCBvcmlnaW4pOwotICAgIHN0b3JhZ2VRdW90YU1hbmFnZXIt
PnJlc2V0UXVvdGFVcGRhdGVkQmFzZWRPblVzYWdlRm9yVGVzdGluZygpOworICAgIGF1dG8qIHNl
c3Npb24gPSBtX25ldHdvcmtQcm9jZXNzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQoKSk7Cisg
ICAgaWYgKCFzZXNzaW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoYXV0byogc3RvcmFn
ZU1hbmFnZXIgPSBzZXNzaW9uLT5zdG9yYWdlTWFuYWdlcigpKQorICAgICAgICBzdG9yYWdlTWFu
YWdlci0+cmVzZXRRdW90YVVwZGF0ZWRCYXNlZE9uVXNhZ2VGb3JUZXN0aW5nKG9yaWdpbik7CiB9
CiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZENsb3NlKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbikKQEAgLTk4Myw4ICs5ODcsMTAgQEAgdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXNGb3JJbmRleGVk
REIoY29uc3QKICAgICAgICAgZm9yIChhdXRvJiBmaWxlIDogZmlsZVJlZmVyZW5jZXMpCiAgICAg
ICAgICAgICBmaWxlLT5yZXZva2VGaWxlQWNjZXNzKCk7CiAKLSAgICAgICAgaWYgKGF1dG8qIHNl
c3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpKQotICAgICAgICAgICAgc2Vzc2lvbi0+ZW5zdXJlV2Vi
SURCU2VydmVyKCkucmVnaXN0ZXJUZW1wb3JhcnlCbG9iRmlsZVBhdGhzKG1fY29ubmVjdGlvbiwg
ZmlsZVBhdGhzKTsKKyAgICAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigp
KSB7CisgICAgICAgICAgICBpZiAoYXV0byogc3RvcmFnZU1hbmFnZXIgPSBzZXNzaW9uLT5zdG9y
YWdlTWFuYWdlcigpKQorICAgICAgICAgICAgICAgIHN0b3JhZ2VNYW5hZ2VyLT5yZWdpc3RlclRl
bXBvcmFyeUJsb2JGaWxlUGF0aHMobV9jb25uZWN0aW9uLCBmaWxlUGF0aHMpOworICAgICAgICB9
CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoZmlsZVBhdGhzKSk7CiAgICAgfSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
CmluZGV4IDdjNzllMmEyMDk3NmExMzljN2Y2NjdmMTEzYzQ4OTQ2ZGVkZDU2NDEuLjExMTgxZTI3
OGI4MjdlN2M2MDE2ZDAxMGJlMmFiMjY2MzFmNGZlNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0yNjQsOCArMjY0LDYgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikKICAgICAvLyBNYWtl
IHN1cmUgd2UgZmx1c2ggYWxsIGNvb2tpZXMgdG8gZGlzayBiZWZvcmUgZXhpdGluZy4KICAgICBm
b3JFYWNoTmV0d29ya1Nlc3Npb24oWyZdIChhdXRvJiBzZXNzaW9uKSB7CiAgICAgICAgIHBsYXRm
b3JtRmx1c2hDb29raWVzKHNlc3Npb24uc2Vzc2lvbklEKCksIFtjYWxsYmFja0FnZ3JlZ2F0b3Jd
IHsgfSk7Ci0gICAgICAgIC8vIE1ha2Ugc3VyZSByZWZlcmVuY2UgdG8gTmV0d29ya1Byb2Nlc3Mg
aW4gc3BhY2VSZXF1ZXN0ZXIgaXMgcmVtb3ZlZC4KLSAgICAgICAgc2Vzc2lvbi5jbG9zZUlEQlNl
cnZlcihbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwogICAgIH0pOwogfQogCkBAIC0zODIsNyAr
MzgwLDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MoUHJvY2Vzc0lkZW50aWZpZXIgaWRlbnQKICAgICBjb25uZWN0aW9uLnNldE9uTGlu
ZVN0YXRlKE5ldHdvcmtTdGF0ZU5vdGlmaWVyOjpzaW5nbGV0b24oKS5vbkxpbmUoKSk7CiAKICAg
ICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKLSAgICAg
ICAgc2Vzc2lvbi0+ZW5zdXJlV2ViSURCU2VydmVyKCkuYWRkQ29ubmVjdGlvbihjb25uZWN0aW9u
LmNvbm5lY3Rpb24oKSwgaWRlbnRpZmllcik7CiAgICAgICAgIGlmIChhdXRvKiBtYW5hZ2VyID0g
c2Vzc2lvbi0+c3RvcmFnZU1hbmFnZXIoKSkKICAgICAgICAgICAgIG1hbmFnZXItPnN0YXJ0UmVj
ZWl2aW5nTWVzc2FnZUZyb21Db25uZWN0aW9uKGNvbm5lY3Rpb24uY29ubmVjdGlvbigpKTsKICAg
ICB9CkBAIC00MDYsOCArNDAzLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6YWRkV2Vic2l0ZURh
dGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMKICAgICBhZGRT
ZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlcihzZXNzaW9uSUQsIHBhcmFtZXRlcnMucGVyT3JpZ2lu
U3RvcmFnZVF1b3RhLCBwYXJhbWV0ZXJzLnBlclRoaXJkUGFydHlPcmlnaW5TdG9yYWdlUXVvdGEs
IHBhcmFtZXRlcnMuY2FjaGVTdG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmNhY2hlU3RvcmFn
ZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5l
dHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKLSAgICAgICAgc2Vzc2lvbi0+YWRkU3RvcmFnZU1h
bmFnZXJTZXNzaW9uKHBhcmFtZXRlcnMuZ2VuZXJhbFN0b3JhZ2VEaXJlY3RvcnksIHBhcmFtZXRl
cnMuZ2VuZXJhbFN0b3JhZ2VEaXJlY3RvcnlIYW5kbGUsIHBhcmFtZXRlcnMubG9jYWxTdG9yYWdl
RGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRs
ZSk7Ci0gICAgICAgIHNlc3Npb24tPmFkZEluZGV4ZWREYXRhYmFzZVNlc3Npb24ocGFyYW1ldGVy
cy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnksIHBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGly
ZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICAgICAgc2Vzc2lvbi0+YWRkU3RvcmFnZU1hbmFn
ZXJTZXNzaW9uKHBhcmFtZXRlcnMuZ2VuZXJhbFN0b3JhZ2VEaXJlY3RvcnksIHBhcmFtZXRlcnMu
Z2VuZXJhbFN0b3JhZ2VEaXJlY3RvcnlIYW5kbGUsIHBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGly
ZWN0b3J5LCBwYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSwg
cGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnksIHBhcmFtZXRlcnMuaW5kZXhlZERh
dGFiYXNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlLCBwYXJhbWV0ZXJzLmNhY2hlU3RvcmFnZURp
cmVjdG9yeSwgcGFyYW1ldGVycy5wZXJPcmlnaW5TdG9yYWdlUXVvdGEsIHBhcmFtZXRlcnMucGVy
VGhpcmRQYXJ0eU9yaWdpblN0b3JhZ2VRdW90YSk7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQogICAgICAgICBzZXNzaW9uLT5hZGRTZXJ2aWNlV29ya2VyU2Vzc2lvbihwYXJhbWV0ZXJzLnNl
cnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQsIFdURk1vdmUocGFyYW1l
dGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KSwgcGFyYW1ldGVycy5zZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKICNlbmRpZgpA
QCAtMTQ1MiwxMyArMTQ0OCw2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmZldGNoV2Vic2l0ZURh
dGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0CiAgICAgICAgIGNh
bGxiYWNrQWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YS5ob3N0TmFtZXNXaXRoSFNUU0NhY2hlID0g
aG9zdE5hbWVzV2l0aEhTVFNDYWNoZShzZXNzaW9uSUQpOwogI2VuZGlmCiAKLSAgICBpZiAod2Vi
c2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNl
cykgJiYgc2Vzc2lvbiAmJiBzZXNzaW9uLT5oYXNJREJEYXRhYmFzZVBhdGgoKSkgewotICAgICAg
ICBzZXNzaW9uLT5lbnN1cmVXZWJJREJTZXJ2ZXIoKS5nZXRPcmlnaW5zKFtjYWxsYmFja0FnZ3Jl
Z2F0b3JdKGF1dG8mJiBvcmlnaW5zKSB7Ci0gICAgICAgICAgICB3aGlsZSAoIW9yaWdpbnMuaXNF
bXB0eSgpKQotICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+bV93ZWJzaXRlRGF0
YS5lbnRyaWVzLmFwcGVuZCh7IG9yaWdpbnMudGFrZUFueSgpLCBXZWJzaXRlRGF0YVR5cGU6Oklu
ZGV4ZWREQkRhdGFiYXNlcywgMCB9KTsKLSAgICAgICAgfSk7Ci0gICAgfQotCiAjaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNp
dGVEYXRhVHlwZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMpICYmIHNlc3Npb24gJiYgc2Vz
c2lvbi0+aGFzU2VydmljZVdvcmtlckRhdGFiYXNlUGF0aCgpKSB7CiAgICAgICAgIHNlc3Npb24t
PmVuc3VyZVNXU2VydmVyKCkuZ2V0T3JpZ2luc1dpdGhSZWdpc3RyYXRpb25zKFtjYWxsYmFja0Fn
Z3JlZ2F0b3JdKGNvbnN0IEhhc2hTZXQ8U2VjdXJpdHlPcmlnaW5EYXRhPiYgc2VjdXJpdHlPcmln
aW5zKSBtdXRhYmxlIHsKQEAgLTE1MjUsOSArMTUxNCw2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OmRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdl
YnNpCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpE
T01DYWNoZSkgJiYgc2Vzc2lvbikKICAgICAgICAgQ2FjaGVTdG9yYWdlOjpFbmdpbmU6OmNsZWFy
QWxsQ2FjaGVzKCpzZXNzaW9uLCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CiAKLSAgICBpZiAo
d2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFi
YXNlcykgJiYgIXNlc3Npb25JRC5pc0VwaGVtZXJhbCgpICYmIHNlc3Npb24pCi0gICAgICAgIHNl
c3Npb24tPmVuc3VyZVdlYklEQlNlcnZlcigpLmNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzTW9kaWZp
ZWRTaW5jZShtb2RpZmllZFNpbmNlLCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7Ci0KICNpZiBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgYm9vbCBjbGVhclNlcnZpY2VXb3JrZXJzID0gd2Vi
c2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkRPTUNhY2hlKSB8fCB3ZWJz
aXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6U2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbnMpOwogICAgIGlmIChjbGVhclNlcnZpY2VXb3JrZXJzICYmICFzZXNzaW9uSUQuaXNF
cGhlbWVyYWwoKSAmJiBzZXNzaW9uKQpAQCAtMTYyMCw5ICsxNjA2LDYgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgT3B0aW8KICAgICAgICAgICAgIENhY2hlU3RvcmFnZTo6RW5naW5lOjpjbGVhckNhY2hl
c0Zvck9yaWdpbigqc2Vzc2lvbiwgU2VjdXJpdHlPcmlnaW5EYXRhIHsgb3JpZ2luRGF0YSB9LCBb
Y2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CiAgICAgfQogCi0gICAgaWYgKHdlYnNpdGVEYXRhVHlw
ZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpICYmICFzZXNz
aW9uSUQuaXNFcGhlbWVyYWwoKSAmJiBzZXNzaW9uKQotICAgICAgICBzZXNzaW9uLT5lbnN1cmVX
ZWJJREJTZXJ2ZXIoKS5jbG9zZUFuZERlbGV0ZURhdGFiYXNlc0Zvck9yaWdpbnMob3JpZ2luRGF0
YXMsIFtjbGVhclRhc2tzSGFuZGxlcl0geyB9KTsKLQogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKICAgICBib29sIGNsZWFyU2VydmljZVdvcmtlcnMgPSB3ZWJzaXRlRGF0YVR5cGVzLmNvbnRh
aW5zKFdlYnNpdGVEYXRhVHlwZTo6RE9NQ2FjaGUpIHx8IHdlYnNpdGVEYXRhVHlwZXMuY29udGFp
bnMoV2Vic2l0ZURhdGFUeXBlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucyk7CiAgICAgaWYg
KGNsZWFyU2VydmljZVdvcmtlcnMgJiYgIXNlc3Npb25JRC5pc0VwaGVtZXJhbCgpICYmIHNlc3Np
b24pIHsKQEAgLTE4MTEsMTcgKzE3OTQsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVB
bmRSZXN0cmljdFdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKFBBTDo6U2VzcwogICAg
ICAgICAgICAgfQogICAgICAgICB9KTsKICAgICB9Ci0KLSAgICBpZiAod2Vic2l0ZURhdGFUeXBl
cy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykgJiYgc2Vzc2lv
biAmJiBzZXNzaW9uLT5oYXNJREJEYXRhYmFzZVBhdGgoKSkgewotICAgICAgICBzZXNzaW9uLT5l
bnN1cmVXZWJJREJTZXJ2ZXIoKS5nZXRPcmlnaW5zKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVm
IHsgKnRoaXMgfSwgc2Vzc2lvbklELCBjYWxsYmFja0FnZ3JlZ2F0b3IsIGRvbWFpbnNUb0RlbGV0
ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9yXShhdXRvJiYgb3JpZ2lucykgewotICAgICAgICAg
ICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7Ci0gICAgICAgICAg
ICBpZiAoIXNlc3Npb24gfHwgIXNlc3Npb24tPndlYklEQlNlcnZlcigpKQotICAgICAgICAgICAg
ICAgIHJldHVybjsKLQotICAgICAgICAgICAgYXV0byBvcmlnaW5zVG9EZWxldGUgPSBmaWx0ZXJG
b3JSZWdpc3RyYWJsZURvbWFpbnMob3JpZ2lucywgZG9tYWluc1RvRGVsZXRlQWxsTm9uQ29va2ll
V2Vic2l0ZURhdGFGb3IsIGNhbGxiYWNrQWdncmVnYXRvci0+bV9kb21haW5zKTsKLSAgICAgICAg
ICAgIHNlc3Npb24tPndlYklEQlNlcnZlcigpLT5jbG9zZUFuZERlbGV0ZURhdGFiYXNlc0Zvck9y
aWdpbnMob3JpZ2luc1RvRGVsZXRlLCBbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwotICAgICAg
ICB9KTsKLSAgICB9CiAgICAgCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGJvb2wg
Y2xlYXJTZXJ2aWNlV29ya2VycyA9IHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURh
dGFUeXBlOjpET01DYWNoZSkgfHwgd2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0
YVR5cGU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zKTsKQEAgLTE5NTgsMTMgKzE5MzAsNiBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZWdpc3RyYWJsZURvbWFpbnNXaXRoV2Vic2l0ZURhdGEo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELAogICAgICAgICB9KTsKICAgICB9CiAgICAgCi0gICAg
aWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJE
YXRhYmFzZXMpICYmIHNlc3Npb24gJiYgc2Vzc2lvbi0+aGFzSURCRGF0YWJhc2VQYXRoKCkpIHsK
LSAgICAgICAgc2Vzc2lvbi0+ZW5zdXJlV2ViSURCU2VydmVyKCkuZ2V0T3JpZ2lucyhbY2FsbGJh
Y2tBZ2dyZWdhdG9yXShhdXRvJiYgb3JpZ2lucykgewotICAgICAgICAgICAgd2hpbGUgKCFvcmln
aW5zLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fd2Vi
c2l0ZURhdGEuZW50cmllcy5hcHBlbmQoeyBvcmlnaW5zLnRha2VBbnkoKSwgV2Vic2l0ZURhdGFU
eXBlOjpJbmRleGVkREJEYXRhYmFzZXMsIDAgfSk7Ci0gICAgICAgIH0pOwotICAgIH0KLSAgICAK
ICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29u
dGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucykgJiYgc2Vz
c2lvbiAmJiBzZXNzaW9uLT5oYXNTZXJ2aWNlV29ya2VyRGF0YWJhc2VQYXRoKCkpIHsKICAgICAg
ICAgc2Vzc2lvbi0+ZW5zdXJlU1dTZXJ2ZXIoKS5nZXRPcmlnaW5zV2l0aFJlZ2lzdHJhdGlvbnMo
W2NhbGxiYWNrQWdncmVnYXRvcl0oY29uc3QgSGFzaFNldDxTZWN1cml0eU9yaWdpbkRhdGE+JiBz
ZWN1cml0eU9yaWdpbnMpIG11dGFibGUgewpAQCAtMjEyOSw0MyArMjA5NCwxMCBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpwcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5Rm9yVGVzdGluZ1N5bmMo
Q29tcGxldGlvbkhhbmRsZQogICAgIHByZXBhcmVUb1N1c3BlbmQodHJ1ZSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpzdXNwZW5kSURCU2Vy
dmVycyhib29sIGlzU3VzcGVuc2lvbkltbWluZW50KQotewotICAgIG1fc2hvdWxkU3VzcGVuZElE
QlNlcnZlcnMgPSB0cnVlOwotICAgICsrbV9zdXNwZW5zaW9uSWRlbnRpZmllcjsKLQotICAgIGJv
b2wgYWxsU3VzcGVuZGVkID0gdHJ1ZTsKLSAgICBhdXRvIGNvbmRpdGlvbiA9IGlzU3VzcGVuc2lv
bkltbWluZW50ID8gV2ViSURCU2VydmVyOjpTdXNwZW5zaW9uQ29uZGl0aW9uOjpBbHdheXMgOiBX
ZWJJREJTZXJ2ZXI6OlN1c3BlbnNpb25Db25kaXRpb246OklmSWRsZTsKLSAgICBmb3JFYWNoTmV0
d29ya1Nlc3Npb24oWyZdKGF1dG8mIHNlc3Npb24pIHsKLSAgICAgICAgaWYgKGF1dG8qIHNlcnZl
ciA9IHNlc3Npb24ud2ViSURCU2VydmVyKCkpCi0gICAgICAgICAgICBhbGxTdXNwZW5kZWQgJj0g
c2VydmVyLT5zdXNwZW5kKGNvbmRpdGlvbik7Ci0gICAgfSk7Ci0KLSAgICBpZiAoYWxsU3VzcGVu
ZGVkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2hBZnRl
cig1X3MsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBzdXNwZW5zaW9uSWRl
bnRpZmllciA9IG1fc3VzcGVuc2lvbklkZW50aWZpZXJdIHsKLSAgICAgICAgaWYgKCF3ZWFrVGhp
cykKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBpZiAoIW1fc2hvdWxkU3VzcGVuZElE
QlNlcnZlcnMgfHwgc3VzcGVuc2lvbklkZW50aWZpZXIgIT0gbV9zdXNwZW5zaW9uSWRlbnRpZmll
cikKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24o
W10oYXV0byYgc2Vzc2lvbikgewotICAgICAgICAgICAgaWYgKGF1dG8qIHNlcnZlciA9IHNlc3Np
b24ud2ViSURCU2VydmVyKCkpCi0gICAgICAgICAgICAgICAgc2VydmVyLT5zdXNwZW5kKFdlYklE
QlNlcnZlcjo6U3VzcGVuc2lvbkNvbmRpdGlvbjo6QWx3YXlzKTsKLSAgICAgICAgfSk7Ci0gICAg
fSk7Ci19Ci0KIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnByZXBhcmVUb1N1c3BlbmQoYm9vbCBpc1N1
c3BlbnNpb25JbW1pbmVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBOZXR3
b3JrUHJvY2Vzczo6cHJlcGFyZVRvU3VzcGVuZCgpLCBpc1N1c3BlbnNpb25JbW1pbmVudD0lZCIs
IHRoaXMsIGlzU3VzcGVuc2lvbkltbWluZW50KTsKIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
Ci0gICAgc3VzcGVuZElEQlNlcnZlcnMoaXNTdXNwZW5zaW9uSW1taW5lbnQpOwotI2VuZGlmCi0K
ICAgICBsb3dNZW1vcnlIYW5kbGVyKENyaXRpY2FsOjpZZXMpOwogCiAgICAgUmVmUHRyPENhbGxi
YWNrQWdncmVnYXRvcj4gY2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpj
cmVhdGUoW3RoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildKCkgbXV0YWJsZSB7CkBAIC0yMjIzLDE4ICsyMTU1LDEwIEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OnJlc3VtZSgpCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgICAgICBpZiAoYXV0
byogc3dTZXJ2ZXIgPSBzZXNzaW9uLnN3U2VydmVyKCkpCiAgICAgICAgICAgICBzd1NlcnZlci0+
ZW5kU3VzcGVuc2lvbigpOwotI2VuZGlmCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAg
ICAgaWYgKGF1dG8qIHNlcnZlciA9IHNlc3Npb24ud2ViSURCU2VydmVyKCkpCi0gICAgICAgICAg
ICBzZXJ2ZXItPnJlc3VtZSgpOwogI2VuZGlmCiAgICAgICAgIGlmIChhdXRvKiBtYW5hZ2VyID0g
c2Vzc2lvbi5zdG9yYWdlTWFuYWdlcigpKQogICAgICAgICAgICAgbWFuYWdlci0+cmVzdW1lKCk7
CiAgICAgfSk7Ci0KLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIG1fc2hvdWxkU3VzcGVu
ZElEQlNlcnZlcnMgPSBmYWxzZTsKLSNlbmRpZgogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpw
cmVmZXRjaEROUyhjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQpAQCAtMjI4MSwxMiArMjIwNSwxMiBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzeW5jTG9jYWxTdG9yYWdlKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZAogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZXNldFF1
b3RhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIExvY2tlciBsb2NrZXIgeyBtX3Nlc3Npb25TdG9y
YWdlUXVvdGFNYW5hZ2Vyc0xvY2sgfTsKLSAgICBpZiAoYXV0byogc2Vzc2lvblN0b3JhZ2VRdW90
YU1hbmFnZXIgPSBtX3Nlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2Vycy5nZXQoc2Vzc2lvbklEKSkg
ewotICAgICAgICBmb3IgKGF1dG8gc3RvcmFnZVF1b3RhTWFuYWdlciA6IHNlc3Npb25TdG9yYWdl
UXVvdGFNYW5hZ2VyLT5leGlzdGluZ1N0b3JhZ2VRdW90YU1hbmFnZXJzKCkpCi0gICAgICAgICAg
ICBzdG9yYWdlUXVvdGFNYW5hZ2VyLT5yZXNldFF1b3RhRm9yVGVzdGluZygpOwotICAgIH0KLSAg
ICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lv
bihzZXNzaW9uSUQpOworICAgIGlmICghc2Vzc2lvbikKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRp
b25IYW5kbGVyKCk7CisKKyAgICBpZiAoYXV0byogc3RvcmFnZU1hbmFnZXIgPSBzZXNzaW9uLT5z
dG9yYWdlTWFuYWdlcigpKQorICAgICAgICBzdG9yYWdlTWFuYWdlci0+cmVzZXRRdW90YUZvclRl
c3RpbmcoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpjbGVhclN0b3JhZ2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0yMjk4LDYgKzIyMjIsMTYgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2xlYXJTdG9yYWdlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgQ29tcGxldGlvbkhhbmRsZXI8dm8KICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0K
IAordm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGlkSW5jcmVhc2VRdW90YShQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2luLCBRdW90YUluY3JlYXNlUmVxdWVz
dElkZW50aWZpZXIgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbmV3UXVvdGEp
Cit7CisgICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7CisgICAg
aWYgKCFzZXNzaW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoYXV0byogbWFuYWdlciA9
IHNlc3Npb24tPnN0b3JhZ2VNYW5hZ2VyKCkpCisgICAgICAgIG1hbmFnZXItPmRpZEluY3JlYXNl
UXVvdGEob3JpZ2luLCBpZGVudGlmaWVyLCBuZXdRdW90YSk7Cit9CisKIHZvaWQgTmV0d29ya1By
b2Nlc3M6OnJlbmFtZU9yaWdpbkluV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBjb25zdCBVUkwmIG9sZE5hbWUsIGNvbnN0IFVSTCYgbmV3TmFtZSwgT3B0aW9uU2V0PFdlYnNp
dGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byBhZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9y
OjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwpAQCAtMjMxMCw5ICsyMjQ0LDYg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVuYW1lT3JpZ2luSW5XZWJzaXRlRGF0YShQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFUKICAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nl
c3Npb24oc2Vzc2lvbklEKTsKICAgICBpZiAoYXV0byogbWFuYWdlciA9IHNlc3Npb24gPyBzZXNz
aW9uLT5zdG9yYWdlTWFuYWdlcigpIDogbnVsbHB0cikKICAgICAgICAgbWFuYWdlci0+bW92ZURh
dGEob2xkT3JpZ2luLCBuZXdPcmlnaW4sIFthZ2dyZWdhdG9yXSB7IH0pOwotCi0gICAgaWYgKGRh
dGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykgJiYg
c2Vzc2lvbiAmJiBzZXNzaW9uLT5oYXNJREJEYXRhYmFzZVBhdGgoKSkKLSAgICAgICAgc2Vzc2lv
bi0+ZW5zdXJlV2ViSURCU2VydmVyKCkucmVuYW1lT3JpZ2luKG9sZE9yaWdpbiwgbmV3T3JpZ2lu
LCBbYWdncmVnYXRvcl0geyB9KTsKIH0KIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKQEAg
LTIzNzIsNyArMjMwMyw4IEBAIFJlZlB0cjxTdG9yYWdlUXVvdGFNYW5hZ2VyPiBOZXR3b3JrUHJv
Y2Vzczo6c3RvcmFnZVF1b3RhTWFuYWdlcihQQUw6OlNlc3Npb25JRCBzCiAgICAgU3RvcmFnZVF1
b3RhTWFuYWdlcjo6VXNhZ2VHZXR0ZXIgdXNhZ2VHZXR0ZXIgPSBbY2FjaGVSb290UGF0aCA9IHNl
c3Npb25TdG9yYWdlUXVvdGFNYW5hZ2VyLT5jYWNoZVJvb3RQYXRoKCkuaXNvbGF0ZWRDb3B5KCks
IGlkYlJvb3RQYXRoID0gaWRiUm9vdFBhdGguaXNvbGF0ZWRDb3B5KCksIG9yaWdpbiA9IG9yaWdp
bi5pc29sYXRlZENvcHkoKV0oKSB7CiAgICAgICAgIEFTU0VSVCghaXNNYWluUnVuTG9vcCgpKTsK
IAotICAgICAgICByZXR1cm4gQ2FjaGVTdG9yYWdlOjpFbmdpbmU6OmRpc2tVc2FnZShjYWNoZVJv
b3RQYXRoLCBvcmlnaW4pICsgSURCU2VydmVyOjpJREJTZXJ2ZXI6OmRpc2tVc2FnZShpZGJSb290
UGF0aCwgb3JpZ2luKTsKKyAgICAgICAgYXV0byBjYWNoZVN0b3JhZ2VQYXRoID0gQ2FjaGVTdG9y
YWdlOjpFbmdpbmU6OnN0b3JhZ2VQYXRoKGNhY2hlUm9vdFBhdGgsIG9yaWdpbik7CisgICAgICAg
IHJldHVybiBDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6ZGlza1VzYWdlKGNhY2hlU3RvcmFnZVBhdGgp
ICsgSURCU2VydmVyOjpJREJTZXJ2ZXI6OmRpc2tVc2FnZShpZGJSb290UGF0aCwgb3JpZ2luKTsK
ICAgICB9OwogICAgIFN0b3JhZ2VRdW90YU1hbmFnZXI6OlF1b3RhSW5jcmVhc2VSZXF1ZXN0ZXIg
cXVvdGFJbmNyZWFzZVJlcXVlc3RlciA9IFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhp
cyB9LCBzZXNzaW9uSUQsIG9yaWdpbl0gKHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3Qg
Y3VycmVudFNwYWNlLCB1aW50NjRfdCByZXF1ZXN0ZWRJbmNyZWFzZSwgYXV0byYmIGNhbGxiYWNr
KSB7CiAgICAgICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOwpAQCAtMjU4Niw4ICsyNTE4LDYg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVtb3ZlS2VwdEFsaXZlTG9hZChOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXImIGxvYWRlcikKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3NDbG9zZWQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQpCiB7CiAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNz
aW9uSUQpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBzZXJ2ZXIgPSBzZXNzaW9uLT53ZWJJREJTZXJ2
ZXIoKSkKLSAgICAgICAgICAgIHNlcnZlci0+cmVtb3ZlQ29ubmVjdGlvbihjb25uZWN0aW9uKTsK
ICAgICAgICAgaWYgKGF1dG8qIG1hbmFnZXIgPSBzZXNzaW9uLT5zdG9yYWdlTWFuYWdlcigpKQog
ICAgICAgICAgICAgbWFuYWdlci0+c3RvcFJlY2VpdmluZ01lc3NhZ2VGcm9tQ29ubmVjdGlvbihj
b25uZWN0aW9uKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmgKaW5kZXggNzg3NzkyN2ExN2M1NTk2ZWIwM2JkNGFjZjRkNThlNDE4YWM4YmEy
My4uMGY4NTMzZWQxM2RkMjYyNzdhNmRkNTJhYjZkYWJlMjBjM2UwODgwNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtMzMsNiArMzMsNyBA
QAogI2luY2x1ZGUgIkxvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5oIgogI2luY2x1ZGUgIk5l
dHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNl
TG9hZElkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZp
ZXIuaCIKICNpbmNsdWRlICJSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXJQcm94eS5oIgogI2lu
Y2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlJZGVudGlm
aWVyLmgiCkBAIC0yODgsMTIgKzI4OSwxMSBAQCBwdWJsaWM6CiAgICAgTmV0d29ya0NvbnRlbnRS
dWxlTGlzdE1hbmFnZXImIG5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyKCkgeyByZXR1cm4g
bV9uZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcjsgfQogI2VuZGlmCiAKLSAgICBib29sIHNo
b3VsZFN1c3BlbmRJREJTZXJ2ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRTdXNwZW5kSURC
U2VydmVyczsgfQotCiAgICAgdm9pZCBzeW5jTG9jYWxTdG9yYWdlKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CiAKICAgICB2b2lkIHJlc2V0UXVvdGEoUEFMOjpTZXNzaW9uSUQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBjbGVhclN0b3JhZ2UoUEFMOjpTZXNz
aW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBkaWRJbmNyZWFz
ZVF1b3RhKFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBRdW90
YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IG5ld1F1
b3RhKTsKICAgICB2b2lkIHJlbmFtZU9yaWdpbkluV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQs
IGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAg
LTQ3Myw4ICs0NzMsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVBc05v
QWNjZXNzKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAgIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVB
c0NPUlNFbmFibGVkKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogCi0gICAgdm9pZCBzdXNwZW5kSURC
U2VydmVycyhib29sIGlzU3VzcGVuc2lvbkltbWluZW50KTsKLQogI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgdm9pZCBzZXRJc0hvbGRpbmdMb2NrZWRGaWxlcyhib29sKTsKICNlbmRpZgpA
QCAtNDgyLDYgKzQ4MCw3IEBAIHByaXZhdGU6CiAgICAgY2xhc3MgU2Vzc2lvblN0b3JhZ2VRdW90
YU1hbmFnZXIgewogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6
CisgICAgICAgIFNlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2VyKCkgPSBkZWxldGU7CiAgICAgICAg
IFNlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2VyKGNvbnN0IFN0cmluZyYgY2FjaGVSb290UGF0aCwg
dWludDY0X3QgZGVmYXVsdFF1b3RhLCB1aW50NjRfdCBkZWZhdWx0VGhpcmRQYXJ0eVF1b3RhKQog
ICAgICAgICAgICAgOiBtX2NhY2hlUm9vdFBhdGgoY2FjaGVSb290UGF0aCkKICAgICAgICAgICAg
ICwgbV9kZWZhdWx0UXVvdGEoZGVmYXVsdFF1b3RhKQpAQCAtNTA4LDggKzUwNyw4IEBAIHByaXZh
dGU6CiAgICAgcHJpdmF0ZToKICAgICAgICAgU3RyaW5nIG1fY2FjaGVSb290UGF0aDsKICAgICAg
ICAgU3RyaW5nIG1faWRiUm9vdFBhdGg7Ci0gICAgICAgIHVpbnQ2NF90IG1fZGVmYXVsdFF1b3Rh
IHsgV2ViQ29yZTo6U3RvcmFnZVF1b3RhTWFuYWdlcjo6ZGVmYXVsdFF1b3RhKCkgfTsKLSAgICAg
ICAgdWludDY0X3QgbV9kZWZhdWx0VGhpcmRQYXJ0eVF1b3RhIHsgV2ViQ29yZTo6U3RvcmFnZVF1
b3RhTWFuYWdlcjo6ZGVmYXVsdFRoaXJkUGFydHlRdW90YSgpIH07CisgICAgICAgIHVpbnQ2NF90
IG1fZGVmYXVsdFF1b3RhOworICAgICAgICB1aW50NjRfdCBtX2RlZmF1bHRUaGlyZFBhcnR5UXVv
dGE7CiAgICAgICAgIEhhc2hNYXA8V2ViQ29yZTo6Q2xpZW50T3JpZ2luLCBSZWZQdHI8V2ViQ29y
ZTo6U3RvcmFnZVF1b3RhTWFuYWdlcj4+IG1fc3RvcmFnZVF1b3RhTWFuYWdlcnM7CiAgICAgfTsK
ICAgICB2b2lkIGFkZFNlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2VyKFBBTDo6U2Vzc2lvbklELCB1
aW50NjRfdCBkZWZhdWx0UXVvdGEsIHVpbnQ2NF90IGRlZmF1bHRUaGlyZFBhcnR5UXVvdGEsIGNv
bnN0IFN0cmluZyYgY2FjaGVSb290UGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJik7CkBA
IC01NDksOSArNTQ4LDYgQEAgcHJpdmF0ZToKICAgICBXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXIg
bV93ZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXI7CiAgICAgUmVmUHRyPFByb2Nlc3NBc3NlcnRpb24+
IG1faG9sZGluZ0xvY2tlZEZpbGVBc3NlcnRpb247CiAjZW5kaWYKLQotICAgIGJvb2wgbV9zaG91
bGRTdXNwZW5kSURCU2VydmVycyB7IGZhbHNlIH07Ci0gICAgdWludDY0X3QgbV9zdXNwZW5zaW9u
SWRlbnRpZmllciB7IDAgfTsKICAgICAKICNpZiBFTkFCTEUoV0VCX1JUQykKICAgICBSZWZQdHI8
UlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyUHJveHk+IG1fcnRjRGF0YUNoYW5uZWxQcm94eTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
Lm1lc3NhZ2VzLmluCmluZGV4IDYzN2UxNTlmMTg2MzkzYmVjNWNjMDVhYjViZDU3ODBiZThjNmZj
ZTQuLjYzMWUyYjYwNzNjMDE5MjEzMDY4YzIwOTZiODI3YjI3OWRiYzdkZTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdl
cy5pbgpAQCAtMTc5LDYgKzE3OSw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2Fj
eVJlY2VpdmVyIHsKIAogICAgIFJlc2V0UXVvdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAt
PiAoKSBBc3luYwogICAgIENsZWFyU3RvcmFnZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+
ICgpIEFzeW5jCisgICAgRGlkSW5jcmVhc2VRdW90YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IHN0cnVjdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luLCBXZWJLaXQ6OlF1b3RhSW5jcmVh
c2VSZXF1ZXN0SWRlbnRpZmllciBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBu
ZXdRdW90YSkKICAgICAKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgSGFzQXBw
Qm91bmRTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKGJvb2wgaGFzQXBwQm91
bmRTZXNzaW9uKSBBc3luYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtTZXNzaW9uLmNwcAppbmRleCBlMmIyNGQ4MzIyYjZlYzFjMzc3MDFkY2FkNDk3NTM0Y2VmMjMx
YTI2Li45YzRiZTJiNjE4OTQ3NGNjZjI0YmU3MGIxMTI3MjkxOGZjMDJiM2UxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcApAQCAtMjA0LDgg
KzIwNCw2IEBAIHZvaWQgTmV0d29ya1Nlc3Npb246OmludmFsaWRhdGVBbmRDYW5jZWwoKQogICAg
IGlmIChtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MpCiAgICAgICAgIG1fcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy0+aW52YWxpZGF0ZUFuZENhbmNlbCgpOwogI2VuZGlmCi0gICAgaWYgKGF1dG8gc2Vy
dmVyID0gc3RkOjpleGNoYW5nZShtX3dlYklEQlNlcnZlciwgbnVsbHB0cikpCi0gICAgICAgIHNl
cnZlci0+Y2xvc2UoKTsKICAgICBpZiAoYXV0byBtYW5hZ2VyID0gc3RkOjpleGNoYW5nZShtX3N0
b3JhZ2VNYW5hZ2VyLCBudWxscHRyKSkKICAgICAgICAgbWFuYWdlci0+Y2xvc2UoKTsKICAgICBt
X2NhY2hlRW5naW5lID0gbnVsbHB0cjsKQEAgLTY1Myw1NSArNjUxLDE4IEBAIGJvb2wgTmV0d29y
a1Nlc3Npb246Omhhc1NlcnZpY2VXb3JrZXJEYXRhYmFzZVBhdGgoKSBjb25zdAogCiAjZW5kaWYg
Ly8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCi1XZWJJREJTZXJ2ZXImIE5ldHdvcmtTZXNzaW9u
OjplbnN1cmVXZWJJREJTZXJ2ZXIoKQotewotICAgIGlmICghbV93ZWJJREJTZXJ2ZXIpIHsKLSAg
ICAgICAgU3RyaW5nIHBhdGg7Ci0gICAgICAgIGlmICghc2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwo
KSkgewotICAgICAgICAgICAgQVNTRVJUKCFtX2lkYkRhdGFiYXNlUGF0aC5pc051bGwoKSk7Ci0g
ICAgICAgICAgICBwYXRoID0gbV9pZGJEYXRhYmFzZVBhdGg7Ci0gICAgICAgIH0KLQotICAgICAg
ICBhdXRvIHNwYWNlUmVxdWVzdGVyID0gW25ldHdvcmtQcm9jZXNzID0gUmVmIHsgbmV0d29ya1By
b2Nlc3MoKSB9LCBzZXNzaW9uSUQgPSBzZXNzaW9uSUQoKV0oY29uc3QgYXV0byYgb3JpZ2luLCB1
aW50NjRfdCBzcGFjZVJlcXVlc3RlZCkgewotICAgICAgICAgICAgcmV0dXJuIG5ldHdvcmtQcm9j
ZXNzLT5zdG9yYWdlUXVvdGFNYW5hZ2VyKHNlc3Npb25JRCwgb3JpZ2luKS0+cmVxdWVzdFNwYWNl
T25CYWNrZ3JvdW5kVGhyZWFkKHNwYWNlUmVxdWVzdGVkKTsKLSAgICAgICAgfTsKLQotICAgICAg
ICBtX3dlYklEQlNlcnZlciA9IFdlYklEQlNlcnZlcjo6Y3JlYXRlKHNlc3Npb25JRCgpLCBwYXRo
LCBXVEZNb3ZlKHNwYWNlUmVxdWVzdGVyKSk7Ci0gICAgICAgIGlmIChuZXR3b3JrUHJvY2Vzcygp
LnNob3VsZFN1c3BlbmRJREJTZXJ2ZXJzKCkpCi0gICAgICAgICAgICBtX3dlYklEQlNlcnZlci0+
c3VzcGVuZChXZWJJREJTZXJ2ZXI6OlN1c3BlbnNpb25Db25kaXRpb246OkFsd2F5cyk7Ci0gICAg
fQotICAgIHJldHVybiAqbV93ZWJJREJTZXJ2ZXI7Ci19Ci0KLXZvaWQgTmV0d29ya1Nlc3Npb246
OmNsb3NlSURCU2VydmVyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKLXsKLSAgICBpZiAoIW1fd2ViSURCU2VydmVyKQotICAgICAgICByZXR1cm4gY29tcGxl
dGlvbkhhbmRsZXIoKTsKLQotICAgIHN0ZDo6ZXhjaGFuZ2UobV93ZWJJREJTZXJ2ZXIsIG51bGxw
dHIpLT5jbG9zZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci19Ci0KLXZvaWQgTmV0d29y
a1Nlc3Npb246OmFkZEluZGV4ZWREYXRhYmFzZVNlc3Npb24oY29uc3QgU3RyaW5nJiBpbmRleGVk
RGF0YWJhc2VEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgaGFuZGxlKQotewot
ICAgIC8vICoqKioqKioqKgotICAgIC8vIElNUE9SVEFOVDogRG8gbm90IGNoYW5nZSB0aGUgZGly
ZWN0b3J5IHN0cnVjdHVyZSBmb3IgaW5kZXhlZCBkYXRhYmFzZXMgb24gZGlzayB3aXRob3V0IGZp
cnN0IGNvbnN1bHRpbmcgYSByZXZpZXdlciBmcm9tIEFwcGxlICg8cmRhcjovL3Byb2JsZW0vMTc0
NTQ3MTI+KQotICAgIC8vICoqKioqKioqKgotICAgIGF1dG8gaXNOZXcgPSBtX2lkYkRhdGFiYXNl
UGF0aC5pc051bGwoKTsKLSAgICBtX2lkYkRhdGFiYXNlUGF0aCA9IGluZGV4ZWREYXRhYmFzZURp
cmVjdG9yeTsKLSAgICBpZiAoaXNOZXcpIHsKLSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29u
c3VtZVBlcm1hbmVudGx5KGhhbmRsZSk7Ci0gICAgICAgIG5ldHdvcmtQcm9jZXNzKCkuc2V0U2Vz
c2lvblN0b3JhZ2VRdW90YU1hbmFnZXJJREJSb290UGF0aChzZXNzaW9uSUQoKSwgaW5kZXhlZERh
dGFiYXNlRGlyZWN0b3J5KTsKLSAgICB9Ci19Ci0KLXZvaWQgTmV0d29ya1Nlc3Npb246OmFkZFN0
b3JhZ2VNYW5hZ2VyU2Vzc2lvbihjb25zdCBTdHJpbmcmIGdlbmVyYWxTdG9yYWdlUGF0aCwgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBnZW5lcmFsU3RvcmFnZVBhdGhIYW5kbGUsIGNvbnN0IFN0
cmluZyYgbG9jYWxTdG9yYWdlUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBsb2NhbFN0
b3JhZ2VQYXRoSGFuZGxlKQordm9pZCBOZXR3b3JrU2Vzc2lvbjo6YWRkU3RvcmFnZU1hbmFnZXJT
ZXNzaW9uKGNvbnN0IFN0cmluZyYgZ2VuZXJhbFN0b3JhZ2VQYXRoLCBTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGUmIGdlbmVyYWxTdG9yYWdlUGF0aEhhbmRsZSwgY29uc3QgU3RyaW5nJiBsb2NhbFN0
b3JhZ2VQYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIGxvY2FsU3RvcmFnZVBhdGhIYW5k
bGUsIGNvbnN0IFN0cmluZyYgaWRiU3RvcmFnZVBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZSYgaWRiU3RvcmFnZVBhdGhIYW5kbGUsIGNvbnN0IFN0cmluZyYgY2FjaGVTdG9yYWdlUGF0aCwg
dWludDY0X3QgZGVmYXVsdE9yaWdpblF1b3RhLCB1aW50NjRfdCBkZWZhdWx0VGhpcmRQYXJ0eVF1
b3RhKQogewogICAgIGlmIChtX3N0b3JhZ2VNYW5hZ2VyKQogICAgICAgICByZXR1cm47CiAKICAg
ICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkoZ2VuZXJhbFN0b3JhZ2VQYXRo
SGFuZGxlKTsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkobG9jYWxT
dG9yYWdlUGF0aEhhbmRsZSk7Ci0gICAgbV9zdG9yYWdlTWFuYWdlciA9IE5ldHdvcmtTdG9yYWdl
TWFuYWdlcjo6Y3JlYXRlKHNlc3Npb25JRCgpLCBnZW5lcmFsU3RvcmFnZVBhdGgsIGxvY2FsU3Rv
cmFnZVBhdGgpOworICAgIFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShpZGJT
dG9yYWdlUGF0aEhhbmRsZSk7CisgICAgSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0
aW9uSUQ7CisgICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBuZXR3b3JrUHJvY2VzcygpLnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCkpCisgICAgICAgIGNvbm5lY3Rpb25JRCA9IGNvbm5lY3Rpb24t
PnVuaXF1ZUlEKCk7CisgICAgbV9zdG9yYWdlTWFuYWdlciA9IE5ldHdvcmtTdG9yYWdlTWFuYWdl
cjo6Y3JlYXRlKHNlc3Npb25JRCgpLCBjb25uZWN0aW9uSUQsIGdlbmVyYWxTdG9yYWdlUGF0aCwg
bG9jYWxTdG9yYWdlUGF0aCwgaWRiU3RvcmFnZVBhdGgsIGNhY2hlU3RvcmFnZVBhdGgsIGRlZmF1
bHRPcmlnaW5RdW90YSwgZGVmYXVsdFRoaXJkUGFydHlRdW90YSk7CiB9CiAKIHZvaWQgTmV0d29y
a1Nlc3Npb246OmVuc3VyZUNhY2hlRW5naW5lKEZ1bmN0aW9uPHZvaWQoQ2FjaGVTdG9yYWdlOjpF
bmdpbmUmKT4mJiBjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Nlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Nlc3Npb24uaAppbmRleCAxOTMwN2NmNDBiZTNiMmYyNjA1N2QwMTZjNzY2ZWRjZTQ5OGM5
NTQyLi5iYWExMjI0NWNmMjI2NGQ5MjE1N2RkZTQ3MWQyZTRiMTAyYmMyOTdmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCkBAIC0yMTAsMTQgKzIx
MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZFNlcnZpY2VXb3JrZXJTZXNzaW9uKGJvb2wgcHJv
Y2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkLCBTdHJpbmcmJiBzZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uRGlyZWN0b3J5LCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmKTsKICNlbmRp
ZgogCi0gICAgV2ViSURCU2VydmVyKiB3ZWJJREJTZXJ2ZXIoKSB7IHJldHVybiBtX3dlYklEQlNl
cnZlci5nZXQoKTsgfQotICAgIFdlYklEQlNlcnZlciYgZW5zdXJlV2ViSURCU2VydmVyKCk7Ci0g
ICAgdm9pZCBjbG9zZUlEQlNlcnZlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAg
IHZvaWQgYWRkSW5kZXhlZERhdGFiYXNlU2Vzc2lvbihjb25zdCBTdHJpbmcmIGluZGV4ZWREYXRh
YmFzZURpcmVjdG9yeSwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJik7Ci0gICAgYm9vbCBoYXNJ
REJEYXRhYmFzZVBhdGgoKSBjb25zdCB7IHJldHVybiAhbV9pZGJEYXRhYmFzZVBhdGguaXNFbXB0
eSgpOyB9Ci0KICAgICBOZXR3b3JrU3RvcmFnZU1hbmFnZXIqIHN0b3JhZ2VNYW5hZ2VyKCkgeyBy
ZXR1cm4gbV9zdG9yYWdlTWFuYWdlci5nZXQoKTsgfQotICAgIHZvaWQgYWRkU3RvcmFnZU1hbmFn
ZXJTZXNzaW9uKGNvbnN0IFN0cmluZyYgZ2VuZXJhbFN0b3JhZ2VQYXRoLCBTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGUmIGdlbmVyYWxTdG9yYWdlUGF0aEhhbmRsZSwgY29uc3QgU3RyaW5nJiBsb2Nh
bFN0b3JhZ2VQYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIGxvY2FsU3RvcmFnZVBhdGhI
YW5kbGUpOworICAgIHZvaWQgYWRkU3RvcmFnZU1hbmFnZXJTZXNzaW9uKGNvbnN0IFN0cmluZyYg
Z2VuZXJhbFN0b3JhZ2VQYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIGdlbmVyYWxTdG9y
YWdlUGF0aEhhbmRsZSwgY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VQYXRoLCBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGUmIGxvY2FsU3RvcmFnZVBhdGhIYW5kbGUsIGNvbnN0IFN0cmluZyYgaWRi
U3RvcmFnZVBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgaWRiU3RvcmFnZVBhdGhIYW5k
bGUsIGNvbnN0IFN0cmluZyYgY2FjaGVTdG9yYWdlUGF0aCwgdWludDY0X3QgZGVmYXVsdE9yaWdp
blF1b3RhLCB1aW50NjRfdCBkZWZhdWx0VGhpcmRQYXJ0eVF1b3RhKTsKIAogICAgIENhY2hlU3Rv
cmFnZTo6RW5naW5lKiBjYWNoZUVuZ2luZSgpIHsgcmV0dXJuIG1fY2FjaGVFbmdpbmUuZ2V0KCk7
IH0KICAgICB2b2lkIGVuc3VyZUNhY2hlRW5naW5lKEZ1bmN0aW9uPHZvaWQoQ2FjaGVTdG9yYWdl
OjpFbmdpbmUmKT4mJik7CkBAIC0zMTksOSArMzEzLDYgQEAgcHJvdGVjdGVkOgogICAgIHN0ZDo6
dW5pcXVlX3B0cjxXZWJDb3JlOjpTV1NlcnZlcj4gbV9zd1NlcnZlcjsKICNlbmRpZgogCi0gICAg
U3RyaW5nIG1faWRiRGF0YWJhc2VQYXRoOwotICAgIFJlZlB0cjxXZWJJREJTZXJ2ZXI+IG1fd2Vi
SURCU2VydmVyOwotCiAgICAgUmVmUHRyPE5ldHdvcmtTdG9yYWdlTWFuYWdlcj4gbV9zdG9yYWdl
TWFuYWdlcjsKICAgICBSZWZQdHI8Q2FjaGVTdG9yYWdlOjpFbmdpbmU+IG1fY2FjaGVFbmdpbmU7
CiAgICAgVmVjdG9yPEZ1bmN0aW9uPHZvaWQoQ2FjaGVTdG9yYWdlOjpFbmdpbmUmKT4+IG1fY2Fj
aGVTdG9yYWdlUGFyYW1ldGVyc0NhbGxiYWNrczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcAppbmRleCBjMjAw
Y2U4YjVlYjRjM2EwMzY1N2U4MjI2ODk5MDJiNDZkYmY4YWIwLi4xYTA5MDdkZDQwYjNmYzc4ZWRl
OTczNzJjOTIwNWExMTg2YjQwMzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCkBAIC0zMSw2ICszMSw3
IEBACiAjaW5jbHVkZSAiTmV0d29ya0NhY2hlSU9DaGFubmVsLmgiCiAjaW5jbHVkZSAiTmV0d29y
a1Byb2Nlc3MuaCIKICNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbi5oIgorI2luY2x1ZGUgIk5ldHdv
cmtTdG9yYWdlTWFuYWdlci5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhVHlwZS5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvQ2FjaGVRdWVyeU9wdGlvbnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JldHJp
ZXZlUmVjb3Jkc09wdGlvbnMuaD4KQEAgLTIwMyw0MCArMjA0LDQ5IEBAIHN0YXRpYyB1aW50NjRf
dCBnZXREaXJlY3RvcnlTaXplKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5UGF0aCkKICAgICByZXR1
cm4gZGlyZWN0b3J5U2l6ZTsKIH0KIAotdWludDY0X3QgRW5naW5lOjpkaXNrVXNhZ2UoY29uc3Qg
U3RyaW5nJiByb290UGF0aCwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4pCitT
dHJpbmcgRW5naW5lOjpzdG9yYWdlUGF0aChjb25zdCBTdHJpbmcmIHJvb3REaXJlY3RvcnksIGNv
bnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luKQogewogICAgIEFTU0VSVCghaXNNYWlu
UnVuTG9vcCgpKTsKKyAgICAKKyAgICBpZiAocm9vdERpcmVjdG9yeS5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCi0gICAgaWYgKHJvb3RQYXRoLmlzRW1wdHkoKSkK
LSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBTdHJpbmcgc2FsdFBhdGggPSBGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQocm9vdFBhdGgsICJzYWx0Il9zKTsKKyAgICBTdHJpbmcg
c2FsdFBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocm9vdERpcmVj
dG9yeSwgInNhbHQiX3MpOwogICAgIGF1dG8gc2FsdCA9IEZpbGVTeXN0ZW06OnJlYWRPck1ha2VT
YWx0KHNhbHRQYXRoKTsKICAgICBpZiAoIXNhbHQpCi0gICAgICAgIHJldHVybiAwOworICAgICAg
ICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAogICAgIEtleSBrZXkob3JpZ2luLnRvcE9yaWdpbi50
b1N0cmluZygpLCBvcmlnaW4uY2xpZW50T3JpZ2luLnRvU3RyaW5nKCksIHsgfSwgeyB9LCAqc2Fs
dCk7Ci0gICAgU3RyaW5nIGRpcmVjdG9yeVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQocm9vdFBhdGgsIGtleS5oYXNoQXNTdHJpbmcoKSk7CisgICAgcmV0dXJuIEZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyb290RGlyZWN0b3J5LCBrZXkuaGFz
aEFzU3RyaW5nKCkpOworfQorCit1aW50NjRfdCBFbmdpbmU6OmRpc2tVc2FnZShjb25zdCBTdHJp
bmcmIG9yaWdpbkRpcmVjdG9yeSkKK3sKKyAgICBBU1NFUlQoIWlzTWFpblJ1bkxvb3AoKSk7CisK
KyAgICBpZiAob3JpZ2luRGlyZWN0b3J5LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIDA7CiAK
LSAgICBTdHJpbmcgc2l6ZUZpbGVQYXRoID0gQ2FjaGVzOjpjYWNoZXNTaXplRmlsZW5hbWUoZGly
ZWN0b3J5UGF0aCk7CisgICAgU3RyaW5nIHNpemVGaWxlUGF0aCA9IENhY2hlczo6Y2FjaGVzU2l6
ZUZpbGVuYW1lKG9yaWdpbkRpcmVjdG9yeSk7CiAgICAgaWYgKGF1dG8gcmVjb3JkZWRTaXplID0g
cmVhZFNpemVGaWxlKHNpemVGaWxlUGF0aCkpCiAgICAgICAgIHJldHVybiAqcmVjb3JkZWRTaXpl
OwogCi0gICAgcmV0dXJuIGdldERpcmVjdG9yeVNpemUoZGlyZWN0b3J5UGF0aCk7CisgICAgcmV0
dXJuIGdldERpcmVjdG9yeVNpemUob3JpZ2luRGlyZWN0b3J5KTsKIH0KIAotdm9pZCBFbmdpbmU6
OnJlcXVlc3RTcGFjZShjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgdWludDY0
X3Qgc3BhY2VSZXF1ZXN0ZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFn
ZVF1b3RhTWFuYWdlcjo6RGVjaXNpb24pPiYmIGNhbGxiYWNrKQordm9pZCBFbmdpbmU6OnJlcXVl
c3RTcGFjZShjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgdWludDY0X3Qgc3Bh
Y2VSZXF1ZXN0ZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCiB7
CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAgIGlmICghbV9uZXR3b3JrUHJvY2Vz
cykKLSAgICAgICAgY2FsbGJhY2soV2ViQ29yZTo6U3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNp
b246OkRlbnkpOworICAgICAgICBjYWxsYmFjayhmYWxzZSk7CiAKLSAgICBSZWZQdHI8V2ViQ29y
ZTo6U3RvcmFnZVF1b3RhTWFuYWdlcj4gc3RvcmFnZVF1b3RhTWFuYWdlciA9IG1fbmV0d29ya1By
b2Nlc3MtPnN0b3JhZ2VRdW90YU1hbmFnZXIobV9zZXNzaW9uSUQsIG9yaWdpbik7Ci0gICAgaWYg
KCFzdG9yYWdlUXVvdGFNYW5hZ2VyKQotICAgICAgICBjYWxsYmFjayhXZWJDb3JlOjpTdG9yYWdl
UXVvdGFNYW5hZ2VyOjpEZWNpc2lvbjo6RGVueSk7CisgICAgYXV0byogc2Vzc2lvbiA9IG1fbmV0
d29ya1Byb2Nlc3MtPm5ldHdvcmtTZXNzaW9uKG1fc2Vzc2lvbklEKTsKKyAgICBpZiAoIXNlc3Np
b24pCisgICAgICAgIGNhbGxiYWNrKGZhbHNlKTsKIAotICAgIHN0b3JhZ2VRdW90YU1hbmFnZXIt
PnJlcXVlc3RTcGFjZU9uTWFpblRocmVhZChzcGFjZVJlcXVlc3RlZCwgV1RGTW92ZShjYWxsYmFj
aykpOworICAgIGlmIChhdXRvKiBzdG9yYWdlTWFuYWdlciA9IHNlc3Npb24tPnN0b3JhZ2VNYW5h
Z2VyKCkpCisgICAgICAgIHN0b3JhZ2VNYW5hZ2VyLT5yZXF1ZXN0U3BhY2Uob3JpZ2luLCBzcGFj
ZVJlcXVlc3RlZCwgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCiBFbmdpbmU6OkVuZ2luZShOZXR3
b3JrU2Vzc2lvbiYgbmV0d29ya1Nlc3Npb24sIFN0cmluZyYmIHJvb3RQYXRoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUu
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5l
LmgKaW5kZXggMTQ3ZmJhY2UxNjc3YTYwODU5MThhYjc3MmE5ZTEwYTIwNmM2ODgxZS4uZmUzYzFm
OTMwZGFlMzk5OGNkMWMwNGMzNGRiZGRjNTM1NTVhNDcwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oCkBAIC0y
OSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiTmV0d29ya0NhY2hlRGF0YS5oIgogI2luY2x1ZGUgIldl
YnNpdGVEYXRhLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DbGllbnRPcmlnaW4uaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL1N0b3JhZ2VRdW90YU1hbmFnZXIuaD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklE
Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgpAQCAtODQsOCArODMsOSBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXpl
UXVvdGFVc2VyKE5ldHdvcmtTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAotICAgIHN0YXRpYyB1aW50NjRfdCBkaXNr
VXNhZ2UoY29uc3QgU3RyaW5nJiByb290UGF0aCwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2lu
Jik7Ci0gICAgdm9pZCByZXF1ZXN0U3BhY2UoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwg
dWludDY0X3Qgc3BhY2VSZXF1ZXN0ZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6
U3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb24pPiYmKTsKKyAgICBzdGF0aWMgU3RyaW5nIHN0
b3JhZ2VQYXRoKGNvbnN0IFN0cmluZyYgcm9vdERpcmVjdG9yeSwgY29uc3QgV2ViQ29yZTo6Q2xp
ZW50T3JpZ2luJik7CisgICAgc3RhdGljIHVpbnQ2NF90IGRpc2tVc2FnZShjb25zdCBTdHJpbmcm
IG9yaWdpbkRpcmVjdG9yeSk7CisgICAgdm9pZCByZXF1ZXN0U3BhY2UoY29uc3QgV2ViQ29yZTo6
Q2xpZW50T3JpZ2luJiwgdWludDY0X3Qgc3BhY2VSZXF1ZXN0ZWQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYpOwogCiAgICAgYm9vbCBzaG91bGRQZXJzaXN0KCkgY29uc3QgeyByZXR1
cm4gISFtX2lvUXVldWU7fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAKaW5kZXggMDRl
ZGVjZTFjNGJmZTllYWNhZTA2YTcwN2M1ZGRmZmUwMGU4MTM4ZS4uYzMwYzNiZTdjNWM1NTNiZjIz
MjhkOTUxYjc3NDQ0NDEzYjMyZDZhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcApA
QCAtNTI0LDE0ICs1MjQsMTAgQEAgdm9pZCBDYWNoZXM6OnJlcXVlc3RTcGFjZSh1aW50NjRfdCBz
cGFjZVJlcXVpcmVkLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q29tcGwKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIG1fZW5naW5lLT5yZXF1ZXN0U3BhY2UobV9vcmlnaW4sIHNwYWNl
UmVxdWlyZWQsIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvIGRlY2lzaW9uKSBt
dXRhYmxlIHsKLSAgICAgICAgc3dpdGNoIChkZWNpc2lvbikgewotICAgICAgICBjYXNlIFdlYkNv
cmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uOjpEZW55OgotICAgICAgICAgICAgY2Fs
bGJhY2soRXJyb3I6OlF1b3RhRXhjZWVkZWQpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICBjYXNlIFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uOjpHcmFudDoKLSAg
ICAgICAgICAgIGNhbGxiYWNrKHsgfSk7Ci0gICAgICAgIH07CisgICAgbV9lbmdpbmUtPnJlcXVl
c3RTcGFjZShtX29yaWdpbiwgc3BhY2VSZXF1aXJlZCwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayldKGJvb2wgZ3JhbnRlZCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghZ3JhbnRlZCkKKyAg
ICAgICAgICAgIHJldHVybiBjYWxsYmFjayhFcnJvcjo6UXVvdGFFeGNlZWRlZCk7CisgICAgICAg
IGNhbGxiYWNrKHsgfSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNzSU9TLm1tIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya1Byb2Nlc3NJT1MubW0KaW5kZXggYTg3YWQ4MDViNWRm
MTUwNzgzYjUzOTFlOGUwM2Y5OGU3NjRkZjNkNS4uMjE5NmU5ZTc0ZDI0NTMxYzBkYjViMzk0NWFj
NjA4ZmUzZTk4Yzc0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9p
b3MvTmV0d29ya1Byb2Nlc3NJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9pb3MvTmV0d29ya1Byb2Nlc3NJT1MubW0KQEAgLTEwOSwxOSArMTA5LDYgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzczo6c2V0SXNIb2xkaW5nTG9ja2VkRmlsZXMoYm9vbCBpc0hvbGRpbmdMb2NrZWRG
aWxlcykKICAgICAvLyBXZSBzeW5jaHJvbm91c2x5IHRha2UgYSBwcm9jZXNzIGFzc2VydGlvbiB3
aGVuIGJlZ2lubmluZyBhIFNRTGl0ZSB0cmFuc2FjdGlvbiBzbyB0aGF0IHdlIGRvbid0IGdldCBz
dXNwZW5kZWQKICAgICAvLyB3aGlsZSBob2xkaW5nIGEgbG9ja2VkIGZpbGUuIFdlIHdvdWxkIGdl
dCBraWxsZWQgaWYgc3VzcGVuZGVkIHdoaWxlIGhvbGRpbmcgbG9ja2VkIGZpbGVzLgogICAgIG1f
aG9sZGluZ0xvY2tlZEZpbGVBc3NlcnRpb24gPSBQcm9jZXNzQXNzZXJ0aW9uOjpjcmVhdGUoZ2V0
Q3VycmVudFByb2Nlc3NJRCgpLCAiTmV0d29yayBQcm9jZXNzIGlzIGhvbGRpbmcgbG9ja2VkIGZp
bGVzIl9zLCBQcm9jZXNzQXNzZXJ0aW9uVHlwZTo6RmluaXNoVGFza0ludGVycnVwdGFibGUsIFBy
b2Nlc3NBc3NlcnRpb246Ok1vZGU6OlN5bmMpOwotICAgIG1faG9sZGluZ0xvY2tlZEZpbGVBc3Nl
cnRpb24tPnNldFByZXBhcmVGb3JJbnZhbGlkYXRpb25IYW5kbGVyKFt0aGlzLCB3ZWFrVGhpcyA9
IFdlYWtQdHIgeyAqdGhpcyB9XSgpIG11dGFibGUgewotICAgICAgICBBU1NFUlQoaXNNYWluUnVu
TG9vcCgpKTsKLSAgICAgICAgaWYgKCF3ZWFrVGhpcykKLSAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICBpZiAoIW1fc2hvdWxkU3VzcGVuZElEQlNlcnZlcnMpCi0gICAgICAgICAgICByZXR1
cm47Ci0KLSAgICAgICAgZm9yRWFjaE5ldHdvcmtTZXNzaW9uKFtdKGF1dG8mIHNlc3Npb24pIHsK
LSAgICAgICAgICAgIGlmIChhdXRvKiBzZXJ2ZXIgPSBzZXNzaW9uLndlYklEQlNlcnZlcigpKQot
ICAgICAgICAgICAgICAgIHNlcnZlci0+c3VzcGVuZCgpOwotICAgICAgICB9KTsKLSAgICB9KTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZUNvbm5lY3Rpb25U
b0NsaWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGFmNGM2NDY0MzZiOTZlMTRlODdiM2NlMmI2MTFkYjA0
Mjg3OTA1ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c3RvcmFnZS9JREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50LmNwcApAQCAtMCwwICsxLDE5MSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIklEQlN0
b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQuaCIKKworI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENv
ZGVycy5oIgorI2luY2x1ZGUgIldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlck1lc3NhZ2VzLmgiCisj
aW5jbHVkZSAiV2ViSURCUmVzdWx0LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9JREJSZXF1ZXN0RGF0
YS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSURCUmVzdWx0RGF0YS5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xp
ZW50KElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgY29ubmVjdGlvbiwgV2ViQ29yZTo6SURCQ29u
bmVjdGlvbklkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICA6IG1fY29ubmVjdGlvbihjb25uZWN0
aW9uKQorICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCisgICAgLCBtX2Nvbm5lY3Rpb25U
b0NsaWVudChXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6Y3JlYXRl
KCp0aGlzKSkKK3sKK30KKworSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6fklEQlN0b3Jh
Z2VDb25uZWN0aW9uVG9DbGllbnQoKQoreworICAgIG1fY29ubmVjdGlvblRvQ2xpZW50LT5jbGVh
ckRlbGVnYXRlKCk7Cit9CisKK1dlYkNvcmU6OklEQlNlcnZlcjo6SURCQ29ubmVjdGlvblRvQ2xp
ZW50JiBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50Ojpjb25uZWN0aW9uVG9DbGllbnQoKQor
eworICAgIHJldHVybiBtX2Nvbm5lY3Rpb25Ub0NsaWVudDsKK30KKwordGVtcGxhdGU8Y2xhc3Mg
TWVzc2FnZVR5cGU+IHZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkR2V0UmVz
dWx0KGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCit7CisgICAgaWYg
KHJlc3VsdERhdGEudHlwZSgpID09IFdlYkNvcmU6OklEQlJlc3VsdFR5cGU6OkVycm9yKSB7Cisg
ICAgICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VUeXBlKHJl
c3VsdERhdGEpLCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChyZXN1bHRE
YXRhLnR5cGUoKSA9PSBXZWJDb3JlOjpJREJSZXN1bHRUeXBlOjpHZXRBbGxSZWNvcmRzU3VjY2Vz
cyAmJiByZXN1bHREYXRhLmdldEFsbFJlc3VsdCgpLnR5cGUoKSA9PSBXZWJDb3JlOjpJbmRleGVk
REI6OkdldEFsbFR5cGU6OktleXMpIHsKKyAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKG1f
Y29ubmVjdGlvbiwgTWVzc2FnZVR5cGUocmVzdWx0RGF0YSksIDApOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgYXV0byBibG9iRmlsZVBhdGhzID0gcmVzdWx0RGF0YS50eXBlKCkgPT0g
V2ViQ29yZTo6SURCUmVzdWx0VHlwZTo6R2V0QWxsUmVjb3Jkc1N1Y2Nlc3MgPyByZXN1bHREYXRh
LmdldEFsbFJlc3VsdCgpLmFsbEJsb2JGaWxlUGF0aHMoKSA6IHJlc3VsdERhdGEuZ2V0UmVzdWx0
KCkudmFsdWUoKS5ibG9iRmlsZVBhdGhzKCk7CisgICAgaWYgKGJsb2JGaWxlUGF0aHMuaXNFbXB0
eSgpKSB7CisgICAgICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3Nh
Z2VUeXBlKHJlc3VsdERhdGEpLCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIElQ
Qzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VUeXBlKHJlc3VsdERhdGEp
LCAwKTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWREZWxldGVE
YXRhYmFzZShjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAg
IElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJJREJDb25u
ZWN0aW9uVG9TZXJ2ZXI6OkRpZERlbGV0ZURhdGFiYXNlKHJlc3VsdERhdGEpLCAwKTsKK30KKwor
dm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRPcGVuRGF0YWJhc2UoY29uc3Qg
V2ViQ29yZTo6SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBJUEM6OkNvbm5lY3Rp
b246OnNlbmQobV9jb25uZWN0aW9uLCBNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVy
OjpEaWRPcGVuRGF0YWJhc2UocmVzdWx0RGF0YSksIDApOworfQorCit2b2lkIElEQlN0b3JhZ2VD
b25uZWN0aW9uVG9DbGllbnQ6OmRpZFN0YXJ0VHJhbnNhY3Rpb24oY29uc3QgV2ViQ29yZTo6SURC
UmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6
OklEQkVycm9yJiBlcnJvcikKK3sKKyAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQobV9jb25uZWN0
aW9uLCBNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWRTdGFydFRyYW5zYWN0
aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgZXJyb3IpLCAwKTsKK30KKwordm9pZCBJREJTdG9y
YWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRBYm9ydFRyYW5zYWN0aW9uKGNvbnN0IFdlYkNvcmU6
OklEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJD
b3JlOjpJREJFcnJvciYgZXJyb3IpCit7CisgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKG1fY29u
bmVjdGlvbiwgTWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6RGlkQWJvcnRUcmFu
c2FjdGlvbih0cmFuc2FjdGlvbklkZW50aWZpZXIsIGVycm9yKSwgMCk7Cit9CisKK3ZvaWQgSURC
U3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkQ29tbWl0VHJhbnNhY3Rpb24oY29uc3QgV2Vi
Q29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0
IFdlYkNvcmU6OklEQkVycm9yJiBlcnJvcikKK3sKKyAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQo
bV9jb25uZWN0aW9uLCBNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWRDb21t
aXRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbklkZW50aWZpZXIsIGVycm9yKSwgMCk7Cit9CisKK3Zv
aWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkQ3JlYXRlT2JqZWN0U3RvcmUoY29u
c3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBJUEM6OkNvbm5l
Y3Rpb246OnNlbmQobV9jb25uZWN0aW9uLCBNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2Vy
dmVyOjpEaWRDcmVhdGVPYmplY3RTdG9yZShyZXN1bHREYXRhKSwgMCk7Cit9CisKK3ZvaWQgSURC
U3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkRGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgV2Vi
Q29yZTo6SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBJUEM6OkNvbm5lY3Rpb246
OnNlbmQobV9jb25uZWN0aW9uLCBNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpE
aWREZWxldGVPYmplY3RTdG9yZShyZXN1bHREYXRhKSwgMCk7Cit9CisKK3ZvaWQgSURCU3RvcmFn
ZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkUmVuYW1lT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6
SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQo
bV9jb25uZWN0aW9uLCBNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWRSZW5h
bWVPYmplY3RTdG9yZShyZXN1bHREYXRhKSwgMCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5l
Y3Rpb25Ub0NsaWVudDo6ZGlkQ2xlYXJPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXN1
bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5l
Y3Rpb24sIE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZENsZWFyT2JqZWN0
U3RvcmUocmVzdWx0RGF0YSksIDApOworfQorCit2b2lkIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9D
bGllbnQ6OmRpZENyZWF0ZUluZGV4KGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmIHJlc3Vs
dERhdGEpCit7CisgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwgTWVzc2Fn
ZXM6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6RGlkQ3JlYXRlSW5kZXgocmVzdWx0RGF0YSks
IDApOworfQorCit2b2lkIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZERlbGV0ZUlu
ZGV4KGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCit7CisgICAgSVBD
OjpDb25uZWN0aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwgTWVzc2FnZXM6OldlYklEQkNvbm5lY3Rp
b25Ub1NlcnZlcjo6RGlkRGVsZXRlSW5kZXgocmVzdWx0RGF0YSksIDApOworfQorCit2b2lkIElE
QlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZFJlbmFtZUluZGV4KGNvbnN0IFdlYkNvcmU6
OklEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCit7CisgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5k
KG1fY29ubmVjdGlvbiwgTWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6RGlkUmVu
YW1lSW5kZXgocmVzdWx0RGF0YSksIDApOworfQorCit2b2lkIElEQlN0b3JhZ2VDb25uZWN0aW9u
VG9DbGllbnQ6OmRpZFB1dE9yQWRkKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmIHJlc3Vs
dERhdGEpCit7CisgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwgTWVzc2Fn
ZXM6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6RGlkUHV0T3JBZGQocmVzdWx0RGF0YSksIDAp
OworfQorCit2b2lkIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZEdldFJlY29yZChj
b25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIGRpZEdldFJl
c3VsdDxNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWRHZXRSZWNvcmQ+KHJl
c3VsdERhdGEpOworfQorCit2b2lkIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZEdl
dEFsbFJlY29yZHMoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sK
KyAgICBkaWRHZXRSZXN1bHQ8TWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6RGlk
R2V0QWxsUmVjb3Jkcz4ocmVzdWx0RGF0YSk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rp
b25Ub0NsaWVudDo6ZGlkR2V0Q291bnQoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYgcmVz
dWx0RGF0YSkKK3sKKyAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQobV9jb25uZWN0aW9uLCBNZXNz
YWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWRHZXRDb3VudChyZXN1bHREYXRhKSwg
MCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkRGVsZXRlUmVj
b3JkKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCit7CisgICAgSVBD
OjpDb25uZWN0aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwgTWVzc2FnZXM6OldlYklEQkNvbm5lY3Rp
b25Ub1NlcnZlcjo6RGlkRGVsZXRlUmVjb3JkKHJlc3VsdERhdGEpLCAwKTsKK30KKwordm9pZCBJ
REJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRPcGVuQ3Vyc29yKGNvbnN0IFdlYkNvcmU6
OklEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCit7CisgICAgZGlkR2V0UmVzdWx0PE1lc3NhZ2Vz
OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZE9wZW5DdXJzb3I+KHJlc3VsdERhdGEpOwor
fQorCit2b2lkIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZEl0ZXJhdGVDdXJzb3Io
Y29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBkaWRHZXRS
ZXN1bHQ8TWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6RGlkSXRlcmF0ZUN1cnNv
cj4ocmVzdWx0RGF0YSk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6
ZGlkR2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKGNvbnN0IFdlYkNvcmU6OklEQlJlc291
cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJ
REJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiYgZGF0YWJhc2VzKQoreworICAgIElQQzo6Q29ubmVj
dGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2
ZXI6OkRpZEdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhyZXF1ZXN0SWRlbnRpZmllciwg
ZGF0YWJhc2VzKSwgMCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6
ZmlyZVZlcnNpb25DaGFuZ2VFdmVudChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFi
YXNlQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVu
dGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgcmVxdWVzdGVkVmVyc2lvbikKK3sK
KyAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQobV9jb25uZWN0aW9uLCBNZXNzYWdlczo6V2ViSURC
Q29ubmVjdGlvblRvU2VydmVyOjpGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KGNvbm5lY3Rpb24uaWRl
bnRpZmllcigpLCByZXF1ZXN0SWRlbnRpZmllciwgcmVxdWVzdGVkVmVyc2lvbiksIDApOworfQor
Cit2b2lkIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZENsb3NlRnJvbVNlcnZlcihX
ZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYgY29ubmVjdGlv
biwgY29uc3QgV2ViQ29yZTo6SURCRXJyb3ImIGVycm9yKQoreworICAgIElQQzo6Q29ubmVjdGlv
bjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6
OkRpZENsb3NlRnJvbVNlcnZlcihjb25uZWN0aW9uLmlkZW50aWZpZXIoKSwgZXJyb3IpLCAwKTsK
K30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50Ojpub3RpZnlPcGVuREJSZXF1
ZXN0QmxvY2tlZChjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJ
ZGVudGlmaWVyLCB1aW50NjRfdCBvbGRWZXJzaW9uLCB1aW50NjRfdCBuZXdWZXJzaW9uKQorewor
ICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJJREJD
b25uZWN0aW9uVG9TZXJ2ZXI6Ok5vdGlmeU9wZW5EQlJlcXVlc3RCbG9ja2VkKHJlcXVlc3RJZGVu
dGlmaWVyLCBvbGRWZXJzaW9uLCBuZXdWZXJzaW9uKSwgMCk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdl
L0lEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NTBiYTAxYjAyMTIwZjIxZGI2MTM5MWYzYTg3NDRkMjJiNWZmNzBlNAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlQ29ubmVj
dGlvblRvQ2xpZW50LmgKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
Ni0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9JREJD
b25uZWN0aW9uVG9DbGllbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0lEQkNvbm5lY3Rpb25Ub0Ns
aWVudERlbGVnYXRlLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBJREJTdG9yYWdl
Q29ubmVjdGlvblRvQ2xpZW50IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OklEQlNlcnZlcjo6SURC
Q29ubmVjdGlvblRvQ2xpZW50RGVsZWdhdGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OworcHVibGljOgorICAgIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQoSVBDOjpDb25uZWN0
aW9uOjpVbmlxdWVJRCwgV2ViQ29yZTo6SURCQ29ubmVjdGlvbklkZW50aWZpZXIpOworICAgIH5J
REJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50KCk7CisKKyAgICBXZWJDb3JlOjpJREJDb25uZWN0
aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pZGVudGlm
aWVyOyB9CisgICAgSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBpcGNDb25uZWN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9jb25uZWN0aW9uOyB9CisgICAgV2ViQ29yZTo6SURCU2VydmVyOjpJREJD
b25uZWN0aW9uVG9DbGllbnQmIGNvbm5lY3Rpb25Ub0NsaWVudCgpOworCitwcml2YXRlOgorICAg
IHRlbXBsYXRlPGNsYXNzIE1lc3NhZ2VUeXBlPiB2b2lkIGRpZEdldFJlc3VsdChjb25zdCBXZWJD
b3JlOjpJREJSZXN1bHREYXRhJik7CisKKyAgICAvLyBJREJDb25uZWN0aW9uVG9DbGllbnREZWxl
Z2F0ZQorICAgIHZvaWQgZGlkRGVsZXRlRGF0YWJhc2UoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0
RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkT3BlbkRhdGFiYXNlKGNvbnN0IFdlYkNvcmU6OklE
QlJlc3VsdERhdGEmKSBmaW5hbDsKKyAgICB2b2lkIGRpZEFib3J0VHJhbnNhY3Rpb24oY29uc3Qg
V2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNv
bnN0IFdlYkNvcmU6OklEQkVycm9yJikgZmluYWw7CisgICAgdm9pZCBkaWRDb21taXRUcmFuc2Fj
dGlvbihjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRl
bnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCRXJyb3ImKSBmaW5hbDsKKyAgICB2b2lkIGRpZFN0
YXJ0VHJhbnNhY3Rpb24oY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFu
c2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OklEQkVycm9yJikgZmluYWw7CisgICAg
dm9pZCBkaWRDcmVhdGVPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJikg
ZmluYWw7CisgICAgdm9pZCBkaWREZWxldGVPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJS
ZXN1bHREYXRhJikgZmluYWw7CisgICAgdm9pZCBkaWRSZW5hbWVPYmplY3RTdG9yZShjb25zdCBX
ZWJDb3JlOjpJREJSZXN1bHREYXRhJikgZmluYWw7CisgICAgdm9pZCBkaWRDbGVhck9iamVjdFN0
b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBmaW5hbDsKKyAgICB2b2lkIGRpZENy
ZWF0ZUluZGV4KGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBmaW5hbDsKKyAgICB2b2lk
IGRpZERlbGV0ZUluZGV4KGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBmaW5hbDsKKyAg
ICB2b2lkIGRpZFJlbmFtZUluZGV4KGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBmaW5h
bDsKKyAgICB2b2lkIGRpZFB1dE9yQWRkKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBm
aW5hbDsKKyAgICB2b2lkIGRpZEdldFJlY29yZChjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRh
JikgZmluYWw7CisgICAgdm9pZCBkaWRHZXRBbGxSZWNvcmRzKGNvbnN0IFdlYkNvcmU6OklEQlJl
c3VsdERhdGEmKSBmaW5hbDsKKyAgICB2b2lkIGRpZEdldENvdW50KGNvbnN0IFdlYkNvcmU6OklE
QlJlc3VsdERhdGEmKSBmaW5hbDsKKyAgICB2b2lkIGRpZERlbGV0ZVJlY29yZChjb25zdCBXZWJD
b3JlOjpJREJSZXN1bHREYXRhJikgZmluYWw7CisgICAgdm9pZCBkaWRPcGVuQ3Vyc29yKGNvbnN0
IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBmaW5hbDsKKyAgICB2b2lkIGRpZEl0ZXJhdGVDdXJz
b3IoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkR2V0
QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRl
bnRpZmllciYsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9u
PiYpIGZpbmFsOworICAgIHZvaWQgbm90aWZ5T3BlbkRCUmVxdWVzdEJsb2NrZWQoY29uc3QgV2Vi
Q29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3Qg
b2xkVmVyc2lvbiwgdWludDY0X3QgbmV3VmVyc2lvbikgZmluYWw7CisgICAgdm9pZCBmaXJlVmVy
c2lvbkNoYW5nZUV2ZW50KFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25u
ZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRl
bnRpZmllciwgdWludDY0X3QgcmVxdWVzdGVkVmVyc2lvbikgZmluYWw7CisgICAgdm9pZCBkaWRD
bG9zZUZyb21TZXJ2ZXIoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5l
Y3Rpb24mLCBjb25zdCBXZWJDb3JlOjpJREJFcnJvciYpIGZpbmFsOworCisgICAgSVBDOjpDb25u
ZWN0aW9uOjpVbmlxdWVJRCBtX2Nvbm5lY3Rpb247CisgICAgV2ViQ29yZTo6SURCQ29ubmVjdGlv
bklkZW50aWZpZXIgbV9pZGVudGlmaWVyOworICAgIFJlZjxXZWJDb3JlOjpJREJTZXJ2ZXI6OklE
QkNvbm5lY3Rpb25Ub0NsaWVudD4gbV9jb25uZWN0aW9uVG9DbGllbnQ7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c3RvcmFnZS9JREJTdG9yYWdlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3N0b3JhZ2UvSURCU3RvcmFnZU1hbmFnZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQxYWFiOTY3MTQ3
NjEwYWZiZDZmNTQ2YWQyYzQ5ZDYzOGViMzY2ZjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZU1hbmFnZXIuY3BwCkBAIC0w
LDAgKzEsMjU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IklEQlN0b3JhZ2VNYW5hZ2VyLmgiCisKKyNpbmNsdWRlICJJREJTdG9yYWdlUmVnaXN0cnkuaCIK
KyNpbmNsdWRlIDxXZWJDb3JlL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvU1FMaXRlRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlSURCQmFj
a2luZ1N0b3JlLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMgdm9pZCBtaWdyYXRl
T3JpZ2luRGF0YShjb25zdCBTdHJpbmcmIG9sZE9yaWdpbkRpcmVjdG9yeSwgY29uc3QgU3RyaW5n
JiBuZXdPcmlnaW5EaXJlY3RvcnkpCit7CisgICAgaWYgKCFGaWxlU3lzdGVtOjpmaWxlRXhpc3Rz
KG9sZE9yaWdpbkRpcmVjdG9yeSkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gZmlsZU5h
bWVzID0gRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShvbGRPcmlnaW5EaXJlY3RvcnkpOworICAg
IGlmICghZmlsZU5hbWVzLmlzRW1wdHkoKSkKKyAgICAgICAgRmlsZVN5c3RlbTo6bWFrZUFsbERp
cmVjdG9yaWVzKG5ld09yaWdpbkRpcmVjdG9yeSk7CisKKyAgICBmb3IgKGF1dG8gbmFtZSA6IGZp
bGVOYW1lcykgeworICAgICAgICBTdHJpbmcgY2hpbGRQYXRoID0gRmlsZVN5c3RlbTo6Z2V0U3lt
Ym9saWNMaW5rVGFyZ2V0KEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChvbGRP
cmlnaW5EaXJlY3RvcnksIG5hbWUpKTsKKyAgICAgICAgU3RyaW5nIG5ld05hbWUgPSBXZWJDb3Jl
OjpTUUxpdGVGaWxlU3lzdGVtOjpjb21wdXRlSGFzaEZvckZpbGVOYW1lKFdlYkNvcmU6OklEQlNl
cnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWNvZGVEYXRhYmFzZU5hbWUobmFtZSkpOwor
ICAgICAgICBhdXRvIG5ld0NoaWxkUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChuZXdPcmlnaW5EaXJlY3RvcnksIG5ld05hbWUpOworICAgICAgICBGaWxlU3lzdGVt
Ojptb3ZlRmlsZShjaGlsZFBhdGgsIG5ld0NoaWxkUGF0aCk7CisgICAgfQorCisgICAgRmlsZVN5
c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3Rvcnkob2xkT3JpZ2luRGlyZWN0b3J5KTsKK30KKworU3Ry
aW5nIElEQlN0b3JhZ2VNYW5hZ2VyOjppZGJTdG9yYWdlT3JpZ2luRGlyZWN0b3J5KGNvbnN0IFN0
cmluZyYgcm9vdERpcmVjdG9yeSwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4p
Cit7CisgICAgaWYgKHJvb3REaXJlY3RvcnkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZW1w
dHlTdHJpbmcoKTsKKworICAgIFN0cmluZyBvcmlnaW5EaXJlY3RvcnkgPSBXZWJDb3JlOjpJREJE
YXRhYmFzZUlkZW50aWZpZXI6OmRhdGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVUb1Jvb3Qob3JpZ2lu
LnRvcE9yaWdpbiwgb3JpZ2luLmNsaWVudE9yaWdpbiwgcm9vdERpcmVjdG9yeSwgInYxIik7Cisg
ICAgU3RyaW5nIG9sZE9yaWdpbkRpcmVjdG9yeSA9IFdlYkNvcmU6OklEQkRhdGFiYXNlSWRlbnRp
Zmllcjo6ZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9vdChvcmlnaW4udG9wT3JpZ2luLCBv
cmlnaW4uY2xpZW50T3JpZ2luLCByb290RGlyZWN0b3J5LCAidjAiKTsKKyAgICBtaWdyYXRlT3Jp
Z2luRGF0YShvbGRPcmlnaW5EaXJlY3RvcnksIG9yaWdpbkRpcmVjdG9yeSk7CisKKyAgICByZXR1
cm4gb3JpZ2luRGlyZWN0b3J5OworfQorCit1aW50NjRfdCBJREJTdG9yYWdlTWFuYWdlcjo6aWRi
U3RvcmFnZVNpemUoY29uc3QgU3RyaW5nJiBvcmlnaW5EaXJlY3RvcnkpCit7CisgICAgaWYgKG9y
aWdpbkRpcmVjdG9yeS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJu
IFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpkYXRhYmFzZXNTaXpl
Rm9yRGlyZWN0b3J5KG9yaWdpbkRpcmVjdG9yeSk7Cit9CisKK3N0YXRpYyB2b2lkIGdldE9yaWdp
bnNGb3JWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvblBhdGgsIEhhc2hTZXQ8V2ViQ29yZTo6
Q2xpZW50T3JpZ2luPiYgb3JpZ2lucykKK3sKKyAgICBmb3IgKGF1dG8mIHRvcERhdGFiYXNlSWRl
bnRpZmllciA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkodmVyc2lvblBhdGgpKSB7CisgICAg
ICAgIGF1dG8gdG9wT3JpZ2luID0gV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0
YWJhc2VJZGVudGlmaWVyKHRvcERhdGFiYXNlSWRlbnRpZmllcik7CisgICAgICAgIGlmICghdG9w
T3JpZ2luKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgYXV0byB0b3BPcmlnaW5E
aXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodmVyc2lvblBh
dGgsIHRvcERhdGFiYXNlSWRlbnRpZmllcik7CisgICAgICAgIGZvciAoYXV0byYgZGF0YWJhc2VJ
ZGVudGlmaWVyIDogRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeSh0b3BPcmlnaW5EaXJlY3Rvcnkp
KSB7CisgICAgICAgICAgICBhdXRvIG9yaWdpbkRpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudCh0b3BPcmlnaW5EaXJlY3RvcnksIGRhdGFiYXNlSWRlbnRpZmll
cik7CisgICAgICAgICAgICBpZiAoRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3Rvcnkob3Jp
Z2luRGlyZWN0b3J5KSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAg
YXV0byBjbGllbnRPcmlnaW4gPSBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRh
YmFzZUlkZW50aWZpZXIoZGF0YWJhc2VJZGVudGlmaWVyKTsKKyAgICAgICAgICAgIC8vIFRoaXMg
aXMgbm90IG9yaWdpbiBkaXJlY3RvcnksIGJ1dCBtYXkgYmUgZGF0YWJhc2UgZGlyZWN0b3J5Lgor
ICAgICAgICAgICAgaWYgKCFjbGllbnRPcmlnaW4pIHsKKyAgICAgICAgICAgICAgICBvcmlnaW5z
LmFkZChXZWJDb3JlOjpDbGllbnRPcmlnaW4geyAqdG9wT3JpZ2luLCAqdG9wT3JpZ2luIH0pOwor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBv
cmlnaW5zLmFkZChXZWJDb3JlOjpDbGllbnRPcmlnaW4geyAqdG9wT3JpZ2luLCAqY2xpZW50T3Jp
Z2luIH0pOworICAgICAgICB9CisKKyAgICAgICAgLy8gV2UgbWF5IGhhdmUgZGVsZXRlZCBlbXB0
eSBjaGlsZHJlbiBkaXJlY3RvcmllcyBhYm92ZSwgd2hpY2ggbWFrZSB0aGlzIGRpcmVjdG9yeSBl
bXB0eS4KKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkodG9wT3JpZ2lu
RGlyZWN0b3J5KTsKKyAgICB9Cit9CisKK0hhc2hTZXQ8V2ViQ29yZTo6Q2xpZW50T3JpZ2luPiBJ
REJTdG9yYWdlTWFuYWdlcjo6b3JpZ2luc09mSURCU3RvcmFnZURhdGEoY29uc3QgU3RyaW5nJiBy
b290RGlyZWN0b3J5KQoreworICAgIEhhc2hTZXQ8V2ViQ29yZTo6Q2xpZW50T3JpZ2luPiBvcmln
aW5zOworICAgIGlmIChyb290RGlyZWN0b3J5LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG9y
aWdpbnM7CisKKyAgICBnZXRPcmlnaW5zRm9yVmVyc2lvbihGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQocm9vdERpcmVjdG9yeSwgInYwIiksIG9yaWdpbnMpOworICAgIGdldE9y
aWdpbnNGb3JWZXJzaW9uKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyb290
RGlyZWN0b3J5LCAidjEiKSwgb3JpZ2lucyk7CisKKyAgICByZXR1cm4gb3JpZ2luczsKK30KKwor
SURCU3RvcmFnZU1hbmFnZXI6OklEQlN0b3JhZ2VNYW5hZ2VyKGNvbnN0IFN0cmluZyYgcGF0aCwg
SURCU3RvcmFnZVJlZ2lzdHJ5JiByZWdpc3RyeSwgUXVvdGFDaGVja0Z1bmN0aW9uJiYgcXVvdGFD
aGVja0Z1bmN0aW9uKQorICAgIDogbV9wYXRoKHBhdGgpCisgICAgLCBtX3JlZ2lzdHJ5KHJlZ2lz
dHJ5KQorICAgICwgbV9xdW90YUNoZWNrRnVuY3Rpb24oV1RGTW92ZShxdW90YUNoZWNrRnVuY3Rp
b24pKQoreworfQorCitib29sIElEQlN0b3JhZ2VNYW5hZ2VyOjppc0FjdGl2ZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuICFtX2RhdGFiYXNlcy5pc0VtcHR5KCk7Cit9CisKK2Jvb2wgSURCU3RvcmFn
ZU1hbmFnZXI6Omhhc0RhdGFJbk1lbW9yeSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdURjo6YW55
T2YobV9kYXRhYmFzZXMudmFsdWVzKCksIFsmXSAoYXV0byYgZGF0YWJhc2UpIHsKKyAgICAgICAg
cmV0dXJuIGRhdGFiYXNlLT5oYXNEYXRhSW5NZW1vcnkoKTsKKyAgICB9KTsKK30KKwordm9pZCBJ
REJTdG9yYWdlTWFuYWdlcjo6Y2xvc2VEYXRhYmFzZXNGb3JEZWxldGlvbigpCit7CisgICAgZm9y
IChhdXRvJiBkYXRhYmFzZSA6IG1fZGF0YWJhc2VzLnZhbHVlcygpKQorICAgICAgICBkYXRhYmFz
ZS0+aW1tZWRpYXRlQ2xvc2UoKTsKKworICAgIG1fZGF0YWJhc2VzLmNsZWFyKCk7Cit9CisKK3Zv
aWQgSURCU3RvcmFnZU1hbmFnZXI6OnN0b3BEYXRhYmFzZUFjdGl2aXRpZXNGb3JTdXNwZW5kKCkK
K3sKKyAgICBpZiAobV9wYXRoLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9y
IChhdXRvJiBkYXRhYmFzZSA6IG1fZGF0YWJhc2VzLnZhbHVlcygpKSB7CisgICAgICAgIC8vIE9u
bHkgc3RvcCBkYXRhYmFzZXMgd2l0aCBub24tZXBoZW1lcmFsIGJhY2tpbmcgc3RvcmUgdGhhdCBj
YW4gaG9sZCBkYXRhYmFzZSBmaWxlIGxvY2suCisgICAgICAgIGlmICghZGF0YWJhc2UtPmlkZW50
aWZpZXIoKS5pc1RyYW5zaWVudCgpKQorICAgICAgICAgICAgZGF0YWJhc2UtPmFib3J0QWN0aXZl
VHJhbnNhY3Rpb25zKCk7CisgICAgfQorfQorCitXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlE
QkRhdGFiYXNlJiBJREJTdG9yYWdlTWFuYWdlcjo6Z2V0T3JDcmVhdGVVbmlxdWVJREJEYXRhYmFz
ZShjb25zdCBXZWJDb3JlOjpJREJEYXRhYmFzZUlkZW50aWZpZXImIGlkZW50aWZpZXIpCit7Cisg
ICAgYXV0byBhZGRSZXN1bHQgPSBtX2RhdGFiYXNlcy5hZGQoaWRlbnRpZmllciwgbnVsbHB0cik7
CisgICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICBhZGRSZXN1bHQuaXRlcmF0
b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFi
YXNlPigqdGhpcywgaWRlbnRpZmllcik7CisKKyAgICByZXR1cm4gKmFkZFJlc3VsdC5pdGVyYXRv
ci0+dmFsdWU7Cit9CisKK3ZvaWQgSURCU3RvcmFnZU1hbmFnZXI6Om9wZW5EYXRhYmFzZShXZWJD
b3JlOjpJREJTZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub0NsaWVudCYgY29ubmVjdGlvblRvQ2xpZW50
LCBjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEpCit7CisgICAgYXV0
byYgZGF0YWJhc2UgPSBnZXRPckNyZWF0ZVVuaXF1ZUlEQkRhdGFiYXNlKHJlcXVlc3REYXRhLmRh
dGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICBkYXRhYmFzZS5vcGVuRGF0YWJhc2VDb25uZWN0aW9u
KGNvbm5lY3Rpb25Ub0NsaWVudCwgcmVxdWVzdERhdGEpOworfQorCit2b2lkIElEQlN0b3JhZ2VN
YW5hZ2VyOjpkZWxldGVEYXRhYmFzZShXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQkNvbm5lY3Rpb25U
b0NsaWVudCYgY29ubmVjdGlvblRvQ2xpZW50LCBjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0
YSYgcmVxdWVzdERhdGEpCit7CisgICAgYXV0byYgZGF0YWJhc2UgPSBnZXRPckNyZWF0ZVVuaXF1
ZUlEQkRhdGFiYXNlKHJlcXVlc3REYXRhLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICBkYXRh
YmFzZS5oYW5kbGVEZWxldGUoY29ubmVjdGlvblRvQ2xpZW50LCByZXF1ZXN0RGF0YSk7CisKKyAg
ICAvLyBUaGlzIGRhdGFiYXNlIGlzIGNyZWF0ZWQgZm9yIGRlbGV0aW9uLgorICAgIGlmIChkYXRh
YmFzZS50cnlDbG9zZSgpKQorICAgICAgICBtX2RhdGFiYXNlcy5yZW1vdmUoZGF0YWJhc2UuaWRl
bnRpZmllcigpKTsKK30KKworVmVjdG9yPFdlYkNvcmU6OklEQkRhdGFiYXNlTmFtZUFuZFZlcnNp
b24+IElEQlN0b3JhZ2VNYW5hZ2VyOjpnZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMoKQor
eworICAgIFZlY3RvcjxXZWJDb3JlOjpJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiByZXN1bHQ7
CisgICAgSGFzaFNldDxTdHJpbmc+IHZpc2l0ZWREYXRhYmFzZVBhdGhzOworICAgIGZvciAoYXV0
byYgZGF0YWJhc2UgOiBtX2RhdGFiYXNlcy52YWx1ZXMoKSkgeworICAgICAgICBhdXRvIHBhdGgg
PSBkYXRhYmFzZS0+ZmlsZVBhdGgoKTsKKyAgICAgICAgaWYgKCFwYXRoLmlzRW1wdHkoKSkKKyAg
ICAgICAgICAgIHZpc2l0ZWREYXRhYmFzZVBhdGhzLmFkZChwYXRoKTsKKworICAgICAgICBpZiAo
YXV0byBuYW1lQW5kVmVyc2lvbiA9IGRhdGFiYXNlLT5uYW1lQW5kVmVyc2lvbigpKQorICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZChXVEZNb3ZlKCpuYW1lQW5kVmVyc2lvbikpOworICAgIH0KKwor
ICAgIGF1dG8gZGF0YWJhc2VJZGVudGlmaWVycyA9IEZpbGVTeXN0ZW06Omxpc3REaXJlY3Rvcnko
bV9wYXRoKTsKKyAgICBmb3IgKGF1dG8gaWRlbnRpZmllciA6IGRhdGFiYXNlSWRlbnRpZmllcnMp
IHsKKyAgICAgICAgYXV0byBkYXRhYmFzZURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChtX3BhdGgsIGlkZW50aWZpZXIpOworICAgICAgICBhdXRvIGRhdGFi
YXNlUGF0aCA9IFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpmdWxs
RGF0YWJhc2VQYXRoRm9yRGlyZWN0b3J5KGRhdGFiYXNlRGlyZWN0b3J5KTsKKyAgICAgICAgaWYg
KHZpc2l0ZWREYXRhYmFzZVBhdGhzLmNvbnRhaW5zKGRhdGFiYXNlUGF0aCkpCisgICAgICAgICAg
ICBjb250aW51ZTsKKworICAgICAgICBpZiAoYXV0byBuYW1lQW5kVmVyc2lvbiA9IFdlYkNvcmU6
OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpkYXRhYmFzZU5hbWVBbmRWZXJzaW9u
RnJvbUZpbGUoZGF0YWJhc2VQYXRoKSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoV1RGTW92
ZSgqbmFtZUFuZFZlcnNpb24pKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2
b2lkIElEQlN0b3JhZ2VNYW5hZ2VyOjpvcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKGNvbnN0IFdlYkNv
cmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkKK3sKKyAgICBhdXRvKiBkYXRhYmFzZSA9
IG1fZGF0YWJhc2VzLmdldChyZXF1ZXN0RGF0YS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAg
aWYgKCFkYXRhYmFzZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZGF0YWJhc2UtPm9wZW5EQlJl
cXVlc3RDYW5jZWxsZWQocmVxdWVzdERhdGEucmVxdWVzdElkZW50aWZpZXIoKSk7CisKKyAgICAv
LyBEYXRhYmFzZSBiZWNvbWVzIGlkbGUgYWZ0ZXIgcmVxdWVzdCBpcyBjYW5jZWxsZWQuCisgICAg
aWYgKGRhdGFiYXNlLT50cnlDbG9zZSgpKQorICAgICAgICBtX2RhdGFiYXNlcy5yZW1vdmUoZGF0
YWJhc2UtPmlkZW50aWZpZXIoKSk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZU1hbmFnZXI6OnJlZ2lz
dGVyQ29ubmVjdGlvbihXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVj
dGlvbiYgY29ubmVjdGlvbikKK3sKKyAgICBtX3JlZ2lzdHJ5LnJlZ2lzdGVyQ29ubmVjdGlvbihj
b25uZWN0aW9uKTsKK30KKwordm9pZCBJREJTdG9yYWdlTWFuYWdlcjo6dW5yZWdpc3RlckNvbm5l
Y3Rpb24oV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24pCit7CisgICAgbV9yZWdpc3RyeS51bnJlZ2lzdGVyQ29ubmVjdGlvbihjb25uZWN0
aW9uKTsKK30KKwordm9pZCBJREJTdG9yYWdlTWFuYWdlcjo6cmVnaXN0ZXJUcmFuc2FjdGlvbihX
ZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0
aW9uKQoreworICAgIG1fcmVnaXN0cnkucmVnaXN0ZXJUcmFuc2FjdGlvbih0cmFuc2FjdGlvbik7
Cit9CisKK3ZvaWQgSURCU3RvcmFnZU1hbmFnZXI6OnVucmVnaXN0ZXJUcmFuc2FjdGlvbihXZWJD
b3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9u
KQoreworICAgIG1fcmVnaXN0cnkudW5yZWdpc3RlclRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKTsK
K30KKworc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklEQlNlcnZlcjo6SURCQmFja2luZ1N0b3Jl
PiBJREJTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlQmFja2luZ1N0b3JlKGNvbnN0IFdlYkNvcmU6OklE
QkRhdGFiYXNlSWRlbnRpZmllciYgaWRlbnRpZmllcikKK3sKKyAgICBpZiAobV9wYXRoLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViQ29yZTo6SURCU2VydmVyOjpNZW1v
cnlJREJCYWNraW5nU3RvcmU+KGlkZW50aWZpZXIpOworCisgICAgaWYgKGlkZW50aWZpZXIuaXNU
cmFuc2llbnQoKSkKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViQ29yZTo6SURCU2VydmVy
OjpNZW1vcnlJREJCYWNraW5nU3RvcmU+KGlkZW50aWZpZXIpOworCisgICAgYXV0byBuYW1lID0g
V2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0ZUhhc2hGb3JGaWxlTmFtZShpZGVudGlm
aWVyLmRhdGFiYXNlTmFtZSgpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJDb3JlOjpJREJT
ZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZT4oaWRlbnRpZmllciwgRmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fcGF0aCwgbmFtZSkpOworfQorCit2b2lkIElEQlN0b3Jh
Z2VNYW5hZ2VyOjpyZXF1ZXN0U3BhY2UoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgdWlu
dDY0X3Qgc2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3sKKyAgICBtX3F1b3RhQ2hlY2tGdW5jdGlvbihzaXplLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VNYW5hZ2VyLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZU1hbmFnZXIuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi45ZGZhOGUwODcyYjMxNGM1MTM4NWQxZGU3NTViMTkzZWQ4Y2RhZTM2Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0
b3JhZ2VNYW5hZ2VyLmgKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSA8V2ViQ29yZS9VbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIElEQlNlcnZlciB7CitjbGFzcyBJREJCYWNraW5n
U3RvcmU7CitjbGFzcyBJREJDb25uZWN0aW9uVG9DbGllbnQ7CitjbGFzcyBVbmlxdWVJREJEYXRh
YmFzZTsKK2NsYXNzIFVuaXF1ZUlEQlRyYW5zYWN0aW9uOworfQorCitzdHJ1Y3QgSURCRGF0YWJh
c2VOYW1lQW5kVmVyc2lvbjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIElEQlN0
b3JhZ2VSZWdpc3RyeTsKKworY2xhc3MgSURCU3RvcmFnZU1hbmFnZXIgZmluYWwgOiBwdWJsaWMg
V2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIgeworcHVibGljOgor
ICAgIHN0YXRpYyBTdHJpbmcgaWRiU3RvcmFnZU9yaWdpbkRpcmVjdG9yeShjb25zdCBTdHJpbmcm
IHJvb3REaXJlY3RvcnksIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYpOworICAgIHN0YXRp
YyB1aW50NjRfdCBpZGJTdG9yYWdlU2l6ZShjb25zdCBTdHJpbmcmIG9yaWdpbkRpcmVjdG9yeSk7
CisgICAgc3RhdGljIEhhc2hTZXQ8V2ViQ29yZTo6Q2xpZW50T3JpZ2luPiBvcmlnaW5zT2ZJREJT
dG9yYWdlRGF0YShjb25zdCBTdHJpbmcmIHJvb3REaXJlY3RvcnkpOworCisgICAgdXNpbmcgUXVv
dGFDaGVja0Z1bmN0aW9uID0gRnVuY3Rpb248dm9pZCh1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik+OworICAgIElEQlN0b3JhZ2VNYW5hZ2Vy
KGNvbnN0IFN0cmluZyYgcGF0aCwgSURCU3RvcmFnZVJlZ2lzdHJ5JiwgUXVvdGFDaGVja0Z1bmN0
aW9uJiYpOworICAgIH5JREJTdG9yYWdlTWFuYWdlcigpIGZpbmFsIHsgfQorICAgIGJvb2wgaXNB
Y3RpdmUoKSBjb25zdDsKKyAgICBib29sIGhhc0RhdGFJbk1lbW9yeSgpIGNvbnN0OworICAgIHZv
aWQgY2xvc2VEYXRhYmFzZXNGb3JEZWxldGlvbigpOworICAgIHZvaWQgc3RvcERhdGFiYXNlQWN0
aXZpdGllc0ZvclN1c3BlbmQoKTsKKworICAgIHZvaWQgb3BlbkRhdGFiYXNlKFdlYkNvcmU6OklE
QlNlcnZlcjo6SURCQ29ubmVjdGlvblRvQ2xpZW50JiwgY29uc3QgV2ViQ29yZTo6SURCUmVxdWVz
dERhdGEmKTsKKyAgICB2b2lkIG9wZW5EQlJlcXVlc3RDYW5jZWxsZWQoY29uc3QgV2ViQ29yZTo6
SURCUmVxdWVzdERhdGEmKTsKKyAgICB2b2lkIGRlbGV0ZURhdGFiYXNlKFdlYkNvcmU6OklEQlNl
cnZlcjo6SURCQ29ubmVjdGlvblRvQ2xpZW50JiwgY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERh
dGEmKTsKKyAgICBWZWN0b3I8V2ViQ29yZTo6SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbj4gZ2V0
QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKCk7CisKK3ByaXZhdGU6CisgICAgV2ViQ29yZTo6
SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZSYgZ2V0T3JDcmVhdGVVbmlxdWVJREJEYXRhYmFz
ZShjb25zdCBXZWJDb3JlOjpJREJEYXRhYmFzZUlkZW50aWZpZXImKTsKKworICAgIC8vIFdlYkNv
cmU6OlVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlcgorICAgIHZvaWQgcmVnaXN0ZXJDb25uZWN0aW9u
KFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJikgZmluYWw7
CisgICAgdm9pZCB1bnJlZ2lzdGVyQ29ubmVjdGlvbihXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1
ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYpIGZpbmFsOworICAgIHZvaWQgcmVnaXN0ZXJUcmFuc2Fj
dGlvbihXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mKSBm
aW5hbDsKKyAgICB2b2lkIHVucmVnaXN0ZXJUcmFuc2FjdGlvbihXZWJDb3JlOjpJREJTZXJ2ZXI6
OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mKSBmaW5hbDsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8V2ViQ29yZTo6SURCU2VydmVyOjpJREJCYWNraW5nU3RvcmU+IGNyZWF0ZUJhY2tpbmdTdG9y
ZShjb25zdCBXZWJDb3JlOjpJREJEYXRhYmFzZUlkZW50aWZpZXImKSBmaW5hbDsKKyAgICB2b2lk
IHJlcXVlc3RTcGFjZShjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCB1aW50NjRfdCBzaXpl
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKKworICAgIFN0cmluZyBt
X3BhdGg7CisgICAgSURCU3RvcmFnZVJlZ2lzdHJ5JiBtX3JlZ2lzdHJ5OworICAgIFF1b3RhQ2hl
Y2tGdW5jdGlvbiBtX3F1b3RhQ2hlY2tGdW5jdGlvbjsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OklE
QkRhdGFiYXNlSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklEQlNlcnZlcjo6
VW5pcXVlSURCRGF0YWJhc2U+PiBtX2RhdGFiYXNlczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lE
QlN0b3JhZ2VSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3Jh
Z2UvSURCU3RvcmFnZVJlZ2lzdHJ5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMDIxN2NlMWM1YzZiYjgyNDhl
YmY5ZWY5Yzc0MDVkZWI1NjVjYTA1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VSZWdpc3RyeS5jcHAKQEAgLTAsMCArMSwx
MDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSURCU3Rv
cmFnZVJlZ2lzdHJ5LmgiCisKKyNpbmNsdWRlICJJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uaD4KKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK0lEQlN0b3JhZ2VSZWdpc3RyeTo6SURCU3RvcmFnZVJlZ2lzdHJ5KCkg
PSBkZWZhdWx0OworCitXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub0NsaWVudCYg
SURCU3RvcmFnZVJlZ2lzdHJ5OjpnZXRPckNyZWF0ZUNvbm5lY3Rpb25Ub0NsaWVudChJUEM6OkNv
bm5lY3Rpb246OlVuaXF1ZUlEIGNvbm5lY3Rpb24sIFdlYkNvcmU6OklEQkNvbm5lY3Rpb25JZGVu
dGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX2Nvbm5lY3Rpb25z
VG9DbGllbnQuYWRkKGlkZW50aWZpZXIsIG51bGxwdHIpOworICAgIGlmIChhZGRSZXN1bHQuaXNO
ZXdFbnRyeSkKKyAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8
SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudD4oY29ubmVjdGlvbiwgaWRlbnRpZmllcik7CisK
KyAgICBBU1NFUlQoYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+aXBjQ29ubmVjdGlvbigpID09
IGNvbm5lY3Rpb24pOworICAgIHJldHVybiBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5jb25u
ZWN0aW9uVG9DbGllbnQoKTsKK30KKwordm9pZCBJREJTdG9yYWdlUmVnaXN0cnk6OnJlbW92ZUNv
bm5lY3Rpb25Ub0NsaWVudChJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGNvbm5lY3Rpb24pCit7
CisgICAgYXV0byBhbGxDb25uZWN0aW9uc1RvQ2xpZW50ID0gc3RkOjpleGNoYW5nZShtX2Nvbm5l
Y3Rpb25zVG9DbGllbnQsIHsgfSk7CisgICAgZm9yIChhdXRvJiBbaWRlbnRpZmllciwgY29ubmVj
dGlvblRvQ2xpZW50XSA6IGFsbENvbm5lY3Rpb25zVG9DbGllbnQpIHsKKyAgICAgICAgaWYgKGNv
bm5lY3Rpb25Ub0NsaWVudC0+aXBjQ29ubmVjdGlvbigpICE9IGNvbm5lY3Rpb24pIHsKKyAgICAg
ICAgICAgIG1fY29ubmVjdGlvbnNUb0NsaWVudC5hZGQoaWRlbnRpZmllciwgV1RGTW92ZShjb25u
ZWN0aW9uVG9DbGllbnQpKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAg
ICAgIGNvbm5lY3Rpb25Ub0NsaWVudC0+Y29ubmVjdGlvblRvQ2xpZW50KCkuY29ubmVjdGlvblRv
Q2xpZW50Q2xvc2VkKCk7CisgICAgfQorfQorCit2b2lkIElEQlN0b3JhZ2VSZWdpc3RyeTo6cmVn
aXN0ZXJDb25uZWN0aW9uKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25u
ZWN0aW9uJiBjb25uZWN0aW9uKQoreworICAgIGF1dG8gaWRlbnRpZmllciA9IGNvbm5lY3Rpb24u
aWRlbnRpZmllcigpOworICAgIEFTU0VSVCghbV9jb25uZWN0aW9ucy5jb250YWlucyhpZGVudGlm
aWVyKSk7CisKKyAgICBtX2Nvbm5lY3Rpb25zLmFkZChpZGVudGlmaWVyLCBjb25uZWN0aW9uKTsK
K30KKwordm9pZCBJREJTdG9yYWdlUmVnaXN0cnk6OnVucmVnaXN0ZXJDb25uZWN0aW9uKFdlYkNv
cmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiBjb25uZWN0aW9uKQor
eworICAgIGF1dG8gaWRlbnRpZmllciA9IGNvbm5lY3Rpb24uaWRlbnRpZmllcigpOworICAgIEFT
U0VSVChtX2Nvbm5lY3Rpb25zLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKKworICAgIG1fY29ubmVj
dGlvbnMucmVtb3ZlKGlkZW50aWZpZXIpOworfQorCit2b2lkIElEQlN0b3JhZ2VSZWdpc3RyeTo6
cmVnaXN0ZXJUcmFuc2FjdGlvbihXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNl
VHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQoreworICAgIGF1dG8gaWRlbnRpZmllciA9IHRyYW5z
YWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCk7CisgICAgQVNTRVJUKCFtX3RyYW5zYWN0aW9ucy5j
b250YWlucyhpZGVudGlmaWVyKSk7CisKKyAgICBtX3RyYW5zYWN0aW9ucy5hZGQoaWRlbnRpZmll
ciwgdHJhbnNhY3Rpb24pOworfQorCit2b2lkIElEQlN0b3JhZ2VSZWdpc3RyeTo6dW5yZWdpc3Rl
clRyYW5zYWN0aW9uKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VUcmFuc2Fj
dGlvbiYgdHJhbnNhY3Rpb24pCit7CisgICAgYXV0byBpZGVudGlmaWVyID0gdHJhbnNhY3Rpb24u
aW5mbygpLmlkZW50aWZpZXIoKTsKKyAgICBBU1NFUlQobV90cmFuc2FjdGlvbnMuY29udGFpbnMo
aWRlbnRpZmllcikpOworCisgICAgbV90cmFuc2FjdGlvbnMucmVtb3ZlKGlkZW50aWZpZXIpOwor
fQorCitXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiogSURC
U3RvcmFnZVJlZ2lzdHJ5OjpnZXRDb25uZWN0aW9uKHVpbnQ2NF90IGlkZW50aWZpZXIpCit7Cisg
ICAgcmV0dXJuIG1fY29ubmVjdGlvbnMuZ2V0KGlkZW50aWZpZXIpLmdldCgpOworfQorCitXZWJD
b3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24qIElEQlN0b3JhZ2VS
ZWdpc3RyeTo6Z2V0VHJhbnNhY3Rpb24oV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyIGlk
ZW50aWZpZXIpCit7CisgICAgcmV0dXJuIG1fdHJhbnNhY3Rpb25zLmdldChpZGVudGlmaWVyKS5n
ZXQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZVJlZ2lzdHJ5LmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZVJlZ2lzdHJ5LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZDIzNGUwZTQxYTFmYzVmM2JiOTkxYWRiZDJlMDYwMmMzOGU5NDU4NAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdl
UmVnaXN0cnkuaApAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9JREJSZXNvdXJjZUlk
ZW50aWZpZXIuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CituYW1lc3BhY2UgSURCU2VydmVyIHsKK2NsYXNzIFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVj
dGlvbjsKK2NsYXNzIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb247Cit9Cit9CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OworCitj
bGFzcyBJREJTdG9yYWdlUmVnaXN0cnkgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwor
cHVibGljOgorICAgIElEQlN0b3JhZ2VSZWdpc3RyeSgpOworICAgIFdlYkNvcmU6OklEQlNlcnZl
cjo6SURCQ29ubmVjdGlvblRvQ2xpZW50JiBnZXRPckNyZWF0ZUNvbm5lY3Rpb25Ub0NsaWVudChJ
UEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBXZWJDb3JlOjpJREJDb25uZWN0aW9uSWRlbnRpZmll
cik7CisgICAgdm9pZCByZW1vdmVDb25uZWN0aW9uVG9DbGllbnQoSVBDOjpDb25uZWN0aW9uOjpV
bmlxdWVJRCk7CisgICAgdm9pZCByZWdpc3RlckNvbm5lY3Rpb24oV2ViQ29yZTo6SURCU2VydmVy
OjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJDb25u
ZWN0aW9uKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJik7
CisgICAgV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24qIGdl
dENvbm5lY3Rpb24odWludDY0X3QgaWRlbnRpZmllcik7CisgICAgdm9pZCByZWdpc3RlclRyYW5z
YWN0aW9uKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYp
OworICAgIHZvaWQgdW5yZWdpc3RlclRyYW5zYWN0aW9uKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5p
cXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYpOworICAgIFdlYkNvcmU6OklEQlNlcnZlcjo6VW5p
cXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiogZ2V0VHJhbnNhY3Rpb24oV2ViQ29yZTo6SURCUmVz
b3VyY2VJZGVudGlmaWVyKTsKKworcHJpdmF0ZToKKyAgICBIYXNoTWFwPFdlYkNvcmU6OklEQkNv
bm5lY3Rpb25JZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8SURCU3RvcmFnZUNvbm5lY3Rpb25U
b0NsaWVudD4+IG1fY29ubmVjdGlvbnNUb0NsaWVudDsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBX
ZWFrUHRyPFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uPj4g
bV9jb25uZWN0aW9uczsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmll
ciwgV2Vha1B0cjxXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rp
b24+PiBtX3RyYW5zYWN0aW9uczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdl
TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29y
a1N0b3JhZ2VNYW5hZ2VyLmNwcAppbmRleCA4MTNlNmU5NWExM2FiZTM5MTg2ZDE5YjJkYWIyODdi
YmI1NTI0Zjc5Li4zYTQyNjM4NmM1MjkzMzdkMTE0ODIzODQxNmVlNGMwMmY5NGU0ZmQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2Uv
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmNwcApAQCAtMjYsMTggKzI2LDI2IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmgiCiAKKyNpbmNsdWRl
ICJDYWNoZVN0b3JhZ2VFbmdpbmUuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtU3RvcmFnZUhhbmRs
ZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyLmgiCisjaW5j
bHVkZSAiSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5oIgorI2luY2x1ZGUgIklEQlN0b3Jh
Z2VNYW5hZ2VyLmgiCisjaW5jbHVkZSAiSURCU3RvcmFnZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAi
TG9jYWxTdG9yYWdlTWFuYWdlci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJO
ZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrU3RvcmFnZU1h
bmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk9yaWdpblN0b3JhZ2VNYW5hZ2VyLmgiCisjaW5j
bHVkZSAiUXVvdGFNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyLmgi
CiAjaW5jbHVkZSAiU3RvcmFnZUFyZWFCYXNlLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFyZWFNYXBN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhUmVnaXN0cnkuaCIKICNpbmNsdWRlICJX
ZWJzaXRlRGF0YVR5cGUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmg+CiAjaW5jbHVkZSA8
cGFsL2NyeXB0by9DcnlwdG9EaWdlc3QuaD4KICNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KICNpbmNs
dWRlIDx3dGYvU3VzcGVuZGFibGVXb3JrUXVldWUuaD4KQEAgLTEwMCwyMiArMTA4LDI4IEBAIHN0
YXRpYyB2b2lkIGRlbGV0ZU9yaWdpbkZpbGVJZk5lY2Vzc2FyeShjb25zdCBTdHJpbmcmIGZpbGVQ
YXRoKQogICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGZpbGVQYXRoKTsKIH0KIAotUmVm
PE5ldHdvcmtTdG9yYWdlTWFuYWdlcj4gTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjcmVhdGUoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYg
Y3VzdG9tTG9jYWxTdG9yYWdlUGF0aCkKK1JlZjxOZXR3b3JrU3RvcmFnZU1hbmFnZXI+IE5ldHdv
cmtTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgSVBDOjpD
b25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0
IFN0cmluZyYgY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21JREJT
dG9yYWdlUGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21DYWNoZVN0b3JhZ2VQYXRoLCB1aW50NjRf
dCBkZWZhdWx0T3JpZ2luUXVvdGEsIHVpbnQ2NF90IGRlZmF1bHRUaGlyZFBhcnR5T3JpZ2luUXVv
dGEpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyKHNl
c3Npb25JRCwgcGF0aCwgY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCkpOworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IE5ldHdvcmtTdG9yYWdlTWFuYWdlcihzZXNzaW9uSUQsIGNvbm5lY3Rpb24sIHBh
dGgsIGN1c3RvbUxvY2FsU3RvcmFnZVBhdGgsIGN1c3RvbUlEQlN0b3JhZ2VQYXRoLCBjdXN0b21D
YWNoZVN0b3JhZ2VQYXRoLCBkZWZhdWx0T3JpZ2luUXVvdGEsIGRlZmF1bHRUaGlyZFBhcnR5T3Jp
Z2luUXVvdGEpKTsKIH0KIAotTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpOZXR3b3JrU3RvcmFnZU1h
bmFnZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0
IFN0cmluZyYgY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCkKK05ldHdvcmtTdG9yYWdlTWFuYWdlcjo6
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgSVBDOjpDb25u
ZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0
cmluZyYgY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21JREJTdG9y
YWdlUGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21DYWNoZVN0b3JhZ2VQYXRoLCB1aW50NjRfdCBk
ZWZhdWx0T3JpZ2luUXVvdGEsIHVpbnQ2NF90IGRlZmF1bHRUaGlyZFBhcnR5T3JpZ2luUXVvdGEp
CiAgICAgOiBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCiAgICAgLCBtX3F1ZXVlKFN1c3BlbmRhYmxl
V29ya1F1ZXVlOjpjcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuU3RvcmFnZSIpKQorICAgICwgbV9k
ZWZhdWx0T3JpZ2luUXVvdGEoZGVmYXVsdE9yaWdpblF1b3RhKQorICAgICwgbV9kZWZhdWx0VGhp
cmRQYXJ0eU9yaWdpblF1b3RhKGRlZmF1bHRUaGlyZFBhcnR5T3JpZ2luUXVvdGEpCisgICAgLCBt
X3BhcmVudENvbm5lY3Rpb24oY29ubmVjdGlvbikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNN
YWluKCkpOwogCi0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBS
ZWYgeyAqdGhpcyB9LCBwYXRoID0gcGF0aC5pc29sYXRlZENvcHkoKSwgY3VzdG9tTG9jYWxTdG9y
YWdlUGF0aCA9IGNyb3NzVGhyZWFkQ29weShjdXN0b21Mb2NhbFN0b3JhZ2VQYXRoKV0oKSBtdXRh
YmxlIHsKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7
ICp0aGlzIH0sIHBhdGggPSBwYXRoLmlzb2xhdGVkQ29weSgpLCBjdXN0b21Mb2NhbFN0b3JhZ2VQ
YXRoID0gY3Jvc3NUaHJlYWRDb3B5KGN1c3RvbUxvY2FsU3RvcmFnZVBhdGgpLCBjdXN0b21JREJT
dG9yYWdlUGF0aCA9IGNyb3NzVGhyZWFkQ29weShjdXN0b21JREJTdG9yYWdlUGF0aCksIGN1c3Rv
bUNhY2hlU3RvcmFnZVBhdGggPSBjcm9zc1RocmVhZENvcHkoY3VzdG9tQ2FjaGVTdG9yYWdlUGF0
aCldKCkgbXV0YWJsZSB7CiAgICAgICAgIG1fZmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3Ry
eSA9IG1ha2VVbmlxdWU8RmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeT4oKTsKICAgICAg
ICAgbV9zdG9yYWdlQXJlYVJlZ2lzdHJ5ID0gbWFrZVVuaXF1ZTxTdG9yYWdlQXJlYVJlZ2lzdHJ5
PigpOworICAgICAgICBtX2lkYlN0b3JhZ2VSZWdpc3RyeSA9IG1ha2VVbmlxdWU8SURCU3RvcmFn
ZVJlZ2lzdHJ5PigpOwogICAgICAgICBtX3BhdGggPSBwYXRoOwogICAgICAgICBtX2N1c3RvbUxv
Y2FsU3RvcmFnZVBhdGggPSBjdXN0b21Mb2NhbFN0b3JhZ2VQYXRoOworICAgICAgICBtX2N1c3Rv
bUlEQlN0b3JhZ2VQYXRoID0gY3VzdG9tSURCU3RvcmFnZVBhdGg7CisgICAgICAgIG1fY3VzdG9t
Q2FjaGVTdG9yYWdlUGF0aCA9IGN1c3RvbUNhY2hlU3RvcmFnZVBhdGg7CiAgICAgICAgIGlmICgh
bV9wYXRoLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgYXV0byBzYWx0UGF0aCA9IEZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3BhdGgsICJzYWx0Iik7CiAgICAgICAgICAg
ICBtX3NhbHQgPSB2YWx1ZU9yRGVmYXVsdChGaWxlU3lzdGVtOjpyZWFkT3JNYWtlU2FsdChzYWx0
UGF0aCkpOwpAQCAtMTMxLDcgKzE0NSwxMCBAQCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6On5OZXR3
b3JrU3RvcmFnZU1hbmFnZXIoKQogCiBib29sIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y2FuSGFu
ZGxlVHlwZXMoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gdHlwZXMpCiB7Ci0gICAgcmV0dXJu
IHR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6TG9jYWxTdG9yYWdlKSB8fCB0eXBlcy5j
b250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlNlc3Npb25TdG9yYWdlKSB8fCB0eXBlcy5jb250YWlu
cyhXZWJzaXRlRGF0YVR5cGU6OkZpbGVTeXN0ZW0pOworICAgIHJldHVybiB0eXBlcy5jb250YWlu
cyhXZWJzaXRlRGF0YVR5cGU6OkxvY2FsU3RvcmFnZSkKKyAgICAgICAgfHwgdHlwZXMuY29udGFp
bnMoV2Vic2l0ZURhdGFUeXBlOjpTZXNzaW9uU3RvcmFnZSkKKyAgICAgICAgfHwgdHlwZXMuY29u
dGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpGaWxlU3lzdGVtKQorICAgICAgICB8fCB0eXBlcy5jb250
YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcyk7CiB9CiAKIHZvaWQgTmV0
d29ya1N0b3JhZ2VNYW5hZ2VyOjpjbG9zZSgpCkBAIC0xNzAsNiArMTg3LDcgQEAgdm9pZCBOZXR3
b3JrU3RvcmFnZU1hbmFnZXI6OnN0b3BSZWNlaXZpbmdNZXNzYWdlRnJvbUNvbm5lY3Rpb24oSVBD
OjpDb25uZWN0aW9uJgogCiAgICAgY29ubmVjdGlvbi5yZW1vdmVXb3JrUXVldWVNZXNzYWdlUmVj
ZWl2ZXIoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpKTsKICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7
ICp0aGlzIH0sIGNvbm5lY3Rpb24gPSBjb25uZWN0aW9uLnVuaXF1ZUlEKCldKCkgbXV0YWJsZSB7
CisgICAgICAgIG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT5yZW1vdmVDb25uZWN0aW9uVG9DbGllbnQo
Y29ubmVjdGlvbik7CiAgICAgICAgIG1fbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcnMucmVtb3Zl
SWYoWyZdKGF1dG8mIGVudHJ5KSB7CiAgICAgICAgICAgICBhdXRvJiBtYW5hZ2VyID0gZW50cnku
dmFsdWU7CiAgICAgICAgICAgICBtYW5hZ2VyLT5jb25uZWN0aW9uQ2xvc2VkKGNvbm5lY3Rpb24p
OwpAQCAtMjIyLDcgKzI0MCwxNCBAQCBPcmlnaW5TdG9yYWdlTWFuYWdlciYgTmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyOjpsb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2VyKGNvbnN0IFdlYgogICAgICAgICAg
ICAgICAgIHdyaXRlT3JpZ2luVG9GaWxlSWZOZWNlc3Nhcnkob3JpZ2luRmlsZVBhdGgob3JpZ2lu
RGlyZWN0b3J5KSwgb3JpZ2luKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9Ci0gICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPE9yaWdpblN0b3JhZ2VNYW5hZ2VyPihXVEZNb3ZlKG9yaWdpbkRp
cmVjdG9yeSksIExvY2FsU3RvcmFnZU1hbmFnZXI6OmxvY2FsU3RvcmFnZUZpbGVQYXRoKG1fY3Vz
dG9tTG9jYWxTdG9yYWdlUGF0aCwgb3JpZ2luKSk7CisgICAgICAgIGF1dG8gbG9jYWxTdG9yYWdl
UGF0aCA9IExvY2FsU3RvcmFnZU1hbmFnZXI6OmxvY2FsU3RvcmFnZUZpbGVQYXRoKG1fY3VzdG9t
TG9jYWxTdG9yYWdlUGF0aCwgb3JpZ2luKTsKKyAgICAgICAgYXV0byBpZGJTdG9yYWdlUGF0aCA9
IElEQlN0b3JhZ2VNYW5hZ2VyOjppZGJTdG9yYWdlT3JpZ2luRGlyZWN0b3J5KG1fY3VzdG9tSURC
U3RvcmFnZVBhdGgsIG9yaWdpbik7CisgICAgICAgIGF1dG8gY2FjaGVTdG9yYWdlUGF0aCA9IENh
Y2hlU3RvcmFnZTo6RW5naW5lOjpzdG9yYWdlUGF0aChtX2N1c3RvbUNhY2hlU3RvcmFnZVBhdGgs
IG9yaWdpbik7CisgICAgICAgIHVpbnQ2NF90IHF1b3RhID0gb3JpZ2luLnRvcE9yaWdpbiA9PSBv
cmlnaW4uY2xpZW50T3JpZ2luID8gbV9kZWZhdWx0T3JpZ2luUXVvdGEgOiBtX2RlZmF1bHRUaGly
ZFBhcnR5T3JpZ2luUXVvdGE7CisgICAgICAgIFF1b3RhTWFuYWdlcjo6SW5jcmVhc2VRdW90YUZ1
bmN0aW9uIGluY3JlYXNlUXVvdGFGdW5jdGlvbiA9IFtzZXNzaW9uSUQgPSBtX3Nlc3Npb25JRCwg
b3JpZ2luLCBjb25uZWN0aW9uID0gbV9wYXJlbnRDb25uZWN0aW9uXSAoYXV0byBpZGVudGlmaWVy
LCBhdXRvIGN1cnJlbnRRdW90YSwgYXV0byBjdXJyZW50VXNhZ2UsIGF1dG8gcmVxdWVzdGVkSW5j
cmVhc2UpIG11dGFibGUgeworICAgICAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKGNvbm5l
Y3Rpb24sIE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpJbmNyZWFzZVF1b3RhKHNlc3Np
b25JRCwgb3JpZ2luLCBpZGVudGlmaWVyLCBjdXJyZW50UXVvdGEsIGN1cnJlbnRVc2FnZSwgcmVx
dWVzdGVkSW5jcmVhc2UpLCAwKTsKKyAgICAgICAgfTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlx
dWU8T3JpZ2luU3RvcmFnZU1hbmFnZXI+KHF1b3RhLCBXVEZNb3ZlKGluY3JlYXNlUXVvdGFGdW5j
dGlvbiksIFdURk1vdmUob3JpZ2luRGlyZWN0b3J5KSwgV1RGTW92ZShsb2NhbFN0b3JhZ2VQYXRo
KSwgV1RGTW92ZShpZGJTdG9yYWdlUGF0aCksIFdURk1vdmUoY2FjaGVTdG9yYWdlUGF0aCkpOwog
ICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKIH0KIApAQCAtMjgyLDYgKzMwNywxNiBAQCB2b2lkIE5l
dHdvcmtTdG9yYWdlTWFuYWdlcjo6Y2xlYXJTdG9yYWdlRm9yVGVzdGluZyhDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgYwogICAgIH0pOwogfQogCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdl
cjo6ZGlkSW5jcmVhc2VRdW90YShjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwg
UXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8
dWludDY0X3Q+IG5ld1F1b3RhKQoreworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisK
KyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlz
IH0sIG9yaWdpbiA9IGNyb3NzVGhyZWFkQ29weShvcmlnaW4pLCBpZGVudGlmaWVyLCBuZXdRdW90
YV0oKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGF1dG8gbWFuYWdlciA9IG1fbG9jYWxPcmlnaW5T
dG9yYWdlTWFuYWdlcnMuZ2V0KG9yaWdpbikpCisgICAgICAgICAgICBtYW5hZ2VyLT5xdW90YU1h
bmFnZXIoKS5kaWRJbmNyZWFzZVF1b3RhKGlkZW50aWZpZXIsIG5ld1F1b3RhKTsKKyAgICB9KTsK
K30KKwogdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmZpbGVTeXN0ZW1HZXREaXJlY3Rvcnko
SVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4m
IG9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxXZWJDb3JlOjpGaWxlU3lz
dGVtSGFuZGxlSWRlbnRpZmllciwgRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4pPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAtNDUyLDYg
KzQ4Nyw5IEBAIEhhc2hTZXQ8V2ViQ29yZTo6Q2xpZW50T3JpZ2luPiBOZXR3b3JrU3RvcmFnZU1h
bmFnZXI6OmdldEFsbE9yaWdpbnMoKQogICAgIGZvciAoYXV0byYgb3JpZ2luIDogTG9jYWxTdG9y
YWdlTWFuYWdlcjo6b3JpZ2luc09mTG9jYWxTdG9yYWdlRGF0YShtX2N1c3RvbUxvY2FsU3RvcmFn
ZVBhdGgpKQogICAgICAgICBhbGxPcmlnaW5zLmFkZChXZWJDb3JlOjpDbGllbnRPcmlnaW4geyBv
cmlnaW4sIG9yaWdpbiB9KTsKIAorICAgIGZvciAoYXV0byYgb3JpZ2luIDogSURCU3RvcmFnZU1h
bmFnZXI6Om9yaWdpbnNPZklEQlN0b3JhZ2VEYXRhKG1fY3VzdG9tSURCU3RvcmFnZVBhdGgpKQor
ICAgICAgICBhbGxPcmlnaW5zLmFkZChvcmlnaW4pOworCiAgICAgcmV0dXJuIGFsbE9yaWdpbnM7
CiB9CiAKQEAgLTU3OSwxMiArNjE3LDE3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpt
b3ZlRGF0YShjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHNvdXJjZSwKICAgICAg
ICAgYXV0byB0YXJnZXRPcmlnaW4gPSBXZWJDb3JlOjpDbGllbnRPcmlnaW4geyB0YXJnZXQsIHRh
cmdldCB9OwogICAgICAgICAKICAgICAgICAgLy8gQ2xlYXIgZXhpc3RpbmcgZGF0YSBvZiB0YXJn
ZXQgb3JpZ2luLgotICAgICAgICBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB0eXBlcyA9IHsg
V2Vic2l0ZURhdGFUeXBlOjpGaWxlU3lzdGVtLCBXZWJzaXRlRGF0YVR5cGU6OkxvY2FsU3RvcmFn
ZSwgV2Vic2l0ZURhdGFUeXBlOjpTZXNzaW9uU3RvcmFnZSAgfTsKKyAgICAgICAgT3B0aW9uU2V0
PFdlYnNpdGVEYXRhVHlwZT4gdHlwZXMgPSB7CisgICAgICAgICAgICBXZWJzaXRlRGF0YVR5cGU6
OkZpbGVTeXN0ZW0sCisgICAgICAgICAgICBXZWJzaXRlRGF0YVR5cGU6OkxvY2FsU3RvcmFnZSwK
KyAgICAgICAgICAgIFdlYnNpdGVEYXRhVHlwZTo6U2Vzc2lvblN0b3JhZ2UsCisgICAgICAgICAg
ICBXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcworICAgICAgICB9OwogICAgICAg
ICBsb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2VyKHRhcmdldE9yaWdpbikuZGVsZXRlRGF0YSh0eXBl
cywgLVdhbGxUaW1lOjppbmZpbml0eSgpKTsKICAgICAgICAgcmVtb3ZlT3JpZ2luU3RvcmFnZU1h
bmFnZXJJZlBvc3NpYmxlKHRhcmdldE9yaWdpbik7CiAKICAgICAgICAgLy8gTW92ZSBkYXRhIGZy
b20gc291cmNlIG9yaWdpbiB0byB0YXJnZXQgb3JpZ2luLgotICAgICAgICBsb2NhbE9yaWdpblN0
b3JhZ2VNYW5hZ2VyKHNvdXJjZU9yaWdpbikubW92ZURhdGEob3JpZ2luRGlyZWN0b3J5UGF0aCht
X3BhdGgsIHRhcmdldE9yaWdpbiwgbV9zYWx0KSwgTG9jYWxTdG9yYWdlTWFuYWdlcjo6bG9jYWxT
dG9yYWdlRmlsZVBhdGgobV9jdXN0b21Mb2NhbFN0b3JhZ2VQYXRoLCB0YXJnZXRPcmlnaW4pKTsK
KyAgICAgICAgbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcihzb3VyY2VPcmlnaW4pLm1vdmVEYXRh
KG9yaWdpbkRpcmVjdG9yeVBhdGgobV9wYXRoLCB0YXJnZXRPcmlnaW4sIG1fc2FsdCksIExvY2Fs
U3RvcmFnZU1hbmFnZXI6OmxvY2FsU3RvcmFnZUZpbGVQYXRoKG1fY3VzdG9tTG9jYWxTdG9yYWdl
UGF0aCwgdGFyZ2V0T3JpZ2luKSwgSURCU3RvcmFnZU1hbmFnZXI6OmlkYlN0b3JhZ2VPcmlnaW5E
aXJlY3RvcnkobV9jdXN0b21JREJTdG9yYWdlUGF0aCwgdGFyZ2V0T3JpZ2luKSk7CiAgICAgICAg
IHJlbW92ZU9yaWdpblN0b3JhZ2VNYW5hZ2VySWZQb3NzaWJsZShzb3VyY2VPcmlnaW4pOwogCiAg
ICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CkBAIC01OTksNiArNjQyLDggQEAgdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnN1c3Bl
bmQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGUKICAgICAgICAg
Zm9yIChhdXRvJiBtYW5hZ2VyIDogbV9sb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2Vycy52YWx1ZXMo
KSkgewogICAgICAgICAgICAgaWYgKGF1dG8gbG9jYWxTdG9yYWdlTWFuYWdlciA9IG1hbmFnZXIt
PmV4aXN0aW5nTG9jYWxTdG9yYWdlTWFuYWdlcigpKQogICAgICAgICAgICAgICAgIGxvY2FsU3Rv
cmFnZU1hbmFnZXItPnN5bmNMb2NhbFN0b3JhZ2UoKTsKKyAgICAgICAgICAgIGlmIChhdXRvIGlk
YlN0b3JhZ2VNYW5hZ2VyID0gbWFuYWdlci0+ZXhpc3RpbmdJREJTdG9yYWdlTWFuYWdlcigpKQor
ICAgICAgICAgICAgICAgIGlkYlN0b3JhZ2VNYW5hZ2VyLT5zdG9wRGF0YWJhc2VBY3Rpdml0aWVz
Rm9yU3VzcGVuZCgpOwogICAgICAgICB9CiAgICAgfSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwogfQpAQCAtNjM2LDYgKzY4MSw1MiBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6
c3luY0xvY2FsU3RvcmFnZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldAogICAg
IH0pOwogfQogCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6cmVnaXN0ZXJUZW1wb3JhcnlC
bG9iRmlsZVBhdGhzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgVmVjdG9yPFN0
cmluZz4mIGZpbGVQYXRocykKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworCisg
ICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9
LCBjb25uZWN0aW9uSUQgPSBjb25uZWN0aW9uLnVuaXF1ZUlEKCksIGZpbGVQYXRocyA9IGNyb3Nz
VGhyZWFkQ29weShmaWxlUGF0aHMpXSB7CisgICAgICAgIGF1dG8mIHRlbXBvcmFyeUJsb2JQYXRo
cyA9IG1fdGVtcG9yYXJ5QmxvYlBhdGhzQnlDb25uZWN0aW9uLmVuc3VyZShjb25uZWN0aW9uSUQs
IFtdIHsKKyAgICAgICAgICAgIHJldHVybiBIYXNoU2V0PFN0cmluZz4geyB9OworICAgICAgICB9
KS5pdGVyYXRvci0+dmFsdWU7CisgICAgICAgIHRlbXBvcmFyeUJsb2JQYXRocy5hZGQoZmlsZVBh
dGhzLmJlZ2luKCksIGZpbGVQYXRocy5lbmQoKSk7CisgICAgfSk7Cit9CisKK3ZvaWQgTmV0d29y
a1N0b3JhZ2VNYW5hZ2VyOjpyZXF1ZXN0U3BhY2UoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2lu
JiBvcmlnaW4sIHVpbnQ2NF90IHNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKwor
ICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMg
fSwgb3JpZ2luID0gY3Jvc3NUaHJlYWRDb3B5KG9yaWdpbiksIHNpemUsIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIGxv
Y2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIob3JpZ2luKS5xdW90YU1hbmFnZXIoKS5yZXF1ZXN0U3Bh
Y2Uoc2l6ZSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
KGF1dG8gZGVjaXNpb24pIG11dGFibGUgeworICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRp
c3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBk
ZWNpc2lvbl0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihk
ZWNpc2lvbiA9PSBRdW90YU1hbmFnZXI6OkRlY2lzaW9uOjpHcmFudCk7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2Vy
OjpyZXNldFF1b3RhRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIG1f
cXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsK
KyAgICAgICAgZm9yIChhdXRvJiBtYW5hZ2VyIDogbV9sb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2Vy
cy52YWx1ZXMoKSkKKyAgICAgICAgICAgIG1hbmFnZXItPnF1b3RhTWFuYWdlcigpLnJlc2V0UXVv
dGFGb3JUZXN0aW5nKCk7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgfSk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VN
YW5hZ2VyOjpyZXNldFF1b3RhVXBkYXRlZEJhc2VkT25Vc2FnZUZvclRlc3RpbmcoY29uc3QgV2Vi
Q29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4pCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFp
bigpKTsKKworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVm
IHsgKnRoaXMgfSwgb3JpZ2luID0gY3Jvc3NUaHJlYWRDb3B5KG9yaWdpbildKCkgbXV0YWJsZSB7
CisgICAgICAgIGlmIChhdXRvIG1hbmFnZXIgPSBtX2xvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXJz
LmdldChvcmlnaW4pKQorICAgICAgICAgICAgbWFuYWdlci0+cXVvdGFNYW5hZ2VyKCkucmVzZXRR
dW90YVVwZGF0ZWRCYXNlZE9uVXNhZ2VGb3JUZXN0aW5nKCk7CisgICAgfSk7Cit9CisKIHZvaWQg
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjb25uZWN0VG9TdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIFdlYkNvcmU6OlN0b3JhZ2VUeXBlIHR5cGUsIFN0b3JhZ2VBcmVhTWFw
SWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllciBu
YW1lc3BhY2VJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQXJlYUlkZW50aWZpZXIsIEhhc2hNYXA8U3Ry
aW5nLCBTdHJpbmc+LCB1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNT
RVJUKCFSdW5Mb29wOjppc01haW4oKSk7CkBAIC03MjMsNSArODE0LDE5NSBAQCB2b2lkIE5ldHdv
cmtTdG9yYWdlTWFuYWdlcjo6Y2xlYXIoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBTdG9y
YWdlQXJlYUlkZW50aQogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKK3ZvaWQgTmV0d29y
a1N0b3JhZ2VNYW5hZ2VyOjpvcGVuRGF0YWJhc2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
LCBjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEpCit7CisgICAgYXV0
byYgY29ubmVjdGlvblRvQ2xpZW50ID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPmdldE9yQ3JlYXRl
Q29ubmVjdGlvblRvQ2xpZW50KGNvbm5lY3Rpb24udW5pcXVlSUQoKSwgcmVxdWVzdERhdGEucmVx
dWVzdElkZW50aWZpZXIoKS5jb25uZWN0aW9uSWRlbnRpZmllcigpKTsKKyAgICBsb2NhbE9yaWdp
blN0b3JhZ2VNYW5hZ2VyKHJlcXVlc3REYXRhLmRhdGFiYXNlSWRlbnRpZmllcigpLm9yaWdpbigp
KS5pZGJTdG9yYWdlTWFuYWdlcigqbV9pZGJTdG9yYWdlUmVnaXN0cnkpLm9wZW5EYXRhYmFzZShj
b25uZWN0aW9uVG9DbGllbnQsIHJlcXVlc3REYXRhKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFn
ZU1hbmFnZXI6Om9wZW5EQlJlcXVlc3RDYW5jZWxsZWQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVz
dERhdGEmIHJlcXVlc3REYXRhKQoreworICAgIGxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIocmVx
dWVzdERhdGEuZGF0YWJhc2VJZGVudGlmaWVyKCkub3JpZ2luKCkpLmlkYlN0b3JhZ2VNYW5hZ2Vy
KCptX2lkYlN0b3JhZ2VSZWdpc3RyeSkub3BlbkRCUmVxdWVzdENhbmNlbGxlZChyZXF1ZXN0RGF0
YSk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVEYXRhYmFzZShJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiBy
ZXF1ZXN0RGF0YSkKK3sKKyAgICBhdXRvJiBjb25uZWN0aW9uVG9DbGllbnQgPSBtX2lkYlN0b3Jh
Z2VSZWdpc3RyeS0+Z2V0T3JDcmVhdGVDb25uZWN0aW9uVG9DbGllbnQoY29ubmVjdGlvbi51bmlx
dWVJRCgpLCByZXF1ZXN0RGF0YS5yZXF1ZXN0SWRlbnRpZmllcigpLmNvbm5lY3Rpb25JZGVudGlm
aWVyKCkpOworICAgIGxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIocmVxdWVzdERhdGEuZGF0YWJh
c2VJZGVudGlmaWVyKCkub3JpZ2luKCkpLmlkYlN0b3JhZ2VNYW5hZ2VyKCptX2lkYlN0b3JhZ2VS
ZWdpc3RyeSkuZGVsZXRlRGF0YWJhc2UoY29ubmVjdGlvblRvQ2xpZW50LCByZXF1ZXN0RGF0YSk7
Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjplc3RhYmxpc2hUcmFuc2FjdGlvbih1
aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJREJU
cmFuc2FjdGlvbkluZm8mIHRyYW5zYWN0aW9uSW5mbykKK3sKKyAgICBpZiAoYXV0byBjb25uZWN0
aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPmdldENvbm5lY3Rpb24oZGF0YWJhc2VDb25uZWN0
aW9uSWRlbnRpZmllcikpCisgICAgICAgIGNvbm5lY3Rpb24tPmVzdGFibGlzaFRyYW5zYWN0aW9u
KHRyYW5zYWN0aW9uSW5mbyk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkYXRh
YmFzZUNvbm5lY3Rpb25QZW5kaW5nQ2xvc2UodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRl
bnRpZmllcikKK3sKKyAgICBpZiAoYXV0byBjb25uZWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0
cnktPmdldENvbm5lY3Rpb24oZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcikpCisgICAgICAg
IGNvbm5lY3Rpb24tPmNvbm5lY3Rpb25QZW5kaW5nQ2xvc2VGcm9tQ2xpZW50KCk7Cit9CisKK3Zv
aWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkYXRhYmFzZUNvbm5lY3Rpb25DbG9zZWQodWludDY0
X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcikKK3sKKyAgICBpZiAoYXV0byBjb25uZWN0
aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPmdldENvbm5lY3Rpb24oZGF0YWJhc2VDb25uZWN0
aW9uSWRlbnRpZmllcikpCisgICAgICAgIGNvbm5lY3Rpb24tPmNvbm5lY3Rpb25DbG9zZWRGcm9t
Q2xpZW50KCk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjphYm9ydE9wZW5BbmRV
cGdyYWRlTmVlZGVkKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0
IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKQor
eworICAgIGlmIChhdXRvIHRyYW5zYWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPmdldFRy
YW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllcikpCisgICAgICAgIHRyYW5zYWN0aW9uLT5h
Ym9ydFdpdGhvdXRDYWxsYmFjaygpOworCisgICAgaWYgKGF1dG8gY29ubmVjdGlvbiA9IG1faWRi
U3RvcmFnZVJlZ2lzdHJ5LT5nZXRDb25uZWN0aW9uKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZp
ZXIpKQorICAgICAgICBjb25uZWN0aW9uLT5jb25uZWN0aW9uQ2xvc2VkRnJvbUNsaWVudCgpOwor
fQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVu
dCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJ
REJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJ
bmRleGVkREI6OkNvbm5lY3Rpb25DbG9zZWRPbkJlaGFsZk9mU2VydmVyIGNvbm5lY3Rpb25DbG9z
ZWQpCit7CisgICAgaWYgKGF1dG8gY29ubmVjdGlvbiA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT5n
ZXRDb25uZWN0aW9uKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpKQorICAgICAgICBjb25u
ZWN0aW9uLT5kaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KHJlcXVlc3RJZGVudGlmaWVyLCBjb25u
ZWN0aW9uQ2xvc2VkKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmFib3J0VHJh
bnNhY3Rpb24oY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlv
bklkZW50aWZpZXIpCit7CisgICAgaWYgKGF1dG8gdHJhbnNhY3Rpb24gPSBtX2lkYlN0b3JhZ2VS
ZWdpc3RyeS0+Z2V0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZGVudGlmaWVyKSkKKyAgICAgICAg
dHJhbnNhY3Rpb24tPmFib3J0KCk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpj
b21taXRUcmFuc2FjdGlvbihjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHRy
YW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgcGVuZGluZ1JlcXVlc3RDb3VudCkKK3sKKyAg
ICBpZiAoYXV0byB0cmFuc2FjdGlvbiA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT5nZXRUcmFuc2Fj
dGlvbih0cmFuc2FjdGlvbklkZW50aWZpZXIpKQorICAgICAgICB0cmFuc2FjdGlvbi0+Y29tbWl0
KHBlbmRpbmdSZXF1ZXN0Q291bnQpOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6
ZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24odWludDY0X3QgZGF0YWJh
c2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlm
aWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpCit7CisgICAgaWYgKGF1dG8gY29ubmVjdGlvbiA9
IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT5nZXRDb25uZWN0aW9uKGRhdGFiYXNlQ29ubmVjdGlvbklk
ZW50aWZpZXIpKQorICAgICAgICBjb25uZWN0aW9uLT5kaWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25D
aGFuZ2UodHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1h
bmFnZXI6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiBy
ZXF1ZXN0RGF0YSwgY29uc3QgV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVJbmZvJiBvYmplY3RTdG9y
ZUluZm8pCit7CisgICAgaWYgKGF1dG8gdHJhbnNhY3Rpb24gPSBtX2lkYlN0b3JhZ2VSZWdpc3Ry
eS0+Z2V0VHJhbnNhY3Rpb24ocmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCkpKSB7
CisgICAgICAgIEFTU0VSVCh0cmFuc2FjdGlvbi0+aXNWZXJzaW9uQ2hhbmdlKCkpOworICAgICAg
ICB0cmFuc2FjdGlvbi0+Y3JlYXRlT2JqZWN0U3RvcmUocmVxdWVzdERhdGEsIG9iamVjdFN0b3Jl
SW5mbyk7CisgICAgfQorfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlT2Jq
ZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25z
dCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSkKK3sKKyAgICBpZiAoYXV0byB0cmFuc2FjdGlvbiA9
IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT5nZXRUcmFuc2FjdGlvbihyZXF1ZXN0RGF0YS50cmFuc2Fj
dGlvbklkZW50aWZpZXIoKSkpIHsKKyAgICAgICAgQVNTRVJUKHRyYW5zYWN0aW9uLT5pc1ZlcnNp
b25DaGFuZ2UoKSk7CisgICAgICAgIHRyYW5zYWN0aW9uLT5kZWxldGVPYmplY3RTdG9yZShyZXF1
ZXN0RGF0YSwgb2JqZWN0U3RvcmVOYW1lKTsKKyAgICB9Cit9CisKK3ZvaWQgTmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyOjpyZW5hbWVPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0
YSYgcmVxdWVzdERhdGEsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBuZXdOYW1lKQoreworICAgIGlmIChhdXRvIHRyYW5zYWN0aW9uID0gbV9pZGJTdG9yYWdl
UmVnaXN0cnktPmdldFRyYW5zYWN0aW9uKHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmll
cigpKSkgeworICAgICAgICBBU1NFUlQodHJhbnNhY3Rpb24tPmlzVmVyc2lvbkNoYW5nZSgpKTsK
KyAgICAgICAgdHJhbnNhY3Rpb24tPnJlbmFtZU9iamVjdFN0b3JlKHJlcXVlc3REYXRhLCBvYmpl
Y3RTdG9yZUlkZW50aWZpZXIsIG5ld05hbWUpOworICAgIH0KK30KKwordm9pZCBOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6OmNsZWFyT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERh
dGEmIHJlcXVlc3REYXRhLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIpCit7CisgICAg
aWYgKGF1dG8gdHJhbnNhY3Rpb24gPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+Z2V0VHJhbnNhY3Rp
b24ocmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCkpKQorICAgICAgICB0cmFuc2Fj
dGlvbi0+Y2xlYXJPYmplY3RTdG9yZShyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVy
KTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZUluZGV4KGNvbnN0IFdl
YkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgV2ViQ29yZTo6SURCSW5k
ZXhJbmZvJiBpbmRleEluZm8pCit7CisgICAgaWYgKGF1dG8gdHJhbnNhY3Rpb24gPSBtX2lkYlN0
b3JhZ2VSZWdpc3RyeS0+Z2V0VHJhbnNhY3Rpb24ocmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVu
dGlmaWVyKCkpKQorICAgICAgICB0cmFuc2FjdGlvbi0+Y3JlYXRlSW5kZXgocmVxdWVzdERhdGEs
IGluZGV4SW5mbyk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVJbmRl
eChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIHVpbnQ2NF90IG9i
amVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpbmRleE5hbWUpCit7CisgICAgaWYg
KGF1dG8gdHJhbnNhY3Rpb24gPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+Z2V0VHJhbnNhY3Rpb24o
cmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCkpKQorICAgICAgICB0cmFuc2FjdGlv
bi0+ZGVsZXRlSW5kZXgocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhO
YW1lKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnJlbmFtZUluZGV4KGNvbnN0
IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgdWludDY0X3Qgb2JqZWN0U3Rv
cmVJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRleElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3
TmFtZSkKK3sKKyAgICBpZiAoYXV0byB0cmFuc2FjdGlvbiA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5
LT5nZXRUcmFuc2FjdGlvbihyZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSkpCisg
ICAgICAgIHRyYW5zYWN0aW9uLT5yZW5hbWVJbmRleChyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJ
ZGVudGlmaWVyLCBpbmRleElkZW50aWZpZXIsIG5ld05hbWUpOworfQorCit2b2lkIE5ldHdvcmtT
dG9yYWdlTWFuYWdlcjo6cHV0T3JBZGQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25z
dCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IFdlYkNvcmU6OklE
QktleURhdGEmIGtleURhdGEsIGNvbnN0IFdlYkNvcmU6OklEQlZhbHVlJiB2YWx1ZSwgV2ViQ29y
ZTo6SW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUgb3ZlcndyaXRlTW9kZSkKK3sK
KyAgICBpZiAodmFsdWUuYmxvYlVSTHMoKS5zaXplKCkgIT0gdmFsdWUuYmxvYkZpbGVQYXRocygp
LnNpemUoKSkgeworICAgICAgICBSRUxFQVNFX0xPR19GQVVMVChJbmRleGVkREIsICJOZXR3b3Jr
U3RvcmFnZU1hbmFnZXI6OnB1dE9yQWRkOiBOdW1iZXIgb2YgYmxvYiBVUkxzIGRvZXNuJ3QgbWF0
Y2ggdGhlIG51bWJlciBvZiBibG9iIGZpbGUgcGF0aHMuIik7CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gVmFsaWRhdGUgdGVt
cG9yYXJ5IGJsb2IgcGF0aHMgaW4gfHZhbHVlfCB0byBtYWtlIHN1cmUgdGhleSBiZWxvbmcgdG8g
dGhlIHNvdXJjZSBwcm9jZXNzLgorICAgIGlmICghdmFsdWUuYmxvYkZpbGVQYXRocygpLmlzRW1w
dHkoKSkgeworICAgICAgICBhdXRvIGl0ID0gbV90ZW1wb3JhcnlCbG9iUGF0aHNCeUNvbm5lY3Rp
b24uZmluZChjb25uZWN0aW9uLnVuaXF1ZUlEKCkpOworICAgICAgICBpZiAoaXQgPT0gbV90ZW1w
b3JhcnlCbG9iUGF0aHNCeUNvbm5lY3Rpb24uZW5kKCkpIHsKKyAgICAgICAgICAgIFJFTEVBU0Vf
TE9HX0ZBVUxUKEluZGV4ZWREQiwgIk5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6cHV0T3JBZGQ6IElE
QlZhbHVlIGNvbnRhaW5zIGJsb2IgcGF0aHMgYnV0IG5vbmUgYXJlIGFsbG93ZWQgZm9yIHRoaXMg
cHJvY2VzcyIpOworICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBhdXRvJiB0ZW1wb3JhcnlCbG9iUGF0aHNG
b3JDb25uZWN0aW9uID0gaXQtPnZhbHVlOworICAgICAgICBmb3IgKGF1dG8mIGJsb2JGaWxlUGF0
aCA6IHZhbHVlLmJsb2JGaWxlUGF0aHMoKSkgeworICAgICAgICAgICAgaWYgKCF0ZW1wb3JhcnlC
bG9iUGF0aHNGb3JDb25uZWN0aW9uLnJlbW92ZShibG9iRmlsZVBhdGgpKSB7CisgICAgICAgICAg
ICAgICAgUkVMRUFTRV9MT0dfRkFVTFQoSW5kZXhlZERCLCAiTmV0d29ya1N0b3JhZ2VNYW5hZ2Vy
OjpwdXRPckFkZDogQmxvYiBwYXRoIHdhcyBub3QgY3JlYXRlZCBmb3IgdGhpcyBXZWJQcm9jZXNz
Iik7CisgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGF1
dG8gdHJhbnNhY3Rpb24gPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+Z2V0VHJhbnNhY3Rpb24ocmVx
dWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCkpKQorICAgICAgICB0cmFuc2FjdGlvbi0+
cHV0T3JBZGQocmVxdWVzdERhdGEsIGtleURhdGEsIHZhbHVlLCBvdmVyd3JpdGVNb2RlKTsKK30K
Kwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmdldFJlY29yZChjb25zdCBXZWJDb3JlOjpJ
REJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IFdlYkNvcmU6OklEQkdldFJlY29yZERh
dGEmIGdldFJlY29yZERhdGEpCit7CisgICAgaWYgKGF1dG8gdHJhbnNhY3Rpb24gPSBtX2lkYlN0
b3JhZ2VSZWdpc3RyeS0+Z2V0VHJhbnNhY3Rpb24ocmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVu
dGlmaWVyKCkpKQorICAgICAgICB0cmFuc2FjdGlvbi0+Z2V0UmVjb3JkKHJlcXVlc3REYXRhLCBn
ZXRSZWNvcmREYXRhKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmdldEFsbFJl
Y29yZHMoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBX
ZWJDb3JlOjpJREJHZXRBbGxSZWNvcmRzRGF0YSYgZ2V0QWxsUmVjb3Jkc0RhdGEpCit7CisgICAg
aWYgKGF1dG8gdHJhbnNhY3Rpb24gPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+Z2V0VHJhbnNhY3Rp
b24ocmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCkpKQorICAgICAgICB0cmFuc2Fj
dGlvbi0+Z2V0QWxsUmVjb3JkcyhyZXF1ZXN0RGF0YSwgZ2V0QWxsUmVjb3Jkc0RhdGEpOworfQor
Cit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Z2V0Q291bnQoY29uc3QgV2ViQ29yZTo6SURC
UmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBXZWJDb3JlOjpJREJLZXlSYW5nZURhdGEm
IGtleVJhbmdlRGF0YSkKK3sKKyAgICBpZiAoYXV0byB0cmFuc2FjdGlvbiA9IG1faWRiU3RvcmFn
ZVJlZ2lzdHJ5LT5nZXRUcmFuc2FjdGlvbihyZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZp
ZXIoKSkpCisgICAgICAgIHRyYW5zYWN0aW9uLT5nZXRDb3VudChyZXF1ZXN0RGF0YSwga2V5UmFu
Z2VEYXRhKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmRlbGV0ZVJlY29yZChj
b25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IFdlYkNvcmU6
OklEQktleVJhbmdlRGF0YSYga2V5UmFuZ2VEYXRhKQoreworICAgIGlmIChhdXRvIHRyYW5zYWN0
aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPmdldFRyYW5zYWN0aW9uKHJlcXVlc3REYXRhLnRy
YW5zYWN0aW9uSWRlbnRpZmllcigpKSkKKyAgICAgICAgdHJhbnNhY3Rpb24tPmRlbGV0ZVJlY29y
ZChyZXF1ZXN0RGF0YSwga2V5UmFuZ2VEYXRhKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1h
bmFnZXI6Om9wZW5DdXJzb3IoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3RE
YXRhLCBjb25zdCBXZWJDb3JlOjpJREJDdXJzb3JJbmZvJiBjdXJzb3JJbmZvKQoreworICAgIGlm
IChhdXRvIHRyYW5zYWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPmdldFRyYW5zYWN0aW9u
KHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpKSkKKyAgICAgICAgdHJhbnNhY3Rp
b24tPm9wZW5DdXJzb3IocmVxdWVzdERhdGEsIGN1cnNvckluZm8pOworfQorCit2b2lkIE5ldHdv
cmtTdG9yYWdlTWFuYWdlcjo6aXRlcmF0ZUN1cnNvcihjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0
RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IFdlYkNvcmU6OklEQkl0ZXJhdGVDdXJzb3JEYXRhJiBj
dXJzb3JEYXRhKQoreworICAgIGlmIChhdXRvIHRyYW5zYWN0aW9uID0gbV9pZGJTdG9yYWdlUmVn
aXN0cnktPmdldFRyYW5zYWN0aW9uKHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigp
KSkKKyAgICAgICAgdHJhbnNhY3Rpb24tPml0ZXJhdGVDdXJzb3IocmVxdWVzdERhdGEsIGN1cnNv
ckRhdGEpOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Z2V0QWxsRGF0YWJhc2VO
YW1lc0FuZFZlcnNpb25zKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgV2ViQ29y
ZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgV2ViQ29y
ZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4pCit7CisgICAgYXV0byYgY29ubmVjdGlvblRvQ2xpZW50
ID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPmdldE9yQ3JlYXRlQ29ubmVjdGlvblRvQ2xpZW50KGNv
bm5lY3Rpb24udW5pcXVlSUQoKSwgcmVxdWVzdElkZW50aWZpZXIuY29ubmVjdGlvbklkZW50aWZp
ZXIoKSk7CisgICAgYXV0byByZXN1bHQgPSBsb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2VyKG9yaWdp
bikuaWRiU3RvcmFnZU1hbmFnZXIoKm1faWRiU3RvcmFnZVJlZ2lzdHJ5KS5nZXRBbGxEYXRhYmFz
ZU5hbWVzQW5kVmVyc2lvbnMoKTsKKyAgICBjb25uZWN0aW9uVG9DbGllbnQuZGlkR2V0QWxsRGF0
YWJhc2VOYW1lc0FuZFZlcnNpb25zKHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKHJlc3VsdCkp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5oCmlu
ZGV4IDE1YzAzNzJlNjZhN2Y2Mjg0OTkyN2YxYzM3ZjE2YTY5NTg3ZjQ1MDEuLjljM2QyZDY0MDZm
ZWU5YjJiNGU2Y2EyNmY3YjY1ZmUwYzc4YjgzYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmgK
QEAgLTM2LDYgKzM2LDggQEAKICNpbmNsdWRlIDxXZWJDb3JlL0NsaWVudE9yaWdpbi5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0ZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllci5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvSURCUmVzb3VyY2VJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JbmRl
eGVkREIuaD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KIApAQCAtNDQsMTggKzQ2LDMxIEBAIGNsYXNzIFNoYXJlZEZpbGVIYW5kbGU7CiB9CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIElEQkN1cnNvckluZm87CitjbGFzcyBJREJLZXlE
YXRhOworY2xhc3MgSURCSW5kZXhJbmZvOworY2xhc3MgSURCT2JqZWN0U3RvcmVJbmZvOworY2xh
c3MgSURCUmVxdWVzdERhdGE7CitjbGFzcyBJREJUcmFuc2FjdGlvbkluZm87CitjbGFzcyBJREJW
YWx1ZTsKIHN0cnVjdCBDbGllbnRPcmlnaW47CitzdHJ1Y3QgSURCR2V0QWxsUmVjb3Jkc0RhdGE7
CitzdHJ1Y3QgSURCR2V0UmVjb3JkRGF0YTsKK3N0cnVjdCBJREJHZXRBbGxSZWNvcmRzRGF0YTsK
K3N0cnVjdCBJREJJdGVyYXRlQ3Vyc29yRGF0YTsKK3N0cnVjdCBJREJLZXlSYW5nZURhdGE7CiBl
bnVtIGNsYXNzIFN0b3JhZ2VUeXBlIDogdWludDhfdDsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKIGNsYXNzIEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnk7CitjbGFzcyBJREJTdG9y
YWdlUmVnaXN0cnk7CiBjbGFzcyBTdG9yYWdlQXJlYVJlZ2lzdHJ5OwogCiBjbGFzcyBOZXR3b3Jr
U3RvcmFnZU1hbmFnZXIgZmluYWwgOiBwdWJsaWMgSVBDOjpDb25uZWN0aW9uOjpXb3JrUXVldWVN
ZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8TmV0d29ya1N0b3JhZ2VN
YW5hZ2VyPiBjcmVhdGUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3Qg
U3RyaW5nJiBjdXN0b21Mb2NhbFN0b3JhZ2VQYXRoKTsKKyAgICBzdGF0aWMgUmVmPE5ldHdvcmtT
dG9yYWdlTWFuYWdlcj4gY3JlYXRlKFBBTDo6U2Vzc2lvbklELCBJUEM6OkNvbm5lY3Rpb246OlVu
aXF1ZUlELCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY3VzdG9tTG9jYWxTdG9y
YWdlUGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21JREJTdG9yYWdlUGF0aCwgY29uc3QgU3RyaW5n
JiBjdXN0b21DYWNoZVN0b3JhZ2VQYXRoLCB1aW50NjRfdCBkZWZhdWx0T3JpZ2luUXVvdGEsIHVp
bnQ2NF90IGRlZmF1bHRUaGlyZFBhcnR5T3JpZ2luUXVvdGEpOwogICAgIHN0YXRpYyBib29sIGNh
bkhhbmRsZVR5cGVzKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+KTsKIAogICAgIHZvaWQgc3Rh
cnRSZWNlaXZpbmdNZXNzYWdlRnJvbUNvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uJik7CkBAIC02
NCw2ICs3OSw3IEBAIHB1YmxpYzoKICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25z
dCB7IHJldHVybiBtX3Nlc3Npb25JRDsgfQogICAgIHZvaWQgY2xvc2UoKTsKICAgICB2b2lkIGNs
ZWFyU3RvcmFnZUZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2
b2lkIGRpZEluY3JlYXNlUXVvdGEoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgUXVvdGFJ
bmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBuZXdRdW90
YSk7CiAgICAgdm9pZCBmZXRjaERhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYnNpdGVEYXRhOjpFbnRyeT4mJik+JiYpOwogICAg
IHZvaWQgZGVsZXRlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgY29uc3QgVmVjdG9y
PFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwogICAgIHZvaWQgZGVsZXRlRGF0YU1vZGlmaWVkU2luY2UoT3B0aW9uU2V0PFdlYnNpdGVE
YXRhVHlwZT4sIFdhbGxUaW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAtNzMs
MTQgKzg5LDE4IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3VtZSgpOwogICAgIHZvaWQgaGFuZGxl
TG93TWVtb3J5V2FybmluZygpOwogICAgIHZvaWQgc3luY0xvY2FsU3RvcmFnZShDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgcmVnaXN0ZXJUZW1wb3JhcnlCbG9iRmlsZVBh
dGhzKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7CisgICAgdm9pZCBy
ZXF1ZXN0U3BhY2UoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgdWludDY0X3Qgc2l6ZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCByZXNldFF1b3RhRm9y
VGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgcmVzZXRRdW90
YVVwZGF0ZWRCYXNlZE9uVXNhZ2VGb3JUZXN0aW5nKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdp
biYpOwogCiBwcml2YXRlOgogICAgIE5ldHdvcmtTdG9yYWdlTWFuYWdlcihQQUw6OlNlc3Npb25J
RCwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGN1c3RvbUxvY2FsU3RvcmFnZVBh
dGgpOworICAgIE5ldHdvcmtTdG9yYWdlTWFuYWdlcihQQUw6OlNlc3Npb25JRCwgSVBDOjpDb25u
ZWN0aW9uOjpVbmlxdWVJRCwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGN1c3Rv
bUxvY2FsU3RvcmFnZVBhdGgsIGNvbnN0IFN0cmluZyYgY3VzdG9tSURCU3RvcmFnZVBhdGgsIGNv
bnN0IFN0cmluZyYgY3VzdG9tQ2FjaGVTdG9yYWdlUGF0aCwgdWludDY0X3QgZGVmYXVsdE9yaWdp
blF1b3RhLCB1aW50NjRfdCBkZWZhdWx0VGhpcmRQYXJ0eU9yaWdpblF1b3RhKTsKICAgICB+TmV0
d29ya1N0b3JhZ2VNYW5hZ2VyKCk7CiAgICAgT3JpZ2luU3RvcmFnZU1hbmFnZXImIGxvY2FsT3Jp
Z2luU3RvcmFnZU1hbmFnZXIoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJik7CiAgICAgYm9v
bCByZW1vdmVPcmlnaW5TdG9yYWdlTWFuYWdlcklmUG9zc2libGUoY29uc3QgV2ViQ29yZTo6Q2xp
ZW50T3JpZ2luJik7CiAgICAgdm9pZCBkZWxldGVPcmlnaW5EaXJlY3RvcnlJZlBvc3NpYmxlKGNv
bnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYpOwotICAgIEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxl
UmVnaXN0cnkmIGZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnkoKTsKIAogICAgIHZvaWQg
Zm9yRWFjaE9yaWdpbkRpcmVjdG9yeShjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYp
PiYpOwogICAgIEhhc2hTZXQ8V2ViQ29yZTo6Q2xpZW50T3JpZ2luPiBnZXRBbGxPcmlnaW5zKCk7
CkBAIC0xMTgsNiArMTM4LDM0IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZW1vdmVJdGVtKElQQzo6
Q29ubmVjdGlvbiYsIFN0b3JhZ2VBcmVhSWRlbnRpZmllciwgU3RvcmFnZUFyZWFJbXBsSWRlbnRp
ZmllciwgU3RyaW5nJiYga2V5LCBTdHJpbmcmJiB1cmxTdHJpbmcsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CiAgICAgdm9pZCBjbGVhcihJUEM6OkNvbm5lY3Rpb24mLCBTdG9yYWdlQXJl
YUlkZW50aWZpZXIsIFN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXIsIFN0cmluZyYmIHVybFN0cmlu
ZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAorICAgIC8vIE1lc3NhZ2UgaGFuZGxl
cnMgZm9yIEluZGV4ZWREQi4KKyAgICB2b2lkIG9wZW5EYXRhYmFzZShJUEM6OkNvbm5lY3Rpb24m
LCBjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYpOworICAgIHZvaWQgb3BlbkRCUmVxdWVz
dENhbmNlbGxlZChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYpOworICAgIHZvaWQgZGVs
ZXRlRGF0YWJhc2UoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERh
dGEmKTsKKyAgICB2b2lkIGVzdGFibGlzaFRyYW5zYWN0aW9uKHVpbnQ2NF90IGRhdGFiYXNlQ29u
bmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uSW5mbyYpOwor
ICAgIHZvaWQgZGF0YWJhc2VDb25uZWN0aW9uUGVuZGluZ0Nsb3NlKHVpbnQ2NF90IGRhdGFiYXNl
Q29ubmVjdGlvbklkZW50aWZpZXIpOworICAgIHZvaWQgZGF0YWJhc2VDb25uZWN0aW9uQ2xvc2Vk
KHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpOworICAgIHZvaWQgYWJvcnRP
cGVuQW5kVXBncmFkZU5lZWRlZCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVy
LCBjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRp
Zmllcik7CisgICAgdm9pZCBkaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KHVpbnQ2NF90IGRhdGFi
YXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRp
ZmllciYgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkluZGV4ZWREQjo6Q29ubmVj
dGlvbkNsb3NlZE9uQmVoYWxmT2ZTZXJ2ZXIpOworICAgIHZvaWQgYWJvcnRUcmFuc2FjdGlvbihj
b25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImKTsKKyAgICB2b2lkIGNvbW1pdFRy
YW5zYWN0aW9uKGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYsIHVpbnQ2NF90
IHBlbmRpbmdSZXF1ZXN0Q291bnQpOworICAgIHZvaWQgZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9u
Q2hhbmdlVHJhbnNhY3Rpb24odWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwg
Y29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJik7CisgICAgdm9pZCBjcmVhdGVP
YmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IFdlYkNvcmU6
OklEQk9iamVjdFN0b3JlSW5mbyYpOworICAgIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoY29uc3Qg
V2ViQ29yZTo6SURCUmVxdWVzdERhdGEmLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSk7
CisgICAgdm9pZCByZW5hbWVPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0
YSYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1l
KTsKKyAgICB2b2lkIGNsZWFyT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERh
dGEmLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIpOworICAgIHZvaWQgY3JlYXRlSW5k
ZXgoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmLCBjb25zdCBXZWJDb3JlOjpJREJJbmRl
eEluZm8mKTsKKyAgICB2b2lkIGRlbGV0ZUluZGV4KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3RE
YXRhJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGluZGV4
TmFtZSk7CisgICAgdm9pZCByZW5hbWVJbmRleChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0
YSYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgdWludDY0X3QgaW5kZXhJZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUpOworICAgIHZvaWQgcHV0T3JBZGQoSVBDOjpDb25u
ZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmLCBjb25zdCBXZWJDb3JlOjpJ
REJLZXlEYXRhJiwgY29uc3QgV2ViQ29yZTo6SURCVmFsdWUmLCBXZWJDb3JlOjpJbmRleGVkREI6
Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSk7CisgICAgdm9pZCBnZXRSZWNvcmQoY29uc3QgV2Vi
Q29yZTo6SURCUmVxdWVzdERhdGEmLCBjb25zdCBXZWJDb3JlOjpJREJHZXRSZWNvcmREYXRhJik7
CisgICAgdm9pZCBnZXRBbGxSZWNvcmRzKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiwg
Y29uc3QgV2ViQ29yZTo6SURCR2V0QWxsUmVjb3Jkc0RhdGEmKTsKKyAgICB2b2lkIGdldENvdW50
KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiwgY29uc3QgV2ViQ29yZTo6SURCS2V5UmFu
Z2VEYXRhJik7CisgICAgdm9pZCBkZWxldGVSZWNvcmQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVz
dERhdGEmLCBjb25zdCBXZWJDb3JlOjpJREJLZXlSYW5nZURhdGEmKTsKKyAgICB2b2lkIG9wZW5D
dXJzb3IoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmLCBjb25zdCBXZWJDb3JlOjpJREJD
dXJzb3JJbmZvJik7CisgICAgdm9pZCBpdGVyYXRlQ3Vyc29yKGNvbnN0IFdlYkNvcmU6OklEQlJl
cXVlc3REYXRhJiwgY29uc3QgV2ViQ29yZTo6SURCSXRlcmF0ZUN1cnNvckRhdGEmKTsKKyAgICB2
b2lkIGdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhJUEM6OkNvbm5lY3Rpb24mLCBjb25z
dCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImLCBjb25zdCBXZWJDb3JlOjpDbGllbnRP
cmlnaW4mKTsKKwogICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOwogICAgIFJlZjxTdXNw
ZW5kYWJsZVdvcmtRdWV1ZT4gbV9xdWV1ZTsKICAgICBTdHJpbmcgbV9wYXRoOwpAQCAtMTI3LDcg
KzE3NSwxNCBAQCBwcml2YXRlOgogICAgIFdlYWtIYXNoU2V0PElQQzo6Q29ubmVjdGlvbj4gbV9j
b25uZWN0aW9uczsgLy8gTWFpbiB0aHJlYWQgb25seS4KICAgICBzdGQ6OnVuaXF1ZV9wdHI8Rmls
ZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeT4gbV9maWxlU3lzdGVtU3RvcmFnZUhhbmRsZVJl
Z2lzdHJ5OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTdG9yYWdlQXJlYVJlZ2lzdHJ5PiBtX3N0b3Jh
Z2VBcmVhUmVnaXN0cnk7CisgICAgc3RkOjp1bmlxdWVfcHRyPElEQlN0b3JhZ2VSZWdpc3RyeT4g
bV9pZGJTdG9yYWdlUmVnaXN0cnk7CiAgICAgU3RyaW5nIG1fY3VzdG9tTG9jYWxTdG9yYWdlUGF0
aDsKKyAgICBTdHJpbmcgbV9jdXN0b21JREJTdG9yYWdlUGF0aDsKKyAgICBTdHJpbmcgbV9jdXN0
b21DYWNoZVN0b3JhZ2VQYXRoOworICAgIHVpbnQ2NF90IG1fZGVmYXVsdE9yaWdpblF1b3RhOwor
ICAgIHVpbnQ2NF90IG1fZGVmYXVsdFRoaXJkUGFydHlPcmlnaW5RdW90YTsKKyAgICBJUEM6OkNv
bm5lY3Rpb246OlVuaXF1ZUlEIG1fcGFyZW50Q29ubmVjdGlvbjsKKyAgICBIYXNoTWFwPElQQzo6
Q29ubmVjdGlvbjo6VW5pcXVlSUQsIEhhc2hTZXQ8U3RyaW5nPj4gbV90ZW1wb3JhcnlCbG9iUGF0
aHNCeUNvbm5lY3Rpb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFn
ZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0
d29ya1N0b3JhZ2VNYW5hZ2VyLm1lc3NhZ2VzLmluCmluZGV4IDUwYjk2NzAxYjA3MGRkNWMzMjcx
MWRiMTQyNzkzMDNmZTY1MjExYjcuLjQ3MzA1ZTBlOTgxY2E1Y2ZhZTA3NzQyNmJmMjRiNzgxNWE0
ZDY0Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9O
ZXR3b3JrU3RvcmFnZU1hbmFnZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAt
NDcsNCArNDcsMzEgQEAKICAgICBTZXRJdGVtKFdlYktpdDo6U3RvcmFnZUFyZWFJZGVudGlmaWVy
IGlkZW50aWZpZXIsIFdlYktpdDo6U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllciBpbXBsSWRlbnRp
ZmllciwgU3RyaW5nIGtleSwgU3RyaW5nIHZhbHVlLCBTdHJpbmcgdXJsU3RyaW5nKSAtPiAoYm9v
bCBxdW90YUV4Y2VwdGlvbikgQXN5bmMgV2FudHNDb25uZWN0aW9uCiAgICAgUmVtb3ZlSXRlbShX
ZWJLaXQ6OlN0b3JhZ2VBcmVhSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJLaXQ6OlN0b3JhZ2VB
cmVhSW1wbElkZW50aWZpZXIgaW1wbElkZW50aWZpZXIsIFN0cmluZyBrZXksIFN0cmluZyB1cmxT
dHJpbmcpIC0+ICgpIEFzeW5jIFdhbnRzQ29ubmVjdGlvbgogICAgIENsZWFyKFdlYktpdDo6U3Rv
cmFnZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYktpdDo6U3RvcmFnZUFyZWFJbXBsSWRl
bnRpZmllciBpbXBsSWRlbnRpZmllciwgU3RyaW5nIHVybFN0cmluZykgLT4gKCkgQXN5bmMgV2Fu
dHNDb25uZWN0aW9uCisKKyAgICBPcGVuRGF0YWJhc2UoV2ViQ29yZTo6SURCUmVxdWVzdERhdGEg
cmVxdWVzdERhdGEpIFdhbnRzQ29ubmVjdGlvbgorICAgIE9wZW5EQlJlcXVlc3RDYW5jZWxsZWQo
V2ViQ29yZTo6SURCUmVxdWVzdERhdGEgcmVxdWVzdERhdGEpCisgICAgRGVsZXRlRGF0YWJhc2Uo
V2ViQ29yZTo6SURCUmVxdWVzdERhdGEgcmVxdWVzdERhdGEpIFdhbnRzQ29ubmVjdGlvbgorICAg
IEVzdGFibGlzaFRyYW5zYWN0aW9uKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZp
ZXIsIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uSW5mbyBpbmZvKQorICAgIERhdGFiYXNlQ29ubmVj
dGlvblBlbmRpbmdDbG9zZSh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKQor
ICAgIERhdGFiYXNlQ29ubmVjdGlvbkNsb3NlZCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25J
ZGVudGlmaWVyKQorICAgIEFib3J0T3BlbkFuZFVwZ3JhZGVOZWVkZWQodWludDY0X3QgZGF0YWJh
c2VDb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyIHRy
YW5zYWN0aW9uSWRlbnRpZmllcikKKyAgICBEaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KHVpbnQ2
NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OklEQlJlc291cmNlSWRl
bnRpZmllciByZXF1ZXN0SWRlbnRpZmllciwgV2ViQ29yZTo6SW5kZXhlZERCOjpDb25uZWN0aW9u
Q2xvc2VkT25CZWhhbGZPZlNlcnZlciBjb25uZWN0aW9uQ2xvc2VkT25CZWhhbGZPZlNlcnZlcikK
KyAgICBEaWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbih1aW50NjRfdCBk
YXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZp
ZXIgdHJhbnNhY3Rpb25JZGVudGlmaWVyKQorICAgIEFib3J0VHJhbnNhY3Rpb24oV2ViQ29yZTo6
SURCUmVzb3VyY2VJZGVudGlmaWVyIHRyYW5zYWN0aW9uSWRlbnRpZmllcikKKyAgICBDb21taXRU
cmFuc2FjdGlvbihXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXIgdHJhbnNhY3Rpb25JZGVu
dGlmaWVyLCB1aW50NjRfdCBwZW5kaW5nUmVxdWVzdENvdW50KQorICAgIENyZWF0ZU9iamVjdFN0
b3JlKFdlYkNvcmU6OklEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhLCBXZWJDb3JlOjpJREJPYmpl
Y3RTdG9yZUluZm8gaW5mbykKKyAgICBEZWxldGVPYmplY3RTdG9yZShXZWJDb3JlOjpJREJSZXF1
ZXN0RGF0YSByZXF1ZXN0RGF0YSwgU3RyaW5nIG9iamVjdFN0b3JlTmFtZSkKKyAgICBSZW5hbWVP
YmplY3RTdG9yZShXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YSwgdWludDY0X3Qg
b2JqZWN0U3RvcmVJZGVudGlmaWVyLCBTdHJpbmcgbmV3TmFtZSkKKyAgICBDbGVhck9iamVjdFN0
b3JlKFdlYkNvcmU6OklEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhLCB1aW50NjRfdCBvYmplY3RT
dG9yZUlkZW50aWZpZXIpCisgICAgQ3JlYXRlSW5kZXgoV2ViQ29yZTo6SURCUmVxdWVzdERhdGEg
cmVxdWVzdERhdGEsIFdlYkNvcmU6OklEQkluZGV4SW5mbyBpbmZvKQorICAgIERlbGV0ZUluZGV4
KFdlYkNvcmU6OklEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhLCB1aW50NjRfdCBvYmplY3RTdG9y
ZUlkZW50aWZpZXIsIFN0cmluZyBpbmRleE5hbWUpCisgICAgUmVuYW1lSW5kZXgoV2ViQ29yZTo6
SURCUmVxdWVzdERhdGEgcmVxdWVzdERhdGEsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmll
ciwgdWludDY0X3QgaW5kZXhJZGVudGlmaWVyLCBTdHJpbmcgbmV3TmFtZSkKKyAgICBQdXRPckFk
ZChXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YSwgV2ViQ29yZTo6SURCS2V5RGF0
YSBrZXksIFdlYkNvcmU6OklEQlZhbHVlIHZhbHVlLCBXZWJDb3JlOjpJbmRleGVkREI6Ok9iamVj
dFN0b3JlT3ZlcndyaXRlTW9kZSBvdmVyd3JpdGVNb2RlKSBXYW50c0Nvbm5lY3Rpb24KKyAgICBH
ZXRSZWNvcmQoV2ViQ29yZTo6SURCUmVxdWVzdERhdGEgcmVxdWVzdERhdGEsIHN0cnVjdCBXZWJD
b3JlOjpJREJHZXRSZWNvcmREYXRhIGdldFJlY29yZERhdGEpCisgICAgR2V0QWxsUmVjb3JkcyhX
ZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YSwgc3RydWN0IFdlYkNvcmU6OklEQkdl
dEFsbFJlY29yZHNEYXRhIGdldEFsbFJlY29yZHNEYXRhKQorICAgIEdldENvdW50KFdlYkNvcmU6
OklEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhLCBzdHJ1Y3QgV2ViQ29yZTo6SURCS2V5UmFuZ2VE
YXRhIHJhbmdlKQorICAgIERlbGV0ZVJlY29yZChXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSByZXF1
ZXN0RGF0YSwgc3RydWN0IFdlYkNvcmU6OklEQktleVJhbmdlRGF0YSByYW5nZSkKKyAgICBPcGVu
Q3Vyc29yKFdlYkNvcmU6OklEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhLCBXZWJDb3JlOjpJREJD
dXJzb3JJbmZvIGluZm8pCisgICAgSXRlcmF0ZUN1cnNvcihXZWJDb3JlOjpJREJSZXF1ZXN0RGF0
YSByZXF1ZXN0RGF0YSwgc3RydWN0IFdlYkNvcmU6OklEQkl0ZXJhdGVDdXJzb3JEYXRhIGRhdGEp
CisgICAgR2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKFdlYkNvcmU6OklEQlJlc291cmNl
SWRlbnRpZmllciByZXF1ZXN0SWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6OkNsaWVudE9yaWdp
biBvcmlnaW4pIFdhbnRzQ29ubmVjdGlvbgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5jcHAKaW5k
ZXggMjM0YzA5YWIyOTU1ODRiZGE4OWJlNzRlOTM4MzZkZmNhMWVhODJkZS4uMzhiMWM5YjAyMDE4
OTFhYTRjODkxZjYxNTM4MjA5MDAwNjlhOTdjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuY3Bw
CkBAIC0yNiw4ICsyNiwxMSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk9yaWdp
blN0b3JhZ2VNYW5hZ2VyLmgiCiAKKyNpbmNsdWRlICJDYWNoZVN0b3JhZ2VFbmdpbmUuaCIKICNp
bmNsdWRlICJGaWxlU3lzdGVtU3RvcmFnZUhhbmRsZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiRmls
ZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyLmgiCisjaW5jbHVkZSAiSURCU3RvcmFnZU1hbmFnZXIuaCIK
KyNpbmNsdWRlICJJREJTdG9yYWdlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJMb2NhbFN0b3JhZ2VN
YW5hZ2VyLmgiCiAjaW5jbHVkZSAiTWVtb3J5U3RvcmFnZUFyZWEuaCIKICNpbmNsdWRlICJTZXNz
aW9uU3RvcmFnZU1hbmFnZXIuaCIKQEAgLTQ0LDEwICs0NywxMSBAQCBlbnVtIGNsYXNzIE9yaWdp
blN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0TW9kZSA6IGJvb2wgeyBCZXN0RWZmb3J0LCBQ
ZXJzaXN0ZQogY2xhc3MgT3JpZ2luU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VCdWNrZXQgewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFN0b3JhZ2VCdWNrZXQoY29u
c3QgU3RyaW5nJiByb290UGF0aCwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIGxvY2FsU3RvcmFnZVBhdGgpCisgICAgU3RvcmFnZUJ1Y2tldChjb25zdCBTdHJpbmcmIHJv
b3RQYXRoLCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbG9jYWxTdG9y
YWdlUGF0aCwgY29uc3QgU3RyaW5nJiBpZGJTdG9yYWdlUGF0aCkKICAgICAgICAgOiBtX3Jvb3RQ
YXRoKHJvb3RQYXRoKQogICAgICAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogICAgICAg
ICAsIG1fbG9jYWxTdG9yYWdlUGF0aChsb2NhbFN0b3JhZ2VQYXRoKQorICAgICAgICAsIG1faWRi
U3RvcmFnZVBhdGgoaWRiU3RvcmFnZVBhdGgpCiAgICAgewogICAgIH0KIApAQCAtNzAsNiArNzQs
NyBAQCBwdWJsaWM6CiAgICAgICAgIEZpbGVTeXN0ZW0sCiAgICAgICAgIExvY2FsU3RvcmFnZSwK
ICAgICAgICAgU2Vzc2lvblN0b3JhZ2UsCisgICAgICAgIEluZGV4ZWREQiwKICAgICB9OwogCiAg
ICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZURhdGFUeXBlPiB0b1dlYnNpdGVEYXRhVHlw
ZShjb25zdCBTdHJpbmcmIHN0b3JhZ2VJZGVudGlmaWVyKQpAQCAtODAsNiArODUsOCBAQCBwdWJs
aWM6CiAgICAgICAgICAgICByZXR1cm4gV2Vic2l0ZURhdGFUeXBlOjpMb2NhbFN0b3JhZ2U7CiAg
ICAgICAgIGlmIChzdG9yYWdlSWRlbnRpZmllciA9PSAiU2Vzc2lvblN0b3JhZ2UiX3MpCiAgICAg
ICAgICAgICByZXR1cm4gV2Vic2l0ZURhdGFUeXBlOjpTZXNzaW9uU3RvcmFnZTsKKyAgICAgICAg
aWYgKHN0b3JhZ2VJZGVudGlmaWVyID09ICJJbmRleGVkREIiX3MpCisgICAgICAgICAgICByZXR1
cm4gV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXM7CiAKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICB9CkBAIC05Myw2ICsxMDAsOCBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICByZXR1cm4gIkxvY2FsU3RvcmFnZSJfczsKICAgICAgICAgY2FzZSBTdG9yYWdlVHlwZTo6
U2Vzc2lvblN0b3JhZ2U6CiAgICAgICAgICAgICByZXR1cm4gIlNlc3Npb25TdG9yYWdlIl9zOwor
ICAgICAgICBjYXNlIFN0b3JhZ2VUeXBlOjpJbmRleGVkREI6CisgICAgICAgICAgICByZXR1cm4g
IkluZGV4ZWREQiJfczsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CkBAIC0xNDMsMTMgKzE1MiwyNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX3Nl
c3Npb25TdG9yYWdlTWFuYWdlci5nZXQoKTsKICAgICB9CiAKKyAgICBJREJTdG9yYWdlTWFuYWdl
ciYgaWRiU3RvcmFnZU1hbmFnZXIoSURCU3RvcmFnZVJlZ2lzdHJ5JiByZWdpc3RyeSwgSURCU3Rv
cmFnZU1hbmFnZXI6OlF1b3RhQ2hlY2tGdW5jdGlvbiYmIHF1b3RhQ2hlY2tGdW5jdGlvbikKKyAg
ICB7CisgICAgICAgIGlmICghbV9pZGJTdG9yYWdlTWFuYWdlcikKKyAgICAgICAgICAgIG1faWRi
U3RvcmFnZU1hbmFnZXIgPSBtYWtlVW5pcXVlPElEQlN0b3JhZ2VNYW5hZ2VyPihtX2lkYlN0b3Jh
Z2VQYXRoLCByZWdpc3RyeSwgV1RGTW92ZShxdW90YUNoZWNrRnVuY3Rpb24pKTsKKworICAgICAg
ICByZXR1cm4gKm1faWRiU3RvcmFnZU1hbmFnZXI7CisgICAgfQorCisgICAgSURCU3RvcmFnZU1h
bmFnZXIqIGV4aXN0aW5nSURCU3RvcmFnZU1hbmFnZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1faWRiU3RvcmFnZU1hbmFnZXIuZ2V0KCk7CisgICAgfQorCiAgICAgYm9vbCBpc0FjdGl2ZSgp
IGNvbnN0CiAgICAgewogICAgICAgICAvLyBXZSBjYW5ub3QgcmVtb3ZlIHRoZSBidWNrZXQgaWYg
aXQgaGFzIGluLW1lbW9yeSBkYXRhLCBvdGhlcndpc2Ugc2Vzc2lvbgogICAgICAgICAvLyBkYXRh
IG1heSBiZSBsb3N0LgogICAgICAgICByZXR1cm4gKG1fZmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2Vy
ICYmIG1fZmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyLT5pc0FjdGl2ZSgpKQogICAgICAgICAgICAg
fHwgKG1fbG9jYWxTdG9yYWdlTWFuYWdlciAmJiAobV9sb2NhbFN0b3JhZ2VNYW5hZ2VyLT5oYXNE
YXRhSW5NZW1vcnkoKSB8fCBtX2xvY2FsU3RvcmFnZU1hbmFnZXItPmlzQWN0aXZlKCkpKQotICAg
ICAgICAgICAgfHwgKG1fc2Vzc2lvblN0b3JhZ2VNYW5hZ2VyICYmIChtX3Nlc3Npb25TdG9yYWdl
TWFuYWdlci0+aGFzRGF0YUluTWVtb3J5KCkgfHwgbV9zZXNzaW9uU3RvcmFnZU1hbmFnZXItPmlz
QWN0aXZlKCkpKTsKKyAgICAgICAgICAgIHx8IChtX3Nlc3Npb25TdG9yYWdlTWFuYWdlciAmJiAo
bV9zZXNzaW9uU3RvcmFnZU1hbmFnZXItPmhhc0RhdGFJbk1lbW9yeSgpIHx8IG1fc2Vzc2lvblN0
b3JhZ2VNYW5hZ2VyLT5pc0FjdGl2ZSgpKSkKKyAgICAgICAgICAgIHx8IChtX2lkYlN0b3JhZ2VN
YW5hZ2VyICYmIChtX2lkYlN0b3JhZ2VNYW5hZ2VyLT5oYXNEYXRhSW5NZW1vcnkoKSB8fCBtX2lk
YlN0b3JhZ2VNYW5hZ2VyLT5pc0FjdGl2ZSgpKSk7CiAgICAgfQogCiAgICAgYm9vbCBpc0VtcHR5
KCkgY29uc3QKQEAgLTE2NSw3ICsxODgsOCBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChoYXNWYWxp
ZEZpbGUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgcmV0dXJuICFGaWxl
U3lzdGVtOjpmaWxlRXhpc3RzKG1fbG9jYWxTdG9yYWdlUGF0aCk7CisgICAgICAgIEZpbGVTeXN0
ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KG1faWRiU3RvcmFnZVBhdGgpOworICAgICAgICByZXR1
cm4gIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobV9sb2NhbFN0b3JhZ2VQYXRoKSAmJiAhRmlsZVN5
c3RlbTo6ZmlsZUV4aXN0cyhtX2lkYlN0b3JhZ2VQYXRoKTsKICAgICB9CiAKICAgICBPcHRpb25T
ZXQ8V2Vic2l0ZURhdGFUeXBlPiBmZXRjaERhdGFUeXBlc0luTGlzdChPcHRpb25TZXQ8V2Vic2l0
ZURhdGFUeXBlPiB0eXBlcykKQEAgLTE4NiwxNCArMjEwLDIwIEBAIHB1YmxpYzoKIAogICAgICAg
ICBpZiAodHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpTZXNzaW9uU3RvcmFnZSkgJiYg
bW9kaWZpZWRTaW5jZVRpbWUgPCBXYWxsVGltZTo6bm93KCkpCiAgICAgICAgICAgICBkZWxldGVT
ZXNzaW9uU3RvcmFnZURhdGEoKTsKKworICAgICAgICBpZiAodHlwZXMuY29udGFpbnMoV2Vic2l0
ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpKQorICAgICAgICAgICAgZGVsZXRlSURCU3Rv
cmFnZURhdGEobW9kaWZpZWRTaW5jZVRpbWUpOwogICAgIH0KIAotICAgIHZvaWQgbW92ZURhdGEo
Y29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZVBhdGgpCisgICAg
dm9pZCBtb3ZlRGF0YShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbG9jYWxTdG9y
YWdlUGF0aCwgY29uc3QgU3RyaW5nJiBpZGJTdG9yYWdlUGF0aCkKICAgICB7CiAgICAgICAgIG1f
ZmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyID0gbnVsbHB0cjsKICAgICAgICAgaWYgKG1fbG9jYWxT
dG9yYWdlTWFuYWdlcikKICAgICAgICAgICAgIG1fbG9jYWxTdG9yYWdlTWFuYWdlci0+Y2xvc2Uo
KTsKIAorICAgICAgICBpZiAobV9pZGJTdG9yYWdlTWFuYWdlcikKKyAgICAgICAgICAgIG1faWRi
U3RvcmFnZU1hbmFnZXItPmNsb3NlRGF0YWJhc2VzRm9yRGVsZXRpb24oKTsKKwogICAgICAgICBG
aWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoRmlsZVN5c3RlbTo6cGFyZW50UGF0aChwYXRo
KSk7CiAgICAgICAgIEZpbGVTeXN0ZW06Om1vdmVGaWxlKG1fcm9vdFBhdGgsIHBhdGgpOwogCkBA
IC0yMDEsNiArMjMxLDExIEBAIHB1YmxpYzoKICAgICAgICAgICAgIEZpbGVTeXN0ZW06Om1ha2VB
bGxEaXJlY3RvcmllcyhGaWxlU3lzdGVtOjpwYXJlbnRQYXRoKGxvY2FsU3RvcmFnZVBhdGgpKTsK
ICAgICAgICAgICAgIFdlYkNvcmU6OlNRTGl0ZUZpbGVTeXN0ZW06Om1vdmVEYXRhYmFzZUZpbGUo
bV9sb2NhbFN0b3JhZ2VQYXRoLCBsb2NhbFN0b3JhZ2VQYXRoKTsKICAgICAgICAgfQorCisgICAg
ICAgIGlmICghbV9pZGJTdG9yYWdlUGF0aC5pc0VtcHR5KCkgJiYgIWlkYlN0b3JhZ2VQYXRoLmlz
RW1wdHkoKSkgeworICAgICAgICAgICAgRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKEZp
bGVTeXN0ZW06OnBhcmVudFBhdGgoaWRiU3RvcmFnZVBhdGgpKTsKKyAgICAgICAgICAgIFdlYkNv
cmU6OlNRTGl0ZUZpbGVTeXN0ZW06Om1vdmVEYXRhYmFzZUZpbGUobV9pZGJTdG9yYWdlUGF0aCwg
aWRiU3RvcmFnZVBhdGgpOworICAgICAgICB9CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMjE3LDYg
KzI1MiwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQoV2Vic2l0ZURh
dGFUeXBlOjpTZXNzaW9uU3RvcmFnZSk7CiAgICAgICAgIH0KIAorICAgICAgICBpZiAodHlwZXMu
Y29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpKSB7CisgICAgICAg
ICAgICBpZiAobV9pZGJTdG9yYWdlTWFuYWdlciAmJiBtX2lkYlN0b3JhZ2VNYW5hZ2VyLT5oYXNE
YXRhSW5NZW1vcnkoKSkKKyAgICAgICAgICAgICAgICByZXN1bHQuYWRkKFdlYnNpdGVEYXRhVHlw
ZTo6SW5kZXhlZERCRGF0YWJhc2VzKTsKKyAgICAgICAgfQorCiAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgfQogCkBAIC0yMzMsNiArMjczLDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgcmVzdWx0LmFkZChXZWJzaXRlRGF0YVR5cGU6OkxvY2FsU3RvcmFnZSk7CiAgICAgICAgIH0K
IAorICAgICAgICBpZiAodHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJE
YXRhYmFzZXMpICYmICFyZXN1bHQuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJE
YXRhYmFzZXMpKSB7CisgICAgICAgICAgICBpZiAoYXV0byBkYXRhYmFzZXMgPSBGaWxlU3lzdGVt
OjpsaXN0RGlyZWN0b3J5KG1faWRiU3RvcmFnZVBhdGgpOyAhZGF0YWJhc2VzLmlzRW1wdHkoKSkK
KyAgICAgICAgICAgICAgICByZXN1bHQuYWRkKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0
YWJhc2VzKTsKKyAgICAgICAgfQorCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCkBA
IC0yNzAsNiArMzE1LDE0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBtX3Nlc3Npb25TdG9yYWdl
TWFuYWdlciA9IG51bGxwdHI7CiAgICAgfQogICAgIAorICAgIHZvaWQgZGVsZXRlSURCU3RvcmFn
ZURhdGEoV2FsbFRpbWUgdGltZSkKKyAgICB7CisgICAgICAgIGlmIChtX2lkYlN0b3JhZ2VNYW5h
Z2VyKQorICAgICAgICAgICAgbV9pZGJTdG9yYWdlTWFuYWdlci0+Y2xvc2VEYXRhYmFzZXNGb3JE
ZWxldGlvbigpOworCisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUFsbEZpbGVzTW9kaWZpZWRT
aW5jZShtX2lkYlN0b3JhZ2VQYXRoLCB0aW1lKTsKKyAgICB9CisgICAgCiAgICAgU3RyaW5nIG1f
cm9vdFBhdGg7CiAgICAgU3RyaW5nIG1faWRlbnRpZmllcjsKICAgICBTdG9yYWdlQnVja2V0TW9k
ZSBtX21vZGUgeyBTdG9yYWdlQnVja2V0TW9kZTo6QmVzdEVmZm9ydCB9OwpAQCAtMjc3LDExICsz
MzAsMjQgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TG9jYWxTdG9yYWdlTWFuYWdl
cj4gbV9sb2NhbFN0b3JhZ2VNYW5hZ2VyOwogICAgIFN0cmluZyBtX2xvY2FsU3RvcmFnZVBhdGg7
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFNlc3Npb25TdG9yYWdlTWFuYWdlcj4gbV9zZXNzaW9uU3Rv
cmFnZU1hbmFnZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPElEQlN0b3JhZ2VNYW5hZ2VyPiBtX2lk
YlN0b3JhZ2VNYW5hZ2VyOworICAgIFN0cmluZyBtX2lkYlN0b3JhZ2VQYXRoOwogfTsKIAotT3Jp
Z2luU3RvcmFnZU1hbmFnZXI6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyKFN0cmluZyYmIHBhdGgsIFN0
cmluZyYmIGxvY2FsU3RvcmFnZVBhdGgpCitzdGF0aWMgUmVmPFF1b3RhTWFuYWdlcj4gY3JlYXRl
UXVvdGFNYW5hZ2VyKHVpbnQ2NF90IHF1b3RhLCBjb25zdCBTdHJpbmcmIGlkYlN0b3JhZ2VQYXRo
LCBjb25zdCBTdHJpbmcmIGNhY2hlU3RvcmFnZVBhdGgsIFF1b3RhTWFuYWdlcjo6SW5jcmVhc2VR
dW90YUZ1bmN0aW9uJiYgaW5jcmVhc2VRdW90YUZ1bmN0aW9uKQoreworICAgIFF1b3RhTWFuYWdl
cjo6R2V0VXNhZ2VGdW5jdGlvbiBnZXRVc2FnZUZ1bmN0aW9uID0gW2lkYlN0b3JhZ2VQYXRoLCBj
YWNoZVN0b3JhZ2VQYXRoXSgpIHsKKyAgICAgICAgcmV0dXJuIElEQlN0b3JhZ2VNYW5hZ2VyOjpp
ZGJTdG9yYWdlU2l6ZShpZGJTdG9yYWdlUGF0aCkgKyBDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6ZGlz
a1VzYWdlKGNhY2hlU3RvcmFnZVBhdGgpOworICAgIH07CisgICAgcmV0dXJuIFF1b3RhTWFuYWdl
cjo6Y3JlYXRlKHF1b3RhLCBXVEZNb3ZlKGdldFVzYWdlRnVuY3Rpb24pLCBXVEZNb3ZlKGluY3Jl
YXNlUXVvdGFGdW5jdGlvbikpOworfQorCitPcmlnaW5TdG9yYWdlTWFuYWdlcjo6T3JpZ2luU3Rv
cmFnZU1hbmFnZXIodWludDY0X3QgcXVvdGEsIFF1b3RhTWFuYWdlcjo6SW5jcmVhc2VRdW90YUZ1
bmN0aW9uJiYgaW5jcmVhc2VRdW90YUZ1bmN0aW9uLCBTdHJpbmcmJiBwYXRoLCBTdHJpbmcmJiBs
b2NhbFN0b3JhZ2VQYXRoLCBTdHJpbmcmJiBpZGJTdG9yYWdlUGF0aCwgU3RyaW5nJiYgY2FjaGVT
dG9yYWdlUGF0aCkKICAgICA6IG1fcGF0aChXVEZNb3ZlKHBhdGgpKQogICAgICwgbV9sb2NhbFN0
b3JhZ2VQYXRoKFdURk1vdmUobG9jYWxTdG9yYWdlUGF0aCkpCisgICAgLCBtX2lkYlN0b3JhZ2VQ
YXRoKFdURk1vdmUoaWRiU3RvcmFnZVBhdGgpKQorICAgICwgbV9jYWNoZVN0b3JhZ2VQYXRoKFdU
Rk1vdmUoY2FjaGVTdG9yYWdlUGF0aCkpCisgICAgLCBtX3F1b3RhTWFuYWdlcihjcmVhdGVRdW90
YU1hbmFnZXIocXVvdGEsIG1faWRiU3RvcmFnZVBhdGgsIG1fY2FjaGVTdG9yYWdlUGF0aCwgV1RG
TW92ZShpbmNyZWFzZVF1b3RhRnVuY3Rpb24pKSkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6Omlz
TWFpbigpKTsKIH0KQEAgLTI5NywxMSArMzYzLDE2IEBAIHZvaWQgT3JpZ2luU3RvcmFnZU1hbmFn
ZXI6OmNvbm5lY3Rpb25DbG9zZWQoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9u
CiBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldCYgT3JpZ2luU3RvcmFnZU1hbmFn
ZXI6OmRlZmF1bHRCdWNrZXQoKQogewogICAgIGlmICghbV9kZWZhdWx0QnVja2V0KQotICAgICAg
ICBtX2RlZmF1bHRCdWNrZXQgPSBtYWtlVW5pcXVlPFN0b3JhZ2VCdWNrZXQ+KG1fcGF0aCwgImRl
ZmF1bHQiX3MsIG1fbG9jYWxTdG9yYWdlUGF0aCk7CisgICAgICAgIG1fZGVmYXVsdEJ1Y2tldCA9
IG1ha2VVbmlxdWU8U3RvcmFnZUJ1Y2tldD4obV9wYXRoLCAiZGVmYXVsdCJfcywgbV9sb2NhbFN0
b3JhZ2VQYXRoLCBtX2lkYlN0b3JhZ2VQYXRoKTsKIAogICAgIHJldHVybiAqbV9kZWZhdWx0QnVj
a2V0OwogfQogCitRdW90YU1hbmFnZXImIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpxdW90YU1hbmFn
ZXIoKQoreworICAgIHJldHVybiBtX3F1b3RhTWFuYWdlci5nZXQoKTsKK30KKwogRmlsZVN5c3Rl
bVN0b3JhZ2VNYW5hZ2VyJiBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6ZmlsZVN5c3RlbVN0b3JhZ2VN
YW5hZ2VyKEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnkmIHJlZ2lzdHJ5KQogewogICAg
IHJldHVybiBkZWZhdWx0QnVja2V0KCkuZmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyKHJlZ2lzdHJ5
KTsKQEAgLTMyNyw2ICszOTgsMjMgQEAgU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyKiBPcmlnaW5TdG9y
YWdlTWFuYWdlcjo6ZXhpc3RpbmdTZXNzaW9uU3RvcmFnZU1hbmFnZXIoKQogICAgIHJldHVybiBk
ZWZhdWx0QnVja2V0KCkuZXhpc3RpbmdTZXNzaW9uU3RvcmFnZU1hbmFnZXIoKTsKIH0KIAorSURC
U3RvcmFnZU1hbmFnZXImIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjppZGJTdG9yYWdlTWFuYWdlcihJ
REJTdG9yYWdlUmVnaXN0cnkmIHJlZ2lzdHJ5KQoreworICAgIHJldHVybiBkZWZhdWx0QnVja2V0
KCkuaWRiU3RvcmFnZU1hbmFnZXIocmVnaXN0cnksIFtxdW90YU1hbmFnZXIgPSBXZWFrUHRyIHsg
dGhpcy0+cXVvdGFNYW5hZ2VyKCkgfV0odWludDY0X3Qgc3BhY2VSZXF1ZXN0ZWQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIG11dGFibGUgeworICAg
ICAgICBpZiAoIXF1b3RhTWFuYWdlcikKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFu
ZGxlcihmYWxzZSk7CisKKyAgICAgICAgcXVvdGFNYW5hZ2VyLT5yZXF1ZXN0U3BhY2Uoc3BhY2VS
ZXF1ZXN0ZWQsIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XShhdXRvIGRlY2lzaW9uKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KGRlY2lzaW9uID09IFF1b3RhTWFuYWdlcjo6RGVjaXNpb246OkdyYW50KTsKKyAgICAgICAgfSk7
CisgICAgfSk7Cit9CisKK0lEQlN0b3JhZ2VNYW5hZ2VyKiBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6
ZXhpc3RpbmdJREJTdG9yYWdlTWFuYWdlcigpCit7CisgICAgcmV0dXJuIGRlZmF1bHRCdWNrZXQo
KS5leGlzdGluZ0lEQlN0b3JhZ2VNYW5hZ2VyKCk7Cit9CisKIGJvb2wgT3JpZ2luU3RvcmFnZU1h
bmFnZXI6OmlzQWN0aXZlKCkKIHsKICAgICByZXR1cm4gZGVmYXVsdEJ1Y2tldCgpLmlzQWN0aXZl
KCk7CkBAIC0zNTksMTEgKzQ0NywxMSBAQCB2b2lkIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpkZWxl
dGVEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHR5cGVzLCBXYWxsVGltZQogICAgIGRl
ZmF1bHRCdWNrZXQoKS5kZWxldGVEYXRhKHR5cGVzLCBtb2RpZmllZFNpbmNlKTsKIH0KIAotdm9p
ZCBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6bW92ZURhdGEoY29uc3QgU3RyaW5nJiBuZXdQYXRoLCBj
b25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZVBhdGgpCit2b2lkIE9yaWdpblN0b3JhZ2VNYW5hZ2Vy
Ojptb3ZlRGF0YShjb25zdCBTdHJpbmcmIG5ld1BhdGgsIGNvbnN0IFN0cmluZyYgbG9jYWxTdG9y
YWdlUGF0aCwgY29uc3QgU3RyaW5nJiBpZGJTdG9yYWdlUGF0aCkKIHsKICAgICBBU1NFUlQoIVJ1
bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIGRlZmF1bHRCdWNrZXQoKS5tb3ZlRGF0YShuZXdQYXRo
LCBsb2NhbFN0b3JhZ2VQYXRoKTsKKyAgICBkZWZhdWx0QnVja2V0KCkubW92ZURhdGEobmV3UGF0
aCwgbG9jYWxTdG9yYWdlUGF0aCwgaWRiU3RvcmFnZVBhdGgpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFn
ZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
dG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2VyLmgKaW5kZXggNWU3NjY5OTg2ZTQ2Njg1ZjM4OWI3
YTUyNzFlNjZkMGU2M2MyZDE5ZS4uZWM0NmM1NGIzMTExZmIwMWIzY2U2OTY5MjA3YzEzYmU1ZDk5
OWQ5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09y
aWdpblN0b3JhZ2VNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
dG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2VyLmgKQEAgLTI2LDE2ICsyNiwxNSBAQAogI3ByYWdt
YSBvbmNlCiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiUXVvdGFNYW5hZ2Vy
LmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLXN0cnVjdCBDbGllbnRPcmlnaW47Ci19Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFz
cyBGaWxlU3lzdGVtU3RvcmFnZUhhbmRsZVJlZ2lzdHJ5OwogY2xhc3MgRmlsZVN5c3RlbVN0b3Jh
Z2VNYW5hZ2VyOworY2xhc3MgSURCU3RvcmFnZU1hbmFnZXI7CitjbGFzcyBJREJTdG9yYWdlUmVn
aXN0cnk7CiBjbGFzcyBMb2NhbFN0b3JhZ2VNYW5hZ2VyOwogY2xhc3MgU2Vzc2lvblN0b3JhZ2VN
YW5hZ2VyOwogY2xhc3MgU3RvcmFnZUFyZWFSZWdpc3RyeTsKQEAgLTQ0LDM1ICs0MywzOCBAQCBl
bnVtIGNsYXNzIFdlYnNpdGVEYXRhVHlwZSA6IHVpbnQzMl90OwogY2xhc3MgT3JpZ2luU3RvcmFn
ZU1hbmFnZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIE9y
aWdpblN0b3JhZ2VNYW5hZ2VyKFN0cmluZyYmIHBhdGgsIFN0cmluZyYmIGxvY2FsU3RvcmFnZVBh
dGgpOworICAgIE9yaWdpblN0b3JhZ2VNYW5hZ2VyKHVpbnQ2NF90IHF1b3RhLCBRdW90YU1hbmFn
ZXI6OkluY3JlYXNlUXVvdGFGdW5jdGlvbiYmLCBTdHJpbmcmJiBwYXRoLCBTdHJpbmcmJiBsb2Nh
bFN0b3JhZ2VQYXRoLCBTdHJpbmcmJiBpZGJTdG9yYWdlUGF0aCwgU3RyaW5nJiYgY2FjaGVTdG9y
YWdlUGF0aCk7CiAgICAgfk9yaWdpblN0b3JhZ2VNYW5hZ2VyKCk7CiAKICAgICB2b2lkIGNvbm5l
Y3Rpb25DbG9zZWQoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCk7CiAgICAgYm9vbCBwZXJzaXN0
ZWQoKSBjb25zdCB7IHJldHVybiBtX3BlcnNpc3RlZDsgfQogICAgIHZvaWQgc2V0UGVyc2lzdGVk
KGJvb2wgdmFsdWUpOworICAgIFF1b3RhTWFuYWdlciYgcXVvdGFNYW5hZ2VyKCk7CiAgICAgRmls
ZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyJiBmaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIoRmlsZVN5c3Rl
bVN0b3JhZ2VIYW5kbGVSZWdpc3RyeSYpOwogICAgIExvY2FsU3RvcmFnZU1hbmFnZXImIGxvY2Fs
U3RvcmFnZU1hbmFnZXIoU3RvcmFnZUFyZWFSZWdpc3RyeSYpOwogICAgIExvY2FsU3RvcmFnZU1h
bmFnZXIqIGV4aXN0aW5nTG9jYWxTdG9yYWdlTWFuYWdlcigpOwogICAgIFNlc3Npb25TdG9yYWdl
TWFuYWdlciYgc2Vzc2lvblN0b3JhZ2VNYW5hZ2VyKFN0b3JhZ2VBcmVhUmVnaXN0cnkmKTsKICAg
ICBTZXNzaW9uU3RvcmFnZU1hbmFnZXIqIGV4aXN0aW5nU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyKCk7
CisgICAgSURCU3RvcmFnZU1hbmFnZXImIGlkYlN0b3JhZ2VNYW5hZ2VyKElEQlN0b3JhZ2VSZWdp
c3RyeSYpOworICAgIElEQlN0b3JhZ2VNYW5hZ2VyKiBleGlzdGluZ0lEQlN0b3JhZ2VNYW5hZ2Vy
KCk7CiAgICAgYm9vbCBpc0FjdGl2ZSgpOwogICAgIGJvb2wgaXNFbXB0eSgpOwogICAgIE9wdGlv
blNldDxXZWJzaXRlRGF0YVR5cGU+IGZldGNoRGF0YVR5cGVzSW5MaXN0KE9wdGlvblNldDxXZWJz
aXRlRGF0YVR5cGU+KTsKICAgICB2b2lkIGRlbGV0ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRh
VHlwZT4sIFdhbGxUaW1lKTsKLSAgICB2b2lkIG1vdmVEYXRhKGNvbnN0IFN0cmluZyYgbmV3UGF0
aCwgY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VQYXRoKTsKKyAgICB2b2lkIG1vdmVEYXRhKGNv
bnN0IFN0cmluZyYgbmV3UGF0aCwgY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VQYXRoLCBjb25z
dCBTdHJpbmcmIGlkYlN0b3JhZ2VQYXRoKTsKIAogcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIFN0
b3JhZ2VCdWNrZXRNb2RlIDogYm9vbDsKICAgICBjbGFzcyBTdG9yYWdlQnVja2V0OwogICAgIFN0
b3JhZ2VCdWNrZXQmIGRlZmF1bHRCdWNrZXQoKTsKIAotICAgIHZvaWQgY3JlYXRlT3JpZ2luRmls
ZUlmTmVjZXNzYXJ5KGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYpOwotICAgIHZvaWQgZGVs
ZXRlT3JpZ2luRmlsZUlmTmVjZXNzYXJ5KCk7Ci0KICAgICBzdGQ6OnVuaXF1ZV9wdHI8U3RvcmFn
ZUJ1Y2tldD4gbV9kZWZhdWx0QnVja2V0OwogICAgIFN0cmluZyBtX3BhdGg7CiAgICAgYm9vbCBt
X3BlcnNpc3RlZCB7IGZhbHNlIH07CiAgICAgU3RyaW5nIG1fbG9jYWxTdG9yYWdlUGF0aDsKKyAg
ICBTdHJpbmcgbV9pZGJTdG9yYWdlUGF0aDsKKyAgICBTdHJpbmcgbV9jYWNoZVN0b3JhZ2VQYXRo
OworICAgIFJlZjxRdW90YU1hbmFnZXI+IG1fcXVvdGFNYW5hZ2VyOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0
b3JhZ2UvUXVvdGFNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3Rv
cmFnZS9RdW90YU1hbmFnZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI0MTc4NTNiZmMyOTEzZDZlOTAxNWVk
YWZjMjFmNjRmOGRhYmZlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3N0b3JhZ2UvUXVvdGFNYW5hZ2VyLmNwcApAQCAtMCwwICsxLDEzNSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJRdW90YU1hbmFnZXIuaCIK
KworI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworUmVmPFF1
b3RhTWFuYWdlcj4gUXVvdGFNYW5hZ2VyOjpjcmVhdGUodWludDY0X3QgcXVvdGEsIEdldFVzYWdl
RnVuY3Rpb24mJiBnZXRVc2FnZUZ1bmN0aW9uLCBJbmNyZWFzZVF1b3RhRnVuY3Rpb24mJiBpbmNy
ZWFzZVF1b3RhRnVuY3Rpb24pCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUXVvdGFNYW5h
Z2VyKHF1b3RhLCBXVEZNb3ZlKGdldFVzYWdlRnVuY3Rpb24pLCBXVEZNb3ZlKGluY3JlYXNlUXVv
dGFGdW5jdGlvbikpKTsKK30KKworUXVvdGFNYW5hZ2VyOjpRdW90YU1hbmFnZXIodWludDY0X3Qg
cXVvdGEsIEdldFVzYWdlRnVuY3Rpb24mJiBnZXRVc2FnZUZ1bmN0aW9uLCBJbmNyZWFzZVF1b3Rh
RnVuY3Rpb24mJiBpbmNyZWFzZVF1b3RhRnVuY3Rpb24pCisgICAgOiBtX3F1b3RhKHF1b3RhKQor
ICAgICwgbV9pbml0aWFsUXVvdGEocXVvdGEpCisgICAgLCBtX2dldFVzYWdlRnVuY3Rpb24oV1RG
TW92ZShnZXRVc2FnZUZ1bmN0aW9uKSkKKyAgICAsIG1faW5jcmVhc2VRdW90YUZ1bmN0aW9uKFdU
Rk1vdmUoaW5jcmVhc2VRdW90YUZ1bmN0aW9uKSkKK3sKKyAgICBBU1NFUlQobV9xdW90YSk7Cit9
CisKK3ZvaWQgUXVvdGFNYW5hZ2VyOjpyZXF1ZXN0U3BhY2UodWludDY0X3Qgc3BhY2VSZXF1ZXN0
ZWQsIFJlcXVlc3RDYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIG1fcmVxdWVzdHMuYXBwZW5k
KFF1b3RhTWFuYWdlcjo6UmVxdWVzdCB7IHNwYWNlUmVxdWVzdGVkLCBXVEZNb3ZlKGNhbGxiYWNr
KSwgUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyIHsgfSB9KTsKKyAgICBoYW5kbGVSZXF1
ZXN0cygpOworfQorCit2b2lkIFF1b3RhTWFuYWdlcjo6aGFuZGxlUmVxdWVzdHMoKQoreworICAg
IGlmIChtX2N1cnJlbnRSZXF1ZXN0KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2lzSGFuZGxp
bmdSZXF1ZXN0cyA9IHRydWU7CisgICAgYXV0byBjbGVhcklzSGFuZGxpbmdSZXF1ZXN0cyA9IG1h
a2VTY29wZUV4aXQoWyZdIHsKKyAgICAgICAgbV9pc0hhbmRsaW5nUmVxdWVzdHMgPSBmYWxzZTsK
KyAgICB9KTsKKworICAgIHdoaWxlICghbV9jdXJyZW50UmVxdWVzdCAmJiAhbV9yZXF1ZXN0cy5p
c0VtcHR5KCkpIHsKKyAgICAgICAgbV9jdXJyZW50UmVxdWVzdCA9IG1fcmVxdWVzdHMudGFrZUZp
cnN0KCk7CisgICAgICAgIGlmIChncmFudFdpdGhDdXJyZW50UXVvdGEobV9jdXJyZW50UmVxdWVz
dC0+c3BhY2VSZXF1ZXN0ZWQpKSB7CisgICAgICAgICAgICBtX2N1cnJlbnRSZXF1ZXN0LT5jYWxs
YmFjayhEZWNpc2lvbjo6R3JhbnQpOworICAgICAgICAgICAgbV9jdXJyZW50UmVxdWVzdCA9IHN0
ZDo6bnVsbG9wdDsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAg
bV9jdXJyZW50UmVxdWVzdC0+aWRlbnRpZmllciA9IFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRp
Zmllcjo6Z2VuZXJhdGVUaHJlYWRTYWZlKCk7CisgICAgICAgIG1faW5jcmVhc2VRdW90YUZ1bmN0
aW9uKG1fY3VycmVudFJlcXVlc3QtPmlkZW50aWZpZXIsIG1fcXVvdGEsICptX3VzYWdlLCBtX2N1
cnJlbnRSZXF1ZXN0LT5zcGFjZVJlcXVlc3RlZCk7CisgICAgfQorfQorCitib29sIFF1b3RhTWFu
YWdlcjo6Z3JhbnRXaXRoQ3VycmVudFF1b3RhKHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkKQorewor
ICAgIGlmIChncmFudEZhc3RQYXRoKHNwYWNlUmVxdWVzdGVkKSkKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisKKyAgICAvLyBXaGVuIFF1b3RhTWFuYWdlciBpcyB1c2VkIGZvciB0aGUgZmlyc3QgdGlt
ZSwgd2Ugd2FudCB0byBtYWtlIHN1cmUgaXRzIGluaXRpYWwgcXVvdGEgaXMgYmlnZ2VyIHRoYW4g
ZXhpc3RpbmcgZGlzayB1c2FnZSwKKyAgICAvLyBiYXNlZCBvbiB0aGUgYXNzdW1wdGlvbiB0aGF0
IHRoZSBxdW90YSB3YXMgaW5jcmVhc2VkIHRvIGF0IGxlYXN0IHRoZSBkaXNrIHVzYWdlIHVuZGVy
IHVzZXIncyBwZXJtaXNzaW9uIGJlZm9yZS4KKyAgICBib29sIHNob3VsZFVwZGF0ZVF1b3RhQmFz
ZWRvblVzYWdlID0gIW1fdXNhZ2U7CisgICAgbV91c2FnZSA9IG1fZ2V0VXNhZ2VGdW5jdGlvbigp
OworICAgIGlmIChzaG91bGRVcGRhdGVRdW90YUJhc2Vkb25Vc2FnZSkgeworICAgICAgICBhdXRv
IGRlZmF1bHRRdW90YVN0ZXAgPSBtX3F1b3RhIC8gMTA7CisgICAgICAgIG1fcXVvdGEgPSBzdGQ6
Om1heChtX3F1b3RhLCBkZWZhdWx0UXVvdGFTdGVwICogKCgqbV91c2FnZSAvIGRlZmF1bHRRdW90
YVN0ZXApICsgMSkpOworICAgIH0KKyAgICBtX3F1b3RhQ291bnRkb3duID0gKm1fdXNhZ2UgPCBt
X3F1b3RhID8gbV9xdW90YSAtICptX3VzYWdlIDogMDsKKworICAgIHJldHVybiBncmFudEZhc3RQ
YXRoKHNwYWNlUmVxdWVzdGVkKTsKK30KKworYm9vbCBRdW90YU1hbmFnZXI6OmdyYW50RmFzdFBh
dGgodWludDY0X3Qgc3BhY2VSZXF1ZXN0ZWQpCit7CisgICAgaWYgKHNwYWNlUmVxdWVzdGVkIDw9
IG1fcXVvdGFDb3VudGRvd24pIHsKKyAgICAgICAgbV9xdW90YUNvdW50ZG93biAtPSBzcGFjZVJl
cXVlc3RlZDsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNl
OworfQorCit2b2lkIFF1b3RhTWFuYWdlcjo6ZGlkSW5jcmVhc2VRdW90YShRdW90YUluY3JlYXNl
UmVxdWVzdElkZW50aWZpZXIgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbmV3
UXVvdGEpCit7CisgICAgaWYgKCFtX2N1cnJlbnRSZXF1ZXN0IHx8IG1fY3VycmVudFJlcXVlc3Qt
PmlkZW50aWZpZXIgIT0gaWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG5l
d1F1b3RhKSB7CisgICAgICAgIG1fcXVvdGEgPSAqbmV3UXVvdGE7CisgICAgICAgIG1fcXVvdGFD
b3VudGRvd24gPSAwOyAvLyBSZWNhbGN1bGF0ZSBtX3F1b3RhQ291bnRkb3duIGJhc2VkIG9uIHVz
YWdlLgorICAgIH0KKworICAgIGF1dG8gZGVjaXNpb24gPSBncmFudFdpdGhDdXJyZW50UXVvdGEo
bV9jdXJyZW50UmVxdWVzdC0+c3BhY2VSZXF1ZXN0ZWQpID8gRGVjaXNpb246OkdyYW50IDogRGVj
aXNpb246OkRlbnk7CisgICAgbV9jdXJyZW50UmVxdWVzdC0+Y2FsbGJhY2soZGVjaXNpb24pOwor
ICAgIG1fY3VycmVudFJlcXVlc3QgPSBzdGQ6Om51bGxvcHQ7CisKKyAgICBpZiAoIW1faXNIYW5k
bGluZ1JlcXVlc3RzKQorICAgICAgICBoYW5kbGVSZXF1ZXN0cygpOworfQorCit2b2lkIFF1b3Rh
TWFuYWdlcjo6cmVzZXRRdW90YVVwZGF0ZWRCYXNlZE9uVXNhZ2VGb3JUZXN0aW5nKCkKK3sKKyAg
ICBtX3F1b3RhID0gbV9pbml0aWFsUXVvdGE7CisgICAgbV9xdW90YUNvdW50ZG93biA9IDA7Cisg
ICAgbV91c2FnZSA9IHN0ZDo6bnVsbG9wdDsKK30KKwordm9pZCBRdW90YU1hbmFnZXI6OnJlc2V0
UXVvdGFGb3JUZXN0aW5nKCkKK3sKKyAgICBtX3F1b3RhID0gbV9pbml0aWFsUXVvdGE7CisgICAg
bV9xdW90YUNvdW50ZG93biA9IDA7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1F1b3RhTWFuYWdlci5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1F1b3RhTWFuYWdlci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjcxZTU4NDU2MmE5NTljMWMxOTgxZDdmM2QxMGQyZTNhMTBjZTYxY2IKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvUXVvdGFN
YW5hZ2VyLmgKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8d3Rm
L0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitjbGFzcyBRdW90YU1hbmFnZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8UXVvdGFNYW5hZ2VyPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPFF1b3RhTWFuYWdlcj4g
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHVzaW5nIEdldFVz
YWdlRnVuY3Rpb24gPSBGdW5jdGlvbjx1aW50NjRfdCgpPjsKKyAgICB1c2luZyBJbmNyZWFzZVF1
b3RhRnVuY3Rpb24gPSBGdW5jdGlvbjx2b2lkKFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmll
ciwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCBjdXJyZW50VXNhZ2UsIHVpbnQ2NF90
IHJlcXVlc3RlZEluY3JlYXNlKT47CisgICAgc3RhdGljIFJlZjxRdW90YU1hbmFnZXI+IGNyZWF0
ZSh1aW50NjRfdCBxdW90YSwgR2V0VXNhZ2VGdW5jdGlvbiYmLCBJbmNyZWFzZVF1b3RhRnVuY3Rp
b24mJik7CisKKyAgICBlbnVtIGNsYXNzIERlY2lzaW9uIHsgRGVueSwgR3JhbnQgfTsKKyAgICB1
c2luZyBSZXF1ZXN0Q2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKERlY2lzaW9uKT47
CisgICAgdm9pZCByZXF1ZXN0U3BhY2UodWludDY0X3Qgc3BhY2VSZXF1ZXN0ZWQsIFJlcXVlc3RD
YWxsYmFjayYmKTsKKyAgICB2b2lkIGRpZEluY3JlYXNlUXVvdGEoUXVvdGFJbmNyZWFzZVJlcXVl
c3RJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBuZXdRdW90YSk7CisKKyAgICB2
b2lkIHJlc2V0UXVvdGFVcGRhdGVkQmFzZWRPblVzYWdlRm9yVGVzdGluZygpOworICAgIHZvaWQg
cmVzZXRRdW90YUZvclRlc3RpbmcoKTsKKworcHJpdmF0ZToKKyAgICBRdW90YU1hbmFnZXIodWlu
dDY0X3QgcXVvdGEsIEdldFVzYWdlRnVuY3Rpb24mJiwgSW5jcmVhc2VRdW90YUZ1bmN0aW9uJiYp
OworICAgIHZvaWQgaGFuZGxlUmVxdWVzdHMoKTsKKyAgICBib29sIGdyYW50V2l0aEN1cnJlbnRR
dW90YSh1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCk7CisgICAgYm9vbCBncmFudEZhc3RQYXRoKHVp
bnQ2NF90IHNwYWNlUmVxdWVzdGVkKTsKKworICAgIHN0cnVjdCBSZXF1ZXN0IHsKKyAgICAgICAg
dWludDY0X3Qgc3BhY2VSZXF1ZXN0ZWQ7CisgICAgICAgIFJlcXVlc3RDYWxsYmFjayBjYWxsYmFj
azsKKyAgICAgICAgUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyIGlkZW50aWZpZXI7Cisg
ICAgfTsKKyAgICBEZXF1ZTxSZXF1ZXN0PiBtX3JlcXVlc3RzOworICAgIHN0ZDo6b3B0aW9uYWw8
UmVxdWVzdD4gbV9jdXJyZW50UmVxdWVzdDsKKyAgICBib29sIG1faXNIYW5kbGluZ1JlcXVlc3Rz
IHsgZmFsc2UgfTsKKyAgICB1aW50NjRfdCBtX3F1b3RhQ291bnRkb3duIHsgMCB9OworICAgIHVp
bnQ2NF90IG1fcXVvdGE7CisgICAgdWludDY0X3QgbV9pbml0aWFsUXVvdGE7IC8vIFRlc3Qgb25s
eS4KKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBtX3VzYWdlOworICAgIEdldFVzYWdlRnVu
Y3Rpb24gbV9nZXRVc2FnZUZ1bmN0aW9uOworICAgIEluY3JlYXNlUXVvdGFGdW5jdGlvbiBtX2lu
Y3JlYXNlUXVvdGFGdW5jdGlvbjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggN2ViZmE1MTZiNTAzMzZkMzY4
N2Y3ZWNkZDE3ZThlN2ViZDFjZDlkNy4uNjQ1M2E5ZDI5MDIzMjdlZmJiMWEwMTUzNzk2YjM2ZWFj
NTg2NmE4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdl
cy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0y
ODcsNiArMjg3LDcgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQo
KToKICAgICAgICAgJ1dlYkNvcmU6Ok5hdGl2ZUltYWdlUmVmZXJlbmNlJywKICAgICAgICAgJ1dl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlBsYXliYWNrVGFyZ2V0
Q2xpZW50Q29udGV4dElkZW50aWZpZXInLAorICAgICAgICAnV2ViS2l0OjpRdW90YUluY3JlYXNl
UmVxdWVzdElkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6UGx1Z2luTG9hZENsaWVudFBv
bGljeScsCiAgICAgICAgICdXZWJDb3JlOjpQb2ludGVySUQnLAogICAgICAgICAnV2ViQ29yZTo6
UHVzaFN1YnNjcmlwdGlvbklkZW50aWZpZXInLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2Vic2l0ZURhdGEvUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLmggYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9RdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZp
ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iZTQ1NGI2YTA4YjY4YTIwYzY1MGRjODk3NjMyODU1OGEzNzIwMWY1
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGEvUXVv
dGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLmgKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVy
VHlwZSB7IH07Cit1c2luZyBRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIgPSBPYmplY3RJ
ZGVudGlmaWVyPFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllclR5cGU+OworCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVE
YXRhU3RvcmVQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0
b3JlUGFyYW1ldGVycy5oCmluZGV4IDE1M2JmOTNiZGY2ZmYxMWI0NjBmNjQ4MjViNDUwMzA4Yjg0
NWQzOGQuLjIwOTg0NjgxNjI5OTA0NzMzODg0Y2ZjYjEyN2FhNTcyMWQyY2VlODkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmgKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaApAQCAt
NzEsOCArNzEsOCBAQCBzdHJ1Y3QgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgewogICAgIFN0
cmluZyBnZW5lcmFsU3RvcmFnZURpcmVjdG9yeTsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUgZ2VuZXJhbFN0b3JhZ2VEaXJlY3RvcnlIYW5kbGU7CiAKLSAgICB1aW50NjRfdCBwZXJPcmln
aW5TdG9yYWdlUXVvdGEgeyBXZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2VyOjpkZWZhdWx0UXVv
dGEoKSB9OwotICAgIHVpbnQ2NF90IHBlclRoaXJkUGFydHlPcmlnaW5TdG9yYWdlUXVvdGEgeyBX
ZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2VyOjpkZWZhdWx0VGhpcmRQYXJ0eVF1b3RhKCkgfTsK
KyAgICB1aW50NjRfdCBwZXJPcmlnaW5TdG9yYWdlUXVvdGE7CisgICAgdWludDY0X3QgcGVyVGhp
cmRQYXJ0eU9yaWdpblN0b3JhZ2VRdW90YTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291
cmNlcy50eHQKaW5kZXggNTdlZjNiMTRlYWYyYzEwOTIwOThlZTk0MzJmNTA4YzYxMWU1OGUzNS4u
NmE2NjliYjAwZWMxYTk2YWVmYTYzZDQ4YjE3ZWI0MjVlMGZlN2U3MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBA
IC0xNDQsMTAgKzE0NCwxNCBAQCBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgQG5vLXVuaWZ5CiBOZXR3b3JrUHJvY2Vzcy9zdG9y
YWdlL0ZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlci5jcHAKIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2Uv
RmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGUuY3BwCiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVT
eXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnkuY3BwCitOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lE
QlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQuY3BwCitOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lE
QlN0b3JhZ2VNYW5hZ2VyLmNwcAorTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlUmVn
aXN0cnkuY3BwCiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0xvY2FsU3RvcmFnZU1hbmFnZXIuY3Bw
CiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL01lbW9yeVN0b3JhZ2VBcmVhLmNwcAogTmV0d29ya1By
b2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwCiBOZXR3b3JrUHJvY2Vzcy9z
dG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2VyLmNwcAorTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9R
dW90YU1hbmFnZXIuY3BwCiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1NRTGl0ZVN0b3JhZ2VBcmVh
LmNwcAogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TZXNzaW9uU3RvcmFnZU1hbmFnZXIuY3BwCiBO
ZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1N0b3JhZ2VBcmVhQmFzZS5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmlu
ZGV4IGE2NzgzNjdhNzc1YTQ5YmE4MWIyNDg4Y2YzMWVhYjlkY2NjY2M5MjEuLjE5NTQ2Mjc4Nzdk
ODRjYTA4YjU3MjAwY2M4NjJlOTNkMjMzMDQzNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTQ5NSw2
ICsxNDk1LDE2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVxdWVzdFN0b3JhZ2VTcGFj
ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFdlCiAgICAgfSk7CiB9CiAKK3ZvaWQg
TmV0d29ya1Byb2Nlc3NQcm94eTo6aW5jcmVhc2VRdW90YShQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBRdW90YUluY3JlYXNlUmVx
dWVzdElkZW50aWZpZXIgaWRlbnRpZmllciwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRf
dCBjdXJyZW50VXNhZ2UsIHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkKQoreworICAgIHJlcXVlc3RT
dG9yYWdlU3BhY2Uoc2Vzc2lvbklELCBvcmlnaW4sIGN1cnJlbnRRdW90YSwgY3VycmVudFVzYWdl
LCBzcGFjZVJlcXVlc3RlZCwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHNl
c3Npb25JRCwgb3JpZ2luLCBpZGVudGlmaWVyXShhdXRvIHJlc3VsdCkgbXV0YWJsZSB7CisgICAg
ICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgc2VuZChN
ZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkRpZEluY3JlYXNlUXVvdGEoc2Vzc2lvbklELCBvcmln
aW4sIGlkZW50aWZpZXIsIHJlc3VsdCksIDApOworICAgIH0pOworfQorCiB2b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6OnJlZ2lzdGVyU2NoZW1lRm9yTGVnYWN5Q3VzdG9tUHJvdG9jb2woY29uc3Qg
U3RyaW5nJiBzY2hlbWUpCiB7CiAjaWYgRU5BQkxFKExFR0FDWV9DVVNUT01fUFJPVE9DT0xfTUFO
QUdFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmgKaW5kZXggYTRlMzY0NWViYWFlMzM2ZDE4MGI1NDE0YmFmYWEzNWQ4M2Y5
MThjNC4uMjQxZjhlNDlkNWViZjkyNGQ1NzQxMjgwODlmMTBjMmQ4ZWJkZTlkZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJQcm9jZXNzTGF1bmNoZXIuaCIKICNpbmNs
dWRlICJQcm9jZXNzVGhyb3R0bGVyLmgiCiAjaW5jbHVkZSAiUHJvY2Vzc1Rocm90dGxlckNsaWVu
dC5oIgorI2luY2x1ZGUgIlF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllci5oIgogI2luY2x1
ZGUgIlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJXZWJQcm9j
ZXNzUHJveHlNZXNzYWdlc1JlcGxpZXMuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgi
CkBAIC0zNDAsNiArMzQxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHRyaWdnZXJCcm93c2luZ0Nv
bnRleHRHcm91cFN3aXRjaEZvck5hdmlnYXRpb24oV2ViUGFnZVByb3h5SWRlbnRpZmllciwgdWlu
dDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERl
Y2lzaW9uLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVzcG9uc2VEb21haW4s
IE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyIGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9h
ZElkZW50aWZpZXJUb1Jlc3VtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIHN1Y2Nlc3Mp
PiYmKTsKIAogICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VTcGFjZShQQUw6OlNlc3Npb25JRCwgY29u
c3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgdWludDY0X3QgcXVvdGEsIHVpbnQ2NF90IGN1cnJl
bnRTaXplLCB1aW50NjRfdCBzcGFjZVJlcXVpcmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0
ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHF1b3RhKT4mJik7CisgICAgdm9pZCBpbmNyZWFzZVF1b3Rh
KFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBRdW90YUluY3Jl
YXNlUmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgY3Vy
cmVudFVzYWdlLCB1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCk7CiAKICAgICBXZWJzaXRlRGF0YVN0
b3JlKiB3ZWJzaXRlRGF0YVN0b3JlRnJvbVNlc3Npb25JRChQQUw6OlNlc3Npb25JRCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgppbmRleCAxMmQwNmNlYmQ2MmFmMTc1MGU3ODg1NTlj
MTNhMWIzOTgzZmRkMmJhLi42OGMzMmM0ZjMxZWExYTE4ZTgzMDA0NDMyN2Q1MGI4NDI5NTM2NDEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC02OCw2ICs2OCw3IEBAIG1lc3Nh
Z2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIgewogI2VuZGlmCiAKICAg
ICBSZXF1ZXN0U3RvcmFnZVNwYWNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RydWN0IFdl
YkNvcmU6OkNsaWVudE9yaWdpbiBvcmlnaW4sIHVpbnQ2NF90IHF1b3RhLCB1aW50NjRfdCBjdXJy
ZW50U2l6ZSwgdWludDY0X3Qgc3BhY2VSZXF1aXJlZCkgLT4gKHN0ZDo6b3B0aW9uYWw8dWludDY0
X3Q+IG5ld1F1b3RhKSBBc3luYworICAgIEluY3JlYXNlUXVvdGEoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBzdHJ1Y3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbiwgV2ViS2l0OjpRdW90
YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIgaWRlbnRpZmllciwgdWludDY0X3QgcXVvdGEsIHVp
bnQ2NF90IGN1cnJlbnRTaXplLCB1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCkKICAgICAKICAgICBS
ZXNvdXJjZUxvYWREaWRTZW5kUmVxdWVzdChXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIg
cGFnZUlkZW50aWZpZXIsIHN0cnVjdCBXZWJLaXQ6OlJlc291cmNlTG9hZEluZm8gcmVzb3VyY2VM
b2FkSW5mbywgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIHN0ZDo6b3B0aW9uYWw8
SVBDOjpGb3JtRGF0YVJlZmVyZW5jZT4gaHR0cEJvZHkpCiAgICAgUmVzb3VyY2VMb2FkRGlkUGVy
Zm9ybUhUVFBSZWRpcmVjdGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlk
ZW50aWZpZXIsIHN0cnVjdCBXZWJLaXQ6OlJlc291cmNlTG9hZEluZm8gcmVzb3VyY2VMb2FkSW5m
bywgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNvdXJjZVJlc3BvbnNlLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggMDhjZWNmZWJmZTBk
ZTQ0YjFmNWE0YjUwMTE0MDVlMWZkODE1MDlmZS4uMTMyOTA1NTcyZjRiOGMzZDA3OTU4MzQzMTQ4
YzJmYjU2ODNmZWZiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTE3MTYsNyArMTcxNiw3IEBAIHZv
aWQgV2Vic2l0ZURhdGFTdG9yZTo6ZGlzcGF0Y2hPblF1ZXVlKEZ1bmN0aW9uPHZvaWQoKT4mJiBm
dW5jdGlvbikKIHVpbnQ2NF90IFdlYnNpdGVEYXRhU3RvcmU6OnBlclRoaXJkUGFydHlPcmlnaW5T
dG9yYWdlUXVvdGEoKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBDb25zaWRlciB3aGV0aGVyIGFs
bG93aW5nIHRvIHNldCBhIHBlclRoaXJkUGFydHlPcmlnaW5TdG9yYWdlUXVvdGEgZnJvbSBhIFdl
YnNpdGVEYXRhU3RvcmUuCi0gICAgcmV0dXJuIFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6
OmRlZmF1bHRUaGlyZFBhcnR5UXVvdGFGcm9tUGVyT3JpZ2luUXVvdGEocGVyT3JpZ2luU3RvcmFn
ZVF1b3RhKCkpOworICAgIHJldHVybiBwZXJPcmlnaW5TdG9yYWdlUXVvdGEoKSAvIDEwOwogfQog
CiB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldENhY2hlTW9kZWxTeW5jaHJvbm91c2x5Rm9yVGVz
dGluZyhDYWNoZU1vZGVsIGNhY2hlTW9kZWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXggNmJjNjkzNjljMzM4
MzI4NjlkZWExZjVkYWE1MGU3OWZhYTZlN2JmOS4uODVlZTMxZTEzODNkOTdkNjQ2YzY5OGMyZGVm
N2Q5YzMzNGFiNzViZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaApAQCAtMzUwLDYgKzM1MCw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURp
cmVjdG9yeSgpOwogICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0SmF2YVNjcmlwdENvbmZp
Z3VyYXRpb25EaXJlY3RvcnkoKTsKICAgICBzdGF0aWMgYm9vbCBodHRwM0VuYWJsZWQoKTsKKyAg
ICBzdGF0aWMgY29uc3RleHByIHVpbnQ2NF90IGRlZmF1bHRQZXJPcmlnaW5RdW90YSgpIHsgcmV0
dXJuIDEwMDAgKiBNQjsgfQogCiAgICAgdm9pZCByZXNldFF1b3RhKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CiAgICAgdm9pZCBjbGVhclN0b3JhZ2UoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcAppbmRleCBi
ZWE3NTc5Y2RmY2UwNzhiNjc1NDhhMWQwMWRiZjdhNDdmNmY3YTg5Li5hOTYyMjZmYjI0NjQ2MTdi
YTVjYjUxYTI1NGJlOTEyMDJkZDU5MWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24uY3BwCkBAIC0zMyw2ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBXZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24o
SXNQZXJzaXN0ZW50IGlzUGVyc2lzdGVudCwgV2lsbENvcHlQYXRoc0Zyb21FeGlzdGluZ0NvbmZp
Z3VyYXRpb24gd2lsbENvcHlQYXRocykKICAgICA6IG1faXNQZXJzaXN0ZW50KGlzUGVyc2lzdGVu
dCkKKyAgICAsIG1fcGVyT3JpZ2luU3RvcmFnZVF1b3RhKFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRQZXJPcmlnaW5RdW90YSgpKQogewogICAgIGlmIChpc1BlcnNpc3RlbnQgPT0gSXNQZXJzaXN0
ZW50OjpZZXMgJiYgd2lsbENvcHlQYXRocyA9PSBXaWxsQ29weVBhdGhzRnJvbUV4aXN0aW5nQ29u
ZmlndXJhdGlvbjo6Tm8pIHsKICAgICAgICAgc2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeShX
ZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCmluZGV4IGYxNzFhZDRjZTVlMWI1Y2Ux
Mzk0ZWM3ODA5NTI0MTA3ZjgyYzE3NGEuLjMwYTI5OTMxMDIyN2QyZjcyNGY0MjU3NmI2NjEyNTQ3
Yjk2MWNmMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaApAQCAtMjYs
NyArMjYsNiBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKLSNpbmNs
dWRlIDxXZWJDb3JlL1N0b3JhZ2VRdW90YU1hbmFnZXIuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTIwNyw3ICsyMDYsNyBAQCBw
cml2YXRlOgogCiAgICAgU3RyaW5nIG1fY2FjaGVTdG9yYWdlRGlyZWN0b3J5OwogICAgIFN0cmlu
ZyBtX2dlbmVyYWxTdG9yYWdlRGlyZWN0b3J5OwotICAgIHVpbnQ2NF90IG1fcGVyT3JpZ2luU3Rv
cmFnZVF1b3RhIHsgV2ViQ29yZTo6U3RvcmFnZVF1b3RhTWFuYWdlcjo6ZGVmYXVsdFF1b3RhKCkg
fTsKKyAgICB1aW50NjRfdCBtX3Blck9yaWdpblN0b3JhZ2VRdW90YTsKICAgICBTdHJpbmcgbV9u
ZXR3b3JrQ2FjaGVEaXJlY3Rvcnk7CiAgICAgU3RyaW5nIG1fYXBwbGljYXRpb25DYWNoZURpcmVj
dG9yeTsKICAgICBTdHJpbmcgbV9hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlO
YW1lIHsgIkZpbGVzIl9zIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCBhNTZmNzAzMWRmMTI0NGQyMjU1ZmI1ZWZlYTU2YThjMWU2NTkx
OWMwLi5iNGIzMjNmNWUwMjIwODFhZTlkYTI3OGFkMTNjMTdiOWU0NjgzNjU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0NjgsNiAr
MTQ2OCwxMSBAQAogCQk5M0IyNjE0RDIyN0QxNDlFMDBCOTdBNzYgLyogU3RvcmFnZU1hbmFnZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjI2MTQ5
MjI3RDE0NzIwMEI5N0E3NiAvKiBTdG9yYWdlTWFuYWdlci5oICovOyB9OwogCQk5M0IyNjE0RTIy
N0QxNEIxMDBCOTdBNzYgLyogTG9jYWxTdG9yYWdlRGF0YWJhc2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjI2MTQ1MjI3RDE0NzAwMEI5N0E3NiAv
KiBMb2NhbFN0b3JhZ2VEYXRhYmFzZS5oICovOyB9OwogCQk5M0IyNjE0RjIyN0QxNEIxMDBCOTdB
NzYgLyogTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0IyNjE0NjIyN0QxNDcxMDBCOTdBNzYgLyogTG9j
YWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmggKi87IH07CisJCTkzQjYzMUU1MjdBQkE2MjgwMDQ0
M0E0NCAvKiBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0I2MzFFNDI3QUJBNjI3MDA0NDNBNDQgLyog
SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5oICovOyB9OworCQk5M0I2MzFFODI3QUJBNjVE
MDA0NDNBNDQgLyogSURCU3RvcmFnZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjYzMUU2MjdBQkE2NUMwMDQ0M0E0NCAvKiBJREJTdG9y
YWdlTWFuYWdlci5oICovOyB9OworCQk5M0I2MzFFRDI3QUJBNkI0MDA0NDNBNDQgLyogSURCU3Rv
cmFnZVJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5M0I2MzFFQjI3QUJBNkIzMDA0NDNBNDQgLyogSURCU3RvcmFnZVJlZ2lzdHJ5LmggKi87
IH07CisJCTkzQjYzMUYxMjdBQkFDQTkwMDQ0M0E0NCAvKiBRdW90YU1hbmFnZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjYzMUVGMjdBQkFDQTkw
MDQ0M0E0NCAvKiBRdW90YU1hbmFnZXIuaCAqLzsgfTsKKwkJOTNCNjMxRjMyN0FCQUQ4MDAwNDQz
QTQ0IC8qIFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCNjMxRjIyN0FCQUQ3RjAwNDQzQTQ0IC8q
IFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllci5oICovOyB9OwogCQk5M0JERUIwMTE3MURE
N0FGMDBCRkVFMUIgLyogV0tQYWdlTG9hZFR5cGVzUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCREVCMDAxNzFERDdBRjAwQkZFRTFCIC8q
IFdLUGFnZUxvYWRUeXBlc1ByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk5M0Q2Qjc3MjI1NEJCNTE5MDA1OEREM0EgLyogU3BlZWNoUmVj
b2duaXRpb25TZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDkzRDZCNzZDMjU0Qjg5NTgwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblNlcnZl
ci5oICovOyB9OwogCQk5M0Q2Qjc3MzI1NEJCOEM3MDA1OEREM0EgLyogV2ViU3BlZWNoUmVjb2du
aXRpb25Db25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5M0Q2Qjc2ODI1NEI3QkM2MDA1OEREM0EgLyogV2ViU3BlZWNoUmVjb2duaXRpb25D
b25uZWN0aW9uLmggKi87IH07CkBAIC01MzUwLDYgKzUzNTUsMTUgQEAKIAkJOTNCMjYxNDkyMjdE
MTQ3MjAwQjk3QTc2IC8qIFN0b3JhZ2VNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFN0b3JhZ2VNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTkzQjI2MTRBMjI3RDE0NzIwMEI5N0E3NiAvKiBTdG9yYWdlTWFuYWdlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdG9yYWdlTWFuYWdlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQjI2MTRDMjI3RDE0NzIwMEI5N0E3NiAvKiBMb2NhbFN0
b3JhZ2VEYXRhYmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBM
b2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkz
QjYzMUUzMjdBQkE1RjcwMDQ0M0E0NCAvKiBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0I2MzFFNDI3QUJBNjI3MDA0NDNBNDQgLyog
SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTkzQjYzMUU2MjdBQkE2NUMwMDQ0M0E0NCAvKiBJREJTdG9yYWdlTWFuYWdl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJREJTdG9yYWdlTWFuYWdlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0I2MzFFNzI3QUJBNjVDMDA0NDNBNDQg
LyogSURCU3RvcmFnZU1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSURCU3RvcmFnZU1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk5M0I2MzFFQTI3QUJBNkIyMDA0NDNBNDQgLyogSURCU3RvcmFnZVJlZ2lzdHJ5LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElEQlN0b3JhZ2VSZWdpc3RyeS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzQjYzMUVCMjdBQkE2QjMwMDQ0M0E0NCAv
KiBJREJTdG9yYWdlUmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SURCU3RvcmFnZVJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzQjYz
MUVFMjdBQkFDQTgwMDQ0M0E0NCAvKiBRdW90YU1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUXVvdGFNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJOTNCNjMxRUYyN0FCQUNBOTAwNDQzQTQ0IC8qIFF1b3RhTWFuYWdlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBRdW90YU1hbmFnZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNCNjMxRjIyN0FCQUQ3RjAwNDQzQTQ0IC8qIFF1b3RhSW5j
cmVhc2VSZXF1ZXN0SWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTNCQTA0REEyMTUxQURGMzAwN0Y0NTVGIC8qIFdlYlNXU2VydmVyQ29ubmVjdGlv
bi5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJTV1NlcnZlckNvbm5lY3Rp
b24ubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQkEwNERCMjE1
MUFERjMwMDdGNDU1RiAvKiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQkEwNERDMjE1MUFERjMwMDdGNDU1
RiAvKiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmlu
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzU1NSw2ICs3NTY5LDcgQEAKIAkJMUFC
RjQzNzgxQTM2ODAzNTAwM0ZCMEU2IC8qIFdlYnNpdGVEYXRhICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk5M0I2MzFGMjI3QUJBRDdGMDA0NDNBNDQgLyog
UXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLmggKi8sCiAJCQkJMUE0ODMyRDQxQTlDREY5
NjAwOEI0REZFIC8qIFdlYnNpdGVEYXRhLmNwcCAqLywKIAkJCQkxQTQ4MzJENTFBOUNERjk2MDA4
QjRERkUgLyogV2Vic2l0ZURhdGEuaCAqLywKIAkJCQkxQTI4QjhDQjFDODBFRDU5MDA2RkQ3NDMg
LyogV2Vic2l0ZURhdGFGZXRjaE9wdGlvbi5oICovLApAQCAtMTA0MDEsNiArMTA0MTYsMTIgQEAK
IAkJCQk5MzVCNTc5ODI2RjUxMjcwMDA4QjQ4QUMgLyogRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVS
ZWdpc3RyeS5oICovLAogCQkJCTkzMUEwNzUxMjZGMDYzMTAwMDQ0NzRDRCAvKiBGaWxlU3lzdGVt
U3RvcmFnZU1hbmFnZXIuY3BwICovLAogCQkJCTkzMUEwNzUwMjZGMDYzMTAwMDQ0NzRDRCAvKiBG
aWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIuaCAqLywKKwkJCQk5M0I2MzFFMzI3QUJBNUY3MDA0NDNB
NDQgLyogSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5jcHAgKi8sCisJCQkJOTNCNjMxRTQy
N0FCQTYyNzAwNDQzQTQ0IC8qIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQuaCAqLywKKwkJ
CQk5M0I2MzFFNzI3QUJBNjVDMDA0NDNBNDQgLyogSURCU3RvcmFnZU1hbmFnZXIuY3BwICovLAor
CQkJCTkzQjYzMUU2MjdBQkE2NUMwMDQ0M0E0NCAvKiBJREJTdG9yYWdlTWFuYWdlci5oICovLAor
CQkJCTkzQjYzMUVBMjdBQkE2QjIwMDQ0M0E0NCAvKiBJREJTdG9yYWdlUmVnaXN0cnkuY3BwICov
LAorCQkJCTkzQjYzMUVCMjdBQkE2QjMwMDQ0M0E0NCAvKiBJREJTdG9yYWdlUmVnaXN0cnkuaCAq
LywKIAkJCQk5M0U3OTlDOTI3NjA0OTdBMDA3NDAwOEEgLyogTG9jYWxTdG9yYWdlTWFuYWdlci5j
cHAgKi8sCiAJCQkJOTNFNzk5Q0IyNzYwNDk3QTAwNzQwMDhBIC8qIExvY2FsU3RvcmFnZU1hbmFn
ZXIuaCAqLywKIAkJCQk5M0U3OTlEODI3NjEyMTA4MDA3NDAwOEEgLyogTWVtb3J5U3RvcmFnZUFy
ZWEuY3BwICovLApAQCAtMTA0MTAsNiArMTA0MzEsOCBAQAogCQkJCTkzMDg1REM3MjZFMUM2RUUw
MDBFQzZBNyAvKiBOZXR3b3JrU3RvcmFnZU1hbmFnZXIubWVzc2FnZXMuaW4gKi8sCiAJCQkJOTMw
ODVEQzUyNkUxQzZDRjAwMEVDNkE3IC8qIE9yaWdpblN0b3JhZ2VNYW5hZ2VyLmNwcCAqLywKIAkJ
CQk5MzA4NURDNjI2RTFDNkNGMDAwRUM2QTcgLyogT3JpZ2luU3RvcmFnZU1hbmFnZXIuaCAqLywK
KwkJCQk5M0I2MzFFRTI3QUJBQ0E4MDA0NDNBNDQgLyogUXVvdGFNYW5hZ2VyLmNwcCAqLywKKwkJ
CQk5M0I2MzFFRjI3QUJBQ0E5MDA0NDNBNDQgLyogUXVvdGFNYW5hZ2VyLmggKi8sCiAJCQkJOTNF
Nzk5Q0MyNzYwNDk3QjAwNzQwMDhBIC8qIFNlc3Npb25TdG9yYWdlTWFuYWdlci5jcHAgKi8sCiAJ
CQkJOTNFNzk5Q0EyNzYwNDk3QTAwNzQwMDhBIC8qIFNlc3Npb25TdG9yYWdlTWFuYWdlci5oICov
LAogCQkJCTkzRTc5OUQzMjc2MTIxMDcwMDc0MDA4QSAvKiBTUUxpdGVTdG9yYWdlQXJlYS5jcHAg
Ki8sCkBAIC0xMzAxOCw2ICsxMzA0MSw5IEBACiAJCQkJMzEyQ0M5RjIyMTVCMDZGMTAwREU0MENB
IC8qIEhpZ2hQZXJmb3JtYW5jZUdQVU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzOUEy
RjMyMUUyMDY3NDUwMDM5MDU3RSAvKiBIaWdoUGVyZm9ybWFuY2VHcmFwaGljc1VzYWdlU2FtcGxl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFDMEM5NzQxRERENzYwMDAwMzJDQUQzIC8qIEljb25M
b2FkaW5nRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTkzQjYzMUU1MjdBQkE2MjgwMDQ0
M0E0NCAvKiBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJ
CQk5M0I2MzFFODI3QUJBNjVEMDA0NDNBNDQgLyogSURCU3RvcmFnZU1hbmFnZXIuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTkzQjYzMUVEMjdBQkE2QjQwMDQ0M0E0NCAvKiBJREJTdG9yYWdlUmVnaXN0
cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRTM1MUNCMTgwRjJDQ0MwMEU1M0JFOSAvKiBJREJV
dGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQ0Y2QjI1MTJDOTNFN0EwMDhGOUMzNSAv
KiBJbWFnZU9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMUVDNjlFMTg3MjA5MjEwMEI5
NTFGMCAvKiBJbXBvcnRhbmNlQXNzZXJ0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTEzMjI5LDYg
KzEzMjU1LDggQEAKIAkJCQlBMUU2ODg3MDFGNkUyQkFCMDA3MDA2QTYgLyogUXVhcmFudGluZVNQ
SS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEwQzIyN0UyNDUxMTMwQTAwRUQ2MTREIC8qIFF1aWNr
TG9va1RodW1ibmFpbGluZ1NvZnRMaW5rLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUVFNTcyNTI0
MDlGMTQyMDAyMDA1RDYgLyogUXVpY2tMb29rVGh1bWJuYWlsTG9hZGVyLmggaW4gSGVhZGVycyAq
LywKKwkJCQk5M0I2MzFGMzI3QUJBRDgwMDA0NDNBNDQgLyogUXVvdGFJbmNyZWFzZVJlcXVlc3RJ
ZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk5M0I2MzFGMTI3QUJBQ0E5MDA0NDNBNDQg
LyogUXVvdGFNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0I2QUU0NDI2MDk3OTlDMDBC
NkVENUEgLyogUmVhc29uU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0ZEMzE4MjIyQjM1MTVF
MDA4RDBFOEIgLyogUmVkaXJlY3RTT0F1dGhvcml6YXRpb25TZXNzaW9uLmggaW4gSGVhZGVycyAq
LywKIAkJCQk5QjEyMjlEMjIzRkYyQkNDMDA4Q0E3NTEgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlv
bklkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNv
bm5lY3Rpb25Ub1NlcnZlci5jcHAKaW5kZXggMDRjMjQxMGYzNWFkY2MwNDZjNTQwNmFmMGNjZTJm
ZDBlODQxYWRiMC4uZDc5MDE2OWJlMGY1OGUzMDFlZGJlNDRjMDQ0Yzc4MzkxZWY0NzQ1MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2Vi
SURCQ29ubmVjdGlvblRvU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
RGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwCkBAIC0yOSw5
ICsyOSw5IEBACiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJOZXR3b3JrU3RvcmFnZU1hbmFnZXJNZXNzYWdlcy5o
IgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYklEQlJl
c3VsdC5oIgotI2luY2x1ZGUgIldlYklEQlNlcnZlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2Vi
UHJvY2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSURCQ29ubmVjdGlvblRvU2VydmVyLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9JREJDdXJzb3JJbmZvLmg+CkBAIC04MiwxMzIgKzgyLDEzMiBAQCBJ
REJDbGllbnQ6OklEQkNvbm5lY3Rpb25Ub1NlcnZlciYgV2ViSURCQ29ubmVjdGlvblRvU2VydmVy
Ojpjb3JlQ29ubmVjdGlvblRvU2VydgogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6
ZGVsZXRlRGF0YWJhc2UoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhKQogewotICAg
IHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6RGVsZXRlRGF0YWJhc2UocmVxdWVzdERhdGEp
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkRlbGV0ZURhdGFi
YXNlKHJlcXVlc3REYXRhKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpv
cGVuRGF0YWJhc2UoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhKQogewotICAgIHNl
bmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6T3BlbkRhdGFiYXNlKHJlcXVlc3REYXRhKSk7Cisg
ICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpPcGVuRGF0YWJhc2UocmVx
dWVzdERhdGEpKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmFib3J0VHJh
bnNhY3Rpb24oY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZp
ZXIpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyOjpBYm9ydFRyYW5zYWN0aW9u
KHRyYW5zYWN0aW9uSWRlbnRpZmllcikpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9y
YWdlTWFuYWdlcjo6QWJvcnRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbklkZW50aWZpZXIpKTsKIH0K
IAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmNvbW1pdFRyYW5zYWN0aW9uKGNvbnN0
IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBw
ZW5kaW5nUmVxdWVzdENvdW50KQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6
Q29tbWl0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZGVudGlmaWVyLCBwZW5kaW5nUmVxdWVzdENv
dW50KSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpDb21taXRU
cmFuc2FjdGlvbih0cmFuc2FjdGlvbklkZW50aWZpZXIsIHBlbmRpbmdSZXF1ZXN0Q291bnQpKTsK
IH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRpZEZpbmlzaEhhbmRsaW5nVmVy
c2lvbkNoYW5nZVRyYW5zYWN0aW9uKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZp
ZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKQog
ewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6RGlkRmluaXNoSGFuZGxpbmdWZXJz
aW9uQ2hhbmdlVHJhbnNhY3Rpb24oZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgdHJhbnNh
Y3Rpb25JZGVudGlmaWVyKSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5h
Z2VyOjpEaWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbihkYXRhYmFzZUNv
bm5lY3Rpb25JZGVudGlmaWVyLCB0cmFuc2FjdGlvbklkZW50aWZpZXIpKTsKIH0KIAogdm9pZCBX
ZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVl
c3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiBpbmZvKQogewot
ICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6Q3JlYXRlT2JqZWN0U3RvcmUocmVxdWVz
dERhdGEsIGluZm8pKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6
OkNyZWF0ZU9iamVjdFN0b3JlKHJlcXVlc3REYXRhLCBpbmZvKSk7CiB9CiAKIHZvaWQgV2ViSURC
Q29ubmVjdGlvblRvU2VydmVyOjpkZWxldGVPYmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0
YSYgcmVxdWVzdERhdGEsIGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lKQogewotICAgIHNl
bmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6RGVsZXRlT2JqZWN0U3RvcmUocmVxdWVzdERhdGEs
IG9iamVjdFN0b3JlTmFtZSkpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFu
YWdlcjo6RGVsZXRlT2JqZWN0U3RvcmUocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlTmFtZSkpOwog
fQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6cmVuYW1lT2JqZWN0U3RvcmUoY29u
c3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJ
REJTZXJ2ZXI6OlJlbmFtZU9iamVjdFN0b3JlKHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50
aWZpZXIsIG5ld05hbWUpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFn
ZXI6OlJlbmFtZU9iamVjdFN0b3JlKHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIs
IG5ld05hbWUpKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmNsZWFyT2Jq
ZWN0U3RvcmUoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCB1aW50NjRfdCBvYmpl
Y3RTdG9yZUlkZW50aWZpZXIpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyOjpD
bGVhck9iamVjdFN0b3JlKHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIpKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkNsZWFyT2JqZWN0U3RvcmUo
cmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmllcikpOwogfQogCiB2b2lkIFdlYklEQkNv
bm5lY3Rpb25Ub1NlcnZlcjo6Y3JlYXRlSW5kZXgoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVl
c3REYXRhLCBjb25zdCBJREJJbmRleEluZm8mIGluZm8pCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6
V2ViSURCU2VydmVyOjpDcmVhdGVJbmRleChyZXF1ZXN0RGF0YSwgaW5mbykpOworICAgIHNlbmQo
TWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Q3JlYXRlSW5kZXgocmVxdWVzdERhdGEs
IGluZm8pKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRlbGV0ZUluZGV4
KGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgdWludDY0X3Qgb2JqZWN0U3RvcmVJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGluZGV4TmFtZSkKIHsKLSAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJJREJTZXJ2ZXI6OkRlbGV0ZUluZGV4KHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50
aWZpZXIsIGluZGV4TmFtZSkpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFu
YWdlcjo6RGVsZXRlSW5kZXgocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5k
ZXhOYW1lKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpyZW5hbWVJbmRl
eChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIHVpbnQ2NF90IG9iamVjdFN0b3Jl
SWRlbnRpZmllciwgdWludDY0X3QgaW5kZXhJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05h
bWUpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyOjpSZW5hbWVJbmRleChyZXF1
ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleElkZW50aWZpZXIsIG5ld05hbWUp
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OlJlbmFtZUluZGV4
KHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4SWRlbnRpZmllciwgbmV3
TmFtZSkpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6cHV0T3JBZGQoY29u
c3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXlEYXRhJiBrZXlEYXRh
LCBjb25zdCBJREJWYWx1ZSYgdmFsdWUsIGNvbnN0IEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVy
d3JpdGVNb2RlIG1vZGUpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyOjpQdXRP
ckFkZChyZXF1ZXN0RGF0YSwga2V5RGF0YSwgdmFsdWUsIG1vZGUpKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OlB1dE9yQWRkKHJlcXVlc3REYXRhLCBrZXlEYXRh
LCB2YWx1ZSwgbW9kZSkpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Z2V0
UmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCR2V0UmVj
b3JkRGF0YSYgZ2V0UmVjb3JkRGF0YSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2
ZXI6OkdldFJlY29yZChyZXF1ZXN0RGF0YSwgZ2V0UmVjb3JkRGF0YSkpOworICAgIHNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6R2V0UmVjb3JkKHJlcXVlc3REYXRhLCBnZXRS
ZWNvcmREYXRhKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpnZXRBbGxS
ZWNvcmRzKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCR2V0QWxs
UmVjb3Jkc0RhdGEmIGdldEFsbFJlY29yZHNEYXRhKQogewotICAgIHNlbmQoTWVzc2FnZXM6Oldl
YklEQlNlcnZlcjo6R2V0QWxsUmVjb3JkcyhyZXF1ZXN0RGF0YSwgZ2V0QWxsUmVjb3Jkc0RhdGEp
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkdldEFsbFJlY29y
ZHMocmVxdWVzdERhdGEsIGdldEFsbFJlY29yZHNEYXRhKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29u
bmVjdGlvblRvU2VydmVyOjpnZXRDb3VudChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERh
dGEsIGNvbnN0IElEQktleVJhbmdlRGF0YSYgcmFuZ2UpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6
V2ViSURCU2VydmVyOjpHZXRDb3VudChyZXF1ZXN0RGF0YSwgcmFuZ2UpKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkdldENvdW50KHJlcXVlc3REYXRhLCByYW5n
ZSkpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGVsZXRlUmVjb3JkKGNv
bnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBy
YW5nZSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OkRlbGV0ZVJlY29yZChy
ZXF1ZXN0RGF0YSwgcmFuZ2UpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1h
bmFnZXI6OkRlbGV0ZVJlY29yZChyZXF1ZXN0RGF0YSwgcmFuZ2UpKTsKIH0KIAogdm9pZCBXZWJJ
REJDb25uZWN0aW9uVG9TZXJ2ZXI6Om9wZW5DdXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEmIHJl
cXVlc3REYXRhLCBjb25zdCBJREJDdXJzb3JJbmZvJiBpbmZvKQogewotICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYklEQlNlcnZlcjo6T3BlbkN1cnNvcihyZXF1ZXN0RGF0YSwgaW5mbykpOworICAgIHNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6T3BlbkN1cnNvcihyZXF1ZXN0RGF0
YSwgaW5mbykpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6aXRlcmF0ZUN1
cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkl0ZXJhdGVD
dXJzb3JEYXRhJiBkYXRhKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6SXRl
cmF0ZUN1cnNvcihyZXF1ZXN0RGF0YSwgZGF0YSkpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdv
cmtTdG9yYWdlTWFuYWdlcjo6SXRlcmF0ZUN1cnNvcihyZXF1ZXN0RGF0YSwgZGF0YSkpOwogfQog
CiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZXN0YWJsaXNoVHJhbnNhY3Rpb24odWlu
dDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCVHJhbnNhY3Rpb25J
bmZvJiBpbmZvKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6RXN0YWJsaXNo
VHJhbnNhY3Rpb24oZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgaW5mbykpOworICAgIHNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6RXN0YWJsaXNoVHJhbnNhY3Rpb24o
ZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgaW5mbykpOwogfQogCiB2b2lkIFdlYklEQkNv
bm5lY3Rpb25Ub1NlcnZlcjo6ZGF0YWJhc2VDb25uZWN0aW9uUGVuZGluZ0Nsb3NlKHVpbnQ2NF90
IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2Vi
SURCU2VydmVyOjpEYXRhYmFzZUNvbm5lY3Rpb25QZW5kaW5nQ2xvc2UoZGF0YWJhc2VDb25uZWN0
aW9uSWRlbnRpZmllcikpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdl
cjo6RGF0YWJhc2VDb25uZWN0aW9uUGVuZGluZ0Nsb3NlKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50
aWZpZXIpKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRhdGFiYXNlQ29u
bmVjdGlvbkNsb3NlZCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKQogewot
ICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6RGF0YWJhc2VDb25uZWN0aW9uQ2xvc2Vk
KGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrU3RvcmFnZU1hbmFnZXI6OkRhdGFiYXNlQ29ubmVjdGlvbkNsb3NlZChkYXRhYmFzZUNvbm5l
Y3Rpb25JZGVudGlmaWVyKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjph
Ym9ydE9wZW5BbmRVcGdyYWRlTmVlZGVkKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50
aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVy
KQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6QWJvcnRPcGVuQW5kVXBncmFk
ZU5lZWRlZChkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCB0cmFuc2FjdGlvbklkZW50aWZp
ZXIpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkFib3J0T3Bl
bkFuZFVwZ3JhZGVOZWVkZWQoZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgdHJhbnNhY3Rp
b25JZGVudGlmaWVyKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpkaWRG
aXJlVmVyc2lvbkNoYW5nZUV2ZW50KHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZp
ZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0
IEluZGV4ZWREQjo6Q29ubmVjdGlvbkNsb3NlZE9uQmVoYWxmT2ZTZXJ2ZXIgY29ubmVjdGlvbkNs
b3NlZCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OkRpZEZpcmVWZXJzaW9u
Q2hhbmdlRXZlbnQoZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgcmVxdWVzdElkZW50aWZp
ZXIsIGNvbm5lY3Rpb25DbG9zZWQpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFn
ZU1hbmFnZXI6OkRpZEZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQoZGF0YWJhc2VDb25uZWN0aW9uSWRl
bnRpZmllciwgcmVxdWVzdElkZW50aWZpZXIsIGNvbm5lY3Rpb25DbG9zZWQpKTsKIH0KIAogdm9p
ZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6Om9wZW5EQlJlcXVlc3RDYW5jZWxsZWQoY29uc3Qg
SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklE
QlNlcnZlcjo6T3BlbkRCUmVxdWVzdENhbmNlbGxlZChyZXF1ZXN0RGF0YSkpOworICAgIHNlbmQo
TWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6T3BlbkRCUmVxdWVzdENhbmNlbGxlZChy
ZXF1ZXN0RGF0YSkpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Z2V0QWxs
RGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVx
dWVzdElkZW50aWZpZXIsIGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2luKQogewotICAgIHNlbmQo
TWVzc2FnZXM6OldlYklEQlNlcnZlcjo6R2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKHJl
cXVlc3RJZGVudGlmaWVyLCBvcmlnaW4pKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6OkdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhyZXF1ZXN0SWRlbnRp
Zmllciwgb3JpZ2luKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpkaWRE
ZWxldGVEYXRhYmFzZShjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvSW5Qcm9jZXNzSURCU2VydmVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCmluZGV4IGVhMmUy
YTc4Zjg4ZmZkZDEwMWEzYTEzN2YwZDVhMTBhNTZlMTBmYjIuLjBjYWRiNTA0MmJhMTYxMDc3Zjk0
NDlhOTczZGNmOTgzMmQzNzAyYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3Rv
cmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3Rv
cmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCkBAIC00Miw2ICs0Miw4IEBACiAKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCitzdGF0aWMgY29uc3RleHByIHVpbnQ2NF90IGRlZmF1bHRQZXJP
cmlnaW5RdW90YSA9ICAxMDAwICogTUI7CisKIFJlZjxJblByb2Nlc3NJREJTZXJ2ZXI+IEluUHJv
Y2Vzc0lEQlNlcnZlcjo6Y3JlYXRlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICBB
U1NFUlQoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpOwpAQCAtNzMsNyArNzUsNyBAQCBJblByb2Nl
c3NJREJTZXJ2ZXI6On5JblByb2Nlc3NJREJTZXJ2ZXIoKQogU3RvcmFnZVF1b3RhTWFuYWdlciog
SW5Qcm9jZXNzSURCU2VydmVyOjpxdW90YU1hbmFnZXIoY29uc3QgQ2xpZW50T3JpZ2luJiBvcmln
aW4pCiB7CiAgICAgcmV0dXJuIG1fcXVvdGFNYW5hZ2Vycy5lbnN1cmUob3JpZ2luLCBbXSB7Ci0g
ICAgICAgIHJldHVybiBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpjcmVhdGUoU3RvcmFnZVF1b3RhTWFu
YWdlcjo6ZGVmYXVsdFF1b3RhKCksIFtdIHsKKyAgICAgICAgcmV0dXJuIFN0b3JhZ2VRdW90YU1h
bmFnZXI6OmNyZWF0ZShkZWZhdWx0UGVyT3JpZ2luUXVvdGEsIFtdIHsKICAgICAgICAgICAgIHJl
dHVybiAwOwogICAgICAgICB9LCBbXSh1aW50NjRfdCBxdW90YSwgdWludDY0X3QgY3VycmVudFNw
YWNlLCB1aW50NjRfdCBzcGFjZUluY3JlYXNlLCBhdXRvIGNhbGxiYWNrKSB7CiAgICAgICAgICAg
ICBjYWxsYmFjayhxdW90YSArIGN1cnJlbnRTcGFjZSArIHNwYWNlSW5jcmVhc2UpOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDA2NDNlOTExMjM5
NGU3ZTBlOWFjMWRkZGFiNTAwNmE1MjY5YjI5OGQuLjNiOGE0ZDllMmE3NWMyNDQwMjE3YzkwMzU4
ODU1NzM5NDcxNmFjODkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAyMi0wMi0wNiAgU2lodWkgTGl1ICA8c2lodWlf
bGl1QGFwcGxlLmNvbT4KKworICAgICAgICBNYW5hZ2UgSW5kZXhlZERCIHN0b3JhZ2UgYnkgb3Jp
Z2luCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ5
MjUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg3NTU1MDE0PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9JbmRleGVkREJGaWxlTmFtZS5tbToKKyAgICAgICAgKHJ1blRlc3QpOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCUGVyc2lzdGVuY2Uu
bW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJT
dXNwZW5kSW1taW5lbnRseS5tbToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU3RvcmVCbG9iVGhlbkRlbGV0ZS5tbToKKyAgICAgICAg
KFRFU1QpOgorCisyMDIyLTAyLTAzICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgor
CisgICAgICAgIE1hbmFnZSBJbmRleGVkREIgc3RvcmFnZSBieSBvcmlnaW4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDkyNQorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vODc1NTUwMTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVXBkYXRlIGV4aXN0aW5nIHRlc3RzIGZvciBiZWhhdmlvciBjaGFuZ2Uu
CisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQkZp
bGVOYW1lLm1tOgorICAgICAgICAocnVuVGVzdCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJQZXJzaXN0ZW5jZS5tbToKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1N0b3JlQmxvYlRoZW5EZWxldGUubW06CisgICAg
ICAgIChURVNUKToKKwogMjAyMi0wMi0wMyAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBs
ZS5jb20+CiAKICAgICAgICAgW2dpdC13ZWJraXRdIENvbmZpZ3VyZSBkZWZhdWx0IGJyYW5jaCBt
YW5hZ2VtZW50IApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9JbmRleGVkREJGaWxlTmFtZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvSW5kZXhlZERCRmlsZU5hbWUubW0KaW5kZXggYTZiMDEyOWJjMTA1OWM0ZjljMTE4
ZDFmZDdlZmQyMTIzZWFjMmM3YS4uNDEwMjIyNGU0NTI3NGQzNjM3OWU0YmIwMDJhMGZlZTg5ODMy
ZjViYyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9J
bmRleGVkREJGaWxlTmFtZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0luZGV4ZWREQkZpbGVOYW1lLm1tCkBAIC03MSwyMCArNzEsMjMgQEAgc3RhdGljIHZv
aWQgcnVuVGVzdCgpCiAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBzdHJpbmcyID0gKE5TU3RyaW5n
ICopW2xhc3RTY3JpcHRNZXNzYWdlIGJvZHldOwogICAgIEVYUEVDVF9XS19TVFJFUShAIlN1Y2Nl
c3MiLCBzdHJpbmcyLmdldCgpKTsKIAotICAgIC8vIEZvciBkYXRhYmFzZSB0aGF0IGlzIG5vdCBv
cGVuZWQgYWZ0ZXIgdXBncmFkZSwgaXRzIGZpbGUgc2hvdWxkIGJlIGluIHYwLgorICAgIC8vIEFs
bCBkYXRhYmFzZXMgb2YgYW4gb3JpZ2luIGFyZSBtaWdyYXRlZCB0byBuZXcgdmVyc2lvbiBkaXJl
Y3Rvcnkgd2hlbiB0aGUgb3JpZ2luIGlzIGFjY2Vzc2VkLgogICAgIGF1dG8gZGVmYXVsdEZpbGVN
YW5hZ2VyID0gW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdOwogICAgIE5TU3RyaW5nICpl
eGlzdGluZ0RhdGFiYXNlTmFtZSA9IEAiSW5kZXhlZERCVGVzdCI7CiAgICAgTlNTdHJpbmcgKmNy
ZWF0ZWREYXRhYmFzZU5hbWUgPSBAIkluZGV4ZWREQk90aGVyIjsKICAgICBOU1N0cmluZyAqdW51
c2VkRGF0YWJhc2VOYW1lID0gQCJJbmRleGVkREJVbnVzZWQiOwogICAgIE5TU3RyaW5nICpleGlz
dGluZ0RhdGJhc2VIYXNoID0gV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0ZUhhc2hG
b3JGaWxlTmFtZShleGlzdGluZ0RhdGFiYXNlTmFtZSk7CiAgICAgTlNTdHJpbmcgKmNyZWF0ZWRE
YXRhYmFzZUhhc2ggPSBXZWJDb3JlOjpTUUxpdGVGaWxlU3lzdGVtOjpjb21wdXRlSGFzaEZvckZp
bGVOYW1lKGNyZWF0ZWREYXRhYmFzZU5hbWUpOworICAgIE5TU3RyaW5nICp1bnVzZWREYXRhYmFz
ZUhhc2ggPSBXZWJDb3JlOjpTUUxpdGVGaWxlU3lzdGVtOjpjb21wdXRlSGFzaEZvckZpbGVOYW1l
KGNyZWF0ZWREYXRhYmFzZU5hbWUpOwogICAgIE5TVVJMICppZGJSb290VVJMID0gW1tXS1dlYnNp
dGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5
XTsKICAgICBOU1VSTCAqb2xkVmVyc2lvbkRpcmVjdG9yeVVSTCA9IFtpZGJSb290VVJMIFVSTEJ5
QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAInYwIl07CiAgICAgTlNVUkwgKm5ld1ZlcnNpb25EaXJl
Y3RvcnlVUkwgPSBbaWRiUm9vdFVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJ2MSJd
OwogICAgIE5TVVJMICpvbGRWZXJzaW9uT3JpZ2luRGlyZWN0b3J5VVJMID0gW29sZFZlcnNpb25E
aXJlY3RvcnlVUkwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OiBAImZpbGVfXzAiXTsKICAg
ICBOU1VSTCAqbmV3VmVyc2lvbk9yaWdpbkRpcmVjdG9yeVVSTCA9IFtuZXdWZXJzaW9uRGlyZWN0
b3J5VVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDogQCJmaWxlX18wIl07CiAgICAgTlNV
UkwgKm9sZFZlcnNpb25VbnVzZWREYXRhYmFzZURpcmVjdG9yeVVSTCA9IFtvbGRWZXJzaW9uT3Jp
Z2luRGlyZWN0b3J5VVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDp1bnVzZWREYXRhYmFz
ZU5hbWVdOwotICAgIEVYUEVDVF9UUlVFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0g
ZmlsZUV4aXN0c0F0UGF0aDpvbGRWZXJzaW9uVW51c2VkRGF0YWJhc2VEaXJlY3RvcnlVUkwucGF0
aF0pOworICAgIE5TVVJMICpuZXdWZXJzaW9uVW51c2VkRGF0YWJhc2VEaXJlY3RvcnlVUkwgPSBb
bmV3VmVyc2lvbk9yaWdpbkRpcmVjdG9yeVVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6
dW51c2VkRGF0YWJhc2VIYXNoXTsKKyAgICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRl
ZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOm9sZFZlcnNpb25VbnVzZWREYXRhYmFzZURp
cmVjdG9yeVVSTC5wYXRoXSk7CisgICAgRVhQRUNUX1RSVUUoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1
bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOm5ld1ZlcnNpb25VbnVzZWREYXRhYmFzZURpcmVj
dG9yeVVSTC5wYXRoXSk7CiAgICAgCiAgICAgLy8gRm9yIGRhdGFiYXNlIHRoYXQgaXMgb3BlbmVk
IGFmdGVyIHVwZ3JhZGUsIGl0cyBmaWxlIHNob3VsZCBvbmx5IGJlIGluIHYxLgogICAgIE5TVVJM
ICpvbGRWZXJzaW9uRXhpc3RpbmdEYXRhYmFzZURpcmVjdG9yeVVSTCA9IFtvbGRWZXJzaW9uT3Jp
Z2luRGlyZWN0b3J5VVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDogZXhpc3RpbmdEYXRh
YmFzZU5hbWVdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9JbmRleGVkREJQZXJzaXN0ZW5jZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvSW5kZXhlZERCUGVyc2lzdGVuY2UubW0KaW5kZXggMjcxOGM0YWIzNjlhODE4
MmRhMGUxMThjNDUxNjY2YWU5ZDFlMmM3NC4uNGYwYThlYzk0NDU0OGNhNmM3ODcwMTVjNmI2ZDk1
MDg1ODgzODhiMyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9JbmRleGVkREJQZXJzaXN0ZW5jZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0luZGV4ZWREQlBlcnNpc3RlbmNlLm1tCkBAIC0zMDUsMTAgKzMwNSwx
NCBAQCBURVNUKEluZGV4ZWREQiwgSW5kZXhlZERCVGhpcmRQYXJ0eURhdGFSZW1vdmFsKQogICAg
IEVYUEVDVF9XS19TVFJFUSggQCJkYXRhYmFzZSBpcyBjcmVhdGVkIC0gcHV0IGl0ZW0gc3VjY2Vz
cyIsIChOU1N0cmluZyAqKVtsYXN0U2NyaXB0TWVzc2FnZSBib2R5XSk7CiAKICAgICByZWFkeVRv
Q29udGludWUgPSBmYWxzZTsKLSAgICBbW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0
b3JlXSBmZXRjaERhdGFSZWNvcmRzT2ZUeXBlczp3ZWJzaXRlRGF0YVR5cGVzLmdldCgpIGNvbXBs
ZXRpb25IYW5kbGVyOl4oTlNBcnJheTxXS1dlYnNpdGVEYXRhUmVjb3JkICo+ICpkYXRhUmVjb3Jk
cykgewotICAgICAgICBFWFBFQ1RfRVEoMXUsIGRhdGFSZWNvcmRzLmNvdW50KTsKLSAgICAgICAg
RVhQRUNUX1dLX1NUUkVRKCJpZnJhbWUiLCBbW2RhdGFSZWNvcmRzIGZpcnN0T2JqZWN0XSBkaXNw
bGF5TmFtZV0pOwotICAgICAgICBbW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3Jl
XSByZW1vdmVEYXRhT2ZUeXBlczp3ZWJzaXRlRGF0YVR5cGVzLmdldCgpIGZvckRhdGFSZWNvcmRz
OmRhdGFSZWNvcmRzIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7CisgICAgW1tXS1dlYnNpdGVEYXRh
U3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gZmV0Y2hEYXRhUmVjb3Jkc09mVHlwZXM6d2Vic2l0ZURh
dGFUeXBlcy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8V0tXZWJzaXRlRGF0YVJl
Y29yZCAqPiAqcmVjb3JkcykgeworICAgICAgICBFWFBFQ1RfRVEoMnUsIHJlY29yZHMuY291bnQp
OworICAgICAgICBOU1NvcnREZXNjcmlwdG9yICpyZWNvcmREZXNjcmlwdG9yID0gW05TU29ydERl
c2NyaXB0b3Igc29ydERlc2NyaXB0b3JXaXRoS2V5OkAiZGlzcGxheU5hbWUiIGFzY2VuZGluZzpZ
RVNdOworICAgICAgICBOU0FycmF5ICpzb3J0RGVzY3JpcHRvcnMgPSBAW3JlY29yZERlc2NyaXB0
b3JdOworICAgICAgICBOU0FycmF5ICpzb3J0ZWRSZWNvcmRzID0gW3JlY29yZHMgc29ydGVkQXJy
YXlVc2luZ0Rlc2NyaXB0b3JzOnNvcnREZXNjcmlwdG9yc107CisgICAgICAgIEVYUEVDVF9XS19T
VFJFUSgiaWZyYW1lIiwgW1tzb3J0ZWRSZWNvcmRzIG9iamVjdEF0SW5kZXg6MF0gZGlzcGxheU5h
bWVdKTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKCJ3ZWJraXQub3JnIiwgW1tzb3J0ZWRSZWNv
cmRzIG9iamVjdEF0SW5kZXg6MV0gZGlzcGxheU5hbWVdKTsKKyAgICAgICAgW1tXS1dlYnNpdGVE
YXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gcmVtb3ZlRGF0YU9mVHlwZXM6d2Vic2l0ZURhdGFU
eXBlcy5nZXQoKSBmb3JEYXRhUmVjb3JkczpyZWNvcmRzIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7
CiAgICAgICAgICAgICByZWFkeVRvQ29udGludWUgPSB0cnVlOwogICAgICAgICB9XTsKICAgICB9
XTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5k
ZXhlZERCU3VzcGVuZEltbWluZW50bHkubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0luZGV4ZWREQlN1c3BlbmRJbW1pbmVudGx5Lm1tCmluZGV4IGRjNjM0M2UzZWRk
ZmU0OGRiZmVlZTRmNzk5OTJmZmNiNWY2MGUxNmIuLmJmOTBmNTdjZTA5NzVlOTRlNjM3MDQ3YTVk
MGU5ZGZkMThmYmQ2MjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvSW5kZXhlZERCU3VzcGVuZEltbWluZW50bHkubW0KKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJTdXNwZW5kSW1taW5lbnRseS5tbQpA
QCAtNzMsNiArNzMsMTIgQEAgc3RhdGljIHZvaWQga2VlcE5ldHdvcmtQcm9jZXNzQWN0aXZlKCkK
IAogVEVTVChJbmRleGVkREIsIEluZGV4ZWREQlN1c3BlbmRJbW1pbmVudGx5KQogeworICAgIHJl
YWR5VG9Db250aW51ZSA9IGZhbHNlOworICAgIFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHRE
YXRhU3RvcmVdIHJlbW92ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0
ZURhdGFUeXBlc10gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9u
SGFuZGxlcjpeKCkgeworICAgICAgICByZWFkeVRvQ29udGludWUgPSB0cnVlOworICAgIH1dOwor
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVhZHlUb0NvbnRpbnVlKTsKKwogICAgIGF1
dG8gaGFuZGxlciA9IGFkb3B0TlMoW1tJbmRleGVkREJTdXNwZW5kSW1taW5lbnRseU1lc3NhZ2VI
YW5kbGVyIGFsbG9jXSBpbml0XSk7CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhb
W1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBbW2NvbmZpZ3VyYXRp
b24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5kbGVy
LmdldCgpIG5hbWU6QCJ0ZXN0SGFuZGxlciJdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TdG9yZUJsb2JUaGVuRGVsZXRlLm1tIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TdG9yZUJsb2JUaGVuRGVsZXRlLm1tCmluZGV4
IGFhYmZmZjg3YmM2NGIzOTUyYjI0MTQ1MjE1ZWUwMzgyODZiN2M4OTEuLjhlODVhNDBhNWU4M2Jh
MDM0MzIxZTdlNzk2OWQ4MzU1ZTMyYzI0NjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvU3RvcmVCbG9iVGhlbkRlbGV0ZS5tbQorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1N0b3JlQmxvYlRoZW5EZWxldGUubW0KQEAg
LTg3LDcgKzg3LDcgQEAgVEVTVChJbmRleGVkREIsIFN0b3JlQmxvYlRoZW5SZW1vdmVEYXRhKQog
ICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY29weUl0ZW1BdFBhdGg6ZGF0YWJh
c2VGaWxlUGF0aCB0b1BhdGg6ZmFrZVNobVBhdGggZXJyb3I6bmlsXTsKICAgICBbW05TRmlsZU1h
bmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNvcHlJdGVtQXRQYXRoOmRhdGFiYXNlRmlsZVBhdGggdG9Q
YXRoOmZha2VXYWxQYXRoIGVycm9yOm5pbF07CiAKLSAgICAvLyBNYWtlIHNvbWUgb3RoZXIgLmJs
b2IgZmlsZXMgaW4gdGhlIGRhdGFiYXNlIGRpcmVjdG9yeSB0byBsYXRlciB2YWxpZGF0ZSB0aGF0
IG9ubHkgYXBwcm9wcmlhdGUgZmlsZXMgYXJlIGRlbGV0ZWQuCisgICAgLy8gTWFrZSBzb21lIG90
aGVyIC5ibG9iIGZpbGVzIGluIHRoZSBkYXRhYmFzZSBkaXJlY3RvcnkgdG8gbGF0ZXIgdmFsaWRh
dGUgYWxsIGJsb2IgZmlsZXMgaW4gdGhlIGRpcmVjdG9yeSBhcmUgZGVsZXRlZC4KICAgICBOU1N0
cmluZyAqb3RoZXJCbG9iMSA9IFtkYXRhYmFzZURpcmVjdG9yeSBzdHJpbmdCeUFwcGVuZGluZ1Bh
dGhDb21wb25lbnQ6QCI3MTgyLmJsb2IiXTsKICAgICBOU1N0cmluZyAqb3RoZXJCbG9iMiA9IFtk
YXRhYmFzZURpcmVjdG9yeSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCIxYS5ibG9i
Il07CiAgICAgTlNTdHJpbmcgKm90aGVyQmxvYjMgPSBbZGF0YWJhc2VEaXJlY3Rvcnkgc3RyaW5n
QnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiYTEuYmxvYiJdOwpAQCAtMTAyLDEzICsxMDIsMTIg
QEAgVEVTVChJbmRleGVkREIsIFN0b3JlQmxvYlRoZW5SZW1vdmVEYXRhKQogICAgICAgICBFWFBF
Q1RfRkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRo
OmJsb2JGaWxlUGF0aF0pOwogICAgICAgICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRl
ZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmRhdGFiYXNlRmlsZVBhdGhdKTsKIAotICAg
ICAgICAvLyBNYWtlIHN1cmUgdGhlIGZha2UgYmxvYiBmaWxlIHdpdGggYSB2YWxpZCBibG9iIGZp
bGUgbmFtZSBpcyBnb25lLgorICAgICAgICAvLyBNYWtlIHN1cmUgYWxsIGZha2UgYmxvYiBmaWxl
IGFyZSBnb25lLgogICAgICAgICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRN
YW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOm90aGVyQmxvYjFdKTsKIAotICAgICAgICAvLyBNYWtl
IHN1cmUgdGhlIGZha2UgYmxvYiBmaWxlcyB3aXRoIGludmFsaWQgYmxvYiBmaWxlIG5hbWVzIGFy
ZSBzdGlsbCB0aGVyZS4KLSAgICAgICAgRVhQRUNUX1RSVUUoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1
bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOm90aGVyQmxvYjJdKTsKLSAgICAgICAgRVhQRUNU
X1RSVUUoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOm90
aGVyQmxvYjNdKTsKLSAgICAgICAgRVhQRUNUX1RSVUUoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRN
YW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOm90aGVyQmxvYjRdKTsKKyAgICAgICAgRVhQRUNUX0ZB
TFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpvdGhl
ckJsb2IyXSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1h
bmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6b3RoZXJCbG9iM10pOworICAgICAgICBFWFBFQ1RfRkFM
U0UoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOm90aGVy
QmxvYjRdKTsKIAogICAgICAgICAvLyBNYWtlIHN1cmUgZXZlcnl0aGluZyByZWxhdGVkIHRvIHRo
ZSBmYWtlIGRhdGFiYXNlIGlzIGdvbmUuCiAgICAgICAgIEVYUEVDVF9GQUxTRShbW05TRmlsZU1h
bmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6ZmFrZVNobVBhdGhdKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451180</attachid>
            <date>2022-02-07 17:16:48 -0800</date>
            <delta_ts>2022-02-07 19:56:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234925-20220207171645.patch</filename>
            <type>text/plain</type>
            <size>284877</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5MjM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjc1N2U4NDIyODE1ODE3
YjMwNzFkNzhmMDU5NGI2NWQ4ZDA3ZjQyZS4uZDNjNzYyOTQzYmRlNzZhNTE1MTg0YjA2MDhjMmQ4
OTYxNmFhOGUzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk1IEBACisyMDIyLTAyLTA3ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIE1hbmFnZSBJbmRleGVkREIg
c3RvcmFnZSBieSBvcmlnaW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzNDkyNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODc1NTUwMTQ+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAgQm90aCBXZWJLaXQgYW5k
IFdlYktpdExlZ2FjeSB1c2VkIElEQlNlcnZlciB0byBtYW5hZ2UgVW5pcXVlSURCRGF0YWJhc2Vz
LCBhbmQgVW5pcXVlSURCRGF0YWJhc2UgcG9pbnRlZCB0byAKKyAgICAgICAgSURCU2VydmVyLiBO
b3cgdGhhdCBXZWJLaXQgdXNlcyBXZWJLaXQ6OklEQlN0b3JhZ2VNYW5hZ2VyIHRvIG1hbmFnZSBV
bmlxdWVJREJEYXRhYmFzZXMuIFdlIHVudGllIHRoZSAKKyAgICAgICAga25vdCBiZXR3ZWVuIElE
QlNlcnZlciBhbmQgVW5pcXVlSURCRGF0YWJhc2UgYnkgYWRkaW5nIGEgbmV3IGFic3RyYWN0IGNs
YXNzIFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlciBhbmQgbWFrZQorICAgICAgICBVbmlxdWVJREJE
YXRhYmFzZSBwb2ludCB0byBVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuCisKKyAgICAgICAgQWxz
bywgYXMgcXVvdGEgY2hlY2sgaXMgbm8gbG9uZ2VyIGFzeW5jIGFjY29yZGluZyB0byBjaGFuZ2Vz
IGluIFdlYktpdCwgd2UgbmVlZCB0byB1cGRhdGUgb3BlcmF0aW9ucyBpbgorICAgICAgICBVbmlx
dWVJREJEYXRhYmFzZSB0byBhZG9wdCB0aGUgY2hhbmdlLgorCisgICAgICAgIENvdmVyZWQgYnkg
ZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnQuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6SURCU2VydmVyOjpyZWdpc3RlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OnVucmVnaXN0ZXJDb25uZWN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpjcmVhdGVCYWNraW5nU3RvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OnVwZ3JhZGVkRGF0YWJhc2VE
aXJlY3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OnJlZ2lz
dGVyRGF0YWJhc2VDb25uZWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklEQlNl
cnZlcjo6SURCU2VydmVyOjp1bnJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0aW9uKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpjbG9zZUFuZFRha2VVbmlx
dWVJREJEYXRhYmFzZSk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL0lEQlNlcnZlci5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1v
cnlJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1v
cnlJREJCYWNraW5nU3RvcmU6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUp
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3Rv
cmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3Rv
cmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlPYmplY3RTdG9yZTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5T2JqZWN0U3RvcmU6
Ok1lbW9yeU9iamVjdFN0b3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
TWVtb3J5T2JqZWN0U3RvcmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
U1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
U1FMaXRlSURCQmFja2luZ1N0b3JlOjpTUUxpdGVJREJCYWNraW5nU3RvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmVuY29kZURhdGFiYXNl
TmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6ZGVjb2RlRGF0YWJhc2VOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FM
aXRlSURCQmFja2luZ1N0b3JlOjpnZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbyk6CisgICAgICAg
IChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlQmFja2lu
Z1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0
b3JlOjpmaWxlbmFtZUZvckRhdGFiYXNlTmFtZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZnVsbERhdGFiYXNlRGly
ZWN0b3J5V2l0aFVwZ3JhZGUpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6VW5pcXVlSURCRGF0YWJhc2UpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6bWFuYWdlcik6CisgICAgICAg
IChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtQ3VycmVudE9w
ZW5PcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRh
YmFzZTo6cGVyZm9ybUN1cnJlbnRPcGVuT3BlcmF0aW9uQWZ0ZXJTcGFjZUNoZWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZUJhY2tpbmdT
dG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpj
cmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlE
QkRhdGFiYXNlOjpkZWxldGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2
ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpyZW5hbWVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpjbGVhck9iamVjdFN0b3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZUluZGV4
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0
ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6
OnJlbmFtZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0
YWJhc2U6OnB1dE9yQWRkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURC
RGF0YWJhc2U6OnB1dE9yQWRkQWZ0ZXJTcGFjZUNoZWNrKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmdldFJlY29yZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRBbGxSZWNvcmRzKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmdldENvdW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZVJlY29yZCk6
CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuQ3Vy
c29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6Oml0
ZXJhdGVDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRh
YmFzZTo6Y29tbWl0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpV
bmlxdWVJREJEYXRhYmFzZTo6YWJvcnRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJ
REJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpoYXNEYXRhSW5NZW1vcnkgY29uc3QpOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6c2VydmVyKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJh
c2VDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURC
RGF0YWJhc2VDb25uZWN0aW9uOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb246On5Vbmlx
dWVJREJEYXRhYmFzZUNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpV
bmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb246Om1hbmFnZXIpOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uaDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uOjpzZXJ2ZXIp
OiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJE
YXRhYmFzZU1hbmFnZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVu
aXF1ZUlEQkRhdGFiYXNlTWFuYWdlcjo6flVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlcik6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZVRy
YW5zYWN0aW9uOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6flVuaXF1ZUlEQkRh
dGFiYXNlVHJhbnNhY3Rpb24pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9V
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvc2hhcmVkL0lEQkVycm9yLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJFcnJvcjo6b3BlcmF0
b3IgYm9vbCBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJl
cXVlc3REYXRhLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc291
cmNlSWRlbnRpZmllci5oOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVy
OjpvcGVyYXRvciE9IGNvbnN0KToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisKIDIwMjItMDItMDcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
IAogICAgICAgICBXb3JrZXJHbG9iYWxTY29wZS5pbXBvcnRTY3JpcHRzKCkgc2hvdWxkIHByb3Rl
Y3QgYmxvYiB1cmxzIHRoYXQgd2VyZSBwYXNzZWQgaW4gdW50aWwgdGhlIGltcG9ydHMgYXJlIGRv
bmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKaW5kZXggZGIyYjU0Yjk5ODliYzI0ODg3ZWNhNzEyMDUwYjM2NjlhMzNkYWFjYy4u
YzM2NDA3NmFiNmExNGRmZDFhN2U0ODgyNTVkODIzMjIyYWRjNGUwZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNjUgQEAKKzIwMjItMDItMDcgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+
CisKKyAgICAgICAgTWFuYWdlIEluZGV4ZWREQiBzdG9yYWdlIGJ5IG9yaWdpbgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0OTI1CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS84NzU1NTAxND4KKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1l
ei4KKworICAgICAgICBJbiBuZXR3b3JrIHByb2Nlc3MsIEluZGV4ZWREQiBkYXRhIGlzIG1hbmFn
ZWQgYnkgV2ViS2l0OjpXZWJJREJTZXJ2ZXIuIEVhY2ggc2Vzc2lvbiBvd25zIGEgV2ViSURCU2Vy
dmVyIAorICAgICAgICAoSURCU2VydmVyKSBhbmQgZWFjaCBJREJTZXJ2ZXIgb3ducyBvbmUgb3Ig
bW9yZSBVbmlxdWVJREJEYXRhYmFzZXMgKHJlc3ByZW50aW5nIG9uZSBhY3R1YWwgZGF0YWJhc2Ug
dGhhdAorICAgICAgICBJREJEYXRhYmFzZSBjb25uZWN0cyB0bywgY2FuIGJlIGlkZW50aWZpZWQg
Ynkge3Nlc3Npb24sIG9yaWdpbiwgbmFtZX0pLiBOb3cgdGhhdCB3ZSBoYXZlIE5ldHdvcmtTdG9y
YWdlTWFuYWdlciwgCisgICAgICAgIHdoaWNoIG1hbmFnZXMgc2Vzc2lvbiBzdG9yYWdlIGJ5IG9y
aWdpbiwgd2UgY2FuIG1lcmdlIFdlYklEQlNlcnZlciB3aXRoIE5ldHdvcmtTdG9yYWdlTWFuYWdl
ciwgc2luY2UgSW5kZXhlZERCIAorICAgICAgICBzdG9yYWdlIGlzIG5vdCBzaGFyZWQgYWNyb3Nz
IG9yaWdpbnMuCisKKyAgICAgICAgVGhlIG9sZCBzdHJ1Y3R1cmUgaXM6CisgICAgICAgIE5ldHdv
cmtTZXNzaW9uIC0gV2ViSURCU2VydmVyIC0gSURCU2VydmVyIC0gVW5pcXVlSURCRGF0YWJhc2Vz
CisgICAgICAgIFRoZSBuZXcgc3RydWN0dXJlIGlzOgorICAgICAgICBOZXR3b3JrU2Vzc2lvbiAt
IE5ldHdvcmtTdG9yYWdlTWFuYWdlciAtIE9yaWdpblN0b3JhZ2VNYW5hZ2VyIC0gSURCU3RvcmFn
ZU1hbmFnZXIgLSBVbmlxdWVJREJEYXRhYmFzZQorCisgICAgICAgIFRvIGNvbXBsZXRlIHRoaXMg
dHJhbnNpdGlvbiwgd2UgbmVlZCB0byBtYWtlIGEgZmV3IGNoYW5nZXM6CisgICAgICAgIDEuIFdl
YiBwcm9jZXNzIG5vdyBzZW5kcyBJbmRleGVkREIgcmVsYXRlZCBtZXNzYWdlcyB0byBOZXR3b3Jr
U3RvcmFnZU1hbmFnZXIgaW5zdGVhZCBvZiBXZWJJREJTZXJ2ZXIuIAorICAgICAgICAyLiBTb21l
IG1lc3NhZ2VzIGFyZSBzZW50IHRvIG9wZXJhdGUgb24gVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0
aW9uIG9yIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24sIGFuZCB0aGV5IAorICAgICAgICB1
c2UgaWRlbnRpZmllcnMgdG8gc3BlY2lmeSB0aGUgdGFyZ2V0LiBUaGVyZWZvcmUsIE5ldHdvcmtT
dG9yYWdlTWFuYWdlcnMgbmVlZHMgdG8ga25vdyB0aGUgbWFwcGluZyBiZXR3ZWVuIAorICAgICAg
ICBpZGVudGlmaWVycyBhbmQgdGFyZ2V0IG9iamVjdHMuIEEgbmV3IGNsYXMgSURCU3RvcmFnZVJl
Z2lzdHJ5IGlzIGFkZGVkIHJlY29yZCB0aGlzIG1hcHBpbmcuIEVhY2ggCisgICAgICAgIE5ldHdv
cmtTdG9yYWdlTWFuYWdlciBvd25zIGEgSURCU3RvcmFnZVJlZ2lzdHJ5IGFuZCBpdCBwYXNzZXMg
SURCU3RvcmFnZVJlZ2lzdHJ5IHRvIElEQlN0b3JhZ2VNYW5hZ2VyLAorICAgICAgICBJREJTdG9y
YWdlTWFuYWdlciB3aWxsIHJlZ2lzdGVyIG9iamVjdHMgdG8gSURCU3RvcmFnZVJlZ2lzdHJ5IGFu
ZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXIgY2FuIGRvIHNlYXJjaCB2aWEgCisgICAgICAgIElEQlN0
b3JhZ2VSZWdpc3RyeS4KKyAgICAgICAgMy4gUXVvdGEgY2hlY2sgZm9yIEluZGV4ZWREQiBvcGVy
YXRpb25zIGJlY29tZXMgYXN5bmMgYnkgYWRkaW5nIG5ldyBRdW90YU1hbmFnZXIgY2xhc3MsIHdo
aWNoIGlzIHNpbWlsYXIgdG8gCisgICAgICAgIFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXIg
YnV0IHByb3ZpZGVzIGFzeW5jIGludGVyZmFjZXMuIAorICAgICAgICBXZSB1c2VkIHRvIGJsb2Nr
IHRoZSBJREJTZXJ2ZXIgdGhyZWFkIHdoZW4gaXQgaXMgd2FpdGluZyBmb3IgcXVvdGEgY2hlY2sg
cmVzdWx0IGZyb20gVUkgcHJvY2VzcywgdGhpcyBpcyBmaW5lIAorICAgICAgICBiZWNhdXNlIElE
QlNlcnZlciBydW5zIG9uIGl0cyBvd24gdGhyZWFkLiBOb3cgdGhhdCBJREJTdG9yYWdlTWFuYWdl
ciBydW5zIG9uIHRoZSBzYW1lIHRocmVhZCBhcyB0aGUgb3RoZXIgCisgICAgICAgIHN0b3JhZ2Ug
dHlwZXMsIHdlIGNhbm5vdCBibG9jayB0aGUgdGhyZWFkIG9uIHF1b3RhIGNoZWNrLgorICAgICAg
ICA0LiBSZW5hbWUgV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50IHRvIElEQlN0b3JhZ2VDb25uZWN0
aW9uVG9DbGllbnQgdG8gcmVmbGVjdCB0aGUgY2hhbmdlIG9uIHRoZSBzdHJ1Y3R1cmUuIEFsc28s
CisgICAgICAgIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQgZG9lcyBub3Qga2VlcCByZWZl
cmVuY2UgdG8gdGhlIElQQzo6Q29ubmVjdGlvbiBub3csIGl0IG9ubHkgcmVjb3JkcyAKKyAgICAg
ICAgSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRC4KKyAgICAgICAgNS4gSW5kZXhlZERCIGRhdGEg
bWF5IGJlIHB1dCBpbiBkaWZmZXJlbnQgdmVyc2lvbiBkaXJjdG9yaWVzLiBXZSB1c2VkIHRvIG1p
Z3JhdGUgZGF0YWJhc2UgdG8gbmV3IHZlcnNpb24gCisgICAgICAgIGRpcmV0b3J5IHdoZW4gdGhl
IGRhdGFiYXNlIGlzIGFjY2Vzc2VkLiBBcyBJREJTdG9yYWdlTWFuYWdlciBub3cgbWFuYWdlcyBJ
bmRleGVkREIgZGF0YSBvZiBvbmUgb3JpZ2luLCBpdCdzIAorICAgICAgICBzaW1wbGVyIGlmIGl0
IG9ubHkga2VlcHMgdHJhY2sgb2Ygb25lIGRpcmVjdG9yeS4gVGhlcmVmb3JlLCB3ZSBub3cgbWln
cmF0ZSBhbGwgZGF0YWJhc2VzIG9mIG9uZSBvcmlnaW4KKyAgICAgICAgd2hlbiB0aGUgb3JpZ2lu
IGlzIGFjY2Vzc2VkIChzZWUgSURCU3RvcmFnZU1hbmFnZXI6OmlkYlN0b3JhZ2VPcmlnaW5EaXJl
Y3RvcnkpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6dXBkYXRlUXVvdGFCYXNlZE9uU3BhY2VVc2FnZUZvclRlc3RpbmcpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6d3JpdGVCbG9ic1RvVGVtcG9y
YXJ5RmlsZXNGb3JJbmRleGVkREIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRpZENsb3NlKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmFkZFdlYnNp
dGVEYXRhU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZmV0Y2hXZWJz
aXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRl
RGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0
YUZvck9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlQW5k
UmVzdHJpY3RXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZWdpc3RyYWJsZURvbWFpbnNXaXRoV2Vic2l0ZURhdGEpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cHJlcGFyZVRvU3VzcGVuZCk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZXN1bWUpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6cmVzZXRRdW90YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzOjpkaWRJbmNyZWFzZVF1b3RhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OnJlbmFtZU9yaWdpbkluV2Vic2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6c3RvcmFnZVF1b3RhTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzOjpjb25uZWN0aW9uVG9XZWJQcm9jZXNzQ2xvc2VkKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3M6OnN1c3BlbmRJREJTZXJ2ZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6c2hvdWxkU3VzcGVuZElEQlNlcnZlcnMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Nlc3Npb246OmludmFsaWRhdGVBbmRDYW5jZWwpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
U2Vzc2lvbjo6YWRkU3RvcmFnZU1hbmFnZXJTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Nlc3Npb246OmVuc3VyZVdlYklEQlNlcnZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtTZXNzaW9uOjpjbG9zZUlEQlNlcnZlcik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjphZGRJbmRleGVkRGF0YWJhc2VTZXNzaW9uKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6d2ViSURCU2VydmVyKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Nlc3Npb246Omhhc0lEQkRhdGFiYXNlUGF0aCBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OnN0b3JhZ2VQYXRoKToK
KyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OmRpc2tVc2FnZSk6CisgICAg
ICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpyZXF1ZXN0U3BhY2UpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGVzOjpyZXF1ZXN0U3BhY2UpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lPUy5tbToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3M6OnNldElzSG9sZGluZ0xvY2tlZEZpbGVzKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6
SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3Jh
Z2VDb25uZWN0aW9uVG9DbGllbnQ6On5JREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50KToKKyAg
ICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6Y29ubmVjdGlvblRv
Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6
ZGlkR2V0UmVzdWx0KToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0Ns
aWVudDo6ZGlkRGVsZXRlRGF0YWJhc2UpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29u
bmVjdGlvblRvQ2xpZW50OjpkaWRPcGVuRGF0YWJhc2UpOgorICAgICAgICAoV2ViS2l0OjpJREJT
dG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRTdGFydFRyYW5zYWN0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkQWJvcnRUcmFuc2FjdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZENv
bW1pdFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25U
b0NsaWVudDo6ZGlkQ3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9y
YWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWREZWxldGVPYmplY3RTdG9yZSk6CisgICAgICAgIChX
ZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZFJlbmFtZU9iamVjdFN0b3Jl
KToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkQ2xl
YXJPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9D
bGllbnQ6OmRpZENyZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5l
Y3Rpb25Ub0NsaWVudDo6ZGlkRGVsZXRlSW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9y
YWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRSZW5hbWVJbmRleCk6CisgICAgICAgIChXZWJLaXQ6
OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZFB1dE9yQWRkKToKKyAgICAgICAgKFdl
YktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkR2V0UmVjb3JkKToKKyAgICAg
ICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkR2V0QWxsUmVjb3Jk
cyk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZEdl
dENvdW50KToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6
ZGlkRGVsZXRlUmVjb3JkKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25U
b0NsaWVudDo6ZGlkT3BlbkN1cnNvcik6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25u
ZWN0aW9uVG9DbGllbnQ6OmRpZEl0ZXJhdGVDdXJzb3IpOgorICAgICAgICAoV2ViS2l0OjpJREJT
dG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRHZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lv
bnMpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpmaXJl
VmVyc2lvbkNoYW5nZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rp
b25Ub0NsaWVudDo6ZGlkQ2xvc2VGcm9tU2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6SURCU3Rv
cmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6bm90aWZ5T3BlbkRCUmVxdWVzdEJsb2NrZWQpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVu
dC5oOiBBZGRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VN
YW5hZ2VyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Om1pZ3JhdGVPcmlnaW5EYXRhKToK
KyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZU1hbmFnZXI6OmlkYlN0b3JhZ2VPcmlnaW5EaXJl
Y3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlTWFuYWdlcjo6aWRiU3RvcmFnZVNp
emUpOgorICAgICAgICAoV2ViS2l0OjpnZXRPcmlnaW5zRm9yVmVyc2lvbik6CisgICAgICAgIChX
ZWJLaXQ6OklEQlN0b3JhZ2VNYW5hZ2VyOjpvcmlnaW5zT2ZJREJTdG9yYWdlRGF0YSk6CisgICAg
ICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VNYW5hZ2VyOjpJREJTdG9yYWdlTWFuYWdlcik6CisgICAg
ICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VNYW5hZ2VyOjppc0FjdGl2ZSBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OklEQlN0b3JhZ2VNYW5hZ2VyOjpoYXNEYXRhSW5NZW1vcnkgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpJREJTdG9yYWdlTWFuYWdlcjo6Y2xvc2VEYXRhYmFzZXNGb3JEZWxldGlv
bik6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VNYW5hZ2VyOjpzdG9wRGF0YWJhc2VBY3Rp
dml0aWVzRm9yU3VzcGVuZCk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VNYW5hZ2VyOjpn
ZXRPckNyZWF0ZVVuaXF1ZUlEQkRhdGFiYXNlKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFn
ZU1hbmFnZXI6Om9wZW5EYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VNYW5h
Z2VyOjpkZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VNYW5hZ2Vy
OjpnZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMpOgorICAgICAgICAoV2ViS2l0OjpJREJT
dG9yYWdlTWFuYWdlcjo6b3BlbkRCUmVxdWVzdENhbmNlbGxlZCk6CisgICAgICAgIChXZWJLaXQ6
OklEQlN0b3JhZ2VNYW5hZ2VyOjpyZWdpc3RlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0
OjpJREJTdG9yYWdlTWFuYWdlcjo6dW5yZWdpc3RlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2Vi
S2l0OjpJREJTdG9yYWdlTWFuYWdlcjo6cmVnaXN0ZXJUcmFuc2FjdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OklEQlN0b3JhZ2VNYW5hZ2VyOjp1bnJlZ2lzdGVyVHJhbnNhY3Rpb24pOgorICAgICAg
ICAoV2ViS2l0OjpJREJTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlQmFja2luZ1N0b3JlKToKKyAgICAg
ICAgKFdlYktpdDo6SURCU3RvcmFnZU1hbmFnZXI6OnJlcXVlc3RTcGFjZSk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlTWFuYWdlci5oOiBBZGRlZC4KKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VSZWdpc3RyeS5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlUmVnaXN0cnk6OmVuc3VyZUNvbm5lY3Rpb25U
b0NsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VSZWdpc3RyeTo6cmVtb3ZlQ29u
bmVjdGlvblRvQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZVJlZ2lzdHJ5Ojpy
ZWdpc3RlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlUmVnaXN0cnk6
OnVucmVnaXN0ZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZVJlZ2lz
dHJ5OjpyZWdpc3RlclRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZVJl
Z2lzdHJ5Ojp1bnJlZ2lzdGVyVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9y
YWdlUmVnaXN0cnk6OmNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlUmVn
aXN0cnk6OnRyYW5zYWN0aW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lE
QlN0b3JhZ2VSZWdpc3RyeS5oOiBBZGRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9y
YWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtT
dG9yYWdlTWFuYWdlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VN
YW5hZ2VyOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
U3RvcmFnZU1hbmFnZXI6OmNhbkhhbmRsZVR5cGVzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1N0b3JhZ2VNYW5hZ2VyOjpzdG9wUmVjZWl2aW5nTWVzc2FnZUZyb21Db25uZWN0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpsb2NhbE9yaWdpblN0b3JhZ2VN
YW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkaWRJbmNy
ZWFzZVF1b3RhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpnZXRB
bGxPcmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjptb3Zl
RGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6c3VzcGVuZCk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6cmVnaXN0ZXJUZW1wb3Jh
cnlCbG9iRmlsZVBhdGhzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2Vy
OjpyZXF1ZXN0U3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6
OnJlc2V0UXVvdGFGb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VN
YW5hZ2VyOjpyZXNldFF1b3RhVXBkYXRlZEJhc2VkT25Vc2FnZUZvclRlc3RpbmcpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Om9wZW5EYXRhYmFzZSk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6b3BlbkRCUmVxdWVzdENhbmNlbGxlZCk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlRGF0YWJhc2Up
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmVzdGFibGlzaFRyYW5z
YWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkYXRhYmFz
ZUNvbm5lY3Rpb25QZW5kaW5nQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFn
ZU1hbmFnZXI6OmRhdGFiYXNlQ29ubmVjdGlvbkNsb3NlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtTdG9yYWdlTWFuYWdlcjo6YWJvcnRPcGVuQW5kVXBncmFkZU5lZWRlZCk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVu
dCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6YWJvcnRUcmFuc2Fj
dGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y29tbWl0VHJh
bnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmRpZEZp
bmlzaEhhbmRsaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnJlbmFtZU9iamVjdFN0b3JlKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjbGVhck9iamVjdFN0b3JlKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVJbmRleCk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlSW5kZXgpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnJlbmFtZUluZGV4KToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpwdXRPckFkZCk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Z2V0UmVjb3JkKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpnZXRBbGxSZWNvcmRzKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpnZXRDb3VudCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlUmVjb3JkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1N0b3JhZ2VNYW5hZ2VyOjpvcGVuQ3Vyc29yKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0
b3JhZ2VNYW5hZ2VyOjppdGVyYXRlQ3Vyc29yKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0
b3JhZ2VNYW5hZ2VyOjpnZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIubWVzc2FnZXMu
aW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVj
a2V0OjpTdG9yYWdlQnVja2V0KToKKyAgICAgICAgKFdlYktpdDo6T3JpZ2luU3RvcmFnZU1hbmFn
ZXI6OlN0b3JhZ2VCdWNrZXQ6OnRvV2Vic2l0ZURhdGFUeXBlKToKKyAgICAgICAgKFdlYktpdDo6
T3JpZ2luU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VCdWNrZXQ6OnRvU3RvcmFnZUlkZW50aWZpZXIp
OgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldDo6
aWRiU3RvcmFnZU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdl
cjo6U3RvcmFnZUJ1Y2tldDo6ZXhpc3RpbmdJREJTdG9yYWdlTWFuYWdlcik6CisgICAgICAgIChX
ZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0Ojppc0FjdGl2ZSBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0
Ojppc0VtcHR5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6T3JpZ2luU3RvcmFnZU1hbmFnZXI6
OlN0b3JhZ2VCdWNrZXQ6OmRlbGV0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9y
YWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldDo6bW92ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpP
cmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldDo6ZmV0Y2hEYXRhVHlwZXNJbkxpc3RG
cm9tTWVtb3J5KToKKyAgICAgICAgKFdlYktpdDo6T3JpZ2luU3RvcmFnZU1hbmFnZXI6OlN0b3Jh
Z2VCdWNrZXQ6OmZldGNoRGF0YVR5cGVzSW5MaXN0RnJvbURpc2spOgorICAgICAgICAoV2ViS2l0
OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldDo6ZGVsZXRlSURCU3RvcmFnZURh
dGEpOgorICAgICAgICAoV2ViS2l0OjpjcmVhdGVRdW90YU1hbmFnZXIpOgorICAgICAgICAoV2Vi
S2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6T3JpZ2luU3RvcmFnZU1hbmFnZXIpOgorICAgICAg
ICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6ZGVmYXVsdEJ1Y2tldCk6CisgICAgICAg
IChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpxdW90YU1hbmFnZXIpOgorICAgICAgICAo
V2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6aWRiU3RvcmFnZU1hbmFnZXIpOgorICAgICAg
ICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6ZXhpc3RpbmdJREJTdG9yYWdlTWFuYWdl
cik6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjptb3ZlRGF0YSk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvUXVvdGFNYW5hZ2VyLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6OlF1b3RhTWFuYWdlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktp
dDo6UXVvdGFNYW5hZ2VyOjpRdW90YU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpRdW90YU1h
bmFnZXI6OnJlcXVlc3RTcGFjZSk6CisgICAgICAgIChXZWJLaXQ6OlF1b3RhTWFuYWdlcjo6aGFu
ZGxlUmVxdWVzdHMpOgorICAgICAgICAoV2ViS2l0OjpRdW90YU1hbmFnZXI6OmdyYW50V2l0aEN1
cnJlbnRRdW90YSk6CisgICAgICAgIChXZWJLaXQ6OlF1b3RhTWFuYWdlcjo6Z3JhbnRGYXN0UGF0
aCk6CisgICAgICAgIChXZWJLaXQ6OlF1b3RhTWFuYWdlcjo6ZGlkSW5jcmVhc2VRdW90YSk6Cisg
ICAgICAgIChXZWJLaXQ6OlF1b3RhTWFuYWdlcjo6cmVzZXRRdW90YVVwZGF0ZWRCYXNlZE9uVXNh
Z2VGb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6UXVvdGFNYW5hZ2VyOjpyZXNldFF1b3Rh
Rm9yVGVzdGluZyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9RdW90YU1hbmFn
ZXIuaDogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAg
ICAgICh0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKToKKyAgICAgICAgKiBT
aGFyZWQvV2Vic2l0ZURhdGEvUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLmg6IEFkZGVk
LgorICAgICAgICAqIFNoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oOgorICAgICAg
ICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjppbmNy
ZWFzZVF1b3RhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5t
ZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnBlclRoaXJkUGFy
dHlPcmlnaW5TdG9yYWdlUXVvdGEgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHRQZXJPcmlnaW5RdW90YSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVj
dGlvblRvU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvU2Vy
dmVyOjpkZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25U
b1NlcnZlcjo6b3BlbkRhdGFiYXNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlv
blRvU2VydmVyOjphYm9ydFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29u
bmVjdGlvblRvU2VydmVyOjpjb21taXRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlVHJh
bnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmNy
ZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvU2Vy
dmVyOjpkZWxldGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rp
b25Ub1NlcnZlcjo6cmVuYW1lT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJD
b25uZWN0aW9uVG9TZXJ2ZXI6OmNsZWFyT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYktpdDo6
V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpkZWxldGVJbmRleCk6CisgICAgICAgIChXZWJLaXQ6
OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6cmVuYW1lSW5kZXgpOgorICAgICAgICAoV2ViS2l0
OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OnB1dE9yQWRkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpnZXRSZWNvcmQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmdldEFsbFJlY29yZHMpOgorICAgICAgICAoV2ViS2l0
OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmdldENvdW50KToKKyAgICAgICAgKFdlYktpdDo6
V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpkZWxldGVSZWNvcmQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6Om9wZW5DdXJzb3IpOgorICAgICAgICAoV2ViS2l0
OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6Oml0ZXJhdGVDdXJzb3IpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmVzdGFibGlzaFRyYW5zYWN0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpkYXRhYmFzZUNvbm5lY3Rp
b25QZW5kaW5nQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2
ZXI6OmRhdGFiYXNlQ29ubmVjdGlvbkNsb3NlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNv
bm5lY3Rpb25Ub1NlcnZlcjo6YWJvcnRPcGVuQW5kVXBncmFkZU5lZWRlZCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVu
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6b3BlbkRCUmVx
dWVzdENhbmNlbGxlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZl
cjo6Z2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKToKKwogMjAyMi0wMi0wNyAgQW50b2lu
ZSBRdWludCAgPGdyYW91dHNAd2Via2l0Lm9yZz4KIAogICAgICAgICBbbW9kZWxdIGltcHJvdmUg
c2l6aW5nIG9uIGlPUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwppbmRleCBlNmJhNzMyMmMzNDhlY2RlNDc5
NGUwOTQ5OTViYWI0ODk2YmY1YTQ5Li4wOTQ3ZTI3NmIxYjZmY2JhYzc5OTc5NmVkNTNmMzg3ZTA4
MmNkZWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIyLTAyLTA3
ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIE1hbmFnZSBJbmRl
eGVkREIgc3RvcmFnZSBieSBvcmlnaW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzNDkyNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODc1NTUwMTQ+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAgKiBTdG9yYWdl
L0luUHJvY2Vzc0lEQlNlcnZlci5jcHA6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OnF1
b3RhTWFuYWdlcik6CisKIDIwMjItMDItMDIgIEVsbGlvdHQgV2lsbGlhbXMgIDxlbXdAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtYY29kZV0gRml4IHJlZHVuZGFudCBleGVjdXRpb24gb2YgIkNoZWNr
IFZUYWJsZXMuLi4iIHNjcmlwdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggM2ZjZTk1ZjU3NTY5ZGE3
M2Q1MDkyOWJlNTQyY2ZiNzQ0OWQ3OWQ1Mi4uZDlmNDhhZWRkYzYzOGE0ODk0YTMzNDViYTg3ZWVm
MmU2MzNjYjk4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0yMjQsMTEgKzIyNCwxNiBAQCBzZXQo
V2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL0lEQkNvbm5lY3Rpb25Ub0NsaWVudC5oCiAgICAgTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL0lEQkNvbm5lY3Rpb25Ub0NsaWVudERlbGVnYXRlLmgKICAgICBNb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvSURCU2VydmVyLmgKKyAgICBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSW5kZXhW
YWx1ZUVudHJ5LmgKKyAgICBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSW5kZXhWYWx1ZVN0b3Jl
LmgKKyAgICBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNh
Y3Rpb24uaAogICAgIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3Rv
cmUuaAogICAgIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUu
aAorICAgIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJUcmFuc2FjdGlvbi5oCiAg
ICAgTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NlcnZlck9wZW5EQlJlcXVlc3QuaAogICAgIE1v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oCiAgICAgTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5oCisgICAgTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlci5oCiAgICAgTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uaAogCiAgICAg
TW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luZGV4S2V5LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmgKaW5kZXgg
NmMwYjFiNGYyYWIwYzAzMzA3NjY1NGVhNGIyNzY1NTk0NDU4OTUzNi4uN2YwOWJmYjMyZDUxZTk3
ZmE3ZWQ0ZTQ1ZDUxMTMzOGU1YjgxMTdlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmgKQEAgLTgyLDcgKzgy
LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNUcmFuc2llbnQoKSBjb25zdCB7IHJldHVybiBtX2lz
VHJhbnNpZW50OyB9CiAKICAgICBTdHJpbmcgZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9v
dChjb25zdCBTdHJpbmcmIHJvb3REaXJlY3RvcnksIGNvbnN0IFN0cmluZyYgdmVyc2lvblN0cmlu
Zz0idjEiKSBjb25zdDsKLSAgICBzdGF0aWMgU3RyaW5nIGRhdGFiYXNlRGlyZWN0b3J5UmVsYXRp
dmVUb1Jvb3QoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiB0b3BMZXZlbE9yaWdpbiwgY29uc3Qg
U2VjdXJpdHlPcmlnaW5EYXRhJiBvcGVuaW5nT3JpZ2luLCBjb25zdCBTdHJpbmcmIHJvb3REaXJl
Y3RvcnksIGNvbnN0IFN0cmluZyYgdmVyc2lvblN0cmluZyk7CisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFN0cmluZyBkYXRhYmFzZURpcmVjdG9yeVJlbGF0aXZlVG9Sb290KGNvbnN0IFNlY3Vy
aXR5T3JpZ2luRGF0YSYgdG9wTGV2ZWxPcmlnaW4sIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYg
b3BlbmluZ09yaWdpbiwgY29uc3QgU3RyaW5nJiByb290RGlyZWN0b3J5LCBjb25zdCBTdHJpbmcm
IHZlcnNpb25TdHJpbmcpOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNv
ZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPElEQkRhdGFiYXNlSWRlbnRpZmllcj4gZGVjb2RlKERlY29kZXImKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25u
ZWN0aW9uVG9DbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9JREJDb25uZWN0aW9uVG9DbGllbnQuaAppbmRleCAyN2Y3MjY5MTlmMTQyMWYyMWE1ZjAzZmZk
ZmMxNzZkNGM0YmRmM2MyLi5mMDVhYzJmOGM4MmE4MDljMjcxYzlkZjU5N2Y5NjQ3MzE5ZWY2NDYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURC
Q29ubmVjdGlvblRvQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0lEQkNvbm5lY3Rpb25Ub0NsaWVudC5oCkBAIC03NCwxMSArNzQsMTEgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBub3RpZnlPcGVuREJSZXF1ZXN0QmxvY2tlZChjb25zdCBJREJSZXNv
dXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBvbGRWZXJzaW9uLCB1
aW50NjRfdCBuZXdWZXJzaW9uKTsKIAotICAgIHZvaWQgZGlkR2V0QWxsRGF0YWJhc2VOYW1lc0Fu
ZFZlcnNpb25zKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYsIFZlY3RvcjxJREJEYXRhYmFz
ZU5hbWVBbmRWZXJzaW9uPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZEdldEFsbERh
dGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImLCBWZWN0
b3I8SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbj4mJik7CiAKICAgICB2b2lkIHJlZ2lzdGVyRGF0
YWJhc2VDb25uZWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYpOwogICAgIHZvaWQg
dW5yZWdpc3RlckRhdGFiYXNlQ29ubmVjdGlvbihVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24m
KTsKLSAgICB2b2lkIGNvbm5lY3Rpb25Ub0NsaWVudENsb3NlZCgpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgY29ubmVjdGlvblRvQ2xpZW50Q2xvc2VkKCk7CiAgICAgYm9vbCBpc0Nsb3NlZCgp
IHsgcmV0dXJuIG1faXNDbG9zZWQ7IH0KICAgICB2b2lkIGNsZWFyRGVsZWdhdGUoKSB7IG1fZGVs
ZWdhdGUgPSBudWxscHRyOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKaW5kZXggZDI2NjkzMTgwODQ2YWY2NjY4OWUx
N2FlYTNmZjk5NzE5NTVhZTM2ZS4uNGJhZDQ0MmIxYjNhOWE0MTc4NTkwNDJmODE2NTc3ZTA3YjEz
YmE4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L0lEQlNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL0lEQlNlcnZlci5jcHAKQEAgLTEwMSwxMyArMTAxLDEzIEBAIHZvaWQgSURCU2VydmVyOjp1
bnJlZ2lzdGVyVHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNh
Y3Rpb24pCiAgICAgbV90cmFuc2FjdGlvbnMucmVtb3ZlKHRyYW5zYWN0aW9uLmluZm8oKS5pZGVu
dGlmaWVyKCkpOwogfQogCi12b2lkIElEQlNlcnZlcjo6cmVnaXN0ZXJEYXRhYmFzZUNvbm5lY3Rp
b24oVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiBjb25uZWN0aW9uKQordm9pZCBJREJTZXJ2
ZXI6OnJlZ2lzdGVyQ29ubmVjdGlvbihVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24pCiB7CiAgICAgQVNTRVJUKCFtX2RhdGFiYXNlQ29ubmVjdGlvbnMuY29udGFpbnMoY29u
bmVjdGlvbi5pZGVudGlmaWVyKCkpKTsKICAgICBtX2RhdGFiYXNlQ29ubmVjdGlvbnMuc2V0KGNv
bm5lY3Rpb24uaWRlbnRpZmllcigpLCAmY29ubmVjdGlvbik7CiB9CiAKLXZvaWQgSURCU2VydmVy
Ojp1bnJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlv
biYgY29ubmVjdGlvbikKK3ZvaWQgSURCU2VydmVyOjp1bnJlZ2lzdGVyQ29ubmVjdGlvbihVbmlx
dWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiB7CiAgICAgQVNTRVJUKG1fZGF0
YWJhc2VDb25uZWN0aW9ucy5jb250YWlucyhjb25uZWN0aW9uLmlkZW50aWZpZXIoKSkpOwogICAg
IG1fZGF0YWJhc2VDb25uZWN0aW9ucy5yZW1vdmUoY29ubmVjdGlvbi5pZGVudGlmaWVyKCkpOwpA
QCAtMTI4LDEzICsxMjgsMTMgQEAgc3RkOjp1bmlxdWVfcHRyPElEQkJhY2tpbmdTdG9yZT4gSURC
U2VydmVyOjpjcmVhdGVCYWNraW5nU3RvcmUoY29uc3QgSURCRGF0YWJhc2UKIHsKICAgICBBU1NF
UlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBpZiAobV9kYXRhYmFzZURpcmVjdG9yeVBhdGguaXNF
bXB0eSgpKQotICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxNZW1vcnlJREJCYWNraW5nU3RvcmU+
KG1fc2Vzc2lvbklELCBpZGVudGlmaWVyKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TWVt
b3J5SURCQmFja2luZ1N0b3JlPihpZGVudGlmaWVyKTsKIAogICAgIEFTU0VSVCghbV9zZXNzaW9u
SUQuaXNFcGhlbWVyYWwoKSk7CiAgICAgaWYgKGlkZW50aWZpZXIuaXNUcmFuc2llbnQoKSkKLSAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TWVtb3J5SURCQmFja2luZ1N0b3JlPihtX3Nlc3Npb25J
RCwgaWRlbnRpZmllcik7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPE1lbW9yeUlEQkJhY2tp
bmdTdG9yZT4oaWRlbnRpZmllcik7CiAKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxTUUxpdGVJREJC
YWNraW5nU3RvcmU+KG1fc2Vzc2lvbklELCBpZGVudGlmaWVyLCBtX2RhdGFiYXNlRGlyZWN0b3J5
UGF0aCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1FMaXRlSURCQmFja2luZ1N0b3JlPihpZGVu
dGlmaWVyLCB1cGdyYWRlZERhdGFiYXNlRGlyZWN0b3J5KGlkZW50aWZpZXIpKTsKIH0KIAogdm9p
ZCBJREJTZXJ2ZXI6Om9wZW5EYXRhYmFzZShjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERh
dGEpCkBAIC0xNzcsMTcgKzE3Nyw2IEBAIHZvaWQgSURCU2VydmVyOjpkZWxldGVEYXRhYmFzZShj
b25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEpCiAgICAgICAgIG1fdW5pcXVlSURCRGF0
YWJhc2VNYXAucmVtb3ZlKGRhdGFiYXNlLT5pZGVudGlmaWVyKCkpOwogfQogCi1zdGQ6OnVuaXF1
ZV9wdHI8VW5pcXVlSURCRGF0YWJhc2U+IElEQlNlcnZlcjo6Y2xvc2VBbmRUYWtlVW5pcXVlSURC
RGF0YWJhc2UoVW5pcXVlSURCRGF0YWJhc2UmIGRhdGFiYXNlKQotewotICAgIExPRyhJbmRleGVk
REIsICJJREJTZXJ2ZXI6OmNsb3NlVW5pcXVlSURCRGF0YWJhc2UiKTsKLSAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOwotCi0gICAgYXV0byB1bmlxdWVQb2ludGVyID0gbV91bmlxdWVJREJEYXRh
YmFzZU1hcC50YWtlKGRhdGFiYXNlLmlkZW50aWZpZXIoKSk7Ci0gICAgQVNTRVJUKHVuaXF1ZVBv
aW50ZXIpOwotCi0gICAgcmV0dXJuIHVuaXF1ZVBvaW50ZXI7Ci19Ci0KIHZvaWQgSURCU2VydmVy
OjphYm9ydFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rp
b25JZGVudGlmaWVyKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJTZXJ2ZXI6OmFib3J0VHJh
bnNhY3Rpb24iKTsKQEAgLTc1MCw3ICs3MzksNyBAQCB2b2lkIElEQlNlcnZlcjo6cmVuYW1lT3Jp
Z2luKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgb2xkT3JpZ2luLCBjb25zdAog
ICAgICAgICBGaWxlU3lzdGVtOjptb3ZlRmlsZShvbGRPcmlnaW5QYXRoLCBuZXdPcmlnaW5QYXRo
KTsKIH0KIAotU3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb24gSURCU2VydmVyOjpyZXF1ZXN0
U3BhY2UoY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4sIHVpbnQ2NF90IHRhc2tTaXplKSBXVEZf
SUdOT1JFU19USFJFQURfU0FGRVRZX0FOQUxZU0lTCit2b2lkIElEQlNlcnZlcjo6cmVxdWVzdFNw
YWNlKGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2luLCB1aW50NjRfdCB0YXNrU2l6ZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgV1RGX0lHTk9SRVNf
VEhSRUFEX1NBRkVUWV9BTkFMWVNJUwogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwog
ICAgIEFTU0VSVChtX2xvY2suaXNIZWxkKCkpOwpAQCAtNzYyLDcgKzc1MSw3IEBAIFN0b3JhZ2VR
dW90YU1hbmFnZXI6OkRlY2lzaW9uIElEQlNlcnZlcjo6cmVxdWVzdFNwYWNlKGNvbnN0IENsaWVu
dE9yaWdpbiYgb3JpZ2luCiAgICAgcmVzdWx0ID0gbV9zcGFjZVJlcXVlc3RlcihvcmlnaW4sIHRh
c2tTaXplKTsKICAgICBtX2xvY2subG9jaygpOwogCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICBj
b21wbGV0aW9uSGFuZGxlcihyZXN1bHQgPT0gU3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb246
OkdyYW50KTsKIH0KIAogdWludDY0X3QgSURCU2VydmVyOjpkaXNrVXNhZ2UoY29uc3QgU3RyaW5n
JiByb290RGlyZWN0b3J5LCBjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbikKQEAgLTc4NCw2ICs3
NzMsMjMgQEAgdm9pZCBJREJTZXJ2ZXI6OnVwZ3JhZGVGaWxlc0lmTmVjZXNzYXJ5KCkKICAgICAg
ICAgRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKG5ld1ZlcnNpb25EaXJlY3RvcnkpOwog
fQogCitTdHJpbmcgSURCU2VydmVyOjp1cGdyYWRlZERhdGFiYXNlRGlyZWN0b3J5KGNvbnN0IFdl
YkNvcmU6OklEQkRhdGFiYXNlSWRlbnRpZmllciYgaWRlbnRpZmllcikKK3sKKyAgICBTdHJpbmcg
b2xkT3JpZ2luRGlyZWN0b3J5ID0gaWRlbnRpZmllci5kYXRhYmFzZURpcmVjdG9yeVJlbGF0aXZl
VG9Sb290KG1fZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCAidjAiKTsKKyAgICBTdHJpbmcgb2xkRGF0
YWJhc2VEaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQob2xk
T3JpZ2luRGlyZWN0b3J5LCBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmVuY29kZURhdGFiYXNlTmFt
ZShpZGVudGlmaWVyLmRhdGFiYXNlTmFtZSgpKSk7CisgICAgU3RyaW5nIG5ld09yaWdpbkRpcmVj
dG9yeSA9IGlkZW50aWZpZXIuZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9vdChtX2RhdGFi
YXNlRGlyZWN0b3J5UGF0aCwgInYxIik7CisgICAgU3RyaW5nIGZpbGVOYW1lSGFzaCA9IFNRTGl0
ZUZpbGVTeXN0ZW06OmNvbXB1dGVIYXNoRm9yRmlsZU5hbWUoaWRlbnRpZmllci5kYXRhYmFzZU5h
bWUoKSk7CisgICAgU3RyaW5nIG5ld0RhdGFiYXNlRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG5ld09yaWdpbkRpcmVjdG9yeSwgZmlsZU5hbWVIYXNoKTsK
KyAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMobmV3RGF0YWJhc2VEaXJlY3Rvcnkp
OworCisgICAgaWYgKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMob2xkRGF0YWJhc2VEaXJlY3Rvcnkp
KSB7CisgICAgICAgIEZpbGVTeXN0ZW06Om1vdmVGaWxlKG9sZERhdGFiYXNlRGlyZWN0b3J5LCBu
ZXdEYXRhYmFzZURpcmVjdG9yeSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGly
ZWN0b3J5KG9sZE9yaWdpbkRpcmVjdG9yeSk7CisgICAgfQorCisgICAgcmV0dXJuIG5ld0RhdGFi
YXNlRGlyZWN0b3J5OworfQorCiBib29sIElEQlNlcnZlcjo6aGFzRGF0YWJhc2VBY3Rpdml0aWVz
T25NYWluVGhyZWFkKCkgY29uc3QKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZl
ci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5o
CmluZGV4IGQ4ODM2NDlhNWM4ZDViNTlmMDJjMmJkYWNkZGU2NzhhMWNhM2M0MmYuLjEzZmI3MGJl
Mzc5YWFhOWMxMWY1OWQyNTRiOTZjMDcyOTRkYTA2MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmgKQEAgLTMwLDYgKzMwLDcg
QEAKICNpbmNsdWRlICJTdG9yYWdlUXVvdGFNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiVW5pcXVlSURC
RGF0YWJhc2UuaCIKICNpbmNsdWRlICJVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uaCIKKyNp
bmNsdWRlICJVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuaCIKICNpbmNsdWRlIDxwYWwvSHlzdGVy
ZXNpc0FjdGl2aXR5Lmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0
Zi9Dcm9zc1RocmVhZFRhc2tIYW5kbGVyLmg+CkBAIC00OCw4ICs0OSw3IEBAIHN0cnVjdCBJREJH
ZXRSZWNvcmREYXRhOwogCiBuYW1lc3BhY2UgSURCU2VydmVyIHsKIAotY2xhc3MgSURCU2VydmVy
IHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK2NsYXNzIElEQlNlcnZlciA6IHB1Ymxp
YyBVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIgewogcHVibGljOgogICAgIHVzaW5nIFN0b3JhZ2VR
dW90YU1hbmFnZXJTcGFjZVJlcXVlc3RlciA9IEZ1bmN0aW9uPFN0b3JhZ2VRdW90YU1hbmFnZXI6
OkRlY2lzaW9uKGNvbnN0IENsaWVudE9yaWdpbiYsIHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkKT47
CiAgICAgV0VCQ09SRV9FWFBPUlQgSURCU2VydmVyKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJp
bmcmIGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwgU3RvcmFnZVF1b3RhTWFuYWdlclNwYWNlUmVxdWVz
dGVyJiYsIExvY2smKTsKQEAgLTg4LDE1ICs4OCwxMyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhJREJDb25uZWN0aW9u
SWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiwgY29uc3QgQ2xpZW50T3Jp
Z2luJik7CiAKLQotICAgIHZvaWQgcmVnaXN0ZXJEYXRhYmFzZUNvbm5lY3Rpb24oVW5pcXVlSURC
RGF0YWJhc2VDb25uZWN0aW9uJik7Ci0gICAgdm9pZCB1bnJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0
aW9uKFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYpOwotICAgIHZvaWQgcmVnaXN0ZXJUcmFu
c2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJik7Ci0gICAgdm9pZCB1bnJlZ2lz
dGVyVHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYpOwotCi0gICAgc3Rk
Ojp1bmlxdWVfcHRyPFVuaXF1ZUlEQkRhdGFiYXNlPiBjbG9zZUFuZFRha2VVbmlxdWVJREJEYXRh
YmFzZShVbmlxdWVJREJEYXRhYmFzZSYpOwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPElEQkJhY2tp
bmdTdG9yZT4gY3JlYXRlQmFja2luZ1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYp
OworICAgIC8vIFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlcgorICAgIHZvaWQgcmVnaXN0ZXJDb25u
ZWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYpIGZpbmFsOworICAgIHZvaWQgdW5y
ZWdpc3RlckNvbm5lY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJikgZmluYWw7Cisg
ICAgdm9pZCByZWdpc3RlclRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24m
KSBmaW5hbDsKKyAgICB2b2lkIHVucmVnaXN0ZXJUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFz
ZVRyYW5zYWN0aW9uJikgZmluYWw7CisgICAgc3RkOjp1bmlxdWVfcHRyPElEQkJhY2tpbmdTdG9y
ZT4gY3JlYXRlQmFja2luZ1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYpIGZpbmFs
OworICAgIHZvaWQgcmVxdWVzdFNwYWNlKGNvbnN0IENsaWVudE9yaWdpbiYsIHVpbnQ2NF90IHNp
emUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZpbmFsOwogCiAgICAgV0VCQ09S
RV9FWFBPUlQgSGFzaFNldDxTZWN1cml0eU9yaWdpbkRhdGE+IGdldE9yaWdpbnMoKSBjb25zdDsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzTW9kaWZpZWRT
aW5jZShXYWxsVGltZSk7CkBAIC0xMDQsNyArMTAyLDYgQEAgcHVibGljOgogICAgIHZvaWQgY2xv
c2VEYXRhYmFzZXNGb3JPcmlnaW5zKGNvbnN0IFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+Jiwg
RnVuY3Rpb248Ym9vbChjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBDbGllbnRPcmln
aW4mKT4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW5hbWVPcmlnaW4oY29uc3QgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhJik7CiAKLSAgICBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbiByZXF1ZXN0U3BhY2Uo
Y29uc3QgQ2xpZW50T3JpZ2luJiwgdWludDY0X3QgdGFza1NpemUpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyB1aW50NjRfdCBkaXNrVXNhZ2UoY29uc3QgU3RyaW5nJiByb290RGlyZWN0b3J5
LCBjb25zdCBDbGllbnRPcmlnaW4mKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzRGF0
YWJhc2VBY3Rpdml0aWVzT25NYWluVGhyZWFkKCkgY29uc3Q7CkBAIC0xMTQsNiArMTExLDcgQEAg
cHJpdmF0ZToKICAgICBVbmlxdWVJREJEYXRhYmFzZSYgZ2V0T3JDcmVhdGVVbmlxdWVJREJEYXRh
YmFzZShjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImKTsKIAogICAgIHZvaWQgdXBncmFkZUZp
bGVzSWZOZWNlc3NhcnkoKTsKKyAgICBTdHJpbmcgdXBncmFkZWREYXRhYmFzZURpcmVjdG9yeShj
b25zdCBXZWJDb3JlOjpJREJEYXRhYmFzZUlkZW50aWZpZXImKTsKICAgICB2b2lkIHJlbW92ZURh
dGFiYXNlc01vZGlmaWVkU2luY2VGb3JWZXJzaW9uKFdhbGxUaW1lLCBjb25zdCBTdHJpbmcmKTsK
ICAgICB2b2lkIHJlbW92ZURhdGFiYXNlc1dpdGhPcmlnaW5zRm9yVmVyc2lvbihjb25zdCBWZWN0
b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiYsIGNvbnN0IFN0cmluZyYpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0
b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJ
REJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDdlZTQxNDBhOGFmMTgwMTFjOTZiY2E3YjYwOGQ4NjU5
MThhZjg1ZWEuLmQ2MzM1MDMwOTkzMDU1YjliMTJiNzg0NTY1NWRhODMzNzJiMWE1NTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJC
YWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwCkBAIC00NCw5ICs0NCw4IEBAIG5hbWVzcGFj
ZSBJREJTZXJ2ZXIgewogLy8gVGhlIEluZGV4ZWREQiBzcGVjIHN0YXRlcyB0aGUgbWF4aW11bSB2
YWx1ZSB5b3UgY2FuIGdldCBmcm9tIHRoZSBrZXkgZ2VuZXJhdG9yIGlzIDJeNTMuCiBjb25zdGV4
cHIgdWludDY0X3QgbWF4R2VuZXJhdGVkS2V5VmFsdWUgPSAweDIwMDAwMDAwMDAwMDAwOwogCi1N
ZW1vcnlJREJCYWNraW5nU3RvcmU6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZShQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYgaWRlbnRpZmllcikKK01l
bW9yeUlEQkJhY2tpbmdTdG9yZTo6TWVtb3J5SURCQmFja2luZ1N0b3JlKGNvbnN0IElEQkRhdGFi
YXNlSWRlbnRpZmllciYgaWRlbnRpZmllcikKICAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVy
KQotICAgICwgbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQogewogfQogCkBAIC0xMzQsNyArMTMzLDcg
QEAgSURCRXJyb3IgTWVtb3J5SURCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmplY3RTdG9yZShjb25z
dCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHQKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgQ29u
c3RyYWludEVycm9yIH07CiAKICAgICBBU1NFUlQoIW1fb2JqZWN0U3RvcmVzQnlJZGVudGlmaWVy
LmNvbnRhaW5zKGluZm8uaWRlbnRpZmllcigpKSk7Ci0gICAgYXV0byBvYmplY3RTdG9yZSA9IE1l
bW9yeU9iamVjdFN0b3JlOjpjcmVhdGUobV9zZXNzaW9uSUQsIGluZm8pOworICAgIGF1dG8gb2Jq
ZWN0U3RvcmUgPSBNZW1vcnlPYmplY3RTdG9yZTo6Y3JlYXRlKGluZm8pOwogCiAgICAgbV9kYXRh
YmFzZUluZm8tPmFkZEV4aXN0aW5nT2JqZWN0U3RvcmUoaW5mbyk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3Rv
cmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJC
YWNraW5nU3RvcmUuaAppbmRleCA5MmFhNzYwZDIwNzMzNzE4ZmJkYjhjMDQ0Y2ZlNjdkY2FiMTY1
MzM1Li4wOTMwMWU4M2ZjYTdjNzUwOWUyODU4MTEwYzEyNzgzNTMzNThmM2RhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2lu
Z1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01l
bW9yeUlEQkJhY2tpbmdTdG9yZS5oCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAiSURCUmVz
b3VyY2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSW5kZXhLZXkuaCIKICNpbmNsdWRlICJNZW1v
cnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbi5oIgotI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4K
ICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00MSw4
ICs0MCw4IEBAIGNsYXNzIE1lbW9yeU9iamVjdFN0b3JlOwogY2xhc3MgTWVtb3J5SURCQmFja2lu
Z1N0b3JlIGZpbmFsIDogcHVibGljIElEQkJhY2tpbmdTdG9yZSB7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgTWVtb3J5SURCQmFja2luZ1N0b3JlKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImKTsKLSAgICB+TWVtb3J5SURCQmFj
a2luZ1N0b3JlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgTWVtb3J5SURCQmFja2lu
Z1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYpOworICAgIFdFQkNPUkVfRVhQT1JU
IH5NZW1vcnlJREJCYWNraW5nU3RvcmUoKTsKIAogICAgIElEQkVycm9yIGdldE9yRXN0YWJsaXNo
RGF0YWJhc2VJbmZvKElEQkRhdGFiYXNlSW5mbyYpIGZpbmFsOwogICAgIHVpbnQ2NF90IGRhdGFi
YXNlVmVyc2lvbigpIGZpbmFsOwpAQCAtOTIsNyArOTEsNiBAQCBwcml2YXRlOgogICAgIHZvaWQg
dW5yZWdpc3Rlck9iamVjdFN0b3JlKE1lbW9yeU9iamVjdFN0b3JlJik7CiAKICAgICBJREJEYXRh
YmFzZUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwotICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lv
bklEOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJREJEYXRhYmFzZUluZm8+IG1fZGF0YWJhc2VJbmZv
OwogCiAgICAgSGFzaE1hcDxJREJSZXNvdXJjZUlkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxN
ZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbj4+IG1fdHJhbnNhY3Rpb25zOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0
b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlP
YmplY3RTdG9yZS5jcHAKaW5kZXggOWRkYzBmY2Y5OTE5M2YzMzRiZGM1ZDQyNjFlYTM5MWRlNGJh
YWI3YS4uZTAxZWUwMmI3MTUyMzk5Y2M3MjZmYjE4YmMzNDkxNDYwNGRlNzNlYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0
b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVt
b3J5T2JqZWN0U3RvcmUuY3BwCkBAIC0zOCwxOCArMzgsMTcgQEAKICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9KU0NKU1ZhbHVlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSlNWYWx1
ZUlubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0xvY2suaD4KLSNpbmNsdWRl
IDxwYWwvU2Vzc2lvbklELmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFj
ZSBKU0M7CiBuYW1lc3BhY2UgSURCU2VydmVyIHsKIAotUmVmPE1lbW9yeU9iamVjdFN0b3JlPiBN
ZW1vcnlPYmplY3RTdG9yZTo6Y3JlYXRlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
SURCT2JqZWN0U3RvcmVJbmZvJiBpbmZvKQorUmVmPE1lbW9yeU9iamVjdFN0b3JlPiBNZW1vcnlP
YmplY3RTdG9yZTo6Y3JlYXRlKGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYgaW5mbykKIHsKLSAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZW1vcnlPYmplY3RTdG9yZShzZXNzaW9uSUQsIGluZm8p
KTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZW1vcnlPYmplY3RTdG9yZShpbmZvKSk7CiB9
CiAKLU1lbW9yeU9iamVjdFN0b3JlOjpNZW1vcnlPYmplY3RTdG9yZShQQUw6OlNlc3Npb25JRCwg
Y29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiBpbmZvKQorTWVtb3J5T2JqZWN0U3RvcmU6Ok1lbW9y
eU9iamVjdFN0b3JlKGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYgaW5mbykKICAgICA6IG1faW5m
byhpbmZvKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuaAppbmRleCA4NzFkZWI1ZTRhZTA1MTQ4
MmI5MDg5Njg5NWVhMzFjMjc2ZGQzMDg2Li5mMDNhM2ExYjBhZDUzNGI5ZjMzOWM0ZmJkN2U3NDBh
ZGYyMjg0NzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuaApAQCAtMzQsMTAgKzM0LDYgQEAKICNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKLW5h
bWVzcGFjZSBQQUwgewotY2xhc3MgU2Vzc2lvbklEOwotfQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIElEQkN1cnNvckluZm87CkBAIC02MSw3ICs1Nyw3IEBAIHR5cGVkZWYgSGFzaE1h
cDxJREJLZXlEYXRhLCBUaHJlYWRTYWZlRGF0YUJ1ZmZlciwgSURCS2V5RGF0YUhhc2gsIElEQktl
eURhdGFIYXNoCiAKIGNsYXNzIE1lbW9yeU9iamVjdFN0b3JlIDogcHVibGljIFJlZkNvdW50ZWQ8
TWVtb3J5T2JqZWN0U3RvcmU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPE1lbW9yeU9iamVj
dFN0b3JlPiBjcmVhdGUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYp
OworICAgIHN0YXRpYyBSZWY8TWVtb3J5T2JqZWN0U3RvcmU+IGNyZWF0ZShjb25zdCBJREJPYmpl
Y3RTdG9yZUluZm8mKTsKIAogICAgIH5NZW1vcnlPYmplY3RTdG9yZSgpOwogCkBAIC0xMDgsNyAr
MTA0LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVuYW1lSW5kZXgoTWVtb3J5SW5kZXgmLCBjb25z
dCBTdHJpbmcmIG5ld05hbWUpOwogCiBwcml2YXRlOgotICAgIE1lbW9yeU9iamVjdFN0b3JlKFBB
TDo6U2Vzc2lvbklELCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mKTsKKyAgICBNZW1vcnlPYmpl
Y3RTdG9yZShjb25zdCBJREJPYmplY3RTdG9yZUluZm8mKTsKIAogICAgIElEQktleURhdGFTZXQ6
Oml0ZXJhdG9yIGxvd2VzdEl0ZXJhdG9ySW5SYW5nZShjb25zdCBJREJLZXlSYW5nZURhdGEmLCBi
b29sIHJldmVyc2UpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCmlu
ZGV4IDc4NDYxZjEzNmY3N2I0OGUwNDI1NTY5OWQ4ZDlhYzg0OWQ5YzQ2NWQuLjkyMWFhMmIwYjg4
MDliM2E0ZGNmNzMyMTg5ZGI5MDlhNDYwYWIxOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5n
U3RvcmUuY3BwCkBAIC0yMzYsMTIgKzIzNiwxMCBAQCBzdGF0aWMgQVNDSUlMaXRlcmFsIGluZGV4
SW5mb1RhYmxlU2NoZW1hVGVtcCgpCiAgICAgcmV0dXJuIFRBQkxFX1NDSEVNQV9QUkVGSVggIl9U
ZW1wX0luZGV4SW5mbyIgSU5ERVhfSU5GT19UQUJMRV9TQ0hFTUFfU1VGRklYOwogfQogCi1TUUxp
dGVJREJCYWNraW5nU3RvcmU6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZShQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYgaWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBkYXRhYmFzZVJvb3REaXJlY3RvcnkpCi0gICAgOiBtX3Nlc3Npb25JRChzZXNzaW9u
SUQpCi0gICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKLSAgICAsIG1fZGF0YWJhc2VSb290
RGlyZWN0b3J5KGRhdGFiYXNlUm9vdERpcmVjdG9yeSkKK1NRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
U1FMaXRlSURCQmFja2luZ1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYgaWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZURpcmVjdG9yeSkKKyAgICA6IG1faWRlbnRpZmll
cihpZGVudGlmaWVyKQorICAgICwgbV9kYXRhYmFzZURpcmVjdG9yeShkYXRhYmFzZURpcmVjdG9y
eSkKIHsKLSAgICBtX2RhdGFiYXNlRGlyZWN0b3J5ID0gZnVsbERhdGFiYXNlRGlyZWN0b3J5V2l0
aFVwZ3JhZGUoKTsKIH0KIAogU1FMaXRlSURCQmFja2luZ1N0b3JlOjp+U1FMaXRlSURCQmFja2lu
Z1N0b3JlKCkKQEAgLTkxMiwxOSArOTEwLDI5IEBAIHN0ZDo6dW5pcXVlX3B0cjxJREJEYXRhYmFz
ZUluZm8+IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZXh0cmFjdEV4aXN0aW5nRGF0YWJhc2VJCiAg
ICAgcmV0dXJuIGRhdGFiYXNlSW5mbzsKIH0KIAotU3RyaW5nIFNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6ZmlsZW5hbWVGb3JEYXRhYmFzZU5hbWUoKSBjb25zdAorU3RyaW5nIFNRTGl0ZUlEQkJhY2tp
bmdTdG9yZTo6ZW5jb2RlRGF0YWJhc2VOYW1lKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lKQog
ewotICAgIEFTU0VSVCghbV9pZGVudGlmaWVyLmRhdGFiYXNlTmFtZSgpLmlzTnVsbCgpKTsKLQot
ICAgIGlmIChtX2lkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCkuaXNFbXB0eSgpKQorICAgIEFTU0VS
VCghZGF0YWJhc2VOYW1lLmlzRW1wdHkoKSk7CisgICAgaWYgKGRhdGFiYXNlTmFtZS5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiAiJTAwIjsKIAotICAgIFN0cmluZyBmaWxlbmFtZSA9IEZpbGVT
eXN0ZW06OmVuY29kZUZvckZpbGVOYW1lKG1faWRlbnRpZmllci5kYXRhYmFzZU5hbWUoKSk7Ci0g
ICAgZmlsZW5hbWUucmVwbGFjZSgnLicsICIlMkUiKTsKKyAgICBTdHJpbmcgZmlsZW5hbWUgPSBG
aWxlU3lzdGVtOjplbmNvZGVGb3JGaWxlTmFtZShkYXRhYmFzZU5hbWUpOworICAgIGZpbGVuYW1l
LnJlcGxhY2VXaXRoTGl0ZXJhbCgnLicsICIlMkUiKTsKIAogICAgIHJldHVybiBmaWxlbmFtZTsK
IH0KIAorU3RyaW5nIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVjb2RlRGF0YWJhc2VOYW1lKGNv
bnN0IFN0cmluZyYgZW5jb2RlZE5hbWUpCit7CisgICAgaWYgKGVuY29kZWROYW1lID09ICIlMDAi
X3MpCisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOworCisgICAgU3RyaW5nIG5hbWUgPSBl
bmNvZGVkTmFtZTsKKyAgICBuYW1lLnJlcGxhY2UoIiUyRSJfcywgIi4iX3MpOworCisgICAgcmV0
dXJuIEZpbGVTeXN0ZW06OmRlY29kZUZyb21GaWxlbmFtZShuYW1lKTsKK30KKwogU3RyaW5nIFNR
TGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZnVsbERhdGFiYXNlUGF0aEZvckRpcmVjdG9yeShjb25zdCBT
dHJpbmcmIGZ1bGxEYXRhYmFzZURpcmVjdG9yeSkKIHsKICAgICByZXR1cm4gRmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGZ1bGxEYXRhYmFzZURpcmVjdG9yeSwgIkluZGV4ZWRE
Qi5zcWxpdGUzIik7CkBAIC05NjUsMjMgKzk3Myw2IEBAIHN0ZDo6b3B0aW9uYWw8SURCRGF0YWJh
c2VOYW1lQW5kVmVyc2lvbj4gU1FMaXRlSURCQmFja2luZ1N0b3JlOjpkYXRhYmFzZU5hbWVBbmRW
CiAgICAgcmV0dXJuIElEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24geyBkYXRhYmFzZU5hbWUsICpk
YXRhYmFzZVZlcnNpb24gfTsKIH0KIAotU3RyaW5nIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZnVs
bERhdGFiYXNlRGlyZWN0b3J5V2l0aFVwZ3JhZGUoKQotewotICAgIFN0cmluZyBvbGRPcmlnaW5E
aXJlY3RvcnkgPSBtX2lkZW50aWZpZXIuZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9vdCht
X2RhdGFiYXNlUm9vdERpcmVjdG9yeSwgInYwIik7Ci0gICAgU3RyaW5nIG9sZERhdGFiYXNlRGly
ZWN0b3J5ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG9sZE9yaWdpbkRp
cmVjdG9yeSwgZmlsZW5hbWVGb3JEYXRhYmFzZU5hbWUoKSk7Ci0gICAgU3RyaW5nIG5ld09yaWdp
bkRpcmVjdG9yeSA9IG1faWRlbnRpZmllci5kYXRhYmFzZURpcmVjdG9yeVJlbGF0aXZlVG9Sb290
KG1fZGF0YWJhc2VSb290RGlyZWN0b3J5LCAidjEiKTsKLSAgICBTdHJpbmcgZmlsZU5hbWVIYXNo
ID0gU1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0ZUhhc2hGb3JGaWxlTmFtZShtX2lkZW50aWZpZXIu
ZGF0YWJhc2VOYW1lKCkpOwotICAgIFN0cmluZyBuZXdEYXRhYmFzZURpcmVjdG9yeSA9IEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChuZXdPcmlnaW5EaXJlY3RvcnksIGZpbGVO
YW1lSGFzaCk7Ci0gICAgRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKG5ld0RhdGFiYXNl
RGlyZWN0b3J5KTsKLQotICAgIGlmIChGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG9sZERhdGFiYXNl
RGlyZWN0b3J5KSkgewotICAgICAgICBGaWxlU3lzdGVtOjptb3ZlRmlsZShvbGREYXRhYmFzZURp
cmVjdG9yeSwgbmV3RGF0YWJhc2VEaXJlY3RvcnkpOwotICAgICAgICBGaWxlU3lzdGVtOjpkZWxl
dGVFbXB0eURpcmVjdG9yeShvbGRPcmlnaW5EaXJlY3RvcnkpOwotICAgIH0KLQotICAgIHJldHVy
biBuZXdEYXRhYmFzZURpcmVjdG9yeTsKLX0KLQogSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0
b3JlOjpnZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbyhJREJEYXRhYmFzZUluZm8mIGluZm8pCiB7
CiAgICAgTE9HKEluZGV4ZWREQiwgIlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0T3JFc3RhYmxp
c2hEYXRhYmFzZUluZm8gLSBkYXRhYmFzZSAlcyIsIG1faWRlbnRpZmllci5kYXRhYmFzZU5hbWUo
KS51dGY4KCkuZGF0YSgpKTsKQEAgLTk5MSwxMSArOTgyLDExIEBAIElEQkVycm9yIFNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6Z2V0T3JFc3RhYmxpc2hEYXRhYmFzZUluZm8oSURCRGF0YWJhc2VJbmZv
JiBpbmZvCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IH07CiAgICAgfQogCi0gICAgU3RyaW5n
IGRiRmlsZW5hbWUgPSBmdWxsRGF0YWJhc2VQYXRoKCk7Ci0KKyAgICBTdHJpbmcgZGF0YWJhc2VQ
YXRoID0gZnVsbERhdGFiYXNlUGF0aCgpOworICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3Rv
cmllcyhGaWxlU3lzdGVtOjpwYXJlbnRQYXRoKGRhdGFiYXNlUGF0aCkpOwogICAgIG1fc3FsaXRl
REIgPSBtYWtlVW5pcXVlPFNRTGl0ZURhdGFiYXNlPigpOwotICAgIGlmICghbV9zcWxpdGVEQi0+
b3BlbihkYkZpbGVuYW1lKSkgewotICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBvcGVuIFNR
TGl0ZSBkYXRhYmFzZSBhdCBwYXRoICclcyciLCBkYkZpbGVuYW1lLnV0ZjgoKS5kYXRhKCkpOwor
ICAgIGlmICghbV9zcWxpdGVEQi0+b3BlbihkYXRhYmFzZVBhdGgpKSB7CisgICAgICAgIExPR19F
UlJPUigiRmFpbGVkIHRvIG9wZW4gU1FMaXRlIGRhdGFiYXNlIGF0IHBhdGggJyVzJyIsIGRhdGFi
YXNlUGF0aC51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgY2xvc2VTUUxpdGVEQigpOwogICAgIH0K
IApAQCAtMTA0NCw3ICsxMDM1LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpn
ZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbyhJREJEYXRhYmFzZUluZm8mIGluZm8KICAgICAgICAg
ZGF0YWJhc2VJbmZvID0gY3JlYXRlQW5kUG9wdWxhdGVJbml0aWFsRGF0YWJhc2VJbmZvKCk7CiAK
ICAgICBpZiAoIWRhdGFiYXNlSW5mbykgewotICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBl
c3RhYmxpc2ggSURCIGRhdGFiYXNlIGF0IHBhdGggJyVzJyIsIGRiRmlsZW5hbWUudXRmOCgpLmRh
dGEoKSk7CisgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGVzdGFibGlzaCBJREIgZGF0YWJh
c2UgYXQgcGF0aCAnJXMnIiwgZGF0YWJhc2VQYXRoLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBj
bG9zZVNRTGl0ZURCKCk7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwg
IlVuYWJsZSB0byBlc3RhYmxpc2ggSURCIGRhdGFiYXNlIGZpbGUiX3MgfTsKICAgICB9CkBAIC0y
Nzk4LDcgKzI3ODksNiBAQCB2b2lkIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlQmFja2lu
Z1N0b3JlKCkKIAogICAgIFNRTGl0ZUZpbGVTeXN0ZW06OmRlbGV0ZURhdGFiYXNlRmlsZShkYXRh
YmFzZVBhdGgpOwogICAgIFNRTGl0ZUZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGF0YWJhc2VEaXJl
Y3RvcnkobV9kYXRhYmFzZURpcmVjdG9yeSk7Ci0gICAgU1FMaXRlRmlsZVN5c3RlbTo6ZGVsZXRl
RW1wdHlEYXRhYmFzZURpcmVjdG9yeShtX2lkZW50aWZpZXIuZGF0YWJhc2VEaXJlY3RvcnlSZWxh
dGl2ZVRvUm9vdChtX2RhdGFiYXNlUm9vdERpcmVjdG9yeSkpOwogfQogCiB2b2lkIFNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6dW5yZWdpc3RlckN1cnNvcihTUUxpdGVJREJDdXJzb3ImIGN1cnNvcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxp
dGVJREJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaAppbmRleCAyZWZlNmIyYTM0MTk5M2JiMjZmZGY5
MWNmZjZlN2RlYThkYmJlZDM2Li43MzFhOWE0MTkzODY1ZTNjNWYzYzM1ZWQ3NTcxYjEyODJmNzgw
OTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
U1FMaXRlSURCQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5oCkBAIC01MSw5ICs1MSw4IEBAIGNs
YXNzIFNRTGl0ZUlEQkN1cnNvcjsKIGNsYXNzIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZSBmaW5hbCA6
IHB1YmxpYyBJREJCYWNraW5nU3RvcmUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgotICAgIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZShQQUw6OlNlc3Npb25JRCwgY29uc3Qg
SURCRGF0YWJhc2VJZGVudGlmaWVyJiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZVJvb3REaXJlY3Rv
cnkpOwotICAgIAotICAgIH5TUUxpdGVJREJCYWNraW5nU3RvcmUoKSBmaW5hbDsKKyAgICBXRUJD
T1JFX0VYUE9SVCBTUUxpdGVJREJCYWNraW5nU3RvcmUoY29uc3QgSURCRGF0YWJhc2VJZGVudGlm
aWVyJiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZURpcmVjdG9yeSk7CisgICAgV0VCQ09SRV9FWFBP
UlQgflNRTGl0ZUlEQkJhY2tpbmdTdG9yZSgpIGZpbmFsOwogCiAgICAgSURCRXJyb3IgZ2V0T3JF
c3RhYmxpc2hEYXRhYmFzZUluZm8oSURCRGF0YWJhc2VJbmZvJikgZmluYWw7CiAgICAgdWludDY0
X3QgZGF0YWJhc2VWZXJzaW9uKCkgZmluYWw7CkBAIC05NCwxOCArOTMsMTUgQEAgcHVibGljOgog
CiAgICAgSURCRXJyb3IgZ2V0QmxvYlJlY29yZHNGb3JPYmplY3RTdG9yZVJlY29yZChpbnQ2NF90
IG9iamVjdFN0b3JlUmVjb3JkLCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIFZlY3RvcjxTdHJp
bmc+JiBibG9iRmlsZVBhdGhzKTsKIAotICAgIHN0YXRpYyB1aW50NjRfdCBkYXRhYmFzZXNTaXpl
Rm9yRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKLQorICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyB1aW50NjRfdCBkYXRhYmFzZXNTaXplRm9yRGlyZWN0b3J5KGNvbnN0IFN0cmlu
ZyYgZGlyZWN0b3J5KTsKICAgICBTdHJpbmcgZGF0YWJhc2VEaXJlY3RvcnkoKSBjb25zdCB7IHJl
dHVybiBtX2RhdGFiYXNlRGlyZWN0b3J5OyB9OwotICAgIHN0YXRpYyBTdHJpbmcgZnVsbERhdGFi
YXNlUGF0aEZvckRpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKLSAgICBzdGF0aWMgc3RkOjpvcHRp
b25hbDxJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiBkYXRhYmFzZU5hbWVBbmRWZXJzaW9uRnJv
bUZpbGUoY29uc3QgU3RyaW5nJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBm
dWxsRGF0YWJhc2VQYXRoRm9yRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpOworICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBTdHJpbmcgZW5jb2RlRGF0YWJhc2VOYW1lKGNvbnN0IFN0cmluZyYgZGF0
YWJhc2VOYW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIGRlY29kZURhdGFi
YXNlTmFtZShjb25zdCBTdHJpbmcmIGVuY29kZWREYXRhYmFzZU5hbWUpOwogCi0gICAgUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjpvcHRpb25hbDxJREJEYXRhYmFzZU5hbWVBbmRWZXJz
aW9uPiBkYXRhYmFzZU5hbWVBbmRWZXJzaW9uRnJvbUZpbGUoY29uc3QgU3RyaW5nJik7CiAKIHBy
aXZhdGU6Ci0gICAgU3RyaW5nIGZpbGVuYW1lRm9yRGF0YWJhc2VOYW1lKCkgY29uc3Q7Ci0gICAg
U3RyaW5nIGZ1bGxEYXRhYmFzZURpcmVjdG9yeVdpdGhVcGdyYWRlKCk7Ci0KICAgICBJREJFcnJv
ciBlbnN1cmVWYWxpZFJlY29yZHNUYWJsZSgpOwogICAgIElEQkVycm9yIGVuc3VyZVZhbGlkSW5k
ZXhSZWNvcmRzVGFibGUoKTsKICAgICBJREJFcnJvciBlbnN1cmVWYWxpZEluZGV4UmVjb3Jkc0lu
ZGV4KCk7CkBAIC0yMDYsNyArMjAyLDYgQEAgcHJpdmF0ZToKIAogICAgIHN0ZDo6dW5pcXVlX3B0
cjxTUUxpdGVTdGF0ZW1lbnQ+IG1fY2FjaGVkU3RhdGVtZW50c1tzdGF0aWNfY2FzdDxpbnQ+KFNR
TDo6SW52YWxpZCldOwogCi0gICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAgICAgSURC
RGF0YWJhc2VJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SURC
RGF0YWJhc2VJbmZvPiBtX2RhdGFiYXNlSW5mbzsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SURCRGF0
YWJhc2VJbmZvPiBtX29yaWdpbmFsRGF0YWJhc2VJbmZvQmVmb3JlVmVyc2lvbkNoYW5nZTsKQEAg
LTIxNiw3ICsyMTEsNiBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8SURCUmVzb3VyY2VJZGVudGlm
aWVyLCBzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlSURCVHJhbnNhY3Rpb24+PiBtX3RyYW5zYWN0aW9u
czsKICAgICBIYXNoTWFwPElEQlJlc291cmNlSWRlbnRpZmllciwgU1FMaXRlSURCQ3Vyc29yKj4g
bV9jdXJzb3JzOwogCi0gICAgU3RyaW5nIG1fZGF0YWJhc2VSb290RGlyZWN0b3J5OwogICAgIFN0
cmluZyBtX2RhdGFiYXNlRGlyZWN0b3J5OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAK
aW5kZXggMmIxZWFkYjllYTVjNDY0ZDAyNzVlZDIyM2Y1MDAzYjdiZWYxNTczMy4uYjYyOGIwN2Ew
NTllOTM4YzUzYzBlY2FkMTE0MGQ2NDY0MGQzNTBhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2Uu
Y3BwCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlN0
b3JhZ2VRdW90YU1hbmFnZXIuaCIKICNpbmNsdWRlICJVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rp
b24uaCIKKyNpbmNsdWRlICJVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuaCIKICNpbmNsdWRlIDx3
dGYvU2NvcGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTM0LDggKzEzNSw4IEBAIHN0
YXRpYyBpbmxpbmUgdWludDY0X3QgZXN0aW1hdGVTaXplKGNvbnN0IElEQk9iamVjdFN0b3JlSW5m
byYgaW5mbykKICAgICByZXR1cm4gc2l6ZTsKIH0KIAotVW5pcXVlSURCRGF0YWJhc2U6OlVuaXF1
ZUlEQkRhdGFiYXNlKElEQlNlcnZlciYgc2VydmVyLCBjb25zdCBJREJEYXRhYmFzZUlkZW50aWZp
ZXImIGlkZW50aWZpZXIpCi0gICAgOiBtX3NlcnZlcihzZXJ2ZXIpCitVbmlxdWVJREJEYXRhYmFz
ZTo6VW5pcXVlSURCRGF0YWJhc2UoVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyJiBtYW5hZ2VyLCBj
b25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImIGlkZW50aWZpZXIpCisgICAgOiBtX21hbmFnZXIo
bWFuYWdlcikKICAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogewogICAgIEFTU0VSVCgh
aXNNYWluVGhyZWFkKCkpOwpAQCAtMTYzLDYgKzE2NCwxMSBAQCBjb25zdCBJREJEYXRhYmFzZUlu
Zm8mIFVuaXF1ZUlEQkRhdGFiYXNlOjppbmZvKCkgY29uc3QKICAgICByZXR1cm4gKm1fZGF0YWJh
c2VJbmZvOwogfQogCitVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIqIFVuaXF1ZUlEQkRhdGFiYXNl
OjptYW5hZ2VyKCkKK3sKKyAgICByZXR1cm4gbV9tYW5hZ2VyLmdldCgpOworfQorCiB2b2lkIFVu
aXF1ZUlEQkRhdGFiYXNlOjpvcGVuRGF0YWJhc2VDb25uZWN0aW9uKElEQkNvbm5lY3Rpb25Ub0Ns
aWVudCYgY29ubmVjdGlvbiwgY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhKQogewog
ICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6b3BlbkRhdGFiYXNlQ29ubmVj
dGlvbiIpOwpAQCAtMTg1LDE3ICsxOTEsNDUgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cGVy
Zm9ybUN1cnJlbnRPcGVuT3BlcmF0aW9uKCkKICAgICBBU1NFUlQobV9jdXJyZW50T3BlbkRCUmVx
dWVzdCk7CiAgICAgQVNTRVJUKG1fY3VycmVudE9wZW5EQlJlcXVlc3QtPmlzT3BlblJlcXVlc3Qo
KSk7CiAKKyAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGNyZWF0ZSB0aGUgZmlsZSBzbyBubyBuZWVk
IHRvIGRvIHNwYWNlIGNoZWNrLgorICAgIGlmIChtX2JhY2tpbmdTdG9yZSkKKyAgICAgICAgcmV0
dXJuIHBlcmZvcm1DdXJyZW50T3Blbk9wZXJhdGlvbkFmdGVyU3BhY2VDaGVjayh0cnVlKTsKKwor
ICAgIGlmICghbV9tYW5hZ2VyKQorICAgICAgICByZXR1cm4gcGVyZm9ybUN1cnJlbnRPcGVuT3Bl
cmF0aW9uQWZ0ZXJTcGFjZUNoZWNrKGZhbHNlKTsKKworICAgIGF1dG8gcmVxdWVzdElkZW50aWZp
ZXIgPSBtX2N1cnJlbnRPcGVuREJSZXF1ZXN0LT5yZXF1ZXN0RGF0YSgpLnJlcXVlc3RJZGVudGlm
aWVyKCk7CisgICAgaWYgKG1fb3BlbkRCUmVxdWVzdHNGb3JTcGFjZUNoZWNrLmNvbnRhaW5zKHJl
cXVlc3RJZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9vcGVuREJSZXF1ZXN0
c0ZvclNwYWNlQ2hlY2suYWRkKHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICBtX21hbmFnZXItPnJl
cXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIGRlZmF1bHRXcml0ZU9wZXJhdGlvbkNv
c3QsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCByZXF1ZXN0SWRlbnRpZmll
cl0oYm9vbCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICBtX29wZW5EQlJlcXVlc3RzRm9yU3BhY2VDaGVjay5y
ZW1vdmUocmVxdWVzdElkZW50aWZpZXIpOworICAgICAgICBpZiAobV9jdXJyZW50T3BlbkRCUmVx
dWVzdC0+cmVxdWVzdERhdGEoKS5yZXF1ZXN0SWRlbnRpZmllcigpICE9IHJlcXVlc3RJZGVudGlm
aWVyKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHBlcmZvcm1DdXJyZW50T3Blbk9w
ZXJhdGlvbkFmdGVyU3BhY2VDaGVjayhncmFudGVkKTsKKyAgICB9KTsKK30KKwordm9pZCBVbmlx
dWVJREJEYXRhYmFzZTo6cGVyZm9ybUN1cnJlbnRPcGVuT3BlcmF0aW9uQWZ0ZXJTcGFjZUNoZWNr
KGJvb2wgaXNHcmFudGVkKQoreworICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFz
ZTo6cGVyZm9ybUN1cnJlbnRPcGVuT3BlcmF0aW9uQWZ0ZXJTcGFjZVJlcXVlc3QgKCVwKSIsIHRo
aXMpOworCiAgICAgSURCRXJyb3IgYmFja2luZ1N0b3JlT3BlbkVycm9yOwogICAgIGlmICghbV9i
YWNraW5nU3RvcmUpIHsKLSAgICAgICAgLy8gUXVvdGEgY2hlY2suCi0gICAgICAgIGF1dG8gZGVj
aXNpb24gPSBtX3NlcnZlci5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCBkZWZh
dWx0V3JpdGVPcGVyYXRpb25Db3N0KTsKLSAgICAgICAgaWYgKGRlY2lzaW9uID09IFN0b3JhZ2VR
dW90YU1hbmFnZXI6OkRlY2lzaW9uOjpEZW55KQorICAgICAgICBpZiAoIW1fbWFuYWdlcikKKyAg
ICAgICAgICAgIGJhY2tpbmdTdG9yZU9wZW5FcnJvciA9IElEQkVycm9yIHsgSW52YWxpZFN0YXRl
RXJyb3IgfTsKKyAgICAgICAgZWxzZSBpZiAoIWlzR3JhbnRlZCkKICAgICAgICAgICAgIGJhY2tp
bmdTdG9yZU9wZW5FcnJvciA9IElEQkVycm9yIHsgUXVvdGFFeGNlZWRlZEVycm9yLCBxdW90YUVy
cm9yTWVzc2FnZU5hbWUoIk9wZW5CYWNraW5nU3RvcmUiKSB9OwogICAgICAgICBlbHNlIHsKLSAg
ICAgICAgICAgIG1fYmFja2luZ1N0b3JlID0gbV9zZXJ2ZXIuY3JlYXRlQmFja2luZ1N0b3JlKG1f
aWRlbnRpZmllcik7CisgICAgICAgICAgICBtX2JhY2tpbmdTdG9yZSA9IG1fbWFuYWdlci0+Y3Jl
YXRlQmFja2luZ1N0b3JlKG1faWRlbnRpZmllcik7CiAgICAgICAgICAgICBJREJEYXRhYmFzZUlu
Zm8gZGF0YWJhc2VJbmZvOwogICAgICAgICAgICAgYmFja2luZ1N0b3JlT3BlbkVycm9yID0gbV9i
YWNraW5nU3RvcmUtPmdldE9yRXN0YWJsaXNoRGF0YWJhc2VJbmZvKGRhdGFiYXNlSW5mbyk7Ci0g
ICAgICAgICAgICBpZiAoYmFja2luZ1N0b3JlT3BlbkVycm9yLmlzTnVsbCgpKQorICAgICAgICAg
ICAgaWYgKCFiYWNraW5nU3RvcmVPcGVuRXJyb3IpCiAgICAgICAgICAgICAgICAgbV9kYXRhYmFz
ZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oZGF0YWJhc2VJbmZvKTsKICAgICAg
ICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGdldCBk
YXRhYmFzZSBpbmZvICclcyciLCBiYWNraW5nU3RvcmVPcGVuRXJyb3IubWVzc2FnZSgpLnV0Zjgo
KS5kYXRhKCkpOwpAQCAtMjA0LDcgKzIzOCw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnBl
cmZvcm1DdXJyZW50T3Blbk9wZXJhdGlvbigpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAo
IWJhY2tpbmdTdG9yZU9wZW5FcnJvci5pc051bGwoKSkgeworICAgIGlmIChiYWNraW5nU3RvcmVP
cGVuRXJyb3IpIHsKICAgICAgICAgYXV0byByZXN1bHQgPSBJREJSZXN1bHREYXRhOjplcnJvciht
X2N1cnJlbnRPcGVuREJSZXF1ZXN0LT5yZXF1ZXN0RGF0YSgpLnJlcXVlc3RJZGVudGlmaWVyKCks
IGJhY2tpbmdTdG9yZU9wZW5FcnJvcik7CiAgICAgICAgIG1fY3VycmVudE9wZW5EQlJlcXVlc3Qt
PmNvbm5lY3Rpb24oKS5kaWRPcGVuRGF0YWJhc2UocmVzdWx0KTsKICAgICAgICAgbV9jdXJyZW50
T3BlbkRCUmVxdWVzdCA9IG51bGxwdHI7CkBAIC0yOTQsNyArMzI4LDcgQEAgdm9pZCBVbmlxdWVJ
REJEYXRhYmFzZTo6ZGVsZXRlQmFja2luZ1N0b3JlKCkKICAgICBBU1NFUlQoIWlzTWFpblRocmVh
ZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZUJhY2tp
bmdTdG9yZSIpOwogICAgIAotICAgIGF1dG8gYmFja2luZ1N0b3JlID0gbV9iYWNraW5nU3RvcmUg
PyBzdGQ6OmV4Y2hhbmdlKG1fYmFja2luZ1N0b3JlLCBudWxscHRyKSA6IG1fc2VydmVyLmNyZWF0
ZUJhY2tpbmdTdG9yZShtX2lkZW50aWZpZXIpOworICAgIGF1dG8gYmFja2luZ1N0b3JlID0gbV9i
YWNraW5nU3RvcmUgPyBzdGQ6OmV4Y2hhbmdlKG1fYmFja2luZ1N0b3JlLCBudWxscHRyKSA6IG1f
bWFuYWdlci0+Y3JlYXRlQmFja2luZ1N0b3JlKG1faWRlbnRpZmllcik7CiAgICAgdWludDY0X3Qg
ZGVsZXRlZFZlcnNpb24gPSBiYWNraW5nU3RvcmUtPmRhdGFiYXNlVmVyc2lvbigpOwogICAgIGJh
Y2tpbmdTdG9yZS0+ZGVsZXRlQmFja2luZ1N0b3JlKCk7CiAgICAgZGlkRGVsZXRlQmFja2luZ1N0
b3JlKGRlbGV0ZWRWZXJzaW9uKTsKQEAgLTU0MiwyMCArNTc2LDMyIEBAIHZvaWQgVW5pcXVlSURC
RGF0YWJhc2U6OmFkZE9wZW5EYXRhYmFzZUNvbm5lY3Rpb24oUmVmPFVuaXF1ZUlEQkRhdGFiYXNl
Q29ubmVjdGlvCiAgICAgbV9vcGVuRGF0YWJhc2VDb25uZWN0aW9ucy5hZGQoYWRvcHRSZWYoY29u
bmVjdGlvbi5sZWFrUmVmKCkpKTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRl
T2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIGNv
bnN0IElEQk9iamVjdFN0b3JlSW5mbyYgaW5mbywgRXJyb3JDYWxsYmFjayBjYWxsYmFjaykKK3Zv
aWQgVW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNl
VHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mIGluZm8s
IEVycm9yQ2FsbGJhY2sgY2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgc3BhY2VDaGVja1Jlc3Vs
dCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAi
VW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlIik7CiAKLSAgICBBU1NFUlQobV9i
YWNraW5nU3RvcmUpOworICAgIGlmIChzcGFjZUNoZWNrUmVzdWx0ID09IFNwYWNlQ2hlY2tSZXN1
bHQ6OlVua25vd24pIHsKKyAgICAgICAgaWYgKCFtX21hbmFnZXIpCisgICAgICAgICAgICByZXR1
cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciB9KTsKIAotICAgIC8vIFF1
b3RhIGNoZWNrLgotICAgIGF1dG8gdGFza1NpemUgPSBkZWZhdWx0V3JpdGVPcGVyYXRpb25Db3N0
ICsgZXN0aW1hdGVTaXplKGluZm8pOwotICAgIGlmIChtX3NlcnZlci5yZXF1ZXN0U3BhY2UobV9p
ZGVudGlmaWVyLm9yaWdpbigpLCB0YXNrU2l6ZSkgPT0gU3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVj
aXNpb246OkRlbnkpIHsKKyAgICAgICAgYXV0byB0YXNrU2l6ZSA9IGRlZmF1bHRXcml0ZU9wZXJh
dGlvbkNvc3QgKyBlc3RpbWF0ZVNpemUoaW5mbyk7CisgICAgICAgIG1fbWFuYWdlci0+cmVxdWVz
dFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwgdGFza1NpemUsIFt0aGlzLCB3ZWFrVGhpcyA9
IFdlYWtQdHIgeyAqdGhpcyB9LCB3ZWFrVHJhbnNhY3Rpb24gPSBXZWFrUHRyIHsgdHJhbnNhY3Rp
b24gfSwgaW5mbywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBncmFudGVkKSBt
dXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMgfHwgIXdlYWtUcmFuc2FjdGlvbikK
KyAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVF
cnJvciwgIkRhdGFiYXNlIG9yIHRyYW5zYWN0aW9uIGlzIGNsb3NlZCIgfSk7CisgICAgICAgICAg
ICBjcmVhdGVPYmplY3RTdG9yZSgqd2Vha1RyYW5zYWN0aW9uLCBpbmZvLCBXVEZNb3ZlKGNhbGxi
YWNrKSwgZ3JhbnRlZCA/IFNwYWNlQ2hlY2tSZXN1bHQ6OlBhc3MgOiBTcGFjZUNoZWNrUmVzdWx0
OjpGYWlsKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAo
c3BhY2VDaGVja1Jlc3VsdCAhPSBTcGFjZUNoZWNrUmVzdWx0OjpQYXNzKSB7CiAgICAgICAgIGNh
bGxiYWNrKElEQkVycm9yIHsgUXVvdGFFeGNlZWRlZEVycm9yLCBxdW90YUVycm9yTWVzc2FnZU5h
bWUoIkNyZWF0ZU9iamVjdFN0b3JlIikgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAg
ICBpZiAoIW1fYmFja2luZ1N0b3JlKQorICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3Ig
eyBJbnZhbGlkU3RhdGVFcnJvciwgIkJhY2tpbmcgc3RvcmUgaGFzIGNsb3NlZCIgfSk7CisKICAg
ICBhdXRvIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPmNyZWF0ZU9iamVjdFN0b3JlKHRyYW5zYWN0
aW9uLmluZm8oKS5pZGVudGlmaWVyKCksIGluZm8pOwogICAgIGlmIChlcnJvci5pc051bGwoKSkK
ICAgICAgICAgbV9kYXRhYmFzZUluZm8tPmFkZEV4aXN0aW5nT2JqZWN0U3RvcmUoaW5mbyk7CkBA
IC01NjMsMTggKzYwOSwzNCBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RT
dG9yZShVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdAogICAgIGNhbGxiYWNr
KGVycm9yKTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlT2JqZWN0U3RvcmUo
VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIGNvbnN0IFN0cmluZyYg
b2JqZWN0U3RvcmVOYW1lLCBFcnJvckNhbGxiYWNrIGNhbGxiYWNrKQordm9pZCBVbmlxdWVJREJE
YXRhYmFzZTo6ZGVsZXRlT2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYg
dHJhbnNhY3Rpb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lLCBFcnJvckNhbGxiYWNr
IGNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0IHNwYWNlQ2hlY2tSZXN1bHQpCiB7CiAgICAgQVNT
RVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFi
YXNlOjpkZWxldGVPYmplY3RTdG9yZSIpOwogCisgICAgaWYgKHNwYWNlQ2hlY2tSZXN1bHQgPT0g
U3BhY2VDaGVja1Jlc3VsdDo6VW5rbm93bikgeworICAgICAgICBpZiAoIW1fbWFuYWdlcikKKyAg
ICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yIH0p
OworCisgICAgICAgIG1fbWFuYWdlci0+cmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4o
KSwgMCwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHdlYWtUcmFuc2FjdGlv
biA9IFdlYWtQdHIgeyB0cmFuc2FjdGlvbiB9LCBvYmplY3RTdG9yZU5hbWUsIGNhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayldKGJvb2wgZ3JhbnRlZCkgbXV0YWJsZSB7CisgICAgICAgICAgICBp
ZiAoIXdlYWtUaGlzIHx8ICF3ZWFrVHJhbnNhY3Rpb24pCisgICAgICAgICAgICAgICAgcmV0dXJu
IGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJEYXRhYmFzZSBvciB0cmFu
c2FjdGlvbiBpcyBjbG9zZWQiIH0pOworCisgICAgICAgICAgICBkZWxldGVPYmplY3RTdG9yZSgq
d2Vha1RyYW5zYWN0aW9uLCBvYmplY3RTdG9yZU5hbWUsIFdURk1vdmUoY2FsbGJhY2spLCBncmFu
dGVkID8gU3BhY2VDaGVja1Jlc3VsdDo6UGFzcyA6IFNwYWNlQ2hlY2tSZXN1bHQ6OkZhaWwpOwor
ICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChzcGFjZUNo
ZWNrUmVzdWx0ID09IFNwYWNlQ2hlY2tSZXN1bHQ6OlBhc3MpOwogICAgIGF1dG8qIGluZm8gPSBt
X2RhdGFiYXNlSW5mby0+aW5mb0ZvckV4aXN0aW5nT2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1l
KTsKICAgICBpZiAoIWluZm8pIHsKICAgICAgICAgY2FsbGJhY2soSURCRXJyb3IgeyBVbmtub3du
RXJyb3IsICJBdHRlbXB0IHRvIGRlbGV0ZSBub24tZXhpc3RhbnQgb2JqZWN0IHN0b3JlIl9zIH0p
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgQVNTRVJUKG1fYmFja2luZ1N0b3JlKTsK
KyAgICBpZiAoIW1fYmFja2luZ1N0b3JlKQorICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJy
b3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkJhY2tpbmcgc3RvcmUgaXMgY2xvc2VkIiB9KTsKKwog
ICAgIGF1dG8gZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+ZGVsZXRlT2JqZWN0U3RvcmUodHJhbnNh
Y3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSwgaW5mby0+aWRlbnRpZmllcigpKTsKICAgICBpZiAo
ZXJyb3IuaXNOdWxsKCkpCiAgICAgICAgIG1fZGF0YWJhc2VJbmZvLT5kZWxldGVPYmplY3RTdG9y
ZShpbmZvLT5pZGVudGlmaWVyKCkpOwpAQCAtNTgyLDE0ICs2NDQsMjYgQEAgdm9pZCBVbmlxdWVJ
REJEYXRhYmFzZTo6ZGVsZXRlT2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlv
biYgdHJhbnNhY3QKICAgICBjYWxsYmFjayhlcnJvcik7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0
YWJhc2U6OnJlbmFtZU9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRy
YW5zYWN0aW9uLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
bmV3TmFtZSwgRXJyb3JDYWxsYmFjayBjYWxsYmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6
OnJlbmFtZU9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0
aW9uLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFt
ZSwgRXJyb3JDYWxsYmFjayBjYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCBzcGFjZUNoZWNrUmVz
dWx0KQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIExPRyhJbmRleGVkREIs
ICJVbmlxdWVJREJEYXRhYmFzZTo6cmVuYW1lT2JqZWN0U3RvcmUiKTsKIAotICAgIC8vIFF1b3Rh
IGNoZWNrLgotICAgIGF1dG8gdGFza1NpemUgPSBkZWZhdWx0V3JpdGVPcGVyYXRpb25Db3N0ICsg
bmV3TmFtZS5zaXplSW5CeXRlcygpOwotICAgIGlmIChtX3NlcnZlci5yZXF1ZXN0U3BhY2UobV9p
ZGVudGlmaWVyLm9yaWdpbigpLCB0YXNrU2l6ZSkgPT0gU3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVj
aXNpb246OkRlbnkpIHsKKyAgICBpZiAoc3BhY2VDaGVja1Jlc3VsdCA9PSBTcGFjZUNoZWNrUmVz
dWx0OjpVbmtub3duKSB7CisgICAgICAgIGlmICghbV9tYW5hZ2VyKQorICAgICAgICAgICAgcmV0
dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7CisKKyAgICAgICAg
YXV0byB0YXNrU2l6ZSA9IGRlZmF1bHRXcml0ZU9wZXJhdGlvbkNvc3QgKyBuZXdOYW1lLnNpemVJ
bkJ5dGVzKCk7CisgICAgICAgIG1fbWFuYWdlci0+cmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5v
cmlnaW4oKSwgdGFza1NpemUsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCB3
ZWFrVHJhbnNhY3Rpb24gPSBXZWFrUHRyIHsgdHJhbnNhY3Rpb24gfSwgb2JqZWN0U3RvcmVJZGVu
dGlmaWVyLCBuZXdOYW1lLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIGdyYW50
ZWQpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhd2Vha1RyYW5zYWN0
aW9uKQorICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRT
dGF0ZUVycm9yLCAiRGF0YWJhc2Ugb3IgdHJhbnNhY3Rpb24gaXMgY2xvc2VkIiB9KTsKKworICAg
ICAgICAgICAgcmVuYW1lT2JqZWN0U3RvcmUoKndlYWtUcmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVJ
ZGVudGlmaWVyLCBuZXdOYW1lLCBXVEZNb3ZlKGNhbGxiYWNrKSwgZ3JhbnRlZCA/IFNwYWNlQ2hl
Y2tSZXN1bHQ6OlBhc3MgOiBTcGFjZUNoZWNrUmVzdWx0OjpGYWlsKTsKKyAgICAgICAgfSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoc3BhY2VDaGVja1Jlc3VsdCAhPSBTcGFj
ZUNoZWNrUmVzdWx0OjpQYXNzKSB7CiAgICAgICAgIGNhbGxiYWNrKElEQkVycm9yKFF1b3RhRXhj
ZWVkZWRFcnJvciwgcXVvdGFFcnJvck1lc3NhZ2VOYW1lKCJSZW5hbWVPYmplY3RTdG9yZSIpKSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC02MDAsNyArNjc0LDkgQEAgdm9pZCBVbmlxdWVJ
REJEYXRhYmFzZTo6cmVuYW1lT2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlv
biYgdHJhbnNhY3QKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VSVChtX2JhY2tp
bmdTdG9yZSk7CisgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkKKyAgICAgICAgcmV0dXJuIGNhbGxi
YWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJCYWNraW5nIHN0b3JlIGlzIGNsb3Nl
ZCIgfSk7CisKICAgICBhdXRvIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPnJlbmFtZU9iamVjdFN0
b3JlKHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCksIG9iamVjdFN0b3JlSWRlbnRpZmll
ciwgbmV3TmFtZSk7CiAgICAgaWYgKGVycm9yLmlzTnVsbCgpKQogICAgICAgICBtX2RhdGFiYXNl
SW5mby0+cmVuYW1lT2JqZWN0U3RvcmUob2JqZWN0U3RvcmVJZGVudGlmaWVyLCBuZXdOYW1lKTsK
QEAgLTYwOCwzMCArNjg0LDU5IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnJlbmFtZU9iamVj
dFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0CiAgICAgY2FsbGJh
Y2soZXJyb3IpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjbGVhck9iamVjdFN0b3Jl
KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCB1aW50NjRfdCBvYmpl
Y3RTdG9yZUlkZW50aWZpZXIsIEVycm9yQ2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIFVuaXF1ZUlE
QkRhdGFiYXNlOjpjbGVhck9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24m
IHRyYW5zYWN0aW9uLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIEVycm9yQ2FsbGJh
Y2sgY2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgc3BhY2VDaGVja1Jlc3VsdCkKIHsKICAgICBB
U1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0
YWJhc2U6OmNsZWFyT2JqZWN0U3RvcmUiKTsKIAotICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7
Ci0gICAgYXV0byBlcnJvciA9IG1fYmFja2luZ1N0b3JlLT5jbGVhck9iamVjdFN0b3JlKHRyYW5z
YWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCksIG9iamVjdFN0b3JlSWRlbnRpZmllcik7CisgICAg
aWYgKHNwYWNlQ2hlY2tSZXN1bHQgPT0gU3BhY2VDaGVja1Jlc3VsdDo6VW5rbm93bikgeworICAg
ICAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJv
ciB7IEludmFsaWRTdGF0ZUVycm9yIH0pOworCisgICAgICAgIG1fbWFuYWdlci0+cmVxdWVzdFNw
YWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwgMCwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7
ICp0aGlzIH0sIHdlYWtUcmFuc2FjdGlvbiA9IFdlYWtQdHIgeyB0cmFuc2FjdGlvbiB9LCBvYmpl
Y3RTdG9yZUlkZW50aWZpZXIsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgZ3Jh
bnRlZCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICF3ZWFrVHJhbnNh
Y3Rpb24pCisgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxp
ZFN0YXRlRXJyb3IsICJEYXRhYmFzZSBvciB0cmFuc2FjdGlvbiBpcyBjbG9zZWQiIH0pOworCisg
ICAgICAgICAgICBjbGVhck9iamVjdFN0b3JlKCp3ZWFrVHJhbnNhY3Rpb24sIG9iamVjdFN0b3Jl
SWRlbnRpZmllciwgV1RGTW92ZShjYWxsYmFjayksIGdyYW50ZWQgPyBTcGFjZUNoZWNrUmVzdWx0
OjpQYXNzIDogU3BhY2VDaGVja1Jlc3VsdDo6RmFpbCk7CisgICAgICAgIH0pOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKHNwYWNlQ2hlY2tSZXN1bHQgPT0gU3BhY2VDaGVj
a1Jlc3VsdDo6UGFzcyk7CisgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkKKyAgICAgICAgcmV0dXJu
IGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJCYWNraW5nIHN0b3JlIGlz
IGNsb3NlZCIgfSk7CiAKKyAgICBhdXRvIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPmNsZWFyT2Jq
ZWN0U3RvcmUodHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSwgb2JqZWN0U3RvcmVJZGVu
dGlmaWVyKTsKICAgICBjYWxsYmFjayhlcnJvcik7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJh
c2U6OmNyZWF0ZUluZGV4KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9u
LCBjb25zdCBJREJJbmRleEluZm8mIGluZm8sIEVycm9yQ2FsbGJhY2sgY2FsbGJhY2spCit2b2lk
IFVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVJbmRleChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0
aW9uJiB0cmFuc2FjdGlvbiwgY29uc3QgSURCSW5kZXhJbmZvJiBpbmZvLCBFcnJvckNhbGxiYWNr
IGNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0IHNwYWNlQ2hlY2tSZXN1bHQpCiB7CiAgICAgQVNT
RVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFi
YXNlOjpjcmVhdGVJbmRleCIpOwogCi0gICAgLy8gUXVvdGEgY2hlY2suCi0gICAgYXV0byB0YXNr
U2l6ZSA9IGRlZmF1bHRXcml0ZU9wZXJhdGlvbkNvc3QgKyBlc3RpbWF0ZVNpemUoaW5mbyk7Ci0g
ICAgaWYgKG1fc2VydmVyLnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIHRhc2tT
aXplKSA9PSBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbjo6RGVueSkgeworICAgIGlmIChz
cGFjZUNoZWNrUmVzdWx0ID09IFNwYWNlQ2hlY2tSZXN1bHQ6OlVua25vd24pIHsKKyAgICAgICAg
aWYgKCFtX21hbmFnZXIpCisgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJ
bnZhbGlkU3RhdGVFcnJvciB9KTsKKworICAgICAgICBhdXRvIHRhc2tTaXplID0gZGVmYXVsdFdy
aXRlT3BlcmF0aW9uQ29zdCArIGVzdGltYXRlU2l6ZShpbmZvKTsKKyAgICAgICAgbV9tYW5hZ2Vy
LT5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCB0YXNrU2l6ZSwgW3RoaXMsIHdl
YWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHdlYWtUcmFuc2FjdGlvbiA9IFdlYWtQdHIgeyB0
cmFuc2FjdGlvbiB9LCBpbmZvLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIGdy
YW50ZWQpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhd2Vha1RyYW5z
YWN0aW9uKQorICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFs
aWRTdGF0ZUVycm9yLCAiRGF0YWJhc2Ugb3IgdHJhbnNhY3Rpb24gaXMgY2xvc2VkIiB9KTsKKwor
ICAgICAgICAgICAgY3JlYXRlSW5kZXgoKndlYWtUcmFuc2FjdGlvbiwgaW5mbywgV1RGTW92ZShj
YWxsYmFjayksIGdyYW50ZWQgPyBTcGFjZUNoZWNrUmVzdWx0OjpQYXNzIDogU3BhY2VDaGVja1Jl
c3VsdDo6RmFpbCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
aWYgKHNwYWNlQ2hlY2tSZXN1bHQgIT0gU3BhY2VDaGVja1Jlc3VsdDo6UGFzcykgewogICAgICAg
ICBjYWxsYmFjayhJREJFcnJvciB7IFF1b3RhRXhjZWVkZWRFcnJvciwgcXVvdGFFcnJvck1lc3Nh
Z2VOYW1lKCJDcmVhdGVJbmRleCIpIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
QVNTRVJUKG1fYmFja2luZ1N0b3JlKTsKKyAgICBpZiAoIW1fYmFja2luZ1N0b3JlKQorICAgICAg
ICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkJhY2tpbmcg
c3RvcmUgaXMgY2xvc2VkIiB9KTsKKwogICAgIGF1dG8gZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+
Y3JlYXRlSW5kZXgodHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSwgaW5mbyk7CiAgICAg
aWYgKGVycm9yLmlzTnVsbCgpKSB7CiAgICAgICAgIEFTU0VSVChtX2RhdGFiYXNlSW5mbyk7CkBA
IC02NDQsMTEgKzc0OSwyOCBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVJbmRleChV
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgYwogICAgIGNhbGxiYWNr
KGVycm9yKTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlSW5kZXgoVW5pcXVl
SURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIHVpbnQ2NF90IG9iamVjdFN0b3Jl
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpbmRleE5hbWUsIEVycm9yQ2FsbGJhY2sgY2FsbGJh
Y2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVJbmRleChVbmlxdWVJREJEYXRhYmFz
ZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIGluZGV4TmFtZSwgRXJyb3JDYWxsYmFjayBjYWxsYmFjaywgU3BhY2VD
aGVja1Jlc3VsdCBzcGFjZUNoZWNrUmVzdWx0KQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFk
KCkpOwogICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlSW5kZXgi
KTsKIAorICAgIGlmIChzcGFjZUNoZWNrUmVzdWx0ID09IFNwYWNlQ2hlY2tSZXN1bHQ6OlVua25v
d24pIHsKKyAgICAgICAgaWYgKCFtX21hbmFnZXIpCisgICAgICAgICAgICByZXR1cm4gY2FsbGJh
Y2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciB9KTsKKworICAgICAgICBtX21hbmFnZXIt
PnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIDAsIFt0aGlzLCB3ZWFrVGhpcyA9
IFdlYWtQdHIgeyAqdGhpcyB9LCB3ZWFrVHJhbnNhY3Rpb24gPSBXZWFrUHRyIHsgdHJhbnNhY3Rp
b24gfSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleE5hbWUsIGNhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayldKGJvb2wgZ3JhbnRlZCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXdl
YWtUaGlzIHx8ICF3ZWFrVHJhbnNhY3Rpb24pCisgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxi
YWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJEYXRhYmFzZSBvciB0cmFuc2FjdGlv
biBpcyBjbG9zZWQiIH0pOworCisgICAgICAgICAgICBkZWxldGVJbmRleCgqd2Vha1RyYW5zYWN0
aW9uLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4TmFtZSwgV1RGTW92ZShjYWxsYmFjayks
IGdyYW50ZWQgPyBTcGFjZUNoZWNrUmVzdWx0OjpQYXNzIDogU3BhY2VDaGVja1Jlc3VsdDo6RmFp
bCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKHNw
YWNlQ2hlY2tSZXN1bHQgPT0gU3BhY2VDaGVja1Jlc3VsdDo6UGFzcyk7CisgICAgaWYgKCFtX2Jh
Y2tpbmdTdG9yZSkKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0
YXRlRXJyb3IsICJCYWNraW5nIHN0b3JlIGlzIGNsb3NlZCIgfSk7CisKICAgICBhdXRvKiBvYmpl
Y3RTdG9yZUluZm8gPSBtX2RhdGFiYXNlSW5mby0+aW5mb0ZvckV4aXN0aW5nT2JqZWN0U3RvcmUo
b2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKICAgICBpZiAoIW9iamVjdFN0b3JlSW5mbykgewogICAg
ICAgICBjYWxsYmFjayhJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gZGVsZXRl
IGluZGV4IGZyb20gbm9uLWV4aXN0YW50IG9iamVjdCBzdG9yZSJfcyB9KTsKQEAgLTY2MCw5ICs3
ODIsOCBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVJbmRleChVbmlxdWVJREJEYXRh
YmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgdQogICAgICAgICBjYWxsYmFjayhJREJFcnJv
ciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gZGVsZXRlIG5vbi1leGlzdGFudCBpbmRleCJf
cyB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvIGluZGV4SWRlbnRpZmllciA9
IGluZGV4SW5mby0+aWRlbnRpZmllcigpOwogCi0gICAgQVNTRVJUKG1fYmFja2luZ1N0b3JlKTsK
KyAgICBhdXRvIGluZGV4SWRlbnRpZmllciA9IGluZGV4SW5mby0+aWRlbnRpZmllcigpOwogICAg
IGF1dG8gZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+ZGVsZXRlSW5kZXgodHJhbnNhY3Rpb24uaW5m
bygpLmlkZW50aWZpZXIoKSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleElkZW50aWZpZXIp
OwogICAgIGlmIChlcnJvci5pc051bGwoKSkKICAgICAgICAgb2JqZWN0U3RvcmVJbmZvLT5kZWxl
dGVJbmRleChpbmRleElkZW50aWZpZXIpOwpAQCAtNjcwLDE4ICs3OTEsMzMgQEAgdm9pZCBVbmlx
dWVJREJEYXRhYmFzZTo6ZGVsZXRlSW5kZXgoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYg
dHJhbnNhY3Rpb24sIHUKICAgICBjYWxsYmFjayhlcnJvcik7CiB9CiAKLXZvaWQgVW5pcXVlSURC
RGF0YWJhc2U6OnJlbmFtZUluZGV4KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5z
YWN0aW9uLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lLCBFcnJvckNhbGxiYWNrIGNhbGxiYWNrKQor
dm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cmVuYW1lSW5kZXgoVW5pcXVlSURCRGF0YWJhc2VUcmFu
c2FjdGlvbiYgdHJhbnNhY3Rpb24sIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgdWlu
dDY0X3QgaW5kZXhJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUsIEVycm9yQ2FsbGJh
Y2sgY2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgc3BhY2VDaGVja1Jlc3VsdCkKIHsKICAgICBB
U1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0
YWJhc2U6OnJlbmFtZUluZGV4Iik7CiAKLSAgICAvLyBRdW90YSBjaGVjay4KLSAgICBhdXRvIHRh
c2tTaXplID0gZGVmYXVsdFdyaXRlT3BlcmF0aW9uQ29zdCArIG5ld05hbWUuc2l6ZUluQnl0ZXMo
KTsKLSAgICBpZiAobV9zZXJ2ZXIucmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwg
dGFza1NpemUpID09IFN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uOjpEZW55KSB7CisgICAg
aWYgKHNwYWNlQ2hlY2tSZXN1bHQgPT0gU3BhY2VDaGVja1Jlc3VsdDo6VW5rbm93bikgeworICAg
ICAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJv
ciB7IEludmFsaWRTdGF0ZUVycm9yIH0pOworCisgICAgICAgIGF1dG8gdGFza1NpemUgPSBkZWZh
dWx0V3JpdGVPcGVyYXRpb25Db3N0ICsgbmV3TmFtZS5zaXplSW5CeXRlcygpOworICAgICAgICBt
X21hbmFnZXItPnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIHRhc2tTaXplLCBb
dGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgd2Vha1RyYW5zYWN0aW9uID0gV2Vh
a1B0ciB7IHRyYW5zYWN0aW9uIH0sIG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhJZGVudGlm
aWVyLCBuZXdOYW1lLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIGdyYW50ZWQp
IG11dGFibGUgeworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhd2Vha1RyYW5zYWN0aW9u
KQorICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0
ZUVycm9yLCAiRGF0YWJhc2Ugb3IgdHJhbnNhY3Rpb24gaXMgY2xvc2VkIiB9KTsKKworICAgICAg
ICAgICAgcmVuYW1lSW5kZXgoKndlYWtUcmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVJZGVudGlmaWVy
LCBpbmRleElkZW50aWZpZXIsIG5ld05hbWUsIFdURk1vdmUoY2FsbGJhY2spLCBncmFudGVkID8g
U3BhY2VDaGVja1Jlc3VsdDo6UGFzcyA6IFNwYWNlQ2hlY2tSZXN1bHQ6OkZhaWwpOworICAgICAg
ICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChzcGFjZUNoZWNrUmVzdWx0
ICE9IFNwYWNlQ2hlY2tSZXN1bHQ6OlBhc3MpIHsKICAgICAgICAgY2FsbGJhY2soSURCRXJyb3Ig
eyBRdW90YUV4Y2VlZGVkRXJyb3IsIHF1b3RhRXJyb3JNZXNzYWdlTmFtZSgiUmVuYW1lSW5kZXgi
KSB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIGlmICghbV9iYWNraW5nU3RvcmUp
CisgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAi
QmFja2luZyBzdG9yZSBpcyBjbG9zZWQiIH0pOworCiAgICAgYXV0byogb2JqZWN0U3RvcmVJbmZv
ID0gbV9kYXRhYmFzZUluZm8tPmluZm9Gb3JFeGlzdGluZ09iamVjdFN0b3JlKG9iamVjdFN0b3Jl
SWRlbnRpZmllcik7CiAgICAgaWYgKCFvYmplY3RTdG9yZUluZm8pIHsKICAgICAgICAgY2FsbGJh
Y2soSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIHJlbmFtZSBpbmRleCBpbiBu
b24tZXhpc3RhbnQgb2JqZWN0IHN0b3JlIl9zIH0pOwpAQCAtNjk0LDcgKzgzMCw2IEBAIHZvaWQg
VW5pcXVlSURCRGF0YWJhc2U6OnJlbmFtZUluZGV4KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rp
b24mIHRyYW5zYWN0aW9uLCB1CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBBU1NFUlQo
bV9iYWNraW5nU3RvcmUpOwogICAgIGF1dG8gZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+cmVuYW1l
SW5kZXgodHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSwgb2JqZWN0U3RvcmVJZGVudGlm
aWVyLCBpbmRleElkZW50aWZpZXIsIG5ld05hbWUpOwogICAgIGlmIChlcnJvci5pc051bGwoKSkK
ICAgICAgICAgaW5kZXhJbmZvLT5yZW5hbWUobmV3TmFtZSk7CkBAIC03MDksMTcgKzg0NCwxOSBA
QCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwdXRPckFkZChjb25zdCBJREJSZXF1ZXN0RGF0YSYg
cmVxdWVzdERhdGEsIGNvbnN0IElEQktleQogCiAgICAgQVNTRVJUKG1fZGF0YWJhc2VJbmZvKTsK
IAotICAgIElEQktleURhdGEgdXNlZEtleTsKLSAgICBJREJFcnJvciBlcnJvcjsKKyAgICBpZiAo
IW1fYmFja2luZ1N0b3JlKQorICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZh
bGlkU3RhdGVFcnJvciwgIkJhY2tpbmcgc3RvcmUgaXMgY2xvc2VkIiB9LCBrZXlEYXRhKTsKIAot
ICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CiAgICAgYXV0byBvYmplY3RTdG9yZUlkZW50aWZp
ZXIgPSByZXF1ZXN0RGF0YS5vYmplY3RTdG9yZUlkZW50aWZpZXIoKTsKICAgICBhdXRvKiBvYmpl
Y3RTdG9yZUluZm8gPSBtX2JhY2tpbmdTdG9yZS0+aW5mb0Zvck9iamVjdFN0b3JlKG9iamVjdFN0
b3JlSWRlbnRpZmllcik7Ci0gICAgaWYgKCFvYmplY3RTdG9yZUluZm8pIHsKLSAgICAgICAgY2Fs
bGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIk9iamVjdCBzdG9yZSBjYW5ub3Qg
YmUgZm91bmQgaW4gdGhlIGJhY2tpbmcgc3RvcmUiX3MgfSwgdXNlZEtleSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9CisgICAgaWYgKCFvYmplY3RTdG9yZUluZm8pCisgICAgICAgIHJldHVybiBj
YWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiT2JqZWN0IHN0b3JlIGNhbm5v
dCBiZSBmb3VuZCBpbiB0aGUgYmFja2luZyBzdG9yZSJfcyB9LCBrZXlEYXRhKTsKIAorICAgIGlm
ICghbV9tYW5hZ2VyKQorICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlk
U3RhdGVFcnJvciB9LCBrZXlEYXRhKTsKKworICAgIElEQktleURhdGEgdXNlZEtleTsKKyAgICBJ
REJFcnJvciBlcnJvcjsKICAgICBib29sIHVzZWRLZXlJc0dlbmVyYXRlZCA9IGZhbHNlOwogICAg
IHVpbnQ2NF90IGtleU51bWJlcjsKICAgICBhdXRvIHRyYW5zYWN0aW9uSWRlbnRpZmllciA9IHJl
cXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpOwpAQCAtNzMwLDc2ICs4NjcsMTA1IEBA
IHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnB1dE9yQWRkKGNvbnN0IElEQlJlcXVlc3REYXRhJiBy
ZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5CiAKICAgICBpZiAob2JqZWN0U3RvcmVJbmZvLT5hdXRv
SW5jcmVtZW50KCkgJiYgIWtleURhdGEuaXNWYWxpZCgpKSB7CiAgICAgICAgIGVycm9yID0gbV9i
YWNraW5nU3RvcmUtPmdlbmVyYXRlS2V5TnVtYmVyKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgb2Jq
ZWN0U3RvcmVJZGVudGlmaWVyLCBrZXlOdW1iZXIpOwotICAgICAgICBpZiAoIWVycm9yLmlzTnVs
bCgpKSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhlcnJvciwgdXNlZEtleSk7Ci0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKCFlcnJvci5pc051bGwoKSkKKyAgICAg
ICAgICAgIHJldHVybiBjYWxsYmFjayhlcnJvciwgdXNlZEtleSk7CisKICAgICAgICAgdXNlZEtl
eS5zZXROdW1iZXJWYWx1ZShrZXlOdW1iZXIpOwogICAgICAgICB1c2VkS2V5SXNHZW5lcmF0ZWQg
PSB0cnVlOwogICAgIH0gZWxzZQogICAgICAgICB1c2VkS2V5ID0ga2V5RGF0YTsKIAotICAgIC8v
IEdlbmVyYXRlIGluZGV4IGtleXMgdXAgZnJvbnQgZm9yIG1vcmUgYWNjdXJhdGUgcXVvdGEgY2hl
Y2suCi0gICAgSW5kZXhJRFRvSW5kZXhLZXlNYXAgaW5kZXhLZXlzOwotICAgIGNhbGxPbklEQlNl
cmlhbGl6YXRpb25UaHJlYWRBbmRXYWl0KFtvYmplY3RTdG9yZUluZm8gPSBvYmplY3RTdG9yZUlu
Zm8tPmlzb2xhdGVkQ29weSgpLCBrZXkgPSB1c2VkS2V5Lmlzb2xhdGVkQ29weSgpLCB2YWx1ZSA9
IHZhbHVlLmlzb2xhdGVkQ29weSgpLCAmaW5kZXhLZXlzXShhdXRvJiBnbG9iYWxPYmplY3QpIHsK
LSAgICAgICAgaW5kZXhLZXlzID0gZ2VuZXJhdGVJbmRleEtleU1hcEZvclZhbHVlKGdsb2JhbE9i
amVjdCwgb2JqZWN0U3RvcmVJbmZvLCBrZXksIHZhbHVlKTsKLSAgICB9KTsKLQogICAgIGlmIChv
dmVyd3JpdGVNb2RlID09IEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlOjpOb092
ZXJ3cml0ZSkgewogICAgICAgICBib29sIGtleUV4aXN0czsKICAgICAgICAgZXJyb3IgPSBtX2Jh
Y2tpbmdTdG9yZS0+a2V5RXhpc3RzSW5PYmplY3RTdG9yZSh0cmFuc2FjdGlvbklkZW50aWZpZXIs
IG9iamVjdFN0b3JlSWRlbnRpZmllciwgdXNlZEtleSwga2V5RXhpc3RzKTsKLSAgICAgICAgaWYg
KGVycm9yLmlzTnVsbCgpICYmIGtleUV4aXN0cykKKyAgICAgICAgaWYgKCFlcnJvciAmJiBrZXlF
eGlzdHMpCiAgICAgICAgICAgICBlcnJvciA9IElEQkVycm9yIHsgQ29uc3RyYWludEVycm9yLCAi
S2V5IGFscmVhZHkgZXhpc3RzIGluIHRoZSBvYmplY3Qgc3RvcmUiX3MgfTsKIAotICAgICAgICBp
ZiAoIWVycm9yLmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhlcnJvciwgdXNlZEtl
eSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKCEhZXJyb3Ip
CisgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soZXJyb3IsIHVzZWRLZXkpOwogICAgIH0KIAot
ICAgIC8vIFF1b3RhIGNoZWNrLgorICAgIC8vIEdlbmVyYXRlIGluZGV4IGtleXMgdXAgZnJvbnQg
Zm9yIG1vcmUgYWNjdXJhdGUgcXVvdGEgY2hlY2suCisgICAgSW5kZXhJRFRvSW5kZXhLZXlNYXAg
aW5kZXhLZXlzOworICAgIGNhbGxPbklEQlNlcmlhbGl6YXRpb25UaHJlYWRBbmRXYWl0KFtvYmpl
Y3RTdG9yZUluZm8gPSBvYmplY3RTdG9yZUluZm8tPmlzb2xhdGVkQ29weSgpLCBrZXkgPSB1c2Vk
S2V5Lmlzb2xhdGVkQ29weSgpLCB2YWx1ZSA9IHZhbHVlLmlzb2xhdGVkQ29weSgpLCAmaW5kZXhL
ZXlzXShhdXRvJiBnbG9iYWxPYmplY3QpIHsKKyAgICAgICAgaW5kZXhLZXlzID0gY3Jvc3NUaHJl
YWRDb3B5KGdlbmVyYXRlSW5kZXhLZXlNYXBGb3JWYWx1ZShnbG9iYWxPYmplY3QsIG9iamVjdFN0
b3JlSW5mbywga2V5LCB2YWx1ZSkpOworICAgIH0pOworCisgICAgZ2VuZXJhdGVkS2V5UmVzZXR0
ZXIucmVsZWFzZSgpOwogICAgIGF1dG8ga2V5U2l6ZSA9IGVzdGltYXRlU2l6ZSh1c2VkS2V5KTsK
ICAgICBhdXRvIHZhbHVlU2l6ZSA9IGVzdGltYXRlU2l6ZSh2YWx1ZSk7CiAgICAgYXV0byBpbmRl
eFNpemUgPSBlc3RpbWF0ZVNpemUoKm9iamVjdFN0b3JlSW5mbywgaW5kZXhLZXlzLCBrZXlTaXpl
KTsKICAgICBhdXRvIHRhc2tTaXplID0gZGVmYXVsdFdyaXRlT3BlcmF0aW9uQ29zdCArIGtleVNp
emUgKyB2YWx1ZVNpemUgKyBpbmRleFNpemU7CiAKICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVl
SURCRGF0YWJhc2U6OnB1dE9yQWRkIHF1b3RhIGNoZWNrIHdpdGggdGFzayBzaXplOiAlIiBQUkl1
NjQgIiBrZXkgc2l6ZTogJSIgUFJJdTY0ICIgdmFsdWUgc2l6ZTogJSIgUFJJdTY0ICIgaW5kZXgg
c2l6ZTogJSIgUFJJdTY0LCB0YXNrU2l6ZSwga2V5U2l6ZSwgdmFsdWVTaXplLCBpbmRleFNpemUp
OworICAgIG1fbWFuYWdlci0+cmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwgdGFz
a1NpemUsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCByZXF1ZXN0RGF0YSwg
dXNlZEtleSwgdmFsdWUsIG92ZXJ3cml0ZU1vZGUsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayksIHVzZWRLZXlJc0dlbmVyYXRlZCwgaW5kZXhLZXlzLCBvYmplY3RTdG9yZUluZm8gPSAqb2Jq
ZWN0U3RvcmVJbmZvXShib29sIGdyYW50ZWQpIG11dGFibGUgeworICAgICAgICBpZiAoIXdlYWtU
aGlzKQorICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRl
RXJyb3IsICJEYXRhYmFzZSBpcyBjbG9zZWQiIH0sIHVzZWRLZXkpOwogCi0gICAgaWYgKG1fc2Vy
dmVyLnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIHRhc2tTaXplKSA9PSBTdG9y
YWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbjo6RGVueSkgewotICAgICAgICBjYWxsYmFjayhJREJF
cnJvciB7IFF1b3RhRXhjZWVkZWRFcnJvciwgcXVvdGFFcnJvck1lc3NhZ2VOYW1lKCJQdXRPckFk
ZCIpIH0sIHVzZWRLZXkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgICAgICBwdXRPckFk
ZEFmdGVyU3BhY2VDaGVjayhyZXF1ZXN0RGF0YSwgdXNlZEtleSwgdmFsdWUsIG92ZXJ3cml0ZU1v
ZGUsIFdURk1vdmUoY2FsbGJhY2spLCB1c2VkS2V5SXNHZW5lcmF0ZWQsIGluZGV4S2V5cywgb2Jq
ZWN0U3RvcmVJbmZvLCBncmFudGVkID8gU3BhY2VDaGVja1Jlc3VsdDo6UGFzcyA6IFNwYWNlQ2hl
Y2tSZXN1bHQ6OkZhaWwpOworICAgIH0pOworfQogCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpw
dXRPckFkZEFmdGVyU3BhY2VDaGVjayhjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEs
IGNvbnN0IElEQktleURhdGEmIGtleURhdGEsIGNvbnN0IElEQlZhbHVlJiB2YWx1ZSwgSW5kZXhl
ZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUgb3ZlcndyaXRlTW9kZSwgS2V5RGF0YUNhbGxi
YWNrIGNhbGxiYWNrLCBib29sIGlzS2V5R2VuZXJhdGVkLCBjb25zdCBJbmRleElEVG9JbmRleEtl
eU1hcCYgaW5kZXhLZXlzLCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mIG9iamVjdFN0b3JlSW5m
bywgU3BhY2VDaGVja1Jlc3VsdCBzcGFjZUNoZWNrUmVzdWx0KQoreworICAgIEFTU0VSVCghaXNN
YWluVGhyZWFkKCkpOworICAgIEFTU0VSVChtX2RhdGFiYXNlSW5mbyk7CisKKyAgICBpZiAoIW1f
YmFja2luZ1N0b3JlKQorICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlk
U3RhdGVFcnJvciwgIkJhY2tpbmcgc3RvcmUgaXMgY2xvc2VkIiB9LCBrZXlEYXRhKTsKKworICAg
IHVpbnQ2NF90IGtleU51bWJlciA9IGlzS2V5R2VuZXJhdGVkID8ga2V5RGF0YS5udW1iZXIoKSA6
IDA7CisgICAgYXV0byBvYmplY3RTdG9yZUlkZW50aWZpZXIgPSBvYmplY3RTdG9yZUluZm8uaWRl
bnRpZmllcigpOworICAgIGF1dG8gdHJhbnNhY3Rpb25JZGVudGlmaWVyID0gcmVxdWVzdERhdGEu
dHJhbnNhY3Rpb25JZGVudGlmaWVyKCk7CisgICAgYXV0byBnZW5lcmF0ZWRLZXlSZXNldHRlciA9
IG1ha2VTY29wZUV4aXQoW3RoaXMsIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgb2JqZWN0U3RvcmVJ
ZGVudGlmaWVyLCAma2V5TnVtYmVyLCAmaXNLZXlHZW5lcmF0ZWRdKCkgeworICAgICAgICBpZiAo
aXNLZXlHZW5lcmF0ZWQpCisgICAgICAgICAgICBtX2JhY2tpbmdTdG9yZS0+cmV2ZXJ0R2VuZXJh
dGVkS2V5TnVtYmVyKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgb2JqZWN0U3RvcmVJZGVudGlmaWVy
LCBrZXlOdW1iZXIpOworICAgIH0pOworCisgICAgaWYgKHNwYWNlQ2hlY2tSZXN1bHQgIT0gU3Bh
Y2VDaGVja1Jlc3VsdDo6UGFzcykKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsg
UXVvdGFFeGNlZWRlZEVycm9yLCBxdW90YUVycm9yTWVzc2FnZU5hbWUoIlB1dE9yQWRkIikgfSwg
a2V5RGF0YSk7CiAgICAgLy8gSWYgYSByZWNvcmQgYWxyZWFkeSBleGlzdHMgaW4gc3RvcmUsIHRo
ZW4gcmVtb3ZlIHRoZSByZWNvcmQgZnJvbSBzdG9yZSB1c2luZyB0aGUgc3RlcHMgZm9yIGRlbGV0
aW5nIHJlY29yZHMgZnJvbSBhbiBvYmplY3Qgc3RvcmUuCi0gICAgLy8gVGhpcyBpcyBpbXBvcnRh
bnQgYmVjYXVzZSBmb3JtYWxseSBkZWxldGluZyBpdCBmcm9tIGZyb20gdGhlIG9iamVjdCBzdG9y
ZSBhbHNvIHJlbW92ZXMgaXQgZnJvbSB0aGUgYXBwcm9wcmlhdGUgaW5kZXhlcy4KLSAgICBlcnJv
ciA9IG1fYmFja2luZ1N0b3JlLT5kZWxldGVSYW5nZSh0cmFuc2FjdGlvbklkZW50aWZpZXIsIG9i
amVjdFN0b3JlSWRlbnRpZmllciwgdXNlZEtleSk7Ci0gICAgaWYgKCFlcnJvci5pc051bGwoKSkg
ewotICAgICAgICBjYWxsYmFjayhlcnJvciwgdXNlZEtleSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9CisgICAgLy8gVGhpcyBpcyBpbXBvcnRhbnQgYmVjYXVzZSBmb3JtYWxseSBkZWxldGluZyBp
dCBmcm9tIHRoZSBvYmplY3Qgc3RvcmUgYWxzbyByZW1vdmVzIGl0IGZyb20gdGhlIGFwcHJvcHJp
YXRlIGluZGV4ZXMuCisgICAgSURCRXJyb3IgZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+ZGVsZXRl
UmFuZ2UodHJhbnNhY3Rpb25JZGVudGlmaWVyLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGtleURh
dGEpOworICAgIGlmICghZXJyb3IuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBjYWxsYmFjayhl
cnJvciwga2V5RGF0YSk7CiAKLSAgICBlcnJvciA9IG1fYmFja2luZ1N0b3JlLT5hZGRSZWNvcmQo
dHJhbnNhY3Rpb25JZGVudGlmaWVyLCAqb2JqZWN0U3RvcmVJbmZvLCB1c2VkS2V5LCBpbmRleEtl
eXMsIHZhbHVlKTsKLSAgICBpZiAoIWVycm9yLmlzTnVsbCgpKSB7Ci0gICAgICAgIGNhbGxiYWNr
KGVycm9yLCB1c2VkS2V5KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBlcnJvciA9IG1f
YmFja2luZ1N0b3JlLT5hZGRSZWNvcmQodHJhbnNhY3Rpb25JZGVudGlmaWVyLCBvYmplY3RTdG9y
ZUluZm8sIGtleURhdGEsIGluZGV4S2V5cywgdmFsdWUpOworICAgIGlmICghZXJyb3IuaXNOdWxs
KCkpCisgICAgICAgIHJldHVybiBjYWxsYmFjayhlcnJvciwga2V5RGF0YSk7CiAKLSAgICBpZiAo
b3ZlcndyaXRlTW9kZSAhPSBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZTo6T3Zl
cndyaXRlRm9yQ3Vyc29yICYmIG9iamVjdFN0b3JlSW5mby0+YXV0b0luY3JlbWVudCgpICYmIGtl
eURhdGEudHlwZSgpID09IEluZGV4ZWREQjo6S2V5VHlwZTo6TnVtYmVyKQorICAgIGlmIChvdmVy
d3JpdGVNb2RlICE9IEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlOjpPdmVyd3Jp
dGVGb3JDdXJzb3IgJiYgb2JqZWN0U3RvcmVJbmZvLmF1dG9JbmNyZW1lbnQoKSAmJiBrZXlEYXRh
LnR5cGUoKSA9PSBJbmRleGVkREI6OktleVR5cGU6Ok51bWJlcikKICAgICAgICAgZXJyb3IgPSBt
X2JhY2tpbmdTdG9yZS0+bWF5YmVVcGRhdGVLZXlHZW5lcmF0b3JOdW1iZXIodHJhbnNhY3Rpb25J
ZGVudGlmaWVyLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGtleURhdGEubnVtYmVyKCkpOwogCiAg
ICAgZ2VuZXJhdGVkS2V5UmVzZXR0ZXIucmVsZWFzZSgpOwotICAgIGNhbGxiYWNrKGVycm9yLCB1
c2VkS2V5KTsKKyAgICBjYWxsYmFjayhlcnJvciwga2V5RGF0YSk7CiB9CiAKLXZvaWQgVW5pcXVl
SURCRGF0YWJhc2U6OmdldFJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEs
IGNvbnN0IElEQkdldFJlY29yZERhdGEmIGdldFJlY29yZERhdGEsIEdldFJlc3VsdENhbGxiYWNr
IGNhbGxiYWNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Z2V0UmVjb3JkKGNvbnN0IElEQlJl
cXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCR2V0UmVjb3JkRGF0YSYgZ2V0UmVjb3Jk
RGF0YSwgR2V0UmVzdWx0Q2FsbGJhY2sgY2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgc3BhY2VD
aGVja1Jlc3VsdCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5k
ZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6OmdldFJlY29yZCIpOwogCisgICAgaWYgKHNwYWNl
Q2hlY2tSZXN1bHQgPT0gU3BhY2VDaGVja1Jlc3VsdDo6VW5rbm93bikgeworICAgICAgICBpZiAo
IW1fbWFuYWdlcikKKyAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFs
aWRTdGF0ZUVycm9yIH0sIElEQkdldFJlc3VsdCB7IH0pOworCisgICAgICAgIG1fbWFuYWdlci0+
cmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwgMCwgW3RoaXMsIHdlYWtUaGlzID0g
V2Vha1B0ciB7ICp0aGlzIH0sIHJlcXVlc3REYXRhLCBnZXRSZWNvcmREYXRhLCBjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spXShib29sIGdyYW50ZWQpIG11dGFibGUgeworICAgICAgICAgICAg
aWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3Ig
eyBJbnZhbGlkU3RhdGVFcnJvciwgIkRhdGFiYXNlIGlzIGNsb3NlZCIgfSwgSURCR2V0UmVzdWx0
IHsgfSk7CisKKyAgICAgICAgICAgIGdldFJlY29yZChyZXF1ZXN0RGF0YSwgZ2V0UmVjb3JkRGF0
YSwgV1RGTW92ZShjYWxsYmFjayksIGdyYW50ZWQgPyBTcGFjZUNoZWNrUmVzdWx0OjpQYXNzIDog
U3BhY2VDaGVja1Jlc3VsdDo6RmFpbCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgQVNTRVJUKHNwYWNlQ2hlY2tSZXN1bHQgPT0gU3BhY2VDaGVja1Jlc3VsdDo6
UGFzcyk7CisgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNr
KElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJCYWNraW5nIHN0b3JlIGlzIGNsb3NlZCIg
fSwgSURCR2V0UmVzdWx0IHsgfSk7CisKICAgICBJREJHZXRSZXN1bHQgcmVzdWx0OwogICAgIElE
QkVycm9yIGVycm9yOwogCi0gICAgQVNTRVJUKG1fYmFja2luZ1N0b3JlKTsKICAgICBpZiAodWlu
dDY0X3QgaW5kZXhJZGVudGlmaWVyID0gcmVxdWVzdERhdGEuaW5kZXhJZGVudGlmaWVyKCkpCiAg
ICAgICAgIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPmdldEluZGV4UmVjb3JkKHJlcXVlc3REYXRh
LnRyYW5zYWN0aW9uSWRlbnRpZmllcigpLCByZXF1ZXN0RGF0YS5vYmplY3RTdG9yZUlkZW50aWZp
ZXIoKSwgaW5kZXhJZGVudGlmaWVyLCByZXF1ZXN0RGF0YS5pbmRleFJlY29yZFR5cGUoKSwgZ2V0
UmVjb3JkRGF0YS5rZXlSYW5nZURhdGEsIHJlc3VsdCk7CiAgICAgZWxzZQpAQCAtODA4LDQ3ICs5
NzQsMTEwIEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmdldFJlY29yZChjb25zdCBJREJSZXF1
ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkdlCiAgICAgY2FsbGJhY2soZXJyb3IsIHJl
c3VsdCk7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmdldEFsbFJlY29yZHMoY29uc3Qg
SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJHZXRBbGxSZWNvcmRzRGF0YSYg
Z2V0QWxsUmVjb3Jkc0RhdGEsIEdldEFsbFJlc3VsdHNDYWxsYmFjayBjYWxsYmFjaykKK3ZvaWQg
VW5pcXVlSURCRGF0YWJhc2U6OmdldEFsbFJlY29yZHMoY29uc3QgSURCUmVxdWVzdERhdGEmIHJl
cXVlc3REYXRhLCBjb25zdCBJREJHZXRBbGxSZWNvcmRzRGF0YSYgZ2V0QWxsUmVjb3Jkc0RhdGEs
IEdldEFsbFJlc3VsdHNDYWxsYmFjayBjYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCBzcGFjZUNo
ZWNrUmVzdWx0KQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIExPRyhJbmRl
eGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6Z2V0QWxsUmVjb3JkcyIpOwogCi0gICAgQVNTRVJU
KG1fYmFja2luZ1N0b3JlKTsKKyAgICBpZiAoc3BhY2VDaGVja1Jlc3VsdCA9PSBTcGFjZUNoZWNr
UmVzdWx0OjpVbmtub3duKSB7CisgICAgICAgIGlmICghbV9tYW5hZ2VyKQorICAgICAgICAgICAg
cmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IgfSwgSURCR2V0QWxs
UmVzdWx0IHsgfSk7CisKKyAgICAgICAgbV9tYW5hZ2VyLT5yZXF1ZXN0U3BhY2UobV9pZGVudGlm
aWVyLm9yaWdpbigpLCAwLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgcmVx
dWVzdERhdGEsIGdldEFsbFJlY29yZHNEYXRhLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
XShib29sIGdyYW50ZWQpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAg
ICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJv
ciwgIkRhdGFiYXNlIGlzIGNsb3NlZCIgfSwgSURCR2V0QWxsUmVzdWx0IHsgfSk7CisKKyAgICAg
ICAgICAgIGdldEFsbFJlY29yZHMocmVxdWVzdERhdGEsIGdldEFsbFJlY29yZHNEYXRhLCBXVEZN
b3ZlKGNhbGxiYWNrKSwgZ3JhbnRlZCA/IFNwYWNlQ2hlY2tSZXN1bHQ6OlBhc3MgOiBTcGFjZUNo
ZWNrUmVzdWx0OjpGYWlsKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBBU1NFUlQoc3BhY2VDaGVja1Jlc3VsdCA9PSBTcGFjZUNoZWNrUmVzdWx0OjpQYXNzKTsK
KyAgICBpZiAoIW1fYmFja2luZ1N0b3JlKQorICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJy
b3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkJhY2tpbmcgc3RvcmUgaXMgY2xvc2VkIiB9LCBJREJH
ZXRBbGxSZXN1bHQgeyB9KTsKKwogICAgIElEQkdldEFsbFJlc3VsdCByZXN1bHQ7CiAgICAgYXV0
byBlcnJvciA9IG1fYmFja2luZ1N0b3JlLT5nZXRBbGxSZWNvcmRzKHJlcXVlc3REYXRhLnRyYW5z
YWN0aW9uSWRlbnRpZmllcigpLCBnZXRBbGxSZWNvcmRzRGF0YSwgcmVzdWx0KTsKIAogICAgIGNh
bGxiYWNrKGVycm9yLCByZXN1bHQpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRD
b3VudChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQktleVJhbmdl
RGF0YSYgcmFuZ2UsIENvdW50Q2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFi
YXNlOjpnZXRDb3VudChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElE
QktleVJhbmdlRGF0YSYgcmFuZ2UsIENvdW50Q2FsbGJhY2sgY2FsbGJhY2ssIFNwYWNlQ2hlY2tS
ZXN1bHQgc3BhY2VDaGVja1Jlc3VsdCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsK
ICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6OmdldENvdW50Iik7CiAKLSAg
ICBBU1NFUlQobV9iYWNraW5nU3RvcmUpOworICAgIGlmIChzcGFjZUNoZWNrUmVzdWx0ID09IFNw
YWNlQ2hlY2tSZXN1bHQ6OlVua25vd24pIHsKKyAgICAgICAgaWYgKCFtX21hbmFnZXIpCisgICAg
ICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciB9LCAw
KTsKKworICAgICAgICBtX21hbmFnZXItPnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2lu
KCksIDAsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCByZXF1ZXN0RGF0YSwg
cmFuZ2UsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgZ3JhbnRlZCkgbXV0YWJs
ZSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHJldHVybiBj
YWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiRGF0YWJhc2UgaXMgY2xvc2Vk
IiB9LCAwKTsKKworICAgICAgICAgICAgZ2V0Q291bnQocmVxdWVzdERhdGEsIHJhbmdlLCBXVEZN
b3ZlKGNhbGxiYWNrKSwgZ3JhbnRlZCA/IFNwYWNlQ2hlY2tSZXN1bHQ6OlBhc3MgOiBTcGFjZUNo
ZWNrUmVzdWx0OjpGYWlsKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBBU1NFUlQoc3BhY2VDaGVja1Jlc3VsdCA9PSBTcGFjZUNoZWNrUmVzdWx0OjpQYXNzKTsK
KyAgICBpZiAoIW1fYmFja2luZ1N0b3JlKQorICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJy
b3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkJhY2tpbmcgc3RvcmUgaXMgY2xvc2VkIiB9LCAwKTsK
KwogICAgIHVpbnQ2NF90IGNvdW50ID0gMDsKICAgICBhdXRvIGVycm9yID0gbV9iYWNraW5nU3Rv
cmUtPmdldENvdW50KHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpLCByZXF1ZXN0
RGF0YS5vYmplY3RTdG9yZUlkZW50aWZpZXIoKSwgcmVxdWVzdERhdGEuaW5kZXhJZGVudGlmaWVy
KCksIHJhbmdlLCBjb3VudCk7CiAKICAgICBjYWxsYmFjayhlcnJvciwgY291bnQpOwogfQogCi12
b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEm
IHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlRGF0YSwgRXJyb3JD
YWxsYmFjayBjYWxsYmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZVJlY29yZChj
b25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQktleVJhbmdlRGF0YSYg
a2V5UmFuZ2VEYXRhLCBFcnJvckNhbGxiYWNrIGNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0IHNw
YWNlQ2hlY2tSZXN1bHQpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgTE9H
KEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVSZWNvcmQiKTsKIAotICAgIEFT
U0VSVChtX2JhY2tpbmdTdG9yZSk7CisgICAgaWYgKHNwYWNlQ2hlY2tSZXN1bHQgPT0gU3BhY2VD
aGVja1Jlc3VsdDo6VW5rbm93bikgeworICAgICAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAgICAg
ICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yIH0pOworCisg
ICAgICAgIG1fbWFuYWdlci0+cmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwgMCwg
W3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHJlcXVlc3REYXRhLCBrZXlSYW5n
ZURhdGEsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgZ3JhbnRlZCkgbXV0YWJs
ZSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHJldHVybiBj
YWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiRGF0YWJhc2UgaXMgY2xvc2Vk
IiB9KTsKKworICAgICAgICAgICAgZGVsZXRlUmVjb3JkKHJlcXVlc3REYXRhLCBrZXlSYW5nZURh
dGEsIFdURk1vdmUoY2FsbGJhY2spLCBncmFudGVkID8gU3BhY2VDaGVja1Jlc3VsdDo6UGFzcyA6
IFNwYWNlQ2hlY2tSZXN1bHQ6OkZhaWwpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIEFTU0VSVChzcGFjZUNoZWNrUmVzdWx0ID09IFNwYWNlQ2hlY2tSZXN1bHQ6
OlBhc3MpOworICAgIGlmICghbV9iYWNraW5nU3RvcmUpCisgICAgICAgIHJldHVybiBjYWxsYmFj
ayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiQmFja2luZyBzdG9yZSBpcyBjbG9zZWQi
IH0pOworCiAgICAgYXV0byBlcnJvciA9IG1fYmFja2luZ1N0b3JlLT5kZWxldGVSYW5nZShyZXF1
ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSwgcmVxdWVzdERhdGEub2JqZWN0U3RvcmVJ
ZGVudGlmaWVyKCksIGtleVJhbmdlRGF0YSk7CiAKICAgICBjYWxsYmFjayhlcnJvcik7CiB9CiAK
LXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6Om9wZW5DdXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEm
IHJlcXVlc3REYXRhLCBjb25zdCBJREJDdXJzb3JJbmZvJiBpbmZvLCBHZXRSZXN1bHRDYWxsYmFj
ayBjYWxsYmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6Om9wZW5DdXJzb3IoY29uc3QgSURC
UmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJDdXJzb3JJbmZvJiBpbmZvLCBHZXRS
ZXN1bHRDYWxsYmFjayBjYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCBzcGFjZUNoZWNrUmVzdWx0
KQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIExPRyhJbmRleGVkREIsICJV
bmlxdWVJREJEYXRhYmFzZTo6b3BlbkN1cnNvciIpOwogCi0gICAgQVNTRVJUKG1fYmFja2luZ1N0
b3JlKTsKKyAgICBpZiAoc3BhY2VDaGVja1Jlc3VsdCA9PSBTcGFjZUNoZWNrUmVzdWx0OjpVbmtu
b3duKSB7CisgICAgICAgIGlmICghbV9tYW5hZ2VyKQorICAgICAgICAgICAgcmV0dXJuIGNhbGxi
YWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IgfSwgSURCR2V0UmVzdWx0IHsgfSk7CisK
KyAgICAgICAgbV9tYW5hZ2VyLT5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCAw
LCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgcmVxdWVzdERhdGEsIGluZm8s
IGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgZ3JhbnRlZCkgbXV0YWJsZSB7Cisg
ICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFj
ayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiRGF0YWJhc2Ugb3IgdHJhbnNhY3Rpb24g
aXMgY2xvc2VkIiB9LCBJREJHZXRSZXN1bHQgeyB9KTsKKworICAgICAgICAgICAgb3BlbkN1cnNv
cihyZXF1ZXN0RGF0YSwgaW5mbywgV1RGTW92ZShjYWxsYmFjayksIGdyYW50ZWQgPyBTcGFjZUNo
ZWNrUmVzdWx0OjpQYXNzIDogU3BhY2VDaGVja1Jlc3VsdDo6RmFpbCk7CisgICAgICAgIH0pOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKHNwYWNlQ2hlY2tSZXN1bHQgPT0g
U3BhY2VDaGVja1Jlc3VsdDo6UGFzcyk7CisgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkKKyAgICAg
ICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJCYWNraW5n
IHN0b3JlIGlzIGNsb3NlZCIgfSwgSURCR2V0UmVzdWx0IHsgfSk7CiAKICAgICBJREJHZXRSZXN1
bHQgcmVzdWx0OwogICAgIGF1dG8gZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+b3BlbkN1cnNvcihy
ZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSwgaW5mbywgcmVzdWx0KTsKQEAgLTg1
NiwxMiArMTA4NSwyNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuQ3Vyc29yKGNvbnN0
IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCQwogICAgIGNhbGxiYWNrKGVy
cm9yLCByZXN1bHQpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjppdGVyYXRlQ3Vyc29y
KGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCSXRlcmF0ZUN1cnNv
ckRhdGEmIGRhdGEsIEdldFJlc3VsdENhbGxiYWNrIGNhbGxiYWNrKQordm9pZCBVbmlxdWVJREJE
YXRhYmFzZTo6aXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEs
IGNvbnN0IElEQkl0ZXJhdGVDdXJzb3JEYXRhJiBkYXRhLCBHZXRSZXN1bHRDYWxsYmFjayBjYWxs
YmFjaywgU3BhY2VDaGVja1Jlc3VsdCBzcGFjZUNoZWNrUmVzdWx0KQogewogICAgIEFTU0VSVCgh
aXNNYWluVGhyZWFkKCkpOwogICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6
aXRlcmF0ZUN1cnNvciIpOwogCi0gICAgQVNTRVJUKG1fYmFja2luZ1N0b3JlKTsKKyAgICBpZiAo
c3BhY2VDaGVja1Jlc3VsdCA9PSBTcGFjZUNoZWNrUmVzdWx0OjpVbmtub3duKSB7CisgICAgICAg
IGlmICghbV9tYW5hZ2VyKQorICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsg
SW52YWxpZFN0YXRlRXJyb3IgfSwgSURCR2V0UmVzdWx0IHsgfSk7CisKKyAgICAgICAgbV9tYW5h
Z2VyLT5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCAwLCBbdGhpcywgd2Vha1Ro
aXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgcmVxdWVzdERhdGEsIGRhdGEsIGNhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayldKGJvb2wgZ3JhbnRlZCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAo
IXdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IElu
dmFsaWRTdGF0ZUVycm9yLCAiRGF0YWJhc2Ugb3IgdHJhbnNhY3Rpb24gaXMgY2xvc2VkIiB9LCBJ
REJHZXRSZXN1bHQgeyB9KTsKKworICAgICAgICAgICAgaXRlcmF0ZUN1cnNvcihyZXF1ZXN0RGF0
YSwgZGF0YSwgV1RGTW92ZShjYWxsYmFjayksIGdyYW50ZWQgPyBTcGFjZUNoZWNrUmVzdWx0OjpQ
YXNzIDogU3BhY2VDaGVja1Jlc3VsdDo6RmFpbCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgQVNTRVJUKHNwYWNlQ2hlY2tSZXN1bHQgPT0gU3BhY2VDaGVja1Jl
c3VsdDo6UGFzcyk7CisgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkKKyAgICAgICAgcmV0dXJuIGNh
bGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJCYWNraW5nIHN0b3JlIGlzIGNs
b3NlZCIgfSwgSURCR2V0UmVzdWx0IHsgfSk7CiAKICAgICBJREJHZXRSZXN1bHQgcmVzdWx0Owog
ICAgIGF1dG8gdHJhbnNhY3Rpb25JZGVudGlmaWVyID0gcmVxdWVzdERhdGEudHJhbnNhY3Rpb25J
ZGVudGlmaWVyKCk7CkBAIC04NzEsMTMgKzExMTUsMzAgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFz
ZTo6aXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0
IEkKICAgICBjYWxsYmFjayhlcnJvciwgcmVzdWx0KTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRh
YmFzZTo6Y29tbWl0VHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJh
bnNhY3Rpb24sIEVycm9yQ2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNl
Ojpjb21taXRUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2Fj
dGlvbiwgRXJyb3JDYWxsYmFjayBjYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCBzcGFjZUNoZWNr
UmVzdWx0KQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIExPRyhJbmRleGVk
REIsICJVbmlxdWVJREJEYXRhYmFzZTo6Y29tbWl0VHJhbnNhY3Rpb24gLSAlcyIsIHRyYW5zYWN0
aW9uLmluZm8oKS5pZGVudGlmaWVyKCkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwog
CisgICAgaWYgKHNwYWNlQ2hlY2tSZXN1bHQgPT0gU3BhY2VDaGVja1Jlc3VsdDo6VW5rbm93bikg
eworICAgICAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJ
REJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yIH0pOworCisgICAgICAgIG1fbWFuYWdlci0+cmVx
dWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwgMCwgW3RoaXMsIHdlYWtUaGlzID0gV2Vh
a1B0ciB7ICp0aGlzIH0sIHdlYWtUcmFuc2FjdGlvbiA9IFdlYWtQdHIgeyB0cmFuc2FjdGlvbiB9
LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIGdyYW50ZWQpIG11dGFibGUgewor
ICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhd2Vha1RyYW5zYWN0aW9uKQorICAgICAgICAg
ICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiRGF0
YWJhc2Ugb3IgdHJhbnNhY3Rpb24gaXMgY2xvc2VkIiB9KTsKKworICAgICAgICAgICAgY29tbWl0
VHJhbnNhY3Rpb24oKndlYWtUcmFuc2FjdGlvbiwgV1RGTW92ZShjYWxsYmFjayksIGdyYW50ZWQg
PyBTcGFjZUNoZWNrUmVzdWx0OjpQYXNzIDogU3BhY2VDaGVja1Jlc3VsdDo6RmFpbCk7CisgICAg
ICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKHNwYWNlQ2hlY2tS
ZXN1bHQgPT0gU3BhY2VDaGVja1Jlc3VsdDo6UGFzcyk7CiAgICAgQVNTRVJUKHRyYW5zYWN0aW9u
LmRhdGFiYXNlQ29ubmVjdGlvbigpLmRhdGFiYXNlKCkgPT0gdGhpcyk7Ci0gICAgQVNTRVJUKG1f
YmFja2luZ1N0b3JlKTsKKworICAgIGlmICghbV9iYWNraW5nU3RvcmUpCisgICAgICAgIHJldHVy
biBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiQmFja2luZyBzdG9yZSBp
cyBjbG9zZWQiIH0pOworCiAgICAgYXV0byB0YWtlblRyYW5zYWN0aW9uID0gbV9pblByb2dyZXNz
VHJhbnNhY3Rpb25zLnRha2UodHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSk7CiAgICAg
aWYgKCF0YWtlblRyYW5zYWN0aW9uKSB7CiAgICAgICAgIGlmICghbV9vcGVuRGF0YWJhc2VDb25u
ZWN0aW9ucy5jb250YWlucygmdHJhbnNhY3Rpb24uZGF0YWJhc2VDb25uZWN0aW9uKCkpKQpAQCAt
ODkzLDExICsxMTU0LDI1IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNvbW1pdFRyYW5zYWN0
aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0CiAgICAgdHJhbnNhY3Rp
b25Db21wbGV0ZWQoV1RGTW92ZSh0YWtlblRyYW5zYWN0aW9uKSk7CiB9CiAKLXZvaWQgVW5pcXVl
SURCRGF0YWJhc2U6OmFib3J0VHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlv
biYgdHJhbnNhY3Rpb24sIEVycm9yQ2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRh
dGFiYXNlOjphYm9ydFRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRy
YW5zYWN0aW9uLCBFcnJvckNhbGxiYWNrIGNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0IHNwYWNl
Q2hlY2tSZXN1bHQpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKElu
ZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjphYm9ydFRyYW5zYWN0aW9uIC0gJXMiLCB0cmFu
c2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKIAorICAgIGlmIChzcGFjZUNoZWNrUmVzdWx0ID09IFNwYWNlQ2hlY2tSZXN1bHQ6OlVua25v
d24pIHsKKyAgICAgICAgaWYgKCFtX21hbmFnZXIpCisgICAgICAgICAgICByZXR1cm4gY2FsbGJh
Y2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciB9KTsKKworICAgICAgICBtX21hbmFnZXIt
PnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIDAsIFt0aGlzLCB3ZWFrVGhpcyA9
IFdlYWtQdHIgeyAqdGhpcyB9LCB3ZWFrVHJhbnNhY3Rpb24gPSBXZWFrUHRyIHsgdHJhbnNhY3Rp
b24gfSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBncmFudGVkKSBtdXRhYmxl
IHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMgfHwgIXdlYWtUcmFuc2FjdGlvbikKKyAgICAg
ICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwg
IkRhdGFiYXNlIG9yIHRyYW5zYWN0aW9uIGlzIGNsb3NlZCIgfSk7CisKKyAgICAgICAgICAgIGFi
b3J0VHJhbnNhY3Rpb24oKndlYWtUcmFuc2FjdGlvbiwgV1RGTW92ZShjYWxsYmFjayksIGdyYW50
ZWQgPyBTcGFjZUNoZWNrUmVzdWx0OjpQYXNzIDogU3BhY2VDaGVja1Jlc3VsdDo6RmFpbCk7Cisg
ICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKHNwYWNlQ2hl
Y2tSZXN1bHQgPT0gU3BhY2VDaGVja1Jlc3VsdDo6UGFzcyk7CiAgICAgQVNTRVJUKHRyYW5zYWN0
aW9uLmRhdGFiYXNlQ29ubmVjdGlvbigpLmRhdGFiYXNlKCkgPT0gdGhpcyk7CiAKICAgICBhdXRv
IHRha2VuVHJhbnNhY3Rpb24gPSBtX2luUHJvZ3Jlc3NUcmFuc2FjdGlvbnMudGFrZSh0cmFuc2Fj
dGlvbi5pbmZvKCkuaWRlbnRpZmllcigpKTsKQEAgLTkyNSw3ICsxMjAwLDExIEBAIHZvaWQgVW5p
cXVlSURCRGF0YWJhc2U6OmFib3J0VHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2Fj
dGlvbiYgdHJhbnNhY3RpCiAgICAgICAgIG1fZGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJE
YXRhYmFzZUluZm8+KCptX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi0+b3JpZ2luYWxEYXRhYmFz
ZUluZm8oKSk7CiAgICAgfQogCi0gICAgYXV0byBlcnJvciA9IG1fYmFja2luZ1N0b3JlLT5hYm9y
dFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CisgICAgSURCRXJyb3IgZXJyb3I7
CisgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkKKyAgICAgICAgZXJyb3IgPSBJREJFcnJvciB7IElu
dmFsaWRTdGF0ZUVycm9yLCAiQmFja2luZyBzdG9yZSBpcyBjbG9zZWQiIH07CisgICAgZWxzZQor
ICAgICAgICBlcnJvciA9IG1fYmFja2luZ1N0b3JlLT5hYm9ydFRyYW5zYWN0aW9uKHRyYW5zYWN0
aW9uSWRlbnRpZmllcik7CiAKICAgICBjYWxsYmFjayhlcnJvcik7CiAgICAgdHJhbnNhY3Rpb25D
b21wbGV0ZWQoV1RGTW92ZSh0YWtlblRyYW5zYWN0aW9uKSk7CkBAIC0xMjI1LDYgKzE1MDQsMTEg
QEAgYm9vbCBVbmlxdWVJREJEYXRhYmFzZTo6dHJ5Q2xvc2UoKQogICAgIGNsb3NlKCk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CisgICAgCitib29sIFVuaXF1ZUlEQkRhdGFiYXNlOjpoYXNEYXRhSW5N
ZW1vcnkoKSBjb25zdAoreworICAgIHJldHVybiBtX2JhY2tpbmdTdG9yZSA/IG1fYmFja2luZ1N0
b3JlLT5pc0VwaGVtZXJhbCgpIDogZmFsc2U7Cit9CiAKIFJlZlB0cjxTZXJ2ZXJPcGVuREJSZXF1
ZXN0PiBVbmlxdWVJREJEYXRhYmFzZTo6dGFrZU5leHRSdW5uYWJsZVJlcXVlc3QoUmVxdWVzdFR5
cGUgcmVxdWVzdFR5cGUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oCmluZGV4IGIyYTc0MTdmOWM4
MTljZmMyNDE0NmNlNWZiNWNmNWQyNjEyODUwODAuLjc4ODBmNjY1ZWE4N2UwNWZjYmFkYzNkMWQw
NzQ0NjE5YmUwMzkyNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oCkBAIC01OSw4ICs1OSw4IEBA
IGVudW0gY2xhc3MgSW5kZXhSZWNvcmRUeXBlIDogYm9vbDsKIG5hbWVzcGFjZSBJREJTZXJ2ZXIg
ewogCiBjbGFzcyBJREJDb25uZWN0aW9uVG9DbGllbnQ7Ci1jbGFzcyBJREJTZXJ2ZXI7CiBjbGFz
cyBVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb247CitjbGFzcyBVbmlxdWVJREJEYXRhYmFzZU1h
bmFnZXI7CiAKIHR5cGVkZWYgRnVuY3Rpb248dm9pZChjb25zdCBJREJFcnJvciYpPiBFcnJvckNh
bGxiYWNrOwogdHlwZWRlZiBGdW5jdGlvbjx2b2lkKGNvbnN0IElEQkVycm9yJiwgY29uc3QgSURC
S2V5RGF0YSYpPiBLZXlEYXRhQ2FsbGJhY2s7CkBAIC03MSw1NCArNzEsNjIgQEAgdHlwZWRlZiBG
dW5jdGlvbjx2b2lkKGNvbnN0IElEQkVycm9yJiwgdWludDY0X3QpPiBDb3VudENhbGxiYWNrOwog
Y2xhc3MgVW5pcXVlSURCRGF0YWJhc2UgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8VW5pcXVlSURC
RGF0YWJhc2U+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBV
bmlxdWVJREJEYXRhYmFzZShJREJTZXJ2ZXImLCBjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXIm
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBVbmlxdWVJREJEYXRhYmFzZShVbmlxdWVJREJEYXRhYmFz
ZU1hbmFnZXImLCBjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImKTsKICAgICBVbmlxdWVJREJE
YXRhYmFzZShVbmlxdWVJREJEYXRhYmFzZSYpID0gZGVsZXRlOwogICAgIFdFQkNPUkVfRVhQT1JU
IH5VbmlxdWVJREJEYXRhYmFzZSgpOwogCi0gICAgdm9pZCBvcGVuRGF0YWJhc2VDb25uZWN0aW9u
KElEQkNvbm5lY3Rpb25Ub0NsaWVudCYsIGNvbnN0IElEQlJlcXVlc3REYXRhJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBvcGVuRGF0YWJhc2VDb25uZWN0aW9uKElEQkNvbm5lY3Rpb25Ub0Ns
aWVudCYsIGNvbnN0IElEQlJlcXVlc3REYXRhJik7CiAKICAgICBjb25zdCBJREJEYXRhYmFzZUlu
Zm8mIGluZm8oKSBjb25zdDsKLSAgICBJREJTZXJ2ZXImIHNlcnZlcigpIHsgcmV0dXJuIG1fc2Vy
dmVyOyB9CisgICAgVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyKiBtYW5hZ2VyKCk7CiAgICAgY29u
c3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9p
ZGVudGlmaWVyOyB9CiAKLSAgICB2b2lkIGNyZWF0ZU9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFi
YXNlVHJhbnNhY3Rpb24mLCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mLCBFcnJvckNhbGxiYWNr
KTsKLSAgICB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rp
b24mLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSwgRXJyb3JDYWxsYmFjayk7Ci0gICAg
dm9pZCByZW5hbWVPYmplY3RTdG9yZShVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgdWlu
dDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUsIEVycm9y
Q2FsbGJhY2spOwotICAgIHZvaWQgY2xlYXJPYmplY3RTdG9yZShVbmlxdWVJREJEYXRhYmFzZVRy
YW5zYWN0aW9uJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBFcnJvckNhbGxiYWNr
KTsKLSAgICB2b2lkIGNyZWF0ZUluZGV4KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCBj
b25zdCBJREJJbmRleEluZm8mLCBFcnJvckNhbGxiYWNrKTsKLSAgICB2b2lkIGRlbGV0ZUluZGV4
KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lLCBFcnJvckNhbGxiYWNrKTsKLSAgICB2b2lk
IHJlbmFtZUluZGV4KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCB1aW50NjRfdCBvYmpl
Y3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiBuZXdOYW1lLCBFcnJvckNhbGxiYWNrKTsKKyAgICBlbnVtIGNsYXNzIFNwYWNlQ2hlY2tSZXN1
bHQgOiB1aW50OF90IHsKKyAgICAgICAgVW5rbm93biwKKyAgICAgICAgUGFzcywKKyAgICAgICAg
RmFpbAorICAgIH07CisgICAgdm9pZCBjcmVhdGVPYmplY3RTdG9yZShVbmlxdWVJREJEYXRhYmFz
ZVRyYW5zYWN0aW9uJiwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiwgRXJyb3JDYWxsYmFjaywg
U3BhY2VDaGVja1Jlc3VsdCA9IFNwYWNlQ2hlY2tSZXN1bHQ6OlVua25vd24pOworICAgIHZvaWQg
ZGVsZXRlT2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIGNvbnN0IFN0
cmluZyYgb2JqZWN0U3RvcmVOYW1lLCBFcnJvckNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0ID0g
U3BhY2VDaGVja1Jlc3VsdDo6VW5rbm93bik7CisgICAgdm9pZCByZW5hbWVPYmplY3RTdG9yZShV
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUsIEVycm9yQ2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1
bHQgPSBTcGFjZUNoZWNrUmVzdWx0OjpVbmtub3duKTsKKyAgICB2b2lkIGNsZWFyT2JqZWN0U3Rv
cmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRl
bnRpZmllciwgRXJyb3JDYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCA9IFNwYWNlQ2hlY2tSZXN1
bHQ6OlVua25vd24pOworICAgIHZvaWQgY3JlYXRlSW5kZXgoVW5pcXVlSURCRGF0YWJhc2VUcmFu
c2FjdGlvbiYsIGNvbnN0IElEQkluZGV4SW5mbyYsIEVycm9yQ2FsbGJhY2ssIFNwYWNlQ2hlY2tS
ZXN1bHQgPSBTcGFjZUNoZWNrUmVzdWx0OjpVbmtub3duKTsKKyAgICB2b2lkIGRlbGV0ZUluZGV4
KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lLCBFcnJvckNhbGxiYWNrLCBTcGFjZUNoZWNr
UmVzdWx0ID0gU3BhY2VDaGVja1Jlc3VsdDo6VW5rbm93bik7CisgICAgdm9pZCByZW5hbWVJbmRl
eChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVu
dGlmaWVyLCB1aW50NjRfdCBpbmRleElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSwg
RXJyb3JDYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCA9IFNwYWNlQ2hlY2tSZXN1bHQ6OlVua25v
d24pOwogICAgIHZvaWQgcHV0T3JBZGQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJL
ZXlEYXRhJiwgY29uc3QgSURCVmFsdWUmLCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRl
TW9kZSwgS2V5RGF0YUNhbGxiYWNrKTsKLSAgICB2b2lkIGdldFJlY29yZChjb25zdCBJREJSZXF1
ZXN0RGF0YSYsIGNvbnN0IElEQkdldFJlY29yZERhdGEmLCBHZXRSZXN1bHRDYWxsYmFjayk7Ci0g
ICAgdm9pZCBnZXRBbGxSZWNvcmRzKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCR2V0
QWxsUmVjb3Jkc0RhdGEmLCBHZXRBbGxSZXN1bHRzQ2FsbGJhY2spOwotICAgIHZvaWQgZ2V0Q291
bnQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmLCBDb3VudENh
bGxiYWNrKTsKLSAgICB2b2lkIGRlbGV0ZVJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNv
bnN0IElEQktleVJhbmdlRGF0YSYsIEVycm9yQ2FsbGJhY2spOwotICAgIHZvaWQgb3BlbkN1cnNv
cihjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkN1cnNvckluZm8mLCBHZXRSZXN1bHRD
YWxsYmFjayk7Ci0gICAgdm9pZCBpdGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiwg
Y29uc3QgSURCSXRlcmF0ZUN1cnNvckRhdGEmLCBHZXRSZXN1bHRDYWxsYmFjayk7Ci0gICAgdm9p
ZCBjb21taXRUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgRXJyb3JD
YWxsYmFjayk7Ci0gICAgdm9pZCBhYm9ydFRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJh
bnNhY3Rpb24mLCBFcnJvckNhbGxiYWNrKTsKKyAgICB2b2lkIHB1dE9yQWRkQWZ0ZXJTcGFjZUNo
ZWNrKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5RGF0YSYsIGNvbnN0IElEQlZh
bHVlJiwgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUsIEtleURhdGFDYWxsYmFj
aywgYm9vbCBpc0tleUdlbmVyYXRlZCwgY29uc3QgSW5kZXhJRFRvSW5kZXhLZXlNYXAmLCBjb25z
dCBJREJPYmplY3RTdG9yZUluZm8mLCBTcGFjZUNoZWNrUmVzdWx0KTsKKyAgICB2b2lkIGdldFJl
Y29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkdldFJlY29yZERhdGEmLCBHZXRS
ZXN1bHRDYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCA9IFNwYWNlQ2hlY2tSZXN1bHQ6OlVua25v
d24pOworICAgIHZvaWQgZ2V0QWxsUmVjb3Jkcyhjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0
IElEQkdldEFsbFJlY29yZHNEYXRhJiwgR2V0QWxsUmVzdWx0c0NhbGxiYWNrLCBTcGFjZUNoZWNr
UmVzdWx0ID0gU3BhY2VDaGVja1Jlc3VsdDo6VW5rbm93bik7CisgICAgdm9pZCBnZXRDb3VudChj
b25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYsIENvdW50Q2FsbGJh
Y2ssIFNwYWNlQ2hlY2tSZXN1bHQgPSBTcGFjZUNoZWNrUmVzdWx0OjpVbmtub3duKTsKKyAgICB2
b2lkIGRlbGV0ZVJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleVJhbmdl
RGF0YSYsIEVycm9yQ2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgPSBTcGFjZUNoZWNrUmVzdWx0
OjpVbmtub3duKTsKKyAgICB2b2lkIG9wZW5DdXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEmLCBj
b25zdCBJREJDdXJzb3JJbmZvJiwgR2V0UmVzdWx0Q2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQg
PSBTcGFjZUNoZWNrUmVzdWx0OjpVbmtub3duKTsKKyAgICB2b2lkIGl0ZXJhdGVDdXJzb3IoY29u
c3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJJdGVyYXRlQ3Vyc29yRGF0YSYsIEdldFJlc3Vs
dENhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0ID0gU3BhY2VDaGVja1Jlc3VsdDo6VW5rbm93bik7
CisgICAgdm9pZCBjb21taXRUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9u
JiwgRXJyb3JDYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCA9IFNwYWNlQ2hlY2tSZXN1bHQ6OlVu
a25vd24pOworICAgIHZvaWQgYWJvcnRUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5z
YWN0aW9uJiwgRXJyb3JDYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCA9IFNwYWNlQ2hlY2tSZXN1
bHQ6OlVua25vd24pOwogCiAgICAgdm9pZCBkaWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2Uo
VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVy
JiB0cmFuc2FjdGlvbklkZW50aWZpZXIpOwogICAgIHZvaWQgY29ubmVjdGlvbkNsb3NlZEZyb21D
bGllbnQoVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJik7CiAgICAgdm9pZCBkaWRGaXJlVmVy
c2lvbkNoYW5nZUV2ZW50KFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYsIGNvbnN0IElEQlJl
c291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIEluZGV4ZWREQjo6Q29ubmVjdGlv
bkNsb3NlZE9uQmVoYWxmT2ZTZXJ2ZXIpOwotICAgIHZvaWQgb3BlbkRCUmVxdWVzdENhbmNlbGxl
ZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIG9wZW5EQlJlcXVlc3RDYW5jZWxsZWQoY29uc3QgSURCUmVzb3Vy
Y2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllcik7CiAKICAgICB2b2lkIGVucXVldWVUcmFu
c2FjdGlvbihSZWY8VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbj4mJik7CiAKLSAgICB2b2lk
IGhhbmRsZURlbGV0ZShJREJDb25uZWN0aW9uVG9DbGllbnQmLCBjb25zdCBJREJSZXF1ZXN0RGF0
YSYpOwotICAgIHZvaWQgaW1tZWRpYXRlQ2xvc2UoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGhhbmRsZURlbGV0ZShJREJDb25uZWN0aW9uVG9DbGllbnQmLCBjb25zdCBJREJSZXF1ZXN0RGF0
YSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW1tZWRpYXRlQ2xvc2UoKTsKIAogICAgIGJv
b2wgaGFzQWN0aXZlVHJhbnNhY3Rpb25zKCkgY29uc3Q7Ci0gICAgdm9pZCBhYm9ydEFjdGl2ZVRy
YW5zYWN0aW9ucygpOwotICAgIGJvb2wgdHJ5Q2xvc2UoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGFib3J0QWN0aXZlVHJhbnNhY3Rpb25zKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCB0
cnlDbG9zZSgpOwogCi0gICAgU3RyaW5nIGZpbGVQYXRoKCkgY29uc3Q7Ci0gICAgc3RkOjpvcHRp
b25hbDxJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiBuYW1lQW5kVmVyc2lvbigpIGNvbnN0Owor
ICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBmaWxlUGF0aCgpIGNvbnN0OworICAgIFdFQkNPUkVf
RVhQT1JUIHN0ZDo6b3B0aW9uYWw8SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbj4gbmFtZUFuZFZl
cnNpb24oKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhhc0RhdGFJbk1lbW9yeSgp
IGNvbnN0OwogCiBwcml2YXRlOgogICAgIHZvaWQgaGFuZGxlRGF0YWJhc2VPcGVyYXRpb25zKCk7
CiAgICAgdm9pZCBoYW5kbGVDdXJyZW50T3BlcmF0aW9uKCk7CiAgICAgdm9pZCBwZXJmb3JtQ3Vy
cmVudE9wZW5PcGVyYXRpb24oKTsKKyAgICB2b2lkIHBlcmZvcm1DdXJyZW50T3Blbk9wZXJhdGlv
bkFmdGVyU3BhY2VDaGVjayhib29sIGlzR3JhbnRlZCk7CiAgICAgdm9pZCBwZXJmb3JtQ3VycmVu
dERlbGV0ZU9wZXJhdGlvbigpOwogICAgIGVudW0gY2xhc3MgUmVxdWVzdFR5cGUgeyBEZWxldGUs
IEFueSB9OwogICAgIFJlZlB0cjxTZXJ2ZXJPcGVuREJSZXF1ZXN0PiB0YWtlTmV4dFJ1bm5hYmxl
UmVxdWVzdChSZXF1ZXN0VHlwZSA9IFJlcXVlc3RUeXBlOjpBbnkpOwpAQCAtMTQ2LDExICsxNTQs
MTMgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY2xlYXJUcmFuc2FjdGlvbnNPbkNvbm5lY3Rpb24o
VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJik7CiAKLSAgICBJREJTZXJ2ZXImIG1fc2VydmVy
OworICAgIElEQlNlcnZlciogbV9zZXJ2ZXI7CisgICAgV2Vha1B0cjxVbmlxdWVJREJEYXRhYmFz
ZU1hbmFnZXI+IG1fbWFuYWdlcjsKICAgICBJREJEYXRhYmFzZUlkZW50aWZpZXIgbV9pZGVudGlm
aWVyOwogCiAgICAgTGlzdEhhc2hTZXQ8UmVmUHRyPFNlcnZlck9wZW5EQlJlcXVlc3Q+PiBtX3Bl
bmRpbmdPcGVuREJSZXF1ZXN0czsKICAgICBSZWZQdHI8U2VydmVyT3BlbkRCUmVxdWVzdD4gbV9j
dXJyZW50T3BlbkRCUmVxdWVzdDsKKyAgICBIYXNoU2V0PElEQlJlc291cmNlSWRlbnRpZmllcj4g
bV9vcGVuREJSZXF1ZXN0c0ZvclNwYWNlQ2hlY2s7CiAKICAgICBMaXN0SGFzaFNldDxSZWZQdHI8
VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uPj4gbV9vcGVuRGF0YWJhc2VDb25uZWN0aW9uczsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1Vu
aXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmNwcAppbmRleCA3NDNl
ZGNjM2I4YzU5NDA1MWY3OTExMTY1MjZhZjRkMDIxNjkxMzY3Li4zYzc3MmFmNzBiNzQ4MjI5NzRk
OWQ1YjcxMGQzMTVmMGE5YThmYjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VD
b25uZWN0aW9uLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNp
bmNsdWRlICJTZXJ2ZXJPcGVuREJSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiVW5pcXVlSURCRGF0YWJh
c2UuaCIKKyNpbmNsdWRlICJVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogbmFtZXNwYWNlIElEQlNlcnZlciB7CkBAIC00MiwxMSArNDMsMTQgQEAgUmVm
PFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbj4gVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9u
OjpjcmVhdGUoVW5pcXVlSURCRGEKIAogVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uOjpVbmlx
dWVJREJEYXRhYmFzZUNvbm5lY3Rpb24oVW5pcXVlSURCRGF0YWJhc2UmIGRhdGFiYXNlLCBTZXJ2
ZXJPcGVuREJSZXF1ZXN0JiByZXF1ZXN0KQogICAgIDogbV9kYXRhYmFzZShkYXRhYmFzZSkKLSAg
ICAsIG1fc2VydmVyKGRhdGFiYXNlLnNlcnZlcigpKQorICAgICwgbV9tYW5hZ2VyKGRhdGFiYXNl
Lm1hbmFnZXIoKSkKICAgICAsIG1fY29ubmVjdGlvblRvQ2xpZW50KHJlcXVlc3QuY29ubmVjdGlv
bigpKQogICAgICwgbV9vcGVuUmVxdWVzdElkZW50aWZpZXIocmVxdWVzdC5yZXF1ZXN0RGF0YSgp
LnJlcXVlc3RJZGVudGlmaWVyKCkpCiB7Ci0gICAgbV9zZXJ2ZXIucmVnaXN0ZXJEYXRhYmFzZUNv
bm5lY3Rpb24oKnRoaXMpOworICAgIGlmIChhdXRvKiBtYW5hZ2VyID0gZGF0YWJhc2UubWFuYWdl
cigpKSB7CisgICAgICAgIG1fbWFuYWdlciA9ICptYW5hZ2VyOworICAgICAgICBtX21hbmFnZXIt
PnJlZ2lzdGVyQ29ubmVjdGlvbigqdGhpcyk7CisgICAgfQogICAgIG1fY29ubmVjdGlvblRvQ2xp
ZW50LT5yZWdpc3RlckRhdGFiYXNlQ29ubmVjdGlvbigqdGhpcyk7CiB9CiAKQEAgLTU0LDEwICs1
OCwxNiBAQCBVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb246On5VbmlxdWVJREJEYXRhYmFzZUNv
bm5lY3Rpb24oKQogewogICAgIEFTU0VSVChtX3RyYW5zYWN0aW9uTWFwLmlzRW1wdHkoKSk7CiAK
LSAgICBtX3NlcnZlci51bnJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0aW9uKCp0aGlzKTsKKyAgICBp
ZiAobV9tYW5hZ2VyKQorICAgICAgICBtX21hbmFnZXItPnVucmVnaXN0ZXJDb25uZWN0aW9uKCp0
aGlzKTsKICAgICBtX2Nvbm5lY3Rpb25Ub0NsaWVudC0+dW5yZWdpc3RlckRhdGFiYXNlQ29ubmVj
dGlvbigqdGhpcyk7CiB9CiAKK1VuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlciogVW5pcXVlSURCRGF0
YWJhc2VDb25uZWN0aW9uOjptYW5hZ2VyKCkKK3sKKyAgICByZXR1cm4gbV9tYW5hZ2VyLmdldCgp
OworfQorCiBib29sIFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbjo6aGFzTm9uRmluaXNoZWRU
cmFuc2FjdGlvbnMoKSBjb25zdAogewogICAgIHJldHVybiAhbV90cmFuc2FjdGlvbk1hcC5pc0Vt
cHR5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmgKaW5kZXggMmUx
OWRmZDJkYzkxNDM0YmZjNWU3YzNhZTRiZTY2ZDhjZDg1ODgxMS4uOThmZWI1OWM3NmJlYWViZTcw
ZWRkZTRiZTU1OGZjYTg3MWM5OGRjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZUNv
bm5lY3Rpb24uaApAQCAtMjUsNyArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUg
IklEQlNlcnZlci5oIgogI2luY2x1ZGUgIlVuaXF1ZUlEQkRhdGFiYXNlLmgiCiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSWRlbnRpZmllZC5oPgpAQCAtMzYsNiArMzUs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIElEQkVycm9yOwogY2xhc3MgSURCUmVz
dWx0RGF0YTsKK2NsYXNzIFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlcjsKIAogbmFtZXNwYWNlIElE
QlNlcnZlciB7CiAKQEAgLTUyLDExICs1MiwxMSBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBJREJS
ZXNvdXJjZUlkZW50aWZpZXImIG9wZW5SZXF1ZXN0SWRlbnRpZmllcigpIHsgcmV0dXJuIG1fb3Bl
blJlcXVlc3RJZGVudGlmaWVyOyB9CiAgICAgVW5pcXVlSURCRGF0YWJhc2UqIGRhdGFiYXNlKCkg
eyByZXR1cm4gbV9kYXRhYmFzZS5nZXQoKTsgfQotICAgIElEQlNlcnZlciogc2VydmVyKCkgeyBy
ZXR1cm4gJm1fc2VydmVyOyB9CisgICAgVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyKiBtYW5hZ2Vy
KCk7CiAgICAgSURCQ29ubmVjdGlvblRvQ2xpZW50JiBjb25uZWN0aW9uVG9DbGllbnQoKSB7IHJl
dHVybiBtX2Nvbm5lY3Rpb25Ub0NsaWVudDsgfQogCi0gICAgdm9pZCBjb25uZWN0aW9uUGVuZGlu
Z0Nsb3NlRnJvbUNsaWVudCgpOwotICAgIHZvaWQgY29ubmVjdGlvbkNsb3NlZEZyb21DbGllbnQo
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbm5lY3Rpb25QZW5kaW5nQ2xvc2VGcm9tQ2xp
ZW50KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb25uZWN0aW9uQ2xvc2VkRnJvbUNsaWVu
dCgpOwogCiAgICAgYm9vbCBjbG9zZVBlbmRpbmcoKSBjb25zdCB7IHJldHVybiBtX2Nsb3NlUGVu
ZGluZzsgfQogCkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGZpcmVWZXJzaW9u
Q2hhbmdlRXZlbnQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmll
ciwgdWludDY0X3QgcmVxdWVzdGVkVmVyc2lvbik7CiAgICAgVW5pcXVlSURCRGF0YWJhc2VUcmFu
c2FjdGlvbiYgY3JlYXRlVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKHVpbnQ2NF90IG5ld1ZlcnNp
b24pOwogCi0gICAgdm9pZCBlc3RhYmxpc2hUcmFuc2FjdGlvbihjb25zdCBJREJUcmFuc2FjdGlv
bkluZm8mKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVzdGFibGlzaFRyYW5zYWN0aW9uKGNv
bnN0IElEQlRyYW5zYWN0aW9uSW5mbyYpOwogICAgIHZvaWQgZGlkQWJvcnRUcmFuc2FjdGlvbihV
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgY29uc3QgSURCRXJyb3ImKTsKICAgICB2b2lk
IGRpZENvbW1pdFRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCBjb25z
dCBJREJFcnJvciYpOwogICAgIHZvaWQgZGlkQ3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVz
dWx0RGF0YSYpOwpAQCAtNzUsOCArNzUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRDcmVhdGVJ
bmRleChjb25zdCBJREJSZXN1bHREYXRhJik7CiAgICAgdm9pZCBkaWREZWxldGVJbmRleChjb25z
dCBJREJSZXN1bHREYXRhJik7CiAgICAgdm9pZCBkaWRSZW5hbWVJbmRleChjb25zdCBJREJSZXN1
bHREYXRhJik7Ci0gICAgdm9pZCBkaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KGNvbnN0IElEQlJl
c291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIEluZGV4ZWREQjo6Q29ubmVjdGlv
bkNsb3NlZE9uQmVoYWxmT2ZTZXJ2ZXIpOwotICAgIHZvaWQgZGlkRmluaXNoSGFuZGxpbmdWZXJz
aW9uQ2hhbmdlKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlm
aWVyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZEZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQo
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgSW5kZXhlZERC
OjpDb25uZWN0aW9uQ2xvc2VkT25CZWhhbGZPZlNlcnZlcik7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBkaWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2UoY29uc3QgSURCUmVzb3VyY2VJZGVu
dGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpOwogCiAgICAgdm9pZCBhYm9ydFRyYW5zYWN0
aW9uV2l0aG91dENhbGxiYWNrKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mKTsKIApAQCAt
ODgsNyArODgsNyBAQCBwcml2YXRlOgogICAgIFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbihV
bmlxdWVJREJEYXRhYmFzZSYsIFNlcnZlck9wZW5EQlJlcXVlc3QmKTsKIAogICAgIFdlYWtQdHI8
VW5pcXVlSURCRGF0YWJhc2U+IG1fZGF0YWJhc2U7Ci0gICAgSURCU2VydmVyJiBtX3NlcnZlcjsK
KyAgICBXZWFrUHRyPFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlcj4gbV9tYW5hZ2VyOwogICAgIFJl
ZjxJREJDb25uZWN0aW9uVG9DbGllbnQ+IG1fY29ubmVjdGlvblRvQ2xpZW50OwogICAgIElEQlJl
c291cmNlSWRlbnRpZmllciBtX29wZW5SZXF1ZXN0SWRlbnRpZmllcjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNl
TWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1
ZUlEQkRhdGFiYXNlTWFuYWdlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwODg2YzQ4Njg0ZjIwNTExMWY2N2Uy
MGU2OTJiNGI5MzFjZGQxYzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyLmgKQEAgLTAsMCAr
MSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSURCRGF0YWJh
c2VJZGVudGlmaWVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IENsaWVudE9y
aWdpbjsKKworbmFtZXNwYWNlIElEQlNlcnZlciB7CisKK2NsYXNzIElEQkJhY2tpbmdTdG9yZTsK
K2NsYXNzIFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbjsKK2NsYXNzIFVuaXF1ZUlEQkRhdGFi
YXNlVHJhbnNhY3Rpb247CisKK2NsYXNzIFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlciA6IHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXI+IHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5VbmlxdWVJREJEYXRhYmFz
ZU1hbmFnZXIoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJDb25uZWN0aW9uKFVuaXF1
ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3Rl
ckNvbm5lY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCByZWdpc3RlclRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24m
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJUcmFuc2FjdGlvbihVbmlxdWVJREJE
YXRhYmFzZVRyYW5zYWN0aW9uJikgPSAwOworICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPElE
QkJhY2tpbmdTdG9yZT4gY3JlYXRlQmFja2luZ1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlSWRlbnRp
ZmllciYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFNwYWNlKGNvbnN0IENsaWVudE9y
aWdpbiYsIHVpbnQ2NF90IHNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpID0g
MDsKK307CisKK30gLy8gbmFtZXNwYWNlIElEQlNlcnZlcgorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHAKaW5kZXgg
MWNjMDI4MTdhMTI0YzhkMGVkNTJmMjEzYWM4ZTUwMDZiYTZiOTZkZS4uNmUzY2UwNDQwNmZjYWQz
M2JjYzFjOWU5ZjYxMmUyYWY0MTA2OTQxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRh
YmFzZVRyYW5zYWN0aW9uLmNwcApAQCAtMjgsNyArMjgsNiBAQAogCiAjaW5jbHVkZSAiSURCSXRl
cmF0ZUN1cnNvckRhdGEuaCIKICNpbmNsdWRlICJJREJSZXN1bHREYXRhLmgiCi0jaW5jbHVkZSAi
SURCU2VydmVyLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlVuaXF1ZUlEQkRh
dGFiYXNlLmgiCiAKQEAgLTUwLDEyICs0OSwxNCBAQCBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0
aW9uOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlQ29ubgog
ICAgIGlmIChtX3RyYW5zYWN0aW9uSW5mby5tb2RlKCkgPT0gSURCVHJhbnNhY3Rpb25Nb2RlOjpW
ZXJzaW9uY2hhbmdlKQogICAgICAgICBtX29yaWdpbmFsRGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1
ZTxJREJEYXRhYmFzZUluZm8+KGRhdGFiYXNlLT5pbmZvKCkpOwogCi0gICAgZGF0YWJhc2VDb25u
ZWN0aW9uKCkuc2VydmVyKCktPnJlZ2lzdGVyVHJhbnNhY3Rpb24oKnRoaXMpOworICAgIGlmIChh
dXRvKiBtYW5hZ2VyID0gZGF0YWJhc2VDb25uZWN0aW9uKCkubWFuYWdlcigpKQorICAgICAgICBt
YW5hZ2VyLT5yZWdpc3RlclRyYW5zYWN0aW9uKCp0aGlzKTsKIH0KIAogVW5pcXVlSURCRGF0YWJh
c2VUcmFuc2FjdGlvbjo6flVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24oKQogewotICAgIGRh
dGFiYXNlQ29ubmVjdGlvbigpLnNlcnZlcigpLT51bnJlZ2lzdGVyVHJhbnNhY3Rpb24oKnRoaXMp
OworICAgIGlmIChhdXRvKiBtYW5hZ2VyID0gZGF0YWJhc2VDb25uZWN0aW9uKCkubWFuYWdlcigp
KQorICAgICAgICBtYW5hZ2VyLT51bnJlZ2lzdGVyVHJhbnNhY3Rpb24oKnRoaXMpOwogfQogCiBV
bmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246
OmRhdGFiYXNlQ29ubmVjdGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNh
Y3Rpb24uaAppbmRleCA5NTk2NjUyYWRjZGJhN2EwNDhiNjE5Zjc0ZWYxYTkyY2VlZjllMGU1Li5m
YmE4NWMxNzM4YjczNDJlMTI4ODAwYWViOWQxZGE0NjdlZTdhMTAxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFu
c2FjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9V
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmgKQEAgLTUxLDcgKzUxLDcgQEAgbmFtZXNwYWNl
IElEQlNlcnZlciB7CiBjbGFzcyBJREJTZXJ2ZXI7CiBjbGFzcyBVbmlxdWVJREJEYXRhYmFzZUNv
bm5lY3Rpb247CiAKLWNsYXNzIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24gOiBwdWJsaWMg
UmVmQ291bnRlZDxVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uPiB7CitjbGFzcyBVbmlxdWVJ
REJEYXRhYmFzZVRyYW5zYWN0aW9uIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFVuaXF1ZUlEQkRh
dGFiYXNlVHJhbnNhY3Rpb24+LCBwdWJsaWMgUmVmQ291bnRlZDxVbmlxdWVJREJEYXRhYmFzZVRy
YW5zYWN0aW9uPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxVbmlxdWVJREJEYXRhYmFzZVRy
YW5zYWN0aW9uPiBjcmVhdGUoVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiwgY29uc3QgSURC
VHJhbnNhY3Rpb25JbmZvJik7CiAKQEAgLTU5LDI5ICs1OSwyOSBAQCBwdWJsaWM6CiAKICAgICBV
bmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mIGRhdGFiYXNlQ29ubmVjdGlvbigpOwogICAgIGNv
bnN0IElEQlRyYW5zYWN0aW9uSW5mbyYgaW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNhY3Rp
b25JbmZvOyB9Ci0gICAgYm9vbCBpc1ZlcnNpb25DaGFuZ2UoKSBjb25zdDsKKyAgICBXRUJDT1JF
X0VYUE9SVCBib29sIGlzVmVyc2lvbkNoYW5nZSgpIGNvbnN0OwogICAgIGJvb2wgaXNSZWFkT25s
eSgpIGNvbnN0OwogCiAgICAgSURCRGF0YWJhc2VJbmZvKiBvcmlnaW5hbERhdGFiYXNlSW5mbygp
IGNvbnN0OwogCi0gICAgdm9pZCBhYm9ydCgpOwotICAgIHZvaWQgYWJvcnRXaXRob3V0Q2FsbGJh
Y2soKTsKLSAgICB2b2lkIGNvbW1pdCh1aW50NjRfdCBwZW5kaW5nUmVxdWVzdENvdW50KTsKLQot
ICAgIHZvaWQgY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJ
REJPYmplY3RTdG9yZUluZm8mKTsKLSAgICB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IElE
QlJlcXVlc3REYXRhJiwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUpOwotICAgIHZvaWQg
cmVuYW1lT2JqZWN0U3RvcmUoY29uc3QgSURCUmVxdWVzdERhdGEmLCB1aW50NjRfdCBvYmplY3RT
dG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSk7Ci0gICAgdm9pZCBjbGVhck9i
amVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVu
dGlmaWVyKTsKLSAgICB2b2lkIGNyZWF0ZUluZGV4KGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29u
c3QgSURCSW5kZXhJbmZvJik7Ci0gICAgdm9pZCBkZWxldGVJbmRleChjb25zdCBJREJSZXF1ZXN0
RGF0YSYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpbmRl
eE5hbWUpOwotICAgIHZvaWQgcmVuYW1lSW5kZXgoY29uc3QgSURCUmVxdWVzdERhdGEmLCB1aW50
NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBuZXdOYW1lKTsKLSAgICB2b2lkIHB1dE9yQWRkKGNvbnN0IElEQlJlcXVlc3RE
YXRhJiwgY29uc3QgSURCS2V5RGF0YSYsIGNvbnN0IElEQlZhbHVlJiwgSW5kZXhlZERCOjpPYmpl
Y3RTdG9yZU92ZXJ3cml0ZU1vZGUpOwotICAgIHZvaWQgZ2V0UmVjb3JkKGNvbnN0IElEQlJlcXVl
c3REYXRhJiwgY29uc3QgSURCR2V0UmVjb3JkRGF0YSYpOwotICAgIHZvaWQgZ2V0QWxsUmVjb3Jk
cyhjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkdldEFsbFJlY29yZHNEYXRhJik7Ci0g
ICAgdm9pZCBnZXRDb3VudChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleVJhbmdl
RGF0YSYpOwotICAgIHZvaWQgZGVsZXRlUmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29u
c3QgSURCS2V5UmFuZ2VEYXRhJik7Ci0gICAgdm9pZCBvcGVuQ3Vyc29yKGNvbnN0IElEQlJlcXVl
c3REYXRhJiwgY29uc3QgSURCQ3Vyc29ySW5mbyYpOwotICAgIHZvaWQgaXRlcmF0ZUN1cnNvcihj
b25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkl0ZXJhdGVDdXJzb3JEYXRhJik7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBhYm9ydCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWJv
cnRXaXRob3V0Q2FsbGJhY2soKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbW1pdCh1aW50
NjRfdCBwZW5kaW5nUmVxdWVzdENvdW50KTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY3Jl
YXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJPYmplY3RTdG9y
ZUluZm8mKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0
IElEQlJlcXVlc3REYXRhJiwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUpOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgcmVuYW1lT2JqZWN0U3RvcmUoY29uc3QgSURCUmVxdWVzdERhdGEm
LCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSk7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhck9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVl
c3REYXRhJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGNyZWF0ZUluZGV4KGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCSW5k
ZXhJbmZvJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkZWxldGVJbmRleChjb25zdCBJREJS
ZXF1ZXN0RGF0YSYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiBpbmRleE5hbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVuYW1lSW5kZXgoY29uc3Qg
SURCUmVxdWVzdERhdGEmLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90
IGluZGV4SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHB1dE9yQWRkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5RGF0
YSYsIGNvbnN0IElEQlZhbHVlJiwgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0UmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRh
JiwgY29uc3QgSURCR2V0UmVjb3JkRGF0YSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0
QWxsUmVjb3Jkcyhjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkdldEFsbFJlY29yZHNE
YXRhJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRDb3VudChjb25zdCBJREJSZXF1ZXN0
RGF0YSYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
ZGVsZXRlUmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5UmFuZ2VEYXRh
Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBvcGVuQ3Vyc29yKGNvbnN0IElEQlJlcXVlc3RE
YXRhJiwgY29uc3QgSURCQ3Vyc29ySW5mbyYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaXRl
cmF0ZUN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkl0ZXJhdGVDdXJzb3JE
YXRhJik7CiAKICAgICB2b2lkIGRpZEFjdGl2YXRlSW5CYWNraW5nU3RvcmUoY29uc3QgSURCRXJy
b3ImKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hh
cmVkL0lEQkVycm9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQv
SURCRXJyb3IuaAppbmRleCBmZjE3Yzk4YTQxMTVkZTYyY2FjYzcwYWQzMjUyYmQ2ZWRmMTFmMzk5
Li5iMzBhZDM5MTc2ZjAzZmYwZDZjOTM5OGQ2YjNlZDE5Y2QyZTk5MjFkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3IuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3IuaApAQCAtNTIs
NiArNTIsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIG1lc3NhZ2UoKSBjb25zdDsKIAogICAgIGJv
b2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gIW1fY29kZTsgfQorICAgIG9wZXJhdG9yIGJvb2wo
KSBjb25zdCB7IHJldHVybiAhaXNOdWxsKCk7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIElEQkVy
cm9yIGlzb2xhdGVkQ29weSgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5oCmluZGV4IDAxOGNiMTNl
NzVlYjY0NWRkMTE0ZTI0ZjZkYmZlYTM0Y2Y1NWIxNjQuLjAwMTc4N2E2NjU4YTQxNzhiNmE3OTcx
MjhhMDRkYTM2YjhhZmRmZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5oCkBAIC01Niw4ICs1Niw4IEBAIHB1
YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBJREJSZXF1ZXN0RGF0YSBpc29sYXRlZENvcHkoKSBj
b25zdDsKIAogICAgIElEQkNvbm5lY3Rpb25JZGVudGlmaWVyIHNlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyKCkgY29uc3Q7Ci0gICAgSURCUmVzb3VyY2VJZGVudGlmaWVyIHJlcXVlc3RJZGVudGlm
aWVyKCkgY29uc3Q7Ci0gICAgSURCUmVzb3VyY2VJZGVudGlmaWVyIHRyYW5zYWN0aW9uSWRlbnRp
ZmllcigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIElEQlJlc291cmNlSWRlbnRpZmllciBy
ZXF1ZXN0SWRlbnRpZmllcigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIElEQlJlc291cmNl
SWRlbnRpZmllciB0cmFuc2FjdGlvbklkZW50aWZpZXIoKSBjb25zdDsKICAgICB1aW50NjRfdCBv
YmplY3RTdG9yZUlkZW50aWZpZXIoKSBjb25zdDsKICAgICB1aW50NjRfdCBpbmRleElkZW50aWZp
ZXIoKSBjb25zdDsKICAgICBJbmRleGVkREI6OkluZGV4UmVjb3JkVHlwZSBpbmRleFJlY29yZFR5
cGUoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NoYXJlZC9JREJSZXNvdXJjZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NoYXJlZC9JREJSZXNvdXJjZUlkZW50aWZpZXIuaAppbmRleCBiZTE2MTk3ZjYz
NGE1OTZjMzllNTEzMDI4NTkwNjgzNTc0NTg2ODJhLi5iZDM5NTRhMjg5NzNjZWI4YTViZjY0OGY0
YWE1MTIzZjJlZmJlZjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zaGFyZWQvSURCUmVzb3VyY2VJZGVudGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc291cmNlSWRlbnRpZmllci5oCkBAIC00OSw3
ICs0OSw3IEBAIHB1YmxpYzoKICAgICBJREJSZXNvdXJjZUlkZW50aWZpZXIoY29uc3QgSURCQ2xp
ZW50OjpJREJDb25uZWN0aW9uUHJveHkmLCBjb25zdCBJREJSZXF1ZXN0Jik7CiAgICAgZXhwbGlj
aXQgSURCUmVzb3VyY2VJZGVudGlmaWVyKGNvbnN0IElEQlNlcnZlcjo6SURCQ29ubmVjdGlvblRv
Q2xpZW50Jik7CiAKLSAgICBzdGF0aWMgSURCUmVzb3VyY2VJZGVudGlmaWVyIGVtcHR5VmFsdWUo
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSURCUmVzb3VyY2VJZGVudGlmaWVyIGVtcHR5
VmFsdWUoKTsKICAgICBib29sIGlzRW1wdHkoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJu
ICFtX3Jlc291cmNlTnVtYmVyICYmICFtX2lkYkNvbm5lY3Rpb25JZGVudGlmaWVyOwpAQCAtNjAs
NyArNjAsOCBAQCBwdWJsaWM6CiAgICAgICAgIHVpbnQ2NF90IGhhc2hDb2Rlc1syXSA9IHsgbV9p
ZGJDb25uZWN0aW9uSWRlbnRpZmllci50b1VJbnQ2NCgpLCBtX3Jlc291cmNlTnVtYmVyIH07CiAg
ICAgICAgIHJldHVybiBTdHJpbmdIYXNoZXI6Omhhc2hNZW1vcnk8c2l6ZW9mKGhhc2hDb2Rlcyk+
KGhhc2hDb2Rlcyk7CiAgICAgfQotICAgIAorCisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IElE
QlJlc291cmNlSWRlbnRpZmllciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3Ro
ZXIpOyB9CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYg
b3RoZXIpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9pZGJDb25uZWN0aW9uSWRlbnRp
ZmllciA9PSBvdGhlci5tX2lkYkNvbm5lY3Rpb25JZGVudGlmaWVyCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjFmOGE1MTA0YjZi
Mjk1NmYyYmYxZDI2YzUxZDg3MzNlZDI1OGNkOS4uZjA5YWE3OGU0YzI2N2YwZWQ0NGE5ODA2MTU5
M2ViYzA5OTU3MDQwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMTU0MSwxMCArMTU0MSwxMCBAQAogCQk1MTEyM0UyRjI3Njk0
MENBMDBGOUQ0MUIgLyogTm90aWZpY2F0aW9uRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExMjNFMkMyNzY5M0MzMjAwRjlENDFCIC8qIE5vdGlm
aWNhdGlvbkRhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk1MTE3RjMwRTI1RTYxMDIwMDAyQTlGMUUgLyogUmVtb3RlQ29tbWFuZExpc3RlbmVy
Q29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
MTdGMzBDMjVFNjEwMUYwMDJBOUYxRSAvKiBSZW1vdGVDb21tYW5kTGlzdGVuZXJDb2NvYS5oICov
OyB9OwogCQk1MTFFQzEyODFDNTBBQUNBMDAzMkY5ODMgLyogSURCU2VyaWFsaXphdGlvbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExRUMxMjYxQzUw
QUE1NzAwMzJGOTgzIC8qIElEQlNlcmlhbGl6YXRpb24uaCAqLzsgfTsKLQkJNTExRUMxMkMxQzUw
QUJCRjAwMzJGOTgzIC8qIFNRTGl0ZUlEQlRyYW5zYWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTFFQzEyQTFDNTBBQkJBMDAzMkY5ODMgLyog
U1FMaXRlSURCVHJhbnNhY3Rpb24uaCAqLzsgfTsKKwkJNTExRUMxMkMxQzUwQUJCRjAwMzJGOTgz
IC8qIFNRTGl0ZUlEQlRyYW5zYWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MTFFQzEyQTFDNTBBQkJBMDAzMkY5ODMgLyogU1FMaXRlSURCVHJh
bnNhY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk1MTFFQzEzMDFDNTBBQkY1MDAzMkY5ODMgLyogU1FMaXRlSURCQ3Vyc29yLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTFFQzEyRTFDNTBBQkVD
MDAzMkY5ODMgLyogU1FMaXRlSURCQ3Vyc29yLmggKi87IH07CiAJCTUxMjBCQkFGMUYxQ0VDRTcw
MEVGRUJGMSAvKiBDb29raWVTdG9yYWdlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMjBCQkFEMUYxQ0U3NzAwMEVGRUJGMSAvKiBDb29r
aWVTdG9yYWdlT2JzZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwotCQk1MTJCREI0QjFDNDU2RkZBMDA2NDk0REYgLyogU1FMaXRlSURCQmFja2lu
Z1N0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTJCREI0OTFDNDU2RkFCMDA2NDk0REYgLyogU1FMaXRlSURCQmFja2luZ1N0b3JlLmggKi87IH07
CisJCTUxMkJEQjRCMUM0NTZGRkEwMDY0OTRERiAvKiBTUUxpdGVJREJCYWNraW5nU3RvcmUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMkJEQjQ5MUM0
NTZGQUIwMDY0OTRERiAvKiBTUUxpdGVJREJCYWNraW5nU3RvcmUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTJERDhGNTBEOTFFNkFGMDAwRjg5
RUUgLyogTGVnYWN5V2ViQXJjaGl2ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTEyREQ4RUIwRDkxRTZBRjAwMEY4OUVFIC8qIExlZ2FjeVdlYkFyY2hp
dmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1
MTJERDhGNjBEOTFFNkFGMDAwRjg5RUUgLyogQXJjaGl2ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyREQ4RUMwRDkxRTZBRjAwMEY4OUVFIC8qIEFy
Y2hpdmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk1MTJERDhGODBEOTFFNkFGMDAwRjg5RUUgLyogQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyREQ4RUUw
RDkxRTZBRjAwMEY4OUVFIC8qIEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24uaCAqLzsgfTsKQEAg
LTE1OTAsNyArMTU5MCw3IEBACiAJCTUxNkQ3RDcyMUJCNUYwQkQwMEFGN0M3NyAvKiBJREJDb25u
ZWN0aW9uVG9DbGllbnREZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTE2RDdENkUxQkI1RjA2NTAwQUY3Qzc3IC8qIElEQkNvbm5lY3Rpb25U
b0NsaWVudERlbGVnYXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNTE2RjdGNkQxQzMxRTM5QTAwRjExMURDIC8qIFNlcnZlck9wZW5EQlJlcXVl
c3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNkY3
RjZDMUMzMUM3OUQwMEYxMTFEQyAvKiBTZXJ2ZXJPcGVuREJSZXF1ZXN0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE3MTM4RjAxQkVEMUQxQTAw
MEQ1RjAxIC8qIEluZGV4S2V5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTcxMzhFRTFCRUQxRDE3MDAwRDVGMDEgLyogSW5kZXhLZXkuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk1MTcxMzhGODFCRjEy
OEJCMDAwRDVGMDEgLyogSW5kZXhWYWx1ZVN0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTcxMzhGNjFCRjEyMjYyMDAwRDVGMDEgLyogSW5kZXhW
YWx1ZVN0b3JlLmggKi87IH07CisJCTUxNzEzOEY4MUJGMTI4QkIwMDBENUYwMSAvKiBJbmRleFZh
bHVlU3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxNzEzOEY2MUJGMTIyNjIwMDBENUYwMSAvKiBJbmRleFZhbHVlU3RvcmUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTcxMzhGQzFCRjNBREY0
MDAwRDVGMDEgLyogSURCQ3Vyc29ySW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTE3MTM4RkExQkYzQURBQzAwMEQ1RjAxIC8qIElEQkN1cnNvcklu
Zm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1
MTcxMzkwNjFCRjY0REVDMDAwRDVGMDEgLyogTWVtb3J5T2JqZWN0U3RvcmVDdXJzb3IuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNzEzOTA0MUJGNjRE
RTMwMDBENUYwMSAvKiBNZW1vcnlPYmplY3RTdG9yZUN1cnNvci5oICovOyB9OwogCQk1MTcxMzkw
ODFCRjY0REVGMDAwRDVGMDEgLyogTWVtb3J5Q3Vyc29yLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTcxMzkwMjFCRjY0REUzMDAwRDVGMDEgLyogTWVt
b3J5Q3Vyc29yLmggKi87IH07CkBAIC0xNjY2LDcgKzE2NjYsNyBAQAogCQk1MUI5MTQxMDFGRDI3
ODJEMDBFRTI4NTkgLyogUmVnaXN0cmF0aW9uRGF0YWJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQjkxNDBDMUZEMjc4MjUwMEVFMjg1OSAvKiBS
ZWdpc3RyYXRpb25EYXRhYmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTUxQjkxNDExMUZEMjc4MkQwMEVFMjg1OSAvKiBSZWdpc3RyYXRpb25T
dG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFC
OTE0MEIxRkQyNzgyNTAwRUUyODU5IC8qIFJlZ2lzdHJhdGlvblN0b3JlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFCQTRBQzQxQkJCNUNEODAw
REYzRDZEIC8qIElEQkRhdGFiYXNlSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTFCQTRBQzIxQkJCNUNCRjAwREYzRDZEIC8qIElEQkRhdGFiYXNl
SW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0J
CTUxQkE0QUNCMUJCQzVCRDkwMERGM0Q2RCAvKiBNZW1vcnlJREJCYWNraW5nU3RvcmUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkE0QUM5MUJCQzVC
OUUwMERGM0Q2RCAvKiBNZW1vcnlJREJCYWNraW5nU3RvcmUuaCAqLzsgfTsKKwkJNTFCQTRBQ0Ix
QkJDNUJEOTAwREYzRDZEIC8qIE1lbW9yeUlEQkJhY2tpbmdTdG9yZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCQTRBQzkxQkJDNUI5RTAwREYzRDZE
IC8qIE1lbW9yeUlEQkJhY2tpbmdTdG9yZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTUxQkE0QUNDMUJCQzVCREQwMERGM0Q2RCAvKiBJREJCYWNr
aW5nU3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxQkE0QUM3MUJCQzVBRDYwMERGM0Q2RCAvKiBJREJCYWNraW5nU3RvcmUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUJBOTQ3MTIzQUMzMDUz
MDA0NDQ4NDYgLyogUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkE5NDZGMjNBQzMwNTAwMDQ0NDg0NiAvKiBS
dW5KYXZhU2NyaXB0UGFyYW1ldGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTUxQkNDRTMwMUY4RjE3OUUwMDZCQTBFRCAvKiBTZXJ2aWNlV29y
a2VyVGhyZWFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTdDODcxMDFGOEVFNzJFMDBFQjgwNzYgLyogU2VydmljZVdvcmtlclRocmVhZC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNjgyLDcgKzE2
ODIsNyBAQAogCQk1MUUwQkFCQjBEQTU1NDcxMDBBOUU0MTcgLyogU3RvcmFnZUV2ZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUwQkFCOTBEQTU1
NDcxMDBBOUU0MTcgLyogU3RvcmFnZUV2ZW50LmggKi87IH07CiAJCTUxRTBCQUVCMERBNTVENEEw
MEE5RTQxNyAvKiBKU1N0b3JhZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTFFMEJBRTkwREE1NUQ0QTAwQTlFNDE3IC8qIEpTU3RvcmFnZUV2
ZW50LmggKi87IH07CiAJCTUxRTBCQjM4MERBNUFDQjYwMEE5RTQxNyAvKiBTdG9yYWdlTWFwLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUwQkIzNjBE
QTVBQ0I2MDBBOUU0MTcgLyogU3RvcmFnZU1hcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTUxRTFCQUMzMUJEODA2NEUwMDU1RDgxRiAvKiBNZW1v
cnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTFFMUJBQzExQkQ4MDY0NzAwNTVEODFGIC8qIE1lbW9yeUJhY2tp
bmdTdG9yZVRyYW5zYWN0aW9uLmggKi87IH07CisJCTUxRTFCQUMzMUJEODA2NEUwMDU1RDgxRiAv
KiBNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFMUJBQzExQkQ4MDY0NzAwNTVEODFGIC8qIE1lbW9y
eUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFFMjY5MzcxREQzQkQ5QjAwNkI2QTU4IC8qIElEQkl0ZXJh
dGVDdXJzb3JEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MUUyNjkzNTFERDNCRDkxMDA2QjZBNTggLyogSURCSXRlcmF0ZUN1cnNvckRhdGEuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUUzOTkw
MDFENkU0NzUwMDA5Qzg4MzEgLyogR2FtZUNvbnRyb2xsZXJHYW1lcGFkLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUzOThGQzFENkU0NzRCMDA5Qzg4
MzEgLyogR2FtZUNvbnRyb2xsZXJHYW1lcGFkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFFMzk5MDIxRDZFNDc1MDAwOUM4ODMxIC8qIEdhbWVD
b250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MUUzOThGRTFENkU0NzRCMDA5Qzg4MzEgLyogR2FtZUNvbnRyb2xs
ZXJHYW1lcGFkUHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtMTY5Miw3ICsxNjkyLDcgQEAKIAkJNTFFQ0MzRjgyMDA1ODdCRjAwNDgz
RUFFIC8qIE1lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUVDQzNGMTIwMDU4N0I1MDA0ODNFQUUgLyogTWVz
c2FnZVBvcnRDaGFubmVsUmVnaXN0cnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk1MUVDQzNGRDIwMDU5MzBEMDA0ODNFQUUgLyogTWVzc2FnZVBv
cnRDaGFubmVsUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxRUNDM0ZCMjAwNTkzMDEwMDQ4M0VBRSAvKiBNZXNzYWdlUG9ydENoYW5uZWxQ
cm92aWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTUxRUU3QjM4MUFBNTBCMDUwMEY5MkIyMSAvKiBSZXNvdXJjZUxvYWRJbmZvLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUVFN0IzNzFBQTUwQjA1
MDBGOTJCMjEgLyogUmVzb3VyY2VMb2FkSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTUxRUVBQTc0MUJFRkZBQjEwMDIxODAwOCAvKiBJbmRl
eFZhbHVlRW50cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxRUVBQTcyMUJFRkZBNzkwMDIxODAwOCAvKiBJbmRleFZhbHVlRW50cnkuaCAqLzsgfTsK
KwkJNTFFRUFBNzQxQkVGRkFCMTAwMjE4MDA4IC8qIEluZGV4VmFsdWVFbnRyeS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFRUFBNzIxQkVGRkE3OTAw
MjE4MDA4IC8qIEluZGV4VmFsdWVFbnRyeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTUxRjE3NEZFMUYzNTg5OTIwMEM3NDk1MCAvKiBXb3JrZXJU
eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUYx
NzRGQzFGMzU4OTg4MDBDNzQ5NTAgLyogV29ya2VyVHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxRjE3NTAzMUYzNThCM0IwMEM3NDk1MCAv
KiBKU1NlcnZpY2VXb3JrZXJVcGRhdGVWaWFDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGMTc1MDExRjM1OEIzNjAwQzc0OTUwIC8qIEpTU2Vy
dmljZVdvcmtlclVwZGF0ZVZpYUNhY2hlLmggKi87IH07CiAJCTUxRjE3NTA2MUYzNThCRjcwMEM3
NDk1MCAvKiBKU1dvcmtlclR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxRjE3NTA1MUYzNThCREUwMEM3NDk1MCAvKiBKU1dvcmtlclR5cGUuaCAq
LzsgfTsKQEAgLTI5OTIsNiArMjk5Miw3IEBACiAJCTkzQjJEODE2MEY5OTIwRDIwMDZBRTZCMiAv
KiBTdWRkZW5UZXJtaW5hdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTNCMkQ4MTUwRjk5MjBEMjAwNkFFNkIyIC8qIFN1ZGRlblRlcm1pbmF0aW9u
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNC
MzhFQzMyNTgyMURCNDAwMTk4RTYzIC8qIFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0IzOEVCQTI1ODIxOTNC
MDAxOThFNjMgLyogV2ViU3BlZWNoUmVjb2duaXplclRhc2suaCAqLzsgfTsKIAkJOTNCMzhFQzQy
NTgyMURCNzAwMTk4RTYzIC8qIFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jay5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCMzhFQkIyNTgyMTkzRDAw
MTk4RTYzIC8qIFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jay5oICovOyB9OworCQk5M0I2MzFF
MjI3QUJBMUU2MDA0NDNBNDQgLyogVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0I2MzFFMDI3QUJBMUUyMDA0
NDNBNDQgLyogVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNCNkEwRTYwQjBCQ0E1QzAwRjUwMjdBIC8q
IENvbnRleHRNZW51LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5M0I2QTBFNTBCMEJDQTVDMDBGNTAyN0EgLyogQ29udGV4dE1lbnUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0I3MEQ2NDA5RUIwQzdD
MDA5RDg0NjggLyogSlNET01CaW5kaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5M0I3MEQ0ODA5RUIwQzdDMDA5RDg0NjggLyogSlNET01CaW5kaW5n
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNC
NzBENkEwOUVCMEM3QzAwOUQ4NDY4IC8qIEpTRXZlbnRMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCNzBENEUwOUVCMEM3QzAwOUQ4NDY4
IC8qIEpTRXZlbnRMaXN0ZW5lci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0xMjgyNCw2ICsxMjgyNSw3IEBACiAJCTkzQjM4RUJBMjU4MjE5M0Iw
MDE5OEU2MyAvKiBXZWJTcGVlY2hSZWNvZ25pemVyVGFzay5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJTcGVlY2hSZWNvZ25pemVyVGFzay5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5M0IzOEVCQjI1ODIxOTNEMDAxOThFNjMgLyogV2ViU3BlZWNoUmVjb2du
aXplclRhc2tNb2NrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNwZWVj
aFJlY29nbml6ZXJUYXNrTW9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0Iz
OEVCQzI1ODIxOTNFMDAxOThFNjMgLyogV2ViU3BlZWNoUmVjb2duaXplclRhc2subW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJTcGVlY2hSZWNvZ25pemVyVGFz
ay5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNCNjMxRTAyN0FCQTFFMjAwNDQz
QTQ0IC8qIFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTNCNkEwRTUwQjBCQ0E1QzAwRjUwMjdBIC8qIENvbnRleHRNZW51LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb250ZXh0TWVudS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5M0I3MEQ0ODA5RUIwQzdDMDA5RDg0NjggLyogSlNET01CaW5k
aW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RPTUJpbmRpbmcuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCNzBENEQwOUVCMEM3QzAwOUQ4NDY4IC8q
IEpTRXZlbnRMaXN0ZW5lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNFdmVudExpc3RlbmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIy
MTQ3LDYgKzIyMTQ5LDcgQEAKIAkJCQk1MTg4NjRERjFCQkFGMzBGMDBFNTQwQzkgLyogVW5pcXVl
SURCRGF0YWJhc2UuaCAqLywKIAkJCQk1MTk4RjdBMjFCQkRBQTI5MDBFMkNDNUYgLyogVW5pcXVl
SURCRGF0YWJhc2VDb25uZWN0aW9uLmNwcCAqLywKIAkJCQk1MTk4RjdBMzFCQkRBQTI5MDBFMkND
NUYgLyogVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmggKi8sCisJCQkJOTNCNjMxRTAyN0FC
QTFFMjAwNDQzQTQ0IC8qIFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlci5oICovLAogCQkJCTUxOThG
N0E2MUJCREQzODEwMEUyQ0M1RiAvKiBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcCAq
LywKIAkJCQk1MTk4RjdBNzFCQkREMzgxMDBFMkNDNUYgLyogVW5pcXVlSURCRGF0YWJhc2VUcmFu
c2FjdGlvbi5oICovLAogCQkJKTsKQEAgLTM3NzY4LDYgKzM3NzcxLDcgQEAKIAkJCQlBODYzRTIw
MTEzNDM0MTIwMDAyNzQ5MjYgLyogVW5pY29kZUJpZGkuaCBpbiBIZWFkZXJzICovLAogCQkJCTUx
ODg2NEUxMUJCQUY1NzQwMEU1NDBDOSAvKiBVbmlxdWVJREJEYXRhYmFzZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTE5OEY3QTUxQkJEQjc5MzAwRTJDQzVGIC8qIFVuaXF1ZUlEQkRhdGFiYXNlQ29u
bmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTNCNjMxRTIyN0FCQTFFNjAwNDQzQTQ0IC8q
IFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE5OEY3QTkx
QkJERDM4NTAwRTJDQzVGIC8qIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCUU0QUZDRkE1MERBRjI5QTMwMEY1RjU1QyAvKiBVbml0QmV6aWVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlDMThDQzBBNDI1ODBFRkIxMDAzRDc1RkIgLyogVW5pdmVyc2FsQWNj
ZXNzWm9vbS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4
IGEzNGY3OWJkZTNlMDgxNjk2ZDczYTU1ZmJmNTkwNThiZjZkOGYzNzkuLjU3M2ZkOGNmMmI2Y2Zm
YzE1NDFjODRiMjJiZDBiMjRhMWNmYmQ1ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
CkBAIC01MiwxMyArNTIsMTMgQEAKICNpbmNsdWRlICJOZXR3b3JrU29ja2V0Q2hhbm5lbE1lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1NvY2tldFN0cmVhbS5oIgogI2luY2x1ZGUgIk5ldHdv
cmtTb2NrZXRTdHJlYW1NZXNzYWdlcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtTdG9yYWdlTWFuYWdl
ci5oIgogI2luY2x1ZGUgIlBpbmdMb2FkLmgiCiAjaW5jbHVkZSAiUHJlY29ubmVjdFRhc2suaCIK
ICNpbmNsdWRlICJSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUg
IlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1
bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYkVycm9ycy5oIgotI2luY2x1ZGUgIldlYklEQlNl
cnZlci5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBy
b2Nlc3NQb29sTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuaCIKQEAgLTM5MCw4ICszOTAsMTIgQEAgYm9vbCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmUKIAog
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6dXBkYXRlUXVvdGFCYXNlZE9uU3Bh
Y2VVc2FnZUZvclRlc3RpbmcoY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4pCiB7Ci0gICAgYXV0
byBzdG9yYWdlUXVvdGFNYW5hZ2VyID0gbV9uZXR3b3JrUHJvY2Vzcy0+c3RvcmFnZVF1b3RhTWFu
YWdlcihzZXNzaW9uSUQoKSwgb3JpZ2luKTsKLSAgICBzdG9yYWdlUXVvdGFNYW5hZ2VyLT5yZXNl
dFF1b3RhVXBkYXRlZEJhc2VkT25Vc2FnZUZvclRlc3RpbmcoKTsKKyAgICBhdXRvKiBzZXNzaW9u
ID0gbV9uZXR3b3JrUHJvY2Vzcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKCkpOworICAgIGlm
ICghc2Vzc2lvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGF1dG8qIHN0b3JhZ2VNYW5h
Z2VyID0gc2Vzc2lvbi0+c3RvcmFnZU1hbmFnZXIoKSkKKyAgICAgICAgc3RvcmFnZU1hbmFnZXIt
PnJlc2V0UXVvdGFVcGRhdGVkQmFzZWRPblVzYWdlRm9yVGVzdGluZyhvcmlnaW4pOwogfQogCiB2
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24pCkBAIC05ODMsOCArOTg3LDEwIEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzRm9ySW5kZXhlZERCKGNv
bnN0CiAgICAgICAgIGZvciAoYXV0byYgZmlsZSA6IGZpbGVSZWZlcmVuY2VzKQogICAgICAgICAg
ICAgZmlsZS0+cmV2b2tlRmlsZUFjY2VzcygpOwogCi0gICAgICAgIGlmIChhdXRvKiBzZXNzaW9u
ID0gbmV0d29ya1Nlc3Npb24oKSkKLSAgICAgICAgICAgIHNlc3Npb24tPmVuc3VyZVdlYklEQlNl
cnZlcigpLnJlZ2lzdGVyVGVtcG9yYXJ5QmxvYkZpbGVQYXRocyhtX2Nvbm5lY3Rpb24sIGZpbGVQ
YXRocyk7CisgICAgICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oKSkgewor
ICAgICAgICAgICAgaWYgKGF1dG8qIHN0b3JhZ2VNYW5hZ2VyID0gc2Vzc2lvbi0+c3RvcmFnZU1h
bmFnZXIoKSkKKyAgICAgICAgICAgICAgICBzdG9yYWdlTWFuYWdlci0+cmVnaXN0ZXJUZW1wb3Jh
cnlCbG9iRmlsZVBhdGhzKG1fY29ubmVjdGlvbiwgZmlsZVBhdGhzKTsKKyAgICAgICAgfQogICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGZpbGVQYXRocykpOwogICAgIH0pOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRl
eCA3Yzc5ZTJhMjA5NzZhMTM5YzdmNjY3ZjExM2M0ODk0NmRlZGQ1NjQxLi4xNzViZDM4MTY0NzQ5
MTZjYzAxMTVjOWQ4ZmYyYzU4NmJkMGUzMWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMjY0LDggKzI2NCw2IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpCiAgICAgLy8gTWFrZSBzdXJl
IHdlIGZsdXNoIGFsbCBjb29raWVzIHRvIGRpc2sgYmVmb3JlIGV4aXRpbmcuCiAgICAgZm9yRWFj
aE5ldHdvcmtTZXNzaW9uKFsmXSAoYXV0byYgc2Vzc2lvbikgewogICAgICAgICBwbGF0Zm9ybUZs
dXNoQ29va2llcyhzZXNzaW9uLnNlc3Npb25JRCgpLCBbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0p
OwotICAgICAgICAvLyBNYWtlIHN1cmUgcmVmZXJlbmNlIHRvIE5ldHdvcmtQcm9jZXNzIGluIHNw
YWNlUmVxdWVzdGVyIGlzIHJlbW92ZWQuCi0gICAgICAgIHNlc3Npb24uY2xvc2VJREJTZXJ2ZXIo
W2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKICAgICB9KTsKIH0KIApAQCAtMzgyLDcgKzM4MCw2
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKFByb2Nlc3NJZGVudGlmaWVyIGlkZW50CiAgICAgY29ubmVjdGlvbi5zZXRPbkxpbmVTdGF0
ZShOZXR3b3JrU3RhdGVOb3RpZmllcjo6c2luZ2xldG9uKCkub25MaW5lKCkpOwogCiAgICAgaWYg
KGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIHNl
c3Npb24tPmVuc3VyZVdlYklEQlNlcnZlcigpLmFkZENvbm5lY3Rpb24oY29ubmVjdGlvbi5jb25u
ZWN0aW9uKCksIGlkZW50aWZpZXIpOwogICAgICAgICBpZiAoYXV0byogbWFuYWdlciA9IHNlc3Np
b24tPnN0b3JhZ2VNYW5hZ2VyKCkpCiAgICAgICAgICAgICBtYW5hZ2VyLT5zdGFydFJlY2Vpdmlu
Z01lc3NhZ2VGcm9tQ29ubmVjdGlvbihjb25uZWN0aW9uLmNvbm5lY3Rpb24oKSk7CiAgICAgfQpA
QCAtNDA2LDggKzQwMyw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmFkZFdlYnNpdGVEYXRhU3Rv
cmUoV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzCiAgICAgYWRkU2Vzc2lv
blN0b3JhZ2VRdW90YU1hbmFnZXIoc2Vzc2lvbklELCBwYXJhbWV0ZXJzLnBlck9yaWdpblN0b3Jh
Z2VRdW90YSwgcGFyYW1ldGVycy5wZXJUaGlyZFBhcnR5T3JpZ2luU3RvcmFnZVF1b3RhLCBwYXJh
bWV0ZXJzLmNhY2hlU3RvcmFnZURpcmVjdG9yeSwgcGFyYW1ldGVycy5jYWNoZVN0b3JhZ2VEaXJl
Y3RvcnlFeHRlbnNpb25IYW5kbGUpOwogCiAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3Jr
U2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIHNlc3Npb24tPmFkZFN0b3JhZ2VNYW5hZ2Vy
U2Vzc2lvbihwYXJhbWV0ZXJzLmdlbmVyYWxTdG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmdl
bmVyYWxTdG9yYWdlRGlyZWN0b3J5SGFuZGxlLCBwYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVj
dG9yeSwgcGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwot
ICAgICAgICBzZXNzaW9uLT5hZGRJbmRleGVkRGF0YWJhc2VTZXNzaW9uKHBhcmFtZXRlcnMuaW5k
ZXhlZERhdGFiYXNlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9y
eUV4dGVuc2lvbkhhbmRsZSk7CisgICAgICAgIHNlc3Npb24tPmFkZFN0b3JhZ2VNYW5hZ2VyU2Vz
c2lvbihwYXJhbWV0ZXJzLmdlbmVyYWxTdG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmdlbmVy
YWxTdG9yYWdlRGlyZWN0b3J5SGFuZGxlLCBwYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9y
eSwgcGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUsIHBhcmFt
ZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFz
ZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSwgcGFyYW1ldGVycy5jYWNoZVN0b3JhZ2VEaXJlY3Rv
cnksIHBhcmFtZXRlcnMucGVyT3JpZ2luU3RvcmFnZVF1b3RhLCBwYXJhbWV0ZXJzLnBlclRoaXJk
UGFydHlPcmlnaW5TdG9yYWdlUXVvdGEpOwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAg
ICAgICAgc2Vzc2lvbi0+YWRkU2VydmljZVdvcmtlclNlc3Npb24ocGFyYW1ldGVycy5zZXJ2aWNl
V29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkLCBXVEZNb3ZlKHBhcmFtZXRlcnMu
c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSksIHBhcmFtZXRlcnMuc2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAjZW5kaWYKQEAgLTE0
NTIsMTMgKzE0NDgsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpmZXRjaFdlYnNpdGVEYXRhKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdAogICAgICAgICBjYWxsYmFj
a0FnZ3JlZ2F0b3ItPm1fd2Vic2l0ZURhdGEuaG9zdE5hbWVzV2l0aEhTVFNDYWNoZSA9IGhvc3RO
YW1lc1dpdGhIU1RTQ2FjaGUoc2Vzc2lvbklEKTsKICNlbmRpZgogCi0gICAgaWYgKHdlYnNpdGVE
YXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpICYm
IHNlc3Npb24gJiYgc2Vzc2lvbi0+aGFzSURCRGF0YWJhc2VQYXRoKCkpIHsKLSAgICAgICAgc2Vz
c2lvbi0+ZW5zdXJlV2ViSURCU2VydmVyKCkuZ2V0T3JpZ2lucyhbY2FsbGJhY2tBZ2dyZWdhdG9y
XShhdXRvJiYgb3JpZ2lucykgewotICAgICAgICAgICAgd2hpbGUgKCFvcmlnaW5zLmlzRW1wdHko
KSkKLSAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fd2Vic2l0ZURhdGEuZW50
cmllcy5hcHBlbmQoeyBvcmlnaW5zLnRha2VBbnkoKSwgV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVk
REJEYXRhYmFzZXMsIDAgfSk7Ci0gICAgICAgIH0pOwotICAgIH0KLQogI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0
YVR5cGU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zKSAmJiBzZXNzaW9uICYmIHNlc3Npb24t
Pmhhc1NlcnZpY2VXb3JrZXJEYXRhYmFzZVBhdGgoKSkgewogICAgICAgICBzZXNzaW9uLT5lbnN1
cmVTV1NlcnZlcigpLmdldE9yaWdpbnNXaXRoUmVnaXN0cmF0aW9ucyhbY2FsbGJhY2tBZ2dyZWdh
dG9yXShjb25zdCBIYXNoU2V0PFNlY3VyaXR5T3JpZ2luRGF0YT4mIHNlY3VyaXR5T3JpZ2lucykg
bXV0YWJsZSB7CkBAIC0xNTI1LDkgKzE1MTQsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxl
dGVXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaQog
ICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6RE9NQ2Fj
aGUpICYmIHNlc3Npb24pCiAgICAgICAgIENhY2hlU3RvcmFnZTo6RW5naW5lOjpjbGVhckFsbENh
Y2hlcygqc2Vzc2lvbiwgW2NsZWFyVGFza3NIYW5kbGVyXSB7IH0pOwogCi0gICAgaWYgKHdlYnNp
dGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMp
ICYmICFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSAmJiBzZXNzaW9uKQotICAgICAgICBzZXNzaW9u
LT5lbnN1cmVXZWJJREJTZXJ2ZXIoKS5jbG9zZUFuZERlbGV0ZURhdGFiYXNlc01vZGlmaWVkU2lu
Y2UobW9kaWZpZWRTaW5jZSwgW2NsZWFyVGFza3NIYW5kbGVyXSB7IH0pOwotCiAjaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQogICAgIGJvb2wgY2xlYXJTZXJ2aWNlV29ya2VycyA9IHdlYnNpdGVE
YXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSkgfHwgd2Vic2l0ZURh
dGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25zKTsKICAgICBpZiAoY2xlYXJTZXJ2aWNlV29ya2VycyAmJiAhc2Vzc2lvbklELmlzRXBoZW1l
cmFsKCkgJiYgc2Vzc2lvbikKQEAgLTE2MjAsOSArMTYwNiw2IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IE9wdGlvCiAgICAgICAgICAgICBDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6Y2xlYXJDYWNoZXNGb3JP
cmlnaW4oKnNlc3Npb24sIFNlY3VyaXR5T3JpZ2luRGF0YSB7IG9yaWdpbkRhdGEgfSwgW2NsZWFy
VGFza3NIYW5kbGVyXSB7IH0pOwogICAgIH0KIAotICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNv
bnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKSAmJiAhc2Vzc2lvbklE
LmlzRXBoZW1lcmFsKCkgJiYgc2Vzc2lvbikKLSAgICAgICAgc2Vzc2lvbi0+ZW5zdXJlV2ViSURC
U2VydmVyKCkuY2xvc2VBbmREZWxldGVEYXRhYmFzZXNGb3JPcmlnaW5zKG9yaWdpbkRhdGFzLCBb
Y2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7Ci0KICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAg
ICAgYm9vbCBjbGVhclNlcnZpY2VXb3JrZXJzID0gd2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhX
ZWJzaXRlRGF0YVR5cGU6OkRPTUNhY2hlKSB8fCB3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdl
YnNpdGVEYXRhVHlwZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMpOwogICAgIGlmIChjbGVh
clNlcnZpY2VXb3JrZXJzICYmICFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSAmJiBzZXNzaW9uKSB7
CkBAIC0xODExLDE3ICsxNzk0LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlQW5kUmVz
dHJpY3RXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhQQUw6OlNlc3MKICAgICAgICAg
ICAgIH0KICAgICAgICAgfSk7CiAgICAgfQotCi0gICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29u
dGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpICYmIHNlc3Npb24gJiYg
c2Vzc2lvbi0+aGFzSURCRGF0YWJhc2VQYXRoKCkpIHsKLSAgICAgICAgc2Vzc2lvbi0+ZW5zdXJl
V2ViSURCU2VydmVyKCkuZ2V0T3JpZ2lucyhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0
aGlzIH0sIHNlc3Npb25JRCwgY2FsbGJhY2tBZ2dyZWdhdG9yLCBkb21haW5zVG9EZWxldGVBbGxO
b25Db29raWVXZWJzaXRlRGF0YUZvcl0oYXV0byYmIG9yaWdpbnMpIHsKLSAgICAgICAgICAgIGF1
dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOwotICAgICAgICAgICAgaWYg
KCFzZXNzaW9uIHx8ICFzZXNzaW9uLT53ZWJJREJTZXJ2ZXIoKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0KLSAgICAgICAgICAgIGF1dG8gb3JpZ2luc1RvRGVsZXRlID0gZmlsdGVyRm9yUmVn
aXN0cmFibGVEb21haW5zKG9yaWdpbnMsIGRvbWFpbnNUb0RlbGV0ZUFsbE5vbkNvb2tpZVdlYnNp
dGVEYXRhRm9yLCBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fZG9tYWlucyk7Ci0gICAgICAgICAgICBz
ZXNzaW9uLT53ZWJJREJTZXJ2ZXIoKS0+Y2xvc2VBbmREZWxldGVEYXRhYmFzZXNGb3JPcmlnaW5z
KG9yaWdpbnNUb0RlbGV0ZSwgW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKLSAgICAgICAgfSk7
Ci0gICAgfQogICAgIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBib29sIGNsZWFy
U2VydmljZVdvcmtlcnMgPSB3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlw
ZTo6RE9NQ2FjaGUpIHx8IHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBl
OjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucyk7CkBAIC0xOTU4LDEzICsxOTMwLDYgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6cmVnaXN0cmFibGVEb21haW5zV2l0aFdlYnNpdGVEYXRhKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwKICAgICAgICAgfSk7CiAgICAgfQogICAgIAotICAgIGlmICh3
ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJh
c2VzKSAmJiBzZXNzaW9uICYmIHNlc3Npb24tPmhhc0lEQkRhdGFiYXNlUGF0aCgpKSB7Ci0gICAg
ICAgIHNlc3Npb24tPmVuc3VyZVdlYklEQlNlcnZlcigpLmdldE9yaWdpbnMoW2NhbGxiYWNrQWdn
cmVnYXRvcl0oYXV0byYmIG9yaWdpbnMpIHsKLSAgICAgICAgICAgIHdoaWxlICghb3JpZ2lucy5p
c0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX3dlYnNpdGVE
YXRhLmVudHJpZXMuYXBwZW5kKHsgb3JpZ2lucy50YWtlQW55KCksIFdlYnNpdGVEYXRhVHlwZTo6
SW5kZXhlZERCRGF0YWJhc2VzLCAwIH0pOwotICAgICAgICB9KTsKLSAgICB9Ci0gICAgCiAjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5z
KFdlYnNpdGVEYXRhVHlwZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMpICYmIHNlc3Npb24g
JiYgc2Vzc2lvbi0+aGFzU2VydmljZVdvcmtlckRhdGFiYXNlUGF0aCgpKSB7CiAgICAgICAgIHNl
c3Npb24tPmVuc3VyZVNXU2VydmVyKCkuZ2V0T3JpZ2luc1dpdGhSZWdpc3RyYXRpb25zKFtjYWxs
YmFja0FnZ3JlZ2F0b3JdKGNvbnN0IEhhc2hTZXQ8U2VjdXJpdHlPcmlnaW5EYXRhPiYgc2VjdXJp
dHlPcmlnaW5zKSBtdXRhYmxlIHsKQEAgLTIxMjksNDMgKzIwOTQsMTAgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6cHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseUZvclRlc3RpbmdTeW5jKENvbXBs
ZXRpb25IYW5kbGUKICAgICBwcmVwYXJlVG9TdXNwZW5kKHRydWUsIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6c3VzcGVuZElEQlNlcnZlcnMo
Ym9vbCBpc1N1c3BlbnNpb25JbW1pbmVudCkKLXsKLSAgICBtX3Nob3VsZFN1c3BlbmRJREJTZXJ2
ZXJzID0gdHJ1ZTsKLSAgICArK21fc3VzcGVuc2lvbklkZW50aWZpZXI7Ci0KLSAgICBib29sIGFs
bFN1c3BlbmRlZCA9IHRydWU7Ci0gICAgYXV0byBjb25kaXRpb24gPSBpc1N1c3BlbnNpb25JbW1p
bmVudCA/IFdlYklEQlNlcnZlcjo6U3VzcGVuc2lvbkNvbmRpdGlvbjo6QWx3YXlzIDogV2ViSURC
U2VydmVyOjpTdXNwZW5zaW9uQ29uZGl0aW9uOjpJZklkbGU7Ci0gICAgZm9yRWFjaE5ldHdvcmtT
ZXNzaW9uKFsmXShhdXRvJiBzZXNzaW9uKSB7Ci0gICAgICAgIGlmIChhdXRvKiBzZXJ2ZXIgPSBz
ZXNzaW9uLndlYklEQlNlcnZlcigpKQotICAgICAgICAgICAgYWxsU3VzcGVuZGVkICY9IHNlcnZl
ci0+c3VzcGVuZChjb25kaXRpb24pOwotICAgIH0pOwotCi0gICAgaWYgKGFsbFN1c3BlbmRlZCkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoQWZ0ZXIoNV9z
LCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgc3VzcGVuc2lvbklkZW50aWZp
ZXIgPSBtX3N1c3BlbnNpb25JZGVudGlmaWVyXSB7Ci0gICAgICAgIGlmICghd2Vha1RoaXMpCi0g
ICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKCFtX3Nob3VsZFN1c3BlbmRJREJTZXJ2
ZXJzIHx8IHN1c3BlbnNpb25JZGVudGlmaWVyICE9IG1fc3VzcGVuc2lvbklkZW50aWZpZXIpCi0g
ICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgZm9yRWFjaE5ldHdvcmtTZXNzaW9uKFtdKGF1
dG8mIHNlc3Npb24pIHsKLSAgICAgICAgICAgIGlmIChhdXRvKiBzZXJ2ZXIgPSBzZXNzaW9uLndl
YklEQlNlcnZlcigpKQotICAgICAgICAgICAgICAgIHNlcnZlci0+c3VzcGVuZChXZWJJREJTZXJ2
ZXI6OlN1c3BlbnNpb25Db25kaXRpb246OkFsd2F5cyk7Ci0gICAgICAgIH0pOwotICAgIH0pOwot
fQotCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5kKGJvb2wgaXNTdXNwZW5z
aW9uSW1taW5lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gTmV0d29ya1By
b2Nlc3M6OnByZXBhcmVUb1N1c3BlbmQoKSwgaXNTdXNwZW5zaW9uSW1taW5lbnQ9JWQiLCB0aGlz
LCBpc1N1c3BlbnNpb25JbW1pbmVudCk7CiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAg
IHN1c3BlbmRJREJTZXJ2ZXJzKGlzU3VzcGVuc2lvbkltbWluZW50KTsKLSNlbmRpZgotCiAgICAg
bG93TWVtb3J5SGFuZGxlcihDcml0aWNhbDo6WWVzKTsKIAogICAgIFJlZlB0cjxDYWxsYmFja0Fn
Z3JlZ2F0b3I+IGNhbGxiYWNrQWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRl
KFt0aGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgp
IG11dGFibGUgewpAQCAtMjIyMywxOCArMjE1NSwxMCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpy
ZXN1bWUoKQogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICAgICAgaWYgKGF1dG8qIHN3
U2VydmVyID0gc2Vzc2lvbi5zd1NlcnZlcigpKQogICAgICAgICAgICAgc3dTZXJ2ZXItPmVuZFN1
c3BlbnNpb24oKTsKLSNlbmRpZgotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgICAgIGlm
IChhdXRvKiBzZXJ2ZXIgPSBzZXNzaW9uLndlYklEQlNlcnZlcigpKQotICAgICAgICAgICAgc2Vy
dmVyLT5yZXN1bWUoKTsKICNlbmRpZgogICAgICAgICBpZiAoYXV0byogbWFuYWdlciA9IHNlc3Np
b24uc3RvcmFnZU1hbmFnZXIoKSkKICAgICAgICAgICAgIG1hbmFnZXItPnJlc3VtZSgpOwogICAg
IH0pOwotCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBtX3Nob3VsZFN1c3BlbmRJREJT
ZXJ2ZXJzID0gZmFsc2U7Ci0jZW5kaWYKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlZmV0
Y2hETlMoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKQEAgLTIyODEsMTIgKzIyMDUsMTUgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6c3luY0xvY2FsU3RvcmFnZShDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmQKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVzZXRRdW90YShQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXNzaW9uU3RvcmFnZVF1
b3RhTWFuYWdlcnNMb2NrIH07Ci0gICAgaWYgKGF1dG8qIHNlc3Npb25TdG9yYWdlUXVvdGFNYW5h
Z2VyID0gbV9zZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlcnMuZ2V0KHNlc3Npb25JRCkpIHsKLSAg
ICAgICAgZm9yIChhdXRvIHN0b3JhZ2VRdW90YU1hbmFnZXIgOiBzZXNzaW9uU3RvcmFnZVF1b3Rh
TWFuYWdlci0+ZXhpc3RpbmdTdG9yYWdlUXVvdGFNYW5hZ2VycygpKQotICAgICAgICAgICAgc3Rv
cmFnZVF1b3RhTWFuYWdlci0+cmVzZXRRdW90YUZvclRlc3RpbmcoKTsKLSAgICB9Ci0gICAgY29t
cGxldGlvbkhhbmRsZXIoKTsKKyAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vz
c2lvbklEKTsKKyAgICBpZiAoIXNlc3Npb24pCisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFu
ZGxlcigpOworCisgICAgYXV0byogc3RvcmFnZU1hbmFnZXIgPSBzZXNzaW9uLT5zdG9yYWdlTWFu
YWdlcigpOworICAgIGlmICghc3RvcmFnZU1hbmFnZXIpCisgICAgICAgIHJldHVybiBjb21wbGV0
aW9uSGFuZGxlcigpOworCisgICAgc3RvcmFnZU1hbmFnZXItPnJlc2V0UXVvdGFGb3JUZXN0aW5n
KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6
Y2xlYXJTdG9yYWdlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMjI5OCw2ICsyMjI1LDE2IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OmNsZWFyU3RvcmFnZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENv
bXBsZXRpb25IYW5kbGVyPHZvCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKK3Zv
aWQgTmV0d29ya1Byb2Nlc3M6OmRpZEluY3JlYXNlUXVvdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbiwgUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IG5ld1F1b3RhKQorewor
ICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOworICAgIGlmICgh
c2Vzc2lvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGF1dG8qIG1hbmFnZXIgPSBzZXNz
aW9uLT5zdG9yYWdlTWFuYWdlcigpKQorICAgICAgICBtYW5hZ2VyLT5kaWRJbmNyZWFzZVF1b3Rh
KG9yaWdpbiwgaWRlbnRpZmllciwgbmV3UXVvdGEpOworfQorCiB2b2lkIE5ldHdvcmtQcm9jZXNz
OjpyZW5hbWVPcmlnaW5JbldlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29u
c3QgVVJMJiBvbGROYW1lLCBjb25zdCBVUkwmIG5ld05hbWUsIE9wdGlvblNldDxXZWJzaXRlRGF0
YVR5cGU+IGRhdGFUeXBlcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIGF1dG8gYWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3Jl
YXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKQEAgLTIzMTAsOSArMjI0Nyw2IEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OnJlbmFtZU9yaWdpbkluV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBjb25zdCBVCiAgICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9u
KHNlc3Npb25JRCk7CiAgICAgaWYgKGF1dG8qIG1hbmFnZXIgPSBzZXNzaW9uID8gc2Vzc2lvbi0+
c3RvcmFnZU1hbmFnZXIoKSA6IG51bGxwdHIpCiAgICAgICAgIG1hbmFnZXItPm1vdmVEYXRhKG9s
ZE9yaWdpbiwgbmV3T3JpZ2luLCBbYWdncmVnYXRvcl0geyB9KTsKLQotICAgIGlmIChkYXRhVHlw
ZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpICYmIHNlc3Np
b24gJiYgc2Vzc2lvbi0+aGFzSURCRGF0YWJhc2VQYXRoKCkpCi0gICAgICAgIHNlc3Npb24tPmVu
c3VyZVdlYklEQlNlcnZlcigpLnJlbmFtZU9yaWdpbihvbGRPcmlnaW4sIG5ld09yaWdpbiwgW2Fn
Z3JlZ2F0b3JdIHsgfSk7CiB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCkBAIC0yMzcy
LDcgKzIzMDYsOCBAQCBSZWZQdHI8U3RvcmFnZVF1b3RhTWFuYWdlcj4gTmV0d29ya1Byb2Nlc3M6
OnN0b3JhZ2VRdW90YU1hbmFnZXIoUEFMOjpTZXNzaW9uSUQgcwogICAgIFN0b3JhZ2VRdW90YU1h
bmFnZXI6OlVzYWdlR2V0dGVyIHVzYWdlR2V0dGVyID0gW2NhY2hlUm9vdFBhdGggPSBzZXNzaW9u
U3RvcmFnZVF1b3RhTWFuYWdlci0+Y2FjaGVSb290UGF0aCgpLmlzb2xhdGVkQ29weSgpLCBpZGJS
b290UGF0aCA9IGlkYlJvb3RQYXRoLmlzb2xhdGVkQ29weSgpLCBvcmlnaW4gPSBvcmlnaW4uaXNv
bGF0ZWRDb3B5KCldKCkgewogICAgICAgICBBU1NFUlQoIWlzTWFpblJ1bkxvb3AoKSk7CiAKLSAg
ICAgICAgcmV0dXJuIENhY2hlU3RvcmFnZTo6RW5naW5lOjpkaXNrVXNhZ2UoY2FjaGVSb290UGF0
aCwgb3JpZ2luKSArIElEQlNlcnZlcjo6SURCU2VydmVyOjpkaXNrVXNhZ2UoaWRiUm9vdFBhdGgs
IG9yaWdpbik7CisgICAgICAgIGF1dG8gY2FjaGVTdG9yYWdlUGF0aCA9IENhY2hlU3RvcmFnZTo6
RW5naW5lOjpzdG9yYWdlUGF0aChjYWNoZVJvb3RQYXRoLCBvcmlnaW4pOworICAgICAgICByZXR1
cm4gQ2FjaGVTdG9yYWdlOjpFbmdpbmU6OmRpc2tVc2FnZShjYWNoZVN0b3JhZ2VQYXRoKSArIElE
QlNlcnZlcjo6SURCU2VydmVyOjpkaXNrVXNhZ2UoaWRiUm9vdFBhdGgsIG9yaWdpbik7CiAgICAg
fTsKICAgICBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpRdW90YUluY3JlYXNlUmVxdWVzdGVyIHF1b3Rh
SW5jcmVhc2VSZXF1ZXN0ZXIgPSBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwg
c2Vzc2lvbklELCBvcmlnaW5dICh1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IGN1cnJl
bnRTcGFjZSwgdWludDY0X3QgcmVxdWVzdGVkSW5jcmVhc2UsIGF1dG8mJiBjYWxsYmFjaykgewog
ICAgICAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgpKTsKQEAgLTI1ODYsOCArMjUyMSw2IEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OnJlbW92ZUtlcHRBbGl2ZUxvYWQoTmV0d29ya1Jlc291cmNlTG9h
ZGVyJiBsb2FkZXIpCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjb25uZWN0aW9uVG9XZWJQcm9jZXNz
Q2xvc2VkKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklEKQogewogICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklE
KSkgewotICAgICAgICBpZiAoYXV0byogc2VydmVyID0gc2Vzc2lvbi0+d2ViSURCU2VydmVyKCkp
Ci0gICAgICAgICAgICBzZXJ2ZXItPnJlbW92ZUNvbm5lY3Rpb24oY29ubmVjdGlvbik7CiAgICAg
ICAgIGlmIChhdXRvKiBtYW5hZ2VyID0gc2Vzc2lvbi0+c3RvcmFnZU1hbmFnZXIoKSkKICAgICAg
ICAgICAgIG1hbmFnZXItPnN0b3BSZWNlaXZpbmdNZXNzYWdlRnJvbUNvbm5lY3Rpb24oY29ubmVj
dGlvbik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5oCmluZGV4IDc4Nzc5MjdhMTdjNTU5NmViMDNiZDRhY2Y0ZDU4ZTQxOGFjOGJhMjMuLjBm
ODUzM2VkMTNkZDI2Mjc3YTZkZDUyYWI2ZGFiZTIwYzNlMDg4MDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTMzLDYgKzMzLDcgQEAKICNp
bmNsdWRlICJMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuaCIKICNpbmNsdWRlICJOZXR3b3Jr
Q29udGVudFJ1bGVMaXN0TWFuYWdlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRJ
ZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLmgi
CiAjaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRl
ICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5SWRlbnRpZmllci5o
IgpAQCAtMjg4LDEyICsyODksMTEgQEAgcHVibGljOgogICAgIE5ldHdvcmtDb250ZW50UnVsZUxp
c3RNYW5hZ2VyJiBuZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcigpIHsgcmV0dXJuIG1fbmV0
d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXI7IH0KICNlbmRpZgogCi0gICAgYm9vbCBzaG91bGRT
dXNwZW5kSURCU2VydmVycygpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkU3VzcGVuZElEQlNlcnZl
cnM7IH0KLQogICAgIHZvaWQgc3luY0xvY2FsU3RvcmFnZShDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwogCiAgICAgdm9pZCByZXNldFF1b3RhKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgY2xlYXJTdG9yYWdlKFBBTDo6U2Vzc2lvbklE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgZGlkSW5jcmVhc2VRdW90
YShQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgUXVvdGFJbmNy
ZWFzZVJlcXVlc3RJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBuZXdRdW90YSk7
CiAgICAgdm9pZCByZW5hbWVPcmlnaW5JbldlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBVUkwmLCBjb25zdCBVUkwmLCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC00NzMs
OCArNDczLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lQXNOb0FjY2Vz
cyhjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lQXNDT1JT
RW5hYmxlZChjb25zdCBTdHJpbmcmKSBjb25zdDsKIAotICAgIHZvaWQgc3VzcGVuZElEQlNlcnZl
cnMoYm9vbCBpc1N1c3BlbnNpb25JbW1pbmVudCk7Ci0KICNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIHZvaWQgc2V0SXNIb2xkaW5nTG9ja2VkRmlsZXMoYm9vbCk7CiAjZW5kaWYKQEAgLTQ4
Miw2ICs0ODAsNyBAQCBwcml2YXRlOgogICAgIGNsYXNzIFNlc3Npb25TdG9yYWdlUXVvdGFNYW5h
Z2VyIHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgorICAg
ICAgICBTZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlcigpID0gZGVsZXRlOwogICAgICAgICBTZXNz
aW9uU3RvcmFnZVF1b3RhTWFuYWdlcihjb25zdCBTdHJpbmcmIGNhY2hlUm9vdFBhdGgsIHVpbnQ2
NF90IGRlZmF1bHRRdW90YSwgdWludDY0X3QgZGVmYXVsdFRoaXJkUGFydHlRdW90YSkKICAgICAg
ICAgICAgIDogbV9jYWNoZVJvb3RQYXRoKGNhY2hlUm9vdFBhdGgpCiAgICAgICAgICAgICAsIG1f
ZGVmYXVsdFF1b3RhKGRlZmF1bHRRdW90YSkKQEAgLTUwOCw4ICs1MDcsOCBAQCBwcml2YXRlOgog
ICAgIHByaXZhdGU6CiAgICAgICAgIFN0cmluZyBtX2NhY2hlUm9vdFBhdGg7CiAgICAgICAgIFN0
cmluZyBtX2lkYlJvb3RQYXRoOwotICAgICAgICB1aW50NjRfdCBtX2RlZmF1bHRRdW90YSB7IFdl
YkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6OmRlZmF1bHRRdW90YSgpIH07Ci0gICAgICAgIHVp
bnQ2NF90IG1fZGVmYXVsdFRoaXJkUGFydHlRdW90YSB7IFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1h
bmFnZXI6OmRlZmF1bHRUaGlyZFBhcnR5UXVvdGEoKSB9OworICAgICAgICB1aW50NjRfdCBtX2Rl
ZmF1bHRRdW90YTsKKyAgICAgICAgdWludDY0X3QgbV9kZWZhdWx0VGhpcmRQYXJ0eVF1b3RhOwog
ICAgICAgICBIYXNoTWFwPFdlYkNvcmU6OkNsaWVudE9yaWdpbiwgUmVmUHRyPFdlYkNvcmU6OlN0
b3JhZ2VRdW90YU1hbmFnZXI+PiBtX3N0b3JhZ2VRdW90YU1hbmFnZXJzOwogICAgIH07CiAgICAg
dm9pZCBhZGRTZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlcihQQUw6OlNlc3Npb25JRCwgdWludDY0
X3QgZGVmYXVsdFF1b3RhLCB1aW50NjRfdCBkZWZhdWx0VGhpcmRQYXJ0eVF1b3RhLCBjb25zdCBT
dHJpbmcmIGNhY2hlUm9vdFBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYpOwpAQCAtNTQ5
LDkgKzU0OCw2IEBAIHByaXZhdGU6CiAgICAgV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyIG1fd2Vi
U1FMaXRlRGF0YWJhc2VUcmFja2VyOwogICAgIFJlZlB0cjxQcm9jZXNzQXNzZXJ0aW9uPiBtX2hv
bGRpbmdMb2NrZWRGaWxlQXNzZXJ0aW9uOwogI2VuZGlmCi0KLSAgICBib29sIG1fc2hvdWxkU3Vz
cGVuZElEQlNlcnZlcnMgeyBmYWxzZSB9OwotICAgIHVpbnQ2NF90IG1fc3VzcGVuc2lvbklkZW50
aWZpZXIgeyAwIH07CiAgICAgCiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAgICAgUmVmUHRyPFJUQ0Rh
dGFDaGFubmVsUmVtb3RlTWFuYWdlclByb3h5PiBtX3J0Y0RhdGFDaGFubmVsUHJveHk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNz
YWdlcy5pbgppbmRleCA2MzdlMTU5ZjE4NjM5M2JlYzVjYzA1YWI1YmQ1NzgwYmU4YzZmY2U0Li42
MzFlMmI2MDczYzAxOTIxMzA2OGMyMDk2YjgyN2IyNzlkYmM3ZGUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4K
QEAgLTE3OSw2ICsxNzksNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNl
aXZlciB7CiAKICAgICBSZXNldFF1b3RhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKCkg
QXN5bmMKICAgICBDbGVhclN0b3JhZ2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBB
c3luYworICAgIERpZEluY3JlYXNlUXVvdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdHJ1
Y3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbiwgV2ViS2l0OjpRdW90YUluY3JlYXNlUmVx
dWVzdElkZW50aWZpZXIgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbmV3UXVv
dGEpCiAgICAgCiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIEhhc0FwcEJvdW5k
U2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+IChib29sIGhhc0FwcEJvdW5kU2Vz
c2lvbikgQXN5bmMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vz
c2lvbi5jcHAKaW5kZXggZTJiMjRkODMyMmI2ZWMxYzM3NzAxZGNhZDQ5NzUzNGNlZjIzMWEyNi4u
OWM0YmUyYjYxODk0NzRjY2YyNGJlNzBiMTEyNzI5MThmYzAyYjNlMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKQEAgLTIwNCw4ICsyMDQs
NiBAQCB2b2lkIE5ldHdvcmtTZXNzaW9uOjppbnZhbGlkYXRlQW5kQ2FuY2VsKCkKICAgICBpZiAo
bV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKQogICAgICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MtPmludmFsaWRhdGVBbmRDYW5jZWwoKTsKICNlbmRpZgotICAgIGlmIChhdXRvIHNlcnZlciA9
IHN0ZDo6ZXhjaGFuZ2UobV93ZWJJREJTZXJ2ZXIsIG51bGxwdHIpKQotICAgICAgICBzZXJ2ZXIt
PmNsb3NlKCk7CiAgICAgaWYgKGF1dG8gbWFuYWdlciA9IHN0ZDo6ZXhjaGFuZ2UobV9zdG9yYWdl
TWFuYWdlciwgbnVsbHB0cikpCiAgICAgICAgIG1hbmFnZXItPmNsb3NlKCk7CiAgICAgbV9jYWNo
ZUVuZ2luZSA9IG51bGxwdHI7CkBAIC02NTMsNTUgKzY1MSwxOCBAQCBib29sIE5ldHdvcmtTZXNz
aW9uOjpoYXNTZXJ2aWNlV29ya2VyRGF0YWJhc2VQYXRoKCkgY29uc3QKIAogI2VuZGlmIC8vIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKIAotV2ViSURCU2VydmVyJiBOZXR3b3JrU2Vzc2lvbjo6ZW5z
dXJlV2ViSURCU2VydmVyKCkKLXsKLSAgICBpZiAoIW1fd2ViSURCU2VydmVyKSB7Ci0gICAgICAg
IFN0cmluZyBwYXRoOwotICAgICAgICBpZiAoIXNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkpIHsK
LSAgICAgICAgICAgIEFTU0VSVCghbV9pZGJEYXRhYmFzZVBhdGguaXNOdWxsKCkpOwotICAgICAg
ICAgICAgcGF0aCA9IG1faWRiRGF0YWJhc2VQYXRoOwotICAgICAgICB9Ci0KLSAgICAgICAgYXV0
byBzcGFjZVJlcXVlc3RlciA9IFtuZXR3b3JrUHJvY2VzcyA9IFJlZiB7IG5ldHdvcmtQcm9jZXNz
KCkgfSwgc2Vzc2lvbklEID0gc2Vzc2lvbklEKCldKGNvbnN0IGF1dG8mIG9yaWdpbiwgdWludDY0
X3Qgc3BhY2VSZXF1ZXN0ZWQpIHsKLSAgICAgICAgICAgIHJldHVybiBuZXR3b3JrUHJvY2Vzcy0+
c3RvcmFnZVF1b3RhTWFuYWdlcihzZXNzaW9uSUQsIG9yaWdpbiktPnJlcXVlc3RTcGFjZU9uQmFj
a2dyb3VuZFRocmVhZChzcGFjZVJlcXVlc3RlZCk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgbV93
ZWJJREJTZXJ2ZXIgPSBXZWJJREJTZXJ2ZXI6OmNyZWF0ZShzZXNzaW9uSUQoKSwgcGF0aCwgV1RG
TW92ZShzcGFjZVJlcXVlc3RlcikpOwotICAgICAgICBpZiAobmV0d29ya1Byb2Nlc3MoKS5zaG91
bGRTdXNwZW5kSURCU2VydmVycygpKQotICAgICAgICAgICAgbV93ZWJJREJTZXJ2ZXItPnN1c3Bl
bmQoV2ViSURCU2VydmVyOjpTdXNwZW5zaW9uQ29uZGl0aW9uOjpBbHdheXMpOwotICAgIH0KLSAg
ICByZXR1cm4gKm1fd2ViSURCU2VydmVyOwotfQotCi12b2lkIE5ldHdvcmtTZXNzaW9uOjpjbG9z
ZUlEQlNlcnZlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Ci17Ci0gICAgaWYgKCFtX3dlYklEQlNlcnZlcikKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25I
YW5kbGVyKCk7Ci0KLSAgICBzdGQ6OmV4Y2hhbmdlKG1fd2ViSURCU2VydmVyLCBudWxscHRyKS0+
Y2xvc2UoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotfQotCi12b2lkIE5ldHdvcmtTZXNz
aW9uOjphZGRJbmRleGVkRGF0YWJhc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYgaW5kZXhlZERhdGFi
YXNlRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIGhhbmRsZSkKLXsKLSAgICAv
LyAqKioqKioqKioKLSAgICAvLyBJTVBPUlRBTlQ6IERvIG5vdCBjaGFuZ2UgdGhlIGRpcmVjdG9y
eSBzdHJ1Y3R1cmUgZm9yIGluZGV4ZWQgZGF0YWJhc2VzIG9uIGRpc2sgd2l0aG91dCBmaXJzdCBj
b25zdWx0aW5nIGEgcmV2aWV3ZXIgZnJvbSBBcHBsZSAoPHJkYXI6Ly9wcm9ibGVtLzE3NDU0NzEy
PikKLSAgICAvLyAqKioqKioqKioKLSAgICBhdXRvIGlzTmV3ID0gbV9pZGJEYXRhYmFzZVBhdGgu
aXNOdWxsKCk7Ci0gICAgbV9pZGJEYXRhYmFzZVBhdGggPSBpbmRleGVkRGF0YWJhc2VEaXJlY3Rv
cnk7Ci0gICAgaWYgKGlzTmV3KSB7Ci0gICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQ
ZXJtYW5lbnRseShoYW5kbGUpOwotICAgICAgICBuZXR3b3JrUHJvY2VzcygpLnNldFNlc3Npb25T
dG9yYWdlUXVvdGFNYW5hZ2VySURCUm9vdFBhdGgoc2Vzc2lvbklEKCksIGluZGV4ZWREYXRhYmFz
ZURpcmVjdG9yeSk7Ci0gICAgfQotfQotCi12b2lkIE5ldHdvcmtTZXNzaW9uOjphZGRTdG9yYWdl
TWFuYWdlclNlc3Npb24oY29uc3QgU3RyaW5nJiBnZW5lcmFsU3RvcmFnZVBhdGgsIFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSYgZ2VuZXJhbFN0b3JhZ2VQYXRoSGFuZGxlLCBjb25zdCBTdHJpbmcm
IGxvY2FsU3RvcmFnZVBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgbG9jYWxTdG9yYWdl
UGF0aEhhbmRsZSkKK3ZvaWQgTmV0d29ya1Nlc3Npb246OmFkZFN0b3JhZ2VNYW5hZ2VyU2Vzc2lv
bihjb25zdCBTdHJpbmcmIGdlbmVyYWxTdG9yYWdlUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlJiBnZW5lcmFsU3RvcmFnZVBhdGhIYW5kbGUsIGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdl
UGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBsb2NhbFN0b3JhZ2VQYXRoSGFuZGxlLCBj
b25zdCBTdHJpbmcmIGlkYlN0b3JhZ2VQYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIGlk
YlN0b3JhZ2VQYXRoSGFuZGxlLCBjb25zdCBTdHJpbmcmIGNhY2hlU3RvcmFnZVBhdGgsIHVpbnQ2
NF90IGRlZmF1bHRPcmlnaW5RdW90YSwgdWludDY0X3QgZGVmYXVsdFRoaXJkUGFydHlRdW90YSkK
IHsKICAgICBpZiAobV9zdG9yYWdlTWFuYWdlcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgU2Fu
ZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KGdlbmVyYWxTdG9yYWdlUGF0aEhhbmRs
ZSk7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KGxvY2FsU3RvcmFn
ZVBhdGhIYW5kbGUpOwotICAgIG1fc3RvcmFnZU1hbmFnZXIgPSBOZXR3b3JrU3RvcmFnZU1hbmFn
ZXI6OmNyZWF0ZShzZXNzaW9uSUQoKSwgZ2VuZXJhbFN0b3JhZ2VQYXRoLCBsb2NhbFN0b3JhZ2VQ
YXRoKTsKKyAgICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkoaWRiU3RvcmFn
ZVBhdGhIYW5kbGUpOworICAgIElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgY29ubmVjdGlvbklE
OworICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gbmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpKQorICAgICAgICBjb25uZWN0aW9uSUQgPSBjb25uZWN0aW9uLT51bmlx
dWVJRCgpOworICAgIG1fc3RvcmFnZU1hbmFnZXIgPSBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNy
ZWF0ZShzZXNzaW9uSUQoKSwgY29ubmVjdGlvbklELCBnZW5lcmFsU3RvcmFnZVBhdGgsIGxvY2Fs
U3RvcmFnZVBhdGgsIGlkYlN0b3JhZ2VQYXRoLCBjYWNoZVN0b3JhZ2VQYXRoLCBkZWZhdWx0T3Jp
Z2luUXVvdGEsIGRlZmF1bHRUaGlyZFBhcnR5UXVvdGEpOwogfQogCiB2b2lkIE5ldHdvcmtTZXNz
aW9uOjplbnN1cmVDYWNoZUVuZ2luZShGdW5jdGlvbjx2b2lkKENhY2hlU3RvcmFnZTo6RW5naW5l
Jik+JiYgY2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtTZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtT
ZXNzaW9uLmgKaW5kZXggMTkzMDdjZjQwYmUzYjJmMjYwNTdkMDE2Yzc2NmVkY2U0OThjOTU0Mi4u
YmFhMTIyNDVjZjIyNjRkOTIxNTdkZGU0NzFkMmU0YjEwMmJjMjk3ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaApAQCAtMjEwLDE0ICsyMTAsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBhZGRTZXJ2aWNlV29ya2VyU2Vzc2lvbihib29sIHByb2Nlc3NU
ZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCwgU3RyaW5nJiYgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bkRpcmVjdG9yeSwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJik7CiAjZW5kaWYKIAot
ICAgIFdlYklEQlNlcnZlciogd2ViSURCU2VydmVyKCkgeyByZXR1cm4gbV93ZWJJREJTZXJ2ZXIu
Z2V0KCk7IH0KLSAgICBXZWJJREJTZXJ2ZXImIGVuc3VyZVdlYklEQlNlcnZlcigpOwotICAgIHZv
aWQgY2xvc2VJREJTZXJ2ZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lk
IGFkZEluZGV4ZWREYXRhYmFzZVNlc3Npb24oY29uc3QgU3RyaW5nJiBpbmRleGVkRGF0YWJhc2VE
aXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYpOwotICAgIGJvb2wgaGFzSURCRGF0
YWJhc2VQYXRoKCkgY29uc3QgeyByZXR1cm4gIW1faWRiRGF0YWJhc2VQYXRoLmlzRW1wdHkoKTsg
fQotCiAgICAgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyKiBzdG9yYWdlTWFuYWdlcigpIHsgcmV0dXJu
IG1fc3RvcmFnZU1hbmFnZXIuZ2V0KCk7IH0KLSAgICB2b2lkIGFkZFN0b3JhZ2VNYW5hZ2VyU2Vz
c2lvbihjb25zdCBTdHJpbmcmIGdlbmVyYWxTdG9yYWdlUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlJiBnZW5lcmFsU3RvcmFnZVBhdGhIYW5kbGUsIGNvbnN0IFN0cmluZyYgbG9jYWxTdG9y
YWdlUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBsb2NhbFN0b3JhZ2VQYXRoSGFuZGxl
KTsKKyAgICB2b2lkIGFkZFN0b3JhZ2VNYW5hZ2VyU2Vzc2lvbihjb25zdCBTdHJpbmcmIGdlbmVy
YWxTdG9yYWdlUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBnZW5lcmFsU3RvcmFnZVBh
dGhIYW5kbGUsIGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlUGF0aCwgU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlJiBsb2NhbFN0b3JhZ2VQYXRoSGFuZGxlLCBjb25zdCBTdHJpbmcmIGlkYlN0b3Jh
Z2VQYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIGlkYlN0b3JhZ2VQYXRoSGFuZGxlLCBj
b25zdCBTdHJpbmcmIGNhY2hlU3RvcmFnZVBhdGgsIHVpbnQ2NF90IGRlZmF1bHRPcmlnaW5RdW90
YSwgdWludDY0X3QgZGVmYXVsdFRoaXJkUGFydHlRdW90YSk7CiAKICAgICBDYWNoZVN0b3JhZ2U6
OkVuZ2luZSogY2FjaGVFbmdpbmUoKSB7IHJldHVybiBtX2NhY2hlRW5naW5lLmdldCgpOyB9CiAg
ICAgdm9pZCBlbnN1cmVDYWNoZUVuZ2luZShGdW5jdGlvbjx2b2lkKENhY2hlU3RvcmFnZTo6RW5n
aW5lJik+JiYpOwpAQCAtMzE5LDkgKzMxMyw2IEBAIHByb3RlY3RlZDoKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6U1dTZXJ2ZXI+IG1fc3dTZXJ2ZXI7CiAjZW5kaWYKIAotICAgIFN0cmlu
ZyBtX2lkYkRhdGFiYXNlUGF0aDsKLSAgICBSZWZQdHI8V2ViSURCU2VydmVyPiBtX3dlYklEQlNl
cnZlcjsKLQogICAgIFJlZlB0cjxOZXR3b3JrU3RvcmFnZU1hbmFnZXI+IG1fc3RvcmFnZU1hbmFn
ZXI7CiAgICAgUmVmUHRyPENhY2hlU3RvcmFnZTo6RW5naW5lPiBtX2NhY2hlRW5naW5lOwogICAg
IFZlY3RvcjxGdW5jdGlvbjx2b2lkKENhY2hlU3RvcmFnZTo6RW5naW5lJik+PiBtX2NhY2hlU3Rv
cmFnZVBhcmFtZXRlcnNDYWxsYmFja3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKaW5kZXggYzIwMGNlOGI1
ZWI0YzNhMDM2NTdlODIyNjg5OTAyYjQ2ZGJmOGFiMC4uYzUxYzIyNDkzMTc4MjQxOWU3MTNlYjYy
NThmMGNmOWZhZjE5OWI4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcApAQCAtMzEsNiArMzEsNyBAQAog
I2luY2x1ZGUgIk5ldHdvcmtDYWNoZUlPQ2hhbm5lbC5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9j
ZXNzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Nlc3Npb24uaCIKKyNpbmNsdWRlICJOZXR3b3JrU3Rv
cmFnZU1hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVR5cGUuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL0NhY2hlUXVlcnlPcHRpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXRyaWV2ZVJl
Y29yZHNPcHRpb25zLmg+CkBAIC0yMDMsNDAgKzIwNCw1MiBAQCBzdGF0aWMgdWludDY0X3QgZ2V0
RGlyZWN0b3J5U2l6ZShjb25zdCBTdHJpbmcmIGRpcmVjdG9yeVBhdGgpCiAgICAgcmV0dXJuIGRp
cmVjdG9yeVNpemU7CiB9CiAKLXVpbnQ2NF90IEVuZ2luZTo6ZGlza1VzYWdlKGNvbnN0IFN0cmlu
ZyYgcm9vdFBhdGgsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luKQorU3RyaW5n
IEVuZ2luZTo6c3RvcmFnZVBhdGgoY29uc3QgU3RyaW5nJiByb290RGlyZWN0b3J5LCBjb25zdCBX
ZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbikKIHsKICAgICBBU1NFUlQoIWlzTWFpblJ1bkxv
b3AoKSk7CisgICAgCisgICAgaWYgKHJvb3REaXJlY3RvcnkuaXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAotICAgIGlmIChyb290UGF0aC5pc0VtcHR5KCkpCi0gICAg
ICAgIHJldHVybiAwOwotCi0gICAgU3RyaW5nIHNhbHRQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KHJvb3RQYXRoLCAic2FsdCJfcyk7CisgICAgU3RyaW5nIHNhbHRQ
YXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJvb3REaXJlY3Rvcnks
ICJzYWx0Il9zKTsKICAgICBhdXRvIHNhbHQgPSBGaWxlU3lzdGVtOjpyZWFkT3JNYWtlU2FsdChz
YWx0UGF0aCk7CiAgICAgaWYgKCFzYWx0KQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0
dXJuIGVtcHR5U3RyaW5nKCk7CiAKICAgICBLZXkga2V5KG9yaWdpbi50b3BPcmlnaW4udG9TdHJp
bmcoKSwgb3JpZ2luLmNsaWVudE9yaWdpbi50b1N0cmluZygpLCB7IH0sIHsgfSwgKnNhbHQpOwot
ICAgIFN0cmluZyBkaXJlY3RvcnlQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KHJvb3RQYXRoLCBrZXkuaGFzaEFzU3RyaW5nKCkpOworICAgIHJldHVybiBGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocm9vdERpcmVjdG9yeSwga2V5Lmhhc2hBc1N0
cmluZygpKTsKK30KKwordWludDY0X3QgRW5naW5lOjpkaXNrVXNhZ2UoY29uc3QgU3RyaW5nJiBv
cmlnaW5EaXJlY3RvcnkpCit7CisgICAgQVNTRVJUKCFpc01haW5SdW5Mb29wKCkpOwogCi0gICAg
U3RyaW5nIHNpemVGaWxlUGF0aCA9IENhY2hlczo6Y2FjaGVzU2l6ZUZpbGVuYW1lKGRpcmVjdG9y
eVBhdGgpOworICAgIGlmIChvcmlnaW5EaXJlY3RvcnkuaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm4gMDsKKworICAgIFN0cmluZyBzaXplRmlsZVBhdGggPSBDYWNoZXM6OmNhY2hlc1NpemVGaWxl
bmFtZShvcmlnaW5EaXJlY3RvcnkpOwogICAgIGlmIChhdXRvIHJlY29yZGVkU2l6ZSA9IHJlYWRT
aXplRmlsZShzaXplRmlsZVBhdGgpKQogICAgICAgICByZXR1cm4gKnJlY29yZGVkU2l6ZTsKIAot
ICAgIHJldHVybiBnZXREaXJlY3RvcnlTaXplKGRpcmVjdG9yeVBhdGgpOworICAgIHJldHVybiBn
ZXREaXJlY3RvcnlTaXplKG9yaWdpbkRpcmVjdG9yeSk7CiB9CiAKLXZvaWQgRW5naW5lOjpyZXF1
ZXN0U3BhY2UoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIHVpbnQ2NF90IHNw
YWNlUmVxdWVzdGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VRdW90
YU1hbmFnZXI6OkRlY2lzaW9uKT4mJiBjYWxsYmFjaykKK3ZvaWQgRW5naW5lOjpyZXF1ZXN0U3Bh
Y2UoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIHVpbnQ2NF90IHNwYWNlUmVx
dWVzdGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQogewogICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICBpZiAoIW1fbmV0d29ya1Byb2Nlc3MpCi0g
ICAgICAgIGNhbGxiYWNrKFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uOjpE
ZW55KTsKKyAgICAgICAgY2FsbGJhY2soZmFsc2UpOworCisgICAgYXV0byogc2Vzc2lvbiA9IG1f
bmV0d29ya1Byb2Nlc3MtPm5ldHdvcmtTZXNzaW9uKG1fc2Vzc2lvbklEKTsKKyAgICBpZiAoIXNl
c3Npb24pCisgICAgICAgIGNhbGxiYWNrKGZhbHNlKTsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpT
dG9yYWdlUXVvdGFNYW5hZ2VyPiBzdG9yYWdlUXVvdGFNYW5hZ2VyID0gbV9uZXR3b3JrUHJvY2Vz
cy0+c3RvcmFnZVF1b3RhTWFuYWdlcihtX3Nlc3Npb25JRCwgb3JpZ2luKTsKLSAgICBpZiAoIXN0
b3JhZ2VRdW90YU1hbmFnZXIpCi0gICAgICAgIGNhbGxiYWNrKFdlYkNvcmU6OlN0b3JhZ2VRdW90
YU1hbmFnZXI6OkRlY2lzaW9uOjpEZW55KTsKKyAgICBhdXRvKiBzdG9yYWdlTWFuYWdlciA9IHNl
c3Npb24tPnN0b3JhZ2VNYW5hZ2VyKCk7CisgICAgaWYgKCFzdG9yYWdlTWFuYWdlcikKKyAgICAg
ICAgY2FsbGJhY2soZmFsc2UpOwogCi0gICAgc3RvcmFnZVF1b3RhTWFuYWdlci0+cmVxdWVzdFNw
YWNlT25NYWluVGhyZWFkKHNwYWNlUmVxdWVzdGVkLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAg
c3RvcmFnZU1hbmFnZXItPnJlcXVlc3RTcGFjZShvcmlnaW4sIHNwYWNlUmVxdWVzdGVkLCBXVEZN
b3ZlKGNhbGxiYWNrKSk7CiB9CiAKIEVuZ2luZTo6RW5naW5lKE5ldHdvcmtTZXNzaW9uJiBuZXR3
b3JrU2Vzc2lvbiwgU3RyaW5nJiYgcm9vdFBhdGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaAppbmRleCAxNDdmYmFj
ZTE2NzdhNjA4NTkxOGFiNzcyYTllMTBhMjA2YzY4ODFlLi5mZTNjMWY5MzBkYWUzOTk4Y2QxYzA0
YzM0ZGJkZGM1MzU1NWE0NzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmgKQEAgLTI5LDcgKzI5LDYgQEAKICNp
bmNsdWRlICJOZXR3b3JrQ2FjaGVEYXRhLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGEuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL0NsaWVudE9yaWdpbi5oPgotI2luY2x1ZGUgPFdlYkNvcmUvU3RvcmFn
ZVF1b3RhTWFuYWdlci5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC04NCw4ICs4Myw5
IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVRdW90YVVzZXIoTmV0d29y
a1Nlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwogCi0gICAgc3RhdGljIHVpbnQ2NF90IGRpc2tVc2FnZShjb25zdCBTdHJp
bmcmIHJvb3RQYXRoLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKLSAgICB2b2lkIHJl
cXVlc3RTcGFjZShjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCB1aW50NjRfdCBzcGFjZVJl
cXVlc3RlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5h
Z2VyOjpEZWNpc2lvbik+JiYpOworICAgIHN0YXRpYyBTdHJpbmcgc3RvcmFnZVBhdGgoY29uc3Qg
U3RyaW5nJiByb290RGlyZWN0b3J5LCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKKyAg
ICBzdGF0aWMgdWludDY0X3QgZGlza1VzYWdlKGNvbnN0IFN0cmluZyYgb3JpZ2luRGlyZWN0b3J5
KTsKKyAgICB2b2lkIHJlcXVlc3RTcGFjZShjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCB1
aW50NjRfdCBzcGFjZVJlcXVlc3RlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7
CiAKICAgICBib29sIHNob3VsZFBlcnNpc3QoKSBjb25zdCB7IHJldHVybiAhIW1faW9RdWV1ZTt9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVT
dG9yYWdlRW5naW5lQ2FjaGVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcAppbmRleCAwNGVkZWNlMWM0YmZlOWVhY2Fl
MDZhNzA3YzVkZGZmZTAwZTgxMzhlLi5jMzBjM2JlN2M1YzU1M2JmMjMyOGQ5NTFiNzc0NDQ0MTNi
MzJkNmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0Nh
Y2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwCkBAIC01MjQsMTQgKzUyNCwx
MCBAQCB2b2lkIENhY2hlczo6cmVxdWVzdFNwYWNlKHVpbnQ2NF90IHNwYWNlUmVxdWlyZWQsIFdl
YkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDb21wbAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgbV9lbmdpbmUtPnJlcXVlc3RTcGFjZShtX29yaWdpbiwgc3BhY2VSZXF1aXJlZCwgW2NhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8gZGVjaXNpb24pIG11dGFibGUgewotICAgICAg
ICBzd2l0Y2ggKGRlY2lzaW9uKSB7Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6U3RvcmFnZVF1b3Rh
TWFuYWdlcjo6RGVjaXNpb246OkRlbnk6Ci0gICAgICAgICAgICBjYWxsYmFjayhFcnJvcjo6UXVv
dGFFeGNlZWRlZCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6
U3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb246OkdyYW50OgotICAgICAgICAgICAgY2FsbGJh
Y2soeyB9KTsKLSAgICAgICAgfTsKKyAgICBtX2VuZ2luZS0+cmVxdWVzdFNwYWNlKG1fb3JpZ2lu
LCBzcGFjZVJlcXVpcmVkLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBncmFu
dGVkKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCFncmFudGVkKQorICAgICAgICAgICAgcmV0dXJu
IGNhbGxiYWNrKEVycm9yOjpRdW90YUV4Y2VlZGVkKTsKKyAgICAgICAgY2FsbGJhY2soeyB9KTsK
ICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9p
b3MvTmV0d29ya1Byb2Nlc3NJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lv
cy9OZXR3b3JrUHJvY2Vzc0lPUy5tbQppbmRleCBhODdhZDgwNWI1ZGYxNTA3ODNiNTM5MWU4ZTAz
Zjk4ZTc2NGRmM2Q1Li4yMTk2ZTllNzRkMjQ1MzFjMGRiNWIzOTQ1YWM2MDhmZTNlOThjNzRhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vz
c0lPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJv
Y2Vzc0lPUy5tbQpAQCAtMTA5LDE5ICsxMDksNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRJ
c0hvbGRpbmdMb2NrZWRGaWxlcyhib29sIGlzSG9sZGluZ0xvY2tlZEZpbGVzKQogICAgIC8vIFdl
IHN5bmNocm9ub3VzbHkgdGFrZSBhIHByb2Nlc3MgYXNzZXJ0aW9uIHdoZW4gYmVnaW5uaW5nIGEg
U1FMaXRlIHRyYW5zYWN0aW9uIHNvIHRoYXQgd2UgZG9uJ3QgZ2V0IHN1c3BlbmRlZAogICAgIC8v
IHdoaWxlIGhvbGRpbmcgYSBsb2NrZWQgZmlsZS4gV2Ugd291bGQgZ2V0IGtpbGxlZCBpZiBzdXNw
ZW5kZWQgd2hpbGUgaG9sZGluZyBsb2NrZWQgZmlsZXMuCiAgICAgbV9ob2xkaW5nTG9ja2VkRmls
ZUFzc2VydGlvbiA9IFByb2Nlc3NBc3NlcnRpb246OmNyZWF0ZShnZXRDdXJyZW50UHJvY2Vzc0lE
KCksICJOZXR3b3JrIFByb2Nlc3MgaXMgaG9sZGluZyBsb2NrZWQgZmlsZXMiX3MsIFByb2Nlc3NB
c3NlcnRpb25UeXBlOjpGaW5pc2hUYXNrSW50ZXJydXB0YWJsZSwgUHJvY2Vzc0Fzc2VydGlvbjo6
TW9kZTo6U3luYyk7Ci0gICAgbV9ob2xkaW5nTG9ja2VkRmlsZUFzc2VydGlvbi0+c2V0UHJlcGFy
ZUZvckludmFsaWRhdGlvbkhhbmRsZXIoW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlz
IH1dKCkgbXV0YWJsZSB7Ci0gICAgICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOwotICAgICAg
ICBpZiAoIXdlYWtUaGlzKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmICghbV9z
aG91bGRTdXNwZW5kSURCU2VydmVycykKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBm
b3JFYWNoTmV0d29ya1Nlc3Npb24oW10oYXV0byYgc2Vzc2lvbikgewotICAgICAgICAgICAgaWYg
KGF1dG8qIHNlcnZlciA9IHNlc3Npb24ud2ViSURCU2VydmVyKCkpCi0gICAgICAgICAgICAgICAg
c2VydmVyLT5zdXNwZW5kKCk7Ci0gICAgICAgIH0pOwotICAgIH0pOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3Rv
cmFnZS9JREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50LmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44YWY0YzY0NjQzNmI5NmUxNGU4N2IzY2UyYjYxMWRiMDQyODc5MDVmCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3Jh
Z2VDb25uZWN0aW9uVG9DbGllbnQuY3BwCkBAIC0wLDAgKzEsMTkxIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE2LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSURCU3RvcmFnZUNvbm5lY3Rpb25U
b0NsaWVudC5oIgorCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVk
ZSAiV2ViSURCQ29ubmVjdGlvblRvU2VydmVyTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJJREJS
ZXN1bHQuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0lEQlJlcXVlc3REYXRhLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9JREJSZXN1bHREYXRhLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VbmlxdWVJREJEYXRh
YmFzZUNvbm5lY3Rpb24uaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK0lEQlN0b3JhZ2VDb25u
ZWN0aW9uVG9DbGllbnQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQoSVBDOjpDb25uZWN0
aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uLCBXZWJDb3JlOjpJREJDb25uZWN0aW9uSWRlbnRpZmll
ciBpZGVudGlmaWVyKQorICAgIDogbV9jb25uZWN0aW9uKGNvbm5lY3Rpb24pCisgICAgLCBtX2lk
ZW50aWZpZXIoaWRlbnRpZmllcikKKyAgICAsIG1fY29ubmVjdGlvblRvQ2xpZW50KFdlYkNvcmU6
OklEQlNlcnZlcjo6SURCQ29ubmVjdGlvblRvQ2xpZW50OjpjcmVhdGUoKnRoaXMpKQoreworfQor
CitJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50Ojp+SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0Ns
aWVudCgpCit7CisgICAgbV9jb25uZWN0aW9uVG9DbGllbnQtPmNsZWFyRGVsZWdhdGUoKTsKK30K
KworV2ViQ29yZTo6SURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnQmIElEQlN0b3JhZ2VD
b25uZWN0aW9uVG9DbGllbnQ6OmNvbm5lY3Rpb25Ub0NsaWVudCgpCit7CisgICAgcmV0dXJuIG1f
Y29ubmVjdGlvblRvQ2xpZW50OworfQorCit0ZW1wbGF0ZTxjbGFzcyBNZXNzYWdlVHlwZT4gdm9p
ZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRHZXRSZXN1bHQoY29uc3QgV2ViQ29y
ZTo6SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBpZiAocmVzdWx0RGF0YS50eXBl
KCkgPT0gV2ViQ29yZTo6SURCUmVzdWx0VHlwZTo6RXJyb3IpIHsKKyAgICAgICAgSVBDOjpDb25u
ZWN0aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwgTWVzc2FnZVR5cGUocmVzdWx0RGF0YSksIDApOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKHJlc3VsdERhdGEudHlwZSgpID09IFdl
YkNvcmU6OklEQlJlc3VsdFR5cGU6OkdldEFsbFJlY29yZHNTdWNjZXNzICYmIHJlc3VsdERhdGEu
Z2V0QWxsUmVzdWx0KCkudHlwZSgpID09IFdlYkNvcmU6OkluZGV4ZWREQjo6R2V0QWxsVHlwZTo6
S2V5cykgeworICAgICAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQobV9jb25uZWN0aW9uLCBNZXNz
YWdlVHlwZShyZXN1bHREYXRhKSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBh
dXRvIGJsb2JGaWxlUGF0aHMgPSByZXN1bHREYXRhLnR5cGUoKSA9PSBXZWJDb3JlOjpJREJSZXN1
bHRUeXBlOjpHZXRBbGxSZWNvcmRzU3VjY2VzcyA/IHJlc3VsdERhdGEuZ2V0QWxsUmVzdWx0KCku
YWxsQmxvYkZpbGVQYXRocygpIDogcmVzdWx0RGF0YS5nZXRSZXN1bHQoKS52YWx1ZSgpLmJsb2JG
aWxlUGF0aHMoKTsKKyAgICBpZiAoYmxvYkZpbGVQYXRocy5pc0VtcHR5KCkpIHsKKyAgICAgICAg
SVBDOjpDb25uZWN0aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwgTWVzc2FnZVR5cGUocmVzdWx0RGF0
YSksIDApOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgSVBDOjpDb25uZWN0aW9uOjpz
ZW5kKG1fY29ubmVjdGlvbiwgTWVzc2FnZVR5cGUocmVzdWx0RGF0YSksIDApOworfQorCit2b2lk
IElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZERlbGV0ZURhdGFiYXNlKGNvbnN0IFdl
YkNvcmU6OklEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCit7CisgICAgSVBDOjpDb25uZWN0aW9u
OjpzZW5kKG1fY29ubmVjdGlvbiwgTWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6
RGlkRGVsZXRlRGF0YWJhc2UocmVzdWx0RGF0YSksIDApOworfQorCit2b2lkIElEQlN0b3JhZ2VD
b25uZWN0aW9uVG9DbGllbnQ6OmRpZE9wZW5EYXRhYmFzZShjb25zdCBXZWJDb3JlOjpJREJSZXN1
bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5l
Y3Rpb24sIE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZE9wZW5EYXRhYmFz
ZShyZXN1bHREYXRhKSwgMCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVu
dDo6ZGlkU3RhcnRUcmFuc2FjdGlvbihjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZp
ZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCRXJyb3ImIGVycm9y
KQoreworICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpX
ZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZFN0YXJ0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25J
ZGVudGlmaWVyLCBlcnJvciksIDApOworfQorCit2b2lkIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9D
bGllbnQ6OmRpZEFib3J0VHJhbnNhY3Rpb24oY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVu
dGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OklEQkVycm9yJiBl
cnJvcikKK3sKKyAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQobV9jb25uZWN0aW9uLCBNZXNzYWdl
czo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWRBYm9ydFRyYW5zYWN0aW9uKHRyYW5zYWN0
aW9uSWRlbnRpZmllciwgZXJyb3IpLCAwKTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlv
blRvQ2xpZW50OjpkaWRDb21taXRUcmFuc2FjdGlvbihjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJj
ZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCRXJy
b3ImIGVycm9yKQoreworICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1l
c3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZENvbW1pdFRyYW5zYWN0aW9uKHRy
YW5zYWN0aW9uSWRlbnRpZmllciwgZXJyb3IpLCAwKTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29u
bmVjdGlvblRvQ2xpZW50OjpkaWRDcmVhdGVPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJS
ZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nv
bm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZENyZWF0ZU9i
amVjdFN0b3JlKHJlc3VsdERhdGEpLCAwKTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlv
blRvQ2xpZW50OjpkaWREZWxldGVPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXN1bHRE
YXRhJiByZXN1bHREYXRhKQoreworICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rp
b24sIE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZERlbGV0ZU9iamVjdFN0
b3JlKHJlc3VsdERhdGEpLCAwKTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xp
ZW50OjpkaWRSZW5hbWVPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJiBy
ZXN1bHREYXRhKQoreworICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1l
c3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZFJlbmFtZU9iamVjdFN0b3JlKHJl
c3VsdERhdGEpLCAwKTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50Ojpk
aWRDbGVhck9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmIHJlc3VsdERh
dGEpCit7CisgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwgTWVzc2FnZXM6
OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6RGlkQ2xlYXJPYmplY3RTdG9yZShyZXN1bHREYXRh
KSwgMCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkQ3JlYXRl
SW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBJ
UEM6OkNvbm5lY3Rpb246OnNlbmQobV9jb25uZWN0aW9uLCBNZXNzYWdlczo6V2ViSURCQ29ubmVj
dGlvblRvU2VydmVyOjpEaWRDcmVhdGVJbmRleChyZXN1bHREYXRhKSwgMCk7Cit9CisKK3ZvaWQg
SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkRGVsZXRlSW5kZXgoY29uc3QgV2ViQ29y
ZTo6SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBJUEM6OkNvbm5lY3Rpb246OnNl
bmQobV9jb25uZWN0aW9uLCBNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWRE
ZWxldGVJbmRleChyZXN1bHREYXRhKSwgMCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rp
b25Ub0NsaWVudDo6ZGlkUmVuYW1lSW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYg
cmVzdWx0RGF0YSkKK3sKKyAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQobV9jb25uZWN0aW9uLCBN
ZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWRSZW5hbWVJbmRleChyZXN1bHRE
YXRhKSwgMCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkUHV0
T3JBZGQoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBJ
UEM6OkNvbm5lY3Rpb246OnNlbmQobV9jb25uZWN0aW9uLCBNZXNzYWdlczo6V2ViSURCQ29ubmVj
dGlvblRvU2VydmVyOjpEaWRQdXRPckFkZChyZXN1bHREYXRhKSwgMCk7Cit9CisKK3ZvaWQgSURC
U3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkR2V0UmVjb3JkKGNvbnN0IFdlYkNvcmU6OklE
QlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCit7CisgICAgZGlkR2V0UmVzdWx0PE1lc3NhZ2VzOjpX
ZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZEdldFJlY29yZD4ocmVzdWx0RGF0YSk7Cit9CisK
K3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkR2V0QWxsUmVjb3Jkcyhjb25z
dCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIGRpZEdldFJlc3Vs
dDxNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWRHZXRBbGxSZWNvcmRzPihy
ZXN1bHREYXRhKTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRH
ZXRDb3VudChjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAg
IElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJJREJDb25u
ZWN0aW9uVG9TZXJ2ZXI6OkRpZEdldENvdW50KHJlc3VsdERhdGEpLCAwKTsKK30KKwordm9pZCBJ
REJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWREZWxldGVSZWNvcmQoY29uc3QgV2ViQ29y
ZTo6SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBJUEM6OkNvbm5lY3Rpb246OnNl
bmQobV9jb25uZWN0aW9uLCBNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWRE
ZWxldGVSZWNvcmQocmVzdWx0RGF0YSksIDApOworfQorCit2b2lkIElEQlN0b3JhZ2VDb25uZWN0
aW9uVG9DbGllbnQ6OmRpZE9wZW5DdXJzb3IoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYg
cmVzdWx0RGF0YSkKK3sKKyAgICBkaWRHZXRSZXN1bHQ8TWVzc2FnZXM6OldlYklEQkNvbm5lY3Rp
b25Ub1NlcnZlcjo6RGlkT3BlbkN1cnNvcj4ocmVzdWx0RGF0YSk7Cit9CisKK3ZvaWQgSURCU3Rv
cmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkSXRlcmF0ZUN1cnNvcihjb25zdCBXZWJDb3JlOjpJ
REJSZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIGRpZEdldFJlc3VsdDxNZXNzYWdlczo6
V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWRJdGVyYXRlQ3Vyc29yPihyZXN1bHREYXRhKTsK
K30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRHZXRBbGxEYXRhYmFz
ZU5hbWVzQW5kVmVyc2lvbnMoY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiBy
ZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OklEQkRhdGFiYXNlTmFtZUFu
ZFZlcnNpb24+JiBkYXRhYmFzZXMpCit7CisgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKG1fY29u
bmVjdGlvbiwgTWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6RGlkR2V0QWxsRGF0
YWJhc2VOYW1lc0FuZFZlcnNpb25zKHJlcXVlc3RJZGVudGlmaWVyLCBkYXRhYmFzZXMpLCAwKTsK
K30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpmaXJlVmVyc2lvbkNoYW5n
ZUV2ZW50KFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiBj
b25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJ
ZGVudGlmaWVyLCB1aW50NjRfdCByZXF1ZXN0ZWRWZXJzaW9uKQoreworICAgIElQQzo6Q29ubmVj
dGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2
ZXI6OkZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQoY29ubmVjdGlvbi5pZGVudGlmaWVyKCksIHJlcXVl
c3RJZGVudGlmaWVyLCByZXF1ZXN0ZWRWZXJzaW9uKSwgMCk7Cit9CisKK3ZvaWQgSURCU3RvcmFn
ZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkQ2xvc2VGcm9tU2VydmVyKFdlYkNvcmU6OklEQlNlcnZl
cjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3Jl
OjpJREJFcnJvciYgZXJyb3IpCit7CisgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKG1fY29ubmVj
dGlvbiwgTWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6RGlkQ2xvc2VGcm9tU2Vy
dmVyKGNvbm5lY3Rpb24uaWRlbnRpZmllcigpLCBlcnJvciksIDApOworfQorCit2b2lkIElEQlN0
b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6Om5vdGlmeU9wZW5EQlJlcXVlc3RCbG9ja2VkKGNvbnN0
IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2
NF90IG9sZFZlcnNpb24sIHVpbnQ2NF90IG5ld1ZlcnNpb24pCit7CisgICAgSVBDOjpDb25uZWN0
aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwgTWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZl
cjo6Tm90aWZ5T3BlbkRCUmVxdWVzdEJsb2NrZWQocmVxdWVzdElkZW50aWZpZXIsIG9sZFZlcnNp
b24sIG5ld1ZlcnNpb24pLCAwKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZUNvbm5l
Y3Rpb25Ub0NsaWVudC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lE
QlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MGJhMDFiMDIxMjBmMjFk
YjYxMzkxZjNhODc0NGQyMmI1ZmY3MGU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQuaApA
QCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0lEQkNvbm5lY3Rpb25Ub0NsaWVu
dC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSURCQ29ubmVjdGlvblRvQ2xpZW50RGVsZWdhdGUuaD4K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGll
bnQgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6SURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGll
bnREZWxlZ2F0ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAg
SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudChJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBX
ZWJDb3JlOjpJREJDb25uZWN0aW9uSWRlbnRpZmllcik7CisgICAgfklEQlN0b3JhZ2VDb25uZWN0
aW9uVG9DbGllbnQoKTsKKworICAgIFdlYkNvcmU6OklEQkNvbm5lY3Rpb25JZGVudGlmaWVyIGlk
ZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKyAgICBJUEM6
OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGlwY0Nvbm5lY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2Nv
bm5lY3Rpb247IH0KKyAgICBXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub0NsaWVu
dCYgY29ubmVjdGlvblRvQ2xpZW50KCk7CisKK3ByaXZhdGU6CisgICAgdGVtcGxhdGU8Y2xhc3Mg
TWVzc2FnZVR5cGU+IHZvaWQgZGlkR2V0UmVzdWx0KGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERh
dGEmKTsKKworICAgIC8vIElEQkNvbm5lY3Rpb25Ub0NsaWVudERlbGVnYXRlCisgICAgdm9pZCBk
aWREZWxldGVEYXRhYmFzZShjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJikgZmluYWw7Cisg
ICAgdm9pZCBkaWRPcGVuRGF0YWJhc2UoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZp
bmFsOworICAgIHZvaWQgZGlkQWJvcnRUcmFuc2FjdGlvbihjb25zdCBXZWJDb3JlOjpJREJSZXNv
dXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURC
RXJyb3ImKSBmaW5hbDsKKyAgICB2b2lkIGRpZENvbW1pdFRyYW5zYWN0aW9uKGNvbnN0IFdlYkNv
cmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBX
ZWJDb3JlOjpJREJFcnJvciYpIGZpbmFsOworICAgIHZvaWQgZGlkU3RhcnRUcmFuc2FjdGlvbihj
b25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmll
ciwgY29uc3QgV2ViQ29yZTo6SURCRXJyb3ImKSBmaW5hbDsKKyAgICB2b2lkIGRpZENyZWF0ZU9i
amVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBmaW5hbDsKKyAgICB2b2lk
IGRpZERlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBmaW5h
bDsKKyAgICB2b2lkIGRpZFJlbmFtZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlc3Vs
dERhdGEmKSBmaW5hbDsKKyAgICB2b2lkIGRpZENsZWFyT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29y
ZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkQ3JlYXRlSW5kZXgoY29uc3Qg
V2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkRGVsZXRlSW5kZXgo
Y29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVuYW1l
SW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlk
UHV0T3JBZGQoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQg
ZGlkR2V0UmVjb3JkKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBmaW5hbDsKKyAgICB2
b2lkIGRpZEdldEFsbFJlY29yZHMoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFs
OworICAgIHZvaWQgZGlkR2V0Q291bnQoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZp
bmFsOworICAgIHZvaWQgZGlkRGVsZXRlUmVjb3JkKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERh
dGEmKSBmaW5hbDsKKyAgICB2b2lkIGRpZE9wZW5DdXJzb3IoY29uc3QgV2ViQ29yZTo6SURCUmVz
dWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkSXRlcmF0ZUN1cnNvcihjb25zdCBXZWJDb3Jl
OjpJREJSZXN1bHREYXRhJikgZmluYWw7CisgICAgdm9pZCBkaWRHZXRBbGxEYXRhYmFzZU5hbWVz
QW5kVmVyc2lvbnMoY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiwgY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OklEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24+JikgZmluYWw7CisgICAg
dm9pZCBub3RpZnlPcGVuREJSZXF1ZXN0QmxvY2tlZChjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJj
ZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBvbGRWZXJzaW9uLCB1aW50
NjRfdCBuZXdWZXJzaW9uKSBmaW5hbDsKKyAgICB2b2lkIGZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQo
V2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mLCBjb25zdCBX
ZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRf
dCByZXF1ZXN0ZWRWZXJzaW9uKSBmaW5hbDsKKyAgICB2b2lkIGRpZENsb3NlRnJvbVNlcnZlcihX
ZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYsIGNvbnN0IFdl
YkNvcmU6OklEQkVycm9yJikgZmluYWw7CisKKyAgICBJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlE
IG1fY29ubmVjdGlvbjsKKyAgICBXZWJDb3JlOjpJREJDb25uZWN0aW9uSWRlbnRpZmllciBtX2lk
ZW50aWZpZXI7CisgICAgUmVmPFdlYkNvcmU6OklEQlNlcnZlcjo6SURCQ29ubmVjdGlvblRvQ2xp
ZW50PiBtX2Nvbm5lY3Rpb25Ub0NsaWVudDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3Jh
Z2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJT
dG9yYWdlTWFuYWdlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjk5MDQ0YWFhMGMwZWFmYjNiZWZjZmJiMmIx
ZWJmMTNkZWI1OTY4NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlTWFuYWdlci5jcHAKQEAgLTAsMCArMSwyNTMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSURCU3RvcmFnZU1hbmFn
ZXIuaCIKKworI2luY2x1ZGUgIklEQlN0b3JhZ2VSZWdpc3RyeS5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvTWVtb3J5SURCQmFja2luZ1N0b3JlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVGaWxl
U3lzdGVtLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVJREJCYWNraW5nU3RvcmUuaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK3N0YXRpYyB2b2lkIG1pZ3JhdGVPcmlnaW5EYXRhKGNvbnN0
IFN0cmluZyYgb2xkT3JpZ2luRGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIG5ld09yaWdpbkRpcmVj
dG9yeSkKK3sKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMob2xkT3JpZ2luRGlyZWN0
b3J5KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBmaWxlTmFtZXMgPSBGaWxlU3lzdGVt
OjpsaXN0RGlyZWN0b3J5KG9sZE9yaWdpbkRpcmVjdG9yeSk7CisgICAgaWYgKCFmaWxlTmFtZXMu
aXNFbXB0eSgpKQorICAgICAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMobmV3T3Jp
Z2luRGlyZWN0b3J5KTsKKworICAgIGZvciAoYXV0byYgbmFtZSA6IGZpbGVOYW1lcykgeworICAg
ICAgICBTdHJpbmcgY2hpbGRQYXRoID0gRmlsZVN5c3RlbTo6cmVhbFBhdGgoRmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG9sZE9yaWdpbkRpcmVjdG9yeSwgbmFtZSkpOworICAg
ICAgICBTdHJpbmcgbmV3TmFtZSA9IFdlYkNvcmU6OlNRTGl0ZUZpbGVTeXN0ZW06OmNvbXB1dGVI
YXNoRm9yRmlsZU5hbWUoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6
OmRlY29kZURhdGFiYXNlTmFtZShuYW1lKSk7CisgICAgICAgIGF1dG8gbmV3Q2hpbGRQYXRoID0g
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG5ld09yaWdpbkRpcmVjdG9yeSwg
bmV3TmFtZSk7CisgICAgICAgIEZpbGVTeXN0ZW06Om1vdmVGaWxlKGNoaWxkUGF0aCwgbmV3Q2hp
bGRQYXRoKTsKKyAgICB9CisKKyAgICBGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeShv
bGRPcmlnaW5EaXJlY3RvcnkpOworfQorCitTdHJpbmcgSURCU3RvcmFnZU1hbmFnZXI6OmlkYlN0
b3JhZ2VPcmlnaW5EaXJlY3RvcnkoY29uc3QgU3RyaW5nJiByb290RGlyZWN0b3J5LCBjb25zdCBX
ZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbikKK3sKKyAgICBpZiAocm9vdERpcmVjdG9yeS5p
c0VtcHR5KCkpCisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOworCisgICAgU3RyaW5nIG9y
aWdpbkRpcmVjdG9yeSA9IFdlYkNvcmU6OklEQkRhdGFiYXNlSWRlbnRpZmllcjo6ZGF0YWJhc2VE
aXJlY3RvcnlSZWxhdGl2ZVRvUm9vdChvcmlnaW4udG9wT3JpZ2luLCBvcmlnaW4uY2xpZW50T3Jp
Z2luLCByb290RGlyZWN0b3J5LCAidjEiKTsKKyAgICBTdHJpbmcgb2xkT3JpZ2luRGlyZWN0b3J5
ID0gV2ViQ29yZTo6SURCRGF0YWJhc2VJZGVudGlmaWVyOjpkYXRhYmFzZURpcmVjdG9yeVJlbGF0
aXZlVG9Sb290KG9yaWdpbi50b3BPcmlnaW4sIG9yaWdpbi5jbGllbnRPcmlnaW4sIHJvb3REaXJl
Y3RvcnksICJ2MCIpOworICAgIG1pZ3JhdGVPcmlnaW5EYXRhKG9sZE9yaWdpbkRpcmVjdG9yeSwg
b3JpZ2luRGlyZWN0b3J5KTsKKworICAgIHJldHVybiBvcmlnaW5EaXJlY3Rvcnk7Cit9CisKK3Vp
bnQ2NF90IElEQlN0b3JhZ2VNYW5hZ2VyOjppZGJTdG9yYWdlU2l6ZShjb25zdCBTdHJpbmcmIG9y
aWdpbkRpcmVjdG9yeSkKK3sKKyAgICBpZiAob3JpZ2luRGlyZWN0b3J5LmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OmRhdGFiYXNlc1NpemVGb3JEaXJlY3Rvcnkob3JpZ2luRGlyZWN0b3J5
KTsKK30KKworc3RhdGljIHZvaWQgZ2V0T3JpZ2luc0ZvclZlcnNpb24oY29uc3QgU3RyaW5nJiB2
ZXJzaW9uUGF0aCwgSGFzaFNldDxXZWJDb3JlOjpDbGllbnRPcmlnaW4+JiBvcmlnaW5zKQorewor
ICAgIGZvciAoYXV0byYgdG9wRGF0YWJhc2VJZGVudGlmaWVyIDogRmlsZVN5c3RlbTo6bGlzdERp
cmVjdG9yeSh2ZXJzaW9uUGF0aCkpIHsKKyAgICAgICAgYXV0byB0b3BPcmlnaW4gPSBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZpZXIodG9wRGF0YWJhc2VJ
ZGVudGlmaWVyKTsKKyAgICAgICAgaWYgKCF0b3BPcmlnaW4pCisgICAgICAgICAgICBjb250aW51
ZTsKKworICAgICAgICBhdXRvIHRvcE9yaWdpbkRpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudCh2ZXJzaW9uUGF0aCwgdG9wRGF0YWJhc2VJZGVudGlmaWVyKTsK
KyAgICAgICAgZm9yIChhdXRvJiBkYXRhYmFzZUlkZW50aWZpZXIgOiBGaWxlU3lzdGVtOjpsaXN0
RGlyZWN0b3J5KHRvcE9yaWdpbkRpcmVjdG9yeSkpIHsKKyAgICAgICAgICAgIGF1dG8gb3JpZ2lu
RGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRvcE9yaWdp
bkRpcmVjdG9yeSwgZGF0YWJhc2VJZGVudGlmaWVyKTsKKyAgICAgICAgICAgIGlmIChGaWxlU3lz
dGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeShvcmlnaW5EaXJlY3RvcnkpKQorICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBhdXRvIGNsaWVudE9yaWdpbiA9IFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmllcihkYXRhYmFzZUlkZW50
aWZpZXIpOworICAgICAgICAgICAgLy8gVGhpcyBpcyBub3Qgb3JpZ2luIGRpcmVjdG9yeSwgYnV0
IG1heSBiZSBkYXRhYmFzZSBkaXJlY3RvcnkuCisgICAgICAgICAgICBpZiAoIWNsaWVudE9yaWdp
bikgeworICAgICAgICAgICAgICAgIG9yaWdpbnMuYWRkKFdlYkNvcmU6OkNsaWVudE9yaWdpbiB7
ICp0b3BPcmlnaW4sICp0b3BPcmlnaW4gfSk7CisgICAgICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG9yaWdpbnMuYWRkKFdlYkNvcmU6OkNsaWVudE9y
aWdpbiB7ICp0b3BPcmlnaW4sICpjbGllbnRPcmlnaW4gfSk7CisgICAgICAgIH0KKworICAgICAg
ICAvLyBXZSBtYXkgaGF2ZSBkZWxldGVkIGVtcHR5IGNoaWxkcmVuIGRpcmVjdG9yaWVzIGFib3Zl
LCB3aGljaCBtYWtlIHRoaXMgZGlyZWN0b3J5IGVtcHR5LgorICAgICAgICBGaWxlU3lzdGVtOjpk
ZWxldGVFbXB0eURpcmVjdG9yeSh0b3BPcmlnaW5EaXJlY3RvcnkpOworICAgIH0KK30KKworSGFz
aFNldDxXZWJDb3JlOjpDbGllbnRPcmlnaW4+IElEQlN0b3JhZ2VNYW5hZ2VyOjpvcmlnaW5zT2ZJ
REJTdG9yYWdlRGF0YShjb25zdCBTdHJpbmcmIHJvb3REaXJlY3RvcnkpCit7CisgICAgSGFzaFNl
dDxXZWJDb3JlOjpDbGllbnRPcmlnaW4+IG9yaWdpbnM7CisgICAgaWYgKHJvb3REaXJlY3Rvcnku
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gb3JpZ2luczsKKworICAgIGdldE9yaWdpbnNGb3JW
ZXJzaW9uKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyb290RGlyZWN0b3J5
LCAidjAiKSwgb3JpZ2lucyk7CisgICAgZ2V0T3JpZ2luc0ZvclZlcnNpb24oRmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJvb3REaXJlY3RvcnksICJ2MSIpLCBvcmlnaW5zKTsK
KworICAgIHJldHVybiBvcmlnaW5zOworfQorCitJREJTdG9yYWdlTWFuYWdlcjo6SURCU3RvcmFn
ZU1hbmFnZXIoY29uc3QgU3RyaW5nJiBwYXRoLCBJREJTdG9yYWdlUmVnaXN0cnkmIHJlZ2lzdHJ5
LCBRdW90YUNoZWNrRnVuY3Rpb24mJiBxdW90YUNoZWNrRnVuY3Rpb24pCisgICAgOiBtX3BhdGgo
cGF0aCkKKyAgICAsIG1fcmVnaXN0cnkocmVnaXN0cnkpCisgICAgLCBtX3F1b3RhQ2hlY2tGdW5j
dGlvbihXVEZNb3ZlKHF1b3RhQ2hlY2tGdW5jdGlvbikpCit7Cit9CisKK2Jvb2wgSURCU3RvcmFn
ZU1hbmFnZXI6OmlzQWN0aXZlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIW1fZGF0YWJhc2VzLmlz
RW1wdHkoKTsKK30KKworYm9vbCBJREJTdG9yYWdlTWFuYWdlcjo6aGFzRGF0YUluTWVtb3J5KCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gV1RGOjphbnlPZihtX2RhdGFiYXNlcy52YWx1ZXMoKSwgWyZd
IChhdXRvJiBkYXRhYmFzZSkgeworICAgICAgICByZXR1cm4gZGF0YWJhc2UtPmhhc0RhdGFJbk1l
bW9yeSgpOworICAgIH0pOworfQorCit2b2lkIElEQlN0b3JhZ2VNYW5hZ2VyOjpjbG9zZURhdGFi
YXNlc0ZvckRlbGV0aW9uKCkKK3sKKyAgICBmb3IgKGF1dG8mIGRhdGFiYXNlIDogbV9kYXRhYmFz
ZXMudmFsdWVzKCkpCisgICAgICAgIGRhdGFiYXNlLT5pbW1lZGlhdGVDbG9zZSgpOworCisgICAg
bV9kYXRhYmFzZXMuY2xlYXIoKTsKK30KKwordm9pZCBJREJTdG9yYWdlTWFuYWdlcjo6c3RvcERh
dGFiYXNlQWN0aXZpdGllc0ZvclN1c3BlbmQoKQoreworICAgIGlmIChtX3BhdGguaXNFbXB0eSgp
KQorICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKGF1dG8mIGRhdGFiYXNlIDogbV9kYXRhYmFz
ZXMudmFsdWVzKCkpIHsKKyAgICAgICAgLy8gT25seSBzdG9wIGRhdGFiYXNlcyB3aXRoIG5vbi1l
cGhlbWVyYWwgYmFja2luZyBzdG9yZSB0aGF0IGNhbiBob2xkIGRhdGFiYXNlIGZpbGUgbG9jay4K
KyAgICAgICAgaWYgKCFkYXRhYmFzZS0+aWRlbnRpZmllcigpLmlzVHJhbnNpZW50KCkpCisgICAg
ICAgICAgICBkYXRhYmFzZS0+YWJvcnRBY3RpdmVUcmFuc2FjdGlvbnMoKTsKKyAgICB9Cit9CisK
K1dlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2UmIElEQlN0b3JhZ2VNYW5hZ2Vy
OjpnZXRPckNyZWF0ZVVuaXF1ZUlEQkRhdGFiYXNlKGNvbnN0IFdlYkNvcmU6OklEQkRhdGFiYXNl
SWRlbnRpZmllciYgaWRlbnRpZmllcikKK3sKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1fZGF0YWJh
c2VzLmFkZChpZGVudGlmaWVyLCBudWxscHRyKTsKKyAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50
cnkpCisgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPFdlYkNv
cmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U+KCp0aGlzLCBpZGVudGlmaWVyKTsKKwor
ICAgIHJldHVybiAqYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKK30KKwordm9pZCBJREJTdG9y
YWdlTWFuYWdlcjo6b3BlbkRhdGFiYXNlKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCQ29ubmVjdGlv
blRvQ2xpZW50JiBjb25uZWN0aW9uVG9DbGllbnQsIGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3RE
YXRhJiByZXF1ZXN0RGF0YSkKK3sKKyAgICBhdXRvJiBkYXRhYmFzZSA9IGdldE9yQ3JlYXRlVW5p
cXVlSURCRGF0YWJhc2UocmVxdWVzdERhdGEuZGF0YWJhc2VJZGVudGlmaWVyKCkpOworICAgIGRh
dGFiYXNlLm9wZW5EYXRhYmFzZUNvbm5lY3Rpb24oY29ubmVjdGlvblRvQ2xpZW50LCByZXF1ZXN0
RGF0YSk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZU1hbmFnZXI6OmRlbGV0ZURhdGFiYXNlKFdlYkNv
cmU6OklEQlNlcnZlcjo6SURCQ29ubmVjdGlvblRvQ2xpZW50JiBjb25uZWN0aW9uVG9DbGllbnQs
IGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkKK3sKKyAgICBhdXRv
JiBkYXRhYmFzZSA9IGdldE9yQ3JlYXRlVW5pcXVlSURCRGF0YWJhc2UocmVxdWVzdERhdGEuZGF0
YWJhc2VJZGVudGlmaWVyKCkpOworICAgIGRhdGFiYXNlLmhhbmRsZURlbGV0ZShjb25uZWN0aW9u
VG9DbGllbnQsIHJlcXVlc3REYXRhKTsKKworICAgIC8vIFRoaXMgZGF0YWJhc2UgaXMgY3JlYXRl
ZCBmb3IgZGVsZXRpb24uCisgICAgaWYgKGRhdGFiYXNlLnRyeUNsb3NlKCkpCisgICAgICAgIG1f
ZGF0YWJhc2VzLnJlbW92ZShkYXRhYmFzZS5pZGVudGlmaWVyKCkpOworfQorCitWZWN0b3I8V2Vi
Q29yZTo6SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbj4gSURCU3RvcmFnZU1hbmFnZXI6OmdldEFs
bERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucygpCit7CisgICAgVmVjdG9yPFdlYkNvcmU6OklEQkRh
dGFiYXNlTmFtZUFuZFZlcnNpb24+IHJlc3VsdDsKKyAgICBIYXNoU2V0PFN0cmluZz4gdmlzaXRl
ZERhdGFiYXNlUGF0aHM7CisgICAgZm9yIChhdXRvJiBkYXRhYmFzZSA6IG1fZGF0YWJhc2VzLnZh
bHVlcygpKSB7CisgICAgICAgIGF1dG8gcGF0aCA9IGRhdGFiYXNlLT5maWxlUGF0aCgpOworICAg
ICAgICBpZiAoIXBhdGguaXNFbXB0eSgpKQorICAgICAgICAgICAgdmlzaXRlZERhdGFiYXNlUGF0
aHMuYWRkKHBhdGgpOworCisgICAgICAgIGlmIChhdXRvIG5hbWVBbmRWZXJzaW9uID0gZGF0YWJh
c2UtPm5hbWVBbmRWZXJzaW9uKCkpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKFdURk1vdmUo
Km5hbWVBbmRWZXJzaW9uKSk7CisgICAgfQorCisgICAgYXV0byBkYXRhYmFzZUlkZW50aWZpZXJz
ID0gRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShtX3BhdGgpOworICAgIGZvciAoYXV0byBpZGVu
dGlmaWVyIDogZGF0YWJhc2VJZGVudGlmaWVycykgeworICAgICAgICBhdXRvIGRhdGFiYXNlRGly
ZWN0b3J5ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fcGF0aCwgaWRl
bnRpZmllcik7CisgICAgICAgIGF1dG8gZGF0YWJhc2VQYXRoID0gV2ViQ29yZTo6SURCU2VydmVy
OjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmZ1bGxEYXRhYmFzZVBhdGhGb3JEaXJlY3RvcnkoZGF0
YWJhc2VEaXJlY3RvcnkpOworICAgICAgICBpZiAodmlzaXRlZERhdGFiYXNlUGF0aHMuY29udGFp
bnMoZGF0YWJhc2VQYXRoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmIChh
dXRvIG5hbWVBbmRWZXJzaW9uID0gV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5n
U3RvcmU6OmRhdGFiYXNlTmFtZUFuZFZlcnNpb25Gcm9tRmlsZShkYXRhYmFzZVBhdGgpKQorICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZChXVEZNb3ZlKCpuYW1lQW5kVmVyc2lvbikpOworICAgIH0K
KworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgSURCU3RvcmFnZU1hbmFnZXI6Om9wZW5E
QlJlcXVlc3RDYW5jZWxsZWQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3RE
YXRhKQoreworICAgIGF1dG8qIGRhdGFiYXNlID0gbV9kYXRhYmFzZXMuZ2V0KHJlcXVlc3REYXRh
LmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICBpZiAoIWRhdGFiYXNlKQorICAgICAgICByZXR1
cm47CisKKyAgICBkYXRhYmFzZS0+b3BlbkRCUmVxdWVzdENhbmNlbGxlZChyZXF1ZXN0RGF0YS5y
ZXF1ZXN0SWRlbnRpZmllcigpKTsKKworICAgIC8vIERhdGFiYXNlIGJlY29tZXMgaWRsZSBhZnRl
ciByZXF1ZXN0IGlzIGNhbmNlbGxlZC4KKyAgICBpZiAoZGF0YWJhc2UtPnRyeUNsb3NlKCkpCisg
ICAgICAgIG1fZGF0YWJhc2VzLnJlbW92ZShkYXRhYmFzZS0+aWRlbnRpZmllcigpKTsKK30KKwor
dm9pZCBJREJTdG9yYWdlTWFuYWdlcjo6cmVnaXN0ZXJDb25uZWN0aW9uKFdlYkNvcmU6OklEQlNl
cnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiBjb25uZWN0aW9uKQoreworICAgIG1f
cmVnaXN0cnkucmVnaXN0ZXJDb25uZWN0aW9uKGNvbm5lY3Rpb24pOworfQorCit2b2lkIElEQlN0
b3JhZ2VNYW5hZ2VyOjp1bnJlZ2lzdGVyQ29ubmVjdGlvbihXZWJDb3JlOjpJREJTZXJ2ZXI6OlVu
aXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYgY29ubmVjdGlvbikKK3sKKyAgICBtX3JlZ2lzdHJ5
LnVucmVnaXN0ZXJDb25uZWN0aW9uKGNvbm5lY3Rpb24pOworfQorCit2b2lkIElEQlN0b3JhZ2VN
YW5hZ2VyOjpyZWdpc3RlclRyYW5zYWN0aW9uKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURC
RGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCit7CisgICAgbV9yZWdpc3RyeS5yZWdp
c3RlclRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKTsKK30KKwordm9pZCBJREJTdG9yYWdlTWFuYWdl
cjo6dW5yZWdpc3RlclRyYW5zYWN0aW9uKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0
YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCit7CisgICAgbV9yZWdpc3RyeS51bnJlZ2lz
dGVyVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6SURCU2VydmVyOjpJREJCYWNraW5nU3RvcmU+IElEQlN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVC
YWNraW5nU3RvcmUoY29uc3QgV2ViQ29yZTo6SURCRGF0YWJhc2VJZGVudGlmaWVyJiBpZGVudGlm
aWVyKQoreworICAgIGlmIChtX3BhdGguaXNFbXB0eSgpIHx8IGlkZW50aWZpZXIuaXNUcmFuc2ll
bnQoKSkKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViQ29yZTo6SURCU2VydmVyOjpNZW1v
cnlJREJCYWNraW5nU3RvcmU+KGlkZW50aWZpZXIpOworCisgICAgYXV0byBuYW1lID0gV2ViQ29y
ZTo6U1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0ZUhhc2hGb3JGaWxlTmFtZShpZGVudGlmaWVyLmRh
dGFiYXNlTmFtZSgpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJDb3JlOjpJREJTZXJ2ZXI6
OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZT4oaWRlbnRpZmllciwgRmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KG1fcGF0aCwgbmFtZSkpOworfQorCit2b2lkIElEQlN0b3JhZ2VNYW5h
Z2VyOjpyZXF1ZXN0U3BhY2UoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgdWludDY0X3Qg
c2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3sKKyAgICBtX3F1b3RhQ2hlY2tGdW5jdGlvbihzaXplLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VNYW5hZ2VyLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZU1hbmFnZXIuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mNWJhNTRmYzM5ODlhYWFkZWFjMzBlMDI1NGI4NmMyNzdjODVkNjgyCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VN
YW5hZ2VyLmgKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSA8V2ViQ29yZS9VbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworbmFtZXNwYWNlIElEQlNlcnZlciB7CitjbGFzcyBJREJCYWNraW5nU3RvcmU7
CitjbGFzcyBJREJDb25uZWN0aW9uVG9DbGllbnQ7CitjbGFzcyBVbmlxdWVJREJEYXRhYmFzZTsK
K2NsYXNzIFVuaXF1ZUlEQlRyYW5zYWN0aW9uOworfQorCitzdHJ1Y3QgSURCRGF0YWJhc2VOYW1l
QW5kVmVyc2lvbjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIElEQlN0b3JhZ2VS
ZWdpc3RyeTsKKworY2xhc3MgSURCU3RvcmFnZU1hbmFnZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29y
ZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIgeworcHVibGljOgorICAgIHN0
YXRpYyBTdHJpbmcgaWRiU3RvcmFnZU9yaWdpbkRpcmVjdG9yeShjb25zdCBTdHJpbmcmIHJvb3RE
aXJlY3RvcnksIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYpOworICAgIHN0YXRpYyB1aW50
NjRfdCBpZGJTdG9yYWdlU2l6ZShjb25zdCBTdHJpbmcmIG9yaWdpbkRpcmVjdG9yeSk7CisgICAg
c3RhdGljIEhhc2hTZXQ8V2ViQ29yZTo6Q2xpZW50T3JpZ2luPiBvcmlnaW5zT2ZJREJTdG9yYWdl
RGF0YShjb25zdCBTdHJpbmcmIHJvb3REaXJlY3RvcnkpOworCisgICAgdXNpbmcgUXVvdGFDaGVj
a0Z1bmN0aW9uID0gRnVuY3Rpb248dm9pZCh1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik+OworICAgIElEQlN0b3JhZ2VNYW5hZ2VyKGNvbnN0
IFN0cmluZyYgcGF0aCwgSURCU3RvcmFnZVJlZ2lzdHJ5JiwgUXVvdGFDaGVja0Z1bmN0aW9uJiYp
OworICAgIGJvb2wgaXNBY3RpdmUoKSBjb25zdDsKKyAgICBib29sIGhhc0RhdGFJbk1lbW9yeSgp
IGNvbnN0OworICAgIHZvaWQgY2xvc2VEYXRhYmFzZXNGb3JEZWxldGlvbigpOworICAgIHZvaWQg
c3RvcERhdGFiYXNlQWN0aXZpdGllc0ZvclN1c3BlbmQoKTsKKworICAgIHZvaWQgb3BlbkRhdGFi
YXNlKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCQ29ubmVjdGlvblRvQ2xpZW50JiwgY29uc3QgV2Vi
Q29yZTo6SURCUmVxdWVzdERhdGEmKTsKKyAgICB2b2lkIG9wZW5EQlJlcXVlc3RDYW5jZWxsZWQo
Y29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmKTsKKyAgICB2b2lkIGRlbGV0ZURhdGFiYXNl
KFdlYkNvcmU6OklEQlNlcnZlcjo6SURCQ29ubmVjdGlvblRvQ2xpZW50JiwgY29uc3QgV2ViQ29y
ZTo6SURCUmVxdWVzdERhdGEmKTsKKyAgICBWZWN0b3I8V2ViQ29yZTo6SURCRGF0YWJhc2VOYW1l
QW5kVmVyc2lvbj4gZ2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKCk7CisKK3ByaXZhdGU6
CisgICAgV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZSYgZ2V0T3JDcmVhdGVV
bmlxdWVJREJEYXRhYmFzZShjb25zdCBXZWJDb3JlOjpJREJEYXRhYmFzZUlkZW50aWZpZXImKTsK
KworICAgIC8vIFdlYkNvcmU6OlVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlcgorICAgIHZvaWQgcmVn
aXN0ZXJDb25uZWN0aW9uKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25u
ZWN0aW9uJikgZmluYWw7CisgICAgdm9pZCB1bnJlZ2lzdGVyQ29ubmVjdGlvbihXZWJDb3JlOjpJ
REJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYpIGZpbmFsOworICAgIHZvaWQg
cmVnaXN0ZXJUcmFuc2FjdGlvbihXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNl
VHJhbnNhY3Rpb24mKSBmaW5hbDsKKyAgICB2b2lkIHVucmVnaXN0ZXJUcmFuc2FjdGlvbihXZWJD
b3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mKSBmaW5hbDsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SURCU2VydmVyOjpJREJCYWNraW5nU3RvcmU+IGNy
ZWF0ZUJhY2tpbmdTdG9yZShjb25zdCBXZWJDb3JlOjpJREJEYXRhYmFzZUlkZW50aWZpZXImKSBm
aW5hbDsKKyAgICB2b2lkIHJlcXVlc3RTcGFjZShjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4m
LCB1aW50NjRfdCBzaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsK
KworICAgIFN0cmluZyBtX3BhdGg7CisgICAgSURCU3RvcmFnZVJlZ2lzdHJ5JiBtX3JlZ2lzdHJ5
OworICAgIFF1b3RhQ2hlY2tGdW5jdGlvbiBtX3F1b3RhQ2hlY2tGdW5jdGlvbjsKKyAgICBIYXNo
TWFwPFdlYkNvcmU6OklEQkRhdGFiYXNlSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFdlYkNv
cmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U+PiBtX2RhdGFiYXNlczsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZVJlZ2lzdHJ5LmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNjNh
YjVlMjU1MTZlZTYwZjVmNjQwZjU1MWUxZjliYTFjOWVhNjFhCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VSZWdpc3RyeS5j
cHAKQEAgLTAsMCArMSwxMDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiSURCU3RvcmFnZVJlZ2lzdHJ5LmgiCisKKyNpbmNsdWRlICJJREJTdG9yYWdlQ29u
bmVjdGlvblRvQ2xpZW50LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9VbmlxdWVJREJEYXRhYmFzZUNv
bm5lY3Rpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rp
b24uaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK0lEQlN0b3JhZ2VSZWdpc3RyeTo6SURCU3Rv
cmFnZVJlZ2lzdHJ5KCkgPSBkZWZhdWx0OworCitXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQkNvbm5l
Y3Rpb25Ub0NsaWVudCYgSURCU3RvcmFnZVJlZ2lzdHJ5OjplbnN1cmVDb25uZWN0aW9uVG9DbGll
bnQoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uLCBXZWJDb3JlOjpJREJDb25u
ZWN0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9j
b25uZWN0aW9uc1RvQ2xpZW50LmFkZChpZGVudGlmaWVyLCBudWxscHRyKTsKKyAgICBpZiAoYWRk
UmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBt
YWtlVW5pcXVlPElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ+KGNvbm5lY3Rpb24sIGlkZW50
aWZpZXIpOworCisgICAgQVNTRVJUKGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPmlwY0Nvbm5l
Y3Rpb24oKSA9PSBjb25uZWN0aW9uKTsKKyAgICByZXR1cm4gYWRkUmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZS0+Y29ubmVjdGlvblRvQ2xpZW50KCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZVJlZ2lzdHJ5
OjpyZW1vdmVDb25uZWN0aW9uVG9DbGllbnQoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25u
ZWN0aW9uKQoreworICAgIGF1dG8gYWxsQ29ubmVjdGlvbnNUb0NsaWVudCA9IHN0ZDo6ZXhjaGFu
Z2UobV9jb25uZWN0aW9uc1RvQ2xpZW50LCB7IH0pOworICAgIGZvciAoYXV0byYgW2lkZW50aWZp
ZXIsIGNvbm5lY3Rpb25Ub0NsaWVudF0gOiBhbGxDb25uZWN0aW9uc1RvQ2xpZW50KSB7CisgICAg
ICAgIGlmIChjb25uZWN0aW9uVG9DbGllbnQtPmlwY0Nvbm5lY3Rpb24oKSAhPSBjb25uZWN0aW9u
KSB7CisgICAgICAgICAgICBtX2Nvbm5lY3Rpb25zVG9DbGllbnQuYWRkKGlkZW50aWZpZXIsIFdU
Rk1vdmUoY29ubmVjdGlvblRvQ2xpZW50KSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgfQorICAgICAgICBjb25uZWN0aW9uVG9DbGllbnQtPmNvbm5lY3Rpb25Ub0NsaWVudCgpLmNv
bm5lY3Rpb25Ub0NsaWVudENsb3NlZCgpOworICAgIH0KK30KKwordm9pZCBJREJTdG9yYWdlUmVn
aXN0cnk6OnJlZ2lzdGVyQ29ubmVjdGlvbihXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRh
dGFiYXNlQ29ubmVjdGlvbiYgY29ubmVjdGlvbikKK3sKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBj
b25uZWN0aW9uLmlkZW50aWZpZXIoKTsKKyAgICBBU1NFUlQoIW1fY29ubmVjdGlvbnMuY29udGFp
bnMoaWRlbnRpZmllcikpOworCisgICAgbV9jb25uZWN0aW9ucy5hZGQoaWRlbnRpZmllciwgY29u
bmVjdGlvbik7Cit9CisKK3ZvaWQgSURCU3RvcmFnZVJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQ29ubmVj
dGlvbihXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYgY29u
bmVjdGlvbikKK3sKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBjb25uZWN0aW9uLmlkZW50aWZpZXIo
KTsKKyAgICBBU1NFUlQobV9jb25uZWN0aW9ucy5jb250YWlucyhpZGVudGlmaWVyKSk7CisKKyAg
ICBtX2Nvbm5lY3Rpb25zLnJlbW92ZShpZGVudGlmaWVyKTsKK30KKwordm9pZCBJREJTdG9yYWdl
UmVnaXN0cnk6OnJlZ2lzdGVyVHJhbnNhY3Rpb24oV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJ
REJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKK3sKKyAgICBhdXRvIGlkZW50aWZp
ZXIgPSB0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpOworICAgIEFTU0VSVCghbV90cmFu
c2FjdGlvbnMuY29udGFpbnMoaWRlbnRpZmllcikpOworCisgICAgbV90cmFuc2FjdGlvbnMuYWRk
KGlkZW50aWZpZXIsIHRyYW5zYWN0aW9uKTsKK30KKwordm9pZCBJREJTdG9yYWdlUmVnaXN0cnk6
OnVucmVnaXN0ZXJUcmFuc2FjdGlvbihXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFi
YXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQoreworICAgIGF1dG8gaWRlbnRpZmllciA9IHRy
YW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCk7CisgICAgQVNTRVJUKG1fdHJhbnNhY3Rpb25z
LmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKKworICAgIG1fdHJhbnNhY3Rpb25zLnJlbW92ZShpZGVu
dGlmaWVyKTsKK30KKworV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5l
Y3Rpb24qIElEQlN0b3JhZ2VSZWdpc3RyeTo6Y29ubmVjdGlvbih1aW50NjRfdCBpZGVudGlmaWVy
KQoreworICAgIHJldHVybiBtX2Nvbm5lY3Rpb25zLmdldChpZGVudGlmaWVyKS5nZXQoKTsKK30K
KworV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uKiBJREJT
dG9yYWdlUmVnaXN0cnk6OnRyYW5zYWN0aW9uKFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmll
ciBpZGVudGlmaWVyKQoreworICAgIHJldHVybiBtX3RyYW5zYWN0aW9ucy5nZXQoaWRlbnRpZmll
cikuZ2V0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VSZWdpc3RyeS5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VSZWdpc3RyeS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjIzODRkY2Y0ZjYxODY4N2JlNmMyNGVlMzI2M2NhNDhmODg3ODc2YWEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3Rv
cmFnZVJlZ2lzdHJ5LmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgPFdlYkNvcmUvSURCUmVzb3Vy
Y2VJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworbmFtZXNwYWNlIElEQlNlcnZlciB7CitjbGFzcyBVbmlxdWVJREJEYXRhYmFzZUNv
bm5lY3Rpb247CitjbGFzcyBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOworfQorfQorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDsK
KworY2xhc3MgSURCU3RvcmFnZVJlZ2lzdHJ5IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKK3B1YmxpYzoKKyAgICBJREJTdG9yYWdlUmVnaXN0cnkoKTsKKyAgICBXZWJDb3JlOjpJREJT
ZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub0NsaWVudCYgZW5zdXJlQ29ubmVjdGlvblRvQ2xpZW50KElQ
Qzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIFdlYkNvcmU6OklEQkNvbm5lY3Rpb25JZGVudGlmaWVy
KTsKKyAgICB2b2lkIHJlbW92ZUNvbm5lY3Rpb25Ub0NsaWVudChJUEM6OkNvbm5lY3Rpb246OlVu
aXF1ZUlEKTsKKyAgICB2b2lkIHJlZ2lzdGVyQ29ubmVjdGlvbihXZWJDb3JlOjpJREJTZXJ2ZXI6
OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYpOworICAgIHZvaWQgdW5yZWdpc3RlckNvbm5l
Y3Rpb24oV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mKTsK
KyAgICBXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiogY29u
bmVjdGlvbih1aW50NjRfdCBpZGVudGlmaWVyKTsKKyAgICB2b2lkIHJlZ2lzdGVyVHJhbnNhY3Rp
b24oV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJik7Cisg
ICAgdm9pZCB1bnJlZ2lzdGVyVHJhbnNhY3Rpb24oV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJ
REJEYXRhYmFzZVRyYW5zYWN0aW9uJik7CisgICAgV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJ
REJEYXRhYmFzZVRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbihXZWJDb3JlOjpJREJSZXNvdXJjZUlk
ZW50aWZpZXIpOworCitwcml2YXRlOgorICAgIEhhc2hNYXA8V2ViQ29yZTo6SURCQ29ubmVjdGlv
bklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50
Pj4gbV9jb25uZWN0aW9uc1RvQ2xpZW50OworICAgIEhhc2hNYXA8dWludDY0X3QsIFdlYWtQdHI8
V2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24+PiBtX2Nvbm5l
Y3Rpb25zOworICAgIEhhc2hNYXA8V2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyLCBXZWFr
UHRyPFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbj4+IG1f
dHJhbnNhY3Rpb25zOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2Vy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFn
ZU1hbmFnZXIuY3BwCmluZGV4IDgxM2U2ZTk1YTEzYWJlMzkxODZkMTliMmRhYjI4N2JiYjU1MjRm
NzkuLmQyYjdlMTY2ODc5MGYxNmQ2YmY0ODQyOWVjMGMxZWM3ZjQzNWQ1YWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFn
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3Jr
U3RvcmFnZU1hbmFnZXIuY3BwCkBAIC0yNiwxOCArMjYsMjYgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJOZXR3b3JrU3RvcmFnZU1hbmFnZXIuaCIKIAorI2luY2x1ZGUgIkNhY2hl
U3RvcmFnZUVuZ2luZS5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0
cnkuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIuaCIKKyNpbmNsdWRlICJJ
REJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50LmgiCisjaW5jbHVkZSAiSURCU3RvcmFnZU1hbmFn
ZXIuaCIKKyNpbmNsdWRlICJJREJTdG9yYWdlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJMb2NhbFN0
b3JhZ2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk5ldHdvcmtQ
cm9jZXNzUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtTdG9yYWdlTWFuYWdlck1l
c3NhZ2VzLmgiCiAjaW5jbHVkZSAiT3JpZ2luU3RvcmFnZU1hbmFnZXIuaCIKKyNpbmNsdWRlICJR
dW90YU1hbmFnZXIuaCIKICNpbmNsdWRlICJTZXNzaW9uU3RvcmFnZU1hbmFnZXIuaCIKICNpbmNs
dWRlICJTdG9yYWdlQXJlYUJhc2UuaCIKICNpbmNsdWRlICJTdG9yYWdlQXJlYU1hcE1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFyZWFSZWdpc3RyeS5oIgogI2luY2x1ZGUgIldlYnNpdGVE
YXRhVHlwZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uaD4KICNpbmNsdWRlIDxwYWwvY3J5
cHRvL0NyeXB0b0RpZ2VzdC5oPgogI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgogI2luY2x1ZGUgPHd0
Zi9TdXNwZW5kYWJsZVdvcmtRdWV1ZS5oPgpAQCAtMTAwLDIyICsxMDgsMjggQEAgc3RhdGljIHZv
aWQgZGVsZXRlT3JpZ2luRmlsZUlmTmVjZXNzYXJ5KGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiAg
ICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZmlsZVBhdGgpOwogfQogCi1SZWY8TmV0d29y
a1N0b3JhZ2VNYW5hZ2VyPiBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZShQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21M
b2NhbFN0b3JhZ2VQYXRoKQorUmVmPE5ldHdvcmtTdG9yYWdlTWFuYWdlcj4gTmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyOjpjcmVhdGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBJUEM6OkNvbm5lY3Rp
b246OlVuaXF1ZUlEIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5n
JiBjdXN0b21Mb2NhbFN0b3JhZ2VQYXRoLCBjb25zdCBTdHJpbmcmIGN1c3RvbUlEQlN0b3JhZ2VQ
YXRoLCBjb25zdCBTdHJpbmcmIGN1c3RvbUNhY2hlU3RvcmFnZVBhdGgsIHVpbnQ2NF90IGRlZmF1
bHRPcmlnaW5RdW90YSwgdWludDY0X3QgZGVmYXVsdFRoaXJkUGFydHlPcmlnaW5RdW90YSkKIHsK
LSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXR3b3JrU3RvcmFnZU1hbmFnZXIoc2Vzc2lvbklE
LCBwYXRoLCBjdXN0b21Mb2NhbFN0b3JhZ2VQYXRoKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyKHNlc3Npb25JRCwgY29ubmVjdGlvbiwgcGF0aCwgY3Vz
dG9tTG9jYWxTdG9yYWdlUGF0aCwgY3VzdG9tSURCU3RvcmFnZVBhdGgsIGN1c3RvbUNhY2hlU3Rv
cmFnZVBhdGgsIGRlZmF1bHRPcmlnaW5RdW90YSwgZGVmYXVsdFRoaXJkUGFydHlPcmlnaW5RdW90
YSkpOwogfQogCi1OZXR3b3JrU3RvcmFnZU1hbmFnZXI6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcihQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5n
JiBjdXN0b21Mb2NhbFN0b3JhZ2VQYXRoKQorTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpOZXR3b3Jr
U3RvcmFnZU1hbmFnZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBJUEM6OkNvbm5lY3Rpb246
OlVuaXF1ZUlEIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBj
dXN0b21Mb2NhbFN0b3JhZ2VQYXRoLCBjb25zdCBTdHJpbmcmIGN1c3RvbUlEQlN0b3JhZ2VQYXRo
LCBjb25zdCBTdHJpbmcmIGN1c3RvbUNhY2hlU3RvcmFnZVBhdGgsIHVpbnQ2NF90IGRlZmF1bHRP
cmlnaW5RdW90YSwgdWludDY0X3QgZGVmYXVsdFRoaXJkUGFydHlPcmlnaW5RdW90YSkKICAgICA6
IG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKICAgICAsIG1fcXVldWUoU3VzcGVuZGFibGVXb3JrUXVl
dWU6OmNyZWF0ZSgiY29tLmFwcGxlLldlYktpdC5TdG9yYWdlIikpCisgICAgLCBtX2RlZmF1bHRP
cmlnaW5RdW90YShkZWZhdWx0T3JpZ2luUXVvdGEpCisgICAgLCBtX2RlZmF1bHRUaGlyZFBhcnR5
T3JpZ2luUXVvdGEoZGVmYXVsdFRoaXJkUGFydHlPcmlnaW5RdW90YSkKKyAgICAsIG1fcGFyZW50
Q29ubmVjdGlvbihjb25uZWN0aW9uKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7
CiAKLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0
aGlzIH0sIHBhdGggPSBwYXRoLmlzb2xhdGVkQ29weSgpLCBjdXN0b21Mb2NhbFN0b3JhZ2VQYXRo
ID0gY3Jvc3NUaHJlYWRDb3B5KGN1c3RvbUxvY2FsU3RvcmFnZVBhdGgpXSgpIG11dGFibGUgewor
ICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMg
fSwgcGF0aCA9IHBhdGguaXNvbGF0ZWRDb3B5KCksIGN1c3RvbUxvY2FsU3RvcmFnZVBhdGggPSBj
cm9zc1RocmVhZENvcHkoY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCksIGN1c3RvbUlEQlN0b3JhZ2VQ
YXRoID0gY3Jvc3NUaHJlYWRDb3B5KGN1c3RvbUlEQlN0b3JhZ2VQYXRoKSwgY3VzdG9tQ2FjaGVT
dG9yYWdlUGF0aCA9IGNyb3NzVGhyZWFkQ29weShjdXN0b21DYWNoZVN0b3JhZ2VQYXRoKV0oKSBt
dXRhYmxlIHsKICAgICAgICAgbV9maWxlU3lzdGVtU3RvcmFnZUhhbmRsZVJlZ2lzdHJ5ID0gbWFr
ZVVuaXF1ZTxGaWxlU3lzdGVtU3RvcmFnZUhhbmRsZVJlZ2lzdHJ5PigpOwogICAgICAgICBtX3N0
b3JhZ2VBcmVhUmVnaXN0cnkgPSBtYWtlVW5pcXVlPFN0b3JhZ2VBcmVhUmVnaXN0cnk+KCk7Cisg
ICAgICAgIG1faWRiU3RvcmFnZVJlZ2lzdHJ5ID0gbWFrZVVuaXF1ZTxJREJTdG9yYWdlUmVnaXN0
cnk+KCk7CiAgICAgICAgIG1fcGF0aCA9IHBhdGg7CiAgICAgICAgIG1fY3VzdG9tTG9jYWxTdG9y
YWdlUGF0aCA9IGN1c3RvbUxvY2FsU3RvcmFnZVBhdGg7CisgICAgICAgIG1fY3VzdG9tSURCU3Rv
cmFnZVBhdGggPSBjdXN0b21JREJTdG9yYWdlUGF0aDsKKyAgICAgICAgbV9jdXN0b21DYWNoZVN0
b3JhZ2VQYXRoID0gY3VzdG9tQ2FjaGVTdG9yYWdlUGF0aDsKICAgICAgICAgaWYgKCFtX3BhdGgu
aXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBhdXRvIHNhbHRQYXRoID0gRmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fcGF0aCwgInNhbHQiKTsKICAgICAgICAgICAgIG1fc2Fs
dCA9IHZhbHVlT3JEZWZhdWx0KEZpbGVTeXN0ZW06OnJlYWRPck1ha2VTYWx0KHNhbHRQYXRoKSk7
CkBAIC0xMzEsNyArMTQ1LDEwIEBAIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6fk5ldHdvcmtTdG9y
YWdlTWFuYWdlcigpCiAKIGJvb2wgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjYW5IYW5kbGVUeXBl
cyhPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB0eXBlcykKIHsKLSAgICByZXR1cm4gdHlwZXMu
Y29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpMb2NhbFN0b3JhZ2UpIHx8IHR5cGVzLmNvbnRhaW5z
KFdlYnNpdGVEYXRhVHlwZTo6U2Vzc2lvblN0b3JhZ2UpIHx8IHR5cGVzLmNvbnRhaW5zKFdlYnNp
dGVEYXRhVHlwZTo6RmlsZVN5c3RlbSk7CisgICAgcmV0dXJuIHR5cGVzLmNvbnRhaW5zKFdlYnNp
dGVEYXRhVHlwZTo6TG9jYWxTdG9yYWdlKQorICAgICAgICB8fCB0eXBlcy5jb250YWlucyhXZWJz
aXRlRGF0YVR5cGU6OlNlc3Npb25TdG9yYWdlKQorICAgICAgICB8fCB0eXBlcy5jb250YWlucyhX
ZWJzaXRlRGF0YVR5cGU6OkZpbGVTeXN0ZW0pCisgICAgICAgIHx8IHR5cGVzLmNvbnRhaW5zKFdl
YnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKTsKIH0KIAogdm9pZCBOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6OmNsb3NlKCkKQEAgLTE3MCw2ICsxODcsNyBAQCB2b2lkIE5ldHdvcmtTdG9y
YWdlTWFuYWdlcjo6c3RvcFJlY2VpdmluZ01lc3NhZ2VGcm9tQ29ubmVjdGlvbihJUEM6OkNvbm5l
Y3Rpb24mCiAKICAgICBjb25uZWN0aW9uLnJlbW92ZVdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihN
ZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOwog
ICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMg
fSwgY29ubmVjdGlvbiA9IGNvbm5lY3Rpb24udW5pcXVlSUQoKV0oKSBtdXRhYmxlIHsKKyAgICAg
ICAgbV9pZGJTdG9yYWdlUmVnaXN0cnktPnJlbW92ZUNvbm5lY3Rpb25Ub0NsaWVudChjb25uZWN0
aW9uKTsKICAgICAgICAgbV9sb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2Vycy5yZW1vdmVJZihbJl0o
YXV0byYgZW50cnkpIHsKICAgICAgICAgICAgIGF1dG8mIG1hbmFnZXIgPSBlbnRyeS52YWx1ZTsK
ICAgICAgICAgICAgIG1hbmFnZXItPmNvbm5lY3Rpb25DbG9zZWQoY29ubmVjdGlvbik7CkBAIC0y
MjIsNyArMjQwLDE0IEBAIE9yaWdpblN0b3JhZ2VNYW5hZ2VyJiBOZXR3b3JrU3RvcmFnZU1hbmFn
ZXI6OmxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIoY29uc3QgV2ViCiAgICAgICAgICAgICAgICAg
d3JpdGVPcmlnaW5Ub0ZpbGVJZk5lY2Vzc2FyeShvcmlnaW5GaWxlUGF0aChvcmlnaW5EaXJlY3Rv
cnkpLCBvcmlnaW4pOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8T3JpZ2luU3RvcmFnZU1hbmFnZXI+KFdURk1vdmUob3JpZ2luRGlyZWN0b3J5
KSwgTG9jYWxTdG9yYWdlTWFuYWdlcjo6bG9jYWxTdG9yYWdlRmlsZVBhdGgobV9jdXN0b21Mb2Nh
bFN0b3JhZ2VQYXRoLCBvcmlnaW4pKTsKKyAgICAgICAgYXV0byBsb2NhbFN0b3JhZ2VQYXRoID0g
TG9jYWxTdG9yYWdlTWFuYWdlcjo6bG9jYWxTdG9yYWdlRmlsZVBhdGgobV9jdXN0b21Mb2NhbFN0
b3JhZ2VQYXRoLCBvcmlnaW4pOworICAgICAgICBhdXRvIGlkYlN0b3JhZ2VQYXRoID0gSURCU3Rv
cmFnZU1hbmFnZXI6OmlkYlN0b3JhZ2VPcmlnaW5EaXJlY3RvcnkobV9jdXN0b21JREJTdG9yYWdl
UGF0aCwgb3JpZ2luKTsKKyAgICAgICAgYXV0byBjYWNoZVN0b3JhZ2VQYXRoID0gQ2FjaGVTdG9y
YWdlOjpFbmdpbmU6OnN0b3JhZ2VQYXRoKG1fY3VzdG9tQ2FjaGVTdG9yYWdlUGF0aCwgb3JpZ2lu
KTsKKyAgICAgICAgdWludDY0X3QgcXVvdGEgPSBvcmlnaW4udG9wT3JpZ2luID09IG9yaWdpbi5j
bGllbnRPcmlnaW4gPyBtX2RlZmF1bHRPcmlnaW5RdW90YSA6IG1fZGVmYXVsdFRoaXJkUGFydHlP
cmlnaW5RdW90YTsKKyAgICAgICAgUXVvdGFNYW5hZ2VyOjpJbmNyZWFzZVF1b3RhRnVuY3Rpb24g
aW5jcmVhc2VRdW90YUZ1bmN0aW9uID0gW3Nlc3Npb25JRCA9IG1fc2Vzc2lvbklELCBvcmlnaW4s
IGNvbm5lY3Rpb24gPSBtX3BhcmVudENvbm5lY3Rpb25dIChhdXRvIGlkZW50aWZpZXIsIGF1dG8g
Y3VycmVudFF1b3RhLCBhdXRvIGN1cnJlbnRVc2FnZSwgYXV0byByZXF1ZXN0ZWRJbmNyZWFzZSkg
bXV0YWJsZSB7CisgICAgICAgICAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQoY29ubmVjdGlvbiwg
TWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkluY3JlYXNlUXVvdGEoc2Vzc2lvbklELCBv
cmlnaW4sIGlkZW50aWZpZXIsIGN1cnJlbnRRdW90YSwgY3VycmVudFVzYWdlLCByZXF1ZXN0ZWRJ
bmNyZWFzZSksIDApOworICAgICAgICB9OworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxPcmln
aW5TdG9yYWdlTWFuYWdlcj4ocXVvdGEsIFdURk1vdmUoaW5jcmVhc2VRdW90YUZ1bmN0aW9uKSwg
V1RGTW92ZShvcmlnaW5EaXJlY3RvcnkpLCBXVEZNb3ZlKGxvY2FsU3RvcmFnZVBhdGgpLCBXVEZN
b3ZlKGlkYlN0b3JhZ2VQYXRoKSwgV1RGTW92ZShjYWNoZVN0b3JhZ2VQYXRoKSk7CiAgICAgfSku
aXRlcmF0b3ItPnZhbHVlOwogfQogCkBAIC0yODIsNiArMzA3LDE2IEBAIHZvaWQgTmV0d29ya1N0
b3JhZ2VNYW5hZ2VyOjpjbGVhclN0b3JhZ2VGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjCiAgICAgfSk7CiB9CiAKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkaWRJ
bmNyZWFzZVF1b3RhKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBRdW90YUlu
Y3JlYXNlUmVxdWVzdElkZW50aWZpZXIgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gbmV3UXVvdGEpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIG1f
cXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgb3Jp
Z2luID0gY3Jvc3NUaHJlYWRDb3B5KG9yaWdpbiksIGlkZW50aWZpZXIsIG5ld1F1b3RhXSgpIG11
dGFibGUgeworICAgICAgICBpZiAoYXV0byBtYW5hZ2VyID0gbV9sb2NhbE9yaWdpblN0b3JhZ2VN
YW5hZ2Vycy5nZXQob3JpZ2luKSkKKyAgICAgICAgICAgIG1hbmFnZXItPnF1b3RhTWFuYWdlcigp
LmRpZEluY3JlYXNlUXVvdGEoaWRlbnRpZmllciwgbmV3UXVvdGEpOworICAgIH0pOworfQorCiB2
b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZmlsZVN5c3RlbUdldERpcmVjdG9yeShJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2lu
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5k
bGVJZGVudGlmaWVyLCBGaWxlU3lzdGVtU3RvcmFnZUVycm9yPik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CkBAIC00NTIsNiArNDg3LDkg
QEAgSGFzaFNldDxXZWJDb3JlOjpDbGllbnRPcmlnaW4+IE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6
Z2V0QWxsT3JpZ2lucygpCiAgICAgZm9yIChhdXRvJiBvcmlnaW4gOiBMb2NhbFN0b3JhZ2VNYW5h
Z2VyOjpvcmlnaW5zT2ZMb2NhbFN0b3JhZ2VEYXRhKG1fY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCkp
CiAgICAgICAgIGFsbE9yaWdpbnMuYWRkKFdlYkNvcmU6OkNsaWVudE9yaWdpbiB7IG9yaWdpbiwg
b3JpZ2luIH0pOwogCisgICAgZm9yIChhdXRvJiBvcmlnaW4gOiBJREJTdG9yYWdlTWFuYWdlcjo6
b3JpZ2luc09mSURCU3RvcmFnZURhdGEobV9jdXN0b21JREJTdG9yYWdlUGF0aCkpCisgICAgICAg
IGFsbE9yaWdpbnMuYWRkKG9yaWdpbik7CisKICAgICByZXR1cm4gYWxsT3JpZ2luczsKIH0KIApA
QCAtNTc5LDEyICs2MTcsMTcgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Om1vdmVEYXRh
KGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgc291cmNlLAogICAgICAgICBhdXRv
IHRhcmdldE9yaWdpbiA9IFdlYkNvcmU6OkNsaWVudE9yaWdpbiB7IHRhcmdldCwgdGFyZ2V0IH07
CiAgICAgICAgIAogICAgICAgICAvLyBDbGVhciBleGlzdGluZyBkYXRhIG9mIHRhcmdldCBvcmln
aW4uCi0gICAgICAgIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHR5cGVzID0geyBXZWJzaXRl
RGF0YVR5cGU6OkZpbGVTeXN0ZW0sIFdlYnNpdGVEYXRhVHlwZTo6TG9jYWxTdG9yYWdlLCBXZWJz
aXRlRGF0YVR5cGU6OlNlc3Npb25TdG9yYWdlICB9OworICAgICAgICBPcHRpb25TZXQ8V2Vic2l0
ZURhdGFUeXBlPiB0eXBlcyA9IHsKKyAgICAgICAgICAgIFdlYnNpdGVEYXRhVHlwZTo6RmlsZVN5
c3RlbSwKKyAgICAgICAgICAgIFdlYnNpdGVEYXRhVHlwZTo6TG9jYWxTdG9yYWdlLAorICAgICAg
ICAgICAgV2Vic2l0ZURhdGFUeXBlOjpTZXNzaW9uU3RvcmFnZSwKKyAgICAgICAgICAgIFdlYnNp
dGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzCisgICAgICAgIH07CiAgICAgICAgIGxvY2Fs
T3JpZ2luU3RvcmFnZU1hbmFnZXIodGFyZ2V0T3JpZ2luKS5kZWxldGVEYXRhKHR5cGVzLCAtV2Fs
bFRpbWU6OmluZmluaXR5KCkpOwogICAgICAgICByZW1vdmVPcmlnaW5TdG9yYWdlTWFuYWdlcklm
UG9zc2libGUodGFyZ2V0T3JpZ2luKTsKIAogICAgICAgICAvLyBNb3ZlIGRhdGEgZnJvbSBzb3Vy
Y2Ugb3JpZ2luIHRvIHRhcmdldCBvcmlnaW4uCi0gICAgICAgIGxvY2FsT3JpZ2luU3RvcmFnZU1h
bmFnZXIoc291cmNlT3JpZ2luKS5tb3ZlRGF0YShvcmlnaW5EaXJlY3RvcnlQYXRoKG1fcGF0aCwg
dGFyZ2V0T3JpZ2luLCBtX3NhbHQpLCBMb2NhbFN0b3JhZ2VNYW5hZ2VyOjpsb2NhbFN0b3JhZ2VG
aWxlUGF0aChtX2N1c3RvbUxvY2FsU3RvcmFnZVBhdGgsIHRhcmdldE9yaWdpbikpOworICAgICAg
ICBsb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2VyKHNvdXJjZU9yaWdpbikubW92ZURhdGEob3JpZ2lu
RGlyZWN0b3J5UGF0aChtX3BhdGgsIHRhcmdldE9yaWdpbiwgbV9zYWx0KSwgTG9jYWxTdG9yYWdl
TWFuYWdlcjo6bG9jYWxTdG9yYWdlRmlsZVBhdGgobV9jdXN0b21Mb2NhbFN0b3JhZ2VQYXRoLCB0
YXJnZXRPcmlnaW4pLCBJREJTdG9yYWdlTWFuYWdlcjo6aWRiU3RvcmFnZU9yaWdpbkRpcmVjdG9y
eShtX2N1c3RvbUlEQlN0b3JhZ2VQYXRoLCB0YXJnZXRPcmlnaW4pKTsKICAgICAgICAgcmVtb3Zl
T3JpZ2luU3RvcmFnZU1hbmFnZXJJZlBvc3NpYmxlKHNvdXJjZU9yaWdpbik7CiAKICAgICAgICAg
UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKQEAg
LTU5OSw2ICs2NDIsOCBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6c3VzcGVuZChDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZQogICAgICAgICBmb3IgKGF1
dG8mIG1hbmFnZXIgOiBtX2xvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXJzLnZhbHVlcygpKSB7CiAg
ICAgICAgICAgICBpZiAoYXV0byBsb2NhbFN0b3JhZ2VNYW5hZ2VyID0gbWFuYWdlci0+ZXhpc3Rp
bmdMb2NhbFN0b3JhZ2VNYW5hZ2VyKCkpCiAgICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlTWFu
YWdlci0+c3luY0xvY2FsU3RvcmFnZSgpOworICAgICAgICAgICAgaWYgKGF1dG8gaWRiU3RvcmFn
ZU1hbmFnZXIgPSBtYW5hZ2VyLT5leGlzdGluZ0lEQlN0b3JhZ2VNYW5hZ2VyKCkpCisgICAgICAg
ICAgICAgICAgaWRiU3RvcmFnZU1hbmFnZXItPnN0b3BEYXRhYmFzZUFjdGl2aXRpZXNGb3JTdXNw
ZW5kKCk7CiAgICAgICAgIH0KICAgICB9LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9
CkBAIC02MzYsNiArNjgxLDUyIEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpzeW5jTG9j
YWxTdG9yYWdlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0CiAgICAgfSk7CiB9
CiAKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpyZWdpc3RlclRlbXBvcmFyeUJsb2JGaWxl
UGF0aHMoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
ZmlsZVBhdGhzKQoreworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBtX3F1
ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNvbm5l
Y3Rpb25JRCA9IGNvbm5lY3Rpb24udW5pcXVlSUQoKSwgZmlsZVBhdGhzID0gY3Jvc3NUaHJlYWRD
b3B5KGZpbGVQYXRocyldIHsKKyAgICAgICAgYXV0byYgdGVtcG9yYXJ5QmxvYlBhdGhzID0gbV90
ZW1wb3JhcnlCbG9iUGF0aHNCeUNvbm5lY3Rpb24uZW5zdXJlKGNvbm5lY3Rpb25JRCwgW10gewor
ICAgICAgICAgICAgcmV0dXJuIEhhc2hTZXQ8U3RyaW5nPiB7IH07CisgICAgICAgIH0pLml0ZXJh
dG9yLT52YWx1ZTsKKyAgICAgICAgdGVtcG9yYXJ5QmxvYlBhdGhzLmFkZChmaWxlUGF0aHMuYmVn
aW4oKSwgZmlsZVBhdGhzLmVuZCgpKTsKKyAgICB9KTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFn
ZU1hbmFnZXI6OnJlcXVlc3RTcGFjZShjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdp
biwgdWludDY0X3Qgc2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgbV9x
dWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBvcmln
aW4gPSBjcm9zc1RocmVhZENvcHkob3JpZ2luKSwgc2l6ZSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgbG9jYWxPcmln
aW5TdG9yYWdlTWFuYWdlcihvcmlnaW4pLnF1b3RhTWFuYWdlcigpLnJlcXVlc3RTcGFjZShzaXpl
LCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byBk
ZWNpc2lvbikgbXV0YWJsZSB7CisgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2go
W2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGRlY2lzaW9u
XSgpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGRlY2lzaW9u
ID09IFF1b3RhTWFuYWdlcjo6RGVjaXNpb246OkdyYW50KTsKKyAgICAgICAgICAgIH0pOworICAg
ICAgICB9KTsKKyAgICB9KTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnJlc2V0
UXVvdGFGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgbV9xdWV1ZS0+
ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAg
ICBmb3IgKGF1dG8mIG1hbmFnZXIgOiBtX2xvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXJzLnZhbHVl
cygpKQorICAgICAgICAgICAgbWFuYWdlci0+cXVvdGFNYW5hZ2VyKCkucmVzZXRRdW90YUZvclRl
c3RpbmcoKTsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKKyAgICB9KTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6
OnJlc2V0UXVvdGFVcGRhdGVkQmFzZWRPblVzYWdlRm9yVGVzdGluZyhjb25zdCBXZWJDb3JlOjpD
bGllbnRPcmlnaW4mIG9yaWdpbikKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwor
CisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhp
cyB9LCBvcmlnaW4gPSBjcm9zc1RocmVhZENvcHkob3JpZ2luKV0oKSBtdXRhYmxlIHsKKyAgICAg
ICAgaWYgKGF1dG8gbWFuYWdlciA9IG1fbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcnMuZ2V0KG9y
aWdpbikpCisgICAgICAgICAgICBtYW5hZ2VyLT5xdW90YU1hbmFnZXIoKS5yZXNldFF1b3RhVXBk
YXRlZEJhc2VkT25Vc2FnZUZvclRlc3RpbmcoKTsKKyAgICB9KTsKK30KKwogdm9pZCBOZXR3b3Jr
U3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb1N0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgV2ViQ29yZTo6U3RvcmFnZVR5cGUgdHlwZSwgU3RvcmFnZUFyZWFNYXBJZGVudGlm
aWVyIHNvdXJjZUlkZW50aWZpZXIsIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyIG5hbWVzcGFj
ZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBcmVhSWRlbnRpZmllciwgSGFzaE1hcDxTdHJpbmcsIFN0
cmluZz4sIHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1
bkxvb3A6OmlzTWFpbigpKTsKQEAgLTcyMyw1ICs4MTQsMTk1IEBAIHZvaWQgTmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyOjpjbGVhcihJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFN0b3JhZ2VBcmVh
SWRlbnRpCiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAordm9pZCBOZXR3b3JrU3RvcmFn
ZU1hbmFnZXI6Om9wZW5EYXRhYmFzZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0
IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkKK3sKKyAgICBhdXRvJiBjb25u
ZWN0aW9uVG9DbGllbnQgPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+ZW5zdXJlQ29ubmVjdGlvblRv
Q2xpZW50KGNvbm5lY3Rpb24udW5pcXVlSUQoKSwgcmVxdWVzdERhdGEucmVxdWVzdElkZW50aWZp
ZXIoKS5jb25uZWN0aW9uSWRlbnRpZmllcigpKTsKKyAgICBsb2NhbE9yaWdpblN0b3JhZ2VNYW5h
Z2VyKHJlcXVlc3REYXRhLmRhdGFiYXNlSWRlbnRpZmllcigpLm9yaWdpbigpKS5pZGJTdG9yYWdl
TWFuYWdlcigqbV9pZGJTdG9yYWdlUmVnaXN0cnkpLm9wZW5EYXRhYmFzZShjb25uZWN0aW9uVG9D
bGllbnQsIHJlcXVlc3REYXRhKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Om9w
ZW5EQlJlcXVlc3RDYW5jZWxsZWQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVl
c3REYXRhKQoreworICAgIGxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIocmVxdWVzdERhdGEuZGF0
YWJhc2VJZGVudGlmaWVyKCkub3JpZ2luKCkpLmlkYlN0b3JhZ2VNYW5hZ2VyKCptX2lkYlN0b3Jh
Z2VSZWdpc3RyeSkub3BlbkRCUmVxdWVzdENhbmNlbGxlZChyZXF1ZXN0RGF0YSk7Cit9CisKK3Zv
aWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVEYXRhYmFzZShJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkK
K3sKKyAgICBhdXRvJiBjb25uZWN0aW9uVG9DbGllbnQgPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+
ZW5zdXJlQ29ubmVjdGlvblRvQ2xpZW50KGNvbm5lY3Rpb24udW5pcXVlSUQoKSwgcmVxdWVzdERh
dGEucmVxdWVzdElkZW50aWZpZXIoKS5jb25uZWN0aW9uSWRlbnRpZmllcigpKTsKKyAgICBsb2Nh
bE9yaWdpblN0b3JhZ2VNYW5hZ2VyKHJlcXVlc3REYXRhLmRhdGFiYXNlSWRlbnRpZmllcigpLm9y
aWdpbigpKS5pZGJTdG9yYWdlTWFuYWdlcigqbV9pZGJTdG9yYWdlUmVnaXN0cnkpLmRlbGV0ZURh
dGFiYXNlKGNvbm5lY3Rpb25Ub0NsaWVudCwgcmVxdWVzdERhdGEpOworfQorCit2b2lkIE5ldHdv
cmtTdG9yYWdlTWFuYWdlcjo6ZXN0YWJsaXNoVHJhbnNhY3Rpb24odWludDY0X3QgZGF0YWJhc2VD
b25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25JbmZvJiB0
cmFuc2FjdGlvbkluZm8pCit7CisgICAgaWYgKGF1dG8gY29ubmVjdGlvbiA9IG1faWRiU3RvcmFn
ZVJlZ2lzdHJ5LT5jb25uZWN0aW9uKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpKQorICAg
ICAgICBjb25uZWN0aW9uLT5lc3RhYmxpc2hUcmFuc2FjdGlvbih0cmFuc2FjdGlvbkluZm8pOwor
fQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGF0YWJhc2VDb25uZWN0aW9uUGVuZGlu
Z0Nsb3NlKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpCit7CisgICAgaWYg
KGF1dG8gY29ubmVjdGlvbiA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT5jb25uZWN0aW9uKGRhdGFi
YXNlQ29ubmVjdGlvbklkZW50aWZpZXIpKQorICAgICAgICBjb25uZWN0aW9uLT5jb25uZWN0aW9u
UGVuZGluZ0Nsb3NlRnJvbUNsaWVudCgpOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdl
cjo6ZGF0YWJhc2VDb25uZWN0aW9uQ2xvc2VkKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklk
ZW50aWZpZXIpCit7CisgICAgaWYgKGF1dG8gY29ubmVjdGlvbiA9IG1faWRiU3RvcmFnZVJlZ2lz
dHJ5LT5jb25uZWN0aW9uKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpKQorICAgICAgICBj
b25uZWN0aW9uLT5jb25uZWN0aW9uQ2xvc2VkRnJvbUNsaWVudCgpOworfQorCit2b2lkIE5ldHdv
cmtTdG9yYWdlTWFuYWdlcjo6YWJvcnRPcGVuQW5kVXBncmFkZU5lZWRlZCh1aW50NjRfdCBkYXRh
YmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50
aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcikKK3sKKyAgICBpZiAoYXV0byB0cmFuc2FjdGlv
biA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT50cmFuc2FjdGlvbih0cmFuc2FjdGlvbklkZW50aWZp
ZXIpKQorICAgICAgICB0cmFuc2FjdGlvbi0+YWJvcnRXaXRob3V0Q2FsbGJhY2soKTsKKworICAg
IGlmIChhdXRvIGNvbm5lY3Rpb24gPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+Y29ubmVjdGlvbihk
YXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKSkKKyAgICAgICAgY29ubmVjdGlvbi0+Y29ubmVj
dGlvbkNsb3NlZEZyb21DbGllbnQoKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6
OmRpZEZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRl
bnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRl
bnRpZmllciwgY29uc3QgV2ViQ29yZTo6SW5kZXhlZERCOjpDb25uZWN0aW9uQ2xvc2VkT25CZWhh
bGZPZlNlcnZlciBjb25uZWN0aW9uQ2xvc2VkKQoreworICAgIGlmIChhdXRvIGNvbm5lY3Rpb24g
PSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+Y29ubmVjdGlvbihkYXRhYmFzZUNvbm5lY3Rpb25JZGVu
dGlmaWVyKSkKKyAgICAgICAgY29ubmVjdGlvbi0+ZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudChy
ZXF1ZXN0SWRlbnRpZmllciwgY29ubmVjdGlvbkNsb3NlZCk7Cit9CisKK3ZvaWQgTmV0d29ya1N0
b3JhZ2VNYW5hZ2VyOjphYm9ydFRyYW5zYWN0aW9uKGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNl
SWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKQoreworICAgIGlmIChhdXRvIHRyYW5z
YWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPnRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRl
bnRpZmllcikpCisgICAgICAgIHRyYW5zYWN0aW9uLT5hYm9ydCgpOworfQorCit2b2lkIE5ldHdv
cmtTdG9yYWdlTWFuYWdlcjo6Y29tbWl0VHJhbnNhY3Rpb24oY29uc3QgV2ViQ29yZTo6SURCUmVz
b3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IHBlbmRpbmdS
ZXF1ZXN0Q291bnQpCit7CisgICAgaWYgKGF1dG8gdHJhbnNhY3Rpb24gPSBtX2lkYlN0b3JhZ2VS
ZWdpc3RyeS0+dHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZGVudGlmaWVyKSkKKyAgICAgICAgdHJh
bnNhY3Rpb24tPmNvbW1pdChwZW5kaW5nUmVxdWVzdENvdW50KTsKK30KKwordm9pZCBOZXR3b3Jr
U3RvcmFnZU1hbmFnZXI6OmRpZEZpbmlzaEhhbmRsaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9u
KHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OklE
QlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKQoreworICAgIGlmIChh
dXRvIGNvbm5lY3Rpb24gPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+Y29ubmVjdGlvbihkYXRhYmFz
ZUNvbm5lY3Rpb25JZGVudGlmaWVyKSkKKyAgICAgICAgY29ubmVjdGlvbi0+ZGlkRmluaXNoSGFu
ZGxpbmdWZXJzaW9uQ2hhbmdlKHRyYW5zYWN0aW9uSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgTmV0
d29ya1N0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJS
ZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IFdlYkNvcmU6OklEQk9iamVjdFN0b3JlSW5m
byYgb2JqZWN0U3RvcmVJbmZvKQoreworICAgIGlmIChhdXRvIHRyYW5zYWN0aW9uID0gbV9pZGJT
dG9yYWdlUmVnaXN0cnktPnRyYW5zYWN0aW9uKHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRp
ZmllcigpKSkgeworICAgICAgICBBU1NFUlQodHJhbnNhY3Rpb24tPmlzVmVyc2lvbkNoYW5nZSgp
KTsKKyAgICAgICAgdHJhbnNhY3Rpb24tPmNyZWF0ZU9iamVjdFN0b3JlKHJlcXVlc3REYXRhLCBv
YmplY3RTdG9yZUluZm8pOworICAgIH0KK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6
OmRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0
RGF0YSwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUpCit7CisgICAgaWYgKGF1dG8gdHJh
bnNhY3Rpb24gPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+dHJhbnNhY3Rpb24ocmVxdWVzdERhdGEu
dHJhbnNhY3Rpb25JZGVudGlmaWVyKCkpKSB7CisgICAgICAgIEFTU0VSVCh0cmFuc2FjdGlvbi0+
aXNWZXJzaW9uQ2hhbmdlKCkpOworICAgICAgICB0cmFuc2FjdGlvbi0+ZGVsZXRlT2JqZWN0U3Rv
cmUocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlTmFtZSk7CisgICAgfQorfQorCit2b2lkIE5ldHdv
cmtTdG9yYWdlTWFuYWdlcjo6cmVuYW1lT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6SURCUmVx
dWVzdERhdGEmIHJlcXVlc3REYXRhLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgbmV3TmFtZSkKK3sKKyAgICBpZiAoYXV0byB0cmFuc2FjdGlvbiA9IG1faWRi
U3RvcmFnZVJlZ2lzdHJ5LT50cmFuc2FjdGlvbihyZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50
aWZpZXIoKSkpIHsKKyAgICAgICAgQVNTRVJUKHRyYW5zYWN0aW9uLT5pc1ZlcnNpb25DaGFuZ2Uo
KSk7CisgICAgICAgIHRyYW5zYWN0aW9uLT5yZW5hbWVPYmplY3RTdG9yZShyZXF1ZXN0RGF0YSwg
b2JqZWN0U3RvcmVJZGVudGlmaWVyLCBuZXdOYW1lKTsKKyAgICB9Cit9CisKK3ZvaWQgTmV0d29y
a1N0b3JhZ2VNYW5hZ2VyOjpjbGVhck9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVl
c3REYXRhJiByZXF1ZXN0RGF0YSwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyKQorewor
ICAgIGlmIChhdXRvIHRyYW5zYWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPnRyYW5zYWN0
aW9uKHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpKSkKKyAgICAgICAgdHJhbnNh
Y3Rpb24tPmNsZWFyT2JqZWN0U3RvcmUocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVJbmRleChjb25zdCBX
ZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IFdlYkNvcmU6OklEQklu
ZGV4SW5mbyYgaW5kZXhJbmZvKQoreworICAgIGlmIChhdXRvIHRyYW5zYWN0aW9uID0gbV9pZGJT
dG9yYWdlUmVnaXN0cnktPnRyYW5zYWN0aW9uKHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRp
ZmllcigpKSkKKyAgICAgICAgdHJhbnNhY3Rpb24tPmNyZWF0ZUluZGV4KHJlcXVlc3REYXRhLCBp
bmRleEluZm8pOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlSW5kZXgo
Y29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCB1aW50NjRfdCBvYmpl
Y3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lKQoreworICAgIGlmIChh
dXRvIHRyYW5zYWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPnRyYW5zYWN0aW9uKHJlcXVl
c3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpKSkKKyAgICAgICAgdHJhbnNhY3Rpb24tPmRl
bGV0ZUluZGV4KHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4TmFtZSk7
Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpyZW5hbWVJbmRleChjb25zdCBXZWJD
b3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRl
bnRpZmllciwgdWludDY0X3QgaW5kZXhJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUp
Cit7CisgICAgaWYgKGF1dG8gdHJhbnNhY3Rpb24gPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+dHJh
bnNhY3Rpb24ocmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCkpKQorICAgICAgICB0
cmFuc2FjdGlvbi0+cmVuYW1lSW5kZXgocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmll
ciwgaW5kZXhJZGVudGlmaWVyLCBuZXdOYW1lKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1h
bmFnZXI6OnB1dE9yQWRkKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgV2ViQ29y
ZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBXZWJDb3JlOjpJREJLZXlEYXRh
JiBrZXlEYXRhLCBjb25zdCBXZWJDb3JlOjpJREJWYWx1ZSYgdmFsdWUsIFdlYkNvcmU6OkluZGV4
ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlIG92ZXJ3cml0ZU1vZGUpCit7CisgICAgaWYg
KHZhbHVlLmJsb2JVUkxzKCkuc2l6ZSgpICE9IHZhbHVlLmJsb2JGaWxlUGF0aHMoKS5zaXplKCkp
IHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRkFVTFQoSW5kZXhlZERCLCAiTmV0d29ya1N0b3JhZ2VN
YW5hZ2VyOjpwdXRPckFkZDogTnVtYmVyIG9mIGJsb2IgVVJMcyBkb2Vzbid0IG1hdGNoIHRoZSBu
dW1iZXIgb2YgYmxvYiBmaWxlIHBhdGhzLiIpOworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFZhbGlkYXRlIHRlbXBvcmFyeSBi
bG9iIHBhdGhzIGluIHx2YWx1ZXwgdG8gbWFrZSBzdXJlIHRoZXkgYmVsb25nIHRvIHRoZSBzb3Vy
Y2UgcHJvY2Vzcy4KKyAgICBpZiAoIXZhbHVlLmJsb2JGaWxlUGF0aHMoKS5pc0VtcHR5KCkpIHsK
KyAgICAgICAgYXV0byBpdCA9IG1fdGVtcG9yYXJ5QmxvYlBhdGhzQnlDb25uZWN0aW9uLmZpbmQo
Y29ubmVjdGlvbi51bmlxdWVJRCgpKTsKKyAgICAgICAgaWYgKGl0ID09IG1fdGVtcG9yYXJ5Qmxv
YlBhdGhzQnlDb25uZWN0aW9uLmVuZCgpKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19GQVVM
VChJbmRleGVkREIsICJOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnB1dE9yQWRkOiBJREJWYWx1ZSBj
b250YWlucyBibG9iIHBhdGhzIGJ1dCBub25lIGFyZSBhbGxvd2VkIGZvciB0aGlzIHByb2Nlc3Mi
KTsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKKyAgICAgICAgYXV0byYgdGVtcG9yYXJ5QmxvYlBhdGhzRm9yQ29ubmVj
dGlvbiA9IGl0LT52YWx1ZTsKKyAgICAgICAgZm9yIChhdXRvJiBibG9iRmlsZVBhdGggOiB2YWx1
ZS5ibG9iRmlsZVBhdGhzKCkpIHsKKyAgICAgICAgICAgIGlmICghdGVtcG9yYXJ5QmxvYlBhdGhz
Rm9yQ29ubmVjdGlvbi5yZW1vdmUoYmxvYkZpbGVQYXRoKSkgeworICAgICAgICAgICAgICAgIFJF
TEVBU0VfTE9HX0ZBVUxUKEluZGV4ZWREQiwgIk5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6cHV0T3JB
ZGQ6IEJsb2IgcGF0aCB3YXMgbm90IGNyZWF0ZWQgZm9yIHRoaXMgV2ViUHJvY2VzcyIpOworICAg
ICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChhdXRvIHRyYW5z
YWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPnRyYW5zYWN0aW9uKHJlcXVlc3REYXRhLnRy
YW5zYWN0aW9uSWRlbnRpZmllcigpKSkKKyAgICAgICAgdHJhbnNhY3Rpb24tPnB1dE9yQWRkKHJl
cXVlc3REYXRhLCBrZXlEYXRhLCB2YWx1ZSwgb3ZlcndyaXRlTW9kZSk7Cit9CisKK3ZvaWQgTmV0
d29ya1N0b3JhZ2VNYW5hZ2VyOjpnZXRSZWNvcmQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERh
dGEmIHJlcXVlc3REYXRhLCBjb25zdCBXZWJDb3JlOjpJREJHZXRSZWNvcmREYXRhJiBnZXRSZWNv
cmREYXRhKQoreworICAgIGlmIChhdXRvIHRyYW5zYWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0
cnktPnRyYW5zYWN0aW9uKHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpKSkKKyAg
ICAgICAgdHJhbnNhY3Rpb24tPmdldFJlY29yZChyZXF1ZXN0RGF0YSwgZ2V0UmVjb3JkRGF0YSk7
Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpnZXRBbGxSZWNvcmRzKGNvbnN0IFdl
YkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgV2ViQ29yZTo6SURCR2V0
QWxsUmVjb3Jkc0RhdGEmIGdldEFsbFJlY29yZHNEYXRhKQoreworICAgIGlmIChhdXRvIHRyYW5z
YWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPnRyYW5zYWN0aW9uKHJlcXVlc3REYXRhLnRy
YW5zYWN0aW9uSWRlbnRpZmllcigpKSkKKyAgICAgICAgdHJhbnNhY3Rpb24tPmdldEFsbFJlY29y
ZHMocmVxdWVzdERhdGEsIGdldEFsbFJlY29yZHNEYXRhKTsKK30KKwordm9pZCBOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6OmdldENvdW50KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1
ZXN0RGF0YSwgY29uc3QgV2ViQ29yZTo6SURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5nZURhdGEpCit7
CisgICAgaWYgKGF1dG8gdHJhbnNhY3Rpb24gPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+dHJhbnNh
Y3Rpb24ocmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCkpKQorICAgICAgICB0cmFu
c2FjdGlvbi0+Z2V0Q291bnQocmVxdWVzdERhdGEsIGtleVJhbmdlRGF0YSk7Cit9CisKK3ZvaWQg
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVSZWNvcmQoY29uc3QgV2ViQ29yZTo6SURCUmVx
dWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBXZWJDb3JlOjpJREJLZXlSYW5nZURhdGEmIGtl
eVJhbmdlRGF0YSkKK3sKKyAgICBpZiAoYXV0byB0cmFuc2FjdGlvbiA9IG1faWRiU3RvcmFnZVJl
Z2lzdHJ5LT50cmFuc2FjdGlvbihyZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSkp
CisgICAgICAgIHRyYW5zYWN0aW9uLT5kZWxldGVSZWNvcmQocmVxdWVzdERhdGEsIGtleVJhbmdl
RGF0YSk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpvcGVuQ3Vyc29yKGNvbnN0
IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgV2ViQ29yZTo6SURC
Q3Vyc29ySW5mbyYgY3Vyc29ySW5mbykKK3sKKyAgICBpZiAoYXV0byB0cmFuc2FjdGlvbiA9IG1f
aWRiU3RvcmFnZVJlZ2lzdHJ5LT50cmFuc2FjdGlvbihyZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklk
ZW50aWZpZXIoKSkpCisgICAgICAgIHRyYW5zYWN0aW9uLT5vcGVuQ3Vyc29yKHJlcXVlc3REYXRh
LCBjdXJzb3JJbmZvKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Oml0ZXJhdGVD
dXJzb3IoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBX
ZWJDb3JlOjpJREJJdGVyYXRlQ3Vyc29yRGF0YSYgY3Vyc29yRGF0YSkKK3sKKyAgICBpZiAoYXV0
byB0cmFuc2FjdGlvbiA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT50cmFuc2FjdGlvbihyZXF1ZXN0
RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSkpCisgICAgICAgIHRyYW5zYWN0aW9uLT5pdGVy
YXRlQ3Vyc29yKHJlcXVlc3REYXRhLCBjdXJzb3JEYXRhKTsKK30KKwordm9pZCBOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6OmdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgcmVx
dWVzdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luKQorewor
ICAgIGF1dG8mIGNvbm5lY3Rpb25Ub0NsaWVudCA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT5lbnN1
cmVDb25uZWN0aW9uVG9DbGllbnQoY29ubmVjdGlvbi51bmlxdWVJRCgpLCByZXF1ZXN0SWRlbnRp
Zmllci5jb25uZWN0aW9uSWRlbnRpZmllcigpKTsKKyAgICBhdXRvIHJlc3VsdCA9IGxvY2FsT3Jp
Z2luU3RvcmFnZU1hbmFnZXIob3JpZ2luKS5pZGJTdG9yYWdlTWFuYWdlcigqbV9pZGJTdG9yYWdl
UmVnaXN0cnkpLmdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucygpOworICAgIGNvbm5lY3Rp
b25Ub0NsaWVudC5kaWRHZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMocmVxdWVzdElkZW50
aWZpZXIsIFdURk1vdmUocmVzdWx0KSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0
b3JhZ2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0
d29ya1N0b3JhZ2VNYW5hZ2VyLmgKaW5kZXggMTVjMDM3MmU2NmE3ZjYyODQ5OTI3ZjFjMzdmMTZh
Njk1ODdmNDUwMS4uOWMzZDJkNjQwNmZlZTliMmI0ZTZjYTI2ZjdiNjVmZTBjNzhiODNiZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9y
YWdlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9O
ZXR3b3JrU3RvcmFnZU1hbmFnZXIuaApAQCAtMzYsNiArMzYsOCBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvQ2xpZW50T3JpZ2luLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtSGFuZGxlSWRl
bnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJ
ZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JREJSZXNvdXJjZUlkZW50aWZpZXIuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL0luZGV4ZWREQi5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQu
aD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCkBAIC00NCwxOCArNDYsMzEgQEAgY2xhc3Mg
U2hhcmVkRmlsZUhhbmRsZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgSURCQ3Vy
c29ySW5mbzsKK2NsYXNzIElEQktleURhdGE7CitjbGFzcyBJREJJbmRleEluZm87CitjbGFzcyBJ
REJPYmplY3RTdG9yZUluZm87CitjbGFzcyBJREJSZXF1ZXN0RGF0YTsKK2NsYXNzIElEQlRyYW5z
YWN0aW9uSW5mbzsKK2NsYXNzIElEQlZhbHVlOwogc3RydWN0IENsaWVudE9yaWdpbjsKK3N0cnVj
dCBJREJHZXRBbGxSZWNvcmRzRGF0YTsKK3N0cnVjdCBJREJHZXRSZWNvcmREYXRhOworc3RydWN0
IElEQkdldEFsbFJlY29yZHNEYXRhOworc3RydWN0IElEQkl0ZXJhdGVDdXJzb3JEYXRhOworc3Ry
dWN0IElEQktleVJhbmdlRGF0YTsKIGVudW0gY2xhc3MgU3RvcmFnZVR5cGUgOiB1aW50OF90Owog
fQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVS
ZWdpc3RyeTsKK2NsYXNzIElEQlN0b3JhZ2VSZWdpc3RyeTsKIGNsYXNzIFN0b3JhZ2VBcmVhUmVn
aXN0cnk7CiAKIGNsYXNzIE5ldHdvcmtTdG9yYWdlTWFuYWdlciBmaW5hbCA6IHB1YmxpYyBJUEM6
OkNvbm5lY3Rpb246OldvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxOZXR3b3JrU3RvcmFnZU1hbmFnZXI+IGNyZWF0ZShQQUw6OlNlc3Npb25JRCwgY29u
c3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGN1c3RvbUxvY2FsU3RvcmFnZVBhdGgpOwor
ICAgIHN0YXRpYyBSZWY8TmV0d29ya1N0b3JhZ2VNYW5hZ2VyPiBjcmVhdGUoUEFMOjpTZXNzaW9u
SUQsIElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3Qg
U3RyaW5nJiBjdXN0b21Mb2NhbFN0b3JhZ2VQYXRoLCBjb25zdCBTdHJpbmcmIGN1c3RvbUlEQlN0
b3JhZ2VQYXRoLCBjb25zdCBTdHJpbmcmIGN1c3RvbUNhY2hlU3RvcmFnZVBhdGgsIHVpbnQ2NF90
IGRlZmF1bHRPcmlnaW5RdW90YSwgdWludDY0X3QgZGVmYXVsdFRoaXJkUGFydHlPcmlnaW5RdW90
YSk7CiAgICAgc3RhdGljIGJvb2wgY2FuSGFuZGxlVHlwZXMoT3B0aW9uU2V0PFdlYnNpdGVEYXRh
VHlwZT4pOwogCiAgICAgdm9pZCBzdGFydFJlY2VpdmluZ01lc3NhZ2VGcm9tQ29ubmVjdGlvbihJ
UEM6OkNvbm5lY3Rpb24mKTsKQEAgLTY0LDYgKzc5LDcgQEAgcHVibGljOgogICAgIFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbklEOyB9CiAgICAgdm9p
ZCBjbG9zZSgpOwogICAgIHZvaWQgY2xlYXJTdG9yYWdlRm9yVGVzdGluZyhDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgZGlkSW5jcmVhc2VRdW90YShjb25zdCBXZWJDb3Jl
OjpDbGllbnRPcmlnaW4mLCBRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIsIHN0ZDo6b3B0
aW9uYWw8dWludDY0X3Q+IG5ld1F1b3RhKTsKICAgICB2b2lkIGZldGNoRGF0YShPcHRpb25TZXQ8
V2Vic2l0ZURhdGFUeXBlPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2Vic2l0ZURh
dGE6OkVudHJ5PiYmKT4mJik7CiAgICAgdm9pZCBkZWxldGVEYXRhKE9wdGlvblNldDxXZWJzaXRl
RGF0YVR5cGU+LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBkZWxldGVEYXRhTW9kaWZpZWRT
aW5jZShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgV2FsbFRpbWUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CkBAIC03MywxNCArODksMTggQEAgcHVibGljOgogICAgIHZvaWQgcmVz
dW1lKCk7CiAgICAgdm9pZCBoYW5kbGVMb3dNZW1vcnlXYXJuaW5nKCk7CiAgICAgdm9pZCBzeW5j
TG9jYWxTdG9yYWdlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCByZWdp
c3RlclRlbXBvcmFyeUJsb2JGaWxlUGF0aHMoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgVmVjdG9y
PFN0cmluZz4mKTsKKyAgICB2b2lkIHJlcXVlc3RTcGFjZShjb25zdCBXZWJDb3JlOjpDbGllbnRP
cmlnaW4mLCB1aW50NjRfdCBzaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsK
KyAgICB2b2lkIHJlc2V0UXVvdGFGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CisgICAgdm9pZCByZXNldFF1b3RhVXBkYXRlZEJhc2VkT25Vc2FnZUZvclRlc3RpbmcoY29u
c3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJik7CiAKIHByaXZhdGU6CiAgICAgTmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmlu
ZyYgY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCk7CisgICAgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyKFBB
TDo6U2Vzc2lvbklELCBJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBjb25zdCBTdHJpbmcmIHBh
dGgsIGNvbnN0IFN0cmluZyYgY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCwgY29uc3QgU3RyaW5nJiBj
dXN0b21JREJTdG9yYWdlUGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21DYWNoZVN0b3JhZ2VQYXRo
LCB1aW50NjRfdCBkZWZhdWx0T3JpZ2luUXVvdGEsIHVpbnQ2NF90IGRlZmF1bHRUaGlyZFBhcnR5
T3JpZ2luUXVvdGEpOwogICAgIH5OZXR3b3JrU3RvcmFnZU1hbmFnZXIoKTsKICAgICBPcmlnaW5T
dG9yYWdlTWFuYWdlciYgbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcihjb25zdCBXZWJDb3JlOjpD
bGllbnRPcmlnaW4mKTsKICAgICBib29sIHJlbW92ZU9yaWdpblN0b3JhZ2VNYW5hZ2VySWZQb3Nz
aWJsZShjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKICAgICB2b2lkIGRlbGV0ZU9yaWdp
bkRpcmVjdG9yeUlmUG9zc2libGUoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJik7Ci0gICAg
RmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeSYgZmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVS
ZWdpc3RyeSgpOwogCiAgICAgdm9pZCBmb3JFYWNoT3JpZ2luRGlyZWN0b3J5KGNvbnN0IEZ1bmN0
aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+Jik7CiAgICAgSGFzaFNldDxXZWJDb3JlOjpDbGllbnRP
cmlnaW4+IGdldEFsbE9yaWdpbnMoKTsKQEAgLTExOCw2ICsxMzgsMzQgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHJlbW92ZUl0ZW0oSVBDOjpDb25uZWN0aW9uJiwgU3RvcmFnZUFyZWFJZGVudGlmaWVy
LCBTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyLCBTdHJpbmcmJiBrZXksIFN0cmluZyYmIHVybFN0
cmluZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGNsZWFyKElQQzo6
Q29ubmVjdGlvbiYsIFN0b3JhZ2VBcmVhSWRlbnRpZmllciwgU3RvcmFnZUFyZWFJbXBsSWRlbnRp
ZmllciwgU3RyaW5nJiYgdXJsU3RyaW5nLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwog
CisgICAgLy8gTWVzc2FnZSBoYW5kbGVycyBmb3IgSW5kZXhlZERCLgorICAgIHZvaWQgb3BlbkRh
dGFiYXNlKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJik7
CisgICAgdm9pZCBvcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVl
c3REYXRhJik7CisgICAgdm9pZCBkZWxldGVEYXRhYmFzZShJUEM6OkNvbm5lY3Rpb24mLCBjb25z
dCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYpOworICAgIHZvaWQgZXN0YWJsaXNoVHJhbnNhY3Rp
b24odWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6
SURCVHJhbnNhY3Rpb25JbmZvJik7CisgICAgdm9pZCBkYXRhYmFzZUNvbm5lY3Rpb25QZW5kaW5n
Q2xvc2UodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcik7CisgICAgdm9pZCBk
YXRhYmFzZUNvbm5lY3Rpb25DbG9zZWQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRp
Zmllcik7CisgICAgdm9pZCBhYm9ydE9wZW5BbmRVcGdyYWRlTmVlZGVkKHVpbnQ2NF90IGRhdGFi
YXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRp
ZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKKyAgICB2b2lkIGRpZEZpcmVWZXJzaW9uQ2hh
bmdlRXZlbnQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2Vi
Q29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgV2Vi
Q29yZTo6SW5kZXhlZERCOjpDb25uZWN0aW9uQ2xvc2VkT25CZWhhbGZPZlNlcnZlcik7CisgICAg
dm9pZCBhYm9ydFRyYW5zYWN0aW9uKGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmll
ciYpOworICAgIHZvaWQgY29tbWl0VHJhbnNhY3Rpb24oY29uc3QgV2ViQ29yZTo6SURCUmVzb3Vy
Y2VJZGVudGlmaWVyJiwgdWludDY0X3QgcGVuZGluZ1JlcXVlc3RDb3VudCk7CisgICAgdm9pZCBk
aWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbih1aW50NjRfdCBkYXRhYmFz
ZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZp
ZXImKTsKKyAgICB2b2lkIGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVl
c3REYXRhJiwgY29uc3QgV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVJbmZvJik7CisgICAgdm9pZCBk
ZWxldGVPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IFN0
cmluZyYgb2JqZWN0U3RvcmVOYW1lKTsKKyAgICB2b2lkIHJlbmFtZU9iamVjdFN0b3JlKGNvbnN0
IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIG5ld05hbWUpOworICAgIHZvaWQgY2xlYXJPYmplY3RTdG9yZShjb25z
dCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmll
cik7CisgICAgdm9pZCBjcmVhdGVJbmRleChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYs
IGNvbnN0IFdlYkNvcmU6OklEQkluZGV4SW5mbyYpOworICAgIHZvaWQgZGVsZXRlSW5kZXgoY29u
c3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lKTsKKyAgICB2b2lkIHJlbmFtZUluZGV4KGNvbnN0
IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVy
LCB1aW50NjRfdCBpbmRleElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSk7CisgICAg
dm9pZCBwdXRPckFkZChJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0
RGF0YSYsIGNvbnN0IFdlYkNvcmU6OklEQktleURhdGEmLCBjb25zdCBXZWJDb3JlOjpJREJWYWx1
ZSYsIFdlYkNvcmU6OkluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlKTsKKyAgICB2
b2lkIGdldFJlY29yZChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IFdlYkNv
cmU6OklEQkdldFJlY29yZERhdGEmKTsKKyAgICB2b2lkIGdldEFsbFJlY29yZHMoY29uc3QgV2Vi
Q29yZTo6SURCUmVxdWVzdERhdGEmLCBjb25zdCBXZWJDb3JlOjpJREJHZXRBbGxSZWNvcmRzRGF0
YSYpOworICAgIHZvaWQgZ2V0Q291bnQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmLCBj
b25zdCBXZWJDb3JlOjpJREJLZXlSYW5nZURhdGEmKTsKKyAgICB2b2lkIGRlbGV0ZVJlY29yZChj
b25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IFdlYkNvcmU6OklEQktleVJhbmdl
RGF0YSYpOworICAgIHZvaWQgb3BlbkN1cnNvcihjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0
YSYsIGNvbnN0IFdlYkNvcmU6OklEQkN1cnNvckluZm8mKTsKKyAgICB2b2lkIGl0ZXJhdGVDdXJz
b3IoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmLCBjb25zdCBXZWJDb3JlOjpJREJJdGVy
YXRlQ3Vyc29yRGF0YSYpOworICAgIHZvaWQgZ2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25z
KElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYs
IGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYpOworCiAgICAgUEFMOjpTZXNzaW9uSUQgbV9z
ZXNzaW9uSUQ7CiAgICAgUmVmPFN1c3BlbmRhYmxlV29ya1F1ZXVlPiBtX3F1ZXVlOwogICAgIFN0
cmluZyBtX3BhdGg7CkBAIC0xMjcsNyArMTc1LDE0IEBAIHByaXZhdGU6CiAgICAgV2Vha0hhc2hT
ZXQ8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb25zOyAvLyBNYWluIHRocmVhZCBvbmx5Lgog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxGaWxlU3lzdGVtU3RvcmFnZUhhbmRsZVJlZ2lzdHJ5PiBtX2Zp
bGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFN0b3Jh
Z2VBcmVhUmVnaXN0cnk+IG1fc3RvcmFnZUFyZWFSZWdpc3RyeTsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8SURCU3RvcmFnZVJlZ2lzdHJ5PiBtX2lkYlN0b3JhZ2VSZWdpc3RyeTsKICAgICBTdHJpbmcg
bV9jdXN0b21Mb2NhbFN0b3JhZ2VQYXRoOworICAgIFN0cmluZyBtX2N1c3RvbUlEQlN0b3JhZ2VQ
YXRoOworICAgIFN0cmluZyBtX2N1c3RvbUNhY2hlU3RvcmFnZVBhdGg7CisgICAgdWludDY0X3Qg
bV9kZWZhdWx0T3JpZ2luUXVvdGE7CisgICAgdWludDY0X3QgbV9kZWZhdWx0VGhpcmRQYXJ0eU9y
aWdpblF1b3RhOworICAgIElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgbV9wYXJlbnRDb25uZWN0
aW9uOworICAgIEhhc2hNYXA8SVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCwgSGFzaFNldDxTdHJp
bmc+PiBtX3RlbXBvcmFyeUJsb2JQYXRoc0J5Q29ubmVjdGlvbjsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9y
YWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIubWVzc2FnZXMuaW4KaW5k
ZXggNTBiOTY3MDFiMDcwZGQ1YzMyNzExZGIxNDI3OTMwM2ZlNjUyMTFiNy4uNDczMDVlMGU5ODFj
YTVjZmFlMDc3NDI2YmYyNGI3ODE1YTRkNjRjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VN
YW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC00Nyw0ICs0NywzMSBAQAogICAgIFNldEl0ZW0oV2ViS2l0
OjpTdG9yYWdlQXJlYUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViS2l0OjpTdG9yYWdlQXJlYUlt
cGxJZGVudGlmaWVyIGltcGxJZGVudGlmaWVyLCBTdHJpbmcga2V5LCBTdHJpbmcgdmFsdWUsIFN0
cmluZyB1cmxTdHJpbmcpIC0+IChib29sIHF1b3RhRXhjZXB0aW9uKSBBc3luYyBXYW50c0Nvbm5l
Y3Rpb24KICAgICBSZW1vdmVJdGVtKFdlYktpdDo6U3RvcmFnZUFyZWFJZGVudGlmaWVyIGlkZW50
aWZpZXIsIFdlYktpdDo6U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllciBpbXBsSWRlbnRpZmllciwg
U3RyaW5nIGtleSwgU3RyaW5nIHVybFN0cmluZykgLT4gKCkgQXN5bmMgV2FudHNDb25uZWN0aW9u
CiAgICAgQ2xlYXIoV2ViS2l0OjpTdG9yYWdlQXJlYUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2Vi
S2l0OjpTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyIGltcGxJZGVudGlmaWVyLCBTdHJpbmcgdXJs
U3RyaW5nKSAtPiAoKSBBc3luYyBXYW50c0Nvbm5lY3Rpb24KKworICAgIE9wZW5EYXRhYmFzZShX
ZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YSkgV2FudHNDb25uZWN0aW9uCisgICAg
T3BlbkRCUmVxdWVzdENhbmNlbGxlZChXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0
YSkKKyAgICBEZWxldGVEYXRhYmFzZShXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0
YSkgV2FudHNDb25uZWN0aW9uCisgICAgRXN0YWJsaXNoVHJhbnNhY3Rpb24odWludDY0X3QgZGF0
YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25JbmZvIGlu
Zm8pCisgICAgRGF0YWJhc2VDb25uZWN0aW9uUGVuZGluZ0Nsb3NlKHVpbnQ2NF90IGRhdGFiYXNl
Q29ubmVjdGlvbklkZW50aWZpZXIpCisgICAgRGF0YWJhc2VDb25uZWN0aW9uQ2xvc2VkKHVpbnQ2
NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpCisgICAgQWJvcnRPcGVuQW5kVXBncmFk
ZU5lZWRlZCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpJ
REJSZXNvdXJjZUlkZW50aWZpZXIgdHJhbnNhY3Rpb25JZGVudGlmaWVyKQorICAgIERpZEZpcmVW
ZXJzaW9uQ2hhbmdlRXZlbnQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwg
V2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyIHJlcXVlc3RJZGVudGlmaWVyLCBXZWJDb3Jl
OjpJbmRleGVkREI6OkNvbm5lY3Rpb25DbG9zZWRPbkJlaGFsZk9mU2VydmVyIGNvbm5lY3Rpb25D
bG9zZWRPbkJlaGFsZk9mU2VydmVyKQorICAgIERpZEZpbmlzaEhhbmRsaW5nVmVyc2lvbkNoYW5n
ZVRyYW5zYWN0aW9uKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNv
cmU6OklEQlJlc291cmNlSWRlbnRpZmllciB0cmFuc2FjdGlvbklkZW50aWZpZXIpCisgICAgQWJv
cnRUcmFuc2FjdGlvbihXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXIgdHJhbnNhY3Rpb25J
ZGVudGlmaWVyKQorICAgIENvbW1pdFRyYW5zYWN0aW9uKFdlYkNvcmU6OklEQlJlc291cmNlSWRl
bnRpZmllciB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IHBlbmRpbmdSZXF1ZXN0Q291
bnQpCisgICAgQ3JlYXRlT2JqZWN0U3RvcmUoV2ViQ29yZTo6SURCUmVxdWVzdERhdGEgcmVxdWVz
dERhdGEsIFdlYkNvcmU6OklEQk9iamVjdFN0b3JlSW5mbyBpbmZvKQorICAgIERlbGV0ZU9iamVj
dFN0b3JlKFdlYkNvcmU6OklEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhLCBTdHJpbmcgb2JqZWN0
U3RvcmVOYW1lKQorICAgIFJlbmFtZU9iamVjdFN0b3JlKFdlYkNvcmU6OklEQlJlcXVlc3REYXRh
IHJlcXVlc3REYXRhLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIFN0cmluZyBuZXdO
YW1lKQorICAgIENsZWFyT2JqZWN0U3RvcmUoV2ViQ29yZTo6SURCUmVxdWVzdERhdGEgcmVxdWVz
dERhdGEsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllcikKKyAgICBDcmVhdGVJbmRleChX
ZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YSwgV2ViQ29yZTo6SURCSW5kZXhJbmZv
IGluZm8pCisgICAgRGVsZXRlSW5kZXgoV2ViQ29yZTo6SURCUmVxdWVzdERhdGEgcmVxdWVzdERh
dGEsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgU3RyaW5nIGluZGV4TmFtZSkKKyAg
ICBSZW5hbWVJbmRleChXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YSwgdWludDY0
X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRleElkZW50aWZpZXIsIFN0cmlu
ZyBuZXdOYW1lKQorICAgIFB1dE9yQWRkKFdlYkNvcmU6OklEQlJlcXVlc3REYXRhIHJlcXVlc3RE
YXRhLCBXZWJDb3JlOjpJREJLZXlEYXRhIGtleSwgV2ViQ29yZTo6SURCVmFsdWUgdmFsdWUsIFdl
YkNvcmU6OkluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlIG92ZXJ3cml0ZU1vZGUp
IFdhbnRzQ29ubmVjdGlvbgorICAgIEdldFJlY29yZChXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSBy
ZXF1ZXN0RGF0YSwgc3RydWN0IFdlYkNvcmU6OklEQkdldFJlY29yZERhdGEgZ2V0UmVjb3JkRGF0
YSkKKyAgICBHZXRBbGxSZWNvcmRzKFdlYkNvcmU6OklEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRh
LCBzdHJ1Y3QgV2ViQ29yZTo6SURCR2V0QWxsUmVjb3Jkc0RhdGEgZ2V0QWxsUmVjb3Jkc0RhdGEp
CisgICAgR2V0Q291bnQoV2ViQ29yZTo6SURCUmVxdWVzdERhdGEgcmVxdWVzdERhdGEsIHN0cnVj
dCBXZWJDb3JlOjpJREJLZXlSYW5nZURhdGEgcmFuZ2UpCisgICAgRGVsZXRlUmVjb3JkKFdlYkNv
cmU6OklEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhLCBzdHJ1Y3QgV2ViQ29yZTo6SURCS2V5UmFu
Z2VEYXRhIHJhbmdlKQorICAgIE9wZW5DdXJzb3IoV2ViQ29yZTo6SURCUmVxdWVzdERhdGEgcmVx
dWVzdERhdGEsIFdlYkNvcmU6OklEQkN1cnNvckluZm8gaW5mbykKKyAgICBJdGVyYXRlQ3Vyc29y
KFdlYkNvcmU6OklEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhLCBzdHJ1Y3QgV2ViQ29yZTo6SURC
SXRlcmF0ZUN1cnNvckRhdGEgZGF0YSkKKyAgICBHZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lv
bnMoV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyIHJlcXVlc3RJZGVudGlmaWVyLCBzdHJ1
Y3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbikgV2FudHNDb25uZWN0aW9uCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFn
ZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdp
blN0b3JhZ2VNYW5hZ2VyLmNwcAppbmRleCA1ODgzMWVhYTI2NjBhZjg3NGRlNmI5NTg5MGU1N2E3
ZmI2MTU1N2VjLi5iY2MwZjMzODc3OWY0OTMxMDA3NGE3YzZjYmQyZmNhZTc1MzZkYzA2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFn
ZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9P
cmlnaW5TdG9yYWdlTWFuYWdlci5jcHAKQEAgLTI2LDggKzI2LDExIEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiT3JpZ2luU3RvcmFnZU1hbmFnZXIuaCIKIAorI2luY2x1ZGUgIkNh
Y2hlU3RvcmFnZUVuZ2luZS5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVn
aXN0cnkuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIuaCIKKyNpbmNsdWRl
ICJJREJTdG9yYWdlTWFuYWdlci5oIgorI2luY2x1ZGUgIklEQlN0b3JhZ2VSZWdpc3RyeS5oIgog
I2luY2x1ZGUgIkxvY2FsU3RvcmFnZU1hbmFnZXIuaCIKICNpbmNsdWRlICJNZW1vcnlTdG9yYWdl
QXJlYS5oIgogI2luY2x1ZGUgIlNlc3Npb25TdG9yYWdlTWFuYWdlci5oIgpAQCAtNDQsMTAgKzQ3
LDExIEBAIGVudW0gY2xhc3MgT3JpZ2luU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VCdWNrZXRNb2Rl
IDogYm9vbCB7IEJlc3RFZmZvcnQsIFBlcnNpc3RlCiBjbGFzcyBPcmlnaW5TdG9yYWdlTWFuYWdl
cjo6U3RvcmFnZUJ1Y2tldCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
Ci0gICAgU3RvcmFnZUJ1Y2tldChjb25zdCBTdHJpbmcmIHJvb3RQYXRoLCBjb25zdCBTdHJpbmcm
IGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlUGF0aCkKKyAgICBTdG9yYWdl
QnVja2V0KGNvbnN0IFN0cmluZyYgcm9vdFBhdGgsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VQYXRoLCBjb25zdCBTdHJpbmcmIGlkYlN0b3JhZ2VQ
YXRoKQogICAgICAgICA6IG1fcm9vdFBhdGgocm9vdFBhdGgpCiAgICAgICAgICwgbV9pZGVudGlm
aWVyKGlkZW50aWZpZXIpCiAgICAgICAgICwgbV9sb2NhbFN0b3JhZ2VQYXRoKGxvY2FsU3RvcmFn
ZVBhdGgpCisgICAgICAgICwgbV9pZGJTdG9yYWdlUGF0aChpZGJTdG9yYWdlUGF0aCkKICAgICB7
CiAgICAgfQogCkBAIC03MCw2ICs3NCw3IEBAIHB1YmxpYzoKICAgICAgICAgRmlsZVN5c3RlbSwK
ICAgICAgICAgTG9jYWxTdG9yYWdlLAogICAgICAgICBTZXNzaW9uU3RvcmFnZSwKKyAgICAgICAg
SW5kZXhlZERCLAogICAgIH07CiAKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJzaXRlRGF0
YVR5cGU+IHRvV2Vic2l0ZURhdGFUeXBlKGNvbnN0IFN0cmluZyYgc3RvcmFnZUlkZW50aWZpZXIp
CkBAIC04MCw2ICs4NSw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBXZWJzaXRlRGF0
YVR5cGU6OkxvY2FsU3RvcmFnZTsKICAgICAgICAgaWYgKHN0b3JhZ2VJZGVudGlmaWVyID09ICJT
ZXNzaW9uU3RvcmFnZSJfcykKICAgICAgICAgICAgIHJldHVybiBXZWJzaXRlRGF0YVR5cGU6OlNl
c3Npb25TdG9yYWdlOworICAgICAgICBpZiAoc3RvcmFnZUlkZW50aWZpZXIgPT0gIkluZGV4ZWRE
QiJfcykKKyAgICAgICAgICAgIHJldHVybiBXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFi
YXNlczsKIAogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KQEAgLTkzLDYgKzEw
MCw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiAiTG9jYWxTdG9yYWdlIl9zOwogICAg
ICAgICBjYXNlIFN0b3JhZ2VUeXBlOjpTZXNzaW9uU3RvcmFnZToKICAgICAgICAgICAgIHJldHVy
biAiU2Vzc2lvblN0b3JhZ2UiX3M7CisgICAgICAgIGNhc2UgU3RvcmFnZVR5cGU6OkluZGV4ZWRE
QjoKKyAgICAgICAgICAgIHJldHVybiAiSW5kZXhlZERCIl9zOwogICAgICAgICBkZWZhdWx0Ogog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTE0MywxMyArMTUyLDI3IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIG1fc2Vzc2lvblN0b3JhZ2VNYW5hZ2VyLmdldCgpOwogICAgIH0K
IAorICAgIElEQlN0b3JhZ2VNYW5hZ2VyJiBpZGJTdG9yYWdlTWFuYWdlcihJREJTdG9yYWdlUmVn
aXN0cnkmIHJlZ2lzdHJ5LCBJREJTdG9yYWdlTWFuYWdlcjo6UXVvdGFDaGVja0Z1bmN0aW9uJiYg
cXVvdGFDaGVja0Z1bmN0aW9uKQorICAgIHsKKyAgICAgICAgaWYgKCFtX2lkYlN0b3JhZ2VNYW5h
Z2VyKQorICAgICAgICAgICAgbV9pZGJTdG9yYWdlTWFuYWdlciA9IG1ha2VVbmlxdWU8SURCU3Rv
cmFnZU1hbmFnZXI+KG1faWRiU3RvcmFnZVBhdGgsIHJlZ2lzdHJ5LCBXVEZNb3ZlKHF1b3RhQ2hl
Y2tGdW5jdGlvbikpOworCisgICAgICAgIHJldHVybiAqbV9pZGJTdG9yYWdlTWFuYWdlcjsKKyAg
ICB9CisKKyAgICBJREJTdG9yYWdlTWFuYWdlciogZXhpc3RpbmdJREJTdG9yYWdlTWFuYWdlcigp
CisgICAgeworICAgICAgICByZXR1cm4gbV9pZGJTdG9yYWdlTWFuYWdlci5nZXQoKTsKKyAgICB9
CisKICAgICBib29sIGlzQWN0aXZlKCkgY29uc3QKICAgICB7CiAgICAgICAgIC8vIFdlIGNhbm5v
dCByZW1vdmUgdGhlIGJ1Y2tldCBpZiBpdCBoYXMgaW4tbWVtb3J5IGRhdGEsIG90aGVyd2lzZSBz
ZXNzaW9uCiAgICAgICAgIC8vIGRhdGEgbWF5IGJlIGxvc3QuCiAgICAgICAgIHJldHVybiAobV9m
aWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIgJiYgbV9maWxlU3lzdGVtU3RvcmFnZU1hbmFnZXItPmlz
QWN0aXZlKCkpCiAgICAgICAgICAgICB8fCAobV9sb2NhbFN0b3JhZ2VNYW5hZ2VyICYmIChtX2xv
Y2FsU3RvcmFnZU1hbmFnZXItPmhhc0RhdGFJbk1lbW9yeSgpIHx8IG1fbG9jYWxTdG9yYWdlTWFu
YWdlci0+aXNBY3RpdmUoKSkpCi0gICAgICAgICAgICB8fCAobV9zZXNzaW9uU3RvcmFnZU1hbmFn
ZXIgJiYgKG1fc2Vzc2lvblN0b3JhZ2VNYW5hZ2VyLT5oYXNEYXRhSW5NZW1vcnkoKSB8fCBtX3Nl
c3Npb25TdG9yYWdlTWFuYWdlci0+aXNBY3RpdmUoKSkpOworICAgICAgICAgICAgfHwgKG1fc2Vz
c2lvblN0b3JhZ2VNYW5hZ2VyICYmIChtX3Nlc3Npb25TdG9yYWdlTWFuYWdlci0+aGFzRGF0YUlu
TWVtb3J5KCkgfHwgbV9zZXNzaW9uU3RvcmFnZU1hbmFnZXItPmlzQWN0aXZlKCkpKQorICAgICAg
ICAgICAgfHwgKG1faWRiU3RvcmFnZU1hbmFnZXIgJiYgKG1faWRiU3RvcmFnZU1hbmFnZXItPmhh
c0RhdGFJbk1lbW9yeSgpIHx8IG1faWRiU3RvcmFnZU1hbmFnZXItPmlzQWN0aXZlKCkpKTsKICAg
ICB9CiAKICAgICBib29sIGlzRW1wdHkoKSBjb25zdApAQCAtMTY1LDcgKzE4OCw4IEBAIHB1Ymxp
YzoKICAgICAgICAgaWYgKGhhc1ZhbGlkRmlsZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgICAgICByZXR1cm4gIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobV9sb2NhbFN0b3JhZ2VQ
YXRoKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkobV9pZGJTdG9y
YWdlUGF0aCk7CisgICAgICAgIHJldHVybiAhRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhtX2xvY2Fs
U3RvcmFnZVBhdGgpICYmICFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG1faWRiU3RvcmFnZVBhdGgp
OwogICAgIH0KIAogICAgIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGZldGNoRGF0YVR5cGVz
SW5MaXN0KE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHR5cGVzKQpAQCAtMTg2LDE0ICsyMTAs
MjAgQEAgcHVibGljOgogCiAgICAgICAgIGlmICh0eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5
cGU6OlNlc3Npb25TdG9yYWdlKSAmJiBtb2RpZmllZFNpbmNlVGltZSA8IFdhbGxUaW1lOjpub3co
KSkKICAgICAgICAgICAgIGRlbGV0ZVNlc3Npb25TdG9yYWdlRGF0YSgpOworCisgICAgICAgIGlm
ICh0eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykpCisg
ICAgICAgICAgICBkZWxldGVJREJTdG9yYWdlRGF0YShtb2RpZmllZFNpbmNlVGltZSk7CiAgICAg
fQogCi0gICAgdm9pZCBtb3ZlRGF0YShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYg
bG9jYWxTdG9yYWdlUGF0aCkKKyAgICB2b2lkIG1vdmVEYXRhKGNvbnN0IFN0cmluZyYgcGF0aCwg
Y29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VQYXRoLCBjb25zdCBTdHJpbmcmIGlkYlN0b3JhZ2VQ
YXRoKQogICAgIHsKICAgICAgICAgbV9maWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIgPSBudWxscHRy
OwogICAgICAgICBpZiAobV9sb2NhbFN0b3JhZ2VNYW5hZ2VyKQogICAgICAgICAgICAgbV9sb2Nh
bFN0b3JhZ2VNYW5hZ2VyLT5jbG9zZSgpOwogCisgICAgICAgIGlmIChtX2lkYlN0b3JhZ2VNYW5h
Z2VyKQorICAgICAgICAgICAgbV9pZGJTdG9yYWdlTWFuYWdlci0+Y2xvc2VEYXRhYmFzZXNGb3JE
ZWxldGlvbigpOworCiAgICAgICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhGaWxl
U3lzdGVtOjpwYXJlbnRQYXRoKHBhdGgpKTsKICAgICAgICAgRmlsZVN5c3RlbTo6bW92ZUZpbGUo
bV9yb290UGF0aCwgcGF0aCk7CiAKQEAgLTIwMSw2ICsyMzEsMTEgQEAgcHVibGljOgogICAgICAg
ICAgICAgRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKEZpbGVTeXN0ZW06OnBhcmVudFBh
dGgobG9jYWxTdG9yYWdlUGF0aCkpOwogICAgICAgICAgICAgV2ViQ29yZTo6U1FMaXRlRmlsZVN5
c3RlbTo6bW92ZURhdGFiYXNlRmlsZShtX2xvY2FsU3RvcmFnZVBhdGgsIGxvY2FsU3RvcmFnZVBh
dGgpOwogICAgICAgICB9CisKKyAgICAgICAgaWYgKCFtX2lkYlN0b3JhZ2VQYXRoLmlzRW1wdHko
KSAmJiAhaWRiU3RvcmFnZVBhdGguaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBGaWxlU3lzdGVt
OjptYWtlQWxsRGlyZWN0b3JpZXMoRmlsZVN5c3RlbTo6cGFyZW50UGF0aChpZGJTdG9yYWdlUGF0
aCkpOworICAgICAgICAgICAgV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6bW92ZURhdGFiYXNl
RmlsZShtX2lkYlN0b3JhZ2VQYXRoLCBpZGJTdG9yYWdlUGF0aCk7CisgICAgICAgIH0KICAgICB9
CiAKIHByaXZhdGU6CkBAIC0yMTcsNiArMjUyLDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgcmVzdWx0LmFkZChXZWJzaXRlRGF0YVR5cGU6OlNlc3Npb25TdG9yYWdlKTsKICAgICAgICAg
fQogCisgICAgICAgIGlmICh0eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWRE
QkRhdGFiYXNlcykpIHsKKyAgICAgICAgICAgIGlmIChtX2lkYlN0b3JhZ2VNYW5hZ2VyICYmIG1f
aWRiU3RvcmFnZU1hbmFnZXItPmhhc0RhdGFJbk1lbW9yeSgpKQorICAgICAgICAgICAgICAgIHJl
c3VsdC5hZGQoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpOworICAgICAgICB9
CisKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKQEAgLTIzMyw2ICsyNzMsMTEgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICByZXN1bHQuYWRkKFdlYnNpdGVEYXRhVHlwZTo6TG9j
YWxTdG9yYWdlKTsKICAgICAgICAgfQogCisgICAgICAgIGlmICh0eXBlcy5jb250YWlucyhXZWJz
aXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykgJiYgIXJlc3VsdC5jb250YWlucyhXZWJz
aXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykpIHsKKyAgICAgICAgICAgIGlmIChhdXRv
IGRhdGFiYXNlcyA9IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobV9pZGJTdG9yYWdlUGF0aCk7
ICFkYXRhYmFzZXMuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQoV2Vic2l0
ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpOworICAgICAgICB9CisKICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICB9CiAKQEAgLTI3MCw2ICszMTUsMTQgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIG1fc2Vzc2lvblN0b3JhZ2VNYW5hZ2VyID0gbnVsbHB0cjsKICAgICB9CiAgICAgCisg
ICAgdm9pZCBkZWxldGVJREJTdG9yYWdlRGF0YShXYWxsVGltZSB0aW1lKQorICAgIHsKKyAgICAg
ICAgaWYgKG1faWRiU3RvcmFnZU1hbmFnZXIpCisgICAgICAgICAgICBtX2lkYlN0b3JhZ2VNYW5h
Z2VyLT5jbG9zZURhdGFiYXNlc0ZvckRlbGV0aW9uKCk7CisKKyAgICAgICAgRmlsZVN5c3RlbTo6
ZGVsZXRlQWxsRmlsZXNNb2RpZmllZFNpbmNlKG1faWRiU3RvcmFnZVBhdGgsIHRpbWUpOworICAg
IH0KKyAgICAKICAgICBTdHJpbmcgbV9yb290UGF0aDsKICAgICBTdHJpbmcgbV9pZGVudGlmaWVy
OwogICAgIFN0b3JhZ2VCdWNrZXRNb2RlIG1fbW9kZSB7IFN0b3JhZ2VCdWNrZXRNb2RlOjpCZXN0
RWZmb3J0IH07CkBAIC0yNzcsMTEgKzMzMCwyNCBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVl
X3B0cjxMb2NhbFN0b3JhZ2VNYW5hZ2VyPiBtX2xvY2FsU3RvcmFnZU1hbmFnZXI7CiAgICAgU3Ry
aW5nIG1fbG9jYWxTdG9yYWdlUGF0aDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2Vzc2lvblN0b3Jh
Z2VNYW5hZ2VyPiBtX3Nlc3Npb25TdG9yYWdlTWFuYWdlcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
SURCU3RvcmFnZU1hbmFnZXI+IG1faWRiU3RvcmFnZU1hbmFnZXI7CisgICAgU3RyaW5nIG1faWRi
U3RvcmFnZVBhdGg7CiB9OwogCi1PcmlnaW5TdG9yYWdlTWFuYWdlcjo6T3JpZ2luU3RvcmFnZU1h
bmFnZXIoU3RyaW5nJiYgcGF0aCwgU3RyaW5nJiYgbG9jYWxTdG9yYWdlUGF0aCkKK3N0YXRpYyBS
ZWY8UXVvdGFNYW5hZ2VyPiBjcmVhdGVRdW90YU1hbmFnZXIodWludDY0X3QgcXVvdGEsIGNvbnN0
IFN0cmluZyYgaWRiU3RvcmFnZVBhdGgsIGNvbnN0IFN0cmluZyYgY2FjaGVTdG9yYWdlUGF0aCwg
UXVvdGFNYW5hZ2VyOjpJbmNyZWFzZVF1b3RhRnVuY3Rpb24mJiBpbmNyZWFzZVF1b3RhRnVuY3Rp
b24pCit7CisgICAgUXVvdGFNYW5hZ2VyOjpHZXRVc2FnZUZ1bmN0aW9uIGdldFVzYWdlRnVuY3Rp
b24gPSBbaWRiU3RvcmFnZVBhdGgsIGNhY2hlU3RvcmFnZVBhdGhdKCkgeworICAgICAgICByZXR1
cm4gSURCU3RvcmFnZU1hbmFnZXI6OmlkYlN0b3JhZ2VTaXplKGlkYlN0b3JhZ2VQYXRoKSArIENh
Y2hlU3RvcmFnZTo6RW5naW5lOjpkaXNrVXNhZ2UoY2FjaGVTdG9yYWdlUGF0aCk7CisgICAgfTsK
KyAgICByZXR1cm4gUXVvdGFNYW5hZ2VyOjpjcmVhdGUocXVvdGEsIFdURk1vdmUoZ2V0VXNhZ2VG
dW5jdGlvbiksIFdURk1vdmUoaW5jcmVhc2VRdW90YUZ1bmN0aW9uKSk7Cit9CisKK09yaWdpblN0
b3JhZ2VNYW5hZ2VyOjpPcmlnaW5TdG9yYWdlTWFuYWdlcih1aW50NjRfdCBxdW90YSwgUXVvdGFN
YW5hZ2VyOjpJbmNyZWFzZVF1b3RhRnVuY3Rpb24mJiBpbmNyZWFzZVF1b3RhRnVuY3Rpb24sIFN0
cmluZyYmIHBhdGgsIFN0cmluZyYmIGxvY2FsU3RvcmFnZVBhdGgsIFN0cmluZyYmIGlkYlN0b3Jh
Z2VQYXRoLCBTdHJpbmcmJiBjYWNoZVN0b3JhZ2VQYXRoKQogICAgIDogbV9wYXRoKFdURk1vdmUo
cGF0aCkpCiAgICAgLCBtX2xvY2FsU3RvcmFnZVBhdGgoV1RGTW92ZShsb2NhbFN0b3JhZ2VQYXRo
KSkKKyAgICAsIG1faWRiU3RvcmFnZVBhdGgoV1RGTW92ZShpZGJTdG9yYWdlUGF0aCkpCisgICAg
LCBtX2NhY2hlU3RvcmFnZVBhdGgoV1RGTW92ZShjYWNoZVN0b3JhZ2VQYXRoKSkKKyAgICAsIG1f
cXVvdGFNYW5hZ2VyKGNyZWF0ZVF1b3RhTWFuYWdlcihxdW90YSwgbV9pZGJTdG9yYWdlUGF0aCwg
bV9jYWNoZVN0b3JhZ2VQYXRoLCBXVEZNb3ZlKGluY3JlYXNlUXVvdGFGdW5jdGlvbikpKQogewog
ICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogfQpAQCAtMjk3LDExICszNjMsMTYgQEAg
dm9pZCBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6Y29ubmVjdGlvbkNsb3NlZChJUEM6OkNvbm5lY3Rp
b246OlVuaXF1ZUlEIGNvbm5lY3Rpb24KIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVj
a2V0JiBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6ZGVmYXVsdEJ1Y2tldCgpCiB7CiAgICAgaWYgKCFt
X2RlZmF1bHRCdWNrZXQpCi0gICAgICAgIG1fZGVmYXVsdEJ1Y2tldCA9IG1ha2VVbmlxdWU8U3Rv
cmFnZUJ1Y2tldD4obV9wYXRoLCAiZGVmYXVsdCJfcywgbV9sb2NhbFN0b3JhZ2VQYXRoKTsKKyAg
ICAgICAgbV9kZWZhdWx0QnVja2V0ID0gbWFrZVVuaXF1ZTxTdG9yYWdlQnVja2V0PihtX3BhdGgs
ICJkZWZhdWx0Il9zLCBtX2xvY2FsU3RvcmFnZVBhdGgsIG1faWRiU3RvcmFnZVBhdGgpOwogCiAg
ICAgcmV0dXJuICptX2RlZmF1bHRCdWNrZXQ7CiB9CiAKK1F1b3RhTWFuYWdlciYgT3JpZ2luU3Rv
cmFnZU1hbmFnZXI6OnF1b3RhTWFuYWdlcigpCit7CisgICAgcmV0dXJuIG1fcXVvdGFNYW5hZ2Vy
LmdldCgpOworfQorCiBGaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXImIE9yaWdpblN0b3JhZ2VNYW5h
Z2VyOjpmaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIoRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdp
c3RyeSYgcmVnaXN0cnkpCiB7CiAgICAgcmV0dXJuIGRlZmF1bHRCdWNrZXQoKS5maWxlU3lzdGVt
U3RvcmFnZU1hbmFnZXIocmVnaXN0cnkpOwpAQCAtMzI3LDYgKzM5OCwyMyBAQCBTZXNzaW9uU3Rv
cmFnZU1hbmFnZXIqIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpleGlzdGluZ1Nlc3Npb25TdG9yYWdl
TWFuYWdlcigpCiAgICAgcmV0dXJuIGRlZmF1bHRCdWNrZXQoKS5leGlzdGluZ1Nlc3Npb25TdG9y
YWdlTWFuYWdlcigpOwogfQogCitJREJTdG9yYWdlTWFuYWdlciYgT3JpZ2luU3RvcmFnZU1hbmFn
ZXI6OmlkYlN0b3JhZ2VNYW5hZ2VyKElEQlN0b3JhZ2VSZWdpc3RyeSYgcmVnaXN0cnkpCit7Cisg
ICAgcmV0dXJuIGRlZmF1bHRCdWNrZXQoKS5pZGJTdG9yYWdlTWFuYWdlcihyZWdpc3RyeSwgW3F1
b3RhTWFuYWdlciA9IFdlYWtQdHIgeyB0aGlzLT5xdW90YU1hbmFnZXIoKSB9XSh1aW50NjRfdCBz
cGFjZVJlcXVlc3RlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikgbXV0YWJsZSB7CisgICAgICAgIGlmICghcXVvdGFNYW5hZ2VyKQorICAgICAgICAg
ICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKworICAgICAgICBxdW90YU1hbmFn
ZXItPnJlcXVlc3RTcGFjZShzcGFjZVJlcXVlc3RlZCwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1dG8gZGVjaXNpb24pIG11dGFibGUgeworICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoZGVjaXNpb24gPT0gUXVvdGFNYW5hZ2VyOjpEZWNpc2lv
bjo6R3JhbnQpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKworSURCU3RvcmFnZU1hbmFnZXIq
IE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpleGlzdGluZ0lEQlN0b3JhZ2VNYW5hZ2VyKCkKK3sKKyAg
ICByZXR1cm4gZGVmYXVsdEJ1Y2tldCgpLmV4aXN0aW5nSURCU3RvcmFnZU1hbmFnZXIoKTsKK30K
KwogYm9vbCBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6aXNBY3RpdmUoKQogewogICAgIHJldHVybiBk
ZWZhdWx0QnVja2V0KCkuaXNBY3RpdmUoKTsKQEAgLTM1OSwxMSArNDQ3LDExIEBAIHZvaWQgT3Jp
Z2luU3RvcmFnZU1hbmFnZXI6OmRlbGV0ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4g
dHlwZXMsIFdhbGxUaW1lCiAgICAgZGVmYXVsdEJ1Y2tldCgpLmRlbGV0ZURhdGEodHlwZXMsIG1v
ZGlmaWVkU2luY2UpOwogfQogCi12b2lkIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjptb3ZlRGF0YShj
b25zdCBTdHJpbmcmIG5ld1BhdGgsIGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlUGF0aCkKK3Zv
aWQgT3JpZ2luU3RvcmFnZU1hbmFnZXI6Om1vdmVEYXRhKGNvbnN0IFN0cmluZyYgbmV3UGF0aCwg
Y29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VQYXRoLCBjb25zdCBTdHJpbmcmIGlkYlN0b3JhZ2VQ
YXRoKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgZGVmYXVsdEJ1
Y2tldCgpLm1vdmVEYXRhKG5ld1BhdGgsIGxvY2FsU3RvcmFnZVBhdGgpOworICAgIGRlZmF1bHRC
dWNrZXQoKS5tb3ZlRGF0YShuZXdQYXRoLCBsb2NhbFN0b3JhZ2VQYXRoLCBpZGJTdG9yYWdlUGF0
aCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2VyLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuaAppbmRl
eCA1ZTc2Njk5ODZlNDY2ODVmMzg5YjdhNTI3MWU2NmQwZTYzYzJkMTllLi5lYzQ2YzU0YjMxMTFm
YjAxYjNjZTY5NjkyMDdjMTNiZTVkOTk5ZDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuaApAQCAt
MjYsMTYgKzI2LDE1IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIK
KyNpbmNsdWRlICJRdW90YU1hbmFnZXIuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgewotc3RydWN0IENsaWVudE9yaWdpbjsKLX0KLQogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnk7
CiBjbGFzcyBGaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXI7CitjbGFzcyBJREJTdG9yYWdlTWFuYWdl
cjsKK2NsYXNzIElEQlN0b3JhZ2VSZWdpc3RyeTsKIGNsYXNzIExvY2FsU3RvcmFnZU1hbmFnZXI7
CiBjbGFzcyBTZXNzaW9uU3RvcmFnZU1hbmFnZXI7CiBjbGFzcyBTdG9yYWdlQXJlYVJlZ2lzdHJ5
OwpAQCAtNDQsMzUgKzQzLDM4IEBAIGVudW0gY2xhc3MgV2Vic2l0ZURhdGFUeXBlIDogdWludDMy
X3Q7CiBjbGFzcyBPcmlnaW5TdG9yYWdlTWFuYWdlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6Ci0gICAgT3JpZ2luU3RvcmFnZU1hbmFnZXIoU3RyaW5nJiYgcGF0aCwg
U3RyaW5nJiYgbG9jYWxTdG9yYWdlUGF0aCk7CisgICAgT3JpZ2luU3RvcmFnZU1hbmFnZXIodWlu
dDY0X3QgcXVvdGEsIFF1b3RhTWFuYWdlcjo6SW5jcmVhc2VRdW90YUZ1bmN0aW9uJiYsIFN0cmlu
ZyYmIHBhdGgsIFN0cmluZyYmIGxvY2FsU3RvcmFnZVBhdGgsIFN0cmluZyYmIGlkYlN0b3JhZ2VQ
YXRoLCBTdHJpbmcmJiBjYWNoZVN0b3JhZ2VQYXRoKTsKICAgICB+T3JpZ2luU3RvcmFnZU1hbmFn
ZXIoKTsKIAogICAgIHZvaWQgY29ubmVjdGlvbkNsb3NlZChJUEM6OkNvbm5lY3Rpb246OlVuaXF1
ZUlEKTsKICAgICBib29sIHBlcnNpc3RlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGVyc2lzdGVkOyB9
CiAgICAgdm9pZCBzZXRQZXJzaXN0ZWQoYm9vbCB2YWx1ZSk7CisgICAgUXVvdGFNYW5hZ2VyJiBx
dW90YU1hbmFnZXIoKTsKICAgICBGaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXImIGZpbGVTeXN0ZW1T
dG9yYWdlTWFuYWdlcihGaWxlU3lzdGVtU3RvcmFnZUhhbmRsZVJlZ2lzdHJ5Jik7CiAgICAgTG9j
YWxTdG9yYWdlTWFuYWdlciYgbG9jYWxTdG9yYWdlTWFuYWdlcihTdG9yYWdlQXJlYVJlZ2lzdHJ5
Jik7CiAgICAgTG9jYWxTdG9yYWdlTWFuYWdlciogZXhpc3RpbmdMb2NhbFN0b3JhZ2VNYW5hZ2Vy
KCk7CiAgICAgU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyJiBzZXNzaW9uU3RvcmFnZU1hbmFnZXIoU3Rv
cmFnZUFyZWFSZWdpc3RyeSYpOwogICAgIFNlc3Npb25TdG9yYWdlTWFuYWdlciogZXhpc3RpbmdT
ZXNzaW9uU3RvcmFnZU1hbmFnZXIoKTsKKyAgICBJREJTdG9yYWdlTWFuYWdlciYgaWRiU3RvcmFn
ZU1hbmFnZXIoSURCU3RvcmFnZVJlZ2lzdHJ5Jik7CisgICAgSURCU3RvcmFnZU1hbmFnZXIqIGV4
aXN0aW5nSURCU3RvcmFnZU1hbmFnZXIoKTsKICAgICBib29sIGlzQWN0aXZlKCk7CiAgICAgYm9v
bCBpc0VtcHR5KCk7CiAgICAgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZmV0Y2hEYXRhVHlw
ZXNJbkxpc3QoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4pOwogICAgIHZvaWQgZGVsZXRlRGF0
YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgV2FsbFRpbWUpOwotICAgIHZvaWQgbW92ZURh
dGEoY29uc3QgU3RyaW5nJiBuZXdQYXRoLCBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZVBhdGgp
OworICAgIHZvaWQgbW92ZURhdGEoY29uc3QgU3RyaW5nJiBuZXdQYXRoLCBjb25zdCBTdHJpbmcm
IGxvY2FsU3RvcmFnZVBhdGgsIGNvbnN0IFN0cmluZyYgaWRiU3RvcmFnZVBhdGgpOwogCiBwcml2
YXRlOgogICAgIGVudW0gY2xhc3MgU3RvcmFnZUJ1Y2tldE1vZGUgOiBib29sOwogICAgIGNsYXNz
IFN0b3JhZ2VCdWNrZXQ7CiAgICAgU3RvcmFnZUJ1Y2tldCYgZGVmYXVsdEJ1Y2tldCgpOwogCi0g
ICAgdm9pZCBjcmVhdGVPcmlnaW5GaWxlSWZOZWNlc3NhcnkoY29uc3QgV2ViQ29yZTo6Q2xpZW50
T3JpZ2luJik7Ci0gICAgdm9pZCBkZWxldGVPcmlnaW5GaWxlSWZOZWNlc3NhcnkoKTsKLQogICAg
IHN0ZDo6dW5pcXVlX3B0cjxTdG9yYWdlQnVja2V0PiBtX2RlZmF1bHRCdWNrZXQ7CiAgICAgU3Ry
aW5nIG1fcGF0aDsKICAgICBib29sIG1fcGVyc2lzdGVkIHsgZmFsc2UgfTsKICAgICBTdHJpbmcg
bV9sb2NhbFN0b3JhZ2VQYXRoOworICAgIFN0cmluZyBtX2lkYlN0b3JhZ2VQYXRoOworICAgIFN0
cmluZyBtX2NhY2hlU3RvcmFnZVBhdGg7CisgICAgUmVmPFF1b3RhTWFuYWdlcj4gbV9xdW90YU1h
bmFnZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9RdW90YU1hbmFnZXIuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1F1b3RhTWFuYWdlci5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YTdmM2ZmYTI2YmY5ZWEzNGI0YTAwMWRhOGI3N2ZmZTg2YjIxMmNiMgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9RdW90YU1hbmFnZXIuY3Bw
CkBAIC0wLDAgKzEsMTMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlF1b3RhTWFuYWdlci5oIgorCisjaW5jbHVkZSA8d3RmL1Njb3BlLmg+CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitSZWY8UXVvdGFNYW5hZ2VyPiBRdW90YU1hbmFnZXI6OmNyZWF0ZSh1
aW50NjRfdCBxdW90YSwgR2V0VXNhZ2VGdW5jdGlvbiYmIGdldFVzYWdlRnVuY3Rpb24sIEluY3Jl
YXNlUXVvdGFGdW5jdGlvbiYmIGluY3JlYXNlUXVvdGFGdW5jdGlvbikKK3sKKyAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBRdW90YU1hbmFnZXIocXVvdGEsIFdURk1vdmUoZ2V0VXNhZ2VGdW5jdGlv
biksIFdURk1vdmUoaW5jcmVhc2VRdW90YUZ1bmN0aW9uKSkpOworfQorCitRdW90YU1hbmFnZXI6
OlF1b3RhTWFuYWdlcih1aW50NjRfdCBxdW90YSwgR2V0VXNhZ2VGdW5jdGlvbiYmIGdldFVzYWdl
RnVuY3Rpb24sIEluY3JlYXNlUXVvdGFGdW5jdGlvbiYmIGluY3JlYXNlUXVvdGFGdW5jdGlvbikK
KyAgICA6IG1fcXVvdGEocXVvdGEpCisgICAgLCBtX2luaXRpYWxRdW90YShxdW90YSkKKyAgICAs
IG1fZ2V0VXNhZ2VGdW5jdGlvbihXVEZNb3ZlKGdldFVzYWdlRnVuY3Rpb24pKQorICAgICwgbV9p
bmNyZWFzZVF1b3RhRnVuY3Rpb24oV1RGTW92ZShpbmNyZWFzZVF1b3RhRnVuY3Rpb24pKQorewor
ICAgIEFTU0VSVChtX3F1b3RhKTsKK30KKwordm9pZCBRdW90YU1hbmFnZXI6OnJlcXVlc3RTcGFj
ZSh1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCwgUmVxdWVzdENhbGxiYWNrJiYgY2FsbGJhY2spCit7
CisgICAgbV9yZXF1ZXN0cy5hcHBlbmQoUXVvdGFNYW5hZ2VyOjpSZXF1ZXN0IHsgc3BhY2VSZXF1
ZXN0ZWQsIFdURk1vdmUoY2FsbGJhY2spLCBRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIg
eyB9IH0pOworICAgIGhhbmRsZVJlcXVlc3RzKCk7Cit9CisKK3ZvaWQgUXVvdGFNYW5hZ2VyOjpo
YW5kbGVSZXF1ZXN0cygpCit7CisgICAgaWYgKG1fY3VycmVudFJlcXVlc3QpCisgICAgICAgIHJl
dHVybjsKKworICAgIFNldEZvclNjb3BlPGJvb2w+IGlzSGFuZGxpbmdSZXF1ZXN0cyhtX2lzSGFu
ZGxpbmdSZXF1ZXN0cywgdHJ1ZSk7CisKKyAgICB3aGlsZSAoIW1fY3VycmVudFJlcXVlc3QgJiYg
IW1fcmVxdWVzdHMuaXNFbXB0eSgpKSB7CisgICAgICAgIG1fY3VycmVudFJlcXVlc3QgPSBtX3Jl
cXVlc3RzLnRha2VGaXJzdCgpOworICAgICAgICBpZiAoZ3JhbnRXaXRoQ3VycmVudFF1b3RhKG1f
Y3VycmVudFJlcXVlc3QtPnNwYWNlUmVxdWVzdGVkKSkgeworICAgICAgICAgICAgbV9jdXJyZW50
UmVxdWVzdC0+Y2FsbGJhY2soRGVjaXNpb246OkdyYW50KTsKKyAgICAgICAgICAgIG1fY3VycmVu
dFJlcXVlc3QgPSBzdGQ6Om51bGxvcHQ7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
fQorCisgICAgICAgIG1fY3VycmVudFJlcXVlc3QtPmlkZW50aWZpZXIgPSBRdW90YUluY3JlYXNl
UmVxdWVzdElkZW50aWZpZXI6OmdlbmVyYXRlVGhyZWFkU2FmZSgpOworICAgICAgICBtX2luY3Jl
YXNlUXVvdGFGdW5jdGlvbihtX2N1cnJlbnRSZXF1ZXN0LT5pZGVudGlmaWVyLCBtX3F1b3RhLCAq
bV91c2FnZSwgbV9jdXJyZW50UmVxdWVzdC0+c3BhY2VSZXF1ZXN0ZWQpOworICAgIH0KK30KKwor
Ym9vbCBRdW90YU1hbmFnZXI6OmdyYW50V2l0aEN1cnJlbnRRdW90YSh1aW50NjRfdCBzcGFjZVJl
cXVlc3RlZCkKK3sKKyAgICBpZiAoZ3JhbnRGYXN0UGF0aChzcGFjZVJlcXVlc3RlZCkpCisgICAg
ICAgIHJldHVybiB0cnVlOworCisgICAgLy8gV2hlbiBRdW90YU1hbmFnZXIgaXMgdXNlZCBmb3Ig
dGhlIGZpcnN0IHRpbWUsIHdlIHdhbnQgdG8gbWFrZSBzdXJlIGl0cyBpbml0aWFsIHF1b3RhIGlz
IGJpZ2dlciB0aGFuIGV4aXN0aW5nIGRpc2sgdXNhZ2UsCisgICAgLy8gYmFzZWQgb24gdGhlIGFz
c3VtcHRpb24gdGhhdCB0aGUgcXVvdGEgd2FzIGluY3JlYXNlZCB0byBhdCBsZWFzdCB0aGUgZGlz
ayB1c2FnZSB1bmRlciB1c2VyJ3MgcGVybWlzc2lvbiBiZWZvcmUuCisgICAgYm9vbCBzaG91bGRV
cGRhdGVRdW90YUJhc2VkT25Vc2FnZSA9ICFtX3VzYWdlOworICAgIG1fdXNhZ2UgPSBtX2dldFVz
YWdlRnVuY3Rpb24oKTsKKyAgICBpZiAoc2hvdWxkVXBkYXRlUXVvdGFCYXNlZE9uVXNhZ2UpIHsK
KyAgICAgICAgYXV0byBkZWZhdWx0UXVvdGFTdGVwID0gbV9xdW90YSAvIDEwOworICAgICAgICBt
X3F1b3RhID0gc3RkOjptYXgobV9xdW90YSwgZGVmYXVsdFF1b3RhU3RlcCAqICgoKm1fdXNhZ2Ug
LyBkZWZhdWx0UXVvdGFTdGVwKSArIDEpKTsKKyAgICB9CisgICAgbV9xdW90YUNvdW50ZG93biA9
ICptX3VzYWdlIDwgbV9xdW90YSA/IG1fcXVvdGEgLSAqbV91c2FnZSA6IDA7CisKKyAgICByZXR1
cm4gZ3JhbnRGYXN0UGF0aChzcGFjZVJlcXVlc3RlZCk7Cit9CisKK2Jvb2wgUXVvdGFNYW5hZ2Vy
OjpncmFudEZhc3RQYXRoKHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkKQoreworICAgIGlmIChzcGFj
ZVJlcXVlc3RlZCA8PSBtX3F1b3RhQ291bnRkb3duKSB7CisgICAgICAgIG1fcXVvdGFDb3VudGRv
d24gLT0gc3BhY2VSZXF1ZXN0ZWQ7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAg
IHJldHVybiBmYWxzZTsKK30KKwordm9pZCBRdW90YU1hbmFnZXI6OmRpZEluY3JlYXNlUXVvdGEo
UXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8
dWludDY0X3Q+IG5ld1F1b3RhKQoreworICAgIGlmICghbV9jdXJyZW50UmVxdWVzdCB8fCBtX2N1
cnJlbnRSZXF1ZXN0LT5pZGVudGlmaWVyICE9IGlkZW50aWZpZXIpCisgICAgICAgIHJldHVybjsK
KworICAgIGlmIChuZXdRdW90YSkgeworICAgICAgICBtX3F1b3RhID0gKm5ld1F1b3RhOworICAg
ICAgICAvLyBSZWNhbGN1bGF0ZSBtX3F1b3RhQ291bnRkb3duIGJhc2VkIG9uIHVzYWdlLgorICAg
ICAgICBtX3F1b3RhQ291bnRkb3duID0gMDsKKyAgICB9CisKKyAgICBhdXRvIGRlY2lzaW9uID0g
Z3JhbnRXaXRoQ3VycmVudFF1b3RhKG1fY3VycmVudFJlcXVlc3QtPnNwYWNlUmVxdWVzdGVkKSA/
IERlY2lzaW9uOjpHcmFudCA6IERlY2lzaW9uOjpEZW55OworICAgIG1fY3VycmVudFJlcXVlc3Qt
PmNhbGxiYWNrKGRlY2lzaW9uKTsKKyAgICBtX2N1cnJlbnRSZXF1ZXN0ID0gc3RkOjpudWxsb3B0
OworCisgICAgaWYgKCFtX2lzSGFuZGxpbmdSZXF1ZXN0cykKKyAgICAgICAgaGFuZGxlUmVxdWVz
dHMoKTsKK30KKwordm9pZCBRdW90YU1hbmFnZXI6OnJlc2V0UXVvdGFVcGRhdGVkQmFzZWRPblVz
YWdlRm9yVGVzdGluZygpCit7CisgICAgcmVzZXRRdW90YUZvclRlc3RpbmcoKTsKKyAgICBtX3Vz
YWdlID0gc3RkOjpudWxsb3B0OworfQorCit2b2lkIFF1b3RhTWFuYWdlcjo6cmVzZXRRdW90YUZv
clRlc3RpbmcoKQoreworICAgIG1fcXVvdGEgPSBtX2luaXRpYWxRdW90YTsKKyAgICBtX3F1b3Rh
Q291bnRkb3duID0gMDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvUXVvdGFNYW5hZ2VyLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvUXVvdGFNYW5hZ2VyLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMmFiNDhjODhhYzg3YTYwNjJmOGNjN2JjMjc4ZWQ2OTNhMDY2NzY1NAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9RdW90YU1hbmFnZXIu
aApAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
ICJRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDx3dGYvQ29tcGxl
dGlvbkhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK2NsYXNzIFF1b3RhTWFuYWdlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxR
dW90YU1hbmFnZXI+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UXVvdGFNYW5hZ2VyPiB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgdXNpbmcgR2V0VXNhZ2VGdW5j
dGlvbiA9IEZ1bmN0aW9uPHVpbnQ2NF90KCk+OworICAgIHVzaW5nIEluY3JlYXNlUXVvdGFGdW5j
dGlvbiA9IEZ1bmN0aW9uPHZvaWQoUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLCB1aW50
NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRVc2FnZSwgdWludDY0X3QgcmVxdWVz
dGVkSW5jcmVhc2UpPjsKKyAgICBzdGF0aWMgUmVmPFF1b3RhTWFuYWdlcj4gY3JlYXRlKHVpbnQ2
NF90IHF1b3RhLCBHZXRVc2FnZUZ1bmN0aW9uJiYsIEluY3JlYXNlUXVvdGFGdW5jdGlvbiYmKTsK
KworICAgIGVudW0gY2xhc3MgRGVjaXNpb24gOiBib29sIHsgRGVueSwgR3JhbnQgfTsKKyAgICB1
c2luZyBSZXF1ZXN0Q2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKERlY2lzaW9uKT47
CisgICAgdm9pZCByZXF1ZXN0U3BhY2UodWludDY0X3Qgc3BhY2VSZXF1ZXN0ZWQsIFJlcXVlc3RD
YWxsYmFjayYmKTsKKyAgICB2b2lkIGRpZEluY3JlYXNlUXVvdGEoUXVvdGFJbmNyZWFzZVJlcXVl
c3RJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBuZXdRdW90YSk7CisKKyAgICB2
b2lkIHJlc2V0UXVvdGFVcGRhdGVkQmFzZWRPblVzYWdlRm9yVGVzdGluZygpOworICAgIHZvaWQg
cmVzZXRRdW90YUZvclRlc3RpbmcoKTsKKworcHJpdmF0ZToKKyAgICBRdW90YU1hbmFnZXIodWlu
dDY0X3QgcXVvdGEsIEdldFVzYWdlRnVuY3Rpb24mJiwgSW5jcmVhc2VRdW90YUZ1bmN0aW9uJiYp
OworICAgIHZvaWQgaGFuZGxlUmVxdWVzdHMoKTsKKyAgICBib29sIGdyYW50V2l0aEN1cnJlbnRR
dW90YSh1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCk7CisgICAgYm9vbCBncmFudEZhc3RQYXRoKHVp
bnQ2NF90IHNwYWNlUmVxdWVzdGVkKTsKKworICAgIHN0cnVjdCBSZXF1ZXN0IHsKKyAgICAgICAg
dWludDY0X3Qgc3BhY2VSZXF1ZXN0ZWQ7CisgICAgICAgIFJlcXVlc3RDYWxsYmFjayBjYWxsYmFj
azsKKyAgICAgICAgUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyIGlkZW50aWZpZXI7Cisg
ICAgfTsKKyAgICBEZXF1ZTxSZXF1ZXN0PiBtX3JlcXVlc3RzOworICAgIHN0ZDo6b3B0aW9uYWw8
UmVxdWVzdD4gbV9jdXJyZW50UmVxdWVzdDsKKyAgICBib29sIG1faXNIYW5kbGluZ1JlcXVlc3Rz
IHsgZmFsc2UgfTsKKyAgICB1aW50NjRfdCBtX3F1b3RhQ291bnRkb3duIHsgMCB9OworICAgIHVp
bnQ2NF90IG1fcXVvdGE7CisgICAgdWludDY0X3QgbV9pbml0aWFsUXVvdGE7IC8vIFRlc3Qgb25s
eS4KKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBtX3VzYWdlOworICAgIEdldFVzYWdlRnVu
Y3Rpb24gbV9nZXRVc2FnZUZ1bmN0aW9uOworICAgIEluY3JlYXNlUXVvdGFGdW5jdGlvbiBtX2lu
Y3JlYXNlUXVvdGFGdW5jdGlvbjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggMzNmODIyM2U1MjllMDc4ZDZi
MmJiODE3Mjc2ZWJiZThjMTk5YTFlYi4uYzBiMDQ5ZjhmYzY4YmQyZGIyNzY3NDcwYTdiODQ1ODRh
ODRlMjZiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdl
cy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0y
ODgsNiArMjg4LDcgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQo
KToKICAgICAgICAgJ1dlYkNvcmU6Ok5hdGl2ZUltYWdlUmVmZXJlbmNlJywKICAgICAgICAgJ1dl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlBsYXliYWNrVGFyZ2V0
Q2xpZW50Q29udGV4dElkZW50aWZpZXInLAorICAgICAgICAnV2ViS2l0OjpRdW90YUluY3JlYXNl
UmVxdWVzdElkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6UGx1Z2luTG9hZENsaWVudFBv
bGljeScsCiAgICAgICAgICdXZWJDb3JlOjpQb2ludGVySUQnLAogICAgICAgICAnV2ViQ29yZTo6
UHVzaFN1YnNjcmlwdGlvbklkZW50aWZpZXInLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2Vic2l0ZURhdGEvUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLmggYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9RdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZp
ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iZTQ1NGI2YTA4YjY4YTIwYzY1MGRjODk3NjMyODU1OGEzNzIwMWY1
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGEvUXVv
dGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLmgKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVy
VHlwZSB7IH07Cit1c2luZyBRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIgPSBPYmplY3RJ
ZGVudGlmaWVyPFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllclR5cGU+OworCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVE
YXRhU3RvcmVQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0
b3JlUGFyYW1ldGVycy5oCmluZGV4IDE1M2JmOTNiZGY2ZmYxMWI0NjBmNjQ4MjViNDUwMzA4Yjg0
NWQzOGQuLjIwOTg0NjgxNjI5OTA0NzMzODg0Y2ZjYjEyN2FhNTcyMWQyY2VlODkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmgKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaApAQCAt
NzEsOCArNzEsOCBAQCBzdHJ1Y3QgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgewogICAgIFN0
cmluZyBnZW5lcmFsU3RvcmFnZURpcmVjdG9yeTsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUgZ2VuZXJhbFN0b3JhZ2VEaXJlY3RvcnlIYW5kbGU7CiAKLSAgICB1aW50NjRfdCBwZXJPcmln
aW5TdG9yYWdlUXVvdGEgeyBXZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2VyOjpkZWZhdWx0UXVv
dGEoKSB9OwotICAgIHVpbnQ2NF90IHBlclRoaXJkUGFydHlPcmlnaW5TdG9yYWdlUXVvdGEgeyBX
ZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2VyOjpkZWZhdWx0VGhpcmRQYXJ0eVF1b3RhKCkgfTsK
KyAgICB1aW50NjRfdCBwZXJPcmlnaW5TdG9yYWdlUXVvdGE7CisgICAgdWludDY0X3QgcGVyVGhp
cmRQYXJ0eU9yaWdpblN0b3JhZ2VRdW90YTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291
cmNlcy50eHQKaW5kZXggNTdlZjNiMTRlYWYyYzEwOTIwOThlZTk0MzJmNTA4YzYxMWU1OGUzNS4u
NmE2NjliYjAwZWMxYTk2YWVmYTYzZDQ4YjE3ZWI0MjVlMGZlN2U3MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBA
IC0xNDQsMTAgKzE0NCwxNCBAQCBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgQG5vLXVuaWZ5CiBOZXR3b3JrUHJvY2Vzcy9zdG9y
YWdlL0ZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlci5jcHAKIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2Uv
RmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGUuY3BwCiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVT
eXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnkuY3BwCitOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lE
QlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQuY3BwCitOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lE
QlN0b3JhZ2VNYW5hZ2VyLmNwcAorTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlUmVn
aXN0cnkuY3BwCiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0xvY2FsU3RvcmFnZU1hbmFnZXIuY3Bw
CiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL01lbW9yeVN0b3JhZ2VBcmVhLmNwcAogTmV0d29ya1By
b2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwCiBOZXR3b3JrUHJvY2Vzcy9z
dG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2VyLmNwcAorTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9R
dW90YU1hbmFnZXIuY3BwCiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1NRTGl0ZVN0b3JhZ2VBcmVh
LmNwcAogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TZXNzaW9uU3RvcmFnZU1hbmFnZXIuY3BwCiBO
ZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1N0b3JhZ2VBcmVhQmFzZS5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmlu
ZGV4IGE2NzgzNjdhNzc1YTQ5YmE4MWIyNDg4Y2YzMWVhYjlkY2NjY2M5MjEuLjE5NTQ2Mjc4Nzdk
ODRjYTA4YjU3MjAwY2M4NjJlOTNkMjMzMDQzNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTQ5NSw2
ICsxNDk1LDE2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVxdWVzdFN0b3JhZ2VTcGFj
ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFdlCiAgICAgfSk7CiB9CiAKK3ZvaWQg
TmV0d29ya1Byb2Nlc3NQcm94eTo6aW5jcmVhc2VRdW90YShQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBRdW90YUluY3JlYXNlUmVx
dWVzdElkZW50aWZpZXIgaWRlbnRpZmllciwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRf
dCBjdXJyZW50VXNhZ2UsIHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkKQoreworICAgIHJlcXVlc3RT
dG9yYWdlU3BhY2Uoc2Vzc2lvbklELCBvcmlnaW4sIGN1cnJlbnRRdW90YSwgY3VycmVudFVzYWdl
LCBzcGFjZVJlcXVlc3RlZCwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHNl
c3Npb25JRCwgb3JpZ2luLCBpZGVudGlmaWVyXShhdXRvIHJlc3VsdCkgbXV0YWJsZSB7CisgICAg
ICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgc2VuZChN
ZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkRpZEluY3JlYXNlUXVvdGEoc2Vzc2lvbklELCBvcmln
aW4sIGlkZW50aWZpZXIsIHJlc3VsdCksIDApOworICAgIH0pOworfQorCiB2b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6OnJlZ2lzdGVyU2NoZW1lRm9yTGVnYWN5Q3VzdG9tUHJvdG9jb2woY29uc3Qg
U3RyaW5nJiBzY2hlbWUpCiB7CiAjaWYgRU5BQkxFKExFR0FDWV9DVVNUT01fUFJPVE9DT0xfTUFO
QUdFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmgKaW5kZXggYTRlMzY0NWViYWFlMzM2ZDE4MGI1NDE0YmFmYWEzNWQ4M2Y5
MThjNC4uMjQxZjhlNDlkNWViZjkyNGQ1NzQxMjgwODlmMTBjMmQ4ZWJkZTlkZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJQcm9jZXNzTGF1bmNoZXIuaCIKICNpbmNs
dWRlICJQcm9jZXNzVGhyb3R0bGVyLmgiCiAjaW5jbHVkZSAiUHJvY2Vzc1Rocm90dGxlckNsaWVu
dC5oIgorI2luY2x1ZGUgIlF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllci5oIgogI2luY2x1
ZGUgIlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJXZWJQcm9j
ZXNzUHJveHlNZXNzYWdlc1JlcGxpZXMuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgi
CkBAIC0zNDAsNiArMzQxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHRyaWdnZXJCcm93c2luZ0Nv
bnRleHRHcm91cFN3aXRjaEZvck5hdmlnYXRpb24oV2ViUGFnZVByb3h5SWRlbnRpZmllciwgdWlu
dDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERl
Y2lzaW9uLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVzcG9uc2VEb21haW4s
IE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyIGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9h
ZElkZW50aWZpZXJUb1Jlc3VtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIHN1Y2Nlc3Mp
PiYmKTsKIAogICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VTcGFjZShQQUw6OlNlc3Npb25JRCwgY29u
c3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgdWludDY0X3QgcXVvdGEsIHVpbnQ2NF90IGN1cnJl
bnRTaXplLCB1aW50NjRfdCBzcGFjZVJlcXVpcmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0
ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHF1b3RhKT4mJik7CisgICAgdm9pZCBpbmNyZWFzZVF1b3Rh
KFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBRdW90YUluY3Jl
YXNlUmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgY3Vy
cmVudFVzYWdlLCB1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCk7CiAKICAgICBXZWJzaXRlRGF0YVN0
b3JlKiB3ZWJzaXRlRGF0YVN0b3JlRnJvbVNlc3Npb25JRChQQUw6OlNlc3Npb25JRCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgppbmRleCAxMmQwNmNlYmQ2MmFmMTc1MGU3ODg1NTlj
MTNhMWIzOTgzZmRkMmJhLi42OGMzMmM0ZjMxZWExYTE4ZTgzMDA0NDMyN2Q1MGI4NDI5NTM2NDEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC02OCw2ICs2OCw3IEBAIG1lc3Nh
Z2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIgewogI2VuZGlmCiAKICAg
ICBSZXF1ZXN0U3RvcmFnZVNwYWNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RydWN0IFdl
YkNvcmU6OkNsaWVudE9yaWdpbiBvcmlnaW4sIHVpbnQ2NF90IHF1b3RhLCB1aW50NjRfdCBjdXJy
ZW50U2l6ZSwgdWludDY0X3Qgc3BhY2VSZXF1aXJlZCkgLT4gKHN0ZDo6b3B0aW9uYWw8dWludDY0
X3Q+IG5ld1F1b3RhKSBBc3luYworICAgIEluY3JlYXNlUXVvdGEoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBzdHJ1Y3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbiwgV2ViS2l0OjpRdW90
YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIgaWRlbnRpZmllciwgdWludDY0X3QgcXVvdGEsIHVp
bnQ2NF90IGN1cnJlbnRTaXplLCB1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCkKICAgICAKICAgICBS
ZXNvdXJjZUxvYWREaWRTZW5kUmVxdWVzdChXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIg
cGFnZUlkZW50aWZpZXIsIHN0cnVjdCBXZWJLaXQ6OlJlc291cmNlTG9hZEluZm8gcmVzb3VyY2VM
b2FkSW5mbywgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIHN0ZDo6b3B0aW9uYWw8
SVBDOjpGb3JtRGF0YVJlZmVyZW5jZT4gaHR0cEJvZHkpCiAgICAgUmVzb3VyY2VMb2FkRGlkUGVy
Zm9ybUhUVFBSZWRpcmVjdGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlk
ZW50aWZpZXIsIHN0cnVjdCBXZWJLaXQ6OlJlc291cmNlTG9hZEluZm8gcmVzb3VyY2VMb2FkSW5m
bywgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNvdXJjZVJlc3BvbnNlLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggMDhjZWNmZWJmZTBk
ZTQ0YjFmNWE0YjUwMTE0MDVlMWZkODE1MDlmZS4uMTMyOTA1NTcyZjRiOGMzZDA3OTU4MzQzMTQ4
YzJmYjU2ODNmZWZiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTE3MTYsNyArMTcxNiw3IEBAIHZv
aWQgV2Vic2l0ZURhdGFTdG9yZTo6ZGlzcGF0Y2hPblF1ZXVlKEZ1bmN0aW9uPHZvaWQoKT4mJiBm
dW5jdGlvbikKIHVpbnQ2NF90IFdlYnNpdGVEYXRhU3RvcmU6OnBlclRoaXJkUGFydHlPcmlnaW5T
dG9yYWdlUXVvdGEoKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBDb25zaWRlciB3aGV0aGVyIGFs
bG93aW5nIHRvIHNldCBhIHBlclRoaXJkUGFydHlPcmlnaW5TdG9yYWdlUXVvdGEgZnJvbSBhIFdl
YnNpdGVEYXRhU3RvcmUuCi0gICAgcmV0dXJuIFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6
OmRlZmF1bHRUaGlyZFBhcnR5UXVvdGFGcm9tUGVyT3JpZ2luUXVvdGEocGVyT3JpZ2luU3RvcmFn
ZVF1b3RhKCkpOworICAgIHJldHVybiBwZXJPcmlnaW5TdG9yYWdlUXVvdGEoKSAvIDEwOwogfQog
CiB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldENhY2hlTW9kZWxTeW5jaHJvbm91c2x5Rm9yVGVz
dGluZyhDYWNoZU1vZGVsIGNhY2hlTW9kZWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXggNmJjNjkzNjljMzM4
MzI4NjlkZWExZjVkYWE1MGU3OWZhYTZlN2JmOS4uODVlZTMxZTEzODNkOTdkNjQ2YzY5OGMyZGVm
N2Q5YzMzNGFiNzViZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaApAQCAtMzUwLDYgKzM1MCw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURp
cmVjdG9yeSgpOwogICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0SmF2YVNjcmlwdENvbmZp
Z3VyYXRpb25EaXJlY3RvcnkoKTsKICAgICBzdGF0aWMgYm9vbCBodHRwM0VuYWJsZWQoKTsKKyAg
ICBzdGF0aWMgY29uc3RleHByIHVpbnQ2NF90IGRlZmF1bHRQZXJPcmlnaW5RdW90YSgpIHsgcmV0
dXJuIDEwMDAgKiBNQjsgfQogCiAgICAgdm9pZCByZXNldFF1b3RhKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CiAgICAgdm9pZCBjbGVhclN0b3JhZ2UoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcAppbmRleCAz
MzBiOGIxMDVhNzlkYTY1ZGMyMDdhN2VmZTNiYzM3NjAwMGUyZjFhLi4xYWU2ZDBiMTFhZDM4NGY2
NDE2ZmZkM2JmNTQ4MzcyNWE0ZmYzYjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24uY3BwCkBAIC0zMyw2ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBXZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24o
SXNQZXJzaXN0ZW50IGlzUGVyc2lzdGVudCwgV2lsbENvcHlQYXRoc0Zyb21FeGlzdGluZ0NvbmZp
Z3VyYXRpb24gd2lsbENvcHlQYXRocykKICAgICA6IG1faXNQZXJzaXN0ZW50KGlzUGVyc2lzdGVu
dCkKKyAgICAsIG1fcGVyT3JpZ2luU3RvcmFnZVF1b3RhKFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRQZXJPcmlnaW5RdW90YSgpKQogewogICAgIGlmIChpc1BlcnNpc3RlbnQgPT0gSXNQZXJzaXN0
ZW50OjpZZXMgJiYgd2lsbENvcHlQYXRocyA9PSBXaWxsQ29weVBhdGhzRnJvbUV4aXN0aW5nQ29u
ZmlndXJhdGlvbjo6Tm8pIHsKICAgICAgICAgc2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeShX
ZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCmluZGV4IGYxNzFhZDRjZTVlMWI1Y2Ux
Mzk0ZWM3ODA5NTI0MTA3ZjgyYzE3NGEuLjMwYTI5OTMxMDIyN2QyZjcyNGY0MjU3NmI2NjEyNTQ3
Yjk2MWNmMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaApAQCAtMjYs
NyArMjYsNiBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKLSNpbmNs
dWRlIDxXZWJDb3JlL1N0b3JhZ2VRdW90YU1hbmFnZXIuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTIwNyw3ICsyMDYsNyBAQCBw
cml2YXRlOgogCiAgICAgU3RyaW5nIG1fY2FjaGVTdG9yYWdlRGlyZWN0b3J5OwogICAgIFN0cmlu
ZyBtX2dlbmVyYWxTdG9yYWdlRGlyZWN0b3J5OwotICAgIHVpbnQ2NF90IG1fcGVyT3JpZ2luU3Rv
cmFnZVF1b3RhIHsgV2ViQ29yZTo6U3RvcmFnZVF1b3RhTWFuYWdlcjo6ZGVmYXVsdFF1b3RhKCkg
fTsKKyAgICB1aW50NjRfdCBtX3Blck9yaWdpblN0b3JhZ2VRdW90YTsKICAgICBTdHJpbmcgbV9u
ZXR3b3JrQ2FjaGVEaXJlY3Rvcnk7CiAgICAgU3RyaW5nIG1fYXBwbGljYXRpb25DYWNoZURpcmVj
dG9yeTsKICAgICBTdHJpbmcgbV9hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlO
YW1lIHsgIkZpbGVzIl9zIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCAwYzdjMzFiYzU1N2I1NWQ1MTcwNWZjMzlkN2U2NzljOTRjNmEw
YWYzLi5hMWU5YzU3NTY1OThmMTg2YjQyMTdkYmIyZWYwZjUzN2NkYTAwNWQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0NjcsNiAr
MTQ2NywxMSBAQAogCQk5M0IyNjE0RDIyN0QxNDlFMDBCOTdBNzYgLyogU3RvcmFnZU1hbmFnZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjI2MTQ5
MjI3RDE0NzIwMEI5N0E3NiAvKiBTdG9yYWdlTWFuYWdlci5oICovOyB9OwogCQk5M0IyNjE0RTIy
N0QxNEIxMDBCOTdBNzYgLyogTG9jYWxTdG9yYWdlRGF0YWJhc2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjI2MTQ1MjI3RDE0NzAwMEI5N0E3NiAv
KiBMb2NhbFN0b3JhZ2VEYXRhYmFzZS5oICovOyB9OwogCQk5M0IyNjE0RjIyN0QxNEIxMDBCOTdB
NzYgLyogTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0IyNjE0NjIyN0QxNDcxMDBCOTdBNzYgLyogTG9j
YWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmggKi87IH07CisJCTkzQjYzMUU1MjdBQkE2MjgwMDQ0
M0E0NCAvKiBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0I2MzFFNDI3QUJBNjI3MDA0NDNBNDQgLyog
SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5oICovOyB9OworCQk5M0I2MzFFODI3QUJBNjVE
MDA0NDNBNDQgLyogSURCU3RvcmFnZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjYzMUU2MjdBQkE2NUMwMDQ0M0E0NCAvKiBJREJTdG9y
YWdlTWFuYWdlci5oICovOyB9OworCQk5M0I2MzFFRDI3QUJBNkI0MDA0NDNBNDQgLyogSURCU3Rv
cmFnZVJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5M0I2MzFFQjI3QUJBNkIzMDA0NDNBNDQgLyogSURCU3RvcmFnZVJlZ2lzdHJ5LmggKi87
IH07CisJCTkzQjYzMUYxMjdBQkFDQTkwMDQ0M0E0NCAvKiBRdW90YU1hbmFnZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjYzMUVGMjdBQkFDQTkw
MDQ0M0E0NCAvKiBRdW90YU1hbmFnZXIuaCAqLzsgfTsKKwkJOTNCNjMxRjMyN0FCQUQ4MDAwNDQz
QTQ0IC8qIFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCNjMxRjIyN0FCQUQ3RjAwNDQzQTQ0IC8q
IFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllci5oICovOyB9OwogCQk5M0JERUIwMTE3MURE
N0FGMDBCRkVFMUIgLyogV0tQYWdlTG9hZFR5cGVzUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCREVCMDAxNzFERDdBRjAwQkZFRTFCIC8q
IFdLUGFnZUxvYWRUeXBlc1ByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk5M0Q2Qjc3MjI1NEJCNTE5MDA1OEREM0EgLyogU3BlZWNoUmVj
b2duaXRpb25TZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDkzRDZCNzZDMjU0Qjg5NTgwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblNlcnZl
ci5oICovOyB9OwogCQk5M0Q2Qjc3MzI1NEJCOEM3MDA1OEREM0EgLyogV2ViU3BlZWNoUmVjb2du
aXRpb25Db25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5M0Q2Qjc2ODI1NEI3QkM2MDA1OEREM0EgLyogV2ViU3BlZWNoUmVjb2duaXRpb25D
b25uZWN0aW9uLmggKi87IH07CkBAIC01MzU2LDYgKzUzNjEsMTUgQEAKIAkJOTNCMjYxNDkyMjdE
MTQ3MjAwQjk3QTc2IC8qIFN0b3JhZ2VNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFN0b3JhZ2VNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTkzQjI2MTRBMjI3RDE0NzIwMEI5N0E3NiAvKiBTdG9yYWdlTWFuYWdlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdG9yYWdlTWFuYWdlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQjI2MTRDMjI3RDE0NzIwMEI5N0E3NiAvKiBMb2NhbFN0
b3JhZ2VEYXRhYmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBM
b2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkz
QjYzMUUzMjdBQkE1RjcwMDQ0M0E0NCAvKiBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0I2MzFFNDI3QUJBNjI3MDA0NDNBNDQgLyog
SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTkzQjYzMUU2MjdBQkE2NUMwMDQ0M0E0NCAvKiBJREJTdG9yYWdlTWFuYWdl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJREJTdG9yYWdlTWFuYWdlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0I2MzFFNzI3QUJBNjVDMDA0NDNBNDQg
LyogSURCU3RvcmFnZU1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSURCU3RvcmFnZU1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk5M0I2MzFFQTI3QUJBNkIyMDA0NDNBNDQgLyogSURCU3RvcmFnZVJlZ2lzdHJ5LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElEQlN0b3JhZ2VSZWdpc3RyeS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzQjYzMUVCMjdBQkE2QjMwMDQ0M0E0NCAv
KiBJREJTdG9yYWdlUmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SURCU3RvcmFnZVJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzQjYz
MUVFMjdBQkFDQTgwMDQ0M0E0NCAvKiBRdW90YU1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUXVvdGFNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJOTNCNjMxRUYyN0FCQUNBOTAwNDQzQTQ0IC8qIFF1b3RhTWFuYWdlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBRdW90YU1hbmFnZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNCNjMxRjIyN0FCQUQ3RjAwNDQzQTQ0IC8qIFF1b3RhSW5j
cmVhc2VSZXF1ZXN0SWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTNCQTA0REEyMTUxQURGMzAwN0Y0NTVGIC8qIFdlYlNXU2VydmVyQ29ubmVjdGlv
bi5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJTV1NlcnZlckNvbm5lY3Rp
b24ubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQkEwNERCMjE1
MUFERjMwMDdGNDU1RiAvKiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQkEwNERDMjE1MUFERjMwMDdGNDU1
RiAvKiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmlu
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzU2OSw2ICs3NTgzLDcgQEAKIAkJMUFC
RjQzNzgxQTM2ODAzNTAwM0ZCMEU2IC8qIFdlYnNpdGVEYXRhICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk5M0I2MzFGMjI3QUJBRDdGMDA0NDNBNDQgLyog
UXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLmggKi8sCiAJCQkJMUE0ODMyRDQxQTlDREY5
NjAwOEI0REZFIC8qIFdlYnNpdGVEYXRhLmNwcCAqLywKIAkJCQkxQTQ4MzJENTFBOUNERjk2MDA4
QjRERkUgLyogV2Vic2l0ZURhdGEuaCAqLywKIAkJCQkxQTI4QjhDQjFDODBFRDU5MDA2RkQ3NDMg
LyogV2Vic2l0ZURhdGFGZXRjaE9wdGlvbi5oICovLApAQCAtMTA0MjIsNiArMTA0MzcsMTIgQEAK
IAkJCQk5MzVCNTc5ODI2RjUxMjcwMDA4QjQ4QUMgLyogRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVS
ZWdpc3RyeS5oICovLAogCQkJCTkzMUEwNzUxMjZGMDYzMTAwMDQ0NzRDRCAvKiBGaWxlU3lzdGVt
U3RvcmFnZU1hbmFnZXIuY3BwICovLAogCQkJCTkzMUEwNzUwMjZGMDYzMTAwMDQ0NzRDRCAvKiBG
aWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIuaCAqLywKKwkJCQk5M0I2MzFFMzI3QUJBNUY3MDA0NDNB
NDQgLyogSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5jcHAgKi8sCisJCQkJOTNCNjMxRTQy
N0FCQTYyNzAwNDQzQTQ0IC8qIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQuaCAqLywKKwkJ
CQk5M0I2MzFFNzI3QUJBNjVDMDA0NDNBNDQgLyogSURCU3RvcmFnZU1hbmFnZXIuY3BwICovLAor
CQkJCTkzQjYzMUU2MjdBQkE2NUMwMDQ0M0E0NCAvKiBJREJTdG9yYWdlTWFuYWdlci5oICovLAor
CQkJCTkzQjYzMUVBMjdBQkE2QjIwMDQ0M0E0NCAvKiBJREJTdG9yYWdlUmVnaXN0cnkuY3BwICov
LAorCQkJCTkzQjYzMUVCMjdBQkE2QjMwMDQ0M0E0NCAvKiBJREJTdG9yYWdlUmVnaXN0cnkuaCAq
LywKIAkJCQk5M0U3OTlDOTI3NjA0OTdBMDA3NDAwOEEgLyogTG9jYWxTdG9yYWdlTWFuYWdlci5j
cHAgKi8sCiAJCQkJOTNFNzk5Q0IyNzYwNDk3QTAwNzQwMDhBIC8qIExvY2FsU3RvcmFnZU1hbmFn
ZXIuaCAqLywKIAkJCQk5M0U3OTlEODI3NjEyMTA4MDA3NDAwOEEgLyogTWVtb3J5U3RvcmFnZUFy
ZWEuY3BwICovLApAQCAtMTA0MzEsNiArMTA0NTIsOCBAQAogCQkJCTkzMDg1REM3MjZFMUM2RUUw
MDBFQzZBNyAvKiBOZXR3b3JrU3RvcmFnZU1hbmFnZXIubWVzc2FnZXMuaW4gKi8sCiAJCQkJOTMw
ODVEQzUyNkUxQzZDRjAwMEVDNkE3IC8qIE9yaWdpblN0b3JhZ2VNYW5hZ2VyLmNwcCAqLywKIAkJ
CQk5MzA4NURDNjI2RTFDNkNGMDAwRUM2QTcgLyogT3JpZ2luU3RvcmFnZU1hbmFnZXIuaCAqLywK
KwkJCQk5M0I2MzFFRTI3QUJBQ0E4MDA0NDNBNDQgLyogUXVvdGFNYW5hZ2VyLmNwcCAqLywKKwkJ
CQk5M0I2MzFFRjI3QUJBQ0E5MDA0NDNBNDQgLyogUXVvdGFNYW5hZ2VyLmggKi8sCiAJCQkJOTNF
Nzk5Q0MyNzYwNDk3QjAwNzQwMDhBIC8qIFNlc3Npb25TdG9yYWdlTWFuYWdlci5jcHAgKi8sCiAJ
CQkJOTNFNzk5Q0EyNzYwNDk3QTAwNzQwMDhBIC8qIFNlc3Npb25TdG9yYWdlTWFuYWdlci5oICov
LAogCQkJCTkzRTc5OUQzMjc2MTIxMDcwMDc0MDA4QSAvKiBTUUxpdGVTdG9yYWdlQXJlYS5jcHAg
Ki8sCkBAIC0xMzA0MSw2ICsxMzA2NCw5IEBACiAJCQkJMzEyQ0M5RjIyMTVCMDZGMTAwREU0MENB
IC8qIEhpZ2hQZXJmb3JtYW5jZUdQVU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzOUEy
RjMyMUUyMDY3NDUwMDM5MDU3RSAvKiBIaWdoUGVyZm9ybWFuY2VHcmFwaGljc1VzYWdlU2FtcGxl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFDMEM5NzQxRERENzYwMDAwMzJDQUQzIC8qIEljb25M
b2FkaW5nRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTkzQjYzMUU1MjdBQkE2MjgwMDQ0
M0E0NCAvKiBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJ
CQk5M0I2MzFFODI3QUJBNjVEMDA0NDNBNDQgLyogSURCU3RvcmFnZU1hbmFnZXIuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTkzQjYzMUVEMjdBQkE2QjQwMDQ0M0E0NCAvKiBJREJTdG9yYWdlUmVnaXN0
cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRTM1MUNCMTgwRjJDQ0MwMEU1M0JFOSAvKiBJREJV
dGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQ0Y2QjI1MTJDOTNFN0EwMDhGOUMzNSAv
KiBJbWFnZU9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMUVDNjlFMTg3MjA5MjEwMEI5
NTFGMCAvKiBJbXBvcnRhbmNlQXNzZXJ0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTEzMjU0LDYg
KzEzMjgwLDggQEAKIAkJCQlBMUU2ODg3MDFGNkUyQkFCMDA3MDA2QTYgLyogUXVhcmFudGluZVNQ
SS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEwQzIyN0UyNDUxMTMwQTAwRUQ2MTREIC8qIFF1aWNr
TG9va1RodW1ibmFpbGluZ1NvZnRMaW5rLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUVFNTcyNTI0
MDlGMTQyMDAyMDA1RDYgLyogUXVpY2tMb29rVGh1bWJuYWlsTG9hZGVyLmggaW4gSGVhZGVycyAq
LywKKwkJCQk5M0I2MzFGMzI3QUJBRDgwMDA0NDNBNDQgLyogUXVvdGFJbmNyZWFzZVJlcXVlc3RJ
ZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk5M0I2MzFGMTI3QUJBQ0E5MDA0NDNBNDQg
LyogUXVvdGFNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0I2QUU0NDI2MDk3OTlDMDBC
NkVENUEgLyogUmVhc29uU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0ZEMzE4MjIyQjM1MTVF
MDA4RDBFOEIgLyogUmVkaXJlY3RTT0F1dGhvcml6YXRpb25TZXNzaW9uLmggaW4gSGVhZGVycyAq
LywKIAkJCQk5QjEyMjlEMjIzRkYyQkNDMDA4Q0E3NTEgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlv
bklkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNv
bm5lY3Rpb25Ub1NlcnZlci5jcHAKaW5kZXggMDRjMjQxMGYzNWFkY2MwNDZjNTQwNmFmMGNjZTJm
ZDBlODQxYWRiMC4uZDc5MDE2OWJlMGY1OGUzMDFlZGJlNDRjMDQ0Yzc4MzkxZWY0NzQ1MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2Vi
SURCQ29ubmVjdGlvblRvU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
RGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwCkBAIC0yOSw5
ICsyOSw5IEBACiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJOZXR3b3JrU3RvcmFnZU1hbmFnZXJNZXNzYWdlcy5o
IgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYklEQlJl
c3VsdC5oIgotI2luY2x1ZGUgIldlYklEQlNlcnZlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2Vi
UHJvY2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSURCQ29ubmVjdGlvblRvU2VydmVyLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9JREJDdXJzb3JJbmZvLmg+CkBAIC04MiwxMzIgKzgyLDEzMiBAQCBJ
REJDbGllbnQ6OklEQkNvbm5lY3Rpb25Ub1NlcnZlciYgV2ViSURCQ29ubmVjdGlvblRvU2VydmVy
Ojpjb3JlQ29ubmVjdGlvblRvU2VydgogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6
ZGVsZXRlRGF0YWJhc2UoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhKQogewotICAg
IHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6RGVsZXRlRGF0YWJhc2UocmVxdWVzdERhdGEp
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkRlbGV0ZURhdGFi
YXNlKHJlcXVlc3REYXRhKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpv
cGVuRGF0YWJhc2UoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhKQogewotICAgIHNl
bmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6T3BlbkRhdGFiYXNlKHJlcXVlc3REYXRhKSk7Cisg
ICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpPcGVuRGF0YWJhc2UocmVx
dWVzdERhdGEpKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmFib3J0VHJh
bnNhY3Rpb24oY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZp
ZXIpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyOjpBYm9ydFRyYW5zYWN0aW9u
KHRyYW5zYWN0aW9uSWRlbnRpZmllcikpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9y
YWdlTWFuYWdlcjo6QWJvcnRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbklkZW50aWZpZXIpKTsKIH0K
IAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmNvbW1pdFRyYW5zYWN0aW9uKGNvbnN0
IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBw
ZW5kaW5nUmVxdWVzdENvdW50KQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6
Q29tbWl0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZGVudGlmaWVyLCBwZW5kaW5nUmVxdWVzdENv
dW50KSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpDb21taXRU
cmFuc2FjdGlvbih0cmFuc2FjdGlvbklkZW50aWZpZXIsIHBlbmRpbmdSZXF1ZXN0Q291bnQpKTsK
IH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRpZEZpbmlzaEhhbmRsaW5nVmVy
c2lvbkNoYW5nZVRyYW5zYWN0aW9uKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZp
ZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKQog
ewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6RGlkRmluaXNoSGFuZGxpbmdWZXJz
aW9uQ2hhbmdlVHJhbnNhY3Rpb24oZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgdHJhbnNh
Y3Rpb25JZGVudGlmaWVyKSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5h
Z2VyOjpEaWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbihkYXRhYmFzZUNv
bm5lY3Rpb25JZGVudGlmaWVyLCB0cmFuc2FjdGlvbklkZW50aWZpZXIpKTsKIH0KIAogdm9pZCBX
ZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVl
c3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiBpbmZvKQogewot
ICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6Q3JlYXRlT2JqZWN0U3RvcmUocmVxdWVz
dERhdGEsIGluZm8pKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6
OkNyZWF0ZU9iamVjdFN0b3JlKHJlcXVlc3REYXRhLCBpbmZvKSk7CiB9CiAKIHZvaWQgV2ViSURC
Q29ubmVjdGlvblRvU2VydmVyOjpkZWxldGVPYmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0
YSYgcmVxdWVzdERhdGEsIGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lKQogewotICAgIHNl
bmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6RGVsZXRlT2JqZWN0U3RvcmUocmVxdWVzdERhdGEs
IG9iamVjdFN0b3JlTmFtZSkpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFu
YWdlcjo6RGVsZXRlT2JqZWN0U3RvcmUocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlTmFtZSkpOwog
fQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6cmVuYW1lT2JqZWN0U3RvcmUoY29u
c3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJ
REJTZXJ2ZXI6OlJlbmFtZU9iamVjdFN0b3JlKHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50
aWZpZXIsIG5ld05hbWUpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFn
ZXI6OlJlbmFtZU9iamVjdFN0b3JlKHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIs
IG5ld05hbWUpKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmNsZWFyT2Jq
ZWN0U3RvcmUoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCB1aW50NjRfdCBvYmpl
Y3RTdG9yZUlkZW50aWZpZXIpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyOjpD
bGVhck9iamVjdFN0b3JlKHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIpKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkNsZWFyT2JqZWN0U3RvcmUo
cmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmllcikpOwogfQogCiB2b2lkIFdlYklEQkNv
bm5lY3Rpb25Ub1NlcnZlcjo6Y3JlYXRlSW5kZXgoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVl
c3REYXRhLCBjb25zdCBJREJJbmRleEluZm8mIGluZm8pCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6
V2ViSURCU2VydmVyOjpDcmVhdGVJbmRleChyZXF1ZXN0RGF0YSwgaW5mbykpOworICAgIHNlbmQo
TWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Q3JlYXRlSW5kZXgocmVxdWVzdERhdGEs
IGluZm8pKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRlbGV0ZUluZGV4
KGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgdWludDY0X3Qgb2JqZWN0U3RvcmVJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGluZGV4TmFtZSkKIHsKLSAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJJREJTZXJ2ZXI6OkRlbGV0ZUluZGV4KHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50
aWZpZXIsIGluZGV4TmFtZSkpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFu
YWdlcjo6RGVsZXRlSW5kZXgocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5k
ZXhOYW1lKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpyZW5hbWVJbmRl
eChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIHVpbnQ2NF90IG9iamVjdFN0b3Jl
SWRlbnRpZmllciwgdWludDY0X3QgaW5kZXhJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05h
bWUpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyOjpSZW5hbWVJbmRleChyZXF1
ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleElkZW50aWZpZXIsIG5ld05hbWUp
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OlJlbmFtZUluZGV4
KHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4SWRlbnRpZmllciwgbmV3
TmFtZSkpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6cHV0T3JBZGQoY29u
c3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXlEYXRhJiBrZXlEYXRh
LCBjb25zdCBJREJWYWx1ZSYgdmFsdWUsIGNvbnN0IEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVy
d3JpdGVNb2RlIG1vZGUpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyOjpQdXRP
ckFkZChyZXF1ZXN0RGF0YSwga2V5RGF0YSwgdmFsdWUsIG1vZGUpKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OlB1dE9yQWRkKHJlcXVlc3REYXRhLCBrZXlEYXRh
LCB2YWx1ZSwgbW9kZSkpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Z2V0
UmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCR2V0UmVj
b3JkRGF0YSYgZ2V0UmVjb3JkRGF0YSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2
ZXI6OkdldFJlY29yZChyZXF1ZXN0RGF0YSwgZ2V0UmVjb3JkRGF0YSkpOworICAgIHNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6R2V0UmVjb3JkKHJlcXVlc3REYXRhLCBnZXRS
ZWNvcmREYXRhKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpnZXRBbGxS
ZWNvcmRzKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCR2V0QWxs
UmVjb3Jkc0RhdGEmIGdldEFsbFJlY29yZHNEYXRhKQogewotICAgIHNlbmQoTWVzc2FnZXM6Oldl
YklEQlNlcnZlcjo6R2V0QWxsUmVjb3JkcyhyZXF1ZXN0RGF0YSwgZ2V0QWxsUmVjb3Jkc0RhdGEp
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkdldEFsbFJlY29y
ZHMocmVxdWVzdERhdGEsIGdldEFsbFJlY29yZHNEYXRhKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29u
bmVjdGlvblRvU2VydmVyOjpnZXRDb3VudChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERh
dGEsIGNvbnN0IElEQktleVJhbmdlRGF0YSYgcmFuZ2UpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6
V2ViSURCU2VydmVyOjpHZXRDb3VudChyZXF1ZXN0RGF0YSwgcmFuZ2UpKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkdldENvdW50KHJlcXVlc3REYXRhLCByYW5n
ZSkpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGVsZXRlUmVjb3JkKGNv
bnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBy
YW5nZSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OkRlbGV0ZVJlY29yZChy
ZXF1ZXN0RGF0YSwgcmFuZ2UpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1h
bmFnZXI6OkRlbGV0ZVJlY29yZChyZXF1ZXN0RGF0YSwgcmFuZ2UpKTsKIH0KIAogdm9pZCBXZWJJ
REJDb25uZWN0aW9uVG9TZXJ2ZXI6Om9wZW5DdXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEmIHJl
cXVlc3REYXRhLCBjb25zdCBJREJDdXJzb3JJbmZvJiBpbmZvKQogewotICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYklEQlNlcnZlcjo6T3BlbkN1cnNvcihyZXF1ZXN0RGF0YSwgaW5mbykpOworICAgIHNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6T3BlbkN1cnNvcihyZXF1ZXN0RGF0
YSwgaW5mbykpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6aXRlcmF0ZUN1
cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkl0ZXJhdGVD
dXJzb3JEYXRhJiBkYXRhKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6SXRl
cmF0ZUN1cnNvcihyZXF1ZXN0RGF0YSwgZGF0YSkpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdv
cmtTdG9yYWdlTWFuYWdlcjo6SXRlcmF0ZUN1cnNvcihyZXF1ZXN0RGF0YSwgZGF0YSkpOwogfQog
CiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZXN0YWJsaXNoVHJhbnNhY3Rpb24odWlu
dDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCVHJhbnNhY3Rpb25J
bmZvJiBpbmZvKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6RXN0YWJsaXNo
VHJhbnNhY3Rpb24oZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgaW5mbykpOworICAgIHNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6RXN0YWJsaXNoVHJhbnNhY3Rpb24o
ZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgaW5mbykpOwogfQogCiB2b2lkIFdlYklEQkNv
bm5lY3Rpb25Ub1NlcnZlcjo6ZGF0YWJhc2VDb25uZWN0aW9uUGVuZGluZ0Nsb3NlKHVpbnQ2NF90
IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2Vi
SURCU2VydmVyOjpEYXRhYmFzZUNvbm5lY3Rpb25QZW5kaW5nQ2xvc2UoZGF0YWJhc2VDb25uZWN0
aW9uSWRlbnRpZmllcikpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdl
cjo6RGF0YWJhc2VDb25uZWN0aW9uUGVuZGluZ0Nsb3NlKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50
aWZpZXIpKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRhdGFiYXNlQ29u
bmVjdGlvbkNsb3NlZCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKQogewot
ICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6RGF0YWJhc2VDb25uZWN0aW9uQ2xvc2Vk
KGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrU3RvcmFnZU1hbmFnZXI6OkRhdGFiYXNlQ29ubmVjdGlvbkNsb3NlZChkYXRhYmFzZUNvbm5l
Y3Rpb25JZGVudGlmaWVyKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjph
Ym9ydE9wZW5BbmRVcGdyYWRlTmVlZGVkKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50
aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVy
KQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6QWJvcnRPcGVuQW5kVXBncmFk
ZU5lZWRlZChkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCB0cmFuc2FjdGlvbklkZW50aWZp
ZXIpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkFib3J0T3Bl
bkFuZFVwZ3JhZGVOZWVkZWQoZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgdHJhbnNhY3Rp
b25JZGVudGlmaWVyKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpkaWRG
aXJlVmVyc2lvbkNoYW5nZUV2ZW50KHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZp
ZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0
IEluZGV4ZWREQjo6Q29ubmVjdGlvbkNsb3NlZE9uQmVoYWxmT2ZTZXJ2ZXIgY29ubmVjdGlvbkNs
b3NlZCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OkRpZEZpcmVWZXJzaW9u
Q2hhbmdlRXZlbnQoZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgcmVxdWVzdElkZW50aWZp
ZXIsIGNvbm5lY3Rpb25DbG9zZWQpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFn
ZU1hbmFnZXI6OkRpZEZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQoZGF0YWJhc2VDb25uZWN0aW9uSWRl
bnRpZmllciwgcmVxdWVzdElkZW50aWZpZXIsIGNvbm5lY3Rpb25DbG9zZWQpKTsKIH0KIAogdm9p
ZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6Om9wZW5EQlJlcXVlc3RDYW5jZWxsZWQoY29uc3Qg
SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklE
QlNlcnZlcjo6T3BlbkRCUmVxdWVzdENhbmNlbGxlZChyZXF1ZXN0RGF0YSkpOworICAgIHNlbmQo
TWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6T3BlbkRCUmVxdWVzdENhbmNlbGxlZChy
ZXF1ZXN0RGF0YSkpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Z2V0QWxs
RGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVx
dWVzdElkZW50aWZpZXIsIGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2luKQogewotICAgIHNlbmQo
TWVzc2FnZXM6OldlYklEQlNlcnZlcjo6R2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKHJl
cXVlc3RJZGVudGlmaWVyLCBvcmlnaW4pKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6OkdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhyZXF1ZXN0SWRlbnRp
Zmllciwgb3JpZ2luKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpkaWRE
ZWxldGVEYXRhYmFzZShjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvSW5Qcm9jZXNzSURCU2VydmVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCmluZGV4IGVhMmUy
YTc4Zjg4ZmZkZDEwMWEzYTEzN2YwZDVhMTBhNTZlMTBmYjIuLjBjYWRiNTA0MmJhMTYxMDc3Zjk0
NDlhOTczZGNmOTgzMmQzNzAyYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3Rv
cmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3Rv
cmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCkBAIC00Miw2ICs0Miw4IEBACiAKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCitzdGF0aWMgY29uc3RleHByIHVpbnQ2NF90IGRlZmF1bHRQZXJP
cmlnaW5RdW90YSA9ICAxMDAwICogTUI7CisKIFJlZjxJblByb2Nlc3NJREJTZXJ2ZXI+IEluUHJv
Y2Vzc0lEQlNlcnZlcjo6Y3JlYXRlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICBB
U1NFUlQoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpOwpAQCAtNzMsNyArNzUsNyBAQCBJblByb2Nl
c3NJREJTZXJ2ZXI6On5JblByb2Nlc3NJREJTZXJ2ZXIoKQogU3RvcmFnZVF1b3RhTWFuYWdlciog
SW5Qcm9jZXNzSURCU2VydmVyOjpxdW90YU1hbmFnZXIoY29uc3QgQ2xpZW50T3JpZ2luJiBvcmln
aW4pCiB7CiAgICAgcmV0dXJuIG1fcXVvdGFNYW5hZ2Vycy5lbnN1cmUob3JpZ2luLCBbXSB7Ci0g
ICAgICAgIHJldHVybiBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpjcmVhdGUoU3RvcmFnZVF1b3RhTWFu
YWdlcjo6ZGVmYXVsdFF1b3RhKCksIFtdIHsKKyAgICAgICAgcmV0dXJuIFN0b3JhZ2VRdW90YU1h
bmFnZXI6OmNyZWF0ZShkZWZhdWx0UGVyT3JpZ2luUXVvdGEsIFtdIHsKICAgICAgICAgICAgIHJl
dHVybiAwOwogICAgICAgICB9LCBbXSh1aW50NjRfdCBxdW90YSwgdWludDY0X3QgY3VycmVudFNw
YWNlLCB1aW50NjRfdCBzcGFjZUluY3JlYXNlLCBhdXRvIGNhbGxiYWNrKSB7CiAgICAgICAgICAg
ICBjYWxsYmFjayhxdW90YSArIGN1cnJlbnRTcGFjZSArIHNwYWNlSW5jcmVhc2UpOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDU2ZDJlODkxZWIx
Mjg2OTU1NWI5ZGM5MzZjYjA5NTUwZmZmODA5NmQuLjEyYjFjMWZkZjMyZmQzOTA0YjY1NzJjYjVk
ZjhkZGY3MDQ3MzExZGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMi0wMi0wNyAgU2lodWkgTGl1ICA8c2lodWlf
bGl1QGFwcGxlLmNvbT4KKworICAgICAgICBNYW5hZ2UgSW5kZXhlZERCIHN0b3JhZ2UgYnkgb3Jp
Z2luCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ5
MjUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg3NTU1MDE0PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IENocmlzIER1bWV6LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9JbmRleGVkREJGaWxlTmFtZS5tbToKKyAgICAgICAgKHJ1blRlc3QpOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCUGVyc2lzdGVuY2UubW06
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJTdXNw
ZW5kSW1taW5lbnRseS5tbToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvU3RvcmVCbG9iVGhlbkRlbGV0ZS5tbToKKyAgICAgICAgKFRF
U1QpOgorCiAyMDIyLTAyLTA3ICBSb3kgUmVhcG9yICA8cnJlYXBvckBhcHBsZS5jb20+CiAKICAg
ICAgICAgW3dlYmtpdGNvcmVweV0gQXV0b2luc3RhbGxlciBtYXkgZmFpbCB0byBpbnN0YWxsIHdo
ZWVscwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9J
bmRleGVkREJGaWxlTmFtZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvSW5kZXhlZERCRmlsZU5hbWUubW0KaW5kZXggYTZiMDEyOWJjMTA1OWM0ZjljMTE4ZDFmZDdl
ZmQyMTIzZWFjMmM3YS4uNDEwMjIyNGU0NTI3NGQzNjM3OWU0YmIwMDJhMGZlZTg5ODMyZjViYyAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVk
REJGaWxlTmFtZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0luZGV4ZWREQkZpbGVOYW1lLm1tCkBAIC03MSwyMCArNzEsMjMgQEAgc3RhdGljIHZvaWQgcnVu
VGVzdCgpCiAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBzdHJpbmcyID0gKE5TU3RyaW5nICopW2xh
c3RTY3JpcHRNZXNzYWdlIGJvZHldOwogICAgIEVYUEVDVF9XS19TVFJFUShAIlN1Y2Nlc3MiLCBz
dHJpbmcyLmdldCgpKTsKIAotICAgIC8vIEZvciBkYXRhYmFzZSB0aGF0IGlzIG5vdCBvcGVuZWQg
YWZ0ZXIgdXBncmFkZSwgaXRzIGZpbGUgc2hvdWxkIGJlIGluIHYwLgorICAgIC8vIEFsbCBkYXRh
YmFzZXMgb2YgYW4gb3JpZ2luIGFyZSBtaWdyYXRlZCB0byBuZXcgdmVyc2lvbiBkaXJlY3Rvcnkg
d2hlbiB0aGUgb3JpZ2luIGlzIGFjY2Vzc2VkLgogICAgIGF1dG8gZGVmYXVsdEZpbGVNYW5hZ2Vy
ID0gW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdOwogICAgIE5TU3RyaW5nICpleGlzdGlu
Z0RhdGFiYXNlTmFtZSA9IEAiSW5kZXhlZERCVGVzdCI7CiAgICAgTlNTdHJpbmcgKmNyZWF0ZWRE
YXRhYmFzZU5hbWUgPSBAIkluZGV4ZWREQk90aGVyIjsKICAgICBOU1N0cmluZyAqdW51c2VkRGF0
YWJhc2VOYW1lID0gQCJJbmRleGVkREJVbnVzZWQiOwogICAgIE5TU3RyaW5nICpleGlzdGluZ0Rh
dGJhc2VIYXNoID0gV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0ZUhhc2hGb3JGaWxl
TmFtZShleGlzdGluZ0RhdGFiYXNlTmFtZSk7CiAgICAgTlNTdHJpbmcgKmNyZWF0ZWREYXRhYmFz
ZUhhc2ggPSBXZWJDb3JlOjpTUUxpdGVGaWxlU3lzdGVtOjpjb21wdXRlSGFzaEZvckZpbGVOYW1l
KGNyZWF0ZWREYXRhYmFzZU5hbWUpOworICAgIE5TU3RyaW5nICp1bnVzZWREYXRhYmFzZUhhc2gg
PSBXZWJDb3JlOjpTUUxpdGVGaWxlU3lzdGVtOjpjb21wdXRlSGFzaEZvckZpbGVOYW1lKGNyZWF0
ZWREYXRhYmFzZU5hbWUpOwogICAgIE5TVVJMICppZGJSb290VVJMID0gW1tXS1dlYnNpdGVEYXRh
U3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5XTsKICAg
ICBOU1VSTCAqb2xkVmVyc2lvbkRpcmVjdG9yeVVSTCA9IFtpZGJSb290VVJMIFVSTEJ5QXBwZW5k
aW5nUGF0aENvbXBvbmVudDpAInYwIl07CiAgICAgTlNVUkwgKm5ld1ZlcnNpb25EaXJlY3RvcnlV
UkwgPSBbaWRiUm9vdFVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJ2MSJdOwogICAg
IE5TVVJMICpvbGRWZXJzaW9uT3JpZ2luRGlyZWN0b3J5VVJMID0gW29sZFZlcnNpb25EaXJlY3Rv
cnlVUkwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OiBAImZpbGVfXzAiXTsKICAgICBOU1VS
TCAqbmV3VmVyc2lvbk9yaWdpbkRpcmVjdG9yeVVSTCA9IFtuZXdWZXJzaW9uRGlyZWN0b3J5VVJM
IFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDogQCJmaWxlX18wIl07CiAgICAgTlNVUkwgKm9s
ZFZlcnNpb25VbnVzZWREYXRhYmFzZURpcmVjdG9yeVVSTCA9IFtvbGRWZXJzaW9uT3JpZ2luRGly
ZWN0b3J5VVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDp1bnVzZWREYXRhYmFzZU5hbWVd
OwotICAgIEVYUEVDVF9UUlVFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4
aXN0c0F0UGF0aDpvbGRWZXJzaW9uVW51c2VkRGF0YWJhc2VEaXJlY3RvcnlVUkwucGF0aF0pOwor
ICAgIE5TVVJMICpuZXdWZXJzaW9uVW51c2VkRGF0YWJhc2VEaXJlY3RvcnlVUkwgPSBbbmV3VmVy
c2lvbk9yaWdpbkRpcmVjdG9yeVVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6dW51c2Vk
RGF0YWJhc2VIYXNoXTsKKyAgICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRN
YW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOm9sZFZlcnNpb25VbnVzZWREYXRhYmFzZURpcmVjdG9y
eVVSTC5wYXRoXSk7CisgICAgRVhQRUNUX1RSVUUoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5h
Z2VyXSBmaWxlRXhpc3RzQXRQYXRoOm5ld1ZlcnNpb25VbnVzZWREYXRhYmFzZURpcmVjdG9yeVVS
TC5wYXRoXSk7CiAgICAgCiAgICAgLy8gRm9yIGRhdGFiYXNlIHRoYXQgaXMgb3BlbmVkIGFmdGVy
IHVwZ3JhZGUsIGl0cyBmaWxlIHNob3VsZCBvbmx5IGJlIGluIHYxLgogICAgIE5TVVJMICpvbGRW
ZXJzaW9uRXhpc3RpbmdEYXRhYmFzZURpcmVjdG9yeVVSTCA9IFtvbGRWZXJzaW9uT3JpZ2luRGly
ZWN0b3J5VVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDogZXhpc3RpbmdEYXRhYmFzZU5h
bWVdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9J
bmRleGVkREJQZXJzaXN0ZW5jZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvSW5kZXhlZERCUGVyc2lzdGVuY2UubW0KaW5kZXggMjcxOGM0YWIzNjlhODE4MmRhMGUx
MThjNDUxNjY2YWU5ZDFlMmM3NC4uNGYwYThlYzk0NDU0OGNhNmM3ODcwMTVjNmI2ZDk1MDg1ODgz
ODhiMyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9J
bmRleGVkREJQZXJzaXN0ZW5jZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0luZGV4ZWREQlBlcnNpc3RlbmNlLm1tCkBAIC0zMDUsMTAgKzMwNSwxNCBAQCBU
RVNUKEluZGV4ZWREQiwgSW5kZXhlZERCVGhpcmRQYXJ0eURhdGFSZW1vdmFsKQogICAgIEVYUEVD
VF9XS19TVFJFUSggQCJkYXRhYmFzZSBpcyBjcmVhdGVkIC0gcHV0IGl0ZW0gc3VjY2VzcyIsIChO
U1N0cmluZyAqKVtsYXN0U2NyaXB0TWVzc2FnZSBib2R5XSk7CiAKICAgICByZWFkeVRvQ29udGlu
dWUgPSBmYWxzZTsKLSAgICBbW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSBm
ZXRjaERhdGFSZWNvcmRzT2ZUeXBlczp3ZWJzaXRlRGF0YVR5cGVzLmdldCgpIGNvbXBsZXRpb25I
YW5kbGVyOl4oTlNBcnJheTxXS1dlYnNpdGVEYXRhUmVjb3JkICo+ICpkYXRhUmVjb3Jkcykgewot
ICAgICAgICBFWFBFQ1RfRVEoMXUsIGRhdGFSZWNvcmRzLmNvdW50KTsKLSAgICAgICAgRVhQRUNU
X1dLX1NUUkVRKCJpZnJhbWUiLCBbW2RhdGFSZWNvcmRzIGZpcnN0T2JqZWN0XSBkaXNwbGF5TmFt
ZV0pOwotICAgICAgICBbW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSByZW1v
dmVEYXRhT2ZUeXBlczp3ZWJzaXRlRGF0YVR5cGVzLmdldCgpIGZvckRhdGFSZWNvcmRzOmRhdGFS
ZWNvcmRzIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7CisgICAgW1tXS1dlYnNpdGVEYXRhU3RvcmUg
ZGVmYXVsdERhdGFTdG9yZV0gZmV0Y2hEYXRhUmVjb3Jkc09mVHlwZXM6d2Vic2l0ZURhdGFUeXBl
cy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8V0tXZWJzaXRlRGF0YVJlY29yZCAq
PiAqcmVjb3JkcykgeworICAgICAgICBFWFBFQ1RfRVEoMnUsIHJlY29yZHMuY291bnQpOworICAg
ICAgICBOU1NvcnREZXNjcmlwdG9yICpyZWNvcmREZXNjcmlwdG9yID0gW05TU29ydERlc2NyaXB0
b3Igc29ydERlc2NyaXB0b3JXaXRoS2V5OkAiZGlzcGxheU5hbWUiIGFzY2VuZGluZzpZRVNdOwor
ICAgICAgICBOU0FycmF5ICpzb3J0RGVzY3JpcHRvcnMgPSBAW3JlY29yZERlc2NyaXB0b3JdOwor
ICAgICAgICBOU0FycmF5ICpzb3J0ZWRSZWNvcmRzID0gW3JlY29yZHMgc29ydGVkQXJyYXlVc2lu
Z0Rlc2NyaXB0b3JzOnNvcnREZXNjcmlwdG9yc107CisgICAgICAgIEVYUEVDVF9XS19TVFJFUSgi
aWZyYW1lIiwgW1tzb3J0ZWRSZWNvcmRzIG9iamVjdEF0SW5kZXg6MF0gZGlzcGxheU5hbWVdKTsK
KyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKCJ3ZWJraXQub3JnIiwgW1tzb3J0ZWRSZWNvcmRzIG9i
amVjdEF0SW5kZXg6MV0gZGlzcGxheU5hbWVdKTsKKyAgICAgICAgW1tXS1dlYnNpdGVEYXRhU3Rv
cmUgZGVmYXVsdERhdGFTdG9yZV0gcmVtb3ZlRGF0YU9mVHlwZXM6d2Vic2l0ZURhdGFUeXBlcy5n
ZXQoKSBmb3JEYXRhUmVjb3JkczpyZWNvcmRzIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7CiAgICAg
ICAgICAgICByZWFkeVRvQ29udGludWUgPSB0cnVlOwogICAgICAgICB9XTsKICAgICB9XTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERC
U3VzcGVuZEltbWluZW50bHkubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0luZGV4ZWREQlN1c3BlbmRJbW1pbmVudGx5Lm1tCmluZGV4IGRjNjM0M2UzZWRkZmU0OGRi
ZmVlZTRmNzk5OTJmZmNiNWY2MGUxNmIuLmJmOTBmNTdjZTA5NzVlOTRlNjM3MDQ3YTVkMGU5ZGZk
MThmYmQ2MjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvSW5kZXhlZERCU3VzcGVuZEltbWluZW50bHkubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJTdXNwZW5kSW1taW5lbnRseS5tbQpAQCAtNzMs
NiArNzMsMTIgQEAgc3RhdGljIHZvaWQga2VlcE5ldHdvcmtQcm9jZXNzQWN0aXZlKCkKIAogVEVT
VChJbmRleGVkREIsIEluZGV4ZWREQlN1c3BlbmRJbW1pbmVudGx5KQogeworICAgIHJlYWR5VG9D
b250aW51ZSA9IGZhbHNlOworICAgIFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3Rv
cmVdIHJlbW92ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0ZURhdGFU
eXBlc10gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxl
cjpeKCkgeworICAgICAgICByZWFkeVRvQ29udGludWUgPSB0cnVlOworICAgIH1dOworICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVhZHlUb0NvbnRpbnVlKTsKKwogICAgIGF1dG8gaGFu
ZGxlciA9IGFkb3B0TlMoW1tJbmRleGVkREJTdXNwZW5kSW1taW5lbnRseU1lc3NhZ2VIYW5kbGVy
IGFsbG9jXSBpbml0XSk7CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBbW2NvbmZpZ3VyYXRpb24gdXNl
ckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5kbGVyLmdldCgp
IG5hbWU6QCJ0ZXN0SGFuZGxlciJdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9TdG9yZUJsb2JUaGVuRGVsZXRlLm1tIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TdG9yZUJsb2JUaGVuRGVsZXRlLm1tCmluZGV4IGFhYmZm
Zjg3YmM2NGIzOTUyYjI0MTQ1MjE1ZWUwMzgyODZiN2M4OTEuLjhlODVhNDBhNWU4M2JhMDM0MzIx
ZTdlNzk2OWQ4MzU1ZTMyYzI0NjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvU3RvcmVCbG9iVGhlbkRlbGV0ZS5tbQorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1N0b3JlQmxvYlRoZW5EZWxldGUubW0KQEAgLTg3LDcg
Kzg3LDcgQEAgVEVTVChJbmRleGVkREIsIFN0b3JlQmxvYlRoZW5SZW1vdmVEYXRhKQogICAgIFtb
TlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY29weUl0ZW1BdFBhdGg6ZGF0YWJhc2VGaWxl
UGF0aCB0b1BhdGg6ZmFrZVNobVBhdGggZXJyb3I6bmlsXTsKICAgICBbW05TRmlsZU1hbmFnZXIg
ZGVmYXVsdE1hbmFnZXJdIGNvcHlJdGVtQXRQYXRoOmRhdGFiYXNlRmlsZVBhdGggdG9QYXRoOmZh
a2VXYWxQYXRoIGVycm9yOm5pbF07CiAKLSAgICAvLyBNYWtlIHNvbWUgb3RoZXIgLmJsb2IgZmls
ZXMgaW4gdGhlIGRhdGFiYXNlIGRpcmVjdG9yeSB0byBsYXRlciB2YWxpZGF0ZSB0aGF0IG9ubHkg
YXBwcm9wcmlhdGUgZmlsZXMgYXJlIGRlbGV0ZWQuCisgICAgLy8gTWFrZSBzb21lIG90aGVyIC5i
bG9iIGZpbGVzIGluIHRoZSBkYXRhYmFzZSBkaXJlY3RvcnkgdG8gbGF0ZXIgdmFsaWRhdGUgYWxs
IGJsb2IgZmlsZXMgaW4gdGhlIGRpcmVjdG9yeSBhcmUgZGVsZXRlZC4KICAgICBOU1N0cmluZyAq
b3RoZXJCbG9iMSA9IFtkYXRhYmFzZURpcmVjdG9yeSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21w
b25lbnQ6QCI3MTgyLmJsb2IiXTsKICAgICBOU1N0cmluZyAqb3RoZXJCbG9iMiA9IFtkYXRhYmFz
ZURpcmVjdG9yeSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCIxYS5ibG9iIl07CiAg
ICAgTlNTdHJpbmcgKm90aGVyQmxvYjMgPSBbZGF0YWJhc2VEaXJlY3Rvcnkgc3RyaW5nQnlBcHBl
bmRpbmdQYXRoQ29tcG9uZW50OkAiYTEuYmxvYiJdOwpAQCAtMTAyLDEzICsxMDIsMTIgQEAgVEVT
VChJbmRleGVkREIsIFN0b3JlQmxvYlRoZW5SZW1vdmVEYXRhKQogICAgICAgICBFWFBFQ1RfRkFM
U0UoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmJsb2JG
aWxlUGF0aF0pOwogICAgICAgICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRN
YW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmRhdGFiYXNlRmlsZVBhdGhdKTsKIAotICAgICAgICAv
LyBNYWtlIHN1cmUgdGhlIGZha2UgYmxvYiBmaWxlIHdpdGggYSB2YWxpZCBibG9iIGZpbGUgbmFt
ZSBpcyBnb25lLgorICAgICAgICAvLyBNYWtlIHN1cmUgYWxsIGZha2UgYmxvYiBmaWxlIGFyZSBn
b25lLgogICAgICAgICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2Vy
XSBmaWxlRXhpc3RzQXRQYXRoOm90aGVyQmxvYjFdKTsKIAotICAgICAgICAvLyBNYWtlIHN1cmUg
dGhlIGZha2UgYmxvYiBmaWxlcyB3aXRoIGludmFsaWQgYmxvYiBmaWxlIG5hbWVzIGFyZSBzdGls
bCB0aGVyZS4KLSAgICAgICAgRVhQRUNUX1RSVUUoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5h
Z2VyXSBmaWxlRXhpc3RzQXRQYXRoOm90aGVyQmxvYjJdKTsKLSAgICAgICAgRVhQRUNUX1RSVUUo
W1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOm90aGVyQmxv
YjNdKTsKLSAgICAgICAgRVhQRUNUX1RSVUUoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2Vy
XSBmaWxlRXhpc3RzQXRQYXRoOm90aGVyQmxvYjRdKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKFtb
TlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpvdGhlckJsb2Iy
XSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJd
IGZpbGVFeGlzdHNBdFBhdGg6b3RoZXJCbG9iM10pOworICAgICAgICBFWFBFQ1RfRkFMU0UoW1tO
U0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOm90aGVyQmxvYjRd
KTsKIAogICAgICAgICAvLyBNYWtlIHN1cmUgZXZlcnl0aGluZyByZWxhdGVkIHRvIHRoZSBmYWtl
IGRhdGFiYXNlIGlzIGdvbmUuCiAgICAgICAgIEVYUEVDVF9GQUxTRShbW05TRmlsZU1hbmFnZXIg
ZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6ZmFrZVNobVBhdGhdKTsK
</data>
<flag name="commit-queue"
          id="477852"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451190</attachid>
            <date>2022-02-07 18:43:48 -0800</date>
            <delta_ts>2022-02-07 19:39:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234925-20220207184347.patch</filename>
            <type>text/plain</type>
            <size>284883</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5MjM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjc1N2U4NDIyODE1ODE3
YjMwNzFkNzhmMDU5NGI2NWQ4ZDA3ZjQyZS4uZDNjNzYyOTQzYmRlNzZhNTE1MTg0YjA2MDhjMmQ4
OTYxNmFhOGUzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk1IEBACisyMDIyLTAyLTA3ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIE1hbmFnZSBJbmRleGVkREIg
c3RvcmFnZSBieSBvcmlnaW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzNDkyNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODc1NTUwMTQ+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAgQm90aCBXZWJLaXQgYW5k
IFdlYktpdExlZ2FjeSB1c2VkIElEQlNlcnZlciB0byBtYW5hZ2UgVW5pcXVlSURCRGF0YWJhc2Vz
LCBhbmQgVW5pcXVlSURCRGF0YWJhc2UgcG9pbnRlZCB0byAKKyAgICAgICAgSURCU2VydmVyLiBO
b3cgdGhhdCBXZWJLaXQgdXNlcyBXZWJLaXQ6OklEQlN0b3JhZ2VNYW5hZ2VyIHRvIG1hbmFnZSBV
bmlxdWVJREJEYXRhYmFzZXMuIFdlIHVudGllIHRoZSAKKyAgICAgICAga25vdCBiZXR3ZWVuIElE
QlNlcnZlciBhbmQgVW5pcXVlSURCRGF0YWJhc2UgYnkgYWRkaW5nIGEgbmV3IGFic3RyYWN0IGNs
YXNzIFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlciBhbmQgbWFrZQorICAgICAgICBVbmlxdWVJREJE
YXRhYmFzZSBwb2ludCB0byBVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuCisKKyAgICAgICAgQWxz
bywgYXMgcXVvdGEgY2hlY2sgaXMgbm8gbG9uZ2VyIGFzeW5jIGFjY29yZGluZyB0byBjaGFuZ2Vz
IGluIFdlYktpdCwgd2UgbmVlZCB0byB1cGRhdGUgb3BlcmF0aW9ucyBpbgorICAgICAgICBVbmlx
dWVJREJEYXRhYmFzZSB0byBhZG9wdCB0aGUgY2hhbmdlLgorCisgICAgICAgIENvdmVyZWQgYnkg
ZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnQuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6SURCU2VydmVyOjpyZWdpc3RlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OnVucmVnaXN0ZXJDb25uZWN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpjcmVhdGVCYWNraW5nU3RvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OnVwZ3JhZGVkRGF0YWJhc2VE
aXJlY3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OnJlZ2lz
dGVyRGF0YWJhc2VDb25uZWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklEQlNl
cnZlcjo6SURCU2VydmVyOjp1bnJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0aW9uKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpjbG9zZUFuZFRha2VVbmlx
dWVJREJEYXRhYmFzZSk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL0lEQlNlcnZlci5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1v
cnlJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1v
cnlJREJCYWNraW5nU3RvcmU6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUp
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3Rv
cmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3Rv
cmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlPYmplY3RTdG9yZTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5T2JqZWN0U3RvcmU6
Ok1lbW9yeU9iamVjdFN0b3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
TWVtb3J5T2JqZWN0U3RvcmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
U1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
U1FMaXRlSURCQmFja2luZ1N0b3JlOjpTUUxpdGVJREJCYWNraW5nU3RvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmVuY29kZURhdGFiYXNl
TmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6ZGVjb2RlRGF0YWJhc2VOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FM
aXRlSURCQmFja2luZ1N0b3JlOjpnZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbyk6CisgICAgICAg
IChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlQmFja2lu
Z1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0
b3JlOjpmaWxlbmFtZUZvckRhdGFiYXNlTmFtZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZnVsbERhdGFiYXNlRGly
ZWN0b3J5V2l0aFVwZ3JhZGUpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6VW5pcXVlSURCRGF0YWJhc2UpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6bWFuYWdlcik6CisgICAgICAg
IChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtQ3VycmVudE9w
ZW5PcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRh
YmFzZTo6cGVyZm9ybUN1cnJlbnRPcGVuT3BlcmF0aW9uQWZ0ZXJTcGFjZUNoZWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZUJhY2tpbmdT
dG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpj
cmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlE
QkRhdGFiYXNlOjpkZWxldGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2
ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpyZW5hbWVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpjbGVhck9iamVjdFN0b3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZUluZGV4
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0
ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6
OnJlbmFtZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0
YWJhc2U6OnB1dE9yQWRkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURC
RGF0YWJhc2U6OnB1dE9yQWRkQWZ0ZXJTcGFjZUNoZWNrKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmdldFJlY29yZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRBbGxSZWNvcmRzKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmdldENvdW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZVJlY29yZCk6
CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuQ3Vy
c29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6Oml0
ZXJhdGVDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRh
YmFzZTo6Y29tbWl0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpV
bmlxdWVJREJEYXRhYmFzZTo6YWJvcnRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJ
REJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpoYXNEYXRhSW5NZW1vcnkgY29uc3QpOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6c2VydmVyKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJh
c2VDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURC
RGF0YWJhc2VDb25uZWN0aW9uOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb246On5Vbmlx
dWVJREJEYXRhYmFzZUNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpV
bmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb246Om1hbmFnZXIpOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uaDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uOjpzZXJ2ZXIp
OiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJE
YXRhYmFzZU1hbmFnZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVu
aXF1ZUlEQkRhdGFiYXNlTWFuYWdlcjo6flVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlcik6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZVRy
YW5zYWN0aW9uOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6flVuaXF1ZUlEQkRh
dGFiYXNlVHJhbnNhY3Rpb24pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9V
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvc2hhcmVkL0lEQkVycm9yLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJFcnJvcjo6b3BlcmF0
b3IgYm9vbCBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJl
cXVlc3REYXRhLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc291
cmNlSWRlbnRpZmllci5oOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVy
OjpvcGVyYXRvciE9IGNvbnN0KToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisKIDIwMjItMDItMDcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
IAogICAgICAgICBXb3JrZXJHbG9iYWxTY29wZS5pbXBvcnRTY3JpcHRzKCkgc2hvdWxkIHByb3Rl
Y3QgYmxvYiB1cmxzIHRoYXQgd2VyZSBwYXNzZWQgaW4gdW50aWwgdGhlIGltcG9ydHMgYXJlIGRv
bmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKaW5kZXggZGIyYjU0Yjk5ODliYzI0ODg3ZWNhNzEyMDUwYjM2NjlhMzNkYWFjYy4u
YzM2NDA3NmFiNmExNGRmZDFhN2U0ODgyNTVkODIzMjIyYWRjNGUwZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNjUgQEAKKzIwMjItMDItMDcgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+
CisKKyAgICAgICAgTWFuYWdlIEluZGV4ZWREQiBzdG9yYWdlIGJ5IG9yaWdpbgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0OTI1CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS84NzU1NTAxND4KKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1l
ei4KKworICAgICAgICBJbiBuZXR3b3JrIHByb2Nlc3MsIEluZGV4ZWREQiBkYXRhIGlzIG1hbmFn
ZWQgYnkgV2ViS2l0OjpXZWJJREJTZXJ2ZXIuIEVhY2ggc2Vzc2lvbiBvd25zIGEgV2ViSURCU2Vy
dmVyIAorICAgICAgICAoSURCU2VydmVyKSBhbmQgZWFjaCBJREJTZXJ2ZXIgb3ducyBvbmUgb3Ig
bW9yZSBVbmlxdWVJREJEYXRhYmFzZXMgKHJlc3ByZW50aW5nIG9uZSBhY3R1YWwgZGF0YWJhc2Ug
dGhhdAorICAgICAgICBJREJEYXRhYmFzZSBjb25uZWN0cyB0bywgY2FuIGJlIGlkZW50aWZpZWQg
Ynkge3Nlc3Npb24sIG9yaWdpbiwgbmFtZX0pLiBOb3cgdGhhdCB3ZSBoYXZlIE5ldHdvcmtTdG9y
YWdlTWFuYWdlciwgCisgICAgICAgIHdoaWNoIG1hbmFnZXMgc2Vzc2lvbiBzdG9yYWdlIGJ5IG9y
aWdpbiwgd2UgY2FuIG1lcmdlIFdlYklEQlNlcnZlciB3aXRoIE5ldHdvcmtTdG9yYWdlTWFuYWdl
ciwgc2luY2UgSW5kZXhlZERCIAorICAgICAgICBzdG9yYWdlIGlzIG5vdCBzaGFyZWQgYWNyb3Nz
IG9yaWdpbnMuCisKKyAgICAgICAgVGhlIG9sZCBzdHJ1Y3R1cmUgaXM6CisgICAgICAgIE5ldHdv
cmtTZXNzaW9uIC0gV2ViSURCU2VydmVyIC0gSURCU2VydmVyIC0gVW5pcXVlSURCRGF0YWJhc2Vz
CisgICAgICAgIFRoZSBuZXcgc3RydWN0dXJlIGlzOgorICAgICAgICBOZXR3b3JrU2Vzc2lvbiAt
IE5ldHdvcmtTdG9yYWdlTWFuYWdlciAtIE9yaWdpblN0b3JhZ2VNYW5hZ2VyIC0gSURCU3RvcmFn
ZU1hbmFnZXIgLSBVbmlxdWVJREJEYXRhYmFzZQorCisgICAgICAgIFRvIGNvbXBsZXRlIHRoaXMg
dHJhbnNpdGlvbiwgd2UgbmVlZCB0byBtYWtlIGEgZmV3IGNoYW5nZXM6CisgICAgICAgIDEuIFdl
YiBwcm9jZXNzIG5vdyBzZW5kcyBJbmRleGVkREIgcmVsYXRlZCBtZXNzYWdlcyB0byBOZXR3b3Jr
U3RvcmFnZU1hbmFnZXIgaW5zdGVhZCBvZiBXZWJJREJTZXJ2ZXIuIAorICAgICAgICAyLiBTb21l
IG1lc3NhZ2VzIGFyZSBzZW50IHRvIG9wZXJhdGUgb24gVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0
aW9uIG9yIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24sIGFuZCB0aGV5IAorICAgICAgICB1
c2UgaWRlbnRpZmllcnMgdG8gc3BlY2lmeSB0aGUgdGFyZ2V0LiBUaGVyZWZvcmUsIE5ldHdvcmtT
dG9yYWdlTWFuYWdlcnMgbmVlZHMgdG8ga25vdyB0aGUgbWFwcGluZyBiZXR3ZWVuIAorICAgICAg
ICBpZGVudGlmaWVycyBhbmQgdGFyZ2V0IG9iamVjdHMuIEEgbmV3IGNsYXMgSURCU3RvcmFnZVJl
Z2lzdHJ5IGlzIGFkZGVkIHJlY29yZCB0aGlzIG1hcHBpbmcuIEVhY2ggCisgICAgICAgIE5ldHdv
cmtTdG9yYWdlTWFuYWdlciBvd25zIGEgSURCU3RvcmFnZVJlZ2lzdHJ5IGFuZCBpdCBwYXNzZXMg
SURCU3RvcmFnZVJlZ2lzdHJ5IHRvIElEQlN0b3JhZ2VNYW5hZ2VyLAorICAgICAgICBJREJTdG9y
YWdlTWFuYWdlciB3aWxsIHJlZ2lzdGVyIG9iamVjdHMgdG8gSURCU3RvcmFnZVJlZ2lzdHJ5IGFu
ZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXIgY2FuIGRvIHNlYXJjaCB2aWEgCisgICAgICAgIElEQlN0
b3JhZ2VSZWdpc3RyeS4KKyAgICAgICAgMy4gUXVvdGEgY2hlY2sgZm9yIEluZGV4ZWREQiBvcGVy
YXRpb25zIGJlY29tZXMgYXN5bmMgYnkgYWRkaW5nIG5ldyBRdW90YU1hbmFnZXIgY2xhc3MsIHdo
aWNoIGlzIHNpbWlsYXIgdG8gCisgICAgICAgIFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXIg
YnV0IHByb3ZpZGVzIGFzeW5jIGludGVyZmFjZXMuIAorICAgICAgICBXZSB1c2VkIHRvIGJsb2Nr
IHRoZSBJREJTZXJ2ZXIgdGhyZWFkIHdoZW4gaXQgaXMgd2FpdGluZyBmb3IgcXVvdGEgY2hlY2sg
cmVzdWx0IGZyb20gVUkgcHJvY2VzcywgdGhpcyBpcyBmaW5lIAorICAgICAgICBiZWNhdXNlIElE
QlNlcnZlciBydW5zIG9uIGl0cyBvd24gdGhyZWFkLiBOb3cgdGhhdCBJREJTdG9yYWdlTWFuYWdl
ciBydW5zIG9uIHRoZSBzYW1lIHRocmVhZCBhcyB0aGUgb3RoZXIgCisgICAgICAgIHN0b3JhZ2Ug
dHlwZXMsIHdlIGNhbm5vdCBibG9jayB0aGUgdGhyZWFkIG9uIHF1b3RhIGNoZWNrLgorICAgICAg
ICA0LiBSZW5hbWUgV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50IHRvIElEQlN0b3JhZ2VDb25uZWN0
aW9uVG9DbGllbnQgdG8gcmVmbGVjdCB0aGUgY2hhbmdlIG9uIHRoZSBzdHJ1Y3R1cmUuIEFsc28s
CisgICAgICAgIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQgZG9lcyBub3Qga2VlcCByZWZl
cmVuY2UgdG8gdGhlIElQQzo6Q29ubmVjdGlvbiBub3csIGl0IG9ubHkgcmVjb3JkcyAKKyAgICAg
ICAgSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRC4KKyAgICAgICAgNS4gSW5kZXhlZERCIGRhdGEg
bWF5IGJlIHB1dCBpbiBkaWZmZXJlbnQgdmVyc2lvbiBkaXJjdG9yaWVzLiBXZSB1c2VkIHRvIG1p
Z3JhdGUgZGF0YWJhc2UgdG8gbmV3IHZlcnNpb24gCisgICAgICAgIGRpcmV0b3J5IHdoZW4gdGhl
IGRhdGFiYXNlIGlzIGFjY2Vzc2VkLiBBcyBJREJTdG9yYWdlTWFuYWdlciBub3cgbWFuYWdlcyBJ
bmRleGVkREIgZGF0YSBvZiBvbmUgb3JpZ2luLCBpdCdzIAorICAgICAgICBzaW1wbGVyIGlmIGl0
IG9ubHkga2VlcHMgdHJhY2sgb2Ygb25lIGRpcmVjdG9yeS4gVGhlcmVmb3JlLCB3ZSBub3cgbWln
cmF0ZSBhbGwgZGF0YWJhc2VzIG9mIG9uZSBvcmlnaW4KKyAgICAgICAgd2hlbiB0aGUgb3JpZ2lu
IGlzIGFjY2Vzc2VkIChzZWUgSURCU3RvcmFnZU1hbmFnZXI6OmlkYlN0b3JhZ2VPcmlnaW5EaXJl
Y3RvcnkpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6dXBkYXRlUXVvdGFCYXNlZE9uU3BhY2VVc2FnZUZvclRlc3RpbmcpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6d3JpdGVCbG9ic1RvVGVtcG9y
YXJ5RmlsZXNGb3JJbmRleGVkREIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRpZENsb3NlKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmFkZFdlYnNp
dGVEYXRhU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZmV0Y2hXZWJz
aXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRl
RGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0
YUZvck9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlQW5k
UmVzdHJpY3RXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZWdpc3RyYWJsZURvbWFpbnNXaXRoV2Vic2l0ZURhdGEpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cHJlcGFyZVRvU3VzcGVuZCk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZXN1bWUpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6cmVzZXRRdW90YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzOjpkaWRJbmNyZWFzZVF1b3RhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OnJlbmFtZU9yaWdpbkluV2Vic2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6c3RvcmFnZVF1b3RhTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzOjpjb25uZWN0aW9uVG9XZWJQcm9jZXNzQ2xvc2VkKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3M6OnN1c3BlbmRJREJTZXJ2ZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6c2hvdWxkU3VzcGVuZElEQlNlcnZlcnMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Nlc3Npb246OmludmFsaWRhdGVBbmRDYW5jZWwpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
U2Vzc2lvbjo6YWRkU3RvcmFnZU1hbmFnZXJTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Nlc3Npb246OmVuc3VyZVdlYklEQlNlcnZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtTZXNzaW9uOjpjbG9zZUlEQlNlcnZlcik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjphZGRJbmRleGVkRGF0YWJhc2VTZXNzaW9uKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6d2ViSURCU2VydmVyKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Nlc3Npb246Omhhc0lEQkRhdGFiYXNlUGF0aCBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OnN0b3JhZ2VQYXRoKToK
KyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OmRpc2tVc2FnZSk6CisgICAg
ICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpyZXF1ZXN0U3BhY2UpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGVzOjpyZXF1ZXN0U3BhY2UpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lPUy5tbToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3M6OnNldElzSG9sZGluZ0xvY2tlZEZpbGVzKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6
SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3Jh
Z2VDb25uZWN0aW9uVG9DbGllbnQ6On5JREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50KToKKyAg
ICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6Y29ubmVjdGlvblRv
Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6
ZGlkR2V0UmVzdWx0KToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0Ns
aWVudDo6ZGlkRGVsZXRlRGF0YWJhc2UpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29u
bmVjdGlvblRvQ2xpZW50OjpkaWRPcGVuRGF0YWJhc2UpOgorICAgICAgICAoV2ViS2l0OjpJREJT
dG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRTdGFydFRyYW5zYWN0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkQWJvcnRUcmFuc2FjdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZENv
bW1pdFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25U
b0NsaWVudDo6ZGlkQ3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9y
YWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWREZWxldGVPYmplY3RTdG9yZSk6CisgICAgICAgIChX
ZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZFJlbmFtZU9iamVjdFN0b3Jl
KToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkQ2xl
YXJPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9D
bGllbnQ6OmRpZENyZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5l
Y3Rpb25Ub0NsaWVudDo6ZGlkRGVsZXRlSW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9y
YWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRSZW5hbWVJbmRleCk6CisgICAgICAgIChXZWJLaXQ6
OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZFB1dE9yQWRkKToKKyAgICAgICAgKFdl
YktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkR2V0UmVjb3JkKToKKyAgICAg
ICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkR2V0QWxsUmVjb3Jk
cyk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZEdl
dENvdW50KToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6
ZGlkRGVsZXRlUmVjb3JkKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25U
b0NsaWVudDo6ZGlkT3BlbkN1cnNvcik6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25u
ZWN0aW9uVG9DbGllbnQ6OmRpZEl0ZXJhdGVDdXJzb3IpOgorICAgICAgICAoV2ViS2l0OjpJREJT
dG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRHZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lv
bnMpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpmaXJl
VmVyc2lvbkNoYW5nZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rp
b25Ub0NsaWVudDo6ZGlkQ2xvc2VGcm9tU2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6SURCU3Rv
cmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6bm90aWZ5T3BlbkRCUmVxdWVzdEJsb2NrZWQpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVu
dC5oOiBBZGRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VN
YW5hZ2VyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Om1pZ3JhdGVPcmlnaW5EYXRhKToK
KyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZU1hbmFnZXI6OmlkYlN0b3JhZ2VPcmlnaW5EaXJl
Y3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlTWFuYWdlcjo6aWRiU3RvcmFnZVNp
emUpOgorICAgICAgICAoV2ViS2l0OjpnZXRPcmlnaW5zRm9yVmVyc2lvbik6CisgICAgICAgIChX
ZWJLaXQ6OklEQlN0b3JhZ2VNYW5hZ2VyOjpvcmlnaW5zT2ZJREJTdG9yYWdlRGF0YSk6CisgICAg
ICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VNYW5hZ2VyOjpJREJTdG9yYWdlTWFuYWdlcik6CisgICAg
ICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VNYW5hZ2VyOjppc0FjdGl2ZSBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OklEQlN0b3JhZ2VNYW5hZ2VyOjpoYXNEYXRhSW5NZW1vcnkgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpJREJTdG9yYWdlTWFuYWdlcjo6Y2xvc2VEYXRhYmFzZXNGb3JEZWxldGlv
bik6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VNYW5hZ2VyOjpzdG9wRGF0YWJhc2VBY3Rp
dml0aWVzRm9yU3VzcGVuZCk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VNYW5hZ2VyOjpn
ZXRPckNyZWF0ZVVuaXF1ZUlEQkRhdGFiYXNlKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFn
ZU1hbmFnZXI6Om9wZW5EYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VNYW5h
Z2VyOjpkZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VNYW5hZ2Vy
OjpnZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMpOgorICAgICAgICAoV2ViS2l0OjpJREJT
dG9yYWdlTWFuYWdlcjo6b3BlbkRCUmVxdWVzdENhbmNlbGxlZCk6CisgICAgICAgIChXZWJLaXQ6
OklEQlN0b3JhZ2VNYW5hZ2VyOjpyZWdpc3RlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0
OjpJREJTdG9yYWdlTWFuYWdlcjo6dW5yZWdpc3RlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2Vi
S2l0OjpJREJTdG9yYWdlTWFuYWdlcjo6cmVnaXN0ZXJUcmFuc2FjdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OklEQlN0b3JhZ2VNYW5hZ2VyOjp1bnJlZ2lzdGVyVHJhbnNhY3Rpb24pOgorICAgICAg
ICAoV2ViS2l0OjpJREJTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlQmFja2luZ1N0b3JlKToKKyAgICAg
ICAgKFdlYktpdDo6SURCU3RvcmFnZU1hbmFnZXI6OnJlcXVlc3RTcGFjZSk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlTWFuYWdlci5oOiBBZGRlZC4KKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VSZWdpc3RyeS5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlUmVnaXN0cnk6OmVuc3VyZUNvbm5lY3Rpb25U
b0NsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VSZWdpc3RyeTo6cmVtb3ZlQ29u
bmVjdGlvblRvQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZVJlZ2lzdHJ5Ojpy
ZWdpc3RlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlUmVnaXN0cnk6
OnVucmVnaXN0ZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZVJlZ2lz
dHJ5OjpyZWdpc3RlclRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZVJl
Z2lzdHJ5Ojp1bnJlZ2lzdGVyVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9y
YWdlUmVnaXN0cnk6OmNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlUmVn
aXN0cnk6OnRyYW5zYWN0aW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lE
QlN0b3JhZ2VSZWdpc3RyeS5oOiBBZGRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9y
YWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtT
dG9yYWdlTWFuYWdlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VN
YW5hZ2VyOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
U3RvcmFnZU1hbmFnZXI6OmNhbkhhbmRsZVR5cGVzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1N0b3JhZ2VNYW5hZ2VyOjpzdG9wUmVjZWl2aW5nTWVzc2FnZUZyb21Db25uZWN0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpsb2NhbE9yaWdpblN0b3JhZ2VN
YW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkaWRJbmNy
ZWFzZVF1b3RhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpnZXRB
bGxPcmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjptb3Zl
RGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6c3VzcGVuZCk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6cmVnaXN0ZXJUZW1wb3Jh
cnlCbG9iRmlsZVBhdGhzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2Vy
OjpyZXF1ZXN0U3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6
OnJlc2V0UXVvdGFGb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VN
YW5hZ2VyOjpyZXNldFF1b3RhVXBkYXRlZEJhc2VkT25Vc2FnZUZvclRlc3RpbmcpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Om9wZW5EYXRhYmFzZSk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6b3BlbkRCUmVxdWVzdENhbmNlbGxlZCk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlRGF0YWJhc2Up
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmVzdGFibGlzaFRyYW5z
YWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkYXRhYmFz
ZUNvbm5lY3Rpb25QZW5kaW5nQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFn
ZU1hbmFnZXI6OmRhdGFiYXNlQ29ubmVjdGlvbkNsb3NlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtTdG9yYWdlTWFuYWdlcjo6YWJvcnRPcGVuQW5kVXBncmFkZU5lZWRlZCk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVu
dCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6YWJvcnRUcmFuc2Fj
dGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y29tbWl0VHJh
bnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmRpZEZp
bmlzaEhhbmRsaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnJlbmFtZU9iamVjdFN0b3JlKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjbGVhck9iamVjdFN0b3JlKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVJbmRleCk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlSW5kZXgpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnJlbmFtZUluZGV4KToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpwdXRPckFkZCk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Z2V0UmVjb3JkKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpnZXRBbGxSZWNvcmRzKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpnZXRDb3VudCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlUmVjb3JkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1N0b3JhZ2VNYW5hZ2VyOjpvcGVuQ3Vyc29yKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0
b3JhZ2VNYW5hZ2VyOjppdGVyYXRlQ3Vyc29yKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0
b3JhZ2VNYW5hZ2VyOjpnZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIubWVzc2FnZXMu
aW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVj
a2V0OjpTdG9yYWdlQnVja2V0KToKKyAgICAgICAgKFdlYktpdDo6T3JpZ2luU3RvcmFnZU1hbmFn
ZXI6OlN0b3JhZ2VCdWNrZXQ6OnRvV2Vic2l0ZURhdGFUeXBlKToKKyAgICAgICAgKFdlYktpdDo6
T3JpZ2luU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VCdWNrZXQ6OnRvU3RvcmFnZUlkZW50aWZpZXIp
OgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldDo6
aWRiU3RvcmFnZU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdl
cjo6U3RvcmFnZUJ1Y2tldDo6ZXhpc3RpbmdJREJTdG9yYWdlTWFuYWdlcik6CisgICAgICAgIChX
ZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0Ojppc0FjdGl2ZSBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0
Ojppc0VtcHR5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6T3JpZ2luU3RvcmFnZU1hbmFnZXI6
OlN0b3JhZ2VCdWNrZXQ6OmRlbGV0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9y
YWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldDo6bW92ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpP
cmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldDo6ZmV0Y2hEYXRhVHlwZXNJbkxpc3RG
cm9tTWVtb3J5KToKKyAgICAgICAgKFdlYktpdDo6T3JpZ2luU3RvcmFnZU1hbmFnZXI6OlN0b3Jh
Z2VCdWNrZXQ6OmZldGNoRGF0YVR5cGVzSW5MaXN0RnJvbURpc2spOgorICAgICAgICAoV2ViS2l0
OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldDo6ZGVsZXRlSURCU3RvcmFnZURh
dGEpOgorICAgICAgICAoV2ViS2l0OjpjcmVhdGVRdW90YU1hbmFnZXIpOgorICAgICAgICAoV2Vi
S2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6T3JpZ2luU3RvcmFnZU1hbmFnZXIpOgorICAgICAg
ICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6ZGVmYXVsdEJ1Y2tldCk6CisgICAgICAg
IChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpxdW90YU1hbmFnZXIpOgorICAgICAgICAo
V2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6aWRiU3RvcmFnZU1hbmFnZXIpOgorICAgICAg
ICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6ZXhpc3RpbmdJREJTdG9yYWdlTWFuYWdl
cik6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjptb3ZlRGF0YSk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvUXVvdGFNYW5hZ2VyLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6OlF1b3RhTWFuYWdlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktp
dDo6UXVvdGFNYW5hZ2VyOjpRdW90YU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpRdW90YU1h
bmFnZXI6OnJlcXVlc3RTcGFjZSk6CisgICAgICAgIChXZWJLaXQ6OlF1b3RhTWFuYWdlcjo6aGFu
ZGxlUmVxdWVzdHMpOgorICAgICAgICAoV2ViS2l0OjpRdW90YU1hbmFnZXI6OmdyYW50V2l0aEN1
cnJlbnRRdW90YSk6CisgICAgICAgIChXZWJLaXQ6OlF1b3RhTWFuYWdlcjo6Z3JhbnRGYXN0UGF0
aCk6CisgICAgICAgIChXZWJLaXQ6OlF1b3RhTWFuYWdlcjo6ZGlkSW5jcmVhc2VRdW90YSk6Cisg
ICAgICAgIChXZWJLaXQ6OlF1b3RhTWFuYWdlcjo6cmVzZXRRdW90YVVwZGF0ZWRCYXNlZE9uVXNh
Z2VGb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6UXVvdGFNYW5hZ2VyOjpyZXNldFF1b3Rh
Rm9yVGVzdGluZyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9RdW90YU1hbmFn
ZXIuaDogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAg
ICAgICh0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKToKKyAgICAgICAgKiBT
aGFyZWQvV2Vic2l0ZURhdGEvUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLmg6IEFkZGVk
LgorICAgICAgICAqIFNoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oOgorICAgICAg
ICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjppbmNy
ZWFzZVF1b3RhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5t
ZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnBlclRoaXJkUGFy
dHlPcmlnaW5TdG9yYWdlUXVvdGEgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHRQZXJPcmlnaW5RdW90YSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVj
dGlvblRvU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvU2Vy
dmVyOjpkZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25U
b1NlcnZlcjo6b3BlbkRhdGFiYXNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlv
blRvU2VydmVyOjphYm9ydFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29u
bmVjdGlvblRvU2VydmVyOjpjb21taXRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlVHJh
bnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmNy
ZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvU2Vy
dmVyOjpkZWxldGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rp
b25Ub1NlcnZlcjo6cmVuYW1lT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJD
b25uZWN0aW9uVG9TZXJ2ZXI6OmNsZWFyT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYktpdDo6
V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpkZWxldGVJbmRleCk6CisgICAgICAgIChXZWJLaXQ6
OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6cmVuYW1lSW5kZXgpOgorICAgICAgICAoV2ViS2l0
OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OnB1dE9yQWRkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpnZXRSZWNvcmQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmdldEFsbFJlY29yZHMpOgorICAgICAgICAoV2ViS2l0
OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmdldENvdW50KToKKyAgICAgICAgKFdlYktpdDo6
V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpkZWxldGVSZWNvcmQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6Om9wZW5DdXJzb3IpOgorICAgICAgICAoV2ViS2l0
OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6Oml0ZXJhdGVDdXJzb3IpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmVzdGFibGlzaFRyYW5zYWN0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpkYXRhYmFzZUNvbm5lY3Rp
b25QZW5kaW5nQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2
ZXI6OmRhdGFiYXNlQ29ubmVjdGlvbkNsb3NlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNv
bm5lY3Rpb25Ub1NlcnZlcjo6YWJvcnRPcGVuQW5kVXBncmFkZU5lZWRlZCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVu
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6b3BlbkRCUmVx
dWVzdENhbmNlbGxlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZl
cjo6Z2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKToKKwogMjAyMi0wMi0wNyAgQW50b2lu
ZSBRdWludCAgPGdyYW91dHNAd2Via2l0Lm9yZz4KIAogICAgICAgICBbbW9kZWxdIGltcHJvdmUg
c2l6aW5nIG9uIGlPUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwppbmRleCBlNmJhNzMyMmMzNDhlY2RlNDc5
NGUwOTQ5OTViYWI0ODk2YmY1YTQ5Li4wOTQ3ZTI3NmIxYjZmY2JhYzc5OTc5NmVkNTNmMzg3ZTA4
MmNkZWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIyLTAyLTA3
ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIE1hbmFnZSBJbmRl
eGVkREIgc3RvcmFnZSBieSBvcmlnaW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzNDkyNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODc1NTUwMTQ+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAgKiBTdG9yYWdl
L0luUHJvY2Vzc0lEQlNlcnZlci5jcHA6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OnF1
b3RhTWFuYWdlcik6CisKIDIwMjItMDItMDIgIEVsbGlvdHQgV2lsbGlhbXMgIDxlbXdAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtYY29kZV0gRml4IHJlZHVuZGFudCBleGVjdXRpb24gb2YgIkNoZWNr
IFZUYWJsZXMuLi4iIHNjcmlwdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggM2ZjZTk1ZjU3NTY5ZGE3
M2Q1MDkyOWJlNTQyY2ZiNzQ0OWQ3OWQ1Mi4uZDlmNDhhZWRkYzYzOGE0ODk0YTMzNDViYTg3ZWVm
MmU2MzNjYjk4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0yMjQsMTEgKzIyNCwxNiBAQCBzZXQo
V2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL0lEQkNvbm5lY3Rpb25Ub0NsaWVudC5oCiAgICAgTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL0lEQkNvbm5lY3Rpb25Ub0NsaWVudERlbGVnYXRlLmgKICAgICBNb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvSURCU2VydmVyLmgKKyAgICBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSW5kZXhW
YWx1ZUVudHJ5LmgKKyAgICBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSW5kZXhWYWx1ZVN0b3Jl
LmgKKyAgICBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNh
Y3Rpb24uaAogICAgIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3Rv
cmUuaAogICAgIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUu
aAorICAgIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJUcmFuc2FjdGlvbi5oCiAg
ICAgTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NlcnZlck9wZW5EQlJlcXVlc3QuaAogICAgIE1v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oCiAgICAgTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5oCisgICAgTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlci5oCiAgICAgTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uaAogCiAgICAg
TW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luZGV4S2V5LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmgKaW5kZXgg
NmMwYjFiNGYyYWIwYzAzMzA3NjY1NGVhNGIyNzY1NTk0NDU4OTUzNi4uN2YwOWJmYjMyZDUxZTk3
ZmE3ZWQ0ZTQ1ZDUxMTMzOGU1YjgxMTdlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmgKQEAgLTgyLDcgKzgy
LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNUcmFuc2llbnQoKSBjb25zdCB7IHJldHVybiBtX2lz
VHJhbnNpZW50OyB9CiAKICAgICBTdHJpbmcgZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9v
dChjb25zdCBTdHJpbmcmIHJvb3REaXJlY3RvcnksIGNvbnN0IFN0cmluZyYgdmVyc2lvblN0cmlu
Zz0idjEiKSBjb25zdDsKLSAgICBzdGF0aWMgU3RyaW5nIGRhdGFiYXNlRGlyZWN0b3J5UmVsYXRp
dmVUb1Jvb3QoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiB0b3BMZXZlbE9yaWdpbiwgY29uc3Qg
U2VjdXJpdHlPcmlnaW5EYXRhJiBvcGVuaW5nT3JpZ2luLCBjb25zdCBTdHJpbmcmIHJvb3REaXJl
Y3RvcnksIGNvbnN0IFN0cmluZyYgdmVyc2lvblN0cmluZyk7CisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFN0cmluZyBkYXRhYmFzZURpcmVjdG9yeVJlbGF0aXZlVG9Sb290KGNvbnN0IFNlY3Vy
aXR5T3JpZ2luRGF0YSYgdG9wTGV2ZWxPcmlnaW4sIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYg
b3BlbmluZ09yaWdpbiwgY29uc3QgU3RyaW5nJiByb290RGlyZWN0b3J5LCBjb25zdCBTdHJpbmcm
IHZlcnNpb25TdHJpbmcpOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNv
ZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPElEQkRhdGFiYXNlSWRlbnRpZmllcj4gZGVjb2RlKERlY29kZXImKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25u
ZWN0aW9uVG9DbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9JREJDb25uZWN0aW9uVG9DbGllbnQuaAppbmRleCAyN2Y3MjY5MTlmMTQyMWYyMWE1ZjAzZmZk
ZmMxNzZkNGM0YmRmM2MyLi5mMDVhYzJmOGM4MmE4MDljMjcxYzlkZjU5N2Y5NjQ3MzE5ZWY2NDYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURC
Q29ubmVjdGlvblRvQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0lEQkNvbm5lY3Rpb25Ub0NsaWVudC5oCkBAIC03NCwxMSArNzQsMTEgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBub3RpZnlPcGVuREJSZXF1ZXN0QmxvY2tlZChjb25zdCBJREJSZXNv
dXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBvbGRWZXJzaW9uLCB1
aW50NjRfdCBuZXdWZXJzaW9uKTsKIAotICAgIHZvaWQgZGlkR2V0QWxsRGF0YWJhc2VOYW1lc0Fu
ZFZlcnNpb25zKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYsIFZlY3RvcjxJREJEYXRhYmFz
ZU5hbWVBbmRWZXJzaW9uPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZEdldEFsbERh
dGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImLCBWZWN0
b3I8SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbj4mJik7CiAKICAgICB2b2lkIHJlZ2lzdGVyRGF0
YWJhc2VDb25uZWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYpOwogICAgIHZvaWQg
dW5yZWdpc3RlckRhdGFiYXNlQ29ubmVjdGlvbihVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24m
KTsKLSAgICB2b2lkIGNvbm5lY3Rpb25Ub0NsaWVudENsb3NlZCgpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgY29ubmVjdGlvblRvQ2xpZW50Q2xvc2VkKCk7CiAgICAgYm9vbCBpc0Nsb3NlZCgp
IHsgcmV0dXJuIG1faXNDbG9zZWQ7IH0KICAgICB2b2lkIGNsZWFyRGVsZWdhdGUoKSB7IG1fZGVs
ZWdhdGUgPSBudWxscHRyOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKaW5kZXggZDI2NjkzMTgwODQ2YWY2NjY4OWUx
N2FlYTNmZjk5NzE5NTVhZTM2ZS4uNGJhZDQ0MmIxYjNhOWE0MTc4NTkwNDJmODE2NTc3ZTA3YjEz
YmE4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L0lEQlNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL0lEQlNlcnZlci5jcHAKQEAgLTEwMSwxMyArMTAxLDEzIEBAIHZvaWQgSURCU2VydmVyOjp1
bnJlZ2lzdGVyVHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNh
Y3Rpb24pCiAgICAgbV90cmFuc2FjdGlvbnMucmVtb3ZlKHRyYW5zYWN0aW9uLmluZm8oKS5pZGVu
dGlmaWVyKCkpOwogfQogCi12b2lkIElEQlNlcnZlcjo6cmVnaXN0ZXJEYXRhYmFzZUNvbm5lY3Rp
b24oVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiBjb25uZWN0aW9uKQordm9pZCBJREJTZXJ2
ZXI6OnJlZ2lzdGVyQ29ubmVjdGlvbihVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24pCiB7CiAgICAgQVNTRVJUKCFtX2RhdGFiYXNlQ29ubmVjdGlvbnMuY29udGFpbnMoY29u
bmVjdGlvbi5pZGVudGlmaWVyKCkpKTsKICAgICBtX2RhdGFiYXNlQ29ubmVjdGlvbnMuc2V0KGNv
bm5lY3Rpb24uaWRlbnRpZmllcigpLCAmY29ubmVjdGlvbik7CiB9CiAKLXZvaWQgSURCU2VydmVy
Ojp1bnJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlv
biYgY29ubmVjdGlvbikKK3ZvaWQgSURCU2VydmVyOjp1bnJlZ2lzdGVyQ29ubmVjdGlvbihVbmlx
dWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiB7CiAgICAgQVNTRVJUKG1fZGF0
YWJhc2VDb25uZWN0aW9ucy5jb250YWlucyhjb25uZWN0aW9uLmlkZW50aWZpZXIoKSkpOwogICAg
IG1fZGF0YWJhc2VDb25uZWN0aW9ucy5yZW1vdmUoY29ubmVjdGlvbi5pZGVudGlmaWVyKCkpOwpA
QCAtMTI4LDEzICsxMjgsMTMgQEAgc3RkOjp1bmlxdWVfcHRyPElEQkJhY2tpbmdTdG9yZT4gSURC
U2VydmVyOjpjcmVhdGVCYWNraW5nU3RvcmUoY29uc3QgSURCRGF0YWJhc2UKIHsKICAgICBBU1NF
UlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBpZiAobV9kYXRhYmFzZURpcmVjdG9yeVBhdGguaXNF
bXB0eSgpKQotICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxNZW1vcnlJREJCYWNraW5nU3RvcmU+
KG1fc2Vzc2lvbklELCBpZGVudGlmaWVyKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TWVt
b3J5SURCQmFja2luZ1N0b3JlPihpZGVudGlmaWVyKTsKIAogICAgIEFTU0VSVCghbV9zZXNzaW9u
SUQuaXNFcGhlbWVyYWwoKSk7CiAgICAgaWYgKGlkZW50aWZpZXIuaXNUcmFuc2llbnQoKSkKLSAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TWVtb3J5SURCQmFja2luZ1N0b3JlPihtX3Nlc3Npb25J
RCwgaWRlbnRpZmllcik7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPE1lbW9yeUlEQkJhY2tp
bmdTdG9yZT4oaWRlbnRpZmllcik7CiAKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxTUUxpdGVJREJC
YWNraW5nU3RvcmU+KG1fc2Vzc2lvbklELCBpZGVudGlmaWVyLCBtX2RhdGFiYXNlRGlyZWN0b3J5
UGF0aCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1FMaXRlSURCQmFja2luZ1N0b3JlPihpZGVu
dGlmaWVyLCB1cGdyYWRlZERhdGFiYXNlRGlyZWN0b3J5KGlkZW50aWZpZXIpKTsKIH0KIAogdm9p
ZCBJREJTZXJ2ZXI6Om9wZW5EYXRhYmFzZShjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERh
dGEpCkBAIC0xNzcsMTcgKzE3Nyw2IEBAIHZvaWQgSURCU2VydmVyOjpkZWxldGVEYXRhYmFzZShj
b25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEpCiAgICAgICAgIG1fdW5pcXVlSURCRGF0
YWJhc2VNYXAucmVtb3ZlKGRhdGFiYXNlLT5pZGVudGlmaWVyKCkpOwogfQogCi1zdGQ6OnVuaXF1
ZV9wdHI8VW5pcXVlSURCRGF0YWJhc2U+IElEQlNlcnZlcjo6Y2xvc2VBbmRUYWtlVW5pcXVlSURC
RGF0YWJhc2UoVW5pcXVlSURCRGF0YWJhc2UmIGRhdGFiYXNlKQotewotICAgIExPRyhJbmRleGVk
REIsICJJREJTZXJ2ZXI6OmNsb3NlVW5pcXVlSURCRGF0YWJhc2UiKTsKLSAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOwotCi0gICAgYXV0byB1bmlxdWVQb2ludGVyID0gbV91bmlxdWVJREJEYXRh
YmFzZU1hcC50YWtlKGRhdGFiYXNlLmlkZW50aWZpZXIoKSk7Ci0gICAgQVNTRVJUKHVuaXF1ZVBv
aW50ZXIpOwotCi0gICAgcmV0dXJuIHVuaXF1ZVBvaW50ZXI7Ci19Ci0KIHZvaWQgSURCU2VydmVy
OjphYm9ydFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rp
b25JZGVudGlmaWVyKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJTZXJ2ZXI6OmFib3J0VHJh
bnNhY3Rpb24iKTsKQEAgLTc1MCw3ICs3MzksNyBAQCB2b2lkIElEQlNlcnZlcjo6cmVuYW1lT3Jp
Z2luKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgb2xkT3JpZ2luLCBjb25zdAog
ICAgICAgICBGaWxlU3lzdGVtOjptb3ZlRmlsZShvbGRPcmlnaW5QYXRoLCBuZXdPcmlnaW5QYXRo
KTsKIH0KIAotU3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb24gSURCU2VydmVyOjpyZXF1ZXN0
U3BhY2UoY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4sIHVpbnQ2NF90IHRhc2tTaXplKSBXVEZf
SUdOT1JFU19USFJFQURfU0FGRVRZX0FOQUxZU0lTCit2b2lkIElEQlNlcnZlcjo6cmVxdWVzdFNw
YWNlKGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2luLCB1aW50NjRfdCB0YXNrU2l6ZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgV1RGX0lHTk9SRVNf
VEhSRUFEX1NBRkVUWV9BTkFMWVNJUwogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwog
ICAgIEFTU0VSVChtX2xvY2suaXNIZWxkKCkpOwpAQCAtNzYyLDcgKzc1MSw3IEBAIFN0b3JhZ2VR
dW90YU1hbmFnZXI6OkRlY2lzaW9uIElEQlNlcnZlcjo6cmVxdWVzdFNwYWNlKGNvbnN0IENsaWVu
dE9yaWdpbiYgb3JpZ2luCiAgICAgcmVzdWx0ID0gbV9zcGFjZVJlcXVlc3RlcihvcmlnaW4sIHRh
c2tTaXplKTsKICAgICBtX2xvY2subG9jaygpOwogCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICBj
b21wbGV0aW9uSGFuZGxlcihyZXN1bHQgPT0gU3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb246
OkdyYW50KTsKIH0KIAogdWludDY0X3QgSURCU2VydmVyOjpkaXNrVXNhZ2UoY29uc3QgU3RyaW5n
JiByb290RGlyZWN0b3J5LCBjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbikKQEAgLTc4NCw2ICs3
NzMsMjMgQEAgdm9pZCBJREJTZXJ2ZXI6OnVwZ3JhZGVGaWxlc0lmTmVjZXNzYXJ5KCkKICAgICAg
ICAgRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKG5ld1ZlcnNpb25EaXJlY3RvcnkpOwog
fQogCitTdHJpbmcgSURCU2VydmVyOjp1cGdyYWRlZERhdGFiYXNlRGlyZWN0b3J5KGNvbnN0IFdl
YkNvcmU6OklEQkRhdGFiYXNlSWRlbnRpZmllciYgaWRlbnRpZmllcikKK3sKKyAgICBTdHJpbmcg
b2xkT3JpZ2luRGlyZWN0b3J5ID0gaWRlbnRpZmllci5kYXRhYmFzZURpcmVjdG9yeVJlbGF0aXZl
VG9Sb290KG1fZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCAidjAiKTsKKyAgICBTdHJpbmcgb2xkRGF0
YWJhc2VEaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQob2xk
T3JpZ2luRGlyZWN0b3J5LCBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmVuY29kZURhdGFiYXNlTmFt
ZShpZGVudGlmaWVyLmRhdGFiYXNlTmFtZSgpKSk7CisgICAgU3RyaW5nIG5ld09yaWdpbkRpcmVj
dG9yeSA9IGlkZW50aWZpZXIuZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9vdChtX2RhdGFi
YXNlRGlyZWN0b3J5UGF0aCwgInYxIik7CisgICAgU3RyaW5nIGZpbGVOYW1lSGFzaCA9IFNRTGl0
ZUZpbGVTeXN0ZW06OmNvbXB1dGVIYXNoRm9yRmlsZU5hbWUoaWRlbnRpZmllci5kYXRhYmFzZU5h
bWUoKSk7CisgICAgU3RyaW5nIG5ld0RhdGFiYXNlRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG5ld09yaWdpbkRpcmVjdG9yeSwgZmlsZU5hbWVIYXNoKTsK
KyAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMobmV3RGF0YWJhc2VEaXJlY3Rvcnkp
OworCisgICAgaWYgKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMob2xkRGF0YWJhc2VEaXJlY3Rvcnkp
KSB7CisgICAgICAgIEZpbGVTeXN0ZW06Om1vdmVGaWxlKG9sZERhdGFiYXNlRGlyZWN0b3J5LCBu
ZXdEYXRhYmFzZURpcmVjdG9yeSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGly
ZWN0b3J5KG9sZE9yaWdpbkRpcmVjdG9yeSk7CisgICAgfQorCisgICAgcmV0dXJuIG5ld0RhdGFi
YXNlRGlyZWN0b3J5OworfQorCiBib29sIElEQlNlcnZlcjo6aGFzRGF0YWJhc2VBY3Rpdml0aWVz
T25NYWluVGhyZWFkKCkgY29uc3QKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZl
ci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5o
CmluZGV4IGQ4ODM2NDlhNWM4ZDViNTlmMDJjMmJkYWNkZGU2NzhhMWNhM2M0MmYuLjEzZmI3MGJl
Mzc5YWFhOWMxMWY1OWQyNTRiOTZjMDcyOTRkYTA2MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmgKQEAgLTMwLDYgKzMwLDcg
QEAKICNpbmNsdWRlICJTdG9yYWdlUXVvdGFNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiVW5pcXVlSURC
RGF0YWJhc2UuaCIKICNpbmNsdWRlICJVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uaCIKKyNp
bmNsdWRlICJVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuaCIKICNpbmNsdWRlIDxwYWwvSHlzdGVy
ZXNpc0FjdGl2aXR5Lmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0
Zi9Dcm9zc1RocmVhZFRhc2tIYW5kbGVyLmg+CkBAIC00OCw4ICs0OSw3IEBAIHN0cnVjdCBJREJH
ZXRSZWNvcmREYXRhOwogCiBuYW1lc3BhY2UgSURCU2VydmVyIHsKIAotY2xhc3MgSURCU2VydmVy
IHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK2NsYXNzIElEQlNlcnZlciA6IHB1Ymxp
YyBVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIgewogcHVibGljOgogICAgIHVzaW5nIFN0b3JhZ2VR
dW90YU1hbmFnZXJTcGFjZVJlcXVlc3RlciA9IEZ1bmN0aW9uPFN0b3JhZ2VRdW90YU1hbmFnZXI6
OkRlY2lzaW9uKGNvbnN0IENsaWVudE9yaWdpbiYsIHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkKT47
CiAgICAgV0VCQ09SRV9FWFBPUlQgSURCU2VydmVyKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJp
bmcmIGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwgU3RvcmFnZVF1b3RhTWFuYWdlclNwYWNlUmVxdWVz
dGVyJiYsIExvY2smKTsKQEAgLTg4LDE1ICs4OCwxMyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhJREJDb25uZWN0aW9u
SWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiwgY29uc3QgQ2xpZW50T3Jp
Z2luJik7CiAKLQotICAgIHZvaWQgcmVnaXN0ZXJEYXRhYmFzZUNvbm5lY3Rpb24oVW5pcXVlSURC
RGF0YWJhc2VDb25uZWN0aW9uJik7Ci0gICAgdm9pZCB1bnJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0
aW9uKFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYpOwotICAgIHZvaWQgcmVnaXN0ZXJUcmFu
c2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJik7Ci0gICAgdm9pZCB1bnJlZ2lz
dGVyVHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYpOwotCi0gICAgc3Rk
Ojp1bmlxdWVfcHRyPFVuaXF1ZUlEQkRhdGFiYXNlPiBjbG9zZUFuZFRha2VVbmlxdWVJREJEYXRh
YmFzZShVbmlxdWVJREJEYXRhYmFzZSYpOwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPElEQkJhY2tp
bmdTdG9yZT4gY3JlYXRlQmFja2luZ1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYp
OworICAgIC8vIFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlcgorICAgIHZvaWQgcmVnaXN0ZXJDb25u
ZWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYpIGZpbmFsOworICAgIHZvaWQgdW5y
ZWdpc3RlckNvbm5lY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJikgZmluYWw7Cisg
ICAgdm9pZCByZWdpc3RlclRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24m
KSBmaW5hbDsKKyAgICB2b2lkIHVucmVnaXN0ZXJUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFz
ZVRyYW5zYWN0aW9uJikgZmluYWw7CisgICAgc3RkOjp1bmlxdWVfcHRyPElEQkJhY2tpbmdTdG9y
ZT4gY3JlYXRlQmFja2luZ1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYpIGZpbmFs
OworICAgIHZvaWQgcmVxdWVzdFNwYWNlKGNvbnN0IENsaWVudE9yaWdpbiYsIHVpbnQ2NF90IHNp
emUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZpbmFsOwogCiAgICAgV0VCQ09S
RV9FWFBPUlQgSGFzaFNldDxTZWN1cml0eU9yaWdpbkRhdGE+IGdldE9yaWdpbnMoKSBjb25zdDsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzTW9kaWZpZWRT
aW5jZShXYWxsVGltZSk7CkBAIC0xMDQsNyArMTAyLDYgQEAgcHVibGljOgogICAgIHZvaWQgY2xv
c2VEYXRhYmFzZXNGb3JPcmlnaW5zKGNvbnN0IFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+Jiwg
RnVuY3Rpb248Ym9vbChjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBDbGllbnRPcmln
aW4mKT4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW5hbWVPcmlnaW4oY29uc3QgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhJik7CiAKLSAgICBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbiByZXF1ZXN0U3BhY2Uo
Y29uc3QgQ2xpZW50T3JpZ2luJiwgdWludDY0X3QgdGFza1NpemUpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyB1aW50NjRfdCBkaXNrVXNhZ2UoY29uc3QgU3RyaW5nJiByb290RGlyZWN0b3J5
LCBjb25zdCBDbGllbnRPcmlnaW4mKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzRGF0
YWJhc2VBY3Rpdml0aWVzT25NYWluVGhyZWFkKCkgY29uc3Q7CkBAIC0xMTQsNiArMTExLDcgQEAg
cHJpdmF0ZToKICAgICBVbmlxdWVJREJEYXRhYmFzZSYgZ2V0T3JDcmVhdGVVbmlxdWVJREJEYXRh
YmFzZShjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImKTsKIAogICAgIHZvaWQgdXBncmFkZUZp
bGVzSWZOZWNlc3NhcnkoKTsKKyAgICBTdHJpbmcgdXBncmFkZWREYXRhYmFzZURpcmVjdG9yeShj
b25zdCBXZWJDb3JlOjpJREJEYXRhYmFzZUlkZW50aWZpZXImKTsKICAgICB2b2lkIHJlbW92ZURh
dGFiYXNlc01vZGlmaWVkU2luY2VGb3JWZXJzaW9uKFdhbGxUaW1lLCBjb25zdCBTdHJpbmcmKTsK
ICAgICB2b2lkIHJlbW92ZURhdGFiYXNlc1dpdGhPcmlnaW5zRm9yVmVyc2lvbihjb25zdCBWZWN0
b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiYsIGNvbnN0IFN0cmluZyYpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0
b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJ
REJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDdlZTQxNDBhOGFmMTgwMTFjOTZiY2E3YjYwOGQ4NjU5
MThhZjg1ZWEuLmQ2MzM1MDMwOTkzMDU1YjliMTJiNzg0NTY1NWRhODMzNzJiMWE1NTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJC
YWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwCkBAIC00NCw5ICs0NCw4IEBAIG5hbWVzcGFj
ZSBJREJTZXJ2ZXIgewogLy8gVGhlIEluZGV4ZWREQiBzcGVjIHN0YXRlcyB0aGUgbWF4aW11bSB2
YWx1ZSB5b3UgY2FuIGdldCBmcm9tIHRoZSBrZXkgZ2VuZXJhdG9yIGlzIDJeNTMuCiBjb25zdGV4
cHIgdWludDY0X3QgbWF4R2VuZXJhdGVkS2V5VmFsdWUgPSAweDIwMDAwMDAwMDAwMDAwOwogCi1N
ZW1vcnlJREJCYWNraW5nU3RvcmU6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZShQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYgaWRlbnRpZmllcikKK01l
bW9yeUlEQkJhY2tpbmdTdG9yZTo6TWVtb3J5SURCQmFja2luZ1N0b3JlKGNvbnN0IElEQkRhdGFi
YXNlSWRlbnRpZmllciYgaWRlbnRpZmllcikKICAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVy
KQotICAgICwgbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQogewogfQogCkBAIC0xMzQsNyArMTMzLDcg
QEAgSURCRXJyb3IgTWVtb3J5SURCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmplY3RTdG9yZShjb25z
dCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHQKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgQ29u
c3RyYWludEVycm9yIH07CiAKICAgICBBU1NFUlQoIW1fb2JqZWN0U3RvcmVzQnlJZGVudGlmaWVy
LmNvbnRhaW5zKGluZm8uaWRlbnRpZmllcigpKSk7Ci0gICAgYXV0byBvYmplY3RTdG9yZSA9IE1l
bW9yeU9iamVjdFN0b3JlOjpjcmVhdGUobV9zZXNzaW9uSUQsIGluZm8pOworICAgIGF1dG8gb2Jq
ZWN0U3RvcmUgPSBNZW1vcnlPYmplY3RTdG9yZTo6Y3JlYXRlKGluZm8pOwogCiAgICAgbV9kYXRh
YmFzZUluZm8tPmFkZEV4aXN0aW5nT2JqZWN0U3RvcmUoaW5mbyk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3Rv
cmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJC
YWNraW5nU3RvcmUuaAppbmRleCA5MmFhNzYwZDIwNzMzNzE4ZmJkYjhjMDQ0Y2ZlNjdkY2FiMTY1
MzM1Li4wOTMwMWU4M2ZjYTdjNzUwOWUyODU4MTEwYzEyNzgzNTMzNThmM2RhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2lu
Z1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01l
bW9yeUlEQkJhY2tpbmdTdG9yZS5oCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAiSURCUmVz
b3VyY2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSW5kZXhLZXkuaCIKICNpbmNsdWRlICJNZW1v
cnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbi5oIgotI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4K
ICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00MSw4
ICs0MCw4IEBAIGNsYXNzIE1lbW9yeU9iamVjdFN0b3JlOwogY2xhc3MgTWVtb3J5SURCQmFja2lu
Z1N0b3JlIGZpbmFsIDogcHVibGljIElEQkJhY2tpbmdTdG9yZSB7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgTWVtb3J5SURCQmFja2luZ1N0b3JlKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImKTsKLSAgICB+TWVtb3J5SURCQmFj
a2luZ1N0b3JlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgTWVtb3J5SURCQmFja2lu
Z1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYpOworICAgIFdFQkNPUkVfRVhQT1JU
IH5NZW1vcnlJREJCYWNraW5nU3RvcmUoKTsKIAogICAgIElEQkVycm9yIGdldE9yRXN0YWJsaXNo
RGF0YWJhc2VJbmZvKElEQkRhdGFiYXNlSW5mbyYpIGZpbmFsOwogICAgIHVpbnQ2NF90IGRhdGFi
YXNlVmVyc2lvbigpIGZpbmFsOwpAQCAtOTIsNyArOTEsNiBAQCBwcml2YXRlOgogICAgIHZvaWQg
dW5yZWdpc3Rlck9iamVjdFN0b3JlKE1lbW9yeU9iamVjdFN0b3JlJik7CiAKICAgICBJREJEYXRh
YmFzZUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwotICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lv
bklEOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJREJEYXRhYmFzZUluZm8+IG1fZGF0YWJhc2VJbmZv
OwogCiAgICAgSGFzaE1hcDxJREJSZXNvdXJjZUlkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxN
ZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbj4+IG1fdHJhbnNhY3Rpb25zOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0
b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlP
YmplY3RTdG9yZS5jcHAKaW5kZXggOWRkYzBmY2Y5OTE5M2YzMzRiZGM1ZDQyNjFlYTM5MWRlNGJh
YWI3YS4uZTAxZWUwMmI3MTUyMzk5Y2M3MjZmYjE4YmMzNDkxNDYwNGRlNzNlYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0
b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVt
b3J5T2JqZWN0U3RvcmUuY3BwCkBAIC0zOCwxOCArMzgsMTcgQEAKICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9KU0NKU1ZhbHVlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSlNWYWx1
ZUlubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0xvY2suaD4KLSNpbmNsdWRl
IDxwYWwvU2Vzc2lvbklELmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFj
ZSBKU0M7CiBuYW1lc3BhY2UgSURCU2VydmVyIHsKIAotUmVmPE1lbW9yeU9iamVjdFN0b3JlPiBN
ZW1vcnlPYmplY3RTdG9yZTo6Y3JlYXRlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
SURCT2JqZWN0U3RvcmVJbmZvJiBpbmZvKQorUmVmPE1lbW9yeU9iamVjdFN0b3JlPiBNZW1vcnlP
YmplY3RTdG9yZTo6Y3JlYXRlKGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYgaW5mbykKIHsKLSAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZW1vcnlPYmplY3RTdG9yZShzZXNzaW9uSUQsIGluZm8p
KTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZW1vcnlPYmplY3RTdG9yZShpbmZvKSk7CiB9
CiAKLU1lbW9yeU9iamVjdFN0b3JlOjpNZW1vcnlPYmplY3RTdG9yZShQQUw6OlNlc3Npb25JRCwg
Y29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiBpbmZvKQorTWVtb3J5T2JqZWN0U3RvcmU6Ok1lbW9y
eU9iamVjdFN0b3JlKGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYgaW5mbykKICAgICA6IG1faW5m
byhpbmZvKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuaAppbmRleCA4NzFkZWI1ZTRhZTA1MTQ4
MmI5MDg5Njg5NWVhMzFjMjc2ZGQzMDg2Li5mMDNhM2ExYjBhZDUzNGI5ZjMzOWM0ZmJkN2U3NDBh
ZGYyMjg0NzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuaApAQCAtMzQsMTAgKzM0LDYgQEAKICNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKLW5h
bWVzcGFjZSBQQUwgewotY2xhc3MgU2Vzc2lvbklEOwotfQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIElEQkN1cnNvckluZm87CkBAIC02MSw3ICs1Nyw3IEBAIHR5cGVkZWYgSGFzaE1h
cDxJREJLZXlEYXRhLCBUaHJlYWRTYWZlRGF0YUJ1ZmZlciwgSURCS2V5RGF0YUhhc2gsIElEQktl
eURhdGFIYXNoCiAKIGNsYXNzIE1lbW9yeU9iamVjdFN0b3JlIDogcHVibGljIFJlZkNvdW50ZWQ8
TWVtb3J5T2JqZWN0U3RvcmU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPE1lbW9yeU9iamVj
dFN0b3JlPiBjcmVhdGUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYp
OworICAgIHN0YXRpYyBSZWY8TWVtb3J5T2JqZWN0U3RvcmU+IGNyZWF0ZShjb25zdCBJREJPYmpl
Y3RTdG9yZUluZm8mKTsKIAogICAgIH5NZW1vcnlPYmplY3RTdG9yZSgpOwogCkBAIC0xMDgsNyAr
MTA0LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVuYW1lSW5kZXgoTWVtb3J5SW5kZXgmLCBjb25z
dCBTdHJpbmcmIG5ld05hbWUpOwogCiBwcml2YXRlOgotICAgIE1lbW9yeU9iamVjdFN0b3JlKFBB
TDo6U2Vzc2lvbklELCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mKTsKKyAgICBNZW1vcnlPYmpl
Y3RTdG9yZShjb25zdCBJREJPYmplY3RTdG9yZUluZm8mKTsKIAogICAgIElEQktleURhdGFTZXQ6
Oml0ZXJhdG9yIGxvd2VzdEl0ZXJhdG9ySW5SYW5nZShjb25zdCBJREJLZXlSYW5nZURhdGEmLCBi
b29sIHJldmVyc2UpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCmlu
ZGV4IDc4NDYxZjEzNmY3N2I0OGUwNDI1NTY5OWQ4ZDlhYzg0OWQ5YzQ2NWQuLjkyMWFhMmIwYjg4
MDliM2E0ZGNmNzMyMTg5ZGI5MDlhNDYwYWIxOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5n
U3RvcmUuY3BwCkBAIC0yMzYsMTIgKzIzNiwxMCBAQCBzdGF0aWMgQVNDSUlMaXRlcmFsIGluZGV4
SW5mb1RhYmxlU2NoZW1hVGVtcCgpCiAgICAgcmV0dXJuIFRBQkxFX1NDSEVNQV9QUkVGSVggIl9U
ZW1wX0luZGV4SW5mbyIgSU5ERVhfSU5GT19UQUJMRV9TQ0hFTUFfU1VGRklYOwogfQogCi1TUUxp
dGVJREJCYWNraW5nU3RvcmU6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZShQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYgaWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBkYXRhYmFzZVJvb3REaXJlY3RvcnkpCi0gICAgOiBtX3Nlc3Npb25JRChzZXNzaW9u
SUQpCi0gICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKLSAgICAsIG1fZGF0YWJhc2VSb290
RGlyZWN0b3J5KGRhdGFiYXNlUm9vdERpcmVjdG9yeSkKK1NRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
U1FMaXRlSURCQmFja2luZ1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYgaWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZURpcmVjdG9yeSkKKyAgICA6IG1faWRlbnRpZmll
cihpZGVudGlmaWVyKQorICAgICwgbV9kYXRhYmFzZURpcmVjdG9yeShkYXRhYmFzZURpcmVjdG9y
eSkKIHsKLSAgICBtX2RhdGFiYXNlRGlyZWN0b3J5ID0gZnVsbERhdGFiYXNlRGlyZWN0b3J5V2l0
aFVwZ3JhZGUoKTsKIH0KIAogU1FMaXRlSURCQmFja2luZ1N0b3JlOjp+U1FMaXRlSURCQmFja2lu
Z1N0b3JlKCkKQEAgLTkxMiwxOSArOTEwLDI5IEBAIHN0ZDo6dW5pcXVlX3B0cjxJREJEYXRhYmFz
ZUluZm8+IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZXh0cmFjdEV4aXN0aW5nRGF0YWJhc2VJCiAg
ICAgcmV0dXJuIGRhdGFiYXNlSW5mbzsKIH0KIAotU3RyaW5nIFNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6ZmlsZW5hbWVGb3JEYXRhYmFzZU5hbWUoKSBjb25zdAorU3RyaW5nIFNRTGl0ZUlEQkJhY2tp
bmdTdG9yZTo6ZW5jb2RlRGF0YWJhc2VOYW1lKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lKQog
ewotICAgIEFTU0VSVCghbV9pZGVudGlmaWVyLmRhdGFiYXNlTmFtZSgpLmlzTnVsbCgpKTsKLQot
ICAgIGlmIChtX2lkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCkuaXNFbXB0eSgpKQorICAgIEFTU0VS
VCghZGF0YWJhc2VOYW1lLmlzRW1wdHkoKSk7CisgICAgaWYgKGRhdGFiYXNlTmFtZS5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiAiJTAwIjsKIAotICAgIFN0cmluZyBmaWxlbmFtZSA9IEZpbGVT
eXN0ZW06OmVuY29kZUZvckZpbGVOYW1lKG1faWRlbnRpZmllci5kYXRhYmFzZU5hbWUoKSk7Ci0g
ICAgZmlsZW5hbWUucmVwbGFjZSgnLicsICIlMkUiKTsKKyAgICBTdHJpbmcgZmlsZW5hbWUgPSBG
aWxlU3lzdGVtOjplbmNvZGVGb3JGaWxlTmFtZShkYXRhYmFzZU5hbWUpOworICAgIGZpbGVuYW1l
LnJlcGxhY2VXaXRoTGl0ZXJhbCgnLicsICIlMkUiKTsKIAogICAgIHJldHVybiBmaWxlbmFtZTsK
IH0KIAorU3RyaW5nIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVjb2RlRGF0YWJhc2VOYW1lKGNv
bnN0IFN0cmluZyYgZW5jb2RlZE5hbWUpCit7CisgICAgaWYgKGVuY29kZWROYW1lID09ICIlMDAi
X3MpCisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOworCisgICAgU3RyaW5nIG5hbWUgPSBl
bmNvZGVkTmFtZTsKKyAgICBuYW1lLnJlcGxhY2UoIiUyRSJfcywgIi4iX3MpOworCisgICAgcmV0
dXJuIEZpbGVTeXN0ZW06OmRlY29kZUZyb21GaWxlbmFtZShuYW1lKTsKK30KKwogU3RyaW5nIFNR
TGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZnVsbERhdGFiYXNlUGF0aEZvckRpcmVjdG9yeShjb25zdCBT
dHJpbmcmIGZ1bGxEYXRhYmFzZURpcmVjdG9yeSkKIHsKICAgICByZXR1cm4gRmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGZ1bGxEYXRhYmFzZURpcmVjdG9yeSwgIkluZGV4ZWRE
Qi5zcWxpdGUzIik7CkBAIC05NjUsMjMgKzk3Myw2IEBAIHN0ZDo6b3B0aW9uYWw8SURCRGF0YWJh
c2VOYW1lQW5kVmVyc2lvbj4gU1FMaXRlSURCQmFja2luZ1N0b3JlOjpkYXRhYmFzZU5hbWVBbmRW
CiAgICAgcmV0dXJuIElEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24geyBkYXRhYmFzZU5hbWUsICpk
YXRhYmFzZVZlcnNpb24gfTsKIH0KIAotU3RyaW5nIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZnVs
bERhdGFiYXNlRGlyZWN0b3J5V2l0aFVwZ3JhZGUoKQotewotICAgIFN0cmluZyBvbGRPcmlnaW5E
aXJlY3RvcnkgPSBtX2lkZW50aWZpZXIuZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9vdCht
X2RhdGFiYXNlUm9vdERpcmVjdG9yeSwgInYwIik7Ci0gICAgU3RyaW5nIG9sZERhdGFiYXNlRGly
ZWN0b3J5ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG9sZE9yaWdpbkRp
cmVjdG9yeSwgZmlsZW5hbWVGb3JEYXRhYmFzZU5hbWUoKSk7Ci0gICAgU3RyaW5nIG5ld09yaWdp
bkRpcmVjdG9yeSA9IG1faWRlbnRpZmllci5kYXRhYmFzZURpcmVjdG9yeVJlbGF0aXZlVG9Sb290
KG1fZGF0YWJhc2VSb290RGlyZWN0b3J5LCAidjEiKTsKLSAgICBTdHJpbmcgZmlsZU5hbWVIYXNo
ID0gU1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0ZUhhc2hGb3JGaWxlTmFtZShtX2lkZW50aWZpZXIu
ZGF0YWJhc2VOYW1lKCkpOwotICAgIFN0cmluZyBuZXdEYXRhYmFzZURpcmVjdG9yeSA9IEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChuZXdPcmlnaW5EaXJlY3RvcnksIGZpbGVO
YW1lSGFzaCk7Ci0gICAgRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKG5ld0RhdGFiYXNl
RGlyZWN0b3J5KTsKLQotICAgIGlmIChGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG9sZERhdGFiYXNl
RGlyZWN0b3J5KSkgewotICAgICAgICBGaWxlU3lzdGVtOjptb3ZlRmlsZShvbGREYXRhYmFzZURp
cmVjdG9yeSwgbmV3RGF0YWJhc2VEaXJlY3RvcnkpOwotICAgICAgICBGaWxlU3lzdGVtOjpkZWxl
dGVFbXB0eURpcmVjdG9yeShvbGRPcmlnaW5EaXJlY3RvcnkpOwotICAgIH0KLQotICAgIHJldHVy
biBuZXdEYXRhYmFzZURpcmVjdG9yeTsKLX0KLQogSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0
b3JlOjpnZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbyhJREJEYXRhYmFzZUluZm8mIGluZm8pCiB7
CiAgICAgTE9HKEluZGV4ZWREQiwgIlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0T3JFc3RhYmxp
c2hEYXRhYmFzZUluZm8gLSBkYXRhYmFzZSAlcyIsIG1faWRlbnRpZmllci5kYXRhYmFzZU5hbWUo
KS51dGY4KCkuZGF0YSgpKTsKQEAgLTk5MSwxMSArOTgyLDExIEBAIElEQkVycm9yIFNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6Z2V0T3JFc3RhYmxpc2hEYXRhYmFzZUluZm8oSURCRGF0YWJhc2VJbmZv
JiBpbmZvCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IH07CiAgICAgfQogCi0gICAgU3RyaW5n
IGRiRmlsZW5hbWUgPSBmdWxsRGF0YWJhc2VQYXRoKCk7Ci0KKyAgICBTdHJpbmcgZGF0YWJhc2VQ
YXRoID0gZnVsbERhdGFiYXNlUGF0aCgpOworICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3Rv
cmllcyhGaWxlU3lzdGVtOjpwYXJlbnRQYXRoKGRhdGFiYXNlUGF0aCkpOwogICAgIG1fc3FsaXRl
REIgPSBtYWtlVW5pcXVlPFNRTGl0ZURhdGFiYXNlPigpOwotICAgIGlmICghbV9zcWxpdGVEQi0+
b3BlbihkYkZpbGVuYW1lKSkgewotICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBvcGVuIFNR
TGl0ZSBkYXRhYmFzZSBhdCBwYXRoICclcyciLCBkYkZpbGVuYW1lLnV0ZjgoKS5kYXRhKCkpOwor
ICAgIGlmICghbV9zcWxpdGVEQi0+b3BlbihkYXRhYmFzZVBhdGgpKSB7CisgICAgICAgIExPR19F
UlJPUigiRmFpbGVkIHRvIG9wZW4gU1FMaXRlIGRhdGFiYXNlIGF0IHBhdGggJyVzJyIsIGRhdGFi
YXNlUGF0aC51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgY2xvc2VTUUxpdGVEQigpOwogICAgIH0K
IApAQCAtMTA0NCw3ICsxMDM1LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpn
ZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbyhJREJEYXRhYmFzZUluZm8mIGluZm8KICAgICAgICAg
ZGF0YWJhc2VJbmZvID0gY3JlYXRlQW5kUG9wdWxhdGVJbml0aWFsRGF0YWJhc2VJbmZvKCk7CiAK
ICAgICBpZiAoIWRhdGFiYXNlSW5mbykgewotICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBl
c3RhYmxpc2ggSURCIGRhdGFiYXNlIGF0IHBhdGggJyVzJyIsIGRiRmlsZW5hbWUudXRmOCgpLmRh
dGEoKSk7CisgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGVzdGFibGlzaCBJREIgZGF0YWJh
c2UgYXQgcGF0aCAnJXMnIiwgZGF0YWJhc2VQYXRoLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBj
bG9zZVNRTGl0ZURCKCk7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwg
IlVuYWJsZSB0byBlc3RhYmxpc2ggSURCIGRhdGFiYXNlIGZpbGUiX3MgfTsKICAgICB9CkBAIC0y
Nzk4LDcgKzI3ODksNiBAQCB2b2lkIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlQmFja2lu
Z1N0b3JlKCkKIAogICAgIFNRTGl0ZUZpbGVTeXN0ZW06OmRlbGV0ZURhdGFiYXNlRmlsZShkYXRh
YmFzZVBhdGgpOwogICAgIFNRTGl0ZUZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGF0YWJhc2VEaXJl
Y3RvcnkobV9kYXRhYmFzZURpcmVjdG9yeSk7Ci0gICAgU1FMaXRlRmlsZVN5c3RlbTo6ZGVsZXRl
RW1wdHlEYXRhYmFzZURpcmVjdG9yeShtX2lkZW50aWZpZXIuZGF0YWJhc2VEaXJlY3RvcnlSZWxh
dGl2ZVRvUm9vdChtX2RhdGFiYXNlUm9vdERpcmVjdG9yeSkpOwogfQogCiB2b2lkIFNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6dW5yZWdpc3RlckN1cnNvcihTUUxpdGVJREJDdXJzb3ImIGN1cnNvcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxp
dGVJREJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaAppbmRleCAyZWZlNmIyYTM0MTk5M2JiMjZmZGY5
MWNmZjZlN2RlYThkYmJlZDM2Li43MzFhOWE0MTkzODY1ZTNjNWYzYzM1ZWQ3NTcxYjEyODJmNzgw
OTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
U1FMaXRlSURCQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5oCkBAIC01MSw5ICs1MSw4IEBAIGNs
YXNzIFNRTGl0ZUlEQkN1cnNvcjsKIGNsYXNzIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZSBmaW5hbCA6
IHB1YmxpYyBJREJCYWNraW5nU3RvcmUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgotICAgIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZShQQUw6OlNlc3Npb25JRCwgY29uc3Qg
SURCRGF0YWJhc2VJZGVudGlmaWVyJiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZVJvb3REaXJlY3Rv
cnkpOwotICAgIAotICAgIH5TUUxpdGVJREJCYWNraW5nU3RvcmUoKSBmaW5hbDsKKyAgICBXRUJD
T1JFX0VYUE9SVCBTUUxpdGVJREJCYWNraW5nU3RvcmUoY29uc3QgSURCRGF0YWJhc2VJZGVudGlm
aWVyJiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZURpcmVjdG9yeSk7CisgICAgV0VCQ09SRV9FWFBP
UlQgflNRTGl0ZUlEQkJhY2tpbmdTdG9yZSgpIGZpbmFsOwogCiAgICAgSURCRXJyb3IgZ2V0T3JF
c3RhYmxpc2hEYXRhYmFzZUluZm8oSURCRGF0YWJhc2VJbmZvJikgZmluYWw7CiAgICAgdWludDY0
X3QgZGF0YWJhc2VWZXJzaW9uKCkgZmluYWw7CkBAIC05NCwxOCArOTMsMTUgQEAgcHVibGljOgog
CiAgICAgSURCRXJyb3IgZ2V0QmxvYlJlY29yZHNGb3JPYmplY3RTdG9yZVJlY29yZChpbnQ2NF90
IG9iamVjdFN0b3JlUmVjb3JkLCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIFZlY3RvcjxTdHJp
bmc+JiBibG9iRmlsZVBhdGhzKTsKIAotICAgIHN0YXRpYyB1aW50NjRfdCBkYXRhYmFzZXNTaXpl
Rm9yRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKLQorICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyB1aW50NjRfdCBkYXRhYmFzZXNTaXplRm9yRGlyZWN0b3J5KGNvbnN0IFN0cmlu
ZyYgZGlyZWN0b3J5KTsKICAgICBTdHJpbmcgZGF0YWJhc2VEaXJlY3RvcnkoKSBjb25zdCB7IHJl
dHVybiBtX2RhdGFiYXNlRGlyZWN0b3J5OyB9OwotICAgIHN0YXRpYyBTdHJpbmcgZnVsbERhdGFi
YXNlUGF0aEZvckRpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKLSAgICBzdGF0aWMgc3RkOjpvcHRp
b25hbDxJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiBkYXRhYmFzZU5hbWVBbmRWZXJzaW9uRnJv
bUZpbGUoY29uc3QgU3RyaW5nJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBm
dWxsRGF0YWJhc2VQYXRoRm9yRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpOworICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBTdHJpbmcgZW5jb2RlRGF0YWJhc2VOYW1lKGNvbnN0IFN0cmluZyYgZGF0
YWJhc2VOYW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIGRlY29kZURhdGFi
YXNlTmFtZShjb25zdCBTdHJpbmcmIGVuY29kZWREYXRhYmFzZU5hbWUpOwogCi0gICAgUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjpvcHRpb25hbDxJREJEYXRhYmFzZU5hbWVBbmRWZXJz
aW9uPiBkYXRhYmFzZU5hbWVBbmRWZXJzaW9uRnJvbUZpbGUoY29uc3QgU3RyaW5nJik7CiAKIHBy
aXZhdGU6Ci0gICAgU3RyaW5nIGZpbGVuYW1lRm9yRGF0YWJhc2VOYW1lKCkgY29uc3Q7Ci0gICAg
U3RyaW5nIGZ1bGxEYXRhYmFzZURpcmVjdG9yeVdpdGhVcGdyYWRlKCk7Ci0KICAgICBJREJFcnJv
ciBlbnN1cmVWYWxpZFJlY29yZHNUYWJsZSgpOwogICAgIElEQkVycm9yIGVuc3VyZVZhbGlkSW5k
ZXhSZWNvcmRzVGFibGUoKTsKICAgICBJREJFcnJvciBlbnN1cmVWYWxpZEluZGV4UmVjb3Jkc0lu
ZGV4KCk7CkBAIC0yMDYsNyArMjAyLDYgQEAgcHJpdmF0ZToKIAogICAgIHN0ZDo6dW5pcXVlX3B0
cjxTUUxpdGVTdGF0ZW1lbnQ+IG1fY2FjaGVkU3RhdGVtZW50c1tzdGF0aWNfY2FzdDxpbnQ+KFNR
TDo6SW52YWxpZCldOwogCi0gICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAgICAgSURC
RGF0YWJhc2VJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SURC
RGF0YWJhc2VJbmZvPiBtX2RhdGFiYXNlSW5mbzsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SURCRGF0
YWJhc2VJbmZvPiBtX29yaWdpbmFsRGF0YWJhc2VJbmZvQmVmb3JlVmVyc2lvbkNoYW5nZTsKQEAg
LTIxNiw3ICsyMTEsNiBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8SURCUmVzb3VyY2VJZGVudGlm
aWVyLCBzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlSURCVHJhbnNhY3Rpb24+PiBtX3RyYW5zYWN0aW9u
czsKICAgICBIYXNoTWFwPElEQlJlc291cmNlSWRlbnRpZmllciwgU1FMaXRlSURCQ3Vyc29yKj4g
bV9jdXJzb3JzOwogCi0gICAgU3RyaW5nIG1fZGF0YWJhc2VSb290RGlyZWN0b3J5OwogICAgIFN0
cmluZyBtX2RhdGFiYXNlRGlyZWN0b3J5OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAK
aW5kZXggMmIxZWFkYjllYTVjNDY0ZDAyNzVlZDIyM2Y1MDAzYjdiZWYxNTczMy4uYjYyOGIwN2Ew
NTllOTM4YzUzYzBlY2FkMTE0MGQ2NDY0MGQzNTBhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2Uu
Y3BwCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlN0
b3JhZ2VRdW90YU1hbmFnZXIuaCIKICNpbmNsdWRlICJVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rp
b24uaCIKKyNpbmNsdWRlICJVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuaCIKICNpbmNsdWRlIDx3
dGYvU2NvcGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTM0LDggKzEzNSw4IEBAIHN0
YXRpYyBpbmxpbmUgdWludDY0X3QgZXN0aW1hdGVTaXplKGNvbnN0IElEQk9iamVjdFN0b3JlSW5m
byYgaW5mbykKICAgICByZXR1cm4gc2l6ZTsKIH0KIAotVW5pcXVlSURCRGF0YWJhc2U6OlVuaXF1
ZUlEQkRhdGFiYXNlKElEQlNlcnZlciYgc2VydmVyLCBjb25zdCBJREJEYXRhYmFzZUlkZW50aWZp
ZXImIGlkZW50aWZpZXIpCi0gICAgOiBtX3NlcnZlcihzZXJ2ZXIpCitVbmlxdWVJREJEYXRhYmFz
ZTo6VW5pcXVlSURCRGF0YWJhc2UoVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyJiBtYW5hZ2VyLCBj
b25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImIGlkZW50aWZpZXIpCisgICAgOiBtX21hbmFnZXIo
bWFuYWdlcikKICAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogewogICAgIEFTU0VSVCgh
aXNNYWluVGhyZWFkKCkpOwpAQCAtMTYzLDYgKzE2NCwxMSBAQCBjb25zdCBJREJEYXRhYmFzZUlu
Zm8mIFVuaXF1ZUlEQkRhdGFiYXNlOjppbmZvKCkgY29uc3QKICAgICByZXR1cm4gKm1fZGF0YWJh
c2VJbmZvOwogfQogCitVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIqIFVuaXF1ZUlEQkRhdGFiYXNl
OjptYW5hZ2VyKCkKK3sKKyAgICByZXR1cm4gbV9tYW5hZ2VyLmdldCgpOworfQorCiB2b2lkIFVu
aXF1ZUlEQkRhdGFiYXNlOjpvcGVuRGF0YWJhc2VDb25uZWN0aW9uKElEQkNvbm5lY3Rpb25Ub0Ns
aWVudCYgY29ubmVjdGlvbiwgY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhKQogewog
ICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6b3BlbkRhdGFiYXNlQ29ubmVj
dGlvbiIpOwpAQCAtMTg1LDE3ICsxOTEsNDUgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cGVy
Zm9ybUN1cnJlbnRPcGVuT3BlcmF0aW9uKCkKICAgICBBU1NFUlQobV9jdXJyZW50T3BlbkRCUmVx
dWVzdCk7CiAgICAgQVNTRVJUKG1fY3VycmVudE9wZW5EQlJlcXVlc3QtPmlzT3BlblJlcXVlc3Qo
KSk7CiAKKyAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGNyZWF0ZSB0aGUgZmlsZSBzbyBubyBuZWVk
IHRvIGRvIHNwYWNlIGNoZWNrLgorICAgIGlmIChtX2JhY2tpbmdTdG9yZSkKKyAgICAgICAgcmV0
dXJuIHBlcmZvcm1DdXJyZW50T3Blbk9wZXJhdGlvbkFmdGVyU3BhY2VDaGVjayh0cnVlKTsKKwor
ICAgIGlmICghbV9tYW5hZ2VyKQorICAgICAgICByZXR1cm4gcGVyZm9ybUN1cnJlbnRPcGVuT3Bl
cmF0aW9uQWZ0ZXJTcGFjZUNoZWNrKGZhbHNlKTsKKworICAgIGF1dG8gcmVxdWVzdElkZW50aWZp
ZXIgPSBtX2N1cnJlbnRPcGVuREJSZXF1ZXN0LT5yZXF1ZXN0RGF0YSgpLnJlcXVlc3RJZGVudGlm
aWVyKCk7CisgICAgaWYgKG1fb3BlbkRCUmVxdWVzdHNGb3JTcGFjZUNoZWNrLmNvbnRhaW5zKHJl
cXVlc3RJZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9vcGVuREJSZXF1ZXN0
c0ZvclNwYWNlQ2hlY2suYWRkKHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICBtX21hbmFnZXItPnJl
cXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIGRlZmF1bHRXcml0ZU9wZXJhdGlvbkNv
c3QsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCByZXF1ZXN0SWRlbnRpZmll
cl0oYm9vbCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICBtX29wZW5EQlJlcXVlc3RzRm9yU3BhY2VDaGVjay5y
ZW1vdmUocmVxdWVzdElkZW50aWZpZXIpOworICAgICAgICBpZiAobV9jdXJyZW50T3BlbkRCUmVx
dWVzdC0+cmVxdWVzdERhdGEoKS5yZXF1ZXN0SWRlbnRpZmllcigpICE9IHJlcXVlc3RJZGVudGlm
aWVyKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHBlcmZvcm1DdXJyZW50T3Blbk9w
ZXJhdGlvbkFmdGVyU3BhY2VDaGVjayhncmFudGVkKTsKKyAgICB9KTsKK30KKwordm9pZCBVbmlx
dWVJREJEYXRhYmFzZTo6cGVyZm9ybUN1cnJlbnRPcGVuT3BlcmF0aW9uQWZ0ZXJTcGFjZUNoZWNr
KGJvb2wgaXNHcmFudGVkKQoreworICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFz
ZTo6cGVyZm9ybUN1cnJlbnRPcGVuT3BlcmF0aW9uQWZ0ZXJTcGFjZVJlcXVlc3QgKCVwKSIsIHRo
aXMpOworCiAgICAgSURCRXJyb3IgYmFja2luZ1N0b3JlT3BlbkVycm9yOwogICAgIGlmICghbV9i
YWNraW5nU3RvcmUpIHsKLSAgICAgICAgLy8gUXVvdGEgY2hlY2suCi0gICAgICAgIGF1dG8gZGVj
aXNpb24gPSBtX3NlcnZlci5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCBkZWZh
dWx0V3JpdGVPcGVyYXRpb25Db3N0KTsKLSAgICAgICAgaWYgKGRlY2lzaW9uID09IFN0b3JhZ2VR
dW90YU1hbmFnZXI6OkRlY2lzaW9uOjpEZW55KQorICAgICAgICBpZiAoIW1fbWFuYWdlcikKKyAg
ICAgICAgICAgIGJhY2tpbmdTdG9yZU9wZW5FcnJvciA9IElEQkVycm9yIHsgSW52YWxpZFN0YXRl
RXJyb3IgfTsKKyAgICAgICAgZWxzZSBpZiAoIWlzR3JhbnRlZCkKICAgICAgICAgICAgIGJhY2tp
bmdTdG9yZU9wZW5FcnJvciA9IElEQkVycm9yIHsgUXVvdGFFeGNlZWRlZEVycm9yLCBxdW90YUVy
cm9yTWVzc2FnZU5hbWUoIk9wZW5CYWNraW5nU3RvcmUiKSB9OwogICAgICAgICBlbHNlIHsKLSAg
ICAgICAgICAgIG1fYmFja2luZ1N0b3JlID0gbV9zZXJ2ZXIuY3JlYXRlQmFja2luZ1N0b3JlKG1f
aWRlbnRpZmllcik7CisgICAgICAgICAgICBtX2JhY2tpbmdTdG9yZSA9IG1fbWFuYWdlci0+Y3Jl
YXRlQmFja2luZ1N0b3JlKG1faWRlbnRpZmllcik7CiAgICAgICAgICAgICBJREJEYXRhYmFzZUlu
Zm8gZGF0YWJhc2VJbmZvOwogICAgICAgICAgICAgYmFja2luZ1N0b3JlT3BlbkVycm9yID0gbV9i
YWNraW5nU3RvcmUtPmdldE9yRXN0YWJsaXNoRGF0YWJhc2VJbmZvKGRhdGFiYXNlSW5mbyk7Ci0g
ICAgICAgICAgICBpZiAoYmFja2luZ1N0b3JlT3BlbkVycm9yLmlzTnVsbCgpKQorICAgICAgICAg
ICAgaWYgKCFiYWNraW5nU3RvcmVPcGVuRXJyb3IpCiAgICAgICAgICAgICAgICAgbV9kYXRhYmFz
ZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oZGF0YWJhc2VJbmZvKTsKICAgICAg
ICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGdldCBk
YXRhYmFzZSBpbmZvICclcyciLCBiYWNraW5nU3RvcmVPcGVuRXJyb3IubWVzc2FnZSgpLnV0Zjgo
KS5kYXRhKCkpOwpAQCAtMjA0LDcgKzIzOCw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnBl
cmZvcm1DdXJyZW50T3Blbk9wZXJhdGlvbigpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAo
IWJhY2tpbmdTdG9yZU9wZW5FcnJvci5pc051bGwoKSkgeworICAgIGlmIChiYWNraW5nU3RvcmVP
cGVuRXJyb3IpIHsKICAgICAgICAgYXV0byByZXN1bHQgPSBJREJSZXN1bHREYXRhOjplcnJvciht
X2N1cnJlbnRPcGVuREJSZXF1ZXN0LT5yZXF1ZXN0RGF0YSgpLnJlcXVlc3RJZGVudGlmaWVyKCks
IGJhY2tpbmdTdG9yZU9wZW5FcnJvcik7CiAgICAgICAgIG1fY3VycmVudE9wZW5EQlJlcXVlc3Qt
PmNvbm5lY3Rpb24oKS5kaWRPcGVuRGF0YWJhc2UocmVzdWx0KTsKICAgICAgICAgbV9jdXJyZW50
T3BlbkRCUmVxdWVzdCA9IG51bGxwdHI7CkBAIC0yOTQsNyArMzI4LDcgQEAgdm9pZCBVbmlxdWVJ
REJEYXRhYmFzZTo6ZGVsZXRlQmFja2luZ1N0b3JlKCkKICAgICBBU1NFUlQoIWlzTWFpblRocmVh
ZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZUJhY2tp
bmdTdG9yZSIpOwogICAgIAotICAgIGF1dG8gYmFja2luZ1N0b3JlID0gbV9iYWNraW5nU3RvcmUg
PyBzdGQ6OmV4Y2hhbmdlKG1fYmFja2luZ1N0b3JlLCBudWxscHRyKSA6IG1fc2VydmVyLmNyZWF0
ZUJhY2tpbmdTdG9yZShtX2lkZW50aWZpZXIpOworICAgIGF1dG8gYmFja2luZ1N0b3JlID0gbV9i
YWNraW5nU3RvcmUgPyBzdGQ6OmV4Y2hhbmdlKG1fYmFja2luZ1N0b3JlLCBudWxscHRyKSA6IG1f
bWFuYWdlci0+Y3JlYXRlQmFja2luZ1N0b3JlKG1faWRlbnRpZmllcik7CiAgICAgdWludDY0X3Qg
ZGVsZXRlZFZlcnNpb24gPSBiYWNraW5nU3RvcmUtPmRhdGFiYXNlVmVyc2lvbigpOwogICAgIGJh
Y2tpbmdTdG9yZS0+ZGVsZXRlQmFja2luZ1N0b3JlKCk7CiAgICAgZGlkRGVsZXRlQmFja2luZ1N0
b3JlKGRlbGV0ZWRWZXJzaW9uKTsKQEAgLTU0MiwyMCArNTc2LDMyIEBAIHZvaWQgVW5pcXVlSURC
RGF0YWJhc2U6OmFkZE9wZW5EYXRhYmFzZUNvbm5lY3Rpb24oUmVmPFVuaXF1ZUlEQkRhdGFiYXNl
Q29ubmVjdGlvCiAgICAgbV9vcGVuRGF0YWJhc2VDb25uZWN0aW9ucy5hZGQoYWRvcHRSZWYoY29u
bmVjdGlvbi5sZWFrUmVmKCkpKTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRl
T2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIGNv
bnN0IElEQk9iamVjdFN0b3JlSW5mbyYgaW5mbywgRXJyb3JDYWxsYmFjayBjYWxsYmFjaykKK3Zv
aWQgVW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNl
VHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mIGluZm8s
IEVycm9yQ2FsbGJhY2sgY2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgc3BhY2VDaGVja1Jlc3Vs
dCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAi
VW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlIik7CiAKLSAgICBBU1NFUlQobV9i
YWNraW5nU3RvcmUpOworICAgIGlmIChzcGFjZUNoZWNrUmVzdWx0ID09IFNwYWNlQ2hlY2tSZXN1
bHQ6OlVua25vd24pIHsKKyAgICAgICAgaWYgKCFtX21hbmFnZXIpCisgICAgICAgICAgICByZXR1
cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciB9KTsKIAotICAgIC8vIFF1
b3RhIGNoZWNrLgotICAgIGF1dG8gdGFza1NpemUgPSBkZWZhdWx0V3JpdGVPcGVyYXRpb25Db3N0
ICsgZXN0aW1hdGVTaXplKGluZm8pOwotICAgIGlmIChtX3NlcnZlci5yZXF1ZXN0U3BhY2UobV9p
ZGVudGlmaWVyLm9yaWdpbigpLCB0YXNrU2l6ZSkgPT0gU3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVj
aXNpb246OkRlbnkpIHsKKyAgICAgICAgYXV0byB0YXNrU2l6ZSA9IGRlZmF1bHRXcml0ZU9wZXJh
dGlvbkNvc3QgKyBlc3RpbWF0ZVNpemUoaW5mbyk7CisgICAgICAgIG1fbWFuYWdlci0+cmVxdWVz
dFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwgdGFza1NpemUsIFt0aGlzLCB3ZWFrVGhpcyA9
IFdlYWtQdHIgeyAqdGhpcyB9LCB3ZWFrVHJhbnNhY3Rpb24gPSBXZWFrUHRyIHsgdHJhbnNhY3Rp
b24gfSwgaW5mbywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBncmFudGVkKSBt
dXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMgfHwgIXdlYWtUcmFuc2FjdGlvbikK
KyAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVF
cnJvciwgIkRhdGFiYXNlIG9yIHRyYW5zYWN0aW9uIGlzIGNsb3NlZCIgfSk7CisgICAgICAgICAg
ICBjcmVhdGVPYmplY3RTdG9yZSgqd2Vha1RyYW5zYWN0aW9uLCBpbmZvLCBXVEZNb3ZlKGNhbGxi
YWNrKSwgZ3JhbnRlZCA/IFNwYWNlQ2hlY2tSZXN1bHQ6OlBhc3MgOiBTcGFjZUNoZWNrUmVzdWx0
OjpGYWlsKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAo
c3BhY2VDaGVja1Jlc3VsdCAhPSBTcGFjZUNoZWNrUmVzdWx0OjpQYXNzKSB7CiAgICAgICAgIGNh
bGxiYWNrKElEQkVycm9yIHsgUXVvdGFFeGNlZWRlZEVycm9yLCBxdW90YUVycm9yTWVzc2FnZU5h
bWUoIkNyZWF0ZU9iamVjdFN0b3JlIikgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAg
ICBpZiAoIW1fYmFja2luZ1N0b3JlKQorICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3Ig
eyBJbnZhbGlkU3RhdGVFcnJvciwgIkJhY2tpbmcgc3RvcmUgaGFzIGNsb3NlZCIgfSk7CisKICAg
ICBhdXRvIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPmNyZWF0ZU9iamVjdFN0b3JlKHRyYW5zYWN0
aW9uLmluZm8oKS5pZGVudGlmaWVyKCksIGluZm8pOwogICAgIGlmIChlcnJvci5pc051bGwoKSkK
ICAgICAgICAgbV9kYXRhYmFzZUluZm8tPmFkZEV4aXN0aW5nT2JqZWN0U3RvcmUoaW5mbyk7CkBA
IC01NjMsMTggKzYwOSwzNCBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RT
dG9yZShVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdAogICAgIGNhbGxiYWNr
KGVycm9yKTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlT2JqZWN0U3RvcmUo
VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIGNvbnN0IFN0cmluZyYg
b2JqZWN0U3RvcmVOYW1lLCBFcnJvckNhbGxiYWNrIGNhbGxiYWNrKQordm9pZCBVbmlxdWVJREJE
YXRhYmFzZTo6ZGVsZXRlT2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYg
dHJhbnNhY3Rpb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lLCBFcnJvckNhbGxiYWNr
IGNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0IHNwYWNlQ2hlY2tSZXN1bHQpCiB7CiAgICAgQVNT
RVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFi
YXNlOjpkZWxldGVPYmplY3RTdG9yZSIpOwogCisgICAgaWYgKHNwYWNlQ2hlY2tSZXN1bHQgPT0g
U3BhY2VDaGVja1Jlc3VsdDo6VW5rbm93bikgeworICAgICAgICBpZiAoIW1fbWFuYWdlcikKKyAg
ICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yIH0p
OworCisgICAgICAgIG1fbWFuYWdlci0+cmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4o
KSwgMCwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHdlYWtUcmFuc2FjdGlv
biA9IFdlYWtQdHIgeyB0cmFuc2FjdGlvbiB9LCBvYmplY3RTdG9yZU5hbWUsIGNhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayldKGJvb2wgZ3JhbnRlZCkgbXV0YWJsZSB7CisgICAgICAgICAgICBp
ZiAoIXdlYWtUaGlzIHx8ICF3ZWFrVHJhbnNhY3Rpb24pCisgICAgICAgICAgICAgICAgcmV0dXJu
IGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJEYXRhYmFzZSBvciB0cmFu
c2FjdGlvbiBpcyBjbG9zZWQiIH0pOworCisgICAgICAgICAgICBkZWxldGVPYmplY3RTdG9yZSgq
d2Vha1RyYW5zYWN0aW9uLCBvYmplY3RTdG9yZU5hbWUsIFdURk1vdmUoY2FsbGJhY2spLCBncmFu
dGVkID8gU3BhY2VDaGVja1Jlc3VsdDo6UGFzcyA6IFNwYWNlQ2hlY2tSZXN1bHQ6OkZhaWwpOwor
ICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChzcGFjZUNo
ZWNrUmVzdWx0ID09IFNwYWNlQ2hlY2tSZXN1bHQ6OlBhc3MpOwogICAgIGF1dG8qIGluZm8gPSBt
X2RhdGFiYXNlSW5mby0+aW5mb0ZvckV4aXN0aW5nT2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1l
KTsKICAgICBpZiAoIWluZm8pIHsKICAgICAgICAgY2FsbGJhY2soSURCRXJyb3IgeyBVbmtub3du
RXJyb3IsICJBdHRlbXB0IHRvIGRlbGV0ZSBub24tZXhpc3RhbnQgb2JqZWN0IHN0b3JlIl9zIH0p
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgQVNTRVJUKG1fYmFja2luZ1N0b3JlKTsK
KyAgICBpZiAoIW1fYmFja2luZ1N0b3JlKQorICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJy
b3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkJhY2tpbmcgc3RvcmUgaXMgY2xvc2VkIiB9KTsKKwog
ICAgIGF1dG8gZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+ZGVsZXRlT2JqZWN0U3RvcmUodHJhbnNh
Y3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSwgaW5mby0+aWRlbnRpZmllcigpKTsKICAgICBpZiAo
ZXJyb3IuaXNOdWxsKCkpCiAgICAgICAgIG1fZGF0YWJhc2VJbmZvLT5kZWxldGVPYmplY3RTdG9y
ZShpbmZvLT5pZGVudGlmaWVyKCkpOwpAQCAtNTgyLDE0ICs2NDQsMjYgQEAgdm9pZCBVbmlxdWVJ
REJEYXRhYmFzZTo6ZGVsZXRlT2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlv
biYgdHJhbnNhY3QKICAgICBjYWxsYmFjayhlcnJvcik7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0
YWJhc2U6OnJlbmFtZU9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRy
YW5zYWN0aW9uLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
bmV3TmFtZSwgRXJyb3JDYWxsYmFjayBjYWxsYmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6
OnJlbmFtZU9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0
aW9uLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFt
ZSwgRXJyb3JDYWxsYmFjayBjYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCBzcGFjZUNoZWNrUmVz
dWx0KQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIExPRyhJbmRleGVkREIs
ICJVbmlxdWVJREJEYXRhYmFzZTo6cmVuYW1lT2JqZWN0U3RvcmUiKTsKIAotICAgIC8vIFF1b3Rh
IGNoZWNrLgotICAgIGF1dG8gdGFza1NpemUgPSBkZWZhdWx0V3JpdGVPcGVyYXRpb25Db3N0ICsg
bmV3TmFtZS5zaXplSW5CeXRlcygpOwotICAgIGlmIChtX3NlcnZlci5yZXF1ZXN0U3BhY2UobV9p
ZGVudGlmaWVyLm9yaWdpbigpLCB0YXNrU2l6ZSkgPT0gU3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVj
aXNpb246OkRlbnkpIHsKKyAgICBpZiAoc3BhY2VDaGVja1Jlc3VsdCA9PSBTcGFjZUNoZWNrUmVz
dWx0OjpVbmtub3duKSB7CisgICAgICAgIGlmICghbV9tYW5hZ2VyKQorICAgICAgICAgICAgcmV0
dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7CisKKyAgICAgICAg
YXV0byB0YXNrU2l6ZSA9IGRlZmF1bHRXcml0ZU9wZXJhdGlvbkNvc3QgKyBuZXdOYW1lLnNpemVJ
bkJ5dGVzKCk7CisgICAgICAgIG1fbWFuYWdlci0+cmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5v
cmlnaW4oKSwgdGFza1NpemUsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCB3
ZWFrVHJhbnNhY3Rpb24gPSBXZWFrUHRyIHsgdHJhbnNhY3Rpb24gfSwgb2JqZWN0U3RvcmVJZGVu
dGlmaWVyLCBuZXdOYW1lLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIGdyYW50
ZWQpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhd2Vha1RyYW5zYWN0
aW9uKQorICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRT
dGF0ZUVycm9yLCAiRGF0YWJhc2Ugb3IgdHJhbnNhY3Rpb24gaXMgY2xvc2VkIiB9KTsKKworICAg
ICAgICAgICAgcmVuYW1lT2JqZWN0U3RvcmUoKndlYWtUcmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVJ
ZGVudGlmaWVyLCBuZXdOYW1lLCBXVEZNb3ZlKGNhbGxiYWNrKSwgZ3JhbnRlZCA/IFNwYWNlQ2hl
Y2tSZXN1bHQ6OlBhc3MgOiBTcGFjZUNoZWNrUmVzdWx0OjpGYWlsKTsKKyAgICAgICAgfSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoc3BhY2VDaGVja1Jlc3VsdCAhPSBTcGFj
ZUNoZWNrUmVzdWx0OjpQYXNzKSB7CiAgICAgICAgIGNhbGxiYWNrKElEQkVycm9yKFF1b3RhRXhj
ZWVkZWRFcnJvciwgcXVvdGFFcnJvck1lc3NhZ2VOYW1lKCJSZW5hbWVPYmplY3RTdG9yZSIpKSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC02MDAsNyArNjc0LDkgQEAgdm9pZCBVbmlxdWVJ
REJEYXRhYmFzZTo6cmVuYW1lT2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlv
biYgdHJhbnNhY3QKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VSVChtX2JhY2tp
bmdTdG9yZSk7CisgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkKKyAgICAgICAgcmV0dXJuIGNhbGxi
YWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJCYWNraW5nIHN0b3JlIGlzIGNsb3Nl
ZCIgfSk7CisKICAgICBhdXRvIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPnJlbmFtZU9iamVjdFN0
b3JlKHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCksIG9iamVjdFN0b3JlSWRlbnRpZmll
ciwgbmV3TmFtZSk7CiAgICAgaWYgKGVycm9yLmlzTnVsbCgpKQogICAgICAgICBtX2RhdGFiYXNl
SW5mby0+cmVuYW1lT2JqZWN0U3RvcmUob2JqZWN0U3RvcmVJZGVudGlmaWVyLCBuZXdOYW1lKTsK
QEAgLTYwOCwzMCArNjg0LDU5IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnJlbmFtZU9iamVj
dFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0CiAgICAgY2FsbGJh
Y2soZXJyb3IpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjbGVhck9iamVjdFN0b3Jl
KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCB1aW50NjRfdCBvYmpl
Y3RTdG9yZUlkZW50aWZpZXIsIEVycm9yQ2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIFVuaXF1ZUlE
QkRhdGFiYXNlOjpjbGVhck9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24m
IHRyYW5zYWN0aW9uLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIEVycm9yQ2FsbGJh
Y2sgY2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgc3BhY2VDaGVja1Jlc3VsdCkKIHsKICAgICBB
U1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0
YWJhc2U6OmNsZWFyT2JqZWN0U3RvcmUiKTsKIAotICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7
Ci0gICAgYXV0byBlcnJvciA9IG1fYmFja2luZ1N0b3JlLT5jbGVhck9iamVjdFN0b3JlKHRyYW5z
YWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCksIG9iamVjdFN0b3JlSWRlbnRpZmllcik7CisgICAg
aWYgKHNwYWNlQ2hlY2tSZXN1bHQgPT0gU3BhY2VDaGVja1Jlc3VsdDo6VW5rbm93bikgeworICAg
ICAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJv
ciB7IEludmFsaWRTdGF0ZUVycm9yIH0pOworCisgICAgICAgIG1fbWFuYWdlci0+cmVxdWVzdFNw
YWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwgMCwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7
ICp0aGlzIH0sIHdlYWtUcmFuc2FjdGlvbiA9IFdlYWtQdHIgeyB0cmFuc2FjdGlvbiB9LCBvYmpl
Y3RTdG9yZUlkZW50aWZpZXIsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgZ3Jh
bnRlZCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICF3ZWFrVHJhbnNh
Y3Rpb24pCisgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxp
ZFN0YXRlRXJyb3IsICJEYXRhYmFzZSBvciB0cmFuc2FjdGlvbiBpcyBjbG9zZWQiIH0pOworCisg
ICAgICAgICAgICBjbGVhck9iamVjdFN0b3JlKCp3ZWFrVHJhbnNhY3Rpb24sIG9iamVjdFN0b3Jl
SWRlbnRpZmllciwgV1RGTW92ZShjYWxsYmFjayksIGdyYW50ZWQgPyBTcGFjZUNoZWNrUmVzdWx0
OjpQYXNzIDogU3BhY2VDaGVja1Jlc3VsdDo6RmFpbCk7CisgICAgICAgIH0pOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKHNwYWNlQ2hlY2tSZXN1bHQgPT0gU3BhY2VDaGVj
a1Jlc3VsdDo6UGFzcyk7CisgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkKKyAgICAgICAgcmV0dXJu
IGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJCYWNraW5nIHN0b3JlIGlz
IGNsb3NlZCIgfSk7CiAKKyAgICBhdXRvIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPmNsZWFyT2Jq
ZWN0U3RvcmUodHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSwgb2JqZWN0U3RvcmVJZGVu
dGlmaWVyKTsKICAgICBjYWxsYmFjayhlcnJvcik7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJh
c2U6OmNyZWF0ZUluZGV4KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9u
LCBjb25zdCBJREJJbmRleEluZm8mIGluZm8sIEVycm9yQ2FsbGJhY2sgY2FsbGJhY2spCit2b2lk
IFVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVJbmRleChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0
aW9uJiB0cmFuc2FjdGlvbiwgY29uc3QgSURCSW5kZXhJbmZvJiBpbmZvLCBFcnJvckNhbGxiYWNr
IGNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0IHNwYWNlQ2hlY2tSZXN1bHQpCiB7CiAgICAgQVNT
RVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFi
YXNlOjpjcmVhdGVJbmRleCIpOwogCi0gICAgLy8gUXVvdGEgY2hlY2suCi0gICAgYXV0byB0YXNr
U2l6ZSA9IGRlZmF1bHRXcml0ZU9wZXJhdGlvbkNvc3QgKyBlc3RpbWF0ZVNpemUoaW5mbyk7Ci0g
ICAgaWYgKG1fc2VydmVyLnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIHRhc2tT
aXplKSA9PSBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbjo6RGVueSkgeworICAgIGlmIChz
cGFjZUNoZWNrUmVzdWx0ID09IFNwYWNlQ2hlY2tSZXN1bHQ6OlVua25vd24pIHsKKyAgICAgICAg
aWYgKCFtX21hbmFnZXIpCisgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJ
bnZhbGlkU3RhdGVFcnJvciB9KTsKKworICAgICAgICBhdXRvIHRhc2tTaXplID0gZGVmYXVsdFdy
aXRlT3BlcmF0aW9uQ29zdCArIGVzdGltYXRlU2l6ZShpbmZvKTsKKyAgICAgICAgbV9tYW5hZ2Vy
LT5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCB0YXNrU2l6ZSwgW3RoaXMsIHdl
YWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHdlYWtUcmFuc2FjdGlvbiA9IFdlYWtQdHIgeyB0
cmFuc2FjdGlvbiB9LCBpbmZvLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIGdy
YW50ZWQpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhd2Vha1RyYW5z
YWN0aW9uKQorICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFs
aWRTdGF0ZUVycm9yLCAiRGF0YWJhc2Ugb3IgdHJhbnNhY3Rpb24gaXMgY2xvc2VkIiB9KTsKKwor
ICAgICAgICAgICAgY3JlYXRlSW5kZXgoKndlYWtUcmFuc2FjdGlvbiwgaW5mbywgV1RGTW92ZShj
YWxsYmFjayksIGdyYW50ZWQgPyBTcGFjZUNoZWNrUmVzdWx0OjpQYXNzIDogU3BhY2VDaGVja1Jl
c3VsdDo6RmFpbCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
aWYgKHNwYWNlQ2hlY2tSZXN1bHQgIT0gU3BhY2VDaGVja1Jlc3VsdDo6UGFzcykgewogICAgICAg
ICBjYWxsYmFjayhJREJFcnJvciB7IFF1b3RhRXhjZWVkZWRFcnJvciwgcXVvdGFFcnJvck1lc3Nh
Z2VOYW1lKCJDcmVhdGVJbmRleCIpIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
QVNTRVJUKG1fYmFja2luZ1N0b3JlKTsKKyAgICBpZiAoIW1fYmFja2luZ1N0b3JlKQorICAgICAg
ICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkJhY2tpbmcg
c3RvcmUgaXMgY2xvc2VkIiB9KTsKKwogICAgIGF1dG8gZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+
Y3JlYXRlSW5kZXgodHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSwgaW5mbyk7CiAgICAg
aWYgKGVycm9yLmlzTnVsbCgpKSB7CiAgICAgICAgIEFTU0VSVChtX2RhdGFiYXNlSW5mbyk7CkBA
IC02NDQsMTEgKzc0OSwyOCBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVJbmRleChV
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgYwogICAgIGNhbGxiYWNr
KGVycm9yKTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlSW5kZXgoVW5pcXVl
SURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIHVpbnQ2NF90IG9iamVjdFN0b3Jl
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpbmRleE5hbWUsIEVycm9yQ2FsbGJhY2sgY2FsbGJh
Y2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVJbmRleChVbmlxdWVJREJEYXRhYmFz
ZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIGluZGV4TmFtZSwgRXJyb3JDYWxsYmFjayBjYWxsYmFjaywgU3BhY2VD
aGVja1Jlc3VsdCBzcGFjZUNoZWNrUmVzdWx0KQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFk
KCkpOwogICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlSW5kZXgi
KTsKIAorICAgIGlmIChzcGFjZUNoZWNrUmVzdWx0ID09IFNwYWNlQ2hlY2tSZXN1bHQ6OlVua25v
d24pIHsKKyAgICAgICAgaWYgKCFtX21hbmFnZXIpCisgICAgICAgICAgICByZXR1cm4gY2FsbGJh
Y2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciB9KTsKKworICAgICAgICBtX21hbmFnZXIt
PnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIDAsIFt0aGlzLCB3ZWFrVGhpcyA9
IFdlYWtQdHIgeyAqdGhpcyB9LCB3ZWFrVHJhbnNhY3Rpb24gPSBXZWFrUHRyIHsgdHJhbnNhY3Rp
b24gfSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleE5hbWUsIGNhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayldKGJvb2wgZ3JhbnRlZCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXdl
YWtUaGlzIHx8ICF3ZWFrVHJhbnNhY3Rpb24pCisgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxi
YWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJEYXRhYmFzZSBvciB0cmFuc2FjdGlv
biBpcyBjbG9zZWQiIH0pOworCisgICAgICAgICAgICBkZWxldGVJbmRleCgqd2Vha1RyYW5zYWN0
aW9uLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4TmFtZSwgV1RGTW92ZShjYWxsYmFjayks
IGdyYW50ZWQgPyBTcGFjZUNoZWNrUmVzdWx0OjpQYXNzIDogU3BhY2VDaGVja1Jlc3VsdDo6RmFp
bCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKHNw
YWNlQ2hlY2tSZXN1bHQgPT0gU3BhY2VDaGVja1Jlc3VsdDo6UGFzcyk7CisgICAgaWYgKCFtX2Jh
Y2tpbmdTdG9yZSkKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0
YXRlRXJyb3IsICJCYWNraW5nIHN0b3JlIGlzIGNsb3NlZCIgfSk7CisKICAgICBhdXRvKiBvYmpl
Y3RTdG9yZUluZm8gPSBtX2RhdGFiYXNlSW5mby0+aW5mb0ZvckV4aXN0aW5nT2JqZWN0U3RvcmUo
b2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKICAgICBpZiAoIW9iamVjdFN0b3JlSW5mbykgewogICAg
ICAgICBjYWxsYmFjayhJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gZGVsZXRl
IGluZGV4IGZyb20gbm9uLWV4aXN0YW50IG9iamVjdCBzdG9yZSJfcyB9KTsKQEAgLTY2MCw5ICs3
ODIsOCBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVJbmRleChVbmlxdWVJREJEYXRh
YmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgdQogICAgICAgICBjYWxsYmFjayhJREJFcnJv
ciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gZGVsZXRlIG5vbi1leGlzdGFudCBpbmRleCJf
cyB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvIGluZGV4SWRlbnRpZmllciA9
IGluZGV4SW5mby0+aWRlbnRpZmllcigpOwogCi0gICAgQVNTRVJUKG1fYmFja2luZ1N0b3JlKTsK
KyAgICBhdXRvIGluZGV4SWRlbnRpZmllciA9IGluZGV4SW5mby0+aWRlbnRpZmllcigpOwogICAg
IGF1dG8gZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+ZGVsZXRlSW5kZXgodHJhbnNhY3Rpb24uaW5m
bygpLmlkZW50aWZpZXIoKSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleElkZW50aWZpZXIp
OwogICAgIGlmIChlcnJvci5pc051bGwoKSkKICAgICAgICAgb2JqZWN0U3RvcmVJbmZvLT5kZWxl
dGVJbmRleChpbmRleElkZW50aWZpZXIpOwpAQCAtNjcwLDE4ICs3OTEsMzMgQEAgdm9pZCBVbmlx
dWVJREJEYXRhYmFzZTo6ZGVsZXRlSW5kZXgoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYg
dHJhbnNhY3Rpb24sIHUKICAgICBjYWxsYmFjayhlcnJvcik7CiB9CiAKLXZvaWQgVW5pcXVlSURC
RGF0YWJhc2U6OnJlbmFtZUluZGV4KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5z
YWN0aW9uLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lLCBFcnJvckNhbGxiYWNrIGNhbGxiYWNrKQor
dm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cmVuYW1lSW5kZXgoVW5pcXVlSURCRGF0YWJhc2VUcmFu
c2FjdGlvbiYgdHJhbnNhY3Rpb24sIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgdWlu
dDY0X3QgaW5kZXhJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUsIEVycm9yQ2FsbGJh
Y2sgY2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgc3BhY2VDaGVja1Jlc3VsdCkKIHsKICAgICBB
U1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0
YWJhc2U6OnJlbmFtZUluZGV4Iik7CiAKLSAgICAvLyBRdW90YSBjaGVjay4KLSAgICBhdXRvIHRh
c2tTaXplID0gZGVmYXVsdFdyaXRlT3BlcmF0aW9uQ29zdCArIG5ld05hbWUuc2l6ZUluQnl0ZXMo
KTsKLSAgICBpZiAobV9zZXJ2ZXIucmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwg
dGFza1NpemUpID09IFN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uOjpEZW55KSB7CisgICAg
aWYgKHNwYWNlQ2hlY2tSZXN1bHQgPT0gU3BhY2VDaGVja1Jlc3VsdDo6VW5rbm93bikgeworICAg
ICAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJv
ciB7IEludmFsaWRTdGF0ZUVycm9yIH0pOworCisgICAgICAgIGF1dG8gdGFza1NpemUgPSBkZWZh
dWx0V3JpdGVPcGVyYXRpb25Db3N0ICsgbmV3TmFtZS5zaXplSW5CeXRlcygpOworICAgICAgICBt
X21hbmFnZXItPnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIHRhc2tTaXplLCBb
dGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgd2Vha1RyYW5zYWN0aW9uID0gV2Vh
a1B0ciB7IHRyYW5zYWN0aW9uIH0sIG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhJZGVudGlm
aWVyLCBuZXdOYW1lLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIGdyYW50ZWQp
IG11dGFibGUgeworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhd2Vha1RyYW5zYWN0aW9u
KQorICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0
ZUVycm9yLCAiRGF0YWJhc2Ugb3IgdHJhbnNhY3Rpb24gaXMgY2xvc2VkIiB9KTsKKworICAgICAg
ICAgICAgcmVuYW1lSW5kZXgoKndlYWtUcmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVJZGVudGlmaWVy
LCBpbmRleElkZW50aWZpZXIsIG5ld05hbWUsIFdURk1vdmUoY2FsbGJhY2spLCBncmFudGVkID8g
U3BhY2VDaGVja1Jlc3VsdDo6UGFzcyA6IFNwYWNlQ2hlY2tSZXN1bHQ6OkZhaWwpOworICAgICAg
ICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChzcGFjZUNoZWNrUmVzdWx0
ICE9IFNwYWNlQ2hlY2tSZXN1bHQ6OlBhc3MpIHsKICAgICAgICAgY2FsbGJhY2soSURCRXJyb3Ig
eyBRdW90YUV4Y2VlZGVkRXJyb3IsIHF1b3RhRXJyb3JNZXNzYWdlTmFtZSgiUmVuYW1lSW5kZXgi
KSB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIGlmICghbV9iYWNraW5nU3RvcmUp
CisgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAi
QmFja2luZyBzdG9yZSBpcyBjbG9zZWQiIH0pOworCiAgICAgYXV0byogb2JqZWN0U3RvcmVJbmZv
ID0gbV9kYXRhYmFzZUluZm8tPmluZm9Gb3JFeGlzdGluZ09iamVjdFN0b3JlKG9iamVjdFN0b3Jl
SWRlbnRpZmllcik7CiAgICAgaWYgKCFvYmplY3RTdG9yZUluZm8pIHsKICAgICAgICAgY2FsbGJh
Y2soSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIHJlbmFtZSBpbmRleCBpbiBu
b24tZXhpc3RhbnQgb2JqZWN0IHN0b3JlIl9zIH0pOwpAQCAtNjk0LDcgKzgzMCw2IEBAIHZvaWQg
VW5pcXVlSURCRGF0YWJhc2U6OnJlbmFtZUluZGV4KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rp
b24mIHRyYW5zYWN0aW9uLCB1CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBBU1NFUlQo
bV9iYWNraW5nU3RvcmUpOwogICAgIGF1dG8gZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+cmVuYW1l
SW5kZXgodHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSwgb2JqZWN0U3RvcmVJZGVudGlm
aWVyLCBpbmRleElkZW50aWZpZXIsIG5ld05hbWUpOwogICAgIGlmIChlcnJvci5pc051bGwoKSkK
ICAgICAgICAgaW5kZXhJbmZvLT5yZW5hbWUobmV3TmFtZSk7CkBAIC03MDksMTcgKzg0NCwxOSBA
QCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwdXRPckFkZChjb25zdCBJREJSZXF1ZXN0RGF0YSYg
cmVxdWVzdERhdGEsIGNvbnN0IElEQktleQogCiAgICAgQVNTRVJUKG1fZGF0YWJhc2VJbmZvKTsK
IAotICAgIElEQktleURhdGEgdXNlZEtleTsKLSAgICBJREJFcnJvciBlcnJvcjsKKyAgICBpZiAo
IW1fYmFja2luZ1N0b3JlKQorICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZh
bGlkU3RhdGVFcnJvciwgIkJhY2tpbmcgc3RvcmUgaXMgY2xvc2VkIiB9LCBrZXlEYXRhKTsKIAot
ICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CiAgICAgYXV0byBvYmplY3RTdG9yZUlkZW50aWZp
ZXIgPSByZXF1ZXN0RGF0YS5vYmplY3RTdG9yZUlkZW50aWZpZXIoKTsKICAgICBhdXRvKiBvYmpl
Y3RTdG9yZUluZm8gPSBtX2JhY2tpbmdTdG9yZS0+aW5mb0Zvck9iamVjdFN0b3JlKG9iamVjdFN0
b3JlSWRlbnRpZmllcik7Ci0gICAgaWYgKCFvYmplY3RTdG9yZUluZm8pIHsKLSAgICAgICAgY2Fs
bGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIk9iamVjdCBzdG9yZSBjYW5ub3Qg
YmUgZm91bmQgaW4gdGhlIGJhY2tpbmcgc3RvcmUiX3MgfSwgdXNlZEtleSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9CisgICAgaWYgKCFvYmplY3RTdG9yZUluZm8pCisgICAgICAgIHJldHVybiBj
YWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiT2JqZWN0IHN0b3JlIGNhbm5v
dCBiZSBmb3VuZCBpbiB0aGUgYmFja2luZyBzdG9yZSJfcyB9LCBrZXlEYXRhKTsKIAorICAgIGlm
ICghbV9tYW5hZ2VyKQorICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlk
U3RhdGVFcnJvciB9LCBrZXlEYXRhKTsKKworICAgIElEQktleURhdGEgdXNlZEtleTsKKyAgICBJ
REJFcnJvciBlcnJvcjsKICAgICBib29sIHVzZWRLZXlJc0dlbmVyYXRlZCA9IGZhbHNlOwogICAg
IHVpbnQ2NF90IGtleU51bWJlcjsKICAgICBhdXRvIHRyYW5zYWN0aW9uSWRlbnRpZmllciA9IHJl
cXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpOwpAQCAtNzMwLDc2ICs4NjcsMTA1IEBA
IHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnB1dE9yQWRkKGNvbnN0IElEQlJlcXVlc3REYXRhJiBy
ZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5CiAKICAgICBpZiAob2JqZWN0U3RvcmVJbmZvLT5hdXRv
SW5jcmVtZW50KCkgJiYgIWtleURhdGEuaXNWYWxpZCgpKSB7CiAgICAgICAgIGVycm9yID0gbV9i
YWNraW5nU3RvcmUtPmdlbmVyYXRlS2V5TnVtYmVyKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgb2Jq
ZWN0U3RvcmVJZGVudGlmaWVyLCBrZXlOdW1iZXIpOwotICAgICAgICBpZiAoIWVycm9yLmlzTnVs
bCgpKSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhlcnJvciwgdXNlZEtleSk7Ci0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKCFlcnJvci5pc051bGwoKSkKKyAgICAg
ICAgICAgIHJldHVybiBjYWxsYmFjayhlcnJvciwgdXNlZEtleSk7CisKICAgICAgICAgdXNlZEtl
eS5zZXROdW1iZXJWYWx1ZShrZXlOdW1iZXIpOwogICAgICAgICB1c2VkS2V5SXNHZW5lcmF0ZWQg
PSB0cnVlOwogICAgIH0gZWxzZQogICAgICAgICB1c2VkS2V5ID0ga2V5RGF0YTsKIAotICAgIC8v
IEdlbmVyYXRlIGluZGV4IGtleXMgdXAgZnJvbnQgZm9yIG1vcmUgYWNjdXJhdGUgcXVvdGEgY2hl
Y2suCi0gICAgSW5kZXhJRFRvSW5kZXhLZXlNYXAgaW5kZXhLZXlzOwotICAgIGNhbGxPbklEQlNl
cmlhbGl6YXRpb25UaHJlYWRBbmRXYWl0KFtvYmplY3RTdG9yZUluZm8gPSBvYmplY3RTdG9yZUlu
Zm8tPmlzb2xhdGVkQ29weSgpLCBrZXkgPSB1c2VkS2V5Lmlzb2xhdGVkQ29weSgpLCB2YWx1ZSA9
IHZhbHVlLmlzb2xhdGVkQ29weSgpLCAmaW5kZXhLZXlzXShhdXRvJiBnbG9iYWxPYmplY3QpIHsK
LSAgICAgICAgaW5kZXhLZXlzID0gZ2VuZXJhdGVJbmRleEtleU1hcEZvclZhbHVlKGdsb2JhbE9i
amVjdCwgb2JqZWN0U3RvcmVJbmZvLCBrZXksIHZhbHVlKTsKLSAgICB9KTsKLQogICAgIGlmIChv
dmVyd3JpdGVNb2RlID09IEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlOjpOb092
ZXJ3cml0ZSkgewogICAgICAgICBib29sIGtleUV4aXN0czsKICAgICAgICAgZXJyb3IgPSBtX2Jh
Y2tpbmdTdG9yZS0+a2V5RXhpc3RzSW5PYmplY3RTdG9yZSh0cmFuc2FjdGlvbklkZW50aWZpZXIs
IG9iamVjdFN0b3JlSWRlbnRpZmllciwgdXNlZEtleSwga2V5RXhpc3RzKTsKLSAgICAgICAgaWYg
KGVycm9yLmlzTnVsbCgpICYmIGtleUV4aXN0cykKKyAgICAgICAgaWYgKCFlcnJvciAmJiBrZXlF
eGlzdHMpCiAgICAgICAgICAgICBlcnJvciA9IElEQkVycm9yIHsgQ29uc3RyYWludEVycm9yLCAi
S2V5IGFscmVhZHkgZXhpc3RzIGluIHRoZSBvYmplY3Qgc3RvcmUiX3MgfTsKIAotICAgICAgICBp
ZiAoIWVycm9yLmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhlcnJvciwgdXNlZEtl
eSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKCEhZXJyb3Ip
CisgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soZXJyb3IsIHVzZWRLZXkpOwogICAgIH0KIAot
ICAgIC8vIFF1b3RhIGNoZWNrLgorICAgIC8vIEdlbmVyYXRlIGluZGV4IGtleXMgdXAgZnJvbnQg
Zm9yIG1vcmUgYWNjdXJhdGUgcXVvdGEgY2hlY2suCisgICAgSW5kZXhJRFRvSW5kZXhLZXlNYXAg
aW5kZXhLZXlzOworICAgIGNhbGxPbklEQlNlcmlhbGl6YXRpb25UaHJlYWRBbmRXYWl0KFtvYmpl
Y3RTdG9yZUluZm8gPSBvYmplY3RTdG9yZUluZm8tPmlzb2xhdGVkQ29weSgpLCBrZXkgPSB1c2Vk
S2V5Lmlzb2xhdGVkQ29weSgpLCB2YWx1ZSA9IHZhbHVlLmlzb2xhdGVkQ29weSgpLCAmaW5kZXhL
ZXlzXShhdXRvJiBnbG9iYWxPYmplY3QpIHsKKyAgICAgICAgaW5kZXhLZXlzID0gY3Jvc3NUaHJl
YWRDb3B5KGdlbmVyYXRlSW5kZXhLZXlNYXBGb3JWYWx1ZShnbG9iYWxPYmplY3QsIG9iamVjdFN0
b3JlSW5mbywga2V5LCB2YWx1ZSkpOworICAgIH0pOworCisgICAgZ2VuZXJhdGVkS2V5UmVzZXR0
ZXIucmVsZWFzZSgpOwogICAgIGF1dG8ga2V5U2l6ZSA9IGVzdGltYXRlU2l6ZSh1c2VkS2V5KTsK
ICAgICBhdXRvIHZhbHVlU2l6ZSA9IGVzdGltYXRlU2l6ZSh2YWx1ZSk7CiAgICAgYXV0byBpbmRl
eFNpemUgPSBlc3RpbWF0ZVNpemUoKm9iamVjdFN0b3JlSW5mbywgaW5kZXhLZXlzLCBrZXlTaXpl
KTsKICAgICBhdXRvIHRhc2tTaXplID0gZGVmYXVsdFdyaXRlT3BlcmF0aW9uQ29zdCArIGtleVNp
emUgKyB2YWx1ZVNpemUgKyBpbmRleFNpemU7CiAKICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVl
SURCRGF0YWJhc2U6OnB1dE9yQWRkIHF1b3RhIGNoZWNrIHdpdGggdGFzayBzaXplOiAlIiBQUkl1
NjQgIiBrZXkgc2l6ZTogJSIgUFJJdTY0ICIgdmFsdWUgc2l6ZTogJSIgUFJJdTY0ICIgaW5kZXgg
c2l6ZTogJSIgUFJJdTY0LCB0YXNrU2l6ZSwga2V5U2l6ZSwgdmFsdWVTaXplLCBpbmRleFNpemUp
OworICAgIG1fbWFuYWdlci0+cmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwgdGFz
a1NpemUsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCByZXF1ZXN0RGF0YSwg
dXNlZEtleSwgdmFsdWUsIG92ZXJ3cml0ZU1vZGUsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayksIHVzZWRLZXlJc0dlbmVyYXRlZCwgaW5kZXhLZXlzLCBvYmplY3RTdG9yZUluZm8gPSAqb2Jq
ZWN0U3RvcmVJbmZvXShib29sIGdyYW50ZWQpIG11dGFibGUgeworICAgICAgICBpZiAoIXdlYWtU
aGlzKQorICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRl
RXJyb3IsICJEYXRhYmFzZSBpcyBjbG9zZWQiIH0sIHVzZWRLZXkpOwogCi0gICAgaWYgKG1fc2Vy
dmVyLnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIHRhc2tTaXplKSA9PSBTdG9y
YWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbjo6RGVueSkgewotICAgICAgICBjYWxsYmFjayhJREJF
cnJvciB7IFF1b3RhRXhjZWVkZWRFcnJvciwgcXVvdGFFcnJvck1lc3NhZ2VOYW1lKCJQdXRPckFk
ZCIpIH0sIHVzZWRLZXkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgICAgICBwdXRPckFk
ZEFmdGVyU3BhY2VDaGVjayhyZXF1ZXN0RGF0YSwgdXNlZEtleSwgdmFsdWUsIG92ZXJ3cml0ZU1v
ZGUsIFdURk1vdmUoY2FsbGJhY2spLCB1c2VkS2V5SXNHZW5lcmF0ZWQsIGluZGV4S2V5cywgb2Jq
ZWN0U3RvcmVJbmZvLCBncmFudGVkID8gU3BhY2VDaGVja1Jlc3VsdDo6UGFzcyA6IFNwYWNlQ2hl
Y2tSZXN1bHQ6OkZhaWwpOworICAgIH0pOworfQogCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpw
dXRPckFkZEFmdGVyU3BhY2VDaGVjayhjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEs
IGNvbnN0IElEQktleURhdGEmIGtleURhdGEsIGNvbnN0IElEQlZhbHVlJiB2YWx1ZSwgSW5kZXhl
ZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUgb3ZlcndyaXRlTW9kZSwgS2V5RGF0YUNhbGxi
YWNrIGNhbGxiYWNrLCBib29sIGlzS2V5R2VuZXJhdGVkLCBjb25zdCBJbmRleElEVG9JbmRleEtl
eU1hcCYgaW5kZXhLZXlzLCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mIG9iamVjdFN0b3JlSW5m
bywgU3BhY2VDaGVja1Jlc3VsdCBzcGFjZUNoZWNrUmVzdWx0KQoreworICAgIEFTU0VSVCghaXNN
YWluVGhyZWFkKCkpOworICAgIEFTU0VSVChtX2RhdGFiYXNlSW5mbyk7CisKKyAgICBpZiAoIW1f
YmFja2luZ1N0b3JlKQorICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlk
U3RhdGVFcnJvciwgIkJhY2tpbmcgc3RvcmUgaXMgY2xvc2VkIiB9LCBrZXlEYXRhKTsKKworICAg
IHVpbnQ2NF90IGtleU51bWJlciA9IGlzS2V5R2VuZXJhdGVkID8ga2V5RGF0YS5udW1iZXIoKSA6
IDA7CisgICAgYXV0byBvYmplY3RTdG9yZUlkZW50aWZpZXIgPSBvYmplY3RTdG9yZUluZm8uaWRl
bnRpZmllcigpOworICAgIGF1dG8gdHJhbnNhY3Rpb25JZGVudGlmaWVyID0gcmVxdWVzdERhdGEu
dHJhbnNhY3Rpb25JZGVudGlmaWVyKCk7CisgICAgYXV0byBnZW5lcmF0ZWRLZXlSZXNldHRlciA9
IG1ha2VTY29wZUV4aXQoW3RoaXMsIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgb2JqZWN0U3RvcmVJ
ZGVudGlmaWVyLCAma2V5TnVtYmVyLCAmaXNLZXlHZW5lcmF0ZWRdKCkgeworICAgICAgICBpZiAo
aXNLZXlHZW5lcmF0ZWQpCisgICAgICAgICAgICBtX2JhY2tpbmdTdG9yZS0+cmV2ZXJ0R2VuZXJh
dGVkS2V5TnVtYmVyKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgb2JqZWN0U3RvcmVJZGVudGlmaWVy
LCBrZXlOdW1iZXIpOworICAgIH0pOworCisgICAgaWYgKHNwYWNlQ2hlY2tSZXN1bHQgIT0gU3Bh
Y2VDaGVja1Jlc3VsdDo6UGFzcykKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsg
UXVvdGFFeGNlZWRlZEVycm9yLCBxdW90YUVycm9yTWVzc2FnZU5hbWUoIlB1dE9yQWRkIikgfSwg
a2V5RGF0YSk7CiAgICAgLy8gSWYgYSByZWNvcmQgYWxyZWFkeSBleGlzdHMgaW4gc3RvcmUsIHRo
ZW4gcmVtb3ZlIHRoZSByZWNvcmQgZnJvbSBzdG9yZSB1c2luZyB0aGUgc3RlcHMgZm9yIGRlbGV0
aW5nIHJlY29yZHMgZnJvbSBhbiBvYmplY3Qgc3RvcmUuCi0gICAgLy8gVGhpcyBpcyBpbXBvcnRh
bnQgYmVjYXVzZSBmb3JtYWxseSBkZWxldGluZyBpdCBmcm9tIGZyb20gdGhlIG9iamVjdCBzdG9y
ZSBhbHNvIHJlbW92ZXMgaXQgZnJvbSB0aGUgYXBwcm9wcmlhdGUgaW5kZXhlcy4KLSAgICBlcnJv
ciA9IG1fYmFja2luZ1N0b3JlLT5kZWxldGVSYW5nZSh0cmFuc2FjdGlvbklkZW50aWZpZXIsIG9i
amVjdFN0b3JlSWRlbnRpZmllciwgdXNlZEtleSk7Ci0gICAgaWYgKCFlcnJvci5pc051bGwoKSkg
ewotICAgICAgICBjYWxsYmFjayhlcnJvciwgdXNlZEtleSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9CisgICAgLy8gVGhpcyBpcyBpbXBvcnRhbnQgYmVjYXVzZSBmb3JtYWxseSBkZWxldGluZyBp
dCBmcm9tIHRoZSBvYmplY3Qgc3RvcmUgYWxzbyByZW1vdmVzIGl0IGZyb20gdGhlIGFwcHJvcHJp
YXRlIGluZGV4ZXMuCisgICAgSURCRXJyb3IgZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+ZGVsZXRl
UmFuZ2UodHJhbnNhY3Rpb25JZGVudGlmaWVyLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGtleURh
dGEpOworICAgIGlmICghZXJyb3IuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBjYWxsYmFjayhl
cnJvciwga2V5RGF0YSk7CiAKLSAgICBlcnJvciA9IG1fYmFja2luZ1N0b3JlLT5hZGRSZWNvcmQo
dHJhbnNhY3Rpb25JZGVudGlmaWVyLCAqb2JqZWN0U3RvcmVJbmZvLCB1c2VkS2V5LCBpbmRleEtl
eXMsIHZhbHVlKTsKLSAgICBpZiAoIWVycm9yLmlzTnVsbCgpKSB7Ci0gICAgICAgIGNhbGxiYWNr
KGVycm9yLCB1c2VkS2V5KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBlcnJvciA9IG1f
YmFja2luZ1N0b3JlLT5hZGRSZWNvcmQodHJhbnNhY3Rpb25JZGVudGlmaWVyLCBvYmplY3RTdG9y
ZUluZm8sIGtleURhdGEsIGluZGV4S2V5cywgdmFsdWUpOworICAgIGlmICghZXJyb3IuaXNOdWxs
KCkpCisgICAgICAgIHJldHVybiBjYWxsYmFjayhlcnJvciwga2V5RGF0YSk7CiAKLSAgICBpZiAo
b3ZlcndyaXRlTW9kZSAhPSBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZTo6T3Zl
cndyaXRlRm9yQ3Vyc29yICYmIG9iamVjdFN0b3JlSW5mby0+YXV0b0luY3JlbWVudCgpICYmIGtl
eURhdGEudHlwZSgpID09IEluZGV4ZWREQjo6S2V5VHlwZTo6TnVtYmVyKQorICAgIGlmIChvdmVy
d3JpdGVNb2RlICE9IEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlOjpPdmVyd3Jp
dGVGb3JDdXJzb3IgJiYgb2JqZWN0U3RvcmVJbmZvLmF1dG9JbmNyZW1lbnQoKSAmJiBrZXlEYXRh
LnR5cGUoKSA9PSBJbmRleGVkREI6OktleVR5cGU6Ok51bWJlcikKICAgICAgICAgZXJyb3IgPSBt
X2JhY2tpbmdTdG9yZS0+bWF5YmVVcGRhdGVLZXlHZW5lcmF0b3JOdW1iZXIodHJhbnNhY3Rpb25J
ZGVudGlmaWVyLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGtleURhdGEubnVtYmVyKCkpOwogCiAg
ICAgZ2VuZXJhdGVkS2V5UmVzZXR0ZXIucmVsZWFzZSgpOwotICAgIGNhbGxiYWNrKGVycm9yLCB1
c2VkS2V5KTsKKyAgICBjYWxsYmFjayhlcnJvciwga2V5RGF0YSk7CiB9CiAKLXZvaWQgVW5pcXVl
SURCRGF0YWJhc2U6OmdldFJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEs
IGNvbnN0IElEQkdldFJlY29yZERhdGEmIGdldFJlY29yZERhdGEsIEdldFJlc3VsdENhbGxiYWNr
IGNhbGxiYWNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Z2V0UmVjb3JkKGNvbnN0IElEQlJl
cXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCR2V0UmVjb3JkRGF0YSYgZ2V0UmVjb3Jk
RGF0YSwgR2V0UmVzdWx0Q2FsbGJhY2sgY2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgc3BhY2VD
aGVja1Jlc3VsdCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5k
ZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6OmdldFJlY29yZCIpOwogCisgICAgaWYgKHNwYWNl
Q2hlY2tSZXN1bHQgPT0gU3BhY2VDaGVja1Jlc3VsdDo6VW5rbm93bikgeworICAgICAgICBpZiAo
IW1fbWFuYWdlcikKKyAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFs
aWRTdGF0ZUVycm9yIH0sIElEQkdldFJlc3VsdCB7IH0pOworCisgICAgICAgIG1fbWFuYWdlci0+
cmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwgMCwgW3RoaXMsIHdlYWtUaGlzID0g
V2Vha1B0ciB7ICp0aGlzIH0sIHJlcXVlc3REYXRhLCBnZXRSZWNvcmREYXRhLCBjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spXShib29sIGdyYW50ZWQpIG11dGFibGUgeworICAgICAgICAgICAg
aWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3Ig
eyBJbnZhbGlkU3RhdGVFcnJvciwgIkRhdGFiYXNlIGlzIGNsb3NlZCIgfSwgSURCR2V0UmVzdWx0
IHsgfSk7CisKKyAgICAgICAgICAgIGdldFJlY29yZChyZXF1ZXN0RGF0YSwgZ2V0UmVjb3JkRGF0
YSwgV1RGTW92ZShjYWxsYmFjayksIGdyYW50ZWQgPyBTcGFjZUNoZWNrUmVzdWx0OjpQYXNzIDog
U3BhY2VDaGVja1Jlc3VsdDo6RmFpbCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgQVNTRVJUKHNwYWNlQ2hlY2tSZXN1bHQgPT0gU3BhY2VDaGVja1Jlc3VsdDo6
UGFzcyk7CisgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNr
KElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJCYWNraW5nIHN0b3JlIGlzIGNsb3NlZCIg
fSwgSURCR2V0UmVzdWx0IHsgfSk7CisKICAgICBJREJHZXRSZXN1bHQgcmVzdWx0OwogICAgIElE
QkVycm9yIGVycm9yOwogCi0gICAgQVNTRVJUKG1fYmFja2luZ1N0b3JlKTsKICAgICBpZiAodWlu
dDY0X3QgaW5kZXhJZGVudGlmaWVyID0gcmVxdWVzdERhdGEuaW5kZXhJZGVudGlmaWVyKCkpCiAg
ICAgICAgIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPmdldEluZGV4UmVjb3JkKHJlcXVlc3REYXRh
LnRyYW5zYWN0aW9uSWRlbnRpZmllcigpLCByZXF1ZXN0RGF0YS5vYmplY3RTdG9yZUlkZW50aWZp
ZXIoKSwgaW5kZXhJZGVudGlmaWVyLCByZXF1ZXN0RGF0YS5pbmRleFJlY29yZFR5cGUoKSwgZ2V0
UmVjb3JkRGF0YS5rZXlSYW5nZURhdGEsIHJlc3VsdCk7CiAgICAgZWxzZQpAQCAtODA4LDQ3ICs5
NzQsMTEwIEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmdldFJlY29yZChjb25zdCBJREJSZXF1
ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkdlCiAgICAgY2FsbGJhY2soZXJyb3IsIHJl
c3VsdCk7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmdldEFsbFJlY29yZHMoY29uc3Qg
SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJHZXRBbGxSZWNvcmRzRGF0YSYg
Z2V0QWxsUmVjb3Jkc0RhdGEsIEdldEFsbFJlc3VsdHNDYWxsYmFjayBjYWxsYmFjaykKK3ZvaWQg
VW5pcXVlSURCRGF0YWJhc2U6OmdldEFsbFJlY29yZHMoY29uc3QgSURCUmVxdWVzdERhdGEmIHJl
cXVlc3REYXRhLCBjb25zdCBJREJHZXRBbGxSZWNvcmRzRGF0YSYgZ2V0QWxsUmVjb3Jkc0RhdGEs
IEdldEFsbFJlc3VsdHNDYWxsYmFjayBjYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCBzcGFjZUNo
ZWNrUmVzdWx0KQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIExPRyhJbmRl
eGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6Z2V0QWxsUmVjb3JkcyIpOwogCi0gICAgQVNTRVJU
KG1fYmFja2luZ1N0b3JlKTsKKyAgICBpZiAoc3BhY2VDaGVja1Jlc3VsdCA9PSBTcGFjZUNoZWNr
UmVzdWx0OjpVbmtub3duKSB7CisgICAgICAgIGlmICghbV9tYW5hZ2VyKQorICAgICAgICAgICAg
cmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IgfSwgSURCR2V0QWxs
UmVzdWx0IHsgfSk7CisKKyAgICAgICAgbV9tYW5hZ2VyLT5yZXF1ZXN0U3BhY2UobV9pZGVudGlm
aWVyLm9yaWdpbigpLCAwLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgcmVx
dWVzdERhdGEsIGdldEFsbFJlY29yZHNEYXRhLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
XShib29sIGdyYW50ZWQpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAg
ICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJv
ciwgIkRhdGFiYXNlIGlzIGNsb3NlZCIgfSwgSURCR2V0QWxsUmVzdWx0IHsgfSk7CisKKyAgICAg
ICAgICAgIGdldEFsbFJlY29yZHMocmVxdWVzdERhdGEsIGdldEFsbFJlY29yZHNEYXRhLCBXVEZN
b3ZlKGNhbGxiYWNrKSwgZ3JhbnRlZCA/IFNwYWNlQ2hlY2tSZXN1bHQ6OlBhc3MgOiBTcGFjZUNo
ZWNrUmVzdWx0OjpGYWlsKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBBU1NFUlQoc3BhY2VDaGVja1Jlc3VsdCA9PSBTcGFjZUNoZWNrUmVzdWx0OjpQYXNzKTsK
KyAgICBpZiAoIW1fYmFja2luZ1N0b3JlKQorICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJy
b3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkJhY2tpbmcgc3RvcmUgaXMgY2xvc2VkIiB9LCBJREJH
ZXRBbGxSZXN1bHQgeyB9KTsKKwogICAgIElEQkdldEFsbFJlc3VsdCByZXN1bHQ7CiAgICAgYXV0
byBlcnJvciA9IG1fYmFja2luZ1N0b3JlLT5nZXRBbGxSZWNvcmRzKHJlcXVlc3REYXRhLnRyYW5z
YWN0aW9uSWRlbnRpZmllcigpLCBnZXRBbGxSZWNvcmRzRGF0YSwgcmVzdWx0KTsKIAogICAgIGNh
bGxiYWNrKGVycm9yLCByZXN1bHQpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRD
b3VudChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQktleVJhbmdl
RGF0YSYgcmFuZ2UsIENvdW50Q2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFi
YXNlOjpnZXRDb3VudChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElE
QktleVJhbmdlRGF0YSYgcmFuZ2UsIENvdW50Q2FsbGJhY2sgY2FsbGJhY2ssIFNwYWNlQ2hlY2tS
ZXN1bHQgc3BhY2VDaGVja1Jlc3VsdCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsK
ICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6OmdldENvdW50Iik7CiAKLSAg
ICBBU1NFUlQobV9iYWNraW5nU3RvcmUpOworICAgIGlmIChzcGFjZUNoZWNrUmVzdWx0ID09IFNw
YWNlQ2hlY2tSZXN1bHQ6OlVua25vd24pIHsKKyAgICAgICAgaWYgKCFtX21hbmFnZXIpCisgICAg
ICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciB9LCAw
KTsKKworICAgICAgICBtX21hbmFnZXItPnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2lu
KCksIDAsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCByZXF1ZXN0RGF0YSwg
cmFuZ2UsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgZ3JhbnRlZCkgbXV0YWJs
ZSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHJldHVybiBj
YWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiRGF0YWJhc2UgaXMgY2xvc2Vk
IiB9LCAwKTsKKworICAgICAgICAgICAgZ2V0Q291bnQocmVxdWVzdERhdGEsIHJhbmdlLCBXVEZN
b3ZlKGNhbGxiYWNrKSwgZ3JhbnRlZCA/IFNwYWNlQ2hlY2tSZXN1bHQ6OlBhc3MgOiBTcGFjZUNo
ZWNrUmVzdWx0OjpGYWlsKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBBU1NFUlQoc3BhY2VDaGVja1Jlc3VsdCA9PSBTcGFjZUNoZWNrUmVzdWx0OjpQYXNzKTsK
KyAgICBpZiAoIW1fYmFja2luZ1N0b3JlKQorICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJy
b3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkJhY2tpbmcgc3RvcmUgaXMgY2xvc2VkIiB9LCAwKTsK
KwogICAgIHVpbnQ2NF90IGNvdW50ID0gMDsKICAgICBhdXRvIGVycm9yID0gbV9iYWNraW5nU3Rv
cmUtPmdldENvdW50KHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpLCByZXF1ZXN0
RGF0YS5vYmplY3RTdG9yZUlkZW50aWZpZXIoKSwgcmVxdWVzdERhdGEuaW5kZXhJZGVudGlmaWVy
KCksIHJhbmdlLCBjb3VudCk7CiAKICAgICBjYWxsYmFjayhlcnJvciwgY291bnQpOwogfQogCi12
b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEm
IHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlRGF0YSwgRXJyb3JD
YWxsYmFjayBjYWxsYmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZVJlY29yZChj
b25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQktleVJhbmdlRGF0YSYg
a2V5UmFuZ2VEYXRhLCBFcnJvckNhbGxiYWNrIGNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0IHNw
YWNlQ2hlY2tSZXN1bHQpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgTE9H
KEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVSZWNvcmQiKTsKIAotICAgIEFT
U0VSVChtX2JhY2tpbmdTdG9yZSk7CisgICAgaWYgKHNwYWNlQ2hlY2tSZXN1bHQgPT0gU3BhY2VD
aGVja1Jlc3VsdDo6VW5rbm93bikgeworICAgICAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAgICAg
ICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yIH0pOworCisg
ICAgICAgIG1fbWFuYWdlci0+cmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwgMCwg
W3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHJlcXVlc3REYXRhLCBrZXlSYW5n
ZURhdGEsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgZ3JhbnRlZCkgbXV0YWJs
ZSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHJldHVybiBj
YWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiRGF0YWJhc2UgaXMgY2xvc2Vk
IiB9KTsKKworICAgICAgICAgICAgZGVsZXRlUmVjb3JkKHJlcXVlc3REYXRhLCBrZXlSYW5nZURh
dGEsIFdURk1vdmUoY2FsbGJhY2spLCBncmFudGVkID8gU3BhY2VDaGVja1Jlc3VsdDo6UGFzcyA6
IFNwYWNlQ2hlY2tSZXN1bHQ6OkZhaWwpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIEFTU0VSVChzcGFjZUNoZWNrUmVzdWx0ID09IFNwYWNlQ2hlY2tSZXN1bHQ6
OlBhc3MpOworICAgIGlmICghbV9iYWNraW5nU3RvcmUpCisgICAgICAgIHJldHVybiBjYWxsYmFj
ayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiQmFja2luZyBzdG9yZSBpcyBjbG9zZWQi
IH0pOworCiAgICAgYXV0byBlcnJvciA9IG1fYmFja2luZ1N0b3JlLT5kZWxldGVSYW5nZShyZXF1
ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSwgcmVxdWVzdERhdGEub2JqZWN0U3RvcmVJ
ZGVudGlmaWVyKCksIGtleVJhbmdlRGF0YSk7CiAKICAgICBjYWxsYmFjayhlcnJvcik7CiB9CiAK
LXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6Om9wZW5DdXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEm
IHJlcXVlc3REYXRhLCBjb25zdCBJREJDdXJzb3JJbmZvJiBpbmZvLCBHZXRSZXN1bHRDYWxsYmFj
ayBjYWxsYmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6Om9wZW5DdXJzb3IoY29uc3QgSURC
UmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJDdXJzb3JJbmZvJiBpbmZvLCBHZXRS
ZXN1bHRDYWxsYmFjayBjYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCBzcGFjZUNoZWNrUmVzdWx0
KQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIExPRyhJbmRleGVkREIsICJV
bmlxdWVJREJEYXRhYmFzZTo6b3BlbkN1cnNvciIpOwogCi0gICAgQVNTRVJUKG1fYmFja2luZ1N0
b3JlKTsKKyAgICBpZiAoc3BhY2VDaGVja1Jlc3VsdCA9PSBTcGFjZUNoZWNrUmVzdWx0OjpVbmtu
b3duKSB7CisgICAgICAgIGlmICghbV9tYW5hZ2VyKQorICAgICAgICAgICAgcmV0dXJuIGNhbGxi
YWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IgfSwgSURCR2V0UmVzdWx0IHsgfSk7CisK
KyAgICAgICAgbV9tYW5hZ2VyLT5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCAw
LCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgcmVxdWVzdERhdGEsIGluZm8s
IGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgZ3JhbnRlZCkgbXV0YWJsZSB7Cisg
ICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFj
ayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiRGF0YWJhc2Ugb3IgdHJhbnNhY3Rpb24g
aXMgY2xvc2VkIiB9LCBJREJHZXRSZXN1bHQgeyB9KTsKKworICAgICAgICAgICAgb3BlbkN1cnNv
cihyZXF1ZXN0RGF0YSwgaW5mbywgV1RGTW92ZShjYWxsYmFjayksIGdyYW50ZWQgPyBTcGFjZUNo
ZWNrUmVzdWx0OjpQYXNzIDogU3BhY2VDaGVja1Jlc3VsdDo6RmFpbCk7CisgICAgICAgIH0pOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKHNwYWNlQ2hlY2tSZXN1bHQgPT0g
U3BhY2VDaGVja1Jlc3VsdDo6UGFzcyk7CisgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkKKyAgICAg
ICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJCYWNraW5n
IHN0b3JlIGlzIGNsb3NlZCIgfSwgSURCR2V0UmVzdWx0IHsgfSk7CiAKICAgICBJREJHZXRSZXN1
bHQgcmVzdWx0OwogICAgIGF1dG8gZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+b3BlbkN1cnNvcihy
ZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSwgaW5mbywgcmVzdWx0KTsKQEAgLTg1
NiwxMiArMTA4NSwyNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuQ3Vyc29yKGNvbnN0
IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCQwogICAgIGNhbGxiYWNrKGVy
cm9yLCByZXN1bHQpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjppdGVyYXRlQ3Vyc29y
KGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCSXRlcmF0ZUN1cnNv
ckRhdGEmIGRhdGEsIEdldFJlc3VsdENhbGxiYWNrIGNhbGxiYWNrKQordm9pZCBVbmlxdWVJREJE
YXRhYmFzZTo6aXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEs
IGNvbnN0IElEQkl0ZXJhdGVDdXJzb3JEYXRhJiBkYXRhLCBHZXRSZXN1bHRDYWxsYmFjayBjYWxs
YmFjaywgU3BhY2VDaGVja1Jlc3VsdCBzcGFjZUNoZWNrUmVzdWx0KQogewogICAgIEFTU0VSVCgh
aXNNYWluVGhyZWFkKCkpOwogICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6
aXRlcmF0ZUN1cnNvciIpOwogCi0gICAgQVNTRVJUKG1fYmFja2luZ1N0b3JlKTsKKyAgICBpZiAo
c3BhY2VDaGVja1Jlc3VsdCA9PSBTcGFjZUNoZWNrUmVzdWx0OjpVbmtub3duKSB7CisgICAgICAg
IGlmICghbV9tYW5hZ2VyKQorICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsg
SW52YWxpZFN0YXRlRXJyb3IgfSwgSURCR2V0UmVzdWx0IHsgfSk7CisKKyAgICAgICAgbV9tYW5h
Z2VyLT5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCAwLCBbdGhpcywgd2Vha1Ro
aXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgcmVxdWVzdERhdGEsIGRhdGEsIGNhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayldKGJvb2wgZ3JhbnRlZCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAo
IXdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IElu
dmFsaWRTdGF0ZUVycm9yLCAiRGF0YWJhc2Ugb3IgdHJhbnNhY3Rpb24gaXMgY2xvc2VkIiB9LCBJ
REJHZXRSZXN1bHQgeyB9KTsKKworICAgICAgICAgICAgaXRlcmF0ZUN1cnNvcihyZXF1ZXN0RGF0
YSwgZGF0YSwgV1RGTW92ZShjYWxsYmFjayksIGdyYW50ZWQgPyBTcGFjZUNoZWNrUmVzdWx0OjpQ
YXNzIDogU3BhY2VDaGVja1Jlc3VsdDo6RmFpbCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgQVNTRVJUKHNwYWNlQ2hlY2tSZXN1bHQgPT0gU3BhY2VDaGVja1Jl
c3VsdDo6UGFzcyk7CisgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkKKyAgICAgICAgcmV0dXJuIGNh
bGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJCYWNraW5nIHN0b3JlIGlzIGNs
b3NlZCIgfSwgSURCR2V0UmVzdWx0IHsgfSk7CiAKICAgICBJREJHZXRSZXN1bHQgcmVzdWx0Owog
ICAgIGF1dG8gdHJhbnNhY3Rpb25JZGVudGlmaWVyID0gcmVxdWVzdERhdGEudHJhbnNhY3Rpb25J
ZGVudGlmaWVyKCk7CkBAIC04NzEsMTMgKzExMTUsMzAgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFz
ZTo6aXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0
IEkKICAgICBjYWxsYmFjayhlcnJvciwgcmVzdWx0KTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRh
YmFzZTo6Y29tbWl0VHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJh
bnNhY3Rpb24sIEVycm9yQ2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNl
Ojpjb21taXRUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2Fj
dGlvbiwgRXJyb3JDYWxsYmFjayBjYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCBzcGFjZUNoZWNr
UmVzdWx0KQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIExPRyhJbmRleGVk
REIsICJVbmlxdWVJREJEYXRhYmFzZTo6Y29tbWl0VHJhbnNhY3Rpb24gLSAlcyIsIHRyYW5zYWN0
aW9uLmluZm8oKS5pZGVudGlmaWVyKCkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwog
CisgICAgaWYgKHNwYWNlQ2hlY2tSZXN1bHQgPT0gU3BhY2VDaGVja1Jlc3VsdDo6VW5rbm93bikg
eworICAgICAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJ
REJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yIH0pOworCisgICAgICAgIG1fbWFuYWdlci0+cmVx
dWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwgMCwgW3RoaXMsIHdlYWtUaGlzID0gV2Vh
a1B0ciB7ICp0aGlzIH0sIHdlYWtUcmFuc2FjdGlvbiA9IFdlYWtQdHIgeyB0cmFuc2FjdGlvbiB9
LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIGdyYW50ZWQpIG11dGFibGUgewor
ICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhd2Vha1RyYW5zYWN0aW9uKQorICAgICAgICAg
ICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiRGF0
YWJhc2Ugb3IgdHJhbnNhY3Rpb24gaXMgY2xvc2VkIiB9KTsKKworICAgICAgICAgICAgY29tbWl0
VHJhbnNhY3Rpb24oKndlYWtUcmFuc2FjdGlvbiwgV1RGTW92ZShjYWxsYmFjayksIGdyYW50ZWQg
PyBTcGFjZUNoZWNrUmVzdWx0OjpQYXNzIDogU3BhY2VDaGVja1Jlc3VsdDo6RmFpbCk7CisgICAg
ICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKHNwYWNlQ2hlY2tS
ZXN1bHQgPT0gU3BhY2VDaGVja1Jlc3VsdDo6UGFzcyk7CiAgICAgQVNTRVJUKHRyYW5zYWN0aW9u
LmRhdGFiYXNlQ29ubmVjdGlvbigpLmRhdGFiYXNlKCkgPT0gdGhpcyk7Ci0gICAgQVNTRVJUKG1f
YmFja2luZ1N0b3JlKTsKKworICAgIGlmICghbV9iYWNraW5nU3RvcmUpCisgICAgICAgIHJldHVy
biBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiQmFja2luZyBzdG9yZSBp
cyBjbG9zZWQiIH0pOworCiAgICAgYXV0byB0YWtlblRyYW5zYWN0aW9uID0gbV9pblByb2dyZXNz
VHJhbnNhY3Rpb25zLnRha2UodHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSk7CiAgICAg
aWYgKCF0YWtlblRyYW5zYWN0aW9uKSB7CiAgICAgICAgIGlmICghbV9vcGVuRGF0YWJhc2VDb25u
ZWN0aW9ucy5jb250YWlucygmdHJhbnNhY3Rpb24uZGF0YWJhc2VDb25uZWN0aW9uKCkpKQpAQCAt
ODkzLDExICsxMTU0LDI1IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNvbW1pdFRyYW5zYWN0
aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0CiAgICAgdHJhbnNhY3Rp
b25Db21wbGV0ZWQoV1RGTW92ZSh0YWtlblRyYW5zYWN0aW9uKSk7CiB9CiAKLXZvaWQgVW5pcXVl
SURCRGF0YWJhc2U6OmFib3J0VHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlv
biYgdHJhbnNhY3Rpb24sIEVycm9yQ2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRh
dGFiYXNlOjphYm9ydFRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRy
YW5zYWN0aW9uLCBFcnJvckNhbGxiYWNrIGNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0IHNwYWNl
Q2hlY2tSZXN1bHQpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKElu
ZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjphYm9ydFRyYW5zYWN0aW9uIC0gJXMiLCB0cmFu
c2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKIAorICAgIGlmIChzcGFjZUNoZWNrUmVzdWx0ID09IFNwYWNlQ2hlY2tSZXN1bHQ6OlVua25v
d24pIHsKKyAgICAgICAgaWYgKCFtX21hbmFnZXIpCisgICAgICAgICAgICByZXR1cm4gY2FsbGJh
Y2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciB9KTsKKworICAgICAgICBtX21hbmFnZXIt
PnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIDAsIFt0aGlzLCB3ZWFrVGhpcyA9
IFdlYWtQdHIgeyAqdGhpcyB9LCB3ZWFrVHJhbnNhY3Rpb24gPSBXZWFrUHRyIHsgdHJhbnNhY3Rp
b24gfSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBncmFudGVkKSBtdXRhYmxl
IHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMgfHwgIXdlYWtUcmFuc2FjdGlvbikKKyAgICAg
ICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwg
IkRhdGFiYXNlIG9yIHRyYW5zYWN0aW9uIGlzIGNsb3NlZCIgfSk7CisKKyAgICAgICAgICAgIGFi
b3J0VHJhbnNhY3Rpb24oKndlYWtUcmFuc2FjdGlvbiwgV1RGTW92ZShjYWxsYmFjayksIGdyYW50
ZWQgPyBTcGFjZUNoZWNrUmVzdWx0OjpQYXNzIDogU3BhY2VDaGVja1Jlc3VsdDo6RmFpbCk7Cisg
ICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKHNwYWNlQ2hl
Y2tSZXN1bHQgPT0gU3BhY2VDaGVja1Jlc3VsdDo6UGFzcyk7CiAgICAgQVNTRVJUKHRyYW5zYWN0
aW9uLmRhdGFiYXNlQ29ubmVjdGlvbigpLmRhdGFiYXNlKCkgPT0gdGhpcyk7CiAKICAgICBhdXRv
IHRha2VuVHJhbnNhY3Rpb24gPSBtX2luUHJvZ3Jlc3NUcmFuc2FjdGlvbnMudGFrZSh0cmFuc2Fj
dGlvbi5pbmZvKCkuaWRlbnRpZmllcigpKTsKQEAgLTkyNSw3ICsxMjAwLDExIEBAIHZvaWQgVW5p
cXVlSURCRGF0YWJhc2U6OmFib3J0VHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2Fj
dGlvbiYgdHJhbnNhY3RpCiAgICAgICAgIG1fZGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJE
YXRhYmFzZUluZm8+KCptX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi0+b3JpZ2luYWxEYXRhYmFz
ZUluZm8oKSk7CiAgICAgfQogCi0gICAgYXV0byBlcnJvciA9IG1fYmFja2luZ1N0b3JlLT5hYm9y
dFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CisgICAgSURCRXJyb3IgZXJyb3I7
CisgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkKKyAgICAgICAgZXJyb3IgPSBJREJFcnJvciB7IElu
dmFsaWRTdGF0ZUVycm9yLCAiQmFja2luZyBzdG9yZSBpcyBjbG9zZWQiIH07CisgICAgZWxzZQor
ICAgICAgICBlcnJvciA9IG1fYmFja2luZ1N0b3JlLT5hYm9ydFRyYW5zYWN0aW9uKHRyYW5zYWN0
aW9uSWRlbnRpZmllcik7CiAKICAgICBjYWxsYmFjayhlcnJvcik7CiAgICAgdHJhbnNhY3Rpb25D
b21wbGV0ZWQoV1RGTW92ZSh0YWtlblRyYW5zYWN0aW9uKSk7CkBAIC0xMjI1LDYgKzE1MDQsMTEg
QEAgYm9vbCBVbmlxdWVJREJEYXRhYmFzZTo6dHJ5Q2xvc2UoKQogICAgIGNsb3NlKCk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CisgICAgCitib29sIFVuaXF1ZUlEQkRhdGFiYXNlOjpoYXNEYXRhSW5N
ZW1vcnkoKSBjb25zdAoreworICAgIHJldHVybiBtX2JhY2tpbmdTdG9yZSA/IG1fYmFja2luZ1N0
b3JlLT5pc0VwaGVtZXJhbCgpIDogZmFsc2U7Cit9CiAKIFJlZlB0cjxTZXJ2ZXJPcGVuREJSZXF1
ZXN0PiBVbmlxdWVJREJEYXRhYmFzZTo6dGFrZU5leHRSdW5uYWJsZVJlcXVlc3QoUmVxdWVzdFR5
cGUgcmVxdWVzdFR5cGUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oCmluZGV4IGIyYTc0MTdmOWM4
MTljZmMyNDE0NmNlNWZiNWNmNWQyNjEyODUwODAuLjc4ODBmNjY1ZWE4N2UwNWZjYmFkYzNkMWQw
NzQ0NjE5YmUwMzkyNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oCkBAIC01OSw4ICs1OSw4IEBA
IGVudW0gY2xhc3MgSW5kZXhSZWNvcmRUeXBlIDogYm9vbDsKIG5hbWVzcGFjZSBJREJTZXJ2ZXIg
ewogCiBjbGFzcyBJREJDb25uZWN0aW9uVG9DbGllbnQ7Ci1jbGFzcyBJREJTZXJ2ZXI7CiBjbGFz
cyBVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb247CitjbGFzcyBVbmlxdWVJREJEYXRhYmFzZU1h
bmFnZXI7CiAKIHR5cGVkZWYgRnVuY3Rpb248dm9pZChjb25zdCBJREJFcnJvciYpPiBFcnJvckNh
bGxiYWNrOwogdHlwZWRlZiBGdW5jdGlvbjx2b2lkKGNvbnN0IElEQkVycm9yJiwgY29uc3QgSURC
S2V5RGF0YSYpPiBLZXlEYXRhQ2FsbGJhY2s7CkBAIC03MSw1NCArNzEsNjIgQEAgdHlwZWRlZiBG
dW5jdGlvbjx2b2lkKGNvbnN0IElEQkVycm9yJiwgdWludDY0X3QpPiBDb3VudENhbGxiYWNrOwog
Y2xhc3MgVW5pcXVlSURCRGF0YWJhc2UgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8VW5pcXVlSURC
RGF0YWJhc2U+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBV
bmlxdWVJREJEYXRhYmFzZShJREJTZXJ2ZXImLCBjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXIm
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBVbmlxdWVJREJEYXRhYmFzZShVbmlxdWVJREJEYXRhYmFz
ZU1hbmFnZXImLCBjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImKTsKICAgICBVbmlxdWVJREJE
YXRhYmFzZShVbmlxdWVJREJEYXRhYmFzZSYpID0gZGVsZXRlOwogICAgIFdFQkNPUkVfRVhQT1JU
IH5VbmlxdWVJREJEYXRhYmFzZSgpOwogCi0gICAgdm9pZCBvcGVuRGF0YWJhc2VDb25uZWN0aW9u
KElEQkNvbm5lY3Rpb25Ub0NsaWVudCYsIGNvbnN0IElEQlJlcXVlc3REYXRhJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBvcGVuRGF0YWJhc2VDb25uZWN0aW9uKElEQkNvbm5lY3Rpb25Ub0Ns
aWVudCYsIGNvbnN0IElEQlJlcXVlc3REYXRhJik7CiAKICAgICBjb25zdCBJREJEYXRhYmFzZUlu
Zm8mIGluZm8oKSBjb25zdDsKLSAgICBJREJTZXJ2ZXImIHNlcnZlcigpIHsgcmV0dXJuIG1fc2Vy
dmVyOyB9CisgICAgVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyKiBtYW5hZ2VyKCk7CiAgICAgY29u
c3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9p
ZGVudGlmaWVyOyB9CiAKLSAgICB2b2lkIGNyZWF0ZU9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFi
YXNlVHJhbnNhY3Rpb24mLCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mLCBFcnJvckNhbGxiYWNr
KTsKLSAgICB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rp
b24mLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSwgRXJyb3JDYWxsYmFjayk7Ci0gICAg
dm9pZCByZW5hbWVPYmplY3RTdG9yZShVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgdWlu
dDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUsIEVycm9y
Q2FsbGJhY2spOwotICAgIHZvaWQgY2xlYXJPYmplY3RTdG9yZShVbmlxdWVJREJEYXRhYmFzZVRy
YW5zYWN0aW9uJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBFcnJvckNhbGxiYWNr
KTsKLSAgICB2b2lkIGNyZWF0ZUluZGV4KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCBj
b25zdCBJREJJbmRleEluZm8mLCBFcnJvckNhbGxiYWNrKTsKLSAgICB2b2lkIGRlbGV0ZUluZGV4
KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lLCBFcnJvckNhbGxiYWNrKTsKLSAgICB2b2lk
IHJlbmFtZUluZGV4KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCB1aW50NjRfdCBvYmpl
Y3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiBuZXdOYW1lLCBFcnJvckNhbGxiYWNrKTsKKyAgICBlbnVtIGNsYXNzIFNwYWNlQ2hlY2tSZXN1
bHQgOiB1aW50OF90IHsKKyAgICAgICAgVW5rbm93biwKKyAgICAgICAgUGFzcywKKyAgICAgICAg
RmFpbAorICAgIH07CisgICAgdm9pZCBjcmVhdGVPYmplY3RTdG9yZShVbmlxdWVJREJEYXRhYmFz
ZVRyYW5zYWN0aW9uJiwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiwgRXJyb3JDYWxsYmFjaywg
U3BhY2VDaGVja1Jlc3VsdCA9IFNwYWNlQ2hlY2tSZXN1bHQ6OlVua25vd24pOworICAgIHZvaWQg
ZGVsZXRlT2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIGNvbnN0IFN0
cmluZyYgb2JqZWN0U3RvcmVOYW1lLCBFcnJvckNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0ID0g
U3BhY2VDaGVja1Jlc3VsdDo6VW5rbm93bik7CisgICAgdm9pZCByZW5hbWVPYmplY3RTdG9yZShV
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUsIEVycm9yQ2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1
bHQgPSBTcGFjZUNoZWNrUmVzdWx0OjpVbmtub3duKTsKKyAgICB2b2lkIGNsZWFyT2JqZWN0U3Rv
cmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRl
bnRpZmllciwgRXJyb3JDYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCA9IFNwYWNlQ2hlY2tSZXN1
bHQ6OlVua25vd24pOworICAgIHZvaWQgY3JlYXRlSW5kZXgoVW5pcXVlSURCRGF0YWJhc2VUcmFu
c2FjdGlvbiYsIGNvbnN0IElEQkluZGV4SW5mbyYsIEVycm9yQ2FsbGJhY2ssIFNwYWNlQ2hlY2tS
ZXN1bHQgPSBTcGFjZUNoZWNrUmVzdWx0OjpVbmtub3duKTsKKyAgICB2b2lkIGRlbGV0ZUluZGV4
KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lLCBFcnJvckNhbGxiYWNrLCBTcGFjZUNoZWNr
UmVzdWx0ID0gU3BhY2VDaGVja1Jlc3VsdDo6VW5rbm93bik7CisgICAgdm9pZCByZW5hbWVJbmRl
eChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVu
dGlmaWVyLCB1aW50NjRfdCBpbmRleElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSwg
RXJyb3JDYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCA9IFNwYWNlQ2hlY2tSZXN1bHQ6OlVua25v
d24pOwogICAgIHZvaWQgcHV0T3JBZGQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJL
ZXlEYXRhJiwgY29uc3QgSURCVmFsdWUmLCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRl
TW9kZSwgS2V5RGF0YUNhbGxiYWNrKTsKLSAgICB2b2lkIGdldFJlY29yZChjb25zdCBJREJSZXF1
ZXN0RGF0YSYsIGNvbnN0IElEQkdldFJlY29yZERhdGEmLCBHZXRSZXN1bHRDYWxsYmFjayk7Ci0g
ICAgdm9pZCBnZXRBbGxSZWNvcmRzKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCR2V0
QWxsUmVjb3Jkc0RhdGEmLCBHZXRBbGxSZXN1bHRzQ2FsbGJhY2spOwotICAgIHZvaWQgZ2V0Q291
bnQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmLCBDb3VudENh
bGxiYWNrKTsKLSAgICB2b2lkIGRlbGV0ZVJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNv
bnN0IElEQktleVJhbmdlRGF0YSYsIEVycm9yQ2FsbGJhY2spOwotICAgIHZvaWQgb3BlbkN1cnNv
cihjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkN1cnNvckluZm8mLCBHZXRSZXN1bHRD
YWxsYmFjayk7Ci0gICAgdm9pZCBpdGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiwg
Y29uc3QgSURCSXRlcmF0ZUN1cnNvckRhdGEmLCBHZXRSZXN1bHRDYWxsYmFjayk7Ci0gICAgdm9p
ZCBjb21taXRUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgRXJyb3JD
YWxsYmFjayk7Ci0gICAgdm9pZCBhYm9ydFRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJh
bnNhY3Rpb24mLCBFcnJvckNhbGxiYWNrKTsKKyAgICB2b2lkIHB1dE9yQWRkQWZ0ZXJTcGFjZUNo
ZWNrKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5RGF0YSYsIGNvbnN0IElEQlZh
bHVlJiwgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUsIEtleURhdGFDYWxsYmFj
aywgYm9vbCBpc0tleUdlbmVyYXRlZCwgY29uc3QgSW5kZXhJRFRvSW5kZXhLZXlNYXAmLCBjb25z
dCBJREJPYmplY3RTdG9yZUluZm8mLCBTcGFjZUNoZWNrUmVzdWx0KTsKKyAgICB2b2lkIGdldFJl
Y29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkdldFJlY29yZERhdGEmLCBHZXRS
ZXN1bHRDYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCA9IFNwYWNlQ2hlY2tSZXN1bHQ6OlVua25v
d24pOworICAgIHZvaWQgZ2V0QWxsUmVjb3Jkcyhjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0
IElEQkdldEFsbFJlY29yZHNEYXRhJiwgR2V0QWxsUmVzdWx0c0NhbGxiYWNrLCBTcGFjZUNoZWNr
UmVzdWx0ID0gU3BhY2VDaGVja1Jlc3VsdDo6VW5rbm93bik7CisgICAgdm9pZCBnZXRDb3VudChj
b25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYsIENvdW50Q2FsbGJh
Y2ssIFNwYWNlQ2hlY2tSZXN1bHQgPSBTcGFjZUNoZWNrUmVzdWx0OjpVbmtub3duKTsKKyAgICB2
b2lkIGRlbGV0ZVJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleVJhbmdl
RGF0YSYsIEVycm9yQ2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgPSBTcGFjZUNoZWNrUmVzdWx0
OjpVbmtub3duKTsKKyAgICB2b2lkIG9wZW5DdXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEmLCBj
b25zdCBJREJDdXJzb3JJbmZvJiwgR2V0UmVzdWx0Q2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQg
PSBTcGFjZUNoZWNrUmVzdWx0OjpVbmtub3duKTsKKyAgICB2b2lkIGl0ZXJhdGVDdXJzb3IoY29u
c3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJJdGVyYXRlQ3Vyc29yRGF0YSYsIEdldFJlc3Vs
dENhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0ID0gU3BhY2VDaGVja1Jlc3VsdDo6VW5rbm93bik7
CisgICAgdm9pZCBjb21taXRUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9u
JiwgRXJyb3JDYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCA9IFNwYWNlQ2hlY2tSZXN1bHQ6OlVu
a25vd24pOworICAgIHZvaWQgYWJvcnRUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5z
YWN0aW9uJiwgRXJyb3JDYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCA9IFNwYWNlQ2hlY2tSZXN1
bHQ6OlVua25vd24pOwogCiAgICAgdm9pZCBkaWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2Uo
VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVy
JiB0cmFuc2FjdGlvbklkZW50aWZpZXIpOwogICAgIHZvaWQgY29ubmVjdGlvbkNsb3NlZEZyb21D
bGllbnQoVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJik7CiAgICAgdm9pZCBkaWRGaXJlVmVy
c2lvbkNoYW5nZUV2ZW50KFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYsIGNvbnN0IElEQlJl
c291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIEluZGV4ZWREQjo6Q29ubmVjdGlv
bkNsb3NlZE9uQmVoYWxmT2ZTZXJ2ZXIpOwotICAgIHZvaWQgb3BlbkRCUmVxdWVzdENhbmNlbGxl
ZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIG9wZW5EQlJlcXVlc3RDYW5jZWxsZWQoY29uc3QgSURCUmVzb3Vy
Y2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllcik7CiAKICAgICB2b2lkIGVucXVldWVUcmFu
c2FjdGlvbihSZWY8VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbj4mJik7CiAKLSAgICB2b2lk
IGhhbmRsZURlbGV0ZShJREJDb25uZWN0aW9uVG9DbGllbnQmLCBjb25zdCBJREJSZXF1ZXN0RGF0
YSYpOwotICAgIHZvaWQgaW1tZWRpYXRlQ2xvc2UoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGhhbmRsZURlbGV0ZShJREJDb25uZWN0aW9uVG9DbGllbnQmLCBjb25zdCBJREJSZXF1ZXN0RGF0
YSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW1tZWRpYXRlQ2xvc2UoKTsKIAogICAgIGJv
b2wgaGFzQWN0aXZlVHJhbnNhY3Rpb25zKCkgY29uc3Q7Ci0gICAgdm9pZCBhYm9ydEFjdGl2ZVRy
YW5zYWN0aW9ucygpOwotICAgIGJvb2wgdHJ5Q2xvc2UoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGFib3J0QWN0aXZlVHJhbnNhY3Rpb25zKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCB0
cnlDbG9zZSgpOwogCi0gICAgU3RyaW5nIGZpbGVQYXRoKCkgY29uc3Q7Ci0gICAgc3RkOjpvcHRp
b25hbDxJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiBuYW1lQW5kVmVyc2lvbigpIGNvbnN0Owor
ICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBmaWxlUGF0aCgpIGNvbnN0OworICAgIFdFQkNPUkVf
RVhQT1JUIHN0ZDo6b3B0aW9uYWw8SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbj4gbmFtZUFuZFZl
cnNpb24oKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhhc0RhdGFJbk1lbW9yeSgp
IGNvbnN0OwogCiBwcml2YXRlOgogICAgIHZvaWQgaGFuZGxlRGF0YWJhc2VPcGVyYXRpb25zKCk7
CiAgICAgdm9pZCBoYW5kbGVDdXJyZW50T3BlcmF0aW9uKCk7CiAgICAgdm9pZCBwZXJmb3JtQ3Vy
cmVudE9wZW5PcGVyYXRpb24oKTsKKyAgICB2b2lkIHBlcmZvcm1DdXJyZW50T3Blbk9wZXJhdGlv
bkFmdGVyU3BhY2VDaGVjayhib29sIGlzR3JhbnRlZCk7CiAgICAgdm9pZCBwZXJmb3JtQ3VycmVu
dERlbGV0ZU9wZXJhdGlvbigpOwogICAgIGVudW0gY2xhc3MgUmVxdWVzdFR5cGUgeyBEZWxldGUs
IEFueSB9OwogICAgIFJlZlB0cjxTZXJ2ZXJPcGVuREJSZXF1ZXN0PiB0YWtlTmV4dFJ1bm5hYmxl
UmVxdWVzdChSZXF1ZXN0VHlwZSA9IFJlcXVlc3RUeXBlOjpBbnkpOwpAQCAtMTQ2LDExICsxNTQs
MTMgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY2xlYXJUcmFuc2FjdGlvbnNPbkNvbm5lY3Rpb24o
VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJik7CiAKLSAgICBJREJTZXJ2ZXImIG1fc2VydmVy
OworICAgIElEQlNlcnZlciogbV9zZXJ2ZXI7CisgICAgV2Vha1B0cjxVbmlxdWVJREJEYXRhYmFz
ZU1hbmFnZXI+IG1fbWFuYWdlcjsKICAgICBJREJEYXRhYmFzZUlkZW50aWZpZXIgbV9pZGVudGlm
aWVyOwogCiAgICAgTGlzdEhhc2hTZXQ8UmVmUHRyPFNlcnZlck9wZW5EQlJlcXVlc3Q+PiBtX3Bl
bmRpbmdPcGVuREJSZXF1ZXN0czsKICAgICBSZWZQdHI8U2VydmVyT3BlbkRCUmVxdWVzdD4gbV9j
dXJyZW50T3BlbkRCUmVxdWVzdDsKKyAgICBIYXNoU2V0PElEQlJlc291cmNlSWRlbnRpZmllcj4g
bV9vcGVuREJSZXF1ZXN0c0ZvclNwYWNlQ2hlY2s7CiAKICAgICBMaXN0SGFzaFNldDxSZWZQdHI8
VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uPj4gbV9vcGVuRGF0YWJhc2VDb25uZWN0aW9uczsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1Vu
aXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmNwcAppbmRleCA3NDNl
ZGNjM2I4YzU5NDA1MWY3OTExMTY1MjZhZjRkMDIxNjkxMzY3Li4zYzc3MmFmNzBiNzQ4MjI5NzRk
OWQ1YjcxMGQzMTVmMGE5YThmYjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VD
b25uZWN0aW9uLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNp
bmNsdWRlICJTZXJ2ZXJPcGVuREJSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiVW5pcXVlSURCRGF0YWJh
c2UuaCIKKyNpbmNsdWRlICJVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogbmFtZXNwYWNlIElEQlNlcnZlciB7CkBAIC00MiwxMSArNDMsMTQgQEAgUmVm
PFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbj4gVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9u
OjpjcmVhdGUoVW5pcXVlSURCRGEKIAogVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uOjpVbmlx
dWVJREJEYXRhYmFzZUNvbm5lY3Rpb24oVW5pcXVlSURCRGF0YWJhc2UmIGRhdGFiYXNlLCBTZXJ2
ZXJPcGVuREJSZXF1ZXN0JiByZXF1ZXN0KQogICAgIDogbV9kYXRhYmFzZShkYXRhYmFzZSkKLSAg
ICAsIG1fc2VydmVyKGRhdGFiYXNlLnNlcnZlcigpKQorICAgICwgbV9tYW5hZ2VyKGRhdGFiYXNl
Lm1hbmFnZXIoKSkKICAgICAsIG1fY29ubmVjdGlvblRvQ2xpZW50KHJlcXVlc3QuY29ubmVjdGlv
bigpKQogICAgICwgbV9vcGVuUmVxdWVzdElkZW50aWZpZXIocmVxdWVzdC5yZXF1ZXN0RGF0YSgp
LnJlcXVlc3RJZGVudGlmaWVyKCkpCiB7Ci0gICAgbV9zZXJ2ZXIucmVnaXN0ZXJEYXRhYmFzZUNv
bm5lY3Rpb24oKnRoaXMpOworICAgIGlmIChhdXRvKiBtYW5hZ2VyID0gZGF0YWJhc2UubWFuYWdl
cigpKSB7CisgICAgICAgIG1fbWFuYWdlciA9ICptYW5hZ2VyOworICAgICAgICBtX21hbmFnZXIt
PnJlZ2lzdGVyQ29ubmVjdGlvbigqdGhpcyk7CisgICAgfQogICAgIG1fY29ubmVjdGlvblRvQ2xp
ZW50LT5yZWdpc3RlckRhdGFiYXNlQ29ubmVjdGlvbigqdGhpcyk7CiB9CiAKQEAgLTU0LDEwICs1
OCwxNiBAQCBVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb246On5VbmlxdWVJREJEYXRhYmFzZUNv
bm5lY3Rpb24oKQogewogICAgIEFTU0VSVChtX3RyYW5zYWN0aW9uTWFwLmlzRW1wdHkoKSk7CiAK
LSAgICBtX3NlcnZlci51bnJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0aW9uKCp0aGlzKTsKKyAgICBp
ZiAobV9tYW5hZ2VyKQorICAgICAgICBtX21hbmFnZXItPnVucmVnaXN0ZXJDb25uZWN0aW9uKCp0
aGlzKTsKICAgICBtX2Nvbm5lY3Rpb25Ub0NsaWVudC0+dW5yZWdpc3RlckRhdGFiYXNlQ29ubmVj
dGlvbigqdGhpcyk7CiB9CiAKK1VuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlciogVW5pcXVlSURCRGF0
YWJhc2VDb25uZWN0aW9uOjptYW5hZ2VyKCkKK3sKKyAgICByZXR1cm4gbV9tYW5hZ2VyLmdldCgp
OworfQorCiBib29sIFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbjo6aGFzTm9uRmluaXNoZWRU
cmFuc2FjdGlvbnMoKSBjb25zdAogewogICAgIHJldHVybiAhbV90cmFuc2FjdGlvbk1hcC5pc0Vt
cHR5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmgKaW5kZXggMmUx
OWRmZDJkYzkxNDM0YmZjNWU3YzNhZTRiZTY2ZDhjZDg1ODgxMS4uOThmZWI1OWM3NmJlYWViZTcw
ZWRkZTRiZTU1OGZjYTg3MWM5OGRjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZUNv
bm5lY3Rpb24uaApAQCAtMjUsNyArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUg
IklEQlNlcnZlci5oIgogI2luY2x1ZGUgIlVuaXF1ZUlEQkRhdGFiYXNlLmgiCiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSWRlbnRpZmllZC5oPgpAQCAtMzYsNiArMzUs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIElEQkVycm9yOwogY2xhc3MgSURCUmVz
dWx0RGF0YTsKK2NsYXNzIFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlcjsKIAogbmFtZXNwYWNlIElE
QlNlcnZlciB7CiAKQEAgLTUyLDExICs1MiwxMSBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBJREJS
ZXNvdXJjZUlkZW50aWZpZXImIG9wZW5SZXF1ZXN0SWRlbnRpZmllcigpIHsgcmV0dXJuIG1fb3Bl
blJlcXVlc3RJZGVudGlmaWVyOyB9CiAgICAgVW5pcXVlSURCRGF0YWJhc2UqIGRhdGFiYXNlKCkg
eyByZXR1cm4gbV9kYXRhYmFzZS5nZXQoKTsgfQotICAgIElEQlNlcnZlciogc2VydmVyKCkgeyBy
ZXR1cm4gJm1fc2VydmVyOyB9CisgICAgVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyKiBtYW5hZ2Vy
KCk7CiAgICAgSURCQ29ubmVjdGlvblRvQ2xpZW50JiBjb25uZWN0aW9uVG9DbGllbnQoKSB7IHJl
dHVybiBtX2Nvbm5lY3Rpb25Ub0NsaWVudDsgfQogCi0gICAgdm9pZCBjb25uZWN0aW9uUGVuZGlu
Z0Nsb3NlRnJvbUNsaWVudCgpOwotICAgIHZvaWQgY29ubmVjdGlvbkNsb3NlZEZyb21DbGllbnQo
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbm5lY3Rpb25QZW5kaW5nQ2xvc2VGcm9tQ2xp
ZW50KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb25uZWN0aW9uQ2xvc2VkRnJvbUNsaWVu
dCgpOwogCiAgICAgYm9vbCBjbG9zZVBlbmRpbmcoKSBjb25zdCB7IHJldHVybiBtX2Nsb3NlUGVu
ZGluZzsgfQogCkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGZpcmVWZXJzaW9u
Q2hhbmdlRXZlbnQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmll
ciwgdWludDY0X3QgcmVxdWVzdGVkVmVyc2lvbik7CiAgICAgVW5pcXVlSURCRGF0YWJhc2VUcmFu
c2FjdGlvbiYgY3JlYXRlVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKHVpbnQ2NF90IG5ld1ZlcnNp
b24pOwogCi0gICAgdm9pZCBlc3RhYmxpc2hUcmFuc2FjdGlvbihjb25zdCBJREJUcmFuc2FjdGlv
bkluZm8mKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVzdGFibGlzaFRyYW5zYWN0aW9uKGNv
bnN0IElEQlRyYW5zYWN0aW9uSW5mbyYpOwogICAgIHZvaWQgZGlkQWJvcnRUcmFuc2FjdGlvbihV
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgY29uc3QgSURCRXJyb3ImKTsKICAgICB2b2lk
IGRpZENvbW1pdFRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCBjb25z
dCBJREJFcnJvciYpOwogICAgIHZvaWQgZGlkQ3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVz
dWx0RGF0YSYpOwpAQCAtNzUsOCArNzUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRDcmVhdGVJ
bmRleChjb25zdCBJREJSZXN1bHREYXRhJik7CiAgICAgdm9pZCBkaWREZWxldGVJbmRleChjb25z
dCBJREJSZXN1bHREYXRhJik7CiAgICAgdm9pZCBkaWRSZW5hbWVJbmRleChjb25zdCBJREJSZXN1
bHREYXRhJik7Ci0gICAgdm9pZCBkaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KGNvbnN0IElEQlJl
c291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIEluZGV4ZWREQjo6Q29ubmVjdGlv
bkNsb3NlZE9uQmVoYWxmT2ZTZXJ2ZXIpOwotICAgIHZvaWQgZGlkRmluaXNoSGFuZGxpbmdWZXJz
aW9uQ2hhbmdlKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlm
aWVyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZEZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQo
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgSW5kZXhlZERC
OjpDb25uZWN0aW9uQ2xvc2VkT25CZWhhbGZPZlNlcnZlcik7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBkaWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2UoY29uc3QgSURCUmVzb3VyY2VJZGVu
dGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpOwogCiAgICAgdm9pZCBhYm9ydFRyYW5zYWN0
aW9uV2l0aG91dENhbGxiYWNrKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mKTsKIApAQCAt
ODgsNyArODgsNyBAQCBwcml2YXRlOgogICAgIFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbihV
bmlxdWVJREJEYXRhYmFzZSYsIFNlcnZlck9wZW5EQlJlcXVlc3QmKTsKIAogICAgIFdlYWtQdHI8
VW5pcXVlSURCRGF0YWJhc2U+IG1fZGF0YWJhc2U7Ci0gICAgSURCU2VydmVyJiBtX3NlcnZlcjsK
KyAgICBXZWFrUHRyPFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlcj4gbV9tYW5hZ2VyOwogICAgIFJl
ZjxJREJDb25uZWN0aW9uVG9DbGllbnQ+IG1fY29ubmVjdGlvblRvQ2xpZW50OwogICAgIElEQlJl
c291cmNlSWRlbnRpZmllciBtX29wZW5SZXF1ZXN0SWRlbnRpZmllcjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNl
TWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1
ZUlEQkRhdGFiYXNlTWFuYWdlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwODg2YzQ4Njg0ZjIwNTExMWY2N2Uy
MGU2OTJiNGI5MzFjZGQxYzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyLmgKQEAgLTAsMCAr
MSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSURCRGF0YWJh
c2VJZGVudGlmaWVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IENsaWVudE9y
aWdpbjsKKworbmFtZXNwYWNlIElEQlNlcnZlciB7CisKK2NsYXNzIElEQkJhY2tpbmdTdG9yZTsK
K2NsYXNzIFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbjsKK2NsYXNzIFVuaXF1ZUlEQkRhdGFi
YXNlVHJhbnNhY3Rpb247CisKK2NsYXNzIFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlciA6IHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXI+IHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5VbmlxdWVJREJEYXRhYmFz
ZU1hbmFnZXIoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJDb25uZWN0aW9uKFVuaXF1
ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3Rl
ckNvbm5lY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCByZWdpc3RlclRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24m
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJUcmFuc2FjdGlvbihVbmlxdWVJREJE
YXRhYmFzZVRyYW5zYWN0aW9uJikgPSAwOworICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPElE
QkJhY2tpbmdTdG9yZT4gY3JlYXRlQmFja2luZ1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlSWRlbnRp
ZmllciYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFNwYWNlKGNvbnN0IENsaWVudE9y
aWdpbiYsIHVpbnQ2NF90IHNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpID0g
MDsKK307CisKK30gLy8gbmFtZXNwYWNlIElEQlNlcnZlcgorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHAKaW5kZXgg
MWNjMDI4MTdhMTI0YzhkMGVkNTJmMjEzYWM4ZTUwMDZiYTZiOTZkZS4uNmUzY2UwNDQwNmZjYWQz
M2JjYzFjOWU5ZjYxMmUyYWY0MTA2OTQxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRh
YmFzZVRyYW5zYWN0aW9uLmNwcApAQCAtMjgsNyArMjgsNiBAQAogCiAjaW5jbHVkZSAiSURCSXRl
cmF0ZUN1cnNvckRhdGEuaCIKICNpbmNsdWRlICJJREJSZXN1bHREYXRhLmgiCi0jaW5jbHVkZSAi
SURCU2VydmVyLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlVuaXF1ZUlEQkRh
dGFiYXNlLmgiCiAKQEAgLTUwLDEyICs0OSwxNCBAQCBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0
aW9uOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlQ29ubgog
ICAgIGlmIChtX3RyYW5zYWN0aW9uSW5mby5tb2RlKCkgPT0gSURCVHJhbnNhY3Rpb25Nb2RlOjpW
ZXJzaW9uY2hhbmdlKQogICAgICAgICBtX29yaWdpbmFsRGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1
ZTxJREJEYXRhYmFzZUluZm8+KGRhdGFiYXNlLT5pbmZvKCkpOwogCi0gICAgZGF0YWJhc2VDb25u
ZWN0aW9uKCkuc2VydmVyKCktPnJlZ2lzdGVyVHJhbnNhY3Rpb24oKnRoaXMpOworICAgIGlmIChh
dXRvKiBtYW5hZ2VyID0gZGF0YWJhc2VDb25uZWN0aW9uKCkubWFuYWdlcigpKQorICAgICAgICBt
YW5hZ2VyLT5yZWdpc3RlclRyYW5zYWN0aW9uKCp0aGlzKTsKIH0KIAogVW5pcXVlSURCRGF0YWJh
c2VUcmFuc2FjdGlvbjo6flVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24oKQogewotICAgIGRh
dGFiYXNlQ29ubmVjdGlvbigpLnNlcnZlcigpLT51bnJlZ2lzdGVyVHJhbnNhY3Rpb24oKnRoaXMp
OworICAgIGlmIChhdXRvKiBtYW5hZ2VyID0gZGF0YWJhc2VDb25uZWN0aW9uKCkubWFuYWdlcigp
KQorICAgICAgICBtYW5hZ2VyLT51bnJlZ2lzdGVyVHJhbnNhY3Rpb24oKnRoaXMpOwogfQogCiBV
bmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246
OmRhdGFiYXNlQ29ubmVjdGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNh
Y3Rpb24uaAppbmRleCA5NTk2NjUyYWRjZGJhN2EwNDhiNjE5Zjc0ZWYxYTkyY2VlZjllMGU1Li5m
YmE4NWMxNzM4YjczNDJlMTI4ODAwYWViOWQxZGE0NjdlZTdhMTAxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFu
c2FjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9V
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmgKQEAgLTUxLDcgKzUxLDcgQEAgbmFtZXNwYWNl
IElEQlNlcnZlciB7CiBjbGFzcyBJREJTZXJ2ZXI7CiBjbGFzcyBVbmlxdWVJREJEYXRhYmFzZUNv
bm5lY3Rpb247CiAKLWNsYXNzIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24gOiBwdWJsaWMg
UmVmQ291bnRlZDxVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uPiB7CitjbGFzcyBVbmlxdWVJ
REJEYXRhYmFzZVRyYW5zYWN0aW9uIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFVuaXF1ZUlEQkRh
dGFiYXNlVHJhbnNhY3Rpb24+LCBwdWJsaWMgUmVmQ291bnRlZDxVbmlxdWVJREJEYXRhYmFzZVRy
YW5zYWN0aW9uPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxVbmlxdWVJREJEYXRhYmFzZVRy
YW5zYWN0aW9uPiBjcmVhdGUoVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiwgY29uc3QgSURC
VHJhbnNhY3Rpb25JbmZvJik7CiAKQEAgLTU5LDI5ICs1OSwyOSBAQCBwdWJsaWM6CiAKICAgICBV
bmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mIGRhdGFiYXNlQ29ubmVjdGlvbigpOwogICAgIGNv
bnN0IElEQlRyYW5zYWN0aW9uSW5mbyYgaW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNhY3Rp
b25JbmZvOyB9Ci0gICAgYm9vbCBpc1ZlcnNpb25DaGFuZ2UoKSBjb25zdDsKKyAgICBXRUJDT1JF
X0VYUE9SVCBib29sIGlzVmVyc2lvbkNoYW5nZSgpIGNvbnN0OwogICAgIGJvb2wgaXNSZWFkT25s
eSgpIGNvbnN0OwogCiAgICAgSURCRGF0YWJhc2VJbmZvKiBvcmlnaW5hbERhdGFiYXNlSW5mbygp
IGNvbnN0OwogCi0gICAgdm9pZCBhYm9ydCgpOwotICAgIHZvaWQgYWJvcnRXaXRob3V0Q2FsbGJh
Y2soKTsKLSAgICB2b2lkIGNvbW1pdCh1aW50NjRfdCBwZW5kaW5nUmVxdWVzdENvdW50KTsKLQot
ICAgIHZvaWQgY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJ
REJPYmplY3RTdG9yZUluZm8mKTsKLSAgICB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IElE
QlJlcXVlc3REYXRhJiwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUpOwotICAgIHZvaWQg
cmVuYW1lT2JqZWN0U3RvcmUoY29uc3QgSURCUmVxdWVzdERhdGEmLCB1aW50NjRfdCBvYmplY3RT
dG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSk7Ci0gICAgdm9pZCBjbGVhck9i
amVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVu
dGlmaWVyKTsKLSAgICB2b2lkIGNyZWF0ZUluZGV4KGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29u
c3QgSURCSW5kZXhJbmZvJik7Ci0gICAgdm9pZCBkZWxldGVJbmRleChjb25zdCBJREJSZXF1ZXN0
RGF0YSYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpbmRl
eE5hbWUpOwotICAgIHZvaWQgcmVuYW1lSW5kZXgoY29uc3QgSURCUmVxdWVzdERhdGEmLCB1aW50
NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBuZXdOYW1lKTsKLSAgICB2b2lkIHB1dE9yQWRkKGNvbnN0IElEQlJlcXVlc3RE
YXRhJiwgY29uc3QgSURCS2V5RGF0YSYsIGNvbnN0IElEQlZhbHVlJiwgSW5kZXhlZERCOjpPYmpl
Y3RTdG9yZU92ZXJ3cml0ZU1vZGUpOwotICAgIHZvaWQgZ2V0UmVjb3JkKGNvbnN0IElEQlJlcXVl
c3REYXRhJiwgY29uc3QgSURCR2V0UmVjb3JkRGF0YSYpOwotICAgIHZvaWQgZ2V0QWxsUmVjb3Jk
cyhjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkdldEFsbFJlY29yZHNEYXRhJik7Ci0g
ICAgdm9pZCBnZXRDb3VudChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleVJhbmdl
RGF0YSYpOwotICAgIHZvaWQgZGVsZXRlUmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29u
c3QgSURCS2V5UmFuZ2VEYXRhJik7Ci0gICAgdm9pZCBvcGVuQ3Vyc29yKGNvbnN0IElEQlJlcXVl
c3REYXRhJiwgY29uc3QgSURCQ3Vyc29ySW5mbyYpOwotICAgIHZvaWQgaXRlcmF0ZUN1cnNvcihj
b25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkl0ZXJhdGVDdXJzb3JEYXRhJik7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBhYm9ydCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWJv
cnRXaXRob3V0Q2FsbGJhY2soKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbW1pdCh1aW50
NjRfdCBwZW5kaW5nUmVxdWVzdENvdW50KTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY3Jl
YXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJPYmplY3RTdG9y
ZUluZm8mKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0
IElEQlJlcXVlc3REYXRhJiwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUpOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgcmVuYW1lT2JqZWN0U3RvcmUoY29uc3QgSURCUmVxdWVzdERhdGEm
LCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSk7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhck9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVl
c3REYXRhJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGNyZWF0ZUluZGV4KGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCSW5k
ZXhJbmZvJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkZWxldGVJbmRleChjb25zdCBJREJS
ZXF1ZXN0RGF0YSYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiBpbmRleE5hbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVuYW1lSW5kZXgoY29uc3Qg
SURCUmVxdWVzdERhdGEmLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90
IGluZGV4SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHB1dE9yQWRkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5RGF0
YSYsIGNvbnN0IElEQlZhbHVlJiwgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0UmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRh
JiwgY29uc3QgSURCR2V0UmVjb3JkRGF0YSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0
QWxsUmVjb3Jkcyhjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkdldEFsbFJlY29yZHNE
YXRhJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRDb3VudChjb25zdCBJREJSZXF1ZXN0
RGF0YSYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
ZGVsZXRlUmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5UmFuZ2VEYXRh
Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBvcGVuQ3Vyc29yKGNvbnN0IElEQlJlcXVlc3RE
YXRhJiwgY29uc3QgSURCQ3Vyc29ySW5mbyYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaXRl
cmF0ZUN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkl0ZXJhdGVDdXJzb3JE
YXRhJik7CiAKICAgICB2b2lkIGRpZEFjdGl2YXRlSW5CYWNraW5nU3RvcmUoY29uc3QgSURCRXJy
b3ImKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hh
cmVkL0lEQkVycm9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQv
SURCRXJyb3IuaAppbmRleCBmZjE3Yzk4YTQxMTVkZTYyY2FjYzcwYWQzMjUyYmQ2ZWRmMTFmMzk5
Li5iMzBhZDM5MTc2ZjAzZmYwZDZjOTM5OGQ2YjNlZDE5Y2QyZTk5MjFkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3IuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3IuaApAQCAtNTIs
NiArNTIsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIG1lc3NhZ2UoKSBjb25zdDsKIAogICAgIGJv
b2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gIW1fY29kZTsgfQorICAgIG9wZXJhdG9yIGJvb2wo
KSBjb25zdCB7IHJldHVybiAhaXNOdWxsKCk7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIElEQkVy
cm9yIGlzb2xhdGVkQ29weSgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5oCmluZGV4IDAxOGNiMTNl
NzVlYjY0NWRkMTE0ZTI0ZjZkYmZlYTM0Y2Y1NWIxNjQuLjAwMTc4N2E2NjU4YTQxNzhiNmE3OTcx
MjhhMDRkYTM2YjhhZmRmZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5oCkBAIC01Niw4ICs1Niw4IEBAIHB1
YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBJREJSZXF1ZXN0RGF0YSBpc29sYXRlZENvcHkoKSBj
b25zdDsKIAogICAgIElEQkNvbm5lY3Rpb25JZGVudGlmaWVyIHNlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyKCkgY29uc3Q7Ci0gICAgSURCUmVzb3VyY2VJZGVudGlmaWVyIHJlcXVlc3RJZGVudGlm
aWVyKCkgY29uc3Q7Ci0gICAgSURCUmVzb3VyY2VJZGVudGlmaWVyIHRyYW5zYWN0aW9uSWRlbnRp
ZmllcigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIElEQlJlc291cmNlSWRlbnRpZmllciBy
ZXF1ZXN0SWRlbnRpZmllcigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIElEQlJlc291cmNl
SWRlbnRpZmllciB0cmFuc2FjdGlvbklkZW50aWZpZXIoKSBjb25zdDsKICAgICB1aW50NjRfdCBv
YmplY3RTdG9yZUlkZW50aWZpZXIoKSBjb25zdDsKICAgICB1aW50NjRfdCBpbmRleElkZW50aWZp
ZXIoKSBjb25zdDsKICAgICBJbmRleGVkREI6OkluZGV4UmVjb3JkVHlwZSBpbmRleFJlY29yZFR5
cGUoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NoYXJlZC9JREJSZXNvdXJjZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NoYXJlZC9JREJSZXNvdXJjZUlkZW50aWZpZXIuaAppbmRleCBiZTE2MTk3ZjYz
NGE1OTZjMzllNTEzMDI4NTkwNjgzNTc0NTg2ODJhLi5iZDM5NTRhMjg5NzNjZWI4YTViZjY0OGY0
YWE1MTIzZjJlZmJlZjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zaGFyZWQvSURCUmVzb3VyY2VJZGVudGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc291cmNlSWRlbnRpZmllci5oCkBAIC00OSw3
ICs0OSw3IEBAIHB1YmxpYzoKICAgICBJREJSZXNvdXJjZUlkZW50aWZpZXIoY29uc3QgSURCQ2xp
ZW50OjpJREJDb25uZWN0aW9uUHJveHkmLCBjb25zdCBJREJSZXF1ZXN0Jik7CiAgICAgZXhwbGlj
aXQgSURCUmVzb3VyY2VJZGVudGlmaWVyKGNvbnN0IElEQlNlcnZlcjo6SURCQ29ubmVjdGlvblRv
Q2xpZW50Jik7CiAKLSAgICBzdGF0aWMgSURCUmVzb3VyY2VJZGVudGlmaWVyIGVtcHR5VmFsdWUo
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSURCUmVzb3VyY2VJZGVudGlmaWVyIGVtcHR5
VmFsdWUoKTsKICAgICBib29sIGlzRW1wdHkoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJu
ICFtX3Jlc291cmNlTnVtYmVyICYmICFtX2lkYkNvbm5lY3Rpb25JZGVudGlmaWVyOwpAQCAtNjAs
NyArNjAsOCBAQCBwdWJsaWM6CiAgICAgICAgIHVpbnQ2NF90IGhhc2hDb2Rlc1syXSA9IHsgbV9p
ZGJDb25uZWN0aW9uSWRlbnRpZmllci50b1VJbnQ2NCgpLCBtX3Jlc291cmNlTnVtYmVyIH07CiAg
ICAgICAgIHJldHVybiBTdHJpbmdIYXNoZXI6Omhhc2hNZW1vcnk8c2l6ZW9mKGhhc2hDb2Rlcyk+
KGhhc2hDb2Rlcyk7CiAgICAgfQotICAgIAorCisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IElE
QlJlc291cmNlSWRlbnRpZmllciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3Ro
ZXIpOyB9CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYg
b3RoZXIpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9pZGJDb25uZWN0aW9uSWRlbnRp
ZmllciA9PSBvdGhlci5tX2lkYkNvbm5lY3Rpb25JZGVudGlmaWVyCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjFmOGE1MTA0YjZi
Mjk1NmYyYmYxZDI2YzUxZDg3MzNlZDI1OGNkOS4uZjA5YWE3OGU0YzI2N2YwZWQ0NGE5ODA2MTU5
M2ViYzA5OTU3MDQwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMTU0MSwxMCArMTU0MSwxMCBAQAogCQk1MTEyM0UyRjI3Njk0
MENBMDBGOUQ0MUIgLyogTm90aWZpY2F0aW9uRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExMjNFMkMyNzY5M0MzMjAwRjlENDFCIC8qIE5vdGlm
aWNhdGlvbkRhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk1MTE3RjMwRTI1RTYxMDIwMDAyQTlGMUUgLyogUmVtb3RlQ29tbWFuZExpc3RlbmVy
Q29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
MTdGMzBDMjVFNjEwMUYwMDJBOUYxRSAvKiBSZW1vdGVDb21tYW5kTGlzdGVuZXJDb2NvYS5oICov
OyB9OwogCQk1MTFFQzEyODFDNTBBQUNBMDAzMkY5ODMgLyogSURCU2VyaWFsaXphdGlvbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExRUMxMjYxQzUw
QUE1NzAwMzJGOTgzIC8qIElEQlNlcmlhbGl6YXRpb24uaCAqLzsgfTsKLQkJNTExRUMxMkMxQzUw
QUJCRjAwMzJGOTgzIC8qIFNRTGl0ZUlEQlRyYW5zYWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTFFQzEyQTFDNTBBQkJBMDAzMkY5ODMgLyog
U1FMaXRlSURCVHJhbnNhY3Rpb24uaCAqLzsgfTsKKwkJNTExRUMxMkMxQzUwQUJCRjAwMzJGOTgz
IC8qIFNRTGl0ZUlEQlRyYW5zYWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MTFFQzEyQTFDNTBBQkJBMDAzMkY5ODMgLyogU1FMaXRlSURCVHJh
bnNhY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk1MTFFQzEzMDFDNTBBQkY1MDAzMkY5ODMgLyogU1FMaXRlSURCQ3Vyc29yLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTFFQzEyRTFDNTBBQkVD
MDAzMkY5ODMgLyogU1FMaXRlSURCQ3Vyc29yLmggKi87IH07CiAJCTUxMjBCQkFGMUYxQ0VDRTcw
MEVGRUJGMSAvKiBDb29raWVTdG9yYWdlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMjBCQkFEMUYxQ0U3NzAwMEVGRUJGMSAvKiBDb29r
aWVTdG9yYWdlT2JzZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwotCQk1MTJCREI0QjFDNDU2RkZBMDA2NDk0REYgLyogU1FMaXRlSURCQmFja2lu
Z1N0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTJCREI0OTFDNDU2RkFCMDA2NDk0REYgLyogU1FMaXRlSURCQmFja2luZ1N0b3JlLmggKi87IH07
CisJCTUxMkJEQjRCMUM0NTZGRkEwMDY0OTRERiAvKiBTUUxpdGVJREJCYWNraW5nU3RvcmUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMkJEQjQ5MUM0
NTZGQUIwMDY0OTRERiAvKiBTUUxpdGVJREJCYWNraW5nU3RvcmUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTJERDhGNTBEOTFFNkFGMDAwRjg5
RUUgLyogTGVnYWN5V2ViQXJjaGl2ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTEyREQ4RUIwRDkxRTZBRjAwMEY4OUVFIC8qIExlZ2FjeVdlYkFyY2hp
dmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1
MTJERDhGNjBEOTFFNkFGMDAwRjg5RUUgLyogQXJjaGl2ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyREQ4RUMwRDkxRTZBRjAwMEY4OUVFIC8qIEFy
Y2hpdmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk1MTJERDhGODBEOTFFNkFGMDAwRjg5RUUgLyogQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyREQ4RUUw
RDkxRTZBRjAwMEY4OUVFIC8qIEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24uaCAqLzsgfTsKQEAg
LTE1OTAsNyArMTU5MCw3IEBACiAJCTUxNkQ3RDcyMUJCNUYwQkQwMEFGN0M3NyAvKiBJREJDb25u
ZWN0aW9uVG9DbGllbnREZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTE2RDdENkUxQkI1RjA2NTAwQUY3Qzc3IC8qIElEQkNvbm5lY3Rpb25U
b0NsaWVudERlbGVnYXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNTE2RjdGNkQxQzMxRTM5QTAwRjExMURDIC8qIFNlcnZlck9wZW5EQlJlcXVl
c3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNkY3
RjZDMUMzMUM3OUQwMEYxMTFEQyAvKiBTZXJ2ZXJPcGVuREJSZXF1ZXN0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE3MTM4RjAxQkVEMUQxQTAw
MEQ1RjAxIC8qIEluZGV4S2V5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTcxMzhFRTFCRUQxRDE3MDAwRDVGMDEgLyogSW5kZXhLZXkuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk1MTcxMzhGODFCRjEy
OEJCMDAwRDVGMDEgLyogSW5kZXhWYWx1ZVN0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTcxMzhGNjFCRjEyMjYyMDAwRDVGMDEgLyogSW5kZXhW
YWx1ZVN0b3JlLmggKi87IH07CisJCTUxNzEzOEY4MUJGMTI4QkIwMDBENUYwMSAvKiBJbmRleFZh
bHVlU3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxNzEzOEY2MUJGMTIyNjIwMDBENUYwMSAvKiBJbmRleFZhbHVlU3RvcmUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTcxMzhGQzFCRjNBREY0
MDAwRDVGMDEgLyogSURCQ3Vyc29ySW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTE3MTM4RkExQkYzQURBQzAwMEQ1RjAxIC8qIElEQkN1cnNvcklu
Zm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1
MTcxMzkwNjFCRjY0REVDMDAwRDVGMDEgLyogTWVtb3J5T2JqZWN0U3RvcmVDdXJzb3IuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNzEzOTA0MUJGNjRE
RTMwMDBENUYwMSAvKiBNZW1vcnlPYmplY3RTdG9yZUN1cnNvci5oICovOyB9OwogCQk1MTcxMzkw
ODFCRjY0REVGMDAwRDVGMDEgLyogTWVtb3J5Q3Vyc29yLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTcxMzkwMjFCRjY0REUzMDAwRDVGMDEgLyogTWVt
b3J5Q3Vyc29yLmggKi87IH07CkBAIC0xNjY2LDcgKzE2NjYsNyBAQAogCQk1MUI5MTQxMDFGRDI3
ODJEMDBFRTI4NTkgLyogUmVnaXN0cmF0aW9uRGF0YWJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQjkxNDBDMUZEMjc4MjUwMEVFMjg1OSAvKiBS
ZWdpc3RyYXRpb25EYXRhYmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTUxQjkxNDExMUZEMjc4MkQwMEVFMjg1OSAvKiBSZWdpc3RyYXRpb25T
dG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFC
OTE0MEIxRkQyNzgyNTAwRUUyODU5IC8qIFJlZ2lzdHJhdGlvblN0b3JlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFCQTRBQzQxQkJCNUNEODAw
REYzRDZEIC8qIElEQkRhdGFiYXNlSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTFCQTRBQzIxQkJCNUNCRjAwREYzRDZEIC8qIElEQkRhdGFiYXNl
SW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0J
CTUxQkE0QUNCMUJCQzVCRDkwMERGM0Q2RCAvKiBNZW1vcnlJREJCYWNraW5nU3RvcmUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkE0QUM5MUJCQzVC
OUUwMERGM0Q2RCAvKiBNZW1vcnlJREJCYWNraW5nU3RvcmUuaCAqLzsgfTsKKwkJNTFCQTRBQ0Ix
QkJDNUJEOTAwREYzRDZEIC8qIE1lbW9yeUlEQkJhY2tpbmdTdG9yZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCQTRBQzkxQkJDNUI5RTAwREYzRDZE
IC8qIE1lbW9yeUlEQkJhY2tpbmdTdG9yZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTUxQkE0QUNDMUJCQzVCREQwMERGM0Q2RCAvKiBJREJCYWNr
aW5nU3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxQkE0QUM3MUJCQzVBRDYwMERGM0Q2RCAvKiBJREJCYWNraW5nU3RvcmUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUJBOTQ3MTIzQUMzMDUz
MDA0NDQ4NDYgLyogUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkE5NDZGMjNBQzMwNTAwMDQ0NDg0NiAvKiBS
dW5KYXZhU2NyaXB0UGFyYW1ldGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTUxQkNDRTMwMUY4RjE3OUUwMDZCQTBFRCAvKiBTZXJ2aWNlV29y
a2VyVGhyZWFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTdDODcxMDFGOEVFNzJFMDBFQjgwNzYgLyogU2VydmljZVdvcmtlclRocmVhZC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNjgyLDcgKzE2
ODIsNyBAQAogCQk1MUUwQkFCQjBEQTU1NDcxMDBBOUU0MTcgLyogU3RvcmFnZUV2ZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUwQkFCOTBEQTU1
NDcxMDBBOUU0MTcgLyogU3RvcmFnZUV2ZW50LmggKi87IH07CiAJCTUxRTBCQUVCMERBNTVENEEw
MEE5RTQxNyAvKiBKU1N0b3JhZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTFFMEJBRTkwREE1NUQ0QTAwQTlFNDE3IC8qIEpTU3RvcmFnZUV2
ZW50LmggKi87IH07CiAJCTUxRTBCQjM4MERBNUFDQjYwMEE5RTQxNyAvKiBTdG9yYWdlTWFwLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUwQkIzNjBE
QTVBQ0I2MDBBOUU0MTcgLyogU3RvcmFnZU1hcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTUxRTFCQUMzMUJEODA2NEUwMDU1RDgxRiAvKiBNZW1v
cnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTFFMUJBQzExQkQ4MDY0NzAwNTVEODFGIC8qIE1lbW9yeUJhY2tp
bmdTdG9yZVRyYW5zYWN0aW9uLmggKi87IH07CisJCTUxRTFCQUMzMUJEODA2NEUwMDU1RDgxRiAv
KiBNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFMUJBQzExQkQ4MDY0NzAwNTVEODFGIC8qIE1lbW9y
eUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFFMjY5MzcxREQzQkQ5QjAwNkI2QTU4IC8qIElEQkl0ZXJh
dGVDdXJzb3JEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MUUyNjkzNTFERDNCRDkxMDA2QjZBNTggLyogSURCSXRlcmF0ZUN1cnNvckRhdGEuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUUzOTkw
MDFENkU0NzUwMDA5Qzg4MzEgLyogR2FtZUNvbnRyb2xsZXJHYW1lcGFkLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUzOThGQzFENkU0NzRCMDA5Qzg4
MzEgLyogR2FtZUNvbnRyb2xsZXJHYW1lcGFkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFFMzk5MDIxRDZFNDc1MDAwOUM4ODMxIC8qIEdhbWVD
b250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MUUzOThGRTFENkU0NzRCMDA5Qzg4MzEgLyogR2FtZUNvbnRyb2xs
ZXJHYW1lcGFkUHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtMTY5Miw3ICsxNjkyLDcgQEAKIAkJNTFFQ0MzRjgyMDA1ODdCRjAwNDgz
RUFFIC8qIE1lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUVDQzNGMTIwMDU4N0I1MDA0ODNFQUUgLyogTWVz
c2FnZVBvcnRDaGFubmVsUmVnaXN0cnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk1MUVDQzNGRDIwMDU5MzBEMDA0ODNFQUUgLyogTWVzc2FnZVBv
cnRDaGFubmVsUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxRUNDM0ZCMjAwNTkzMDEwMDQ4M0VBRSAvKiBNZXNzYWdlUG9ydENoYW5uZWxQ
cm92aWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTUxRUU3QjM4MUFBNTBCMDUwMEY5MkIyMSAvKiBSZXNvdXJjZUxvYWRJbmZvLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUVFN0IzNzFBQTUwQjA1
MDBGOTJCMjEgLyogUmVzb3VyY2VMb2FkSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTUxRUVBQTc0MUJFRkZBQjEwMDIxODAwOCAvKiBJbmRl
eFZhbHVlRW50cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxRUVBQTcyMUJFRkZBNzkwMDIxODAwOCAvKiBJbmRleFZhbHVlRW50cnkuaCAqLzsgfTsK
KwkJNTFFRUFBNzQxQkVGRkFCMTAwMjE4MDA4IC8qIEluZGV4VmFsdWVFbnRyeS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFRUFBNzIxQkVGRkE3OTAw
MjE4MDA4IC8qIEluZGV4VmFsdWVFbnRyeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTUxRjE3NEZFMUYzNTg5OTIwMEM3NDk1MCAvKiBXb3JrZXJU
eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUYx
NzRGQzFGMzU4OTg4MDBDNzQ5NTAgLyogV29ya2VyVHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxRjE3NTAzMUYzNThCM0IwMEM3NDk1MCAv
KiBKU1NlcnZpY2VXb3JrZXJVcGRhdGVWaWFDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGMTc1MDExRjM1OEIzNjAwQzc0OTUwIC8qIEpTU2Vy
dmljZVdvcmtlclVwZGF0ZVZpYUNhY2hlLmggKi87IH07CiAJCTUxRjE3NTA2MUYzNThCRjcwMEM3
NDk1MCAvKiBKU1dvcmtlclR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxRjE3NTA1MUYzNThCREUwMEM3NDk1MCAvKiBKU1dvcmtlclR5cGUuaCAq
LzsgfTsKQEAgLTI5OTIsNiArMjk5Miw3IEBACiAJCTkzQjJEODE2MEY5OTIwRDIwMDZBRTZCMiAv
KiBTdWRkZW5UZXJtaW5hdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTNCMkQ4MTUwRjk5MjBEMjAwNkFFNkIyIC8qIFN1ZGRlblRlcm1pbmF0aW9u
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNC
MzhFQzMyNTgyMURCNDAwMTk4RTYzIC8qIFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0IzOEVCQTI1ODIxOTNC
MDAxOThFNjMgLyogV2ViU3BlZWNoUmVjb2duaXplclRhc2suaCAqLzsgfTsKIAkJOTNCMzhFQzQy
NTgyMURCNzAwMTk4RTYzIC8qIFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jay5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCMzhFQkIyNTgyMTkzRDAw
MTk4RTYzIC8qIFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jay5oICovOyB9OworCQk5M0I2MzFF
MjI3QUJBMUU2MDA0NDNBNDQgLyogVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0I2MzFFMDI3QUJBMUUyMDA0
NDNBNDQgLyogVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNCNkEwRTYwQjBCQ0E1QzAwRjUwMjdBIC8q
IENvbnRleHRNZW51LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5M0I2QTBFNTBCMEJDQTVDMDBGNTAyN0EgLyogQ29udGV4dE1lbnUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0I3MEQ2NDA5RUIwQzdD
MDA5RDg0NjggLyogSlNET01CaW5kaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5M0I3MEQ0ODA5RUIwQzdDMDA5RDg0NjggLyogSlNET01CaW5kaW5n
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNC
NzBENkEwOUVCMEM3QzAwOUQ4NDY4IC8qIEpTRXZlbnRMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCNzBENEUwOUVCMEM3QzAwOUQ4NDY4
IC8qIEpTRXZlbnRMaXN0ZW5lci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0xMjgyNCw2ICsxMjgyNSw3IEBACiAJCTkzQjM4RUJBMjU4MjE5M0Iw
MDE5OEU2MyAvKiBXZWJTcGVlY2hSZWNvZ25pemVyVGFzay5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJTcGVlY2hSZWNvZ25pemVyVGFzay5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5M0IzOEVCQjI1ODIxOTNEMDAxOThFNjMgLyogV2ViU3BlZWNoUmVjb2du
aXplclRhc2tNb2NrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNwZWVj
aFJlY29nbml6ZXJUYXNrTW9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0Iz
OEVCQzI1ODIxOTNFMDAxOThFNjMgLyogV2ViU3BlZWNoUmVjb2duaXplclRhc2subW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJTcGVlY2hSZWNvZ25pemVyVGFz
ay5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNCNjMxRTAyN0FCQTFFMjAwNDQz
QTQ0IC8qIFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTNCNkEwRTUwQjBCQ0E1QzAwRjUwMjdBIC8qIENvbnRleHRNZW51LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb250ZXh0TWVudS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5M0I3MEQ0ODA5RUIwQzdDMDA5RDg0NjggLyogSlNET01CaW5k
aW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RPTUJpbmRpbmcuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCNzBENEQwOUVCMEM3QzAwOUQ4NDY4IC8q
IEpTRXZlbnRMaXN0ZW5lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNFdmVudExpc3RlbmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIy
MTQ3LDYgKzIyMTQ5LDcgQEAKIAkJCQk1MTg4NjRERjFCQkFGMzBGMDBFNTQwQzkgLyogVW5pcXVl
SURCRGF0YWJhc2UuaCAqLywKIAkJCQk1MTk4RjdBMjFCQkRBQTI5MDBFMkNDNUYgLyogVW5pcXVl
SURCRGF0YWJhc2VDb25uZWN0aW9uLmNwcCAqLywKIAkJCQk1MTk4RjdBMzFCQkRBQTI5MDBFMkND
NUYgLyogVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmggKi8sCisJCQkJOTNCNjMxRTAyN0FC
QTFFMjAwNDQzQTQ0IC8qIFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlci5oICovLAogCQkJCTUxOThG
N0E2MUJCREQzODEwMEUyQ0M1RiAvKiBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcCAq
LywKIAkJCQk1MTk4RjdBNzFCQkREMzgxMDBFMkNDNUYgLyogVW5pcXVlSURCRGF0YWJhc2VUcmFu
c2FjdGlvbi5oICovLAogCQkJKTsKQEAgLTM3NzY4LDYgKzM3NzcxLDcgQEAKIAkJCQlBODYzRTIw
MTEzNDM0MTIwMDAyNzQ5MjYgLyogVW5pY29kZUJpZGkuaCBpbiBIZWFkZXJzICovLAogCQkJCTUx
ODg2NEUxMUJCQUY1NzQwMEU1NDBDOSAvKiBVbmlxdWVJREJEYXRhYmFzZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTE5OEY3QTUxQkJEQjc5MzAwRTJDQzVGIC8qIFVuaXF1ZUlEQkRhdGFiYXNlQ29u
bmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTNCNjMxRTIyN0FCQTFFNjAwNDQzQTQ0IC8q
IFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE5OEY3QTkx
QkJERDM4NTAwRTJDQzVGIC8qIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCUU0QUZDRkE1MERBRjI5QTMwMEY1RjU1QyAvKiBVbml0QmV6aWVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlDMThDQzBBNDI1ODBFRkIxMDAzRDc1RkIgLyogVW5pdmVyc2FsQWNj
ZXNzWm9vbS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4
IGEzNGY3OWJkZTNlMDgxNjk2ZDczYTU1ZmJmNTkwNThiZjZkOGYzNzkuLjU3M2ZkOGNmMmI2Y2Zm
YzE1NDFjODRiMjJiZDBiMjRhMWNmYmQ1ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
CkBAIC01MiwxMyArNTIsMTMgQEAKICNpbmNsdWRlICJOZXR3b3JrU29ja2V0Q2hhbm5lbE1lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1NvY2tldFN0cmVhbS5oIgogI2luY2x1ZGUgIk5ldHdv
cmtTb2NrZXRTdHJlYW1NZXNzYWdlcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtTdG9yYWdlTWFuYWdl
ci5oIgogI2luY2x1ZGUgIlBpbmdMb2FkLmgiCiAjaW5jbHVkZSAiUHJlY29ubmVjdFRhc2suaCIK
ICNpbmNsdWRlICJSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUg
IlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1
bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYkVycm9ycy5oIgotI2luY2x1ZGUgIldlYklEQlNl
cnZlci5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBy
b2Nlc3NQb29sTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuaCIKQEAgLTM5MCw4ICszOTAsMTIgQEAgYm9vbCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmUKIAog
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6dXBkYXRlUXVvdGFCYXNlZE9uU3Bh
Y2VVc2FnZUZvclRlc3RpbmcoY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4pCiB7Ci0gICAgYXV0
byBzdG9yYWdlUXVvdGFNYW5hZ2VyID0gbV9uZXR3b3JrUHJvY2Vzcy0+c3RvcmFnZVF1b3RhTWFu
YWdlcihzZXNzaW9uSUQoKSwgb3JpZ2luKTsKLSAgICBzdG9yYWdlUXVvdGFNYW5hZ2VyLT5yZXNl
dFF1b3RhVXBkYXRlZEJhc2VkT25Vc2FnZUZvclRlc3RpbmcoKTsKKyAgICBhdXRvKiBzZXNzaW9u
ID0gbV9uZXR3b3JrUHJvY2Vzcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKCkpOworICAgIGlm
ICghc2Vzc2lvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGF1dG8qIHN0b3JhZ2VNYW5h
Z2VyID0gc2Vzc2lvbi0+c3RvcmFnZU1hbmFnZXIoKSkKKyAgICAgICAgc3RvcmFnZU1hbmFnZXIt
PnJlc2V0UXVvdGFVcGRhdGVkQmFzZWRPblVzYWdlRm9yVGVzdGluZyhvcmlnaW4pOwogfQogCiB2
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24pCkBAIC05ODMsOCArOTg3LDEwIEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzRm9ySW5kZXhlZERCKGNv
bnN0CiAgICAgICAgIGZvciAoYXV0byYgZmlsZSA6IGZpbGVSZWZlcmVuY2VzKQogICAgICAgICAg
ICAgZmlsZS0+cmV2b2tlRmlsZUFjY2VzcygpOwogCi0gICAgICAgIGlmIChhdXRvKiBzZXNzaW9u
ID0gbmV0d29ya1Nlc3Npb24oKSkKLSAgICAgICAgICAgIHNlc3Npb24tPmVuc3VyZVdlYklEQlNl
cnZlcigpLnJlZ2lzdGVyVGVtcG9yYXJ5QmxvYkZpbGVQYXRocyhtX2Nvbm5lY3Rpb24sIGZpbGVQ
YXRocyk7CisgICAgICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oKSkgewor
ICAgICAgICAgICAgaWYgKGF1dG8qIHN0b3JhZ2VNYW5hZ2VyID0gc2Vzc2lvbi0+c3RvcmFnZU1h
bmFnZXIoKSkKKyAgICAgICAgICAgICAgICBzdG9yYWdlTWFuYWdlci0+cmVnaXN0ZXJUZW1wb3Jh
cnlCbG9iRmlsZVBhdGhzKG1fY29ubmVjdGlvbiwgZmlsZVBhdGhzKTsKKyAgICAgICAgfQogICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGZpbGVQYXRocykpOwogICAgIH0pOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRl
eCA3Yzc5ZTJhMjA5NzZhMTM5YzdmNjY3ZjExM2M0ODk0NmRlZGQ1NjQxLi4xNzViZDM4MTY0NzQ5
MTZjYzAxMTVjOWQ4ZmYyYzU4NmJkMGUzMWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMjY0LDggKzI2NCw2IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpCiAgICAgLy8gTWFrZSBzdXJl
IHdlIGZsdXNoIGFsbCBjb29raWVzIHRvIGRpc2sgYmVmb3JlIGV4aXRpbmcuCiAgICAgZm9yRWFj
aE5ldHdvcmtTZXNzaW9uKFsmXSAoYXV0byYgc2Vzc2lvbikgewogICAgICAgICBwbGF0Zm9ybUZs
dXNoQ29va2llcyhzZXNzaW9uLnNlc3Npb25JRCgpLCBbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0p
OwotICAgICAgICAvLyBNYWtlIHN1cmUgcmVmZXJlbmNlIHRvIE5ldHdvcmtQcm9jZXNzIGluIHNw
YWNlUmVxdWVzdGVyIGlzIHJlbW92ZWQuCi0gICAgICAgIHNlc3Npb24uY2xvc2VJREJTZXJ2ZXIo
W2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKICAgICB9KTsKIH0KIApAQCAtMzgyLDcgKzM4MCw2
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKFByb2Nlc3NJZGVudGlmaWVyIGlkZW50CiAgICAgY29ubmVjdGlvbi5zZXRPbkxpbmVTdGF0
ZShOZXR3b3JrU3RhdGVOb3RpZmllcjo6c2luZ2xldG9uKCkub25MaW5lKCkpOwogCiAgICAgaWYg
KGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIHNl
c3Npb24tPmVuc3VyZVdlYklEQlNlcnZlcigpLmFkZENvbm5lY3Rpb24oY29ubmVjdGlvbi5jb25u
ZWN0aW9uKCksIGlkZW50aWZpZXIpOwogICAgICAgICBpZiAoYXV0byogbWFuYWdlciA9IHNlc3Np
b24tPnN0b3JhZ2VNYW5hZ2VyKCkpCiAgICAgICAgICAgICBtYW5hZ2VyLT5zdGFydFJlY2Vpdmlu
Z01lc3NhZ2VGcm9tQ29ubmVjdGlvbihjb25uZWN0aW9uLmNvbm5lY3Rpb24oKSk7CiAgICAgfQpA
QCAtNDA2LDggKzQwMyw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmFkZFdlYnNpdGVEYXRhU3Rv
cmUoV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzCiAgICAgYWRkU2Vzc2lv
blN0b3JhZ2VRdW90YU1hbmFnZXIoc2Vzc2lvbklELCBwYXJhbWV0ZXJzLnBlck9yaWdpblN0b3Jh
Z2VRdW90YSwgcGFyYW1ldGVycy5wZXJUaGlyZFBhcnR5T3JpZ2luU3RvcmFnZVF1b3RhLCBwYXJh
bWV0ZXJzLmNhY2hlU3RvcmFnZURpcmVjdG9yeSwgcGFyYW1ldGVycy5jYWNoZVN0b3JhZ2VEaXJl
Y3RvcnlFeHRlbnNpb25IYW5kbGUpOwogCiAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3Jr
U2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIHNlc3Npb24tPmFkZFN0b3JhZ2VNYW5hZ2Vy
U2Vzc2lvbihwYXJhbWV0ZXJzLmdlbmVyYWxTdG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmdl
bmVyYWxTdG9yYWdlRGlyZWN0b3J5SGFuZGxlLCBwYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVj
dG9yeSwgcGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwot
ICAgICAgICBzZXNzaW9uLT5hZGRJbmRleGVkRGF0YWJhc2VTZXNzaW9uKHBhcmFtZXRlcnMuaW5k
ZXhlZERhdGFiYXNlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9y
eUV4dGVuc2lvbkhhbmRsZSk7CisgICAgICAgIHNlc3Npb24tPmFkZFN0b3JhZ2VNYW5hZ2VyU2Vz
c2lvbihwYXJhbWV0ZXJzLmdlbmVyYWxTdG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmdlbmVy
YWxTdG9yYWdlRGlyZWN0b3J5SGFuZGxlLCBwYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9y
eSwgcGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUsIHBhcmFt
ZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFz
ZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSwgcGFyYW1ldGVycy5jYWNoZVN0b3JhZ2VEaXJlY3Rv
cnksIHBhcmFtZXRlcnMucGVyT3JpZ2luU3RvcmFnZVF1b3RhLCBwYXJhbWV0ZXJzLnBlclRoaXJk
UGFydHlPcmlnaW5TdG9yYWdlUXVvdGEpOwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAg
ICAgICAgc2Vzc2lvbi0+YWRkU2VydmljZVdvcmtlclNlc3Npb24ocGFyYW1ldGVycy5zZXJ2aWNl
V29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkLCBXVEZNb3ZlKHBhcmFtZXRlcnMu
c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSksIHBhcmFtZXRlcnMuc2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAjZW5kaWYKQEAgLTE0
NTIsMTMgKzE0NDgsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpmZXRjaFdlYnNpdGVEYXRhKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdAogICAgICAgICBjYWxsYmFj
a0FnZ3JlZ2F0b3ItPm1fd2Vic2l0ZURhdGEuaG9zdE5hbWVzV2l0aEhTVFNDYWNoZSA9IGhvc3RO
YW1lc1dpdGhIU1RTQ2FjaGUoc2Vzc2lvbklEKTsKICNlbmRpZgogCi0gICAgaWYgKHdlYnNpdGVE
YXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpICYm
IHNlc3Npb24gJiYgc2Vzc2lvbi0+aGFzSURCRGF0YWJhc2VQYXRoKCkpIHsKLSAgICAgICAgc2Vz
c2lvbi0+ZW5zdXJlV2ViSURCU2VydmVyKCkuZ2V0T3JpZ2lucyhbY2FsbGJhY2tBZ2dyZWdhdG9y
XShhdXRvJiYgb3JpZ2lucykgewotICAgICAgICAgICAgd2hpbGUgKCFvcmlnaW5zLmlzRW1wdHko
KSkKLSAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fd2Vic2l0ZURhdGEuZW50
cmllcy5hcHBlbmQoeyBvcmlnaW5zLnRha2VBbnkoKSwgV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVk
REJEYXRhYmFzZXMsIDAgfSk7Ci0gICAgICAgIH0pOwotICAgIH0KLQogI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0
YVR5cGU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zKSAmJiBzZXNzaW9uICYmIHNlc3Npb24t
Pmhhc1NlcnZpY2VXb3JrZXJEYXRhYmFzZVBhdGgoKSkgewogICAgICAgICBzZXNzaW9uLT5lbnN1
cmVTV1NlcnZlcigpLmdldE9yaWdpbnNXaXRoUmVnaXN0cmF0aW9ucyhbY2FsbGJhY2tBZ2dyZWdh
dG9yXShjb25zdCBIYXNoU2V0PFNlY3VyaXR5T3JpZ2luRGF0YT4mIHNlY3VyaXR5T3JpZ2lucykg
bXV0YWJsZSB7CkBAIC0xNTI1LDkgKzE1MTQsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxl
dGVXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaQog
ICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6RE9NQ2Fj
aGUpICYmIHNlc3Npb24pCiAgICAgICAgIENhY2hlU3RvcmFnZTo6RW5naW5lOjpjbGVhckFsbENh
Y2hlcygqc2Vzc2lvbiwgW2NsZWFyVGFza3NIYW5kbGVyXSB7IH0pOwogCi0gICAgaWYgKHdlYnNp
dGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMp
ICYmICFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSAmJiBzZXNzaW9uKQotICAgICAgICBzZXNzaW9u
LT5lbnN1cmVXZWJJREJTZXJ2ZXIoKS5jbG9zZUFuZERlbGV0ZURhdGFiYXNlc01vZGlmaWVkU2lu
Y2UobW9kaWZpZWRTaW5jZSwgW2NsZWFyVGFza3NIYW5kbGVyXSB7IH0pOwotCiAjaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQogICAgIGJvb2wgY2xlYXJTZXJ2aWNlV29ya2VycyA9IHdlYnNpdGVE
YXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSkgfHwgd2Vic2l0ZURh
dGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25zKTsKICAgICBpZiAoY2xlYXJTZXJ2aWNlV29ya2VycyAmJiAhc2Vzc2lvbklELmlzRXBoZW1l
cmFsKCkgJiYgc2Vzc2lvbikKQEAgLTE2MjAsOSArMTYwNiw2IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IE9wdGlvCiAgICAgICAgICAgICBDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6Y2xlYXJDYWNoZXNGb3JP
cmlnaW4oKnNlc3Npb24sIFNlY3VyaXR5T3JpZ2luRGF0YSB7IG9yaWdpbkRhdGEgfSwgW2NsZWFy
VGFza3NIYW5kbGVyXSB7IH0pOwogICAgIH0KIAotICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNv
bnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKSAmJiAhc2Vzc2lvbklE
LmlzRXBoZW1lcmFsKCkgJiYgc2Vzc2lvbikKLSAgICAgICAgc2Vzc2lvbi0+ZW5zdXJlV2ViSURC
U2VydmVyKCkuY2xvc2VBbmREZWxldGVEYXRhYmFzZXNGb3JPcmlnaW5zKG9yaWdpbkRhdGFzLCBb
Y2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7Ci0KICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAg
ICAgYm9vbCBjbGVhclNlcnZpY2VXb3JrZXJzID0gd2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhX
ZWJzaXRlRGF0YVR5cGU6OkRPTUNhY2hlKSB8fCB3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdl
YnNpdGVEYXRhVHlwZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMpOwogICAgIGlmIChjbGVh
clNlcnZpY2VXb3JrZXJzICYmICFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSAmJiBzZXNzaW9uKSB7
CkBAIC0xODExLDE3ICsxNzk0LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlQW5kUmVz
dHJpY3RXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhQQUw6OlNlc3MKICAgICAgICAg
ICAgIH0KICAgICAgICAgfSk7CiAgICAgfQotCi0gICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29u
dGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpICYmIHNlc3Npb24gJiYg
c2Vzc2lvbi0+aGFzSURCRGF0YWJhc2VQYXRoKCkpIHsKLSAgICAgICAgc2Vzc2lvbi0+ZW5zdXJl
V2ViSURCU2VydmVyKCkuZ2V0T3JpZ2lucyhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0
aGlzIH0sIHNlc3Npb25JRCwgY2FsbGJhY2tBZ2dyZWdhdG9yLCBkb21haW5zVG9EZWxldGVBbGxO
b25Db29raWVXZWJzaXRlRGF0YUZvcl0oYXV0byYmIG9yaWdpbnMpIHsKLSAgICAgICAgICAgIGF1
dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOwotICAgICAgICAgICAgaWYg
KCFzZXNzaW9uIHx8ICFzZXNzaW9uLT53ZWJJREJTZXJ2ZXIoKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0KLSAgICAgICAgICAgIGF1dG8gb3JpZ2luc1RvRGVsZXRlID0gZmlsdGVyRm9yUmVn
aXN0cmFibGVEb21haW5zKG9yaWdpbnMsIGRvbWFpbnNUb0RlbGV0ZUFsbE5vbkNvb2tpZVdlYnNp
dGVEYXRhRm9yLCBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fZG9tYWlucyk7Ci0gICAgICAgICAgICBz
ZXNzaW9uLT53ZWJJREJTZXJ2ZXIoKS0+Y2xvc2VBbmREZWxldGVEYXRhYmFzZXNGb3JPcmlnaW5z
KG9yaWdpbnNUb0RlbGV0ZSwgW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKLSAgICAgICAgfSk7
Ci0gICAgfQogICAgIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBib29sIGNsZWFy
U2VydmljZVdvcmtlcnMgPSB3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlw
ZTo6RE9NQ2FjaGUpIHx8IHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBl
OjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucyk7CkBAIC0xOTU4LDEzICsxOTMwLDYgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6cmVnaXN0cmFibGVEb21haW5zV2l0aFdlYnNpdGVEYXRhKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwKICAgICAgICAgfSk7CiAgICAgfQogICAgIAotICAgIGlmICh3
ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJh
c2VzKSAmJiBzZXNzaW9uICYmIHNlc3Npb24tPmhhc0lEQkRhdGFiYXNlUGF0aCgpKSB7Ci0gICAg
ICAgIHNlc3Npb24tPmVuc3VyZVdlYklEQlNlcnZlcigpLmdldE9yaWdpbnMoW2NhbGxiYWNrQWdn
cmVnYXRvcl0oYXV0byYmIG9yaWdpbnMpIHsKLSAgICAgICAgICAgIHdoaWxlICghb3JpZ2lucy5p
c0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX3dlYnNpdGVE
YXRhLmVudHJpZXMuYXBwZW5kKHsgb3JpZ2lucy50YWtlQW55KCksIFdlYnNpdGVEYXRhVHlwZTo6
SW5kZXhlZERCRGF0YWJhc2VzLCAwIH0pOwotICAgICAgICB9KTsKLSAgICB9Ci0gICAgCiAjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5z
KFdlYnNpdGVEYXRhVHlwZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMpICYmIHNlc3Npb24g
JiYgc2Vzc2lvbi0+aGFzU2VydmljZVdvcmtlckRhdGFiYXNlUGF0aCgpKSB7CiAgICAgICAgIHNl
c3Npb24tPmVuc3VyZVNXU2VydmVyKCkuZ2V0T3JpZ2luc1dpdGhSZWdpc3RyYXRpb25zKFtjYWxs
YmFja0FnZ3JlZ2F0b3JdKGNvbnN0IEhhc2hTZXQ8U2VjdXJpdHlPcmlnaW5EYXRhPiYgc2VjdXJp
dHlPcmlnaW5zKSBtdXRhYmxlIHsKQEAgLTIxMjksNDMgKzIwOTQsMTAgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6cHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseUZvclRlc3RpbmdTeW5jKENvbXBs
ZXRpb25IYW5kbGUKICAgICBwcmVwYXJlVG9TdXNwZW5kKHRydWUsIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6c3VzcGVuZElEQlNlcnZlcnMo
Ym9vbCBpc1N1c3BlbnNpb25JbW1pbmVudCkKLXsKLSAgICBtX3Nob3VsZFN1c3BlbmRJREJTZXJ2
ZXJzID0gdHJ1ZTsKLSAgICArK21fc3VzcGVuc2lvbklkZW50aWZpZXI7Ci0KLSAgICBib29sIGFs
bFN1c3BlbmRlZCA9IHRydWU7Ci0gICAgYXV0byBjb25kaXRpb24gPSBpc1N1c3BlbnNpb25JbW1p
bmVudCA/IFdlYklEQlNlcnZlcjo6U3VzcGVuc2lvbkNvbmRpdGlvbjo6QWx3YXlzIDogV2ViSURC
U2VydmVyOjpTdXNwZW5zaW9uQ29uZGl0aW9uOjpJZklkbGU7Ci0gICAgZm9yRWFjaE5ldHdvcmtT
ZXNzaW9uKFsmXShhdXRvJiBzZXNzaW9uKSB7Ci0gICAgICAgIGlmIChhdXRvKiBzZXJ2ZXIgPSBz
ZXNzaW9uLndlYklEQlNlcnZlcigpKQotICAgICAgICAgICAgYWxsU3VzcGVuZGVkICY9IHNlcnZl
ci0+c3VzcGVuZChjb25kaXRpb24pOwotICAgIH0pOwotCi0gICAgaWYgKGFsbFN1c3BlbmRlZCkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoQWZ0ZXIoNV9z
LCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgc3VzcGVuc2lvbklkZW50aWZp
ZXIgPSBtX3N1c3BlbnNpb25JZGVudGlmaWVyXSB7Ci0gICAgICAgIGlmICghd2Vha1RoaXMpCi0g
ICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKCFtX3Nob3VsZFN1c3BlbmRJREJTZXJ2
ZXJzIHx8IHN1c3BlbnNpb25JZGVudGlmaWVyICE9IG1fc3VzcGVuc2lvbklkZW50aWZpZXIpCi0g
ICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgZm9yRWFjaE5ldHdvcmtTZXNzaW9uKFtdKGF1
dG8mIHNlc3Npb24pIHsKLSAgICAgICAgICAgIGlmIChhdXRvKiBzZXJ2ZXIgPSBzZXNzaW9uLndl
YklEQlNlcnZlcigpKQotICAgICAgICAgICAgICAgIHNlcnZlci0+c3VzcGVuZChXZWJJREJTZXJ2
ZXI6OlN1c3BlbnNpb25Db25kaXRpb246OkFsd2F5cyk7Ci0gICAgICAgIH0pOwotICAgIH0pOwot
fQotCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5kKGJvb2wgaXNTdXNwZW5z
aW9uSW1taW5lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gTmV0d29ya1By
b2Nlc3M6OnByZXBhcmVUb1N1c3BlbmQoKSwgaXNTdXNwZW5zaW9uSW1taW5lbnQ9JWQiLCB0aGlz
LCBpc1N1c3BlbnNpb25JbW1pbmVudCk7CiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAg
IHN1c3BlbmRJREJTZXJ2ZXJzKGlzU3VzcGVuc2lvbkltbWluZW50KTsKLSNlbmRpZgotCiAgICAg
bG93TWVtb3J5SGFuZGxlcihDcml0aWNhbDo6WWVzKTsKIAogICAgIFJlZlB0cjxDYWxsYmFja0Fn
Z3JlZ2F0b3I+IGNhbGxiYWNrQWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRl
KFt0aGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgp
IG11dGFibGUgewpAQCAtMjIyMywxOCArMjE1NSwxMCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpy
ZXN1bWUoKQogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICAgICAgaWYgKGF1dG8qIHN3
U2VydmVyID0gc2Vzc2lvbi5zd1NlcnZlcigpKQogICAgICAgICAgICAgc3dTZXJ2ZXItPmVuZFN1
c3BlbnNpb24oKTsKLSNlbmRpZgotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgICAgIGlm
IChhdXRvKiBzZXJ2ZXIgPSBzZXNzaW9uLndlYklEQlNlcnZlcigpKQotICAgICAgICAgICAgc2Vy
dmVyLT5yZXN1bWUoKTsKICNlbmRpZgogICAgICAgICBpZiAoYXV0byogbWFuYWdlciA9IHNlc3Np
b24uc3RvcmFnZU1hbmFnZXIoKSkKICAgICAgICAgICAgIG1hbmFnZXItPnJlc3VtZSgpOwogICAg
IH0pOwotCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBtX3Nob3VsZFN1c3BlbmRJREJT
ZXJ2ZXJzID0gZmFsc2U7Ci0jZW5kaWYKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlZmV0
Y2hETlMoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKQEAgLTIyODEsMTIgKzIyMDUsMTUgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6c3luY0xvY2FsU3RvcmFnZShDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmQKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVzZXRRdW90YShQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXNzaW9uU3RvcmFnZVF1
b3RhTWFuYWdlcnNMb2NrIH07Ci0gICAgaWYgKGF1dG8qIHNlc3Npb25TdG9yYWdlUXVvdGFNYW5h
Z2VyID0gbV9zZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlcnMuZ2V0KHNlc3Npb25JRCkpIHsKLSAg
ICAgICAgZm9yIChhdXRvIHN0b3JhZ2VRdW90YU1hbmFnZXIgOiBzZXNzaW9uU3RvcmFnZVF1b3Rh
TWFuYWdlci0+ZXhpc3RpbmdTdG9yYWdlUXVvdGFNYW5hZ2VycygpKQotICAgICAgICAgICAgc3Rv
cmFnZVF1b3RhTWFuYWdlci0+cmVzZXRRdW90YUZvclRlc3RpbmcoKTsKLSAgICB9Ci0gICAgY29t
cGxldGlvbkhhbmRsZXIoKTsKKyAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vz
c2lvbklEKTsKKyAgICBpZiAoIXNlc3Npb24pCisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFu
ZGxlcigpOworCisgICAgYXV0byogc3RvcmFnZU1hbmFnZXIgPSBzZXNzaW9uLT5zdG9yYWdlTWFu
YWdlcigpOworICAgIGlmICghc3RvcmFnZU1hbmFnZXIpCisgICAgICAgIHJldHVybiBjb21wbGV0
aW9uSGFuZGxlcigpOworCisgICAgc3RvcmFnZU1hbmFnZXItPnJlc2V0UXVvdGFGb3JUZXN0aW5n
KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6
Y2xlYXJTdG9yYWdlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMjI5OCw2ICsyMjI1LDE2IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OmNsZWFyU3RvcmFnZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENv
bXBsZXRpb25IYW5kbGVyPHZvCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKK3Zv
aWQgTmV0d29ya1Byb2Nlc3M6OmRpZEluY3JlYXNlUXVvdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbiwgUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IG5ld1F1b3RhKQorewor
ICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOworICAgIGlmICgh
c2Vzc2lvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGF1dG8qIG1hbmFnZXIgPSBzZXNz
aW9uLT5zdG9yYWdlTWFuYWdlcigpKQorICAgICAgICBtYW5hZ2VyLT5kaWRJbmNyZWFzZVF1b3Rh
KG9yaWdpbiwgaWRlbnRpZmllciwgbmV3UXVvdGEpOworfQorCiB2b2lkIE5ldHdvcmtQcm9jZXNz
OjpyZW5hbWVPcmlnaW5JbldlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29u
c3QgVVJMJiBvbGROYW1lLCBjb25zdCBVUkwmIG5ld05hbWUsIE9wdGlvblNldDxXZWJzaXRlRGF0
YVR5cGU+IGRhdGFUeXBlcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIGF1dG8gYWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3Jl
YXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKQEAgLTIzMTAsOSArMjI0Nyw2IEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OnJlbmFtZU9yaWdpbkluV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBjb25zdCBVCiAgICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9u
KHNlc3Npb25JRCk7CiAgICAgaWYgKGF1dG8qIG1hbmFnZXIgPSBzZXNzaW9uID8gc2Vzc2lvbi0+
c3RvcmFnZU1hbmFnZXIoKSA6IG51bGxwdHIpCiAgICAgICAgIG1hbmFnZXItPm1vdmVEYXRhKG9s
ZE9yaWdpbiwgbmV3T3JpZ2luLCBbYWdncmVnYXRvcl0geyB9KTsKLQotICAgIGlmIChkYXRhVHlw
ZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpICYmIHNlc3Np
b24gJiYgc2Vzc2lvbi0+aGFzSURCRGF0YWJhc2VQYXRoKCkpCi0gICAgICAgIHNlc3Npb24tPmVu
c3VyZVdlYklEQlNlcnZlcigpLnJlbmFtZU9yaWdpbihvbGRPcmlnaW4sIG5ld09yaWdpbiwgW2Fn
Z3JlZ2F0b3JdIHsgfSk7CiB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCkBAIC0yMzcy
LDcgKzIzMDYsOCBAQCBSZWZQdHI8U3RvcmFnZVF1b3RhTWFuYWdlcj4gTmV0d29ya1Byb2Nlc3M6
OnN0b3JhZ2VRdW90YU1hbmFnZXIoUEFMOjpTZXNzaW9uSUQgcwogICAgIFN0b3JhZ2VRdW90YU1h
bmFnZXI6OlVzYWdlR2V0dGVyIHVzYWdlR2V0dGVyID0gW2NhY2hlUm9vdFBhdGggPSBzZXNzaW9u
U3RvcmFnZVF1b3RhTWFuYWdlci0+Y2FjaGVSb290UGF0aCgpLmlzb2xhdGVkQ29weSgpLCBpZGJS
b290UGF0aCA9IGlkYlJvb3RQYXRoLmlzb2xhdGVkQ29weSgpLCBvcmlnaW4gPSBvcmlnaW4uaXNv
bGF0ZWRDb3B5KCldKCkgewogICAgICAgICBBU1NFUlQoIWlzTWFpblJ1bkxvb3AoKSk7CiAKLSAg
ICAgICAgcmV0dXJuIENhY2hlU3RvcmFnZTo6RW5naW5lOjpkaXNrVXNhZ2UoY2FjaGVSb290UGF0
aCwgb3JpZ2luKSArIElEQlNlcnZlcjo6SURCU2VydmVyOjpkaXNrVXNhZ2UoaWRiUm9vdFBhdGgs
IG9yaWdpbik7CisgICAgICAgIGF1dG8gY2FjaGVTdG9yYWdlUGF0aCA9IENhY2hlU3RvcmFnZTo6
RW5naW5lOjpzdG9yYWdlUGF0aChjYWNoZVJvb3RQYXRoLCBvcmlnaW4pOworICAgICAgICByZXR1
cm4gQ2FjaGVTdG9yYWdlOjpFbmdpbmU6OmRpc2tVc2FnZShjYWNoZVN0b3JhZ2VQYXRoKSArIElE
QlNlcnZlcjo6SURCU2VydmVyOjpkaXNrVXNhZ2UoaWRiUm9vdFBhdGgsIG9yaWdpbik7CiAgICAg
fTsKICAgICBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpRdW90YUluY3JlYXNlUmVxdWVzdGVyIHF1b3Rh
SW5jcmVhc2VSZXF1ZXN0ZXIgPSBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwg
c2Vzc2lvbklELCBvcmlnaW5dICh1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IGN1cnJl
bnRTcGFjZSwgdWludDY0X3QgcmVxdWVzdGVkSW5jcmVhc2UsIGF1dG8mJiBjYWxsYmFjaykgewog
ICAgICAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgpKTsKQEAgLTI1ODYsOCArMjUyMSw2IEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OnJlbW92ZUtlcHRBbGl2ZUxvYWQoTmV0d29ya1Jlc291cmNlTG9h
ZGVyJiBsb2FkZXIpCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjb25uZWN0aW9uVG9XZWJQcm9jZXNz
Q2xvc2VkKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklEKQogewogICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklE
KSkgewotICAgICAgICBpZiAoYXV0byogc2VydmVyID0gc2Vzc2lvbi0+d2ViSURCU2VydmVyKCkp
Ci0gICAgICAgICAgICBzZXJ2ZXItPnJlbW92ZUNvbm5lY3Rpb24oY29ubmVjdGlvbik7CiAgICAg
ICAgIGlmIChhdXRvKiBtYW5hZ2VyID0gc2Vzc2lvbi0+c3RvcmFnZU1hbmFnZXIoKSkKICAgICAg
ICAgICAgIG1hbmFnZXItPnN0b3BSZWNlaXZpbmdNZXNzYWdlRnJvbUNvbm5lY3Rpb24oY29ubmVj
dGlvbik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5oCmluZGV4IDc4Nzc5MjdhMTdjNTU5NmViMDNiZDRhY2Y0ZDU4ZTQxOGFjOGJhMjMuLjBm
ODUzM2VkMTNkZDI2Mjc3YTZkZDUyYWI2ZGFiZTIwYzNlMDg4MDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTMzLDYgKzMzLDcgQEAKICNp
bmNsdWRlICJMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuaCIKICNpbmNsdWRlICJOZXR3b3Jr
Q29udGVudFJ1bGVMaXN0TWFuYWdlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRJ
ZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLmgi
CiAjaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRl
ICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5SWRlbnRpZmllci5o
IgpAQCAtMjg4LDEyICsyODksMTEgQEAgcHVibGljOgogICAgIE5ldHdvcmtDb250ZW50UnVsZUxp
c3RNYW5hZ2VyJiBuZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcigpIHsgcmV0dXJuIG1fbmV0
d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXI7IH0KICNlbmRpZgogCi0gICAgYm9vbCBzaG91bGRT
dXNwZW5kSURCU2VydmVycygpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkU3VzcGVuZElEQlNlcnZl
cnM7IH0KLQogICAgIHZvaWQgc3luY0xvY2FsU3RvcmFnZShDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwogCiAgICAgdm9pZCByZXNldFF1b3RhKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgY2xlYXJTdG9yYWdlKFBBTDo6U2Vzc2lvbklE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgZGlkSW5jcmVhc2VRdW90
YShQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgUXVvdGFJbmNy
ZWFzZVJlcXVlc3RJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBuZXdRdW90YSk7
CiAgICAgdm9pZCByZW5hbWVPcmlnaW5JbldlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBVUkwmLCBjb25zdCBVUkwmLCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC00NzMs
OCArNDczLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lQXNOb0FjY2Vz
cyhjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lQXNDT1JT
RW5hYmxlZChjb25zdCBTdHJpbmcmKSBjb25zdDsKIAotICAgIHZvaWQgc3VzcGVuZElEQlNlcnZl
cnMoYm9vbCBpc1N1c3BlbnNpb25JbW1pbmVudCk7Ci0KICNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIHZvaWQgc2V0SXNIb2xkaW5nTG9ja2VkRmlsZXMoYm9vbCk7CiAjZW5kaWYKQEAgLTQ4
Miw2ICs0ODAsNyBAQCBwcml2YXRlOgogICAgIGNsYXNzIFNlc3Npb25TdG9yYWdlUXVvdGFNYW5h
Z2VyIHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgorICAg
ICAgICBTZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlcigpID0gZGVsZXRlOwogICAgICAgICBTZXNz
aW9uU3RvcmFnZVF1b3RhTWFuYWdlcihjb25zdCBTdHJpbmcmIGNhY2hlUm9vdFBhdGgsIHVpbnQ2
NF90IGRlZmF1bHRRdW90YSwgdWludDY0X3QgZGVmYXVsdFRoaXJkUGFydHlRdW90YSkKICAgICAg
ICAgICAgIDogbV9jYWNoZVJvb3RQYXRoKGNhY2hlUm9vdFBhdGgpCiAgICAgICAgICAgICAsIG1f
ZGVmYXVsdFF1b3RhKGRlZmF1bHRRdW90YSkKQEAgLTUwOCw4ICs1MDcsOCBAQCBwcml2YXRlOgog
ICAgIHByaXZhdGU6CiAgICAgICAgIFN0cmluZyBtX2NhY2hlUm9vdFBhdGg7CiAgICAgICAgIFN0
cmluZyBtX2lkYlJvb3RQYXRoOwotICAgICAgICB1aW50NjRfdCBtX2RlZmF1bHRRdW90YSB7IFdl
YkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6OmRlZmF1bHRRdW90YSgpIH07Ci0gICAgICAgIHVp
bnQ2NF90IG1fZGVmYXVsdFRoaXJkUGFydHlRdW90YSB7IFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1h
bmFnZXI6OmRlZmF1bHRUaGlyZFBhcnR5UXVvdGEoKSB9OworICAgICAgICB1aW50NjRfdCBtX2Rl
ZmF1bHRRdW90YTsKKyAgICAgICAgdWludDY0X3QgbV9kZWZhdWx0VGhpcmRQYXJ0eVF1b3RhOwog
ICAgICAgICBIYXNoTWFwPFdlYkNvcmU6OkNsaWVudE9yaWdpbiwgUmVmUHRyPFdlYkNvcmU6OlN0
b3JhZ2VRdW90YU1hbmFnZXI+PiBtX3N0b3JhZ2VRdW90YU1hbmFnZXJzOwogICAgIH07CiAgICAg
dm9pZCBhZGRTZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlcihQQUw6OlNlc3Npb25JRCwgdWludDY0
X3QgZGVmYXVsdFF1b3RhLCB1aW50NjRfdCBkZWZhdWx0VGhpcmRQYXJ0eVF1b3RhLCBjb25zdCBT
dHJpbmcmIGNhY2hlUm9vdFBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYpOwpAQCAtNTQ5
LDkgKzU0OCw2IEBAIHByaXZhdGU6CiAgICAgV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyIG1fd2Vi
U1FMaXRlRGF0YWJhc2VUcmFja2VyOwogICAgIFJlZlB0cjxQcm9jZXNzQXNzZXJ0aW9uPiBtX2hv
bGRpbmdMb2NrZWRGaWxlQXNzZXJ0aW9uOwogI2VuZGlmCi0KLSAgICBib29sIG1fc2hvdWxkU3Vz
cGVuZElEQlNlcnZlcnMgeyBmYWxzZSB9OwotICAgIHVpbnQ2NF90IG1fc3VzcGVuc2lvbklkZW50
aWZpZXIgeyAwIH07CiAgICAgCiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAgICAgUmVmUHRyPFJUQ0Rh
dGFDaGFubmVsUmVtb3RlTWFuYWdlclByb3h5PiBtX3J0Y0RhdGFDaGFubmVsUHJveHk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNz
YWdlcy5pbgppbmRleCA2MzdlMTU5ZjE4NjM5M2JlYzVjYzA1YWI1YmQ1NzgwYmU4YzZmY2U0Li42
MzFlMmI2MDczYzAxOTIxMzA2OGMyMDk2YjgyN2IyNzlkYmM3ZGUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4K
QEAgLTE3OSw2ICsxNzksNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNl
aXZlciB7CiAKICAgICBSZXNldFF1b3RhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKCkg
QXN5bmMKICAgICBDbGVhclN0b3JhZ2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBB
c3luYworICAgIERpZEluY3JlYXNlUXVvdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdHJ1
Y3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbiwgV2ViS2l0OjpRdW90YUluY3JlYXNlUmVx
dWVzdElkZW50aWZpZXIgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbmV3UXVv
dGEpCiAgICAgCiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIEhhc0FwcEJvdW5k
U2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+IChib29sIGhhc0FwcEJvdW5kU2Vz
c2lvbikgQXN5bmMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vz
c2lvbi5jcHAKaW5kZXggZTJiMjRkODMyMmI2ZWMxYzM3NzAxZGNhZDQ5NzUzNGNlZjIzMWEyNi4u
OWM0YmUyYjYxODk0NzRjY2YyNGJlNzBiMTEyNzI5MThmYzAyYjNlMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKQEAgLTIwNCw4ICsyMDQs
NiBAQCB2b2lkIE5ldHdvcmtTZXNzaW9uOjppbnZhbGlkYXRlQW5kQ2FuY2VsKCkKICAgICBpZiAo
bV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKQogICAgICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MtPmludmFsaWRhdGVBbmRDYW5jZWwoKTsKICNlbmRpZgotICAgIGlmIChhdXRvIHNlcnZlciA9
IHN0ZDo6ZXhjaGFuZ2UobV93ZWJJREJTZXJ2ZXIsIG51bGxwdHIpKQotICAgICAgICBzZXJ2ZXIt
PmNsb3NlKCk7CiAgICAgaWYgKGF1dG8gbWFuYWdlciA9IHN0ZDo6ZXhjaGFuZ2UobV9zdG9yYWdl
TWFuYWdlciwgbnVsbHB0cikpCiAgICAgICAgIG1hbmFnZXItPmNsb3NlKCk7CiAgICAgbV9jYWNo
ZUVuZ2luZSA9IG51bGxwdHI7CkBAIC02NTMsNTUgKzY1MSwxOCBAQCBib29sIE5ldHdvcmtTZXNz
aW9uOjpoYXNTZXJ2aWNlV29ya2VyRGF0YWJhc2VQYXRoKCkgY29uc3QKIAogI2VuZGlmIC8vIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKIAotV2ViSURCU2VydmVyJiBOZXR3b3JrU2Vzc2lvbjo6ZW5z
dXJlV2ViSURCU2VydmVyKCkKLXsKLSAgICBpZiAoIW1fd2ViSURCU2VydmVyKSB7Ci0gICAgICAg
IFN0cmluZyBwYXRoOwotICAgICAgICBpZiAoIXNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkpIHsK
LSAgICAgICAgICAgIEFTU0VSVCghbV9pZGJEYXRhYmFzZVBhdGguaXNOdWxsKCkpOwotICAgICAg
ICAgICAgcGF0aCA9IG1faWRiRGF0YWJhc2VQYXRoOwotICAgICAgICB9Ci0KLSAgICAgICAgYXV0
byBzcGFjZVJlcXVlc3RlciA9IFtuZXR3b3JrUHJvY2VzcyA9IFJlZiB7IG5ldHdvcmtQcm9jZXNz
KCkgfSwgc2Vzc2lvbklEID0gc2Vzc2lvbklEKCldKGNvbnN0IGF1dG8mIG9yaWdpbiwgdWludDY0
X3Qgc3BhY2VSZXF1ZXN0ZWQpIHsKLSAgICAgICAgICAgIHJldHVybiBuZXR3b3JrUHJvY2Vzcy0+
c3RvcmFnZVF1b3RhTWFuYWdlcihzZXNzaW9uSUQsIG9yaWdpbiktPnJlcXVlc3RTcGFjZU9uQmFj
a2dyb3VuZFRocmVhZChzcGFjZVJlcXVlc3RlZCk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgbV93
ZWJJREJTZXJ2ZXIgPSBXZWJJREJTZXJ2ZXI6OmNyZWF0ZShzZXNzaW9uSUQoKSwgcGF0aCwgV1RG
TW92ZShzcGFjZVJlcXVlc3RlcikpOwotICAgICAgICBpZiAobmV0d29ya1Byb2Nlc3MoKS5zaG91
bGRTdXNwZW5kSURCU2VydmVycygpKQotICAgICAgICAgICAgbV93ZWJJREJTZXJ2ZXItPnN1c3Bl
bmQoV2ViSURCU2VydmVyOjpTdXNwZW5zaW9uQ29uZGl0aW9uOjpBbHdheXMpOwotICAgIH0KLSAg
ICByZXR1cm4gKm1fd2ViSURCU2VydmVyOwotfQotCi12b2lkIE5ldHdvcmtTZXNzaW9uOjpjbG9z
ZUlEQlNlcnZlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Ci17Ci0gICAgaWYgKCFtX3dlYklEQlNlcnZlcikKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25I
YW5kbGVyKCk7Ci0KLSAgICBzdGQ6OmV4Y2hhbmdlKG1fd2ViSURCU2VydmVyLCBudWxscHRyKS0+
Y2xvc2UoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotfQotCi12b2lkIE5ldHdvcmtTZXNz
aW9uOjphZGRJbmRleGVkRGF0YWJhc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYgaW5kZXhlZERhdGFi
YXNlRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIGhhbmRsZSkKLXsKLSAgICAv
LyAqKioqKioqKioKLSAgICAvLyBJTVBPUlRBTlQ6IERvIG5vdCBjaGFuZ2UgdGhlIGRpcmVjdG9y
eSBzdHJ1Y3R1cmUgZm9yIGluZGV4ZWQgZGF0YWJhc2VzIG9uIGRpc2sgd2l0aG91dCBmaXJzdCBj
b25zdWx0aW5nIGEgcmV2aWV3ZXIgZnJvbSBBcHBsZSAoPHJkYXI6Ly9wcm9ibGVtLzE3NDU0NzEy
PikKLSAgICAvLyAqKioqKioqKioKLSAgICBhdXRvIGlzTmV3ID0gbV9pZGJEYXRhYmFzZVBhdGgu
aXNOdWxsKCk7Ci0gICAgbV9pZGJEYXRhYmFzZVBhdGggPSBpbmRleGVkRGF0YWJhc2VEaXJlY3Rv
cnk7Ci0gICAgaWYgKGlzTmV3KSB7Ci0gICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQ
ZXJtYW5lbnRseShoYW5kbGUpOwotICAgICAgICBuZXR3b3JrUHJvY2VzcygpLnNldFNlc3Npb25T
dG9yYWdlUXVvdGFNYW5hZ2VySURCUm9vdFBhdGgoc2Vzc2lvbklEKCksIGluZGV4ZWREYXRhYmFz
ZURpcmVjdG9yeSk7Ci0gICAgfQotfQotCi12b2lkIE5ldHdvcmtTZXNzaW9uOjphZGRTdG9yYWdl
TWFuYWdlclNlc3Npb24oY29uc3QgU3RyaW5nJiBnZW5lcmFsU3RvcmFnZVBhdGgsIFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSYgZ2VuZXJhbFN0b3JhZ2VQYXRoSGFuZGxlLCBjb25zdCBTdHJpbmcm
IGxvY2FsU3RvcmFnZVBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgbG9jYWxTdG9yYWdl
UGF0aEhhbmRsZSkKK3ZvaWQgTmV0d29ya1Nlc3Npb246OmFkZFN0b3JhZ2VNYW5hZ2VyU2Vzc2lv
bihjb25zdCBTdHJpbmcmIGdlbmVyYWxTdG9yYWdlUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlJiBnZW5lcmFsU3RvcmFnZVBhdGhIYW5kbGUsIGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdl
UGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBsb2NhbFN0b3JhZ2VQYXRoSGFuZGxlLCBj
b25zdCBTdHJpbmcmIGlkYlN0b3JhZ2VQYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIGlk
YlN0b3JhZ2VQYXRoSGFuZGxlLCBjb25zdCBTdHJpbmcmIGNhY2hlU3RvcmFnZVBhdGgsIHVpbnQ2
NF90IGRlZmF1bHRPcmlnaW5RdW90YSwgdWludDY0X3QgZGVmYXVsdFRoaXJkUGFydHlRdW90YSkK
IHsKICAgICBpZiAobV9zdG9yYWdlTWFuYWdlcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgU2Fu
ZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KGdlbmVyYWxTdG9yYWdlUGF0aEhhbmRs
ZSk7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KGxvY2FsU3RvcmFn
ZVBhdGhIYW5kbGUpOwotICAgIG1fc3RvcmFnZU1hbmFnZXIgPSBOZXR3b3JrU3RvcmFnZU1hbmFn
ZXI6OmNyZWF0ZShzZXNzaW9uSUQoKSwgZ2VuZXJhbFN0b3JhZ2VQYXRoLCBsb2NhbFN0b3JhZ2VQ
YXRoKTsKKyAgICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkoaWRiU3RvcmFn
ZVBhdGhIYW5kbGUpOworICAgIElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgY29ubmVjdGlvbklE
OworICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gbmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpKQorICAgICAgICBjb25uZWN0aW9uSUQgPSBjb25uZWN0aW9uLT51bmlx
dWVJRCgpOworICAgIG1fc3RvcmFnZU1hbmFnZXIgPSBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNy
ZWF0ZShzZXNzaW9uSUQoKSwgY29ubmVjdGlvbklELCBnZW5lcmFsU3RvcmFnZVBhdGgsIGxvY2Fs
U3RvcmFnZVBhdGgsIGlkYlN0b3JhZ2VQYXRoLCBjYWNoZVN0b3JhZ2VQYXRoLCBkZWZhdWx0T3Jp
Z2luUXVvdGEsIGRlZmF1bHRUaGlyZFBhcnR5UXVvdGEpOwogfQogCiB2b2lkIE5ldHdvcmtTZXNz
aW9uOjplbnN1cmVDYWNoZUVuZ2luZShGdW5jdGlvbjx2b2lkKENhY2hlU3RvcmFnZTo6RW5naW5l
Jik+JiYgY2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtTZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtT
ZXNzaW9uLmgKaW5kZXggMTkzMDdjZjQwYmUzYjJmMjYwNTdkMDE2Yzc2NmVkY2U0OThjOTU0Mi4u
YmFhMTIyNDVjZjIyNjRkOTIxNTdkZGU0NzFkMmU0YjEwMmJjMjk3ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaApAQCAtMjEwLDE0ICsyMTAsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBhZGRTZXJ2aWNlV29ya2VyU2Vzc2lvbihib29sIHByb2Nlc3NU
ZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCwgU3RyaW5nJiYgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bkRpcmVjdG9yeSwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJik7CiAjZW5kaWYKIAot
ICAgIFdlYklEQlNlcnZlciogd2ViSURCU2VydmVyKCkgeyByZXR1cm4gbV93ZWJJREJTZXJ2ZXIu
Z2V0KCk7IH0KLSAgICBXZWJJREJTZXJ2ZXImIGVuc3VyZVdlYklEQlNlcnZlcigpOwotICAgIHZv
aWQgY2xvc2VJREJTZXJ2ZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lk
IGFkZEluZGV4ZWREYXRhYmFzZVNlc3Npb24oY29uc3QgU3RyaW5nJiBpbmRleGVkRGF0YWJhc2VE
aXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYpOwotICAgIGJvb2wgaGFzSURCRGF0
YWJhc2VQYXRoKCkgY29uc3QgeyByZXR1cm4gIW1faWRiRGF0YWJhc2VQYXRoLmlzRW1wdHkoKTsg
fQotCiAgICAgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyKiBzdG9yYWdlTWFuYWdlcigpIHsgcmV0dXJu
IG1fc3RvcmFnZU1hbmFnZXIuZ2V0KCk7IH0KLSAgICB2b2lkIGFkZFN0b3JhZ2VNYW5hZ2VyU2Vz
c2lvbihjb25zdCBTdHJpbmcmIGdlbmVyYWxTdG9yYWdlUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlJiBnZW5lcmFsU3RvcmFnZVBhdGhIYW5kbGUsIGNvbnN0IFN0cmluZyYgbG9jYWxTdG9y
YWdlUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBsb2NhbFN0b3JhZ2VQYXRoSGFuZGxl
KTsKKyAgICB2b2lkIGFkZFN0b3JhZ2VNYW5hZ2VyU2Vzc2lvbihjb25zdCBTdHJpbmcmIGdlbmVy
YWxTdG9yYWdlUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBnZW5lcmFsU3RvcmFnZVBh
dGhIYW5kbGUsIGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlUGF0aCwgU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlJiBsb2NhbFN0b3JhZ2VQYXRoSGFuZGxlLCBjb25zdCBTdHJpbmcmIGlkYlN0b3Jh
Z2VQYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIGlkYlN0b3JhZ2VQYXRoSGFuZGxlLCBj
b25zdCBTdHJpbmcmIGNhY2hlU3RvcmFnZVBhdGgsIHVpbnQ2NF90IGRlZmF1bHRPcmlnaW5RdW90
YSwgdWludDY0X3QgZGVmYXVsdFRoaXJkUGFydHlRdW90YSk7CiAKICAgICBDYWNoZVN0b3JhZ2U6
OkVuZ2luZSogY2FjaGVFbmdpbmUoKSB7IHJldHVybiBtX2NhY2hlRW5naW5lLmdldCgpOyB9CiAg
ICAgdm9pZCBlbnN1cmVDYWNoZUVuZ2luZShGdW5jdGlvbjx2b2lkKENhY2hlU3RvcmFnZTo6RW5n
aW5lJik+JiYpOwpAQCAtMzE5LDkgKzMxMyw2IEBAIHByb3RlY3RlZDoKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6U1dTZXJ2ZXI+IG1fc3dTZXJ2ZXI7CiAjZW5kaWYKIAotICAgIFN0cmlu
ZyBtX2lkYkRhdGFiYXNlUGF0aDsKLSAgICBSZWZQdHI8V2ViSURCU2VydmVyPiBtX3dlYklEQlNl
cnZlcjsKLQogICAgIFJlZlB0cjxOZXR3b3JrU3RvcmFnZU1hbmFnZXI+IG1fc3RvcmFnZU1hbmFn
ZXI7CiAgICAgUmVmUHRyPENhY2hlU3RvcmFnZTo6RW5naW5lPiBtX2NhY2hlRW5naW5lOwogICAg
IFZlY3RvcjxGdW5jdGlvbjx2b2lkKENhY2hlU3RvcmFnZTo6RW5naW5lJik+PiBtX2NhY2hlU3Rv
cmFnZVBhcmFtZXRlcnNDYWxsYmFja3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKaW5kZXggYzIwMGNlOGI1
ZWI0YzNhMDM2NTdlODIyNjg5OTAyYjQ2ZGJmOGFiMC4uYzUxYzIyNDkzMTc4MjQxOWU3MTNlYjYy
NThmMGNmOWZhZjE5OWI4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcApAQCAtMzEsNiArMzEsNyBAQAog
I2luY2x1ZGUgIk5ldHdvcmtDYWNoZUlPQ2hhbm5lbC5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9j
ZXNzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Nlc3Npb24uaCIKKyNpbmNsdWRlICJOZXR3b3JrU3Rv
cmFnZU1hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVR5cGUuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL0NhY2hlUXVlcnlPcHRpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXRyaWV2ZVJl
Y29yZHNPcHRpb25zLmg+CkBAIC0yMDMsNDAgKzIwNCw1MiBAQCBzdGF0aWMgdWludDY0X3QgZ2V0
RGlyZWN0b3J5U2l6ZShjb25zdCBTdHJpbmcmIGRpcmVjdG9yeVBhdGgpCiAgICAgcmV0dXJuIGRp
cmVjdG9yeVNpemU7CiB9CiAKLXVpbnQ2NF90IEVuZ2luZTo6ZGlza1VzYWdlKGNvbnN0IFN0cmlu
ZyYgcm9vdFBhdGgsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luKQorU3RyaW5n
IEVuZ2luZTo6c3RvcmFnZVBhdGgoY29uc3QgU3RyaW5nJiByb290RGlyZWN0b3J5LCBjb25zdCBX
ZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbikKIHsKICAgICBBU1NFUlQoIWlzTWFpblJ1bkxv
b3AoKSk7CisgICAgCisgICAgaWYgKHJvb3REaXJlY3RvcnkuaXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAotICAgIGlmIChyb290UGF0aC5pc0VtcHR5KCkpCi0gICAg
ICAgIHJldHVybiAwOwotCi0gICAgU3RyaW5nIHNhbHRQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KHJvb3RQYXRoLCAic2FsdCJfcyk7CisgICAgU3RyaW5nIHNhbHRQ
YXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJvb3REaXJlY3Rvcnks
ICJzYWx0Il9zKTsKICAgICBhdXRvIHNhbHQgPSBGaWxlU3lzdGVtOjpyZWFkT3JNYWtlU2FsdChz
YWx0UGF0aCk7CiAgICAgaWYgKCFzYWx0KQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0
dXJuIGVtcHR5U3RyaW5nKCk7CiAKICAgICBLZXkga2V5KG9yaWdpbi50b3BPcmlnaW4udG9TdHJp
bmcoKSwgb3JpZ2luLmNsaWVudE9yaWdpbi50b1N0cmluZygpLCB7IH0sIHsgfSwgKnNhbHQpOwot
ICAgIFN0cmluZyBkaXJlY3RvcnlQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KHJvb3RQYXRoLCBrZXkuaGFzaEFzU3RyaW5nKCkpOworICAgIHJldHVybiBGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocm9vdERpcmVjdG9yeSwga2V5Lmhhc2hBc1N0
cmluZygpKTsKK30KKwordWludDY0X3QgRW5naW5lOjpkaXNrVXNhZ2UoY29uc3QgU3RyaW5nJiBv
cmlnaW5EaXJlY3RvcnkpCit7CisgICAgQVNTRVJUKCFpc01haW5SdW5Mb29wKCkpOwogCi0gICAg
U3RyaW5nIHNpemVGaWxlUGF0aCA9IENhY2hlczo6Y2FjaGVzU2l6ZUZpbGVuYW1lKGRpcmVjdG9y
eVBhdGgpOworICAgIGlmIChvcmlnaW5EaXJlY3RvcnkuaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm4gMDsKKworICAgIFN0cmluZyBzaXplRmlsZVBhdGggPSBDYWNoZXM6OmNhY2hlc1NpemVGaWxl
bmFtZShvcmlnaW5EaXJlY3RvcnkpOwogICAgIGlmIChhdXRvIHJlY29yZGVkU2l6ZSA9IHJlYWRT
aXplRmlsZShzaXplRmlsZVBhdGgpKQogICAgICAgICByZXR1cm4gKnJlY29yZGVkU2l6ZTsKIAot
ICAgIHJldHVybiBnZXREaXJlY3RvcnlTaXplKGRpcmVjdG9yeVBhdGgpOworICAgIHJldHVybiBn
ZXREaXJlY3RvcnlTaXplKG9yaWdpbkRpcmVjdG9yeSk7CiB9CiAKLXZvaWQgRW5naW5lOjpyZXF1
ZXN0U3BhY2UoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIHVpbnQ2NF90IHNw
YWNlUmVxdWVzdGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VRdW90
YU1hbmFnZXI6OkRlY2lzaW9uKT4mJiBjYWxsYmFjaykKK3ZvaWQgRW5naW5lOjpyZXF1ZXN0U3Bh
Y2UoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIHVpbnQ2NF90IHNwYWNlUmVx
dWVzdGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQogewogICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICBpZiAoIW1fbmV0d29ya1Byb2Nlc3MpCi0g
ICAgICAgIGNhbGxiYWNrKFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uOjpE
ZW55KTsKKyAgICAgICAgY2FsbGJhY2soZmFsc2UpOworCisgICAgYXV0byogc2Vzc2lvbiA9IG1f
bmV0d29ya1Byb2Nlc3MtPm5ldHdvcmtTZXNzaW9uKG1fc2Vzc2lvbklEKTsKKyAgICBpZiAoIXNl
c3Npb24pCisgICAgICAgIGNhbGxiYWNrKGZhbHNlKTsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpT
dG9yYWdlUXVvdGFNYW5hZ2VyPiBzdG9yYWdlUXVvdGFNYW5hZ2VyID0gbV9uZXR3b3JrUHJvY2Vz
cy0+c3RvcmFnZVF1b3RhTWFuYWdlcihtX3Nlc3Npb25JRCwgb3JpZ2luKTsKLSAgICBpZiAoIXN0
b3JhZ2VRdW90YU1hbmFnZXIpCi0gICAgICAgIGNhbGxiYWNrKFdlYkNvcmU6OlN0b3JhZ2VRdW90
YU1hbmFnZXI6OkRlY2lzaW9uOjpEZW55KTsKKyAgICBhdXRvKiBzdG9yYWdlTWFuYWdlciA9IHNl
c3Npb24tPnN0b3JhZ2VNYW5hZ2VyKCk7CisgICAgaWYgKCFzdG9yYWdlTWFuYWdlcikKKyAgICAg
ICAgY2FsbGJhY2soZmFsc2UpOwogCi0gICAgc3RvcmFnZVF1b3RhTWFuYWdlci0+cmVxdWVzdFNw
YWNlT25NYWluVGhyZWFkKHNwYWNlUmVxdWVzdGVkLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAg
c3RvcmFnZU1hbmFnZXItPnJlcXVlc3RTcGFjZShvcmlnaW4sIHNwYWNlUmVxdWVzdGVkLCBXVEZN
b3ZlKGNhbGxiYWNrKSk7CiB9CiAKIEVuZ2luZTo6RW5naW5lKE5ldHdvcmtTZXNzaW9uJiBuZXR3
b3JrU2Vzc2lvbiwgU3RyaW5nJiYgcm9vdFBhdGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaAppbmRleCAxNDdmYmFj
ZTE2NzdhNjA4NTkxOGFiNzcyYTllMTBhMjA2YzY4ODFlLi5mZTNjMWY5MzBkYWUzOTk4Y2QxYzA0
YzM0ZGJkZGM1MzU1NWE0NzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmgKQEAgLTI5LDcgKzI5LDYgQEAKICNp
bmNsdWRlICJOZXR3b3JrQ2FjaGVEYXRhLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGEuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL0NsaWVudE9yaWdpbi5oPgotI2luY2x1ZGUgPFdlYkNvcmUvU3RvcmFn
ZVF1b3RhTWFuYWdlci5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC04NCw4ICs4Myw5
IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVRdW90YVVzZXIoTmV0d29y
a1Nlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwogCi0gICAgc3RhdGljIHVpbnQ2NF90IGRpc2tVc2FnZShjb25zdCBTdHJp
bmcmIHJvb3RQYXRoLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKLSAgICB2b2lkIHJl
cXVlc3RTcGFjZShjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCB1aW50NjRfdCBzcGFjZVJl
cXVlc3RlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5h
Z2VyOjpEZWNpc2lvbik+JiYpOworICAgIHN0YXRpYyBTdHJpbmcgc3RvcmFnZVBhdGgoY29uc3Qg
U3RyaW5nJiByb290RGlyZWN0b3J5LCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKKyAg
ICBzdGF0aWMgdWludDY0X3QgZGlza1VzYWdlKGNvbnN0IFN0cmluZyYgb3JpZ2luRGlyZWN0b3J5
KTsKKyAgICB2b2lkIHJlcXVlc3RTcGFjZShjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCB1
aW50NjRfdCBzcGFjZVJlcXVlc3RlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7
CiAKICAgICBib29sIHNob3VsZFBlcnNpc3QoKSBjb25zdCB7IHJldHVybiAhIW1faW9RdWV1ZTt9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVT
dG9yYWdlRW5naW5lQ2FjaGVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcAppbmRleCAwNGVkZWNlMWM0YmZlOWVhY2Fl
MDZhNzA3YzVkZGZmZTAwZTgxMzhlLi5jMzBjM2JlN2M1YzU1M2JmMjMyOGQ5NTFiNzc0NDQ0MTNi
MzJkNmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0Nh
Y2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwCkBAIC01MjQsMTQgKzUyNCwx
MCBAQCB2b2lkIENhY2hlczo6cmVxdWVzdFNwYWNlKHVpbnQ2NF90IHNwYWNlUmVxdWlyZWQsIFdl
YkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDb21wbAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgbV9lbmdpbmUtPnJlcXVlc3RTcGFjZShtX29yaWdpbiwgc3BhY2VSZXF1aXJlZCwgW2NhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8gZGVjaXNpb24pIG11dGFibGUgewotICAgICAg
ICBzd2l0Y2ggKGRlY2lzaW9uKSB7Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6U3RvcmFnZVF1b3Rh
TWFuYWdlcjo6RGVjaXNpb246OkRlbnk6Ci0gICAgICAgICAgICBjYWxsYmFjayhFcnJvcjo6UXVv
dGFFeGNlZWRlZCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6
U3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb246OkdyYW50OgotICAgICAgICAgICAgY2FsbGJh
Y2soeyB9KTsKLSAgICAgICAgfTsKKyAgICBtX2VuZ2luZS0+cmVxdWVzdFNwYWNlKG1fb3JpZ2lu
LCBzcGFjZVJlcXVpcmVkLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBncmFu
dGVkKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCFncmFudGVkKQorICAgICAgICAgICAgcmV0dXJu
IGNhbGxiYWNrKEVycm9yOjpRdW90YUV4Y2VlZGVkKTsKKyAgICAgICAgY2FsbGJhY2soeyB9KTsK
ICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9p
b3MvTmV0d29ya1Byb2Nlc3NJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lv
cy9OZXR3b3JrUHJvY2Vzc0lPUy5tbQppbmRleCBhODdhZDgwNWI1ZGYxNTA3ODNiNTM5MWU4ZTAz
Zjk4ZTc2NGRmM2Q1Li4yMTk2ZTllNzRkMjQ1MzFjMGRiNWIzOTQ1YWM2MDhmZTNlOThjNzRhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vz
c0lPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJv
Y2Vzc0lPUy5tbQpAQCAtMTA5LDE5ICsxMDksNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRJ
c0hvbGRpbmdMb2NrZWRGaWxlcyhib29sIGlzSG9sZGluZ0xvY2tlZEZpbGVzKQogICAgIC8vIFdl
IHN5bmNocm9ub3VzbHkgdGFrZSBhIHByb2Nlc3MgYXNzZXJ0aW9uIHdoZW4gYmVnaW5uaW5nIGEg
U1FMaXRlIHRyYW5zYWN0aW9uIHNvIHRoYXQgd2UgZG9uJ3QgZ2V0IHN1c3BlbmRlZAogICAgIC8v
IHdoaWxlIGhvbGRpbmcgYSBsb2NrZWQgZmlsZS4gV2Ugd291bGQgZ2V0IGtpbGxlZCBpZiBzdXNw
ZW5kZWQgd2hpbGUgaG9sZGluZyBsb2NrZWQgZmlsZXMuCiAgICAgbV9ob2xkaW5nTG9ja2VkRmls
ZUFzc2VydGlvbiA9IFByb2Nlc3NBc3NlcnRpb246OmNyZWF0ZShnZXRDdXJyZW50UHJvY2Vzc0lE
KCksICJOZXR3b3JrIFByb2Nlc3MgaXMgaG9sZGluZyBsb2NrZWQgZmlsZXMiX3MsIFByb2Nlc3NB
c3NlcnRpb25UeXBlOjpGaW5pc2hUYXNrSW50ZXJydXB0YWJsZSwgUHJvY2Vzc0Fzc2VydGlvbjo6
TW9kZTo6U3luYyk7Ci0gICAgbV9ob2xkaW5nTG9ja2VkRmlsZUFzc2VydGlvbi0+c2V0UHJlcGFy
ZUZvckludmFsaWRhdGlvbkhhbmRsZXIoW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlz
IH1dKCkgbXV0YWJsZSB7Ci0gICAgICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOwotICAgICAg
ICBpZiAoIXdlYWtUaGlzKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmICghbV9z
aG91bGRTdXNwZW5kSURCU2VydmVycykKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBm
b3JFYWNoTmV0d29ya1Nlc3Npb24oW10oYXV0byYgc2Vzc2lvbikgewotICAgICAgICAgICAgaWYg
KGF1dG8qIHNlcnZlciA9IHNlc3Npb24ud2ViSURCU2VydmVyKCkpCi0gICAgICAgICAgICAgICAg
c2VydmVyLT5zdXNwZW5kKCk7Ci0gICAgICAgIH0pOwotICAgIH0pOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3Rv
cmFnZS9JREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50LmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44YWY0YzY0NjQzNmI5NmUxNGU4N2IzY2UyYjYxMWRiMDQyODc5MDVmCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3Jh
Z2VDb25uZWN0aW9uVG9DbGllbnQuY3BwCkBAIC0wLDAgKzEsMTkxIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE2LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSURCU3RvcmFnZUNvbm5lY3Rpb25U
b0NsaWVudC5oIgorCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVk
ZSAiV2ViSURCQ29ubmVjdGlvblRvU2VydmVyTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJJREJS
ZXN1bHQuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0lEQlJlcXVlc3REYXRhLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9JREJSZXN1bHREYXRhLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VbmlxdWVJREJEYXRh
YmFzZUNvbm5lY3Rpb24uaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK0lEQlN0b3JhZ2VDb25u
ZWN0aW9uVG9DbGllbnQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQoSVBDOjpDb25uZWN0
aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uLCBXZWJDb3JlOjpJREJDb25uZWN0aW9uSWRlbnRpZmll
ciBpZGVudGlmaWVyKQorICAgIDogbV9jb25uZWN0aW9uKGNvbm5lY3Rpb24pCisgICAgLCBtX2lk
ZW50aWZpZXIoaWRlbnRpZmllcikKKyAgICAsIG1fY29ubmVjdGlvblRvQ2xpZW50KFdlYkNvcmU6
OklEQlNlcnZlcjo6SURCQ29ubmVjdGlvblRvQ2xpZW50OjpjcmVhdGUoKnRoaXMpKQoreworfQor
CitJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50Ojp+SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0Ns
aWVudCgpCit7CisgICAgbV9jb25uZWN0aW9uVG9DbGllbnQtPmNsZWFyRGVsZWdhdGUoKTsKK30K
KworV2ViQ29yZTo6SURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnQmIElEQlN0b3JhZ2VD
b25uZWN0aW9uVG9DbGllbnQ6OmNvbm5lY3Rpb25Ub0NsaWVudCgpCit7CisgICAgcmV0dXJuIG1f
Y29ubmVjdGlvblRvQ2xpZW50OworfQorCit0ZW1wbGF0ZTxjbGFzcyBNZXNzYWdlVHlwZT4gdm9p
ZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRHZXRSZXN1bHQoY29uc3QgV2ViQ29y
ZTo6SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBpZiAocmVzdWx0RGF0YS50eXBl
KCkgPT0gV2ViQ29yZTo6SURCUmVzdWx0VHlwZTo6RXJyb3IpIHsKKyAgICAgICAgSVBDOjpDb25u
ZWN0aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwgTWVzc2FnZVR5cGUocmVzdWx0RGF0YSksIDApOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKHJlc3VsdERhdGEudHlwZSgpID09IFdl
YkNvcmU6OklEQlJlc3VsdFR5cGU6OkdldEFsbFJlY29yZHNTdWNjZXNzICYmIHJlc3VsdERhdGEu
Z2V0QWxsUmVzdWx0KCkudHlwZSgpID09IFdlYkNvcmU6OkluZGV4ZWREQjo6R2V0QWxsVHlwZTo6
S2V5cykgeworICAgICAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQobV9jb25uZWN0aW9uLCBNZXNz
YWdlVHlwZShyZXN1bHREYXRhKSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBh
dXRvIGJsb2JGaWxlUGF0aHMgPSByZXN1bHREYXRhLnR5cGUoKSA9PSBXZWJDb3JlOjpJREJSZXN1
bHRUeXBlOjpHZXRBbGxSZWNvcmRzU3VjY2VzcyA/IHJlc3VsdERhdGEuZ2V0QWxsUmVzdWx0KCku
YWxsQmxvYkZpbGVQYXRocygpIDogcmVzdWx0RGF0YS5nZXRSZXN1bHQoKS52YWx1ZSgpLmJsb2JG
aWxlUGF0aHMoKTsKKyAgICBpZiAoYmxvYkZpbGVQYXRocy5pc0VtcHR5KCkpIHsKKyAgICAgICAg
SVBDOjpDb25uZWN0aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwgTWVzc2FnZVR5cGUocmVzdWx0RGF0
YSksIDApOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgSVBDOjpDb25uZWN0aW9uOjpz
ZW5kKG1fY29ubmVjdGlvbiwgTWVzc2FnZVR5cGUocmVzdWx0RGF0YSksIDApOworfQorCit2b2lk
IElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZERlbGV0ZURhdGFiYXNlKGNvbnN0IFdl
YkNvcmU6OklEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCit7CisgICAgSVBDOjpDb25uZWN0aW9u
OjpzZW5kKG1fY29ubmVjdGlvbiwgTWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6
RGlkRGVsZXRlRGF0YWJhc2UocmVzdWx0RGF0YSksIDApOworfQorCit2b2lkIElEQlN0b3JhZ2VD
b25uZWN0aW9uVG9DbGllbnQ6OmRpZE9wZW5EYXRhYmFzZShjb25zdCBXZWJDb3JlOjpJREJSZXN1
bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5l
Y3Rpb24sIE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZE9wZW5EYXRhYmFz
ZShyZXN1bHREYXRhKSwgMCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVu
dDo6ZGlkU3RhcnRUcmFuc2FjdGlvbihjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZp
ZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCRXJyb3ImIGVycm9y
KQoreworICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpX
ZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZFN0YXJ0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25J
ZGVudGlmaWVyLCBlcnJvciksIDApOworfQorCit2b2lkIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9D
bGllbnQ6OmRpZEFib3J0VHJhbnNhY3Rpb24oY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVu
dGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OklEQkVycm9yJiBl
cnJvcikKK3sKKyAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQobV9jb25uZWN0aW9uLCBNZXNzYWdl
czo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWRBYm9ydFRyYW5zYWN0aW9uKHRyYW5zYWN0
aW9uSWRlbnRpZmllciwgZXJyb3IpLCAwKTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlv
blRvQ2xpZW50OjpkaWRDb21taXRUcmFuc2FjdGlvbihjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJj
ZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCRXJy
b3ImIGVycm9yKQoreworICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1l
c3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZENvbW1pdFRyYW5zYWN0aW9uKHRy
YW5zYWN0aW9uSWRlbnRpZmllciwgZXJyb3IpLCAwKTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29u
bmVjdGlvblRvQ2xpZW50OjpkaWRDcmVhdGVPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJS
ZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nv
bm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZENyZWF0ZU9i
amVjdFN0b3JlKHJlc3VsdERhdGEpLCAwKTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlv
blRvQ2xpZW50OjpkaWREZWxldGVPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXN1bHRE
YXRhJiByZXN1bHREYXRhKQoreworICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rp
b24sIE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZERlbGV0ZU9iamVjdFN0
b3JlKHJlc3VsdERhdGEpLCAwKTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xp
ZW50OjpkaWRSZW5hbWVPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJiBy
ZXN1bHREYXRhKQoreworICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1l
c3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZFJlbmFtZU9iamVjdFN0b3JlKHJl
c3VsdERhdGEpLCAwKTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50Ojpk
aWRDbGVhck9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmIHJlc3VsdERh
dGEpCit7CisgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwgTWVzc2FnZXM6
OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6RGlkQ2xlYXJPYmplY3RTdG9yZShyZXN1bHREYXRh
KSwgMCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkQ3JlYXRl
SW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBJ
UEM6OkNvbm5lY3Rpb246OnNlbmQobV9jb25uZWN0aW9uLCBNZXNzYWdlczo6V2ViSURCQ29ubmVj
dGlvblRvU2VydmVyOjpEaWRDcmVhdGVJbmRleChyZXN1bHREYXRhKSwgMCk7Cit9CisKK3ZvaWQg
SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkRGVsZXRlSW5kZXgoY29uc3QgV2ViQ29y
ZTo6SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBJUEM6OkNvbm5lY3Rpb246OnNl
bmQobV9jb25uZWN0aW9uLCBNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWRE
ZWxldGVJbmRleChyZXN1bHREYXRhKSwgMCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rp
b25Ub0NsaWVudDo6ZGlkUmVuYW1lSW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYg
cmVzdWx0RGF0YSkKK3sKKyAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQobV9jb25uZWN0aW9uLCBN
ZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWRSZW5hbWVJbmRleChyZXN1bHRE
YXRhKSwgMCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkUHV0
T3JBZGQoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBJ
UEM6OkNvbm5lY3Rpb246OnNlbmQobV9jb25uZWN0aW9uLCBNZXNzYWdlczo6V2ViSURCQ29ubmVj
dGlvblRvU2VydmVyOjpEaWRQdXRPckFkZChyZXN1bHREYXRhKSwgMCk7Cit9CisKK3ZvaWQgSURC
U3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkR2V0UmVjb3JkKGNvbnN0IFdlYkNvcmU6OklE
QlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCit7CisgICAgZGlkR2V0UmVzdWx0PE1lc3NhZ2VzOjpX
ZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZEdldFJlY29yZD4ocmVzdWx0RGF0YSk7Cit9CisK
K3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkR2V0QWxsUmVjb3Jkcyhjb25z
dCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIGRpZEdldFJlc3Vs
dDxNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWRHZXRBbGxSZWNvcmRzPihy
ZXN1bHREYXRhKTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRH
ZXRDb3VudChjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAg
IElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJJREJDb25u
ZWN0aW9uVG9TZXJ2ZXI6OkRpZEdldENvdW50KHJlc3VsdERhdGEpLCAwKTsKK30KKwordm9pZCBJ
REJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWREZWxldGVSZWNvcmQoY29uc3QgV2ViQ29y
ZTo6SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBJUEM6OkNvbm5lY3Rpb246OnNl
bmQobV9jb25uZWN0aW9uLCBNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWRE
ZWxldGVSZWNvcmQocmVzdWx0RGF0YSksIDApOworfQorCit2b2lkIElEQlN0b3JhZ2VDb25uZWN0
aW9uVG9DbGllbnQ6OmRpZE9wZW5DdXJzb3IoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYg
cmVzdWx0RGF0YSkKK3sKKyAgICBkaWRHZXRSZXN1bHQ8TWVzc2FnZXM6OldlYklEQkNvbm5lY3Rp
b25Ub1NlcnZlcjo6RGlkT3BlbkN1cnNvcj4ocmVzdWx0RGF0YSk7Cit9CisKK3ZvaWQgSURCU3Rv
cmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkSXRlcmF0ZUN1cnNvcihjb25zdCBXZWJDb3JlOjpJ
REJSZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIGRpZEdldFJlc3VsdDxNZXNzYWdlczo6
V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWRJdGVyYXRlQ3Vyc29yPihyZXN1bHREYXRhKTsK
K30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRHZXRBbGxEYXRhYmFz
ZU5hbWVzQW5kVmVyc2lvbnMoY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiBy
ZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OklEQkRhdGFiYXNlTmFtZUFu
ZFZlcnNpb24+JiBkYXRhYmFzZXMpCit7CisgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKG1fY29u
bmVjdGlvbiwgTWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6RGlkR2V0QWxsRGF0
YWJhc2VOYW1lc0FuZFZlcnNpb25zKHJlcXVlc3RJZGVudGlmaWVyLCBkYXRhYmFzZXMpLCAwKTsK
K30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpmaXJlVmVyc2lvbkNoYW5n
ZUV2ZW50KFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiBj
b25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJ
ZGVudGlmaWVyLCB1aW50NjRfdCByZXF1ZXN0ZWRWZXJzaW9uKQoreworICAgIElQQzo6Q29ubmVj
dGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2
ZXI6OkZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQoY29ubmVjdGlvbi5pZGVudGlmaWVyKCksIHJlcXVl
c3RJZGVudGlmaWVyLCByZXF1ZXN0ZWRWZXJzaW9uKSwgMCk7Cit9CisKK3ZvaWQgSURCU3RvcmFn
ZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkQ2xvc2VGcm9tU2VydmVyKFdlYkNvcmU6OklEQlNlcnZl
cjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3Jl
OjpJREJFcnJvciYgZXJyb3IpCit7CisgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKG1fY29ubmVj
dGlvbiwgTWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6RGlkQ2xvc2VGcm9tU2Vy
dmVyKGNvbm5lY3Rpb24uaWRlbnRpZmllcigpLCBlcnJvciksIDApOworfQorCit2b2lkIElEQlN0
b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6Om5vdGlmeU9wZW5EQlJlcXVlc3RCbG9ja2VkKGNvbnN0
IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2
NF90IG9sZFZlcnNpb24sIHVpbnQ2NF90IG5ld1ZlcnNpb24pCit7CisgICAgSVBDOjpDb25uZWN0
aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwgTWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZl
cjo6Tm90aWZ5T3BlbkRCUmVxdWVzdEJsb2NrZWQocmVxdWVzdElkZW50aWZpZXIsIG9sZFZlcnNp
b24sIG5ld1ZlcnNpb24pLCAwKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZUNvbm5l
Y3Rpb25Ub0NsaWVudC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lE
QlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MGJhMDFiMDIxMjBmMjFk
YjYxMzkxZjNhODc0NGQyMmI1ZmY3MGU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQuaApA
QCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0lEQkNvbm5lY3Rpb25Ub0NsaWVu
dC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSURCQ29ubmVjdGlvblRvQ2xpZW50RGVsZWdhdGUuaD4K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGll
bnQgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6SURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGll
bnREZWxlZ2F0ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAg
SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudChJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBX
ZWJDb3JlOjpJREJDb25uZWN0aW9uSWRlbnRpZmllcik7CisgICAgfklEQlN0b3JhZ2VDb25uZWN0
aW9uVG9DbGllbnQoKTsKKworICAgIFdlYkNvcmU6OklEQkNvbm5lY3Rpb25JZGVudGlmaWVyIGlk
ZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKyAgICBJUEM6
OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGlwY0Nvbm5lY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2Nv
bm5lY3Rpb247IH0KKyAgICBXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub0NsaWVu
dCYgY29ubmVjdGlvblRvQ2xpZW50KCk7CisKK3ByaXZhdGU6CisgICAgdGVtcGxhdGU8Y2xhc3Mg
TWVzc2FnZVR5cGU+IHZvaWQgZGlkR2V0UmVzdWx0KGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERh
dGEmKTsKKworICAgIC8vIElEQkNvbm5lY3Rpb25Ub0NsaWVudERlbGVnYXRlCisgICAgdm9pZCBk
aWREZWxldGVEYXRhYmFzZShjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJikgZmluYWw7Cisg
ICAgdm9pZCBkaWRPcGVuRGF0YWJhc2UoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZp
bmFsOworICAgIHZvaWQgZGlkQWJvcnRUcmFuc2FjdGlvbihjb25zdCBXZWJDb3JlOjpJREJSZXNv
dXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURC
RXJyb3ImKSBmaW5hbDsKKyAgICB2b2lkIGRpZENvbW1pdFRyYW5zYWN0aW9uKGNvbnN0IFdlYkNv
cmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBX
ZWJDb3JlOjpJREJFcnJvciYpIGZpbmFsOworICAgIHZvaWQgZGlkU3RhcnRUcmFuc2FjdGlvbihj
b25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmll
ciwgY29uc3QgV2ViQ29yZTo6SURCRXJyb3ImKSBmaW5hbDsKKyAgICB2b2lkIGRpZENyZWF0ZU9i
amVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBmaW5hbDsKKyAgICB2b2lk
IGRpZERlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBmaW5h
bDsKKyAgICB2b2lkIGRpZFJlbmFtZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlc3Vs
dERhdGEmKSBmaW5hbDsKKyAgICB2b2lkIGRpZENsZWFyT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29y
ZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkQ3JlYXRlSW5kZXgoY29uc3Qg
V2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkRGVsZXRlSW5kZXgo
Y29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVuYW1l
SW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlk
UHV0T3JBZGQoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQg
ZGlkR2V0UmVjb3JkKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBmaW5hbDsKKyAgICB2
b2lkIGRpZEdldEFsbFJlY29yZHMoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFs
OworICAgIHZvaWQgZGlkR2V0Q291bnQoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZp
bmFsOworICAgIHZvaWQgZGlkRGVsZXRlUmVjb3JkKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERh
dGEmKSBmaW5hbDsKKyAgICB2b2lkIGRpZE9wZW5DdXJzb3IoY29uc3QgV2ViQ29yZTo6SURCUmVz
dWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkSXRlcmF0ZUN1cnNvcihjb25zdCBXZWJDb3Jl
OjpJREJSZXN1bHREYXRhJikgZmluYWw7CisgICAgdm9pZCBkaWRHZXRBbGxEYXRhYmFzZU5hbWVz
QW5kVmVyc2lvbnMoY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiwgY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OklEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24+JikgZmluYWw7CisgICAg
dm9pZCBub3RpZnlPcGVuREJSZXF1ZXN0QmxvY2tlZChjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJj
ZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBvbGRWZXJzaW9uLCB1aW50
NjRfdCBuZXdWZXJzaW9uKSBmaW5hbDsKKyAgICB2b2lkIGZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQo
V2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mLCBjb25zdCBX
ZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRf
dCByZXF1ZXN0ZWRWZXJzaW9uKSBmaW5hbDsKKyAgICB2b2lkIGRpZENsb3NlRnJvbVNlcnZlcihX
ZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYsIGNvbnN0IFdl
YkNvcmU6OklEQkVycm9yJikgZmluYWw7CisKKyAgICBJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlE
IG1fY29ubmVjdGlvbjsKKyAgICBXZWJDb3JlOjpJREJDb25uZWN0aW9uSWRlbnRpZmllciBtX2lk
ZW50aWZpZXI7CisgICAgUmVmPFdlYkNvcmU6OklEQlNlcnZlcjo6SURCQ29ubmVjdGlvblRvQ2xp
ZW50PiBtX2Nvbm5lY3Rpb25Ub0NsaWVudDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3Jh
Z2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJT
dG9yYWdlTWFuYWdlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjk5MDQ0YWFhMGMwZWFmYjNiZWZjZmJiMmIx
ZWJmMTNkZWI1OTY4NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlTWFuYWdlci5jcHAKQEAgLTAsMCArMSwyNTMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSURCU3RvcmFnZU1hbmFn
ZXIuaCIKKworI2luY2x1ZGUgIklEQlN0b3JhZ2VSZWdpc3RyeS5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvTWVtb3J5SURCQmFja2luZ1N0b3JlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVGaWxl
U3lzdGVtLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVJREJCYWNraW5nU3RvcmUuaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK3N0YXRpYyB2b2lkIG1pZ3JhdGVPcmlnaW5EYXRhKGNvbnN0
IFN0cmluZyYgb2xkT3JpZ2luRGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIG5ld09yaWdpbkRpcmVj
dG9yeSkKK3sKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMob2xkT3JpZ2luRGlyZWN0
b3J5KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBmaWxlTmFtZXMgPSBGaWxlU3lzdGVt
OjpsaXN0RGlyZWN0b3J5KG9sZE9yaWdpbkRpcmVjdG9yeSk7CisgICAgaWYgKCFmaWxlTmFtZXMu
aXNFbXB0eSgpKQorICAgICAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMobmV3T3Jp
Z2luRGlyZWN0b3J5KTsKKworICAgIGZvciAoYXV0byYgbmFtZSA6IGZpbGVOYW1lcykgeworICAg
ICAgICBTdHJpbmcgY2hpbGRQYXRoID0gRmlsZVN5c3RlbTo6cmVhbFBhdGgoRmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG9sZE9yaWdpbkRpcmVjdG9yeSwgbmFtZSkpOworICAg
ICAgICBTdHJpbmcgbmV3TmFtZSA9IFdlYkNvcmU6OlNRTGl0ZUZpbGVTeXN0ZW06OmNvbXB1dGVI
YXNoRm9yRmlsZU5hbWUoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6
OmRlY29kZURhdGFiYXNlTmFtZShuYW1lKSk7CisgICAgICAgIGF1dG8gbmV3Q2hpbGRQYXRoID0g
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG5ld09yaWdpbkRpcmVjdG9yeSwg
bmV3TmFtZSk7CisgICAgICAgIEZpbGVTeXN0ZW06Om1vdmVGaWxlKGNoaWxkUGF0aCwgbmV3Q2hp
bGRQYXRoKTsKKyAgICB9CisKKyAgICBGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeShv
bGRPcmlnaW5EaXJlY3RvcnkpOworfQorCitTdHJpbmcgSURCU3RvcmFnZU1hbmFnZXI6OmlkYlN0
b3JhZ2VPcmlnaW5EaXJlY3RvcnkoY29uc3QgU3RyaW5nJiByb290RGlyZWN0b3J5LCBjb25zdCBX
ZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbikKK3sKKyAgICBpZiAocm9vdERpcmVjdG9yeS5p
c0VtcHR5KCkpCisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOworCisgICAgU3RyaW5nIG9y
aWdpbkRpcmVjdG9yeSA9IFdlYkNvcmU6OklEQkRhdGFiYXNlSWRlbnRpZmllcjo6ZGF0YWJhc2VE
aXJlY3RvcnlSZWxhdGl2ZVRvUm9vdChvcmlnaW4udG9wT3JpZ2luLCBvcmlnaW4uY2xpZW50T3Jp
Z2luLCByb290RGlyZWN0b3J5LCAidjEiKTsKKyAgICBTdHJpbmcgb2xkT3JpZ2luRGlyZWN0b3J5
ID0gV2ViQ29yZTo6SURCRGF0YWJhc2VJZGVudGlmaWVyOjpkYXRhYmFzZURpcmVjdG9yeVJlbGF0
aXZlVG9Sb290KG9yaWdpbi50b3BPcmlnaW4sIG9yaWdpbi5jbGllbnRPcmlnaW4sIHJvb3REaXJl
Y3RvcnksICJ2MCIpOworICAgIG1pZ3JhdGVPcmlnaW5EYXRhKG9sZE9yaWdpbkRpcmVjdG9yeSwg
b3JpZ2luRGlyZWN0b3J5KTsKKworICAgIHJldHVybiBvcmlnaW5EaXJlY3Rvcnk7Cit9CisKK3Vp
bnQ2NF90IElEQlN0b3JhZ2VNYW5hZ2VyOjppZGJTdG9yYWdlU2l6ZShjb25zdCBTdHJpbmcmIG9y
aWdpbkRpcmVjdG9yeSkKK3sKKyAgICBpZiAob3JpZ2luRGlyZWN0b3J5LmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OmRhdGFiYXNlc1NpemVGb3JEaXJlY3Rvcnkob3JpZ2luRGlyZWN0b3J5
KTsKK30KKworc3RhdGljIHZvaWQgZ2V0T3JpZ2luc0ZvclZlcnNpb24oY29uc3QgU3RyaW5nJiB2
ZXJzaW9uUGF0aCwgSGFzaFNldDxXZWJDb3JlOjpDbGllbnRPcmlnaW4+JiBvcmlnaW5zKQorewor
ICAgIGZvciAoYXV0byYgdG9wRGF0YWJhc2VJZGVudGlmaWVyIDogRmlsZVN5c3RlbTo6bGlzdERp
cmVjdG9yeSh2ZXJzaW9uUGF0aCkpIHsKKyAgICAgICAgYXV0byB0b3BPcmlnaW4gPSBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZpZXIodG9wRGF0YWJhc2VJ
ZGVudGlmaWVyKTsKKyAgICAgICAgaWYgKCF0b3BPcmlnaW4pCisgICAgICAgICAgICBjb250aW51
ZTsKKworICAgICAgICBhdXRvIHRvcE9yaWdpbkRpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudCh2ZXJzaW9uUGF0aCwgdG9wRGF0YWJhc2VJZGVudGlmaWVyKTsK
KyAgICAgICAgZm9yIChhdXRvJiBkYXRhYmFzZUlkZW50aWZpZXIgOiBGaWxlU3lzdGVtOjpsaXN0
RGlyZWN0b3J5KHRvcE9yaWdpbkRpcmVjdG9yeSkpIHsKKyAgICAgICAgICAgIGF1dG8gb3JpZ2lu
RGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRvcE9yaWdp
bkRpcmVjdG9yeSwgZGF0YWJhc2VJZGVudGlmaWVyKTsKKyAgICAgICAgICAgIGlmIChGaWxlU3lz
dGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeShvcmlnaW5EaXJlY3RvcnkpKQorICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBhdXRvIGNsaWVudE9yaWdpbiA9IFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmllcihkYXRhYmFzZUlkZW50
aWZpZXIpOworICAgICAgICAgICAgLy8gVGhpcyBpcyBub3Qgb3JpZ2luIGRpcmVjdG9yeSwgYnV0
IG1heSBiZSBkYXRhYmFzZSBkaXJlY3RvcnkuCisgICAgICAgICAgICBpZiAoIWNsaWVudE9yaWdp
bikgeworICAgICAgICAgICAgICAgIG9yaWdpbnMuYWRkKFdlYkNvcmU6OkNsaWVudE9yaWdpbiB7
ICp0b3BPcmlnaW4sICp0b3BPcmlnaW4gfSk7CisgICAgICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG9yaWdpbnMuYWRkKFdlYkNvcmU6OkNsaWVudE9y
aWdpbiB7ICp0b3BPcmlnaW4sICpjbGllbnRPcmlnaW4gfSk7CisgICAgICAgIH0KKworICAgICAg
ICAvLyBXZSBtYXkgaGF2ZSBkZWxldGVkIGVtcHR5IGNoaWxkcmVuIGRpcmVjdG9yaWVzIGFib3Zl
LCB3aGljaCBtYWtlIHRoaXMgZGlyZWN0b3J5IGVtcHR5LgorICAgICAgICBGaWxlU3lzdGVtOjpk
ZWxldGVFbXB0eURpcmVjdG9yeSh0b3BPcmlnaW5EaXJlY3RvcnkpOworICAgIH0KK30KKworSGFz
aFNldDxXZWJDb3JlOjpDbGllbnRPcmlnaW4+IElEQlN0b3JhZ2VNYW5hZ2VyOjpvcmlnaW5zT2ZJ
REJTdG9yYWdlRGF0YShjb25zdCBTdHJpbmcmIHJvb3REaXJlY3RvcnkpCit7CisgICAgSGFzaFNl
dDxXZWJDb3JlOjpDbGllbnRPcmlnaW4+IG9yaWdpbnM7CisgICAgaWYgKHJvb3REaXJlY3Rvcnku
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gb3JpZ2luczsKKworICAgIGdldE9yaWdpbnNGb3JW
ZXJzaW9uKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyb290RGlyZWN0b3J5
LCAidjAiKSwgb3JpZ2lucyk7CisgICAgZ2V0T3JpZ2luc0ZvclZlcnNpb24oRmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJvb3REaXJlY3RvcnksICJ2MSIpLCBvcmlnaW5zKTsK
KworICAgIHJldHVybiBvcmlnaW5zOworfQorCitJREJTdG9yYWdlTWFuYWdlcjo6SURCU3RvcmFn
ZU1hbmFnZXIoY29uc3QgU3RyaW5nJiBwYXRoLCBJREJTdG9yYWdlUmVnaXN0cnkmIHJlZ2lzdHJ5
LCBRdW90YUNoZWNrRnVuY3Rpb24mJiBxdW90YUNoZWNrRnVuY3Rpb24pCisgICAgOiBtX3BhdGgo
cGF0aCkKKyAgICAsIG1fcmVnaXN0cnkocmVnaXN0cnkpCisgICAgLCBtX3F1b3RhQ2hlY2tGdW5j
dGlvbihXVEZNb3ZlKHF1b3RhQ2hlY2tGdW5jdGlvbikpCit7Cit9CisKK2Jvb2wgSURCU3RvcmFn
ZU1hbmFnZXI6OmlzQWN0aXZlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIW1fZGF0YWJhc2VzLmlz
RW1wdHkoKTsKK30KKworYm9vbCBJREJTdG9yYWdlTWFuYWdlcjo6aGFzRGF0YUluTWVtb3J5KCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gV1RGOjphbnlPZihtX2RhdGFiYXNlcy52YWx1ZXMoKSwgWyZd
IChhdXRvJiBkYXRhYmFzZSkgeworICAgICAgICByZXR1cm4gZGF0YWJhc2UtPmhhc0RhdGFJbk1l
bW9yeSgpOworICAgIH0pOworfQorCit2b2lkIElEQlN0b3JhZ2VNYW5hZ2VyOjpjbG9zZURhdGFi
YXNlc0ZvckRlbGV0aW9uKCkKK3sKKyAgICBmb3IgKGF1dG8mIGRhdGFiYXNlIDogbV9kYXRhYmFz
ZXMudmFsdWVzKCkpCisgICAgICAgIGRhdGFiYXNlLT5pbW1lZGlhdGVDbG9zZSgpOworCisgICAg
bV9kYXRhYmFzZXMuY2xlYXIoKTsKK30KKwordm9pZCBJREJTdG9yYWdlTWFuYWdlcjo6c3RvcERh
dGFiYXNlQWN0aXZpdGllc0ZvclN1c3BlbmQoKQoreworICAgIGlmIChtX3BhdGguaXNFbXB0eSgp
KQorICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKGF1dG8mIGRhdGFiYXNlIDogbV9kYXRhYmFz
ZXMudmFsdWVzKCkpIHsKKyAgICAgICAgLy8gT25seSBzdG9wIGRhdGFiYXNlcyB3aXRoIG5vbi1l
cGhlbWVyYWwgYmFja2luZyBzdG9yZSB0aGF0IGNhbiBob2xkIGRhdGFiYXNlIGZpbGUgbG9jay4K
KyAgICAgICAgaWYgKCFkYXRhYmFzZS0+aWRlbnRpZmllcigpLmlzVHJhbnNpZW50KCkpCisgICAg
ICAgICAgICBkYXRhYmFzZS0+YWJvcnRBY3RpdmVUcmFuc2FjdGlvbnMoKTsKKyAgICB9Cit9CisK
K1dlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2UmIElEQlN0b3JhZ2VNYW5hZ2Vy
OjpnZXRPckNyZWF0ZVVuaXF1ZUlEQkRhdGFiYXNlKGNvbnN0IFdlYkNvcmU6OklEQkRhdGFiYXNl
SWRlbnRpZmllciYgaWRlbnRpZmllcikKK3sKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1fZGF0YWJh
c2VzLmFkZChpZGVudGlmaWVyLCBudWxscHRyKTsKKyAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50
cnkpCisgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPFdlYkNv
cmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U+KCp0aGlzLCBpZGVudGlmaWVyKTsKKwor
ICAgIHJldHVybiAqYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKK30KKwordm9pZCBJREJTdG9y
YWdlTWFuYWdlcjo6b3BlbkRhdGFiYXNlKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCQ29ubmVjdGlv
blRvQ2xpZW50JiBjb25uZWN0aW9uVG9DbGllbnQsIGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3RE
YXRhJiByZXF1ZXN0RGF0YSkKK3sKKyAgICBhdXRvJiBkYXRhYmFzZSA9IGdldE9yQ3JlYXRlVW5p
cXVlSURCRGF0YWJhc2UocmVxdWVzdERhdGEuZGF0YWJhc2VJZGVudGlmaWVyKCkpOworICAgIGRh
dGFiYXNlLm9wZW5EYXRhYmFzZUNvbm5lY3Rpb24oY29ubmVjdGlvblRvQ2xpZW50LCByZXF1ZXN0
RGF0YSk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZU1hbmFnZXI6OmRlbGV0ZURhdGFiYXNlKFdlYkNv
cmU6OklEQlNlcnZlcjo6SURCQ29ubmVjdGlvblRvQ2xpZW50JiBjb25uZWN0aW9uVG9DbGllbnQs
IGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkKK3sKKyAgICBhdXRv
JiBkYXRhYmFzZSA9IGdldE9yQ3JlYXRlVW5pcXVlSURCRGF0YWJhc2UocmVxdWVzdERhdGEuZGF0
YWJhc2VJZGVudGlmaWVyKCkpOworICAgIGRhdGFiYXNlLmhhbmRsZURlbGV0ZShjb25uZWN0aW9u
VG9DbGllbnQsIHJlcXVlc3REYXRhKTsKKworICAgIC8vIFRoaXMgZGF0YWJhc2UgaXMgY3JlYXRl
ZCBmb3IgZGVsZXRpb24uCisgICAgaWYgKGRhdGFiYXNlLnRyeUNsb3NlKCkpCisgICAgICAgIG1f
ZGF0YWJhc2VzLnJlbW92ZShkYXRhYmFzZS5pZGVudGlmaWVyKCkpOworfQorCitWZWN0b3I8V2Vi
Q29yZTo6SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbj4gSURCU3RvcmFnZU1hbmFnZXI6OmdldEFs
bERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucygpCit7CisgICAgVmVjdG9yPFdlYkNvcmU6OklEQkRh
dGFiYXNlTmFtZUFuZFZlcnNpb24+IHJlc3VsdDsKKyAgICBIYXNoU2V0PFN0cmluZz4gdmlzaXRl
ZERhdGFiYXNlUGF0aHM7CisgICAgZm9yIChhdXRvJiBkYXRhYmFzZSA6IG1fZGF0YWJhc2VzLnZh
bHVlcygpKSB7CisgICAgICAgIGF1dG8gcGF0aCA9IGRhdGFiYXNlLT5maWxlUGF0aCgpOworICAg
ICAgICBpZiAoIXBhdGguaXNFbXB0eSgpKQorICAgICAgICAgICAgdmlzaXRlZERhdGFiYXNlUGF0
aHMuYWRkKHBhdGgpOworCisgICAgICAgIGlmIChhdXRvIG5hbWVBbmRWZXJzaW9uID0gZGF0YWJh
c2UtPm5hbWVBbmRWZXJzaW9uKCkpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKFdURk1vdmUo
Km5hbWVBbmRWZXJzaW9uKSk7CisgICAgfQorCisgICAgYXV0byBkYXRhYmFzZUlkZW50aWZpZXJz
ID0gRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShtX3BhdGgpOworICAgIGZvciAoYXV0byBpZGVu
dGlmaWVyIDogZGF0YWJhc2VJZGVudGlmaWVycykgeworICAgICAgICBhdXRvIGRhdGFiYXNlRGly
ZWN0b3J5ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fcGF0aCwgaWRl
bnRpZmllcik7CisgICAgICAgIGF1dG8gZGF0YWJhc2VQYXRoID0gV2ViQ29yZTo6SURCU2VydmVy
OjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmZ1bGxEYXRhYmFzZVBhdGhGb3JEaXJlY3RvcnkoZGF0
YWJhc2VEaXJlY3RvcnkpOworICAgICAgICBpZiAodmlzaXRlZERhdGFiYXNlUGF0aHMuY29udGFp
bnMoZGF0YWJhc2VQYXRoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmIChh
dXRvIG5hbWVBbmRWZXJzaW9uID0gV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5n
U3RvcmU6OmRhdGFiYXNlTmFtZUFuZFZlcnNpb25Gcm9tRmlsZShkYXRhYmFzZVBhdGgpKQorICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZChXVEZNb3ZlKCpuYW1lQW5kVmVyc2lvbikpOworICAgIH0K
KworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgSURCU3RvcmFnZU1hbmFnZXI6Om9wZW5E
QlJlcXVlc3RDYW5jZWxsZWQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3RE
YXRhKQoreworICAgIGF1dG8qIGRhdGFiYXNlID0gbV9kYXRhYmFzZXMuZ2V0KHJlcXVlc3REYXRh
LmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICBpZiAoIWRhdGFiYXNlKQorICAgICAgICByZXR1
cm47CisKKyAgICBkYXRhYmFzZS0+b3BlbkRCUmVxdWVzdENhbmNlbGxlZChyZXF1ZXN0RGF0YS5y
ZXF1ZXN0SWRlbnRpZmllcigpKTsKKworICAgIC8vIERhdGFiYXNlIGJlY29tZXMgaWRsZSBhZnRl
ciByZXF1ZXN0IGlzIGNhbmNlbGxlZC4KKyAgICBpZiAoZGF0YWJhc2UtPnRyeUNsb3NlKCkpCisg
ICAgICAgIG1fZGF0YWJhc2VzLnJlbW92ZShkYXRhYmFzZS0+aWRlbnRpZmllcigpKTsKK30KKwor
dm9pZCBJREJTdG9yYWdlTWFuYWdlcjo6cmVnaXN0ZXJDb25uZWN0aW9uKFdlYkNvcmU6OklEQlNl
cnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiBjb25uZWN0aW9uKQoreworICAgIG1f
cmVnaXN0cnkucmVnaXN0ZXJDb25uZWN0aW9uKGNvbm5lY3Rpb24pOworfQorCit2b2lkIElEQlN0
b3JhZ2VNYW5hZ2VyOjp1bnJlZ2lzdGVyQ29ubmVjdGlvbihXZWJDb3JlOjpJREJTZXJ2ZXI6OlVu
aXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYgY29ubmVjdGlvbikKK3sKKyAgICBtX3JlZ2lzdHJ5
LnVucmVnaXN0ZXJDb25uZWN0aW9uKGNvbm5lY3Rpb24pOworfQorCit2b2lkIElEQlN0b3JhZ2VN
YW5hZ2VyOjpyZWdpc3RlclRyYW5zYWN0aW9uKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURC
RGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCit7CisgICAgbV9yZWdpc3RyeS5yZWdp
c3RlclRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKTsKK30KKwordm9pZCBJREJTdG9yYWdlTWFuYWdl
cjo6dW5yZWdpc3RlclRyYW5zYWN0aW9uKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0
YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCit7CisgICAgbV9yZWdpc3RyeS51bnJlZ2lz
dGVyVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6SURCU2VydmVyOjpJREJCYWNraW5nU3RvcmU+IElEQlN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVC
YWNraW5nU3RvcmUoY29uc3QgV2ViQ29yZTo6SURCRGF0YWJhc2VJZGVudGlmaWVyJiBpZGVudGlm
aWVyKQoreworICAgIGlmIChtX3BhdGguaXNFbXB0eSgpIHx8IGlkZW50aWZpZXIuaXNUcmFuc2ll
bnQoKSkKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViQ29yZTo6SURCU2VydmVyOjpNZW1v
cnlJREJCYWNraW5nU3RvcmU+KGlkZW50aWZpZXIpOworCisgICAgYXV0byBuYW1lID0gV2ViQ29y
ZTo6U1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0ZUhhc2hGb3JGaWxlTmFtZShpZGVudGlmaWVyLmRh
dGFiYXNlTmFtZSgpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJDb3JlOjpJREJTZXJ2ZXI6
OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZT4oaWRlbnRpZmllciwgRmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KG1fcGF0aCwgbmFtZSkpOworfQorCit2b2lkIElEQlN0b3JhZ2VNYW5h
Z2VyOjpyZXF1ZXN0U3BhY2UoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgdWludDY0X3Qg
c2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3sKKyAgICBtX3F1b3RhQ2hlY2tGdW5jdGlvbihzaXplLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VNYW5hZ2VyLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZU1hbmFnZXIuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mNWJhNTRmYzM5ODlhYWFkZWFjMzBlMDI1NGI4NmMyNzdjODVkNjgyCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VN
YW5hZ2VyLmgKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSA8V2ViQ29yZS9VbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworbmFtZXNwYWNlIElEQlNlcnZlciB7CitjbGFzcyBJREJCYWNraW5nU3RvcmU7
CitjbGFzcyBJREJDb25uZWN0aW9uVG9DbGllbnQ7CitjbGFzcyBVbmlxdWVJREJEYXRhYmFzZTsK
K2NsYXNzIFVuaXF1ZUlEQlRyYW5zYWN0aW9uOworfQorCitzdHJ1Y3QgSURCRGF0YWJhc2VOYW1l
QW5kVmVyc2lvbjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIElEQlN0b3JhZ2VS
ZWdpc3RyeTsKKworY2xhc3MgSURCU3RvcmFnZU1hbmFnZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29y
ZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIgeworcHVibGljOgorICAgIHN0
YXRpYyBTdHJpbmcgaWRiU3RvcmFnZU9yaWdpbkRpcmVjdG9yeShjb25zdCBTdHJpbmcmIHJvb3RE
aXJlY3RvcnksIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYpOworICAgIHN0YXRpYyB1aW50
NjRfdCBpZGJTdG9yYWdlU2l6ZShjb25zdCBTdHJpbmcmIG9yaWdpbkRpcmVjdG9yeSk7CisgICAg
c3RhdGljIEhhc2hTZXQ8V2ViQ29yZTo6Q2xpZW50T3JpZ2luPiBvcmlnaW5zT2ZJREJTdG9yYWdl
RGF0YShjb25zdCBTdHJpbmcmIHJvb3REaXJlY3RvcnkpOworCisgICAgdXNpbmcgUXVvdGFDaGVj
a0Z1bmN0aW9uID0gRnVuY3Rpb248dm9pZCh1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik+OworICAgIElEQlN0b3JhZ2VNYW5hZ2VyKGNvbnN0
IFN0cmluZyYgcGF0aCwgSURCU3RvcmFnZVJlZ2lzdHJ5JiwgUXVvdGFDaGVja0Z1bmN0aW9uJiYp
OworICAgIGJvb2wgaXNBY3RpdmUoKSBjb25zdDsKKyAgICBib29sIGhhc0RhdGFJbk1lbW9yeSgp
IGNvbnN0OworICAgIHZvaWQgY2xvc2VEYXRhYmFzZXNGb3JEZWxldGlvbigpOworICAgIHZvaWQg
c3RvcERhdGFiYXNlQWN0aXZpdGllc0ZvclN1c3BlbmQoKTsKKworICAgIHZvaWQgb3BlbkRhdGFi
YXNlKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCQ29ubmVjdGlvblRvQ2xpZW50JiwgY29uc3QgV2Vi
Q29yZTo6SURCUmVxdWVzdERhdGEmKTsKKyAgICB2b2lkIG9wZW5EQlJlcXVlc3RDYW5jZWxsZWQo
Y29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmKTsKKyAgICB2b2lkIGRlbGV0ZURhdGFiYXNl
KFdlYkNvcmU6OklEQlNlcnZlcjo6SURCQ29ubmVjdGlvblRvQ2xpZW50JiwgY29uc3QgV2ViQ29y
ZTo6SURCUmVxdWVzdERhdGEmKTsKKyAgICBWZWN0b3I8V2ViQ29yZTo6SURCRGF0YWJhc2VOYW1l
QW5kVmVyc2lvbj4gZ2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKCk7CisKK3ByaXZhdGU6
CisgICAgV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZSYgZ2V0T3JDcmVhdGVV
bmlxdWVJREJEYXRhYmFzZShjb25zdCBXZWJDb3JlOjpJREJEYXRhYmFzZUlkZW50aWZpZXImKTsK
KworICAgIC8vIFdlYkNvcmU6OlVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlcgorICAgIHZvaWQgcmVn
aXN0ZXJDb25uZWN0aW9uKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25u
ZWN0aW9uJikgZmluYWw7CisgICAgdm9pZCB1bnJlZ2lzdGVyQ29ubmVjdGlvbihXZWJDb3JlOjpJ
REJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYpIGZpbmFsOworICAgIHZvaWQg
cmVnaXN0ZXJUcmFuc2FjdGlvbihXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNl
VHJhbnNhY3Rpb24mKSBmaW5hbDsKKyAgICB2b2lkIHVucmVnaXN0ZXJUcmFuc2FjdGlvbihXZWJD
b3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mKSBmaW5hbDsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SURCU2VydmVyOjpJREJCYWNraW5nU3RvcmU+IGNy
ZWF0ZUJhY2tpbmdTdG9yZShjb25zdCBXZWJDb3JlOjpJREJEYXRhYmFzZUlkZW50aWZpZXImKSBm
aW5hbDsKKyAgICB2b2lkIHJlcXVlc3RTcGFjZShjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4m
LCB1aW50NjRfdCBzaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsK
KworICAgIFN0cmluZyBtX3BhdGg7CisgICAgSURCU3RvcmFnZVJlZ2lzdHJ5JiBtX3JlZ2lzdHJ5
OworICAgIFF1b3RhQ2hlY2tGdW5jdGlvbiBtX3F1b3RhQ2hlY2tGdW5jdGlvbjsKKyAgICBIYXNo
TWFwPFdlYkNvcmU6OklEQkRhdGFiYXNlSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFdlYkNv
cmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U+PiBtX2RhdGFiYXNlczsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZVJlZ2lzdHJ5LmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNjNh
YjVlMjU1MTZlZTYwZjVmNjQwZjU1MWUxZjliYTFjOWVhNjFhCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VSZWdpc3RyeS5j
cHAKQEAgLTAsMCArMSwxMDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiSURCU3RvcmFnZVJlZ2lzdHJ5LmgiCisKKyNpbmNsdWRlICJJREJTdG9yYWdlQ29u
bmVjdGlvblRvQ2xpZW50LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9VbmlxdWVJREJEYXRhYmFzZUNv
bm5lY3Rpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rp
b24uaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK0lEQlN0b3JhZ2VSZWdpc3RyeTo6SURCU3Rv
cmFnZVJlZ2lzdHJ5KCkgPSBkZWZhdWx0OworCitXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQkNvbm5l
Y3Rpb25Ub0NsaWVudCYgSURCU3RvcmFnZVJlZ2lzdHJ5OjplbnN1cmVDb25uZWN0aW9uVG9DbGll
bnQoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uLCBXZWJDb3JlOjpJREJDb25u
ZWN0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9j
b25uZWN0aW9uc1RvQ2xpZW50LmFkZChpZGVudGlmaWVyLCBudWxscHRyKTsKKyAgICBpZiAoYWRk
UmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBt
YWtlVW5pcXVlPElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ+KGNvbm5lY3Rpb24sIGlkZW50
aWZpZXIpOworCisgICAgQVNTRVJUKGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPmlwY0Nvbm5l
Y3Rpb24oKSA9PSBjb25uZWN0aW9uKTsKKyAgICByZXR1cm4gYWRkUmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZS0+Y29ubmVjdGlvblRvQ2xpZW50KCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZVJlZ2lzdHJ5
OjpyZW1vdmVDb25uZWN0aW9uVG9DbGllbnQoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25u
ZWN0aW9uKQoreworICAgIGF1dG8gYWxsQ29ubmVjdGlvbnNUb0NsaWVudCA9IHN0ZDo6ZXhjaGFu
Z2UobV9jb25uZWN0aW9uc1RvQ2xpZW50LCB7IH0pOworICAgIGZvciAoYXV0byYgW2lkZW50aWZp
ZXIsIGNvbm5lY3Rpb25Ub0NsaWVudF0gOiBhbGxDb25uZWN0aW9uc1RvQ2xpZW50KSB7CisgICAg
ICAgIGlmIChjb25uZWN0aW9uVG9DbGllbnQtPmlwY0Nvbm5lY3Rpb24oKSAhPSBjb25uZWN0aW9u
KSB7CisgICAgICAgICAgICBtX2Nvbm5lY3Rpb25zVG9DbGllbnQuYWRkKGlkZW50aWZpZXIsIFdU
Rk1vdmUoY29ubmVjdGlvblRvQ2xpZW50KSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgfQorICAgICAgICBjb25uZWN0aW9uVG9DbGllbnQtPmNvbm5lY3Rpb25Ub0NsaWVudCgpLmNv
bm5lY3Rpb25Ub0NsaWVudENsb3NlZCgpOworICAgIH0KK30KKwordm9pZCBJREJTdG9yYWdlUmVn
aXN0cnk6OnJlZ2lzdGVyQ29ubmVjdGlvbihXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRh
dGFiYXNlQ29ubmVjdGlvbiYgY29ubmVjdGlvbikKK3sKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBj
b25uZWN0aW9uLmlkZW50aWZpZXIoKTsKKyAgICBBU1NFUlQoIW1fY29ubmVjdGlvbnMuY29udGFp
bnMoaWRlbnRpZmllcikpOworCisgICAgbV9jb25uZWN0aW9ucy5hZGQoaWRlbnRpZmllciwgY29u
bmVjdGlvbik7Cit9CisKK3ZvaWQgSURCU3RvcmFnZVJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQ29ubmVj
dGlvbihXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYgY29u
bmVjdGlvbikKK3sKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBjb25uZWN0aW9uLmlkZW50aWZpZXIo
KTsKKyAgICBBU1NFUlQobV9jb25uZWN0aW9ucy5jb250YWlucyhpZGVudGlmaWVyKSk7CisKKyAg
ICBtX2Nvbm5lY3Rpb25zLnJlbW92ZShpZGVudGlmaWVyKTsKK30KKwordm9pZCBJREJTdG9yYWdl
UmVnaXN0cnk6OnJlZ2lzdGVyVHJhbnNhY3Rpb24oV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJ
REJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKK3sKKyAgICBhdXRvIGlkZW50aWZp
ZXIgPSB0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpOworICAgIEFTU0VSVCghbV90cmFu
c2FjdGlvbnMuY29udGFpbnMoaWRlbnRpZmllcikpOworCisgICAgbV90cmFuc2FjdGlvbnMuYWRk
KGlkZW50aWZpZXIsIHRyYW5zYWN0aW9uKTsKK30KKwordm9pZCBJREJTdG9yYWdlUmVnaXN0cnk6
OnVucmVnaXN0ZXJUcmFuc2FjdGlvbihXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFi
YXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQoreworICAgIGF1dG8gaWRlbnRpZmllciA9IHRy
YW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCk7CisgICAgQVNTRVJUKG1fdHJhbnNhY3Rpb25z
LmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKKworICAgIG1fdHJhbnNhY3Rpb25zLnJlbW92ZShpZGVu
dGlmaWVyKTsKK30KKworV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5l
Y3Rpb24qIElEQlN0b3JhZ2VSZWdpc3RyeTo6Y29ubmVjdGlvbih1aW50NjRfdCBpZGVudGlmaWVy
KQoreworICAgIHJldHVybiBtX2Nvbm5lY3Rpb25zLmdldChpZGVudGlmaWVyKS5nZXQoKTsKK30K
KworV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uKiBJREJT
dG9yYWdlUmVnaXN0cnk6OnRyYW5zYWN0aW9uKFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmll
ciBpZGVudGlmaWVyKQoreworICAgIHJldHVybiBtX3RyYW5zYWN0aW9ucy5nZXQoaWRlbnRpZmll
cikuZ2V0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VSZWdpc3RyeS5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VSZWdpc3RyeS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjIzODRkY2Y0ZjYxODY4N2JlNmMyNGVlMzI2M2NhNDhmODg3ODc2YWEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3Rv
cmFnZVJlZ2lzdHJ5LmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgPFdlYkNvcmUvSURCUmVzb3Vy
Y2VJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworbmFtZXNwYWNlIElEQlNlcnZlciB7CitjbGFzcyBVbmlxdWVJREJEYXRhYmFzZUNv
bm5lY3Rpb247CitjbGFzcyBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOworfQorfQorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDsK
KworY2xhc3MgSURCU3RvcmFnZVJlZ2lzdHJ5IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKK3B1YmxpYzoKKyAgICBJREJTdG9yYWdlUmVnaXN0cnkoKTsKKyAgICBXZWJDb3JlOjpJREJT
ZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub0NsaWVudCYgZW5zdXJlQ29ubmVjdGlvblRvQ2xpZW50KElQ
Qzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIFdlYkNvcmU6OklEQkNvbm5lY3Rpb25JZGVudGlmaWVy
KTsKKyAgICB2b2lkIHJlbW92ZUNvbm5lY3Rpb25Ub0NsaWVudChJUEM6OkNvbm5lY3Rpb246OlVu
aXF1ZUlEKTsKKyAgICB2b2lkIHJlZ2lzdGVyQ29ubmVjdGlvbihXZWJDb3JlOjpJREJTZXJ2ZXI6
OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYpOworICAgIHZvaWQgdW5yZWdpc3RlckNvbm5l
Y3Rpb24oV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mKTsK
KyAgICBXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiogY29u
bmVjdGlvbih1aW50NjRfdCBpZGVudGlmaWVyKTsKKyAgICB2b2lkIHJlZ2lzdGVyVHJhbnNhY3Rp
b24oV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJik7Cisg
ICAgdm9pZCB1bnJlZ2lzdGVyVHJhbnNhY3Rpb24oV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJ
REJEYXRhYmFzZVRyYW5zYWN0aW9uJik7CisgICAgV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJ
REJEYXRhYmFzZVRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbihXZWJDb3JlOjpJREJSZXNvdXJjZUlk
ZW50aWZpZXIpOworCitwcml2YXRlOgorICAgIEhhc2hNYXA8V2ViQ29yZTo6SURCQ29ubmVjdGlv
bklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50
Pj4gbV9jb25uZWN0aW9uc1RvQ2xpZW50OworICAgIEhhc2hNYXA8dWludDY0X3QsIFdlYWtQdHI8
V2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24+PiBtX2Nvbm5l
Y3Rpb25zOworICAgIEhhc2hNYXA8V2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyLCBXZWFr
UHRyPFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbj4+IG1f
dHJhbnNhY3Rpb25zOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2Vy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFn
ZU1hbmFnZXIuY3BwCmluZGV4IDgxM2U2ZTk1YTEzYWJlMzkxODZkMTliMmRhYjI4N2JiYjU1MjRm
NzkuLmQyYjdlMTY2ODc5MGYxNmQ2YmY0ODQyOWVjMGMxZWM3ZjQzNWQ1YWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFn
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3Jr
U3RvcmFnZU1hbmFnZXIuY3BwCkBAIC0yNiwxOCArMjYsMjYgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJOZXR3b3JrU3RvcmFnZU1hbmFnZXIuaCIKIAorI2luY2x1ZGUgIkNhY2hl
U3RvcmFnZUVuZ2luZS5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0
cnkuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIuaCIKKyNpbmNsdWRlICJJ
REJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50LmgiCisjaW5jbHVkZSAiSURCU3RvcmFnZU1hbmFn
ZXIuaCIKKyNpbmNsdWRlICJJREJTdG9yYWdlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJMb2NhbFN0
b3JhZ2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk5ldHdvcmtQ
cm9jZXNzUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtTdG9yYWdlTWFuYWdlck1l
c3NhZ2VzLmgiCiAjaW5jbHVkZSAiT3JpZ2luU3RvcmFnZU1hbmFnZXIuaCIKKyNpbmNsdWRlICJR
dW90YU1hbmFnZXIuaCIKICNpbmNsdWRlICJTZXNzaW9uU3RvcmFnZU1hbmFnZXIuaCIKICNpbmNs
dWRlICJTdG9yYWdlQXJlYUJhc2UuaCIKICNpbmNsdWRlICJTdG9yYWdlQXJlYU1hcE1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFyZWFSZWdpc3RyeS5oIgogI2luY2x1ZGUgIldlYnNpdGVE
YXRhVHlwZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uaD4KICNpbmNsdWRlIDxwYWwvY3J5
cHRvL0NyeXB0b0RpZ2VzdC5oPgogI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgogI2luY2x1ZGUgPHd0
Zi9TdXNwZW5kYWJsZVdvcmtRdWV1ZS5oPgpAQCAtMTAwLDIyICsxMDgsMjggQEAgc3RhdGljIHZv
aWQgZGVsZXRlT3JpZ2luRmlsZUlmTmVjZXNzYXJ5KGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiAg
ICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZmlsZVBhdGgpOwogfQogCi1SZWY8TmV0d29y
a1N0b3JhZ2VNYW5hZ2VyPiBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZShQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21M
b2NhbFN0b3JhZ2VQYXRoKQorUmVmPE5ldHdvcmtTdG9yYWdlTWFuYWdlcj4gTmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyOjpjcmVhdGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBJUEM6OkNvbm5lY3Rp
b246OlVuaXF1ZUlEIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5n
JiBjdXN0b21Mb2NhbFN0b3JhZ2VQYXRoLCBjb25zdCBTdHJpbmcmIGN1c3RvbUlEQlN0b3JhZ2VQ
YXRoLCBjb25zdCBTdHJpbmcmIGN1c3RvbUNhY2hlU3RvcmFnZVBhdGgsIHVpbnQ2NF90IGRlZmF1
bHRPcmlnaW5RdW90YSwgdWludDY0X3QgZGVmYXVsdFRoaXJkUGFydHlPcmlnaW5RdW90YSkKIHsK
LSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXR3b3JrU3RvcmFnZU1hbmFnZXIoc2Vzc2lvbklE
LCBwYXRoLCBjdXN0b21Mb2NhbFN0b3JhZ2VQYXRoKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyKHNlc3Npb25JRCwgY29ubmVjdGlvbiwgcGF0aCwgY3Vz
dG9tTG9jYWxTdG9yYWdlUGF0aCwgY3VzdG9tSURCU3RvcmFnZVBhdGgsIGN1c3RvbUNhY2hlU3Rv
cmFnZVBhdGgsIGRlZmF1bHRPcmlnaW5RdW90YSwgZGVmYXVsdFRoaXJkUGFydHlPcmlnaW5RdW90
YSkpOwogfQogCi1OZXR3b3JrU3RvcmFnZU1hbmFnZXI6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcihQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5n
JiBjdXN0b21Mb2NhbFN0b3JhZ2VQYXRoKQorTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpOZXR3b3Jr
U3RvcmFnZU1hbmFnZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBJUEM6OkNvbm5lY3Rpb246
OlVuaXF1ZUlEIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBj
dXN0b21Mb2NhbFN0b3JhZ2VQYXRoLCBjb25zdCBTdHJpbmcmIGN1c3RvbUlEQlN0b3JhZ2VQYXRo
LCBjb25zdCBTdHJpbmcmIGN1c3RvbUNhY2hlU3RvcmFnZVBhdGgsIHVpbnQ2NF90IGRlZmF1bHRP
cmlnaW5RdW90YSwgdWludDY0X3QgZGVmYXVsdFRoaXJkUGFydHlPcmlnaW5RdW90YSkKICAgICA6
IG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKICAgICAsIG1fcXVldWUoU3VzcGVuZGFibGVXb3JrUXVl
dWU6OmNyZWF0ZSgiY29tLmFwcGxlLldlYktpdC5TdG9yYWdlIikpCisgICAgLCBtX2RlZmF1bHRP
cmlnaW5RdW90YShkZWZhdWx0T3JpZ2luUXVvdGEpCisgICAgLCBtX2RlZmF1bHRUaGlyZFBhcnR5
T3JpZ2luUXVvdGEoZGVmYXVsdFRoaXJkUGFydHlPcmlnaW5RdW90YSkKKyAgICAsIG1fcGFyZW50
Q29ubmVjdGlvbihjb25uZWN0aW9uKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7
CiAKLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0
aGlzIH0sIHBhdGggPSBwYXRoLmlzb2xhdGVkQ29weSgpLCBjdXN0b21Mb2NhbFN0b3JhZ2VQYXRo
ID0gY3Jvc3NUaHJlYWRDb3B5KGN1c3RvbUxvY2FsU3RvcmFnZVBhdGgpXSgpIG11dGFibGUgewor
ICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMg
fSwgcGF0aCA9IHBhdGguaXNvbGF0ZWRDb3B5KCksIGN1c3RvbUxvY2FsU3RvcmFnZVBhdGggPSBj
cm9zc1RocmVhZENvcHkoY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCksIGN1c3RvbUlEQlN0b3JhZ2VQ
YXRoID0gY3Jvc3NUaHJlYWRDb3B5KGN1c3RvbUlEQlN0b3JhZ2VQYXRoKSwgY3VzdG9tQ2FjaGVT
dG9yYWdlUGF0aCA9IGNyb3NzVGhyZWFkQ29weShjdXN0b21DYWNoZVN0b3JhZ2VQYXRoKV0oKSBt
dXRhYmxlIHsKICAgICAgICAgbV9maWxlU3lzdGVtU3RvcmFnZUhhbmRsZVJlZ2lzdHJ5ID0gbWFr
ZVVuaXF1ZTxGaWxlU3lzdGVtU3RvcmFnZUhhbmRsZVJlZ2lzdHJ5PigpOwogICAgICAgICBtX3N0
b3JhZ2VBcmVhUmVnaXN0cnkgPSBtYWtlVW5pcXVlPFN0b3JhZ2VBcmVhUmVnaXN0cnk+KCk7Cisg
ICAgICAgIG1faWRiU3RvcmFnZVJlZ2lzdHJ5ID0gbWFrZVVuaXF1ZTxJREJTdG9yYWdlUmVnaXN0
cnk+KCk7CiAgICAgICAgIG1fcGF0aCA9IHBhdGg7CiAgICAgICAgIG1fY3VzdG9tTG9jYWxTdG9y
YWdlUGF0aCA9IGN1c3RvbUxvY2FsU3RvcmFnZVBhdGg7CisgICAgICAgIG1fY3VzdG9tSURCU3Rv
cmFnZVBhdGggPSBjdXN0b21JREJTdG9yYWdlUGF0aDsKKyAgICAgICAgbV9jdXN0b21DYWNoZVN0
b3JhZ2VQYXRoID0gY3VzdG9tQ2FjaGVTdG9yYWdlUGF0aDsKICAgICAgICAgaWYgKCFtX3BhdGgu
aXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBhdXRvIHNhbHRQYXRoID0gRmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fcGF0aCwgInNhbHQiKTsKICAgICAgICAgICAgIG1fc2Fs
dCA9IHZhbHVlT3JEZWZhdWx0KEZpbGVTeXN0ZW06OnJlYWRPck1ha2VTYWx0KHNhbHRQYXRoKSk7
CkBAIC0xMzEsNyArMTQ1LDEwIEBAIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6fk5ldHdvcmtTdG9y
YWdlTWFuYWdlcigpCiAKIGJvb2wgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjYW5IYW5kbGVUeXBl
cyhPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB0eXBlcykKIHsKLSAgICByZXR1cm4gdHlwZXMu
Y29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpMb2NhbFN0b3JhZ2UpIHx8IHR5cGVzLmNvbnRhaW5z
KFdlYnNpdGVEYXRhVHlwZTo6U2Vzc2lvblN0b3JhZ2UpIHx8IHR5cGVzLmNvbnRhaW5zKFdlYnNp
dGVEYXRhVHlwZTo6RmlsZVN5c3RlbSk7CisgICAgcmV0dXJuIHR5cGVzLmNvbnRhaW5zKFdlYnNp
dGVEYXRhVHlwZTo6TG9jYWxTdG9yYWdlKQorICAgICAgICB8fCB0eXBlcy5jb250YWlucyhXZWJz
aXRlRGF0YVR5cGU6OlNlc3Npb25TdG9yYWdlKQorICAgICAgICB8fCB0eXBlcy5jb250YWlucyhX
ZWJzaXRlRGF0YVR5cGU6OkZpbGVTeXN0ZW0pCisgICAgICAgIHx8IHR5cGVzLmNvbnRhaW5zKFdl
YnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKTsKIH0KIAogdm9pZCBOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6OmNsb3NlKCkKQEAgLTE3MCw2ICsxODcsNyBAQCB2b2lkIE5ldHdvcmtTdG9y
YWdlTWFuYWdlcjo6c3RvcFJlY2VpdmluZ01lc3NhZ2VGcm9tQ29ubmVjdGlvbihJUEM6OkNvbm5l
Y3Rpb24mCiAKICAgICBjb25uZWN0aW9uLnJlbW92ZVdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihN
ZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOwog
ICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMg
fSwgY29ubmVjdGlvbiA9IGNvbm5lY3Rpb24udW5pcXVlSUQoKV0oKSBtdXRhYmxlIHsKKyAgICAg
ICAgbV9pZGJTdG9yYWdlUmVnaXN0cnktPnJlbW92ZUNvbm5lY3Rpb25Ub0NsaWVudChjb25uZWN0
aW9uKTsKICAgICAgICAgbV9sb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2Vycy5yZW1vdmVJZihbJl0o
YXV0byYgZW50cnkpIHsKICAgICAgICAgICAgIGF1dG8mIG1hbmFnZXIgPSBlbnRyeS52YWx1ZTsK
ICAgICAgICAgICAgIG1hbmFnZXItPmNvbm5lY3Rpb25DbG9zZWQoY29ubmVjdGlvbik7CkBAIC0y
MjIsNyArMjQwLDE0IEBAIE9yaWdpblN0b3JhZ2VNYW5hZ2VyJiBOZXR3b3JrU3RvcmFnZU1hbmFn
ZXI6OmxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIoY29uc3QgV2ViCiAgICAgICAgICAgICAgICAg
d3JpdGVPcmlnaW5Ub0ZpbGVJZk5lY2Vzc2FyeShvcmlnaW5GaWxlUGF0aChvcmlnaW5EaXJlY3Rv
cnkpLCBvcmlnaW4pOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8T3JpZ2luU3RvcmFnZU1hbmFnZXI+KFdURk1vdmUob3JpZ2luRGlyZWN0b3J5
KSwgTG9jYWxTdG9yYWdlTWFuYWdlcjo6bG9jYWxTdG9yYWdlRmlsZVBhdGgobV9jdXN0b21Mb2Nh
bFN0b3JhZ2VQYXRoLCBvcmlnaW4pKTsKKyAgICAgICAgYXV0byBsb2NhbFN0b3JhZ2VQYXRoID0g
TG9jYWxTdG9yYWdlTWFuYWdlcjo6bG9jYWxTdG9yYWdlRmlsZVBhdGgobV9jdXN0b21Mb2NhbFN0
b3JhZ2VQYXRoLCBvcmlnaW4pOworICAgICAgICBhdXRvIGlkYlN0b3JhZ2VQYXRoID0gSURCU3Rv
cmFnZU1hbmFnZXI6OmlkYlN0b3JhZ2VPcmlnaW5EaXJlY3RvcnkobV9jdXN0b21JREJTdG9yYWdl
UGF0aCwgb3JpZ2luKTsKKyAgICAgICAgYXV0byBjYWNoZVN0b3JhZ2VQYXRoID0gQ2FjaGVTdG9y
YWdlOjpFbmdpbmU6OnN0b3JhZ2VQYXRoKG1fY3VzdG9tQ2FjaGVTdG9yYWdlUGF0aCwgb3JpZ2lu
KTsKKyAgICAgICAgdWludDY0X3QgcXVvdGEgPSBvcmlnaW4udG9wT3JpZ2luID09IG9yaWdpbi5j
bGllbnRPcmlnaW4gPyBtX2RlZmF1bHRPcmlnaW5RdW90YSA6IG1fZGVmYXVsdFRoaXJkUGFydHlP
cmlnaW5RdW90YTsKKyAgICAgICAgUXVvdGFNYW5hZ2VyOjpJbmNyZWFzZVF1b3RhRnVuY3Rpb24g
aW5jcmVhc2VRdW90YUZ1bmN0aW9uID0gW3Nlc3Npb25JRCA9IG1fc2Vzc2lvbklELCBvcmlnaW4s
IGNvbm5lY3Rpb24gPSBtX3BhcmVudENvbm5lY3Rpb25dIChhdXRvIGlkZW50aWZpZXIsIGF1dG8g
Y3VycmVudFF1b3RhLCBhdXRvIGN1cnJlbnRVc2FnZSwgYXV0byByZXF1ZXN0ZWRJbmNyZWFzZSkg
bXV0YWJsZSB7CisgICAgICAgICAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQoY29ubmVjdGlvbiwg
TWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkluY3JlYXNlUXVvdGEoc2Vzc2lvbklELCBv
cmlnaW4sIGlkZW50aWZpZXIsIGN1cnJlbnRRdW90YSwgY3VycmVudFVzYWdlLCByZXF1ZXN0ZWRJ
bmNyZWFzZSksIDApOworICAgICAgICB9OworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxPcmln
aW5TdG9yYWdlTWFuYWdlcj4ocXVvdGEsIFdURk1vdmUoaW5jcmVhc2VRdW90YUZ1bmN0aW9uKSwg
V1RGTW92ZShvcmlnaW5EaXJlY3RvcnkpLCBXVEZNb3ZlKGxvY2FsU3RvcmFnZVBhdGgpLCBXVEZN
b3ZlKGlkYlN0b3JhZ2VQYXRoKSwgV1RGTW92ZShjYWNoZVN0b3JhZ2VQYXRoKSk7CiAgICAgfSku
aXRlcmF0b3ItPnZhbHVlOwogfQogCkBAIC0yODIsNiArMzA3LDE2IEBAIHZvaWQgTmV0d29ya1N0
b3JhZ2VNYW5hZ2VyOjpjbGVhclN0b3JhZ2VGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjCiAgICAgfSk7CiB9CiAKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkaWRJ
bmNyZWFzZVF1b3RhKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBRdW90YUlu
Y3JlYXNlUmVxdWVzdElkZW50aWZpZXIgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gbmV3UXVvdGEpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIG1f
cXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgb3Jp
Z2luID0gY3Jvc3NUaHJlYWRDb3B5KG9yaWdpbiksIGlkZW50aWZpZXIsIG5ld1F1b3RhXSgpIG11
dGFibGUgeworICAgICAgICBpZiAoYXV0byBtYW5hZ2VyID0gbV9sb2NhbE9yaWdpblN0b3JhZ2VN
YW5hZ2Vycy5nZXQob3JpZ2luKSkKKyAgICAgICAgICAgIG1hbmFnZXItPnF1b3RhTWFuYWdlcigp
LmRpZEluY3JlYXNlUXVvdGEoaWRlbnRpZmllciwgbmV3UXVvdGEpOworICAgIH0pOworfQorCiB2
b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZmlsZVN5c3RlbUdldERpcmVjdG9yeShJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2lu
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5k
bGVJZGVudGlmaWVyLCBGaWxlU3lzdGVtU3RvcmFnZUVycm9yPik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CkBAIC00NTIsNiArNDg3LDkg
QEAgSGFzaFNldDxXZWJDb3JlOjpDbGllbnRPcmlnaW4+IE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6
Z2V0QWxsT3JpZ2lucygpCiAgICAgZm9yIChhdXRvJiBvcmlnaW4gOiBMb2NhbFN0b3JhZ2VNYW5h
Z2VyOjpvcmlnaW5zT2ZMb2NhbFN0b3JhZ2VEYXRhKG1fY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCkp
CiAgICAgICAgIGFsbE9yaWdpbnMuYWRkKFdlYkNvcmU6OkNsaWVudE9yaWdpbiB7IG9yaWdpbiwg
b3JpZ2luIH0pOwogCisgICAgZm9yIChhdXRvJiBvcmlnaW4gOiBJREJTdG9yYWdlTWFuYWdlcjo6
b3JpZ2luc09mSURCU3RvcmFnZURhdGEobV9jdXN0b21JREJTdG9yYWdlUGF0aCkpCisgICAgICAg
IGFsbE9yaWdpbnMuYWRkKG9yaWdpbik7CisKICAgICByZXR1cm4gYWxsT3JpZ2luczsKIH0KIApA
QCAtNTc5LDEyICs2MTcsMTcgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Om1vdmVEYXRh
KGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgc291cmNlLAogICAgICAgICBhdXRv
IHRhcmdldE9yaWdpbiA9IFdlYkNvcmU6OkNsaWVudE9yaWdpbiB7IHRhcmdldCwgdGFyZ2V0IH07
CiAgICAgICAgIAogICAgICAgICAvLyBDbGVhciBleGlzdGluZyBkYXRhIG9mIHRhcmdldCBvcmln
aW4uCi0gICAgICAgIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHR5cGVzID0geyBXZWJzaXRl
RGF0YVR5cGU6OkZpbGVTeXN0ZW0sIFdlYnNpdGVEYXRhVHlwZTo6TG9jYWxTdG9yYWdlLCBXZWJz
aXRlRGF0YVR5cGU6OlNlc3Npb25TdG9yYWdlICB9OworICAgICAgICBPcHRpb25TZXQ8V2Vic2l0
ZURhdGFUeXBlPiB0eXBlcyA9IHsKKyAgICAgICAgICAgIFdlYnNpdGVEYXRhVHlwZTo6RmlsZVN5
c3RlbSwKKyAgICAgICAgICAgIFdlYnNpdGVEYXRhVHlwZTo6TG9jYWxTdG9yYWdlLAorICAgICAg
ICAgICAgV2Vic2l0ZURhdGFUeXBlOjpTZXNzaW9uU3RvcmFnZSwKKyAgICAgICAgICAgIFdlYnNp
dGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzCisgICAgICAgIH07CiAgICAgICAgIGxvY2Fs
T3JpZ2luU3RvcmFnZU1hbmFnZXIodGFyZ2V0T3JpZ2luKS5kZWxldGVEYXRhKHR5cGVzLCAtV2Fs
bFRpbWU6OmluZmluaXR5KCkpOwogICAgICAgICByZW1vdmVPcmlnaW5TdG9yYWdlTWFuYWdlcklm
UG9zc2libGUodGFyZ2V0T3JpZ2luKTsKIAogICAgICAgICAvLyBNb3ZlIGRhdGEgZnJvbSBzb3Vy
Y2Ugb3JpZ2luIHRvIHRhcmdldCBvcmlnaW4uCi0gICAgICAgIGxvY2FsT3JpZ2luU3RvcmFnZU1h
bmFnZXIoc291cmNlT3JpZ2luKS5tb3ZlRGF0YShvcmlnaW5EaXJlY3RvcnlQYXRoKG1fcGF0aCwg
dGFyZ2V0T3JpZ2luLCBtX3NhbHQpLCBMb2NhbFN0b3JhZ2VNYW5hZ2VyOjpsb2NhbFN0b3JhZ2VG
aWxlUGF0aChtX2N1c3RvbUxvY2FsU3RvcmFnZVBhdGgsIHRhcmdldE9yaWdpbikpOworICAgICAg
ICBsb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2VyKHNvdXJjZU9yaWdpbikubW92ZURhdGEob3JpZ2lu
RGlyZWN0b3J5UGF0aChtX3BhdGgsIHRhcmdldE9yaWdpbiwgbV9zYWx0KSwgTG9jYWxTdG9yYWdl
TWFuYWdlcjo6bG9jYWxTdG9yYWdlRmlsZVBhdGgobV9jdXN0b21Mb2NhbFN0b3JhZ2VQYXRoLCB0
YXJnZXRPcmlnaW4pLCBJREJTdG9yYWdlTWFuYWdlcjo6aWRiU3RvcmFnZU9yaWdpbkRpcmVjdG9y
eShtX2N1c3RvbUlEQlN0b3JhZ2VQYXRoLCB0YXJnZXRPcmlnaW4pKTsKICAgICAgICAgcmVtb3Zl
T3JpZ2luU3RvcmFnZU1hbmFnZXJJZlBvc3NpYmxlKHNvdXJjZU9yaWdpbik7CiAKICAgICAgICAg
UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKQEAg
LTU5OSw2ICs2NDIsOCBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6c3VzcGVuZChDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZQogICAgICAgICBmb3IgKGF1
dG8mIG1hbmFnZXIgOiBtX2xvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXJzLnZhbHVlcygpKSB7CiAg
ICAgICAgICAgICBpZiAoYXV0byBsb2NhbFN0b3JhZ2VNYW5hZ2VyID0gbWFuYWdlci0+ZXhpc3Rp
bmdMb2NhbFN0b3JhZ2VNYW5hZ2VyKCkpCiAgICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlTWFu
YWdlci0+c3luY0xvY2FsU3RvcmFnZSgpOworICAgICAgICAgICAgaWYgKGF1dG8gaWRiU3RvcmFn
ZU1hbmFnZXIgPSBtYW5hZ2VyLT5leGlzdGluZ0lEQlN0b3JhZ2VNYW5hZ2VyKCkpCisgICAgICAg
ICAgICAgICAgaWRiU3RvcmFnZU1hbmFnZXItPnN0b3BEYXRhYmFzZUFjdGl2aXRpZXNGb3JTdXNw
ZW5kKCk7CiAgICAgICAgIH0KICAgICB9LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9
CkBAIC02MzYsNiArNjgxLDUyIEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpzeW5jTG9j
YWxTdG9yYWdlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0CiAgICAgfSk7CiB9
CiAKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpyZWdpc3RlclRlbXBvcmFyeUJsb2JGaWxl
UGF0aHMoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
ZmlsZVBhdGhzKQoreworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBtX3F1
ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNvbm5l
Y3Rpb25JRCA9IGNvbm5lY3Rpb24udW5pcXVlSUQoKSwgZmlsZVBhdGhzID0gY3Jvc3NUaHJlYWRD
b3B5KGZpbGVQYXRocyldIHsKKyAgICAgICAgYXV0byYgdGVtcG9yYXJ5QmxvYlBhdGhzID0gbV90
ZW1wb3JhcnlCbG9iUGF0aHNCeUNvbm5lY3Rpb24uZW5zdXJlKGNvbm5lY3Rpb25JRCwgW10gewor
ICAgICAgICAgICAgcmV0dXJuIEhhc2hTZXQ8U3RyaW5nPiB7IH07CisgICAgICAgIH0pLml0ZXJh
dG9yLT52YWx1ZTsKKyAgICAgICAgdGVtcG9yYXJ5QmxvYlBhdGhzLmFkZChmaWxlUGF0aHMuYmVn
aW4oKSwgZmlsZVBhdGhzLmVuZCgpKTsKKyAgICB9KTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFn
ZU1hbmFnZXI6OnJlcXVlc3RTcGFjZShjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdp
biwgdWludDY0X3Qgc2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgbV9x
dWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBvcmln
aW4gPSBjcm9zc1RocmVhZENvcHkob3JpZ2luKSwgc2l6ZSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgbG9jYWxPcmln
aW5TdG9yYWdlTWFuYWdlcihvcmlnaW4pLnF1b3RhTWFuYWdlcigpLnJlcXVlc3RTcGFjZShzaXpl
LCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byBk
ZWNpc2lvbikgbXV0YWJsZSB7CisgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2go
W2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGRlY2lzaW9u
XSgpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGRlY2lzaW9u
ID09IFF1b3RhTWFuYWdlcjo6RGVjaXNpb246OkdyYW50KTsKKyAgICAgICAgICAgIH0pOworICAg
ICAgICB9KTsKKyAgICB9KTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnJlc2V0
UXVvdGFGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgbV9xdWV1ZS0+
ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAg
ICBmb3IgKGF1dG8mIG1hbmFnZXIgOiBtX2xvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXJzLnZhbHVl
cygpKQorICAgICAgICAgICAgbWFuYWdlci0+cXVvdGFNYW5hZ2VyKCkucmVzZXRRdW90YUZvclRl
c3RpbmcoKTsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKKyAgICB9KTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6
OnJlc2V0UXVvdGFVcGRhdGVkQmFzZWRPblVzYWdlRm9yVGVzdGluZyhjb25zdCBXZWJDb3JlOjpD
bGllbnRPcmlnaW4mIG9yaWdpbikKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwor
CisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhp
cyB9LCBvcmlnaW4gPSBjcm9zc1RocmVhZENvcHkob3JpZ2luKV0oKSBtdXRhYmxlIHsKKyAgICAg
ICAgaWYgKGF1dG8gbWFuYWdlciA9IG1fbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcnMuZ2V0KG9y
aWdpbikpCisgICAgICAgICAgICBtYW5hZ2VyLT5xdW90YU1hbmFnZXIoKS5yZXNldFF1b3RhVXBk
YXRlZEJhc2VkT25Vc2FnZUZvclRlc3RpbmcoKTsKKyAgICB9KTsKK30KKwogdm9pZCBOZXR3b3Jr
U3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb1N0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgV2ViQ29yZTo6U3RvcmFnZVR5cGUgdHlwZSwgU3RvcmFnZUFyZWFNYXBJZGVudGlm
aWVyIHNvdXJjZUlkZW50aWZpZXIsIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyIG5hbWVzcGFj
ZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBcmVhSWRlbnRpZmllciwgSGFzaE1hcDxTdHJpbmcsIFN0
cmluZz4sIHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1
bkxvb3A6OmlzTWFpbigpKTsKQEAgLTcyMyw1ICs4MTQsMTk1IEBAIHZvaWQgTmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyOjpjbGVhcihJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFN0b3JhZ2VBcmVh
SWRlbnRpCiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAordm9pZCBOZXR3b3JrU3RvcmFn
ZU1hbmFnZXI6Om9wZW5EYXRhYmFzZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0
IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkKK3sKKyAgICBhdXRvJiBjb25u
ZWN0aW9uVG9DbGllbnQgPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+ZW5zdXJlQ29ubmVjdGlvblRv
Q2xpZW50KGNvbm5lY3Rpb24udW5pcXVlSUQoKSwgcmVxdWVzdERhdGEucmVxdWVzdElkZW50aWZp
ZXIoKS5jb25uZWN0aW9uSWRlbnRpZmllcigpKTsKKyAgICBsb2NhbE9yaWdpblN0b3JhZ2VNYW5h
Z2VyKHJlcXVlc3REYXRhLmRhdGFiYXNlSWRlbnRpZmllcigpLm9yaWdpbigpKS5pZGJTdG9yYWdl
TWFuYWdlcigqbV9pZGJTdG9yYWdlUmVnaXN0cnkpLm9wZW5EYXRhYmFzZShjb25uZWN0aW9uVG9D
bGllbnQsIHJlcXVlc3REYXRhKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Om9w
ZW5EQlJlcXVlc3RDYW5jZWxsZWQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVl
c3REYXRhKQoreworICAgIGxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIocmVxdWVzdERhdGEuZGF0
YWJhc2VJZGVudGlmaWVyKCkub3JpZ2luKCkpLmlkYlN0b3JhZ2VNYW5hZ2VyKCptX2lkYlN0b3Jh
Z2VSZWdpc3RyeSkub3BlbkRCUmVxdWVzdENhbmNlbGxlZChyZXF1ZXN0RGF0YSk7Cit9CisKK3Zv
aWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVEYXRhYmFzZShJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkK
K3sKKyAgICBhdXRvJiBjb25uZWN0aW9uVG9DbGllbnQgPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+
ZW5zdXJlQ29ubmVjdGlvblRvQ2xpZW50KGNvbm5lY3Rpb24udW5pcXVlSUQoKSwgcmVxdWVzdERh
dGEucmVxdWVzdElkZW50aWZpZXIoKS5jb25uZWN0aW9uSWRlbnRpZmllcigpKTsKKyAgICBsb2Nh
bE9yaWdpblN0b3JhZ2VNYW5hZ2VyKHJlcXVlc3REYXRhLmRhdGFiYXNlSWRlbnRpZmllcigpLm9y
aWdpbigpKS5pZGJTdG9yYWdlTWFuYWdlcigqbV9pZGJTdG9yYWdlUmVnaXN0cnkpLmRlbGV0ZURh
dGFiYXNlKGNvbm5lY3Rpb25Ub0NsaWVudCwgcmVxdWVzdERhdGEpOworfQorCit2b2lkIE5ldHdv
cmtTdG9yYWdlTWFuYWdlcjo6ZXN0YWJsaXNoVHJhbnNhY3Rpb24odWludDY0X3QgZGF0YWJhc2VD
b25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25JbmZvJiB0
cmFuc2FjdGlvbkluZm8pCit7CisgICAgaWYgKGF1dG8gY29ubmVjdGlvbiA9IG1faWRiU3RvcmFn
ZVJlZ2lzdHJ5LT5jb25uZWN0aW9uKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpKQorICAg
ICAgICBjb25uZWN0aW9uLT5lc3RhYmxpc2hUcmFuc2FjdGlvbih0cmFuc2FjdGlvbkluZm8pOwor
fQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGF0YWJhc2VDb25uZWN0aW9uUGVuZGlu
Z0Nsb3NlKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpCit7CisgICAgaWYg
KGF1dG8gY29ubmVjdGlvbiA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT5jb25uZWN0aW9uKGRhdGFi
YXNlQ29ubmVjdGlvbklkZW50aWZpZXIpKQorICAgICAgICBjb25uZWN0aW9uLT5jb25uZWN0aW9u
UGVuZGluZ0Nsb3NlRnJvbUNsaWVudCgpOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdl
cjo6ZGF0YWJhc2VDb25uZWN0aW9uQ2xvc2VkKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklk
ZW50aWZpZXIpCit7CisgICAgaWYgKGF1dG8gY29ubmVjdGlvbiA9IG1faWRiU3RvcmFnZVJlZ2lz
dHJ5LT5jb25uZWN0aW9uKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpKQorICAgICAgICBj
b25uZWN0aW9uLT5jb25uZWN0aW9uQ2xvc2VkRnJvbUNsaWVudCgpOworfQorCit2b2lkIE5ldHdv
cmtTdG9yYWdlTWFuYWdlcjo6YWJvcnRPcGVuQW5kVXBncmFkZU5lZWRlZCh1aW50NjRfdCBkYXRh
YmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50
aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcikKK3sKKyAgICBpZiAoYXV0byB0cmFuc2FjdGlv
biA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT50cmFuc2FjdGlvbih0cmFuc2FjdGlvbklkZW50aWZp
ZXIpKQorICAgICAgICB0cmFuc2FjdGlvbi0+YWJvcnRXaXRob3V0Q2FsbGJhY2soKTsKKworICAg
IGlmIChhdXRvIGNvbm5lY3Rpb24gPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+Y29ubmVjdGlvbihk
YXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKSkKKyAgICAgICAgY29ubmVjdGlvbi0+Y29ubmVj
dGlvbkNsb3NlZEZyb21DbGllbnQoKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6
OmRpZEZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRl
bnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRl
bnRpZmllciwgY29uc3QgV2ViQ29yZTo6SW5kZXhlZERCOjpDb25uZWN0aW9uQ2xvc2VkT25CZWhh
bGZPZlNlcnZlciBjb25uZWN0aW9uQ2xvc2VkKQoreworICAgIGlmIChhdXRvIGNvbm5lY3Rpb24g
PSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+Y29ubmVjdGlvbihkYXRhYmFzZUNvbm5lY3Rpb25JZGVu
dGlmaWVyKSkKKyAgICAgICAgY29ubmVjdGlvbi0+ZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudChy
ZXF1ZXN0SWRlbnRpZmllciwgY29ubmVjdGlvbkNsb3NlZCk7Cit9CisKK3ZvaWQgTmV0d29ya1N0
b3JhZ2VNYW5hZ2VyOjphYm9ydFRyYW5zYWN0aW9uKGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNl
SWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKQoreworICAgIGlmIChhdXRvIHRyYW5z
YWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPnRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRl
bnRpZmllcikpCisgICAgICAgIHRyYW5zYWN0aW9uLT5hYm9ydCgpOworfQorCit2b2lkIE5ldHdv
cmtTdG9yYWdlTWFuYWdlcjo6Y29tbWl0VHJhbnNhY3Rpb24oY29uc3QgV2ViQ29yZTo6SURCUmVz
b3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IHBlbmRpbmdS
ZXF1ZXN0Q291bnQpCit7CisgICAgaWYgKGF1dG8gdHJhbnNhY3Rpb24gPSBtX2lkYlN0b3JhZ2VS
ZWdpc3RyeS0+dHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZGVudGlmaWVyKSkKKyAgICAgICAgdHJh
bnNhY3Rpb24tPmNvbW1pdChwZW5kaW5nUmVxdWVzdENvdW50KTsKK30KKwordm9pZCBOZXR3b3Jr
U3RvcmFnZU1hbmFnZXI6OmRpZEZpbmlzaEhhbmRsaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9u
KHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OklE
QlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKQoreworICAgIGlmIChh
dXRvIGNvbm5lY3Rpb24gPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+Y29ubmVjdGlvbihkYXRhYmFz
ZUNvbm5lY3Rpb25JZGVudGlmaWVyKSkKKyAgICAgICAgY29ubmVjdGlvbi0+ZGlkRmluaXNoSGFu
ZGxpbmdWZXJzaW9uQ2hhbmdlKHRyYW5zYWN0aW9uSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgTmV0
d29ya1N0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJS
ZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IFdlYkNvcmU6OklEQk9iamVjdFN0b3JlSW5m
byYgb2JqZWN0U3RvcmVJbmZvKQoreworICAgIGlmIChhdXRvIHRyYW5zYWN0aW9uID0gbV9pZGJT
dG9yYWdlUmVnaXN0cnktPnRyYW5zYWN0aW9uKHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRp
ZmllcigpKSkgeworICAgICAgICBBU1NFUlQodHJhbnNhY3Rpb24tPmlzVmVyc2lvbkNoYW5nZSgp
KTsKKyAgICAgICAgdHJhbnNhY3Rpb24tPmNyZWF0ZU9iamVjdFN0b3JlKHJlcXVlc3REYXRhLCBv
YmplY3RTdG9yZUluZm8pOworICAgIH0KK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6
OmRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0
RGF0YSwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUpCit7CisgICAgaWYgKGF1dG8gdHJh
bnNhY3Rpb24gPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+dHJhbnNhY3Rpb24ocmVxdWVzdERhdGEu
dHJhbnNhY3Rpb25JZGVudGlmaWVyKCkpKSB7CisgICAgICAgIEFTU0VSVCh0cmFuc2FjdGlvbi0+
aXNWZXJzaW9uQ2hhbmdlKCkpOworICAgICAgICB0cmFuc2FjdGlvbi0+ZGVsZXRlT2JqZWN0U3Rv
cmUocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlTmFtZSk7CisgICAgfQorfQorCit2b2lkIE5ldHdv
cmtTdG9yYWdlTWFuYWdlcjo6cmVuYW1lT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6SURCUmVx
dWVzdERhdGEmIHJlcXVlc3REYXRhLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgbmV3TmFtZSkKK3sKKyAgICBpZiAoYXV0byB0cmFuc2FjdGlvbiA9IG1faWRi
U3RvcmFnZVJlZ2lzdHJ5LT50cmFuc2FjdGlvbihyZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50
aWZpZXIoKSkpIHsKKyAgICAgICAgQVNTRVJUKHRyYW5zYWN0aW9uLT5pc1ZlcnNpb25DaGFuZ2Uo
KSk7CisgICAgICAgIHRyYW5zYWN0aW9uLT5yZW5hbWVPYmplY3RTdG9yZShyZXF1ZXN0RGF0YSwg
b2JqZWN0U3RvcmVJZGVudGlmaWVyLCBuZXdOYW1lKTsKKyAgICB9Cit9CisKK3ZvaWQgTmV0d29y
a1N0b3JhZ2VNYW5hZ2VyOjpjbGVhck9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVl
c3REYXRhJiByZXF1ZXN0RGF0YSwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyKQorewor
ICAgIGlmIChhdXRvIHRyYW5zYWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPnRyYW5zYWN0
aW9uKHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpKSkKKyAgICAgICAgdHJhbnNh
Y3Rpb24tPmNsZWFyT2JqZWN0U3RvcmUocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVJbmRleChjb25zdCBX
ZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IFdlYkNvcmU6OklEQklu
ZGV4SW5mbyYgaW5kZXhJbmZvKQoreworICAgIGlmIChhdXRvIHRyYW5zYWN0aW9uID0gbV9pZGJT
dG9yYWdlUmVnaXN0cnktPnRyYW5zYWN0aW9uKHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRp
ZmllcigpKSkKKyAgICAgICAgdHJhbnNhY3Rpb24tPmNyZWF0ZUluZGV4KHJlcXVlc3REYXRhLCBp
bmRleEluZm8pOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlSW5kZXgo
Y29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCB1aW50NjRfdCBvYmpl
Y3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lKQoreworICAgIGlmIChh
dXRvIHRyYW5zYWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPnRyYW5zYWN0aW9uKHJlcXVl
c3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpKSkKKyAgICAgICAgdHJhbnNhY3Rpb24tPmRl
bGV0ZUluZGV4KHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4TmFtZSk7
Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpyZW5hbWVJbmRleChjb25zdCBXZWJD
b3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRl
bnRpZmllciwgdWludDY0X3QgaW5kZXhJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUp
Cit7CisgICAgaWYgKGF1dG8gdHJhbnNhY3Rpb24gPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+dHJh
bnNhY3Rpb24ocmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCkpKQorICAgICAgICB0
cmFuc2FjdGlvbi0+cmVuYW1lSW5kZXgocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmll
ciwgaW5kZXhJZGVudGlmaWVyLCBuZXdOYW1lKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1h
bmFnZXI6OnB1dE9yQWRkKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgV2ViQ29y
ZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBXZWJDb3JlOjpJREJLZXlEYXRh
JiBrZXlEYXRhLCBjb25zdCBXZWJDb3JlOjpJREJWYWx1ZSYgdmFsdWUsIFdlYkNvcmU6OkluZGV4
ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlIG92ZXJ3cml0ZU1vZGUpCit7CisgICAgaWYg
KHZhbHVlLmJsb2JVUkxzKCkuc2l6ZSgpICE9IHZhbHVlLmJsb2JGaWxlUGF0aHMoKS5zaXplKCkp
IHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRkFVTFQoSW5kZXhlZERCLCAiTmV0d29ya1N0b3JhZ2VN
YW5hZ2VyOjpwdXRPckFkZDogTnVtYmVyIG9mIGJsb2IgVVJMcyBkb2Vzbid0IG1hdGNoIHRoZSBu
dW1iZXIgb2YgYmxvYiBmaWxlIHBhdGhzLiIpOworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFZhbGlkYXRlIHRlbXBvcmFyeSBi
bG9iIHBhdGhzIGluIHx2YWx1ZXwgdG8gbWFrZSBzdXJlIHRoZXkgYmVsb25nIHRvIHRoZSBzb3Vy
Y2UgcHJvY2Vzcy4KKyAgICBpZiAoIXZhbHVlLmJsb2JGaWxlUGF0aHMoKS5pc0VtcHR5KCkpIHsK
KyAgICAgICAgYXV0byBpdCA9IG1fdGVtcG9yYXJ5QmxvYlBhdGhzQnlDb25uZWN0aW9uLmZpbmQo
Y29ubmVjdGlvbi51bmlxdWVJRCgpKTsKKyAgICAgICAgaWYgKGl0ID09IG1fdGVtcG9yYXJ5Qmxv
YlBhdGhzQnlDb25uZWN0aW9uLmVuZCgpKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19GQVVM
VChJbmRleGVkREIsICJOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnB1dE9yQWRkOiBJREJWYWx1ZSBj
b250YWlucyBibG9iIHBhdGhzIGJ1dCBub25lIGFyZSBhbGxvd2VkIGZvciB0aGlzIHByb2Nlc3Mi
KTsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKKyAgICAgICAgYXV0byYgdGVtcG9yYXJ5QmxvYlBhdGhzRm9yQ29ubmVj
dGlvbiA9IGl0LT52YWx1ZTsKKyAgICAgICAgZm9yIChhdXRvJiBibG9iRmlsZVBhdGggOiB2YWx1
ZS5ibG9iRmlsZVBhdGhzKCkpIHsKKyAgICAgICAgICAgIGlmICghdGVtcG9yYXJ5QmxvYlBhdGhz
Rm9yQ29ubmVjdGlvbi5yZW1vdmUoYmxvYkZpbGVQYXRoKSkgeworICAgICAgICAgICAgICAgIFJF
TEVBU0VfTE9HX0ZBVUxUKEluZGV4ZWREQiwgIk5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6cHV0T3JB
ZGQ6IEJsb2IgcGF0aCB3YXMgbm90IGNyZWF0ZWQgZm9yIHRoaXMgV2ViUHJvY2VzcyIpOworICAg
ICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChhdXRvIHRyYW5z
YWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPnRyYW5zYWN0aW9uKHJlcXVlc3REYXRhLnRy
YW5zYWN0aW9uSWRlbnRpZmllcigpKSkKKyAgICAgICAgdHJhbnNhY3Rpb24tPnB1dE9yQWRkKHJl
cXVlc3REYXRhLCBrZXlEYXRhLCB2YWx1ZSwgb3ZlcndyaXRlTW9kZSk7Cit9CisKK3ZvaWQgTmV0
d29ya1N0b3JhZ2VNYW5hZ2VyOjpnZXRSZWNvcmQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERh
dGEmIHJlcXVlc3REYXRhLCBjb25zdCBXZWJDb3JlOjpJREJHZXRSZWNvcmREYXRhJiBnZXRSZWNv
cmREYXRhKQoreworICAgIGlmIChhdXRvIHRyYW5zYWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0
cnktPnRyYW5zYWN0aW9uKHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpKSkKKyAg
ICAgICAgdHJhbnNhY3Rpb24tPmdldFJlY29yZChyZXF1ZXN0RGF0YSwgZ2V0UmVjb3JkRGF0YSk7
Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpnZXRBbGxSZWNvcmRzKGNvbnN0IFdl
YkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgV2ViQ29yZTo6SURCR2V0
QWxsUmVjb3Jkc0RhdGEmIGdldEFsbFJlY29yZHNEYXRhKQoreworICAgIGlmIChhdXRvIHRyYW5z
YWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPnRyYW5zYWN0aW9uKHJlcXVlc3REYXRhLnRy
YW5zYWN0aW9uSWRlbnRpZmllcigpKSkKKyAgICAgICAgdHJhbnNhY3Rpb24tPmdldEFsbFJlY29y
ZHMocmVxdWVzdERhdGEsIGdldEFsbFJlY29yZHNEYXRhKTsKK30KKwordm9pZCBOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6OmdldENvdW50KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1
ZXN0RGF0YSwgY29uc3QgV2ViQ29yZTo6SURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5nZURhdGEpCit7
CisgICAgaWYgKGF1dG8gdHJhbnNhY3Rpb24gPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+dHJhbnNh
Y3Rpb24ocmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCkpKQorICAgICAgICB0cmFu
c2FjdGlvbi0+Z2V0Q291bnQocmVxdWVzdERhdGEsIGtleVJhbmdlRGF0YSk7Cit9CisKK3ZvaWQg
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVSZWNvcmQoY29uc3QgV2ViQ29yZTo6SURCUmVx
dWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBXZWJDb3JlOjpJREJLZXlSYW5nZURhdGEmIGtl
eVJhbmdlRGF0YSkKK3sKKyAgICBpZiAoYXV0byB0cmFuc2FjdGlvbiA9IG1faWRiU3RvcmFnZVJl
Z2lzdHJ5LT50cmFuc2FjdGlvbihyZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSkp
CisgICAgICAgIHRyYW5zYWN0aW9uLT5kZWxldGVSZWNvcmQocmVxdWVzdERhdGEsIGtleVJhbmdl
RGF0YSk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpvcGVuQ3Vyc29yKGNvbnN0
IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgV2ViQ29yZTo6SURC
Q3Vyc29ySW5mbyYgY3Vyc29ySW5mbykKK3sKKyAgICBpZiAoYXV0byB0cmFuc2FjdGlvbiA9IG1f
aWRiU3RvcmFnZVJlZ2lzdHJ5LT50cmFuc2FjdGlvbihyZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklk
ZW50aWZpZXIoKSkpCisgICAgICAgIHRyYW5zYWN0aW9uLT5vcGVuQ3Vyc29yKHJlcXVlc3REYXRh
LCBjdXJzb3JJbmZvKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Oml0ZXJhdGVD
dXJzb3IoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBX
ZWJDb3JlOjpJREJJdGVyYXRlQ3Vyc29yRGF0YSYgY3Vyc29yRGF0YSkKK3sKKyAgICBpZiAoYXV0
byB0cmFuc2FjdGlvbiA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT50cmFuc2FjdGlvbihyZXF1ZXN0
RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSkpCisgICAgICAgIHRyYW5zYWN0aW9uLT5pdGVy
YXRlQ3Vyc29yKHJlcXVlc3REYXRhLCBjdXJzb3JEYXRhKTsKK30KKwordm9pZCBOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6OmdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgcmVx
dWVzdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luKQorewor
ICAgIGF1dG8mIGNvbm5lY3Rpb25Ub0NsaWVudCA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT5lbnN1
cmVDb25uZWN0aW9uVG9DbGllbnQoY29ubmVjdGlvbi51bmlxdWVJRCgpLCByZXF1ZXN0SWRlbnRp
Zmllci5jb25uZWN0aW9uSWRlbnRpZmllcigpKTsKKyAgICBhdXRvIHJlc3VsdCA9IGxvY2FsT3Jp
Z2luU3RvcmFnZU1hbmFnZXIob3JpZ2luKS5pZGJTdG9yYWdlTWFuYWdlcigqbV9pZGJTdG9yYWdl
UmVnaXN0cnkpLmdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucygpOworICAgIGNvbm5lY3Rp
b25Ub0NsaWVudC5kaWRHZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMocmVxdWVzdElkZW50
aWZpZXIsIFdURk1vdmUocmVzdWx0KSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0
b3JhZ2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0
d29ya1N0b3JhZ2VNYW5hZ2VyLmgKaW5kZXggMTVjMDM3MmU2NmE3ZjYyODQ5OTI3ZjFjMzdmMTZh
Njk1ODdmNDUwMS4uOWMzZDJkNjQwNmZlZTliMmI0ZTZjYTI2ZjdiNjVmZTBjNzhiODNiZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9y
YWdlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9O
ZXR3b3JrU3RvcmFnZU1hbmFnZXIuaApAQCAtMzYsNiArMzYsOCBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvQ2xpZW50T3JpZ2luLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtSGFuZGxlSWRl
bnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJ
ZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JREJSZXNvdXJjZUlkZW50aWZpZXIuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL0luZGV4ZWREQi5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQu
aD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCkBAIC00NCwxOCArNDYsMzEgQEAgY2xhc3Mg
U2hhcmVkRmlsZUhhbmRsZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgSURCQ3Vy
c29ySW5mbzsKK2NsYXNzIElEQktleURhdGE7CitjbGFzcyBJREJJbmRleEluZm87CitjbGFzcyBJ
REJPYmplY3RTdG9yZUluZm87CitjbGFzcyBJREJSZXF1ZXN0RGF0YTsKK2NsYXNzIElEQlRyYW5z
YWN0aW9uSW5mbzsKK2NsYXNzIElEQlZhbHVlOwogc3RydWN0IENsaWVudE9yaWdpbjsKK3N0cnVj
dCBJREJHZXRBbGxSZWNvcmRzRGF0YTsKK3N0cnVjdCBJREJHZXRSZWNvcmREYXRhOworc3RydWN0
IElEQkdldEFsbFJlY29yZHNEYXRhOworc3RydWN0IElEQkl0ZXJhdGVDdXJzb3JEYXRhOworc3Ry
dWN0IElEQktleVJhbmdlRGF0YTsKIGVudW0gY2xhc3MgU3RvcmFnZVR5cGUgOiB1aW50OF90Owog
fQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVS
ZWdpc3RyeTsKK2NsYXNzIElEQlN0b3JhZ2VSZWdpc3RyeTsKIGNsYXNzIFN0b3JhZ2VBcmVhUmVn
aXN0cnk7CiAKIGNsYXNzIE5ldHdvcmtTdG9yYWdlTWFuYWdlciBmaW5hbCA6IHB1YmxpYyBJUEM6
OkNvbm5lY3Rpb246OldvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxOZXR3b3JrU3RvcmFnZU1hbmFnZXI+IGNyZWF0ZShQQUw6OlNlc3Npb25JRCwgY29u
c3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGN1c3RvbUxvY2FsU3RvcmFnZVBhdGgpOwor
ICAgIHN0YXRpYyBSZWY8TmV0d29ya1N0b3JhZ2VNYW5hZ2VyPiBjcmVhdGUoUEFMOjpTZXNzaW9u
SUQsIElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3Qg
U3RyaW5nJiBjdXN0b21Mb2NhbFN0b3JhZ2VQYXRoLCBjb25zdCBTdHJpbmcmIGN1c3RvbUlEQlN0
b3JhZ2VQYXRoLCBjb25zdCBTdHJpbmcmIGN1c3RvbUNhY2hlU3RvcmFnZVBhdGgsIHVpbnQ2NF90
IGRlZmF1bHRPcmlnaW5RdW90YSwgdWludDY0X3QgZGVmYXVsdFRoaXJkUGFydHlPcmlnaW5RdW90
YSk7CiAgICAgc3RhdGljIGJvb2wgY2FuSGFuZGxlVHlwZXMoT3B0aW9uU2V0PFdlYnNpdGVEYXRh
VHlwZT4pOwogCiAgICAgdm9pZCBzdGFydFJlY2VpdmluZ01lc3NhZ2VGcm9tQ29ubmVjdGlvbihJ
UEM6OkNvbm5lY3Rpb24mKTsKQEAgLTY0LDYgKzc5LDcgQEAgcHVibGljOgogICAgIFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbklEOyB9CiAgICAgdm9p
ZCBjbG9zZSgpOwogICAgIHZvaWQgY2xlYXJTdG9yYWdlRm9yVGVzdGluZyhDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgZGlkSW5jcmVhc2VRdW90YShjb25zdCBXZWJDb3Jl
OjpDbGllbnRPcmlnaW4mLCBRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIsIHN0ZDo6b3B0
aW9uYWw8dWludDY0X3Q+IG5ld1F1b3RhKTsKICAgICB2b2lkIGZldGNoRGF0YShPcHRpb25TZXQ8
V2Vic2l0ZURhdGFUeXBlPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2Vic2l0ZURh
dGE6OkVudHJ5PiYmKT4mJik7CiAgICAgdm9pZCBkZWxldGVEYXRhKE9wdGlvblNldDxXZWJzaXRl
RGF0YVR5cGU+LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBkZWxldGVEYXRhTW9kaWZpZWRT
aW5jZShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgV2FsbFRpbWUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CkBAIC03MywxNCArODksMTggQEAgcHVibGljOgogICAgIHZvaWQgcmVz
dW1lKCk7CiAgICAgdm9pZCBoYW5kbGVMb3dNZW1vcnlXYXJuaW5nKCk7CiAgICAgdm9pZCBzeW5j
TG9jYWxTdG9yYWdlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCByZWdp
c3RlclRlbXBvcmFyeUJsb2JGaWxlUGF0aHMoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgVmVjdG9y
PFN0cmluZz4mKTsKKyAgICB2b2lkIHJlcXVlc3RTcGFjZShjb25zdCBXZWJDb3JlOjpDbGllbnRP
cmlnaW4mLCB1aW50NjRfdCBzaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsK
KyAgICB2b2lkIHJlc2V0UXVvdGFGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CisgICAgdm9pZCByZXNldFF1b3RhVXBkYXRlZEJhc2VkT25Vc2FnZUZvclRlc3RpbmcoY29u
c3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJik7CiAKIHByaXZhdGU6CiAgICAgTmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmlu
ZyYgY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCk7CisgICAgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyKFBB
TDo6U2Vzc2lvbklELCBJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBjb25zdCBTdHJpbmcmIHBh
dGgsIGNvbnN0IFN0cmluZyYgY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCwgY29uc3QgU3RyaW5nJiBj
dXN0b21JREJTdG9yYWdlUGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21DYWNoZVN0b3JhZ2VQYXRo
LCB1aW50NjRfdCBkZWZhdWx0T3JpZ2luUXVvdGEsIHVpbnQ2NF90IGRlZmF1bHRUaGlyZFBhcnR5
T3JpZ2luUXVvdGEpOwogICAgIH5OZXR3b3JrU3RvcmFnZU1hbmFnZXIoKTsKICAgICBPcmlnaW5T
dG9yYWdlTWFuYWdlciYgbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcihjb25zdCBXZWJDb3JlOjpD
bGllbnRPcmlnaW4mKTsKICAgICBib29sIHJlbW92ZU9yaWdpblN0b3JhZ2VNYW5hZ2VySWZQb3Nz
aWJsZShjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKICAgICB2b2lkIGRlbGV0ZU9yaWdp
bkRpcmVjdG9yeUlmUG9zc2libGUoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJik7Ci0gICAg
RmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeSYgZmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVS
ZWdpc3RyeSgpOwogCiAgICAgdm9pZCBmb3JFYWNoT3JpZ2luRGlyZWN0b3J5KGNvbnN0IEZ1bmN0
aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+Jik7CiAgICAgSGFzaFNldDxXZWJDb3JlOjpDbGllbnRP
cmlnaW4+IGdldEFsbE9yaWdpbnMoKTsKQEAgLTExOCw2ICsxMzgsMzQgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHJlbW92ZUl0ZW0oSVBDOjpDb25uZWN0aW9uJiwgU3RvcmFnZUFyZWFJZGVudGlmaWVy
LCBTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyLCBTdHJpbmcmJiBrZXksIFN0cmluZyYmIHVybFN0
cmluZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGNsZWFyKElQQzo6
Q29ubmVjdGlvbiYsIFN0b3JhZ2VBcmVhSWRlbnRpZmllciwgU3RvcmFnZUFyZWFJbXBsSWRlbnRp
ZmllciwgU3RyaW5nJiYgdXJsU3RyaW5nLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwog
CisgICAgLy8gTWVzc2FnZSBoYW5kbGVycyBmb3IgSW5kZXhlZERCLgorICAgIHZvaWQgb3BlbkRh
dGFiYXNlKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJik7
CisgICAgdm9pZCBvcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVl
c3REYXRhJik7CisgICAgdm9pZCBkZWxldGVEYXRhYmFzZShJUEM6OkNvbm5lY3Rpb24mLCBjb25z
dCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYpOworICAgIHZvaWQgZXN0YWJsaXNoVHJhbnNhY3Rp
b24odWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6
SURCVHJhbnNhY3Rpb25JbmZvJik7CisgICAgdm9pZCBkYXRhYmFzZUNvbm5lY3Rpb25QZW5kaW5n
Q2xvc2UodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcik7CisgICAgdm9pZCBk
YXRhYmFzZUNvbm5lY3Rpb25DbG9zZWQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRp
Zmllcik7CisgICAgdm9pZCBhYm9ydE9wZW5BbmRVcGdyYWRlTmVlZGVkKHVpbnQ2NF90IGRhdGFi
YXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRp
ZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKKyAgICB2b2lkIGRpZEZpcmVWZXJzaW9uQ2hh
bmdlRXZlbnQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2Vi
Q29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgV2Vi
Q29yZTo6SW5kZXhlZERCOjpDb25uZWN0aW9uQ2xvc2VkT25CZWhhbGZPZlNlcnZlcik7CisgICAg
dm9pZCBhYm9ydFRyYW5zYWN0aW9uKGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmll
ciYpOworICAgIHZvaWQgY29tbWl0VHJhbnNhY3Rpb24oY29uc3QgV2ViQ29yZTo6SURCUmVzb3Vy
Y2VJZGVudGlmaWVyJiwgdWludDY0X3QgcGVuZGluZ1JlcXVlc3RDb3VudCk7CisgICAgdm9pZCBk
aWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbih1aW50NjRfdCBkYXRhYmFz
ZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZp
ZXImKTsKKyAgICB2b2lkIGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVl
c3REYXRhJiwgY29uc3QgV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVJbmZvJik7CisgICAgdm9pZCBk
ZWxldGVPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IFN0
cmluZyYgb2JqZWN0U3RvcmVOYW1lKTsKKyAgICB2b2lkIHJlbmFtZU9iamVjdFN0b3JlKGNvbnN0
IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIG5ld05hbWUpOworICAgIHZvaWQgY2xlYXJPYmplY3RTdG9yZShjb25z
dCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmll
cik7CisgICAgdm9pZCBjcmVhdGVJbmRleChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYs
IGNvbnN0IFdlYkNvcmU6OklEQkluZGV4SW5mbyYpOworICAgIHZvaWQgZGVsZXRlSW5kZXgoY29u
c3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lKTsKKyAgICB2b2lkIHJlbmFtZUluZGV4KGNvbnN0
IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVy
LCB1aW50NjRfdCBpbmRleElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSk7CisgICAg
dm9pZCBwdXRPckFkZChJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0
RGF0YSYsIGNvbnN0IFdlYkNvcmU6OklEQktleURhdGEmLCBjb25zdCBXZWJDb3JlOjpJREJWYWx1
ZSYsIFdlYkNvcmU6OkluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlKTsKKyAgICB2
b2lkIGdldFJlY29yZChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IFdlYkNv
cmU6OklEQkdldFJlY29yZERhdGEmKTsKKyAgICB2b2lkIGdldEFsbFJlY29yZHMoY29uc3QgV2Vi
Q29yZTo6SURCUmVxdWVzdERhdGEmLCBjb25zdCBXZWJDb3JlOjpJREJHZXRBbGxSZWNvcmRzRGF0
YSYpOworICAgIHZvaWQgZ2V0Q291bnQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmLCBj
b25zdCBXZWJDb3JlOjpJREJLZXlSYW5nZURhdGEmKTsKKyAgICB2b2lkIGRlbGV0ZVJlY29yZChj
b25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IFdlYkNvcmU6OklEQktleVJhbmdl
RGF0YSYpOworICAgIHZvaWQgb3BlbkN1cnNvcihjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0
YSYsIGNvbnN0IFdlYkNvcmU6OklEQkN1cnNvckluZm8mKTsKKyAgICB2b2lkIGl0ZXJhdGVDdXJz
b3IoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmLCBjb25zdCBXZWJDb3JlOjpJREJJdGVy
YXRlQ3Vyc29yRGF0YSYpOworICAgIHZvaWQgZ2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25z
KElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYs
IGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYpOworCiAgICAgUEFMOjpTZXNzaW9uSUQgbV9z
ZXNzaW9uSUQ7CiAgICAgUmVmPFN1c3BlbmRhYmxlV29ya1F1ZXVlPiBtX3F1ZXVlOwogICAgIFN0
cmluZyBtX3BhdGg7CkBAIC0xMjcsNyArMTc1LDE0IEBAIHByaXZhdGU6CiAgICAgV2Vha0hhc2hT
ZXQ8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb25zOyAvLyBNYWluIHRocmVhZCBvbmx5Lgog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxGaWxlU3lzdGVtU3RvcmFnZUhhbmRsZVJlZ2lzdHJ5PiBtX2Zp
bGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFN0b3Jh
Z2VBcmVhUmVnaXN0cnk+IG1fc3RvcmFnZUFyZWFSZWdpc3RyeTsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8SURCU3RvcmFnZVJlZ2lzdHJ5PiBtX2lkYlN0b3JhZ2VSZWdpc3RyeTsKICAgICBTdHJpbmcg
bV9jdXN0b21Mb2NhbFN0b3JhZ2VQYXRoOworICAgIFN0cmluZyBtX2N1c3RvbUlEQlN0b3JhZ2VQ
YXRoOworICAgIFN0cmluZyBtX2N1c3RvbUNhY2hlU3RvcmFnZVBhdGg7CisgICAgdWludDY0X3Qg
bV9kZWZhdWx0T3JpZ2luUXVvdGE7CisgICAgdWludDY0X3QgbV9kZWZhdWx0VGhpcmRQYXJ0eU9y
aWdpblF1b3RhOworICAgIElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgbV9wYXJlbnRDb25uZWN0
aW9uOworICAgIEhhc2hNYXA8SVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCwgSGFzaFNldDxTdHJp
bmc+PiBtX3RlbXBvcmFyeUJsb2JQYXRoc0J5Q29ubmVjdGlvbjsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9y
YWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIubWVzc2FnZXMuaW4KaW5k
ZXggNTBiOTY3MDFiMDcwZGQ1YzMyNzExZGIxNDI3OTMwM2ZlNjUyMTFiNy4uNDczMDVlMGU5ODFj
YTVjZmFlMDc3NDI2YmYyNGI3ODE1YTRkNjRjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VN
YW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC00Nyw0ICs0NywzMSBAQAogICAgIFNldEl0ZW0oV2ViS2l0
OjpTdG9yYWdlQXJlYUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViS2l0OjpTdG9yYWdlQXJlYUlt
cGxJZGVudGlmaWVyIGltcGxJZGVudGlmaWVyLCBTdHJpbmcga2V5LCBTdHJpbmcgdmFsdWUsIFN0
cmluZyB1cmxTdHJpbmcpIC0+IChib29sIHF1b3RhRXhjZXB0aW9uKSBBc3luYyBXYW50c0Nvbm5l
Y3Rpb24KICAgICBSZW1vdmVJdGVtKFdlYktpdDo6U3RvcmFnZUFyZWFJZGVudGlmaWVyIGlkZW50
aWZpZXIsIFdlYktpdDo6U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllciBpbXBsSWRlbnRpZmllciwg
U3RyaW5nIGtleSwgU3RyaW5nIHVybFN0cmluZykgLT4gKCkgQXN5bmMgV2FudHNDb25uZWN0aW9u
CiAgICAgQ2xlYXIoV2ViS2l0OjpTdG9yYWdlQXJlYUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2Vi
S2l0OjpTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyIGltcGxJZGVudGlmaWVyLCBTdHJpbmcgdXJs
U3RyaW5nKSAtPiAoKSBBc3luYyBXYW50c0Nvbm5lY3Rpb24KKworICAgIE9wZW5EYXRhYmFzZShX
ZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YSkgV2FudHNDb25uZWN0aW9uCisgICAg
T3BlbkRCUmVxdWVzdENhbmNlbGxlZChXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0
YSkKKyAgICBEZWxldGVEYXRhYmFzZShXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0
YSkgV2FudHNDb25uZWN0aW9uCisgICAgRXN0YWJsaXNoVHJhbnNhY3Rpb24odWludDY0X3QgZGF0
YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25JbmZvIGlu
Zm8pCisgICAgRGF0YWJhc2VDb25uZWN0aW9uUGVuZGluZ0Nsb3NlKHVpbnQ2NF90IGRhdGFiYXNl
Q29ubmVjdGlvbklkZW50aWZpZXIpCisgICAgRGF0YWJhc2VDb25uZWN0aW9uQ2xvc2VkKHVpbnQ2
NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpCisgICAgQWJvcnRPcGVuQW5kVXBncmFk
ZU5lZWRlZCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpJ
REJSZXNvdXJjZUlkZW50aWZpZXIgdHJhbnNhY3Rpb25JZGVudGlmaWVyKQorICAgIERpZEZpcmVW
ZXJzaW9uQ2hhbmdlRXZlbnQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwg
V2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyIHJlcXVlc3RJZGVudGlmaWVyLCBXZWJDb3Jl
OjpJbmRleGVkREI6OkNvbm5lY3Rpb25DbG9zZWRPbkJlaGFsZk9mU2VydmVyIGNvbm5lY3Rpb25D
bG9zZWRPbkJlaGFsZk9mU2VydmVyKQorICAgIERpZEZpbmlzaEhhbmRsaW5nVmVyc2lvbkNoYW5n
ZVRyYW5zYWN0aW9uKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNv
cmU6OklEQlJlc291cmNlSWRlbnRpZmllciB0cmFuc2FjdGlvbklkZW50aWZpZXIpCisgICAgQWJv
cnRUcmFuc2FjdGlvbihXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXIgdHJhbnNhY3Rpb25J
ZGVudGlmaWVyKQorICAgIENvbW1pdFRyYW5zYWN0aW9uKFdlYkNvcmU6OklEQlJlc291cmNlSWRl
bnRpZmllciB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IHBlbmRpbmdSZXF1ZXN0Q291
bnQpCisgICAgQ3JlYXRlT2JqZWN0U3RvcmUoV2ViQ29yZTo6SURCUmVxdWVzdERhdGEgcmVxdWVz
dERhdGEsIFdlYkNvcmU6OklEQk9iamVjdFN0b3JlSW5mbyBpbmZvKQorICAgIERlbGV0ZU9iamVj
dFN0b3JlKFdlYkNvcmU6OklEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhLCBTdHJpbmcgb2JqZWN0
U3RvcmVOYW1lKQorICAgIFJlbmFtZU9iamVjdFN0b3JlKFdlYkNvcmU6OklEQlJlcXVlc3REYXRh
IHJlcXVlc3REYXRhLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIFN0cmluZyBuZXdO
YW1lKQorICAgIENsZWFyT2JqZWN0U3RvcmUoV2ViQ29yZTo6SURCUmVxdWVzdERhdGEgcmVxdWVz
dERhdGEsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllcikKKyAgICBDcmVhdGVJbmRleChX
ZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YSwgV2ViQ29yZTo6SURCSW5kZXhJbmZv
IGluZm8pCisgICAgRGVsZXRlSW5kZXgoV2ViQ29yZTo6SURCUmVxdWVzdERhdGEgcmVxdWVzdERh
dGEsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgU3RyaW5nIGluZGV4TmFtZSkKKyAg
ICBSZW5hbWVJbmRleChXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YSwgdWludDY0
X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRleElkZW50aWZpZXIsIFN0cmlu
ZyBuZXdOYW1lKQorICAgIFB1dE9yQWRkKFdlYkNvcmU6OklEQlJlcXVlc3REYXRhIHJlcXVlc3RE
YXRhLCBXZWJDb3JlOjpJREJLZXlEYXRhIGtleSwgV2ViQ29yZTo6SURCVmFsdWUgdmFsdWUsIFdl
YkNvcmU6OkluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlIG92ZXJ3cml0ZU1vZGUp
IFdhbnRzQ29ubmVjdGlvbgorICAgIEdldFJlY29yZChXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSBy
ZXF1ZXN0RGF0YSwgc3RydWN0IFdlYkNvcmU6OklEQkdldFJlY29yZERhdGEgZ2V0UmVjb3JkRGF0
YSkKKyAgICBHZXRBbGxSZWNvcmRzKFdlYkNvcmU6OklEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRh
LCBzdHJ1Y3QgV2ViQ29yZTo6SURCR2V0QWxsUmVjb3Jkc0RhdGEgZ2V0QWxsUmVjb3Jkc0RhdGEp
CisgICAgR2V0Q291bnQoV2ViQ29yZTo6SURCUmVxdWVzdERhdGEgcmVxdWVzdERhdGEsIHN0cnVj
dCBXZWJDb3JlOjpJREJLZXlSYW5nZURhdGEgcmFuZ2UpCisgICAgRGVsZXRlUmVjb3JkKFdlYkNv
cmU6OklEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhLCBzdHJ1Y3QgV2ViQ29yZTo6SURCS2V5UmFu
Z2VEYXRhIHJhbmdlKQorICAgIE9wZW5DdXJzb3IoV2ViQ29yZTo6SURCUmVxdWVzdERhdGEgcmVx
dWVzdERhdGEsIFdlYkNvcmU6OklEQkN1cnNvckluZm8gaW5mbykKKyAgICBJdGVyYXRlQ3Vyc29y
KFdlYkNvcmU6OklEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhLCBzdHJ1Y3QgV2ViQ29yZTo6SURC
SXRlcmF0ZUN1cnNvckRhdGEgZGF0YSkKKyAgICBHZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lv
bnMoV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyIHJlcXVlc3RJZGVudGlmaWVyLCBzdHJ1
Y3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbikgV2FudHNDb25uZWN0aW9uCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFn
ZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdp
blN0b3JhZ2VNYW5hZ2VyLmNwcAppbmRleCA1ODgzMWVhYTI2NjBhZjg3NGRlNmI5NTg5MGU1N2E3
ZmI2MTU1N2VjLi5iY2MwZjMzODc3OWY0OTMxMDA3NGE3YzZjYmQyZmNhZTc1MzZkYzA2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFn
ZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9P
cmlnaW5TdG9yYWdlTWFuYWdlci5jcHAKQEAgLTI2LDggKzI2LDExIEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiT3JpZ2luU3RvcmFnZU1hbmFnZXIuaCIKIAorI2luY2x1ZGUgIkNh
Y2hlU3RvcmFnZUVuZ2luZS5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVn
aXN0cnkuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIuaCIKKyNpbmNsdWRl
ICJJREJTdG9yYWdlTWFuYWdlci5oIgorI2luY2x1ZGUgIklEQlN0b3JhZ2VSZWdpc3RyeS5oIgog
I2luY2x1ZGUgIkxvY2FsU3RvcmFnZU1hbmFnZXIuaCIKICNpbmNsdWRlICJNZW1vcnlTdG9yYWdl
QXJlYS5oIgogI2luY2x1ZGUgIlNlc3Npb25TdG9yYWdlTWFuYWdlci5oIgpAQCAtNDQsMTAgKzQ3
LDExIEBAIGVudW0gY2xhc3MgT3JpZ2luU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VCdWNrZXRNb2Rl
IDogYm9vbCB7IEJlc3RFZmZvcnQsIFBlcnNpc3RlCiBjbGFzcyBPcmlnaW5TdG9yYWdlTWFuYWdl
cjo6U3RvcmFnZUJ1Y2tldCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
Ci0gICAgU3RvcmFnZUJ1Y2tldChjb25zdCBTdHJpbmcmIHJvb3RQYXRoLCBjb25zdCBTdHJpbmcm
IGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlUGF0aCkKKyAgICBTdG9yYWdl
QnVja2V0KGNvbnN0IFN0cmluZyYgcm9vdFBhdGgsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VQYXRoLCBjb25zdCBTdHJpbmcmIGlkYlN0b3JhZ2VQ
YXRoKQogICAgICAgICA6IG1fcm9vdFBhdGgocm9vdFBhdGgpCiAgICAgICAgICwgbV9pZGVudGlm
aWVyKGlkZW50aWZpZXIpCiAgICAgICAgICwgbV9sb2NhbFN0b3JhZ2VQYXRoKGxvY2FsU3RvcmFn
ZVBhdGgpCisgICAgICAgICwgbV9pZGJTdG9yYWdlUGF0aChpZGJTdG9yYWdlUGF0aCkKICAgICB7
CiAgICAgfQogCkBAIC03MCw2ICs3NCw3IEBAIHB1YmxpYzoKICAgICAgICAgRmlsZVN5c3RlbSwK
ICAgICAgICAgTG9jYWxTdG9yYWdlLAogICAgICAgICBTZXNzaW9uU3RvcmFnZSwKKyAgICAgICAg
SW5kZXhlZERCLAogICAgIH07CiAKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJzaXRlRGF0
YVR5cGU+IHRvV2Vic2l0ZURhdGFUeXBlKGNvbnN0IFN0cmluZyYgc3RvcmFnZUlkZW50aWZpZXIp
CkBAIC04MCw2ICs4NSw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBXZWJzaXRlRGF0
YVR5cGU6OkxvY2FsU3RvcmFnZTsKICAgICAgICAgaWYgKHN0b3JhZ2VJZGVudGlmaWVyID09ICJT
ZXNzaW9uU3RvcmFnZSJfcykKICAgICAgICAgICAgIHJldHVybiBXZWJzaXRlRGF0YVR5cGU6OlNl
c3Npb25TdG9yYWdlOworICAgICAgICBpZiAoc3RvcmFnZUlkZW50aWZpZXIgPT0gIkluZGV4ZWRE
QiJfcykKKyAgICAgICAgICAgIHJldHVybiBXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFi
YXNlczsKIAogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KQEAgLTkzLDYgKzEw
MCw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiAiTG9jYWxTdG9yYWdlIl9zOwogICAg
ICAgICBjYXNlIFN0b3JhZ2VUeXBlOjpTZXNzaW9uU3RvcmFnZToKICAgICAgICAgICAgIHJldHVy
biAiU2Vzc2lvblN0b3JhZ2UiX3M7CisgICAgICAgIGNhc2UgU3RvcmFnZVR5cGU6OkluZGV4ZWRE
QjoKKyAgICAgICAgICAgIHJldHVybiAiSW5kZXhlZERCIl9zOwogICAgICAgICBkZWZhdWx0Ogog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTE0MywxMyArMTUyLDI3IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIG1fc2Vzc2lvblN0b3JhZ2VNYW5hZ2VyLmdldCgpOwogICAgIH0K
IAorICAgIElEQlN0b3JhZ2VNYW5hZ2VyJiBpZGJTdG9yYWdlTWFuYWdlcihJREJTdG9yYWdlUmVn
aXN0cnkmIHJlZ2lzdHJ5LCBJREJTdG9yYWdlTWFuYWdlcjo6UXVvdGFDaGVja0Z1bmN0aW9uJiYg
cXVvdGFDaGVja0Z1bmN0aW9uKQorICAgIHsKKyAgICAgICAgaWYgKCFtX2lkYlN0b3JhZ2VNYW5h
Z2VyKQorICAgICAgICAgICAgbV9pZGJTdG9yYWdlTWFuYWdlciA9IG1ha2VVbmlxdWU8SURCU3Rv
cmFnZU1hbmFnZXI+KG1faWRiU3RvcmFnZVBhdGgsIHJlZ2lzdHJ5LCBXVEZNb3ZlKHF1b3RhQ2hl
Y2tGdW5jdGlvbikpOworCisgICAgICAgIHJldHVybiAqbV9pZGJTdG9yYWdlTWFuYWdlcjsKKyAg
ICB9CisKKyAgICBJREJTdG9yYWdlTWFuYWdlciogZXhpc3RpbmdJREJTdG9yYWdlTWFuYWdlcigp
CisgICAgeworICAgICAgICByZXR1cm4gbV9pZGJTdG9yYWdlTWFuYWdlci5nZXQoKTsKKyAgICB9
CisKICAgICBib29sIGlzQWN0aXZlKCkgY29uc3QKICAgICB7CiAgICAgICAgIC8vIFdlIGNhbm5v
dCByZW1vdmUgdGhlIGJ1Y2tldCBpZiBpdCBoYXMgaW4tbWVtb3J5IGRhdGEsIG90aGVyd2lzZSBz
ZXNzaW9uCiAgICAgICAgIC8vIGRhdGEgbWF5IGJlIGxvc3QuCiAgICAgICAgIHJldHVybiAobV9m
aWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIgJiYgbV9maWxlU3lzdGVtU3RvcmFnZU1hbmFnZXItPmlz
QWN0aXZlKCkpCiAgICAgICAgICAgICB8fCAobV9sb2NhbFN0b3JhZ2VNYW5hZ2VyICYmIChtX2xv
Y2FsU3RvcmFnZU1hbmFnZXItPmhhc0RhdGFJbk1lbW9yeSgpIHx8IG1fbG9jYWxTdG9yYWdlTWFu
YWdlci0+aXNBY3RpdmUoKSkpCi0gICAgICAgICAgICB8fCAobV9zZXNzaW9uU3RvcmFnZU1hbmFn
ZXIgJiYgKG1fc2Vzc2lvblN0b3JhZ2VNYW5hZ2VyLT5oYXNEYXRhSW5NZW1vcnkoKSB8fCBtX3Nl
c3Npb25TdG9yYWdlTWFuYWdlci0+aXNBY3RpdmUoKSkpOworICAgICAgICAgICAgfHwgKG1fc2Vz
c2lvblN0b3JhZ2VNYW5hZ2VyICYmIChtX3Nlc3Npb25TdG9yYWdlTWFuYWdlci0+aGFzRGF0YUlu
TWVtb3J5KCkgfHwgbV9zZXNzaW9uU3RvcmFnZU1hbmFnZXItPmlzQWN0aXZlKCkpKQorICAgICAg
ICAgICAgfHwgKG1faWRiU3RvcmFnZU1hbmFnZXIgJiYgKG1faWRiU3RvcmFnZU1hbmFnZXItPmhh
c0RhdGFJbk1lbW9yeSgpIHx8IG1faWRiU3RvcmFnZU1hbmFnZXItPmlzQWN0aXZlKCkpKTsKICAg
ICB9CiAKICAgICBib29sIGlzRW1wdHkoKSBjb25zdApAQCAtMTY1LDcgKzE4OCw4IEBAIHB1Ymxp
YzoKICAgICAgICAgaWYgKGhhc1ZhbGlkRmlsZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgICAgICByZXR1cm4gIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobV9sb2NhbFN0b3JhZ2VQ
YXRoKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkobV9pZGJTdG9y
YWdlUGF0aCk7CisgICAgICAgIHJldHVybiAhRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhtX2xvY2Fs
U3RvcmFnZVBhdGgpICYmICFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG1faWRiU3RvcmFnZVBhdGgp
OwogICAgIH0KIAogICAgIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGZldGNoRGF0YVR5cGVz
SW5MaXN0KE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHR5cGVzKQpAQCAtMTg2LDE0ICsyMTAs
MjAgQEAgcHVibGljOgogCiAgICAgICAgIGlmICh0eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5
cGU6OlNlc3Npb25TdG9yYWdlKSAmJiBtb2RpZmllZFNpbmNlVGltZSA8IFdhbGxUaW1lOjpub3co
KSkKICAgICAgICAgICAgIGRlbGV0ZVNlc3Npb25TdG9yYWdlRGF0YSgpOworCisgICAgICAgIGlm
ICh0eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykpCisg
ICAgICAgICAgICBkZWxldGVJREJTdG9yYWdlRGF0YShtb2RpZmllZFNpbmNlVGltZSk7CiAgICAg
fQogCi0gICAgdm9pZCBtb3ZlRGF0YShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYg
bG9jYWxTdG9yYWdlUGF0aCkKKyAgICB2b2lkIG1vdmVEYXRhKGNvbnN0IFN0cmluZyYgcGF0aCwg
Y29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VQYXRoLCBjb25zdCBTdHJpbmcmIGlkYlN0b3JhZ2VQ
YXRoKQogICAgIHsKICAgICAgICAgbV9maWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIgPSBudWxscHRy
OwogICAgICAgICBpZiAobV9sb2NhbFN0b3JhZ2VNYW5hZ2VyKQogICAgICAgICAgICAgbV9sb2Nh
bFN0b3JhZ2VNYW5hZ2VyLT5jbG9zZSgpOwogCisgICAgICAgIGlmIChtX2lkYlN0b3JhZ2VNYW5h
Z2VyKQorICAgICAgICAgICAgbV9pZGJTdG9yYWdlTWFuYWdlci0+Y2xvc2VEYXRhYmFzZXNGb3JE
ZWxldGlvbigpOworCiAgICAgICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhGaWxl
U3lzdGVtOjpwYXJlbnRQYXRoKHBhdGgpKTsKICAgICAgICAgRmlsZVN5c3RlbTo6bW92ZUZpbGUo
bV9yb290UGF0aCwgcGF0aCk7CiAKQEAgLTIwMSw2ICsyMzEsMTEgQEAgcHVibGljOgogICAgICAg
ICAgICAgRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKEZpbGVTeXN0ZW06OnBhcmVudFBh
dGgobG9jYWxTdG9yYWdlUGF0aCkpOwogICAgICAgICAgICAgV2ViQ29yZTo6U1FMaXRlRmlsZVN5
c3RlbTo6bW92ZURhdGFiYXNlRmlsZShtX2xvY2FsU3RvcmFnZVBhdGgsIGxvY2FsU3RvcmFnZVBh
dGgpOwogICAgICAgICB9CisKKyAgICAgICAgaWYgKCFtX2lkYlN0b3JhZ2VQYXRoLmlzRW1wdHko
KSAmJiAhaWRiU3RvcmFnZVBhdGguaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBGaWxlU3lzdGVt
OjptYWtlQWxsRGlyZWN0b3JpZXMoRmlsZVN5c3RlbTo6cGFyZW50UGF0aChpZGJTdG9yYWdlUGF0
aCkpOworICAgICAgICAgICAgV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6bW92ZURhdGFiYXNl
RmlsZShtX2lkYlN0b3JhZ2VQYXRoLCBpZGJTdG9yYWdlUGF0aCk7CisgICAgICAgIH0KICAgICB9
CiAKIHByaXZhdGU6CkBAIC0yMTcsNiArMjUyLDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgcmVzdWx0LmFkZChXZWJzaXRlRGF0YVR5cGU6OlNlc3Npb25TdG9yYWdlKTsKICAgICAgICAg
fQogCisgICAgICAgIGlmICh0eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWRE
QkRhdGFiYXNlcykpIHsKKyAgICAgICAgICAgIGlmIChtX2lkYlN0b3JhZ2VNYW5hZ2VyICYmIG1f
aWRiU3RvcmFnZU1hbmFnZXItPmhhc0RhdGFJbk1lbW9yeSgpKQorICAgICAgICAgICAgICAgIHJl
c3VsdC5hZGQoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpOworICAgICAgICB9
CisKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKQEAgLTIzMyw2ICsyNzMsMTEgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICByZXN1bHQuYWRkKFdlYnNpdGVEYXRhVHlwZTo6TG9j
YWxTdG9yYWdlKTsKICAgICAgICAgfQogCisgICAgICAgIGlmICh0eXBlcy5jb250YWlucyhXZWJz
aXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykgJiYgIXJlc3VsdC5jb250YWlucyhXZWJz
aXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykpIHsKKyAgICAgICAgICAgIGlmIChhdXRv
IGRhdGFiYXNlcyA9IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobV9pZGJTdG9yYWdlUGF0aCk7
ICFkYXRhYmFzZXMuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQoV2Vic2l0
ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpOworICAgICAgICB9CisKICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICB9CiAKQEAgLTI3MCw2ICszMTUsMTQgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIG1fc2Vzc2lvblN0b3JhZ2VNYW5hZ2VyID0gbnVsbHB0cjsKICAgICB9CiAgICAgCisg
ICAgdm9pZCBkZWxldGVJREJTdG9yYWdlRGF0YShXYWxsVGltZSB0aW1lKQorICAgIHsKKyAgICAg
ICAgaWYgKG1faWRiU3RvcmFnZU1hbmFnZXIpCisgICAgICAgICAgICBtX2lkYlN0b3JhZ2VNYW5h
Z2VyLT5jbG9zZURhdGFiYXNlc0ZvckRlbGV0aW9uKCk7CisKKyAgICAgICAgRmlsZVN5c3RlbTo6
ZGVsZXRlQWxsRmlsZXNNb2RpZmllZFNpbmNlKG1faWRiU3RvcmFnZVBhdGgsIHRpbWUpOworICAg
IH0KKyAgICAKICAgICBTdHJpbmcgbV9yb290UGF0aDsKICAgICBTdHJpbmcgbV9pZGVudGlmaWVy
OwogICAgIFN0b3JhZ2VCdWNrZXRNb2RlIG1fbW9kZSB7IFN0b3JhZ2VCdWNrZXRNb2RlOjpCZXN0
RWZmb3J0IH07CkBAIC0yNzcsMTEgKzMzMCwyNCBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVl
X3B0cjxMb2NhbFN0b3JhZ2VNYW5hZ2VyPiBtX2xvY2FsU3RvcmFnZU1hbmFnZXI7CiAgICAgU3Ry
aW5nIG1fbG9jYWxTdG9yYWdlUGF0aDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2Vzc2lvblN0b3Jh
Z2VNYW5hZ2VyPiBtX3Nlc3Npb25TdG9yYWdlTWFuYWdlcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
SURCU3RvcmFnZU1hbmFnZXI+IG1faWRiU3RvcmFnZU1hbmFnZXI7CisgICAgU3RyaW5nIG1faWRi
U3RvcmFnZVBhdGg7CiB9OwogCi1PcmlnaW5TdG9yYWdlTWFuYWdlcjo6T3JpZ2luU3RvcmFnZU1h
bmFnZXIoU3RyaW5nJiYgcGF0aCwgU3RyaW5nJiYgbG9jYWxTdG9yYWdlUGF0aCkKK3N0YXRpYyBS
ZWY8UXVvdGFNYW5hZ2VyPiBjcmVhdGVRdW90YU1hbmFnZXIodWludDY0X3QgcXVvdGEsIGNvbnN0
IFN0cmluZyYgaWRiU3RvcmFnZVBhdGgsIGNvbnN0IFN0cmluZyYgY2FjaGVTdG9yYWdlUGF0aCwg
UXVvdGFNYW5hZ2VyOjpJbmNyZWFzZVF1b3RhRnVuY3Rpb24mJiBpbmNyZWFzZVF1b3RhRnVuY3Rp
b24pCit7CisgICAgUXVvdGFNYW5hZ2VyOjpHZXRVc2FnZUZ1bmN0aW9uIGdldFVzYWdlRnVuY3Rp
b24gPSBbaWRiU3RvcmFnZVBhdGgsIGNhY2hlU3RvcmFnZVBhdGhdKCkgeworICAgICAgICByZXR1
cm4gSURCU3RvcmFnZU1hbmFnZXI6OmlkYlN0b3JhZ2VTaXplKGlkYlN0b3JhZ2VQYXRoKSArIENh
Y2hlU3RvcmFnZTo6RW5naW5lOjpkaXNrVXNhZ2UoY2FjaGVTdG9yYWdlUGF0aCk7CisgICAgfTsK
KyAgICByZXR1cm4gUXVvdGFNYW5hZ2VyOjpjcmVhdGUocXVvdGEsIFdURk1vdmUoZ2V0VXNhZ2VG
dW5jdGlvbiksIFdURk1vdmUoaW5jcmVhc2VRdW90YUZ1bmN0aW9uKSk7Cit9CisKK09yaWdpblN0
b3JhZ2VNYW5hZ2VyOjpPcmlnaW5TdG9yYWdlTWFuYWdlcih1aW50NjRfdCBxdW90YSwgUXVvdGFN
YW5hZ2VyOjpJbmNyZWFzZVF1b3RhRnVuY3Rpb24mJiBpbmNyZWFzZVF1b3RhRnVuY3Rpb24sIFN0
cmluZyYmIHBhdGgsIFN0cmluZyYmIGxvY2FsU3RvcmFnZVBhdGgsIFN0cmluZyYmIGlkYlN0b3Jh
Z2VQYXRoLCBTdHJpbmcmJiBjYWNoZVN0b3JhZ2VQYXRoKQogICAgIDogbV9wYXRoKFdURk1vdmUo
cGF0aCkpCiAgICAgLCBtX2xvY2FsU3RvcmFnZVBhdGgoV1RGTW92ZShsb2NhbFN0b3JhZ2VQYXRo
KSkKKyAgICAsIG1faWRiU3RvcmFnZVBhdGgoV1RGTW92ZShpZGJTdG9yYWdlUGF0aCkpCisgICAg
LCBtX2NhY2hlU3RvcmFnZVBhdGgoV1RGTW92ZShjYWNoZVN0b3JhZ2VQYXRoKSkKKyAgICAsIG1f
cXVvdGFNYW5hZ2VyKGNyZWF0ZVF1b3RhTWFuYWdlcihxdW90YSwgbV9pZGJTdG9yYWdlUGF0aCwg
bV9jYWNoZVN0b3JhZ2VQYXRoLCBXVEZNb3ZlKGluY3JlYXNlUXVvdGFGdW5jdGlvbikpKQogewog
ICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogfQpAQCAtMjk3LDExICszNjMsMTYgQEAg
dm9pZCBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6Y29ubmVjdGlvbkNsb3NlZChJUEM6OkNvbm5lY3Rp
b246OlVuaXF1ZUlEIGNvbm5lY3Rpb24KIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVj
a2V0JiBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6ZGVmYXVsdEJ1Y2tldCgpCiB7CiAgICAgaWYgKCFt
X2RlZmF1bHRCdWNrZXQpCi0gICAgICAgIG1fZGVmYXVsdEJ1Y2tldCA9IG1ha2VVbmlxdWU8U3Rv
cmFnZUJ1Y2tldD4obV9wYXRoLCAiZGVmYXVsdCJfcywgbV9sb2NhbFN0b3JhZ2VQYXRoKTsKKyAg
ICAgICAgbV9kZWZhdWx0QnVja2V0ID0gbWFrZVVuaXF1ZTxTdG9yYWdlQnVja2V0PihtX3BhdGgs
ICJkZWZhdWx0Il9zLCBtX2xvY2FsU3RvcmFnZVBhdGgsIG1faWRiU3RvcmFnZVBhdGgpOwogCiAg
ICAgcmV0dXJuICptX2RlZmF1bHRCdWNrZXQ7CiB9CiAKK1F1b3RhTWFuYWdlciYgT3JpZ2luU3Rv
cmFnZU1hbmFnZXI6OnF1b3RhTWFuYWdlcigpCit7CisgICAgcmV0dXJuIG1fcXVvdGFNYW5hZ2Vy
LmdldCgpOworfQorCiBGaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXImIE9yaWdpblN0b3JhZ2VNYW5h
Z2VyOjpmaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIoRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdp
c3RyeSYgcmVnaXN0cnkpCiB7CiAgICAgcmV0dXJuIGRlZmF1bHRCdWNrZXQoKS5maWxlU3lzdGVt
U3RvcmFnZU1hbmFnZXIocmVnaXN0cnkpOwpAQCAtMzI3LDYgKzM5OCwyMyBAQCBTZXNzaW9uU3Rv
cmFnZU1hbmFnZXIqIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpleGlzdGluZ1Nlc3Npb25TdG9yYWdl
TWFuYWdlcigpCiAgICAgcmV0dXJuIGRlZmF1bHRCdWNrZXQoKS5leGlzdGluZ1Nlc3Npb25TdG9y
YWdlTWFuYWdlcigpOwogfQogCitJREJTdG9yYWdlTWFuYWdlciYgT3JpZ2luU3RvcmFnZU1hbmFn
ZXI6OmlkYlN0b3JhZ2VNYW5hZ2VyKElEQlN0b3JhZ2VSZWdpc3RyeSYgcmVnaXN0cnkpCit7Cisg
ICAgcmV0dXJuIGRlZmF1bHRCdWNrZXQoKS5pZGJTdG9yYWdlTWFuYWdlcihyZWdpc3RyeSwgW3F1
b3RhTWFuYWdlciA9IFdlYWtQdHIgeyB0aGlzLT5xdW90YU1hbmFnZXIoKSB9XSh1aW50NjRfdCBz
cGFjZVJlcXVlc3RlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikgbXV0YWJsZSB7CisgICAgICAgIGlmICghcXVvdGFNYW5hZ2VyKQorICAgICAgICAg
ICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKworICAgICAgICBxdW90YU1hbmFn
ZXItPnJlcXVlc3RTcGFjZShzcGFjZVJlcXVlc3RlZCwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1dG8gZGVjaXNpb24pIG11dGFibGUgeworICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoZGVjaXNpb24gPT0gUXVvdGFNYW5hZ2VyOjpEZWNpc2lv
bjo6R3JhbnQpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKworSURCU3RvcmFnZU1hbmFnZXIq
IE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpleGlzdGluZ0lEQlN0b3JhZ2VNYW5hZ2VyKCkKK3sKKyAg
ICByZXR1cm4gZGVmYXVsdEJ1Y2tldCgpLmV4aXN0aW5nSURCU3RvcmFnZU1hbmFnZXIoKTsKK30K
KwogYm9vbCBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6aXNBY3RpdmUoKQogewogICAgIHJldHVybiBk
ZWZhdWx0QnVja2V0KCkuaXNBY3RpdmUoKTsKQEAgLTM1OSwxMSArNDQ3LDExIEBAIHZvaWQgT3Jp
Z2luU3RvcmFnZU1hbmFnZXI6OmRlbGV0ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4g
dHlwZXMsIFdhbGxUaW1lCiAgICAgZGVmYXVsdEJ1Y2tldCgpLmRlbGV0ZURhdGEodHlwZXMsIG1v
ZGlmaWVkU2luY2UpOwogfQogCi12b2lkIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjptb3ZlRGF0YShj
b25zdCBTdHJpbmcmIG5ld1BhdGgsIGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlUGF0aCkKK3Zv
aWQgT3JpZ2luU3RvcmFnZU1hbmFnZXI6Om1vdmVEYXRhKGNvbnN0IFN0cmluZyYgbmV3UGF0aCwg
Y29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VQYXRoLCBjb25zdCBTdHJpbmcmIGlkYlN0b3JhZ2VQ
YXRoKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgZGVmYXVsdEJ1
Y2tldCgpLm1vdmVEYXRhKG5ld1BhdGgsIGxvY2FsU3RvcmFnZVBhdGgpOworICAgIGRlZmF1bHRC
dWNrZXQoKS5tb3ZlRGF0YShuZXdQYXRoLCBsb2NhbFN0b3JhZ2VQYXRoLCBpZGJTdG9yYWdlUGF0
aCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2VyLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuaAppbmRl
eCA1ZTc2Njk5ODZlNDY2ODVmMzg5YjdhNTI3MWU2NmQwZTYzYzJkMTllLi5lYzQ2YzU0YjMxMTFm
YjAxYjNjZTY5NjkyMDdjMTNiZTVkOTk5ZDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuaApAQCAt
MjYsMTYgKzI2LDE1IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIK
KyNpbmNsdWRlICJRdW90YU1hbmFnZXIuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgewotc3RydWN0IENsaWVudE9yaWdpbjsKLX0KLQogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnk7
CiBjbGFzcyBGaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXI7CitjbGFzcyBJREJTdG9yYWdlTWFuYWdl
cjsKK2NsYXNzIElEQlN0b3JhZ2VSZWdpc3RyeTsKIGNsYXNzIExvY2FsU3RvcmFnZU1hbmFnZXI7
CiBjbGFzcyBTZXNzaW9uU3RvcmFnZU1hbmFnZXI7CiBjbGFzcyBTdG9yYWdlQXJlYVJlZ2lzdHJ5
OwpAQCAtNDQsMzUgKzQzLDM4IEBAIGVudW0gY2xhc3MgV2Vic2l0ZURhdGFUeXBlIDogdWludDMy
X3Q7CiBjbGFzcyBPcmlnaW5TdG9yYWdlTWFuYWdlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6Ci0gICAgT3JpZ2luU3RvcmFnZU1hbmFnZXIoU3RyaW5nJiYgcGF0aCwg
U3RyaW5nJiYgbG9jYWxTdG9yYWdlUGF0aCk7CisgICAgT3JpZ2luU3RvcmFnZU1hbmFnZXIodWlu
dDY0X3QgcXVvdGEsIFF1b3RhTWFuYWdlcjo6SW5jcmVhc2VRdW90YUZ1bmN0aW9uJiYsIFN0cmlu
ZyYmIHBhdGgsIFN0cmluZyYmIGxvY2FsU3RvcmFnZVBhdGgsIFN0cmluZyYmIGlkYlN0b3JhZ2VQ
YXRoLCBTdHJpbmcmJiBjYWNoZVN0b3JhZ2VQYXRoKTsKICAgICB+T3JpZ2luU3RvcmFnZU1hbmFn
ZXIoKTsKIAogICAgIHZvaWQgY29ubmVjdGlvbkNsb3NlZChJUEM6OkNvbm5lY3Rpb246OlVuaXF1
ZUlEKTsKICAgICBib29sIHBlcnNpc3RlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGVyc2lzdGVkOyB9
CiAgICAgdm9pZCBzZXRQZXJzaXN0ZWQoYm9vbCB2YWx1ZSk7CisgICAgUXVvdGFNYW5hZ2VyJiBx
dW90YU1hbmFnZXIoKTsKICAgICBGaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXImIGZpbGVTeXN0ZW1T
dG9yYWdlTWFuYWdlcihGaWxlU3lzdGVtU3RvcmFnZUhhbmRsZVJlZ2lzdHJ5Jik7CiAgICAgTG9j
YWxTdG9yYWdlTWFuYWdlciYgbG9jYWxTdG9yYWdlTWFuYWdlcihTdG9yYWdlQXJlYVJlZ2lzdHJ5
Jik7CiAgICAgTG9jYWxTdG9yYWdlTWFuYWdlciogZXhpc3RpbmdMb2NhbFN0b3JhZ2VNYW5hZ2Vy
KCk7CiAgICAgU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyJiBzZXNzaW9uU3RvcmFnZU1hbmFnZXIoU3Rv
cmFnZUFyZWFSZWdpc3RyeSYpOwogICAgIFNlc3Npb25TdG9yYWdlTWFuYWdlciogZXhpc3RpbmdT
ZXNzaW9uU3RvcmFnZU1hbmFnZXIoKTsKKyAgICBJREJTdG9yYWdlTWFuYWdlciYgaWRiU3RvcmFn
ZU1hbmFnZXIoSURCU3RvcmFnZVJlZ2lzdHJ5Jik7CisgICAgSURCU3RvcmFnZU1hbmFnZXIqIGV4
aXN0aW5nSURCU3RvcmFnZU1hbmFnZXIoKTsKICAgICBib29sIGlzQWN0aXZlKCk7CiAgICAgYm9v
bCBpc0VtcHR5KCk7CiAgICAgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZmV0Y2hEYXRhVHlw
ZXNJbkxpc3QoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4pOwogICAgIHZvaWQgZGVsZXRlRGF0
YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgV2FsbFRpbWUpOwotICAgIHZvaWQgbW92ZURh
dGEoY29uc3QgU3RyaW5nJiBuZXdQYXRoLCBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZVBhdGgp
OworICAgIHZvaWQgbW92ZURhdGEoY29uc3QgU3RyaW5nJiBuZXdQYXRoLCBjb25zdCBTdHJpbmcm
IGxvY2FsU3RvcmFnZVBhdGgsIGNvbnN0IFN0cmluZyYgaWRiU3RvcmFnZVBhdGgpOwogCiBwcml2
YXRlOgogICAgIGVudW0gY2xhc3MgU3RvcmFnZUJ1Y2tldE1vZGUgOiBib29sOwogICAgIGNsYXNz
IFN0b3JhZ2VCdWNrZXQ7CiAgICAgU3RvcmFnZUJ1Y2tldCYgZGVmYXVsdEJ1Y2tldCgpOwogCi0g
ICAgdm9pZCBjcmVhdGVPcmlnaW5GaWxlSWZOZWNlc3NhcnkoY29uc3QgV2ViQ29yZTo6Q2xpZW50
T3JpZ2luJik7Ci0gICAgdm9pZCBkZWxldGVPcmlnaW5GaWxlSWZOZWNlc3NhcnkoKTsKLQogICAg
IHN0ZDo6dW5pcXVlX3B0cjxTdG9yYWdlQnVja2V0PiBtX2RlZmF1bHRCdWNrZXQ7CiAgICAgU3Ry
aW5nIG1fcGF0aDsKICAgICBib29sIG1fcGVyc2lzdGVkIHsgZmFsc2UgfTsKICAgICBTdHJpbmcg
bV9sb2NhbFN0b3JhZ2VQYXRoOworICAgIFN0cmluZyBtX2lkYlN0b3JhZ2VQYXRoOworICAgIFN0
cmluZyBtX2NhY2hlU3RvcmFnZVBhdGg7CisgICAgUmVmPFF1b3RhTWFuYWdlcj4gbV9xdW90YU1h
bmFnZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9RdW90YU1hbmFnZXIuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1F1b3RhTWFuYWdlci5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YTcxZjE3NTg5ODU3YTk5ZDM3NGVjYWQ4ZDJlZTdhNDIxYTdmZjA2OAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9RdW90YU1hbmFnZXIuY3Bw
CkBAIC0wLDAgKzEsMTMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlF1b3RhTWFuYWdlci5oIgorCisjaW5jbHVkZSA8d3RmL1NldEZvclNjb3BlLmg+CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitSZWY8UXVvdGFNYW5hZ2VyPiBRdW90YU1hbmFnZXI6OmNy
ZWF0ZSh1aW50NjRfdCBxdW90YSwgR2V0VXNhZ2VGdW5jdGlvbiYmIGdldFVzYWdlRnVuY3Rpb24s
IEluY3JlYXNlUXVvdGFGdW5jdGlvbiYmIGluY3JlYXNlUXVvdGFGdW5jdGlvbikKK3sKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBRdW90YU1hbmFnZXIocXVvdGEsIFdURk1vdmUoZ2V0VXNhZ2VG
dW5jdGlvbiksIFdURk1vdmUoaW5jcmVhc2VRdW90YUZ1bmN0aW9uKSkpOworfQorCitRdW90YU1h
bmFnZXI6OlF1b3RhTWFuYWdlcih1aW50NjRfdCBxdW90YSwgR2V0VXNhZ2VGdW5jdGlvbiYmIGdl
dFVzYWdlRnVuY3Rpb24sIEluY3JlYXNlUXVvdGFGdW5jdGlvbiYmIGluY3JlYXNlUXVvdGFGdW5j
dGlvbikKKyAgICA6IG1fcXVvdGEocXVvdGEpCisgICAgLCBtX2luaXRpYWxRdW90YShxdW90YSkK
KyAgICAsIG1fZ2V0VXNhZ2VGdW5jdGlvbihXVEZNb3ZlKGdldFVzYWdlRnVuY3Rpb24pKQorICAg
ICwgbV9pbmNyZWFzZVF1b3RhRnVuY3Rpb24oV1RGTW92ZShpbmNyZWFzZVF1b3RhRnVuY3Rpb24p
KQoreworICAgIEFTU0VSVChtX3F1b3RhKTsKK30KKwordm9pZCBRdW90YU1hbmFnZXI6OnJlcXVl
c3RTcGFjZSh1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCwgUmVxdWVzdENhbGxiYWNrJiYgY2FsbGJh
Y2spCit7CisgICAgbV9yZXF1ZXN0cy5hcHBlbmQoUXVvdGFNYW5hZ2VyOjpSZXF1ZXN0IHsgc3Bh
Y2VSZXF1ZXN0ZWQsIFdURk1vdmUoY2FsbGJhY2spLCBRdW90YUluY3JlYXNlUmVxdWVzdElkZW50
aWZpZXIgeyB9IH0pOworICAgIGhhbmRsZVJlcXVlc3RzKCk7Cit9CisKK3ZvaWQgUXVvdGFNYW5h
Z2VyOjpoYW5kbGVSZXF1ZXN0cygpCit7CisgICAgaWYgKG1fY3VycmVudFJlcXVlc3QpCisgICAg
ICAgIHJldHVybjsKKworICAgIFNldEZvclNjb3BlPGJvb2w+IGlzSGFuZGxpbmdSZXF1ZXN0cyht
X2lzSGFuZGxpbmdSZXF1ZXN0cywgdHJ1ZSk7CisKKyAgICB3aGlsZSAoIW1fY3VycmVudFJlcXVl
c3QgJiYgIW1fcmVxdWVzdHMuaXNFbXB0eSgpKSB7CisgICAgICAgIG1fY3VycmVudFJlcXVlc3Qg
PSBtX3JlcXVlc3RzLnRha2VGaXJzdCgpOworICAgICAgICBpZiAoZ3JhbnRXaXRoQ3VycmVudFF1
b3RhKG1fY3VycmVudFJlcXVlc3QtPnNwYWNlUmVxdWVzdGVkKSkgeworICAgICAgICAgICAgbV9j
dXJyZW50UmVxdWVzdC0+Y2FsbGJhY2soRGVjaXNpb246OkdyYW50KTsKKyAgICAgICAgICAgIG1f
Y3VycmVudFJlcXVlc3QgPSBzdGQ6Om51bGxvcHQ7CisgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgfQorCisgICAgICAgIG1fY3VycmVudFJlcXVlc3QtPmlkZW50aWZpZXIgPSBRdW90YUlu
Y3JlYXNlUmVxdWVzdElkZW50aWZpZXI6OmdlbmVyYXRlVGhyZWFkU2FmZSgpOworICAgICAgICBt
X2luY3JlYXNlUXVvdGFGdW5jdGlvbihtX2N1cnJlbnRSZXF1ZXN0LT5pZGVudGlmaWVyLCBtX3F1
b3RhLCAqbV91c2FnZSwgbV9jdXJyZW50UmVxdWVzdC0+c3BhY2VSZXF1ZXN0ZWQpOworICAgIH0K
K30KKworYm9vbCBRdW90YU1hbmFnZXI6OmdyYW50V2l0aEN1cnJlbnRRdW90YSh1aW50NjRfdCBz
cGFjZVJlcXVlc3RlZCkKK3sKKyAgICBpZiAoZ3JhbnRGYXN0UGF0aChzcGFjZVJlcXVlc3RlZCkp
CisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gV2hlbiBRdW90YU1hbmFnZXIgaXMgdXNl
ZCBmb3IgdGhlIGZpcnN0IHRpbWUsIHdlIHdhbnQgdG8gbWFrZSBzdXJlIGl0cyBpbml0aWFsIHF1
b3RhIGlzIGJpZ2dlciB0aGFuIGV4aXN0aW5nIGRpc2sgdXNhZ2UsCisgICAgLy8gYmFzZWQgb24g
dGhlIGFzc3VtcHRpb24gdGhhdCB0aGUgcXVvdGEgd2FzIGluY3JlYXNlZCB0byBhdCBsZWFzdCB0
aGUgZGlzayB1c2FnZSB1bmRlciB1c2VyJ3MgcGVybWlzc2lvbiBiZWZvcmUuCisgICAgYm9vbCBz
aG91bGRVcGRhdGVRdW90YUJhc2VkT25Vc2FnZSA9ICFtX3VzYWdlOworICAgIG1fdXNhZ2UgPSBt
X2dldFVzYWdlRnVuY3Rpb24oKTsKKyAgICBpZiAoc2hvdWxkVXBkYXRlUXVvdGFCYXNlZE9uVXNh
Z2UpIHsKKyAgICAgICAgYXV0byBkZWZhdWx0UXVvdGFTdGVwID0gbV9xdW90YSAvIDEwOworICAg
ICAgICBtX3F1b3RhID0gc3RkOjptYXgobV9xdW90YSwgZGVmYXVsdFF1b3RhU3RlcCAqICgoKm1f
dXNhZ2UgLyBkZWZhdWx0UXVvdGFTdGVwKSArIDEpKTsKKyAgICB9CisgICAgbV9xdW90YUNvdW50
ZG93biA9ICptX3VzYWdlIDwgbV9xdW90YSA/IG1fcXVvdGEgLSAqbV91c2FnZSA6IDA7CisKKyAg
ICByZXR1cm4gZ3JhbnRGYXN0UGF0aChzcGFjZVJlcXVlc3RlZCk7Cit9CisKK2Jvb2wgUXVvdGFN
YW5hZ2VyOjpncmFudEZhc3RQYXRoKHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkKQoreworICAgIGlm
IChzcGFjZVJlcXVlc3RlZCA8PSBtX3F1b3RhQ291bnRkb3duKSB7CisgICAgICAgIG1fcXVvdGFD
b3VudGRvd24gLT0gc3BhY2VSZXF1ZXN0ZWQ7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
KworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBRdW90YU1hbmFnZXI6OmRpZEluY3JlYXNl
UXVvdGEoUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyIGlkZW50aWZpZXIsIHN0ZDo6b3B0
aW9uYWw8dWludDY0X3Q+IG5ld1F1b3RhKQoreworICAgIGlmICghbV9jdXJyZW50UmVxdWVzdCB8
fCBtX2N1cnJlbnRSZXF1ZXN0LT5pZGVudGlmaWVyICE9IGlkZW50aWZpZXIpCisgICAgICAgIHJl
dHVybjsKKworICAgIGlmIChuZXdRdW90YSkgeworICAgICAgICBtX3F1b3RhID0gKm5ld1F1b3Rh
OworICAgICAgICAvLyBSZWNhbGN1bGF0ZSBtX3F1b3RhQ291bnRkb3duIGJhc2VkIG9uIHVzYWdl
LgorICAgICAgICBtX3F1b3RhQ291bnRkb3duID0gMDsKKyAgICB9CisKKyAgICBhdXRvIGRlY2lz
aW9uID0gZ3JhbnRXaXRoQ3VycmVudFF1b3RhKG1fY3VycmVudFJlcXVlc3QtPnNwYWNlUmVxdWVz
dGVkKSA/IERlY2lzaW9uOjpHcmFudCA6IERlY2lzaW9uOjpEZW55OworICAgIG1fY3VycmVudFJl
cXVlc3QtPmNhbGxiYWNrKGRlY2lzaW9uKTsKKyAgICBtX2N1cnJlbnRSZXF1ZXN0ID0gc3RkOjpu
dWxsb3B0OworCisgICAgaWYgKCFtX2lzSGFuZGxpbmdSZXF1ZXN0cykKKyAgICAgICAgaGFuZGxl
UmVxdWVzdHMoKTsKK30KKwordm9pZCBRdW90YU1hbmFnZXI6OnJlc2V0UXVvdGFVcGRhdGVkQmFz
ZWRPblVzYWdlRm9yVGVzdGluZygpCit7CisgICAgcmVzZXRRdW90YUZvclRlc3RpbmcoKTsKKyAg
ICBtX3VzYWdlID0gc3RkOjpudWxsb3B0OworfQorCit2b2lkIFF1b3RhTWFuYWdlcjo6cmVzZXRR
dW90YUZvclRlc3RpbmcoKQoreworICAgIG1fcXVvdGEgPSBtX2luaXRpYWxRdW90YTsKKyAgICBt
X3F1b3RhQ291bnRkb3duID0gMDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvUXVvdGFNYW5hZ2VyLmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvUXVvdGFNYW5hZ2VyLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMmFiNDhjODhhYzg3YTYwNjJmOGNjN2JjMjc4ZWQ2OTNhMDY2NzY1NAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9RdW90YU1h
bmFnZXIuaApAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDx3dGYv
Q29tcGxldGlvbkhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIFF1b3RhTWFuYWdlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlZDxRdW90YU1hbmFnZXI+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UXVvdGFNYW5hZ2VyPiB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgdXNpbmcgR2V0VXNh
Z2VGdW5jdGlvbiA9IEZ1bmN0aW9uPHVpbnQ2NF90KCk+OworICAgIHVzaW5nIEluY3JlYXNlUXVv
dGFGdW5jdGlvbiA9IEZ1bmN0aW9uPHZvaWQoUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVy
LCB1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRVc2FnZSwgdWludDY0X3Qg
cmVxdWVzdGVkSW5jcmVhc2UpPjsKKyAgICBzdGF0aWMgUmVmPFF1b3RhTWFuYWdlcj4gY3JlYXRl
KHVpbnQ2NF90IHF1b3RhLCBHZXRVc2FnZUZ1bmN0aW9uJiYsIEluY3JlYXNlUXVvdGFGdW5jdGlv
biYmKTsKKworICAgIGVudW0gY2xhc3MgRGVjaXNpb24gOiBib29sIHsgRGVueSwgR3JhbnQgfTsK
KyAgICB1c2luZyBSZXF1ZXN0Q2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKERlY2lz
aW9uKT47CisgICAgdm9pZCByZXF1ZXN0U3BhY2UodWludDY0X3Qgc3BhY2VSZXF1ZXN0ZWQsIFJl
cXVlc3RDYWxsYmFjayYmKTsKKyAgICB2b2lkIGRpZEluY3JlYXNlUXVvdGEoUXVvdGFJbmNyZWFz
ZVJlcXVlc3RJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBuZXdRdW90YSk7CisK
KyAgICB2b2lkIHJlc2V0UXVvdGFVcGRhdGVkQmFzZWRPblVzYWdlRm9yVGVzdGluZygpOworICAg
IHZvaWQgcmVzZXRRdW90YUZvclRlc3RpbmcoKTsKKworcHJpdmF0ZToKKyAgICBRdW90YU1hbmFn
ZXIodWludDY0X3QgcXVvdGEsIEdldFVzYWdlRnVuY3Rpb24mJiwgSW5jcmVhc2VRdW90YUZ1bmN0
aW9uJiYpOworICAgIHZvaWQgaGFuZGxlUmVxdWVzdHMoKTsKKyAgICBib29sIGdyYW50V2l0aEN1
cnJlbnRRdW90YSh1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCk7CisgICAgYm9vbCBncmFudEZhc3RQ
YXRoKHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkKTsKKworICAgIHN0cnVjdCBSZXF1ZXN0IHsKKyAg
ICAgICAgdWludDY0X3Qgc3BhY2VSZXF1ZXN0ZWQ7CisgICAgICAgIFJlcXVlc3RDYWxsYmFjayBj
YWxsYmFjazsKKyAgICAgICAgUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyIGlkZW50aWZp
ZXI7CisgICAgfTsKKyAgICBEZXF1ZTxSZXF1ZXN0PiBtX3JlcXVlc3RzOworICAgIHN0ZDo6b3B0
aW9uYWw8UmVxdWVzdD4gbV9jdXJyZW50UmVxdWVzdDsKKyAgICBib29sIG1faXNIYW5kbGluZ1Jl
cXVlc3RzIHsgZmFsc2UgfTsKKyAgICB1aW50NjRfdCBtX3F1b3RhQ291bnRkb3duIHsgMCB9Owor
ICAgIHVpbnQ2NF90IG1fcXVvdGE7CisgICAgdWludDY0X3QgbV9pbml0aWFsUXVvdGE7IC8vIFRl
c3Qgb25seS4KKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBtX3VzYWdlOworICAgIEdldFVz
YWdlRnVuY3Rpb24gbV9nZXRVc2FnZUZ1bmN0aW9uOworICAgIEluY3JlYXNlUXVvdGFGdW5jdGlv
biBtX2luY3JlYXNlUXVvdGFGdW5jdGlvbjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggMzNmODIyM2U1Mjll
MDc4ZDZiMmJiODE3Mjc2ZWJiZThjMTk5YTFlYi4uYzBiMDQ5ZjhmYzY4YmQyZGIyNzY3NDcwYTdi
ODQ1ODRhODRlMjZiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5
CkBAIC0yODgsNiArMjg4LDcgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVj
bGFyZWQoKToKICAgICAgICAgJ1dlYkNvcmU6Ok5hdGl2ZUltYWdlUmVmZXJlbmNlJywKICAgICAg
ICAgJ1dlYkNvcmU6OlBhZ2VJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlBsYXliYWNr
VGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXInLAorICAgICAgICAnV2ViS2l0OjpRdW90YUlu
Y3JlYXNlUmVxdWVzdElkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6UGx1Z2luTG9hZENs
aWVudFBvbGljeScsCiAgICAgICAgICdXZWJDb3JlOjpQb2ludGVySUQnLAogICAgICAgICAnV2Vi
Q29yZTo6UHVzaFN1YnNjcmlwdGlvbklkZW50aWZpZXInLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2Vic2l0ZURhdGEvUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLmgg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9RdW90YUluY3JlYXNlUmVxdWVzdElk
ZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZTQ1NGI2YTA4YjY4YTIwYzY1MGRjODk3NjMyODU1OGEz
NzIwMWY1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURh
dGEvUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLmgKQEAgLTAsMCArMSwzNSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIu
aD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVu
dGlmaWVyVHlwZSB7IH07Cit1c2luZyBRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIgPSBP
YmplY3RJZGVudGlmaWVyPFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllclR5cGU+OworCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRl
RGF0YVN0b3JlUGFyYW1ldGVycy5oCmluZGV4IDE1M2JmOTNiZGY2ZmYxMWI0NjBmNjQ4MjViNDUw
MzA4Yjg0NWQzOGQuLjIwOTg0NjgxNjI5OTA0NzMzODg0Y2ZjYjEyN2FhNTcyMWQyY2VlODkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJz
LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMu
aApAQCAtNzEsOCArNzEsOCBAQCBzdHJ1Y3QgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgewog
ICAgIFN0cmluZyBnZW5lcmFsU3RvcmFnZURpcmVjdG9yeTsKICAgICBTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGUgZ2VuZXJhbFN0b3JhZ2VEaXJlY3RvcnlIYW5kbGU7CiAKLSAgICB1aW50NjRfdCBw
ZXJPcmlnaW5TdG9yYWdlUXVvdGEgeyBXZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2VyOjpkZWZh
dWx0UXVvdGEoKSB9OwotICAgIHVpbnQ2NF90IHBlclRoaXJkUGFydHlPcmlnaW5TdG9yYWdlUXVv
dGEgeyBXZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2VyOjpkZWZhdWx0VGhpcmRQYXJ0eVF1b3Rh
KCkgfTsKKyAgICB1aW50NjRfdCBwZXJPcmlnaW5TdG9yYWdlUXVvdGE7CisgICAgdWludDY0X3Qg
cGVyVGhpcmRQYXJ0eU9yaWdpblN0b3JhZ2VRdW90YTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJL
aXQvU291cmNlcy50eHQKaW5kZXggNTdlZjNiMTRlYWYyYzEwOTIwOThlZTk0MzJmNTA4YzYxMWU1
OGUzNS4uNmE2NjliYjAwZWMxYTk2YWVmYTYzZDQ4YjE3ZWI0MjVlMGZlN2U3MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMu
dHh0CkBAIC0xNDQsMTAgKzE0NCwxNCBAQCBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgQG5vLXVuaWZ5CiBOZXR3b3JrUHJvY2Vz
cy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlci5jcHAKIE5ldHdvcmtQcm9jZXNzL3N0
b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGUuY3BwCiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdl
L0ZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnkuY3BwCitOZXR3b3JrUHJvY2Vzcy9zdG9y
YWdlL0lEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQuY3BwCitOZXR3b3JrUHJvY2Vzcy9zdG9y
YWdlL0lEQlN0b3JhZ2VNYW5hZ2VyLmNwcAorTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9y
YWdlUmVnaXN0cnkuY3BwCiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0xvY2FsU3RvcmFnZU1hbmFn
ZXIuY3BwCiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL01lbW9yeVN0b3JhZ2VBcmVhLmNwcAogTmV0
d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwCiBOZXR3b3JrUHJv
Y2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2VyLmNwcAorTmV0d29ya1Byb2Nlc3Mvc3Rv
cmFnZS9RdW90YU1hbmFnZXIuY3BwCiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1NRTGl0ZVN0b3Jh
Z2VBcmVhLmNwcAogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TZXNzaW9uU3RvcmFnZU1hbmFnZXIu
Y3BwCiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1N0b3JhZ2VBcmVhQmFzZS5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
Y3BwCmluZGV4IGE2NzgzNjdhNzc1YTQ5YmE4MWIyNDg4Y2YzMWVhYjlkY2NjY2M5MjEuLjE5NTQ2
Mjc4NzdkODRjYTA4YjU3MjAwY2M4NjJlOTNkMjMzMDQzNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAt
MTQ5NSw2ICsxNDk1LDE2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVxdWVzdFN0b3Jh
Z2VTcGFjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFdlCiAgICAgfSk7CiB9CiAK
K3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6aW5jcmVhc2VRdW90YShQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBRdW90YUluY3Jl
YXNlUmVxdWVzdElkZW50aWZpZXIgaWRlbnRpZmllciwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1
aW50NjRfdCBjdXJyZW50VXNhZ2UsIHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkKQoreworICAgIHJl
cXVlc3RTdG9yYWdlU3BhY2Uoc2Vzc2lvbklELCBvcmlnaW4sIGN1cnJlbnRRdW90YSwgY3VycmVu
dFVzYWdlLCBzcGFjZVJlcXVlc3RlZCwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlz
IH0sIHNlc3Npb25JRCwgb3JpZ2luLCBpZGVudGlmaWVyXShhdXRvIHJlc3VsdCkgbXV0YWJsZSB7
CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkRpZEluY3JlYXNlUXVvdGEoc2Vzc2lvbklE
LCBvcmlnaW4sIGlkZW50aWZpZXIsIHJlc3VsdCksIDApOworICAgIH0pOworfQorCiB2b2lkIE5l
dHdvcmtQcm9jZXNzUHJveHk6OnJlZ2lzdGVyU2NoZW1lRm9yTGVnYWN5Q3VzdG9tUHJvdG9jb2wo
Y29uc3QgU3RyaW5nJiBzY2hlbWUpCiB7CiAjaWYgRU5BQkxFKExFR0FDWV9DVVNUT01fUFJPVE9D
T0xfTUFOQUdFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggYTRlMzY0NWViYWFlMzM2ZDE4MGI1NDE0YmFmYWEz
NWQ4M2Y5MThjNC4uMjQxZjhlNDlkNWViZjkyNGQ1NzQxMjgwODlmMTBjMmQ4ZWJkZTlkZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJQcm9jZXNzTGF1bmNoZXIuaCIK
ICNpbmNsdWRlICJQcm9jZXNzVGhyb3R0bGVyLmgiCiAjaW5jbHVkZSAiUHJvY2Vzc1Rocm90dGxl
ckNsaWVudC5oIgorI2luY2x1ZGUgIlF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllci5oIgog
I2luY2x1ZGUgIlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJX
ZWJQcm9jZXNzUHJveHlNZXNzYWdlc1JlcGxpZXMuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0
b3JlLmgiCkBAIC0zNDAsNiArMzQxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHRyaWdnZXJCcm93
c2luZ0NvbnRleHRHcm91cFN3aXRjaEZvck5hdmlnYXRpb24oV2ViUGFnZVByb3h5SWRlbnRpZmll
ciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpCcm93c2luZ0NvbnRleHRHcm91cFN3
aXRjaERlY2lzaW9uLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVzcG9uc2VE
b21haW4sIE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyIGV4aXN0aW5nTmV0d29ya1Jlc291
cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIHN1
Y2Nlc3MpPiYmKTsKIAogICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VTcGFjZShQQUw6OlNlc3Npb25J
RCwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgdWludDY0X3QgcXVvdGEsIHVpbnQ2NF90
IGN1cnJlbnRTaXplLCB1aW50NjRfdCBzcGFjZVJlcXVpcmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHF1b3RhKT4mJik7CisgICAgdm9pZCBpbmNyZWFz
ZVF1b3RhKFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBRdW90
YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0
X3QgY3VycmVudFVzYWdlLCB1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCk7CiAKICAgICBXZWJzaXRl
RGF0YVN0b3JlKiB3ZWJzaXRlRGF0YVN0b3JlRnJvbVNlc3Npb25JRChQQUw6OlNlc3Npb25JRCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgppbmRleCAxMmQwNmNlYmQ2MmFmMTc1MGU3
ODg1NTljMTNhMWIzOTgzZmRkMmJhLi42OGMzMmM0ZjMxZWExYTE4ZTgzMDA0NDMyN2Q1MGI4NDI5
NTM2NDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC02OCw2ICs2OCw3IEBA
IG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIgewogI2VuZGlm
CiAKICAgICBSZXF1ZXN0U3RvcmFnZVNwYWNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3Ry
dWN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiBvcmlnaW4sIHVpbnQ2NF90IHF1b3RhLCB1aW50NjRf
dCBjdXJyZW50U2l6ZSwgdWludDY0X3Qgc3BhY2VSZXF1aXJlZCkgLT4gKHN0ZDo6b3B0aW9uYWw8
dWludDY0X3Q+IG5ld1F1b3RhKSBBc3luYworICAgIEluY3JlYXNlUXVvdGEoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBzdHJ1Y3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbiwgV2ViS2l0
OjpRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIgaWRlbnRpZmllciwgdWludDY0X3QgcXVv
dGEsIHVpbnQ2NF90IGN1cnJlbnRTaXplLCB1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCkKICAgICAK
ICAgICBSZXNvdXJjZUxvYWREaWRTZW5kUmVxdWVzdChXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50
aWZpZXIgcGFnZUlkZW50aWZpZXIsIHN0cnVjdCBXZWJLaXQ6OlJlc291cmNlTG9hZEluZm8gcmVz
b3VyY2VMb2FkSW5mbywgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIHN0ZDo6b3B0
aW9uYWw8SVBDOjpGb3JtRGF0YVJlZmVyZW5jZT4gaHR0cEJvZHkpCiAgICAgUmVzb3VyY2VMb2Fk
RGlkUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIg
cGFnZUlkZW50aWZpZXIsIHN0cnVjdCBXZWJLaXQ6OlJlc291cmNlTG9hZEluZm8gcmVzb3VyY2VM
b2FkSW5mbywgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNvdXJjZVJlc3BvbnNlLCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggMDhjZWNm
ZWJmZTBkZTQ0YjFmNWE0YjUwMTE0MDVlMWZkODE1MDlmZS4uMTMyOTA1NTcyZjRiOGMzZDA3OTU4
MzQzMTQ4YzJmYjU2ODNmZWZiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTE3MTYsNyArMTcxNiw3
IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZGlzcGF0Y2hPblF1ZXVlKEZ1bmN0aW9uPHZvaWQo
KT4mJiBmdW5jdGlvbikKIHVpbnQ2NF90IFdlYnNpdGVEYXRhU3RvcmU6OnBlclRoaXJkUGFydHlP
cmlnaW5TdG9yYWdlUXVvdGEoKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBDb25zaWRlciB3aGV0
aGVyIGFsbG93aW5nIHRvIHNldCBhIHBlclRoaXJkUGFydHlPcmlnaW5TdG9yYWdlUXVvdGEgZnJv
bSBhIFdlYnNpdGVEYXRhU3RvcmUuCi0gICAgcmV0dXJuIFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1h
bmFnZXI6OmRlZmF1bHRUaGlyZFBhcnR5UXVvdGFGcm9tUGVyT3JpZ2luUXVvdGEocGVyT3JpZ2lu
U3RvcmFnZVF1b3RhKCkpOworICAgIHJldHVybiBwZXJPcmlnaW5TdG9yYWdlUXVvdGEoKSAvIDEw
OwogfQogCiB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldENhY2hlTW9kZWxTeW5jaHJvbm91c2x5
Rm9yVGVzdGluZyhDYWNoZU1vZGVsIGNhY2hlTW9kZWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXggNmJjNjkz
NjljMzM4MzI4NjlkZWExZjVkYWE1MGU3OWZhYTZlN2JmOS4uODVlZTMxZTEzODNkOTdkNjQ2YzY5
OGMyZGVmN2Q5YzMzNGFiNzViZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaApAQCAtMzUwLDYgKzM1MCw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3Rv
cmFnZURpcmVjdG9yeSgpOwogICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0SmF2YVNjcmlw
dENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKTsKICAgICBzdGF0aWMgYm9vbCBodHRwM0VuYWJsZWQo
KTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ2NF90IGRlZmF1bHRQZXJPcmlnaW5RdW90YSgp
IHsgcmV0dXJuIDEwMDAgKiBNQjsgfQogCiAgICAgdm9pZCByZXNldFF1b3RhKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBjbGVhclN0b3JhZ2UoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcApp
bmRleCAzMzBiOGIxMDVhNzlkYTY1ZGMyMDdhN2VmZTNiYzM3NjAwMGUyZjFhLi4xYWU2ZDBiMTFh
ZDM4NGY2NDE2ZmZkM2JmNTQ4MzcyNWE0ZmYzYjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24uY3BwCkBAIC0zMyw2ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewog
CiBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24oSXNQZXJzaXN0ZW50IGlzUGVyc2lzdGVudCwgV2lsbENvcHlQYXRoc0Zyb21FeGlzdGlu
Z0NvbmZpZ3VyYXRpb24gd2lsbENvcHlQYXRocykKICAgICA6IG1faXNQZXJzaXN0ZW50KGlzUGVy
c2lzdGVudCkKKyAgICAsIG1fcGVyT3JpZ2luU3RvcmFnZVF1b3RhKFdlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHRQZXJPcmlnaW5RdW90YSgpKQogewogICAgIGlmIChpc1BlcnNpc3RlbnQgPT0gSXNQ
ZXJzaXN0ZW50OjpZZXMgJiYgd2lsbENvcHlQYXRocyA9PSBXaWxsQ29weVBhdGhzRnJvbUV4aXN0
aW5nQ29uZmlndXJhdGlvbjo6Tm8pIHsKICAgICAgICAgc2V0QXBwbGljYXRpb25DYWNoZURpcmVj
dG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCmluZGV4IGYxNzFhZDRjZTVl
MWI1Y2UxMzk0ZWM3ODA5NTI0MTA3ZjgyYzE3NGEuLjMwYTI5OTMxMDIyN2QyZjcyNGY0MjU3NmI2
NjEyNTQ3Yjk2MWNmMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaApA
QCAtMjYsNyArMjYsNiBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIK
LSNpbmNsdWRlIDxXZWJDb3JlL1N0b3JhZ2VRdW90YU1hbmFnZXIuaD4KICNpbmNsdWRlIDx3dGYv
VVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTIwNyw3ICsyMDYs
NyBAQCBwcml2YXRlOgogCiAgICAgU3RyaW5nIG1fY2FjaGVTdG9yYWdlRGlyZWN0b3J5OwogICAg
IFN0cmluZyBtX2dlbmVyYWxTdG9yYWdlRGlyZWN0b3J5OwotICAgIHVpbnQ2NF90IG1fcGVyT3Jp
Z2luU3RvcmFnZVF1b3RhIHsgV2ViQ29yZTo6U3RvcmFnZVF1b3RhTWFuYWdlcjo6ZGVmYXVsdFF1
b3RhKCkgfTsKKyAgICB1aW50NjRfdCBtX3Blck9yaWdpblN0b3JhZ2VRdW90YTsKICAgICBTdHJp
bmcgbV9uZXR3b3JrQ2FjaGVEaXJlY3Rvcnk7CiAgICAgU3RyaW5nIG1fYXBwbGljYXRpb25DYWNo
ZURpcmVjdG9yeTsKICAgICBTdHJpbmcgbV9hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJl
Y3RvcnlOYW1lIHsgIkZpbGVzIl9zIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwYzdjMzFiYzU1N2I1NWQ1MTcwNWZjMzlkN2U2Nzlj
OTRjNmEwYWYzLi5hMWU5YzU3NTY1OThmMTg2YjQyMTdkYmIyZWYwZjUzN2NkYTAwNWQzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0
NjcsNiArMTQ2NywxMSBAQAogCQk5M0IyNjE0RDIyN0QxNDlFMDBCOTdBNzYgLyogU3RvcmFnZU1h
bmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkz
QjI2MTQ5MjI3RDE0NzIwMEI5N0E3NiAvKiBTdG9yYWdlTWFuYWdlci5oICovOyB9OwogCQk5M0Iy
NjE0RTIyN0QxNEIxMDBCOTdBNzYgLyogTG9jYWxTdG9yYWdlRGF0YWJhc2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjI2MTQ1MjI3RDE0NzAwMEI5
N0E3NiAvKiBMb2NhbFN0b3JhZ2VEYXRhYmFzZS5oICovOyB9OwogCQk5M0IyNjE0RjIyN0QxNEIx
MDBCOTdBNzYgLyogTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0IyNjE0NjIyN0QxNDcxMDBCOTdBNzYg
LyogTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmggKi87IH07CisJCTkzQjYzMUU1MjdBQkE2
MjgwMDQ0M0E0NCAvKiBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0I2MzFFNDI3QUJBNjI3MDA0NDNB
NDQgLyogSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5oICovOyB9OworCQk5M0I2MzFFODI3
QUJBNjVEMDA0NDNBNDQgLyogSURCU3RvcmFnZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjYzMUU2MjdBQkE2NUMwMDQ0M0E0NCAvKiBJ
REJTdG9yYWdlTWFuYWdlci5oICovOyB9OworCQk5M0I2MzFFRDI3QUJBNkI0MDA0NDNBNDQgLyog
SURCU3RvcmFnZVJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5M0I2MzFFQjI3QUJBNkIzMDA0NDNBNDQgLyogSURCU3RvcmFnZVJlZ2lzdHJ5
LmggKi87IH07CisJCTkzQjYzMUYxMjdBQkFDQTkwMDQ0M0E0NCAvKiBRdW90YU1hbmFnZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjYzMUVGMjdB
QkFDQTkwMDQ0M0E0NCAvKiBRdW90YU1hbmFnZXIuaCAqLzsgfTsKKwkJOTNCNjMxRjMyN0FCQUQ4
MDAwNDQzQTQ0IC8qIFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCNjMxRjIyN0FCQUQ3RjAwNDQz
QTQ0IC8qIFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllci5oICovOyB9OwogCQk5M0JERUIw
MTE3MUREN0FGMDBCRkVFMUIgLyogV0tQYWdlTG9hZFR5cGVzUHJpdmF0ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCREVCMDAxNzFERDdBRjAwQkZF
RTFCIC8qIFdLUGFnZUxvYWRUeXBlc1ByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0Q2Qjc3MjI1NEJCNTE5MDA1OEREM0EgLyogU3Bl
ZWNoUmVjb2duaXRpb25TZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDkzRDZCNzZDMjU0Qjg5NTgwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlv
blNlcnZlci5oICovOyB9OwogCQk5M0Q2Qjc3MzI1NEJCOEM3MDA1OEREM0EgLyogV2ViU3BlZWNo
UmVjb2duaXRpb25Db25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5M0Q2Qjc2ODI1NEI3QkM2MDA1OEREM0EgLyogV2ViU3BlZWNoUmVjb2du
aXRpb25Db25uZWN0aW9uLmggKi87IH07CkBAIC01MzU2LDYgKzUzNjEsMTUgQEAKIAkJOTNCMjYx
NDkyMjdEMTQ3MjAwQjk3QTc2IC8qIFN0b3JhZ2VNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFN0b3JhZ2VNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTkzQjI2MTRBMjI3RDE0NzIwMEI5N0E3NiAvKiBTdG9yYWdlTWFuYWdlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdG9yYWdlTWFuYWdlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQjI2MTRDMjI3RDE0NzIwMEI5N0E3NiAvKiBM
b2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBMb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTkzQjYzMUUzMjdBQkE1RjcwMDQ0M0E0NCAvKiBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xp
ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0I2MzFFNDI3QUJBNjI3MDA0NDNB
NDQgLyogSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTkzQjYzMUU2MjdBQkE2NUMwMDQ0M0E0NCAvKiBJREJTdG9yYWdl
TWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJREJTdG9yYWdlTWFu
YWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0I2MzFFNzI3QUJBNjVDMDA0
NDNBNDQgLyogSURCU3RvcmFnZU1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSURCU3RvcmFnZU1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk5M0I2MzFFQTI3QUJBNkIyMDA0NDNBNDQgLyogSURCU3RvcmFnZVJlZ2lzdHJ5LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElEQlN0b3JhZ2VSZWdpc3Ry
eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzQjYzMUVCMjdBQkE2QjMwMDQ0
M0E0NCAvKiBJREJTdG9yYWdlUmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSURCU3RvcmFnZVJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTkzQjYzMUVFMjdBQkFDQTgwMDQ0M0E0NCAvKiBRdW90YU1hbmFnZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUXVvdGFNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJOTNCNjMxRUYyN0FCQUNBOTAwNDQzQTQ0IC8qIFF1b3RhTWFuYWdl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBRdW90YU1hbmFnZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNCNjMxRjIyN0FCQUQ3RjAwNDQzQTQ0IC8qIFF1
b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOTNCQTA0REEyMTUxQURGMzAwN0Y0NTVGIC8qIFdlYlNXU2VydmVyQ29u
bmVjdGlvbi5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJTV1NlcnZlckNv
bm5lY3Rpb24ubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQkEw
NERCMjE1MUFERjMwMDdGNDU1RiAvKiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQkEwNERDMjE1MUFERjMw
MDdGNDU1RiAvKiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3Nh
Z2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzU2OSw2ICs3NTgzLDcgQEAK
IAkJMUFCRjQzNzgxQTM2ODAzNTAwM0ZCMEU2IC8qIFdlYnNpdGVEYXRhICovID0gewogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk5M0I2MzFGMjI3QUJBRDdGMDA0NDNB
NDQgLyogUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLmggKi8sCiAJCQkJMUE0ODMyRDQx
QTlDREY5NjAwOEI0REZFIC8qIFdlYnNpdGVEYXRhLmNwcCAqLywKIAkJCQkxQTQ4MzJENTFBOUNE
Rjk2MDA4QjRERkUgLyogV2Vic2l0ZURhdGEuaCAqLywKIAkJCQkxQTI4QjhDQjFDODBFRDU5MDA2
RkQ3NDMgLyogV2Vic2l0ZURhdGFGZXRjaE9wdGlvbi5oICovLApAQCAtMTA0MjIsNiArMTA0Mzcs
MTIgQEAKIAkJCQk5MzVCNTc5ODI2RjUxMjcwMDA4QjQ4QUMgLyogRmlsZVN5c3RlbVN0b3JhZ2VI
YW5kbGVSZWdpc3RyeS5oICovLAogCQkJCTkzMUEwNzUxMjZGMDYzMTAwMDQ0NzRDRCAvKiBGaWxl
U3lzdGVtU3RvcmFnZU1hbmFnZXIuY3BwICovLAogCQkJCTkzMUEwNzUwMjZGMDYzMTAwMDQ0NzRD
RCAvKiBGaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIuaCAqLywKKwkJCQk5M0I2MzFFMzI3QUJBNUY3
MDA0NDNBNDQgLyogSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5jcHAgKi8sCisJCQkJOTNC
NjMxRTQyN0FCQTYyNzAwNDQzQTQ0IC8qIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQuaCAq
LywKKwkJCQk5M0I2MzFFNzI3QUJBNjVDMDA0NDNBNDQgLyogSURCU3RvcmFnZU1hbmFnZXIuY3Bw
ICovLAorCQkJCTkzQjYzMUU2MjdBQkE2NUMwMDQ0M0E0NCAvKiBJREJTdG9yYWdlTWFuYWdlci5o
ICovLAorCQkJCTkzQjYzMUVBMjdBQkE2QjIwMDQ0M0E0NCAvKiBJREJTdG9yYWdlUmVnaXN0cnku
Y3BwICovLAorCQkJCTkzQjYzMUVCMjdBQkE2QjMwMDQ0M0E0NCAvKiBJREJTdG9yYWdlUmVnaXN0
cnkuaCAqLywKIAkJCQk5M0U3OTlDOTI3NjA0OTdBMDA3NDAwOEEgLyogTG9jYWxTdG9yYWdlTWFu
YWdlci5jcHAgKi8sCiAJCQkJOTNFNzk5Q0IyNzYwNDk3QTAwNzQwMDhBIC8qIExvY2FsU3RvcmFn
ZU1hbmFnZXIuaCAqLywKIAkJCQk5M0U3OTlEODI3NjEyMTA4MDA3NDAwOEEgLyogTWVtb3J5U3Rv
cmFnZUFyZWEuY3BwICovLApAQCAtMTA0MzEsNiArMTA0NTIsOCBAQAogCQkJCTkzMDg1REM3MjZF
MUM2RUUwMDBFQzZBNyAvKiBOZXR3b3JrU3RvcmFnZU1hbmFnZXIubWVzc2FnZXMuaW4gKi8sCiAJ
CQkJOTMwODVEQzUyNkUxQzZDRjAwMEVDNkE3IC8qIE9yaWdpblN0b3JhZ2VNYW5hZ2VyLmNwcCAq
LywKIAkJCQk5MzA4NURDNjI2RTFDNkNGMDAwRUM2QTcgLyogT3JpZ2luU3RvcmFnZU1hbmFnZXIu
aCAqLywKKwkJCQk5M0I2MzFFRTI3QUJBQ0E4MDA0NDNBNDQgLyogUXVvdGFNYW5hZ2VyLmNwcCAq
LywKKwkJCQk5M0I2MzFFRjI3QUJBQ0E5MDA0NDNBNDQgLyogUXVvdGFNYW5hZ2VyLmggKi8sCiAJ
CQkJOTNFNzk5Q0MyNzYwNDk3QjAwNzQwMDhBIC8qIFNlc3Npb25TdG9yYWdlTWFuYWdlci5jcHAg
Ki8sCiAJCQkJOTNFNzk5Q0EyNzYwNDk3QTAwNzQwMDhBIC8qIFNlc3Npb25TdG9yYWdlTWFuYWdl
ci5oICovLAogCQkJCTkzRTc5OUQzMjc2MTIxMDcwMDc0MDA4QSAvKiBTUUxpdGVTdG9yYWdlQXJl
YS5jcHAgKi8sCkBAIC0xMzA0MSw2ICsxMzA2NCw5IEBACiAJCQkJMzEyQ0M5RjIyMTVCMDZGMTAw
REU0MENBIC8qIEhpZ2hQZXJmb3JtYW5jZUdQVU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTgzOUEyRjMyMUUyMDY3NDUwMDM5MDU3RSAvKiBIaWdoUGVyZm9ybWFuY2VHcmFwaGljc1VzYWdl
U2FtcGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFDMEM5NzQxRERENzYwMDAwMzJDQUQzIC8q
IEljb25Mb2FkaW5nRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTkzQjYzMUU1MjdBQkE2
MjgwMDQ0M0E0NCAvKiBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50LmggaW4gSGVhZGVycyAq
LywKKwkJCQk5M0I2MzFFODI3QUJBNjVEMDA0NDNBNDQgLyogSURCU3RvcmFnZU1hbmFnZXIuaCBp
biBIZWFkZXJzICovLAorCQkJCTkzQjYzMUVEMjdBQkE2QjQwMDQ0M0E0NCAvKiBJREJTdG9yYWdl
UmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRTM1MUNCMTgwRjJDQ0MwMEU1M0JFOSAv
KiBJREJVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQ0Y2QjI1MTJDOTNFN0EwMDhG
OUMzNSAvKiBJbWFnZU9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMUVDNjlFMTg3MjA5
MjEwMEI5NTFGMCAvKiBJbXBvcnRhbmNlQXNzZXJ0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTEz
MjU0LDYgKzEzMjgwLDggQEAKIAkJCQlBMUU2ODg3MDFGNkUyQkFCMDA3MDA2QTYgLyogUXVhcmFu
dGluZVNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEwQzIyN0UyNDUxMTMwQTAwRUQ2MTREIC8q
IFF1aWNrTG9va1RodW1ibmFpbGluZ1NvZnRMaW5rLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUVF
NTcyNTI0MDlGMTQyMDAyMDA1RDYgLyogUXVpY2tMb29rVGh1bWJuYWlsTG9hZGVyLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk5M0I2MzFGMzI3QUJBRDgwMDA0NDNBNDQgLyogUXVvdGFJbmNyZWFzZVJl
cXVlc3RJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk5M0I2MzFGMTI3QUJBQ0E5MDA0
NDNBNDQgLyogUXVvdGFNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0I2QUU0NDI2MDk3
OTlDMDBCNkVENUEgLyogUmVhc29uU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0ZEMzE4MjIy
QjM1MTVFMDA4RDBFOEIgLyogUmVkaXJlY3RTT0F1dGhvcml6YXRpb25TZXNzaW9uLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5QjEyMjlEMjIzRkYyQkNDMDA4Q0E3NTEgLyogUmVtb3RlQXVkaW9EZXN0
aW5hdGlvbklkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2Vy
dmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dl
YklEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAKaW5kZXggMDRjMjQxMGYzNWFkY2MwNDZjNTQwNmFm
MGNjZTJmZDBlODQxYWRiMC4uZDc5MDE2OWJlMGY1OGUzMDFlZGJlNDRjMDQ0Yzc4MzkxZWY0NzQ1
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVk
REIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwCkBA
IC0yOSw5ICsyOSw5IEBACiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJOZXR3b3JrU3RvcmFnZU1hbmFnZXJNZXNz
YWdlcy5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldl
YklEQlJlc3VsdC5oIgotI2luY2x1ZGUgIldlYklEQlNlcnZlck1lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSURCQ29ubmVjdGlvblRvU2VydmVy
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JREJDdXJzb3JJbmZvLmg+CkBAIC04MiwxMzIgKzgyLDEz
MiBAQCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Ub1NlcnZlciYgV2ViSURCQ29ubmVjdGlvblRv
U2VydmVyOjpjb3JlQ29ubmVjdGlvblRvU2VydgogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1Nl
cnZlcjo6ZGVsZXRlRGF0YWJhc2UoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhKQog
ewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6RGVsZXRlRGF0YWJhc2UocmVxdWVz
dERhdGEpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkRlbGV0
ZURhdGFiYXNlKHJlcXVlc3REYXRhKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2Vy
dmVyOjpvcGVuRGF0YWJhc2UoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhKQogewot
ICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6T3BlbkRhdGFiYXNlKHJlcXVlc3REYXRh
KSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpPcGVuRGF0YWJh
c2UocmVxdWVzdERhdGEpKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmFi
b3J0VHJhbnNhY3Rpb24oY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklk
ZW50aWZpZXIpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyOjpBYm9ydFRyYW5z
YWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllcikpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdv
cmtTdG9yYWdlTWFuYWdlcjo6QWJvcnRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbklkZW50aWZpZXIp
KTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmNvbW1pdFRyYW5zYWN0aW9u
KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50
NjRfdCBwZW5kaW5nUmVxdWVzdENvdW50KQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNl
cnZlcjo6Q29tbWl0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZGVudGlmaWVyLCBwZW5kaW5nUmVx
dWVzdENvdW50KSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpD
b21taXRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbklkZW50aWZpZXIsIHBlbmRpbmdSZXF1ZXN0Q291
bnQpKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRpZEZpbmlzaEhhbmRs
aW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklk
ZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlm
aWVyKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6RGlkRmluaXNoSGFuZGxp
bmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24oZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwg
dHJhbnNhY3Rpb25JZGVudGlmaWVyKSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyOjpEaWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbihkYXRh
YmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCB0cmFuc2FjdGlvbklkZW50aWZpZXIpKTsKIH0KIAog
dm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElE
QlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiBpbmZv
KQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6Q3JlYXRlT2JqZWN0U3RvcmUo
cmVxdWVzdERhdGEsIGluZm8pKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1h
bmFnZXI6OkNyZWF0ZU9iamVjdFN0b3JlKHJlcXVlc3REYXRhLCBpbmZvKSk7CiB9CiAKIHZvaWQg
V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpkZWxldGVPYmplY3RTdG9yZShjb25zdCBJREJSZXF1
ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lKQogewot
ICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6RGVsZXRlT2JqZWN0U3RvcmUocmVxdWVz
dERhdGEsIG9iamVjdFN0b3JlTmFtZSkpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9y
YWdlTWFuYWdlcjo6RGVsZXRlT2JqZWN0U3RvcmUocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlTmFt
ZSkpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6cmVuYW1lT2JqZWN0U3Rv
cmUoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCB1aW50NjRfdCBvYmplY3RTdG9y
ZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSkKIHsKLSAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJJREJTZXJ2ZXI6OlJlbmFtZU9iamVjdFN0b3JlKHJlcXVlc3REYXRhLCBvYmplY3RTdG9y
ZUlkZW50aWZpZXIsIG5ld05hbWUpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFn
ZU1hbmFnZXI6OlJlbmFtZU9iamVjdFN0b3JlKHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50
aWZpZXIsIG5ld05hbWUpKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmNs
ZWFyT2JqZWN0U3RvcmUoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCB1aW50NjRf
dCBvYmplY3RTdG9yZUlkZW50aWZpZXIpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2Vy
dmVyOjpDbGVhck9iamVjdFN0b3JlKHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIp
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkNsZWFyT2JqZWN0
U3RvcmUocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmllcikpOwogfQogCiB2b2lkIFdl
YklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Y3JlYXRlSW5kZXgoY29uc3QgSURCUmVxdWVzdERhdGEm
IHJlcXVlc3REYXRhLCBjb25zdCBJREJJbmRleEluZm8mIGluZm8pCiB7Ci0gICAgc2VuZChNZXNz
YWdlczo6V2ViSURCU2VydmVyOjpDcmVhdGVJbmRleChyZXF1ZXN0RGF0YSwgaW5mbykpOworICAg
IHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Q3JlYXRlSW5kZXgocmVxdWVz
dERhdGEsIGluZm8pKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRlbGV0
ZUluZGV4KGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgdWludDY0X3Qgb2JqZWN0
U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGluZGV4TmFtZSkKIHsKLSAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OkRlbGV0ZUluZGV4KHJlcXVlc3REYXRhLCBvYmplY3RTdG9y
ZUlkZW50aWZpZXIsIGluZGV4TmFtZSkpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9y
YWdlTWFuYWdlcjo6RGVsZXRlSW5kZXgocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmll
ciwgaW5kZXhOYW1lKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpyZW5h
bWVJbmRleChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIHVpbnQ2NF90IG9iamVj
dFN0b3JlSWRlbnRpZmllciwgdWludDY0X3QgaW5kZXhJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IG5ld05hbWUpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyOjpSZW5hbWVJbmRl
eChyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleElkZW50aWZpZXIsIG5l
d05hbWUpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OlJlbmFt
ZUluZGV4KHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4SWRlbnRpZmll
ciwgbmV3TmFtZSkpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6cHV0T3JB
ZGQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXlEYXRhJiBr
ZXlEYXRhLCBjb25zdCBJREJWYWx1ZSYgdmFsdWUsIGNvbnN0IEluZGV4ZWREQjo6T2JqZWN0U3Rv
cmVPdmVyd3JpdGVNb2RlIG1vZGUpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVy
OjpQdXRPckFkZChyZXF1ZXN0RGF0YSwga2V5RGF0YSwgdmFsdWUsIG1vZGUpKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OlB1dE9yQWRkKHJlcXVlc3REYXRhLCBr
ZXlEYXRhLCB2YWx1ZSwgbW9kZSkpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZl
cjo6Z2V0UmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURC
R2V0UmVjb3JkRGF0YSYgZ2V0UmVjb3JkRGF0YSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJ
REJTZXJ2ZXI6OkdldFJlY29yZChyZXF1ZXN0RGF0YSwgZ2V0UmVjb3JkRGF0YSkpOworICAgIHNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6R2V0UmVjb3JkKHJlcXVlc3REYXRh
LCBnZXRSZWNvcmREYXRhKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpn
ZXRBbGxSZWNvcmRzKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURC
R2V0QWxsUmVjb3Jkc0RhdGEmIGdldEFsbFJlY29yZHNEYXRhKQogewotICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYklEQlNlcnZlcjo6R2V0QWxsUmVjb3JkcyhyZXF1ZXN0RGF0YSwgZ2V0QWxsUmVjb3Jk
c0RhdGEpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkdldEFs
bFJlY29yZHMocmVxdWVzdERhdGEsIGdldEFsbFJlY29yZHNEYXRhKSk7CiB9CiAKIHZvaWQgV2Vi
SURCQ29ubmVjdGlvblRvU2VydmVyOjpnZXRDb3VudChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVx
dWVzdERhdGEsIGNvbnN0IElEQktleVJhbmdlRGF0YSYgcmFuZ2UpCiB7Ci0gICAgc2VuZChNZXNz
YWdlczo6V2ViSURCU2VydmVyOjpHZXRDb3VudChyZXF1ZXN0RGF0YSwgcmFuZ2UpKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkdldENvdW50KHJlcXVlc3REYXRh
LCByYW5nZSkpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGVsZXRlUmVj
b3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5UmFuZ2VE
YXRhJiByYW5nZSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OkRlbGV0ZVJl
Y29yZChyZXF1ZXN0RGF0YSwgcmFuZ2UpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6OkRlbGV0ZVJlY29yZChyZXF1ZXN0RGF0YSwgcmFuZ2UpKTsKIH0KIAogdm9p
ZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6Om9wZW5DdXJzb3IoY29uc3QgSURCUmVxdWVzdERh
dGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJDdXJzb3JJbmZvJiBpbmZvKQogewotICAgIHNlbmQo
TWVzc2FnZXM6OldlYklEQlNlcnZlcjo6T3BlbkN1cnNvcihyZXF1ZXN0RGF0YSwgaW5mbykpOwor
ICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6T3BlbkN1cnNvcihyZXF1
ZXN0RGF0YSwgaW5mbykpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6aXRl
cmF0ZUN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkl0
ZXJhdGVDdXJzb3JEYXRhJiBkYXRhKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZl
cjo6SXRlcmF0ZUN1cnNvcihyZXF1ZXN0RGF0YSwgZGF0YSkpOworICAgIHNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6SXRlcmF0ZUN1cnNvcihyZXF1ZXN0RGF0YSwgZGF0YSkp
OwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZXN0YWJsaXNoVHJhbnNhY3Rp
b24odWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCVHJhbnNh
Y3Rpb25JbmZvJiBpbmZvKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6RXN0
YWJsaXNoVHJhbnNhY3Rpb24oZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgaW5mbykpOwor
ICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6RXN0YWJsaXNoVHJhbnNh
Y3Rpb24oZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgaW5mbykpOwogfQogCiB2b2lkIFdl
YklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGF0YWJhc2VDb25uZWN0aW9uUGVuZGluZ0Nsb3NlKHVp
bnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpCiB7Ci0gICAgc2VuZChNZXNzYWdl
czo6V2ViSURCU2VydmVyOjpEYXRhYmFzZUNvbm5lY3Rpb25QZW5kaW5nQ2xvc2UoZGF0YWJhc2VD
b25uZWN0aW9uSWRlbnRpZmllcikpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdl
TWFuYWdlcjo6RGF0YWJhc2VDb25uZWN0aW9uUGVuZGluZ0Nsb3NlKGRhdGFiYXNlQ29ubmVjdGlv
bklkZW50aWZpZXIpKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRhdGFi
YXNlQ29ubmVjdGlvbkNsb3NlZCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVy
KQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6RGF0YWJhc2VDb25uZWN0aW9u
Q2xvc2VkKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpKTsKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkRhdGFiYXNlQ29ubmVjdGlvbkNsb3NlZChkYXRhYmFz
ZUNvbm5lY3Rpb25JZGVudGlmaWVyKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2Vy
dmVyOjphYm9ydE9wZW5BbmRVcGdyYWRlTmVlZGVkKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlv
bklkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVu
dGlmaWVyKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6QWJvcnRPcGVuQW5k
VXBncmFkZU5lZWRlZChkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCB0cmFuc2FjdGlvbklk
ZW50aWZpZXIpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkFi
b3J0T3BlbkFuZFVwZ3JhZGVOZWVkZWQoZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgdHJh
bnNhY3Rpb25JZGVudGlmaWVyKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVy
OjpkaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklk
ZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIs
IGNvbnN0IEluZGV4ZWREQjo6Q29ubmVjdGlvbkNsb3NlZE9uQmVoYWxmT2ZTZXJ2ZXIgY29ubmVj
dGlvbkNsb3NlZCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OkRpZEZpcmVW
ZXJzaW9uQ2hhbmdlRXZlbnQoZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgcmVxdWVzdElk
ZW50aWZpZXIsIGNvbm5lY3Rpb25DbG9zZWQpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3Jr
U3RvcmFnZU1hbmFnZXI6OkRpZEZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQoZGF0YWJhc2VDb25uZWN0
aW9uSWRlbnRpZmllciwgcmVxdWVzdElkZW50aWZpZXIsIGNvbm5lY3Rpb25DbG9zZWQpKTsKIH0K
IAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6Om9wZW5EQlJlcXVlc3RDYW5jZWxsZWQo
Y29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhKQogewotICAgIHNlbmQoTWVzc2FnZXM6
OldlYklEQlNlcnZlcjo6T3BlbkRCUmVxdWVzdENhbmNlbGxlZChyZXF1ZXN0RGF0YSkpOworICAg
IHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6T3BlbkRCUmVxdWVzdENhbmNl
bGxlZChyZXF1ZXN0RGF0YSkpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6
Z2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmll
ciYgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2luKQogewotICAg
IHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6R2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNp
b25zKHJlcXVlc3RJZGVudGlmaWVyLCBvcmlnaW4pKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrU3RvcmFnZU1hbmFnZXI6OkdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhyZXF1ZXN0
SWRlbnRpZmllciwgb3JpZ2luKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVy
OjpkaWREZWxldGVEYXRhYmFzZShjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvSW5Qcm9jZXNzSURCU2VydmVyLmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCmluZGV4
IGVhMmUyYTc4Zjg4ZmZkZDEwMWEzYTEzN2YwZDVhMTBhNTZlMTBmYjIuLjBjYWRiNTA0MmJhMTYx
MDc3Zjk0NDlhOTczZGNmOTgzMmQzNzAyYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvU3RvcmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvU3RvcmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCkBAIC00Miw2ICs0Miw4IEBACiAKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCitzdGF0aWMgY29uc3RleHByIHVpbnQ2NF90IGRlZmF1
bHRQZXJPcmlnaW5RdW90YSA9ICAxMDAwICogTUI7CisKIFJlZjxJblByb2Nlc3NJREJTZXJ2ZXI+
IEluUHJvY2Vzc0lEQlNlcnZlcjo6Y3JlYXRlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsK
ICAgICBBU1NFUlQoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpOwpAQCAtNzMsNyArNzUsNyBAQCBJ
blByb2Nlc3NJREJTZXJ2ZXI6On5JblByb2Nlc3NJREJTZXJ2ZXIoKQogU3RvcmFnZVF1b3RhTWFu
YWdlciogSW5Qcm9jZXNzSURCU2VydmVyOjpxdW90YU1hbmFnZXIoY29uc3QgQ2xpZW50T3JpZ2lu
JiBvcmlnaW4pCiB7CiAgICAgcmV0dXJuIG1fcXVvdGFNYW5hZ2Vycy5lbnN1cmUob3JpZ2luLCBb
XSB7Ci0gICAgICAgIHJldHVybiBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpjcmVhdGUoU3RvcmFnZVF1
b3RhTWFuYWdlcjo6ZGVmYXVsdFF1b3RhKCksIFtdIHsKKyAgICAgICAgcmV0dXJuIFN0b3JhZ2VR
dW90YU1hbmFnZXI6OmNyZWF0ZShkZWZhdWx0UGVyT3JpZ2luUXVvdGEsIFtdIHsKICAgICAgICAg
ICAgIHJldHVybiAwOwogICAgICAgICB9LCBbXSh1aW50NjRfdCBxdW90YSwgdWludDY0X3QgY3Vy
cmVudFNwYWNlLCB1aW50NjRfdCBzcGFjZUluY3JlYXNlLCBhdXRvIGNhbGxiYWNrKSB7CiAgICAg
ICAgICAgICBjYWxsYmFjayhxdW90YSArIGN1cnJlbnRTcGFjZSArIHNwYWNlSW5jcmVhc2UpOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDU2ZDJl
ODkxZWIxMjg2OTU1NWI5ZGM5MzZjYjA5NTUwZmZmODA5NmQuLjEyYjFjMWZkZjMyZmQzOTA0YjY1
NzJjYjVkZjhkZGY3MDQ3MzExZGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMi0wMi0wNyAgU2lodWkgTGl1ICA8
c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBNYW5hZ2UgSW5kZXhlZERCIHN0b3JhZ2Ug
Ynkgb3JpZ2luCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzQ5MjUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg3NTU1MDE0PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IENocmlzIER1bWV6LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9JbmRleGVkREJGaWxlTmFtZS5tbToKKyAgICAgICAgKHJ1blRlc3QpOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCUGVyc2lzdGVu
Y2UubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVk
REJTdXNwZW5kSW1taW5lbnRseS5tbToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU3RvcmVCbG9iVGhlbkRlbGV0ZS5tbToKKyAgICAg
ICAgKFRFU1QpOgorCiAyMDIyLTAyLTA3ICBSb3kgUmVhcG9yICA8cnJlYXBvckBhcHBsZS5jb20+
CiAKICAgICAgICAgW3dlYmtpdGNvcmVweV0gQXV0b2luc3RhbGxlciBtYXkgZmFpbCB0byBpbnN0
YWxsIHdoZWVscwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9JbmRleGVkREJGaWxlTmFtZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvSW5kZXhlZERCRmlsZU5hbWUubW0KaW5kZXggYTZiMDEyOWJjMTA1OWM0ZjljMTE4
ZDFmZDdlZmQyMTIzZWFjMmM3YS4uNDEwMjIyNGU0NTI3NGQzNjM3OWU0YmIwMDJhMGZlZTg5ODMy
ZjViYyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9J
bmRleGVkREJGaWxlTmFtZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0luZGV4ZWREQkZpbGVOYW1lLm1tCkBAIC03MSwyMCArNzEsMjMgQEAgc3RhdGljIHZv
aWQgcnVuVGVzdCgpCiAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBzdHJpbmcyID0gKE5TU3RyaW5n
ICopW2xhc3RTY3JpcHRNZXNzYWdlIGJvZHldOwogICAgIEVYUEVDVF9XS19TVFJFUShAIlN1Y2Nl
c3MiLCBzdHJpbmcyLmdldCgpKTsKIAotICAgIC8vIEZvciBkYXRhYmFzZSB0aGF0IGlzIG5vdCBv
cGVuZWQgYWZ0ZXIgdXBncmFkZSwgaXRzIGZpbGUgc2hvdWxkIGJlIGluIHYwLgorICAgIC8vIEFs
bCBkYXRhYmFzZXMgb2YgYW4gb3JpZ2luIGFyZSBtaWdyYXRlZCB0byBuZXcgdmVyc2lvbiBkaXJl
Y3Rvcnkgd2hlbiB0aGUgb3JpZ2luIGlzIGFjY2Vzc2VkLgogICAgIGF1dG8gZGVmYXVsdEZpbGVN
YW5hZ2VyID0gW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdOwogICAgIE5TU3RyaW5nICpl
eGlzdGluZ0RhdGFiYXNlTmFtZSA9IEAiSW5kZXhlZERCVGVzdCI7CiAgICAgTlNTdHJpbmcgKmNy
ZWF0ZWREYXRhYmFzZU5hbWUgPSBAIkluZGV4ZWREQk90aGVyIjsKICAgICBOU1N0cmluZyAqdW51
c2VkRGF0YWJhc2VOYW1lID0gQCJJbmRleGVkREJVbnVzZWQiOwogICAgIE5TU3RyaW5nICpleGlz
dGluZ0RhdGJhc2VIYXNoID0gV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0ZUhhc2hG
b3JGaWxlTmFtZShleGlzdGluZ0RhdGFiYXNlTmFtZSk7CiAgICAgTlNTdHJpbmcgKmNyZWF0ZWRE
YXRhYmFzZUhhc2ggPSBXZWJDb3JlOjpTUUxpdGVGaWxlU3lzdGVtOjpjb21wdXRlSGFzaEZvckZp
bGVOYW1lKGNyZWF0ZWREYXRhYmFzZU5hbWUpOworICAgIE5TU3RyaW5nICp1bnVzZWREYXRhYmFz
ZUhhc2ggPSBXZWJDb3JlOjpTUUxpdGVGaWxlU3lzdGVtOjpjb21wdXRlSGFzaEZvckZpbGVOYW1l
KGNyZWF0ZWREYXRhYmFzZU5hbWUpOwogICAgIE5TVVJMICppZGJSb290VVJMID0gW1tXS1dlYnNp
dGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5
XTsKICAgICBOU1VSTCAqb2xkVmVyc2lvbkRpcmVjdG9yeVVSTCA9IFtpZGJSb290VVJMIFVSTEJ5
QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAInYwIl07CiAgICAgTlNVUkwgKm5ld1ZlcnNpb25EaXJl
Y3RvcnlVUkwgPSBbaWRiUm9vdFVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJ2MSJd
OwogICAgIE5TVVJMICpvbGRWZXJzaW9uT3JpZ2luRGlyZWN0b3J5VVJMID0gW29sZFZlcnNpb25E
aXJlY3RvcnlVUkwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OiBAImZpbGVfXzAiXTsKICAg
ICBOU1VSTCAqbmV3VmVyc2lvbk9yaWdpbkRpcmVjdG9yeVVSTCA9IFtuZXdWZXJzaW9uRGlyZWN0
b3J5VVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDogQCJmaWxlX18wIl07CiAgICAgTlNV
UkwgKm9sZFZlcnNpb25VbnVzZWREYXRhYmFzZURpcmVjdG9yeVVSTCA9IFtvbGRWZXJzaW9uT3Jp
Z2luRGlyZWN0b3J5VVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDp1bnVzZWREYXRhYmFz
ZU5hbWVdOwotICAgIEVYUEVDVF9UUlVFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0g
ZmlsZUV4aXN0c0F0UGF0aDpvbGRWZXJzaW9uVW51c2VkRGF0YWJhc2VEaXJlY3RvcnlVUkwucGF0
aF0pOworICAgIE5TVVJMICpuZXdWZXJzaW9uVW51c2VkRGF0YWJhc2VEaXJlY3RvcnlVUkwgPSBb
bmV3VmVyc2lvbk9yaWdpbkRpcmVjdG9yeVVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6
dW51c2VkRGF0YWJhc2VIYXNoXTsKKyAgICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRl
ZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOm9sZFZlcnNpb25VbnVzZWREYXRhYmFzZURp
cmVjdG9yeVVSTC5wYXRoXSk7CisgICAgRVhQRUNUX1RSVUUoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1
bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOm5ld1ZlcnNpb25VbnVzZWREYXRhYmFzZURpcmVj
dG9yeVVSTC5wYXRoXSk7CiAgICAgCiAgICAgLy8gRm9yIGRhdGFiYXNlIHRoYXQgaXMgb3BlbmVk
IGFmdGVyIHVwZ3JhZGUsIGl0cyBmaWxlIHNob3VsZCBvbmx5IGJlIGluIHYxLgogICAgIE5TVVJM
ICpvbGRWZXJzaW9uRXhpc3RpbmdEYXRhYmFzZURpcmVjdG9yeVVSTCA9IFtvbGRWZXJzaW9uT3Jp
Z2luRGlyZWN0b3J5VVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDogZXhpc3RpbmdEYXRh
YmFzZU5hbWVdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9JbmRleGVkREJQZXJzaXN0ZW5jZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvSW5kZXhlZERCUGVyc2lzdGVuY2UubW0KaW5kZXggMjcxOGM0YWIzNjlhODE4
MmRhMGUxMThjNDUxNjY2YWU5ZDFlMmM3NC4uNGYwYThlYzk0NDU0OGNhNmM3ODcwMTVjNmI2ZDk1
MDg1ODgzODhiMyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9JbmRleGVkREJQZXJzaXN0ZW5jZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0luZGV4ZWREQlBlcnNpc3RlbmNlLm1tCkBAIC0zMDUsMTAgKzMwNSwx
NCBAQCBURVNUKEluZGV4ZWREQiwgSW5kZXhlZERCVGhpcmRQYXJ0eURhdGFSZW1vdmFsKQogICAg
IEVYUEVDVF9XS19TVFJFUSggQCJkYXRhYmFzZSBpcyBjcmVhdGVkIC0gcHV0IGl0ZW0gc3VjY2Vz
cyIsIChOU1N0cmluZyAqKVtsYXN0U2NyaXB0TWVzc2FnZSBib2R5XSk7CiAKICAgICByZWFkeVRv
Q29udGludWUgPSBmYWxzZTsKLSAgICBbW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0
b3JlXSBmZXRjaERhdGFSZWNvcmRzT2ZUeXBlczp3ZWJzaXRlRGF0YVR5cGVzLmdldCgpIGNvbXBs
ZXRpb25IYW5kbGVyOl4oTlNBcnJheTxXS1dlYnNpdGVEYXRhUmVjb3JkICo+ICpkYXRhUmVjb3Jk
cykgewotICAgICAgICBFWFBFQ1RfRVEoMXUsIGRhdGFSZWNvcmRzLmNvdW50KTsKLSAgICAgICAg
RVhQRUNUX1dLX1NUUkVRKCJpZnJhbWUiLCBbW2RhdGFSZWNvcmRzIGZpcnN0T2JqZWN0XSBkaXNw
bGF5TmFtZV0pOwotICAgICAgICBbW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3Jl
XSByZW1vdmVEYXRhT2ZUeXBlczp3ZWJzaXRlRGF0YVR5cGVzLmdldCgpIGZvckRhdGFSZWNvcmRz
OmRhdGFSZWNvcmRzIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7CisgICAgW1tXS1dlYnNpdGVEYXRh
U3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gZmV0Y2hEYXRhUmVjb3Jkc09mVHlwZXM6d2Vic2l0ZURh
dGFUeXBlcy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8V0tXZWJzaXRlRGF0YVJl
Y29yZCAqPiAqcmVjb3JkcykgeworICAgICAgICBFWFBFQ1RfRVEoMnUsIHJlY29yZHMuY291bnQp
OworICAgICAgICBOU1NvcnREZXNjcmlwdG9yICpyZWNvcmREZXNjcmlwdG9yID0gW05TU29ydERl
c2NyaXB0b3Igc29ydERlc2NyaXB0b3JXaXRoS2V5OkAiZGlzcGxheU5hbWUiIGFzY2VuZGluZzpZ
RVNdOworICAgICAgICBOU0FycmF5ICpzb3J0RGVzY3JpcHRvcnMgPSBAW3JlY29yZERlc2NyaXB0
b3JdOworICAgICAgICBOU0FycmF5ICpzb3J0ZWRSZWNvcmRzID0gW3JlY29yZHMgc29ydGVkQXJy
YXlVc2luZ0Rlc2NyaXB0b3JzOnNvcnREZXNjcmlwdG9yc107CisgICAgICAgIEVYUEVDVF9XS19T
VFJFUSgiaWZyYW1lIiwgW1tzb3J0ZWRSZWNvcmRzIG9iamVjdEF0SW5kZXg6MF0gZGlzcGxheU5h
bWVdKTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKCJ3ZWJraXQub3JnIiwgW1tzb3J0ZWRSZWNv
cmRzIG9iamVjdEF0SW5kZXg6MV0gZGlzcGxheU5hbWVdKTsKKyAgICAgICAgW1tXS1dlYnNpdGVE
YXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gcmVtb3ZlRGF0YU9mVHlwZXM6d2Vic2l0ZURhdGFU
eXBlcy5nZXQoKSBmb3JEYXRhUmVjb3JkczpyZWNvcmRzIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7
CiAgICAgICAgICAgICByZWFkeVRvQ29udGludWUgPSB0cnVlOwogICAgICAgICB9XTsKICAgICB9
XTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5k
ZXhlZERCU3VzcGVuZEltbWluZW50bHkubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0luZGV4ZWREQlN1c3BlbmRJbW1pbmVudGx5Lm1tCmluZGV4IGRjNjM0M2UzZWRk
ZmU0OGRiZmVlZTRmNzk5OTJmZmNiNWY2MGUxNmIuLmJmOTBmNTdjZTA5NzVlOTRlNjM3MDQ3YTVk
MGU5ZGZkMThmYmQ2MjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvSW5kZXhlZERCU3VzcGVuZEltbWluZW50bHkubW0KKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJTdXNwZW5kSW1taW5lbnRseS5tbQpA
QCAtNzMsNiArNzMsMTIgQEAgc3RhdGljIHZvaWQga2VlcE5ldHdvcmtQcm9jZXNzQWN0aXZlKCkK
IAogVEVTVChJbmRleGVkREIsIEluZGV4ZWREQlN1c3BlbmRJbW1pbmVudGx5KQogeworICAgIHJl
YWR5VG9Db250aW51ZSA9IGZhbHNlOworICAgIFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHRE
YXRhU3RvcmVdIHJlbW92ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0
ZURhdGFUeXBlc10gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9u
SGFuZGxlcjpeKCkgeworICAgICAgICByZWFkeVRvQ29udGludWUgPSB0cnVlOworICAgIH1dOwor
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVhZHlUb0NvbnRpbnVlKTsKKwogICAgIGF1
dG8gaGFuZGxlciA9IGFkb3B0TlMoW1tJbmRleGVkREJTdXNwZW5kSW1taW5lbnRseU1lc3NhZ2VI
YW5kbGVyIGFsbG9jXSBpbml0XSk7CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhb
W1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBbW2NvbmZpZ3VyYXRp
b24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5kbGVy
LmdldCgpIG5hbWU6QCJ0ZXN0SGFuZGxlciJdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TdG9yZUJsb2JUaGVuRGVsZXRlLm1tIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TdG9yZUJsb2JUaGVuRGVsZXRlLm1tCmluZGV4
IGFhYmZmZjg3YmM2NGIzOTUyYjI0MTQ1MjE1ZWUwMzgyODZiN2M4OTEuLjhlODVhNDBhNWU4M2Jh
MDM0MzIxZTdlNzk2OWQ4MzU1ZTMyYzI0NjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvU3RvcmVCbG9iVGhlbkRlbGV0ZS5tbQorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1N0b3JlQmxvYlRoZW5EZWxldGUubW0KQEAg
LTg3LDcgKzg3LDcgQEAgVEVTVChJbmRleGVkREIsIFN0b3JlQmxvYlRoZW5SZW1vdmVEYXRhKQog
ICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY29weUl0ZW1BdFBhdGg6ZGF0YWJh
c2VGaWxlUGF0aCB0b1BhdGg6ZmFrZVNobVBhdGggZXJyb3I6bmlsXTsKICAgICBbW05TRmlsZU1h
bmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNvcHlJdGVtQXRQYXRoOmRhdGFiYXNlRmlsZVBhdGggdG9Q
YXRoOmZha2VXYWxQYXRoIGVycm9yOm5pbF07CiAKLSAgICAvLyBNYWtlIHNvbWUgb3RoZXIgLmJs
b2IgZmlsZXMgaW4gdGhlIGRhdGFiYXNlIGRpcmVjdG9yeSB0byBsYXRlciB2YWxpZGF0ZSB0aGF0
IG9ubHkgYXBwcm9wcmlhdGUgZmlsZXMgYXJlIGRlbGV0ZWQuCisgICAgLy8gTWFrZSBzb21lIG90
aGVyIC5ibG9iIGZpbGVzIGluIHRoZSBkYXRhYmFzZSBkaXJlY3RvcnkgdG8gbGF0ZXIgdmFsaWRh
dGUgYWxsIGJsb2IgZmlsZXMgaW4gdGhlIGRpcmVjdG9yeSBhcmUgZGVsZXRlZC4KICAgICBOU1N0
cmluZyAqb3RoZXJCbG9iMSA9IFtkYXRhYmFzZURpcmVjdG9yeSBzdHJpbmdCeUFwcGVuZGluZ1Bh
dGhDb21wb25lbnQ6QCI3MTgyLmJsb2IiXTsKICAgICBOU1N0cmluZyAqb3RoZXJCbG9iMiA9IFtk
YXRhYmFzZURpcmVjdG9yeSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCIxYS5ibG9i
Il07CiAgICAgTlNTdHJpbmcgKm90aGVyQmxvYjMgPSBbZGF0YWJhc2VEaXJlY3Rvcnkgc3RyaW5n
QnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiYTEuYmxvYiJdOwpAQCAtMTAyLDEzICsxMDIsMTIg
QEAgVEVTVChJbmRleGVkREIsIFN0b3JlQmxvYlRoZW5SZW1vdmVEYXRhKQogICAgICAgICBFWFBF
Q1RfRkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRo
OmJsb2JGaWxlUGF0aF0pOwogICAgICAgICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRl
ZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmRhdGFiYXNlRmlsZVBhdGhdKTsKIAotICAg
ICAgICAvLyBNYWtlIHN1cmUgdGhlIGZha2UgYmxvYiBmaWxlIHdpdGggYSB2YWxpZCBibG9iIGZp
bGUgbmFtZSBpcyBnb25lLgorICAgICAgICAvLyBNYWtlIHN1cmUgYWxsIGZha2UgYmxvYiBmaWxl
IGFyZSBnb25lLgogICAgICAgICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRN
YW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOm90aGVyQmxvYjFdKTsKIAotICAgICAgICAvLyBNYWtl
IHN1cmUgdGhlIGZha2UgYmxvYiBmaWxlcyB3aXRoIGludmFsaWQgYmxvYiBmaWxlIG5hbWVzIGFy
ZSBzdGlsbCB0aGVyZS4KLSAgICAgICAgRVhQRUNUX1RSVUUoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1
bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOm90aGVyQmxvYjJdKTsKLSAgICAgICAgRVhQRUNU
X1RSVUUoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOm90
aGVyQmxvYjNdKTsKLSAgICAgICAgRVhQRUNUX1RSVUUoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRN
YW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOm90aGVyQmxvYjRdKTsKKyAgICAgICAgRVhQRUNUX0ZB
TFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpvdGhl
ckJsb2IyXSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1h
bmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6b3RoZXJCbG9iM10pOworICAgICAgICBFWFBFQ1RfRkFM
U0UoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOm90aGVy
QmxvYjRdKTsKIAogICAgICAgICAvLyBNYWtlIHN1cmUgZXZlcnl0aGluZyByZWxhdGVkIHRvIHRo
ZSBmYWtlIGRhdGFiYXNlIGlzIGdvbmUuCiAgICAgICAgIEVYUEVDVF9GQUxTRShbW05TRmlsZU1h
bmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6ZmFrZVNobVBhdGhdKTsK
</data>
<flag name="commit-queue"
          id="477851"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451197</attachid>
            <date>2022-02-07 19:37:17 -0800</date>
            <delta_ts>2022-02-08 01:08:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234925-20220207193716.patch</filename>
            <type>text/plain</type>
            <size>284952</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5MjM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjc1N2U4NDIyODE1ODE3
YjMwNzFkNzhmMDU5NGI2NWQ4ZDA3ZjQyZS4uZDNjNzYyOTQzYmRlNzZhNTE1MTg0YjA2MDhjMmQ4
OTYxNmFhOGUzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk1IEBACisyMDIyLTAyLTA3ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIE1hbmFnZSBJbmRleGVkREIg
c3RvcmFnZSBieSBvcmlnaW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzNDkyNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODc1NTUwMTQ+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAgQm90aCBXZWJLaXQgYW5k
IFdlYktpdExlZ2FjeSB1c2VkIElEQlNlcnZlciB0byBtYW5hZ2UgVW5pcXVlSURCRGF0YWJhc2Vz
LCBhbmQgVW5pcXVlSURCRGF0YWJhc2UgcG9pbnRlZCB0byAKKyAgICAgICAgSURCU2VydmVyLiBO
b3cgdGhhdCBXZWJLaXQgdXNlcyBXZWJLaXQ6OklEQlN0b3JhZ2VNYW5hZ2VyIHRvIG1hbmFnZSBV
bmlxdWVJREJEYXRhYmFzZXMuIFdlIHVudGllIHRoZSAKKyAgICAgICAga25vdCBiZXR3ZWVuIElE
QlNlcnZlciBhbmQgVW5pcXVlSURCRGF0YWJhc2UgYnkgYWRkaW5nIGEgbmV3IGFic3RyYWN0IGNs
YXNzIFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlciBhbmQgbWFrZQorICAgICAgICBVbmlxdWVJREJE
YXRhYmFzZSBwb2ludCB0byBVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuCisKKyAgICAgICAgQWxz
bywgYXMgcXVvdGEgY2hlY2sgaXMgbm8gbG9uZ2VyIGFzeW5jIGFjY29yZGluZyB0byBjaGFuZ2Vz
IGluIFdlYktpdCwgd2UgbmVlZCB0byB1cGRhdGUgb3BlcmF0aW9ucyBpbgorICAgICAgICBVbmlx
dWVJREJEYXRhYmFzZSB0byBhZG9wdCB0aGUgY2hhbmdlLgorCisgICAgICAgIENvdmVyZWQgYnkg
ZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnQuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6SURCU2VydmVyOjpyZWdpc3RlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OnVucmVnaXN0ZXJDb25uZWN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpjcmVhdGVCYWNraW5nU3RvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OnVwZ3JhZGVkRGF0YWJhc2VE
aXJlY3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OnJlZ2lz
dGVyRGF0YWJhc2VDb25uZWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklEQlNl
cnZlcjo6SURCU2VydmVyOjp1bnJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0aW9uKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpjbG9zZUFuZFRha2VVbmlx
dWVJREJEYXRhYmFzZSk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL0lEQlNlcnZlci5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1v
cnlJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1v
cnlJREJCYWNraW5nU3RvcmU6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUp
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3Rv
cmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3Rv
cmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlPYmplY3RTdG9yZTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5T2JqZWN0U3RvcmU6
Ok1lbW9yeU9iamVjdFN0b3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
TWVtb3J5T2JqZWN0U3RvcmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
U1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
U1FMaXRlSURCQmFja2luZ1N0b3JlOjpTUUxpdGVJREJCYWNraW5nU3RvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmVuY29kZURhdGFiYXNl
TmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6ZGVjb2RlRGF0YWJhc2VOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FM
aXRlSURCQmFja2luZ1N0b3JlOjpnZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbyk6CisgICAgICAg
IChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlQmFja2lu
Z1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0
b3JlOjpmaWxlbmFtZUZvckRhdGFiYXNlTmFtZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZnVsbERhdGFiYXNlRGly
ZWN0b3J5V2l0aFVwZ3JhZGUpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6VW5pcXVlSURCRGF0YWJhc2UpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6bWFuYWdlcik6CisgICAgICAg
IChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtQ3VycmVudE9w
ZW5PcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRh
YmFzZTo6cGVyZm9ybUN1cnJlbnRPcGVuT3BlcmF0aW9uQWZ0ZXJTcGFjZUNoZWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZUJhY2tpbmdT
dG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpj
cmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlE
QkRhdGFiYXNlOjpkZWxldGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2
ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpyZW5hbWVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpjbGVhck9iamVjdFN0b3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZUluZGV4
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0
ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6
OnJlbmFtZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0
YWJhc2U6OnB1dE9yQWRkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURC
RGF0YWJhc2U6OnB1dE9yQWRkQWZ0ZXJTcGFjZUNoZWNrKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmdldFJlY29yZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRBbGxSZWNvcmRzKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmdldENvdW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZVJlY29yZCk6
CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuQ3Vy
c29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6Oml0
ZXJhdGVDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRh
YmFzZTo6Y29tbWl0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpV
bmlxdWVJREJEYXRhYmFzZTo6YWJvcnRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJ
REJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpoYXNEYXRhSW5NZW1vcnkgY29uc3QpOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6c2VydmVyKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJh
c2VDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURC
RGF0YWJhc2VDb25uZWN0aW9uOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb246On5Vbmlx
dWVJREJEYXRhYmFzZUNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpV
bmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb246Om1hbmFnZXIpOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uaDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uOjpzZXJ2ZXIp
OiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJE
YXRhYmFzZU1hbmFnZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVu
aXF1ZUlEQkRhdGFiYXNlTWFuYWdlcjo6flVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlcik6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZVRy
YW5zYWN0aW9uOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6flVuaXF1ZUlEQkRh
dGFiYXNlVHJhbnNhY3Rpb24pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9V
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvc2hhcmVkL0lEQkVycm9yLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJFcnJvcjo6b3BlcmF0
b3IgYm9vbCBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJl
cXVlc3REYXRhLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc291
cmNlSWRlbnRpZmllci5oOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVy
OjpvcGVyYXRvciE9IGNvbnN0KToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisKIDIwMjItMDItMDcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
IAogICAgICAgICBXb3JrZXJHbG9iYWxTY29wZS5pbXBvcnRTY3JpcHRzKCkgc2hvdWxkIHByb3Rl
Y3QgYmxvYiB1cmxzIHRoYXQgd2VyZSBwYXNzZWQgaW4gdW50aWwgdGhlIGltcG9ydHMgYXJlIGRv
bmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKaW5kZXggZGIyYjU0Yjk5ODliYzI0ODg3ZWNhNzEyMDUwYjM2NjlhMzNkYWFjYy4u
YzM2NDA3NmFiNmExNGRmZDFhN2U0ODgyNTVkODIzMjIyYWRjNGUwZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNjUgQEAKKzIwMjItMDItMDcgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+
CisKKyAgICAgICAgTWFuYWdlIEluZGV4ZWREQiBzdG9yYWdlIGJ5IG9yaWdpbgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0OTI1CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS84NzU1NTAxND4KKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1l
ei4KKworICAgICAgICBJbiBuZXR3b3JrIHByb2Nlc3MsIEluZGV4ZWREQiBkYXRhIGlzIG1hbmFn
ZWQgYnkgV2ViS2l0OjpXZWJJREJTZXJ2ZXIuIEVhY2ggc2Vzc2lvbiBvd25zIGEgV2ViSURCU2Vy
dmVyIAorICAgICAgICAoSURCU2VydmVyKSBhbmQgZWFjaCBJREJTZXJ2ZXIgb3ducyBvbmUgb3Ig
bW9yZSBVbmlxdWVJREJEYXRhYmFzZXMgKHJlc3ByZW50aW5nIG9uZSBhY3R1YWwgZGF0YWJhc2Ug
dGhhdAorICAgICAgICBJREJEYXRhYmFzZSBjb25uZWN0cyB0bywgY2FuIGJlIGlkZW50aWZpZWQg
Ynkge3Nlc3Npb24sIG9yaWdpbiwgbmFtZX0pLiBOb3cgdGhhdCB3ZSBoYXZlIE5ldHdvcmtTdG9y
YWdlTWFuYWdlciwgCisgICAgICAgIHdoaWNoIG1hbmFnZXMgc2Vzc2lvbiBzdG9yYWdlIGJ5IG9y
aWdpbiwgd2UgY2FuIG1lcmdlIFdlYklEQlNlcnZlciB3aXRoIE5ldHdvcmtTdG9yYWdlTWFuYWdl
ciwgc2luY2UgSW5kZXhlZERCIAorICAgICAgICBzdG9yYWdlIGlzIG5vdCBzaGFyZWQgYWNyb3Nz
IG9yaWdpbnMuCisKKyAgICAgICAgVGhlIG9sZCBzdHJ1Y3R1cmUgaXM6CisgICAgICAgIE5ldHdv
cmtTZXNzaW9uIC0gV2ViSURCU2VydmVyIC0gSURCU2VydmVyIC0gVW5pcXVlSURCRGF0YWJhc2Vz
CisgICAgICAgIFRoZSBuZXcgc3RydWN0dXJlIGlzOgorICAgICAgICBOZXR3b3JrU2Vzc2lvbiAt
IE5ldHdvcmtTdG9yYWdlTWFuYWdlciAtIE9yaWdpblN0b3JhZ2VNYW5hZ2VyIC0gSURCU3RvcmFn
ZU1hbmFnZXIgLSBVbmlxdWVJREJEYXRhYmFzZQorCisgICAgICAgIFRvIGNvbXBsZXRlIHRoaXMg
dHJhbnNpdGlvbiwgd2UgbmVlZCB0byBtYWtlIGEgZmV3IGNoYW5nZXM6CisgICAgICAgIDEuIFdl
YiBwcm9jZXNzIG5vdyBzZW5kcyBJbmRleGVkREIgcmVsYXRlZCBtZXNzYWdlcyB0byBOZXR3b3Jr
U3RvcmFnZU1hbmFnZXIgaW5zdGVhZCBvZiBXZWJJREJTZXJ2ZXIuIAorICAgICAgICAyLiBTb21l
IG1lc3NhZ2VzIGFyZSBzZW50IHRvIG9wZXJhdGUgb24gVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0
aW9uIG9yIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24sIGFuZCB0aGV5IAorICAgICAgICB1
c2UgaWRlbnRpZmllcnMgdG8gc3BlY2lmeSB0aGUgdGFyZ2V0LiBUaGVyZWZvcmUsIE5ldHdvcmtT
dG9yYWdlTWFuYWdlcnMgbmVlZHMgdG8ga25vdyB0aGUgbWFwcGluZyBiZXR3ZWVuIAorICAgICAg
ICBpZGVudGlmaWVycyBhbmQgdGFyZ2V0IG9iamVjdHMuIEEgbmV3IGNsYXMgSURCU3RvcmFnZVJl
Z2lzdHJ5IGlzIGFkZGVkIHJlY29yZCB0aGlzIG1hcHBpbmcuIEVhY2ggCisgICAgICAgIE5ldHdv
cmtTdG9yYWdlTWFuYWdlciBvd25zIGEgSURCU3RvcmFnZVJlZ2lzdHJ5IGFuZCBpdCBwYXNzZXMg
SURCU3RvcmFnZVJlZ2lzdHJ5IHRvIElEQlN0b3JhZ2VNYW5hZ2VyLAorICAgICAgICBJREJTdG9y
YWdlTWFuYWdlciB3aWxsIHJlZ2lzdGVyIG9iamVjdHMgdG8gSURCU3RvcmFnZVJlZ2lzdHJ5IGFu
ZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXIgY2FuIGRvIHNlYXJjaCB2aWEgCisgICAgICAgIElEQlN0
b3JhZ2VSZWdpc3RyeS4KKyAgICAgICAgMy4gUXVvdGEgY2hlY2sgZm9yIEluZGV4ZWREQiBvcGVy
YXRpb25zIGJlY29tZXMgYXN5bmMgYnkgYWRkaW5nIG5ldyBRdW90YU1hbmFnZXIgY2xhc3MsIHdo
aWNoIGlzIHNpbWlsYXIgdG8gCisgICAgICAgIFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXIg
YnV0IHByb3ZpZGVzIGFzeW5jIGludGVyZmFjZXMuIAorICAgICAgICBXZSB1c2VkIHRvIGJsb2Nr
IHRoZSBJREJTZXJ2ZXIgdGhyZWFkIHdoZW4gaXQgaXMgd2FpdGluZyBmb3IgcXVvdGEgY2hlY2sg
cmVzdWx0IGZyb20gVUkgcHJvY2VzcywgdGhpcyBpcyBmaW5lIAorICAgICAgICBiZWNhdXNlIElE
QlNlcnZlciBydW5zIG9uIGl0cyBvd24gdGhyZWFkLiBOb3cgdGhhdCBJREJTdG9yYWdlTWFuYWdl
ciBydW5zIG9uIHRoZSBzYW1lIHRocmVhZCBhcyB0aGUgb3RoZXIgCisgICAgICAgIHN0b3JhZ2Ug
dHlwZXMsIHdlIGNhbm5vdCBibG9jayB0aGUgdGhyZWFkIG9uIHF1b3RhIGNoZWNrLgorICAgICAg
ICA0LiBSZW5hbWUgV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50IHRvIElEQlN0b3JhZ2VDb25uZWN0
aW9uVG9DbGllbnQgdG8gcmVmbGVjdCB0aGUgY2hhbmdlIG9uIHRoZSBzdHJ1Y3R1cmUuIEFsc28s
CisgICAgICAgIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQgZG9lcyBub3Qga2VlcCByZWZl
cmVuY2UgdG8gdGhlIElQQzo6Q29ubmVjdGlvbiBub3csIGl0IG9ubHkgcmVjb3JkcyAKKyAgICAg
ICAgSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRC4KKyAgICAgICAgNS4gSW5kZXhlZERCIGRhdGEg
bWF5IGJlIHB1dCBpbiBkaWZmZXJlbnQgdmVyc2lvbiBkaXJjdG9yaWVzLiBXZSB1c2VkIHRvIG1p
Z3JhdGUgZGF0YWJhc2UgdG8gbmV3IHZlcnNpb24gCisgICAgICAgIGRpcmV0b3J5IHdoZW4gdGhl
IGRhdGFiYXNlIGlzIGFjY2Vzc2VkLiBBcyBJREJTdG9yYWdlTWFuYWdlciBub3cgbWFuYWdlcyBJ
bmRleGVkREIgZGF0YSBvZiBvbmUgb3JpZ2luLCBpdCdzIAorICAgICAgICBzaW1wbGVyIGlmIGl0
IG9ubHkga2VlcHMgdHJhY2sgb2Ygb25lIGRpcmVjdG9yeS4gVGhlcmVmb3JlLCB3ZSBub3cgbWln
cmF0ZSBhbGwgZGF0YWJhc2VzIG9mIG9uZSBvcmlnaW4KKyAgICAgICAgd2hlbiB0aGUgb3JpZ2lu
IGlzIGFjY2Vzc2VkIChzZWUgSURCU3RvcmFnZU1hbmFnZXI6OmlkYlN0b3JhZ2VPcmlnaW5EaXJl
Y3RvcnkpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6dXBkYXRlUXVvdGFCYXNlZE9uU3BhY2VVc2FnZUZvclRlc3RpbmcpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6d3JpdGVCbG9ic1RvVGVtcG9y
YXJ5RmlsZXNGb3JJbmRleGVkREIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRpZENsb3NlKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmFkZFdlYnNp
dGVEYXRhU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZmV0Y2hXZWJz
aXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRl
RGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0
YUZvck9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlQW5k
UmVzdHJpY3RXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZWdpc3RyYWJsZURvbWFpbnNXaXRoV2Vic2l0ZURhdGEpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cHJlcGFyZVRvU3VzcGVuZCk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZXN1bWUpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6cmVzZXRRdW90YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzOjpkaWRJbmNyZWFzZVF1b3RhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OnJlbmFtZU9yaWdpbkluV2Vic2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6c3RvcmFnZVF1b3RhTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzOjpjb25uZWN0aW9uVG9XZWJQcm9jZXNzQ2xvc2VkKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3M6OnN1c3BlbmRJREJTZXJ2ZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6c2hvdWxkU3VzcGVuZElEQlNlcnZlcnMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Nlc3Npb246OmludmFsaWRhdGVBbmRDYW5jZWwpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
U2Vzc2lvbjo6YWRkU3RvcmFnZU1hbmFnZXJTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Nlc3Npb246OmVuc3VyZVdlYklEQlNlcnZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtTZXNzaW9uOjpjbG9zZUlEQlNlcnZlcik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjphZGRJbmRleGVkRGF0YWJhc2VTZXNzaW9uKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6d2ViSURCU2VydmVyKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Nlc3Npb246Omhhc0lEQkRhdGFiYXNlUGF0aCBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OnN0b3JhZ2VQYXRoKToK
KyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OmRpc2tVc2FnZSk6CisgICAg
ICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpyZXF1ZXN0U3BhY2UpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGVzOjpyZXF1ZXN0U3BhY2UpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lPUy5tbToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3M6OnNldElzSG9sZGluZ0xvY2tlZEZpbGVzKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6
SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3Jh
Z2VDb25uZWN0aW9uVG9DbGllbnQ6On5JREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50KToKKyAg
ICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6Y29ubmVjdGlvblRv
Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6
ZGlkR2V0UmVzdWx0KToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0Ns
aWVudDo6ZGlkRGVsZXRlRGF0YWJhc2UpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29u
bmVjdGlvblRvQ2xpZW50OjpkaWRPcGVuRGF0YWJhc2UpOgorICAgICAgICAoV2ViS2l0OjpJREJT
dG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRTdGFydFRyYW5zYWN0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkQWJvcnRUcmFuc2FjdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZENv
bW1pdFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25U
b0NsaWVudDo6ZGlkQ3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9y
YWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWREZWxldGVPYmplY3RTdG9yZSk6CisgICAgICAgIChX
ZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZFJlbmFtZU9iamVjdFN0b3Jl
KToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkQ2xl
YXJPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9D
bGllbnQ6OmRpZENyZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5l
Y3Rpb25Ub0NsaWVudDo6ZGlkRGVsZXRlSW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9y
YWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRSZW5hbWVJbmRleCk6CisgICAgICAgIChXZWJLaXQ6
OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZFB1dE9yQWRkKToKKyAgICAgICAgKFdl
YktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkR2V0UmVjb3JkKToKKyAgICAg
ICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkR2V0QWxsUmVjb3Jk
cyk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZEdl
dENvdW50KToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6
ZGlkRGVsZXRlUmVjb3JkKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25U
b0NsaWVudDo6ZGlkT3BlbkN1cnNvcik6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25u
ZWN0aW9uVG9DbGllbnQ6OmRpZEl0ZXJhdGVDdXJzb3IpOgorICAgICAgICAoV2ViS2l0OjpJREJT
dG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRHZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lv
bnMpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpmaXJl
VmVyc2lvbkNoYW5nZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rp
b25Ub0NsaWVudDo6ZGlkQ2xvc2VGcm9tU2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6SURCU3Rv
cmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6bm90aWZ5T3BlbkRCUmVxdWVzdEJsb2NrZWQpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVu
dC5oOiBBZGRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VN
YW5hZ2VyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Om1pZ3JhdGVPcmlnaW5EYXRhKToK
KyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZU1hbmFnZXI6OmlkYlN0b3JhZ2VPcmlnaW5EaXJl
Y3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlTWFuYWdlcjo6aWRiU3RvcmFnZVNp
emUpOgorICAgICAgICAoV2ViS2l0OjpnZXRPcmlnaW5zRm9yVmVyc2lvbik6CisgICAgICAgIChX
ZWJLaXQ6OklEQlN0b3JhZ2VNYW5hZ2VyOjpvcmlnaW5zT2ZJREJTdG9yYWdlRGF0YSk6CisgICAg
ICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VNYW5hZ2VyOjpJREJTdG9yYWdlTWFuYWdlcik6CisgICAg
ICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VNYW5hZ2VyOjppc0FjdGl2ZSBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OklEQlN0b3JhZ2VNYW5hZ2VyOjpoYXNEYXRhSW5NZW1vcnkgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpJREJTdG9yYWdlTWFuYWdlcjo6Y2xvc2VEYXRhYmFzZXNGb3JEZWxldGlv
bik6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VNYW5hZ2VyOjpzdG9wRGF0YWJhc2VBY3Rp
dml0aWVzRm9yU3VzcGVuZCk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VNYW5hZ2VyOjpn
ZXRPckNyZWF0ZVVuaXF1ZUlEQkRhdGFiYXNlKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFn
ZU1hbmFnZXI6Om9wZW5EYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VNYW5h
Z2VyOjpkZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VNYW5hZ2Vy
OjpnZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMpOgorICAgICAgICAoV2ViS2l0OjpJREJT
dG9yYWdlTWFuYWdlcjo6b3BlbkRCUmVxdWVzdENhbmNlbGxlZCk6CisgICAgICAgIChXZWJLaXQ6
OklEQlN0b3JhZ2VNYW5hZ2VyOjpyZWdpc3RlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0
OjpJREJTdG9yYWdlTWFuYWdlcjo6dW5yZWdpc3RlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2Vi
S2l0OjpJREJTdG9yYWdlTWFuYWdlcjo6cmVnaXN0ZXJUcmFuc2FjdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OklEQlN0b3JhZ2VNYW5hZ2VyOjp1bnJlZ2lzdGVyVHJhbnNhY3Rpb24pOgorICAgICAg
ICAoV2ViS2l0OjpJREJTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlQmFja2luZ1N0b3JlKToKKyAgICAg
ICAgKFdlYktpdDo6SURCU3RvcmFnZU1hbmFnZXI6OnJlcXVlc3RTcGFjZSk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlTWFuYWdlci5oOiBBZGRlZC4KKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VSZWdpc3RyeS5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlUmVnaXN0cnk6OmVuc3VyZUNvbm5lY3Rpb25U
b0NsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VSZWdpc3RyeTo6cmVtb3ZlQ29u
bmVjdGlvblRvQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZVJlZ2lzdHJ5Ojpy
ZWdpc3RlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlUmVnaXN0cnk6
OnVucmVnaXN0ZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZVJlZ2lz
dHJ5OjpyZWdpc3RlclRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZVJl
Z2lzdHJ5Ojp1bnJlZ2lzdGVyVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9y
YWdlUmVnaXN0cnk6OmNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlUmVn
aXN0cnk6OnRyYW5zYWN0aW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lE
QlN0b3JhZ2VSZWdpc3RyeS5oOiBBZGRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9y
YWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtT
dG9yYWdlTWFuYWdlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VN
YW5hZ2VyOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
U3RvcmFnZU1hbmFnZXI6OmNhbkhhbmRsZVR5cGVzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1N0b3JhZ2VNYW5hZ2VyOjpzdG9wUmVjZWl2aW5nTWVzc2FnZUZyb21Db25uZWN0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpsb2NhbE9yaWdpblN0b3JhZ2VN
YW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkaWRJbmNy
ZWFzZVF1b3RhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpnZXRB
bGxPcmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjptb3Zl
RGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6c3VzcGVuZCk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6cmVnaXN0ZXJUZW1wb3Jh
cnlCbG9iRmlsZVBhdGhzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2Vy
OjpyZXF1ZXN0U3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6
OnJlc2V0UXVvdGFGb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VN
YW5hZ2VyOjpyZXNldFF1b3RhVXBkYXRlZEJhc2VkT25Vc2FnZUZvclRlc3RpbmcpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Om9wZW5EYXRhYmFzZSk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6b3BlbkRCUmVxdWVzdENhbmNlbGxlZCk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlRGF0YWJhc2Up
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmVzdGFibGlzaFRyYW5z
YWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkYXRhYmFz
ZUNvbm5lY3Rpb25QZW5kaW5nQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFn
ZU1hbmFnZXI6OmRhdGFiYXNlQ29ubmVjdGlvbkNsb3NlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtTdG9yYWdlTWFuYWdlcjo6YWJvcnRPcGVuQW5kVXBncmFkZU5lZWRlZCk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVu
dCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6YWJvcnRUcmFuc2Fj
dGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y29tbWl0VHJh
bnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmRpZEZp
bmlzaEhhbmRsaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnJlbmFtZU9iamVjdFN0b3JlKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjbGVhck9iamVjdFN0b3JlKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVJbmRleCk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlSW5kZXgpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnJlbmFtZUluZGV4KToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpwdXRPckFkZCk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Z2V0UmVjb3JkKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpnZXRBbGxSZWNvcmRzKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpnZXRDb3VudCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlUmVjb3JkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1N0b3JhZ2VNYW5hZ2VyOjpvcGVuQ3Vyc29yKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0
b3JhZ2VNYW5hZ2VyOjppdGVyYXRlQ3Vyc29yKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0
b3JhZ2VNYW5hZ2VyOjpnZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIubWVzc2FnZXMu
aW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVj
a2V0OjpTdG9yYWdlQnVja2V0KToKKyAgICAgICAgKFdlYktpdDo6T3JpZ2luU3RvcmFnZU1hbmFn
ZXI6OlN0b3JhZ2VCdWNrZXQ6OnRvV2Vic2l0ZURhdGFUeXBlKToKKyAgICAgICAgKFdlYktpdDo6
T3JpZ2luU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VCdWNrZXQ6OnRvU3RvcmFnZUlkZW50aWZpZXIp
OgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldDo6
aWRiU3RvcmFnZU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdl
cjo6U3RvcmFnZUJ1Y2tldDo6ZXhpc3RpbmdJREJTdG9yYWdlTWFuYWdlcik6CisgICAgICAgIChX
ZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0Ojppc0FjdGl2ZSBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0
Ojppc0VtcHR5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6T3JpZ2luU3RvcmFnZU1hbmFnZXI6
OlN0b3JhZ2VCdWNrZXQ6OmRlbGV0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9y
YWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldDo6bW92ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpP
cmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldDo6ZmV0Y2hEYXRhVHlwZXNJbkxpc3RG
cm9tTWVtb3J5KToKKyAgICAgICAgKFdlYktpdDo6T3JpZ2luU3RvcmFnZU1hbmFnZXI6OlN0b3Jh
Z2VCdWNrZXQ6OmZldGNoRGF0YVR5cGVzSW5MaXN0RnJvbURpc2spOgorICAgICAgICAoV2ViS2l0
OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldDo6ZGVsZXRlSURCU3RvcmFnZURh
dGEpOgorICAgICAgICAoV2ViS2l0OjpjcmVhdGVRdW90YU1hbmFnZXIpOgorICAgICAgICAoV2Vi
S2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6T3JpZ2luU3RvcmFnZU1hbmFnZXIpOgorICAgICAg
ICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6ZGVmYXVsdEJ1Y2tldCk6CisgICAgICAg
IChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpxdW90YU1hbmFnZXIpOgorICAgICAgICAo
V2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6aWRiU3RvcmFnZU1hbmFnZXIpOgorICAgICAg
ICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6ZXhpc3RpbmdJREJTdG9yYWdlTWFuYWdl
cik6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjptb3ZlRGF0YSk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvUXVvdGFNYW5hZ2VyLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6OlF1b3RhTWFuYWdlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktp
dDo6UXVvdGFNYW5hZ2VyOjpRdW90YU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpRdW90YU1h
bmFnZXI6OnJlcXVlc3RTcGFjZSk6CisgICAgICAgIChXZWJLaXQ6OlF1b3RhTWFuYWdlcjo6aGFu
ZGxlUmVxdWVzdHMpOgorICAgICAgICAoV2ViS2l0OjpRdW90YU1hbmFnZXI6OmdyYW50V2l0aEN1
cnJlbnRRdW90YSk6CisgICAgICAgIChXZWJLaXQ6OlF1b3RhTWFuYWdlcjo6Z3JhbnRGYXN0UGF0
aCk6CisgICAgICAgIChXZWJLaXQ6OlF1b3RhTWFuYWdlcjo6ZGlkSW5jcmVhc2VRdW90YSk6Cisg
ICAgICAgIChXZWJLaXQ6OlF1b3RhTWFuYWdlcjo6cmVzZXRRdW90YVVwZGF0ZWRCYXNlZE9uVXNh
Z2VGb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6UXVvdGFNYW5hZ2VyOjpyZXNldFF1b3Rh
Rm9yVGVzdGluZyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9RdW90YU1hbmFn
ZXIuaDogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAg
ICAgICh0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKToKKyAgICAgICAgKiBT
aGFyZWQvV2Vic2l0ZURhdGEvUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLmg6IEFkZGVk
LgorICAgICAgICAqIFNoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oOgorICAgICAg
ICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjppbmNy
ZWFzZVF1b3RhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5t
ZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnBlclRoaXJkUGFy
dHlPcmlnaW5TdG9yYWdlUXVvdGEgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHRQZXJPcmlnaW5RdW90YSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVj
dGlvblRvU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvU2Vy
dmVyOjpkZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25U
b1NlcnZlcjo6b3BlbkRhdGFiYXNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlv
blRvU2VydmVyOjphYm9ydFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29u
bmVjdGlvblRvU2VydmVyOjpjb21taXRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlVHJh
bnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmNy
ZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvU2Vy
dmVyOjpkZWxldGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rp
b25Ub1NlcnZlcjo6cmVuYW1lT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJD
b25uZWN0aW9uVG9TZXJ2ZXI6OmNsZWFyT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYktpdDo6
V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpkZWxldGVJbmRleCk6CisgICAgICAgIChXZWJLaXQ6
OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6cmVuYW1lSW5kZXgpOgorICAgICAgICAoV2ViS2l0
OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OnB1dE9yQWRkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpnZXRSZWNvcmQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmdldEFsbFJlY29yZHMpOgorICAgICAgICAoV2ViS2l0
OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmdldENvdW50KToKKyAgICAgICAgKFdlYktpdDo6
V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpkZWxldGVSZWNvcmQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6Om9wZW5DdXJzb3IpOgorICAgICAgICAoV2ViS2l0
OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6Oml0ZXJhdGVDdXJzb3IpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmVzdGFibGlzaFRyYW5zYWN0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpkYXRhYmFzZUNvbm5lY3Rp
b25QZW5kaW5nQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2
ZXI6OmRhdGFiYXNlQ29ubmVjdGlvbkNsb3NlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNv
bm5lY3Rpb25Ub1NlcnZlcjo6YWJvcnRPcGVuQW5kVXBncmFkZU5lZWRlZCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVu
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6b3BlbkRCUmVx
dWVzdENhbmNlbGxlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZl
cjo6Z2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKToKKwogMjAyMi0wMi0wNyAgQW50b2lu
ZSBRdWludCAgPGdyYW91dHNAd2Via2l0Lm9yZz4KIAogICAgICAgICBbbW9kZWxdIGltcHJvdmUg
c2l6aW5nIG9uIGlPUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwppbmRleCBlNmJhNzMyMmMzNDhlY2RlNDc5
NGUwOTQ5OTViYWI0ODk2YmY1YTQ5Li4wOTQ3ZTI3NmIxYjZmY2JhYzc5OTc5NmVkNTNmMzg3ZTA4
MmNkZWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIyLTAyLTA3
ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIE1hbmFnZSBJbmRl
eGVkREIgc3RvcmFnZSBieSBvcmlnaW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzNDkyNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODc1NTUwMTQ+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAgKiBTdG9yYWdl
L0luUHJvY2Vzc0lEQlNlcnZlci5jcHA6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OnF1
b3RhTWFuYWdlcik6CisKIDIwMjItMDItMDIgIEVsbGlvdHQgV2lsbGlhbXMgIDxlbXdAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtYY29kZV0gRml4IHJlZHVuZGFudCBleGVjdXRpb24gb2YgIkNoZWNr
IFZUYWJsZXMuLi4iIHNjcmlwdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggM2ZjZTk1ZjU3NTY5ZGE3
M2Q1MDkyOWJlNTQyY2ZiNzQ0OWQ3OWQ1Mi4uZDlmNDhhZWRkYzYzOGE0ODk0YTMzNDViYTg3ZWVm
MmU2MzNjYjk4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0yMjQsMTEgKzIyNCwxNiBAQCBzZXQo
V2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL0lEQkNvbm5lY3Rpb25Ub0NsaWVudC5oCiAgICAgTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL0lEQkNvbm5lY3Rpb25Ub0NsaWVudERlbGVnYXRlLmgKICAgICBNb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvSURCU2VydmVyLmgKKyAgICBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSW5kZXhW
YWx1ZUVudHJ5LmgKKyAgICBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSW5kZXhWYWx1ZVN0b3Jl
LmgKKyAgICBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNh
Y3Rpb24uaAogICAgIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3Rv
cmUuaAogICAgIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUu
aAorICAgIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJUcmFuc2FjdGlvbi5oCiAg
ICAgTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NlcnZlck9wZW5EQlJlcXVlc3QuaAogICAgIE1v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oCiAgICAgTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5oCisgICAgTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlci5oCiAgICAgTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uaAogCiAgICAg
TW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luZGV4S2V5LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmgKaW5kZXgg
NmMwYjFiNGYyYWIwYzAzMzA3NjY1NGVhNGIyNzY1NTk0NDU4OTUzNi4uN2YwOWJmYjMyZDUxZTk3
ZmE3ZWQ0ZTQ1ZDUxMTMzOGU1YjgxMTdlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmgKQEAgLTgyLDcgKzgy
LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNUcmFuc2llbnQoKSBjb25zdCB7IHJldHVybiBtX2lz
VHJhbnNpZW50OyB9CiAKICAgICBTdHJpbmcgZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9v
dChjb25zdCBTdHJpbmcmIHJvb3REaXJlY3RvcnksIGNvbnN0IFN0cmluZyYgdmVyc2lvblN0cmlu
Zz0idjEiKSBjb25zdDsKLSAgICBzdGF0aWMgU3RyaW5nIGRhdGFiYXNlRGlyZWN0b3J5UmVsYXRp
dmVUb1Jvb3QoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiB0b3BMZXZlbE9yaWdpbiwgY29uc3Qg
U2VjdXJpdHlPcmlnaW5EYXRhJiBvcGVuaW5nT3JpZ2luLCBjb25zdCBTdHJpbmcmIHJvb3REaXJl
Y3RvcnksIGNvbnN0IFN0cmluZyYgdmVyc2lvblN0cmluZyk7CisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFN0cmluZyBkYXRhYmFzZURpcmVjdG9yeVJlbGF0aXZlVG9Sb290KGNvbnN0IFNlY3Vy
aXR5T3JpZ2luRGF0YSYgdG9wTGV2ZWxPcmlnaW4sIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYg
b3BlbmluZ09yaWdpbiwgY29uc3QgU3RyaW5nJiByb290RGlyZWN0b3J5LCBjb25zdCBTdHJpbmcm
IHZlcnNpb25TdHJpbmcpOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNv
ZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPElEQkRhdGFiYXNlSWRlbnRpZmllcj4gZGVjb2RlKERlY29kZXImKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25u
ZWN0aW9uVG9DbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9JREJDb25uZWN0aW9uVG9DbGllbnQuaAppbmRleCAyN2Y3MjY5MTlmMTQyMWYyMWE1ZjAzZmZk
ZmMxNzZkNGM0YmRmM2MyLi5mMDVhYzJmOGM4MmE4MDljMjcxYzlkZjU5N2Y5NjQ3MzE5ZWY2NDYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURC
Q29ubmVjdGlvblRvQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0lEQkNvbm5lY3Rpb25Ub0NsaWVudC5oCkBAIC03NCwxMSArNzQsMTEgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBub3RpZnlPcGVuREJSZXF1ZXN0QmxvY2tlZChjb25zdCBJREJSZXNv
dXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBvbGRWZXJzaW9uLCB1
aW50NjRfdCBuZXdWZXJzaW9uKTsKIAotICAgIHZvaWQgZGlkR2V0QWxsRGF0YWJhc2VOYW1lc0Fu
ZFZlcnNpb25zKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYsIFZlY3RvcjxJREJEYXRhYmFz
ZU5hbWVBbmRWZXJzaW9uPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZEdldEFsbERh
dGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImLCBWZWN0
b3I8SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbj4mJik7CiAKICAgICB2b2lkIHJlZ2lzdGVyRGF0
YWJhc2VDb25uZWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYpOwogICAgIHZvaWQg
dW5yZWdpc3RlckRhdGFiYXNlQ29ubmVjdGlvbihVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24m
KTsKLSAgICB2b2lkIGNvbm5lY3Rpb25Ub0NsaWVudENsb3NlZCgpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgY29ubmVjdGlvblRvQ2xpZW50Q2xvc2VkKCk7CiAgICAgYm9vbCBpc0Nsb3NlZCgp
IHsgcmV0dXJuIG1faXNDbG9zZWQ7IH0KICAgICB2b2lkIGNsZWFyRGVsZWdhdGUoKSB7IG1fZGVs
ZWdhdGUgPSBudWxscHRyOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKaW5kZXggZDI2NjkzMTgwODQ2YWY2NjY4OWUx
N2FlYTNmZjk5NzE5NTVhZTM2ZS4uNGJhZDQ0MmIxYjNhOWE0MTc4NTkwNDJmODE2NTc3ZTA3YjEz
YmE4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L0lEQlNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL0lEQlNlcnZlci5jcHAKQEAgLTEwMSwxMyArMTAxLDEzIEBAIHZvaWQgSURCU2VydmVyOjp1
bnJlZ2lzdGVyVHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNh
Y3Rpb24pCiAgICAgbV90cmFuc2FjdGlvbnMucmVtb3ZlKHRyYW5zYWN0aW9uLmluZm8oKS5pZGVu
dGlmaWVyKCkpOwogfQogCi12b2lkIElEQlNlcnZlcjo6cmVnaXN0ZXJEYXRhYmFzZUNvbm5lY3Rp
b24oVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiBjb25uZWN0aW9uKQordm9pZCBJREJTZXJ2
ZXI6OnJlZ2lzdGVyQ29ubmVjdGlvbihVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24pCiB7CiAgICAgQVNTRVJUKCFtX2RhdGFiYXNlQ29ubmVjdGlvbnMuY29udGFpbnMoY29u
bmVjdGlvbi5pZGVudGlmaWVyKCkpKTsKICAgICBtX2RhdGFiYXNlQ29ubmVjdGlvbnMuc2V0KGNv
bm5lY3Rpb24uaWRlbnRpZmllcigpLCAmY29ubmVjdGlvbik7CiB9CiAKLXZvaWQgSURCU2VydmVy
Ojp1bnJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlv
biYgY29ubmVjdGlvbikKK3ZvaWQgSURCU2VydmVyOjp1bnJlZ2lzdGVyQ29ubmVjdGlvbihVbmlx
dWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiB7CiAgICAgQVNTRVJUKG1fZGF0
YWJhc2VDb25uZWN0aW9ucy5jb250YWlucyhjb25uZWN0aW9uLmlkZW50aWZpZXIoKSkpOwogICAg
IG1fZGF0YWJhc2VDb25uZWN0aW9ucy5yZW1vdmUoY29ubmVjdGlvbi5pZGVudGlmaWVyKCkpOwpA
QCAtMTI4LDEzICsxMjgsMTMgQEAgc3RkOjp1bmlxdWVfcHRyPElEQkJhY2tpbmdTdG9yZT4gSURC
U2VydmVyOjpjcmVhdGVCYWNraW5nU3RvcmUoY29uc3QgSURCRGF0YWJhc2UKIHsKICAgICBBU1NF
UlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBpZiAobV9kYXRhYmFzZURpcmVjdG9yeVBhdGguaXNF
bXB0eSgpKQotICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxNZW1vcnlJREJCYWNraW5nU3RvcmU+
KG1fc2Vzc2lvbklELCBpZGVudGlmaWVyKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TWVt
b3J5SURCQmFja2luZ1N0b3JlPihpZGVudGlmaWVyKTsKIAogICAgIEFTU0VSVCghbV9zZXNzaW9u
SUQuaXNFcGhlbWVyYWwoKSk7CiAgICAgaWYgKGlkZW50aWZpZXIuaXNUcmFuc2llbnQoKSkKLSAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TWVtb3J5SURCQmFja2luZ1N0b3JlPihtX3Nlc3Npb25J
RCwgaWRlbnRpZmllcik7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPE1lbW9yeUlEQkJhY2tp
bmdTdG9yZT4oaWRlbnRpZmllcik7CiAKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxTUUxpdGVJREJC
YWNraW5nU3RvcmU+KG1fc2Vzc2lvbklELCBpZGVudGlmaWVyLCBtX2RhdGFiYXNlRGlyZWN0b3J5
UGF0aCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1FMaXRlSURCQmFja2luZ1N0b3JlPihpZGVu
dGlmaWVyLCB1cGdyYWRlZERhdGFiYXNlRGlyZWN0b3J5KGlkZW50aWZpZXIpKTsKIH0KIAogdm9p
ZCBJREJTZXJ2ZXI6Om9wZW5EYXRhYmFzZShjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERh
dGEpCkBAIC0xNzcsMTcgKzE3Nyw2IEBAIHZvaWQgSURCU2VydmVyOjpkZWxldGVEYXRhYmFzZShj
b25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEpCiAgICAgICAgIG1fdW5pcXVlSURCRGF0
YWJhc2VNYXAucmVtb3ZlKGRhdGFiYXNlLT5pZGVudGlmaWVyKCkpOwogfQogCi1zdGQ6OnVuaXF1
ZV9wdHI8VW5pcXVlSURCRGF0YWJhc2U+IElEQlNlcnZlcjo6Y2xvc2VBbmRUYWtlVW5pcXVlSURC
RGF0YWJhc2UoVW5pcXVlSURCRGF0YWJhc2UmIGRhdGFiYXNlKQotewotICAgIExPRyhJbmRleGVk
REIsICJJREJTZXJ2ZXI6OmNsb3NlVW5pcXVlSURCRGF0YWJhc2UiKTsKLSAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOwotCi0gICAgYXV0byB1bmlxdWVQb2ludGVyID0gbV91bmlxdWVJREJEYXRh
YmFzZU1hcC50YWtlKGRhdGFiYXNlLmlkZW50aWZpZXIoKSk7Ci0gICAgQVNTRVJUKHVuaXF1ZVBv
aW50ZXIpOwotCi0gICAgcmV0dXJuIHVuaXF1ZVBvaW50ZXI7Ci19Ci0KIHZvaWQgSURCU2VydmVy
OjphYm9ydFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rp
b25JZGVudGlmaWVyKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJTZXJ2ZXI6OmFib3J0VHJh
bnNhY3Rpb24iKTsKQEAgLTc1MCw3ICs3MzksNyBAQCB2b2lkIElEQlNlcnZlcjo6cmVuYW1lT3Jp
Z2luKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgb2xkT3JpZ2luLCBjb25zdAog
ICAgICAgICBGaWxlU3lzdGVtOjptb3ZlRmlsZShvbGRPcmlnaW5QYXRoLCBuZXdPcmlnaW5QYXRo
KTsKIH0KIAotU3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb24gSURCU2VydmVyOjpyZXF1ZXN0
U3BhY2UoY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4sIHVpbnQ2NF90IHRhc2tTaXplKSBXVEZf
SUdOT1JFU19USFJFQURfU0FGRVRZX0FOQUxZU0lTCit2b2lkIElEQlNlcnZlcjo6cmVxdWVzdFNw
YWNlKGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2luLCB1aW50NjRfdCB0YXNrU2l6ZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgV1RGX0lHTk9SRVNf
VEhSRUFEX1NBRkVUWV9BTkFMWVNJUwogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwog
ICAgIEFTU0VSVChtX2xvY2suaXNIZWxkKCkpOwpAQCAtNzYyLDcgKzc1MSw3IEBAIFN0b3JhZ2VR
dW90YU1hbmFnZXI6OkRlY2lzaW9uIElEQlNlcnZlcjo6cmVxdWVzdFNwYWNlKGNvbnN0IENsaWVu
dE9yaWdpbiYgb3JpZ2luCiAgICAgcmVzdWx0ID0gbV9zcGFjZVJlcXVlc3RlcihvcmlnaW4sIHRh
c2tTaXplKTsKICAgICBtX2xvY2subG9jaygpOwogCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICBj
b21wbGV0aW9uSGFuZGxlcihyZXN1bHQgPT0gU3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb246
OkdyYW50KTsKIH0KIAogdWludDY0X3QgSURCU2VydmVyOjpkaXNrVXNhZ2UoY29uc3QgU3RyaW5n
JiByb290RGlyZWN0b3J5LCBjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbikKQEAgLTc4NCw2ICs3
NzMsMjMgQEAgdm9pZCBJREJTZXJ2ZXI6OnVwZ3JhZGVGaWxlc0lmTmVjZXNzYXJ5KCkKICAgICAg
ICAgRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKG5ld1ZlcnNpb25EaXJlY3RvcnkpOwog
fQogCitTdHJpbmcgSURCU2VydmVyOjp1cGdyYWRlZERhdGFiYXNlRGlyZWN0b3J5KGNvbnN0IFdl
YkNvcmU6OklEQkRhdGFiYXNlSWRlbnRpZmllciYgaWRlbnRpZmllcikKK3sKKyAgICBTdHJpbmcg
b2xkT3JpZ2luRGlyZWN0b3J5ID0gaWRlbnRpZmllci5kYXRhYmFzZURpcmVjdG9yeVJlbGF0aXZl
VG9Sb290KG1fZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCAidjAiKTsKKyAgICBTdHJpbmcgb2xkRGF0
YWJhc2VEaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQob2xk
T3JpZ2luRGlyZWN0b3J5LCBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmVuY29kZURhdGFiYXNlTmFt
ZShpZGVudGlmaWVyLmRhdGFiYXNlTmFtZSgpKSk7CisgICAgU3RyaW5nIG5ld09yaWdpbkRpcmVj
dG9yeSA9IGlkZW50aWZpZXIuZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9vdChtX2RhdGFi
YXNlRGlyZWN0b3J5UGF0aCwgInYxIik7CisgICAgU3RyaW5nIGZpbGVOYW1lSGFzaCA9IFNRTGl0
ZUZpbGVTeXN0ZW06OmNvbXB1dGVIYXNoRm9yRmlsZU5hbWUoaWRlbnRpZmllci5kYXRhYmFzZU5h
bWUoKSk7CisgICAgU3RyaW5nIG5ld0RhdGFiYXNlRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG5ld09yaWdpbkRpcmVjdG9yeSwgZmlsZU5hbWVIYXNoKTsK
KyAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMobmV3RGF0YWJhc2VEaXJlY3Rvcnkp
OworCisgICAgaWYgKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMob2xkRGF0YWJhc2VEaXJlY3Rvcnkp
KSB7CisgICAgICAgIEZpbGVTeXN0ZW06Om1vdmVGaWxlKG9sZERhdGFiYXNlRGlyZWN0b3J5LCBu
ZXdEYXRhYmFzZURpcmVjdG9yeSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGly
ZWN0b3J5KG9sZE9yaWdpbkRpcmVjdG9yeSk7CisgICAgfQorCisgICAgcmV0dXJuIG5ld0RhdGFi
YXNlRGlyZWN0b3J5OworfQorCiBib29sIElEQlNlcnZlcjo6aGFzRGF0YWJhc2VBY3Rpdml0aWVz
T25NYWluVGhyZWFkKCkgY29uc3QKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZl
ci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5o
CmluZGV4IGQ4ODM2NDlhNWM4ZDViNTlmMDJjMmJkYWNkZGU2NzhhMWNhM2M0MmYuLjEzZmI3MGJl
Mzc5YWFhOWMxMWY1OWQyNTRiOTZjMDcyOTRkYTA2MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmgKQEAgLTMwLDYgKzMwLDcg
QEAKICNpbmNsdWRlICJTdG9yYWdlUXVvdGFNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiVW5pcXVlSURC
RGF0YWJhc2UuaCIKICNpbmNsdWRlICJVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uaCIKKyNp
bmNsdWRlICJVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuaCIKICNpbmNsdWRlIDxwYWwvSHlzdGVy
ZXNpc0FjdGl2aXR5Lmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0
Zi9Dcm9zc1RocmVhZFRhc2tIYW5kbGVyLmg+CkBAIC00OCw4ICs0OSw3IEBAIHN0cnVjdCBJREJH
ZXRSZWNvcmREYXRhOwogCiBuYW1lc3BhY2UgSURCU2VydmVyIHsKIAotY2xhc3MgSURCU2VydmVy
IHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK2NsYXNzIElEQlNlcnZlciA6IHB1Ymxp
YyBVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIgewogcHVibGljOgogICAgIHVzaW5nIFN0b3JhZ2VR
dW90YU1hbmFnZXJTcGFjZVJlcXVlc3RlciA9IEZ1bmN0aW9uPFN0b3JhZ2VRdW90YU1hbmFnZXI6
OkRlY2lzaW9uKGNvbnN0IENsaWVudE9yaWdpbiYsIHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkKT47
CiAgICAgV0VCQ09SRV9FWFBPUlQgSURCU2VydmVyKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJp
bmcmIGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwgU3RvcmFnZVF1b3RhTWFuYWdlclNwYWNlUmVxdWVz
dGVyJiYsIExvY2smKTsKQEAgLTg4LDE1ICs4OCwxMyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhJREJDb25uZWN0aW9u
SWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiwgY29uc3QgQ2xpZW50T3Jp
Z2luJik7CiAKLQotICAgIHZvaWQgcmVnaXN0ZXJEYXRhYmFzZUNvbm5lY3Rpb24oVW5pcXVlSURC
RGF0YWJhc2VDb25uZWN0aW9uJik7Ci0gICAgdm9pZCB1bnJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0
aW9uKFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYpOwotICAgIHZvaWQgcmVnaXN0ZXJUcmFu
c2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJik7Ci0gICAgdm9pZCB1bnJlZ2lz
dGVyVHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYpOwotCi0gICAgc3Rk
Ojp1bmlxdWVfcHRyPFVuaXF1ZUlEQkRhdGFiYXNlPiBjbG9zZUFuZFRha2VVbmlxdWVJREJEYXRh
YmFzZShVbmlxdWVJREJEYXRhYmFzZSYpOwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPElEQkJhY2tp
bmdTdG9yZT4gY3JlYXRlQmFja2luZ1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYp
OworICAgIC8vIFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlcgorICAgIHZvaWQgcmVnaXN0ZXJDb25u
ZWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYpIGZpbmFsOworICAgIHZvaWQgdW5y
ZWdpc3RlckNvbm5lY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJikgZmluYWw7Cisg
ICAgdm9pZCByZWdpc3RlclRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24m
KSBmaW5hbDsKKyAgICB2b2lkIHVucmVnaXN0ZXJUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFz
ZVRyYW5zYWN0aW9uJikgZmluYWw7CisgICAgc3RkOjp1bmlxdWVfcHRyPElEQkJhY2tpbmdTdG9y
ZT4gY3JlYXRlQmFja2luZ1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYpIGZpbmFs
OworICAgIHZvaWQgcmVxdWVzdFNwYWNlKGNvbnN0IENsaWVudE9yaWdpbiYsIHVpbnQ2NF90IHNp
emUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZpbmFsOwogCiAgICAgV0VCQ09S
RV9FWFBPUlQgSGFzaFNldDxTZWN1cml0eU9yaWdpbkRhdGE+IGdldE9yaWdpbnMoKSBjb25zdDsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzTW9kaWZpZWRT
aW5jZShXYWxsVGltZSk7CkBAIC0xMDQsNyArMTAyLDYgQEAgcHVibGljOgogICAgIHZvaWQgY2xv
c2VEYXRhYmFzZXNGb3JPcmlnaW5zKGNvbnN0IFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+Jiwg
RnVuY3Rpb248Ym9vbChjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBDbGllbnRPcmln
aW4mKT4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW5hbWVPcmlnaW4oY29uc3QgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhJik7CiAKLSAgICBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbiByZXF1ZXN0U3BhY2Uo
Y29uc3QgQ2xpZW50T3JpZ2luJiwgdWludDY0X3QgdGFza1NpemUpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyB1aW50NjRfdCBkaXNrVXNhZ2UoY29uc3QgU3RyaW5nJiByb290RGlyZWN0b3J5
LCBjb25zdCBDbGllbnRPcmlnaW4mKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzRGF0
YWJhc2VBY3Rpdml0aWVzT25NYWluVGhyZWFkKCkgY29uc3Q7CkBAIC0xMTQsNiArMTExLDcgQEAg
cHJpdmF0ZToKICAgICBVbmlxdWVJREJEYXRhYmFzZSYgZ2V0T3JDcmVhdGVVbmlxdWVJREJEYXRh
YmFzZShjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImKTsKIAogICAgIHZvaWQgdXBncmFkZUZp
bGVzSWZOZWNlc3NhcnkoKTsKKyAgICBTdHJpbmcgdXBncmFkZWREYXRhYmFzZURpcmVjdG9yeShj
b25zdCBXZWJDb3JlOjpJREJEYXRhYmFzZUlkZW50aWZpZXImKTsKICAgICB2b2lkIHJlbW92ZURh
dGFiYXNlc01vZGlmaWVkU2luY2VGb3JWZXJzaW9uKFdhbGxUaW1lLCBjb25zdCBTdHJpbmcmKTsK
ICAgICB2b2lkIHJlbW92ZURhdGFiYXNlc1dpdGhPcmlnaW5zRm9yVmVyc2lvbihjb25zdCBWZWN0
b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiYsIGNvbnN0IFN0cmluZyYpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0
b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJ
REJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDdlZTQxNDBhOGFmMTgwMTFjOTZiY2E3YjYwOGQ4NjU5
MThhZjg1ZWEuLmQ2MzM1MDMwOTkzMDU1YjliMTJiNzg0NTY1NWRhODMzNzJiMWE1NTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJC
YWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwCkBAIC00NCw5ICs0NCw4IEBAIG5hbWVzcGFj
ZSBJREJTZXJ2ZXIgewogLy8gVGhlIEluZGV4ZWREQiBzcGVjIHN0YXRlcyB0aGUgbWF4aW11bSB2
YWx1ZSB5b3UgY2FuIGdldCBmcm9tIHRoZSBrZXkgZ2VuZXJhdG9yIGlzIDJeNTMuCiBjb25zdGV4
cHIgdWludDY0X3QgbWF4R2VuZXJhdGVkS2V5VmFsdWUgPSAweDIwMDAwMDAwMDAwMDAwOwogCi1N
ZW1vcnlJREJCYWNraW5nU3RvcmU6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZShQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYgaWRlbnRpZmllcikKK01l
bW9yeUlEQkJhY2tpbmdTdG9yZTo6TWVtb3J5SURCQmFja2luZ1N0b3JlKGNvbnN0IElEQkRhdGFi
YXNlSWRlbnRpZmllciYgaWRlbnRpZmllcikKICAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVy
KQotICAgICwgbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQogewogfQogCkBAIC0xMzQsNyArMTMzLDcg
QEAgSURCRXJyb3IgTWVtb3J5SURCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmplY3RTdG9yZShjb25z
dCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHQKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgQ29u
c3RyYWludEVycm9yIH07CiAKICAgICBBU1NFUlQoIW1fb2JqZWN0U3RvcmVzQnlJZGVudGlmaWVy
LmNvbnRhaW5zKGluZm8uaWRlbnRpZmllcigpKSk7Ci0gICAgYXV0byBvYmplY3RTdG9yZSA9IE1l
bW9yeU9iamVjdFN0b3JlOjpjcmVhdGUobV9zZXNzaW9uSUQsIGluZm8pOworICAgIGF1dG8gb2Jq
ZWN0U3RvcmUgPSBNZW1vcnlPYmplY3RTdG9yZTo6Y3JlYXRlKGluZm8pOwogCiAgICAgbV9kYXRh
YmFzZUluZm8tPmFkZEV4aXN0aW5nT2JqZWN0U3RvcmUoaW5mbyk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3Rv
cmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJC
YWNraW5nU3RvcmUuaAppbmRleCA5MmFhNzYwZDIwNzMzNzE4ZmJkYjhjMDQ0Y2ZlNjdkY2FiMTY1
MzM1Li4wOTMwMWU4M2ZjYTdjNzUwOWUyODU4MTEwYzEyNzgzNTMzNThmM2RhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2lu
Z1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01l
bW9yeUlEQkJhY2tpbmdTdG9yZS5oCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAiSURCUmVz
b3VyY2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSW5kZXhLZXkuaCIKICNpbmNsdWRlICJNZW1v
cnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbi5oIgotI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4K
ICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00MSw4
ICs0MCw4IEBAIGNsYXNzIE1lbW9yeU9iamVjdFN0b3JlOwogY2xhc3MgTWVtb3J5SURCQmFja2lu
Z1N0b3JlIGZpbmFsIDogcHVibGljIElEQkJhY2tpbmdTdG9yZSB7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgTWVtb3J5SURCQmFja2luZ1N0b3JlKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImKTsKLSAgICB+TWVtb3J5SURCQmFj
a2luZ1N0b3JlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgTWVtb3J5SURCQmFja2lu
Z1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYpOworICAgIFdFQkNPUkVfRVhQT1JU
IH5NZW1vcnlJREJCYWNraW5nU3RvcmUoKTsKIAogICAgIElEQkVycm9yIGdldE9yRXN0YWJsaXNo
RGF0YWJhc2VJbmZvKElEQkRhdGFiYXNlSW5mbyYpIGZpbmFsOwogICAgIHVpbnQ2NF90IGRhdGFi
YXNlVmVyc2lvbigpIGZpbmFsOwpAQCAtOTIsNyArOTEsNiBAQCBwcml2YXRlOgogICAgIHZvaWQg
dW5yZWdpc3Rlck9iamVjdFN0b3JlKE1lbW9yeU9iamVjdFN0b3JlJik7CiAKICAgICBJREJEYXRh
YmFzZUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwotICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lv
bklEOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJREJEYXRhYmFzZUluZm8+IG1fZGF0YWJhc2VJbmZv
OwogCiAgICAgSGFzaE1hcDxJREJSZXNvdXJjZUlkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxN
ZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbj4+IG1fdHJhbnNhY3Rpb25zOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0
b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlP
YmplY3RTdG9yZS5jcHAKaW5kZXggOWRkYzBmY2Y5OTE5M2YzMzRiZGM1ZDQyNjFlYTM5MWRlNGJh
YWI3YS4uZTAxZWUwMmI3MTUyMzk5Y2M3MjZmYjE4YmMzNDkxNDYwNGRlNzNlYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0
b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVt
b3J5T2JqZWN0U3RvcmUuY3BwCkBAIC0zOCwxOCArMzgsMTcgQEAKICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9KU0NKU1ZhbHVlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSlNWYWx1
ZUlubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0xvY2suaD4KLSNpbmNsdWRl
IDxwYWwvU2Vzc2lvbklELmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFj
ZSBKU0M7CiBuYW1lc3BhY2UgSURCU2VydmVyIHsKIAotUmVmPE1lbW9yeU9iamVjdFN0b3JlPiBN
ZW1vcnlPYmplY3RTdG9yZTo6Y3JlYXRlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
SURCT2JqZWN0U3RvcmVJbmZvJiBpbmZvKQorUmVmPE1lbW9yeU9iamVjdFN0b3JlPiBNZW1vcnlP
YmplY3RTdG9yZTo6Y3JlYXRlKGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYgaW5mbykKIHsKLSAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZW1vcnlPYmplY3RTdG9yZShzZXNzaW9uSUQsIGluZm8p
KTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZW1vcnlPYmplY3RTdG9yZShpbmZvKSk7CiB9
CiAKLU1lbW9yeU9iamVjdFN0b3JlOjpNZW1vcnlPYmplY3RTdG9yZShQQUw6OlNlc3Npb25JRCwg
Y29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiBpbmZvKQorTWVtb3J5T2JqZWN0U3RvcmU6Ok1lbW9y
eU9iamVjdFN0b3JlKGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYgaW5mbykKICAgICA6IG1faW5m
byhpbmZvKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuaAppbmRleCA4NzFkZWI1ZTRhZTA1MTQ4
MmI5MDg5Njg5NWVhMzFjMjc2ZGQzMDg2Li5mMDNhM2ExYjBhZDUzNGI5ZjMzOWM0ZmJkN2U3NDBh
ZGYyMjg0NzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuaApAQCAtMzQsMTAgKzM0LDYgQEAKICNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKLW5h
bWVzcGFjZSBQQUwgewotY2xhc3MgU2Vzc2lvbklEOwotfQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIElEQkN1cnNvckluZm87CkBAIC02MSw3ICs1Nyw3IEBAIHR5cGVkZWYgSGFzaE1h
cDxJREJLZXlEYXRhLCBUaHJlYWRTYWZlRGF0YUJ1ZmZlciwgSURCS2V5RGF0YUhhc2gsIElEQktl
eURhdGFIYXNoCiAKIGNsYXNzIE1lbW9yeU9iamVjdFN0b3JlIDogcHVibGljIFJlZkNvdW50ZWQ8
TWVtb3J5T2JqZWN0U3RvcmU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPE1lbW9yeU9iamVj
dFN0b3JlPiBjcmVhdGUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYp
OworICAgIHN0YXRpYyBSZWY8TWVtb3J5T2JqZWN0U3RvcmU+IGNyZWF0ZShjb25zdCBJREJPYmpl
Y3RTdG9yZUluZm8mKTsKIAogICAgIH5NZW1vcnlPYmplY3RTdG9yZSgpOwogCkBAIC0xMDgsNyAr
MTA0LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVuYW1lSW5kZXgoTWVtb3J5SW5kZXgmLCBjb25z
dCBTdHJpbmcmIG5ld05hbWUpOwogCiBwcml2YXRlOgotICAgIE1lbW9yeU9iamVjdFN0b3JlKFBB
TDo6U2Vzc2lvbklELCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mKTsKKyAgICBNZW1vcnlPYmpl
Y3RTdG9yZShjb25zdCBJREJPYmplY3RTdG9yZUluZm8mKTsKIAogICAgIElEQktleURhdGFTZXQ6
Oml0ZXJhdG9yIGxvd2VzdEl0ZXJhdG9ySW5SYW5nZShjb25zdCBJREJLZXlSYW5nZURhdGEmLCBi
b29sIHJldmVyc2UpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCmlu
ZGV4IDc4NDYxZjEzNmY3N2I0OGUwNDI1NTY5OWQ4ZDlhYzg0OWQ5YzQ2NWQuLjkyMWFhMmIwYjg4
MDliM2E0ZGNmNzMyMTg5ZGI5MDlhNDYwYWIxOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5n
U3RvcmUuY3BwCkBAIC0yMzYsMTIgKzIzNiwxMCBAQCBzdGF0aWMgQVNDSUlMaXRlcmFsIGluZGV4
SW5mb1RhYmxlU2NoZW1hVGVtcCgpCiAgICAgcmV0dXJuIFRBQkxFX1NDSEVNQV9QUkVGSVggIl9U
ZW1wX0luZGV4SW5mbyIgSU5ERVhfSU5GT19UQUJMRV9TQ0hFTUFfU1VGRklYOwogfQogCi1TUUxp
dGVJREJCYWNraW5nU3RvcmU6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZShQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYgaWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBkYXRhYmFzZVJvb3REaXJlY3RvcnkpCi0gICAgOiBtX3Nlc3Npb25JRChzZXNzaW9u
SUQpCi0gICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKLSAgICAsIG1fZGF0YWJhc2VSb290
RGlyZWN0b3J5KGRhdGFiYXNlUm9vdERpcmVjdG9yeSkKK1NRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
U1FMaXRlSURCQmFja2luZ1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYgaWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZURpcmVjdG9yeSkKKyAgICA6IG1faWRlbnRpZmll
cihpZGVudGlmaWVyKQorICAgICwgbV9kYXRhYmFzZURpcmVjdG9yeShkYXRhYmFzZURpcmVjdG9y
eSkKIHsKLSAgICBtX2RhdGFiYXNlRGlyZWN0b3J5ID0gZnVsbERhdGFiYXNlRGlyZWN0b3J5V2l0
aFVwZ3JhZGUoKTsKIH0KIAogU1FMaXRlSURCQmFja2luZ1N0b3JlOjp+U1FMaXRlSURCQmFja2lu
Z1N0b3JlKCkKQEAgLTkxMiwxOSArOTEwLDI5IEBAIHN0ZDo6dW5pcXVlX3B0cjxJREJEYXRhYmFz
ZUluZm8+IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZXh0cmFjdEV4aXN0aW5nRGF0YWJhc2VJCiAg
ICAgcmV0dXJuIGRhdGFiYXNlSW5mbzsKIH0KIAotU3RyaW5nIFNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6ZmlsZW5hbWVGb3JEYXRhYmFzZU5hbWUoKSBjb25zdAorU3RyaW5nIFNRTGl0ZUlEQkJhY2tp
bmdTdG9yZTo6ZW5jb2RlRGF0YWJhc2VOYW1lKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lKQog
ewotICAgIEFTU0VSVCghbV9pZGVudGlmaWVyLmRhdGFiYXNlTmFtZSgpLmlzTnVsbCgpKTsKLQot
ICAgIGlmIChtX2lkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCkuaXNFbXB0eSgpKQorICAgIEFTU0VS
VCghZGF0YWJhc2VOYW1lLmlzRW1wdHkoKSk7CisgICAgaWYgKGRhdGFiYXNlTmFtZS5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiAiJTAwIjsKIAotICAgIFN0cmluZyBmaWxlbmFtZSA9IEZpbGVT
eXN0ZW06OmVuY29kZUZvckZpbGVOYW1lKG1faWRlbnRpZmllci5kYXRhYmFzZU5hbWUoKSk7Ci0g
ICAgZmlsZW5hbWUucmVwbGFjZSgnLicsICIlMkUiKTsKKyAgICBTdHJpbmcgZmlsZW5hbWUgPSBG
aWxlU3lzdGVtOjplbmNvZGVGb3JGaWxlTmFtZShkYXRhYmFzZU5hbWUpOworICAgIGZpbGVuYW1l
LnJlcGxhY2VXaXRoTGl0ZXJhbCgnLicsICIlMkUiKTsKIAogICAgIHJldHVybiBmaWxlbmFtZTsK
IH0KIAorU3RyaW5nIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVjb2RlRGF0YWJhc2VOYW1lKGNv
bnN0IFN0cmluZyYgZW5jb2RlZE5hbWUpCit7CisgICAgaWYgKGVuY29kZWROYW1lID09ICIlMDAi
X3MpCisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOworCisgICAgU3RyaW5nIG5hbWUgPSBl
bmNvZGVkTmFtZTsKKyAgICBuYW1lLnJlcGxhY2UoIiUyRSJfcywgIi4iX3MpOworCisgICAgcmV0
dXJuIEZpbGVTeXN0ZW06OmRlY29kZUZyb21GaWxlbmFtZShuYW1lKTsKK30KKwogU3RyaW5nIFNR
TGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZnVsbERhdGFiYXNlUGF0aEZvckRpcmVjdG9yeShjb25zdCBT
dHJpbmcmIGZ1bGxEYXRhYmFzZURpcmVjdG9yeSkKIHsKICAgICByZXR1cm4gRmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGZ1bGxEYXRhYmFzZURpcmVjdG9yeSwgIkluZGV4ZWRE
Qi5zcWxpdGUzIik7CkBAIC05NjUsMjMgKzk3Myw2IEBAIHN0ZDo6b3B0aW9uYWw8SURCRGF0YWJh
c2VOYW1lQW5kVmVyc2lvbj4gU1FMaXRlSURCQmFja2luZ1N0b3JlOjpkYXRhYmFzZU5hbWVBbmRW
CiAgICAgcmV0dXJuIElEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24geyBkYXRhYmFzZU5hbWUsICpk
YXRhYmFzZVZlcnNpb24gfTsKIH0KIAotU3RyaW5nIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZnVs
bERhdGFiYXNlRGlyZWN0b3J5V2l0aFVwZ3JhZGUoKQotewotICAgIFN0cmluZyBvbGRPcmlnaW5E
aXJlY3RvcnkgPSBtX2lkZW50aWZpZXIuZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9vdCht
X2RhdGFiYXNlUm9vdERpcmVjdG9yeSwgInYwIik7Ci0gICAgU3RyaW5nIG9sZERhdGFiYXNlRGly
ZWN0b3J5ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG9sZE9yaWdpbkRp
cmVjdG9yeSwgZmlsZW5hbWVGb3JEYXRhYmFzZU5hbWUoKSk7Ci0gICAgU3RyaW5nIG5ld09yaWdp
bkRpcmVjdG9yeSA9IG1faWRlbnRpZmllci5kYXRhYmFzZURpcmVjdG9yeVJlbGF0aXZlVG9Sb290
KG1fZGF0YWJhc2VSb290RGlyZWN0b3J5LCAidjEiKTsKLSAgICBTdHJpbmcgZmlsZU5hbWVIYXNo
ID0gU1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0ZUhhc2hGb3JGaWxlTmFtZShtX2lkZW50aWZpZXIu
ZGF0YWJhc2VOYW1lKCkpOwotICAgIFN0cmluZyBuZXdEYXRhYmFzZURpcmVjdG9yeSA9IEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChuZXdPcmlnaW5EaXJlY3RvcnksIGZpbGVO
YW1lSGFzaCk7Ci0gICAgRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKG5ld0RhdGFiYXNl
RGlyZWN0b3J5KTsKLQotICAgIGlmIChGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG9sZERhdGFiYXNl
RGlyZWN0b3J5KSkgewotICAgICAgICBGaWxlU3lzdGVtOjptb3ZlRmlsZShvbGREYXRhYmFzZURp
cmVjdG9yeSwgbmV3RGF0YWJhc2VEaXJlY3RvcnkpOwotICAgICAgICBGaWxlU3lzdGVtOjpkZWxl
dGVFbXB0eURpcmVjdG9yeShvbGRPcmlnaW5EaXJlY3RvcnkpOwotICAgIH0KLQotICAgIHJldHVy
biBuZXdEYXRhYmFzZURpcmVjdG9yeTsKLX0KLQogSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0
b3JlOjpnZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbyhJREJEYXRhYmFzZUluZm8mIGluZm8pCiB7
CiAgICAgTE9HKEluZGV4ZWREQiwgIlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0T3JFc3RhYmxp
c2hEYXRhYmFzZUluZm8gLSBkYXRhYmFzZSAlcyIsIG1faWRlbnRpZmllci5kYXRhYmFzZU5hbWUo
KS51dGY4KCkuZGF0YSgpKTsKQEAgLTk5MSwxMSArOTgyLDExIEBAIElEQkVycm9yIFNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6Z2V0T3JFc3RhYmxpc2hEYXRhYmFzZUluZm8oSURCRGF0YWJhc2VJbmZv
JiBpbmZvCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IH07CiAgICAgfQogCi0gICAgU3RyaW5n
IGRiRmlsZW5hbWUgPSBmdWxsRGF0YWJhc2VQYXRoKCk7Ci0KKyAgICBTdHJpbmcgZGF0YWJhc2VQ
YXRoID0gZnVsbERhdGFiYXNlUGF0aCgpOworICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3Rv
cmllcyhGaWxlU3lzdGVtOjpwYXJlbnRQYXRoKGRhdGFiYXNlUGF0aCkpOwogICAgIG1fc3FsaXRl
REIgPSBtYWtlVW5pcXVlPFNRTGl0ZURhdGFiYXNlPigpOwotICAgIGlmICghbV9zcWxpdGVEQi0+
b3BlbihkYkZpbGVuYW1lKSkgewotICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBvcGVuIFNR
TGl0ZSBkYXRhYmFzZSBhdCBwYXRoICclcyciLCBkYkZpbGVuYW1lLnV0ZjgoKS5kYXRhKCkpOwor
ICAgIGlmICghbV9zcWxpdGVEQi0+b3BlbihkYXRhYmFzZVBhdGgpKSB7CisgICAgICAgIExPR19F
UlJPUigiRmFpbGVkIHRvIG9wZW4gU1FMaXRlIGRhdGFiYXNlIGF0IHBhdGggJyVzJyIsIGRhdGFi
YXNlUGF0aC51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgY2xvc2VTUUxpdGVEQigpOwogICAgIH0K
IApAQCAtMTA0NCw3ICsxMDM1LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpn
ZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbyhJREJEYXRhYmFzZUluZm8mIGluZm8KICAgICAgICAg
ZGF0YWJhc2VJbmZvID0gY3JlYXRlQW5kUG9wdWxhdGVJbml0aWFsRGF0YWJhc2VJbmZvKCk7CiAK
ICAgICBpZiAoIWRhdGFiYXNlSW5mbykgewotICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBl
c3RhYmxpc2ggSURCIGRhdGFiYXNlIGF0IHBhdGggJyVzJyIsIGRiRmlsZW5hbWUudXRmOCgpLmRh
dGEoKSk7CisgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGVzdGFibGlzaCBJREIgZGF0YWJh
c2UgYXQgcGF0aCAnJXMnIiwgZGF0YWJhc2VQYXRoLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBj
bG9zZVNRTGl0ZURCKCk7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwg
IlVuYWJsZSB0byBlc3RhYmxpc2ggSURCIGRhdGFiYXNlIGZpbGUiX3MgfTsKICAgICB9CkBAIC0y
Nzk4LDcgKzI3ODksNiBAQCB2b2lkIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlQmFja2lu
Z1N0b3JlKCkKIAogICAgIFNRTGl0ZUZpbGVTeXN0ZW06OmRlbGV0ZURhdGFiYXNlRmlsZShkYXRh
YmFzZVBhdGgpOwogICAgIFNRTGl0ZUZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGF0YWJhc2VEaXJl
Y3RvcnkobV9kYXRhYmFzZURpcmVjdG9yeSk7Ci0gICAgU1FMaXRlRmlsZVN5c3RlbTo6ZGVsZXRl
RW1wdHlEYXRhYmFzZURpcmVjdG9yeShtX2lkZW50aWZpZXIuZGF0YWJhc2VEaXJlY3RvcnlSZWxh
dGl2ZVRvUm9vdChtX2RhdGFiYXNlUm9vdERpcmVjdG9yeSkpOwogfQogCiB2b2lkIFNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6dW5yZWdpc3RlckN1cnNvcihTUUxpdGVJREJDdXJzb3ImIGN1cnNvcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxp
dGVJREJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaAppbmRleCAyZWZlNmIyYTM0MTk5M2JiMjZmZGY5
MWNmZjZlN2RlYThkYmJlZDM2Li43MzFhOWE0MTkzODY1ZTNjNWYzYzM1ZWQ3NTcxYjEyODJmNzgw
OTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
U1FMaXRlSURCQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5oCkBAIC01MSw5ICs1MSw4IEBAIGNs
YXNzIFNRTGl0ZUlEQkN1cnNvcjsKIGNsYXNzIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZSBmaW5hbCA6
IHB1YmxpYyBJREJCYWNraW5nU3RvcmUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgotICAgIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZShQQUw6OlNlc3Npb25JRCwgY29uc3Qg
SURCRGF0YWJhc2VJZGVudGlmaWVyJiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZVJvb3REaXJlY3Rv
cnkpOwotICAgIAotICAgIH5TUUxpdGVJREJCYWNraW5nU3RvcmUoKSBmaW5hbDsKKyAgICBXRUJD
T1JFX0VYUE9SVCBTUUxpdGVJREJCYWNraW5nU3RvcmUoY29uc3QgSURCRGF0YWJhc2VJZGVudGlm
aWVyJiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZURpcmVjdG9yeSk7CisgICAgV0VCQ09SRV9FWFBP
UlQgflNRTGl0ZUlEQkJhY2tpbmdTdG9yZSgpIGZpbmFsOwogCiAgICAgSURCRXJyb3IgZ2V0T3JF
c3RhYmxpc2hEYXRhYmFzZUluZm8oSURCRGF0YWJhc2VJbmZvJikgZmluYWw7CiAgICAgdWludDY0
X3QgZGF0YWJhc2VWZXJzaW9uKCkgZmluYWw7CkBAIC05NCwxOCArOTMsMTUgQEAgcHVibGljOgog
CiAgICAgSURCRXJyb3IgZ2V0QmxvYlJlY29yZHNGb3JPYmplY3RTdG9yZVJlY29yZChpbnQ2NF90
IG9iamVjdFN0b3JlUmVjb3JkLCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIFZlY3RvcjxTdHJp
bmc+JiBibG9iRmlsZVBhdGhzKTsKIAotICAgIHN0YXRpYyB1aW50NjRfdCBkYXRhYmFzZXNTaXpl
Rm9yRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKLQorICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyB1aW50NjRfdCBkYXRhYmFzZXNTaXplRm9yRGlyZWN0b3J5KGNvbnN0IFN0cmlu
ZyYgZGlyZWN0b3J5KTsKICAgICBTdHJpbmcgZGF0YWJhc2VEaXJlY3RvcnkoKSBjb25zdCB7IHJl
dHVybiBtX2RhdGFiYXNlRGlyZWN0b3J5OyB9OwotICAgIHN0YXRpYyBTdHJpbmcgZnVsbERhdGFi
YXNlUGF0aEZvckRpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKLSAgICBzdGF0aWMgc3RkOjpvcHRp
b25hbDxJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiBkYXRhYmFzZU5hbWVBbmRWZXJzaW9uRnJv
bUZpbGUoY29uc3QgU3RyaW5nJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBm
dWxsRGF0YWJhc2VQYXRoRm9yRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpOworICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBTdHJpbmcgZW5jb2RlRGF0YWJhc2VOYW1lKGNvbnN0IFN0cmluZyYgZGF0
YWJhc2VOYW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIGRlY29kZURhdGFi
YXNlTmFtZShjb25zdCBTdHJpbmcmIGVuY29kZWREYXRhYmFzZU5hbWUpOwogCi0gICAgUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjpvcHRpb25hbDxJREJEYXRhYmFzZU5hbWVBbmRWZXJz
aW9uPiBkYXRhYmFzZU5hbWVBbmRWZXJzaW9uRnJvbUZpbGUoY29uc3QgU3RyaW5nJik7CiAKIHBy
aXZhdGU6Ci0gICAgU3RyaW5nIGZpbGVuYW1lRm9yRGF0YWJhc2VOYW1lKCkgY29uc3Q7Ci0gICAg
U3RyaW5nIGZ1bGxEYXRhYmFzZURpcmVjdG9yeVdpdGhVcGdyYWRlKCk7Ci0KICAgICBJREJFcnJv
ciBlbnN1cmVWYWxpZFJlY29yZHNUYWJsZSgpOwogICAgIElEQkVycm9yIGVuc3VyZVZhbGlkSW5k
ZXhSZWNvcmRzVGFibGUoKTsKICAgICBJREJFcnJvciBlbnN1cmVWYWxpZEluZGV4UmVjb3Jkc0lu
ZGV4KCk7CkBAIC0yMDYsNyArMjAyLDYgQEAgcHJpdmF0ZToKIAogICAgIHN0ZDo6dW5pcXVlX3B0
cjxTUUxpdGVTdGF0ZW1lbnQ+IG1fY2FjaGVkU3RhdGVtZW50c1tzdGF0aWNfY2FzdDxpbnQ+KFNR
TDo6SW52YWxpZCldOwogCi0gICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAgICAgSURC
RGF0YWJhc2VJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SURC
RGF0YWJhc2VJbmZvPiBtX2RhdGFiYXNlSW5mbzsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SURCRGF0
YWJhc2VJbmZvPiBtX29yaWdpbmFsRGF0YWJhc2VJbmZvQmVmb3JlVmVyc2lvbkNoYW5nZTsKQEAg
LTIxNiw3ICsyMTEsNiBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8SURCUmVzb3VyY2VJZGVudGlm
aWVyLCBzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlSURCVHJhbnNhY3Rpb24+PiBtX3RyYW5zYWN0aW9u
czsKICAgICBIYXNoTWFwPElEQlJlc291cmNlSWRlbnRpZmllciwgU1FMaXRlSURCQ3Vyc29yKj4g
bV9jdXJzb3JzOwogCi0gICAgU3RyaW5nIG1fZGF0YWJhc2VSb290RGlyZWN0b3J5OwogICAgIFN0
cmluZyBtX2RhdGFiYXNlRGlyZWN0b3J5OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAK
aW5kZXggMmIxZWFkYjllYTVjNDY0ZDAyNzVlZDIyM2Y1MDAzYjdiZWYxNTczMy4uNWI1MGQyOThj
ZTNmMmU0YjY2NzJlZTAyZmJlNmY2Y2Q4MmY4NmJlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2Uu
Y3BwCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlN0
b3JhZ2VRdW90YU1hbmFnZXIuaCIKICNpbmNsdWRlICJVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rp
b24uaCIKKyNpbmNsdWRlICJVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuaCIKICNpbmNsdWRlIDx3
dGYvU2NvcGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTM0LDggKzEzNSw4IEBAIHN0
YXRpYyBpbmxpbmUgdWludDY0X3QgZXN0aW1hdGVTaXplKGNvbnN0IElEQk9iamVjdFN0b3JlSW5m
byYgaW5mbykKICAgICByZXR1cm4gc2l6ZTsKIH0KIAotVW5pcXVlSURCRGF0YWJhc2U6OlVuaXF1
ZUlEQkRhdGFiYXNlKElEQlNlcnZlciYgc2VydmVyLCBjb25zdCBJREJEYXRhYmFzZUlkZW50aWZp
ZXImIGlkZW50aWZpZXIpCi0gICAgOiBtX3NlcnZlcihzZXJ2ZXIpCitVbmlxdWVJREJEYXRhYmFz
ZTo6VW5pcXVlSURCRGF0YWJhc2UoVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyJiBtYW5hZ2VyLCBj
b25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImIGlkZW50aWZpZXIpCisgICAgOiBtX21hbmFnZXIo
bWFuYWdlcikKICAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogewogICAgIEFTU0VSVCgh
aXNNYWluVGhyZWFkKCkpOwpAQCAtMTYzLDYgKzE2NCwxMSBAQCBjb25zdCBJREJEYXRhYmFzZUlu
Zm8mIFVuaXF1ZUlEQkRhdGFiYXNlOjppbmZvKCkgY29uc3QKICAgICByZXR1cm4gKm1fZGF0YWJh
c2VJbmZvOwogfQogCitVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIqIFVuaXF1ZUlEQkRhdGFiYXNl
OjptYW5hZ2VyKCkKK3sKKyAgICByZXR1cm4gbV9tYW5hZ2VyLmdldCgpOworfQorCiB2b2lkIFVu
aXF1ZUlEQkRhdGFiYXNlOjpvcGVuRGF0YWJhc2VDb25uZWN0aW9uKElEQkNvbm5lY3Rpb25Ub0Ns
aWVudCYgY29ubmVjdGlvbiwgY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhKQogewog
ICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6b3BlbkRhdGFiYXNlQ29ubmVj
dGlvbiIpOwpAQCAtMTg1LDE3ICsxOTEsNDUgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cGVy
Zm9ybUN1cnJlbnRPcGVuT3BlcmF0aW9uKCkKICAgICBBU1NFUlQobV9jdXJyZW50T3BlbkRCUmVx
dWVzdCk7CiAgICAgQVNTRVJUKG1fY3VycmVudE9wZW5EQlJlcXVlc3QtPmlzT3BlblJlcXVlc3Qo
KSk7CiAKKyAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGNyZWF0ZSB0aGUgZmlsZSBzbyBubyBuZWVk
IHRvIGRvIHNwYWNlIGNoZWNrLgorICAgIGlmIChtX2JhY2tpbmdTdG9yZSkKKyAgICAgICAgcmV0
dXJuIHBlcmZvcm1DdXJyZW50T3Blbk9wZXJhdGlvbkFmdGVyU3BhY2VDaGVjayh0cnVlKTsKKwor
ICAgIGlmICghbV9tYW5hZ2VyKQorICAgICAgICByZXR1cm4gcGVyZm9ybUN1cnJlbnRPcGVuT3Bl
cmF0aW9uQWZ0ZXJTcGFjZUNoZWNrKGZhbHNlKTsKKworICAgIGF1dG8gcmVxdWVzdElkZW50aWZp
ZXIgPSBtX2N1cnJlbnRPcGVuREJSZXF1ZXN0LT5yZXF1ZXN0RGF0YSgpLnJlcXVlc3RJZGVudGlm
aWVyKCk7CisgICAgaWYgKG1fb3BlbkRCUmVxdWVzdHNGb3JTcGFjZUNoZWNrLmNvbnRhaW5zKHJl
cXVlc3RJZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9vcGVuREJSZXF1ZXN0
c0ZvclNwYWNlQ2hlY2suYWRkKHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICBtX21hbmFnZXItPnJl
cXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIGRlZmF1bHRXcml0ZU9wZXJhdGlvbkNv
c3QsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCByZXF1ZXN0SWRlbnRpZmll
cl0oYm9vbCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICBtX29wZW5EQlJlcXVlc3RzRm9yU3BhY2VDaGVjay5y
ZW1vdmUocmVxdWVzdElkZW50aWZpZXIpOworICAgICAgICBpZiAobV9jdXJyZW50T3BlbkRCUmVx
dWVzdC0+cmVxdWVzdERhdGEoKS5yZXF1ZXN0SWRlbnRpZmllcigpICE9IHJlcXVlc3RJZGVudGlm
aWVyKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHBlcmZvcm1DdXJyZW50T3Blbk9w
ZXJhdGlvbkFmdGVyU3BhY2VDaGVjayhncmFudGVkKTsKKyAgICB9KTsKK30KKwordm9pZCBVbmlx
dWVJREJEYXRhYmFzZTo6cGVyZm9ybUN1cnJlbnRPcGVuT3BlcmF0aW9uQWZ0ZXJTcGFjZUNoZWNr
KGJvb2wgaXNHcmFudGVkKQoreworICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFz
ZTo6cGVyZm9ybUN1cnJlbnRPcGVuT3BlcmF0aW9uQWZ0ZXJTcGFjZVJlcXVlc3QgKCVwKSIsIHRo
aXMpOworCiAgICAgSURCRXJyb3IgYmFja2luZ1N0b3JlT3BlbkVycm9yOwogICAgIGlmICghbV9i
YWNraW5nU3RvcmUpIHsKLSAgICAgICAgLy8gUXVvdGEgY2hlY2suCi0gICAgICAgIGF1dG8gZGVj
aXNpb24gPSBtX3NlcnZlci5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCBkZWZh
dWx0V3JpdGVPcGVyYXRpb25Db3N0KTsKLSAgICAgICAgaWYgKGRlY2lzaW9uID09IFN0b3JhZ2VR
dW90YU1hbmFnZXI6OkRlY2lzaW9uOjpEZW55KQorICAgICAgICBpZiAoIW1fbWFuYWdlcikKKyAg
ICAgICAgICAgIGJhY2tpbmdTdG9yZU9wZW5FcnJvciA9IElEQkVycm9yIHsgSW52YWxpZFN0YXRl
RXJyb3IgfTsKKyAgICAgICAgZWxzZSBpZiAoIWlzR3JhbnRlZCkKICAgICAgICAgICAgIGJhY2tp
bmdTdG9yZU9wZW5FcnJvciA9IElEQkVycm9yIHsgUXVvdGFFeGNlZWRlZEVycm9yLCBxdW90YUVy
cm9yTWVzc2FnZU5hbWUoIk9wZW5CYWNraW5nU3RvcmUiKSB9OwogICAgICAgICBlbHNlIHsKLSAg
ICAgICAgICAgIG1fYmFja2luZ1N0b3JlID0gbV9zZXJ2ZXIuY3JlYXRlQmFja2luZ1N0b3JlKG1f
aWRlbnRpZmllcik7CisgICAgICAgICAgICBtX2JhY2tpbmdTdG9yZSA9IG1fbWFuYWdlci0+Y3Jl
YXRlQmFja2luZ1N0b3JlKG1faWRlbnRpZmllcik7CiAgICAgICAgICAgICBJREJEYXRhYmFzZUlu
Zm8gZGF0YWJhc2VJbmZvOwogICAgICAgICAgICAgYmFja2luZ1N0b3JlT3BlbkVycm9yID0gbV9i
YWNraW5nU3RvcmUtPmdldE9yRXN0YWJsaXNoRGF0YWJhc2VJbmZvKGRhdGFiYXNlSW5mbyk7Ci0g
ICAgICAgICAgICBpZiAoYmFja2luZ1N0b3JlT3BlbkVycm9yLmlzTnVsbCgpKQorICAgICAgICAg
ICAgaWYgKCFiYWNraW5nU3RvcmVPcGVuRXJyb3IpCiAgICAgICAgICAgICAgICAgbV9kYXRhYmFz
ZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oZGF0YWJhc2VJbmZvKTsKICAgICAg
ICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGdldCBk
YXRhYmFzZSBpbmZvICclcyciLCBiYWNraW5nU3RvcmVPcGVuRXJyb3IubWVzc2FnZSgpLnV0Zjgo
KS5kYXRhKCkpOwpAQCAtMjA0LDcgKzIzOCw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnBl
cmZvcm1DdXJyZW50T3Blbk9wZXJhdGlvbigpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAo
IWJhY2tpbmdTdG9yZU9wZW5FcnJvci5pc051bGwoKSkgeworICAgIGlmIChiYWNraW5nU3RvcmVP
cGVuRXJyb3IpIHsKICAgICAgICAgYXV0byByZXN1bHQgPSBJREJSZXN1bHREYXRhOjplcnJvciht
X2N1cnJlbnRPcGVuREJSZXF1ZXN0LT5yZXF1ZXN0RGF0YSgpLnJlcXVlc3RJZGVudGlmaWVyKCks
IGJhY2tpbmdTdG9yZU9wZW5FcnJvcik7CiAgICAgICAgIG1fY3VycmVudE9wZW5EQlJlcXVlc3Qt
PmNvbm5lY3Rpb24oKS5kaWRPcGVuRGF0YWJhc2UocmVzdWx0KTsKICAgICAgICAgbV9jdXJyZW50
T3BlbkRCUmVxdWVzdCA9IG51bGxwdHI7CkBAIC0yOTQsNyArMzI4LDcgQEAgdm9pZCBVbmlxdWVJ
REJEYXRhYmFzZTo6ZGVsZXRlQmFja2luZ1N0b3JlKCkKICAgICBBU1NFUlQoIWlzTWFpblRocmVh
ZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZUJhY2tp
bmdTdG9yZSIpOwogICAgIAotICAgIGF1dG8gYmFja2luZ1N0b3JlID0gbV9iYWNraW5nU3RvcmUg
PyBzdGQ6OmV4Y2hhbmdlKG1fYmFja2luZ1N0b3JlLCBudWxscHRyKSA6IG1fc2VydmVyLmNyZWF0
ZUJhY2tpbmdTdG9yZShtX2lkZW50aWZpZXIpOworICAgIGF1dG8gYmFja2luZ1N0b3JlID0gbV9i
YWNraW5nU3RvcmUgPyBzdGQ6OmV4Y2hhbmdlKG1fYmFja2luZ1N0b3JlLCBudWxscHRyKSA6IG1f
bWFuYWdlci0+Y3JlYXRlQmFja2luZ1N0b3JlKG1faWRlbnRpZmllcik7CiAgICAgdWludDY0X3Qg
ZGVsZXRlZFZlcnNpb24gPSBiYWNraW5nU3RvcmUtPmRhdGFiYXNlVmVyc2lvbigpOwogICAgIGJh
Y2tpbmdTdG9yZS0+ZGVsZXRlQmFja2luZ1N0b3JlKCk7CiAgICAgZGlkRGVsZXRlQmFja2luZ1N0
b3JlKGRlbGV0ZWRWZXJzaW9uKTsKQEAgLTU0MiwyMCArNTc2LDMyIEBAIHZvaWQgVW5pcXVlSURC
RGF0YWJhc2U6OmFkZE9wZW5EYXRhYmFzZUNvbm5lY3Rpb24oUmVmPFVuaXF1ZUlEQkRhdGFiYXNl
Q29ubmVjdGlvCiAgICAgbV9vcGVuRGF0YWJhc2VDb25uZWN0aW9ucy5hZGQoYWRvcHRSZWYoY29u
bmVjdGlvbi5sZWFrUmVmKCkpKTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRl
T2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIGNv
bnN0IElEQk9iamVjdFN0b3JlSW5mbyYgaW5mbywgRXJyb3JDYWxsYmFjayBjYWxsYmFjaykKK3Zv
aWQgVW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNl
VHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mIGluZm8s
IEVycm9yQ2FsbGJhY2sgY2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgc3BhY2VDaGVja1Jlc3Vs
dCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAi
VW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlIik7CiAKLSAgICBBU1NFUlQobV9i
YWNraW5nU3RvcmUpOworICAgIGlmIChzcGFjZUNoZWNrUmVzdWx0ID09IFNwYWNlQ2hlY2tSZXN1
bHQ6OlVua25vd24pIHsKKyAgICAgICAgaWYgKCFtX21hbmFnZXIpCisgICAgICAgICAgICByZXR1
cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciB9KTsKIAotICAgIC8vIFF1
b3RhIGNoZWNrLgotICAgIGF1dG8gdGFza1NpemUgPSBkZWZhdWx0V3JpdGVPcGVyYXRpb25Db3N0
ICsgZXN0aW1hdGVTaXplKGluZm8pOwotICAgIGlmIChtX3NlcnZlci5yZXF1ZXN0U3BhY2UobV9p
ZGVudGlmaWVyLm9yaWdpbigpLCB0YXNrU2l6ZSkgPT0gU3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVj
aXNpb246OkRlbnkpIHsKKyAgICAgICAgYXV0byB0YXNrU2l6ZSA9IGRlZmF1bHRXcml0ZU9wZXJh
dGlvbkNvc3QgKyBlc3RpbWF0ZVNpemUoaW5mbyk7CisgICAgICAgIG1fbWFuYWdlci0+cmVxdWVz
dFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwgdGFza1NpemUsIFt0aGlzLCB3ZWFrVGhpcyA9
IFdlYWtQdHIgeyAqdGhpcyB9LCB3ZWFrVHJhbnNhY3Rpb24gPSBXZWFrUHRyIHsgdHJhbnNhY3Rp
b24gfSwgaW5mbywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBncmFudGVkKSBt
dXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMgfHwgIXdlYWtUcmFuc2FjdGlvbikK
KyAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVF
cnJvciwgIkRhdGFiYXNlIG9yIHRyYW5zYWN0aW9uIGlzIGNsb3NlZCIgfSk7CisgICAgICAgICAg
ICBjcmVhdGVPYmplY3RTdG9yZSgqd2Vha1RyYW5zYWN0aW9uLCBpbmZvLCBXVEZNb3ZlKGNhbGxi
YWNrKSwgZ3JhbnRlZCA/IFNwYWNlQ2hlY2tSZXN1bHQ6OlBhc3MgOiBTcGFjZUNoZWNrUmVzdWx0
OjpGYWlsKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAo
c3BhY2VDaGVja1Jlc3VsdCAhPSBTcGFjZUNoZWNrUmVzdWx0OjpQYXNzKSB7CiAgICAgICAgIGNh
bGxiYWNrKElEQkVycm9yIHsgUXVvdGFFeGNlZWRlZEVycm9yLCBxdW90YUVycm9yTWVzc2FnZU5h
bWUoIkNyZWF0ZU9iamVjdFN0b3JlIikgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAg
ICBpZiAoIW1fYmFja2luZ1N0b3JlKQorICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3Ig
eyBJbnZhbGlkU3RhdGVFcnJvciwgIkJhY2tpbmcgc3RvcmUgaGFzIGNsb3NlZCIgfSk7CisKICAg
ICBhdXRvIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPmNyZWF0ZU9iamVjdFN0b3JlKHRyYW5zYWN0
aW9uLmluZm8oKS5pZGVudGlmaWVyKCksIGluZm8pOwogICAgIGlmIChlcnJvci5pc051bGwoKSkK
ICAgICAgICAgbV9kYXRhYmFzZUluZm8tPmFkZEV4aXN0aW5nT2JqZWN0U3RvcmUoaW5mbyk7CkBA
IC01NjMsMTggKzYwOSwzNCBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RT
dG9yZShVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdAogICAgIGNhbGxiYWNr
KGVycm9yKTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlT2JqZWN0U3RvcmUo
VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIGNvbnN0IFN0cmluZyYg
b2JqZWN0U3RvcmVOYW1lLCBFcnJvckNhbGxiYWNrIGNhbGxiYWNrKQordm9pZCBVbmlxdWVJREJE
YXRhYmFzZTo6ZGVsZXRlT2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYg
dHJhbnNhY3Rpb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lLCBFcnJvckNhbGxiYWNr
IGNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0IHNwYWNlQ2hlY2tSZXN1bHQpCiB7CiAgICAgQVNT
RVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFi
YXNlOjpkZWxldGVPYmplY3RTdG9yZSIpOwogCisgICAgaWYgKHNwYWNlQ2hlY2tSZXN1bHQgPT0g
U3BhY2VDaGVja1Jlc3VsdDo6VW5rbm93bikgeworICAgICAgICBpZiAoIW1fbWFuYWdlcikKKyAg
ICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yIH0p
OworCisgICAgICAgIG1fbWFuYWdlci0+cmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4o
KSwgMCwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHdlYWtUcmFuc2FjdGlv
biA9IFdlYWtQdHIgeyB0cmFuc2FjdGlvbiB9LCBvYmplY3RTdG9yZU5hbWUsIGNhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayldKGJvb2wgZ3JhbnRlZCkgbXV0YWJsZSB7CisgICAgICAgICAgICBp
ZiAoIXdlYWtUaGlzIHx8ICF3ZWFrVHJhbnNhY3Rpb24pCisgICAgICAgICAgICAgICAgcmV0dXJu
IGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJEYXRhYmFzZSBvciB0cmFu
c2FjdGlvbiBpcyBjbG9zZWQiIH0pOworCisgICAgICAgICAgICBkZWxldGVPYmplY3RTdG9yZSgq
d2Vha1RyYW5zYWN0aW9uLCBvYmplY3RTdG9yZU5hbWUsIFdURk1vdmUoY2FsbGJhY2spLCBncmFu
dGVkID8gU3BhY2VDaGVja1Jlc3VsdDo6UGFzcyA6IFNwYWNlQ2hlY2tSZXN1bHQ6OkZhaWwpOwor
ICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChzcGFjZUNo
ZWNrUmVzdWx0ID09IFNwYWNlQ2hlY2tSZXN1bHQ6OlBhc3MpOwogICAgIGF1dG8qIGluZm8gPSBt
X2RhdGFiYXNlSW5mby0+aW5mb0ZvckV4aXN0aW5nT2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1l
KTsKICAgICBpZiAoIWluZm8pIHsKICAgICAgICAgY2FsbGJhY2soSURCRXJyb3IgeyBVbmtub3du
RXJyb3IsICJBdHRlbXB0IHRvIGRlbGV0ZSBub24tZXhpc3RhbnQgb2JqZWN0IHN0b3JlIl9zIH0p
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgQVNTRVJUKG1fYmFja2luZ1N0b3JlKTsK
KyAgICBpZiAoIW1fYmFja2luZ1N0b3JlKQorICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJy
b3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkJhY2tpbmcgc3RvcmUgaXMgY2xvc2VkIiB9KTsKKwog
ICAgIGF1dG8gZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+ZGVsZXRlT2JqZWN0U3RvcmUodHJhbnNh
Y3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSwgaW5mby0+aWRlbnRpZmllcigpKTsKICAgICBpZiAo
ZXJyb3IuaXNOdWxsKCkpCiAgICAgICAgIG1fZGF0YWJhc2VJbmZvLT5kZWxldGVPYmplY3RTdG9y
ZShpbmZvLT5pZGVudGlmaWVyKCkpOwpAQCAtNTgyLDE0ICs2NDQsMjYgQEAgdm9pZCBVbmlxdWVJ
REJEYXRhYmFzZTo6ZGVsZXRlT2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlv
biYgdHJhbnNhY3QKICAgICBjYWxsYmFjayhlcnJvcik7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0
YWJhc2U6OnJlbmFtZU9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRy
YW5zYWN0aW9uLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
bmV3TmFtZSwgRXJyb3JDYWxsYmFjayBjYWxsYmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6
OnJlbmFtZU9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0
aW9uLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFt
ZSwgRXJyb3JDYWxsYmFjayBjYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCBzcGFjZUNoZWNrUmVz
dWx0KQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIExPRyhJbmRleGVkREIs
ICJVbmlxdWVJREJEYXRhYmFzZTo6cmVuYW1lT2JqZWN0U3RvcmUiKTsKIAotICAgIC8vIFF1b3Rh
IGNoZWNrLgotICAgIGF1dG8gdGFza1NpemUgPSBkZWZhdWx0V3JpdGVPcGVyYXRpb25Db3N0ICsg
bmV3TmFtZS5zaXplSW5CeXRlcygpOwotICAgIGlmIChtX3NlcnZlci5yZXF1ZXN0U3BhY2UobV9p
ZGVudGlmaWVyLm9yaWdpbigpLCB0YXNrU2l6ZSkgPT0gU3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVj
aXNpb246OkRlbnkpIHsKKyAgICBpZiAoc3BhY2VDaGVja1Jlc3VsdCA9PSBTcGFjZUNoZWNrUmVz
dWx0OjpVbmtub3duKSB7CisgICAgICAgIGlmICghbV9tYW5hZ2VyKQorICAgICAgICAgICAgcmV0
dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7CisKKyAgICAgICAg
YXV0byB0YXNrU2l6ZSA9IGRlZmF1bHRXcml0ZU9wZXJhdGlvbkNvc3QgKyBuZXdOYW1lLnNpemVJ
bkJ5dGVzKCk7CisgICAgICAgIG1fbWFuYWdlci0+cmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5v
cmlnaW4oKSwgdGFza1NpemUsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCB3
ZWFrVHJhbnNhY3Rpb24gPSBXZWFrUHRyIHsgdHJhbnNhY3Rpb24gfSwgb2JqZWN0U3RvcmVJZGVu
dGlmaWVyLCBuZXdOYW1lLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIGdyYW50
ZWQpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhd2Vha1RyYW5zYWN0
aW9uKQorICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRT
dGF0ZUVycm9yLCAiRGF0YWJhc2Ugb3IgdHJhbnNhY3Rpb24gaXMgY2xvc2VkIiB9KTsKKworICAg
ICAgICAgICAgcmVuYW1lT2JqZWN0U3RvcmUoKndlYWtUcmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVJ
ZGVudGlmaWVyLCBuZXdOYW1lLCBXVEZNb3ZlKGNhbGxiYWNrKSwgZ3JhbnRlZCA/IFNwYWNlQ2hl
Y2tSZXN1bHQ6OlBhc3MgOiBTcGFjZUNoZWNrUmVzdWx0OjpGYWlsKTsKKyAgICAgICAgfSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoc3BhY2VDaGVja1Jlc3VsdCAhPSBTcGFj
ZUNoZWNrUmVzdWx0OjpQYXNzKSB7CiAgICAgICAgIGNhbGxiYWNrKElEQkVycm9yKFF1b3RhRXhj
ZWVkZWRFcnJvciwgcXVvdGFFcnJvck1lc3NhZ2VOYW1lKCJSZW5hbWVPYmplY3RTdG9yZSIpKSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC02MDAsNyArNjc0LDkgQEAgdm9pZCBVbmlxdWVJ
REJEYXRhYmFzZTo6cmVuYW1lT2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlv
biYgdHJhbnNhY3QKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VSVChtX2JhY2tp
bmdTdG9yZSk7CisgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkKKyAgICAgICAgcmV0dXJuIGNhbGxi
YWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJCYWNraW5nIHN0b3JlIGlzIGNsb3Nl
ZCIgfSk7CisKICAgICBhdXRvIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPnJlbmFtZU9iamVjdFN0
b3JlKHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCksIG9iamVjdFN0b3JlSWRlbnRpZmll
ciwgbmV3TmFtZSk7CiAgICAgaWYgKGVycm9yLmlzTnVsbCgpKQogICAgICAgICBtX2RhdGFiYXNl
SW5mby0+cmVuYW1lT2JqZWN0U3RvcmUob2JqZWN0U3RvcmVJZGVudGlmaWVyLCBuZXdOYW1lKTsK
QEAgLTYwOCwzMCArNjg0LDU5IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnJlbmFtZU9iamVj
dFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0CiAgICAgY2FsbGJh
Y2soZXJyb3IpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjbGVhck9iamVjdFN0b3Jl
KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCB1aW50NjRfdCBvYmpl
Y3RTdG9yZUlkZW50aWZpZXIsIEVycm9yQ2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIFVuaXF1ZUlE
QkRhdGFiYXNlOjpjbGVhck9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24m
IHRyYW5zYWN0aW9uLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIEVycm9yQ2FsbGJh
Y2sgY2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgc3BhY2VDaGVja1Jlc3VsdCkKIHsKICAgICBB
U1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0
YWJhc2U6OmNsZWFyT2JqZWN0U3RvcmUiKTsKIAotICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7
Ci0gICAgYXV0byBlcnJvciA9IG1fYmFja2luZ1N0b3JlLT5jbGVhck9iamVjdFN0b3JlKHRyYW5z
YWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCksIG9iamVjdFN0b3JlSWRlbnRpZmllcik7CisgICAg
aWYgKHNwYWNlQ2hlY2tSZXN1bHQgPT0gU3BhY2VDaGVja1Jlc3VsdDo6VW5rbm93bikgeworICAg
ICAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJv
ciB7IEludmFsaWRTdGF0ZUVycm9yIH0pOworCisgICAgICAgIG1fbWFuYWdlci0+cmVxdWVzdFNw
YWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwgMCwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7
ICp0aGlzIH0sIHdlYWtUcmFuc2FjdGlvbiA9IFdlYWtQdHIgeyB0cmFuc2FjdGlvbiB9LCBvYmpl
Y3RTdG9yZUlkZW50aWZpZXIsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgZ3Jh
bnRlZCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICF3ZWFrVHJhbnNh
Y3Rpb24pCisgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxp
ZFN0YXRlRXJyb3IsICJEYXRhYmFzZSBvciB0cmFuc2FjdGlvbiBpcyBjbG9zZWQiIH0pOworCisg
ICAgICAgICAgICBjbGVhck9iamVjdFN0b3JlKCp3ZWFrVHJhbnNhY3Rpb24sIG9iamVjdFN0b3Jl
SWRlbnRpZmllciwgV1RGTW92ZShjYWxsYmFjayksIGdyYW50ZWQgPyBTcGFjZUNoZWNrUmVzdWx0
OjpQYXNzIDogU3BhY2VDaGVja1Jlc3VsdDo6RmFpbCk7CisgICAgICAgIH0pOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKHNwYWNlQ2hlY2tSZXN1bHQgPT0gU3BhY2VDaGVj
a1Jlc3VsdDo6UGFzcyk7CisgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkKKyAgICAgICAgcmV0dXJu
IGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJCYWNraW5nIHN0b3JlIGlz
IGNsb3NlZCIgfSk7CiAKKyAgICBhdXRvIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPmNsZWFyT2Jq
ZWN0U3RvcmUodHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSwgb2JqZWN0U3RvcmVJZGVu
dGlmaWVyKTsKICAgICBjYWxsYmFjayhlcnJvcik7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJh
c2U6OmNyZWF0ZUluZGV4KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9u
LCBjb25zdCBJREJJbmRleEluZm8mIGluZm8sIEVycm9yQ2FsbGJhY2sgY2FsbGJhY2spCit2b2lk
IFVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVJbmRleChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0
aW9uJiB0cmFuc2FjdGlvbiwgY29uc3QgSURCSW5kZXhJbmZvJiBpbmZvLCBFcnJvckNhbGxiYWNr
IGNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0IHNwYWNlQ2hlY2tSZXN1bHQpCiB7CiAgICAgQVNT
RVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFi
YXNlOjpjcmVhdGVJbmRleCIpOwogCi0gICAgLy8gUXVvdGEgY2hlY2suCi0gICAgYXV0byB0YXNr
U2l6ZSA9IGRlZmF1bHRXcml0ZU9wZXJhdGlvbkNvc3QgKyBlc3RpbWF0ZVNpemUoaW5mbyk7Ci0g
ICAgaWYgKG1fc2VydmVyLnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIHRhc2tT
aXplKSA9PSBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbjo6RGVueSkgeworICAgIGlmIChz
cGFjZUNoZWNrUmVzdWx0ID09IFNwYWNlQ2hlY2tSZXN1bHQ6OlVua25vd24pIHsKKyAgICAgICAg
aWYgKCFtX21hbmFnZXIpCisgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJ
bnZhbGlkU3RhdGVFcnJvciB9KTsKKworICAgICAgICBhdXRvIHRhc2tTaXplID0gZGVmYXVsdFdy
aXRlT3BlcmF0aW9uQ29zdCArIGVzdGltYXRlU2l6ZShpbmZvKTsKKyAgICAgICAgbV9tYW5hZ2Vy
LT5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCB0YXNrU2l6ZSwgW3RoaXMsIHdl
YWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHdlYWtUcmFuc2FjdGlvbiA9IFdlYWtQdHIgeyB0
cmFuc2FjdGlvbiB9LCBpbmZvLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIGdy
YW50ZWQpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhd2Vha1RyYW5z
YWN0aW9uKQorICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFs
aWRTdGF0ZUVycm9yLCAiRGF0YWJhc2Ugb3IgdHJhbnNhY3Rpb24gaXMgY2xvc2VkIiB9KTsKKwor
ICAgICAgICAgICAgY3JlYXRlSW5kZXgoKndlYWtUcmFuc2FjdGlvbiwgaW5mbywgV1RGTW92ZShj
YWxsYmFjayksIGdyYW50ZWQgPyBTcGFjZUNoZWNrUmVzdWx0OjpQYXNzIDogU3BhY2VDaGVja1Jl
c3VsdDo6RmFpbCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
aWYgKHNwYWNlQ2hlY2tSZXN1bHQgIT0gU3BhY2VDaGVja1Jlc3VsdDo6UGFzcykgewogICAgICAg
ICBjYWxsYmFjayhJREJFcnJvciB7IFF1b3RhRXhjZWVkZWRFcnJvciwgcXVvdGFFcnJvck1lc3Nh
Z2VOYW1lKCJDcmVhdGVJbmRleCIpIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
QVNTRVJUKG1fYmFja2luZ1N0b3JlKTsKKyAgICBpZiAoIW1fYmFja2luZ1N0b3JlKQorICAgICAg
ICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkJhY2tpbmcg
c3RvcmUgaXMgY2xvc2VkIiB9KTsKKwogICAgIGF1dG8gZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+
Y3JlYXRlSW5kZXgodHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSwgaW5mbyk7CiAgICAg
aWYgKGVycm9yLmlzTnVsbCgpKSB7CiAgICAgICAgIEFTU0VSVChtX2RhdGFiYXNlSW5mbyk7CkBA
IC02NDQsMTEgKzc0OSwyOCBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVJbmRleChV
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgYwogICAgIGNhbGxiYWNr
KGVycm9yKTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlSW5kZXgoVW5pcXVl
SURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIHVpbnQ2NF90IG9iamVjdFN0b3Jl
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpbmRleE5hbWUsIEVycm9yQ2FsbGJhY2sgY2FsbGJh
Y2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVJbmRleChVbmlxdWVJREJEYXRhYmFz
ZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIGluZGV4TmFtZSwgRXJyb3JDYWxsYmFjayBjYWxsYmFjaywgU3BhY2VD
aGVja1Jlc3VsdCBzcGFjZUNoZWNrUmVzdWx0KQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFk
KCkpOwogICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlSW5kZXgi
KTsKIAorICAgIGlmIChzcGFjZUNoZWNrUmVzdWx0ID09IFNwYWNlQ2hlY2tSZXN1bHQ6OlVua25v
d24pIHsKKyAgICAgICAgaWYgKCFtX21hbmFnZXIpCisgICAgICAgICAgICByZXR1cm4gY2FsbGJh
Y2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciB9KTsKKworICAgICAgICBtX21hbmFnZXIt
PnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIDAsIFt0aGlzLCB3ZWFrVGhpcyA9
IFdlYWtQdHIgeyAqdGhpcyB9LCB3ZWFrVHJhbnNhY3Rpb24gPSBXZWFrUHRyIHsgdHJhbnNhY3Rp
b24gfSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleE5hbWUsIGNhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayldKGJvb2wgZ3JhbnRlZCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXdl
YWtUaGlzIHx8ICF3ZWFrVHJhbnNhY3Rpb24pCisgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxi
YWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJEYXRhYmFzZSBvciB0cmFuc2FjdGlv
biBpcyBjbG9zZWQiIH0pOworCisgICAgICAgICAgICBkZWxldGVJbmRleCgqd2Vha1RyYW5zYWN0
aW9uLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4TmFtZSwgV1RGTW92ZShjYWxsYmFjayks
IGdyYW50ZWQgPyBTcGFjZUNoZWNrUmVzdWx0OjpQYXNzIDogU3BhY2VDaGVja1Jlc3VsdDo6RmFp
bCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKHNw
YWNlQ2hlY2tSZXN1bHQgPT0gU3BhY2VDaGVja1Jlc3VsdDo6UGFzcyk7CisgICAgaWYgKCFtX2Jh
Y2tpbmdTdG9yZSkKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0
YXRlRXJyb3IsICJCYWNraW5nIHN0b3JlIGlzIGNsb3NlZCIgfSk7CisKICAgICBhdXRvKiBvYmpl
Y3RTdG9yZUluZm8gPSBtX2RhdGFiYXNlSW5mby0+aW5mb0ZvckV4aXN0aW5nT2JqZWN0U3RvcmUo
b2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKICAgICBpZiAoIW9iamVjdFN0b3JlSW5mbykgewogICAg
ICAgICBjYWxsYmFjayhJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gZGVsZXRl
IGluZGV4IGZyb20gbm9uLWV4aXN0YW50IG9iamVjdCBzdG9yZSJfcyB9KTsKQEAgLTY2MCw5ICs3
ODIsOCBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVJbmRleChVbmlxdWVJREJEYXRh
YmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgdQogICAgICAgICBjYWxsYmFjayhJREJFcnJv
ciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gZGVsZXRlIG5vbi1leGlzdGFudCBpbmRleCJf
cyB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvIGluZGV4SWRlbnRpZmllciA9
IGluZGV4SW5mby0+aWRlbnRpZmllcigpOwogCi0gICAgQVNTRVJUKG1fYmFja2luZ1N0b3JlKTsK
KyAgICBhdXRvIGluZGV4SWRlbnRpZmllciA9IGluZGV4SW5mby0+aWRlbnRpZmllcigpOwogICAg
IGF1dG8gZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+ZGVsZXRlSW5kZXgodHJhbnNhY3Rpb24uaW5m
bygpLmlkZW50aWZpZXIoKSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleElkZW50aWZpZXIp
OwogICAgIGlmIChlcnJvci5pc051bGwoKSkKICAgICAgICAgb2JqZWN0U3RvcmVJbmZvLT5kZWxl
dGVJbmRleChpbmRleElkZW50aWZpZXIpOwpAQCAtNjcwLDE4ICs3OTEsMzMgQEAgdm9pZCBVbmlx
dWVJREJEYXRhYmFzZTo6ZGVsZXRlSW5kZXgoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYg
dHJhbnNhY3Rpb24sIHUKICAgICBjYWxsYmFjayhlcnJvcik7CiB9CiAKLXZvaWQgVW5pcXVlSURC
RGF0YWJhc2U6OnJlbmFtZUluZGV4KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5z
YWN0aW9uLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lLCBFcnJvckNhbGxiYWNrIGNhbGxiYWNrKQor
dm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cmVuYW1lSW5kZXgoVW5pcXVlSURCRGF0YWJhc2VUcmFu
c2FjdGlvbiYgdHJhbnNhY3Rpb24sIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgdWlu
dDY0X3QgaW5kZXhJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUsIEVycm9yQ2FsbGJh
Y2sgY2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgc3BhY2VDaGVja1Jlc3VsdCkKIHsKICAgICBB
U1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0
YWJhc2U6OnJlbmFtZUluZGV4Iik7CiAKLSAgICAvLyBRdW90YSBjaGVjay4KLSAgICBhdXRvIHRh
c2tTaXplID0gZGVmYXVsdFdyaXRlT3BlcmF0aW9uQ29zdCArIG5ld05hbWUuc2l6ZUluQnl0ZXMo
KTsKLSAgICBpZiAobV9zZXJ2ZXIucmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwg
dGFza1NpemUpID09IFN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uOjpEZW55KSB7CisgICAg
aWYgKHNwYWNlQ2hlY2tSZXN1bHQgPT0gU3BhY2VDaGVja1Jlc3VsdDo6VW5rbm93bikgeworICAg
ICAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJv
ciB7IEludmFsaWRTdGF0ZUVycm9yIH0pOworCisgICAgICAgIGF1dG8gdGFza1NpemUgPSBkZWZh
dWx0V3JpdGVPcGVyYXRpb25Db3N0ICsgbmV3TmFtZS5zaXplSW5CeXRlcygpOworICAgICAgICBt
X21hbmFnZXItPnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIHRhc2tTaXplLCBb
dGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgd2Vha1RyYW5zYWN0aW9uID0gV2Vh
a1B0ciB7IHRyYW5zYWN0aW9uIH0sIG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhJZGVudGlm
aWVyLCBuZXdOYW1lLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIGdyYW50ZWQp
IG11dGFibGUgeworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhd2Vha1RyYW5zYWN0aW9u
KQorICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0
ZUVycm9yLCAiRGF0YWJhc2Ugb3IgdHJhbnNhY3Rpb24gaXMgY2xvc2VkIiB9KTsKKworICAgICAg
ICAgICAgcmVuYW1lSW5kZXgoKndlYWtUcmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVJZGVudGlmaWVy
LCBpbmRleElkZW50aWZpZXIsIG5ld05hbWUsIFdURk1vdmUoY2FsbGJhY2spLCBncmFudGVkID8g
U3BhY2VDaGVja1Jlc3VsdDo6UGFzcyA6IFNwYWNlQ2hlY2tSZXN1bHQ6OkZhaWwpOworICAgICAg
ICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChzcGFjZUNoZWNrUmVzdWx0
ICE9IFNwYWNlQ2hlY2tSZXN1bHQ6OlBhc3MpIHsKICAgICAgICAgY2FsbGJhY2soSURCRXJyb3Ig
eyBRdW90YUV4Y2VlZGVkRXJyb3IsIHF1b3RhRXJyb3JNZXNzYWdlTmFtZSgiUmVuYW1lSW5kZXgi
KSB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIGlmICghbV9iYWNraW5nU3RvcmUp
CisgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAi
QmFja2luZyBzdG9yZSBpcyBjbG9zZWQiIH0pOworCiAgICAgYXV0byogb2JqZWN0U3RvcmVJbmZv
ID0gbV9kYXRhYmFzZUluZm8tPmluZm9Gb3JFeGlzdGluZ09iamVjdFN0b3JlKG9iamVjdFN0b3Jl
SWRlbnRpZmllcik7CiAgICAgaWYgKCFvYmplY3RTdG9yZUluZm8pIHsKICAgICAgICAgY2FsbGJh
Y2soSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIHJlbmFtZSBpbmRleCBpbiBu
b24tZXhpc3RhbnQgb2JqZWN0IHN0b3JlIl9zIH0pOwpAQCAtNjk0LDcgKzgzMCw2IEBAIHZvaWQg
VW5pcXVlSURCRGF0YWJhc2U6OnJlbmFtZUluZGV4KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rp
b24mIHRyYW5zYWN0aW9uLCB1CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBBU1NFUlQo
bV9iYWNraW5nU3RvcmUpOwogICAgIGF1dG8gZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+cmVuYW1l
SW5kZXgodHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSwgb2JqZWN0U3RvcmVJZGVudGlm
aWVyLCBpbmRleElkZW50aWZpZXIsIG5ld05hbWUpOwogICAgIGlmIChlcnJvci5pc051bGwoKSkK
ICAgICAgICAgaW5kZXhJbmZvLT5yZW5hbWUobmV3TmFtZSk7CkBAIC03MDksMTcgKzg0NCwxOSBA
QCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwdXRPckFkZChjb25zdCBJREJSZXF1ZXN0RGF0YSYg
cmVxdWVzdERhdGEsIGNvbnN0IElEQktleQogCiAgICAgQVNTRVJUKG1fZGF0YWJhc2VJbmZvKTsK
IAotICAgIElEQktleURhdGEgdXNlZEtleTsKLSAgICBJREJFcnJvciBlcnJvcjsKKyAgICBpZiAo
IW1fYmFja2luZ1N0b3JlKQorICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZh
bGlkU3RhdGVFcnJvciwgIkJhY2tpbmcgc3RvcmUgaXMgY2xvc2VkIiB9LCBrZXlEYXRhKTsKIAot
ICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CiAgICAgYXV0byBvYmplY3RTdG9yZUlkZW50aWZp
ZXIgPSByZXF1ZXN0RGF0YS5vYmplY3RTdG9yZUlkZW50aWZpZXIoKTsKICAgICBhdXRvKiBvYmpl
Y3RTdG9yZUluZm8gPSBtX2JhY2tpbmdTdG9yZS0+aW5mb0Zvck9iamVjdFN0b3JlKG9iamVjdFN0
b3JlSWRlbnRpZmllcik7Ci0gICAgaWYgKCFvYmplY3RTdG9yZUluZm8pIHsKLSAgICAgICAgY2Fs
bGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIk9iamVjdCBzdG9yZSBjYW5ub3Qg
YmUgZm91bmQgaW4gdGhlIGJhY2tpbmcgc3RvcmUiX3MgfSwgdXNlZEtleSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9CisgICAgaWYgKCFvYmplY3RTdG9yZUluZm8pCisgICAgICAgIHJldHVybiBj
YWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiT2JqZWN0IHN0b3JlIGNhbm5v
dCBiZSBmb3VuZCBpbiB0aGUgYmFja2luZyBzdG9yZSJfcyB9LCBrZXlEYXRhKTsKKworICAgIGlm
ICghbV9tYW5hZ2VyKQorICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlk
U3RhdGVFcnJvciB9LCBrZXlEYXRhKTsKIAorICAgIElEQktleURhdGEgdXNlZEtleTsKKyAgICBJ
REJFcnJvciBlcnJvcjsKICAgICBib29sIHVzZWRLZXlJc0dlbmVyYXRlZCA9IGZhbHNlOwogICAg
IHVpbnQ2NF90IGtleU51bWJlcjsKICAgICBhdXRvIHRyYW5zYWN0aW9uSWRlbnRpZmllciA9IHJl
cXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpOwpAQCAtNzMwLDc2ICs4NjcsMTA1IEBA
IHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnB1dE9yQWRkKGNvbnN0IElEQlJlcXVlc3REYXRhJiBy
ZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5CiAKICAgICBpZiAob2JqZWN0U3RvcmVJbmZvLT5hdXRv
SW5jcmVtZW50KCkgJiYgIWtleURhdGEuaXNWYWxpZCgpKSB7CiAgICAgICAgIGVycm9yID0gbV9i
YWNraW5nU3RvcmUtPmdlbmVyYXRlS2V5TnVtYmVyKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgb2Jq
ZWN0U3RvcmVJZGVudGlmaWVyLCBrZXlOdW1iZXIpOwotICAgICAgICBpZiAoIWVycm9yLmlzTnVs
bCgpKSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhlcnJvciwgdXNlZEtleSk7Ci0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKCFlcnJvci5pc051bGwoKSkKKyAgICAg
ICAgICAgIHJldHVybiBjYWxsYmFjayhlcnJvciwgdXNlZEtleSk7CisKICAgICAgICAgdXNlZEtl
eS5zZXROdW1iZXJWYWx1ZShrZXlOdW1iZXIpOwogICAgICAgICB1c2VkS2V5SXNHZW5lcmF0ZWQg
PSB0cnVlOwogICAgIH0gZWxzZQogICAgICAgICB1c2VkS2V5ID0ga2V5RGF0YTsKIAotICAgIC8v
IEdlbmVyYXRlIGluZGV4IGtleXMgdXAgZnJvbnQgZm9yIG1vcmUgYWNjdXJhdGUgcXVvdGEgY2hl
Y2suCi0gICAgSW5kZXhJRFRvSW5kZXhLZXlNYXAgaW5kZXhLZXlzOwotICAgIGNhbGxPbklEQlNl
cmlhbGl6YXRpb25UaHJlYWRBbmRXYWl0KFtvYmplY3RTdG9yZUluZm8gPSBvYmplY3RTdG9yZUlu
Zm8tPmlzb2xhdGVkQ29weSgpLCBrZXkgPSB1c2VkS2V5Lmlzb2xhdGVkQ29weSgpLCB2YWx1ZSA9
IHZhbHVlLmlzb2xhdGVkQ29weSgpLCAmaW5kZXhLZXlzXShhdXRvJiBnbG9iYWxPYmplY3QpIHsK
LSAgICAgICAgaW5kZXhLZXlzID0gZ2VuZXJhdGVJbmRleEtleU1hcEZvclZhbHVlKGdsb2JhbE9i
amVjdCwgb2JqZWN0U3RvcmVJbmZvLCBrZXksIHZhbHVlKTsKLSAgICB9KTsKLQogICAgIGlmIChv
dmVyd3JpdGVNb2RlID09IEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlOjpOb092
ZXJ3cml0ZSkgewogICAgICAgICBib29sIGtleUV4aXN0czsKICAgICAgICAgZXJyb3IgPSBtX2Jh
Y2tpbmdTdG9yZS0+a2V5RXhpc3RzSW5PYmplY3RTdG9yZSh0cmFuc2FjdGlvbklkZW50aWZpZXIs
IG9iamVjdFN0b3JlSWRlbnRpZmllciwgdXNlZEtleSwga2V5RXhpc3RzKTsKLSAgICAgICAgaWYg
KGVycm9yLmlzTnVsbCgpICYmIGtleUV4aXN0cykKKyAgICAgICAgaWYgKCFlcnJvciAmJiBrZXlF
eGlzdHMpCiAgICAgICAgICAgICBlcnJvciA9IElEQkVycm9yIHsgQ29uc3RyYWludEVycm9yLCAi
S2V5IGFscmVhZHkgZXhpc3RzIGluIHRoZSBvYmplY3Qgc3RvcmUiX3MgfTsKIAotICAgICAgICBp
ZiAoIWVycm9yLmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhlcnJvciwgdXNlZEtl
eSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKCEhZXJyb3Ip
CisgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soZXJyb3IsIHVzZWRLZXkpOwogICAgIH0KIAot
ICAgIC8vIFF1b3RhIGNoZWNrLgorICAgIC8vIEdlbmVyYXRlIGluZGV4IGtleXMgdXAgZnJvbnQg
Zm9yIG1vcmUgYWNjdXJhdGUgcXVvdGEgY2hlY2suCisgICAgSW5kZXhJRFRvSW5kZXhLZXlNYXAg
aW5kZXhLZXlzOworICAgIGNhbGxPbklEQlNlcmlhbGl6YXRpb25UaHJlYWRBbmRXYWl0KFtvYmpl
Y3RTdG9yZUluZm8gPSBvYmplY3RTdG9yZUluZm8tPmlzb2xhdGVkQ29weSgpLCBrZXkgPSB1c2Vk
S2V5Lmlzb2xhdGVkQ29weSgpLCB2YWx1ZSA9IHZhbHVlLmlzb2xhdGVkQ29weSgpLCAmaW5kZXhL
ZXlzXShhdXRvJiBnbG9iYWxPYmplY3QpIHsKKyAgICAgICAgaW5kZXhLZXlzID0gZ2VuZXJhdGVJ
bmRleEtleU1hcEZvclZhbHVlKGdsb2JhbE9iamVjdCwgb2JqZWN0U3RvcmVJbmZvLCBrZXksIHZh
bHVlKTsKKyAgICB9KTsKKworICAgIGdlbmVyYXRlZEtleVJlc2V0dGVyLnJlbGVhc2UoKTsKICAg
ICBhdXRvIGtleVNpemUgPSBlc3RpbWF0ZVNpemUodXNlZEtleSk7CiAgICAgYXV0byB2YWx1ZVNp
emUgPSBlc3RpbWF0ZVNpemUodmFsdWUpOwogICAgIGF1dG8gaW5kZXhTaXplID0gZXN0aW1hdGVT
aXplKCpvYmplY3RTdG9yZUluZm8sIGluZGV4S2V5cywga2V5U2l6ZSk7CiAgICAgYXV0byB0YXNr
U2l6ZSA9IGRlZmF1bHRXcml0ZU9wZXJhdGlvbkNvc3QgKyBrZXlTaXplICsgdmFsdWVTaXplICsg
aW5kZXhTaXplOwogCiAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpwdXRP
ckFkZCBxdW90YSBjaGVjayB3aXRoIHRhc2sgc2l6ZTogJSIgUFJJdTY0ICIga2V5IHNpemU6ICUi
IFBSSXU2NCAiIHZhbHVlIHNpemU6ICUiIFBSSXU2NCAiIGluZGV4IHNpemU6ICUiIFBSSXU2NCwg
dGFza1NpemUsIGtleVNpemUsIHZhbHVlU2l6ZSwgaW5kZXhTaXplKTsKKyAgICBtX21hbmFnZXIt
PnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIHRhc2tTaXplLCBbdGhpcywgd2Vh
a1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgcmVxdWVzdERhdGEsIHVzZWRLZXksIHZhbHVlLCBv
dmVyd3JpdGVNb2RlLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCB1c2VkS2V5SXNHZW5l
cmF0ZWQsIGluZGV4S2V5cywgb2JqZWN0U3RvcmVJbmZvID0gKm9iamVjdFN0b3JlSW5mb10oYm9v
bCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAg
IHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiRGF0YWJhc2Ug
aXMgY2xvc2VkIiB9LCB1c2VkS2V5KTsKIAotICAgIGlmIChtX3NlcnZlci5yZXF1ZXN0U3BhY2Uo
bV9pZGVudGlmaWVyLm9yaWdpbigpLCB0YXNrU2l6ZSkgPT0gU3RvcmFnZVF1b3RhTWFuYWdlcjo6
RGVjaXNpb246OkRlbnkpIHsKLSAgICAgICAgY2FsbGJhY2soSURCRXJyb3IgeyBRdW90YUV4Y2Vl
ZGVkRXJyb3IsIHF1b3RhRXJyb3JNZXNzYWdlTmFtZSgiUHV0T3JBZGQiKSB9LCB1c2VkS2V5KTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICAgICAgcHV0T3JBZGRBZnRlclNwYWNlQ2hlY2so
cmVxdWVzdERhdGEsIHVzZWRLZXksIHZhbHVlLCBvdmVyd3JpdGVNb2RlLCBXVEZNb3ZlKGNhbGxi
YWNrKSwgdXNlZEtleUlzR2VuZXJhdGVkLCBpbmRleEtleXMsIG9iamVjdFN0b3JlSW5mbywgZ3Jh
bnRlZCA/IFNwYWNlQ2hlY2tSZXN1bHQ6OlBhc3MgOiBTcGFjZUNoZWNrUmVzdWx0OjpGYWlsKTsK
KyAgICB9KTsKK30KKwordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cHV0T3JBZGRBZnRlclNwYWNl
Q2hlY2soY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXlEYXRh
JiBrZXlEYXRhLCBjb25zdCBJREJWYWx1ZSYgdmFsdWUsIEluZGV4ZWREQjo6T2JqZWN0U3RvcmVP
dmVyd3JpdGVNb2RlIG92ZXJ3cml0ZU1vZGUsIEtleURhdGFDYWxsYmFjayBjYWxsYmFjaywgYm9v
bCBpc0tleUdlbmVyYXRlZCwgY29uc3QgSW5kZXhJRFRvSW5kZXhLZXlNYXAmIGluZGV4S2V5cywg
Y29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiBvYmplY3RTdG9yZUluZm8sIFNwYWNlQ2hlY2tSZXN1
bHQgc3BhY2VDaGVja1Jlc3VsdCkKK3sKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAg
ICBBU1NFUlQobV9kYXRhYmFzZUluZm8pOworCisgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkKKyAg
ICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJCYWNr
aW5nIHN0b3JlIGlzIGNsb3NlZCIgfSwga2V5RGF0YSk7CisKKyAgICB1aW50NjRfdCBrZXlOdW1i
ZXIgPSBpc0tleUdlbmVyYXRlZCA/IGtleURhdGEubnVtYmVyKCkgOiAwOworICAgIGF1dG8gb2Jq
ZWN0U3RvcmVJZGVudGlmaWVyID0gb2JqZWN0U3RvcmVJbmZvLmlkZW50aWZpZXIoKTsKKyAgICBh
dXRvIHRyYW5zYWN0aW9uSWRlbnRpZmllciA9IHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRp
ZmllcigpOworICAgIGF1dG8gZ2VuZXJhdGVkS2V5UmVzZXR0ZXIgPSBtYWtlU2NvcGVFeGl0KFt0
aGlzLCB0cmFuc2FjdGlvbklkZW50aWZpZXIsIG9iamVjdFN0b3JlSWRlbnRpZmllciwgJmtleU51
bWJlciwgJmlzS2V5R2VuZXJhdGVkXSgpIHsKKyAgICAgICAgaWYgKGlzS2V5R2VuZXJhdGVkKQor
ICAgICAgICAgICAgbV9iYWNraW5nU3RvcmUtPnJldmVydEdlbmVyYXRlZEtleU51bWJlcih0cmFu
c2FjdGlvbklkZW50aWZpZXIsIG9iamVjdFN0b3JlSWRlbnRpZmllciwga2V5TnVtYmVyKTsKKyAg
ICB9KTsKIAorICAgIGlmIChzcGFjZUNoZWNrUmVzdWx0ICE9IFNwYWNlQ2hlY2tSZXN1bHQ6OlBh
c3MpCisgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IFF1b3RhRXhjZWVkZWRFcnJv
ciwgcXVvdGFFcnJvck1lc3NhZ2VOYW1lKCJQdXRPckFkZCIpIH0sIGtleURhdGEpOwogICAgIC8v
IElmIGEgcmVjb3JkIGFscmVhZHkgZXhpc3RzIGluIHN0b3JlLCB0aGVuIHJlbW92ZSB0aGUgcmVj
b3JkIGZyb20gc3RvcmUgdXNpbmcgdGhlIHN0ZXBzIGZvciBkZWxldGluZyByZWNvcmRzIGZyb20g
YW4gb2JqZWN0IHN0b3JlLgotICAgIC8vIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UgZm9ybWFs
bHkgZGVsZXRpbmcgaXQgZnJvbSBmcm9tIHRoZSBvYmplY3Qgc3RvcmUgYWxzbyByZW1vdmVzIGl0
IGZyb20gdGhlIGFwcHJvcHJpYXRlIGluZGV4ZXMuCi0gICAgZXJyb3IgPSBtX2JhY2tpbmdTdG9y
ZS0+ZGVsZXRlUmFuZ2UodHJhbnNhY3Rpb25JZGVudGlmaWVyLCBvYmplY3RTdG9yZUlkZW50aWZp
ZXIsIHVzZWRLZXkpOwotICAgIGlmICghZXJyb3IuaXNOdWxsKCkpIHsKLSAgICAgICAgY2FsbGJh
Y2soZXJyb3IsIHVzZWRLZXkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIC8vIFRoaXMg
aXMgaW1wb3J0YW50IGJlY2F1c2UgZm9ybWFsbHkgZGVsZXRpbmcgaXQgZnJvbSB0aGUgb2JqZWN0
IHN0b3JlIGFsc28gcmVtb3ZlcyBpdCBmcm9tIHRoZSBhcHByb3ByaWF0ZSBpbmRleGVzLgorICAg
IElEQkVycm9yIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPmRlbGV0ZVJhbmdlKHRyYW5zYWN0aW9u
SWRlbnRpZmllciwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBrZXlEYXRhKTsKKyAgICBpZiAoIWVy
cm9yLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gY2FsbGJhY2soZXJyb3IsIGtleURhdGEpOwog
Ci0gICAgZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+YWRkUmVjb3JkKHRyYW5zYWN0aW9uSWRlbnRp
ZmllciwgKm9iamVjdFN0b3JlSW5mbywgdXNlZEtleSwgaW5kZXhLZXlzLCB2YWx1ZSk7Ci0gICAg
aWYgKCFlcnJvci5pc051bGwoKSkgewotICAgICAgICBjYWxsYmFjayhlcnJvciwgdXNlZEtleSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+YWRk
UmVjb3JkKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgb2JqZWN0U3RvcmVJbmZvLCBrZXlEYXRhLCBp
bmRleEtleXMsIHZhbHVlKTsKKyAgICBpZiAoIWVycm9yLmlzTnVsbCgpKQorICAgICAgICByZXR1
cm4gY2FsbGJhY2soZXJyb3IsIGtleURhdGEpOwogCi0gICAgaWYgKG92ZXJ3cml0ZU1vZGUgIT0g
SW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGU6Ok92ZXJ3cml0ZUZvckN1cnNvciAm
JiBvYmplY3RTdG9yZUluZm8tPmF1dG9JbmNyZW1lbnQoKSAmJiBrZXlEYXRhLnR5cGUoKSA9PSBJ
bmRleGVkREI6OktleVR5cGU6Ok51bWJlcikKKyAgICBpZiAob3ZlcndyaXRlTW9kZSAhPSBJbmRl
eGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZTo6T3ZlcndyaXRlRm9yQ3Vyc29yICYmIG9i
amVjdFN0b3JlSW5mby5hdXRvSW5jcmVtZW50KCkgJiYga2V5RGF0YS50eXBlKCkgPT0gSW5kZXhl
ZERCOjpLZXlUeXBlOjpOdW1iZXIpCiAgICAgICAgIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPm1h
eWJlVXBkYXRlS2V5R2VuZXJhdG9yTnVtYmVyKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgb2JqZWN0
U3RvcmVJZGVudGlmaWVyLCBrZXlEYXRhLm51bWJlcigpKTsKIAogICAgIGdlbmVyYXRlZEtleVJl
c2V0dGVyLnJlbGVhc2UoKTsKLSAgICBjYWxsYmFjayhlcnJvciwgdXNlZEtleSk7CisgICAgY2Fs
bGJhY2soZXJyb3IsIGtleURhdGEpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRS
ZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJHZXRSZWNv
cmREYXRhJiBnZXRSZWNvcmREYXRhLCBHZXRSZXN1bHRDYWxsYmFjayBjYWxsYmFjaykKK3ZvaWQg
VW5pcXVlSURCRGF0YWJhc2U6OmdldFJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVz
dERhdGEsIGNvbnN0IElEQkdldFJlY29yZERhdGEmIGdldFJlY29yZERhdGEsIEdldFJlc3VsdENh
bGxiYWNrIGNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0IHNwYWNlQ2hlY2tSZXN1bHQpCiB7CiAg
ICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlE
QkRhdGFiYXNlOjpnZXRSZWNvcmQiKTsKIAorICAgIGlmIChzcGFjZUNoZWNrUmVzdWx0ID09IFNw
YWNlQ2hlY2tSZXN1bHQ6OlVua25vd24pIHsKKyAgICAgICAgaWYgKCFtX21hbmFnZXIpCisgICAg
ICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciB9LCBJ
REJHZXRSZXN1bHQgeyB9KTsKKworICAgICAgICBtX21hbmFnZXItPnJlcXVlc3RTcGFjZShtX2lk
ZW50aWZpZXIub3JpZ2luKCksIDAsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9
LCByZXF1ZXN0RGF0YSwgZ2V0UmVjb3JkRGF0YSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KV0oYm9vbCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJy
b3IsICJEYXRhYmFzZSBpcyBjbG9zZWQiIH0sIElEQkdldFJlc3VsdCB7IH0pOworCisgICAgICAg
ICAgICBnZXRSZWNvcmQocmVxdWVzdERhdGEsIGdldFJlY29yZERhdGEsIFdURk1vdmUoY2FsbGJh
Y2spLCBncmFudGVkID8gU3BhY2VDaGVja1Jlc3VsdDo6UGFzcyA6IFNwYWNlQ2hlY2tSZXN1bHQ6
OkZhaWwpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VS
VChzcGFjZUNoZWNrUmVzdWx0ID09IFNwYWNlQ2hlY2tSZXN1bHQ6OlBhc3MpOworICAgIGlmICgh
bV9iYWNraW5nU3RvcmUpCisgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFs
aWRTdGF0ZUVycm9yLCAiQmFja2luZyBzdG9yZSBpcyBjbG9zZWQiIH0sIElEQkdldFJlc3VsdCB7
IH0pOworCiAgICAgSURCR2V0UmVzdWx0IHJlc3VsdDsKICAgICBJREJFcnJvciBlcnJvcjsKIAot
ICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CiAgICAgaWYgKHVpbnQ2NF90IGluZGV4SWRlbnRp
ZmllciA9IHJlcXVlc3REYXRhLmluZGV4SWRlbnRpZmllcigpKQogICAgICAgICBlcnJvciA9IG1f
YmFja2luZ1N0b3JlLT5nZXRJbmRleFJlY29yZChyZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50
aWZpZXIoKSwgcmVxdWVzdERhdGEub2JqZWN0U3RvcmVJZGVudGlmaWVyKCksIGluZGV4SWRlbnRp
ZmllciwgcmVxdWVzdERhdGEuaW5kZXhSZWNvcmRUeXBlKCksIGdldFJlY29yZERhdGEua2V5UmFu
Z2VEYXRhLCByZXN1bHQpOwogICAgIGVsc2UKQEAgLTgwOCw0NyArOTc0LDExMCBAQCB2b2lkIFVu
aXF1ZUlEQkRhdGFiYXNlOjpnZXRSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3RE
YXRhLCBjb25zdCBJREJHZQogICAgIGNhbGxiYWNrKGVycm9yLCByZXN1bHQpOwogfQogCi12b2lk
IFVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRBbGxSZWNvcmRzKGNvbnN0IElEQlJlcXVlc3REYXRhJiBy
ZXF1ZXN0RGF0YSwgY29uc3QgSURCR2V0QWxsUmVjb3Jkc0RhdGEmIGdldEFsbFJlY29yZHNEYXRh
LCBHZXRBbGxSZXN1bHRzQ2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNl
OjpnZXRBbGxSZWNvcmRzKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3Qg
SURCR2V0QWxsUmVjb3Jkc0RhdGEmIGdldEFsbFJlY29yZHNEYXRhLCBHZXRBbGxSZXN1bHRzQ2Fs
bGJhY2sgY2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgc3BhY2VDaGVja1Jlc3VsdCkKIHsKICAg
ICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURC
RGF0YWJhc2U6OmdldEFsbFJlY29yZHMiKTsKIAotICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7
CisgICAgaWYgKHNwYWNlQ2hlY2tSZXN1bHQgPT0gU3BhY2VDaGVja1Jlc3VsdDo6VW5rbm93bikg
eworICAgICAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJ
REJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yIH0sIElEQkdldEFsbFJlc3VsdCB7IH0pOworCisg
ICAgICAgIG1fbWFuYWdlci0+cmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwgMCwg
W3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHJlcXVlc3REYXRhLCBnZXRBbGxS
ZWNvcmRzRGF0YSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBncmFudGVkKSBt
dXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICAgICAgcmV0
dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJEYXRhYmFzZSBpcyBj
bG9zZWQiIH0sIElEQkdldEFsbFJlc3VsdCB7IH0pOworCisgICAgICAgICAgICBnZXRBbGxSZWNv
cmRzKHJlcXVlc3REYXRhLCBnZXRBbGxSZWNvcmRzRGF0YSwgV1RGTW92ZShjYWxsYmFjayksIGdy
YW50ZWQgPyBTcGFjZUNoZWNrUmVzdWx0OjpQYXNzIDogU3BhY2VDaGVja1Jlc3VsdDo6RmFpbCk7
CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKHNwYWNl
Q2hlY2tSZXN1bHQgPT0gU3BhY2VDaGVja1Jlc3VsdDo6UGFzcyk7CisgICAgaWYgKCFtX2JhY2tp
bmdTdG9yZSkKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRl
RXJyb3IsICJCYWNraW5nIHN0b3JlIGlzIGNsb3NlZCIgfSwgSURCR2V0QWxsUmVzdWx0IHsgfSk7
CisKICAgICBJREJHZXRBbGxSZXN1bHQgcmVzdWx0OwogICAgIGF1dG8gZXJyb3IgPSBtX2JhY2tp
bmdTdG9yZS0+Z2V0QWxsUmVjb3JkcyhyZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIo
KSwgZ2V0QWxsUmVjb3Jkc0RhdGEsIHJlc3VsdCk7CiAKICAgICBjYWxsYmFjayhlcnJvciwgcmVz
dWx0KTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Z2V0Q291bnQoY29uc3QgSURCUmVx
dWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIHJhbmdlLCBDb3Vu
dENhbGxiYWNrIGNhbGxiYWNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Z2V0Q291bnQoY29u
c3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIHJh
bmdlLCBDb3VudENhbGxiYWNrIGNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0IHNwYWNlQ2hlY2tS
ZXN1bHQpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWRE
QiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRDb3VudCIpOwogCi0gICAgQVNTRVJUKG1fYmFja2lu
Z1N0b3JlKTsKKyAgICBpZiAoc3BhY2VDaGVja1Jlc3VsdCA9PSBTcGFjZUNoZWNrUmVzdWx0OjpV
bmtub3duKSB7CisgICAgICAgIGlmICghbV9tYW5hZ2VyKQorICAgICAgICAgICAgcmV0dXJuIGNh
bGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IgfSwgMCk7CisKKyAgICAgICAgbV9t
YW5hZ2VyLT5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCAwLCBbdGhpcywgd2Vh
a1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgcmVxdWVzdERhdGEsIHJhbmdlLCBjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spXShib29sIGdyYW50ZWQpIG11dGFibGUgeworICAgICAgICAgICAg
aWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3Ig
eyBJbnZhbGlkU3RhdGVFcnJvciwgIkRhdGFiYXNlIGlzIGNsb3NlZCIgfSwgMCk7CisKKyAgICAg
ICAgICAgIGdldENvdW50KHJlcXVlc3REYXRhLCByYW5nZSwgV1RGTW92ZShjYWxsYmFjayksIGdy
YW50ZWQgPyBTcGFjZUNoZWNrUmVzdWx0OjpQYXNzIDogU3BhY2VDaGVja1Jlc3VsdDo6RmFpbCk7
CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKHNwYWNl
Q2hlY2tSZXN1bHQgPT0gU3BhY2VDaGVja1Jlc3VsdDo6UGFzcyk7CisgICAgaWYgKCFtX2JhY2tp
bmdTdG9yZSkKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRl
RXJyb3IsICJCYWNraW5nIHN0b3JlIGlzIGNsb3NlZCIgfSwgMCk7CisKICAgICB1aW50NjRfdCBj
b3VudCA9IDA7CiAgICAgYXV0byBlcnJvciA9IG1fYmFja2luZ1N0b3JlLT5nZXRDb3VudChyZXF1
ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSwgcmVxdWVzdERhdGEub2JqZWN0U3RvcmVJ
ZGVudGlmaWVyKCksIHJlcXVlc3REYXRhLmluZGV4SWRlbnRpZmllcigpLCByYW5nZSwgY291bnQp
OwogCiAgICAgY2FsbGJhY2soZXJyb3IsIGNvdW50KTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRh
YmFzZTo6ZGVsZXRlUmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29u
c3QgSURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5nZURhdGEsIEVycm9yQ2FsbGJhY2sgY2FsbGJhY2sp
Cit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVSZWNvcmQoY29uc3QgSURCUmVxdWVzdERh
dGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlRGF0YSwgRXJy
b3JDYWxsYmFjayBjYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCBzcGFjZUNoZWNrUmVzdWx0KQog
ewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIExPRyhJbmRleGVkREIsICJVbmlx
dWVJREJEYXRhYmFzZTo6ZGVsZXRlUmVjb3JkIik7CiAKLSAgICBBU1NFUlQobV9iYWNraW5nU3Rv
cmUpOworICAgIGlmIChzcGFjZUNoZWNrUmVzdWx0ID09IFNwYWNlQ2hlY2tSZXN1bHQ6OlVua25v
d24pIHsKKyAgICAgICAgaWYgKCFtX21hbmFnZXIpCisgICAgICAgICAgICByZXR1cm4gY2FsbGJh
Y2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciB9KTsKKworICAgICAgICBtX21hbmFnZXIt
PnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIDAsIFt0aGlzLCB3ZWFrVGhpcyA9
IFdlYWtQdHIgeyAqdGhpcyB9LCByZXF1ZXN0RGF0YSwga2V5UmFuZ2VEYXRhLCBjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spXShib29sIGdyYW50ZWQpIG11dGFibGUgeworICAgICAgICAgICAg
aWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3Ig
eyBJbnZhbGlkU3RhdGVFcnJvciwgIkRhdGFiYXNlIGlzIGNsb3NlZCIgfSk7CisKKyAgICAgICAg
ICAgIGRlbGV0ZVJlY29yZChyZXF1ZXN0RGF0YSwga2V5UmFuZ2VEYXRhLCBXVEZNb3ZlKGNhbGxi
YWNrKSwgZ3JhbnRlZCA/IFNwYWNlQ2hlY2tSZXN1bHQ6OlBhc3MgOiBTcGFjZUNoZWNrUmVzdWx0
OjpGYWlsKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NF
UlQoc3BhY2VDaGVja1Jlc3VsdCA9PSBTcGFjZUNoZWNrUmVzdWx0OjpQYXNzKTsKKyAgICBpZiAo
IW1fYmFja2luZ1N0b3JlKQorICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZh
bGlkU3RhdGVFcnJvciwgIkJhY2tpbmcgc3RvcmUgaXMgY2xvc2VkIiB9KTsKKwogICAgIGF1dG8g
ZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+ZGVsZXRlUmFuZ2UocmVxdWVzdERhdGEudHJhbnNhY3Rp
b25JZGVudGlmaWVyKCksIHJlcXVlc3REYXRhLm9iamVjdFN0b3JlSWRlbnRpZmllcigpLCBrZXlS
YW5nZURhdGEpOwogCiAgICAgY2FsbGJhY2soZXJyb3IpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRh
dGFiYXNlOjpvcGVuQ3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29u
c3QgSURCQ3Vyc29ySW5mbyYgaW5mbywgR2V0UmVzdWx0Q2FsbGJhY2sgY2FsbGJhY2spCit2b2lk
IFVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuQ3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1
ZXN0RGF0YSwgY29uc3QgSURCQ3Vyc29ySW5mbyYgaW5mbywgR2V0UmVzdWx0Q2FsbGJhY2sgY2Fs
bGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgc3BhY2VDaGVja1Jlc3VsdCkKIHsKICAgICBBU1NFUlQo
IWlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6
Om9wZW5DdXJzb3IiKTsKIAotICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CisgICAgaWYgKHNw
YWNlQ2hlY2tSZXN1bHQgPT0gU3BhY2VDaGVja1Jlc3VsdDo6VW5rbm93bikgeworICAgICAgICBp
ZiAoIW1fbWFuYWdlcikKKyAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IElu
dmFsaWRTdGF0ZUVycm9yIH0sIElEQkdldFJlc3VsdCB7IH0pOworCisgICAgICAgIG1fbWFuYWdl
ci0+cmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwgMCwgW3RoaXMsIHdlYWtUaGlz
ID0gV2Vha1B0ciB7ICp0aGlzIH0sIHJlcXVlc3REYXRhLCBpbmZvLCBjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spXShib29sIGdyYW50ZWQpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCF3
ZWFrVGhpcykKKyAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZh
bGlkU3RhdGVFcnJvciwgIkRhdGFiYXNlIG9yIHRyYW5zYWN0aW9uIGlzIGNsb3NlZCIgfSwgSURC
R2V0UmVzdWx0IHsgfSk7CisKKyAgICAgICAgICAgIG9wZW5DdXJzb3IocmVxdWVzdERhdGEsIGlu
Zm8sIFdURk1vdmUoY2FsbGJhY2spLCBncmFudGVkID8gU3BhY2VDaGVja1Jlc3VsdDo6UGFzcyA6
IFNwYWNlQ2hlY2tSZXN1bHQ6OkZhaWwpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIEFTU0VSVChzcGFjZUNoZWNrUmVzdWx0ID09IFNwYWNlQ2hlY2tSZXN1bHQ6
OlBhc3MpOworICAgIGlmICghbV9iYWNraW5nU3RvcmUpCisgICAgICAgIHJldHVybiBjYWxsYmFj
ayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiQmFja2luZyBzdG9yZSBpcyBjbG9zZWQi
IH0sIElEQkdldFJlc3VsdCB7IH0pOwogCiAgICAgSURCR2V0UmVzdWx0IHJlc3VsdDsKICAgICBh
dXRvIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPm9wZW5DdXJzb3IocmVxdWVzdERhdGEudHJhbnNh
Y3Rpb25JZGVudGlmaWVyKCksIGluZm8sIHJlc3VsdCk7CkBAIC04NTYsMTIgKzEwODUsMjcgQEAg
dm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6b3BlbkN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYg
cmVxdWVzdERhdGEsIGNvbnN0IElEQkMKICAgICBjYWxsYmFjayhlcnJvciwgcmVzdWx0KTsKIH0K
IAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6aXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXF1ZXN0
RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkl0ZXJhdGVDdXJzb3JEYXRhJiBkYXRhLCBHZXRS
ZXN1bHRDYWxsYmFjayBjYWxsYmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6Oml0ZXJhdGVD
dXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJJdGVyYXRl
Q3Vyc29yRGF0YSYgZGF0YSwgR2V0UmVzdWx0Q2FsbGJhY2sgY2FsbGJhY2ssIFNwYWNlQ2hlY2tS
ZXN1bHQgc3BhY2VDaGVja1Jlc3VsdCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsK
ICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6Oml0ZXJhdGVDdXJzb3IiKTsK
IAotICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CisgICAgaWYgKHNwYWNlQ2hlY2tSZXN1bHQg
PT0gU3BhY2VDaGVja1Jlc3VsdDo6VW5rbm93bikgeworICAgICAgICBpZiAoIW1fbWFuYWdlcikK
KyAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9y
IH0sIElEQkdldFJlc3VsdCB7IH0pOworCisgICAgICAgIG1fbWFuYWdlci0+cmVxdWVzdFNwYWNl
KG1faWRlbnRpZmllci5vcmlnaW4oKSwgMCwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0
aGlzIH0sIHJlcXVlc3REYXRhLCBkYXRhLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShi
b29sIGdyYW50ZWQpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAg
ICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwg
IkRhdGFiYXNlIG9yIHRyYW5zYWN0aW9uIGlzIGNsb3NlZCIgfSwgSURCR2V0UmVzdWx0IHsgfSk7
CisKKyAgICAgICAgICAgIGl0ZXJhdGVDdXJzb3IocmVxdWVzdERhdGEsIGRhdGEsIFdURk1vdmUo
Y2FsbGJhY2spLCBncmFudGVkID8gU3BhY2VDaGVja1Jlc3VsdDo6UGFzcyA6IFNwYWNlQ2hlY2tS
ZXN1bHQ6OkZhaWwpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IEFTU0VSVChzcGFjZUNoZWNrUmVzdWx0ID09IFNwYWNlQ2hlY2tSZXN1bHQ6OlBhc3MpOworICAg
IGlmICghbV9iYWNraW5nU3RvcmUpCisgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7
IEludmFsaWRTdGF0ZUVycm9yLCAiQmFja2luZyBzdG9yZSBpcyBjbG9zZWQiIH0sIElEQkdldFJl
c3VsdCB7IH0pOwogCiAgICAgSURCR2V0UmVzdWx0IHJlc3VsdDsKICAgICBhdXRvIHRyYW5zYWN0
aW9uSWRlbnRpZmllciA9IHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpOwpAQCAt
ODcxLDEzICsxMTE1LDMwIEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6Oml0ZXJhdGVDdXJzb3Io
Y29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJCiAgICAgY2FsbGJhY2so
ZXJyb3IsIHJlc3VsdCk7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNvbW1pdFRyYW5z
YWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBFcnJvckNh
bGxiYWNrIGNhbGxiYWNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y29tbWl0VHJhbnNhY3Rp
b24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIEVycm9yQ2FsbGJh
Y2sgY2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgc3BhY2VDaGVja1Jlc3VsdCkKIHsKICAgICBB
U1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0
YWJhc2U6OmNvbW1pdFRyYW5zYWN0aW9uIC0gJXMiLCB0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRp
ZmllcigpLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAorICAgIGlmIChzcGFjZUNo
ZWNrUmVzdWx0ID09IFNwYWNlQ2hlY2tSZXN1bHQ6OlVua25vd24pIHsKKyAgICAgICAgaWYgKCFt
X21hbmFnZXIpCisgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlk
U3RhdGVFcnJvciB9KTsKKworICAgICAgICBtX21hbmFnZXItPnJlcXVlc3RTcGFjZShtX2lkZW50
aWZpZXIub3JpZ2luKCksIDAsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCB3
ZWFrVHJhbnNhY3Rpb24gPSBXZWFrUHRyIHsgdHJhbnNhY3Rpb24gfSwgY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKV0oYm9vbCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICgh
d2Vha1RoaXMgfHwgIXdlYWtUcmFuc2FjdGlvbikKKyAgICAgICAgICAgICAgICByZXR1cm4gY2Fs
bGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkRhdGFiYXNlIG9yIHRyYW5zYWN0
aW9uIGlzIGNsb3NlZCIgfSk7CisKKyAgICAgICAgICAgIGNvbW1pdFRyYW5zYWN0aW9uKCp3ZWFr
VHJhbnNhY3Rpb24sIFdURk1vdmUoY2FsbGJhY2spLCBncmFudGVkID8gU3BhY2VDaGVja1Jlc3Vs
dDo6UGFzcyA6IFNwYWNlQ2hlY2tSZXN1bHQ6OkZhaWwpOworICAgICAgICB9KTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChzcGFjZUNoZWNrUmVzdWx0ID09IFNwYWNlQ2hl
Y2tSZXN1bHQ6OlBhc3MpOwogICAgIEFTU0VSVCh0cmFuc2FjdGlvbi5kYXRhYmFzZUNvbm5lY3Rp
b24oKS5kYXRhYmFzZSgpID09IHRoaXMpOwotICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CisK
KyAgICBpZiAoIW1fYmFja2luZ1N0b3JlKQorICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJy
b3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkJhY2tpbmcgc3RvcmUgaXMgY2xvc2VkIiB9KTsKKwog
ICAgIGF1dG8gdGFrZW5UcmFuc2FjdGlvbiA9IG1faW5Qcm9ncmVzc1RyYW5zYWN0aW9ucy50YWtl
KHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCkpOwogICAgIGlmICghdGFrZW5UcmFuc2Fj
dGlvbikgewogICAgICAgICBpZiAoIW1fb3BlbkRhdGFiYXNlQ29ubmVjdGlvbnMuY29udGFpbnMo
JnRyYW5zYWN0aW9uLmRhdGFiYXNlQ29ubmVjdGlvbigpKSkKQEAgLTg5MywxMSArMTE1NCwyNSBA
QCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjb21taXRUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRh
YmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdAogICAgIHRyYW5zYWN0aW9uQ29tcGxldGVkKFdURk1v
dmUodGFrZW5UcmFuc2FjdGlvbikpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjphYm9y
dFRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBF
cnJvckNhbGxiYWNrIGNhbGxiYWNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6YWJvcnRUcmFu
c2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgRXJyb3JD
YWxsYmFjayBjYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCBzcGFjZUNoZWNrUmVzdWx0KQogewog
ICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJ
REJEYXRhYmFzZTo6YWJvcnRUcmFuc2FjdGlvbiAtICVzIiwgdHJhbnNhY3Rpb24uaW5mbygpLmlk
ZW50aWZpZXIoKS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKKyAgICBpZiAoc3Bh
Y2VDaGVja1Jlc3VsdCA9PSBTcGFjZUNoZWNrUmVzdWx0OjpVbmtub3duKSB7CisgICAgICAgIGlm
ICghbV9tYW5hZ2VyKQorICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52
YWxpZFN0YXRlRXJyb3IgfSk7CisKKyAgICAgICAgbV9tYW5hZ2VyLT5yZXF1ZXN0U3BhY2UobV9p
ZGVudGlmaWVyLm9yaWdpbigpLCAwLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMg
fSwgd2Vha1RyYW5zYWN0aW9uID0gV2Vha1B0ciB7IHRyYW5zYWN0aW9uIH0sIGNhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayldKGJvb2wgZ3JhbnRlZCkgbXV0YWJsZSB7CisgICAgICAgICAgICBp
ZiAoIXdlYWtUaGlzIHx8ICF3ZWFrVHJhbnNhY3Rpb24pCisgICAgICAgICAgICAgICAgcmV0dXJu
IGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJEYXRhYmFzZSBvciB0cmFu
c2FjdGlvbiBpcyBjbG9zZWQiIH0pOworCisgICAgICAgICAgICBhYm9ydFRyYW5zYWN0aW9uKCp3
ZWFrVHJhbnNhY3Rpb24sIFdURk1vdmUoY2FsbGJhY2spLCBncmFudGVkID8gU3BhY2VDaGVja1Jl
c3VsdDo6UGFzcyA6IFNwYWNlQ2hlY2tSZXN1bHQ6OkZhaWwpOworICAgICAgICB9KTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChzcGFjZUNoZWNrUmVzdWx0ID09IFNwYWNl
Q2hlY2tSZXN1bHQ6OlBhc3MpOwogICAgIEFTU0VSVCh0cmFuc2FjdGlvbi5kYXRhYmFzZUNvbm5l
Y3Rpb24oKS5kYXRhYmFzZSgpID09IHRoaXMpOwogCiAgICAgYXV0byB0YWtlblRyYW5zYWN0aW9u
ID0gbV9pblByb2dyZXNzVHJhbnNhY3Rpb25zLnRha2UodHJhbnNhY3Rpb24uaW5mbygpLmlkZW50
aWZpZXIoKSk7CkBAIC05MjUsNyArMTIwMCwxMSBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjph
Ym9ydFRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aQog
ICAgICAgICBtX2RhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPigqbV92
ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24tPm9yaWdpbmFsRGF0YWJhc2VJbmZvKCkpOwogICAgIH0K
IAotICAgIGF1dG8gZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+YWJvcnRUcmFuc2FjdGlvbih0cmFu
c2FjdGlvbklkZW50aWZpZXIpOworICAgIElEQkVycm9yIGVycm9yOworICAgIGlmICghbV9iYWNr
aW5nU3RvcmUpCisgICAgICAgIGVycm9yID0gSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwg
IkJhY2tpbmcgc3RvcmUgaXMgY2xvc2VkIiB9OworICAgIGVsc2UKKyAgICAgICAgZXJyb3IgPSBt
X2JhY2tpbmdTdG9yZS0+YWJvcnRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbklkZW50aWZpZXIpOwog
CiAgICAgY2FsbGJhY2soZXJyb3IpOwogICAgIHRyYW5zYWN0aW9uQ29tcGxldGVkKFdURk1vdmUo
dGFrZW5UcmFuc2FjdGlvbikpOwpAQCAtMTIyNSw2ICsxNTA0LDExIEBAIGJvb2wgVW5pcXVlSURC
RGF0YWJhc2U6OnRyeUNsb3NlKCkKICAgICBjbG9zZSgpOwogICAgIHJldHVybiB0cnVlOwogfQor
ICAgIAorYm9vbCBVbmlxdWVJREJEYXRhYmFzZTo6aGFzRGF0YUluTWVtb3J5KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9iYWNraW5nU3RvcmUgPyBtX2JhY2tpbmdTdG9yZS0+aXNFcGhlbWVyYWwo
KSA6IGZhbHNlOworfQogCiBSZWZQdHI8U2VydmVyT3BlbkRCUmVxdWVzdD4gVW5pcXVlSURCRGF0
YWJhc2U6OnRha2VOZXh0UnVubmFibGVSZXF1ZXN0KFJlcXVlc3RUeXBlIHJlcXVlc3RUeXBlKQog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1Vu
aXF1ZUlEQkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvVW5pcXVlSURCRGF0YWJhc2UuaAppbmRleCBiMmE3NDE3ZjljODE5Y2ZjMjQxNDZjZTVmYjVj
ZjVkMjYxMjg1MDgwLi43ODgwZjY2NWVhODdlMDVmY2JhZGMzZDFkMDc0NDYxOWJlMDM5MjRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVl
SURCRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvVW5pcXVlSURCRGF0YWJhc2UuaApAQCAtNTksOCArNTksOCBAQCBlbnVtIGNsYXNzIEluZGV4
UmVjb3JkVHlwZSA6IGJvb2w7CiBuYW1lc3BhY2UgSURCU2VydmVyIHsKIAogY2xhc3MgSURCQ29u
bmVjdGlvblRvQ2xpZW50OwotY2xhc3MgSURCU2VydmVyOwogY2xhc3MgVW5pcXVlSURCRGF0YWJh
c2VDb25uZWN0aW9uOworY2xhc3MgVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyOwogCiB0eXBlZGVm
IEZ1bmN0aW9uPHZvaWQoY29uc3QgSURCRXJyb3ImKT4gRXJyb3JDYWxsYmFjazsKIHR5cGVkZWYg
RnVuY3Rpb248dm9pZChjb25zdCBJREJFcnJvciYsIGNvbnN0IElEQktleURhdGEmKT4gS2V5RGF0
YUNhbGxiYWNrOwpAQCAtNzEsNTQgKzcxLDYyIEBAIHR5cGVkZWYgRnVuY3Rpb248dm9pZChjb25z
dCBJREJFcnJvciYsIHVpbnQ2NF90KT4gQ291bnRDYWxsYmFjazsKIGNsYXNzIFVuaXF1ZUlEQkRh
dGFiYXNlIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFVuaXF1ZUlEQkRhdGFiYXNlPiB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgVW5pcXVlSURCRGF0YWJhc2Uo
SURCU2VydmVyJiwgY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJik7CisgICAgV0VCQ09SRV9F
WFBPUlQgVW5pcXVlSURCRGF0YWJhc2UoVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyJiwgY29uc3Qg
SURCRGF0YWJhc2VJZGVudGlmaWVyJik7CiAgICAgVW5pcXVlSURCRGF0YWJhc2UoVW5pcXVlSURC
RGF0YWJhc2UmKSA9IGRlbGV0ZTsKICAgICBXRUJDT1JFX0VYUE9SVCB+VW5pcXVlSURCRGF0YWJh
c2UoKTsKIAotICAgIHZvaWQgb3BlbkRhdGFiYXNlQ29ubmVjdGlvbihJREJDb25uZWN0aW9uVG9D
bGllbnQmLCBjb25zdCBJREJSZXF1ZXN0RGF0YSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
b3BlbkRhdGFiYXNlQ29ubmVjdGlvbihJREJDb25uZWN0aW9uVG9DbGllbnQmLCBjb25zdCBJREJS
ZXF1ZXN0RGF0YSYpOwogCiAgICAgY29uc3QgSURCRGF0YWJhc2VJbmZvJiBpbmZvKCkgY29uc3Q7
Ci0gICAgSURCU2VydmVyJiBzZXJ2ZXIoKSB7IHJldHVybiBtX3NlcnZlcjsgfQorICAgIFVuaXF1
ZUlEQkRhdGFiYXNlTWFuYWdlciogbWFuYWdlcigpOwogICAgIGNvbnN0IElEQkRhdGFiYXNlSWRl
bnRpZmllciYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogCi0g
ICAgdm9pZCBjcmVhdGVPYmplY3RTdG9yZShVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwg
Y29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiwgRXJyb3JDYWxsYmFjayk7Ci0gICAgdm9pZCBkZWxl
dGVPYmplY3RTdG9yZShVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgY29uc3QgU3RyaW5n
JiBvYmplY3RTdG9yZU5hbWUsIEVycm9yQ2FsbGJhY2spOwotICAgIHZvaWQgcmVuYW1lT2JqZWN0
U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIHVpbnQ2NF90IG9iamVjdFN0b3Jl
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lLCBFcnJvckNhbGxiYWNrKTsKLSAgICB2
b2lkIGNsZWFyT2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIHVpbnQ2
NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgRXJyb3JDYWxsYmFjayk7Ci0gICAgdm9pZCBjcmVh
dGVJbmRleChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgY29uc3QgSURCSW5kZXhJbmZv
JiwgRXJyb3JDYWxsYmFjayk7Ci0gICAgdm9pZCBkZWxldGVJbmRleChVbmlxdWVJREJEYXRhYmFz
ZVRyYW5zYWN0aW9uJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIGluZGV4TmFtZSwgRXJyb3JDYWxsYmFjayk7Ci0gICAgdm9pZCByZW5hbWVJbmRleChVbmlx
dWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVy
LCB1aW50NjRfdCBpbmRleElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSwgRXJyb3JD
YWxsYmFjayk7CisgICAgZW51bSBjbGFzcyBTcGFjZUNoZWNrUmVzdWx0IDogdWludDhfdCB7Cisg
ICAgICAgIFVua25vd24sCisgICAgICAgIFBhc3MsCisgICAgICAgIEZhaWwKKyAgICB9OworICAg
IHZvaWQgY3JlYXRlT2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIGNv
bnN0IElEQk9iamVjdFN0b3JlSW5mbyYsIEVycm9yQ2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQg
PSBTcGFjZUNoZWNrUmVzdWx0OjpVbmtub3duKTsKKyAgICB2b2lkIGRlbGV0ZU9iamVjdFN0b3Jl
KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3Jl
TmFtZSwgRXJyb3JDYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCA9IFNwYWNlQ2hlY2tSZXN1bHQ6
OlVua25vd24pOworICAgIHZvaWQgcmVuYW1lT2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VU
cmFuc2FjdGlvbiYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiBuZXdOYW1lLCBFcnJvckNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0ID0gU3BhY2VDaGVja1Jl
c3VsdDo6VW5rbm93bik7CisgICAgdm9pZCBjbGVhck9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFi
YXNlVHJhbnNhY3Rpb24mLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIEVycm9yQ2Fs
bGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgPSBTcGFjZUNoZWNrUmVzdWx0OjpVbmtub3duKTsKKyAg
ICB2b2lkIGNyZWF0ZUluZGV4KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCBjb25zdCBJ
REJJbmRleEluZm8mLCBFcnJvckNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0ID0gU3BhY2VDaGVj
a1Jlc3VsdDo6VW5rbm93bik7CisgICAgdm9pZCBkZWxldGVJbmRleChVbmlxdWVJREJEYXRhYmFz
ZVRyYW5zYWN0aW9uJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIGluZGV4TmFtZSwgRXJyb3JDYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCA9IFNwYWNlQ2hl
Y2tSZXN1bHQ6OlVua25vd24pOworICAgIHZvaWQgcmVuYW1lSW5kZXgoVW5pcXVlSURCRGF0YWJh
c2VUcmFuc2FjdGlvbiYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgdWludDY0X3Qg
aW5kZXhJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUsIEVycm9yQ2FsbGJhY2ssIFNw
YWNlQ2hlY2tSZXN1bHQgPSBTcGFjZUNoZWNrUmVzdWx0OjpVbmtub3duKTsKICAgICB2b2lkIHB1
dE9yQWRkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5RGF0YSYsIGNvbnN0IElE
QlZhbHVlJiwgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUsIEtleURhdGFDYWxs
YmFjayk7Ci0gICAgdm9pZCBnZXRSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJ
REJHZXRSZWNvcmREYXRhJiwgR2V0UmVzdWx0Q2FsbGJhY2spOwotICAgIHZvaWQgZ2V0QWxsUmVj
b3Jkcyhjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkdldEFsbFJlY29yZHNEYXRhJiwg
R2V0QWxsUmVzdWx0c0NhbGxiYWNrKTsKLSAgICB2b2lkIGdldENvdW50KGNvbnN0IElEQlJlcXVl
c3REYXRhJiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiwgQ291bnRDYWxsYmFjayk7Ci0gICAgdm9p
ZCBkZWxldGVSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlSYW5nZURh
dGEmLCBFcnJvckNhbGxiYWNrKTsKLSAgICB2b2lkIG9wZW5DdXJzb3IoY29uc3QgSURCUmVxdWVz
dERhdGEmLCBjb25zdCBJREJDdXJzb3JJbmZvJiwgR2V0UmVzdWx0Q2FsbGJhY2spOwotICAgIHZv
aWQgaXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkl0ZXJhdGVD
dXJzb3JEYXRhJiwgR2V0UmVzdWx0Q2FsbGJhY2spOwotICAgIHZvaWQgY29tbWl0VHJhbnNhY3Rp
b24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIEVycm9yQ2FsbGJhY2spOwotICAgIHZv
aWQgYWJvcnRUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgRXJyb3JD
YWxsYmFjayk7CisgICAgdm9pZCBwdXRPckFkZEFmdGVyU3BhY2VDaGVjayhjb25zdCBJREJSZXF1
ZXN0RGF0YSYsIGNvbnN0IElEQktleURhdGEmLCBjb25zdCBJREJWYWx1ZSYsIEluZGV4ZWREQjo6
T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlLCBLZXlEYXRhQ2FsbGJhY2ssIGJvb2wgaXNLZXlHZW5l
cmF0ZWQsIGNvbnN0IEluZGV4SURUb0luZGV4S2V5TWFwJiwgY29uc3QgSURCT2JqZWN0U3RvcmVJ
bmZvJiwgU3BhY2VDaGVja1Jlc3VsdCk7CisgICAgdm9pZCBnZXRSZWNvcmQoY29uc3QgSURCUmVx
dWVzdERhdGEmLCBjb25zdCBJREJHZXRSZWNvcmREYXRhJiwgR2V0UmVzdWx0Q2FsbGJhY2ssIFNw
YWNlQ2hlY2tSZXN1bHQgPSBTcGFjZUNoZWNrUmVzdWx0OjpVbmtub3duKTsKKyAgICB2b2lkIGdl
dEFsbFJlY29yZHMoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJHZXRBbGxSZWNvcmRz
RGF0YSYsIEdldEFsbFJlc3VsdHNDYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCA9IFNwYWNlQ2hl
Y2tSZXN1bHQ6OlVua25vd24pOworICAgIHZvaWQgZ2V0Q291bnQoY29uc3QgSURCUmVxdWVzdERh
dGEmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmLCBDb3VudENhbGxiYWNrLCBTcGFjZUNoZWNrUmVz
dWx0ID0gU3BhY2VDaGVja1Jlc3VsdDo6VW5rbm93bik7CisgICAgdm9pZCBkZWxldGVSZWNvcmQo
Y29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmLCBFcnJvckNhbGxi
YWNrLCBTcGFjZUNoZWNrUmVzdWx0ID0gU3BhY2VDaGVja1Jlc3VsdDo6VW5rbm93bik7CisgICAg
dm9pZCBvcGVuQ3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCQ3Vyc29ySW5m
byYsIEdldFJlc3VsdENhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0ID0gU3BhY2VDaGVja1Jlc3Vs
dDo6VW5rbm93bik7CisgICAgdm9pZCBpdGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRh
JiwgY29uc3QgSURCSXRlcmF0ZUN1cnNvckRhdGEmLCBHZXRSZXN1bHRDYWxsYmFjaywgU3BhY2VD
aGVja1Jlc3VsdCA9IFNwYWNlQ2hlY2tSZXN1bHQ6OlVua25vd24pOworICAgIHZvaWQgY29tbWl0
VHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIEVycm9yQ2FsbGJhY2ss
IFNwYWNlQ2hlY2tSZXN1bHQgPSBTcGFjZUNoZWNrUmVzdWx0OjpVbmtub3duKTsKKyAgICB2b2lk
IGFib3J0VHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIEVycm9yQ2Fs
bGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgPSBTcGFjZUNoZWNrUmVzdWx0OjpVbmtub3duKTsKIAog
ICAgIHZvaWQgZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlKFVuaXF1ZUlEQkRhdGFiYXNl
Q29ubmVjdGlvbiYsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVu
dGlmaWVyKTsKICAgICB2b2lkIGNvbm5lY3Rpb25DbG9zZWRGcm9tQ2xpZW50KFVuaXF1ZUlEQkRh
dGFiYXNlQ29ubmVjdGlvbiYpOwogICAgIHZvaWQgZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudChV
bmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXIm
IHJlcXVlc3RJZGVudGlmaWVyLCBJbmRleGVkREI6OkNvbm5lY3Rpb25DbG9zZWRPbkJlaGFsZk9m
U2VydmVyKTsKLSAgICB2b2lkIG9wZW5EQlJlcXVlc3RDYW5jZWxsZWQoY29uc3QgSURCUmVzb3Vy
Y2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllcik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBvcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVx
dWVzdElkZW50aWZpZXIpOwogCiAgICAgdm9pZCBlbnF1ZXVlVHJhbnNhY3Rpb24oUmVmPFVuaXF1
ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24+JiYpOwogCi0gICAgdm9pZCBoYW5kbGVEZWxldGUoSURC
Q29ubmVjdGlvblRvQ2xpZW50JiwgY29uc3QgSURCUmVxdWVzdERhdGEmKTsKLSAgICB2b2lkIGlt
bWVkaWF0ZUNsb3NlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBoYW5kbGVEZWxldGUoSURC
Q29ubmVjdGlvblRvQ2xpZW50JiwgY29uc3QgSURCUmVxdWVzdERhdGEmKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGltbWVkaWF0ZUNsb3NlKCk7CiAKICAgICBib29sIGhhc0FjdGl2ZVRyYW5z
YWN0aW9ucygpIGNvbnN0OwotICAgIHZvaWQgYWJvcnRBY3RpdmVUcmFuc2FjdGlvbnMoKTsKLSAg
ICBib29sIHRyeUNsb3NlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhYm9ydEFjdGl2ZVRy
YW5zYWN0aW9ucygpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgdHJ5Q2xvc2UoKTsKIAotICAg
IFN0cmluZyBmaWxlUGF0aCgpIGNvbnN0OwotICAgIHN0ZDo6b3B0aW9uYWw8SURCRGF0YWJhc2VO
YW1lQW5kVmVyc2lvbj4gbmFtZUFuZFZlcnNpb24oKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBTdHJpbmcgZmlsZVBhdGgoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlv
bmFsPElEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24+IG5hbWVBbmRWZXJzaW9uKCkgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNEYXRhSW5NZW1vcnkoKSBjb25zdDsKIAogcHJpdmF0
ZToKICAgICB2b2lkIGhhbmRsZURhdGFiYXNlT3BlcmF0aW9ucygpOwogICAgIHZvaWQgaGFuZGxl
Q3VycmVudE9wZXJhdGlvbigpOwogICAgIHZvaWQgcGVyZm9ybUN1cnJlbnRPcGVuT3BlcmF0aW9u
KCk7CisgICAgdm9pZCBwZXJmb3JtQ3VycmVudE9wZW5PcGVyYXRpb25BZnRlclNwYWNlQ2hlY2so
Ym9vbCBpc0dyYW50ZWQpOwogICAgIHZvaWQgcGVyZm9ybUN1cnJlbnREZWxldGVPcGVyYXRpb24o
KTsKICAgICBlbnVtIGNsYXNzIFJlcXVlc3RUeXBlIHsgRGVsZXRlLCBBbnkgfTsKICAgICBSZWZQ
dHI8U2VydmVyT3BlbkRCUmVxdWVzdD4gdGFrZU5leHRSdW5uYWJsZVJlcXVlc3QoUmVxdWVzdFR5
cGUgPSBSZXF1ZXN0VHlwZTo6QW55KTsKQEAgLTE0NiwxMSArMTU0LDEzIEBAIHByaXZhdGU6CiAK
ICAgICB2b2lkIGNsZWFyVHJhbnNhY3Rpb25zT25Db25uZWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNl
Q29ubmVjdGlvbiYpOwogCi0gICAgSURCU2VydmVyJiBtX3NlcnZlcjsKKyAgICBJREJTZXJ2ZXIq
IG1fc2VydmVyOworICAgIFdlYWtQdHI8VW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyPiBtX21hbmFn
ZXI7CiAgICAgSURCRGF0YWJhc2VJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIAogICAgIExpc3RI
YXNoU2V0PFJlZlB0cjxTZXJ2ZXJPcGVuREJSZXF1ZXN0Pj4gbV9wZW5kaW5nT3BlbkRCUmVxdWVz
dHM7CiAgICAgUmVmUHRyPFNlcnZlck9wZW5EQlJlcXVlc3Q+IG1fY3VycmVudE9wZW5EQlJlcXVl
c3Q7CisgICAgSGFzaFNldDxJREJSZXNvdXJjZUlkZW50aWZpZXI+IG1fb3BlbkRCUmVxdWVzdHNG
b3JTcGFjZUNoZWNrOwogCiAgICAgTGlzdEhhc2hTZXQ8UmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNl
Q29ubmVjdGlvbj4+IG1fb3BlbkRhdGFiYXNlQ29ubmVjdGlvbnM7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZUNv
bm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1Vu
aXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5jcHAKaW5kZXggNzQzZWRjYzNiOGM1OTQwNTFmNzkx
MTE2NTI2YWY0ZDAyMTY5MTM2Ny4uM2M3NzJhZjcwYjc0ODIyOTc0ZDlkNWI3MTBkMzE1ZjBhOWE4
ZmI3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L1VuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5jcHAKQEAg
LTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiU2VydmVyT3Bl
bkRCUmVxdWVzdC5oIgogI2luY2x1ZGUgIlVuaXF1ZUlEQkRhdGFiYXNlLmgiCisjaW5jbHVkZSAi
VW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVz
cGFjZSBJREJTZXJ2ZXIgewpAQCAtNDIsMTEgKzQzLDE0IEBAIFJlZjxVbmlxdWVJREJEYXRhYmFz
ZUNvbm5lY3Rpb24+IFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbjo6Y3JlYXRlKFVuaXF1ZUlE
QkRhCiAKIFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbjo6VW5pcXVlSURCRGF0YWJhc2VDb25u
ZWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlJiBkYXRhYmFzZSwgU2VydmVyT3BlbkRCUmVxdWVzdCYg
cmVxdWVzdCkKICAgICA6IG1fZGF0YWJhc2UoZGF0YWJhc2UpCi0gICAgLCBtX3NlcnZlcihkYXRh
YmFzZS5zZXJ2ZXIoKSkKKyAgICAsIG1fbWFuYWdlcihkYXRhYmFzZS5tYW5hZ2VyKCkpCiAgICAg
LCBtX2Nvbm5lY3Rpb25Ub0NsaWVudChyZXF1ZXN0LmNvbm5lY3Rpb24oKSkKICAgICAsIG1fb3Bl
blJlcXVlc3RJZGVudGlmaWVyKHJlcXVlc3QucmVxdWVzdERhdGEoKS5yZXF1ZXN0SWRlbnRpZmll
cigpKQogewotICAgIG1fc2VydmVyLnJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0aW9uKCp0aGlzKTsK
KyAgICBpZiAoYXV0byogbWFuYWdlciA9IGRhdGFiYXNlLm1hbmFnZXIoKSkgeworICAgICAgICBt
X21hbmFnZXIgPSAqbWFuYWdlcjsKKyAgICAgICAgbV9tYW5hZ2VyLT5yZWdpc3RlckNvbm5lY3Rp
b24oKnRoaXMpOworICAgIH0KICAgICBtX2Nvbm5lY3Rpb25Ub0NsaWVudC0+cmVnaXN0ZXJEYXRh
YmFzZUNvbm5lY3Rpb24oKnRoaXMpOwogfQogCkBAIC01NCwxMCArNTgsMTYgQEAgVW5pcXVlSURC
RGF0YWJhc2VDb25uZWN0aW9uOjp+VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uKCkKIHsKICAg
ICBBU1NFUlQobV90cmFuc2FjdGlvbk1hcC5pc0VtcHR5KCkpOwogCi0gICAgbV9zZXJ2ZXIudW5y
ZWdpc3RlckRhdGFiYXNlQ29ubmVjdGlvbigqdGhpcyk7CisgICAgaWYgKG1fbWFuYWdlcikKKyAg
ICAgICAgbV9tYW5hZ2VyLT51bnJlZ2lzdGVyQ29ubmVjdGlvbigqdGhpcyk7CiAgICAgbV9jb25u
ZWN0aW9uVG9DbGllbnQtPnVucmVnaXN0ZXJEYXRhYmFzZUNvbm5lY3Rpb24oKnRoaXMpOwogfQog
CitVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIqIFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbjo6
bWFuYWdlcigpCit7CisgICAgcmV0dXJuIG1fbWFuYWdlci5nZXQoKTsKK30KKwogYm9vbCBVbmlx
dWVJREJEYXRhYmFzZUNvbm5lY3Rpb246Omhhc05vbkZpbmlzaGVkVHJhbnNhY3Rpb25zKCkgY29u
c3QKIHsKICAgICByZXR1cm4gIW1fdHJhbnNhY3Rpb25NYXAuaXNFbXB0eSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFi
YXNlQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L1VuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5oCmluZGV4IDJlMTlkZmQyZGM5MTQzNGJmYzVl
N2MzYWU0YmU2NmQ4Y2Q4NTg4MTEuLjk4ZmViNTljNzZiZWFlYmU3MGVkZGU0YmU1NThmY2E4NzFj
OThkYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmgKQEAgLTI1
LDcgKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJJREJTZXJ2ZXIuaCIKICNp
bmNsdWRlICJVbmlxdWVJREJEYXRhYmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAj
aW5jbHVkZSA8d3RmL0lkZW50aWZpZWQuaD4KQEAgLTM2LDYgKzM1LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBJREJFcnJvcjsKIGNsYXNzIElEQlJlc3VsdERhdGE7CitjbGFzcyBV
bmlxdWVJREJEYXRhYmFzZU1hbmFnZXI7CiAKIG5hbWVzcGFjZSBJREJTZXJ2ZXIgewogCkBAIC01
MiwxMSArNTIsMTEgQEAgcHVibGljOgogCiAgICAgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVy
JiBvcGVuUmVxdWVzdElkZW50aWZpZXIoKSB7IHJldHVybiBtX29wZW5SZXF1ZXN0SWRlbnRpZmll
cjsgfQogICAgIFVuaXF1ZUlEQkRhdGFiYXNlKiBkYXRhYmFzZSgpIHsgcmV0dXJuIG1fZGF0YWJh
c2UuZ2V0KCk7IH0KLSAgICBJREJTZXJ2ZXIqIHNlcnZlcigpIHsgcmV0dXJuICZtX3NlcnZlcjsg
fQorICAgIFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlciogbWFuYWdlcigpOwogICAgIElEQkNvbm5l
Y3Rpb25Ub0NsaWVudCYgY29ubmVjdGlvblRvQ2xpZW50KCkgeyByZXR1cm4gbV9jb25uZWN0aW9u
VG9DbGllbnQ7IH0KIAotICAgIHZvaWQgY29ubmVjdGlvblBlbmRpbmdDbG9zZUZyb21DbGllbnQo
KTsKLSAgICB2b2lkIGNvbm5lY3Rpb25DbG9zZWRGcm9tQ2xpZW50KCk7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBjb25uZWN0aW9uUGVuZGluZ0Nsb3NlRnJvbUNsaWVudCgpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgY29ubmVjdGlvbkNsb3NlZEZyb21DbGllbnQoKTsKIAogICAgIGJvb2wg
Y2xvc2VQZW5kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9jbG9zZVBlbmRpbmc7IH0KIApAQCAtNjUs
NyArNjUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmaXJlVmVyc2lvbkNoYW5nZUV2ZW50KGNvbnN0
IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IHJlcXVl
c3RlZFZlcnNpb24pOwogICAgIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIGNyZWF0ZVZl
cnNpb25DaGFuZ2VUcmFuc2FjdGlvbih1aW50NjRfdCBuZXdWZXJzaW9uKTsKIAotICAgIHZvaWQg
ZXN0YWJsaXNoVHJhbnNhY3Rpb24oY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBlc3RhYmxpc2hUcmFuc2FjdGlvbihjb25zdCBJREJUcmFuc2FjdGlv
bkluZm8mKTsKICAgICB2b2lkIGRpZEFib3J0VHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VU
cmFuc2FjdGlvbiYsIGNvbnN0IElEQkVycm9yJik7CiAgICAgdm9pZCBkaWRDb21taXRUcmFuc2Fj
dGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgY29uc3QgSURCRXJyb3ImKTsKICAg
ICB2b2lkIGRpZENyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlc3VsdERhdGEmKTsKQEAgLTc1
LDggKzc1LDggQEAgcHVibGljOgogICAgIHZvaWQgZGlkQ3JlYXRlSW5kZXgoY29uc3QgSURCUmVz
dWx0RGF0YSYpOwogICAgIHZvaWQgZGlkRGVsZXRlSW5kZXgoY29uc3QgSURCUmVzdWx0RGF0YSYp
OwogICAgIHZvaWQgZGlkUmVuYW1lSW5kZXgoY29uc3QgSURCUmVzdWx0RGF0YSYpOwotICAgIHZv
aWQgZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXIm
IHJlcXVlc3RJZGVudGlmaWVyLCBJbmRleGVkREI6OkNvbm5lY3Rpb25DbG9zZWRPbkJlaGFsZk9m
U2VydmVyKTsKLSAgICB2b2lkIGRpZEZpbmlzaEhhbmRsaW5nVmVyc2lvbkNoYW5nZShjb25zdCBJ
REJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBkaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KGNvbnN0IElEQlJlc291cmNl
SWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIEluZGV4ZWREQjo6Q29ubmVjdGlvbkNsb3Nl
ZE9uQmVoYWxmT2ZTZXJ2ZXIpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkRmluaXNoSGFu
ZGxpbmdWZXJzaW9uQ2hhbmdlKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rp
b25JZGVudGlmaWVyKTsKIAogICAgIHZvaWQgYWJvcnRUcmFuc2FjdGlvbldpdGhvdXRDYWxsYmFj
ayhVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJik7CiAKQEAgLTg4LDcgKzg4LDcgQEAgcHJp
dmF0ZToKICAgICBVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24oVW5pcXVlSURCRGF0YWJhc2Um
LCBTZXJ2ZXJPcGVuREJSZXF1ZXN0Jik7CiAKICAgICBXZWFrUHRyPFVuaXF1ZUlEQkRhdGFiYXNl
PiBtX2RhdGFiYXNlOwotICAgIElEQlNlcnZlciYgbV9zZXJ2ZXI7CisgICAgV2Vha1B0cjxVbmlx
dWVJREJEYXRhYmFzZU1hbmFnZXI+IG1fbWFuYWdlcjsKICAgICBSZWY8SURCQ29ubmVjdGlvblRv
Q2xpZW50PiBtX2Nvbm5lY3Rpb25Ub0NsaWVudDsKICAgICBJREJSZXNvdXJjZUlkZW50aWZpZXIg
bV9vcGVuUmVxdWVzdElkZW50aWZpZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZU1hbmFn
ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mODNlZmI0OTBjYTNiZTE4M2MwN2RhMGYxZDY4YTllNjRjOWZiMzMy
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1VuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlci5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIklEQkRhdGFiYXNlSWRlbnRpZmllci5oIgor
I2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0
IENsaWVudE9yaWdpbjsKKworbmFtZXNwYWNlIElEQlNlcnZlciB7CisKK2NsYXNzIElEQkJhY2tp
bmdTdG9yZTsKK2NsYXNzIFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbjsKK2NsYXNzIFVuaXF1
ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb247CisKK2NsYXNzIFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdl
ciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXI+IHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5VbmlxdWVJ
REJEYXRhYmFzZU1hbmFnZXIoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJDb25uZWN0
aW9uKFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
dW5yZWdpc3RlckNvbm5lY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJh
bnNhY3Rpb24mKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJUcmFuc2FjdGlvbihV
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJikgPSAwOworICAgIHZpcnR1YWwgc3RkOjp1bmlx
dWVfcHRyPElEQkJhY2tpbmdTdG9yZT4gY3JlYXRlQmFja2luZ1N0b3JlKGNvbnN0IElEQkRhdGFi
YXNlSWRlbnRpZmllciYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFNwYWNlKGNvbnN0
IENsaWVudE9yaWdpbiYsIHVpbnQ2NF90IHNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIElEQlNlcnZlcgorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5j
cHAKaW5kZXggMWNjMDI4MTdhMTI0YzhkMGVkNTJmMjEzYWM4ZTUwMDZiYTZiOTZkZS4uNmUzY2Uw
NDQwNmZjYWQzM2JjYzFjOWU5ZjYxMmUyYWY0MTA2OTQxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9Vbmlx
dWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcApAQCAtMjgsNyArMjgsNiBAQAogCiAjaW5jbHVk
ZSAiSURCSXRlcmF0ZUN1cnNvckRhdGEuaCIKICNpbmNsdWRlICJJREJSZXN1bHREYXRhLmgiCi0j
aW5jbHVkZSAiSURCU2VydmVyLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlVu
aXF1ZUlEQkRhdGFiYXNlLmgiCiAKQEAgLTUwLDEyICs0OSwxNCBAQCBVbmlxdWVJREJEYXRhYmFz
ZVRyYW5zYWN0aW9uOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFi
YXNlQ29ubgogICAgIGlmIChtX3RyYW5zYWN0aW9uSW5mby5tb2RlKCkgPT0gSURCVHJhbnNhY3Rp
b25Nb2RlOjpWZXJzaW9uY2hhbmdlKQogICAgICAgICBtX29yaWdpbmFsRGF0YWJhc2VJbmZvID0g
bWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KGRhdGFiYXNlLT5pbmZvKCkpOwogCi0gICAgZGF0
YWJhc2VDb25uZWN0aW9uKCkuc2VydmVyKCktPnJlZ2lzdGVyVHJhbnNhY3Rpb24oKnRoaXMpOwor
ICAgIGlmIChhdXRvKiBtYW5hZ2VyID0gZGF0YWJhc2VDb25uZWN0aW9uKCkubWFuYWdlcigpKQor
ICAgICAgICBtYW5hZ2VyLT5yZWdpc3RlclRyYW5zYWN0aW9uKCp0aGlzKTsKIH0KIAogVW5pcXVl
SURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6flVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24oKQog
ewotICAgIGRhdGFiYXNlQ29ubmVjdGlvbigpLnNlcnZlcigpLT51bnJlZ2lzdGVyVHJhbnNhY3Rp
b24oKnRoaXMpOworICAgIGlmIChhdXRvKiBtYW5hZ2VyID0gZGF0YWJhc2VDb25uZWN0aW9uKCku
bWFuYWdlcigpKQorICAgICAgICBtYW5hZ2VyLT51bnJlZ2lzdGVyVHJhbnNhY3Rpb24oKnRoaXMp
OwogfQogCiBVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mIFVuaXF1ZUlEQkRhdGFiYXNlVHJh
bnNhY3Rpb246OmRhdGFiYXNlQ29ubmVjdGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFi
YXNlVHJhbnNhY3Rpb24uaAppbmRleCA5NTk2NjUyYWRjZGJhN2EwNDhiNjE5Zjc0ZWYxYTkyY2Vl
ZjllMGU1Li5mYmE4NWMxNzM4YjczNDJlMTI4ODAwYWViOWQxZGE0NjdlZTdhMTAxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0
YWJhc2VUcmFuc2FjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmgKQEAgLTUxLDcgKzUxLDcgQEAg
bmFtZXNwYWNlIElEQlNlcnZlciB7CiBjbGFzcyBJREJTZXJ2ZXI7CiBjbGFzcyBVbmlxdWVJREJE
YXRhYmFzZUNvbm5lY3Rpb247CiAKLWNsYXNzIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24g
OiBwdWJsaWMgUmVmQ291bnRlZDxVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uPiB7CitjbGFz
cyBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFVu
aXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24+LCBwdWJsaWMgUmVmQ291bnRlZDxVbmlxdWVJREJE
YXRhYmFzZVRyYW5zYWN0aW9uPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxVbmlxdWVJREJE
YXRhYmFzZVRyYW5zYWN0aW9uPiBjcmVhdGUoVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiwg
Y29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJik7CiAKQEAgLTU5LDI5ICs1OSwyOSBAQCBwdWJsaWM6
CiAKICAgICBVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mIGRhdGFiYXNlQ29ubmVjdGlvbigp
OwogICAgIGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYgaW5mbygpIGNvbnN0IHsgcmV0dXJuIG1f
dHJhbnNhY3Rpb25JbmZvOyB9Ci0gICAgYm9vbCBpc1ZlcnNpb25DaGFuZ2UoKSBjb25zdDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIGlzVmVyc2lvbkNoYW5nZSgpIGNvbnN0OwogICAgIGJvb2wg
aXNSZWFkT25seSgpIGNvbnN0OwogCiAgICAgSURCRGF0YWJhc2VJbmZvKiBvcmlnaW5hbERhdGFi
YXNlSW5mbygpIGNvbnN0OwogCi0gICAgdm9pZCBhYm9ydCgpOwotICAgIHZvaWQgYWJvcnRXaXRo
b3V0Q2FsbGJhY2soKTsKLSAgICB2b2lkIGNvbW1pdCh1aW50NjRfdCBwZW5kaW5nUmVxdWVzdENv
dW50KTsKLQotICAgIHZvaWQgY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVxdWVzdERhdGEm
LCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mKTsKLSAgICB2b2lkIGRlbGV0ZU9iamVjdFN0b3Jl
KGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUpOwot
ICAgIHZvaWQgcmVuYW1lT2JqZWN0U3RvcmUoY29uc3QgSURCUmVxdWVzdERhdGEmLCB1aW50NjRf
dCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSk7Ci0gICAgdm9p
ZCBjbGVhck9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgdWludDY0X3Qgb2JqZWN0
U3RvcmVJZGVudGlmaWVyKTsKLSAgICB2b2lkIGNyZWF0ZUluZGV4KGNvbnN0IElEQlJlcXVlc3RE
YXRhJiwgY29uc3QgSURCSW5kZXhJbmZvJik7Ci0gICAgdm9pZCBkZWxldGVJbmRleChjb25zdCBJ
REJSZXF1ZXN0RGF0YSYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBpbmRleE5hbWUpOwotICAgIHZvaWQgcmVuYW1lSW5kZXgoY29uc3QgSURCUmVxdWVzdERh
dGEmLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lKTsKLSAgICB2b2lkIHB1dE9yQWRkKGNvbnN0IElE
QlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5RGF0YSYsIGNvbnN0IElEQlZhbHVlJiwgSW5kZXhl
ZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUpOwotICAgIHZvaWQgZ2V0UmVjb3JkKGNvbnN0
IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCR2V0UmVjb3JkRGF0YSYpOwotICAgIHZvaWQgZ2V0
QWxsUmVjb3Jkcyhjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkdldEFsbFJlY29yZHNE
YXRhJik7Ci0gICAgdm9pZCBnZXRDb3VudChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElE
QktleVJhbmdlRGF0YSYpOwotICAgIHZvaWQgZGVsZXRlUmVjb3JkKGNvbnN0IElEQlJlcXVlc3RE
YXRhJiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJik7Ci0gICAgdm9pZCBvcGVuQ3Vyc29yKGNvbnN0
IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCQ3Vyc29ySW5mbyYpOwotICAgIHZvaWQgaXRlcmF0
ZUN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkl0ZXJhdGVDdXJzb3JEYXRh
Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhYm9ydCgpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgYWJvcnRXaXRob3V0Q2FsbGJhY2soKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNv
bW1pdCh1aW50NjRfdCBwZW5kaW5nUmVxdWVzdENvdW50KTsKKworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJP
YmplY3RTdG9yZUluZm8mKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZU9iamVjdFN0
b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVuYW1lT2JqZWN0U3RvcmUoY29uc3QgSURCUmVx
dWVzdERhdGEmLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
bmV3TmFtZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhck9iamVjdFN0b3JlKGNvbnN0
IElEQlJlcXVlc3REYXRhJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGNyZWF0ZUluZGV4KGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29u
c3QgSURCSW5kZXhJbmZvJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkZWxldGVJbmRleChj
b25zdCBJREJSZXF1ZXN0RGF0YSYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBpbmRleE5hbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVuYW1lSW5k
ZXgoY29uc3QgSURCUmVxdWVzdERhdGEmLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIs
IHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHB1dE9yQWRkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3Qg
SURCS2V5RGF0YSYsIGNvbnN0IElEQlZhbHVlJiwgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3
cml0ZU1vZGUpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0UmVjb3JkKGNvbnN0IElEQlJl
cXVlc3REYXRhJiwgY29uc3QgSURCR2V0UmVjb3JkRGF0YSYpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZ2V0QWxsUmVjb3Jkcyhjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkdldEFs
bFJlY29yZHNEYXRhJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRDb3VudChjb25zdCBJ
REJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgZGVsZXRlUmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5
UmFuZ2VEYXRhJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBvcGVuQ3Vyc29yKGNvbnN0IElE
QlJlcXVlc3REYXRhJiwgY29uc3QgSURCQ3Vyc29ySW5mbyYpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgaXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkl0ZXJh
dGVDdXJzb3JEYXRhJik7CiAKICAgICB2b2lkIGRpZEFjdGl2YXRlSW5CYWNraW5nU3RvcmUoY29u
c3QgSURCRXJyb3ImKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2hhcmVkL0lEQkVycm9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zaGFyZWQvSURCRXJyb3IuaAppbmRleCBmZjE3Yzk4YTQxMTVkZTYyY2FjYzcwYWQzMjUyYmQ2
ZWRmMTFmMzk5Li5iMzBhZDM5MTc2ZjAzZmYwZDZjOTM5OGQ2YjNlZDE5Y2QyZTk5MjFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3Iu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3Iu
aApAQCAtNTIsNiArNTIsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIG1lc3NhZ2UoKSBjb25zdDsK
IAogICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gIW1fY29kZTsgfQorICAgIG9wZXJh
dG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhaXNOdWxsKCk7IH0KIAogICAgIFdFQkNPUkVfRVhQ
T1JUIElEQkVycm9yIGlzb2xhdGVkQ29weSgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5oCmluZGV4
IDAxOGNiMTNlNzVlYjY0NWRkMTE0ZTI0ZjZkYmZlYTM0Y2Y1NWIxNjQuLjAwMTc4N2E2NjU4YTQx
NzhiNmE3OTcxMjhhMDRkYTM2YjhhZmRmZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5oCkBAIC01Niw4ICs1
Niw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBJREJSZXF1ZXN0RGF0YSBpc29sYXRl
ZENvcHkoKSBjb25zdDsKIAogICAgIElEQkNvbm5lY3Rpb25JZGVudGlmaWVyIHNlcnZlckNvbm5l
Y3Rpb25JZGVudGlmaWVyKCkgY29uc3Q7Ci0gICAgSURCUmVzb3VyY2VJZGVudGlmaWVyIHJlcXVl
c3RJZGVudGlmaWVyKCkgY29uc3Q7Ci0gICAgSURCUmVzb3VyY2VJZGVudGlmaWVyIHRyYW5zYWN0
aW9uSWRlbnRpZmllcigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIElEQlJlc291cmNlSWRl
bnRpZmllciByZXF1ZXN0SWRlbnRpZmllcigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIElE
QlJlc291cmNlSWRlbnRpZmllciB0cmFuc2FjdGlvbklkZW50aWZpZXIoKSBjb25zdDsKICAgICB1
aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIoKSBjb25zdDsKICAgICB1aW50NjRfdCBpbmRl
eElkZW50aWZpZXIoKSBjb25zdDsKICAgICBJbmRleGVkREI6OkluZGV4UmVjb3JkVHlwZSBpbmRl
eFJlY29yZFR5cGUoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NoYXJlZC9JREJSZXNvdXJjZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXNvdXJjZUlkZW50aWZpZXIuaAppbmRleCBi
ZTE2MTk3ZjYzNGE1OTZjMzllNTEzMDI4NTkwNjgzNTc0NTg2ODJhLi5iZDM5NTRhMjg5NzNjZWI4
YTViZjY0OGY0YWE1MTIzZjJlZmJlZjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzb3VyY2VJZGVudGlmaWVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc291cmNlSWRlbnRpZmllci5o
CkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICBJREJSZXNvdXJjZUlkZW50aWZpZXIoY29u
c3QgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkmLCBjb25zdCBJREJSZXF1ZXN0Jik7CiAg
ICAgZXhwbGljaXQgSURCUmVzb3VyY2VJZGVudGlmaWVyKGNvbnN0IElEQlNlcnZlcjo6SURCQ29u
bmVjdGlvblRvQ2xpZW50Jik7CiAKLSAgICBzdGF0aWMgSURCUmVzb3VyY2VJZGVudGlmaWVyIGVt
cHR5VmFsdWUoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSURCUmVzb3VyY2VJZGVudGlm
aWVyIGVtcHR5VmFsdWUoKTsKICAgICBib29sIGlzRW1wdHkoKSBjb25zdAogICAgIHsKICAgICAg
ICAgcmV0dXJuICFtX3Jlc291cmNlTnVtYmVyICYmICFtX2lkYkNvbm5lY3Rpb25JZGVudGlmaWVy
OwpAQCAtNjAsNyArNjAsOCBAQCBwdWJsaWM6CiAgICAgICAgIHVpbnQ2NF90IGhhc2hDb2Rlc1sy
XSA9IHsgbV9pZGJDb25uZWN0aW9uSWRlbnRpZmllci50b1VJbnQ2NCgpLCBtX3Jlc291cmNlTnVt
YmVyIH07CiAgICAgICAgIHJldHVybiBTdHJpbmdIYXNoZXI6Omhhc2hNZW1vcnk8c2l6ZW9mKGhh
c2hDb2Rlcyk+KGhhc2hDb2Rlcyk7CiAgICAgfQotICAgIAorCisgICAgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRo
aXMgPT0gb3RoZXIpOyB9CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IElEQlJlc291cmNlSWRl
bnRpZmllciYgb3RoZXIpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9pZGJDb25uZWN0
aW9uSWRlbnRpZmllciA9PSBvdGhlci5tX2lkYkNvbm5lY3Rpb25JZGVudGlmaWVyCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjFm
OGE1MTA0YjZiMjk1NmYyYmYxZDI2YzUxZDg3MzNlZDI1OGNkOS4uZjA5YWE3OGU0YzI2N2YwZWQ0
NGE5ODA2MTU5M2ViYzA5OTU3MDQwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTU0MSwxMCArMTU0MSwxMCBAQAogCQk1MTEy
M0UyRjI3Njk0MENBMDBGOUQ0MUIgLyogTm90aWZpY2F0aW9uRGF0YS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExMjNFMkMyNzY5M0MzMjAwRjlENDFC
IC8qIE5vdGlmaWNhdGlvbkRhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk1MTE3RjMwRTI1RTYxMDIwMDAyQTlGMUUgLyogUmVtb3RlQ29tbWFu
ZExpc3RlbmVyQ29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxMTdGMzBDMjVFNjEwMUYwMDJBOUYxRSAvKiBSZW1vdGVDb21tYW5kTGlzdGVuZXJD
b2NvYS5oICovOyB9OwogCQk1MTFFQzEyODFDNTBBQUNBMDAzMkY5ODMgLyogSURCU2VyaWFsaXph
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEx
RUMxMjYxQzUwQUE1NzAwMzJGOTgzIC8qIElEQlNlcmlhbGl6YXRpb24uaCAqLzsgfTsKLQkJNTEx
RUMxMkMxQzUwQUJCRjAwMzJGOTgzIC8qIFNRTGl0ZUlEQlRyYW5zYWN0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTFFQzEyQTFDNTBBQkJBMDAz
MkY5ODMgLyogU1FMaXRlSURCVHJhbnNhY3Rpb24uaCAqLzsgfTsKKwkJNTExRUMxMkMxQzUwQUJC
RjAwMzJGOTgzIC8qIFNRTGl0ZUlEQlRyYW5zYWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTFFQzEyQTFDNTBBQkJBMDAzMkY5ODMgLyogU1FM
aXRlSURCVHJhbnNhY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk1MTFFQzEzMDFDNTBBQkY1MDAzMkY5ODMgLyogU1FMaXRlSURCQ3Vyc29y
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTFFQzEy
RTFDNTBBQkVDMDAzMkY5ODMgLyogU1FMaXRlSURCQ3Vyc29yLmggKi87IH07CiAJCTUxMjBCQkFG
MUYxQ0VDRTcwMEVGRUJGMSAvKiBDb29raWVTdG9yYWdlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMjBCQkFEMUYxQ0U3NzAwMEVGRUJG
MSAvKiBDb29raWVTdG9yYWdlT2JzZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwotCQk1MTJCREI0QjFDNDU2RkZBMDA2NDk0REYgLyogU1FMaXRl
SURCQmFja2luZ1N0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MTJCREI0OTFDNDU2RkFCMDA2NDk0REYgLyogU1FMaXRlSURCQmFja2luZ1N0b3Jl
LmggKi87IH07CisJCTUxMkJEQjRCMUM0NTZGRkEwMDY0OTRERiAvKiBTUUxpdGVJREJCYWNraW5n
U3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
MkJEQjQ5MUM0NTZGQUIwMDY0OTRERiAvKiBTUUxpdGVJREJCYWNraW5nU3RvcmUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTJERDhGNTBEOTFF
NkFGMDAwRjg5RUUgLyogTGVnYWN5V2ViQXJjaGl2ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyREQ4RUIwRDkxRTZBRjAwMEY4OUVFIC8qIExlZ2Fj
eVdlYkFyY2hpdmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk1MTJERDhGNjBEOTFFNkFGMDAwRjg5RUUgLyogQXJjaGl2ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyREQ4RUMwRDkxRTZBRjAwMEY4
OUVFIC8qIEFyY2hpdmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk1MTJERDhGODBEOTFFNkFGMDAwRjg5RUUgLyogQXJjaGl2ZVJlc291cmNlQ29s
bGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTEyREQ4RUUwRDkxRTZBRjAwMEY4OUVFIC8qIEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24uaCAq
LzsgfTsKQEAgLTE1OTAsNyArMTU5MCw3IEBACiAJCTUxNkQ3RDcyMUJCNUYwQkQwMEFGN0M3NyAv
KiBJREJDb25uZWN0aW9uVG9DbGllbnREZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE2RDdENkUxQkI1RjA2NTAwQUY3Qzc3IC8qIElEQkNv
bm5lY3Rpb25Ub0NsaWVudERlbGVnYXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE2RjdGNkQxQzMxRTM5QTAwRjExMURDIC8qIFNlcnZlck9w
ZW5EQlJlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxNkY3RjZDMUMzMUM3OUQwMEYxMTFEQyAvKiBTZXJ2ZXJPcGVuREJSZXF1ZXN0LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE3MTM4RjAx
QkVEMUQxQTAwMEQ1RjAxIC8qIEluZGV4S2V5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTcxMzhFRTFCRUQxRDE3MDAwRDVGMDEgLyogSW5kZXhLZXku
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk1MTcx
MzhGODFCRjEyOEJCMDAwRDVGMDEgLyogSW5kZXhWYWx1ZVN0b3JlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTcxMzhGNjFCRjEyMjYyMDAwRDVGMDEg
LyogSW5kZXhWYWx1ZVN0b3JlLmggKi87IH07CisJCTUxNzEzOEY4MUJGMTI4QkIwMDBENUYwMSAv
KiBJbmRleFZhbHVlU3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxNzEzOEY2MUJGMTIyNjIwMDBENUYwMSAvKiBJbmRleFZhbHVlU3RvcmUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTcxMzhG
QzFCRjNBREY0MDAwRDVGMDEgLyogSURCQ3Vyc29ySW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3MTM4RkExQkYzQURBQzAwMEQ1RjAxIC8qIElE
QkN1cnNvckluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk1MTcxMzkwNjFCRjY0REVDMDAwRDVGMDEgLyogTWVtb3J5T2JqZWN0U3RvcmVDdXJz
b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNzEz
OTA0MUJGNjRERTMwMDBENUYwMSAvKiBNZW1vcnlPYmplY3RTdG9yZUN1cnNvci5oICovOyB9Owog
CQk1MTcxMzkwODFCRjY0REVGMDAwRDVGMDEgLyogTWVtb3J5Q3Vyc29yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTcxMzkwMjFCRjY0REUzMDAwRDVG
MDEgLyogTWVtb3J5Q3Vyc29yLmggKi87IH07CkBAIC0xNjY2LDcgKzE2NjYsNyBAQAogCQk1MUI5
MTQxMDFGRDI3ODJEMDBFRTI4NTkgLyogUmVnaXN0cmF0aW9uRGF0YWJhc2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQjkxNDBDMUZEMjc4MjUwMEVF
Mjg1OSAvKiBSZWdpc3RyYXRpb25EYXRhYmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxQjkxNDExMUZEMjc4MkQwMEVFMjg1OSAvKiBSZWdp
c3RyYXRpb25TdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTFCOTE0MEIxRkQyNzgyNTAwRUUyODU5IC8qIFJlZ2lzdHJhdGlvblN0b3JlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFCQTRBQzQx
QkJCNUNEODAwREYzRDZEIC8qIElEQkRhdGFiYXNlSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCQTRBQzIxQkJCNUNCRjAwREYzRDZEIC8qIElE
QkRhdGFiYXNlSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07Ci0JCTUxQkE0QUNCMUJCQzVCRDkwMERGM0Q2RCAvKiBNZW1vcnlJREJCYWNraW5nU3Rv
cmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkE0
QUM5MUJCQzVCOUUwMERGM0Q2RCAvKiBNZW1vcnlJREJCYWNraW5nU3RvcmUuaCAqLzsgfTsKKwkJ
NTFCQTRBQ0IxQkJDNUJEOTAwREYzRDZEIC8qIE1lbW9yeUlEQkJhY2tpbmdTdG9yZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCQTRBQzkxQkJDNUI5
RTAwREYzRDZEIC8qIE1lbW9yeUlEQkJhY2tpbmdTdG9yZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxQkE0QUNDMUJCQzVCREQwMERGM0Q2RCAv
KiBJREJCYWNraW5nU3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxQkE0QUM3MUJCQzVBRDYwMERGM0Q2RCAvKiBJREJCYWNraW5nU3RvcmUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUJBOTQ3
MTIzQUMzMDUzMDA0NDQ4NDYgLyogUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkE5NDZGMjNBQzMwNTAwMDQ0
NDg0NiAvKiBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxQkNDRTMwMUY4RjE3OUUwMDZCQTBFRCAvKiBT
ZXJ2aWNlV29ya2VyVGhyZWFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTdDODcxMDFGOEVFNzJFMDBFQjgwNzYgLyogU2VydmljZVdvcmtlclRocmVh
ZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0x
NjgyLDcgKzE2ODIsNyBAQAogCQk1MUUwQkFCQjBEQTU1NDcxMDBBOUU0MTcgLyogU3RvcmFnZUV2
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUw
QkFCOTBEQTU1NDcxMDBBOUU0MTcgLyogU3RvcmFnZUV2ZW50LmggKi87IH07CiAJCTUxRTBCQUVC
MERBNTVENEEwMEE5RTQxNyAvKiBKU1N0b3JhZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFMEJBRTkwREE1NUQ0QTAwQTlFNDE3IC8qIEpT
U3RvcmFnZUV2ZW50LmggKi87IH07CiAJCTUxRTBCQjM4MERBNUFDQjYwMEE5RTQxNyAvKiBTdG9y
YWdlTWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MUUwQkIzNjBEQTVBQ0I2MDBBOUU0MTcgLyogU3RvcmFnZU1hcC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTUxRTFCQUMzMUJEODA2NEUwMDU1RDgx
RiAvKiBNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFMUJBQzExQkQ4MDY0NzAwNTVEODFGIC8qIE1l
bW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uLmggKi87IH07CisJCTUxRTFCQUMzMUJEODA2NEUw
MDU1RDgxRiAvKiBNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFMUJBQzExQkQ4MDY0NzAwNTVEODFG
IC8qIE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFFMjY5MzcxREQzQkQ5QjAwNkI2QTU4IC8q
IElEQkl0ZXJhdGVDdXJzb3JEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MUUyNjkzNTFERDNCRDkxMDA2QjZBNTggLyogSURCSXRlcmF0ZUN1cnNv
ckRhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk1MUUzOTkwMDFENkU0NzUwMDA5Qzg4MzEgLyogR2FtZUNvbnRyb2xsZXJHYW1lcGFkLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUzOThGQzFENkU0
NzRCMDA5Qzg4MzEgLyogR2FtZUNvbnRyb2xsZXJHYW1lcGFkLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFFMzk5MDIxRDZFNDc1MDAwOUM4ODMx
IC8qIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUzOThGRTFENkU0NzRCMDA5Qzg4MzEgLyogR2Ft
ZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTY5Miw3ICsxNjkyLDcgQEAKIAkJNTFFQ0MzRjgyMDA1
ODdCRjAwNDgzRUFFIC8qIE1lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUVDQzNGMTIwMDU4N0I1MDA0ODNF
QUUgLyogTWVzc2FnZVBvcnRDaGFubmVsUmVnaXN0cnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUVDQzNGRDIwMDU5MzBEMDA0ODNFQUUgLyog
TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxRUNDM0ZCMjAwNTkzMDEwMDQ4M0VBRSAvKiBNZXNzYWdlUG9y
dENoYW5uZWxQcm92aWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTUxRUU3QjM4MUFBNTBCMDUwMEY5MkIyMSAvKiBSZXNvdXJjZUxvYWRJbmZv
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUVFN0Iz
NzFBQTUwQjA1MDBGOTJCMjEgLyogUmVzb3VyY2VMb2FkSW5mby5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTUxRUVBQTc0MUJFRkZBQjEwMDIxODAw
OCAvKiBJbmRleFZhbHVlRW50cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxRUVBQTcyMUJFRkZBNzkwMDIxODAwOCAvKiBJbmRleFZhbHVlRW50cnku
aCAqLzsgfTsKKwkJNTFFRUFBNzQxQkVGRkFCMTAwMjE4MDA4IC8qIEluZGV4VmFsdWVFbnRyeS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFRUFBNzIx
QkVGRkE3OTAwMjE4MDA4IC8qIEluZGV4VmFsdWVFbnRyeS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxRjE3NEZFMUYzNTg5OTIwMEM3NDk1MCAv
KiBXb3JrZXJUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MUYxNzRGQzFGMzU4OTg4MDBDNzQ5NTAgLyogV29ya2VyVHlwZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxRjE3NTAzMUYzNThCM0Iw
MEM3NDk1MCAvKiBKU1NlcnZpY2VXb3JrZXJVcGRhdGVWaWFDYWNoZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGMTc1MDExRjM1OEIzNjAwQzc0OTUw
IC8qIEpTU2VydmljZVdvcmtlclVwZGF0ZVZpYUNhY2hlLmggKi87IH07CiAJCTUxRjE3NTA2MUYz
NThCRjcwMEM3NDk1MCAvKiBKU1dvcmtlclR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjE3NTA1MUYzNThCREUwMEM3NDk1MCAvKiBKU1dvcmtl
clR5cGUuaCAqLzsgfTsKQEAgLTI5OTIsNiArMjk5Miw3IEBACiAJCTkzQjJEODE2MEY5OTIwRDIw
MDZBRTZCMiAvKiBTdWRkZW5UZXJtaW5hdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCMkQ4MTUwRjk5MjBEMjAwNkFFNkIyIC8qIFN1ZGRlblRl
cm1pbmF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJOTNCMzhFQzMyNTgyMURCNDAwMTk4RTYzIC8qIFdlYlNwZWVjaFJlY29nbml6ZXJUYXNr
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0IzOEVC
QTI1ODIxOTNCMDAxOThFNjMgLyogV2ViU3BlZWNoUmVjb2duaXplclRhc2suaCAqLzsgfTsKIAkJ
OTNCMzhFQzQyNTgyMURCNzAwMTk4RTYzIC8qIFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jay5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCMzhFQkIy
NTgyMTkzRDAwMTk4RTYzIC8qIFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jay5oICovOyB9Owor
CQk5M0I2MzFFMjI3QUJBMUU2MDA0NDNBNDQgLyogVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0I2MzFFMDI3
QUJBMUUyMDA0NDNBNDQgLyogVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNCNkEwRTYwQjBCQ0E1QzAw
RjUwMjdBIC8qIENvbnRleHRNZW51LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5M0I2QTBFNTBCMEJDQTVDMDBGNTAyN0EgLyogQ29udGV4dE1lbnUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0I3MEQ2
NDA5RUIwQzdDMDA5RDg0NjggLyogSlNET01CaW5kaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0I3MEQ0ODA5RUIwQzdDMDA5RDg0NjggLyogSlNE
T01CaW5kaW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJOTNCNzBENkEwOUVCMEM3QzAwOUQ4NDY4IC8qIEpTRXZlbnRMaXN0ZW5lci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCNzBENEUwOUVCMEM3
QzAwOUQ4NDY4IC8qIEpTRXZlbnRMaXN0ZW5lci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMjgyNCw2ICsxMjgyNSw3IEBACiAJCTkzQjM4RUJB
MjU4MjE5M0IwMDE5OEU2MyAvKiBXZWJTcGVlY2hSZWNvZ25pemVyVGFzay5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTcGVlY2hSZWNvZ25pemVyVGFzay5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5M0IzOEVCQjI1ODIxOTNEMDAxOThFNjMgLyogV2ViU3Bl
ZWNoUmVjb2duaXplclRhc2tNb2NrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5M0IzOEVCQzI1ODIxOTNFMDAxOThFNjMgLyogV2ViU3BlZWNoUmVjb2duaXplclRhc2su
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJTcGVlY2hSZWNv
Z25pemVyVGFzay5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNCNjMxRTAyN0FC
QTFFMjAwNDQzQTQ0IC8qIFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCNkEwRTUwQjBCQ0E1QzAwRjUwMjdBIC8qIENvbnRleHRN
ZW51LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb250ZXh0TWVudS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0I3MEQ0ODA5RUIwQzdDMDA5RDg0NjggLyog
SlNET01CaW5kaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RPTUJp
bmRpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCNzBENEQwOUVCMEM3QzAw
OUQ4NDY4IC8qIEpTRXZlbnRMaXN0ZW5lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNFdmVudExpc3RlbmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTIyMTQ3LDYgKzIyMTQ5LDcgQEAKIAkJCQk1MTg4NjRERjFCQkFGMzBGMDBFNTQwQzkg
LyogVW5pcXVlSURCRGF0YWJhc2UuaCAqLywKIAkJCQk1MTk4RjdBMjFCQkRBQTI5MDBFMkNDNUYg
LyogVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmNwcCAqLywKIAkJCQk1MTk4RjdBMzFCQkRB
QTI5MDBFMkNDNUYgLyogVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmggKi8sCisJCQkJOTNC
NjMxRTAyN0FCQTFFMjAwNDQzQTQ0IC8qIFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlci5oICovLAog
CQkJCTUxOThGN0E2MUJCREQzODEwMEUyQ0M1RiAvKiBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0
aW9uLmNwcCAqLywKIAkJCQk1MTk4RjdBNzFCQkREMzgxMDBFMkNDNUYgLyogVW5pcXVlSURCRGF0
YWJhc2VUcmFuc2FjdGlvbi5oICovLAogCQkJKTsKQEAgLTM3NzY4LDYgKzM3NzcxLDcgQEAKIAkJ
CQlBODYzRTIwMTEzNDM0MTIwMDAyNzQ5MjYgLyogVW5pY29kZUJpZGkuaCBpbiBIZWFkZXJzICov
LAogCQkJCTUxODg2NEUxMUJCQUY1NzQwMEU1NDBDOSAvKiBVbmlxdWVJREJEYXRhYmFzZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTE5OEY3QTUxQkJEQjc5MzAwRTJDQzVGIC8qIFVuaXF1ZUlEQkRh
dGFiYXNlQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTNCNjMxRTIyN0FCQTFFNjAw
NDQzQTQ0IC8qIFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTE5OEY3QTkxQkJERDM4NTAwRTJDQzVGIC8qIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24u
aCBpbiBIZWFkZXJzICovLAogCQkJCUU0QUZDRkE1MERBRjI5QTMwMEY1RjU1QyAvKiBVbml0QmV6
aWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMThDQzBBNDI1ODBFRkIxMDAzRDc1RkIgLyogVW5p
dmVyc2FsQWNjZXNzWm9vbS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y3BwCmluZGV4IGEzNGY3OWJkZTNlMDgxNjk2ZDczYTU1ZmJmNTkwNThiZjZkOGYzNzkuLjU3M2Zk
OGNmMmI2Y2ZmYzE1NDFjODRiMjJiZDBiMjRhMWNmYmQ1ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwCkBAIC01MiwxMyArNTIsMTMgQEAKICNpbmNsdWRlICJOZXR3b3JrU29ja2V0Q2hh
bm5lbE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1NvY2tldFN0cmVhbS5oIgogI2luY2x1
ZGUgIk5ldHdvcmtTb2NrZXRTdHJlYW1NZXNzYWdlcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtTdG9y
YWdlTWFuYWdlci5oIgogI2luY2x1ZGUgIlBpbmdMb2FkLmgiCiAjaW5jbHVkZSAiUHJlY29ubmVj
dFRhc2suaCIKICNpbmNsdWRlICJSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXJQcm94eS5oIgog
I2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldl
YkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYkVycm9ycy5oIgotI2luY2x1ZGUg
IldlYklEQlNlcnZlci5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1
ZGUgIldlYlByb2Nlc3NQb29sTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuaCIKQEAgLTM5MCw4ICszOTAsMTIgQEAgYm9vbCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmUKIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6dXBkYXRlUXVvdGFC
YXNlZE9uU3BhY2VVc2FnZUZvclRlc3RpbmcoY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4pCiB7
Ci0gICAgYXV0byBzdG9yYWdlUXVvdGFNYW5hZ2VyID0gbV9uZXR3b3JrUHJvY2Vzcy0+c3RvcmFn
ZVF1b3RhTWFuYWdlcihzZXNzaW9uSUQoKSwgb3JpZ2luKTsKLSAgICBzdG9yYWdlUXVvdGFNYW5h
Z2VyLT5yZXNldFF1b3RhVXBkYXRlZEJhc2VkT25Vc2FnZUZvclRlc3RpbmcoKTsKKyAgICBhdXRv
KiBzZXNzaW9uID0gbV9uZXR3b3JrUHJvY2Vzcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKCkp
OworICAgIGlmICghc2Vzc2lvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGF1dG8qIHN0
b3JhZ2VNYW5hZ2VyID0gc2Vzc2lvbi0+c3RvcmFnZU1hbmFnZXIoKSkKKyAgICAgICAgc3RvcmFn
ZU1hbmFnZXItPnJlc2V0UXVvdGFVcGRhdGVkQmFzZWRPblVzYWdlRm9yVGVzdGluZyhvcmlnaW4p
OwogfQogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRDbG9zZShJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCkBAIC05ODMsOCArOTg3LDEwIEBAIHZvaWQgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzRm9ySW5k
ZXhlZERCKGNvbnN0CiAgICAgICAgIGZvciAoYXV0byYgZmlsZSA6IGZpbGVSZWZlcmVuY2VzKQog
ICAgICAgICAgICAgZmlsZS0+cmV2b2tlRmlsZUFjY2VzcygpOwogCi0gICAgICAgIGlmIChhdXRv
KiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oKSkKLSAgICAgICAgICAgIHNlc3Npb24tPmVuc3Vy
ZVdlYklEQlNlcnZlcigpLnJlZ2lzdGVyVGVtcG9yYXJ5QmxvYkZpbGVQYXRocyhtX2Nvbm5lY3Rp
b24sIGZpbGVQYXRocyk7CisgICAgICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Np
b24oKSkgeworICAgICAgICAgICAgaWYgKGF1dG8qIHN0b3JhZ2VNYW5hZ2VyID0gc2Vzc2lvbi0+
c3RvcmFnZU1hbmFnZXIoKSkKKyAgICAgICAgICAgICAgICBzdG9yYWdlTWFuYWdlci0+cmVnaXN0
ZXJUZW1wb3JhcnlCbG9iRmlsZVBhdGhzKG1fY29ubmVjdGlvbiwgZmlsZVBhdGhzKTsKKyAgICAg
ICAgfQogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGZpbGVQYXRocykpOwogICAg
IH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcAppbmRleCA3Yzc5ZTJhMjA5NzZhMTM5YzdmNjY3ZjExM2M0ODk0NmRlZGQ1NjQxLi4xNzVi
ZDM4MTY0NzQ5MTZjYzAxMTVjOWQ4ZmYyYzU4NmJkMGUzMWU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMjY0LDggKzI2NCw2IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpCiAgICAgLy8g
TWFrZSBzdXJlIHdlIGZsdXNoIGFsbCBjb29raWVzIHRvIGRpc2sgYmVmb3JlIGV4aXRpbmcuCiAg
ICAgZm9yRWFjaE5ldHdvcmtTZXNzaW9uKFsmXSAoYXV0byYgc2Vzc2lvbikgewogICAgICAgICBw
bGF0Zm9ybUZsdXNoQ29va2llcyhzZXNzaW9uLnNlc3Npb25JRCgpLCBbY2FsbGJhY2tBZ2dyZWdh
dG9yXSB7IH0pOwotICAgICAgICAvLyBNYWtlIHN1cmUgcmVmZXJlbmNlIHRvIE5ldHdvcmtQcm9j
ZXNzIGluIHNwYWNlUmVxdWVzdGVyIGlzIHJlbW92ZWQuCi0gICAgICAgIHNlc3Npb24uY2xvc2VJ
REJTZXJ2ZXIoW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKICAgICB9KTsKIH0KIApAQCAtMzgy
LDcgKzM4MCw2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKFByb2Nlc3NJZGVudGlmaWVyIGlkZW50CiAgICAgY29ubmVjdGlvbi5zZXRP
bkxpbmVTdGF0ZShOZXR3b3JrU3RhdGVOb3RpZmllcjo6c2luZ2xldG9uKCkub25MaW5lKCkpOwog
CiAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0g
ICAgICAgIHNlc3Npb24tPmVuc3VyZVdlYklEQlNlcnZlcigpLmFkZENvbm5lY3Rpb24oY29ubmVj
dGlvbi5jb25uZWN0aW9uKCksIGlkZW50aWZpZXIpOwogICAgICAgICBpZiAoYXV0byogbWFuYWdl
ciA9IHNlc3Npb24tPnN0b3JhZ2VNYW5hZ2VyKCkpCiAgICAgICAgICAgICBtYW5hZ2VyLT5zdGFy
dFJlY2VpdmluZ01lc3NhZ2VGcm9tQ29ubmVjdGlvbihjb25uZWN0aW9uLmNvbm5lY3Rpb24oKSk7
CiAgICAgfQpAQCAtNDA2LDggKzQwMyw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmFkZFdlYnNp
dGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzCiAgICAg
YWRkU2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXIoc2Vzc2lvbklELCBwYXJhbWV0ZXJzLnBlck9y
aWdpblN0b3JhZ2VRdW90YSwgcGFyYW1ldGVycy5wZXJUaGlyZFBhcnR5T3JpZ2luU3RvcmFnZVF1
b3RhLCBwYXJhbWV0ZXJzLmNhY2hlU3RvcmFnZURpcmVjdG9yeSwgcGFyYW1ldGVycy5jYWNoZVN0
b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogCiAgICAgaWYgKGF1dG8qIHNlc3Npb24g
PSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIHNlc3Npb24tPmFkZFN0b3Jh
Z2VNYW5hZ2VyU2Vzc2lvbihwYXJhbWV0ZXJzLmdlbmVyYWxTdG9yYWdlRGlyZWN0b3J5LCBwYXJh
bWV0ZXJzLmdlbmVyYWxTdG9yYWdlRGlyZWN0b3J5SGFuZGxlLCBwYXJhbWV0ZXJzLmxvY2FsU3Rv
cmFnZURpcmVjdG9yeSwgcGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25I
YW5kbGUpOwotICAgICAgICBzZXNzaW9uLT5hZGRJbmRleGVkRGF0YWJhc2VTZXNzaW9uKHBhcmFt
ZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFz
ZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CisgICAgICAgIHNlc3Npb24tPmFkZFN0b3JhZ2VN
YW5hZ2VyU2Vzc2lvbihwYXJhbWV0ZXJzLmdlbmVyYWxTdG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0
ZXJzLmdlbmVyYWxTdG9yYWdlRGlyZWN0b3J5SGFuZGxlLCBwYXJhbWV0ZXJzLmxvY2FsU3RvcmFn
ZURpcmVjdG9yeSwgcGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5k
bGUsIHBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmluZGV4
ZWREYXRhYmFzZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSwgcGFyYW1ldGVycy5jYWNoZVN0b3Jh
Z2VEaXJlY3RvcnksIHBhcmFtZXRlcnMucGVyT3JpZ2luU3RvcmFnZVF1b3RhLCBwYXJhbWV0ZXJz
LnBlclRoaXJkUGFydHlPcmlnaW5TdG9yYWdlUXVvdGEpOwogI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKICAgICAgICAgc2Vzc2lvbi0+YWRkU2VydmljZVdvcmtlclNlc3Npb24ocGFyYW1ldGVy
cy5zZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkLCBXVEZNb3ZlKHBh
cmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSksIHBhcmFtZXRlcnMu
c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAjZW5k
aWYKQEAgLTE0NTIsMTMgKzE0NDgsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpmZXRjaFdlYnNp
dGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdAogICAgICAg
ICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fd2Vic2l0ZURhdGEuaG9zdE5hbWVzV2l0aEhTVFNDYWNo
ZSA9IGhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUoc2Vzc2lvbklEKTsKICNlbmRpZgogCi0gICAgaWYg
KHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRh
YmFzZXMpICYmIHNlc3Npb24gJiYgc2Vzc2lvbi0+aGFzSURCRGF0YWJhc2VQYXRoKCkpIHsKLSAg
ICAgICAgc2Vzc2lvbi0+ZW5zdXJlV2ViSURCU2VydmVyKCkuZ2V0T3JpZ2lucyhbY2FsbGJhY2tB
Z2dyZWdhdG9yXShhdXRvJiYgb3JpZ2lucykgewotICAgICAgICAgICAgd2hpbGUgKCFvcmlnaW5z
LmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fd2Vic2l0
ZURhdGEuZW50cmllcy5hcHBlbmQoeyBvcmlnaW5zLnRha2VBbnkoKSwgV2Vic2l0ZURhdGFUeXBl
OjpJbmRleGVkREJEYXRhYmFzZXMsIDAgfSk7Ci0gICAgICAgIH0pOwotICAgIH0KLQogI2lmIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhX
ZWJzaXRlRGF0YVR5cGU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zKSAmJiBzZXNzaW9uICYm
IHNlc3Npb24tPmhhc1NlcnZpY2VXb3JrZXJEYXRhYmFzZVBhdGgoKSkgewogICAgICAgICBzZXNz
aW9uLT5lbnN1cmVTV1NlcnZlcigpLmdldE9yaWdpbnNXaXRoUmVnaXN0cmF0aW9ucyhbY2FsbGJh
Y2tBZ2dyZWdhdG9yXShjb25zdCBIYXNoU2V0PFNlY3VyaXR5T3JpZ2luRGF0YT4mIHNlY3VyaXR5
T3JpZ2lucykgbXV0YWJsZSB7CkBAIC0xNTI1LDkgKzE1MTQsNiBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpkZWxldGVXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNl
dDxXZWJzaQogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlw
ZTo6RE9NQ2FjaGUpICYmIHNlc3Npb24pCiAgICAgICAgIENhY2hlU3RvcmFnZTo6RW5naW5lOjpj
bGVhckFsbENhY2hlcygqc2Vzc2lvbiwgW2NsZWFyVGFza3NIYW5kbGVyXSB7IH0pOwogCi0gICAg
aWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJE
YXRhYmFzZXMpICYmICFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSAmJiBzZXNzaW9uKQotICAgICAg
ICBzZXNzaW9uLT5lbnN1cmVXZWJJREJTZXJ2ZXIoKS5jbG9zZUFuZERlbGV0ZURhdGFiYXNlc01v
ZGlmaWVkU2luY2UobW9kaWZpZWRTaW5jZSwgW2NsZWFyVGFza3NIYW5kbGVyXSB7IH0pOwotCiAj
aWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGJvb2wgY2xlYXJTZXJ2aWNlV29ya2VycyA9
IHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSkgfHwg
d2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25zKTsKICAgICBpZiAoY2xlYXJTZXJ2aWNlV29ya2VycyAmJiAhc2Vzc2lvbklE
LmlzRXBoZW1lcmFsKCkgJiYgc2Vzc2lvbikKQEAgLTE2MjAsOSArMTYwNiw2IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIE9wdGlvCiAgICAgICAgICAgICBDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6Y2xlYXJD
YWNoZXNGb3JPcmlnaW4oKnNlc3Npb24sIFNlY3VyaXR5T3JpZ2luRGF0YSB7IG9yaWdpbkRhdGEg
fSwgW2NsZWFyVGFza3NIYW5kbGVyXSB7IH0pOwogICAgIH0KIAotICAgIGlmICh3ZWJzaXRlRGF0
YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKSAmJiAh
c2Vzc2lvbklELmlzRXBoZW1lcmFsKCkgJiYgc2Vzc2lvbikKLSAgICAgICAgc2Vzc2lvbi0+ZW5z
dXJlV2ViSURCU2VydmVyKCkuY2xvc2VBbmREZWxldGVEYXRhYmFzZXNGb3JPcmlnaW5zKG9yaWdp
bkRhdGFzLCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7Ci0KICNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCiAgICAgYm9vbCBjbGVhclNlcnZpY2VXb3JrZXJzID0gd2Vic2l0ZURhdGFUeXBlcy5j
b250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkRPTUNhY2hlKSB8fCB3ZWJzaXRlRGF0YVR5cGVzLmNv
bnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMpOwogICAg
IGlmIChjbGVhclNlcnZpY2VXb3JrZXJzICYmICFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSAmJiBz
ZXNzaW9uKSB7CkBAIC0xODExLDE3ICsxNzk0LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVs
ZXRlQW5kUmVzdHJpY3RXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhQQUw6OlNlc3MK
ICAgICAgICAgICAgIH0KICAgICAgICAgfSk7CiAgICAgfQotCi0gICAgaWYgKHdlYnNpdGVEYXRh
VHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpICYmIHNl
c3Npb24gJiYgc2Vzc2lvbi0+aGFzSURCRGF0YWJhc2VQYXRoKCkpIHsKLSAgICAgICAgc2Vzc2lv
bi0+ZW5zdXJlV2ViSURCU2VydmVyKCkuZ2V0T3JpZ2lucyhbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IFJlZiB7ICp0aGlzIH0sIHNlc3Npb25JRCwgY2FsbGJhY2tBZ2dyZWdhdG9yLCBkb21haW5zVG9E
ZWxldGVBbGxOb25Db29raWVXZWJzaXRlRGF0YUZvcl0oYXV0byYmIG9yaWdpbnMpIHsKLSAgICAg
ICAgICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOwotICAgICAg
ICAgICAgaWYgKCFzZXNzaW9uIHx8ICFzZXNzaW9uLT53ZWJJREJTZXJ2ZXIoKSkKLSAgICAgICAg
ICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIGF1dG8gb3JpZ2luc1RvRGVsZXRlID0gZmls
dGVyRm9yUmVnaXN0cmFibGVEb21haW5zKG9yaWdpbnMsIGRvbWFpbnNUb0RlbGV0ZUFsbE5vbkNv
b2tpZVdlYnNpdGVEYXRhRm9yLCBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fZG9tYWlucyk7Ci0gICAg
ICAgICAgICBzZXNzaW9uLT53ZWJJREJTZXJ2ZXIoKS0+Y2xvc2VBbmREZWxldGVEYXRhYmFzZXNG
b3JPcmlnaW5zKG9yaWdpbnNUb0RlbGV0ZSwgW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKLSAg
ICAgICAgfSk7Ci0gICAgfQogICAgIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBi
b29sIGNsZWFyU2VydmljZVdvcmtlcnMgPSB3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNp
dGVEYXRhVHlwZTo6RE9NQ2FjaGUpIHx8IHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0
ZURhdGFUeXBlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucyk7CkBAIC0xOTU4LDEzICsxOTMw
LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVnaXN0cmFibGVEb21haW5zV2l0aFdlYnNpdGVE
YXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwKICAgICAgICAgfSk7CiAgICAgfQogICAgIAot
ICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhl
ZERCRGF0YWJhc2VzKSAmJiBzZXNzaW9uICYmIHNlc3Npb24tPmhhc0lEQkRhdGFiYXNlUGF0aCgp
KSB7Ci0gICAgICAgIHNlc3Npb24tPmVuc3VyZVdlYklEQlNlcnZlcigpLmdldE9yaWdpbnMoW2Nh
bGxiYWNrQWdncmVnYXRvcl0oYXV0byYmIG9yaWdpbnMpIHsKLSAgICAgICAgICAgIHdoaWxlICgh
b3JpZ2lucy5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5t
X3dlYnNpdGVEYXRhLmVudHJpZXMuYXBwZW5kKHsgb3JpZ2lucy50YWtlQW55KCksIFdlYnNpdGVE
YXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzLCAwIH0pOwotICAgICAgICB9KTsKLSAgICB9Ci0g
ICAgCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVz
LmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMpICYm
IHNlc3Npb24gJiYgc2Vzc2lvbi0+aGFzU2VydmljZVdvcmtlckRhdGFiYXNlUGF0aCgpKSB7CiAg
ICAgICAgIHNlc3Npb24tPmVuc3VyZVNXU2VydmVyKCkuZ2V0T3JpZ2luc1dpdGhSZWdpc3RyYXRp
b25zKFtjYWxsYmFja0FnZ3JlZ2F0b3JdKGNvbnN0IEhhc2hTZXQ8U2VjdXJpdHlPcmlnaW5EYXRh
PiYgc2VjdXJpdHlPcmlnaW5zKSBtdXRhYmxlIHsKQEAgLTIxMjksNDMgKzIwOTQsMTAgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6cHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseUZvclRlc3RpbmdT
eW5jKENvbXBsZXRpb25IYW5kbGUKICAgICBwcmVwYXJlVG9TdXNwZW5kKHRydWUsIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6c3VzcGVuZElE
QlNlcnZlcnMoYm9vbCBpc1N1c3BlbnNpb25JbW1pbmVudCkKLXsKLSAgICBtX3Nob3VsZFN1c3Bl
bmRJREJTZXJ2ZXJzID0gdHJ1ZTsKLSAgICArK21fc3VzcGVuc2lvbklkZW50aWZpZXI7Ci0KLSAg
ICBib29sIGFsbFN1c3BlbmRlZCA9IHRydWU7Ci0gICAgYXV0byBjb25kaXRpb24gPSBpc1N1c3Bl
bnNpb25JbW1pbmVudCA/IFdlYklEQlNlcnZlcjo6U3VzcGVuc2lvbkNvbmRpdGlvbjo6QWx3YXlz
IDogV2ViSURCU2VydmVyOjpTdXNwZW5zaW9uQ29uZGl0aW9uOjpJZklkbGU7Ci0gICAgZm9yRWFj
aE5ldHdvcmtTZXNzaW9uKFsmXShhdXRvJiBzZXNzaW9uKSB7Ci0gICAgICAgIGlmIChhdXRvKiBz
ZXJ2ZXIgPSBzZXNzaW9uLndlYklEQlNlcnZlcigpKQotICAgICAgICAgICAgYWxsU3VzcGVuZGVk
ICY9IHNlcnZlci0+c3VzcGVuZChjb25kaXRpb24pOwotICAgIH0pOwotCi0gICAgaWYgKGFsbFN1
c3BlbmRlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNo
QWZ0ZXIoNV9zLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgc3VzcGVuc2lv
bklkZW50aWZpZXIgPSBtX3N1c3BlbnNpb25JZGVudGlmaWVyXSB7Ci0gICAgICAgIGlmICghd2Vh
a1RoaXMpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKCFtX3Nob3VsZFN1c3Bl
bmRJREJTZXJ2ZXJzIHx8IHN1c3BlbnNpb25JZGVudGlmaWVyICE9IG1fc3VzcGVuc2lvbklkZW50
aWZpZXIpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgZm9yRWFjaE5ldHdvcmtTZXNz
aW9uKFtdKGF1dG8mIHNlc3Npb24pIHsKLSAgICAgICAgICAgIGlmIChhdXRvKiBzZXJ2ZXIgPSBz
ZXNzaW9uLndlYklEQlNlcnZlcigpKQotICAgICAgICAgICAgICAgIHNlcnZlci0+c3VzcGVuZChX
ZWJJREJTZXJ2ZXI6OlN1c3BlbnNpb25Db25kaXRpb246OkFsd2F5cyk7Ci0gICAgICAgIH0pOwot
ICAgIH0pOwotfQotCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5kKGJvb2wg
aXNTdXNwZW5zaW9uSW1taW5lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0g
TmV0d29ya1Byb2Nlc3M6OnByZXBhcmVUb1N1c3BlbmQoKSwgaXNTdXNwZW5zaW9uSW1taW5lbnQ9
JWQiLCB0aGlzLCBpc1N1c3BlbnNpb25JbW1pbmVudCk7CiAKLSNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQotICAgIHN1c3BlbmRJREJTZXJ2ZXJzKGlzU3VzcGVuc2lvbkltbWluZW50KTsKLSNlbmRp
ZgotCiAgICAgbG93TWVtb3J5SGFuZGxlcihDcml0aWNhbDo6WWVzKTsKIAogICAgIFJlZlB0cjxD
YWxsYmFja0FnZ3JlZ2F0b3I+IGNhbGxiYWNrQWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRv
cjo6Y3JlYXRlKFt0aGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXSgpIG11dGFibGUgewpAQCAtMjIyMywxOCArMjE1NSwxMCBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpyZXN1bWUoKQogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICAgICAgaWYg
KGF1dG8qIHN3U2VydmVyID0gc2Vzc2lvbi5zd1NlcnZlcigpKQogICAgICAgICAgICAgc3dTZXJ2
ZXItPmVuZFN1c3BlbnNpb24oKTsKLSNlbmRpZgotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0g
ICAgICAgIGlmIChhdXRvKiBzZXJ2ZXIgPSBzZXNzaW9uLndlYklEQlNlcnZlcigpKQotICAgICAg
ICAgICAgc2VydmVyLT5yZXN1bWUoKTsKICNlbmRpZgogICAgICAgICBpZiAoYXV0byogbWFuYWdl
ciA9IHNlc3Npb24uc3RvcmFnZU1hbmFnZXIoKSkKICAgICAgICAgICAgIG1hbmFnZXItPnJlc3Vt
ZSgpOwogICAgIH0pOwotCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBtX3Nob3VsZFN1
c3BlbmRJREJTZXJ2ZXJzID0gZmFsc2U7Ci0jZW5kaWYKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vz
czo6cHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKQEAgLTIyODEsMTIgKzIyMDUs
MTUgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c3luY0xvY2FsU3RvcmFnZShDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmQKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVz
ZXRRdW90YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXNzaW9u
U3RvcmFnZVF1b3RhTWFuYWdlcnNMb2NrIH07Ci0gICAgaWYgKGF1dG8qIHNlc3Npb25TdG9yYWdl
UXVvdGFNYW5hZ2VyID0gbV9zZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlcnMuZ2V0KHNlc3Npb25J
RCkpIHsKLSAgICAgICAgZm9yIChhdXRvIHN0b3JhZ2VRdW90YU1hbmFnZXIgOiBzZXNzaW9uU3Rv
cmFnZVF1b3RhTWFuYWdlci0+ZXhpc3RpbmdTdG9yYWdlUXVvdGFNYW5hZ2VycygpKQotICAgICAg
ICAgICAgc3RvcmFnZVF1b3RhTWFuYWdlci0+cmVzZXRRdW90YUZvclRlc3RpbmcoKTsKLSAgICB9
Ci0gICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nl
c3Npb24oc2Vzc2lvbklEKTsKKyAgICBpZiAoIXNlc3Npb24pCisgICAgICAgIHJldHVybiBjb21w
bGV0aW9uSGFuZGxlcigpOworCisgICAgYXV0byogc3RvcmFnZU1hbmFnZXIgPSBzZXNzaW9uLT5z
dG9yYWdlTWFuYWdlcigpOworICAgIGlmICghc3RvcmFnZU1hbmFnZXIpCisgICAgICAgIHJldHVy
biBjb21wbGV0aW9uSGFuZGxlcigpOworCisgICAgc3RvcmFnZU1hbmFnZXItPnJlc2V0UXVvdGFG
b3JUZXN0aW5nKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6Y2xlYXJTdG9yYWdlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMjI5OCw2ICsyMjI1LDE2
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNsZWFyU3RvcmFnZShQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7
CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmRpZEluY3JlYXNlUXVvdGEoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbiwgUXVvdGFJbmNyZWFzZVJl
cXVlc3RJZGVudGlmaWVyIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IG5ld1F1
b3RhKQoreworICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOwor
ICAgIGlmICghc2Vzc2lvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGF1dG8qIG1hbmFn
ZXIgPSBzZXNzaW9uLT5zdG9yYWdlTWFuYWdlcigpKQorICAgICAgICBtYW5hZ2VyLT5kaWRJbmNy
ZWFzZVF1b3RhKG9yaWdpbiwgaWRlbnRpZmllciwgbmV3UXVvdGEpOworfQorCiB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpyZW5hbWVPcmlnaW5JbldlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgVVJMJiBvbGROYW1lLCBjb25zdCBVUkwmIG5ld05hbWUsIE9wdGlvblNldDxX
ZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8gYWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVn
YXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKQEAgLTIzMTAsOSArMjI0
Nyw2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlbmFtZU9yaWdpbkluV2Vic2l0ZURhdGEoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVCiAgICAgYXV0byogc2Vzc2lvbiA9IG5ldHdv
cmtTZXNzaW9uKHNlc3Npb25JRCk7CiAgICAgaWYgKGF1dG8qIG1hbmFnZXIgPSBzZXNzaW9uID8g
c2Vzc2lvbi0+c3RvcmFnZU1hbmFnZXIoKSA6IG51bGxwdHIpCiAgICAgICAgIG1hbmFnZXItPm1v
dmVEYXRhKG9sZE9yaWdpbiwgbmV3T3JpZ2luLCBbYWdncmVnYXRvcl0geyB9KTsKLQotICAgIGlm
IChkYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMp
ICYmIHNlc3Npb24gJiYgc2Vzc2lvbi0+aGFzSURCRGF0YWJhc2VQYXRoKCkpCi0gICAgICAgIHNl
c3Npb24tPmVuc3VyZVdlYklEQlNlcnZlcigpLnJlbmFtZU9yaWdpbihvbGRPcmlnaW4sIG5ld09y
aWdpbiwgW2FnZ3JlZ2F0b3JdIHsgfSk7CiB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CkBAIC0yMzcyLDcgKzIzMDYsOCBAQCBSZWZQdHI8U3RvcmFnZVF1b3RhTWFuYWdlcj4gTmV0d29y
a1Byb2Nlc3M6OnN0b3JhZ2VRdW90YU1hbmFnZXIoUEFMOjpTZXNzaW9uSUQgcwogICAgIFN0b3Jh
Z2VRdW90YU1hbmFnZXI6OlVzYWdlR2V0dGVyIHVzYWdlR2V0dGVyID0gW2NhY2hlUm9vdFBhdGgg
PSBzZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlci0+Y2FjaGVSb290UGF0aCgpLmlzb2xhdGVkQ29w
eSgpLCBpZGJSb290UGF0aCA9IGlkYlJvb3RQYXRoLmlzb2xhdGVkQ29weSgpLCBvcmlnaW4gPSBv
cmlnaW4uaXNvbGF0ZWRDb3B5KCldKCkgewogICAgICAgICBBU1NFUlQoIWlzTWFpblJ1bkxvb3Ao
KSk7CiAKLSAgICAgICAgcmV0dXJuIENhY2hlU3RvcmFnZTo6RW5naW5lOjpkaXNrVXNhZ2UoY2Fj
aGVSb290UGF0aCwgb3JpZ2luKSArIElEQlNlcnZlcjo6SURCU2VydmVyOjpkaXNrVXNhZ2UoaWRi
Um9vdFBhdGgsIG9yaWdpbik7CisgICAgICAgIGF1dG8gY2FjaGVTdG9yYWdlUGF0aCA9IENhY2hl
U3RvcmFnZTo6RW5naW5lOjpzdG9yYWdlUGF0aChjYWNoZVJvb3RQYXRoLCBvcmlnaW4pOworICAg
ICAgICByZXR1cm4gQ2FjaGVTdG9yYWdlOjpFbmdpbmU6OmRpc2tVc2FnZShjYWNoZVN0b3JhZ2VQ
YXRoKSArIElEQlNlcnZlcjo6SURCU2VydmVyOjpkaXNrVXNhZ2UoaWRiUm9vdFBhdGgsIG9yaWdp
bik7CiAgICAgfTsKICAgICBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpRdW90YUluY3JlYXNlUmVxdWVz
dGVyIHF1b3RhSW5jcmVhc2VSZXF1ZXN0ZXIgPSBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsg
KnRoaXMgfSwgc2Vzc2lvbklELCBvcmlnaW5dICh1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2
NF90IGN1cnJlbnRTcGFjZSwgdWludDY0X3QgcmVxdWVzdGVkSW5jcmVhc2UsIGF1dG8mJiBjYWxs
YmFjaykgewogICAgICAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgpKTsKQEAgLTI1ODYsOCArMjUy
MSw2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlbW92ZUtlcHRBbGl2ZUxvYWQoTmV0d29ya1Jl
c291cmNlTG9hZGVyJiBsb2FkZXIpCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjb25uZWN0aW9uVG9X
ZWJQcm9jZXNzQ2xvc2VkKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklEKQogewogICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24o
c2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byogc2VydmVyID0gc2Vzc2lvbi0+d2ViSURC
U2VydmVyKCkpCi0gICAgICAgICAgICBzZXJ2ZXItPnJlbW92ZUNvbm5lY3Rpb24oY29ubmVjdGlv
bik7CiAgICAgICAgIGlmIChhdXRvKiBtYW5hZ2VyID0gc2Vzc2lvbi0+c3RvcmFnZU1hbmFnZXIo
KSkKICAgICAgICAgICAgIG1hbmFnZXItPnN0b3BSZWNlaXZpbmdNZXNzYWdlRnJvbUNvbm5lY3Rp
b24oY29ubmVjdGlvbik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5oCmluZGV4IDc4Nzc5MjdhMTdjNTU5NmViMDNiZDRhY2Y0ZDU4ZTQxOGFj
OGJhMjMuLjBmODUzM2VkMTNkZDI2Mjc3YTZkZDUyYWI2ZGFiZTIwYzNlMDg4MDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTMzLDYgKzMz
LDcgQEAKICNpbmNsdWRlICJMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuaCIKICNpbmNsdWRl
ICJOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNv
dXJjZUxvYWRJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVu
dGlmaWVyLmgiCiAjaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyUHJveHkuaCIK
ICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5SWRl
bnRpZmllci5oIgpAQCAtMjg4LDEyICsyODksMTEgQEAgcHVibGljOgogICAgIE5ldHdvcmtDb250
ZW50UnVsZUxpc3RNYW5hZ2VyJiBuZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcigpIHsgcmV0
dXJuIG1fbmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXI7IH0KICNlbmRpZgogCi0gICAgYm9v
bCBzaG91bGRTdXNwZW5kSURCU2VydmVycygpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkU3VzcGVu
ZElEQlNlcnZlcnM7IH0KLQogICAgIHZvaWQgc3luY0xvY2FsU3RvcmFnZShDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwogCiAgICAgdm9pZCByZXNldFF1b3RhKFBBTDo6U2Vzc2lvbklELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgY2xlYXJTdG9yYWdlKFBBTDo6
U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgZGlkSW5j
cmVhc2VRdW90YShQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwg
UXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBu
ZXdRdW90YSk7CiAgICAgdm9pZCByZW5hbWVPcmlnaW5JbldlYnNpdGVEYXRhKFBBTDo6U2Vzc2lv
bklELCBjb25zdCBVUkwmLCBjb25zdCBVUkwmLCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CkBAIC00NzMsOCArNDczLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1l
QXNOb0FjY2Vzcyhjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICB2b2lkIHJlZ2lzdGVyVVJMU2No
ZW1lQXNDT1JTRW5hYmxlZChjb25zdCBTdHJpbmcmKSBjb25zdDsKIAotICAgIHZvaWQgc3VzcGVu
ZElEQlNlcnZlcnMoYm9vbCBpc1N1c3BlbnNpb25JbW1pbmVudCk7Ci0KICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIHZvaWQgc2V0SXNIb2xkaW5nTG9ja2VkRmlsZXMoYm9vbCk7CiAjZW5k
aWYKQEAgLTQ4Miw2ICs0ODAsNyBAQCBwcml2YXRlOgogICAgIGNsYXNzIFNlc3Npb25TdG9yYWdl
UXVvdGFNYW5hZ2VyIHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVi
bGljOgorICAgICAgICBTZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlcigpID0gZGVsZXRlOwogICAg
ICAgICBTZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlcihjb25zdCBTdHJpbmcmIGNhY2hlUm9vdFBh
dGgsIHVpbnQ2NF90IGRlZmF1bHRRdW90YSwgdWludDY0X3QgZGVmYXVsdFRoaXJkUGFydHlRdW90
YSkKICAgICAgICAgICAgIDogbV9jYWNoZVJvb3RQYXRoKGNhY2hlUm9vdFBhdGgpCiAgICAgICAg
ICAgICAsIG1fZGVmYXVsdFF1b3RhKGRlZmF1bHRRdW90YSkKQEAgLTUwOCw4ICs1MDcsOCBAQCBw
cml2YXRlOgogICAgIHByaXZhdGU6CiAgICAgICAgIFN0cmluZyBtX2NhY2hlUm9vdFBhdGg7CiAg
ICAgICAgIFN0cmluZyBtX2lkYlJvb3RQYXRoOwotICAgICAgICB1aW50NjRfdCBtX2RlZmF1bHRR
dW90YSB7IFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6OmRlZmF1bHRRdW90YSgpIH07Ci0g
ICAgICAgIHVpbnQ2NF90IG1fZGVmYXVsdFRoaXJkUGFydHlRdW90YSB7IFdlYkNvcmU6OlN0b3Jh
Z2VRdW90YU1hbmFnZXI6OmRlZmF1bHRUaGlyZFBhcnR5UXVvdGEoKSB9OworICAgICAgICB1aW50
NjRfdCBtX2RlZmF1bHRRdW90YTsKKyAgICAgICAgdWludDY0X3QgbV9kZWZhdWx0VGhpcmRQYXJ0
eVF1b3RhOwogICAgICAgICBIYXNoTWFwPFdlYkNvcmU6OkNsaWVudE9yaWdpbiwgUmVmUHRyPFdl
YkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI+PiBtX3N0b3JhZ2VRdW90YU1hbmFnZXJzOwogICAg
IH07CiAgICAgdm9pZCBhZGRTZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlcihQQUw6OlNlc3Npb25J
RCwgdWludDY0X3QgZGVmYXVsdFF1b3RhLCB1aW50NjRfdCBkZWZhdWx0VGhpcmRQYXJ0eVF1b3Rh
LCBjb25zdCBTdHJpbmcmIGNhY2hlUm9vdFBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYp
OwpAQCAtNTQ5LDkgKzU0OCw2IEBAIHByaXZhdGU6CiAgICAgV2ViU1FMaXRlRGF0YWJhc2VUcmFj
a2VyIG1fd2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyOwogICAgIFJlZlB0cjxQcm9jZXNzQXNzZXJ0
aW9uPiBtX2hvbGRpbmdMb2NrZWRGaWxlQXNzZXJ0aW9uOwogI2VuZGlmCi0KLSAgICBib29sIG1f
c2hvdWxkU3VzcGVuZElEQlNlcnZlcnMgeyBmYWxzZSB9OwotICAgIHVpbnQ2NF90IG1fc3VzcGVu
c2lvbklkZW50aWZpZXIgeyAwIH07CiAgICAgCiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAgICAgUmVm
UHRyPFJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlclByb3h5PiBtX3J0Y0RhdGFDaGFubmVsUHJv
eHk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5tZXNzYWdlcy5pbgppbmRleCA2MzdlMTU5ZjE4NjM5M2JlYzVjYzA1YWI1YmQ1NzgwYmU4
YzZmY2U0Li42MzFlMmI2MDczYzAxOTIxMzA2OGMyMDk2YjgyN2IyNzlkYmM3ZGUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVz
c2FnZXMuaW4KQEAgLTE3OSw2ICsxNzksNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBM
ZWdhY3lSZWNlaXZlciB7CiAKICAgICBSZXNldFF1b3RhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCkgLT4gKCkgQXN5bmMKICAgICBDbGVhclN0b3JhZ2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
KSAtPiAoKSBBc3luYworICAgIERpZEluY3JlYXNlUXVvdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBzdHJ1Y3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbiwgV2ViS2l0OjpRdW90YUlu
Y3JlYXNlUmVxdWVzdElkZW50aWZpZXIgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gbmV3UXVvdGEpCiAgICAgCiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIEhh
c0FwcEJvdW5kU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+IChib29sIGhhc0Fw
cEJvdW5kU2Vzc2lvbikgQXN5bmMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU2Vzc2lvbi5jcHAKaW5kZXggZTJiMjRkODMyMmI2ZWMxYzM3NzAxZGNhZDQ5NzUzNGNl
ZjIzMWEyNi4uOWM0YmUyYjYxODk0NzRjY2YyNGJlNzBiMTEyNzI5MThmYzAyYjNlMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKQEAgLTIw
NCw4ICsyMDQsNiBAQCB2b2lkIE5ldHdvcmtTZXNzaW9uOjppbnZhbGlkYXRlQW5kQ2FuY2VsKCkK
ICAgICBpZiAobV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKQogICAgICAgICBtX3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3MtPmludmFsaWRhdGVBbmRDYW5jZWwoKTsKICNlbmRpZgotICAgIGlmIChhdXRv
IHNlcnZlciA9IHN0ZDo6ZXhjaGFuZ2UobV93ZWJJREJTZXJ2ZXIsIG51bGxwdHIpKQotICAgICAg
ICBzZXJ2ZXItPmNsb3NlKCk7CiAgICAgaWYgKGF1dG8gbWFuYWdlciA9IHN0ZDo6ZXhjaGFuZ2Uo
bV9zdG9yYWdlTWFuYWdlciwgbnVsbHB0cikpCiAgICAgICAgIG1hbmFnZXItPmNsb3NlKCk7CiAg
ICAgbV9jYWNoZUVuZ2luZSA9IG51bGxwdHI7CkBAIC02NTMsNTUgKzY1MSwxOCBAQCBib29sIE5l
dHdvcmtTZXNzaW9uOjpoYXNTZXJ2aWNlV29ya2VyRGF0YWJhc2VQYXRoKCkgY29uc3QKIAogI2Vu
ZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAotV2ViSURCU2VydmVyJiBOZXR3b3JrU2Vz
c2lvbjo6ZW5zdXJlV2ViSURCU2VydmVyKCkKLXsKLSAgICBpZiAoIW1fd2ViSURCU2VydmVyKSB7
Ci0gICAgICAgIFN0cmluZyBwYXRoOwotICAgICAgICBpZiAoIXNlc3Npb25JRCgpLmlzRXBoZW1l
cmFsKCkpIHsKLSAgICAgICAgICAgIEFTU0VSVCghbV9pZGJEYXRhYmFzZVBhdGguaXNOdWxsKCkp
OwotICAgICAgICAgICAgcGF0aCA9IG1faWRiRGF0YWJhc2VQYXRoOwotICAgICAgICB9Ci0KLSAg
ICAgICAgYXV0byBzcGFjZVJlcXVlc3RlciA9IFtuZXR3b3JrUHJvY2VzcyA9IFJlZiB7IG5ldHdv
cmtQcm9jZXNzKCkgfSwgc2Vzc2lvbklEID0gc2Vzc2lvbklEKCldKGNvbnN0IGF1dG8mIG9yaWdp
biwgdWludDY0X3Qgc3BhY2VSZXF1ZXN0ZWQpIHsKLSAgICAgICAgICAgIHJldHVybiBuZXR3b3Jr
UHJvY2Vzcy0+c3RvcmFnZVF1b3RhTWFuYWdlcihzZXNzaW9uSUQsIG9yaWdpbiktPnJlcXVlc3RT
cGFjZU9uQmFja2dyb3VuZFRocmVhZChzcGFjZVJlcXVlc3RlZCk7Ci0gICAgICAgIH07Ci0KLSAg
ICAgICAgbV93ZWJJREJTZXJ2ZXIgPSBXZWJJREJTZXJ2ZXI6OmNyZWF0ZShzZXNzaW9uSUQoKSwg
cGF0aCwgV1RGTW92ZShzcGFjZVJlcXVlc3RlcikpOwotICAgICAgICBpZiAobmV0d29ya1Byb2Nl
c3MoKS5zaG91bGRTdXNwZW5kSURCU2VydmVycygpKQotICAgICAgICAgICAgbV93ZWJJREJTZXJ2
ZXItPnN1c3BlbmQoV2ViSURCU2VydmVyOjpTdXNwZW5zaW9uQ29uZGl0aW9uOjpBbHdheXMpOwot
ICAgIH0KLSAgICByZXR1cm4gKm1fd2ViSURCU2VydmVyOwotfQotCi12b2lkIE5ldHdvcmtTZXNz
aW9uOjpjbG9zZUlEQlNlcnZlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCi17Ci0gICAgaWYgKCFtX3dlYklEQlNlcnZlcikKLSAgICAgICAgcmV0dXJuIGNv
bXBsZXRpb25IYW5kbGVyKCk7Ci0KLSAgICBzdGQ6OmV4Y2hhbmdlKG1fd2ViSURCU2VydmVyLCBu
dWxscHRyKS0+Y2xvc2UoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotfQotCi12b2lkIE5l
dHdvcmtTZXNzaW9uOjphZGRJbmRleGVkRGF0YWJhc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYgaW5k
ZXhlZERhdGFiYXNlRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIGhhbmRsZSkK
LXsKLSAgICAvLyAqKioqKioqKioKLSAgICAvLyBJTVBPUlRBTlQ6IERvIG5vdCBjaGFuZ2UgdGhl
IGRpcmVjdG9yeSBzdHJ1Y3R1cmUgZm9yIGluZGV4ZWQgZGF0YWJhc2VzIG9uIGRpc2sgd2l0aG91
dCBmaXJzdCBjb25zdWx0aW5nIGEgcmV2aWV3ZXIgZnJvbSBBcHBsZSAoPHJkYXI6Ly9wcm9ibGVt
LzE3NDU0NzEyPikKLSAgICAvLyAqKioqKioqKioKLSAgICBhdXRvIGlzTmV3ID0gbV9pZGJEYXRh
YmFzZVBhdGguaXNOdWxsKCk7Ci0gICAgbV9pZGJEYXRhYmFzZVBhdGggPSBpbmRleGVkRGF0YWJh
c2VEaXJlY3Rvcnk7Ci0gICAgaWYgKGlzTmV3KSB7Ci0gICAgICAgIFNhbmRib3hFeHRlbnNpb246
OmNvbnN1bWVQZXJtYW5lbnRseShoYW5kbGUpOwotICAgICAgICBuZXR3b3JrUHJvY2VzcygpLnNl
dFNlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2VySURCUm9vdFBhdGgoc2Vzc2lvbklEKCksIGluZGV4
ZWREYXRhYmFzZURpcmVjdG9yeSk7Ci0gICAgfQotfQotCi12b2lkIE5ldHdvcmtTZXNzaW9uOjph
ZGRTdG9yYWdlTWFuYWdlclNlc3Npb24oY29uc3QgU3RyaW5nJiBnZW5lcmFsU3RvcmFnZVBhdGgs
IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgZ2VuZXJhbFN0b3JhZ2VQYXRoSGFuZGxlLCBjb25z
dCBTdHJpbmcmIGxvY2FsU3RvcmFnZVBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgbG9j
YWxTdG9yYWdlUGF0aEhhbmRsZSkKK3ZvaWQgTmV0d29ya1Nlc3Npb246OmFkZFN0b3JhZ2VNYW5h
Z2VyU2Vzc2lvbihjb25zdCBTdHJpbmcmIGdlbmVyYWxTdG9yYWdlUGF0aCwgU2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlJiBnZW5lcmFsU3RvcmFnZVBhdGhIYW5kbGUsIGNvbnN0IFN0cmluZyYgbG9j
YWxTdG9yYWdlUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBsb2NhbFN0b3JhZ2VQYXRo
SGFuZGxlLCBjb25zdCBTdHJpbmcmIGlkYlN0b3JhZ2VQYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGUmIGlkYlN0b3JhZ2VQYXRoSGFuZGxlLCBjb25zdCBTdHJpbmcmIGNhY2hlU3RvcmFnZVBh
dGgsIHVpbnQ2NF90IGRlZmF1bHRPcmlnaW5RdW90YSwgdWludDY0X3QgZGVmYXVsdFRoaXJkUGFy
dHlRdW90YSkKIHsKICAgICBpZiAobV9zdG9yYWdlTWFuYWdlcikKICAgICAgICAgcmV0dXJuOwog
CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KGdlbmVyYWxTdG9yYWdl
UGF0aEhhbmRsZSk7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KGxv
Y2FsU3RvcmFnZVBhdGhIYW5kbGUpOwotICAgIG1fc3RvcmFnZU1hbmFnZXIgPSBOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6OmNyZWF0ZShzZXNzaW9uSUQoKSwgZ2VuZXJhbFN0b3JhZ2VQYXRoLCBsb2Nh
bFN0b3JhZ2VQYXRoKTsKKyAgICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHko
aWRiU3RvcmFnZVBhdGhIYW5kbGUpOworICAgIElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgY29u
bmVjdGlvbklEOworICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gbmV0d29ya1Byb2Nlc3MoKS5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpKQorICAgICAgICBjb25uZWN0aW9uSUQgPSBjb25uZWN0
aW9uLT51bmlxdWVJRCgpOworICAgIG1fc3RvcmFnZU1hbmFnZXIgPSBOZXR3b3JrU3RvcmFnZU1h
bmFnZXI6OmNyZWF0ZShzZXNzaW9uSUQoKSwgY29ubmVjdGlvbklELCBnZW5lcmFsU3RvcmFnZVBh
dGgsIGxvY2FsU3RvcmFnZVBhdGgsIGlkYlN0b3JhZ2VQYXRoLCBjYWNoZVN0b3JhZ2VQYXRoLCBk
ZWZhdWx0T3JpZ2luUXVvdGEsIGRlZmF1bHRUaGlyZFBhcnR5UXVvdGEpOwogfQogCiB2b2lkIE5l
dHdvcmtTZXNzaW9uOjplbnN1cmVDYWNoZUVuZ2luZShGdW5jdGlvbjx2b2lkKENhY2hlU3RvcmFn
ZTo6RW5naW5lJik+JiYgY2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtTZXNzaW9uLmgKaW5kZXggMTkzMDdjZjQwYmUzYjJmMjYwNTdkMDE2Yzc2NmVkY2U0
OThjOTU0Mi4uYmFhMTIyNDVjZjIyNjRkOTIxNTdkZGU0NzFkMmU0YjEwMmJjMjk3ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaApAQCAtMjEwLDE0
ICsyMTAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRTZXJ2aWNlV29ya2VyU2Vzc2lvbihib29s
IHByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCwgU3RyaW5nJiYgc2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbkRpcmVjdG9yeSwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJik7CiAj
ZW5kaWYKIAotICAgIFdlYklEQlNlcnZlciogd2ViSURCU2VydmVyKCkgeyByZXR1cm4gbV93ZWJJ
REJTZXJ2ZXIuZ2V0KCk7IH0KLSAgICBXZWJJREJTZXJ2ZXImIGVuc3VyZVdlYklEQlNlcnZlcigp
OwotICAgIHZvaWQgY2xvc2VJREJTZXJ2ZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
LSAgICB2b2lkIGFkZEluZGV4ZWREYXRhYmFzZVNlc3Npb24oY29uc3QgU3RyaW5nJiBpbmRleGVk
RGF0YWJhc2VEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYpOwotICAgIGJvb2wg
aGFzSURCRGF0YWJhc2VQYXRoKCkgY29uc3QgeyByZXR1cm4gIW1faWRiRGF0YWJhc2VQYXRoLmlz
RW1wdHkoKTsgfQotCiAgICAgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyKiBzdG9yYWdlTWFuYWdlcigp
IHsgcmV0dXJuIG1fc3RvcmFnZU1hbmFnZXIuZ2V0KCk7IH0KLSAgICB2b2lkIGFkZFN0b3JhZ2VN
YW5hZ2VyU2Vzc2lvbihjb25zdCBTdHJpbmcmIGdlbmVyYWxTdG9yYWdlUGF0aCwgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlJiBnZW5lcmFsU3RvcmFnZVBhdGhIYW5kbGUsIGNvbnN0IFN0cmluZyYg
bG9jYWxTdG9yYWdlUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBsb2NhbFN0b3JhZ2VQ
YXRoSGFuZGxlKTsKKyAgICB2b2lkIGFkZFN0b3JhZ2VNYW5hZ2VyU2Vzc2lvbihjb25zdCBTdHJp
bmcmIGdlbmVyYWxTdG9yYWdlUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBnZW5lcmFs
U3RvcmFnZVBhdGhIYW5kbGUsIGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlUGF0aCwgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlJiBsb2NhbFN0b3JhZ2VQYXRoSGFuZGxlLCBjb25zdCBTdHJpbmcm
IGlkYlN0b3JhZ2VQYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIGlkYlN0b3JhZ2VQYXRo
SGFuZGxlLCBjb25zdCBTdHJpbmcmIGNhY2hlU3RvcmFnZVBhdGgsIHVpbnQ2NF90IGRlZmF1bHRP
cmlnaW5RdW90YSwgdWludDY0X3QgZGVmYXVsdFRoaXJkUGFydHlRdW90YSk7CiAKICAgICBDYWNo
ZVN0b3JhZ2U6OkVuZ2luZSogY2FjaGVFbmdpbmUoKSB7IHJldHVybiBtX2NhY2hlRW5naW5lLmdl
dCgpOyB9CiAgICAgdm9pZCBlbnN1cmVDYWNoZUVuZ2luZShGdW5jdGlvbjx2b2lkKENhY2hlU3Rv
cmFnZTo6RW5naW5lJik+JiYpOwpAQCAtMzE5LDkgKzMxMyw2IEBAIHByb3RlY3RlZDoKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1dTZXJ2ZXI+IG1fc3dTZXJ2ZXI7CiAjZW5kaWYKIAot
ICAgIFN0cmluZyBtX2lkYkRhdGFiYXNlUGF0aDsKLSAgICBSZWZQdHI8V2ViSURCU2VydmVyPiBt
X3dlYklEQlNlcnZlcjsKLQogICAgIFJlZlB0cjxOZXR3b3JrU3RvcmFnZU1hbmFnZXI+IG1fc3Rv
cmFnZU1hbmFnZXI7CiAgICAgUmVmUHRyPENhY2hlU3RvcmFnZTo6RW5naW5lPiBtX2NhY2hlRW5n
aW5lOwogICAgIFZlY3RvcjxGdW5jdGlvbjx2b2lkKENhY2hlU3RvcmFnZTo6RW5naW5lJik+PiBt
X2NhY2hlU3RvcmFnZVBhcmFtZXRlcnNDYWxsYmFja3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKaW5kZXgg
YzIwMGNlOGI1ZWI0YzNhMDM2NTdlODIyNjg5OTAyYjQ2ZGJmOGFiMC4uYzUxYzIyNDkzMTc4MjQx
OWU3MTNlYjYyNThmMGNmOWZhZjE5OWI4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcApAQCAtMzEsNiAr
MzEsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtDYWNoZUlPQ2hhbm5lbC5oIgogI2luY2x1ZGUgIk5l
dHdvcmtQcm9jZXNzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Nlc3Npb24uaCIKKyNpbmNsdWRlICJO
ZXR3b3JrU3RvcmFnZU1hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVR5cGUuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL0NhY2hlUXVlcnlPcHRpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9S
ZXRyaWV2ZVJlY29yZHNPcHRpb25zLmg+CkBAIC0yMDMsNDAgKzIwNCw1MiBAQCBzdGF0aWMgdWlu
dDY0X3QgZ2V0RGlyZWN0b3J5U2l6ZShjb25zdCBTdHJpbmcmIGRpcmVjdG9yeVBhdGgpCiAgICAg
cmV0dXJuIGRpcmVjdG9yeVNpemU7CiB9CiAKLXVpbnQ2NF90IEVuZ2luZTo6ZGlza1VzYWdlKGNv
bnN0IFN0cmluZyYgcm9vdFBhdGgsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2lu
KQorU3RyaW5nIEVuZ2luZTo6c3RvcmFnZVBhdGgoY29uc3QgU3RyaW5nJiByb290RGlyZWN0b3J5
LCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbikKIHsKICAgICBBU1NFUlQoIWlz
TWFpblJ1bkxvb3AoKSk7CisgICAgCisgICAgaWYgKHJvb3REaXJlY3RvcnkuaXNFbXB0eSgpKQor
ICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAotICAgIGlmIChyb290UGF0aC5pc0VtcHR5
KCkpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgU3RyaW5nIHNhbHRQYXRoID0gRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJvb3RQYXRoLCAic2FsdCJfcyk7CisgICAgU3Ry
aW5nIHNhbHRQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJvb3RE
aXJlY3RvcnksICJzYWx0Il9zKTsKICAgICBhdXRvIHNhbHQgPSBGaWxlU3lzdGVtOjpyZWFkT3JN
YWtlU2FsdChzYWx0UGF0aCk7CiAgICAgaWYgKCFzYWx0KQotICAgICAgICByZXR1cm4gMDsKKyAg
ICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKICAgICBLZXkga2V5KG9yaWdpbi50b3BPcmln
aW4udG9TdHJpbmcoKSwgb3JpZ2luLmNsaWVudE9yaWdpbi50b1N0cmluZygpLCB7IH0sIHsgfSwg
KnNhbHQpOwotICAgIFN0cmluZyBkaXJlY3RvcnlQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KHJvb3RQYXRoLCBrZXkuaGFzaEFzU3RyaW5nKCkpOworICAgIHJldHVy
biBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocm9vdERpcmVjdG9yeSwga2V5
Lmhhc2hBc1N0cmluZygpKTsKK30KKwordWludDY0X3QgRW5naW5lOjpkaXNrVXNhZ2UoY29uc3Qg
U3RyaW5nJiBvcmlnaW5EaXJlY3RvcnkpCit7CisgICAgQVNTRVJUKCFpc01haW5SdW5Mb29wKCkp
OwogCi0gICAgU3RyaW5nIHNpemVGaWxlUGF0aCA9IENhY2hlczo6Y2FjaGVzU2l6ZUZpbGVuYW1l
KGRpcmVjdG9yeVBhdGgpOworICAgIGlmIChvcmlnaW5EaXJlY3RvcnkuaXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm4gMDsKKworICAgIFN0cmluZyBzaXplRmlsZVBhdGggPSBDYWNoZXM6OmNhY2hl
c1NpemVGaWxlbmFtZShvcmlnaW5EaXJlY3RvcnkpOwogICAgIGlmIChhdXRvIHJlY29yZGVkU2l6
ZSA9IHJlYWRTaXplRmlsZShzaXplRmlsZVBhdGgpKQogICAgICAgICByZXR1cm4gKnJlY29yZGVk
U2l6ZTsKIAotICAgIHJldHVybiBnZXREaXJlY3RvcnlTaXplKGRpcmVjdG9yeVBhdGgpOworICAg
IHJldHVybiBnZXREaXJlY3RvcnlTaXplKG9yaWdpbkRpcmVjdG9yeSk7CiB9CiAKLXZvaWQgRW5n
aW5lOjpyZXF1ZXN0U3BhY2UoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIHVp
bnQ2NF90IHNwYWNlUmVxdWVzdGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0
b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uKT4mJiBjYWxsYmFjaykKK3ZvaWQgRW5naW5lOjpy
ZXF1ZXN0U3BhY2UoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIHVpbnQ2NF90
IHNwYWNlUmVxdWVzdGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNr
KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICBpZiAoIW1fbmV0d29ya1By
b2Nlc3MpCi0gICAgICAgIGNhbGxiYWNrKFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6OkRl
Y2lzaW9uOjpEZW55KTsKKyAgICAgICAgY2FsbGJhY2soZmFsc2UpOworCisgICAgYXV0byogc2Vz
c2lvbiA9IG1fbmV0d29ya1Byb2Nlc3MtPm5ldHdvcmtTZXNzaW9uKG1fc2Vzc2lvbklEKTsKKyAg
ICBpZiAoIXNlc3Npb24pCisgICAgICAgIGNhbGxiYWNrKGZhbHNlKTsKIAotICAgIFJlZlB0cjxX
ZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2VyPiBzdG9yYWdlUXVvdGFNYW5hZ2VyID0gbV9uZXR3
b3JrUHJvY2Vzcy0+c3RvcmFnZVF1b3RhTWFuYWdlcihtX3Nlc3Npb25JRCwgb3JpZ2luKTsKLSAg
ICBpZiAoIXN0b3JhZ2VRdW90YU1hbmFnZXIpCi0gICAgICAgIGNhbGxiYWNrKFdlYkNvcmU6OlN0
b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uOjpEZW55KTsKKyAgICBhdXRvKiBzdG9yYWdlTWFu
YWdlciA9IHNlc3Npb24tPnN0b3JhZ2VNYW5hZ2VyKCk7CisgICAgaWYgKCFzdG9yYWdlTWFuYWdl
cikKKyAgICAgICAgY2FsbGJhY2soZmFsc2UpOwogCi0gICAgc3RvcmFnZVF1b3RhTWFuYWdlci0+
cmVxdWVzdFNwYWNlT25NYWluVGhyZWFkKHNwYWNlUmVxdWVzdGVkLCBXVEZNb3ZlKGNhbGxiYWNr
KSk7CisgICAgc3RvcmFnZU1hbmFnZXItPnJlcXVlc3RTcGFjZShvcmlnaW4sIHNwYWNlUmVxdWVz
dGVkLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKIEVuZ2luZTo6RW5naW5lKE5ldHdvcmtTZXNz
aW9uJiBuZXR3b3JrU2Vzc2lvbiwgU3RyaW5nJiYgcm9vdFBhdGgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaAppbmRl
eCAxNDdmYmFjZTE2NzdhNjA4NTkxOGFiNzcyYTllMTBhMjA2YzY4ODFlLi5mZTNjMWY5MzBkYWUz
OTk4Y2QxYzA0YzM0ZGJkZGM1MzU1NWE0NzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmgKQEAgLTI5LDcgKzI5
LDYgQEAKICNpbmNsdWRlICJOZXR3b3JrQ2FjaGVEYXRhLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURh
dGEuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NsaWVudE9yaWdpbi5oPgotI2luY2x1ZGUgPFdlYkNv
cmUvU3RvcmFnZVF1b3RhTWFuYWdlci5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC04
NCw4ICs4Myw5IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVRdW90YVVz
ZXIoTmV0d29ya1Nlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCi0gICAgc3RhdGljIHVpbnQ2NF90IGRpc2tVc2FnZShj
b25zdCBTdHJpbmcmIHJvb3RQYXRoLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKLSAg
ICB2b2lkIHJlcXVlc3RTcGFjZShjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCB1aW50NjRf
dCBzcGFjZVJlcXVlc3RlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdl
UXVvdGFNYW5hZ2VyOjpEZWNpc2lvbik+JiYpOworICAgIHN0YXRpYyBTdHJpbmcgc3RvcmFnZVBh
dGgoY29uc3QgU3RyaW5nJiByb290RGlyZWN0b3J5LCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmln
aW4mKTsKKyAgICBzdGF0aWMgdWludDY0X3QgZGlza1VzYWdlKGNvbnN0IFN0cmluZyYgb3JpZ2lu
RGlyZWN0b3J5KTsKKyAgICB2b2lkIHJlcXVlc3RTcGFjZShjb25zdCBXZWJDb3JlOjpDbGllbnRP
cmlnaW4mLCB1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJik7CiAKICAgICBib29sIHNob3VsZFBlcnNpc3QoKSBjb25zdCB7IHJldHVybiAhIW1f
aW9RdWV1ZTt9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcAppbmRleCAwNGVkZWNlMWM0
YmZlOWVhY2FlMDZhNzA3YzVkZGZmZTAwZTgxMzhlLi5jMzBjM2JlN2M1YzU1M2JmMjMyOGQ5NTFi
Nzc0NDQ0MTNiMzJkNmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwCkBAIC01MjQs
MTQgKzUyNCwxMCBAQCB2b2lkIENhY2hlczo6cmVxdWVzdFNwYWNlKHVpbnQ2NF90IHNwYWNlUmVx
dWlyZWQsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDb21wbAogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgbV9lbmdpbmUtPnJlcXVlc3RTcGFjZShtX29yaWdpbiwgc3BhY2VSZXF1aXJl
ZCwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8gZGVjaXNpb24pIG11dGFibGUg
ewotICAgICAgICBzd2l0Y2ggKGRlY2lzaW9uKSB7Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6U3Rv
cmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb246OkRlbnk6Ci0gICAgICAgICAgICBjYWxsYmFjayhF
cnJvcjo6UXVvdGFFeGNlZWRlZCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGNhc2Ug
V2ViQ29yZTo6U3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb246OkdyYW50OgotICAgICAgICAg
ICAgY2FsbGJhY2soeyB9KTsKLSAgICAgICAgfTsKKyAgICBtX2VuZ2luZS0+cmVxdWVzdFNwYWNl
KG1fb3JpZ2luLCBzcGFjZVJlcXVpcmVkLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0o
Ym9vbCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCFncmFudGVkKQorICAgICAgICAg
ICAgcmV0dXJuIGNhbGxiYWNrKEVycm9yOjpRdW90YUV4Y2VlZGVkKTsKKyAgICAgICAgY2FsbGJh
Y2soeyB9KTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9pb3MvTmV0d29ya1Byb2Nlc3NJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lPUy5tbQppbmRleCBhODdhZDgwNWI1ZGYxNTA3ODNi
NTM5MWU4ZTAzZjk4ZTc2NGRmM2Q1Li4yMTk2ZTllNzRkMjQ1MzFjMGRiNWIzOTQ1YWM2MDhmZTNl
OThjNzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3
b3JrUHJvY2Vzc0lPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9O
ZXR3b3JrUHJvY2Vzc0lPUy5tbQpAQCAtMTA5LDE5ICsxMDksNiBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpzZXRJc0hvbGRpbmdMb2NrZWRGaWxlcyhib29sIGlzSG9sZGluZ0xvY2tlZEZpbGVzKQog
ICAgIC8vIFdlIHN5bmNocm9ub3VzbHkgdGFrZSBhIHByb2Nlc3MgYXNzZXJ0aW9uIHdoZW4gYmVn
aW5uaW5nIGEgU1FMaXRlIHRyYW5zYWN0aW9uIHNvIHRoYXQgd2UgZG9uJ3QgZ2V0IHN1c3BlbmRl
ZAogICAgIC8vIHdoaWxlIGhvbGRpbmcgYSBsb2NrZWQgZmlsZS4gV2Ugd291bGQgZ2V0IGtpbGxl
ZCBpZiBzdXNwZW5kZWQgd2hpbGUgaG9sZGluZyBsb2NrZWQgZmlsZXMuCiAgICAgbV9ob2xkaW5n
TG9ja2VkRmlsZUFzc2VydGlvbiA9IFByb2Nlc3NBc3NlcnRpb246OmNyZWF0ZShnZXRDdXJyZW50
UHJvY2Vzc0lEKCksICJOZXR3b3JrIFByb2Nlc3MgaXMgaG9sZGluZyBsb2NrZWQgZmlsZXMiX3Ms
IFByb2Nlc3NBc3NlcnRpb25UeXBlOjpGaW5pc2hUYXNrSW50ZXJydXB0YWJsZSwgUHJvY2Vzc0Fz
c2VydGlvbjo6TW9kZTo6U3luYyk7Ci0gICAgbV9ob2xkaW5nTG9ja2VkRmlsZUFzc2VydGlvbi0+
c2V0UHJlcGFyZUZvckludmFsaWRhdGlvbkhhbmRsZXIoW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0
ciB7ICp0aGlzIH1dKCkgbXV0YWJsZSB7Ci0gICAgICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkp
OwotICAgICAgICBpZiAoIXdlYWtUaGlzKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAg
IGlmICghbV9zaG91bGRTdXNwZW5kSURCU2VydmVycykKLSAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oW10oYXV0byYgc2Vzc2lvbikgewotICAgICAg
ICAgICAgaWYgKGF1dG8qIHNlcnZlciA9IHNlc3Npb24ud2ViSURCU2VydmVyKCkpCi0gICAgICAg
ICAgICAgICAgc2VydmVyLT5zdXNwZW5kKCk7Ci0gICAgICAgIH0pOwotICAgIH0pOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44YWY0YzY0NjQzNmI5NmUxNGU4N2IzY2UyYjYxMWRiMDQyODc5MDVm
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdl
L0lEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQuY3BwCkBAIC0wLDAgKzEsMTkxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSURCU3RvcmFnZUNv
bm5lY3Rpb25Ub0NsaWVudC5oIgorCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgi
CisjaW5jbHVkZSAiV2ViSURCQ29ubmVjdGlvblRvU2VydmVyTWVzc2FnZXMuaCIKKyNpbmNsdWRl
ICJXZWJJREJSZXN1bHQuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0lEQlJlcXVlc3REYXRhLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9JREJSZXN1bHREYXRhLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Vbmlx
dWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK0lEQlN0
b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQoSVBD
OjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uLCBXZWJDb3JlOjpJREJDb25uZWN0aW9u
SWRlbnRpZmllciBpZGVudGlmaWVyKQorICAgIDogbV9jb25uZWN0aW9uKGNvbm5lY3Rpb24pCisg
ICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKKyAgICAsIG1fY29ubmVjdGlvblRvQ2xpZW50
KFdlYkNvcmU6OklEQlNlcnZlcjo6SURCQ29ubmVjdGlvblRvQ2xpZW50OjpjcmVhdGUoKnRoaXMp
KQoreworfQorCitJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50Ojp+SURCU3RvcmFnZUNvbm5l
Y3Rpb25Ub0NsaWVudCgpCit7CisgICAgbV9jb25uZWN0aW9uVG9DbGllbnQtPmNsZWFyRGVsZWdh
dGUoKTsKK30KKworV2ViQ29yZTo6SURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnQmIElE
QlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmNvbm5lY3Rpb25Ub0NsaWVudCgpCit7CisgICAg
cmV0dXJuIG1fY29ubmVjdGlvblRvQ2xpZW50OworfQorCit0ZW1wbGF0ZTxjbGFzcyBNZXNzYWdl
VHlwZT4gdm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRHZXRSZXN1bHQoY29u
c3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBpZiAocmVzdWx0
RGF0YS50eXBlKCkgPT0gV2ViQ29yZTo6SURCUmVzdWx0VHlwZTo6RXJyb3IpIHsKKyAgICAgICAg
SVBDOjpDb25uZWN0aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwgTWVzc2FnZVR5cGUocmVzdWx0RGF0
YSksIDApOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKHJlc3VsdERhdGEudHlw
ZSgpID09IFdlYkNvcmU6OklEQlJlc3VsdFR5cGU6OkdldEFsbFJlY29yZHNTdWNjZXNzICYmIHJl
c3VsdERhdGEuZ2V0QWxsUmVzdWx0KCkudHlwZSgpID09IFdlYkNvcmU6OkluZGV4ZWREQjo6R2V0
QWxsVHlwZTo6S2V5cykgeworICAgICAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQobV9jb25uZWN0
aW9uLCBNZXNzYWdlVHlwZShyZXN1bHREYXRhKSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBhdXRvIGJsb2JGaWxlUGF0aHMgPSByZXN1bHREYXRhLnR5cGUoKSA9PSBXZWJDb3Jl
OjpJREJSZXN1bHRUeXBlOjpHZXRBbGxSZWNvcmRzU3VjY2VzcyA/IHJlc3VsdERhdGEuZ2V0QWxs
UmVzdWx0KCkuYWxsQmxvYkZpbGVQYXRocygpIDogcmVzdWx0RGF0YS5nZXRSZXN1bHQoKS52YWx1
ZSgpLmJsb2JGaWxlUGF0aHMoKTsKKyAgICBpZiAoYmxvYkZpbGVQYXRocy5pc0VtcHR5KCkpIHsK
KyAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwgTWVzc2FnZVR5cGUo
cmVzdWx0RGF0YSksIDApOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgSVBDOjpDb25u
ZWN0aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwgTWVzc2FnZVR5cGUocmVzdWx0RGF0YSksIDApOwor
fQorCit2b2lkIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZERlbGV0ZURhdGFiYXNl
KGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCit7CisgICAgSVBDOjpD
b25uZWN0aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwgTWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25U
b1NlcnZlcjo6RGlkRGVsZXRlRGF0YWJhc2UocmVzdWx0RGF0YSksIDApOworfQorCit2b2lkIElE
QlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZE9wZW5EYXRhYmFzZShjb25zdCBXZWJDb3Jl
OjpJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIElQQzo6Q29ubmVjdGlvbjo6c2Vu
ZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZE9w
ZW5EYXRhYmFzZShyZXN1bHREYXRhKSwgMCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rp
b25Ub0NsaWVudDo6ZGlkU3RhcnRUcmFuc2FjdGlvbihjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJj
ZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCRXJy
b3ImIGVycm9yKQoreworICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1l
c3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZFN0YXJ0VHJhbnNhY3Rpb24odHJh
bnNhY3Rpb25JZGVudGlmaWVyLCBlcnJvciksIDApOworfQorCit2b2lkIElEQlN0b3JhZ2VDb25u
ZWN0aW9uVG9DbGllbnQ6OmRpZEFib3J0VHJhbnNhY3Rpb24oY29uc3QgV2ViQ29yZTo6SURCUmVz
b3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OklE
QkVycm9yJiBlcnJvcikKK3sKKyAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQobV9jb25uZWN0aW9u
LCBNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWRBYm9ydFRyYW5zYWN0aW9u
KHRyYW5zYWN0aW9uSWRlbnRpZmllciwgZXJyb3IpLCAwKTsKK30KKwordm9pZCBJREJTdG9yYWdl
Q29ubmVjdGlvblRvQ2xpZW50OjpkaWRDb21taXRUcmFuc2FjdGlvbihjb25zdCBXZWJDb3JlOjpJ
REJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29y
ZTo6SURCRXJyb3ImIGVycm9yKQoreworICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5l
Y3Rpb24sIE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZENvbW1pdFRyYW5z
YWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgZXJyb3IpLCAwKTsKK30KKwordm9pZCBJREJT
dG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRDcmVhdGVPYmplY3RTdG9yZShjb25zdCBXZWJD
b3JlOjpJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIElQQzo6Q29ubmVjdGlvbjo6
c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRp
ZENyZWF0ZU9iamVjdFN0b3JlKHJlc3VsdERhdGEpLCAwKTsKK30KKwordm9pZCBJREJTdG9yYWdl
Q29ubmVjdGlvblRvQ2xpZW50OjpkaWREZWxldGVPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJ
REJSZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZCht
X2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZERlbGV0
ZU9iamVjdFN0b3JlKHJlc3VsdERhdGEpLCAwKTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVj
dGlvblRvQ2xpZW50OjpkaWRSZW5hbWVPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXN1
bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5l
Y3Rpb24sIE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZFJlbmFtZU9iamVj
dFN0b3JlKHJlc3VsdERhdGEpLCAwKTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRv
Q2xpZW50OjpkaWRDbGVhck9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEm
IHJlc3VsdERhdGEpCit7CisgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwg
TWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6RGlkQ2xlYXJPYmplY3RTdG9yZShy
ZXN1bHREYXRhKSwgMCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6
ZGlkQ3JlYXRlSW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkK
K3sKKyAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQobV9jb25uZWN0aW9uLCBNZXNzYWdlczo6V2Vi
SURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWRDcmVhdGVJbmRleChyZXN1bHREYXRhKSwgMCk7Cit9
CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkRGVsZXRlSW5kZXgoY29u
c3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBJUEM6OkNvbm5l
Y3Rpb246OnNlbmQobV9jb25uZWN0aW9uLCBNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2Vy
dmVyOjpEaWREZWxldGVJbmRleChyZXN1bHREYXRhKSwgMCk7Cit9CisKK3ZvaWQgSURCU3RvcmFn
ZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkUmVuYW1lSW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVz
dWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQobV9jb25u
ZWN0aW9uLCBNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWRSZW5hbWVJbmRl
eChyZXN1bHREYXRhKSwgMCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVu
dDo6ZGlkUHV0T3JBZGQoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkK
K3sKKyAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQobV9jb25uZWN0aW9uLCBNZXNzYWdlczo6V2Vi
SURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWRQdXRPckFkZChyZXN1bHREYXRhKSwgMCk7Cit9CisK
K3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkR2V0UmVjb3JkKGNvbnN0IFdl
YkNvcmU6OklEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCit7CisgICAgZGlkR2V0UmVzdWx0PE1l
c3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZEdldFJlY29yZD4ocmVzdWx0RGF0
YSk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkR2V0QWxsUmVj
b3Jkcyhjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIGRp
ZEdldFJlc3VsdDxNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWRHZXRBbGxS
ZWNvcmRzPihyZXN1bHREYXRhKTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xp
ZW50OjpkaWRHZXRDb3VudChjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJiByZXN1bHREYXRh
KQoreworICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpX
ZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZEdldENvdW50KHJlc3VsdERhdGEpLCAwKTsKK30K
Kwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWREZWxldGVSZWNvcmQoY29u
c3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBJUEM6OkNvbm5l
Y3Rpb246OnNlbmQobV9jb25uZWN0aW9uLCBNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2Vy
dmVyOjpEaWREZWxldGVSZWNvcmQocmVzdWx0RGF0YSksIDApOworfQorCit2b2lkIElEQlN0b3Jh
Z2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZE9wZW5DdXJzb3IoY29uc3QgV2ViQ29yZTo6SURCUmVz
dWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBkaWRHZXRSZXN1bHQ8TWVzc2FnZXM6OldlYklE
QkNvbm5lY3Rpb25Ub1NlcnZlcjo6RGlkT3BlbkN1cnNvcj4ocmVzdWx0RGF0YSk7Cit9CisKK3Zv
aWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkSXRlcmF0ZUN1cnNvcihjb25zdCBX
ZWJDb3JlOjpJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIGRpZEdldFJlc3VsdDxN
ZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWRJdGVyYXRlQ3Vyc29yPihyZXN1
bHREYXRhKTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRHZXRB
bGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMoY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVu
dGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OklEQkRhdGFi
YXNlTmFtZUFuZFZlcnNpb24+JiBkYXRhYmFzZXMpCit7CisgICAgSVBDOjpDb25uZWN0aW9uOjpz
ZW5kKG1fY29ubmVjdGlvbiwgTWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6RGlk
R2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKHJlcXVlc3RJZGVudGlmaWVyLCBkYXRhYmFz
ZXMpLCAwKTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpmaXJlVmVy
c2lvbkNoYW5nZUV2ZW50KFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXIm
IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCByZXF1ZXN0ZWRWZXJzaW9uKQoreworICAgIElQ
Qzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0
aW9uVG9TZXJ2ZXI6OkZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQoY29ubmVjdGlvbi5pZGVudGlmaWVy
KCksIHJlcXVlc3RJZGVudGlmaWVyLCByZXF1ZXN0ZWRWZXJzaW9uKSwgMCk7Cit9CisKK3ZvaWQg
SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkQ2xvc2VGcm9tU2VydmVyKFdlYkNvcmU6
OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25z
dCBXZWJDb3JlOjpJREJFcnJvciYgZXJyb3IpCit7CisgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5k
KG1fY29ubmVjdGlvbiwgTWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6RGlkQ2xv
c2VGcm9tU2VydmVyKGNvbm5lY3Rpb24uaWRlbnRpZmllcigpLCBlcnJvciksIDApOworfQorCit2
b2lkIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6Om5vdGlmeU9wZW5EQlJlcXVlc3RCbG9j
a2VkKGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZp
ZXIsIHVpbnQ2NF90IG9sZFZlcnNpb24sIHVpbnQ2NF90IG5ld1ZlcnNpb24pCit7CisgICAgSVBD
OjpDb25uZWN0aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwgTWVzc2FnZXM6OldlYklEQkNvbm5lY3Rp
b25Ub1NlcnZlcjo6Tm90aWZ5T3BlbkRCUmVxdWVzdEJsb2NrZWQocmVxdWVzdElkZW50aWZpZXIs
IG9sZFZlcnNpb24sIG5ld1ZlcnNpb24pLCAwKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3Rv
cmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
dG9yYWdlL0lEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MGJhMDFi
MDIxMjBmMjFkYjYxMzkxZjNhODc0NGQyMmI1ZmY3MGU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VDb25uZWN0aW9uVG9D
bGllbnQuaApAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0lEQkNvbm5lY3Rp
b25Ub0NsaWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSURCQ29ubmVjdGlvblRvQ2xpZW50RGVs
ZWdhdGUuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIElEQlN0b3JhZ2VDb25uZWN0
aW9uVG9DbGllbnQgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6SURCU2VydmVyOjpJREJDb25uZWN0
aW9uVG9DbGllbnREZWxlZ2F0ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJs
aWM6CisgICAgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudChJUEM6OkNvbm5lY3Rpb246OlVu
aXF1ZUlELCBXZWJDb3JlOjpJREJDb25uZWN0aW9uSWRlbnRpZmllcik7CisgICAgfklEQlN0b3Jh
Z2VDb25uZWN0aW9uVG9DbGllbnQoKTsKKworICAgIFdlYkNvcmU6OklEQkNvbm5lY3Rpb25JZGVu
dGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0K
KyAgICBJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGlwY0Nvbm5lY3Rpb24oKSBjb25zdCB7IHJl
dHVybiBtX2Nvbm5lY3Rpb247IH0KKyAgICBXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQkNvbm5lY3Rp
b25Ub0NsaWVudCYgY29ubmVjdGlvblRvQ2xpZW50KCk7CisKK3ByaXZhdGU6CisgICAgdGVtcGxh
dGU8Y2xhc3MgTWVzc2FnZVR5cGU+IHZvaWQgZGlkR2V0UmVzdWx0KGNvbnN0IFdlYkNvcmU6OklE
QlJlc3VsdERhdGEmKTsKKworICAgIC8vIElEQkNvbm5lY3Rpb25Ub0NsaWVudERlbGVnYXRlCisg
ICAgdm9pZCBkaWREZWxldGVEYXRhYmFzZShjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJikg
ZmluYWw7CisgICAgdm9pZCBkaWRPcGVuRGF0YWJhc2UoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0
RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkQWJvcnRUcmFuc2FjdGlvbihjb25zdCBXZWJDb3Jl
OjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2Vi
Q29yZTo6SURCRXJyb3ImKSBmaW5hbDsKKyAgICB2b2lkIGRpZENvbW1pdFRyYW5zYWN0aW9uKGNv
bnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVy
LCBjb25zdCBXZWJDb3JlOjpJREJFcnJvciYpIGZpbmFsOworICAgIHZvaWQgZGlkU3RhcnRUcmFu
c2FjdGlvbihjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9u
SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCRXJyb3ImKSBmaW5hbDsKKyAgICB2b2lkIGRp
ZENyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBmaW5hbDsK
KyAgICB2b2lkIGRpZERlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERh
dGEmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlbmFtZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6
OklEQlJlc3VsdERhdGEmKSBmaW5hbDsKKyAgICB2b2lkIGRpZENsZWFyT2JqZWN0U3RvcmUoY29u
c3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkQ3JlYXRlSW5k
ZXgoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkRGVs
ZXRlSW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQg
ZGlkUmVuYW1lSW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAg
IHZvaWQgZGlkUHV0T3JBZGQoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOwor
ICAgIHZvaWQgZGlkR2V0UmVjb3JkKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBmaW5h
bDsKKyAgICB2b2lkIGRpZEdldEFsbFJlY29yZHMoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0
YSYpIGZpbmFsOworICAgIHZvaWQgZGlkR2V0Q291bnQoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0
RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkRGVsZXRlUmVjb3JkKGNvbnN0IFdlYkNvcmU6OklE
QlJlc3VsdERhdGEmKSBmaW5hbDsKKyAgICB2b2lkIGRpZE9wZW5DdXJzb3IoY29uc3QgV2ViQ29y
ZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkSXRlcmF0ZUN1cnNvcihjb25z
dCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJikgZmluYWw7CisgICAgdm9pZCBkaWRHZXRBbGxEYXRh
YmFzZU5hbWVzQW5kVmVyc2lvbnMoY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVy
JiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OklEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24+JikgZmlu
YWw7CisgICAgdm9pZCBub3RpZnlPcGVuREJSZXF1ZXN0QmxvY2tlZChjb25zdCBXZWJDb3JlOjpJ
REJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBvbGRWZXJz
aW9uLCB1aW50NjRfdCBuZXdWZXJzaW9uKSBmaW5hbDsKKyAgICB2b2lkIGZpcmVWZXJzaW9uQ2hh
bmdlRXZlbnQoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24m
LCBjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVy
LCB1aW50NjRfdCByZXF1ZXN0ZWRWZXJzaW9uKSBmaW5hbDsKKyAgICB2b2lkIGRpZENsb3NlRnJv
bVNlcnZlcihXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYs
IGNvbnN0IFdlYkNvcmU6OklEQkVycm9yJikgZmluYWw7CisKKyAgICBJUEM6OkNvbm5lY3Rpb246
OlVuaXF1ZUlEIG1fY29ubmVjdGlvbjsKKyAgICBXZWJDb3JlOjpJREJDb25uZWN0aW9uSWRlbnRp
ZmllciBtX2lkZW50aWZpZXI7CisgICAgUmVmPFdlYkNvcmU6OklEQlNlcnZlcjo6SURCQ29ubmVj
dGlvblRvQ2xpZW50PiBtX2Nvbm5lY3Rpb25Ub0NsaWVudDsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdl
L0lEQlN0b3JhZ2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3Rv
cmFnZS9JREJTdG9yYWdlTWFuYWdlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWI2YjcxMDE3ZmIzOWQ3YTBl
MTM5MGVlMjg5NmNiYzJlOGRmYTQwZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlTWFuYWdlci5jcHAKQEAgLTAsMCArMSwy
NTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSURCU3Rv
cmFnZU1hbmFnZXIuaCIKKworI2luY2x1ZGUgIklEQlN0b3JhZ2VSZWdpc3RyeS5oIgorI2luY2x1
ZGUgPFdlYkNvcmUvSURCUmVxdWVzdERhdGEuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01lbW9yeUlE
QkJhY2tpbmdTdG9yZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlRmlsZVN5c3RlbS5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlSURCQmFja2luZ1N0b3JlLmg+CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitzdGF0aWMgdm9pZCBtaWdyYXRlT3JpZ2luRGF0YShjb25zdCBTdHJpbmcmIG9s
ZE9yaWdpbkRpcmVjdG9yeSwgY29uc3QgU3RyaW5nJiBuZXdPcmlnaW5EaXJlY3RvcnkpCit7Cisg
ICAgaWYgKCFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG9sZE9yaWdpbkRpcmVjdG9yeSkpCisgICAg
ICAgIHJldHVybjsKKworICAgIGF1dG8gZmlsZU5hbWVzID0gRmlsZVN5c3RlbTo6bGlzdERpcmVj
dG9yeShvbGRPcmlnaW5EaXJlY3RvcnkpOworICAgIGlmICghZmlsZU5hbWVzLmlzRW1wdHkoKSkK
KyAgICAgICAgRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKG5ld09yaWdpbkRpcmVjdG9y
eSk7CisKKyAgICBmb3IgKGF1dG8mIG5hbWUgOiBmaWxlTmFtZXMpIHsKKyAgICAgICAgU3RyaW5n
IGNoaWxkUGF0aCA9IEZpbGVTeXN0ZW06OnJlYWxQYXRoKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChvbGRPcmlnaW5EaXJlY3RvcnksIG5hbWUpKTsKKyAgICAgICAgU3RyaW5n
IG5ld05hbWUgPSBXZWJDb3JlOjpTUUxpdGVGaWxlU3lzdGVtOjpjb21wdXRlSGFzaEZvckZpbGVO
YW1lKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWNvZGVEYXRh
YmFzZU5hbWUobmFtZSkpOworICAgICAgICBhdXRvIG5ld0NoaWxkUGF0aCA9IEZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChuZXdPcmlnaW5EaXJlY3RvcnksIG5ld05hbWUpOwor
ICAgICAgICBGaWxlU3lzdGVtOjptb3ZlRmlsZShjaGlsZFBhdGgsIG5ld0NoaWxkUGF0aCk7Cisg
ICAgfQorCisgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3Rvcnkob2xkT3JpZ2luRGly
ZWN0b3J5KTsKK30KKworU3RyaW5nIElEQlN0b3JhZ2VNYW5hZ2VyOjppZGJTdG9yYWdlT3JpZ2lu
RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcm9vdERpcmVjdG9yeSwgY29uc3QgV2ViQ29yZTo6Q2xp
ZW50T3JpZ2luJiBvcmlnaW4pCit7CisgICAgaWYgKHJvb3REaXJlY3RvcnkuaXNFbXB0eSgpKQor
ICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKworICAgIFN0cmluZyBvcmlnaW5EaXJlY3Rv
cnkgPSBXZWJDb3JlOjpJREJEYXRhYmFzZUlkZW50aWZpZXI6OmRhdGFiYXNlRGlyZWN0b3J5UmVs
YXRpdmVUb1Jvb3Qob3JpZ2luLnRvcE9yaWdpbiwgb3JpZ2luLmNsaWVudE9yaWdpbiwgcm9vdERp
cmVjdG9yeSwgInYxIik7CisgICAgU3RyaW5nIG9sZE9yaWdpbkRpcmVjdG9yeSA9IFdlYkNvcmU6
OklEQkRhdGFiYXNlSWRlbnRpZmllcjo6ZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9vdChv
cmlnaW4udG9wT3JpZ2luLCBvcmlnaW4uY2xpZW50T3JpZ2luLCByb290RGlyZWN0b3J5LCAidjAi
KTsKKyAgICBtaWdyYXRlT3JpZ2luRGF0YShvbGRPcmlnaW5EaXJlY3RvcnksIG9yaWdpbkRpcmVj
dG9yeSk7CisKKyAgICByZXR1cm4gb3JpZ2luRGlyZWN0b3J5OworfQorCit1aW50NjRfdCBJREJT
dG9yYWdlTWFuYWdlcjo6aWRiU3RvcmFnZVNpemUoY29uc3QgU3RyaW5nJiBvcmlnaW5EaXJlY3Rv
cnkpCit7CisgICAgaWYgKG9yaWdpbkRpcmVjdG9yeS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVy
biAwOworCisgICAgcmV0dXJuIFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0
b3JlOjpkYXRhYmFzZXNTaXplRm9yRGlyZWN0b3J5KG9yaWdpbkRpcmVjdG9yeSk7Cit9CisKK3N0
YXRpYyB2b2lkIGdldE9yaWdpbnNGb3JWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvblBhdGgs
IEhhc2hTZXQ8V2ViQ29yZTo6Q2xpZW50T3JpZ2luPiYgb3JpZ2lucykKK3sKKyAgICBmb3IgKGF1
dG8mIHRvcERhdGFiYXNlSWRlbnRpZmllciA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkodmVy
c2lvblBhdGgpKSB7CisgICAgICAgIGF1dG8gdG9wT3JpZ2luID0gV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKHRvcERhdGFiYXNlSWRlbnRpZmllcik7
CisgICAgICAgIGlmICghdG9wT3JpZ2luKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAg
ICAgYXV0byB0b3BPcmlnaW5EaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQodmVyc2lvblBhdGgsIHRvcERhdGFiYXNlSWRlbnRpZmllcik7CisgICAgICAgIGZv
ciAoYXV0byYgZGF0YWJhc2VJZGVudGlmaWVyIDogRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeSh0
b3BPcmlnaW5EaXJlY3RvcnkpKSB7CisgICAgICAgICAgICBhdXRvIG9yaWdpbkRpcmVjdG9yeSA9
IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0b3BPcmlnaW5EaXJlY3Rvcnks
IGRhdGFiYXNlSWRlbnRpZmllcik7CisgICAgICAgICAgICBpZiAoRmlsZVN5c3RlbTo6ZGVsZXRl
RW1wdHlEaXJlY3Rvcnkob3JpZ2luRGlyZWN0b3J5KSkKKyAgICAgICAgICAgICAgICBjb250aW51
ZTsKKworICAgICAgICAgICAgYXV0byBjbGllbnRPcmlnaW4gPSBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZpZXIoZGF0YWJhc2VJZGVudGlmaWVyKTsKKyAg
ICAgICAgICAgIC8vIFRoaXMgaXMgbm90IG9yaWdpbiBkaXJlY3RvcnksIGJ1dCBtYXkgYmUgZGF0
YWJhc2UgZGlyZWN0b3J5LgorICAgICAgICAgICAgaWYgKCFjbGllbnRPcmlnaW4pIHsKKyAgICAg
ICAgICAgICAgICBvcmlnaW5zLmFkZChXZWJDb3JlOjpDbGllbnRPcmlnaW4geyAqdG9wT3JpZ2lu
LCAqdG9wT3JpZ2luIH0pOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBvcmlnaW5zLmFkZChXZWJDb3JlOjpDbGllbnRPcmlnaW4geyAqdG9w
T3JpZ2luLCAqY2xpZW50T3JpZ2luIH0pOworICAgICAgICB9CisKKyAgICAgICAgLy8gV2UgbWF5
IGhhdmUgZGVsZXRlZCBlbXB0eSBjaGlsZHJlbiBkaXJlY3RvcmllcyBhYm92ZSwgd2hpY2ggbWFr
ZSB0aGlzIGRpcmVjdG9yeSBlbXB0eS4KKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlE
aXJlY3RvcnkodG9wT3JpZ2luRGlyZWN0b3J5KTsKKyAgICB9Cit9CisKK0hhc2hTZXQ8V2ViQ29y
ZTo6Q2xpZW50T3JpZ2luPiBJREJTdG9yYWdlTWFuYWdlcjo6b3JpZ2luc09mSURCU3RvcmFnZURh
dGEoY29uc3QgU3RyaW5nJiByb290RGlyZWN0b3J5KQoreworICAgIEhhc2hTZXQ8V2ViQ29yZTo6
Q2xpZW50T3JpZ2luPiBvcmlnaW5zOworICAgIGlmIChyb290RGlyZWN0b3J5LmlzRW1wdHkoKSkK
KyAgICAgICAgcmV0dXJuIG9yaWdpbnM7CisKKyAgICBnZXRPcmlnaW5zRm9yVmVyc2lvbihGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocm9vdERpcmVjdG9yeSwgInYwIiksIG9y
aWdpbnMpOworICAgIGdldE9yaWdpbnNGb3JWZXJzaW9uKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChyb290RGlyZWN0b3J5LCAidjEiKSwgb3JpZ2lucyk7CisKKyAgICByZXR1
cm4gb3JpZ2luczsKK30KKworSURCU3RvcmFnZU1hbmFnZXI6OklEQlN0b3JhZ2VNYW5hZ2VyKGNv
bnN0IFN0cmluZyYgcGF0aCwgSURCU3RvcmFnZVJlZ2lzdHJ5JiByZWdpc3RyeSwgUXVvdGFDaGVj
a0Z1bmN0aW9uJiYgcXVvdGFDaGVja0Z1bmN0aW9uKQorICAgIDogbV9wYXRoKHBhdGgpCisgICAg
LCBtX3JlZ2lzdHJ5KHJlZ2lzdHJ5KQorICAgICwgbV9xdW90YUNoZWNrRnVuY3Rpb24oV1RGTW92
ZShxdW90YUNoZWNrRnVuY3Rpb24pKQoreworfQorCitib29sIElEQlN0b3JhZ2VNYW5hZ2VyOjpp
c0FjdGl2ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFtX2RhdGFiYXNlcy5pc0VtcHR5KCk7Cit9
CisKK2Jvb2wgSURCU3RvcmFnZU1hbmFnZXI6Omhhc0RhdGFJbk1lbW9yeSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIFdURjo6YW55T2YobV9kYXRhYmFzZXMudmFsdWVzKCksIFsmXSAoYXV0byYgZGF0
YWJhc2UpIHsKKyAgICAgICAgcmV0dXJuIGRhdGFiYXNlLT5oYXNEYXRhSW5NZW1vcnkoKTsKKyAg
ICB9KTsKK30KKwordm9pZCBJREJTdG9yYWdlTWFuYWdlcjo6Y2xvc2VEYXRhYmFzZXNGb3JEZWxl
dGlvbigpCit7CisgICAgZm9yIChhdXRvJiBkYXRhYmFzZSA6IG1fZGF0YWJhc2VzLnZhbHVlcygp
KQorICAgICAgICBkYXRhYmFzZS0+aW1tZWRpYXRlQ2xvc2UoKTsKKworICAgIG1fZGF0YWJhc2Vz
LmNsZWFyKCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZU1hbmFnZXI6OnN0b3BEYXRhYmFzZUFjdGl2
aXRpZXNGb3JTdXNwZW5kKCkKK3sKKyAgICBpZiAobV9wYXRoLmlzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgZm9yIChhdXRvJiBkYXRhYmFzZSA6IG1fZGF0YWJhc2VzLnZhbHVlcygp
KSB7CisgICAgICAgIC8vIE9ubHkgc3RvcCBkYXRhYmFzZXMgd2l0aCBub24tZXBoZW1lcmFsIGJh
Y2tpbmcgc3RvcmUgdGhhdCBjYW4gaG9sZCBkYXRhYmFzZSBmaWxlIGxvY2suCisgICAgICAgIGlm
ICghZGF0YWJhc2UtPmlkZW50aWZpZXIoKS5pc1RyYW5zaWVudCgpKQorICAgICAgICAgICAgZGF0
YWJhc2UtPmFib3J0QWN0aXZlVHJhbnNhY3Rpb25zKCk7CisgICAgfQorfQorCitXZWJDb3JlOjpJ
REJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlJiBJREJTdG9yYWdlTWFuYWdlcjo6Z2V0T3JDcmVh
dGVVbmlxdWVJREJEYXRhYmFzZShjb25zdCBXZWJDb3JlOjpJREJEYXRhYmFzZUlkZW50aWZpZXIm
IGlkZW50aWZpZXIpCit7CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX2RhdGFiYXNlcy5hZGQoaWRl
bnRpZmllciwgbnVsbHB0cik7CisgICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KQorICAgICAg
ICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpJREJTZXJ2
ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlPigqdGhpcywgaWRlbnRpZmllcik7CisKKyAgICByZXR1cm4g
KmFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7Cit9CisKK3ZvaWQgSURCU3RvcmFnZU1hbmFnZXI6
Om9wZW5EYXRhYmFzZShXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub0NsaWVudCYg
Y29ubmVjdGlvblRvQ2xpZW50LCBjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVz
dERhdGEpCit7CisgICAgYXV0byYgZGF0YWJhc2UgPSBnZXRPckNyZWF0ZVVuaXF1ZUlEQkRhdGFi
YXNlKHJlcXVlc3REYXRhLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICBkYXRhYmFzZS5vcGVu
RGF0YWJhc2VDb25uZWN0aW9uKGNvbm5lY3Rpb25Ub0NsaWVudCwgcmVxdWVzdERhdGEpOworfQor
Cit2b2lkIElEQlN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVEYXRhYmFzZShXZWJDb3JlOjpJREJTZXJ2
ZXI6OklEQkNvbm5lY3Rpb25Ub0NsaWVudCYgY29ubmVjdGlvblRvQ2xpZW50LCBjb25zdCBXZWJD
b3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEpCit7CisgICAgYXV0byYgZGF0YWJhc2Ug
PSBnZXRPckNyZWF0ZVVuaXF1ZUlEQkRhdGFiYXNlKHJlcXVlc3REYXRhLmRhdGFiYXNlSWRlbnRp
ZmllcigpKTsKKyAgICBkYXRhYmFzZS5oYW5kbGVEZWxldGUoY29ubmVjdGlvblRvQ2xpZW50LCBy
ZXF1ZXN0RGF0YSk7CisKKyAgICAvLyBUaGlzIGRhdGFiYXNlIGlzIGNyZWF0ZWQgZm9yIGRlbGV0
aW9uLgorICAgIGlmIChkYXRhYmFzZS50cnlDbG9zZSgpKQorICAgICAgICBtX2RhdGFiYXNlcy5y
ZW1vdmUoZGF0YWJhc2UuaWRlbnRpZmllcigpKTsKK30KKworVmVjdG9yPFdlYkNvcmU6OklEQkRh
dGFiYXNlTmFtZUFuZFZlcnNpb24+IElEQlN0b3JhZ2VNYW5hZ2VyOjpnZXRBbGxEYXRhYmFzZU5h
bWVzQW5kVmVyc2lvbnMoKQoreworICAgIFZlY3RvcjxXZWJDb3JlOjpJREJEYXRhYmFzZU5hbWVB
bmRWZXJzaW9uPiByZXN1bHQ7CisgICAgSGFzaFNldDxTdHJpbmc+IHZpc2l0ZWREYXRhYmFzZVBh
dGhzOworICAgIGZvciAoYXV0byYgZGF0YWJhc2UgOiBtX2RhdGFiYXNlcy52YWx1ZXMoKSkgewor
ICAgICAgICBhdXRvIHBhdGggPSBkYXRhYmFzZS0+ZmlsZVBhdGgoKTsKKyAgICAgICAgaWYgKCFw
YXRoLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHZpc2l0ZWREYXRhYmFzZVBhdGhzLmFkZChwYXRo
KTsKKworICAgICAgICBpZiAoYXV0byBuYW1lQW5kVmVyc2lvbiA9IGRhdGFiYXNlLT5uYW1lQW5k
VmVyc2lvbigpKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChXVEZNb3ZlKCpuYW1lQW5kVmVy
c2lvbikpOworICAgIH0KKworICAgIGF1dG8gZGF0YWJhc2VJZGVudGlmaWVycyA9IEZpbGVTeXN0
ZW06Omxpc3REaXJlY3RvcnkobV9wYXRoKTsKKyAgICBmb3IgKGF1dG8gaWRlbnRpZmllciA6IGRh
dGFiYXNlSWRlbnRpZmllcnMpIHsKKyAgICAgICAgYXV0byBkYXRhYmFzZURpcmVjdG9yeSA9IEZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3BhdGgsIGlkZW50aWZpZXIpOwor
ICAgICAgICBhdXRvIGRhdGFiYXNlUGF0aCA9IFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURC
QmFja2luZ1N0b3JlOjpmdWxsRGF0YWJhc2VQYXRoRm9yRGlyZWN0b3J5KGRhdGFiYXNlRGlyZWN0
b3J5KTsKKyAgICAgICAgaWYgKHZpc2l0ZWREYXRhYmFzZVBhdGhzLmNvbnRhaW5zKGRhdGFiYXNl
UGF0aCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAoYXV0byBuYW1lQW5k
VmVyc2lvbiA9IFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpkYXRh
YmFzZU5hbWVBbmRWZXJzaW9uRnJvbUZpbGUoZGF0YWJhc2VQYXRoKSkKKyAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoV1RGTW92ZSgqbmFtZUFuZFZlcnNpb24pKTsKKyAgICB9CisKKyAgICByZXR1
cm4gcmVzdWx0OworfQorCit2b2lkIElEQlN0b3JhZ2VNYW5hZ2VyOjpvcGVuREJSZXF1ZXN0Q2Fu
Y2VsbGVkKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkKK3sKKyAg
ICBhdXRvKiBkYXRhYmFzZSA9IG1fZGF0YWJhc2VzLmdldChyZXF1ZXN0RGF0YS5kYXRhYmFzZUlk
ZW50aWZpZXIoKSk7CisgICAgaWYgKCFkYXRhYmFzZSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
ZGF0YWJhc2UtPm9wZW5EQlJlcXVlc3RDYW5jZWxsZWQocmVxdWVzdERhdGEucmVxdWVzdElkZW50
aWZpZXIoKSk7CisKKyAgICAvLyBEYXRhYmFzZSBiZWNvbWVzIGlkbGUgYWZ0ZXIgcmVxdWVzdCBp
cyBjYW5jZWxsZWQuCisgICAgaWYgKGRhdGFiYXNlLT50cnlDbG9zZSgpKQorICAgICAgICBtX2Rh
dGFiYXNlcy5yZW1vdmUoZGF0YWJhc2UtPmlkZW50aWZpZXIoKSk7Cit9CisKK3ZvaWQgSURCU3Rv
cmFnZU1hbmFnZXI6OnJlZ2lzdGVyQ29ubmVjdGlvbihXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1
ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYgY29ubmVjdGlvbikKK3sKKyAgICBtX3JlZ2lzdHJ5LnJl
Z2lzdGVyQ29ubmVjdGlvbihjb25uZWN0aW9uKTsKK30KKwordm9pZCBJREJTdG9yYWdlTWFuYWdl
cjo6dW5yZWdpc3RlckNvbm5lY3Rpb24oV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRh
YmFzZUNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCit7CisgICAgbV9yZWdpc3RyeS51bnJlZ2lzdGVy
Q29ubmVjdGlvbihjb25uZWN0aW9uKTsKK30KKwordm9pZCBJREJTdG9yYWdlTWFuYWdlcjo6cmVn
aXN0ZXJUcmFuc2FjdGlvbihXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlVHJh
bnNhY3Rpb24mIHRyYW5zYWN0aW9uKQoreworICAgIG1fcmVnaXN0cnkucmVnaXN0ZXJUcmFuc2Fj
dGlvbih0cmFuc2FjdGlvbik7Cit9CisKK3ZvaWQgSURCU3RvcmFnZU1hbmFnZXI6OnVucmVnaXN0
ZXJUcmFuc2FjdGlvbihXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNh
Y3Rpb24mIHRyYW5zYWN0aW9uKQoreworICAgIG1fcmVnaXN0cnkudW5yZWdpc3RlclRyYW5zYWN0
aW9uKHRyYW5zYWN0aW9uKTsKK30KKworc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklEQlNlcnZl
cjo6SURCQmFja2luZ1N0b3JlPiBJREJTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlQmFja2luZ1N0b3Jl
KGNvbnN0IFdlYkNvcmU6OklEQkRhdGFiYXNlSWRlbnRpZmllciYgaWRlbnRpZmllcikKK3sKKyAg
ICBpZiAobV9wYXRoLmlzRW1wdHkoKSB8fCBpZGVudGlmaWVyLmlzVHJhbnNpZW50KCkpCisgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5SURCQmFja2lu
Z1N0b3JlPihpZGVudGlmaWVyKTsKKworICAgIGF1dG8gbmFtZSA9IFdlYkNvcmU6OlNRTGl0ZUZp
bGVTeXN0ZW06OmNvbXB1dGVIYXNoRm9yRmlsZU5hbWUoaWRlbnRpZmllci5kYXRhYmFzZU5hbWUo
KSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJC
YWNraW5nU3RvcmU+KGlkZW50aWZpZXIsIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChtX3BhdGgsIG5hbWUpKTsKK30KKwordm9pZCBJREJTdG9yYWdlTWFuYWdlcjo6cmVxdWVz
dFNwYWNlKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIHVpbnQ2NF90IHNpemUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgbV9x
dW90YUNoZWNrRnVuY3Rpb24oc2l6ZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VNYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjg0Yzlj
ZjkzMDM3MTBiN2FmNzg2MTVkMDliMjI5OTVjMjdiMGNlNAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlTWFuYWdlci5oCkBA
IC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPFdl
YkNvcmUvVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
K25hbWVzcGFjZSBJREJTZXJ2ZXIgeworY2xhc3MgSURCQmFja2luZ1N0b3JlOworY2xhc3MgSURC
Q29ubmVjdGlvblRvQ2xpZW50OworY2xhc3MgSURCUmVxdWVzdERhdGE7CitjbGFzcyBVbmlxdWVJ
REJEYXRhYmFzZTsKK2NsYXNzIFVuaXF1ZUlEQlRyYW5zYWN0aW9uOworfQorCitzdHJ1Y3QgSURC
RGF0YWJhc2VOYW1lQW5kVmVyc2lvbjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNz
IElEQlN0b3JhZ2VSZWdpc3RyeTsKKworY2xhc3MgSURCU3RvcmFnZU1hbmFnZXIgZmluYWwgOiBw
dWJsaWMgV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIgeworcHVi
bGljOgorICAgIHN0YXRpYyBTdHJpbmcgaWRiU3RvcmFnZU9yaWdpbkRpcmVjdG9yeShjb25zdCBT
dHJpbmcmIHJvb3REaXJlY3RvcnksIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYpOworICAg
IHN0YXRpYyB1aW50NjRfdCBpZGJTdG9yYWdlU2l6ZShjb25zdCBTdHJpbmcmIG9yaWdpbkRpcmVj
dG9yeSk7CisgICAgc3RhdGljIEhhc2hTZXQ8V2ViQ29yZTo6Q2xpZW50T3JpZ2luPiBvcmlnaW5z
T2ZJREJTdG9yYWdlRGF0YShjb25zdCBTdHJpbmcmIHJvb3REaXJlY3RvcnkpOworCisgICAgdXNp
bmcgUXVvdGFDaGVja0Z1bmN0aW9uID0gRnVuY3Rpb248dm9pZCh1aW50NjRfdCBzcGFjZVJlcXVl
c3RlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik+OworICAgIElEQlN0b3JhZ2VN
YW5hZ2VyKGNvbnN0IFN0cmluZyYgcGF0aCwgSURCU3RvcmFnZVJlZ2lzdHJ5JiwgUXVvdGFDaGVj
a0Z1bmN0aW9uJiYpOworICAgIGJvb2wgaXNBY3RpdmUoKSBjb25zdDsKKyAgICBib29sIGhhc0Rh
dGFJbk1lbW9yeSgpIGNvbnN0OworICAgIHZvaWQgY2xvc2VEYXRhYmFzZXNGb3JEZWxldGlvbigp
OworICAgIHZvaWQgc3RvcERhdGFiYXNlQWN0aXZpdGllc0ZvclN1c3BlbmQoKTsKKworICAgIHZv
aWQgb3BlbkRhdGFiYXNlKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCQ29ubmVjdGlvblRvQ2xpZW50
JiwgY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmKTsKKyAgICB2b2lkIG9wZW5EQlJlcXVl
c3RDYW5jZWxsZWQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmKTsKKyAgICB2b2lkIGRl
bGV0ZURhdGFiYXNlKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCQ29ubmVjdGlvblRvQ2xpZW50Jiwg
Y29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmKTsKKyAgICBWZWN0b3I8V2ViQ29yZTo6SURC
RGF0YWJhc2VOYW1lQW5kVmVyc2lvbj4gZ2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKCk7
CisKK3ByaXZhdGU6CisgICAgV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZSYg
Z2V0T3JDcmVhdGVVbmlxdWVJREJEYXRhYmFzZShjb25zdCBXZWJDb3JlOjpJREJEYXRhYmFzZUlk
ZW50aWZpZXImKTsKKworICAgIC8vIFdlYkNvcmU6OlVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlcgor
ICAgIHZvaWQgcmVnaXN0ZXJDb25uZWN0aW9uKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURC
RGF0YWJhc2VDb25uZWN0aW9uJikgZmluYWw7CisgICAgdm9pZCB1bnJlZ2lzdGVyQ29ubmVjdGlv
bihXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYpIGZpbmFs
OworICAgIHZvaWQgcmVnaXN0ZXJUcmFuc2FjdGlvbihXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1
ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mKSBmaW5hbDsKKyAgICB2b2lkIHVucmVnaXN0ZXJUcmFu
c2FjdGlvbihXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24m
KSBmaW5hbDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SURCU2VydmVyOjpJREJCYWNr
aW5nU3RvcmU+IGNyZWF0ZUJhY2tpbmdTdG9yZShjb25zdCBXZWJDb3JlOjpJREJEYXRhYmFzZUlk
ZW50aWZpZXImKSBmaW5hbDsKKyAgICB2b2lkIHJlcXVlc3RTcGFjZShjb25zdCBXZWJDb3JlOjpD
bGllbnRPcmlnaW4mLCB1aW50NjRfdCBzaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmKSBmaW5hbDsKKworICAgIFN0cmluZyBtX3BhdGg7CisgICAgSURCU3RvcmFnZVJlZ2lzdHJ5
JiBtX3JlZ2lzdHJ5OworICAgIFF1b3RhQ2hlY2tGdW5jdGlvbiBtX3F1b3RhQ2hlY2tGdW5jdGlv
bjsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OklEQkRhdGFiYXNlSWRlbnRpZmllciwgc3RkOjp1bmlx
dWVfcHRyPFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U+PiBtX2RhdGFiYXNl
czsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VSZWdpc3RyeS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZVJlZ2lzdHJ5LmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5jNjNhYjVlMjU1MTZlZTYwZjVmNjQwZjU1MWUxZjliYTFjOWVhNjFhCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3Jh
Z2VSZWdpc3RyeS5jcHAKQEAgLTAsMCArMSwxMDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiSURCU3RvcmFnZVJlZ2lzdHJ5LmgiCisKKyNpbmNsdWRlICJJ
REJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9VbmlxdWVJ
REJEYXRhYmFzZUNvbm5lY3Rpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1VuaXF1ZUlEQkRhdGFi
YXNlVHJhbnNhY3Rpb24uaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK0lEQlN0b3JhZ2VSZWdp
c3RyeTo6SURCU3RvcmFnZVJlZ2lzdHJ5KCkgPSBkZWZhdWx0OworCitXZWJDb3JlOjpJREJTZXJ2
ZXI6OklEQkNvbm5lY3Rpb25Ub0NsaWVudCYgSURCU3RvcmFnZVJlZ2lzdHJ5OjplbnN1cmVDb25u
ZWN0aW9uVG9DbGllbnQoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uLCBXZWJD
b3JlOjpJREJDb25uZWN0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIGF1dG8gYWRk
UmVzdWx0ID0gbV9jb25uZWN0aW9uc1RvQ2xpZW50LmFkZChpZGVudGlmaWVyLCBudWxscHRyKTsK
KyAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRv
ci0+dmFsdWUgPSBtYWtlVW5pcXVlPElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ+KGNvbm5l
Y3Rpb24sIGlkZW50aWZpZXIpOworCisgICAgQVNTRVJUKGFkZFJlc3VsdC5pdGVyYXRvci0+dmFs
dWUtPmlwY0Nvbm5lY3Rpb24oKSA9PSBjb25uZWN0aW9uKTsKKyAgICByZXR1cm4gYWRkUmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZS0+Y29ubmVjdGlvblRvQ2xpZW50KCk7Cit9CisKK3ZvaWQgSURCU3Rv
cmFnZVJlZ2lzdHJ5OjpyZW1vdmVDb25uZWN0aW9uVG9DbGllbnQoSVBDOjpDb25uZWN0aW9uOjpV
bmlxdWVJRCBjb25uZWN0aW9uKQoreworICAgIGF1dG8gYWxsQ29ubmVjdGlvbnNUb0NsaWVudCA9
IHN0ZDo6ZXhjaGFuZ2UobV9jb25uZWN0aW9uc1RvQ2xpZW50LCB7IH0pOworICAgIGZvciAoYXV0
byYgW2lkZW50aWZpZXIsIGNvbm5lY3Rpb25Ub0NsaWVudF0gOiBhbGxDb25uZWN0aW9uc1RvQ2xp
ZW50KSB7CisgICAgICAgIGlmIChjb25uZWN0aW9uVG9DbGllbnQtPmlwY0Nvbm5lY3Rpb24oKSAh
PSBjb25uZWN0aW9uKSB7CisgICAgICAgICAgICBtX2Nvbm5lY3Rpb25zVG9DbGllbnQuYWRkKGlk
ZW50aWZpZXIsIFdURk1vdmUoY29ubmVjdGlvblRvQ2xpZW50KSk7CisgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgfQorICAgICAgICBjb25uZWN0aW9uVG9DbGllbnQtPmNvbm5lY3Rpb25U
b0NsaWVudCgpLmNvbm5lY3Rpb25Ub0NsaWVudENsb3NlZCgpOworICAgIH0KK30KKwordm9pZCBJ
REJTdG9yYWdlUmVnaXN0cnk6OnJlZ2lzdGVyQ29ubmVjdGlvbihXZWJDb3JlOjpJREJTZXJ2ZXI6
OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYgY29ubmVjdGlvbikKK3sKKyAgICBhdXRvIGlk
ZW50aWZpZXIgPSBjb25uZWN0aW9uLmlkZW50aWZpZXIoKTsKKyAgICBBU1NFUlQoIW1fY29ubmVj
dGlvbnMuY29udGFpbnMoaWRlbnRpZmllcikpOworCisgICAgbV9jb25uZWN0aW9ucy5hZGQoaWRl
bnRpZmllciwgY29ubmVjdGlvbik7Cit9CisKK3ZvaWQgSURCU3RvcmFnZVJlZ2lzdHJ5Ojp1bnJl
Z2lzdGVyQ29ubmVjdGlvbihXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29u
bmVjdGlvbiYgY29ubmVjdGlvbikKK3sKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBjb25uZWN0aW9u
LmlkZW50aWZpZXIoKTsKKyAgICBBU1NFUlQobV9jb25uZWN0aW9ucy5jb250YWlucyhpZGVudGlm
aWVyKSk7CisKKyAgICBtX2Nvbm5lY3Rpb25zLnJlbW92ZShpZGVudGlmaWVyKTsKK30KKwordm9p
ZCBJREJTdG9yYWdlUmVnaXN0cnk6OnJlZ2lzdGVyVHJhbnNhY3Rpb24oV2ViQ29yZTo6SURCU2Vy
dmVyOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKK3sKKyAgICBh
dXRvIGlkZW50aWZpZXIgPSB0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpOworICAgIEFT
U0VSVCghbV90cmFuc2FjdGlvbnMuY29udGFpbnMoaWRlbnRpZmllcikpOworCisgICAgbV90cmFu
c2FjdGlvbnMuYWRkKGlkZW50aWZpZXIsIHRyYW5zYWN0aW9uKTsKK30KKwordm9pZCBJREJTdG9y
YWdlUmVnaXN0cnk6OnVucmVnaXN0ZXJUcmFuc2FjdGlvbihXZWJDb3JlOjpJREJTZXJ2ZXI6OlVu
aXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQoreworICAgIGF1dG8gaWRl
bnRpZmllciA9IHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCk7CisgICAgQVNTRVJUKG1f
dHJhbnNhY3Rpb25zLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKKworICAgIG1fdHJhbnNhY3Rpb25z
LnJlbW92ZShpZGVudGlmaWVyKTsKK30KKworV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJE
YXRhYmFzZUNvbm5lY3Rpb24qIElEQlN0b3JhZ2VSZWdpc3RyeTo6Y29ubmVjdGlvbih1aW50NjRf
dCBpZGVudGlmaWVyKQoreworICAgIHJldHVybiBtX2Nvbm5lY3Rpb25zLmdldChpZGVudGlmaWVy
KS5nZXQoKTsKK30KKworV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5z
YWN0aW9uKiBJREJTdG9yYWdlUmVnaXN0cnk6OnRyYW5zYWN0aW9uKFdlYkNvcmU6OklEQlJlc291
cmNlSWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIHJldHVybiBtX3RyYW5zYWN0aW9ucy5n
ZXQoaWRlbnRpZmllcikuZ2V0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VSZWdp
c3RyeS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VS
ZWdpc3RyeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODRkY2Y0ZjYxODY4N2JlNmMyNGVlMzI2M2NhNDhmODg3
ODc2YWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0
b3JhZ2UvSURCU3RvcmFnZVJlZ2lzdHJ5LmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvSURCUmVzb3VyY2VJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIElEQlNlcnZlciB7CitjbGFzcyBVbmlxdWVJ
REJEYXRhYmFzZUNvbm5lY3Rpb247CitjbGFzcyBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9u
OworfQorfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgSURCU3RvcmFnZUNvbm5lY3Rp
b25Ub0NsaWVudDsKKworY2xhc3MgSURCU3RvcmFnZVJlZ2lzdHJ5IHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBJREJTdG9yYWdlUmVnaXN0cnkoKTsKKyAgICBX
ZWJDb3JlOjpJREJTZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub0NsaWVudCYgZW5zdXJlQ29ubmVjdGlv
blRvQ2xpZW50KElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIFdlYkNvcmU6OklEQkNvbm5lY3Rp
b25JZGVudGlmaWVyKTsKKyAgICB2b2lkIHJlbW92ZUNvbm5lY3Rpb25Ub0NsaWVudChJUEM6OkNv
bm5lY3Rpb246OlVuaXF1ZUlEKTsKKyAgICB2b2lkIHJlZ2lzdGVyQ29ubmVjdGlvbihXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYpOworICAgIHZvaWQgdW5y
ZWdpc3RlckNvbm5lY3Rpb24oV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNv
bm5lY3Rpb24mKTsKKyAgICBXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29u
bmVjdGlvbiogY29ubmVjdGlvbih1aW50NjRfdCBpZGVudGlmaWVyKTsKKyAgICB2b2lkIHJlZ2lz
dGVyVHJhbnNhY3Rpb24oV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5z
YWN0aW9uJik7CisgICAgdm9pZCB1bnJlZ2lzdGVyVHJhbnNhY3Rpb24oV2ViQ29yZTo6SURCU2Vy
dmVyOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJik7CisgICAgV2ViQ29yZTo6SURCU2Vy
dmVyOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbihXZWJDb3JlOjpJ
REJSZXNvdXJjZUlkZW50aWZpZXIpOworCitwcml2YXRlOgorICAgIEhhc2hNYXA8V2ViQ29yZTo6
SURCQ29ubmVjdGlvbklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxJREJTdG9yYWdlQ29ubmVj
dGlvblRvQ2xpZW50Pj4gbV9jb25uZWN0aW9uc1RvQ2xpZW50OworICAgIEhhc2hNYXA8dWludDY0
X3QsIFdlYWtQdHI8V2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rp
b24+PiBtX2Nvbm5lY3Rpb25zOworICAgIEhhc2hNYXA8V2ViQ29yZTo6SURCUmVzb3VyY2VJZGVu
dGlmaWVyLCBXZWFrUHRyPFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VUcmFu
c2FjdGlvbj4+IG1fdHJhbnNhY3Rpb25zOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0
b3JhZ2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9O
ZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IDgxM2U2ZTk1YTEzYWJlMzkxODZkMTliMmRh
YjI4N2JiYjU1MjRmNzkuLmQyYjdlMTY2ODc5MGYxNmQ2YmY0ODQyOWVjMGMxZWM3ZjQzNWQ1YWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3Jr
U3RvcmFnZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3Rv
cmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwCkBAIC0yNiwxOCArMjYsMjYgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJOZXR3b3JrU3RvcmFnZU1hbmFnZXIuaCIKIAorI2lu
Y2x1ZGUgIkNhY2hlU3RvcmFnZUVuZ2luZS5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW1TdG9yYWdl
SGFuZGxlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIuaCIK
KyNpbmNsdWRlICJJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50LmgiCisjaW5jbHVkZSAiSURC
U3RvcmFnZU1hbmFnZXIuaCIKKyNpbmNsdWRlICJJREJTdG9yYWdlUmVnaXN0cnkuaCIKICNpbmNs
dWRlICJMb2NhbFN0b3JhZ2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1
ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtTdG9y
YWdlTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiT3JpZ2luU3RvcmFnZU1hbmFnZXIuaCIK
KyNpbmNsdWRlICJRdW90YU1hbmFnZXIuaCIKICNpbmNsdWRlICJTZXNzaW9uU3RvcmFnZU1hbmFn
ZXIuaCIKICNpbmNsdWRlICJTdG9yYWdlQXJlYUJhc2UuaCIKICNpbmNsdWRlICJTdG9yYWdlQXJl
YU1hcE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFyZWFSZWdpc3RyeS5oIgogI2luY2x1
ZGUgIldlYnNpdGVEYXRhVHlwZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5E
YXRhLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uaD4KICNpbmNs
dWRlIDxwYWwvY3J5cHRvL0NyeXB0b0RpZ2VzdC5oPgogI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgog
I2luY2x1ZGUgPHd0Zi9TdXNwZW5kYWJsZVdvcmtRdWV1ZS5oPgpAQCAtMTAwLDIyICsxMDgsMjgg
QEAgc3RhdGljIHZvaWQgZGVsZXRlT3JpZ2luRmlsZUlmTmVjZXNzYXJ5KGNvbnN0IFN0cmluZyYg
ZmlsZVBhdGgpCiAgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZmlsZVBhdGgpOwogfQog
Ci1SZWY8TmV0d29ya1N0b3JhZ2VNYW5hZ2VyPiBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNyZWF0
ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3Ry
aW5nJiBjdXN0b21Mb2NhbFN0b3JhZ2VQYXRoKQorUmVmPE5ldHdvcmtTdG9yYWdlTWFuYWdlcj4g
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjcmVhdGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBJ
UEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgcGF0aCwg
Y29uc3QgU3RyaW5nJiBjdXN0b21Mb2NhbFN0b3JhZ2VQYXRoLCBjb25zdCBTdHJpbmcmIGN1c3Rv
bUlEQlN0b3JhZ2VQYXRoLCBjb25zdCBTdHJpbmcmIGN1c3RvbUNhY2hlU3RvcmFnZVBhdGgsIHVp
bnQ2NF90IGRlZmF1bHRPcmlnaW5RdW90YSwgdWludDY0X3QgZGVmYXVsdFRoaXJkUGFydHlPcmln
aW5RdW90YSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXR3b3JrU3RvcmFnZU1hbmFn
ZXIoc2Vzc2lvbklELCBwYXRoLCBjdXN0b21Mb2NhbFN0b3JhZ2VQYXRoKSk7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyKHNlc3Npb25JRCwgY29ubmVjdGlv
biwgcGF0aCwgY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCwgY3VzdG9tSURCU3RvcmFnZVBhdGgsIGN1
c3RvbUNhY2hlU3RvcmFnZVBhdGgsIGRlZmF1bHRPcmlnaW5RdW90YSwgZGVmYXVsdFRoaXJkUGFy
dHlPcmlnaW5RdW90YSkpOwogfQogCi1OZXR3b3JrU3RvcmFnZU1hbmFnZXI6Ok5ldHdvcmtTdG9y
YWdlTWFuYWdlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcGF0aCwg
Y29uc3QgU3RyaW5nJiBjdXN0b21Mb2NhbFN0b3JhZ2VQYXRoKQorTmV0d29ya1N0b3JhZ2VNYW5h
Z2VyOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBJUEM6
OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgcGF0aCwgY29u
c3QgU3RyaW5nJiBjdXN0b21Mb2NhbFN0b3JhZ2VQYXRoLCBjb25zdCBTdHJpbmcmIGN1c3RvbUlE
QlN0b3JhZ2VQYXRoLCBjb25zdCBTdHJpbmcmIGN1c3RvbUNhY2hlU3RvcmFnZVBhdGgsIHVpbnQ2
NF90IGRlZmF1bHRPcmlnaW5RdW90YSwgdWludDY0X3QgZGVmYXVsdFRoaXJkUGFydHlPcmlnaW5R
dW90YSkKICAgICA6IG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKICAgICAsIG1fcXVldWUoU3VzcGVu
ZGFibGVXb3JrUXVldWU6OmNyZWF0ZSgiY29tLmFwcGxlLldlYktpdC5TdG9yYWdlIikpCisgICAg
LCBtX2RlZmF1bHRPcmlnaW5RdW90YShkZWZhdWx0T3JpZ2luUXVvdGEpCisgICAgLCBtX2RlZmF1
bHRUaGlyZFBhcnR5T3JpZ2luUXVvdGEoZGVmYXVsdFRoaXJkUGFydHlPcmlnaW5RdW90YSkKKyAg
ICAsIG1fcGFyZW50Q29ubmVjdGlvbihjb25uZWN0aW9uKQogewogICAgIEFTU0VSVChSdW5Mb29w
Ojppc01haW4oKSk7CiAKLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IFJlZiB7ICp0aGlzIH0sIHBhdGggPSBwYXRoLmlzb2xhdGVkQ29weSgpLCBjdXN0b21Mb2Nh
bFN0b3JhZ2VQYXRoID0gY3Jvc3NUaHJlYWRDb3B5KGN1c3RvbUxvY2FsU3RvcmFnZVBhdGgpXSgp
IG11dGFibGUgeworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
UmVmIHsgKnRoaXMgfSwgcGF0aCA9IHBhdGguaXNvbGF0ZWRDb3B5KCksIGN1c3RvbUxvY2FsU3Rv
cmFnZVBhdGggPSBjcm9zc1RocmVhZENvcHkoY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCksIGN1c3Rv
bUlEQlN0b3JhZ2VQYXRoID0gY3Jvc3NUaHJlYWRDb3B5KGN1c3RvbUlEQlN0b3JhZ2VQYXRoKSwg
Y3VzdG9tQ2FjaGVTdG9yYWdlUGF0aCA9IGNyb3NzVGhyZWFkQ29weShjdXN0b21DYWNoZVN0b3Jh
Z2VQYXRoKV0oKSBtdXRhYmxlIHsKICAgICAgICAgbV9maWxlU3lzdGVtU3RvcmFnZUhhbmRsZVJl
Z2lzdHJ5ID0gbWFrZVVuaXF1ZTxGaWxlU3lzdGVtU3RvcmFnZUhhbmRsZVJlZ2lzdHJ5PigpOwog
ICAgICAgICBtX3N0b3JhZ2VBcmVhUmVnaXN0cnkgPSBtYWtlVW5pcXVlPFN0b3JhZ2VBcmVhUmVn
aXN0cnk+KCk7CisgICAgICAgIG1faWRiU3RvcmFnZVJlZ2lzdHJ5ID0gbWFrZVVuaXF1ZTxJREJT
dG9yYWdlUmVnaXN0cnk+KCk7CiAgICAgICAgIG1fcGF0aCA9IHBhdGg7CiAgICAgICAgIG1fY3Vz
dG9tTG9jYWxTdG9yYWdlUGF0aCA9IGN1c3RvbUxvY2FsU3RvcmFnZVBhdGg7CisgICAgICAgIG1f
Y3VzdG9tSURCU3RvcmFnZVBhdGggPSBjdXN0b21JREJTdG9yYWdlUGF0aDsKKyAgICAgICAgbV9j
dXN0b21DYWNoZVN0b3JhZ2VQYXRoID0gY3VzdG9tQ2FjaGVTdG9yYWdlUGF0aDsKICAgICAgICAg
aWYgKCFtX3BhdGguaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBhdXRvIHNhbHRQYXRoID0gRmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fcGF0aCwgInNhbHQiKTsKICAgICAg
ICAgICAgIG1fc2FsdCA9IHZhbHVlT3JEZWZhdWx0KEZpbGVTeXN0ZW06OnJlYWRPck1ha2VTYWx0
KHNhbHRQYXRoKSk7CkBAIC0xMzEsNyArMTQ1LDEwIEBAIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6
fk5ldHdvcmtTdG9yYWdlTWFuYWdlcigpCiAKIGJvb2wgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpj
YW5IYW5kbGVUeXBlcyhPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB0eXBlcykKIHsKLSAgICBy
ZXR1cm4gdHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpMb2NhbFN0b3JhZ2UpIHx8IHR5
cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6U2Vzc2lvblN0b3JhZ2UpIHx8IHR5cGVzLmNv
bnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6RmlsZVN5c3RlbSk7CisgICAgcmV0dXJuIHR5cGVzLmNv
bnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6TG9jYWxTdG9yYWdlKQorICAgICAgICB8fCB0eXBlcy5j
b250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlNlc3Npb25TdG9yYWdlKQorICAgICAgICB8fCB0eXBl
cy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkZpbGVTeXN0ZW0pCisgICAgICAgIHx8IHR5cGVz
LmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKTsKIH0KIAogdm9p
ZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNsb3NlKCkKQEAgLTE3MCw2ICsxODcsNyBAQCB2b2lk
IE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6c3RvcFJlY2VpdmluZ01lc3NhZ2VGcm9tQ29ubmVjdGlv
bihJUEM6OkNvbm5lY3Rpb24mCiAKICAgICBjb25uZWN0aW9uLnJlbW92ZVdvcmtRdWV1ZU1lc3Nh
Z2VSZWNlaXZlcihNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCkpOwogICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
UmVmIHsgKnRoaXMgfSwgY29ubmVjdGlvbiA9IGNvbm5lY3Rpb24udW5pcXVlSUQoKV0oKSBtdXRh
YmxlIHsKKyAgICAgICAgbV9pZGJTdG9yYWdlUmVnaXN0cnktPnJlbW92ZUNvbm5lY3Rpb25Ub0Ns
aWVudChjb25uZWN0aW9uKTsKICAgICAgICAgbV9sb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2Vycy5y
ZW1vdmVJZihbJl0oYXV0byYgZW50cnkpIHsKICAgICAgICAgICAgIGF1dG8mIG1hbmFnZXIgPSBl
bnRyeS52YWx1ZTsKICAgICAgICAgICAgIG1hbmFnZXItPmNvbm5lY3Rpb25DbG9zZWQoY29ubmVj
dGlvbik7CkBAIC0yMjIsNyArMjQwLDE0IEBAIE9yaWdpblN0b3JhZ2VNYW5hZ2VyJiBOZXR3b3Jr
U3RvcmFnZU1hbmFnZXI6OmxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIoY29uc3QgV2ViCiAgICAg
ICAgICAgICAgICAgd3JpdGVPcmlnaW5Ub0ZpbGVJZk5lY2Vzc2FyeShvcmlnaW5GaWxlUGF0aChv
cmlnaW5EaXJlY3RvcnkpLCBvcmlnaW4pOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KLSAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8T3JpZ2luU3RvcmFnZU1hbmFnZXI+KFdURk1vdmUob3Jp
Z2luRGlyZWN0b3J5KSwgTG9jYWxTdG9yYWdlTWFuYWdlcjo6bG9jYWxTdG9yYWdlRmlsZVBhdGgo
bV9jdXN0b21Mb2NhbFN0b3JhZ2VQYXRoLCBvcmlnaW4pKTsKKyAgICAgICAgYXV0byBsb2NhbFN0
b3JhZ2VQYXRoID0gTG9jYWxTdG9yYWdlTWFuYWdlcjo6bG9jYWxTdG9yYWdlRmlsZVBhdGgobV9j
dXN0b21Mb2NhbFN0b3JhZ2VQYXRoLCBvcmlnaW4pOworICAgICAgICBhdXRvIGlkYlN0b3JhZ2VQ
YXRoID0gSURCU3RvcmFnZU1hbmFnZXI6OmlkYlN0b3JhZ2VPcmlnaW5EaXJlY3RvcnkobV9jdXN0
b21JREJTdG9yYWdlUGF0aCwgb3JpZ2luKTsKKyAgICAgICAgYXV0byBjYWNoZVN0b3JhZ2VQYXRo
ID0gQ2FjaGVTdG9yYWdlOjpFbmdpbmU6OnN0b3JhZ2VQYXRoKG1fY3VzdG9tQ2FjaGVTdG9yYWdl
UGF0aCwgb3JpZ2luKTsKKyAgICAgICAgdWludDY0X3QgcXVvdGEgPSBvcmlnaW4udG9wT3JpZ2lu
ID09IG9yaWdpbi5jbGllbnRPcmlnaW4gPyBtX2RlZmF1bHRPcmlnaW5RdW90YSA6IG1fZGVmYXVs
dFRoaXJkUGFydHlPcmlnaW5RdW90YTsKKyAgICAgICAgUXVvdGFNYW5hZ2VyOjpJbmNyZWFzZVF1
b3RhRnVuY3Rpb24gaW5jcmVhc2VRdW90YUZ1bmN0aW9uID0gW3Nlc3Npb25JRCA9IG1fc2Vzc2lv
bklELCBvcmlnaW4sIGNvbm5lY3Rpb24gPSBtX3BhcmVudENvbm5lY3Rpb25dIChhdXRvIGlkZW50
aWZpZXIsIGF1dG8gY3VycmVudFF1b3RhLCBhdXRvIGN1cnJlbnRVc2FnZSwgYXV0byByZXF1ZXN0
ZWRJbmNyZWFzZSkgbXV0YWJsZSB7CisgICAgICAgICAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQo
Y29ubmVjdGlvbiwgTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkluY3JlYXNlUXVvdGEo
c2Vzc2lvbklELCBvcmlnaW4sIGlkZW50aWZpZXIsIGN1cnJlbnRRdW90YSwgY3VycmVudFVzYWdl
LCByZXF1ZXN0ZWRJbmNyZWFzZSksIDApOworICAgICAgICB9OworICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxPcmlnaW5TdG9yYWdlTWFuYWdlcj4ocXVvdGEsIFdURk1vdmUoaW5jcmVhc2VRdW90
YUZ1bmN0aW9uKSwgV1RGTW92ZShvcmlnaW5EaXJlY3RvcnkpLCBXVEZNb3ZlKGxvY2FsU3RvcmFn
ZVBhdGgpLCBXVEZNb3ZlKGlkYlN0b3JhZ2VQYXRoKSwgV1RGTW92ZShjYWNoZVN0b3JhZ2VQYXRo
KSk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogfQogCkBAIC0yODIsNiArMzA3LDE2IEBAIHZv
aWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjbGVhclN0b3JhZ2VGb3JUZXN0aW5nKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjCiAgICAgfSk7CiB9CiAKK3ZvaWQgTmV0d29ya1N0b3JhZ2VN
YW5hZ2VyOjpkaWRJbmNyZWFzZVF1b3RhKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3Jp
Z2luLCBRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIgaWRlbnRpZmllciwgc3RkOjpvcHRp
b25hbDx1aW50NjRfdD4gbmV3UXVvdGEpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigp
KTsKKworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsg
KnRoaXMgfSwgb3JpZ2luID0gY3Jvc3NUaHJlYWRDb3B5KG9yaWdpbiksIGlkZW50aWZpZXIsIG5l
d1F1b3RhXSgpIG11dGFibGUgeworICAgICAgICBpZiAoYXV0byBtYW5hZ2VyID0gbV9sb2NhbE9y
aWdpblN0b3JhZ2VNYW5hZ2Vycy5nZXQob3JpZ2luKSkKKyAgICAgICAgICAgIG1hbmFnZXItPnF1
b3RhTWFuYWdlcigpLmRpZEluY3JlYXNlUXVvdGEoaWRlbnRpZmllciwgbmV3UXVvdGEpOworICAg
IH0pOworfQorCiB2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZmlsZVN5c3RlbUdldERpcmVj
dG9yeShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9y
aWdpbiYgb3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPFdlYkNvcmU6OkZp
bGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBGaWxlU3lzdGVtU3RvcmFnZUVycm9yPik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CkBAIC00
NTIsNiArNDg3LDkgQEAgSGFzaFNldDxXZWJDb3JlOjpDbGllbnRPcmlnaW4+IE5ldHdvcmtTdG9y
YWdlTWFuYWdlcjo6Z2V0QWxsT3JpZ2lucygpCiAgICAgZm9yIChhdXRvJiBvcmlnaW4gOiBMb2Nh
bFN0b3JhZ2VNYW5hZ2VyOjpvcmlnaW5zT2ZMb2NhbFN0b3JhZ2VEYXRhKG1fY3VzdG9tTG9jYWxT
dG9yYWdlUGF0aCkpCiAgICAgICAgIGFsbE9yaWdpbnMuYWRkKFdlYkNvcmU6OkNsaWVudE9yaWdp
biB7IG9yaWdpbiwgb3JpZ2luIH0pOwogCisgICAgZm9yIChhdXRvJiBvcmlnaW4gOiBJREJTdG9y
YWdlTWFuYWdlcjo6b3JpZ2luc09mSURCU3RvcmFnZURhdGEobV9jdXN0b21JREJTdG9yYWdlUGF0
aCkpCisgICAgICAgIGFsbE9yaWdpbnMuYWRkKG9yaWdpbik7CisKICAgICByZXR1cm4gYWxsT3Jp
Z2luczsKIH0KIApAQCAtNTc5LDEyICs2MTcsMTcgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFn
ZXI6Om1vdmVEYXRhKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgc291cmNlLAog
ICAgICAgICBhdXRvIHRhcmdldE9yaWdpbiA9IFdlYkNvcmU6OkNsaWVudE9yaWdpbiB7IHRhcmdl
dCwgdGFyZ2V0IH07CiAgICAgICAgIAogICAgICAgICAvLyBDbGVhciBleGlzdGluZyBkYXRhIG9m
IHRhcmdldCBvcmlnaW4uCi0gICAgICAgIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHR5cGVz
ID0geyBXZWJzaXRlRGF0YVR5cGU6OkZpbGVTeXN0ZW0sIFdlYnNpdGVEYXRhVHlwZTo6TG9jYWxT
dG9yYWdlLCBXZWJzaXRlRGF0YVR5cGU6OlNlc3Npb25TdG9yYWdlICB9OworICAgICAgICBPcHRp
b25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB0eXBlcyA9IHsKKyAgICAgICAgICAgIFdlYnNpdGVEYXRh
VHlwZTo6RmlsZVN5c3RlbSwKKyAgICAgICAgICAgIFdlYnNpdGVEYXRhVHlwZTo6TG9jYWxTdG9y
YWdlLAorICAgICAgICAgICAgV2Vic2l0ZURhdGFUeXBlOjpTZXNzaW9uU3RvcmFnZSwKKyAgICAg
ICAgICAgIFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzCisgICAgICAgIH07CiAg
ICAgICAgIGxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIodGFyZ2V0T3JpZ2luKS5kZWxldGVEYXRh
KHR5cGVzLCAtV2FsbFRpbWU6OmluZmluaXR5KCkpOwogICAgICAgICByZW1vdmVPcmlnaW5TdG9y
YWdlTWFuYWdlcklmUG9zc2libGUodGFyZ2V0T3JpZ2luKTsKIAogICAgICAgICAvLyBNb3ZlIGRh
dGEgZnJvbSBzb3VyY2Ugb3JpZ2luIHRvIHRhcmdldCBvcmlnaW4uCi0gICAgICAgIGxvY2FsT3Jp
Z2luU3RvcmFnZU1hbmFnZXIoc291cmNlT3JpZ2luKS5tb3ZlRGF0YShvcmlnaW5EaXJlY3RvcnlQ
YXRoKG1fcGF0aCwgdGFyZ2V0T3JpZ2luLCBtX3NhbHQpLCBMb2NhbFN0b3JhZ2VNYW5hZ2VyOjps
b2NhbFN0b3JhZ2VGaWxlUGF0aChtX2N1c3RvbUxvY2FsU3RvcmFnZVBhdGgsIHRhcmdldE9yaWdp
bikpOworICAgICAgICBsb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2VyKHNvdXJjZU9yaWdpbikubW92
ZURhdGEob3JpZ2luRGlyZWN0b3J5UGF0aChtX3BhdGgsIHRhcmdldE9yaWdpbiwgbV9zYWx0KSwg
TG9jYWxTdG9yYWdlTWFuYWdlcjo6bG9jYWxTdG9yYWdlRmlsZVBhdGgobV9jdXN0b21Mb2NhbFN0
b3JhZ2VQYXRoLCB0YXJnZXRPcmlnaW4pLCBJREJTdG9yYWdlTWFuYWdlcjo6aWRiU3RvcmFnZU9y
aWdpbkRpcmVjdG9yeShtX2N1c3RvbUlEQlN0b3JhZ2VQYXRoLCB0YXJnZXRPcmlnaW4pKTsKICAg
ICAgICAgcmVtb3ZlT3JpZ2luU3RvcmFnZU1hbmFnZXJJZlBvc3NpYmxlKHNvdXJjZU9yaWdpbik7
CiAKICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKQEAgLTU5OSw2ICs2NDIsOCBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6
c3VzcGVuZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZQogICAg
ICAgICBmb3IgKGF1dG8mIG1hbmFnZXIgOiBtX2xvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXJzLnZh
bHVlcygpKSB7CiAgICAgICAgICAgICBpZiAoYXV0byBsb2NhbFN0b3JhZ2VNYW5hZ2VyID0gbWFu
YWdlci0+ZXhpc3RpbmdMb2NhbFN0b3JhZ2VNYW5hZ2VyKCkpCiAgICAgICAgICAgICAgICAgbG9j
YWxTdG9yYWdlTWFuYWdlci0+c3luY0xvY2FsU3RvcmFnZSgpOworICAgICAgICAgICAgaWYgKGF1
dG8gaWRiU3RvcmFnZU1hbmFnZXIgPSBtYW5hZ2VyLT5leGlzdGluZ0lEQlN0b3JhZ2VNYW5hZ2Vy
KCkpCisgICAgICAgICAgICAgICAgaWRiU3RvcmFnZU1hbmFnZXItPnN0b3BEYXRhYmFzZUFjdGl2
aXRpZXNGb3JTdXNwZW5kKCk7CiAgICAgICAgIH0KICAgICB9LCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CiB9CkBAIC02MzYsNiArNjgxLDUyIEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VNYW5h
Z2VyOjpzeW5jTG9jYWxTdG9yYWdlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
CiAgICAgfSk7CiB9CiAKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpyZWdpc3RlclRlbXBv
cmFyeUJsb2JGaWxlUGF0aHMoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgZmlsZVBhdGhzKQoreworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7
CisKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0
aGlzIH0sIGNvbm5lY3Rpb25JRCA9IGNvbm5lY3Rpb24udW5pcXVlSUQoKSwgZmlsZVBhdGhzID0g
Y3Jvc3NUaHJlYWRDb3B5KGZpbGVQYXRocyldIHsKKyAgICAgICAgYXV0byYgdGVtcG9yYXJ5Qmxv
YlBhdGhzID0gbV90ZW1wb3JhcnlCbG9iUGF0aHNCeUNvbm5lY3Rpb24uZW5zdXJlKGNvbm5lY3Rp
b25JRCwgW10geworICAgICAgICAgICAgcmV0dXJuIEhhc2hTZXQ8U3RyaW5nPiB7IH07CisgICAg
ICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgdGVtcG9yYXJ5QmxvYlBhdGhzLmFkZChm
aWxlUGF0aHMuYmVnaW4oKSwgZmlsZVBhdGhzLmVuZCgpKTsKKyAgICB9KTsKK30KKwordm9pZCBO
ZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnJlcXVlc3RTcGFjZShjb25zdCBXZWJDb3JlOjpDbGllbnRP
cmlnaW4mIG9yaWdpbiwgdWludDY0X3Qgc2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OworCisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAq
dGhpcyB9LCBvcmlnaW4gPSBjcm9zc1RocmVhZENvcHkob3JpZ2luKSwgc2l6ZSwgY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAg
ICAgbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcihvcmlnaW4pLnF1b3RhTWFuYWdlcigpLnJlcXVl
c3RTcGFjZShzaXplLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0oYXV0byBkZWNpc2lvbikgbXV0YWJsZSB7CisgICAgICAgICAgICBSdW5Mb29wOjptYWlu
KCkuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
ciksIGRlY2lzaW9uXSgpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKGRlY2lzaW9uID09IFF1b3RhTWFuYWdlcjo6RGVjaXNpb246OkdyYW50KTsKKyAgICAgICAg
ICAgIH0pOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1h
bmFnZXI6OnJlc2V0UXVvdGFGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworCisg
ICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFi
bGUgeworICAgICAgICBmb3IgKGF1dG8mIG1hbmFnZXIgOiBtX2xvY2FsT3JpZ2luU3RvcmFnZU1h
bmFnZXJzLnZhbHVlcygpKQorICAgICAgICAgICAgbWFuYWdlci0+cXVvdGFNYW5hZ2VyKCkucmVz
ZXRRdW90YUZvclRlc3RpbmcoKTsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICB9KTsKK30KKwordm9pZCBOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6OnJlc2V0UXVvdGFVcGRhdGVkQmFzZWRPblVzYWdlRm9yVGVzdGluZyhjb25z
dCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbikKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOworCisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBSZWYgeyAqdGhpcyB9LCBvcmlnaW4gPSBjcm9zc1RocmVhZENvcHkob3JpZ2luKV0oKSBtdXRh
YmxlIHsKKyAgICAgICAgaWYgKGF1dG8gbWFuYWdlciA9IG1fbG9jYWxPcmlnaW5TdG9yYWdlTWFu
YWdlcnMuZ2V0KG9yaWdpbikpCisgICAgICAgICAgICBtYW5hZ2VyLT5xdW90YU1hbmFnZXIoKS5y
ZXNldFF1b3RhVXBkYXRlZEJhc2VkT25Vc2FnZUZvclRlc3RpbmcoKTsKKyAgICB9KTsKK30KKwog
dm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb1N0b3JhZ2VBcmVhKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgV2ViQ29yZTo6U3RvcmFnZVR5cGUgdHlwZSwgU3RvcmFnZUFy
ZWFNYXBJZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlm
aWVyIG5hbWVzcGFjZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3Jp
Z2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBcmVhSWRlbnRpZmllciwgSGFzaE1h
cDxTdHJpbmcsIFN0cmluZz4sIHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKQEAgLTcyMyw1ICs4MTQsMTk1IEBAIHZvaWQg
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjbGVhcihJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
IFN0b3JhZ2VBcmVhSWRlbnRpCiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAordm9pZCBO
ZXR3b3JrU3RvcmFnZU1hbmFnZXI6Om9wZW5EYXRhYmFzZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24sIGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkKK3sKKyAg
ICBhdXRvJiBjb25uZWN0aW9uVG9DbGllbnQgPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+ZW5zdXJl
Q29ubmVjdGlvblRvQ2xpZW50KGNvbm5lY3Rpb24udW5pcXVlSUQoKSwgcmVxdWVzdERhdGEucmVx
dWVzdElkZW50aWZpZXIoKS5jb25uZWN0aW9uSWRlbnRpZmllcigpKTsKKyAgICBsb2NhbE9yaWdp
blN0b3JhZ2VNYW5hZ2VyKHJlcXVlc3REYXRhLmRhdGFiYXNlSWRlbnRpZmllcigpLm9yaWdpbigp
KS5pZGJTdG9yYWdlTWFuYWdlcigqbV9pZGJTdG9yYWdlUmVnaXN0cnkpLm9wZW5EYXRhYmFzZShj
b25uZWN0aW9uVG9DbGllbnQsIHJlcXVlc3REYXRhKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFn
ZU1hbmFnZXI6Om9wZW5EQlJlcXVlc3RDYW5jZWxsZWQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVz
dERhdGEmIHJlcXVlc3REYXRhKQoreworICAgIGxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIocmVx
dWVzdERhdGEuZGF0YWJhc2VJZGVudGlmaWVyKCkub3JpZ2luKCkpLmlkYlN0b3JhZ2VNYW5hZ2Vy
KCptX2lkYlN0b3JhZ2VSZWdpc3RyeSkub3BlbkRCUmVxdWVzdENhbmNlbGxlZChyZXF1ZXN0RGF0
YSk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVEYXRhYmFzZShJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiBy
ZXF1ZXN0RGF0YSkKK3sKKyAgICBhdXRvJiBjb25uZWN0aW9uVG9DbGllbnQgPSBtX2lkYlN0b3Jh
Z2VSZWdpc3RyeS0+ZW5zdXJlQ29ubmVjdGlvblRvQ2xpZW50KGNvbm5lY3Rpb24udW5pcXVlSUQo
KSwgcmVxdWVzdERhdGEucmVxdWVzdElkZW50aWZpZXIoKS5jb25uZWN0aW9uSWRlbnRpZmllcigp
KTsKKyAgICBsb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2VyKHJlcXVlc3REYXRhLmRhdGFiYXNlSWRl
bnRpZmllcigpLm9yaWdpbigpKS5pZGJTdG9yYWdlTWFuYWdlcigqbV9pZGJTdG9yYWdlUmVnaXN0
cnkpLmRlbGV0ZURhdGFiYXNlKGNvbm5lY3Rpb25Ub0NsaWVudCwgcmVxdWVzdERhdGEpOworfQor
Cit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZXN0YWJsaXNoVHJhbnNhY3Rpb24odWludDY0
X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCVHJhbnNh
Y3Rpb25JbmZvJiB0cmFuc2FjdGlvbkluZm8pCit7CisgICAgaWYgKGF1dG8gY29ubmVjdGlvbiA9
IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT5jb25uZWN0aW9uKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50
aWZpZXIpKQorICAgICAgICBjb25uZWN0aW9uLT5lc3RhYmxpc2hUcmFuc2FjdGlvbih0cmFuc2Fj
dGlvbkluZm8pOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGF0YWJhc2VDb25u
ZWN0aW9uUGVuZGluZ0Nsb3NlKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIp
Cit7CisgICAgaWYgKGF1dG8gY29ubmVjdGlvbiA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT5jb25u
ZWN0aW9uKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpKQorICAgICAgICBjb25uZWN0aW9u
LT5jb25uZWN0aW9uUGVuZGluZ0Nsb3NlRnJvbUNsaWVudCgpOworfQorCit2b2lkIE5ldHdvcmtT
dG9yYWdlTWFuYWdlcjo6ZGF0YWJhc2VDb25uZWN0aW9uQ2xvc2VkKHVpbnQ2NF90IGRhdGFiYXNl
Q29ubmVjdGlvbklkZW50aWZpZXIpCit7CisgICAgaWYgKGF1dG8gY29ubmVjdGlvbiA9IG1faWRi
U3RvcmFnZVJlZ2lzdHJ5LT5jb25uZWN0aW9uKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIp
KQorICAgICAgICBjb25uZWN0aW9uLT5jb25uZWN0aW9uQ2xvc2VkRnJvbUNsaWVudCgpOworfQor
Cit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6YWJvcnRPcGVuQW5kVXBncmFkZU5lZWRlZCh1
aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJREJS
ZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcikKK3sKKyAgICBpZiAoYXV0
byB0cmFuc2FjdGlvbiA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT50cmFuc2FjdGlvbih0cmFuc2Fj
dGlvbklkZW50aWZpZXIpKQorICAgICAgICB0cmFuc2FjdGlvbi0+YWJvcnRXaXRob3V0Q2FsbGJh
Y2soKTsKKworICAgIGlmIChhdXRvIGNvbm5lY3Rpb24gPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+
Y29ubmVjdGlvbihkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKSkKKyAgICAgICAgY29ubmVj
dGlvbi0+Y29ubmVjdGlvbkNsb3NlZEZyb21DbGllbnQoKTsKK30KKwordm9pZCBOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6OmRpZEZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQodWludDY0X3QgZGF0YWJhc2VD
b25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVy
JiByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SW5kZXhlZERCOjpDb25uZWN0aW9u
Q2xvc2VkT25CZWhhbGZPZlNlcnZlciBjb25uZWN0aW9uQ2xvc2VkKQoreworICAgIGlmIChhdXRv
IGNvbm5lY3Rpb24gPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+Y29ubmVjdGlvbihkYXRhYmFzZUNv
bm5lY3Rpb25JZGVudGlmaWVyKSkKKyAgICAgICAgY29ubmVjdGlvbi0+ZGlkRmlyZVZlcnNpb25D
aGFuZ2VFdmVudChyZXF1ZXN0SWRlbnRpZmllciwgY29ubmVjdGlvbkNsb3NlZCk7Cit9CisKK3Zv
aWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjphYm9ydFRyYW5zYWN0aW9uKGNvbnN0IFdlYkNvcmU6
OklEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKQoreworICAgIGlm
IChhdXRvIHRyYW5zYWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPnRyYW5zYWN0aW9uKHRy
YW5zYWN0aW9uSWRlbnRpZmllcikpCisgICAgICAgIHRyYW5zYWN0aW9uLT5hYm9ydCgpOworfQor
Cit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y29tbWl0VHJhbnNhY3Rpb24oY29uc3QgV2Vi
Q29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2
NF90IHBlbmRpbmdSZXF1ZXN0Q291bnQpCit7CisgICAgaWYgKGF1dG8gdHJhbnNhY3Rpb24gPSBt
X2lkYlN0b3JhZ2VSZWdpc3RyeS0+dHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZGVudGlmaWVyKSkK
KyAgICAgICAgdHJhbnNhY3Rpb24tPmNvbW1pdChwZW5kaW5nUmVxdWVzdENvdW50KTsKK30KKwor
dm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmRpZEZpbmlzaEhhbmRsaW5nVmVyc2lvbkNoYW5n
ZVRyYW5zYWN0aW9uKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0
IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKQor
eworICAgIGlmIChhdXRvIGNvbm5lY3Rpb24gPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+Y29ubmVj
dGlvbihkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKSkKKyAgICAgICAgY29ubmVjdGlvbi0+
ZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlKHRyYW5zYWN0aW9uSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBX
ZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IFdlYkNvcmU6OklEQk9i
amVjdFN0b3JlSW5mbyYgb2JqZWN0U3RvcmVJbmZvKQoreworICAgIGlmIChhdXRvIHRyYW5zYWN0
aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPnRyYW5zYWN0aW9uKHJlcXVlc3REYXRhLnRyYW5z
YWN0aW9uSWRlbnRpZmllcigpKSkgeworICAgICAgICBBU1NFUlQodHJhbnNhY3Rpb24tPmlzVmVy
c2lvbkNoYW5nZSgpKTsKKyAgICAgICAgdHJhbnNhY3Rpb24tPmNyZWF0ZU9iamVjdFN0b3JlKHJl
cXVlc3REYXRhLCBvYmplY3RTdG9yZUluZm8pOworICAgIH0KK30KKwordm9pZCBOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6OmRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3RE
YXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUpCit7CisgICAg
aWYgKGF1dG8gdHJhbnNhY3Rpb24gPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+dHJhbnNhY3Rpb24o
cmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCkpKSB7CisgICAgICAgIEFTU0VSVCh0
cmFuc2FjdGlvbi0+aXNWZXJzaW9uQ2hhbmdlKCkpOworICAgICAgICB0cmFuc2FjdGlvbi0+ZGVs
ZXRlT2JqZWN0U3RvcmUocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlTmFtZSk7CisgICAgfQorfQor
Cit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6cmVuYW1lT2JqZWN0U3RvcmUoY29uc3QgV2Vi
Q29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCB1aW50NjRfdCBvYmplY3RTdG9yZUlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSkKK3sKKyAgICBpZiAoYXV0byB0cmFuc2Fj
dGlvbiA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT50cmFuc2FjdGlvbihyZXF1ZXN0RGF0YS50cmFu
c2FjdGlvbklkZW50aWZpZXIoKSkpIHsKKyAgICAgICAgQVNTRVJUKHRyYW5zYWN0aW9uLT5pc1Zl
cnNpb25DaGFuZ2UoKSk7CisgICAgICAgIHRyYW5zYWN0aW9uLT5yZW5hbWVPYmplY3RTdG9yZShy
ZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBuZXdOYW1lKTsKKyAgICB9Cit9CisK
K3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjbGVhck9iamVjdFN0b3JlKGNvbnN0IFdlYkNv
cmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVu
dGlmaWVyKQoreworICAgIGlmIChhdXRvIHRyYW5zYWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0
cnktPnRyYW5zYWN0aW9uKHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpKSkKKyAg
ICAgICAgdHJhbnNhY3Rpb24tPmNsZWFyT2JqZWN0U3RvcmUocmVxdWVzdERhdGEsIG9iamVjdFN0
b3JlSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVJ
bmRleChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IFdl
YkNvcmU6OklEQkluZGV4SW5mbyYgaW5kZXhJbmZvKQoreworICAgIGlmIChhdXRvIHRyYW5zYWN0
aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPnRyYW5zYWN0aW9uKHJlcXVlc3REYXRhLnRyYW5z
YWN0aW9uSWRlbnRpZmllcigpKSkKKyAgICAgICAgdHJhbnNhY3Rpb24tPmNyZWF0ZUluZGV4KHJl
cXVlc3REYXRhLCBpbmRleEluZm8pOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6
ZGVsZXRlSW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCB1
aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lKQor
eworICAgIGlmIChhdXRvIHRyYW5zYWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPnRyYW5z
YWN0aW9uKHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpKSkKKyAgICAgICAgdHJh
bnNhY3Rpb24tPmRlbGV0ZUluZGV4KHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIs
IGluZGV4TmFtZSk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpyZW5hbWVJbmRl
eChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIHVpbnQ2NF90IG9i
amVjdFN0b3JlSWRlbnRpZmllciwgdWludDY0X3QgaW5kZXhJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIG5ld05hbWUpCit7CisgICAgaWYgKGF1dG8gdHJhbnNhY3Rpb24gPSBtX2lkYlN0b3JhZ2VS
ZWdpc3RyeS0+dHJhbnNhY3Rpb24ocmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCkp
KQorICAgICAgICB0cmFuc2FjdGlvbi0+cmVuYW1lSW5kZXgocmVxdWVzdERhdGEsIG9iamVjdFN0
b3JlSWRlbnRpZmllciwgaW5kZXhJZGVudGlmaWVyLCBuZXdOYW1lKTsKK30KKwordm9pZCBOZXR3
b3JrU3RvcmFnZU1hbmFnZXI6OnB1dE9yQWRkKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwg
Y29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBXZWJDb3Jl
OjpJREJLZXlEYXRhJiBrZXlEYXRhLCBjb25zdCBXZWJDb3JlOjpJREJWYWx1ZSYgdmFsdWUsIFdl
YkNvcmU6OkluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlIG92ZXJ3cml0ZU1vZGUp
Cit7CisgICAgaWYgKHZhbHVlLmJsb2JVUkxzKCkuc2l6ZSgpICE9IHZhbHVlLmJsb2JGaWxlUGF0
aHMoKS5zaXplKCkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRkFVTFQoSW5kZXhlZERCLCAiTmV0
d29ya1N0b3JhZ2VNYW5hZ2VyOjpwdXRPckFkZDogTnVtYmVyIG9mIGJsb2IgVVJMcyBkb2Vzbid0
IG1hdGNoIHRoZSBudW1iZXIgb2YgYmxvYiBmaWxlIHBhdGhzLiIpOworICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFZhbGlkYXRl
IHRlbXBvcmFyeSBibG9iIHBhdGhzIGluIHx2YWx1ZXwgdG8gbWFrZSBzdXJlIHRoZXkgYmVsb25n
IHRvIHRoZSBzb3VyY2UgcHJvY2Vzcy4KKyAgICBpZiAoIXZhbHVlLmJsb2JGaWxlUGF0aHMoKS5p
c0VtcHR5KCkpIHsKKyAgICAgICAgYXV0byBpdCA9IG1fdGVtcG9yYXJ5QmxvYlBhdGhzQnlDb25u
ZWN0aW9uLmZpbmQoY29ubmVjdGlvbi51bmlxdWVJRCgpKTsKKyAgICAgICAgaWYgKGl0ID09IG1f
dGVtcG9yYXJ5QmxvYlBhdGhzQnlDb25uZWN0aW9uLmVuZCgpKSB7CisgICAgICAgICAgICBSRUxF
QVNFX0xPR19GQVVMVChJbmRleGVkREIsICJOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnB1dE9yQWRk
OiBJREJWYWx1ZSBjb250YWlucyBibG9iIHBhdGhzIGJ1dCBub25lIGFyZSBhbGxvd2VkIGZvciB0
aGlzIHByb2Nlc3MiKTsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgYXV0byYgdGVtcG9yYXJ5QmxvYlBh
dGhzRm9yQ29ubmVjdGlvbiA9IGl0LT52YWx1ZTsKKyAgICAgICAgZm9yIChhdXRvJiBibG9iRmls
ZVBhdGggOiB2YWx1ZS5ibG9iRmlsZVBhdGhzKCkpIHsKKyAgICAgICAgICAgIGlmICghdGVtcG9y
YXJ5QmxvYlBhdGhzRm9yQ29ubmVjdGlvbi5yZW1vdmUoYmxvYkZpbGVQYXRoKSkgeworICAgICAg
ICAgICAgICAgIFJFTEVBU0VfTE9HX0ZBVUxUKEluZGV4ZWREQiwgIk5ldHdvcmtTdG9yYWdlTWFu
YWdlcjo6cHV0T3JBZGQ6IEJsb2IgcGF0aCB3YXMgbm90IGNyZWF0ZWQgZm9yIHRoaXMgV2ViUHJv
Y2VzcyIpOworICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGlm
IChhdXRvIHRyYW5zYWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPnRyYW5zYWN0aW9uKHJl
cXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpKSkKKyAgICAgICAgdHJhbnNhY3Rpb24t
PnB1dE9yQWRkKHJlcXVlc3REYXRhLCBrZXlEYXRhLCB2YWx1ZSwgb3ZlcndyaXRlTW9kZSk7Cit9
CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpnZXRSZWNvcmQoY29uc3QgV2ViQ29yZTo6
SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBXZWJDb3JlOjpJREJHZXRSZWNvcmRE
YXRhJiBnZXRSZWNvcmREYXRhKQoreworICAgIGlmIChhdXRvIHRyYW5zYWN0aW9uID0gbV9pZGJT
dG9yYWdlUmVnaXN0cnktPnRyYW5zYWN0aW9uKHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRp
ZmllcigpKSkKKyAgICAgICAgdHJhbnNhY3Rpb24tPmdldFJlY29yZChyZXF1ZXN0RGF0YSwgZ2V0
UmVjb3JkRGF0YSk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpnZXRBbGxSZWNv
cmRzKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgV2Vi
Q29yZTo6SURCR2V0QWxsUmVjb3Jkc0RhdGEmIGdldEFsbFJlY29yZHNEYXRhKQoreworICAgIGlm
IChhdXRvIHRyYW5zYWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPnRyYW5zYWN0aW9uKHJl
cXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpKSkKKyAgICAgICAgdHJhbnNhY3Rpb24t
PmdldEFsbFJlY29yZHMocmVxdWVzdERhdGEsIGdldEFsbFJlY29yZHNEYXRhKTsKK30KKwordm9p
ZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmdldENvdW50KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVl
c3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgV2ViQ29yZTo6SURCS2V5UmFuZ2VEYXRhJiBrZXlS
YW5nZURhdGEpCit7CisgICAgaWYgKGF1dG8gdHJhbnNhY3Rpb24gPSBtX2lkYlN0b3JhZ2VSZWdp
c3RyeS0+dHJhbnNhY3Rpb24ocmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCkpKQor
ICAgICAgICB0cmFuc2FjdGlvbi0+Z2V0Q291bnQocmVxdWVzdERhdGEsIGtleVJhbmdlRGF0YSk7
Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVSZWNvcmQoY29uc3QgV2Vi
Q29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBXZWJDb3JlOjpJREJLZXlS
YW5nZURhdGEmIGtleVJhbmdlRGF0YSkKK3sKKyAgICBpZiAoYXV0byB0cmFuc2FjdGlvbiA9IG1f
aWRiU3RvcmFnZVJlZ2lzdHJ5LT50cmFuc2FjdGlvbihyZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklk
ZW50aWZpZXIoKSkpCisgICAgICAgIHRyYW5zYWN0aW9uLT5kZWxldGVSZWNvcmQocmVxdWVzdERh
dGEsIGtleVJhbmdlRGF0YSk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpvcGVu
Q3Vyc29yKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3Qg
V2ViQ29yZTo6SURCQ3Vyc29ySW5mbyYgY3Vyc29ySW5mbykKK3sKKyAgICBpZiAoYXV0byB0cmFu
c2FjdGlvbiA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT50cmFuc2FjdGlvbihyZXF1ZXN0RGF0YS50
cmFuc2FjdGlvbklkZW50aWZpZXIoKSkpCisgICAgICAgIHRyYW5zYWN0aW9uLT5vcGVuQ3Vyc29y
KHJlcXVlc3REYXRhLCBjdXJzb3JJbmZvKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFn
ZXI6Oml0ZXJhdGVDdXJzb3IoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3RE
YXRhLCBjb25zdCBXZWJDb3JlOjpJREJJdGVyYXRlQ3Vyc29yRGF0YSYgY3Vyc29yRGF0YSkKK3sK
KyAgICBpZiAoYXV0byB0cmFuc2FjdGlvbiA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT50cmFuc2Fj
dGlvbihyZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSkpCisgICAgICAgIHRyYW5z
YWN0aW9uLT5pdGVyYXRlQ3Vyc29yKHJlcXVlc3REYXRhLCBjdXJzb3JEYXRhKTsKK30KKwordm9p
ZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRl
bnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYg
b3JpZ2luKQoreworICAgIGF1dG8mIGNvbm5lY3Rpb25Ub0NsaWVudCA9IG1faWRiU3RvcmFnZVJl
Z2lzdHJ5LT5lbnN1cmVDb25uZWN0aW9uVG9DbGllbnQoY29ubmVjdGlvbi51bmlxdWVJRCgpLCBy
ZXF1ZXN0SWRlbnRpZmllci5jb25uZWN0aW9uSWRlbnRpZmllcigpKTsKKyAgICBhdXRvIHJlc3Vs
dCA9IGxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIob3JpZ2luKS5pZGJTdG9yYWdlTWFuYWdlcigq
bV9pZGJTdG9yYWdlUmVnaXN0cnkpLmdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucygpOwor
ICAgIGNvbm5lY3Rpb25Ub0NsaWVudC5kaWRHZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMo
cmVxdWVzdElkZW50aWZpZXIsIFdURk1vdmUocmVzdWx0KSk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3Jh
Z2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmgKaW5kZXggMTVjMDM3MmU2NmE3ZjYyODQ5
OTI3ZjFjMzdmMTZhNjk1ODdmNDUwMS4uOWMzZDJkNjQwNmZlZTliMmI0ZTZjYTI2ZjdiNjVmZTBj
NzhiODNiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdl
L05ldHdvcmtTdG9yYWdlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuaApAQCAtMzYsNiArMzYsOCBAQAogI2lu
Y2x1ZGUgPFdlYkNvcmUvQ2xpZW50T3JpZ2luLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lz
dGVtSGFuZGxlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbVN5bmNB
Y2Nlc3NIYW5kbGVJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JREJSZXNvdXJjZUlk
ZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0luZGV4ZWREQi5oPgogI2luY2x1ZGUgPHBh
bC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCkBAIC00NCwxOCArNDYs
MzEgQEAgY2xhc3MgU2hhcmVkRmlsZUhhbmRsZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewor
Y2xhc3MgSURCQ3Vyc29ySW5mbzsKK2NsYXNzIElEQktleURhdGE7CitjbGFzcyBJREJJbmRleElu
Zm87CitjbGFzcyBJREJPYmplY3RTdG9yZUluZm87CitjbGFzcyBJREJSZXF1ZXN0RGF0YTsKK2Ns
YXNzIElEQlRyYW5zYWN0aW9uSW5mbzsKK2NsYXNzIElEQlZhbHVlOwogc3RydWN0IENsaWVudE9y
aWdpbjsKK3N0cnVjdCBJREJHZXRBbGxSZWNvcmRzRGF0YTsKK3N0cnVjdCBJREJHZXRSZWNvcmRE
YXRhOworc3RydWN0IElEQkdldEFsbFJlY29yZHNEYXRhOworc3RydWN0IElEQkl0ZXJhdGVDdXJz
b3JEYXRhOworc3RydWN0IElEQktleVJhbmdlRGF0YTsKIGVudW0gY2xhc3MgU3RvcmFnZVR5cGUg
OiB1aW50OF90OwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgRmlsZVN5c3RlbVN0
b3JhZ2VIYW5kbGVSZWdpc3RyeTsKK2NsYXNzIElEQlN0b3JhZ2VSZWdpc3RyeTsKIGNsYXNzIFN0
b3JhZ2VBcmVhUmVnaXN0cnk7CiAKIGNsYXNzIE5ldHdvcmtTdG9yYWdlTWFuYWdlciBmaW5hbCA6
IHB1YmxpYyBJUEM6OkNvbm5lY3Rpb246OldvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlciB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZjxOZXR3b3JrU3RvcmFnZU1hbmFnZXI+IGNyZWF0ZShQQUw6OlNl
c3Npb25JRCwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGN1c3RvbUxvY2FsU3Rv
cmFnZVBhdGgpOworICAgIHN0YXRpYyBSZWY8TmV0d29ya1N0b3JhZ2VNYW5hZ2VyPiBjcmVhdGUo
UEFMOjpTZXNzaW9uSUQsIElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIGNvbnN0IFN0cmluZyYg
cGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21Mb2NhbFN0b3JhZ2VQYXRoLCBjb25zdCBTdHJpbmcm
IGN1c3RvbUlEQlN0b3JhZ2VQYXRoLCBjb25zdCBTdHJpbmcmIGN1c3RvbUNhY2hlU3RvcmFnZVBh
dGgsIHVpbnQ2NF90IGRlZmF1bHRPcmlnaW5RdW90YSwgdWludDY0X3QgZGVmYXVsdFRoaXJkUGFy
dHlPcmlnaW5RdW90YSk7CiAgICAgc3RhdGljIGJvb2wgY2FuSGFuZGxlVHlwZXMoT3B0aW9uU2V0
PFdlYnNpdGVEYXRhVHlwZT4pOwogCiAgICAgdm9pZCBzdGFydFJlY2VpdmluZ01lc3NhZ2VGcm9t
Q29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24mKTsKQEAgLTY0LDYgKzc5LDcgQEAgcHVibGljOgog
ICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbklE
OyB9CiAgICAgdm9pZCBjbG9zZSgpOwogICAgIHZvaWQgY2xlYXJTdG9yYWdlRm9yVGVzdGluZyhD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgZGlkSW5jcmVhc2VRdW90YShj
b25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZp
ZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IG5ld1F1b3RhKTsKICAgICB2b2lkIGZldGNoRGF0
YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0
b3I8V2Vic2l0ZURhdGE6OkVudHJ5PiYmKT4mJik7CiAgICAgdm9pZCBkZWxldGVEYXRhKE9wdGlv
blNldDxXZWJzaXRlRGF0YVR5cGU+LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhPiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBkZWxldGVE
YXRhTW9kaWZpZWRTaW5jZShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgV2FsbFRpbWUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CkBAIC03MywxNCArODksMTggQEAgcHVibGljOgog
ICAgIHZvaWQgcmVzdW1lKCk7CiAgICAgdm9pZCBoYW5kbGVMb3dNZW1vcnlXYXJuaW5nKCk7CiAg
ICAgdm9pZCBzeW5jTG9jYWxTdG9yYWdlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Cisg
ICAgdm9pZCByZWdpc3RlclRlbXBvcmFyeUJsb2JGaWxlUGF0aHMoSVBDOjpDb25uZWN0aW9uJiwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mKTsKKyAgICB2b2lkIHJlcXVlc3RTcGFjZShjb25zdCBXZWJD
b3JlOjpDbGllbnRPcmlnaW4mLCB1aW50NjRfdCBzaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmKTsKKyAgICB2b2lkIHJlc2V0UXVvdGFGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCByZXNldFF1b3RhVXBkYXRlZEJhc2VkT25Vc2FnZUZv
clRlc3RpbmcoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJik7CiAKIHByaXZhdGU6CiAgICAg
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHBhdGgs
IGNvbnN0IFN0cmluZyYgY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCk7CisgICAgTmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyKFBBTDo6U2Vzc2lvbklELCBJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBjb25z
dCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCwgY29u
c3QgU3RyaW5nJiBjdXN0b21JREJTdG9yYWdlUGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21DYWNo
ZVN0b3JhZ2VQYXRoLCB1aW50NjRfdCBkZWZhdWx0T3JpZ2luUXVvdGEsIHVpbnQ2NF90IGRlZmF1
bHRUaGlyZFBhcnR5T3JpZ2luUXVvdGEpOwogICAgIH5OZXR3b3JrU3RvcmFnZU1hbmFnZXIoKTsK
ICAgICBPcmlnaW5TdG9yYWdlTWFuYWdlciYgbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcihjb25z
dCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKICAgICBib29sIHJlbW92ZU9yaWdpblN0b3JhZ2VN
YW5hZ2VySWZQb3NzaWJsZShjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKICAgICB2b2lk
IGRlbGV0ZU9yaWdpbkRpcmVjdG9yeUlmUG9zc2libGUoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3Jp
Z2luJik7Ci0gICAgRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeSYgZmlsZVN5c3RlbVN0
b3JhZ2VIYW5kbGVSZWdpc3RyeSgpOwogCiAgICAgdm9pZCBmb3JFYWNoT3JpZ2luRGlyZWN0b3J5
KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+Jik7CiAgICAgSGFzaFNldDxXZWJD
b3JlOjpDbGllbnRPcmlnaW4+IGdldEFsbE9yaWdpbnMoKTsKQEAgLTExOCw2ICsxMzgsMzQgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHJlbW92ZUl0ZW0oSVBDOjpDb25uZWN0aW9uJiwgU3RvcmFnZUFy
ZWFJZGVudGlmaWVyLCBTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyLCBTdHJpbmcmJiBrZXksIFN0
cmluZyYmIHVybFN0cmluZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lk
IGNsZWFyKElQQzo6Q29ubmVjdGlvbiYsIFN0b3JhZ2VBcmVhSWRlbnRpZmllciwgU3RvcmFnZUFy
ZWFJbXBsSWRlbnRpZmllciwgU3RyaW5nJiYgdXJsU3RyaW5nLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwogCisgICAgLy8gTWVzc2FnZSBoYW5kbGVycyBmb3IgSW5kZXhlZERCLgorICAg
IHZvaWQgb3BlbkRhdGFiYXNlKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OklEQlJl
cXVlc3REYXRhJik7CisgICAgdm9pZCBvcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKGNvbnN0IFdlYkNv
cmU6OklEQlJlcXVlc3REYXRhJik7CisgICAgdm9pZCBkZWxldGVEYXRhYmFzZShJUEM6OkNvbm5l
Y3Rpb24mLCBjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYpOworICAgIHZvaWQgZXN0YWJs
aXNoVHJhbnNhY3Rpb24odWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29u
c3QgV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25JbmZvJik7CisgICAgdm9pZCBkYXRhYmFzZUNvbm5l
Y3Rpb25QZW5kaW5nQ2xvc2UodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcik7
CisgICAgdm9pZCBkYXRhYmFzZUNvbm5lY3Rpb25DbG9zZWQodWludDY0X3QgZGF0YWJhc2VDb25u
ZWN0aW9uSWRlbnRpZmllcik7CisgICAgdm9pZCBhYm9ydE9wZW5BbmRVcGdyYWRlTmVlZGVkKHVp
bnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OklEQlJl
c291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKKyAgICB2b2lkIGRpZEZp
cmVWZXJzaW9uQ2hhbmdlRXZlbnQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmll
ciwgY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmll
ciwgY29uc3QgV2ViQ29yZTo6SW5kZXhlZERCOjpDb25uZWN0aW9uQ2xvc2VkT25CZWhhbGZPZlNl
cnZlcik7CisgICAgdm9pZCBhYm9ydFRyYW5zYWN0aW9uKGNvbnN0IFdlYkNvcmU6OklEQlJlc291
cmNlSWRlbnRpZmllciYpOworICAgIHZvaWQgY29tbWl0VHJhbnNhY3Rpb24oY29uc3QgV2ViQ29y
ZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiwgdWludDY0X3QgcGVuZGluZ1JlcXVlc3RDb3VudCk7
CisgICAgdm9pZCBkaWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbih1aW50
NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJREJSZXNv
dXJjZUlkZW50aWZpZXImKTsKKyAgICB2b2lkIGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNv
cmU6OklEQlJlcXVlc3REYXRhJiwgY29uc3QgV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVJbmZvJik7
CisgICAgdm9pZCBkZWxldGVPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0
YSYsIGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lKTsKKyAgICB2b2lkIHJlbmFtZU9iamVj
dFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiwgdWludDY0X3Qgb2JqZWN0U3Rv
cmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUpOworICAgIHZvaWQgY2xlYXJPYmpl
Y3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYsIHVpbnQ2NF90IG9iamVjdFN0
b3JlSWRlbnRpZmllcik7CisgICAgdm9pZCBjcmVhdGVJbmRleChjb25zdCBXZWJDb3JlOjpJREJS
ZXF1ZXN0RGF0YSYsIGNvbnN0IFdlYkNvcmU6OklEQkluZGV4SW5mbyYpOworICAgIHZvaWQgZGVs
ZXRlSW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmLCB1aW50NjRfdCBvYmplY3RT
dG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lKTsKKyAgICB2b2lkIHJlbmFt
ZUluZGV4KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiwgdWludDY0X3Qgb2JqZWN0U3Rv
cmVJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRleElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3
TmFtZSk7CisgICAgdm9pZCBwdXRPckFkZChJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3Jl
OjpJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IFdlYkNvcmU6OklEQktleURhdGEmLCBjb25zdCBXZWJD
b3JlOjpJREJWYWx1ZSYsIFdlYkNvcmU6OkluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVN
b2RlKTsKKyAgICB2b2lkIGdldFJlY29yZChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYs
IGNvbnN0IFdlYkNvcmU6OklEQkdldFJlY29yZERhdGEmKTsKKyAgICB2b2lkIGdldEFsbFJlY29y
ZHMoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmLCBjb25zdCBXZWJDb3JlOjpJREJHZXRB
bGxSZWNvcmRzRGF0YSYpOworICAgIHZvaWQgZ2V0Q291bnQoY29uc3QgV2ViQ29yZTo6SURCUmVx
dWVzdERhdGEmLCBjb25zdCBXZWJDb3JlOjpJREJLZXlSYW5nZURhdGEmKTsKKyAgICB2b2lkIGRl
bGV0ZVJlY29yZChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IFdlYkNvcmU6
OklEQktleVJhbmdlRGF0YSYpOworICAgIHZvaWQgb3BlbkN1cnNvcihjb25zdCBXZWJDb3JlOjpJ
REJSZXF1ZXN0RGF0YSYsIGNvbnN0IFdlYkNvcmU6OklEQkN1cnNvckluZm8mKTsKKyAgICB2b2lk
IGl0ZXJhdGVDdXJzb3IoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmLCBjb25zdCBXZWJD
b3JlOjpJREJJdGVyYXRlQ3Vyc29yRGF0YSYpOworICAgIHZvaWQgZ2V0QWxsRGF0YWJhc2VOYW1l
c0FuZFZlcnNpb25zKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNl
SWRlbnRpZmllciYsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYpOworCiAgICAgUEFMOjpT
ZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAgICAgUmVmPFN1c3BlbmRhYmxlV29ya1F1ZXVlPiBtX3F1
ZXVlOwogICAgIFN0cmluZyBtX3BhdGg7CkBAIC0xMjcsNyArMTc1LDE0IEBAIHByaXZhdGU6CiAg
ICAgV2Vha0hhc2hTZXQ8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb25zOyAvLyBNYWluIHRo
cmVhZCBvbmx5LgogICAgIHN0ZDo6dW5pcXVlX3B0cjxGaWxlU3lzdGVtU3RvcmFnZUhhbmRsZVJl
Z2lzdHJ5PiBtX2ZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnk7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPFN0b3JhZ2VBcmVhUmVnaXN0cnk+IG1fc3RvcmFnZUFyZWFSZWdpc3RyeTsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8SURCU3RvcmFnZVJlZ2lzdHJ5PiBtX2lkYlN0b3JhZ2VSZWdpc3RyeTsK
ICAgICBTdHJpbmcgbV9jdXN0b21Mb2NhbFN0b3JhZ2VQYXRoOworICAgIFN0cmluZyBtX2N1c3Rv
bUlEQlN0b3JhZ2VQYXRoOworICAgIFN0cmluZyBtX2N1c3RvbUNhY2hlU3RvcmFnZVBhdGg7Cisg
ICAgdWludDY0X3QgbV9kZWZhdWx0T3JpZ2luUXVvdGE7CisgICAgdWludDY0X3QgbV9kZWZhdWx0
VGhpcmRQYXJ0eU9yaWdpblF1b3RhOworICAgIElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgbV9w
YXJlbnRDb25uZWN0aW9uOworICAgIEhhc2hNYXA8SVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCwg
SGFzaFNldDxTdHJpbmc+PiBtX3RlbXBvcmFyeUJsb2JQYXRoc0J5Q29ubmVjdGlvbjsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIubWVz
c2FnZXMuaW4KaW5kZXggNTBiOTY3MDFiMDcwZGQ1YzMyNzExZGIxNDI3OTMwM2ZlNjUyMTFiNy4u
NDczMDVlMGU5ODFjYTVjZmFlMDc3NDI2YmYyNGI3ODE1YTRkNjRjZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0
d29ya1N0b3JhZ2VNYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC00Nyw0ICs0NywzMSBAQAogICAgIFNl
dEl0ZW0oV2ViS2l0OjpTdG9yYWdlQXJlYUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViS2l0OjpT
dG9yYWdlQXJlYUltcGxJZGVudGlmaWVyIGltcGxJZGVudGlmaWVyLCBTdHJpbmcga2V5LCBTdHJp
bmcgdmFsdWUsIFN0cmluZyB1cmxTdHJpbmcpIC0+IChib29sIHF1b3RhRXhjZXB0aW9uKSBBc3lu
YyBXYW50c0Nvbm5lY3Rpb24KICAgICBSZW1vdmVJdGVtKFdlYktpdDo6U3RvcmFnZUFyZWFJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIFdlYktpdDo6U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllciBpbXBs
SWRlbnRpZmllciwgU3RyaW5nIGtleSwgU3RyaW5nIHVybFN0cmluZykgLT4gKCkgQXN5bmMgV2Fu
dHNDb25uZWN0aW9uCiAgICAgQ2xlYXIoV2ViS2l0OjpTdG9yYWdlQXJlYUlkZW50aWZpZXIgaWRl
bnRpZmllciwgV2ViS2l0OjpTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyIGltcGxJZGVudGlmaWVy
LCBTdHJpbmcgdXJsU3RyaW5nKSAtPiAoKSBBc3luYyBXYW50c0Nvbm5lY3Rpb24KKworICAgIE9w
ZW5EYXRhYmFzZShXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YSkgV2FudHNDb25u
ZWN0aW9uCisgICAgT3BlbkRCUmVxdWVzdENhbmNlbGxlZChXZWJDb3JlOjpJREJSZXF1ZXN0RGF0
YSByZXF1ZXN0RGF0YSkKKyAgICBEZWxldGVEYXRhYmFzZShXZWJDb3JlOjpJREJSZXF1ZXN0RGF0
YSByZXF1ZXN0RGF0YSkgV2FudHNDb25uZWN0aW9uCisgICAgRXN0YWJsaXNoVHJhbnNhY3Rpb24o
dWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6SURCVHJhbnNh
Y3Rpb25JbmZvIGluZm8pCisgICAgRGF0YWJhc2VDb25uZWN0aW9uUGVuZGluZ0Nsb3NlKHVpbnQ2
NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpCisgICAgRGF0YWJhc2VDb25uZWN0aW9u
Q2xvc2VkKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpCisgICAgQWJvcnRP
cGVuQW5kVXBncmFkZU5lZWRlZCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVy
LCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXIgdHJhbnNhY3Rpb25JZGVudGlmaWVyKQor
ICAgIERpZEZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9u
SWRlbnRpZmllciwgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyIHJlcXVlc3RJZGVudGlm
aWVyLCBXZWJDb3JlOjpJbmRleGVkREI6OkNvbm5lY3Rpb25DbG9zZWRPbkJlaGFsZk9mU2VydmVy
IGNvbm5lY3Rpb25DbG9zZWRPbkJlaGFsZk9mU2VydmVyKQorICAgIERpZEZpbmlzaEhhbmRsaW5n
VmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50
aWZpZXIsIFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciB0cmFuc2FjdGlvbklkZW50aWZp
ZXIpCisgICAgQWJvcnRUcmFuc2FjdGlvbihXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXIg
dHJhbnNhY3Rpb25JZGVudGlmaWVyKQorICAgIENvbW1pdFRyYW5zYWN0aW9uKFdlYkNvcmU6OklE
QlJlc291cmNlSWRlbnRpZmllciB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IHBlbmRp
bmdSZXF1ZXN0Q291bnQpCisgICAgQ3JlYXRlT2JqZWN0U3RvcmUoV2ViQ29yZTo6SURCUmVxdWVz
dERhdGEgcmVxdWVzdERhdGEsIFdlYkNvcmU6OklEQk9iamVjdFN0b3JlSW5mbyBpbmZvKQorICAg
IERlbGV0ZU9iamVjdFN0b3JlKFdlYkNvcmU6OklEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhLCBT
dHJpbmcgb2JqZWN0U3RvcmVOYW1lKQorICAgIFJlbmFtZU9iamVjdFN0b3JlKFdlYkNvcmU6OklE
QlJlcXVlc3REYXRhIHJlcXVlc3REYXRhLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIs
IFN0cmluZyBuZXdOYW1lKQorICAgIENsZWFyT2JqZWN0U3RvcmUoV2ViQ29yZTo6SURCUmVxdWVz
dERhdGEgcmVxdWVzdERhdGEsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllcikKKyAgICBD
cmVhdGVJbmRleChXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YSwgV2ViQ29yZTo6
SURCSW5kZXhJbmZvIGluZm8pCisgICAgRGVsZXRlSW5kZXgoV2ViQ29yZTo6SURCUmVxdWVzdERh
dGEgcmVxdWVzdERhdGEsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgU3RyaW5nIGlu
ZGV4TmFtZSkKKyAgICBSZW5hbWVJbmRleChXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSByZXF1ZXN0
RGF0YSwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRleElkZW50
aWZpZXIsIFN0cmluZyBuZXdOYW1lKQorICAgIFB1dE9yQWRkKFdlYkNvcmU6OklEQlJlcXVlc3RE
YXRhIHJlcXVlc3REYXRhLCBXZWJDb3JlOjpJREJLZXlEYXRhIGtleSwgV2ViQ29yZTo6SURCVmFs
dWUgdmFsdWUsIFdlYkNvcmU6OkluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlIG92
ZXJ3cml0ZU1vZGUpIFdhbnRzQ29ubmVjdGlvbgorICAgIEdldFJlY29yZChXZWJDb3JlOjpJREJS
ZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YSwgc3RydWN0IFdlYkNvcmU6OklEQkdldFJlY29yZERhdGEg
Z2V0UmVjb3JkRGF0YSkKKyAgICBHZXRBbGxSZWNvcmRzKFdlYkNvcmU6OklEQlJlcXVlc3REYXRh
IHJlcXVlc3REYXRhLCBzdHJ1Y3QgV2ViQ29yZTo6SURCR2V0QWxsUmVjb3Jkc0RhdGEgZ2V0QWxs
UmVjb3Jkc0RhdGEpCisgICAgR2V0Q291bnQoV2ViQ29yZTo6SURCUmVxdWVzdERhdGEgcmVxdWVz
dERhdGEsIHN0cnVjdCBXZWJDb3JlOjpJREJLZXlSYW5nZURhdGEgcmFuZ2UpCisgICAgRGVsZXRl
UmVjb3JkKFdlYkNvcmU6OklEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhLCBzdHJ1Y3QgV2ViQ29y
ZTo6SURCS2V5UmFuZ2VEYXRhIHJhbmdlKQorICAgIE9wZW5DdXJzb3IoV2ViQ29yZTo6SURCUmVx
dWVzdERhdGEgcmVxdWVzdERhdGEsIFdlYkNvcmU6OklEQkN1cnNvckluZm8gaW5mbykKKyAgICBJ
dGVyYXRlQ3Vyc29yKFdlYkNvcmU6OklEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhLCBzdHJ1Y3Qg
V2ViQ29yZTo6SURCSXRlcmF0ZUN1cnNvckRhdGEgZGF0YSkKKyAgICBHZXRBbGxEYXRhYmFzZU5h
bWVzQW5kVmVyc2lvbnMoV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyIHJlcXVlc3RJZGVu
dGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbikgV2FudHNDb25uZWN0
aW9uCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2Uv
T3JpZ2luU3RvcmFnZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
dG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2VyLmNwcAppbmRleCA1ODgzMWVhYTI2NjBhZjg3NGRl
NmI5NTg5MGU1N2E3ZmI2MTU1N2VjLi5iY2MwZjMzODc3OWY0OTMxMDA3NGE3YzZjYmQyZmNhZTc1
MzZkYzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2Uv
T3JpZ2luU3RvcmFnZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5jcHAKQEAgLTI2LDggKzI2LDExIEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiT3JpZ2luU3RvcmFnZU1hbmFnZXIuaCIKIAor
I2luY2x1ZGUgIkNhY2hlU3RvcmFnZUVuZ2luZS5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW1TdG9y
YWdlSGFuZGxlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIu
aCIKKyNpbmNsdWRlICJJREJTdG9yYWdlTWFuYWdlci5oIgorI2luY2x1ZGUgIklEQlN0b3JhZ2VS
ZWdpc3RyeS5oIgogI2luY2x1ZGUgIkxvY2FsU3RvcmFnZU1hbmFnZXIuaCIKICNpbmNsdWRlICJN
ZW1vcnlTdG9yYWdlQXJlYS5oIgogI2luY2x1ZGUgIlNlc3Npb25TdG9yYWdlTWFuYWdlci5oIgpA
QCAtNDQsMTAgKzQ3LDExIEBAIGVudW0gY2xhc3MgT3JpZ2luU3RvcmFnZU1hbmFnZXI6OlN0b3Jh
Z2VCdWNrZXRNb2RlIDogYm9vbCB7IEJlc3RFZmZvcnQsIFBlcnNpc3RlCiBjbGFzcyBPcmlnaW5T
dG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6Ci0gICAgU3RvcmFnZUJ1Y2tldChjb25zdCBTdHJpbmcmIHJvb3RQYXRoLCBj
b25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlUGF0aCkK
KyAgICBTdG9yYWdlQnVja2V0KGNvbnN0IFN0cmluZyYgcm9vdFBhdGgsIGNvbnN0IFN0cmluZyYg
aWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VQYXRoLCBjb25zdCBTdHJpbmcm
IGlkYlN0b3JhZ2VQYXRoKQogICAgICAgICA6IG1fcm9vdFBhdGgocm9vdFBhdGgpCiAgICAgICAg
ICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiAgICAgICAgICwgbV9sb2NhbFN0b3JhZ2VQYXRo
KGxvY2FsU3RvcmFnZVBhdGgpCisgICAgICAgICwgbV9pZGJTdG9yYWdlUGF0aChpZGJTdG9yYWdl
UGF0aCkKICAgICB7CiAgICAgfQogCkBAIC03MCw2ICs3NCw3IEBAIHB1YmxpYzoKICAgICAgICAg
RmlsZVN5c3RlbSwKICAgICAgICAgTG9jYWxTdG9yYWdlLAogICAgICAgICBTZXNzaW9uU3RvcmFn
ZSwKKyAgICAgICAgSW5kZXhlZERCLAogICAgIH07CiAKICAgICBzdGF0aWMgc3RkOjpvcHRpb25h
bDxXZWJzaXRlRGF0YVR5cGU+IHRvV2Vic2l0ZURhdGFUeXBlKGNvbnN0IFN0cmluZyYgc3RvcmFn
ZUlkZW50aWZpZXIpCkBAIC04MCw2ICs4NSw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVy
biBXZWJzaXRlRGF0YVR5cGU6OkxvY2FsU3RvcmFnZTsKICAgICAgICAgaWYgKHN0b3JhZ2VJZGVu
dGlmaWVyID09ICJTZXNzaW9uU3RvcmFnZSJfcykKICAgICAgICAgICAgIHJldHVybiBXZWJzaXRl
RGF0YVR5cGU6OlNlc3Npb25TdG9yYWdlOworICAgICAgICBpZiAoc3RvcmFnZUlkZW50aWZpZXIg
PT0gIkluZGV4ZWREQiJfcykKKyAgICAgICAgICAgIHJldHVybiBXZWJzaXRlRGF0YVR5cGU6Oklu
ZGV4ZWREQkRhdGFiYXNlczsKIAogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0K
QEAgLTkzLDYgKzEwMCw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiAiTG9jYWxTdG9y
YWdlIl9zOwogICAgICAgICBjYXNlIFN0b3JhZ2VUeXBlOjpTZXNzaW9uU3RvcmFnZToKICAgICAg
ICAgICAgIHJldHVybiAiU2Vzc2lvblN0b3JhZ2UiX3M7CisgICAgICAgIGNhc2UgU3RvcmFnZVR5
cGU6OkluZGV4ZWREQjoKKyAgICAgICAgICAgIHJldHVybiAiSW5kZXhlZERCIl9zOwogICAgICAg
ICBkZWZhdWx0OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTE0MywxMyArMTUy
LDI3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fc2Vzc2lvblN0b3JhZ2VNYW5hZ2VyLmdl
dCgpOwogICAgIH0KIAorICAgIElEQlN0b3JhZ2VNYW5hZ2VyJiBpZGJTdG9yYWdlTWFuYWdlcihJ
REJTdG9yYWdlUmVnaXN0cnkmIHJlZ2lzdHJ5LCBJREJTdG9yYWdlTWFuYWdlcjo6UXVvdGFDaGVj
a0Z1bmN0aW9uJiYgcXVvdGFDaGVja0Z1bmN0aW9uKQorICAgIHsKKyAgICAgICAgaWYgKCFtX2lk
YlN0b3JhZ2VNYW5hZ2VyKQorICAgICAgICAgICAgbV9pZGJTdG9yYWdlTWFuYWdlciA9IG1ha2VV
bmlxdWU8SURCU3RvcmFnZU1hbmFnZXI+KG1faWRiU3RvcmFnZVBhdGgsIHJlZ2lzdHJ5LCBXVEZN
b3ZlKHF1b3RhQ2hlY2tGdW5jdGlvbikpOworCisgICAgICAgIHJldHVybiAqbV9pZGJTdG9yYWdl
TWFuYWdlcjsKKyAgICB9CisKKyAgICBJREJTdG9yYWdlTWFuYWdlciogZXhpc3RpbmdJREJTdG9y
YWdlTWFuYWdlcigpCisgICAgeworICAgICAgICByZXR1cm4gbV9pZGJTdG9yYWdlTWFuYWdlci5n
ZXQoKTsKKyAgICB9CisKICAgICBib29sIGlzQWN0aXZlKCkgY29uc3QKICAgICB7CiAgICAgICAg
IC8vIFdlIGNhbm5vdCByZW1vdmUgdGhlIGJ1Y2tldCBpZiBpdCBoYXMgaW4tbWVtb3J5IGRhdGEs
IG90aGVyd2lzZSBzZXNzaW9uCiAgICAgICAgIC8vIGRhdGEgbWF5IGJlIGxvc3QuCiAgICAgICAg
IHJldHVybiAobV9maWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIgJiYgbV9maWxlU3lzdGVtU3RvcmFn
ZU1hbmFnZXItPmlzQWN0aXZlKCkpCiAgICAgICAgICAgICB8fCAobV9sb2NhbFN0b3JhZ2VNYW5h
Z2VyICYmIChtX2xvY2FsU3RvcmFnZU1hbmFnZXItPmhhc0RhdGFJbk1lbW9yeSgpIHx8IG1fbG9j
YWxTdG9yYWdlTWFuYWdlci0+aXNBY3RpdmUoKSkpCi0gICAgICAgICAgICB8fCAobV9zZXNzaW9u
U3RvcmFnZU1hbmFnZXIgJiYgKG1fc2Vzc2lvblN0b3JhZ2VNYW5hZ2VyLT5oYXNEYXRhSW5NZW1v
cnkoKSB8fCBtX3Nlc3Npb25TdG9yYWdlTWFuYWdlci0+aXNBY3RpdmUoKSkpOworICAgICAgICAg
ICAgfHwgKG1fc2Vzc2lvblN0b3JhZ2VNYW5hZ2VyICYmIChtX3Nlc3Npb25TdG9yYWdlTWFuYWdl
ci0+aGFzRGF0YUluTWVtb3J5KCkgfHwgbV9zZXNzaW9uU3RvcmFnZU1hbmFnZXItPmlzQWN0aXZl
KCkpKQorICAgICAgICAgICAgfHwgKG1faWRiU3RvcmFnZU1hbmFnZXIgJiYgKG1faWRiU3RvcmFn
ZU1hbmFnZXItPmhhc0RhdGFJbk1lbW9yeSgpIHx8IG1faWRiU3RvcmFnZU1hbmFnZXItPmlzQWN0
aXZlKCkpKTsKICAgICB9CiAKICAgICBib29sIGlzRW1wdHkoKSBjb25zdApAQCAtMTY1LDcgKzE4
OCw4IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKGhhc1ZhbGlkRmlsZSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgICAgICByZXR1cm4gIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobV9s
b2NhbFN0b3JhZ2VQYXRoKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3Rv
cnkobV9pZGJTdG9yYWdlUGF0aCk7CisgICAgICAgIHJldHVybiAhRmlsZVN5c3RlbTo6ZmlsZUV4
aXN0cyhtX2xvY2FsU3RvcmFnZVBhdGgpICYmICFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG1faWRi
U3RvcmFnZVBhdGgpOwogICAgIH0KIAogICAgIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGZl
dGNoRGF0YVR5cGVzSW5MaXN0KE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHR5cGVzKQpAQCAt
MTg2LDE0ICsyMTAsMjAgQEAgcHVibGljOgogCiAgICAgICAgIGlmICh0eXBlcy5jb250YWlucyhX
ZWJzaXRlRGF0YVR5cGU6OlNlc3Npb25TdG9yYWdlKSAmJiBtb2RpZmllZFNpbmNlVGltZSA8IFdh
bGxUaW1lOjpub3coKSkKICAgICAgICAgICAgIGRlbGV0ZVNlc3Npb25TdG9yYWdlRGF0YSgpOwor
CisgICAgICAgIGlmICh0eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRh
dGFiYXNlcykpCisgICAgICAgICAgICBkZWxldGVJREJTdG9yYWdlRGF0YShtb2RpZmllZFNpbmNl
VGltZSk7CiAgICAgfQogCi0gICAgdm9pZCBtb3ZlRGF0YShjb25zdCBTdHJpbmcmIHBhdGgsIGNv
bnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlUGF0aCkKKyAgICB2b2lkIG1vdmVEYXRhKGNvbnN0IFN0
cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VQYXRoLCBjb25zdCBTdHJpbmcm
IGlkYlN0b3JhZ2VQYXRoKQogICAgIHsKICAgICAgICAgbV9maWxlU3lzdGVtU3RvcmFnZU1hbmFn
ZXIgPSBudWxscHRyOwogICAgICAgICBpZiAobV9sb2NhbFN0b3JhZ2VNYW5hZ2VyKQogICAgICAg
ICAgICAgbV9sb2NhbFN0b3JhZ2VNYW5hZ2VyLT5jbG9zZSgpOwogCisgICAgICAgIGlmIChtX2lk
YlN0b3JhZ2VNYW5hZ2VyKQorICAgICAgICAgICAgbV9pZGJTdG9yYWdlTWFuYWdlci0+Y2xvc2VE
YXRhYmFzZXNGb3JEZWxldGlvbigpOworCiAgICAgICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJl
Y3RvcmllcyhGaWxlU3lzdGVtOjpwYXJlbnRQYXRoKHBhdGgpKTsKICAgICAgICAgRmlsZVN5c3Rl
bTo6bW92ZUZpbGUobV9yb290UGF0aCwgcGF0aCk7CiAKQEAgLTIwMSw2ICsyMzEsMTEgQEAgcHVi
bGljOgogICAgICAgICAgICAgRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKEZpbGVTeXN0
ZW06OnBhcmVudFBhdGgobG9jYWxTdG9yYWdlUGF0aCkpOwogICAgICAgICAgICAgV2ViQ29yZTo6
U1FMaXRlRmlsZVN5c3RlbTo6bW92ZURhdGFiYXNlRmlsZShtX2xvY2FsU3RvcmFnZVBhdGgsIGxv
Y2FsU3RvcmFnZVBhdGgpOwogICAgICAgICB9CisKKyAgICAgICAgaWYgKCFtX2lkYlN0b3JhZ2VQ
YXRoLmlzRW1wdHkoKSAmJiAhaWRiU3RvcmFnZVBhdGguaXNFbXB0eSgpKSB7CisgICAgICAgICAg
ICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoRmlsZVN5c3RlbTo6cGFyZW50UGF0aChp
ZGJTdG9yYWdlUGF0aCkpOworICAgICAgICAgICAgV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6
bW92ZURhdGFiYXNlRmlsZShtX2lkYlN0b3JhZ2VQYXRoLCBpZGJTdG9yYWdlUGF0aCk7CisgICAg
ICAgIH0KICAgICB9CiAKIHByaXZhdGU6CkBAIC0yMTcsNiArMjUyLDExIEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgcmVzdWx0LmFkZChXZWJzaXRlRGF0YVR5cGU6OlNlc3Npb25TdG9yYWdl
KTsKICAgICAgICAgfQogCisgICAgICAgIGlmICh0eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5
cGU6OkluZGV4ZWREQkRhdGFiYXNlcykpIHsKKyAgICAgICAgICAgIGlmIChtX2lkYlN0b3JhZ2VN
YW5hZ2VyICYmIG1faWRiU3RvcmFnZU1hbmFnZXItPmhhc0RhdGFJbk1lbW9yeSgpKQorICAgICAg
ICAgICAgICAgIHJlc3VsdC5hZGQoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMp
OworICAgICAgICB9CisKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKQEAgLTIzMyw2
ICsyNzMsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICByZXN1bHQuYWRkKFdlYnNpdGVE
YXRhVHlwZTo6TG9jYWxTdG9yYWdlKTsKICAgICAgICAgfQogCisgICAgICAgIGlmICh0eXBlcy5j
b250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykgJiYgIXJlc3VsdC5j
b250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykpIHsKKyAgICAgICAg
ICAgIGlmIChhdXRvIGRhdGFiYXNlcyA9IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobV9pZGJT
dG9yYWdlUGF0aCk7ICFkYXRhYmFzZXMuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIHJlc3Vs
dC5hZGQoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpOworICAgICAgICB9CisK
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKQEAgLTI3MCw2ICszMTUsMTQgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgIG1fc2Vzc2lvblN0b3JhZ2VNYW5hZ2VyID0gbnVsbHB0cjsKICAg
ICB9CiAgICAgCisgICAgdm9pZCBkZWxldGVJREJTdG9yYWdlRGF0YShXYWxsVGltZSB0aW1lKQor
ICAgIHsKKyAgICAgICAgaWYgKG1faWRiU3RvcmFnZU1hbmFnZXIpCisgICAgICAgICAgICBtX2lk
YlN0b3JhZ2VNYW5hZ2VyLT5jbG9zZURhdGFiYXNlc0ZvckRlbGV0aW9uKCk7CisKKyAgICAgICAg
RmlsZVN5c3RlbTo6ZGVsZXRlQWxsRmlsZXNNb2RpZmllZFNpbmNlKG1faWRiU3RvcmFnZVBhdGgs
IHRpbWUpOworICAgIH0KKyAgICAKICAgICBTdHJpbmcgbV9yb290UGF0aDsKICAgICBTdHJpbmcg
bV9pZGVudGlmaWVyOwogICAgIFN0b3JhZ2VCdWNrZXRNb2RlIG1fbW9kZSB7IFN0b3JhZ2VCdWNr
ZXRNb2RlOjpCZXN0RWZmb3J0IH07CkBAIC0yNzcsMTEgKzMzMCwyNCBAQCBwcml2YXRlOgogICAg
IHN0ZDo6dW5pcXVlX3B0cjxMb2NhbFN0b3JhZ2VNYW5hZ2VyPiBtX2xvY2FsU3RvcmFnZU1hbmFn
ZXI7CiAgICAgU3RyaW5nIG1fbG9jYWxTdG9yYWdlUGF0aDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
U2Vzc2lvblN0b3JhZ2VNYW5hZ2VyPiBtX3Nlc3Npb25TdG9yYWdlTWFuYWdlcjsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8SURCU3RvcmFnZU1hbmFnZXI+IG1faWRiU3RvcmFnZU1hbmFnZXI7CisgICAg
U3RyaW5nIG1faWRiU3RvcmFnZVBhdGg7CiB9OwogCi1PcmlnaW5TdG9yYWdlTWFuYWdlcjo6T3Jp
Z2luU3RvcmFnZU1hbmFnZXIoU3RyaW5nJiYgcGF0aCwgU3RyaW5nJiYgbG9jYWxTdG9yYWdlUGF0
aCkKK3N0YXRpYyBSZWY8UXVvdGFNYW5hZ2VyPiBjcmVhdGVRdW90YU1hbmFnZXIodWludDY0X3Qg
cXVvdGEsIGNvbnN0IFN0cmluZyYgaWRiU3RvcmFnZVBhdGgsIGNvbnN0IFN0cmluZyYgY2FjaGVT
dG9yYWdlUGF0aCwgUXVvdGFNYW5hZ2VyOjpJbmNyZWFzZVF1b3RhRnVuY3Rpb24mJiBpbmNyZWFz
ZVF1b3RhRnVuY3Rpb24pCit7CisgICAgUXVvdGFNYW5hZ2VyOjpHZXRVc2FnZUZ1bmN0aW9uIGdl
dFVzYWdlRnVuY3Rpb24gPSBbaWRiU3RvcmFnZVBhdGgsIGNhY2hlU3RvcmFnZVBhdGhdKCkgewor
ICAgICAgICByZXR1cm4gSURCU3RvcmFnZU1hbmFnZXI6OmlkYlN0b3JhZ2VTaXplKGlkYlN0b3Jh
Z2VQYXRoKSArIENhY2hlU3RvcmFnZTo6RW5naW5lOjpkaXNrVXNhZ2UoY2FjaGVTdG9yYWdlUGF0
aCk7CisgICAgfTsKKyAgICByZXR1cm4gUXVvdGFNYW5hZ2VyOjpjcmVhdGUocXVvdGEsIFdURk1v
dmUoZ2V0VXNhZ2VGdW5jdGlvbiksIFdURk1vdmUoaW5jcmVhc2VRdW90YUZ1bmN0aW9uKSk7Cit9
CisKK09yaWdpblN0b3JhZ2VNYW5hZ2VyOjpPcmlnaW5TdG9yYWdlTWFuYWdlcih1aW50NjRfdCBx
dW90YSwgUXVvdGFNYW5hZ2VyOjpJbmNyZWFzZVF1b3RhRnVuY3Rpb24mJiBpbmNyZWFzZVF1b3Rh
RnVuY3Rpb24sIFN0cmluZyYmIHBhdGgsIFN0cmluZyYmIGxvY2FsU3RvcmFnZVBhdGgsIFN0cmlu
ZyYmIGlkYlN0b3JhZ2VQYXRoLCBTdHJpbmcmJiBjYWNoZVN0b3JhZ2VQYXRoKQogICAgIDogbV9w
YXRoKFdURk1vdmUocGF0aCkpCiAgICAgLCBtX2xvY2FsU3RvcmFnZVBhdGgoV1RGTW92ZShsb2Nh
bFN0b3JhZ2VQYXRoKSkKKyAgICAsIG1faWRiU3RvcmFnZVBhdGgoV1RGTW92ZShpZGJTdG9yYWdl
UGF0aCkpCisgICAgLCBtX2NhY2hlU3RvcmFnZVBhdGgoV1RGTW92ZShjYWNoZVN0b3JhZ2VQYXRo
KSkKKyAgICAsIG1fcXVvdGFNYW5hZ2VyKGNyZWF0ZVF1b3RhTWFuYWdlcihxdW90YSwgbV9pZGJT
dG9yYWdlUGF0aCwgbV9jYWNoZVN0b3JhZ2VQYXRoLCBXVEZNb3ZlKGluY3JlYXNlUXVvdGFGdW5j
dGlvbikpKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogfQpAQCAtMjk3LDEx
ICszNjMsMTYgQEAgdm9pZCBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6Y29ubmVjdGlvbkNsb3NlZChJ
UEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGNvbm5lY3Rpb24KIE9yaWdpblN0b3JhZ2VNYW5hZ2Vy
OjpTdG9yYWdlQnVja2V0JiBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6ZGVmYXVsdEJ1Y2tldCgpCiB7
CiAgICAgaWYgKCFtX2RlZmF1bHRCdWNrZXQpCi0gICAgICAgIG1fZGVmYXVsdEJ1Y2tldCA9IG1h
a2VVbmlxdWU8U3RvcmFnZUJ1Y2tldD4obV9wYXRoLCAiZGVmYXVsdCJfcywgbV9sb2NhbFN0b3Jh
Z2VQYXRoKTsKKyAgICAgICAgbV9kZWZhdWx0QnVja2V0ID0gbWFrZVVuaXF1ZTxTdG9yYWdlQnVj
a2V0PihtX3BhdGgsICJkZWZhdWx0Il9zLCBtX2xvY2FsU3RvcmFnZVBhdGgsIG1faWRiU3RvcmFn
ZVBhdGgpOwogCiAgICAgcmV0dXJuICptX2RlZmF1bHRCdWNrZXQ7CiB9CiAKK1F1b3RhTWFuYWdl
ciYgT3JpZ2luU3RvcmFnZU1hbmFnZXI6OnF1b3RhTWFuYWdlcigpCit7CisgICAgcmV0dXJuIG1f
cXVvdGFNYW5hZ2VyLmdldCgpOworfQorCiBGaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXImIE9yaWdp
blN0b3JhZ2VNYW5hZ2VyOjpmaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIoRmlsZVN5c3RlbVN0b3Jh
Z2VIYW5kbGVSZWdpc3RyeSYgcmVnaXN0cnkpCiB7CiAgICAgcmV0dXJuIGRlZmF1bHRCdWNrZXQo
KS5maWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIocmVnaXN0cnkpOwpAQCAtMzI3LDYgKzM5OCwyMyBA
QCBTZXNzaW9uU3RvcmFnZU1hbmFnZXIqIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpleGlzdGluZ1Nl
c3Npb25TdG9yYWdlTWFuYWdlcigpCiAgICAgcmV0dXJuIGRlZmF1bHRCdWNrZXQoKS5leGlzdGlu
Z1Nlc3Npb25TdG9yYWdlTWFuYWdlcigpOwogfQogCitJREJTdG9yYWdlTWFuYWdlciYgT3JpZ2lu
U3RvcmFnZU1hbmFnZXI6OmlkYlN0b3JhZ2VNYW5hZ2VyKElEQlN0b3JhZ2VSZWdpc3RyeSYgcmVn
aXN0cnkpCit7CisgICAgcmV0dXJuIGRlZmF1bHRCdWNrZXQoKS5pZGJTdG9yYWdlTWFuYWdlcihy
ZWdpc3RyeSwgW3F1b3RhTWFuYWdlciA9IFdlYWtQdHIgeyB0aGlzLT5xdW90YU1hbmFnZXIoKSB9
XSh1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikgbXV0YWJsZSB7CisgICAgICAgIGlmICghcXVvdGFNYW5hZ2Vy
KQorICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKworICAgICAg
ICBxdW90YU1hbmFnZXItPnJlcXVlc3RTcGFjZShzcGFjZVJlcXVlc3RlZCwgW2NvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1dG8gZGVjaXNpb24pIG11dGFi
bGUgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZGVjaXNpb24gPT0gUXVvdGFNYW5h
Z2VyOjpEZWNpc2lvbjo6R3JhbnQpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKworSURCU3Rv
cmFnZU1hbmFnZXIqIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpleGlzdGluZ0lEQlN0b3JhZ2VNYW5h
Z2VyKCkKK3sKKyAgICByZXR1cm4gZGVmYXVsdEJ1Y2tldCgpLmV4aXN0aW5nSURCU3RvcmFnZU1h
bmFnZXIoKTsKK30KKwogYm9vbCBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6aXNBY3RpdmUoKQogewog
ICAgIHJldHVybiBkZWZhdWx0QnVja2V0KCkuaXNBY3RpdmUoKTsKQEAgLTM1OSwxMSArNDQ3LDEx
IEBAIHZvaWQgT3JpZ2luU3RvcmFnZU1hbmFnZXI6OmRlbGV0ZURhdGEoT3B0aW9uU2V0PFdlYnNp
dGVEYXRhVHlwZT4gdHlwZXMsIFdhbGxUaW1lCiAgICAgZGVmYXVsdEJ1Y2tldCgpLmRlbGV0ZURh
dGEodHlwZXMsIG1vZGlmaWVkU2luY2UpOwogfQogCi12b2lkIE9yaWdpblN0b3JhZ2VNYW5hZ2Vy
Ojptb3ZlRGF0YShjb25zdCBTdHJpbmcmIG5ld1BhdGgsIGNvbnN0IFN0cmluZyYgbG9jYWxTdG9y
YWdlUGF0aCkKK3ZvaWQgT3JpZ2luU3RvcmFnZU1hbmFnZXI6Om1vdmVEYXRhKGNvbnN0IFN0cmlu
ZyYgbmV3UGF0aCwgY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VQYXRoLCBjb25zdCBTdHJpbmcm
IGlkYlN0b3JhZ2VQYXRoKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0g
ICAgZGVmYXVsdEJ1Y2tldCgpLm1vdmVEYXRhKG5ld1BhdGgsIGxvY2FsU3RvcmFnZVBhdGgpOwor
ICAgIGRlZmF1bHRCdWNrZXQoKS5tb3ZlRGF0YShuZXdQYXRoLCBsb2NhbFN0b3JhZ2VQYXRoLCBp
ZGJTdG9yYWdlUGF0aCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2Vy
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1h
bmFnZXIuaAppbmRleCA1ZTc2Njk5ODZlNDY2ODVmMzg5YjdhNTI3MWU2NmQwZTYzYzJkMTllLi5l
YzQ2YzU0YjMxMTFmYjAxYjNjZTY5NjkyMDdjMTNiZTVkOTk5ZDk2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1h
bmFnZXIuaApAQCAtMjYsMTYgKzI2LDE1IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNv
bm5lY3Rpb24uaCIKKyNpbmNsdWRlICJRdW90YU1hbmFnZXIuaCIKICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgewotc3RydWN0IENsaWVudE9yaWdp
bjsKLX0KLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEZpbGVTeXN0ZW1TdG9yYWdlSGFu
ZGxlUmVnaXN0cnk7CiBjbGFzcyBGaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXI7CitjbGFzcyBJREJT
dG9yYWdlTWFuYWdlcjsKK2NsYXNzIElEQlN0b3JhZ2VSZWdpc3RyeTsKIGNsYXNzIExvY2FsU3Rv
cmFnZU1hbmFnZXI7CiBjbGFzcyBTZXNzaW9uU3RvcmFnZU1hbmFnZXI7CiBjbGFzcyBTdG9yYWdl
QXJlYVJlZ2lzdHJ5OwpAQCAtNDQsMzUgKzQzLDM4IEBAIGVudW0gY2xhc3MgV2Vic2l0ZURhdGFU
eXBlIDogdWludDMyX3Q7CiBjbGFzcyBPcmlnaW5TdG9yYWdlTWFuYWdlciB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgT3JpZ2luU3RvcmFnZU1hbmFnZXIoU3Ry
aW5nJiYgcGF0aCwgU3RyaW5nJiYgbG9jYWxTdG9yYWdlUGF0aCk7CisgICAgT3JpZ2luU3RvcmFn
ZU1hbmFnZXIodWludDY0X3QgcXVvdGEsIFF1b3RhTWFuYWdlcjo6SW5jcmVhc2VRdW90YUZ1bmN0
aW9uJiYsIFN0cmluZyYmIHBhdGgsIFN0cmluZyYmIGxvY2FsU3RvcmFnZVBhdGgsIFN0cmluZyYm
IGlkYlN0b3JhZ2VQYXRoLCBTdHJpbmcmJiBjYWNoZVN0b3JhZ2VQYXRoKTsKICAgICB+T3JpZ2lu
U3RvcmFnZU1hbmFnZXIoKTsKIAogICAgIHZvaWQgY29ubmVjdGlvbkNsb3NlZChJUEM6OkNvbm5l
Y3Rpb246OlVuaXF1ZUlEKTsKICAgICBib29sIHBlcnNpc3RlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
cGVyc2lzdGVkOyB9CiAgICAgdm9pZCBzZXRQZXJzaXN0ZWQoYm9vbCB2YWx1ZSk7CisgICAgUXVv
dGFNYW5hZ2VyJiBxdW90YU1hbmFnZXIoKTsKICAgICBGaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIm
IGZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlcihGaWxlU3lzdGVtU3RvcmFnZUhhbmRsZVJlZ2lzdHJ5
Jik7CiAgICAgTG9jYWxTdG9yYWdlTWFuYWdlciYgbG9jYWxTdG9yYWdlTWFuYWdlcihTdG9yYWdl
QXJlYVJlZ2lzdHJ5Jik7CiAgICAgTG9jYWxTdG9yYWdlTWFuYWdlciogZXhpc3RpbmdMb2NhbFN0
b3JhZ2VNYW5hZ2VyKCk7CiAgICAgU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyJiBzZXNzaW9uU3RvcmFn
ZU1hbmFnZXIoU3RvcmFnZUFyZWFSZWdpc3RyeSYpOwogICAgIFNlc3Npb25TdG9yYWdlTWFuYWdl
ciogZXhpc3RpbmdTZXNzaW9uU3RvcmFnZU1hbmFnZXIoKTsKKyAgICBJREJTdG9yYWdlTWFuYWdl
ciYgaWRiU3RvcmFnZU1hbmFnZXIoSURCU3RvcmFnZVJlZ2lzdHJ5Jik7CisgICAgSURCU3RvcmFn
ZU1hbmFnZXIqIGV4aXN0aW5nSURCU3RvcmFnZU1hbmFnZXIoKTsKICAgICBib29sIGlzQWN0aXZl
KCk7CiAgICAgYm9vbCBpc0VtcHR5KCk7CiAgICAgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4g
ZmV0Y2hEYXRhVHlwZXNJbkxpc3QoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4pOwogICAgIHZv
aWQgZGVsZXRlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgV2FsbFRpbWUpOwotICAg
IHZvaWQgbW92ZURhdGEoY29uc3QgU3RyaW5nJiBuZXdQYXRoLCBjb25zdCBTdHJpbmcmIGxvY2Fs
U3RvcmFnZVBhdGgpOworICAgIHZvaWQgbW92ZURhdGEoY29uc3QgU3RyaW5nJiBuZXdQYXRoLCBj
b25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZVBhdGgsIGNvbnN0IFN0cmluZyYgaWRiU3RvcmFnZVBh
dGgpOwogCiBwcml2YXRlOgogICAgIGVudW0gY2xhc3MgU3RvcmFnZUJ1Y2tldE1vZGUgOiBib29s
OwogICAgIGNsYXNzIFN0b3JhZ2VCdWNrZXQ7CiAgICAgU3RvcmFnZUJ1Y2tldCYgZGVmYXVsdEJ1
Y2tldCgpOwogCi0gICAgdm9pZCBjcmVhdGVPcmlnaW5GaWxlSWZOZWNlc3NhcnkoY29uc3QgV2Vi
Q29yZTo6Q2xpZW50T3JpZ2luJik7Ci0gICAgdm9pZCBkZWxldGVPcmlnaW5GaWxlSWZOZWNlc3Nh
cnkoKTsKLQogICAgIHN0ZDo6dW5pcXVlX3B0cjxTdG9yYWdlQnVja2V0PiBtX2RlZmF1bHRCdWNr
ZXQ7CiAgICAgU3RyaW5nIG1fcGF0aDsKICAgICBib29sIG1fcGVyc2lzdGVkIHsgZmFsc2UgfTsK
ICAgICBTdHJpbmcgbV9sb2NhbFN0b3JhZ2VQYXRoOworICAgIFN0cmluZyBtX2lkYlN0b3JhZ2VQ
YXRoOworICAgIFN0cmluZyBtX2NhY2hlU3RvcmFnZVBhdGg7CisgICAgUmVmPFF1b3RhTWFuYWdl
cj4gbV9xdW90YU1hbmFnZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9RdW90YU1hbmFnZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1F1b3RhTWFuYWdlci5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYTcxZjE3NTg5ODU3YTk5ZDM3NGVjYWQ4ZDJlZTdhNDIxYTdmZjA2OAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9RdW90
YU1hbmFnZXIuY3BwCkBAIC0wLDAgKzEsMTMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlF1b3RhTWFuYWdlci5oIgorCisjaW5jbHVkZSA8d3RmL1NldEZv
clNjb3BlLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitSZWY8UXVvdGFNYW5hZ2VyPiBRdW90
YU1hbmFnZXI6OmNyZWF0ZSh1aW50NjRfdCBxdW90YSwgR2V0VXNhZ2VGdW5jdGlvbiYmIGdldFVz
YWdlRnVuY3Rpb24sIEluY3JlYXNlUXVvdGFGdW5jdGlvbiYmIGluY3JlYXNlUXVvdGFGdW5jdGlv
bikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBRdW90YU1hbmFnZXIocXVvdGEsIFdURk1v
dmUoZ2V0VXNhZ2VGdW5jdGlvbiksIFdURk1vdmUoaW5jcmVhc2VRdW90YUZ1bmN0aW9uKSkpOwor
fQorCitRdW90YU1hbmFnZXI6OlF1b3RhTWFuYWdlcih1aW50NjRfdCBxdW90YSwgR2V0VXNhZ2VG
dW5jdGlvbiYmIGdldFVzYWdlRnVuY3Rpb24sIEluY3JlYXNlUXVvdGFGdW5jdGlvbiYmIGluY3Jl
YXNlUXVvdGFGdW5jdGlvbikKKyAgICA6IG1fcXVvdGEocXVvdGEpCisgICAgLCBtX2luaXRpYWxR
dW90YShxdW90YSkKKyAgICAsIG1fZ2V0VXNhZ2VGdW5jdGlvbihXVEZNb3ZlKGdldFVzYWdlRnVu
Y3Rpb24pKQorICAgICwgbV9pbmNyZWFzZVF1b3RhRnVuY3Rpb24oV1RGTW92ZShpbmNyZWFzZVF1
b3RhRnVuY3Rpb24pKQoreworICAgIEFTU0VSVChtX3F1b3RhKTsKK30KKwordm9pZCBRdW90YU1h
bmFnZXI6OnJlcXVlc3RTcGFjZSh1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCwgUmVxdWVzdENhbGxi
YWNrJiYgY2FsbGJhY2spCit7CisgICAgbV9yZXF1ZXN0cy5hcHBlbmQoUXVvdGFNYW5hZ2VyOjpS
ZXF1ZXN0IHsgc3BhY2VSZXF1ZXN0ZWQsIFdURk1vdmUoY2FsbGJhY2spLCBRdW90YUluY3JlYXNl
UmVxdWVzdElkZW50aWZpZXIgeyB9IH0pOworICAgIGhhbmRsZVJlcXVlc3RzKCk7Cit9CisKK3Zv
aWQgUXVvdGFNYW5hZ2VyOjpoYW5kbGVSZXF1ZXN0cygpCit7CisgICAgaWYgKG1fY3VycmVudFJl
cXVlc3QpCisgICAgICAgIHJldHVybjsKKworICAgIFNldEZvclNjb3BlPGJvb2w+IGlzSGFuZGxp
bmdSZXF1ZXN0cyhtX2lzSGFuZGxpbmdSZXF1ZXN0cywgdHJ1ZSk7CisKKyAgICB3aGlsZSAoIW1f
Y3VycmVudFJlcXVlc3QgJiYgIW1fcmVxdWVzdHMuaXNFbXB0eSgpKSB7CisgICAgICAgIG1fY3Vy
cmVudFJlcXVlc3QgPSBtX3JlcXVlc3RzLnRha2VGaXJzdCgpOworICAgICAgICBpZiAoZ3JhbnRX
aXRoQ3VycmVudFF1b3RhKG1fY3VycmVudFJlcXVlc3QtPnNwYWNlUmVxdWVzdGVkKSkgeworICAg
ICAgICAgICAgbV9jdXJyZW50UmVxdWVzdC0+Y2FsbGJhY2soRGVjaXNpb246OkdyYW50KTsKKyAg
ICAgICAgICAgIG1fY3VycmVudFJlcXVlc3QgPSBzdGQ6Om51bGxvcHQ7CisgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIG1fY3VycmVudFJlcXVlc3QtPmlkZW50aWZp
ZXIgPSBRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXI6OmdlbmVyYXRlVGhyZWFkU2FmZSgp
OworICAgICAgICBtX2luY3JlYXNlUXVvdGFGdW5jdGlvbihtX2N1cnJlbnRSZXF1ZXN0LT5pZGVu
dGlmaWVyLCBtX3F1b3RhLCAqbV91c2FnZSwgbV9jdXJyZW50UmVxdWVzdC0+c3BhY2VSZXF1ZXN0
ZWQpOworICAgIH0KK30KKworYm9vbCBRdW90YU1hbmFnZXI6OmdyYW50V2l0aEN1cnJlbnRRdW90
YSh1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCkKK3sKKyAgICBpZiAoZ3JhbnRGYXN0UGF0aChzcGFj
ZVJlcXVlc3RlZCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gV2hlbiBRdW90YU1h
bmFnZXIgaXMgdXNlZCBmb3IgdGhlIGZpcnN0IHRpbWUsIHdlIHdhbnQgdG8gbWFrZSBzdXJlIGl0
cyBpbml0aWFsIHF1b3RhIGlzIGJpZ2dlciB0aGFuIGV4aXN0aW5nIGRpc2sgdXNhZ2UsCisgICAg
Ly8gYmFzZWQgb24gdGhlIGFzc3VtcHRpb24gdGhhdCB0aGUgcXVvdGEgd2FzIGluY3JlYXNlZCB0
byBhdCBsZWFzdCB0aGUgZGlzayB1c2FnZSB1bmRlciB1c2VyJ3MgcGVybWlzc2lvbiBiZWZvcmUu
CisgICAgYm9vbCBzaG91bGRVcGRhdGVRdW90YUJhc2VkT25Vc2FnZSA9ICFtX3VzYWdlOworICAg
IG1fdXNhZ2UgPSBtX2dldFVzYWdlRnVuY3Rpb24oKTsKKyAgICBpZiAoc2hvdWxkVXBkYXRlUXVv
dGFCYXNlZE9uVXNhZ2UpIHsKKyAgICAgICAgYXV0byBkZWZhdWx0UXVvdGFTdGVwID0gbV9xdW90
YSAvIDEwOworICAgICAgICBtX3F1b3RhID0gc3RkOjptYXgobV9xdW90YSwgZGVmYXVsdFF1b3Rh
U3RlcCAqICgoKm1fdXNhZ2UgLyBkZWZhdWx0UXVvdGFTdGVwKSArIDEpKTsKKyAgICB9CisgICAg
bV9xdW90YUNvdW50ZG93biA9ICptX3VzYWdlIDwgbV9xdW90YSA/IG1fcXVvdGEgLSAqbV91c2Fn
ZSA6IDA7CisKKyAgICByZXR1cm4gZ3JhbnRGYXN0UGF0aChzcGFjZVJlcXVlc3RlZCk7Cit9CisK
K2Jvb2wgUXVvdGFNYW5hZ2VyOjpncmFudEZhc3RQYXRoKHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVk
KQoreworICAgIGlmIChzcGFjZVJlcXVlc3RlZCA8PSBtX3F1b3RhQ291bnRkb3duKSB7CisgICAg
ICAgIG1fcXVvdGFDb3VudGRvd24gLT0gc3BhY2VSZXF1ZXN0ZWQ7CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBRdW90YU1hbmFnZXI6
OmRpZEluY3JlYXNlUXVvdGEoUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IG5ld1F1b3RhKQoreworICAgIGlmICghbV9jdXJy
ZW50UmVxdWVzdCB8fCBtX2N1cnJlbnRSZXF1ZXN0LT5pZGVudGlmaWVyICE9IGlkZW50aWZpZXIp
CisgICAgICAgIHJldHVybjsKKworICAgIGlmIChuZXdRdW90YSkgeworICAgICAgICBtX3F1b3Rh
ID0gKm5ld1F1b3RhOworICAgICAgICAvLyBSZWNhbGN1bGF0ZSBtX3F1b3RhQ291bnRkb3duIGJh
c2VkIG9uIHVzYWdlLgorICAgICAgICBtX3F1b3RhQ291bnRkb3duID0gMDsKKyAgICB9CisKKyAg
ICBhdXRvIGRlY2lzaW9uID0gZ3JhbnRXaXRoQ3VycmVudFF1b3RhKG1fY3VycmVudFJlcXVlc3Qt
PnNwYWNlUmVxdWVzdGVkKSA/IERlY2lzaW9uOjpHcmFudCA6IERlY2lzaW9uOjpEZW55OworICAg
IG1fY3VycmVudFJlcXVlc3QtPmNhbGxiYWNrKGRlY2lzaW9uKTsKKyAgICBtX2N1cnJlbnRSZXF1
ZXN0ID0gc3RkOjpudWxsb3B0OworCisgICAgaWYgKCFtX2lzSGFuZGxpbmdSZXF1ZXN0cykKKyAg
ICAgICAgaGFuZGxlUmVxdWVzdHMoKTsKK30KKwordm9pZCBRdW90YU1hbmFnZXI6OnJlc2V0UXVv
dGFVcGRhdGVkQmFzZWRPblVzYWdlRm9yVGVzdGluZygpCit7CisgICAgcmVzZXRRdW90YUZvclRl
c3RpbmcoKTsKKyAgICBtX3VzYWdlID0gc3RkOjpudWxsb3B0OworfQorCit2b2lkIFF1b3RhTWFu
YWdlcjo6cmVzZXRRdW90YUZvclRlc3RpbmcoKQoreworICAgIG1fcXVvdGEgPSBtX2luaXRpYWxR
dW90YTsKKyAgICBtX3F1b3RhQ291bnRkb3duID0gMDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvUXVv
dGFNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvUXVvdGFN
YW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMmFiNDhjODhhYzg3YTYwNjJmOGNjN2JjMjc4ZWQ2OTNhMDY2
NzY1NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3Rv
cmFnZS9RdW90YU1hbmFnZXIuaApAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlICJRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIuaCIKKyNp
bmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvRGVxdWUuaD4K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFF1b3RhTWFuYWdlciA6IHB1YmxpYyBUaHJl
YWRTYWZlUmVmQ291bnRlZDxRdW90YU1hbmFnZXI+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UXVv
dGFNYW5hZ2VyPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAg
dXNpbmcgR2V0VXNhZ2VGdW5jdGlvbiA9IEZ1bmN0aW9uPHVpbnQ2NF90KCk+OworICAgIHVzaW5n
IEluY3JlYXNlUXVvdGFGdW5jdGlvbiA9IEZ1bmN0aW9uPHZvaWQoUXVvdGFJbmNyZWFzZVJlcXVl
c3RJZGVudGlmaWVyLCB1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRVc2Fn
ZSwgdWludDY0X3QgcmVxdWVzdGVkSW5jcmVhc2UpPjsKKyAgICBzdGF0aWMgUmVmPFF1b3RhTWFu
YWdlcj4gY3JlYXRlKHVpbnQ2NF90IHF1b3RhLCBHZXRVc2FnZUZ1bmN0aW9uJiYsIEluY3JlYXNl
UXVvdGFGdW5jdGlvbiYmKTsKKworICAgIGVudW0gY2xhc3MgRGVjaXNpb24gOiBib29sIHsgRGVu
eSwgR3JhbnQgfTsKKyAgICB1c2luZyBSZXF1ZXN0Q2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKERlY2lzaW9uKT47CisgICAgdm9pZCByZXF1ZXN0U3BhY2UodWludDY0X3Qgc3BhY2VS
ZXF1ZXN0ZWQsIFJlcXVlc3RDYWxsYmFjayYmKTsKKyAgICB2b2lkIGRpZEluY3JlYXNlUXVvdGEo
UXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBu
ZXdRdW90YSk7CisKKyAgICB2b2lkIHJlc2V0UXVvdGFVcGRhdGVkQmFzZWRPblVzYWdlRm9yVGVz
dGluZygpOworICAgIHZvaWQgcmVzZXRRdW90YUZvclRlc3RpbmcoKTsKKworcHJpdmF0ZToKKyAg
ICBRdW90YU1hbmFnZXIodWludDY0X3QgcXVvdGEsIEdldFVzYWdlRnVuY3Rpb24mJiwgSW5jcmVh
c2VRdW90YUZ1bmN0aW9uJiYpOworICAgIHZvaWQgaGFuZGxlUmVxdWVzdHMoKTsKKyAgICBib29s
IGdyYW50V2l0aEN1cnJlbnRRdW90YSh1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCk7CisgICAgYm9v
bCBncmFudEZhc3RQYXRoKHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkKTsKKworICAgIHN0cnVjdCBS
ZXF1ZXN0IHsKKyAgICAgICAgdWludDY0X3Qgc3BhY2VSZXF1ZXN0ZWQ7CisgICAgICAgIFJlcXVl
c3RDYWxsYmFjayBjYWxsYmFjazsKKyAgICAgICAgUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlm
aWVyIGlkZW50aWZpZXI7CisgICAgfTsKKyAgICBEZXF1ZTxSZXF1ZXN0PiBtX3JlcXVlc3RzOwor
ICAgIHN0ZDo6b3B0aW9uYWw8UmVxdWVzdD4gbV9jdXJyZW50UmVxdWVzdDsKKyAgICBib29sIG1f
aXNIYW5kbGluZ1JlcXVlc3RzIHsgZmFsc2UgfTsKKyAgICB1aW50NjRfdCBtX3F1b3RhQ291bnRk
b3duIHsgMCB9OworICAgIHVpbnQ2NF90IG1fcXVvdGE7CisgICAgdWludDY0X3QgbV9pbml0aWFs
UXVvdGE7IC8vIFRlc3Qgb25seS4KKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBtX3VzYWdl
OworICAgIEdldFVzYWdlRnVuY3Rpb24gbV9nZXRVc2FnZUZ1bmN0aW9uOworICAgIEluY3JlYXNl
UXVvdGFGdW5jdGlvbiBtX2luY3JlYXNlUXVvdGFGdW5jdGlvbjsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNz
YWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXgg
MzNmODIyM2U1MjllMDc4ZDZiMmJiODE3Mjc2ZWJiZThjMTk5YTFlYi4uYzBiMDQ5ZjhmYzY4YmQy
ZGIyNzY3NDcwYTdiODQ1ODRhODRlMjZiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0
L21lc3NhZ2VzLnB5CkBAIC0yODgsNiArMjg4LDcgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2Jl
X2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICAgICAgJ1dlYkNvcmU6Ok5hdGl2ZUltYWdlUmVmZXJl
bmNlJywKICAgICAgICAgJ1dlYkNvcmU6OlBhZ2VJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNv
cmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXInLAorICAgICAgICAnV2Vi
S2l0OjpRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6
UGx1Z2luTG9hZENsaWVudFBvbGljeScsCiAgICAgICAgICdXZWJDb3JlOjpQb2ludGVySUQnLAog
ICAgICAgICAnV2ViQ29yZTo6UHVzaFN1YnNjcmlwdGlvbklkZW50aWZpZXInLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGEvUXVvdGFJbmNyZWFzZVJlcXVlc3RJ
ZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9RdW90YUluY3Jl
YXNlUmVxdWVzdElkZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZTQ1NGI2YTA4YjY4YTIwYzY1MGRj
ODk3NjMyODU1OGEzNzIwMWY1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2Vic2l0ZURhdGEvUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLmgKQEAgLTAsMCAr
MSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL09iamVj
dElkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gUXVvdGFJbmNyZWFz
ZVJlcXVlc3RJZGVudGlmaWVyVHlwZSB7IH07Cit1c2luZyBRdW90YUluY3JlYXNlUmVxdWVzdElk
ZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmll
clR5cGU+OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oCmluZGV4IDE1M2JmOTNiZGY2ZmYxMWI0
NjBmNjQ4MjViNDUwMzA4Yjg0NWQzOGQuLjIwOTg0NjgxNjI5OTA0NzMzODg0Y2ZjYjEyN2FhNTcy
MWQyY2VlODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhU3Rv
cmVQYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGFTdG9y
ZVBhcmFtZXRlcnMuaApAQCAtNzEsOCArNzEsOCBAQCBzdHJ1Y3QgV2Vic2l0ZURhdGFTdG9yZVBh
cmFtZXRlcnMgewogICAgIFN0cmluZyBnZW5lcmFsU3RvcmFnZURpcmVjdG9yeTsKICAgICBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUgZ2VuZXJhbFN0b3JhZ2VEaXJlY3RvcnlIYW5kbGU7CiAKLSAg
ICB1aW50NjRfdCBwZXJPcmlnaW5TdG9yYWdlUXVvdGEgeyBXZWJDb3JlOjpTdG9yYWdlUXVvdGFN
YW5hZ2VyOjpkZWZhdWx0UXVvdGEoKSB9OwotICAgIHVpbnQ2NF90IHBlclRoaXJkUGFydHlPcmln
aW5TdG9yYWdlUXVvdGEgeyBXZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2VyOjpkZWZhdWx0VGhp
cmRQYXJ0eVF1b3RhKCkgfTsKKyAgICB1aW50NjRfdCBwZXJPcmlnaW5TdG9yYWdlUXVvdGE7Cisg
ICAgdWludDY0X3QgcGVyVGhpcmRQYXJ0eU9yaWdpblN0b3JhZ2VRdW90YTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBi
L1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggNTdlZjNiMTRlYWYyYzEwOTIwOThlZTk0
MzJmNTA4YzYxMWU1OGUzNS4uNmE2NjliYjAwZWMxYTk2YWVmYTYzZDQ4YjE3ZWI0MjVlMGZlN2U3
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0CkBAIC0xNDQsMTAgKzE0NCwxNCBAQCBOZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgQG5vLXVuaWZ5CiBO
ZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlci5jcHAKIE5ldHdv
cmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGUuY3BwCiBOZXR3b3JrUHJv
Y2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnkuY3BwCitOZXR3b3Jr
UHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQuY3BwCitOZXR3b3Jr
UHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VNYW5hZ2VyLmNwcAorTmV0d29ya1Byb2Nlc3Mvc3Rv
cmFnZS9JREJTdG9yYWdlUmVnaXN0cnkuY3BwCiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0xvY2Fs
U3RvcmFnZU1hbmFnZXIuY3BwCiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL01lbW9yeVN0b3JhZ2VB
cmVhLmNwcAogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3Bw
CiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2VyLmNwcAorTmV0d29y
a1Byb2Nlc3Mvc3RvcmFnZS9RdW90YU1hbmFnZXIuY3BwCiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdl
L1NRTGl0ZVN0b3JhZ2VBcmVhLmNwcAogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TZXNzaW9uU3Rv
cmFnZU1hbmFnZXIuY3BwCiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1N0b3JhZ2VBcmVhQmFzZS5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuY3BwCmluZGV4IGE2NzgzNjdhNzc1YTQ5YmE4MWIyNDg4Y2YzMWVhYjlkY2Nj
Y2M5MjEuLjE5NTQ2Mjc4NzdkODRjYTA4YjU3MjAwY2M4NjJlOTNkMjMzMDQzNzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcApAQCAtMTQ5NSw2ICsxNDk1LDE2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6
cmVxdWVzdFN0b3JhZ2VTcGFjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFdlCiAg
ICAgfSk7CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6aW5jcmVhc2VRdW90YShQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2lu
LCBRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIgaWRlbnRpZmllciwgdWludDY0X3QgY3Vy
cmVudFF1b3RhLCB1aW50NjRfdCBjdXJyZW50VXNhZ2UsIHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVk
KQoreworICAgIHJlcXVlc3RTdG9yYWdlU3BhY2Uoc2Vzc2lvbklELCBvcmlnaW4sIGN1cnJlbnRR
dW90YSwgY3VycmVudFVzYWdlLCBzcGFjZVJlcXVlc3RlZCwgW3RoaXMsIHdlYWtUaGlzID0gV2Vh
a1B0ciB7ICp0aGlzIH0sIHNlc3Npb25JRCwgb3JpZ2luLCBpZGVudGlmaWVyXShhdXRvIHJlc3Vs
dCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkRpZEluY3JlYXNlUXVv
dGEoc2Vzc2lvbklELCBvcmlnaW4sIGlkZW50aWZpZXIsIHJlc3VsdCksIDApOworICAgIH0pOwor
fQorCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlZ2lzdGVyU2NoZW1lRm9yTGVnYWN5Q3Vz
dG9tUHJvdG9jb2woY29uc3QgU3RyaW5nJiBzY2hlbWUpCiB7CiAjaWYgRU5BQkxFKExFR0FDWV9D
VVNUT01fUFJPVE9DT0xfTUFOQUdFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggYTRlMzY0NWViYWFlMzM2ZDE4
MGI1NDE0YmFmYWEzNWQ4M2Y5MThjNC4uMjQxZjhlNDlkNWViZjkyNGQ1NzQxMjgwODlmMTBjMmQ4
ZWJkZTlkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJQcm9jZXNz
TGF1bmNoZXIuaCIKICNpbmNsdWRlICJQcm9jZXNzVGhyb3R0bGVyLmgiCiAjaW5jbHVkZSAiUHJv
Y2Vzc1Rocm90dGxlckNsaWVudC5oIgorI2luY2x1ZGUgIlF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRl
bnRpZmllci5oIgogI2luY2x1ZGUgIlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIuaCIK
ICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdlc1JlcGxpZXMuaCIKICNpbmNsdWRlICJX
ZWJzaXRlRGF0YVN0b3JlLmgiCkBAIC0zNDAsNiArMzQxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHRyaWdnZXJCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaEZvck5hdmlnYXRpb24oV2ViUGFnZVBy
b3h5SWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpCcm93c2luZ0Nv
bnRleHRHcm91cFN3aXRjaERlY2lzaW9uLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biYgcmVzcG9uc2VEb21haW4sIE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyIGV4aXN0aW5n
TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sIHN1Y2Nlc3MpPiYmKTsKIAogICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VTcGFjZShQ
QUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgdWludDY0X3QgcXVv
dGEsIHVpbnQ2NF90IGN1cnJlbnRTaXplLCB1aW50NjRfdCBzcGFjZVJlcXVpcmVkLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHF1b3RhKT4mJik7CisgICAg
dm9pZCBpbmNyZWFzZVF1b3RhKFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpDbGllbnRP
cmlnaW4mLCBRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGN1cnJlbnRR
dW90YSwgdWludDY0X3QgY3VycmVudFVzYWdlLCB1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCk7CiAK
ICAgICBXZWJzaXRlRGF0YVN0b3JlKiB3ZWJzaXRlRGF0YVN0b3JlRnJvbVNlc3Npb25JRChQQUw6
OlNlc3Npb25JRCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgppbmRleCAxMmQwNmNl
YmQ2MmFmMTc1MGU3ODg1NTljMTNhMWIzOTgzZmRkMmJhLi42OGMzMmM0ZjMxZWExYTE4ZTgzMDA0
NDMyN2Q1MGI4NDI5NTM2NDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC02
OCw2ICs2OCw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2
ZXIgewogI2VuZGlmCiAKICAgICBSZXF1ZXN0U3RvcmFnZVNwYWNlKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgc3RydWN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiBvcmlnaW4sIHVpbnQ2NF90IHF1
b3RhLCB1aW50NjRfdCBjdXJyZW50U2l6ZSwgdWludDY0X3Qgc3BhY2VSZXF1aXJlZCkgLT4gKHN0
ZDo6b3B0aW9uYWw8dWludDY0X3Q+IG5ld1F1b3RhKSBBc3luYworICAgIEluY3JlYXNlUXVvdGEo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdHJ1Y3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9y
aWdpbiwgV2ViS2l0OjpRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIgaWRlbnRpZmllciwg
dWludDY0X3QgcXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRTaXplLCB1aW50NjRfdCBzcGFjZVJlcXVl
c3RlZCkKICAgICAKICAgICBSZXNvdXJjZUxvYWREaWRTZW5kUmVxdWVzdChXZWJLaXQ6OldlYlBh
Z2VQcm94eUlkZW50aWZpZXIgcGFnZUlkZW50aWZpZXIsIHN0cnVjdCBXZWJLaXQ6OlJlc291cmNl
TG9hZEluZm8gcmVzb3VyY2VMb2FkSW5mbywgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVl
c3QsIHN0ZDo6b3B0aW9uYWw8SVBDOjpGb3JtRGF0YVJlZmVyZW5jZT4gaHR0cEJvZHkpCiAgICAg
UmVzb3VyY2VMb2FkRGlkUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94
eUlkZW50aWZpZXIgcGFnZUlkZW50aWZpZXIsIHN0cnVjdCBXZWJLaXQ6OlJlc291cmNlTG9hZElu
Zm8gcmVzb3VyY2VMb2FkSW5mbywgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNvdXJjZVJl
c3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAK
aW5kZXggMDhjZWNmZWJmZTBkZTQ0YjFmNWE0YjUwMTE0MDVlMWZkODE1MDlmZS4uMTMyOTA1NTcy
ZjRiOGMzZDA3OTU4MzQzMTQ4YzJmYjU2ODNmZWZiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTE3
MTYsNyArMTcxNiw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZGlzcGF0Y2hPblF1ZXVlKEZ1
bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKIHVpbnQ2NF90IFdlYnNpdGVEYXRhU3RvcmU6OnBl
clRoaXJkUGFydHlPcmlnaW5TdG9yYWdlUXVvdGEoKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBD
b25zaWRlciB3aGV0aGVyIGFsbG93aW5nIHRvIHNldCBhIHBlclRoaXJkUGFydHlPcmlnaW5TdG9y
YWdlUXVvdGEgZnJvbSBhIFdlYnNpdGVEYXRhU3RvcmUuCi0gICAgcmV0dXJuIFdlYkNvcmU6OlN0
b3JhZ2VRdW90YU1hbmFnZXI6OmRlZmF1bHRUaGlyZFBhcnR5UXVvdGFGcm9tUGVyT3JpZ2luUXVv
dGEocGVyT3JpZ2luU3RvcmFnZVF1b3RhKCkpOworICAgIHJldHVybiBwZXJPcmlnaW5TdG9yYWdl
UXVvdGEoKSAvIDEwOwogfQogCiB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldENhY2hlTW9kZWxT
eW5jaHJvbm91c2x5Rm9yVGVzdGluZyhDYWNoZU1vZGVsIGNhY2hlTW9kZWwpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgK
aW5kZXggNmJjNjkzNjljMzM4MzI4NjlkZWExZjVkYWE1MGU3OWZhYTZlN2JmOS4uODVlZTMxZTEz
ODNkOTdkNjQ2YzY5OGMyZGVmN2Q5YzMzNGFiNzViZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaApAQCAtMzUwLDYg
KzM1MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdERldmljZUlk
SGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSgpOwogICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZh
dWx0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKTsKICAgICBzdGF0aWMgYm9vbCBo
dHRwM0VuYWJsZWQoKTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ2NF90IGRlZmF1bHRQZXJP
cmlnaW5RdW90YSgpIHsgcmV0dXJuIDEwMDAgKiBNQjsgfQogCiAgICAgdm9pZCByZXNldFF1b3Rh
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBjbGVhclN0b3JhZ2UoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uLmNwcAppbmRleCAzMzBiOGIxMDVhNzlkYTY1ZGMyMDdhN2VmZTNiYzM3NjAwMGUyZjFh
Li4xYWU2ZDBiMTFhZDM4NGY2NDE2ZmZkM2JmNTQ4MzcyNWE0ZmYzYjM4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCkBAIC0zMyw2ICszMyw3IEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6V2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24oSXNQZXJzaXN0ZW50IGlzUGVyc2lzdGVudCwgV2lsbENvcHlQYXRo
c0Zyb21FeGlzdGluZ0NvbmZpZ3VyYXRpb24gd2lsbENvcHlQYXRocykKICAgICA6IG1faXNQZXJz
aXN0ZW50KGlzUGVyc2lzdGVudCkKKyAgICAsIG1fcGVyT3JpZ2luU3RvcmFnZVF1b3RhKFdlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHRQZXJPcmlnaW5RdW90YSgpKQogewogICAgIGlmIChpc1BlcnNp
c3RlbnQgPT0gSXNQZXJzaXN0ZW50OjpZZXMgJiYgd2lsbENvcHlQYXRocyA9PSBXaWxsQ29weVBh
dGhzRnJvbUV4aXN0aW5nQ29uZmlndXJhdGlvbjo6Tm8pIHsKICAgICAgICAgc2V0QXBwbGljYXRp
b25DYWNoZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRpb25DYWNo
ZURpcmVjdG9yeSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCmluZGV4
IGYxNzFhZDRjZTVlMWI1Y2UxMzk0ZWM3ODA5NTI0MTA3ZjgyYzE3NGEuLjMwYTI5OTMxMDIyN2Qy
ZjcyNGY0MjU3NmI2NjEyNTQ3Yjk2MWNmMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24uaApAQCAtMjYsNyArMjYsNiBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJB
UElPYmplY3QuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1N0b3JhZ2VRdW90YU1hbmFnZXIuaD4KICNp
bmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAg
LTIwNyw3ICsyMDYsNyBAQCBwcml2YXRlOgogCiAgICAgU3RyaW5nIG1fY2FjaGVTdG9yYWdlRGly
ZWN0b3J5OwogICAgIFN0cmluZyBtX2dlbmVyYWxTdG9yYWdlRGlyZWN0b3J5OwotICAgIHVpbnQ2
NF90IG1fcGVyT3JpZ2luU3RvcmFnZVF1b3RhIHsgV2ViQ29yZTo6U3RvcmFnZVF1b3RhTWFuYWdl
cjo6ZGVmYXVsdFF1b3RhKCkgfTsKKyAgICB1aW50NjRfdCBtX3Blck9yaWdpblN0b3JhZ2VRdW90
YTsKICAgICBTdHJpbmcgbV9uZXR3b3JrQ2FjaGVEaXJlY3Rvcnk7CiAgICAgU3RyaW5nIG1fYXBw
bGljYXRpb25DYWNoZURpcmVjdG9yeTsKICAgICBTdHJpbmcgbV9hcHBsaWNhdGlvbkNhY2hlRmxh
dEZpbGVTdWJkaXJlY3RvcnlOYW1lIHsgIkZpbGVzIl9zIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwYzdjMzFiYzU1N2I1NWQ1MTcw
NWZjMzlkN2U2NzljOTRjNmEwYWYzLi5hMWU5YzU3NTY1OThmMTg2YjQyMTdkYmIyZWYwZjUzN2Nk
YTAwNWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTE0NjcsNiArMTQ2NywxMSBAQAogCQk5M0IyNjE0RDIyN0QxNDlFMDBCOTdBNzYg
LyogU3RvcmFnZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDkzQjI2MTQ5MjI3RDE0NzIwMEI5N0E3NiAvKiBTdG9yYWdlTWFuYWdlci5oICov
OyB9OwogCQk5M0IyNjE0RTIyN0QxNEIxMDBCOTdBNzYgLyogTG9jYWxTdG9yYWdlRGF0YWJhc2Uu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjI2MTQ1
MjI3RDE0NzAwMEI5N0E3NiAvKiBMb2NhbFN0b3JhZ2VEYXRhYmFzZS5oICovOyB9OwogCQk5M0Iy
NjE0RjIyN0QxNEIxMDBCOTdBNzYgLyogTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0IyNjE0NjIyN0Qx
NDcxMDBCOTdBNzYgLyogTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmggKi87IH07CisJCTkz
QjYzMUU1MjdBQkE2MjgwMDQ0M0E0NCAvKiBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0I2MzFFNDI3
QUJBNjI3MDA0NDNBNDQgLyogSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5oICovOyB9Owor
CQk5M0I2MzFFODI3QUJBNjVEMDA0NDNBNDQgLyogSURCU3RvcmFnZU1hbmFnZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjYzMUU2MjdBQkE2NUMw
MDQ0M0E0NCAvKiBJREJTdG9yYWdlTWFuYWdlci5oICovOyB9OworCQk5M0I2MzFFRDI3QUJBNkI0
MDA0NDNBNDQgLyogSURCU3RvcmFnZVJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0I2MzFFQjI3QUJBNkIzMDA0NDNBNDQgLyogSURCU3Rv
cmFnZVJlZ2lzdHJ5LmggKi87IH07CisJCTkzQjYzMUYxMjdBQkFDQTkwMDQ0M0E0NCAvKiBRdW90
YU1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDkzQjYzMUVGMjdBQkFDQTkwMDQ0M0E0NCAvKiBRdW90YU1hbmFnZXIuaCAqLzsgfTsKKwkJOTNC
NjMxRjMyN0FCQUQ4MDAwNDQzQTQ0IC8qIFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCNjMxRjIy
N0FCQUQ3RjAwNDQzQTQ0IC8qIFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllci5oICovOyB9
OwogCQk5M0JERUIwMTE3MUREN0FGMDBCRkVFMUIgLyogV0tQYWdlTG9hZFR5cGVzUHJpdmF0ZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCREVCMDAx
NzFERDdBRjAwQkZFRTFCIC8qIFdLUGFnZUxvYWRUeXBlc1ByaXZhdGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0Q2Qjc3MjI1NEJCNTE5MDA1
OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDZCNzZDMjU0Qjg5NTgwMDU4REQzQSAvKiBTcGVl
Y2hSZWNvZ25pdGlvblNlcnZlci5oICovOyB9OwogCQk5M0Q2Qjc3MzI1NEJCOEM3MDA1OEREM0Eg
LyogV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Q2Qjc2ODI1NEI3QkM2MDA1OEREM0EgLyogV2Vi
U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmggKi87IH07CkBAIC01MzU2LDYgKzUzNjEsMTUg
QEAKIAkJOTNCMjYxNDkyMjdEMTQ3MjAwQjk3QTc2IC8qIFN0b3JhZ2VNYW5hZ2VyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0b3JhZ2VNYW5hZ2VyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTkzQjI2MTRBMjI3RDE0NzIwMEI5N0E3NiAvKiBTdG9yYWdlTWFu
YWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdG9yYWdlTWFu
YWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQjI2MTRDMjI3RDE0NzIw
MEI5N0E3NiAvKiBMb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBMb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTkzQjYzMUUzMjdBQkE1RjcwMDQ0M0E0NCAvKiBJREJTdG9yYWdlQ29u
bmVjdGlvblRvQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElEQlN0b3JhZ2VDb25uZWN0
aW9uVG9DbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0I2MzFFNDI3
QUJBNjI3MDA0NDNBNDQgLyogSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzQjYzMUU2MjdBQkE2NUMwMDQ0M0E0NCAv
KiBJREJTdG9yYWdlTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJ
REJTdG9yYWdlTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0I2MzFF
NzI3QUJBNjVDMDA0NDNBNDQgLyogSURCU3RvcmFnZU1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSURCU3RvcmFnZU1hbmFnZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk5M0I2MzFFQTI3QUJBNkIyMDA0NDNBNDQgLyogSURCU3RvcmFn
ZVJlZ2lzdHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElEQlN0
b3JhZ2VSZWdpc3RyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzQjYzMUVC
MjdBQkE2QjMwMDQ0M0E0NCAvKiBJREJTdG9yYWdlUmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSURCU3RvcmFnZVJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTkzQjYzMUVFMjdBQkFDQTgwMDQ0M0E0NCAvKiBRdW90YU1hbmFnZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUXVvdGFNYW5hZ2VyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNCNjMxRUYyN0FCQUNBOTAwNDQzQTQ0IC8q
IFF1b3RhTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBRdW90YU1h
bmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNCNjMxRjIyN0FCQUQ3RjAw
NDQzQTQ0IC8qIFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCQTA0REEyMTUxQURGMzAwN0Y0NTVGIC8qIFdl
YlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBX
ZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTkzQkEwNERCMjE1MUFERjMwMDdGNDU1RiAvKiBXZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQkEw
NERDMjE1MUFERjMwMDdGNDU1RiAvKiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVz
c2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzU2OSw2
ICs3NTgzLDcgQEAKIAkJMUFCRjQzNzgxQTM2ODAzNTAwM0ZCMEU2IC8qIFdlYnNpdGVEYXRhICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk5M0I2MzFGMjI3
QUJBRDdGMDA0NDNBNDQgLyogUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLmggKi8sCiAJ
CQkJMUE0ODMyRDQxQTlDREY5NjAwOEI0REZFIC8qIFdlYnNpdGVEYXRhLmNwcCAqLywKIAkJCQkx
QTQ4MzJENTFBOUNERjk2MDA4QjRERkUgLyogV2Vic2l0ZURhdGEuaCAqLywKIAkJCQkxQTI4QjhD
QjFDODBFRDU5MDA2RkQ3NDMgLyogV2Vic2l0ZURhdGFGZXRjaE9wdGlvbi5oICovLApAQCAtMTA0
MjIsNiArMTA0MzcsMTIgQEAKIAkJCQk5MzVCNTc5ODI2RjUxMjcwMDA4QjQ4QUMgLyogRmlsZVN5
c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeS5oICovLAogCQkJCTkzMUEwNzUxMjZGMDYzMTAwMDQ0
NzRDRCAvKiBGaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIuY3BwICovLAogCQkJCTkzMUEwNzUwMjZG
MDYzMTAwMDQ0NzRDRCAvKiBGaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIuaCAqLywKKwkJCQk5M0I2
MzFFMzI3QUJBNUY3MDA0NDNBNDQgLyogSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5jcHAg
Ki8sCisJCQkJOTNCNjMxRTQyN0FCQTYyNzAwNDQzQTQ0IC8qIElEQlN0b3JhZ2VDb25uZWN0aW9u
VG9DbGllbnQuaCAqLywKKwkJCQk5M0I2MzFFNzI3QUJBNjVDMDA0NDNBNDQgLyogSURCU3RvcmFn
ZU1hbmFnZXIuY3BwICovLAorCQkJCTkzQjYzMUU2MjdBQkE2NUMwMDQ0M0E0NCAvKiBJREJTdG9y
YWdlTWFuYWdlci5oICovLAorCQkJCTkzQjYzMUVBMjdBQkE2QjIwMDQ0M0E0NCAvKiBJREJTdG9y
YWdlUmVnaXN0cnkuY3BwICovLAorCQkJCTkzQjYzMUVCMjdBQkE2QjMwMDQ0M0E0NCAvKiBJREJT
dG9yYWdlUmVnaXN0cnkuaCAqLywKIAkJCQk5M0U3OTlDOTI3NjA0OTdBMDA3NDAwOEEgLyogTG9j
YWxTdG9yYWdlTWFuYWdlci5jcHAgKi8sCiAJCQkJOTNFNzk5Q0IyNzYwNDk3QTAwNzQwMDhBIC8q
IExvY2FsU3RvcmFnZU1hbmFnZXIuaCAqLywKIAkJCQk5M0U3OTlEODI3NjEyMTA4MDA3NDAwOEEg
LyogTWVtb3J5U3RvcmFnZUFyZWEuY3BwICovLApAQCAtMTA0MzEsNiArMTA0NTIsOCBAQAogCQkJ
CTkzMDg1REM3MjZFMUM2RUUwMDBFQzZBNyAvKiBOZXR3b3JrU3RvcmFnZU1hbmFnZXIubWVzc2Fn
ZXMuaW4gKi8sCiAJCQkJOTMwODVEQzUyNkUxQzZDRjAwMEVDNkE3IC8qIE9yaWdpblN0b3JhZ2VN
YW5hZ2VyLmNwcCAqLywKIAkJCQk5MzA4NURDNjI2RTFDNkNGMDAwRUM2QTcgLyogT3JpZ2luU3Rv
cmFnZU1hbmFnZXIuaCAqLywKKwkJCQk5M0I2MzFFRTI3QUJBQ0E4MDA0NDNBNDQgLyogUXVvdGFN
YW5hZ2VyLmNwcCAqLywKKwkJCQk5M0I2MzFFRjI3QUJBQ0E5MDA0NDNBNDQgLyogUXVvdGFNYW5h
Z2VyLmggKi8sCiAJCQkJOTNFNzk5Q0MyNzYwNDk3QjAwNzQwMDhBIC8qIFNlc3Npb25TdG9yYWdl
TWFuYWdlci5jcHAgKi8sCiAJCQkJOTNFNzk5Q0EyNzYwNDk3QTAwNzQwMDhBIC8qIFNlc3Npb25T
dG9yYWdlTWFuYWdlci5oICovLAogCQkJCTkzRTc5OUQzMjc2MTIxMDcwMDc0MDA4QSAvKiBTUUxp
dGVTdG9yYWdlQXJlYS5jcHAgKi8sCkBAIC0xMzA0MSw2ICsxMzA2NCw5IEBACiAJCQkJMzEyQ0M5
RjIyMTVCMDZGMTAwREU0MENBIC8qIEhpZ2hQZXJmb3JtYW5jZUdQVU1hbmFnZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTgzOUEyRjMyMUUyMDY3NDUwMDM5MDU3RSAvKiBIaWdoUGVyZm9ybWFuY2VH
cmFwaGljc1VzYWdlU2FtcGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFDMEM5NzQxRERENzYw
MDAwMzJDQUQzIC8qIEljb25Mb2FkaW5nRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTkz
QjYzMUU1MjdBQkE2MjgwMDQ0M0E0NCAvKiBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQk5M0I2MzFFODI3QUJBNjVEMDA0NDNBNDQgLyogSURCU3RvcmFn
ZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTkzQjYzMUVEMjdBQkE2QjQwMDQ0M0E0NCAv
KiBJREJTdG9yYWdlUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRTM1MUNCMTgwRjJD
Q0MwMEU1M0JFOSAvKiBJREJVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQ0Y2QjI1
MTJDOTNFN0EwMDhGOUMzNSAvKiBJbWFnZU9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
MUVDNjlFMTg3MjA5MjEwMEI5NTFGMCAvKiBJbXBvcnRhbmNlQXNzZXJ0aW9uLmggaW4gSGVhZGVy
cyAqLywKQEAgLTEzMjU0LDYgKzEzMjgwLDggQEAKIAkJCQlBMUU2ODg3MDFGNkUyQkFCMDA3MDA2
QTYgLyogUXVhcmFudGluZVNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEwQzIyN0UyNDUxMTMw
QTAwRUQ2MTREIC8qIFF1aWNrTG9va1RodW1ibmFpbGluZ1NvZnRMaW5rLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQUVFNTcyNTI0MDlGMTQyMDAyMDA1RDYgLyogUXVpY2tMb29rVGh1bWJuYWlsTG9h
ZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk5M0I2MzFGMzI3QUJBRDgwMDA0NDNBNDQgLyogUXVv
dGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk5M0I2MzFG
MTI3QUJBQ0E5MDA0NDNBNDQgLyogUXVvdGFNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
Q0I2QUU0NDI2MDk3OTlDMDBCNkVENUEgLyogUmVhc29uU1BJLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1N0ZEMzE4MjIyQjM1MTVFMDA4RDBFOEIgLyogUmVkaXJlY3RTT0F1dGhvcml6YXRpb25TZXNz
aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk5QjEyMjlEMjIzRkYyQkNDMDA4Q0E3NTEgLyogUmVt
b3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29u
bmVjdGlvblRvU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9EYXRhYmFzZXMv
SW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAKaW5kZXggMDRjMjQxMGYzNWFk
Y2MwNDZjNTQwNmFmMGNjZTJmZDBlODQxYWRiMC4uZDc5MDE2OWJlMGY1OGUzMDFlZGJlNDRjMDQ0
Yzc4MzkxZWY0NzQ1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0RhdGFi
YXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9T
ZXJ2ZXIuY3BwCkBAIC0yOSw5ICsyOSw5IEBACiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgog
I2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNs
dWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJOZXR3b3JrU3RvcmFn
ZU1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgog
I2luY2x1ZGUgIldlYklEQlJlc3VsdC5oIgotI2luY2x1ZGUgIldlYklEQlNlcnZlck1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSURCQ29ubmVj
dGlvblRvU2VydmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JREJDdXJzb3JJbmZvLmg+CkBAIC04
MiwxMzIgKzgyLDEzMiBAQCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Ub1NlcnZlciYgV2ViSURC
Q29ubmVjdGlvblRvU2VydmVyOjpjb3JlQ29ubmVjdGlvblRvU2VydgogCiB2b2lkIFdlYklEQkNv
bm5lY3Rpb25Ub1NlcnZlcjo6ZGVsZXRlRGF0YWJhc2UoY29uc3QgSURCUmVxdWVzdERhdGEmIHJl
cXVlc3REYXRhKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6RGVsZXRlRGF0
YWJhc2UocmVxdWVzdERhdGEpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1h
bmFnZXI6OkRlbGV0ZURhdGFiYXNlKHJlcXVlc3REYXRhKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29u
bmVjdGlvblRvU2VydmVyOjpvcGVuRGF0YWJhc2UoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVl
c3REYXRhKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6T3BlbkRhdGFiYXNl
KHJlcXVlc3REYXRhKSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2Vy
OjpPcGVuRGF0YWJhc2UocmVxdWVzdERhdGEpKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9u
VG9TZXJ2ZXI6OmFib3J0VHJhbnNhY3Rpb24oY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0
cmFuc2FjdGlvbklkZW50aWZpZXIpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVy
OjpBYm9ydFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllcikpOworICAgIHNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6QWJvcnRUcmFuc2FjdGlvbih0cmFuc2FjdGlv
bklkZW50aWZpZXIpKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmNvbW1p
dFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVu
dGlmaWVyLCB1aW50NjRfdCBwZW5kaW5nUmVxdWVzdENvdW50KQogewotICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYklEQlNlcnZlcjo6Q29tbWl0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZGVudGlmaWVy
LCBwZW5kaW5nUmVxdWVzdENvdW50KSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyOjpDb21taXRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbklkZW50aWZpZXIsIHBlbmRp
bmdSZXF1ZXN0Q291bnQpKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRp
ZEZpbmlzaEhhbmRsaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKHVpbnQ2NF90IGRhdGFiYXNl
Q29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNh
Y3Rpb25JZGVudGlmaWVyKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6RGlk
RmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24oZGF0YWJhc2VDb25uZWN0aW9u
SWRlbnRpZmllciwgdHJhbnNhY3Rpb25JZGVudGlmaWVyKSk7CisgICAgc2VuZChNZXNzYWdlczo6
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpEaWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2VUcmFu
c2FjdGlvbihkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCB0cmFuc2FjdGlvbklkZW50aWZp
ZXIpKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmNyZWF0ZU9iamVjdFN0
b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCT2JqZWN0U3Rv
cmVJbmZvJiBpbmZvKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6Q3JlYXRl
T2JqZWN0U3RvcmUocmVxdWVzdERhdGEsIGluZm8pKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrU3RvcmFnZU1hbmFnZXI6OkNyZWF0ZU9iamVjdFN0b3JlKHJlcXVlc3REYXRhLCBpbmZvKSk7
CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpkZWxldGVPYmplY3RTdG9yZShj
b25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IFN0cmluZyYgb2JqZWN0U3Rv
cmVOYW1lKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6RGVsZXRlT2JqZWN0
U3RvcmUocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlTmFtZSkpOworICAgIHNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6RGVsZXRlT2JqZWN0U3RvcmUocmVxdWVzdERhdGEsIG9i
amVjdFN0b3JlTmFtZSkpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6cmVu
YW1lT2JqZWN0U3RvcmUoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCB1aW50NjRf
dCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSkKIHsKLSAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OlJlbmFtZU9iamVjdFN0b3JlKHJlcXVlc3REYXRh
LCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIG5ld05hbWUpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrU3RvcmFnZU1hbmFnZXI6OlJlbmFtZU9iamVjdFN0b3JlKHJlcXVlc3REYXRhLCBvYmpl
Y3RTdG9yZUlkZW50aWZpZXIsIG5ld05hbWUpKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9u
VG9TZXJ2ZXI6OmNsZWFyT2JqZWN0U3RvcmUoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3RE
YXRhLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIpCiB7Ci0gICAgc2VuZChNZXNzYWdl
czo6V2ViSURCU2VydmVyOjpDbGVhck9iamVjdFN0b3JlKHJlcXVlc3REYXRhLCBvYmplY3RTdG9y
ZUlkZW50aWZpZXIpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6
OkNsZWFyT2JqZWN0U3RvcmUocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmllcikpOwog
fQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Y3JlYXRlSW5kZXgoY29uc3QgSURC
UmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJJbmRleEluZm8mIGluZm8pCiB7Ci0g
ICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyOjpDcmVhdGVJbmRleChyZXF1ZXN0RGF0YSwg
aW5mbykpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Q3JlYXRl
SW5kZXgocmVxdWVzdERhdGEsIGluZm8pKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9T
ZXJ2ZXI6OmRlbGV0ZUluZGV4KGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgdWlu
dDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGluZGV4TmFtZSkKIHsK
LSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OkRlbGV0ZUluZGV4KHJlcXVlc3REYXRh
LCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4TmFtZSkpOworICAgIHNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6RGVsZXRlSW5kZXgocmVxdWVzdERhdGEsIG9iamVjdFN0
b3JlSWRlbnRpZmllciwgaW5kZXhOYW1lKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRv
U2VydmVyOjpyZW5hbWVJbmRleChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIHVp
bnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgdWludDY0X3QgaW5kZXhJZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIG5ld05hbWUpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVy
OjpSZW5hbWVJbmRleChyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleElk
ZW50aWZpZXIsIG5ld05hbWUpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1h
bmFnZXI6OlJlbmFtZUluZGV4KHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGlu
ZGV4SWRlbnRpZmllciwgbmV3TmFtZSkpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1Nl
cnZlcjo6cHV0T3JBZGQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJ
REJLZXlEYXRhJiBrZXlEYXRhLCBjb25zdCBJREJWYWx1ZSYgdmFsdWUsIGNvbnN0IEluZGV4ZWRE
Qjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlIG1vZGUpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6
V2ViSURCU2VydmVyOjpQdXRPckFkZChyZXF1ZXN0RGF0YSwga2V5RGF0YSwgdmFsdWUsIG1vZGUp
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OlB1dE9yQWRkKHJl
cXVlc3REYXRhLCBrZXlEYXRhLCB2YWx1ZSwgbW9kZSkpOwogfQogCiB2b2lkIFdlYklEQkNvbm5l
Y3Rpb25Ub1NlcnZlcjo6Z2V0UmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0
YSwgY29uc3QgSURCR2V0UmVjb3JkRGF0YSYgZ2V0UmVjb3JkRGF0YSkKIHsKLSAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OkdldFJlY29yZChyZXF1ZXN0RGF0YSwgZ2V0UmVjb3JkRGF0
YSkpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6R2V0UmVjb3Jk
KHJlcXVlc3REYXRhLCBnZXRSZWNvcmREYXRhKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlv
blRvU2VydmVyOjpnZXRBbGxSZWNvcmRzKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0
YSwgY29uc3QgSURCR2V0QWxsUmVjb3Jkc0RhdGEmIGdldEFsbFJlY29yZHNEYXRhKQogewotICAg
IHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6R2V0QWxsUmVjb3JkcyhyZXF1ZXN0RGF0YSwg
Z2V0QWxsUmVjb3Jkc0RhdGEpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1h
bmFnZXI6OkdldEFsbFJlY29yZHMocmVxdWVzdERhdGEsIGdldEFsbFJlY29yZHNEYXRhKSk7CiB9
CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpnZXRDb3VudChjb25zdCBJREJSZXF1
ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQktleVJhbmdlRGF0YSYgcmFuZ2UpCiB7Ci0g
ICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyOjpHZXRDb3VudChyZXF1ZXN0RGF0YSwgcmFu
Z2UpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkdldENvdW50
KHJlcXVlc3REYXRhLCByYW5nZSkpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZl
cjo6ZGVsZXRlUmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3Qg
SURCS2V5UmFuZ2VEYXRhJiByYW5nZSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2
ZXI6OkRlbGV0ZVJlY29yZChyZXF1ZXN0RGF0YSwgcmFuZ2UpKTsKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkRlbGV0ZVJlY29yZChyZXF1ZXN0RGF0YSwgcmFuZ2Up
KTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6Om9wZW5DdXJzb3IoY29uc3Qg
SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJDdXJzb3JJbmZvJiBpbmZvKQog
ewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6T3BlbkN1cnNvcihyZXF1ZXN0RGF0
YSwgaW5mbykpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6T3Bl
bkN1cnNvcihyZXF1ZXN0RGF0YSwgaW5mbykpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25U
b1NlcnZlcjo6aXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEs
IGNvbnN0IElEQkl0ZXJhdGVDdXJzb3JEYXRhJiBkYXRhKQogewotICAgIHNlbmQoTWVzc2FnZXM6
OldlYklEQlNlcnZlcjo6SXRlcmF0ZUN1cnNvcihyZXF1ZXN0RGF0YSwgZGF0YSkpOworICAgIHNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6SXRlcmF0ZUN1cnNvcihyZXF1ZXN0
RGF0YSwgZGF0YSkpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZXN0YWJs
aXNoVHJhbnNhY3Rpb24odWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29u
c3QgSURCVHJhbnNhY3Rpb25JbmZvJiBpbmZvKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklE
QlNlcnZlcjo6RXN0YWJsaXNoVHJhbnNhY3Rpb24oZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmll
ciwgaW5mbykpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6RXN0
YWJsaXNoVHJhbnNhY3Rpb24oZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgaW5mbykpOwog
fQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGF0YWJhc2VDb25uZWN0aW9uUGVu
ZGluZ0Nsb3NlKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpCiB7Ci0gICAg
c2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyOjpEYXRhYmFzZUNvbm5lY3Rpb25QZW5kaW5nQ2xv
c2UoZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcikpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5l
dHdvcmtTdG9yYWdlTWFuYWdlcjo6RGF0YWJhc2VDb25uZWN0aW9uUGVuZGluZ0Nsb3NlKGRhdGFi
YXNlQ29ubmVjdGlvbklkZW50aWZpZXIpKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9T
ZXJ2ZXI6OmRhdGFiYXNlQ29ubmVjdGlvbkNsb3NlZCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rp
b25JZGVudGlmaWVyKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6RGF0YWJh
c2VDb25uZWN0aW9uQ2xvc2VkKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkRhdGFiYXNlQ29ubmVjdGlvbkNs
b3NlZChkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29u
bmVjdGlvblRvU2VydmVyOjphYm9ydE9wZW5BbmRVcGdyYWRlTmVlZGVkKHVpbnQ2NF90IGRhdGFi
YXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJh
bnNhY3Rpb25JZGVudGlmaWVyKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6
QWJvcnRPcGVuQW5kVXBncmFkZU5lZWRlZChkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCB0
cmFuc2FjdGlvbklkZW50aWZpZXIpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFn
ZU1hbmFnZXI6OkFib3J0T3BlbkFuZFVwZ3JhZGVOZWVkZWQoZGF0YWJhc2VDb25uZWN0aW9uSWRl
bnRpZmllciwgdHJhbnNhY3Rpb25JZGVudGlmaWVyKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVj
dGlvblRvU2VydmVyOjpkaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KHVpbnQ2NF90IGRhdGFiYXNl
Q29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVz
dElkZW50aWZpZXIsIGNvbnN0IEluZGV4ZWREQjo6Q29ubmVjdGlvbkNsb3NlZE9uQmVoYWxmT2ZT
ZXJ2ZXIgY29ubmVjdGlvbkNsb3NlZCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2
ZXI6OkRpZEZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQoZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmll
ciwgcmVxdWVzdElkZW50aWZpZXIsIGNvbm5lY3Rpb25DbG9zZWQpKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkRpZEZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQoZGF0
YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgcmVxdWVzdElkZW50aWZpZXIsIGNvbm5lY3Rpb25D
bG9zZWQpKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6Om9wZW5EQlJlcXVl
c3RDYW5jZWxsZWQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhKQogewotICAgIHNl
bmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6T3BlbkRCUmVxdWVzdENhbmNlbGxlZChyZXF1ZXN0
RGF0YSkpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6T3BlbkRC
UmVxdWVzdENhbmNlbGxlZChyZXF1ZXN0RGF0YSkpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rp
b25Ub1NlcnZlcjo6Z2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKGNvbnN0IElEQlJlc291
cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IENsaWVudE9yaWdpbiYgb3Jp
Z2luKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6R2V0QWxsRGF0YWJhc2VO
YW1lc0FuZFZlcnNpb25zKHJlcXVlc3RJZGVudGlmaWVyLCBvcmlnaW4pKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJz
aW9ucyhyZXF1ZXN0SWRlbnRpZmllciwgb3JpZ2luKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVj
dGlvblRvU2VydmVyOjpkaWREZWxldGVEYXRhYmFzZShjb25zdCBJREJSZXN1bHREYXRhJiByZXN1
bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvSW5Qcm9jZXNzSURC
U2VydmVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9JblByb2Nlc3NJREJTZXJ2
ZXIuY3BwCmluZGV4IGVhMmUyYTc4Zjg4ZmZkZDEwMWEzYTEzN2YwZDVhMTBhNTZlMTBmYjIuLjBj
YWRiNTA0MmJhMTYxMDc3Zjk0NDlhOTczZGNmOTgzMmQzNzAyYWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCkBAIC00Miw2ICs0
Miw4IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCitzdGF0aWMgY29uc3RleHByIHVp
bnQ2NF90IGRlZmF1bHRQZXJPcmlnaW5RdW90YSA9ICAxMDAwICogTUI7CisKIFJlZjxJblByb2Nl
c3NJREJTZXJ2ZXI+IEluUHJvY2Vzc0lEQlNlcnZlcjo6Y3JlYXRlKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCkKIHsKICAgICBBU1NFUlQoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpOwpAQCAtNzMs
NyArNzUsNyBAQCBJblByb2Nlc3NJREJTZXJ2ZXI6On5JblByb2Nlc3NJREJTZXJ2ZXIoKQogU3Rv
cmFnZVF1b3RhTWFuYWdlciogSW5Qcm9jZXNzSURCU2VydmVyOjpxdW90YU1hbmFnZXIoY29uc3Qg
Q2xpZW50T3JpZ2luJiBvcmlnaW4pCiB7CiAgICAgcmV0dXJuIG1fcXVvdGFNYW5hZ2Vycy5lbnN1
cmUob3JpZ2luLCBbXSB7Ci0gICAgICAgIHJldHVybiBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpjcmVh
dGUoU3RvcmFnZVF1b3RhTWFuYWdlcjo6ZGVmYXVsdFF1b3RhKCksIFtdIHsKKyAgICAgICAgcmV0
dXJuIFN0b3JhZ2VRdW90YU1hbmFnZXI6OmNyZWF0ZShkZWZhdWx0UGVyT3JpZ2luUXVvdGEsIFtd
IHsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9LCBbXSh1aW50NjRfdCBxdW90YSwg
dWludDY0X3QgY3VycmVudFNwYWNlLCB1aW50NjRfdCBzcGFjZUluY3JlYXNlLCBhdXRvIGNhbGxi
YWNrKSB7CiAgICAgICAgICAgICBjYWxsYmFjayhxdW90YSArIGN1cnJlbnRTcGFjZSArIHNwYWNl
SW5jcmVhc2UpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IDU2ZDJlODkxZWIxMjg2OTU1NWI5ZGM5MzZjYjA5NTUwZmZmODA5NmQuLjEyYjFjMWZk
ZjMyZmQzOTA0YjY1NzJjYjVkZjhkZGY3MDQ3MzExZGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMi0wMi0wNyAg
U2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBNYW5hZ2UgSW5kZXhl
ZERCIHN0b3JhZ2UgYnkgb3JpZ2luCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzQ5MjUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg3NTU1MDE0Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IENocmlzIER1bWV6LgorCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJGaWxlTmFtZS5tbToKKyAgICAgICAgKHJ1
blRlc3QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhl
ZERCUGVyc2lzdGVuY2UubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9JbmRleGVkREJTdXNwZW5kSW1taW5lbnRseS5tbToKKyAgICAgICAgKFRFU1QpOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU3RvcmVCbG9iVGhlbkRlbGV0
ZS5tbToKKyAgICAgICAgKFRFU1QpOgorCiAyMDIyLTAyLTA3ICBSb3kgUmVhcG9yICA8cnJlYXBv
ckBhcHBsZS5jb20+CiAKICAgICAgICAgW3dlYmtpdGNvcmVweV0gQXV0b2luc3RhbGxlciBtYXkg
ZmFpbCB0byBpbnN0YWxsIHdoZWVscwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJGaWxlTmFtZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCRmlsZU5hbWUubW0KaW5kZXggYTZiMDEyOWJj
MTA1OWM0ZjljMTE4ZDFmZDdlZmQyMTIzZWFjMmM3YS4uNDEwMjIyNGU0NTI3NGQzNjM3OWU0YmIw
MDJhMGZlZTg5ODMyZjViYyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9JbmRleGVkREJGaWxlTmFtZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQkZpbGVOYW1lLm1tCkBAIC03MSwyMCArNzEsMjMg
QEAgc3RhdGljIHZvaWQgcnVuVGVzdCgpCiAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBzdHJpbmcy
ID0gKE5TU3RyaW5nICopW2xhc3RTY3JpcHRNZXNzYWdlIGJvZHldOwogICAgIEVYUEVDVF9XS19T
VFJFUShAIlN1Y2Nlc3MiLCBzdHJpbmcyLmdldCgpKTsKIAotICAgIC8vIEZvciBkYXRhYmFzZSB0
aGF0IGlzIG5vdCBvcGVuZWQgYWZ0ZXIgdXBncmFkZSwgaXRzIGZpbGUgc2hvdWxkIGJlIGluIHYw
LgorICAgIC8vIEFsbCBkYXRhYmFzZXMgb2YgYW4gb3JpZ2luIGFyZSBtaWdyYXRlZCB0byBuZXcg
dmVyc2lvbiBkaXJlY3Rvcnkgd2hlbiB0aGUgb3JpZ2luIGlzIGFjY2Vzc2VkLgogICAgIGF1dG8g
ZGVmYXVsdEZpbGVNYW5hZ2VyID0gW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdOwogICAg
IE5TU3RyaW5nICpleGlzdGluZ0RhdGFiYXNlTmFtZSA9IEAiSW5kZXhlZERCVGVzdCI7CiAgICAg
TlNTdHJpbmcgKmNyZWF0ZWREYXRhYmFzZU5hbWUgPSBAIkluZGV4ZWREQk90aGVyIjsKICAgICBO
U1N0cmluZyAqdW51c2VkRGF0YWJhc2VOYW1lID0gQCJJbmRleGVkREJVbnVzZWQiOwogICAgIE5T
U3RyaW5nICpleGlzdGluZ0RhdGJhc2VIYXNoID0gV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6
Y29tcHV0ZUhhc2hGb3JGaWxlTmFtZShleGlzdGluZ0RhdGFiYXNlTmFtZSk7CiAgICAgTlNTdHJp
bmcgKmNyZWF0ZWREYXRhYmFzZUhhc2ggPSBXZWJDb3JlOjpTUUxpdGVGaWxlU3lzdGVtOjpjb21w
dXRlSGFzaEZvckZpbGVOYW1lKGNyZWF0ZWREYXRhYmFzZU5hbWUpOworICAgIE5TU3RyaW5nICp1
bnVzZWREYXRhYmFzZUhhc2ggPSBXZWJDb3JlOjpTUUxpdGVGaWxlU3lzdGVtOjpjb21wdXRlSGFz
aEZvckZpbGVOYW1lKGNyZWF0ZWREYXRhYmFzZU5hbWUpOwogICAgIE5TVVJMICppZGJSb290VVJM
ID0gW1tXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gX2luZGV4ZWREQkRhdGFi
YXNlRGlyZWN0b3J5XTsKICAgICBOU1VSTCAqb2xkVmVyc2lvbkRpcmVjdG9yeVVSTCA9IFtpZGJS
b290VVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAInYwIl07CiAgICAgTlNVUkwgKm5l
d1ZlcnNpb25EaXJlY3RvcnlVUkwgPSBbaWRiUm9vdFVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21w
b25lbnQ6QCJ2MSJdOwogICAgIE5TVVJMICpvbGRWZXJzaW9uT3JpZ2luRGlyZWN0b3J5VVJMID0g
W29sZFZlcnNpb25EaXJlY3RvcnlVUkwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OiBAImZp
bGVfXzAiXTsKICAgICBOU1VSTCAqbmV3VmVyc2lvbk9yaWdpbkRpcmVjdG9yeVVSTCA9IFtuZXdW
ZXJzaW9uRGlyZWN0b3J5VVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDogQCJmaWxlX18w
Il07CiAgICAgTlNVUkwgKm9sZFZlcnNpb25VbnVzZWREYXRhYmFzZURpcmVjdG9yeVVSTCA9IFtv
bGRWZXJzaW9uT3JpZ2luRGlyZWN0b3J5VVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDp1
bnVzZWREYXRhYmFzZU5hbWVdOwotICAgIEVYUEVDVF9UUlVFKFtbTlNGaWxlTWFuYWdlciBkZWZh
dWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpvbGRWZXJzaW9uVW51c2VkRGF0YWJhc2VEaXJl
Y3RvcnlVUkwucGF0aF0pOworICAgIE5TVVJMICpuZXdWZXJzaW9uVW51c2VkRGF0YWJhc2VEaXJl
Y3RvcnlVUkwgPSBbbmV3VmVyc2lvbk9yaWdpbkRpcmVjdG9yeVVSTCBVUkxCeUFwcGVuZGluZ1Bh
dGhDb21wb25lbnQ6dW51c2VkRGF0YWJhc2VIYXNoXTsKKyAgICBFWFBFQ1RfRkFMU0UoW1tOU0Zp
bGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOm9sZFZlcnNpb25VbnVz
ZWREYXRhYmFzZURpcmVjdG9yeVVSTC5wYXRoXSk7CisgICAgRVhQRUNUX1RSVUUoW1tOU0ZpbGVN
YW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOm5ld1ZlcnNpb25VbnVzZWRE
YXRhYmFzZURpcmVjdG9yeVVSTC5wYXRoXSk7CiAgICAgCiAgICAgLy8gRm9yIGRhdGFiYXNlIHRo
YXQgaXMgb3BlbmVkIGFmdGVyIHVwZ3JhZGUsIGl0cyBmaWxlIHNob3VsZCBvbmx5IGJlIGluIHYx
LgogICAgIE5TVVJMICpvbGRWZXJzaW9uRXhpc3RpbmdEYXRhYmFzZURpcmVjdG9yeVVSTCA9IFtv
bGRWZXJzaW9uT3JpZ2luRGlyZWN0b3J5VVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDog
ZXhpc3RpbmdEYXRhYmFzZU5hbWVdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJQZXJzaXN0ZW5jZS5tbSBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCUGVyc2lzdGVuY2UubW0KaW5kZXggMjcx
OGM0YWIzNjlhODE4MmRhMGUxMThjNDUxNjY2YWU5ZDFlMmM3NC4uNGYwYThlYzk0NDU0OGNhNmM3
ODcwMTVjNmI2ZDk1MDg1ODgzODhiMyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJQZXJzaXN0ZW5jZS5tbQorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlBlcnNpc3RlbmNlLm1tCkBAIC0z
MDUsMTAgKzMwNSwxNCBAQCBURVNUKEluZGV4ZWREQiwgSW5kZXhlZERCVGhpcmRQYXJ0eURhdGFS
ZW1vdmFsKQogICAgIEVYUEVDVF9XS19TVFJFUSggQCJkYXRhYmFzZSBpcyBjcmVhdGVkIC0gcHV0
IGl0ZW0gc3VjY2VzcyIsIChOU1N0cmluZyAqKVtsYXN0U2NyaXB0TWVzc2FnZSBib2R5XSk7CiAK
ICAgICByZWFkeVRvQ29udGludWUgPSBmYWxzZTsKLSAgICBbW1dLV2Vic2l0ZURhdGFTdG9yZSBk
ZWZhdWx0RGF0YVN0b3JlXSBmZXRjaERhdGFSZWNvcmRzT2ZUeXBlczp3ZWJzaXRlRGF0YVR5cGVz
LmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxXS1dlYnNpdGVEYXRhUmVjb3JkICo+
ICpkYXRhUmVjb3JkcykgewotICAgICAgICBFWFBFQ1RfRVEoMXUsIGRhdGFSZWNvcmRzLmNvdW50
KTsKLSAgICAgICAgRVhQRUNUX1dLX1NUUkVRKCJpZnJhbWUiLCBbW2RhdGFSZWNvcmRzIGZpcnN0
T2JqZWN0XSBkaXNwbGF5TmFtZV0pOwotICAgICAgICBbW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZh
dWx0RGF0YVN0b3JlXSByZW1vdmVEYXRhT2ZUeXBlczp3ZWJzaXRlRGF0YVR5cGVzLmdldCgpIGZv
ckRhdGFSZWNvcmRzOmRhdGFSZWNvcmRzIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7CisgICAgW1tX
S1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gZmV0Y2hEYXRhUmVjb3Jkc09mVHlw
ZXM6d2Vic2l0ZURhdGFUeXBlcy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8V0tX
ZWJzaXRlRGF0YVJlY29yZCAqPiAqcmVjb3JkcykgeworICAgICAgICBFWFBFQ1RfRVEoMnUsIHJl
Y29yZHMuY291bnQpOworICAgICAgICBOU1NvcnREZXNjcmlwdG9yICpyZWNvcmREZXNjcmlwdG9y
ID0gW05TU29ydERlc2NyaXB0b3Igc29ydERlc2NyaXB0b3JXaXRoS2V5OkAiZGlzcGxheU5hbWUi
IGFzY2VuZGluZzpZRVNdOworICAgICAgICBOU0FycmF5ICpzb3J0RGVzY3JpcHRvcnMgPSBAW3Jl
Y29yZERlc2NyaXB0b3JdOworICAgICAgICBOU0FycmF5ICpzb3J0ZWRSZWNvcmRzID0gW3JlY29y
ZHMgc29ydGVkQXJyYXlVc2luZ0Rlc2NyaXB0b3JzOnNvcnREZXNjcmlwdG9yc107CisgICAgICAg
IEVYUEVDVF9XS19TVFJFUSgiaWZyYW1lIiwgW1tzb3J0ZWRSZWNvcmRzIG9iamVjdEF0SW5kZXg6
MF0gZGlzcGxheU5hbWVdKTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKCJ3ZWJraXQub3JnIiwg
W1tzb3J0ZWRSZWNvcmRzIG9iamVjdEF0SW5kZXg6MV0gZGlzcGxheU5hbWVdKTsKKyAgICAgICAg
W1tXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gcmVtb3ZlRGF0YU9mVHlwZXM6
d2Vic2l0ZURhdGFUeXBlcy5nZXQoKSBmb3JEYXRhUmVjb3JkczpyZWNvcmRzIGNvbXBsZXRpb25I
YW5kbGVyOl4oKSB7CiAgICAgICAgICAgICByZWFkeVRvQ29udGludWUgPSB0cnVlOwogICAgICAg
ICB9XTsKICAgICB9XTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvSW5kZXhlZERCU3VzcGVuZEltbWluZW50bHkubW0gYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlN1c3BlbmRJbW1pbmVudGx5Lm1tCmluZGV4
IGRjNjM0M2UzZWRkZmU0OGRiZmVlZTRmNzk5OTJmZmNiNWY2MGUxNmIuLmJmOTBmNTdjZTA5NzVl
OTRlNjM3MDQ3YTVkMGU5ZGZkMThmYmQ2MjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCU3VzcGVuZEltbWluZW50bHkubW0KKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJTdXNwZW5kSW1t
aW5lbnRseS5tbQpAQCAtNzMsNiArNzMsMTIgQEAgc3RhdGljIHZvaWQga2VlcE5ldHdvcmtQcm9j
ZXNzQWN0aXZlKCkKIAogVEVTVChJbmRleGVkREIsIEluZGV4ZWREQlN1c3BlbmRJbW1pbmVudGx5
KQogeworICAgIHJlYWR5VG9Db250aW51ZSA9IGZhbHNlOworICAgIFtbV0tXZWJzaXRlRGF0YVN0
b3JlIGRlZmF1bHREYXRhU3RvcmVdIHJlbW92ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVEYXRhU3Rv
cmUgYWxsV2Vic2l0ZURhdGFUeXBlc10gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0
XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgeworICAgICAgICByZWFkeVRvQ29udGludWUgPSB0cnVl
OworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVhZHlUb0NvbnRpbnVl
KTsKKwogICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0TlMoW1tJbmRleGVkREJTdXNwZW5kSW1taW5l
bnRseU1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7CiAgICAgYXV0byBjb25maWd1cmF0aW9u
ID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBb
W2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFu
ZGxlcjpoYW5kbGVyLmdldCgpIG5hbWU6QCJ0ZXN0SGFuZGxlciJdOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TdG9yZUJsb2JUaGVuRGVsZXRlLm1t
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TdG9yZUJsb2JUaGVuRGVs
ZXRlLm1tCmluZGV4IGFhYmZmZjg3YmM2NGIzOTUyYjI0MTQ1MjE1ZWUwMzgyODZiN2M4OTEuLjhl
ODVhNDBhNWU4M2JhMDM0MzIxZTdlNzk2OWQ4MzU1ZTMyYzI0NjUgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU3RvcmVCbG9iVGhlbkRlbGV0ZS5tbQor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1N0b3JlQmxvYlRoZW5E
ZWxldGUubW0KQEAgLTg3LDcgKzg3LDcgQEAgVEVTVChJbmRleGVkREIsIFN0b3JlQmxvYlRoZW5S
ZW1vdmVEYXRhKQogICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY29weUl0ZW1B
dFBhdGg6ZGF0YWJhc2VGaWxlUGF0aCB0b1BhdGg6ZmFrZVNobVBhdGggZXJyb3I6bmlsXTsKICAg
ICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNvcHlJdGVtQXRQYXRoOmRhdGFiYXNl
RmlsZVBhdGggdG9QYXRoOmZha2VXYWxQYXRoIGVycm9yOm5pbF07CiAKLSAgICAvLyBNYWtlIHNv
bWUgb3RoZXIgLmJsb2IgZmlsZXMgaW4gdGhlIGRhdGFiYXNlIGRpcmVjdG9yeSB0byBsYXRlciB2
YWxpZGF0ZSB0aGF0IG9ubHkgYXBwcm9wcmlhdGUgZmlsZXMgYXJlIGRlbGV0ZWQuCisgICAgLy8g
TWFrZSBzb21lIG90aGVyIC5ibG9iIGZpbGVzIGluIHRoZSBkYXRhYmFzZSBkaXJlY3RvcnkgdG8g
bGF0ZXIgdmFsaWRhdGUgYWxsIGJsb2IgZmlsZXMgaW4gdGhlIGRpcmVjdG9yeSBhcmUgZGVsZXRl
ZC4KICAgICBOU1N0cmluZyAqb3RoZXJCbG9iMSA9IFtkYXRhYmFzZURpcmVjdG9yeSBzdHJpbmdC
eUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCI3MTgyLmJsb2IiXTsKICAgICBOU1N0cmluZyAqb3Ro
ZXJCbG9iMiA9IFtkYXRhYmFzZURpcmVjdG9yeSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25l
bnQ6QCIxYS5ibG9iIl07CiAgICAgTlNTdHJpbmcgKm90aGVyQmxvYjMgPSBbZGF0YWJhc2VEaXJl
Y3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiYTEuYmxvYiJdOwpAQCAtMTAy
LDEzICsxMDIsMTIgQEAgVEVTVChJbmRleGVkREIsIFN0b3JlQmxvYlRoZW5SZW1vdmVEYXRhKQog
ICAgICAgICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxl
RXhpc3RzQXRQYXRoOmJsb2JGaWxlUGF0aF0pOwogICAgICAgICBFWFBFQ1RfRkFMU0UoW1tOU0Zp
bGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmRhdGFiYXNlRmlsZVBh
dGhdKTsKIAotICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIGZha2UgYmxvYiBmaWxlIHdpdGggYSB2
YWxpZCBibG9iIGZpbGUgbmFtZSBpcyBnb25lLgorICAgICAgICAvLyBNYWtlIHN1cmUgYWxsIGZh
a2UgYmxvYiBmaWxlIGFyZSBnb25lLgogICAgICAgICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVNYW5h
Z2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOm90aGVyQmxvYjFdKTsKIAotICAg
ICAgICAvLyBNYWtlIHN1cmUgdGhlIGZha2UgYmxvYiBmaWxlcyB3aXRoIGludmFsaWQgYmxvYiBm
aWxlIG5hbWVzIGFyZSBzdGlsbCB0aGVyZS4KLSAgICAgICAgRVhQRUNUX1RSVUUoW1tOU0ZpbGVN
YW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOm90aGVyQmxvYjJdKTsKLSAg
ICAgICAgRVhQRUNUX1RSVUUoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhp
c3RzQXRQYXRoOm90aGVyQmxvYjNdKTsKLSAgICAgICAgRVhQRUNUX1RSVUUoW1tOU0ZpbGVNYW5h
Z2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOm90aGVyQmxvYjRdKTsKKyAgICAg
ICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0
c0F0UGF0aDpvdGhlckJsb2IyXSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShbW05TRmlsZU1hbmFn
ZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6b3RoZXJCbG9iM10pOworICAgICAg
ICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3Rz
QXRQYXRoOm90aGVyQmxvYjRdKTsKIAogICAgICAgICAvLyBNYWtlIHN1cmUgZXZlcnl0aGluZyBy
ZWxhdGVkIHRvIHRoZSBmYWtlIGRhdGFiYXNlIGlzIGdvbmUuCiAgICAgICAgIEVYUEVDVF9GQUxT
RShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6ZmFrZVNo
bVBhdGhdKTsK
</data>
<flag name="commit-queue"
          id="477879"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451216</attachid>
            <date>2022-02-08 00:43:34 -0800</date>
            <delta_ts>2022-02-08 09:04:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234925-20220208004332.patch</filename>
            <type>text/plain</type>
            <size>284830</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5MzU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmM1MTI4YjI1MzMwYzVk
YzdhYTA3NDE5YmU4MWYwMTA5MzQ4ZjYxZi4uNjBhY2ZmMWRlZDRjNDYxOWFlNDUxNDlhYWUxOTQz
ODVlZmZlMjI1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk1IEBACisyMDIyLTAyLTA3ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIE1hbmFnZSBJbmRleGVkREIg
c3RvcmFnZSBieSBvcmlnaW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzNDkyNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODc1NTUwMTQ+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAgQm90aCBXZWJLaXQgYW5k
IFdlYktpdExlZ2FjeSB1c2VkIElEQlNlcnZlciB0byBtYW5hZ2UgVW5pcXVlSURCRGF0YWJhc2Vz
LCBhbmQgVW5pcXVlSURCRGF0YWJhc2UgcG9pbnRlZCB0byAKKyAgICAgICAgSURCU2VydmVyLiBO
b3cgdGhhdCBXZWJLaXQgdXNlcyBXZWJLaXQ6OklEQlN0b3JhZ2VNYW5hZ2VyIHRvIG1hbmFnZSBV
bmlxdWVJREJEYXRhYmFzZXMuIFdlIHVudGllIHRoZSAKKyAgICAgICAga25vdCBiZXR3ZWVuIElE
QlNlcnZlciBhbmQgVW5pcXVlSURCRGF0YWJhc2UgYnkgYWRkaW5nIGEgbmV3IGFic3RyYWN0IGNs
YXNzIFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlciBhbmQgbWFrZQorICAgICAgICBVbmlxdWVJREJE
YXRhYmFzZSBwb2ludCB0byBVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuCisKKyAgICAgICAgQWxz
bywgYXMgcXVvdGEgY2hlY2sgaXMgbm8gbG9uZ2VyIGFzeW5jIGFjY29yZGluZyB0byBjaGFuZ2Vz
IGluIFdlYktpdCwgd2UgbmVlZCB0byB1cGRhdGUgb3BlcmF0aW9ucyBpbgorICAgICAgICBVbmlx
dWVJREJEYXRhYmFzZSB0byBhZG9wdCB0aGUgY2hhbmdlLgorCisgICAgICAgIENvdmVyZWQgYnkg
ZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnQuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6SURCU2VydmVyOjpyZWdpc3RlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OnVucmVnaXN0ZXJDb25uZWN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpjcmVhdGVCYWNraW5nU3RvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OnVwZ3JhZGVkRGF0YWJhc2VE
aXJlY3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OnJlZ2lz
dGVyRGF0YWJhc2VDb25uZWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklEQlNl
cnZlcjo6SURCU2VydmVyOjp1bnJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0aW9uKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpjbG9zZUFuZFRha2VVbmlx
dWVJREJEYXRhYmFzZSk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL0lEQlNlcnZlci5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1v
cnlJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1v
cnlJREJCYWNraW5nU3RvcmU6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUp
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3Rv
cmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3Rv
cmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlPYmplY3RTdG9yZTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5T2JqZWN0U3RvcmU6
Ok1lbW9yeU9iamVjdFN0b3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
TWVtb3J5T2JqZWN0U3RvcmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
U1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
U1FMaXRlSURCQmFja2luZ1N0b3JlOjpTUUxpdGVJREJCYWNraW5nU3RvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmVuY29kZURhdGFiYXNl
TmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6ZGVjb2RlRGF0YWJhc2VOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FM
aXRlSURCQmFja2luZ1N0b3JlOjpnZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbyk6CisgICAgICAg
IChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlQmFja2lu
Z1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0
b3JlOjpmaWxlbmFtZUZvckRhdGFiYXNlTmFtZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZnVsbERhdGFiYXNlRGly
ZWN0b3J5V2l0aFVwZ3JhZGUpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6VW5pcXVlSURCRGF0YWJhc2UpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6bWFuYWdlcik6CisgICAgICAg
IChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtQ3VycmVudE9w
ZW5PcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRh
YmFzZTo6cGVyZm9ybUN1cnJlbnRPcGVuT3BlcmF0aW9uQWZ0ZXJTcGFjZUNoZWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZUJhY2tpbmdT
dG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpj
cmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlE
QkRhdGFiYXNlOjpkZWxldGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2
ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpyZW5hbWVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpjbGVhck9iamVjdFN0b3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZUluZGV4
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0
ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6
OnJlbmFtZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0
YWJhc2U6OnB1dE9yQWRkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURC
RGF0YWJhc2U6OnB1dE9yQWRkQWZ0ZXJTcGFjZUNoZWNrKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmdldFJlY29yZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRBbGxSZWNvcmRzKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmdldENvdW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZVJlY29yZCk6
CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuQ3Vy
c29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6Oml0
ZXJhdGVDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRh
YmFzZTo6Y29tbWl0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpV
bmlxdWVJREJEYXRhYmFzZTo6YWJvcnRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJ
REJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpoYXNEYXRhSW5NZW1vcnkgY29uc3QpOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6c2VydmVyKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJh
c2VDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURC
RGF0YWJhc2VDb25uZWN0aW9uOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb246On5Vbmlx
dWVJREJEYXRhYmFzZUNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpV
bmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb246Om1hbmFnZXIpOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uaDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uOjpzZXJ2ZXIp
OiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJE
YXRhYmFzZU1hbmFnZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVu
aXF1ZUlEQkRhdGFiYXNlTWFuYWdlcjo6flVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlcik6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZVRy
YW5zYWN0aW9uOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6flVuaXF1ZUlEQkRh
dGFiYXNlVHJhbnNhY3Rpb24pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9V
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvc2hhcmVkL0lEQkVycm9yLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJFcnJvcjo6b3BlcmF0
b3IgYm9vbCBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJl
cXVlc3REYXRhLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc291
cmNlSWRlbnRpZmllci5oOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVy
OjpvcGVyYXRvciE9IGNvbnN0KToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisKIDIwMjItMDItMDcgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjg5MjI3LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCBlNWJjZDU2YzY5YTRmZmM2NTlhNTI5ZjQ0MzAzNjJmNTI1OWE3MjFhLi5lZWJmOGVlODU4
ODc3Mzk5NDk0MDNjNzBjYjM1NDYxZmQwMGIzN2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2NSBA
QAorMjAyMi0wMi0wNyAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAg
ICBNYW5hZ2UgSW5kZXhlZERCIHN0b3JhZ2UgYnkgb3JpZ2luCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ5MjUKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzg3NTU1MDE0PgorCisgICAgICAgIFJldmlld2VkIGJ5IENocmlzIER1bWV6LgorCisgICAg
ICAgIEluIG5ldHdvcmsgcHJvY2VzcywgSW5kZXhlZERCIGRhdGEgaXMgbWFuYWdlZCBieSBXZWJL
aXQ6OldlYklEQlNlcnZlci4gRWFjaCBzZXNzaW9uIG93bnMgYSBXZWJJREJTZXJ2ZXIgCisgICAg
ICAgIChJREJTZXJ2ZXIpIGFuZCBlYWNoIElEQlNlcnZlciBvd25zIG9uZSBvciBtb3JlIFVuaXF1
ZUlEQkRhdGFiYXNlcyAocmVzcHJlbnRpbmcgb25lIGFjdHVhbCBkYXRhYmFzZSB0aGF0CisgICAg
ICAgIElEQkRhdGFiYXNlIGNvbm5lY3RzIHRvLCBjYW4gYmUgaWRlbnRpZmllZCBieSB7c2Vzc2lv
biwgb3JpZ2luLCBuYW1lfSkuIE5vdyB0aGF0IHdlIGhhdmUgTmV0d29ya1N0b3JhZ2VNYW5hZ2Vy
LCAKKyAgICAgICAgd2hpY2ggbWFuYWdlcyBzZXNzaW9uIHN0b3JhZ2UgYnkgb3JpZ2luLCB3ZSBj
YW4gbWVyZ2UgV2ViSURCU2VydmVyIHdpdGggTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLCBzaW5jZSBJ
bmRleGVkREIgCisgICAgICAgIHN0b3JhZ2UgaXMgbm90IHNoYXJlZCBhY3Jvc3Mgb3JpZ2lucy4K
KworICAgICAgICBUaGUgb2xkIHN0cnVjdHVyZSBpczoKKyAgICAgICAgTmV0d29ya1Nlc3Npb24g
LSBXZWJJREJTZXJ2ZXIgLSBJREJTZXJ2ZXIgLSBVbmlxdWVJREJEYXRhYmFzZXMKKyAgICAgICAg
VGhlIG5ldyBzdHJ1Y3R1cmUgaXM6CisgICAgICAgIE5ldHdvcmtTZXNzaW9uIC0gTmV0d29ya1N0
b3JhZ2VNYW5hZ2VyIC0gT3JpZ2luU3RvcmFnZU1hbmFnZXIgLSBJREJTdG9yYWdlTWFuYWdlciAt
IFVuaXF1ZUlEQkRhdGFiYXNlCisKKyAgICAgICAgVG8gY29tcGxldGUgdGhpcyB0cmFuc2l0aW9u
LCB3ZSBuZWVkIHRvIG1ha2UgYSBmZXcgY2hhbmdlczoKKyAgICAgICAgMS4gV2ViIHByb2Nlc3Mg
bm93IHNlbmRzIEluZGV4ZWREQiByZWxhdGVkIG1lc3NhZ2VzIHRvIE5ldHdvcmtTdG9yYWdlTWFu
YWdlciBpbnN0ZWFkIG9mIFdlYklEQlNlcnZlci4gCisgICAgICAgIDIuIFNvbWUgbWVzc2FnZXMg
YXJlIHNlbnQgdG8gb3BlcmF0ZSBvbiBVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24gb3IgVW5p
cXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiwgYW5kIHRoZXkgCisgICAgICAgIHVzZSBpZGVudGlm
aWVycyB0byBzcGVjaWZ5IHRoZSB0YXJnZXQuIFRoZXJlZm9yZSwgTmV0d29ya1N0b3JhZ2VNYW5h
Z2VycyBuZWVkcyB0byBrbm93IHRoZSBtYXBwaW5nIGJldHdlZW4gCisgICAgICAgIGlkZW50aWZp
ZXJzIGFuZCB0YXJnZXQgb2JqZWN0cy4gQSBuZXcgY2xhcyBJREJTdG9yYWdlUmVnaXN0cnkgaXMg
YWRkZWQgcmVjb3JkIHRoaXMgbWFwcGluZy4gRWFjaCAKKyAgICAgICAgTmV0d29ya1N0b3JhZ2VN
YW5hZ2VyIG93bnMgYSBJREJTdG9yYWdlUmVnaXN0cnkgYW5kIGl0IHBhc3NlcyBJREJTdG9yYWdl
UmVnaXN0cnkgdG8gSURCU3RvcmFnZU1hbmFnZXIsCisgICAgICAgIElEQlN0b3JhZ2VNYW5hZ2Vy
IHdpbGwgcmVnaXN0ZXIgb2JqZWN0cyB0byBJREJTdG9yYWdlUmVnaXN0cnkgYW5kIE5ldHdvcmtT
dG9yYWdlTWFuYWdlciBjYW4gZG8gc2VhcmNoIHZpYSAKKyAgICAgICAgSURCU3RvcmFnZVJlZ2lz
dHJ5LgorICAgICAgICAzLiBRdW90YSBjaGVjayBmb3IgSW5kZXhlZERCIG9wZXJhdGlvbnMgYmVj
b21lcyBhc3luYyBieSBhZGRpbmcgbmV3IFF1b3RhTWFuYWdlciBjbGFzcywgd2hpY2ggaXMgc2lt
aWxhciB0byAKKyAgICAgICAgV2ViQ29yZTo6U3RvcmFnZVF1b3RhTWFuYWdlciBidXQgcHJvdmlk
ZXMgYXN5bmMgaW50ZXJmYWNlcy4gCisgICAgICAgIFdlIHVzZWQgdG8gYmxvY2sgdGhlIElEQlNl
cnZlciB0aHJlYWQgd2hlbiBpdCBpcyB3YWl0aW5nIGZvciBxdW90YSBjaGVjayByZXN1bHQgZnJv
bSBVSSBwcm9jZXNzLCB0aGlzIGlzIGZpbmUgCisgICAgICAgIGJlY2F1c2UgSURCU2VydmVyIHJ1
bnMgb24gaXRzIG93biB0aHJlYWQuIE5vdyB0aGF0IElEQlN0b3JhZ2VNYW5hZ2VyIHJ1bnMgb24g
dGhlIHNhbWUgdGhyZWFkIGFzIHRoZSBvdGhlciAKKyAgICAgICAgc3RvcmFnZSB0eXBlcywgd2Ug
Y2Fubm90IGJsb2NrIHRoZSB0aHJlYWQgb24gcXVvdGEgY2hlY2suCisgICAgICAgIDQuIFJlbmFt
ZSBXZWJJREJDb25uZWN0aW9uVG9DbGllbnQgdG8gSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVu
dCB0byByZWZsZWN0IHRoZSBjaGFuZ2Ugb24gdGhlIHN0cnVjdHVyZS4gQWxzbywKKyAgICAgICAg
SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudCBkb2VzIG5vdCBrZWVwIHJlZmVyZW5jZSB0byB0
aGUgSVBDOjpDb25uZWN0aW9uIG5vdywgaXQgb25seSByZWNvcmRzIAorICAgICAgICBJUEM6OkNv
bm5lY3Rpb246OlVuaXF1ZUlELgorICAgICAgICA1LiBJbmRleGVkREIgZGF0YSBtYXkgYmUgcHV0
IGluIGRpZmZlcmVudCB2ZXJzaW9uIGRpcmN0b3JpZXMuIFdlIHVzZWQgdG8gbWlncmF0ZSBkYXRh
YmFzZSB0byBuZXcgdmVyc2lvbiAKKyAgICAgICAgZGlyZXRvcnkgd2hlbiB0aGUgZGF0YWJhc2Ug
aXMgYWNjZXNzZWQuIEFzIElEQlN0b3JhZ2VNYW5hZ2VyIG5vdyBtYW5hZ2VzIEluZGV4ZWREQiBk
YXRhIG9mIG9uZSBvcmlnaW4sIGl0J3MgCisgICAgICAgIHNpbXBsZXIgaWYgaXQgb25seSBrZWVw
cyB0cmFjayBvZiBvbmUgZGlyZWN0b3J5LiBUaGVyZWZvcmUsIHdlIG5vdyBtaWdyYXRlIGFsbCBk
YXRhYmFzZXMgb2Ygb25lIG9yaWdpbgorICAgICAgICB3aGVuIHRoZSBvcmlnaW4gaXMgYWNjZXNz
ZWQgKHNlZSBJREJTdG9yYWdlTWFuYWdlcjo6aWRiU3RvcmFnZU9yaWdpbkRpcmVjdG9yeSkuCisK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1cGRh
dGVRdW90YUJhc2VkT25TcGFjZVVzYWdlRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlc0Zv
ckluZGV4ZWREQik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGlkQ2xvc2UpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6YWRkV2Vic2l0ZURhdGFTdG9y
ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpmZXRjaFdlYnNpdGVEYXRhKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lu
cyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVBbmRSZXN0cmljdFdl
YnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OnJlZ2lzdHJhYmxlRG9tYWluc1dpdGhXZWJzaXRlRGF0YSk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5kKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3M6OnJlc3VtZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzOjpyZXNldFF1b3RhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRpZElu
Y3JlYXNlUXVvdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVuYW1lT3Jp
Z2luSW5XZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzdG9y
YWdlUXVvdGFNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3NDbG9zZWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
czo6c3VzcGVuZElEQlNlcnZlcnMpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzaG91
bGRTdXNwZW5kSURCU2VydmVycyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Nlc3Npb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6
aW52YWxpZGF0ZUFuZENhbmNlbCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjph
ZGRTdG9yYWdlTWFuYWdlclNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lv
bjo6ZW5zdXJlV2ViSURCU2VydmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Nlc3Npb246OmNsb3NlSURCU2VydmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Nlc3Npb246OmFkZEluZGV4ZWREYXRhYmFzZVNlc3Npb24pOiBEZWxldGVkLgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmg6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtTZXNzaW9uOjp3ZWJJREJTZXJ2ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrU2Vzc2lvbjo6aGFzSURCRGF0YWJhc2VQYXRoIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6c3RvcmFnZVBhdGgpOgorICAgICAgICAo
V2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6ZGlza1VzYWdlKToKKyAgICAgICAgKFdlYktp
dDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OnJlcXVlc3RTcGFjZSk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6Q2FjaGVTdG9yYWdlOjpDYWNoZXM6OnJlcXVlc3RTcGFjZSk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNzSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6c2V0SXNIb2xkaW5nTG9ja2VkRmlsZXMpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpJREJTdG9yYWdl
Q29ubmVjdGlvblRvQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rp
b25Ub0NsaWVudDo6fklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQpOgorICAgICAgICAoV2Vi
S2l0OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50Ojpjb25uZWN0aW9uVG9DbGllbnQpOgor
ICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRHZXRSZXN1
bHQpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRE
ZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9D
bGllbnQ6OmRpZE9wZW5EYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25u
ZWN0aW9uVG9DbGllbnQ6OmRpZFN0YXJ0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpJ
REJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRBYm9ydFRyYW5zYWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkQ29tbWl0VHJhbnNh
Y3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50Ojpk
aWRDcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0
aW9uVG9DbGllbnQ6OmRpZERlbGV0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6SURC
U3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkUmVuYW1lT2JqZWN0U3RvcmUpOgorICAgICAg
ICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRDbGVhck9iamVjdFN0
b3JlKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlk
Q3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xp
ZW50OjpkaWREZWxldGVJbmRleCk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0
aW9uVG9DbGllbnQ6OmRpZFJlbmFtZUluZGV4KToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFn
ZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkUHV0T3JBZGQpOgorICAgICAgICAoV2ViS2l0OjpJREJT
dG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRHZXRSZWNvcmQpOgorICAgICAgICAoV2ViS2l0
OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRHZXRBbGxSZWNvcmRzKToKKyAgICAg
ICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkR2V0Q291bnQpOgor
ICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWREZWxldGVS
ZWNvcmQpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50Ojpk
aWRPcGVuQ3Vyc29yKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0Ns
aWVudDo6ZGlkSXRlcmF0ZUN1cnNvcik6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25u
ZWN0aW9uVG9DbGllbnQ6OmRpZEdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyk6CisgICAg
ICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmZpcmVWZXJzaW9uQ2hh
bmdlRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50
OjpkaWRDbG9zZUZyb21TZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVj
dGlvblRvQ2xpZW50Ojpub3RpZnlPcGVuREJSZXF1ZXN0QmxvY2tlZCk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50Lmg6IEFkZGVk
LgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZU1hbmFnZXIuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6bWlncmF0ZU9yaWdpbkRhdGEpOgorICAgICAgICAo
V2ViS2l0OjpJREJTdG9yYWdlTWFuYWdlcjo6aWRiU3RvcmFnZU9yaWdpbkRpcmVjdG9yeSk6Cisg
ICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VNYW5hZ2VyOjppZGJTdG9yYWdlU2l6ZSk6CisgICAg
ICAgIChXZWJLaXQ6OmdldE9yaWdpbnNGb3JWZXJzaW9uKToKKyAgICAgICAgKFdlYktpdDo6SURC
U3RvcmFnZU1hbmFnZXI6Om9yaWdpbnNPZklEQlN0b3JhZ2VEYXRhKToKKyAgICAgICAgKFdlYktp
dDo6SURCU3RvcmFnZU1hbmFnZXI6OklEQlN0b3JhZ2VNYW5hZ2VyKToKKyAgICAgICAgKFdlYktp
dDo6SURCU3RvcmFnZU1hbmFnZXI6OmlzQWN0aXZlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
SURCU3RvcmFnZU1hbmFnZXI6Omhhc0RhdGFJbk1lbW9yeSBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6OklEQlN0b3JhZ2VNYW5hZ2VyOjpjbG9zZURhdGFiYXNlc0ZvckRlbGV0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6SURCU3RvcmFnZU1hbmFnZXI6OnN0b3BEYXRhYmFzZUFjdGl2aXRpZXNGb3JT
dXNwZW5kKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZU1hbmFnZXI6OmdldE9yQ3JlYXRl
VW5pcXVlSURCRGF0YWJhc2UpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlTWFuYWdlcjo6
b3BlbkRhdGFiYXNlKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZU1hbmFnZXI6OmRlbGV0
ZURhdGFiYXNlKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZU1hbmFnZXI6OmdldEFsbERh
dGFiYXNlTmFtZXNBbmRWZXJzaW9ucyk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VNYW5h
Z2VyOjpvcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFn
ZU1hbmFnZXI6OnJlZ2lzdGVyQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3Jh
Z2VNYW5hZ2VyOjp1bnJlZ2lzdGVyQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OklEQlN0
b3JhZ2VNYW5hZ2VyOjpyZWdpc3RlclRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6SURC
U3RvcmFnZU1hbmFnZXI6OnVucmVnaXN0ZXJUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OklEQlN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViS2l0
OjpJREJTdG9yYWdlTWFuYWdlcjo6cmVxdWVzdFNwYWNlKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VNYW5hZ2VyLmg6IEFkZGVkLgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZVJlZ2lzdHJ5LmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6OklEQlN0b3JhZ2VSZWdpc3RyeTo6ZW5zdXJlQ29ubmVjdGlvblRvQ2xpZW50KToK
KyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZVJlZ2lzdHJ5OjpyZW1vdmVDb25uZWN0aW9uVG9D
bGllbnQpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlUmVnaXN0cnk6OnJlZ2lzdGVyQ29u
bmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VSZWdpc3RyeTo6dW5yZWdpc3Rl
ckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlUmVnaXN0cnk6OnJlZ2lz
dGVyVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlUmVnaXN0cnk6OnVu
cmVnaXN0ZXJUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VSZWdpc3Ry
eTo6Y29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VSZWdpc3RyeTo6dHJh
bnNhY3Rpb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZVJl
Z2lzdHJ5Lmg6IEFkZGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29y
a1N0b3JhZ2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5h
Z2VyOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Ok5l
dHdvcmtTdG9yYWdlTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFu
YWdlcjo6Y2FuSGFuZGxlVHlwZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1h
bmFnZXI6OnN0b3BSZWNlaXZpbmdNZXNzYWdlRnJvbUNvbm5lY3Rpb24pOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmRpZEluY3JlYXNlUXVvdGEp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmdldEFsbE9yaWdpbnMp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Om1vdmVEYXRhKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpzdXNwZW5kKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpyZWdpc3RlclRlbXBvcmFyeUJsb2JGaWxl
UGF0aHMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnJlcXVlc3RT
cGFjZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6cmVzZXRRdW90
YUZvclRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnJl
c2V0UXVvdGFVcGRhdGVkQmFzZWRPblVzYWdlRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6b3BlbkRhdGFiYXNlKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpvcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVEYXRhYmFzZSk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZXN0YWJsaXNoVHJhbnNhY3Rpb24pOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmRhdGFiYXNlQ29ubmVjdGlv
blBlbmRpbmdDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6
ZGF0YWJhc2VDb25uZWN0aW9uQ2xvc2VkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyOjphYm9ydE9wZW5BbmRVcGdyYWRlTmVlZGVkKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjphYm9ydFRyYW5zYWN0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjb21taXRUcmFuc2FjdGlvbik6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGlkRmluaXNoSGFuZGxp
bmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtTdG9yYWdlTWFuYWdlcjo6cmVuYW1lT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNsZWFyT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVJbmRleCk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6cmVuYW1lSW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnB1dE9yQWRkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1N0b3JhZ2VNYW5hZ2VyOjpnZXRSZWNvcmQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6OmdldEFsbFJlY29yZHMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6OmdldENvdW50KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VN
YW5hZ2VyOjpkZWxldGVSZWNvcmQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1h
bmFnZXI6Om9wZW5DdXJzb3IpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFn
ZXI6Oml0ZXJhdGVDdXJzb3IpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFn
ZXI6OmdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5tZXNzYWdlcy5pbjoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2VyLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6T3JpZ2luU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VCdWNrZXQ6OlN0b3Jh
Z2VCdWNrZXQpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFn
ZUJ1Y2tldDo6dG9XZWJzaXRlRGF0YVR5cGUpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9y
YWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldDo6dG9TdG9yYWdlSWRlbnRpZmllcik6CisgICAgICAg
IChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0OjppZGJTdG9yYWdl
TWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdl
QnVja2V0OjpleGlzdGluZ0lEQlN0b3JhZ2VNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6T3Jp
Z2luU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VCdWNrZXQ6OmlzQWN0aXZlIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6T3JpZ2luU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VCdWNrZXQ6OmlzRW1wdHkg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1
Y2tldDo6ZGVsZXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2Vy
OjpTdG9yYWdlQnVja2V0Ojptb3ZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3Jh
Z2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0OjpmZXRjaERhdGFUeXBlc0luTGlzdEZyb21NZW1vcnkp
OgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldDo6
ZmV0Y2hEYXRhVHlwZXNJbkxpc3RGcm9tRGlzayk6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0
b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0OjpkZWxldGVJREJTdG9yYWdlRGF0YSk6CisgICAg
ICAgIChXZWJLaXQ6OmNyZWF0ZVF1b3RhTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdp
blN0b3JhZ2VNYW5hZ2VyOjpPcmlnaW5TdG9yYWdlTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6
Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpkZWZhdWx0QnVja2V0KToKKyAgICAgICAgKFdlYktpdDo6
T3JpZ2luU3RvcmFnZU1hbmFnZXI6OnF1b3RhTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6Ok9y
aWdpblN0b3JhZ2VNYW5hZ2VyOjppZGJTdG9yYWdlTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6
Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpleGlzdGluZ0lEQlN0b3JhZ2VNYW5hZ2VyKToKKyAgICAg
ICAgKFdlYktpdDo6T3JpZ2luU3RvcmFnZU1hbmFnZXI6Om1vdmVEYXRhKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2VyLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9RdW90YU1hbmFnZXIuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdDo6UXVvdGFNYW5hZ2VyOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpRdW90YU1h
bmFnZXI6OlF1b3RhTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OlF1b3RhTWFuYWdlcjo6cmVx
dWVzdFNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6UXVvdGFNYW5hZ2VyOjpoYW5kbGVSZXF1ZXN0
cyk6CisgICAgICAgIChXZWJLaXQ6OlF1b3RhTWFuYWdlcjo6Z3JhbnRXaXRoQ3VycmVudFF1b3Rh
KToKKyAgICAgICAgKFdlYktpdDo6UXVvdGFNYW5hZ2VyOjpncmFudEZhc3RQYXRoKToKKyAgICAg
ICAgKFdlYktpdDo6UXVvdGFNYW5hZ2VyOjpkaWRJbmNyZWFzZVF1b3RhKToKKyAgICAgICAgKFdl
YktpdDo6UXVvdGFNYW5hZ2VyOjpyZXNldFF1b3RhVXBkYXRlZEJhc2VkT25Vc2FnZUZvclRlc3Rp
bmcpOgorICAgICAgICAoV2ViS2l0OjpRdW90YU1hbmFnZXI6OnJlc2V0UXVvdGFGb3JUZXN0aW5n
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1F1b3RhTWFuYWdlci5oOiBBZGRl
ZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKHR5cGVz
X3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQpOgorICAgICAgICAqIFNoYXJlZC9XZWJz
aXRlRGF0YS9RdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIuaDogQWRkZWQuCisgICAgICAg
ICogU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmg6CisgICAgICAgICogU291cmNl
cy50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmluY3JlYXNlUXVvdGEp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmlu
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cGVyVGhpcmRQYXJ0eU9yaWdpblN0
b3JhZ2VRdW90YSBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuaDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dFBlck9yaWdpblF1b3RhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbjo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bi5oOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9TZXJ2
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRlbGV0
ZURhdGFiYXNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpv
cGVuRGF0YWJhc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6
OmFib3J0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9T
ZXJ2ZXI6OmNvbW1pdFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVj
dGlvblRvU2VydmVyOjpkaWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Y3JlYXRlT2JqZWN0
U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRlbGV0
ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVy
OjpyZW5hbWVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25U
b1NlcnZlcjo6Y2xlYXJPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5l
Y3Rpb25Ub1NlcnZlcjo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25u
ZWN0aW9uVG9TZXJ2ZXI6OmRlbGV0ZUluZGV4KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29u
bmVjdGlvblRvU2VydmVyOjpyZW5hbWVJbmRleCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNv
bm5lY3Rpb25Ub1NlcnZlcjo6cHV0T3JBZGQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25u
ZWN0aW9uVG9TZXJ2ZXI6OmdldFJlY29yZCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5l
Y3Rpb25Ub1NlcnZlcjo6Z2V0QWxsUmVjb3Jkcyk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNv
bm5lY3Rpb25Ub1NlcnZlcjo6Z2V0Q291bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25u
ZWN0aW9uVG9TZXJ2ZXI6OmRlbGV0ZVJlY29yZCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNv
bm5lY3Rpb25Ub1NlcnZlcjo6b3BlbkN1cnNvcik6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNv
bm5lY3Rpb25Ub1NlcnZlcjo6aXRlcmF0ZUN1cnNvcik6CisgICAgICAgIChXZWJLaXQ6OldlYklE
QkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZXN0YWJsaXNoVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRhdGFiYXNlQ29ubmVjdGlvblBlbmRpbmdD
bG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGF0YWJh
c2VDb25uZWN0aW9uQ2xvc2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRv
U2VydmVyOjphYm9ydE9wZW5BbmRVcGdyYWRlTmVlZGVkKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
SURCQ29ubmVjdGlvblRvU2VydmVyOjpkaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpvcGVuREJSZXF1ZXN0Q2FuY2Vs
bGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpnZXRBbGxE
YXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMpOgorCiAyMDIyLTAyLTA3ICBCZW4gTmhhbSAgPG5oYW1A
YXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBQdXNoU2VydmljZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwpp
bmRleCBlNmJhNzMyMmMzNDhlY2RlNDc5NGUwOTQ5OTViYWI0ODk2YmY1YTQ5Li4wOTQ3ZTI3NmIx
YjZmY2JhYzc5OTc5NmVkNTNmMzg3ZTA4MmNkZWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE0IEBACisyMDIyLTAyLTA3ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29t
PgorCisgICAgICAgIE1hbmFnZSBJbmRleGVkREIgc3RvcmFnZSBieSBvcmlnaW4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDkyNQorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vODc1NTUwMTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVt
ZXouCisKKyAgICAgICAgKiBTdG9yYWdlL0luUHJvY2Vzc0lEQlNlcnZlci5jcHA6CisgICAgICAg
IChJblByb2Nlc3NJREJTZXJ2ZXI6OnF1b3RhTWFuYWdlcik6CisKIDIwMjItMDItMDIgIEVsbGlv
dHQgV2lsbGlhbXMgIDxlbXdAYXBwbGUuY29tPgogCiAgICAgICAgIFtYY29kZV0gRml4IHJlZHVu
ZGFudCBleGVjdXRpb24gb2YgIkNoZWNrIFZUYWJsZXMuLi4iIHNjcmlwdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21h
a2UKaW5kZXggMzMyYjAwMzMwMmMzZWY5NjJmYTcyZmIzZjg4NGNmNWY4MjcxZDQ5Zi4uMDhhMDFl
NTc4ZDhhMzUyN2U2ZmVlNDQyY2U5MDgxMWFmNWJhZmFjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBA
IC0yMjQsMTEgKzIyNCwxNiBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJT
CiAgICAgTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkNvbm5lY3Rpb25Ub0NsaWVudC5oCiAg
ICAgTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkNvbm5lY3Rpb25Ub0NsaWVudERlbGVnYXRl
LmgKICAgICBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmgKKyAgICBNb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvSW5kZXhWYWx1ZUVudHJ5LmgKKyAgICBNb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvSW5kZXhWYWx1ZVN0b3JlLmgKKyAgICBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uaAogICAgIE1vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuaAogICAgIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaAorICAgIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9T
UUxpdGVJREJUcmFuc2FjdGlvbi5oCiAgICAgTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NlcnZl
ck9wZW5EQlJlcXVlc3QuaAogICAgIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJE
YXRhYmFzZS5oCiAgICAgTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNl
Q29ubmVjdGlvbi5oCisgICAgTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFi
YXNlTWFuYWdlci5oCiAgICAgTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFi
YXNlVHJhbnNhY3Rpb24uaAogCiAgICAgTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luZGV4S2V5
LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFi
YXNlSWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2VJZGVudGlmaWVyLmgKaW5kZXggMTVmOGJkMjU1MTQ1N2QzMjk5MmQ2NmJhY2VhZjM2ZWI2
NGRiYTM4MS4uZWFlZjI1NDU2OTMzOTU2MTRlMWMyMTg3ZmY0Y2FiNjRhZTEzZTU3ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlm
aWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJ
ZGVudGlmaWVyLmgKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNUcmFuc2ll
bnQoKSBjb25zdCB7IHJldHVybiBtX2lzVHJhbnNpZW50OyB9CiAKICAgICBTdHJpbmcgZGF0YWJh
c2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9vdChjb25zdCBTdHJpbmcmIHJvb3REaXJlY3RvcnksIGNv
bnN0IFN0cmluZyYgdmVyc2lvblN0cmluZz0idjEiKSBjb25zdDsKLSAgICBzdGF0aWMgU3RyaW5n
IGRhdGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVUb1Jvb3QoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRh
JiB0b3BMZXZlbE9yaWdpbiwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcGVuaW5nT3JpZ2lu
LCBjb25zdCBTdHJpbmcmIHJvb3REaXJlY3RvcnksIGNvbnN0IFN0cmluZyYgdmVyc2lvblN0cmlu
Zyk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBkYXRhYmFzZURpcmVjdG9yeVJl
bGF0aXZlVG9Sb290KGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgdG9wTGV2ZWxPcmlnaW4sIGNv
bnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3BlbmluZ09yaWdpbiwgY29uc3QgU3RyaW5nJiByb290
RGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIHZlcnNpb25TdHJpbmcpOwogCiAgICAgdGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPElEQkRhdGFiYXNlSWRlbnRpZmll
cj4gZGVjb2RlKERlY29kZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnQuaAppbmRleCAy
N2Y3MjY5MTlmMTQyMWYyMWE1ZjAzZmZkZmMxNzZkNGM0YmRmM2MyLi5mMDVhYzJmOGM4MmE4MDlj
MjcxYzlkZjU5N2Y5NjQ3MzE5ZWY2NDYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQ29ubmVjdGlvblRvQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkNvbm5lY3Rpb25Ub0NsaWVudC5o
CkBAIC03NCwxMSArNzQsMTEgQEAgcHVibGljOgogCiAgICAgdm9pZCBub3RpZnlPcGVuREJSZXF1
ZXN0QmxvY2tlZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVy
LCB1aW50NjRfdCBvbGRWZXJzaW9uLCB1aW50NjRfdCBuZXdWZXJzaW9uKTsKIAotICAgIHZvaWQg
ZGlkR2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKGNvbnN0IElEQlJlc291cmNlSWRlbnRp
ZmllciYsIFZlY3RvcjxJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiYmKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGRpZEdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhjb25zdCBJREJS
ZXNvdXJjZUlkZW50aWZpZXImLCBWZWN0b3I8SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbj4mJik7
CiAKICAgICB2b2lkIHJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNl
Q29ubmVjdGlvbiYpOwogICAgIHZvaWQgdW5yZWdpc3RlckRhdGFiYXNlQ29ubmVjdGlvbihVbmlx
dWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mKTsKLSAgICB2b2lkIGNvbm5lY3Rpb25Ub0NsaWVudENs
b3NlZCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29ubmVjdGlvblRvQ2xpZW50Q2xvc2Vk
KCk7CiAgICAgYm9vbCBpc0Nsb3NlZCgpIHsgcmV0dXJuIG1faXNDbG9zZWQ7IH0KICAgICB2b2lk
IGNsZWFyRGVsZWdhdGUoKSB7IG1fZGVsZWdhdGUgPSBudWxscHRyOyB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKaW5k
ZXggZDI2NjkzMTgwODQ2YWY2NjY4OWUxN2FlYTNmZjk5NzE5NTVhZTM2ZS4uNGJhZDQ0MmIxYjNh
OWE0MTc4NTkwNDJmODE2NTc3ZTA3YjEzYmE4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKQEAgLTEwMSwxMyArMTAx
LDEzIEBAIHZvaWQgSURCU2VydmVyOjp1bnJlZ2lzdGVyVHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0
YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCiAgICAgbV90cmFuc2FjdGlvbnMucmVtb3Zl
KHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCkpOwogfQogCi12b2lkIElEQlNlcnZlcjo6
cmVnaXN0ZXJEYXRhYmFzZUNvbm5lY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiBj
b25uZWN0aW9uKQordm9pZCBJREJTZXJ2ZXI6OnJlZ2lzdGVyQ29ubmVjdGlvbihVbmlxdWVJREJE
YXRhYmFzZUNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiB7CiAgICAgQVNTRVJUKCFtX2RhdGFiYXNl
Q29ubmVjdGlvbnMuY29udGFpbnMoY29ubmVjdGlvbi5pZGVudGlmaWVyKCkpKTsKICAgICBtX2Rh
dGFiYXNlQ29ubmVjdGlvbnMuc2V0KGNvbm5lY3Rpb24uaWRlbnRpZmllcigpLCAmY29ubmVjdGlv
bik7CiB9CiAKLXZvaWQgSURCU2VydmVyOjp1bnJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0aW9uKFVu
aXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYgY29ubmVjdGlvbikKK3ZvaWQgSURCU2VydmVyOjp1
bnJlZ2lzdGVyQ29ubmVjdGlvbihVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24pCiB7CiAgICAgQVNTRVJUKG1fZGF0YWJhc2VDb25uZWN0aW9ucy5jb250YWlucyhjb25uZWN0
aW9uLmlkZW50aWZpZXIoKSkpOwogICAgIG1fZGF0YWJhc2VDb25uZWN0aW9ucy5yZW1vdmUoY29u
bmVjdGlvbi5pZGVudGlmaWVyKCkpOwpAQCAtMTI4LDEzICsxMjgsMTMgQEAgc3RkOjp1bmlxdWVf
cHRyPElEQkJhY2tpbmdTdG9yZT4gSURCU2VydmVyOjpjcmVhdGVCYWNraW5nU3RvcmUoY29uc3Qg
SURCRGF0YWJhc2UKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBpZiAobV9k
YXRhYmFzZURpcmVjdG9yeVBhdGguaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxNZW1vcnlJREJCYWNraW5nU3RvcmU+KG1fc2Vzc2lvbklELCBpZGVudGlmaWVyKTsKKyAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8TWVtb3J5SURCQmFja2luZ1N0b3JlPihpZGVudGlmaWVyKTsK
IAogICAgIEFTU0VSVCghbV9zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSk7CiAgICAgaWYgKGlkZW50
aWZpZXIuaXNUcmFuc2llbnQoKSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TWVtb3J5SURC
QmFja2luZ1N0b3JlPihtX3Nlc3Npb25JRCwgaWRlbnRpZmllcik7CisgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPE1lbW9yeUlEQkJhY2tpbmdTdG9yZT4oaWRlbnRpZmllcik7CiAKLSAgICByZXR1
cm4gbWFrZVVuaXF1ZTxTUUxpdGVJREJCYWNraW5nU3RvcmU+KG1fc2Vzc2lvbklELCBpZGVudGlm
aWVyLCBtX2RhdGFiYXNlRGlyZWN0b3J5UGF0aCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1FM
aXRlSURCQmFja2luZ1N0b3JlPihpZGVudGlmaWVyLCB1cGdyYWRlZERhdGFiYXNlRGlyZWN0b3J5
KGlkZW50aWZpZXIpKTsKIH0KIAogdm9pZCBJREJTZXJ2ZXI6Om9wZW5EYXRhYmFzZShjb25zdCBJ
REJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEpCkBAIC0xNzcsMTcgKzE3Nyw2IEBAIHZvaWQgSURC
U2VydmVyOjpkZWxldGVEYXRhYmFzZShjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEp
CiAgICAgICAgIG1fdW5pcXVlSURCRGF0YWJhc2VNYXAucmVtb3ZlKGRhdGFiYXNlLT5pZGVudGlm
aWVyKCkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8VW5pcXVlSURCRGF0YWJhc2U+IElEQlNlcnZl
cjo6Y2xvc2VBbmRUYWtlVW5pcXVlSURCRGF0YWJhc2UoVW5pcXVlSURCRGF0YWJhc2UmIGRhdGFi
YXNlKQotewotICAgIExPRyhJbmRleGVkREIsICJJREJTZXJ2ZXI6OmNsb3NlVW5pcXVlSURCRGF0
YWJhc2UiKTsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotCi0gICAgYXV0byB1bmlxdWVQ
b2ludGVyID0gbV91bmlxdWVJREJEYXRhYmFzZU1hcC50YWtlKGRhdGFiYXNlLmlkZW50aWZpZXIo
KSk7Ci0gICAgQVNTRVJUKHVuaXF1ZVBvaW50ZXIpOwotCi0gICAgcmV0dXJuIHVuaXF1ZVBvaW50
ZXI7Ci19Ci0KIHZvaWQgSURCU2VydmVyOjphYm9ydFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291
cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKQogewogICAgIExPRyhJbmRleGVk
REIsICJJREJTZXJ2ZXI6OmFib3J0VHJhbnNhY3Rpb24iKTsKQEAgLTc1MCw3ICs3MzksNyBAQCB2
b2lkIElEQlNlcnZlcjo6cmVuYW1lT3JpZ2luKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSYgb2xkT3JpZ2luLCBjb25zdAogICAgICAgICBGaWxlU3lzdGVtOjptb3ZlRmlsZShvbGRP
cmlnaW5QYXRoLCBuZXdPcmlnaW5QYXRoKTsKIH0KIAotU3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVj
aXNpb24gSURCU2VydmVyOjpyZXF1ZXN0U3BhY2UoY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4s
IHVpbnQ2NF90IHRhc2tTaXplKSBXVEZfSUdOT1JFU19USFJFQURfU0FGRVRZX0FOQUxZU0lTCit2
b2lkIElEQlNlcnZlcjo6cmVxdWVzdFNwYWNlKGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2luLCB1
aW50NjRfdCB0YXNrU2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikgV1RGX0lHTk9SRVNfVEhSRUFEX1NBRkVUWV9BTkFMWVNJUwogewogICAgIEFT
U0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVChtX2xvY2suaXNIZWxkKCkpOwpAQCAt
NzYyLDcgKzc1MSw3IEBAIFN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uIElEQlNlcnZlcjo6
cmVxdWVzdFNwYWNlKGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2luCiAgICAgcmVzdWx0ID0gbV9z
cGFjZVJlcXVlc3RlcihvcmlnaW4sIHRhc2tTaXplKTsKICAgICBtX2xvY2subG9jaygpOwogCi0g
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihyZXN1bHQgPT0gU3RvcmFn
ZVF1b3RhTWFuYWdlcjo6RGVjaXNpb246OkdyYW50KTsKIH0KIAogdWludDY0X3QgSURCU2VydmVy
OjpkaXNrVXNhZ2UoY29uc3QgU3RyaW5nJiByb290RGlyZWN0b3J5LCBjb25zdCBDbGllbnRPcmln
aW4mIG9yaWdpbikKQEAgLTc4NCw2ICs3NzMsMjMgQEAgdm9pZCBJREJTZXJ2ZXI6OnVwZ3JhZGVG
aWxlc0lmTmVjZXNzYXJ5KCkKICAgICAgICAgRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVz
KG5ld1ZlcnNpb25EaXJlY3RvcnkpOwogfQogCitTdHJpbmcgSURCU2VydmVyOjp1cGdyYWRlZERh
dGFiYXNlRGlyZWN0b3J5KGNvbnN0IFdlYkNvcmU6OklEQkRhdGFiYXNlSWRlbnRpZmllciYgaWRl
bnRpZmllcikKK3sKKyAgICBTdHJpbmcgb2xkT3JpZ2luRGlyZWN0b3J5ID0gaWRlbnRpZmllci5k
YXRhYmFzZURpcmVjdG9yeVJlbGF0aXZlVG9Sb290KG1fZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCAi
djAiKTsKKyAgICBTdHJpbmcgb2xkRGF0YWJhc2VEaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQob2xkT3JpZ2luRGlyZWN0b3J5LCBTUUxpdGVJREJCYWNraW5n
U3RvcmU6OmVuY29kZURhdGFiYXNlTmFtZShpZGVudGlmaWVyLmRhdGFiYXNlTmFtZSgpKSk7Cisg
ICAgU3RyaW5nIG5ld09yaWdpbkRpcmVjdG9yeSA9IGlkZW50aWZpZXIuZGF0YWJhc2VEaXJlY3Rv
cnlSZWxhdGl2ZVRvUm9vdChtX2RhdGFiYXNlRGlyZWN0b3J5UGF0aCwgInYxIik7CisgICAgU3Ry
aW5nIGZpbGVOYW1lSGFzaCA9IFNRTGl0ZUZpbGVTeXN0ZW06OmNvbXB1dGVIYXNoRm9yRmlsZU5h
bWUoaWRlbnRpZmllci5kYXRhYmFzZU5hbWUoKSk7CisgICAgU3RyaW5nIG5ld0RhdGFiYXNlRGly
ZWN0b3J5ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG5ld09yaWdpbkRp
cmVjdG9yeSwgZmlsZU5hbWVIYXNoKTsKKyAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3Jp
ZXMobmV3RGF0YWJhc2VEaXJlY3RvcnkpOworCisgICAgaWYgKEZpbGVTeXN0ZW06OmZpbGVFeGlz
dHMob2xkRGF0YWJhc2VEaXJlY3RvcnkpKSB7CisgICAgICAgIEZpbGVTeXN0ZW06Om1vdmVGaWxl
KG9sZERhdGFiYXNlRGlyZWN0b3J5LCBuZXdEYXRhYmFzZURpcmVjdG9yeSk7CisgICAgICAgIEZp
bGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KG9sZE9yaWdpbkRpcmVjdG9yeSk7CisgICAg
fQorCisgICAgcmV0dXJuIG5ld0RhdGFiYXNlRGlyZWN0b3J5OworfQorCiBib29sIElEQlNlcnZl
cjo6aGFzRGF0YWJhc2VBY3Rpdml0aWVzT25NYWluVGhyZWFkKCkgY29uc3QKIHsKICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL0lEQlNlcnZlci5oCmluZGV4IGQ4ODM2NDlhNWM4ZDViNTlmMDJjMmJkYWNk
ZGU2NzhhMWNhM2M0MmYuLjEzZmI3MGJlMzc5YWFhOWMxMWY1OWQyNTRiOTZjMDcyOTRkYTA2MWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJT
ZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURC
U2VydmVyLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJTdG9yYWdlUXVvdGFNYW5hZ2Vy
LmgiCiAjaW5jbHVkZSAiVW5pcXVlSURCRGF0YWJhc2UuaCIKICNpbmNsdWRlICJVbmlxdWVJREJE
YXRhYmFzZUNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIu
aCIKICNpbmNsdWRlIDxwYWwvSHlzdGVyZXNpc0FjdGl2aXR5Lmg+CiAjaW5jbHVkZSA8cGFsL1Nl
c3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZFRhc2tIYW5kbGVyLmg+CkBAIC00
OCw4ICs0OSw3IEBAIHN0cnVjdCBJREJHZXRSZWNvcmREYXRhOwogCiBuYW1lc3BhY2UgSURCU2Vy
dmVyIHsKIAotY2xhc3MgSURCU2VydmVyIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
K2NsYXNzIElEQlNlcnZlciA6IHB1YmxpYyBVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIgewogcHVi
bGljOgogICAgIHVzaW5nIFN0b3JhZ2VRdW90YU1hbmFnZXJTcGFjZVJlcXVlc3RlciA9IEZ1bmN0
aW9uPFN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uKGNvbnN0IENsaWVudE9yaWdpbiYsIHVp
bnQ2NF90IHNwYWNlUmVxdWVzdGVkKT47CiAgICAgV0VCQ09SRV9FWFBPUlQgSURCU2VydmVyKFBB
TDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwgU3RvcmFn
ZVF1b3RhTWFuYWdlclNwYWNlUmVxdWVzdGVyJiYsIExvY2smKTsKQEAgLTg4LDE1ICs4OCwxMyBA
QCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldEFsbERhdGFiYXNlTmFtZXNB
bmRWZXJzaW9ucyhJREJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVu
dGlmaWVyJiwgY29uc3QgQ2xpZW50T3JpZ2luJik7CiAKLQotICAgIHZvaWQgcmVnaXN0ZXJEYXRh
YmFzZUNvbm5lY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJik7Ci0gICAgdm9pZCB1
bnJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYp
OwotICAgIHZvaWQgcmVnaXN0ZXJUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0
aW9uJik7Ci0gICAgdm9pZCB1bnJlZ2lzdGVyVHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VU
cmFuc2FjdGlvbiYpOwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPFVuaXF1ZUlEQkRhdGFiYXNlPiBj
bG9zZUFuZFRha2VVbmlxdWVJREJEYXRhYmFzZShVbmlxdWVJREJEYXRhYmFzZSYpOwotCi0gICAg
c3RkOjp1bmlxdWVfcHRyPElEQkJhY2tpbmdTdG9yZT4gY3JlYXRlQmFja2luZ1N0b3JlKGNvbnN0
IElEQkRhdGFiYXNlSWRlbnRpZmllciYpOworICAgIC8vIFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdl
cgorICAgIHZvaWQgcmVnaXN0ZXJDb25uZWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlv
biYpIGZpbmFsOworICAgIHZvaWQgdW5yZWdpc3RlckNvbm5lY3Rpb24oVW5pcXVlSURCRGF0YWJh
c2VDb25uZWN0aW9uJikgZmluYWw7CisgICAgdm9pZCByZWdpc3RlclRyYW5zYWN0aW9uKFVuaXF1
ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mKSBmaW5hbDsKKyAgICB2b2lkIHVucmVnaXN0ZXJUcmFu
c2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJikgZmluYWw7CisgICAgc3RkOjp1
bmlxdWVfcHRyPElEQkJhY2tpbmdTdG9yZT4gY3JlYXRlQmFja2luZ1N0b3JlKGNvbnN0IElEQkRh
dGFiYXNlSWRlbnRpZmllciYpIGZpbmFsOworICAgIHZvaWQgcmVxdWVzdFNwYWNlKGNvbnN0IENs
aWVudE9yaWdpbiYsIHVpbnQ2NF90IHNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYpIGZpbmFsOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgSGFzaFNldDxTZWN1cml0eU9yaWdpbkRh
dGE+IGdldE9yaWdpbnMoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsb3NlQW5k
RGVsZXRlRGF0YWJhc2VzTW9kaWZpZWRTaW5jZShXYWxsVGltZSk7CkBAIC0xMDQsNyArMTAyLDYg
QEAgcHVibGljOgogICAgIHZvaWQgY2xvc2VEYXRhYmFzZXNGb3JPcmlnaW5zKGNvbnN0IFZlY3Rv
cjxTZWN1cml0eU9yaWdpbkRhdGE+JiwgRnVuY3Rpb248Ym9vbChjb25zdCBTZWN1cml0eU9yaWdp
bkRhdGEmLCBjb25zdCBDbGllbnRPcmlnaW4mKT4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCByZW5hbWVPcmlnaW4oY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3Qg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJik7CiAKLSAgICBTdG9yYWdlUXVvdGFNYW5hZ2Vy
OjpEZWNpc2lvbiByZXF1ZXN0U3BhY2UoY29uc3QgQ2xpZW50T3JpZ2luJiwgdWludDY0X3QgdGFz
a1NpemUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB1aW50NjRfdCBkaXNrVXNhZ2UoY29u
c3QgU3RyaW5nJiByb290RGlyZWN0b3J5LCBjb25zdCBDbGllbnRPcmlnaW4mKTsKIAogICAgIFdF
QkNPUkVfRVhQT1JUIGJvb2wgaGFzRGF0YWJhc2VBY3Rpdml0aWVzT25NYWluVGhyZWFkKCkgY29u
c3Q7CkBAIC0xMTQsNiArMTExLDcgQEAgcHJpdmF0ZToKICAgICBVbmlxdWVJREJEYXRhYmFzZSYg
Z2V0T3JDcmVhdGVVbmlxdWVJREJEYXRhYmFzZShjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXIm
KTsKIAogICAgIHZvaWQgdXBncmFkZUZpbGVzSWZOZWNlc3NhcnkoKTsKKyAgICBTdHJpbmcgdXBn
cmFkZWREYXRhYmFzZURpcmVjdG9yeShjb25zdCBXZWJDb3JlOjpJREJEYXRhYmFzZUlkZW50aWZp
ZXImKTsKICAgICB2b2lkIHJlbW92ZURhdGFiYXNlc01vZGlmaWVkU2luY2VGb3JWZXJzaW9uKFdh
bGxUaW1lLCBjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHJlbW92ZURhdGFiYXNlc1dpdGhPcmln
aW5zRm9yVmVyc2lvbihjb25zdCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiYsIGNvbnN0IFN0
cmluZyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDdlZTQxNDBh
OGFmMTgwMTFjOTZiY2E3YjYwOGQ4NjU5MThhZjg1ZWEuLmQ2MzM1MDMwOTkzMDU1YjliMTJiNzg0
NTY1NWRhODMzNzJiMWE1NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwCkBA
IC00NCw5ICs0NCw4IEBAIG5hbWVzcGFjZSBJREJTZXJ2ZXIgewogLy8gVGhlIEluZGV4ZWREQiBz
cGVjIHN0YXRlcyB0aGUgbWF4aW11bSB2YWx1ZSB5b3UgY2FuIGdldCBmcm9tIHRoZSBrZXkgZ2Vu
ZXJhdG9yIGlzIDJeNTMuCiBjb25zdGV4cHIgdWludDY0X3QgbWF4R2VuZXJhdGVkS2V5VmFsdWUg
PSAweDIwMDAwMDAwMDAwMDAwOwogCi1NZW1vcnlJREJCYWNraW5nU3RvcmU6Ok1lbW9yeUlEQkJh
Y2tpbmdTdG9yZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IElEQkRhdGFiYXNlSWRl
bnRpZmllciYgaWRlbnRpZmllcikKK01lbW9yeUlEQkJhY2tpbmdTdG9yZTo6TWVtb3J5SURCQmFj
a2luZ1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYgaWRlbnRpZmllcikKICAgICA6
IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQotICAgICwgbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQog
ewogfQogCkBAIC0xMzQsNyArMTMzLDcgQEAgSURCRXJyb3IgTWVtb3J5SURCQmFja2luZ1N0b3Jl
OjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHQKICAgICAg
ICAgcmV0dXJuIElEQkVycm9yIHsgQ29uc3RyYWludEVycm9yIH07CiAKICAgICBBU1NFUlQoIW1f
b2JqZWN0U3RvcmVzQnlJZGVudGlmaWVyLmNvbnRhaW5zKGluZm8uaWRlbnRpZmllcigpKSk7Ci0g
ICAgYXV0byBvYmplY3RTdG9yZSA9IE1lbW9yeU9iamVjdFN0b3JlOjpjcmVhdGUobV9zZXNzaW9u
SUQsIGluZm8pOworICAgIGF1dG8gb2JqZWN0U3RvcmUgPSBNZW1vcnlPYmplY3RTdG9yZTo6Y3Jl
YXRlKGluZm8pOwogCiAgICAgbV9kYXRhYmFzZUluZm8tPmFkZEV4aXN0aW5nT2JqZWN0U3RvcmUo
aW5mbyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuaAppbmRleCA5MmFhNzYwZDIwNzMz
NzE4ZmJkYjhjMDQ0Y2ZlNjdkY2FiMTY1MzM1Li4wOTMwMWU4M2ZjYTdjNzUwOWUyODU4MTEwYzEy
NzgzNTMzNThmM2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5oCkBAIC0zMCw3ICsz
MCw2IEBACiAjaW5jbHVkZSAiSURCUmVzb3VyY2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSW5k
ZXhLZXkuaCIKICNpbmNsdWRlICJNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbi5oIgotI2lu
Y2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC00MSw4ICs0MCw4IEBAIGNsYXNzIE1lbW9yeU9iamVjdFN0b3Jl
OwogY2xhc3MgTWVtb3J5SURCQmFja2luZ1N0b3JlIGZpbmFsIDogcHVibGljIElEQkJhY2tpbmdT
dG9yZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgTWVtb3J5
SURCQmFja2luZ1N0b3JlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBJREJEYXRhYmFzZUlkZW50aWZp
ZXImKTsKLSAgICB+TWVtb3J5SURCQmFja2luZ1N0b3JlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQg
ZXhwbGljaXQgTWVtb3J5SURCQmFja2luZ1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmll
ciYpOworICAgIFdFQkNPUkVfRVhQT1JUIH5NZW1vcnlJREJCYWNraW5nU3RvcmUoKTsKIAogICAg
IElEQkVycm9yIGdldE9yRXN0YWJsaXNoRGF0YWJhc2VJbmZvKElEQkRhdGFiYXNlSW5mbyYpIGZp
bmFsOwogICAgIHVpbnQ2NF90IGRhdGFiYXNlVmVyc2lvbigpIGZpbmFsOwpAQCAtOTIsNyArOTEs
NiBAQCBwcml2YXRlOgogICAgIHZvaWQgdW5yZWdpc3Rlck9iamVjdFN0b3JlKE1lbW9yeU9iamVj
dFN0b3JlJik7CiAKICAgICBJREJEYXRhYmFzZUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwotICAg
IFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJREJEYXRh
YmFzZUluZm8+IG1fZGF0YWJhc2VJbmZvOwogCiAgICAgSGFzaE1hcDxJREJSZXNvdXJjZUlkZW50
aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbj4+IG1f
dHJhbnNhY3Rpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5jcHAKaW5kZXggOWRkYzBmY2Y5OTE5
M2YzMzRiZGM1ZDQyNjFlYTM5MWRlNGJhYWI3YS4uZTAxZWUwMmI3MTUyMzk5Y2M3MjZmYjE4YmMz
NDkxNDYwNGRlNzNlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuY3BwCkBAIC0zOCwxOCArMzgs
MTcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NKU1ZhbHVlLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSlNDSlNWYWx1ZUlubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9KU0xvY2suaD4KLSNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiBuYW1lc3BhY2UgSURCU2VydmVyIHsKIAot
UmVmPE1lbW9yeU9iamVjdFN0b3JlPiBNZW1vcnlPYmplY3RTdG9yZTo6Y3JlYXRlKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiBpbmZvKQorUmVmPE1l
bW9yeU9iamVjdFN0b3JlPiBNZW1vcnlPYmplY3RTdG9yZTo6Y3JlYXRlKGNvbnN0IElEQk9iamVj
dFN0b3JlSW5mbyYgaW5mbykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZW1vcnlPYmpl
Y3RTdG9yZShzZXNzaW9uSUQsIGluZm8pKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZW1v
cnlPYmplY3RTdG9yZShpbmZvKSk7CiB9CiAKLU1lbW9yeU9iamVjdFN0b3JlOjpNZW1vcnlPYmpl
Y3RTdG9yZShQQUw6OlNlc3Npb25JRCwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiBpbmZvKQor
TWVtb3J5T2JqZWN0U3RvcmU6Ok1lbW9yeU9iamVjdFN0b3JlKGNvbnN0IElEQk9iamVjdFN0b3Jl
SW5mbyYgaW5mbykKICAgICA6IG1faW5mbyhpbmZvKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUu
aAppbmRleCA4NzFkZWI1ZTRhZTA1MTQ4MmI5MDg5Njg5NWVhMzFjMjc2ZGQzMDg2Li5mMDNhM2Ex
YjBhZDUzNGI5ZjMzOWM0ZmJkN2U3NDBhZGYyMjg0NzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUu
aApAQCAtMzQsMTAgKzM0LDYgQEAKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CiAKLW5hbWVzcGFjZSBQQUwgewotY2xhc3MgU2Vzc2lvbklEOwot
fQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIElEQkN1cnNvckluZm87CkBAIC02MSw3
ICs1Nyw3IEBAIHR5cGVkZWYgSGFzaE1hcDxJREJLZXlEYXRhLCBUaHJlYWRTYWZlRGF0YUJ1ZmZl
ciwgSURCS2V5RGF0YUhhc2gsIElEQktleURhdGFIYXNoCiAKIGNsYXNzIE1lbW9yeU9iamVjdFN0
b3JlIDogcHVibGljIFJlZkNvdW50ZWQ8TWVtb3J5T2JqZWN0U3RvcmU+IHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmPE1lbW9yeU9iamVjdFN0b3JlPiBjcmVhdGUoUEFMOjpTZXNzaW9uSUQsIGNv
bnN0IElEQk9iamVjdFN0b3JlSW5mbyYpOworICAgIHN0YXRpYyBSZWY8TWVtb3J5T2JqZWN0U3Rv
cmU+IGNyZWF0ZShjb25zdCBJREJPYmplY3RTdG9yZUluZm8mKTsKIAogICAgIH5NZW1vcnlPYmpl
Y3RTdG9yZSgpOwogCkBAIC0xMDgsNyArMTA0LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVuYW1l
SW5kZXgoTWVtb3J5SW5kZXgmLCBjb25zdCBTdHJpbmcmIG5ld05hbWUpOwogCiBwcml2YXRlOgot
ICAgIE1lbW9yeU9iamVjdFN0b3JlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBJREJPYmplY3RTdG9y
ZUluZm8mKTsKKyAgICBNZW1vcnlPYmplY3RTdG9yZShjb25zdCBJREJPYmplY3RTdG9yZUluZm8m
KTsKIAogICAgIElEQktleURhdGFTZXQ6Oml0ZXJhdG9yIGxvd2VzdEl0ZXJhdG9ySW5SYW5nZShj
b25zdCBJREJLZXlSYW5nZURhdGEmLCBib29sIHJldmVyc2UpIGNvbnN0OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2lu
Z1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxp
dGVJREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDc4NDYxZjEzNmY3N2I0OGUwNDI1NTY5OWQ4ZDlh
Yzg0OWQ5YzQ2NWQuLjkyMWFhMmIwYjg4MDliM2E0ZGNmNzMyMTg5ZGI5MDlhNDYwYWIxOGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJ
REJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCkBAIC0yMzYsMTIgKzIzNiwxMCBAQCBz
dGF0aWMgQVNDSUlMaXRlcmFsIGluZGV4SW5mb1RhYmxlU2NoZW1hVGVtcCgpCiAgICAgcmV0dXJu
IFRBQkxFX1NDSEVNQV9QUkVGSVggIl9UZW1wX0luZGV4SW5mbyIgSU5ERVhfSU5GT19UQUJMRV9T
Q0hFTUFfU1VGRklYOwogfQogCi1TUUxpdGVJREJCYWNraW5nU3RvcmU6OlNRTGl0ZUlEQkJhY2tp
bmdTdG9yZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IElEQkRhdGFiYXNlSWRlbnRp
ZmllciYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZVJvb3REaXJlY3RvcnkpCi0g
ICAgOiBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCi0gICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmll
cikKLSAgICAsIG1fZGF0YWJhc2VSb290RGlyZWN0b3J5KGRhdGFiYXNlUm9vdERpcmVjdG9yeSkK
K1NRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6U1FMaXRlSURCQmFja2luZ1N0b3JlKGNvbnN0IElEQkRh
dGFiYXNlSWRlbnRpZmllciYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZURpcmVj
dG9yeSkKKyAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQorICAgICwgbV9kYXRhYmFzZURp
cmVjdG9yeShkYXRhYmFzZURpcmVjdG9yeSkKIHsKLSAgICBtX2RhdGFiYXNlRGlyZWN0b3J5ID0g
ZnVsbERhdGFiYXNlRGlyZWN0b3J5V2l0aFVwZ3JhZGUoKTsKIH0KIAogU1FMaXRlSURCQmFja2lu
Z1N0b3JlOjp+U1FMaXRlSURCQmFja2luZ1N0b3JlKCkKQEAgLTkxMiwxOSArOTEwLDI5IEBAIHN0
ZDo6dW5pcXVlX3B0cjxJREJEYXRhYmFzZUluZm8+IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZXh0
cmFjdEV4aXN0aW5nRGF0YWJhc2VJCiAgICAgcmV0dXJuIGRhdGFiYXNlSW5mbzsKIH0KIAotU3Ry
aW5nIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZmlsZW5hbWVGb3JEYXRhYmFzZU5hbWUoKSBjb25z
dAorU3RyaW5nIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZW5jb2RlRGF0YWJhc2VOYW1lKGNvbnN0
IFN0cmluZyYgZGF0YWJhc2VOYW1lKQogewotICAgIEFTU0VSVCghbV9pZGVudGlmaWVyLmRhdGFi
YXNlTmFtZSgpLmlzTnVsbCgpKTsKLQotICAgIGlmIChtX2lkZW50aWZpZXIuZGF0YWJhc2VOYW1l
KCkuaXNFbXB0eSgpKQorICAgIEFTU0VSVCghZGF0YWJhc2VOYW1lLmlzRW1wdHkoKSk7CisgICAg
aWYgKGRhdGFiYXNlTmFtZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAiJTAwIjsKIAotICAg
IFN0cmluZyBmaWxlbmFtZSA9IEZpbGVTeXN0ZW06OmVuY29kZUZvckZpbGVOYW1lKG1faWRlbnRp
Zmllci5kYXRhYmFzZU5hbWUoKSk7Ci0gICAgZmlsZW5hbWUucmVwbGFjZSgnLicsICIlMkUiKTsK
KyAgICBTdHJpbmcgZmlsZW5hbWUgPSBGaWxlU3lzdGVtOjplbmNvZGVGb3JGaWxlTmFtZShkYXRh
YmFzZU5hbWUpOworICAgIGZpbGVuYW1lLnJlcGxhY2VXaXRoTGl0ZXJhbCgnLicsICIlMkUiKTsK
IAogICAgIHJldHVybiBmaWxlbmFtZTsKIH0KIAorU3RyaW5nIFNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6ZGVjb2RlRGF0YWJhc2VOYW1lKGNvbnN0IFN0cmluZyYgZW5jb2RlZE5hbWUpCit7CisgICAg
aWYgKGVuY29kZWROYW1lID09ICIlMDAiX3MpCisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygp
OworCisgICAgU3RyaW5nIG5hbWUgPSBlbmNvZGVkTmFtZTsKKyAgICBuYW1lLnJlcGxhY2UoIiUy
RSJfcywgIi4iX3MpOworCisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OmRlY29kZUZyb21GaWxlbmFt
ZShuYW1lKTsKK30KKwogU3RyaW5nIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZnVsbERhdGFiYXNl
UGF0aEZvckRpcmVjdG9yeShjb25zdCBTdHJpbmcmIGZ1bGxEYXRhYmFzZURpcmVjdG9yeSkKIHsK
ICAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGZ1bGxEYXRh
YmFzZURpcmVjdG9yeSwgIkluZGV4ZWREQi5zcWxpdGUzIik7CkBAIC05NjUsMjMgKzk3Myw2IEBA
IHN0ZDo6b3B0aW9uYWw8SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbj4gU1FMaXRlSURCQmFja2lu
Z1N0b3JlOjpkYXRhYmFzZU5hbWVBbmRWCiAgICAgcmV0dXJuIElEQkRhdGFiYXNlTmFtZUFuZFZl
cnNpb24geyBkYXRhYmFzZU5hbWUsICpkYXRhYmFzZVZlcnNpb24gfTsKIH0KIAotU3RyaW5nIFNR
TGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZnVsbERhdGFiYXNlRGlyZWN0b3J5V2l0aFVwZ3JhZGUoKQot
ewotICAgIFN0cmluZyBvbGRPcmlnaW5EaXJlY3RvcnkgPSBtX2lkZW50aWZpZXIuZGF0YWJhc2VE
aXJlY3RvcnlSZWxhdGl2ZVRvUm9vdChtX2RhdGFiYXNlUm9vdERpcmVjdG9yeSwgInYwIik7Ci0g
ICAgU3RyaW5nIG9sZERhdGFiYXNlRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KG9sZE9yaWdpbkRpcmVjdG9yeSwgZmlsZW5hbWVGb3JEYXRhYmFzZU5hbWUo
KSk7Ci0gICAgU3RyaW5nIG5ld09yaWdpbkRpcmVjdG9yeSA9IG1faWRlbnRpZmllci5kYXRhYmFz
ZURpcmVjdG9yeVJlbGF0aXZlVG9Sb290KG1fZGF0YWJhc2VSb290RGlyZWN0b3J5LCAidjEiKTsK
LSAgICBTdHJpbmcgZmlsZU5hbWVIYXNoID0gU1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0ZUhhc2hG
b3JGaWxlTmFtZShtX2lkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCkpOwotICAgIFN0cmluZyBuZXdE
YXRhYmFzZURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChu
ZXdPcmlnaW5EaXJlY3RvcnksIGZpbGVOYW1lSGFzaCk7Ci0gICAgRmlsZVN5c3RlbTo6bWFrZUFs
bERpcmVjdG9yaWVzKG5ld0RhdGFiYXNlRGlyZWN0b3J5KTsKLQotICAgIGlmIChGaWxlU3lzdGVt
OjpmaWxlRXhpc3RzKG9sZERhdGFiYXNlRGlyZWN0b3J5KSkgewotICAgICAgICBGaWxlU3lzdGVt
Ojptb3ZlRmlsZShvbGREYXRhYmFzZURpcmVjdG9yeSwgbmV3RGF0YWJhc2VEaXJlY3RvcnkpOwot
ICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeShvbGRPcmlnaW5EaXJlY3Rv
cnkpOwotICAgIH0KLQotICAgIHJldHVybiBuZXdEYXRhYmFzZURpcmVjdG9yeTsKLX0KLQogSURC
RXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbyhJ
REJEYXRhYmFzZUluZm8mIGluZm8pCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIlNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6Z2V0T3JFc3RhYmxpc2hEYXRhYmFzZUluZm8gLSBkYXRhYmFzZSAlcyIsIG1f
aWRlbnRpZmllci5kYXRhYmFzZU5hbWUoKS51dGY4KCkuZGF0YSgpKTsKQEAgLTk5MSwxMSArOTgy
LDExIEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0T3JFc3RhYmxpc2hEYXRh
YmFzZUluZm8oSURCRGF0YWJhc2VJbmZvJiBpbmZvCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7
IH07CiAgICAgfQogCi0gICAgU3RyaW5nIGRiRmlsZW5hbWUgPSBmdWxsRGF0YWJhc2VQYXRoKCk7
Ci0KKyAgICBTdHJpbmcgZGF0YWJhc2VQYXRoID0gZnVsbERhdGFiYXNlUGF0aCgpOworICAgIEZp
bGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhGaWxlU3lzdGVtOjpwYXJlbnRQYXRoKGRhdGFi
YXNlUGF0aCkpOwogICAgIG1fc3FsaXRlREIgPSBtYWtlVW5pcXVlPFNRTGl0ZURhdGFiYXNlPigp
OwotICAgIGlmICghbV9zcWxpdGVEQi0+b3BlbihkYkZpbGVuYW1lKSkgewotICAgICAgICBMT0df
RVJST1IoIkZhaWxlZCB0byBvcGVuIFNRTGl0ZSBkYXRhYmFzZSBhdCBwYXRoICclcyciLCBkYkZp
bGVuYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgIGlmICghbV9zcWxpdGVEQi0+b3BlbihkYXRhYmFz
ZVBhdGgpKSB7CisgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIG9wZW4gU1FMaXRlIGRhdGFi
YXNlIGF0IHBhdGggJyVzJyIsIGRhdGFiYXNlUGF0aC51dGY4KCkuZGF0YSgpKTsKICAgICAgICAg
Y2xvc2VTUUxpdGVEQigpOwogICAgIH0KIApAQCAtMTA0NCw3ICsxMDM1LDcgQEAgSURCRXJyb3Ig
U1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbyhJREJEYXRh
YmFzZUluZm8mIGluZm8KICAgICAgICAgZGF0YWJhc2VJbmZvID0gY3JlYXRlQW5kUG9wdWxhdGVJ
bml0aWFsRGF0YWJhc2VJbmZvKCk7CiAKICAgICBpZiAoIWRhdGFiYXNlSW5mbykgewotICAgICAg
ICBMT0dfRVJST1IoIlVuYWJsZSB0byBlc3RhYmxpc2ggSURCIGRhdGFiYXNlIGF0IHBhdGggJyVz
JyIsIGRiRmlsZW5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIExPR19FUlJPUigiVW5hYmxl
IHRvIGVzdGFibGlzaCBJREIgZGF0YWJhc2UgYXQgcGF0aCAnJXMnIiwgZGF0YWJhc2VQYXRoLnV0
ZjgoKS5kYXRhKCkpOwogICAgICAgICBjbG9zZVNRTGl0ZURCKCk7CiAgICAgICAgIHJldHVybiBJ
REJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBlc3RhYmxpc2ggSURCIGRhdGFiYXNl
IGZpbGUiX3MgfTsKICAgICB9CkBAIC0yNzk4LDcgKzI3ODksNiBAQCB2b2lkIFNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6ZGVsZXRlQmFja2luZ1N0b3JlKCkKIAogICAgIFNRTGl0ZUZpbGVTeXN0ZW06
OmRlbGV0ZURhdGFiYXNlRmlsZShkYXRhYmFzZVBhdGgpOwogICAgIFNRTGl0ZUZpbGVTeXN0ZW06
OmRlbGV0ZUVtcHR5RGF0YWJhc2VEaXJlY3RvcnkobV9kYXRhYmFzZURpcmVjdG9yeSk7Ci0gICAg
U1FMaXRlRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEYXRhYmFzZURpcmVjdG9yeShtX2lkZW50aWZp
ZXIuZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9vdChtX2RhdGFiYXNlUm9vdERpcmVjdG9y
eSkpOwogfQogCiB2b2lkIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5yZWdpc3RlckN1cnNvcihT
UUxpdGVJREJDdXJzb3ImIGN1cnNvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaAppbmRl
eCAyZWZlNmIyYTM0MTk5M2JiMjZmZGY5MWNmZjZlN2RlYThkYmJlZDM2Li43MzFhOWE0MTkzODY1
ZTNjNWYzYzM1ZWQ3NTcxYjEyODJmNzgwOTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9y
ZS5oCkBAIC01MSw5ICs1MSw4IEBAIGNsYXNzIFNRTGl0ZUlEQkN1cnNvcjsKIGNsYXNzIFNRTGl0
ZUlEQkJhY2tpbmdTdG9yZSBmaW5hbCA6IHB1YmxpYyBJREJCYWNraW5nU3RvcmUgewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZShQQUw6OlNlc3Npb25JRCwgY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJiwgY29uc3QgU3Ry
aW5nJiBkYXRhYmFzZVJvb3REaXJlY3RvcnkpOwotICAgIAotICAgIH5TUUxpdGVJREJCYWNraW5n
U3RvcmUoKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTUUxpdGVJREJCYWNraW5nU3RvcmUo
Y29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZURpcmVj
dG9yeSk7CisgICAgV0VCQ09SRV9FWFBPUlQgflNRTGl0ZUlEQkJhY2tpbmdTdG9yZSgpIGZpbmFs
OwogCiAgICAgSURCRXJyb3IgZ2V0T3JFc3RhYmxpc2hEYXRhYmFzZUluZm8oSURCRGF0YWJhc2VJ
bmZvJikgZmluYWw7CiAgICAgdWludDY0X3QgZGF0YWJhc2VWZXJzaW9uKCkgZmluYWw7CkBAIC05
NCwxOCArOTMsMTUgQEAgcHVibGljOgogCiAgICAgSURCRXJyb3IgZ2V0QmxvYlJlY29yZHNGb3JP
YmplY3RTdG9yZVJlY29yZChpbnQ2NF90IG9iamVjdFN0b3JlUmVjb3JkLCBWZWN0b3I8U3RyaW5n
PiYgYmxvYlVSTHMsIFZlY3RvcjxTdHJpbmc+JiBibG9iRmlsZVBhdGhzKTsKIAotICAgIHN0YXRp
YyB1aW50NjRfdCBkYXRhYmFzZXNTaXplRm9yRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgZGlyZWN0
b3J5KTsKLQorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB1aW50NjRfdCBkYXRhYmFzZXNTaXpl
Rm9yRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKICAgICBTdHJpbmcgZGF0YWJh
c2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2RhdGFiYXNlRGlyZWN0b3J5OyB9OwotICAg
IHN0YXRpYyBTdHJpbmcgZnVsbERhdGFiYXNlUGF0aEZvckRpcmVjdG9yeShjb25zdCBTdHJpbmcm
KTsKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiBk
YXRhYmFzZU5hbWVBbmRWZXJzaW9uRnJvbUZpbGUoY29uc3QgU3RyaW5nJik7CisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFN0cmluZyBmdWxsRGF0YWJhc2VQYXRoRm9yRGlyZWN0b3J5KGNvbnN0
IFN0cmluZyYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcgZW5jb2RlRGF0YWJh
c2VOYW1lKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgU3RyaW5nIGRlY29kZURhdGFiYXNlTmFtZShjb25zdCBTdHJpbmcmIGVuY29kZWREYXRh
YmFzZU5hbWUpOwogCi0gICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3QgeyByZXR1
cm4gbV9zZXNzaW9uSUQ7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjpvcHRpb25h
bDxJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiBkYXRhYmFzZU5hbWVBbmRWZXJzaW9uRnJvbUZp
bGUoY29uc3QgU3RyaW5nJik7CiAKIHByaXZhdGU6Ci0gICAgU3RyaW5nIGZpbGVuYW1lRm9yRGF0
YWJhc2VOYW1lKCkgY29uc3Q7Ci0gICAgU3RyaW5nIGZ1bGxEYXRhYmFzZURpcmVjdG9yeVdpdGhV
cGdyYWRlKCk7Ci0KICAgICBJREJFcnJvciBlbnN1cmVWYWxpZFJlY29yZHNUYWJsZSgpOwogICAg
IElEQkVycm9yIGVuc3VyZVZhbGlkSW5kZXhSZWNvcmRzVGFibGUoKTsKICAgICBJREJFcnJvciBl
bnN1cmVWYWxpZEluZGV4UmVjb3Jkc0luZGV4KCk7CkBAIC0yMDYsNyArMjAyLDYgQEAgcHJpdmF0
ZToKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxTUUxpdGVTdGF0ZW1lbnQ+IG1fY2FjaGVkU3RhdGVt
ZW50c1tzdGF0aWNfY2FzdDxpbnQ+KFNRTDo6SW52YWxpZCldOwogCi0gICAgUEFMOjpTZXNzaW9u
SUQgbV9zZXNzaW9uSUQ7CiAgICAgSURCRGF0YWJhc2VJZGVudGlmaWVyIG1faWRlbnRpZmllcjsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8SURCRGF0YWJhc2VJbmZvPiBtX2RhdGFiYXNlSW5mbzsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SURCRGF0YWJhc2VJbmZvPiBtX29yaWdpbmFsRGF0YWJhc2VJbmZv
QmVmb3JlVmVyc2lvbkNoYW5nZTsKQEAgLTIxNiw3ICsyMTEsNiBAQCBwcml2YXRlOgogICAgIEhh
c2hNYXA8SURCUmVzb3VyY2VJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlSURCVHJh
bnNhY3Rpb24+PiBtX3RyYW5zYWN0aW9uczsKICAgICBIYXNoTWFwPElEQlJlc291cmNlSWRlbnRp
ZmllciwgU1FMaXRlSURCQ3Vyc29yKj4gbV9jdXJzb3JzOwogCi0gICAgU3RyaW5nIG1fZGF0YWJh
c2VSb290RGlyZWN0b3J5OwogICAgIFN0cmluZyBtX2RhdGFiYXNlRGlyZWN0b3J5OwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1
ZUlEQkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9VbmlxdWVJREJEYXRhYmFzZS5jcHAKaW5kZXggMmIxZWFkYjllYTVjNDY0ZDAyNzVlZDIyM2Y1
MDAzYjdiZWYxNTczMy4uNWI1MGQyOThjZTNmMmU0YjY2NzJlZTAyZmJlNmY2Y2Q4MmY4NmJlNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1
ZUlEQkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAi
TG9nZ2luZy5oIgogI2luY2x1ZGUgIlN0b3JhZ2VRdW90YU1hbmFnZXIuaCIKICNpbmNsdWRlICJV
bmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJVbmlxdWVJREJEYXRhYmFz
ZU1hbmFnZXIuaCIKICNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtMTM0LDggKzEzNSw4IEBAIHN0YXRpYyBpbmxpbmUgdWludDY0X3QgZXN0aW1hdGVTaXpl
KGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYgaW5mbykKICAgICByZXR1cm4gc2l6ZTsKIH0KIAot
VW5pcXVlSURCRGF0YWJhc2U6OlVuaXF1ZUlEQkRhdGFiYXNlKElEQlNlcnZlciYgc2VydmVyLCBj
b25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImIGlkZW50aWZpZXIpCi0gICAgOiBtX3NlcnZlcihz
ZXJ2ZXIpCitVbmlxdWVJREJEYXRhYmFzZTo6VW5pcXVlSURCRGF0YWJhc2UoVW5pcXVlSURCRGF0
YWJhc2VNYW5hZ2VyJiBtYW5hZ2VyLCBjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImIGlkZW50
aWZpZXIpCisgICAgOiBtX21hbmFnZXIobWFuYWdlcikKICAgICAsIG1faWRlbnRpZmllcihpZGVu
dGlmaWVyKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwpAQCAtMTYzLDYgKzE2NCwx
MSBAQCBjb25zdCBJREJEYXRhYmFzZUluZm8mIFVuaXF1ZUlEQkRhdGFiYXNlOjppbmZvKCkgY29u
c3QKICAgICByZXR1cm4gKm1fZGF0YWJhc2VJbmZvOwogfQogCitVbmlxdWVJREJEYXRhYmFzZU1h
bmFnZXIqIFVuaXF1ZUlEQkRhdGFiYXNlOjptYW5hZ2VyKCkKK3sKKyAgICByZXR1cm4gbV9tYW5h
Z2VyLmdldCgpOworfQorCiB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuRGF0YWJhc2VDb25u
ZWN0aW9uKElEQkNvbm5lY3Rpb25Ub0NsaWVudCYgY29ubmVjdGlvbiwgY29uc3QgSURCUmVxdWVz
dERhdGEmIHJlcXVlc3REYXRhKQogewogICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRh
YmFzZTo6b3BlbkRhdGFiYXNlQ29ubmVjdGlvbiIpOwpAQCAtMTg1LDE3ICsxOTEsNDUgQEAgdm9p
ZCBVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybUN1cnJlbnRPcGVuT3BlcmF0aW9uKCkKICAgICBB
U1NFUlQobV9jdXJyZW50T3BlbkRCUmVxdWVzdCk7CiAgICAgQVNTRVJUKG1fY3VycmVudE9wZW5E
QlJlcXVlc3QtPmlzT3BlblJlcXVlc3QoKSk7CiAKKyAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGNy
ZWF0ZSB0aGUgZmlsZSBzbyBubyBuZWVkIHRvIGRvIHNwYWNlIGNoZWNrLgorICAgIGlmIChtX2Jh
Y2tpbmdTdG9yZSkKKyAgICAgICAgcmV0dXJuIHBlcmZvcm1DdXJyZW50T3Blbk9wZXJhdGlvbkFm
dGVyU3BhY2VDaGVjayh0cnVlKTsKKworICAgIGlmICghbV9tYW5hZ2VyKQorICAgICAgICByZXR1
cm4gcGVyZm9ybUN1cnJlbnRPcGVuT3BlcmF0aW9uQWZ0ZXJTcGFjZUNoZWNrKGZhbHNlKTsKKwor
ICAgIGF1dG8gcmVxdWVzdElkZW50aWZpZXIgPSBtX2N1cnJlbnRPcGVuREJSZXF1ZXN0LT5yZXF1
ZXN0RGF0YSgpLnJlcXVlc3RJZGVudGlmaWVyKCk7CisgICAgaWYgKG1fb3BlbkRCUmVxdWVzdHNG
b3JTcGFjZUNoZWNrLmNvbnRhaW5zKHJlcXVlc3RJZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgbV9vcGVuREJSZXF1ZXN0c0ZvclNwYWNlQ2hlY2suYWRkKHJlcXVlc3RJZGVudGlm
aWVyKTsKKyAgICBtX21hbmFnZXItPnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCks
IGRlZmF1bHRXcml0ZU9wZXJhdGlvbkNvc3QsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAq
dGhpcyB9LCByZXF1ZXN0SWRlbnRpZmllcl0oYm9vbCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICAg
ICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBtX29wZW5E
QlJlcXVlc3RzRm9yU3BhY2VDaGVjay5yZW1vdmUocmVxdWVzdElkZW50aWZpZXIpOworICAgICAg
ICBpZiAobV9jdXJyZW50T3BlbkRCUmVxdWVzdC0+cmVxdWVzdERhdGEoKS5yZXF1ZXN0SWRlbnRp
ZmllcigpICE9IHJlcXVlc3RJZGVudGlmaWVyKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIHBlcmZvcm1DdXJyZW50T3Blbk9wZXJhdGlvbkFmdGVyU3BhY2VDaGVjayhncmFudGVkKTsK
KyAgICB9KTsKK30KKwordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybUN1cnJlbnRPcGVu
T3BlcmF0aW9uQWZ0ZXJTcGFjZUNoZWNrKGJvb2wgaXNHcmFudGVkKQoreworICAgIExPRyhJbmRl
eGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybUN1cnJlbnRPcGVuT3BlcmF0aW9uQWZ0
ZXJTcGFjZVJlcXVlc3QgKCVwKSIsIHRoaXMpOworCiAgICAgSURCRXJyb3IgYmFja2luZ1N0b3Jl
T3BlbkVycm9yOwogICAgIGlmICghbV9iYWNraW5nU3RvcmUpIHsKLSAgICAgICAgLy8gUXVvdGEg
Y2hlY2suCi0gICAgICAgIGF1dG8gZGVjaXNpb24gPSBtX3NlcnZlci5yZXF1ZXN0U3BhY2UobV9p
ZGVudGlmaWVyLm9yaWdpbigpLCBkZWZhdWx0V3JpdGVPcGVyYXRpb25Db3N0KTsKLSAgICAgICAg
aWYgKGRlY2lzaW9uID09IFN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uOjpEZW55KQorICAg
ICAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAgICAgICAgIGJhY2tpbmdTdG9yZU9wZW5FcnJvciA9
IElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKyAgICAgICAgZWxzZSBpZiAoIWlzR3Jh
bnRlZCkKICAgICAgICAgICAgIGJhY2tpbmdTdG9yZU9wZW5FcnJvciA9IElEQkVycm9yIHsgUXVv
dGFFeGNlZWRlZEVycm9yLCBxdW90YUVycm9yTWVzc2FnZU5hbWUoIk9wZW5CYWNraW5nU3RvcmUi
KSB9OwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIG1fYmFja2luZ1N0b3JlID0gbV9zZXJ2
ZXIuY3JlYXRlQmFja2luZ1N0b3JlKG1faWRlbnRpZmllcik7CisgICAgICAgICAgICBtX2JhY2tp
bmdTdG9yZSA9IG1fbWFuYWdlci0+Y3JlYXRlQmFja2luZ1N0b3JlKG1faWRlbnRpZmllcik7CiAg
ICAgICAgICAgICBJREJEYXRhYmFzZUluZm8gZGF0YWJhc2VJbmZvOwogICAgICAgICAgICAgYmFj
a2luZ1N0b3JlT3BlbkVycm9yID0gbV9iYWNraW5nU3RvcmUtPmdldE9yRXN0YWJsaXNoRGF0YWJh
c2VJbmZvKGRhdGFiYXNlSW5mbyk7Ci0gICAgICAgICAgICBpZiAoYmFja2luZ1N0b3JlT3BlbkVy
cm9yLmlzTnVsbCgpKQorICAgICAgICAgICAgaWYgKCFiYWNraW5nU3RvcmVPcGVuRXJyb3IpCiAg
ICAgICAgICAgICAgICAgbV9kYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5m
bz4oZGF0YWJhc2VJbmZvKTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIExP
R19FUlJPUigiRmFpbGVkIHRvIGdldCBkYXRhYmFzZSBpbmZvICclcyciLCBiYWNraW5nU3RvcmVP
cGVuRXJyb3IubWVzc2FnZSgpLnV0ZjgoKS5kYXRhKCkpOwpAQCAtMjA0LDcgKzIzOCw3IEBAIHZv
aWQgVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1DdXJyZW50T3Blbk9wZXJhdGlvbigpCiAgICAg
ICAgIH0KICAgICB9CiAKLSAgICBpZiAoIWJhY2tpbmdTdG9yZU9wZW5FcnJvci5pc051bGwoKSkg
eworICAgIGlmIChiYWNraW5nU3RvcmVPcGVuRXJyb3IpIHsKICAgICAgICAgYXV0byByZXN1bHQg
PSBJREJSZXN1bHREYXRhOjplcnJvcihtX2N1cnJlbnRPcGVuREJSZXF1ZXN0LT5yZXF1ZXN0RGF0
YSgpLnJlcXVlc3RJZGVudGlmaWVyKCksIGJhY2tpbmdTdG9yZU9wZW5FcnJvcik7CiAgICAgICAg
IG1fY3VycmVudE9wZW5EQlJlcXVlc3QtPmNvbm5lY3Rpb24oKS5kaWRPcGVuRGF0YWJhc2UocmVz
dWx0KTsKICAgICAgICAgbV9jdXJyZW50T3BlbkRCUmVxdWVzdCA9IG51bGxwdHI7CkBAIC0yOTQs
NyArMzI4LDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlQmFja2luZ1N0b3JlKCkK
ICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVl
SURCRGF0YWJhc2U6OmRlbGV0ZUJhY2tpbmdTdG9yZSIpOwogICAgIAotICAgIGF1dG8gYmFja2lu
Z1N0b3JlID0gbV9iYWNraW5nU3RvcmUgPyBzdGQ6OmV4Y2hhbmdlKG1fYmFja2luZ1N0b3JlLCBu
dWxscHRyKSA6IG1fc2VydmVyLmNyZWF0ZUJhY2tpbmdTdG9yZShtX2lkZW50aWZpZXIpOworICAg
IGF1dG8gYmFja2luZ1N0b3JlID0gbV9iYWNraW5nU3RvcmUgPyBzdGQ6OmV4Y2hhbmdlKG1fYmFj
a2luZ1N0b3JlLCBudWxscHRyKSA6IG1fbWFuYWdlci0+Y3JlYXRlQmFja2luZ1N0b3JlKG1faWRl
bnRpZmllcik7CiAgICAgdWludDY0X3QgZGVsZXRlZFZlcnNpb24gPSBiYWNraW5nU3RvcmUtPmRh
dGFiYXNlVmVyc2lvbigpOwogICAgIGJhY2tpbmdTdG9yZS0+ZGVsZXRlQmFja2luZ1N0b3JlKCk7
CiAgICAgZGlkRGVsZXRlQmFja2luZ1N0b3JlKGRlbGV0ZWRWZXJzaW9uKTsKQEAgLTU0MiwyMCAr
NTc2LDMyIEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmFkZE9wZW5EYXRhYmFzZUNvbm5lY3Rp
b24oUmVmPFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvCiAgICAgbV9vcGVuRGF0YWJhc2VDb25u
ZWN0aW9ucy5hZGQoYWRvcHRSZWYoY29ubmVjdGlvbi5sZWFrUmVmKCkpKTsKIH0KIAotdm9pZCBV
bmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFu
c2FjdGlvbiYgdHJhbnNhY3Rpb24sIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYgaW5mbywgRXJy
b3JDYWxsYmFjayBjYWxsYmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVj
dFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBjb25zdCBJ
REJPYmplY3RTdG9yZUluZm8mIGluZm8sIEVycm9yQ2FsbGJhY2sgY2FsbGJhY2ssIFNwYWNlQ2hl
Y2tSZXN1bHQgc3BhY2VDaGVja1Jlc3VsdCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgp
KTsKICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0
b3JlIik7CiAKLSAgICBBU1NFUlQobV9iYWNraW5nU3RvcmUpOworICAgIGlmIChzcGFjZUNoZWNr
UmVzdWx0ID09IFNwYWNlQ2hlY2tSZXN1bHQ6OlVua25vd24pIHsKKyAgICAgICAgaWYgKCFtX21h
bmFnZXIpCisgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3Rh
dGVFcnJvciB9KTsKIAotICAgIC8vIFF1b3RhIGNoZWNrLgotICAgIGF1dG8gdGFza1NpemUgPSBk
ZWZhdWx0V3JpdGVPcGVyYXRpb25Db3N0ICsgZXN0aW1hdGVTaXplKGluZm8pOwotICAgIGlmICht
X3NlcnZlci5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCB0YXNrU2l6ZSkgPT0g
U3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb246OkRlbnkpIHsKKyAgICAgICAgYXV0byB0YXNr
U2l6ZSA9IGRlZmF1bHRXcml0ZU9wZXJhdGlvbkNvc3QgKyBlc3RpbWF0ZVNpemUoaW5mbyk7Cisg
ICAgICAgIG1fbWFuYWdlci0+cmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwgdGFz
a1NpemUsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCB3ZWFrVHJhbnNhY3Rp
b24gPSBXZWFrUHRyIHsgdHJhbnNhY3Rpb24gfSwgaW5mbywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKV0oYm9vbCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghd2Vha1Ro
aXMgfHwgIXdlYWtUcmFuc2FjdGlvbikKKyAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2so
SURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkRhdGFiYXNlIG9yIHRyYW5zYWN0aW9uIGlz
IGNsb3NlZCIgfSk7CisgICAgICAgICAgICBjcmVhdGVPYmplY3RTdG9yZSgqd2Vha1RyYW5zYWN0
aW9uLCBpbmZvLCBXVEZNb3ZlKGNhbGxiYWNrKSwgZ3JhbnRlZCA/IFNwYWNlQ2hlY2tSZXN1bHQ6
OlBhc3MgOiBTcGFjZUNoZWNrUmVzdWx0OjpGYWlsKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBpZiAoc3BhY2VDaGVja1Jlc3VsdCAhPSBTcGFjZUNoZWNrUmVz
dWx0OjpQYXNzKSB7CiAgICAgICAgIGNhbGxiYWNrKElEQkVycm9yIHsgUXVvdGFFeGNlZWRlZEVy
cm9yLCBxdW90YUVycm9yTWVzc2FnZU5hbWUoIkNyZWF0ZU9iamVjdFN0b3JlIikgfSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKKyAgICBpZiAoIW1fYmFja2luZ1N0b3JlKQorICAgICAgICBy
ZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkJhY2tpbmcgc3Rv
cmUgaGFzIGNsb3NlZCIgfSk7CisKICAgICBhdXRvIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPmNy
ZWF0ZU9iamVjdFN0b3JlKHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCksIGluZm8pOwog
ICAgIGlmIChlcnJvci5pc051bGwoKSkKICAgICAgICAgbV9kYXRhYmFzZUluZm8tPmFkZEV4aXN0
aW5nT2JqZWN0U3RvcmUoaW5mbyk7CkBAIC01NjMsMTggKzYwOSwzNCBAQCB2b2lkIFVuaXF1ZUlE
QkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZShVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9u
JiB0cmFuc2FjdAogICAgIGNhbGxiYWNrKGVycm9yKTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRh
YmFzZTo6ZGVsZXRlT2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJh
bnNhY3Rpb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lLCBFcnJvckNhbGxiYWNrIGNh
bGxiYWNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlT2JqZWN0U3RvcmUoVW5pcXVl
SURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0
U3RvcmVOYW1lLCBFcnJvckNhbGxiYWNrIGNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0IHNwYWNl
Q2hlY2tSZXN1bHQpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKElu
ZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVPYmplY3RTdG9yZSIpOwogCisgICAg
aWYgKHNwYWNlQ2hlY2tSZXN1bHQgPT0gU3BhY2VDaGVja1Jlc3VsdDo6VW5rbm93bikgeworICAg
ICAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJv
ciB7IEludmFsaWRTdGF0ZUVycm9yIH0pOworCisgICAgICAgIG1fbWFuYWdlci0+cmVxdWVzdFNw
YWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwgMCwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7
ICp0aGlzIH0sIHdlYWtUcmFuc2FjdGlvbiA9IFdlYWtQdHIgeyB0cmFuc2FjdGlvbiB9LCBvYmpl
Y3RTdG9yZU5hbWUsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgZ3JhbnRlZCkg
bXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICF3ZWFrVHJhbnNhY3Rpb24p
CisgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRl
RXJyb3IsICJEYXRhYmFzZSBvciB0cmFuc2FjdGlvbiBpcyBjbG9zZWQiIH0pOworCisgICAgICAg
ICAgICBkZWxldGVPYmplY3RTdG9yZSgqd2Vha1RyYW5zYWN0aW9uLCBvYmplY3RTdG9yZU5hbWUs
IFdURk1vdmUoY2FsbGJhY2spLCBncmFudGVkID8gU3BhY2VDaGVja1Jlc3VsdDo6UGFzcyA6IFNw
YWNlQ2hlY2tSZXN1bHQ6OkZhaWwpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIEFTU0VSVChzcGFjZUNoZWNrUmVzdWx0ID09IFNwYWNlQ2hlY2tSZXN1bHQ6OlBh
c3MpOwogICAgIGF1dG8qIGluZm8gPSBtX2RhdGFiYXNlSW5mby0+aW5mb0ZvckV4aXN0aW5nT2Jq
ZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lKTsKICAgICBpZiAoIWluZm8pIHsKICAgICAgICAgY2Fs
bGJhY2soSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIGRlbGV0ZSBub24tZXhp
c3RhbnQgb2JqZWN0IHN0b3JlIl9zIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
QVNTRVJUKG1fYmFja2luZ1N0b3JlKTsKKyAgICBpZiAoIW1fYmFja2luZ1N0b3JlKQorICAgICAg
ICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkJhY2tpbmcg
c3RvcmUgaXMgY2xvc2VkIiB9KTsKKwogICAgIGF1dG8gZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+
ZGVsZXRlT2JqZWN0U3RvcmUodHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSwgaW5mby0+
aWRlbnRpZmllcigpKTsKICAgICBpZiAoZXJyb3IuaXNOdWxsKCkpCiAgICAgICAgIG1fZGF0YWJh
c2VJbmZvLT5kZWxldGVPYmplY3RTdG9yZShpbmZvLT5pZGVudGlmaWVyKCkpOwpAQCAtNTgyLDE0
ICs2NDQsMjYgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlT2JqZWN0U3RvcmUoVW5p
cXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3QKICAgICBjYWxsYmFjayhlcnJvcik7
CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnJlbmFtZU9iamVjdFN0b3JlKFVuaXF1ZUlE
QkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCB1aW50NjRfdCBvYmplY3RTdG9yZUlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSwgRXJyb3JDYWxsYmFjayBjYWxsYmFjaykK
K3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnJlbmFtZU9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFi
YXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSwgRXJyb3JDYWxsYmFjayBjYWxsYmFjaywgU3BhY2VD
aGVja1Jlc3VsdCBzcGFjZUNoZWNrUmVzdWx0KQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFk
KCkpOwogICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6cmVuYW1lT2JqZWN0
U3RvcmUiKTsKIAotICAgIC8vIFF1b3RhIGNoZWNrLgotICAgIGF1dG8gdGFza1NpemUgPSBkZWZh
dWx0V3JpdGVPcGVyYXRpb25Db3N0ICsgbmV3TmFtZS5zaXplSW5CeXRlcygpOwotICAgIGlmICht
X3NlcnZlci5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCB0YXNrU2l6ZSkgPT0g
U3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb246OkRlbnkpIHsKKyAgICBpZiAoc3BhY2VDaGVj
a1Jlc3VsdCA9PSBTcGFjZUNoZWNrUmVzdWx0OjpVbmtub3duKSB7CisgICAgICAgIGlmICghbV9t
YW5hZ2VyKQorICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0
YXRlRXJyb3IgfSk7CisKKyAgICAgICAgYXV0byB0YXNrU2l6ZSA9IGRlZmF1bHRXcml0ZU9wZXJh
dGlvbkNvc3QgKyBuZXdOYW1lLnNpemVJbkJ5dGVzKCk7CisgICAgICAgIG1fbWFuYWdlci0+cmVx
dWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwgdGFza1NpemUsIFt0aGlzLCB3ZWFrVGhp
cyA9IFdlYWtQdHIgeyAqdGhpcyB9LCB3ZWFrVHJhbnNhY3Rpb24gPSBXZWFrUHRyIHsgdHJhbnNh
Y3Rpb24gfSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBuZXdOYW1lLCBjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spXShib29sIGdyYW50ZWQpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCF3
ZWFrVGhpcyB8fCAhd2Vha1RyYW5zYWN0aW9uKQorICAgICAgICAgICAgICAgIHJldHVybiBjYWxs
YmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiRGF0YWJhc2Ugb3IgdHJhbnNhY3Rp
b24gaXMgY2xvc2VkIiB9KTsKKworICAgICAgICAgICAgcmVuYW1lT2JqZWN0U3RvcmUoKndlYWtU
cmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBuZXdOYW1lLCBXVEZNb3ZlKGNhbGxi
YWNrKSwgZ3JhbnRlZCA/IFNwYWNlQ2hlY2tSZXN1bHQ6OlBhc3MgOiBTcGFjZUNoZWNrUmVzdWx0
OjpGYWlsKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAo
c3BhY2VDaGVja1Jlc3VsdCAhPSBTcGFjZUNoZWNrUmVzdWx0OjpQYXNzKSB7CiAgICAgICAgIGNh
bGxiYWNrKElEQkVycm9yKFF1b3RhRXhjZWVkZWRFcnJvciwgcXVvdGFFcnJvck1lc3NhZ2VOYW1l
KCJSZW5hbWVPYmplY3RTdG9yZSIpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC02MDAs
NyArNjc0LDkgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cmVuYW1lT2JqZWN0U3RvcmUoVW5p
cXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3QKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CisgICAgaWYgKCFtX2JhY2tpbmdTdG9y
ZSkKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3Is
ICJCYWNraW5nIHN0b3JlIGlzIGNsb3NlZCIgfSk7CisKICAgICBhdXRvIGVycm9yID0gbV9iYWNr
aW5nU3RvcmUtPnJlbmFtZU9iamVjdFN0b3JlKHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVy
KCksIG9iamVjdFN0b3JlSWRlbnRpZmllciwgbmV3TmFtZSk7CiAgICAgaWYgKGVycm9yLmlzTnVs
bCgpKQogICAgICAgICBtX2RhdGFiYXNlSW5mby0+cmVuYW1lT2JqZWN0U3RvcmUob2JqZWN0U3Rv
cmVJZGVudGlmaWVyLCBuZXdOYW1lKTsKQEAgLTYwOCwzMCArNjg0LDU5IEBAIHZvaWQgVW5pcXVl
SURCRGF0YWJhc2U6OnJlbmFtZU9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rp
b24mIHRyYW5zYWN0CiAgICAgY2FsbGJhY2soZXJyb3IpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRh
dGFiYXNlOjpjbGVhck9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRy
YW5zYWN0aW9uLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIEVycm9yQ2FsbGJhY2sg
Y2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjbGVhck9iamVjdFN0b3JlKFVuaXF1
ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCB1aW50NjRfdCBvYmplY3RTdG9y
ZUlkZW50aWZpZXIsIEVycm9yQ2FsbGJhY2sgY2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgc3Bh
Y2VDaGVja1Jlc3VsdCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMT0co
SW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6OmNsZWFyT2JqZWN0U3RvcmUiKTsKIAotICAg
IEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7Ci0gICAgYXV0byBlcnJvciA9IG1fYmFja2luZ1N0b3Jl
LT5jbGVhck9iamVjdFN0b3JlKHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCksIG9iamVj
dFN0b3JlSWRlbnRpZmllcik7CisgICAgaWYgKHNwYWNlQ2hlY2tSZXN1bHQgPT0gU3BhY2VDaGVj
a1Jlc3VsdDo6VW5rbm93bikgeworICAgICAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAgICAgICAg
IHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yIH0pOworCisgICAg
ICAgIG1fbWFuYWdlci0+cmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwgMCwgW3Ro
aXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHdlYWtUcmFuc2FjdGlvbiA9IFdlYWtQ
dHIgeyB0cmFuc2FjdGlvbiB9LCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayldKGJvb2wgZ3JhbnRlZCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAo
IXdlYWtUaGlzIHx8ICF3ZWFrVHJhbnNhY3Rpb24pCisgICAgICAgICAgICAgICAgcmV0dXJuIGNh
bGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJEYXRhYmFzZSBvciB0cmFuc2Fj
dGlvbiBpcyBjbG9zZWQiIH0pOworCisgICAgICAgICAgICBjbGVhck9iamVjdFN0b3JlKCp3ZWFr
VHJhbnNhY3Rpb24sIG9iamVjdFN0b3JlSWRlbnRpZmllciwgV1RGTW92ZShjYWxsYmFjayksIGdy
YW50ZWQgPyBTcGFjZUNoZWNrUmVzdWx0OjpQYXNzIDogU3BhY2VDaGVja1Jlc3VsdDo6RmFpbCk7
CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKHNwYWNl
Q2hlY2tSZXN1bHQgPT0gU3BhY2VDaGVja1Jlc3VsdDo6UGFzcyk7CisgICAgaWYgKCFtX2JhY2tp
bmdTdG9yZSkKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRl
RXJyb3IsICJCYWNraW5nIHN0b3JlIGlzIGNsb3NlZCIgfSk7CiAKKyAgICBhdXRvIGVycm9yID0g
bV9iYWNraW5nU3RvcmUtPmNsZWFyT2JqZWN0U3RvcmUodHJhbnNhY3Rpb24uaW5mbygpLmlkZW50
aWZpZXIoKSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKICAgICBjYWxsYmFjayhlcnJvcik7CiB9
CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZUluZGV4KFVuaXF1ZUlEQkRhdGFiYXNl
VHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBjb25zdCBJREJJbmRleEluZm8mIGluZm8sIEVycm9y
Q2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVJbmRleChV
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgY29uc3QgSURCSW5kZXhJ
bmZvJiBpbmZvLCBFcnJvckNhbGxiYWNrIGNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0IHNwYWNl
Q2hlY2tSZXN1bHQpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKElu
ZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVJbmRleCIpOwogCi0gICAgLy8gUXVv
dGEgY2hlY2suCi0gICAgYXV0byB0YXNrU2l6ZSA9IGRlZmF1bHRXcml0ZU9wZXJhdGlvbkNvc3Qg
KyBlc3RpbWF0ZVNpemUoaW5mbyk7Ci0gICAgaWYgKG1fc2VydmVyLnJlcXVlc3RTcGFjZShtX2lk
ZW50aWZpZXIub3JpZ2luKCksIHRhc2tTaXplKSA9PSBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNp
c2lvbjo6RGVueSkgeworICAgIGlmIChzcGFjZUNoZWNrUmVzdWx0ID09IFNwYWNlQ2hlY2tSZXN1
bHQ6OlVua25vd24pIHsKKyAgICAgICAgaWYgKCFtX21hbmFnZXIpCisgICAgICAgICAgICByZXR1
cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciB9KTsKKworICAgICAgICBh
dXRvIHRhc2tTaXplID0gZGVmYXVsdFdyaXRlT3BlcmF0aW9uQ29zdCArIGVzdGltYXRlU2l6ZShp
bmZvKTsKKyAgICAgICAgbV9tYW5hZ2VyLT5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdp
bigpLCB0YXNrU2l6ZSwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHdlYWtU
cmFuc2FjdGlvbiA9IFdlYWtQdHIgeyB0cmFuc2FjdGlvbiB9LCBpbmZvLCBjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spXShib29sIGdyYW50ZWQpIG11dGFibGUgeworICAgICAgICAgICAgaWYg
KCF3ZWFrVGhpcyB8fCAhd2Vha1RyYW5zYWN0aW9uKQorICAgICAgICAgICAgICAgIHJldHVybiBj
YWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiRGF0YWJhc2Ugb3IgdHJhbnNh
Y3Rpb24gaXMgY2xvc2VkIiB9KTsKKworICAgICAgICAgICAgY3JlYXRlSW5kZXgoKndlYWtUcmFu
c2FjdGlvbiwgaW5mbywgV1RGTW92ZShjYWxsYmFjayksIGdyYW50ZWQgPyBTcGFjZUNoZWNrUmVz
dWx0OjpQYXNzIDogU3BhY2VDaGVja1Jlc3VsdDo6RmFpbCk7CisgICAgICAgIH0pOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgaWYgKHNwYWNlQ2hlY2tSZXN1bHQgIT0gU3BhY2VDaGVj
a1Jlc3VsdDo6UGFzcykgewogICAgICAgICBjYWxsYmFjayhJREJFcnJvciB7IFF1b3RhRXhjZWVk
ZWRFcnJvciwgcXVvdGFFcnJvck1lc3NhZ2VOYW1lKCJDcmVhdGVJbmRleCIpIH0pOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgQVNTRVJUKG1fYmFja2luZ1N0b3JlKTsKKyAgICBpZiAo
IW1fYmFja2luZ1N0b3JlKQorICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZh
bGlkU3RhdGVFcnJvciwgIkJhY2tpbmcgc3RvcmUgaXMgY2xvc2VkIiB9KTsKKwogICAgIGF1dG8g
ZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+Y3JlYXRlSW5kZXgodHJhbnNhY3Rpb24uaW5mbygpLmlk
ZW50aWZpZXIoKSwgaW5mbyk7CiAgICAgaWYgKGVycm9yLmlzTnVsbCgpKSB7CiAgICAgICAgIEFT
U0VSVChtX2RhdGFiYXNlSW5mbyk7CkBAIC02NDQsMTEgKzc0OSwyOCBAQCB2b2lkIFVuaXF1ZUlE
QkRhdGFiYXNlOjpjcmVhdGVJbmRleChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFu
c2FjdGlvbiwgYwogICAgIGNhbGxiYWNrKGVycm9yKTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRh
YmFzZTo6ZGVsZXRlSW5kZXgoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rp
b24sIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpbmRleE5h
bWUsIEVycm9yQ2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxl
dGVJbmRleChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgdWludDY0
X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGluZGV4TmFtZSwgRXJyb3JD
YWxsYmFjayBjYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCBzcGFjZUNoZWNrUmVzdWx0KQogewog
ICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJ
REJEYXRhYmFzZTo6ZGVsZXRlSW5kZXgiKTsKIAorICAgIGlmIChzcGFjZUNoZWNrUmVzdWx0ID09
IFNwYWNlQ2hlY2tSZXN1bHQ6OlVua25vd24pIHsKKyAgICAgICAgaWYgKCFtX21hbmFnZXIpCisg
ICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciB9
KTsKKworICAgICAgICBtX21hbmFnZXItPnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2lu
KCksIDAsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCB3ZWFrVHJhbnNhY3Rp
b24gPSBXZWFrUHRyIHsgdHJhbnNhY3Rpb24gfSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRl
eE5hbWUsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgZ3JhbnRlZCkgbXV0YWJs
ZSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICF3ZWFrVHJhbnNhY3Rpb24pCisgICAg
ICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3Is
ICJEYXRhYmFzZSBvciB0cmFuc2FjdGlvbiBpcyBjbG9zZWQiIH0pOworCisgICAgICAgICAgICBk
ZWxldGVJbmRleCgqd2Vha1RyYW5zYWN0aW9uLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4
TmFtZSwgV1RGTW92ZShjYWxsYmFjayksIGdyYW50ZWQgPyBTcGFjZUNoZWNrUmVzdWx0OjpQYXNz
IDogU3BhY2VDaGVja1Jlc3VsdDo6RmFpbCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgQVNTRVJUKHNwYWNlQ2hlY2tSZXN1bHQgPT0gU3BhY2VDaGVja1Jlc3Vs
dDo6UGFzcyk7CisgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkKKyAgICAgICAgcmV0dXJuIGNhbGxi
YWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJCYWNraW5nIHN0b3JlIGlzIGNsb3Nl
ZCIgfSk7CisKICAgICBhdXRvKiBvYmplY3RTdG9yZUluZm8gPSBtX2RhdGFiYXNlSW5mby0+aW5m
b0ZvckV4aXN0aW5nT2JqZWN0U3RvcmUob2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKICAgICBpZiAo
IW9iamVjdFN0b3JlSW5mbykgewogICAgICAgICBjYWxsYmFjayhJREJFcnJvciB7IFVua25vd25F
cnJvciwgIkF0dGVtcHQgdG8gZGVsZXRlIGluZGV4IGZyb20gbm9uLWV4aXN0YW50IG9iamVjdCBz
dG9yZSJfcyB9KTsKQEAgLTY2MCw5ICs3ODIsOCBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpk
ZWxldGVJbmRleChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgdQog
ICAgICAgICBjYWxsYmFjayhJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gZGVs
ZXRlIG5vbi1leGlzdGFudCBpbmRleCJfcyB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAg
ICBhdXRvIGluZGV4SWRlbnRpZmllciA9IGluZGV4SW5mby0+aWRlbnRpZmllcigpOwogCi0gICAg
QVNTRVJUKG1fYmFja2luZ1N0b3JlKTsKKyAgICBhdXRvIGluZGV4SWRlbnRpZmllciA9IGluZGV4
SW5mby0+aWRlbnRpZmllcigpOwogICAgIGF1dG8gZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+ZGVs
ZXRlSW5kZXgodHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSwgb2JqZWN0U3RvcmVJZGVu
dGlmaWVyLCBpbmRleElkZW50aWZpZXIpOwogICAgIGlmIChlcnJvci5pc051bGwoKSkKICAgICAg
ICAgb2JqZWN0U3RvcmVJbmZvLT5kZWxldGVJbmRleChpbmRleElkZW50aWZpZXIpOwpAQCAtNjcw
LDE4ICs3OTEsMzMgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlSW5kZXgoVW5pcXVl
SURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIHUKICAgICBjYWxsYmFjayhlcnJv
cik7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnJlbmFtZUluZGV4KFVuaXF1ZUlEQkRh
dGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50
aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lLCBF
cnJvckNhbGxiYWNrIGNhbGxiYWNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cmVuYW1lSW5k
ZXgoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIHVpbnQ2NF90IG9i
amVjdFN0b3JlSWRlbnRpZmllciwgdWludDY0X3QgaW5kZXhJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIG5ld05hbWUsIEVycm9yQ2FsbGJhY2sgY2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgc3Bh
Y2VDaGVja1Jlc3VsdCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMT0co
SW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6OnJlbmFtZUluZGV4Iik7CiAKLSAgICAvLyBR
dW90YSBjaGVjay4KLSAgICBhdXRvIHRhc2tTaXplID0gZGVmYXVsdFdyaXRlT3BlcmF0aW9uQ29z
dCArIG5ld05hbWUuc2l6ZUluQnl0ZXMoKTsKLSAgICBpZiAobV9zZXJ2ZXIucmVxdWVzdFNwYWNl
KG1faWRlbnRpZmllci5vcmlnaW4oKSwgdGFza1NpemUpID09IFN0b3JhZ2VRdW90YU1hbmFnZXI6
OkRlY2lzaW9uOjpEZW55KSB7CisgICAgaWYgKHNwYWNlQ2hlY2tSZXN1bHQgPT0gU3BhY2VDaGVj
a1Jlc3VsdDo6VW5rbm93bikgeworICAgICAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAgICAgICAg
IHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yIH0pOworCisgICAg
ICAgIGF1dG8gdGFza1NpemUgPSBkZWZhdWx0V3JpdGVPcGVyYXRpb25Db3N0ICsgbmV3TmFtZS5z
aXplSW5CeXRlcygpOworICAgICAgICBtX21hbmFnZXItPnJlcXVlc3RTcGFjZShtX2lkZW50aWZp
ZXIub3JpZ2luKCksIHRhc2tTaXplLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMg
fSwgd2Vha1RyYW5zYWN0aW9uID0gV2Vha1B0ciB7IHRyYW5zYWN0aW9uIH0sIG9iamVjdFN0b3Jl
SWRlbnRpZmllciwgaW5kZXhJZGVudGlmaWVyLCBuZXdOYW1lLCBjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spXShib29sIGdyYW50ZWQpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCF3ZWFr
VGhpcyB8fCAhd2Vha1RyYW5zYWN0aW9uKQorICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFj
ayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiRGF0YWJhc2Ugb3IgdHJhbnNhY3Rpb24g
aXMgY2xvc2VkIiB9KTsKKworICAgICAgICAgICAgcmVuYW1lSW5kZXgoKndlYWtUcmFuc2FjdGlv
biwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleElkZW50aWZpZXIsIG5ld05hbWUsIFdURk1v
dmUoY2FsbGJhY2spLCBncmFudGVkID8gU3BhY2VDaGVja1Jlc3VsdDo6UGFzcyA6IFNwYWNlQ2hl
Y2tSZXN1bHQ6OkZhaWwpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGlmIChzcGFjZUNoZWNrUmVzdWx0ICE9IFNwYWNlQ2hlY2tSZXN1bHQ6OlBhc3MpIHsKICAg
ICAgICAgY2FsbGJhY2soSURCRXJyb3IgeyBRdW90YUV4Y2VlZGVkRXJyb3IsIHF1b3RhRXJyb3JN
ZXNzYWdlTmFtZSgiUmVuYW1lSW5kZXgiKSB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAor
ICAgIGlmICghbV9iYWNraW5nU3RvcmUpCisgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJv
ciB7IEludmFsaWRTdGF0ZUVycm9yLCAiQmFja2luZyBzdG9yZSBpcyBjbG9zZWQiIH0pOworCiAg
ICAgYXV0byogb2JqZWN0U3RvcmVJbmZvID0gbV9kYXRhYmFzZUluZm8tPmluZm9Gb3JFeGlzdGlu
Z09iamVjdFN0b3JlKG9iamVjdFN0b3JlSWRlbnRpZmllcik7CiAgICAgaWYgKCFvYmplY3RTdG9y
ZUluZm8pIHsKICAgICAgICAgY2FsbGJhY2soSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRl
bXB0IHRvIHJlbmFtZSBpbmRleCBpbiBub24tZXhpc3RhbnQgb2JqZWN0IHN0b3JlIl9zIH0pOwpA
QCAtNjk0LDcgKzgzMCw2IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnJlbmFtZUluZGV4KFVu
aXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCB1CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBBU1NFUlQobV9iYWNraW5nU3RvcmUpOwogICAgIGF1dG8gZXJyb3Ig
PSBtX2JhY2tpbmdTdG9yZS0+cmVuYW1lSW5kZXgodHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZp
ZXIoKSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleElkZW50aWZpZXIsIG5ld05hbWUpOwog
ICAgIGlmIChlcnJvci5pc051bGwoKSkKICAgICAgICAgaW5kZXhJbmZvLT5yZW5hbWUobmV3TmFt
ZSk7CkBAIC03MDksMTcgKzg0NCwxOSBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwdXRPckFk
ZChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQktleQogCiAgICAg
QVNTRVJUKG1fZGF0YWJhc2VJbmZvKTsKIAotICAgIElEQktleURhdGEgdXNlZEtleTsKLSAgICBJ
REJFcnJvciBlcnJvcjsKKyAgICBpZiAoIW1fYmFja2luZ1N0b3JlKQorICAgICAgICByZXR1cm4g
Y2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkJhY2tpbmcgc3RvcmUgaXMg
Y2xvc2VkIiB9LCBrZXlEYXRhKTsKIAotICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CiAgICAg
YXV0byBvYmplY3RTdG9yZUlkZW50aWZpZXIgPSByZXF1ZXN0RGF0YS5vYmplY3RTdG9yZUlkZW50
aWZpZXIoKTsKICAgICBhdXRvKiBvYmplY3RTdG9yZUluZm8gPSBtX2JhY2tpbmdTdG9yZS0+aW5m
b0Zvck9iamVjdFN0b3JlKG9iamVjdFN0b3JlSWRlbnRpZmllcik7Ci0gICAgaWYgKCFvYmplY3RT
dG9yZUluZm8pIHsKLSAgICAgICAgY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJv
ciwgIk9iamVjdCBzdG9yZSBjYW5ub3QgYmUgZm91bmQgaW4gdGhlIGJhY2tpbmcgc3RvcmUiX3Mg
fSwgdXNlZEtleSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKCFvYmplY3RTdG9y
ZUluZm8pCisgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVy
cm9yLCAiT2JqZWN0IHN0b3JlIGNhbm5vdCBiZSBmb3VuZCBpbiB0aGUgYmFja2luZyBzdG9yZSJf
cyB9LCBrZXlEYXRhKTsKKworICAgIGlmICghbV9tYW5hZ2VyKQorICAgICAgICByZXR1cm4gY2Fs
bGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciB9LCBrZXlEYXRhKTsKIAorICAgIElE
QktleURhdGEgdXNlZEtleTsKKyAgICBJREJFcnJvciBlcnJvcjsKICAgICBib29sIHVzZWRLZXlJ
c0dlbmVyYXRlZCA9IGZhbHNlOwogICAgIHVpbnQ2NF90IGtleU51bWJlcjsKICAgICBhdXRvIHRy
YW5zYWN0aW9uSWRlbnRpZmllciA9IHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigp
OwpAQCAtNzMwLDc2ICs4NjcsMTA1IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnB1dE9yQWRk
KGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5CiAKICAgICBp
ZiAob2JqZWN0U3RvcmVJbmZvLT5hdXRvSW5jcmVtZW50KCkgJiYgIWtleURhdGEuaXNWYWxpZCgp
KSB7CiAgICAgICAgIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPmdlbmVyYXRlS2V5TnVtYmVyKHRy
YW5zYWN0aW9uSWRlbnRpZmllciwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBrZXlOdW1iZXIpOwot
ICAgICAgICBpZiAoIWVycm9yLmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhlcnJv
ciwgdXNlZEtleSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAgaWYg
KCFlcnJvci5pc051bGwoKSkKKyAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhlcnJvciwgdXNl
ZEtleSk7CisKICAgICAgICAgdXNlZEtleS5zZXROdW1iZXJWYWx1ZShrZXlOdW1iZXIpOwogICAg
ICAgICB1c2VkS2V5SXNHZW5lcmF0ZWQgPSB0cnVlOwogICAgIH0gZWxzZQogICAgICAgICB1c2Vk
S2V5ID0ga2V5RGF0YTsKIAotICAgIC8vIEdlbmVyYXRlIGluZGV4IGtleXMgdXAgZnJvbnQgZm9y
IG1vcmUgYWNjdXJhdGUgcXVvdGEgY2hlY2suCi0gICAgSW5kZXhJRFRvSW5kZXhLZXlNYXAgaW5k
ZXhLZXlzOwotICAgIGNhbGxPbklEQlNlcmlhbGl6YXRpb25UaHJlYWRBbmRXYWl0KFtvYmplY3RT
dG9yZUluZm8gPSBvYmplY3RTdG9yZUluZm8tPmlzb2xhdGVkQ29weSgpLCBrZXkgPSB1c2VkS2V5
Lmlzb2xhdGVkQ29weSgpLCB2YWx1ZSA9IHZhbHVlLmlzb2xhdGVkQ29weSgpLCAmaW5kZXhLZXlz
XShhdXRvJiBnbG9iYWxPYmplY3QpIHsKLSAgICAgICAgaW5kZXhLZXlzID0gZ2VuZXJhdGVJbmRl
eEtleU1hcEZvclZhbHVlKGdsb2JhbE9iamVjdCwgb2JqZWN0U3RvcmVJbmZvLCBrZXksIHZhbHVl
KTsKLSAgICB9KTsKLQogICAgIGlmIChvdmVyd3JpdGVNb2RlID09IEluZGV4ZWREQjo6T2JqZWN0
U3RvcmVPdmVyd3JpdGVNb2RlOjpOb092ZXJ3cml0ZSkgewogICAgICAgICBib29sIGtleUV4aXN0
czsKICAgICAgICAgZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+a2V5RXhpc3RzSW5PYmplY3RTdG9y
ZSh0cmFuc2FjdGlvbklkZW50aWZpZXIsIG9iamVjdFN0b3JlSWRlbnRpZmllciwgdXNlZEtleSwg
a2V5RXhpc3RzKTsKLSAgICAgICAgaWYgKGVycm9yLmlzTnVsbCgpICYmIGtleUV4aXN0cykKKyAg
ICAgICAgaWYgKCFlcnJvciAmJiBrZXlFeGlzdHMpCiAgICAgICAgICAgICBlcnJvciA9IElEQkVy
cm9yIHsgQ29uc3RyYWludEVycm9yLCAiS2V5IGFscmVhZHkgZXhpc3RzIGluIHRoZSBvYmplY3Qg
c3RvcmUiX3MgfTsKIAotICAgICAgICBpZiAoIWVycm9yLmlzTnVsbCgpKSB7Ci0gICAgICAgICAg
ICBjYWxsYmFjayhlcnJvciwgdXNlZEtleSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KKyAgICAgICAgaWYgKCEhZXJyb3IpCisgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soZXJy
b3IsIHVzZWRLZXkpOwogICAgIH0KIAotICAgIC8vIFF1b3RhIGNoZWNrLgorICAgIC8vIEdlbmVy
YXRlIGluZGV4IGtleXMgdXAgZnJvbnQgZm9yIG1vcmUgYWNjdXJhdGUgcXVvdGEgY2hlY2suCisg
ICAgSW5kZXhJRFRvSW5kZXhLZXlNYXAgaW5kZXhLZXlzOworICAgIGNhbGxPbklEQlNlcmlhbGl6
YXRpb25UaHJlYWRBbmRXYWl0KFtvYmplY3RTdG9yZUluZm8gPSBvYmplY3RTdG9yZUluZm8tPmlz
b2xhdGVkQ29weSgpLCBrZXkgPSB1c2VkS2V5Lmlzb2xhdGVkQ29weSgpLCB2YWx1ZSA9IHZhbHVl
Lmlzb2xhdGVkQ29weSgpLCAmaW5kZXhLZXlzXShhdXRvJiBnbG9iYWxPYmplY3QpIHsKKyAgICAg
ICAgaW5kZXhLZXlzID0gZ2VuZXJhdGVJbmRleEtleU1hcEZvclZhbHVlKGdsb2JhbE9iamVjdCwg
b2JqZWN0U3RvcmVJbmZvLCBrZXksIHZhbHVlKTsKKyAgICB9KTsKKworICAgIGdlbmVyYXRlZEtl
eVJlc2V0dGVyLnJlbGVhc2UoKTsKICAgICBhdXRvIGtleVNpemUgPSBlc3RpbWF0ZVNpemUodXNl
ZEtleSk7CiAgICAgYXV0byB2YWx1ZVNpemUgPSBlc3RpbWF0ZVNpemUodmFsdWUpOwogICAgIGF1
dG8gaW5kZXhTaXplID0gZXN0aW1hdGVTaXplKCpvYmplY3RTdG9yZUluZm8sIGluZGV4S2V5cywg
a2V5U2l6ZSk7CiAgICAgYXV0byB0YXNrU2l6ZSA9IGRlZmF1bHRXcml0ZU9wZXJhdGlvbkNvc3Qg
KyBrZXlTaXplICsgdmFsdWVTaXplICsgaW5kZXhTaXplOwogCiAgICAgTE9HKEluZGV4ZWREQiwg
IlVuaXF1ZUlEQkRhdGFiYXNlOjpwdXRPckFkZCBxdW90YSBjaGVjayB3aXRoIHRhc2sgc2l6ZTog
JSIgUFJJdTY0ICIga2V5IHNpemU6ICUiIFBSSXU2NCAiIHZhbHVlIHNpemU6ICUiIFBSSXU2NCAi
IGluZGV4IHNpemU6ICUiIFBSSXU2NCwgdGFza1NpemUsIGtleVNpemUsIHZhbHVlU2l6ZSwgaW5k
ZXhTaXplKTsKKyAgICBtX21hbmFnZXItPnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2lu
KCksIHRhc2tTaXplLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgcmVxdWVz
dERhdGEsIHVzZWRLZXksIHZhbHVlLCBvdmVyd3JpdGVNb2RlLCBjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spLCB1c2VkS2V5SXNHZW5lcmF0ZWQsIGluZGV4S2V5cywgb2JqZWN0U3RvcmVJbmZv
ID0gKm9iamVjdFN0b3JlSW5mb10oYm9vbCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAgaWYg
KCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFs
aWRTdGF0ZUVycm9yLCAiRGF0YWJhc2UgaXMgY2xvc2VkIiB9LCB1c2VkS2V5KTsKIAotICAgIGlm
IChtX3NlcnZlci5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCB0YXNrU2l6ZSkg
PT0gU3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb246OkRlbnkpIHsKLSAgICAgICAgY2FsbGJh
Y2soSURCRXJyb3IgeyBRdW90YUV4Y2VlZGVkRXJyb3IsIHF1b3RhRXJyb3JNZXNzYWdlTmFtZSgi
UHV0T3JBZGQiKSB9LCB1c2VkS2V5KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICAgICAg
cHV0T3JBZGRBZnRlclNwYWNlQ2hlY2socmVxdWVzdERhdGEsIHVzZWRLZXksIHZhbHVlLCBvdmVy
d3JpdGVNb2RlLCBXVEZNb3ZlKGNhbGxiYWNrKSwgdXNlZEtleUlzR2VuZXJhdGVkLCBpbmRleEtl
eXMsIG9iamVjdFN0b3JlSW5mbywgZ3JhbnRlZCA/IFNwYWNlQ2hlY2tSZXN1bHQ6OlBhc3MgOiBT
cGFjZUNoZWNrUmVzdWx0OjpGYWlsKTsKKyAgICB9KTsKK30KKwordm9pZCBVbmlxdWVJREJEYXRh
YmFzZTo6cHV0T3JBZGRBZnRlclNwYWNlQ2hlY2soY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVl
c3REYXRhLCBjb25zdCBJREJLZXlEYXRhJiBrZXlEYXRhLCBjb25zdCBJREJWYWx1ZSYgdmFsdWUs
IEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlIG92ZXJ3cml0ZU1vZGUsIEtleURh
dGFDYWxsYmFjayBjYWxsYmFjaywgYm9vbCBpc0tleUdlbmVyYXRlZCwgY29uc3QgSW5kZXhJRFRv
SW5kZXhLZXlNYXAmIGluZGV4S2V5cywgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiBvYmplY3RT
dG9yZUluZm8sIFNwYWNlQ2hlY2tSZXN1bHQgc3BhY2VDaGVja1Jlc3VsdCkKK3sKKyAgICBBU1NF
UlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9kYXRhYmFzZUluZm8pOworCisgICAg
aWYgKCFtX2JhY2tpbmdTdG9yZSkKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsg
SW52YWxpZFN0YXRlRXJyb3IsICJCYWNraW5nIHN0b3JlIGlzIGNsb3NlZCIgfSwga2V5RGF0YSk7
CisKKyAgICB1aW50NjRfdCBrZXlOdW1iZXIgPSBpc0tleUdlbmVyYXRlZCA/IGtleURhdGEubnVt
YmVyKCkgOiAwOworICAgIGF1dG8gb2JqZWN0U3RvcmVJZGVudGlmaWVyID0gb2JqZWN0U3RvcmVJ
bmZvLmlkZW50aWZpZXIoKTsKKyAgICBhdXRvIHRyYW5zYWN0aW9uSWRlbnRpZmllciA9IHJlcXVl
c3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpOworICAgIGF1dG8gZ2VuZXJhdGVkS2V5UmVz
ZXR0ZXIgPSBtYWtlU2NvcGVFeGl0KFt0aGlzLCB0cmFuc2FjdGlvbklkZW50aWZpZXIsIG9iamVj
dFN0b3JlSWRlbnRpZmllciwgJmtleU51bWJlciwgJmlzS2V5R2VuZXJhdGVkXSgpIHsKKyAgICAg
ICAgaWYgKGlzS2V5R2VuZXJhdGVkKQorICAgICAgICAgICAgbV9iYWNraW5nU3RvcmUtPnJldmVy
dEdlbmVyYXRlZEtleU51bWJlcih0cmFuc2FjdGlvbklkZW50aWZpZXIsIG9iamVjdFN0b3JlSWRl
bnRpZmllciwga2V5TnVtYmVyKTsKKyAgICB9KTsKIAorICAgIGlmIChzcGFjZUNoZWNrUmVzdWx0
ICE9IFNwYWNlQ2hlY2tSZXN1bHQ6OlBhc3MpCisgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJF
cnJvciB7IFF1b3RhRXhjZWVkZWRFcnJvciwgcXVvdGFFcnJvck1lc3NhZ2VOYW1lKCJQdXRPckFk
ZCIpIH0sIGtleURhdGEpOwogICAgIC8vIElmIGEgcmVjb3JkIGFscmVhZHkgZXhpc3RzIGluIHN0
b3JlLCB0aGVuIHJlbW92ZSB0aGUgcmVjb3JkIGZyb20gc3RvcmUgdXNpbmcgdGhlIHN0ZXBzIGZv
ciBkZWxldGluZyByZWNvcmRzIGZyb20gYW4gb2JqZWN0IHN0b3JlLgotICAgIC8vIFRoaXMgaXMg
aW1wb3J0YW50IGJlY2F1c2UgZm9ybWFsbHkgZGVsZXRpbmcgaXQgZnJvbSBmcm9tIHRoZSBvYmpl
Y3Qgc3RvcmUgYWxzbyByZW1vdmVzIGl0IGZyb20gdGhlIGFwcHJvcHJpYXRlIGluZGV4ZXMuCi0g
ICAgZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+ZGVsZXRlUmFuZ2UodHJhbnNhY3Rpb25JZGVudGlm
aWVyLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVzZWRLZXkpOwotICAgIGlmICghZXJyb3IuaXNO
dWxsKCkpIHsKLSAgICAgICAgY2FsbGJhY2soZXJyb3IsIHVzZWRLZXkpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQorICAgIC8vIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UgZm9ybWFsbHkgZGVs
ZXRpbmcgaXQgZnJvbSB0aGUgb2JqZWN0IHN0b3JlIGFsc28gcmVtb3ZlcyBpdCBmcm9tIHRoZSBh
cHByb3ByaWF0ZSBpbmRleGVzLgorICAgIElEQkVycm9yIGVycm9yID0gbV9iYWNraW5nU3RvcmUt
PmRlbGV0ZVJhbmdlKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgb2JqZWN0U3RvcmVJZGVudGlmaWVy
LCBrZXlEYXRhKTsKKyAgICBpZiAoIWVycm9yLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gY2Fs
bGJhY2soZXJyb3IsIGtleURhdGEpOwogCi0gICAgZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+YWRk
UmVjb3JkKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgKm9iamVjdFN0b3JlSW5mbywgdXNlZEtleSwg
aW5kZXhLZXlzLCB2YWx1ZSk7Ci0gICAgaWYgKCFlcnJvci5pc051bGwoKSkgewotICAgICAgICBj
YWxsYmFjayhlcnJvciwgdXNlZEtleSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgZXJy
b3IgPSBtX2JhY2tpbmdTdG9yZS0+YWRkUmVjb3JkKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgb2Jq
ZWN0U3RvcmVJbmZvLCBrZXlEYXRhLCBpbmRleEtleXMsIHZhbHVlKTsKKyAgICBpZiAoIWVycm9y
LmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gY2FsbGJhY2soZXJyb3IsIGtleURhdGEpOwogCi0g
ICAgaWYgKG92ZXJ3cml0ZU1vZGUgIT0gSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1v
ZGU6Ok92ZXJ3cml0ZUZvckN1cnNvciAmJiBvYmplY3RTdG9yZUluZm8tPmF1dG9JbmNyZW1lbnQo
KSAmJiBrZXlEYXRhLnR5cGUoKSA9PSBJbmRleGVkREI6OktleVR5cGU6Ok51bWJlcikKKyAgICBp
ZiAob3ZlcndyaXRlTW9kZSAhPSBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZTo6
T3ZlcndyaXRlRm9yQ3Vyc29yICYmIG9iamVjdFN0b3JlSW5mby5hdXRvSW5jcmVtZW50KCkgJiYg
a2V5RGF0YS50eXBlKCkgPT0gSW5kZXhlZERCOjpLZXlUeXBlOjpOdW1iZXIpCiAgICAgICAgIGVy
cm9yID0gbV9iYWNraW5nU3RvcmUtPm1heWJlVXBkYXRlS2V5R2VuZXJhdG9yTnVtYmVyKHRyYW5z
YWN0aW9uSWRlbnRpZmllciwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBrZXlEYXRhLm51bWJlcigp
KTsKIAogICAgIGdlbmVyYXRlZEtleVJlc2V0dGVyLnJlbGVhc2UoKTsKLSAgICBjYWxsYmFjayhl
cnJvciwgdXNlZEtleSk7CisgICAgY2FsbGJhY2soZXJyb3IsIGtleURhdGEpOwogfQogCi12b2lk
IFVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVl
c3REYXRhLCBjb25zdCBJREJHZXRSZWNvcmREYXRhJiBnZXRSZWNvcmREYXRhLCBHZXRSZXN1bHRD
YWxsYmFjayBjYWxsYmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmdldFJlY29yZChjb25z
dCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkdldFJlY29yZERhdGEmIGdl
dFJlY29yZERhdGEsIEdldFJlc3VsdENhbGxiYWNrIGNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0
IHNwYWNlQ2hlY2tSZXN1bHQpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAg
TE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRSZWNvcmQiKTsKIAorICAgIGlm
IChzcGFjZUNoZWNrUmVzdWx0ID09IFNwYWNlQ2hlY2tSZXN1bHQ6OlVua25vd24pIHsKKyAgICAg
ICAgaWYgKCFtX21hbmFnZXIpCisgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3Ig
eyBJbnZhbGlkU3RhdGVFcnJvciB9LCBJREJHZXRSZXN1bHQgeyB9KTsKKworICAgICAgICBtX21h
bmFnZXItPnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIDAsIFt0aGlzLCB3ZWFr
VGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCByZXF1ZXN0RGF0YSwgZ2V0UmVjb3JkRGF0YSwgY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICAg
ICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElE
QkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJEYXRhYmFzZSBpcyBjbG9zZWQiIH0sIElEQkdl
dFJlc3VsdCB7IH0pOworCisgICAgICAgICAgICBnZXRSZWNvcmQocmVxdWVzdERhdGEsIGdldFJl
Y29yZERhdGEsIFdURk1vdmUoY2FsbGJhY2spLCBncmFudGVkID8gU3BhY2VDaGVja1Jlc3VsdDo6
UGFzcyA6IFNwYWNlQ2hlY2tSZXN1bHQ6OkZhaWwpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIEFTU0VSVChzcGFjZUNoZWNrUmVzdWx0ID09IFNwYWNlQ2hlY2tS
ZXN1bHQ6OlBhc3MpOworICAgIGlmICghbV9iYWNraW5nU3RvcmUpCisgICAgICAgIHJldHVybiBj
YWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiQmFja2luZyBzdG9yZSBpcyBj
bG9zZWQiIH0sIElEQkdldFJlc3VsdCB7IH0pOworCiAgICAgSURCR2V0UmVzdWx0IHJlc3VsdDsK
ICAgICBJREJFcnJvciBlcnJvcjsKIAotICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CiAgICAg
aWYgKHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciA9IHJlcXVlc3REYXRhLmluZGV4SWRlbnRpZmll
cigpKQogICAgICAgICBlcnJvciA9IG1fYmFja2luZ1N0b3JlLT5nZXRJbmRleFJlY29yZChyZXF1
ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSwgcmVxdWVzdERhdGEub2JqZWN0U3RvcmVJ
ZGVudGlmaWVyKCksIGluZGV4SWRlbnRpZmllciwgcmVxdWVzdERhdGEuaW5kZXhSZWNvcmRUeXBl
KCksIGdldFJlY29yZERhdGEua2V5UmFuZ2VEYXRhLCByZXN1bHQpOwogICAgIGVsc2UKQEAgLTgw
OCw0NyArOTc0LDExMCBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRSZWNvcmQoY29uc3Qg
SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJHZQogICAgIGNhbGxiYWNrKGVy
cm9yLCByZXN1bHQpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRBbGxSZWNvcmRz
KGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCR2V0QWxsUmVjb3Jk
c0RhdGEmIGdldEFsbFJlY29yZHNEYXRhLCBHZXRBbGxSZXN1bHRzQ2FsbGJhY2sgY2FsbGJhY2sp
Cit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRBbGxSZWNvcmRzKGNvbnN0IElEQlJlcXVlc3RE
YXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCR2V0QWxsUmVjb3Jkc0RhdGEmIGdldEFsbFJlY29y
ZHNEYXRhLCBHZXRBbGxSZXN1bHRzQ2FsbGJhY2sgY2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQg
c3BhY2VDaGVja1Jlc3VsdCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBM
T0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6OmdldEFsbFJlY29yZHMiKTsKIAotICAg
IEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CisgICAgaWYgKHNwYWNlQ2hlY2tSZXN1bHQgPT0gU3Bh
Y2VDaGVja1Jlc3VsdDo6VW5rbm93bikgeworICAgICAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAg
ICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yIH0sIElE
QkdldEFsbFJlc3VsdCB7IH0pOworCisgICAgICAgIG1fbWFuYWdlci0+cmVxdWVzdFNwYWNlKG1f
aWRlbnRpZmllci5vcmlnaW4oKSwgMCwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlz
IH0sIHJlcXVlc3REYXRhLCBnZXRBbGxSZWNvcmRzRGF0YSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKV0oYm9vbCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghd2Vha1Ro
aXMpCisgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0
YXRlRXJyb3IsICJEYXRhYmFzZSBpcyBjbG9zZWQiIH0sIElEQkdldEFsbFJlc3VsdCB7IH0pOwor
CisgICAgICAgICAgICBnZXRBbGxSZWNvcmRzKHJlcXVlc3REYXRhLCBnZXRBbGxSZWNvcmRzRGF0
YSwgV1RGTW92ZShjYWxsYmFjayksIGdyYW50ZWQgPyBTcGFjZUNoZWNrUmVzdWx0OjpQYXNzIDog
U3BhY2VDaGVja1Jlc3VsdDo6RmFpbCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgQVNTRVJUKHNwYWNlQ2hlY2tSZXN1bHQgPT0gU3BhY2VDaGVja1Jlc3VsdDo6
UGFzcyk7CisgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNr
KElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJCYWNraW5nIHN0b3JlIGlzIGNsb3NlZCIg
fSwgSURCR2V0QWxsUmVzdWx0IHsgfSk7CisKICAgICBJREJHZXRBbGxSZXN1bHQgcmVzdWx0Owog
ICAgIGF1dG8gZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+Z2V0QWxsUmVjb3JkcyhyZXF1ZXN0RGF0
YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSwgZ2V0QWxsUmVjb3Jkc0RhdGEsIHJlc3VsdCk7CiAK
ICAgICBjYWxsYmFjayhlcnJvciwgcmVzdWx0KTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFz
ZTo6Z2V0Q291bnQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJL
ZXlSYW5nZURhdGEmIHJhbmdlLCBDb3VudENhbGxiYWNrIGNhbGxiYWNrKQordm9pZCBVbmlxdWVJ
REJEYXRhYmFzZTo6Z2V0Q291bnQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBj
b25zdCBJREJLZXlSYW5nZURhdGEmIHJhbmdlLCBDb3VudENhbGxiYWNrIGNhbGxiYWNrLCBTcGFj
ZUNoZWNrUmVzdWx0IHNwYWNlQ2hlY2tSZXN1bHQpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJl
YWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRDb3VudCIp
OwogCi0gICAgQVNTRVJUKG1fYmFja2luZ1N0b3JlKTsKKyAgICBpZiAoc3BhY2VDaGVja1Jlc3Vs
dCA9PSBTcGFjZUNoZWNrUmVzdWx0OjpVbmtub3duKSB7CisgICAgICAgIGlmICghbV9tYW5hZ2Vy
KQorICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJy
b3IgfSwgMCk7CisKKyAgICAgICAgbV9tYW5hZ2VyLT5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVy
Lm9yaWdpbigpLCAwLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgcmVxdWVz
dERhdGEsIHJhbmdlLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIGdyYW50ZWQp
IG11dGFibGUgeworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkRhdGFiYXNlIGlz
IGNsb3NlZCIgfSwgMCk7CisKKyAgICAgICAgICAgIGdldENvdW50KHJlcXVlc3REYXRhLCByYW5n
ZSwgV1RGTW92ZShjYWxsYmFjayksIGdyYW50ZWQgPyBTcGFjZUNoZWNrUmVzdWx0OjpQYXNzIDog
U3BhY2VDaGVja1Jlc3VsdDo6RmFpbCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgQVNTRVJUKHNwYWNlQ2hlY2tSZXN1bHQgPT0gU3BhY2VDaGVja1Jlc3VsdDo6
UGFzcyk7CisgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNr
KElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJCYWNraW5nIHN0b3JlIGlzIGNsb3NlZCIg
fSwgMCk7CisKICAgICB1aW50NjRfdCBjb3VudCA9IDA7CiAgICAgYXV0byBlcnJvciA9IG1fYmFj
a2luZ1N0b3JlLT5nZXRDb3VudChyZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSwg
cmVxdWVzdERhdGEub2JqZWN0U3RvcmVJZGVudGlmaWVyKCksIHJlcXVlc3REYXRhLmluZGV4SWRl
bnRpZmllcigpLCByYW5nZSwgY291bnQpOwogCiAgICAgY2FsbGJhY2soZXJyb3IsIGNvdW50KTsK
IH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlUmVjb3JkKGNvbnN0IElEQlJlcXVl
c3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5nZURhdGEs
IEVycm9yQ2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVS
ZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXlSYW5n
ZURhdGEmIGtleVJhbmdlRGF0YSwgRXJyb3JDYWxsYmFjayBjYWxsYmFjaywgU3BhY2VDaGVja1Jl
c3VsdCBzcGFjZUNoZWNrUmVzdWx0KQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwog
ICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlUmVjb3JkIik7CiAK
LSAgICBBU1NFUlQobV9iYWNraW5nU3RvcmUpOworICAgIGlmIChzcGFjZUNoZWNrUmVzdWx0ID09
IFNwYWNlQ2hlY2tSZXN1bHQ6OlVua25vd24pIHsKKyAgICAgICAgaWYgKCFtX21hbmFnZXIpCisg
ICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciB9
KTsKKworICAgICAgICBtX21hbmFnZXItPnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2lu
KCksIDAsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCByZXF1ZXN0RGF0YSwg
a2V5UmFuZ2VEYXRhLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIGdyYW50ZWQp
IG11dGFibGUgeworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkRhdGFiYXNlIGlz
IGNsb3NlZCIgfSk7CisKKyAgICAgICAgICAgIGRlbGV0ZVJlY29yZChyZXF1ZXN0RGF0YSwga2V5
UmFuZ2VEYXRhLCBXVEZNb3ZlKGNhbGxiYWNrKSwgZ3JhbnRlZCA/IFNwYWNlQ2hlY2tSZXN1bHQ6
OlBhc3MgOiBTcGFjZUNoZWNrUmVzdWx0OjpGYWlsKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQoc3BhY2VDaGVja1Jlc3VsdCA9PSBTcGFjZUNoZWNr
UmVzdWx0OjpQYXNzKTsKKyAgICBpZiAoIW1fYmFja2luZ1N0b3JlKQorICAgICAgICByZXR1cm4g
Y2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkJhY2tpbmcgc3RvcmUgaXMg
Y2xvc2VkIiB9KTsKKwogICAgIGF1dG8gZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+ZGVsZXRlUmFu
Z2UocmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCksIHJlcXVlc3REYXRhLm9iamVj
dFN0b3JlSWRlbnRpZmllcigpLCBrZXlSYW5nZURhdGEpOwogCiAgICAgY2FsbGJhY2soZXJyb3Ip
OwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuQ3Vyc29yKGNvbnN0IElEQlJlcXVl
c3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCQ3Vyc29ySW5mbyYgaW5mbywgR2V0UmVzdWx0
Q2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuQ3Vyc29yKGNv
bnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCQ3Vyc29ySW5mbyYgaW5m
bywgR2V0UmVzdWx0Q2FsbGJhY2sgY2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgc3BhY2VDaGVj
a1Jlc3VsdCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5kZXhl
ZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6Om9wZW5DdXJzb3IiKTsKIAotICAgIEFTU0VSVChtX2Jh
Y2tpbmdTdG9yZSk7CisgICAgaWYgKHNwYWNlQ2hlY2tSZXN1bHQgPT0gU3BhY2VDaGVja1Jlc3Vs
dDo6VW5rbm93bikgeworICAgICAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAgICAgICAgIHJldHVy
biBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yIH0sIElEQkdldFJlc3VsdCB7
IH0pOworCisgICAgICAgIG1fbWFuYWdlci0+cmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmln
aW4oKSwgMCwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHJlcXVlc3REYXRh
LCBpbmZvLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIGdyYW50ZWQpIG11dGFi
bGUgeworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICByZXR1cm4g
Y2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkRhdGFiYXNlIG9yIHRyYW5z
YWN0aW9uIGlzIGNsb3NlZCIgfSwgSURCR2V0UmVzdWx0IHsgfSk7CisKKyAgICAgICAgICAgIG9w
ZW5DdXJzb3IocmVxdWVzdERhdGEsIGluZm8sIFdURk1vdmUoY2FsbGJhY2spLCBncmFudGVkID8g
U3BhY2VDaGVja1Jlc3VsdDo6UGFzcyA6IFNwYWNlQ2hlY2tSZXN1bHQ6OkZhaWwpOworICAgICAg
ICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChzcGFjZUNoZWNrUmVz
dWx0ID09IFNwYWNlQ2hlY2tSZXN1bHQ6OlBhc3MpOworICAgIGlmICghbV9iYWNraW5nU3RvcmUp
CisgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAi
QmFja2luZyBzdG9yZSBpcyBjbG9zZWQiIH0sIElEQkdldFJlc3VsdCB7IH0pOwogCiAgICAgSURC
R2V0UmVzdWx0IHJlc3VsdDsKICAgICBhdXRvIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPm9wZW5D
dXJzb3IocmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCksIGluZm8sIHJlc3VsdCk7
CkBAIC04NTYsMTIgKzEwODUsMjcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6b3BlbkN1cnNv
cihjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkMKICAgICBjYWxs
YmFjayhlcnJvciwgcmVzdWx0KTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6aXRlcmF0
ZUN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkl0ZXJh
dGVDdXJzb3JEYXRhJiBkYXRhLCBHZXRSZXN1bHRDYWxsYmFjayBjYWxsYmFjaykKK3ZvaWQgVW5p
cXVlSURCRGF0YWJhc2U6Oml0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVl
c3REYXRhLCBjb25zdCBJREJJdGVyYXRlQ3Vyc29yRGF0YSYgZGF0YSwgR2V0UmVzdWx0Q2FsbGJh
Y2sgY2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgc3BhY2VDaGVja1Jlc3VsdCkKIHsKICAgICBB
U1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0
YWJhc2U6Oml0ZXJhdGVDdXJzb3IiKTsKIAotICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7Cisg
ICAgaWYgKHNwYWNlQ2hlY2tSZXN1bHQgPT0gU3BhY2VDaGVja1Jlc3VsdDo6VW5rbm93bikgewor
ICAgICAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJF
cnJvciB7IEludmFsaWRTdGF0ZUVycm9yIH0sIElEQkdldFJlc3VsdCB7IH0pOworCisgICAgICAg
IG1fbWFuYWdlci0+cmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwgMCwgW3RoaXMs
IHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHJlcXVlc3REYXRhLCBkYXRhLCBjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIGdyYW50ZWQpIG11dGFibGUgeworICAgICAgICAg
ICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJy
b3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkRhdGFiYXNlIG9yIHRyYW5zYWN0aW9uIGlzIGNsb3Nl
ZCIgfSwgSURCR2V0UmVzdWx0IHsgfSk7CisKKyAgICAgICAgICAgIGl0ZXJhdGVDdXJzb3IocmVx
dWVzdERhdGEsIGRhdGEsIFdURk1vdmUoY2FsbGJhY2spLCBncmFudGVkID8gU3BhY2VDaGVja1Jl
c3VsdDo6UGFzcyA6IFNwYWNlQ2hlY2tSZXN1bHQ6OkZhaWwpOworICAgICAgICB9KTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChzcGFjZUNoZWNrUmVzdWx0ID09IFNwYWNl
Q2hlY2tSZXN1bHQ6OlBhc3MpOworICAgIGlmICghbV9iYWNraW5nU3RvcmUpCisgICAgICAgIHJl
dHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiQmFja2luZyBzdG9y
ZSBpcyBjbG9zZWQiIH0sIElEQkdldFJlc3VsdCB7IH0pOwogCiAgICAgSURCR2V0UmVzdWx0IHJl
c3VsdDsKICAgICBhdXRvIHRyYW5zYWN0aW9uSWRlbnRpZmllciA9IHJlcXVlc3REYXRhLnRyYW5z
YWN0aW9uSWRlbnRpZmllcigpOwpAQCAtODcxLDEzICsxMTE1LDMwIEBAIHZvaWQgVW5pcXVlSURC
RGF0YWJhc2U6Oml0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRh
LCBjb25zdCBJCiAgICAgY2FsbGJhY2soZXJyb3IsIHJlc3VsdCk7CiB9CiAKLXZvaWQgVW5pcXVl
SURCRGF0YWJhc2U6OmNvbW1pdFRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rp
b24mIHRyYW5zYWN0aW9uLCBFcnJvckNhbGxiYWNrIGNhbGxiYWNrKQordm9pZCBVbmlxdWVJREJE
YXRhYmFzZTo6Y29tbWl0VHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYg
dHJhbnNhY3Rpb24sIEVycm9yQ2FsbGJhY2sgY2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgc3Bh
Y2VDaGVja1Jlc3VsdCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMT0co
SW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6OmNvbW1pdFRyYW5zYWN0aW9uIC0gJXMiLCB0
cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKIAorICAgIGlmIChzcGFjZUNoZWNrUmVzdWx0ID09IFNwYWNlQ2hlY2tSZXN1bHQ6OlVu
a25vd24pIHsKKyAgICAgICAgaWYgKCFtX21hbmFnZXIpCisgICAgICAgICAgICByZXR1cm4gY2Fs
bGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciB9KTsKKworICAgICAgICBtX21hbmFn
ZXItPnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIDAsIFt0aGlzLCB3ZWFrVGhp
cyA9IFdlYWtQdHIgeyAqdGhpcyB9LCB3ZWFrVHJhbnNhY3Rpb24gPSBXZWFrUHRyIHsgdHJhbnNh
Y3Rpb24gfSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBncmFudGVkKSBtdXRh
YmxlIHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMgfHwgIXdlYWtUcmFuc2FjdGlvbikKKyAg
ICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJv
ciwgIkRhdGFiYXNlIG9yIHRyYW5zYWN0aW9uIGlzIGNsb3NlZCIgfSk7CisKKyAgICAgICAgICAg
IGNvbW1pdFRyYW5zYWN0aW9uKCp3ZWFrVHJhbnNhY3Rpb24sIFdURk1vdmUoY2FsbGJhY2spLCBn
cmFudGVkID8gU3BhY2VDaGVja1Jlc3VsdDo6UGFzcyA6IFNwYWNlQ2hlY2tSZXN1bHQ6OkZhaWwp
OworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChzcGFj
ZUNoZWNrUmVzdWx0ID09IFNwYWNlQ2hlY2tSZXN1bHQ6OlBhc3MpOwogICAgIEFTU0VSVCh0cmFu
c2FjdGlvbi5kYXRhYmFzZUNvbm5lY3Rpb24oKS5kYXRhYmFzZSgpID09IHRoaXMpOwotICAgIEFT
U0VSVChtX2JhY2tpbmdTdG9yZSk7CisKKyAgICBpZiAoIW1fYmFja2luZ1N0b3JlKQorICAgICAg
ICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkJhY2tpbmcg
c3RvcmUgaXMgY2xvc2VkIiB9KTsKKwogICAgIGF1dG8gdGFrZW5UcmFuc2FjdGlvbiA9IG1faW5Q
cm9ncmVzc1RyYW5zYWN0aW9ucy50YWtlKHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCkp
OwogICAgIGlmICghdGFrZW5UcmFuc2FjdGlvbikgewogICAgICAgICBpZiAoIW1fb3BlbkRhdGFi
YXNlQ29ubmVjdGlvbnMuY29udGFpbnMoJnRyYW5zYWN0aW9uLmRhdGFiYXNlQ29ubmVjdGlvbigp
KSkKQEAgLTg5MywxMSArMTE1NCwyNSBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjb21taXRU
cmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdAogICAgIHRy
YW5zYWN0aW9uQ29tcGxldGVkKFdURk1vdmUodGFrZW5UcmFuc2FjdGlvbikpOwogfQogCi12b2lk
IFVuaXF1ZUlEQkRhdGFiYXNlOjphYm9ydFRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJh
bnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBFcnJvckNhbGxiYWNrIGNhbGxiYWNrKQordm9pZCBVbmlx
dWVJREJEYXRhYmFzZTo6YWJvcnRUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0
aW9uJiB0cmFuc2FjdGlvbiwgRXJyb3JDYWxsYmFjayBjYWxsYmFjaywgU3BhY2VDaGVja1Jlc3Vs
dCBzcGFjZUNoZWNrUmVzdWx0KQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAg
IExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6YWJvcnRUcmFuc2FjdGlvbiAtICVz
IiwgdHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKS5sb2dnaW5nU3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7CiAKKyAgICBpZiAoc3BhY2VDaGVja1Jlc3VsdCA9PSBTcGFjZUNoZWNrUmVzdWx0
OjpVbmtub3duKSB7CisgICAgICAgIGlmICghbV9tYW5hZ2VyKQorICAgICAgICAgICAgcmV0dXJu
IGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7CisKKyAgICAgICAgbV9t
YW5hZ2VyLT5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCAwLCBbdGhpcywgd2Vh
a1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgd2Vha1RyYW5zYWN0aW9uID0gV2Vha1B0ciB7IHRy
YW5zYWN0aW9uIH0sIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgZ3JhbnRlZCkg
bXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICF3ZWFrVHJhbnNhY3Rpb24p
CisgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRl
RXJyb3IsICJEYXRhYmFzZSBvciB0cmFuc2FjdGlvbiBpcyBjbG9zZWQiIH0pOworCisgICAgICAg
ICAgICBhYm9ydFRyYW5zYWN0aW9uKCp3ZWFrVHJhbnNhY3Rpb24sIFdURk1vdmUoY2FsbGJhY2sp
LCBncmFudGVkID8gU3BhY2VDaGVja1Jlc3VsdDo6UGFzcyA6IFNwYWNlQ2hlY2tSZXN1bHQ6OkZh
aWwpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChz
cGFjZUNoZWNrUmVzdWx0ID09IFNwYWNlQ2hlY2tSZXN1bHQ6OlBhc3MpOwogICAgIEFTU0VSVCh0
cmFuc2FjdGlvbi5kYXRhYmFzZUNvbm5lY3Rpb24oKS5kYXRhYmFzZSgpID09IHRoaXMpOwogCiAg
ICAgYXV0byB0YWtlblRyYW5zYWN0aW9uID0gbV9pblByb2dyZXNzVHJhbnNhY3Rpb25zLnRha2Uo
dHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSk7CkBAIC05MjUsNyArMTIwMCwxMSBAQCB2
b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjphYm9ydFRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNl
VHJhbnNhY3Rpb24mIHRyYW5zYWN0aQogICAgICAgICBtX2RhdGFiYXNlSW5mbyA9IG1ha2VVbmlx
dWU8SURCRGF0YWJhc2VJbmZvPigqbV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24tPm9yaWdpbmFs
RGF0YWJhc2VJbmZvKCkpOwogICAgIH0KIAotICAgIGF1dG8gZXJyb3IgPSBtX2JhY2tpbmdTdG9y
ZS0+YWJvcnRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbklkZW50aWZpZXIpOworICAgIElEQkVycm9y
IGVycm9yOworICAgIGlmICghbV9iYWNraW5nU3RvcmUpCisgICAgICAgIGVycm9yID0gSURCRXJy
b3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkJhY2tpbmcgc3RvcmUgaXMgY2xvc2VkIiB9OworICAg
IGVsc2UKKyAgICAgICAgZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+YWJvcnRUcmFuc2FjdGlvbih0
cmFuc2FjdGlvbklkZW50aWZpZXIpOwogCiAgICAgY2FsbGJhY2soZXJyb3IpOwogICAgIHRyYW5z
YWN0aW9uQ29tcGxldGVkKFdURk1vdmUodGFrZW5UcmFuc2FjdGlvbikpOwpAQCAtMTIyNSw2ICsx
NTA0LDExIEBAIGJvb2wgVW5pcXVlSURCRGF0YWJhc2U6OnRyeUNsb3NlKCkKICAgICBjbG9zZSgp
OwogICAgIHJldHVybiB0cnVlOwogfQorICAgIAorYm9vbCBVbmlxdWVJREJEYXRhYmFzZTo6aGFz
RGF0YUluTWVtb3J5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9iYWNraW5nU3RvcmUgPyBtX2Jh
Y2tpbmdTdG9yZS0+aXNFcGhlbWVyYWwoKSA6IGZhbHNlOworfQogCiBSZWZQdHI8U2VydmVyT3Bl
bkRCUmVxdWVzdD4gVW5pcXVlSURCRGF0YWJhc2U6OnRha2VOZXh0UnVubmFibGVSZXF1ZXN0KFJl
cXVlc3RUeXBlIHJlcXVlc3RUeXBlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaAppbmRleCBiMmE3
NDE3ZjljODE5Y2ZjMjQxNDZjZTVmYjVjZjVkMjYxMjg1MDgwLi43ODgwZjY2NWVhODdlMDVmY2Jh
ZGMzZDFkMDc0NDYxOWJlMDM5MjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaApAQCAtNTksOCAr
NTksOCBAQCBlbnVtIGNsYXNzIEluZGV4UmVjb3JkVHlwZSA6IGJvb2w7CiBuYW1lc3BhY2UgSURC
U2VydmVyIHsKIAogY2xhc3MgSURCQ29ubmVjdGlvblRvQ2xpZW50OwotY2xhc3MgSURCU2VydmVy
OwogY2xhc3MgVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uOworY2xhc3MgVW5pcXVlSURCRGF0
YWJhc2VNYW5hZ2VyOwogCiB0eXBlZGVmIEZ1bmN0aW9uPHZvaWQoY29uc3QgSURCRXJyb3ImKT4g
RXJyb3JDYWxsYmFjazsKIHR5cGVkZWYgRnVuY3Rpb248dm9pZChjb25zdCBJREJFcnJvciYsIGNv
bnN0IElEQktleURhdGEmKT4gS2V5RGF0YUNhbGxiYWNrOwpAQCAtNzEsNTQgKzcxLDYyIEBAIHR5
cGVkZWYgRnVuY3Rpb248dm9pZChjb25zdCBJREJFcnJvciYsIHVpbnQ2NF90KT4gQ291bnRDYWxs
YmFjazsKIGNsYXNzIFVuaXF1ZUlEQkRhdGFiYXNlIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFVu
aXF1ZUlEQkRhdGFiYXNlPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
Ci0gICAgVW5pcXVlSURCRGF0YWJhc2UoSURCU2VydmVyJiwgY29uc3QgSURCRGF0YWJhc2VJZGVu
dGlmaWVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgVW5pcXVlSURCRGF0YWJhc2UoVW5pcXVlSURC
RGF0YWJhc2VNYW5hZ2VyJiwgY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJik7CiAgICAgVW5p
cXVlSURCRGF0YWJhc2UoVW5pcXVlSURCRGF0YWJhc2UmKSA9IGRlbGV0ZTsKICAgICBXRUJDT1JF
X0VYUE9SVCB+VW5pcXVlSURCRGF0YWJhc2UoKTsKIAotICAgIHZvaWQgb3BlbkRhdGFiYXNlQ29u
bmVjdGlvbihJREJDb25uZWN0aW9uVG9DbGllbnQmLCBjb25zdCBJREJSZXF1ZXN0RGF0YSYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgb3BlbkRhdGFiYXNlQ29ubmVjdGlvbihJREJDb25uZWN0
aW9uVG9DbGllbnQmLCBjb25zdCBJREJSZXF1ZXN0RGF0YSYpOwogCiAgICAgY29uc3QgSURCRGF0
YWJhc2VJbmZvJiBpbmZvKCkgY29uc3Q7Ci0gICAgSURCU2VydmVyJiBzZXJ2ZXIoKSB7IHJldHVy
biBtX3NlcnZlcjsgfQorICAgIFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlciogbWFuYWdlcigpOwog
ICAgIGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0
dXJuIG1faWRlbnRpZmllcjsgfQogCi0gICAgdm9pZCBjcmVhdGVPYmplY3RTdG9yZShVbmlxdWVJ
REJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiwgRXJyb3JD
YWxsYmFjayk7Ci0gICAgdm9pZCBkZWxldGVPYmplY3RTdG9yZShVbmlxdWVJREJEYXRhYmFzZVRy
YW5zYWN0aW9uJiwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUsIEVycm9yQ2FsbGJhY2sp
OwotICAgIHZvaWQgcmVuYW1lT2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlv
biYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1l
LCBFcnJvckNhbGxiYWNrKTsKLSAgICB2b2lkIGNsZWFyT2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0
YWJhc2VUcmFuc2FjdGlvbiYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgRXJyb3JD
YWxsYmFjayk7Ci0gICAgdm9pZCBjcmVhdGVJbmRleChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0
aW9uJiwgY29uc3QgSURCSW5kZXhJbmZvJiwgRXJyb3JDYWxsYmFjayk7Ci0gICAgdm9pZCBkZWxl
dGVJbmRleChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgdWludDY0X3Qgb2JqZWN0U3Rv
cmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGluZGV4TmFtZSwgRXJyb3JDYWxsYmFjayk7Ci0g
ICAgdm9pZCByZW5hbWVJbmRleChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgdWludDY0
X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRleElkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgbmV3TmFtZSwgRXJyb3JDYWxsYmFjayk7CisgICAgZW51bSBjbGFzcyBTcGFjZUNo
ZWNrUmVzdWx0IDogdWludDhfdCB7CisgICAgICAgIFVua25vd24sCisgICAgICAgIFBhc3MsCisg
ICAgICAgIEZhaWwKKyAgICB9OworICAgIHZvaWQgY3JlYXRlT2JqZWN0U3RvcmUoVW5pcXVlSURC
RGF0YWJhc2VUcmFuc2FjdGlvbiYsIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYsIEVycm9yQ2Fs
bGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgPSBTcGFjZUNoZWNrUmVzdWx0OjpVbmtub3duKTsKKyAg
ICB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCBj
b25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSwgRXJyb3JDYWxsYmFjaywgU3BhY2VDaGVja1Jl
c3VsdCA9IFNwYWNlQ2hlY2tSZXN1bHQ6OlVua25vd24pOworICAgIHZvaWQgcmVuYW1lT2JqZWN0
U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIHVpbnQ2NF90IG9iamVjdFN0b3Jl
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lLCBFcnJvckNhbGxiYWNrLCBTcGFjZUNo
ZWNrUmVzdWx0ID0gU3BhY2VDaGVja1Jlc3VsdDo6VW5rbm93bik7CisgICAgdm9pZCBjbGVhck9i
amVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCB1aW50NjRfdCBvYmplY3RT
dG9yZUlkZW50aWZpZXIsIEVycm9yQ2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgPSBTcGFjZUNo
ZWNrUmVzdWx0OjpVbmtub3duKTsKKyAgICB2b2lkIGNyZWF0ZUluZGV4KFVuaXF1ZUlEQkRhdGFi
YXNlVHJhbnNhY3Rpb24mLCBjb25zdCBJREJJbmRleEluZm8mLCBFcnJvckNhbGxiYWNrLCBTcGFj
ZUNoZWNrUmVzdWx0ID0gU3BhY2VDaGVja1Jlc3VsdDo6VW5rbm93bik7CisgICAgdm9pZCBkZWxl
dGVJbmRleChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgdWludDY0X3Qgb2JqZWN0U3Rv
cmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGluZGV4TmFtZSwgRXJyb3JDYWxsYmFjaywgU3Bh
Y2VDaGVja1Jlc3VsdCA9IFNwYWNlQ2hlY2tSZXN1bHQ6OlVua25vd24pOworICAgIHZvaWQgcmVu
YW1lSW5kZXgoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIHVpbnQ2NF90IG9iamVjdFN0
b3JlSWRlbnRpZmllciwgdWludDY0X3QgaW5kZXhJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5l
d05hbWUsIEVycm9yQ2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgPSBTcGFjZUNoZWNrUmVzdWx0
OjpVbmtub3duKTsKICAgICB2b2lkIHB1dE9yQWRkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29u
c3QgSURCS2V5RGF0YSYsIGNvbnN0IElEQlZhbHVlJiwgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92
ZXJ3cml0ZU1vZGUsIEtleURhdGFDYWxsYmFjayk7Ci0gICAgdm9pZCBnZXRSZWNvcmQoY29uc3Qg
SURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJHZXRSZWNvcmREYXRhJiwgR2V0UmVzdWx0Q2FsbGJh
Y2spOwotICAgIHZvaWQgZ2V0QWxsUmVjb3Jkcyhjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0
IElEQkdldEFsbFJlY29yZHNEYXRhJiwgR2V0QWxsUmVzdWx0c0NhbGxiYWNrKTsKLSAgICB2b2lk
IGdldENvdW50KGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiwg
Q291bnRDYWxsYmFjayk7Ci0gICAgdm9pZCBkZWxldGVSZWNvcmQoY29uc3QgSURCUmVxdWVzdERh
dGEmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmLCBFcnJvckNhbGxiYWNrKTsKLSAgICB2b2lkIG9w
ZW5DdXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJDdXJzb3JJbmZvJiwgR2V0
UmVzdWx0Q2FsbGJhY2spOwotICAgIHZvaWQgaXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXF1ZXN0
RGF0YSYsIGNvbnN0IElEQkl0ZXJhdGVDdXJzb3JEYXRhJiwgR2V0UmVzdWx0Q2FsbGJhY2spOwot
ICAgIHZvaWQgY29tbWl0VHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYs
IEVycm9yQ2FsbGJhY2spOwotICAgIHZvaWQgYWJvcnRUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRh
YmFzZVRyYW5zYWN0aW9uJiwgRXJyb3JDYWxsYmFjayk7CisgICAgdm9pZCBwdXRPckFkZEFmdGVy
U3BhY2VDaGVjayhjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleURhdGEmLCBjb25z
dCBJREJWYWx1ZSYsIEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlLCBLZXlEYXRh
Q2FsbGJhY2ssIGJvb2wgaXNLZXlHZW5lcmF0ZWQsIGNvbnN0IEluZGV4SURUb0luZGV4S2V5TWFw
JiwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiwgU3BhY2VDaGVja1Jlc3VsdCk7CisgICAgdm9p
ZCBnZXRSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJHZXRSZWNvcmREYXRh
JiwgR2V0UmVzdWx0Q2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgPSBTcGFjZUNoZWNrUmVzdWx0
OjpVbmtub3duKTsKKyAgICB2b2lkIGdldEFsbFJlY29yZHMoY29uc3QgSURCUmVxdWVzdERhdGEm
LCBjb25zdCBJREJHZXRBbGxSZWNvcmRzRGF0YSYsIEdldEFsbFJlc3VsdHNDYWxsYmFjaywgU3Bh
Y2VDaGVja1Jlc3VsdCA9IFNwYWNlQ2hlY2tSZXN1bHQ6OlVua25vd24pOworICAgIHZvaWQgZ2V0
Q291bnQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmLCBDb3Vu
dENhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0ID0gU3BhY2VDaGVja1Jlc3VsdDo6VW5rbm93bik7
CisgICAgdm9pZCBkZWxldGVSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJL
ZXlSYW5nZURhdGEmLCBFcnJvckNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0ID0gU3BhY2VDaGVj
a1Jlc3VsdDo6VW5rbm93bik7CisgICAgdm9pZCBvcGVuQ3Vyc29yKGNvbnN0IElEQlJlcXVlc3RE
YXRhJiwgY29uc3QgSURCQ3Vyc29ySW5mbyYsIEdldFJlc3VsdENhbGxiYWNrLCBTcGFjZUNoZWNr
UmVzdWx0ID0gU3BhY2VDaGVja1Jlc3VsdDo6VW5rbm93bik7CisgICAgdm9pZCBpdGVyYXRlQ3Vy
c29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCSXRlcmF0ZUN1cnNvckRhdGEmLCBH
ZXRSZXN1bHRDYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCA9IFNwYWNlQ2hlY2tSZXN1bHQ6OlVu
a25vd24pOworICAgIHZvaWQgY29tbWl0VHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFu
c2FjdGlvbiYsIEVycm9yQ2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgPSBTcGFjZUNoZWNrUmVz
dWx0OjpVbmtub3duKTsKKyAgICB2b2lkIGFib3J0VHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJh
c2VUcmFuc2FjdGlvbiYsIEVycm9yQ2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgPSBTcGFjZUNo
ZWNrUmVzdWx0OjpVbmtub3duKTsKIAogICAgIHZvaWQgZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9u
Q2hhbmdlKFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYsIGNvbnN0IElEQlJlc291cmNlSWRl
bnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKICAgICB2b2lkIGNvbm5lY3Rpb25DbG9z
ZWRGcm9tQ2xpZW50KFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYpOwogICAgIHZvaWQgZGlk
RmlyZVZlcnNpb25DaGFuZ2VFdmVudChVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mLCBjb25z
dCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBJbmRleGVkREI6OkNv
bm5lY3Rpb25DbG9zZWRPbkJlaGFsZk9mU2VydmVyKTsKLSAgICB2b2lkIG9wZW5EQlJlcXVlc3RD
YW5jZWxsZWQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllcik7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBvcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKGNvbnN0IElE
QlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIpOwogCiAgICAgdm9pZCBlbnF1
ZXVlVHJhbnNhY3Rpb24oUmVmPFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24+JiYpOwogCi0g
ICAgdm9pZCBoYW5kbGVEZWxldGUoSURCQ29ubmVjdGlvblRvQ2xpZW50JiwgY29uc3QgSURCUmVx
dWVzdERhdGEmKTsKLSAgICB2b2lkIGltbWVkaWF0ZUNsb3NlKCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBoYW5kbGVEZWxldGUoSURCQ29ubmVjdGlvblRvQ2xpZW50JiwgY29uc3QgSURCUmVx
dWVzdERhdGEmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGltbWVkaWF0ZUNsb3NlKCk7CiAK
ICAgICBib29sIGhhc0FjdGl2ZVRyYW5zYWN0aW9ucygpIGNvbnN0OwotICAgIHZvaWQgYWJvcnRB
Y3RpdmVUcmFuc2FjdGlvbnMoKTsKLSAgICBib29sIHRyeUNsb3NlKCk7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBhYm9ydEFjdGl2ZVRyYW5zYWN0aW9ucygpOworICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgdHJ5Q2xvc2UoKTsKIAotICAgIFN0cmluZyBmaWxlUGF0aCgpIGNvbnN0OwotICAgIHN0
ZDo6b3B0aW9uYWw8SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbj4gbmFtZUFuZFZlcnNpb24oKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgZmlsZVBhdGgoKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPElEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24+IG5h
bWVBbmRWZXJzaW9uKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNEYXRhSW5N
ZW1vcnkoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICB2b2lkIGhhbmRsZURhdGFiYXNlT3BlcmF0
aW9ucygpOwogICAgIHZvaWQgaGFuZGxlQ3VycmVudE9wZXJhdGlvbigpOwogICAgIHZvaWQgcGVy
Zm9ybUN1cnJlbnRPcGVuT3BlcmF0aW9uKCk7CisgICAgdm9pZCBwZXJmb3JtQ3VycmVudE9wZW5P
cGVyYXRpb25BZnRlclNwYWNlQ2hlY2soYm9vbCBpc0dyYW50ZWQpOwogICAgIHZvaWQgcGVyZm9y
bUN1cnJlbnREZWxldGVPcGVyYXRpb24oKTsKICAgICBlbnVtIGNsYXNzIFJlcXVlc3RUeXBlIHsg
RGVsZXRlLCBBbnkgfTsKICAgICBSZWZQdHI8U2VydmVyT3BlbkRCUmVxdWVzdD4gdGFrZU5leHRS
dW5uYWJsZVJlcXVlc3QoUmVxdWVzdFR5cGUgPSBSZXF1ZXN0VHlwZTo6QW55KTsKQEAgLTE0Niwx
MSArMTU0LDEzIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNsZWFyVHJhbnNhY3Rpb25zT25Db25u
ZWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYpOwogCi0gICAgSURCU2VydmVyJiBt
X3NlcnZlcjsKKyAgICBJREJTZXJ2ZXIqIG1fc2VydmVyOworICAgIFdlYWtQdHI8VW5pcXVlSURC
RGF0YWJhc2VNYW5hZ2VyPiBtX21hbmFnZXI7CiAgICAgSURCRGF0YWJhc2VJZGVudGlmaWVyIG1f
aWRlbnRpZmllcjsKIAogICAgIExpc3RIYXNoU2V0PFJlZlB0cjxTZXJ2ZXJPcGVuREJSZXF1ZXN0
Pj4gbV9wZW5kaW5nT3BlbkRCUmVxdWVzdHM7CiAgICAgUmVmUHRyPFNlcnZlck9wZW5EQlJlcXVl
c3Q+IG1fY3VycmVudE9wZW5EQlJlcXVlc3Q7CisgICAgSGFzaFNldDxJREJSZXNvdXJjZUlkZW50
aWZpZXI+IG1fb3BlbkRCUmVxdWVzdHNGb3JTcGFjZUNoZWNrOwogCiAgICAgTGlzdEhhc2hTZXQ8
UmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbj4+IG1fb3BlbkRhdGFiYXNlQ29ubmVj
dGlvbnM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5jcHAKaW5k
ZXggNzQzZWRjYzNiOGM1OTQwNTFmNzkxMTE2NTI2YWY0ZDAyMTY5MTM2Ny4uM2M3NzJhZjcwYjc0
ODIyOTc0ZDlkNWI3MTBkMzE1ZjBhOWE4ZmI3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRh
dGFiYXNlQ29ubmVjdGlvbi5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJMb2dnaW5n
LmgiCiAjaW5jbHVkZSAiU2VydmVyT3BlbkRCUmVxdWVzdC5oIgogI2luY2x1ZGUgIlVuaXF1ZUlE
QkRhdGFiYXNlLmgiCisjaW5jbHVkZSAiVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBJREJTZXJ2ZXIgewpAQCAtNDIsMTEgKzQzLDE0
IEBAIFJlZjxVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24+IFVuaXF1ZUlEQkRhdGFiYXNlQ29u
bmVjdGlvbjo6Y3JlYXRlKFVuaXF1ZUlEQkRhCiAKIFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlv
bjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlJiBkYXRhYmFz
ZSwgU2VydmVyT3BlbkRCUmVxdWVzdCYgcmVxdWVzdCkKICAgICA6IG1fZGF0YWJhc2UoZGF0YWJh
c2UpCi0gICAgLCBtX3NlcnZlcihkYXRhYmFzZS5zZXJ2ZXIoKSkKKyAgICAsIG1fbWFuYWdlcihk
YXRhYmFzZS5tYW5hZ2VyKCkpCiAgICAgLCBtX2Nvbm5lY3Rpb25Ub0NsaWVudChyZXF1ZXN0LmNv
bm5lY3Rpb24oKSkKICAgICAsIG1fb3BlblJlcXVlc3RJZGVudGlmaWVyKHJlcXVlc3QucmVxdWVz
dERhdGEoKS5yZXF1ZXN0SWRlbnRpZmllcigpKQogewotICAgIG1fc2VydmVyLnJlZ2lzdGVyRGF0
YWJhc2VDb25uZWN0aW9uKCp0aGlzKTsKKyAgICBpZiAoYXV0byogbWFuYWdlciA9IGRhdGFiYXNl
Lm1hbmFnZXIoKSkgeworICAgICAgICBtX21hbmFnZXIgPSAqbWFuYWdlcjsKKyAgICAgICAgbV9t
YW5hZ2VyLT5yZWdpc3RlckNvbm5lY3Rpb24oKnRoaXMpOworICAgIH0KICAgICBtX2Nvbm5lY3Rp
b25Ub0NsaWVudC0+cmVnaXN0ZXJEYXRhYmFzZUNvbm5lY3Rpb24oKnRoaXMpOwogfQogCkBAIC01
NCwxMCArNTgsMTYgQEAgVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uOjp+VW5pcXVlSURCRGF0
YWJhc2VDb25uZWN0aW9uKCkKIHsKICAgICBBU1NFUlQobV90cmFuc2FjdGlvbk1hcC5pc0VtcHR5
KCkpOwogCi0gICAgbV9zZXJ2ZXIudW5yZWdpc3RlckRhdGFiYXNlQ29ubmVjdGlvbigqdGhpcyk7
CisgICAgaWYgKG1fbWFuYWdlcikKKyAgICAgICAgbV9tYW5hZ2VyLT51bnJlZ2lzdGVyQ29ubmVj
dGlvbigqdGhpcyk7CiAgICAgbV9jb25uZWN0aW9uVG9DbGllbnQtPnVucmVnaXN0ZXJEYXRhYmFz
ZUNvbm5lY3Rpb24oKnRoaXMpOwogfQogCitVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIqIFVuaXF1
ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbjo6bWFuYWdlcigpCit7CisgICAgcmV0dXJuIG1fbWFuYWdl
ci5nZXQoKTsKK30KKwogYm9vbCBVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb246Omhhc05vbkZp
bmlzaGVkVHJhbnNhY3Rpb25zKCkgY29uc3QKIHsKICAgICByZXR1cm4gIW1fdHJhbnNhY3Rpb25N
YXAuaXNFbXB0eSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5oCmlu
ZGV4IDJlMTlkZmQyZGM5MTQzNGJmYzVlN2MzYWU0YmU2NmQ4Y2Q4NTg4MTEuLjk4ZmViNTljNzZi
ZWFlYmU3MGVkZGU0YmU1NThmY2E4NzFjOThkYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0
YWJhc2VDb25uZWN0aW9uLmgKQEAgLTI1LDcgKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNp
bmNsdWRlICJJREJTZXJ2ZXIuaCIKICNpbmNsdWRlICJVbmlxdWVJREJEYXRhYmFzZS5oIgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0lkZW50aWZpZWQuaD4KQEAgLTM2
LDYgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJREJFcnJvcjsKIGNsYXNz
IElEQlJlc3VsdERhdGE7CitjbGFzcyBVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXI7CiAKIG5hbWVz
cGFjZSBJREJTZXJ2ZXIgewogCkBAIC01MiwxMSArNTIsMTEgQEAgcHVibGljOgogCiAgICAgY29u
c3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiBvcGVuUmVxdWVzdElkZW50aWZpZXIoKSB7IHJldHVy
biBtX29wZW5SZXF1ZXN0SWRlbnRpZmllcjsgfQogICAgIFVuaXF1ZUlEQkRhdGFiYXNlKiBkYXRh
YmFzZSgpIHsgcmV0dXJuIG1fZGF0YWJhc2UuZ2V0KCk7IH0KLSAgICBJREJTZXJ2ZXIqIHNlcnZl
cigpIHsgcmV0dXJuICZtX3NlcnZlcjsgfQorICAgIFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlciog
bWFuYWdlcigpOwogICAgIElEQkNvbm5lY3Rpb25Ub0NsaWVudCYgY29ubmVjdGlvblRvQ2xpZW50
KCkgeyByZXR1cm4gbV9jb25uZWN0aW9uVG9DbGllbnQ7IH0KIAotICAgIHZvaWQgY29ubmVjdGlv
blBlbmRpbmdDbG9zZUZyb21DbGllbnQoKTsKLSAgICB2b2lkIGNvbm5lY3Rpb25DbG9zZWRGcm9t
Q2xpZW50KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb25uZWN0aW9uUGVuZGluZ0Nsb3Nl
RnJvbUNsaWVudCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29ubmVjdGlvbkNsb3NlZEZy
b21DbGllbnQoKTsKIAogICAgIGJvb2wgY2xvc2VQZW5kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9j
bG9zZVBlbmRpbmc7IH0KIApAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmaXJl
VmVyc2lvbkNoYW5nZUV2ZW50KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElk
ZW50aWZpZXIsIHVpbnQ2NF90IHJlcXVlc3RlZFZlcnNpb24pOwogICAgIFVuaXF1ZUlEQkRhdGFi
YXNlVHJhbnNhY3Rpb24mIGNyZWF0ZVZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbih1aW50NjRfdCBu
ZXdWZXJzaW9uKTsKIAotICAgIHZvaWQgZXN0YWJsaXNoVHJhbnNhY3Rpb24oY29uc3QgSURCVHJh
bnNhY3Rpb25JbmZvJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlc3RhYmxpc2hUcmFuc2Fj
dGlvbihjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mKTsKICAgICB2b2lkIGRpZEFib3J0VHJhbnNh
Y3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIGNvbnN0IElEQkVycm9yJik7CiAg
ICAgdm9pZCBkaWRDb21taXRUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9u
JiwgY29uc3QgSURCRXJyb3ImKTsKICAgICB2b2lkIGRpZENyZWF0ZU9iamVjdFN0b3JlKGNvbnN0
IElEQlJlc3VsdERhdGEmKTsKQEAgLTc1LDggKzc1LDggQEAgcHVibGljOgogICAgIHZvaWQgZGlk
Q3JlYXRlSW5kZXgoY29uc3QgSURCUmVzdWx0RGF0YSYpOwogICAgIHZvaWQgZGlkRGVsZXRlSW5k
ZXgoY29uc3QgSURCUmVzdWx0RGF0YSYpOwogICAgIHZvaWQgZGlkUmVuYW1lSW5kZXgoY29uc3Qg
SURCUmVzdWx0RGF0YSYpOwotICAgIHZvaWQgZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudChjb25z
dCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBJbmRleGVkREI6OkNv
bm5lY3Rpb25DbG9zZWRPbkJlaGFsZk9mU2VydmVyKTsKLSAgICB2b2lkIGRpZEZpbmlzaEhhbmRs
aW5nVmVyc2lvbkNoYW5nZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9u
SWRlbnRpZmllcik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRGaXJlVmVyc2lvbkNoYW5n
ZUV2ZW50KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIElu
ZGV4ZWREQjo6Q29ubmVjdGlvbkNsb3NlZE9uQmVoYWxmT2ZTZXJ2ZXIpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlKGNvbnN0IElEQlJlc291
cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKIAogICAgIHZvaWQgYWJvcnRU
cmFuc2FjdGlvbldpdGhvdXRDYWxsYmFjayhVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJik7
CiAKQEAgLTg4LDcgKzg4LDcgQEAgcHJpdmF0ZToKICAgICBVbmlxdWVJREJEYXRhYmFzZUNvbm5l
Y3Rpb24oVW5pcXVlSURCRGF0YWJhc2UmLCBTZXJ2ZXJPcGVuREJSZXF1ZXN0Jik7CiAKICAgICBX
ZWFrUHRyPFVuaXF1ZUlEQkRhdGFiYXNlPiBtX2RhdGFiYXNlOwotICAgIElEQlNlcnZlciYgbV9z
ZXJ2ZXI7CisgICAgV2Vha1B0cjxVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXI+IG1fbWFuYWdlcjsK
ICAgICBSZWY8SURCQ29ubmVjdGlvblRvQ2xpZW50PiBtX2Nvbm5lY3Rpb25Ub0NsaWVudDsKICAg
ICBJREJSZXNvdXJjZUlkZW50aWZpZXIgbV9vcGVuUmVxdWVzdElkZW50aWZpZXI7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJE
YXRhYmFzZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9VbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mODNlZmI0OTBjYTNiZTE4
M2MwN2RhMGYxZDY4YTllNjRjOWZiMzMyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlci5oCkBA
IC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIklE
QkRhdGFiYXNlSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworc3RydWN0IENsaWVudE9yaWdpbjsKKworbmFtZXNwYWNlIElEQlNl
cnZlciB7CisKK2NsYXNzIElEQkJhY2tpbmdTdG9yZTsKK2NsYXNzIFVuaXF1ZUlEQkRhdGFiYXNl
Q29ubmVjdGlvbjsKK2NsYXNzIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb247CisKK2NsYXNz
IFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxVbmlxdWVJ
REJEYXRhYmFzZU1hbmFnZXI+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1Ymxp
YzoKKyAgICB2aXJ0dWFsIH5VbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIoKSB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgcmVnaXN0ZXJDb25uZWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlckNvbm5lY3Rpb24oVW5pcXVlSURCRGF0
YWJhc2VDb25uZWN0aW9uJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclRyYW5zYWN0
aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHVucmVnaXN0ZXJUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJikgPSAw
OworICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPElEQkJhY2tpbmdTdG9yZT4gY3JlYXRlQmFj
a2luZ1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgcmVxdWVzdFNwYWNlKGNvbnN0IENsaWVudE9yaWdpbiYsIHVpbnQ2NF90IHNpemUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNl
IElEQlNlcnZlcgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2Fj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVl
SURCRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHAKaW5kZXggMWNjMDI4MTdhMTI0YzhkMGVkNTJmMjEz
YWM4ZTUwMDZiYTZiOTZkZS4uNmUzY2UwNDQwNmZjYWQzM2JjYzFjOWU5ZjYxMmUyYWY0MTA2OTQx
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1Vu
aXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcApAQCAt
MjgsNyArMjgsNiBAQAogCiAjaW5jbHVkZSAiSURCSXRlcmF0ZUN1cnNvckRhdGEuaCIKICNpbmNs
dWRlICJJREJSZXN1bHREYXRhLmgiCi0jaW5jbHVkZSAiSURCU2VydmVyLmgiCiAjaW5jbHVkZSAi
TG9nZ2luZy5oIgogI2luY2x1ZGUgIlVuaXF1ZUlEQkRhdGFiYXNlLmgiCiAKQEAgLTUwLDEyICs0
OSwxNCBAQCBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpVbmlxdWVJREJEYXRhYmFzZVRy
YW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlQ29ubgogICAgIGlmIChtX3RyYW5zYWN0aW9uSW5m
by5tb2RlKCkgPT0gSURCVHJhbnNhY3Rpb25Nb2RlOjpWZXJzaW9uY2hhbmdlKQogICAgICAgICBt
X29yaWdpbmFsRGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KGRhdGFi
YXNlLT5pbmZvKCkpOwogCi0gICAgZGF0YWJhc2VDb25uZWN0aW9uKCkuc2VydmVyKCktPnJlZ2lz
dGVyVHJhbnNhY3Rpb24oKnRoaXMpOworICAgIGlmIChhdXRvKiBtYW5hZ2VyID0gZGF0YWJhc2VD
b25uZWN0aW9uKCkubWFuYWdlcigpKQorICAgICAgICBtYW5hZ2VyLT5yZWdpc3RlclRyYW5zYWN0
aW9uKCp0aGlzKTsKIH0KIAogVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6flVuaXF1ZUlE
QkRhdGFiYXNlVHJhbnNhY3Rpb24oKQogewotICAgIGRhdGFiYXNlQ29ubmVjdGlvbigpLnNlcnZl
cigpLT51bnJlZ2lzdGVyVHJhbnNhY3Rpb24oKnRoaXMpOworICAgIGlmIChhdXRvKiBtYW5hZ2Vy
ID0gZGF0YWJhc2VDb25uZWN0aW9uKCkubWFuYWdlcigpKQorICAgICAgICBtYW5hZ2VyLT51bnJl
Z2lzdGVyVHJhbnNhY3Rpb24oKnRoaXMpOwogfQogCiBVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rp
b24mIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246OmRhdGFiYXNlQ29ubmVjdGlvbigpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVl
SURCRGF0YWJhc2VUcmFuc2FjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uaAppbmRleCA5NTk2NjUyYWRj
ZGJhN2EwNDhiNjE5Zjc0ZWYxYTkyY2VlZjllMGU1Li5mYmE4NWMxNzM4YjczNDJlMTI4ODAwYWVi
OWQxZGE0NjdlZTdhMTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0
aW9uLmgKQEAgLTUxLDcgKzUxLDcgQEAgbmFtZXNwYWNlIElEQlNlcnZlciB7CiBjbGFzcyBJREJT
ZXJ2ZXI7CiBjbGFzcyBVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb247CiAKLWNsYXNzIFVuaXF1
ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxVbmlxdWVJREJEYXRh
YmFzZVRyYW5zYWN0aW9uPiB7CitjbGFzcyBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uIDog
cHVibGljIENhbk1ha2VXZWFrUHRyPFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24+LCBwdWJs
aWMgUmVmQ291bnRlZDxVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uPiB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFJlZjxVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uPiBjcmVhdGUoVW5pcXVl
SURCRGF0YWJhc2VDb25uZWN0aW9uJiwgY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJik7CiAKQEAg
LTU5LDI5ICs1OSwyOSBAQCBwdWJsaWM6CiAKICAgICBVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rp
b24mIGRhdGFiYXNlQ29ubmVjdGlvbigpOwogICAgIGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYg
aW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNhY3Rpb25JbmZvOyB9Ci0gICAgYm9vbCBpc1Zl
cnNpb25DaGFuZ2UoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzVmVyc2lvbkNo
YW5nZSgpIGNvbnN0OwogICAgIGJvb2wgaXNSZWFkT25seSgpIGNvbnN0OwogCiAgICAgSURCRGF0
YWJhc2VJbmZvKiBvcmlnaW5hbERhdGFiYXNlSW5mbygpIGNvbnN0OwogCi0gICAgdm9pZCBhYm9y
dCgpOwotICAgIHZvaWQgYWJvcnRXaXRob3V0Q2FsbGJhY2soKTsKLSAgICB2b2lkIGNvbW1pdCh1
aW50NjRfdCBwZW5kaW5nUmVxdWVzdENvdW50KTsKLQotICAgIHZvaWQgY3JlYXRlT2JqZWN0U3Rv
cmUoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mKTsKLSAg
ICB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgU3Ry
aW5nJiBvYmplY3RTdG9yZU5hbWUpOwotICAgIHZvaWQgcmVuYW1lT2JqZWN0U3RvcmUoY29uc3Qg
SURCUmVxdWVzdERhdGEmLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgbmV3TmFtZSk7Ci0gICAgdm9pZCBjbGVhck9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVl
c3REYXRhJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKLSAgICB2b2lkIGNyZWF0
ZUluZGV4KGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCSW5kZXhJbmZvJik7Ci0gICAg
dm9pZCBkZWxldGVJbmRleChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIHVpbnQ2NF90IG9iamVjdFN0
b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpbmRleE5hbWUpOwotICAgIHZvaWQgcmVuYW1l
SW5kZXgoY29uc3QgSURCUmVxdWVzdERhdGEmLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZp
ZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lKTsKLSAg
ICB2b2lkIHB1dE9yQWRkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5RGF0YSYs
IGNvbnN0IElEQlZhbHVlJiwgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUpOwot
ICAgIHZvaWQgZ2V0UmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCR2V0UmVj
b3JkRGF0YSYpOwotICAgIHZvaWQgZ2V0QWxsUmVjb3Jkcyhjb25zdCBJREJSZXF1ZXN0RGF0YSYs
IGNvbnN0IElEQkdldEFsbFJlY29yZHNEYXRhJik7Ci0gICAgdm9pZCBnZXRDb3VudChjb25zdCBJ
REJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYpOwotICAgIHZvaWQgZGVsZXRl
UmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJik7Ci0g
ICAgdm9pZCBvcGVuQ3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCQ3Vyc29y
SW5mbyYpOwotICAgIHZvaWQgaXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNv
bnN0IElEQkl0ZXJhdGVDdXJzb3JEYXRhJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhYm9y
dCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWJvcnRXaXRob3V0Q2FsbGJhY2soKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbW1pdCh1aW50NjRfdCBwZW5kaW5nUmVxdWVzdENvdW50
KTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURC
UmVxdWVzdERhdGEmLCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3Qg
U3RyaW5nJiBvYmplY3RTdG9yZU5hbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVuYW1l
T2JqZWN0U3RvcmUoY29uc3QgSURCUmVxdWVzdERhdGEmLCB1aW50NjRfdCBvYmplY3RTdG9yZUlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBjbGVhck9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgdWludDY0X3Qgb2JqZWN0
U3RvcmVJZGVudGlmaWVyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNyZWF0ZUluZGV4KGNv
bnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCSW5kZXhJbmZvJik7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBkZWxldGVJbmRleChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIHVpbnQ2NF90IG9i
amVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpbmRleE5hbWUpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgcmVuYW1lSW5kZXgoY29uc3QgSURCUmVxdWVzdERhdGEmLCB1aW50NjRf
dCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBuZXdOYW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHB1dE9yQWRkKGNvbnN0
IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5RGF0YSYsIGNvbnN0IElEQlZhbHVlJiwgSW5k
ZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUpOworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgZ2V0UmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCR2V0UmVjb3JkRGF0
YSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0QWxsUmVjb3Jkcyhjb25zdCBJREJSZXF1
ZXN0RGF0YSYsIGNvbnN0IElEQkdldEFsbFJlY29yZHNEYXRhJik7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBnZXRDb3VudChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleVJhbmdl
RGF0YSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGVsZXRlUmVjb3JkKGNvbnN0IElEQlJl
cXVlc3REYXRhJiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJik7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBvcGVuQ3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCQ3Vyc29ySW5m
byYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXF1
ZXN0RGF0YSYsIGNvbnN0IElEQkl0ZXJhdGVDdXJzb3JEYXRhJik7CiAKICAgICB2b2lkIGRpZEFj
dGl2YXRlSW5CYWNraW5nU3RvcmUoY29uc3QgSURCRXJyb3ImKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkVycm9yLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3IuaAppbmRleCBmZjE3Yzk4
YTQxMTVkZTYyY2FjYzcwYWQzMjUyYmQ2ZWRmMTFmMzk5Li5iMzBhZDM5MTc2ZjAzZmYwZDZjOTM5
OGQ2YjNlZDE5Y2QyZTk5MjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3IuaApAQCAtNTIsNiArNTIsNyBAQCBwdWJsaWM6CiAgICAg
U3RyaW5nIG1lc3NhZ2UoKSBjb25zdDsKIAogICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1
cm4gIW1fY29kZTsgfQorICAgIG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhaXNOdWxs
KCk7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIElEQkVycm9yIGlzb2xhdGVkQ29weSgpIGNvbnN0
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQv
SURCUmVxdWVzdERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJl
ZC9JREJSZXF1ZXN0RGF0YS5oCmluZGV4IDAxOGNiMTNlNzVlYjY0NWRkMTE0ZTI0ZjZkYmZlYTM0
Y2Y1NWIxNjQuLjAwMTc4N2E2NjU4YTQxNzhiNmE3OTcxMjhhMDRkYTM2YjhhZmRmZjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0
RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJS
ZXF1ZXN0RGF0YS5oCkBAIC01Niw4ICs1Niw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9S
VCBJREJSZXF1ZXN0RGF0YSBpc29sYXRlZENvcHkoKSBjb25zdDsKIAogICAgIElEQkNvbm5lY3Rp
b25JZGVudGlmaWVyIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKCkgY29uc3Q7Ci0gICAgSURC
UmVzb3VyY2VJZGVudGlmaWVyIHJlcXVlc3RJZGVudGlmaWVyKCkgY29uc3Q7Ci0gICAgSURCUmVz
b3VyY2VJZGVudGlmaWVyIHRyYW5zYWN0aW9uSWRlbnRpZmllcigpIGNvbnN0OworICAgIFdFQkNP
UkVfRVhQT1JUIElEQlJlc291cmNlSWRlbnRpZmllciByZXF1ZXN0SWRlbnRpZmllcigpIGNvbnN0
OworICAgIFdFQkNPUkVfRVhQT1JUIElEQlJlc291cmNlSWRlbnRpZmllciB0cmFuc2FjdGlvbklk
ZW50aWZpZXIoKSBjb25zdDsKICAgICB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIoKSBj
b25zdDsKICAgICB1aW50NjRfdCBpbmRleElkZW50aWZpZXIoKSBjb25zdDsKICAgICBJbmRleGVk
REI6OkluZGV4UmVjb3JkVHlwZSBpbmRleFJlY29yZFR5cGUoKSBjb25zdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXNvdXJjZUlkZW50
aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXNv
dXJjZUlkZW50aWZpZXIuaAppbmRleCBiZTE2MTk3ZjYzNGE1OTZjMzllNTEzMDI4NTkwNjgzNTc0
NTg2ODJhLi5iZDM5NTRhMjg5NzNjZWI4YTViZjY0OGY0YWE1MTIzZjJlZmJlZjQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzb3VyY2VJ
ZGVudGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVk
L0lEQlJlc291cmNlSWRlbnRpZmllci5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICBJ
REJSZXNvdXJjZUlkZW50aWZpZXIoY29uc3QgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkm
LCBjb25zdCBJREJSZXF1ZXN0Jik7CiAgICAgZXhwbGljaXQgSURCUmVzb3VyY2VJZGVudGlmaWVy
KGNvbnN0IElEQlNlcnZlcjo6SURCQ29ubmVjdGlvblRvQ2xpZW50Jik7CiAKLSAgICBzdGF0aWMg
SURCUmVzb3VyY2VJZGVudGlmaWVyIGVtcHR5VmFsdWUoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgSURCUmVzb3VyY2VJZGVudGlmaWVyIGVtcHR5VmFsdWUoKTsKICAgICBib29sIGlzRW1w
dHkoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuICFtX3Jlc291cmNlTnVtYmVyICYmICFt
X2lkYkNvbm5lY3Rpb25JZGVudGlmaWVyOwpAQCAtNjAsNyArNjAsOCBAQCBwdWJsaWM6CiAgICAg
ICAgIHVpbnQ2NF90IGhhc2hDb2Rlc1syXSA9IHsgbV9pZGJDb25uZWN0aW9uSWRlbnRpZmllci50
b1VJbnQ2NCgpLCBtX3Jlc291cmNlTnVtYmVyIH07CiAgICAgICAgIHJldHVybiBTdHJpbmdIYXNo
ZXI6Omhhc2hNZW1vcnk8c2l6ZW9mKGhhc2hDb2Rlcyk+KGhhc2hDb2Rlcyk7CiAgICAgfQotICAg
IAorCisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgb3Ro
ZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CiAgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgb3RoZXIpIGNvbnN0CiAgICAgewogICAg
ICAgICByZXR1cm4gbV9pZGJDb25uZWN0aW9uSWRlbnRpZmllciA9PSBvdGhlci5tX2lkYkNvbm5l
Y3Rpb25JZGVudGlmaWVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggNTZhODY1MDRlMTZiMzAzMzM1Y2ZhOWYxOGUxOTkwOWViMmE0
NDUyMy4uMDkyMGRlNDA5ODBjODU1OTE0M2Y1MmQyMmY2ZTZhODJkM2M2NTM5NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTU0
NCwxMCArMTU0NCwxMCBAQAogCQk1MTEyM0UyRjI3Njk0MENBMDBGOUQ0MUIgLyogTm90aWZpY2F0
aW9uRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTExMjNFMkMyNzY5M0MzMjAwRjlENDFCIC8qIE5vdGlmaWNhdGlvbkRhdGEuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTE3RjMwRTI1RTYxMDIw
MDAyQTlGMUUgLyogUmVtb3RlQ29tbWFuZExpc3RlbmVyQ29jb2EuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMTdGMzBDMjVFNjEwMUYwMDJBOUYxRSAv
KiBSZW1vdGVDb21tYW5kTGlzdGVuZXJDb2NvYS5oICovOyB9OwogCQk1MTFFQzEyODFDNTBBQUNB
MDAzMkY5ODMgLyogSURCU2VyaWFsaXphdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTExRUMxMjYxQzUwQUE1NzAwMzJGOTgzIC8qIElEQlNlcmlh
bGl6YXRpb24uaCAqLzsgfTsKLQkJNTExRUMxMkMxQzUwQUJCRjAwMzJGOTgzIC8qIFNRTGl0ZUlE
QlRyYW5zYWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTFFQzEyQTFDNTBBQkJBMDAzMkY5ODMgLyogU1FMaXRlSURCVHJhbnNhY3Rpb24uaCAq
LzsgfTsKKwkJNTExRUMxMkMxQzUwQUJCRjAwMzJGOTgzIC8qIFNRTGl0ZUlEQlRyYW5zYWN0aW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTFFQzEy
QTFDNTBBQkJBMDAzMkY5ODMgLyogU1FMaXRlSURCVHJhbnNhY3Rpb24uaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTFFQzEzMDFDNTBBQkY1MDAz
MkY5ODMgLyogU1FMaXRlSURCQ3Vyc29yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MTFFQzEyRTFDNTBBQkVDMDAzMkY5ODMgLyogU1FMaXRlSURCQ3Vy
c29yLmggKi87IH07CiAJCTUxMjBCQkFGMUYxQ0VDRTcwMEVGRUJGMSAvKiBDb29raWVTdG9yYWdl
T2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxMjBCQkFEMUYxQ0U3NzAwMEVGRUJGMSAvKiBDb29raWVTdG9yYWdlT2JzZXJ2ZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk1MTJCREI0QjFD
NDU2RkZBMDA2NDk0REYgLyogU1FMaXRlSURCQmFja2luZ1N0b3JlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTJCREI0OTFDNDU2RkFCMDA2NDk0REYg
LyogU1FMaXRlSURCQmFja2luZ1N0b3JlLmggKi87IH07CisJCTUxMkJEQjRCMUM0NTZGRkEwMDY0
OTRERiAvKiBTUUxpdGVJREJCYWNraW5nU3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMkJEQjQ5MUM0NTZGQUIwMDY0OTRERiAvKiBTUUxpdGVJ
REJCYWNraW5nU3RvcmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk1MTJERDhGNTBEOTFFNkFGMDAwRjg5RUUgLyogTGVnYWN5V2ViQXJjaGl2ZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyREQ4RUIw
RDkxRTZBRjAwMEY4OUVFIC8qIExlZ2FjeVdlYkFyY2hpdmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTJERDhGNjBEOTFFNkFGMDAwRjg5RUUg
LyogQXJjaGl2ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTEyREQ4RUMwRDkxRTZBRjAwMEY4OUVFIC8qIEFyY2hpdmUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTJERDhGODBEOTFFNkFGMDAwRjg5
RUUgLyogQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyREQ4RUUwRDkxRTZBRjAwMEY4OUVFIC8qIEFyY2hp
dmVSZXNvdXJjZUNvbGxlY3Rpb24uaCAqLzsgfTsKQEAgLTE1OTMsNyArMTU5Myw3IEBACiAJCTUx
NkQ3RDcyMUJCNUYwQkQwMEFGN0M3NyAvKiBJREJDb25uZWN0aW9uVG9DbGllbnREZWxlZ2F0ZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE2RDdENkUx
QkI1RjA2NTAwQUY3Qzc3IC8qIElEQkNvbm5lY3Rpb25Ub0NsaWVudERlbGVnYXRlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE2RjdGNkQxQzMx
RTM5QTAwRjExMURDIC8qIFNlcnZlck9wZW5EQlJlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNkY3RjZDMUMzMUM3OUQwMEYxMTFEQyAvKiBT
ZXJ2ZXJPcGVuREJSZXF1ZXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNTE3MTM4RjAxQkVEMUQxQTAwMEQ1RjAxIC8qIEluZGV4S2V5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTcxMzhFRTFCRUQx
RDE3MDAwRDVGMDEgLyogSW5kZXhLZXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwotCQk1MTcxMzhGODFCRjEyOEJCMDAwRDVGMDEgLyogSW5kZXhWYWx1
ZVN0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTcxMzhGNjFCRjEyMjYyMDAwRDVGMDEgLyogSW5kZXhWYWx1ZVN0b3JlLmggKi87IH07CisJCTUx
NzEzOEY4MUJGMTI4QkIwMDBENUYwMSAvKiBJbmRleFZhbHVlU3RvcmUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNzEzOEY2MUJGMTIyNjIwMDBENUYw
MSAvKiBJbmRleFZhbHVlU3RvcmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk1MTcxMzhGQzFCRjNBREY0MDAwRDVGMDEgLyogSURCQ3Vyc29ySW5m
by5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3MTM4
RkExQkYzQURBQzAwMEQ1RjAxIC8qIElEQkN1cnNvckluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTcxMzkwNjFCRjY0REVDMDAwRDVGMDEg
LyogTWVtb3J5T2JqZWN0U3RvcmVDdXJzb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxNzEzOTA0MUJGNjRERTMwMDBENUYwMSAvKiBNZW1vcnlPYmpl
Y3RTdG9yZUN1cnNvci5oICovOyB9OwogCQk1MTcxMzkwODFCRjY0REVGMDAwRDVGMDEgLyogTWVt
b3J5Q3Vyc29yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTcxMzkwMjFCRjY0REUzMDAwRDVGMDEgLyogTWVtb3J5Q3Vyc29yLmggKi87IH07CkBAIC0x
NjY5LDcgKzE2NjksNyBAQAogCQk1MUI5MTQxMDFGRDI3ODJEMDBFRTI4NTkgLyogUmVnaXN0cmF0
aW9uRGF0YWJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxQjkxNDBDMUZEMjc4MjUwMEVFMjg1OSAvKiBSZWdpc3RyYXRpb25EYXRhYmFzZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxQjkxNDEx
MUZEMjc4MkQwMEVFMjg1OSAvKiBSZWdpc3RyYXRpb25TdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCOTE0MEIxRkQyNzgyNTAwRUUyODU5IC8q
IFJlZ2lzdHJhdGlvblN0b3JlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNTFCQTRBQzQxQkJCNUNEODAwREYzRDZEIC8qIElEQkRhdGFiYXNlSW5m
by5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCQTRB
QzIxQkJCNUNCRjAwREYzRDZEIC8qIElEQkRhdGFiYXNlSW5mby5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTUxQkE0QUNCMUJCQzVCRDkwMERGM0Q2
RCAvKiBNZW1vcnlJREJCYWNraW5nU3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkE0QUM5MUJCQzVCOUUwMERGM0Q2RCAvKiBNZW1vcnlJREJC
YWNraW5nU3RvcmUuaCAqLzsgfTsKKwkJNTFCQTRBQ0IxQkJDNUJEOTAwREYzRDZEIC8qIE1lbW9y
eUlEQkJhY2tpbmdTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTFCQTRBQzkxQkJDNUI5RTAwREYzRDZEIC8qIE1lbW9yeUlEQkJhY2tpbmdTdG9y
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUx
QkE0QUNDMUJCQzVCREQwMERGM0Q2RCAvKiBJREJCYWNraW5nU3RvcmUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkE0QUM3MUJCQzVBRDYwMERGM0Q2
RCAvKiBJREJCYWNraW5nU3RvcmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk1MUJBOTQ3MTIzQUMzMDUzMDA0NDQ4NDYgLyogUnVuSmF2YVNjcmlw
dFBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxQkE5NDZGMjNBQzMwNTAwMDQ0NDg0NiAvKiBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxQkND
RTMwMUY4RjE3OUUwMDZCQTBFRCAvKiBTZXJ2aWNlV29ya2VyVGhyZWFkLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdDODcxMDFGOEVFNzJFMDBFQjgw
NzYgLyogU2VydmljZVdvcmtlclRocmVhZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC0xNjg1LDcgKzE2ODUsNyBAQAogCQk1MUUwQkFCQjBEQTU1
NDcxMDBBOUU0MTcgLyogU3RvcmFnZUV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUwQkFCOTBEQTU1NDcxMDBBOUU0MTcgLyogU3RvcmFnZUV2
ZW50LmggKi87IH07CiAJCTUxRTBCQUVCMERBNTVENEEwMEE5RTQxNyAvKiBKU1N0b3JhZ2VFdmVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFMEJB
RTkwREE1NUQ0QTAwQTlFNDE3IC8qIEpTU3RvcmFnZUV2ZW50LmggKi87IH07CiAJCTUxRTBCQjM4
MERBNUFDQjYwMEE5RTQxNyAvKiBTdG9yYWdlTWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUwQkIzNjBEQTVBQ0I2MDBBOUU0MTcgLyogU3RvcmFn
ZU1hcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0J
CTUxRTFCQUMzMUJEODA2NEUwMDU1RDgxRiAvKiBNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlv
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFMUJB
QzExQkQ4MDY0NzAwNTVEODFGIC8qIE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uLmggKi87
IH07CisJCTUxRTFCQUMzMUJEODA2NEUwMDU1RDgxRiAvKiBNZW1vcnlCYWNraW5nU3RvcmVUcmFu
c2FjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTFFMUJBQzExQkQ4MDY0NzAwNTVEODFGIC8qIE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9u
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFF
MjY5MzcxREQzQkQ5QjAwNkI2QTU4IC8qIElEQkl0ZXJhdGVDdXJzb3JEYXRhLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUyNjkzNTFERDNCRDkxMDA2
QjZBNTggLyogSURCSXRlcmF0ZUN1cnNvckRhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUUzOTkwMDFENkU0NzUwMDA5Qzg4MzEgLyogR2Ft
ZUNvbnRyb2xsZXJHYW1lcGFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MUUzOThGQzFENkU0NzRCMDA5Qzg4MzEgLyogR2FtZUNvbnRyb2xsZXJHYW1l
cGFkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NTFFMzk5MDIxRDZFNDc1MDAwOUM4ODMxIC8qIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUzOThG
RTFENkU0NzRCMDA5Qzg4MzEgLyogR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTY5NSw3ICsx
Njk1LDcgQEAKIAkJNTFFQ0MzRjgyMDA1ODdCRjAwNDgzRUFFIC8qIE1lc3NhZ2VQb3J0Q2hhbm5l
bFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MUVDQzNGMTIwMDU4N0I1MDA0ODNFQUUgLyogTWVzc2FnZVBvcnRDaGFubmVsUmVnaXN0cnku
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUVD
QzNGRDIwMDU5MzBEMDA0ODNFQUUgLyogTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRUNDM0ZCMjAwNTkz
MDEwMDQ4M0VBRSAvKiBNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxRUU3QjM4MUFBNTBCMDUwMEY5
MkIyMSAvKiBSZXNvdXJjZUxvYWRJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MUVFN0IzNzFBQTUwQjA1MDBGOTJCMjEgLyogUmVzb3VyY2VMb2Fk
SW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0J
CTUxRUVBQTc0MUJFRkZBQjEwMDIxODAwOCAvKiBJbmRleFZhbHVlRW50cnkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRUVBQTcyMUJFRkZBNzkwMDIx
ODAwOCAvKiBJbmRleFZhbHVlRW50cnkuaCAqLzsgfTsKKwkJNTFFRUFBNzQxQkVGRkFCMTAwMjE4
MDA4IC8qIEluZGV4VmFsdWVFbnRyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTFFRUFBNzIxQkVGRkE3OTAwMjE4MDA4IC8qIEluZGV4VmFsdWVFbnRy
eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUx
RjE3NEZFMUYzNTg5OTIwMEM3NDk1MCAvKiBXb3JrZXJUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUYxNzRGQzFGMzU4OTg4MDBDNzQ5NTAgLyog
V29ya2VyVHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTUxRjE3NTAzMUYzNThCM0IwMEM3NDk1MCAvKiBKU1NlcnZpY2VXb3JrZXJVcGRhdGVW
aWFDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTFGMTc1MDExRjM1OEIzNjAwQzc0OTUwIC8qIEpTU2VydmljZVdvcmtlclVwZGF0ZVZpYUNhY2hl
LmggKi87IH07CiAJCTUxRjE3NTA2MUYzNThCRjcwMEM3NDk1MCAvKiBKU1dvcmtlclR5cGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjE3NTA1MUYz
NThCREUwMEM3NDk1MCAvKiBKU1dvcmtlclR5cGUuaCAqLzsgfTsKQEAgLTI5OTUsNiArMjk5NSw3
IEBACiAJCTkzQjJEODE2MEY5OTIwRDIwMDZBRTZCMiAvKiBTdWRkZW5UZXJtaW5hdGlvbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCMkQ4MTUwRjk5
MjBEMjAwNkFFNkIyIC8qIFN1ZGRlblRlcm1pbmF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNCMzhFQzMyNTgyMURCNDAwMTk4RTYzIC8q
IFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5M0IzOEVCQTI1ODIxOTNCMDAxOThFNjMgLyogV2ViU3BlZWNoUmVj
b2duaXplclRhc2suaCAqLzsgfTsKIAkJOTNCMzhFQzQyNTgyMURCNzAwMTk4RTYzIC8qIFdlYlNw
ZWVjaFJlY29nbml6ZXJUYXNrTW9jay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTNCMzhFQkIyNTgyMTkzRDAwMTk4RTYzIC8qIFdlYlNwZWVjaFJlY29n
bml6ZXJUYXNrTW9jay5oICovOyB9OworCQk5M0I2MzFFMjI3QUJBMUU2MDA0NDNBNDQgLyogVW5p
cXVlSURCRGF0YWJhc2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5M0I2MzFFMDI3QUJBMUUyMDA0NDNBNDQgLyogVW5pcXVlSURCRGF0YWJh
c2VNYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJOTNCNkEwRTYwQjBCQ0E1QzAwRjUwMjdBIC8qIENvbnRleHRNZW51LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0I2QTBFNTBCMEJDQTVDMDBG
NTAyN0EgLyogQ29udGV4dE1lbnUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk5M0I3MEQ2NDA5RUIwQzdDMDA5RDg0NjggLyogSlNET01CaW5kaW5n
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0I3MEQ0
ODA5RUIwQzdDMDA5RDg0NjggLyogSlNET01CaW5kaW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNCNzBENkEwOUVCMEM3QzAwOUQ4NDY4IC8q
IEpTRXZlbnRMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTNCNzBENEUwOUVCMEM3QzAwOUQ4NDY4IC8qIEpTRXZlbnRMaXN0ZW5lci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMjgyOCw2
ICsxMjgyOSw3IEBACiAJCTkzQjM4RUJBMjU4MjE5M0IwMDE5OEU2MyAvKiBXZWJTcGVlY2hSZWNv
Z25pemVyVGFzay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTcGVlY2hS
ZWNvZ25pemVyVGFzay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0IzOEVCQjI1
ODIxOTNEMDAxOThFNjMgLyogV2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2NrLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jay5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0IzOEVCQzI1ODIxOTNFMDAxOThFNjMgLyog
V2ViU3BlZWNoUmVjb2duaXplclRhc2subW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBXZWJTcGVlY2hSZWNvZ25pemVyVGFzay5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJOTNCNjMxRTAyN0FCQTFFMjAwNDQzQTQ0IC8qIFVuaXF1ZUlEQkRhdGFiYXNl
TWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVbmlxdWVJREJEYXRh
YmFzZU1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCNkEwRTUwQjBC
Q0E1QzAwRjUwMjdBIC8qIENvbnRleHRNZW51LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDb250ZXh0TWVudS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0I3
MEQ0ODA5RUIwQzdDMDA5RDg0NjggLyogSlNET01CaW5kaW5nLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU0RPTUJpbmRpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTNCNzBENEQwOUVCMEM3QzAwOUQ4NDY4IC8qIEpTRXZlbnRMaXN0ZW5lci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNFdmVudExpc3RlbmVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIyMTUxLDYgKzIyMTUzLDcgQEAKIAkJCQk1
MTg4NjRERjFCQkFGMzBGMDBFNTQwQzkgLyogVW5pcXVlSURCRGF0YWJhc2UuaCAqLywKIAkJCQk1
MTk4RjdBMjFCQkRBQTI5MDBFMkNDNUYgLyogVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmNw
cCAqLywKIAkJCQk1MTk4RjdBMzFCQkRBQTI5MDBFMkNDNUYgLyogVW5pcXVlSURCRGF0YWJhc2VD
b25uZWN0aW9uLmggKi8sCisJCQkJOTNCNjMxRTAyN0FCQTFFMjAwNDQzQTQ0IC8qIFVuaXF1ZUlE
QkRhdGFiYXNlTWFuYWdlci5oICovLAogCQkJCTUxOThGN0E2MUJCREQzODEwMEUyQ0M1RiAvKiBV
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcCAqLywKIAkJCQk1MTk4RjdBNzFCQkREMzgx
MDBFMkNDNUYgLyogVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5oICovLAogCQkJKTsKQEAg
LTM3NzcxLDYgKzM3Nzc0LDcgQEAKIAkJCQlBODYzRTIwMTEzNDM0MTIwMDAyNzQ5MjYgLyogVW5p
Y29kZUJpZGkuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxODg2NEUxMUJCQUY1NzQwMEU1NDBDOSAv
KiBVbmlxdWVJREJEYXRhYmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE5OEY3QTUxQkJEQjc5
MzAwRTJDQzVGIC8qIFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8s
CisJCQkJOTNCNjMxRTIyN0FCQTFFNjAwNDQzQTQ0IC8qIFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE5OEY3QTkxQkJERDM4NTAwRTJDQzVGIC8qIFVuaXF1
ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUU0QUZDRkE1MERB
RjI5QTMwMEY1RjU1QyAvKiBVbml0QmV6aWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMThDQzBB
NDI1ODBFRkIxMDAzRDc1RkIgLyogVW5pdmVyc2FsQWNjZXNzWm9vbS5oIGluIEhlYWRlcnMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IGM3YjE3ZmQ3MDc4NTRiMTI4NDk4ZDEx
MThmNGU2ZTdkNWIzZDg1ZmQuLjI4N2MxYmY3NDhjODNjNmMxZTZjNzJiYTEyOGM0ZDBhMWM2NjEy
MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC01MiwxMyArNTIsMTMgQEAKICNp
bmNsdWRlICJOZXR3b3JrU29ja2V0Q2hhbm5lbE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTmV0d29y
a1NvY2tldFN0cmVhbS5oIgogI2luY2x1ZGUgIk5ldHdvcmtTb2NrZXRTdHJlYW1NZXNzYWdlcy5o
IgorI2luY2x1ZGUgIk5ldHdvcmtTdG9yYWdlTWFuYWdlci5oIgogI2luY2x1ZGUgIlBpbmdMb2Fk
LmgiCiAjaW5jbHVkZSAiUHJlY29ubmVjdFRhc2suaCIKICNpbmNsdWRlICJSVENEYXRhQ2hhbm5l
bFJlbW90ZU1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUg
IldlYkVycm9ycy5oIgotI2luY2x1ZGUgIldlYklEQlNlcnZlci5oIgogI2luY2x1ZGUgIldlYlBy
b2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sTWVzc2FnZXMuaCIKICNp
bmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCIKQEAgLTQwOCw4ICs0MDgs
MTIgQEAgYm9vbCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmUKIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6dXBkYXRlUXVvdGFCYXNlZE9uU3BhY2VVc2FnZUZvclRlc3RpbmcoY29uc3Qg
Q2xpZW50T3JpZ2luJiBvcmlnaW4pCiB7Ci0gICAgYXV0byBzdG9yYWdlUXVvdGFNYW5hZ2VyID0g
bV9uZXR3b3JrUHJvY2Vzcy0+c3RvcmFnZVF1b3RhTWFuYWdlcihzZXNzaW9uSUQoKSwgb3JpZ2lu
KTsKLSAgICBzdG9yYWdlUXVvdGFNYW5hZ2VyLT5yZXNldFF1b3RhVXBkYXRlZEJhc2VkT25Vc2Fn
ZUZvclRlc3RpbmcoKTsKKyAgICBhdXRvKiBzZXNzaW9uID0gbV9uZXR3b3JrUHJvY2Vzcy0+bmV0
d29ya1Nlc3Npb24oc2Vzc2lvbklEKCkpOworICAgIGlmICghc2Vzc2lvbikKKyAgICAgICAgcmV0
dXJuOworCisgICAgaWYgKGF1dG8qIHN0b3JhZ2VNYW5hZ2VyID0gc2Vzc2lvbi0+c3RvcmFnZU1h
bmFnZXIoKSkKKyAgICAgICAgc3RvcmFnZU1hbmFnZXItPnJlc2V0UXVvdGFVcGRhdGVkQmFzZWRP
blVzYWdlRm9yVGVzdGluZyhvcmlnaW4pOwogfQogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCkBAIC0xMDAx
LDggKzEwMDUsMTAgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6d3JpdGVC
bG9ic1RvVGVtcG9yYXJ5RmlsZXNGb3JJbmRleGVkREIoY29uc3QKICAgICAgICAgZm9yIChhdXRv
JiBmaWxlIDogZmlsZVJlZmVyZW5jZXMpCiAgICAgICAgICAgICBmaWxlLT5yZXZva2VGaWxlQWNj
ZXNzKCk7CiAKLSAgICAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpKQot
ICAgICAgICAgICAgc2Vzc2lvbi0+ZW5zdXJlV2ViSURCU2VydmVyKCkucmVnaXN0ZXJUZW1wb3Jh
cnlCbG9iRmlsZVBhdGhzKG1fY29ubmVjdGlvbiwgZmlsZVBhdGhzKTsKKyAgICAgICAgaWYgKGF1
dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpKSB7CisgICAgICAgICAgICBpZiAoYXV0byog
c3RvcmFnZU1hbmFnZXIgPSBzZXNzaW9uLT5zdG9yYWdlTWFuYWdlcigpKQorICAgICAgICAgICAg
ICAgIHN0b3JhZ2VNYW5hZ2VyLT5yZWdpc3RlclRlbXBvcmFyeUJsb2JGaWxlUGF0aHMobV9jb25u
ZWN0aW9uLCBmaWxlUGF0aHMpOworICAgICAgICB9CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KFdURk1vdmUoZmlsZVBhdGhzKSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDdjNzllMmEyMDk3NmExMzljN2Y2
NjdmMTEzYzQ4OTQ2ZGVkZDU2NDEuLjE3NWJkMzgxNjQ3NDkxNmNjMDExNWM5ZDhmZjJjNTg2YmQw
ZTMxZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwCkBAIC0yNjQsOCArMjY0LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGlkQ2xvc2Uo
SVBDOjpDb25uZWN0aW9uJikKICAgICAvLyBNYWtlIHN1cmUgd2UgZmx1c2ggYWxsIGNvb2tpZXMg
dG8gZGlzayBiZWZvcmUgZXhpdGluZy4KICAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oWyZdIChh
dXRvJiBzZXNzaW9uKSB7CiAgICAgICAgIHBsYXRmb3JtRmx1c2hDb29raWVzKHNlc3Npb24uc2Vz
c2lvbklEKCksIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7Ci0gICAgICAgIC8vIE1ha2Ugc3Vy
ZSByZWZlcmVuY2UgdG8gTmV0d29ya1Byb2Nlc3MgaW4gc3BhY2VSZXF1ZXN0ZXIgaXMgcmVtb3Zl
ZC4KLSAgICAgICAgc2Vzc2lvbi5jbG9zZUlEQlNlcnZlcihbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7
IH0pOwogICAgIH0pOwogfQogCkBAIC0zODIsNyArMzgwLDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
czo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoUHJvY2Vzc0lkZW50aWZpZXIg
aWRlbnQKICAgICBjb25uZWN0aW9uLnNldE9uTGluZVN0YXRlKE5ldHdvcmtTdGF0ZU5vdGlmaWVy
OjpzaW5nbGV0b24oKS5vbkxpbmUoKSk7CiAKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdv
cmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKLSAgICAgICAgc2Vzc2lvbi0+ZW5zdXJlV2ViSURCU2Vy
dmVyKCkuYWRkQ29ubmVjdGlvbihjb25uZWN0aW9uLmNvbm5lY3Rpb24oKSwgaWRlbnRpZmllcik7
CiAgICAgICAgIGlmIChhdXRvKiBtYW5hZ2VyID0gc2Vzc2lvbi0+c3RvcmFnZU1hbmFnZXIoKSkK
ICAgICAgICAgICAgIG1hbmFnZXItPnN0YXJ0UmVjZWl2aW5nTWVzc2FnZUZyb21Db25uZWN0aW9u
KGNvbm5lY3Rpb24uY29ubmVjdGlvbigpKTsKICAgICB9CkBAIC00MDYsOCArNDAzLDcgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6YWRkV2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlUGFy
YW1ldGVycyYmIHBhcmFtZXRlcnMKICAgICBhZGRTZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlcihz
ZXNzaW9uSUQsIHBhcmFtZXRlcnMucGVyT3JpZ2luU3RvcmFnZVF1b3RhLCBwYXJhbWV0ZXJzLnBl
clRoaXJkUGFydHlPcmlnaW5TdG9yYWdlUXVvdGEsIHBhcmFtZXRlcnMuY2FjaGVTdG9yYWdlRGly
ZWN0b3J5LCBwYXJhbWV0ZXJzLmNhY2hlU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7
CiAKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsK
LSAgICAgICAgc2Vzc2lvbi0+YWRkU3RvcmFnZU1hbmFnZXJTZXNzaW9uKHBhcmFtZXRlcnMuZ2Vu
ZXJhbFN0b3JhZ2VEaXJlY3RvcnksIHBhcmFtZXRlcnMuZ2VuZXJhbFN0b3JhZ2VEaXJlY3RvcnlI
YW5kbGUsIHBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmxvY2Fs
U3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7Ci0gICAgICAgIHNlc3Npb24tPmFkZElu
ZGV4ZWREYXRhYmFzZVNlc3Npb24ocGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VEaXJlY3Rvcnks
IHBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKKyAg
ICAgICAgc2Vzc2lvbi0+YWRkU3RvcmFnZU1hbmFnZXJTZXNzaW9uKHBhcmFtZXRlcnMuZ2VuZXJh
bFN0b3JhZ2VEaXJlY3RvcnksIHBhcmFtZXRlcnMuZ2VuZXJhbFN0b3JhZ2VEaXJlY3RvcnlIYW5k
bGUsIHBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmxvY2FsU3Rv
cmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSwgcGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VE
aXJlY3RvcnksIHBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFu
ZGxlLCBwYXJhbWV0ZXJzLmNhY2hlU3RvcmFnZURpcmVjdG9yeSwgcGFyYW1ldGVycy5wZXJPcmln
aW5TdG9yYWdlUXVvdGEsIHBhcmFtZXRlcnMucGVyVGhpcmRQYXJ0eU9yaWdpblN0b3JhZ2VRdW90
YSk7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgICAgICBzZXNzaW9uLT5hZGRTZXJ2
aWNlV29ya2VyU2Vzc2lvbihwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRp
b25EZWxheUVuYWJsZWQsIFdURk1vdmUocGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uRGlyZWN0b3J5KSwgcGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5RXh0ZW5zaW9uSGFuZGxlKTsKICNlbmRpZgpAQCAtMTQ1MiwxMyArMTQ0OCw2IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OmZldGNoV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBPcHRpb25TZXQ8V2Vic2l0CiAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+bV93ZWJzaXRl
RGF0YS5ob3N0TmFtZXNXaXRoSFNUU0NhY2hlID0gaG9zdE5hbWVzV2l0aEhTVFNDYWNoZShzZXNz
aW9uSUQpOwogI2VuZGlmCiAKLSAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJz
aXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykgJiYgc2Vzc2lvbiAmJiBzZXNzaW9uLT5o
YXNJREJEYXRhYmFzZVBhdGgoKSkgewotICAgICAgICBzZXNzaW9uLT5lbnN1cmVXZWJJREJTZXJ2
ZXIoKS5nZXRPcmlnaW5zKFtjYWxsYmFja0FnZ3JlZ2F0b3JdKGF1dG8mJiBvcmlnaW5zKSB7Ci0g
ICAgICAgICAgICB3aGlsZSAoIW9yaWdpbnMuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIGNh
bGxiYWNrQWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVuZCh7IG9yaWdpbnMu
dGFrZUFueSgpLCBXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcywgMCB9KTsKLSAg
ICAgICAgfSk7Ci0gICAgfQotCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGlmICh3
ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6U2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbnMpICYmIHNlc3Npb24gJiYgc2Vzc2lvbi0+aGFzU2VydmljZVdvcmtlckRhdGFi
YXNlUGF0aCgpKSB7CiAgICAgICAgIHNlc3Npb24tPmVuc3VyZVNXU2VydmVyKCkuZ2V0T3JpZ2lu
c1dpdGhSZWdpc3RyYXRpb25zKFtjYWxsYmFja0FnZ3JlZ2F0b3JdKGNvbnN0IEhhc2hTZXQ8U2Vj
dXJpdHlPcmlnaW5EYXRhPiYgc2VjdXJpdHlPcmlnaW5zKSBtdXRhYmxlIHsKQEAgLTE1MjUsOSAr
MTUxNCw2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlw
ZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSkgJiYgc2Vzc2lvbikKICAgICAg
ICAgQ2FjaGVTdG9yYWdlOjpFbmdpbmU6OmNsZWFyQWxsQ2FjaGVzKCpzZXNzaW9uLCBbY2xlYXJU
YXNrc0hhbmRsZXJdIHsgfSk7CiAKLSAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhX
ZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykgJiYgIXNlc3Npb25JRC5pc0VwaGVt
ZXJhbCgpICYmIHNlc3Npb24pCi0gICAgICAgIHNlc3Npb24tPmVuc3VyZVdlYklEQlNlcnZlcigp
LmNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzTW9kaWZpZWRTaW5jZShtb2RpZmllZFNpbmNlLCBbY2xl
YXJUYXNrc0hhbmRsZXJdIHsgfSk7Ci0KICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAg
Ym9vbCBjbGVhclNlcnZpY2VXb3JrZXJzID0gd2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJz
aXRlRGF0YVR5cGU6OkRPTUNhY2hlKSB8fCB3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNp
dGVEYXRhVHlwZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMpOwogICAgIGlmIChjbGVhclNl
cnZpY2VXb3JrZXJzICYmICFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSAmJiBzZXNzaW9uKQpAQCAt
MTYyMCw5ICsxNjA2LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFG
b3JPcmlnaW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW8KICAgICAgICAgICAgIENh
Y2hlU3RvcmFnZTo6RW5naW5lOjpjbGVhckNhY2hlc0Zvck9yaWdpbigqc2Vzc2lvbiwgU2VjdXJp
dHlPcmlnaW5EYXRhIHsgb3JpZ2luRGF0YSB9LCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CiAg
ICAgfQogCi0gICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBl
OjpJbmRleGVkREJEYXRhYmFzZXMpICYmICFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSAmJiBzZXNz
aW9uKQotICAgICAgICBzZXNzaW9uLT5lbnN1cmVXZWJJREJTZXJ2ZXIoKS5jbG9zZUFuZERlbGV0
ZURhdGFiYXNlc0Zvck9yaWdpbnMob3JpZ2luRGF0YXMsIFtjbGVhclRhc2tzSGFuZGxlcl0geyB9
KTsKLQogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBib29sIGNsZWFyU2VydmljZVdv
cmtlcnMgPSB3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6RE9NQ2Fj
aGUpIHx8IHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9ucyk7CiAgICAgaWYgKGNsZWFyU2VydmljZVdvcmtlcnMgJiYgIXNl
c3Npb25JRC5pc0VwaGVtZXJhbCgpICYmIHNlc3Npb24pIHsKQEAgLTE4MTEsMTcgKzE3OTQsNiBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVBbmRSZXN0cmljdFdlYnNpdGVEYXRhRm9yUmVn
aXN0cmFibGVEb21haW5zKFBBTDo6U2VzcwogICAgICAgICAgICAgfQogICAgICAgICB9KTsKICAg
ICB9Ci0KLSAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6
OkluZGV4ZWREQkRhdGFiYXNlcykgJiYgc2Vzc2lvbiAmJiBzZXNzaW9uLT5oYXNJREJEYXRhYmFz
ZVBhdGgoKSkgewotICAgICAgICBzZXNzaW9uLT5lbnN1cmVXZWJJREJTZXJ2ZXIoKS5nZXRPcmln
aW5zKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgc2Vzc2lvbklELCBjYWxs
YmFja0FnZ3JlZ2F0b3IsIGRvbWFpbnNUb0RlbGV0ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9y
XShhdXRvJiYgb3JpZ2lucykgewotICAgICAgICAgICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtT
ZXNzaW9uKHNlc3Npb25JRCk7Ci0gICAgICAgICAgICBpZiAoIXNlc3Npb24gfHwgIXNlc3Npb24t
PndlYklEQlNlcnZlcigpKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAg
YXV0byBvcmlnaW5zVG9EZWxldGUgPSBmaWx0ZXJGb3JSZWdpc3RyYWJsZURvbWFpbnMob3JpZ2lu
cywgZG9tYWluc1RvRGVsZXRlQWxsTm9uQ29va2llV2Vic2l0ZURhdGFGb3IsIGNhbGxiYWNrQWdn
cmVnYXRvci0+bV9kb21haW5zKTsKLSAgICAgICAgICAgIHNlc3Npb24tPndlYklEQlNlcnZlcigp
LT5jbG9zZUFuZERlbGV0ZURhdGFiYXNlc0Zvck9yaWdpbnMob3JpZ2luc1RvRGVsZXRlLCBbY2Fs
bGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwotICAgICAgICB9KTsKLSAgICB9CiAgICAgCiAjaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGJvb2wgY2xlYXJTZXJ2aWNlV29ya2VycyA9IHdlYnNp
dGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSkgfHwgd2Vic2l0
ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25zKTsKQEAgLTE5NTgsMTMgKzE5MzAsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZWdp
c3RyYWJsZURvbWFpbnNXaXRoV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELAog
ICAgICAgICB9KTsKICAgICB9CiAgICAgCi0gICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFp
bnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpICYmIHNlc3Npb24gJiYgc2Vz
c2lvbi0+aGFzSURCRGF0YWJhc2VQYXRoKCkpIHsKLSAgICAgICAgc2Vzc2lvbi0+ZW5zdXJlV2Vi
SURCU2VydmVyKCkuZ2V0T3JpZ2lucyhbY2FsbGJhY2tBZ2dyZWdhdG9yXShhdXRvJiYgb3JpZ2lu
cykgewotICAgICAgICAgICAgd2hpbGUgKCFvcmlnaW5zLmlzRW1wdHkoKSkKLSAgICAgICAgICAg
ICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fd2Vic2l0ZURhdGEuZW50cmllcy5hcHBlbmQoeyBv
cmlnaW5zLnRha2VBbnkoKSwgV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMsIDAg
fSk7Ci0gICAgICAgIH0pOwotICAgIH0KLSAgICAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9ucykgJiYgc2Vzc2lvbiAmJiBzZXNzaW9uLT5oYXNTZXJ2aWNl
V29ya2VyRGF0YWJhc2VQYXRoKCkpIHsKICAgICAgICAgc2Vzc2lvbi0+ZW5zdXJlU1dTZXJ2ZXIo
KS5nZXRPcmlnaW5zV2l0aFJlZ2lzdHJhdGlvbnMoW2NhbGxiYWNrQWdncmVnYXRvcl0oY29uc3Qg
SGFzaFNldDxTZWN1cml0eU9yaWdpbkRhdGE+JiBzZWN1cml0eU9yaWdpbnMpIG11dGFibGUgewpA
QCAtMjEyOSw0MyArMjA5NCwxMCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwcm9jZXNzV2lsbFN1
c3BlbmRJbW1pbmVudGx5Rm9yVGVzdGluZ1N5bmMoQ29tcGxldGlvbkhhbmRsZQogICAgIHByZXBh
cmVUb1N1c3BlbmQodHJ1ZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lk
IE5ldHdvcmtQcm9jZXNzOjpzdXNwZW5kSURCU2VydmVycyhib29sIGlzU3VzcGVuc2lvbkltbWlu
ZW50KQotewotICAgIG1fc2hvdWxkU3VzcGVuZElEQlNlcnZlcnMgPSB0cnVlOwotICAgICsrbV9z
dXNwZW5zaW9uSWRlbnRpZmllcjsKLQotICAgIGJvb2wgYWxsU3VzcGVuZGVkID0gdHJ1ZTsKLSAg
ICBhdXRvIGNvbmRpdGlvbiA9IGlzU3VzcGVuc2lvbkltbWluZW50ID8gV2ViSURCU2VydmVyOjpT
dXNwZW5zaW9uQ29uZGl0aW9uOjpBbHdheXMgOiBXZWJJREJTZXJ2ZXI6OlN1c3BlbnNpb25Db25k
aXRpb246OklmSWRsZTsKLSAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oWyZdKGF1dG8mIHNlc3Np
b24pIHsKLSAgICAgICAgaWYgKGF1dG8qIHNlcnZlciA9IHNlc3Npb24ud2ViSURCU2VydmVyKCkp
Ci0gICAgICAgICAgICBhbGxTdXNwZW5kZWQgJj0gc2VydmVyLT5zdXNwZW5kKGNvbmRpdGlvbik7
Ci0gICAgfSk7Ci0KLSAgICBpZiAoYWxsU3VzcGVuZGVkKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2hBZnRlcig1X3MsIFt0aGlzLCB3ZWFrVGhpcyA9IFdl
YWtQdHIgeyAqdGhpcyB9LCBzdXNwZW5zaW9uSWRlbnRpZmllciA9IG1fc3VzcGVuc2lvbklkZW50
aWZpZXJdIHsKLSAgICAgICAgaWYgKCF3ZWFrVGhpcykKLSAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICBpZiAoIW1fc2hvdWxkU3VzcGVuZElEQlNlcnZlcnMgfHwgc3VzcGVuc2lvbklkZW50
aWZpZXIgIT0gbV9zdXNwZW5zaW9uSWRlbnRpZmllcikKLSAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oW10oYXV0byYgc2Vzc2lvbikgewotICAgICAg
ICAgICAgaWYgKGF1dG8qIHNlcnZlciA9IHNlc3Npb24ud2ViSURCU2VydmVyKCkpCi0gICAgICAg
ICAgICAgICAgc2VydmVyLT5zdXNwZW5kKFdlYklEQlNlcnZlcjo6U3VzcGVuc2lvbkNvbmRpdGlv
bjo6QWx3YXlzKTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci19Ci0KIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OnByZXBhcmVUb1N1c3BlbmQoYm9vbCBpc1N1c3BlbnNpb25JbW1pbmVudCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFJFTEVBU0VfTE9H
KFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBOZXR3b3JrUHJvY2Vzczo6cHJlcGFyZVRvU3VzcGVu
ZCgpLCBpc1N1c3BlbnNpb25JbW1pbmVudD0lZCIsIHRoaXMsIGlzU3VzcGVuc2lvbkltbWluZW50
KTsKIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgc3VzcGVuZElEQlNlcnZlcnMoaXNT
dXNwZW5zaW9uSW1taW5lbnQpOwotI2VuZGlmCi0KICAgICBsb3dNZW1vcnlIYW5kbGVyKENyaXRp
Y2FsOjpZZXMpOwogCiAgICAgUmVmUHRyPENhbGxiYWNrQWdncmVnYXRvcj4gY2FsbGJhY2tBZ2dy
ZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoW3RoaXMsIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CkBAIC0yMjIzLDE4
ICsyMTU1LDEwIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlc3VtZSgpCiAjaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQogICAgICAgICBpZiAoYXV0byogc3dTZXJ2ZXIgPSBzZXNzaW9uLnN3U2Vy
dmVyKCkpCiAgICAgICAgICAgICBzd1NlcnZlci0+ZW5kU3VzcGVuc2lvbigpOwotI2VuZGlmCi0j
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAgICAgaWYgKGF1dG8qIHNlcnZlciA9IHNlc3Np
b24ud2ViSURCU2VydmVyKCkpCi0gICAgICAgICAgICBzZXJ2ZXItPnJlc3VtZSgpOwogI2VuZGlm
CiAgICAgICAgIGlmIChhdXRvKiBtYW5hZ2VyID0gc2Vzc2lvbi5zdG9yYWdlTWFuYWdlcigpKQog
ICAgICAgICAgICAgbWFuYWdlci0+cmVzdW1lKCk7CiAgICAgfSk7Ci0KLSNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQotICAgIG1fc2hvdWxkU3VzcGVuZElEQlNlcnZlcnMgPSBmYWxzZTsKLSNlbmRp
ZgogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwcmVmZXRjaEROUyhjb25zdCBTdHJpbmcmIGhv
c3RuYW1lKQpAQCAtMjI4MSwxMiArMjIwNSwxNSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzeW5j
TG9jYWxTdG9yYWdlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZAog
CiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZXNldFF1b3RhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAg
IExvY2tlciBsb2NrZXIgeyBtX3Nlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2Vyc0xvY2sgfTsKLSAg
ICBpZiAoYXV0byogc2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXIgPSBtX3Nlc3Npb25TdG9yYWdl
UXVvdGFNYW5hZ2Vycy5nZXQoc2Vzc2lvbklEKSkgewotICAgICAgICBmb3IgKGF1dG8gc3RvcmFn
ZVF1b3RhTWFuYWdlciA6IHNlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2VyLT5leGlzdGluZ1N0b3Jh
Z2VRdW90YU1hbmFnZXJzKCkpCi0gICAgICAgICAgICBzdG9yYWdlUXVvdGFNYW5hZ2VyLT5yZXNl
dFF1b3RhRm9yVGVzdGluZygpOwotICAgIH0KLSAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAg
IGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOworICAgIGlmICghc2Vz
c2lvbikKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKCk7CisKKyAgICBhdXRvKiBz
dG9yYWdlTWFuYWdlciA9IHNlc3Npb24tPnN0b3JhZ2VNYW5hZ2VyKCk7CisgICAgaWYgKCFzdG9y
YWdlTWFuYWdlcikKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKCk7CisKKyAgICBz
dG9yYWdlTWFuYWdlci0+cmVzZXRRdW90YUZvclRlc3RpbmcoV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVhclN0b3JhZ2UoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCkBAIC0yMjk4LDYgKzIyMjUsMTYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2xlYXJT
dG9yYWdlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm8KICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAordm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGlk
SW5jcmVhc2VRdW90YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IENsaWVudE9yaWdp
biYgb3JpZ2luLCBRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIgaWRlbnRpZmllciwgc3Rk
OjpvcHRpb25hbDx1aW50NjRfdD4gbmV3UXVvdGEpCit7CisgICAgYXV0byogc2Vzc2lvbiA9IG5l
dHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7CisgICAgaWYgKCFzZXNzaW9uKQorICAgICAgICByZXR1
cm47CisKKyAgICBpZiAoYXV0byogbWFuYWdlciA9IHNlc3Npb24tPnN0b3JhZ2VNYW5hZ2VyKCkp
CisgICAgICAgIG1hbmFnZXItPmRpZEluY3JlYXNlUXVvdGEob3JpZ2luLCBpZGVudGlmaWVyLCBu
ZXdRdW90YSk7Cit9CisKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlbmFtZU9yaWdpbkluV2Vic2l0
ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIG9sZE5hbWUsIGNvbnN0
IFVSTCYgbmV3TmFtZSwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byBh
Z2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwpAQCAtMjMxMCw5ICsyMjQ3LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVu
YW1lT3JpZ2luSW5XZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFUK
ICAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKICAgICBpZiAo
YXV0byogbWFuYWdlciA9IHNlc3Npb24gPyBzZXNzaW9uLT5zdG9yYWdlTWFuYWdlcigpIDogbnVs
bHB0cikKICAgICAgICAgbWFuYWdlci0+bW92ZURhdGEob2xkT3JpZ2luLCBuZXdPcmlnaW4sIFth
Z2dyZWdhdG9yXSB7IH0pOwotCi0gICAgaWYgKGRhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0
YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykgJiYgc2Vzc2lvbiAmJiBzZXNzaW9uLT5oYXNJREJE
YXRhYmFzZVBhdGgoKSkKLSAgICAgICAgc2Vzc2lvbi0+ZW5zdXJlV2ViSURCU2VydmVyKCkucmVu
YW1lT3JpZ2luKG9sZE9yaWdpbiwgbmV3T3JpZ2luLCBbYWdncmVnYXRvcl0geyB9KTsKIH0KIAog
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKQEAgLTIzNzIsNyArMjMwNiw4IEBAIFJlZlB0cjxT
dG9yYWdlUXVvdGFNYW5hZ2VyPiBOZXR3b3JrUHJvY2Vzczo6c3RvcmFnZVF1b3RhTWFuYWdlcihQ
QUw6OlNlc3Npb25JRCBzCiAgICAgU3RvcmFnZVF1b3RhTWFuYWdlcjo6VXNhZ2VHZXR0ZXIgdXNh
Z2VHZXR0ZXIgPSBbY2FjaGVSb290UGF0aCA9IHNlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2VyLT5j
YWNoZVJvb3RQYXRoKCkuaXNvbGF0ZWRDb3B5KCksIGlkYlJvb3RQYXRoID0gaWRiUm9vdFBhdGgu
aXNvbGF0ZWRDb3B5KCksIG9yaWdpbiA9IG9yaWdpbi5pc29sYXRlZENvcHkoKV0oKSB7CiAgICAg
ICAgIEFTU0VSVCghaXNNYWluUnVuTG9vcCgpKTsKIAotICAgICAgICByZXR1cm4gQ2FjaGVTdG9y
YWdlOjpFbmdpbmU6OmRpc2tVc2FnZShjYWNoZVJvb3RQYXRoLCBvcmlnaW4pICsgSURCU2VydmVy
OjpJREJTZXJ2ZXI6OmRpc2tVc2FnZShpZGJSb290UGF0aCwgb3JpZ2luKTsKKyAgICAgICAgYXV0
byBjYWNoZVN0b3JhZ2VQYXRoID0gQ2FjaGVTdG9yYWdlOjpFbmdpbmU6OnN0b3JhZ2VQYXRoKGNh
Y2hlUm9vdFBhdGgsIG9yaWdpbik7CisgICAgICAgIHJldHVybiBDYWNoZVN0b3JhZ2U6OkVuZ2lu
ZTo6ZGlza1VzYWdlKGNhY2hlU3RvcmFnZVBhdGgpICsgSURCU2VydmVyOjpJREJTZXJ2ZXI6OmRp
c2tVc2FnZShpZGJSb290UGF0aCwgb3JpZ2luKTsKICAgICB9OwogICAgIFN0b3JhZ2VRdW90YU1h
bmFnZXI6OlF1b3RhSW5jcmVhc2VSZXF1ZXN0ZXIgcXVvdGFJbmNyZWFzZVJlcXVlc3RlciA9IFt0
aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBzZXNzaW9uSUQsIG9yaWdpbl0gKHVp
bnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgY3VycmVudFNwYWNlLCB1aW50NjRfdCByZXF1
ZXN0ZWRJbmNyZWFzZSwgYXV0byYmIGNhbGxiYWNrKSB7CiAgICAgICAgIEFTU0VSVChpc01haW5S
dW5Mb29wKCkpOwpAQCAtMjU4Niw4ICsyNTIxLDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVt
b3ZlS2VwdEFsaXZlTG9hZChOZXR3b3JrUmVzb3VyY2VMb2FkZXImIGxvYWRlcikKIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OmNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NDbG9zZWQoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7CiAgICAgaWYgKGF1dG8q
IHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIGlmIChhdXRv
KiBzZXJ2ZXIgPSBzZXNzaW9uLT53ZWJJREJTZXJ2ZXIoKSkKLSAgICAgICAgICAgIHNlcnZlci0+
cmVtb3ZlQ29ubmVjdGlvbihjb25uZWN0aW9uKTsKICAgICAgICAgaWYgKGF1dG8qIG1hbmFnZXIg
PSBzZXNzaW9uLT5zdG9yYWdlTWFuYWdlcigpKQogICAgICAgICAgICAgbWFuYWdlci0+c3RvcFJl
Y2VpdmluZ01lc3NhZ2VGcm9tQ29ubmVjdGlvbihjb25uZWN0aW9uKTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggNzg3NzkyN2Ex
N2M1NTk2ZWIwM2JkNGFjZjRkNThlNDE4YWM4YmEyMy4uMGY4NTMzZWQxM2RkMjYyNzdhNmRkNTJh
YjZkYWJlMjBjM2UwODgwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkxvY2FsU3RvcmFnZURh
dGFiYXNlVHJhY2tlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2Vy
LmgiCiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIuaCIKKyNpbmNsdWRl
ICJRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSVENEYXRhQ2hh
bm5lbFJlbW90ZU1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIK
ICNpbmNsdWRlICJXZWJQYWdlUHJveHlJZGVudGlmaWVyLmgiCkBAIC0yODgsMTIgKzI4OSwxMSBA
QCBwdWJsaWM6CiAgICAgTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXImIG5ldHdvcmtDb250
ZW50UnVsZUxpc3RNYW5hZ2VyKCkgeyByZXR1cm4gbV9uZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFu
YWdlcjsgfQogI2VuZGlmCiAKLSAgICBib29sIHNob3VsZFN1c3BlbmRJREJTZXJ2ZXJzKCkgY29u
c3QgeyByZXR1cm4gbV9zaG91bGRTdXNwZW5kSURCU2VydmVyczsgfQotCiAgICAgdm9pZCBzeW5j
TG9jYWxTdG9yYWdlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKICAgICB2b2lkIHJl
c2V0UXVvdGEoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAg
ICAgdm9pZCBjbGVhclN0b3JhZ2UoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CisgICAgdm9pZCBkaWRJbmNyZWFzZVF1b3RhKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIs
IHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IG5ld1F1b3RhKTsKICAgICB2b2lkIHJlbmFtZU9yaWdp
bkluV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYsIE9w
dGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwog
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTQ3Myw4ICs0NzMsNiBAQCBwcml2YXRlOgog
ICAgIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVBc05vQWNjZXNzKGNvbnN0IFN0cmluZyYpIGNvbnN0
OwogICAgIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVBc0NPUlNFbmFibGVkKGNvbnN0IFN0cmluZyYp
IGNvbnN0OwogCi0gICAgdm9pZCBzdXNwZW5kSURCU2VydmVycyhib29sIGlzU3VzcGVuc2lvbklt
bWluZW50KTsKLQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdm9pZCBzZXRJc0hvbGRp
bmdMb2NrZWRGaWxlcyhib29sKTsKICNlbmRpZgpAQCAtNDgyLDYgKzQ4MCw3IEBAIHByaXZhdGU6
CiAgICAgY2xhc3MgU2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXIgewogICAgICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CisgICAgICAgIFNlc3Npb25TdG9yYWdlUXVv
dGFNYW5hZ2VyKCkgPSBkZWxldGU7CiAgICAgICAgIFNlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2Vy
KGNvbnN0IFN0cmluZyYgY2FjaGVSb290UGF0aCwgdWludDY0X3QgZGVmYXVsdFF1b3RhLCB1aW50
NjRfdCBkZWZhdWx0VGhpcmRQYXJ0eVF1b3RhKQogICAgICAgICAgICAgOiBtX2NhY2hlUm9vdFBh
dGgoY2FjaGVSb290UGF0aCkKICAgICAgICAgICAgICwgbV9kZWZhdWx0UXVvdGEoZGVmYXVsdFF1
b3RhKQpAQCAtNTA4LDggKzUwNyw4IEBAIHByaXZhdGU6CiAgICAgcHJpdmF0ZToKICAgICAgICAg
U3RyaW5nIG1fY2FjaGVSb290UGF0aDsKICAgICAgICAgU3RyaW5nIG1faWRiUm9vdFBhdGg7Ci0g
ICAgICAgIHVpbnQ2NF90IG1fZGVmYXVsdFF1b3RhIHsgV2ViQ29yZTo6U3RvcmFnZVF1b3RhTWFu
YWdlcjo6ZGVmYXVsdFF1b3RhKCkgfTsKLSAgICAgICAgdWludDY0X3QgbV9kZWZhdWx0VGhpcmRQ
YXJ0eVF1b3RhIHsgV2ViQ29yZTo6U3RvcmFnZVF1b3RhTWFuYWdlcjo6ZGVmYXVsdFRoaXJkUGFy
dHlRdW90YSgpIH07CisgICAgICAgIHVpbnQ2NF90IG1fZGVmYXVsdFF1b3RhOworICAgICAgICB1
aW50NjRfdCBtX2RlZmF1bHRUaGlyZFBhcnR5UXVvdGE7CiAgICAgICAgIEhhc2hNYXA8V2ViQ29y
ZTo6Q2xpZW50T3JpZ2luLCBSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZVF1b3RhTWFuYWdlcj4+IG1f
c3RvcmFnZVF1b3RhTWFuYWdlcnM7CiAgICAgfTsKICAgICB2b2lkIGFkZFNlc3Npb25TdG9yYWdl
UXVvdGFNYW5hZ2VyKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBkZWZhdWx0UXVvdGEsIHVpbnQ2
NF90IGRlZmF1bHRUaGlyZFBhcnR5UXVvdGEsIGNvbnN0IFN0cmluZyYgY2FjaGVSb290UGF0aCwg
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJik7CkBAIC01NDksOSArNTQ4LDYgQEAgcHJpdmF0ZToK
ICAgICBXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXIgbV93ZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXI7
CiAgICAgUmVmUHRyPFByb2Nlc3NBc3NlcnRpb24+IG1faG9sZGluZ0xvY2tlZEZpbGVBc3NlcnRp
b247CiAjZW5kaWYKLQotICAgIGJvb2wgbV9zaG91bGRTdXNwZW5kSURCU2VydmVycyB7IGZhbHNl
IH07Ci0gICAgdWludDY0X3QgbV9zdXNwZW5zaW9uSWRlbnRpZmllciB7IDAgfTsKICAgICAKICNp
ZiBFTkFCTEUoV0VCX1JUQykKICAgICBSZWZQdHI8UlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2Vy
UHJveHk+IG1fcnRjRGF0YUNoYW5uZWxQcm94eTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDYzN2UxNTlm
MTg2MzkzYmVjNWNjMDVhYjViZDU3ODBiZThjNmZjZTQuLjYzMWUyYjYwNzNjMDE5MjEzMDY4YzIw
OTZiODI3YjI3OWRiYzdkZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTc5LDYgKzE3OSw3IEBAIG1l
c3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKIAogICAgIFJlc2V0UXVv
dGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYwogICAgIENsZWFyU3RvcmFn
ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+ICgpIEFzeW5jCisgICAgRGlkSW5jcmVhc2VR
dW90YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0cnVjdCBXZWJDb3JlOjpDbGllbnRPcmln
aW4gb3JpZ2luLCBXZWJLaXQ6OlF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllciBpZGVudGlm
aWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBuZXdRdW90YSkKICAgICAKICNpZiBFTkFCTEUo
QVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgSGFzQXBwQm91bmRTZXNzaW9uKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCkgLT4gKGJvb2wgaGFzQXBwQm91bmRTZXNzaW9uKSBBc3luYwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAppbmRleCBkNzYxNjI4
NTBjYWQ4NDM4ZjAwODg5MDUzZjdlZGM4MmYzZTMzYTNkLi40YTcxOTQxY2FlNzA2ZDczMGJhZTIw
YjI4MGUzZDhmZjc1ZDk0NTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtTZXNzaW9uLmNwcApAQCAtMjA1LDggKzIwNSw2IEBAIHZvaWQgTmV0d29ya1Nlc3Np
b246OmludmFsaWRhdGVBbmRDYW5jZWwoKQogICAgIGlmIChtX3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MpCiAgICAgICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+aW52YWxpZGF0ZUFuZENhbmNl
bCgpOwogI2VuZGlmCi0gICAgaWYgKGF1dG8gc2VydmVyID0gc3RkOjpleGNoYW5nZShtX3dlYklE
QlNlcnZlciwgbnVsbHB0cikpCi0gICAgICAgIHNlcnZlci0+Y2xvc2UoKTsKICAgICBpZiAoYXV0
byBtYW5hZ2VyID0gc3RkOjpleGNoYW5nZShtX3N0b3JhZ2VNYW5hZ2VyLCBudWxscHRyKSkKICAg
ICAgICAgbWFuYWdlci0+Y2xvc2UoKTsKICAgICBtX2NhY2hlRW5naW5lID0gbnVsbHB0cjsKQEAg
LTY2MSw1NSArNjU5LDE4IEBAIFdlYlNoYXJlZFdvcmtlclNlcnZlciYgTmV0d29ya1Nlc3Npb246
OmVuc3VyZVNoYXJlZFdvcmtlclNlcnZlcigpCiAgICAgcmV0dXJuICptX3NoYXJlZFdvcmtlclNl
cnZlcjsKIH0KIAotV2ViSURCU2VydmVyJiBOZXR3b3JrU2Vzc2lvbjo6ZW5zdXJlV2ViSURCU2Vy
dmVyKCkKLXsKLSAgICBpZiAoIW1fd2ViSURCU2VydmVyKSB7Ci0gICAgICAgIFN0cmluZyBwYXRo
OwotICAgICAgICBpZiAoIXNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkpIHsKLSAgICAgICAgICAg
IEFTU0VSVCghbV9pZGJEYXRhYmFzZVBhdGguaXNOdWxsKCkpOwotICAgICAgICAgICAgcGF0aCA9
IG1faWRiRGF0YWJhc2VQYXRoOwotICAgICAgICB9Ci0KLSAgICAgICAgYXV0byBzcGFjZVJlcXVl
c3RlciA9IFtuZXR3b3JrUHJvY2VzcyA9IFJlZiB7IG5ldHdvcmtQcm9jZXNzKCkgfSwgc2Vzc2lv
bklEID0gc2Vzc2lvbklEKCldKGNvbnN0IGF1dG8mIG9yaWdpbiwgdWludDY0X3Qgc3BhY2VSZXF1
ZXN0ZWQpIHsKLSAgICAgICAgICAgIHJldHVybiBuZXR3b3JrUHJvY2Vzcy0+c3RvcmFnZVF1b3Rh
TWFuYWdlcihzZXNzaW9uSUQsIG9yaWdpbiktPnJlcXVlc3RTcGFjZU9uQmFja2dyb3VuZFRocmVh
ZChzcGFjZVJlcXVlc3RlZCk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgbV93ZWJJREJTZXJ2ZXIg
PSBXZWJJREJTZXJ2ZXI6OmNyZWF0ZShzZXNzaW9uSUQoKSwgcGF0aCwgV1RGTW92ZShzcGFjZVJl
cXVlc3RlcikpOwotICAgICAgICBpZiAobmV0d29ya1Byb2Nlc3MoKS5zaG91bGRTdXNwZW5kSURC
U2VydmVycygpKQotICAgICAgICAgICAgbV93ZWJJREJTZXJ2ZXItPnN1c3BlbmQoV2ViSURCU2Vy
dmVyOjpTdXNwZW5zaW9uQ29uZGl0aW9uOjpBbHdheXMpOwotICAgIH0KLSAgICByZXR1cm4gKm1f
d2ViSURCU2VydmVyOwotfQotCi12b2lkIE5ldHdvcmtTZXNzaW9uOjpjbG9zZUlEQlNlcnZlcihD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgaWYg
KCFtX3dlYklEQlNlcnZlcikKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKCk7Ci0K
LSAgICBzdGQ6OmV4Y2hhbmdlKG1fd2ViSURCU2VydmVyLCBudWxscHRyKS0+Y2xvc2UoV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOwotfQotCi12b2lkIE5ldHdvcmtTZXNzaW9uOjphZGRJbmRl
eGVkRGF0YWJhc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYgaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5
LCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIGhhbmRsZSkKLXsKLSAgICAvLyAqKioqKioqKioK
LSAgICAvLyBJTVBPUlRBTlQ6IERvIG5vdCBjaGFuZ2UgdGhlIGRpcmVjdG9yeSBzdHJ1Y3R1cmUg
Zm9yIGluZGV4ZWQgZGF0YWJhc2VzIG9uIGRpc2sgd2l0aG91dCBmaXJzdCBjb25zdWx0aW5nIGEg
cmV2aWV3ZXIgZnJvbSBBcHBsZSAoPHJkYXI6Ly9wcm9ibGVtLzE3NDU0NzEyPikKLSAgICAvLyAq
KioqKioqKioKLSAgICBhdXRvIGlzTmV3ID0gbV9pZGJEYXRhYmFzZVBhdGguaXNOdWxsKCk7Ci0g
ICAgbV9pZGJEYXRhYmFzZVBhdGggPSBpbmRleGVkRGF0YWJhc2VEaXJlY3Rvcnk7Ci0gICAgaWYg
KGlzTmV3KSB7Ci0gICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseSho
YW5kbGUpOwotICAgICAgICBuZXR3b3JrUHJvY2VzcygpLnNldFNlc3Npb25TdG9yYWdlUXVvdGFN
YW5hZ2VySURCUm9vdFBhdGgoc2Vzc2lvbklEKCksIGluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSk7
Ci0gICAgfQotfQotCi12b2lkIE5ldHdvcmtTZXNzaW9uOjphZGRTdG9yYWdlTWFuYWdlclNlc3Np
b24oY29uc3QgU3RyaW5nJiBnZW5lcmFsU3RvcmFnZVBhdGgsIFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZSYgZ2VuZXJhbFN0b3JhZ2VQYXRoSGFuZGxlLCBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFn
ZVBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgbG9jYWxTdG9yYWdlUGF0aEhhbmRsZSkK
K3ZvaWQgTmV0d29ya1Nlc3Npb246OmFkZFN0b3JhZ2VNYW5hZ2VyU2Vzc2lvbihjb25zdCBTdHJp
bmcmIGdlbmVyYWxTdG9yYWdlUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBnZW5lcmFs
U3RvcmFnZVBhdGhIYW5kbGUsIGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlUGF0aCwgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlJiBsb2NhbFN0b3JhZ2VQYXRoSGFuZGxlLCBjb25zdCBTdHJpbmcm
IGlkYlN0b3JhZ2VQYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIGlkYlN0b3JhZ2VQYXRo
SGFuZGxlLCBjb25zdCBTdHJpbmcmIGNhY2hlU3RvcmFnZVBhdGgsIHVpbnQ2NF90IGRlZmF1bHRP
cmlnaW5RdW90YSwgdWludDY0X3QgZGVmYXVsdFRoaXJkUGFydHlRdW90YSkKIHsKICAgICBpZiAo
bV9zdG9yYWdlTWFuYWdlcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgU2FuZGJveEV4dGVuc2lv
bjo6Y29uc3VtZVBlcm1hbmVudGx5KGdlbmVyYWxTdG9yYWdlUGF0aEhhbmRsZSk7CiAgICAgU2Fu
ZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KGxvY2FsU3RvcmFnZVBhdGhIYW5kbGUp
OwotICAgIG1fc3RvcmFnZU1hbmFnZXIgPSBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZShz
ZXNzaW9uSUQoKSwgZ2VuZXJhbFN0b3JhZ2VQYXRoLCBsb2NhbFN0b3JhZ2VQYXRoKTsKKyAgICBT
YW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkoaWRiU3RvcmFnZVBhdGhIYW5kbGUp
OworICAgIElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgY29ubmVjdGlvbklEOworICAgIGlmIChh
dXRvKiBjb25uZWN0aW9uID0gbmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlv
bigpKQorICAgICAgICBjb25uZWN0aW9uSUQgPSBjb25uZWN0aW9uLT51bmlxdWVJRCgpOworICAg
IG1fc3RvcmFnZU1hbmFnZXIgPSBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZShzZXNzaW9u
SUQoKSwgY29ubmVjdGlvbklELCBnZW5lcmFsU3RvcmFnZVBhdGgsIGxvY2FsU3RvcmFnZVBhdGgs
IGlkYlN0b3JhZ2VQYXRoLCBjYWNoZVN0b3JhZ2VQYXRoLCBkZWZhdWx0T3JpZ2luUXVvdGEsIGRl
ZmF1bHRUaGlyZFBhcnR5UXVvdGEpOwogfQogCiB2b2lkIE5ldHdvcmtTZXNzaW9uOjplbnN1cmVD
YWNoZUVuZ2luZShGdW5jdGlvbjx2b2lkKENhY2hlU3RvcmFnZTo6RW5naW5lJik+JiYgY2FsbGJh
Y2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNz
aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKaW5k
ZXggM2Y5ZDZjOTU1MGE4YjhjZWM5ZTRjNTU5ZDMxZDEyMWE5OGIwZTg0MC4uNzlkN2NlNDQwNGEx
MzhkZjliODhhYWVjOTdiNjkxM2FmNjBhNGNlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaApAQCAtMjE0LDE0ICsyMTQsOCBAQCBwdWJsaWM6CiAg
ICAgV2ViU2hhcmVkV29ya2VyU2VydmVyKiBzaGFyZWRXb3JrZXJTZXJ2ZXIoKSB7IHJldHVybiBt
X3NoYXJlZFdvcmtlclNlcnZlci5nZXQoKTsgfQogICAgIFdlYlNoYXJlZFdvcmtlclNlcnZlciYg
ZW5zdXJlU2hhcmVkV29ya2VyU2VydmVyKCk7CiAKLSAgICBXZWJJREJTZXJ2ZXIqIHdlYklEQlNl
cnZlcigpIHsgcmV0dXJuIG1fd2ViSURCU2VydmVyLmdldCgpOyB9Ci0gICAgV2ViSURCU2VydmVy
JiBlbnN1cmVXZWJJREJTZXJ2ZXIoKTsKLSAgICB2b2lkIGNsb3NlSURCU2VydmVyKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBhZGRJbmRleGVkRGF0YWJhc2VTZXNzaW9u
KGNvbnN0IFN0cmluZyYgaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGUmKTsKLSAgICBib29sIGhhc0lEQkRhdGFiYXNlUGF0aCgpIGNvbnN0IHsgcmV0dXJu
ICFtX2lkYkRhdGFiYXNlUGF0aC5pc0VtcHR5KCk7IH0KLQogICAgIE5ldHdvcmtTdG9yYWdlTWFu
YWdlciogc3RvcmFnZU1hbmFnZXIoKSB7IHJldHVybiBtX3N0b3JhZ2VNYW5hZ2VyLmdldCgpOyB9
Ci0gICAgdm9pZCBhZGRTdG9yYWdlTWFuYWdlclNlc3Npb24oY29uc3QgU3RyaW5nJiBnZW5lcmFs
U3RvcmFnZVBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgZ2VuZXJhbFN0b3JhZ2VQYXRo
SGFuZGxlLCBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZVBhdGgsIFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZSYgbG9jYWxTdG9yYWdlUGF0aEhhbmRsZSk7CisgICAgdm9pZCBhZGRTdG9yYWdlTWFu
YWdlclNlc3Npb24oY29uc3QgU3RyaW5nJiBnZW5lcmFsU3RvcmFnZVBhdGgsIFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZSYgZ2VuZXJhbFN0b3JhZ2VQYXRoSGFuZGxlLCBjb25zdCBTdHJpbmcmIGxv
Y2FsU3RvcmFnZVBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgbG9jYWxTdG9yYWdlUGF0
aEhhbmRsZSwgY29uc3QgU3RyaW5nJiBpZGJTdG9yYWdlUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlJiBpZGJTdG9yYWdlUGF0aEhhbmRsZSwgY29uc3QgU3RyaW5nJiBjYWNoZVN0b3JhZ2VQ
YXRoLCB1aW50NjRfdCBkZWZhdWx0T3JpZ2luUXVvdGEsIHVpbnQ2NF90IGRlZmF1bHRUaGlyZFBh
cnR5UXVvdGEpOwogCiAgICAgQ2FjaGVTdG9yYWdlOjpFbmdpbmUqIGNhY2hlRW5naW5lKCkgeyBy
ZXR1cm4gbV9jYWNoZUVuZ2luZS5nZXQoKTsgfQogICAgIHZvaWQgZW5zdXJlQ2FjaGVFbmdpbmUo
RnVuY3Rpb248dm9pZChDYWNoZVN0b3JhZ2U6OkVuZ2luZSYpPiYmKTsKQEAgLTMyNCw5ICszMTgs
NiBAQCBwcm90ZWN0ZWQ6CiAjZW5kaWYKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViU2hhcmVkV29y
a2VyU2VydmVyPiBtX3NoYXJlZFdvcmtlclNlcnZlcjsKIAotICAgIFN0cmluZyBtX2lkYkRhdGFi
YXNlUGF0aDsKLSAgICBSZWZQdHI8V2ViSURCU2VydmVyPiBtX3dlYklEQlNlcnZlcjsKLQogICAg
IFJlZlB0cjxOZXR3b3JrU3RvcmFnZU1hbmFnZXI+IG1fc3RvcmFnZU1hbmFnZXI7CiAgICAgUmVm
UHRyPENhY2hlU3RvcmFnZTo6RW5naW5lPiBtX2NhY2hlRW5naW5lOwogICAgIFZlY3RvcjxGdW5j
dGlvbjx2b2lkKENhY2hlU3RvcmFnZTo6RW5naW5lJik+PiBtX2NhY2hlU3RvcmFnZVBhcmFtZXRl
cnNDYWxsYmFja3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKaW5kZXggYzIwMGNlOGI1ZWI0YzNhMDM2NTdl
ODIyNjg5OTAyYjQ2ZGJmOGFiMC4uYzUxYzIyNDkzMTc4MjQxOWU3MTNlYjYyNThmMGNmOWZhZjE5
OWI4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VFbmdpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIk5l
dHdvcmtDYWNoZUlPQ2hhbm5lbC5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCiAjaW5j
bHVkZSAiTmV0d29ya1Nlc3Npb24uaCIKKyNpbmNsdWRlICJOZXR3b3JrU3RvcmFnZU1hbmFnZXIu
aCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVR5cGUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NhY2hl
UXVlcnlPcHRpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXRyaWV2ZVJlY29yZHNPcHRpb25z
Lmg+CkBAIC0yMDMsNDAgKzIwNCw1MiBAQCBzdGF0aWMgdWludDY0X3QgZ2V0RGlyZWN0b3J5U2l6
ZShjb25zdCBTdHJpbmcmIGRpcmVjdG9yeVBhdGgpCiAgICAgcmV0dXJuIGRpcmVjdG9yeVNpemU7
CiB9CiAKLXVpbnQ2NF90IEVuZ2luZTo6ZGlza1VzYWdlKGNvbnN0IFN0cmluZyYgcm9vdFBhdGgs
IGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luKQorU3RyaW5nIEVuZ2luZTo6c3Rv
cmFnZVBhdGgoY29uc3QgU3RyaW5nJiByb290RGlyZWN0b3J5LCBjb25zdCBXZWJDb3JlOjpDbGll
bnRPcmlnaW4mIG9yaWdpbikKIHsKICAgICBBU1NFUlQoIWlzTWFpblJ1bkxvb3AoKSk7CisgICAg
CisgICAgaWYgKHJvb3REaXJlY3RvcnkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZW1wdHlT
dHJpbmcoKTsKIAotICAgIGlmIChyb290UGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiAw
OwotCi0gICAgU3RyaW5nIHNhbHRQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KHJvb3RQYXRoLCAic2FsdCJfcyk7CisgICAgU3RyaW5nIHNhbHRQYXRoID0gRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJvb3REaXJlY3RvcnksICJzYWx0Il9zKTsK
ICAgICBhdXRvIHNhbHQgPSBGaWxlU3lzdGVtOjpyZWFkT3JNYWtlU2FsdChzYWx0UGF0aCk7CiAg
ICAgaWYgKCFzYWx0KQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIGVtcHR5U3Ry
aW5nKCk7CiAKICAgICBLZXkga2V5KG9yaWdpbi50b3BPcmlnaW4udG9TdHJpbmcoKSwgb3JpZ2lu
LmNsaWVudE9yaWdpbi50b1N0cmluZygpLCB7IH0sIHsgfSwgKnNhbHQpOwotICAgIFN0cmluZyBk
aXJlY3RvcnlQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJvb3RQ
YXRoLCBrZXkuaGFzaEFzU3RyaW5nKCkpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQocm9vdERpcmVjdG9yeSwga2V5Lmhhc2hBc1N0cmluZygpKTsKK30K
KwordWludDY0X3QgRW5naW5lOjpkaXNrVXNhZ2UoY29uc3QgU3RyaW5nJiBvcmlnaW5EaXJlY3Rv
cnkpCit7CisgICAgQVNTRVJUKCFpc01haW5SdW5Mb29wKCkpOwogCi0gICAgU3RyaW5nIHNpemVG
aWxlUGF0aCA9IENhY2hlczo6Y2FjaGVzU2l6ZUZpbGVuYW1lKGRpcmVjdG9yeVBhdGgpOworICAg
IGlmIChvcmlnaW5EaXJlY3RvcnkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gMDsKKworICAg
IFN0cmluZyBzaXplRmlsZVBhdGggPSBDYWNoZXM6OmNhY2hlc1NpemVGaWxlbmFtZShvcmlnaW5E
aXJlY3RvcnkpOwogICAgIGlmIChhdXRvIHJlY29yZGVkU2l6ZSA9IHJlYWRTaXplRmlsZShzaXpl
RmlsZVBhdGgpKQogICAgICAgICByZXR1cm4gKnJlY29yZGVkU2l6ZTsKIAotICAgIHJldHVybiBn
ZXREaXJlY3RvcnlTaXplKGRpcmVjdG9yeVBhdGgpOworICAgIHJldHVybiBnZXREaXJlY3RvcnlT
aXplKG9yaWdpbkRpcmVjdG9yeSk7CiB9CiAKLXZvaWQgRW5naW5lOjpyZXF1ZXN0U3BhY2UoY29u
c3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVk
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6OkRl
Y2lzaW9uKT4mJiBjYWxsYmFjaykKK3ZvaWQgRW5naW5lOjpyZXF1ZXN0U3BhY2UoY29uc3QgV2Vi
Q29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQogewogICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CiAKICAgICBpZiAoIW1fbmV0d29ya1Byb2Nlc3MpCi0gICAgICAgIGNhbGxi
YWNrKFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uOjpEZW55KTsKKyAgICAg
ICAgY2FsbGJhY2soZmFsc2UpOworCisgICAgYXV0byogc2Vzc2lvbiA9IG1fbmV0d29ya1Byb2Nl
c3MtPm5ldHdvcmtTZXNzaW9uKG1fc2Vzc2lvbklEKTsKKyAgICBpZiAoIXNlc3Npb24pCisgICAg
ICAgIGNhbGxiYWNrKGZhbHNlKTsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlUXVvdGFN
YW5hZ2VyPiBzdG9yYWdlUXVvdGFNYW5hZ2VyID0gbV9uZXR3b3JrUHJvY2Vzcy0+c3RvcmFnZVF1
b3RhTWFuYWdlcihtX3Nlc3Npb25JRCwgb3JpZ2luKTsKLSAgICBpZiAoIXN0b3JhZ2VRdW90YU1h
bmFnZXIpCi0gICAgICAgIGNhbGxiYWNrKFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6OkRl
Y2lzaW9uOjpEZW55KTsKKyAgICBhdXRvKiBzdG9yYWdlTWFuYWdlciA9IHNlc3Npb24tPnN0b3Jh
Z2VNYW5hZ2VyKCk7CisgICAgaWYgKCFzdG9yYWdlTWFuYWdlcikKKyAgICAgICAgY2FsbGJhY2so
ZmFsc2UpOwogCi0gICAgc3RvcmFnZVF1b3RhTWFuYWdlci0+cmVxdWVzdFNwYWNlT25NYWluVGhy
ZWFkKHNwYWNlUmVxdWVzdGVkLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgc3RvcmFnZU1hbmFn
ZXItPnJlcXVlc3RTcGFjZShvcmlnaW4sIHNwYWNlUmVxdWVzdGVkLCBXVEZNb3ZlKGNhbGxiYWNr
KSk7CiB9CiAKIEVuZ2luZTo6RW5naW5lKE5ldHdvcmtTZXNzaW9uJiBuZXR3b3JrU2Vzc2lvbiwg
U3RyaW5nJiYgcm9vdFBhdGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaAppbmRleCAxNDdmYmFjZTE2NzdhNjA4NTkx
OGFiNzcyYTllMTBhMjA2YzY4ODFlLi5mZTNjMWY5MzBkYWUzOTk4Y2QxYzA0YzM0ZGJkZGM1MzU1
NWE0NzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0Nh
Y2hlU3RvcmFnZUVuZ2luZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvQ2FjaGVTdG9yYWdlRW5naW5lLmgKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJOZXR3
b3JrQ2FjaGVEYXRhLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGEuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL0NsaWVudE9yaWdpbi5oPgotI2luY2x1ZGUgPFdlYkNvcmUvU3RvcmFnZVF1b3RhTWFuYWdl
ci5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC04NCw4ICs4Myw5IEBAIHB1YmxpYzoK
IAogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVRdW90YVVzZXIoTmV0d29ya1Nlc3Npb24mLCBj
b25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogCi0gICAgc3RhdGljIHVpbnQ2NF90IGRpc2tVc2FnZShjb25zdCBTdHJpbmcmIHJvb3RQYXRo
LCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKLSAgICB2b2lkIHJlcXVlc3RTcGFjZShj
b25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCB1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lv
bik+JiYpOworICAgIHN0YXRpYyBTdHJpbmcgc3RvcmFnZVBhdGgoY29uc3QgU3RyaW5nJiByb290
RGlyZWN0b3J5LCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKKyAgICBzdGF0aWMgdWlu
dDY0X3QgZGlza1VzYWdlKGNvbnN0IFN0cmluZyYgb3JpZ2luRGlyZWN0b3J5KTsKKyAgICB2b2lk
IHJlcXVlc3RTcGFjZShjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCB1aW50NjRfdCBzcGFj
ZVJlcXVlc3RlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAKICAgICBib29s
IHNob3VsZFBlcnNpc3QoKSBjb25zdCB7IHJldHVybiAhIW1faW9RdWV1ZTt9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5l
Q2FjaGVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9y
YWdlRW5naW5lQ2FjaGVzLmNwcAppbmRleCAwNGVkZWNlMWM0YmZlOWVhY2FlMDZhNzA3YzVkZGZm
ZTAwZTgxMzhlLi5jMzBjM2JlN2M1YzU1M2JmMjMyOGQ5NTFiNzc0NDQ0MTNiMzJkNmE1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVu
Z2luZUNhY2hlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9D
YWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwCkBAIC01MjQsMTQgKzUyNCwxMCBAQCB2b2lkIENh
Y2hlczo6cmVxdWVzdFNwYWNlKHVpbnQ2NF90IHNwYWNlUmVxdWlyZWQsIFdlYkNvcmU6OkRPTUNh
Y2hlRW5naW5lOjpDb21wbAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9lbmdpbmUt
PnJlcXVlc3RTcGFjZShtX29yaWdpbiwgc3BhY2VSZXF1aXJlZCwgW2NhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayldKGF1dG8gZGVjaXNpb24pIG11dGFibGUgewotICAgICAgICBzd2l0Y2ggKGRl
Y2lzaW9uKSB7Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6U3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVj
aXNpb246OkRlbnk6Ci0gICAgICAgICAgICBjYWxsYmFjayhFcnJvcjo6UXVvdGFFeGNlZWRlZCk7
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6U3RvcmFnZVF1b3Rh
TWFuYWdlcjo6RGVjaXNpb246OkdyYW50OgotICAgICAgICAgICAgY2FsbGJhY2soeyB9KTsKLSAg
ICAgICAgfTsKKyAgICBtX2VuZ2luZS0+cmVxdWVzdFNwYWNlKG1fb3JpZ2luLCBzcGFjZVJlcXVp
cmVkLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBncmFudGVkKSBtdXRhYmxl
IHsKKyAgICAgICAgaWYgKCFncmFudGVkKQorICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKEVy
cm9yOjpRdW90YUV4Y2VlZGVkKTsKKyAgICAgICAgY2FsbGJhY2soeyB9KTsKICAgICB9KTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya1By
b2Nlc3NJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJv
Y2Vzc0lPUy5tbQppbmRleCBhODdhZDgwNWI1ZGYxNTA3ODNiNTM5MWU4ZTAzZjk4ZTc2NGRmM2Q1
Li4yMTk2ZTllNzRkMjQ1MzFjMGRiNWIzOTQ1YWM2MDhmZTNlOThjNzRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lPUy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lPUy5tbQpA
QCAtMTA5LDE5ICsxMDksNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRJc0hvbGRpbmdMb2Nr
ZWRGaWxlcyhib29sIGlzSG9sZGluZ0xvY2tlZEZpbGVzKQogICAgIC8vIFdlIHN5bmNocm9ub3Vz
bHkgdGFrZSBhIHByb2Nlc3MgYXNzZXJ0aW9uIHdoZW4gYmVnaW5uaW5nIGEgU1FMaXRlIHRyYW5z
YWN0aW9uIHNvIHRoYXQgd2UgZG9uJ3QgZ2V0IHN1c3BlbmRlZAogICAgIC8vIHdoaWxlIGhvbGRp
bmcgYSBsb2NrZWQgZmlsZS4gV2Ugd291bGQgZ2V0IGtpbGxlZCBpZiBzdXNwZW5kZWQgd2hpbGUg
aG9sZGluZyBsb2NrZWQgZmlsZXMuCiAgICAgbV9ob2xkaW5nTG9ja2VkRmlsZUFzc2VydGlvbiA9
IFByb2Nlc3NBc3NlcnRpb246OmNyZWF0ZShnZXRDdXJyZW50UHJvY2Vzc0lEKCksICJOZXR3b3Jr
IFByb2Nlc3MgaXMgaG9sZGluZyBsb2NrZWQgZmlsZXMiX3MsIFByb2Nlc3NBc3NlcnRpb25UeXBl
OjpGaW5pc2hUYXNrSW50ZXJydXB0YWJsZSwgUHJvY2Vzc0Fzc2VydGlvbjo6TW9kZTo6U3luYyk7
Ci0gICAgbV9ob2xkaW5nTG9ja2VkRmlsZUFzc2VydGlvbi0+c2V0UHJlcGFyZUZvckludmFsaWRh
dGlvbkhhbmRsZXIoW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dKCkgbXV0YWJs
ZSB7Ci0gICAgICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOwotICAgICAgICBpZiAoIXdlYWtU
aGlzKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmICghbV9zaG91bGRTdXNwZW5k
SURCU2VydmVycykKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBmb3JFYWNoTmV0d29y
a1Nlc3Npb24oW10oYXV0byYgc2Vzc2lvbikgewotICAgICAgICAgICAgaWYgKGF1dG8qIHNlcnZl
ciA9IHNlc3Npb24ud2ViSURCU2VydmVyKCkpCi0gICAgICAgICAgICAgICAgc2VydmVyLT5zdXNw
ZW5kKCk7Ci0gICAgICAgIH0pOwotICAgIH0pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9y
YWdlQ29ubmVjdGlvblRvQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c3RvcmFnZS9JREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50LmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YWY0
YzY0NjQzNmI5NmUxNGU4N2IzY2UyYjYxMWRiMDQyODc5MDVmCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VDb25uZWN0aW9u
VG9DbGllbnQuY3BwCkBAIC0wLDAgKzEsMTkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2
LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5oIgor
CisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiV2ViSURCQ29u
bmVjdGlvblRvU2VydmVyTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJJREJSZXN1bHQuaCIKKyNp
bmNsdWRlIDxXZWJDb3JlL0lEQlJlcXVlc3REYXRhLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JREJS
ZXN1bHREYXRhLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rp
b24uaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK0lEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGll
bnQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJ
RCBjb25uZWN0aW9uLCBXZWJDb3JlOjpJREJDb25uZWN0aW9uSWRlbnRpZmllciBpZGVudGlmaWVy
KQorICAgIDogbV9jb25uZWN0aW9uKGNvbm5lY3Rpb24pCisgICAgLCBtX2lkZW50aWZpZXIoaWRl
bnRpZmllcikKKyAgICAsIG1fY29ubmVjdGlvblRvQ2xpZW50KFdlYkNvcmU6OklEQlNlcnZlcjo6
SURCQ29ubmVjdGlvblRvQ2xpZW50OjpjcmVhdGUoKnRoaXMpKQoreworfQorCitJREJTdG9yYWdl
Q29ubmVjdGlvblRvQ2xpZW50Ojp+SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudCgpCit7Cisg
ICAgbV9jb25uZWN0aW9uVG9DbGllbnQtPmNsZWFyRGVsZWdhdGUoKTsKK30KKworV2ViQ29yZTo6
SURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnQmIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9D
bGllbnQ6OmNvbm5lY3Rpb25Ub0NsaWVudCgpCit7CisgICAgcmV0dXJuIG1fY29ubmVjdGlvblRv
Q2xpZW50OworfQorCit0ZW1wbGF0ZTxjbGFzcyBNZXNzYWdlVHlwZT4gdm9pZCBJREJTdG9yYWdl
Q29ubmVjdGlvblRvQ2xpZW50OjpkaWRHZXRSZXN1bHQoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0
RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBpZiAocmVzdWx0RGF0YS50eXBlKCkgPT0gV2ViQ29y
ZTo6SURCUmVzdWx0VHlwZTo6RXJyb3IpIHsKKyAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5k
KG1fY29ubmVjdGlvbiwgTWVzc2FnZVR5cGUocmVzdWx0RGF0YSksIDApOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgaWYgKHJlc3VsdERhdGEudHlwZSgpID09IFdlYkNvcmU6OklEQlJl
c3VsdFR5cGU6OkdldEFsbFJlY29yZHNTdWNjZXNzICYmIHJlc3VsdERhdGEuZ2V0QWxsUmVzdWx0
KCkudHlwZSgpID09IFdlYkNvcmU6OkluZGV4ZWREQjo6R2V0QWxsVHlwZTo6S2V5cykgeworICAg
ICAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQobV9jb25uZWN0aW9uLCBNZXNzYWdlVHlwZShyZXN1
bHREYXRhKSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGJsb2JGaWxl
UGF0aHMgPSByZXN1bHREYXRhLnR5cGUoKSA9PSBXZWJDb3JlOjpJREJSZXN1bHRUeXBlOjpHZXRB
bGxSZWNvcmRzU3VjY2VzcyA/IHJlc3VsdERhdGEuZ2V0QWxsUmVzdWx0KCkuYWxsQmxvYkZpbGVQ
YXRocygpIDogcmVzdWx0RGF0YS5nZXRSZXN1bHQoKS52YWx1ZSgpLmJsb2JGaWxlUGF0aHMoKTsK
KyAgICBpZiAoYmxvYkZpbGVQYXRocy5pc0VtcHR5KCkpIHsKKyAgICAgICAgSVBDOjpDb25uZWN0
aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwgTWVzc2FnZVR5cGUocmVzdWx0RGF0YSksIDApOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKG1fY29ubmVj
dGlvbiwgTWVzc2FnZVR5cGUocmVzdWx0RGF0YSksIDApOworfQorCit2b2lkIElEQlN0b3JhZ2VD
b25uZWN0aW9uVG9DbGllbnQ6OmRpZERlbGV0ZURhdGFiYXNlKGNvbnN0IFdlYkNvcmU6OklEQlJl
c3VsdERhdGEmIHJlc3VsdERhdGEpCit7CisgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKG1fY29u
bmVjdGlvbiwgTWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6RGlkRGVsZXRlRGF0
YWJhc2UocmVzdWx0RGF0YSksIDApOworfQorCit2b2lkIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9D
bGllbnQ6OmRpZE9wZW5EYXRhYmFzZShjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJiByZXN1
bHREYXRhKQoreworICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3Nh
Z2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZE9wZW5EYXRhYmFzZShyZXN1bHREYXRh
KSwgMCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkU3RhcnRU
cmFuc2FjdGlvbihjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0
aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCRXJyb3ImIGVycm9yKQoreworICAgIElQ
Qzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0
aW9uVG9TZXJ2ZXI6OkRpZFN0YXJ0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZGVudGlmaWVyLCBl
cnJvciksIDApOworfQorCit2b2lkIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZEFi
b3J0VHJhbnNhY3Rpb24oY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFu
c2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OklEQkVycm9yJiBlcnJvcikKK3sKKyAg
ICBJUEM6OkNvbm5lY3Rpb246OnNlbmQobV9jb25uZWN0aW9uLCBNZXNzYWdlczo6V2ViSURCQ29u
bmVjdGlvblRvU2VydmVyOjpEaWRBYm9ydFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmll
ciwgZXJyb3IpLCAwKTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50Ojpk
aWRDb21taXRUcmFuc2FjdGlvbihjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXIm
IHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCRXJyb3ImIGVycm9yKQor
eworICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJJ
REJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZENvbW1pdFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRl
bnRpZmllciwgZXJyb3IpLCAwKTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xp
ZW50OjpkaWRDcmVhdGVPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJiBy
ZXN1bHREYXRhKQoreworICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1l
c3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZENyZWF0ZU9iamVjdFN0b3JlKHJl
c3VsdERhdGEpLCAwKTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50Ojpk
aWREZWxldGVPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJiByZXN1bHRE
YXRhKQoreworICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2Vz
OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZERlbGV0ZU9iamVjdFN0b3JlKHJlc3VsdERh
dGEpLCAwKTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRSZW5h
bWVPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQor
eworICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJJ
REJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZFJlbmFtZU9iamVjdFN0b3JlKHJlc3VsdERhdGEpLCAw
KTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRDbGVhck9iamVj
dFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCit7CisgICAg
SVBDOjpDb25uZWN0aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwgTWVzc2FnZXM6OldlYklEQkNvbm5l
Y3Rpb25Ub1NlcnZlcjo6RGlkQ2xlYXJPYmplY3RTdG9yZShyZXN1bHREYXRhKSwgMCk7Cit9CisK
K3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkQ3JlYXRlSW5kZXgoY29uc3Qg
V2ViQ29yZTo6SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBJUEM6OkNvbm5lY3Rp
b246OnNlbmQobV9jb25uZWN0aW9uLCBNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVy
OjpEaWRDcmVhdGVJbmRleChyZXN1bHREYXRhKSwgMCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNv
bm5lY3Rpb25Ub0NsaWVudDo6ZGlkRGVsZXRlSW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0
RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQobV9jb25uZWN0
aW9uLCBNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWREZWxldGVJbmRleChy
ZXN1bHREYXRhKSwgMCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6
ZGlkUmVuYW1lSW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkK
K3sKKyAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQobV9jb25uZWN0aW9uLCBNZXNzYWdlczo6V2Vi
SURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWRSZW5hbWVJbmRleChyZXN1bHREYXRhKSwgMCk7Cit9
CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkUHV0T3JBZGQoY29uc3Qg
V2ViQ29yZTo6SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBJUEM6OkNvbm5lY3Rp
b246OnNlbmQobV9jb25uZWN0aW9uLCBNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVy
OjpEaWRQdXRPckFkZChyZXN1bHREYXRhKSwgMCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5l
Y3Rpb25Ub0NsaWVudDo6ZGlkR2V0UmVjb3JkKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEm
IHJlc3VsdERhdGEpCit7CisgICAgZGlkR2V0UmVzdWx0PE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0
aW9uVG9TZXJ2ZXI6OkRpZEdldFJlY29yZD4ocmVzdWx0RGF0YSk7Cit9CisKK3ZvaWQgSURCU3Rv
cmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkR2V0QWxsUmVjb3Jkcyhjb25zdCBXZWJDb3JlOjpJ
REJSZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIGRpZEdldFJlc3VsdDxNZXNzYWdlczo6
V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWRHZXRBbGxSZWNvcmRzPihyZXN1bHREYXRhKTsK
K30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRHZXRDb3VudChjb25z
dCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIElQQzo6Q29ubmVj
dGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2
ZXI6OkRpZEdldENvdW50KHJlc3VsdERhdGEpLCAwKTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29u
bmVjdGlvblRvQ2xpZW50OjpkaWREZWxldGVSZWNvcmQoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0
RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQobV9jb25uZWN0
aW9uLCBNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWREZWxldGVSZWNvcmQo
cmVzdWx0RGF0YSksIDApOworfQorCit2b2lkIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6
OmRpZE9wZW5DdXJzb3IoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkK
K3sKKyAgICBkaWRHZXRSZXN1bHQ8TWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6
RGlkT3BlbkN1cnNvcj4ocmVzdWx0RGF0YSk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rp
b25Ub0NsaWVudDo6ZGlkSXRlcmF0ZUN1cnNvcihjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRh
JiByZXN1bHREYXRhKQoreworICAgIGRpZEdldFJlc3VsdDxNZXNzYWdlczo6V2ViSURCQ29ubmVj
dGlvblRvU2VydmVyOjpEaWRJdGVyYXRlQ3Vyc29yPihyZXN1bHREYXRhKTsKK30KKwordm9pZCBJ
REJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRHZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVy
c2lvbnMoY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRp
ZmllciwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OklEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24+JiBk
YXRhYmFzZXMpCit7CisgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwgTWVz
c2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6RGlkR2V0QWxsRGF0YWJhc2VOYW1lc0Fu
ZFZlcnNpb25zKHJlcXVlc3RJZGVudGlmaWVyLCBkYXRhYmFzZXMpLCAwKTsKK30KKwordm9pZCBJ
REJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpmaXJlVmVyc2lvbkNoYW5nZUV2ZW50KFdlYkNv
cmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBj
b25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCB1
aW50NjRfdCByZXF1ZXN0ZWRWZXJzaW9uKQoreworICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZCht
X2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkZpcmVWZXJz
aW9uQ2hhbmdlRXZlbnQoY29ubmVjdGlvbi5pZGVudGlmaWVyKCksIHJlcXVlc3RJZGVudGlmaWVy
LCByZXF1ZXN0ZWRWZXJzaW9uKSwgMCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25U
b0NsaWVudDo6ZGlkQ2xvc2VGcm9tU2VydmVyKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURC
RGF0YWJhc2VDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpJREJFcnJvciYg
ZXJyb3IpCit7CisgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwgTWVzc2Fn
ZXM6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6RGlkQ2xvc2VGcm9tU2VydmVyKGNvbm5lY3Rp
b24uaWRlbnRpZmllcigpLCBlcnJvciksIDApOworfQorCit2b2lkIElEQlN0b3JhZ2VDb25uZWN0
aW9uVG9DbGllbnQ6Om5vdGlmeU9wZW5EQlJlcXVlc3RCbG9ja2VkKGNvbnN0IFdlYkNvcmU6OklE
QlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IG9sZFZlcnNp
b24sIHVpbnQ2NF90IG5ld1ZlcnNpb24pCit7CisgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKG1f
Y29ubmVjdGlvbiwgTWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Tm90aWZ5T3Bl
bkRCUmVxdWVzdEJsb2NrZWQocmVxdWVzdElkZW50aWZpZXIsIG9sZFZlcnNpb24sIG5ld1ZlcnNp
b24pLCAwKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVu
dC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VDb25u
ZWN0aW9uVG9DbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MGJhMDFiMDIxMjBmMjFkYjYxMzkxZjNhODc0
NGQyMmI1ZmY3MGU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQuaApAQCAtMCwwICsxLDc3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNvbm5lY3Rp
b24uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0lEQkNvbm5lY3Rpb25Ub0NsaWVudC5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvSURCQ29ubmVjdGlvblRvQ2xpZW50RGVsZWdhdGUuaD4KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQgZmluYWwgOiBw
dWJsaWMgV2ViQ29yZTo6SURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnREZWxlZ2F0ZSB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgSURCU3RvcmFnZUNv
bm5lY3Rpb25Ub0NsaWVudChJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBXZWJDb3JlOjpJREJD
b25uZWN0aW9uSWRlbnRpZmllcik7CisgICAgfklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQo
KTsKKworICAgIFdlYkNvcmU6OklEQkNvbm5lY3Rpb25JZGVudGlmaWVyIGlkZW50aWZpZXIoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKyAgICBJUEM6OkNvbm5lY3Rpb246
OlVuaXF1ZUlEIGlwY0Nvbm5lY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2Nvbm5lY3Rpb247IH0K
KyAgICBXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub0NsaWVudCYgY29ubmVjdGlv
blRvQ2xpZW50KCk7CisKK3ByaXZhdGU6CisgICAgdGVtcGxhdGU8Y2xhc3MgTWVzc2FnZVR5cGU+
IHZvaWQgZGlkR2V0UmVzdWx0KGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKTsKKworICAg
IC8vIElEQkNvbm5lY3Rpb25Ub0NsaWVudERlbGVnYXRlCisgICAgdm9pZCBkaWREZWxldGVEYXRh
YmFzZShjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJikgZmluYWw7CisgICAgdm9pZCBkaWRP
cGVuRGF0YWJhc2UoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZv
aWQgZGlkQWJvcnRUcmFuc2FjdGlvbihjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZp
ZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCRXJyb3ImKSBmaW5h
bDsKKyAgICB2b2lkIGRpZENvbW1pdFRyYW5zYWN0aW9uKGNvbnN0IFdlYkNvcmU6OklEQlJlc291
cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJREJF
cnJvciYpIGZpbmFsOworICAgIHZvaWQgZGlkU3RhcnRUcmFuc2FjdGlvbihjb25zdCBXZWJDb3Jl
OjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2Vi
Q29yZTo6SURCRXJyb3ImKSBmaW5hbDsKKyAgICB2b2lkIGRpZENyZWF0ZU9iamVjdFN0b3JlKGNv
bnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBmaW5hbDsKKyAgICB2b2lkIGRpZERlbGV0ZU9i
amVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBmaW5hbDsKKyAgICB2b2lk
IGRpZFJlbmFtZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBmaW5h
bDsKKyAgICB2b2lkIGRpZENsZWFyT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0
RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkQ3JlYXRlSW5kZXgoY29uc3QgV2ViQ29yZTo6SURC
UmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkRGVsZXRlSW5kZXgoY29uc3QgV2ViQ29y
ZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVuYW1lSW5kZXgoY29uc3Qg
V2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkUHV0T3JBZGQoY29u
c3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkR2V0UmVjb3Jk
KGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBmaW5hbDsKKyAgICB2b2lkIGRpZEdldEFs
bFJlY29yZHMoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQg
ZGlkR2V0Q291bnQoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZv
aWQgZGlkRGVsZXRlUmVjb3JkKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBmaW5hbDsK
KyAgICB2b2lkIGRpZE9wZW5DdXJzb3IoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZp
bmFsOworICAgIHZvaWQgZGlkSXRlcmF0ZUN1cnNvcihjb25zdCBXZWJDb3JlOjpJREJSZXN1bHRE
YXRhJikgZmluYWw7CisgICAgdm9pZCBkaWRHZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMo
Y29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiwgY29uc3QgVmVjdG9yPFdlYkNv
cmU6OklEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24+JikgZmluYWw7CisgICAgdm9pZCBub3RpZnlP
cGVuREJSZXF1ZXN0QmxvY2tlZChjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXIm
IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBvbGRWZXJzaW9uLCB1aW50NjRfdCBuZXdWZXJz
aW9uKSBmaW5hbDsKKyAgICB2b2lkIGZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQoV2ViQ29yZTo6SURC
U2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpJREJS
ZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCByZXF1ZXN0ZWRW
ZXJzaW9uKSBmaW5hbDsKKyAgICB2b2lkIGRpZENsb3NlRnJvbVNlcnZlcihXZWJDb3JlOjpJREJT
ZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OklEQkVy
cm9yJikgZmluYWw7CisKKyAgICBJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIG1fY29ubmVjdGlv
bjsKKyAgICBXZWJDb3JlOjpJREJDb25uZWN0aW9uSWRlbnRpZmllciBtX2lkZW50aWZpZXI7Cisg
ICAgUmVmPFdlYkNvcmU6OklEQlNlcnZlcjo6SURCQ29ubmVjdGlvblRvQ2xpZW50PiBtX2Nvbm5l
Y3Rpb25Ub0NsaWVudDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VNYW5hZ2VyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlTWFuYWdl
ci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOWI2YjcxMDE3ZmIzOWQ3YTBlMTM5MGVlMjg5NmNiYzJlOGRmYTQw
ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFn
ZS9JREJTdG9yYWdlTWFuYWdlci5jcHAKQEAgLTAsMCArMSwyNTQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSURCU3RvcmFnZU1hbmFnZXIuaCIKKworI2lu
Y2x1ZGUgIklEQlN0b3JhZ2VSZWdpc3RyeS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvSURCUmVxdWVz
dERhdGEuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvU1FMaXRlRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU1FM
aXRlSURCQmFja2luZ1N0b3JlLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMgdm9p
ZCBtaWdyYXRlT3JpZ2luRGF0YShjb25zdCBTdHJpbmcmIG9sZE9yaWdpbkRpcmVjdG9yeSwgY29u
c3QgU3RyaW5nJiBuZXdPcmlnaW5EaXJlY3RvcnkpCit7CisgICAgaWYgKCFGaWxlU3lzdGVtOjpm
aWxlRXhpc3RzKG9sZE9yaWdpbkRpcmVjdG9yeSkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1
dG8gZmlsZU5hbWVzID0gRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShvbGRPcmlnaW5EaXJlY3Rv
cnkpOworICAgIGlmICghZmlsZU5hbWVzLmlzRW1wdHkoKSkKKyAgICAgICAgRmlsZVN5c3RlbTo6
bWFrZUFsbERpcmVjdG9yaWVzKG5ld09yaWdpbkRpcmVjdG9yeSk7CisKKyAgICBmb3IgKGF1dG8m
IG5hbWUgOiBmaWxlTmFtZXMpIHsKKyAgICAgICAgU3RyaW5nIGNoaWxkUGF0aCA9IEZpbGVTeXN0
ZW06OnJlYWxQYXRoKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChvbGRPcmln
aW5EaXJlY3RvcnksIG5hbWUpKTsKKyAgICAgICAgU3RyaW5nIG5ld05hbWUgPSBXZWJDb3JlOjpT
UUxpdGVGaWxlU3lzdGVtOjpjb21wdXRlSGFzaEZvckZpbGVOYW1lKFdlYkNvcmU6OklEQlNlcnZl
cjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWNvZGVEYXRhYmFzZU5hbWUobmFtZSkpOworICAg
ICAgICBhdXRvIG5ld0NoaWxkUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChuZXdPcmlnaW5EaXJlY3RvcnksIG5ld05hbWUpOworICAgICAgICBGaWxlU3lzdGVtOjpt
b3ZlRmlsZShjaGlsZFBhdGgsIG5ld0NoaWxkUGF0aCk7CisgICAgfQorCisgICAgRmlsZVN5c3Rl
bTo6ZGVsZXRlRW1wdHlEaXJlY3Rvcnkob2xkT3JpZ2luRGlyZWN0b3J5KTsKK30KKworU3RyaW5n
IElEQlN0b3JhZ2VNYW5hZ2VyOjppZGJTdG9yYWdlT3JpZ2luRGlyZWN0b3J5KGNvbnN0IFN0cmlu
ZyYgcm9vdERpcmVjdG9yeSwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4pCit7
CisgICAgaWYgKHJvb3REaXJlY3RvcnkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZW1wdHlT
dHJpbmcoKTsKKworICAgIFN0cmluZyBvcmlnaW5EaXJlY3RvcnkgPSBXZWJDb3JlOjpJREJEYXRh
YmFzZUlkZW50aWZpZXI6OmRhdGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVUb1Jvb3Qob3JpZ2luLnRv
cE9yaWdpbiwgb3JpZ2luLmNsaWVudE9yaWdpbiwgcm9vdERpcmVjdG9yeSwgInYxIik7CisgICAg
U3RyaW5nIG9sZE9yaWdpbkRpcmVjdG9yeSA9IFdlYkNvcmU6OklEQkRhdGFiYXNlSWRlbnRpZmll
cjo6ZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9vdChvcmlnaW4udG9wT3JpZ2luLCBvcmln
aW4uY2xpZW50T3JpZ2luLCByb290RGlyZWN0b3J5LCAidjAiKTsKKyAgICBtaWdyYXRlT3JpZ2lu
RGF0YShvbGRPcmlnaW5EaXJlY3RvcnksIG9yaWdpbkRpcmVjdG9yeSk7CisKKyAgICByZXR1cm4g
b3JpZ2luRGlyZWN0b3J5OworfQorCit1aW50NjRfdCBJREJTdG9yYWdlTWFuYWdlcjo6aWRiU3Rv
cmFnZVNpemUoY29uc3QgU3RyaW5nJiBvcmlnaW5EaXJlY3RvcnkpCit7CisgICAgaWYgKG9yaWdp
bkRpcmVjdG9yeS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIFdl
YkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpkYXRhYmFzZXNTaXplRm9y
RGlyZWN0b3J5KG9yaWdpbkRpcmVjdG9yeSk7Cit9CisKK3N0YXRpYyB2b2lkIGdldE9yaWdpbnNG
b3JWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvblBhdGgsIEhhc2hTZXQ8V2ViQ29yZTo6Q2xp
ZW50T3JpZ2luPiYgb3JpZ2lucykKK3sKKyAgICBmb3IgKGF1dG8mIHRvcERhdGFiYXNlSWRlbnRp
ZmllciA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkodmVyc2lvblBhdGgpKSB7CisgICAgICAg
IGF1dG8gdG9wT3JpZ2luID0gV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJh
c2VJZGVudGlmaWVyKHRvcERhdGFiYXNlSWRlbnRpZmllcik7CisgICAgICAgIGlmICghdG9wT3Jp
Z2luKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgYXV0byB0b3BPcmlnaW5EaXJl
Y3RvcnkgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodmVyc2lvblBhdGgs
IHRvcERhdGFiYXNlSWRlbnRpZmllcik7CisgICAgICAgIGZvciAoYXV0byYgZGF0YWJhc2VJZGVu
dGlmaWVyIDogRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeSh0b3BPcmlnaW5EaXJlY3RvcnkpKSB7
CisgICAgICAgICAgICBhdXRvIG9yaWdpbkRpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudCh0b3BPcmlnaW5EaXJlY3RvcnksIGRhdGFiYXNlSWRlbnRpZmllcik7
CisgICAgICAgICAgICBpZiAoRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3Rvcnkob3JpZ2lu
RGlyZWN0b3J5KSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgYXV0
byBjbGllbnRPcmlnaW4gPSBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFz
ZUlkZW50aWZpZXIoZGF0YWJhc2VJZGVudGlmaWVyKTsKKyAgICAgICAgICAgIC8vIFRoaXMgaXMg
bm90IG9yaWdpbiBkaXJlY3RvcnksIGJ1dCBtYXkgYmUgZGF0YWJhc2UgZGlyZWN0b3J5LgorICAg
ICAgICAgICAgaWYgKCFjbGllbnRPcmlnaW4pIHsKKyAgICAgICAgICAgICAgICBvcmlnaW5zLmFk
ZChXZWJDb3JlOjpDbGllbnRPcmlnaW4geyAqdG9wT3JpZ2luLCAqdG9wT3JpZ2luIH0pOworICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBvcmln
aW5zLmFkZChXZWJDb3JlOjpDbGllbnRPcmlnaW4geyAqdG9wT3JpZ2luLCAqY2xpZW50T3JpZ2lu
IH0pOworICAgICAgICB9CisKKyAgICAgICAgLy8gV2UgbWF5IGhhdmUgZGVsZXRlZCBlbXB0eSBj
aGlsZHJlbiBkaXJlY3RvcmllcyBhYm92ZSwgd2hpY2ggbWFrZSB0aGlzIGRpcmVjdG9yeSBlbXB0
eS4KKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkodG9wT3JpZ2luRGly
ZWN0b3J5KTsKKyAgICB9Cit9CisKK0hhc2hTZXQ8V2ViQ29yZTo6Q2xpZW50T3JpZ2luPiBJREJT
dG9yYWdlTWFuYWdlcjo6b3JpZ2luc09mSURCU3RvcmFnZURhdGEoY29uc3QgU3RyaW5nJiByb290
RGlyZWN0b3J5KQoreworICAgIEhhc2hTZXQ8V2ViQ29yZTo6Q2xpZW50T3JpZ2luPiBvcmlnaW5z
OworICAgIGlmIChyb290RGlyZWN0b3J5LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG9yaWdp
bnM7CisKKyAgICBnZXRPcmlnaW5zRm9yVmVyc2lvbihGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQocm9vdERpcmVjdG9yeSwgInYwIiksIG9yaWdpbnMpOworICAgIGdldE9yaWdp
bnNGb3JWZXJzaW9uKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyb290RGly
ZWN0b3J5LCAidjEiKSwgb3JpZ2lucyk7CisKKyAgICByZXR1cm4gb3JpZ2luczsKK30KKworSURC
U3RvcmFnZU1hbmFnZXI6OklEQlN0b3JhZ2VNYW5hZ2VyKGNvbnN0IFN0cmluZyYgcGF0aCwgSURC
U3RvcmFnZVJlZ2lzdHJ5JiByZWdpc3RyeSwgUXVvdGFDaGVja0Z1bmN0aW9uJiYgcXVvdGFDaGVj
a0Z1bmN0aW9uKQorICAgIDogbV9wYXRoKHBhdGgpCisgICAgLCBtX3JlZ2lzdHJ5KHJlZ2lzdHJ5
KQorICAgICwgbV9xdW90YUNoZWNrRnVuY3Rpb24oV1RGTW92ZShxdW90YUNoZWNrRnVuY3Rpb24p
KQoreworfQorCitib29sIElEQlN0b3JhZ2VNYW5hZ2VyOjppc0FjdGl2ZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuICFtX2RhdGFiYXNlcy5pc0VtcHR5KCk7Cit9CisKK2Jvb2wgSURCU3RvcmFnZU1h
bmFnZXI6Omhhc0RhdGFJbk1lbW9yeSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdURjo6YW55T2Yo
bV9kYXRhYmFzZXMudmFsdWVzKCksIFsmXSAoYXV0byYgZGF0YWJhc2UpIHsKKyAgICAgICAgcmV0
dXJuIGRhdGFiYXNlLT5oYXNEYXRhSW5NZW1vcnkoKTsKKyAgICB9KTsKK30KKwordm9pZCBJREJT
dG9yYWdlTWFuYWdlcjo6Y2xvc2VEYXRhYmFzZXNGb3JEZWxldGlvbigpCit7CisgICAgZm9yIChh
dXRvJiBkYXRhYmFzZSA6IG1fZGF0YWJhc2VzLnZhbHVlcygpKQorICAgICAgICBkYXRhYmFzZS0+
aW1tZWRpYXRlQ2xvc2UoKTsKKworICAgIG1fZGF0YWJhc2VzLmNsZWFyKCk7Cit9CisKK3ZvaWQg
SURCU3RvcmFnZU1hbmFnZXI6OnN0b3BEYXRhYmFzZUFjdGl2aXRpZXNGb3JTdXNwZW5kKCkKK3sK
KyAgICBpZiAobV9wYXRoLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChh
dXRvJiBkYXRhYmFzZSA6IG1fZGF0YWJhc2VzLnZhbHVlcygpKSB7CisgICAgICAgIC8vIE9ubHkg
c3RvcCBkYXRhYmFzZXMgd2l0aCBub24tZXBoZW1lcmFsIGJhY2tpbmcgc3RvcmUgdGhhdCBjYW4g
aG9sZCBkYXRhYmFzZSBmaWxlIGxvY2suCisgICAgICAgIGlmICghZGF0YWJhc2UtPmlkZW50aWZp
ZXIoKS5pc1RyYW5zaWVudCgpKQorICAgICAgICAgICAgZGF0YWJhc2UtPmFib3J0QWN0aXZlVHJh
bnNhY3Rpb25zKCk7CisgICAgfQorfQorCitXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRh
dGFiYXNlJiBJREJTdG9yYWdlTWFuYWdlcjo6Z2V0T3JDcmVhdGVVbmlxdWVJREJEYXRhYmFzZShj
b25zdCBXZWJDb3JlOjpJREJEYXRhYmFzZUlkZW50aWZpZXImIGlkZW50aWZpZXIpCit7CisgICAg
YXV0byBhZGRSZXN1bHQgPSBtX2RhdGFiYXNlcy5hZGQoaWRlbnRpZmllciwgbnVsbHB0cik7Cisg
ICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3It
PnZhbHVlID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNl
PigqdGhpcywgaWRlbnRpZmllcik7CisKKyAgICByZXR1cm4gKmFkZFJlc3VsdC5pdGVyYXRvci0+
dmFsdWU7Cit9CisKK3ZvaWQgSURCU3RvcmFnZU1hbmFnZXI6Om9wZW5EYXRhYmFzZShXZWJDb3Jl
OjpJREJTZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub0NsaWVudCYgY29ubmVjdGlvblRvQ2xpZW50LCBj
b25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEpCit7CisgICAgYXV0byYg
ZGF0YWJhc2UgPSBnZXRPckNyZWF0ZVVuaXF1ZUlEQkRhdGFiYXNlKHJlcXVlc3REYXRhLmRhdGFi
YXNlSWRlbnRpZmllcigpKTsKKyAgICBkYXRhYmFzZS5vcGVuRGF0YWJhc2VDb25uZWN0aW9uKGNv
bm5lY3Rpb25Ub0NsaWVudCwgcmVxdWVzdERhdGEpOworfQorCit2b2lkIElEQlN0b3JhZ2VNYW5h
Z2VyOjpkZWxldGVEYXRhYmFzZShXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub0Ns
aWVudCYgY29ubmVjdGlvblRvQ2xpZW50LCBjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYg
cmVxdWVzdERhdGEpCit7CisgICAgYXV0byYgZGF0YWJhc2UgPSBnZXRPckNyZWF0ZVVuaXF1ZUlE
QkRhdGFiYXNlKHJlcXVlc3REYXRhLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICBkYXRhYmFz
ZS5oYW5kbGVEZWxldGUoY29ubmVjdGlvblRvQ2xpZW50LCByZXF1ZXN0RGF0YSk7CisKKyAgICAv
LyBUaGlzIGRhdGFiYXNlIGlzIGNyZWF0ZWQgZm9yIGRlbGV0aW9uLgorICAgIGlmIChkYXRhYmFz
ZS50cnlDbG9zZSgpKQorICAgICAgICBtX2RhdGFiYXNlcy5yZW1vdmUoZGF0YWJhc2UuaWRlbnRp
ZmllcigpKTsKK30KKworVmVjdG9yPFdlYkNvcmU6OklEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24+
IElEQlN0b3JhZ2VNYW5hZ2VyOjpnZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMoKQorewor
ICAgIFZlY3RvcjxXZWJDb3JlOjpJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiByZXN1bHQ7Cisg
ICAgSGFzaFNldDxTdHJpbmc+IHZpc2l0ZWREYXRhYmFzZVBhdGhzOworICAgIGZvciAoYXV0byYg
ZGF0YWJhc2UgOiBtX2RhdGFiYXNlcy52YWx1ZXMoKSkgeworICAgICAgICBhdXRvIHBhdGggPSBk
YXRhYmFzZS0+ZmlsZVBhdGgoKTsKKyAgICAgICAgaWYgKCFwYXRoLmlzRW1wdHkoKSkKKyAgICAg
ICAgICAgIHZpc2l0ZWREYXRhYmFzZVBhdGhzLmFkZChwYXRoKTsKKworICAgICAgICBpZiAoYXV0
byBuYW1lQW5kVmVyc2lvbiA9IGRhdGFiYXNlLT5uYW1lQW5kVmVyc2lvbigpKQorICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZChXVEZNb3ZlKCpuYW1lQW5kVmVyc2lvbikpOworICAgIH0KKworICAg
IGF1dG8gZGF0YWJhc2VJZGVudGlmaWVycyA9IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobV9w
YXRoKTsKKyAgICBmb3IgKGF1dG8gaWRlbnRpZmllciA6IGRhdGFiYXNlSWRlbnRpZmllcnMpIHsK
KyAgICAgICAgYXV0byBkYXRhYmFzZURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChtX3BhdGgsIGlkZW50aWZpZXIpOworICAgICAgICBhdXRvIGRhdGFiYXNl
UGF0aCA9IFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpmdWxsRGF0
YWJhc2VQYXRoRm9yRGlyZWN0b3J5KGRhdGFiYXNlRGlyZWN0b3J5KTsKKyAgICAgICAgaWYgKHZp
c2l0ZWREYXRhYmFzZVBhdGhzLmNvbnRhaW5zKGRhdGFiYXNlUGF0aCkpCisgICAgICAgICAgICBj
b250aW51ZTsKKworICAgICAgICBpZiAoYXV0byBuYW1lQW5kVmVyc2lvbiA9IFdlYkNvcmU6OklE
QlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpkYXRhYmFzZU5hbWVBbmRWZXJzaW9uRnJv
bUZpbGUoZGF0YWJhc2VQYXRoKSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoV1RGTW92ZSgq
bmFtZUFuZFZlcnNpb24pKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lk
IElEQlN0b3JhZ2VNYW5hZ2VyOjpvcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKGNvbnN0IFdlYkNvcmU6
OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkKK3sKKyAgICBhdXRvKiBkYXRhYmFzZSA9IG1f
ZGF0YWJhc2VzLmdldChyZXF1ZXN0RGF0YS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAgaWYg
KCFkYXRhYmFzZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZGF0YWJhc2UtPm9wZW5EQlJlcXVl
c3RDYW5jZWxsZWQocmVxdWVzdERhdGEucmVxdWVzdElkZW50aWZpZXIoKSk7CisKKyAgICAvLyBE
YXRhYmFzZSBiZWNvbWVzIGlkbGUgYWZ0ZXIgcmVxdWVzdCBpcyBjYW5jZWxsZWQuCisgICAgaWYg
KGRhdGFiYXNlLT50cnlDbG9zZSgpKQorICAgICAgICBtX2RhdGFiYXNlcy5yZW1vdmUoZGF0YWJh
c2UtPmlkZW50aWZpZXIoKSk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZU1hbmFnZXI6OnJlZ2lzdGVy
Q29ubmVjdGlvbihXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlv
biYgY29ubmVjdGlvbikKK3sKKyAgICBtX3JlZ2lzdHJ5LnJlZ2lzdGVyQ29ubmVjdGlvbihjb25u
ZWN0aW9uKTsKK30KKwordm9pZCBJREJTdG9yYWdlTWFuYWdlcjo6dW5yZWdpc3RlckNvbm5lY3Rp
b24oV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24pCit7CisgICAgbV9yZWdpc3RyeS51bnJlZ2lzdGVyQ29ubmVjdGlvbihjb25uZWN0aW9u
KTsKK30KKwordm9pZCBJREJTdG9yYWdlTWFuYWdlcjo6cmVnaXN0ZXJUcmFuc2FjdGlvbihXZWJD
b3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9u
KQoreworICAgIG1fcmVnaXN0cnkucmVnaXN0ZXJUcmFuc2FjdGlvbih0cmFuc2FjdGlvbik7Cit9
CisKK3ZvaWQgSURCU3RvcmFnZU1hbmFnZXI6OnVucmVnaXN0ZXJUcmFuc2FjdGlvbihXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQor
eworICAgIG1fcmVnaXN0cnkudW5yZWdpc3RlclRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKTsKK30K
Kworc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklEQlNlcnZlcjo6SURCQmFja2luZ1N0b3JlPiBJ
REJTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlQmFja2luZ1N0b3JlKGNvbnN0IFdlYkNvcmU6OklEQkRh
dGFiYXNlSWRlbnRpZmllciYgaWRlbnRpZmllcikKK3sKKyAgICBpZiAobV9wYXRoLmlzRW1wdHko
KSB8fCBpZGVudGlmaWVyLmlzVHJhbnNpZW50KCkpCisgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5SURCQmFja2luZ1N0b3JlPihpZGVudGlmaWVyKTsK
KworICAgIGF1dG8gbmFtZSA9IFdlYkNvcmU6OlNRTGl0ZUZpbGVTeXN0ZW06OmNvbXB1dGVIYXNo
Rm9yRmlsZU5hbWUoaWRlbnRpZmllci5kYXRhYmFzZU5hbWUoKSk7CisgICAgcmV0dXJuIG1ha2VV
bmlxdWU8V2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU+KGlkZW50aWZp
ZXIsIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3BhdGgsIG5hbWUpKTsK
K30KKwordm9pZCBJREJTdG9yYWdlTWFuYWdlcjo6cmVxdWVzdFNwYWNlKGNvbnN0IFdlYkNvcmU6
OkNsaWVudE9yaWdpbiYsIHVpbnQ2NF90IHNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgbV9xdW90YUNoZWNrRnVuY3Rpb24oc2l6
ZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJT
dG9yYWdlTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lE
QlN0b3JhZ2VNYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjg5NmZlNGFjYTE2NGNlNjkxYjkwNjlkYmNh
ZTRmY2Y2OWYyZjM4MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlTWFuYWdlci5oCkBAIC0wLDAgKzEsODIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPFdlYkNvcmUvVW5pcXVlSURCRGF0YWJh
c2VNYW5hZ2VyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIElEQlJlcXVlc3REYXRh
OworCituYW1lc3BhY2UgSURCU2VydmVyIHsKK2NsYXNzIElEQkJhY2tpbmdTdG9yZTsKK2NsYXNz
IElEQkNvbm5lY3Rpb25Ub0NsaWVudDsKK2NsYXNzIFVuaXF1ZUlEQkRhdGFiYXNlOworY2xhc3Mg
VW5pcXVlSURCVHJhbnNhY3Rpb247Cit9CisKK3N0cnVjdCBJREJEYXRhYmFzZU5hbWVBbmRWZXJz
aW9uOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgSURCU3RvcmFnZVJlZ2lzdHJ5
OworCitjbGFzcyBJREJTdG9yYWdlTWFuYWdlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpJREJT
ZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlciB7CitwdWJsaWM6CisgICAgc3RhdGljIFN0
cmluZyBpZGJTdG9yYWdlT3JpZ2luRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcm9vdERpcmVjdG9y
eSwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJik7CisgICAgc3RhdGljIHVpbnQ2NF90IGlk
YlN0b3JhZ2VTaXplKGNvbnN0IFN0cmluZyYgb3JpZ2luRGlyZWN0b3J5KTsKKyAgICBzdGF0aWMg
SGFzaFNldDxXZWJDb3JlOjpDbGllbnRPcmlnaW4+IG9yaWdpbnNPZklEQlN0b3JhZ2VEYXRhKGNv
bnN0IFN0cmluZyYgcm9vdERpcmVjdG9yeSk7CisKKyAgICB1c2luZyBRdW90YUNoZWNrRnVuY3Rp
b24gPSBGdW5jdGlvbjx2b2lkKHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmKT47CisgICAgSURCU3RvcmFnZU1hbmFnZXIoY29uc3QgU3RyaW5n
JiBwYXRoLCBJREJTdG9yYWdlUmVnaXN0cnkmLCBRdW90YUNoZWNrRnVuY3Rpb24mJik7CisgICAg
Ym9vbCBpc0FjdGl2ZSgpIGNvbnN0OworICAgIGJvb2wgaGFzRGF0YUluTWVtb3J5KCkgY29uc3Q7
CisgICAgdm9pZCBjbG9zZURhdGFiYXNlc0ZvckRlbGV0aW9uKCk7CisgICAgdm9pZCBzdG9wRGF0
YWJhc2VBY3Rpdml0aWVzRm9yU3VzcGVuZCgpOworCisgICAgdm9pZCBvcGVuRGF0YWJhc2UoV2Vi
Q29yZTo6SURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnQmLCBjb25zdCBXZWJDb3JlOjpJ
REJSZXF1ZXN0RGF0YSYpOworICAgIHZvaWQgb3BlbkRCUmVxdWVzdENhbmNlbGxlZChjb25zdCBX
ZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYpOworICAgIHZvaWQgZGVsZXRlRGF0YWJhc2UoV2ViQ29y
ZTo6SURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnQmLCBjb25zdCBXZWJDb3JlOjpJREJS
ZXF1ZXN0RGF0YSYpOworICAgIFZlY3RvcjxXZWJDb3JlOjpJREJEYXRhYmFzZU5hbWVBbmRWZXJz
aW9uPiBnZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMoKTsKKworcHJpdmF0ZToKKyAgICBX
ZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlJiBnZXRPckNyZWF0ZVVuaXF1ZUlE
QkRhdGFiYXNlKGNvbnN0IFdlYkNvcmU6OklEQkRhdGFiYXNlSWRlbnRpZmllciYpOworCisgICAg
Ly8gV2ViQ29yZTo6VW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyCisgICAgdm9pZCByZWdpc3RlckNv
bm5lY3Rpb24oV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24m
KSBmaW5hbDsKKyAgICB2b2lkIHVucmVnaXN0ZXJDb25uZWN0aW9uKFdlYkNvcmU6OklEQlNlcnZl
cjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJikgZmluYWw7CisgICAgdm9pZCByZWdpc3Rl
clRyYW5zYWN0aW9uKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VUcmFuc2Fj
dGlvbiYpIGZpbmFsOworICAgIHZvaWQgdW5yZWdpc3RlclRyYW5zYWN0aW9uKFdlYkNvcmU6OklE
QlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYpIGZpbmFsOworICAgIHN0ZDo6
dW5pcXVlX3B0cjxXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQkJhY2tpbmdTdG9yZT4gY3JlYXRlQmFj
a2luZ1N0b3JlKGNvbnN0IFdlYkNvcmU6OklEQkRhdGFiYXNlSWRlbnRpZmllciYpIGZpbmFsOwor
ICAgIHZvaWQgcmVxdWVzdFNwYWNlKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIHVpbnQ2
NF90IHNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZpbmFsOworCisgICAg
U3RyaW5nIG1fcGF0aDsKKyAgICBJREJTdG9yYWdlUmVnaXN0cnkmIG1fcmVnaXN0cnk7CisgICAg
UXVvdGFDaGVja0Z1bmN0aW9uIG1fcXVvdGFDaGVja0Z1bmN0aW9uOworICAgIEhhc2hNYXA8V2Vi
Q29yZTo6SURCRGF0YWJhc2VJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SURC
U2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZT4+IG1fZGF0YWJhc2VzOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0
b3JhZ2UvSURCU3RvcmFnZVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc3RvcmFnZS9JREJTdG9yYWdlUmVnaXN0cnkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM2M2FiNWUyNTUx
NmVlNjBmNWY2NDBmNTUxZTFmOWJhMWM5ZWE2MWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZVJlZ2lzdHJ5LmNwcApAQCAt
MCwwICsxLDEwMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJJREJTdG9yYWdlUmVnaXN0cnkuaCIKKworI2luY2x1ZGUgIklEQlN0b3JhZ2VDb25uZWN0aW9u
VG9DbGllbnQuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1VuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlv
bi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5oPgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworSURCU3RvcmFnZVJlZ2lzdHJ5OjpJREJTdG9yYWdlUmVn
aXN0cnkoKSA9IGRlZmF1bHQ7CisKK1dlYkNvcmU6OklEQlNlcnZlcjo6SURCQ29ubmVjdGlvblRv
Q2xpZW50JiBJREJTdG9yYWdlUmVnaXN0cnk6OmVuc3VyZUNvbm5lY3Rpb25Ub0NsaWVudChJUEM6
OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGNvbm5lY3Rpb24sIFdlYkNvcmU6OklEQkNvbm5lY3Rpb25J
ZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX2Nvbm5lY3Rp
b25zVG9DbGllbnQuYWRkKGlkZW50aWZpZXIsIG51bGxwdHIpOworICAgIGlmIChhZGRSZXN1bHQu
aXNOZXdFbnRyeSkKKyAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlx
dWU8SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudD4oY29ubmVjdGlvbiwgaWRlbnRpZmllcik7
CisKKyAgICBBU1NFUlQoYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+aXBjQ29ubmVjdGlvbigp
ID09IGNvbm5lY3Rpb24pOworICAgIHJldHVybiBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5j
b25uZWN0aW9uVG9DbGllbnQoKTsKK30KKwordm9pZCBJREJTdG9yYWdlUmVnaXN0cnk6OnJlbW92
ZUNvbm5lY3Rpb25Ub0NsaWVudChJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGNvbm5lY3Rpb24p
Cit7CisgICAgYXV0byBhbGxDb25uZWN0aW9uc1RvQ2xpZW50ID0gc3RkOjpleGNoYW5nZShtX2Nv
bm5lY3Rpb25zVG9DbGllbnQsIHsgfSk7CisgICAgZm9yIChhdXRvJiBbaWRlbnRpZmllciwgY29u
bmVjdGlvblRvQ2xpZW50XSA6IGFsbENvbm5lY3Rpb25zVG9DbGllbnQpIHsKKyAgICAgICAgaWYg
KGNvbm5lY3Rpb25Ub0NsaWVudC0+aXBjQ29ubmVjdGlvbigpICE9IGNvbm5lY3Rpb24pIHsKKyAg
ICAgICAgICAgIG1fY29ubmVjdGlvbnNUb0NsaWVudC5hZGQoaWRlbnRpZmllciwgV1RGTW92ZShj
b25uZWN0aW9uVG9DbGllbnQpKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9Cisg
ICAgICAgIGNvbm5lY3Rpb25Ub0NsaWVudC0+Y29ubmVjdGlvblRvQ2xpZW50KCkuY29ubmVjdGlv
blRvQ2xpZW50Q2xvc2VkKCk7CisgICAgfQorfQorCit2b2lkIElEQlN0b3JhZ2VSZWdpc3RyeTo6
cmVnaXN0ZXJDb25uZWN0aW9uKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VD
b25uZWN0aW9uJiBjb25uZWN0aW9uKQoreworICAgIGF1dG8gaWRlbnRpZmllciA9IGNvbm5lY3Rp
b24uaWRlbnRpZmllcigpOworICAgIEFTU0VSVCghbV9jb25uZWN0aW9ucy5jb250YWlucyhpZGVu
dGlmaWVyKSk7CisKKyAgICBtX2Nvbm5lY3Rpb25zLmFkZChpZGVudGlmaWVyLCBjb25uZWN0aW9u
KTsKK30KKwordm9pZCBJREJTdG9yYWdlUmVnaXN0cnk6OnVucmVnaXN0ZXJDb25uZWN0aW9uKFdl
YkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiBjb25uZWN0aW9u
KQoreworICAgIGF1dG8gaWRlbnRpZmllciA9IGNvbm5lY3Rpb24uaWRlbnRpZmllcigpOworICAg
IEFTU0VSVChtX2Nvbm5lY3Rpb25zLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKKworICAgIG1fY29u
bmVjdGlvbnMucmVtb3ZlKGlkZW50aWZpZXIpOworfQorCit2b2lkIElEQlN0b3JhZ2VSZWdpc3Ry
eTo6cmVnaXN0ZXJUcmFuc2FjdGlvbihXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFi
YXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQoreworICAgIGF1dG8gaWRlbnRpZmllciA9IHRy
YW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCk7CisgICAgQVNTRVJUKCFtX3RyYW5zYWN0aW9u
cy5jb250YWlucyhpZGVudGlmaWVyKSk7CisKKyAgICBtX3RyYW5zYWN0aW9ucy5hZGQoaWRlbnRp
ZmllciwgdHJhbnNhY3Rpb24pOworfQorCit2b2lkIElEQlN0b3JhZ2VSZWdpc3RyeTo6dW5yZWdp
c3RlclRyYW5zYWN0aW9uKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VUcmFu
c2FjdGlvbiYgdHJhbnNhY3Rpb24pCit7CisgICAgYXV0byBpZGVudGlmaWVyID0gdHJhbnNhY3Rp
b24uaW5mbygpLmlkZW50aWZpZXIoKTsKKyAgICBBU1NFUlQobV90cmFuc2FjdGlvbnMuY29udGFp
bnMoaWRlbnRpZmllcikpOworCisgICAgbV90cmFuc2FjdGlvbnMucmVtb3ZlKGlkZW50aWZpZXIp
OworfQorCitXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiog
SURCU3RvcmFnZVJlZ2lzdHJ5Ojpjb25uZWN0aW9uKHVpbnQ2NF90IGlkZW50aWZpZXIpCit7Cisg
ICAgcmV0dXJuIG1fY29ubmVjdGlvbnMuZ2V0KGlkZW50aWZpZXIpLmdldCgpOworfQorCitXZWJD
b3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24qIElEQlN0b3JhZ2VS
ZWdpc3RyeTo6dHJhbnNhY3Rpb24oV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyIGlkZW50
aWZpZXIpCit7CisgICAgcmV0dXJuIG1fdHJhbnNhY3Rpb25zLmdldChpZGVudGlmaWVyKS5nZXQo
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZVJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZVJlZ2lzdHJ5LmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMjM4NGRjZjRmNjE4Njg3YmU2YzI0ZWUzMjYzY2E0OGY4ODc4NzZhYQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlUmVn
aXN0cnkuaApAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9JREJSZXNvdXJjZUlkZW50
aWZpZXIuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CituYW1lc3BhY2UgSURCU2VydmVyIHsKK2NsYXNzIFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlv
bjsKK2NsYXNzIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb247Cit9Cit9CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitjbGFzcyBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OworCitjbGFz
cyBJREJTdG9yYWdlUmVnaXN0cnkgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVi
bGljOgorICAgIElEQlN0b3JhZ2VSZWdpc3RyeSgpOworICAgIFdlYkNvcmU6OklEQlNlcnZlcjo6
SURCQ29ubmVjdGlvblRvQ2xpZW50JiBlbnN1cmVDb25uZWN0aW9uVG9DbGllbnQoSVBDOjpDb25u
ZWN0aW9uOjpVbmlxdWVJRCwgV2ViQ29yZTo6SURCQ29ubmVjdGlvbklkZW50aWZpZXIpOworICAg
IHZvaWQgcmVtb3ZlQ29ubmVjdGlvblRvQ2xpZW50KElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQp
OworICAgIHZvaWQgcmVnaXN0ZXJDb25uZWN0aW9uKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVl
SURCRGF0YWJhc2VDb25uZWN0aW9uJik7CisgICAgdm9pZCB1bnJlZ2lzdGVyQ29ubmVjdGlvbihX
ZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYpOworICAgIFdl
YkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uKiBjb25uZWN0aW9u
KHVpbnQ2NF90IGlkZW50aWZpZXIpOworICAgIHZvaWQgcmVnaXN0ZXJUcmFuc2FjdGlvbihXZWJD
b3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mKTsKKyAgICB2b2lk
IHVucmVnaXN0ZXJUcmFuc2FjdGlvbihXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFi
YXNlVHJhbnNhY3Rpb24mKTsKKyAgICBXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFi
YXNlVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmll
cik7CisKK3ByaXZhdGU6CisgICAgSGFzaE1hcDxXZWJDb3JlOjpJREJDb25uZWN0aW9uSWRlbnRp
Zmllciwgc3RkOjp1bmlxdWVfcHRyPElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ+PiBtX2Nv
bm5lY3Rpb25zVG9DbGllbnQ7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgV2Vha1B0cjxXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbj4+IG1fY29ubmVjdGlvbnM7
CisgICAgSGFzaE1hcDxXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXIsIFdlYWtQdHI8V2Vi
Q29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uPj4gbV90cmFuc2Fj
dGlvbnM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdl
ci5jcHAKaW5kZXggODEzZTZlOTVhMTNhYmUzOTE4NmQxOWIyZGFiMjg3YmJiNTUyNGY3OS4uZDJi
N2UxNjY4NzkwZjE2ZDZiZjQ4NDI5ZWMwYzFlYzdmNDM1ZDVhYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdl
TWFuYWdlci5jcHAKQEAgLTI2LDE4ICsyNiwyNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIk5ldHdvcmtTdG9yYWdlTWFuYWdlci5oIgogCisjaW5jbHVkZSAiQ2FjaGVTdG9yYWdl
RW5naW5lLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeS5oIgog
I2luY2x1ZGUgIkZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlci5oIgorI2luY2x1ZGUgIklEQlN0b3Jh
Z2VDb25uZWN0aW9uVG9DbGllbnQuaCIKKyNpbmNsdWRlICJJREJTdG9yYWdlTWFuYWdlci5oIgor
I2luY2x1ZGUgIklEQlN0b3JhZ2VSZWdpc3RyeS5oIgogI2luY2x1ZGUgIkxvY2FsU3RvcmFnZU1h
bmFnZXIuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQ
cm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VNYW5hZ2VyTWVzc2FnZXMu
aCIKICNpbmNsdWRlICJPcmlnaW5TdG9yYWdlTWFuYWdlci5oIgorI2luY2x1ZGUgIlF1b3RhTWFu
YWdlci5oIgogI2luY2x1ZGUgIlNlc3Npb25TdG9yYWdlTWFuYWdlci5oIgogI2luY2x1ZGUgIlN0
b3JhZ2VBcmVhQmFzZS5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhTWFwTWVzc2FnZXMuaCIKICNp
bmNsdWRlICJTdG9yYWdlQXJlYVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFUeXBl
LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1VuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5oPgogI2luY2x1ZGUgPHBhbC9jcnlwdG8vQ3J5
cHRvRGlnZXN0Lmg+CiAjaW5jbHVkZSA8d3RmL1Njb3BlLmg+CiAjaW5jbHVkZSA8d3RmL1N1c3Bl
bmRhYmxlV29ya1F1ZXVlLmg+CkBAIC0xMDAsMjIgKzEwOCwyOCBAQCBzdGF0aWMgdm9pZCBkZWxl
dGVPcmlnaW5GaWxlSWZOZWNlc3NhcnkoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKICAgICAgICAg
RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShmaWxlUGF0aCk7CiB9CiAKLVJlZjxOZXR3b3JrU3RvcmFn
ZU1hbmFnZXI+IE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGN1c3RvbUxvY2FsU3Rv
cmFnZVBhdGgpCitSZWY8TmV0d29ya1N0b3JhZ2VNYW5hZ2VyPiBOZXR3b3JrU3RvcmFnZU1hbmFn
ZXI6OmNyZWF0ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIElQQzo6Q29ubmVjdGlvbjo6VW5p
cXVlSUQgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGN1c3Rv
bUxvY2FsU3RvcmFnZVBhdGgsIGNvbnN0IFN0cmluZyYgY3VzdG9tSURCU3RvcmFnZVBhdGgsIGNv
bnN0IFN0cmluZyYgY3VzdG9tQ2FjaGVTdG9yYWdlUGF0aCwgdWludDY0X3QgZGVmYXVsdE9yaWdp
blF1b3RhLCB1aW50NjRfdCBkZWZhdWx0VGhpcmRQYXJ0eU9yaWdpblF1b3RhKQogewotICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IE5ldHdvcmtTdG9yYWdlTWFuYWdlcihzZXNzaW9uSUQsIHBhdGgs
IGN1c3RvbUxvY2FsU3RvcmFnZVBhdGgpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXR3
b3JrU3RvcmFnZU1hbmFnZXIoc2Vzc2lvbklELCBjb25uZWN0aW9uLCBwYXRoLCBjdXN0b21Mb2Nh
bFN0b3JhZ2VQYXRoLCBjdXN0b21JREJTdG9yYWdlUGF0aCwgY3VzdG9tQ2FjaGVTdG9yYWdlUGF0
aCwgZGVmYXVsdE9yaWdpblF1b3RhLCBkZWZhdWx0VGhpcmRQYXJ0eU9yaWdpblF1b3RhKSk7CiB9
CiAKLU5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGN1c3Rv
bUxvY2FsU3RvcmFnZVBhdGgpCitOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Ok5ldHdvcmtTdG9yYWdl
TWFuYWdlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIElQQzo6Q29ubmVjdGlvbjo6VW5pcXVl
SUQgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGN1c3RvbUxv
Y2FsU3RvcmFnZVBhdGgsIGNvbnN0IFN0cmluZyYgY3VzdG9tSURCU3RvcmFnZVBhdGgsIGNvbnN0
IFN0cmluZyYgY3VzdG9tQ2FjaGVTdG9yYWdlUGF0aCwgdWludDY0X3QgZGVmYXVsdE9yaWdpblF1
b3RhLCB1aW50NjRfdCBkZWZhdWx0VGhpcmRQYXJ0eU9yaWdpblF1b3RhKQogICAgIDogbV9zZXNz
aW9uSUQoc2Vzc2lvbklEKQogICAgICwgbV9xdWV1ZShTdXNwZW5kYWJsZVdvcmtRdWV1ZTo6Y3Jl
YXRlKCJjb20uYXBwbGUuV2ViS2l0LlN0b3JhZ2UiKSkKKyAgICAsIG1fZGVmYXVsdE9yaWdpblF1
b3RhKGRlZmF1bHRPcmlnaW5RdW90YSkKKyAgICAsIG1fZGVmYXVsdFRoaXJkUGFydHlPcmlnaW5R
dW90YShkZWZhdWx0VGhpcmRQYXJ0eU9yaWdpblF1b3RhKQorICAgICwgbV9wYXJlbnRDb25uZWN0
aW9uKGNvbm5lY3Rpb24pCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAg
IG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwg
cGF0aCA9IHBhdGguaXNvbGF0ZWRDb3B5KCksIGN1c3RvbUxvY2FsU3RvcmFnZVBhdGggPSBjcm9z
c1RocmVhZENvcHkoY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCldKCkgbXV0YWJsZSB7CisgICAgbV9x
dWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBwYXRo
ID0gcGF0aC5pc29sYXRlZENvcHkoKSwgY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCA9IGNyb3NzVGhy
ZWFkQ29weShjdXN0b21Mb2NhbFN0b3JhZ2VQYXRoKSwgY3VzdG9tSURCU3RvcmFnZVBhdGggPSBj
cm9zc1RocmVhZENvcHkoY3VzdG9tSURCU3RvcmFnZVBhdGgpLCBjdXN0b21DYWNoZVN0b3JhZ2VQ
YXRoID0gY3Jvc3NUaHJlYWRDb3B5KGN1c3RvbUNhY2hlU3RvcmFnZVBhdGgpXSgpIG11dGFibGUg
ewogICAgICAgICBtX2ZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnkgPSBtYWtlVW5pcXVl
PEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnk+KCk7CiAgICAgICAgIG1fc3RvcmFnZUFy
ZWFSZWdpc3RyeSA9IG1ha2VVbmlxdWU8U3RvcmFnZUFyZWFSZWdpc3RyeT4oKTsKKyAgICAgICAg
bV9pZGJTdG9yYWdlUmVnaXN0cnkgPSBtYWtlVW5pcXVlPElEQlN0b3JhZ2VSZWdpc3RyeT4oKTsK
ICAgICAgICAgbV9wYXRoID0gcGF0aDsKICAgICAgICAgbV9jdXN0b21Mb2NhbFN0b3JhZ2VQYXRo
ID0gY3VzdG9tTG9jYWxTdG9yYWdlUGF0aDsKKyAgICAgICAgbV9jdXN0b21JREJTdG9yYWdlUGF0
aCA9IGN1c3RvbUlEQlN0b3JhZ2VQYXRoOworICAgICAgICBtX2N1c3RvbUNhY2hlU3RvcmFnZVBh
dGggPSBjdXN0b21DYWNoZVN0b3JhZ2VQYXRoOwogICAgICAgICBpZiAoIW1fcGF0aC5pc0VtcHR5
KCkpIHsKICAgICAgICAgICAgIGF1dG8gc2FsdFBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQobV9wYXRoLCAic2FsdCIpOwogICAgICAgICAgICAgbV9zYWx0ID0gdmFs
dWVPckRlZmF1bHQoRmlsZVN5c3RlbTo6cmVhZE9yTWFrZVNhbHQoc2FsdFBhdGgpKTsKQEAgLTEz
MSw3ICsxNDUsMTAgQEAgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjp+TmV0d29ya1N0b3JhZ2VNYW5h
Z2VyKCkKIAogYm9vbCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNhbkhhbmRsZVR5cGVzKE9wdGlv
blNldDxXZWJzaXRlRGF0YVR5cGU+IHR5cGVzKQogewotICAgIHJldHVybiB0eXBlcy5jb250YWlu
cyhXZWJzaXRlRGF0YVR5cGU6OkxvY2FsU3RvcmFnZSkgfHwgdHlwZXMuY29udGFpbnMoV2Vic2l0
ZURhdGFUeXBlOjpTZXNzaW9uU3RvcmFnZSkgfHwgdHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFU
eXBlOjpGaWxlU3lzdGVtKTsKKyAgICByZXR1cm4gdHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFU
eXBlOjpMb2NhbFN0b3JhZ2UpCisgICAgICAgIHx8IHR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRh
VHlwZTo6U2Vzc2lvblN0b3JhZ2UpCisgICAgICAgIHx8IHR5cGVzLmNvbnRhaW5zKFdlYnNpdGVE
YXRhVHlwZTo6RmlsZVN5c3RlbSkKKyAgICAgICAgfHwgdHlwZXMuY29udGFpbnMoV2Vic2l0ZURh
dGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpOwogfQogCiB2b2lkIE5ldHdvcmtTdG9yYWdlTWFu
YWdlcjo6Y2xvc2UoKQpAQCAtMTcwLDYgKzE4Nyw3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VNYW5h
Z2VyOjpzdG9wUmVjZWl2aW5nTWVzc2FnZUZyb21Db25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiYK
IAogICAgIGNvbm5lY3Rpb24ucmVtb3ZlV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2Vz
OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7CiAgICAgbV9x
dWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBjb25u
ZWN0aW9uID0gY29ubmVjdGlvbi51bmlxdWVJRCgpXSgpIG11dGFibGUgeworICAgICAgICBtX2lk
YlN0b3JhZ2VSZWdpc3RyeS0+cmVtb3ZlQ29ubmVjdGlvblRvQ2xpZW50KGNvbm5lY3Rpb24pOwog
ICAgICAgICBtX2xvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXJzLnJlbW92ZUlmKFsmXShhdXRvJiBl
bnRyeSkgewogICAgICAgICAgICAgYXV0byYgbWFuYWdlciA9IGVudHJ5LnZhbHVlOwogICAgICAg
ICAgICAgbWFuYWdlci0+Y29ubmVjdGlvbkNsb3NlZChjb25uZWN0aW9uKTsKQEAgLTIyMiw3ICsy
NDAsMTQgQEAgT3JpZ2luU3RvcmFnZU1hbmFnZXImIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6bG9j
YWxPcmlnaW5TdG9yYWdlTWFuYWdlcihjb25zdCBXZWIKICAgICAgICAgICAgICAgICB3cml0ZU9y
aWdpblRvRmlsZUlmTmVjZXNzYXJ5KG9yaWdpbkZpbGVQYXRoKG9yaWdpbkRpcmVjdG9yeSksIG9y
aWdpbik7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxPcmlnaW5TdG9yYWdlTWFuYWdlcj4oV1RGTW92ZShvcmlnaW5EaXJlY3RvcnkpLCBMb2Nh
bFN0b3JhZ2VNYW5hZ2VyOjpsb2NhbFN0b3JhZ2VGaWxlUGF0aChtX2N1c3RvbUxvY2FsU3RvcmFn
ZVBhdGgsIG9yaWdpbikpOworICAgICAgICBhdXRvIGxvY2FsU3RvcmFnZVBhdGggPSBMb2NhbFN0
b3JhZ2VNYW5hZ2VyOjpsb2NhbFN0b3JhZ2VGaWxlUGF0aChtX2N1c3RvbUxvY2FsU3RvcmFnZVBh
dGgsIG9yaWdpbik7CisgICAgICAgIGF1dG8gaWRiU3RvcmFnZVBhdGggPSBJREJTdG9yYWdlTWFu
YWdlcjo6aWRiU3RvcmFnZU9yaWdpbkRpcmVjdG9yeShtX2N1c3RvbUlEQlN0b3JhZ2VQYXRoLCBv
cmlnaW4pOworICAgICAgICBhdXRvIGNhY2hlU3RvcmFnZVBhdGggPSBDYWNoZVN0b3JhZ2U6OkVu
Z2luZTo6c3RvcmFnZVBhdGgobV9jdXN0b21DYWNoZVN0b3JhZ2VQYXRoLCBvcmlnaW4pOworICAg
ICAgICB1aW50NjRfdCBxdW90YSA9IG9yaWdpbi50b3BPcmlnaW4gPT0gb3JpZ2luLmNsaWVudE9y
aWdpbiA/IG1fZGVmYXVsdE9yaWdpblF1b3RhIDogbV9kZWZhdWx0VGhpcmRQYXJ0eU9yaWdpblF1
b3RhOworICAgICAgICBRdW90YU1hbmFnZXI6OkluY3JlYXNlUXVvdGFGdW5jdGlvbiBpbmNyZWFz
ZVF1b3RhRnVuY3Rpb24gPSBbc2Vzc2lvbklEID0gbV9zZXNzaW9uSUQsIG9yaWdpbiwgY29ubmVj
dGlvbiA9IG1fcGFyZW50Q29ubmVjdGlvbl0gKGF1dG8gaWRlbnRpZmllciwgYXV0byBjdXJyZW50
UXVvdGEsIGF1dG8gY3VycmVudFVzYWdlLCBhdXRvIHJlcXVlc3RlZEluY3JlYXNlKSBtdXRhYmxl
IHsKKyAgICAgICAgICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChjb25uZWN0aW9uLCBNZXNzYWdl
czo6TmV0d29ya1Byb2Nlc3NQcm94eTo6SW5jcmVhc2VRdW90YShzZXNzaW9uSUQsIG9yaWdpbiwg
aWRlbnRpZmllciwgY3VycmVudFF1b3RhLCBjdXJyZW50VXNhZ2UsIHJlcXVlc3RlZEluY3JlYXNl
KSwgMCk7CisgICAgICAgIH07CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPE9yaWdpblN0b3Jh
Z2VNYW5hZ2VyPihxdW90YSwgV1RGTW92ZShpbmNyZWFzZVF1b3RhRnVuY3Rpb24pLCBXVEZNb3Zl
KG9yaWdpbkRpcmVjdG9yeSksIFdURk1vdmUobG9jYWxTdG9yYWdlUGF0aCksIFdURk1vdmUoaWRi
U3RvcmFnZVBhdGgpLCBXVEZNb3ZlKGNhY2hlU3RvcmFnZVBhdGgpKTsKICAgICB9KS5pdGVyYXRv
ci0+dmFsdWU7CiB9CiAKQEAgLTI4Miw2ICszMDcsMTYgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZU1h
bmFnZXI6OmNsZWFyU3RvcmFnZUZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
IGMKICAgICB9KTsKIH0KIAordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmRpZEluY3JlYXNl
UXVvdGEoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIFF1b3RhSW5jcmVhc2VS
ZXF1ZXN0SWRlbnRpZmllciBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBuZXdR
dW90YSkKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgbV9xdWV1ZS0+
ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBvcmlnaW4gPSBj
cm9zc1RocmVhZENvcHkob3JpZ2luKSwgaWRlbnRpZmllciwgbmV3UXVvdGFdKCkgbXV0YWJsZSB7
CisgICAgICAgIGlmIChhdXRvIG1hbmFnZXIgPSBtX2xvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXJz
LmdldChvcmlnaW4pKQorICAgICAgICAgICAgbWFuYWdlci0+cXVvdGFNYW5hZ2VyKCkuZGlkSW5j
cmVhc2VRdW90YShpZGVudGlmaWVyLCBuZXdRdW90YSk7CisgICAgfSk7Cit9CisKIHZvaWQgTmV0
d29ya1N0b3JhZ2VNYW5hZ2VyOjpmaWxlU3lzdGVtR2V0RGlyZWN0b3J5KElQQzo6Q29ubmVjdGlv
biYgY29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8V2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50
aWZpZXIsIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
ICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKQEAgLTQ1Miw2ICs0ODcsOSBAQCBIYXNo
U2V0PFdlYkNvcmU6OkNsaWVudE9yaWdpbj4gTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpnZXRBbGxP
cmlnaW5zKCkKICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IExvY2FsU3RvcmFnZU1hbmFnZXI6Om9y
aWdpbnNPZkxvY2FsU3RvcmFnZURhdGEobV9jdXN0b21Mb2NhbFN0b3JhZ2VQYXRoKSkKICAgICAg
ICAgYWxsT3JpZ2lucy5hZGQoV2ViQ29yZTo6Q2xpZW50T3JpZ2luIHsgb3JpZ2luLCBvcmlnaW4g
fSk7CiAKKyAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IElEQlN0b3JhZ2VNYW5hZ2VyOjpvcmlnaW5z
T2ZJREJTdG9yYWdlRGF0YShtX2N1c3RvbUlEQlN0b3JhZ2VQYXRoKSkKKyAgICAgICAgYWxsT3Jp
Z2lucy5hZGQob3JpZ2luKTsKKwogICAgIHJldHVybiBhbGxPcmlnaW5zOwogfQogCkBAIC01Nzks
MTIgKzYxNywxNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6bW92ZURhdGEoY29uc3Qg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBzb3VyY2UsCiAgICAgICAgIGF1dG8gdGFyZ2V0
T3JpZ2luID0gV2ViQ29yZTo6Q2xpZW50T3JpZ2luIHsgdGFyZ2V0LCB0YXJnZXQgfTsKICAgICAg
ICAgCiAgICAgICAgIC8vIENsZWFyIGV4aXN0aW5nIGRhdGEgb2YgdGFyZ2V0IG9yaWdpbi4KLSAg
ICAgICAgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gdHlwZXMgPSB7IFdlYnNpdGVEYXRhVHlw
ZTo6RmlsZVN5c3RlbSwgV2Vic2l0ZURhdGFUeXBlOjpMb2NhbFN0b3JhZ2UsIFdlYnNpdGVEYXRh
VHlwZTo6U2Vzc2lvblN0b3JhZ2UgIH07CisgICAgICAgIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5
cGU+IHR5cGVzID0geworICAgICAgICAgICAgV2Vic2l0ZURhdGFUeXBlOjpGaWxlU3lzdGVtLAor
ICAgICAgICAgICAgV2Vic2l0ZURhdGFUeXBlOjpMb2NhbFN0b3JhZ2UsCisgICAgICAgICAgICBX
ZWJzaXRlRGF0YVR5cGU6OlNlc3Npb25TdG9yYWdlLAorICAgICAgICAgICAgV2Vic2l0ZURhdGFU
eXBlOjpJbmRleGVkREJEYXRhYmFzZXMKKyAgICAgICAgfTsKICAgICAgICAgbG9jYWxPcmlnaW5T
dG9yYWdlTWFuYWdlcih0YXJnZXRPcmlnaW4pLmRlbGV0ZURhdGEodHlwZXMsIC1XYWxsVGltZTo6
aW5maW5pdHkoKSk7CiAgICAgICAgIHJlbW92ZU9yaWdpblN0b3JhZ2VNYW5hZ2VySWZQb3NzaWJs
ZSh0YXJnZXRPcmlnaW4pOwogCiAgICAgICAgIC8vIE1vdmUgZGF0YSBmcm9tIHNvdXJjZSBvcmln
aW4gdG8gdGFyZ2V0IG9yaWdpbi4KLSAgICAgICAgbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcihz
b3VyY2VPcmlnaW4pLm1vdmVEYXRhKG9yaWdpbkRpcmVjdG9yeVBhdGgobV9wYXRoLCB0YXJnZXRP
cmlnaW4sIG1fc2FsdCksIExvY2FsU3RvcmFnZU1hbmFnZXI6OmxvY2FsU3RvcmFnZUZpbGVQYXRo
KG1fY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCwgdGFyZ2V0T3JpZ2luKSk7CisgICAgICAgIGxvY2Fs
T3JpZ2luU3RvcmFnZU1hbmFnZXIoc291cmNlT3JpZ2luKS5tb3ZlRGF0YShvcmlnaW5EaXJlY3Rv
cnlQYXRoKG1fcGF0aCwgdGFyZ2V0T3JpZ2luLCBtX3NhbHQpLCBMb2NhbFN0b3JhZ2VNYW5hZ2Vy
Ojpsb2NhbFN0b3JhZ2VGaWxlUGF0aChtX2N1c3RvbUxvY2FsU3RvcmFnZVBhdGgsIHRhcmdldE9y
aWdpbiksIElEQlN0b3JhZ2VNYW5hZ2VyOjppZGJTdG9yYWdlT3JpZ2luRGlyZWN0b3J5KG1fY3Vz
dG9tSURCU3RvcmFnZVBhdGgsIHRhcmdldE9yaWdpbikpOwogICAgICAgICByZW1vdmVPcmlnaW5T
dG9yYWdlTWFuYWdlcklmUG9zc2libGUoc291cmNlT3JpZ2luKTsKIAogICAgICAgICBSdW5Mb29w
OjptYWluKCkuZGlzcGF0Y2goV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwpAQCAtNTk5LDYg
KzY0Miw4IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpzdXNwZW5kKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlCiAgICAgICAgIGZvciAoYXV0byYgbWFu
YWdlciA6IG1fbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcnMudmFsdWVzKCkpIHsKICAgICAgICAg
ICAgIGlmIChhdXRvIGxvY2FsU3RvcmFnZU1hbmFnZXIgPSBtYW5hZ2VyLT5leGlzdGluZ0xvY2Fs
U3RvcmFnZU1hbmFnZXIoKSkKICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2VNYW5hZ2VyLT5z
eW5jTG9jYWxTdG9yYWdlKCk7CisgICAgICAgICAgICBpZiAoYXV0byBpZGJTdG9yYWdlTWFuYWdl
ciA9IG1hbmFnZXItPmV4aXN0aW5nSURCU3RvcmFnZU1hbmFnZXIoKSkKKyAgICAgICAgICAgICAg
ICBpZGJTdG9yYWdlTWFuYWdlci0+c3RvcERhdGFiYXNlQWN0aXZpdGllc0ZvclN1c3BlbmQoKTsK
ICAgICAgICAgfQogICAgIH0sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KQEAgLTYz
Niw2ICs2ODEsNTIgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnN5bmNMb2NhbFN0b3Jh
Z2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXQKICAgICB9KTsKIH0KIAordm9p
ZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnJlZ2lzdGVyVGVtcG9yYXJ5QmxvYkZpbGVQYXRocyhJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlUGF0
aHMpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIG1fcXVldWUtPmRp
c3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY29ubmVjdGlvbklE
ID0gY29ubmVjdGlvbi51bmlxdWVJRCgpLCBmaWxlUGF0aHMgPSBjcm9zc1RocmVhZENvcHkoZmls
ZVBhdGhzKV0geworICAgICAgICBhdXRvJiB0ZW1wb3JhcnlCbG9iUGF0aHMgPSBtX3RlbXBvcmFy
eUJsb2JQYXRoc0J5Q29ubmVjdGlvbi5lbnN1cmUoY29ubmVjdGlvbklELCBbXSB7CisgICAgICAg
ICAgICByZXR1cm4gSGFzaFNldDxTdHJpbmc+IHsgfTsKKyAgICAgICAgfSkuaXRlcmF0b3ItPnZh
bHVlOworICAgICAgICB0ZW1wb3JhcnlCbG9iUGF0aHMuYWRkKGZpbGVQYXRocy5iZWdpbigpLCBm
aWxlUGF0aHMuZW5kKCkpOworICAgIH0pOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdl
cjo6cmVxdWVzdFNwYWNlKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCB1aW50
NjRfdCBzaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQoreworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBtX3F1ZXVlLT5k
aXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIG9yaWdpbiA9IGNy
b3NzVGhyZWFkQ29weShvcmlnaW4pLCBzaXplLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICBsb2NhbE9yaWdpblN0b3Jh
Z2VNYW5hZ2VyKG9yaWdpbikucXVvdGFNYW5hZ2VyKCkucmVxdWVzdFNwYWNlKHNpemUsIFtjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvIGRlY2lzaW9u
KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgZGVjaXNpb25dKCkgbXV0
YWJsZSB7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZGVjaXNpb24gPT0gUXVv
dGFNYW5hZ2VyOjpEZWNpc2lvbjo6R3JhbnQpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0p
OworICAgIH0pOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6cmVzZXRRdW90YUZv
clRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
eworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBtX3F1ZXVlLT5kaXNwYXRj
aChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIGZvciAo
YXV0byYgbWFuYWdlciA6IG1fbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcnMudmFsdWVzKCkpCisg
ICAgICAgICAgICBtYW5hZ2VyLT5xdW90YU1hbmFnZXIoKS5yZXNldFF1b3RhRm9yVGVzdGluZygp
OworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOworICAgIH0pOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6cmVzZXRR
dW90YVVwZGF0ZWRCYXNlZE9uVXNhZ2VGb3JUZXN0aW5nKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9y
aWdpbiYgb3JpZ2luKQoreworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBt
X3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIG9y
aWdpbiA9IGNyb3NzVGhyZWFkQ29weShvcmlnaW4pXSgpIG11dGFibGUgeworICAgICAgICBpZiAo
YXV0byBtYW5hZ2VyID0gbV9sb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2Vycy5nZXQob3JpZ2luKSkK
KyAgICAgICAgICAgIG1hbmFnZXItPnF1b3RhTWFuYWdlcigpLnJlc2V0UXVvdGFVcGRhdGVkQmFz
ZWRPblVzYWdlRm9yVGVzdGluZygpOworICAgIH0pOworfQorCiB2b2lkIE5ldHdvcmtTdG9yYWdl
TWFuYWdlcjo6Y29ubmVjdFRvU3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
LCBXZWJDb3JlOjpTdG9yYWdlVHlwZSB0eXBlLCBTdG9yYWdlQXJlYU1hcElkZW50aWZpZXIgc291
cmNlSWRlbnRpZmllciwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIgbmFtZXNwYWNlSWRlbnRp
ZmllciwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoU3RvcmFnZUFyZWFJZGVudGlmaWVyLCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiwg
dWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6
aXNNYWluKCkpOwpAQCAtNzIzLDUgKzgxNCwxOTUgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFn
ZXI6OmNsZWFyKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU3RvcmFnZUFyZWFJZGVudGkK
ICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdl
cjo6b3BlbkRhdGFiYXNlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgV2ViQ29y
ZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhKQoreworICAgIGF1dG8mIGNvbm5lY3Rpb25U
b0NsaWVudCA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT5lbnN1cmVDb25uZWN0aW9uVG9DbGllbnQo
Y29ubmVjdGlvbi51bmlxdWVJRCgpLCByZXF1ZXN0RGF0YS5yZXF1ZXN0SWRlbnRpZmllcigpLmNv
bm5lY3Rpb25JZGVudGlmaWVyKCkpOworICAgIGxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIocmVx
dWVzdERhdGEuZGF0YWJhc2VJZGVudGlmaWVyKCkub3JpZ2luKCkpLmlkYlN0b3JhZ2VNYW5hZ2Vy
KCptX2lkYlN0b3JhZ2VSZWdpc3RyeSkub3BlbkRhdGFiYXNlKGNvbm5lY3Rpb25Ub0NsaWVudCwg
cmVxdWVzdERhdGEpOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6b3BlbkRCUmVx
dWVzdENhbmNlbGxlZChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEp
Cit7CisgICAgbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcihyZXF1ZXN0RGF0YS5kYXRhYmFzZUlk
ZW50aWZpZXIoKS5vcmlnaW4oKSkuaWRiU3RvcmFnZU1hbmFnZXIoKm1faWRiU3RvcmFnZVJlZ2lz
dHJ5KS5vcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKHJlcXVlc3REYXRhKTsKK30KKwordm9pZCBOZXR3
b3JrU3RvcmFnZU1hbmFnZXI6OmRlbGV0ZURhdGFiYXNlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhKQoreworICAg
IGF1dG8mIGNvbm5lY3Rpb25Ub0NsaWVudCA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT5lbnN1cmVD
b25uZWN0aW9uVG9DbGllbnQoY29ubmVjdGlvbi51bmlxdWVJRCgpLCByZXF1ZXN0RGF0YS5yZXF1
ZXN0SWRlbnRpZmllcigpLmNvbm5lY3Rpb25JZGVudGlmaWVyKCkpOworICAgIGxvY2FsT3JpZ2lu
U3RvcmFnZU1hbmFnZXIocmVxdWVzdERhdGEuZGF0YWJhc2VJZGVudGlmaWVyKCkub3JpZ2luKCkp
LmlkYlN0b3JhZ2VNYW5hZ2VyKCptX2lkYlN0b3JhZ2VSZWdpc3RyeSkuZGVsZXRlRGF0YWJhc2Uo
Y29ubmVjdGlvblRvQ2xpZW50LCByZXF1ZXN0RGF0YSk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyOjplc3RhYmxpc2hUcmFuc2FjdGlvbih1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rp
b25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkluZm8mIHRyYW5zYWN0
aW9uSW5mbykKK3sKKyAgICBpZiAoYXV0byBjb25uZWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0
cnktPmNvbm5lY3Rpb24oZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcikpCisgICAgICAgIGNv
bm5lY3Rpb24tPmVzdGFibGlzaFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSW5mbyk7Cit9CisKK3Zv
aWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkYXRhYmFzZUNvbm5lY3Rpb25QZW5kaW5nQ2xvc2Uo
dWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcikKK3sKKyAgICBpZiAoYXV0byBj
b25uZWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPmNvbm5lY3Rpb24oZGF0YWJhc2VDb25u
ZWN0aW9uSWRlbnRpZmllcikpCisgICAgICAgIGNvbm5lY3Rpb24tPmNvbm5lY3Rpb25QZW5kaW5n
Q2xvc2VGcm9tQ2xpZW50KCk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkYXRh
YmFzZUNvbm5lY3Rpb25DbG9zZWQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmll
cikKK3sKKyAgICBpZiAoYXV0byBjb25uZWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPmNv
bm5lY3Rpb24oZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcikpCisgICAgICAgIGNvbm5lY3Rp
b24tPmNvbm5lY3Rpb25DbG9zZWRGcm9tQ2xpZW50KCk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyOjphYm9ydE9wZW5BbmRVcGdyYWRlTmVlZGVkKHVpbnQ2NF90IGRhdGFiYXNlQ29u
bmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYg
dHJhbnNhY3Rpb25JZGVudGlmaWVyKQoreworICAgIGlmIChhdXRvIHRyYW5zYWN0aW9uID0gbV9p
ZGJTdG9yYWdlUmVnaXN0cnktPnRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllcikpCisg
ICAgICAgIHRyYW5zYWN0aW9uLT5hYm9ydFdpdGhvdXRDYWxsYmFjaygpOworCisgICAgaWYgKGF1
dG8gY29ubmVjdGlvbiA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT5jb25uZWN0aW9uKGRhdGFiYXNl
Q29ubmVjdGlvbklkZW50aWZpZXIpKQorICAgICAgICBjb25uZWN0aW9uLT5jb25uZWN0aW9uQ2xv
c2VkRnJvbUNsaWVudCgpOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGlkRmly
ZVZlcnNpb25DaGFuZ2VFdmVudCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVy
LCBjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVy
LCBjb25zdCBXZWJDb3JlOjpJbmRleGVkREI6OkNvbm5lY3Rpb25DbG9zZWRPbkJlaGFsZk9mU2Vy
dmVyIGNvbm5lY3Rpb25DbG9zZWQpCit7CisgICAgaWYgKGF1dG8gY29ubmVjdGlvbiA9IG1faWRi
U3RvcmFnZVJlZ2lzdHJ5LT5jb25uZWN0aW9uKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIp
KQorICAgICAgICBjb25uZWN0aW9uLT5kaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KHJlcXVlc3RJ
ZGVudGlmaWVyLCBjb25uZWN0aW9uQ2xvc2VkKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1h
bmFnZXI6OmFib3J0VHJhbnNhY3Rpb24oY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlm
aWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpCit7CisgICAgaWYgKGF1dG8gdHJhbnNhY3Rpb24g
PSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+dHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZGVudGlmaWVy
KSkKKyAgICAgICAgdHJhbnNhY3Rpb24tPmFib3J0KCk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyOjpjb21taXRUcmFuc2FjdGlvbihjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlk
ZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgcGVuZGluZ1JlcXVlc3RD
b3VudCkKK3sKKyAgICBpZiAoYXV0byB0cmFuc2FjdGlvbiA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5
LT50cmFuc2FjdGlvbih0cmFuc2FjdGlvbklkZW50aWZpZXIpKQorICAgICAgICB0cmFuc2FjdGlv
bi0+Y29tbWl0KHBlbmRpbmdSZXF1ZXN0Q291bnQpOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdl
TWFuYWdlcjo6ZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24odWludDY0
X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCUmVzb3Vy
Y2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpCit7CisgICAgaWYgKGF1dG8gY29u
bmVjdGlvbiA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT5jb25uZWN0aW9uKGRhdGFiYXNlQ29ubmVj
dGlvbklkZW50aWZpZXIpKQorICAgICAgICBjb25uZWN0aW9uLT5kaWRGaW5pc2hIYW5kbGluZ1Zl
cnNpb25DaGFuZ2UodHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKK30KKwordm9pZCBOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3RE
YXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVJbmZvJiBvYmpl
Y3RTdG9yZUluZm8pCit7CisgICAgaWYgKGF1dG8gdHJhbnNhY3Rpb24gPSBtX2lkYlN0b3JhZ2VS
ZWdpc3RyeS0+dHJhbnNhY3Rpb24ocmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCkp
KSB7CisgICAgICAgIEFTU0VSVCh0cmFuc2FjdGlvbi0+aXNWZXJzaW9uQ2hhbmdlKCkpOworICAg
ICAgICB0cmFuc2FjdGlvbi0+Y3JlYXRlT2JqZWN0U3RvcmUocmVxdWVzdERhdGEsIG9iamVjdFN0
b3JlSW5mbyk7CisgICAgfQorfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGVsZXRl
T2JqZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBj
b25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSkKK3sKKyAgICBpZiAoYXV0byB0cmFuc2FjdGlv
biA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT50cmFuc2FjdGlvbihyZXF1ZXN0RGF0YS50cmFuc2Fj
dGlvbklkZW50aWZpZXIoKSkpIHsKKyAgICAgICAgQVNTRVJUKHRyYW5zYWN0aW9uLT5pc1ZlcnNp
b25DaGFuZ2UoKSk7CisgICAgICAgIHRyYW5zYWN0aW9uLT5kZWxldGVPYmplY3RTdG9yZShyZXF1
ZXN0RGF0YSwgb2JqZWN0U3RvcmVOYW1lKTsKKyAgICB9Cit9CisKK3ZvaWQgTmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyOjpyZW5hbWVPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0
YSYgcmVxdWVzdERhdGEsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBuZXdOYW1lKQoreworICAgIGlmIChhdXRvIHRyYW5zYWN0aW9uID0gbV9pZGJTdG9yYWdl
UmVnaXN0cnktPnRyYW5zYWN0aW9uKHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigp
KSkgeworICAgICAgICBBU1NFUlQodHJhbnNhY3Rpb24tPmlzVmVyc2lvbkNoYW5nZSgpKTsKKyAg
ICAgICAgdHJhbnNhY3Rpb24tPnJlbmFtZU9iamVjdFN0b3JlKHJlcXVlc3REYXRhLCBvYmplY3RT
dG9yZUlkZW50aWZpZXIsIG5ld05hbWUpOworICAgIH0KK30KKwordm9pZCBOZXR3b3JrU3RvcmFn
ZU1hbmFnZXI6OmNsZWFyT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEm
IHJlcXVlc3REYXRhLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIpCit7CisgICAgaWYg
KGF1dG8gdHJhbnNhY3Rpb24gPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+dHJhbnNhY3Rpb24ocmVx
dWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCkpKQorICAgICAgICB0cmFuc2FjdGlvbi0+
Y2xlYXJPYmplY3RTdG9yZShyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZUluZGV4KGNvbnN0IFdlYkNvcmU6
OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgV2ViQ29yZTo6SURCSW5kZXhJbmZv
JiBpbmRleEluZm8pCit7CisgICAgaWYgKGF1dG8gdHJhbnNhY3Rpb24gPSBtX2lkYlN0b3JhZ2VS
ZWdpc3RyeS0+dHJhbnNhY3Rpb24ocmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCkp
KQorICAgICAgICB0cmFuc2FjdGlvbi0+Y3JlYXRlSW5kZXgocmVxdWVzdERhdGEsIGluZGV4SW5m
byk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVJbmRleChjb25zdCBX
ZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIHVpbnQ2NF90IG9iamVjdFN0b3Jl
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpbmRleE5hbWUpCit7CisgICAgaWYgKGF1dG8gdHJh
bnNhY3Rpb24gPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+dHJhbnNhY3Rpb24ocmVxdWVzdERhdGEu
dHJhbnNhY3Rpb25JZGVudGlmaWVyKCkpKQorICAgICAgICB0cmFuc2FjdGlvbi0+ZGVsZXRlSW5k
ZXgocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhOYW1lKTsKK30KKwor
dm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnJlbmFtZUluZGV4KGNvbnN0IFdlYkNvcmU6OklE
QlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVy
LCB1aW50NjRfdCBpbmRleElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSkKK3sKKyAg
ICBpZiAoYXV0byB0cmFuc2FjdGlvbiA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT50cmFuc2FjdGlv
bihyZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSkpCisgICAgICAgIHRyYW5zYWN0
aW9uLT5yZW5hbWVJbmRleChyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRl
eElkZW50aWZpZXIsIG5ld05hbWUpOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6
cHV0T3JBZGQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpJREJS
ZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IFdlYkNvcmU6OklEQktleURhdGEmIGtleURh
dGEsIGNvbnN0IFdlYkNvcmU6OklEQlZhbHVlJiB2YWx1ZSwgV2ViQ29yZTo6SW5kZXhlZERCOjpP
YmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUgb3ZlcndyaXRlTW9kZSkKK3sKKyAgICBpZiAodmFsdWUu
YmxvYlVSTHMoKS5zaXplKCkgIT0gdmFsdWUuYmxvYkZpbGVQYXRocygpLnNpemUoKSkgeworICAg
ICAgICBSRUxFQVNFX0xPR19GQVVMVChJbmRleGVkREIsICJOZXR3b3JrU3RvcmFnZU1hbmFnZXI6
OnB1dE9yQWRkOiBOdW1iZXIgb2YgYmxvYiBVUkxzIGRvZXNuJ3QgbWF0Y2ggdGhlIG51bWJlciBv
ZiBibG9iIGZpbGUgcGF0aHMuIik7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gVmFsaWRhdGUgdGVtcG9yYXJ5IGJsb2IgcGF0
aHMgaW4gfHZhbHVlfCB0byBtYWtlIHN1cmUgdGhleSBiZWxvbmcgdG8gdGhlIHNvdXJjZSBwcm9j
ZXNzLgorICAgIGlmICghdmFsdWUuYmxvYkZpbGVQYXRocygpLmlzRW1wdHkoKSkgeworICAgICAg
ICBhdXRvIGl0ID0gbV90ZW1wb3JhcnlCbG9iUGF0aHNCeUNvbm5lY3Rpb24uZmluZChjb25uZWN0
aW9uLnVuaXF1ZUlEKCkpOworICAgICAgICBpZiAoaXQgPT0gbV90ZW1wb3JhcnlCbG9iUGF0aHNC
eUNvbm5lY3Rpb24uZW5kKCkpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0ZBVUxUKEluZGV4
ZWREQiwgIk5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6cHV0T3JBZGQ6IElEQlZhbHVlIGNvbnRhaW5z
IGJsb2IgcGF0aHMgYnV0IG5vbmUgYXJlIGFsbG93ZWQgZm9yIHRoaXMgcHJvY2VzcyIpOworICAg
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKworICAgICAgICBhdXRvJiB0ZW1wb3JhcnlCbG9iUGF0aHNGb3JDb25uZWN0aW9uID0g
aXQtPnZhbHVlOworICAgICAgICBmb3IgKGF1dG8mIGJsb2JGaWxlUGF0aCA6IHZhbHVlLmJsb2JG
aWxlUGF0aHMoKSkgeworICAgICAgICAgICAgaWYgKCF0ZW1wb3JhcnlCbG9iUGF0aHNGb3JDb25u
ZWN0aW9uLnJlbW92ZShibG9iRmlsZVBhdGgpKSB7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9M
T0dfRkFVTFQoSW5kZXhlZERCLCAiTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpwdXRPckFkZDogQmxv
YiBwYXRoIHdhcyBub3QgY3JlYXRlZCBmb3IgdGhpcyBXZWJQcm9jZXNzIik7CisgICAgICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGF1dG8gdHJhbnNhY3Rpb24g
PSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+dHJhbnNhY3Rpb24ocmVxdWVzdERhdGEudHJhbnNhY3Rp
b25JZGVudGlmaWVyKCkpKQorICAgICAgICB0cmFuc2FjdGlvbi0+cHV0T3JBZGQocmVxdWVzdERh
dGEsIGtleURhdGEsIHZhbHVlLCBvdmVyd3JpdGVNb2RlKTsKK30KKwordm9pZCBOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6OmdldFJlY29yZChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVx
dWVzdERhdGEsIGNvbnN0IFdlYkNvcmU6OklEQkdldFJlY29yZERhdGEmIGdldFJlY29yZERhdGEp
Cit7CisgICAgaWYgKGF1dG8gdHJhbnNhY3Rpb24gPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+dHJh
bnNhY3Rpb24ocmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCkpKQorICAgICAgICB0
cmFuc2FjdGlvbi0+Z2V0UmVjb3JkKHJlcXVlc3REYXRhLCBnZXRSZWNvcmREYXRhKTsKK30KKwor
dm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmdldEFsbFJlY29yZHMoY29uc3QgV2ViQ29yZTo6
SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBXZWJDb3JlOjpJREJHZXRBbGxSZWNv
cmRzRGF0YSYgZ2V0QWxsUmVjb3Jkc0RhdGEpCit7CisgICAgaWYgKGF1dG8gdHJhbnNhY3Rpb24g
PSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+dHJhbnNhY3Rpb24ocmVxdWVzdERhdGEudHJhbnNhY3Rp
b25JZGVudGlmaWVyKCkpKQorICAgICAgICB0cmFuc2FjdGlvbi0+Z2V0QWxsUmVjb3JkcyhyZXF1
ZXN0RGF0YSwgZ2V0QWxsUmVjb3Jkc0RhdGEpOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFu
YWdlcjo6Z2V0Q291bnQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRh
LCBjb25zdCBXZWJDb3JlOjpJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlRGF0YSkKK3sKKyAgICBp
ZiAoYXV0byB0cmFuc2FjdGlvbiA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT50cmFuc2FjdGlvbihy
ZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSkpCisgICAgICAgIHRyYW5zYWN0aW9u
LT5nZXRDb3VudChyZXF1ZXN0RGF0YSwga2V5UmFuZ2VEYXRhKTsKK30KKwordm9pZCBOZXR3b3Jr
U3RvcmFnZU1hbmFnZXI6OmRlbGV0ZVJlY29yZChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0
YSYgcmVxdWVzdERhdGEsIGNvbnN0IFdlYkNvcmU6OklEQktleVJhbmdlRGF0YSYga2V5UmFuZ2VE
YXRhKQoreworICAgIGlmIChhdXRvIHRyYW5zYWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0cnkt
PnRyYW5zYWN0aW9uKHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpKSkKKyAgICAg
ICAgdHJhbnNhY3Rpb24tPmRlbGV0ZVJlY29yZChyZXF1ZXN0RGF0YSwga2V5UmFuZ2VEYXRhKTsK
K30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Om9wZW5DdXJzb3IoY29uc3QgV2ViQ29y
ZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBXZWJDb3JlOjpJREJDdXJzb3JJ
bmZvJiBjdXJzb3JJbmZvKQoreworICAgIGlmIChhdXRvIHRyYW5zYWN0aW9uID0gbV9pZGJTdG9y
YWdlUmVnaXN0cnktPnRyYW5zYWN0aW9uKHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmll
cigpKSkKKyAgICAgICAgdHJhbnNhY3Rpb24tPm9wZW5DdXJzb3IocmVxdWVzdERhdGEsIGN1cnNv
ckluZm8pOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6aXRlcmF0ZUN1cnNvcihj
b25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IFdlYkNvcmU6
OklEQkl0ZXJhdGVDdXJzb3JEYXRhJiBjdXJzb3JEYXRhKQoreworICAgIGlmIChhdXRvIHRyYW5z
YWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPnRyYW5zYWN0aW9uKHJlcXVlc3REYXRhLnRy
YW5zYWN0aW9uSWRlbnRpZmllcigpKSkKKyAgICAgICAgdHJhbnNhY3Rpb24tPml0ZXJhdGVDdXJz
b3IocmVxdWVzdERhdGEsIGN1cnNvckRhdGEpOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFu
YWdlcjo6Z2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRl
bnRpZmllciwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4pCit7CisgICAgYXV0
byYgY29ubmVjdGlvblRvQ2xpZW50ID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPmVuc3VyZUNvbm5l
Y3Rpb25Ub0NsaWVudChjb25uZWN0aW9uLnVuaXF1ZUlEKCksIHJlcXVlc3RJZGVudGlmaWVyLmNv
bm5lY3Rpb25JZGVudGlmaWVyKCkpOworICAgIGF1dG8gcmVzdWx0ID0gbG9jYWxPcmlnaW5TdG9y
YWdlTWFuYWdlcihvcmlnaW4pLmlkYlN0b3JhZ2VNYW5hZ2VyKCptX2lkYlN0b3JhZ2VSZWdpc3Ry
eSkuZ2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKCk7CisgICAgY29ubmVjdGlvblRvQ2xp
ZW50LmRpZEdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhyZXF1ZXN0SWRlbnRpZmllciwg
V1RGTW92ZShyZXN1bHQpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1h
bmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3Rv
cmFnZU1hbmFnZXIuaAppbmRleCAxNWMwMzcyZTY2YTdmNjI4NDk5MjdmMWMzN2YxNmE2OTU4N2Y0
NTAxLi45YzNkMmQ2NDA2ZmVlOWIyYjRlNmNhMjZmN2I2NWZlMGM3OGI4M2JkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5h
Z2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtT
dG9yYWdlTWFuYWdlci5oCkBAIC0zNiw2ICszNiw4IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9DbGll
bnRPcmlnaW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVy
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZp
ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0lEQlJlc291cmNlSWRlbnRpZmllci5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvSW5kZXhlZERCLmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKQEAgLTQ0LDE4ICs0NiwzMSBAQCBjbGFzcyBTaGFyZWRG
aWxlSGFuZGxlOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBJREJDdXJzb3JJbmZv
OworY2xhc3MgSURCS2V5RGF0YTsKK2NsYXNzIElEQkluZGV4SW5mbzsKK2NsYXNzIElEQk9iamVj
dFN0b3JlSW5mbzsKK2NsYXNzIElEQlJlcXVlc3REYXRhOworY2xhc3MgSURCVHJhbnNhY3Rpb25J
bmZvOworY2xhc3MgSURCVmFsdWU7CiBzdHJ1Y3QgQ2xpZW50T3JpZ2luOworc3RydWN0IElEQkdl
dEFsbFJlY29yZHNEYXRhOworc3RydWN0IElEQkdldFJlY29yZERhdGE7CitzdHJ1Y3QgSURCR2V0
QWxsUmVjb3Jkc0RhdGE7CitzdHJ1Y3QgSURCSXRlcmF0ZUN1cnNvckRhdGE7CitzdHJ1Y3QgSURC
S2V5UmFuZ2VEYXRhOwogZW51bSBjbGFzcyBTdG9yYWdlVHlwZSA6IHVpbnQ4X3Q7CiB9CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBGaWxlU3lzdGVtU3RvcmFnZUhhbmRsZVJlZ2lzdHJ5
OworY2xhc3MgSURCU3RvcmFnZVJlZ2lzdHJ5OwogY2xhc3MgU3RvcmFnZUFyZWFSZWdpc3RyeTsK
IAogY2xhc3MgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyIGZpbmFsIDogcHVibGljIElQQzo6Q29ubmVj
dGlvbjo6V29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
PE5ldHdvcmtTdG9yYWdlTWFuYWdlcj4gY3JlYXRlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJp
bmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCk7CisgICAgc3Rh
dGljIFJlZjxOZXR3b3JrU3RvcmFnZU1hbmFnZXI+IGNyZWF0ZShQQUw6OlNlc3Npb25JRCwgSVBD
OjpDb25uZWN0aW9uOjpVbmlxdWVJRCwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcm
IGN1c3RvbUxvY2FsU3RvcmFnZVBhdGgsIGNvbnN0IFN0cmluZyYgY3VzdG9tSURCU3RvcmFnZVBh
dGgsIGNvbnN0IFN0cmluZyYgY3VzdG9tQ2FjaGVTdG9yYWdlUGF0aCwgdWludDY0X3QgZGVmYXVs
dE9yaWdpblF1b3RhLCB1aW50NjRfdCBkZWZhdWx0VGhpcmRQYXJ0eU9yaWdpblF1b3RhKTsKICAg
ICBzdGF0aWMgYm9vbCBjYW5IYW5kbGVUeXBlcyhPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPik7
CiAKICAgICB2b2lkIHN0YXJ0UmVjZWl2aW5nTWVzc2FnZUZyb21Db25uZWN0aW9uKElQQzo6Q29u
bmVjdGlvbiYpOwpAQCAtNjQsNiArNzksNyBAQCBwdWJsaWM6CiAgICAgUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklEKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KICAgICB2b2lkIGNsb3Nl
KCk7CiAgICAgdm9pZCBjbGVhclN0b3JhZ2VGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CisgICAgdm9pZCBkaWRJbmNyZWFzZVF1b3RhKGNvbnN0IFdlYkNvcmU6OkNsaWVu
dE9yaWdpbiYsIFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1
aW50NjRfdD4gbmV3UXVvdGEpOwogICAgIHZvaWQgZmV0Y2hEYXRhKE9wdGlvblNldDxXZWJzaXRl
RGF0YVR5cGU+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJzaXRlRGF0YTo6RW50
cnk+JiYpPiYmKTsKICAgICB2b2lkIGRlbGV0ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlw
ZT4sIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGRlbGV0ZURhdGFNb2RpZmllZFNpbmNlKE9w
dGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBXYWxsVGltZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKQEAgLTczLDE0ICs4OSwxOCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXN1bWUoKTsK
ICAgICB2b2lkIGhhbmRsZUxvd01lbW9yeVdhcm5pbmcoKTsKICAgICB2b2lkIHN5bmNMb2NhbFN0
b3JhZ2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHJlZ2lzdGVyVGVt
cG9yYXJ5QmxvYkZpbGVQYXRocyhJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYpOworICAgIHZvaWQgcmVxdWVzdFNwYWNlKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYs
IHVpbnQ2NF90IHNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZv
aWQgcmVzZXRRdW90YUZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAg
ICB2b2lkIHJlc2V0UXVvdGFVcGRhdGVkQmFzZWRPblVzYWdlRm9yVGVzdGluZyhjb25zdCBXZWJD
b3JlOjpDbGllbnRPcmlnaW4mKTsKIAogcHJpdmF0ZToKICAgICBOZXR3b3JrU3RvcmFnZU1hbmFn
ZXIoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0
b21Mb2NhbFN0b3JhZ2VQYXRoKTsKKyAgICBOZXR3b3JrU3RvcmFnZU1hbmFnZXIoUEFMOjpTZXNz
aW9uSUQsIElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29u
c3QgU3RyaW5nJiBjdXN0b21Mb2NhbFN0b3JhZ2VQYXRoLCBjb25zdCBTdHJpbmcmIGN1c3RvbUlE
QlN0b3JhZ2VQYXRoLCBjb25zdCBTdHJpbmcmIGN1c3RvbUNhY2hlU3RvcmFnZVBhdGgsIHVpbnQ2
NF90IGRlZmF1bHRPcmlnaW5RdW90YSwgdWludDY0X3QgZGVmYXVsdFRoaXJkUGFydHlPcmlnaW5R
dW90YSk7CiAgICAgfk5ldHdvcmtTdG9yYWdlTWFuYWdlcigpOwogICAgIE9yaWdpblN0b3JhZ2VN
YW5hZ2VyJiBsb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2VyKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9y
aWdpbiYpOwogICAgIGJvb2wgcmVtb3ZlT3JpZ2luU3RvcmFnZU1hbmFnZXJJZlBvc3NpYmxlKGNv
bnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYpOwogICAgIHZvaWQgZGVsZXRlT3JpZ2luRGlyZWN0
b3J5SWZQb3NzaWJsZShjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKLSAgICBGaWxlU3lz
dGVtU3RvcmFnZUhhbmRsZVJlZ2lzdHJ5JiBmaWxlU3lzdGVtU3RvcmFnZUhhbmRsZVJlZ2lzdHJ5
KCk7CiAKICAgICB2b2lkIGZvckVhY2hPcmlnaW5EaXJlY3RvcnkoY29uc3QgRnVuY3Rpb248dm9p
ZChjb25zdCBTdHJpbmcmKT4mKTsKICAgICBIYXNoU2V0PFdlYkNvcmU6OkNsaWVudE9yaWdpbj4g
Z2V0QWxsT3JpZ2lucygpOwpAQCAtMTE4LDYgKzEzOCwzNCBAQCBwcml2YXRlOgogICAgIHZvaWQg
cmVtb3ZlSXRlbShJUEM6OkNvbm5lY3Rpb24mLCBTdG9yYWdlQXJlYUlkZW50aWZpZXIsIFN0b3Jh
Z2VBcmVhSW1wbElkZW50aWZpZXIsIFN0cmluZyYmIGtleSwgU3RyaW5nJiYgdXJsU3RyaW5nLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgY2xlYXIoSVBDOjpDb25uZWN0
aW9uJiwgU3RvcmFnZUFyZWFJZGVudGlmaWVyLCBTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyLCBT
dHJpbmcmJiB1cmxTdHJpbmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKKyAgICAv
LyBNZXNzYWdlIGhhbmRsZXJzIGZvciBJbmRleGVkREIuCisgICAgdm9pZCBvcGVuRGF0YWJhc2Uo
SVBDOjpDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmKTsKKyAgICB2
b2lkIG9wZW5EQlJlcXVlc3RDYW5jZWxsZWQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEm
KTsKKyAgICB2b2lkIGRlbGV0ZURhdGFiYXNlKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFdlYkNv
cmU6OklEQlJlcXVlc3REYXRhJik7CisgICAgdm9pZCBlc3RhYmxpc2hUcmFuc2FjdGlvbih1aW50
NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJREJUcmFu
c2FjdGlvbkluZm8mKTsKKyAgICB2b2lkIGRhdGFiYXNlQ29ubmVjdGlvblBlbmRpbmdDbG9zZSh1
aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKTsKKyAgICB2b2lkIGRhdGFiYXNl
Q29ubmVjdGlvbkNsb3NlZCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKTsK
KyAgICB2b2lkIGFib3J0T3BlbkFuZFVwZ3JhZGVOZWVkZWQodWludDY0X3QgZGF0YWJhc2VDb25u
ZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0
cmFuc2FjdGlvbklkZW50aWZpZXIpOworICAgIHZvaWQgZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVu
dCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJ
REJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJ
bmRleGVkREI6OkNvbm5lY3Rpb25DbG9zZWRPbkJlaGFsZk9mU2VydmVyKTsKKyAgICB2b2lkIGFi
b3J0VHJhbnNhY3Rpb24oY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJik7Cisg
ICAgdm9pZCBjb21taXRUcmFuc2FjdGlvbihjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50
aWZpZXImLCB1aW50NjRfdCBwZW5kaW5nUmVxdWVzdENvdW50KTsKKyAgICB2b2lkIGRpZEZpbmlz
aEhhbmRsaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVj
dGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYpOwor
ICAgIHZvaWQgY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEm
LCBjb25zdCBXZWJDb3JlOjpJREJPYmplY3RTdG9yZUluZm8mKTsKKyAgICB2b2lkIGRlbGV0ZU9i
amVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiwgY29uc3QgU3RyaW5nJiBv
YmplY3RTdG9yZU5hbWUpOworICAgIHZvaWQgcmVuYW1lT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29y
ZTo6SURCUmVxdWVzdERhdGEmLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgbmV3TmFtZSk7CisgICAgdm9pZCBjbGVhck9iamVjdFN0b3JlKGNvbnN0IFdlYkNv
cmU6OklEQlJlcXVlc3REYXRhJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKKyAg
ICB2b2lkIGNyZWF0ZUluZGV4KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiwgY29uc3Qg
V2ViQ29yZTo6SURCSW5kZXhJbmZvJik7CisgICAgdm9pZCBkZWxldGVJbmRleChjb25zdCBXZWJD
b3JlOjpJREJSZXF1ZXN0RGF0YSYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBpbmRleE5hbWUpOworICAgIHZvaWQgcmVuYW1lSW5kZXgoY29uc3QgV2ViQ29y
ZTo6SURCUmVxdWVzdERhdGEmLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2
NF90IGluZGV4SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lKTsKKyAgICB2b2lkIHB1
dE9yQWRkKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiwg
Y29uc3QgV2ViQ29yZTo6SURCS2V5RGF0YSYsIGNvbnN0IFdlYkNvcmU6OklEQlZhbHVlJiwgV2Vi
Q29yZTo6SW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUpOworICAgIHZvaWQgZ2V0
UmVjb3JkKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiwgY29uc3QgV2ViQ29yZTo6SURC
R2V0UmVjb3JkRGF0YSYpOworICAgIHZvaWQgZ2V0QWxsUmVjb3Jkcyhjb25zdCBXZWJDb3JlOjpJ
REJSZXF1ZXN0RGF0YSYsIGNvbnN0IFdlYkNvcmU6OklEQkdldEFsbFJlY29yZHNEYXRhJik7Cisg
ICAgdm9pZCBnZXRDb3VudChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IFdl
YkNvcmU6OklEQktleVJhbmdlRGF0YSYpOworICAgIHZvaWQgZGVsZXRlUmVjb3JkKGNvbnN0IFdl
YkNvcmU6OklEQlJlcXVlc3REYXRhJiwgY29uc3QgV2ViQ29yZTo6SURCS2V5UmFuZ2VEYXRhJik7
CisgICAgdm9pZCBvcGVuQ3Vyc29yKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiwgY29u
c3QgV2ViQ29yZTo6SURCQ3Vyc29ySW5mbyYpOworICAgIHZvaWQgaXRlcmF0ZUN1cnNvcihjb25z
dCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IFdlYkNvcmU6OklEQkl0ZXJhdGVDdXJz
b3JEYXRhJik7CisgICAgdm9pZCBnZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMoSVBDOjpD
b25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiwgY29uc3Qg
V2ViQ29yZTo6Q2xpZW50T3JpZ2luJik7CisKICAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25J
RDsKICAgICBSZWY8U3VzcGVuZGFibGVXb3JrUXVldWU+IG1fcXVldWU7CiAgICAgU3RyaW5nIG1f
cGF0aDsKQEAgLTEyNyw3ICsxNzUsMTQgQEAgcHJpdmF0ZToKICAgICBXZWFrSGFzaFNldDxJUEM6
OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbnM7IC8vIE1haW4gdGhyZWFkIG9ubHkuCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnk+IG1fZmlsZVN5c3Rl
bVN0b3JhZ2VIYW5kbGVSZWdpc3RyeTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U3RvcmFnZUFyZWFS
ZWdpc3RyeT4gbV9zdG9yYWdlQXJlYVJlZ2lzdHJ5OworICAgIHN0ZDo6dW5pcXVlX3B0cjxJREJT
dG9yYWdlUmVnaXN0cnk+IG1faWRiU3RvcmFnZVJlZ2lzdHJ5OwogICAgIFN0cmluZyBtX2N1c3Rv
bUxvY2FsU3RvcmFnZVBhdGg7CisgICAgU3RyaW5nIG1fY3VzdG9tSURCU3RvcmFnZVBhdGg7Cisg
ICAgU3RyaW5nIG1fY3VzdG9tQ2FjaGVTdG9yYWdlUGF0aDsKKyAgICB1aW50NjRfdCBtX2RlZmF1
bHRPcmlnaW5RdW90YTsKKyAgICB1aW50NjRfdCBtX2RlZmF1bHRUaGlyZFBhcnR5T3JpZ2luUXVv
dGE7CisgICAgSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBtX3BhcmVudENvbm5lY3Rpb247Cisg
ICAgSGFzaE1hcDxJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBIYXNoU2V0PFN0cmluZz4+IG1f
dGVtcG9yYXJ5QmxvYlBhdGhzQnlDb25uZWN0aW9uOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0
d29ya1N0b3JhZ2VNYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5tZXNzYWdlcy5pbgppbmRleCA1MGI5
NjcwMWIwNzBkZDVjMzI3MTFkYjE0Mjc5MzAzZmU2NTIxMWI3Li40NzMwNWUwZTk4MWNhNWNmYWUw
Nzc0MjZiZjI0Yjc4MTVhNGQ2NGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIu
bWVzc2FnZXMuaW4KQEAgLTQ3LDQgKzQ3LDMxIEBACiAgICAgU2V0SXRlbShXZWJLaXQ6OlN0b3Jh
Z2VBcmVhSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1wbElkZW50
aWZpZXIgaW1wbElkZW50aWZpZXIsIFN0cmluZyBrZXksIFN0cmluZyB2YWx1ZSwgU3RyaW5nIHVy
bFN0cmluZykgLT4gKGJvb2wgcXVvdGFFeGNlcHRpb24pIEFzeW5jIFdhbnRzQ29ubmVjdGlvbgog
ICAgIFJlbW92ZUl0ZW0oV2ViS2l0OjpTdG9yYWdlQXJlYUlkZW50aWZpZXIgaWRlbnRpZmllciwg
V2ViS2l0OjpTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyIGltcGxJZGVudGlmaWVyLCBTdHJpbmcg
a2V5LCBTdHJpbmcgdXJsU3RyaW5nKSAtPiAoKSBBc3luYyBXYW50c0Nvbm5lY3Rpb24KICAgICBD
bGVhcihXZWJLaXQ6OlN0b3JhZ2VBcmVhSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJLaXQ6OlN0
b3JhZ2VBcmVhSW1wbElkZW50aWZpZXIgaW1wbElkZW50aWZpZXIsIFN0cmluZyB1cmxTdHJpbmcp
IC0+ICgpIEFzeW5jIFdhbnRzQ29ubmVjdGlvbgorCisgICAgT3BlbkRhdGFiYXNlKFdlYkNvcmU6
OklEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhKSBXYW50c0Nvbm5lY3Rpb24KKyAgICBPcGVuREJS
ZXF1ZXN0Q2FuY2VsbGVkKFdlYkNvcmU6OklEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhKQorICAg
IERlbGV0ZURhdGFiYXNlKFdlYkNvcmU6OklEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhKSBXYW50
c0Nvbm5lY3Rpb24KKyAgICBFc3RhYmxpc2hUcmFuc2FjdGlvbih1aW50NjRfdCBkYXRhYmFzZUNv
bm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkluZm8gaW5mbykKKyAg
ICBEYXRhYmFzZUNvbm5lY3Rpb25QZW5kaW5nQ2xvc2UodWludDY0X3QgZGF0YWJhc2VDb25uZWN0
aW9uSWRlbnRpZmllcikKKyAgICBEYXRhYmFzZUNvbm5lY3Rpb25DbG9zZWQodWludDY0X3QgZGF0
YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcikKKyAgICBBYm9ydE9wZW5BbmRVcGdyYWRlTmVlZGVk
KHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OklEQlJlc291
cmNlSWRlbnRpZmllciB0cmFuc2FjdGlvbklkZW50aWZpZXIpCisgICAgRGlkRmlyZVZlcnNpb25D
aGFuZ2VFdmVudCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3Jl
OjpJREJSZXNvdXJjZUlkZW50aWZpZXIgcmVxdWVzdElkZW50aWZpZXIsIFdlYkNvcmU6OkluZGV4
ZWREQjo6Q29ubmVjdGlvbkNsb3NlZE9uQmVoYWxmT2ZTZXJ2ZXIgY29ubmVjdGlvbkNsb3NlZE9u
QmVoYWxmT2ZTZXJ2ZXIpCisgICAgRGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlVHJhbnNh
Y3Rpb24odWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6SURC
UmVzb3VyY2VJZGVudGlmaWVyIHRyYW5zYWN0aW9uSWRlbnRpZmllcikKKyAgICBBYm9ydFRyYW5z
YWN0aW9uKFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciB0cmFuc2FjdGlvbklkZW50aWZp
ZXIpCisgICAgQ29tbWl0VHJhbnNhY3Rpb24oV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVy
IHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgcGVuZGluZ1JlcXVlc3RDb3VudCkKKyAg
ICBDcmVhdGVPYmplY3RTdG9yZShXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YSwg
V2ViQ29yZTo6SURCT2JqZWN0U3RvcmVJbmZvIGluZm8pCisgICAgRGVsZXRlT2JqZWN0U3RvcmUo
V2ViQ29yZTo6SURCUmVxdWVzdERhdGEgcmVxdWVzdERhdGEsIFN0cmluZyBvYmplY3RTdG9yZU5h
bWUpCisgICAgUmVuYW1lT2JqZWN0U3RvcmUoV2ViQ29yZTo6SURCUmVxdWVzdERhdGEgcmVxdWVz
dERhdGEsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgU3RyaW5nIG5ld05hbWUpCisg
ICAgQ2xlYXJPYmplY3RTdG9yZShXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YSwg
dWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyKQorICAgIENyZWF0ZUluZGV4KFdlYkNvcmU6
OklEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhLCBXZWJDb3JlOjpJREJJbmRleEluZm8gaW5mbykK
KyAgICBEZWxldGVJbmRleChXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YSwgdWlu
dDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBTdHJpbmcgaW5kZXhOYW1lKQorICAgIFJlbmFt
ZUluZGV4KFdlYkNvcmU6OklEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhLCB1aW50NjRfdCBvYmpl
Y3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciwgU3RyaW5nIG5ld05h
bWUpCisgICAgUHV0T3JBZGQoV2ViQ29yZTo6SURCUmVxdWVzdERhdGEgcmVxdWVzdERhdGEsIFdl
YkNvcmU6OklEQktleURhdGEga2V5LCBXZWJDb3JlOjpJREJWYWx1ZSB2YWx1ZSwgV2ViQ29yZTo6
SW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUgb3ZlcndyaXRlTW9kZSkgV2FudHND
b25uZWN0aW9uCisgICAgR2V0UmVjb3JkKFdlYkNvcmU6OklEQlJlcXVlc3REYXRhIHJlcXVlc3RE
YXRhLCBzdHJ1Y3QgV2ViQ29yZTo6SURCR2V0UmVjb3JkRGF0YSBnZXRSZWNvcmREYXRhKQorICAg
IEdldEFsbFJlY29yZHMoV2ViQ29yZTo6SURCUmVxdWVzdERhdGEgcmVxdWVzdERhdGEsIHN0cnVj
dCBXZWJDb3JlOjpJREJHZXRBbGxSZWNvcmRzRGF0YSBnZXRBbGxSZWNvcmRzRGF0YSkKKyAgICBH
ZXRDb3VudChXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YSwgc3RydWN0IFdlYkNv
cmU6OklEQktleVJhbmdlRGF0YSByYW5nZSkKKyAgICBEZWxldGVSZWNvcmQoV2ViQ29yZTo6SURC
UmVxdWVzdERhdGEgcmVxdWVzdERhdGEsIHN0cnVjdCBXZWJDb3JlOjpJREJLZXlSYW5nZURhdGEg
cmFuZ2UpCisgICAgT3BlbkN1cnNvcihXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0
YSwgV2ViQ29yZTo6SURCQ3Vyc29ySW5mbyBpbmZvKQorICAgIEl0ZXJhdGVDdXJzb3IoV2ViQ29y
ZTo6SURCUmVxdWVzdERhdGEgcmVxdWVzdERhdGEsIHN0cnVjdCBXZWJDb3JlOjpJREJJdGVyYXRl
Q3Vyc29yRGF0YSBkYXRhKQorICAgIEdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhXZWJD
b3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXIgcmVxdWVzdElkZW50aWZpZXIsIHN0cnVjdCBXZWJD
b3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luKSBXYW50c0Nvbm5lY3Rpb24KIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFn
ZU1hbmFnZXIuY3BwCmluZGV4IDU4ODMxZWFhMjY2MGFmODc0ZGU2Yjk1ODkwZTU3YTdmYjYxNTU3
ZWMuLmJjYzBmMzM4Nzc5ZjQ5MzEwMDc0YTdjNmNiZDJmY2FlNzUzNmRjMDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0
b3JhZ2VNYW5hZ2VyLmNwcApAQCAtMjYsOCArMjYsMTEgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJPcmlnaW5TdG9yYWdlTWFuYWdlci5oIgogCisjaW5jbHVkZSAiQ2FjaGVTdG9y
YWdlRW5naW5lLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeS5o
IgogI2luY2x1ZGUgIkZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlci5oIgorI2luY2x1ZGUgIklEQlN0
b3JhZ2VNYW5hZ2VyLmgiCisjaW5jbHVkZSAiSURCU3RvcmFnZVJlZ2lzdHJ5LmgiCiAjaW5jbHVk
ZSAiTG9jYWxTdG9yYWdlTWFuYWdlci5oIgogI2luY2x1ZGUgIk1lbW9yeVN0b3JhZ2VBcmVhLmgi
CiAjaW5jbHVkZSAiU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyLmgiCkBAIC00NCwxMCArNDcsMTEgQEAg
ZW51bSBjbGFzcyBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldE1vZGUgOiBib29s
IHsgQmVzdEVmZm9ydCwgUGVyc2lzdGUKIGNsYXNzIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9y
YWdlQnVja2V0IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBT
dG9yYWdlQnVja2V0KGNvbnN0IFN0cmluZyYgcm9vdFBhdGgsIGNvbnN0IFN0cmluZyYgaWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VQYXRoKQorICAgIFN0b3JhZ2VCdWNrZXQo
Y29uc3QgU3RyaW5nJiByb290UGF0aCwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIGxvY2FsU3RvcmFnZVBhdGgsIGNvbnN0IFN0cmluZyYgaWRiU3RvcmFnZVBhdGgpCiAg
ICAgICAgIDogbV9yb290UGF0aChyb290UGF0aCkKICAgICAgICAgLCBtX2lkZW50aWZpZXIoaWRl
bnRpZmllcikKICAgICAgICAgLCBtX2xvY2FsU3RvcmFnZVBhdGgobG9jYWxTdG9yYWdlUGF0aCkK
KyAgICAgICAgLCBtX2lkYlN0b3JhZ2VQYXRoKGlkYlN0b3JhZ2VQYXRoKQogICAgIHsKICAgICB9
CiAKQEAgLTcwLDYgKzc0LDcgQEAgcHVibGljOgogICAgICAgICBGaWxlU3lzdGVtLAogICAgICAg
ICBMb2NhbFN0b3JhZ2UsCiAgICAgICAgIFNlc3Npb25TdG9yYWdlLAorICAgICAgICBJbmRleGVk
REIsCiAgICAgfTsKIAogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVEYXRhVHlwZT4g
dG9XZWJzaXRlRGF0YVR5cGUoY29uc3QgU3RyaW5nJiBzdG9yYWdlSWRlbnRpZmllcikKQEAgLTgw
LDYgKzg1LDggQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIFdlYnNpdGVEYXRhVHlwZTo6
TG9jYWxTdG9yYWdlOwogICAgICAgICBpZiAoc3RvcmFnZUlkZW50aWZpZXIgPT0gIlNlc3Npb25T
dG9yYWdlIl9zKQogICAgICAgICAgICAgcmV0dXJuIFdlYnNpdGVEYXRhVHlwZTo6U2Vzc2lvblN0
b3JhZ2U7CisgICAgICAgIGlmIChzdG9yYWdlSWRlbnRpZmllciA9PSAiSW5kZXhlZERCIl9zKQor
ICAgICAgICAgICAgcmV0dXJuIFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzOwog
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQpAQCAtOTMsNiArMTAwLDggQEAg
cHVibGljOgogICAgICAgICAgICAgcmV0dXJuICJMb2NhbFN0b3JhZ2UiX3M7CiAgICAgICAgIGNh
c2UgU3RvcmFnZVR5cGU6OlNlc3Npb25TdG9yYWdlOgogICAgICAgICAgICAgcmV0dXJuICJTZXNz
aW9uU3RvcmFnZSJfczsKKyAgICAgICAgY2FzZSBTdG9yYWdlVHlwZTo6SW5kZXhlZERCOgorICAg
ICAgICAgICAgcmV0dXJuICJJbmRleGVkREIiX3M7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMTQzLDEzICsxNTIsMjcgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gbV9zZXNzaW9uU3RvcmFnZU1hbmFnZXIuZ2V0KCk7CiAgICAgfQogCisgICAg
SURCU3RvcmFnZU1hbmFnZXImIGlkYlN0b3JhZ2VNYW5hZ2VyKElEQlN0b3JhZ2VSZWdpc3RyeSYg
cmVnaXN0cnksIElEQlN0b3JhZ2VNYW5hZ2VyOjpRdW90YUNoZWNrRnVuY3Rpb24mJiBxdW90YUNo
ZWNrRnVuY3Rpb24pCisgICAgeworICAgICAgICBpZiAoIW1faWRiU3RvcmFnZU1hbmFnZXIpCisg
ICAgICAgICAgICBtX2lkYlN0b3JhZ2VNYW5hZ2VyID0gbWFrZVVuaXF1ZTxJREJTdG9yYWdlTWFu
YWdlcj4obV9pZGJTdG9yYWdlUGF0aCwgcmVnaXN0cnksIFdURk1vdmUocXVvdGFDaGVja0Z1bmN0
aW9uKSk7CisKKyAgICAgICAgcmV0dXJuICptX2lkYlN0b3JhZ2VNYW5hZ2VyOworICAgIH0KKwor
ICAgIElEQlN0b3JhZ2VNYW5hZ2VyKiBleGlzdGluZ0lEQlN0b3JhZ2VNYW5hZ2VyKCkKKyAgICB7
CisgICAgICAgIHJldHVybiBtX2lkYlN0b3JhZ2VNYW5hZ2VyLmdldCgpOworICAgIH0KKwogICAg
IGJvb2wgaXNBY3RpdmUoKSBjb25zdAogICAgIHsKICAgICAgICAgLy8gV2UgY2Fubm90IHJlbW92
ZSB0aGUgYnVja2V0IGlmIGl0IGhhcyBpbi1tZW1vcnkgZGF0YSwgb3RoZXJ3aXNlIHNlc3Npb24K
ICAgICAgICAgLy8gZGF0YSBtYXkgYmUgbG9zdC4KICAgICAgICAgcmV0dXJuIChtX2ZpbGVTeXN0
ZW1TdG9yYWdlTWFuYWdlciAmJiBtX2ZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlci0+aXNBY3RpdmUo
KSkKICAgICAgICAgICAgIHx8IChtX2xvY2FsU3RvcmFnZU1hbmFnZXIgJiYgKG1fbG9jYWxTdG9y
YWdlTWFuYWdlci0+aGFzRGF0YUluTWVtb3J5KCkgfHwgbV9sb2NhbFN0b3JhZ2VNYW5hZ2VyLT5p
c0FjdGl2ZSgpKSkKLSAgICAgICAgICAgIHx8IChtX3Nlc3Npb25TdG9yYWdlTWFuYWdlciAmJiAo
bV9zZXNzaW9uU3RvcmFnZU1hbmFnZXItPmhhc0RhdGFJbk1lbW9yeSgpIHx8IG1fc2Vzc2lvblN0
b3JhZ2VNYW5hZ2VyLT5pc0FjdGl2ZSgpKSk7CisgICAgICAgICAgICB8fCAobV9zZXNzaW9uU3Rv
cmFnZU1hbmFnZXIgJiYgKG1fc2Vzc2lvblN0b3JhZ2VNYW5hZ2VyLT5oYXNEYXRhSW5NZW1vcnko
KSB8fCBtX3Nlc3Npb25TdG9yYWdlTWFuYWdlci0+aXNBY3RpdmUoKSkpCisgICAgICAgICAgICB8
fCAobV9pZGJTdG9yYWdlTWFuYWdlciAmJiAobV9pZGJTdG9yYWdlTWFuYWdlci0+aGFzRGF0YUlu
TWVtb3J5KCkgfHwgbV9pZGJTdG9yYWdlTWFuYWdlci0+aXNBY3RpdmUoKSkpOwogICAgIH0KIAog
ICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0CkBAIC0xNjUsNyArMTg4LDggQEAgcHVibGljOgogICAg
ICAgICBpZiAoaGFzVmFsaWRGaWxlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
ICAgIHJldHVybiAhRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhtX2xvY2FsU3RvcmFnZVBhdGgpOwor
ICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeShtX2lkYlN0b3JhZ2VQYXRo
KTsKKyAgICAgICAgcmV0dXJuICFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG1fbG9jYWxTdG9yYWdl
UGF0aCkgJiYgIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobV9pZGJTdG9yYWdlUGF0aCk7CiAgICAg
fQogCiAgICAgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZmV0Y2hEYXRhVHlwZXNJbkxpc3Qo
T3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gdHlwZXMpCkBAIC0xODYsMTQgKzIxMCwyMCBAQCBw
dWJsaWM6CiAKICAgICAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6U2Vz
c2lvblN0b3JhZ2UpICYmIG1vZGlmaWVkU2luY2VUaW1lIDwgV2FsbFRpbWU6Om5vdygpKQogICAg
ICAgICAgICAgZGVsZXRlU2Vzc2lvblN0b3JhZ2VEYXRhKCk7CisKKyAgICAgICAgaWYgKHR5cGVz
LmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKSkKKyAgICAgICAg
ICAgIGRlbGV0ZUlEQlN0b3JhZ2VEYXRhKG1vZGlmaWVkU2luY2VUaW1lKTsKICAgICB9CiAKLSAg
ICB2b2lkIG1vdmVEYXRhKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBsb2NhbFN0
b3JhZ2VQYXRoKQorICAgIHZvaWQgbW92ZURhdGEoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBT
dHJpbmcmIGxvY2FsU3RvcmFnZVBhdGgsIGNvbnN0IFN0cmluZyYgaWRiU3RvcmFnZVBhdGgpCiAg
ICAgewogICAgICAgICBtX2ZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlciA9IG51bGxwdHI7CiAgICAg
ICAgIGlmIChtX2xvY2FsU3RvcmFnZU1hbmFnZXIpCiAgICAgICAgICAgICBtX2xvY2FsU3RvcmFn
ZU1hbmFnZXItPmNsb3NlKCk7CiAKKyAgICAgICAgaWYgKG1faWRiU3RvcmFnZU1hbmFnZXIpCisg
ICAgICAgICAgICBtX2lkYlN0b3JhZ2VNYW5hZ2VyLT5jbG9zZURhdGFiYXNlc0ZvckRlbGV0aW9u
KCk7CisKICAgICAgICAgRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKEZpbGVTeXN0ZW06
OnBhcmVudFBhdGgocGF0aCkpOwogICAgICAgICBGaWxlU3lzdGVtOjptb3ZlRmlsZShtX3Jvb3RQ
YXRoLCBwYXRoKTsKIApAQCAtMjAxLDYgKzIzMSwxMSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBG
aWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoRmlsZVN5c3RlbTo6cGFyZW50UGF0aChsb2Nh
bFN0b3JhZ2VQYXRoKSk7CiAgICAgICAgICAgICBXZWJDb3JlOjpTUUxpdGVGaWxlU3lzdGVtOjpt
b3ZlRGF0YWJhc2VGaWxlKG1fbG9jYWxTdG9yYWdlUGF0aCwgbG9jYWxTdG9yYWdlUGF0aCk7CiAg
ICAgICAgIH0KKworICAgICAgICBpZiAoIW1faWRiU3RvcmFnZVBhdGguaXNFbXB0eSgpICYmICFp
ZGJTdG9yYWdlUGF0aC5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIEZpbGVTeXN0ZW06Om1ha2VB
bGxEaXJlY3RvcmllcyhGaWxlU3lzdGVtOjpwYXJlbnRQYXRoKGlkYlN0b3JhZ2VQYXRoKSk7Cisg
ICAgICAgICAgICBXZWJDb3JlOjpTUUxpdGVGaWxlU3lzdGVtOjptb3ZlRGF0YWJhc2VGaWxlKG1f
aWRiU3RvcmFnZVBhdGgsIGlkYlN0b3JhZ2VQYXRoKTsKKyAgICAgICAgfQogICAgIH0KIAogcHJp
dmF0ZToKQEAgLTIxNyw2ICsyNTIsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICByZXN1
bHQuYWRkKFdlYnNpdGVEYXRhVHlwZTo6U2Vzc2lvblN0b3JhZ2UpOwogICAgICAgICB9CiAKKyAg
ICAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJh
c2VzKSkgeworICAgICAgICAgICAgaWYgKG1faWRiU3RvcmFnZU1hbmFnZXIgJiYgbV9pZGJTdG9y
YWdlTWFuYWdlci0+aGFzRGF0YUluTWVtb3J5KCkpCisgICAgICAgICAgICAgICAgcmVzdWx0LmFk
ZChXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcyk7CisgICAgICAgIH0KKwogICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIApAQCAtMjMzLDYgKzI3MywxMSBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQoV2Vic2l0ZURhdGFUeXBlOjpMb2NhbFN0b3Jh
Z2UpOwogICAgICAgICB9CiAKKyAgICAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRh
VHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKSAmJiAhcmVzdWx0LmNvbnRhaW5zKFdlYnNpdGVEYXRh
VHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKSkgeworICAgICAgICAgICAgaWYgKGF1dG8gZGF0YWJh
c2VzID0gRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShtX2lkYlN0b3JhZ2VQYXRoKTsgIWRhdGFi
YXNlcy5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgcmVzdWx0LmFkZChXZWJzaXRlRGF0YVR5
cGU6OkluZGV4ZWREQkRhdGFiYXNlcyk7CisgICAgICAgIH0KKwogICAgICAgICByZXR1cm4gcmVz
dWx0OwogICAgIH0KIApAQCAtMjcwLDYgKzMxNSwxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAg
bV9zZXNzaW9uU3RvcmFnZU1hbmFnZXIgPSBudWxscHRyOwogICAgIH0KICAgICAKKyAgICB2b2lk
IGRlbGV0ZUlEQlN0b3JhZ2VEYXRhKFdhbGxUaW1lIHRpbWUpCisgICAgeworICAgICAgICBpZiAo
bV9pZGJTdG9yYWdlTWFuYWdlcikKKyAgICAgICAgICAgIG1faWRiU3RvcmFnZU1hbmFnZXItPmNs
b3NlRGF0YWJhc2VzRm9yRGVsZXRpb24oKTsKKworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVB
bGxGaWxlc01vZGlmaWVkU2luY2UobV9pZGJTdG9yYWdlUGF0aCwgdGltZSk7CisgICAgfQorICAg
IAogICAgIFN0cmluZyBtX3Jvb3RQYXRoOwogICAgIFN0cmluZyBtX2lkZW50aWZpZXI7CiAgICAg
U3RvcmFnZUJ1Y2tldE1vZGUgbV9tb2RlIHsgU3RvcmFnZUJ1Y2tldE1vZGU6OkJlc3RFZmZvcnQg
fTsKQEAgLTI3NywxMSArMzMwLDI0IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPExv
Y2FsU3RvcmFnZU1hbmFnZXI+IG1fbG9jYWxTdG9yYWdlTWFuYWdlcjsKICAgICBTdHJpbmcgbV9s
b2NhbFN0b3JhZ2VQYXRoOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTZXNzaW9uU3RvcmFnZU1hbmFn
ZXI+IG1fc2Vzc2lvblN0b3JhZ2VNYW5hZ2VyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJREJTdG9y
YWdlTWFuYWdlcj4gbV9pZGJTdG9yYWdlTWFuYWdlcjsKKyAgICBTdHJpbmcgbV9pZGJTdG9yYWdl
UGF0aDsKIH07CiAKLU9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpPcmlnaW5TdG9yYWdlTWFuYWdlcihT
dHJpbmcmJiBwYXRoLCBTdHJpbmcmJiBsb2NhbFN0b3JhZ2VQYXRoKQorc3RhdGljIFJlZjxRdW90
YU1hbmFnZXI+IGNyZWF0ZVF1b3RhTWFuYWdlcih1aW50NjRfdCBxdW90YSwgY29uc3QgU3RyaW5n
JiBpZGJTdG9yYWdlUGF0aCwgY29uc3QgU3RyaW5nJiBjYWNoZVN0b3JhZ2VQYXRoLCBRdW90YU1h
bmFnZXI6OkluY3JlYXNlUXVvdGFGdW5jdGlvbiYmIGluY3JlYXNlUXVvdGFGdW5jdGlvbikKK3sK
KyAgICBRdW90YU1hbmFnZXI6OkdldFVzYWdlRnVuY3Rpb24gZ2V0VXNhZ2VGdW5jdGlvbiA9IFtp
ZGJTdG9yYWdlUGF0aCwgY2FjaGVTdG9yYWdlUGF0aF0oKSB7CisgICAgICAgIHJldHVybiBJREJT
dG9yYWdlTWFuYWdlcjo6aWRiU3RvcmFnZVNpemUoaWRiU3RvcmFnZVBhdGgpICsgQ2FjaGVTdG9y
YWdlOjpFbmdpbmU6OmRpc2tVc2FnZShjYWNoZVN0b3JhZ2VQYXRoKTsKKyAgICB9OworICAgIHJl
dHVybiBRdW90YU1hbmFnZXI6OmNyZWF0ZShxdW90YSwgV1RGTW92ZShnZXRVc2FnZUZ1bmN0aW9u
KSwgV1RGTW92ZShpbmNyZWFzZVF1b3RhRnVuY3Rpb24pKTsKK30KKworT3JpZ2luU3RvcmFnZU1h
bmFnZXI6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyKHVpbnQ2NF90IHF1b3RhLCBRdW90YU1hbmFnZXI6
OkluY3JlYXNlUXVvdGFGdW5jdGlvbiYmIGluY3JlYXNlUXVvdGFGdW5jdGlvbiwgU3RyaW5nJiYg
cGF0aCwgU3RyaW5nJiYgbG9jYWxTdG9yYWdlUGF0aCwgU3RyaW5nJiYgaWRiU3RvcmFnZVBhdGgs
IFN0cmluZyYmIGNhY2hlU3RvcmFnZVBhdGgpCiAgICAgOiBtX3BhdGgoV1RGTW92ZShwYXRoKSkK
ICAgICAsIG1fbG9jYWxTdG9yYWdlUGF0aChXVEZNb3ZlKGxvY2FsU3RvcmFnZVBhdGgpKQorICAg
ICwgbV9pZGJTdG9yYWdlUGF0aChXVEZNb3ZlKGlkYlN0b3JhZ2VQYXRoKSkKKyAgICAsIG1fY2Fj
aGVTdG9yYWdlUGF0aChXVEZNb3ZlKGNhY2hlU3RvcmFnZVBhdGgpKQorICAgICwgbV9xdW90YU1h
bmFnZXIoY3JlYXRlUXVvdGFNYW5hZ2VyKHF1b3RhLCBtX2lkYlN0b3JhZ2VQYXRoLCBtX2NhY2hl
U3RvcmFnZVBhdGgsIFdURk1vdmUoaW5jcmVhc2VRdW90YUZ1bmN0aW9uKSkpCiB7CiAgICAgQVNT
RVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiB9CkBAIC0yOTcsMTEgKzM2MywxNiBAQCB2b2lkIE9y
aWdpblN0b3JhZ2VNYW5hZ2VyOjpjb25uZWN0aW9uQ2xvc2VkKElQQzo6Q29ubmVjdGlvbjo6VW5p
cXVlSUQgY29ubmVjdGlvbgogT3JpZ2luU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VCdWNrZXQmIE9y
aWdpblN0b3JhZ2VNYW5hZ2VyOjpkZWZhdWx0QnVja2V0KCkKIHsKICAgICBpZiAoIW1fZGVmYXVs
dEJ1Y2tldCkKLSAgICAgICAgbV9kZWZhdWx0QnVja2V0ID0gbWFrZVVuaXF1ZTxTdG9yYWdlQnVj
a2V0PihtX3BhdGgsICJkZWZhdWx0Il9zLCBtX2xvY2FsU3RvcmFnZVBhdGgpOworICAgICAgICBt
X2RlZmF1bHRCdWNrZXQgPSBtYWtlVW5pcXVlPFN0b3JhZ2VCdWNrZXQ+KG1fcGF0aCwgImRlZmF1
bHQiX3MsIG1fbG9jYWxTdG9yYWdlUGF0aCwgbV9pZGJTdG9yYWdlUGF0aCk7CiAKICAgICByZXR1
cm4gKm1fZGVmYXVsdEJ1Y2tldDsKIH0KIAorUXVvdGFNYW5hZ2VyJiBPcmlnaW5TdG9yYWdlTWFu
YWdlcjo6cXVvdGFNYW5hZ2VyKCkKK3sKKyAgICByZXR1cm4gbV9xdW90YU1hbmFnZXIuZ2V0KCk7
Cit9CisKIEZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlciYgT3JpZ2luU3RvcmFnZU1hbmFnZXI6OmZp
bGVTeXN0ZW1TdG9yYWdlTWFuYWdlcihGaWxlU3lzdGVtU3RvcmFnZUhhbmRsZVJlZ2lzdHJ5JiBy
ZWdpc3RyeSkKIHsKICAgICByZXR1cm4gZGVmYXVsdEJ1Y2tldCgpLmZpbGVTeXN0ZW1TdG9yYWdl
TWFuYWdlcihyZWdpc3RyeSk7CkBAIC0zMjcsNiArMzk4LDIzIEBAIFNlc3Npb25TdG9yYWdlTWFu
YWdlciogT3JpZ2luU3RvcmFnZU1hbmFnZXI6OmV4aXN0aW5nU2Vzc2lvblN0b3JhZ2VNYW5hZ2Vy
KCkKICAgICByZXR1cm4gZGVmYXVsdEJ1Y2tldCgpLmV4aXN0aW5nU2Vzc2lvblN0b3JhZ2VNYW5h
Z2VyKCk7CiB9CiAKK0lEQlN0b3JhZ2VNYW5hZ2VyJiBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6aWRi
U3RvcmFnZU1hbmFnZXIoSURCU3RvcmFnZVJlZ2lzdHJ5JiByZWdpc3RyeSkKK3sKKyAgICByZXR1
cm4gZGVmYXVsdEJ1Y2tldCgpLmlkYlN0b3JhZ2VNYW5hZ2VyKHJlZ2lzdHJ5LCBbcXVvdGFNYW5h
Z2VyID0gV2Vha1B0ciB7IHRoaXMtPnF1b3RhTWFuYWdlcigpIH1dKHVpbnQ2NF90IHNwYWNlUmVx
dWVzdGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCFxdW90YU1hbmFnZXIpCisgICAgICAgICAgICByZXR1
cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworCisgICAgICAgIHF1b3RhTWFuYWdlci0+cmVx
dWVzdFNwYWNlKHNwYWNlUmVxdWVzdGVkLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0oYXV0byBkZWNpc2lvbikgbXV0YWJsZSB7CisgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihkZWNpc2lvbiA9PSBRdW90YU1hbmFnZXI6OkRlY2lzaW9uOjpHcmFu
dCk7CisgICAgICAgIH0pOworICAgIH0pOworfQorCitJREJTdG9yYWdlTWFuYWdlciogT3JpZ2lu
U3RvcmFnZU1hbmFnZXI6OmV4aXN0aW5nSURCU3RvcmFnZU1hbmFnZXIoKQoreworICAgIHJldHVy
biBkZWZhdWx0QnVja2V0KCkuZXhpc3RpbmdJREJTdG9yYWdlTWFuYWdlcigpOworfQorCiBib29s
IE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjppc0FjdGl2ZSgpCiB7CiAgICAgcmV0dXJuIGRlZmF1bHRC
dWNrZXQoKS5pc0FjdGl2ZSgpOwpAQCAtMzU5LDExICs0NDcsMTEgQEAgdm9pZCBPcmlnaW5TdG9y
YWdlTWFuYWdlcjo6ZGVsZXRlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB0eXBlcywg
V2FsbFRpbWUKICAgICBkZWZhdWx0QnVja2V0KCkuZGVsZXRlRGF0YSh0eXBlcywgbW9kaWZpZWRT
aW5jZSk7CiB9CiAKLXZvaWQgT3JpZ2luU3RvcmFnZU1hbmFnZXI6Om1vdmVEYXRhKGNvbnN0IFN0
cmluZyYgbmV3UGF0aCwgY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VQYXRoKQordm9pZCBPcmln
aW5TdG9yYWdlTWFuYWdlcjo6bW92ZURhdGEoY29uc3QgU3RyaW5nJiBuZXdQYXRoLCBjb25zdCBT
dHJpbmcmIGxvY2FsU3RvcmFnZVBhdGgsIGNvbnN0IFN0cmluZyYgaWRiU3RvcmFnZVBhdGgpCiB7
CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBkZWZhdWx0QnVja2V0KCku
bW92ZURhdGEobmV3UGF0aCwgbG9jYWxTdG9yYWdlUGF0aCk7CisgICAgZGVmYXVsdEJ1Y2tldCgp
Lm1vdmVEYXRhKG5ld1BhdGgsIGxvY2FsU3RvcmFnZVBhdGgsIGlkYlN0b3JhZ2VQYXRoKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5oCmluZGV4IDVlNzY2
OTk4NmU0NjY4NWYzODliN2E1MjcxZTY2ZDBlNjNjMmQxOWUuLmVjNDZjNTRiMzExMWZiMDFiM2Nl
Njk2OTIwN2MxM2JlNWQ5OTlkOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5oCkBAIC0yNiwxNiAr
MjYsMTUgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1
ZGUgIlF1b3RhTWFuYWdlci5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci1zdHJ1Y3QgQ2xpZW50T3JpZ2luOwotfQotCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogY2xhc3MgRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeTsKIGNsYXNz
IEZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlcjsKK2NsYXNzIElEQlN0b3JhZ2VNYW5hZ2VyOworY2xh
c3MgSURCU3RvcmFnZVJlZ2lzdHJ5OwogY2xhc3MgTG9jYWxTdG9yYWdlTWFuYWdlcjsKIGNsYXNz
IFNlc3Npb25TdG9yYWdlTWFuYWdlcjsKIGNsYXNzIFN0b3JhZ2VBcmVhUmVnaXN0cnk7CkBAIC00
NCwzNSArNDMsMzggQEAgZW51bSBjbGFzcyBXZWJzaXRlRGF0YVR5cGUgOiB1aW50MzJfdDsKIGNs
YXNzIE9yaWdpblN0b3JhZ2VNYW5hZ2VyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKLSAgICBPcmlnaW5TdG9yYWdlTWFuYWdlcihTdHJpbmcmJiBwYXRoLCBTdHJpbmcm
JiBsb2NhbFN0b3JhZ2VQYXRoKTsKKyAgICBPcmlnaW5TdG9yYWdlTWFuYWdlcih1aW50NjRfdCBx
dW90YSwgUXVvdGFNYW5hZ2VyOjpJbmNyZWFzZVF1b3RhRnVuY3Rpb24mJiwgU3RyaW5nJiYgcGF0
aCwgU3RyaW5nJiYgbG9jYWxTdG9yYWdlUGF0aCwgU3RyaW5nJiYgaWRiU3RvcmFnZVBhdGgsIFN0
cmluZyYmIGNhY2hlU3RvcmFnZVBhdGgpOwogICAgIH5PcmlnaW5TdG9yYWdlTWFuYWdlcigpOwog
CiAgICAgdm9pZCBjb25uZWN0aW9uQ2xvc2VkKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQpOwog
ICAgIGJvb2wgcGVyc2lzdGVkKCkgY29uc3QgeyByZXR1cm4gbV9wZXJzaXN0ZWQ7IH0KICAgICB2
b2lkIHNldFBlcnNpc3RlZChib29sIHZhbHVlKTsKKyAgICBRdW90YU1hbmFnZXImIHF1b3RhTWFu
YWdlcigpOwogICAgIEZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlciYgZmlsZVN5c3RlbVN0b3JhZ2VN
YW5hZ2VyKEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnkmKTsKICAgICBMb2NhbFN0b3Jh
Z2VNYW5hZ2VyJiBsb2NhbFN0b3JhZ2VNYW5hZ2VyKFN0b3JhZ2VBcmVhUmVnaXN0cnkmKTsKICAg
ICBMb2NhbFN0b3JhZ2VNYW5hZ2VyKiBleGlzdGluZ0xvY2FsU3RvcmFnZU1hbmFnZXIoKTsKICAg
ICBTZXNzaW9uU3RvcmFnZU1hbmFnZXImIHNlc3Npb25TdG9yYWdlTWFuYWdlcihTdG9yYWdlQXJl
YVJlZ2lzdHJ5Jik7CiAgICAgU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyKiBleGlzdGluZ1Nlc3Npb25T
dG9yYWdlTWFuYWdlcigpOworICAgIElEQlN0b3JhZ2VNYW5hZ2VyJiBpZGJTdG9yYWdlTWFuYWdl
cihJREJTdG9yYWdlUmVnaXN0cnkmKTsKKyAgICBJREJTdG9yYWdlTWFuYWdlciogZXhpc3RpbmdJ
REJTdG9yYWdlTWFuYWdlcigpOwogICAgIGJvb2wgaXNBY3RpdmUoKTsKICAgICBib29sIGlzRW1w
dHkoKTsKICAgICBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBmZXRjaERhdGFUeXBlc0luTGlz
dChPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPik7CiAgICAgdm9pZCBkZWxldGVEYXRhKE9wdGlv
blNldDxXZWJzaXRlRGF0YVR5cGU+LCBXYWxsVGltZSk7Ci0gICAgdm9pZCBtb3ZlRGF0YShjb25z
dCBTdHJpbmcmIG5ld1BhdGgsIGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlUGF0aCk7CisgICAg
dm9pZCBtb3ZlRGF0YShjb25zdCBTdHJpbmcmIG5ld1BhdGgsIGNvbnN0IFN0cmluZyYgbG9jYWxT
dG9yYWdlUGF0aCwgY29uc3QgU3RyaW5nJiBpZGJTdG9yYWdlUGF0aCk7CiAKIHByaXZhdGU6CiAg
ICAgZW51bSBjbGFzcyBTdG9yYWdlQnVja2V0TW9kZSA6IGJvb2w7CiAgICAgY2xhc3MgU3RvcmFn
ZUJ1Y2tldDsKICAgICBTdG9yYWdlQnVja2V0JiBkZWZhdWx0QnVja2V0KCk7CiAKLSAgICB2b2lk
IGNyZWF0ZU9yaWdpbkZpbGVJZk5lY2Vzc2FyeShjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4m
KTsKLSAgICB2b2lkIGRlbGV0ZU9yaWdpbkZpbGVJZk5lY2Vzc2FyeSgpOwotCiAgICAgc3RkOjp1
bmlxdWVfcHRyPFN0b3JhZ2VCdWNrZXQ+IG1fZGVmYXVsdEJ1Y2tldDsKICAgICBTdHJpbmcgbV9w
YXRoOwogICAgIGJvb2wgbV9wZXJzaXN0ZWQgeyBmYWxzZSB9OwogICAgIFN0cmluZyBtX2xvY2Fs
U3RvcmFnZVBhdGg7CisgICAgU3RyaW5nIG1faWRiU3RvcmFnZVBhdGg7CisgICAgU3RyaW5nIG1f
Y2FjaGVTdG9yYWdlUGF0aDsKKyAgICBSZWY8UXVvdGFNYW5hZ2VyPiBtX3F1b3RhTWFuYWdlcjsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1F1b3RhTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3N0b3JhZ2UvUXVvdGFNYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNzFmMTc1
ODk4NTdhOTlkMzc0ZWNhZDhkMmVlN2E0MjFhN2ZmMDY4Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1F1b3RhTWFuYWdlci5jcHAKQEAgLTAs
MCArMSwxMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
UXVvdGFNYW5hZ2VyLmgiCisKKyNpbmNsdWRlIDx3dGYvU2V0Rm9yU2NvcGUuaD4KKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK1JlZjxRdW90YU1hbmFnZXI+IFF1b3RhTWFuYWdlcjo6Y3JlYXRlKHVp
bnQ2NF90IHF1b3RhLCBHZXRVc2FnZUZ1bmN0aW9uJiYgZ2V0VXNhZ2VGdW5jdGlvbiwgSW5jcmVh
c2VRdW90YUZ1bmN0aW9uJiYgaW5jcmVhc2VRdW90YUZ1bmN0aW9uKQoreworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFF1b3RhTWFuYWdlcihxdW90YSwgV1RGTW92ZShnZXRVc2FnZUZ1bmN0aW9u
KSwgV1RGTW92ZShpbmNyZWFzZVF1b3RhRnVuY3Rpb24pKSk7Cit9CisKK1F1b3RhTWFuYWdlcjo6
UXVvdGFNYW5hZ2VyKHVpbnQ2NF90IHF1b3RhLCBHZXRVc2FnZUZ1bmN0aW9uJiYgZ2V0VXNhZ2VG
dW5jdGlvbiwgSW5jcmVhc2VRdW90YUZ1bmN0aW9uJiYgaW5jcmVhc2VRdW90YUZ1bmN0aW9uKQor
ICAgIDogbV9xdW90YShxdW90YSkKKyAgICAsIG1faW5pdGlhbFF1b3RhKHF1b3RhKQorICAgICwg
bV9nZXRVc2FnZUZ1bmN0aW9uKFdURk1vdmUoZ2V0VXNhZ2VGdW5jdGlvbikpCisgICAgLCBtX2lu
Y3JlYXNlUXVvdGFGdW5jdGlvbihXVEZNb3ZlKGluY3JlYXNlUXVvdGFGdW5jdGlvbikpCit7Cisg
ICAgQVNTRVJUKG1fcXVvdGEpOworfQorCit2b2lkIFF1b3RhTWFuYWdlcjo6cmVxdWVzdFNwYWNl
KHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkLCBSZXF1ZXN0Q2FsbGJhY2smJiBjYWxsYmFjaykKK3sK
KyAgICBtX3JlcXVlc3RzLmFwcGVuZChRdW90YU1hbmFnZXI6OlJlcXVlc3QgeyBzcGFjZVJlcXVl
c3RlZCwgV1RGTW92ZShjYWxsYmFjayksIFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllciB7
IH0gfSk7CisgICAgaGFuZGxlUmVxdWVzdHMoKTsKK30KKwordm9pZCBRdW90YU1hbmFnZXI6Omhh
bmRsZVJlcXVlc3RzKCkKK3sKKyAgICBpZiAobV9jdXJyZW50UmVxdWVzdCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgU2V0Rm9yU2NvcGU8Ym9vbD4gaXNIYW5kbGluZ1JlcXVlc3RzKG1faXNIYW5k
bGluZ1JlcXVlc3RzLCB0cnVlKTsKKworICAgIHdoaWxlICghbV9jdXJyZW50UmVxdWVzdCAmJiAh
bV9yZXF1ZXN0cy5pc0VtcHR5KCkpIHsKKyAgICAgICAgbV9jdXJyZW50UmVxdWVzdCA9IG1fcmVx
dWVzdHMudGFrZUZpcnN0KCk7CisgICAgICAgIGlmIChncmFudFdpdGhDdXJyZW50UXVvdGEobV9j
dXJyZW50UmVxdWVzdC0+c3BhY2VSZXF1ZXN0ZWQpKSB7CisgICAgICAgICAgICBtX2N1cnJlbnRS
ZXF1ZXN0LT5jYWxsYmFjayhEZWNpc2lvbjo6R3JhbnQpOworICAgICAgICAgICAgbV9jdXJyZW50
UmVxdWVzdCA9IHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9
CisKKyAgICAgICAgbV9jdXJyZW50UmVxdWVzdC0+aWRlbnRpZmllciA9IFF1b3RhSW5jcmVhc2VS
ZXF1ZXN0SWRlbnRpZmllcjo6Z2VuZXJhdGVUaHJlYWRTYWZlKCk7CisgICAgICAgIG1faW5jcmVh
c2VRdW90YUZ1bmN0aW9uKG1fY3VycmVudFJlcXVlc3QtPmlkZW50aWZpZXIsIG1fcXVvdGEsICpt
X3VzYWdlLCBtX2N1cnJlbnRSZXF1ZXN0LT5zcGFjZVJlcXVlc3RlZCk7CisgICAgfQorfQorCiti
b29sIFF1b3RhTWFuYWdlcjo6Z3JhbnRXaXRoQ3VycmVudFF1b3RhKHVpbnQ2NF90IHNwYWNlUmVx
dWVzdGVkKQoreworICAgIGlmIChncmFudEZhc3RQYXRoKHNwYWNlUmVxdWVzdGVkKSkKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBXaGVuIFF1b3RhTWFuYWdlciBpcyB1c2VkIGZvciB0
aGUgZmlyc3QgdGltZSwgd2Ugd2FudCB0byBtYWtlIHN1cmUgaXRzIGluaXRpYWwgcXVvdGEgaXMg
YmlnZ2VyIHRoYW4gZXhpc3RpbmcgZGlzayB1c2FnZSwKKyAgICAvLyBiYXNlZCBvbiB0aGUgYXNz
dW1wdGlvbiB0aGF0IHRoZSBxdW90YSB3YXMgaW5jcmVhc2VkIHRvIGF0IGxlYXN0IHRoZSBkaXNr
IHVzYWdlIHVuZGVyIHVzZXIncyBwZXJtaXNzaW9uIGJlZm9yZS4KKyAgICBib29sIHNob3VsZFVw
ZGF0ZVF1b3RhQmFzZWRPblVzYWdlID0gIW1fdXNhZ2U7CisgICAgbV91c2FnZSA9IG1fZ2V0VXNh
Z2VGdW5jdGlvbigpOworICAgIGlmIChzaG91bGRVcGRhdGVRdW90YUJhc2VkT25Vc2FnZSkgewor
ICAgICAgICBhdXRvIGRlZmF1bHRRdW90YVN0ZXAgPSBtX3F1b3RhIC8gMTA7CisgICAgICAgIG1f
cXVvdGEgPSBzdGQ6Om1heChtX3F1b3RhLCBkZWZhdWx0UXVvdGFTdGVwICogKCgqbV91c2FnZSAv
IGRlZmF1bHRRdW90YVN0ZXApICsgMSkpOworICAgIH0KKyAgICBtX3F1b3RhQ291bnRkb3duID0g
Km1fdXNhZ2UgPCBtX3F1b3RhID8gbV9xdW90YSAtICptX3VzYWdlIDogMDsKKworICAgIHJldHVy
biBncmFudEZhc3RQYXRoKHNwYWNlUmVxdWVzdGVkKTsKK30KKworYm9vbCBRdW90YU1hbmFnZXI6
OmdyYW50RmFzdFBhdGgodWludDY0X3Qgc3BhY2VSZXF1ZXN0ZWQpCit7CisgICAgaWYgKHNwYWNl
UmVxdWVzdGVkIDw9IG1fcXVvdGFDb3VudGRvd24pIHsKKyAgICAgICAgbV9xdW90YUNvdW50ZG93
biAtPSBzcGFjZVJlcXVlc3RlZDsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAg
cmV0dXJuIGZhbHNlOworfQorCit2b2lkIFF1b3RhTWFuYWdlcjo6ZGlkSW5jcmVhc2VRdW90YShR
dW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1
aW50NjRfdD4gbmV3UXVvdGEpCit7CisgICAgaWYgKCFtX2N1cnJlbnRSZXF1ZXN0IHx8IG1fY3Vy
cmVudFJlcXVlc3QtPmlkZW50aWZpZXIgIT0gaWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKG5ld1F1b3RhKSB7CisgICAgICAgIG1fcXVvdGEgPSAqbmV3UXVvdGE7CisgICAg
ICAgIC8vIFJlY2FsY3VsYXRlIG1fcXVvdGFDb3VudGRvd24gYmFzZWQgb24gdXNhZ2UuCisgICAg
ICAgIG1fcXVvdGFDb3VudGRvd24gPSAwOworICAgIH0KKworICAgIGF1dG8gZGVjaXNpb24gPSBn
cmFudFdpdGhDdXJyZW50UXVvdGEobV9jdXJyZW50UmVxdWVzdC0+c3BhY2VSZXF1ZXN0ZWQpID8g
RGVjaXNpb246OkdyYW50IDogRGVjaXNpb246OkRlbnk7CisgICAgbV9jdXJyZW50UmVxdWVzdC0+
Y2FsbGJhY2soZGVjaXNpb24pOworICAgIG1fY3VycmVudFJlcXVlc3QgPSBzdGQ6Om51bGxvcHQ7
CisKKyAgICBpZiAoIW1faXNIYW5kbGluZ1JlcXVlc3RzKQorICAgICAgICBoYW5kbGVSZXF1ZXN0
cygpOworfQorCit2b2lkIFF1b3RhTWFuYWdlcjo6cmVzZXRRdW90YVVwZGF0ZWRCYXNlZE9uVXNh
Z2VGb3JUZXN0aW5nKCkKK3sKKyAgICByZXNldFF1b3RhRm9yVGVzdGluZygpOworICAgIG1fdXNh
Z2UgPSBzdGQ6Om51bGxvcHQ7Cit9CisKK3ZvaWQgUXVvdGFNYW5hZ2VyOjpyZXNldFF1b3RhRm9y
VGVzdGluZygpCit7CisgICAgbV9xdW90YSA9IG1faW5pdGlhbFF1b3RhOworICAgIG1fcXVvdGFD
b3VudGRvd24gPSAwOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9RdW90YU1hbmFnZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9RdW90YU1hbmFnZXIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yYWI0OGM4OGFjODdhNjA2MmY4Y2M3YmMyNzhlZDY5M2EwNjY3NjU0Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1F1b3RhTWFuYWdlci5o
CkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
IlF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllci5oIgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0
aW9uSGFuZGxlci5oPgorI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworY2xhc3MgUXVvdGFNYW5hZ2VyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFF1
b3RhTWFuYWdlcj4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxRdW90YU1hbmFnZXI+IHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICB1c2luZyBHZXRVc2FnZUZ1bmN0
aW9uID0gRnVuY3Rpb248dWludDY0X3QoKT47CisgICAgdXNpbmcgSW5jcmVhc2VRdW90YUZ1bmN0
aW9uID0gRnVuY3Rpb248dm9pZChRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2
NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgY3VycmVudFVzYWdlLCB1aW50NjRfdCByZXF1ZXN0
ZWRJbmNyZWFzZSk+OworICAgIHN0YXRpYyBSZWY8UXVvdGFNYW5hZ2VyPiBjcmVhdGUodWludDY0
X3QgcXVvdGEsIEdldFVzYWdlRnVuY3Rpb24mJiwgSW5jcmVhc2VRdW90YUZ1bmN0aW9uJiYpOwor
CisgICAgZW51bSBjbGFzcyBEZWNpc2lvbiA6IGJvb2wgeyBEZW55LCBHcmFudCB9OworICAgIHVz
aW5nIFJlcXVlc3RDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRGVjaXNpb24pPjsK
KyAgICB2b2lkIHJlcXVlc3RTcGFjZSh1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCwgUmVxdWVzdENh
bGxiYWNrJiYpOworICAgIHZvaWQgZGlkSW5jcmVhc2VRdW90YShRdW90YUluY3JlYXNlUmVxdWVz
dElkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IG5ld1F1b3RhKTsKKworICAgIHZv
aWQgcmVzZXRRdW90YVVwZGF0ZWRCYXNlZE9uVXNhZ2VGb3JUZXN0aW5nKCk7CisgICAgdm9pZCBy
ZXNldFF1b3RhRm9yVGVzdGluZygpOworCitwcml2YXRlOgorICAgIFF1b3RhTWFuYWdlcih1aW50
NjRfdCBxdW90YSwgR2V0VXNhZ2VGdW5jdGlvbiYmLCBJbmNyZWFzZVF1b3RhRnVuY3Rpb24mJik7
CisgICAgdm9pZCBoYW5kbGVSZXF1ZXN0cygpOworICAgIGJvb2wgZ3JhbnRXaXRoQ3VycmVudFF1
b3RhKHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkKTsKKyAgICBib29sIGdyYW50RmFzdFBhdGgodWlu
dDY0X3Qgc3BhY2VSZXF1ZXN0ZWQpOworCisgICAgc3RydWN0IFJlcXVlc3QgeworICAgICAgICB1
aW50NjRfdCBzcGFjZVJlcXVlc3RlZDsKKyAgICAgICAgUmVxdWVzdENhbGxiYWNrIGNhbGxiYWNr
OworICAgICAgICBRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIgaWRlbnRpZmllcjsKKyAg
ICB9OworICAgIERlcXVlPFJlcXVlc3Q+IG1fcmVxdWVzdHM7CisgICAgc3RkOjpvcHRpb25hbDxS
ZXF1ZXN0PiBtX2N1cnJlbnRSZXF1ZXN0OworICAgIGJvb2wgbV9pc0hhbmRsaW5nUmVxdWVzdHMg
eyBmYWxzZSB9OworICAgIHVpbnQ2NF90IG1fcXVvdGFDb3VudGRvd24geyAwIH07CisgICAgdWlu
dDY0X3QgbV9xdW90YTsKKyAgICB1aW50NjRfdCBtX2luaXRpYWxRdW90YTsgLy8gVGVzdCBvbmx5
LgorICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IG1fdXNhZ2U7CisgICAgR2V0VXNhZ2VGdW5j
dGlvbiBtX2dldFVzYWdlRnVuY3Rpb247CisgICAgSW5jcmVhc2VRdW90YUZ1bmN0aW9uIG1faW5j
cmVhc2VRdW90YUZ1bmN0aW9uOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCBjNTNlZjk5NDNmNWZmMzdlZmQ2
ODM5ZTI1ZmNkZWRlM2YzNmI1NTFlLi43NThkNTA1NTZmZjJmNmU0NzM3N2QxNGU4MjY2YmM1ZTNl
YWM0MWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2Vz
LnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTI4
OCw2ICsyODgsNyBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgp
OgogICAgICAgICAnV2ViQ29yZTo6TmF0aXZlSW1hZ2VSZWZlcmVuY2UnLAogICAgICAgICAnV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6UGxheWJhY2tUYXJnZXRD
bGllbnRDb250ZXh0SWRlbnRpZmllcicsCisgICAgICAgICdXZWJLaXQ6OlF1b3RhSW5jcmVhc2VS
ZXF1ZXN0SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpQbHVnaW5Mb2FkQ2xpZW50UG9s
aWN5JywKICAgICAgICAgJ1dlYkNvcmU6OlBvaW50ZXJJRCcsCiAgICAgICAgICdXZWJDb3JlOjpQ
dXNoU3Vic2NyaXB0aW9uSWRlbnRpZmllcicsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJzaXRlRGF0YS9RdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhL1F1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmll
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmJlNDU0YjZhMDhiNjhhMjBjNjUwZGM4OTc2MzI4NTU4YTM3MjAxZjUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9RdW90
YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIuaApAQCAtMCwwICsxLDM1IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXJU
eXBlIHsgfTsKK3VzaW5nIFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllciA9IE9iamVjdElk
ZW50aWZpZXI8UXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyVHlwZT47CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURh
dGFTdG9yZVBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhU3Rv
cmVQYXJhbWV0ZXJzLmgKaW5kZXggMTUzYmY5M2JkZjZmZjExYjQ2MGY2NDgyNWI0NTAzMDhiODQ1
ZDM4ZC4uMjA5ODQ2ODE2Mjk5MDQ3MzM4ODRjZmNiMTI3YWE1NzIxZDJjZWU4OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oCkBAIC03
MSw4ICs3MSw4IEBAIHN0cnVjdCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyB7CiAgICAgU3Ry
aW5nIGdlbmVyYWxTdG9yYWdlRGlyZWN0b3J5OwogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZSBnZW5lcmFsU3RvcmFnZURpcmVjdG9yeUhhbmRsZTsKIAotICAgIHVpbnQ2NF90IHBlck9yaWdp
blN0b3JhZ2VRdW90YSB7IFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6OmRlZmF1bHRRdW90
YSgpIH07Ci0gICAgdWludDY0X3QgcGVyVGhpcmRQYXJ0eU9yaWdpblN0b3JhZ2VRdW90YSB7IFdl
YkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6OmRlZmF1bHRUaGlyZFBhcnR5UXVvdGEoKSB9Owor
ICAgIHVpbnQ2NF90IHBlck9yaWdpblN0b3JhZ2VRdW90YTsKKyAgICB1aW50NjRfdCBwZXJUaGly
ZFBhcnR5T3JpZ2luU3RvcmFnZVF1b3RhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzLnR4dAppbmRleCBlMzEzOTEwNTljYjNjYjIwMGE0ODM3MTk5YTQ5ZDMyMTljODQ0NzNkLi5l
MmY0YmQ0YTRhZGM0MWNjMzI5MTZiZjVjNjNmYjQ2ODQ0MTA4MDcyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAg
LTE0OSwxMCArMTQ5LDE0IEBAIE5ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAogTmV0d29ya1Byb2Nlc3Mvc3RvcmFn
ZS9GaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIuY3BwCiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0Zp
bGVTeXN0ZW1TdG9yYWdlSGFuZGxlLmNwcAogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lz
dGVtU3RvcmFnZUhhbmRsZVJlZ2lzdHJ5LmNwcAorTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJT
dG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50LmNwcAorTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJT
dG9yYWdlTWFuYWdlci5jcHAKK05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZVJlZ2lz
dHJ5LmNwcAogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9Mb2NhbFN0b3JhZ2VNYW5hZ2VyLmNwcAog
TmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9NZW1vcnlTdG9yYWdlQXJlYS5jcHAKIE5ldHdvcmtQcm9j
ZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmNwcAogTmV0d29ya1Byb2Nlc3Mvc3Rv
cmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5jcHAKK05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvUXVv
dGFNYW5hZ2VyLmNwcAogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TUUxpdGVTdG9yYWdlQXJlYS5j
cHAKIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyLmNwcAogTmV0
d29ya1Byb2Nlc3Mvc3RvcmFnZS9TdG9yYWdlQXJlYUJhc2UuY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRl
eCAzMzAyMGJkNWMzY2Q5NDE3NzU2MTU3OWFjMjBmYzM4ZjljNjkyNzhlLi5hZTc3ODE4ZGYyZTEz
YWE4OGUzZDhmOGMxMjk4NDEyZGNmN2MzMTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTE1MDYsNiAr
MTUwNiwxNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlcXVlc3RTdG9yYWdlU3BhY2Uo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBXZQogICAgIH0pOwogfQogCit2b2lkIE5l
dHdvcmtQcm9jZXNzUHJveHk6OmluY3JlYXNlUXVvdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgUXVvdGFJbmNyZWFzZVJlcXVl
c3RJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3Qg
Y3VycmVudFVzYWdlLCB1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCkKK3sKKyAgICByZXF1ZXN0U3Rv
cmFnZVNwYWNlKHNlc3Npb25JRCwgb3JpZ2luLCBjdXJyZW50UXVvdGEsIGN1cnJlbnRVc2FnZSwg
c3BhY2VSZXF1ZXN0ZWQsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBzZXNz
aW9uSUQsIG9yaWdpbiwgaWRlbnRpZmllcl0oYXV0byByZXN1bHQpIG11dGFibGUgeworICAgICAg
ICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpEaWRJbmNyZWFzZVF1b3RhKHNlc3Npb25JRCwgb3JpZ2lu
LCBpZGVudGlmaWVyLCByZXN1bHQpLCAwKTsKKyAgICB9KTsKK30KKwogdm9pZCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpyZWdpc3RlclNjaGVtZUZvckxlZ2FjeUN1c3RvbVByb3RvY29sKGNvbnN0IFN0
cmluZyYgc2NoZW1lKQogewogI2lmIEVOQUJMRShMRUdBQ1lfQ1VTVE9NX1BST1RPQ09MX01BTkFH
RVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5oCmluZGV4IDY4NDFhMzRmZTA5ZDEyYmE5M2Q0ZWY4YzgwZTQ1MzNhNTVmZDY1
YzQuLmM0MzE5ODQ5Mzg5ZDEyMjkxNWUwNzdmODMwZDM1YzkwNmVmNGRiNDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5o
CkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiUHJvY2Vzc0xhdW5jaGVyLmgiCiAjaW5jbHVk
ZSAiUHJvY2Vzc1Rocm90dGxlci5oIgogI2luY2x1ZGUgIlByb2Nlc3NUaHJvdHRsZXJDbGllbnQu
aCIKKyNpbmNsdWRlICJRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIuaCIKICNpbmNsdWRl
ICJVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vz
c1Byb3h5TWVzc2FnZXNSZXBsaWVzLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgpA
QCAtMzQyLDYgKzM0Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB0cmlnZ2VyQnJvd3NpbmdDb250
ZXh0R3JvdXBTd2l0Y2hGb3JOYXZpZ2F0aW9uKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6QnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNp
c2lvbiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlc3BvbnNlRG9tYWluLCBO
ZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllciBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJ
ZGVudGlmaWVyVG9SZXN1bWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBzdWNjZXNzKT4m
Jik7CiAKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlU3BhY2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIHVpbnQ2NF90IHF1b3RhLCB1aW50NjRfdCBjdXJyZW50
U2l6ZSwgdWludDY0X3Qgc3BhY2VSZXF1aXJlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6
Om9wdGlvbmFsPHVpbnQ2NF90PiBxdW90YSk+JiYpOworICAgIHZvaWQgaW5jcmVhc2VRdW90YShQ
QUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgUXVvdGFJbmNyZWFz
ZVJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IGN1cnJl
bnRVc2FnZSwgdWludDY0X3Qgc3BhY2VSZXF1ZXN0ZWQpOwogCiAgICAgV2Vic2l0ZURhdGFTdG9y
ZSogd2Vic2l0ZURhdGFTdG9yZUZyb21TZXNzaW9uSUQoUEFMOjpTZXNzaW9uSUQpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggMTU3NTdlZDlhMjUyYjA5ZGNkMTFiYjVlNmI5
YzhhMTBkMDUzNGM5YS4uOGZhMGEyMTQ3OGY3MjgwYzBiODNiMDM4MmQ0YWRiNWQ4MjJhOGZkNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtNzAsNiArNzAsNyBAQCBtZXNzYWdl
cyAtPiBOZXR3b3JrUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIHsKICNlbmRpZgogCiAgICAg
UmVxdWVzdFN0b3JhZ2VTcGFjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0cnVjdCBXZWJD
b3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luLCB1aW50NjRfdCBxdW90YSwgdWludDY0X3QgY3VycmVu
dFNpemUsIHVpbnQ2NF90IHNwYWNlUmVxdWlyZWQpIC0+IChzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90
PiBuZXdRdW90YSkgQXN5bmMKKyAgICBJbmNyZWFzZVF1b3RhKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgc3RydWN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiBvcmlnaW4sIFdlYktpdDo6UXVvdGFJ
bmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVpbnQ2NF90IHF1b3RhLCB1aW50
NjRfdCBjdXJyZW50U2l6ZSwgdWludDY0X3Qgc3BhY2VSZXF1ZXN0ZWQpCiAgICAgCiAgICAgUmVz
b3VyY2VMb2FkRGlkU2VuZFJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBh
Z2VJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViS2l0OjpSZXNvdXJjZUxvYWRJbmZvIHJlc291cmNlTG9h
ZEluZm8sIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBzdGQ6Om9wdGlvbmFsPElQ
Qzo6Rm9ybURhdGFSZWZlcmVuY2U+IGh0dHBCb2R5KQogICAgIFJlc291cmNlTG9hZERpZFBlcmZv
cm1IVFRQUmVkaXJlY3Rpb24oV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJZGVu
dGlmaWVyLCBzdHJ1Y3QgV2ViS2l0OjpSZXNvdXJjZUxvYWRJbmZvIHJlc291cmNlTG9hZEluZm8s
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzb3VyY2VSZXNwb25zZSwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0IHJlcXVlc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IDA4Y2VjZmViZmUwZGU0
NGIxZjVhNGI1MDExNDA1ZTFmZDgxNTA5ZmUuLjEzMjkwNTU3MmY0YjhjM2QwNzk1ODM0MzE0OGMy
ZmI1NjgzZmVmYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC0xNzE2LDcgKzE3MTYsNyBAQCB2b2lk
IFdlYnNpdGVEYXRhU3RvcmU6OmRpc3BhdGNoT25RdWV1ZShGdW5jdGlvbjx2b2lkKCk+JiYgZnVu
Y3Rpb24pCiB1aW50NjRfdCBXZWJzaXRlRGF0YVN0b3JlOjpwZXJUaGlyZFBhcnR5T3JpZ2luU3Rv
cmFnZVF1b3RhKCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogQ29uc2lkZXIgd2hldGhlciBhbGxv
d2luZyB0byBzZXQgYSBwZXJUaGlyZFBhcnR5T3JpZ2luU3RvcmFnZVF1b3RhIGZyb20gYSBXZWJz
aXRlRGF0YVN0b3JlLgotICAgIHJldHVybiBXZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2VyOjpk
ZWZhdWx0VGhpcmRQYXJ0eVF1b3RhRnJvbVBlck9yaWdpblF1b3RhKHBlck9yaWdpblN0b3JhZ2VR
dW90YSgpKTsKKyAgICByZXR1cm4gcGVyT3JpZ2luU3RvcmFnZVF1b3RhKCkgLyAxMDsKIH0KIAog
dm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRDYWNoZU1vZGVsU3luY2hyb25vdXNseUZvclRlc3Rp
bmcoQ2FjaGVNb2RlbCBjYWNoZU1vZGVsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCmluZGV4IDZiYzY5MzY5YzMzODMy
ODY5ZGVhMWY1ZGFhNTBlNzlmYWE2ZTdiZjkuLjg1ZWUzMWUxMzgzZDk3ZDY0NmM2OThjMmRlZjdk
OWMzMzRhYjc1YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKQEAgLTM1MCw2ICszNTAsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJl
Y3RvcnkoKTsKICAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdEphdmFTY3JpcHRDb25maWd1
cmF0aW9uRGlyZWN0b3J5KCk7CiAgICAgc3RhdGljIGJvb2wgaHR0cDNFbmFibGVkKCk7CisgICAg
c3RhdGljIGNvbnN0ZXhwciB1aW50NjRfdCBkZWZhdWx0UGVyT3JpZ2luUXVvdGEoKSB7IHJldHVy
biAxMDAwICogTUI7IH0KIAogICAgIHZvaWQgcmVzZXRRdW90YShDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwogICAgIHZvaWQgY2xlYXJTdG9yYWdlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKaW5kZXggMzMw
YjhiMTA1YTc5ZGE2NWRjMjA3YTdlZmUzYmMzNzYwMDBlMmYxYS4uMWFlNmQwYjExYWQzODRmNjQx
NmZmZDNiZjU0ODM3MjVhNGZmM2IzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uLmNwcApAQCAtMzMsNiArMzMsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogV2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKElz
UGVyc2lzdGVudCBpc1BlcnNpc3RlbnQsIFdpbGxDb3B5UGF0aHNGcm9tRXhpc3RpbmdDb25maWd1
cmF0aW9uIHdpbGxDb3B5UGF0aHMpCiAgICAgOiBtX2lzUGVyc2lzdGVudChpc1BlcnNpc3RlbnQp
CisgICAgLCBtX3Blck9yaWdpblN0b3JhZ2VRdW90YShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
UGVyT3JpZ2luUXVvdGEoKSkKIHsKICAgICBpZiAoaXNQZXJzaXN0ZW50ID09IElzUGVyc2lzdGVu
dDo6WWVzICYmIHdpbGxDb3B5UGF0aHMgPT0gV2lsbENvcHlQYXRoc0Zyb21FeGlzdGluZ0NvbmZp
Z3VyYXRpb246Ok5vKSB7CiAgICAgICAgIHNldEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoV2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaAppbmRleCBmMTcxYWQ0Y2U1ZTFiNWNlMTM5
NGVjNzgwOTUyNDEwN2Y4MmMxNzRhLi4zMGEyOTkzMTAyMjdkMmY3MjRmNDI1NzZiNjYxMjU0N2I5
NjFjZjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgKQEAgLTI2LDcg
KzI2LDYgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCi0jaW5jbHVk
ZSA8V2ViQ29yZS9TdG9yYWdlUXVvdGFNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC0yMDcsNyArMjA2LDcgQEAgcHJp
dmF0ZToKIAogICAgIFN0cmluZyBtX2NhY2hlU3RvcmFnZURpcmVjdG9yeTsKICAgICBTdHJpbmcg
bV9nZW5lcmFsU3RvcmFnZURpcmVjdG9yeTsKLSAgICB1aW50NjRfdCBtX3Blck9yaWdpblN0b3Jh
Z2VRdW90YSB7IFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6OmRlZmF1bHRRdW90YSgpIH07
CisgICAgdWludDY0X3QgbV9wZXJPcmlnaW5TdG9yYWdlUXVvdGE7CiAgICAgU3RyaW5nIG1fbmV0
d29ya0NhY2hlRGlyZWN0b3J5OwogICAgIFN0cmluZyBtX2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rv
cnk7CiAgICAgU3RyaW5nIG1fYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFt
ZSB7ICJGaWxlcyJfcyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggZWE2NTg3YzU3NzYyMmUyYWQ1MWYzYzUxMzNlYWU5ZmY2NjNhNTQ3
NC4uYzBiNzYzNzE0MzI0NGZkM2E5NmQ3YmNkMjUxYTAzNTllYTA3Y2JjZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNDcyLDYgKzE0
NzIsMTEgQEAKIAkJOTNCMjYxNEQyMjdEMTQ5RTAwQjk3QTc2IC8qIFN0b3JhZ2VNYW5hZ2VyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0IyNjE0OTIy
N0QxNDcyMDBCOTdBNzYgLyogU3RvcmFnZU1hbmFnZXIuaCAqLzsgfTsKIAkJOTNCMjYxNEUyMjdE
MTRCMTAwQjk3QTc2IC8qIExvY2FsU3RvcmFnZURhdGFiYXNlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0IyNjE0NTIyN0QxNDcwMDBCOTdBNzYgLyog
TG9jYWxTdG9yYWdlRGF0YWJhc2UuaCAqLzsgfTsKIAkJOTNCMjYxNEYyMjdEMTRCMTAwQjk3QTc2
IC8qIExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCMjYxNDYyMjdEMTQ3MTAwQjk3QTc2IC8qIExvY2Fs
U3RvcmFnZURhdGFiYXNlVHJhY2tlci5oICovOyB9OworCQk5M0I2MzFFNTI3QUJBNjI4MDA0NDNB
NDQgLyogSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCNjMxRTQyN0FCQTYyNzAwNDQzQTQ0IC8qIElE
QlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQuaCAqLzsgfTsKKwkJOTNCNjMxRTgyN0FCQTY1RDAw
NDQzQTQ0IC8qIElEQlN0b3JhZ2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5M0I2MzFFNjI3QUJBNjVDMDA0NDNBNDQgLyogSURCU3RvcmFn
ZU1hbmFnZXIuaCAqLzsgfTsKKwkJOTNCNjMxRUQyN0FCQTZCNDAwNDQzQTQ0IC8qIElEQlN0b3Jh
Z2VSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTNCNjMxRUIyN0FCQTZCMzAwNDQzQTQ0IC8qIElEQlN0b3JhZ2VSZWdpc3RyeS5oICovOyB9
OworCQk5M0I2MzFGMTI3QUJBQ0E5MDA0NDNBNDQgLyogUXVvdGFNYW5hZ2VyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0I2MzFFRjI3QUJBQ0E5MDA0
NDNBNDQgLyogUXVvdGFNYW5hZ2VyLmggKi87IH07CisJCTkzQjYzMUYzMjdBQkFEODAwMDQ0M0E0
NCAvKiBRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjYzMUYyMjdBQkFEN0YwMDQ0M0E0NCAvKiBR
dW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIuaCAqLzsgfTsKIAkJOTNCREVCMDExNzFERDdB
RjAwQkZFRTFCIC8qIFdLUGFnZUxvYWRUeXBlc1ByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQkRFQjAwMTcxREQ3QUYwMEJGRUUxQiAvKiBX
S1BhZ2VMb2FkVHlwZXNQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJOTNENkI3NzIyNTRCQjUxOTAwNThERDNBIC8qIFNwZWVjaFJlY29n
bml0aW9uU2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5M0Q2Qjc2QzI1NEI4OTU4MDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIu
aCAqLzsgfTsKIAkJOTNENkI3NzMyNTRCQjhDNzAwNThERDNBIC8qIFdlYlNwZWVjaFJlY29nbml0
aW9uQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTNENkI3NjgyNTRCN0JDNjAwNThERDNBIC8qIFdlYlNwZWVjaFJlY29nbml0aW9uQ29u
bmVjdGlvbi5oICovOyB9OwpAQCAtNTM3Nyw2ICs1MzgyLDE1IEBACiAJCTkzQjI2MTQ5MjI3RDE0
NzIwMEI5N0E3NiAvKiBTdG9yYWdlTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTdG9yYWdlTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
M0IyNjE0QTIyN0QxNDcyMDBCOTdBNzYgLyogU3RvcmFnZU1hbmFnZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RvcmFnZU1hbmFnZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5M0IyNjE0QzIyN0QxNDcyMDBCOTdBNzYgLyogTG9jYWxTdG9y
YWdlRGF0YWJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTG9j
YWxTdG9yYWdlRGF0YWJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0I2
MzFFMzI3QUJBNUY3MDA0NDNBNDQgLyogSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNCNjMxRTQyN0FCQTYyNzAwNDQzQTQ0IC8qIElE
QlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk5M0I2MzFFNjI3QUJBNjVDMDA0NDNBNDQgLyogSURCU3RvcmFnZU1hbmFnZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSURCU3RvcmFnZU1hbmFnZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNCNjMxRTcyN0FCQTY1QzAwNDQzQTQ0IC8q
IElEQlN0b3JhZ2VNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IElEQlN0b3JhZ2VNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
OTNCNjMxRUEyN0FCQTZCMjAwNDQzQTQ0IC8qIElEQlN0b3JhZ2VSZWdpc3RyeS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJREJTdG9yYWdlUmVnaXN0cnkuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0I2MzFFQjI3QUJBNkIzMDA0NDNBNDQgLyog
SURCU3RvcmFnZVJlZ2lzdHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElE
QlN0b3JhZ2VSZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0I2MzFF
RTI3QUJBQ0E4MDA0NDNBNDQgLyogUXVvdGFNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFF1b3RhTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTkzQjYzMUVGMjdBQkFDQTkwMDQ0M0E0NCAvKiBRdW90YU1hbmFnZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUXVvdGFNYW5hZ2VyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTkzQjYzMUYyMjdBQkFEN0YwMDQ0M0E0NCAvKiBRdW90YUluY3Jl
YXNlUmVxdWVzdElkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTkzQkEwNERBMjE1MUFERjMwMDdGNDU1RiAvKiBXZWJTV1NlcnZlckNvbm5lY3Rpb24u
bWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViU1dTZXJ2ZXJDb25uZWN0aW9u
Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0JBMDREQjIxNTFB
REYzMDA3RjQ1NUYgLyogV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0JBMDREQzIxNTFBREYzMDA3RjQ1NUYg
LyogV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbjsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc1OTIsNiArNzYwNiw3IEBACiAJCTFBQkY0
Mzc4MUEzNjgwMzUwMDNGQjBFNiAvKiBXZWJzaXRlRGF0YSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJOTNCNjMxRjIyN0FCQUQ3RjAwNDQzQTQ0IC8qIFF1
b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllci5oICovLAogCQkJCTFBNDgzMkQ0MUE5Q0RGOTYw
MDhCNERGRSAvKiBXZWJzaXRlRGF0YS5jcHAgKi8sCiAJCQkJMUE0ODMyRDUxQTlDREY5NjAwOEI0
REZFIC8qIFdlYnNpdGVEYXRhLmggKi8sCiAJCQkJMUEyOEI4Q0IxQzgwRUQ1OTAwNkZENzQzIC8q
IFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24uaCAqLywKQEAgLTEwNDY5LDYgKzEwNDg0LDEyIEBACiAJ
CQkJOTM1QjU3OTgyNkY1MTI3MDAwOEI0OEFDIC8qIEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVn
aXN0cnkuaCAqLywKIAkJCQk5MzFBMDc1MTI2RjA2MzEwMDA0NDc0Q0QgLyogRmlsZVN5c3RlbVN0
b3JhZ2VNYW5hZ2VyLmNwcCAqLywKIAkJCQk5MzFBMDc1MDI2RjA2MzEwMDA0NDc0Q0QgLyogRmls
ZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyLmggKi8sCisJCQkJOTNCNjMxRTMyN0FCQTVGNzAwNDQzQTQ0
IC8qIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQuY3BwICovLAorCQkJCTkzQjYzMUU0MjdB
QkE2MjcwMDQ0M0E0NCAvKiBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50LmggKi8sCisJCQkJ
OTNCNjMxRTcyN0FCQTY1QzAwNDQzQTQ0IC8qIElEQlN0b3JhZ2VNYW5hZ2VyLmNwcCAqLywKKwkJ
CQk5M0I2MzFFNjI3QUJBNjVDMDA0NDNBNDQgLyogSURCU3RvcmFnZU1hbmFnZXIuaCAqLywKKwkJ
CQk5M0I2MzFFQTI3QUJBNkIyMDA0NDNBNDQgLyogSURCU3RvcmFnZVJlZ2lzdHJ5LmNwcCAqLywK
KwkJCQk5M0I2MzFFQjI3QUJBNkIzMDA0NDNBNDQgLyogSURCU3RvcmFnZVJlZ2lzdHJ5LmggKi8s
CiAJCQkJOTNFNzk5QzkyNzYwNDk3QTAwNzQwMDhBIC8qIExvY2FsU3RvcmFnZU1hbmFnZXIuY3Bw
ICovLAogCQkJCTkzRTc5OUNCMjc2MDQ5N0EwMDc0MDA4QSAvKiBMb2NhbFN0b3JhZ2VNYW5hZ2Vy
LmggKi8sCiAJCQkJOTNFNzk5RDgyNzYxMjEwODAwNzQwMDhBIC8qIE1lbW9yeVN0b3JhZ2VBcmVh
LmNwcCAqLywKQEAgLTEwNDc4LDYgKzEwNDk5LDggQEAKIAkJCQk5MzA4NURDNzI2RTFDNkVFMDAw
RUM2QTcgLyogTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLm1lc3NhZ2VzLmluICovLAogCQkJCTkzMDg1
REM1MjZFMUM2Q0YwMDBFQzZBNyAvKiBPcmlnaW5TdG9yYWdlTWFuYWdlci5jcHAgKi8sCiAJCQkJ
OTMwODVEQzYyNkUxQzZDRjAwMEVDNkE3IC8qIE9yaWdpblN0b3JhZ2VNYW5hZ2VyLmggKi8sCisJ
CQkJOTNCNjMxRUUyN0FCQUNBODAwNDQzQTQ0IC8qIFF1b3RhTWFuYWdlci5jcHAgKi8sCisJCQkJ
OTNCNjMxRUYyN0FCQUNBOTAwNDQzQTQ0IC8qIFF1b3RhTWFuYWdlci5oICovLAogCQkJCTkzRTc5
OUNDMjc2MDQ5N0IwMDc0MDA4QSAvKiBTZXNzaW9uU3RvcmFnZU1hbmFnZXIuY3BwICovLAogCQkJ
CTkzRTc5OUNBMjc2MDQ5N0EwMDc0MDA4QSAvKiBTZXNzaW9uU3RvcmFnZU1hbmFnZXIuaCAqLywK
IAkJCQk5M0U3OTlEMzI3NjEyMTA3MDA3NDAwOEEgLyogU1FMaXRlU3RvcmFnZUFyZWEuY3BwICov
LApAQCAtMTMwODgsNiArMTMxMTEsOSBAQAogCQkJCTMxMkNDOUYyMjE1QjA2RjEwMERFNDBDQSAv
KiBIaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzlBMkYz
MjFFMjA2NzQ1MDAzOTA1N0UgLyogSGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTUxQzBDOTc0MURERDc2MDAwMDMyQ0FEMyAvKiBJY29uTG9h
ZGluZ0RlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQk5M0I2MzFFNTI3QUJBNjI4MDA0NDNB
NDQgLyogSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
OTNCNjMxRTgyN0FCQTY1RDAwNDQzQTQ0IC8qIElEQlN0b3JhZ2VNYW5hZ2VyLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk5M0I2MzFFRDI3QUJBNkI0MDA0NDNBNDQgLyogSURCU3RvcmFnZVJlZ2lzdHJ5
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUUzNTFDQjE4MEYyQ0NDMDBFNTNCRTkgLyogSURCVXRp
bGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0NGNkIyNTEyQzkzRTdBMDA4RjlDMzUgLyog
SW1hZ2VPcHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTFFQzY5RTE4NzIwOTIxMDBCOTUx
RjAgLyogSW1wb3J0YW5jZUFzc2VydGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMzMwMiw2ICsx
MzMyOCw4IEBACiAJCQkJQTFFNjg4NzAxRjZFMkJBQjAwNzAwNkE2IC8qIFF1YXJhbnRpbmVTUEku
aCBpbiBIZWFkZXJzICovLAogCQkJCTFBMEMyMjdFMjQ1MTEzMEEwMEVENjE0RCAvKiBRdWlja0xv
b2tUaHVtYm5haWxpbmdTb2Z0TGluay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFRTU3MjUyNDA5
RjE0MjAwMjAwNUQ2IC8qIFF1aWNrTG9va1RodW1ibmFpbExvYWRlci5oIGluIEhlYWRlcnMgKi8s
CisJCQkJOTNCNjMxRjMyN0FCQUQ4MDAwNDQzQTQ0IC8qIFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRl
bnRpZmllci5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTNCNjMxRjEyN0FCQUNBOTAwNDQzQTQ0IC8q
IFF1b3RhTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNCNkFFNDQyNjA5Nzk5QzAwQjZF
RDVBIC8qIFJlYXNvblNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdGRDMxODIyMkIzNTE1RTAw
OEQwRThCIC8qIFJlZGlyZWN0U09BdXRob3JpemF0aW9uU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOUIxMjI5RDIyM0ZGMkJDQzAwOENBNzUxIC8qIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25J
ZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJDb25u
ZWN0aW9uVG9TZXJ2ZXIuY3BwCmluZGV4IDA0YzI0MTBmMzVhZGNjMDQ2YzU0MDZhZjBjY2UyZmQw
ZTg0MWFkYjAuLmQ3OTAxNjliZTBmNThlMzAxZWRiZTQ0YzA0NGM3ODM5MWVmNDc0NTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklE
QkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0Rh
dGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcApAQCAtMjksOSAr
MjksOSBAQAogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uLmgiCisjaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VNYW5hZ2VyTWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJJREJSZXN1
bHQuaCIKLSNpbmNsdWRlICJXZWJJREJTZXJ2ZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBy
b2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvSURCQ3Vyc29ySW5mby5oPgpAQCAtODIsMTMyICs4MiwxMzIgQEAgSURC
Q2xpZW50OjpJREJDb25uZWN0aW9uVG9TZXJ2ZXImIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6
Y29yZUNvbm5lY3Rpb25Ub1NlcnYKIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRl
bGV0ZURhdGFiYXNlKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkKIHsKLSAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OkRlbGV0ZURhdGFiYXNlKHJlcXVlc3REYXRhKSk7
CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpEZWxldGVEYXRhYmFz
ZShyZXF1ZXN0RGF0YSkpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6b3Bl
bkRhdGFiYXNlKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkKIHsKLSAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6Ok9wZW5EYXRhYmFzZShyZXF1ZXN0RGF0YSkpOworICAg
IHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6T3BlbkRhdGFiYXNlKHJlcXVl
c3REYXRhKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjphYm9ydFRyYW5z
YWN0aW9uKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVy
KQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6QWJvcnRUcmFuc2FjdGlvbih0
cmFuc2FjdGlvbklkZW50aWZpZXIpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFn
ZU1hbmFnZXI6OkFib3J0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZGVudGlmaWVyKSk7CiB9CiAK
IHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpjb21taXRUcmFuc2FjdGlvbihjb25zdCBJ
REJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgcGVu
ZGluZ1JlcXVlc3RDb3VudCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OkNv
bW1pdFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgcGVuZGluZ1JlcXVlc3RDb3Vu
dCkpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Q29tbWl0VHJh
bnNhY3Rpb24odHJhbnNhY3Rpb25JZGVudGlmaWVyLCBwZW5kaW5nUmVxdWVzdENvdW50KSk7CiB9
CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpkaWRGaW5pc2hIYW5kbGluZ1ZlcnNp
b25DaGFuZ2VUcmFuc2FjdGlvbih1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVy
LCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcikKIHsK
LSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OkRpZEZpbmlzaEhhbmRsaW5nVmVyc2lv
bkNoYW5nZVRyYW5zYWN0aW9uKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHRyYW5zYWN0
aW9uSWRlbnRpZmllcikpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdl
cjo6RGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24oZGF0YWJhc2VDb25u
ZWN0aW9uSWRlbnRpZmllciwgdHJhbnNhY3Rpb25JZGVudGlmaWVyKSk7CiB9CiAKIHZvaWQgV2Vi
SURCQ29ubmVjdGlvblRvU2VydmVyOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0
RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYgaW5mbykKIHsKLSAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OkNyZWF0ZU9iamVjdFN0b3JlKHJlcXVlc3RE
YXRhLCBpbmZvKSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpD
cmVhdGVPYmplY3RTdG9yZShyZXF1ZXN0RGF0YSwgaW5mbykpOwogfQogCiB2b2lkIFdlYklEQkNv
bm5lY3Rpb25Ub1NlcnZlcjo6ZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVxdWVzdERhdGEm
IHJlcXVlc3REYXRhLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSkKIHsKLSAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OkRlbGV0ZU9iamVjdFN0b3JlKHJlcXVlc3REYXRhLCBv
YmplY3RTdG9yZU5hbWUpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFn
ZXI6OkRlbGV0ZU9iamVjdFN0b3JlKHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZU5hbWUpKTsKIH0K
IAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OnJlbmFtZU9iamVjdFN0b3JlKGNvbnN0
IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURC
U2VydmVyOjpSZW5hbWVPYmplY3RTdG9yZShyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlm
aWVyLCBuZXdOYW1lKSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2Vy
OjpSZW5hbWVPYmplY3RTdG9yZShyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBu
ZXdOYW1lKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpjbGVhck9iamVj
dFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgdWludDY0X3Qgb2JqZWN0
U3RvcmVJZGVudGlmaWVyKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6Q2xl
YXJPYmplY3RTdG9yZShyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyKSk7CisgICAg
c2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpDbGVhck9iamVjdFN0b3JlKHJl
cXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIpKTsKIH0KIAogdm9pZCBXZWJJREJDb25u
ZWN0aW9uVG9TZXJ2ZXI6OmNyZWF0ZUluZGV4KGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0
RGF0YSwgY29uc3QgSURCSW5kZXhJbmZvJiBpbmZvKQogewotICAgIHNlbmQoTWVzc2FnZXM6Oldl
YklEQlNlcnZlcjo6Q3JlYXRlSW5kZXgocmVxdWVzdERhdGEsIGluZm8pKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkNyZWF0ZUluZGV4KHJlcXVlc3REYXRhLCBp
bmZvKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpkZWxldGVJbmRleChj
b25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBpbmRleE5hbWUpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6
V2ViSURCU2VydmVyOjpEZWxldGVJbmRleChyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlm
aWVyLCBpbmRleE5hbWUpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFn
ZXI6OkRlbGV0ZUluZGV4KHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4
TmFtZSkpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6cmVuYW1lSW5kZXgo
Y29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCB1aW50NjRfdCBvYmplY3RTdG9yZUlk
ZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1l
KQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6UmVuYW1lSW5kZXgocmVxdWVz
dERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhJZGVudGlmaWVyLCBuZXdOYW1lKSk7
CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpSZW5hbWVJbmRleChy
ZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleElkZW50aWZpZXIsIG5ld05h
bWUpKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OnB1dE9yQWRkKGNvbnN0
IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5RGF0YSYga2V5RGF0YSwg
Y29uc3QgSURCVmFsdWUmIHZhbHVlLCBjb25zdCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3Zlcndy
aXRlTW9kZSBtb2RlKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6UHV0T3JB
ZGQocmVxdWVzdERhdGEsIGtleURhdGEsIHZhbHVlLCBtb2RlKSk7CisgICAgc2VuZChNZXNzYWdl
czo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpQdXRPckFkZChyZXF1ZXN0RGF0YSwga2V5RGF0YSwg
dmFsdWUsIG1vZGUpKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmdldFJl
Y29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkdldFJlY29y
ZERhdGEmIGdldFJlY29yZERhdGEpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVy
OjpHZXRSZWNvcmQocmVxdWVzdERhdGEsIGdldFJlY29yZERhdGEpKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkdldFJlY29yZChyZXF1ZXN0RGF0YSwgZ2V0UmVj
b3JkRGF0YSkpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Z2V0QWxsUmVj
b3Jkcyhjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkdldEFsbFJl
Y29yZHNEYXRhJiBnZXRBbGxSZWNvcmRzRGF0YSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJ
REJTZXJ2ZXI6OkdldEFsbFJlY29yZHMocmVxdWVzdERhdGEsIGdldEFsbFJlY29yZHNEYXRhKSk7
CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpHZXRBbGxSZWNvcmRz
KHJlcXVlc3REYXRhLCBnZXRBbGxSZWNvcmRzRGF0YSkpOwogfQogCiB2b2lkIFdlYklEQkNvbm5l
Y3Rpb25Ub1NlcnZlcjo6Z2V0Q291bnQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRh
LCBjb25zdCBJREJLZXlSYW5nZURhdGEmIHJhbmdlKQogewotICAgIHNlbmQoTWVzc2FnZXM6Oldl
YklEQlNlcnZlcjo6R2V0Q291bnQocmVxdWVzdERhdGEsIHJhbmdlKSk7CisgICAgc2VuZChNZXNz
YWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpHZXRDb3VudChyZXF1ZXN0RGF0YSwgcmFuZ2Up
KTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRlbGV0ZVJlY29yZChjb25z
dCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQktleVJhbmdlRGF0YSYgcmFu
Z2UpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyOjpEZWxldGVSZWNvcmQocmVx
dWVzdERhdGEsIHJhbmdlKSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5h
Z2VyOjpEZWxldGVSZWNvcmQocmVxdWVzdERhdGEsIHJhbmdlKSk7CiB9CiAKIHZvaWQgV2ViSURC
Q29ubmVjdGlvblRvU2VydmVyOjpvcGVuQ3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1
ZXN0RGF0YSwgY29uc3QgSURCQ3Vyc29ySW5mbyYgaW5mbykKIHsKLSAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJJREJTZXJ2ZXI6Ok9wZW5DdXJzb3IocmVxdWVzdERhdGEsIGluZm8pKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Ok9wZW5DdXJzb3IocmVxdWVzdERhdGEs
IGluZm8pKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6Oml0ZXJhdGVDdXJz
b3IoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJJdGVyYXRlQ3Vy
c29yRGF0YSYgZGF0YSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6Okl0ZXJh
dGVDdXJzb3IocmVxdWVzdERhdGEsIGRhdGEpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3Jr
U3RvcmFnZU1hbmFnZXI6Okl0ZXJhdGVDdXJzb3IocmVxdWVzdERhdGEsIGRhdGEpKTsKIH0KIAog
dm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmVzdGFibGlzaFRyYW5zYWN0aW9uKHVpbnQ2
NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQlRyYW5zYWN0aW9uSW5m
byYgaW5mbykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OkVzdGFibGlzaFRy
YW5zYWN0aW9uKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGluZm8pKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkVzdGFibGlzaFRyYW5zYWN0aW9uKGRh
dGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGluZm8pKTsKIH0KIAogdm9pZCBXZWJJREJDb25u
ZWN0aW9uVG9TZXJ2ZXI6OmRhdGFiYXNlQ29ubmVjdGlvblBlbmRpbmdDbG9zZSh1aW50NjRfdCBk
YXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklE
QlNlcnZlcjo6RGF0YWJhc2VDb25uZWN0aW9uUGVuZGluZ0Nsb3NlKGRhdGFiYXNlQ29ubmVjdGlv
bklkZW50aWZpZXIpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6
OkRhdGFiYXNlQ29ubmVjdGlvblBlbmRpbmdDbG9zZShkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlm
aWVyKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpkYXRhYmFzZUNvbm5l
Y3Rpb25DbG9zZWQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcikKIHsKLSAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OkRhdGFiYXNlQ29ubmVjdGlvbkNsb3NlZChk
YXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29y
a1N0b3JhZ2VNYW5hZ2VyOjpEYXRhYmFzZUNvbm5lY3Rpb25DbG9zZWQoZGF0YWJhc2VDb25uZWN0
aW9uSWRlbnRpZmllcikpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6YWJv
cnRPcGVuQW5kVXBncmFkZU5lZWRlZCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlm
aWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcikK
IHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OkFib3J0T3BlbkFuZFVwZ3JhZGVO
ZWVkZWQoZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgdHJhbnNhY3Rpb25JZGVudGlmaWVy
KSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpBYm9ydE9wZW5B
bmRVcGdyYWRlTmVlZGVkKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHRyYW5zYWN0aW9u
SWRlbnRpZmllcikpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGlkRmly
ZVZlcnNpb25DaGFuZ2VFdmVudCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVy
LCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBJ
bmRleGVkREI6OkNvbm5lY3Rpb25DbG9zZWRPbkJlaGFsZk9mU2VydmVyIGNvbm5lY3Rpb25DbG9z
ZWQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyOjpEaWRGaXJlVmVyc2lvbkNo
YW5nZUV2ZW50KGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHJlcXVlc3RJZGVudGlmaWVy
LCBjb25uZWN0aW9uQ2xvc2VkKSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VN
YW5hZ2VyOjpEaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KGRhdGFiYXNlQ29ubmVjdGlvbklkZW50
aWZpZXIsIHJlcXVlc3RJZGVudGlmaWVyLCBjb25uZWN0aW9uQ2xvc2VkKSk7CiB9CiAKIHZvaWQg
V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpvcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKGNvbnN0IElE
QlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJT
ZXJ2ZXI6Ok9wZW5EQlJlcXVlc3RDYW5jZWxsZWQocmVxdWVzdERhdGEpKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Ok9wZW5EQlJlcXVlc3RDYW5jZWxsZWQocmVx
dWVzdERhdGEpKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmdldEFsbERh
dGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVl
c3RJZGVudGlmaWVyLCBjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbikKIHsKLSAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OkdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhyZXF1
ZXN0SWRlbnRpZmllciwgb3JpZ2luKSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyOjpHZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMocmVxdWVzdElkZW50aWZp
ZXIsIG9yaWdpbikpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGlkRGVs
ZXRlRGF0YWJhc2UoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L1N0b3JhZ2UvSW5Qcm9jZXNzSURCU2VydmVyLmNwcAppbmRleCBlYTJlMmE3
OGY4OGZmZGQxMDFhM2ExMzdmMGQ1YTEwYTU2ZTEwZmIyLi4wY2FkYjUwNDJiYTE2MTA3N2Y5NDQ5
YTk3M2RjZjk4MzJkMzcwMmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3Jh
Z2UvSW5Qcm9jZXNzSURCU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3Jh
Z2UvSW5Qcm9jZXNzSURCU2VydmVyLmNwcApAQCAtNDIsNiArNDIsOCBAQAogCiB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIAorc3RhdGljIGNvbnN0ZXhwciB1aW50NjRfdCBkZWZhdWx0UGVyT3Jp
Z2luUXVvdGEgPSAgMTAwMCAqIE1COworCiBSZWY8SW5Qcm9jZXNzSURCU2VydmVyPiBJblByb2Nl
c3NJREJTZXJ2ZXI6OmNyZWF0ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7CiAgICAgQVNT
RVJUKHNlc3Npb25JRC5pc0VwaGVtZXJhbCgpKTsKQEAgLTczLDcgKzc1LDcgQEAgSW5Qcm9jZXNz
SURCU2VydmVyOjp+SW5Qcm9jZXNzSURCU2VydmVyKCkKIFN0b3JhZ2VRdW90YU1hbmFnZXIqIElu
UHJvY2Vzc0lEQlNlcnZlcjo6cXVvdGFNYW5hZ2VyKGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2lu
KQogewogICAgIHJldHVybiBtX3F1b3RhTWFuYWdlcnMuZW5zdXJlKG9yaWdpbiwgW10gewotICAg
ICAgICByZXR1cm4gU3RvcmFnZVF1b3RhTWFuYWdlcjo6Y3JlYXRlKFN0b3JhZ2VRdW90YU1hbmFn
ZXI6OmRlZmF1bHRRdW90YSgpLCBbXSB7CisgICAgICAgIHJldHVybiBTdG9yYWdlUXVvdGFNYW5h
Z2VyOjpjcmVhdGUoZGVmYXVsdFBlck9yaWdpblF1b3RhLCBbXSB7CiAgICAgICAgICAgICByZXR1
cm4gMDsKICAgICAgICAgfSwgW10odWludDY0X3QgcXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRTcGFj
ZSwgdWludDY0X3Qgc3BhY2VJbmNyZWFzZSwgYXV0byBjYWxsYmFjaykgewogICAgICAgICAgICAg
Y2FsbGJhY2socXVvdGEgKyBjdXJyZW50U3BhY2UgKyBzcGFjZUluY3JlYXNlKTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5ODkyZjQ3ZjQ1ZjBm
Zjc5OGM4N2VjMDM1M2U5YzNmM2UyMGYxNWVjLi42MDZlZDdjNzliYjViYzM1N2Y3ZTI0YzNiMDli
N2MzOWI4YTJmNDEyIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjItMDItMDcgIFNpaHVpIExpdSAgPHNpaHVpX2xp
dUBhcHBsZS5jb20+CisKKyAgICAgICAgTWFuYWdlIEluZGV4ZWREQiBzdG9yYWdlIGJ5IG9yaWdp
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0OTI1
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NzU1NTAxND4KKworICAgICAgICBSZXZpZXdlZCBi
eSBDaHJpcyBEdW1lei4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvSW5kZXhlZERCRmlsZU5hbWUubW06CisgICAgICAgIChydW5UZXN0KToKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlBlcnNpc3RlbmNlLm1tOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCU3VzcGVu
ZEltbWluZW50bHkubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1N0b3JlQmxvYlRoZW5EZWxldGUubW06CisgICAgICAgIChURVNU
KToKKwogMjAyMi0wMi0wNyAgQmVuIE5oYW0gIDxuaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBB
ZGQgUHVzaFNlcnZpY2UKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvSW5kZXhlZERCRmlsZU5hbWUubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0luZGV4ZWREQkZpbGVOYW1lLm1tCmluZGV4IGE2YjAxMjliYzEwNTljNGY5
YzExOGQxZmQ3ZWZkMjEyM2VhYzJjN2EuLjQxMDIyMjRlNDUyNzRkMzYzNzllNGJiMDAyYTBmZWU4
OTgzMmY1YmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvSW5kZXhlZERCRmlsZU5hbWUubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9JbmRleGVkREJGaWxlTmFtZS5tbQpAQCAtNzEsMjAgKzcxLDIzIEBAIHN0YXRp
YyB2b2lkIHJ1blRlc3QoKQogICAgIFJldGFpblB0cjxOU1N0cmluZz4gc3RyaW5nMiA9IChOU1N0
cmluZyAqKVtsYXN0U2NyaXB0TWVzc2FnZSBib2R5XTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoQCJT
dWNjZXNzIiwgc3RyaW5nMi5nZXQoKSk7CiAKLSAgICAvLyBGb3IgZGF0YWJhc2UgdGhhdCBpcyBu
b3Qgb3BlbmVkIGFmdGVyIHVwZ3JhZGUsIGl0cyBmaWxlIHNob3VsZCBiZSBpbiB2MC4KKyAgICAv
LyBBbGwgZGF0YWJhc2VzIG9mIGFuIG9yaWdpbiBhcmUgbWlncmF0ZWQgdG8gbmV3IHZlcnNpb24g
ZGlyZWN0b3J5IHdoZW4gdGhlIG9yaWdpbiBpcyBhY2Nlc3NlZC4KICAgICBhdXRvIGRlZmF1bHRG
aWxlTWFuYWdlciA9IFtOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXTsKICAgICBOU1N0cmlu
ZyAqZXhpc3RpbmdEYXRhYmFzZU5hbWUgPSBAIkluZGV4ZWREQlRlc3QiOwogICAgIE5TU3RyaW5n
ICpjcmVhdGVkRGF0YWJhc2VOYW1lID0gQCJJbmRleGVkREJPdGhlciI7CiAgICAgTlNTdHJpbmcg
KnVudXNlZERhdGFiYXNlTmFtZSA9IEAiSW5kZXhlZERCVW51c2VkIjsKICAgICBOU1N0cmluZyAq
ZXhpc3RpbmdEYXRiYXNlSGFzaCA9IFdlYkNvcmU6OlNRTGl0ZUZpbGVTeXN0ZW06OmNvbXB1dGVI
YXNoRm9yRmlsZU5hbWUoZXhpc3RpbmdEYXRhYmFzZU5hbWUpOwogICAgIE5TU3RyaW5nICpjcmVh
dGVkRGF0YWJhc2VIYXNoID0gV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0ZUhhc2hG
b3JGaWxlTmFtZShjcmVhdGVkRGF0YWJhc2VOYW1lKTsKKyAgICBOU1N0cmluZyAqdW51c2VkRGF0
YWJhc2VIYXNoID0gV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0ZUhhc2hGb3JGaWxl
TmFtZShjcmVhdGVkRGF0YWJhc2VOYW1lKTsKICAgICBOU1VSTCAqaWRiUm9vdFVSTCA9IFtbV0tX
ZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdIF9pbmRleGVkREJEYXRhYmFzZURpcmVj
dG9yeV07CiAgICAgTlNVUkwgKm9sZFZlcnNpb25EaXJlY3RvcnlVUkwgPSBbaWRiUm9vdFVSTCBV
UkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJ2MCJdOwogICAgIE5TVVJMICpuZXdWZXJzaW9u
RGlyZWN0b3J5VVJMID0gW2lkYlJvb3RVUkwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAi
djEiXTsKICAgICBOU1VSTCAqb2xkVmVyc2lvbk9yaWdpbkRpcmVjdG9yeVVSTCA9IFtvbGRWZXJz
aW9uRGlyZWN0b3J5VVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDogQCJmaWxlX18wIl07
CiAgICAgTlNVUkwgKm5ld1ZlcnNpb25PcmlnaW5EaXJlY3RvcnlVUkwgPSBbbmV3VmVyc2lvbkRp
cmVjdG9yeVVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6IEAiZmlsZV9fMCJdOwogICAg
IE5TVVJMICpvbGRWZXJzaW9uVW51c2VkRGF0YWJhc2VEaXJlY3RvcnlVUkwgPSBbb2xkVmVyc2lv
bk9yaWdpbkRpcmVjdG9yeVVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6dW51c2VkRGF0
YWJhc2VOYW1lXTsKLSAgICBFWFBFQ1RfVFJVRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFn
ZXJdIGZpbGVFeGlzdHNBdFBhdGg6b2xkVmVyc2lvblVudXNlZERhdGFiYXNlRGlyZWN0b3J5VVJM
LnBhdGhdKTsKKyAgICBOU1VSTCAqbmV3VmVyc2lvblVudXNlZERhdGFiYXNlRGlyZWN0b3J5VVJM
ID0gW25ld1ZlcnNpb25PcmlnaW5EaXJlY3RvcnlVUkwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9u
ZW50OnVudXNlZERhdGFiYXNlSGFzaF07CisgICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdl
ciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpvbGRWZXJzaW9uVW51c2VkRGF0YWJh
c2VEaXJlY3RvcnlVUkwucGF0aF0pOworICAgIEVYUEVDVF9UUlVFKFtbTlNGaWxlTWFuYWdlciBk
ZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpuZXdWZXJzaW9uVW51c2VkRGF0YWJhc2VE
aXJlY3RvcnlVUkwucGF0aF0pOwogICAgIAogICAgIC8vIEZvciBkYXRhYmFzZSB0aGF0IGlzIG9w
ZW5lZCBhZnRlciB1cGdyYWRlLCBpdHMgZmlsZSBzaG91bGQgb25seSBiZSBpbiB2MS4KICAgICBO
U1VSTCAqb2xkVmVyc2lvbkV4aXN0aW5nRGF0YWJhc2VEaXJlY3RvcnlVUkwgPSBbb2xkVmVyc2lv
bk9yaWdpbkRpcmVjdG9yeVVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6IGV4aXN0aW5n
RGF0YWJhc2VOYW1lXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvSW5kZXhlZERCUGVyc2lzdGVuY2UubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0luZGV4ZWREQlBlcnNpc3RlbmNlLm1tCmluZGV4IDI3MThjNGFiMzY5
YTgxODJkYTBlMTE4YzQ1MTY2NmFlOWQxZTJjNzQuLjRmMGE4ZWM5NDQ1NDhjYTZjNzg3MDE1YzZi
NmQ5NTA4NTg4Mzg4YjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvSW5kZXhlZERCUGVyc2lzdGVuY2UubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJQZXJzaXN0ZW5jZS5tbQpAQCAtMzA1LDEwICsz
MDUsMTQgQEAgVEVTVChJbmRleGVkREIsIEluZGV4ZWREQlRoaXJkUGFydHlEYXRhUmVtb3ZhbCkK
ICAgICBFWFBFQ1RfV0tfU1RSRVEoIEAiZGF0YWJhc2UgaXMgY3JlYXRlZCAtIHB1dCBpdGVtIHN1
Y2Nlc3MiLCAoTlNTdHJpbmcgKilbbGFzdFNjcmlwdE1lc3NhZ2UgYm9keV0pOwogCiAgICAgcmVh
ZHlUb0NvbnRpbnVlID0gZmFsc2U7Ci0gICAgW1tXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERh
dGFTdG9yZV0gZmV0Y2hEYXRhUmVjb3Jkc09mVHlwZXM6d2Vic2l0ZURhdGFUeXBlcy5nZXQoKSBj
b21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8V0tXZWJzaXRlRGF0YVJlY29yZCAqPiAqZGF0YVJl
Y29yZHMpIHsKLSAgICAgICAgRVhQRUNUX0VRKDF1LCBkYXRhUmVjb3Jkcy5jb3VudCk7Ci0gICAg
ICAgIEVYUEVDVF9XS19TVFJFUSgiaWZyYW1lIiwgW1tkYXRhUmVjb3JkcyBmaXJzdE9iamVjdF0g
ZGlzcGxheU5hbWVdKTsKLSAgICAgICAgW1tXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFT
dG9yZV0gcmVtb3ZlRGF0YU9mVHlwZXM6d2Vic2l0ZURhdGFUeXBlcy5nZXQoKSBmb3JEYXRhUmVj
b3JkczpkYXRhUmVjb3JkcyBjb21wbGV0aW9uSGFuZGxlcjpeKCkgeworICAgIFtbV0tXZWJzaXRl
RGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdIGZldGNoRGF0YVJlY29yZHNPZlR5cGVzOndlYnNp
dGVEYXRhVHlwZXMuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5PFdLV2Vic2l0ZURh
dGFSZWNvcmQgKj4gKnJlY29yZHMpIHsKKyAgICAgICAgRVhQRUNUX0VRKDJ1LCByZWNvcmRzLmNv
dW50KTsKKyAgICAgICAgTlNTb3J0RGVzY3JpcHRvciAqcmVjb3JkRGVzY3JpcHRvciA9IFtOU1Nv
cnREZXNjcmlwdG9yIHNvcnREZXNjcmlwdG9yV2l0aEtleTpAImRpc3BsYXlOYW1lIiBhc2NlbmRp
bmc6WUVTXTsKKyAgICAgICAgTlNBcnJheSAqc29ydERlc2NyaXB0b3JzID0gQFtyZWNvcmREZXNj
cmlwdG9yXTsKKyAgICAgICAgTlNBcnJheSAqc29ydGVkUmVjb3JkcyA9IFtyZWNvcmRzIHNvcnRl
ZEFycmF5VXNpbmdEZXNjcmlwdG9yczpzb3J0RGVzY3JpcHRvcnNdOworICAgICAgICBFWFBFQ1Rf
V0tfU1RSRVEoImlmcmFtZSIsIFtbc29ydGVkUmVjb3JkcyBvYmplY3RBdEluZGV4OjBdIGRpc3Bs
YXlOYW1lXSk7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUSgid2Via2l0Lm9yZyIsIFtbc29ydGVk
UmVjb3JkcyBvYmplY3RBdEluZGV4OjFdIGRpc3BsYXlOYW1lXSk7CisgICAgICAgIFtbV0tXZWJz
aXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdIHJlbW92ZURhdGFPZlR5cGVzOndlYnNpdGVE
YXRhVHlwZXMuZ2V0KCkgZm9yRGF0YVJlY29yZHM6cmVjb3JkcyBjb21wbGV0aW9uSGFuZGxlcjpe
KCkgewogICAgICAgICAgICAgcmVhZHlUb0NvbnRpbnVlID0gdHJ1ZTsKICAgICAgICAgfV07CiAg
ICAgfV07CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0luZGV4ZWREQlN1c3BlbmRJbW1pbmVudGx5Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9JbmRleGVkREJTdXNwZW5kSW1taW5lbnRseS5tbQppbmRleCBkYzYzNDNl
M2VkZGZlNDhkYmZlZWU0Zjc5OTkyZmZjYjVmNjBlMTZiLi5iZjkwZjU3Y2UwOTc1ZTk0ZTYzNzA0
N2E1ZDBlOWRmZDE4ZmJkNjI0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0luZGV4ZWREQlN1c3BlbmRJbW1pbmVudGx5Lm1tCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCU3VzcGVuZEltbWluZW50bHku
bW0KQEAgLTczLDYgKzczLDEyIEBAIHN0YXRpYyB2b2lkIGtlZXBOZXR3b3JrUHJvY2Vzc0FjdGl2
ZSgpCiAKIFRFU1QoSW5kZXhlZERCLCBJbmRleGVkREJTdXNwZW5kSW1taW5lbnRseSkKIHsKKyAg
ICByZWFkeVRvQ29udGludWUgPSBmYWxzZTsKKyAgICBbW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZh
dWx0RGF0YVN0b3JlXSByZW1vdmVEYXRhT2ZUeXBlczpbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbFdl
YnNpdGVEYXRhVHlwZXNdIG1vZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0gY29tcGxl
dGlvbkhhbmRsZXI6XigpIHsKKyAgICAgICAgcmVhZHlUb0NvbnRpbnVlID0gdHJ1ZTsKKyAgICB9
XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlYWR5VG9Db250aW51ZSk7CisKICAg
ICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtbSW5kZXhlZERCU3VzcGVuZEltbWluZW50bHlNZXNz
YWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOwogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0
TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgW1tjb25maWd1
cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6aGFu
ZGxlci5nZXQoKSBuYW1lOkAidGVzdEhhbmRsZXIiXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU3RvcmVCbG9iVGhlbkRlbGV0ZS5tbSBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU3RvcmVCbG9iVGhlbkRlbGV0ZS5tbQpp
bmRleCBhYWJmZmY4N2JjNjRiMzk1MmIyNDE0NTIxNWVlMDM4Mjg2YjdjODkxLi44ZTg1YTQwYTVl
ODNiYTAzNDMyMWU3ZTc5NjlkODM1NWUzMmMyNDY1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1N0b3JlQmxvYlRoZW5EZWxldGUubW0KKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TdG9yZUJsb2JUaGVuRGVsZXRlLm1t
CkBAIC04Nyw3ICs4Nyw3IEBAIFRFU1QoSW5kZXhlZERCLCBTdG9yZUJsb2JUaGVuUmVtb3ZlRGF0
YSkKICAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNvcHlJdGVtQXRQYXRoOmRh
dGFiYXNlRmlsZVBhdGggdG9QYXRoOmZha2VTaG1QYXRoIGVycm9yOm5pbF07CiAgICAgW1tOU0Zp
bGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjb3B5SXRlbUF0UGF0aDpkYXRhYmFzZUZpbGVQYXRo
IHRvUGF0aDpmYWtlV2FsUGF0aCBlcnJvcjpuaWxdOwogCi0gICAgLy8gTWFrZSBzb21lIG90aGVy
IC5ibG9iIGZpbGVzIGluIHRoZSBkYXRhYmFzZSBkaXJlY3RvcnkgdG8gbGF0ZXIgdmFsaWRhdGUg
dGhhdCBvbmx5IGFwcHJvcHJpYXRlIGZpbGVzIGFyZSBkZWxldGVkLgorICAgIC8vIE1ha2Ugc29t
ZSBvdGhlciAuYmxvYiBmaWxlcyBpbiB0aGUgZGF0YWJhc2UgZGlyZWN0b3J5IHRvIGxhdGVyIHZh
bGlkYXRlIGFsbCBibG9iIGZpbGVzIGluIHRoZSBkaXJlY3RvcnkgYXJlIGRlbGV0ZWQuCiAgICAg
TlNTdHJpbmcgKm90aGVyQmxvYjEgPSBbZGF0YWJhc2VEaXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRp
bmdQYXRoQ29tcG9uZW50OkAiNzE4Mi5ibG9iIl07CiAgICAgTlNTdHJpbmcgKm90aGVyQmxvYjIg
PSBbZGF0YWJhc2VEaXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiMWEu
YmxvYiJdOwogICAgIE5TU3RyaW5nICpvdGhlckJsb2IzID0gW2RhdGFiYXNlRGlyZWN0b3J5IHN0
cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAImExLmJsb2IiXTsKQEAgLTEwMiwxMyArMTAy
LDEyIEBAIFRFU1QoSW5kZXhlZERCLCBTdG9yZUJsb2JUaGVuUmVtb3ZlRGF0YSkKICAgICAgICAg
RVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0
UGF0aDpibG9iRmlsZVBhdGhdKTsKICAgICAgICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdl
ciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpkYXRhYmFzZUZpbGVQYXRoXSk7CiAK
LSAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBmYWtlIGJsb2IgZmlsZSB3aXRoIGEgdmFsaWQgYmxv
YiBmaWxlIG5hbWUgaXMgZ29uZS4KKyAgICAgICAgLy8gTWFrZSBzdXJlIGFsbCBmYWtlIGJsb2Ig
ZmlsZSBhcmUgZ29uZS4KICAgICAgICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZh
dWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpvdGhlckJsb2IxXSk7CiAKLSAgICAgICAgLy8g
TWFrZSBzdXJlIHRoZSBmYWtlIGJsb2IgZmlsZXMgd2l0aCBpbnZhbGlkIGJsb2IgZmlsZSBuYW1l
cyBhcmUgc3RpbGwgdGhlcmUuCi0gICAgICAgIEVYUEVDVF9UUlVFKFtbTlNGaWxlTWFuYWdlciBk
ZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpvdGhlckJsb2IyXSk7Ci0gICAgICAgIEVY
UEVDVF9UUlVFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0
aDpvdGhlckJsb2IzXSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKFtbTlNGaWxlTWFuYWdlciBkZWZh
dWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpvdGhlckJsb2I0XSk7CisgICAgICAgIEVYUEVD
VF9GQUxTRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6
b3RoZXJCbG9iMl0pOworICAgICAgICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1
bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOm90aGVyQmxvYjNdKTsKKyAgICAgICAgRVhQRUNU
X0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpv
dGhlckJsb2I0XSk7CiAKICAgICAgICAgLy8gTWFrZSBzdXJlIGV2ZXJ5dGhpbmcgcmVsYXRlZCB0
byB0aGUgZmFrZSBkYXRhYmFzZSBpcyBnb25lLgogICAgICAgICBFWFBFQ1RfRkFMU0UoW1tOU0Zp
bGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmZha2VTaG1QYXRoXSk7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451257</attachid>
            <date>2022-02-08 09:04:54 -0800</date>
            <delta_ts>2022-02-08 11:02:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234925-20220208090450.patch</filename>
            <type>text/plain</type>
            <size>284870</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5MzU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmM1MTI4YjI1MzMwYzVk
YzdhYTA3NDE5YmU4MWYwMTA5MzQ4ZjYxZi4uNjBhY2ZmMWRlZDRjNDYxOWFlNDUxNDlhYWUxOTQz
ODVlZmZlMjI1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk1IEBACisyMDIyLTAyLTA3ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIE1hbmFnZSBJbmRleGVkREIg
c3RvcmFnZSBieSBvcmlnaW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzNDkyNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODc1NTUwMTQ+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAgQm90aCBXZWJLaXQgYW5k
IFdlYktpdExlZ2FjeSB1c2VkIElEQlNlcnZlciB0byBtYW5hZ2UgVW5pcXVlSURCRGF0YWJhc2Vz
LCBhbmQgVW5pcXVlSURCRGF0YWJhc2UgcG9pbnRlZCB0byAKKyAgICAgICAgSURCU2VydmVyLiBO
b3cgdGhhdCBXZWJLaXQgdXNlcyBXZWJLaXQ6OklEQlN0b3JhZ2VNYW5hZ2VyIHRvIG1hbmFnZSBV
bmlxdWVJREJEYXRhYmFzZXMuIFdlIHVudGllIHRoZSAKKyAgICAgICAga25vdCBiZXR3ZWVuIElE
QlNlcnZlciBhbmQgVW5pcXVlSURCRGF0YWJhc2UgYnkgYWRkaW5nIGEgbmV3IGFic3RyYWN0IGNs
YXNzIFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlciBhbmQgbWFrZQorICAgICAgICBVbmlxdWVJREJE
YXRhYmFzZSBwb2ludCB0byBVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuCisKKyAgICAgICAgQWxz
bywgYXMgcXVvdGEgY2hlY2sgaXMgbm8gbG9uZ2VyIGFzeW5jIGFjY29yZGluZyB0byBjaGFuZ2Vz
IGluIFdlYktpdCwgd2UgbmVlZCB0byB1cGRhdGUgb3BlcmF0aW9ucyBpbgorICAgICAgICBVbmlx
dWVJREJEYXRhYmFzZSB0byBhZG9wdCB0aGUgY2hhbmdlLgorCisgICAgICAgIENvdmVyZWQgYnkg
ZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnQuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6SURCU2VydmVyOjpyZWdpc3RlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OnVucmVnaXN0ZXJDb25uZWN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpjcmVhdGVCYWNraW5nU3RvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OnVwZ3JhZGVkRGF0YWJhc2VE
aXJlY3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OnJlZ2lz
dGVyRGF0YWJhc2VDb25uZWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklEQlNl
cnZlcjo6SURCU2VydmVyOjp1bnJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0aW9uKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpjbG9zZUFuZFRha2VVbmlx
dWVJREJEYXRhYmFzZSk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL0lEQlNlcnZlci5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1v
cnlJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1v
cnlJREJCYWNraW5nU3RvcmU6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUp
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3Rv
cmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3Rv
cmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlPYmplY3RTdG9yZTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5T2JqZWN0U3RvcmU6
Ok1lbW9yeU9iamVjdFN0b3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
TWVtb3J5T2JqZWN0U3RvcmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
U1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
U1FMaXRlSURCQmFja2luZ1N0b3JlOjpTUUxpdGVJREJCYWNraW5nU3RvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmVuY29kZURhdGFiYXNl
TmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6ZGVjb2RlRGF0YWJhc2VOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FM
aXRlSURCQmFja2luZ1N0b3JlOjpnZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbyk6CisgICAgICAg
IChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlQmFja2lu
Z1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0
b3JlOjpmaWxlbmFtZUZvckRhdGFiYXNlTmFtZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZnVsbERhdGFiYXNlRGly
ZWN0b3J5V2l0aFVwZ3JhZGUpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6VW5pcXVlSURCRGF0YWJhc2UpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6bWFuYWdlcik6CisgICAgICAg
IChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtQ3VycmVudE9w
ZW5PcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRh
YmFzZTo6cGVyZm9ybUN1cnJlbnRPcGVuT3BlcmF0aW9uQWZ0ZXJTcGFjZUNoZWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZUJhY2tpbmdT
dG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpj
cmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlE
QkRhdGFiYXNlOjpkZWxldGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2
ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpyZW5hbWVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpjbGVhck9iamVjdFN0b3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZUluZGV4
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0
ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6
OnJlbmFtZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0
YWJhc2U6OnB1dE9yQWRkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURC
RGF0YWJhc2U6OnB1dE9yQWRkQWZ0ZXJTcGFjZUNoZWNrKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmdldFJlY29yZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRBbGxSZWNvcmRzKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmdldENvdW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZVJlY29yZCk6
CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuQ3Vy
c29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6Oml0
ZXJhdGVDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRh
YmFzZTo6Y29tbWl0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpV
bmlxdWVJREJEYXRhYmFzZTo6YWJvcnRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJ
REJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpoYXNEYXRhSW5NZW1vcnkgY29uc3QpOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6c2VydmVyKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJh
c2VDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURC
RGF0YWJhc2VDb25uZWN0aW9uOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb246On5Vbmlx
dWVJREJEYXRhYmFzZUNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpV
bmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb246Om1hbmFnZXIpOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uaDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uOjpzZXJ2ZXIp
OiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJE
YXRhYmFzZU1hbmFnZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVu
aXF1ZUlEQkRhdGFiYXNlTWFuYWdlcjo6flVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlcik6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZVRy
YW5zYWN0aW9uOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6flVuaXF1ZUlEQkRh
dGFiYXNlVHJhbnNhY3Rpb24pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9V
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvc2hhcmVkL0lEQkVycm9yLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJFcnJvcjo6b3BlcmF0
b3IgYm9vbCBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJl
cXVlc3REYXRhLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc291
cmNlSWRlbnRpZmllci5oOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVy
OjpvcGVyYXRvciE9IGNvbnN0KToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisKIDIwMjItMDItMDcgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjg5MjI3LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCBlNWJjZDU2YzY5YTRmZmM2NTlhNTI5ZjQ0MzAzNjJmNTI1OWE3MjFhLi5lZWJmOGVlODU4
ODc3Mzk5NDk0MDNjNzBjYjM1NDYxZmQwMGIzN2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2NSBA
QAorMjAyMi0wMi0wNyAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAg
ICBNYW5hZ2UgSW5kZXhlZERCIHN0b3JhZ2UgYnkgb3JpZ2luCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ5MjUKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzg3NTU1MDE0PgorCisgICAgICAgIFJldmlld2VkIGJ5IENocmlzIER1bWV6LgorCisgICAg
ICAgIEluIG5ldHdvcmsgcHJvY2VzcywgSW5kZXhlZERCIGRhdGEgaXMgbWFuYWdlZCBieSBXZWJL
aXQ6OldlYklEQlNlcnZlci4gRWFjaCBzZXNzaW9uIG93bnMgYSBXZWJJREJTZXJ2ZXIgCisgICAg
ICAgIChJREJTZXJ2ZXIpIGFuZCBlYWNoIElEQlNlcnZlciBvd25zIG9uZSBvciBtb3JlIFVuaXF1
ZUlEQkRhdGFiYXNlcyAocmVzcHJlbnRpbmcgb25lIGFjdHVhbCBkYXRhYmFzZSB0aGF0CisgICAg
ICAgIElEQkRhdGFiYXNlIGNvbm5lY3RzIHRvLCBjYW4gYmUgaWRlbnRpZmllZCBieSB7c2Vzc2lv
biwgb3JpZ2luLCBuYW1lfSkuIE5vdyB0aGF0IHdlIGhhdmUgTmV0d29ya1N0b3JhZ2VNYW5hZ2Vy
LCAKKyAgICAgICAgd2hpY2ggbWFuYWdlcyBzZXNzaW9uIHN0b3JhZ2UgYnkgb3JpZ2luLCB3ZSBj
YW4gbWVyZ2UgV2ViSURCU2VydmVyIHdpdGggTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLCBzaW5jZSBJ
bmRleGVkREIgCisgICAgICAgIHN0b3JhZ2UgaXMgbm90IHNoYXJlZCBhY3Jvc3Mgb3JpZ2lucy4K
KworICAgICAgICBUaGUgb2xkIHN0cnVjdHVyZSBpczoKKyAgICAgICAgTmV0d29ya1Nlc3Npb24g
LSBXZWJJREJTZXJ2ZXIgLSBJREJTZXJ2ZXIgLSBVbmlxdWVJREJEYXRhYmFzZXMKKyAgICAgICAg
VGhlIG5ldyBzdHJ1Y3R1cmUgaXM6CisgICAgICAgIE5ldHdvcmtTZXNzaW9uIC0gTmV0d29ya1N0
b3JhZ2VNYW5hZ2VyIC0gT3JpZ2luU3RvcmFnZU1hbmFnZXIgLSBJREJTdG9yYWdlTWFuYWdlciAt
IFVuaXF1ZUlEQkRhdGFiYXNlCisKKyAgICAgICAgVG8gY29tcGxldGUgdGhpcyB0cmFuc2l0aW9u
LCB3ZSBuZWVkIHRvIG1ha2UgYSBmZXcgY2hhbmdlczoKKyAgICAgICAgMS4gV2ViIHByb2Nlc3Mg
bm93IHNlbmRzIEluZGV4ZWREQiByZWxhdGVkIG1lc3NhZ2VzIHRvIE5ldHdvcmtTdG9yYWdlTWFu
YWdlciBpbnN0ZWFkIG9mIFdlYklEQlNlcnZlci4gCisgICAgICAgIDIuIFNvbWUgbWVzc2FnZXMg
YXJlIHNlbnQgdG8gb3BlcmF0ZSBvbiBVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24gb3IgVW5p
cXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiwgYW5kIHRoZXkgCisgICAgICAgIHVzZSBpZGVudGlm
aWVycyB0byBzcGVjaWZ5IHRoZSB0YXJnZXQuIFRoZXJlZm9yZSwgTmV0d29ya1N0b3JhZ2VNYW5h
Z2VycyBuZWVkcyB0byBrbm93IHRoZSBtYXBwaW5nIGJldHdlZW4gCisgICAgICAgIGlkZW50aWZp
ZXJzIGFuZCB0YXJnZXQgb2JqZWN0cy4gQSBuZXcgY2xhcyBJREJTdG9yYWdlUmVnaXN0cnkgaXMg
YWRkZWQgcmVjb3JkIHRoaXMgbWFwcGluZy4gRWFjaCAKKyAgICAgICAgTmV0d29ya1N0b3JhZ2VN
YW5hZ2VyIG93bnMgYSBJREJTdG9yYWdlUmVnaXN0cnkgYW5kIGl0IHBhc3NlcyBJREJTdG9yYWdl
UmVnaXN0cnkgdG8gSURCU3RvcmFnZU1hbmFnZXIsCisgICAgICAgIElEQlN0b3JhZ2VNYW5hZ2Vy
IHdpbGwgcmVnaXN0ZXIgb2JqZWN0cyB0byBJREJTdG9yYWdlUmVnaXN0cnkgYW5kIE5ldHdvcmtT
dG9yYWdlTWFuYWdlciBjYW4gZG8gc2VhcmNoIHZpYSAKKyAgICAgICAgSURCU3RvcmFnZVJlZ2lz
dHJ5LgorICAgICAgICAzLiBRdW90YSBjaGVjayBmb3IgSW5kZXhlZERCIG9wZXJhdGlvbnMgYmVj
b21lcyBhc3luYyBieSBhZGRpbmcgbmV3IFF1b3RhTWFuYWdlciBjbGFzcywgd2hpY2ggaXMgc2lt
aWxhciB0byAKKyAgICAgICAgV2ViQ29yZTo6U3RvcmFnZVF1b3RhTWFuYWdlciBidXQgcHJvdmlk
ZXMgYXN5bmMgaW50ZXJmYWNlcy4gCisgICAgICAgIFdlIHVzZWQgdG8gYmxvY2sgdGhlIElEQlNl
cnZlciB0aHJlYWQgd2hlbiBpdCBpcyB3YWl0aW5nIGZvciBxdW90YSBjaGVjayByZXN1bHQgZnJv
bSBVSSBwcm9jZXNzLCB0aGlzIGlzIGZpbmUgCisgICAgICAgIGJlY2F1c2UgSURCU2VydmVyIHJ1
bnMgb24gaXRzIG93biB0aHJlYWQuIE5vdyB0aGF0IElEQlN0b3JhZ2VNYW5hZ2VyIHJ1bnMgb24g
dGhlIHNhbWUgdGhyZWFkIGFzIHRoZSBvdGhlciAKKyAgICAgICAgc3RvcmFnZSB0eXBlcywgd2Ug
Y2Fubm90IGJsb2NrIHRoZSB0aHJlYWQgb24gcXVvdGEgY2hlY2suCisgICAgICAgIDQuIFJlbmFt
ZSBXZWJJREJDb25uZWN0aW9uVG9DbGllbnQgdG8gSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVu
dCB0byByZWZsZWN0IHRoZSBjaGFuZ2Ugb24gdGhlIHN0cnVjdHVyZS4gQWxzbywKKyAgICAgICAg
SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudCBkb2VzIG5vdCBrZWVwIHJlZmVyZW5jZSB0byB0
aGUgSVBDOjpDb25uZWN0aW9uIG5vdywgaXQgb25seSByZWNvcmRzIAorICAgICAgICBJUEM6OkNv
bm5lY3Rpb246OlVuaXF1ZUlELgorICAgICAgICA1LiBJbmRleGVkREIgZGF0YSBtYXkgYmUgcHV0
IGluIGRpZmZlcmVudCB2ZXJzaW9uIGRpcmN0b3JpZXMuIFdlIHVzZWQgdG8gbWlncmF0ZSBkYXRh
YmFzZSB0byBuZXcgdmVyc2lvbiAKKyAgICAgICAgZGlyZXRvcnkgd2hlbiB0aGUgZGF0YWJhc2Ug
aXMgYWNjZXNzZWQuIEFzIElEQlN0b3JhZ2VNYW5hZ2VyIG5vdyBtYW5hZ2VzIEluZGV4ZWREQiBk
YXRhIG9mIG9uZSBvcmlnaW4sIGl0J3MgCisgICAgICAgIHNpbXBsZXIgaWYgaXQgb25seSBrZWVw
cyB0cmFjayBvZiBvbmUgZGlyZWN0b3J5LiBUaGVyZWZvcmUsIHdlIG5vdyBtaWdyYXRlIGFsbCBk
YXRhYmFzZXMgb2Ygb25lIG9yaWdpbgorICAgICAgICB3aGVuIHRoZSBvcmlnaW4gaXMgYWNjZXNz
ZWQgKHNlZSBJREJTdG9yYWdlTWFuYWdlcjo6aWRiU3RvcmFnZU9yaWdpbkRpcmVjdG9yeSkuCisK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1cGRh
dGVRdW90YUJhc2VkT25TcGFjZVVzYWdlRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlc0Zv
ckluZGV4ZWREQik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGlkQ2xvc2UpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6YWRkV2Vic2l0ZURhdGFTdG9y
ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpmZXRjaFdlYnNpdGVEYXRhKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lu
cyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVBbmRSZXN0cmljdFdl
YnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OnJlZ2lzdHJhYmxlRG9tYWluc1dpdGhXZWJzaXRlRGF0YSk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5kKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3M6OnJlc3VtZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzOjpyZXNldFF1b3RhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRpZElu
Y3JlYXNlUXVvdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVuYW1lT3Jp
Z2luSW5XZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzdG9y
YWdlUXVvdGFNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3NDbG9zZWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
czo6c3VzcGVuZElEQlNlcnZlcnMpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzaG91
bGRTdXNwZW5kSURCU2VydmVycyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Nlc3Npb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6
aW52YWxpZGF0ZUFuZENhbmNlbCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjph
ZGRTdG9yYWdlTWFuYWdlclNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lv
bjo6ZW5zdXJlV2ViSURCU2VydmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Nlc3Npb246OmNsb3NlSURCU2VydmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Nlc3Npb246OmFkZEluZGV4ZWREYXRhYmFzZVNlc3Npb24pOiBEZWxldGVkLgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmg6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtTZXNzaW9uOjp3ZWJJREJTZXJ2ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrU2Vzc2lvbjo6aGFzSURCRGF0YWJhc2VQYXRoIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6c3RvcmFnZVBhdGgpOgorICAgICAgICAo
V2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6ZGlza1VzYWdlKToKKyAgICAgICAgKFdlYktp
dDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OnJlcXVlc3RTcGFjZSk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6Q2FjaGVTdG9yYWdlOjpDYWNoZXM6OnJlcXVlc3RTcGFjZSk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNzSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6c2V0SXNIb2xkaW5nTG9ja2VkRmlsZXMpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpJREJTdG9yYWdl
Q29ubmVjdGlvblRvQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rp
b25Ub0NsaWVudDo6fklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQpOgorICAgICAgICAoV2Vi
S2l0OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50Ojpjb25uZWN0aW9uVG9DbGllbnQpOgor
ICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRHZXRSZXN1
bHQpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRE
ZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9D
bGllbnQ6OmRpZE9wZW5EYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25u
ZWN0aW9uVG9DbGllbnQ6OmRpZFN0YXJ0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpJ
REJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRBYm9ydFRyYW5zYWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkQ29tbWl0VHJhbnNh
Y3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50Ojpk
aWRDcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0
aW9uVG9DbGllbnQ6OmRpZERlbGV0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6SURC
U3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkUmVuYW1lT2JqZWN0U3RvcmUpOgorICAgICAg
ICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRDbGVhck9iamVjdFN0
b3JlKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlk
Q3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xp
ZW50OjpkaWREZWxldGVJbmRleCk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0
aW9uVG9DbGllbnQ6OmRpZFJlbmFtZUluZGV4KToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFn
ZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkUHV0T3JBZGQpOgorICAgICAgICAoV2ViS2l0OjpJREJT
dG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRHZXRSZWNvcmQpOgorICAgICAgICAoV2ViS2l0
OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRHZXRBbGxSZWNvcmRzKToKKyAgICAg
ICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkR2V0Q291bnQpOgor
ICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWREZWxldGVS
ZWNvcmQpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50Ojpk
aWRPcGVuQ3Vyc29yKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0Ns
aWVudDo6ZGlkSXRlcmF0ZUN1cnNvcik6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25u
ZWN0aW9uVG9DbGllbnQ6OmRpZEdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyk6CisgICAg
ICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmZpcmVWZXJzaW9uQ2hh
bmdlRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50
OjpkaWRDbG9zZUZyb21TZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVj
dGlvblRvQ2xpZW50Ojpub3RpZnlPcGVuREJSZXF1ZXN0QmxvY2tlZCk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50Lmg6IEFkZGVk
LgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZU1hbmFnZXIuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6bWlncmF0ZU9yaWdpbkRhdGEpOgorICAgICAgICAo
V2ViS2l0OjpJREJTdG9yYWdlTWFuYWdlcjo6aWRiU3RvcmFnZU9yaWdpbkRpcmVjdG9yeSk6Cisg
ICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VNYW5hZ2VyOjppZGJTdG9yYWdlU2l6ZSk6CisgICAg
ICAgIChXZWJLaXQ6OmdldE9yaWdpbnNGb3JWZXJzaW9uKToKKyAgICAgICAgKFdlYktpdDo6SURC
U3RvcmFnZU1hbmFnZXI6Om9yaWdpbnNPZklEQlN0b3JhZ2VEYXRhKToKKyAgICAgICAgKFdlYktp
dDo6SURCU3RvcmFnZU1hbmFnZXI6OklEQlN0b3JhZ2VNYW5hZ2VyKToKKyAgICAgICAgKFdlYktp
dDo6SURCU3RvcmFnZU1hbmFnZXI6OmlzQWN0aXZlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
SURCU3RvcmFnZU1hbmFnZXI6Omhhc0RhdGFJbk1lbW9yeSBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6OklEQlN0b3JhZ2VNYW5hZ2VyOjpjbG9zZURhdGFiYXNlc0ZvckRlbGV0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6SURCU3RvcmFnZU1hbmFnZXI6OnN0b3BEYXRhYmFzZUFjdGl2aXRpZXNGb3JT
dXNwZW5kKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZU1hbmFnZXI6OmdldE9yQ3JlYXRl
VW5pcXVlSURCRGF0YWJhc2UpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlTWFuYWdlcjo6
b3BlbkRhdGFiYXNlKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZU1hbmFnZXI6OmRlbGV0
ZURhdGFiYXNlKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZU1hbmFnZXI6OmdldEFsbERh
dGFiYXNlTmFtZXNBbmRWZXJzaW9ucyk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VNYW5h
Z2VyOjpvcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFn
ZU1hbmFnZXI6OnJlZ2lzdGVyQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3Jh
Z2VNYW5hZ2VyOjp1bnJlZ2lzdGVyQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OklEQlN0
b3JhZ2VNYW5hZ2VyOjpyZWdpc3RlclRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6SURC
U3RvcmFnZU1hbmFnZXI6OnVucmVnaXN0ZXJUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OklEQlN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViS2l0
OjpJREJTdG9yYWdlTWFuYWdlcjo6cmVxdWVzdFNwYWNlKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VNYW5hZ2VyLmg6IEFkZGVkLgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZVJlZ2lzdHJ5LmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6OklEQlN0b3JhZ2VSZWdpc3RyeTo6ZW5zdXJlQ29ubmVjdGlvblRvQ2xpZW50KToK
KyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZVJlZ2lzdHJ5OjpyZW1vdmVDb25uZWN0aW9uVG9D
bGllbnQpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlUmVnaXN0cnk6OnJlZ2lzdGVyQ29u
bmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VSZWdpc3RyeTo6dW5yZWdpc3Rl
ckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlUmVnaXN0cnk6OnJlZ2lz
dGVyVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlUmVnaXN0cnk6OnVu
cmVnaXN0ZXJUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VSZWdpc3Ry
eTo6Y29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VSZWdpc3RyeTo6dHJh
bnNhY3Rpb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZVJl
Z2lzdHJ5Lmg6IEFkZGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29y
a1N0b3JhZ2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5h
Z2VyOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Ok5l
dHdvcmtTdG9yYWdlTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFu
YWdlcjo6Y2FuSGFuZGxlVHlwZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1h
bmFnZXI6OnN0b3BSZWNlaXZpbmdNZXNzYWdlRnJvbUNvbm5lY3Rpb24pOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmRpZEluY3JlYXNlUXVvdGEp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmdldEFsbE9yaWdpbnMp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Om1vdmVEYXRhKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpzdXNwZW5kKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpyZWdpc3RlclRlbXBvcmFyeUJsb2JGaWxl
UGF0aHMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnJlcXVlc3RT
cGFjZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6cmVzZXRRdW90
YUZvclRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnJl
c2V0UXVvdGFVcGRhdGVkQmFzZWRPblVzYWdlRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6b3BlbkRhdGFiYXNlKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpvcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVEYXRhYmFzZSk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZXN0YWJsaXNoVHJhbnNhY3Rpb24pOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmRhdGFiYXNlQ29ubmVjdGlv
blBlbmRpbmdDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6
ZGF0YWJhc2VDb25uZWN0aW9uQ2xvc2VkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyOjphYm9ydE9wZW5BbmRVcGdyYWRlTmVlZGVkKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjphYm9ydFRyYW5zYWN0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjb21taXRUcmFuc2FjdGlvbik6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGlkRmluaXNoSGFuZGxp
bmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtTdG9yYWdlTWFuYWdlcjo6cmVuYW1lT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNsZWFyT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVJbmRleCk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6cmVuYW1lSW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnB1dE9yQWRkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1N0b3JhZ2VNYW5hZ2VyOjpnZXRSZWNvcmQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6OmdldEFsbFJlY29yZHMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6OmdldENvdW50KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VN
YW5hZ2VyOjpkZWxldGVSZWNvcmQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1h
bmFnZXI6Om9wZW5DdXJzb3IpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFn
ZXI6Oml0ZXJhdGVDdXJzb3IpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFn
ZXI6OmdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5tZXNzYWdlcy5pbjoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2VyLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6T3JpZ2luU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VCdWNrZXQ6OlN0b3Jh
Z2VCdWNrZXQpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFn
ZUJ1Y2tldDo6dG9XZWJzaXRlRGF0YVR5cGUpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9y
YWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldDo6dG9TdG9yYWdlSWRlbnRpZmllcik6CisgICAgICAg
IChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0OjppZGJTdG9yYWdl
TWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdl
QnVja2V0OjpleGlzdGluZ0lEQlN0b3JhZ2VNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6T3Jp
Z2luU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VCdWNrZXQ6OmlzQWN0aXZlIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6T3JpZ2luU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VCdWNrZXQ6OmlzRW1wdHkg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1
Y2tldDo6ZGVsZXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2Vy
OjpTdG9yYWdlQnVja2V0Ojptb3ZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3Jh
Z2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0OjpmZXRjaERhdGFUeXBlc0luTGlzdEZyb21NZW1vcnkp
OgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldDo6
ZmV0Y2hEYXRhVHlwZXNJbkxpc3RGcm9tRGlzayk6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0
b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0OjpkZWxldGVJREJTdG9yYWdlRGF0YSk6CisgICAg
ICAgIChXZWJLaXQ6OmNyZWF0ZVF1b3RhTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdp
blN0b3JhZ2VNYW5hZ2VyOjpPcmlnaW5TdG9yYWdlTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6
Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpkZWZhdWx0QnVja2V0KToKKyAgICAgICAgKFdlYktpdDo6
T3JpZ2luU3RvcmFnZU1hbmFnZXI6OnF1b3RhTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6Ok9y
aWdpblN0b3JhZ2VNYW5hZ2VyOjppZGJTdG9yYWdlTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6
Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpleGlzdGluZ0lEQlN0b3JhZ2VNYW5hZ2VyKToKKyAgICAg
ICAgKFdlYktpdDo6T3JpZ2luU3RvcmFnZU1hbmFnZXI6Om1vdmVEYXRhKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2VyLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9RdW90YU1hbmFnZXIuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdDo6UXVvdGFNYW5hZ2VyOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpRdW90YU1h
bmFnZXI6OlF1b3RhTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OlF1b3RhTWFuYWdlcjo6cmVx
dWVzdFNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6UXVvdGFNYW5hZ2VyOjpoYW5kbGVSZXF1ZXN0
cyk6CisgICAgICAgIChXZWJLaXQ6OlF1b3RhTWFuYWdlcjo6Z3JhbnRXaXRoQ3VycmVudFF1b3Rh
KToKKyAgICAgICAgKFdlYktpdDo6UXVvdGFNYW5hZ2VyOjpncmFudEZhc3RQYXRoKToKKyAgICAg
ICAgKFdlYktpdDo6UXVvdGFNYW5hZ2VyOjpkaWRJbmNyZWFzZVF1b3RhKToKKyAgICAgICAgKFdl
YktpdDo6UXVvdGFNYW5hZ2VyOjpyZXNldFF1b3RhVXBkYXRlZEJhc2VkT25Vc2FnZUZvclRlc3Rp
bmcpOgorICAgICAgICAoV2ViS2l0OjpRdW90YU1hbmFnZXI6OnJlc2V0UXVvdGFGb3JUZXN0aW5n
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1F1b3RhTWFuYWdlci5oOiBBZGRl
ZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKHR5cGVz
X3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQpOgorICAgICAgICAqIFNoYXJlZC9XZWJz
aXRlRGF0YS9RdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIuaDogQWRkZWQuCisgICAgICAg
ICogU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmg6CisgICAgICAgICogU291cmNl
cy50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmluY3JlYXNlUXVvdGEp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmlu
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cGVyVGhpcmRQYXJ0eU9yaWdpblN0
b3JhZ2VRdW90YSBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuaDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dFBlck9yaWdpblF1b3RhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbjo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bi5oOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9TZXJ2
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRlbGV0
ZURhdGFiYXNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpv
cGVuRGF0YWJhc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6
OmFib3J0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9T
ZXJ2ZXI6OmNvbW1pdFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVj
dGlvblRvU2VydmVyOjpkaWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Y3JlYXRlT2JqZWN0
U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRlbGV0
ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVy
OjpyZW5hbWVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25U
b1NlcnZlcjo6Y2xlYXJPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5l
Y3Rpb25Ub1NlcnZlcjo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25u
ZWN0aW9uVG9TZXJ2ZXI6OmRlbGV0ZUluZGV4KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29u
bmVjdGlvblRvU2VydmVyOjpyZW5hbWVJbmRleCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNv
bm5lY3Rpb25Ub1NlcnZlcjo6cHV0T3JBZGQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25u
ZWN0aW9uVG9TZXJ2ZXI6OmdldFJlY29yZCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5l
Y3Rpb25Ub1NlcnZlcjo6Z2V0QWxsUmVjb3Jkcyk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNv
bm5lY3Rpb25Ub1NlcnZlcjo6Z2V0Q291bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25u
ZWN0aW9uVG9TZXJ2ZXI6OmRlbGV0ZVJlY29yZCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNv
bm5lY3Rpb25Ub1NlcnZlcjo6b3BlbkN1cnNvcik6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNv
bm5lY3Rpb25Ub1NlcnZlcjo6aXRlcmF0ZUN1cnNvcik6CisgICAgICAgIChXZWJLaXQ6OldlYklE
QkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZXN0YWJsaXNoVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRhdGFiYXNlQ29ubmVjdGlvblBlbmRpbmdD
bG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGF0YWJh
c2VDb25uZWN0aW9uQ2xvc2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRv
U2VydmVyOjphYm9ydE9wZW5BbmRVcGdyYWRlTmVlZGVkKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
SURCQ29ubmVjdGlvblRvU2VydmVyOjpkaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpvcGVuREJSZXF1ZXN0Q2FuY2Vs
bGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpnZXRBbGxE
YXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMpOgorCiAyMDIyLTAyLTA3ICBCZW4gTmhhbSAgPG5oYW1A
YXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBQdXNoU2VydmljZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwpp
bmRleCBlNmJhNzMyMmMzNDhlY2RlNDc5NGUwOTQ5OTViYWI0ODk2YmY1YTQ5Li4wOTQ3ZTI3NmIx
YjZmY2JhYzc5OTc5NmVkNTNmMzg3ZTA4MmNkZWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE0IEBACisyMDIyLTAyLTA3ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29t
PgorCisgICAgICAgIE1hbmFnZSBJbmRleGVkREIgc3RvcmFnZSBieSBvcmlnaW4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDkyNQorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vODc1NTUwMTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVt
ZXouCisKKyAgICAgICAgKiBTdG9yYWdlL0luUHJvY2Vzc0lEQlNlcnZlci5jcHA6CisgICAgICAg
IChJblByb2Nlc3NJREJTZXJ2ZXI6OnF1b3RhTWFuYWdlcik6CisKIDIwMjItMDItMDIgIEVsbGlv
dHQgV2lsbGlhbXMgIDxlbXdAYXBwbGUuY29tPgogCiAgICAgICAgIFtYY29kZV0gRml4IHJlZHVu
ZGFudCBleGVjdXRpb24gb2YgIkNoZWNrIFZUYWJsZXMuLi4iIHNjcmlwdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21h
a2UKaW5kZXggMzMyYjAwMzMwMmMzZWY5NjJmYTcyZmIzZjg4NGNmNWY4MjcxZDQ5Zi4uMDhhMDFl
NTc4ZDhhMzUyN2U2ZmVlNDQyY2U5MDgxMWFmNWJhZmFjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBA
IC0yMjQsMTEgKzIyNCwxNiBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJT
CiAgICAgTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkNvbm5lY3Rpb25Ub0NsaWVudC5oCiAg
ICAgTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkNvbm5lY3Rpb25Ub0NsaWVudERlbGVnYXRl
LmgKICAgICBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmgKKyAgICBNb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvSW5kZXhWYWx1ZUVudHJ5LmgKKyAgICBNb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvSW5kZXhWYWx1ZVN0b3JlLmgKKyAgICBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uaAogICAgIE1vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuaAogICAgIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaAorICAgIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9T
UUxpdGVJREJUcmFuc2FjdGlvbi5oCiAgICAgTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NlcnZl
ck9wZW5EQlJlcXVlc3QuaAogICAgIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJE
YXRhYmFzZS5oCiAgICAgTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNl
Q29ubmVjdGlvbi5oCisgICAgTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFi
YXNlTWFuYWdlci5oCiAgICAgTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFi
YXNlVHJhbnNhY3Rpb24uaAogCiAgICAgTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luZGV4S2V5
LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFi
YXNlSWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2VJZGVudGlmaWVyLmgKaW5kZXggMTVmOGJkMjU1MTQ1N2QzMjk5MmQ2NmJhY2VhZjM2ZWI2
NGRiYTM4MS4uZWFlZjI1NDU2OTMzOTU2MTRlMWMyMTg3ZmY0Y2FiNjRhZTEzZTU3ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlm
aWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJ
ZGVudGlmaWVyLmgKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNUcmFuc2ll
bnQoKSBjb25zdCB7IHJldHVybiBtX2lzVHJhbnNpZW50OyB9CiAKICAgICBTdHJpbmcgZGF0YWJh
c2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9vdChjb25zdCBTdHJpbmcmIHJvb3REaXJlY3RvcnksIGNv
bnN0IFN0cmluZyYgdmVyc2lvblN0cmluZz0idjEiKSBjb25zdDsKLSAgICBzdGF0aWMgU3RyaW5n
IGRhdGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVUb1Jvb3QoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRh
JiB0b3BMZXZlbE9yaWdpbiwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcGVuaW5nT3JpZ2lu
LCBjb25zdCBTdHJpbmcmIHJvb3REaXJlY3RvcnksIGNvbnN0IFN0cmluZyYgdmVyc2lvblN0cmlu
Zyk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBkYXRhYmFzZURpcmVjdG9yeVJl
bGF0aXZlVG9Sb290KGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgdG9wTGV2ZWxPcmlnaW4sIGNv
bnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3BlbmluZ09yaWdpbiwgY29uc3QgU3RyaW5nJiByb290
RGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIHZlcnNpb25TdHJpbmcpOwogCiAgICAgdGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPElEQkRhdGFiYXNlSWRlbnRpZmll
cj4gZGVjb2RlKERlY29kZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnQuaAppbmRleCAy
N2Y3MjY5MTlmMTQyMWYyMWE1ZjAzZmZkZmMxNzZkNGM0YmRmM2MyLi5mMDVhYzJmOGM4MmE4MDlj
MjcxYzlkZjU5N2Y5NjQ3MzE5ZWY2NDYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQ29ubmVjdGlvblRvQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkNvbm5lY3Rpb25Ub0NsaWVudC5o
CkBAIC03NCwxMSArNzQsMTEgQEAgcHVibGljOgogCiAgICAgdm9pZCBub3RpZnlPcGVuREJSZXF1
ZXN0QmxvY2tlZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVy
LCB1aW50NjRfdCBvbGRWZXJzaW9uLCB1aW50NjRfdCBuZXdWZXJzaW9uKTsKIAotICAgIHZvaWQg
ZGlkR2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKGNvbnN0IElEQlJlc291cmNlSWRlbnRp
ZmllciYsIFZlY3RvcjxJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiYmKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGRpZEdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhjb25zdCBJREJS
ZXNvdXJjZUlkZW50aWZpZXImLCBWZWN0b3I8SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbj4mJik7
CiAKICAgICB2b2lkIHJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNl
Q29ubmVjdGlvbiYpOwogICAgIHZvaWQgdW5yZWdpc3RlckRhdGFiYXNlQ29ubmVjdGlvbihVbmlx
dWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mKTsKLSAgICB2b2lkIGNvbm5lY3Rpb25Ub0NsaWVudENs
b3NlZCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29ubmVjdGlvblRvQ2xpZW50Q2xvc2Vk
KCk7CiAgICAgYm9vbCBpc0Nsb3NlZCgpIHsgcmV0dXJuIG1faXNDbG9zZWQ7IH0KICAgICB2b2lk
IGNsZWFyRGVsZWdhdGUoKSB7IG1fZGVsZWdhdGUgPSBudWxscHRyOyB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKaW5k
ZXggZDI2NjkzMTgwODQ2YWY2NjY4OWUxN2FlYTNmZjk5NzE5NTVhZTM2ZS4uNGJhZDQ0MmIxYjNh
OWE0MTc4NTkwNDJmODE2NTc3ZTA3YjEzYmE4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKQEAgLTEwMSwxMyArMTAx
LDEzIEBAIHZvaWQgSURCU2VydmVyOjp1bnJlZ2lzdGVyVHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0
YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCiAgICAgbV90cmFuc2FjdGlvbnMucmVtb3Zl
KHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCkpOwogfQogCi12b2lkIElEQlNlcnZlcjo6
cmVnaXN0ZXJEYXRhYmFzZUNvbm5lY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiBj
b25uZWN0aW9uKQordm9pZCBJREJTZXJ2ZXI6OnJlZ2lzdGVyQ29ubmVjdGlvbihVbmlxdWVJREJE
YXRhYmFzZUNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiB7CiAgICAgQVNTRVJUKCFtX2RhdGFiYXNl
Q29ubmVjdGlvbnMuY29udGFpbnMoY29ubmVjdGlvbi5pZGVudGlmaWVyKCkpKTsKICAgICBtX2Rh
dGFiYXNlQ29ubmVjdGlvbnMuc2V0KGNvbm5lY3Rpb24uaWRlbnRpZmllcigpLCAmY29ubmVjdGlv
bik7CiB9CiAKLXZvaWQgSURCU2VydmVyOjp1bnJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0aW9uKFVu
aXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYgY29ubmVjdGlvbikKK3ZvaWQgSURCU2VydmVyOjp1
bnJlZ2lzdGVyQ29ubmVjdGlvbihVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24pCiB7CiAgICAgQVNTRVJUKG1fZGF0YWJhc2VDb25uZWN0aW9ucy5jb250YWlucyhjb25uZWN0
aW9uLmlkZW50aWZpZXIoKSkpOwogICAgIG1fZGF0YWJhc2VDb25uZWN0aW9ucy5yZW1vdmUoY29u
bmVjdGlvbi5pZGVudGlmaWVyKCkpOwpAQCAtMTI4LDEzICsxMjgsMTMgQEAgc3RkOjp1bmlxdWVf
cHRyPElEQkJhY2tpbmdTdG9yZT4gSURCU2VydmVyOjpjcmVhdGVCYWNraW5nU3RvcmUoY29uc3Qg
SURCRGF0YWJhc2UKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBpZiAobV9k
YXRhYmFzZURpcmVjdG9yeVBhdGguaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxNZW1vcnlJREJCYWNraW5nU3RvcmU+KG1fc2Vzc2lvbklELCBpZGVudGlmaWVyKTsKKyAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8TWVtb3J5SURCQmFja2luZ1N0b3JlPihpZGVudGlmaWVyKTsK
IAogICAgIEFTU0VSVCghbV9zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSk7CiAgICAgaWYgKGlkZW50
aWZpZXIuaXNUcmFuc2llbnQoKSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TWVtb3J5SURC
QmFja2luZ1N0b3JlPihtX3Nlc3Npb25JRCwgaWRlbnRpZmllcik7CisgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPE1lbW9yeUlEQkJhY2tpbmdTdG9yZT4oaWRlbnRpZmllcik7CiAKLSAgICByZXR1
cm4gbWFrZVVuaXF1ZTxTUUxpdGVJREJCYWNraW5nU3RvcmU+KG1fc2Vzc2lvbklELCBpZGVudGlm
aWVyLCBtX2RhdGFiYXNlRGlyZWN0b3J5UGF0aCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1FM
aXRlSURCQmFja2luZ1N0b3JlPihpZGVudGlmaWVyLCB1cGdyYWRlZERhdGFiYXNlRGlyZWN0b3J5
KGlkZW50aWZpZXIpKTsKIH0KIAogdm9pZCBJREJTZXJ2ZXI6Om9wZW5EYXRhYmFzZShjb25zdCBJ
REJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEpCkBAIC0xNzcsMTcgKzE3Nyw2IEBAIHZvaWQgSURC
U2VydmVyOjpkZWxldGVEYXRhYmFzZShjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEp
CiAgICAgICAgIG1fdW5pcXVlSURCRGF0YWJhc2VNYXAucmVtb3ZlKGRhdGFiYXNlLT5pZGVudGlm
aWVyKCkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8VW5pcXVlSURCRGF0YWJhc2U+IElEQlNlcnZl
cjo6Y2xvc2VBbmRUYWtlVW5pcXVlSURCRGF0YWJhc2UoVW5pcXVlSURCRGF0YWJhc2UmIGRhdGFi
YXNlKQotewotICAgIExPRyhJbmRleGVkREIsICJJREJTZXJ2ZXI6OmNsb3NlVW5pcXVlSURCRGF0
YWJhc2UiKTsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotCi0gICAgYXV0byB1bmlxdWVQ
b2ludGVyID0gbV91bmlxdWVJREJEYXRhYmFzZU1hcC50YWtlKGRhdGFiYXNlLmlkZW50aWZpZXIo
KSk7Ci0gICAgQVNTRVJUKHVuaXF1ZVBvaW50ZXIpOwotCi0gICAgcmV0dXJuIHVuaXF1ZVBvaW50
ZXI7Ci19Ci0KIHZvaWQgSURCU2VydmVyOjphYm9ydFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291
cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKQogewogICAgIExPRyhJbmRleGVk
REIsICJJREJTZXJ2ZXI6OmFib3J0VHJhbnNhY3Rpb24iKTsKQEAgLTc1MCw3ICs3MzksNyBAQCB2
b2lkIElEQlNlcnZlcjo6cmVuYW1lT3JpZ2luKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSYgb2xkT3JpZ2luLCBjb25zdAogICAgICAgICBGaWxlU3lzdGVtOjptb3ZlRmlsZShvbGRP
cmlnaW5QYXRoLCBuZXdPcmlnaW5QYXRoKTsKIH0KIAotU3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVj
aXNpb24gSURCU2VydmVyOjpyZXF1ZXN0U3BhY2UoY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4s
IHVpbnQ2NF90IHRhc2tTaXplKSBXVEZfSUdOT1JFU19USFJFQURfU0FGRVRZX0FOQUxZU0lTCit2
b2lkIElEQlNlcnZlcjo6cmVxdWVzdFNwYWNlKGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2luLCB1
aW50NjRfdCB0YXNrU2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikgV1RGX0lHTk9SRVNfVEhSRUFEX1NBRkVUWV9BTkFMWVNJUwogewogICAgIEFT
U0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVChtX2xvY2suaXNIZWxkKCkpOwpAQCAt
NzYyLDcgKzc1MSw3IEBAIFN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uIElEQlNlcnZlcjo6
cmVxdWVzdFNwYWNlKGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2luCiAgICAgcmVzdWx0ID0gbV9z
cGFjZVJlcXVlc3RlcihvcmlnaW4sIHRhc2tTaXplKTsKICAgICBtX2xvY2subG9jaygpOwogCi0g
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihyZXN1bHQgPT0gU3RvcmFn
ZVF1b3RhTWFuYWdlcjo6RGVjaXNpb246OkdyYW50KTsKIH0KIAogdWludDY0X3QgSURCU2VydmVy
OjpkaXNrVXNhZ2UoY29uc3QgU3RyaW5nJiByb290RGlyZWN0b3J5LCBjb25zdCBDbGllbnRPcmln
aW4mIG9yaWdpbikKQEAgLTc4NCw2ICs3NzMsMjMgQEAgdm9pZCBJREJTZXJ2ZXI6OnVwZ3JhZGVG
aWxlc0lmTmVjZXNzYXJ5KCkKICAgICAgICAgRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVz
KG5ld1ZlcnNpb25EaXJlY3RvcnkpOwogfQogCitTdHJpbmcgSURCU2VydmVyOjp1cGdyYWRlZERh
dGFiYXNlRGlyZWN0b3J5KGNvbnN0IFdlYkNvcmU6OklEQkRhdGFiYXNlSWRlbnRpZmllciYgaWRl
bnRpZmllcikKK3sKKyAgICBTdHJpbmcgb2xkT3JpZ2luRGlyZWN0b3J5ID0gaWRlbnRpZmllci5k
YXRhYmFzZURpcmVjdG9yeVJlbGF0aXZlVG9Sb290KG1fZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCAi
djAiKTsKKyAgICBTdHJpbmcgb2xkRGF0YWJhc2VEaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQob2xkT3JpZ2luRGlyZWN0b3J5LCBTUUxpdGVJREJCYWNraW5n
U3RvcmU6OmVuY29kZURhdGFiYXNlTmFtZShpZGVudGlmaWVyLmRhdGFiYXNlTmFtZSgpKSk7Cisg
ICAgU3RyaW5nIG5ld09yaWdpbkRpcmVjdG9yeSA9IGlkZW50aWZpZXIuZGF0YWJhc2VEaXJlY3Rv
cnlSZWxhdGl2ZVRvUm9vdChtX2RhdGFiYXNlRGlyZWN0b3J5UGF0aCwgInYxIik7CisgICAgU3Ry
aW5nIGZpbGVOYW1lSGFzaCA9IFNRTGl0ZUZpbGVTeXN0ZW06OmNvbXB1dGVIYXNoRm9yRmlsZU5h
bWUoaWRlbnRpZmllci5kYXRhYmFzZU5hbWUoKSk7CisgICAgU3RyaW5nIG5ld0RhdGFiYXNlRGly
ZWN0b3J5ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG5ld09yaWdpbkRp
cmVjdG9yeSwgZmlsZU5hbWVIYXNoKTsKKyAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3Jp
ZXMobmV3RGF0YWJhc2VEaXJlY3RvcnkpOworCisgICAgaWYgKEZpbGVTeXN0ZW06OmZpbGVFeGlz
dHMob2xkRGF0YWJhc2VEaXJlY3RvcnkpKSB7CisgICAgICAgIEZpbGVTeXN0ZW06Om1vdmVGaWxl
KG9sZERhdGFiYXNlRGlyZWN0b3J5LCBuZXdEYXRhYmFzZURpcmVjdG9yeSk7CisgICAgICAgIEZp
bGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KG9sZE9yaWdpbkRpcmVjdG9yeSk7CisgICAg
fQorCisgICAgcmV0dXJuIG5ld0RhdGFiYXNlRGlyZWN0b3J5OworfQorCiBib29sIElEQlNlcnZl
cjo6aGFzRGF0YWJhc2VBY3Rpdml0aWVzT25NYWluVGhyZWFkKCkgY29uc3QKIHsKICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL0lEQlNlcnZlci5oCmluZGV4IGQ4ODM2NDlhNWM4ZDViNTlmMDJjMmJkYWNk
ZGU2NzhhMWNhM2M0MmYuLjEzZmI3MGJlMzc5YWFhOWMxMWY1OWQyNTRiOTZjMDcyOTRkYTA2MWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJT
ZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURC
U2VydmVyLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJTdG9yYWdlUXVvdGFNYW5hZ2Vy
LmgiCiAjaW5jbHVkZSAiVW5pcXVlSURCRGF0YWJhc2UuaCIKICNpbmNsdWRlICJVbmlxdWVJREJE
YXRhYmFzZUNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIu
aCIKICNpbmNsdWRlIDxwYWwvSHlzdGVyZXNpc0FjdGl2aXR5Lmg+CiAjaW5jbHVkZSA8cGFsL1Nl
c3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZFRhc2tIYW5kbGVyLmg+CkBAIC00
OCw4ICs0OSw3IEBAIHN0cnVjdCBJREJHZXRSZWNvcmREYXRhOwogCiBuYW1lc3BhY2UgSURCU2Vy
dmVyIHsKIAotY2xhc3MgSURCU2VydmVyIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
K2NsYXNzIElEQlNlcnZlciA6IHB1YmxpYyBVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIgewogcHVi
bGljOgogICAgIHVzaW5nIFN0b3JhZ2VRdW90YU1hbmFnZXJTcGFjZVJlcXVlc3RlciA9IEZ1bmN0
aW9uPFN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uKGNvbnN0IENsaWVudE9yaWdpbiYsIHVp
bnQ2NF90IHNwYWNlUmVxdWVzdGVkKT47CiAgICAgV0VCQ09SRV9FWFBPUlQgSURCU2VydmVyKFBB
TDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwgU3RvcmFn
ZVF1b3RhTWFuYWdlclNwYWNlUmVxdWVzdGVyJiYsIExvY2smKTsKQEAgLTg4LDE1ICs4OCwxMyBA
QCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldEFsbERhdGFiYXNlTmFtZXNB
bmRWZXJzaW9ucyhJREJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVu
dGlmaWVyJiwgY29uc3QgQ2xpZW50T3JpZ2luJik7CiAKLQotICAgIHZvaWQgcmVnaXN0ZXJEYXRh
YmFzZUNvbm5lY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJik7Ci0gICAgdm9pZCB1
bnJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYp
OwotICAgIHZvaWQgcmVnaXN0ZXJUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0
aW9uJik7Ci0gICAgdm9pZCB1bnJlZ2lzdGVyVHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VU
cmFuc2FjdGlvbiYpOwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPFVuaXF1ZUlEQkRhdGFiYXNlPiBj
bG9zZUFuZFRha2VVbmlxdWVJREJEYXRhYmFzZShVbmlxdWVJREJEYXRhYmFzZSYpOwotCi0gICAg
c3RkOjp1bmlxdWVfcHRyPElEQkJhY2tpbmdTdG9yZT4gY3JlYXRlQmFja2luZ1N0b3JlKGNvbnN0
IElEQkRhdGFiYXNlSWRlbnRpZmllciYpOworICAgIC8vIFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdl
cgorICAgIHZvaWQgcmVnaXN0ZXJDb25uZWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlv
biYpIGZpbmFsOworICAgIHZvaWQgdW5yZWdpc3RlckNvbm5lY3Rpb24oVW5pcXVlSURCRGF0YWJh
c2VDb25uZWN0aW9uJikgZmluYWw7CisgICAgdm9pZCByZWdpc3RlclRyYW5zYWN0aW9uKFVuaXF1
ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mKSBmaW5hbDsKKyAgICB2b2lkIHVucmVnaXN0ZXJUcmFu
c2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJikgZmluYWw7CisgICAgc3RkOjp1
bmlxdWVfcHRyPElEQkJhY2tpbmdTdG9yZT4gY3JlYXRlQmFja2luZ1N0b3JlKGNvbnN0IElEQkRh
dGFiYXNlSWRlbnRpZmllciYpIGZpbmFsOworICAgIHZvaWQgcmVxdWVzdFNwYWNlKGNvbnN0IENs
aWVudE9yaWdpbiYsIHVpbnQ2NF90IHNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYpIGZpbmFsOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgSGFzaFNldDxTZWN1cml0eU9yaWdpbkRh
dGE+IGdldE9yaWdpbnMoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsb3NlQW5k
RGVsZXRlRGF0YWJhc2VzTW9kaWZpZWRTaW5jZShXYWxsVGltZSk7CkBAIC0xMDQsNyArMTAyLDYg
QEAgcHVibGljOgogICAgIHZvaWQgY2xvc2VEYXRhYmFzZXNGb3JPcmlnaW5zKGNvbnN0IFZlY3Rv
cjxTZWN1cml0eU9yaWdpbkRhdGE+JiwgRnVuY3Rpb248Ym9vbChjb25zdCBTZWN1cml0eU9yaWdp
bkRhdGEmLCBjb25zdCBDbGllbnRPcmlnaW4mKT4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCByZW5hbWVPcmlnaW4oY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3Qg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJik7CiAKLSAgICBTdG9yYWdlUXVvdGFNYW5hZ2Vy
OjpEZWNpc2lvbiByZXF1ZXN0U3BhY2UoY29uc3QgQ2xpZW50T3JpZ2luJiwgdWludDY0X3QgdGFz
a1NpemUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB1aW50NjRfdCBkaXNrVXNhZ2UoY29u
c3QgU3RyaW5nJiByb290RGlyZWN0b3J5LCBjb25zdCBDbGllbnRPcmlnaW4mKTsKIAogICAgIFdF
QkNPUkVfRVhQT1JUIGJvb2wgaGFzRGF0YWJhc2VBY3Rpdml0aWVzT25NYWluVGhyZWFkKCkgY29u
c3Q7CkBAIC0xMTQsNiArMTExLDcgQEAgcHJpdmF0ZToKICAgICBVbmlxdWVJREJEYXRhYmFzZSYg
Z2V0T3JDcmVhdGVVbmlxdWVJREJEYXRhYmFzZShjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXIm
KTsKIAogICAgIHZvaWQgdXBncmFkZUZpbGVzSWZOZWNlc3NhcnkoKTsKKyAgICBTdHJpbmcgdXBn
cmFkZWREYXRhYmFzZURpcmVjdG9yeShjb25zdCBXZWJDb3JlOjpJREJEYXRhYmFzZUlkZW50aWZp
ZXImKTsKICAgICB2b2lkIHJlbW92ZURhdGFiYXNlc01vZGlmaWVkU2luY2VGb3JWZXJzaW9uKFdh
bGxUaW1lLCBjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHJlbW92ZURhdGFiYXNlc1dpdGhPcmln
aW5zRm9yVmVyc2lvbihjb25zdCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiYsIGNvbnN0IFN0
cmluZyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDdlZTQxNDBh
OGFmMTgwMTFjOTZiY2E3YjYwOGQ4NjU5MThhZjg1ZWEuLmQ2MzM1MDMwOTkzMDU1YjliMTJiNzg0
NTY1NWRhODMzNzJiMWE1NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwCkBA
IC00NCw5ICs0NCw4IEBAIG5hbWVzcGFjZSBJREJTZXJ2ZXIgewogLy8gVGhlIEluZGV4ZWREQiBz
cGVjIHN0YXRlcyB0aGUgbWF4aW11bSB2YWx1ZSB5b3UgY2FuIGdldCBmcm9tIHRoZSBrZXkgZ2Vu
ZXJhdG9yIGlzIDJeNTMuCiBjb25zdGV4cHIgdWludDY0X3QgbWF4R2VuZXJhdGVkS2V5VmFsdWUg
PSAweDIwMDAwMDAwMDAwMDAwOwogCi1NZW1vcnlJREJCYWNraW5nU3RvcmU6Ok1lbW9yeUlEQkJh
Y2tpbmdTdG9yZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IElEQkRhdGFiYXNlSWRl
bnRpZmllciYgaWRlbnRpZmllcikKK01lbW9yeUlEQkJhY2tpbmdTdG9yZTo6TWVtb3J5SURCQmFj
a2luZ1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYgaWRlbnRpZmllcikKICAgICA6
IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQotICAgICwgbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQog
ewogfQogCkBAIC0xMzQsNyArMTMzLDcgQEAgSURCRXJyb3IgTWVtb3J5SURCQmFja2luZ1N0b3Jl
OjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHQKICAgICAg
ICAgcmV0dXJuIElEQkVycm9yIHsgQ29uc3RyYWludEVycm9yIH07CiAKICAgICBBU1NFUlQoIW1f
b2JqZWN0U3RvcmVzQnlJZGVudGlmaWVyLmNvbnRhaW5zKGluZm8uaWRlbnRpZmllcigpKSk7Ci0g
ICAgYXV0byBvYmplY3RTdG9yZSA9IE1lbW9yeU9iamVjdFN0b3JlOjpjcmVhdGUobV9zZXNzaW9u
SUQsIGluZm8pOworICAgIGF1dG8gb2JqZWN0U3RvcmUgPSBNZW1vcnlPYmplY3RTdG9yZTo6Y3Jl
YXRlKGluZm8pOwogCiAgICAgbV9kYXRhYmFzZUluZm8tPmFkZEV4aXN0aW5nT2JqZWN0U3RvcmUo
aW5mbyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuaAppbmRleCA5MmFhNzYwZDIwNzMz
NzE4ZmJkYjhjMDQ0Y2ZlNjdkY2FiMTY1MzM1Li4wOTMwMWU4M2ZjYTdjNzUwOWUyODU4MTEwYzEy
NzgzNTMzNThmM2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5oCkBAIC0zMCw3ICsz
MCw2IEBACiAjaW5jbHVkZSAiSURCUmVzb3VyY2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSW5k
ZXhLZXkuaCIKICNpbmNsdWRlICJNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbi5oIgotI2lu
Y2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC00MSw4ICs0MCw4IEBAIGNsYXNzIE1lbW9yeU9iamVjdFN0b3Jl
OwogY2xhc3MgTWVtb3J5SURCQmFja2luZ1N0b3JlIGZpbmFsIDogcHVibGljIElEQkJhY2tpbmdT
dG9yZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgTWVtb3J5
SURCQmFja2luZ1N0b3JlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBJREJEYXRhYmFzZUlkZW50aWZp
ZXImKTsKLSAgICB+TWVtb3J5SURCQmFja2luZ1N0b3JlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQg
ZXhwbGljaXQgTWVtb3J5SURCQmFja2luZ1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmll
ciYpOworICAgIFdFQkNPUkVfRVhQT1JUIH5NZW1vcnlJREJCYWNraW5nU3RvcmUoKTsKIAogICAg
IElEQkVycm9yIGdldE9yRXN0YWJsaXNoRGF0YWJhc2VJbmZvKElEQkRhdGFiYXNlSW5mbyYpIGZp
bmFsOwogICAgIHVpbnQ2NF90IGRhdGFiYXNlVmVyc2lvbigpIGZpbmFsOwpAQCAtOTIsNyArOTEs
NiBAQCBwcml2YXRlOgogICAgIHZvaWQgdW5yZWdpc3Rlck9iamVjdFN0b3JlKE1lbW9yeU9iamVj
dFN0b3JlJik7CiAKICAgICBJREJEYXRhYmFzZUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwotICAg
IFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJREJEYXRh
YmFzZUluZm8+IG1fZGF0YWJhc2VJbmZvOwogCiAgICAgSGFzaE1hcDxJREJSZXNvdXJjZUlkZW50
aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbj4+IG1f
dHJhbnNhY3Rpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5jcHAKaW5kZXggOWRkYzBmY2Y5OTE5
M2YzMzRiZGM1ZDQyNjFlYTM5MWRlNGJhYWI3YS4uZTAxZWUwMmI3MTUyMzk5Y2M3MjZmYjE4YmMz
NDkxNDYwNGRlNzNlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuY3BwCkBAIC0zOCwxOCArMzgs
MTcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NKU1ZhbHVlLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSlNDSlNWYWx1ZUlubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9KU0xvY2suaD4KLSNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiBuYW1lc3BhY2UgSURCU2VydmVyIHsKIAot
UmVmPE1lbW9yeU9iamVjdFN0b3JlPiBNZW1vcnlPYmplY3RTdG9yZTo6Y3JlYXRlKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiBpbmZvKQorUmVmPE1l
bW9yeU9iamVjdFN0b3JlPiBNZW1vcnlPYmplY3RTdG9yZTo6Y3JlYXRlKGNvbnN0IElEQk9iamVj
dFN0b3JlSW5mbyYgaW5mbykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZW1vcnlPYmpl
Y3RTdG9yZShzZXNzaW9uSUQsIGluZm8pKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZW1v
cnlPYmplY3RTdG9yZShpbmZvKSk7CiB9CiAKLU1lbW9yeU9iamVjdFN0b3JlOjpNZW1vcnlPYmpl
Y3RTdG9yZShQQUw6OlNlc3Npb25JRCwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiBpbmZvKQor
TWVtb3J5T2JqZWN0U3RvcmU6Ok1lbW9yeU9iamVjdFN0b3JlKGNvbnN0IElEQk9iamVjdFN0b3Jl
SW5mbyYgaW5mbykKICAgICA6IG1faW5mbyhpbmZvKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUu
aAppbmRleCA4NzFkZWI1ZTRhZTA1MTQ4MmI5MDg5Njg5NWVhMzFjMjc2ZGQzMDg2Li5mMDNhM2Ex
YjBhZDUzNGI5ZjMzOWM0ZmJkN2U3NDBhZGYyMjg0NzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUu
aApAQCAtMzQsMTAgKzM0LDYgQEAKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CiAKLW5hbWVzcGFjZSBQQUwgewotY2xhc3MgU2Vzc2lvbklEOwot
fQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIElEQkN1cnNvckluZm87CkBAIC02MSw3
ICs1Nyw3IEBAIHR5cGVkZWYgSGFzaE1hcDxJREJLZXlEYXRhLCBUaHJlYWRTYWZlRGF0YUJ1ZmZl
ciwgSURCS2V5RGF0YUhhc2gsIElEQktleURhdGFIYXNoCiAKIGNsYXNzIE1lbW9yeU9iamVjdFN0
b3JlIDogcHVibGljIFJlZkNvdW50ZWQ8TWVtb3J5T2JqZWN0U3RvcmU+IHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmPE1lbW9yeU9iamVjdFN0b3JlPiBjcmVhdGUoUEFMOjpTZXNzaW9uSUQsIGNv
bnN0IElEQk9iamVjdFN0b3JlSW5mbyYpOworICAgIHN0YXRpYyBSZWY8TWVtb3J5T2JqZWN0U3Rv
cmU+IGNyZWF0ZShjb25zdCBJREJPYmplY3RTdG9yZUluZm8mKTsKIAogICAgIH5NZW1vcnlPYmpl
Y3RTdG9yZSgpOwogCkBAIC0xMDgsNyArMTA0LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVuYW1l
SW5kZXgoTWVtb3J5SW5kZXgmLCBjb25zdCBTdHJpbmcmIG5ld05hbWUpOwogCiBwcml2YXRlOgot
ICAgIE1lbW9yeU9iamVjdFN0b3JlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBJREJPYmplY3RTdG9y
ZUluZm8mKTsKKyAgICBNZW1vcnlPYmplY3RTdG9yZShjb25zdCBJREJPYmplY3RTdG9yZUluZm8m
KTsKIAogICAgIElEQktleURhdGFTZXQ6Oml0ZXJhdG9yIGxvd2VzdEl0ZXJhdG9ySW5SYW5nZShj
b25zdCBJREJLZXlSYW5nZURhdGEmLCBib29sIHJldmVyc2UpIGNvbnN0OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2lu
Z1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxp
dGVJREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDc4NDYxZjEzNmY3N2I0OGUwNDI1NTY5OWQ4ZDlh
Yzg0OWQ5YzQ2NWQuLjkyMWFhMmIwYjg4MDliM2E0ZGNmNzMyMTg5ZGI5MDlhNDYwYWIxOGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJ
REJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCkBAIC0yMzYsMTIgKzIzNiwxMCBAQCBz
dGF0aWMgQVNDSUlMaXRlcmFsIGluZGV4SW5mb1RhYmxlU2NoZW1hVGVtcCgpCiAgICAgcmV0dXJu
IFRBQkxFX1NDSEVNQV9QUkVGSVggIl9UZW1wX0luZGV4SW5mbyIgSU5ERVhfSU5GT19UQUJMRV9T
Q0hFTUFfU1VGRklYOwogfQogCi1TUUxpdGVJREJCYWNraW5nU3RvcmU6OlNRTGl0ZUlEQkJhY2tp
bmdTdG9yZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IElEQkRhdGFiYXNlSWRlbnRp
ZmllciYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZVJvb3REaXJlY3RvcnkpCi0g
ICAgOiBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCi0gICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmll
cikKLSAgICAsIG1fZGF0YWJhc2VSb290RGlyZWN0b3J5KGRhdGFiYXNlUm9vdERpcmVjdG9yeSkK
K1NRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6U1FMaXRlSURCQmFja2luZ1N0b3JlKGNvbnN0IElEQkRh
dGFiYXNlSWRlbnRpZmllciYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZURpcmVj
dG9yeSkKKyAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQorICAgICwgbV9kYXRhYmFzZURp
cmVjdG9yeShkYXRhYmFzZURpcmVjdG9yeSkKIHsKLSAgICBtX2RhdGFiYXNlRGlyZWN0b3J5ID0g
ZnVsbERhdGFiYXNlRGlyZWN0b3J5V2l0aFVwZ3JhZGUoKTsKIH0KIAogU1FMaXRlSURCQmFja2lu
Z1N0b3JlOjp+U1FMaXRlSURCQmFja2luZ1N0b3JlKCkKQEAgLTkxMiwxOSArOTEwLDI5IEBAIHN0
ZDo6dW5pcXVlX3B0cjxJREJEYXRhYmFzZUluZm8+IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZXh0
cmFjdEV4aXN0aW5nRGF0YWJhc2VJCiAgICAgcmV0dXJuIGRhdGFiYXNlSW5mbzsKIH0KIAotU3Ry
aW5nIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZmlsZW5hbWVGb3JEYXRhYmFzZU5hbWUoKSBjb25z
dAorU3RyaW5nIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZW5jb2RlRGF0YWJhc2VOYW1lKGNvbnN0
IFN0cmluZyYgZGF0YWJhc2VOYW1lKQogewotICAgIEFTU0VSVCghbV9pZGVudGlmaWVyLmRhdGFi
YXNlTmFtZSgpLmlzTnVsbCgpKTsKLQotICAgIGlmIChtX2lkZW50aWZpZXIuZGF0YWJhc2VOYW1l
KCkuaXNFbXB0eSgpKQorICAgIEFTU0VSVCghZGF0YWJhc2VOYW1lLmlzRW1wdHkoKSk7CisgICAg
aWYgKGRhdGFiYXNlTmFtZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAiJTAwIjsKIAotICAg
IFN0cmluZyBmaWxlbmFtZSA9IEZpbGVTeXN0ZW06OmVuY29kZUZvckZpbGVOYW1lKG1faWRlbnRp
Zmllci5kYXRhYmFzZU5hbWUoKSk7Ci0gICAgZmlsZW5hbWUucmVwbGFjZSgnLicsICIlMkUiKTsK
KyAgICBTdHJpbmcgZmlsZW5hbWUgPSBGaWxlU3lzdGVtOjplbmNvZGVGb3JGaWxlTmFtZShkYXRh
YmFzZU5hbWUpOworICAgIGZpbGVuYW1lLnJlcGxhY2VXaXRoTGl0ZXJhbCgnLicsICIlMkUiKTsK
IAogICAgIHJldHVybiBmaWxlbmFtZTsKIH0KIAorU3RyaW5nIFNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6ZGVjb2RlRGF0YWJhc2VOYW1lKGNvbnN0IFN0cmluZyYgZW5jb2RlZE5hbWUpCit7CisgICAg
aWYgKGVuY29kZWROYW1lID09ICIlMDAiX3MpCisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygp
OworCisgICAgU3RyaW5nIG5hbWUgPSBlbmNvZGVkTmFtZTsKKyAgICBuYW1lLnJlcGxhY2UoIiUy
RSJfcywgIi4iX3MpOworCisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OmRlY29kZUZyb21GaWxlbmFt
ZShuYW1lKTsKK30KKwogU3RyaW5nIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZnVsbERhdGFiYXNl
UGF0aEZvckRpcmVjdG9yeShjb25zdCBTdHJpbmcmIGZ1bGxEYXRhYmFzZURpcmVjdG9yeSkKIHsK
ICAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGZ1bGxEYXRh
YmFzZURpcmVjdG9yeSwgIkluZGV4ZWREQi5zcWxpdGUzIik7CkBAIC05NjUsMjMgKzk3Myw2IEBA
IHN0ZDo6b3B0aW9uYWw8SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbj4gU1FMaXRlSURCQmFja2lu
Z1N0b3JlOjpkYXRhYmFzZU5hbWVBbmRWCiAgICAgcmV0dXJuIElEQkRhdGFiYXNlTmFtZUFuZFZl
cnNpb24geyBkYXRhYmFzZU5hbWUsICpkYXRhYmFzZVZlcnNpb24gfTsKIH0KIAotU3RyaW5nIFNR
TGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZnVsbERhdGFiYXNlRGlyZWN0b3J5V2l0aFVwZ3JhZGUoKQot
ewotICAgIFN0cmluZyBvbGRPcmlnaW5EaXJlY3RvcnkgPSBtX2lkZW50aWZpZXIuZGF0YWJhc2VE
aXJlY3RvcnlSZWxhdGl2ZVRvUm9vdChtX2RhdGFiYXNlUm9vdERpcmVjdG9yeSwgInYwIik7Ci0g
ICAgU3RyaW5nIG9sZERhdGFiYXNlRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KG9sZE9yaWdpbkRpcmVjdG9yeSwgZmlsZW5hbWVGb3JEYXRhYmFzZU5hbWUo
KSk7Ci0gICAgU3RyaW5nIG5ld09yaWdpbkRpcmVjdG9yeSA9IG1faWRlbnRpZmllci5kYXRhYmFz
ZURpcmVjdG9yeVJlbGF0aXZlVG9Sb290KG1fZGF0YWJhc2VSb290RGlyZWN0b3J5LCAidjEiKTsK
LSAgICBTdHJpbmcgZmlsZU5hbWVIYXNoID0gU1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0ZUhhc2hG
b3JGaWxlTmFtZShtX2lkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCkpOwotICAgIFN0cmluZyBuZXdE
YXRhYmFzZURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChu
ZXdPcmlnaW5EaXJlY3RvcnksIGZpbGVOYW1lSGFzaCk7Ci0gICAgRmlsZVN5c3RlbTo6bWFrZUFs
bERpcmVjdG9yaWVzKG5ld0RhdGFiYXNlRGlyZWN0b3J5KTsKLQotICAgIGlmIChGaWxlU3lzdGVt
OjpmaWxlRXhpc3RzKG9sZERhdGFiYXNlRGlyZWN0b3J5KSkgewotICAgICAgICBGaWxlU3lzdGVt
Ojptb3ZlRmlsZShvbGREYXRhYmFzZURpcmVjdG9yeSwgbmV3RGF0YWJhc2VEaXJlY3RvcnkpOwot
ICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeShvbGRPcmlnaW5EaXJlY3Rv
cnkpOwotICAgIH0KLQotICAgIHJldHVybiBuZXdEYXRhYmFzZURpcmVjdG9yeTsKLX0KLQogSURC
RXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbyhJ
REJEYXRhYmFzZUluZm8mIGluZm8pCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIlNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6Z2V0T3JFc3RhYmxpc2hEYXRhYmFzZUluZm8gLSBkYXRhYmFzZSAlcyIsIG1f
aWRlbnRpZmllci5kYXRhYmFzZU5hbWUoKS51dGY4KCkuZGF0YSgpKTsKQEAgLTk5MSwxMSArOTgy
LDExIEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0T3JFc3RhYmxpc2hEYXRh
YmFzZUluZm8oSURCRGF0YWJhc2VJbmZvJiBpbmZvCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7
IH07CiAgICAgfQogCi0gICAgU3RyaW5nIGRiRmlsZW5hbWUgPSBmdWxsRGF0YWJhc2VQYXRoKCk7
Ci0KKyAgICBTdHJpbmcgZGF0YWJhc2VQYXRoID0gZnVsbERhdGFiYXNlUGF0aCgpOworICAgIEZp
bGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhGaWxlU3lzdGVtOjpwYXJlbnRQYXRoKGRhdGFi
YXNlUGF0aCkpOwogICAgIG1fc3FsaXRlREIgPSBtYWtlVW5pcXVlPFNRTGl0ZURhdGFiYXNlPigp
OwotICAgIGlmICghbV9zcWxpdGVEQi0+b3BlbihkYkZpbGVuYW1lKSkgewotICAgICAgICBMT0df
RVJST1IoIkZhaWxlZCB0byBvcGVuIFNRTGl0ZSBkYXRhYmFzZSBhdCBwYXRoICclcyciLCBkYkZp
bGVuYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgIGlmICghbV9zcWxpdGVEQi0+b3BlbihkYXRhYmFz
ZVBhdGgpKSB7CisgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIG9wZW4gU1FMaXRlIGRhdGFi
YXNlIGF0IHBhdGggJyVzJyIsIGRhdGFiYXNlUGF0aC51dGY4KCkuZGF0YSgpKTsKICAgICAgICAg
Y2xvc2VTUUxpdGVEQigpOwogICAgIH0KIApAQCAtMTA0NCw3ICsxMDM1LDcgQEAgSURCRXJyb3Ig
U1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbyhJREJEYXRh
YmFzZUluZm8mIGluZm8KICAgICAgICAgZGF0YWJhc2VJbmZvID0gY3JlYXRlQW5kUG9wdWxhdGVJ
bml0aWFsRGF0YWJhc2VJbmZvKCk7CiAKICAgICBpZiAoIWRhdGFiYXNlSW5mbykgewotICAgICAg
ICBMT0dfRVJST1IoIlVuYWJsZSB0byBlc3RhYmxpc2ggSURCIGRhdGFiYXNlIGF0IHBhdGggJyVz
JyIsIGRiRmlsZW5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIExPR19FUlJPUigiVW5hYmxl
IHRvIGVzdGFibGlzaCBJREIgZGF0YWJhc2UgYXQgcGF0aCAnJXMnIiwgZGF0YWJhc2VQYXRoLnV0
ZjgoKS5kYXRhKCkpOwogICAgICAgICBjbG9zZVNRTGl0ZURCKCk7CiAgICAgICAgIHJldHVybiBJ
REJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBlc3RhYmxpc2ggSURCIGRhdGFiYXNl
IGZpbGUiX3MgfTsKICAgICB9CkBAIC0yNzk4LDcgKzI3ODksNiBAQCB2b2lkIFNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6ZGVsZXRlQmFja2luZ1N0b3JlKCkKIAogICAgIFNRTGl0ZUZpbGVTeXN0ZW06
OmRlbGV0ZURhdGFiYXNlRmlsZShkYXRhYmFzZVBhdGgpOwogICAgIFNRTGl0ZUZpbGVTeXN0ZW06
OmRlbGV0ZUVtcHR5RGF0YWJhc2VEaXJlY3RvcnkobV9kYXRhYmFzZURpcmVjdG9yeSk7Ci0gICAg
U1FMaXRlRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEYXRhYmFzZURpcmVjdG9yeShtX2lkZW50aWZp
ZXIuZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9vdChtX2RhdGFiYXNlUm9vdERpcmVjdG9y
eSkpOwogfQogCiB2b2lkIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5yZWdpc3RlckN1cnNvcihT
UUxpdGVJREJDdXJzb3ImIGN1cnNvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaAppbmRl
eCAyZWZlNmIyYTM0MTk5M2JiMjZmZGY5MWNmZjZlN2RlYThkYmJlZDM2Li43MzFhOWE0MTkzODY1
ZTNjNWYzYzM1ZWQ3NTcxYjEyODJmNzgwOTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9y
ZS5oCkBAIC01MSw5ICs1MSw4IEBAIGNsYXNzIFNRTGl0ZUlEQkN1cnNvcjsKIGNsYXNzIFNRTGl0
ZUlEQkJhY2tpbmdTdG9yZSBmaW5hbCA6IHB1YmxpYyBJREJCYWNraW5nU3RvcmUgewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZShQQUw6OlNlc3Npb25JRCwgY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJiwgY29uc3QgU3Ry
aW5nJiBkYXRhYmFzZVJvb3REaXJlY3RvcnkpOwotICAgIAotICAgIH5TUUxpdGVJREJCYWNraW5n
U3RvcmUoKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTUUxpdGVJREJCYWNraW5nU3RvcmUo
Y29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZURpcmVj
dG9yeSk7CisgICAgV0VCQ09SRV9FWFBPUlQgflNRTGl0ZUlEQkJhY2tpbmdTdG9yZSgpIGZpbmFs
OwogCiAgICAgSURCRXJyb3IgZ2V0T3JFc3RhYmxpc2hEYXRhYmFzZUluZm8oSURCRGF0YWJhc2VJ
bmZvJikgZmluYWw7CiAgICAgdWludDY0X3QgZGF0YWJhc2VWZXJzaW9uKCkgZmluYWw7CkBAIC05
NCwxOCArOTMsMTUgQEAgcHVibGljOgogCiAgICAgSURCRXJyb3IgZ2V0QmxvYlJlY29yZHNGb3JP
YmplY3RTdG9yZVJlY29yZChpbnQ2NF90IG9iamVjdFN0b3JlUmVjb3JkLCBWZWN0b3I8U3RyaW5n
PiYgYmxvYlVSTHMsIFZlY3RvcjxTdHJpbmc+JiBibG9iRmlsZVBhdGhzKTsKIAotICAgIHN0YXRp
YyB1aW50NjRfdCBkYXRhYmFzZXNTaXplRm9yRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgZGlyZWN0
b3J5KTsKLQorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB1aW50NjRfdCBkYXRhYmFzZXNTaXpl
Rm9yRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKICAgICBTdHJpbmcgZGF0YWJh
c2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2RhdGFiYXNlRGlyZWN0b3J5OyB9OwotICAg
IHN0YXRpYyBTdHJpbmcgZnVsbERhdGFiYXNlUGF0aEZvckRpcmVjdG9yeShjb25zdCBTdHJpbmcm
KTsKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiBk
YXRhYmFzZU5hbWVBbmRWZXJzaW9uRnJvbUZpbGUoY29uc3QgU3RyaW5nJik7CisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFN0cmluZyBmdWxsRGF0YWJhc2VQYXRoRm9yRGlyZWN0b3J5KGNvbnN0
IFN0cmluZyYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcgZW5jb2RlRGF0YWJh
c2VOYW1lKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgU3RyaW5nIGRlY29kZURhdGFiYXNlTmFtZShjb25zdCBTdHJpbmcmIGVuY29kZWREYXRh
YmFzZU5hbWUpOwogCi0gICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3QgeyByZXR1
cm4gbV9zZXNzaW9uSUQ7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjpvcHRpb25h
bDxJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiBkYXRhYmFzZU5hbWVBbmRWZXJzaW9uRnJvbUZp
bGUoY29uc3QgU3RyaW5nJik7CiAKIHByaXZhdGU6Ci0gICAgU3RyaW5nIGZpbGVuYW1lRm9yRGF0
YWJhc2VOYW1lKCkgY29uc3Q7Ci0gICAgU3RyaW5nIGZ1bGxEYXRhYmFzZURpcmVjdG9yeVdpdGhV
cGdyYWRlKCk7Ci0KICAgICBJREJFcnJvciBlbnN1cmVWYWxpZFJlY29yZHNUYWJsZSgpOwogICAg
IElEQkVycm9yIGVuc3VyZVZhbGlkSW5kZXhSZWNvcmRzVGFibGUoKTsKICAgICBJREJFcnJvciBl
bnN1cmVWYWxpZEluZGV4UmVjb3Jkc0luZGV4KCk7CkBAIC0yMDYsNyArMjAyLDYgQEAgcHJpdmF0
ZToKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxTUUxpdGVTdGF0ZW1lbnQ+IG1fY2FjaGVkU3RhdGVt
ZW50c1tzdGF0aWNfY2FzdDxpbnQ+KFNRTDo6SW52YWxpZCldOwogCi0gICAgUEFMOjpTZXNzaW9u
SUQgbV9zZXNzaW9uSUQ7CiAgICAgSURCRGF0YWJhc2VJZGVudGlmaWVyIG1faWRlbnRpZmllcjsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8SURCRGF0YWJhc2VJbmZvPiBtX2RhdGFiYXNlSW5mbzsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SURCRGF0YWJhc2VJbmZvPiBtX29yaWdpbmFsRGF0YWJhc2VJbmZv
QmVmb3JlVmVyc2lvbkNoYW5nZTsKQEAgLTIxNiw3ICsyMTEsNiBAQCBwcml2YXRlOgogICAgIEhh
c2hNYXA8SURCUmVzb3VyY2VJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlSURCVHJh
bnNhY3Rpb24+PiBtX3RyYW5zYWN0aW9uczsKICAgICBIYXNoTWFwPElEQlJlc291cmNlSWRlbnRp
ZmllciwgU1FMaXRlSURCQ3Vyc29yKj4gbV9jdXJzb3JzOwogCi0gICAgU3RyaW5nIG1fZGF0YWJh
c2VSb290RGlyZWN0b3J5OwogICAgIFN0cmluZyBtX2RhdGFiYXNlRGlyZWN0b3J5OwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1
ZUlEQkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9VbmlxdWVJREJEYXRhYmFzZS5jcHAKaW5kZXggMmIxZWFkYjllYTVjNDY0ZDAyNzVlZDIyM2Y1
MDAzYjdiZWYxNTczMy4uNWI1MGQyOThjZTNmMmU0YjY2NzJlZTAyZmJlNmY2Y2Q4MmY4NmJlNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1
ZUlEQkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAi
TG9nZ2luZy5oIgogI2luY2x1ZGUgIlN0b3JhZ2VRdW90YU1hbmFnZXIuaCIKICNpbmNsdWRlICJV
bmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJVbmlxdWVJREJEYXRhYmFz
ZU1hbmFnZXIuaCIKICNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtMTM0LDggKzEzNSw4IEBAIHN0YXRpYyBpbmxpbmUgdWludDY0X3QgZXN0aW1hdGVTaXpl
KGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYgaW5mbykKICAgICByZXR1cm4gc2l6ZTsKIH0KIAot
VW5pcXVlSURCRGF0YWJhc2U6OlVuaXF1ZUlEQkRhdGFiYXNlKElEQlNlcnZlciYgc2VydmVyLCBj
b25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImIGlkZW50aWZpZXIpCi0gICAgOiBtX3NlcnZlcihz
ZXJ2ZXIpCitVbmlxdWVJREJEYXRhYmFzZTo6VW5pcXVlSURCRGF0YWJhc2UoVW5pcXVlSURCRGF0
YWJhc2VNYW5hZ2VyJiBtYW5hZ2VyLCBjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImIGlkZW50
aWZpZXIpCisgICAgOiBtX21hbmFnZXIobWFuYWdlcikKICAgICAsIG1faWRlbnRpZmllcihpZGVu
dGlmaWVyKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwpAQCAtMTYzLDYgKzE2NCwx
MSBAQCBjb25zdCBJREJEYXRhYmFzZUluZm8mIFVuaXF1ZUlEQkRhdGFiYXNlOjppbmZvKCkgY29u
c3QKICAgICByZXR1cm4gKm1fZGF0YWJhc2VJbmZvOwogfQogCitVbmlxdWVJREJEYXRhYmFzZU1h
bmFnZXIqIFVuaXF1ZUlEQkRhdGFiYXNlOjptYW5hZ2VyKCkKK3sKKyAgICByZXR1cm4gbV9tYW5h
Z2VyLmdldCgpOworfQorCiB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuRGF0YWJhc2VDb25u
ZWN0aW9uKElEQkNvbm5lY3Rpb25Ub0NsaWVudCYgY29ubmVjdGlvbiwgY29uc3QgSURCUmVxdWVz
dERhdGEmIHJlcXVlc3REYXRhKQogewogICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRh
YmFzZTo6b3BlbkRhdGFiYXNlQ29ubmVjdGlvbiIpOwpAQCAtMTg1LDE3ICsxOTEsNDUgQEAgdm9p
ZCBVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybUN1cnJlbnRPcGVuT3BlcmF0aW9uKCkKICAgICBB
U1NFUlQobV9jdXJyZW50T3BlbkRCUmVxdWVzdCk7CiAgICAgQVNTRVJUKG1fY3VycmVudE9wZW5E
QlJlcXVlc3QtPmlzT3BlblJlcXVlc3QoKSk7CiAKKyAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGNy
ZWF0ZSB0aGUgZmlsZSBzbyBubyBuZWVkIHRvIGRvIHNwYWNlIGNoZWNrLgorICAgIGlmIChtX2Jh
Y2tpbmdTdG9yZSkKKyAgICAgICAgcmV0dXJuIHBlcmZvcm1DdXJyZW50T3Blbk9wZXJhdGlvbkFm
dGVyU3BhY2VDaGVjayh0cnVlKTsKKworICAgIGlmICghbV9tYW5hZ2VyKQorICAgICAgICByZXR1
cm4gcGVyZm9ybUN1cnJlbnRPcGVuT3BlcmF0aW9uQWZ0ZXJTcGFjZUNoZWNrKGZhbHNlKTsKKwor
ICAgIGF1dG8gcmVxdWVzdElkZW50aWZpZXIgPSBtX2N1cnJlbnRPcGVuREJSZXF1ZXN0LT5yZXF1
ZXN0RGF0YSgpLnJlcXVlc3RJZGVudGlmaWVyKCk7CisgICAgaWYgKG1fb3BlbkRCUmVxdWVzdHNG
b3JTcGFjZUNoZWNrLmNvbnRhaW5zKHJlcXVlc3RJZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgbV9vcGVuREJSZXF1ZXN0c0ZvclNwYWNlQ2hlY2suYWRkKHJlcXVlc3RJZGVudGlm
aWVyKTsKKyAgICBtX21hbmFnZXItPnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCks
IGRlZmF1bHRXcml0ZU9wZXJhdGlvbkNvc3QsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAq
dGhpcyB9LCByZXF1ZXN0SWRlbnRpZmllcl0oYm9vbCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICAg
ICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBtX29wZW5E
QlJlcXVlc3RzRm9yU3BhY2VDaGVjay5yZW1vdmUocmVxdWVzdElkZW50aWZpZXIpOworICAgICAg
ICBpZiAobV9jdXJyZW50T3BlbkRCUmVxdWVzdC0+cmVxdWVzdERhdGEoKS5yZXF1ZXN0SWRlbnRp
ZmllcigpICE9IHJlcXVlc3RJZGVudGlmaWVyKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIHBlcmZvcm1DdXJyZW50T3Blbk9wZXJhdGlvbkFmdGVyU3BhY2VDaGVjayhncmFudGVkKTsK
KyAgICB9KTsKK30KKwordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybUN1cnJlbnRPcGVu
T3BlcmF0aW9uQWZ0ZXJTcGFjZUNoZWNrKGJvb2wgaXNHcmFudGVkKQoreworICAgIExPRyhJbmRl
eGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybUN1cnJlbnRPcGVuT3BlcmF0aW9uQWZ0
ZXJTcGFjZVJlcXVlc3QgKCVwKSIsIHRoaXMpOworCiAgICAgSURCRXJyb3IgYmFja2luZ1N0b3Jl
T3BlbkVycm9yOwogICAgIGlmICghbV9iYWNraW5nU3RvcmUpIHsKLSAgICAgICAgLy8gUXVvdGEg
Y2hlY2suCi0gICAgICAgIGF1dG8gZGVjaXNpb24gPSBtX3NlcnZlci5yZXF1ZXN0U3BhY2UobV9p
ZGVudGlmaWVyLm9yaWdpbigpLCBkZWZhdWx0V3JpdGVPcGVyYXRpb25Db3N0KTsKLSAgICAgICAg
aWYgKGRlY2lzaW9uID09IFN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uOjpEZW55KQorICAg
ICAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAgICAgICAgIGJhY2tpbmdTdG9yZU9wZW5FcnJvciA9
IElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKyAgICAgICAgZWxzZSBpZiAoIWlzR3Jh
bnRlZCkKICAgICAgICAgICAgIGJhY2tpbmdTdG9yZU9wZW5FcnJvciA9IElEQkVycm9yIHsgUXVv
dGFFeGNlZWRlZEVycm9yLCBxdW90YUVycm9yTWVzc2FnZU5hbWUoIk9wZW5CYWNraW5nU3RvcmUi
KSB9OwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIG1fYmFja2luZ1N0b3JlID0gbV9zZXJ2
ZXIuY3JlYXRlQmFja2luZ1N0b3JlKG1faWRlbnRpZmllcik7CisgICAgICAgICAgICBtX2JhY2tp
bmdTdG9yZSA9IG1fbWFuYWdlci0+Y3JlYXRlQmFja2luZ1N0b3JlKG1faWRlbnRpZmllcik7CiAg
ICAgICAgICAgICBJREJEYXRhYmFzZUluZm8gZGF0YWJhc2VJbmZvOwogICAgICAgICAgICAgYmFj
a2luZ1N0b3JlT3BlbkVycm9yID0gbV9iYWNraW5nU3RvcmUtPmdldE9yRXN0YWJsaXNoRGF0YWJh
c2VJbmZvKGRhdGFiYXNlSW5mbyk7Ci0gICAgICAgICAgICBpZiAoYmFja2luZ1N0b3JlT3BlbkVy
cm9yLmlzTnVsbCgpKQorICAgICAgICAgICAgaWYgKCFiYWNraW5nU3RvcmVPcGVuRXJyb3IpCiAg
ICAgICAgICAgICAgICAgbV9kYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5m
bz4oZGF0YWJhc2VJbmZvKTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIExP
R19FUlJPUigiRmFpbGVkIHRvIGdldCBkYXRhYmFzZSBpbmZvICclcyciLCBiYWNraW5nU3RvcmVP
cGVuRXJyb3IubWVzc2FnZSgpLnV0ZjgoKS5kYXRhKCkpOwpAQCAtMjA0LDcgKzIzOCw3IEBAIHZv
aWQgVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1DdXJyZW50T3Blbk9wZXJhdGlvbigpCiAgICAg
ICAgIH0KICAgICB9CiAKLSAgICBpZiAoIWJhY2tpbmdTdG9yZU9wZW5FcnJvci5pc051bGwoKSkg
eworICAgIGlmIChiYWNraW5nU3RvcmVPcGVuRXJyb3IpIHsKICAgICAgICAgYXV0byByZXN1bHQg
PSBJREJSZXN1bHREYXRhOjplcnJvcihtX2N1cnJlbnRPcGVuREJSZXF1ZXN0LT5yZXF1ZXN0RGF0
YSgpLnJlcXVlc3RJZGVudGlmaWVyKCksIGJhY2tpbmdTdG9yZU9wZW5FcnJvcik7CiAgICAgICAg
IG1fY3VycmVudE9wZW5EQlJlcXVlc3QtPmNvbm5lY3Rpb24oKS5kaWRPcGVuRGF0YWJhc2UocmVz
dWx0KTsKICAgICAgICAgbV9jdXJyZW50T3BlbkRCUmVxdWVzdCA9IG51bGxwdHI7CkBAIC0yOTQs
NyArMzI4LDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlQmFja2luZ1N0b3JlKCkK
ICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVl
SURCRGF0YWJhc2U6OmRlbGV0ZUJhY2tpbmdTdG9yZSIpOwogICAgIAotICAgIGF1dG8gYmFja2lu
Z1N0b3JlID0gbV9iYWNraW5nU3RvcmUgPyBzdGQ6OmV4Y2hhbmdlKG1fYmFja2luZ1N0b3JlLCBu
dWxscHRyKSA6IG1fc2VydmVyLmNyZWF0ZUJhY2tpbmdTdG9yZShtX2lkZW50aWZpZXIpOworICAg
IGF1dG8gYmFja2luZ1N0b3JlID0gbV9iYWNraW5nU3RvcmUgPyBzdGQ6OmV4Y2hhbmdlKG1fYmFj
a2luZ1N0b3JlLCBudWxscHRyKSA6IG1fbWFuYWdlci0+Y3JlYXRlQmFja2luZ1N0b3JlKG1faWRl
bnRpZmllcik7CiAgICAgdWludDY0X3QgZGVsZXRlZFZlcnNpb24gPSBiYWNraW5nU3RvcmUtPmRh
dGFiYXNlVmVyc2lvbigpOwogICAgIGJhY2tpbmdTdG9yZS0+ZGVsZXRlQmFja2luZ1N0b3JlKCk7
CiAgICAgZGlkRGVsZXRlQmFja2luZ1N0b3JlKGRlbGV0ZWRWZXJzaW9uKTsKQEAgLTU0MiwyMCAr
NTc2LDMyIEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmFkZE9wZW5EYXRhYmFzZUNvbm5lY3Rp
b24oUmVmPFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvCiAgICAgbV9vcGVuRGF0YWJhc2VDb25u
ZWN0aW9ucy5hZGQoYWRvcHRSZWYoY29ubmVjdGlvbi5sZWFrUmVmKCkpKTsKIH0KIAotdm9pZCBV
bmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFu
c2FjdGlvbiYgdHJhbnNhY3Rpb24sIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYgaW5mbywgRXJy
b3JDYWxsYmFjayBjYWxsYmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVj
dFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBjb25zdCBJ
REJPYmplY3RTdG9yZUluZm8mIGluZm8sIEVycm9yQ2FsbGJhY2sgY2FsbGJhY2ssIFNwYWNlQ2hl
Y2tSZXN1bHQgc3BhY2VDaGVja1Jlc3VsdCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgp
KTsKICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0
b3JlIik7CiAKLSAgICBBU1NFUlQobV9iYWNraW5nU3RvcmUpOworICAgIGlmIChzcGFjZUNoZWNr
UmVzdWx0ID09IFNwYWNlQ2hlY2tSZXN1bHQ6OlVua25vd24pIHsKKyAgICAgICAgaWYgKCFtX21h
bmFnZXIpCisgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3Rh
dGVFcnJvciB9KTsKIAotICAgIC8vIFF1b3RhIGNoZWNrLgotICAgIGF1dG8gdGFza1NpemUgPSBk
ZWZhdWx0V3JpdGVPcGVyYXRpb25Db3N0ICsgZXN0aW1hdGVTaXplKGluZm8pOwotICAgIGlmICht
X3NlcnZlci5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCB0YXNrU2l6ZSkgPT0g
U3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb246OkRlbnkpIHsKKyAgICAgICAgYXV0byB0YXNr
U2l6ZSA9IGRlZmF1bHRXcml0ZU9wZXJhdGlvbkNvc3QgKyBlc3RpbWF0ZVNpemUoaW5mbyk7Cisg
ICAgICAgIG1fbWFuYWdlci0+cmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwgdGFz
a1NpemUsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCB3ZWFrVHJhbnNhY3Rp
b24gPSBXZWFrUHRyIHsgdHJhbnNhY3Rpb24gfSwgaW5mbywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKV0oYm9vbCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghd2Vha1Ro
aXMgfHwgIXdlYWtUcmFuc2FjdGlvbikKKyAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2so
SURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkRhdGFiYXNlIG9yIHRyYW5zYWN0aW9uIGlz
IGNsb3NlZCIgfSk7CisgICAgICAgICAgICBjcmVhdGVPYmplY3RTdG9yZSgqd2Vha1RyYW5zYWN0
aW9uLCBpbmZvLCBXVEZNb3ZlKGNhbGxiYWNrKSwgZ3JhbnRlZCA/IFNwYWNlQ2hlY2tSZXN1bHQ6
OlBhc3MgOiBTcGFjZUNoZWNrUmVzdWx0OjpGYWlsKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBpZiAoc3BhY2VDaGVja1Jlc3VsdCAhPSBTcGFjZUNoZWNrUmVz
dWx0OjpQYXNzKSB7CiAgICAgICAgIGNhbGxiYWNrKElEQkVycm9yIHsgUXVvdGFFeGNlZWRlZEVy
cm9yLCBxdW90YUVycm9yTWVzc2FnZU5hbWUoIkNyZWF0ZU9iamVjdFN0b3JlIikgfSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKKyAgICBpZiAoIW1fYmFja2luZ1N0b3JlKQorICAgICAgICBy
ZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkJhY2tpbmcgc3Rv
cmUgaGFzIGNsb3NlZCIgfSk7CisKICAgICBhdXRvIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPmNy
ZWF0ZU9iamVjdFN0b3JlKHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCksIGluZm8pOwog
ICAgIGlmIChlcnJvci5pc051bGwoKSkKICAgICAgICAgbV9kYXRhYmFzZUluZm8tPmFkZEV4aXN0
aW5nT2JqZWN0U3RvcmUoaW5mbyk7CkBAIC01NjMsMTggKzYwOSwzNCBAQCB2b2lkIFVuaXF1ZUlE
QkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZShVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9u
JiB0cmFuc2FjdAogICAgIGNhbGxiYWNrKGVycm9yKTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRh
YmFzZTo6ZGVsZXRlT2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJh
bnNhY3Rpb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lLCBFcnJvckNhbGxiYWNrIGNh
bGxiYWNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlT2JqZWN0U3RvcmUoVW5pcXVl
SURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0
U3RvcmVOYW1lLCBFcnJvckNhbGxiYWNrIGNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0IHNwYWNl
Q2hlY2tSZXN1bHQpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKElu
ZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVPYmplY3RTdG9yZSIpOwogCisgICAg
aWYgKHNwYWNlQ2hlY2tSZXN1bHQgPT0gU3BhY2VDaGVja1Jlc3VsdDo6VW5rbm93bikgeworICAg
ICAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJv
ciB7IEludmFsaWRTdGF0ZUVycm9yIH0pOworCisgICAgICAgIG1fbWFuYWdlci0+cmVxdWVzdFNw
YWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwgMCwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7
ICp0aGlzIH0sIHdlYWtUcmFuc2FjdGlvbiA9IFdlYWtQdHIgeyB0cmFuc2FjdGlvbiB9LCBvYmpl
Y3RTdG9yZU5hbWUsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgZ3JhbnRlZCkg
bXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICF3ZWFrVHJhbnNhY3Rpb24p
CisgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRl
RXJyb3IsICJEYXRhYmFzZSBvciB0cmFuc2FjdGlvbiBpcyBjbG9zZWQiIH0pOworCisgICAgICAg
ICAgICBkZWxldGVPYmplY3RTdG9yZSgqd2Vha1RyYW5zYWN0aW9uLCBvYmplY3RTdG9yZU5hbWUs
IFdURk1vdmUoY2FsbGJhY2spLCBncmFudGVkID8gU3BhY2VDaGVja1Jlc3VsdDo6UGFzcyA6IFNw
YWNlQ2hlY2tSZXN1bHQ6OkZhaWwpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIEFTU0VSVChzcGFjZUNoZWNrUmVzdWx0ID09IFNwYWNlQ2hlY2tSZXN1bHQ6OlBh
c3MpOwogICAgIGF1dG8qIGluZm8gPSBtX2RhdGFiYXNlSW5mby0+aW5mb0ZvckV4aXN0aW5nT2Jq
ZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lKTsKICAgICBpZiAoIWluZm8pIHsKICAgICAgICAgY2Fs
bGJhY2soSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIGRlbGV0ZSBub24tZXhp
c3RhbnQgb2JqZWN0IHN0b3JlIl9zIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
QVNTRVJUKG1fYmFja2luZ1N0b3JlKTsKKyAgICBpZiAoIW1fYmFja2luZ1N0b3JlKQorICAgICAg
ICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkJhY2tpbmcg
c3RvcmUgaXMgY2xvc2VkIiB9KTsKKwogICAgIGF1dG8gZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+
ZGVsZXRlT2JqZWN0U3RvcmUodHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSwgaW5mby0+
aWRlbnRpZmllcigpKTsKICAgICBpZiAoZXJyb3IuaXNOdWxsKCkpCiAgICAgICAgIG1fZGF0YWJh
c2VJbmZvLT5kZWxldGVPYmplY3RTdG9yZShpbmZvLT5pZGVudGlmaWVyKCkpOwpAQCAtNTgyLDE0
ICs2NDQsMjYgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlT2JqZWN0U3RvcmUoVW5p
cXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3QKICAgICBjYWxsYmFjayhlcnJvcik7
CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnJlbmFtZU9iamVjdFN0b3JlKFVuaXF1ZUlE
QkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCB1aW50NjRfdCBvYmplY3RTdG9yZUlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSwgRXJyb3JDYWxsYmFjayBjYWxsYmFjaykK
K3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnJlbmFtZU9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFi
YXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSwgRXJyb3JDYWxsYmFjayBjYWxsYmFjaywgU3BhY2VD
aGVja1Jlc3VsdCBzcGFjZUNoZWNrUmVzdWx0KQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFk
KCkpOwogICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6cmVuYW1lT2JqZWN0
U3RvcmUiKTsKIAotICAgIC8vIFF1b3RhIGNoZWNrLgotICAgIGF1dG8gdGFza1NpemUgPSBkZWZh
dWx0V3JpdGVPcGVyYXRpb25Db3N0ICsgbmV3TmFtZS5zaXplSW5CeXRlcygpOwotICAgIGlmICht
X3NlcnZlci5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCB0YXNrU2l6ZSkgPT0g
U3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb246OkRlbnkpIHsKKyAgICBpZiAoc3BhY2VDaGVj
a1Jlc3VsdCA9PSBTcGFjZUNoZWNrUmVzdWx0OjpVbmtub3duKSB7CisgICAgICAgIGlmICghbV9t
YW5hZ2VyKQorICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0
YXRlRXJyb3IgfSk7CisKKyAgICAgICAgYXV0byB0YXNrU2l6ZSA9IGRlZmF1bHRXcml0ZU9wZXJh
dGlvbkNvc3QgKyBuZXdOYW1lLnNpemVJbkJ5dGVzKCk7CisgICAgICAgIG1fbWFuYWdlci0+cmVx
dWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwgdGFza1NpemUsIFt0aGlzLCB3ZWFrVGhp
cyA9IFdlYWtQdHIgeyAqdGhpcyB9LCB3ZWFrVHJhbnNhY3Rpb24gPSBXZWFrUHRyIHsgdHJhbnNh
Y3Rpb24gfSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBuZXdOYW1lLCBjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spXShib29sIGdyYW50ZWQpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCF3
ZWFrVGhpcyB8fCAhd2Vha1RyYW5zYWN0aW9uKQorICAgICAgICAgICAgICAgIHJldHVybiBjYWxs
YmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiRGF0YWJhc2Ugb3IgdHJhbnNhY3Rp
b24gaXMgY2xvc2VkIiB9KTsKKworICAgICAgICAgICAgcmVuYW1lT2JqZWN0U3RvcmUoKndlYWtU
cmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBuZXdOYW1lLCBXVEZNb3ZlKGNhbGxi
YWNrKSwgZ3JhbnRlZCA/IFNwYWNlQ2hlY2tSZXN1bHQ6OlBhc3MgOiBTcGFjZUNoZWNrUmVzdWx0
OjpGYWlsKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAo
c3BhY2VDaGVja1Jlc3VsdCAhPSBTcGFjZUNoZWNrUmVzdWx0OjpQYXNzKSB7CiAgICAgICAgIGNh
bGxiYWNrKElEQkVycm9yKFF1b3RhRXhjZWVkZWRFcnJvciwgcXVvdGFFcnJvck1lc3NhZ2VOYW1l
KCJSZW5hbWVPYmplY3RTdG9yZSIpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC02MDAs
NyArNjc0LDkgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cmVuYW1lT2JqZWN0U3RvcmUoVW5p
cXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3QKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CisgICAgaWYgKCFtX2JhY2tpbmdTdG9y
ZSkKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3Is
ICJCYWNraW5nIHN0b3JlIGlzIGNsb3NlZCIgfSk7CisKICAgICBhdXRvIGVycm9yID0gbV9iYWNr
aW5nU3RvcmUtPnJlbmFtZU9iamVjdFN0b3JlKHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVy
KCksIG9iamVjdFN0b3JlSWRlbnRpZmllciwgbmV3TmFtZSk7CiAgICAgaWYgKGVycm9yLmlzTnVs
bCgpKQogICAgICAgICBtX2RhdGFiYXNlSW5mby0+cmVuYW1lT2JqZWN0U3RvcmUob2JqZWN0U3Rv
cmVJZGVudGlmaWVyLCBuZXdOYW1lKTsKQEAgLTYwOCwzMCArNjg0LDU5IEBAIHZvaWQgVW5pcXVl
SURCRGF0YWJhc2U6OnJlbmFtZU9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rp
b24mIHRyYW5zYWN0CiAgICAgY2FsbGJhY2soZXJyb3IpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRh
dGFiYXNlOjpjbGVhck9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRy
YW5zYWN0aW9uLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIEVycm9yQ2FsbGJhY2sg
Y2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjbGVhck9iamVjdFN0b3JlKFVuaXF1
ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCB1aW50NjRfdCBvYmplY3RTdG9y
ZUlkZW50aWZpZXIsIEVycm9yQ2FsbGJhY2sgY2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgc3Bh
Y2VDaGVja1Jlc3VsdCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMT0co
SW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6OmNsZWFyT2JqZWN0U3RvcmUiKTsKIAotICAg
IEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7Ci0gICAgYXV0byBlcnJvciA9IG1fYmFja2luZ1N0b3Jl
LT5jbGVhck9iamVjdFN0b3JlKHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCksIG9iamVj
dFN0b3JlSWRlbnRpZmllcik7CisgICAgaWYgKHNwYWNlQ2hlY2tSZXN1bHQgPT0gU3BhY2VDaGVj
a1Jlc3VsdDo6VW5rbm93bikgeworICAgICAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAgICAgICAg
IHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yIH0pOworCisgICAg
ICAgIG1fbWFuYWdlci0+cmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwgMCwgW3Ro
aXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHdlYWtUcmFuc2FjdGlvbiA9IFdlYWtQ
dHIgeyB0cmFuc2FjdGlvbiB9LCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayldKGJvb2wgZ3JhbnRlZCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAo
IXdlYWtUaGlzIHx8ICF3ZWFrVHJhbnNhY3Rpb24pCisgICAgICAgICAgICAgICAgcmV0dXJuIGNh
bGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJEYXRhYmFzZSBvciB0cmFuc2Fj
dGlvbiBpcyBjbG9zZWQiIH0pOworCisgICAgICAgICAgICBjbGVhck9iamVjdFN0b3JlKCp3ZWFr
VHJhbnNhY3Rpb24sIG9iamVjdFN0b3JlSWRlbnRpZmllciwgV1RGTW92ZShjYWxsYmFjayksIGdy
YW50ZWQgPyBTcGFjZUNoZWNrUmVzdWx0OjpQYXNzIDogU3BhY2VDaGVja1Jlc3VsdDo6RmFpbCk7
CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKHNwYWNl
Q2hlY2tSZXN1bHQgPT0gU3BhY2VDaGVja1Jlc3VsdDo6UGFzcyk7CisgICAgaWYgKCFtX2JhY2tp
bmdTdG9yZSkKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRl
RXJyb3IsICJCYWNraW5nIHN0b3JlIGlzIGNsb3NlZCIgfSk7CiAKKyAgICBhdXRvIGVycm9yID0g
bV9iYWNraW5nU3RvcmUtPmNsZWFyT2JqZWN0U3RvcmUodHJhbnNhY3Rpb24uaW5mbygpLmlkZW50
aWZpZXIoKSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKICAgICBjYWxsYmFjayhlcnJvcik7CiB9
CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZUluZGV4KFVuaXF1ZUlEQkRhdGFiYXNl
VHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBjb25zdCBJREJJbmRleEluZm8mIGluZm8sIEVycm9y
Q2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVJbmRleChV
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgY29uc3QgSURCSW5kZXhJ
bmZvJiBpbmZvLCBFcnJvckNhbGxiYWNrIGNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0IHNwYWNl
Q2hlY2tSZXN1bHQpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKElu
ZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVJbmRleCIpOwogCi0gICAgLy8gUXVv
dGEgY2hlY2suCi0gICAgYXV0byB0YXNrU2l6ZSA9IGRlZmF1bHRXcml0ZU9wZXJhdGlvbkNvc3Qg
KyBlc3RpbWF0ZVNpemUoaW5mbyk7Ci0gICAgaWYgKG1fc2VydmVyLnJlcXVlc3RTcGFjZShtX2lk
ZW50aWZpZXIub3JpZ2luKCksIHRhc2tTaXplKSA9PSBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNp
c2lvbjo6RGVueSkgeworICAgIGlmIChzcGFjZUNoZWNrUmVzdWx0ID09IFNwYWNlQ2hlY2tSZXN1
bHQ6OlVua25vd24pIHsKKyAgICAgICAgaWYgKCFtX21hbmFnZXIpCisgICAgICAgICAgICByZXR1
cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciB9KTsKKworICAgICAgICBh
dXRvIHRhc2tTaXplID0gZGVmYXVsdFdyaXRlT3BlcmF0aW9uQ29zdCArIGVzdGltYXRlU2l6ZShp
bmZvKTsKKyAgICAgICAgbV9tYW5hZ2VyLT5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdp
bigpLCB0YXNrU2l6ZSwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHdlYWtU
cmFuc2FjdGlvbiA9IFdlYWtQdHIgeyB0cmFuc2FjdGlvbiB9LCBpbmZvLCBjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spXShib29sIGdyYW50ZWQpIG11dGFibGUgeworICAgICAgICAgICAgaWYg
KCF3ZWFrVGhpcyB8fCAhd2Vha1RyYW5zYWN0aW9uKQorICAgICAgICAgICAgICAgIHJldHVybiBj
YWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiRGF0YWJhc2Ugb3IgdHJhbnNh
Y3Rpb24gaXMgY2xvc2VkIiB9KTsKKworICAgICAgICAgICAgY3JlYXRlSW5kZXgoKndlYWtUcmFu
c2FjdGlvbiwgaW5mbywgV1RGTW92ZShjYWxsYmFjayksIGdyYW50ZWQgPyBTcGFjZUNoZWNrUmVz
dWx0OjpQYXNzIDogU3BhY2VDaGVja1Jlc3VsdDo6RmFpbCk7CisgICAgICAgIH0pOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgaWYgKHNwYWNlQ2hlY2tSZXN1bHQgIT0gU3BhY2VDaGVj
a1Jlc3VsdDo6UGFzcykgewogICAgICAgICBjYWxsYmFjayhJREJFcnJvciB7IFF1b3RhRXhjZWVk
ZWRFcnJvciwgcXVvdGFFcnJvck1lc3NhZ2VOYW1lKCJDcmVhdGVJbmRleCIpIH0pOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgQVNTRVJUKG1fYmFja2luZ1N0b3JlKTsKKyAgICBpZiAo
IW1fYmFja2luZ1N0b3JlKQorICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZh
bGlkU3RhdGVFcnJvciwgIkJhY2tpbmcgc3RvcmUgaXMgY2xvc2VkIiB9KTsKKwogICAgIGF1dG8g
ZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+Y3JlYXRlSW5kZXgodHJhbnNhY3Rpb24uaW5mbygpLmlk
ZW50aWZpZXIoKSwgaW5mbyk7CiAgICAgaWYgKGVycm9yLmlzTnVsbCgpKSB7CiAgICAgICAgIEFT
U0VSVChtX2RhdGFiYXNlSW5mbyk7CkBAIC02NDQsMTEgKzc0OSwyOCBAQCB2b2lkIFVuaXF1ZUlE
QkRhdGFiYXNlOjpjcmVhdGVJbmRleChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFu
c2FjdGlvbiwgYwogICAgIGNhbGxiYWNrKGVycm9yKTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRh
YmFzZTo6ZGVsZXRlSW5kZXgoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rp
b24sIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpbmRleE5h
bWUsIEVycm9yQ2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxl
dGVJbmRleChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgdWludDY0
X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGluZGV4TmFtZSwgRXJyb3JD
YWxsYmFjayBjYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCBzcGFjZUNoZWNrUmVzdWx0KQogewog
ICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJ
REJEYXRhYmFzZTo6ZGVsZXRlSW5kZXgiKTsKIAorICAgIGlmIChzcGFjZUNoZWNrUmVzdWx0ID09
IFNwYWNlQ2hlY2tSZXN1bHQ6OlVua25vd24pIHsKKyAgICAgICAgaWYgKCFtX21hbmFnZXIpCisg
ICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciB9
KTsKKworICAgICAgICBtX21hbmFnZXItPnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2lu
KCksIDAsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCB3ZWFrVHJhbnNhY3Rp
b24gPSBXZWFrUHRyIHsgdHJhbnNhY3Rpb24gfSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRl
eE5hbWUsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgZ3JhbnRlZCkgbXV0YWJs
ZSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICF3ZWFrVHJhbnNhY3Rpb24pCisgICAg
ICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3Is
ICJEYXRhYmFzZSBvciB0cmFuc2FjdGlvbiBpcyBjbG9zZWQiIH0pOworCisgICAgICAgICAgICBk
ZWxldGVJbmRleCgqd2Vha1RyYW5zYWN0aW9uLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4
TmFtZSwgV1RGTW92ZShjYWxsYmFjayksIGdyYW50ZWQgPyBTcGFjZUNoZWNrUmVzdWx0OjpQYXNz
IDogU3BhY2VDaGVja1Jlc3VsdDo6RmFpbCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgQVNTRVJUKHNwYWNlQ2hlY2tSZXN1bHQgPT0gU3BhY2VDaGVja1Jlc3Vs
dDo6UGFzcyk7CisgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkKKyAgICAgICAgcmV0dXJuIGNhbGxi
YWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJCYWNraW5nIHN0b3JlIGlzIGNsb3Nl
ZCIgfSk7CisKICAgICBhdXRvKiBvYmplY3RTdG9yZUluZm8gPSBtX2RhdGFiYXNlSW5mby0+aW5m
b0ZvckV4aXN0aW5nT2JqZWN0U3RvcmUob2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKICAgICBpZiAo
IW9iamVjdFN0b3JlSW5mbykgewogICAgICAgICBjYWxsYmFjayhJREJFcnJvciB7IFVua25vd25F
cnJvciwgIkF0dGVtcHQgdG8gZGVsZXRlIGluZGV4IGZyb20gbm9uLWV4aXN0YW50IG9iamVjdCBz
dG9yZSJfcyB9KTsKQEAgLTY2MCw5ICs3ODIsOCBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpk
ZWxldGVJbmRleChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgdQog
ICAgICAgICBjYWxsYmFjayhJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gZGVs
ZXRlIG5vbi1leGlzdGFudCBpbmRleCJfcyB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAg
ICBhdXRvIGluZGV4SWRlbnRpZmllciA9IGluZGV4SW5mby0+aWRlbnRpZmllcigpOwogCi0gICAg
QVNTRVJUKG1fYmFja2luZ1N0b3JlKTsKKyAgICBhdXRvIGluZGV4SWRlbnRpZmllciA9IGluZGV4
SW5mby0+aWRlbnRpZmllcigpOwogICAgIGF1dG8gZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+ZGVs
ZXRlSW5kZXgodHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSwgb2JqZWN0U3RvcmVJZGVu
dGlmaWVyLCBpbmRleElkZW50aWZpZXIpOwogICAgIGlmIChlcnJvci5pc051bGwoKSkKICAgICAg
ICAgb2JqZWN0U3RvcmVJbmZvLT5kZWxldGVJbmRleChpbmRleElkZW50aWZpZXIpOwpAQCAtNjcw
LDE4ICs3OTEsMzMgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlSW5kZXgoVW5pcXVl
SURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIHUKICAgICBjYWxsYmFjayhlcnJv
cik7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnJlbmFtZUluZGV4KFVuaXF1ZUlEQkRh
dGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50
aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lLCBF
cnJvckNhbGxiYWNrIGNhbGxiYWNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cmVuYW1lSW5k
ZXgoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIHVpbnQ2NF90IG9i
amVjdFN0b3JlSWRlbnRpZmllciwgdWludDY0X3QgaW5kZXhJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIG5ld05hbWUsIEVycm9yQ2FsbGJhY2sgY2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgc3Bh
Y2VDaGVja1Jlc3VsdCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMT0co
SW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6OnJlbmFtZUluZGV4Iik7CiAKLSAgICAvLyBR
dW90YSBjaGVjay4KLSAgICBhdXRvIHRhc2tTaXplID0gZGVmYXVsdFdyaXRlT3BlcmF0aW9uQ29z
dCArIG5ld05hbWUuc2l6ZUluQnl0ZXMoKTsKLSAgICBpZiAobV9zZXJ2ZXIucmVxdWVzdFNwYWNl
KG1faWRlbnRpZmllci5vcmlnaW4oKSwgdGFza1NpemUpID09IFN0b3JhZ2VRdW90YU1hbmFnZXI6
OkRlY2lzaW9uOjpEZW55KSB7CisgICAgaWYgKHNwYWNlQ2hlY2tSZXN1bHQgPT0gU3BhY2VDaGVj
a1Jlc3VsdDo6VW5rbm93bikgeworICAgICAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAgICAgICAg
IHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yIH0pOworCisgICAg
ICAgIGF1dG8gdGFza1NpemUgPSBkZWZhdWx0V3JpdGVPcGVyYXRpb25Db3N0ICsgbmV3TmFtZS5z
aXplSW5CeXRlcygpOworICAgICAgICBtX21hbmFnZXItPnJlcXVlc3RTcGFjZShtX2lkZW50aWZp
ZXIub3JpZ2luKCksIHRhc2tTaXplLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMg
fSwgd2Vha1RyYW5zYWN0aW9uID0gV2Vha1B0ciB7IHRyYW5zYWN0aW9uIH0sIG9iamVjdFN0b3Jl
SWRlbnRpZmllciwgaW5kZXhJZGVudGlmaWVyLCBuZXdOYW1lLCBjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spXShib29sIGdyYW50ZWQpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCF3ZWFr
VGhpcyB8fCAhd2Vha1RyYW5zYWN0aW9uKQorICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFj
ayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiRGF0YWJhc2Ugb3IgdHJhbnNhY3Rpb24g
aXMgY2xvc2VkIiB9KTsKKworICAgICAgICAgICAgcmVuYW1lSW5kZXgoKndlYWtUcmFuc2FjdGlv
biwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleElkZW50aWZpZXIsIG5ld05hbWUsIFdURk1v
dmUoY2FsbGJhY2spLCBncmFudGVkID8gU3BhY2VDaGVja1Jlc3VsdDo6UGFzcyA6IFNwYWNlQ2hl
Y2tSZXN1bHQ6OkZhaWwpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGlmIChzcGFjZUNoZWNrUmVzdWx0ICE9IFNwYWNlQ2hlY2tSZXN1bHQ6OlBhc3MpIHsKICAg
ICAgICAgY2FsbGJhY2soSURCRXJyb3IgeyBRdW90YUV4Y2VlZGVkRXJyb3IsIHF1b3RhRXJyb3JN
ZXNzYWdlTmFtZSgiUmVuYW1lSW5kZXgiKSB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAor
ICAgIGlmICghbV9iYWNraW5nU3RvcmUpCisgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJv
ciB7IEludmFsaWRTdGF0ZUVycm9yLCAiQmFja2luZyBzdG9yZSBpcyBjbG9zZWQiIH0pOworCiAg
ICAgYXV0byogb2JqZWN0U3RvcmVJbmZvID0gbV9kYXRhYmFzZUluZm8tPmluZm9Gb3JFeGlzdGlu
Z09iamVjdFN0b3JlKG9iamVjdFN0b3JlSWRlbnRpZmllcik7CiAgICAgaWYgKCFvYmplY3RTdG9y
ZUluZm8pIHsKICAgICAgICAgY2FsbGJhY2soSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRl
bXB0IHRvIHJlbmFtZSBpbmRleCBpbiBub24tZXhpc3RhbnQgb2JqZWN0IHN0b3JlIl9zIH0pOwpA
QCAtNjk0LDcgKzgzMCw2IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnJlbmFtZUluZGV4KFVu
aXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCB1CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBBU1NFUlQobV9iYWNraW5nU3RvcmUpOwogICAgIGF1dG8gZXJyb3Ig
PSBtX2JhY2tpbmdTdG9yZS0+cmVuYW1lSW5kZXgodHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZp
ZXIoKSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleElkZW50aWZpZXIsIG5ld05hbWUpOwog
ICAgIGlmIChlcnJvci5pc051bGwoKSkKICAgICAgICAgaW5kZXhJbmZvLT5yZW5hbWUobmV3TmFt
ZSk7CkBAIC03MDksMTcgKzg0NCwxOSBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwdXRPckFk
ZChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQktleQogCiAgICAg
QVNTRVJUKG1fZGF0YWJhc2VJbmZvKTsKIAotICAgIElEQktleURhdGEgdXNlZEtleTsKLSAgICBJ
REJFcnJvciBlcnJvcjsKKyAgICBpZiAoIW1fYmFja2luZ1N0b3JlKQorICAgICAgICByZXR1cm4g
Y2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkJhY2tpbmcgc3RvcmUgaXMg
Y2xvc2VkIiB9LCBrZXlEYXRhKTsKIAotICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CiAgICAg
YXV0byBvYmplY3RTdG9yZUlkZW50aWZpZXIgPSByZXF1ZXN0RGF0YS5vYmplY3RTdG9yZUlkZW50
aWZpZXIoKTsKICAgICBhdXRvKiBvYmplY3RTdG9yZUluZm8gPSBtX2JhY2tpbmdTdG9yZS0+aW5m
b0Zvck9iamVjdFN0b3JlKG9iamVjdFN0b3JlSWRlbnRpZmllcik7Ci0gICAgaWYgKCFvYmplY3RT
dG9yZUluZm8pIHsKLSAgICAgICAgY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJv
ciwgIk9iamVjdCBzdG9yZSBjYW5ub3QgYmUgZm91bmQgaW4gdGhlIGJhY2tpbmcgc3RvcmUiX3Mg
fSwgdXNlZEtleSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKCFvYmplY3RTdG9y
ZUluZm8pCisgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVy
cm9yLCAiT2JqZWN0IHN0b3JlIGNhbm5vdCBiZSBmb3VuZCBpbiB0aGUgYmFja2luZyBzdG9yZSJf
cyB9LCBrZXlEYXRhKTsKKworICAgIGlmICghbV9tYW5hZ2VyKQorICAgICAgICByZXR1cm4gY2Fs
bGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciB9LCBrZXlEYXRhKTsKIAorICAgIElE
QktleURhdGEgdXNlZEtleTsKKyAgICBJREJFcnJvciBlcnJvcjsKICAgICBib29sIHVzZWRLZXlJ
c0dlbmVyYXRlZCA9IGZhbHNlOwogICAgIHVpbnQ2NF90IGtleU51bWJlcjsKICAgICBhdXRvIHRy
YW5zYWN0aW9uSWRlbnRpZmllciA9IHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigp
OwpAQCAtNzMwLDc2ICs4NjcsMTA1IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnB1dE9yQWRk
KGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5CiAKICAgICBp
ZiAob2JqZWN0U3RvcmVJbmZvLT5hdXRvSW5jcmVtZW50KCkgJiYgIWtleURhdGEuaXNWYWxpZCgp
KSB7CiAgICAgICAgIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPmdlbmVyYXRlS2V5TnVtYmVyKHRy
YW5zYWN0aW9uSWRlbnRpZmllciwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBrZXlOdW1iZXIpOwot
ICAgICAgICBpZiAoIWVycm9yLmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhlcnJv
ciwgdXNlZEtleSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAgaWYg
KCFlcnJvci5pc051bGwoKSkKKyAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhlcnJvciwgdXNl
ZEtleSk7CisKICAgICAgICAgdXNlZEtleS5zZXROdW1iZXJWYWx1ZShrZXlOdW1iZXIpOwogICAg
ICAgICB1c2VkS2V5SXNHZW5lcmF0ZWQgPSB0cnVlOwogICAgIH0gZWxzZQogICAgICAgICB1c2Vk
S2V5ID0ga2V5RGF0YTsKIAotICAgIC8vIEdlbmVyYXRlIGluZGV4IGtleXMgdXAgZnJvbnQgZm9y
IG1vcmUgYWNjdXJhdGUgcXVvdGEgY2hlY2suCi0gICAgSW5kZXhJRFRvSW5kZXhLZXlNYXAgaW5k
ZXhLZXlzOwotICAgIGNhbGxPbklEQlNlcmlhbGl6YXRpb25UaHJlYWRBbmRXYWl0KFtvYmplY3RT
dG9yZUluZm8gPSBvYmplY3RTdG9yZUluZm8tPmlzb2xhdGVkQ29weSgpLCBrZXkgPSB1c2VkS2V5
Lmlzb2xhdGVkQ29weSgpLCB2YWx1ZSA9IHZhbHVlLmlzb2xhdGVkQ29weSgpLCAmaW5kZXhLZXlz
XShhdXRvJiBnbG9iYWxPYmplY3QpIHsKLSAgICAgICAgaW5kZXhLZXlzID0gZ2VuZXJhdGVJbmRl
eEtleU1hcEZvclZhbHVlKGdsb2JhbE9iamVjdCwgb2JqZWN0U3RvcmVJbmZvLCBrZXksIHZhbHVl
KTsKLSAgICB9KTsKLQogICAgIGlmIChvdmVyd3JpdGVNb2RlID09IEluZGV4ZWREQjo6T2JqZWN0
U3RvcmVPdmVyd3JpdGVNb2RlOjpOb092ZXJ3cml0ZSkgewogICAgICAgICBib29sIGtleUV4aXN0
czsKICAgICAgICAgZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+a2V5RXhpc3RzSW5PYmplY3RTdG9y
ZSh0cmFuc2FjdGlvbklkZW50aWZpZXIsIG9iamVjdFN0b3JlSWRlbnRpZmllciwgdXNlZEtleSwg
a2V5RXhpc3RzKTsKLSAgICAgICAgaWYgKGVycm9yLmlzTnVsbCgpICYmIGtleUV4aXN0cykKKyAg
ICAgICAgaWYgKCFlcnJvciAmJiBrZXlFeGlzdHMpCiAgICAgICAgICAgICBlcnJvciA9IElEQkVy
cm9yIHsgQ29uc3RyYWludEVycm9yLCAiS2V5IGFscmVhZHkgZXhpc3RzIGluIHRoZSBvYmplY3Qg
c3RvcmUiX3MgfTsKIAotICAgICAgICBpZiAoIWVycm9yLmlzTnVsbCgpKSB7Ci0gICAgICAgICAg
ICBjYWxsYmFjayhlcnJvciwgdXNlZEtleSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KKyAgICAgICAgaWYgKCEhZXJyb3IpCisgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soZXJy
b3IsIHVzZWRLZXkpOwogICAgIH0KIAotICAgIC8vIFF1b3RhIGNoZWNrLgorICAgIC8vIEdlbmVy
YXRlIGluZGV4IGtleXMgdXAgZnJvbnQgZm9yIG1vcmUgYWNjdXJhdGUgcXVvdGEgY2hlY2suCisg
ICAgSW5kZXhJRFRvSW5kZXhLZXlNYXAgaW5kZXhLZXlzOworICAgIGNhbGxPbklEQlNlcmlhbGl6
YXRpb25UaHJlYWRBbmRXYWl0KFtvYmplY3RTdG9yZUluZm8gPSBvYmplY3RTdG9yZUluZm8tPmlz
b2xhdGVkQ29weSgpLCBrZXkgPSB1c2VkS2V5Lmlzb2xhdGVkQ29weSgpLCB2YWx1ZSA9IHZhbHVl
Lmlzb2xhdGVkQ29weSgpLCAmaW5kZXhLZXlzXShhdXRvJiBnbG9iYWxPYmplY3QpIHsKKyAgICAg
ICAgaW5kZXhLZXlzID0gZ2VuZXJhdGVJbmRleEtleU1hcEZvclZhbHVlKGdsb2JhbE9iamVjdCwg
b2JqZWN0U3RvcmVJbmZvLCBrZXksIHZhbHVlKTsKKyAgICB9KTsKKworICAgIGdlbmVyYXRlZEtl
eVJlc2V0dGVyLnJlbGVhc2UoKTsKICAgICBhdXRvIGtleVNpemUgPSBlc3RpbWF0ZVNpemUodXNl
ZEtleSk7CiAgICAgYXV0byB2YWx1ZVNpemUgPSBlc3RpbWF0ZVNpemUodmFsdWUpOwogICAgIGF1
dG8gaW5kZXhTaXplID0gZXN0aW1hdGVTaXplKCpvYmplY3RTdG9yZUluZm8sIGluZGV4S2V5cywg
a2V5U2l6ZSk7CiAgICAgYXV0byB0YXNrU2l6ZSA9IGRlZmF1bHRXcml0ZU9wZXJhdGlvbkNvc3Qg
KyBrZXlTaXplICsgdmFsdWVTaXplICsgaW5kZXhTaXplOwogCiAgICAgTE9HKEluZGV4ZWREQiwg
IlVuaXF1ZUlEQkRhdGFiYXNlOjpwdXRPckFkZCBxdW90YSBjaGVjayB3aXRoIHRhc2sgc2l6ZTog
JSIgUFJJdTY0ICIga2V5IHNpemU6ICUiIFBSSXU2NCAiIHZhbHVlIHNpemU6ICUiIFBSSXU2NCAi
IGluZGV4IHNpemU6ICUiIFBSSXU2NCwgdGFza1NpemUsIGtleVNpemUsIHZhbHVlU2l6ZSwgaW5k
ZXhTaXplKTsKKyAgICBtX21hbmFnZXItPnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2lu
KCksIHRhc2tTaXplLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgcmVxdWVz
dERhdGEsIHVzZWRLZXksIHZhbHVlLCBvdmVyd3JpdGVNb2RlLCBjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spLCB1c2VkS2V5SXNHZW5lcmF0ZWQsIGluZGV4S2V5cywgb2JqZWN0U3RvcmVJbmZv
ID0gKm9iamVjdFN0b3JlSW5mb10oYm9vbCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAgaWYg
KCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFs
aWRTdGF0ZUVycm9yLCAiRGF0YWJhc2UgaXMgY2xvc2VkIiB9LCB1c2VkS2V5KTsKIAotICAgIGlm
IChtX3NlcnZlci5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCB0YXNrU2l6ZSkg
PT0gU3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb246OkRlbnkpIHsKLSAgICAgICAgY2FsbGJh
Y2soSURCRXJyb3IgeyBRdW90YUV4Y2VlZGVkRXJyb3IsIHF1b3RhRXJyb3JNZXNzYWdlTmFtZSgi
UHV0T3JBZGQiKSB9LCB1c2VkS2V5KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICAgICAg
cHV0T3JBZGRBZnRlclNwYWNlQ2hlY2socmVxdWVzdERhdGEsIHVzZWRLZXksIHZhbHVlLCBvdmVy
d3JpdGVNb2RlLCBXVEZNb3ZlKGNhbGxiYWNrKSwgdXNlZEtleUlzR2VuZXJhdGVkLCBpbmRleEtl
eXMsIG9iamVjdFN0b3JlSW5mbywgZ3JhbnRlZCA/IFNwYWNlQ2hlY2tSZXN1bHQ6OlBhc3MgOiBT
cGFjZUNoZWNrUmVzdWx0OjpGYWlsKTsKKyAgICB9KTsKK30KKwordm9pZCBVbmlxdWVJREJEYXRh
YmFzZTo6cHV0T3JBZGRBZnRlclNwYWNlQ2hlY2soY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVl
c3REYXRhLCBjb25zdCBJREJLZXlEYXRhJiBrZXlEYXRhLCBjb25zdCBJREJWYWx1ZSYgdmFsdWUs
IEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlIG92ZXJ3cml0ZU1vZGUsIEtleURh
dGFDYWxsYmFjayBjYWxsYmFjaywgYm9vbCBpc0tleUdlbmVyYXRlZCwgY29uc3QgSW5kZXhJRFRv
SW5kZXhLZXlNYXAmIGluZGV4S2V5cywgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiBvYmplY3RT
dG9yZUluZm8sIFNwYWNlQ2hlY2tSZXN1bHQgc3BhY2VDaGVja1Jlc3VsdCkKK3sKKyAgICBBU1NF
UlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9kYXRhYmFzZUluZm8pOworCisgICAg
aWYgKCFtX2JhY2tpbmdTdG9yZSkKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsg
SW52YWxpZFN0YXRlRXJyb3IsICJCYWNraW5nIHN0b3JlIGlzIGNsb3NlZCIgfSwga2V5RGF0YSk7
CisKKyAgICB1aW50NjRfdCBrZXlOdW1iZXIgPSBpc0tleUdlbmVyYXRlZCA/IGtleURhdGEubnVt
YmVyKCkgOiAwOworICAgIGF1dG8gb2JqZWN0U3RvcmVJZGVudGlmaWVyID0gb2JqZWN0U3RvcmVJ
bmZvLmlkZW50aWZpZXIoKTsKKyAgICBhdXRvIHRyYW5zYWN0aW9uSWRlbnRpZmllciA9IHJlcXVl
c3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpOworICAgIGF1dG8gZ2VuZXJhdGVkS2V5UmVz
ZXR0ZXIgPSBtYWtlU2NvcGVFeGl0KFt0aGlzLCB0cmFuc2FjdGlvbklkZW50aWZpZXIsIG9iamVj
dFN0b3JlSWRlbnRpZmllciwgJmtleU51bWJlciwgJmlzS2V5R2VuZXJhdGVkXSgpIHsKKyAgICAg
ICAgaWYgKGlzS2V5R2VuZXJhdGVkKQorICAgICAgICAgICAgbV9iYWNraW5nU3RvcmUtPnJldmVy
dEdlbmVyYXRlZEtleU51bWJlcih0cmFuc2FjdGlvbklkZW50aWZpZXIsIG9iamVjdFN0b3JlSWRl
bnRpZmllciwga2V5TnVtYmVyKTsKKyAgICB9KTsKIAorICAgIGlmIChzcGFjZUNoZWNrUmVzdWx0
ICE9IFNwYWNlQ2hlY2tSZXN1bHQ6OlBhc3MpCisgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJF
cnJvciB7IFF1b3RhRXhjZWVkZWRFcnJvciwgcXVvdGFFcnJvck1lc3NhZ2VOYW1lKCJQdXRPckFk
ZCIpIH0sIGtleURhdGEpOwogICAgIC8vIElmIGEgcmVjb3JkIGFscmVhZHkgZXhpc3RzIGluIHN0
b3JlLCB0aGVuIHJlbW92ZSB0aGUgcmVjb3JkIGZyb20gc3RvcmUgdXNpbmcgdGhlIHN0ZXBzIGZv
ciBkZWxldGluZyByZWNvcmRzIGZyb20gYW4gb2JqZWN0IHN0b3JlLgotICAgIC8vIFRoaXMgaXMg
aW1wb3J0YW50IGJlY2F1c2UgZm9ybWFsbHkgZGVsZXRpbmcgaXQgZnJvbSBmcm9tIHRoZSBvYmpl
Y3Qgc3RvcmUgYWxzbyByZW1vdmVzIGl0IGZyb20gdGhlIGFwcHJvcHJpYXRlIGluZGV4ZXMuCi0g
ICAgZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+ZGVsZXRlUmFuZ2UodHJhbnNhY3Rpb25JZGVudGlm
aWVyLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVzZWRLZXkpOwotICAgIGlmICghZXJyb3IuaXNO
dWxsKCkpIHsKLSAgICAgICAgY2FsbGJhY2soZXJyb3IsIHVzZWRLZXkpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQorICAgIC8vIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UgZm9ybWFsbHkgZGVs
ZXRpbmcgaXQgZnJvbSB0aGUgb2JqZWN0IHN0b3JlIGFsc28gcmVtb3ZlcyBpdCBmcm9tIHRoZSBh
cHByb3ByaWF0ZSBpbmRleGVzLgorICAgIElEQkVycm9yIGVycm9yID0gbV9iYWNraW5nU3RvcmUt
PmRlbGV0ZVJhbmdlKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgb2JqZWN0U3RvcmVJZGVudGlmaWVy
LCBrZXlEYXRhKTsKKyAgICBpZiAoIWVycm9yLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gY2Fs
bGJhY2soZXJyb3IsIGtleURhdGEpOwogCi0gICAgZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+YWRk
UmVjb3JkKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgKm9iamVjdFN0b3JlSW5mbywgdXNlZEtleSwg
aW5kZXhLZXlzLCB2YWx1ZSk7Ci0gICAgaWYgKCFlcnJvci5pc051bGwoKSkgewotICAgICAgICBj
YWxsYmFjayhlcnJvciwgdXNlZEtleSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgZXJy
b3IgPSBtX2JhY2tpbmdTdG9yZS0+YWRkUmVjb3JkKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgb2Jq
ZWN0U3RvcmVJbmZvLCBrZXlEYXRhLCBpbmRleEtleXMsIHZhbHVlKTsKKyAgICBpZiAoIWVycm9y
LmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gY2FsbGJhY2soZXJyb3IsIGtleURhdGEpOwogCi0g
ICAgaWYgKG92ZXJ3cml0ZU1vZGUgIT0gSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1v
ZGU6Ok92ZXJ3cml0ZUZvckN1cnNvciAmJiBvYmplY3RTdG9yZUluZm8tPmF1dG9JbmNyZW1lbnQo
KSAmJiBrZXlEYXRhLnR5cGUoKSA9PSBJbmRleGVkREI6OktleVR5cGU6Ok51bWJlcikKKyAgICBp
ZiAob3ZlcndyaXRlTW9kZSAhPSBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZTo6
T3ZlcndyaXRlRm9yQ3Vyc29yICYmIG9iamVjdFN0b3JlSW5mby5hdXRvSW5jcmVtZW50KCkgJiYg
a2V5RGF0YS50eXBlKCkgPT0gSW5kZXhlZERCOjpLZXlUeXBlOjpOdW1iZXIpCiAgICAgICAgIGVy
cm9yID0gbV9iYWNraW5nU3RvcmUtPm1heWJlVXBkYXRlS2V5R2VuZXJhdG9yTnVtYmVyKHRyYW5z
YWN0aW9uSWRlbnRpZmllciwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBrZXlEYXRhLm51bWJlcigp
KTsKIAogICAgIGdlbmVyYXRlZEtleVJlc2V0dGVyLnJlbGVhc2UoKTsKLSAgICBjYWxsYmFjayhl
cnJvciwgdXNlZEtleSk7CisgICAgY2FsbGJhY2soZXJyb3IsIGtleURhdGEpOwogfQogCi12b2lk
IFVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVl
c3REYXRhLCBjb25zdCBJREJHZXRSZWNvcmREYXRhJiBnZXRSZWNvcmREYXRhLCBHZXRSZXN1bHRD
YWxsYmFjayBjYWxsYmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmdldFJlY29yZChjb25z
dCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkdldFJlY29yZERhdGEmIGdl
dFJlY29yZERhdGEsIEdldFJlc3VsdENhbGxiYWNrIGNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0
IHNwYWNlQ2hlY2tSZXN1bHQpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAg
TE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRSZWNvcmQiKTsKIAorICAgIGlm
IChzcGFjZUNoZWNrUmVzdWx0ID09IFNwYWNlQ2hlY2tSZXN1bHQ6OlVua25vd24pIHsKKyAgICAg
ICAgaWYgKCFtX21hbmFnZXIpCisgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3Ig
eyBJbnZhbGlkU3RhdGVFcnJvciB9LCBJREJHZXRSZXN1bHQgeyB9KTsKKworICAgICAgICBtX21h
bmFnZXItPnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIDAsIFt0aGlzLCB3ZWFr
VGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCByZXF1ZXN0RGF0YSwgZ2V0UmVjb3JkRGF0YSwgY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICAg
ICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElE
QkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJEYXRhYmFzZSBpcyBjbG9zZWQiIH0sIElEQkdl
dFJlc3VsdCB7IH0pOworCisgICAgICAgICAgICBnZXRSZWNvcmQocmVxdWVzdERhdGEsIGdldFJl
Y29yZERhdGEsIFdURk1vdmUoY2FsbGJhY2spLCBncmFudGVkID8gU3BhY2VDaGVja1Jlc3VsdDo6
UGFzcyA6IFNwYWNlQ2hlY2tSZXN1bHQ6OkZhaWwpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIEFTU0VSVChzcGFjZUNoZWNrUmVzdWx0ID09IFNwYWNlQ2hlY2tS
ZXN1bHQ6OlBhc3MpOworICAgIGlmICghbV9iYWNraW5nU3RvcmUpCisgICAgICAgIHJldHVybiBj
YWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiQmFja2luZyBzdG9yZSBpcyBj
bG9zZWQiIH0sIElEQkdldFJlc3VsdCB7IH0pOworCiAgICAgSURCR2V0UmVzdWx0IHJlc3VsdDsK
ICAgICBJREJFcnJvciBlcnJvcjsKIAotICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CiAgICAg
aWYgKHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciA9IHJlcXVlc3REYXRhLmluZGV4SWRlbnRpZmll
cigpKQogICAgICAgICBlcnJvciA9IG1fYmFja2luZ1N0b3JlLT5nZXRJbmRleFJlY29yZChyZXF1
ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSwgcmVxdWVzdERhdGEub2JqZWN0U3RvcmVJ
ZGVudGlmaWVyKCksIGluZGV4SWRlbnRpZmllciwgcmVxdWVzdERhdGEuaW5kZXhSZWNvcmRUeXBl
KCksIGdldFJlY29yZERhdGEua2V5UmFuZ2VEYXRhLCByZXN1bHQpOwogICAgIGVsc2UKQEAgLTgw
OCw0NyArOTc0LDExMCBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRSZWNvcmQoY29uc3Qg
SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJHZQogICAgIGNhbGxiYWNrKGVy
cm9yLCByZXN1bHQpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRBbGxSZWNvcmRz
KGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCR2V0QWxsUmVjb3Jk
c0RhdGEmIGdldEFsbFJlY29yZHNEYXRhLCBHZXRBbGxSZXN1bHRzQ2FsbGJhY2sgY2FsbGJhY2sp
Cit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRBbGxSZWNvcmRzKGNvbnN0IElEQlJlcXVlc3RE
YXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCR2V0QWxsUmVjb3Jkc0RhdGEmIGdldEFsbFJlY29y
ZHNEYXRhLCBHZXRBbGxSZXN1bHRzQ2FsbGJhY2sgY2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQg
c3BhY2VDaGVja1Jlc3VsdCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBM
T0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6OmdldEFsbFJlY29yZHMiKTsKIAotICAg
IEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CisgICAgaWYgKHNwYWNlQ2hlY2tSZXN1bHQgPT0gU3Bh
Y2VDaGVja1Jlc3VsdDo6VW5rbm93bikgeworICAgICAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAg
ICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yIH0sIElE
QkdldEFsbFJlc3VsdCB7IH0pOworCisgICAgICAgIG1fbWFuYWdlci0+cmVxdWVzdFNwYWNlKG1f
aWRlbnRpZmllci5vcmlnaW4oKSwgMCwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlz
IH0sIHJlcXVlc3REYXRhLCBnZXRBbGxSZWNvcmRzRGF0YSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKV0oYm9vbCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghd2Vha1Ro
aXMpCisgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0
YXRlRXJyb3IsICJEYXRhYmFzZSBpcyBjbG9zZWQiIH0sIElEQkdldEFsbFJlc3VsdCB7IH0pOwor
CisgICAgICAgICAgICBnZXRBbGxSZWNvcmRzKHJlcXVlc3REYXRhLCBnZXRBbGxSZWNvcmRzRGF0
YSwgV1RGTW92ZShjYWxsYmFjayksIGdyYW50ZWQgPyBTcGFjZUNoZWNrUmVzdWx0OjpQYXNzIDog
U3BhY2VDaGVja1Jlc3VsdDo6RmFpbCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgQVNTRVJUKHNwYWNlQ2hlY2tSZXN1bHQgPT0gU3BhY2VDaGVja1Jlc3VsdDo6
UGFzcyk7CisgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNr
KElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJCYWNraW5nIHN0b3JlIGlzIGNsb3NlZCIg
fSwgSURCR2V0QWxsUmVzdWx0IHsgfSk7CisKICAgICBJREJHZXRBbGxSZXN1bHQgcmVzdWx0Owog
ICAgIGF1dG8gZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+Z2V0QWxsUmVjb3JkcyhyZXF1ZXN0RGF0
YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSwgZ2V0QWxsUmVjb3Jkc0RhdGEsIHJlc3VsdCk7CiAK
ICAgICBjYWxsYmFjayhlcnJvciwgcmVzdWx0KTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFz
ZTo6Z2V0Q291bnQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJL
ZXlSYW5nZURhdGEmIHJhbmdlLCBDb3VudENhbGxiYWNrIGNhbGxiYWNrKQordm9pZCBVbmlxdWVJ
REJEYXRhYmFzZTo6Z2V0Q291bnQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBj
b25zdCBJREJLZXlSYW5nZURhdGEmIHJhbmdlLCBDb3VudENhbGxiYWNrIGNhbGxiYWNrLCBTcGFj
ZUNoZWNrUmVzdWx0IHNwYWNlQ2hlY2tSZXN1bHQpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJl
YWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRDb3VudCIp
OwogCi0gICAgQVNTRVJUKG1fYmFja2luZ1N0b3JlKTsKKyAgICBpZiAoc3BhY2VDaGVja1Jlc3Vs
dCA9PSBTcGFjZUNoZWNrUmVzdWx0OjpVbmtub3duKSB7CisgICAgICAgIGlmICghbV9tYW5hZ2Vy
KQorICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJy
b3IgfSwgMCk7CisKKyAgICAgICAgbV9tYW5hZ2VyLT5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVy
Lm9yaWdpbigpLCAwLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgcmVxdWVz
dERhdGEsIHJhbmdlLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIGdyYW50ZWQp
IG11dGFibGUgeworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkRhdGFiYXNlIGlz
IGNsb3NlZCIgfSwgMCk7CisKKyAgICAgICAgICAgIGdldENvdW50KHJlcXVlc3REYXRhLCByYW5n
ZSwgV1RGTW92ZShjYWxsYmFjayksIGdyYW50ZWQgPyBTcGFjZUNoZWNrUmVzdWx0OjpQYXNzIDog
U3BhY2VDaGVja1Jlc3VsdDo6RmFpbCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgQVNTRVJUKHNwYWNlQ2hlY2tSZXN1bHQgPT0gU3BhY2VDaGVja1Jlc3VsdDo6
UGFzcyk7CisgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNr
KElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJCYWNraW5nIHN0b3JlIGlzIGNsb3NlZCIg
fSwgMCk7CisKICAgICB1aW50NjRfdCBjb3VudCA9IDA7CiAgICAgYXV0byBlcnJvciA9IG1fYmFj
a2luZ1N0b3JlLT5nZXRDb3VudChyZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSwg
cmVxdWVzdERhdGEub2JqZWN0U3RvcmVJZGVudGlmaWVyKCksIHJlcXVlc3REYXRhLmluZGV4SWRl
bnRpZmllcigpLCByYW5nZSwgY291bnQpOwogCiAgICAgY2FsbGJhY2soZXJyb3IsIGNvdW50KTsK
IH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlUmVjb3JkKGNvbnN0IElEQlJlcXVl
c3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5nZURhdGEs
IEVycm9yQ2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVS
ZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXlSYW5n
ZURhdGEmIGtleVJhbmdlRGF0YSwgRXJyb3JDYWxsYmFjayBjYWxsYmFjaywgU3BhY2VDaGVja1Jl
c3VsdCBzcGFjZUNoZWNrUmVzdWx0KQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwog
ICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlUmVjb3JkIik7CiAK
LSAgICBBU1NFUlQobV9iYWNraW5nU3RvcmUpOworICAgIGlmIChzcGFjZUNoZWNrUmVzdWx0ID09
IFNwYWNlQ2hlY2tSZXN1bHQ6OlVua25vd24pIHsKKyAgICAgICAgaWYgKCFtX21hbmFnZXIpCisg
ICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciB9
KTsKKworICAgICAgICBtX21hbmFnZXItPnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2lu
KCksIDAsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCByZXF1ZXN0RGF0YSwg
a2V5UmFuZ2VEYXRhLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIGdyYW50ZWQp
IG11dGFibGUgeworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkRhdGFiYXNlIGlz
IGNsb3NlZCIgfSk7CisKKyAgICAgICAgICAgIGRlbGV0ZVJlY29yZChyZXF1ZXN0RGF0YSwga2V5
UmFuZ2VEYXRhLCBXVEZNb3ZlKGNhbGxiYWNrKSwgZ3JhbnRlZCA/IFNwYWNlQ2hlY2tSZXN1bHQ6
OlBhc3MgOiBTcGFjZUNoZWNrUmVzdWx0OjpGYWlsKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQoc3BhY2VDaGVja1Jlc3VsdCA9PSBTcGFjZUNoZWNr
UmVzdWx0OjpQYXNzKTsKKyAgICBpZiAoIW1fYmFja2luZ1N0b3JlKQorICAgICAgICByZXR1cm4g
Y2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkJhY2tpbmcgc3RvcmUgaXMg
Y2xvc2VkIiB9KTsKKwogICAgIGF1dG8gZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+ZGVsZXRlUmFu
Z2UocmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCksIHJlcXVlc3REYXRhLm9iamVj
dFN0b3JlSWRlbnRpZmllcigpLCBrZXlSYW5nZURhdGEpOwogCiAgICAgY2FsbGJhY2soZXJyb3Ip
OwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuQ3Vyc29yKGNvbnN0IElEQlJlcXVl
c3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCQ3Vyc29ySW5mbyYgaW5mbywgR2V0UmVzdWx0
Q2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuQ3Vyc29yKGNv
bnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCQ3Vyc29ySW5mbyYgaW5m
bywgR2V0UmVzdWx0Q2FsbGJhY2sgY2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgc3BhY2VDaGVj
a1Jlc3VsdCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5kZXhl
ZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6Om9wZW5DdXJzb3IiKTsKIAotICAgIEFTU0VSVChtX2Jh
Y2tpbmdTdG9yZSk7CisgICAgaWYgKHNwYWNlQ2hlY2tSZXN1bHQgPT0gU3BhY2VDaGVja1Jlc3Vs
dDo6VW5rbm93bikgeworICAgICAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAgICAgICAgIHJldHVy
biBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yIH0sIElEQkdldFJlc3VsdCB7
IH0pOworCisgICAgICAgIG1fbWFuYWdlci0+cmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmln
aW4oKSwgMCwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHJlcXVlc3REYXRh
LCBpbmZvLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIGdyYW50ZWQpIG11dGFi
bGUgeworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICByZXR1cm4g
Y2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkRhdGFiYXNlIG9yIHRyYW5z
YWN0aW9uIGlzIGNsb3NlZCIgfSwgSURCR2V0UmVzdWx0IHsgfSk7CisKKyAgICAgICAgICAgIG9w
ZW5DdXJzb3IocmVxdWVzdERhdGEsIGluZm8sIFdURk1vdmUoY2FsbGJhY2spLCBncmFudGVkID8g
U3BhY2VDaGVja1Jlc3VsdDo6UGFzcyA6IFNwYWNlQ2hlY2tSZXN1bHQ6OkZhaWwpOworICAgICAg
ICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChzcGFjZUNoZWNrUmVz
dWx0ID09IFNwYWNlQ2hlY2tSZXN1bHQ6OlBhc3MpOworICAgIGlmICghbV9iYWNraW5nU3RvcmUp
CisgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAi
QmFja2luZyBzdG9yZSBpcyBjbG9zZWQiIH0sIElEQkdldFJlc3VsdCB7IH0pOwogCiAgICAgSURC
R2V0UmVzdWx0IHJlc3VsdDsKICAgICBhdXRvIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPm9wZW5D
dXJzb3IocmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCksIGluZm8sIHJlc3VsdCk7
CkBAIC04NTYsMTIgKzEwODUsMjcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6b3BlbkN1cnNv
cihjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkMKICAgICBjYWxs
YmFjayhlcnJvciwgcmVzdWx0KTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6aXRlcmF0
ZUN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkl0ZXJh
dGVDdXJzb3JEYXRhJiBkYXRhLCBHZXRSZXN1bHRDYWxsYmFjayBjYWxsYmFjaykKK3ZvaWQgVW5p
cXVlSURCRGF0YWJhc2U6Oml0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVl
c3REYXRhLCBjb25zdCBJREJJdGVyYXRlQ3Vyc29yRGF0YSYgZGF0YSwgR2V0UmVzdWx0Q2FsbGJh
Y2sgY2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgc3BhY2VDaGVja1Jlc3VsdCkKIHsKICAgICBB
U1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0
YWJhc2U6Oml0ZXJhdGVDdXJzb3IiKTsKIAotICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7Cisg
ICAgaWYgKHNwYWNlQ2hlY2tSZXN1bHQgPT0gU3BhY2VDaGVja1Jlc3VsdDo6VW5rbm93bikgewor
ICAgICAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJF
cnJvciB7IEludmFsaWRTdGF0ZUVycm9yIH0sIElEQkdldFJlc3VsdCB7IH0pOworCisgICAgICAg
IG1fbWFuYWdlci0+cmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwgMCwgW3RoaXMs
IHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHJlcXVlc3REYXRhLCBkYXRhLCBjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIGdyYW50ZWQpIG11dGFibGUgeworICAgICAgICAg
ICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJy
b3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkRhdGFiYXNlIG9yIHRyYW5zYWN0aW9uIGlzIGNsb3Nl
ZCIgfSwgSURCR2V0UmVzdWx0IHsgfSk7CisKKyAgICAgICAgICAgIGl0ZXJhdGVDdXJzb3IocmVx
dWVzdERhdGEsIGRhdGEsIFdURk1vdmUoY2FsbGJhY2spLCBncmFudGVkID8gU3BhY2VDaGVja1Jl
c3VsdDo6UGFzcyA6IFNwYWNlQ2hlY2tSZXN1bHQ6OkZhaWwpOworICAgICAgICB9KTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChzcGFjZUNoZWNrUmVzdWx0ID09IFNwYWNl
Q2hlY2tSZXN1bHQ6OlBhc3MpOworICAgIGlmICghbV9iYWNraW5nU3RvcmUpCisgICAgICAgIHJl
dHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiQmFja2luZyBzdG9y
ZSBpcyBjbG9zZWQiIH0sIElEQkdldFJlc3VsdCB7IH0pOwogCiAgICAgSURCR2V0UmVzdWx0IHJl
c3VsdDsKICAgICBhdXRvIHRyYW5zYWN0aW9uSWRlbnRpZmllciA9IHJlcXVlc3REYXRhLnRyYW5z
YWN0aW9uSWRlbnRpZmllcigpOwpAQCAtODcxLDEzICsxMTE1LDMwIEBAIHZvaWQgVW5pcXVlSURC
RGF0YWJhc2U6Oml0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRh
LCBjb25zdCBJCiAgICAgY2FsbGJhY2soZXJyb3IsIHJlc3VsdCk7CiB9CiAKLXZvaWQgVW5pcXVl
SURCRGF0YWJhc2U6OmNvbW1pdFRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rp
b24mIHRyYW5zYWN0aW9uLCBFcnJvckNhbGxiYWNrIGNhbGxiYWNrKQordm9pZCBVbmlxdWVJREJE
YXRhYmFzZTo6Y29tbWl0VHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYg
dHJhbnNhY3Rpb24sIEVycm9yQ2FsbGJhY2sgY2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgc3Bh
Y2VDaGVja1Jlc3VsdCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMT0co
SW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6OmNvbW1pdFRyYW5zYWN0aW9uIC0gJXMiLCB0
cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKIAorICAgIGlmIChzcGFjZUNoZWNrUmVzdWx0ID09IFNwYWNlQ2hlY2tSZXN1bHQ6OlVu
a25vd24pIHsKKyAgICAgICAgaWYgKCFtX21hbmFnZXIpCisgICAgICAgICAgICByZXR1cm4gY2Fs
bGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciB9KTsKKworICAgICAgICBtX21hbmFn
ZXItPnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIDAsIFt0aGlzLCB3ZWFrVGhp
cyA9IFdlYWtQdHIgeyAqdGhpcyB9LCB3ZWFrVHJhbnNhY3Rpb24gPSBXZWFrUHRyIHsgdHJhbnNh
Y3Rpb24gfSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBncmFudGVkKSBtdXRh
YmxlIHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMgfHwgIXdlYWtUcmFuc2FjdGlvbikKKyAg
ICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJv
ciwgIkRhdGFiYXNlIG9yIHRyYW5zYWN0aW9uIGlzIGNsb3NlZCIgfSk7CisKKyAgICAgICAgICAg
IGNvbW1pdFRyYW5zYWN0aW9uKCp3ZWFrVHJhbnNhY3Rpb24sIFdURk1vdmUoY2FsbGJhY2spLCBn
cmFudGVkID8gU3BhY2VDaGVja1Jlc3VsdDo6UGFzcyA6IFNwYWNlQ2hlY2tSZXN1bHQ6OkZhaWwp
OworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChzcGFj
ZUNoZWNrUmVzdWx0ID09IFNwYWNlQ2hlY2tSZXN1bHQ6OlBhc3MpOwogICAgIEFTU0VSVCh0cmFu
c2FjdGlvbi5kYXRhYmFzZUNvbm5lY3Rpb24oKS5kYXRhYmFzZSgpID09IHRoaXMpOwotICAgIEFT
U0VSVChtX2JhY2tpbmdTdG9yZSk7CisKKyAgICBpZiAoIW1fYmFja2luZ1N0b3JlKQorICAgICAg
ICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkJhY2tpbmcg
c3RvcmUgaXMgY2xvc2VkIiB9KTsKKwogICAgIGF1dG8gdGFrZW5UcmFuc2FjdGlvbiA9IG1faW5Q
cm9ncmVzc1RyYW5zYWN0aW9ucy50YWtlKHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCkp
OwogICAgIGlmICghdGFrZW5UcmFuc2FjdGlvbikgewogICAgICAgICBpZiAoIW1fb3BlbkRhdGFi
YXNlQ29ubmVjdGlvbnMuY29udGFpbnMoJnRyYW5zYWN0aW9uLmRhdGFiYXNlQ29ubmVjdGlvbigp
KSkKQEAgLTg5MywxMSArMTE1NCwyNSBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjb21taXRU
cmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdAogICAgIHRy
YW5zYWN0aW9uQ29tcGxldGVkKFdURk1vdmUodGFrZW5UcmFuc2FjdGlvbikpOwogfQogCi12b2lk
IFVuaXF1ZUlEQkRhdGFiYXNlOjphYm9ydFRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJh
bnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBFcnJvckNhbGxiYWNrIGNhbGxiYWNrKQordm9pZCBVbmlx
dWVJREJEYXRhYmFzZTo6YWJvcnRUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0
aW9uJiB0cmFuc2FjdGlvbiwgRXJyb3JDYWxsYmFjayBjYWxsYmFjaywgU3BhY2VDaGVja1Jlc3Vs
dCBzcGFjZUNoZWNrUmVzdWx0KQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAg
IExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6YWJvcnRUcmFuc2FjdGlvbiAtICVz
IiwgdHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKS5sb2dnaW5nU3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7CiAKKyAgICBpZiAoc3BhY2VDaGVja1Jlc3VsdCA9PSBTcGFjZUNoZWNrUmVzdWx0
OjpVbmtub3duKSB7CisgICAgICAgIGlmICghbV9tYW5hZ2VyKQorICAgICAgICAgICAgcmV0dXJu
IGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7CisKKyAgICAgICAgbV9t
YW5hZ2VyLT5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCAwLCBbdGhpcywgd2Vh
a1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgd2Vha1RyYW5zYWN0aW9uID0gV2Vha1B0ciB7IHRy
YW5zYWN0aW9uIH0sIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgZ3JhbnRlZCkg
bXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICF3ZWFrVHJhbnNhY3Rpb24p
CisgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRl
RXJyb3IsICJEYXRhYmFzZSBvciB0cmFuc2FjdGlvbiBpcyBjbG9zZWQiIH0pOworCisgICAgICAg
ICAgICBhYm9ydFRyYW5zYWN0aW9uKCp3ZWFrVHJhbnNhY3Rpb24sIFdURk1vdmUoY2FsbGJhY2sp
LCBncmFudGVkID8gU3BhY2VDaGVja1Jlc3VsdDo6UGFzcyA6IFNwYWNlQ2hlY2tSZXN1bHQ6OkZh
aWwpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChz
cGFjZUNoZWNrUmVzdWx0ID09IFNwYWNlQ2hlY2tSZXN1bHQ6OlBhc3MpOwogICAgIEFTU0VSVCh0
cmFuc2FjdGlvbi5kYXRhYmFzZUNvbm5lY3Rpb24oKS5kYXRhYmFzZSgpID09IHRoaXMpOwogCiAg
ICAgYXV0byB0YWtlblRyYW5zYWN0aW9uID0gbV9pblByb2dyZXNzVHJhbnNhY3Rpb25zLnRha2Uo
dHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSk7CkBAIC05MjUsNyArMTIwMCwxMSBAQCB2
b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjphYm9ydFRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNl
VHJhbnNhY3Rpb24mIHRyYW5zYWN0aQogICAgICAgICBtX2RhdGFiYXNlSW5mbyA9IG1ha2VVbmlx
dWU8SURCRGF0YWJhc2VJbmZvPigqbV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24tPm9yaWdpbmFs
RGF0YWJhc2VJbmZvKCkpOwogICAgIH0KIAotICAgIGF1dG8gZXJyb3IgPSBtX2JhY2tpbmdTdG9y
ZS0+YWJvcnRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbklkZW50aWZpZXIpOworICAgIElEQkVycm9y
IGVycm9yOworICAgIGlmICghbV9iYWNraW5nU3RvcmUpCisgICAgICAgIGVycm9yID0gSURCRXJy
b3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkJhY2tpbmcgc3RvcmUgaXMgY2xvc2VkIiB9OworICAg
IGVsc2UKKyAgICAgICAgZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+YWJvcnRUcmFuc2FjdGlvbih0
cmFuc2FjdGlvbklkZW50aWZpZXIpOwogCiAgICAgY2FsbGJhY2soZXJyb3IpOwogICAgIHRyYW5z
YWN0aW9uQ29tcGxldGVkKFdURk1vdmUodGFrZW5UcmFuc2FjdGlvbikpOwpAQCAtMTIyNSw2ICsx
NTA0LDExIEBAIGJvb2wgVW5pcXVlSURCRGF0YWJhc2U6OnRyeUNsb3NlKCkKICAgICBjbG9zZSgp
OwogICAgIHJldHVybiB0cnVlOwogfQorICAgIAorYm9vbCBVbmlxdWVJREJEYXRhYmFzZTo6aGFz
RGF0YUluTWVtb3J5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9iYWNraW5nU3RvcmUgPyBtX2Jh
Y2tpbmdTdG9yZS0+aXNFcGhlbWVyYWwoKSA6IGZhbHNlOworfQogCiBSZWZQdHI8U2VydmVyT3Bl
bkRCUmVxdWVzdD4gVW5pcXVlSURCRGF0YWJhc2U6OnRha2VOZXh0UnVubmFibGVSZXF1ZXN0KFJl
cXVlc3RUeXBlIHJlcXVlc3RUeXBlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaAppbmRleCBiMmE3
NDE3ZjljODE5Y2ZjMjQxNDZjZTVmYjVjZjVkMjYxMjg1MDgwLi43ODgwZjY2NWVhODdlMDVmY2Jh
ZGMzZDFkMDc0NDYxOWJlMDM5MjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaApAQCAtNTksOCAr
NTksOCBAQCBlbnVtIGNsYXNzIEluZGV4UmVjb3JkVHlwZSA6IGJvb2w7CiBuYW1lc3BhY2UgSURC
U2VydmVyIHsKIAogY2xhc3MgSURCQ29ubmVjdGlvblRvQ2xpZW50OwotY2xhc3MgSURCU2VydmVy
OwogY2xhc3MgVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uOworY2xhc3MgVW5pcXVlSURCRGF0
YWJhc2VNYW5hZ2VyOwogCiB0eXBlZGVmIEZ1bmN0aW9uPHZvaWQoY29uc3QgSURCRXJyb3ImKT4g
RXJyb3JDYWxsYmFjazsKIHR5cGVkZWYgRnVuY3Rpb248dm9pZChjb25zdCBJREJFcnJvciYsIGNv
bnN0IElEQktleURhdGEmKT4gS2V5RGF0YUNhbGxiYWNrOwpAQCAtNzEsNTQgKzcxLDYyIEBAIHR5
cGVkZWYgRnVuY3Rpb248dm9pZChjb25zdCBJREJFcnJvciYsIHVpbnQ2NF90KT4gQ291bnRDYWxs
YmFjazsKIGNsYXNzIFVuaXF1ZUlEQkRhdGFiYXNlIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFVu
aXF1ZUlEQkRhdGFiYXNlPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
Ci0gICAgVW5pcXVlSURCRGF0YWJhc2UoSURCU2VydmVyJiwgY29uc3QgSURCRGF0YWJhc2VJZGVu
dGlmaWVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgVW5pcXVlSURCRGF0YWJhc2UoVW5pcXVlSURC
RGF0YWJhc2VNYW5hZ2VyJiwgY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJik7CiAgICAgVW5p
cXVlSURCRGF0YWJhc2UoVW5pcXVlSURCRGF0YWJhc2UmKSA9IGRlbGV0ZTsKICAgICBXRUJDT1JF
X0VYUE9SVCB+VW5pcXVlSURCRGF0YWJhc2UoKTsKIAotICAgIHZvaWQgb3BlbkRhdGFiYXNlQ29u
bmVjdGlvbihJREJDb25uZWN0aW9uVG9DbGllbnQmLCBjb25zdCBJREJSZXF1ZXN0RGF0YSYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgb3BlbkRhdGFiYXNlQ29ubmVjdGlvbihJREJDb25uZWN0
aW9uVG9DbGllbnQmLCBjb25zdCBJREJSZXF1ZXN0RGF0YSYpOwogCiAgICAgY29uc3QgSURCRGF0
YWJhc2VJbmZvJiBpbmZvKCkgY29uc3Q7Ci0gICAgSURCU2VydmVyJiBzZXJ2ZXIoKSB7IHJldHVy
biBtX3NlcnZlcjsgfQorICAgIFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlciogbWFuYWdlcigpOwog
ICAgIGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0
dXJuIG1faWRlbnRpZmllcjsgfQogCi0gICAgdm9pZCBjcmVhdGVPYmplY3RTdG9yZShVbmlxdWVJ
REJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiwgRXJyb3JD
YWxsYmFjayk7Ci0gICAgdm9pZCBkZWxldGVPYmplY3RTdG9yZShVbmlxdWVJREJEYXRhYmFzZVRy
YW5zYWN0aW9uJiwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUsIEVycm9yQ2FsbGJhY2sp
OwotICAgIHZvaWQgcmVuYW1lT2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlv
biYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1l
LCBFcnJvckNhbGxiYWNrKTsKLSAgICB2b2lkIGNsZWFyT2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0
YWJhc2VUcmFuc2FjdGlvbiYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgRXJyb3JD
YWxsYmFjayk7Ci0gICAgdm9pZCBjcmVhdGVJbmRleChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0
aW9uJiwgY29uc3QgSURCSW5kZXhJbmZvJiwgRXJyb3JDYWxsYmFjayk7Ci0gICAgdm9pZCBkZWxl
dGVJbmRleChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgdWludDY0X3Qgb2JqZWN0U3Rv
cmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGluZGV4TmFtZSwgRXJyb3JDYWxsYmFjayk7Ci0g
ICAgdm9pZCByZW5hbWVJbmRleChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgdWludDY0
X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRleElkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgbmV3TmFtZSwgRXJyb3JDYWxsYmFjayk7CisgICAgZW51bSBjbGFzcyBTcGFjZUNo
ZWNrUmVzdWx0IDogdWludDhfdCB7CisgICAgICAgIFVua25vd24sCisgICAgICAgIFBhc3MsCisg
ICAgICAgIEZhaWwKKyAgICB9OworICAgIHZvaWQgY3JlYXRlT2JqZWN0U3RvcmUoVW5pcXVlSURC
RGF0YWJhc2VUcmFuc2FjdGlvbiYsIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYsIEVycm9yQ2Fs
bGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgPSBTcGFjZUNoZWNrUmVzdWx0OjpVbmtub3duKTsKKyAg
ICB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCBj
b25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSwgRXJyb3JDYWxsYmFjaywgU3BhY2VDaGVja1Jl
c3VsdCA9IFNwYWNlQ2hlY2tSZXN1bHQ6OlVua25vd24pOworICAgIHZvaWQgcmVuYW1lT2JqZWN0
U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIHVpbnQ2NF90IG9iamVjdFN0b3Jl
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lLCBFcnJvckNhbGxiYWNrLCBTcGFjZUNo
ZWNrUmVzdWx0ID0gU3BhY2VDaGVja1Jlc3VsdDo6VW5rbm93bik7CisgICAgdm9pZCBjbGVhck9i
amVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCB1aW50NjRfdCBvYmplY3RT
dG9yZUlkZW50aWZpZXIsIEVycm9yQ2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgPSBTcGFjZUNo
ZWNrUmVzdWx0OjpVbmtub3duKTsKKyAgICB2b2lkIGNyZWF0ZUluZGV4KFVuaXF1ZUlEQkRhdGFi
YXNlVHJhbnNhY3Rpb24mLCBjb25zdCBJREJJbmRleEluZm8mLCBFcnJvckNhbGxiYWNrLCBTcGFj
ZUNoZWNrUmVzdWx0ID0gU3BhY2VDaGVja1Jlc3VsdDo6VW5rbm93bik7CisgICAgdm9pZCBkZWxl
dGVJbmRleChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgdWludDY0X3Qgb2JqZWN0U3Rv
cmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGluZGV4TmFtZSwgRXJyb3JDYWxsYmFjaywgU3Bh
Y2VDaGVja1Jlc3VsdCA9IFNwYWNlQ2hlY2tSZXN1bHQ6OlVua25vd24pOworICAgIHZvaWQgcmVu
YW1lSW5kZXgoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIHVpbnQ2NF90IG9iamVjdFN0
b3JlSWRlbnRpZmllciwgdWludDY0X3QgaW5kZXhJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5l
d05hbWUsIEVycm9yQ2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgPSBTcGFjZUNoZWNrUmVzdWx0
OjpVbmtub3duKTsKICAgICB2b2lkIHB1dE9yQWRkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29u
c3QgSURCS2V5RGF0YSYsIGNvbnN0IElEQlZhbHVlJiwgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92
ZXJ3cml0ZU1vZGUsIEtleURhdGFDYWxsYmFjayk7Ci0gICAgdm9pZCBnZXRSZWNvcmQoY29uc3Qg
SURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJHZXRSZWNvcmREYXRhJiwgR2V0UmVzdWx0Q2FsbGJh
Y2spOwotICAgIHZvaWQgZ2V0QWxsUmVjb3Jkcyhjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0
IElEQkdldEFsbFJlY29yZHNEYXRhJiwgR2V0QWxsUmVzdWx0c0NhbGxiYWNrKTsKLSAgICB2b2lk
IGdldENvdW50KGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiwg
Q291bnRDYWxsYmFjayk7Ci0gICAgdm9pZCBkZWxldGVSZWNvcmQoY29uc3QgSURCUmVxdWVzdERh
dGEmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmLCBFcnJvckNhbGxiYWNrKTsKLSAgICB2b2lkIG9w
ZW5DdXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJDdXJzb3JJbmZvJiwgR2V0
UmVzdWx0Q2FsbGJhY2spOwotICAgIHZvaWQgaXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXF1ZXN0
RGF0YSYsIGNvbnN0IElEQkl0ZXJhdGVDdXJzb3JEYXRhJiwgR2V0UmVzdWx0Q2FsbGJhY2spOwot
ICAgIHZvaWQgY29tbWl0VHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYs
IEVycm9yQ2FsbGJhY2spOwotICAgIHZvaWQgYWJvcnRUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRh
YmFzZVRyYW5zYWN0aW9uJiwgRXJyb3JDYWxsYmFjayk7CisgICAgdm9pZCBwdXRPckFkZEFmdGVy
U3BhY2VDaGVjayhjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleURhdGEmLCBjb25z
dCBJREJWYWx1ZSYsIEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlLCBLZXlEYXRh
Q2FsbGJhY2ssIGJvb2wgaXNLZXlHZW5lcmF0ZWQsIGNvbnN0IEluZGV4SURUb0luZGV4S2V5TWFw
JiwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiwgU3BhY2VDaGVja1Jlc3VsdCk7CisgICAgdm9p
ZCBnZXRSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJHZXRSZWNvcmREYXRh
JiwgR2V0UmVzdWx0Q2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgPSBTcGFjZUNoZWNrUmVzdWx0
OjpVbmtub3duKTsKKyAgICB2b2lkIGdldEFsbFJlY29yZHMoY29uc3QgSURCUmVxdWVzdERhdGEm
LCBjb25zdCBJREJHZXRBbGxSZWNvcmRzRGF0YSYsIEdldEFsbFJlc3VsdHNDYWxsYmFjaywgU3Bh
Y2VDaGVja1Jlc3VsdCA9IFNwYWNlQ2hlY2tSZXN1bHQ6OlVua25vd24pOworICAgIHZvaWQgZ2V0
Q291bnQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmLCBDb3Vu
dENhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0ID0gU3BhY2VDaGVja1Jlc3VsdDo6VW5rbm93bik7
CisgICAgdm9pZCBkZWxldGVSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJL
ZXlSYW5nZURhdGEmLCBFcnJvckNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0ID0gU3BhY2VDaGVj
a1Jlc3VsdDo6VW5rbm93bik7CisgICAgdm9pZCBvcGVuQ3Vyc29yKGNvbnN0IElEQlJlcXVlc3RE
YXRhJiwgY29uc3QgSURCQ3Vyc29ySW5mbyYsIEdldFJlc3VsdENhbGxiYWNrLCBTcGFjZUNoZWNr
UmVzdWx0ID0gU3BhY2VDaGVja1Jlc3VsdDo6VW5rbm93bik7CisgICAgdm9pZCBpdGVyYXRlQ3Vy
c29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCSXRlcmF0ZUN1cnNvckRhdGEmLCBH
ZXRSZXN1bHRDYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCA9IFNwYWNlQ2hlY2tSZXN1bHQ6OlVu
a25vd24pOworICAgIHZvaWQgY29tbWl0VHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFu
c2FjdGlvbiYsIEVycm9yQ2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgPSBTcGFjZUNoZWNrUmVz
dWx0OjpVbmtub3duKTsKKyAgICB2b2lkIGFib3J0VHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJh
c2VUcmFuc2FjdGlvbiYsIEVycm9yQ2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgPSBTcGFjZUNo
ZWNrUmVzdWx0OjpVbmtub3duKTsKIAogICAgIHZvaWQgZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9u
Q2hhbmdlKFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYsIGNvbnN0IElEQlJlc291cmNlSWRl
bnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKICAgICB2b2lkIGNvbm5lY3Rpb25DbG9z
ZWRGcm9tQ2xpZW50KFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYpOwogICAgIHZvaWQgZGlk
RmlyZVZlcnNpb25DaGFuZ2VFdmVudChVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mLCBjb25z
dCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBJbmRleGVkREI6OkNv
bm5lY3Rpb25DbG9zZWRPbkJlaGFsZk9mU2VydmVyKTsKLSAgICB2b2lkIG9wZW5EQlJlcXVlc3RD
YW5jZWxsZWQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllcik7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBvcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKGNvbnN0IElE
QlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIpOwogCiAgICAgdm9pZCBlbnF1
ZXVlVHJhbnNhY3Rpb24oUmVmPFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24+JiYpOwogCi0g
ICAgdm9pZCBoYW5kbGVEZWxldGUoSURCQ29ubmVjdGlvblRvQ2xpZW50JiwgY29uc3QgSURCUmVx
dWVzdERhdGEmKTsKLSAgICB2b2lkIGltbWVkaWF0ZUNsb3NlKCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBoYW5kbGVEZWxldGUoSURCQ29ubmVjdGlvblRvQ2xpZW50JiwgY29uc3QgSURCUmVx
dWVzdERhdGEmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGltbWVkaWF0ZUNsb3NlKCk7CiAK
ICAgICBib29sIGhhc0FjdGl2ZVRyYW5zYWN0aW9ucygpIGNvbnN0OwotICAgIHZvaWQgYWJvcnRB
Y3RpdmVUcmFuc2FjdGlvbnMoKTsKLSAgICBib29sIHRyeUNsb3NlKCk7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBhYm9ydEFjdGl2ZVRyYW5zYWN0aW9ucygpOworICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgdHJ5Q2xvc2UoKTsKIAotICAgIFN0cmluZyBmaWxlUGF0aCgpIGNvbnN0OwotICAgIHN0
ZDo6b3B0aW9uYWw8SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbj4gbmFtZUFuZFZlcnNpb24oKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgZmlsZVBhdGgoKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPElEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24+IG5h
bWVBbmRWZXJzaW9uKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNEYXRhSW5N
ZW1vcnkoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICB2b2lkIGhhbmRsZURhdGFiYXNlT3BlcmF0
aW9ucygpOwogICAgIHZvaWQgaGFuZGxlQ3VycmVudE9wZXJhdGlvbigpOwogICAgIHZvaWQgcGVy
Zm9ybUN1cnJlbnRPcGVuT3BlcmF0aW9uKCk7CisgICAgdm9pZCBwZXJmb3JtQ3VycmVudE9wZW5P
cGVyYXRpb25BZnRlclNwYWNlQ2hlY2soYm9vbCBpc0dyYW50ZWQpOwogICAgIHZvaWQgcGVyZm9y
bUN1cnJlbnREZWxldGVPcGVyYXRpb24oKTsKICAgICBlbnVtIGNsYXNzIFJlcXVlc3RUeXBlIHsg
RGVsZXRlLCBBbnkgfTsKICAgICBSZWZQdHI8U2VydmVyT3BlbkRCUmVxdWVzdD4gdGFrZU5leHRS
dW5uYWJsZVJlcXVlc3QoUmVxdWVzdFR5cGUgPSBSZXF1ZXN0VHlwZTo6QW55KTsKQEAgLTE0Niwx
MSArMTU0LDEzIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNsZWFyVHJhbnNhY3Rpb25zT25Db25u
ZWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYpOwogCi0gICAgSURCU2VydmVyJiBt
X3NlcnZlcjsKKyAgICBJREJTZXJ2ZXIqIG1fc2VydmVyOworICAgIFdlYWtQdHI8VW5pcXVlSURC
RGF0YWJhc2VNYW5hZ2VyPiBtX21hbmFnZXI7CiAgICAgSURCRGF0YWJhc2VJZGVudGlmaWVyIG1f
aWRlbnRpZmllcjsKIAogICAgIExpc3RIYXNoU2V0PFJlZlB0cjxTZXJ2ZXJPcGVuREJSZXF1ZXN0
Pj4gbV9wZW5kaW5nT3BlbkRCUmVxdWVzdHM7CiAgICAgUmVmUHRyPFNlcnZlck9wZW5EQlJlcXVl
c3Q+IG1fY3VycmVudE9wZW5EQlJlcXVlc3Q7CisgICAgSGFzaFNldDxJREJSZXNvdXJjZUlkZW50
aWZpZXI+IG1fb3BlbkRCUmVxdWVzdHNGb3JTcGFjZUNoZWNrOwogCiAgICAgTGlzdEhhc2hTZXQ8
UmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbj4+IG1fb3BlbkRhdGFiYXNlQ29ubmVj
dGlvbnM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5jcHAKaW5k
ZXggNzQzZWRjYzNiOGM1OTQwNTFmNzkxMTE2NTI2YWY0ZDAyMTY5MTM2Ny4uM2M3NzJhZjcwYjc0
ODIyOTc0ZDlkNWI3MTBkMzE1ZjBhOWE4ZmI3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRh
dGFiYXNlQ29ubmVjdGlvbi5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJMb2dnaW5n
LmgiCiAjaW5jbHVkZSAiU2VydmVyT3BlbkRCUmVxdWVzdC5oIgogI2luY2x1ZGUgIlVuaXF1ZUlE
QkRhdGFiYXNlLmgiCisjaW5jbHVkZSAiVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBJREJTZXJ2ZXIgewpAQCAtNDIsMTEgKzQzLDE0
IEBAIFJlZjxVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24+IFVuaXF1ZUlEQkRhdGFiYXNlQ29u
bmVjdGlvbjo6Y3JlYXRlKFVuaXF1ZUlEQkRhCiAKIFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlv
bjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlJiBkYXRhYmFz
ZSwgU2VydmVyT3BlbkRCUmVxdWVzdCYgcmVxdWVzdCkKICAgICA6IG1fZGF0YWJhc2UoZGF0YWJh
c2UpCi0gICAgLCBtX3NlcnZlcihkYXRhYmFzZS5zZXJ2ZXIoKSkKKyAgICAsIG1fbWFuYWdlcihk
YXRhYmFzZS5tYW5hZ2VyKCkpCiAgICAgLCBtX2Nvbm5lY3Rpb25Ub0NsaWVudChyZXF1ZXN0LmNv
bm5lY3Rpb24oKSkKICAgICAsIG1fb3BlblJlcXVlc3RJZGVudGlmaWVyKHJlcXVlc3QucmVxdWVz
dERhdGEoKS5yZXF1ZXN0SWRlbnRpZmllcigpKQogewotICAgIG1fc2VydmVyLnJlZ2lzdGVyRGF0
YWJhc2VDb25uZWN0aW9uKCp0aGlzKTsKKyAgICBpZiAoYXV0byogbWFuYWdlciA9IGRhdGFiYXNl
Lm1hbmFnZXIoKSkgeworICAgICAgICBtX21hbmFnZXIgPSAqbWFuYWdlcjsKKyAgICAgICAgbV9t
YW5hZ2VyLT5yZWdpc3RlckNvbm5lY3Rpb24oKnRoaXMpOworICAgIH0KICAgICBtX2Nvbm5lY3Rp
b25Ub0NsaWVudC0+cmVnaXN0ZXJEYXRhYmFzZUNvbm5lY3Rpb24oKnRoaXMpOwogfQogCkBAIC01
NCwxMCArNTgsMTYgQEAgVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uOjp+VW5pcXVlSURCRGF0
YWJhc2VDb25uZWN0aW9uKCkKIHsKICAgICBBU1NFUlQobV90cmFuc2FjdGlvbk1hcC5pc0VtcHR5
KCkpOwogCi0gICAgbV9zZXJ2ZXIudW5yZWdpc3RlckRhdGFiYXNlQ29ubmVjdGlvbigqdGhpcyk7
CisgICAgaWYgKG1fbWFuYWdlcikKKyAgICAgICAgbV9tYW5hZ2VyLT51bnJlZ2lzdGVyQ29ubmVj
dGlvbigqdGhpcyk7CiAgICAgbV9jb25uZWN0aW9uVG9DbGllbnQtPnVucmVnaXN0ZXJEYXRhYmFz
ZUNvbm5lY3Rpb24oKnRoaXMpOwogfQogCitVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIqIFVuaXF1
ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbjo6bWFuYWdlcigpCit7CisgICAgcmV0dXJuIG1fbWFuYWdl
ci5nZXQoKTsKK30KKwogYm9vbCBVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb246Omhhc05vbkZp
bmlzaGVkVHJhbnNhY3Rpb25zKCkgY29uc3QKIHsKICAgICByZXR1cm4gIW1fdHJhbnNhY3Rpb25N
YXAuaXNFbXB0eSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5oCmlu
ZGV4IDJlMTlkZmQyZGM5MTQzNGJmYzVlN2MzYWU0YmU2NmQ4Y2Q4NTg4MTEuLjk4ZmViNTljNzZi
ZWFlYmU3MGVkZGU0YmU1NThmY2E4NzFjOThkYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0
YWJhc2VDb25uZWN0aW9uLmgKQEAgLTI1LDcgKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNp
bmNsdWRlICJJREJTZXJ2ZXIuaCIKICNpbmNsdWRlICJVbmlxdWVJREJEYXRhYmFzZS5oIgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0lkZW50aWZpZWQuaD4KQEAgLTM2
LDYgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJREJFcnJvcjsKIGNsYXNz
IElEQlJlc3VsdERhdGE7CitjbGFzcyBVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXI7CiAKIG5hbWVz
cGFjZSBJREJTZXJ2ZXIgewogCkBAIC01MiwxMSArNTIsMTEgQEAgcHVibGljOgogCiAgICAgY29u
c3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiBvcGVuUmVxdWVzdElkZW50aWZpZXIoKSB7IHJldHVy
biBtX29wZW5SZXF1ZXN0SWRlbnRpZmllcjsgfQogICAgIFVuaXF1ZUlEQkRhdGFiYXNlKiBkYXRh
YmFzZSgpIHsgcmV0dXJuIG1fZGF0YWJhc2UuZ2V0KCk7IH0KLSAgICBJREJTZXJ2ZXIqIHNlcnZl
cigpIHsgcmV0dXJuICZtX3NlcnZlcjsgfQorICAgIFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlciog
bWFuYWdlcigpOwogICAgIElEQkNvbm5lY3Rpb25Ub0NsaWVudCYgY29ubmVjdGlvblRvQ2xpZW50
KCkgeyByZXR1cm4gbV9jb25uZWN0aW9uVG9DbGllbnQ7IH0KIAotICAgIHZvaWQgY29ubmVjdGlv
blBlbmRpbmdDbG9zZUZyb21DbGllbnQoKTsKLSAgICB2b2lkIGNvbm5lY3Rpb25DbG9zZWRGcm9t
Q2xpZW50KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb25uZWN0aW9uUGVuZGluZ0Nsb3Nl
RnJvbUNsaWVudCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29ubmVjdGlvbkNsb3NlZEZy
b21DbGllbnQoKTsKIAogICAgIGJvb2wgY2xvc2VQZW5kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9j
bG9zZVBlbmRpbmc7IH0KIApAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmaXJl
VmVyc2lvbkNoYW5nZUV2ZW50KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElk
ZW50aWZpZXIsIHVpbnQ2NF90IHJlcXVlc3RlZFZlcnNpb24pOwogICAgIFVuaXF1ZUlEQkRhdGFi
YXNlVHJhbnNhY3Rpb24mIGNyZWF0ZVZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbih1aW50NjRfdCBu
ZXdWZXJzaW9uKTsKIAotICAgIHZvaWQgZXN0YWJsaXNoVHJhbnNhY3Rpb24oY29uc3QgSURCVHJh
bnNhY3Rpb25JbmZvJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlc3RhYmxpc2hUcmFuc2Fj
dGlvbihjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mKTsKICAgICB2b2lkIGRpZEFib3J0VHJhbnNh
Y3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIGNvbnN0IElEQkVycm9yJik7CiAg
ICAgdm9pZCBkaWRDb21taXRUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9u
JiwgY29uc3QgSURCRXJyb3ImKTsKICAgICB2b2lkIGRpZENyZWF0ZU9iamVjdFN0b3JlKGNvbnN0
IElEQlJlc3VsdERhdGEmKTsKQEAgLTc1LDggKzc1LDggQEAgcHVibGljOgogICAgIHZvaWQgZGlk
Q3JlYXRlSW5kZXgoY29uc3QgSURCUmVzdWx0RGF0YSYpOwogICAgIHZvaWQgZGlkRGVsZXRlSW5k
ZXgoY29uc3QgSURCUmVzdWx0RGF0YSYpOwogICAgIHZvaWQgZGlkUmVuYW1lSW5kZXgoY29uc3Qg
SURCUmVzdWx0RGF0YSYpOwotICAgIHZvaWQgZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudChjb25z
dCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBJbmRleGVkREI6OkNv
bm5lY3Rpb25DbG9zZWRPbkJlaGFsZk9mU2VydmVyKTsKLSAgICB2b2lkIGRpZEZpbmlzaEhhbmRs
aW5nVmVyc2lvbkNoYW5nZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9u
SWRlbnRpZmllcik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRGaXJlVmVyc2lvbkNoYW5n
ZUV2ZW50KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIElu
ZGV4ZWREQjo6Q29ubmVjdGlvbkNsb3NlZE9uQmVoYWxmT2ZTZXJ2ZXIpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlKGNvbnN0IElEQlJlc291
cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKIAogICAgIHZvaWQgYWJvcnRU
cmFuc2FjdGlvbldpdGhvdXRDYWxsYmFjayhVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJik7
CiAKQEAgLTg4LDcgKzg4LDcgQEAgcHJpdmF0ZToKICAgICBVbmlxdWVJREJEYXRhYmFzZUNvbm5l
Y3Rpb24oVW5pcXVlSURCRGF0YWJhc2UmLCBTZXJ2ZXJPcGVuREJSZXF1ZXN0Jik7CiAKICAgICBX
ZWFrUHRyPFVuaXF1ZUlEQkRhdGFiYXNlPiBtX2RhdGFiYXNlOwotICAgIElEQlNlcnZlciYgbV9z
ZXJ2ZXI7CisgICAgV2Vha1B0cjxVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXI+IG1fbWFuYWdlcjsK
ICAgICBSZWY8SURCQ29ubmVjdGlvblRvQ2xpZW50PiBtX2Nvbm5lY3Rpb25Ub0NsaWVudDsKICAg
ICBJREJSZXNvdXJjZUlkZW50aWZpZXIgbV9vcGVuUmVxdWVzdElkZW50aWZpZXI7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJE
YXRhYmFzZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9VbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mODNlZmI0OTBjYTNiZTE4
M2MwN2RhMGYxZDY4YTllNjRjOWZiMzMyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlci5oCkBA
IC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIklE
QkRhdGFiYXNlSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworc3RydWN0IENsaWVudE9yaWdpbjsKKworbmFtZXNwYWNlIElEQlNl
cnZlciB7CisKK2NsYXNzIElEQkJhY2tpbmdTdG9yZTsKK2NsYXNzIFVuaXF1ZUlEQkRhdGFiYXNl
Q29ubmVjdGlvbjsKK2NsYXNzIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb247CisKK2NsYXNz
IFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxVbmlxdWVJ
REJEYXRhYmFzZU1hbmFnZXI+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1Ymxp
YzoKKyAgICB2aXJ0dWFsIH5VbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIoKSB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgcmVnaXN0ZXJDb25uZWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlckNvbm5lY3Rpb24oVW5pcXVlSURCRGF0
YWJhc2VDb25uZWN0aW9uJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclRyYW5zYWN0
aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHVucmVnaXN0ZXJUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJikgPSAw
OworICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPElEQkJhY2tpbmdTdG9yZT4gY3JlYXRlQmFj
a2luZ1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgcmVxdWVzdFNwYWNlKGNvbnN0IENsaWVudE9yaWdpbiYsIHVpbnQ2NF90IHNpemUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNl
IElEQlNlcnZlcgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2Fj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVl
SURCRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHAKaW5kZXggMWNjMDI4MTdhMTI0YzhkMGVkNTJmMjEz
YWM4ZTUwMDZiYTZiOTZkZS4uNmUzY2UwNDQwNmZjYWQzM2JjYzFjOWU5ZjYxMmUyYWY0MTA2OTQx
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1Vu
aXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcApAQCAt
MjgsNyArMjgsNiBAQAogCiAjaW5jbHVkZSAiSURCSXRlcmF0ZUN1cnNvckRhdGEuaCIKICNpbmNs
dWRlICJJREJSZXN1bHREYXRhLmgiCi0jaW5jbHVkZSAiSURCU2VydmVyLmgiCiAjaW5jbHVkZSAi
TG9nZ2luZy5oIgogI2luY2x1ZGUgIlVuaXF1ZUlEQkRhdGFiYXNlLmgiCiAKQEAgLTUwLDEyICs0
OSwxNCBAQCBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpVbmlxdWVJREJEYXRhYmFzZVRy
YW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlQ29ubgogICAgIGlmIChtX3RyYW5zYWN0aW9uSW5m
by5tb2RlKCkgPT0gSURCVHJhbnNhY3Rpb25Nb2RlOjpWZXJzaW9uY2hhbmdlKQogICAgICAgICBt
X29yaWdpbmFsRGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KGRhdGFi
YXNlLT5pbmZvKCkpOwogCi0gICAgZGF0YWJhc2VDb25uZWN0aW9uKCkuc2VydmVyKCktPnJlZ2lz
dGVyVHJhbnNhY3Rpb24oKnRoaXMpOworICAgIGlmIChhdXRvKiBtYW5hZ2VyID0gZGF0YWJhc2VD
b25uZWN0aW9uKCkubWFuYWdlcigpKQorICAgICAgICBtYW5hZ2VyLT5yZWdpc3RlclRyYW5zYWN0
aW9uKCp0aGlzKTsKIH0KIAogVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6flVuaXF1ZUlE
QkRhdGFiYXNlVHJhbnNhY3Rpb24oKQogewotICAgIGRhdGFiYXNlQ29ubmVjdGlvbigpLnNlcnZl
cigpLT51bnJlZ2lzdGVyVHJhbnNhY3Rpb24oKnRoaXMpOworICAgIGlmIChhdXRvKiBtYW5hZ2Vy
ID0gZGF0YWJhc2VDb25uZWN0aW9uKCkubWFuYWdlcigpKQorICAgICAgICBtYW5hZ2VyLT51bnJl
Z2lzdGVyVHJhbnNhY3Rpb24oKnRoaXMpOwogfQogCiBVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rp
b24mIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246OmRhdGFiYXNlQ29ubmVjdGlvbigpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVl
SURCRGF0YWJhc2VUcmFuc2FjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uaAppbmRleCA5NTk2NjUyYWRj
ZGJhN2EwNDhiNjE5Zjc0ZWYxYTkyY2VlZjllMGU1Li5mYmE4NWMxNzM4YjczNDJlMTI4ODAwYWVi
OWQxZGE0NjdlZTdhMTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0
aW9uLmgKQEAgLTUxLDcgKzUxLDcgQEAgbmFtZXNwYWNlIElEQlNlcnZlciB7CiBjbGFzcyBJREJT
ZXJ2ZXI7CiBjbGFzcyBVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb247CiAKLWNsYXNzIFVuaXF1
ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxVbmlxdWVJREJEYXRh
YmFzZVRyYW5zYWN0aW9uPiB7CitjbGFzcyBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uIDog
cHVibGljIENhbk1ha2VXZWFrUHRyPFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24+LCBwdWJs
aWMgUmVmQ291bnRlZDxVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uPiB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFJlZjxVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uPiBjcmVhdGUoVW5pcXVl
SURCRGF0YWJhc2VDb25uZWN0aW9uJiwgY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJik7CiAKQEAg
LTU5LDI5ICs1OSwyOSBAQCBwdWJsaWM6CiAKICAgICBVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rp
b24mIGRhdGFiYXNlQ29ubmVjdGlvbigpOwogICAgIGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYg
aW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNhY3Rpb25JbmZvOyB9Ci0gICAgYm9vbCBpc1Zl
cnNpb25DaGFuZ2UoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzVmVyc2lvbkNo
YW5nZSgpIGNvbnN0OwogICAgIGJvb2wgaXNSZWFkT25seSgpIGNvbnN0OwogCiAgICAgSURCRGF0
YWJhc2VJbmZvKiBvcmlnaW5hbERhdGFiYXNlSW5mbygpIGNvbnN0OwogCi0gICAgdm9pZCBhYm9y
dCgpOwotICAgIHZvaWQgYWJvcnRXaXRob3V0Q2FsbGJhY2soKTsKLSAgICB2b2lkIGNvbW1pdCh1
aW50NjRfdCBwZW5kaW5nUmVxdWVzdENvdW50KTsKLQotICAgIHZvaWQgY3JlYXRlT2JqZWN0U3Rv
cmUoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mKTsKLSAg
ICB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgU3Ry
aW5nJiBvYmplY3RTdG9yZU5hbWUpOwotICAgIHZvaWQgcmVuYW1lT2JqZWN0U3RvcmUoY29uc3Qg
SURCUmVxdWVzdERhdGEmLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgbmV3TmFtZSk7Ci0gICAgdm9pZCBjbGVhck9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVl
c3REYXRhJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKLSAgICB2b2lkIGNyZWF0
ZUluZGV4KGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCSW5kZXhJbmZvJik7Ci0gICAg
dm9pZCBkZWxldGVJbmRleChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIHVpbnQ2NF90IG9iamVjdFN0
b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpbmRleE5hbWUpOwotICAgIHZvaWQgcmVuYW1l
SW5kZXgoY29uc3QgSURCUmVxdWVzdERhdGEmLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZp
ZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lKTsKLSAg
ICB2b2lkIHB1dE9yQWRkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5RGF0YSYs
IGNvbnN0IElEQlZhbHVlJiwgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUpOwot
ICAgIHZvaWQgZ2V0UmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCR2V0UmVj
b3JkRGF0YSYpOwotICAgIHZvaWQgZ2V0QWxsUmVjb3Jkcyhjb25zdCBJREJSZXF1ZXN0RGF0YSYs
IGNvbnN0IElEQkdldEFsbFJlY29yZHNEYXRhJik7Ci0gICAgdm9pZCBnZXRDb3VudChjb25zdCBJ
REJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYpOwotICAgIHZvaWQgZGVsZXRl
UmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJik7Ci0g
ICAgdm9pZCBvcGVuQ3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCQ3Vyc29y
SW5mbyYpOwotICAgIHZvaWQgaXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNv
bnN0IElEQkl0ZXJhdGVDdXJzb3JEYXRhJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhYm9y
dCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWJvcnRXaXRob3V0Q2FsbGJhY2soKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbW1pdCh1aW50NjRfdCBwZW5kaW5nUmVxdWVzdENvdW50
KTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURC
UmVxdWVzdERhdGEmLCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3Qg
U3RyaW5nJiBvYmplY3RTdG9yZU5hbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVuYW1l
T2JqZWN0U3RvcmUoY29uc3QgSURCUmVxdWVzdERhdGEmLCB1aW50NjRfdCBvYmplY3RTdG9yZUlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBjbGVhck9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgdWludDY0X3Qgb2JqZWN0
U3RvcmVJZGVudGlmaWVyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNyZWF0ZUluZGV4KGNv
bnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCSW5kZXhJbmZvJik7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBkZWxldGVJbmRleChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIHVpbnQ2NF90IG9i
amVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpbmRleE5hbWUpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgcmVuYW1lSW5kZXgoY29uc3QgSURCUmVxdWVzdERhdGEmLCB1aW50NjRf
dCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBuZXdOYW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHB1dE9yQWRkKGNvbnN0
IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5RGF0YSYsIGNvbnN0IElEQlZhbHVlJiwgSW5k
ZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUpOworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgZ2V0UmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCR2V0UmVjb3JkRGF0
YSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0QWxsUmVjb3Jkcyhjb25zdCBJREJSZXF1
ZXN0RGF0YSYsIGNvbnN0IElEQkdldEFsbFJlY29yZHNEYXRhJik7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBnZXRDb3VudChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleVJhbmdl
RGF0YSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGVsZXRlUmVjb3JkKGNvbnN0IElEQlJl
cXVlc3REYXRhJiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJik7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBvcGVuQ3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCQ3Vyc29ySW5m
byYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXF1
ZXN0RGF0YSYsIGNvbnN0IElEQkl0ZXJhdGVDdXJzb3JEYXRhJik7CiAKICAgICB2b2lkIGRpZEFj
dGl2YXRlSW5CYWNraW5nU3RvcmUoY29uc3QgSURCRXJyb3ImKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkVycm9yLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3IuaAppbmRleCBmZjE3Yzk4
YTQxMTVkZTYyY2FjYzcwYWQzMjUyYmQ2ZWRmMTFmMzk5Li5iMzBhZDM5MTc2ZjAzZmYwZDZjOTM5
OGQ2YjNlZDE5Y2QyZTk5MjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3IuaApAQCAtNTIsNiArNTIsNyBAQCBwdWJsaWM6CiAgICAg
U3RyaW5nIG1lc3NhZ2UoKSBjb25zdDsKIAogICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1
cm4gIW1fY29kZTsgfQorICAgIG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhaXNOdWxs
KCk7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIElEQkVycm9yIGlzb2xhdGVkQ29weSgpIGNvbnN0
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQv
SURCUmVxdWVzdERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJl
ZC9JREJSZXF1ZXN0RGF0YS5oCmluZGV4IDAxOGNiMTNlNzVlYjY0NWRkMTE0ZTI0ZjZkYmZlYTM0
Y2Y1NWIxNjQuLjAwMTc4N2E2NjU4YTQxNzhiNmE3OTcxMjhhMDRkYTM2YjhhZmRmZjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0
RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJS
ZXF1ZXN0RGF0YS5oCkBAIC01Niw4ICs1Niw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9S
VCBJREJSZXF1ZXN0RGF0YSBpc29sYXRlZENvcHkoKSBjb25zdDsKIAogICAgIElEQkNvbm5lY3Rp
b25JZGVudGlmaWVyIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKCkgY29uc3Q7Ci0gICAgSURC
UmVzb3VyY2VJZGVudGlmaWVyIHJlcXVlc3RJZGVudGlmaWVyKCkgY29uc3Q7Ci0gICAgSURCUmVz
b3VyY2VJZGVudGlmaWVyIHRyYW5zYWN0aW9uSWRlbnRpZmllcigpIGNvbnN0OworICAgIFdFQkNP
UkVfRVhQT1JUIElEQlJlc291cmNlSWRlbnRpZmllciByZXF1ZXN0SWRlbnRpZmllcigpIGNvbnN0
OworICAgIFdFQkNPUkVfRVhQT1JUIElEQlJlc291cmNlSWRlbnRpZmllciB0cmFuc2FjdGlvbklk
ZW50aWZpZXIoKSBjb25zdDsKICAgICB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIoKSBj
b25zdDsKICAgICB1aW50NjRfdCBpbmRleElkZW50aWZpZXIoKSBjb25zdDsKICAgICBJbmRleGVk
REI6OkluZGV4UmVjb3JkVHlwZSBpbmRleFJlY29yZFR5cGUoKSBjb25zdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXNvdXJjZUlkZW50
aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXNv
dXJjZUlkZW50aWZpZXIuaAppbmRleCBiZTE2MTk3ZjYzNGE1OTZjMzllNTEzMDI4NTkwNjgzNTc0
NTg2ODJhLi5iZDM5NTRhMjg5NzNjZWI4YTViZjY0OGY0YWE1MTIzZjJlZmJlZjQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzb3VyY2VJ
ZGVudGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVk
L0lEQlJlc291cmNlSWRlbnRpZmllci5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICBJ
REJSZXNvdXJjZUlkZW50aWZpZXIoY29uc3QgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkm
LCBjb25zdCBJREJSZXF1ZXN0Jik7CiAgICAgZXhwbGljaXQgSURCUmVzb3VyY2VJZGVudGlmaWVy
KGNvbnN0IElEQlNlcnZlcjo6SURCQ29ubmVjdGlvblRvQ2xpZW50Jik7CiAKLSAgICBzdGF0aWMg
SURCUmVzb3VyY2VJZGVudGlmaWVyIGVtcHR5VmFsdWUoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgSURCUmVzb3VyY2VJZGVudGlmaWVyIGVtcHR5VmFsdWUoKTsKICAgICBib29sIGlzRW1w
dHkoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuICFtX3Jlc291cmNlTnVtYmVyICYmICFt
X2lkYkNvbm5lY3Rpb25JZGVudGlmaWVyOwpAQCAtNjAsNyArNjAsOCBAQCBwdWJsaWM6CiAgICAg
ICAgIHVpbnQ2NF90IGhhc2hDb2Rlc1syXSA9IHsgbV9pZGJDb25uZWN0aW9uSWRlbnRpZmllci50
b1VJbnQ2NCgpLCBtX3Jlc291cmNlTnVtYmVyIH07CiAgICAgICAgIHJldHVybiBTdHJpbmdIYXNo
ZXI6Omhhc2hNZW1vcnk8c2l6ZW9mKGhhc2hDb2Rlcyk+KGhhc2hDb2Rlcyk7CiAgICAgfQotICAg
IAorCisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgb3Ro
ZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CiAgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgb3RoZXIpIGNvbnN0CiAgICAgewogICAg
ICAgICByZXR1cm4gbV9pZGJDb25uZWN0aW9uSWRlbnRpZmllciA9PSBvdGhlci5tX2lkYkNvbm5l
Y3Rpb25JZGVudGlmaWVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggNTZhODY1MDRlMTZiMzAzMzM1Y2ZhOWYxOGUxOTkwOWViMmE0
NDUyMy4uMDkyMGRlNDA5ODBjODU1OTE0M2Y1MmQyMmY2ZTZhODJkM2M2NTM5NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTU0
NCwxMCArMTU0NCwxMCBAQAogCQk1MTEyM0UyRjI3Njk0MENBMDBGOUQ0MUIgLyogTm90aWZpY2F0
aW9uRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTExMjNFMkMyNzY5M0MzMjAwRjlENDFCIC8qIE5vdGlmaWNhdGlvbkRhdGEuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTE3RjMwRTI1RTYxMDIw
MDAyQTlGMUUgLyogUmVtb3RlQ29tbWFuZExpc3RlbmVyQ29jb2EuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMTdGMzBDMjVFNjEwMUYwMDJBOUYxRSAv
KiBSZW1vdGVDb21tYW5kTGlzdGVuZXJDb2NvYS5oICovOyB9OwogCQk1MTFFQzEyODFDNTBBQUNB
MDAzMkY5ODMgLyogSURCU2VyaWFsaXphdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTExRUMxMjYxQzUwQUE1NzAwMzJGOTgzIC8qIElEQlNlcmlh
bGl6YXRpb24uaCAqLzsgfTsKLQkJNTExRUMxMkMxQzUwQUJCRjAwMzJGOTgzIC8qIFNRTGl0ZUlE
QlRyYW5zYWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTFFQzEyQTFDNTBBQkJBMDAzMkY5ODMgLyogU1FMaXRlSURCVHJhbnNhY3Rpb24uaCAq
LzsgfTsKKwkJNTExRUMxMkMxQzUwQUJCRjAwMzJGOTgzIC8qIFNRTGl0ZUlEQlRyYW5zYWN0aW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTFFQzEy
QTFDNTBBQkJBMDAzMkY5ODMgLyogU1FMaXRlSURCVHJhbnNhY3Rpb24uaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTFFQzEzMDFDNTBBQkY1MDAz
MkY5ODMgLyogU1FMaXRlSURCQ3Vyc29yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MTFFQzEyRTFDNTBBQkVDMDAzMkY5ODMgLyogU1FMaXRlSURCQ3Vy
c29yLmggKi87IH07CiAJCTUxMjBCQkFGMUYxQ0VDRTcwMEVGRUJGMSAvKiBDb29raWVTdG9yYWdl
T2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxMjBCQkFEMUYxQ0U3NzAwMEVGRUJGMSAvKiBDb29raWVTdG9yYWdlT2JzZXJ2ZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk1MTJCREI0QjFD
NDU2RkZBMDA2NDk0REYgLyogU1FMaXRlSURCQmFja2luZ1N0b3JlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTJCREI0OTFDNDU2RkFCMDA2NDk0REYg
LyogU1FMaXRlSURCQmFja2luZ1N0b3JlLmggKi87IH07CisJCTUxMkJEQjRCMUM0NTZGRkEwMDY0
OTRERiAvKiBTUUxpdGVJREJCYWNraW5nU3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMkJEQjQ5MUM0NTZGQUIwMDY0OTRERiAvKiBTUUxpdGVJ
REJCYWNraW5nU3RvcmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk1MTJERDhGNTBEOTFFNkFGMDAwRjg5RUUgLyogTGVnYWN5V2ViQXJjaGl2ZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyREQ4RUIw
RDkxRTZBRjAwMEY4OUVFIC8qIExlZ2FjeVdlYkFyY2hpdmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTJERDhGNjBEOTFFNkFGMDAwRjg5RUUg
LyogQXJjaGl2ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTEyREQ4RUMwRDkxRTZBRjAwMEY4OUVFIC8qIEFyY2hpdmUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTJERDhGODBEOTFFNkFGMDAwRjg5
RUUgLyogQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyREQ4RUUwRDkxRTZBRjAwMEY4OUVFIC8qIEFyY2hp
dmVSZXNvdXJjZUNvbGxlY3Rpb24uaCAqLzsgfTsKQEAgLTE1OTMsNyArMTU5Myw3IEBACiAJCTUx
NkQ3RDcyMUJCNUYwQkQwMEFGN0M3NyAvKiBJREJDb25uZWN0aW9uVG9DbGllbnREZWxlZ2F0ZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE2RDdENkUx
QkI1RjA2NTAwQUY3Qzc3IC8qIElEQkNvbm5lY3Rpb25Ub0NsaWVudERlbGVnYXRlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE2RjdGNkQxQzMx
RTM5QTAwRjExMURDIC8qIFNlcnZlck9wZW5EQlJlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNkY3RjZDMUMzMUM3OUQwMEYxMTFEQyAvKiBT
ZXJ2ZXJPcGVuREJSZXF1ZXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNTE3MTM4RjAxQkVEMUQxQTAwMEQ1RjAxIC8qIEluZGV4S2V5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTcxMzhFRTFCRUQx
RDE3MDAwRDVGMDEgLyogSW5kZXhLZXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwotCQk1MTcxMzhGODFCRjEyOEJCMDAwRDVGMDEgLyogSW5kZXhWYWx1
ZVN0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTcxMzhGNjFCRjEyMjYyMDAwRDVGMDEgLyogSW5kZXhWYWx1ZVN0b3JlLmggKi87IH07CisJCTUx
NzEzOEY4MUJGMTI4QkIwMDBENUYwMSAvKiBJbmRleFZhbHVlU3RvcmUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNzEzOEY2MUJGMTIyNjIwMDBENUYw
MSAvKiBJbmRleFZhbHVlU3RvcmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk1MTcxMzhGQzFCRjNBREY0MDAwRDVGMDEgLyogSURCQ3Vyc29ySW5m
by5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3MTM4
RkExQkYzQURBQzAwMEQ1RjAxIC8qIElEQkN1cnNvckluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTcxMzkwNjFCRjY0REVDMDAwRDVGMDEg
LyogTWVtb3J5T2JqZWN0U3RvcmVDdXJzb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxNzEzOTA0MUJGNjRERTMwMDBENUYwMSAvKiBNZW1vcnlPYmpl
Y3RTdG9yZUN1cnNvci5oICovOyB9OwogCQk1MTcxMzkwODFCRjY0REVGMDAwRDVGMDEgLyogTWVt
b3J5Q3Vyc29yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTcxMzkwMjFCRjY0REUzMDAwRDVGMDEgLyogTWVtb3J5Q3Vyc29yLmggKi87IH07CkBAIC0x
NjY5LDcgKzE2NjksNyBAQAogCQk1MUI5MTQxMDFGRDI3ODJEMDBFRTI4NTkgLyogUmVnaXN0cmF0
aW9uRGF0YWJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxQjkxNDBDMUZEMjc4MjUwMEVFMjg1OSAvKiBSZWdpc3RyYXRpb25EYXRhYmFzZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxQjkxNDEx
MUZEMjc4MkQwMEVFMjg1OSAvKiBSZWdpc3RyYXRpb25TdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCOTE0MEIxRkQyNzgyNTAwRUUyODU5IC8q
IFJlZ2lzdHJhdGlvblN0b3JlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNTFCQTRBQzQxQkJCNUNEODAwREYzRDZEIC8qIElEQkRhdGFiYXNlSW5m
by5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCQTRB
QzIxQkJCNUNCRjAwREYzRDZEIC8qIElEQkRhdGFiYXNlSW5mby5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTUxQkE0QUNCMUJCQzVCRDkwMERGM0Q2
RCAvKiBNZW1vcnlJREJCYWNraW5nU3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkE0QUM5MUJCQzVCOUUwMERGM0Q2RCAvKiBNZW1vcnlJREJC
YWNraW5nU3RvcmUuaCAqLzsgfTsKKwkJNTFCQTRBQ0IxQkJDNUJEOTAwREYzRDZEIC8qIE1lbW9y
eUlEQkJhY2tpbmdTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTFCQTRBQzkxQkJDNUI5RTAwREYzRDZEIC8qIE1lbW9yeUlEQkJhY2tpbmdTdG9y
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUx
QkE0QUNDMUJCQzVCREQwMERGM0Q2RCAvKiBJREJCYWNraW5nU3RvcmUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkE0QUM3MUJCQzVBRDYwMERGM0Q2
RCAvKiBJREJCYWNraW5nU3RvcmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk1MUJBOTQ3MTIzQUMzMDUzMDA0NDQ4NDYgLyogUnVuSmF2YVNjcmlw
dFBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxQkE5NDZGMjNBQzMwNTAwMDQ0NDg0NiAvKiBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxQkND
RTMwMUY4RjE3OUUwMDZCQTBFRCAvKiBTZXJ2aWNlV29ya2VyVGhyZWFkLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdDODcxMDFGOEVFNzJFMDBFQjgw
NzYgLyogU2VydmljZVdvcmtlclRocmVhZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC0xNjg1LDcgKzE2ODUsNyBAQAogCQk1MUUwQkFCQjBEQTU1
NDcxMDBBOUU0MTcgLyogU3RvcmFnZUV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUwQkFCOTBEQTU1NDcxMDBBOUU0MTcgLyogU3RvcmFnZUV2
ZW50LmggKi87IH07CiAJCTUxRTBCQUVCMERBNTVENEEwMEE5RTQxNyAvKiBKU1N0b3JhZ2VFdmVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFMEJB
RTkwREE1NUQ0QTAwQTlFNDE3IC8qIEpTU3RvcmFnZUV2ZW50LmggKi87IH07CiAJCTUxRTBCQjM4
MERBNUFDQjYwMEE5RTQxNyAvKiBTdG9yYWdlTWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUwQkIzNjBEQTVBQ0I2MDBBOUU0MTcgLyogU3RvcmFn
ZU1hcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0J
CTUxRTFCQUMzMUJEODA2NEUwMDU1RDgxRiAvKiBNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlv
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFMUJB
QzExQkQ4MDY0NzAwNTVEODFGIC8qIE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uLmggKi87
IH07CisJCTUxRTFCQUMzMUJEODA2NEUwMDU1RDgxRiAvKiBNZW1vcnlCYWNraW5nU3RvcmVUcmFu
c2FjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTFFMUJBQzExQkQ4MDY0NzAwNTVEODFGIC8qIE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9u
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFF
MjY5MzcxREQzQkQ5QjAwNkI2QTU4IC8qIElEQkl0ZXJhdGVDdXJzb3JEYXRhLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUyNjkzNTFERDNCRDkxMDA2
QjZBNTggLyogSURCSXRlcmF0ZUN1cnNvckRhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUUzOTkwMDFENkU0NzUwMDA5Qzg4MzEgLyogR2Ft
ZUNvbnRyb2xsZXJHYW1lcGFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MUUzOThGQzFENkU0NzRCMDA5Qzg4MzEgLyogR2FtZUNvbnRyb2xsZXJHYW1l
cGFkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NTFFMzk5MDIxRDZFNDc1MDAwOUM4ODMxIC8qIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUzOThG
RTFENkU0NzRCMDA5Qzg4MzEgLyogR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTY5NSw3ICsx
Njk1LDcgQEAKIAkJNTFFQ0MzRjgyMDA1ODdCRjAwNDgzRUFFIC8qIE1lc3NhZ2VQb3J0Q2hhbm5l
bFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MUVDQzNGMTIwMDU4N0I1MDA0ODNFQUUgLyogTWVzc2FnZVBvcnRDaGFubmVsUmVnaXN0cnku
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUVD
QzNGRDIwMDU5MzBEMDA0ODNFQUUgLyogTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRUNDM0ZCMjAwNTkz
MDEwMDQ4M0VBRSAvKiBNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxRUU3QjM4MUFBNTBCMDUwMEY5
MkIyMSAvKiBSZXNvdXJjZUxvYWRJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MUVFN0IzNzFBQTUwQjA1MDBGOTJCMjEgLyogUmVzb3VyY2VMb2Fk
SW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0J
CTUxRUVBQTc0MUJFRkZBQjEwMDIxODAwOCAvKiBJbmRleFZhbHVlRW50cnkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRUVBQTcyMUJFRkZBNzkwMDIx
ODAwOCAvKiBJbmRleFZhbHVlRW50cnkuaCAqLzsgfTsKKwkJNTFFRUFBNzQxQkVGRkFCMTAwMjE4
MDA4IC8qIEluZGV4VmFsdWVFbnRyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTFFRUFBNzIxQkVGRkE3OTAwMjE4MDA4IC8qIEluZGV4VmFsdWVFbnRy
eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUx
RjE3NEZFMUYzNTg5OTIwMEM3NDk1MCAvKiBXb3JrZXJUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUYxNzRGQzFGMzU4OTg4MDBDNzQ5NTAgLyog
V29ya2VyVHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTUxRjE3NTAzMUYzNThCM0IwMEM3NDk1MCAvKiBKU1NlcnZpY2VXb3JrZXJVcGRhdGVW
aWFDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTFGMTc1MDExRjM1OEIzNjAwQzc0OTUwIC8qIEpTU2VydmljZVdvcmtlclVwZGF0ZVZpYUNhY2hl
LmggKi87IH07CiAJCTUxRjE3NTA2MUYzNThCRjcwMEM3NDk1MCAvKiBKU1dvcmtlclR5cGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjE3NTA1MUYz
NThCREUwMEM3NDk1MCAvKiBKU1dvcmtlclR5cGUuaCAqLzsgfTsKQEAgLTI5OTUsNiArMjk5NSw3
IEBACiAJCTkzQjJEODE2MEY5OTIwRDIwMDZBRTZCMiAvKiBTdWRkZW5UZXJtaW5hdGlvbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCMkQ4MTUwRjk5
MjBEMjAwNkFFNkIyIC8qIFN1ZGRlblRlcm1pbmF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNCMzhFQzMyNTgyMURCNDAwMTk4RTYzIC8q
IFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5M0IzOEVCQTI1ODIxOTNCMDAxOThFNjMgLyogV2ViU3BlZWNoUmVj
b2duaXplclRhc2suaCAqLzsgfTsKIAkJOTNCMzhFQzQyNTgyMURCNzAwMTk4RTYzIC8qIFdlYlNw
ZWVjaFJlY29nbml6ZXJUYXNrTW9jay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTNCMzhFQkIyNTgyMTkzRDAwMTk4RTYzIC8qIFdlYlNwZWVjaFJlY29n
bml6ZXJUYXNrTW9jay5oICovOyB9OworCQk5M0I2MzFFMjI3QUJBMUU2MDA0NDNBNDQgLyogVW5p
cXVlSURCRGF0YWJhc2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5M0I2MzFFMDI3QUJBMUUyMDA0NDNBNDQgLyogVW5pcXVlSURCRGF0YWJh
c2VNYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJOTNCNkEwRTYwQjBCQ0E1QzAwRjUwMjdBIC8qIENvbnRleHRNZW51LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0I2QTBFNTBCMEJDQTVDMDBG
NTAyN0EgLyogQ29udGV4dE1lbnUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk5M0I3MEQ2NDA5RUIwQzdDMDA5RDg0NjggLyogSlNET01CaW5kaW5n
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0I3MEQ0
ODA5RUIwQzdDMDA5RDg0NjggLyogSlNET01CaW5kaW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNCNzBENkEwOUVCMEM3QzAwOUQ4NDY4IC8q
IEpTRXZlbnRMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTNCNzBENEUwOUVCMEM3QzAwOUQ4NDY4IC8qIEpTRXZlbnRMaXN0ZW5lci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMjgyOCw2
ICsxMjgyOSw3IEBACiAJCTkzQjM4RUJBMjU4MjE5M0IwMDE5OEU2MyAvKiBXZWJTcGVlY2hSZWNv
Z25pemVyVGFzay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTcGVlY2hS
ZWNvZ25pemVyVGFzay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0IzOEVCQjI1
ODIxOTNEMDAxOThFNjMgLyogV2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2NrLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jay5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0IzOEVCQzI1ODIxOTNFMDAxOThFNjMgLyog
V2ViU3BlZWNoUmVjb2duaXplclRhc2subW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBXZWJTcGVlY2hSZWNvZ25pemVyVGFzay5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJOTNCNjMxRTAyN0FCQTFFMjAwNDQzQTQ0IC8qIFVuaXF1ZUlEQkRhdGFiYXNl
TWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVbmlxdWVJREJEYXRh
YmFzZU1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCNkEwRTUwQjBC
Q0E1QzAwRjUwMjdBIC8qIENvbnRleHRNZW51LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDb250ZXh0TWVudS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0I3
MEQ0ODA5RUIwQzdDMDA5RDg0NjggLyogSlNET01CaW5kaW5nLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU0RPTUJpbmRpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTNCNzBENEQwOUVCMEM3QzAwOUQ4NDY4IC8qIEpTRXZlbnRMaXN0ZW5lci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNFdmVudExpc3RlbmVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIyMTUxLDYgKzIyMTUzLDcgQEAKIAkJCQk1
MTg4NjRERjFCQkFGMzBGMDBFNTQwQzkgLyogVW5pcXVlSURCRGF0YWJhc2UuaCAqLywKIAkJCQk1
MTk4RjdBMjFCQkRBQTI5MDBFMkNDNUYgLyogVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmNw
cCAqLywKIAkJCQk1MTk4RjdBMzFCQkRBQTI5MDBFMkNDNUYgLyogVW5pcXVlSURCRGF0YWJhc2VD
b25uZWN0aW9uLmggKi8sCisJCQkJOTNCNjMxRTAyN0FCQTFFMjAwNDQzQTQ0IC8qIFVuaXF1ZUlE
QkRhdGFiYXNlTWFuYWdlci5oICovLAogCQkJCTUxOThGN0E2MUJCREQzODEwMEUyQ0M1RiAvKiBV
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcCAqLywKIAkJCQk1MTk4RjdBNzFCQkREMzgx
MDBFMkNDNUYgLyogVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5oICovLAogCQkJKTsKQEAg
LTM3NzcxLDYgKzM3Nzc0LDcgQEAKIAkJCQlBODYzRTIwMTEzNDM0MTIwMDAyNzQ5MjYgLyogVW5p
Y29kZUJpZGkuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxODg2NEUxMUJCQUY1NzQwMEU1NDBDOSAv
KiBVbmlxdWVJREJEYXRhYmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE5OEY3QTUxQkJEQjc5
MzAwRTJDQzVGIC8qIFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8s
CisJCQkJOTNCNjMxRTIyN0FCQTFFNjAwNDQzQTQ0IC8qIFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE5OEY3QTkxQkJERDM4NTAwRTJDQzVGIC8qIFVuaXF1
ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUU0QUZDRkE1MERB
RjI5QTMwMEY1RjU1QyAvKiBVbml0QmV6aWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMThDQzBB
NDI1ODBFRkIxMDAzRDc1RkIgLyogVW5pdmVyc2FsQWNjZXNzWm9vbS5oIGluIEhlYWRlcnMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IGM3YjE3ZmQ3MDc4NTRiMTI4NDk4ZDEx
MThmNGU2ZTdkNWIzZDg1ZmQuLjI4N2MxYmY3NDhjODNjNmMxZTZjNzJiYTEyOGM0ZDBhMWM2NjEy
MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC01MiwxMyArNTIsMTMgQEAKICNp
bmNsdWRlICJOZXR3b3JrU29ja2V0Q2hhbm5lbE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTmV0d29y
a1NvY2tldFN0cmVhbS5oIgogI2luY2x1ZGUgIk5ldHdvcmtTb2NrZXRTdHJlYW1NZXNzYWdlcy5o
IgorI2luY2x1ZGUgIk5ldHdvcmtTdG9yYWdlTWFuYWdlci5oIgogI2luY2x1ZGUgIlBpbmdMb2Fk
LmgiCiAjaW5jbHVkZSAiUHJlY29ubmVjdFRhc2suaCIKICNpbmNsdWRlICJSVENEYXRhQ2hhbm5l
bFJlbW90ZU1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUg
IldlYkVycm9ycy5oIgotI2luY2x1ZGUgIldlYklEQlNlcnZlci5oIgogI2luY2x1ZGUgIldlYlBy
b2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sTWVzc2FnZXMuaCIKICNp
bmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCIKQEAgLTQwOCw4ICs0MDgs
MTIgQEAgYm9vbCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmUKIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6dXBkYXRlUXVvdGFCYXNlZE9uU3BhY2VVc2FnZUZvclRlc3RpbmcoY29uc3Qg
Q2xpZW50T3JpZ2luJiBvcmlnaW4pCiB7Ci0gICAgYXV0byBzdG9yYWdlUXVvdGFNYW5hZ2VyID0g
bV9uZXR3b3JrUHJvY2Vzcy0+c3RvcmFnZVF1b3RhTWFuYWdlcihzZXNzaW9uSUQoKSwgb3JpZ2lu
KTsKLSAgICBzdG9yYWdlUXVvdGFNYW5hZ2VyLT5yZXNldFF1b3RhVXBkYXRlZEJhc2VkT25Vc2Fn
ZUZvclRlc3RpbmcoKTsKKyAgICBhdXRvKiBzZXNzaW9uID0gbV9uZXR3b3JrUHJvY2Vzcy0+bmV0
d29ya1Nlc3Npb24oc2Vzc2lvbklEKCkpOworICAgIGlmICghc2Vzc2lvbikKKyAgICAgICAgcmV0
dXJuOworCisgICAgaWYgKGF1dG8qIHN0b3JhZ2VNYW5hZ2VyID0gc2Vzc2lvbi0+c3RvcmFnZU1h
bmFnZXIoKSkKKyAgICAgICAgc3RvcmFnZU1hbmFnZXItPnJlc2V0UXVvdGFVcGRhdGVkQmFzZWRP
blVzYWdlRm9yVGVzdGluZyhvcmlnaW4pOwogfQogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCkBAIC0xMDAx
LDggKzEwMDUsMTAgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6d3JpdGVC
bG9ic1RvVGVtcG9yYXJ5RmlsZXNGb3JJbmRleGVkREIoY29uc3QKICAgICAgICAgZm9yIChhdXRv
JiBmaWxlIDogZmlsZVJlZmVyZW5jZXMpCiAgICAgICAgICAgICBmaWxlLT5yZXZva2VGaWxlQWNj
ZXNzKCk7CiAKLSAgICAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpKQot
ICAgICAgICAgICAgc2Vzc2lvbi0+ZW5zdXJlV2ViSURCU2VydmVyKCkucmVnaXN0ZXJUZW1wb3Jh
cnlCbG9iRmlsZVBhdGhzKG1fY29ubmVjdGlvbiwgZmlsZVBhdGhzKTsKKyAgICAgICAgaWYgKGF1
dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpKSB7CisgICAgICAgICAgICBpZiAoYXV0byog
c3RvcmFnZU1hbmFnZXIgPSBzZXNzaW9uLT5zdG9yYWdlTWFuYWdlcigpKQorICAgICAgICAgICAg
ICAgIHN0b3JhZ2VNYW5hZ2VyLT5yZWdpc3RlclRlbXBvcmFyeUJsb2JGaWxlUGF0aHMobV9jb25u
ZWN0aW9uLCBmaWxlUGF0aHMpOworICAgICAgICB9CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KFdURk1vdmUoZmlsZVBhdGhzKSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDdjNzllMmEyMDk3NmExMzljN2Y2
NjdmMTEzYzQ4OTQ2ZGVkZDU2NDEuLjE3NWJkMzgxNjQ3NDkxNmNjMDExNWM5ZDhmZjJjNTg2YmQw
ZTMxZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwCkBAIC0yNjQsOCArMjY0LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGlkQ2xvc2Uo
SVBDOjpDb25uZWN0aW9uJikKICAgICAvLyBNYWtlIHN1cmUgd2UgZmx1c2ggYWxsIGNvb2tpZXMg
dG8gZGlzayBiZWZvcmUgZXhpdGluZy4KICAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oWyZdIChh
dXRvJiBzZXNzaW9uKSB7CiAgICAgICAgIHBsYXRmb3JtRmx1c2hDb29raWVzKHNlc3Npb24uc2Vz
c2lvbklEKCksIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7Ci0gICAgICAgIC8vIE1ha2Ugc3Vy
ZSByZWZlcmVuY2UgdG8gTmV0d29ya1Byb2Nlc3MgaW4gc3BhY2VSZXF1ZXN0ZXIgaXMgcmVtb3Zl
ZC4KLSAgICAgICAgc2Vzc2lvbi5jbG9zZUlEQlNlcnZlcihbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7
IH0pOwogICAgIH0pOwogfQogCkBAIC0zODIsNyArMzgwLDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
czo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoUHJvY2Vzc0lkZW50aWZpZXIg
aWRlbnQKICAgICBjb25uZWN0aW9uLnNldE9uTGluZVN0YXRlKE5ldHdvcmtTdGF0ZU5vdGlmaWVy
OjpzaW5nbGV0b24oKS5vbkxpbmUoKSk7CiAKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdv
cmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKLSAgICAgICAgc2Vzc2lvbi0+ZW5zdXJlV2ViSURCU2Vy
dmVyKCkuYWRkQ29ubmVjdGlvbihjb25uZWN0aW9uLmNvbm5lY3Rpb24oKSwgaWRlbnRpZmllcik7
CiAgICAgICAgIGlmIChhdXRvKiBtYW5hZ2VyID0gc2Vzc2lvbi0+c3RvcmFnZU1hbmFnZXIoKSkK
ICAgICAgICAgICAgIG1hbmFnZXItPnN0YXJ0UmVjZWl2aW5nTWVzc2FnZUZyb21Db25uZWN0aW9u
KGNvbm5lY3Rpb24uY29ubmVjdGlvbigpKTsKICAgICB9CkBAIC00MDYsOCArNDAzLDcgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6YWRkV2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlUGFy
YW1ldGVycyYmIHBhcmFtZXRlcnMKICAgICBhZGRTZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlcihz
ZXNzaW9uSUQsIHBhcmFtZXRlcnMucGVyT3JpZ2luU3RvcmFnZVF1b3RhLCBwYXJhbWV0ZXJzLnBl
clRoaXJkUGFydHlPcmlnaW5TdG9yYWdlUXVvdGEsIHBhcmFtZXRlcnMuY2FjaGVTdG9yYWdlRGly
ZWN0b3J5LCBwYXJhbWV0ZXJzLmNhY2hlU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7
CiAKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsK
LSAgICAgICAgc2Vzc2lvbi0+YWRkU3RvcmFnZU1hbmFnZXJTZXNzaW9uKHBhcmFtZXRlcnMuZ2Vu
ZXJhbFN0b3JhZ2VEaXJlY3RvcnksIHBhcmFtZXRlcnMuZ2VuZXJhbFN0b3JhZ2VEaXJlY3RvcnlI
YW5kbGUsIHBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmxvY2Fs
U3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7Ci0gICAgICAgIHNlc3Npb24tPmFkZElu
ZGV4ZWREYXRhYmFzZVNlc3Npb24ocGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VEaXJlY3Rvcnks
IHBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKKyAg
ICAgICAgc2Vzc2lvbi0+YWRkU3RvcmFnZU1hbmFnZXJTZXNzaW9uKHBhcmFtZXRlcnMuZ2VuZXJh
bFN0b3JhZ2VEaXJlY3RvcnksIHBhcmFtZXRlcnMuZ2VuZXJhbFN0b3JhZ2VEaXJlY3RvcnlIYW5k
bGUsIHBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmxvY2FsU3Rv
cmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSwgcGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VE
aXJlY3RvcnksIHBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFu
ZGxlLCBwYXJhbWV0ZXJzLmNhY2hlU3RvcmFnZURpcmVjdG9yeSwgcGFyYW1ldGVycy5wZXJPcmln
aW5TdG9yYWdlUXVvdGEsIHBhcmFtZXRlcnMucGVyVGhpcmRQYXJ0eU9yaWdpblN0b3JhZ2VRdW90
YSk7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgICAgICBzZXNzaW9uLT5hZGRTZXJ2
aWNlV29ya2VyU2Vzc2lvbihwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRp
b25EZWxheUVuYWJsZWQsIFdURk1vdmUocGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uRGlyZWN0b3J5KSwgcGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5RXh0ZW5zaW9uSGFuZGxlKTsKICNlbmRpZgpAQCAtMTQ1MiwxMyArMTQ0OCw2IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OmZldGNoV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBPcHRpb25TZXQ8V2Vic2l0CiAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+bV93ZWJzaXRl
RGF0YS5ob3N0TmFtZXNXaXRoSFNUU0NhY2hlID0gaG9zdE5hbWVzV2l0aEhTVFNDYWNoZShzZXNz
aW9uSUQpOwogI2VuZGlmCiAKLSAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJz
aXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykgJiYgc2Vzc2lvbiAmJiBzZXNzaW9uLT5o
YXNJREJEYXRhYmFzZVBhdGgoKSkgewotICAgICAgICBzZXNzaW9uLT5lbnN1cmVXZWJJREJTZXJ2
ZXIoKS5nZXRPcmlnaW5zKFtjYWxsYmFja0FnZ3JlZ2F0b3JdKGF1dG8mJiBvcmlnaW5zKSB7Ci0g
ICAgICAgICAgICB3aGlsZSAoIW9yaWdpbnMuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIGNh
bGxiYWNrQWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVuZCh7IG9yaWdpbnMu
dGFrZUFueSgpLCBXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcywgMCB9KTsKLSAg
ICAgICAgfSk7Ci0gICAgfQotCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGlmICh3
ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6U2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbnMpICYmIHNlc3Npb24gJiYgc2Vzc2lvbi0+aGFzU2VydmljZVdvcmtlckRhdGFi
YXNlUGF0aCgpKSB7CiAgICAgICAgIHNlc3Npb24tPmVuc3VyZVNXU2VydmVyKCkuZ2V0T3JpZ2lu
c1dpdGhSZWdpc3RyYXRpb25zKFtjYWxsYmFja0FnZ3JlZ2F0b3JdKGNvbnN0IEhhc2hTZXQ8U2Vj
dXJpdHlPcmlnaW5EYXRhPiYgc2VjdXJpdHlPcmlnaW5zKSBtdXRhYmxlIHsKQEAgLTE1MjUsOSAr
MTUxNCw2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlw
ZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSkgJiYgc2Vzc2lvbikKICAgICAg
ICAgQ2FjaGVTdG9yYWdlOjpFbmdpbmU6OmNsZWFyQWxsQ2FjaGVzKCpzZXNzaW9uLCBbY2xlYXJU
YXNrc0hhbmRsZXJdIHsgfSk7CiAKLSAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhX
ZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykgJiYgIXNlc3Npb25JRC5pc0VwaGVt
ZXJhbCgpICYmIHNlc3Npb24pCi0gICAgICAgIHNlc3Npb24tPmVuc3VyZVdlYklEQlNlcnZlcigp
LmNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzTW9kaWZpZWRTaW5jZShtb2RpZmllZFNpbmNlLCBbY2xl
YXJUYXNrc0hhbmRsZXJdIHsgfSk7Ci0KICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAg
Ym9vbCBjbGVhclNlcnZpY2VXb3JrZXJzID0gd2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJz
aXRlRGF0YVR5cGU6OkRPTUNhY2hlKSB8fCB3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNp
dGVEYXRhVHlwZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMpOwogICAgIGlmIChjbGVhclNl
cnZpY2VXb3JrZXJzICYmICFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSAmJiBzZXNzaW9uKQpAQCAt
MTYyMCw5ICsxNjA2LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFG
b3JPcmlnaW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW8KICAgICAgICAgICAgIENh
Y2hlU3RvcmFnZTo6RW5naW5lOjpjbGVhckNhY2hlc0Zvck9yaWdpbigqc2Vzc2lvbiwgU2VjdXJp
dHlPcmlnaW5EYXRhIHsgb3JpZ2luRGF0YSB9LCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CiAg
ICAgfQogCi0gICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBl
OjpJbmRleGVkREJEYXRhYmFzZXMpICYmICFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSAmJiBzZXNz
aW9uKQotICAgICAgICBzZXNzaW9uLT5lbnN1cmVXZWJJREJTZXJ2ZXIoKS5jbG9zZUFuZERlbGV0
ZURhdGFiYXNlc0Zvck9yaWdpbnMob3JpZ2luRGF0YXMsIFtjbGVhclRhc2tzSGFuZGxlcl0geyB9
KTsKLQogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBib29sIGNsZWFyU2VydmljZVdv
cmtlcnMgPSB3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6RE9NQ2Fj
aGUpIHx8IHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9ucyk7CiAgICAgaWYgKGNsZWFyU2VydmljZVdvcmtlcnMgJiYgIXNl
c3Npb25JRC5pc0VwaGVtZXJhbCgpICYmIHNlc3Npb24pIHsKQEAgLTE4MTEsMTcgKzE3OTQsNiBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVBbmRSZXN0cmljdFdlYnNpdGVEYXRhRm9yUmVn
aXN0cmFibGVEb21haW5zKFBBTDo6U2VzcwogICAgICAgICAgICAgfQogICAgICAgICB9KTsKICAg
ICB9Ci0KLSAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6
OkluZGV4ZWREQkRhdGFiYXNlcykgJiYgc2Vzc2lvbiAmJiBzZXNzaW9uLT5oYXNJREJEYXRhYmFz
ZVBhdGgoKSkgewotICAgICAgICBzZXNzaW9uLT5lbnN1cmVXZWJJREJTZXJ2ZXIoKS5nZXRPcmln
aW5zKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgc2Vzc2lvbklELCBjYWxs
YmFja0FnZ3JlZ2F0b3IsIGRvbWFpbnNUb0RlbGV0ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9y
XShhdXRvJiYgb3JpZ2lucykgewotICAgICAgICAgICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtT
ZXNzaW9uKHNlc3Npb25JRCk7Ci0gICAgICAgICAgICBpZiAoIXNlc3Npb24gfHwgIXNlc3Npb24t
PndlYklEQlNlcnZlcigpKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAg
YXV0byBvcmlnaW5zVG9EZWxldGUgPSBmaWx0ZXJGb3JSZWdpc3RyYWJsZURvbWFpbnMob3JpZ2lu
cywgZG9tYWluc1RvRGVsZXRlQWxsTm9uQ29va2llV2Vic2l0ZURhdGFGb3IsIGNhbGxiYWNrQWdn
cmVnYXRvci0+bV9kb21haW5zKTsKLSAgICAgICAgICAgIHNlc3Npb24tPndlYklEQlNlcnZlcigp
LT5jbG9zZUFuZERlbGV0ZURhdGFiYXNlc0Zvck9yaWdpbnMob3JpZ2luc1RvRGVsZXRlLCBbY2Fs
bGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwotICAgICAgICB9KTsKLSAgICB9CiAgICAgCiAjaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGJvb2wgY2xlYXJTZXJ2aWNlV29ya2VycyA9IHdlYnNp
dGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSkgfHwgd2Vic2l0
ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25zKTsKQEAgLTE5NTgsMTMgKzE5MzAsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZWdp
c3RyYWJsZURvbWFpbnNXaXRoV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELAog
ICAgICAgICB9KTsKICAgICB9CiAgICAgCi0gICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFp
bnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpICYmIHNlc3Npb24gJiYgc2Vz
c2lvbi0+aGFzSURCRGF0YWJhc2VQYXRoKCkpIHsKLSAgICAgICAgc2Vzc2lvbi0+ZW5zdXJlV2Vi
SURCU2VydmVyKCkuZ2V0T3JpZ2lucyhbY2FsbGJhY2tBZ2dyZWdhdG9yXShhdXRvJiYgb3JpZ2lu
cykgewotICAgICAgICAgICAgd2hpbGUgKCFvcmlnaW5zLmlzRW1wdHkoKSkKLSAgICAgICAgICAg
ICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fd2Vic2l0ZURhdGEuZW50cmllcy5hcHBlbmQoeyBv
cmlnaW5zLnRha2VBbnkoKSwgV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMsIDAg
fSk7Ci0gICAgICAgIH0pOwotICAgIH0KLSAgICAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9ucykgJiYgc2Vzc2lvbiAmJiBzZXNzaW9uLT5oYXNTZXJ2aWNl
V29ya2VyRGF0YWJhc2VQYXRoKCkpIHsKICAgICAgICAgc2Vzc2lvbi0+ZW5zdXJlU1dTZXJ2ZXIo
KS5nZXRPcmlnaW5zV2l0aFJlZ2lzdHJhdGlvbnMoW2NhbGxiYWNrQWdncmVnYXRvcl0oY29uc3Qg
SGFzaFNldDxTZWN1cml0eU9yaWdpbkRhdGE+JiBzZWN1cml0eU9yaWdpbnMpIG11dGFibGUgewpA
QCAtMjEyOSw0MyArMjA5NCwxMCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwcm9jZXNzV2lsbFN1
c3BlbmRJbW1pbmVudGx5Rm9yVGVzdGluZ1N5bmMoQ29tcGxldGlvbkhhbmRsZQogICAgIHByZXBh
cmVUb1N1c3BlbmQodHJ1ZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lk
IE5ldHdvcmtQcm9jZXNzOjpzdXNwZW5kSURCU2VydmVycyhib29sIGlzU3VzcGVuc2lvbkltbWlu
ZW50KQotewotICAgIG1fc2hvdWxkU3VzcGVuZElEQlNlcnZlcnMgPSB0cnVlOwotICAgICsrbV9z
dXNwZW5zaW9uSWRlbnRpZmllcjsKLQotICAgIGJvb2wgYWxsU3VzcGVuZGVkID0gdHJ1ZTsKLSAg
ICBhdXRvIGNvbmRpdGlvbiA9IGlzU3VzcGVuc2lvbkltbWluZW50ID8gV2ViSURCU2VydmVyOjpT
dXNwZW5zaW9uQ29uZGl0aW9uOjpBbHdheXMgOiBXZWJJREJTZXJ2ZXI6OlN1c3BlbnNpb25Db25k
aXRpb246OklmSWRsZTsKLSAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oWyZdKGF1dG8mIHNlc3Np
b24pIHsKLSAgICAgICAgaWYgKGF1dG8qIHNlcnZlciA9IHNlc3Npb24ud2ViSURCU2VydmVyKCkp
Ci0gICAgICAgICAgICBhbGxTdXNwZW5kZWQgJj0gc2VydmVyLT5zdXNwZW5kKGNvbmRpdGlvbik7
Ci0gICAgfSk7Ci0KLSAgICBpZiAoYWxsU3VzcGVuZGVkKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2hBZnRlcig1X3MsIFt0aGlzLCB3ZWFrVGhpcyA9IFdl
YWtQdHIgeyAqdGhpcyB9LCBzdXNwZW5zaW9uSWRlbnRpZmllciA9IG1fc3VzcGVuc2lvbklkZW50
aWZpZXJdIHsKLSAgICAgICAgaWYgKCF3ZWFrVGhpcykKLSAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICBpZiAoIW1fc2hvdWxkU3VzcGVuZElEQlNlcnZlcnMgfHwgc3VzcGVuc2lvbklkZW50
aWZpZXIgIT0gbV9zdXNwZW5zaW9uSWRlbnRpZmllcikKLSAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oW10oYXV0byYgc2Vzc2lvbikgewotICAgICAg
ICAgICAgaWYgKGF1dG8qIHNlcnZlciA9IHNlc3Npb24ud2ViSURCU2VydmVyKCkpCi0gICAgICAg
ICAgICAgICAgc2VydmVyLT5zdXNwZW5kKFdlYklEQlNlcnZlcjo6U3VzcGVuc2lvbkNvbmRpdGlv
bjo6QWx3YXlzKTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci19Ci0KIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OnByZXBhcmVUb1N1c3BlbmQoYm9vbCBpc1N1c3BlbnNpb25JbW1pbmVudCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFJFTEVBU0VfTE9H
KFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBOZXR3b3JrUHJvY2Vzczo6cHJlcGFyZVRvU3VzcGVu
ZCgpLCBpc1N1c3BlbnNpb25JbW1pbmVudD0lZCIsIHRoaXMsIGlzU3VzcGVuc2lvbkltbWluZW50
KTsKIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgc3VzcGVuZElEQlNlcnZlcnMoaXNT
dXNwZW5zaW9uSW1taW5lbnQpOwotI2VuZGlmCi0KICAgICBsb3dNZW1vcnlIYW5kbGVyKENyaXRp
Y2FsOjpZZXMpOwogCiAgICAgUmVmUHRyPENhbGxiYWNrQWdncmVnYXRvcj4gY2FsbGJhY2tBZ2dy
ZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoW3RoaXMsIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CkBAIC0yMjIzLDE4
ICsyMTU1LDEwIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlc3VtZSgpCiAjaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQogICAgICAgICBpZiAoYXV0byogc3dTZXJ2ZXIgPSBzZXNzaW9uLnN3U2Vy
dmVyKCkpCiAgICAgICAgICAgICBzd1NlcnZlci0+ZW5kU3VzcGVuc2lvbigpOwotI2VuZGlmCi0j
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAgICAgaWYgKGF1dG8qIHNlcnZlciA9IHNlc3Np
b24ud2ViSURCU2VydmVyKCkpCi0gICAgICAgICAgICBzZXJ2ZXItPnJlc3VtZSgpOwogI2VuZGlm
CiAgICAgICAgIGlmIChhdXRvKiBtYW5hZ2VyID0gc2Vzc2lvbi5zdG9yYWdlTWFuYWdlcigpKQog
ICAgICAgICAgICAgbWFuYWdlci0+cmVzdW1lKCk7CiAgICAgfSk7Ci0KLSNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQotICAgIG1fc2hvdWxkU3VzcGVuZElEQlNlcnZlcnMgPSBmYWxzZTsKLSNlbmRp
ZgogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwcmVmZXRjaEROUyhjb25zdCBTdHJpbmcmIGhv
c3RuYW1lKQpAQCAtMjI4MSwxMiArMjIwNSwxNSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzeW5j
TG9jYWxTdG9yYWdlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZAog
CiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZXNldFF1b3RhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAg
IExvY2tlciBsb2NrZXIgeyBtX3Nlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2Vyc0xvY2sgfTsKLSAg
ICBpZiAoYXV0byogc2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXIgPSBtX3Nlc3Npb25TdG9yYWdl
UXVvdGFNYW5hZ2Vycy5nZXQoc2Vzc2lvbklEKSkgewotICAgICAgICBmb3IgKGF1dG8gc3RvcmFn
ZVF1b3RhTWFuYWdlciA6IHNlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2VyLT5leGlzdGluZ1N0b3Jh
Z2VRdW90YU1hbmFnZXJzKCkpCi0gICAgICAgICAgICBzdG9yYWdlUXVvdGFNYW5hZ2VyLT5yZXNl
dFF1b3RhRm9yVGVzdGluZygpOwotICAgIH0KLSAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAg
IGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOworICAgIGlmICghc2Vz
c2lvbikKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKCk7CisKKyAgICBhdXRvKiBz
dG9yYWdlTWFuYWdlciA9IHNlc3Npb24tPnN0b3JhZ2VNYW5hZ2VyKCk7CisgICAgaWYgKCFzdG9y
YWdlTWFuYWdlcikKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKCk7CisKKyAgICBz
dG9yYWdlTWFuYWdlci0+cmVzZXRRdW90YUZvclRlc3RpbmcoV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVhclN0b3JhZ2UoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCkBAIC0yMjk4LDYgKzIyMjUsMTYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2xlYXJT
dG9yYWdlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm8KICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAordm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGlk
SW5jcmVhc2VRdW90YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IENsaWVudE9yaWdp
biYgb3JpZ2luLCBRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIgaWRlbnRpZmllciwgc3Rk
OjpvcHRpb25hbDx1aW50NjRfdD4gbmV3UXVvdGEpCit7CisgICAgYXV0byogc2Vzc2lvbiA9IG5l
dHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7CisgICAgaWYgKCFzZXNzaW9uKQorICAgICAgICByZXR1
cm47CisKKyAgICBpZiAoYXV0byogbWFuYWdlciA9IHNlc3Npb24tPnN0b3JhZ2VNYW5hZ2VyKCkp
CisgICAgICAgIG1hbmFnZXItPmRpZEluY3JlYXNlUXVvdGEob3JpZ2luLCBpZGVudGlmaWVyLCBu
ZXdRdW90YSk7Cit9CisKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlbmFtZU9yaWdpbkluV2Vic2l0
ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIG9sZE5hbWUsIGNvbnN0
IFVSTCYgbmV3TmFtZSwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byBh
Z2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwpAQCAtMjMxMCw5ICsyMjQ3LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVu
YW1lT3JpZ2luSW5XZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFUK
ICAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKICAgICBpZiAo
YXV0byogbWFuYWdlciA9IHNlc3Npb24gPyBzZXNzaW9uLT5zdG9yYWdlTWFuYWdlcigpIDogbnVs
bHB0cikKICAgICAgICAgbWFuYWdlci0+bW92ZURhdGEob2xkT3JpZ2luLCBuZXdPcmlnaW4sIFth
Z2dyZWdhdG9yXSB7IH0pOwotCi0gICAgaWYgKGRhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0
YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykgJiYgc2Vzc2lvbiAmJiBzZXNzaW9uLT5oYXNJREJE
YXRhYmFzZVBhdGgoKSkKLSAgICAgICAgc2Vzc2lvbi0+ZW5zdXJlV2ViSURCU2VydmVyKCkucmVu
YW1lT3JpZ2luKG9sZE9yaWdpbiwgbmV3T3JpZ2luLCBbYWdncmVnYXRvcl0geyB9KTsKIH0KIAog
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKQEAgLTIzNzIsNyArMjMwNiw4IEBAIFJlZlB0cjxT
dG9yYWdlUXVvdGFNYW5hZ2VyPiBOZXR3b3JrUHJvY2Vzczo6c3RvcmFnZVF1b3RhTWFuYWdlcihQ
QUw6OlNlc3Npb25JRCBzCiAgICAgU3RvcmFnZVF1b3RhTWFuYWdlcjo6VXNhZ2VHZXR0ZXIgdXNh
Z2VHZXR0ZXIgPSBbY2FjaGVSb290UGF0aCA9IHNlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2VyLT5j
YWNoZVJvb3RQYXRoKCkuaXNvbGF0ZWRDb3B5KCksIGlkYlJvb3RQYXRoID0gaWRiUm9vdFBhdGgu
aXNvbGF0ZWRDb3B5KCksIG9yaWdpbiA9IG9yaWdpbi5pc29sYXRlZENvcHkoKV0oKSB7CiAgICAg
ICAgIEFTU0VSVCghaXNNYWluUnVuTG9vcCgpKTsKIAotICAgICAgICByZXR1cm4gQ2FjaGVTdG9y
YWdlOjpFbmdpbmU6OmRpc2tVc2FnZShjYWNoZVJvb3RQYXRoLCBvcmlnaW4pICsgSURCU2VydmVy
OjpJREJTZXJ2ZXI6OmRpc2tVc2FnZShpZGJSb290UGF0aCwgb3JpZ2luKTsKKyAgICAgICAgYXV0
byBjYWNoZVN0b3JhZ2VQYXRoID0gQ2FjaGVTdG9yYWdlOjpFbmdpbmU6OnN0b3JhZ2VQYXRoKGNh
Y2hlUm9vdFBhdGgsIG9yaWdpbik7CisgICAgICAgIHJldHVybiBDYWNoZVN0b3JhZ2U6OkVuZ2lu
ZTo6ZGlza1VzYWdlKGNhY2hlU3RvcmFnZVBhdGgpICsgSURCU2VydmVyOjpJREJTZXJ2ZXI6OmRp
c2tVc2FnZShpZGJSb290UGF0aCwgb3JpZ2luKTsKICAgICB9OwogICAgIFN0b3JhZ2VRdW90YU1h
bmFnZXI6OlF1b3RhSW5jcmVhc2VSZXF1ZXN0ZXIgcXVvdGFJbmNyZWFzZVJlcXVlc3RlciA9IFt0
aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBzZXNzaW9uSUQsIG9yaWdpbl0gKHVp
bnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgY3VycmVudFNwYWNlLCB1aW50NjRfdCByZXF1
ZXN0ZWRJbmNyZWFzZSwgYXV0byYmIGNhbGxiYWNrKSB7CiAgICAgICAgIEFTU0VSVChpc01haW5S
dW5Mb29wKCkpOwpAQCAtMjU4Niw4ICsyNTIxLDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVt
b3ZlS2VwdEFsaXZlTG9hZChOZXR3b3JrUmVzb3VyY2VMb2FkZXImIGxvYWRlcikKIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OmNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NDbG9zZWQoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7CiAgICAgaWYgKGF1dG8q
IHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIGlmIChhdXRv
KiBzZXJ2ZXIgPSBzZXNzaW9uLT53ZWJJREJTZXJ2ZXIoKSkKLSAgICAgICAgICAgIHNlcnZlci0+
cmVtb3ZlQ29ubmVjdGlvbihjb25uZWN0aW9uKTsKICAgICAgICAgaWYgKGF1dG8qIG1hbmFnZXIg
PSBzZXNzaW9uLT5zdG9yYWdlTWFuYWdlcigpKQogICAgICAgICAgICAgbWFuYWdlci0+c3RvcFJl
Y2VpdmluZ01lc3NhZ2VGcm9tQ29ubmVjdGlvbihjb25uZWN0aW9uKTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggNzg3NzkyN2Ex
N2M1NTk2ZWIwM2JkNGFjZjRkNThlNDE4YWM4YmEyMy4uMGY4NTMzZWQxM2RkMjYyNzdhNmRkNTJh
YjZkYWJlMjBjM2UwODgwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkxvY2FsU3RvcmFnZURh
dGFiYXNlVHJhY2tlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2Vy
LmgiCiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIuaCIKKyNpbmNsdWRl
ICJRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSVENEYXRhQ2hh
bm5lbFJlbW90ZU1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIK
ICNpbmNsdWRlICJXZWJQYWdlUHJveHlJZGVudGlmaWVyLmgiCkBAIC0yODgsMTIgKzI4OSwxMSBA
QCBwdWJsaWM6CiAgICAgTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXImIG5ldHdvcmtDb250
ZW50UnVsZUxpc3RNYW5hZ2VyKCkgeyByZXR1cm4gbV9uZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFu
YWdlcjsgfQogI2VuZGlmCiAKLSAgICBib29sIHNob3VsZFN1c3BlbmRJREJTZXJ2ZXJzKCkgY29u
c3QgeyByZXR1cm4gbV9zaG91bGRTdXNwZW5kSURCU2VydmVyczsgfQotCiAgICAgdm9pZCBzeW5j
TG9jYWxTdG9yYWdlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKICAgICB2b2lkIHJl
c2V0UXVvdGEoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAg
ICAgdm9pZCBjbGVhclN0b3JhZ2UoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CisgICAgdm9pZCBkaWRJbmNyZWFzZVF1b3RhKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIs
IHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IG5ld1F1b3RhKTsKICAgICB2b2lkIHJlbmFtZU9yaWdp
bkluV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYsIE9w
dGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwog
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTQ3Myw4ICs0NzMsNiBAQCBwcml2YXRlOgog
ICAgIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVBc05vQWNjZXNzKGNvbnN0IFN0cmluZyYpIGNvbnN0
OwogICAgIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVBc0NPUlNFbmFibGVkKGNvbnN0IFN0cmluZyYp
IGNvbnN0OwogCi0gICAgdm9pZCBzdXNwZW5kSURCU2VydmVycyhib29sIGlzU3VzcGVuc2lvbklt
bWluZW50KTsKLQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdm9pZCBzZXRJc0hvbGRp
bmdMb2NrZWRGaWxlcyhib29sKTsKICNlbmRpZgpAQCAtNDgyLDYgKzQ4MCw3IEBAIHByaXZhdGU6
CiAgICAgY2xhc3MgU2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXIgewogICAgICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CisgICAgICAgIFNlc3Npb25TdG9yYWdlUXVv
dGFNYW5hZ2VyKCkgPSBkZWxldGU7CiAgICAgICAgIFNlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2Vy
KGNvbnN0IFN0cmluZyYgY2FjaGVSb290UGF0aCwgdWludDY0X3QgZGVmYXVsdFF1b3RhLCB1aW50
NjRfdCBkZWZhdWx0VGhpcmRQYXJ0eVF1b3RhKQogICAgICAgICAgICAgOiBtX2NhY2hlUm9vdFBh
dGgoY2FjaGVSb290UGF0aCkKICAgICAgICAgICAgICwgbV9kZWZhdWx0UXVvdGEoZGVmYXVsdFF1
b3RhKQpAQCAtNTA4LDggKzUwNyw4IEBAIHByaXZhdGU6CiAgICAgcHJpdmF0ZToKICAgICAgICAg
U3RyaW5nIG1fY2FjaGVSb290UGF0aDsKICAgICAgICAgU3RyaW5nIG1faWRiUm9vdFBhdGg7Ci0g
ICAgICAgIHVpbnQ2NF90IG1fZGVmYXVsdFF1b3RhIHsgV2ViQ29yZTo6U3RvcmFnZVF1b3RhTWFu
YWdlcjo6ZGVmYXVsdFF1b3RhKCkgfTsKLSAgICAgICAgdWludDY0X3QgbV9kZWZhdWx0VGhpcmRQ
YXJ0eVF1b3RhIHsgV2ViQ29yZTo6U3RvcmFnZVF1b3RhTWFuYWdlcjo6ZGVmYXVsdFRoaXJkUGFy
dHlRdW90YSgpIH07CisgICAgICAgIHVpbnQ2NF90IG1fZGVmYXVsdFF1b3RhOworICAgICAgICB1
aW50NjRfdCBtX2RlZmF1bHRUaGlyZFBhcnR5UXVvdGE7CiAgICAgICAgIEhhc2hNYXA8V2ViQ29y
ZTo6Q2xpZW50T3JpZ2luLCBSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZVF1b3RhTWFuYWdlcj4+IG1f
c3RvcmFnZVF1b3RhTWFuYWdlcnM7CiAgICAgfTsKICAgICB2b2lkIGFkZFNlc3Npb25TdG9yYWdl
UXVvdGFNYW5hZ2VyKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBkZWZhdWx0UXVvdGEsIHVpbnQ2
NF90IGRlZmF1bHRUaGlyZFBhcnR5UXVvdGEsIGNvbnN0IFN0cmluZyYgY2FjaGVSb290UGF0aCwg
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJik7CkBAIC01NDksOSArNTQ4LDYgQEAgcHJpdmF0ZToK
ICAgICBXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXIgbV93ZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXI7
CiAgICAgUmVmUHRyPFByb2Nlc3NBc3NlcnRpb24+IG1faG9sZGluZ0xvY2tlZEZpbGVBc3NlcnRp
b247CiAjZW5kaWYKLQotICAgIGJvb2wgbV9zaG91bGRTdXNwZW5kSURCU2VydmVycyB7IGZhbHNl
IH07Ci0gICAgdWludDY0X3QgbV9zdXNwZW5zaW9uSWRlbnRpZmllciB7IDAgfTsKICAgICAKICNp
ZiBFTkFCTEUoV0VCX1JUQykKICAgICBSZWZQdHI8UlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2Vy
UHJveHk+IG1fcnRjRGF0YUNoYW5uZWxQcm94eTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDYzN2UxNTlm
MTg2MzkzYmVjNWNjMDVhYjViZDU3ODBiZThjNmZjZTQuLjYzMWUyYjYwNzNjMDE5MjEzMDY4YzIw
OTZiODI3YjI3OWRiYzdkZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTc5LDYgKzE3OSw3IEBAIG1l
c3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKIAogICAgIFJlc2V0UXVv
dGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYwogICAgIENsZWFyU3RvcmFn
ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+ICgpIEFzeW5jCisgICAgRGlkSW5jcmVhc2VR
dW90YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0cnVjdCBXZWJDb3JlOjpDbGllbnRPcmln
aW4gb3JpZ2luLCBXZWJLaXQ6OlF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllciBpZGVudGlm
aWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBuZXdRdW90YSkKICAgICAKICNpZiBFTkFCTEUo
QVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgSGFzQXBwQm91bmRTZXNzaW9uKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCkgLT4gKGJvb2wgaGFzQXBwQm91bmRTZXNzaW9uKSBBc3luYwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAppbmRleCBkNzYxNjI4
NTBjYWQ4NDM4ZjAwODg5MDUzZjdlZGM4MmYzZTMzYTNkLi40YTcxOTQxY2FlNzA2ZDczMGJhZTIw
YjI4MGUzZDhmZjc1ZDk0NTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtTZXNzaW9uLmNwcApAQCAtMjA1LDggKzIwNSw2IEBAIHZvaWQgTmV0d29ya1Nlc3Np
b246OmludmFsaWRhdGVBbmRDYW5jZWwoKQogICAgIGlmIChtX3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MpCiAgICAgICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+aW52YWxpZGF0ZUFuZENhbmNl
bCgpOwogI2VuZGlmCi0gICAgaWYgKGF1dG8gc2VydmVyID0gc3RkOjpleGNoYW5nZShtX3dlYklE
QlNlcnZlciwgbnVsbHB0cikpCi0gICAgICAgIHNlcnZlci0+Y2xvc2UoKTsKICAgICBpZiAoYXV0
byBtYW5hZ2VyID0gc3RkOjpleGNoYW5nZShtX3N0b3JhZ2VNYW5hZ2VyLCBudWxscHRyKSkKICAg
ICAgICAgbWFuYWdlci0+Y2xvc2UoKTsKICAgICBtX2NhY2hlRW5naW5lID0gbnVsbHB0cjsKQEAg
LTY2MSw1NSArNjU5LDE4IEBAIFdlYlNoYXJlZFdvcmtlclNlcnZlciYgTmV0d29ya1Nlc3Npb246
OmVuc3VyZVNoYXJlZFdvcmtlclNlcnZlcigpCiAgICAgcmV0dXJuICptX3NoYXJlZFdvcmtlclNl
cnZlcjsKIH0KIAotV2ViSURCU2VydmVyJiBOZXR3b3JrU2Vzc2lvbjo6ZW5zdXJlV2ViSURCU2Vy
dmVyKCkKLXsKLSAgICBpZiAoIW1fd2ViSURCU2VydmVyKSB7Ci0gICAgICAgIFN0cmluZyBwYXRo
OwotICAgICAgICBpZiAoIXNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkpIHsKLSAgICAgICAgICAg
IEFTU0VSVCghbV9pZGJEYXRhYmFzZVBhdGguaXNOdWxsKCkpOwotICAgICAgICAgICAgcGF0aCA9
IG1faWRiRGF0YWJhc2VQYXRoOwotICAgICAgICB9Ci0KLSAgICAgICAgYXV0byBzcGFjZVJlcXVl
c3RlciA9IFtuZXR3b3JrUHJvY2VzcyA9IFJlZiB7IG5ldHdvcmtQcm9jZXNzKCkgfSwgc2Vzc2lv
bklEID0gc2Vzc2lvbklEKCldKGNvbnN0IGF1dG8mIG9yaWdpbiwgdWludDY0X3Qgc3BhY2VSZXF1
ZXN0ZWQpIHsKLSAgICAgICAgICAgIHJldHVybiBuZXR3b3JrUHJvY2Vzcy0+c3RvcmFnZVF1b3Rh
TWFuYWdlcihzZXNzaW9uSUQsIG9yaWdpbiktPnJlcXVlc3RTcGFjZU9uQmFja2dyb3VuZFRocmVh
ZChzcGFjZVJlcXVlc3RlZCk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgbV93ZWJJREJTZXJ2ZXIg
PSBXZWJJREJTZXJ2ZXI6OmNyZWF0ZShzZXNzaW9uSUQoKSwgcGF0aCwgV1RGTW92ZShzcGFjZVJl
cXVlc3RlcikpOwotICAgICAgICBpZiAobmV0d29ya1Byb2Nlc3MoKS5zaG91bGRTdXNwZW5kSURC
U2VydmVycygpKQotICAgICAgICAgICAgbV93ZWJJREJTZXJ2ZXItPnN1c3BlbmQoV2ViSURCU2Vy
dmVyOjpTdXNwZW5zaW9uQ29uZGl0aW9uOjpBbHdheXMpOwotICAgIH0KLSAgICByZXR1cm4gKm1f
d2ViSURCU2VydmVyOwotfQotCi12b2lkIE5ldHdvcmtTZXNzaW9uOjpjbG9zZUlEQlNlcnZlcihD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgaWYg
KCFtX3dlYklEQlNlcnZlcikKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKCk7Ci0K
LSAgICBzdGQ6OmV4Y2hhbmdlKG1fd2ViSURCU2VydmVyLCBudWxscHRyKS0+Y2xvc2UoV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOwotfQotCi12b2lkIE5ldHdvcmtTZXNzaW9uOjphZGRJbmRl
eGVkRGF0YWJhc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYgaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5
LCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIGhhbmRsZSkKLXsKLSAgICAvLyAqKioqKioqKioK
LSAgICAvLyBJTVBPUlRBTlQ6IERvIG5vdCBjaGFuZ2UgdGhlIGRpcmVjdG9yeSBzdHJ1Y3R1cmUg
Zm9yIGluZGV4ZWQgZGF0YWJhc2VzIG9uIGRpc2sgd2l0aG91dCBmaXJzdCBjb25zdWx0aW5nIGEg
cmV2aWV3ZXIgZnJvbSBBcHBsZSAoPHJkYXI6Ly9wcm9ibGVtLzE3NDU0NzEyPikKLSAgICAvLyAq
KioqKioqKioKLSAgICBhdXRvIGlzTmV3ID0gbV9pZGJEYXRhYmFzZVBhdGguaXNOdWxsKCk7Ci0g
ICAgbV9pZGJEYXRhYmFzZVBhdGggPSBpbmRleGVkRGF0YWJhc2VEaXJlY3Rvcnk7Ci0gICAgaWYg
KGlzTmV3KSB7Ci0gICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseSho
YW5kbGUpOwotICAgICAgICBuZXR3b3JrUHJvY2VzcygpLnNldFNlc3Npb25TdG9yYWdlUXVvdGFN
YW5hZ2VySURCUm9vdFBhdGgoc2Vzc2lvbklEKCksIGluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSk7
Ci0gICAgfQotfQotCi12b2lkIE5ldHdvcmtTZXNzaW9uOjphZGRTdG9yYWdlTWFuYWdlclNlc3Np
b24oY29uc3QgU3RyaW5nJiBnZW5lcmFsU3RvcmFnZVBhdGgsIFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZSYgZ2VuZXJhbFN0b3JhZ2VQYXRoSGFuZGxlLCBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFn
ZVBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgbG9jYWxTdG9yYWdlUGF0aEhhbmRsZSkK
K3ZvaWQgTmV0d29ya1Nlc3Npb246OmFkZFN0b3JhZ2VNYW5hZ2VyU2Vzc2lvbihjb25zdCBTdHJp
bmcmIGdlbmVyYWxTdG9yYWdlUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBnZW5lcmFs
U3RvcmFnZVBhdGhIYW5kbGUsIGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlUGF0aCwgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlJiBsb2NhbFN0b3JhZ2VQYXRoSGFuZGxlLCBjb25zdCBTdHJpbmcm
IGlkYlN0b3JhZ2VQYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIGlkYlN0b3JhZ2VQYXRo
SGFuZGxlLCBjb25zdCBTdHJpbmcmIGNhY2hlU3RvcmFnZVBhdGgsIHVpbnQ2NF90IGRlZmF1bHRP
cmlnaW5RdW90YSwgdWludDY0X3QgZGVmYXVsdFRoaXJkUGFydHlRdW90YSkKIHsKICAgICBpZiAo
bV9zdG9yYWdlTWFuYWdlcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgU2FuZGJveEV4dGVuc2lv
bjo6Y29uc3VtZVBlcm1hbmVudGx5KGdlbmVyYWxTdG9yYWdlUGF0aEhhbmRsZSk7CiAgICAgU2Fu
ZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KGxvY2FsU3RvcmFnZVBhdGhIYW5kbGUp
OwotICAgIG1fc3RvcmFnZU1hbmFnZXIgPSBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZShz
ZXNzaW9uSUQoKSwgZ2VuZXJhbFN0b3JhZ2VQYXRoLCBsb2NhbFN0b3JhZ2VQYXRoKTsKKyAgICBT
YW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkoaWRiU3RvcmFnZVBhdGhIYW5kbGUp
OworICAgIElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgY29ubmVjdGlvbklEOworICAgIGlmIChh
dXRvKiBjb25uZWN0aW9uID0gbmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlv
bigpKQorICAgICAgICBjb25uZWN0aW9uSUQgPSBjb25uZWN0aW9uLT51bmlxdWVJRCgpOworICAg
IG1fc3RvcmFnZU1hbmFnZXIgPSBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZShzZXNzaW9u
SUQoKSwgY29ubmVjdGlvbklELCBnZW5lcmFsU3RvcmFnZVBhdGgsIGxvY2FsU3RvcmFnZVBhdGgs
IGlkYlN0b3JhZ2VQYXRoLCBjYWNoZVN0b3JhZ2VQYXRoLCBkZWZhdWx0T3JpZ2luUXVvdGEsIGRl
ZmF1bHRUaGlyZFBhcnR5UXVvdGEpOwogfQogCiB2b2lkIE5ldHdvcmtTZXNzaW9uOjplbnN1cmVD
YWNoZUVuZ2luZShGdW5jdGlvbjx2b2lkKENhY2hlU3RvcmFnZTo6RW5naW5lJik+JiYgY2FsbGJh
Y2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNz
aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKaW5k
ZXggM2Y5ZDZjOTU1MGE4YjhjZWM5ZTRjNTU5ZDMxZDEyMWE5OGIwZTg0MC4uNzlkN2NlNDQwNGEx
MzhkZjliODhhYWVjOTdiNjkxM2FmNjBhNGNlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaApAQCAtMjE0LDE0ICsyMTQsOCBAQCBwdWJsaWM6CiAg
ICAgV2ViU2hhcmVkV29ya2VyU2VydmVyKiBzaGFyZWRXb3JrZXJTZXJ2ZXIoKSB7IHJldHVybiBt
X3NoYXJlZFdvcmtlclNlcnZlci5nZXQoKTsgfQogICAgIFdlYlNoYXJlZFdvcmtlclNlcnZlciYg
ZW5zdXJlU2hhcmVkV29ya2VyU2VydmVyKCk7CiAKLSAgICBXZWJJREJTZXJ2ZXIqIHdlYklEQlNl
cnZlcigpIHsgcmV0dXJuIG1fd2ViSURCU2VydmVyLmdldCgpOyB9Ci0gICAgV2ViSURCU2VydmVy
JiBlbnN1cmVXZWJJREJTZXJ2ZXIoKTsKLSAgICB2b2lkIGNsb3NlSURCU2VydmVyKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBhZGRJbmRleGVkRGF0YWJhc2VTZXNzaW9u
KGNvbnN0IFN0cmluZyYgaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGUmKTsKLSAgICBib29sIGhhc0lEQkRhdGFiYXNlUGF0aCgpIGNvbnN0IHsgcmV0dXJu
ICFtX2lkYkRhdGFiYXNlUGF0aC5pc0VtcHR5KCk7IH0KLQogICAgIE5ldHdvcmtTdG9yYWdlTWFu
YWdlciogc3RvcmFnZU1hbmFnZXIoKSB7IHJldHVybiBtX3N0b3JhZ2VNYW5hZ2VyLmdldCgpOyB9
Ci0gICAgdm9pZCBhZGRTdG9yYWdlTWFuYWdlclNlc3Npb24oY29uc3QgU3RyaW5nJiBnZW5lcmFs
U3RvcmFnZVBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgZ2VuZXJhbFN0b3JhZ2VQYXRo
SGFuZGxlLCBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZVBhdGgsIFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZSYgbG9jYWxTdG9yYWdlUGF0aEhhbmRsZSk7CisgICAgdm9pZCBhZGRTdG9yYWdlTWFu
YWdlclNlc3Npb24oY29uc3QgU3RyaW5nJiBnZW5lcmFsU3RvcmFnZVBhdGgsIFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZSYgZ2VuZXJhbFN0b3JhZ2VQYXRoSGFuZGxlLCBjb25zdCBTdHJpbmcmIGxv
Y2FsU3RvcmFnZVBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgbG9jYWxTdG9yYWdlUGF0
aEhhbmRsZSwgY29uc3QgU3RyaW5nJiBpZGJTdG9yYWdlUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlJiBpZGJTdG9yYWdlUGF0aEhhbmRsZSwgY29uc3QgU3RyaW5nJiBjYWNoZVN0b3JhZ2VQ
YXRoLCB1aW50NjRfdCBkZWZhdWx0T3JpZ2luUXVvdGEsIHVpbnQ2NF90IGRlZmF1bHRUaGlyZFBh
cnR5UXVvdGEpOwogCiAgICAgQ2FjaGVTdG9yYWdlOjpFbmdpbmUqIGNhY2hlRW5naW5lKCkgeyBy
ZXR1cm4gbV9jYWNoZUVuZ2luZS5nZXQoKTsgfQogICAgIHZvaWQgZW5zdXJlQ2FjaGVFbmdpbmUo
RnVuY3Rpb248dm9pZChDYWNoZVN0b3JhZ2U6OkVuZ2luZSYpPiYmKTsKQEAgLTMyNCw5ICszMTgs
NiBAQCBwcm90ZWN0ZWQ6CiAjZW5kaWYKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViU2hhcmVkV29y
a2VyU2VydmVyPiBtX3NoYXJlZFdvcmtlclNlcnZlcjsKIAotICAgIFN0cmluZyBtX2lkYkRhdGFi
YXNlUGF0aDsKLSAgICBSZWZQdHI8V2ViSURCU2VydmVyPiBtX3dlYklEQlNlcnZlcjsKLQogICAg
IFJlZlB0cjxOZXR3b3JrU3RvcmFnZU1hbmFnZXI+IG1fc3RvcmFnZU1hbmFnZXI7CiAgICAgUmVm
UHRyPENhY2hlU3RvcmFnZTo6RW5naW5lPiBtX2NhY2hlRW5naW5lOwogICAgIFZlY3RvcjxGdW5j
dGlvbjx2b2lkKENhY2hlU3RvcmFnZTo6RW5naW5lJik+PiBtX2NhY2hlU3RvcmFnZVBhcmFtZXRl
cnNDYWxsYmFja3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKaW5kZXggYzIwMGNlOGI1ZWI0YzNhMDM2NTdl
ODIyNjg5OTAyYjQ2ZGJmOGFiMC4uYzUxYzIyNDkzMTc4MjQxOWU3MTNlYjYyNThmMGNmOWZhZjE5
OWI4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VFbmdpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIk5l
dHdvcmtDYWNoZUlPQ2hhbm5lbC5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCiAjaW5j
bHVkZSAiTmV0d29ya1Nlc3Npb24uaCIKKyNpbmNsdWRlICJOZXR3b3JrU3RvcmFnZU1hbmFnZXIu
aCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVR5cGUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NhY2hl
UXVlcnlPcHRpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXRyaWV2ZVJlY29yZHNPcHRpb25z
Lmg+CkBAIC0yMDMsNDAgKzIwNCw1MiBAQCBzdGF0aWMgdWludDY0X3QgZ2V0RGlyZWN0b3J5U2l6
ZShjb25zdCBTdHJpbmcmIGRpcmVjdG9yeVBhdGgpCiAgICAgcmV0dXJuIGRpcmVjdG9yeVNpemU7
CiB9CiAKLXVpbnQ2NF90IEVuZ2luZTo6ZGlza1VzYWdlKGNvbnN0IFN0cmluZyYgcm9vdFBhdGgs
IGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luKQorU3RyaW5nIEVuZ2luZTo6c3Rv
cmFnZVBhdGgoY29uc3QgU3RyaW5nJiByb290RGlyZWN0b3J5LCBjb25zdCBXZWJDb3JlOjpDbGll
bnRPcmlnaW4mIG9yaWdpbikKIHsKICAgICBBU1NFUlQoIWlzTWFpblJ1bkxvb3AoKSk7CisgICAg
CisgICAgaWYgKHJvb3REaXJlY3RvcnkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZW1wdHlT
dHJpbmcoKTsKIAotICAgIGlmIChyb290UGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiAw
OwotCi0gICAgU3RyaW5nIHNhbHRQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KHJvb3RQYXRoLCAic2FsdCJfcyk7CisgICAgU3RyaW5nIHNhbHRQYXRoID0gRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJvb3REaXJlY3RvcnksICJzYWx0Il9zKTsK
ICAgICBhdXRvIHNhbHQgPSBGaWxlU3lzdGVtOjpyZWFkT3JNYWtlU2FsdChzYWx0UGF0aCk7CiAg
ICAgaWYgKCFzYWx0KQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIGVtcHR5U3Ry
aW5nKCk7CiAKICAgICBLZXkga2V5KG9yaWdpbi50b3BPcmlnaW4udG9TdHJpbmcoKSwgb3JpZ2lu
LmNsaWVudE9yaWdpbi50b1N0cmluZygpLCB7IH0sIHsgfSwgKnNhbHQpOwotICAgIFN0cmluZyBk
aXJlY3RvcnlQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJvb3RQ
YXRoLCBrZXkuaGFzaEFzU3RyaW5nKCkpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQocm9vdERpcmVjdG9yeSwga2V5Lmhhc2hBc1N0cmluZygpKTsKK30K
KwordWludDY0X3QgRW5naW5lOjpkaXNrVXNhZ2UoY29uc3QgU3RyaW5nJiBvcmlnaW5EaXJlY3Rv
cnkpCit7CisgICAgQVNTRVJUKCFpc01haW5SdW5Mb29wKCkpOwogCi0gICAgU3RyaW5nIHNpemVG
aWxlUGF0aCA9IENhY2hlczo6Y2FjaGVzU2l6ZUZpbGVuYW1lKGRpcmVjdG9yeVBhdGgpOworICAg
IGlmIChvcmlnaW5EaXJlY3RvcnkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gMDsKKworICAg
IFN0cmluZyBzaXplRmlsZVBhdGggPSBDYWNoZXM6OmNhY2hlc1NpemVGaWxlbmFtZShvcmlnaW5E
aXJlY3RvcnkpOwogICAgIGlmIChhdXRvIHJlY29yZGVkU2l6ZSA9IHJlYWRTaXplRmlsZShzaXpl
RmlsZVBhdGgpKQogICAgICAgICByZXR1cm4gKnJlY29yZGVkU2l6ZTsKIAotICAgIHJldHVybiBn
ZXREaXJlY3RvcnlTaXplKGRpcmVjdG9yeVBhdGgpOworICAgIHJldHVybiBnZXREaXJlY3RvcnlT
aXplKG9yaWdpbkRpcmVjdG9yeSk7CiB9CiAKLXZvaWQgRW5naW5lOjpyZXF1ZXN0U3BhY2UoY29u
c3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVk
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6OkRl
Y2lzaW9uKT4mJiBjYWxsYmFjaykKK3ZvaWQgRW5naW5lOjpyZXF1ZXN0U3BhY2UoY29uc3QgV2Vi
Q29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQogewogICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CiAKICAgICBpZiAoIW1fbmV0d29ya1Byb2Nlc3MpCi0gICAgICAgIGNhbGxi
YWNrKFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uOjpEZW55KTsKKyAgICAg
ICAgY2FsbGJhY2soZmFsc2UpOworCisgICAgYXV0byogc2Vzc2lvbiA9IG1fbmV0d29ya1Byb2Nl
c3MtPm5ldHdvcmtTZXNzaW9uKG1fc2Vzc2lvbklEKTsKKyAgICBpZiAoIXNlc3Npb24pCisgICAg
ICAgIGNhbGxiYWNrKGZhbHNlKTsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlUXVvdGFN
YW5hZ2VyPiBzdG9yYWdlUXVvdGFNYW5hZ2VyID0gbV9uZXR3b3JrUHJvY2Vzcy0+c3RvcmFnZVF1
b3RhTWFuYWdlcihtX3Nlc3Npb25JRCwgb3JpZ2luKTsKLSAgICBpZiAoIXN0b3JhZ2VRdW90YU1h
bmFnZXIpCi0gICAgICAgIGNhbGxiYWNrKFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6OkRl
Y2lzaW9uOjpEZW55KTsKKyAgICBhdXRvKiBzdG9yYWdlTWFuYWdlciA9IHNlc3Npb24tPnN0b3Jh
Z2VNYW5hZ2VyKCk7CisgICAgaWYgKCFzdG9yYWdlTWFuYWdlcikKKyAgICAgICAgY2FsbGJhY2so
ZmFsc2UpOwogCi0gICAgc3RvcmFnZVF1b3RhTWFuYWdlci0+cmVxdWVzdFNwYWNlT25NYWluVGhy
ZWFkKHNwYWNlUmVxdWVzdGVkLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgc3RvcmFnZU1hbmFn
ZXItPnJlcXVlc3RTcGFjZShvcmlnaW4sIHNwYWNlUmVxdWVzdGVkLCBXVEZNb3ZlKGNhbGxiYWNr
KSk7CiB9CiAKIEVuZ2luZTo6RW5naW5lKE5ldHdvcmtTZXNzaW9uJiBuZXR3b3JrU2Vzc2lvbiwg
U3RyaW5nJiYgcm9vdFBhdGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaAppbmRleCAxNDdmYmFjZTE2NzdhNjA4NTkx
OGFiNzcyYTllMTBhMjA2YzY4ODFlLi5mZTNjMWY5MzBkYWUzOTk4Y2QxYzA0YzM0ZGJkZGM1MzU1
NWE0NzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0Nh
Y2hlU3RvcmFnZUVuZ2luZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvQ2FjaGVTdG9yYWdlRW5naW5lLmgKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJOZXR3
b3JrQ2FjaGVEYXRhLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGEuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL0NsaWVudE9yaWdpbi5oPgotI2luY2x1ZGUgPFdlYkNvcmUvU3RvcmFnZVF1b3RhTWFuYWdl
ci5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC04NCw4ICs4Myw5IEBAIHB1YmxpYzoK
IAogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVRdW90YVVzZXIoTmV0d29ya1Nlc3Npb24mLCBj
b25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogCi0gICAgc3RhdGljIHVpbnQ2NF90IGRpc2tVc2FnZShjb25zdCBTdHJpbmcmIHJvb3RQYXRo
LCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKLSAgICB2b2lkIHJlcXVlc3RTcGFjZShj
b25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCB1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lv
bik+JiYpOworICAgIHN0YXRpYyBTdHJpbmcgc3RvcmFnZVBhdGgoY29uc3QgU3RyaW5nJiByb290
RGlyZWN0b3J5LCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKKyAgICBzdGF0aWMgdWlu
dDY0X3QgZGlza1VzYWdlKGNvbnN0IFN0cmluZyYgb3JpZ2luRGlyZWN0b3J5KTsKKyAgICB2b2lk
IHJlcXVlc3RTcGFjZShjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCB1aW50NjRfdCBzcGFj
ZVJlcXVlc3RlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAKICAgICBib29s
IHNob3VsZFBlcnNpc3QoKSBjb25zdCB7IHJldHVybiAhIW1faW9RdWV1ZTt9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5l
Q2FjaGVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9y
YWdlRW5naW5lQ2FjaGVzLmNwcAppbmRleCAwNGVkZWNlMWM0YmZlOWVhY2FlMDZhNzA3YzVkZGZm
ZTAwZTgxMzhlLi5jMzBjM2JlN2M1YzU1M2JmMjMyOGQ5NTFiNzc0NDQ0MTNiMzJkNmE1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVu
Z2luZUNhY2hlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9D
YWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwCkBAIC01MjQsMTQgKzUyNCwxMCBAQCB2b2lkIENh
Y2hlczo6cmVxdWVzdFNwYWNlKHVpbnQ2NF90IHNwYWNlUmVxdWlyZWQsIFdlYkNvcmU6OkRPTUNh
Y2hlRW5naW5lOjpDb21wbAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9lbmdpbmUt
PnJlcXVlc3RTcGFjZShtX29yaWdpbiwgc3BhY2VSZXF1aXJlZCwgW2NhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayldKGF1dG8gZGVjaXNpb24pIG11dGFibGUgewotICAgICAgICBzd2l0Y2ggKGRl
Y2lzaW9uKSB7Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6U3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVj
aXNpb246OkRlbnk6Ci0gICAgICAgICAgICBjYWxsYmFjayhFcnJvcjo6UXVvdGFFeGNlZWRlZCk7
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6U3RvcmFnZVF1b3Rh
TWFuYWdlcjo6RGVjaXNpb246OkdyYW50OgotICAgICAgICAgICAgY2FsbGJhY2soeyB9KTsKLSAg
ICAgICAgfTsKKyAgICBtX2VuZ2luZS0+cmVxdWVzdFNwYWNlKG1fb3JpZ2luLCBzcGFjZVJlcXVp
cmVkLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBncmFudGVkKSBtdXRhYmxl
IHsKKyAgICAgICAgaWYgKCFncmFudGVkKQorICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKEVy
cm9yOjpRdW90YUV4Y2VlZGVkKTsKKyAgICAgICAgY2FsbGJhY2soeyB9KTsKICAgICB9KTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya1By
b2Nlc3NJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJv
Y2Vzc0lPUy5tbQppbmRleCBhODdhZDgwNWI1ZGYxNTA3ODNiNTM5MWU4ZTAzZjk4ZTc2NGRmM2Q1
Li4yMTk2ZTllNzRkMjQ1MzFjMGRiNWIzOTQ1YWM2MDhmZTNlOThjNzRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lPUy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lPUy5tbQpA
QCAtMTA5LDE5ICsxMDksNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRJc0hvbGRpbmdMb2Nr
ZWRGaWxlcyhib29sIGlzSG9sZGluZ0xvY2tlZEZpbGVzKQogICAgIC8vIFdlIHN5bmNocm9ub3Vz
bHkgdGFrZSBhIHByb2Nlc3MgYXNzZXJ0aW9uIHdoZW4gYmVnaW5uaW5nIGEgU1FMaXRlIHRyYW5z
YWN0aW9uIHNvIHRoYXQgd2UgZG9uJ3QgZ2V0IHN1c3BlbmRlZAogICAgIC8vIHdoaWxlIGhvbGRp
bmcgYSBsb2NrZWQgZmlsZS4gV2Ugd291bGQgZ2V0IGtpbGxlZCBpZiBzdXNwZW5kZWQgd2hpbGUg
aG9sZGluZyBsb2NrZWQgZmlsZXMuCiAgICAgbV9ob2xkaW5nTG9ja2VkRmlsZUFzc2VydGlvbiA9
IFByb2Nlc3NBc3NlcnRpb246OmNyZWF0ZShnZXRDdXJyZW50UHJvY2Vzc0lEKCksICJOZXR3b3Jr
IFByb2Nlc3MgaXMgaG9sZGluZyBsb2NrZWQgZmlsZXMiX3MsIFByb2Nlc3NBc3NlcnRpb25UeXBl
OjpGaW5pc2hUYXNrSW50ZXJydXB0YWJsZSwgUHJvY2Vzc0Fzc2VydGlvbjo6TW9kZTo6U3luYyk7
Ci0gICAgbV9ob2xkaW5nTG9ja2VkRmlsZUFzc2VydGlvbi0+c2V0UHJlcGFyZUZvckludmFsaWRh
dGlvbkhhbmRsZXIoW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dKCkgbXV0YWJs
ZSB7Ci0gICAgICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOwotICAgICAgICBpZiAoIXdlYWtU
aGlzKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmICghbV9zaG91bGRTdXNwZW5k
SURCU2VydmVycykKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBmb3JFYWNoTmV0d29y
a1Nlc3Npb24oW10oYXV0byYgc2Vzc2lvbikgewotICAgICAgICAgICAgaWYgKGF1dG8qIHNlcnZl
ciA9IHNlc3Npb24ud2ViSURCU2VydmVyKCkpCi0gICAgICAgICAgICAgICAgc2VydmVyLT5zdXNw
ZW5kKCk7Ci0gICAgICAgIH0pOwotICAgIH0pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9y
YWdlQ29ubmVjdGlvblRvQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c3RvcmFnZS9JREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50LmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YWY0
YzY0NjQzNmI5NmUxNGU4N2IzY2UyYjYxMWRiMDQyODc5MDVmCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VDb25uZWN0aW9u
VG9DbGllbnQuY3BwCkBAIC0wLDAgKzEsMTkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2
LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5oIgor
CisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiV2ViSURCQ29u
bmVjdGlvblRvU2VydmVyTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJJREJSZXN1bHQuaCIKKyNp
bmNsdWRlIDxXZWJDb3JlL0lEQlJlcXVlc3REYXRhLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JREJS
ZXN1bHREYXRhLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rp
b24uaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK0lEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGll
bnQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJ
RCBjb25uZWN0aW9uLCBXZWJDb3JlOjpJREJDb25uZWN0aW9uSWRlbnRpZmllciBpZGVudGlmaWVy
KQorICAgIDogbV9jb25uZWN0aW9uKGNvbm5lY3Rpb24pCisgICAgLCBtX2lkZW50aWZpZXIoaWRl
bnRpZmllcikKKyAgICAsIG1fY29ubmVjdGlvblRvQ2xpZW50KFdlYkNvcmU6OklEQlNlcnZlcjo6
SURCQ29ubmVjdGlvblRvQ2xpZW50OjpjcmVhdGUoKnRoaXMpKQoreworfQorCitJREJTdG9yYWdl
Q29ubmVjdGlvblRvQ2xpZW50Ojp+SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudCgpCit7Cisg
ICAgbV9jb25uZWN0aW9uVG9DbGllbnQtPmNsZWFyRGVsZWdhdGUoKTsKK30KKworV2ViQ29yZTo6
SURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnQmIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9D
bGllbnQ6OmNvbm5lY3Rpb25Ub0NsaWVudCgpCit7CisgICAgcmV0dXJuIG1fY29ubmVjdGlvblRv
Q2xpZW50OworfQorCit0ZW1wbGF0ZTxjbGFzcyBNZXNzYWdlVHlwZT4gdm9pZCBJREJTdG9yYWdl
Q29ubmVjdGlvblRvQ2xpZW50OjpkaWRHZXRSZXN1bHQoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0
RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBpZiAocmVzdWx0RGF0YS50eXBlKCkgPT0gV2ViQ29y
ZTo6SURCUmVzdWx0VHlwZTo6RXJyb3IpIHsKKyAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5k
KG1fY29ubmVjdGlvbiwgTWVzc2FnZVR5cGUocmVzdWx0RGF0YSksIDApOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgaWYgKHJlc3VsdERhdGEudHlwZSgpID09IFdlYkNvcmU6OklEQlJl
c3VsdFR5cGU6OkdldEFsbFJlY29yZHNTdWNjZXNzICYmIHJlc3VsdERhdGEuZ2V0QWxsUmVzdWx0
KCkudHlwZSgpID09IFdlYkNvcmU6OkluZGV4ZWREQjo6R2V0QWxsVHlwZTo6S2V5cykgeworICAg
ICAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQobV9jb25uZWN0aW9uLCBNZXNzYWdlVHlwZShyZXN1
bHREYXRhKSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGJsb2JGaWxl
UGF0aHMgPSByZXN1bHREYXRhLnR5cGUoKSA9PSBXZWJDb3JlOjpJREJSZXN1bHRUeXBlOjpHZXRB
bGxSZWNvcmRzU3VjY2VzcyA/IHJlc3VsdERhdGEuZ2V0QWxsUmVzdWx0KCkuYWxsQmxvYkZpbGVQ
YXRocygpIDogcmVzdWx0RGF0YS5nZXRSZXN1bHQoKS52YWx1ZSgpLmJsb2JGaWxlUGF0aHMoKTsK
KyAgICBpZiAoYmxvYkZpbGVQYXRocy5pc0VtcHR5KCkpIHsKKyAgICAgICAgSVBDOjpDb25uZWN0
aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwgTWVzc2FnZVR5cGUocmVzdWx0RGF0YSksIDApOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKG1fY29ubmVj
dGlvbiwgTWVzc2FnZVR5cGUocmVzdWx0RGF0YSksIDApOworfQorCit2b2lkIElEQlN0b3JhZ2VD
b25uZWN0aW9uVG9DbGllbnQ6OmRpZERlbGV0ZURhdGFiYXNlKGNvbnN0IFdlYkNvcmU6OklEQlJl
c3VsdERhdGEmIHJlc3VsdERhdGEpCit7CisgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKG1fY29u
bmVjdGlvbiwgTWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6RGlkRGVsZXRlRGF0
YWJhc2UocmVzdWx0RGF0YSksIDApOworfQorCit2b2lkIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9D
bGllbnQ6OmRpZE9wZW5EYXRhYmFzZShjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJiByZXN1
bHREYXRhKQoreworICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3Nh
Z2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZE9wZW5EYXRhYmFzZShyZXN1bHREYXRh
KSwgMCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkU3RhcnRU
cmFuc2FjdGlvbihjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0
aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCRXJyb3ImIGVycm9yKQoreworICAgIElQ
Qzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0
aW9uVG9TZXJ2ZXI6OkRpZFN0YXJ0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZGVudGlmaWVyLCBl
cnJvciksIDApOworfQorCit2b2lkIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZEFi
b3J0VHJhbnNhY3Rpb24oY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFu
c2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OklEQkVycm9yJiBlcnJvcikKK3sKKyAg
ICBJUEM6OkNvbm5lY3Rpb246OnNlbmQobV9jb25uZWN0aW9uLCBNZXNzYWdlczo6V2ViSURCQ29u
bmVjdGlvblRvU2VydmVyOjpEaWRBYm9ydFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmll
ciwgZXJyb3IpLCAwKTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50Ojpk
aWRDb21taXRUcmFuc2FjdGlvbihjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXIm
IHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCRXJyb3ImIGVycm9yKQor
eworICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJJ
REJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZENvbW1pdFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRl
bnRpZmllciwgZXJyb3IpLCAwKTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xp
ZW50OjpkaWRDcmVhdGVPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJiBy
ZXN1bHREYXRhKQoreworICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1l
c3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZENyZWF0ZU9iamVjdFN0b3JlKHJl
c3VsdERhdGEpLCAwKTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50Ojpk
aWREZWxldGVPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJiByZXN1bHRE
YXRhKQoreworICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2Vz
OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZERlbGV0ZU9iamVjdFN0b3JlKHJlc3VsdERh
dGEpLCAwKTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRSZW5h
bWVPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQor
eworICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJJ
REJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZFJlbmFtZU9iamVjdFN0b3JlKHJlc3VsdERhdGEpLCAw
KTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRDbGVhck9iamVj
dFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCit7CisgICAg
SVBDOjpDb25uZWN0aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwgTWVzc2FnZXM6OldlYklEQkNvbm5l
Y3Rpb25Ub1NlcnZlcjo6RGlkQ2xlYXJPYmplY3RTdG9yZShyZXN1bHREYXRhKSwgMCk7Cit9CisK
K3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkQ3JlYXRlSW5kZXgoY29uc3Qg
V2ViQ29yZTo6SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBJUEM6OkNvbm5lY3Rp
b246OnNlbmQobV9jb25uZWN0aW9uLCBNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVy
OjpEaWRDcmVhdGVJbmRleChyZXN1bHREYXRhKSwgMCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNv
bm5lY3Rpb25Ub0NsaWVudDo6ZGlkRGVsZXRlSW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0
RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQobV9jb25uZWN0
aW9uLCBNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWREZWxldGVJbmRleChy
ZXN1bHREYXRhKSwgMCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6
ZGlkUmVuYW1lSW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkK
K3sKKyAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQobV9jb25uZWN0aW9uLCBNZXNzYWdlczo6V2Vi
SURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWRSZW5hbWVJbmRleChyZXN1bHREYXRhKSwgMCk7Cit9
CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkUHV0T3JBZGQoY29uc3Qg
V2ViQ29yZTo6SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBJUEM6OkNvbm5lY3Rp
b246OnNlbmQobV9jb25uZWN0aW9uLCBNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVy
OjpEaWRQdXRPckFkZChyZXN1bHREYXRhKSwgMCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5l
Y3Rpb25Ub0NsaWVudDo6ZGlkR2V0UmVjb3JkKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEm
IHJlc3VsdERhdGEpCit7CisgICAgZGlkR2V0UmVzdWx0PE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0
aW9uVG9TZXJ2ZXI6OkRpZEdldFJlY29yZD4ocmVzdWx0RGF0YSk7Cit9CisKK3ZvaWQgSURCU3Rv
cmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkR2V0QWxsUmVjb3Jkcyhjb25zdCBXZWJDb3JlOjpJ
REJSZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIGRpZEdldFJlc3VsdDxNZXNzYWdlczo6
V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWRHZXRBbGxSZWNvcmRzPihyZXN1bHREYXRhKTsK
K30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRHZXRDb3VudChjb25z
dCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIElQQzo6Q29ubmVj
dGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2
ZXI6OkRpZEdldENvdW50KHJlc3VsdERhdGEpLCAwKTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29u
bmVjdGlvblRvQ2xpZW50OjpkaWREZWxldGVSZWNvcmQoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0
RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQobV9jb25uZWN0
aW9uLCBNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWREZWxldGVSZWNvcmQo
cmVzdWx0RGF0YSksIDApOworfQorCit2b2lkIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6
OmRpZE9wZW5DdXJzb3IoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkK
K3sKKyAgICBkaWRHZXRSZXN1bHQ8TWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6
RGlkT3BlbkN1cnNvcj4ocmVzdWx0RGF0YSk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rp
b25Ub0NsaWVudDo6ZGlkSXRlcmF0ZUN1cnNvcihjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRh
JiByZXN1bHREYXRhKQoreworICAgIGRpZEdldFJlc3VsdDxNZXNzYWdlczo6V2ViSURCQ29ubmVj
dGlvblRvU2VydmVyOjpEaWRJdGVyYXRlQ3Vyc29yPihyZXN1bHREYXRhKTsKK30KKwordm9pZCBJ
REJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRHZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVy
c2lvbnMoY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRp
ZmllciwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OklEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24+JiBk
YXRhYmFzZXMpCit7CisgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwgTWVz
c2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6RGlkR2V0QWxsRGF0YWJhc2VOYW1lc0Fu
ZFZlcnNpb25zKHJlcXVlc3RJZGVudGlmaWVyLCBkYXRhYmFzZXMpLCAwKTsKK30KKwordm9pZCBJ
REJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpmaXJlVmVyc2lvbkNoYW5nZUV2ZW50KFdlYkNv
cmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBj
b25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCB1
aW50NjRfdCByZXF1ZXN0ZWRWZXJzaW9uKQoreworICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZCht
X2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkZpcmVWZXJz
aW9uQ2hhbmdlRXZlbnQoY29ubmVjdGlvbi5pZGVudGlmaWVyKCksIHJlcXVlc3RJZGVudGlmaWVy
LCByZXF1ZXN0ZWRWZXJzaW9uKSwgMCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25U
b0NsaWVudDo6ZGlkQ2xvc2VGcm9tU2VydmVyKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURC
RGF0YWJhc2VDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpJREJFcnJvciYg
ZXJyb3IpCit7CisgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwgTWVzc2Fn
ZXM6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6RGlkQ2xvc2VGcm9tU2VydmVyKGNvbm5lY3Rp
b24uaWRlbnRpZmllcigpLCBlcnJvciksIDApOworfQorCit2b2lkIElEQlN0b3JhZ2VDb25uZWN0
aW9uVG9DbGllbnQ6Om5vdGlmeU9wZW5EQlJlcXVlc3RCbG9ja2VkKGNvbnN0IFdlYkNvcmU6OklE
QlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IG9sZFZlcnNp
b24sIHVpbnQ2NF90IG5ld1ZlcnNpb24pCit7CisgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKG1f
Y29ubmVjdGlvbiwgTWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Tm90aWZ5T3Bl
bkRCUmVxdWVzdEJsb2NrZWQocmVxdWVzdElkZW50aWZpZXIsIG9sZFZlcnNpb24sIG5ld1ZlcnNp
b24pLCAwKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVu
dC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VDb25u
ZWN0aW9uVG9DbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MGJhMDFiMDIxMjBmMjFkYjYxMzkxZjNhODc0
NGQyMmI1ZmY3MGU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQuaApAQCAtMCwwICsxLDc3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNvbm5lY3Rp
b24uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0lEQkNvbm5lY3Rpb25Ub0NsaWVudC5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvSURCQ29ubmVjdGlvblRvQ2xpZW50RGVsZWdhdGUuaD4KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQgZmluYWwgOiBw
dWJsaWMgV2ViQ29yZTo6SURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnREZWxlZ2F0ZSB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgSURCU3RvcmFnZUNv
bm5lY3Rpb25Ub0NsaWVudChJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBXZWJDb3JlOjpJREJD
b25uZWN0aW9uSWRlbnRpZmllcik7CisgICAgfklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQo
KTsKKworICAgIFdlYkNvcmU6OklEQkNvbm5lY3Rpb25JZGVudGlmaWVyIGlkZW50aWZpZXIoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKyAgICBJUEM6OkNvbm5lY3Rpb246
OlVuaXF1ZUlEIGlwY0Nvbm5lY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2Nvbm5lY3Rpb247IH0K
KyAgICBXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub0NsaWVudCYgY29ubmVjdGlv
blRvQ2xpZW50KCk7CisKK3ByaXZhdGU6CisgICAgdGVtcGxhdGU8Y2xhc3MgTWVzc2FnZVR5cGU+
IHZvaWQgZGlkR2V0UmVzdWx0KGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKTsKKworICAg
IC8vIElEQkNvbm5lY3Rpb25Ub0NsaWVudERlbGVnYXRlCisgICAgdm9pZCBkaWREZWxldGVEYXRh
YmFzZShjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJikgZmluYWw7CisgICAgdm9pZCBkaWRP
cGVuRGF0YWJhc2UoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZv
aWQgZGlkQWJvcnRUcmFuc2FjdGlvbihjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZp
ZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCRXJyb3ImKSBmaW5h
bDsKKyAgICB2b2lkIGRpZENvbW1pdFRyYW5zYWN0aW9uKGNvbnN0IFdlYkNvcmU6OklEQlJlc291
cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJREJF
cnJvciYpIGZpbmFsOworICAgIHZvaWQgZGlkU3RhcnRUcmFuc2FjdGlvbihjb25zdCBXZWJDb3Jl
OjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2Vi
Q29yZTo6SURCRXJyb3ImKSBmaW5hbDsKKyAgICB2b2lkIGRpZENyZWF0ZU9iamVjdFN0b3JlKGNv
bnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBmaW5hbDsKKyAgICB2b2lkIGRpZERlbGV0ZU9i
amVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBmaW5hbDsKKyAgICB2b2lk
IGRpZFJlbmFtZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBmaW5h
bDsKKyAgICB2b2lkIGRpZENsZWFyT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0
RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkQ3JlYXRlSW5kZXgoY29uc3QgV2ViQ29yZTo6SURC
UmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkRGVsZXRlSW5kZXgoY29uc3QgV2ViQ29y
ZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVuYW1lSW5kZXgoY29uc3Qg
V2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkUHV0T3JBZGQoY29u
c3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkR2V0UmVjb3Jk
KGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBmaW5hbDsKKyAgICB2b2lkIGRpZEdldEFs
bFJlY29yZHMoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQg
ZGlkR2V0Q291bnQoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZv
aWQgZGlkRGVsZXRlUmVjb3JkKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBmaW5hbDsK
KyAgICB2b2lkIGRpZE9wZW5DdXJzb3IoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZp
bmFsOworICAgIHZvaWQgZGlkSXRlcmF0ZUN1cnNvcihjb25zdCBXZWJDb3JlOjpJREJSZXN1bHRE
YXRhJikgZmluYWw7CisgICAgdm9pZCBkaWRHZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMo
Y29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiwgY29uc3QgVmVjdG9yPFdlYkNv
cmU6OklEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24+JikgZmluYWw7CisgICAgdm9pZCBub3RpZnlP
cGVuREJSZXF1ZXN0QmxvY2tlZChjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXIm
IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBvbGRWZXJzaW9uLCB1aW50NjRfdCBuZXdWZXJz
aW9uKSBmaW5hbDsKKyAgICB2b2lkIGZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQoV2ViQ29yZTo6SURC
U2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpJREJS
ZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCByZXF1ZXN0ZWRW
ZXJzaW9uKSBmaW5hbDsKKyAgICB2b2lkIGRpZENsb3NlRnJvbVNlcnZlcihXZWJDb3JlOjpJREJT
ZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OklEQkVy
cm9yJikgZmluYWw7CisKKyAgICBJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIG1fY29ubmVjdGlv
bjsKKyAgICBXZWJDb3JlOjpJREJDb25uZWN0aW9uSWRlbnRpZmllciBtX2lkZW50aWZpZXI7Cisg
ICAgUmVmPFdlYkNvcmU6OklEQlNlcnZlcjo6SURCQ29ubmVjdGlvblRvQ2xpZW50PiBtX2Nvbm5l
Y3Rpb25Ub0NsaWVudDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VNYW5hZ2VyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlTWFuYWdl
ci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYmI3M2M4NzQ5MTVjNWI4ZDljNGVmNDUzM2I5ODFmMTRhOWNlNjdl
MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFn
ZS9JREJTdG9yYWdlTWFuYWdlci5jcHAKQEAgLTAsMCArMSwyNTUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSURCU3RvcmFnZU1hbmFnZXIuaCIKKworI2lu
Y2x1ZGUgIklEQlN0b3JhZ2VSZWdpc3RyeS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvSURCUmVxdWVz
dERhdGEuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvU1FMaXRlRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU1FM
aXRlSURCQmFja2luZ1N0b3JlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VbmlxdWVJREJEYXRhYmFz
ZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGljIHZvaWQgbWlncmF0ZU9yaWdpbkRh
dGEoY29uc3QgU3RyaW5nJiBvbGRPcmlnaW5EaXJlY3RvcnksIGNvbnN0IFN0cmluZyYgbmV3T3Jp
Z2luRGlyZWN0b3J5KQoreworICAgIGlmICghRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhvbGRPcmln
aW5EaXJlY3RvcnkpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGZpbGVOYW1lcyA9IEZp
bGVTeXN0ZW06Omxpc3REaXJlY3Rvcnkob2xkT3JpZ2luRGlyZWN0b3J5KTsKKyAgICBpZiAoIWZp
bGVOYW1lcy5pc0VtcHR5KCkpCisgICAgICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3Rvcmll
cyhuZXdPcmlnaW5EaXJlY3RvcnkpOworCisgICAgZm9yIChhdXRvJiBuYW1lIDogZmlsZU5hbWVz
KSB7CisgICAgICAgIFN0cmluZyBjaGlsZFBhdGggPSBGaWxlU3lzdGVtOjpyZWFsUGF0aChGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQob2xkT3JpZ2luRGlyZWN0b3J5LCBuYW1l
KSk7CisgICAgICAgIFN0cmluZyBuZXdOYW1lID0gV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6
Y29tcHV0ZUhhc2hGb3JGaWxlTmFtZShXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tp
bmdTdG9yZTo6ZGVjb2RlRGF0YWJhc2VOYW1lKG5hbWUpKTsKKyAgICAgICAgYXV0byBuZXdDaGls
ZFBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobmV3T3JpZ2luRGly
ZWN0b3J5LCBuZXdOYW1lKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6bW92ZUZpbGUoY2hpbGRQYXRo
LCBuZXdDaGlsZFBhdGgpOworICAgIH0KKworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGly
ZWN0b3J5KG9sZE9yaWdpbkRpcmVjdG9yeSk7Cit9CisKK1N0cmluZyBJREJTdG9yYWdlTWFuYWdl
cjo6aWRiU3RvcmFnZU9yaWdpbkRpcmVjdG9yeShjb25zdCBTdHJpbmcmIHJvb3REaXJlY3Rvcnks
IGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luKQoreworICAgIGlmIChyb290RGly
ZWN0b3J5LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisKKyAgICBT
dHJpbmcgb3JpZ2luRGlyZWN0b3J5ID0gV2ViQ29yZTo6SURCRGF0YWJhc2VJZGVudGlmaWVyOjpk
YXRhYmFzZURpcmVjdG9yeVJlbGF0aXZlVG9Sb290KG9yaWdpbi50b3BPcmlnaW4sIG9yaWdpbi5j
bGllbnRPcmlnaW4sIHJvb3REaXJlY3RvcnksICJ2MSIpOworICAgIFN0cmluZyBvbGRPcmlnaW5E
aXJlY3RvcnkgPSBXZWJDb3JlOjpJREJEYXRhYmFzZUlkZW50aWZpZXI6OmRhdGFiYXNlRGlyZWN0
b3J5UmVsYXRpdmVUb1Jvb3Qob3JpZ2luLnRvcE9yaWdpbiwgb3JpZ2luLmNsaWVudE9yaWdpbiwg
cm9vdERpcmVjdG9yeSwgInYwIik7CisgICAgbWlncmF0ZU9yaWdpbkRhdGEob2xkT3JpZ2luRGly
ZWN0b3J5LCBvcmlnaW5EaXJlY3RvcnkpOworCisgICAgcmV0dXJuIG9yaWdpbkRpcmVjdG9yeTsK
K30KKwordWludDY0X3QgSURCU3RvcmFnZU1hbmFnZXI6OmlkYlN0b3JhZ2VTaXplKGNvbnN0IFN0
cmluZyYgb3JpZ2luRGlyZWN0b3J5KQoreworICAgIGlmIChvcmlnaW5EaXJlY3RvcnkuaXNFbXB0
eSgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBXZWJDb3JlOjpJREJTZXJ2ZXI6
OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGF0YWJhc2VzU2l6ZUZvckRpcmVjdG9yeShvcmlnaW5E
aXJlY3RvcnkpOworfQorCitzdGF0aWMgdm9pZCBnZXRPcmlnaW5zRm9yVmVyc2lvbihjb25zdCBT
dHJpbmcmIHZlcnNpb25QYXRoLCBIYXNoU2V0PFdlYkNvcmU6OkNsaWVudE9yaWdpbj4mIG9yaWdp
bnMpCit7CisgICAgZm9yIChhdXRvJiB0b3BEYXRhYmFzZUlkZW50aWZpZXIgOiBGaWxlU3lzdGVt
OjpsaXN0RGlyZWN0b3J5KHZlcnNpb25QYXRoKSkgeworICAgICAgICBhdXRvIHRvcE9yaWdpbiA9
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmllcih0b3BE
YXRhYmFzZUlkZW50aWZpZXIpOworICAgICAgICBpZiAoIXRvcE9yaWdpbikKKyAgICAgICAgICAg
IGNvbnRpbnVlOworCisgICAgICAgIGF1dG8gdG9wT3JpZ2luRGlyZWN0b3J5ID0gRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHZlcnNpb25QYXRoLCB0b3BEYXRhYmFzZUlkZW50
aWZpZXIpOworICAgICAgICBmb3IgKGF1dG8mIGRhdGFiYXNlSWRlbnRpZmllciA6IEZpbGVTeXN0
ZW06Omxpc3REaXJlY3RvcnkodG9wT3JpZ2luRGlyZWN0b3J5KSkgeworICAgICAgICAgICAgYXV0
byBvcmlnaW5EaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
dG9wT3JpZ2luRGlyZWN0b3J5LCBkYXRhYmFzZUlkZW50aWZpZXIpOworICAgICAgICAgICAgaWYg
KEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KG9yaWdpbkRpcmVjdG9yeSkpCisgICAg
ICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIGF1dG8gY2xpZW50T3JpZ2luID0g
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKGRhdGFi
YXNlSWRlbnRpZmllcik7CisgICAgICAgICAgICAvLyBUaGlzIGlzIG5vdCBvcmlnaW4gZGlyZWN0
b3J5LCBidXQgbWF5IGJlIGRhdGFiYXNlIGRpcmVjdG9yeS4KKyAgICAgICAgICAgIGlmICghY2xp
ZW50T3JpZ2luKSB7CisgICAgICAgICAgICAgICAgb3JpZ2lucy5hZGQoV2ViQ29yZTo6Q2xpZW50
T3JpZ2luIHsgKnRvcE9yaWdpbiwgKnRvcE9yaWdpbiB9KTsKKyAgICAgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgb3JpZ2lucy5hZGQoV2ViQ29yZTo6
Q2xpZW50T3JpZ2luIHsgKnRvcE9yaWdpbiwgKmNsaWVudE9yaWdpbiB9KTsKKyAgICAgICAgfQor
CisgICAgICAgIC8vIFdlIG1heSBoYXZlIGRlbGV0ZWQgZW1wdHkgY2hpbGRyZW4gZGlyZWN0b3Jp
ZXMgYWJvdmUsIHdoaWNoIG1ha2UgdGhpcyBkaXJlY3RvcnkgZW1wdHkuCisgICAgICAgIEZpbGVT
eXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KHRvcE9yaWdpbkRpcmVjdG9yeSk7CisgICAgfQor
fQorCitIYXNoU2V0PFdlYkNvcmU6OkNsaWVudE9yaWdpbj4gSURCU3RvcmFnZU1hbmFnZXI6Om9y
aWdpbnNPZklEQlN0b3JhZ2VEYXRhKGNvbnN0IFN0cmluZyYgcm9vdERpcmVjdG9yeSkKK3sKKyAg
ICBIYXNoU2V0PFdlYkNvcmU6OkNsaWVudE9yaWdpbj4gb3JpZ2luczsKKyAgICBpZiAocm9vdERp
cmVjdG9yeS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBvcmlnaW5zOworCisgICAgZ2V0T3Jp
Z2luc0ZvclZlcnNpb24oRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJvb3RE
aXJlY3RvcnksICJ2MCIpLCBvcmlnaW5zKTsKKyAgICBnZXRPcmlnaW5zRm9yVmVyc2lvbihGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocm9vdERpcmVjdG9yeSwgInYxIiksIG9y
aWdpbnMpOworCisgICAgcmV0dXJuIG9yaWdpbnM7Cit9CisKK0lEQlN0b3JhZ2VNYW5hZ2VyOjpJ
REJTdG9yYWdlTWFuYWdlcihjb25zdCBTdHJpbmcmIHBhdGgsIElEQlN0b3JhZ2VSZWdpc3RyeSYg
cmVnaXN0cnksIFF1b3RhQ2hlY2tGdW5jdGlvbiYmIHF1b3RhQ2hlY2tGdW5jdGlvbikKKyAgICA6
IG1fcGF0aChwYXRoKQorICAgICwgbV9yZWdpc3RyeShyZWdpc3RyeSkKKyAgICAsIG1fcXVvdGFD
aGVja0Z1bmN0aW9uKFdURk1vdmUocXVvdGFDaGVja0Z1bmN0aW9uKSkKK3sKK30KKworYm9vbCBJ
REJTdG9yYWdlTWFuYWdlcjo6aXNBY3RpdmUoKSBjb25zdAoreworICAgIHJldHVybiAhbV9kYXRh
YmFzZXMuaXNFbXB0eSgpOworfQorCitib29sIElEQlN0b3JhZ2VNYW5hZ2VyOjpoYXNEYXRhSW5N
ZW1vcnkoKSBjb25zdAoreworICAgIHJldHVybiBXVEY6OmFueU9mKG1fZGF0YWJhc2VzLnZhbHVl
cygpLCBbJl0gKGF1dG8mIGRhdGFiYXNlKSB7CisgICAgICAgIHJldHVybiBkYXRhYmFzZS0+aGFz
RGF0YUluTWVtb3J5KCk7CisgICAgfSk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZU1hbmFnZXI6OmNs
b3NlRGF0YWJhc2VzRm9yRGVsZXRpb24oKQoreworICAgIGZvciAoYXV0byYgZGF0YWJhc2UgOiBt
X2RhdGFiYXNlcy52YWx1ZXMoKSkKKyAgICAgICAgZGF0YWJhc2UtPmltbWVkaWF0ZUNsb3NlKCk7
CisKKyAgICBtX2RhdGFiYXNlcy5jbGVhcigpOworfQorCit2b2lkIElEQlN0b3JhZ2VNYW5hZ2Vy
OjpzdG9wRGF0YWJhc2VBY3Rpdml0aWVzRm9yU3VzcGVuZCgpCit7CisgICAgaWYgKG1fcGF0aC5p
c0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGZvciAoYXV0byYgZGF0YWJhc2UgOiBt
X2RhdGFiYXNlcy52YWx1ZXMoKSkgeworICAgICAgICAvLyBPbmx5IHN0b3AgZGF0YWJhc2VzIHdp
dGggbm9uLWVwaGVtZXJhbCBiYWNraW5nIHN0b3JlIHRoYXQgY2FuIGhvbGQgZGF0YWJhc2UgZmls
ZSBsb2NrLgorICAgICAgICBpZiAoIWRhdGFiYXNlLT5pZGVudGlmaWVyKCkuaXNUcmFuc2llbnQo
KSkKKyAgICAgICAgICAgIGRhdGFiYXNlLT5hYm9ydEFjdGl2ZVRyYW5zYWN0aW9ucygpOworICAg
IH0KK30KKworV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZSYgSURCU3RvcmFn
ZU1hbmFnZXI6OmdldE9yQ3JlYXRlVW5pcXVlSURCRGF0YWJhc2UoY29uc3QgV2ViQ29yZTo6SURC
RGF0YWJhc2VJZGVudGlmaWVyJiBpZGVudGlmaWVyKQoreworICAgIGF1dG8gYWRkUmVzdWx0ID0g
bV9kYXRhYmFzZXMuYWRkKGlkZW50aWZpZXIsIG51bGxwdHIpOworICAgIGlmIChhZGRSZXN1bHQu
aXNOZXdFbnRyeSkKKyAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlx
dWU8V2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZT4oKnRoaXMsIGlkZW50aWZp
ZXIpOworCisgICAgcmV0dXJuICphZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOworfQorCit2b2lk
IElEQlN0b3JhZ2VNYW5hZ2VyOjpvcGVuRGF0YWJhc2UoV2ViQ29yZTo6SURCU2VydmVyOjpJREJD
b25uZWN0aW9uVG9DbGllbnQmIGNvbm5lY3Rpb25Ub0NsaWVudCwgY29uc3QgV2ViQ29yZTo6SURC
UmVxdWVzdERhdGEmIHJlcXVlc3REYXRhKQoreworICAgIGF1dG8mIGRhdGFiYXNlID0gZ2V0T3JD
cmVhdGVVbmlxdWVJREJEYXRhYmFzZShyZXF1ZXN0RGF0YS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7
CisgICAgZGF0YWJhc2Uub3BlbkRhdGFiYXNlQ29ubmVjdGlvbihjb25uZWN0aW9uVG9DbGllbnQs
IHJlcXVlc3REYXRhKTsKK30KKwordm9pZCBJREJTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlRGF0YWJh
c2UoV2ViQ29yZTo6SURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnQmIGNvbm5lY3Rpb25U
b0NsaWVudCwgY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhKQorewor
ICAgIGF1dG8mIGRhdGFiYXNlID0gZ2V0T3JDcmVhdGVVbmlxdWVJREJEYXRhYmFzZShyZXF1ZXN0
RGF0YS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAgZGF0YWJhc2UuaGFuZGxlRGVsZXRlKGNv
bm5lY3Rpb25Ub0NsaWVudCwgcmVxdWVzdERhdGEpOworCisgICAgLy8gVGhpcyBkYXRhYmFzZSBp
cyBjcmVhdGVkIGZvciBkZWxldGlvbi4KKyAgICBpZiAoZGF0YWJhc2UudHJ5Q2xvc2UoKSkKKyAg
ICAgICAgbV9kYXRhYmFzZXMucmVtb3ZlKGRhdGFiYXNlLmlkZW50aWZpZXIoKSk7Cit9CisKK1Zl
Y3RvcjxXZWJDb3JlOjpJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiBJREJTdG9yYWdlTWFuYWdl
cjo6Z2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKCkKK3sKKyAgICBWZWN0b3I8V2ViQ29y
ZTo6SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbj4gcmVzdWx0OworICAgIEhhc2hTZXQ8U3RyaW5n
PiB2aXNpdGVkRGF0YWJhc2VQYXRoczsKKyAgICBmb3IgKGF1dG8mIGRhdGFiYXNlIDogbV9kYXRh
YmFzZXMudmFsdWVzKCkpIHsKKyAgICAgICAgYXV0byBwYXRoID0gZGF0YWJhc2UtPmZpbGVQYXRo
KCk7CisgICAgICAgIGlmICghcGF0aC5pc0VtcHR5KCkpCisgICAgICAgICAgICB2aXNpdGVkRGF0
YWJhc2VQYXRocy5hZGQocGF0aCk7CisKKyAgICAgICAgaWYgKGF1dG8gbmFtZUFuZFZlcnNpb24g
PSBkYXRhYmFzZS0+bmFtZUFuZFZlcnNpb24oKSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
V1RGTW92ZSgqbmFtZUFuZFZlcnNpb24pKTsKKyAgICB9CisKKyAgICBhdXRvIGRhdGFiYXNlSWRl
bnRpZmllcnMgPSBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KG1fcGF0aCk7CisgICAgZm9yIChh
dXRvIGlkZW50aWZpZXIgOiBkYXRhYmFzZUlkZW50aWZpZXJzKSB7CisgICAgICAgIGF1dG8gZGF0
YWJhc2VEaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9w
YXRoLCBpZGVudGlmaWVyKTsKKyAgICAgICAgYXV0byBkYXRhYmFzZVBhdGggPSBXZWJDb3JlOjpJ
REJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZnVsbERhdGFiYXNlUGF0aEZvckRpcmVj
dG9yeShkYXRhYmFzZURpcmVjdG9yeSk7CisgICAgICAgIGlmICh2aXNpdGVkRGF0YWJhc2VQYXRo
cy5jb250YWlucyhkYXRhYmFzZVBhdGgpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAg
ICAgaWYgKGF1dG8gbmFtZUFuZFZlcnNpb24gPSBXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6ZGF0YWJhc2VOYW1lQW5kVmVyc2lvbkZyb21GaWxlKGRhdGFiYXNlUGF0
aCkpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKFdURk1vdmUoKm5hbWVBbmRWZXJzaW9uKSk7
CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBJREJTdG9yYWdlTWFuYWdl
cjo6b3BlbkRCUmVxdWVzdENhbmNlbGxlZChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYg
cmVxdWVzdERhdGEpCit7CisgICAgYXV0byogZGF0YWJhc2UgPSBtX2RhdGFiYXNlcy5nZXQocmVx
dWVzdERhdGEuZGF0YWJhc2VJZGVudGlmaWVyKCkpOworICAgIGlmICghZGF0YWJhc2UpCisgICAg
ICAgIHJldHVybjsKKworICAgIGRhdGFiYXNlLT5vcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKHJlcXVl
c3REYXRhLnJlcXVlc3RJZGVudGlmaWVyKCkpOworCisgICAgLy8gRGF0YWJhc2UgYmVjb21lcyBp
ZGxlIGFmdGVyIHJlcXVlc3QgaXMgY2FuY2VsbGVkLgorICAgIGlmIChkYXRhYmFzZS0+dHJ5Q2xv
c2UoKSkKKyAgICAgICAgbV9kYXRhYmFzZXMucmVtb3ZlKGRhdGFiYXNlLT5pZGVudGlmaWVyKCkp
OworfQorCit2b2lkIElEQlN0b3JhZ2VNYW5hZ2VyOjpyZWdpc3RlckNvbm5lY3Rpb24oV2ViQ29y
ZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCit7
CisgICAgbV9yZWdpc3RyeS5yZWdpc3RlckNvbm5lY3Rpb24oY29ubmVjdGlvbik7Cit9CisKK3Zv
aWQgSURCU3RvcmFnZU1hbmFnZXI6OnVucmVnaXN0ZXJDb25uZWN0aW9uKFdlYkNvcmU6OklEQlNl
cnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiBjb25uZWN0aW9uKQoreworICAgIG1f
cmVnaXN0cnkudW5yZWdpc3RlckNvbm5lY3Rpb24oY29ubmVjdGlvbik7Cit9CisKK3ZvaWQgSURC
U3RvcmFnZU1hbmFnZXI6OnJlZ2lzdGVyVHJhbnNhY3Rpb24oV2ViQ29yZTo6SURCU2VydmVyOjpV
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKK3sKKyAgICBtX3JlZ2lz
dHJ5LnJlZ2lzdGVyVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pOworfQorCit2b2lkIElEQlN0b3Jh
Z2VNYW5hZ2VyOjp1bnJlZ2lzdGVyVHJhbnNhY3Rpb24oV2ViQ29yZTo6SURCU2VydmVyOjpVbmlx
dWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKK3sKKyAgICBtX3JlZ2lzdHJ5
LnVucmVnaXN0ZXJUcmFuc2FjdGlvbih0cmFuc2FjdGlvbik7Cit9CisKK3N0ZDo6dW5pcXVlX3B0
cjxXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQkJhY2tpbmdTdG9yZT4gSURCU3RvcmFnZU1hbmFnZXI6
OmNyZWF0ZUJhY2tpbmdTdG9yZShjb25zdCBXZWJDb3JlOjpJREJEYXRhYmFzZUlkZW50aWZpZXIm
IGlkZW50aWZpZXIpCit7CisgICAgaWYgKG1fcGF0aC5pc0VtcHR5KCkgfHwgaWRlbnRpZmllci5p
c1RyYW5zaWVudCgpKQorICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJDb3JlOjpJREJTZXJ2
ZXI6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZT4oaWRlbnRpZmllcik7CisKKyAgICBhdXRvIG5hbWUg
PSBXZWJDb3JlOjpTUUxpdGVGaWxlU3lzdGVtOjpjb21wdXRlSGFzaEZvckZpbGVOYW1lKGlkZW50
aWZpZXIuZGF0YWJhc2VOYW1lKCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYkNvcmU6OklE
QlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlPihpZGVudGlmaWVyLCBGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9wYXRoLCBuYW1lKSk7Cit9CisKK3ZvaWQgSURCU3Rv
cmFnZU1hbmFnZXI6OnJlcXVlc3RTcGFjZShjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCB1
aW50NjRfdCBzaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQoreworICAgIG1fcXVvdGFDaGVja0Z1bmN0aW9uKHNpemUsIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZU1hbmFnZXIuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlTWFuYWdlci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjI4OTZmZTRhY2ExNjRjZTY5MWI5MDY5ZGJjYWU0ZmNmNjlmMmYzODMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURC
U3RvcmFnZU1hbmFnZXIuaApAQCAtMCwwICsxLDgyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlIDxXZWJDb3JlL1VuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlci5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBJREJSZXF1ZXN0RGF0YTsKKworbmFtZXNwYWNlIElE
QlNlcnZlciB7CitjbGFzcyBJREJCYWNraW5nU3RvcmU7CitjbGFzcyBJREJDb25uZWN0aW9uVG9D
bGllbnQ7CitjbGFzcyBVbmlxdWVJREJEYXRhYmFzZTsKK2NsYXNzIFVuaXF1ZUlEQlRyYW5zYWN0
aW9uOworfQorCitzdHJ1Y3QgSURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbjsKK30KKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK2NsYXNzIElEQlN0b3JhZ2VSZWdpc3RyeTsKKworY2xhc3MgSURCU3Rv
cmFnZU1hbmFnZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJE
YXRhYmFzZU1hbmFnZXIgeworcHVibGljOgorICAgIHN0YXRpYyBTdHJpbmcgaWRiU3RvcmFnZU9y
aWdpbkRpcmVjdG9yeShjb25zdCBTdHJpbmcmIHJvb3REaXJlY3RvcnksIGNvbnN0IFdlYkNvcmU6
OkNsaWVudE9yaWdpbiYpOworICAgIHN0YXRpYyB1aW50NjRfdCBpZGJTdG9yYWdlU2l6ZShjb25z
dCBTdHJpbmcmIG9yaWdpbkRpcmVjdG9yeSk7CisgICAgc3RhdGljIEhhc2hTZXQ8V2ViQ29yZTo6
Q2xpZW50T3JpZ2luPiBvcmlnaW5zT2ZJREJTdG9yYWdlRGF0YShjb25zdCBTdHJpbmcmIHJvb3RE
aXJlY3RvcnkpOworCisgICAgdXNpbmcgUXVvdGFDaGVja0Z1bmN0aW9uID0gRnVuY3Rpb248dm9p
ZCh1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
Jik+OworICAgIElEQlN0b3JhZ2VNYW5hZ2VyKGNvbnN0IFN0cmluZyYgcGF0aCwgSURCU3RvcmFn
ZVJlZ2lzdHJ5JiwgUXVvdGFDaGVja0Z1bmN0aW9uJiYpOworICAgIGJvb2wgaXNBY3RpdmUoKSBj
b25zdDsKKyAgICBib29sIGhhc0RhdGFJbk1lbW9yeSgpIGNvbnN0OworICAgIHZvaWQgY2xvc2VE
YXRhYmFzZXNGb3JEZWxldGlvbigpOworICAgIHZvaWQgc3RvcERhdGFiYXNlQWN0aXZpdGllc0Zv
clN1c3BlbmQoKTsKKworICAgIHZvaWQgb3BlbkRhdGFiYXNlKFdlYkNvcmU6OklEQlNlcnZlcjo6
SURCQ29ubmVjdGlvblRvQ2xpZW50JiwgY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmKTsK
KyAgICB2b2lkIG9wZW5EQlJlcXVlc3RDYW5jZWxsZWQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVz
dERhdGEmKTsKKyAgICB2b2lkIGRlbGV0ZURhdGFiYXNlKFdlYkNvcmU6OklEQlNlcnZlcjo6SURC
Q29ubmVjdGlvblRvQ2xpZW50JiwgY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmKTsKKyAg
ICBWZWN0b3I8V2ViQ29yZTo6SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbj4gZ2V0QWxsRGF0YWJh
c2VOYW1lc0FuZFZlcnNpb25zKCk7CisKK3ByaXZhdGU6CisgICAgV2ViQ29yZTo6SURCU2VydmVy
OjpVbmlxdWVJREJEYXRhYmFzZSYgZ2V0T3JDcmVhdGVVbmlxdWVJREJEYXRhYmFzZShjb25zdCBX
ZWJDb3JlOjpJREJEYXRhYmFzZUlkZW50aWZpZXImKTsKKworICAgIC8vIFdlYkNvcmU6OlVuaXF1
ZUlEQkRhdGFiYXNlTWFuYWdlcgorICAgIHZvaWQgcmVnaXN0ZXJDb25uZWN0aW9uKFdlYkNvcmU6
OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJikgZmluYWw7CisgICAgdm9p
ZCB1bnJlZ2lzdGVyQ29ubmVjdGlvbihXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFi
YXNlQ29ubmVjdGlvbiYpIGZpbmFsOworICAgIHZvaWQgcmVnaXN0ZXJUcmFuc2FjdGlvbihXZWJD
b3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mKSBmaW5hbDsKKyAg
ICB2b2lkIHVucmVnaXN0ZXJUcmFuc2FjdGlvbihXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlE
QkRhdGFiYXNlVHJhbnNhY3Rpb24mKSBmaW5hbDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6SURCU2VydmVyOjpJREJCYWNraW5nU3RvcmU+IGNyZWF0ZUJhY2tpbmdTdG9yZShjb25zdCBX
ZWJDb3JlOjpJREJEYXRhYmFzZUlkZW50aWZpZXImKSBmaW5hbDsKKyAgICB2b2lkIHJlcXVlc3RT
cGFjZShjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCB1aW50NjRfdCBzaXplLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKKworICAgIFN0cmluZyBtX3BhdGg7Cisg
ICAgSURCU3RvcmFnZVJlZ2lzdHJ5JiBtX3JlZ2lzdHJ5OworICAgIFF1b3RhQ2hlY2tGdW5jdGlv
biBtX3F1b3RhQ2hlY2tGdW5jdGlvbjsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OklEQkRhdGFiYXNl
SWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURC
RGF0YWJhc2U+PiBtX2RhdGFiYXNlczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VS
ZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3Rv
cmFnZVJlZ2lzdHJ5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNjNhYjVlMjU1MTZlZTYwZjVmNjQwZjU1MWUx
ZjliYTFjOWVhNjFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VSZWdpc3RyeS5jcHAKQEAgLTAsMCArMSwxMDEgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSURCU3RvcmFnZVJlZ2lz
dHJ5LmgiCisKKyNpbmNsdWRlICJJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50LmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uaD4KKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK0lEQlN0b3JhZ2VSZWdpc3RyeTo6SURCU3RvcmFnZVJlZ2lzdHJ5KCkgPSBkZWZhdWx0
OworCitXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub0NsaWVudCYgSURCU3RvcmFn
ZVJlZ2lzdHJ5OjplbnN1cmVDb25uZWN0aW9uVG9DbGllbnQoSVBDOjpDb25uZWN0aW9uOjpVbmlx
dWVJRCBjb25uZWN0aW9uLCBXZWJDb3JlOjpJREJDb25uZWN0aW9uSWRlbnRpZmllciBpZGVudGlm
aWVyKQoreworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9jb25uZWN0aW9uc1RvQ2xpZW50LmFkZChp
ZGVudGlmaWVyLCBudWxscHRyKTsKKyAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpCisgICAg
ICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPElEQlN0b3JhZ2VDb25u
ZWN0aW9uVG9DbGllbnQ+KGNvbm5lY3Rpb24sIGlkZW50aWZpZXIpOworCisgICAgQVNTRVJUKGFk
ZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPmlwY0Nvbm5lY3Rpb24oKSA9PSBjb25uZWN0aW9uKTsK
KyAgICByZXR1cm4gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+Y29ubmVjdGlvblRvQ2xpZW50
KCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZVJlZ2lzdHJ5OjpyZW1vdmVDb25uZWN0aW9uVG9DbGll
bnQoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uKQoreworICAgIGF1dG8gYWxs
Q29ubmVjdGlvbnNUb0NsaWVudCA9IHN0ZDo6ZXhjaGFuZ2UobV9jb25uZWN0aW9uc1RvQ2xpZW50
LCB7IH0pOworICAgIGZvciAoYXV0byYgW2lkZW50aWZpZXIsIGNvbm5lY3Rpb25Ub0NsaWVudF0g
OiBhbGxDb25uZWN0aW9uc1RvQ2xpZW50KSB7CisgICAgICAgIGlmIChjb25uZWN0aW9uVG9DbGll
bnQtPmlwY0Nvbm5lY3Rpb24oKSAhPSBjb25uZWN0aW9uKSB7CisgICAgICAgICAgICBtX2Nvbm5l
Y3Rpb25zVG9DbGllbnQuYWRkKGlkZW50aWZpZXIsIFdURk1vdmUoY29ubmVjdGlvblRvQ2xpZW50
KSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBjb25uZWN0aW9u
VG9DbGllbnQtPmNvbm5lY3Rpb25Ub0NsaWVudCgpLmNvbm5lY3Rpb25Ub0NsaWVudENsb3NlZCgp
OworICAgIH0KK30KKwordm9pZCBJREJTdG9yYWdlUmVnaXN0cnk6OnJlZ2lzdGVyQ29ubmVjdGlv
bihXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYgY29ubmVj
dGlvbikKK3sKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBjb25uZWN0aW9uLmlkZW50aWZpZXIoKTsK
KyAgICBBU1NFUlQoIW1fY29ubmVjdGlvbnMuY29udGFpbnMoaWRlbnRpZmllcikpOworCisgICAg
bV9jb25uZWN0aW9ucy5hZGQoaWRlbnRpZmllciwgY29ubmVjdGlvbik7Cit9CisKK3ZvaWQgSURC
U3RvcmFnZVJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQ29ubmVjdGlvbihXZWJDb3JlOjpJREJTZXJ2ZXI6
OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYgY29ubmVjdGlvbikKK3sKKyAgICBhdXRvIGlk
ZW50aWZpZXIgPSBjb25uZWN0aW9uLmlkZW50aWZpZXIoKTsKKyAgICBBU1NFUlQobV9jb25uZWN0
aW9ucy5jb250YWlucyhpZGVudGlmaWVyKSk7CisKKyAgICBtX2Nvbm5lY3Rpb25zLnJlbW92ZShp
ZGVudGlmaWVyKTsKK30KKwordm9pZCBJREJTdG9yYWdlUmVnaXN0cnk6OnJlZ2lzdGVyVHJhbnNh
Y3Rpb24oV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0
cmFuc2FjdGlvbikKK3sKKyAgICBhdXRvIGlkZW50aWZpZXIgPSB0cmFuc2FjdGlvbi5pbmZvKCku
aWRlbnRpZmllcigpOworICAgIEFTU0VSVCghbV90cmFuc2FjdGlvbnMuY29udGFpbnMoaWRlbnRp
ZmllcikpOworCisgICAgbV90cmFuc2FjdGlvbnMuYWRkKGlkZW50aWZpZXIsIHRyYW5zYWN0aW9u
KTsKK30KKwordm9pZCBJREJTdG9yYWdlUmVnaXN0cnk6OnVucmVnaXN0ZXJUcmFuc2FjdGlvbihX
ZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0
aW9uKQoreworICAgIGF1dG8gaWRlbnRpZmllciA9IHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlm
aWVyKCk7CisgICAgQVNTRVJUKG1fdHJhbnNhY3Rpb25zLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsK
KworICAgIG1fdHJhbnNhY3Rpb25zLnJlbW92ZShpZGVudGlmaWVyKTsKK30KKworV2ViQ29yZTo6
SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24qIElEQlN0b3JhZ2VSZWdpc3Ry
eTo6Y29ubmVjdGlvbih1aW50NjRfdCBpZGVudGlmaWVyKQoreworICAgIHJldHVybiBtX2Nvbm5l
Y3Rpb25zLmdldChpZGVudGlmaWVyKS5nZXQoKTsKK30KKworV2ViQ29yZTo6SURCU2VydmVyOjpV
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uKiBJREJTdG9yYWdlUmVnaXN0cnk6OnRyYW5zYWN0
aW9uKFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIHJl
dHVybiBtX3RyYW5zYWN0aW9ucy5nZXQoaWRlbnRpZmllcikuZ2V0KCk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
dG9yYWdlL0lEQlN0b3JhZ2VSZWdpc3RyeS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9zdG9yYWdlL0lEQlN0b3JhZ2VSZWdpc3RyeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODRkY2Y0ZjYxODY4
N2JlNmMyNGVlMzI2M2NhNDhmODg3ODc2YWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZVJlZ2lzdHJ5LmgKQEAgLTAsMCAr
MSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ29ubmVjdGlv
bi5oIgorI2luY2x1ZGUgPFdlYkNvcmUvSURCUmVzb3VyY2VJZGVudGlmaWVyLmg+CisjaW5jbHVk
ZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIElEQlNl
cnZlciB7CitjbGFzcyBVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb247CitjbGFzcyBVbmlxdWVJ
REJEYXRhYmFzZVRyYW5zYWN0aW9uOworfQorfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xh
c3MgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDsKKworY2xhc3MgSURCU3RvcmFnZVJlZ2lz
dHJ5IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBJREJTdG9y
YWdlUmVnaXN0cnkoKTsKKyAgICBXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub0Ns
aWVudCYgZW5zdXJlQ29ubmVjdGlvblRvQ2xpZW50KElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQs
IFdlYkNvcmU6OklEQkNvbm5lY3Rpb25JZGVudGlmaWVyKTsKKyAgICB2b2lkIHJlbW92ZUNvbm5l
Y3Rpb25Ub0NsaWVudChJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEKTsKKyAgICB2b2lkIHJlZ2lz
dGVyQ29ubmVjdGlvbihXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVj
dGlvbiYpOworICAgIHZvaWQgdW5yZWdpc3RlckNvbm5lY3Rpb24oV2ViQ29yZTo6SURCU2VydmVy
OjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mKTsKKyAgICBXZWJDb3JlOjpJREJTZXJ2ZXI6
OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiogY29ubmVjdGlvbih1aW50NjRfdCBpZGVudGlm
aWVyKTsKKyAgICB2b2lkIHJlZ2lzdGVyVHJhbnNhY3Rpb24oV2ViQ29yZTo6SURCU2VydmVyOjpV
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJik7CisgICAgdm9pZCB1bnJlZ2lzdGVyVHJhbnNh
Y3Rpb24oV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJik7
CisgICAgV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uKiB0
cmFuc2FjdGlvbihXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXIpOworCitwcml2YXRlOgor
ICAgIEhhc2hNYXA8V2ViQ29yZTo6SURCQ29ubmVjdGlvbklkZW50aWZpZXIsIHN0ZDo6dW5pcXVl
X3B0cjxJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50Pj4gbV9jb25uZWN0aW9uc1RvQ2xpZW50
OworICAgIEhhc2hNYXA8dWludDY0X3QsIFdlYWtQdHI8V2ViQ29yZTo6SURCU2VydmVyOjpVbmlx
dWVJREJEYXRhYmFzZUNvbm5lY3Rpb24+PiBtX2Nvbm5lY3Rpb25zOworICAgIEhhc2hNYXA8V2Vi
Q29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyLCBXZWFrUHRyPFdlYkNvcmU6OklEQlNlcnZlcjo6
VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbj4+IG1fdHJhbnNhY3Rpb25zOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IDgxM2U2
ZTk1YTEzYWJlMzkxODZkMTliMmRhYjI4N2JiYjU1MjRmNzkuLmQyYjdlMTY2ODc5MGYxNmQ2YmY0
ODQyOWVjMGMxZWM3ZjQzNWQ1YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwCkBAIC0y
NiwxOCArMjYsMjYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJOZXR3b3JrU3Rv
cmFnZU1hbmFnZXIuaCIKIAorI2luY2x1ZGUgIkNhY2hlU3RvcmFnZUVuZ2luZS5oIgogI2luY2x1
ZGUgIkZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJGaWxlU3lz
dGVtU3RvcmFnZU1hbmFnZXIuaCIKKyNpbmNsdWRlICJJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xp
ZW50LmgiCisjaW5jbHVkZSAiSURCU3RvcmFnZU1hbmFnZXIuaCIKKyNpbmNsdWRlICJJREJTdG9y
YWdlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJMb2NhbFN0b3JhZ2VNYW5hZ2VyLmgiCiAjaW5jbHVk
ZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgog
I2luY2x1ZGUgIk5ldHdvcmtTdG9yYWdlTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiT3Jp
Z2luU3RvcmFnZU1hbmFnZXIuaCIKKyNpbmNsdWRlICJRdW90YU1hbmFnZXIuaCIKICNpbmNsdWRl
ICJTZXNzaW9uU3RvcmFnZU1hbmFnZXIuaCIKICNpbmNsdWRlICJTdG9yYWdlQXJlYUJhc2UuaCIK
ICNpbmNsdWRlICJTdG9yYWdlQXJlYU1hcE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFy
ZWFSZWdpc3RyeS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhVHlwZS5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VbmlxdWVJREJE
YXRhYmFzZUNvbm5lY3Rpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1VuaXF1ZUlEQkRhdGFiYXNl
VHJhbnNhY3Rpb24uaD4KICNpbmNsdWRlIDxwYWwvY3J5cHRvL0NyeXB0b0RpZ2VzdC5oPgogI2lu
Y2x1ZGUgPHd0Zi9TY29wZS5oPgogI2luY2x1ZGUgPHd0Zi9TdXNwZW5kYWJsZVdvcmtRdWV1ZS5o
PgpAQCAtMTAwLDIyICsxMDgsMjggQEAgc3RhdGljIHZvaWQgZGVsZXRlT3JpZ2luRmlsZUlmTmVj
ZXNzYXJ5KGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiAgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0
ZUZpbGUoZmlsZVBhdGgpOwogfQogCi1SZWY8TmV0d29ya1N0b3JhZ2VNYW5hZ2VyPiBOZXR3b3Jr
U3RvcmFnZU1hbmFnZXI6OmNyZWF0ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0
cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21Mb2NhbFN0b3JhZ2VQYXRoKQorUmVmPE5l
dHdvcmtTdG9yYWdlTWFuYWdlcj4gTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjcmVhdGUoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGNvbm5lY3Rpb24s
IGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21Mb2NhbFN0b3JhZ2VQYXRo
LCBjb25zdCBTdHJpbmcmIGN1c3RvbUlEQlN0b3JhZ2VQYXRoLCBjb25zdCBTdHJpbmcmIGN1c3Rv
bUNhY2hlU3RvcmFnZVBhdGgsIHVpbnQ2NF90IGRlZmF1bHRPcmlnaW5RdW90YSwgdWludDY0X3Qg
ZGVmYXVsdFRoaXJkUGFydHlPcmlnaW5RdW90YSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBOZXR3b3JrU3RvcmFnZU1hbmFnZXIoc2Vzc2lvbklELCBwYXRoLCBjdXN0b21Mb2NhbFN0b3Jh
Z2VQYXRoKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmV0d29ya1N0b3JhZ2VNYW5hZ2Vy
KHNlc3Npb25JRCwgY29ubmVjdGlvbiwgcGF0aCwgY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCwgY3Vz
dG9tSURCU3RvcmFnZVBhdGgsIGN1c3RvbUNhY2hlU3RvcmFnZVBhdGgsIGRlZmF1bHRPcmlnaW5R
dW90YSwgZGVmYXVsdFRoaXJkUGFydHlPcmlnaW5RdW90YSkpOwogfQogCi1OZXR3b3JrU3RvcmFn
ZU1hbmFnZXI6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21Mb2NhbFN0b3JhZ2VQYXRo
KQorTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXIoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGNvbm5lY3Rpb24sIGNv
bnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21Mb2NhbFN0b3JhZ2VQYXRoLCBj
b25zdCBTdHJpbmcmIGN1c3RvbUlEQlN0b3JhZ2VQYXRoLCBjb25zdCBTdHJpbmcmIGN1c3RvbUNh
Y2hlU3RvcmFnZVBhdGgsIHVpbnQ2NF90IGRlZmF1bHRPcmlnaW5RdW90YSwgdWludDY0X3QgZGVm
YXVsdFRoaXJkUGFydHlPcmlnaW5RdW90YSkKICAgICA6IG1fc2Vzc2lvbklEKHNlc3Npb25JRCkK
ICAgICAsIG1fcXVldWUoU3VzcGVuZGFibGVXb3JrUXVldWU6OmNyZWF0ZSgiY29tLmFwcGxlLldl
YktpdC5TdG9yYWdlIikpCisgICAgLCBtX2RlZmF1bHRPcmlnaW5RdW90YShkZWZhdWx0T3JpZ2lu
UXVvdGEpCisgICAgLCBtX2RlZmF1bHRUaGlyZFBhcnR5T3JpZ2luUXVvdGEoZGVmYXVsdFRoaXJk
UGFydHlPcmlnaW5RdW90YSkKKyAgICAsIG1fcGFyZW50Q29ubmVjdGlvbihjb25uZWN0aW9uKQog
ewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBtX3F1ZXVlLT5kaXNwYXRj
aChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHBhdGggPSBwYXRoLmlzb2xh
dGVkQ29weSgpLCBjdXN0b21Mb2NhbFN0b3JhZ2VQYXRoID0gY3Jvc3NUaHJlYWRDb3B5KGN1c3Rv
bUxvY2FsU3RvcmFnZVBhdGgpXSgpIG11dGFibGUgeworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgcGF0aCA9IHBhdGguaXNvbGF0ZWRD
b3B5KCksIGN1c3RvbUxvY2FsU3RvcmFnZVBhdGggPSBjcm9zc1RocmVhZENvcHkoY3VzdG9tTG9j
YWxTdG9yYWdlUGF0aCksIGN1c3RvbUlEQlN0b3JhZ2VQYXRoID0gY3Jvc3NUaHJlYWRDb3B5KGN1
c3RvbUlEQlN0b3JhZ2VQYXRoKSwgY3VzdG9tQ2FjaGVTdG9yYWdlUGF0aCA9IGNyb3NzVGhyZWFk
Q29weShjdXN0b21DYWNoZVN0b3JhZ2VQYXRoKV0oKSBtdXRhYmxlIHsKICAgICAgICAgbV9maWxl
U3lzdGVtU3RvcmFnZUhhbmRsZVJlZ2lzdHJ5ID0gbWFrZVVuaXF1ZTxGaWxlU3lzdGVtU3RvcmFn
ZUhhbmRsZVJlZ2lzdHJ5PigpOwogICAgICAgICBtX3N0b3JhZ2VBcmVhUmVnaXN0cnkgPSBtYWtl
VW5pcXVlPFN0b3JhZ2VBcmVhUmVnaXN0cnk+KCk7CisgICAgICAgIG1faWRiU3RvcmFnZVJlZ2lz
dHJ5ID0gbWFrZVVuaXF1ZTxJREJTdG9yYWdlUmVnaXN0cnk+KCk7CiAgICAgICAgIG1fcGF0aCA9
IHBhdGg7CiAgICAgICAgIG1fY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCA9IGN1c3RvbUxvY2FsU3Rv
cmFnZVBhdGg7CisgICAgICAgIG1fY3VzdG9tSURCU3RvcmFnZVBhdGggPSBjdXN0b21JREJTdG9y
YWdlUGF0aDsKKyAgICAgICAgbV9jdXN0b21DYWNoZVN0b3JhZ2VQYXRoID0gY3VzdG9tQ2FjaGVT
dG9yYWdlUGF0aDsKICAgICAgICAgaWYgKCFtX3BhdGguaXNFbXB0eSgpKSB7CiAgICAgICAgICAg
ICBhdXRvIHNhbHRQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1f
cGF0aCwgInNhbHQiKTsKICAgICAgICAgICAgIG1fc2FsdCA9IHZhbHVlT3JEZWZhdWx0KEZpbGVT
eXN0ZW06OnJlYWRPck1ha2VTYWx0KHNhbHRQYXRoKSk7CkBAIC0xMzEsNyArMTQ1LDEwIEBAIE5l
dHdvcmtTdG9yYWdlTWFuYWdlcjo6fk5ldHdvcmtTdG9yYWdlTWFuYWdlcigpCiAKIGJvb2wgTmV0
d29ya1N0b3JhZ2VNYW5hZ2VyOjpjYW5IYW5kbGVUeXBlcyhPcHRpb25TZXQ8V2Vic2l0ZURhdGFU
eXBlPiB0eXBlcykKIHsKLSAgICByZXR1cm4gdHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBl
OjpMb2NhbFN0b3JhZ2UpIHx8IHR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6U2Vzc2lv
blN0b3JhZ2UpIHx8IHR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6RmlsZVN5c3RlbSk7
CisgICAgcmV0dXJuIHR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6TG9jYWxTdG9yYWdl
KQorICAgICAgICB8fCB0eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlNlc3Npb25TdG9y
YWdlKQorICAgICAgICB8fCB0eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkZpbGVTeXN0
ZW0pCisgICAgICAgIHx8IHR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERC
RGF0YWJhc2VzKTsKIH0KIAogdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNsb3NlKCkKQEAg
LTE3MCw2ICsxODcsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6c3RvcFJlY2Vpdmlu
Z01lc3NhZ2VGcm9tQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24mCiAKICAgICBjb25uZWN0aW9u
LnJlbW92ZVdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VN
YW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOwogICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY29ubmVjdGlvbiA9IGNvbm5lY3Rp
b24udW5pcXVlSUQoKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgbV9pZGJTdG9yYWdlUmVnaXN0cnkt
PnJlbW92ZUNvbm5lY3Rpb25Ub0NsaWVudChjb25uZWN0aW9uKTsKICAgICAgICAgbV9sb2NhbE9y
aWdpblN0b3JhZ2VNYW5hZ2Vycy5yZW1vdmVJZihbJl0oYXV0byYgZW50cnkpIHsKICAgICAgICAg
ICAgIGF1dG8mIG1hbmFnZXIgPSBlbnRyeS52YWx1ZTsKICAgICAgICAgICAgIG1hbmFnZXItPmNv
bm5lY3Rpb25DbG9zZWQoY29ubmVjdGlvbik7CkBAIC0yMjIsNyArMjQwLDE0IEBAIE9yaWdpblN0
b3JhZ2VNYW5hZ2VyJiBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmxvY2FsT3JpZ2luU3RvcmFnZU1h
bmFnZXIoY29uc3QgV2ViCiAgICAgICAgICAgICAgICAgd3JpdGVPcmlnaW5Ub0ZpbGVJZk5lY2Vz
c2FyeShvcmlnaW5GaWxlUGF0aChvcmlnaW5EaXJlY3RvcnkpLCBvcmlnaW4pOwogICAgICAgICAg
ICAgfSk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8T3JpZ2luU3RvcmFn
ZU1hbmFnZXI+KFdURk1vdmUob3JpZ2luRGlyZWN0b3J5KSwgTG9jYWxTdG9yYWdlTWFuYWdlcjo6
bG9jYWxTdG9yYWdlRmlsZVBhdGgobV9jdXN0b21Mb2NhbFN0b3JhZ2VQYXRoLCBvcmlnaW4pKTsK
KyAgICAgICAgYXV0byBsb2NhbFN0b3JhZ2VQYXRoID0gTG9jYWxTdG9yYWdlTWFuYWdlcjo6bG9j
YWxTdG9yYWdlRmlsZVBhdGgobV9jdXN0b21Mb2NhbFN0b3JhZ2VQYXRoLCBvcmlnaW4pOworICAg
ICAgICBhdXRvIGlkYlN0b3JhZ2VQYXRoID0gSURCU3RvcmFnZU1hbmFnZXI6OmlkYlN0b3JhZ2VP
cmlnaW5EaXJlY3RvcnkobV9jdXN0b21JREJTdG9yYWdlUGF0aCwgb3JpZ2luKTsKKyAgICAgICAg
YXV0byBjYWNoZVN0b3JhZ2VQYXRoID0gQ2FjaGVTdG9yYWdlOjpFbmdpbmU6OnN0b3JhZ2VQYXRo
KG1fY3VzdG9tQ2FjaGVTdG9yYWdlUGF0aCwgb3JpZ2luKTsKKyAgICAgICAgdWludDY0X3QgcXVv
dGEgPSBvcmlnaW4udG9wT3JpZ2luID09IG9yaWdpbi5jbGllbnRPcmlnaW4gPyBtX2RlZmF1bHRP
cmlnaW5RdW90YSA6IG1fZGVmYXVsdFRoaXJkUGFydHlPcmlnaW5RdW90YTsKKyAgICAgICAgUXVv
dGFNYW5hZ2VyOjpJbmNyZWFzZVF1b3RhRnVuY3Rpb24gaW5jcmVhc2VRdW90YUZ1bmN0aW9uID0g
W3Nlc3Npb25JRCA9IG1fc2Vzc2lvbklELCBvcmlnaW4sIGNvbm5lY3Rpb24gPSBtX3BhcmVudENv
bm5lY3Rpb25dIChhdXRvIGlkZW50aWZpZXIsIGF1dG8gY3VycmVudFF1b3RhLCBhdXRvIGN1cnJl
bnRVc2FnZSwgYXV0byByZXF1ZXN0ZWRJbmNyZWFzZSkgbXV0YWJsZSB7CisgICAgICAgICAgICBJ
UEM6OkNvbm5lY3Rpb246OnNlbmQoY29ubmVjdGlvbiwgTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
UHJveHk6OkluY3JlYXNlUXVvdGEoc2Vzc2lvbklELCBvcmlnaW4sIGlkZW50aWZpZXIsIGN1cnJl
bnRRdW90YSwgY3VycmVudFVzYWdlLCByZXF1ZXN0ZWRJbmNyZWFzZSksIDApOworICAgICAgICB9
OworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxPcmlnaW5TdG9yYWdlTWFuYWdlcj4ocXVvdGEs
IFdURk1vdmUoaW5jcmVhc2VRdW90YUZ1bmN0aW9uKSwgV1RGTW92ZShvcmlnaW5EaXJlY3Rvcnkp
LCBXVEZNb3ZlKGxvY2FsU3RvcmFnZVBhdGgpLCBXVEZNb3ZlKGlkYlN0b3JhZ2VQYXRoKSwgV1RG
TW92ZShjYWNoZVN0b3JhZ2VQYXRoKSk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogfQogCkBA
IC0yODIsNiArMzA3LDE2IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjbGVhclN0b3Jh
Z2VGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjCiAgICAgfSk7CiB9CiAK
K3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkaWRJbmNyZWFzZVF1b3RhKGNvbnN0IFdlYkNv
cmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIg
aWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbmV3UXVvdGEpCit7CisgICAgQVNT
RVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgb3JpZ2luID0gY3Jvc3NUaHJlYWRDb3B5KG9y
aWdpbiksIGlkZW50aWZpZXIsIG5ld1F1b3RhXSgpIG11dGFibGUgeworICAgICAgICBpZiAoYXV0
byBtYW5hZ2VyID0gbV9sb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2Vycy5nZXQob3JpZ2luKSkKKyAg
ICAgICAgICAgIG1hbmFnZXItPnF1b3RhTWFuYWdlcigpLmRpZEluY3JlYXNlUXVvdGEoaWRlbnRp
ZmllciwgbmV3UXVvdGEpOworICAgIH0pOworfQorCiB2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdl
cjo6ZmlsZVN5c3RlbUdldERpcmVjdG9yeShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNv
bnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KEV4cGVjdGVkPFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBGaWxlU3lzdGVt
U3RvcmFnZUVycm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5M
b29wOjppc01haW4oKSk7CkBAIC00NTIsNiArNDg3LDkgQEAgSGFzaFNldDxXZWJDb3JlOjpDbGll
bnRPcmlnaW4+IE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Z2V0QWxsT3JpZ2lucygpCiAgICAgZm9y
IChhdXRvJiBvcmlnaW4gOiBMb2NhbFN0b3JhZ2VNYW5hZ2VyOjpvcmlnaW5zT2ZMb2NhbFN0b3Jh
Z2VEYXRhKG1fY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCkpCiAgICAgICAgIGFsbE9yaWdpbnMuYWRk
KFdlYkNvcmU6OkNsaWVudE9yaWdpbiB7IG9yaWdpbiwgb3JpZ2luIH0pOwogCisgICAgZm9yIChh
dXRvJiBvcmlnaW4gOiBJREJTdG9yYWdlTWFuYWdlcjo6b3JpZ2luc09mSURCU3RvcmFnZURhdGEo
bV9jdXN0b21JREJTdG9yYWdlUGF0aCkpCisgICAgICAgIGFsbE9yaWdpbnMuYWRkKG9yaWdpbik7
CisKICAgICByZXR1cm4gYWxsT3JpZ2luczsKIH0KIApAQCAtNTc5LDEyICs2MTcsMTcgQEAgdm9p
ZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Om1vdmVEYXRhKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYgc291cmNlLAogICAgICAgICBhdXRvIHRhcmdldE9yaWdpbiA9IFdlYkNvcmU6
OkNsaWVudE9yaWdpbiB7IHRhcmdldCwgdGFyZ2V0IH07CiAgICAgICAgIAogICAgICAgICAvLyBD
bGVhciBleGlzdGluZyBkYXRhIG9mIHRhcmdldCBvcmlnaW4uCi0gICAgICAgIE9wdGlvblNldDxX
ZWJzaXRlRGF0YVR5cGU+IHR5cGVzID0geyBXZWJzaXRlRGF0YVR5cGU6OkZpbGVTeXN0ZW0sIFdl
YnNpdGVEYXRhVHlwZTo6TG9jYWxTdG9yYWdlLCBXZWJzaXRlRGF0YVR5cGU6OlNlc3Npb25TdG9y
YWdlICB9OworICAgICAgICBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB0eXBlcyA9IHsKKyAg
ICAgICAgICAgIFdlYnNpdGVEYXRhVHlwZTo6RmlsZVN5c3RlbSwKKyAgICAgICAgICAgIFdlYnNp
dGVEYXRhVHlwZTo6TG9jYWxTdG9yYWdlLAorICAgICAgICAgICAgV2Vic2l0ZURhdGFUeXBlOjpT
ZXNzaW9uU3RvcmFnZSwKKyAgICAgICAgICAgIFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0
YWJhc2VzCisgICAgICAgIH07CiAgICAgICAgIGxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIodGFy
Z2V0T3JpZ2luKS5kZWxldGVEYXRhKHR5cGVzLCAtV2FsbFRpbWU6OmluZmluaXR5KCkpOwogICAg
ICAgICByZW1vdmVPcmlnaW5TdG9yYWdlTWFuYWdlcklmUG9zc2libGUodGFyZ2V0T3JpZ2luKTsK
IAogICAgICAgICAvLyBNb3ZlIGRhdGEgZnJvbSBzb3VyY2Ugb3JpZ2luIHRvIHRhcmdldCBvcmln
aW4uCi0gICAgICAgIGxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIoc291cmNlT3JpZ2luKS5tb3Zl
RGF0YShvcmlnaW5EaXJlY3RvcnlQYXRoKG1fcGF0aCwgdGFyZ2V0T3JpZ2luLCBtX3NhbHQpLCBM
b2NhbFN0b3JhZ2VNYW5hZ2VyOjpsb2NhbFN0b3JhZ2VGaWxlUGF0aChtX2N1c3RvbUxvY2FsU3Rv
cmFnZVBhdGgsIHRhcmdldE9yaWdpbikpOworICAgICAgICBsb2NhbE9yaWdpblN0b3JhZ2VNYW5h
Z2VyKHNvdXJjZU9yaWdpbikubW92ZURhdGEob3JpZ2luRGlyZWN0b3J5UGF0aChtX3BhdGgsIHRh
cmdldE9yaWdpbiwgbV9zYWx0KSwgTG9jYWxTdG9yYWdlTWFuYWdlcjo6bG9jYWxTdG9yYWdlRmls
ZVBhdGgobV9jdXN0b21Mb2NhbFN0b3JhZ2VQYXRoLCB0YXJnZXRPcmlnaW4pLCBJREJTdG9yYWdl
TWFuYWdlcjo6aWRiU3RvcmFnZU9yaWdpbkRpcmVjdG9yeShtX2N1c3RvbUlEQlN0b3JhZ2VQYXRo
LCB0YXJnZXRPcmlnaW4pKTsKICAgICAgICAgcmVtb3ZlT3JpZ2luU3RvcmFnZU1hbmFnZXJJZlBv
c3NpYmxlKHNvdXJjZU9yaWdpbik7CiAKICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNo
KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKQEAgLTU5OSw2ICs2NDIsOCBAQCB2b2lkIE5l
dHdvcmtTdG9yYWdlTWFuYWdlcjo6c3VzcGVuZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZQogICAgICAgICBmb3IgKGF1dG8mIG1hbmFnZXIgOiBtX2xvY2FsT3Jp
Z2luU3RvcmFnZU1hbmFnZXJzLnZhbHVlcygpKSB7CiAgICAgICAgICAgICBpZiAoYXV0byBsb2Nh
bFN0b3JhZ2VNYW5hZ2VyID0gbWFuYWdlci0+ZXhpc3RpbmdMb2NhbFN0b3JhZ2VNYW5hZ2VyKCkp
CiAgICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlTWFuYWdlci0+c3luY0xvY2FsU3RvcmFnZSgp
OworICAgICAgICAgICAgaWYgKGF1dG8gaWRiU3RvcmFnZU1hbmFnZXIgPSBtYW5hZ2VyLT5leGlz
dGluZ0lEQlN0b3JhZ2VNYW5hZ2VyKCkpCisgICAgICAgICAgICAgICAgaWRiU3RvcmFnZU1hbmFn
ZXItPnN0b3BEYXRhYmFzZUFjdGl2aXRpZXNGb3JTdXNwZW5kKCk7CiAgICAgICAgIH0KICAgICB9
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CkBAIC02MzYsNiArNjgxLDUyIEBAIHZv
aWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpzeW5jTG9jYWxTdG9yYWdlKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0CiAgICAgfSk7CiB9CiAKK3ZvaWQgTmV0d29ya1N0b3JhZ2VN
YW5hZ2VyOjpyZWdpc3RlclRlbXBvcmFyeUJsb2JGaWxlUGF0aHMoSVBDOjpDb25uZWN0aW9uJiBj
b25uZWN0aW9uLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZVBhdGhzKQoreworICAgIEFTU0VS
VChSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNvbm5lY3Rpb25JRCA9IGNvbm5lY3Rpb24udW5p
cXVlSUQoKSwgZmlsZVBhdGhzID0gY3Jvc3NUaHJlYWRDb3B5KGZpbGVQYXRocyldIHsKKyAgICAg
ICAgYXV0byYgdGVtcG9yYXJ5QmxvYlBhdGhzID0gbV90ZW1wb3JhcnlCbG9iUGF0aHNCeUNvbm5l
Y3Rpb24uZW5zdXJlKGNvbm5lY3Rpb25JRCwgW10geworICAgICAgICAgICAgcmV0dXJuIEhhc2hT
ZXQ8U3RyaW5nPiB7IH07CisgICAgICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgdGVt
cG9yYXJ5QmxvYlBhdGhzLmFkZChmaWxlUGF0aHMuYmVnaW4oKSwgZmlsZVBhdGhzLmVuZCgpKTsK
KyAgICB9KTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnJlcXVlc3RTcGFjZShj
b25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgdWludDY0X3Qgc2l6ZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBBU1NF
UlQoUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBvcmlnaW4gPSBjcm9zc1RocmVhZENvcHkob3Jp
Z2luKSwgc2l6ZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0oKSBtdXRhYmxlIHsKKyAgICAgICAgbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcihvcmlnaW4p
LnF1b3RhTWFuYWdlcigpLnJlcXVlc3RTcGFjZShzaXplLCBbY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byBkZWNpc2lvbikgbXV0YWJsZSB7CisgICAg
ICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlciksIGRlY2lzaW9uXSgpIG11dGFibGUgeworICAgICAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGRlY2lzaW9uID09IFF1b3RhTWFuYWdlcjo6RGVjaXNp
b246OkdyYW50KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKwor
dm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnJlc2V0UXVvdGFGb3JUZXN0aW5nKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlQoUnVu
TG9vcDo6aXNNYWluKCkpOworCisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICBmb3IgKGF1dG8mIG1hbmFnZXIgOiBt
X2xvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXJzLnZhbHVlcygpKQorICAgICAgICAgICAgbWFuYWdl
ci0+cXVvdGFNYW5hZ2VyKCkucmVzZXRRdW90YUZvclRlc3RpbmcoKTsKKyAgICAgICAgUnVuTG9v
cDo6bWFpbigpLmRpc3BhdGNoKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICB9KTsK
K30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnJlc2V0UXVvdGFVcGRhdGVkQmFzZWRP
blVzYWdlRm9yVGVzdGluZyhjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbikKK3sK
KyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2go
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBvcmlnaW4gPSBjcm9zc1RocmVh
ZENvcHkob3JpZ2luKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGF1dG8gbWFuYWdlciA9IG1f
bG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcnMuZ2V0KG9yaWdpbikpCisgICAgICAgICAgICBtYW5h
Z2VyLT5xdW90YU1hbmFnZXIoKS5yZXNldFF1b3RhVXBkYXRlZEJhc2VkT25Vc2FnZUZvclRlc3Rp
bmcoKTsKKyAgICB9KTsKK30KKwogdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RU
b1N0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgV2ViQ29yZTo6U3RvcmFn
ZVR5cGUgdHlwZSwgU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIFN0
b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyIG5hbWVzcGFjZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNv
cmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VB
cmVhSWRlbnRpZmllciwgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4sIHVpbnQ2NF90KT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKQEAgLTcy
Myw1ICs4MTQsMTk1IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjbGVhcihJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIFN0b3JhZ2VBcmVhSWRlbnRpCiAgICAgY29tcGxldGlvbkhh
bmRsZXIoKTsKIH0KIAordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Om9wZW5EYXRhYmFzZShJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRh
JiByZXF1ZXN0RGF0YSkKK3sKKyAgICBhdXRvJiBjb25uZWN0aW9uVG9DbGllbnQgPSBtX2lkYlN0
b3JhZ2VSZWdpc3RyeS0+ZW5zdXJlQ29ubmVjdGlvblRvQ2xpZW50KGNvbm5lY3Rpb24udW5pcXVl
SUQoKSwgcmVxdWVzdERhdGEucmVxdWVzdElkZW50aWZpZXIoKS5jb25uZWN0aW9uSWRlbnRpZmll
cigpKTsKKyAgICBsb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2VyKHJlcXVlc3REYXRhLmRhdGFiYXNl
SWRlbnRpZmllcigpLm9yaWdpbigpKS5pZGJTdG9yYWdlTWFuYWdlcigqbV9pZGJTdG9yYWdlUmVn
aXN0cnkpLm9wZW5EYXRhYmFzZShjb25uZWN0aW9uVG9DbGllbnQsIHJlcXVlc3REYXRhKTsKK30K
Kwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Om9wZW5EQlJlcXVlc3RDYW5jZWxsZWQoY29u
c3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhKQoreworICAgIGxvY2FsT3Jp
Z2luU3RvcmFnZU1hbmFnZXIocmVxdWVzdERhdGEuZGF0YWJhc2VJZGVudGlmaWVyKCkub3JpZ2lu
KCkpLmlkYlN0b3JhZ2VNYW5hZ2VyKCptX2lkYlN0b3JhZ2VSZWdpc3RyeSkub3BlbkRCUmVxdWVz
dENhbmNlbGxlZChyZXF1ZXN0RGF0YSk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2Vy
OjpkZWxldGVEYXRhYmFzZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNv
cmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkKK3sKKyAgICBhdXRvJiBjb25uZWN0aW9u
VG9DbGllbnQgPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+ZW5zdXJlQ29ubmVjdGlvblRvQ2xpZW50
KGNvbm5lY3Rpb24udW5pcXVlSUQoKSwgcmVxdWVzdERhdGEucmVxdWVzdElkZW50aWZpZXIoKS5j
b25uZWN0aW9uSWRlbnRpZmllcigpKTsKKyAgICBsb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2VyKHJl
cXVlc3REYXRhLmRhdGFiYXNlSWRlbnRpZmllcigpLm9yaWdpbigpKS5pZGJTdG9yYWdlTWFuYWdl
cigqbV9pZGJTdG9yYWdlUmVnaXN0cnkpLmRlbGV0ZURhdGFiYXNlKGNvbm5lY3Rpb25Ub0NsaWVu
dCwgcmVxdWVzdERhdGEpOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZXN0YWJs
aXNoVHJhbnNhY3Rpb24odWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29u
c3QgV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25JbmZvJiB0cmFuc2FjdGlvbkluZm8pCit7CisgICAg
aWYgKGF1dG8gY29ubmVjdGlvbiA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT5jb25uZWN0aW9uKGRh
dGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpKQorICAgICAgICBjb25uZWN0aW9uLT5lc3RhYmxp
c2hUcmFuc2FjdGlvbih0cmFuc2FjdGlvbkluZm8pOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdl
TWFuYWdlcjo6ZGF0YWJhc2VDb25uZWN0aW9uUGVuZGluZ0Nsb3NlKHVpbnQ2NF90IGRhdGFiYXNl
Q29ubmVjdGlvbklkZW50aWZpZXIpCit7CisgICAgaWYgKGF1dG8gY29ubmVjdGlvbiA9IG1faWRi
U3RvcmFnZVJlZ2lzdHJ5LT5jb25uZWN0aW9uKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIp
KQorICAgICAgICBjb25uZWN0aW9uLT5jb25uZWN0aW9uUGVuZGluZ0Nsb3NlRnJvbUNsaWVudCgp
OworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGF0YWJhc2VDb25uZWN0aW9uQ2xv
c2VkKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpCit7CisgICAgaWYgKGF1
dG8gY29ubmVjdGlvbiA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT5jb25uZWN0aW9uKGRhdGFiYXNl
Q29ubmVjdGlvbklkZW50aWZpZXIpKQorICAgICAgICBjb25uZWN0aW9uLT5jb25uZWN0aW9uQ2xv
c2VkRnJvbUNsaWVudCgpOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6YWJvcnRP
cGVuQW5kVXBncmFkZU5lZWRlZCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVy
LCBjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRp
ZmllcikKK3sKKyAgICBpZiAoYXV0byB0cmFuc2FjdGlvbiA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5
LT50cmFuc2FjdGlvbih0cmFuc2FjdGlvbklkZW50aWZpZXIpKQorICAgICAgICB0cmFuc2FjdGlv
bi0+YWJvcnRXaXRob3V0Q2FsbGJhY2soKTsKKworICAgIGlmIChhdXRvIGNvbm5lY3Rpb24gPSBt
X2lkYlN0b3JhZ2VSZWdpc3RyeS0+Y29ubmVjdGlvbihkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlm
aWVyKSkKKyAgICAgICAgY29ubmVjdGlvbi0+Y29ubmVjdGlvbkNsb3NlZEZyb21DbGllbnQoKTsK
K30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmRpZEZpcmVWZXJzaW9uQ2hhbmdlRXZl
bnQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6
SURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6
SW5kZXhlZERCOjpDb25uZWN0aW9uQ2xvc2VkT25CZWhhbGZPZlNlcnZlciBjb25uZWN0aW9uQ2xv
c2VkKQoreworICAgIGlmIChhdXRvIGNvbm5lY3Rpb24gPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+
Y29ubmVjdGlvbihkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKSkKKyAgICAgICAgY29ubmVj
dGlvbi0+ZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudChyZXF1ZXN0SWRlbnRpZmllciwgY29ubmVj
dGlvbkNsb3NlZCk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjphYm9ydFRyYW5z
YWN0aW9uKGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25J
ZGVudGlmaWVyKQoreworICAgIGlmIChhdXRvIHRyYW5zYWN0aW9uID0gbV9pZGJTdG9yYWdlUmVn
aXN0cnktPnRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllcikpCisgICAgICAgIHRyYW5z
YWN0aW9uLT5hYm9ydCgpOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y29tbWl0
VHJhbnNhY3Rpb24oY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2Fj
dGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IHBlbmRpbmdSZXF1ZXN0Q291bnQpCit7CisgICAgaWYg
KGF1dG8gdHJhbnNhY3Rpb24gPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+dHJhbnNhY3Rpb24odHJh
bnNhY3Rpb25JZGVudGlmaWVyKSkKKyAgICAgICAgdHJhbnNhY3Rpb24tPmNvbW1pdChwZW5kaW5n
UmVxdWVzdENvdW50KTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmRpZEZpbmlz
aEhhbmRsaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVj
dGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgdHJh
bnNhY3Rpb25JZGVudGlmaWVyKQoreworICAgIGlmIChhdXRvIGNvbm5lY3Rpb24gPSBtX2lkYlN0
b3JhZ2VSZWdpc3RyeS0+Y29ubmVjdGlvbihkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKSkK
KyAgICAgICAgY29ubmVjdGlvbi0+ZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlKHRyYW5z
YWN0aW9uSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjcmVh
dGVPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEs
IGNvbnN0IFdlYkNvcmU6OklEQk9iamVjdFN0b3JlSW5mbyYgb2JqZWN0U3RvcmVJbmZvKQorewor
ICAgIGlmIChhdXRvIHRyYW5zYWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPnRyYW5zYWN0
aW9uKHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpKSkgeworICAgICAgICBBU1NF
UlQodHJhbnNhY3Rpb24tPmlzVmVyc2lvbkNoYW5nZSgpKTsKKyAgICAgICAgdHJhbnNhY3Rpb24t
PmNyZWF0ZU9iamVjdFN0b3JlKHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUluZm8pOworICAgIH0K
K30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0
IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgU3RyaW5nJiBvYmpl
Y3RTdG9yZU5hbWUpCit7CisgICAgaWYgKGF1dG8gdHJhbnNhY3Rpb24gPSBtX2lkYlN0b3JhZ2VS
ZWdpc3RyeS0+dHJhbnNhY3Rpb24ocmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCkp
KSB7CisgICAgICAgIEFTU0VSVCh0cmFuc2FjdGlvbi0+aXNWZXJzaW9uQ2hhbmdlKCkpOworICAg
ICAgICB0cmFuc2FjdGlvbi0+ZGVsZXRlT2JqZWN0U3RvcmUocmVxdWVzdERhdGEsIG9iamVjdFN0
b3JlTmFtZSk7CisgICAgfQorfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6cmVuYW1l
T2JqZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCB1
aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSkKK3sK
KyAgICBpZiAoYXV0byB0cmFuc2FjdGlvbiA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT50cmFuc2Fj
dGlvbihyZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSkpIHsKKyAgICAgICAgQVNT
RVJUKHRyYW5zYWN0aW9uLT5pc1ZlcnNpb25DaGFuZ2UoKSk7CisgICAgICAgIHRyYW5zYWN0aW9u
LT5yZW5hbWVPYmplY3RTdG9yZShyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBu
ZXdOYW1lKTsKKyAgICB9Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjbGVhck9i
amVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgdWlu
dDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyKQoreworICAgIGlmIChhdXRvIHRyYW5zYWN0aW9u
ID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPnRyYW5zYWN0aW9uKHJlcXVlc3REYXRhLnRyYW5zYWN0
aW9uSWRlbnRpZmllcigpKSkKKyAgICAgICAgdHJhbnNhY3Rpb24tPmNsZWFyT2JqZWN0U3RvcmUo
cmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgTmV0d29ya1N0
b3JhZ2VNYW5hZ2VyOjpjcmVhdGVJbmRleChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYg
cmVxdWVzdERhdGEsIGNvbnN0IFdlYkNvcmU6OklEQkluZGV4SW5mbyYgaW5kZXhJbmZvKQorewor
ICAgIGlmIChhdXRvIHRyYW5zYWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPnRyYW5zYWN0
aW9uKHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpKSkKKyAgICAgICAgdHJhbnNh
Y3Rpb24tPmNyZWF0ZUluZGV4KHJlcXVlc3REYXRhLCBpbmRleEluZm8pOworfQorCit2b2lkIE5l
dHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlSW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVz
dERhdGEmIHJlcXVlc3REYXRhLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgaW5kZXhOYW1lKQoreworICAgIGlmIChhdXRvIHRyYW5zYWN0aW9uID0gbV9pZGJT
dG9yYWdlUmVnaXN0cnktPnRyYW5zYWN0aW9uKHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRp
ZmllcigpKSkKKyAgICAgICAgdHJhbnNhY3Rpb24tPmRlbGV0ZUluZGV4KHJlcXVlc3REYXRhLCBv
YmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4TmFtZSk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyOjpyZW5hbWVJbmRleChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVx
dWVzdERhdGEsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgdWludDY0X3QgaW5kZXhJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUpCit7CisgICAgaWYgKGF1dG8gdHJhbnNh
Y3Rpb24gPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+dHJhbnNhY3Rpb24ocmVxdWVzdERhdGEudHJh
bnNhY3Rpb25JZGVudGlmaWVyKCkpKQorICAgICAgICB0cmFuc2FjdGlvbi0+cmVuYW1lSW5kZXgo
cmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhJZGVudGlmaWVyLCBuZXdO
YW1lKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnB1dE9yQWRkKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVl
c3REYXRhLCBjb25zdCBXZWJDb3JlOjpJREJLZXlEYXRhJiBrZXlEYXRhLCBjb25zdCBXZWJDb3Jl
OjpJREJWYWx1ZSYgdmFsdWUsIFdlYkNvcmU6OkluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3Jp
dGVNb2RlIG92ZXJ3cml0ZU1vZGUpCit7CisgICAgaWYgKHZhbHVlLmJsb2JVUkxzKCkuc2l6ZSgp
ICE9IHZhbHVlLmJsb2JGaWxlUGF0aHMoKS5zaXplKCkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0df
RkFVTFQoSW5kZXhlZERCLCAiTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpwdXRPckFkZDogTnVtYmVy
IG9mIGJsb2IgVVJMcyBkb2Vzbid0IG1hdGNoIHRoZSBudW1iZXIgb2YgYmxvYiBmaWxlIHBhdGhz
LiIpOworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIC8vIFZhbGlkYXRlIHRlbXBvcmFyeSBibG9iIHBhdGhzIGluIHx2YWx1ZXwgdG8g
bWFrZSBzdXJlIHRoZXkgYmVsb25nIHRvIHRoZSBzb3VyY2UgcHJvY2Vzcy4KKyAgICBpZiAoIXZh
bHVlLmJsb2JGaWxlUGF0aHMoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgYXV0byBpdCA9IG1fdGVt
cG9yYXJ5QmxvYlBhdGhzQnlDb25uZWN0aW9uLmZpbmQoY29ubmVjdGlvbi51bmlxdWVJRCgpKTsK
KyAgICAgICAgaWYgKGl0ID09IG1fdGVtcG9yYXJ5QmxvYlBhdGhzQnlDb25uZWN0aW9uLmVuZCgp
KSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19GQVVMVChJbmRleGVkREIsICJOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6OnB1dE9yQWRkOiBJREJWYWx1ZSBjb250YWlucyBibG9iIHBhdGhzIGJ1dCBu
b25lIGFyZSBhbGxvd2VkIGZvciB0aGlzIHByb2Nlc3MiKTsKKyAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAg
YXV0byYgdGVtcG9yYXJ5QmxvYlBhdGhzRm9yQ29ubmVjdGlvbiA9IGl0LT52YWx1ZTsKKyAgICAg
ICAgZm9yIChhdXRvJiBibG9iRmlsZVBhdGggOiB2YWx1ZS5ibG9iRmlsZVBhdGhzKCkpIHsKKyAg
ICAgICAgICAgIGlmICghdGVtcG9yYXJ5QmxvYlBhdGhzRm9yQ29ubmVjdGlvbi5yZW1vdmUoYmxv
YkZpbGVQYXRoKSkgeworICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0ZBVUxUKEluZGV4ZWRE
QiwgIk5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6cHV0T3JBZGQ6IEJsb2IgcGF0aCB3YXMgbm90IGNy
ZWF0ZWQgZm9yIHRoaXMgV2ViUHJvY2VzcyIpOworICAgICAgICAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIH0KKworICAgIGlmIChhdXRvIHRyYW5zYWN0aW9uID0gbV9pZGJTdG9yYWdlUmVn
aXN0cnktPnRyYW5zYWN0aW9uKHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpKSkK
KyAgICAgICAgdHJhbnNhY3Rpb24tPnB1dE9yQWRkKHJlcXVlc3REYXRhLCBrZXlEYXRhLCB2YWx1
ZSwgb3ZlcndyaXRlTW9kZSk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpnZXRS
ZWNvcmQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBX
ZWJDb3JlOjpJREJHZXRSZWNvcmREYXRhJiBnZXRSZWNvcmREYXRhKQoreworICAgIGlmIChhdXRv
IHRyYW5zYWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPnRyYW5zYWN0aW9uKHJlcXVlc3RE
YXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpKSkKKyAgICAgICAgdHJhbnNhY3Rpb24tPmdldFJl
Y29yZChyZXF1ZXN0RGF0YSwgZ2V0UmVjb3JkRGF0YSk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyOjpnZXRBbGxSZWNvcmRzKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiBy
ZXF1ZXN0RGF0YSwgY29uc3QgV2ViQ29yZTo6SURCR2V0QWxsUmVjb3Jkc0RhdGEmIGdldEFsbFJl
Y29yZHNEYXRhKQoreworICAgIGlmIChhdXRvIHRyYW5zYWN0aW9uID0gbV9pZGJTdG9yYWdlUmVn
aXN0cnktPnRyYW5zYWN0aW9uKHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpKSkK
KyAgICAgICAgdHJhbnNhY3Rpb24tPmdldEFsbFJlY29yZHMocmVxdWVzdERhdGEsIGdldEFsbFJl
Y29yZHNEYXRhKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmdldENvdW50KGNv
bnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgV2ViQ29yZTo6
SURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5nZURhdGEpCit7CisgICAgaWYgKGF1dG8gdHJhbnNhY3Rp
b24gPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+dHJhbnNhY3Rpb24ocmVxdWVzdERhdGEudHJhbnNh
Y3Rpb25JZGVudGlmaWVyKCkpKQorICAgICAgICB0cmFuc2FjdGlvbi0+Z2V0Q291bnQocmVxdWVz
dERhdGEsIGtleVJhbmdlRGF0YSk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpk
ZWxldGVSZWNvcmQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBj
b25zdCBXZWJDb3JlOjpJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlRGF0YSkKK3sKKyAgICBpZiAo
YXV0byB0cmFuc2FjdGlvbiA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT50cmFuc2FjdGlvbihyZXF1
ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSkpCisgICAgICAgIHRyYW5zYWN0aW9uLT5k
ZWxldGVSZWNvcmQocmVxdWVzdERhdGEsIGtleVJhbmdlRGF0YSk7Cit9CisKK3ZvaWQgTmV0d29y
a1N0b3JhZ2VNYW5hZ2VyOjpvcGVuQ3Vyc29yKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRh
JiByZXF1ZXN0RGF0YSwgY29uc3QgV2ViQ29yZTo6SURCQ3Vyc29ySW5mbyYgY3Vyc29ySW5mbykK
K3sKKyAgICBpZiAoYXV0byB0cmFuc2FjdGlvbiA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT50cmFu
c2FjdGlvbihyZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSkpCisgICAgICAgIHRy
YW5zYWN0aW9uLT5vcGVuQ3Vyc29yKHJlcXVlc3REYXRhLCBjdXJzb3JJbmZvKTsKK30KKwordm9p
ZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Oml0ZXJhdGVDdXJzb3IoY29uc3QgV2ViQ29yZTo6SURC
UmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBXZWJDb3JlOjpJREJJdGVyYXRlQ3Vyc29y
RGF0YSYgY3Vyc29yRGF0YSkKK3sKKyAgICBpZiAoYXV0byB0cmFuc2FjdGlvbiA9IG1faWRiU3Rv
cmFnZVJlZ2lzdHJ5LT50cmFuc2FjdGlvbihyZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZp
ZXIoKSkpCisgICAgICAgIHRyYW5zYWN0aW9uLT5pdGVyYXRlQ3Vyc29yKHJlcXVlc3REYXRhLCBj
dXJzb3JEYXRhKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmdldEFsbERhdGFi
YXNlTmFtZXNBbmRWZXJzaW9ucyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFdl
YkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFdl
YkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luKQoreworICAgIGF1dG8mIGNvbm5lY3Rpb25Ub0Ns
aWVudCA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT5lbnN1cmVDb25uZWN0aW9uVG9DbGllbnQoY29u
bmVjdGlvbi51bmlxdWVJRCgpLCByZXF1ZXN0SWRlbnRpZmllci5jb25uZWN0aW9uSWRlbnRpZmll
cigpKTsKKyAgICBhdXRvIHJlc3VsdCA9IGxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIob3JpZ2lu
KS5pZGJTdG9yYWdlTWFuYWdlcigqbV9pZGJTdG9yYWdlUmVnaXN0cnkpLmdldEFsbERhdGFiYXNl
TmFtZXNBbmRWZXJzaW9ucygpOworICAgIGNvbm5lY3Rpb25Ub0NsaWVudC5kaWRHZXRBbGxEYXRh
YmFzZU5hbWVzQW5kVmVyc2lvbnMocmVxdWVzdElkZW50aWZpZXIsIFdURk1vdmUocmVzdWx0KSk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmgKaW5k
ZXggMTVjMDM3MmU2NmE3ZjYyODQ5OTI3ZjFjMzdmMTZhNjk1ODdmNDUwMS4uOWMzZDJkNjQwNmZl
ZTliMmI0ZTZjYTI2ZjdiNjVmZTBjNzhiODNiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuaApA
QCAtMzYsNiArMzYsOCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQ2xpZW50T3JpZ2luLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9JREJSZXNvdXJjZUlkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0luZGV4
ZWREQi5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgogCkBAIC00NCwxOCArNDYsMzEgQEAgY2xhc3MgU2hhcmVkRmlsZUhhbmRsZTsKIH0KIAog
bmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgSURCQ3Vyc29ySW5mbzsKK2NsYXNzIElEQktleURh
dGE7CitjbGFzcyBJREJJbmRleEluZm87CitjbGFzcyBJREJPYmplY3RTdG9yZUluZm87CitjbGFz
cyBJREJSZXF1ZXN0RGF0YTsKK2NsYXNzIElEQlRyYW5zYWN0aW9uSW5mbzsKK2NsYXNzIElEQlZh
bHVlOwogc3RydWN0IENsaWVudE9yaWdpbjsKK3N0cnVjdCBJREJHZXRBbGxSZWNvcmRzRGF0YTsK
K3N0cnVjdCBJREJHZXRSZWNvcmREYXRhOworc3RydWN0IElEQkdldEFsbFJlY29yZHNEYXRhOwor
c3RydWN0IElEQkl0ZXJhdGVDdXJzb3JEYXRhOworc3RydWN0IElEQktleVJhbmdlRGF0YTsKIGVu
dW0gY2xhc3MgU3RvcmFnZVR5cGUgOiB1aW50OF90OwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAogY2xhc3MgRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeTsKK2NsYXNzIElEQlN0b3Jh
Z2VSZWdpc3RyeTsKIGNsYXNzIFN0b3JhZ2VBcmVhUmVnaXN0cnk7CiAKIGNsYXNzIE5ldHdvcmtT
dG9yYWdlTWFuYWdlciBmaW5hbCA6IHB1YmxpYyBJUEM6OkNvbm5lY3Rpb246OldvcmtRdWV1ZU1l
c3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxOZXR3b3JrU3RvcmFnZU1h
bmFnZXI+IGNyZWF0ZShQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBT
dHJpbmcmIGN1c3RvbUxvY2FsU3RvcmFnZVBhdGgpOworICAgIHN0YXRpYyBSZWY8TmV0d29ya1N0
b3JhZ2VNYW5hZ2VyPiBjcmVhdGUoUEFMOjpTZXNzaW9uSUQsIElQQzo6Q29ubmVjdGlvbjo6VW5p
cXVlSUQsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21Mb2NhbFN0b3Jh
Z2VQYXRoLCBjb25zdCBTdHJpbmcmIGN1c3RvbUlEQlN0b3JhZ2VQYXRoLCBjb25zdCBTdHJpbmcm
IGN1c3RvbUNhY2hlU3RvcmFnZVBhdGgsIHVpbnQ2NF90IGRlZmF1bHRPcmlnaW5RdW90YSwgdWlu
dDY0X3QgZGVmYXVsdFRoaXJkUGFydHlPcmlnaW5RdW90YSk7CiAgICAgc3RhdGljIGJvb2wgY2Fu
SGFuZGxlVHlwZXMoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4pOwogCiAgICAgdm9pZCBzdGFy
dFJlY2VpdmluZ01lc3NhZ2VGcm9tQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24mKTsKQEAgLTY0
LDYgKzc5LDcgQEAgcHVibGljOgogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0
IHsgcmV0dXJuIG1fc2Vzc2lvbklEOyB9CiAgICAgdm9pZCBjbG9zZSgpOwogICAgIHZvaWQgY2xl
YXJTdG9yYWdlRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZv
aWQgZGlkSW5jcmVhc2VRdW90YShjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBRdW90YUlu
Y3JlYXNlUmVxdWVzdElkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IG5ld1F1b3Rh
KTsKICAgICB2b2lkIGZldGNoRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2Vic2l0ZURhdGE6OkVudHJ5PiYmKT4mJik7CiAgICAg
dm9pZCBkZWxldGVEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBjb25zdCBWZWN0b3I8
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CiAgICAgdm9pZCBkZWxldGVEYXRhTW9kaWZpZWRTaW5jZShPcHRpb25TZXQ8V2Vic2l0ZURh
dGFUeXBlPiwgV2FsbFRpbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CkBAIC03Mywx
NCArODksMTggQEAgcHVibGljOgogICAgIHZvaWQgcmVzdW1lKCk7CiAgICAgdm9pZCBoYW5kbGVM
b3dNZW1vcnlXYXJuaW5nKCk7CiAgICAgdm9pZCBzeW5jTG9jYWxTdG9yYWdlKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCByZWdpc3RlclRlbXBvcmFyeUJsb2JGaWxlUGF0
aHMoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKKyAgICB2b2lkIHJl
cXVlc3RTcGFjZShjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCB1aW50NjRfdCBzaXplLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIHJlc2V0UXVvdGFGb3JU
ZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCByZXNldFF1b3Rh
VXBkYXRlZEJhc2VkT25Vc2FnZUZvclRlc3RpbmcoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2lu
Jik7CiAKIHByaXZhdGU6CiAgICAgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyKFBBTDo6U2Vzc2lvbklE
LCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY3VzdG9tTG9jYWxTdG9yYWdlUGF0
aCk7CisgICAgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyKFBBTDo6U2Vzc2lvbklELCBJUEM6OkNvbm5l
Y3Rpb246OlVuaXF1ZUlELCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY3VzdG9t
TG9jYWxTdG9yYWdlUGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21JREJTdG9yYWdlUGF0aCwgY29u
c3QgU3RyaW5nJiBjdXN0b21DYWNoZVN0b3JhZ2VQYXRoLCB1aW50NjRfdCBkZWZhdWx0T3JpZ2lu
UXVvdGEsIHVpbnQ2NF90IGRlZmF1bHRUaGlyZFBhcnR5T3JpZ2luUXVvdGEpOwogICAgIH5OZXR3
b3JrU3RvcmFnZU1hbmFnZXIoKTsKICAgICBPcmlnaW5TdG9yYWdlTWFuYWdlciYgbG9jYWxPcmln
aW5TdG9yYWdlTWFuYWdlcihjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKICAgICBib29s
IHJlbW92ZU9yaWdpblN0b3JhZ2VNYW5hZ2VySWZQb3NzaWJsZShjb25zdCBXZWJDb3JlOjpDbGll
bnRPcmlnaW4mKTsKICAgICB2b2lkIGRlbGV0ZU9yaWdpbkRpcmVjdG9yeUlmUG9zc2libGUoY29u
c3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJik7Ci0gICAgRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVS
ZWdpc3RyeSYgZmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeSgpOwogCiAgICAgdm9pZCBm
b3JFYWNoT3JpZ2luRGlyZWN0b3J5KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+
Jik7CiAgICAgSGFzaFNldDxXZWJDb3JlOjpDbGllbnRPcmlnaW4+IGdldEFsbE9yaWdpbnMoKTsK
QEAgLTExOCw2ICsxMzgsMzQgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlbW92ZUl0ZW0oSVBDOjpD
b25uZWN0aW9uJiwgU3RvcmFnZUFyZWFJZGVudGlmaWVyLCBTdG9yYWdlQXJlYUltcGxJZGVudGlm
aWVyLCBTdHJpbmcmJiBrZXksIFN0cmluZyYmIHVybFN0cmluZywgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKICAgICB2b2lkIGNsZWFyKElQQzo6Q29ubmVjdGlvbiYsIFN0b3JhZ2VBcmVh
SWRlbnRpZmllciwgU3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllciwgU3RyaW5nJiYgdXJsU3RyaW5n
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCisgICAgLy8gTWVzc2FnZSBoYW5kbGVy
cyBmb3IgSW5kZXhlZERCLgorICAgIHZvaWQgb3BlbkRhdGFiYXNlKElQQzo6Q29ubmVjdGlvbiYs
IGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJik7CisgICAgdm9pZCBvcGVuREJSZXF1ZXN0
Q2FuY2VsbGVkKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJik7CisgICAgdm9pZCBkZWxl
dGVEYXRhYmFzZShJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0
YSYpOworICAgIHZvaWQgZXN0YWJsaXNoVHJhbnNhY3Rpb24odWludDY0X3QgZGF0YWJhc2VDb25u
ZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25JbmZvJik7Cisg
ICAgdm9pZCBkYXRhYmFzZUNvbm5lY3Rpb25QZW5kaW5nQ2xvc2UodWludDY0X3QgZGF0YWJhc2VD
b25uZWN0aW9uSWRlbnRpZmllcik7CisgICAgdm9pZCBkYXRhYmFzZUNvbm5lY3Rpb25DbG9zZWQo
dWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcik7CisgICAgdm9pZCBhYm9ydE9w
ZW5BbmRVcGdyYWRlTmVlZGVkKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIs
IGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlm
aWVyKTsKKyAgICB2b2lkIGRpZEZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQodWludDY0X3QgZGF0YWJh
c2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlm
aWVyJiByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SW5kZXhlZERCOjpDb25uZWN0
aW9uQ2xvc2VkT25CZWhhbGZPZlNlcnZlcik7CisgICAgdm9pZCBhYm9ydFRyYW5zYWN0aW9uKGNv
bnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYpOworICAgIHZvaWQgY29tbWl0VHJh
bnNhY3Rpb24oY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiwgdWludDY0X3Qg
cGVuZGluZ1JlcXVlc3RDb3VudCk7CisgICAgdm9pZCBkaWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25D
aGFuZ2VUcmFuc2FjdGlvbih1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBj
b25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImKTsKKyAgICB2b2lkIGNyZWF0ZU9i
amVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiwgY29uc3QgV2ViQ29yZTo6
SURCT2JqZWN0U3RvcmVJbmZvJik7CisgICAgdm9pZCBkZWxldGVPYmplY3RTdG9yZShjb25zdCBX
ZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lKTsK
KyAgICB2b2lkIHJlbmFtZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRh
JiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUp
OworICAgIHZvaWQgY2xlYXJPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0
YSYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllcik7CisgICAgdm9pZCBjcmVhdGVJbmRl
eChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IFdlYkNvcmU6OklEQkluZGV4
SW5mbyYpOworICAgIHZvaWQgZGVsZXRlSW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERh
dGEmLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaW5kZXhO
YW1lKTsKKyAgICB2b2lkIHJlbmFtZUluZGV4KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRh
JiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRleElkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSk7CisgICAgdm9pZCBwdXRPckFkZChJUEM6OkNvbm5l
Y3Rpb24mLCBjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IFdlYkNvcmU6OklE
QktleURhdGEmLCBjb25zdCBXZWJDb3JlOjpJREJWYWx1ZSYsIFdlYkNvcmU6OkluZGV4ZWREQjo6
T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlKTsKKyAgICB2b2lkIGdldFJlY29yZChjb25zdCBXZWJD
b3JlOjpJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IFdlYkNvcmU6OklEQkdldFJlY29yZERhdGEmKTsK
KyAgICB2b2lkIGdldEFsbFJlY29yZHMoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmLCBj
b25zdCBXZWJDb3JlOjpJREJHZXRBbGxSZWNvcmRzRGF0YSYpOworICAgIHZvaWQgZ2V0Q291bnQo
Y29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmLCBjb25zdCBXZWJDb3JlOjpJREJLZXlSYW5n
ZURhdGEmKTsKKyAgICB2b2lkIGRlbGV0ZVJlY29yZChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0
RGF0YSYsIGNvbnN0IFdlYkNvcmU6OklEQktleVJhbmdlRGF0YSYpOworICAgIHZvaWQgb3BlbkN1
cnNvcihjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IFdlYkNvcmU6OklEQkN1
cnNvckluZm8mKTsKKyAgICB2b2lkIGl0ZXJhdGVDdXJzb3IoY29uc3QgV2ViQ29yZTo6SURCUmVx
dWVzdERhdGEmLCBjb25zdCBXZWJDb3JlOjpJREJJdGVyYXRlQ3Vyc29yRGF0YSYpOworICAgIHZv
aWQgZ2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0
IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9y
aWdpbiYpOworCiAgICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAgICAgUmVmPFN1c3Bl
bmRhYmxlV29ya1F1ZXVlPiBtX3F1ZXVlOwogICAgIFN0cmluZyBtX3BhdGg7CkBAIC0xMjcsNyAr
MTc1LDE0IEBAIHByaXZhdGU6CiAgICAgV2Vha0hhc2hTZXQ8SVBDOjpDb25uZWN0aW9uPiBtX2Nv
bm5lY3Rpb25zOyAvLyBNYWluIHRocmVhZCBvbmx5LgogICAgIHN0ZDo6dW5pcXVlX3B0cjxGaWxl
U3lzdGVtU3RvcmFnZUhhbmRsZVJlZ2lzdHJ5PiBtX2ZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVn
aXN0cnk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFN0b3JhZ2VBcmVhUmVnaXN0cnk+IG1fc3RvcmFn
ZUFyZWFSZWdpc3RyeTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SURCU3RvcmFnZVJlZ2lzdHJ5PiBt
X2lkYlN0b3JhZ2VSZWdpc3RyeTsKICAgICBTdHJpbmcgbV9jdXN0b21Mb2NhbFN0b3JhZ2VQYXRo
OworICAgIFN0cmluZyBtX2N1c3RvbUlEQlN0b3JhZ2VQYXRoOworICAgIFN0cmluZyBtX2N1c3Rv
bUNhY2hlU3RvcmFnZVBhdGg7CisgICAgdWludDY0X3QgbV9kZWZhdWx0T3JpZ2luUXVvdGE7Cisg
ICAgdWludDY0X3QgbV9kZWZhdWx0VGhpcmRQYXJ0eU9yaWdpblF1b3RhOworICAgIElQQzo6Q29u
bmVjdGlvbjo6VW5pcXVlSUQgbV9wYXJlbnRDb25uZWN0aW9uOworICAgIEhhc2hNYXA8SVBDOjpD
b25uZWN0aW9uOjpVbmlxdWVJRCwgSGFzaFNldDxTdHJpbmc+PiBtX3RlbXBvcmFyeUJsb2JQYXRo
c0J5Q29ubmVjdGlvbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdl
ci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3
b3JrU3RvcmFnZU1hbmFnZXIubWVzc2FnZXMuaW4KaW5kZXggNTBiOTY3MDFiMDcwZGQ1YzMyNzEx
ZGIxNDI3OTMwM2ZlNjUyMTFiNy4uNDczMDVlMGU5ODFjYTVjZmFlMDc3NDI2YmYyNGI3ODE1YTRk
NjRjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05l
dHdvcmtTdG9yYWdlTWFuYWdlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC00
Nyw0ICs0NywzMSBAQAogICAgIFNldEl0ZW0oV2ViS2l0OjpTdG9yYWdlQXJlYUlkZW50aWZpZXIg
aWRlbnRpZmllciwgV2ViS2l0OjpTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyIGltcGxJZGVudGlm
aWVyLCBTdHJpbmcga2V5LCBTdHJpbmcgdmFsdWUsIFN0cmluZyB1cmxTdHJpbmcpIC0+IChib29s
IHF1b3RhRXhjZXB0aW9uKSBBc3luYyBXYW50c0Nvbm5lY3Rpb24KICAgICBSZW1vdmVJdGVtKFdl
YktpdDo6U3RvcmFnZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYktpdDo6U3RvcmFnZUFy
ZWFJbXBsSWRlbnRpZmllciBpbXBsSWRlbnRpZmllciwgU3RyaW5nIGtleSwgU3RyaW5nIHVybFN0
cmluZykgLT4gKCkgQXN5bmMgV2FudHNDb25uZWN0aW9uCiAgICAgQ2xlYXIoV2ViS2l0OjpTdG9y
YWdlQXJlYUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViS2l0OjpTdG9yYWdlQXJlYUltcGxJZGVu
dGlmaWVyIGltcGxJZGVudGlmaWVyLCBTdHJpbmcgdXJsU3RyaW5nKSAtPiAoKSBBc3luYyBXYW50
c0Nvbm5lY3Rpb24KKworICAgIE9wZW5EYXRhYmFzZShXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSBy
ZXF1ZXN0RGF0YSkgV2FudHNDb25uZWN0aW9uCisgICAgT3BlbkRCUmVxdWVzdENhbmNlbGxlZChX
ZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YSkKKyAgICBEZWxldGVEYXRhYmFzZShX
ZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YSkgV2FudHNDb25uZWN0aW9uCisgICAg
RXN0YWJsaXNoVHJhbnNhY3Rpb24odWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmll
ciwgV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25JbmZvIGluZm8pCisgICAgRGF0YWJhc2VDb25uZWN0
aW9uUGVuZGluZ0Nsb3NlKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpCisg
ICAgRGF0YWJhc2VDb25uZWN0aW9uQ2xvc2VkKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklk
ZW50aWZpZXIpCisgICAgQWJvcnRPcGVuQW5kVXBncmFkZU5lZWRlZCh1aW50NjRfdCBkYXRhYmFz
ZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXIgdHJh
bnNhY3Rpb25JZGVudGlmaWVyKQorICAgIERpZEZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQodWludDY0
X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVu
dGlmaWVyIHJlcXVlc3RJZGVudGlmaWVyLCBXZWJDb3JlOjpJbmRleGVkREI6OkNvbm5lY3Rpb25D
bG9zZWRPbkJlaGFsZk9mU2VydmVyIGNvbm5lY3Rpb25DbG9zZWRPbkJlaGFsZk9mU2VydmVyKQor
ICAgIERpZEZpbmlzaEhhbmRsaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKHVpbnQ2NF90IGRh
dGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmll
ciB0cmFuc2FjdGlvbklkZW50aWZpZXIpCisgICAgQWJvcnRUcmFuc2FjdGlvbihXZWJDb3JlOjpJ
REJSZXNvdXJjZUlkZW50aWZpZXIgdHJhbnNhY3Rpb25JZGVudGlmaWVyKQorICAgIENvbW1pdFRy
YW5zYWN0aW9uKFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciB0cmFuc2FjdGlvbklkZW50
aWZpZXIsIHVpbnQ2NF90IHBlbmRpbmdSZXF1ZXN0Q291bnQpCisgICAgQ3JlYXRlT2JqZWN0U3Rv
cmUoV2ViQ29yZTo6SURCUmVxdWVzdERhdGEgcmVxdWVzdERhdGEsIFdlYkNvcmU6OklEQk9iamVj
dFN0b3JlSW5mbyBpbmZvKQorICAgIERlbGV0ZU9iamVjdFN0b3JlKFdlYkNvcmU6OklEQlJlcXVl
c3REYXRhIHJlcXVlc3REYXRhLCBTdHJpbmcgb2JqZWN0U3RvcmVOYW1lKQorICAgIFJlbmFtZU9i
amVjdFN0b3JlKFdlYkNvcmU6OklEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhLCB1aW50NjRfdCBv
YmplY3RTdG9yZUlkZW50aWZpZXIsIFN0cmluZyBuZXdOYW1lKQorICAgIENsZWFyT2JqZWN0U3Rv
cmUoV2ViQ29yZTo6SURCUmVxdWVzdERhdGEgcmVxdWVzdERhdGEsIHVpbnQ2NF90IG9iamVjdFN0
b3JlSWRlbnRpZmllcikKKyAgICBDcmVhdGVJbmRleChXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSBy
ZXF1ZXN0RGF0YSwgV2ViQ29yZTo6SURCSW5kZXhJbmZvIGluZm8pCisgICAgRGVsZXRlSW5kZXgo
V2ViQ29yZTo6SURCUmVxdWVzdERhdGEgcmVxdWVzdERhdGEsIHVpbnQ2NF90IG9iamVjdFN0b3Jl
SWRlbnRpZmllciwgU3RyaW5nIGluZGV4TmFtZSkKKyAgICBSZW5hbWVJbmRleChXZWJDb3JlOjpJ
REJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YSwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVy
LCB1aW50NjRfdCBpbmRleElkZW50aWZpZXIsIFN0cmluZyBuZXdOYW1lKQorICAgIFB1dE9yQWRk
KFdlYkNvcmU6OklEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhLCBXZWJDb3JlOjpJREJLZXlEYXRh
IGtleSwgV2ViQ29yZTo6SURCVmFsdWUgdmFsdWUsIFdlYkNvcmU6OkluZGV4ZWREQjo6T2JqZWN0
U3RvcmVPdmVyd3JpdGVNb2RlIG92ZXJ3cml0ZU1vZGUpIFdhbnRzQ29ubmVjdGlvbgorICAgIEdl
dFJlY29yZChXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YSwgc3RydWN0IFdlYkNv
cmU6OklEQkdldFJlY29yZERhdGEgZ2V0UmVjb3JkRGF0YSkKKyAgICBHZXRBbGxSZWNvcmRzKFdl
YkNvcmU6OklEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhLCBzdHJ1Y3QgV2ViQ29yZTo6SURCR2V0
QWxsUmVjb3Jkc0RhdGEgZ2V0QWxsUmVjb3Jkc0RhdGEpCisgICAgR2V0Q291bnQoV2ViQ29yZTo6
SURCUmVxdWVzdERhdGEgcmVxdWVzdERhdGEsIHN0cnVjdCBXZWJDb3JlOjpJREJLZXlSYW5nZURh
dGEgcmFuZ2UpCisgICAgRGVsZXRlUmVjb3JkKFdlYkNvcmU6OklEQlJlcXVlc3REYXRhIHJlcXVl
c3REYXRhLCBzdHJ1Y3QgV2ViQ29yZTo6SURCS2V5UmFuZ2VEYXRhIHJhbmdlKQorICAgIE9wZW5D
dXJzb3IoV2ViQ29yZTo6SURCUmVxdWVzdERhdGEgcmVxdWVzdERhdGEsIFdlYkNvcmU6OklEQkN1
cnNvckluZm8gaW5mbykKKyAgICBJdGVyYXRlQ3Vyc29yKFdlYkNvcmU6OklEQlJlcXVlc3REYXRh
IHJlcXVlc3REYXRhLCBzdHJ1Y3QgV2ViQ29yZTo6SURCSXRlcmF0ZUN1cnNvckRhdGEgZGF0YSkK
KyAgICBHZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMoV2ViQ29yZTo6SURCUmVzb3VyY2VJ
ZGVudGlmaWVyIHJlcXVlc3RJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2lu
IG9yaWdpbikgV2FudHNDb25uZWN0aW9uCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2VyLmNwcAppbmRl
eCA1ODgzMWVhYTI2NjBhZjg3NGRlNmI5NTg5MGU1N2E3ZmI2MTU1N2VjLi5iY2MwZjMzODc3OWY0
OTMxMDA3NGE3YzZjYmQyZmNhZTc1MzZkYzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5jcHAK
QEAgLTI2LDggKzI2LDExIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiT3JpZ2lu
U3RvcmFnZU1hbmFnZXIuaCIKIAorI2luY2x1ZGUgIkNhY2hlU3RvcmFnZUVuZ2luZS5oIgogI2lu
Y2x1ZGUgIkZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJGaWxl
U3lzdGVtU3RvcmFnZU1hbmFnZXIuaCIKKyNpbmNsdWRlICJJREJTdG9yYWdlTWFuYWdlci5oIgor
I2luY2x1ZGUgIklEQlN0b3JhZ2VSZWdpc3RyeS5oIgogI2luY2x1ZGUgIkxvY2FsU3RvcmFnZU1h
bmFnZXIuaCIKICNpbmNsdWRlICJNZW1vcnlTdG9yYWdlQXJlYS5oIgogI2luY2x1ZGUgIlNlc3Np
b25TdG9yYWdlTWFuYWdlci5oIgpAQCAtNDQsMTAgKzQ3LDExIEBAIGVudW0gY2xhc3MgT3JpZ2lu
U3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VCdWNrZXRNb2RlIDogYm9vbCB7IEJlc3RFZmZvcnQsIFBl
cnNpc3RlCiBjbGFzcyBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldCB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgU3RvcmFnZUJ1Y2tldChjb25z
dCBTdHJpbmcmIHJvb3RQYXRoLCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgbG9jYWxTdG9yYWdlUGF0aCkKKyAgICBTdG9yYWdlQnVja2V0KGNvbnN0IFN0cmluZyYgcm9v
dFBhdGgsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBsb2NhbFN0b3Jh
Z2VQYXRoLCBjb25zdCBTdHJpbmcmIGlkYlN0b3JhZ2VQYXRoKQogICAgICAgICA6IG1fcm9vdFBh
dGgocm9vdFBhdGgpCiAgICAgICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiAgICAgICAg
ICwgbV9sb2NhbFN0b3JhZ2VQYXRoKGxvY2FsU3RvcmFnZVBhdGgpCisgICAgICAgICwgbV9pZGJT
dG9yYWdlUGF0aChpZGJTdG9yYWdlUGF0aCkKICAgICB7CiAgICAgfQogCkBAIC03MCw2ICs3NCw3
IEBAIHB1YmxpYzoKICAgICAgICAgRmlsZVN5c3RlbSwKICAgICAgICAgTG9jYWxTdG9yYWdlLAog
ICAgICAgICBTZXNzaW9uU3RvcmFnZSwKKyAgICAgICAgSW5kZXhlZERCLAogICAgIH07CiAKICAg
ICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJzaXRlRGF0YVR5cGU+IHRvV2Vic2l0ZURhdGFUeXBl
KGNvbnN0IFN0cmluZyYgc3RvcmFnZUlkZW50aWZpZXIpCkBAIC04MCw2ICs4NSw4IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIHJldHVybiBXZWJzaXRlRGF0YVR5cGU6OkxvY2FsU3RvcmFnZTsKICAg
ICAgICAgaWYgKHN0b3JhZ2VJZGVudGlmaWVyID09ICJTZXNzaW9uU3RvcmFnZSJfcykKICAgICAg
ICAgICAgIHJldHVybiBXZWJzaXRlRGF0YVR5cGU6OlNlc3Npb25TdG9yYWdlOworICAgICAgICBp
ZiAoc3RvcmFnZUlkZW50aWZpZXIgPT0gIkluZGV4ZWREQiJfcykKKyAgICAgICAgICAgIHJldHVy
biBXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlczsKIAogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIH0KQEAgLTkzLDYgKzEwMCw4IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgIHJldHVybiAiTG9jYWxTdG9yYWdlIl9zOwogICAgICAgICBjYXNlIFN0b3JhZ2VUeXBlOjpT
ZXNzaW9uU3RvcmFnZToKICAgICAgICAgICAgIHJldHVybiAiU2Vzc2lvblN0b3JhZ2UiX3M7Cisg
ICAgICAgIGNhc2UgU3RvcmFnZVR5cGU6OkluZGV4ZWREQjoKKyAgICAgICAgICAgIHJldHVybiAi
SW5kZXhlZERCIl9zOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KQEAgLTE0MywxMyArMTUyLDI3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fc2Vz
c2lvblN0b3JhZ2VNYW5hZ2VyLmdldCgpOwogICAgIH0KIAorICAgIElEQlN0b3JhZ2VNYW5hZ2Vy
JiBpZGJTdG9yYWdlTWFuYWdlcihJREJTdG9yYWdlUmVnaXN0cnkmIHJlZ2lzdHJ5LCBJREJTdG9y
YWdlTWFuYWdlcjo6UXVvdGFDaGVja0Z1bmN0aW9uJiYgcXVvdGFDaGVja0Z1bmN0aW9uKQorICAg
IHsKKyAgICAgICAgaWYgKCFtX2lkYlN0b3JhZ2VNYW5hZ2VyKQorICAgICAgICAgICAgbV9pZGJT
dG9yYWdlTWFuYWdlciA9IG1ha2VVbmlxdWU8SURCU3RvcmFnZU1hbmFnZXI+KG1faWRiU3RvcmFn
ZVBhdGgsIHJlZ2lzdHJ5LCBXVEZNb3ZlKHF1b3RhQ2hlY2tGdW5jdGlvbikpOworCisgICAgICAg
IHJldHVybiAqbV9pZGJTdG9yYWdlTWFuYWdlcjsKKyAgICB9CisKKyAgICBJREJTdG9yYWdlTWFu
YWdlciogZXhpc3RpbmdJREJTdG9yYWdlTWFuYWdlcigpCisgICAgeworICAgICAgICByZXR1cm4g
bV9pZGJTdG9yYWdlTWFuYWdlci5nZXQoKTsKKyAgICB9CisKICAgICBib29sIGlzQWN0aXZlKCkg
Y29uc3QKICAgICB7CiAgICAgICAgIC8vIFdlIGNhbm5vdCByZW1vdmUgdGhlIGJ1Y2tldCBpZiBp
dCBoYXMgaW4tbWVtb3J5IGRhdGEsIG90aGVyd2lzZSBzZXNzaW9uCiAgICAgICAgIC8vIGRhdGEg
bWF5IGJlIGxvc3QuCiAgICAgICAgIHJldHVybiAobV9maWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIg
JiYgbV9maWxlU3lzdGVtU3RvcmFnZU1hbmFnZXItPmlzQWN0aXZlKCkpCiAgICAgICAgICAgICB8
fCAobV9sb2NhbFN0b3JhZ2VNYW5hZ2VyICYmIChtX2xvY2FsU3RvcmFnZU1hbmFnZXItPmhhc0Rh
dGFJbk1lbW9yeSgpIHx8IG1fbG9jYWxTdG9yYWdlTWFuYWdlci0+aXNBY3RpdmUoKSkpCi0gICAg
ICAgICAgICB8fCAobV9zZXNzaW9uU3RvcmFnZU1hbmFnZXIgJiYgKG1fc2Vzc2lvblN0b3JhZ2VN
YW5hZ2VyLT5oYXNEYXRhSW5NZW1vcnkoKSB8fCBtX3Nlc3Npb25TdG9yYWdlTWFuYWdlci0+aXNB
Y3RpdmUoKSkpOworICAgICAgICAgICAgfHwgKG1fc2Vzc2lvblN0b3JhZ2VNYW5hZ2VyICYmICht
X3Nlc3Npb25TdG9yYWdlTWFuYWdlci0+aGFzRGF0YUluTWVtb3J5KCkgfHwgbV9zZXNzaW9uU3Rv
cmFnZU1hbmFnZXItPmlzQWN0aXZlKCkpKQorICAgICAgICAgICAgfHwgKG1faWRiU3RvcmFnZU1h
bmFnZXIgJiYgKG1faWRiU3RvcmFnZU1hbmFnZXItPmhhc0RhdGFJbk1lbW9yeSgpIHx8IG1faWRi
U3RvcmFnZU1hbmFnZXItPmlzQWN0aXZlKCkpKTsKICAgICB9CiAKICAgICBib29sIGlzRW1wdHko
KSBjb25zdApAQCAtMTY1LDcgKzE4OCw4IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKGhhc1ZhbGlk
RmlsZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICByZXR1cm4gIUZpbGVT
eXN0ZW06OmZpbGVFeGlzdHMobV9sb2NhbFN0b3JhZ2VQYXRoKTsKKyAgICAgICAgRmlsZVN5c3Rl
bTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkobV9pZGJTdG9yYWdlUGF0aCk7CisgICAgICAgIHJldHVy
biAhRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhtX2xvY2FsU3RvcmFnZVBhdGgpICYmICFGaWxlU3lz
dGVtOjpmaWxlRXhpc3RzKG1faWRiU3RvcmFnZVBhdGgpOwogICAgIH0KIAogICAgIE9wdGlvblNl
dDxXZWJzaXRlRGF0YVR5cGU+IGZldGNoRGF0YVR5cGVzSW5MaXN0KE9wdGlvblNldDxXZWJzaXRl
RGF0YVR5cGU+IHR5cGVzKQpAQCAtMTg2LDE0ICsyMTAsMjAgQEAgcHVibGljOgogCiAgICAgICAg
IGlmICh0eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlNlc3Npb25TdG9yYWdlKSAmJiBt
b2RpZmllZFNpbmNlVGltZSA8IFdhbGxUaW1lOjpub3coKSkKICAgICAgICAgICAgIGRlbGV0ZVNl
c3Npb25TdG9yYWdlRGF0YSgpOworCisgICAgICAgIGlmICh0eXBlcy5jb250YWlucyhXZWJzaXRl
RGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykpCisgICAgICAgICAgICBkZWxldGVJREJTdG9y
YWdlRGF0YShtb2RpZmllZFNpbmNlVGltZSk7CiAgICAgfQogCi0gICAgdm9pZCBtb3ZlRGF0YShj
b25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlUGF0aCkKKyAgICB2
b2lkIG1vdmVEYXRhKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBsb2NhbFN0b3Jh
Z2VQYXRoLCBjb25zdCBTdHJpbmcmIGlkYlN0b3JhZ2VQYXRoKQogICAgIHsKICAgICAgICAgbV9m
aWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIgPSBudWxscHRyOwogICAgICAgICBpZiAobV9sb2NhbFN0
b3JhZ2VNYW5hZ2VyKQogICAgICAgICAgICAgbV9sb2NhbFN0b3JhZ2VNYW5hZ2VyLT5jbG9zZSgp
OwogCisgICAgICAgIGlmIChtX2lkYlN0b3JhZ2VNYW5hZ2VyKQorICAgICAgICAgICAgbV9pZGJT
dG9yYWdlTWFuYWdlci0+Y2xvc2VEYXRhYmFzZXNGb3JEZWxldGlvbigpOworCiAgICAgICAgIEZp
bGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhGaWxlU3lzdGVtOjpwYXJlbnRQYXRoKHBhdGgp
KTsKICAgICAgICAgRmlsZVN5c3RlbTo6bW92ZUZpbGUobV9yb290UGF0aCwgcGF0aCk7CiAKQEAg
LTIwMSw2ICsyMzEsMTEgQEAgcHVibGljOgogICAgICAgICAgICAgRmlsZVN5c3RlbTo6bWFrZUFs
bERpcmVjdG9yaWVzKEZpbGVTeXN0ZW06OnBhcmVudFBhdGgobG9jYWxTdG9yYWdlUGF0aCkpOwog
ICAgICAgICAgICAgV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6bW92ZURhdGFiYXNlRmlsZSht
X2xvY2FsU3RvcmFnZVBhdGgsIGxvY2FsU3RvcmFnZVBhdGgpOwogICAgICAgICB9CisKKyAgICAg
ICAgaWYgKCFtX2lkYlN0b3JhZ2VQYXRoLmlzRW1wdHkoKSAmJiAhaWRiU3RvcmFnZVBhdGguaXNF
bXB0eSgpKSB7CisgICAgICAgICAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoRmls
ZVN5c3RlbTo6cGFyZW50UGF0aChpZGJTdG9yYWdlUGF0aCkpOworICAgICAgICAgICAgV2ViQ29y
ZTo6U1FMaXRlRmlsZVN5c3RlbTo6bW92ZURhdGFiYXNlRmlsZShtX2lkYlN0b3JhZ2VQYXRoLCBp
ZGJTdG9yYWdlUGF0aCk7CisgICAgICAgIH0KICAgICB9CiAKIHByaXZhdGU6CkBAIC0yMTcsNiAr
MjUyLDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgcmVzdWx0LmFkZChXZWJzaXRlRGF0
YVR5cGU6OlNlc3Npb25TdG9yYWdlKTsKICAgICAgICAgfQogCisgICAgICAgIGlmICh0eXBlcy5j
b250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykpIHsKKyAgICAgICAg
ICAgIGlmIChtX2lkYlN0b3JhZ2VNYW5hZ2VyICYmIG1faWRiU3RvcmFnZU1hbmFnZXItPmhhc0Rh
dGFJbk1lbW9yeSgpKQorICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQoV2Vic2l0ZURhdGFUeXBl
OjpJbmRleGVkREJEYXRhYmFzZXMpOworICAgICAgICB9CisKICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICB9CiAKQEAgLTIzMyw2ICsyNzMsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICByZXN1bHQuYWRkKFdlYnNpdGVEYXRhVHlwZTo6TG9jYWxTdG9yYWdlKTsKICAgICAgICAgfQog
CisgICAgICAgIGlmICh0eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRh
dGFiYXNlcykgJiYgIXJlc3VsdC5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRh
dGFiYXNlcykpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIGRhdGFiYXNlcyA9IEZpbGVTeXN0ZW06
Omxpc3REaXJlY3RvcnkobV9pZGJTdG9yYWdlUGF0aCk7ICFkYXRhYmFzZXMuaXNFbXB0eSgpKQor
ICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRh
YmFzZXMpOworICAgICAgICB9CisKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKQEAg
LTI3MCw2ICszMTUsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1fc2Vzc2lvblN0b3JhZ2VN
YW5hZ2VyID0gbnVsbHB0cjsKICAgICB9CiAgICAgCisgICAgdm9pZCBkZWxldGVJREJTdG9yYWdl
RGF0YShXYWxsVGltZSB0aW1lKQorICAgIHsKKyAgICAgICAgaWYgKG1faWRiU3RvcmFnZU1hbmFn
ZXIpCisgICAgICAgICAgICBtX2lkYlN0b3JhZ2VNYW5hZ2VyLT5jbG9zZURhdGFiYXNlc0ZvckRl
bGV0aW9uKCk7CisKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlQWxsRmlsZXNNb2RpZmllZFNp
bmNlKG1faWRiU3RvcmFnZVBhdGgsIHRpbWUpOworICAgIH0KKyAgICAKICAgICBTdHJpbmcgbV9y
b290UGF0aDsKICAgICBTdHJpbmcgbV9pZGVudGlmaWVyOwogICAgIFN0b3JhZ2VCdWNrZXRNb2Rl
IG1fbW9kZSB7IFN0b3JhZ2VCdWNrZXRNb2RlOjpCZXN0RWZmb3J0IH07CkBAIC0yNzcsMTEgKzMz
MCwyNCBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxMb2NhbFN0b3JhZ2VNYW5hZ2Vy
PiBtX2xvY2FsU3RvcmFnZU1hbmFnZXI7CiAgICAgU3RyaW5nIG1fbG9jYWxTdG9yYWdlUGF0aDsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2Vzc2lvblN0b3JhZ2VNYW5hZ2VyPiBtX3Nlc3Npb25TdG9y
YWdlTWFuYWdlcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SURCU3RvcmFnZU1hbmFnZXI+IG1faWRi
U3RvcmFnZU1hbmFnZXI7CisgICAgU3RyaW5nIG1faWRiU3RvcmFnZVBhdGg7CiB9OwogCi1Pcmln
aW5TdG9yYWdlTWFuYWdlcjo6T3JpZ2luU3RvcmFnZU1hbmFnZXIoU3RyaW5nJiYgcGF0aCwgU3Ry
aW5nJiYgbG9jYWxTdG9yYWdlUGF0aCkKK3N0YXRpYyBSZWY8UXVvdGFNYW5hZ2VyPiBjcmVhdGVR
dW90YU1hbmFnZXIodWludDY0X3QgcXVvdGEsIGNvbnN0IFN0cmluZyYgaWRiU3RvcmFnZVBhdGgs
IGNvbnN0IFN0cmluZyYgY2FjaGVTdG9yYWdlUGF0aCwgUXVvdGFNYW5hZ2VyOjpJbmNyZWFzZVF1
b3RhRnVuY3Rpb24mJiBpbmNyZWFzZVF1b3RhRnVuY3Rpb24pCit7CisgICAgUXVvdGFNYW5hZ2Vy
OjpHZXRVc2FnZUZ1bmN0aW9uIGdldFVzYWdlRnVuY3Rpb24gPSBbaWRiU3RvcmFnZVBhdGgsIGNh
Y2hlU3RvcmFnZVBhdGhdKCkgeworICAgICAgICByZXR1cm4gSURCU3RvcmFnZU1hbmFnZXI6Omlk
YlN0b3JhZ2VTaXplKGlkYlN0b3JhZ2VQYXRoKSArIENhY2hlU3RvcmFnZTo6RW5naW5lOjpkaXNr
VXNhZ2UoY2FjaGVTdG9yYWdlUGF0aCk7CisgICAgfTsKKyAgICByZXR1cm4gUXVvdGFNYW5hZ2Vy
OjpjcmVhdGUocXVvdGEsIFdURk1vdmUoZ2V0VXNhZ2VGdW5jdGlvbiksIFdURk1vdmUoaW5jcmVh
c2VRdW90YUZ1bmN0aW9uKSk7Cit9CisKK09yaWdpblN0b3JhZ2VNYW5hZ2VyOjpPcmlnaW5TdG9y
YWdlTWFuYWdlcih1aW50NjRfdCBxdW90YSwgUXVvdGFNYW5hZ2VyOjpJbmNyZWFzZVF1b3RhRnVu
Y3Rpb24mJiBpbmNyZWFzZVF1b3RhRnVuY3Rpb24sIFN0cmluZyYmIHBhdGgsIFN0cmluZyYmIGxv
Y2FsU3RvcmFnZVBhdGgsIFN0cmluZyYmIGlkYlN0b3JhZ2VQYXRoLCBTdHJpbmcmJiBjYWNoZVN0
b3JhZ2VQYXRoKQogICAgIDogbV9wYXRoKFdURk1vdmUocGF0aCkpCiAgICAgLCBtX2xvY2FsU3Rv
cmFnZVBhdGgoV1RGTW92ZShsb2NhbFN0b3JhZ2VQYXRoKSkKKyAgICAsIG1faWRiU3RvcmFnZVBh
dGgoV1RGTW92ZShpZGJTdG9yYWdlUGF0aCkpCisgICAgLCBtX2NhY2hlU3RvcmFnZVBhdGgoV1RG
TW92ZShjYWNoZVN0b3JhZ2VQYXRoKSkKKyAgICAsIG1fcXVvdGFNYW5hZ2VyKGNyZWF0ZVF1b3Rh
TWFuYWdlcihxdW90YSwgbV9pZGJTdG9yYWdlUGF0aCwgbV9jYWNoZVN0b3JhZ2VQYXRoLCBXVEZN
b3ZlKGluY3JlYXNlUXVvdGFGdW5jdGlvbikpKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNN
YWluKCkpOwogfQpAQCAtMjk3LDExICszNjMsMTYgQEAgdm9pZCBPcmlnaW5TdG9yYWdlTWFuYWdl
cjo6Y29ubmVjdGlvbkNsb3NlZChJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGNvbm5lY3Rpb24K
IE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0JiBPcmlnaW5TdG9yYWdlTWFuYWdl
cjo6ZGVmYXVsdEJ1Y2tldCgpCiB7CiAgICAgaWYgKCFtX2RlZmF1bHRCdWNrZXQpCi0gICAgICAg
IG1fZGVmYXVsdEJ1Y2tldCA9IG1ha2VVbmlxdWU8U3RvcmFnZUJ1Y2tldD4obV9wYXRoLCAiZGVm
YXVsdCJfcywgbV9sb2NhbFN0b3JhZ2VQYXRoKTsKKyAgICAgICAgbV9kZWZhdWx0QnVja2V0ID0g
bWFrZVVuaXF1ZTxTdG9yYWdlQnVja2V0PihtX3BhdGgsICJkZWZhdWx0Il9zLCBtX2xvY2FsU3Rv
cmFnZVBhdGgsIG1faWRiU3RvcmFnZVBhdGgpOwogCiAgICAgcmV0dXJuICptX2RlZmF1bHRCdWNr
ZXQ7CiB9CiAKK1F1b3RhTWFuYWdlciYgT3JpZ2luU3RvcmFnZU1hbmFnZXI6OnF1b3RhTWFuYWdl
cigpCit7CisgICAgcmV0dXJuIG1fcXVvdGFNYW5hZ2VyLmdldCgpOworfQorCiBGaWxlU3lzdGVt
U3RvcmFnZU1hbmFnZXImIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpmaWxlU3lzdGVtU3RvcmFnZU1h
bmFnZXIoRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeSYgcmVnaXN0cnkpCiB7CiAgICAg
cmV0dXJuIGRlZmF1bHRCdWNrZXQoKS5maWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIocmVnaXN0cnkp
OwpAQCAtMzI3LDYgKzM5OCwyMyBAQCBTZXNzaW9uU3RvcmFnZU1hbmFnZXIqIE9yaWdpblN0b3Jh
Z2VNYW5hZ2VyOjpleGlzdGluZ1Nlc3Npb25TdG9yYWdlTWFuYWdlcigpCiAgICAgcmV0dXJuIGRl
ZmF1bHRCdWNrZXQoKS5leGlzdGluZ1Nlc3Npb25TdG9yYWdlTWFuYWdlcigpOwogfQogCitJREJT
dG9yYWdlTWFuYWdlciYgT3JpZ2luU3RvcmFnZU1hbmFnZXI6OmlkYlN0b3JhZ2VNYW5hZ2VyKElE
QlN0b3JhZ2VSZWdpc3RyeSYgcmVnaXN0cnkpCit7CisgICAgcmV0dXJuIGRlZmF1bHRCdWNrZXQo
KS5pZGJTdG9yYWdlTWFuYWdlcihyZWdpc3RyeSwgW3F1b3RhTWFuYWdlciA9IFdlYWtQdHIgeyB0
aGlzLT5xdW90YU1hbmFnZXIoKSB9XSh1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgbXV0YWJsZSB7CisgICAg
ICAgIGlmICghcXVvdGFNYW5hZ2VyKQorICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5k
bGVyKGZhbHNlKTsKKworICAgICAgICBxdW90YU1hbmFnZXItPnJlcXVlc3RTcGFjZShzcGFjZVJl
cXVlc3RlZCwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
KGF1dG8gZGVjaXNpb24pIG11dGFibGUgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
ZGVjaXNpb24gPT0gUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbjo6R3JhbnQpOworICAgICAgICB9KTsK
KyAgICB9KTsKK30KKworSURCU3RvcmFnZU1hbmFnZXIqIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpl
eGlzdGluZ0lEQlN0b3JhZ2VNYW5hZ2VyKCkKK3sKKyAgICByZXR1cm4gZGVmYXVsdEJ1Y2tldCgp
LmV4aXN0aW5nSURCU3RvcmFnZU1hbmFnZXIoKTsKK30KKwogYm9vbCBPcmlnaW5TdG9yYWdlTWFu
YWdlcjo6aXNBY3RpdmUoKQogewogICAgIHJldHVybiBkZWZhdWx0QnVja2V0KCkuaXNBY3RpdmUo
KTsKQEAgLTM1OSwxMSArNDQ3LDExIEBAIHZvaWQgT3JpZ2luU3RvcmFnZU1hbmFnZXI6OmRlbGV0
ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gdHlwZXMsIFdhbGxUaW1lCiAgICAgZGVm
YXVsdEJ1Y2tldCgpLmRlbGV0ZURhdGEodHlwZXMsIG1vZGlmaWVkU2luY2UpOwogfQogCi12b2lk
IE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjptb3ZlRGF0YShjb25zdCBTdHJpbmcmIG5ld1BhdGgsIGNv
bnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlUGF0aCkKK3ZvaWQgT3JpZ2luU3RvcmFnZU1hbmFnZXI6
Om1vdmVEYXRhKGNvbnN0IFN0cmluZyYgbmV3UGF0aCwgY29uc3QgU3RyaW5nJiBsb2NhbFN0b3Jh
Z2VQYXRoLCBjb25zdCBTdHJpbmcmIGlkYlN0b3JhZ2VQYXRoKQogewogICAgIEFTU0VSVCghUnVu
TG9vcDo6aXNNYWluKCkpOwogCi0gICAgZGVmYXVsdEJ1Y2tldCgpLm1vdmVEYXRhKG5ld1BhdGgs
IGxvY2FsU3RvcmFnZVBhdGgpOworICAgIGRlZmF1bHRCdWNrZXQoKS5tb3ZlRGF0YShuZXdQYXRo
LCBsb2NhbFN0b3JhZ2VQYXRoLCBpZGJTdG9yYWdlUGF0aCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdl
L09yaWdpblN0b3JhZ2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0
b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuaAppbmRleCA1ZTc2Njk5ODZlNDY2ODVmMzg5Yjdh
NTI3MWU2NmQwZTYzYzJkMTllLi5lYzQ2YzU0YjMxMTFmYjAxYjNjZTY5NjkyMDdjMTNiZTVkOTk5
ZDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3Jp
Z2luU3RvcmFnZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0
b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuaApAQCAtMjYsMTYgKzI2LDE1IEBACiAjcHJhZ21h
IG9uY2UKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJRdW90YU1hbmFnZXIu
aCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUg
ewotc3RydWN0IENsaWVudE9yaWdpbjsKLX0KLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNz
IEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnk7CiBjbGFzcyBGaWxlU3lzdGVtU3RvcmFn
ZU1hbmFnZXI7CitjbGFzcyBJREJTdG9yYWdlTWFuYWdlcjsKK2NsYXNzIElEQlN0b3JhZ2VSZWdp
c3RyeTsKIGNsYXNzIExvY2FsU3RvcmFnZU1hbmFnZXI7CiBjbGFzcyBTZXNzaW9uU3RvcmFnZU1h
bmFnZXI7CiBjbGFzcyBTdG9yYWdlQXJlYVJlZ2lzdHJ5OwpAQCAtNDQsMzUgKzQzLDM4IEBAIGVu
dW0gY2xhc3MgV2Vic2l0ZURhdGFUeXBlIDogdWludDMyX3Q7CiBjbGFzcyBPcmlnaW5TdG9yYWdl
TWFuYWdlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgT3Jp
Z2luU3RvcmFnZU1hbmFnZXIoU3RyaW5nJiYgcGF0aCwgU3RyaW5nJiYgbG9jYWxTdG9yYWdlUGF0
aCk7CisgICAgT3JpZ2luU3RvcmFnZU1hbmFnZXIodWludDY0X3QgcXVvdGEsIFF1b3RhTWFuYWdl
cjo6SW5jcmVhc2VRdW90YUZ1bmN0aW9uJiYsIFN0cmluZyYmIHBhdGgsIFN0cmluZyYmIGxvY2Fs
U3RvcmFnZVBhdGgsIFN0cmluZyYmIGlkYlN0b3JhZ2VQYXRoLCBTdHJpbmcmJiBjYWNoZVN0b3Jh
Z2VQYXRoKTsKICAgICB+T3JpZ2luU3RvcmFnZU1hbmFnZXIoKTsKIAogICAgIHZvaWQgY29ubmVj
dGlvbkNsb3NlZChJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEKTsKICAgICBib29sIHBlcnNpc3Rl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGVyc2lzdGVkOyB9CiAgICAgdm9pZCBzZXRQZXJzaXN0ZWQo
Ym9vbCB2YWx1ZSk7CisgICAgUXVvdGFNYW5hZ2VyJiBxdW90YU1hbmFnZXIoKTsKICAgICBGaWxl
U3lzdGVtU3RvcmFnZU1hbmFnZXImIGZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlcihGaWxlU3lzdGVt
U3RvcmFnZUhhbmRsZVJlZ2lzdHJ5Jik7CiAgICAgTG9jYWxTdG9yYWdlTWFuYWdlciYgbG9jYWxT
dG9yYWdlTWFuYWdlcihTdG9yYWdlQXJlYVJlZ2lzdHJ5Jik7CiAgICAgTG9jYWxTdG9yYWdlTWFu
YWdlciogZXhpc3RpbmdMb2NhbFN0b3JhZ2VNYW5hZ2VyKCk7CiAgICAgU2Vzc2lvblN0b3JhZ2VN
YW5hZ2VyJiBzZXNzaW9uU3RvcmFnZU1hbmFnZXIoU3RvcmFnZUFyZWFSZWdpc3RyeSYpOwogICAg
IFNlc3Npb25TdG9yYWdlTWFuYWdlciogZXhpc3RpbmdTZXNzaW9uU3RvcmFnZU1hbmFnZXIoKTsK
KyAgICBJREJTdG9yYWdlTWFuYWdlciYgaWRiU3RvcmFnZU1hbmFnZXIoSURCU3RvcmFnZVJlZ2lz
dHJ5Jik7CisgICAgSURCU3RvcmFnZU1hbmFnZXIqIGV4aXN0aW5nSURCU3RvcmFnZU1hbmFnZXIo
KTsKICAgICBib29sIGlzQWN0aXZlKCk7CiAgICAgYm9vbCBpc0VtcHR5KCk7CiAgICAgT3B0aW9u
U2V0PFdlYnNpdGVEYXRhVHlwZT4gZmV0Y2hEYXRhVHlwZXNJbkxpc3QoT3B0aW9uU2V0PFdlYnNp
dGVEYXRhVHlwZT4pOwogICAgIHZvaWQgZGVsZXRlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFU
eXBlPiwgV2FsbFRpbWUpOwotICAgIHZvaWQgbW92ZURhdGEoY29uc3QgU3RyaW5nJiBuZXdQYXRo
LCBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZVBhdGgpOworICAgIHZvaWQgbW92ZURhdGEoY29u
c3QgU3RyaW5nJiBuZXdQYXRoLCBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZVBhdGgsIGNvbnN0
IFN0cmluZyYgaWRiU3RvcmFnZVBhdGgpOwogCiBwcml2YXRlOgogICAgIGVudW0gY2xhc3MgU3Rv
cmFnZUJ1Y2tldE1vZGUgOiBib29sOwogICAgIGNsYXNzIFN0b3JhZ2VCdWNrZXQ7CiAgICAgU3Rv
cmFnZUJ1Y2tldCYgZGVmYXVsdEJ1Y2tldCgpOwogCi0gICAgdm9pZCBjcmVhdGVPcmlnaW5GaWxl
SWZOZWNlc3NhcnkoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJik7Ci0gICAgdm9pZCBkZWxl
dGVPcmlnaW5GaWxlSWZOZWNlc3NhcnkoKTsKLQogICAgIHN0ZDo6dW5pcXVlX3B0cjxTdG9yYWdl
QnVja2V0PiBtX2RlZmF1bHRCdWNrZXQ7CiAgICAgU3RyaW5nIG1fcGF0aDsKICAgICBib29sIG1f
cGVyc2lzdGVkIHsgZmFsc2UgfTsKICAgICBTdHJpbmcgbV9sb2NhbFN0b3JhZ2VQYXRoOworICAg
IFN0cmluZyBtX2lkYlN0b3JhZ2VQYXRoOworICAgIFN0cmluZyBtX2NhY2hlU3RvcmFnZVBhdGg7
CisgICAgUmVmPFF1b3RhTWFuYWdlcj4gbV9xdW90YU1hbmFnZXI7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3Rv
cmFnZS9RdW90YU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9y
YWdlL1F1b3RhTWFuYWdlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTcxZjE3NTg5ODU3YTk5ZDM3NGVjYWQ4
ZDJlZTdhNDIxYTdmZjA2OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvc3RvcmFnZS9RdW90YU1hbmFnZXIuY3BwCkBAIC0wLDAgKzEsMTMyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlF1b3RhTWFuYWdlci5oIgor
CisjaW5jbHVkZSA8d3RmL1NldEZvclNjb3BlLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitS
ZWY8UXVvdGFNYW5hZ2VyPiBRdW90YU1hbmFnZXI6OmNyZWF0ZSh1aW50NjRfdCBxdW90YSwgR2V0
VXNhZ2VGdW5jdGlvbiYmIGdldFVzYWdlRnVuY3Rpb24sIEluY3JlYXNlUXVvdGFGdW5jdGlvbiYm
IGluY3JlYXNlUXVvdGFGdW5jdGlvbikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBRdW90
YU1hbmFnZXIocXVvdGEsIFdURk1vdmUoZ2V0VXNhZ2VGdW5jdGlvbiksIFdURk1vdmUoaW5jcmVh
c2VRdW90YUZ1bmN0aW9uKSkpOworfQorCitRdW90YU1hbmFnZXI6OlF1b3RhTWFuYWdlcih1aW50
NjRfdCBxdW90YSwgR2V0VXNhZ2VGdW5jdGlvbiYmIGdldFVzYWdlRnVuY3Rpb24sIEluY3JlYXNl
UXVvdGFGdW5jdGlvbiYmIGluY3JlYXNlUXVvdGFGdW5jdGlvbikKKyAgICA6IG1fcXVvdGEocXVv
dGEpCisgICAgLCBtX2luaXRpYWxRdW90YShxdW90YSkKKyAgICAsIG1fZ2V0VXNhZ2VGdW5jdGlv
bihXVEZNb3ZlKGdldFVzYWdlRnVuY3Rpb24pKQorICAgICwgbV9pbmNyZWFzZVF1b3RhRnVuY3Rp
b24oV1RGTW92ZShpbmNyZWFzZVF1b3RhRnVuY3Rpb24pKQoreworICAgIEFTU0VSVChtX3F1b3Rh
KTsKK30KKwordm9pZCBRdW90YU1hbmFnZXI6OnJlcXVlc3RTcGFjZSh1aW50NjRfdCBzcGFjZVJl
cXVlc3RlZCwgUmVxdWVzdENhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgbV9yZXF1ZXN0cy5h
cHBlbmQoUXVvdGFNYW5hZ2VyOjpSZXF1ZXN0IHsgc3BhY2VSZXF1ZXN0ZWQsIFdURk1vdmUoY2Fs
bGJhY2spLCBRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIgeyB9IH0pOworICAgIGhhbmRs
ZVJlcXVlc3RzKCk7Cit9CisKK3ZvaWQgUXVvdGFNYW5hZ2VyOjpoYW5kbGVSZXF1ZXN0cygpCit7
CisgICAgaWYgKG1fY3VycmVudFJlcXVlc3QpCisgICAgICAgIHJldHVybjsKKworICAgIFNldEZv
clNjb3BlPGJvb2w+IGlzSGFuZGxpbmdSZXF1ZXN0cyhtX2lzSGFuZGxpbmdSZXF1ZXN0cywgdHJ1
ZSk7CisKKyAgICB3aGlsZSAoIW1fY3VycmVudFJlcXVlc3QgJiYgIW1fcmVxdWVzdHMuaXNFbXB0
eSgpKSB7CisgICAgICAgIG1fY3VycmVudFJlcXVlc3QgPSBtX3JlcXVlc3RzLnRha2VGaXJzdCgp
OworICAgICAgICBpZiAoZ3JhbnRXaXRoQ3VycmVudFF1b3RhKG1fY3VycmVudFJlcXVlc3QtPnNw
YWNlUmVxdWVzdGVkKSkgeworICAgICAgICAgICAgbV9jdXJyZW50UmVxdWVzdC0+Y2FsbGJhY2so
RGVjaXNpb246OkdyYW50KTsKKyAgICAgICAgICAgIG1fY3VycmVudFJlcXVlc3QgPSBzdGQ6Om51
bGxvcHQ7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIG1fY3Vy
cmVudFJlcXVlc3QtPmlkZW50aWZpZXIgPSBRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXI6
OmdlbmVyYXRlVGhyZWFkU2FmZSgpOworICAgICAgICBtX2luY3JlYXNlUXVvdGFGdW5jdGlvbiht
X2N1cnJlbnRSZXF1ZXN0LT5pZGVudGlmaWVyLCBtX3F1b3RhLCAqbV91c2FnZSwgbV9jdXJyZW50
UmVxdWVzdC0+c3BhY2VSZXF1ZXN0ZWQpOworICAgIH0KK30KKworYm9vbCBRdW90YU1hbmFnZXI6
OmdyYW50V2l0aEN1cnJlbnRRdW90YSh1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCkKK3sKKyAgICBp
ZiAoZ3JhbnRGYXN0UGF0aChzcGFjZVJlcXVlc3RlZCkpCisgICAgICAgIHJldHVybiB0cnVlOwor
CisgICAgLy8gV2hlbiBRdW90YU1hbmFnZXIgaXMgdXNlZCBmb3IgdGhlIGZpcnN0IHRpbWUsIHdl
IHdhbnQgdG8gbWFrZSBzdXJlIGl0cyBpbml0aWFsIHF1b3RhIGlzIGJpZ2dlciB0aGFuIGV4aXN0
aW5nIGRpc2sgdXNhZ2UsCisgICAgLy8gYmFzZWQgb24gdGhlIGFzc3VtcHRpb24gdGhhdCB0aGUg
cXVvdGEgd2FzIGluY3JlYXNlZCB0byBhdCBsZWFzdCB0aGUgZGlzayB1c2FnZSB1bmRlciB1c2Vy
J3MgcGVybWlzc2lvbiBiZWZvcmUuCisgICAgYm9vbCBzaG91bGRVcGRhdGVRdW90YUJhc2VkT25V
c2FnZSA9ICFtX3VzYWdlOworICAgIG1fdXNhZ2UgPSBtX2dldFVzYWdlRnVuY3Rpb24oKTsKKyAg
ICBpZiAoc2hvdWxkVXBkYXRlUXVvdGFCYXNlZE9uVXNhZ2UpIHsKKyAgICAgICAgYXV0byBkZWZh
dWx0UXVvdGFTdGVwID0gbV9xdW90YSAvIDEwOworICAgICAgICBtX3F1b3RhID0gc3RkOjptYXgo
bV9xdW90YSwgZGVmYXVsdFF1b3RhU3RlcCAqICgoKm1fdXNhZ2UgLyBkZWZhdWx0UXVvdGFTdGVw
KSArIDEpKTsKKyAgICB9CisgICAgbV9xdW90YUNvdW50ZG93biA9ICptX3VzYWdlIDwgbV9xdW90
YSA/IG1fcXVvdGEgLSAqbV91c2FnZSA6IDA7CisKKyAgICByZXR1cm4gZ3JhbnRGYXN0UGF0aChz
cGFjZVJlcXVlc3RlZCk7Cit9CisKK2Jvb2wgUXVvdGFNYW5hZ2VyOjpncmFudEZhc3RQYXRoKHVp
bnQ2NF90IHNwYWNlUmVxdWVzdGVkKQoreworICAgIGlmIChzcGFjZVJlcXVlc3RlZCA8PSBtX3F1
b3RhQ291bnRkb3duKSB7CisgICAgICAgIG1fcXVvdGFDb3VudGRvd24gLT0gc3BhY2VSZXF1ZXN0
ZWQ7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30K
Kwordm9pZCBRdW90YU1hbmFnZXI6OmRpZEluY3JlYXNlUXVvdGEoUXVvdGFJbmNyZWFzZVJlcXVl
c3RJZGVudGlmaWVyIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IG5ld1F1b3Rh
KQoreworICAgIGlmICghbV9jdXJyZW50UmVxdWVzdCB8fCBtX2N1cnJlbnRSZXF1ZXN0LT5pZGVu
dGlmaWVyICE9IGlkZW50aWZpZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChuZXdRdW90
YSkgeworICAgICAgICBtX3F1b3RhID0gKm5ld1F1b3RhOworICAgICAgICAvLyBSZWNhbGN1bGF0
ZSBtX3F1b3RhQ291bnRkb3duIGJhc2VkIG9uIHVzYWdlLgorICAgICAgICBtX3F1b3RhQ291bnRk
b3duID0gMDsKKyAgICB9CisKKyAgICBhdXRvIGRlY2lzaW9uID0gZ3JhbnRXaXRoQ3VycmVudFF1
b3RhKG1fY3VycmVudFJlcXVlc3QtPnNwYWNlUmVxdWVzdGVkKSA/IERlY2lzaW9uOjpHcmFudCA6
IERlY2lzaW9uOjpEZW55OworICAgIG1fY3VycmVudFJlcXVlc3QtPmNhbGxiYWNrKGRlY2lzaW9u
KTsKKyAgICBtX2N1cnJlbnRSZXF1ZXN0ID0gc3RkOjpudWxsb3B0OworCisgICAgaWYgKCFtX2lz
SGFuZGxpbmdSZXF1ZXN0cykKKyAgICAgICAgaGFuZGxlUmVxdWVzdHMoKTsKK30KKwordm9pZCBR
dW90YU1hbmFnZXI6OnJlc2V0UXVvdGFVcGRhdGVkQmFzZWRPblVzYWdlRm9yVGVzdGluZygpCit7
CisgICAgcmVzZXRRdW90YUZvclRlc3RpbmcoKTsKKyAgICBtX3VzYWdlID0gc3RkOjpudWxsb3B0
OworfQorCit2b2lkIFF1b3RhTWFuYWdlcjo6cmVzZXRRdW90YUZvclRlc3RpbmcoKQoreworICAg
IG1fcXVvdGEgPSBtX2luaXRpYWxRdW90YTsKKyAgICBtX3F1b3RhQ291bnRkb3duID0gMDsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3N0b3JhZ2UvUXVvdGFNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3N0b3JhZ2UvUXVvdGFNYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmFiNDhjODhhYzg3YTYw
NjJmOGNjN2JjMjc4ZWQ2OTNhMDY2NzY1NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9RdW90YU1hbmFnZXIuaApAQCAtMCwwICsxLDcxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJRdW90YUluY3JlYXNlUmVx
dWVzdElkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKyNp
bmNsdWRlIDx3dGYvRGVxdWUuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFF1b3Rh
TWFuYWdlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxRdW90YU1hbmFnZXI+LCBwdWJs
aWMgQ2FuTWFrZVdlYWtQdHI8UXVvdGFNYW5hZ2VyPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CitwdWJsaWM6CisgICAgdXNpbmcgR2V0VXNhZ2VGdW5jdGlvbiA9IEZ1bmN0aW9uPHVp
bnQ2NF90KCk+OworICAgIHVzaW5nIEluY3JlYXNlUXVvdGFGdW5jdGlvbiA9IEZ1bmN0aW9uPHZv
aWQoUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjdXJyZW50UXVvdGEs
IHVpbnQ2NF90IGN1cnJlbnRVc2FnZSwgdWludDY0X3QgcmVxdWVzdGVkSW5jcmVhc2UpPjsKKyAg
ICBzdGF0aWMgUmVmPFF1b3RhTWFuYWdlcj4gY3JlYXRlKHVpbnQ2NF90IHF1b3RhLCBHZXRVc2Fn
ZUZ1bmN0aW9uJiYsIEluY3JlYXNlUXVvdGFGdW5jdGlvbiYmKTsKKworICAgIGVudW0gY2xhc3Mg
RGVjaXNpb24gOiBib29sIHsgRGVueSwgR3JhbnQgfTsKKyAgICB1c2luZyBSZXF1ZXN0Q2FsbGJh
Y2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKERlY2lzaW9uKT47CisgICAgdm9pZCByZXF1ZXN0
U3BhY2UodWludDY0X3Qgc3BhY2VSZXF1ZXN0ZWQsIFJlcXVlc3RDYWxsYmFjayYmKTsKKyAgICB2
b2lkIGRpZEluY3JlYXNlUXVvdGEoUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLCBzdGQ6
Om9wdGlvbmFsPHVpbnQ2NF90PiBuZXdRdW90YSk7CisKKyAgICB2b2lkIHJlc2V0UXVvdGFVcGRh
dGVkQmFzZWRPblVzYWdlRm9yVGVzdGluZygpOworICAgIHZvaWQgcmVzZXRRdW90YUZvclRlc3Rp
bmcoKTsKKworcHJpdmF0ZToKKyAgICBRdW90YU1hbmFnZXIodWludDY0X3QgcXVvdGEsIEdldFVz
YWdlRnVuY3Rpb24mJiwgSW5jcmVhc2VRdW90YUZ1bmN0aW9uJiYpOworICAgIHZvaWQgaGFuZGxl
UmVxdWVzdHMoKTsKKyAgICBib29sIGdyYW50V2l0aEN1cnJlbnRRdW90YSh1aW50NjRfdCBzcGFj
ZVJlcXVlc3RlZCk7CisgICAgYm9vbCBncmFudEZhc3RQYXRoKHVpbnQ2NF90IHNwYWNlUmVxdWVz
dGVkKTsKKworICAgIHN0cnVjdCBSZXF1ZXN0IHsKKyAgICAgICAgdWludDY0X3Qgc3BhY2VSZXF1
ZXN0ZWQ7CisgICAgICAgIFJlcXVlc3RDYWxsYmFjayBjYWxsYmFjazsKKyAgICAgICAgUXVvdGFJ
bmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyIGlkZW50aWZpZXI7CisgICAgfTsKKyAgICBEZXF1ZTxS
ZXF1ZXN0PiBtX3JlcXVlc3RzOworICAgIHN0ZDo6b3B0aW9uYWw8UmVxdWVzdD4gbV9jdXJyZW50
UmVxdWVzdDsKKyAgICBib29sIG1faXNIYW5kbGluZ1JlcXVlc3RzIHsgZmFsc2UgfTsKKyAgICB1
aW50NjRfdCBtX3F1b3RhQ291bnRkb3duIHsgMCB9OworICAgIHVpbnQ2NF90IG1fcXVvdGE7Cisg
ICAgdWludDY0X3QgbV9pbml0aWFsUXVvdGE7IC8vIFRlc3Qgb25seS4KKyAgICBzdGQ6Om9wdGlv
bmFsPHVpbnQ2NF90PiBtX3VzYWdlOworICAgIEdldFVzYWdlRnVuY3Rpb24gbV9nZXRVc2FnZUZ1
bmN0aW9uOworICAgIEluY3JlYXNlUXVvdGFGdW5jdGlvbiBtX2luY3JlYXNlUXVvdGFGdW5jdGlv
bjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvbWVzc2FnZXMucHkKaW5kZXggYzUzZWY5OTQzZjVmZjM3ZWZkNjgzOWUyNWZjZGVkZTNmMzZi
NTUxZS4uNzU4ZDUwNTU2ZmYyZjZlNDczNzdkMTRlODI2NmJjNWUzZWFjNDFhNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0yODgsNiArMjg4LDcgQEAgZGVm
IHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICAgICAgJ1dlYkNv
cmU6Ok5hdGl2ZUltYWdlUmVmZXJlbmNlJywKICAgICAgICAgJ1dlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50
aWZpZXInLAorICAgICAgICAnV2ViS2l0OjpRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIn
LAogICAgICAgICAnV2ViQ29yZTo6UGx1Z2luTG9hZENsaWVudFBvbGljeScsCiAgICAgICAgICdX
ZWJDb3JlOjpQb2ludGVySUQnLAogICAgICAgICAnV2ViQ29yZTo6UHVzaFN1YnNjcmlwdGlvbklk
ZW50aWZpZXInLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGEv
UXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJzaXRlRGF0YS9RdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5i
ZTQ1NGI2YTA4YjY4YTIwYzY1MGRjODk3NjMyODU1OGEzNzIwMWY1Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGEvUXVvdGFJbmNyZWFzZVJlcXVlc3RJ
ZGVudGlmaWVyLmgKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK2VudW0gUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyVHlwZSB7IH07Cit1c2luZyBR
dW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFF1b3RhSW5j
cmVhc2VSZXF1ZXN0SWRlbnRpZmllclR5cGU+OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJz
LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oCmlu
ZGV4IDE1M2JmOTNiZGY2ZmYxMWI0NjBmNjQ4MjViNDUwMzA4Yjg0NWQzOGQuLjIwOTg0NjgxNjI5
OTA0NzMzODg0Y2ZjYjEyN2FhNTcyMWQyY2VlODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaApAQCAtNzEsOCArNzEsOCBAQCBzdHJ1
Y3QgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgewogICAgIFN0cmluZyBnZW5lcmFsU3RvcmFn
ZURpcmVjdG9yeTsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgZ2VuZXJhbFN0b3JhZ2VE
aXJlY3RvcnlIYW5kbGU7CiAKLSAgICB1aW50NjRfdCBwZXJPcmlnaW5TdG9yYWdlUXVvdGEgeyBX
ZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2VyOjpkZWZhdWx0UXVvdGEoKSB9OwotICAgIHVpbnQ2
NF90IHBlclRoaXJkUGFydHlPcmlnaW5TdG9yYWdlUXVvdGEgeyBXZWJDb3JlOjpTdG9yYWdlUXVv
dGFNYW5hZ2VyOjpkZWZhdWx0VGhpcmRQYXJ0eVF1b3RhKCkgfTsKKyAgICB1aW50NjRfdCBwZXJP
cmlnaW5TdG9yYWdlUXVvdGE7CisgICAgdWludDY0X3QgcGVyVGhpcmRQYXJ0eU9yaWdpblN0b3Jh
Z2VRdW90YTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggZTMx
MzkxMDU5Y2IzY2IyMDBhNDgzNzE5OWE0OWQzMjE5Yzg0NDczZC4uZTJmNGJkNGE0YWRjNDFjYzMy
OTE2YmY1YzYzZmI0Njg0NDEwODA3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2Vz
LnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC0xNDksMTAgKzE0OSwxNCBA
QCBOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5jcHAKIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3Jh
Z2VNYW5hZ2VyLmNwcAogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZUhh
bmRsZS5jcHAKIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVS
ZWdpc3RyeS5jcHAKK05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZUNvbm5lY3Rpb25U
b0NsaWVudC5jcHAKK05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZU1hbmFnZXIuY3Bw
CitOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VSZWdpc3RyeS5jcHAKIE5ldHdvcmtQ
cm9jZXNzL3N0b3JhZ2UvTG9jYWxTdG9yYWdlTWFuYWdlci5jcHAKIE5ldHdvcmtQcm9jZXNzL3N0
b3JhZ2UvTWVtb3J5U3RvcmFnZUFyZWEuY3BwCiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdv
cmtTdG9yYWdlTWFuYWdlci5jcHAKIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFn
ZU1hbmFnZXIuY3BwCitOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1F1b3RhTWFuYWdlci5jcHAKIE5l
dHdvcmtQcm9jZXNzL3N0b3JhZ2UvU1FMaXRlU3RvcmFnZUFyZWEuY3BwCiBOZXR3b3JrUHJvY2Vz
cy9zdG9yYWdlL1Nlc3Npb25TdG9yYWdlTWFuYWdlci5jcHAKIE5ldHdvcmtQcm9jZXNzL3N0b3Jh
Z2UvU3RvcmFnZUFyZWFCYXNlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggMzMwMjBiZDVjM2NkOTQx
Nzc1NjE1NzlhYzIwZmMzOGY5YzY5Mjc4ZS4uYWU3NzgxOGRmMmUxM2FhODhlM2Q4ZjhjMTI5ODQx
MmRjZjdjMzE0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0xNTA2LDYgKzE1MDYsMTYgQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXF1ZXN0U3RvcmFnZVNwYWNlKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgY29uc3QgV2UKICAgICB9KTsKIH0KIAordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5
OjppbmNyZWFzZVF1b3RhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6
Q2xpZW50T3JpZ2luJiBvcmlnaW4sIFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllciBpZGVu
dGlmaWVyLCB1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRVc2FnZSwgdWlu
dDY0X3Qgc3BhY2VSZXF1ZXN0ZWQpCit7CisgICAgcmVxdWVzdFN0b3JhZ2VTcGFjZShzZXNzaW9u
SUQsIG9yaWdpbiwgY3VycmVudFF1b3RhLCBjdXJyZW50VXNhZ2UsIHNwYWNlUmVxdWVzdGVkLCBb
dGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgc2Vzc2lvbklELCBvcmlnaW4sIGlk
ZW50aWZpZXJdKGF1dG8gcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJv
Y2Vzczo6RGlkSW5jcmVhc2VRdW90YShzZXNzaW9uSUQsIG9yaWdpbiwgaWRlbnRpZmllciwgcmVz
dWx0KSwgMCk7CisgICAgfSk7Cit9CisKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVnaXN0
ZXJTY2hlbWVGb3JMZWdhY3lDdXN0b21Qcm90b2NvbChjb25zdCBTdHJpbmcmIHNjaGVtZSkKIHsK
ICNpZiBFTkFCTEUoTEVHQUNZX0NVU1RPTV9QUk9UT0NPTF9NQU5BR0VSKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRl
eCA2ODQxYTM0ZmUwOWQxMmJhOTNkNGVmOGM4MGU0NTMzYTU1ZmQ2NWM0Li5jNDMxOTg0OTM4OWQx
MjI5MTVlMDc3ZjgzMGQzNWM5MDZlZjRkYjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtMzMsNiArMzMsNyBA
QAogI2luY2x1ZGUgIlByb2Nlc3NMYXVuY2hlci5oIgogI2luY2x1ZGUgIlByb2Nlc3NUaHJvdHRs
ZXIuaCIKICNpbmNsdWRlICJQcm9jZXNzVGhyb3R0bGVyQ2xpZW50LmgiCisjaW5jbHVkZSAiUXVv
dGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiVXNlckNvbnRlbnRDb250
cm9sbGVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzUmVw
bGllcy5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKQEAgLTM0Miw2ICszNDMsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgdHJpZ2dlckJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRm9y
TmF2aWdhdGlvbihXZWJQYWdlUHJveHlJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IFdlYkNvcmU6OkJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb24sIGNvbnN0IFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluJiByZXNwb25zZURvbWFpbiwgTmV0d29ya1Jlc291cmNlTG9h
ZElkZW50aWZpZXIgZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1l
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wgc3VjY2Vzcyk+JiYpOwogCiAgICAgdm9pZCBy
ZXF1ZXN0U3RvcmFnZVNwYWNlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpDbGllbnRP
cmlnaW4mLCB1aW50NjRfdCBxdW90YSwgdWludDY0X3QgY3VycmVudFNpemUsIHVpbnQ2NF90IHNw
YWNlUmVxdWlyZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gcXVvdGEpPiYmKTsKKyAgICB2b2lkIGluY3JlYXNlUXVvdGEoUEFMOjpTZXNzaW9uSUQsIGNv
bnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmll
ciwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCBjdXJyZW50VXNhZ2UsIHVpbnQ2NF90
IHNwYWNlUmVxdWVzdGVkKTsKIAogICAgIFdlYnNpdGVEYXRhU3RvcmUqIHdlYnNpdGVEYXRhU3Rv
cmVGcm9tU2Vzc2lvbklEKFBBTDo6U2Vzc2lvbklEKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3Nh
Z2VzLmluCmluZGV4IDE1NzU3ZWQ5YTI1MmIwOWRjZDExYmI1ZTZiOWM4YTEwZDA1MzRjOWEuLjhm
YTBhMjE0NzhmNzI4MGMwYjgzYjAzODJkNGFkYjVkODIyYThmZDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkubWVzc2FnZXMuaW4KQEAgLTcwLDYgKzcwLDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nl
c3NQcm94eSBMZWdhY3lSZWNlaXZlciB7CiAjZW5kaWYKIAogICAgIFJlcXVlc3RTdG9yYWdlU3Bh
Y2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdHJ1Y3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2lu
IG9yaWdpbiwgdWludDY0X3QgcXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRTaXplLCB1aW50NjRfdCBz
cGFjZVJlcXVpcmVkKSAtPiAoc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbmV3UXVvdGEpIEFzeW5j
CisgICAgSW5jcmVhc2VRdW90YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0cnVjdCBXZWJD
b3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luLCBXZWJLaXQ6OlF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRl
bnRpZmllciBpZGVudGlmaWVyLCB1aW50NjRfdCBxdW90YSwgdWludDY0X3QgY3VycmVudFNpemUs
IHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkKQogICAgIAogICAgIFJlc291cmNlTG9hZERpZFNlbmRS
ZXF1ZXN0KFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSWRlbnRpZmllciwgc3Ry
dWN0IFdlYktpdDo6UmVzb3VyY2VMb2FkSW5mbyByZXNvdXJjZUxvYWRJbmZvLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgc3RkOjpvcHRpb25hbDxJUEM6OkZvcm1EYXRhUmVmZXJl
bmNlPiBodHRwQm9keSkKICAgICBSZXNvdXJjZUxvYWREaWRQZXJmb3JtSFRUUFJlZGlyZWN0aW9u
KFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSWRlbnRpZmllciwgc3RydWN0IFdl
YktpdDo6UmVzb3VyY2VMb2FkSW5mbyByZXNvdXJjZUxvYWRJbmZvLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlIHJlc291cmNlUmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1
ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCAwOGNlY2ZlYmZlMGRlNDRiMWY1YTRiNTAxMTQwNWUx
ZmQ4MTUwOWZlLi4xMzI5MDU1NzJmNGI4YzNkMDc5NTgzNDMxNDhjMmZiNTY4M2ZlZmIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmNwcApAQCAtMTcxNiw3ICsxNzE2LDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3Jl
OjpkaXNwYXRjaE9uUXVldWUoRnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uKQogdWludDY0X3Qg
V2Vic2l0ZURhdGFTdG9yZTo6cGVyVGhpcmRQYXJ0eU9yaWdpblN0b3JhZ2VRdW90YSgpIGNvbnN0
CiB7CiAgICAgLy8gRklYTUU6IENvbnNpZGVyIHdoZXRoZXIgYWxsb3dpbmcgdG8gc2V0IGEgcGVy
VGhpcmRQYXJ0eU9yaWdpblN0b3JhZ2VRdW90YSBmcm9tIGEgV2Vic2l0ZURhdGFTdG9yZS4KLSAg
ICByZXR1cm4gV2ViQ29yZTo6U3RvcmFnZVF1b3RhTWFuYWdlcjo6ZGVmYXVsdFRoaXJkUGFydHlR
dW90YUZyb21QZXJPcmlnaW5RdW90YShwZXJPcmlnaW5TdG9yYWdlUXVvdGEoKSk7CisgICAgcmV0
dXJuIHBlck9yaWdpblN0b3JhZ2VRdW90YSgpIC8gMTA7CiB9CiAKIHZvaWQgV2Vic2l0ZURhdGFT
dG9yZTo6c2V0Q2FjaGVNb2RlbFN5bmNocm9ub3VzbHlGb3JUZXN0aW5nKENhY2hlTW9kZWwgY2Fj
aGVNb2RlbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuaAppbmRleCA2YmM2OTM2OWMzMzgzMjg2OWRlYTFmNWRhYTUwZTc5
ZmFhNmU3YmY5Li44NWVlMzFlMTM4M2Q5N2Q2NDZjNjk4YzJkZWY3ZDljMzM0YWI3NWJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZS5oCkBAIC0zNTAsNiArMzUwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBXVEY6OlN0
cmluZyBkZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCk7CiAgICAgc3Rh
dGljIFdURjo6U3RyaW5nIGRlZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgp
OwogICAgIHN0YXRpYyBib29sIGh0dHAzRW5hYmxlZCgpOworICAgIHN0YXRpYyBjb25zdGV4cHIg
dWludDY0X3QgZGVmYXVsdFBlck9yaWdpblF1b3RhKCkgeyByZXR1cm4gMTAwMCAqIE1COyB9CiAK
ICAgICB2b2lkIHJlc2V0UXVvdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2
b2lkIGNsZWFyU3RvcmFnZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCmluZGV4IDMzMGI4YjEwNWE3OWRhNjVkYzIw
N2E3ZWZlM2JjMzc2MDAwZTJmMWEuLjFhZTZkMGIxMWFkMzg0ZjY0MTZmZmQzYmY1NDgzNzI1YTRm
ZjNiMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKQEAgLTMz
LDYgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIFdlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uOjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbihJc1BlcnNpc3RlbnQgaXNQZXJz
aXN0ZW50LCBXaWxsQ29weVBhdGhzRnJvbUV4aXN0aW5nQ29uZmlndXJhdGlvbiB3aWxsQ29weVBh
dGhzKQogICAgIDogbV9pc1BlcnNpc3RlbnQoaXNQZXJzaXN0ZW50KQorICAgICwgbV9wZXJPcmln
aW5TdG9yYWdlUXVvdGEoV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFBlck9yaWdpblF1b3RhKCkp
CiB7CiAgICAgaWYgKGlzUGVyc2lzdGVudCA9PSBJc1BlcnNpc3RlbnQ6OlllcyAmJiB3aWxsQ29w
eVBhdGhzID09IFdpbGxDb3B5UGF0aHNGcm9tRXhpc3RpbmdDb25maWd1cmF0aW9uOjpObykgewog
ICAgICAgICBzZXRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KFdlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24u
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uLmgKaW5kZXggZjE3MWFkNGNlNWUxYjVjZTEzOTRlYzc4MDk1MjQxMDdmODJj
MTc0YS4uMzBhMjk5MzEwMjI3ZDJmNzI0ZjQyNTc2YjY2MTI1NDdiOTYxY2YyOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCkBAIC0yNiw3ICsyNiw2IEBACiAjcHJhZ21h
IG9uY2UKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgotI2luY2x1ZGUgPFdlYkNvcmUvU3RvcmFn
ZVF1b3RhTWFuYWdlci5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIApAQCAtMjA3LDcgKzIwNiw3IEBAIHByaXZhdGU6CiAKICAgICBTdHJp
bmcgbV9jYWNoZVN0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgU3RyaW5nIG1fZ2VuZXJhbFN0b3JhZ2VE
aXJlY3Rvcnk7Ci0gICAgdWludDY0X3QgbV9wZXJPcmlnaW5TdG9yYWdlUXVvdGEgeyBXZWJDb3Jl
OjpTdG9yYWdlUXVvdGFNYW5hZ2VyOjpkZWZhdWx0UXVvdGEoKSB9OworICAgIHVpbnQ2NF90IG1f
cGVyT3JpZ2luU3RvcmFnZVF1b3RhOwogICAgIFN0cmluZyBtX25ldHdvcmtDYWNoZURpcmVjdG9y
eTsKICAgICBTdHJpbmcgbV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5OwogICAgIFN0cmluZyBt
X2FwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUgeyAiRmlsZXMiX3MgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IGVhNjU4N2M1Nzc2MjJlMmFkNTFmM2M1MTMzZWFlOWZmNjYzYTU0NzQuLmMwYjc2MzcxNDMyNDRm
ZDNhOTZkN2JjZDI1MWEwMzU5ZWEwN2NiY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQ3Miw2ICsxNDcyLDExIEBACiAJCTkzQjI2
MTREMjI3RDE0OUUwMEI5N0E3NiAvKiBTdG9yYWdlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCMjYxNDkyMjdEMTQ3MjAwQjk3QTc2IC8q
IFN0b3JhZ2VNYW5hZ2VyLmggKi87IH07CiAJCTkzQjI2MTRFMjI3RDE0QjEwMEI5N0E3NiAvKiBM
b2NhbFN0b3JhZ2VEYXRhYmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTNCMjYxNDUyMjdEMTQ3MDAwQjk3QTc2IC8qIExvY2FsU3RvcmFnZURhdGFi
YXNlLmggKi87IH07CiAJCTkzQjI2MTRGMjI3RDE0QjEwMEI5N0E3NiAvKiBMb2NhbFN0b3JhZ2VE
YXRhYmFzZVRyYWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDkzQjI2MTQ2MjI3RDE0NzEwMEI5N0E3NiAvKiBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRy
YWNrZXIuaCAqLzsgfTsKKwkJOTNCNjMxRTUyN0FCQTYyODAwNDQzQTQ0IC8qIElEQlN0b3JhZ2VD
b25uZWN0aW9uVG9DbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDkzQjYzMUU0MjdBQkE2MjcwMDQ0M0E0NCAvKiBJREJTdG9yYWdlQ29ubmVjdGlv
blRvQ2xpZW50LmggKi87IH07CisJCTkzQjYzMUU4MjdBQkE2NUQwMDQ0M0E0NCAvKiBJREJTdG9y
YWdlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTNCNjMxRTYyN0FCQTY1QzAwNDQzQTQ0IC8qIElEQlN0b3JhZ2VNYW5hZ2VyLmggKi87IH07
CisJCTkzQjYzMUVEMjdBQkE2QjQwMDQ0M0E0NCAvKiBJREJTdG9yYWdlUmVnaXN0cnkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjYzMUVCMjdBQkE2
QjMwMDQ0M0E0NCAvKiBJREJTdG9yYWdlUmVnaXN0cnkuaCAqLzsgfTsKKwkJOTNCNjMxRjEyN0FC
QUNBOTAwNDQzQTQ0IC8qIFF1b3RhTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCNjMxRUYyN0FCQUNBOTAwNDQzQTQ0IC8qIFF1b3RhTWFu
YWdlci5oICovOyB9OworCQk5M0I2MzFGMzI3QUJBRDgwMDA0NDNBNDQgLyogUXVvdGFJbmNyZWFz
ZVJlcXVlc3RJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5M0I2MzFGMjI3QUJBRDdGMDA0NDNBNDQgLyogUXVvdGFJbmNyZWFzZVJlcXVl
c3RJZGVudGlmaWVyLmggKi87IH07CiAJCTkzQkRFQjAxMTcxREQ3QUYwMEJGRUUxQiAvKiBXS1Bh
Z2VMb2FkVHlwZXNQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5M0JERUIwMDE3MUREN0FGMDBCRkVFMUIgLyogV0tQYWdlTG9hZFR5cGVzUHJp
dmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTkzRDZCNzcyMjU0QkI1MTkwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblNlcnZlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNENkI3NkMyNTRC
ODk1ODAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uU2VydmVyLmggKi87IH07CiAJCTkzRDZC
NzczMjU0QkI4QzcwMDU4REQzQSAvKiBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDZCNzY4MjU0
QjdCQzYwMDU4REQzQSAvKiBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaCAqLzsgfTsK
QEAgLTUzNzcsNiArNTM4MiwxNSBAQAogCQk5M0IyNjE0OTIyN0QxNDcyMDBCOTdBNzYgLyogU3Rv
cmFnZU1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RvcmFnZU1h
bmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCMjYxNEEyMjdEMTQ3MjAw
Qjk3QTc2IC8qIFN0b3JhZ2VNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFN0b3JhZ2VNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOTNCMjYxNEMyMjdEMTQ3MjAwQjk3QTc2IC8qIExvY2FsU3RvcmFnZURhdGFiYXNlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExvY2FsU3RvcmFnZURhdGFiYXNl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNCNjMxRTMyN0FCQTVGNzAwNDQz
QTQ0IC8qIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTkzQjYzMUU0MjdBQkE2MjcwMDQ0M0E0NCAvKiBJREJTdG9yYWdlQ29ubmVjdGlv
blRvQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElEQlN0b3JhZ2VD
b25uZWN0aW9uVG9DbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNCNjMx
RTYyN0FCQTY1QzAwNDQzQTQ0IC8qIElEQlN0b3JhZ2VNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IElEQlN0b3JhZ2VNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTkzQjYzMUU3MjdBQkE2NUMwMDQ0M0E0NCAvKiBJREJTdG9yYWdlTWFuYWdl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJREJTdG9yYWdlTWFu
YWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzQjYzMUVBMjdBQkE2QjIw
MDQ0M0E0NCAvKiBJREJTdG9yYWdlUmVnaXN0cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSURCU3RvcmFnZVJlZ2lzdHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJOTNCNjMxRUIyN0FCQTZCMzAwNDQzQTQ0IC8qIElEQlN0b3JhZ2VSZWdpc3Ry
eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJREJTdG9yYWdlUmVnaXN0cnku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNCNjMxRUUyN0FCQUNBODAwNDQzQTQ0
IC8qIFF1b3RhTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBRdW90YU1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0I2MzFF
RjI3QUJBQ0E5MDA0NDNBNDQgLyogUXVvdGFNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFF1b3RhTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk5M0I2MzFGMjI3QUJBRDdGMDA0NDNBNDQgLyogUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlm
aWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFF1b3RhSW5jcmVhc2VSZXF1
ZXN0SWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0JBMDREQTIx
NTFBREYzMDA3RjQ1NUYgLyogV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IFdlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCQTA0REIyMTUxQURGMzAwN0Y0NTVGIC8qIFdl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOTNCQTA0REMyMTUxQURGMzAwN0Y0NTVGIC8qIFdlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC03NTkyLDYgKzc2MDYsNyBAQAogCQkxQUJGNDM3ODFBMzY4MDM1MDAzRkIw
RTYgLyogV2Vic2l0ZURhdGEgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAorCQkJCTkzQjYzMUYyMjdBQkFEN0YwMDQ0M0E0NCAvKiBRdW90YUluY3JlYXNlUmVxdWVz
dElkZW50aWZpZXIuaCAqLywKIAkJCQkxQTQ4MzJENDFBOUNERjk2MDA4QjRERkUgLyogV2Vic2l0
ZURhdGEuY3BwICovLAogCQkJCTFBNDgzMkQ1MUE5Q0RGOTYwMDhCNERGRSAvKiBXZWJzaXRlRGF0
YS5oICovLAogCQkJCTFBMjhCOENCMUM4MEVENTkwMDZGRDc0MyAvKiBXZWJzaXRlRGF0YUZldGNo
T3B0aW9uLmggKi8sCkBAIC0xMDQ2OSw2ICsxMDQ4NCwxMiBAQAogCQkJCTkzNUI1Nzk4MjZGNTEy
NzAwMDhCNDhBQyAvKiBGaWxlU3lzdGVtU3RvcmFnZUhhbmRsZVJlZ2lzdHJ5LmggKi8sCiAJCQkJ
OTMxQTA3NTEyNkYwNjMxMDAwNDQ3NENEIC8qIEZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlci5jcHAg
Ki8sCiAJCQkJOTMxQTA3NTAyNkYwNjMxMDAwNDQ3NENEIC8qIEZpbGVTeXN0ZW1TdG9yYWdlTWFu
YWdlci5oICovLAorCQkJCTkzQjYzMUUzMjdBQkE1RjcwMDQ0M0E0NCAvKiBJREJTdG9yYWdlQ29u
bmVjdGlvblRvQ2xpZW50LmNwcCAqLywKKwkJCQk5M0I2MzFFNDI3QUJBNjI3MDA0NDNBNDQgLyog
SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5oICovLAorCQkJCTkzQjYzMUU3MjdBQkE2NUMw
MDQ0M0E0NCAvKiBJREJTdG9yYWdlTWFuYWdlci5jcHAgKi8sCisJCQkJOTNCNjMxRTYyN0FCQTY1
QzAwNDQzQTQ0IC8qIElEQlN0b3JhZ2VNYW5hZ2VyLmggKi8sCisJCQkJOTNCNjMxRUEyN0FCQTZC
MjAwNDQzQTQ0IC8qIElEQlN0b3JhZ2VSZWdpc3RyeS5jcHAgKi8sCisJCQkJOTNCNjMxRUIyN0FC
QTZCMzAwNDQzQTQ0IC8qIElEQlN0b3JhZ2VSZWdpc3RyeS5oICovLAogCQkJCTkzRTc5OUM5Mjc2
MDQ5N0EwMDc0MDA4QSAvKiBMb2NhbFN0b3JhZ2VNYW5hZ2VyLmNwcCAqLywKIAkJCQk5M0U3OTlD
QjI3NjA0OTdBMDA3NDAwOEEgLyogTG9jYWxTdG9yYWdlTWFuYWdlci5oICovLAogCQkJCTkzRTc5
OUQ4Mjc2MTIxMDgwMDc0MDA4QSAvKiBNZW1vcnlTdG9yYWdlQXJlYS5jcHAgKi8sCkBAIC0xMDQ3
OCw2ICsxMDQ5OSw4IEBACiAJCQkJOTMwODVEQzcyNkUxQzZFRTAwMEVDNkE3IC8qIE5ldHdvcmtT
dG9yYWdlTWFuYWdlci5tZXNzYWdlcy5pbiAqLywKIAkJCQk5MzA4NURDNTI2RTFDNkNGMDAwRUM2
QTcgLyogT3JpZ2luU3RvcmFnZU1hbmFnZXIuY3BwICovLAogCQkJCTkzMDg1REM2MjZFMUM2Q0Yw
MDBFQzZBNyAvKiBPcmlnaW5TdG9yYWdlTWFuYWdlci5oICovLAorCQkJCTkzQjYzMUVFMjdBQkFD
QTgwMDQ0M0E0NCAvKiBRdW90YU1hbmFnZXIuY3BwICovLAorCQkJCTkzQjYzMUVGMjdBQkFDQTkw
MDQ0M0E0NCAvKiBRdW90YU1hbmFnZXIuaCAqLywKIAkJCQk5M0U3OTlDQzI3NjA0OTdCMDA3NDAw
OEEgLyogU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyLmNwcCAqLywKIAkJCQk5M0U3OTlDQTI3NjA0OTdB
MDA3NDAwOEEgLyogU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyLmggKi8sCiAJCQkJOTNFNzk5RDMyNzYx
MjEwNzAwNzQwMDhBIC8qIFNRTGl0ZVN0b3JhZ2VBcmVhLmNwcCAqLywKQEAgLTEzMDg4LDYgKzEz
MTExLDkgQEAKIAkJCQkzMTJDQzlGMjIxNUIwNkYxMDBERTQwQ0EgLyogSGlnaFBlcmZvcm1hbmNl
R1BVTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODM5QTJGMzIxRTIwNjc0NTAwMzkwNTdF
IC8qIEhpZ2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1MUMwQzk3NDFEREQ3NjAwMDAzMkNBRDMgLyogSWNvbkxvYWRpbmdEZWxlZ2F0ZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJOTNCNjMxRTUyN0FCQTYyODAwNDQzQTQ0IC8qIElEQlN0b3JhZ2VD
b25uZWN0aW9uVG9DbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTkzQjYzMUU4MjdBQkE2NUQw
MDQ0M0E0NCAvKiBJREJTdG9yYWdlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTNCNjMx
RUQyN0FCQTZCNDAwNDQzQTQ0IC8qIElEQlN0b3JhZ2VSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTFFMzUxQ0IxODBGMkNDQzAwRTUzQkU5IC8qIElEQlV0aWxpdGllcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkNDRjZCMjUxMkM5M0U3QTAwOEY5QzM1IC8qIEltYWdlT3B0aW9ucy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUExRUM2OUUxODcyMDkyMTAwQjk1MUYwIC8qIEltcG9ydGFuY2VB
c3NlcnRpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMTMzMDIsNiArMTMzMjgsOCBAQAogCQkJCUEx
RTY4ODcwMUY2RTJCQUIwMDcwMDZBNiAvKiBRdWFyYW50aW5lU1BJLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQTBDMjI3RTI0NTExMzBBMDBFRDYxNEQgLyogUXVpY2tMb29rVGh1bWJuYWlsaW5nU29m
dExpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRUU1NzI1MjQwOUYxNDIwMDIwMDVENiAvKiBR
dWlja0xvb2tUaHVtYm5haWxMb2FkZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTkzQjYzMUYzMjdB
QkFEODAwMDQ0M0E0NCAvKiBRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTkzQjYzMUYxMjdBQkFDQTkwMDQ0M0E0NCAvKiBRdW90YU1hbmFnZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTVDQjZBRTQ0MjYwOTc5OUMwMEI2RUQ1QSAvKiBSZWFzb25TUEku
aCBpbiBIZWFkZXJzICovLAogCQkJCTU3RkQzMTgyMjJCMzUxNUUwMDhEMEU4QiAvKiBSZWRpcmVj
dFNPQXV0aG9yaXphdGlvblNlc3Npb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTlCMTIyOUQyMjNG
RjJCQ0MwMDhDQTc1MSAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllci5oIGluIEhl
YWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRGF0YWJhc2Vz
L0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLmNw
cAppbmRleCAwNGMyNDEwZjM1YWRjYzA0NmM1NDA2YWYwY2NlMmZkMGU4NDFhZGIwLi5kNzkwMTY5
YmUwZjU4ZTMwMWVkYmU0NGMwNDRjNzgzOTFlZjQ3NDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9TZXJ2
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERC
L1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAKQEAgLTI5LDkgKzI5LDkgQEAKICNpbmNsdWRl
ICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgorI2lu
Y2x1ZGUgIk5ldHdvcmtTdG9yYWdlTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViSURCUmVzdWx0LmgiCi0jaW5jbHVkZSAi
V2ViSURCU2VydmVyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0lE
QkN1cnNvckluZm8uaD4KQEAgLTgyLDEzMiArODIsMTMyIEBAIElEQkNsaWVudDo6SURCQ29ubmVj
dGlvblRvU2VydmVyJiBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmNvcmVDb25uZWN0aW9uVG9T
ZXJ2CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpkZWxldGVEYXRhYmFzZShjb25z
dCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2Vi
SURCU2VydmVyOjpEZWxldGVEYXRhYmFzZShyZXF1ZXN0RGF0YSkpOworICAgIHNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6RGVsZXRlRGF0YWJhc2UocmVxdWVzdERhdGEpKTsK
IH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6Om9wZW5EYXRhYmFzZShjb25zdCBJ
REJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURC
U2VydmVyOjpPcGVuRGF0YWJhc2UocmVxdWVzdERhdGEpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrU3RvcmFnZU1hbmFnZXI6Ok9wZW5EYXRhYmFzZShyZXF1ZXN0RGF0YSkpOwogfQogCiB2
b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6YWJvcnRUcmFuc2FjdGlvbihjb25zdCBJREJS
ZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcikKIHsKLSAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OkFib3J0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZGVudGlm
aWVyKSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpBYm9ydFRy
YW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllcikpOwogfQogCiB2b2lkIFdlYklEQkNvbm5l
Y3Rpb25Ub1NlcnZlcjo6Y29tbWl0VHJhbnNhY3Rpb24oY29uc3QgSURCUmVzb3VyY2VJZGVudGlm
aWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IHBlbmRpbmdSZXF1ZXN0Q291bnQp
CiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyOjpDb21taXRUcmFuc2FjdGlvbih0
cmFuc2FjdGlvbklkZW50aWZpZXIsIHBlbmRpbmdSZXF1ZXN0Q291bnQpKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkNvbW1pdFRyYW5zYWN0aW9uKHRyYW5zYWN0
aW9uSWRlbnRpZmllciwgcGVuZGluZ1JlcXVlc3RDb3VudCkpOwogfQogCiB2b2lkIFdlYklEQkNv
bm5lY3Rpb25Ub1NlcnZlcjo6ZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rp
b24odWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3Vy
Y2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpCiB7Ci0gICAgc2VuZChNZXNzYWdl
czo6V2ViSURCU2VydmVyOjpEaWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlv
bihkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCB0cmFuc2FjdGlvbklkZW50aWZpZXIpKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkRpZEZpbmlzaEhhbmRs
aW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIs
IHRyYW5zYWN0aW9uSWRlbnRpZmllcikpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1Nl
cnZlcjo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRh
LCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mIGluZm8pCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6
V2ViSURCU2VydmVyOjpDcmVhdGVPYmplY3RTdG9yZShyZXF1ZXN0RGF0YSwgaW5mbykpOworICAg
IHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Q3JlYXRlT2JqZWN0U3RvcmUo
cmVxdWVzdERhdGEsIGluZm8pKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6
OmRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29u
c3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURC
U2VydmVyOjpEZWxldGVPYmplY3RTdG9yZShyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVOYW1lKSk7
CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpEZWxldGVPYmplY3RT
dG9yZShyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVOYW1lKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29u
bmVjdGlvblRvU2VydmVyOjpyZW5hbWVPYmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0YSYg
cmVxdWVzdERhdGEsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiBuZXdOYW1lKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6UmVuYW1lT2Jq
ZWN0U3RvcmUocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmllciwgbmV3TmFtZSkpOwor
ICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6UmVuYW1lT2JqZWN0U3Rv
cmUocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmllciwgbmV3TmFtZSkpOwogfQogCiB2
b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Y2xlYXJPYmplY3RTdG9yZShjb25zdCBJREJS
ZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllcikK
IHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OkNsZWFyT2JqZWN0U3RvcmUocmVx
dWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmllcikpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5l
dHdvcmtTdG9yYWdlTWFuYWdlcjo6Q2xlYXJPYmplY3RTdG9yZShyZXF1ZXN0RGF0YSwgb2JqZWN0
U3RvcmVJZGVudGlmaWVyKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpj
cmVhdGVJbmRleChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQklu
ZGV4SW5mbyYgaW5mbykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OkNyZWF0
ZUluZGV4KHJlcXVlc3REYXRhLCBpbmZvKSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0
b3JhZ2VNYW5hZ2VyOjpDcmVhdGVJbmRleChyZXF1ZXN0RGF0YSwgaW5mbykpOwogfQogCiB2b2lk
IFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGVsZXRlSW5kZXgoY29uc3QgSURCUmVxdWVzdERh
dGEmIHJlcXVlc3REYXRhLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgaW5kZXhOYW1lKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6RGVs
ZXRlSW5kZXgocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhOYW1lKSk7
CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpEZWxldGVJbmRleChy
ZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleE5hbWUpKTsKIH0KIAogdm9p
ZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OnJlbmFtZUluZGV4KGNvbnN0IElEQlJlcXVlc3RE
YXRhJiByZXF1ZXN0RGF0YSwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50NjRf
dCBpbmRleElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSkKIHsKLSAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OlJlbmFtZUluZGV4KHJlcXVlc3REYXRhLCBvYmplY3RTdG9y
ZUlkZW50aWZpZXIsIGluZGV4SWRlbnRpZmllciwgbmV3TmFtZSkpOworICAgIHNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6UmVuYW1lSW5kZXgocmVxdWVzdERhdGEsIG9iamVj
dFN0b3JlSWRlbnRpZmllciwgaW5kZXhJZGVudGlmaWVyLCBuZXdOYW1lKSk7CiB9CiAKIHZvaWQg
V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpwdXRPckFkZChjb25zdCBJREJSZXF1ZXN0RGF0YSYg
cmVxdWVzdERhdGEsIGNvbnN0IElEQktleURhdGEmIGtleURhdGEsIGNvbnN0IElEQlZhbHVlJiB2
YWx1ZSwgY29uc3QgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUgbW9kZSkKIHsK
LSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OlB1dE9yQWRkKHJlcXVlc3REYXRhLCBr
ZXlEYXRhLCB2YWx1ZSwgbW9kZSkpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdl
TWFuYWdlcjo6UHV0T3JBZGQocmVxdWVzdERhdGEsIGtleURhdGEsIHZhbHVlLCBtb2RlKSk7CiB9
CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpnZXRSZWNvcmQoY29uc3QgSURCUmVx
dWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJHZXRSZWNvcmREYXRhJiBnZXRSZWNvcmRE
YXRhKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6R2V0UmVjb3JkKHJlcXVl
c3REYXRhLCBnZXRSZWNvcmREYXRhKSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyOjpHZXRSZWNvcmQocmVxdWVzdERhdGEsIGdldFJlY29yZERhdGEpKTsKIH0KIAog
dm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmdldEFsbFJlY29yZHMoY29uc3QgSURCUmVx
dWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJHZXRBbGxSZWNvcmRzRGF0YSYgZ2V0QWxs
UmVjb3Jkc0RhdGEpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyOjpHZXRBbGxS
ZWNvcmRzKHJlcXVlc3REYXRhLCBnZXRBbGxSZWNvcmRzRGF0YSkpOworICAgIHNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6R2V0QWxsUmVjb3JkcyhyZXF1ZXN0RGF0YSwgZ2V0
QWxsUmVjb3Jkc0RhdGEpKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6Omdl
dENvdW50KGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5UmFu
Z2VEYXRhJiByYW5nZSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OkdldENv
dW50KHJlcXVlc3REYXRhLCByYW5nZSkpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9y
YWdlTWFuYWdlcjo6R2V0Q291bnQocmVxdWVzdERhdGEsIHJhbmdlKSk7CiB9CiAKIHZvaWQgV2Vi
SURCQ29ubmVjdGlvblRvU2VydmVyOjpkZWxldGVSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEm
IHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIHJhbmdlKQogewotICAgIHNlbmQo
TWVzc2FnZXM6OldlYklEQlNlcnZlcjo6RGVsZXRlUmVjb3JkKHJlcXVlc3REYXRhLCByYW5nZSkp
OworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6RGVsZXRlUmVjb3Jk
KHJlcXVlc3REYXRhLCByYW5nZSkpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZl
cjo6b3BlbkN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElE
QkN1cnNvckluZm8mIGluZm8pCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyOjpP
cGVuQ3Vyc29yKHJlcXVlc3REYXRhLCBpbmZvKSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29y
a1N0b3JhZ2VNYW5hZ2VyOjpPcGVuQ3Vyc29yKHJlcXVlc3REYXRhLCBpbmZvKSk7CiB9CiAKIHZv
aWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjppdGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJlcXVl
c3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCSXRlcmF0ZUN1cnNvckRhdGEmIGRhdGEpCiB7
Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyOjpJdGVyYXRlQ3Vyc29yKHJlcXVlc3RE
YXRhLCBkYXRhKSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpJ
dGVyYXRlQ3Vyc29yKHJlcXVlc3REYXRhLCBkYXRhKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVj
dGlvblRvU2VydmVyOjplc3RhYmxpc2hUcmFuc2FjdGlvbih1aW50NjRfdCBkYXRhYmFzZUNvbm5l
Y3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mIGluZm8pCiB7Ci0gICAg
c2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyOjpFc3RhYmxpc2hUcmFuc2FjdGlvbihkYXRhYmFz
ZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBpbmZvKSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29y
a1N0b3JhZ2VNYW5hZ2VyOjpFc3RhYmxpc2hUcmFuc2FjdGlvbihkYXRhYmFzZUNvbm5lY3Rpb25J
ZGVudGlmaWVyLCBpbmZvKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpk
YXRhYmFzZUNvbm5lY3Rpb25QZW5kaW5nQ2xvc2UodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9u
SWRlbnRpZmllcikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OkRhdGFiYXNl
Q29ubmVjdGlvblBlbmRpbmdDbG9zZShkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKSk7Cisg
ICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpEYXRhYmFzZUNvbm5lY3Rp
b25QZW5kaW5nQ2xvc2UoZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcikpOwogfQogCiB2b2lk
IFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGF0YWJhc2VDb25uZWN0aW9uQ2xvc2VkKHVpbnQ2
NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6
V2ViSURCU2VydmVyOjpEYXRhYmFzZUNvbm5lY3Rpb25DbG9zZWQoZGF0YWJhc2VDb25uZWN0aW9u
SWRlbnRpZmllcikpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6
RGF0YWJhc2VDb25uZWN0aW9uQ2xvc2VkKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpKTsK
IH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmFib3J0T3BlbkFuZFVwZ3JhZGVO
ZWVkZWQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCUmVz
b3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpCiB7Ci0gICAgc2VuZChNZXNz
YWdlczo6V2ViSURCU2VydmVyOjpBYm9ydE9wZW5BbmRVcGdyYWRlTmVlZGVkKGRhdGFiYXNlQ29u
bmVjdGlvbklkZW50aWZpZXIsIHRyYW5zYWN0aW9uSWRlbnRpZmllcikpOworICAgIHNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6QWJvcnRPcGVuQW5kVXBncmFkZU5lZWRlZChk
YXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCB0cmFuc2FjdGlvbklkZW50aWZpZXIpKTsKIH0K
IAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRpZEZpcmVWZXJzaW9uQ2hhbmdlRXZl
bnQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3Vy
Y2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgSW5kZXhlZERCOjpDb25uZWN0
aW9uQ2xvc2VkT25CZWhhbGZPZlNlcnZlciBjb25uZWN0aW9uQ2xvc2VkKQogewotICAgIHNlbmQo
TWVzc2FnZXM6OldlYklEQlNlcnZlcjo6RGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudChkYXRhYmFz
ZUNvbm5lY3Rpb25JZGVudGlmaWVyLCByZXF1ZXN0SWRlbnRpZmllciwgY29ubmVjdGlvbkNsb3Nl
ZCkpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6RGlkRmlyZVZl
cnNpb25DaGFuZ2VFdmVudChkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCByZXF1ZXN0SWRl
bnRpZmllciwgY29ubmVjdGlvbkNsb3NlZCkpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25U
b1NlcnZlcjo6b3BlbkRCUmVxdWVzdENhbmNlbGxlZChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVx
dWVzdERhdGEpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyOjpPcGVuREJSZXF1
ZXN0Q2FuY2VsbGVkKHJlcXVlc3REYXRhKSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0
b3JhZ2VNYW5hZ2VyOjpPcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKHJlcXVlc3REYXRhKSk7CiB9CiAK
IHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpnZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVy
c2lvbnMoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgY29u
c3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4pCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2Vy
dmVyOjpHZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMocmVxdWVzdElkZW50aWZpZXIsIG9y
aWdpbikpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6R2V0QWxs
RGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKHJlcXVlc3RJZGVudGlmaWVyLCBvcmlnaW4pKTsKIH0K
IAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRpZERlbGV0ZURhdGFiYXNlKGNvbnN0
IElEQlJlc3VsdERhdGEmIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
U3RvcmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9y
YWdlL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAKaW5kZXggZWEyZTJhNzhmODhmZmRkMTAxYTNhMTM3
ZjBkNWExMGE1NmUxMGZiMi4uMGNhZGI1MDQyYmExNjEwNzdmOTQ0OWE5NzNkY2Y5ODMyZDM3MDJh
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL0luUHJvY2Vzc0lEQlNl
cnZlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL0luUHJvY2Vzc0lEQlNl
cnZlci5jcHAKQEAgLTQyLDYgKzQyLDggQEAKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
K3N0YXRpYyBjb25zdGV4cHIgdWludDY0X3QgZGVmYXVsdFBlck9yaWdpblF1b3RhID0gIDEwMDAg
KiBNQjsKKwogUmVmPEluUHJvY2Vzc0lEQlNlcnZlcj4gSW5Qcm9jZXNzSURCU2VydmVyOjpjcmVh
dGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAgIEFTU0VSVChzZXNzaW9uSUQuaXNF
cGhlbWVyYWwoKSk7CkBAIC03Myw3ICs3NSw3IEBAIEluUHJvY2Vzc0lEQlNlcnZlcjo6fkluUHJv
Y2Vzc0lEQlNlcnZlcigpCiBTdG9yYWdlUXVvdGFNYW5hZ2VyKiBJblByb2Nlc3NJREJTZXJ2ZXI6
OnF1b3RhTWFuYWdlcihjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbikKIHsKICAgICByZXR1cm4g
bV9xdW90YU1hbmFnZXJzLmVuc3VyZShvcmlnaW4sIFtdIHsKLSAgICAgICAgcmV0dXJuIFN0b3Jh
Z2VRdW90YU1hbmFnZXI6OmNyZWF0ZShTdG9yYWdlUXVvdGFNYW5hZ2VyOjpkZWZhdWx0UXVvdGEo
KSwgW10geworICAgICAgICByZXR1cm4gU3RvcmFnZVF1b3RhTWFuYWdlcjo6Y3JlYXRlKGRlZmF1
bHRQZXJPcmlnaW5RdW90YSwgW10gewogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0s
IFtdKHVpbnQ2NF90IHF1b3RhLCB1aW50NjRfdCBjdXJyZW50U3BhY2UsIHVpbnQ2NF90IHNwYWNl
SW5jcmVhc2UsIGF1dG8gY2FsbGJhY2spIHsKICAgICAgICAgICAgIGNhbGxiYWNrKHF1b3RhICsg
Y3VycmVudFNwYWNlICsgc3BhY2VJbmNyZWFzZSk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VM
b2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOTg5MmY0N2Y0NWYwZmY3OThjODdlYzAzNTNlOWMz
ZjNlMjBmMTVlYy4uNjA2ZWQ3Yzc5YmI1YmMzNTdmN2UyNGMzYjA5YjdjMzliOGEyZjQxMiAxMDA2
NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE5IEBACisyMDIyLTAyLTA3ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisg
ICAgICAgIE1hbmFnZSBJbmRleGVkREIgc3RvcmFnZSBieSBvcmlnaW4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDkyNQorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vODc1NTUwMTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQkZpbGVO
YW1lLm1tOgorICAgICAgICAocnVuVGVzdCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9JbmRleGVkREJQZXJzaXN0ZW5jZS5tbToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlN1c3BlbmRJbW1pbmVudGx5Lm1tOgor
ICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9TdG9yZUJsb2JUaGVuRGVsZXRlLm1tOgorICAgICAgICAoVEVTVCk6CisKIDIwMjItMDItMDcg
IEJlbiBOaGFtICA8bmhhbUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIFB1c2hTZXJ2aWNlCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWRE
QkZpbGVOYW1lLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRl
eGVkREJGaWxlTmFtZS5tbQppbmRleCBhNmIwMTI5YmMxMDU5YzRmOWMxMThkMWZkN2VmZDIxMjNl
YWMyYzdhLi40MTAyMjI0ZTQ1Mjc0ZDM2Mzc5ZTRiYjAwMmEwZmVlODk4MzJmNWJjIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQkZpbGVO
YW1lLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhl
ZERCRmlsZU5hbWUubW0KQEAgLTcxLDIwICs3MSwyMyBAQCBzdGF0aWMgdm9pZCBydW5UZXN0KCkK
ICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IHN0cmluZzIgPSAoTlNTdHJpbmcgKilbbGFzdFNjcmlw
dE1lc3NhZ2UgYm9keV07CiAgICAgRVhQRUNUX1dLX1NUUkVRKEAiU3VjY2VzcyIsIHN0cmluZzIu
Z2V0KCkpOwogCi0gICAgLy8gRm9yIGRhdGFiYXNlIHRoYXQgaXMgbm90IG9wZW5lZCBhZnRlciB1
cGdyYWRlLCBpdHMgZmlsZSBzaG91bGQgYmUgaW4gdjAuCisgICAgLy8gQWxsIGRhdGFiYXNlcyBv
ZiBhbiBvcmlnaW4gYXJlIG1pZ3JhdGVkIHRvIG5ldyB2ZXJzaW9uIGRpcmVjdG9yeSB3aGVuIHRo
ZSBvcmlnaW4gaXMgYWNjZXNzZWQuCiAgICAgYXV0byBkZWZhdWx0RmlsZU1hbmFnZXIgPSBbTlNG
aWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl07CiAgICAgTlNTdHJpbmcgKmV4aXN0aW5nRGF0YWJh
c2VOYW1lID0gQCJJbmRleGVkREJUZXN0IjsKICAgICBOU1N0cmluZyAqY3JlYXRlZERhdGFiYXNl
TmFtZSA9IEAiSW5kZXhlZERCT3RoZXIiOwogICAgIE5TU3RyaW5nICp1bnVzZWREYXRhYmFzZU5h
bWUgPSBAIkluZGV4ZWREQlVudXNlZCI7CiAgICAgTlNTdHJpbmcgKmV4aXN0aW5nRGF0YmFzZUhh
c2ggPSBXZWJDb3JlOjpTUUxpdGVGaWxlU3lzdGVtOjpjb21wdXRlSGFzaEZvckZpbGVOYW1lKGV4
aXN0aW5nRGF0YWJhc2VOYW1lKTsKICAgICBOU1N0cmluZyAqY3JlYXRlZERhdGFiYXNlSGFzaCA9
IFdlYkNvcmU6OlNRTGl0ZUZpbGVTeXN0ZW06OmNvbXB1dGVIYXNoRm9yRmlsZU5hbWUoY3JlYXRl
ZERhdGFiYXNlTmFtZSk7CisgICAgTlNTdHJpbmcgKnVudXNlZERhdGFiYXNlSGFzaCA9IFdlYkNv
cmU6OlNRTGl0ZUZpbGVTeXN0ZW06OmNvbXB1dGVIYXNoRm9yRmlsZU5hbWUoY3JlYXRlZERhdGFi
YXNlTmFtZSk7CiAgICAgTlNVUkwgKmlkYlJvb3RVUkwgPSBbW1dLV2Vic2l0ZURhdGFTdG9yZSBk
ZWZhdWx0RGF0YVN0b3JlXSBfaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnldOwogICAgIE5TVVJM
ICpvbGRWZXJzaW9uRGlyZWN0b3J5VVJMID0gW2lkYlJvb3RVUkwgVVJMQnlBcHBlbmRpbmdQYXRo
Q29tcG9uZW50OkAidjAiXTsKICAgICBOU1VSTCAqbmV3VmVyc2lvbkRpcmVjdG9yeVVSTCA9IFtp
ZGJSb290VVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAInYxIl07CiAgICAgTlNVUkwg
Km9sZFZlcnNpb25PcmlnaW5EaXJlY3RvcnlVUkwgPSBbb2xkVmVyc2lvbkRpcmVjdG9yeVVSTCBV
UkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6IEAiZmlsZV9fMCJdOwogICAgIE5TVVJMICpuZXdW
ZXJzaW9uT3JpZ2luRGlyZWN0b3J5VVJMID0gW25ld1ZlcnNpb25EaXJlY3RvcnlVUkwgVVJMQnlB
cHBlbmRpbmdQYXRoQ29tcG9uZW50OiBAImZpbGVfXzAiXTsKICAgICBOU1VSTCAqb2xkVmVyc2lv
blVudXNlZERhdGFiYXNlRGlyZWN0b3J5VVJMID0gW29sZFZlcnNpb25PcmlnaW5EaXJlY3RvcnlV
UkwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OnVudXNlZERhdGFiYXNlTmFtZV07Ci0gICAg
RVhQRUNUX1RSVUUoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQ
YXRoOm9sZFZlcnNpb25VbnVzZWREYXRhYmFzZURpcmVjdG9yeVVSTC5wYXRoXSk7CisgICAgTlNV
UkwgKm5ld1ZlcnNpb25VbnVzZWREYXRhYmFzZURpcmVjdG9yeVVSTCA9IFtuZXdWZXJzaW9uT3Jp
Z2luRGlyZWN0b3J5VVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDp1bnVzZWREYXRhYmFz
ZUhhc2hdOworICAgIEVYUEVDVF9GQUxTRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJd
IGZpbGVFeGlzdHNBdFBhdGg6b2xkVmVyc2lvblVudXNlZERhdGFiYXNlRGlyZWN0b3J5VVJMLnBh
dGhdKTsKKyAgICBFWFBFQ1RfVFJVRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZp
bGVFeGlzdHNBdFBhdGg6bmV3VmVyc2lvblVudXNlZERhdGFiYXNlRGlyZWN0b3J5VVJMLnBhdGhd
KTsKICAgICAKICAgICAvLyBGb3IgZGF0YWJhc2UgdGhhdCBpcyBvcGVuZWQgYWZ0ZXIgdXBncmFk
ZSwgaXRzIGZpbGUgc2hvdWxkIG9ubHkgYmUgaW4gdjEuCiAgICAgTlNVUkwgKm9sZFZlcnNpb25F
eGlzdGluZ0RhdGFiYXNlRGlyZWN0b3J5VVJMID0gW29sZFZlcnNpb25PcmlnaW5EaXJlY3RvcnlV
UkwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OiBleGlzdGluZ0RhdGFiYXNlTmFtZV07CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWRE
QlBlcnNpc3RlbmNlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9J
bmRleGVkREJQZXJzaXN0ZW5jZS5tbQppbmRleCAyNzE4YzRhYjM2OWE4MTgyZGEwZTExOGM0NTE2
NjZhZTlkMWUyYzc0Li40ZjBhOGVjOTQ0NTQ4Y2E2Yzc4NzAxNWM2YjZkOTUwODU4ODM4OGIzIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWRE
QlBlcnNpc3RlbmNlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvSW5kZXhlZERCUGVyc2lzdGVuY2UubW0KQEAgLTMwNSwxMCArMzA1LDE0IEBAIFRFU1QoSW5k
ZXhlZERCLCBJbmRleGVkREJUaGlyZFBhcnR5RGF0YVJlbW92YWwpCiAgICAgRVhQRUNUX1dLX1NU
UkVRKCBAImRhdGFiYXNlIGlzIGNyZWF0ZWQgLSBwdXQgaXRlbSBzdWNjZXNzIiwgKE5TU3RyaW5n
ICopW2xhc3RTY3JpcHRNZXNzYWdlIGJvZHldKTsKIAogICAgIHJlYWR5VG9Db250aW51ZSA9IGZh
bHNlOwotICAgIFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdIGZldGNoRGF0
YVJlY29yZHNPZlR5cGVzOndlYnNpdGVEYXRhVHlwZXMuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6
XihOU0FycmF5PFdLV2Vic2l0ZURhdGFSZWNvcmQgKj4gKmRhdGFSZWNvcmRzKSB7Ci0gICAgICAg
IEVYUEVDVF9FUSgxdSwgZGF0YVJlY29yZHMuY291bnQpOwotICAgICAgICBFWFBFQ1RfV0tfU1RS
RVEoImlmcmFtZSIsIFtbZGF0YVJlY29yZHMgZmlyc3RPYmplY3RdIGRpc3BsYXlOYW1lXSk7Ci0g
ICAgICAgIFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdIHJlbW92ZURhdGFP
ZlR5cGVzOndlYnNpdGVEYXRhVHlwZXMuZ2V0KCkgZm9yRGF0YVJlY29yZHM6ZGF0YVJlY29yZHMg
Y29tcGxldGlvbkhhbmRsZXI6XigpIHsKKyAgICBbW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0
RGF0YVN0b3JlXSBmZXRjaERhdGFSZWNvcmRzT2ZUeXBlczp3ZWJzaXRlRGF0YVR5cGVzLmdldCgp
IGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxXS1dlYnNpdGVEYXRhUmVjb3JkICo+ICpyZWNv
cmRzKSB7CisgICAgICAgIEVYUEVDVF9FUSgydSwgcmVjb3Jkcy5jb3VudCk7CisgICAgICAgIE5T
U29ydERlc2NyaXB0b3IgKnJlY29yZERlc2NyaXB0b3IgPSBbTlNTb3J0RGVzY3JpcHRvciBzb3J0
RGVzY3JpcHRvcldpdGhLZXk6QCJkaXNwbGF5TmFtZSIgYXNjZW5kaW5nOllFU107CisgICAgICAg
IE5TQXJyYXkgKnNvcnREZXNjcmlwdG9ycyA9IEBbcmVjb3JkRGVzY3JpcHRvcl07CisgICAgICAg
IE5TQXJyYXkgKnNvcnRlZFJlY29yZHMgPSBbcmVjb3JkcyBzb3J0ZWRBcnJheVVzaW5nRGVzY3Jp
cHRvcnM6c29ydERlc2NyaXB0b3JzXTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKCJpZnJhbWUi
LCBbW3NvcnRlZFJlY29yZHMgb2JqZWN0QXRJbmRleDowXSBkaXNwbGF5TmFtZV0pOworICAgICAg
ICBFWFBFQ1RfV0tfU1RSRVEoIndlYmtpdC5vcmciLCBbW3NvcnRlZFJlY29yZHMgb2JqZWN0QXRJ
bmRleDoxXSBkaXNwbGF5TmFtZV0pOworICAgICAgICBbW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZh
dWx0RGF0YVN0b3JlXSByZW1vdmVEYXRhT2ZUeXBlczp3ZWJzaXRlRGF0YVR5cGVzLmdldCgpIGZv
ckRhdGFSZWNvcmRzOnJlY29yZHMgY29tcGxldGlvbkhhbmRsZXI6XigpIHsKICAgICAgICAgICAg
IHJlYWR5VG9Db250aW51ZSA9IHRydWU7CiAgICAgICAgIH1dOwogICAgIH1dOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJTdXNwZW5k
SW1taW5lbnRseS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5k
ZXhlZERCU3VzcGVuZEltbWluZW50bHkubW0KaW5kZXggZGM2MzQzZTNlZGRmZTQ4ZGJmZWVlNGY3
OTk5MmZmY2I1ZjYwZTE2Yi4uYmY5MGY1N2NlMDk3NWU5NGU2MzcwNDdhNWQwZTlkZmQxOGZiZDYy
NCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRl
eGVkREJTdXNwZW5kSW1taW5lbnRseS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0luZGV4ZWREQlN1c3BlbmRJbW1pbmVudGx5Lm1tCkBAIC03Myw2ICs3Mywx
MiBAQCBzdGF0aWMgdm9pZCBrZWVwTmV0d29ya1Byb2Nlc3NBY3RpdmUoKQogCiBURVNUKEluZGV4
ZWREQiwgSW5kZXhlZERCU3VzcGVuZEltbWluZW50bHkpCiB7CisgICAgcmVhZHlUb0NvbnRpbnVl
ID0gZmFsc2U7CisgICAgW1tXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gcmVt
b3ZlRGF0YU9mVHlwZXM6W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxXZWJzaXRlRGF0YVR5cGVzXSBt
b2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7
CisgICAgICAgIHJlYWR5VG9Db250aW51ZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZyZWFkeVRvQ29udGludWUpOworCiAgICAgYXV0byBoYW5kbGVyID0g
YWRvcHROUyhbW0luZGV4ZWREQlN1c3BlbmRJbW1pbmVudGx5TWVzc2FnZUhhbmRsZXIgYWxsb2Nd
IGluaXRdKTsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVu
dENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgbmFtZTpA
InRlc3RIYW5kbGVyIl07CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1N0b3JlQmxvYlRoZW5EZWxldGUubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1N0b3JlQmxvYlRoZW5EZWxldGUubW0KaW5kZXggYWFiZmZmODdiYzY0
YjM5NTJiMjQxNDUyMTVlZTAzODI4NmI3Yzg5MS4uOGU4NWE0MGE1ZTgzYmEwMzQzMjFlN2U3OTY5
ZDgzNTVlMzJjMjQ2NSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9TdG9yZUJsb2JUaGVuRGVsZXRlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvU3RvcmVCbG9iVGhlbkRlbGV0ZS5tbQpAQCAtODcsNyArODcsNyBA
QCBURVNUKEluZGV4ZWREQiwgU3RvcmVCbG9iVGhlblJlbW92ZURhdGEpCiAgICAgW1tOU0ZpbGVN
YW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjb3B5SXRlbUF0UGF0aDpkYXRhYmFzZUZpbGVQYXRoIHRv
UGF0aDpmYWtlU2htUGF0aCBlcnJvcjpuaWxdOwogICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0
TWFuYWdlcl0gY29weUl0ZW1BdFBhdGg6ZGF0YWJhc2VGaWxlUGF0aCB0b1BhdGg6ZmFrZVdhbFBh
dGggZXJyb3I6bmlsXTsKIAotICAgIC8vIE1ha2Ugc29tZSBvdGhlciAuYmxvYiBmaWxlcyBpbiB0
aGUgZGF0YWJhc2UgZGlyZWN0b3J5IHRvIGxhdGVyIHZhbGlkYXRlIHRoYXQgb25seSBhcHByb3By
aWF0ZSBmaWxlcyBhcmUgZGVsZXRlZC4KKyAgICAvLyBNYWtlIHNvbWUgb3RoZXIgLmJsb2IgZmls
ZXMgaW4gdGhlIGRhdGFiYXNlIGRpcmVjdG9yeSB0byBsYXRlciB2YWxpZGF0ZSBhbGwgYmxvYiBm
aWxlcyBpbiB0aGUgZGlyZWN0b3J5IGFyZSBkZWxldGVkLgogICAgIE5TU3RyaW5nICpvdGhlckJs
b2IxID0gW2RhdGFiYXNlRGlyZWN0b3J5IHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpA
IjcxODIuYmxvYiJdOwogICAgIE5TU3RyaW5nICpvdGhlckJsb2IyID0gW2RhdGFiYXNlRGlyZWN0
b3J5IHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIjFhLmJsb2IiXTsKICAgICBOU1N0
cmluZyAqb3RoZXJCbG9iMyA9IFtkYXRhYmFzZURpcmVjdG9yeSBzdHJpbmdCeUFwcGVuZGluZ1Bh
dGhDb21wb25lbnQ6QCJhMS5ibG9iIl07CkBAIC0xMDIsMTMgKzEwMiwxMiBAQCBURVNUKEluZGV4
ZWREQiwgU3RvcmVCbG9iVGhlblJlbW92ZURhdGEpCiAgICAgICAgIEVYUEVDVF9GQUxTRShbW05T
RmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6YmxvYkZpbGVQYXRo
XSk7CiAgICAgICAgIEVYUEVDVF9GQUxTRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJd
IGZpbGVFeGlzdHNBdFBhdGg6ZGF0YWJhc2VGaWxlUGF0aF0pOwogCi0gICAgICAgIC8vIE1ha2Ug
c3VyZSB0aGUgZmFrZSBibG9iIGZpbGUgd2l0aCBhIHZhbGlkIGJsb2IgZmlsZSBuYW1lIGlzIGdv
bmUuCisgICAgICAgIC8vIE1ha2Ugc3VyZSBhbGwgZmFrZSBibG9iIGZpbGUgYXJlIGdvbmUuCiAg
ICAgICAgIEVYUEVDVF9GQUxTRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVF
eGlzdHNBdFBhdGg6b3RoZXJCbG9iMV0pOwogCi0gICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgZmFr
ZSBibG9iIGZpbGVzIHdpdGggaW52YWxpZCBibG9iIGZpbGUgbmFtZXMgYXJlIHN0aWxsIHRoZXJl
LgotICAgICAgICBFWFBFQ1RfVFJVRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZp
bGVFeGlzdHNBdFBhdGg6b3RoZXJCbG9iMl0pOwotICAgICAgICBFWFBFQ1RfVFJVRShbW05TRmls
ZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6b3RoZXJCbG9iM10pOwot
ICAgICAgICBFWFBFQ1RfVFJVRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVF
eGlzdHNBdFBhdGg6b3RoZXJCbG9iNF0pOworICAgICAgICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVN
YW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOm90aGVyQmxvYjJdKTsKKyAg
ICAgICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4
aXN0c0F0UGF0aDpvdGhlckJsb2IzXSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShbW05TRmlsZU1h
bmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6b3RoZXJCbG9iNF0pOwogCiAg
ICAgICAgIC8vIE1ha2Ugc3VyZSBldmVyeXRoaW5nIHJlbGF0ZWQgdG8gdGhlIGZha2UgZGF0YWJh
c2UgaXMgZ29uZS4KICAgICAgICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0
TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpmYWtlU2htUGF0aF0pOwo=
</data>
<flag name="commit-queue"
          id="477968"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451278</attachid>
            <date>2022-02-08 11:00:48 -0800</date>
            <delta_ts>2022-02-08 16:01:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234925-20220208110047.patch</filename>
            <type>text/plain</type>
            <size>285038</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5Mzg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2E0ODRiZTkzODBhOWNm
ZDhkODU4ZGFmZmI0NzZjYTAwZGQ4YmMwYy4uNTdiODk5MTE4MDY2YTY4YWM4YmYzMjM1NDJlZTU5
NWFkMzBhZjA0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk1IEBACisyMDIyLTAyLTA4ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIE1hbmFnZSBJbmRleGVkREIg
c3RvcmFnZSBieSBvcmlnaW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzNDkyNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODc1NTUwMTQ+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAgQm90aCBXZWJLaXQgYW5k
IFdlYktpdExlZ2FjeSB1c2VkIElEQlNlcnZlciB0byBtYW5hZ2UgVW5pcXVlSURCRGF0YWJhc2Vz
LCBhbmQgVW5pcXVlSURCRGF0YWJhc2UgcG9pbnRlZCB0byAKKyAgICAgICAgSURCU2VydmVyLiBO
b3cgdGhhdCBXZWJLaXQgdXNlcyBXZWJLaXQ6OklEQlN0b3JhZ2VNYW5hZ2VyIHRvIG1hbmFnZSBV
bmlxdWVJREJEYXRhYmFzZXMuIFdlIHVudGllIHRoZSAKKyAgICAgICAga25vdCBiZXR3ZWVuIElE
QlNlcnZlciBhbmQgVW5pcXVlSURCRGF0YWJhc2UgYnkgYWRkaW5nIGEgbmV3IGFic3RyYWN0IGNs
YXNzIFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlciBhbmQgbWFrZQorICAgICAgICBVbmlxdWVJREJE
YXRhYmFzZSBwb2ludCB0byBVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuCisKKyAgICAgICAgQWxz
bywgYXMgcXVvdGEgY2hlY2sgaXMgbm8gbG9uZ2VyIGFzeW5jIGFjY29yZGluZyB0byBjaGFuZ2Vz
IGluIFdlYktpdCwgd2UgbmVlZCB0byB1cGRhdGUgb3BlcmF0aW9ucyBpbgorICAgICAgICBVbmlx
dWVJREJEYXRhYmFzZSB0byBhZG9wdCB0aGUgY2hhbmdlLgorCisgICAgICAgIENvdmVyZWQgYnkg
ZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnQuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6SURCU2VydmVyOjpyZWdpc3RlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OnVucmVnaXN0ZXJDb25uZWN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpjcmVhdGVCYWNraW5nU3RvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OnVwZ3JhZGVkRGF0YWJhc2VE
aXJlY3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OnJlZ2lz
dGVyRGF0YWJhc2VDb25uZWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklEQlNl
cnZlcjo6SURCU2VydmVyOjp1bnJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0aW9uKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpjbG9zZUFuZFRha2VVbmlx
dWVJREJEYXRhYmFzZSk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL0lEQlNlcnZlci5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1v
cnlJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1v
cnlJREJCYWNraW5nU3RvcmU6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUp
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3Rv
cmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3Rv
cmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlPYmplY3RTdG9yZTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5T2JqZWN0U3RvcmU6
Ok1lbW9yeU9iamVjdFN0b3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
TWVtb3J5T2JqZWN0U3RvcmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
U1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
U1FMaXRlSURCQmFja2luZ1N0b3JlOjpTUUxpdGVJREJCYWNraW5nU3RvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmVuY29kZURhdGFiYXNl
TmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6ZGVjb2RlRGF0YWJhc2VOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FM
aXRlSURCQmFja2luZ1N0b3JlOjpnZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbyk6CisgICAgICAg
IChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlQmFja2lu
Z1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0
b3JlOjpmaWxlbmFtZUZvckRhdGFiYXNlTmFtZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZnVsbERhdGFiYXNlRGly
ZWN0b3J5V2l0aFVwZ3JhZGUpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6VW5pcXVlSURCRGF0YWJhc2UpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6bWFuYWdlcik6CisgICAgICAg
IChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtQ3VycmVudE9w
ZW5PcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRh
YmFzZTo6cGVyZm9ybUN1cnJlbnRPcGVuT3BlcmF0aW9uQWZ0ZXJTcGFjZUNoZWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZUJhY2tpbmdT
dG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpj
cmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlE
QkRhdGFiYXNlOjpkZWxldGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2
ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpyZW5hbWVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpjbGVhck9iamVjdFN0b3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZUluZGV4
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0
ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6
OnJlbmFtZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0
YWJhc2U6OnB1dE9yQWRkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURC
RGF0YWJhc2U6OnB1dE9yQWRkQWZ0ZXJTcGFjZUNoZWNrKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmdldFJlY29yZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRBbGxSZWNvcmRzKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmdldENvdW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZVJlY29yZCk6
CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuQ3Vy
c29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6Oml0
ZXJhdGVDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRh
YmFzZTo6Y29tbWl0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpV
bmlxdWVJREJEYXRhYmFzZTo6YWJvcnRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJ
REJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpoYXNEYXRhSW5NZW1vcnkgY29uc3QpOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6c2VydmVyKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJh
c2VDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURC
RGF0YWJhc2VDb25uZWN0aW9uOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb246On5Vbmlx
dWVJREJEYXRhYmFzZUNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpV
bmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb246Om1hbmFnZXIpOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uaDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uOjpzZXJ2ZXIp
OiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJE
YXRhYmFzZU1hbmFnZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVu
aXF1ZUlEQkRhdGFiYXNlTWFuYWdlcjo6flVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlcik6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZVRy
YW5zYWN0aW9uOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6flVuaXF1ZUlEQkRh
dGFiYXNlVHJhbnNhY3Rpb24pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9V
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvc2hhcmVkL0lEQkVycm9yLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJFcnJvcjo6b3BlcmF0
b3IgYm9vbCBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJl
cXVlc3REYXRhLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc291
cmNlSWRlbnRpZmllci5oOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVy
OjpvcGVyYXRvciE9IGNvbnN0KToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisKIDIwMjItMDItMDcgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KIAogICAgICAgICBbV2ViQ29yZV0gSlNWYWx1ZUluV3JhcHBlZE9iamVjdCBpcyBub3QgY29y
cmVjdCBmb3IgY29uY3VycmVudCBHQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBiOTM2ZGM1ZjIwZjFiYzdhODk0Mjg1
ZDdhNDA4ZDlkMDg3NDA0OGM2Li4zNzVhODkzYWNjNGVmZGU4ZTVkNzYyNTE3MTU0ZWEzMjBhM2Fh
NjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2NSBAQAorMjAyMi0wMi0wOCAgU2lodWkgTGl1ICA8
c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBNYW5hZ2UgSW5kZXhlZERCIHN0b3JhZ2Ug
Ynkgb3JpZ2luCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzQ5MjUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg3NTU1MDE0PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IENocmlzIER1bWV6LgorCisgICAgICAgIEluIG5ldHdvcmsgcHJvY2VzcywgSW5k
ZXhlZERCIGRhdGEgaXMgbWFuYWdlZCBieSBXZWJLaXQ6OldlYklEQlNlcnZlci4gRWFjaCBzZXNz
aW9uIG93bnMgYSBXZWJJREJTZXJ2ZXIgCisgICAgICAgIChJREJTZXJ2ZXIpIGFuZCBlYWNoIElE
QlNlcnZlciBvd25zIG9uZSBvciBtb3JlIFVuaXF1ZUlEQkRhdGFiYXNlcyAocmVzcHJlbnRpbmcg
b25lIGFjdHVhbCBkYXRhYmFzZSB0aGF0CisgICAgICAgIElEQkRhdGFiYXNlIGNvbm5lY3RzIHRv
LCBjYW4gYmUgaWRlbnRpZmllZCBieSB7c2Vzc2lvbiwgb3JpZ2luLCBuYW1lfSkuIE5vdyB0aGF0
IHdlIGhhdmUgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLCAKKyAgICAgICAgd2hpY2ggbWFuYWdlcyBz
ZXNzaW9uIHN0b3JhZ2UgYnkgb3JpZ2luLCB3ZSBjYW4gbWVyZ2UgV2ViSURCU2VydmVyIHdpdGgg
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyLCBzaW5jZSBJbmRleGVkREIgCisgICAgICAgIHN0b3JhZ2Ug
aXMgbm90IHNoYXJlZCBhY3Jvc3Mgb3JpZ2lucy4KKworICAgICAgICBUaGUgb2xkIHN0cnVjdHVy
ZSBpczoKKyAgICAgICAgTmV0d29ya1Nlc3Npb24gLSBXZWJJREJTZXJ2ZXIgLSBJREJTZXJ2ZXIg
LSBVbmlxdWVJREJEYXRhYmFzZXMKKyAgICAgICAgVGhlIG5ldyBzdHJ1Y3R1cmUgaXM6CisgICAg
ICAgIE5ldHdvcmtTZXNzaW9uIC0gTmV0d29ya1N0b3JhZ2VNYW5hZ2VyIC0gT3JpZ2luU3RvcmFn
ZU1hbmFnZXIgLSBJREJTdG9yYWdlTWFuYWdlciAtIFVuaXF1ZUlEQkRhdGFiYXNlCisKKyAgICAg
ICAgVG8gY29tcGxldGUgdGhpcyB0cmFuc2l0aW9uLCB3ZSBuZWVkIHRvIG1ha2UgYSBmZXcgY2hh
bmdlczoKKyAgICAgICAgMS4gV2ViIHByb2Nlc3Mgbm93IHNlbmRzIEluZGV4ZWREQiByZWxhdGVk
IG1lc3NhZ2VzIHRvIE5ldHdvcmtTdG9yYWdlTWFuYWdlciBpbnN0ZWFkIG9mIFdlYklEQlNlcnZl
ci4gCisgICAgICAgIDIuIFNvbWUgbWVzc2FnZXMgYXJlIHNlbnQgdG8gb3BlcmF0ZSBvbiBVbmlx
dWVJREJEYXRhYmFzZUNvbm5lY3Rpb24gb3IgVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiwg
YW5kIHRoZXkgCisgICAgICAgIHVzZSBpZGVudGlmaWVycyB0byBzcGVjaWZ5IHRoZSB0YXJnZXQu
IFRoZXJlZm9yZSwgTmV0d29ya1N0b3JhZ2VNYW5hZ2VycyBuZWVkcyB0byBrbm93IHRoZSBtYXBw
aW5nIGJldHdlZW4gCisgICAgICAgIGlkZW50aWZpZXJzIGFuZCB0YXJnZXQgb2JqZWN0cy4gQSBu
ZXcgY2xhcyBJREJTdG9yYWdlUmVnaXN0cnkgaXMgYWRkZWQgcmVjb3JkIHRoaXMgbWFwcGluZy4g
RWFjaCAKKyAgICAgICAgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyIG93bnMgYSBJREJTdG9yYWdlUmVn
aXN0cnkgYW5kIGl0IHBhc3NlcyBJREJTdG9yYWdlUmVnaXN0cnkgdG8gSURCU3RvcmFnZU1hbmFn
ZXIsCisgICAgICAgIElEQlN0b3JhZ2VNYW5hZ2VyIHdpbGwgcmVnaXN0ZXIgb2JqZWN0cyB0byBJ
REJTdG9yYWdlUmVnaXN0cnkgYW5kIE5ldHdvcmtTdG9yYWdlTWFuYWdlciBjYW4gZG8gc2VhcmNo
IHZpYSAKKyAgICAgICAgSURCU3RvcmFnZVJlZ2lzdHJ5LgorICAgICAgICAzLiBRdW90YSBjaGVj
ayBmb3IgSW5kZXhlZERCIG9wZXJhdGlvbnMgYmVjb21lcyBhc3luYyBieSBhZGRpbmcgbmV3IFF1
b3RhTWFuYWdlciBjbGFzcywgd2hpY2ggaXMgc2ltaWxhciB0byAKKyAgICAgICAgV2ViQ29yZTo6
U3RvcmFnZVF1b3RhTWFuYWdlciBidXQgcHJvdmlkZXMgYXN5bmMgaW50ZXJmYWNlcy4gCisgICAg
ICAgIFdlIHVzZWQgdG8gYmxvY2sgdGhlIElEQlNlcnZlciB0aHJlYWQgd2hlbiBpdCBpcyB3YWl0
aW5nIGZvciBxdW90YSBjaGVjayByZXN1bHQgZnJvbSBVSSBwcm9jZXNzLCB0aGlzIGlzIGZpbmUg
CisgICAgICAgIGJlY2F1c2UgSURCU2VydmVyIHJ1bnMgb24gaXRzIG93biB0aHJlYWQuIE5vdyB0
aGF0IElEQlN0b3JhZ2VNYW5hZ2VyIHJ1bnMgb24gdGhlIHNhbWUgdGhyZWFkIGFzIHRoZSBvdGhl
ciAKKyAgICAgICAgc3RvcmFnZSB0eXBlcywgd2UgY2Fubm90IGJsb2NrIHRoZSB0aHJlYWQgb24g
cXVvdGEgY2hlY2suCisgICAgICAgIDQuIFJlbmFtZSBXZWJJREJDb25uZWN0aW9uVG9DbGllbnQg
dG8gSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudCB0byByZWZsZWN0IHRoZSBjaGFuZ2Ugb24g
dGhlIHN0cnVjdHVyZS4gQWxzbywKKyAgICAgICAgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVu
dCBkb2VzIG5vdCBrZWVwIHJlZmVyZW5jZSB0byB0aGUgSVBDOjpDb25uZWN0aW9uIG5vdywgaXQg
b25seSByZWNvcmRzIAorICAgICAgICBJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELgorICAgICAg
ICA1LiBJbmRleGVkREIgZGF0YSBtYXkgYmUgcHV0IGluIGRpZmZlcmVudCB2ZXJzaW9uIGRpcmN0
b3JpZXMuIFdlIHVzZWQgdG8gbWlncmF0ZSBkYXRhYmFzZSB0byBuZXcgdmVyc2lvbiAKKyAgICAg
ICAgZGlyZXRvcnkgd2hlbiB0aGUgZGF0YWJhc2UgaXMgYWNjZXNzZWQuIEFzIElEQlN0b3JhZ2VN
YW5hZ2VyIG5vdyBtYW5hZ2VzIEluZGV4ZWREQiBkYXRhIG9mIG9uZSBvcmlnaW4sIGl0J3MgCisg
ICAgICAgIHNpbXBsZXIgaWYgaXQgb25seSBrZWVwcyB0cmFjayBvZiBvbmUgZGlyZWN0b3J5LiBU
aGVyZWZvcmUsIHdlIG5vdyBtaWdyYXRlIGFsbCBkYXRhYmFzZXMgb2Ygb25lIG9yaWdpbgorICAg
ICAgICB3aGVuIHRoZSBvcmlnaW4gaXMgYWNjZXNzZWQgKHNlZSBJREJTdG9yYWdlTWFuYWdlcjo6
aWRiU3RvcmFnZU9yaWdpbkRpcmVjdG9yeSkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1cGRhdGVRdW90YUJhc2VkT25TcGFjZVVzYWdlRm9y
VGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Ojp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlc0ZvckluZGV4ZWREQik6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzczo6ZGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y3Jl
YXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6YWRkV2Vic2l0ZURhdGFTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzOjpmZXRjaFdlYnNpdGVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzOjpkZWxldGVBbmRSZXN0cmljdFdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21h
aW5zKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlZ2lzdHJhYmxlRG9tYWlu
c1dpdGhXZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwcmVw
YXJlVG9TdXNwZW5kKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlc3VtZSk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZXNldFF1b3RhKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRpZEluY3JlYXNlUXVvdGEpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVuYW1lT3JpZ2luSW5XZWJzaXRlRGF0YSk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzdG9yYWdlUXVvdGFNYW5hZ2VyKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NDbG9zZWQpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c3VzcGVuZElEQlNlcnZlcnMpOiBEZWxl
dGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzaG91bGRTdXNwZW5kSURCU2VydmVycyBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2Fn
ZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6aW52YWxpZGF0ZUFuZENhbmNlbCk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjphZGRTdG9yYWdlTWFuYWdlclNlc3Npb24pOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6ZW5zdXJlV2ViSURCU2VydmVyKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OmNsb3NlSURCU2VydmVyKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OmFkZEluZGV4ZWREYXRh
YmFzZVNlc3Npb24pOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtT
ZXNzaW9uLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjp3ZWJJREJTZXJ2ZXIp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6aGFzSURCRGF0YWJh
c2VQYXRoIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9D
YWNoZVN0b3JhZ2VFbmdpbmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVu
Z2luZTo6c3RvcmFnZVBhdGgpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2lu
ZTo6ZGlza1VzYWdlKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OnJl
cXVlc3RTcGFjZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdl
RW5naW5lLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5n
aW5lQ2FjaGVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZXM6OnJl
cXVlc3RTcGFjZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNz
SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0SXNIb2xkaW5nTG9j
a2VkRmlsZXMpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZUNv
bm5lY3Rpb25Ub0NsaWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdl
Q29ubmVjdGlvblRvQ2xpZW50OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50KToKKyAgICAg
ICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6fklEQlN0b3JhZ2VDb25u
ZWN0aW9uVG9DbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVjdGlvblRv
Q2xpZW50Ojpjb25uZWN0aW9uVG9DbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdl
Q29ubmVjdGlvblRvQ2xpZW50OjpkaWRHZXRSZXN1bHQpOgorICAgICAgICAoV2ViS2l0OjpJREJT
dG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWREZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChX
ZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZE9wZW5EYXRhYmFzZSk6Cisg
ICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZFN0YXJ0VHJh
bnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50
OjpkaWRBYm9ydFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5l
Y3Rpb25Ub0NsaWVudDo6ZGlkQ29tbWl0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpJ
REJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRDcmVhdGVPYmplY3RTdG9yZSk6CisgICAg
ICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZERlbGV0ZU9iamVj
dFN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6
ZGlkUmVuYW1lT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVj
dGlvblRvQ2xpZW50OjpkaWRDbGVhck9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6SURC
U3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkQ3JlYXRlSW5kZXgpOgorICAgICAgICAoV2Vi
S2l0OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWREZWxldGVJbmRleCk6CisgICAg
ICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZFJlbmFtZUluZGV4
KToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkUHV0
T3JBZGQpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50Ojpk
aWRHZXRSZWNvcmQpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xp
ZW50OjpkaWRHZXRBbGxSZWNvcmRzKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5l
Y3Rpb25Ub0NsaWVudDo6ZGlkR2V0Q291bnQpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdl
Q29ubmVjdGlvblRvQ2xpZW50OjpkaWREZWxldGVSZWNvcmQpOgorICAgICAgICAoV2ViS2l0OjpJ
REJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRPcGVuQ3Vyc29yKToKKyAgICAgICAgKFdl
YktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkSXRlcmF0ZUN1cnNvcik6Cisg
ICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZEdldEFsbERh
dGFiYXNlTmFtZXNBbmRWZXJzaW9ucyk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25u
ZWN0aW9uVG9DbGllbnQ6OmZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQpOgorICAgICAgICAoV2ViS2l0
OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRDbG9zZUZyb21TZXJ2ZXIpOgorICAg
ICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50Ojpub3RpZnlPcGVuREJS
ZXF1ZXN0QmxvY2tlZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9y
YWdlQ29ubmVjdGlvblRvQ2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L3N0b3JhZ2UvSURCU3RvcmFnZU1hbmFnZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6
bWlncmF0ZU9yaWdpbkRhdGEpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlTWFuYWdlcjo6
aWRiU3RvcmFnZU9yaWdpbkRpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VN
YW5hZ2VyOjppZGJTdG9yYWdlU2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OmdldE9yaWdpbnNGb3JW
ZXJzaW9uKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZU1hbmFnZXI6Om9yaWdpbnNPZklE
QlN0b3JhZ2VEYXRhKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZU1hbmFnZXI6OklEQlN0
b3JhZ2VNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZU1hbmFnZXI6OmlzQWN0
aXZlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZU1hbmFnZXI6Omhhc0RhdGFJ
bk1lbW9yeSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VNYW5hZ2VyOjpjbG9z
ZURhdGFiYXNlc0ZvckRlbGV0aW9uKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZU1hbmFn
ZXI6OnN0b3BEYXRhYmFzZUFjdGl2aXRpZXNGb3JTdXNwZW5kKToKKyAgICAgICAgKFdlYktpdDo6
SURCU3RvcmFnZU1hbmFnZXI6OmdldE9yQ3JlYXRlVW5pcXVlSURCRGF0YWJhc2UpOgorICAgICAg
ICAoV2ViS2l0OjpJREJTdG9yYWdlTWFuYWdlcjo6b3BlbkRhdGFiYXNlKToKKyAgICAgICAgKFdl
YktpdDo6SURCU3RvcmFnZU1hbmFnZXI6OmRlbGV0ZURhdGFiYXNlKToKKyAgICAgICAgKFdlYktp
dDo6SURCU3RvcmFnZU1hbmFnZXI6OmdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyk6Cisg
ICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VNYW5hZ2VyOjpvcGVuREJSZXF1ZXN0Q2FuY2VsbGVk
KToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZU1hbmFnZXI6OnJlZ2lzdGVyQ29ubmVjdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VNYW5hZ2VyOjp1bnJlZ2lzdGVyQ29ubmVj
dGlvbik6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VNYW5hZ2VyOjpyZWdpc3RlclRyYW5z
YWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZU1hbmFnZXI6OnVucmVnaXN0ZXJU
cmFuc2FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVC
YWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlTWFuYWdlcjo6cmVxdWVz
dFNwYWNlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VNYW5h
Z2VyLmg6IEFkZGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFn
ZVJlZ2lzdHJ5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VSZWdpc3Ry
eTo6ZW5zdXJlQ29ubmVjdGlvblRvQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFn
ZVJlZ2lzdHJ5OjpyZW1vdmVDb25uZWN0aW9uVG9DbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpJ
REJTdG9yYWdlUmVnaXN0cnk6OnJlZ2lzdGVyQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OklEQlN0b3JhZ2VSZWdpc3RyeTo6dW5yZWdpc3RlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2Vi
S2l0OjpJREJTdG9yYWdlUmVnaXN0cnk6OnJlZ2lzdGVyVHJhbnNhY3Rpb24pOgorICAgICAgICAo
V2ViS2l0OjpJREJTdG9yYWdlUmVnaXN0cnk6OnVucmVnaXN0ZXJUcmFuc2FjdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VSZWdpc3RyeTo6Y29ubmVjdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OklEQlN0b3JhZ2VSZWdpc3RyeTo6dHJhbnNhY3Rpb24pOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZVJlZ2lzdHJ5Lmg6IEFkZGVkLgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcik6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y2FuSGFuZGxlVHlwZXMpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnN0b3BSZWNlaXZpbmdNZXNzYWdl
RnJvbUNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6
OmxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6OmRpZEluY3JlYXNlUXVvdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
U3RvcmFnZU1hbmFnZXI6OmdldEFsbE9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
U3RvcmFnZU1hbmFnZXI6Om1vdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyOjpzdXNwZW5kKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5h
Z2VyOjpyZWdpc3RlclRlbXBvcmFyeUJsb2JGaWxlUGF0aHMpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnJlcXVlc3RTcGFjZSk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtTdG9yYWdlTWFuYWdlcjo6cmVzZXRRdW90YUZvclRlc3RpbmcpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnJlc2V0UXVvdGFVcGRhdGVkQmFzZWRPblVzYWdl
Rm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6b3Bl
bkRhdGFiYXNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpvcGVu
REJSZXF1ZXN0Q2FuY2VsbGVkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5h
Z2VyOjpkZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFu
YWdlcjo6ZXN0YWJsaXNoVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6OmRhdGFiYXNlQ29ubmVjdGlvblBlbmRpbmdDbG9zZSk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGF0YWJhc2VDb25uZWN0aW9uQ2xvc2VkKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjphYm9ydE9wZW5BbmRVcGdy
YWRlTmVlZGVkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkaWRG
aXJlVmVyc2lvbkNoYW5nZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VN
YW5hZ2VyOjphYm9ydFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyOjpjb21taXRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtT
dG9yYWdlTWFuYWdlcjo6ZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24p
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZU9iamVjdFN0
b3JlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVPYmpl
Y3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6cmVuYW1l
T2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNs
ZWFyT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6
OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpk
ZWxldGVJbmRleCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6cmVu
YW1lSW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnB1dE9y
QWRkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpnZXRSZWNvcmQp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmdldEFsbFJlY29yZHMp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmdldENvdW50KToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVSZWNvcmQpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Om9wZW5DdXJzb3IpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Oml0ZXJhdGVDdXJzb3IpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmdldEFsbERhdGFiYXNlTmFtZXNBbmRW
ZXJzaW9ucyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFn
ZU1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9y
YWdlTWFuYWdlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdl
L09yaWdpblN0b3JhZ2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6T3JpZ2luU3RvcmFn
ZU1hbmFnZXI6OlN0b3JhZ2VCdWNrZXQ6OlN0b3JhZ2VCdWNrZXQpOgorICAgICAgICAoV2ViS2l0
OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldDo6dG9XZWJzaXRlRGF0YVR5cGUp
OgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldDo6
dG9TdG9yYWdlSWRlbnRpZmllcik6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5h
Z2VyOjpTdG9yYWdlQnVja2V0OjppZGJTdG9yYWdlTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6
Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0OjpleGlzdGluZ0lEQlN0b3JhZ2VN
YW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6T3JpZ2luU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VC
dWNrZXQ6OmlzQWN0aXZlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6T3JpZ2luU3RvcmFnZU1h
bmFnZXI6OlN0b3JhZ2VCdWNrZXQ6OmlzRW1wdHkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpP
cmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldDo6ZGVsZXRlRGF0YSk6CisgICAgICAg
IChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0Ojptb3ZlRGF0YSk6
CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0Ojpm
ZXRjaERhdGFUeXBlc0luTGlzdEZyb21NZW1vcnkpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5T
dG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldDo6ZmV0Y2hEYXRhVHlwZXNJbkxpc3RGcm9tRGlz
ayk6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0
OjpkZWxldGVJREJTdG9yYWdlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OmNyZWF0ZVF1b3RhTWFu
YWdlcik6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpPcmlnaW5TdG9y
YWdlTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpkZWZh
dWx0QnVja2V0KToKKyAgICAgICAgKFdlYktpdDo6T3JpZ2luU3RvcmFnZU1hbmFnZXI6OnF1b3Rh
TWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjppZGJTdG9y
YWdlTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpleGlz
dGluZ0lEQlN0b3JhZ2VNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6T3JpZ2luU3RvcmFnZU1h
bmFnZXI6Om1vdmVEYXRhKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdp
blN0b3JhZ2VNYW5hZ2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9RdW90
YU1hbmFnZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UXVvdGFNYW5hZ2VyOjpjcmVh
dGUpOgorICAgICAgICAoV2ViS2l0OjpRdW90YU1hbmFnZXI6OlF1b3RhTWFuYWdlcik6CisgICAg
ICAgIChXZWJLaXQ6OlF1b3RhTWFuYWdlcjo6cmVxdWVzdFNwYWNlKToKKyAgICAgICAgKFdlYktp
dDo6UXVvdGFNYW5hZ2VyOjpoYW5kbGVSZXF1ZXN0cyk6CisgICAgICAgIChXZWJLaXQ6OlF1b3Rh
TWFuYWdlcjo6Z3JhbnRXaXRoQ3VycmVudFF1b3RhKToKKyAgICAgICAgKFdlYktpdDo6UXVvdGFN
YW5hZ2VyOjpncmFudEZhc3RQYXRoKToKKyAgICAgICAgKFdlYktpdDo6UXVvdGFNYW5hZ2VyOjpk
aWRJbmNyZWFzZVF1b3RhKToKKyAgICAgICAgKFdlYktpdDo6UXVvdGFNYW5hZ2VyOjpyZXNldFF1
b3RhVXBkYXRlZEJhc2VkT25Vc2FnZUZvclRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpRdW90
YU1hbmFnZXI6OnJlc2V0UXVvdGFGb3JUZXN0aW5nKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9zdG9yYWdlL1F1b3RhTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dC9tZXNzYWdlcy5weToKKyAgICAgICAgKHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVj
bGFyZWQpOgorICAgICAgICAqIFNoYXJlZC9XZWJzaXRlRGF0YS9RdW90YUluY3JlYXNlUmVxdWVz
dElkZW50aWZpZXIuaDogQWRkZWQuCisgICAgICAgICogU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQ
YXJhbWV0ZXJzLmg6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzUHJveHk6OmluY3JlYXNlUXVvdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZTo6cGVyVGhpcmRQYXJ0eU9yaWdpblN0b3JhZ2VRdW90YSBjb25zdCk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaDoKKyAgICAgICAgKFdl
YktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFBlck9yaWdpblF1b3RhKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6V2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAqIFdlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvRGF0YWJhc2VzL0lu
ZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRlbGV0ZURhdGFiYXNlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpvcGVuRGF0YWJhc2UpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmFib3J0VHJhbnNhY3Rpb24pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmNvbW1pdFRyYW5zYWN0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpkaWRGaW5pc2hIYW5k
bGluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNv
bm5lY3Rpb25Ub1NlcnZlcjo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRlbGV0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpyZW5hbWVPYmplY3RTdG9yZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Y2xlYXJPYmplY3RTdG9yZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Y3JlYXRlSW5kZXgp
OgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRlbGV0ZUluZGV4
KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpyZW5hbWVJbmRl
eCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6cHV0T3JBZGQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmdldFJlY29yZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Z2V0QWxsUmVjb3Jk
cyk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Z2V0Q291bnQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRlbGV0ZVJlY29y
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6b3BlbkN1cnNv
cik6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6aXRlcmF0ZUN1
cnNvcik6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZXN0YWJs
aXNoVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2
ZXI6OmRhdGFiYXNlQ29ubmVjdGlvblBlbmRpbmdDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGF0YWJhc2VDb25uZWN0aW9uQ2xvc2VkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjphYm9ydE9wZW5BbmRVcGdyYWRl
TmVlZGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpkaWRG
aXJlVmVyc2lvbkNoYW5nZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlv
blRvU2VydmVyOjpvcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
SURCQ29ubmVjdGlvblRvU2VydmVyOjpnZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMpOgor
CiAyMDIyLTAyLTA4ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBMaWJXZWJSVENDb2RlY3MgU2hhcmVkVmlkZW9GcmFtZVdyaXRlcnMgY2FuIGRlYWRsb2NrIGlu
IGNhc2Ugb2YgR1BVUHJvY2VzcyBjcmFzaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwppbmRleCBlNmJhNzMy
MmMzNDhlY2RlNDc5NGUwOTQ5OTViYWI0ODk2YmY1YTQ5Li5jNGU2NTVhZmQ2ZTFhOGQ1ZWUxMjcw
NzJlYTA2YzVhY2JlMTU3ZDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBA
CisyMDIyLTAyLTA4ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAg
IE1hbmFnZSBJbmRleGVkREIgc3RvcmFnZSBieSBvcmlnaW4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDkyNQorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vODc1NTUwMTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAg
ICAgKiBTdG9yYWdlL0luUHJvY2Vzc0lEQlNlcnZlci5jcHA6CisgICAgICAgIChJblByb2Nlc3NJ
REJTZXJ2ZXI6OnF1b3RhTWFuYWdlcik6CisKIDIwMjItMDItMDIgIEVsbGlvdHQgV2lsbGlhbXMg
IDxlbXdAYXBwbGUuY29tPgogCiAgICAgICAgIFtYY29kZV0gRml4IHJlZHVuZGFudCBleGVjdXRp
b24gb2YgIkNoZWNrIFZUYWJsZXMuLi4iIHNjcmlwdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggMzMy
YjAwMzMwMmMzZWY5NjJmYTcyZmIzZjg4NGNmNWY4MjcxZDQ5Zi4uMDhhMDFlNTc4ZDhhMzUyN2U2
ZmVlNDQyY2U5MDgxMWFmNWJhZmFjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVy
cy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0yMjQsMTEgKzIy
NCwxNiBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL0lEQkNvbm5lY3Rpb25Ub0NsaWVudC5oCiAgICAgTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL0lEQkNvbm5lY3Rpb25Ub0NsaWVudERlbGVnYXRlLmgKICAgICBNb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmgKKyAgICBNb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvSW5kZXhWYWx1ZUVudHJ5LmgKKyAgICBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSW5k
ZXhWYWx1ZVN0b3JlLmgKKyAgICBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFja2lu
Z1N0b3JlVHJhbnNhY3Rpb24uaAogICAgIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJ
REJCYWNraW5nU3RvcmUuaAogICAgIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJC
YWNraW5nU3RvcmUuaAorICAgIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJUcmFu
c2FjdGlvbi5oCiAgICAgTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NlcnZlck9wZW5EQlJlcXVl
c3QuaAogICAgIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oCiAg
ICAgTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5o
CisgICAgTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlci5o
CiAgICAgTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rp
b24uaAogCiAgICAgTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luZGV4S2V5LmgKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmll
ci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlm
aWVyLmgKaW5kZXggMTVmOGJkMjU1MTQ1N2QzMjk5MmQ2NmJhY2VhZjM2ZWI2NGRiYTM4MS4uZWFl
ZjI1NDU2OTMzOTU2MTRlMWMyMTg3ZmY0Y2FiNjRhZTEzZTU3ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmgK
QEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNUcmFuc2llbnQoKSBjb25zdCB7
IHJldHVybiBtX2lzVHJhbnNpZW50OyB9CiAKICAgICBTdHJpbmcgZGF0YWJhc2VEaXJlY3RvcnlS
ZWxhdGl2ZVRvUm9vdChjb25zdCBTdHJpbmcmIHJvb3REaXJlY3RvcnksIGNvbnN0IFN0cmluZyYg
dmVyc2lvblN0cmluZz0idjEiKSBjb25zdDsKLSAgICBzdGF0aWMgU3RyaW5nIGRhdGFiYXNlRGly
ZWN0b3J5UmVsYXRpdmVUb1Jvb3QoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiB0b3BMZXZlbE9y
aWdpbiwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcGVuaW5nT3JpZ2luLCBjb25zdCBTdHJp
bmcmIHJvb3REaXJlY3RvcnksIGNvbnN0IFN0cmluZyYgdmVyc2lvblN0cmluZyk7CisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBkYXRhYmFzZURpcmVjdG9yeVJlbGF0aXZlVG9Sb290
KGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgdG9wTGV2ZWxPcmlnaW4sIGNvbnN0IFNlY3VyaXR5
T3JpZ2luRGF0YSYgb3BlbmluZ09yaWdpbiwgY29uc3QgU3RyaW5nJiByb290RGlyZWN0b3J5LCBj
b25zdCBTdHJpbmcmIHZlcnNpb25TdHJpbmcpOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPElEQkRhdGFiYXNlSWRlbnRpZmllcj4gZGVjb2RlKERl
Y29kZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9JREJDb25uZWN0aW9uVG9DbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnQuaAppbmRleCAyN2Y3MjY5MTlmMTQy
MWYyMWE1ZjAzZmZkZmMxNzZkNGM0YmRmM2MyLi5mMDVhYzJmOGM4MmE4MDljMjcxYzlkZjU5N2Y5
NjQ3MzE5ZWY2NDYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvSURCQ29ubmVjdGlvblRvQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkNvbm5lY3Rpb25Ub0NsaWVudC5oCkBAIC03NCwxMSAr
NzQsMTEgQEAgcHVibGljOgogCiAgICAgdm9pZCBub3RpZnlPcGVuREJSZXF1ZXN0QmxvY2tlZChj
b25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBv
bGRWZXJzaW9uLCB1aW50NjRfdCBuZXdWZXJzaW9uKTsKIAotICAgIHZvaWQgZGlkR2V0QWxsRGF0
YWJhc2VOYW1lc0FuZFZlcnNpb25zKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYsIFZlY3Rv
cjxJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGRpZEdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhjb25zdCBJREJSZXNvdXJjZUlkZW50
aWZpZXImLCBWZWN0b3I8SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbj4mJik7CiAKICAgICB2b2lk
IHJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYp
OwogICAgIHZvaWQgdW5yZWdpc3RlckRhdGFiYXNlQ29ubmVjdGlvbihVbmlxdWVJREJEYXRhYmFz
ZUNvbm5lY3Rpb24mKTsKLSAgICB2b2lkIGNvbm5lY3Rpb25Ub0NsaWVudENsb3NlZCgpOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgY29ubmVjdGlvblRvQ2xpZW50Q2xvc2VkKCk7CiAgICAgYm9v
bCBpc0Nsb3NlZCgpIHsgcmV0dXJuIG1faXNDbG9zZWQ7IH0KICAgICB2b2lkIGNsZWFyRGVsZWdh
dGUoKSB7IG1fZGVsZWdhdGUgPSBudWxscHRyOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKaW5kZXggZDI2NjkzMTgw
ODQ2YWY2NjY4OWUxN2FlYTNmZjk5NzE5NTVhZTM2ZS4uNGJhZDQ0MmIxYjNhOWE0MTc4NTkwNDJm
ODE2NTc3ZTA3YjEzYmE4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKQEAgLTEwMSwxMyArMTAxLDEzIEBAIHZvaWQg
SURCU2VydmVyOjp1bnJlZ2lzdGVyVHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2Fj
dGlvbiYgdHJhbnNhY3Rpb24pCiAgICAgbV90cmFuc2FjdGlvbnMucmVtb3ZlKHRyYW5zYWN0aW9u
LmluZm8oKS5pZGVudGlmaWVyKCkpOwogfQogCi12b2lkIElEQlNlcnZlcjo6cmVnaXN0ZXJEYXRh
YmFzZUNvbm5lY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiBjb25uZWN0aW9uKQor
dm9pZCBJREJTZXJ2ZXI6OnJlZ2lzdGVyQ29ubmVjdGlvbihVbmlxdWVJREJEYXRhYmFzZUNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24pCiB7CiAgICAgQVNTRVJUKCFtX2RhdGFiYXNlQ29ubmVjdGlvbnMu
Y29udGFpbnMoY29ubmVjdGlvbi5pZGVudGlmaWVyKCkpKTsKICAgICBtX2RhdGFiYXNlQ29ubmVj
dGlvbnMuc2V0KGNvbm5lY3Rpb24uaWRlbnRpZmllcigpLCAmY29ubmVjdGlvbik7CiB9CiAKLXZv
aWQgSURCU2VydmVyOjp1bnJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0aW9uKFVuaXF1ZUlEQkRhdGFi
YXNlQ29ubmVjdGlvbiYgY29ubmVjdGlvbikKK3ZvaWQgSURCU2VydmVyOjp1bnJlZ2lzdGVyQ29u
bmVjdGlvbihVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiB7CiAgICAg
QVNTRVJUKG1fZGF0YWJhc2VDb25uZWN0aW9ucy5jb250YWlucyhjb25uZWN0aW9uLmlkZW50aWZp
ZXIoKSkpOwogICAgIG1fZGF0YWJhc2VDb25uZWN0aW9ucy5yZW1vdmUoY29ubmVjdGlvbi5pZGVu
dGlmaWVyKCkpOwpAQCAtMTI4LDEzICsxMjgsMTMgQEAgc3RkOjp1bmlxdWVfcHRyPElEQkJhY2tp
bmdTdG9yZT4gSURCU2VydmVyOjpjcmVhdGVCYWNraW5nU3RvcmUoY29uc3QgSURCRGF0YWJhc2UK
IHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBpZiAobV9kYXRhYmFzZURpcmVj
dG9yeVBhdGguaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxNZW1vcnlJREJC
YWNraW5nU3RvcmU+KG1fc2Vzc2lvbklELCBpZGVudGlmaWVyKTsKKyAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8TWVtb3J5SURCQmFja2luZ1N0b3JlPihpZGVudGlmaWVyKTsKIAogICAgIEFTU0VS
VCghbV9zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSk7CiAgICAgaWYgKGlkZW50aWZpZXIuaXNUcmFu
c2llbnQoKSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TWVtb3J5SURCQmFja2luZ1N0b3Jl
PihtX3Nlc3Npb25JRCwgaWRlbnRpZmllcik7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPE1l
bW9yeUlEQkJhY2tpbmdTdG9yZT4oaWRlbnRpZmllcik7CiAKLSAgICByZXR1cm4gbWFrZVVuaXF1
ZTxTUUxpdGVJREJCYWNraW5nU3RvcmU+KG1fc2Vzc2lvbklELCBpZGVudGlmaWVyLCBtX2RhdGFi
YXNlRGlyZWN0b3J5UGF0aCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1FMaXRlSURCQmFja2lu
Z1N0b3JlPihpZGVudGlmaWVyLCB1cGdyYWRlZERhdGFiYXNlRGlyZWN0b3J5KGlkZW50aWZpZXIp
KTsKIH0KIAogdm9pZCBJREJTZXJ2ZXI6Om9wZW5EYXRhYmFzZShjb25zdCBJREJSZXF1ZXN0RGF0
YSYgcmVxdWVzdERhdGEpCkBAIC0xNzcsMTcgKzE3Nyw2IEBAIHZvaWQgSURCU2VydmVyOjpkZWxl
dGVEYXRhYmFzZShjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEpCiAgICAgICAgIG1f
dW5pcXVlSURCRGF0YWJhc2VNYXAucmVtb3ZlKGRhdGFiYXNlLT5pZGVudGlmaWVyKCkpOwogfQog
Ci1zdGQ6OnVuaXF1ZV9wdHI8VW5pcXVlSURCRGF0YWJhc2U+IElEQlNlcnZlcjo6Y2xvc2VBbmRU
YWtlVW5pcXVlSURCRGF0YWJhc2UoVW5pcXVlSURCRGF0YWJhc2UmIGRhdGFiYXNlKQotewotICAg
IExPRyhJbmRleGVkREIsICJJREJTZXJ2ZXI6OmNsb3NlVW5pcXVlSURCRGF0YWJhc2UiKTsKLSAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotCi0gICAgYXV0byB1bmlxdWVQb2ludGVyID0gbV91
bmlxdWVJREJEYXRhYmFzZU1hcC50YWtlKGRhdGFiYXNlLmlkZW50aWZpZXIoKSk7Ci0gICAgQVNT
RVJUKHVuaXF1ZVBvaW50ZXIpOwotCi0gICAgcmV0dXJuIHVuaXF1ZVBvaW50ZXI7Ci19Ci0KIHZv
aWQgSURCU2VydmVyOjphYm9ydFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmll
ciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJTZXJ2
ZXI6OmFib3J0VHJhbnNhY3Rpb24iKTsKQEAgLTc1MCw3ICs3MzksNyBAQCB2b2lkIElEQlNlcnZl
cjo6cmVuYW1lT3JpZ2luKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgb2xkT3Jp
Z2luLCBjb25zdAogICAgICAgICBGaWxlU3lzdGVtOjptb3ZlRmlsZShvbGRPcmlnaW5QYXRoLCBu
ZXdPcmlnaW5QYXRoKTsKIH0KIAotU3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb24gSURCU2Vy
dmVyOjpyZXF1ZXN0U3BhY2UoY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4sIHVpbnQ2NF90IHRh
c2tTaXplKSBXVEZfSUdOT1JFU19USFJFQURfU0FGRVRZX0FOQUxZU0lTCit2b2lkIElEQlNlcnZl
cjo6cmVxdWVzdFNwYWNlKGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2luLCB1aW50NjRfdCB0YXNr
U2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikg
V1RGX0lHTk9SRVNfVEhSRUFEX1NBRkVUWV9BTkFMWVNJUwogewogICAgIEFTU0VSVCghaXNNYWlu
VGhyZWFkKCkpOwogICAgIEFTU0VSVChtX2xvY2suaXNIZWxkKCkpOwpAQCAtNzYyLDcgKzc1MSw3
IEBAIFN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uIElEQlNlcnZlcjo6cmVxdWVzdFNwYWNl
KGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2luCiAgICAgcmVzdWx0ID0gbV9zcGFjZVJlcXVlc3Rl
cihvcmlnaW4sIHRhc2tTaXplKTsKICAgICBtX2xvY2subG9jaygpOwogCi0gICAgcmV0dXJuIHJl
c3VsdDsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihyZXN1bHQgPT0gU3RvcmFnZVF1b3RhTWFuYWdl
cjo6RGVjaXNpb246OkdyYW50KTsKIH0KIAogdWludDY0X3QgSURCU2VydmVyOjpkaXNrVXNhZ2Uo
Y29uc3QgU3RyaW5nJiByb290RGlyZWN0b3J5LCBjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbikK
QEAgLTc4NCw2ICs3NzMsMjMgQEAgdm9pZCBJREJTZXJ2ZXI6OnVwZ3JhZGVGaWxlc0lmTmVjZXNz
YXJ5KCkKICAgICAgICAgRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKG5ld1ZlcnNpb25E
aXJlY3RvcnkpOwogfQogCitTdHJpbmcgSURCU2VydmVyOjp1cGdyYWRlZERhdGFiYXNlRGlyZWN0
b3J5KGNvbnN0IFdlYkNvcmU6OklEQkRhdGFiYXNlSWRlbnRpZmllciYgaWRlbnRpZmllcikKK3sK
KyAgICBTdHJpbmcgb2xkT3JpZ2luRGlyZWN0b3J5ID0gaWRlbnRpZmllci5kYXRhYmFzZURpcmVj
dG9yeVJlbGF0aXZlVG9Sb290KG1fZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCAidjAiKTsKKyAgICBT
dHJpbmcgb2xkRGF0YWJhc2VEaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQob2xkT3JpZ2luRGlyZWN0b3J5LCBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmVuY29k
ZURhdGFiYXNlTmFtZShpZGVudGlmaWVyLmRhdGFiYXNlTmFtZSgpKSk7CisgICAgU3RyaW5nIG5l
d09yaWdpbkRpcmVjdG9yeSA9IGlkZW50aWZpZXIuZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRv
Um9vdChtX2RhdGFiYXNlRGlyZWN0b3J5UGF0aCwgInYxIik7CisgICAgU3RyaW5nIGZpbGVOYW1l
SGFzaCA9IFNRTGl0ZUZpbGVTeXN0ZW06OmNvbXB1dGVIYXNoRm9yRmlsZU5hbWUoaWRlbnRpZmll
ci5kYXRhYmFzZU5hbWUoKSk7CisgICAgU3RyaW5nIG5ld0RhdGFiYXNlRGlyZWN0b3J5ID0gRmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG5ld09yaWdpbkRpcmVjdG9yeSwgZmls
ZU5hbWVIYXNoKTsKKyAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMobmV3RGF0YWJh
c2VEaXJlY3RvcnkpOworCisgICAgaWYgKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMob2xkRGF0YWJh
c2VEaXJlY3RvcnkpKSB7CisgICAgICAgIEZpbGVTeXN0ZW06Om1vdmVGaWxlKG9sZERhdGFiYXNl
RGlyZWN0b3J5LCBuZXdEYXRhYmFzZURpcmVjdG9yeSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRl
bGV0ZUVtcHR5RGlyZWN0b3J5KG9sZE9yaWdpbkRpcmVjdG9yeSk7CisgICAgfQorCisgICAgcmV0
dXJuIG5ld0RhdGFiYXNlRGlyZWN0b3J5OworfQorCiBib29sIElEQlNlcnZlcjo6aGFzRGF0YWJh
c2VBY3Rpdml0aWVzT25NYWluVGhyZWFkKCkgY29uc3QKIHsKICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL0lEQlNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L0lEQlNlcnZlci5oCmluZGV4IGQ4ODM2NDlhNWM4ZDViNTlmMDJjMmJkYWNkZGU2NzhhMWNhM2M0
MmYuLjEzZmI3MGJlMzc5YWFhOWMxMWY1OWQyNTRiOTZjMDcyOTRkYTA2MWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmgKQEAg
LTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJTdG9yYWdlUXVvdGFNYW5hZ2VyLmgiCiAjaW5jbHVk
ZSAiVW5pcXVlSURCRGF0YWJhc2UuaCIKICNpbmNsdWRlICJVbmlxdWVJREJEYXRhYmFzZUNvbm5l
Y3Rpb24uaCIKKyNpbmNsdWRlICJVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuaCIKICNpbmNsdWRl
IDxwYWwvSHlzdGVyZXNpc0FjdGl2aXR5Lmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgog
I2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZFRhc2tIYW5kbGVyLmg+CkBAIC00OCw4ICs0OSw3IEBA
IHN0cnVjdCBJREJHZXRSZWNvcmREYXRhOwogCiBuYW1lc3BhY2UgSURCU2VydmVyIHsKIAotY2xh
c3MgSURCU2VydmVyIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK2NsYXNzIElEQlNl
cnZlciA6IHB1YmxpYyBVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIgewogcHVibGljOgogICAgIHVz
aW5nIFN0b3JhZ2VRdW90YU1hbmFnZXJTcGFjZVJlcXVlc3RlciA9IEZ1bmN0aW9uPFN0b3JhZ2VR
dW90YU1hbmFnZXI6OkRlY2lzaW9uKGNvbnN0IENsaWVudE9yaWdpbiYsIHVpbnQ2NF90IHNwYWNl
UmVxdWVzdGVkKT47CiAgICAgV0VCQ09SRV9FWFBPUlQgSURCU2VydmVyKFBBTDo6U2Vzc2lvbklE
LCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwgU3RvcmFnZVF1b3RhTWFuYWdl
clNwYWNlUmVxdWVzdGVyJiYsIExvY2smKTsKQEAgLTg4LDE1ICs4OCwxMyBAQCBwdWJsaWM6CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhJ
REJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiwgY29u
c3QgQ2xpZW50T3JpZ2luJik7CiAKLQotICAgIHZvaWQgcmVnaXN0ZXJEYXRhYmFzZUNvbm5lY3Rp
b24oVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJik7Ci0gICAgdm9pZCB1bnJlZ2lzdGVyRGF0
YWJhc2VDb25uZWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYpOwotICAgIHZvaWQg
cmVnaXN0ZXJUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJik7Ci0gICAg
dm9pZCB1bnJlZ2lzdGVyVHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYp
OwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPFVuaXF1ZUlEQkRhdGFiYXNlPiBjbG9zZUFuZFRha2VV
bmlxdWVJREJEYXRhYmFzZShVbmlxdWVJREJEYXRhYmFzZSYpOwotCi0gICAgc3RkOjp1bmlxdWVf
cHRyPElEQkJhY2tpbmdTdG9yZT4gY3JlYXRlQmFja2luZ1N0b3JlKGNvbnN0IElEQkRhdGFiYXNl
SWRlbnRpZmllciYpOworICAgIC8vIFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlcgorICAgIHZvaWQg
cmVnaXN0ZXJDb25uZWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYpIGZpbmFsOwor
ICAgIHZvaWQgdW5yZWdpc3RlckNvbm5lY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9u
JikgZmluYWw7CisgICAgdm9pZCByZWdpc3RlclRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNl
VHJhbnNhY3Rpb24mKSBmaW5hbDsKKyAgICB2b2lkIHVucmVnaXN0ZXJUcmFuc2FjdGlvbihVbmlx
dWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJikgZmluYWw7CisgICAgc3RkOjp1bmlxdWVfcHRyPElE
QkJhY2tpbmdTdG9yZT4gY3JlYXRlQmFja2luZ1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlSWRlbnRp
ZmllciYpIGZpbmFsOworICAgIHZvaWQgcmVxdWVzdFNwYWNlKGNvbnN0IENsaWVudE9yaWdpbiYs
IHVpbnQ2NF90IHNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZpbmFsOwog
CiAgICAgV0VCQ09SRV9FWFBPUlQgSGFzaFNldDxTZWN1cml0eU9yaWdpbkRhdGE+IGdldE9yaWdp
bnMoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsb3NlQW5kRGVsZXRlRGF0YWJh
c2VzTW9kaWZpZWRTaW5jZShXYWxsVGltZSk7CkBAIC0xMDQsNyArMTAyLDYgQEAgcHVibGljOgog
ICAgIHZvaWQgY2xvc2VEYXRhYmFzZXNGb3JPcmlnaW5zKGNvbnN0IFZlY3RvcjxTZWN1cml0eU9y
aWdpbkRhdGE+JiwgRnVuY3Rpb248Ym9vbChjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25z
dCBDbGllbnRPcmlnaW4mKT4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW5hbWVPcmln
aW4oY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhJik7CiAKLSAgICBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbiBy
ZXF1ZXN0U3BhY2UoY29uc3QgQ2xpZW50T3JpZ2luJiwgdWludDY0X3QgdGFza1NpemUpOwogICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB1aW50NjRfdCBkaXNrVXNhZ2UoY29uc3QgU3RyaW5nJiBy
b290RGlyZWN0b3J5LCBjb25zdCBDbGllbnRPcmlnaW4mKTsKIAogICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgaGFzRGF0YWJhc2VBY3Rpdml0aWVzT25NYWluVGhyZWFkKCkgY29uc3Q7CkBAIC0xMTQs
NiArMTExLDcgQEAgcHJpdmF0ZToKICAgICBVbmlxdWVJREJEYXRhYmFzZSYgZ2V0T3JDcmVhdGVV
bmlxdWVJREJEYXRhYmFzZShjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImKTsKIAogICAgIHZv
aWQgdXBncmFkZUZpbGVzSWZOZWNlc3NhcnkoKTsKKyAgICBTdHJpbmcgdXBncmFkZWREYXRhYmFz
ZURpcmVjdG9yeShjb25zdCBXZWJDb3JlOjpJREJEYXRhYmFzZUlkZW50aWZpZXImKTsKICAgICB2
b2lkIHJlbW92ZURhdGFiYXNlc01vZGlmaWVkU2luY2VGb3JWZXJzaW9uKFdhbGxUaW1lLCBjb25z
dCBTdHJpbmcmKTsKICAgICB2b2lkIHJlbW92ZURhdGFiYXNlc1dpdGhPcmlnaW5zRm9yVmVyc2lv
bihjb25zdCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiYsIGNvbnN0IFN0cmluZyYpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5
SURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDdlZTQxNDBhOGFmMTgwMTFjOTZi
Y2E3YjYwOGQ4NjU5MThhZjg1ZWEuLmQ2MzM1MDMwOTkzMDU1YjliMTJiNzg0NTY1NWRhODMzNzJi
MWE1NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwCkBAIC00NCw5ICs0NCw4
IEBAIG5hbWVzcGFjZSBJREJTZXJ2ZXIgewogLy8gVGhlIEluZGV4ZWREQiBzcGVjIHN0YXRlcyB0
aGUgbWF4aW11bSB2YWx1ZSB5b3UgY2FuIGdldCBmcm9tIHRoZSBrZXkgZ2VuZXJhdG9yIGlzIDJe
NTMuCiBjb25zdGV4cHIgdWludDY0X3QgbWF4R2VuZXJhdGVkS2V5VmFsdWUgPSAweDIwMDAwMDAw
MDAwMDAwOwogCi1NZW1vcnlJREJCYWNraW5nU3RvcmU6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZShQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYgaWRl
bnRpZmllcikKK01lbW9yeUlEQkJhY2tpbmdTdG9yZTo6TWVtb3J5SURCQmFja2luZ1N0b3JlKGNv
bnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYgaWRlbnRpZmllcikKICAgICA6IG1faWRlbnRpZmll
cihpZGVudGlmaWVyKQotICAgICwgbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQogewogfQogCkBAIC0x
MzQsNyArMTMzLDcgQEAgSURCRXJyb3IgTWVtb3J5SURCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmpl
Y3RTdG9yZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHQKICAgICAgICAgcmV0dXJuIElE
QkVycm9yIHsgQ29uc3RyYWludEVycm9yIH07CiAKICAgICBBU1NFUlQoIW1fb2JqZWN0U3RvcmVz
QnlJZGVudGlmaWVyLmNvbnRhaW5zKGluZm8uaWRlbnRpZmllcigpKSk7Ci0gICAgYXV0byBvYmpl
Y3RTdG9yZSA9IE1lbW9yeU9iamVjdFN0b3JlOjpjcmVhdGUobV9zZXNzaW9uSUQsIGluZm8pOwor
ICAgIGF1dG8gb2JqZWN0U3RvcmUgPSBNZW1vcnlPYmplY3RTdG9yZTo6Y3JlYXRlKGluZm8pOwog
CiAgICAgbV9kYXRhYmFzZUluZm8tPmFkZEV4aXN0aW5nT2JqZWN0U3RvcmUoaW5mbyk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJ
REJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9NZW1vcnlJREJCYWNraW5nU3RvcmUuaAppbmRleCA5MmFhNzYwZDIwNzMzNzE4ZmJkYjhjMDQ0
Y2ZlNjdkY2FiMTY1MzM1Li4wOTMwMWU4M2ZjYTdjNzUwOWUyODU4MTEwYzEyNzgzNTMzNThmM2Rh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVt
b3J5SURCQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5oCkBAIC0zMCw3ICszMCw2IEBACiAjaW5j
bHVkZSAiSURCUmVzb3VyY2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSW5kZXhLZXkuaCIKICNp
bmNsdWRlICJNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbi5oIgotI2luY2x1ZGUgPHBhbC9T
ZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC00MSw4ICs0MCw4IEBAIGNsYXNzIE1lbW9yeU9iamVjdFN0b3JlOwogY2xhc3MgTWVt
b3J5SURCQmFja2luZ1N0b3JlIGZpbmFsIDogcHVibGljIElEQkJhY2tpbmdTdG9yZSB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgTWVtb3J5SURCQmFja2luZ1N0
b3JlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImKTsKLSAgICB+
TWVtb3J5SURCQmFja2luZ1N0b3JlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgTWVt
b3J5SURCQmFja2luZ1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYpOworICAgIFdF
QkNPUkVfRVhQT1JUIH5NZW1vcnlJREJCYWNraW5nU3RvcmUoKTsKIAogICAgIElEQkVycm9yIGdl
dE9yRXN0YWJsaXNoRGF0YWJhc2VJbmZvKElEQkRhdGFiYXNlSW5mbyYpIGZpbmFsOwogICAgIHVp
bnQ2NF90IGRhdGFiYXNlVmVyc2lvbigpIGZpbmFsOwpAQCAtOTIsNyArOTEsNiBAQCBwcml2YXRl
OgogICAgIHZvaWQgdW5yZWdpc3Rlck9iamVjdFN0b3JlKE1lbW9yeU9iamVjdFN0b3JlJik7CiAK
ICAgICBJREJEYXRhYmFzZUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwotICAgIFBBTDo6U2Vzc2lv
bklEIG1fc2Vzc2lvbklEOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJREJEYXRhYmFzZUluZm8+IG1f
ZGF0YWJhc2VJbmZvOwogCiAgICAgSGFzaE1hcDxJREJSZXNvdXJjZUlkZW50aWZpZXIsIHN0ZDo6
dW5pcXVlX3B0cjxNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbj4+IG1fdHJhbnNhY3Rpb25z
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01l
bW9yeU9iamVjdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9NZW1vcnlPYmplY3RTdG9yZS5jcHAKaW5kZXggOWRkYzBmY2Y5OTE5M2YzMzRiZGM1ZDQy
NjFlYTM5MWRlNGJhYWI3YS4uZTAxZWUwMmI3MTUyMzk5Y2M3MjZmYjE4YmMzNDkxNDYwNGRlNzNl
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01l
bW9yeU9iamVjdFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuY3BwCkBAIC0zOCwxOCArMzgsMTcgQEAKICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NKU1ZhbHVlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSlNDSlNWYWx1ZUlubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0xvY2su
aD4KLSNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVz
aW5nIG5hbWVzcGFjZSBKU0M7CiBuYW1lc3BhY2UgSURCU2VydmVyIHsKIAotUmVmPE1lbW9yeU9i
amVjdFN0b3JlPiBNZW1vcnlPYmplY3RTdG9yZTo6Y3JlYXRlKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiBpbmZvKQorUmVmPE1lbW9yeU9iamVjdFN0
b3JlPiBNZW1vcnlPYmplY3RTdG9yZTo6Y3JlYXRlKGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYg
aW5mbykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZW1vcnlPYmplY3RTdG9yZShzZXNz
aW9uSUQsIGluZm8pKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZW1vcnlPYmplY3RTdG9y
ZShpbmZvKSk7CiB9CiAKLU1lbW9yeU9iamVjdFN0b3JlOjpNZW1vcnlPYmplY3RTdG9yZShQQUw6
OlNlc3Npb25JRCwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiBpbmZvKQorTWVtb3J5T2JqZWN0
U3RvcmU6Ok1lbW9yeU9iamVjdFN0b3JlKGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYgaW5mbykK
ICAgICA6IG1faW5mbyhpbmZvKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuaAppbmRleCA4NzFk
ZWI1ZTRhZTA1MTQ4MmI5MDg5Njg5NWVhMzFjMjc2ZGQzMDg2Li5mMDNhM2ExYjBhZDUzNGI5ZjMz
OWM0ZmJkN2U3NDBhZGYyMjg0NzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuaApAQCAtMzQsMTAg
KzM0LDYgQEAKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CiAKLW5hbWVzcGFjZSBQQUwgewotY2xhc3MgU2Vzc2lvbklEOwotfQotCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIElEQkN1cnNvckluZm87CkBAIC02MSw3ICs1Nyw3IEBAIHR5
cGVkZWYgSGFzaE1hcDxJREJLZXlEYXRhLCBUaHJlYWRTYWZlRGF0YUJ1ZmZlciwgSURCS2V5RGF0
YUhhc2gsIElEQktleURhdGFIYXNoCiAKIGNsYXNzIE1lbW9yeU9iamVjdFN0b3JlIDogcHVibGlj
IFJlZkNvdW50ZWQ8TWVtb3J5T2JqZWN0U3RvcmU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
PE1lbW9yeU9iamVjdFN0b3JlPiBjcmVhdGUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IElEQk9iamVj
dFN0b3JlSW5mbyYpOworICAgIHN0YXRpYyBSZWY8TWVtb3J5T2JqZWN0U3RvcmU+IGNyZWF0ZShj
b25zdCBJREJPYmplY3RTdG9yZUluZm8mKTsKIAogICAgIH5NZW1vcnlPYmplY3RTdG9yZSgpOwog
CkBAIC0xMDgsNyArMTA0LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVuYW1lSW5kZXgoTWVtb3J5
SW5kZXgmLCBjb25zdCBTdHJpbmcmIG5ld05hbWUpOwogCiBwcml2YXRlOgotICAgIE1lbW9yeU9i
amVjdFN0b3JlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mKTsKKyAg
ICBNZW1vcnlPYmplY3RTdG9yZShjb25zdCBJREJPYmplY3RTdG9yZUluZm8mKTsKIAogICAgIElE
QktleURhdGFTZXQ6Oml0ZXJhdG9yIGxvd2VzdEl0ZXJhdG9ySW5SYW5nZShjb25zdCBJREJLZXlS
YW5nZURhdGEmLCBib29sIHJldmVyc2UpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5n
U3RvcmUuY3BwCmluZGV4IDc4NDYxZjEzNmY3N2I0OGUwNDI1NTY5OWQ4ZDlhYzg0OWQ5YzQ2NWQu
LjkyMWFhMmIwYjg4MDliM2E0ZGNmNzMyMTg5ZGI5MDlhNDYwYWIxOGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3Rv
cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxp
dGVJREJCYWNraW5nU3RvcmUuY3BwCkBAIC0yMzYsMTIgKzIzNiwxMCBAQCBzdGF0aWMgQVNDSUlM
aXRlcmFsIGluZGV4SW5mb1RhYmxlU2NoZW1hVGVtcCgpCiAgICAgcmV0dXJuIFRBQkxFX1NDSEVN
QV9QUkVGSVggIl9UZW1wX0luZGV4SW5mbyIgSU5ERVhfSU5GT19UQUJMRV9TQ0hFTUFfU1VGRklY
OwogfQogCi1TUUxpdGVJREJCYWNraW5nU3RvcmU6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZShQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYgaWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZVJvb3REaXJlY3RvcnkpCi0gICAgOiBtX3Nlc3Np
b25JRChzZXNzaW9uSUQpCi0gICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKLSAgICAsIG1f
ZGF0YWJhc2VSb290RGlyZWN0b3J5KGRhdGFiYXNlUm9vdERpcmVjdG9yeSkKK1NRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6U1FMaXRlSURCQmFja2luZ1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlSWRlbnRp
ZmllciYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZURpcmVjdG9yeSkKKyAgICA6
IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQorICAgICwgbV9kYXRhYmFzZURpcmVjdG9yeShkYXRh
YmFzZURpcmVjdG9yeSkKIHsKLSAgICBtX2RhdGFiYXNlRGlyZWN0b3J5ID0gZnVsbERhdGFiYXNl
RGlyZWN0b3J5V2l0aFVwZ3JhZGUoKTsKIH0KIAogU1FMaXRlSURCQmFja2luZ1N0b3JlOjp+U1FM
aXRlSURCQmFja2luZ1N0b3JlKCkKQEAgLTkxMiwxOSArOTEwLDI5IEBAIHN0ZDo6dW5pcXVlX3B0
cjxJREJEYXRhYmFzZUluZm8+IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZXh0cmFjdEV4aXN0aW5n
RGF0YWJhc2VJCiAgICAgcmV0dXJuIGRhdGFiYXNlSW5mbzsKIH0KIAotU3RyaW5nIFNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6ZmlsZW5hbWVGb3JEYXRhYmFzZU5hbWUoKSBjb25zdAorU3RyaW5nIFNR
TGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZW5jb2RlRGF0YWJhc2VOYW1lKGNvbnN0IFN0cmluZyYgZGF0
YWJhc2VOYW1lKQogewotICAgIEFTU0VSVCghbV9pZGVudGlmaWVyLmRhdGFiYXNlTmFtZSgpLmlz
TnVsbCgpKTsKLQotICAgIGlmIChtX2lkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCkuaXNFbXB0eSgp
KQorICAgIEFTU0VSVCghZGF0YWJhc2VOYW1lLmlzRW1wdHkoKSk7CisgICAgaWYgKGRhdGFiYXNl
TmFtZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAiJTAwIjsKIAotICAgIFN0cmluZyBmaWxl
bmFtZSA9IEZpbGVTeXN0ZW06OmVuY29kZUZvckZpbGVOYW1lKG1faWRlbnRpZmllci5kYXRhYmFz
ZU5hbWUoKSk7Ci0gICAgZmlsZW5hbWUucmVwbGFjZSgnLicsICIlMkUiKTsKKyAgICBTdHJpbmcg
ZmlsZW5hbWUgPSBGaWxlU3lzdGVtOjplbmNvZGVGb3JGaWxlTmFtZShkYXRhYmFzZU5hbWUpOwor
ICAgIGZpbGVuYW1lLnJlcGxhY2VXaXRoTGl0ZXJhbCgnLicsICIlMkUiKTsKIAogICAgIHJldHVy
biBmaWxlbmFtZTsKIH0KIAorU3RyaW5nIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVjb2RlRGF0
YWJhc2VOYW1lKGNvbnN0IFN0cmluZyYgZW5jb2RlZE5hbWUpCit7CisgICAgaWYgKGVuY29kZWRO
YW1lID09ICIlMDAiX3MpCisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOworCisgICAgU3Ry
aW5nIG5hbWUgPSBlbmNvZGVkTmFtZTsKKyAgICBuYW1lLnJlcGxhY2UoIiUyRSJfcywgIi4iX3Mp
OworCisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OmRlY29kZUZyb21GaWxlbmFtZShuYW1lKTsKK30K
KwogU3RyaW5nIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZnVsbERhdGFiYXNlUGF0aEZvckRpcmVj
dG9yeShjb25zdCBTdHJpbmcmIGZ1bGxEYXRhYmFzZURpcmVjdG9yeSkKIHsKICAgICByZXR1cm4g
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGZ1bGxEYXRhYmFzZURpcmVjdG9y
eSwgIkluZGV4ZWREQi5zcWxpdGUzIik7CkBAIC05NjUsMjMgKzk3Myw2IEBAIHN0ZDo6b3B0aW9u
YWw8SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbj4gU1FMaXRlSURCQmFja2luZ1N0b3JlOjpkYXRh
YmFzZU5hbWVBbmRWCiAgICAgcmV0dXJuIElEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24geyBkYXRh
YmFzZU5hbWUsICpkYXRhYmFzZVZlcnNpb24gfTsKIH0KIAotU3RyaW5nIFNRTGl0ZUlEQkJhY2tp
bmdTdG9yZTo6ZnVsbERhdGFiYXNlRGlyZWN0b3J5V2l0aFVwZ3JhZGUoKQotewotICAgIFN0cmlu
ZyBvbGRPcmlnaW5EaXJlY3RvcnkgPSBtX2lkZW50aWZpZXIuZGF0YWJhc2VEaXJlY3RvcnlSZWxh
dGl2ZVRvUm9vdChtX2RhdGFiYXNlUm9vdERpcmVjdG9yeSwgInYwIik7Ci0gICAgU3RyaW5nIG9s
ZERhdGFiYXNlRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KG9sZE9yaWdpbkRpcmVjdG9yeSwgZmlsZW5hbWVGb3JEYXRhYmFzZU5hbWUoKSk7Ci0gICAgU3Ry
aW5nIG5ld09yaWdpbkRpcmVjdG9yeSA9IG1faWRlbnRpZmllci5kYXRhYmFzZURpcmVjdG9yeVJl
bGF0aXZlVG9Sb290KG1fZGF0YWJhc2VSb290RGlyZWN0b3J5LCAidjEiKTsKLSAgICBTdHJpbmcg
ZmlsZU5hbWVIYXNoID0gU1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0ZUhhc2hGb3JGaWxlTmFtZSht
X2lkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCkpOwotICAgIFN0cmluZyBuZXdEYXRhYmFzZURpcmVj
dG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChuZXdPcmlnaW5EaXJl
Y3RvcnksIGZpbGVOYW1lSGFzaCk7Ci0gICAgRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVz
KG5ld0RhdGFiYXNlRGlyZWN0b3J5KTsKLQotICAgIGlmIChGaWxlU3lzdGVtOjpmaWxlRXhpc3Rz
KG9sZERhdGFiYXNlRGlyZWN0b3J5KSkgewotICAgICAgICBGaWxlU3lzdGVtOjptb3ZlRmlsZShv
bGREYXRhYmFzZURpcmVjdG9yeSwgbmV3RGF0YWJhc2VEaXJlY3RvcnkpOwotICAgICAgICBGaWxl
U3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeShvbGRPcmlnaW5EaXJlY3RvcnkpOwotICAgIH0K
LQotICAgIHJldHVybiBuZXdEYXRhYmFzZURpcmVjdG9yeTsKLX0KLQogSURCRXJyb3IgU1FMaXRl
SURCQmFja2luZ1N0b3JlOjpnZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbyhJREJEYXRhYmFzZUlu
Zm8mIGluZm8pCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
Z2V0T3JFc3RhYmxpc2hEYXRhYmFzZUluZm8gLSBkYXRhYmFzZSAlcyIsIG1faWRlbnRpZmllci5k
YXRhYmFzZU5hbWUoKS51dGY4KCkuZGF0YSgpKTsKQEAgLTk5MSwxMSArOTgyLDExIEBAIElEQkVy
cm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0T3JFc3RhYmxpc2hEYXRhYmFzZUluZm8oSURC
RGF0YWJhc2VJbmZvJiBpbmZvCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IH07CiAgICAgfQog
Ci0gICAgU3RyaW5nIGRiRmlsZW5hbWUgPSBmdWxsRGF0YWJhc2VQYXRoKCk7Ci0KKyAgICBTdHJp
bmcgZGF0YWJhc2VQYXRoID0gZnVsbERhdGFiYXNlUGF0aCgpOworICAgIEZpbGVTeXN0ZW06Om1h
a2VBbGxEaXJlY3RvcmllcyhGaWxlU3lzdGVtOjpwYXJlbnRQYXRoKGRhdGFiYXNlUGF0aCkpOwog
ICAgIG1fc3FsaXRlREIgPSBtYWtlVW5pcXVlPFNRTGl0ZURhdGFiYXNlPigpOwotICAgIGlmICgh
bV9zcWxpdGVEQi0+b3BlbihkYkZpbGVuYW1lKSkgewotICAgICAgICBMT0dfRVJST1IoIkZhaWxl
ZCB0byBvcGVuIFNRTGl0ZSBkYXRhYmFzZSBhdCBwYXRoICclcyciLCBkYkZpbGVuYW1lLnV0Zjgo
KS5kYXRhKCkpOworICAgIGlmICghbV9zcWxpdGVEQi0+b3BlbihkYXRhYmFzZVBhdGgpKSB7Cisg
ICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIG9wZW4gU1FMaXRlIGRhdGFiYXNlIGF0IHBhdGgg
JyVzJyIsIGRhdGFiYXNlUGF0aC51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgY2xvc2VTUUxpdGVE
QigpOwogICAgIH0KIApAQCAtMTA0NCw3ICsxMDM1LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFj
a2luZ1N0b3JlOjpnZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbyhJREJEYXRhYmFzZUluZm8mIGlu
Zm8KICAgICAgICAgZGF0YWJhc2VJbmZvID0gY3JlYXRlQW5kUG9wdWxhdGVJbml0aWFsRGF0YWJh
c2VJbmZvKCk7CiAKICAgICBpZiAoIWRhdGFiYXNlSW5mbykgewotICAgICAgICBMT0dfRVJST1Io
IlVuYWJsZSB0byBlc3RhYmxpc2ggSURCIGRhdGFiYXNlIGF0IHBhdGggJyVzJyIsIGRiRmlsZW5h
bWUudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGVzdGFibGlz
aCBJREIgZGF0YWJhc2UgYXQgcGF0aCAnJXMnIiwgZGF0YWJhc2VQYXRoLnV0ZjgoKS5kYXRhKCkp
OwogICAgICAgICBjbG9zZVNRTGl0ZURCKCk7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVu
a25vd25FcnJvciwgIlVuYWJsZSB0byBlc3RhYmxpc2ggSURCIGRhdGFiYXNlIGZpbGUiX3MgfTsK
ICAgICB9CkBAIC0yNzk4LDcgKzI3ODksNiBAQCB2b2lkIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
ZGVsZXRlQmFja2luZ1N0b3JlKCkKIAogICAgIFNRTGl0ZUZpbGVTeXN0ZW06OmRlbGV0ZURhdGFi
YXNlRmlsZShkYXRhYmFzZVBhdGgpOwogICAgIFNRTGl0ZUZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5
RGF0YWJhc2VEaXJlY3RvcnkobV9kYXRhYmFzZURpcmVjdG9yeSk7Ci0gICAgU1FMaXRlRmlsZVN5
c3RlbTo6ZGVsZXRlRW1wdHlEYXRhYmFzZURpcmVjdG9yeShtX2lkZW50aWZpZXIuZGF0YWJhc2VE
aXJlY3RvcnlSZWxhdGl2ZVRvUm9vdChtX2RhdGFiYXNlUm9vdERpcmVjdG9yeSkpOwogfQogCiB2
b2lkIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5yZWdpc3RlckN1cnNvcihTUUxpdGVJREJDdXJz
b3ImIGN1cnNvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaAppbmRleCAyZWZlNmIyYTM0
MTk5M2JiMjZmZGY5MWNmZjZlN2RlYThkYmJlZDM2Li43MzFhOWE0MTkzODY1ZTNjNWYzYzM1ZWQ3
NTcxYjEyODJmNzgwOTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5oCkBAIC01MSw5
ICs1MSw4IEBAIGNsYXNzIFNRTGl0ZUlEQkN1cnNvcjsKIGNsYXNzIFNRTGl0ZUlEQkJhY2tpbmdT
dG9yZSBmaW5hbCA6IHB1YmxpYyBJREJCYWNraW5nU3RvcmUgewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgotICAgIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZShQQUw6OlNlc3Np
b25JRCwgY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJiwgY29uc3QgU3RyaW5nJiBkYXRhYmFz
ZVJvb3REaXJlY3RvcnkpOwotICAgIAotICAgIH5TUUxpdGVJREJCYWNraW5nU3RvcmUoKSBmaW5h
bDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTUUxpdGVJREJCYWNraW5nU3RvcmUoY29uc3QgSURCRGF0
YWJhc2VJZGVudGlmaWVyJiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZURpcmVjdG9yeSk7CisgICAg
V0VCQ09SRV9FWFBPUlQgflNRTGl0ZUlEQkJhY2tpbmdTdG9yZSgpIGZpbmFsOwogCiAgICAgSURC
RXJyb3IgZ2V0T3JFc3RhYmxpc2hEYXRhYmFzZUluZm8oSURCRGF0YWJhc2VJbmZvJikgZmluYWw7
CiAgICAgdWludDY0X3QgZGF0YWJhc2VWZXJzaW9uKCkgZmluYWw7CkBAIC05NCwxOCArOTMsMTUg
QEAgcHVibGljOgogCiAgICAgSURCRXJyb3IgZ2V0QmxvYlJlY29yZHNGb3JPYmplY3RTdG9yZVJl
Y29yZChpbnQ2NF90IG9iamVjdFN0b3JlUmVjb3JkLCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMs
IFZlY3RvcjxTdHJpbmc+JiBibG9iRmlsZVBhdGhzKTsKIAotICAgIHN0YXRpYyB1aW50NjRfdCBk
YXRhYmFzZXNTaXplRm9yRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKLQorICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB1aW50NjRfdCBkYXRhYmFzZXNTaXplRm9yRGlyZWN0b3J5
KGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKICAgICBTdHJpbmcgZGF0YWJhc2VEaXJlY3Rvcnko
KSBjb25zdCB7IHJldHVybiBtX2RhdGFiYXNlRGlyZWN0b3J5OyB9OwotICAgIHN0YXRpYyBTdHJp
bmcgZnVsbERhdGFiYXNlUGF0aEZvckRpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKLSAgICBzdGF0
aWMgc3RkOjpvcHRpb25hbDxJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiBkYXRhYmFzZU5hbWVB
bmRWZXJzaW9uRnJvbUZpbGUoY29uc3QgU3RyaW5nJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFN0cmluZyBmdWxsRGF0YWJhc2VQYXRoRm9yRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcgZW5jb2RlRGF0YWJhc2VOYW1lKGNvbnN0
IFN0cmluZyYgZGF0YWJhc2VOYW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5n
IGRlY29kZURhdGFiYXNlTmFtZShjb25zdCBTdHJpbmcmIGVuY29kZWREYXRhYmFzZU5hbWUpOwog
Ci0gICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9u
SUQ7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjpvcHRpb25hbDxJREJEYXRhYmFz
ZU5hbWVBbmRWZXJzaW9uPiBkYXRhYmFzZU5hbWVBbmRWZXJzaW9uRnJvbUZpbGUoY29uc3QgU3Ry
aW5nJik7CiAKIHByaXZhdGU6Ci0gICAgU3RyaW5nIGZpbGVuYW1lRm9yRGF0YWJhc2VOYW1lKCkg
Y29uc3Q7Ci0gICAgU3RyaW5nIGZ1bGxEYXRhYmFzZURpcmVjdG9yeVdpdGhVcGdyYWRlKCk7Ci0K
ICAgICBJREJFcnJvciBlbnN1cmVWYWxpZFJlY29yZHNUYWJsZSgpOwogICAgIElEQkVycm9yIGVu
c3VyZVZhbGlkSW5kZXhSZWNvcmRzVGFibGUoKTsKICAgICBJREJFcnJvciBlbnN1cmVWYWxpZElu
ZGV4UmVjb3Jkc0luZGV4KCk7CkBAIC0yMDYsNyArMjAyLDYgQEAgcHJpdmF0ZToKIAogICAgIHN0
ZDo6dW5pcXVlX3B0cjxTUUxpdGVTdGF0ZW1lbnQ+IG1fY2FjaGVkU3RhdGVtZW50c1tzdGF0aWNf
Y2FzdDxpbnQ+KFNRTDo6SW52YWxpZCldOwogCi0gICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9u
SUQ7CiAgICAgSURCRGF0YWJhc2VJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8SURCRGF0YWJhc2VJbmZvPiBtX2RhdGFiYXNlSW5mbzsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8SURCRGF0YWJhc2VJbmZvPiBtX29yaWdpbmFsRGF0YWJhc2VJbmZvQmVmb3JlVmVyc2lv
bkNoYW5nZTsKQEAgLTIxNiw3ICsyMTEsNiBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8SURCUmVz
b3VyY2VJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlSURCVHJhbnNhY3Rpb24+PiBt
X3RyYW5zYWN0aW9uczsKICAgICBIYXNoTWFwPElEQlJlc291cmNlSWRlbnRpZmllciwgU1FMaXRl
SURCQ3Vyc29yKj4gbV9jdXJzb3JzOwogCi0gICAgU3RyaW5nIG1fZGF0YWJhc2VSb290RGlyZWN0
b3J5OwogICAgIFN0cmluZyBtX2RhdGFiYXNlRGlyZWN0b3J5OwogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJE
YXRhYmFzZS5jcHAKaW5kZXggMmIxZWFkYjllYTVjNDY0ZDAyNzVlZDIyM2Y1MDAzYjdiZWYxNTcz
My4uNWI1MGQyOThjZTNmMmU0YjY2NzJlZTAyZmJlNmY2Y2Q4MmY4NmJlNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVl
SURCRGF0YWJhc2UuY3BwCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgog
I2luY2x1ZGUgIlN0b3JhZ2VRdW90YU1hbmFnZXIuaCIKICNpbmNsdWRlICJVbmlxdWVJREJEYXRh
YmFzZUNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuaCIK
ICNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTM0LDgg
KzEzNSw4IEBAIHN0YXRpYyBpbmxpbmUgdWludDY0X3QgZXN0aW1hdGVTaXplKGNvbnN0IElEQk9i
amVjdFN0b3JlSW5mbyYgaW5mbykKICAgICByZXR1cm4gc2l6ZTsKIH0KIAotVW5pcXVlSURCRGF0
YWJhc2U6OlVuaXF1ZUlEQkRhdGFiYXNlKElEQlNlcnZlciYgc2VydmVyLCBjb25zdCBJREJEYXRh
YmFzZUlkZW50aWZpZXImIGlkZW50aWZpZXIpCi0gICAgOiBtX3NlcnZlcihzZXJ2ZXIpCitVbmlx
dWVJREJEYXRhYmFzZTo6VW5pcXVlSURCRGF0YWJhc2UoVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2Vy
JiBtYW5hZ2VyLCBjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImIGlkZW50aWZpZXIpCisgICAg
OiBtX21hbmFnZXIobWFuYWdlcikKICAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogewog
ICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwpAQCAtMTYzLDYgKzE2NCwxMSBAQCBjb25zdCBJ
REJEYXRhYmFzZUluZm8mIFVuaXF1ZUlEQkRhdGFiYXNlOjppbmZvKCkgY29uc3QKICAgICByZXR1
cm4gKm1fZGF0YWJhc2VJbmZvOwogfQogCitVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIqIFVuaXF1
ZUlEQkRhdGFiYXNlOjptYW5hZ2VyKCkKK3sKKyAgICByZXR1cm4gbV9tYW5hZ2VyLmdldCgpOwor
fQorCiB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuRGF0YWJhc2VDb25uZWN0aW9uKElEQkNv
bm5lY3Rpb25Ub0NsaWVudCYgY29ubmVjdGlvbiwgY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVl
c3REYXRhKQogewogICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6b3BlbkRh
dGFiYXNlQ29ubmVjdGlvbiIpOwpAQCAtMTg1LDE3ICsxOTEsNDUgQEAgdm9pZCBVbmlxdWVJREJE
YXRhYmFzZTo6cGVyZm9ybUN1cnJlbnRPcGVuT3BlcmF0aW9uKCkKICAgICBBU1NFUlQobV9jdXJy
ZW50T3BlbkRCUmVxdWVzdCk7CiAgICAgQVNTRVJUKG1fY3VycmVudE9wZW5EQlJlcXVlc3QtPmlz
T3BlblJlcXVlc3QoKSk7CiAKKyAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGNyZWF0ZSB0aGUgZmls
ZSBzbyBubyBuZWVkIHRvIGRvIHNwYWNlIGNoZWNrLgorICAgIGlmIChtX2JhY2tpbmdTdG9yZSkK
KyAgICAgICAgcmV0dXJuIHBlcmZvcm1DdXJyZW50T3Blbk9wZXJhdGlvbkFmdGVyU3BhY2VDaGVj
ayh0cnVlKTsKKworICAgIGlmICghbV9tYW5hZ2VyKQorICAgICAgICByZXR1cm4gcGVyZm9ybUN1
cnJlbnRPcGVuT3BlcmF0aW9uQWZ0ZXJTcGFjZUNoZWNrKGZhbHNlKTsKKworICAgIGF1dG8gcmVx
dWVzdElkZW50aWZpZXIgPSBtX2N1cnJlbnRPcGVuREJSZXF1ZXN0LT5yZXF1ZXN0RGF0YSgpLnJl
cXVlc3RJZGVudGlmaWVyKCk7CisgICAgaWYgKG1fb3BlbkRCUmVxdWVzdHNGb3JTcGFjZUNoZWNr
LmNvbnRhaW5zKHJlcXVlc3RJZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9v
cGVuREJSZXF1ZXN0c0ZvclNwYWNlQ2hlY2suYWRkKHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICBt
X21hbmFnZXItPnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIGRlZmF1bHRXcml0
ZU9wZXJhdGlvbkNvc3QsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCByZXF1
ZXN0SWRlbnRpZmllcl0oYm9vbCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFr
VGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBtX29wZW5EQlJlcXVlc3RzRm9y
U3BhY2VDaGVjay5yZW1vdmUocmVxdWVzdElkZW50aWZpZXIpOworICAgICAgICBpZiAobV9jdXJy
ZW50T3BlbkRCUmVxdWVzdC0+cmVxdWVzdERhdGEoKS5yZXF1ZXN0SWRlbnRpZmllcigpICE9IHJl
cXVlc3RJZGVudGlmaWVyKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHBlcmZvcm1D
dXJyZW50T3Blbk9wZXJhdGlvbkFmdGVyU3BhY2VDaGVjayhncmFudGVkKTsKKyAgICB9KTsKK30K
Kwordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybUN1cnJlbnRPcGVuT3BlcmF0aW9uQWZ0
ZXJTcGFjZUNoZWNrKGJvb2wgaXNHcmFudGVkKQoreworICAgIExPRyhJbmRleGVkREIsICJVbmlx
dWVJREJEYXRhYmFzZTo6cGVyZm9ybUN1cnJlbnRPcGVuT3BlcmF0aW9uQWZ0ZXJTcGFjZVJlcXVl
c3QgKCVwKSIsIHRoaXMpOworCiAgICAgSURCRXJyb3IgYmFja2luZ1N0b3JlT3BlbkVycm9yOwog
ICAgIGlmICghbV9iYWNraW5nU3RvcmUpIHsKLSAgICAgICAgLy8gUXVvdGEgY2hlY2suCi0gICAg
ICAgIGF1dG8gZGVjaXNpb24gPSBtX3NlcnZlci5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9y
aWdpbigpLCBkZWZhdWx0V3JpdGVPcGVyYXRpb25Db3N0KTsKLSAgICAgICAgaWYgKGRlY2lzaW9u
ID09IFN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uOjpEZW55KQorICAgICAgICBpZiAoIW1f
bWFuYWdlcikKKyAgICAgICAgICAgIGJhY2tpbmdTdG9yZU9wZW5FcnJvciA9IElEQkVycm9yIHsg
SW52YWxpZFN0YXRlRXJyb3IgfTsKKyAgICAgICAgZWxzZSBpZiAoIWlzR3JhbnRlZCkKICAgICAg
ICAgICAgIGJhY2tpbmdTdG9yZU9wZW5FcnJvciA9IElEQkVycm9yIHsgUXVvdGFFeGNlZWRlZEVy
cm9yLCBxdW90YUVycm9yTWVzc2FnZU5hbWUoIk9wZW5CYWNraW5nU3RvcmUiKSB9OwogICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICAgIG1fYmFja2luZ1N0b3JlID0gbV9zZXJ2ZXIuY3JlYXRlQmFj
a2luZ1N0b3JlKG1faWRlbnRpZmllcik7CisgICAgICAgICAgICBtX2JhY2tpbmdTdG9yZSA9IG1f
bWFuYWdlci0+Y3JlYXRlQmFja2luZ1N0b3JlKG1faWRlbnRpZmllcik7CiAgICAgICAgICAgICBJ
REJEYXRhYmFzZUluZm8gZGF0YWJhc2VJbmZvOwogICAgICAgICAgICAgYmFja2luZ1N0b3JlT3Bl
bkVycm9yID0gbV9iYWNraW5nU3RvcmUtPmdldE9yRXN0YWJsaXNoRGF0YWJhc2VJbmZvKGRhdGFi
YXNlSW5mbyk7Ci0gICAgICAgICAgICBpZiAoYmFja2luZ1N0b3JlT3BlbkVycm9yLmlzTnVsbCgp
KQorICAgICAgICAgICAgaWYgKCFiYWNraW5nU3RvcmVPcGVuRXJyb3IpCiAgICAgICAgICAgICAg
ICAgbV9kYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oZGF0YWJhc2VJ
bmZvKTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIExPR19FUlJPUigiRmFp
bGVkIHRvIGdldCBkYXRhYmFzZSBpbmZvICclcyciLCBiYWNraW5nU3RvcmVPcGVuRXJyb3IubWVz
c2FnZSgpLnV0ZjgoKS5kYXRhKCkpOwpAQCAtMjA0LDcgKzIzOCw3IEBAIHZvaWQgVW5pcXVlSURC
RGF0YWJhc2U6OnBlcmZvcm1DdXJyZW50T3Blbk9wZXJhdGlvbigpCiAgICAgICAgIH0KICAgICB9
CiAKLSAgICBpZiAoIWJhY2tpbmdTdG9yZU9wZW5FcnJvci5pc051bGwoKSkgeworICAgIGlmIChi
YWNraW5nU3RvcmVPcGVuRXJyb3IpIHsKICAgICAgICAgYXV0byByZXN1bHQgPSBJREJSZXN1bHRE
YXRhOjplcnJvcihtX2N1cnJlbnRPcGVuREJSZXF1ZXN0LT5yZXF1ZXN0RGF0YSgpLnJlcXVlc3RJ
ZGVudGlmaWVyKCksIGJhY2tpbmdTdG9yZU9wZW5FcnJvcik7CiAgICAgICAgIG1fY3VycmVudE9w
ZW5EQlJlcXVlc3QtPmNvbm5lY3Rpb24oKS5kaWRPcGVuRGF0YWJhc2UocmVzdWx0KTsKICAgICAg
ICAgbV9jdXJyZW50T3BlbkRCUmVxdWVzdCA9IG51bGxwdHI7CkBAIC0yOTQsNyArMzI4LDcgQEAg
dm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlQmFja2luZ1N0b3JlKCkKICAgICBBU1NFUlQo
IWlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6
OmRlbGV0ZUJhY2tpbmdTdG9yZSIpOwogICAgIAotICAgIGF1dG8gYmFja2luZ1N0b3JlID0gbV9i
YWNraW5nU3RvcmUgPyBzdGQ6OmV4Y2hhbmdlKG1fYmFja2luZ1N0b3JlLCBudWxscHRyKSA6IG1f
c2VydmVyLmNyZWF0ZUJhY2tpbmdTdG9yZShtX2lkZW50aWZpZXIpOworICAgIGF1dG8gYmFja2lu
Z1N0b3JlID0gbV9iYWNraW5nU3RvcmUgPyBzdGQ6OmV4Y2hhbmdlKG1fYmFja2luZ1N0b3JlLCBu
dWxscHRyKSA6IG1fbWFuYWdlci0+Y3JlYXRlQmFja2luZ1N0b3JlKG1faWRlbnRpZmllcik7CiAg
ICAgdWludDY0X3QgZGVsZXRlZFZlcnNpb24gPSBiYWNraW5nU3RvcmUtPmRhdGFiYXNlVmVyc2lv
bigpOwogICAgIGJhY2tpbmdTdG9yZS0+ZGVsZXRlQmFja2luZ1N0b3JlKCk7CiAgICAgZGlkRGVs
ZXRlQmFja2luZ1N0b3JlKGRlbGV0ZWRWZXJzaW9uKTsKQEAgLTU0MiwyMCArNTc2LDMyIEBAIHZv
aWQgVW5pcXVlSURCRGF0YWJhc2U6OmFkZE9wZW5EYXRhYmFzZUNvbm5lY3Rpb24oUmVmPFVuaXF1
ZUlEQkRhdGFiYXNlQ29ubmVjdGlvCiAgICAgbV9vcGVuRGF0YWJhc2VDb25uZWN0aW9ucy5hZGQo
YWRvcHRSZWYoY29ubmVjdGlvbi5sZWFrUmVmKCkpKTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRh
YmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJh
bnNhY3Rpb24sIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYgaW5mbywgRXJyb3JDYWxsYmFjayBj
YWxsYmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlKFVuaXF1
ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBjb25zdCBJREJPYmplY3RTdG9y
ZUluZm8mIGluZm8sIEVycm9yQ2FsbGJhY2sgY2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgc3Bh
Y2VDaGVja1Jlc3VsdCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMT0co
SW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlIik7CiAKLSAg
ICBBU1NFUlQobV9iYWNraW5nU3RvcmUpOworICAgIGlmIChzcGFjZUNoZWNrUmVzdWx0ID09IFNw
YWNlQ2hlY2tSZXN1bHQ6OlVua25vd24pIHsKKyAgICAgICAgaWYgKCFtX21hbmFnZXIpCisgICAg
ICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciB9KTsK
IAotICAgIC8vIFF1b3RhIGNoZWNrLgotICAgIGF1dG8gdGFza1NpemUgPSBkZWZhdWx0V3JpdGVP
cGVyYXRpb25Db3N0ICsgZXN0aW1hdGVTaXplKGluZm8pOwotICAgIGlmIChtX3NlcnZlci5yZXF1
ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCB0YXNrU2l6ZSkgPT0gU3RvcmFnZVF1b3Rh
TWFuYWdlcjo6RGVjaXNpb246OkRlbnkpIHsKKyAgICAgICAgYXV0byB0YXNrU2l6ZSA9IGRlZmF1
bHRXcml0ZU9wZXJhdGlvbkNvc3QgKyBlc3RpbWF0ZVNpemUoaW5mbyk7CisgICAgICAgIG1fbWFu
YWdlci0+cmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwgdGFza1NpemUsIFt0aGlz
LCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCB3ZWFrVHJhbnNhY3Rpb24gPSBXZWFrUHRy
IHsgdHJhbnNhY3Rpb24gfSwgaW5mbywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9v
bCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMgfHwgIXdlYWtU
cmFuc2FjdGlvbikKKyAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJ
bnZhbGlkU3RhdGVFcnJvciwgIkRhdGFiYXNlIG9yIHRyYW5zYWN0aW9uIGlzIGNsb3NlZCIgfSk7
CisgICAgICAgICAgICBjcmVhdGVPYmplY3RTdG9yZSgqd2Vha1RyYW5zYWN0aW9uLCBpbmZvLCBX
VEZNb3ZlKGNhbGxiYWNrKSwgZ3JhbnRlZCA/IFNwYWNlQ2hlY2tSZXN1bHQ6OlBhc3MgOiBTcGFj
ZUNoZWNrUmVzdWx0OjpGYWlsKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBpZiAoc3BhY2VDaGVja1Jlc3VsdCAhPSBTcGFjZUNoZWNrUmVzdWx0OjpQYXNzKSB7
CiAgICAgICAgIGNhbGxiYWNrKElEQkVycm9yIHsgUXVvdGFFeGNlZWRlZEVycm9yLCBxdW90YUVy
cm9yTWVzc2FnZU5hbWUoIkNyZWF0ZU9iamVjdFN0b3JlIikgfSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKKyAgICBpZiAoIW1fYmFja2luZ1N0b3JlKQorICAgICAgICByZXR1cm4gY2FsbGJh
Y2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkJhY2tpbmcgc3RvcmUgaGFzIGNsb3Nl
ZCIgfSk7CisKICAgICBhdXRvIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPmNyZWF0ZU9iamVjdFN0
b3JlKHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCksIGluZm8pOwogICAgIGlmIChlcnJv
ci5pc051bGwoKSkKICAgICAgICAgbV9kYXRhYmFzZUluZm8tPmFkZEV4aXN0aW5nT2JqZWN0U3Rv
cmUoaW5mbyk7CkBAIC01NjMsMTggKzYwOSwzNCBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpj
cmVhdGVPYmplY3RTdG9yZShVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdAog
ICAgIGNhbGxiYWNrKGVycm9yKTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRl
T2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIGNv
bnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lLCBFcnJvckNhbGxiYWNrIGNhbGxiYWNrKQordm9p
ZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlT2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VU
cmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lLCBF
cnJvckNhbGxiYWNrIGNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0IHNwYWNlQ2hlY2tSZXN1bHQp
CiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIlVu
aXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVPYmplY3RTdG9yZSIpOwogCisgICAgaWYgKHNwYWNlQ2hl
Y2tSZXN1bHQgPT0gU3BhY2VDaGVja1Jlc3VsdDo6VW5rbm93bikgeworICAgICAgICBpZiAoIW1f
bWFuYWdlcikKKyAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRT
dGF0ZUVycm9yIH0pOworCisgICAgICAgIG1fbWFuYWdlci0+cmVxdWVzdFNwYWNlKG1faWRlbnRp
Zmllci5vcmlnaW4oKSwgMCwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHdl
YWtUcmFuc2FjdGlvbiA9IFdlYWtQdHIgeyB0cmFuc2FjdGlvbiB9LCBvYmplY3RTdG9yZU5hbWUs
IGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgZ3JhbnRlZCkgbXV0YWJsZSB7Cisg
ICAgICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICF3ZWFrVHJhbnNhY3Rpb24pCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJEYXRh
YmFzZSBvciB0cmFuc2FjdGlvbiBpcyBjbG9zZWQiIH0pOworCisgICAgICAgICAgICBkZWxldGVP
YmplY3RTdG9yZSgqd2Vha1RyYW5zYWN0aW9uLCBvYmplY3RTdG9yZU5hbWUsIFdURk1vdmUoY2Fs
bGJhY2spLCBncmFudGVkID8gU3BhY2VDaGVja1Jlc3VsdDo6UGFzcyA6IFNwYWNlQ2hlY2tSZXN1
bHQ6OkZhaWwpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFT
U0VSVChzcGFjZUNoZWNrUmVzdWx0ID09IFNwYWNlQ2hlY2tSZXN1bHQ6OlBhc3MpOwogICAgIGF1
dG8qIGluZm8gPSBtX2RhdGFiYXNlSW5mby0+aW5mb0ZvckV4aXN0aW5nT2JqZWN0U3RvcmUob2Jq
ZWN0U3RvcmVOYW1lKTsKICAgICBpZiAoIWluZm8pIHsKICAgICAgICAgY2FsbGJhY2soSURCRXJy
b3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIGRlbGV0ZSBub24tZXhpc3RhbnQgb2JqZWN0
IHN0b3JlIl9zIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgQVNTRVJUKG1fYmFj
a2luZ1N0b3JlKTsKKyAgICBpZiAoIW1fYmFja2luZ1N0b3JlKQorICAgICAgICByZXR1cm4gY2Fs
bGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkJhY2tpbmcgc3RvcmUgaXMgY2xv
c2VkIiB9KTsKKwogICAgIGF1dG8gZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+ZGVsZXRlT2JqZWN0
U3RvcmUodHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSwgaW5mby0+aWRlbnRpZmllcigp
KTsKICAgICBpZiAoZXJyb3IuaXNOdWxsKCkpCiAgICAgICAgIG1fZGF0YWJhc2VJbmZvLT5kZWxl
dGVPYmplY3RTdG9yZShpbmZvLT5pZGVudGlmaWVyKCkpOwpAQCAtNTgyLDE0ICs2NDQsMjYgQEAg
dm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlT2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJh
c2VUcmFuc2FjdGlvbiYgdHJhbnNhY3QKICAgICBjYWxsYmFjayhlcnJvcik7CiB9CiAKLXZvaWQg
VW5pcXVlSURCRGF0YWJhc2U6OnJlbmFtZU9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJh
bnNhY3Rpb24mIHRyYW5zYWN0aW9uLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgbmV3TmFtZSwgRXJyb3JDYWxsYmFjayBjYWxsYmFjaykKK3ZvaWQgVW5pcXVl
SURCRGF0YWJhc2U6OnJlbmFtZU9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rp
b24mIHRyYW5zYWN0aW9uLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgbmV3TmFtZSwgRXJyb3JDYWxsYmFjayBjYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCBz
cGFjZUNoZWNrUmVzdWx0KQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIExP
RyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6cmVuYW1lT2JqZWN0U3RvcmUiKTsKIAot
ICAgIC8vIFF1b3RhIGNoZWNrLgotICAgIGF1dG8gdGFza1NpemUgPSBkZWZhdWx0V3JpdGVPcGVy
YXRpb25Db3N0ICsgbmV3TmFtZS5zaXplSW5CeXRlcygpOwotICAgIGlmIChtX3NlcnZlci5yZXF1
ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCB0YXNrU2l6ZSkgPT0gU3RvcmFnZVF1b3Rh
TWFuYWdlcjo6RGVjaXNpb246OkRlbnkpIHsKKyAgICBpZiAoc3BhY2VDaGVja1Jlc3VsdCA9PSBT
cGFjZUNoZWNrUmVzdWx0OjpVbmtub3duKSB7CisgICAgICAgIGlmICghbV9tYW5hZ2VyKQorICAg
ICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7
CisKKyAgICAgICAgYXV0byB0YXNrU2l6ZSA9IGRlZmF1bHRXcml0ZU9wZXJhdGlvbkNvc3QgKyBu
ZXdOYW1lLnNpemVJbkJ5dGVzKCk7CisgICAgICAgIG1fbWFuYWdlci0+cmVxdWVzdFNwYWNlKG1f
aWRlbnRpZmllci5vcmlnaW4oKSwgdGFza1NpemUsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIg
eyAqdGhpcyB9LCB3ZWFrVHJhbnNhY3Rpb24gPSBXZWFrUHRyIHsgdHJhbnNhY3Rpb24gfSwgb2Jq
ZWN0U3RvcmVJZGVudGlmaWVyLCBuZXdOYW1lLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
XShib29sIGdyYW50ZWQpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAh
d2Vha1RyYW5zYWN0aW9uKQorICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJv
ciB7IEludmFsaWRTdGF0ZUVycm9yLCAiRGF0YWJhc2Ugb3IgdHJhbnNhY3Rpb24gaXMgY2xvc2Vk
IiB9KTsKKworICAgICAgICAgICAgcmVuYW1lT2JqZWN0U3RvcmUoKndlYWtUcmFuc2FjdGlvbiwg
b2JqZWN0U3RvcmVJZGVudGlmaWVyLCBuZXdOYW1lLCBXVEZNb3ZlKGNhbGxiYWNrKSwgZ3JhbnRl
ZCA/IFNwYWNlQ2hlY2tSZXN1bHQ6OlBhc3MgOiBTcGFjZUNoZWNrUmVzdWx0OjpGYWlsKTsKKyAg
ICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoc3BhY2VDaGVja1Jl
c3VsdCAhPSBTcGFjZUNoZWNrUmVzdWx0OjpQYXNzKSB7CiAgICAgICAgIGNhbGxiYWNrKElEQkVy
cm9yKFF1b3RhRXhjZWVkZWRFcnJvciwgcXVvdGFFcnJvck1lc3NhZ2VOYW1lKCJSZW5hbWVPYmpl
Y3RTdG9yZSIpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC02MDAsNyArNjc0LDkgQEAg
dm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cmVuYW1lT2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJh
c2VUcmFuc2FjdGlvbiYgdHJhbnNhY3QKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFT
U0VSVChtX2JhY2tpbmdTdG9yZSk7CisgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkKKyAgICAgICAg
cmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJCYWNraW5nIHN0
b3JlIGlzIGNsb3NlZCIgfSk7CisKICAgICBhdXRvIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPnJl
bmFtZU9iamVjdFN0b3JlKHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCksIG9iamVjdFN0
b3JlSWRlbnRpZmllciwgbmV3TmFtZSk7CiAgICAgaWYgKGVycm9yLmlzTnVsbCgpKQogICAgICAg
ICBtX2RhdGFiYXNlSW5mby0+cmVuYW1lT2JqZWN0U3RvcmUob2JqZWN0U3RvcmVJZGVudGlmaWVy
LCBuZXdOYW1lKTsKQEAgLTYwOCwzMCArNjg0LDU5IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6
OnJlbmFtZU9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0
CiAgICAgY2FsbGJhY2soZXJyb3IpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjbGVh
ck9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCB1
aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIEVycm9yQ2FsbGJhY2sgY2FsbGJhY2spCit2
b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjbGVhck9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNl
VHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIs
IEVycm9yQ2FsbGJhY2sgY2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgc3BhY2VDaGVja1Jlc3Vs
dCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAi
VW5pcXVlSURCRGF0YWJhc2U6OmNsZWFyT2JqZWN0U3RvcmUiKTsKIAotICAgIEFTU0VSVChtX2Jh
Y2tpbmdTdG9yZSk7Ci0gICAgYXV0byBlcnJvciA9IG1fYmFja2luZ1N0b3JlLT5jbGVhck9iamVj
dFN0b3JlKHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCksIG9iamVjdFN0b3JlSWRlbnRp
Zmllcik7CisgICAgaWYgKHNwYWNlQ2hlY2tSZXN1bHQgPT0gU3BhY2VDaGVja1Jlc3VsdDo6VW5r
bm93bikgeworICAgICAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAgICAgICAgIHJldHVybiBjYWxs
YmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yIH0pOworCisgICAgICAgIG1fbWFuYWdl
ci0+cmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwgMCwgW3RoaXMsIHdlYWtUaGlz
ID0gV2Vha1B0ciB7ICp0aGlzIH0sIHdlYWtUcmFuc2FjdGlvbiA9IFdlYWtQdHIgeyB0cmFuc2Fj
dGlvbiB9LCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayldKGJvb2wgZ3JhbnRlZCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzIHx8
ICF3ZWFrVHJhbnNhY3Rpb24pCisgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVy
cm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJEYXRhYmFzZSBvciB0cmFuc2FjdGlvbiBpcyBjbG9z
ZWQiIH0pOworCisgICAgICAgICAgICBjbGVhck9iamVjdFN0b3JlKCp3ZWFrVHJhbnNhY3Rpb24s
IG9iamVjdFN0b3JlSWRlbnRpZmllciwgV1RGTW92ZShjYWxsYmFjayksIGdyYW50ZWQgPyBTcGFj
ZUNoZWNrUmVzdWx0OjpQYXNzIDogU3BhY2VDaGVja1Jlc3VsdDo6RmFpbCk7CisgICAgICAgIH0p
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKHNwYWNlQ2hlY2tSZXN1bHQg
PT0gU3BhY2VDaGVja1Jlc3VsdDo6UGFzcyk7CisgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkKKyAg
ICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJCYWNr
aW5nIHN0b3JlIGlzIGNsb3NlZCIgfSk7CiAKKyAgICBhdXRvIGVycm9yID0gbV9iYWNraW5nU3Rv
cmUtPmNsZWFyT2JqZWN0U3RvcmUodHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSwgb2Jq
ZWN0U3RvcmVJZGVudGlmaWVyKTsKICAgICBjYWxsYmFjayhlcnJvcik7CiB9CiAKLXZvaWQgVW5p
cXVlSURCRGF0YWJhc2U6OmNyZWF0ZUluZGV4KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24m
IHRyYW5zYWN0aW9uLCBjb25zdCBJREJJbmRleEluZm8mIGluZm8sIEVycm9yQ2FsbGJhY2sgY2Fs
bGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVJbmRleChVbmlxdWVJREJEYXRh
YmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgY29uc3QgSURCSW5kZXhJbmZvJiBpbmZvLCBF
cnJvckNhbGxiYWNrIGNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0IHNwYWNlQ2hlY2tSZXN1bHQp
CiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIlVu
aXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVJbmRleCIpOwogCi0gICAgLy8gUXVvdGEgY2hlY2suCi0g
ICAgYXV0byB0YXNrU2l6ZSA9IGRlZmF1bHRXcml0ZU9wZXJhdGlvbkNvc3QgKyBlc3RpbWF0ZVNp
emUoaW5mbyk7Ci0gICAgaWYgKG1fc2VydmVyLnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3Jp
Z2luKCksIHRhc2tTaXplKSA9PSBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbjo6RGVueSkg
eworICAgIGlmIChzcGFjZUNoZWNrUmVzdWx0ID09IFNwYWNlQ2hlY2tSZXN1bHQ6OlVua25vd24p
IHsKKyAgICAgICAgaWYgKCFtX21hbmFnZXIpCisgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2so
SURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciB9KTsKKworICAgICAgICBhdXRvIHRhc2tTaXpl
ID0gZGVmYXVsdFdyaXRlT3BlcmF0aW9uQ29zdCArIGVzdGltYXRlU2l6ZShpbmZvKTsKKyAgICAg
ICAgbV9tYW5hZ2VyLT5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCB0YXNrU2l6
ZSwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHdlYWtUcmFuc2FjdGlvbiA9
IFdlYWtQdHIgeyB0cmFuc2FjdGlvbiB9LCBpbmZvLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spXShib29sIGdyYW50ZWQpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8
fCAhd2Vha1RyYW5zYWN0aW9uKQorICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJF
cnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiRGF0YWJhc2Ugb3IgdHJhbnNhY3Rpb24gaXMgY2xv
c2VkIiB9KTsKKworICAgICAgICAgICAgY3JlYXRlSW5kZXgoKndlYWtUcmFuc2FjdGlvbiwgaW5m
bywgV1RGTW92ZShjYWxsYmFjayksIGdyYW50ZWQgPyBTcGFjZUNoZWNrUmVzdWx0OjpQYXNzIDog
U3BhY2VDaGVja1Jlc3VsdDo6RmFpbCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgaWYgKHNwYWNlQ2hlY2tSZXN1bHQgIT0gU3BhY2VDaGVja1Jlc3VsdDo6UGFz
cykgewogICAgICAgICBjYWxsYmFjayhJREJFcnJvciB7IFF1b3RhRXhjZWVkZWRFcnJvciwgcXVv
dGFFcnJvck1lc3NhZ2VOYW1lKCJDcmVhdGVJbmRleCIpIH0pOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgQVNTRVJUKG1fYmFja2luZ1N0b3JlKTsKKyAgICBpZiAoIW1fYmFja2luZ1N0
b3JlKQorICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJv
ciwgIkJhY2tpbmcgc3RvcmUgaXMgY2xvc2VkIiB9KTsKKwogICAgIGF1dG8gZXJyb3IgPSBtX2Jh
Y2tpbmdTdG9yZS0+Y3JlYXRlSW5kZXgodHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSwg
aW5mbyk7CiAgICAgaWYgKGVycm9yLmlzTnVsbCgpKSB7CiAgICAgICAgIEFTU0VSVChtX2RhdGFi
YXNlSW5mbyk7CkBAIC02NDQsMTEgKzc0OSwyOCBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpj
cmVhdGVJbmRleChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgYwog
ICAgIGNhbGxiYWNrKGVycm9yKTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRl
SW5kZXgoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIHVpbnQ2NF90
IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpbmRleE5hbWUsIEVycm9yQ2Fs
bGJhY2sgY2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVJbmRleChVbmlx
dWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgdWludDY0X3Qgb2JqZWN0U3Rv
cmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGluZGV4TmFtZSwgRXJyb3JDYWxsYmFjayBjYWxs
YmFjaywgU3BhY2VDaGVja1Jlc3VsdCBzcGFjZUNoZWNrUmVzdWx0KQogewogICAgIEFTU0VSVCgh
aXNNYWluVGhyZWFkKCkpOwogICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6
ZGVsZXRlSW5kZXgiKTsKIAorICAgIGlmIChzcGFjZUNoZWNrUmVzdWx0ID09IFNwYWNlQ2hlY2tS
ZXN1bHQ6OlVua25vd24pIHsKKyAgICAgICAgaWYgKCFtX21hbmFnZXIpCisgICAgICAgICAgICBy
ZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciB9KTsKKworICAgICAg
ICBtX21hbmFnZXItPnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIDAsIFt0aGlz
LCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCB3ZWFrVHJhbnNhY3Rpb24gPSBXZWFrUHRy
IHsgdHJhbnNhY3Rpb24gfSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleE5hbWUsIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgZ3JhbnRlZCkgbXV0YWJsZSB7CisgICAgICAg
ICAgICBpZiAoIXdlYWtUaGlzIHx8ICF3ZWFrVHJhbnNhY3Rpb24pCisgICAgICAgICAgICAgICAg
cmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJEYXRhYmFzZSBv
ciB0cmFuc2FjdGlvbiBpcyBjbG9zZWQiIH0pOworCisgICAgICAgICAgICBkZWxldGVJbmRleCgq
d2Vha1RyYW5zYWN0aW9uLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4TmFtZSwgV1RGTW92
ZShjYWxsYmFjayksIGdyYW50ZWQgPyBTcGFjZUNoZWNrUmVzdWx0OjpQYXNzIDogU3BhY2VDaGVj
a1Jlc3VsdDo6RmFpbCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgQVNTRVJUKHNwYWNlQ2hlY2tSZXN1bHQgPT0gU3BhY2VDaGVja1Jlc3VsdDo6UGFzcyk7Cisg
ICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9y
IHsgSW52YWxpZFN0YXRlRXJyb3IsICJCYWNraW5nIHN0b3JlIGlzIGNsb3NlZCIgfSk7CisKICAg
ICBhdXRvKiBvYmplY3RTdG9yZUluZm8gPSBtX2RhdGFiYXNlSW5mby0+aW5mb0ZvckV4aXN0aW5n
T2JqZWN0U3RvcmUob2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKICAgICBpZiAoIW9iamVjdFN0b3Jl
SW5mbykgewogICAgICAgICBjYWxsYmFjayhJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVt
cHQgdG8gZGVsZXRlIGluZGV4IGZyb20gbm9uLWV4aXN0YW50IG9iamVjdCBzdG9yZSJfcyB9KTsK
QEAgLTY2MCw5ICs3ODIsOCBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVJbmRleChV
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgdQogICAgICAgICBjYWxs
YmFjayhJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gZGVsZXRlIG5vbi1leGlz
dGFudCBpbmRleCJfcyB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvIGluZGV4
SWRlbnRpZmllciA9IGluZGV4SW5mby0+aWRlbnRpZmllcigpOwogCi0gICAgQVNTRVJUKG1fYmFj
a2luZ1N0b3JlKTsKKyAgICBhdXRvIGluZGV4SWRlbnRpZmllciA9IGluZGV4SW5mby0+aWRlbnRp
ZmllcigpOwogICAgIGF1dG8gZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+ZGVsZXRlSW5kZXgodHJh
bnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRl
eElkZW50aWZpZXIpOwogICAgIGlmIChlcnJvci5pc051bGwoKSkKICAgICAgICAgb2JqZWN0U3Rv
cmVJbmZvLT5kZWxldGVJbmRleChpbmRleElkZW50aWZpZXIpOwpAQCAtNjcwLDE4ICs3OTEsMzMg
QEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlSW5kZXgoVW5pcXVlSURCRGF0YWJhc2VU
cmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIHUKICAgICBjYWxsYmFjayhlcnJvcik7CiB9CiAKLXZv
aWQgVW5pcXVlSURCRGF0YWJhc2U6OnJlbmFtZUluZGV4KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNh
Y3Rpb24mIHRyYW5zYWN0aW9uLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2
NF90IGluZGV4SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lLCBFcnJvckNhbGxiYWNr
IGNhbGxiYWNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cmVuYW1lSW5kZXgoVW5pcXVlSURC
RGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRl
bnRpZmllciwgdWludDY0X3QgaW5kZXhJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUs
IEVycm9yQ2FsbGJhY2sgY2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgc3BhY2VDaGVja1Jlc3Vs
dCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAi
VW5pcXVlSURCRGF0YWJhc2U6OnJlbmFtZUluZGV4Iik7CiAKLSAgICAvLyBRdW90YSBjaGVjay4K
LSAgICBhdXRvIHRhc2tTaXplID0gZGVmYXVsdFdyaXRlT3BlcmF0aW9uQ29zdCArIG5ld05hbWUu
c2l6ZUluQnl0ZXMoKTsKLSAgICBpZiAobV9zZXJ2ZXIucmVxdWVzdFNwYWNlKG1faWRlbnRpZmll
ci5vcmlnaW4oKSwgdGFza1NpemUpID09IFN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uOjpE
ZW55KSB7CisgICAgaWYgKHNwYWNlQ2hlY2tSZXN1bHQgPT0gU3BhY2VDaGVja1Jlc3VsdDo6VW5r
bm93bikgeworICAgICAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAgICAgICAgIHJldHVybiBjYWxs
YmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yIH0pOworCisgICAgICAgIGF1dG8gdGFz
a1NpemUgPSBkZWZhdWx0V3JpdGVPcGVyYXRpb25Db3N0ICsgbmV3TmFtZS5zaXplSW5CeXRlcygp
OworICAgICAgICBtX21hbmFnZXItPnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCks
IHRhc2tTaXplLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgd2Vha1RyYW5z
YWN0aW9uID0gV2Vha1B0ciB7IHRyYW5zYWN0aW9uIH0sIG9iamVjdFN0b3JlSWRlbnRpZmllciwg
aW5kZXhJZGVudGlmaWVyLCBuZXdOYW1lLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShi
b29sIGdyYW50ZWQpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhd2Vh
a1RyYW5zYWN0aW9uKQorICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7
IEludmFsaWRTdGF0ZUVycm9yLCAiRGF0YWJhc2Ugb3IgdHJhbnNhY3Rpb24gaXMgY2xvc2VkIiB9
KTsKKworICAgICAgICAgICAgcmVuYW1lSW5kZXgoKndlYWtUcmFuc2FjdGlvbiwgb2JqZWN0U3Rv
cmVJZGVudGlmaWVyLCBpbmRleElkZW50aWZpZXIsIG5ld05hbWUsIFdURk1vdmUoY2FsbGJhY2sp
LCBncmFudGVkID8gU3BhY2VDaGVja1Jlc3VsdDo6UGFzcyA6IFNwYWNlQ2hlY2tSZXN1bHQ6OkZh
aWwpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChzcGFj
ZUNoZWNrUmVzdWx0ICE9IFNwYWNlQ2hlY2tSZXN1bHQ6OlBhc3MpIHsKICAgICAgICAgY2FsbGJh
Y2soSURCRXJyb3IgeyBRdW90YUV4Y2VlZGVkRXJyb3IsIHF1b3RhRXJyb3JNZXNzYWdlTmFtZSgi
UmVuYW1lSW5kZXgiKSB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIGlmICghbV9i
YWNraW5nU3RvcmUpCisgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRT
dGF0ZUVycm9yLCAiQmFja2luZyBzdG9yZSBpcyBjbG9zZWQiIH0pOworCiAgICAgYXV0byogb2Jq
ZWN0U3RvcmVJbmZvID0gbV9kYXRhYmFzZUluZm8tPmluZm9Gb3JFeGlzdGluZ09iamVjdFN0b3Jl
KG9iamVjdFN0b3JlSWRlbnRpZmllcik7CiAgICAgaWYgKCFvYmplY3RTdG9yZUluZm8pIHsKICAg
ICAgICAgY2FsbGJhY2soSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIHJlbmFt
ZSBpbmRleCBpbiBub24tZXhpc3RhbnQgb2JqZWN0IHN0b3JlIl9zIH0pOwpAQCAtNjk0LDcgKzgz
MCw2IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnJlbmFtZUluZGV4KFVuaXF1ZUlEQkRhdGFi
YXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCB1CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBBU1NFUlQobV9iYWNraW5nU3RvcmUpOwogICAgIGF1dG8gZXJyb3IgPSBtX2JhY2tpbmdT
dG9yZS0+cmVuYW1lSW5kZXgodHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSwgb2JqZWN0
U3RvcmVJZGVudGlmaWVyLCBpbmRleElkZW50aWZpZXIsIG5ld05hbWUpOwogICAgIGlmIChlcnJv
ci5pc051bGwoKSkKICAgICAgICAgaW5kZXhJbmZvLT5yZW5hbWUobmV3TmFtZSk7CkBAIC03MDks
MTcgKzg0NCwxOSBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwdXRPckFkZChjb25zdCBJREJS
ZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQktleQogCiAgICAgQVNTRVJUKG1fZGF0
YWJhc2VJbmZvKTsKIAotICAgIElEQktleURhdGEgdXNlZEtleTsKLSAgICBJREJFcnJvciBlcnJv
cjsKKyAgICBpZiAoIW1fYmFja2luZ1N0b3JlKQorICAgICAgICByZXR1cm4gY2FsbGJhY2soSURC
RXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkJhY2tpbmcgc3RvcmUgaXMgY2xvc2VkIiB9LCBr
ZXlEYXRhKTsKIAotICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CiAgICAgYXV0byBvYmplY3RT
dG9yZUlkZW50aWZpZXIgPSByZXF1ZXN0RGF0YS5vYmplY3RTdG9yZUlkZW50aWZpZXIoKTsKICAg
ICBhdXRvKiBvYmplY3RTdG9yZUluZm8gPSBtX2JhY2tpbmdTdG9yZS0+aW5mb0Zvck9iamVjdFN0
b3JlKG9iamVjdFN0b3JlSWRlbnRpZmllcik7Ci0gICAgaWYgKCFvYmplY3RTdG9yZUluZm8pIHsK
LSAgICAgICAgY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIk9iamVjdCBz
dG9yZSBjYW5ub3QgYmUgZm91bmQgaW4gdGhlIGJhY2tpbmcgc3RvcmUiX3MgfSwgdXNlZEtleSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKCFvYmplY3RTdG9yZUluZm8pCisgICAg
ICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiT2JqZWN0
IHN0b3JlIGNhbm5vdCBiZSBmb3VuZCBpbiB0aGUgYmFja2luZyBzdG9yZSJfcyB9LCBrZXlEYXRh
KTsKKworICAgIGlmICghbV9tYW5hZ2VyKQorICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJy
b3IgeyBJbnZhbGlkU3RhdGVFcnJvciB9LCBrZXlEYXRhKTsKIAorICAgIElEQktleURhdGEgdXNl
ZEtleTsKKyAgICBJREJFcnJvciBlcnJvcjsKICAgICBib29sIHVzZWRLZXlJc0dlbmVyYXRlZCA9
IGZhbHNlOwogICAgIHVpbnQ2NF90IGtleU51bWJlcjsKICAgICBhdXRvIHRyYW5zYWN0aW9uSWRl
bnRpZmllciA9IHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpOwpAQCAtNzMwLDc2
ICs4NjcsMTA1IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnB1dE9yQWRkKGNvbnN0IElEQlJl
cXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5CiAKICAgICBpZiAob2JqZWN0U3Rv
cmVJbmZvLT5hdXRvSW5jcmVtZW50KCkgJiYgIWtleURhdGEuaXNWYWxpZCgpKSB7CiAgICAgICAg
IGVycm9yID0gbV9iYWNraW5nU3RvcmUtPmdlbmVyYXRlS2V5TnVtYmVyKHRyYW5zYWN0aW9uSWRl
bnRpZmllciwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBrZXlOdW1iZXIpOwotICAgICAgICBpZiAo
IWVycm9yLmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhlcnJvciwgdXNlZEtleSk7
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKCFlcnJvci5pc051
bGwoKSkKKyAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhlcnJvciwgdXNlZEtleSk7CisKICAg
ICAgICAgdXNlZEtleS5zZXROdW1iZXJWYWx1ZShrZXlOdW1iZXIpOwogICAgICAgICB1c2VkS2V5
SXNHZW5lcmF0ZWQgPSB0cnVlOwogICAgIH0gZWxzZQogICAgICAgICB1c2VkS2V5ID0ga2V5RGF0
YTsKIAotICAgIC8vIEdlbmVyYXRlIGluZGV4IGtleXMgdXAgZnJvbnQgZm9yIG1vcmUgYWNjdXJh
dGUgcXVvdGEgY2hlY2suCi0gICAgSW5kZXhJRFRvSW5kZXhLZXlNYXAgaW5kZXhLZXlzOwotICAg
IGNhbGxPbklEQlNlcmlhbGl6YXRpb25UaHJlYWRBbmRXYWl0KFtvYmplY3RTdG9yZUluZm8gPSBv
YmplY3RTdG9yZUluZm8tPmlzb2xhdGVkQ29weSgpLCBrZXkgPSB1c2VkS2V5Lmlzb2xhdGVkQ29w
eSgpLCB2YWx1ZSA9IHZhbHVlLmlzb2xhdGVkQ29weSgpLCAmaW5kZXhLZXlzXShhdXRvJiBnbG9i
YWxPYmplY3QpIHsKLSAgICAgICAgaW5kZXhLZXlzID0gZ2VuZXJhdGVJbmRleEtleU1hcEZvclZh
bHVlKGdsb2JhbE9iamVjdCwgb2JqZWN0U3RvcmVJbmZvLCBrZXksIHZhbHVlKTsKLSAgICB9KTsK
LQogICAgIGlmIChvdmVyd3JpdGVNb2RlID09IEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3Jp
dGVNb2RlOjpOb092ZXJ3cml0ZSkgewogICAgICAgICBib29sIGtleUV4aXN0czsKICAgICAgICAg
ZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+a2V5RXhpc3RzSW5PYmplY3RTdG9yZSh0cmFuc2FjdGlv
bklkZW50aWZpZXIsIG9iamVjdFN0b3JlSWRlbnRpZmllciwgdXNlZEtleSwga2V5RXhpc3RzKTsK
LSAgICAgICAgaWYgKGVycm9yLmlzTnVsbCgpICYmIGtleUV4aXN0cykKKyAgICAgICAgaWYgKCFl
cnJvciAmJiBrZXlFeGlzdHMpCiAgICAgICAgICAgICBlcnJvciA9IElEQkVycm9yIHsgQ29uc3Ry
YWludEVycm9yLCAiS2V5IGFscmVhZHkgZXhpc3RzIGluIHRoZSBvYmplY3Qgc3RvcmUiX3MgfTsK
IAotICAgICAgICBpZiAoIWVycm9yLmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhl
cnJvciwgdXNlZEtleSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAg
aWYgKCEhZXJyb3IpCisgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soZXJyb3IsIHVzZWRLZXkp
OwogICAgIH0KIAotICAgIC8vIFF1b3RhIGNoZWNrLgorICAgIC8vIEdlbmVyYXRlIGluZGV4IGtl
eXMgdXAgZnJvbnQgZm9yIG1vcmUgYWNjdXJhdGUgcXVvdGEgY2hlY2suCisgICAgSW5kZXhJRFRv
SW5kZXhLZXlNYXAgaW5kZXhLZXlzOworICAgIGNhbGxPbklEQlNlcmlhbGl6YXRpb25UaHJlYWRB
bmRXYWl0KFtvYmplY3RTdG9yZUluZm8gPSBvYmplY3RTdG9yZUluZm8tPmlzb2xhdGVkQ29weSgp
LCBrZXkgPSB1c2VkS2V5Lmlzb2xhdGVkQ29weSgpLCB2YWx1ZSA9IHZhbHVlLmlzb2xhdGVkQ29w
eSgpLCAmaW5kZXhLZXlzXShhdXRvJiBnbG9iYWxPYmplY3QpIHsKKyAgICAgICAgaW5kZXhLZXlz
ID0gZ2VuZXJhdGVJbmRleEtleU1hcEZvclZhbHVlKGdsb2JhbE9iamVjdCwgb2JqZWN0U3RvcmVJ
bmZvLCBrZXksIHZhbHVlKTsKKyAgICB9KTsKKworICAgIGdlbmVyYXRlZEtleVJlc2V0dGVyLnJl
bGVhc2UoKTsKICAgICBhdXRvIGtleVNpemUgPSBlc3RpbWF0ZVNpemUodXNlZEtleSk7CiAgICAg
YXV0byB2YWx1ZVNpemUgPSBlc3RpbWF0ZVNpemUodmFsdWUpOwogICAgIGF1dG8gaW5kZXhTaXpl
ID0gZXN0aW1hdGVTaXplKCpvYmplY3RTdG9yZUluZm8sIGluZGV4S2V5cywga2V5U2l6ZSk7CiAg
ICAgYXV0byB0YXNrU2l6ZSA9IGRlZmF1bHRXcml0ZU9wZXJhdGlvbkNvc3QgKyBrZXlTaXplICsg
dmFsdWVTaXplICsgaW5kZXhTaXplOwogCiAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRh
dGFiYXNlOjpwdXRPckFkZCBxdW90YSBjaGVjayB3aXRoIHRhc2sgc2l6ZTogJSIgUFJJdTY0ICIg
a2V5IHNpemU6ICUiIFBSSXU2NCAiIHZhbHVlIHNpemU6ICUiIFBSSXU2NCAiIGluZGV4IHNpemU6
ICUiIFBSSXU2NCwgdGFza1NpemUsIGtleVNpemUsIHZhbHVlU2l6ZSwgaW5kZXhTaXplKTsKKyAg
ICBtX21hbmFnZXItPnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIHRhc2tTaXpl
LCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgcmVxdWVzdERhdGEsIHVzZWRL
ZXksIHZhbHVlLCBvdmVyd3JpdGVNb2RlLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCB1
c2VkS2V5SXNHZW5lcmF0ZWQsIGluZGV4S2V5cywgb2JqZWN0U3RvcmVJbmZvID0gKm9iamVjdFN0
b3JlSW5mb10oYm9vbCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykK
KyAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9y
LCAiRGF0YWJhc2UgaXMgY2xvc2VkIiB9LCB1c2VkS2V5KTsKIAotICAgIGlmIChtX3NlcnZlci5y
ZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCB0YXNrU2l6ZSkgPT0gU3RvcmFnZVF1
b3RhTWFuYWdlcjo6RGVjaXNpb246OkRlbnkpIHsKLSAgICAgICAgY2FsbGJhY2soSURCRXJyb3Ig
eyBRdW90YUV4Y2VlZGVkRXJyb3IsIHF1b3RhRXJyb3JNZXNzYWdlTmFtZSgiUHV0T3JBZGQiKSB9
LCB1c2VkS2V5KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICAgICAgcHV0T3JBZGRBZnRl
clNwYWNlQ2hlY2socmVxdWVzdERhdGEsIHVzZWRLZXksIHZhbHVlLCBvdmVyd3JpdGVNb2RlLCBX
VEZNb3ZlKGNhbGxiYWNrKSwgdXNlZEtleUlzR2VuZXJhdGVkLCBpbmRleEtleXMsIG9iamVjdFN0
b3JlSW5mbywgZ3JhbnRlZCA/IFNwYWNlQ2hlY2tSZXN1bHQ6OlBhc3MgOiBTcGFjZUNoZWNrUmVz
dWx0OjpGYWlsKTsKKyAgICB9KTsKK30KKwordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cHV0T3JB
ZGRBZnRlclNwYWNlQ2hlY2soY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25z
dCBJREJLZXlEYXRhJiBrZXlEYXRhLCBjb25zdCBJREJWYWx1ZSYgdmFsdWUsIEluZGV4ZWREQjo6
T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlIG92ZXJ3cml0ZU1vZGUsIEtleURhdGFDYWxsYmFjayBj
YWxsYmFjaywgYm9vbCBpc0tleUdlbmVyYXRlZCwgY29uc3QgSW5kZXhJRFRvSW5kZXhLZXlNYXAm
IGluZGV4S2V5cywgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiBvYmplY3RTdG9yZUluZm8sIFNw
YWNlQ2hlY2tSZXN1bHQgc3BhY2VDaGVja1Jlc3VsdCkKK3sKKyAgICBBU1NFUlQoIWlzTWFpblRo
cmVhZCgpKTsKKyAgICBBU1NFUlQobV9kYXRhYmFzZUluZm8pOworCisgICAgaWYgKCFtX2JhY2tp
bmdTdG9yZSkKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRl
RXJyb3IsICJCYWNraW5nIHN0b3JlIGlzIGNsb3NlZCIgfSwga2V5RGF0YSk7CisKKyAgICB1aW50
NjRfdCBrZXlOdW1iZXIgPSBpc0tleUdlbmVyYXRlZCA/IGtleURhdGEubnVtYmVyKCkgOiAwOwor
ICAgIGF1dG8gb2JqZWN0U3RvcmVJZGVudGlmaWVyID0gb2JqZWN0U3RvcmVJbmZvLmlkZW50aWZp
ZXIoKTsKKyAgICBhdXRvIHRyYW5zYWN0aW9uSWRlbnRpZmllciA9IHJlcXVlc3REYXRhLnRyYW5z
YWN0aW9uSWRlbnRpZmllcigpOworICAgIGF1dG8gZ2VuZXJhdGVkS2V5UmVzZXR0ZXIgPSBtYWtl
U2NvcGVFeGl0KFt0aGlzLCB0cmFuc2FjdGlvbklkZW50aWZpZXIsIG9iamVjdFN0b3JlSWRlbnRp
ZmllciwgJmtleU51bWJlciwgJmlzS2V5R2VuZXJhdGVkXSgpIHsKKyAgICAgICAgaWYgKGlzS2V5
R2VuZXJhdGVkKQorICAgICAgICAgICAgbV9iYWNraW5nU3RvcmUtPnJldmVydEdlbmVyYXRlZEtl
eU51bWJlcih0cmFuc2FjdGlvbklkZW50aWZpZXIsIG9iamVjdFN0b3JlSWRlbnRpZmllciwga2V5
TnVtYmVyKTsKKyAgICB9KTsKIAorICAgIGlmIChzcGFjZUNoZWNrUmVzdWx0ICE9IFNwYWNlQ2hl
Y2tSZXN1bHQ6OlBhc3MpCisgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IFF1b3Rh
RXhjZWVkZWRFcnJvciwgcXVvdGFFcnJvck1lc3NhZ2VOYW1lKCJQdXRPckFkZCIpIH0sIGtleURh
dGEpOwogICAgIC8vIElmIGEgcmVjb3JkIGFscmVhZHkgZXhpc3RzIGluIHN0b3JlLCB0aGVuIHJl
bW92ZSB0aGUgcmVjb3JkIGZyb20gc3RvcmUgdXNpbmcgdGhlIHN0ZXBzIGZvciBkZWxldGluZyBy
ZWNvcmRzIGZyb20gYW4gb2JqZWN0IHN0b3JlLgotICAgIC8vIFRoaXMgaXMgaW1wb3J0YW50IGJl
Y2F1c2UgZm9ybWFsbHkgZGVsZXRpbmcgaXQgZnJvbSBmcm9tIHRoZSBvYmplY3Qgc3RvcmUgYWxz
byByZW1vdmVzIGl0IGZyb20gdGhlIGFwcHJvcHJpYXRlIGluZGV4ZXMuCi0gICAgZXJyb3IgPSBt
X2JhY2tpbmdTdG9yZS0+ZGVsZXRlUmFuZ2UodHJhbnNhY3Rpb25JZGVudGlmaWVyLCBvYmplY3RT
dG9yZUlkZW50aWZpZXIsIHVzZWRLZXkpOwotICAgIGlmICghZXJyb3IuaXNOdWxsKCkpIHsKLSAg
ICAgICAgY2FsbGJhY2soZXJyb3IsIHVzZWRLZXkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQor
ICAgIC8vIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UgZm9ybWFsbHkgZGVsZXRpbmcgaXQgZnJv
bSB0aGUgb2JqZWN0IHN0b3JlIGFsc28gcmVtb3ZlcyBpdCBmcm9tIHRoZSBhcHByb3ByaWF0ZSBp
bmRleGVzLgorICAgIElEQkVycm9yIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPmRlbGV0ZVJhbmdl
KHRyYW5zYWN0aW9uSWRlbnRpZmllciwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBrZXlEYXRhKTsK
KyAgICBpZiAoIWVycm9yLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gY2FsbGJhY2soZXJyb3Is
IGtleURhdGEpOwogCi0gICAgZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+YWRkUmVjb3JkKHRyYW5z
YWN0aW9uSWRlbnRpZmllciwgKm9iamVjdFN0b3JlSW5mbywgdXNlZEtleSwgaW5kZXhLZXlzLCB2
YWx1ZSk7Ci0gICAgaWYgKCFlcnJvci5pc051bGwoKSkgewotICAgICAgICBjYWxsYmFjayhlcnJv
ciwgdXNlZEtleSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgZXJyb3IgPSBtX2JhY2tp
bmdTdG9yZS0+YWRkUmVjb3JkKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgb2JqZWN0U3RvcmVJbmZv
LCBrZXlEYXRhLCBpbmRleEtleXMsIHZhbHVlKTsKKyAgICBpZiAoIWVycm9yLmlzTnVsbCgpKQor
ICAgICAgICByZXR1cm4gY2FsbGJhY2soZXJyb3IsIGtleURhdGEpOwogCi0gICAgaWYgKG92ZXJ3
cml0ZU1vZGUgIT0gSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGU6Ok92ZXJ3cml0
ZUZvckN1cnNvciAmJiBvYmplY3RTdG9yZUluZm8tPmF1dG9JbmNyZW1lbnQoKSAmJiBrZXlEYXRh
LnR5cGUoKSA9PSBJbmRleGVkREI6OktleVR5cGU6Ok51bWJlcikKKyAgICBpZiAob3ZlcndyaXRl
TW9kZSAhPSBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZTo6T3ZlcndyaXRlRm9y
Q3Vyc29yICYmIG9iamVjdFN0b3JlSW5mby5hdXRvSW5jcmVtZW50KCkgJiYga2V5RGF0YS50eXBl
KCkgPT0gSW5kZXhlZERCOjpLZXlUeXBlOjpOdW1iZXIpCiAgICAgICAgIGVycm9yID0gbV9iYWNr
aW5nU3RvcmUtPm1heWJlVXBkYXRlS2V5R2VuZXJhdG9yTnVtYmVyKHRyYW5zYWN0aW9uSWRlbnRp
Zmllciwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBrZXlEYXRhLm51bWJlcigpKTsKIAogICAgIGdl
bmVyYXRlZEtleVJlc2V0dGVyLnJlbGVhc2UoKTsKLSAgICBjYWxsYmFjayhlcnJvciwgdXNlZEtl
eSk7CisgICAgY2FsbGJhY2soZXJyb3IsIGtleURhdGEpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRh
dGFiYXNlOjpnZXRSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25z
dCBJREJHZXRSZWNvcmREYXRhJiBnZXRSZWNvcmREYXRhLCBHZXRSZXN1bHRDYWxsYmFjayBjYWxs
YmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmdldFJlY29yZChjb25zdCBJREJSZXF1ZXN0
RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkdldFJlY29yZERhdGEmIGdldFJlY29yZERhdGEs
IEdldFJlc3VsdENhbGxiYWNrIGNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0IHNwYWNlQ2hlY2tS
ZXN1bHQpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWRE
QiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRSZWNvcmQiKTsKIAorICAgIGlmIChzcGFjZUNoZWNr
UmVzdWx0ID09IFNwYWNlQ2hlY2tSZXN1bHQ6OlVua25vd24pIHsKKyAgICAgICAgaWYgKCFtX21h
bmFnZXIpCisgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3Rh
dGVFcnJvciB9LCBJREJHZXRSZXN1bHQgeyB9KTsKKworICAgICAgICBtX21hbmFnZXItPnJlcXVl
c3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIDAsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQ
dHIgeyAqdGhpcyB9LCByZXF1ZXN0RGF0YSwgZ2V0UmVjb3JkRGF0YSwgY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKV0oYm9vbCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICgh
d2Vha1RoaXMpCisgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52
YWxpZFN0YXRlRXJyb3IsICJEYXRhYmFzZSBpcyBjbG9zZWQiIH0sIElEQkdldFJlc3VsdCB7IH0p
OworCisgICAgICAgICAgICBnZXRSZWNvcmQocmVxdWVzdERhdGEsIGdldFJlY29yZERhdGEsIFdU
Rk1vdmUoY2FsbGJhY2spLCBncmFudGVkID8gU3BhY2VDaGVja1Jlc3VsdDo6UGFzcyA6IFNwYWNl
Q2hlY2tSZXN1bHQ6OkZhaWwpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIEFTU0VSVChzcGFjZUNoZWNrUmVzdWx0ID09IFNwYWNlQ2hlY2tSZXN1bHQ6OlBhc3Mp
OworICAgIGlmICghbV9iYWNraW5nU3RvcmUpCisgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJF
cnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiQmFja2luZyBzdG9yZSBpcyBjbG9zZWQiIH0sIElE
QkdldFJlc3VsdCB7IH0pOworCiAgICAgSURCR2V0UmVzdWx0IHJlc3VsdDsKICAgICBJREJFcnJv
ciBlcnJvcjsKIAotICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CiAgICAgaWYgKHVpbnQ2NF90
IGluZGV4SWRlbnRpZmllciA9IHJlcXVlc3REYXRhLmluZGV4SWRlbnRpZmllcigpKQogICAgICAg
ICBlcnJvciA9IG1fYmFja2luZ1N0b3JlLT5nZXRJbmRleFJlY29yZChyZXF1ZXN0RGF0YS50cmFu
c2FjdGlvbklkZW50aWZpZXIoKSwgcmVxdWVzdERhdGEub2JqZWN0U3RvcmVJZGVudGlmaWVyKCks
IGluZGV4SWRlbnRpZmllciwgcmVxdWVzdERhdGEuaW5kZXhSZWNvcmRUeXBlKCksIGdldFJlY29y
ZERhdGEua2V5UmFuZ2VEYXRhLCByZXN1bHQpOwogICAgIGVsc2UKQEAgLTgwOCw0NyArOTc0LDEx
MCBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRSZWNvcmQoY29uc3QgSURCUmVxdWVzdERh
dGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJHZQogICAgIGNhbGxiYWNrKGVycm9yLCByZXN1bHQp
OwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRBbGxSZWNvcmRzKGNvbnN0IElEQlJl
cXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCR2V0QWxsUmVjb3Jkc0RhdGEmIGdldEFs
bFJlY29yZHNEYXRhLCBHZXRBbGxSZXN1bHRzQ2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIFVuaXF1
ZUlEQkRhdGFiYXNlOjpnZXRBbGxSZWNvcmRzKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0
RGF0YSwgY29uc3QgSURCR2V0QWxsUmVjb3Jkc0RhdGEmIGdldEFsbFJlY29yZHNEYXRhLCBHZXRB
bGxSZXN1bHRzQ2FsbGJhY2sgY2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgc3BhY2VDaGVja1Jl
c3VsdCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5kZXhlZERC
LCAiVW5pcXVlSURCRGF0YWJhc2U6OmdldEFsbFJlY29yZHMiKTsKIAotICAgIEFTU0VSVChtX2Jh
Y2tpbmdTdG9yZSk7CisgICAgaWYgKHNwYWNlQ2hlY2tSZXN1bHQgPT0gU3BhY2VDaGVja1Jlc3Vs
dDo6VW5rbm93bikgeworICAgICAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAgICAgICAgIHJldHVy
biBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yIH0sIElEQkdldEFsbFJlc3Vs
dCB7IH0pOworCisgICAgICAgIG1fbWFuYWdlci0+cmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5v
cmlnaW4oKSwgMCwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHJlcXVlc3RE
YXRhLCBnZXRBbGxSZWNvcmRzRGF0YSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9v
bCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJE
YXRhYmFzZSBpcyBjbG9zZWQiIH0sIElEQkdldEFsbFJlc3VsdCB7IH0pOworCisgICAgICAgICAg
ICBnZXRBbGxSZWNvcmRzKHJlcXVlc3REYXRhLCBnZXRBbGxSZWNvcmRzRGF0YSwgV1RGTW92ZShj
YWxsYmFjayksIGdyYW50ZWQgPyBTcGFjZUNoZWNrUmVzdWx0OjpQYXNzIDogU3BhY2VDaGVja1Jl
c3VsdDo6RmFpbCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
QVNTRVJUKHNwYWNlQ2hlY2tSZXN1bHQgPT0gU3BhY2VDaGVja1Jlc3VsdDo6UGFzcyk7CisgICAg
aWYgKCFtX2JhY2tpbmdTdG9yZSkKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsg
SW52YWxpZFN0YXRlRXJyb3IsICJCYWNraW5nIHN0b3JlIGlzIGNsb3NlZCIgfSwgSURCR2V0QWxs
UmVzdWx0IHsgfSk7CisKICAgICBJREJHZXRBbGxSZXN1bHQgcmVzdWx0OwogICAgIGF1dG8gZXJy
b3IgPSBtX2JhY2tpbmdTdG9yZS0+Z2V0QWxsUmVjb3JkcyhyZXF1ZXN0RGF0YS50cmFuc2FjdGlv
bklkZW50aWZpZXIoKSwgZ2V0QWxsUmVjb3Jkc0RhdGEsIHJlc3VsdCk7CiAKICAgICBjYWxsYmFj
ayhlcnJvciwgcmVzdWx0KTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Z2V0Q291bnQo
Y29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXlSYW5nZURhdGEm
IHJhbmdlLCBDb3VudENhbGxiYWNrIGNhbGxiYWNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6
Z2V0Q291bnQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXlS
YW5nZURhdGEmIHJhbmdlLCBDb3VudENhbGxiYWNrIGNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0
IHNwYWNlQ2hlY2tSZXN1bHQpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAg
TE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRDb3VudCIpOwogCi0gICAgQVNT
RVJUKG1fYmFja2luZ1N0b3JlKTsKKyAgICBpZiAoc3BhY2VDaGVja1Jlc3VsdCA9PSBTcGFjZUNo
ZWNrUmVzdWx0OjpVbmtub3duKSB7CisgICAgICAgIGlmICghbV9tYW5hZ2VyKQorICAgICAgICAg
ICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IgfSwgMCk7CisK
KyAgICAgICAgbV9tYW5hZ2VyLT5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCAw
LCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgcmVxdWVzdERhdGEsIHJhbmdl
LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIGdyYW50ZWQpIG11dGFibGUgewor
ICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJh
Y2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkRhdGFiYXNlIGlzIGNsb3NlZCIgfSwg
MCk7CisKKyAgICAgICAgICAgIGdldENvdW50KHJlcXVlc3REYXRhLCByYW5nZSwgV1RGTW92ZShj
YWxsYmFjayksIGdyYW50ZWQgPyBTcGFjZUNoZWNrUmVzdWx0OjpQYXNzIDogU3BhY2VDaGVja1Jl
c3VsdDo6RmFpbCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
QVNTRVJUKHNwYWNlQ2hlY2tSZXN1bHQgPT0gU3BhY2VDaGVja1Jlc3VsdDo6UGFzcyk7CisgICAg
aWYgKCFtX2JhY2tpbmdTdG9yZSkKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsg
SW52YWxpZFN0YXRlRXJyb3IsICJCYWNraW5nIHN0b3JlIGlzIGNsb3NlZCIgfSwgMCk7CisKICAg
ICB1aW50NjRfdCBjb3VudCA9IDA7CiAgICAgYXV0byBlcnJvciA9IG1fYmFja2luZ1N0b3JlLT5n
ZXRDb3VudChyZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSwgcmVxdWVzdERhdGEu
b2JqZWN0U3RvcmVJZGVudGlmaWVyKCksIHJlcXVlc3REYXRhLmluZGV4SWRlbnRpZmllcigpLCBy
YW5nZSwgY291bnQpOwogCiAgICAgY2FsbGJhY2soZXJyb3IsIGNvdW50KTsKIH0KIAotdm9pZCBV
bmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlUmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1
ZXN0RGF0YSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5nZURhdGEsIEVycm9yQ2FsbGJh
Y2sgY2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVSZWNvcmQoY29uc3Qg
SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJh
bmdlRGF0YSwgRXJyb3JDYWxsYmFjayBjYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCBzcGFjZUNo
ZWNrUmVzdWx0KQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIExPRyhJbmRl
eGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlUmVjb3JkIik7CiAKLSAgICBBU1NFUlQo
bV9iYWNraW5nU3RvcmUpOworICAgIGlmIChzcGFjZUNoZWNrUmVzdWx0ID09IFNwYWNlQ2hlY2tS
ZXN1bHQ6OlVua25vd24pIHsKKyAgICAgICAgaWYgKCFtX21hbmFnZXIpCisgICAgICAgICAgICBy
ZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciB9KTsKKworICAgICAg
ICBtX21hbmFnZXItPnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIDAsIFt0aGlz
LCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCByZXF1ZXN0RGF0YSwga2V5UmFuZ2VEYXRh
LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIGdyYW50ZWQpIG11dGFibGUgewor
ICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJh
Y2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkRhdGFiYXNlIGlzIGNsb3NlZCIgfSk7
CisKKyAgICAgICAgICAgIGRlbGV0ZVJlY29yZChyZXF1ZXN0RGF0YSwga2V5UmFuZ2VEYXRhLCBX
VEZNb3ZlKGNhbGxiYWNrKSwgZ3JhbnRlZCA/IFNwYWNlQ2hlY2tSZXN1bHQ6OlBhc3MgOiBTcGFj
ZUNoZWNrUmVzdWx0OjpGYWlsKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBBU1NFUlQoc3BhY2VDaGVja1Jlc3VsdCA9PSBTcGFjZUNoZWNrUmVzdWx0OjpQYXNz
KTsKKyAgICBpZiAoIW1fYmFja2luZ1N0b3JlKQorICAgICAgICByZXR1cm4gY2FsbGJhY2soSURC
RXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkJhY2tpbmcgc3RvcmUgaXMgY2xvc2VkIiB9KTsK
KwogICAgIGF1dG8gZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+ZGVsZXRlUmFuZ2UocmVxdWVzdERh
dGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCksIHJlcXVlc3REYXRhLm9iamVjdFN0b3JlSWRlbnRp
ZmllcigpLCBrZXlSYW5nZURhdGEpOwogCiAgICAgY2FsbGJhY2soZXJyb3IpOwogfQogCi12b2lk
IFVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuQ3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1
ZXN0RGF0YSwgY29uc3QgSURCQ3Vyc29ySW5mbyYgaW5mbywgR2V0UmVzdWx0Q2FsbGJhY2sgY2Fs
bGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuQ3Vyc29yKGNvbnN0IElEQlJlcXVl
c3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCQ3Vyc29ySW5mbyYgaW5mbywgR2V0UmVzdWx0
Q2FsbGJhY2sgY2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgc3BhY2VDaGVja1Jlc3VsdCkKIHsK
ICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVl
SURCRGF0YWJhc2U6Om9wZW5DdXJzb3IiKTsKIAotICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7
CisgICAgaWYgKHNwYWNlQ2hlY2tSZXN1bHQgPT0gU3BhY2VDaGVja1Jlc3VsdDo6VW5rbm93bikg
eworICAgICAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJ
REJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yIH0sIElEQkdldFJlc3VsdCB7IH0pOworCisgICAg
ICAgIG1fbWFuYWdlci0+cmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwgMCwgW3Ro
aXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHJlcXVlc3REYXRhLCBpbmZvLCBjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIGdyYW50ZWQpIG11dGFibGUgeworICAgICAg
ICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURC
RXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkRhdGFiYXNlIG9yIHRyYW5zYWN0aW9uIGlzIGNs
b3NlZCIgfSwgSURCR2V0UmVzdWx0IHsgfSk7CisKKyAgICAgICAgICAgIG9wZW5DdXJzb3IocmVx
dWVzdERhdGEsIGluZm8sIFdURk1vdmUoY2FsbGJhY2spLCBncmFudGVkID8gU3BhY2VDaGVja1Jl
c3VsdDo6UGFzcyA6IFNwYWNlQ2hlY2tSZXN1bHQ6OkZhaWwpOworICAgICAgICB9KTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChzcGFjZUNoZWNrUmVzdWx0ID09IFNwYWNl
Q2hlY2tSZXN1bHQ6OlBhc3MpOworICAgIGlmICghbV9iYWNraW5nU3RvcmUpCisgICAgICAgIHJl
dHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiQmFja2luZyBzdG9y
ZSBpcyBjbG9zZWQiIH0sIElEQkdldFJlc3VsdCB7IH0pOwogCiAgICAgSURCR2V0UmVzdWx0IHJl
c3VsdDsKICAgICBhdXRvIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPm9wZW5DdXJzb3IocmVxdWVz
dERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCksIGluZm8sIHJlc3VsdCk7CkBAIC04NTYsMTIg
KzEwODUsMjcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6b3BlbkN1cnNvcihjb25zdCBJREJS
ZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkMKICAgICBjYWxsYmFjayhlcnJvciwg
cmVzdWx0KTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6aXRlcmF0ZUN1cnNvcihjb25z
dCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkl0ZXJhdGVDdXJzb3JEYXRh
JiBkYXRhLCBHZXRSZXN1bHRDYWxsYmFjayBjYWxsYmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJh
c2U6Oml0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25z
dCBJREJJdGVyYXRlQ3Vyc29yRGF0YSYgZGF0YSwgR2V0UmVzdWx0Q2FsbGJhY2sgY2FsbGJhY2ss
IFNwYWNlQ2hlY2tSZXN1bHQgc3BhY2VDaGVja1Jlc3VsdCkKIHsKICAgICBBU1NFUlQoIWlzTWFp
blRocmVhZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6Oml0ZXJh
dGVDdXJzb3IiKTsKIAotICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CisgICAgaWYgKHNwYWNl
Q2hlY2tSZXN1bHQgPT0gU3BhY2VDaGVja1Jlc3VsdDo6VW5rbm93bikgeworICAgICAgICBpZiAo
IW1fbWFuYWdlcikKKyAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFs
aWRTdGF0ZUVycm9yIH0sIElEQkdldFJlc3VsdCB7IH0pOworCisgICAgICAgIG1fbWFuYWdlci0+
cmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwgMCwgW3RoaXMsIHdlYWtUaGlzID0g
V2Vha1B0ciB7ICp0aGlzIH0sIHJlcXVlc3REYXRhLCBkYXRhLCBjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spXShib29sIGdyYW50ZWQpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCF3ZWFr
VGhpcykKKyAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlk
U3RhdGVFcnJvciwgIkRhdGFiYXNlIG9yIHRyYW5zYWN0aW9uIGlzIGNsb3NlZCIgfSwgSURCR2V0
UmVzdWx0IHsgfSk7CisKKyAgICAgICAgICAgIGl0ZXJhdGVDdXJzb3IocmVxdWVzdERhdGEsIGRh
dGEsIFdURk1vdmUoY2FsbGJhY2spLCBncmFudGVkID8gU3BhY2VDaGVja1Jlc3VsdDo6UGFzcyA6
IFNwYWNlQ2hlY2tSZXN1bHQ6OkZhaWwpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIEFTU0VSVChzcGFjZUNoZWNrUmVzdWx0ID09IFNwYWNlQ2hlY2tSZXN1bHQ6
OlBhc3MpOworICAgIGlmICghbV9iYWNraW5nU3RvcmUpCisgICAgICAgIHJldHVybiBjYWxsYmFj
ayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiQmFja2luZyBzdG9yZSBpcyBjbG9zZWQi
IH0sIElEQkdldFJlc3VsdCB7IH0pOwogCiAgICAgSURCR2V0UmVzdWx0IHJlc3VsdDsKICAgICBh
dXRvIHRyYW5zYWN0aW9uSWRlbnRpZmllciA9IHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRp
ZmllcigpOwpAQCAtODcxLDEzICsxMTE1LDMwIEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6Oml0
ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJCiAg
ICAgY2FsbGJhY2soZXJyb3IsIHJlc3VsdCk7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6
OmNvbW1pdFRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0
aW9uLCBFcnJvckNhbGxiYWNrIGNhbGxiYWNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y29t
bWl0VHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24s
IEVycm9yQ2FsbGJhY2sgY2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgc3BhY2VDaGVja1Jlc3Vs
dCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAi
VW5pcXVlSURCRGF0YWJhc2U6OmNvbW1pdFRyYW5zYWN0aW9uIC0gJXMiLCB0cmFuc2FjdGlvbi5p
bmZvKCkuaWRlbnRpZmllcigpLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAorICAg
IGlmIChzcGFjZUNoZWNrUmVzdWx0ID09IFNwYWNlQ2hlY2tSZXN1bHQ6OlVua25vd24pIHsKKyAg
ICAgICAgaWYgKCFtX21hbmFnZXIpCisgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJy
b3IgeyBJbnZhbGlkU3RhdGVFcnJvciB9KTsKKworICAgICAgICBtX21hbmFnZXItPnJlcXVlc3RT
cGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIDAsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIg
eyAqdGhpcyB9LCB3ZWFrVHJhbnNhY3Rpb24gPSBXZWFrUHRyIHsgdHJhbnNhY3Rpb24gfSwgY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICAg
ICAgICAgIGlmICghd2Vha1RoaXMgfHwgIXdlYWtUcmFuc2FjdGlvbikKKyAgICAgICAgICAgICAg
ICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkRhdGFiYXNl
IG9yIHRyYW5zYWN0aW9uIGlzIGNsb3NlZCIgfSk7CisKKyAgICAgICAgICAgIGNvbW1pdFRyYW5z
YWN0aW9uKCp3ZWFrVHJhbnNhY3Rpb24sIFdURk1vdmUoY2FsbGJhY2spLCBncmFudGVkID8gU3Bh
Y2VDaGVja1Jlc3VsdDo6UGFzcyA6IFNwYWNlQ2hlY2tSZXN1bHQ6OkZhaWwpOworICAgICAgICB9
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChzcGFjZUNoZWNrUmVzdWx0
ID09IFNwYWNlQ2hlY2tSZXN1bHQ6OlBhc3MpOwogICAgIEFTU0VSVCh0cmFuc2FjdGlvbi5kYXRh
YmFzZUNvbm5lY3Rpb24oKS5kYXRhYmFzZSgpID09IHRoaXMpOwotICAgIEFTU0VSVChtX2JhY2tp
bmdTdG9yZSk7CisKKyAgICBpZiAoIW1fYmFja2luZ1N0b3JlKQorICAgICAgICByZXR1cm4gY2Fs
bGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkJhY2tpbmcgc3RvcmUgaXMgY2xv
c2VkIiB9KTsKKwogICAgIGF1dG8gdGFrZW5UcmFuc2FjdGlvbiA9IG1faW5Qcm9ncmVzc1RyYW5z
YWN0aW9ucy50YWtlKHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCkpOwogICAgIGlmICgh
dGFrZW5UcmFuc2FjdGlvbikgewogICAgICAgICBpZiAoIW1fb3BlbkRhdGFiYXNlQ29ubmVjdGlv
bnMuY29udGFpbnMoJnRyYW5zYWN0aW9uLmRhdGFiYXNlQ29ubmVjdGlvbigpKSkKQEAgLTg5Mywx
MSArMTE1NCwyNSBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjb21taXRUcmFuc2FjdGlvbihV
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdAogICAgIHRyYW5zYWN0aW9uQ29t
cGxldGVkKFdURk1vdmUodGFrZW5UcmFuc2FjdGlvbikpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRh
dGFiYXNlOjphYm9ydFRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRy
YW5zYWN0aW9uLCBFcnJvckNhbGxiYWNrIGNhbGxiYWNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFz
ZTo6YWJvcnRUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2Fj
dGlvbiwgRXJyb3JDYWxsYmFjayBjYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCBzcGFjZUNoZWNr
UmVzdWx0KQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIExPRyhJbmRleGVk
REIsICJVbmlxdWVJREJEYXRhYmFzZTo6YWJvcnRUcmFuc2FjdGlvbiAtICVzIiwgdHJhbnNhY3Rp
b24uaW5mbygpLmlkZW50aWZpZXIoKS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAK
KyAgICBpZiAoc3BhY2VDaGVja1Jlc3VsdCA9PSBTcGFjZUNoZWNrUmVzdWx0OjpVbmtub3duKSB7
CisgICAgICAgIGlmICghbV9tYW5hZ2VyKQorICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElE
QkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7CisKKyAgICAgICAgbV9tYW5hZ2VyLT5yZXF1
ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCAwLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFr
UHRyIHsgKnRoaXMgfSwgd2Vha1RyYW5zYWN0aW9uID0gV2Vha1B0ciB7IHRyYW5zYWN0aW9uIH0s
IGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgZ3JhbnRlZCkgbXV0YWJsZSB7Cisg
ICAgICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICF3ZWFrVHJhbnNhY3Rpb24pCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJEYXRh
YmFzZSBvciB0cmFuc2FjdGlvbiBpcyBjbG9zZWQiIH0pOworCisgICAgICAgICAgICBhYm9ydFRy
YW5zYWN0aW9uKCp3ZWFrVHJhbnNhY3Rpb24sIFdURk1vdmUoY2FsbGJhY2spLCBncmFudGVkID8g
U3BhY2VDaGVja1Jlc3VsdDo6UGFzcyA6IFNwYWNlQ2hlY2tSZXN1bHQ6OkZhaWwpOworICAgICAg
ICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChzcGFjZUNoZWNrUmVz
dWx0ID09IFNwYWNlQ2hlY2tSZXN1bHQ6OlBhc3MpOwogICAgIEFTU0VSVCh0cmFuc2FjdGlvbi5k
YXRhYmFzZUNvbm5lY3Rpb24oKS5kYXRhYmFzZSgpID09IHRoaXMpOwogCiAgICAgYXV0byB0YWtl
blRyYW5zYWN0aW9uID0gbV9pblByb2dyZXNzVHJhbnNhY3Rpb25zLnRha2UodHJhbnNhY3Rpb24u
aW5mbygpLmlkZW50aWZpZXIoKSk7CkBAIC05MjUsNyArMTIwMCwxMSBAQCB2b2lkIFVuaXF1ZUlE
QkRhdGFiYXNlOjphYm9ydFRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24m
IHRyYW5zYWN0aQogICAgICAgICBtX2RhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJh
c2VJbmZvPigqbV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24tPm9yaWdpbmFsRGF0YWJhc2VJbmZv
KCkpOwogICAgIH0KIAotICAgIGF1dG8gZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+YWJvcnRUcmFu
c2FjdGlvbih0cmFuc2FjdGlvbklkZW50aWZpZXIpOworICAgIElEQkVycm9yIGVycm9yOworICAg
IGlmICghbV9iYWNraW5nU3RvcmUpCisgICAgICAgIGVycm9yID0gSURCRXJyb3IgeyBJbnZhbGlk
U3RhdGVFcnJvciwgIkJhY2tpbmcgc3RvcmUgaXMgY2xvc2VkIiB9OworICAgIGVsc2UKKyAgICAg
ICAgZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+YWJvcnRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbklk
ZW50aWZpZXIpOwogCiAgICAgY2FsbGJhY2soZXJyb3IpOwogICAgIHRyYW5zYWN0aW9uQ29tcGxl
dGVkKFdURk1vdmUodGFrZW5UcmFuc2FjdGlvbikpOwpAQCAtMTIyNSw2ICsxNTA0LDExIEBAIGJv
b2wgVW5pcXVlSURCRGF0YWJhc2U6OnRyeUNsb3NlKCkKICAgICBjbG9zZSgpOwogICAgIHJldHVy
biB0cnVlOwogfQorICAgIAorYm9vbCBVbmlxdWVJREJEYXRhYmFzZTo6aGFzRGF0YUluTWVtb3J5
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9iYWNraW5nU3RvcmUgPyBtX2JhY2tpbmdTdG9yZS0+
aXNFcGhlbWVyYWwoKSA6IGZhbHNlOworfQogCiBSZWZQdHI8U2VydmVyT3BlbkRCUmVxdWVzdD4g
VW5pcXVlSURCRGF0YWJhc2U6OnRha2VOZXh0UnVubmFibGVSZXF1ZXN0KFJlcXVlc3RUeXBlIHJl
cXVlc3RUeXBlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaAppbmRleCBiMmE3NDE3ZjljODE5Y2Zj
MjQxNDZjZTVmYjVjZjVkMjYxMjg1MDgwLi43ODgwZjY2NWVhODdlMDVmY2JhZGMzZDFkMDc0NDYx
OWJlMDM5MjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaApAQCAtNTksOCArNTksOCBAQCBlbnVt
IGNsYXNzIEluZGV4UmVjb3JkVHlwZSA6IGJvb2w7CiBuYW1lc3BhY2UgSURCU2VydmVyIHsKIAog
Y2xhc3MgSURCQ29ubmVjdGlvblRvQ2xpZW50OwotY2xhc3MgSURCU2VydmVyOwogY2xhc3MgVW5p
cXVlSURCRGF0YWJhc2VDb25uZWN0aW9uOworY2xhc3MgVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2Vy
OwogCiB0eXBlZGVmIEZ1bmN0aW9uPHZvaWQoY29uc3QgSURCRXJyb3ImKT4gRXJyb3JDYWxsYmFj
azsKIHR5cGVkZWYgRnVuY3Rpb248dm9pZChjb25zdCBJREJFcnJvciYsIGNvbnN0IElEQktleURh
dGEmKT4gS2V5RGF0YUNhbGxiYWNrOwpAQCAtNzEsNTQgKzcxLDYyIEBAIHR5cGVkZWYgRnVuY3Rp
b248dm9pZChjb25zdCBJREJFcnJvciYsIHVpbnQ2NF90KT4gQ291bnRDYWxsYmFjazsKIGNsYXNz
IFVuaXF1ZUlEQkRhdGFiYXNlIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFVuaXF1ZUlEQkRhdGFi
YXNlPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgVW5pcXVl
SURCRGF0YWJhc2UoSURCU2VydmVyJiwgY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgVW5pcXVlSURCRGF0YWJhc2UoVW5pcXVlSURCRGF0YWJhc2VNYW5h
Z2VyJiwgY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJik7CiAgICAgVW5pcXVlSURCRGF0YWJh
c2UoVW5pcXVlSURCRGF0YWJhc2UmKSA9IGRlbGV0ZTsKICAgICBXRUJDT1JFX0VYUE9SVCB+VW5p
cXVlSURCRGF0YWJhc2UoKTsKIAotICAgIHZvaWQgb3BlbkRhdGFiYXNlQ29ubmVjdGlvbihJREJD
b25uZWN0aW9uVG9DbGllbnQmLCBjb25zdCBJREJSZXF1ZXN0RGF0YSYpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgb3BlbkRhdGFiYXNlQ29ubmVjdGlvbihJREJDb25uZWN0aW9uVG9DbGllbnQm
LCBjb25zdCBJREJSZXF1ZXN0RGF0YSYpOwogCiAgICAgY29uc3QgSURCRGF0YWJhc2VJbmZvJiBp
bmZvKCkgY29uc3Q7Ci0gICAgSURCU2VydmVyJiBzZXJ2ZXIoKSB7IHJldHVybiBtX3NlcnZlcjsg
fQorICAgIFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlciogbWFuYWdlcigpOwogICAgIGNvbnN0IElE
QkRhdGFiYXNlSWRlbnRpZmllciYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRp
ZmllcjsgfQogCi0gICAgdm9pZCBjcmVhdGVPYmplY3RTdG9yZShVbmlxdWVJREJEYXRhYmFzZVRy
YW5zYWN0aW9uJiwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiwgRXJyb3JDYWxsYmFjayk7Ci0g
ICAgdm9pZCBkZWxldGVPYmplY3RTdG9yZShVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwg
Y29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUsIEVycm9yQ2FsbGJhY2spOwotICAgIHZvaWQg
cmVuYW1lT2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIHVpbnQ2NF90
IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lLCBFcnJvckNhbGxi
YWNrKTsKLSAgICB2b2lkIGNsZWFyT2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2Fj
dGlvbiYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgRXJyb3JDYWxsYmFjayk7Ci0g
ICAgdm9pZCBjcmVhdGVJbmRleChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgY29uc3Qg
SURCSW5kZXhJbmZvJiwgRXJyb3JDYWxsYmFjayk7Ci0gICAgdm9pZCBkZWxldGVJbmRleChVbmlx
dWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIGluZGV4TmFtZSwgRXJyb3JDYWxsYmFjayk7Ci0gICAgdm9pZCByZW5h
bWVJbmRleChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgdWludDY0X3Qgb2JqZWN0U3Rv
cmVJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRleElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3
TmFtZSwgRXJyb3JDYWxsYmFjayk7CisgICAgZW51bSBjbGFzcyBTcGFjZUNoZWNrUmVzdWx0IDog
dWludDhfdCB7CisgICAgICAgIFVua25vd24sCisgICAgICAgIFBhc3MsCisgICAgICAgIEZhaWwK
KyAgICB9OworICAgIHZvaWQgY3JlYXRlT2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFu
c2FjdGlvbiYsIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYsIEVycm9yQ2FsbGJhY2ssIFNwYWNl
Q2hlY2tSZXN1bHQgPSBTcGFjZUNoZWNrUmVzdWx0OjpVbmtub3duKTsKKyAgICB2b2lkIGRlbGV0
ZU9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCBjb25zdCBTdHJpbmcm
IG9iamVjdFN0b3JlTmFtZSwgRXJyb3JDYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCA9IFNwYWNl
Q2hlY2tSZXN1bHQ6OlVua25vd24pOworICAgIHZvaWQgcmVuYW1lT2JqZWN0U3RvcmUoVW5pcXVl
SURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBuZXdOYW1lLCBFcnJvckNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0ID0g
U3BhY2VDaGVja1Jlc3VsdDo6VW5rbm93bik7CisgICAgdm9pZCBjbGVhck9iamVjdFN0b3JlKFVu
aXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZp
ZXIsIEVycm9yQ2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgPSBTcGFjZUNoZWNrUmVzdWx0OjpV
bmtub3duKTsKKyAgICB2b2lkIGNyZWF0ZUluZGV4KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rp
b24mLCBjb25zdCBJREJJbmRleEluZm8mLCBFcnJvckNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0
ID0gU3BhY2VDaGVja1Jlc3VsdDo6VW5rbm93bik7CisgICAgdm9pZCBkZWxldGVJbmRleChVbmlx
dWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIGluZGV4TmFtZSwgRXJyb3JDYWxsYmFjaywgU3BhY2VDaGVja1Jlc3Vs
dCA9IFNwYWNlQ2hlY2tSZXN1bHQ6OlVua25vd24pOworICAgIHZvaWQgcmVuYW1lSW5kZXgoVW5p
cXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmll
ciwgdWludDY0X3QgaW5kZXhJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUsIEVycm9y
Q2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgPSBTcGFjZUNoZWNrUmVzdWx0OjpVbmtub3duKTsK
ICAgICB2b2lkIHB1dE9yQWRkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5RGF0
YSYsIGNvbnN0IElEQlZhbHVlJiwgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUs
IEtleURhdGFDYWxsYmFjayk7Ci0gICAgdm9pZCBnZXRSZWNvcmQoY29uc3QgSURCUmVxdWVzdERh
dGEmLCBjb25zdCBJREJHZXRSZWNvcmREYXRhJiwgR2V0UmVzdWx0Q2FsbGJhY2spOwotICAgIHZv
aWQgZ2V0QWxsUmVjb3Jkcyhjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkdldEFsbFJl
Y29yZHNEYXRhJiwgR2V0QWxsUmVzdWx0c0NhbGxiYWNrKTsKLSAgICB2b2lkIGdldENvdW50KGNv
bnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiwgQ291bnRDYWxsYmFj
ayk7Ci0gICAgdm9pZCBkZWxldGVSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJ
REJLZXlSYW5nZURhdGEmLCBFcnJvckNhbGxiYWNrKTsKLSAgICB2b2lkIG9wZW5DdXJzb3IoY29u
c3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJDdXJzb3JJbmZvJiwgR2V0UmVzdWx0Q2FsbGJh
Y2spOwotICAgIHZvaWQgaXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0
IElEQkl0ZXJhdGVDdXJzb3JEYXRhJiwgR2V0UmVzdWx0Q2FsbGJhY2spOwotICAgIHZvaWQgY29t
bWl0VHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIEVycm9yQ2FsbGJh
Y2spOwotICAgIHZvaWQgYWJvcnRUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0
aW9uJiwgRXJyb3JDYWxsYmFjayk7CisgICAgdm9pZCBwdXRPckFkZEFmdGVyU3BhY2VDaGVjayhj
b25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleURhdGEmLCBjb25zdCBJREJWYWx1ZSYs
IEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlLCBLZXlEYXRhQ2FsbGJhY2ssIGJv
b2wgaXNLZXlHZW5lcmF0ZWQsIGNvbnN0IEluZGV4SURUb0luZGV4S2V5TWFwJiwgY29uc3QgSURC
T2JqZWN0U3RvcmVJbmZvJiwgU3BhY2VDaGVja1Jlc3VsdCk7CisgICAgdm9pZCBnZXRSZWNvcmQo
Y29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJHZXRSZWNvcmREYXRhJiwgR2V0UmVzdWx0
Q2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgPSBTcGFjZUNoZWNrUmVzdWx0OjpVbmtub3duKTsK
KyAgICB2b2lkIGdldEFsbFJlY29yZHMoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJH
ZXRBbGxSZWNvcmRzRGF0YSYsIEdldEFsbFJlc3VsdHNDYWxsYmFjaywgU3BhY2VDaGVja1Jlc3Vs
dCA9IFNwYWNlQ2hlY2tSZXN1bHQ6OlVua25vd24pOworICAgIHZvaWQgZ2V0Q291bnQoY29uc3Qg
SURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmLCBDb3VudENhbGxiYWNrLCBT
cGFjZUNoZWNrUmVzdWx0ID0gU3BhY2VDaGVja1Jlc3VsdDo6VW5rbm93bik7CisgICAgdm9pZCBk
ZWxldGVSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlSYW5nZURhdGEm
LCBFcnJvckNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0ID0gU3BhY2VDaGVja1Jlc3VsdDo6VW5r
bm93bik7CisgICAgdm9pZCBvcGVuQ3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3Qg
SURCQ3Vyc29ySW5mbyYsIEdldFJlc3VsdENhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0ID0gU3Bh
Y2VDaGVja1Jlc3VsdDo6VW5rbm93bik7CisgICAgdm9pZCBpdGVyYXRlQ3Vyc29yKGNvbnN0IElE
QlJlcXVlc3REYXRhJiwgY29uc3QgSURCSXRlcmF0ZUN1cnNvckRhdGEmLCBHZXRSZXN1bHRDYWxs
YmFjaywgU3BhY2VDaGVja1Jlc3VsdCA9IFNwYWNlQ2hlY2tSZXN1bHQ6OlVua25vd24pOworICAg
IHZvaWQgY29tbWl0VHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIEVy
cm9yQ2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgPSBTcGFjZUNoZWNrUmVzdWx0OjpVbmtub3du
KTsKKyAgICB2b2lkIGFib3J0VHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlv
biYsIEVycm9yQ2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgPSBTcGFjZUNoZWNrUmVzdWx0OjpV
bmtub3duKTsKIAogICAgIHZvaWQgZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlKFVuaXF1
ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJh
bnNhY3Rpb25JZGVudGlmaWVyKTsKICAgICB2b2lkIGNvbm5lY3Rpb25DbG9zZWRGcm9tQ2xpZW50
KFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYpOwogICAgIHZvaWQgZGlkRmlyZVZlcnNpb25D
aGFuZ2VFdmVudChVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mLCBjb25zdCBJREJSZXNvdXJj
ZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBJbmRleGVkREI6OkNvbm5lY3Rpb25DbG9z
ZWRPbkJlaGFsZk9mU2VydmVyKTsKLSAgICB2b2lkIG9wZW5EQlJlcXVlc3RDYW5jZWxsZWQoY29u
c3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllcik7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBvcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKGNvbnN0IElEQlJlc291cmNlSWRl
bnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIpOwogCiAgICAgdm9pZCBlbnF1ZXVlVHJhbnNhY3Rp
b24oUmVmPFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24+JiYpOwogCi0gICAgdm9pZCBoYW5k
bGVEZWxldGUoSURCQ29ubmVjdGlvblRvQ2xpZW50JiwgY29uc3QgSURCUmVxdWVzdERhdGEmKTsK
LSAgICB2b2lkIGltbWVkaWF0ZUNsb3NlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBoYW5k
bGVEZWxldGUoSURCQ29ubmVjdGlvblRvQ2xpZW50JiwgY29uc3QgSURCUmVxdWVzdERhdGEmKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGltbWVkaWF0ZUNsb3NlKCk7CiAKICAgICBib29sIGhh
c0FjdGl2ZVRyYW5zYWN0aW9ucygpIGNvbnN0OwotICAgIHZvaWQgYWJvcnRBY3RpdmVUcmFuc2Fj
dGlvbnMoKTsKLSAgICBib29sIHRyeUNsb3NlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBh
Ym9ydEFjdGl2ZVRyYW5zYWN0aW9ucygpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgdHJ5Q2xv
c2UoKTsKIAotICAgIFN0cmluZyBmaWxlUGF0aCgpIGNvbnN0OwotICAgIHN0ZDo6b3B0aW9uYWw8
SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbj4gbmFtZUFuZFZlcnNpb24oKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBTdHJpbmcgZmlsZVBhdGgoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGQ6Om9wdGlvbmFsPElEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24+IG5hbWVBbmRWZXJzaW9u
KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNEYXRhSW5NZW1vcnkoKSBjb25z
dDsKIAogcHJpdmF0ZToKICAgICB2b2lkIGhhbmRsZURhdGFiYXNlT3BlcmF0aW9ucygpOwogICAg
IHZvaWQgaGFuZGxlQ3VycmVudE9wZXJhdGlvbigpOwogICAgIHZvaWQgcGVyZm9ybUN1cnJlbnRP
cGVuT3BlcmF0aW9uKCk7CisgICAgdm9pZCBwZXJmb3JtQ3VycmVudE9wZW5PcGVyYXRpb25BZnRl
clNwYWNlQ2hlY2soYm9vbCBpc0dyYW50ZWQpOwogICAgIHZvaWQgcGVyZm9ybUN1cnJlbnREZWxl
dGVPcGVyYXRpb24oKTsKICAgICBlbnVtIGNsYXNzIFJlcXVlc3RUeXBlIHsgRGVsZXRlLCBBbnkg
fTsKICAgICBSZWZQdHI8U2VydmVyT3BlbkRCUmVxdWVzdD4gdGFrZU5leHRSdW5uYWJsZVJlcXVl
c3QoUmVxdWVzdFR5cGUgPSBSZXF1ZXN0VHlwZTo6QW55KTsKQEAgLTE0NiwxMSArMTU0LDEzIEBA
IHByaXZhdGU6CiAKICAgICB2b2lkIGNsZWFyVHJhbnNhY3Rpb25zT25Db25uZWN0aW9uKFVuaXF1
ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYpOwogCi0gICAgSURCU2VydmVyJiBtX3NlcnZlcjsKKyAg
ICBJREJTZXJ2ZXIqIG1fc2VydmVyOworICAgIFdlYWtQdHI8VW5pcXVlSURCRGF0YWJhc2VNYW5h
Z2VyPiBtX21hbmFnZXI7CiAgICAgSURCRGF0YWJhc2VJZGVudGlmaWVyIG1faWRlbnRpZmllcjsK
IAogICAgIExpc3RIYXNoU2V0PFJlZlB0cjxTZXJ2ZXJPcGVuREJSZXF1ZXN0Pj4gbV9wZW5kaW5n
T3BlbkRCUmVxdWVzdHM7CiAgICAgUmVmUHRyPFNlcnZlck9wZW5EQlJlcXVlc3Q+IG1fY3VycmVu
dE9wZW5EQlJlcXVlc3Q7CisgICAgSGFzaFNldDxJREJSZXNvdXJjZUlkZW50aWZpZXI+IG1fb3Bl
bkRCUmVxdWVzdHNGb3JTcGFjZUNoZWNrOwogCiAgICAgTGlzdEhhc2hTZXQ8UmVmUHRyPFVuaXF1
ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbj4+IG1fb3BlbkRhdGFiYXNlQ29ubmVjdGlvbnM7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJ
REJEYXRhYmFzZUNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5jcHAKaW5kZXggNzQzZWRjYzNi
OGM1OTQwNTFmNzkxMTE2NTI2YWY0ZDAyMTY5MTM2Ny4uM2M3NzJhZjcwYjc0ODIyOTc0ZDlkNWI3
MTBkMzE1ZjBhOWE4ZmI3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlQ29ubmVj
dGlvbi5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVk
ZSAiU2VydmVyT3BlbkRCUmVxdWVzdC5oIgogI2luY2x1ZGUgIlVuaXF1ZUlEQkRhdGFiYXNlLmgi
CisjaW5jbHVkZSAiVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIG5hbWVzcGFjZSBJREJTZXJ2ZXIgewpAQCAtNDIsMTEgKzQzLDE0IEBAIFJlZjxVbmlx
dWVJREJEYXRhYmFzZUNvbm5lY3Rpb24+IFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbjo6Y3Jl
YXRlKFVuaXF1ZUlEQkRhCiAKIFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbjo6VW5pcXVlSURC
RGF0YWJhc2VDb25uZWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlJiBkYXRhYmFzZSwgU2VydmVyT3Bl
bkRCUmVxdWVzdCYgcmVxdWVzdCkKICAgICA6IG1fZGF0YWJhc2UoZGF0YWJhc2UpCi0gICAgLCBt
X3NlcnZlcihkYXRhYmFzZS5zZXJ2ZXIoKSkKKyAgICAsIG1fbWFuYWdlcihkYXRhYmFzZS5tYW5h
Z2VyKCkpCiAgICAgLCBtX2Nvbm5lY3Rpb25Ub0NsaWVudChyZXF1ZXN0LmNvbm5lY3Rpb24oKSkK
ICAgICAsIG1fb3BlblJlcXVlc3RJZGVudGlmaWVyKHJlcXVlc3QucmVxdWVzdERhdGEoKS5yZXF1
ZXN0SWRlbnRpZmllcigpKQogewotICAgIG1fc2VydmVyLnJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0
aW9uKCp0aGlzKTsKKyAgICBpZiAoYXV0byogbWFuYWdlciA9IGRhdGFiYXNlLm1hbmFnZXIoKSkg
eworICAgICAgICBtX21hbmFnZXIgPSAqbWFuYWdlcjsKKyAgICAgICAgbV9tYW5hZ2VyLT5yZWdp
c3RlckNvbm5lY3Rpb24oKnRoaXMpOworICAgIH0KICAgICBtX2Nvbm5lY3Rpb25Ub0NsaWVudC0+
cmVnaXN0ZXJEYXRhYmFzZUNvbm5lY3Rpb24oKnRoaXMpOwogfQogCkBAIC01NCwxMCArNTgsMTYg
QEAgVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uOjp+VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0
aW9uKCkKIHsKICAgICBBU1NFUlQobV90cmFuc2FjdGlvbk1hcC5pc0VtcHR5KCkpOwogCi0gICAg
bV9zZXJ2ZXIudW5yZWdpc3RlckRhdGFiYXNlQ29ubmVjdGlvbigqdGhpcyk7CisgICAgaWYgKG1f
bWFuYWdlcikKKyAgICAgICAgbV9tYW5hZ2VyLT51bnJlZ2lzdGVyQ29ubmVjdGlvbigqdGhpcyk7
CiAgICAgbV9jb25uZWN0aW9uVG9DbGllbnQtPnVucmVnaXN0ZXJEYXRhYmFzZUNvbm5lY3Rpb24o
KnRoaXMpOwogfQogCitVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIqIFVuaXF1ZUlEQkRhdGFiYXNl
Q29ubmVjdGlvbjo6bWFuYWdlcigpCit7CisgICAgcmV0dXJuIG1fbWFuYWdlci5nZXQoKTsKK30K
KwogYm9vbCBVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb246Omhhc05vbkZpbmlzaGVkVHJhbnNh
Y3Rpb25zKCkgY29uc3QKIHsKICAgICByZXR1cm4gIW1fdHJhbnNhY3Rpb25NYXAuaXNFbXB0eSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1Vu
aXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5oCmluZGV4IDJlMTlkZmQy
ZGM5MTQzNGJmYzVlN2MzYWU0YmU2NmQ4Y2Q4NTg4MTEuLjk4ZmViNTljNzZiZWFlYmU3MGVkZGU0
YmU1NThmY2E4NzFjOThkYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0
aW9uLmgKQEAgLTI1LDcgKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJJREJT
ZXJ2ZXIuaCIKICNpbmNsdWRlICJVbmlxdWVJREJEYXRhYmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0lkZW50aWZpZWQuaD4KQEAgLTM2LDYgKzM1LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJREJFcnJvcjsKIGNsYXNzIElEQlJlc3VsdERh
dGE7CitjbGFzcyBVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXI7CiAKIG5hbWVzcGFjZSBJREJTZXJ2
ZXIgewogCkBAIC01MiwxMSArNTIsMTEgQEAgcHVibGljOgogCiAgICAgY29uc3QgSURCUmVzb3Vy
Y2VJZGVudGlmaWVyJiBvcGVuUmVxdWVzdElkZW50aWZpZXIoKSB7IHJldHVybiBtX29wZW5SZXF1
ZXN0SWRlbnRpZmllcjsgfQogICAgIFVuaXF1ZUlEQkRhdGFiYXNlKiBkYXRhYmFzZSgpIHsgcmV0
dXJuIG1fZGF0YWJhc2UuZ2V0KCk7IH0KLSAgICBJREJTZXJ2ZXIqIHNlcnZlcigpIHsgcmV0dXJu
ICZtX3NlcnZlcjsgfQorICAgIFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlciogbWFuYWdlcigpOwog
ICAgIElEQkNvbm5lY3Rpb25Ub0NsaWVudCYgY29ubmVjdGlvblRvQ2xpZW50KCkgeyByZXR1cm4g
bV9jb25uZWN0aW9uVG9DbGllbnQ7IH0KIAotICAgIHZvaWQgY29ubmVjdGlvblBlbmRpbmdDbG9z
ZUZyb21DbGllbnQoKTsKLSAgICB2b2lkIGNvbm5lY3Rpb25DbG9zZWRGcm9tQ2xpZW50KCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb25uZWN0aW9uUGVuZGluZ0Nsb3NlRnJvbUNsaWVudCgp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29ubmVjdGlvbkNsb3NlZEZyb21DbGllbnQoKTsK
IAogICAgIGJvb2wgY2xvc2VQZW5kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9jbG9zZVBlbmRpbmc7
IH0KIApAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmaXJlVmVyc2lvbkNoYW5n
ZUV2ZW50KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIHVp
bnQ2NF90IHJlcXVlc3RlZFZlcnNpb24pOwogICAgIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rp
b24mIGNyZWF0ZVZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbih1aW50NjRfdCBuZXdWZXJzaW9uKTsK
IAotICAgIHZvaWQgZXN0YWJsaXNoVHJhbnNhY3Rpb24oY29uc3QgSURCVHJhbnNhY3Rpb25JbmZv
Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlc3RhYmxpc2hUcmFuc2FjdGlvbihjb25zdCBJ
REJUcmFuc2FjdGlvbkluZm8mKTsKICAgICB2b2lkIGRpZEFib3J0VHJhbnNhY3Rpb24oVW5pcXVl
SURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIGNvbnN0IElEQkVycm9yJik7CiAgICAgdm9pZCBkaWRD
b21taXRUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgY29uc3QgSURC
RXJyb3ImKTsKICAgICB2b2lkIGRpZENyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlc3VsdERh
dGEmKTsKQEAgLTc1LDggKzc1LDggQEAgcHVibGljOgogICAgIHZvaWQgZGlkQ3JlYXRlSW5kZXgo
Y29uc3QgSURCUmVzdWx0RGF0YSYpOwogICAgIHZvaWQgZGlkRGVsZXRlSW5kZXgoY29uc3QgSURC
UmVzdWx0RGF0YSYpOwogICAgIHZvaWQgZGlkUmVuYW1lSW5kZXgoY29uc3QgSURCUmVzdWx0RGF0
YSYpOwotICAgIHZvaWQgZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudChjb25zdCBJREJSZXNvdXJj
ZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBJbmRleGVkREI6OkNvbm5lY3Rpb25DbG9z
ZWRPbkJlaGFsZk9mU2VydmVyKTsKLSAgICB2b2lkIGRpZEZpbmlzaEhhbmRsaW5nVmVyc2lvbkNo
YW5nZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcik7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KGNvbnN0
IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIEluZGV4ZWREQjo6Q29u
bmVjdGlvbkNsb3NlZE9uQmVoYWxmT2ZTZXJ2ZXIpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
ZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmll
ciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKIAogICAgIHZvaWQgYWJvcnRUcmFuc2FjdGlvbldp
dGhvdXRDYWxsYmFjayhVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJik7CiAKQEAgLTg4LDcg
Kzg4LDcgQEAgcHJpdmF0ZToKICAgICBVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24oVW5pcXVl
SURCRGF0YWJhc2UmLCBTZXJ2ZXJPcGVuREJSZXF1ZXN0Jik7CiAKICAgICBXZWFrUHRyPFVuaXF1
ZUlEQkRhdGFiYXNlPiBtX2RhdGFiYXNlOwotICAgIElEQlNlcnZlciYgbV9zZXJ2ZXI7CisgICAg
V2Vha1B0cjxVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXI+IG1fbWFuYWdlcjsKICAgICBSZWY8SURC
Q29ubmVjdGlvblRvQ2xpZW50PiBtX2Nvbm5lY3Rpb25Ub0NsaWVudDsKICAgICBJREJSZXNvdXJj
ZUlkZW50aWZpZXIgbV9vcGVuUmVxdWVzdElkZW50aWZpZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZU1hbmFn
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJE
YXRhYmFzZU1hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mODNlZmI0OTBjYTNiZTE4M2MwN2RhMGYxZDY4
YTllNjRjOWZiMzMyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlci5oCkBAIC0wLDAgKzEsNTUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIklEQkRhdGFiYXNlSWRl
bnRpZmllci5oIgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworc3RydWN0IENsaWVudE9yaWdpbjsKKworbmFtZXNwYWNlIElEQlNlcnZlciB7CisKK2Ns
YXNzIElEQkJhY2tpbmdTdG9yZTsKK2NsYXNzIFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbjsK
K2NsYXNzIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb247CisKK2NsYXNzIFVuaXF1ZUlEQkRh
dGFiYXNlTWFuYWdlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxVbmlxdWVJREJEYXRhYmFzZU1h
bmFnZXI+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICB2aXJ0
dWFsIH5VbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVn
aXN0ZXJDb25uZWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgdW5yZWdpc3RlckNvbm5lY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0
aW9uJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclRyYW5zYWN0aW9uKFVuaXF1ZUlE
QkRhdGFiYXNlVHJhbnNhY3Rpb24mKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJU
cmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJikgPSAwOworICAgIHZpcnR1
YWwgc3RkOjp1bmlxdWVfcHRyPElEQkJhY2tpbmdTdG9yZT4gY3JlYXRlQmFja2luZ1N0b3JlKGNv
bnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVz
dFNwYWNlKGNvbnN0IENsaWVudE9yaWdpbiYsIHVpbnQ2NF90IHNpemUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIElEQlNlcnZlcgor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VU
cmFuc2FjdGlvbi5jcHAKaW5kZXggMWNjMDI4MTdhMTI0YzhkMGVkNTJmMjEzYWM4ZTUwMDZiYTZi
OTZkZS4uNmUzY2UwNDQwNmZjYWQzM2JjYzFjOWU5ZjYxMmUyYWY0MTA2OTQxZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFi
YXNlVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcApAQCAtMjgsNyArMjgsNiBA
QAogCiAjaW5jbHVkZSAiSURCSXRlcmF0ZUN1cnNvckRhdGEuaCIKICNpbmNsdWRlICJJREJSZXN1
bHREYXRhLmgiCi0jaW5jbHVkZSAiSURCU2VydmVyLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgog
I2luY2x1ZGUgIlVuaXF1ZUlEQkRhdGFiYXNlLmgiCiAKQEAgLTUwLDEyICs0OSwxNCBAQCBVbmlx
dWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uKFVu
aXF1ZUlEQkRhdGFiYXNlQ29ubgogICAgIGlmIChtX3RyYW5zYWN0aW9uSW5mby5tb2RlKCkgPT0g
SURCVHJhbnNhY3Rpb25Nb2RlOjpWZXJzaW9uY2hhbmdlKQogICAgICAgICBtX29yaWdpbmFsRGF0
YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KGRhdGFiYXNlLT5pbmZvKCkp
OwogCi0gICAgZGF0YWJhc2VDb25uZWN0aW9uKCkuc2VydmVyKCktPnJlZ2lzdGVyVHJhbnNhY3Rp
b24oKnRoaXMpOworICAgIGlmIChhdXRvKiBtYW5hZ2VyID0gZGF0YWJhc2VDb25uZWN0aW9uKCku
bWFuYWdlcigpKQorICAgICAgICBtYW5hZ2VyLT5yZWdpc3RlclRyYW5zYWN0aW9uKCp0aGlzKTsK
IH0KIAogVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6flVuaXF1ZUlEQkRhdGFiYXNlVHJh
bnNhY3Rpb24oKQogewotICAgIGRhdGFiYXNlQ29ubmVjdGlvbigpLnNlcnZlcigpLT51bnJlZ2lz
dGVyVHJhbnNhY3Rpb24oKnRoaXMpOworICAgIGlmIChhdXRvKiBtYW5hZ2VyID0gZGF0YWJhc2VD
b25uZWN0aW9uKCkubWFuYWdlcigpKQorICAgICAgICBtYW5hZ2VyLT51bnJlZ2lzdGVyVHJhbnNh
Y3Rpb24oKnRoaXMpOwogfQogCiBVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mIFVuaXF1ZUlE
QkRhdGFiYXNlVHJhbnNhY3Rpb246OmRhdGFiYXNlQ29ubmVjdGlvbigpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VU
cmFuc2FjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1Vu
aXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uaAppbmRleCA5NTk2NjUyYWRjZGJhN2EwNDhiNjE5
Zjc0ZWYxYTkyY2VlZjllMGU1Li5mYmE4NWMxNzM4YjczNDJlMTI4ODAwYWViOWQxZGE0NjdlZTdh
MTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmgKQEAgLTUx
LDcgKzUxLDcgQEAgbmFtZXNwYWNlIElEQlNlcnZlciB7CiBjbGFzcyBJREJTZXJ2ZXI7CiBjbGFz
cyBVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb247CiAKLWNsYXNzIFVuaXF1ZUlEQkRhdGFiYXNl
VHJhbnNhY3Rpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0
aW9uPiB7CitjbGFzcyBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uIDogcHVibGljIENhbk1h
a2VXZWFrUHRyPFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24+LCBwdWJsaWMgUmVmQ291bnRl
ZDxVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJl
ZjxVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uPiBjcmVhdGUoVW5pcXVlSURCRGF0YWJhc2VD
b25uZWN0aW9uJiwgY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJik7CiAKQEAgLTU5LDI5ICs1OSwy
OSBAQCBwdWJsaWM6CiAKICAgICBVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mIGRhdGFiYXNl
Q29ubmVjdGlvbigpOwogICAgIGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYgaW5mbygpIGNvbnN0
IHsgcmV0dXJuIG1fdHJhbnNhY3Rpb25JbmZvOyB9Ci0gICAgYm9vbCBpc1ZlcnNpb25DaGFuZ2Uo
KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzVmVyc2lvbkNoYW5nZSgpIGNvbnN0
OwogICAgIGJvb2wgaXNSZWFkT25seSgpIGNvbnN0OwogCiAgICAgSURCRGF0YWJhc2VJbmZvKiBv
cmlnaW5hbERhdGFiYXNlSW5mbygpIGNvbnN0OwogCi0gICAgdm9pZCBhYm9ydCgpOwotICAgIHZv
aWQgYWJvcnRXaXRob3V0Q2FsbGJhY2soKTsKLSAgICB2b2lkIGNvbW1pdCh1aW50NjRfdCBwZW5k
aW5nUmVxdWVzdENvdW50KTsKLQotICAgIHZvaWQgY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURC
UmVxdWVzdERhdGEmLCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mKTsKLSAgICB2b2lkIGRlbGV0
ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgU3RyaW5nJiBvYmplY3RT
dG9yZU5hbWUpOwotICAgIHZvaWQgcmVuYW1lT2JqZWN0U3RvcmUoY29uc3QgSURCUmVxdWVzdERh
dGEmLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFt
ZSk7Ci0gICAgdm9pZCBjbGVhck9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgdWlu
dDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKLSAgICB2b2lkIGNyZWF0ZUluZGV4KGNvbnN0
IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCSW5kZXhJbmZvJik7Ci0gICAgdm9pZCBkZWxldGVJ
bmRleChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBpbmRleE5hbWUpOwotICAgIHZvaWQgcmVuYW1lSW5kZXgoY29uc3Qg
SURCUmVxdWVzdERhdGEmLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90
IGluZGV4SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lKTsKLSAgICB2b2lkIHB1dE9y
QWRkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5RGF0YSYsIGNvbnN0IElEQlZh
bHVlJiwgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUpOwotICAgIHZvaWQgZ2V0
UmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCR2V0UmVjb3JkRGF0YSYpOwot
ICAgIHZvaWQgZ2V0QWxsUmVjb3Jkcyhjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkdl
dEFsbFJlY29yZHNEYXRhJik7Ci0gICAgdm9pZCBnZXRDb3VudChjb25zdCBJREJSZXF1ZXN0RGF0
YSYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYpOwotICAgIHZvaWQgZGVsZXRlUmVjb3JkKGNvbnN0
IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJik7Ci0gICAgdm9pZCBvcGVu
Q3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCQ3Vyc29ySW5mbyYpOwotICAg
IHZvaWQgaXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkl0ZXJh
dGVDdXJzb3JEYXRhJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhYm9ydCgpOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgYWJvcnRXaXRob3V0Q2FsbGJhY2soKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGNvbW1pdCh1aW50NjRfdCBwZW5kaW5nUmVxdWVzdENvdW50KTsKKworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVxdWVzdERhdGEm
LCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRl
bGV0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgU3RyaW5nJiBvYmpl
Y3RTdG9yZU5hbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVuYW1lT2JqZWN0U3RvcmUo
Y29uc3QgSURCUmVxdWVzdERhdGEmLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgbmV3TmFtZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhck9iamVj
dFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlm
aWVyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNyZWF0ZUluZGV4KGNvbnN0IElEQlJlcXVl
c3REYXRhJiwgY29uc3QgSURCSW5kZXhJbmZvJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBk
ZWxldGVJbmRleChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBpbmRleE5hbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgcmVuYW1lSW5kZXgoY29uc3QgSURCUmVxdWVzdERhdGEmLCB1aW50NjRfdCBvYmplY3RTdG9y
ZUlkZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdO
YW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHB1dE9yQWRkKGNvbnN0IElEQlJlcXVlc3RE
YXRhJiwgY29uc3QgSURCS2V5RGF0YSYsIGNvbnN0IElEQlZhbHVlJiwgSW5kZXhlZERCOjpPYmpl
Y3RTdG9yZU92ZXJ3cml0ZU1vZGUpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0UmVjb3Jk
KGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCR2V0UmVjb3JkRGF0YSYpOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgZ2V0QWxsUmVjb3Jkcyhjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNv
bnN0IElEQkdldEFsbFJlY29yZHNEYXRhJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRD
b3VudChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYpOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZGVsZXRlUmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwg
Y29uc3QgSURCS2V5UmFuZ2VEYXRhJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBvcGVuQ3Vy
c29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCQ3Vyc29ySW5mbyYpOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgaXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNv
bnN0IElEQkl0ZXJhdGVDdXJzb3JEYXRhJik7CiAKICAgICB2b2lkIGRpZEFjdGl2YXRlSW5CYWNr
aW5nU3RvcmUoY29uc3QgSURCRXJyb3ImKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkVycm9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3IuaAppbmRleCBmZjE3Yzk4YTQxMTVkZTYyY2Fj
YzcwYWQzMjUyYmQ2ZWRmMTFmMzk5Li5iMzBhZDM5MTc2ZjAzZmYwZDZjOTM5OGQ2YjNlZDE5Y2Qy
ZTk5MjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFy
ZWQvSURCRXJyb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFy
ZWQvSURCRXJyb3IuaApAQCAtNTIsNiArNTIsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIG1lc3Nh
Z2UoKSBjb25zdDsKIAogICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gIW1fY29kZTsg
fQorICAgIG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhaXNOdWxsKCk7IH0KIAogICAg
IFdFQkNPUkVfRVhQT1JUIElEQkVycm9yIGlzb2xhdGVkQ29weSgpIGNvbnN0OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0
RGF0YS5oCmluZGV4IDAxOGNiMTNlNzVlYjY0NWRkMTE0ZTI0ZjZkYmZlYTM0Y2Y1NWIxNjQuLjAw
MTc4N2E2NjU4YTQxNzhiNmE3OTcxMjhhMDRkYTM2YjhhZmRmZjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5o
CkBAIC01Niw4ICs1Niw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBJREJSZXF1ZXN0
RGF0YSBpc29sYXRlZENvcHkoKSBjb25zdDsKIAogICAgIElEQkNvbm5lY3Rpb25JZGVudGlmaWVy
IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKCkgY29uc3Q7Ci0gICAgSURCUmVzb3VyY2VJZGVu
dGlmaWVyIHJlcXVlc3RJZGVudGlmaWVyKCkgY29uc3Q7Ci0gICAgSURCUmVzb3VyY2VJZGVudGlm
aWVyIHRyYW5zYWN0aW9uSWRlbnRpZmllcigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIElE
QlJlc291cmNlSWRlbnRpZmllciByZXF1ZXN0SWRlbnRpZmllcigpIGNvbnN0OworICAgIFdFQkNP
UkVfRVhQT1JUIElEQlJlc291cmNlSWRlbnRpZmllciB0cmFuc2FjdGlvbklkZW50aWZpZXIoKSBj
b25zdDsKICAgICB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIoKSBjb25zdDsKICAgICB1
aW50NjRfdCBpbmRleElkZW50aWZpZXIoKSBjb25zdDsKICAgICBJbmRleGVkREI6OkluZGV4UmVj
b3JkVHlwZSBpbmRleFJlY29yZFR5cGUoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXNvdXJjZUlkZW50aWZpZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXNvdXJjZUlkZW50aWZp
ZXIuaAppbmRleCBiZTE2MTk3ZjYzNGE1OTZjMzllNTEzMDI4NTkwNjgzNTc0NTg2ODJhLi5iZDM5
NTRhMjg5NzNjZWI4YTViZjY0OGY0YWE1MTIzZjJlZmJlZjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzb3VyY2VJZGVudGlmaWVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc291cmNl
SWRlbnRpZmllci5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICBJREJSZXNvdXJjZUlk
ZW50aWZpZXIoY29uc3QgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkmLCBjb25zdCBJREJS
ZXF1ZXN0Jik7CiAgICAgZXhwbGljaXQgSURCUmVzb3VyY2VJZGVudGlmaWVyKGNvbnN0IElEQlNl
cnZlcjo6SURCQ29ubmVjdGlvblRvQ2xpZW50Jik7CiAKLSAgICBzdGF0aWMgSURCUmVzb3VyY2VJ
ZGVudGlmaWVyIGVtcHR5VmFsdWUoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSURCUmVz
b3VyY2VJZGVudGlmaWVyIGVtcHR5VmFsdWUoKTsKICAgICBib29sIGlzRW1wdHkoKSBjb25zdAog
ICAgIHsKICAgICAgICAgcmV0dXJuICFtX3Jlc291cmNlTnVtYmVyICYmICFtX2lkYkNvbm5lY3Rp
b25JZGVudGlmaWVyOwpAQCAtNjAsNyArNjAsOCBAQCBwdWJsaWM6CiAgICAgICAgIHVpbnQ2NF90
IGhhc2hDb2Rlc1syXSA9IHsgbV9pZGJDb25uZWN0aW9uSWRlbnRpZmllci50b1VJbnQ2NCgpLCBt
X3Jlc291cmNlTnVtYmVyIH07CiAgICAgICAgIHJldHVybiBTdHJpbmdIYXNoZXI6Omhhc2hNZW1v
cnk8c2l6ZW9mKGhhc2hDb2Rlcyk+KGhhc2hDb2Rlcyk7CiAgICAgfQotICAgIAorCisgICAgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgb3RoZXIpIGNvbnN0IHsg
cmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IElE
QlJlc291cmNlSWRlbnRpZmllciYgb3RoZXIpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4g
bV9pZGJDb25uZWN0aW9uSWRlbnRpZmllciA9PSBvdGhlci5tX2lkYkNvbm5lY3Rpb25JZGVudGlm
aWVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggNTZhODY1MDRlMTZiMzAzMzM1Y2ZhOWYxOGUxOTkwOWViMmE0NDUyMy4uMDkyMGRl
NDA5ODBjODU1OTE0M2Y1MmQyMmY2ZTZhODJkM2M2NTM5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTU0NCwxMCArMTU0NCwx
MCBAQAogCQk1MTEyM0UyRjI3Njk0MENBMDBGOUQ0MUIgLyogTm90aWZpY2F0aW9uRGF0YS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExMjNFMkMyNzY5
M0MzMjAwRjlENDFCIC8qIE5vdGlmaWNhdGlvbkRhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTE3RjMwRTI1RTYxMDIwMDAyQTlGMUUgLyog
UmVtb3RlQ29tbWFuZExpc3RlbmVyQ29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxMTdGMzBDMjVFNjEwMUYwMDJBOUYxRSAvKiBSZW1vdGVDb21t
YW5kTGlzdGVuZXJDb2NvYS5oICovOyB9OwogCQk1MTFFQzEyODFDNTBBQUNBMDAzMkY5ODMgLyog
SURCU2VyaWFsaXphdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTExRUMxMjYxQzUwQUE1NzAwMzJGOTgzIC8qIElEQlNlcmlhbGl6YXRpb24uaCAq
LzsgfTsKLQkJNTExRUMxMkMxQzUwQUJCRjAwMzJGOTgzIC8qIFNRTGl0ZUlEQlRyYW5zYWN0aW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTFFQzEy
QTFDNTBBQkJBMDAzMkY5ODMgLyogU1FMaXRlSURCVHJhbnNhY3Rpb24uaCAqLzsgfTsKKwkJNTEx
RUMxMkMxQzUwQUJCRjAwMzJGOTgzIC8qIFNRTGl0ZUlEQlRyYW5zYWN0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTFFQzEyQTFDNTBBQkJBMDAz
MkY5ODMgLyogU1FMaXRlSURCVHJhbnNhY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTFFQzEzMDFDNTBBQkY1MDAzMkY5ODMgLyogU1FM
aXRlSURCQ3Vyc29yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTFFQzEyRTFDNTBBQkVDMDAzMkY5ODMgLyogU1FMaXRlSURCQ3Vyc29yLmggKi87IH07
CiAJCTUxMjBCQkFGMUYxQ0VDRTcwMEVGRUJGMSAvKiBDb29raWVTdG9yYWdlT2JzZXJ2ZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMjBCQkFEMUYx
Q0U3NzAwMEVGRUJGMSAvKiBDb29raWVTdG9yYWdlT2JzZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk1MTJCREI0QjFDNDU2RkZBMDA2NDk0
REYgLyogU1FMaXRlSURCQmFja2luZ1N0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTJCREI0OTFDNDU2RkFCMDA2NDk0REYgLyogU1FMaXRlSURC
QmFja2luZ1N0b3JlLmggKi87IH07CisJCTUxMkJEQjRCMUM0NTZGRkEwMDY0OTRERiAvKiBTUUxp
dGVJREJCYWNraW5nU3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxMkJEQjQ5MUM0NTZGQUIwMDY0OTRERiAvKiBTUUxpdGVJREJCYWNraW5nU3Rv
cmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1
MTJERDhGNTBEOTFFNkFGMDAwRjg5RUUgLyogTGVnYWN5V2ViQXJjaGl2ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyREQ4RUIwRDkxRTZBRjAwMEY4
OUVFIC8qIExlZ2FjeVdlYkFyY2hpdmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk1MTJERDhGNjBEOTFFNkFGMDAwRjg5RUUgLyogQXJjaGl2ZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyREQ4RUMw
RDkxRTZBRjAwMEY4OUVFIC8qIEFyY2hpdmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTJERDhGODBEOTFFNkFGMDAwRjg5RUUgLyogQXJjaGl2
ZVJlc291cmNlQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTEyREQ4RUUwRDkxRTZBRjAwMEY4OUVFIC8qIEFyY2hpdmVSZXNvdXJjZUNv
bGxlY3Rpb24uaCAqLzsgfTsKQEAgLTE1OTMsNyArMTU5Myw3IEBACiAJCTUxNkQ3RDcyMUJCNUYw
QkQwMEFGN0M3NyAvKiBJREJDb25uZWN0aW9uVG9DbGllbnREZWxlZ2F0ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE2RDdENkUxQkI1RjA2NTAwQUY3
Qzc3IC8qIElEQkNvbm5lY3Rpb25Ub0NsaWVudERlbGVnYXRlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE2RjdGNkQxQzMxRTM5QTAwRjExMURD
IC8qIFNlcnZlck9wZW5EQlJlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxNkY3RjZDMUMzMUM3OUQwMEYxMTFEQyAvKiBTZXJ2ZXJPcGVuREJS
ZXF1ZXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNTE3MTM4RjAxQkVEMUQxQTAwMEQ1RjAxIC8qIEluZGV4S2V5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTcxMzhFRTFCRUQxRDE3MDAwRDVGMDEg
LyogSW5kZXhLZXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwotCQk1MTcxMzhGODFCRjEyOEJCMDAwRDVGMDEgLyogSW5kZXhWYWx1ZVN0b3JlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTcxMzhGNjFCRjEy
MjYyMDAwRDVGMDEgLyogSW5kZXhWYWx1ZVN0b3JlLmggKi87IH07CisJCTUxNzEzOEY4MUJGMTI4
QkIwMDBENUYwMSAvKiBJbmRleFZhbHVlU3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNzEzOEY2MUJGMTIyNjIwMDBENUYwMSAvKiBJbmRleFZh
bHVlU3RvcmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk1MTcxMzhGQzFCRjNBREY0MDAwRDVGMDEgLyogSURCQ3Vyc29ySW5mby5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3MTM4RkExQkYzQURBQzAw
MEQ1RjAxIC8qIElEQkN1cnNvckluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk1MTcxMzkwNjFCRjY0REVDMDAwRDVGMDEgLyogTWVtb3J5T2Jq
ZWN0U3RvcmVDdXJzb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxNzEzOTA0MUJGNjRERTMwMDBENUYwMSAvKiBNZW1vcnlPYmplY3RTdG9yZUN1cnNv
ci5oICovOyB9OwogCQk1MTcxMzkwODFCRjY0REVGMDAwRDVGMDEgLyogTWVtb3J5Q3Vyc29yLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTcxMzkwMjFC
RjY0REUzMDAwRDVGMDEgLyogTWVtb3J5Q3Vyc29yLmggKi87IH07CkBAIC0xNjY5LDcgKzE2Njks
NyBAQAogCQk1MUI5MTQxMDFGRDI3ODJEMDBFRTI4NTkgLyogUmVnaXN0cmF0aW9uRGF0YWJhc2Uu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQjkxNDBD
MUZEMjc4MjUwMEVFMjg1OSAvKiBSZWdpc3RyYXRpb25EYXRhYmFzZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxQjkxNDExMUZEMjc4MkQwMEVF
Mjg1OSAvKiBSZWdpc3RyYXRpb25TdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTFCOTE0MEIxRkQyNzgyNTAwRUUyODU5IC8qIFJlZ2lzdHJhdGlv
blN0b3JlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNTFCQTRBQzQxQkJCNUNEODAwREYzRDZEIC8qIElEQkRhdGFiYXNlSW5mby5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCQTRBQzIxQkJCNUNCRjAw
REYzRDZEIC8qIElEQkRhdGFiYXNlSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07Ci0JCTUxQkE0QUNCMUJCQzVCRDkwMERGM0Q2RCAvKiBNZW1vcnlJ
REJCYWNraW5nU3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxQkE0QUM5MUJCQzVCOUUwMERGM0Q2RCAvKiBNZW1vcnlJREJCYWNraW5nU3RvcmUu
aCAqLzsgfTsKKwkJNTFCQTRBQ0IxQkJDNUJEOTAwREYzRDZEIC8qIE1lbW9yeUlEQkJhY2tpbmdT
dG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFC
QTRBQzkxQkJDNUI5RTAwREYzRDZEIC8qIE1lbW9yeUlEQkJhY2tpbmdTdG9yZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxQkE0QUNDMUJCQzVC
REQwMERGM0Q2RCAvKiBJREJCYWNraW5nU3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkE0QUM3MUJCQzVBRDYwMERGM0Q2RCAvKiBJREJCYWNr
aW5nU3RvcmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk1MUJBOTQ3MTIzQUMzMDUzMDA0NDQ4NDYgLyogUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkE5NDZG
MjNBQzMwNTAwMDQ0NDg0NiAvKiBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxQkNDRTMwMUY4RjE3OUUw
MDZCQTBFRCAvKiBTZXJ2aWNlV29ya2VyVGhyZWFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdDODcxMDFGOEVFNzJFMDBFQjgwNzYgLyogU2Vydmlj
ZVdvcmtlclRocmVhZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CkBAIC0xNjg1LDcgKzE2ODUsNyBAQAogCQk1MUUwQkFCQjBEQTU1NDcxMDBBOUU0MTcg
LyogU3RvcmFnZUV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MUUwQkFCOTBEQTU1NDcxMDBBOUU0MTcgLyogU3RvcmFnZUV2ZW50LmggKi87IH07
CiAJCTUxRTBCQUVCMERBNTVENEEwMEE5RTQxNyAvKiBKU1N0b3JhZ2VFdmVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFMEJBRTkwREE1NUQ0QTAw
QTlFNDE3IC8qIEpTU3RvcmFnZUV2ZW50LmggKi87IH07CiAJCTUxRTBCQjM4MERBNUFDQjYwMEE5
RTQxNyAvKiBTdG9yYWdlTWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MUUwQkIzNjBEQTVBQ0I2MDBBOUU0MTcgLyogU3RvcmFnZU1hcC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTUxRTFCQUMzMUJE
ODA2NEUwMDU1RDgxRiAvKiBNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFMUJBQzExQkQ4MDY0NzAw
NTVEODFGIC8qIE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uLmggKi87IH07CisJCTUxRTFC
QUMzMUJEODA2NEUwMDU1RDgxRiAvKiBNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFMUJBQzExQkQ4
MDY0NzAwNTVEODFGIC8qIE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFFMjY5MzcxREQzQkQ5
QjAwNkI2QTU4IC8qIElEQkl0ZXJhdGVDdXJzb3JEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUyNjkzNTFERDNCRDkxMDA2QjZBNTggLyogSURC
SXRlcmF0ZUN1cnNvckRhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk1MUUzOTkwMDFENkU0NzUwMDA5Qzg4MzEgLyogR2FtZUNvbnRyb2xsZXJH
YW1lcGFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MUUzOThGQzFENkU0NzRCMDA5Qzg4MzEgLyogR2FtZUNvbnRyb2xsZXJHYW1lcGFkLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFFMzk5MDIxRDZF
NDc1MDAwOUM4ODMxIC8qIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUzOThGRTFENkU0NzRCMDA5
Qzg4MzEgLyogR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTY5NSw3ICsxNjk1LDcgQEAKIAkJ
NTFFQ0MzRjgyMDA1ODdCRjAwNDgzRUFFIC8qIE1lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUVDQzNGMTIw
MDU4N0I1MDA0ODNFQUUgLyogTWVzc2FnZVBvcnRDaGFubmVsUmVnaXN0cnkuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUVDQzNGRDIwMDU5MzBE
MDA0ODNFQUUgLyogTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRUNDM0ZCMjAwNTkzMDEwMDQ4M0VBRSAv
KiBNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxRUU3QjM4MUFBNTBCMDUwMEY5MkIyMSAvKiBSZXNv
dXJjZUxvYWRJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MUVFN0IzNzFBQTUwQjA1MDBGOTJCMjEgLyogUmVzb3VyY2VMb2FkSW5mby5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTUxRUVBQTc0MUJF
RkZBQjEwMDIxODAwOCAvKiBJbmRleFZhbHVlRW50cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRUVBQTcyMUJFRkZBNzkwMDIxODAwOCAvKiBJbmRl
eFZhbHVlRW50cnkuaCAqLzsgfTsKKwkJNTFFRUFBNzQxQkVGRkFCMTAwMjE4MDA4IC8qIEluZGV4
VmFsdWVFbnRyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTFFRUFBNzIxQkVGRkE3OTAwMjE4MDA4IC8qIEluZGV4VmFsdWVFbnRyeS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxRjE3NEZFMUYzNTg5
OTIwMEM3NDk1MCAvKiBXb3JrZXJUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MUYxNzRGQzFGMzU4OTg4MDBDNzQ5NTAgLyogV29ya2VyVHlwZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxRjE3
NTAzMUYzNThCM0IwMEM3NDk1MCAvKiBKU1NlcnZpY2VXb3JrZXJVcGRhdGVWaWFDYWNoZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGMTc1MDExRjM1
OEIzNjAwQzc0OTUwIC8qIEpTU2VydmljZVdvcmtlclVwZGF0ZVZpYUNhY2hlLmggKi87IH07CiAJ
CTUxRjE3NTA2MUYzNThCRjcwMEM3NDk1MCAvKiBKU1dvcmtlclR5cGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjE3NTA1MUYzNThCREUwMEM3NDk1
MCAvKiBKU1dvcmtlclR5cGUuaCAqLzsgfTsKQEAgLTI5OTUsNiArMjk5NSw3IEBACiAJCTkzQjJE
ODE2MEY5OTIwRDIwMDZBRTZCMiAvKiBTdWRkZW5UZXJtaW5hdGlvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCMkQ4MTUwRjk5MjBEMjAwNkFFNkIy
IC8qIFN1ZGRlblRlcm1pbmF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJOTNCMzhFQzMyNTgyMURCNDAwMTk4RTYzIC8qIFdlYlNwZWVjaFJl
Y29nbml6ZXJUYXNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5M0IzOEVCQTI1ODIxOTNCMDAxOThFNjMgLyogV2ViU3BlZWNoUmVjb2duaXplclRhc2su
aCAqLzsgfTsKIAkJOTNCMzhFQzQyNTgyMURCNzAwMTk4RTYzIC8qIFdlYlNwZWVjaFJlY29nbml6
ZXJUYXNrTW9jay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTNCMzhFQkIyNTgyMTkzRDAwMTk4RTYzIC8qIFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9j
ay5oICovOyB9OworCQk5M0I2MzFFMjI3QUJBMUU2MDA0NDNBNDQgLyogVW5pcXVlSURCRGF0YWJh
c2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5M0I2MzFFMDI3QUJBMUUyMDA0NDNBNDQgLyogVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNCNkEw
RTYwQjBCQ0E1QzAwRjUwMjdBIC8qIENvbnRleHRNZW51LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0I2QTBFNTBCMEJDQTVDMDBGNTAyN0EgLyogQ29u
dGV4dE1lbnUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk5M0I3MEQ2NDA5RUIwQzdDMDA5RDg0NjggLyogSlNET01CaW5kaW5nLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0I3MEQ0ODA5RUIwQzdDMDA5
RDg0NjggLyogSlNET01CaW5kaW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJOTNCNzBENkEwOUVCMEM3QzAwOUQ4NDY4IC8qIEpTRXZlbnRMaXN0
ZW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNC
NzBENEUwOUVCMEM3QzAwOUQ4NDY4IC8qIEpTRXZlbnRMaXN0ZW5lci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMjgyOCw2ICsxMjgyOSw3IEBA
CiAJCTkzQjM4RUJBMjU4MjE5M0IwMDE5OEU2MyAvKiBXZWJTcGVlY2hSZWNvZ25pemVyVGFzay5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTcGVlY2hSZWNvZ25pemVyVGFz
ay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0IzOEVCQjI1ODIxOTNEMDAxOThF
NjMgLyogV2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2NrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jay5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5M0IzOEVCQzI1ODIxOTNFMDAxOThFNjMgLyogV2ViU3BlZWNoUmVj
b2duaXplclRhc2subW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBX
ZWJTcGVlY2hSZWNvZ25pemVyVGFzay5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
OTNCNjMxRTAyN0FCQTFFMjAwNDQzQTQ0IC8qIFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCNkEwRTUwQjBCQ0E1QzAwRjUwMjdB
IC8qIENvbnRleHRNZW51LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb250
ZXh0TWVudS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0I3MEQ0ODA5RUIwQzdD
MDA5RDg0NjggLyogSlNET01CaW5kaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU0RPTUJpbmRpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCNzBE
NEQwOUVCMEM3QzAwOUQ4NDY4IC8qIEpTRXZlbnRMaXN0ZW5lci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNFdmVudExpc3RlbmVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTIyMTUxLDYgKzIyMTUzLDcgQEAKIAkJCQk1MTg4NjRERjFCQkFG
MzBGMDBFNTQwQzkgLyogVW5pcXVlSURCRGF0YWJhc2UuaCAqLywKIAkJCQk1MTk4RjdBMjFCQkRB
QTI5MDBFMkNDNUYgLyogVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmNwcCAqLywKIAkJCQk1
MTk4RjdBMzFCQkRBQTI5MDBFMkNDNUYgLyogVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmgg
Ki8sCisJCQkJOTNCNjMxRTAyN0FCQTFFMjAwNDQzQTQ0IC8qIFVuaXF1ZUlEQkRhdGFiYXNlTWFu
YWdlci5oICovLAogCQkJCTUxOThGN0E2MUJCREQzODEwMEUyQ0M1RiAvKiBVbmlxdWVJREJEYXRh
YmFzZVRyYW5zYWN0aW9uLmNwcCAqLywKIAkJCQk1MTk4RjdBNzFCQkREMzgxMDBFMkNDNUYgLyog
VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5oICovLAogCQkJKTsKQEAgLTM3NzcxLDYgKzM3
Nzc0LDcgQEAKIAkJCQlBODYzRTIwMTEzNDM0MTIwMDAyNzQ5MjYgLyogVW5pY29kZUJpZGkuaCBp
biBIZWFkZXJzICovLAogCQkJCTUxODg2NEUxMUJCQUY1NzQwMEU1NDBDOSAvKiBVbmlxdWVJREJE
YXRhYmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE5OEY3QTUxQkJEQjc5MzAwRTJDQzVGIC8q
IFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTNCNjMx
RTIyN0FCQTFFNjAwNDQzQTQ0IC8qIFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTE5OEY3QTkxQkJERDM4NTAwRTJDQzVGIC8qIFVuaXF1ZUlEQkRhdGFiYXNl
VHJhbnNhY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUU0QUZDRkE1MERBRjI5QTMwMEY1RjU1
QyAvKiBVbml0QmV6aWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMThDQzBBNDI1ODBFRkIxMDAz
RDc1RkIgLyogVW5pdmVyc2FsQWNjZXNzWm9vbS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwCmluZGV4IGM3YjE3ZmQ3MDc4NTRiMTI4NDk4ZDExMThmNGU2ZTdkNWIz
ZDg1ZmQuLjI4N2MxYmY3NDhjODNjNmMxZTZjNzJiYTEyOGM0ZDBhMWM2NjEyMzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC01MiwxMyArNTIsMTMgQEAKICNpbmNsdWRlICJOZXR3
b3JrU29ja2V0Q2hhbm5lbE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1NvY2tldFN0cmVh
bS5oIgogI2luY2x1ZGUgIk5ldHdvcmtTb2NrZXRTdHJlYW1NZXNzYWdlcy5oIgorI2luY2x1ZGUg
Ik5ldHdvcmtTdG9yYWdlTWFuYWdlci5oIgogI2luY2x1ZGUgIlBpbmdMb2FkLmgiCiAjaW5jbHVk
ZSAiUHJlY29ubmVjdFRhc2suaCIKICNpbmNsdWRlICJSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFn
ZXJQcm94eS5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tNZXNzYWdlcy5oIgog
I2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYkVycm9ycy5o
IgotI2luY2x1ZGUgIldlYklEQlNlcnZlci5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdl
cy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCIKQEAgLTQwOCw4ICs0MDgsMTIgQEAgYm9vbCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYgY29ubmUKIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
dXBkYXRlUXVvdGFCYXNlZE9uU3BhY2VVc2FnZUZvclRlc3RpbmcoY29uc3QgQ2xpZW50T3JpZ2lu
JiBvcmlnaW4pCiB7Ci0gICAgYXV0byBzdG9yYWdlUXVvdGFNYW5hZ2VyID0gbV9uZXR3b3JrUHJv
Y2Vzcy0+c3RvcmFnZVF1b3RhTWFuYWdlcihzZXNzaW9uSUQoKSwgb3JpZ2luKTsKLSAgICBzdG9y
YWdlUXVvdGFNYW5hZ2VyLT5yZXNldFF1b3RhVXBkYXRlZEJhc2VkT25Vc2FnZUZvclRlc3Rpbmco
KTsKKyAgICBhdXRvKiBzZXNzaW9uID0gbV9uZXR3b3JrUHJvY2Vzcy0+bmV0d29ya1Nlc3Npb24o
c2Vzc2lvbklEKCkpOworICAgIGlmICghc2Vzc2lvbikKKyAgICAgICAgcmV0dXJuOworCisgICAg
aWYgKGF1dG8qIHN0b3JhZ2VNYW5hZ2VyID0gc2Vzc2lvbi0+c3RvcmFnZU1hbmFnZXIoKSkKKyAg
ICAgICAgc3RvcmFnZU1hbmFnZXItPnJlc2V0UXVvdGFVcGRhdGVkQmFzZWRPblVzYWdlRm9yVGVz
dGluZyhvcmlnaW4pOwogfQogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpk
aWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCkBAIC0xMDAxLDggKzEwMDUsMTAg
QEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6d3JpdGVCbG9ic1RvVGVtcG9y
YXJ5RmlsZXNGb3JJbmRleGVkREIoY29uc3QKICAgICAgICAgZm9yIChhdXRvJiBmaWxlIDogZmls
ZVJlZmVyZW5jZXMpCiAgICAgICAgICAgICBmaWxlLT5yZXZva2VGaWxlQWNjZXNzKCk7CiAKLSAg
ICAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpKQotICAgICAgICAgICAg
c2Vzc2lvbi0+ZW5zdXJlV2ViSURCU2VydmVyKCkucmVnaXN0ZXJUZW1wb3JhcnlCbG9iRmlsZVBh
dGhzKG1fY29ubmVjdGlvbiwgZmlsZVBhdGhzKTsKKyAgICAgICAgaWYgKGF1dG8qIHNlc3Npb24g
PSBuZXR3b3JrU2Vzc2lvbigpKSB7CisgICAgICAgICAgICBpZiAoYXV0byogc3RvcmFnZU1hbmFn
ZXIgPSBzZXNzaW9uLT5zdG9yYWdlTWFuYWdlcigpKQorICAgICAgICAgICAgICAgIHN0b3JhZ2VN
YW5hZ2VyLT5yZWdpc3RlclRlbXBvcmFyeUJsb2JGaWxlUGF0aHMobV9jb25uZWN0aW9uLCBmaWxl
UGF0aHMpOworICAgICAgICB9CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoZmls
ZVBhdGhzKSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDdjNzllMmEyMDk3NmExMzljN2Y2NjdmMTEzYzQ4OTQ2
ZGVkZDU2NDEuLjE3NWJkMzgxNjQ3NDkxNmNjMDExNWM5ZDhmZjJjNTg2YmQwZTMxZTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0y
NjQsOCArMjY0LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0
aW9uJikKICAgICAvLyBNYWtlIHN1cmUgd2UgZmx1c2ggYWxsIGNvb2tpZXMgdG8gZGlzayBiZWZv
cmUgZXhpdGluZy4KICAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oWyZdIChhdXRvJiBzZXNzaW9u
KSB7CiAgICAgICAgIHBsYXRmb3JtRmx1c2hDb29raWVzKHNlc3Npb24uc2Vzc2lvbklEKCksIFtj
YWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7Ci0gICAgICAgIC8vIE1ha2Ugc3VyZSByZWZlcmVuY2Ug
dG8gTmV0d29ya1Byb2Nlc3MgaW4gc3BhY2VSZXF1ZXN0ZXIgaXMgcmVtb3ZlZC4KLSAgICAgICAg
c2Vzc2lvbi5jbG9zZUlEQlNlcnZlcihbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwogICAgIH0p
OwogfQogCkBAIC0zODIsNyArMzgwLDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y3JlYXRlTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoUHJvY2Vzc0lkZW50aWZpZXIgaWRlbnQKICAgICBj
b25uZWN0aW9uLnNldE9uTGluZVN0YXRlKE5ldHdvcmtTdGF0ZU5vdGlmaWVyOjpzaW5nbGV0b24o
KS5vbkxpbmUoKSk7CiAKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNl
c3Npb25JRCkpIHsKLSAgICAgICAgc2Vzc2lvbi0+ZW5zdXJlV2ViSURCU2VydmVyKCkuYWRkQ29u
bmVjdGlvbihjb25uZWN0aW9uLmNvbm5lY3Rpb24oKSwgaWRlbnRpZmllcik7CiAgICAgICAgIGlm
IChhdXRvKiBtYW5hZ2VyID0gc2Vzc2lvbi0+c3RvcmFnZU1hbmFnZXIoKSkKICAgICAgICAgICAg
IG1hbmFnZXItPnN0YXJ0UmVjZWl2aW5nTWVzc2FnZUZyb21Db25uZWN0aW9uKGNvbm5lY3Rpb24u
Y29ubmVjdGlvbigpKTsKICAgICB9CkBAIC00MDYsOCArNDAzLDcgQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6YWRkV2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYmIHBh
cmFtZXRlcnMKICAgICBhZGRTZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlcihzZXNzaW9uSUQsIHBh
cmFtZXRlcnMucGVyT3JpZ2luU3RvcmFnZVF1b3RhLCBwYXJhbWV0ZXJzLnBlclRoaXJkUGFydHlP
cmlnaW5TdG9yYWdlUXVvdGEsIHBhcmFtZXRlcnMuY2FjaGVTdG9yYWdlRGlyZWN0b3J5LCBwYXJh
bWV0ZXJzLmNhY2hlU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAKICAgICBpZiAo
YXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKLSAgICAgICAgc2Vz
c2lvbi0+YWRkU3RvcmFnZU1hbmFnZXJTZXNzaW9uKHBhcmFtZXRlcnMuZ2VuZXJhbFN0b3JhZ2VE
aXJlY3RvcnksIHBhcmFtZXRlcnMuZ2VuZXJhbFN0b3JhZ2VEaXJlY3RvcnlIYW5kbGUsIHBhcmFt
ZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVj
dG9yeUV4dGVuc2lvbkhhbmRsZSk7Ci0gICAgICAgIHNlc3Npb24tPmFkZEluZGV4ZWREYXRhYmFz
ZVNlc3Npb24ocGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnksIHBhcmFtZXRlcnMu
aW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICAgICAgc2Vzc2lv
bi0+YWRkU3RvcmFnZU1hbmFnZXJTZXNzaW9uKHBhcmFtZXRlcnMuZ2VuZXJhbFN0b3JhZ2VEaXJl
Y3RvcnksIHBhcmFtZXRlcnMuZ2VuZXJhbFN0b3JhZ2VEaXJlY3RvcnlIYW5kbGUsIHBhcmFtZXRl
cnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9y
eUV4dGVuc2lvbkhhbmRsZSwgcGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnksIHBh
cmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlLCBwYXJhbWV0
ZXJzLmNhY2hlU3RvcmFnZURpcmVjdG9yeSwgcGFyYW1ldGVycy5wZXJPcmlnaW5TdG9yYWdlUXVv
dGEsIHBhcmFtZXRlcnMucGVyVGhpcmRQYXJ0eU9yaWdpblN0b3JhZ2VRdW90YSk7CiAjaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQogICAgICAgICBzZXNzaW9uLT5hZGRTZXJ2aWNlV29ya2VyU2Vz
c2lvbihwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJs
ZWQsIFdURk1vdmUocGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5
KSwgcGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5RXh0ZW5zaW9u
SGFuZGxlKTsKICNlbmRpZgpAQCAtMTQ1MiwxMyArMTQ0OCw2IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OmZldGNoV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8
V2Vic2l0CiAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YS5ob3N0TmFt
ZXNXaXRoSFNUU0NhY2hlID0gaG9zdE5hbWVzV2l0aEhTVFNDYWNoZShzZXNzaW9uSUQpOwogI2Vu
ZGlmCiAKLSAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6
OkluZGV4ZWREQkRhdGFiYXNlcykgJiYgc2Vzc2lvbiAmJiBzZXNzaW9uLT5oYXNJREJEYXRhYmFz
ZVBhdGgoKSkgewotICAgICAgICBzZXNzaW9uLT5lbnN1cmVXZWJJREJTZXJ2ZXIoKS5nZXRPcmln
aW5zKFtjYWxsYmFja0FnZ3JlZ2F0b3JdKGF1dG8mJiBvcmlnaW5zKSB7Ci0gICAgICAgICAgICB3
aGlsZSAoIW9yaWdpbnMuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVn
YXRvci0+bV93ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVuZCh7IG9yaWdpbnMudGFrZUFueSgpLCBX
ZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcywgMCB9KTsKLSAgICAgICAgfSk7Ci0g
ICAgfQotCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGlmICh3ZWJzaXRlRGF0YVR5
cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMp
ICYmIHNlc3Npb24gJiYgc2Vzc2lvbi0+aGFzU2VydmljZVdvcmtlckRhdGFiYXNlUGF0aCgpKSB7
CiAgICAgICAgIHNlc3Npb24tPmVuc3VyZVNXU2VydmVyKCkuZ2V0T3JpZ2luc1dpdGhSZWdpc3Ry
YXRpb25zKFtjYWxsYmFja0FnZ3JlZ2F0b3JdKGNvbnN0IEhhc2hTZXQ8U2VjdXJpdHlPcmlnaW5E
YXRhPiYgc2VjdXJpdHlPcmlnaW5zKSBtdXRhYmxlIHsKQEAgLTE1MjUsOSArMTUxNCw2IEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgT3B0aW9uU2V0PFdlYnNpCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMo
V2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSkgJiYgc2Vzc2lvbikKICAgICAgICAgQ2FjaGVTdG9y
YWdlOjpFbmdpbmU6OmNsZWFyQWxsQ2FjaGVzKCpzZXNzaW9uLCBbY2xlYXJUYXNrc0hhbmRsZXJd
IHsgfSk7CiAKLSAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5
cGU6OkluZGV4ZWREQkRhdGFiYXNlcykgJiYgIXNlc3Npb25JRC5pc0VwaGVtZXJhbCgpICYmIHNl
c3Npb24pCi0gICAgICAgIHNlc3Npb24tPmVuc3VyZVdlYklEQlNlcnZlcigpLmNsb3NlQW5kRGVs
ZXRlRGF0YWJhc2VzTW9kaWZpZWRTaW5jZShtb2RpZmllZFNpbmNlLCBbY2xlYXJUYXNrc0hhbmRs
ZXJdIHsgfSk7Ci0KICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgYm9vbCBjbGVhclNl
cnZpY2VXb3JrZXJzID0gd2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6
OkRPTUNhY2hlKSB8fCB3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMpOwogICAgIGlmIChjbGVhclNlcnZpY2VXb3JrZXJz
ICYmICFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSAmJiBzZXNzaW9uKQpAQCAtMTYyMCw5ICsxNjA2
LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW8KICAgICAgICAgICAgIENhY2hlU3RvcmFnZTo6
RW5naW5lOjpjbGVhckNhY2hlc0Zvck9yaWdpbigqc2Vzc2lvbiwgU2VjdXJpdHlPcmlnaW5EYXRh
IHsgb3JpZ2luRGF0YSB9LCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CiAgICAgfQogCi0gICAg
aWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJE
YXRhYmFzZXMpICYmICFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSAmJiBzZXNzaW9uKQotICAgICAg
ICBzZXNzaW9uLT5lbnN1cmVXZWJJREJTZXJ2ZXIoKS5jbG9zZUFuZERlbGV0ZURhdGFiYXNlc0Zv
ck9yaWdpbnMob3JpZ2luRGF0YXMsIFtjbGVhclRhc2tzSGFuZGxlcl0geyB9KTsKLQogI2lmIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKICAgICBib29sIGNsZWFyU2VydmljZVdvcmtlcnMgPSB3ZWJz
aXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6RE9NQ2FjaGUpIHx8IHdlYnNp
dGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9ucyk7CiAgICAgaWYgKGNsZWFyU2VydmljZVdvcmtlcnMgJiYgIXNlc3Npb25JRC5pc0Vw
aGVtZXJhbCgpICYmIHNlc3Npb24pIHsKQEAgLTE4MTEsMTcgKzE3OTQsNiBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpkZWxldGVBbmRSZXN0cmljdFdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21h
aW5zKFBBTDo6U2VzcwogICAgICAgICAgICAgfQogICAgICAgICB9KTsKICAgICB9Ci0KLSAgICBp
ZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRh
dGFiYXNlcykgJiYgc2Vzc2lvbiAmJiBzZXNzaW9uLT5oYXNJREJEYXRhYmFzZVBhdGgoKSkgewot
ICAgICAgICBzZXNzaW9uLT5lbnN1cmVXZWJJREJTZXJ2ZXIoKS5nZXRPcmlnaW5zKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgc2Vzc2lvbklELCBjYWxsYmFja0FnZ3JlZ2F0
b3IsIGRvbWFpbnNUb0RlbGV0ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9yXShhdXRvJiYgb3Jp
Z2lucykgewotICAgICAgICAgICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Np
b25JRCk7Ci0gICAgICAgICAgICBpZiAoIXNlc3Npb24gfHwgIXNlc3Npb24tPndlYklEQlNlcnZl
cigpKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgYXV0byBvcmlnaW5z
VG9EZWxldGUgPSBmaWx0ZXJGb3JSZWdpc3RyYWJsZURvbWFpbnMob3JpZ2lucywgZG9tYWluc1Rv
RGVsZXRlQWxsTm9uQ29va2llV2Vic2l0ZURhdGFGb3IsIGNhbGxiYWNrQWdncmVnYXRvci0+bV9k
b21haW5zKTsKLSAgICAgICAgICAgIHNlc3Npb24tPndlYklEQlNlcnZlcigpLT5jbG9zZUFuZERl
bGV0ZURhdGFiYXNlc0Zvck9yaWdpbnMob3JpZ2luc1RvRGVsZXRlLCBbY2FsbGJhY2tBZ2dyZWdh
dG9yXSB7IH0pOwotICAgICAgICB9KTsKLSAgICB9CiAgICAgCiAjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQogICAgIGJvb2wgY2xlYXJTZXJ2aWNlV29ya2VycyA9IHdlYnNpdGVEYXRhVHlwZXMu
Y29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSkgfHwgd2Vic2l0ZURhdGFUeXBlcy5j
b250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zKTsKQEAg
LTE5NTgsMTMgKzE5MzAsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZWdpc3RyYWJsZURvbWFp
bnNXaXRoV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELAogICAgICAgICB9KTsK
ICAgICB9CiAgICAgCi0gICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURh
dGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpICYmIHNlc3Npb24gJiYgc2Vzc2lvbi0+aGFzSURC
RGF0YWJhc2VQYXRoKCkpIHsKLSAgICAgICAgc2Vzc2lvbi0+ZW5zdXJlV2ViSURCU2VydmVyKCku
Z2V0T3JpZ2lucyhbY2FsbGJhY2tBZ2dyZWdhdG9yXShhdXRvJiYgb3JpZ2lucykgewotICAgICAg
ICAgICAgd2hpbGUgKCFvcmlnaW5zLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICBjYWxsYmFj
a0FnZ3JlZ2F0b3ItPm1fd2Vic2l0ZURhdGEuZW50cmllcy5hcHBlbmQoeyBvcmlnaW5zLnRha2VB
bnkoKSwgV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMsIDAgfSk7Ci0gICAgICAg
IH0pOwotICAgIH0KLSAgICAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgaWYgKHdl
YnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9ucykgJiYgc2Vzc2lvbiAmJiBzZXNzaW9uLT5oYXNTZXJ2aWNlV29ya2VyRGF0YWJh
c2VQYXRoKCkpIHsKICAgICAgICAgc2Vzc2lvbi0+ZW5zdXJlU1dTZXJ2ZXIoKS5nZXRPcmlnaW5z
V2l0aFJlZ2lzdHJhdGlvbnMoW2NhbGxiYWNrQWdncmVnYXRvcl0oY29uc3QgSGFzaFNldDxTZWN1
cml0eU9yaWdpbkRhdGE+JiBzZWN1cml0eU9yaWdpbnMpIG11dGFibGUgewpAQCAtMjEyOSw0MyAr
MjA5NCwxMCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVu
dGx5Rm9yVGVzdGluZ1N5bmMoQ29tcGxldGlvbkhhbmRsZQogICAgIHByZXBhcmVUb1N1c3BlbmQo
dHJ1ZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIE5ldHdvcmtQcm9j
ZXNzOjpzdXNwZW5kSURCU2VydmVycyhib29sIGlzU3VzcGVuc2lvbkltbWluZW50KQotewotICAg
IG1fc2hvdWxkU3VzcGVuZElEQlNlcnZlcnMgPSB0cnVlOwotICAgICsrbV9zdXNwZW5zaW9uSWRl
bnRpZmllcjsKLQotICAgIGJvb2wgYWxsU3VzcGVuZGVkID0gdHJ1ZTsKLSAgICBhdXRvIGNvbmRp
dGlvbiA9IGlzU3VzcGVuc2lvbkltbWluZW50ID8gV2ViSURCU2VydmVyOjpTdXNwZW5zaW9uQ29u
ZGl0aW9uOjpBbHdheXMgOiBXZWJJREJTZXJ2ZXI6OlN1c3BlbnNpb25Db25kaXRpb246OklmSWRs
ZTsKLSAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oWyZdKGF1dG8mIHNlc3Npb24pIHsKLSAgICAg
ICAgaWYgKGF1dG8qIHNlcnZlciA9IHNlc3Npb24ud2ViSURCU2VydmVyKCkpCi0gICAgICAgICAg
ICBhbGxTdXNwZW5kZWQgJj0gc2VydmVyLT5zdXNwZW5kKGNvbmRpdGlvbik7Ci0gICAgfSk7Ci0K
LSAgICBpZiAoYWxsU3VzcGVuZGVkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBSdW5Mb29wOjpt
YWluKCkuZGlzcGF0Y2hBZnRlcig1X3MsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhp
cyB9LCBzdXNwZW5zaW9uSWRlbnRpZmllciA9IG1fc3VzcGVuc2lvbklkZW50aWZpZXJdIHsKLSAg
ICAgICAgaWYgKCF3ZWFrVGhpcykKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBpZiAo
IW1fc2hvdWxkU3VzcGVuZElEQlNlcnZlcnMgfHwgc3VzcGVuc2lvbklkZW50aWZpZXIgIT0gbV9z
dXNwZW5zaW9uSWRlbnRpZmllcikKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBmb3JF
YWNoTmV0d29ya1Nlc3Npb24oW10oYXV0byYgc2Vzc2lvbikgewotICAgICAgICAgICAgaWYgKGF1
dG8qIHNlcnZlciA9IHNlc3Npb24ud2ViSURCU2VydmVyKCkpCi0gICAgICAgICAgICAgICAgc2Vy
dmVyLT5zdXNwZW5kKFdlYklEQlNlcnZlcjo6U3VzcGVuc2lvbkNvbmRpdGlvbjo6QWx3YXlzKTsK
LSAgICAgICAgfSk7Ci0gICAgfSk7Ci19Ci0KIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnByZXBhcmVU
b1N1c3BlbmQoYm9vbCBpc1N1c3BlbnNpb25JbW1pbmVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNw
ZW5zaW9uLCAiJXAgLSBOZXR3b3JrUHJvY2Vzczo6cHJlcGFyZVRvU3VzcGVuZCgpLCBpc1N1c3Bl
bnNpb25JbW1pbmVudD0lZCIsIHRoaXMsIGlzU3VzcGVuc2lvbkltbWluZW50KTsKIAotI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCi0gICAgc3VzcGVuZElEQlNlcnZlcnMoaXNTdXNwZW5zaW9uSW1t
aW5lbnQpOwotI2VuZGlmCi0KICAgICBsb3dNZW1vcnlIYW5kbGVyKENyaXRpY2FsOjpZZXMpOwog
CiAgICAgUmVmUHRyPENhbGxiYWNrQWdncmVnYXRvcj4gY2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2Fs
bGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoW3RoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CkBAIC0yMjIzLDE4ICsyMTU1LDEwIEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlc3VtZSgpCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQogICAgICAgICBpZiAoYXV0byogc3dTZXJ2ZXIgPSBzZXNzaW9uLnN3U2VydmVyKCkpCiAgICAg
ICAgICAgICBzd1NlcnZlci0+ZW5kU3VzcGVuc2lvbigpOwotI2VuZGlmCi0jaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKLSAgICAgICAgaWYgKGF1dG8qIHNlcnZlciA9IHNlc3Npb24ud2ViSURCU2Vy
dmVyKCkpCi0gICAgICAgICAgICBzZXJ2ZXItPnJlc3VtZSgpOwogI2VuZGlmCiAgICAgICAgIGlm
IChhdXRvKiBtYW5hZ2VyID0gc2Vzc2lvbi5zdG9yYWdlTWFuYWdlcigpKQogICAgICAgICAgICAg
bWFuYWdlci0+cmVzdW1lKCk7CiAgICAgfSk7Ci0KLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQot
ICAgIG1fc2hvdWxkU3VzcGVuZElEQlNlcnZlcnMgPSBmYWxzZTsKLSNlbmRpZgogfQogCiB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpwcmVmZXRjaEROUyhjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQpAQCAt
MjI4MSwxMiArMjIwNSwxNSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzeW5jTG9jYWxTdG9yYWdl
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZAogCiB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpyZXNldFF1b3RhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIExvY2tlciBsb2Nr
ZXIgeyBtX3Nlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2Vyc0xvY2sgfTsKLSAgICBpZiAoYXV0byog
c2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXIgPSBtX3Nlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2Vy
cy5nZXQoc2Vzc2lvbklEKSkgewotICAgICAgICBmb3IgKGF1dG8gc3RvcmFnZVF1b3RhTWFuYWdl
ciA6IHNlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2VyLT5leGlzdGluZ1N0b3JhZ2VRdW90YU1hbmFn
ZXJzKCkpCi0gICAgICAgICAgICBzdG9yYWdlUXVvdGFNYW5hZ2VyLT5yZXNldFF1b3RhRm9yVGVz
dGluZygpOwotICAgIH0KLSAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIGF1dG8qIHNlc3Np
b24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOworICAgIGlmICghc2Vzc2lvbikKKyAgICAg
ICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKCk7CisKKyAgICBhdXRvKiBzdG9yYWdlTWFuYWdl
ciA9IHNlc3Npb24tPnN0b3JhZ2VNYW5hZ2VyKCk7CisgICAgaWYgKCFzdG9yYWdlTWFuYWdlcikK
KyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKCk7CisKKyAgICBzdG9yYWdlTWFuYWdl
ci0+cmVzZXRRdW90YUZvclRlc3RpbmcoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQog
CiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVhclN0b3JhZ2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0y
Mjk4LDYgKzIyMjUsMTYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2xlYXJTdG9yYWdlKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm8KICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoKTsKIH0KIAordm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGlkSW5jcmVhc2VRdW90
YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2luLCBR
dW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1
aW50NjRfdD4gbmV3UXVvdGEpCit7CisgICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9u
KHNlc3Npb25JRCk7CisgICAgaWYgKCFzZXNzaW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBp
ZiAoYXV0byogbWFuYWdlciA9IHNlc3Npb24tPnN0b3JhZ2VNYW5hZ2VyKCkpCisgICAgICAgIG1h
bmFnZXItPmRpZEluY3JlYXNlUXVvdGEob3JpZ2luLCBpZGVudGlmaWVyLCBuZXdRdW90YSk7Cit9
CisKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlbmFtZU9yaWdpbkluV2Vic2l0ZURhdGEoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIG9sZE5hbWUsIGNvbnN0IFVSTCYgbmV3TmFt
ZSwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byBhZ2dyZWdhdG9yID0g
Q2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwpA
QCAtMjMxMCw5ICsyMjQ3LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVuYW1lT3JpZ2luSW5X
ZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFUKICAgICBhdXRvKiBz
ZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKICAgICBpZiAoYXV0byogbWFuYWdl
ciA9IHNlc3Npb24gPyBzZXNzaW9uLT5zdG9yYWdlTWFuYWdlcigpIDogbnVsbHB0cikKICAgICAg
ICAgbWFuYWdlci0+bW92ZURhdGEob2xkT3JpZ2luLCBuZXdPcmlnaW4sIFthZ2dyZWdhdG9yXSB7
IH0pOwotCi0gICAgaWYgKGRhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4
ZWREQkRhdGFiYXNlcykgJiYgc2Vzc2lvbiAmJiBzZXNzaW9uLT5oYXNJREJEYXRhYmFzZVBhdGgo
KSkKLSAgICAgICAgc2Vzc2lvbi0+ZW5zdXJlV2ViSURCU2VydmVyKCkucmVuYW1lT3JpZ2luKG9s
ZE9yaWdpbiwgbmV3T3JpZ2luLCBbYWdncmVnYXRvcl0geyB9KTsKIH0KIAogI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKQEAgLTIzNzIsNyArMjMwNiw4IEBAIFJlZlB0cjxTdG9yYWdlUXVvdGFN
YW5hZ2VyPiBOZXR3b3JrUHJvY2Vzczo6c3RvcmFnZVF1b3RhTWFuYWdlcihQQUw6OlNlc3Npb25J
RCBzCiAgICAgU3RvcmFnZVF1b3RhTWFuYWdlcjo6VXNhZ2VHZXR0ZXIgdXNhZ2VHZXR0ZXIgPSBb
Y2FjaGVSb290UGF0aCA9IHNlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2VyLT5jYWNoZVJvb3RQYXRo
KCkuaXNvbGF0ZWRDb3B5KCksIGlkYlJvb3RQYXRoID0gaWRiUm9vdFBhdGguaXNvbGF0ZWRDb3B5
KCksIG9yaWdpbiA9IG9yaWdpbi5pc29sYXRlZENvcHkoKV0oKSB7CiAgICAgICAgIEFTU0VSVCgh
aXNNYWluUnVuTG9vcCgpKTsKIAotICAgICAgICByZXR1cm4gQ2FjaGVTdG9yYWdlOjpFbmdpbmU6
OmRpc2tVc2FnZShjYWNoZVJvb3RQYXRoLCBvcmlnaW4pICsgSURCU2VydmVyOjpJREJTZXJ2ZXI6
OmRpc2tVc2FnZShpZGJSb290UGF0aCwgb3JpZ2luKTsKKyAgICAgICAgYXV0byBjYWNoZVN0b3Jh
Z2VQYXRoID0gQ2FjaGVTdG9yYWdlOjpFbmdpbmU6OnN0b3JhZ2VQYXRoKGNhY2hlUm9vdFBhdGgs
IG9yaWdpbik7CisgICAgICAgIHJldHVybiBDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6ZGlza1VzYWdl
KGNhY2hlU3RvcmFnZVBhdGgpICsgSURCU2VydmVyOjpJREJTZXJ2ZXI6OmRpc2tVc2FnZShpZGJS
b290UGF0aCwgb3JpZ2luKTsKICAgICB9OwogICAgIFN0b3JhZ2VRdW90YU1hbmFnZXI6OlF1b3Rh
SW5jcmVhc2VSZXF1ZXN0ZXIgcXVvdGFJbmNyZWFzZVJlcXVlc3RlciA9IFt0aGlzLCB3ZWFrVGhp
cyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBzZXNzaW9uSUQsIG9yaWdpbl0gKHVpbnQ2NF90IGN1cnJl
bnRRdW90YSwgdWludDY0X3QgY3VycmVudFNwYWNlLCB1aW50NjRfdCByZXF1ZXN0ZWRJbmNyZWFz
ZSwgYXV0byYmIGNhbGxiYWNrKSB7CiAgICAgICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOwpA
QCAtMjU4Niw4ICsyNTIxLDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVtb3ZlS2VwdEFsaXZl
TG9hZChOZXR3b3JrUmVzb3VyY2VMb2FkZXImIGxvYWRlcikKIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OmNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NDbG9zZWQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7CiAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBu
ZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBzZXJ2ZXIgPSBz
ZXNzaW9uLT53ZWJJREJTZXJ2ZXIoKSkKLSAgICAgICAgICAgIHNlcnZlci0+cmVtb3ZlQ29ubmVj
dGlvbihjb25uZWN0aW9uKTsKICAgICAgICAgaWYgKGF1dG8qIG1hbmFnZXIgPSBzZXNzaW9uLT5z
dG9yYWdlTWFuYWdlcigpKQogICAgICAgICAgICAgbWFuYWdlci0+c3RvcFJlY2VpdmluZ01lc3Nh
Z2VGcm9tQ29ubmVjdGlvbihjb25uZWN0aW9uKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggNzg3NzkyN2ExN2M1NTk2ZWIwM2Jk
NGFjZjRkNThlNDE4YWM4YmEyMy4uMGY4NTMzZWQxM2RkMjYyNzdhNmRkNTJhYjZkYWJlMjBjM2Uw
ODgwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
aApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkxvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tl
ci5oIgogI2luY2x1ZGUgIk5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyLmgiCiAjaW5jbHVk
ZSAiTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJRdW90YUluY3Jl
YXNlUmVxdWVzdElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSVENEYXRhQ2hhbm5lbFJlbW90ZU1h
bmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlICJX
ZWJQYWdlUHJveHlJZGVudGlmaWVyLmgiCkBAIC0yODgsMTIgKzI4OSwxMSBAQCBwdWJsaWM6CiAg
ICAgTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXImIG5ldHdvcmtDb250ZW50UnVsZUxpc3RN
YW5hZ2VyKCkgeyByZXR1cm4gbV9uZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcjsgfQogI2Vu
ZGlmCiAKLSAgICBib29sIHNob3VsZFN1c3BlbmRJREJTZXJ2ZXJzKCkgY29uc3QgeyByZXR1cm4g
bV9zaG91bGRTdXNwZW5kSURCU2VydmVyczsgfQotCiAgICAgdm9pZCBzeW5jTG9jYWxTdG9yYWdl
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKICAgICB2b2lkIHJlc2V0UXVvdGEoUEFM
OjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBjbGVh
clN0b3JhZ2UoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Cisg
ICAgdm9pZCBkaWRJbmNyZWFzZVF1b3RhKFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpD
bGllbnRPcmlnaW4mLCBRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIsIHN0ZDo6b3B0aW9u
YWw8dWludDY0X3Q+IG5ld1F1b3RhKTsKICAgICB2b2lkIHJlbmFtZU9yaWdpbkluV2Vic2l0ZURh
dGEoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYsIE9wdGlvblNldDxXZWJz
aXRlRGF0YVR5cGU+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKQEAgLTQ3Myw4ICs0NzMsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVn
aXN0ZXJVUkxTY2hlbWVBc05vQWNjZXNzKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAgIHZvaWQg
cmVnaXN0ZXJVUkxTY2hlbWVBc0NPUlNFbmFibGVkKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogCi0g
ICAgdm9pZCBzdXNwZW5kSURCU2VydmVycyhib29sIGlzU3VzcGVuc2lvbkltbWluZW50KTsKLQog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdm9pZCBzZXRJc0hvbGRpbmdMb2NrZWRGaWxl
cyhib29sKTsKICNlbmRpZgpAQCAtNDgyLDYgKzQ4MCw3IEBAIHByaXZhdGU6CiAgICAgY2xhc3Mg
U2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXIgewogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKICAgICBwdWJsaWM6CisgICAgICAgIFNlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2VyKCkg
PSBkZWxldGU7CiAgICAgICAgIFNlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2VyKGNvbnN0IFN0cmlu
ZyYgY2FjaGVSb290UGF0aCwgdWludDY0X3QgZGVmYXVsdFF1b3RhLCB1aW50NjRfdCBkZWZhdWx0
VGhpcmRQYXJ0eVF1b3RhKQogICAgICAgICAgICAgOiBtX2NhY2hlUm9vdFBhdGgoY2FjaGVSb290
UGF0aCkKICAgICAgICAgICAgICwgbV9kZWZhdWx0UXVvdGEoZGVmYXVsdFF1b3RhKQpAQCAtNTA4
LDggKzUwNyw4IEBAIHByaXZhdGU6CiAgICAgcHJpdmF0ZToKICAgICAgICAgU3RyaW5nIG1fY2Fj
aGVSb290UGF0aDsKICAgICAgICAgU3RyaW5nIG1faWRiUm9vdFBhdGg7Ci0gICAgICAgIHVpbnQ2
NF90IG1fZGVmYXVsdFF1b3RhIHsgV2ViQ29yZTo6U3RvcmFnZVF1b3RhTWFuYWdlcjo6ZGVmYXVs
dFF1b3RhKCkgfTsKLSAgICAgICAgdWludDY0X3QgbV9kZWZhdWx0VGhpcmRQYXJ0eVF1b3RhIHsg
V2ViQ29yZTo6U3RvcmFnZVF1b3RhTWFuYWdlcjo6ZGVmYXVsdFRoaXJkUGFydHlRdW90YSgpIH07
CisgICAgICAgIHVpbnQ2NF90IG1fZGVmYXVsdFF1b3RhOworICAgICAgICB1aW50NjRfdCBtX2Rl
ZmF1bHRUaGlyZFBhcnR5UXVvdGE7CiAgICAgICAgIEhhc2hNYXA8V2ViQ29yZTo6Q2xpZW50T3Jp
Z2luLCBSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZVF1b3RhTWFuYWdlcj4+IG1fc3RvcmFnZVF1b3Rh
TWFuYWdlcnM7CiAgICAgfTsKICAgICB2b2lkIGFkZFNlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2Vy
KFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBkZWZhdWx0UXVvdGEsIHVpbnQ2NF90IGRlZmF1bHRU
aGlyZFBhcnR5UXVvdGEsIGNvbnN0IFN0cmluZyYgY2FjaGVSb290UGF0aCwgU2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlJik7CkBAIC01NDksOSArNTQ4LDYgQEAgcHJpdmF0ZToKICAgICBXZWJTUUxp
dGVEYXRhYmFzZVRyYWNrZXIgbV93ZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXI7CiAgICAgUmVmUHRy
PFByb2Nlc3NBc3NlcnRpb24+IG1faG9sZGluZ0xvY2tlZEZpbGVBc3NlcnRpb247CiAjZW5kaWYK
LQotICAgIGJvb2wgbV9zaG91bGRTdXNwZW5kSURCU2VydmVycyB7IGZhbHNlIH07Ci0gICAgdWlu
dDY0X3QgbV9zdXNwZW5zaW9uSWRlbnRpZmllciB7IDAgfTsKICAgICAKICNpZiBFTkFCTEUoV0VC
X1JUQykKICAgICBSZWZQdHI8UlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyUHJveHk+IG1fcnRj
RGF0YUNoYW5uZWxQcm94eTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDYzN2UxNTlmMTg2MzkzYmVjNWNj
MDVhYjViZDU3ODBiZThjNmZjZTQuLjYzMWUyYjYwNzNjMDE5MjEzMDY4YzIwOTZiODI3YjI3OWRi
YzdkZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTc5LDYgKzE3OSw3IEBAIG1lc3NhZ2VzIC0+IE5l
dHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKIAogICAgIFJlc2V0UXVvdGEoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYwogICAgIENsZWFyU3RvcmFnZShQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQpIC0+ICgpIEFzeW5jCisgICAgRGlkSW5jcmVhc2VRdW90YShQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIHN0cnVjdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luLCBX
ZWJLaXQ6OlF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllciBpZGVudGlmaWVyLCBzdGQ6Om9w
dGlvbmFsPHVpbnQ2NF90PiBuZXdRdW90YSkKICAgICAKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RP
TUFJTlMpCiAgICAgSGFzQXBwQm91bmRTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkg
LT4gKGJvb2wgaGFzQXBwQm91bmRTZXNzaW9uKSBBc3luYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAppbmRleCBkNzYxNjI4NTBjYWQ4NDM4ZjAw
ODg5MDUzZjdlZGM4MmYzZTMzYTNkLi40YTcxOTQxY2FlNzA2ZDczMGJhZTIwYjI4MGUzZDhmZjc1
ZDk0NTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtT
ZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNz
aW9uLmNwcApAQCAtMjA1LDggKzIwNSw2IEBAIHZvaWQgTmV0d29ya1Nlc3Npb246OmludmFsaWRh
dGVBbmRDYW5jZWwoKQogICAgIGlmIChtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MpCiAgICAgICAg
IG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+aW52YWxpZGF0ZUFuZENhbmNlbCgpOwogI2VuZGlm
Ci0gICAgaWYgKGF1dG8gc2VydmVyID0gc3RkOjpleGNoYW5nZShtX3dlYklEQlNlcnZlciwgbnVs
bHB0cikpCi0gICAgICAgIHNlcnZlci0+Y2xvc2UoKTsKICAgICBpZiAoYXV0byBtYW5hZ2VyID0g
c3RkOjpleGNoYW5nZShtX3N0b3JhZ2VNYW5hZ2VyLCBudWxscHRyKSkKICAgICAgICAgbWFuYWdl
ci0+Y2xvc2UoKTsKICAgICBtX2NhY2hlRW5naW5lID0gbnVsbHB0cjsKQEAgLTY2MSw1NSArNjU5
LDE4IEBAIFdlYlNoYXJlZFdvcmtlclNlcnZlciYgTmV0d29ya1Nlc3Npb246OmVuc3VyZVNoYXJl
ZFdvcmtlclNlcnZlcigpCiAgICAgcmV0dXJuICptX3NoYXJlZFdvcmtlclNlcnZlcjsKIH0KIAot
V2ViSURCU2VydmVyJiBOZXR3b3JrU2Vzc2lvbjo6ZW5zdXJlV2ViSURCU2VydmVyKCkKLXsKLSAg
ICBpZiAoIW1fd2ViSURCU2VydmVyKSB7Ci0gICAgICAgIFN0cmluZyBwYXRoOwotICAgICAgICBp
ZiAoIXNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkpIHsKLSAgICAgICAgICAgIEFTU0VSVCghbV9p
ZGJEYXRhYmFzZVBhdGguaXNOdWxsKCkpOwotICAgICAgICAgICAgcGF0aCA9IG1faWRiRGF0YWJh
c2VQYXRoOwotICAgICAgICB9Ci0KLSAgICAgICAgYXV0byBzcGFjZVJlcXVlc3RlciA9IFtuZXR3
b3JrUHJvY2VzcyA9IFJlZiB7IG5ldHdvcmtQcm9jZXNzKCkgfSwgc2Vzc2lvbklEID0gc2Vzc2lv
bklEKCldKGNvbnN0IGF1dG8mIG9yaWdpbiwgdWludDY0X3Qgc3BhY2VSZXF1ZXN0ZWQpIHsKLSAg
ICAgICAgICAgIHJldHVybiBuZXR3b3JrUHJvY2Vzcy0+c3RvcmFnZVF1b3RhTWFuYWdlcihzZXNz
aW9uSUQsIG9yaWdpbiktPnJlcXVlc3RTcGFjZU9uQmFja2dyb3VuZFRocmVhZChzcGFjZVJlcXVl
c3RlZCk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgbV93ZWJJREJTZXJ2ZXIgPSBXZWJJREJTZXJ2
ZXI6OmNyZWF0ZShzZXNzaW9uSUQoKSwgcGF0aCwgV1RGTW92ZShzcGFjZVJlcXVlc3RlcikpOwot
ICAgICAgICBpZiAobmV0d29ya1Byb2Nlc3MoKS5zaG91bGRTdXNwZW5kSURCU2VydmVycygpKQot
ICAgICAgICAgICAgbV93ZWJJREJTZXJ2ZXItPnN1c3BlbmQoV2ViSURCU2VydmVyOjpTdXNwZW5z
aW9uQ29uZGl0aW9uOjpBbHdheXMpOwotICAgIH0KLSAgICByZXR1cm4gKm1fd2ViSURCU2VydmVy
OwotfQotCi12b2lkIE5ldHdvcmtTZXNzaW9uOjpjbG9zZUlEQlNlcnZlcihDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgaWYgKCFtX3dlYklEQlNl
cnZlcikKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKCk7Ci0KLSAgICBzdGQ6OmV4
Y2hhbmdlKG1fd2ViSURCU2VydmVyLCBudWxscHRyKS0+Y2xvc2UoV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwotfQotCi12b2lkIE5ldHdvcmtTZXNzaW9uOjphZGRJbmRleGVkRGF0YWJhc2VT
ZXNzaW9uKGNvbnN0IFN0cmluZyYgaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5LCBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGUmIGhhbmRsZSkKLXsKLSAgICAvLyAqKioqKioqKioKLSAgICAvLyBJTVBP
UlRBTlQ6IERvIG5vdCBjaGFuZ2UgdGhlIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgZm9yIGluZGV4ZWQg
ZGF0YWJhc2VzIG9uIGRpc2sgd2l0aG91dCBmaXJzdCBjb25zdWx0aW5nIGEgcmV2aWV3ZXIgZnJv
bSBBcHBsZSAoPHJkYXI6Ly9wcm9ibGVtLzE3NDU0NzEyPikKLSAgICAvLyAqKioqKioqKioKLSAg
ICBhdXRvIGlzTmV3ID0gbV9pZGJEYXRhYmFzZVBhdGguaXNOdWxsKCk7Ci0gICAgbV9pZGJEYXRh
YmFzZVBhdGggPSBpbmRleGVkRGF0YWJhc2VEaXJlY3Rvcnk7Ci0gICAgaWYgKGlzTmV3KSB7Ci0g
ICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShoYW5kbGUpOwotICAg
ICAgICBuZXR3b3JrUHJvY2VzcygpLnNldFNlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2VySURCUm9v
dFBhdGgoc2Vzc2lvbklEKCksIGluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSk7Ci0gICAgfQotfQot
Ci12b2lkIE5ldHdvcmtTZXNzaW9uOjphZGRTdG9yYWdlTWFuYWdlclNlc3Npb24oY29uc3QgU3Ry
aW5nJiBnZW5lcmFsU3RvcmFnZVBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgZ2VuZXJh
bFN0b3JhZ2VQYXRoSGFuZGxlLCBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZVBhdGgsIFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSYgbG9jYWxTdG9yYWdlUGF0aEhhbmRsZSkKK3ZvaWQgTmV0d29y
a1Nlc3Npb246OmFkZFN0b3JhZ2VNYW5hZ2VyU2Vzc2lvbihjb25zdCBTdHJpbmcmIGdlbmVyYWxT
dG9yYWdlUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBnZW5lcmFsU3RvcmFnZVBhdGhI
YW5kbGUsIGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlJiBsb2NhbFN0b3JhZ2VQYXRoSGFuZGxlLCBjb25zdCBTdHJpbmcmIGlkYlN0b3JhZ2VQ
YXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIGlkYlN0b3JhZ2VQYXRoSGFuZGxlLCBjb25z
dCBTdHJpbmcmIGNhY2hlU3RvcmFnZVBhdGgsIHVpbnQ2NF90IGRlZmF1bHRPcmlnaW5RdW90YSwg
dWludDY0X3QgZGVmYXVsdFRoaXJkUGFydHlRdW90YSkKIHsKICAgICBpZiAobV9zdG9yYWdlTWFu
YWdlcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBl
cm1hbmVudGx5KGdlbmVyYWxTdG9yYWdlUGF0aEhhbmRsZSk7CiAgICAgU2FuZGJveEV4dGVuc2lv
bjo6Y29uc3VtZVBlcm1hbmVudGx5KGxvY2FsU3RvcmFnZVBhdGhIYW5kbGUpOwotICAgIG1fc3Rv
cmFnZU1hbmFnZXIgPSBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZShzZXNzaW9uSUQoKSwg
Z2VuZXJhbFN0b3JhZ2VQYXRoLCBsb2NhbFN0b3JhZ2VQYXRoKTsKKyAgICBTYW5kYm94RXh0ZW5z
aW9uOjpjb25zdW1lUGVybWFuZW50bHkoaWRiU3RvcmFnZVBhdGhIYW5kbGUpOworICAgIElQQzo6
Q29ubmVjdGlvbjo6VW5pcXVlSUQgY29ubmVjdGlvbklEOworICAgIGlmIChhdXRvKiBjb25uZWN0
aW9uID0gbmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpKQorICAgICAg
ICBjb25uZWN0aW9uSUQgPSBjb25uZWN0aW9uLT51bmlxdWVJRCgpOworICAgIG1fc3RvcmFnZU1h
bmFnZXIgPSBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZShzZXNzaW9uSUQoKSwgY29ubmVj
dGlvbklELCBnZW5lcmFsU3RvcmFnZVBhdGgsIGxvY2FsU3RvcmFnZVBhdGgsIGlkYlN0b3JhZ2VQ
YXRoLCBjYWNoZVN0b3JhZ2VQYXRoLCBkZWZhdWx0T3JpZ2luUXVvdGEsIGRlZmF1bHRUaGlyZFBh
cnR5UXVvdGEpOwogfQogCiB2b2lkIE5ldHdvcmtTZXNzaW9uOjplbnN1cmVDYWNoZUVuZ2luZShG
dW5jdGlvbjx2b2lkKENhY2hlU3RvcmFnZTo6RW5naW5lJik+JiYgY2FsbGJhY2spCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKaW5kZXggM2Y5ZDZjOTU1
MGE4YjhjZWM5ZTRjNTU5ZDMxZDEyMWE5OGIwZTg0MC4uNzlkN2NlNDQwNGExMzhkZjliODhhYWVj
OTdiNjkxM2FmNjBhNGNlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Nlc3Npb24uaApAQCAtMjE0LDE0ICsyMTQsOCBAQCBwdWJsaWM6CiAgICAgV2ViU2hhcmVk
V29ya2VyU2VydmVyKiBzaGFyZWRXb3JrZXJTZXJ2ZXIoKSB7IHJldHVybiBtX3NoYXJlZFdvcmtl
clNlcnZlci5nZXQoKTsgfQogICAgIFdlYlNoYXJlZFdvcmtlclNlcnZlciYgZW5zdXJlU2hhcmVk
V29ya2VyU2VydmVyKCk7CiAKLSAgICBXZWJJREJTZXJ2ZXIqIHdlYklEQlNlcnZlcigpIHsgcmV0
dXJuIG1fd2ViSURCU2VydmVyLmdldCgpOyB9Ci0gICAgV2ViSURCU2VydmVyJiBlbnN1cmVXZWJJ
REJTZXJ2ZXIoKTsKLSAgICB2b2lkIGNsb3NlSURCU2VydmVyKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7Ci0gICAgdm9pZCBhZGRJbmRleGVkRGF0YWJhc2VTZXNzaW9uKGNvbnN0IFN0cmlu
ZyYgaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmKTsK
LSAgICBib29sIGhhc0lEQkRhdGFiYXNlUGF0aCgpIGNvbnN0IHsgcmV0dXJuICFtX2lkYkRhdGFi
YXNlUGF0aC5pc0VtcHR5KCk7IH0KLQogICAgIE5ldHdvcmtTdG9yYWdlTWFuYWdlciogc3RvcmFn
ZU1hbmFnZXIoKSB7IHJldHVybiBtX3N0b3JhZ2VNYW5hZ2VyLmdldCgpOyB9Ci0gICAgdm9pZCBh
ZGRTdG9yYWdlTWFuYWdlclNlc3Npb24oY29uc3QgU3RyaW5nJiBnZW5lcmFsU3RvcmFnZVBhdGgs
IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgZ2VuZXJhbFN0b3JhZ2VQYXRoSGFuZGxlLCBjb25z
dCBTdHJpbmcmIGxvY2FsU3RvcmFnZVBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgbG9j
YWxTdG9yYWdlUGF0aEhhbmRsZSk7CisgICAgdm9pZCBhZGRTdG9yYWdlTWFuYWdlclNlc3Npb24o
Y29uc3QgU3RyaW5nJiBnZW5lcmFsU3RvcmFnZVBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZSYgZ2VuZXJhbFN0b3JhZ2VQYXRoSGFuZGxlLCBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZVBh
dGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgbG9jYWxTdG9yYWdlUGF0aEhhbmRsZSwgY29u
c3QgU3RyaW5nJiBpZGJTdG9yYWdlUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBpZGJT
dG9yYWdlUGF0aEhhbmRsZSwgY29uc3QgU3RyaW5nJiBjYWNoZVN0b3JhZ2VQYXRoLCB1aW50NjRf
dCBkZWZhdWx0T3JpZ2luUXVvdGEsIHVpbnQ2NF90IGRlZmF1bHRUaGlyZFBhcnR5UXVvdGEpOwog
CiAgICAgQ2FjaGVTdG9yYWdlOjpFbmdpbmUqIGNhY2hlRW5naW5lKCkgeyByZXR1cm4gbV9jYWNo
ZUVuZ2luZS5nZXQoKTsgfQogICAgIHZvaWQgZW5zdXJlQ2FjaGVFbmdpbmUoRnVuY3Rpb248dm9p
ZChDYWNoZVN0b3JhZ2U6OkVuZ2luZSYpPiYmKTsKQEAgLTMyNCw5ICszMTgsNiBAQCBwcm90ZWN0
ZWQ6CiAjZW5kaWYKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViU2hhcmVkV29ya2VyU2VydmVyPiBt
X3NoYXJlZFdvcmtlclNlcnZlcjsKIAotICAgIFN0cmluZyBtX2lkYkRhdGFiYXNlUGF0aDsKLSAg
ICBSZWZQdHI8V2ViSURCU2VydmVyPiBtX3dlYklEQlNlcnZlcjsKLQogICAgIFJlZlB0cjxOZXR3
b3JrU3RvcmFnZU1hbmFnZXI+IG1fc3RvcmFnZU1hbmFnZXI7CiAgICAgUmVmUHRyPENhY2hlU3Rv
cmFnZTo6RW5naW5lPiBtX2NhY2hlRW5naW5lOwogICAgIFZlY3RvcjxGdW5jdGlvbjx2b2lkKENh
Y2hlU3RvcmFnZTo6RW5naW5lJik+PiBtX2NhY2hlU3RvcmFnZVBhcmFtZXRlcnNDYWxsYmFja3M7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3Rv
cmFnZUVuZ2luZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hl
U3RvcmFnZUVuZ2luZS5jcHAKaW5kZXggYzIwMGNlOGI1ZWI0YzNhMDM2NTdlODIyNjg5OTAyYjQ2
ZGJmOGFiMC4uYzUxYzIyNDkzMTc4MjQxOWU3MTNlYjYyNThmMGNmOWZhZjE5OWI4ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdp
bmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9y
YWdlRW5naW5lLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtDYWNoZUlP
Q2hhbm5lbC5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCiAjaW5jbHVkZSAiTmV0d29y
a1Nlc3Npb24uaCIKKyNpbmNsdWRlICJOZXR3b3JrU3RvcmFnZU1hbmFnZXIuaCIKICNpbmNsdWRl
ICJXZWJzaXRlRGF0YVR5cGUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NhY2hlUXVlcnlPcHRpb25z
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXRyaWV2ZVJlY29yZHNPcHRpb25zLmg+CkBAIC0yMDMs
NDAgKzIwNCw1MiBAQCBzdGF0aWMgdWludDY0X3QgZ2V0RGlyZWN0b3J5U2l6ZShjb25zdCBTdHJp
bmcmIGRpcmVjdG9yeVBhdGgpCiAgICAgcmV0dXJuIGRpcmVjdG9yeVNpemU7CiB9CiAKLXVpbnQ2
NF90IEVuZ2luZTo6ZGlza1VzYWdlKGNvbnN0IFN0cmluZyYgcm9vdFBhdGgsIGNvbnN0IFdlYkNv
cmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luKQorU3RyaW5nIEVuZ2luZTo6c3RvcmFnZVBhdGgoY29u
c3QgU3RyaW5nJiByb290RGlyZWN0b3J5LCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9y
aWdpbikKIHsKICAgICBBU1NFUlQoIWlzTWFpblJ1bkxvb3AoKSk7CisgICAgCisgICAgaWYgKHJv
b3REaXJlY3RvcnkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAot
ICAgIGlmIChyb290UGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgU3Ry
aW5nIHNhbHRQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJvb3RQ
YXRoLCAic2FsdCJfcyk7CisgICAgU3RyaW5nIHNhbHRQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KHJvb3REaXJlY3RvcnksICJzYWx0Il9zKTsKICAgICBhdXRvIHNh
bHQgPSBGaWxlU3lzdGVtOjpyZWFkT3JNYWtlU2FsdChzYWx0UGF0aCk7CiAgICAgaWYgKCFzYWx0
KQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKICAg
ICBLZXkga2V5KG9yaWdpbi50b3BPcmlnaW4udG9TdHJpbmcoKSwgb3JpZ2luLmNsaWVudE9yaWdp
bi50b1N0cmluZygpLCB7IH0sIHsgfSwgKnNhbHQpOwotICAgIFN0cmluZyBkaXJlY3RvcnlQYXRo
ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJvb3RQYXRoLCBrZXkuaGFz
aEFzU3RyaW5nKCkpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQocm9vdERpcmVjdG9yeSwga2V5Lmhhc2hBc1N0cmluZygpKTsKK30KKwordWludDY0X3Qg
RW5naW5lOjpkaXNrVXNhZ2UoY29uc3QgU3RyaW5nJiBvcmlnaW5EaXJlY3RvcnkpCit7CisgICAg
QVNTRVJUKCFpc01haW5SdW5Mb29wKCkpOwogCi0gICAgU3RyaW5nIHNpemVGaWxlUGF0aCA9IENh
Y2hlczo6Y2FjaGVzU2l6ZUZpbGVuYW1lKGRpcmVjdG9yeVBhdGgpOworICAgIGlmIChvcmlnaW5E
aXJlY3RvcnkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFN0cmluZyBzaXpl
RmlsZVBhdGggPSBDYWNoZXM6OmNhY2hlc1NpemVGaWxlbmFtZShvcmlnaW5EaXJlY3RvcnkpOwog
ICAgIGlmIChhdXRvIHJlY29yZGVkU2l6ZSA9IHJlYWRTaXplRmlsZShzaXplRmlsZVBhdGgpKQog
ICAgICAgICByZXR1cm4gKnJlY29yZGVkU2l6ZTsKIAotICAgIHJldHVybiBnZXREaXJlY3RvcnlT
aXplKGRpcmVjdG9yeVBhdGgpOworICAgIHJldHVybiBnZXREaXJlY3RvcnlTaXplKG9yaWdpbkRp
cmVjdG9yeSk7CiB9CiAKLXZvaWQgRW5naW5lOjpyZXF1ZXN0U3BhY2UoY29uc3QgV2ViQ29yZTo6
Q2xpZW50T3JpZ2luJiBvcmlnaW4sIHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uKT4mJiBj
YWxsYmFjaykKK3ZvaWQgRW5naW5lOjpyZXF1ZXN0U3BhY2UoY29uc3QgV2ViQ29yZTo6Q2xpZW50
T3JpZ2luJiBvcmlnaW4sIHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CiAKICAgICBpZiAoIW1fbmV0d29ya1Byb2Nlc3MpCi0gICAgICAgIGNhbGxiYWNrKFdlYkNvcmU6
OlN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uOjpEZW55KTsKKyAgICAgICAgY2FsbGJhY2so
ZmFsc2UpOworCisgICAgYXV0byogc2Vzc2lvbiA9IG1fbmV0d29ya1Byb2Nlc3MtPm5ldHdvcmtT
ZXNzaW9uKG1fc2Vzc2lvbklEKTsKKyAgICBpZiAoIXNlc3Npb24pCisgICAgICAgIGNhbGxiYWNr
KGZhbHNlKTsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2VyPiBzdG9y
YWdlUXVvdGFNYW5hZ2VyID0gbV9uZXR3b3JrUHJvY2Vzcy0+c3RvcmFnZVF1b3RhTWFuYWdlciht
X3Nlc3Npb25JRCwgb3JpZ2luKTsKLSAgICBpZiAoIXN0b3JhZ2VRdW90YU1hbmFnZXIpCi0gICAg
ICAgIGNhbGxiYWNrKFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uOjpEZW55
KTsKKyAgICBhdXRvKiBzdG9yYWdlTWFuYWdlciA9IHNlc3Npb24tPnN0b3JhZ2VNYW5hZ2VyKCk7
CisgICAgaWYgKCFzdG9yYWdlTWFuYWdlcikKKyAgICAgICAgY2FsbGJhY2soZmFsc2UpOwogCi0g
ICAgc3RvcmFnZVF1b3RhTWFuYWdlci0+cmVxdWVzdFNwYWNlT25NYWluVGhyZWFkKHNwYWNlUmVx
dWVzdGVkLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgc3RvcmFnZU1hbmFnZXItPnJlcXVlc3RT
cGFjZShvcmlnaW4sIHNwYWNlUmVxdWVzdGVkLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKIEVu
Z2luZTo6RW5naW5lKE5ldHdvcmtTZXNzaW9uJiBuZXR3b3JrU2Vzc2lvbiwgU3RyaW5nJiYgcm9v
dFBhdGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0Nh
Y2hlU3RvcmFnZUVuZ2luZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9D
YWNoZVN0b3JhZ2VFbmdpbmUuaAppbmRleCAxNDdmYmFjZTE2NzdhNjA4NTkxOGFiNzcyYTllMTBh
MjA2YzY4ODFlLi5mZTNjMWY5MzBkYWUzOTk4Y2QxYzA0YzM0ZGJkZGM1MzU1NWE0NzAyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVu
Z2luZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9y
YWdlRW5naW5lLmgKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJOZXR3b3JrQ2FjaGVEYXRh
LmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGEuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NsaWVudE9y
aWdpbi5oPgotI2luY2x1ZGUgPFdlYkNvcmUvU3RvcmFnZVF1b3RhTWFuYWdlci5oPgogI2luY2x1
ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CkBAIC04NCw4ICs4Myw5IEBAIHB1YmxpYzoKIAogICAgIHN0YXRp
YyB2b2lkIGluaXRpYWxpemVRdW90YVVzZXIoTmV0d29ya1Nlc3Npb24mLCBjb25zdCBXZWJDb3Jl
OjpDbGllbnRPcmlnaW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCi0gICAgc3Rh
dGljIHVpbnQ2NF90IGRpc2tVc2FnZShjb25zdCBTdHJpbmcmIHJvb3RQYXRoLCBjb25zdCBXZWJD
b3JlOjpDbGllbnRPcmlnaW4mKTsKLSAgICB2b2lkIHJlcXVlc3RTcGFjZShjb25zdCBXZWJDb3Jl
OjpDbGllbnRPcmlnaW4mLCB1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbik+JiYpOworICAg
IHN0YXRpYyBTdHJpbmcgc3RvcmFnZVBhdGgoY29uc3QgU3RyaW5nJiByb290RGlyZWN0b3J5LCBj
b25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKKyAgICBzdGF0aWMgdWludDY0X3QgZGlza1Vz
YWdlKGNvbnN0IFN0cmluZyYgb3JpZ2luRGlyZWN0b3J5KTsKKyAgICB2b2lkIHJlcXVlc3RTcGFj
ZShjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCB1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAKICAgICBib29sIHNob3VsZFBlcnNp
c3QoKSBjb25zdCB7IHJldHVybiAhIW1faW9RdWV1ZTt9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2Fj
aGVzLmNwcAppbmRleCAwNGVkZWNlMWM0YmZlOWVhY2FlMDZhNzA3YzVkZGZmZTAwZTgxMzhlLi5j
MzBjM2JlN2M1YzU1M2JmMjMyOGQ5NTFiNzc0NDQ0MTNiMzJkNmE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VF
bmdpbmVDYWNoZXMuY3BwCkBAIC01MjQsMTQgKzUyNCwxMCBAQCB2b2lkIENhY2hlczo6cmVxdWVz
dFNwYWNlKHVpbnQ2NF90IHNwYWNlUmVxdWlyZWQsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpD
b21wbAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9lbmdpbmUtPnJlcXVlc3RTcGFj
ZShtX29yaWdpbiwgc3BhY2VSZXF1aXJlZCwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayld
KGF1dG8gZGVjaXNpb24pIG11dGFibGUgewotICAgICAgICBzd2l0Y2ggKGRlY2lzaW9uKSB7Ci0g
ICAgICAgIGNhc2UgV2ViQ29yZTo6U3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb246OkRlbnk6
Ci0gICAgICAgICAgICBjYWxsYmFjayhFcnJvcjo6UXVvdGFFeGNlZWRlZCk7Ci0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6U3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVj
aXNpb246OkdyYW50OgotICAgICAgICAgICAgY2FsbGJhY2soeyB9KTsKLSAgICAgICAgfTsKKyAg
ICBtX2VuZ2luZS0+cmVxdWVzdFNwYWNlKG1fb3JpZ2luLCBzcGFjZVJlcXVpcmVkLCBbY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAg
aWYgKCFncmFudGVkKQorICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKEVycm9yOjpRdW90YUV4
Y2VlZGVkKTsKKyAgICAgICAgY2FsbGJhY2soeyB9KTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya1Byb2Nlc3NJT1MubW0g
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lPUy5tbQpp
bmRleCBhODdhZDgwNWI1ZGYxNTA3ODNiNTM5MWU4ZTAzZjk4ZTc2NGRmM2Q1Li4yMTk2ZTllNzRk
MjQ1MzFjMGRiNWIzOTQ1YWM2MDhmZTNlOThjNzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lPUy5tbQpAQCAtMTA5LDE5ICsx
MDksNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRJc0hvbGRpbmdMb2NrZWRGaWxlcyhib29s
IGlzSG9sZGluZ0xvY2tlZEZpbGVzKQogICAgIC8vIFdlIHN5bmNocm9ub3VzbHkgdGFrZSBhIHBy
b2Nlc3MgYXNzZXJ0aW9uIHdoZW4gYmVnaW5uaW5nIGEgU1FMaXRlIHRyYW5zYWN0aW9uIHNvIHRo
YXQgd2UgZG9uJ3QgZ2V0IHN1c3BlbmRlZAogICAgIC8vIHdoaWxlIGhvbGRpbmcgYSBsb2NrZWQg
ZmlsZS4gV2Ugd291bGQgZ2V0IGtpbGxlZCBpZiBzdXNwZW5kZWQgd2hpbGUgaG9sZGluZyBsb2Nr
ZWQgZmlsZXMuCiAgICAgbV9ob2xkaW5nTG9ja2VkRmlsZUFzc2VydGlvbiA9IFByb2Nlc3NBc3Nl
cnRpb246OmNyZWF0ZShnZXRDdXJyZW50UHJvY2Vzc0lEKCksICJOZXR3b3JrIFByb2Nlc3MgaXMg
aG9sZGluZyBsb2NrZWQgZmlsZXMiX3MsIFByb2Nlc3NBc3NlcnRpb25UeXBlOjpGaW5pc2hUYXNr
SW50ZXJydXB0YWJsZSwgUHJvY2Vzc0Fzc2VydGlvbjo6TW9kZTo6U3luYyk7Ci0gICAgbV9ob2xk
aW5nTG9ja2VkRmlsZUFzc2VydGlvbi0+c2V0UHJlcGFyZUZvckludmFsaWRhdGlvbkhhbmRsZXIo
W3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dKCkgbXV0YWJsZSB7Ci0gICAgICAg
IEFTU0VSVChpc01haW5SdW5Mb29wKCkpOwotICAgICAgICBpZiAoIXdlYWtUaGlzKQotICAgICAg
ICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmICghbV9zaG91bGRTdXNwZW5kSURCU2VydmVycykK
LSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oW10o
YXV0byYgc2Vzc2lvbikgewotICAgICAgICAgICAgaWYgKGF1dG8qIHNlcnZlciA9IHNlc3Npb24u
d2ViSURCU2VydmVyKCkpCi0gICAgICAgICAgICAgICAgc2VydmVyLT5zdXNwZW5kKCk7Ci0gICAg
ICAgIH0pOwotICAgIH0pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlQ29ubmVjdGlv
blRvQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJT
dG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YWY0YzY0NjQzNmI5NmUx
NGU4N2IzY2UyYjYxMWRiMDQyODc5MDVmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQuY3Bw
CkBAIC0wLDAgKzEsMTkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5oIgorCisjaW5jbHVkZSAi
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiV2ViSURCQ29ubmVjdGlvblRvU2Vy
dmVyTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJJREJSZXN1bHQuaCIKKyNpbmNsdWRlIDxXZWJD
b3JlL0lEQlJlcXVlc3REYXRhLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JREJSZXN1bHREYXRhLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uaD4KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK0lEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OklEQlN0b3Jh
Z2VDb25uZWN0aW9uVG9DbGllbnQoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9u
LCBXZWJDb3JlOjpJREJDb25uZWN0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKQorICAgIDogbV9j
b25uZWN0aW9uKGNvbm5lY3Rpb24pCisgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKKyAg
ICAsIG1fY29ubmVjdGlvblRvQ2xpZW50KFdlYkNvcmU6OklEQlNlcnZlcjo6SURCQ29ubmVjdGlv
blRvQ2xpZW50OjpjcmVhdGUoKnRoaXMpKQoreworfQorCitJREJTdG9yYWdlQ29ubmVjdGlvblRv
Q2xpZW50Ojp+SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudCgpCit7CisgICAgbV9jb25uZWN0
aW9uVG9DbGllbnQtPmNsZWFyRGVsZWdhdGUoKTsKK30KKworV2ViQ29yZTo6SURCU2VydmVyOjpJ
REJDb25uZWN0aW9uVG9DbGllbnQmIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmNvbm5l
Y3Rpb25Ub0NsaWVudCgpCit7CisgICAgcmV0dXJuIG1fY29ubmVjdGlvblRvQ2xpZW50OworfQor
Cit0ZW1wbGF0ZTxjbGFzcyBNZXNzYWdlVHlwZT4gdm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRv
Q2xpZW50OjpkaWRHZXRSZXN1bHQoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYgcmVzdWx0
RGF0YSkKK3sKKyAgICBpZiAocmVzdWx0RGF0YS50eXBlKCkgPT0gV2ViQ29yZTo6SURCUmVzdWx0
VHlwZTo6RXJyb3IpIHsKKyAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKG1fY29ubmVjdGlv
biwgTWVzc2FnZVR5cGUocmVzdWx0RGF0YSksIDApOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgaWYgKHJlc3VsdERhdGEudHlwZSgpID09IFdlYkNvcmU6OklEQlJlc3VsdFR5cGU6Okdl
dEFsbFJlY29yZHNTdWNjZXNzICYmIHJlc3VsdERhdGEuZ2V0QWxsUmVzdWx0KCkudHlwZSgpID09
IFdlYkNvcmU6OkluZGV4ZWREQjo6R2V0QWxsVHlwZTo6S2V5cykgeworICAgICAgICBJUEM6OkNv
bm5lY3Rpb246OnNlbmQobV9jb25uZWN0aW9uLCBNZXNzYWdlVHlwZShyZXN1bHREYXRhKSwgMCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGJsb2JGaWxlUGF0aHMgPSByZXN1
bHREYXRhLnR5cGUoKSA9PSBXZWJDb3JlOjpJREJSZXN1bHRUeXBlOjpHZXRBbGxSZWNvcmRzU3Vj
Y2VzcyA/IHJlc3VsdERhdGEuZ2V0QWxsUmVzdWx0KCkuYWxsQmxvYkZpbGVQYXRocygpIDogcmVz
dWx0RGF0YS5nZXRSZXN1bHQoKS52YWx1ZSgpLmJsb2JGaWxlUGF0aHMoKTsKKyAgICBpZiAoYmxv
YkZpbGVQYXRocy5pc0VtcHR5KCkpIHsKKyAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKG1f
Y29ubmVjdGlvbiwgTWVzc2FnZVR5cGUocmVzdWx0RGF0YSksIDApOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwgTWVzc2Fn
ZVR5cGUocmVzdWx0RGF0YSksIDApOworfQorCit2b2lkIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9D
bGllbnQ6OmRpZERlbGV0ZURhdGFiYXNlKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmIHJl
c3VsdERhdGEpCit7CisgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwgTWVz
c2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6RGlkRGVsZXRlRGF0YWJhc2UocmVzdWx0
RGF0YSksIDApOworfQorCit2b2lkIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZE9w
ZW5EYXRhYmFzZShjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQorewor
ICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJJREJD
b25uZWN0aW9uVG9TZXJ2ZXI6OkRpZE9wZW5EYXRhYmFzZShyZXN1bHREYXRhKSwgMCk7Cit9CisK
K3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkU3RhcnRUcmFuc2FjdGlvbihj
b25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmll
ciwgY29uc3QgV2ViQ29yZTo6SURCRXJyb3ImIGVycm9yKQoreworICAgIElQQzo6Q29ubmVjdGlv
bjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6
OkRpZFN0YXJ0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZGVudGlmaWVyLCBlcnJvciksIDApOwor
fQorCit2b2lkIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZEFib3J0VHJhbnNhY3Rp
b24oY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50
aWZpZXIsIGNvbnN0IFdlYkNvcmU6OklEQkVycm9yJiBlcnJvcikKK3sKKyAgICBJUEM6OkNvbm5l
Y3Rpb246OnNlbmQobV9jb25uZWN0aW9uLCBNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2Vy
dmVyOjpEaWRBYm9ydFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgZXJyb3IpLCAw
KTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRDb21taXRUcmFu
c2FjdGlvbihjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9u
SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCRXJyb3ImIGVycm9yKQoreworICAgIElQQzo6
Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0aW9u
VG9TZXJ2ZXI6OkRpZENvbW1pdFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgZXJy
b3IpLCAwKTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRDcmVh
dGVPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQor
eworICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJJ
REJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZENyZWF0ZU9iamVjdFN0b3JlKHJlc3VsdERhdGEpLCAw
KTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWREZWxldGVPYmpl
Y3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAg
IElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJJREJDb25u
ZWN0aW9uVG9TZXJ2ZXI6OkRpZERlbGV0ZU9iamVjdFN0b3JlKHJlc3VsdERhdGEpLCAwKTsKK30K
Kwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRSZW5hbWVPYmplY3RTdG9y
ZShjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIElQQzo6
Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0aW9u
VG9TZXJ2ZXI6OkRpZFJlbmFtZU9iamVjdFN0b3JlKHJlc3VsdERhdGEpLCAwKTsKK30KKwordm9p
ZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRDbGVhck9iamVjdFN0b3JlKGNvbnN0
IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCit7CisgICAgSVBDOjpDb25uZWN0
aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwgTWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZl
cjo6RGlkQ2xlYXJPYmplY3RTdG9yZShyZXN1bHREYXRhKSwgMCk7Cit9CisKK3ZvaWQgSURCU3Rv
cmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkQ3JlYXRlSW5kZXgoY29uc3QgV2ViQ29yZTo6SURC
UmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQobV9j
b25uZWN0aW9uLCBNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWRDcmVhdGVJ
bmRleChyZXN1bHREYXRhKSwgMCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0Ns
aWVudDo6ZGlkRGVsZXRlSW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYgcmVzdWx0
RGF0YSkKK3sKKyAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQobV9jb25uZWN0aW9uLCBNZXNzYWdl
czo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWREZWxldGVJbmRleChyZXN1bHREYXRhKSwg
MCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkUmVuYW1lSW5k
ZXgoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBJUEM6
OkNvbm5lY3Rpb246OnNlbmQobV9jb25uZWN0aW9uLCBNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlv
blRvU2VydmVyOjpEaWRSZW5hbWVJbmRleChyZXN1bHREYXRhKSwgMCk7Cit9CisKK3ZvaWQgSURC
U3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkUHV0T3JBZGQoY29uc3QgV2ViQ29yZTo6SURC
UmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQobV9j
b25uZWN0aW9uLCBNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWRQdXRPckFk
ZChyZXN1bHREYXRhKSwgMCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVu
dDo6ZGlkR2V0UmVjb3JkKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEp
Cit7CisgICAgZGlkR2V0UmVzdWx0PE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6
OkRpZEdldFJlY29yZD4ocmVzdWx0RGF0YSk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rp
b25Ub0NsaWVudDo6ZGlkR2V0QWxsUmVjb3Jkcyhjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRh
JiByZXN1bHREYXRhKQoreworICAgIGRpZEdldFJlc3VsdDxNZXNzYWdlczo6V2ViSURCQ29ubmVj
dGlvblRvU2VydmVyOjpEaWRHZXRBbGxSZWNvcmRzPihyZXN1bHREYXRhKTsKK30KKwordm9pZCBJ
REJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRHZXRDb3VudChjb25zdCBXZWJDb3JlOjpJ
REJSZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZCht
X2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZEdldENv
dW50KHJlc3VsdERhdGEpLCAwKTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xp
ZW50OjpkaWREZWxldGVSZWNvcmQoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYgcmVzdWx0
RGF0YSkKK3sKKyAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQobV9jb25uZWN0aW9uLCBNZXNzYWdl
czo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWREZWxldGVSZWNvcmQocmVzdWx0RGF0YSks
IDApOworfQorCit2b2lkIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZE9wZW5DdXJz
b3IoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBkaWRH
ZXRSZXN1bHQ8TWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6RGlkT3BlbkN1cnNv
cj4ocmVzdWx0RGF0YSk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6
ZGlkSXRlcmF0ZUN1cnNvcihjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJiByZXN1bHREYXRh
KQoreworICAgIGRpZEdldFJlc3VsdDxNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVy
OjpEaWRJdGVyYXRlQ3Vyc29yPihyZXN1bHREYXRhKTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29u
bmVjdGlvblRvQ2xpZW50OjpkaWRHZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMoY29uc3Qg
V2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OklEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24+JiBkYXRhYmFzZXMpCit7
CisgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwgTWVzc2FnZXM6OldlYklE
QkNvbm5lY3Rpb25Ub1NlcnZlcjo6RGlkR2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKHJl
cXVlc3RJZGVudGlmaWVyLCBkYXRhYmFzZXMpLCAwKTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29u
bmVjdGlvblRvQ2xpZW50OjpmaXJlVmVyc2lvbkNoYW5nZUV2ZW50KFdlYkNvcmU6OklEQlNlcnZl
cjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3Jl
OjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCByZXF1
ZXN0ZWRWZXJzaW9uKQoreworICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24s
IE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkZpcmVWZXJzaW9uQ2hhbmdlRXZl
bnQoY29ubmVjdGlvbi5pZGVudGlmaWVyKCksIHJlcXVlc3RJZGVudGlmaWVyLCByZXF1ZXN0ZWRW
ZXJzaW9uKSwgMCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlk
Q2xvc2VGcm9tU2VydmVyKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpJREJFcnJvciYgZXJyb3IpCit7Cisg
ICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwgTWVzc2FnZXM6OldlYklEQkNv
bm5lY3Rpb25Ub1NlcnZlcjo6RGlkQ2xvc2VGcm9tU2VydmVyKGNvbm5lY3Rpb24uaWRlbnRpZmll
cigpLCBlcnJvciksIDApOworfQorCit2b2lkIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6
Om5vdGlmeU9wZW5EQlJlcXVlc3RCbG9ja2VkKGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRl
bnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IG9sZFZlcnNpb24sIHVpbnQ2NF90
IG5ld1ZlcnNpb24pCit7CisgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwg
TWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Tm90aWZ5T3BlbkRCUmVxdWVzdEJs
b2NrZWQocmVxdWVzdElkZW50aWZpZXIsIG9sZFZlcnNpb24sIG5ld1ZlcnNpb24pLCAwKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGll
bnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41MGJhMDFiMDIxMjBmMjFkYjYxMzkxZjNhODc0NGQyMmI1ZmY3MGU0
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdl
L0lEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQuaApAQCAtMCwwICsxLDc3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE2LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNs
dWRlIDxXZWJDb3JlL0lEQkNvbm5lY3Rpb25Ub0NsaWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
SURCQ29ubmVjdGlvblRvQ2xpZW50RGVsZWdhdGUuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2NsYXNzIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQgZmluYWwgOiBwdWJsaWMgV2ViQ29y
ZTo6SURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnREZWxlZ2F0ZSB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0Ns
aWVudChJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBXZWJDb3JlOjpJREJDb25uZWN0aW9uSWRl
bnRpZmllcik7CisgICAgfklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQoKTsKKworICAgIFdl
YkNvcmU6OklEQkNvbm5lY3Rpb25JZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKyAgICBJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGlw
Y0Nvbm5lY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2Nvbm5lY3Rpb247IH0KKyAgICBXZWJDb3Jl
OjpJREJTZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub0NsaWVudCYgY29ubmVjdGlvblRvQ2xpZW50KCk7
CisKK3ByaXZhdGU6CisgICAgdGVtcGxhdGU8Y2xhc3MgTWVzc2FnZVR5cGU+IHZvaWQgZGlkR2V0
UmVzdWx0KGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKTsKKworICAgIC8vIElEQkNvbm5l
Y3Rpb25Ub0NsaWVudERlbGVnYXRlCisgICAgdm9pZCBkaWREZWxldGVEYXRhYmFzZShjb25zdCBX
ZWJDb3JlOjpJREJSZXN1bHREYXRhJikgZmluYWw7CisgICAgdm9pZCBkaWRPcGVuRGF0YWJhc2Uo
Y29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkQWJvcnRU
cmFuc2FjdGlvbihjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0
aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCRXJyb3ImKSBmaW5hbDsKKyAgICB2b2lk
IGRpZENvbW1pdFRyYW5zYWN0aW9uKGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmll
ciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJREJFcnJvciYpIGZpbmFs
OworICAgIHZvaWQgZGlkU3RhcnRUcmFuc2FjdGlvbihjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJj
ZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCRXJy
b3ImKSBmaW5hbDsKKyAgICB2b2lkIGRpZENyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6
OklEQlJlc3VsdERhdGEmKSBmaW5hbDsKKyAgICB2b2lkIGRpZERlbGV0ZU9iamVjdFN0b3JlKGNv
bnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlbmFtZU9i
amVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBmaW5hbDsKKyAgICB2b2lk
IGRpZENsZWFyT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFs
OworICAgIHZvaWQgZGlkQ3JlYXRlSW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYp
IGZpbmFsOworICAgIHZvaWQgZGlkRGVsZXRlSW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0
RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVuYW1lSW5kZXgoY29uc3QgV2ViQ29yZTo6SURC
UmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkUHV0T3JBZGQoY29uc3QgV2ViQ29yZTo6
SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkR2V0UmVjb3JkKGNvbnN0IFdlYkNv
cmU6OklEQlJlc3VsdERhdGEmKSBmaW5hbDsKKyAgICB2b2lkIGRpZEdldEFsbFJlY29yZHMoY29u
c3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkR2V0Q291bnQo
Y29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkRGVsZXRl
UmVjb3JkKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBmaW5hbDsKKyAgICB2b2lkIGRp
ZE9wZW5DdXJzb3IoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZv
aWQgZGlkSXRlcmF0ZUN1cnNvcihjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJikgZmluYWw7
CisgICAgdm9pZCBkaWRHZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMoY29uc3QgV2ViQ29y
ZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OklEQkRhdGFi
YXNlTmFtZUFuZFZlcnNpb24+JikgZmluYWw7CisgICAgdm9pZCBub3RpZnlPcGVuREJSZXF1ZXN0
QmxvY2tlZChjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVu
dGlmaWVyLCB1aW50NjRfdCBvbGRWZXJzaW9uLCB1aW50NjRfdCBuZXdWZXJzaW9uKSBmaW5hbDsK
KyAgICB2b2lkIGZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlx
dWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50
aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCByZXF1ZXN0ZWRWZXJzaW9uKSBmaW5h
bDsKKyAgICB2b2lkIGRpZENsb3NlRnJvbVNlcnZlcihXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1
ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OklEQkVycm9yJikgZmluYWw7
CisKKyAgICBJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIG1fY29ubmVjdGlvbjsKKyAgICBXZWJD
b3JlOjpJREJDb25uZWN0aW9uSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CisgICAgUmVmPFdlYkNv
cmU6OklEQlNlcnZlcjo6SURCQ29ubmVjdGlvblRvQ2xpZW50PiBtX2Nvbm5lY3Rpb25Ub0NsaWVu
dDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlTWFuYWdlci5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYmI3M2M4NzQ5MTVjNWI4ZDljNGVmNDUzM2I5ODFmMTRhOWNlNjdlMAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdl
TWFuYWdlci5jcHAKQEAgLTAsMCArMSwyNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiSURCU3RvcmFnZU1hbmFnZXIuaCIKKworI2luY2x1ZGUgIklEQlN0
b3JhZ2VSZWdpc3RyeS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvSURCUmVxdWVzdERhdGEuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvU1FMaXRlRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlSURCQmFja2lu
Z1N0b3JlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VbmlxdWVJREJEYXRhYmFzZS5oPgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworc3RhdGljIHZvaWQgbWlncmF0ZU9yaWdpbkRhdGEoY29uc3QgU3Ry
aW5nJiBvbGRPcmlnaW5EaXJlY3RvcnksIGNvbnN0IFN0cmluZyYgbmV3T3JpZ2luRGlyZWN0b3J5
KQoreworICAgIGlmICghRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhvbGRPcmlnaW5EaXJlY3Rvcnkp
KQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGZpbGVOYW1lcyA9IEZpbGVTeXN0ZW06Omxp
c3REaXJlY3Rvcnkob2xkT3JpZ2luRGlyZWN0b3J5KTsKKyAgICBpZiAoIWZpbGVOYW1lcy5pc0Vt
cHR5KCkpCisgICAgICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhuZXdPcmlnaW5E
aXJlY3RvcnkpOworCisgICAgZm9yIChhdXRvJiBuYW1lIDogZmlsZU5hbWVzKSB7CisgICAgICAg
IFN0cmluZyBjaGlsZFBhdGggPSBGaWxlU3lzdGVtOjpyZWFsUGF0aChGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQob2xkT3JpZ2luRGlyZWN0b3J5LCBuYW1lKSk7CisgICAgICAg
IFN0cmluZyBuZXdOYW1lID0gV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0ZUhhc2hG
b3JGaWxlTmFtZShXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVj
b2RlRGF0YWJhc2VOYW1lKG5hbWUpKTsKKyAgICAgICAgYXV0byBuZXdDaGlsZFBhdGggPSBGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobmV3T3JpZ2luRGlyZWN0b3J5LCBuZXdO
YW1lKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6bW92ZUZpbGUoY2hpbGRQYXRoLCBuZXdDaGlsZFBh
dGgpOworICAgIH0KKworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KG9sZE9y
aWdpbkRpcmVjdG9yeSk7Cit9CisKK1N0cmluZyBJREJTdG9yYWdlTWFuYWdlcjo6aWRiU3RvcmFn
ZU9yaWdpbkRpcmVjdG9yeShjb25zdCBTdHJpbmcmIHJvb3REaXJlY3RvcnksIGNvbnN0IFdlYkNv
cmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luKQoreworICAgIGlmIChyb290RGlyZWN0b3J5LmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisKKyAgICBTdHJpbmcgb3JpZ2lu
RGlyZWN0b3J5ID0gV2ViQ29yZTo6SURCRGF0YWJhc2VJZGVudGlmaWVyOjpkYXRhYmFzZURpcmVj
dG9yeVJlbGF0aXZlVG9Sb290KG9yaWdpbi50b3BPcmlnaW4sIG9yaWdpbi5jbGllbnRPcmlnaW4s
IHJvb3REaXJlY3RvcnksICJ2MSIpOworICAgIFN0cmluZyBvbGRPcmlnaW5EaXJlY3RvcnkgPSBX
ZWJDb3JlOjpJREJEYXRhYmFzZUlkZW50aWZpZXI6OmRhdGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVU
b1Jvb3Qob3JpZ2luLnRvcE9yaWdpbiwgb3JpZ2luLmNsaWVudE9yaWdpbiwgcm9vdERpcmVjdG9y
eSwgInYwIik7CisgICAgbWlncmF0ZU9yaWdpbkRhdGEob2xkT3JpZ2luRGlyZWN0b3J5LCBvcmln
aW5EaXJlY3RvcnkpOworCisgICAgcmV0dXJuIG9yaWdpbkRpcmVjdG9yeTsKK30KKwordWludDY0
X3QgSURCU3RvcmFnZU1hbmFnZXI6OmlkYlN0b3JhZ2VTaXplKGNvbnN0IFN0cmluZyYgb3JpZ2lu
RGlyZWN0b3J5KQoreworICAgIGlmIChvcmlnaW5EaXJlY3RvcnkuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm4gMDsKKworICAgIHJldHVybiBXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6ZGF0YWJhc2VzU2l6ZUZvckRpcmVjdG9yeShvcmlnaW5EaXJlY3RvcnkpOwor
fQorCitzdGF0aWMgdm9pZCBnZXRPcmlnaW5zRm9yVmVyc2lvbihjb25zdCBTdHJpbmcmIHZlcnNp
b25QYXRoLCBIYXNoU2V0PFdlYkNvcmU6OkNsaWVudE9yaWdpbj4mIG9yaWdpbnMpCit7CisgICAg
Zm9yIChhdXRvJiB0b3BEYXRhYmFzZUlkZW50aWZpZXIgOiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0
b3J5KHZlcnNpb25QYXRoKSkgeworICAgICAgICBhdXRvIHRvcE9yaWdpbiA9IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmllcih0b3BEYXRhYmFzZUlkZW50
aWZpZXIpOworICAgICAgICBpZiAoIXRvcE9yaWdpbikKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
CisgICAgICAgIGF1dG8gdG9wT3JpZ2luRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KHZlcnNpb25QYXRoLCB0b3BEYXRhYmFzZUlkZW50aWZpZXIpOworICAg
ICAgICBmb3IgKGF1dG8mIGRhdGFiYXNlSWRlbnRpZmllciA6IEZpbGVTeXN0ZW06Omxpc3REaXJl
Y3RvcnkodG9wT3JpZ2luRGlyZWN0b3J5KSkgeworICAgICAgICAgICAgYXV0byBvcmlnaW5EaXJl
Y3RvcnkgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodG9wT3JpZ2luRGly
ZWN0b3J5LCBkYXRhYmFzZUlkZW50aWZpZXIpOworICAgICAgICAgICAgaWYgKEZpbGVTeXN0ZW06
OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KG9yaWdpbkRpcmVjdG9yeSkpCisgICAgICAgICAgICAgICAg
Y29udGludWU7CisKKyAgICAgICAgICAgIGF1dG8gY2xpZW50T3JpZ2luID0gV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKGRhdGFiYXNlSWRlbnRpZmll
cik7CisgICAgICAgICAgICAvLyBUaGlzIGlzIG5vdCBvcmlnaW4gZGlyZWN0b3J5LCBidXQgbWF5
IGJlIGRhdGFiYXNlIGRpcmVjdG9yeS4KKyAgICAgICAgICAgIGlmICghY2xpZW50T3JpZ2luKSB7
CisgICAgICAgICAgICAgICAgb3JpZ2lucy5hZGQoV2ViQ29yZTo6Q2xpZW50T3JpZ2luIHsgKnRv
cE9yaWdpbiwgKnRvcE9yaWdpbiB9KTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgb3JpZ2lucy5hZGQoV2ViQ29yZTo6Q2xpZW50T3JpZ2lu
IHsgKnRvcE9yaWdpbiwgKmNsaWVudE9yaWdpbiB9KTsKKyAgICAgICAgfQorCisgICAgICAgIC8v
IFdlIG1heSBoYXZlIGRlbGV0ZWQgZW1wdHkgY2hpbGRyZW4gZGlyZWN0b3JpZXMgYWJvdmUsIHdo
aWNoIG1ha2UgdGhpcyBkaXJlY3RvcnkgZW1wdHkuCisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0
ZUVtcHR5RGlyZWN0b3J5KHRvcE9yaWdpbkRpcmVjdG9yeSk7CisgICAgfQorfQorCitIYXNoU2V0
PFdlYkNvcmU6OkNsaWVudE9yaWdpbj4gSURCU3RvcmFnZU1hbmFnZXI6Om9yaWdpbnNPZklEQlN0
b3JhZ2VEYXRhKGNvbnN0IFN0cmluZyYgcm9vdERpcmVjdG9yeSkKK3sKKyAgICBIYXNoU2V0PFdl
YkNvcmU6OkNsaWVudE9yaWdpbj4gb3JpZ2luczsKKyAgICBpZiAocm9vdERpcmVjdG9yeS5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybiBvcmlnaW5zOworCisgICAgZ2V0T3JpZ2luc0ZvclZlcnNp
b24oRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJvb3REaXJlY3RvcnksICJ2
MCIpLCBvcmlnaW5zKTsKKyAgICBnZXRPcmlnaW5zRm9yVmVyc2lvbihGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQocm9vdERpcmVjdG9yeSwgInYxIiksIG9yaWdpbnMpOworCisg
ICAgcmV0dXJuIG9yaWdpbnM7Cit9CisKK0lEQlN0b3JhZ2VNYW5hZ2VyOjpJREJTdG9yYWdlTWFu
YWdlcihjb25zdCBTdHJpbmcmIHBhdGgsIElEQlN0b3JhZ2VSZWdpc3RyeSYgcmVnaXN0cnksIFF1
b3RhQ2hlY2tGdW5jdGlvbiYmIHF1b3RhQ2hlY2tGdW5jdGlvbikKKyAgICA6IG1fcGF0aChwYXRo
KQorICAgICwgbV9yZWdpc3RyeShyZWdpc3RyeSkKKyAgICAsIG1fcXVvdGFDaGVja0Z1bmN0aW9u
KFdURk1vdmUocXVvdGFDaGVja0Z1bmN0aW9uKSkKK3sKK30KKworYm9vbCBJREJTdG9yYWdlTWFu
YWdlcjo6aXNBY3RpdmUoKSBjb25zdAoreworICAgIHJldHVybiAhbV9kYXRhYmFzZXMuaXNFbXB0
eSgpOworfQorCitib29sIElEQlN0b3JhZ2VNYW5hZ2VyOjpoYXNEYXRhSW5NZW1vcnkoKSBjb25z
dAoreworICAgIHJldHVybiBXVEY6OmFueU9mKG1fZGF0YWJhc2VzLnZhbHVlcygpLCBbJl0gKGF1
dG8mIGRhdGFiYXNlKSB7CisgICAgICAgIHJldHVybiBkYXRhYmFzZS0+aGFzRGF0YUluTWVtb3J5
KCk7CisgICAgfSk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZU1hbmFnZXI6OmNsb3NlRGF0YWJhc2Vz
Rm9yRGVsZXRpb24oKQoreworICAgIGZvciAoYXV0byYgZGF0YWJhc2UgOiBtX2RhdGFiYXNlcy52
YWx1ZXMoKSkKKyAgICAgICAgZGF0YWJhc2UtPmltbWVkaWF0ZUNsb3NlKCk7CisKKyAgICBtX2Rh
dGFiYXNlcy5jbGVhcigpOworfQorCit2b2lkIElEQlN0b3JhZ2VNYW5hZ2VyOjpzdG9wRGF0YWJh
c2VBY3Rpdml0aWVzRm9yU3VzcGVuZCgpCit7CisgICAgaWYgKG1fcGF0aC5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIGZvciAoYXV0byYgZGF0YWJhc2UgOiBtX2RhdGFiYXNlcy52
YWx1ZXMoKSkgeworICAgICAgICAvLyBPbmx5IHN0b3AgZGF0YWJhc2VzIHdpdGggbm9uLWVwaGVt
ZXJhbCBiYWNraW5nIHN0b3JlIHRoYXQgY2FuIGhvbGQgZGF0YWJhc2UgZmlsZSBsb2NrLgorICAg
ICAgICBpZiAoIWRhdGFiYXNlLT5pZGVudGlmaWVyKCkuaXNUcmFuc2llbnQoKSkKKyAgICAgICAg
ICAgIGRhdGFiYXNlLT5hYm9ydEFjdGl2ZVRyYW5zYWN0aW9ucygpOworICAgIH0KK30KKworV2Vi
Q29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZSYgSURCU3RvcmFnZU1hbmFnZXI6Omdl
dE9yQ3JlYXRlVW5pcXVlSURCRGF0YWJhc2UoY29uc3QgV2ViQ29yZTo6SURCRGF0YWJhc2VJZGVu
dGlmaWVyJiBpZGVudGlmaWVyKQoreworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9kYXRhYmFzZXMu
YWRkKGlkZW50aWZpZXIsIG51bGxwdHIpOworICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkK
KyAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6
SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZT4oKnRoaXMsIGlkZW50aWZpZXIpOworCisgICAg
cmV0dXJuICphZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOworfQorCit2b2lkIElEQlN0b3JhZ2VN
YW5hZ2VyOjpvcGVuRGF0YWJhc2UoV2ViQ29yZTo6SURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9D
bGllbnQmIGNvbm5lY3Rpb25Ub0NsaWVudCwgY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEm
IHJlcXVlc3REYXRhKQoreworICAgIGF1dG8mIGRhdGFiYXNlID0gZ2V0T3JDcmVhdGVVbmlxdWVJ
REJEYXRhYmFzZShyZXF1ZXN0RGF0YS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAgZGF0YWJh
c2Uub3BlbkRhdGFiYXNlQ29ubmVjdGlvbihjb25uZWN0aW9uVG9DbGllbnQsIHJlcXVlc3REYXRh
KTsKK30KKwordm9pZCBJREJTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlRGF0YWJhc2UoV2ViQ29yZTo6
SURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnQmIGNvbm5lY3Rpb25Ub0NsaWVudCwgY29u
c3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhKQoreworICAgIGF1dG8mIGRh
dGFiYXNlID0gZ2V0T3JDcmVhdGVVbmlxdWVJREJEYXRhYmFzZShyZXF1ZXN0RGF0YS5kYXRhYmFz
ZUlkZW50aWZpZXIoKSk7CisgICAgZGF0YWJhc2UuaGFuZGxlRGVsZXRlKGNvbm5lY3Rpb25Ub0Ns
aWVudCwgcmVxdWVzdERhdGEpOworCisgICAgLy8gVGhpcyBkYXRhYmFzZSBpcyBjcmVhdGVkIGZv
ciBkZWxldGlvbi4KKyAgICBpZiAoZGF0YWJhc2UudHJ5Q2xvc2UoKSkKKyAgICAgICAgbV9kYXRh
YmFzZXMucmVtb3ZlKGRhdGFiYXNlLmlkZW50aWZpZXIoKSk7Cit9CisKK1ZlY3RvcjxXZWJDb3Jl
OjpJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiBJREJTdG9yYWdlTWFuYWdlcjo6Z2V0QWxsRGF0
YWJhc2VOYW1lc0FuZFZlcnNpb25zKCkKK3sKKyAgICBWZWN0b3I8V2ViQ29yZTo6SURCRGF0YWJh
c2VOYW1lQW5kVmVyc2lvbj4gcmVzdWx0OworICAgIEhhc2hTZXQ8U3RyaW5nPiB2aXNpdGVkRGF0
YWJhc2VQYXRoczsKKyAgICBmb3IgKGF1dG8mIGRhdGFiYXNlIDogbV9kYXRhYmFzZXMudmFsdWVz
KCkpIHsKKyAgICAgICAgYXV0byBwYXRoID0gZGF0YWJhc2UtPmZpbGVQYXRoKCk7CisgICAgICAg
IGlmICghcGF0aC5pc0VtcHR5KCkpCisgICAgICAgICAgICB2aXNpdGVkRGF0YWJhc2VQYXRocy5h
ZGQocGF0aCk7CisKKyAgICAgICAgaWYgKGF1dG8gbmFtZUFuZFZlcnNpb24gPSBkYXRhYmFzZS0+
bmFtZUFuZFZlcnNpb24oKSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoV1RGTW92ZSgqbmFt
ZUFuZFZlcnNpb24pKTsKKyAgICB9CisKKyAgICBhdXRvIGRhdGFiYXNlSWRlbnRpZmllcnMgPSBG
aWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KG1fcGF0aCk7CisgICAgZm9yIChhdXRvIGlkZW50aWZp
ZXIgOiBkYXRhYmFzZUlkZW50aWZpZXJzKSB7CisgICAgICAgIGF1dG8gZGF0YWJhc2VEaXJlY3Rv
cnkgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9wYXRoLCBpZGVudGlm
aWVyKTsKKyAgICAgICAgYXV0byBkYXRhYmFzZVBhdGggPSBXZWJDb3JlOjpJREJTZXJ2ZXI6OlNR
TGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZnVsbERhdGFiYXNlUGF0aEZvckRpcmVjdG9yeShkYXRhYmFz
ZURpcmVjdG9yeSk7CisgICAgICAgIGlmICh2aXNpdGVkRGF0YWJhc2VQYXRocy5jb250YWlucyhk
YXRhYmFzZVBhdGgpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKGF1dG8g
bmFtZUFuZFZlcnNpb24gPSBXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6ZGF0YWJhc2VOYW1lQW5kVmVyc2lvbkZyb21GaWxlKGRhdGFiYXNlUGF0aCkpCisgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKFdURk1vdmUoKm5hbWVBbmRWZXJzaW9uKSk7CisgICAgfQorCisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBJREJTdG9yYWdlTWFuYWdlcjo6b3BlbkRCUmVx
dWVzdENhbmNlbGxlZChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEp
Cit7CisgICAgYXV0byogZGF0YWJhc2UgPSBtX2RhdGFiYXNlcy5nZXQocmVxdWVzdERhdGEuZGF0
YWJhc2VJZGVudGlmaWVyKCkpOworICAgIGlmICghZGF0YWJhc2UpCisgICAgICAgIHJldHVybjsK
KworICAgIGRhdGFiYXNlLT5vcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKHJlcXVlc3REYXRhLnJlcXVl
c3RJZGVudGlmaWVyKCkpOworCisgICAgLy8gRGF0YWJhc2UgYmVjb21lcyBpZGxlIGFmdGVyIHJl
cXVlc3QgaXMgY2FuY2VsbGVkLgorICAgIGlmIChkYXRhYmFzZS0+dHJ5Q2xvc2UoKSkKKyAgICAg
ICAgbV9kYXRhYmFzZXMucmVtb3ZlKGRhdGFiYXNlLT5pZGVudGlmaWVyKCkpOworfQorCit2b2lk
IElEQlN0b3JhZ2VNYW5hZ2VyOjpyZWdpc3RlckNvbm5lY3Rpb24oV2ViQ29yZTo6SURCU2VydmVy
OjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCit7CisgICAgbV9yZWdp
c3RyeS5yZWdpc3RlckNvbm5lY3Rpb24oY29ubmVjdGlvbik7Cit9CisKK3ZvaWQgSURCU3RvcmFn
ZU1hbmFnZXI6OnVucmVnaXN0ZXJDb25uZWN0aW9uKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVl
SURCRGF0YWJhc2VDb25uZWN0aW9uJiBjb25uZWN0aW9uKQoreworICAgIG1fcmVnaXN0cnkudW5y
ZWdpc3RlckNvbm5lY3Rpb24oY29ubmVjdGlvbik7Cit9CisKK3ZvaWQgSURCU3RvcmFnZU1hbmFn
ZXI6OnJlZ2lzdGVyVHJhbnNhY3Rpb24oV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRh
YmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKK3sKKyAgICBtX3JlZ2lzdHJ5LnJlZ2lzdGVy
VHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pOworfQorCit2b2lkIElEQlN0b3JhZ2VNYW5hZ2VyOjp1
bnJlZ2lzdGVyVHJhbnNhY3Rpb24oV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFz
ZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKK3sKKyAgICBtX3JlZ2lzdHJ5LnVucmVnaXN0ZXJU
cmFuc2FjdGlvbih0cmFuc2FjdGlvbik7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJ
REJTZXJ2ZXI6OklEQkJhY2tpbmdTdG9yZT4gSURCU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZUJhY2tp
bmdTdG9yZShjb25zdCBXZWJDb3JlOjpJREJEYXRhYmFzZUlkZW50aWZpZXImIGlkZW50aWZpZXIp
Cit7CisgICAgaWYgKG1fcGF0aC5pc0VtcHR5KCkgfHwgaWRlbnRpZmllci5pc1RyYW5zaWVudCgp
KQorICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeUlE
QkJhY2tpbmdTdG9yZT4oaWRlbnRpZmllcik7CisKKyAgICBhdXRvIG5hbWUgPSBXZWJDb3JlOjpT
UUxpdGVGaWxlU3lzdGVtOjpjb21wdXRlSGFzaEZvckZpbGVOYW1lKGlkZW50aWZpZXIuZGF0YWJh
c2VOYW1lKCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYkNvcmU6OklEQlNlcnZlcjo6U1FM
aXRlSURCQmFja2luZ1N0b3JlPihpZGVudGlmaWVyLCBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQobV9wYXRoLCBuYW1lKSk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZU1hbmFnZXI6
OnJlcXVlc3RTcGFjZShjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCB1aW50NjRfdCBzaXpl
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorewor
ICAgIG1fcXVvdGFDaGVja0Z1bmN0aW9uKHNpemUsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlTWFuYWdlci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmZkYzRmM2MxYzc3YzJlNWQyMzZlY2NiMDkxMDkxZmM1NjU1MGFlYzkKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZU1hbmFn
ZXIuaApAQCAtMCwwICsxLDgzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlIDxXZWJDb3JlL1VuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlci5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CitjbGFzcyBJREJSZXF1ZXN0RGF0YTsKKworbmFtZXNwYWNlIElEQlNlcnZlciB7Citj
bGFzcyBJREJCYWNraW5nU3RvcmU7CitjbGFzcyBJREJDb25uZWN0aW9uVG9DbGllbnQ7CitjbGFz
cyBVbmlxdWVJREJEYXRhYmFzZTsKK2NsYXNzIFVuaXF1ZUlEQlRyYW5zYWN0aW9uOworfQorCitz
dHJ1Y3QgSURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK2NsYXNzIElEQlN0b3JhZ2VSZWdpc3RyeTsKKworY2xhc3MgSURCU3RvcmFnZU1hbmFnZXIg
ZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZU1hbmFn
ZXIgeworcHVibGljOgorICAgIHN0YXRpYyBTdHJpbmcgaWRiU3RvcmFnZU9yaWdpbkRpcmVjdG9y
eShjb25zdCBTdHJpbmcmIHJvb3REaXJlY3RvcnksIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdp
biYpOworICAgIHN0YXRpYyB1aW50NjRfdCBpZGJTdG9yYWdlU2l6ZShjb25zdCBTdHJpbmcmIG9y
aWdpbkRpcmVjdG9yeSk7CisgICAgc3RhdGljIEhhc2hTZXQ8V2ViQ29yZTo6Q2xpZW50T3JpZ2lu
PiBvcmlnaW5zT2ZJREJTdG9yYWdlRGF0YShjb25zdCBTdHJpbmcmIHJvb3REaXJlY3RvcnkpOwor
CisgICAgdXNpbmcgUXVvdGFDaGVja0Z1bmN0aW9uID0gRnVuY3Rpb248dm9pZCh1aW50NjRfdCBz
cGFjZVJlcXVlc3RlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik+OworICAgIElE
QlN0b3JhZ2VNYW5hZ2VyKGNvbnN0IFN0cmluZyYgcGF0aCwgSURCU3RvcmFnZVJlZ2lzdHJ5Jiwg
UXVvdGFDaGVja0Z1bmN0aW9uJiYpOworICAgIH5JREJTdG9yYWdlTWFuYWdlcigpIGZpbmFsIHsg
fQorICAgIGJvb2wgaXNBY3RpdmUoKSBjb25zdDsKKyAgICBib29sIGhhc0RhdGFJbk1lbW9yeSgp
IGNvbnN0OworICAgIHZvaWQgY2xvc2VEYXRhYmFzZXNGb3JEZWxldGlvbigpOworICAgIHZvaWQg
c3RvcERhdGFiYXNlQWN0aXZpdGllc0ZvclN1c3BlbmQoKTsKKworICAgIHZvaWQgb3BlbkRhdGFi
YXNlKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCQ29ubmVjdGlvblRvQ2xpZW50JiwgY29uc3QgV2Vi
Q29yZTo6SURCUmVxdWVzdERhdGEmKTsKKyAgICB2b2lkIG9wZW5EQlJlcXVlc3RDYW5jZWxsZWQo
Y29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmKTsKKyAgICB2b2lkIGRlbGV0ZURhdGFiYXNl
KFdlYkNvcmU6OklEQlNlcnZlcjo6SURCQ29ubmVjdGlvblRvQ2xpZW50JiwgY29uc3QgV2ViQ29y
ZTo6SURCUmVxdWVzdERhdGEmKTsKKyAgICBWZWN0b3I8V2ViQ29yZTo6SURCRGF0YWJhc2VOYW1l
QW5kVmVyc2lvbj4gZ2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKCk7CisKK3ByaXZhdGU6
CisgICAgV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZSYgZ2V0T3JDcmVhdGVV
bmlxdWVJREJEYXRhYmFzZShjb25zdCBXZWJDb3JlOjpJREJEYXRhYmFzZUlkZW50aWZpZXImKTsK
KworICAgIC8vIFdlYkNvcmU6OlVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlcgorICAgIHZvaWQgcmVn
aXN0ZXJDb25uZWN0aW9uKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25u
ZWN0aW9uJikgZmluYWw7CisgICAgdm9pZCB1bnJlZ2lzdGVyQ29ubmVjdGlvbihXZWJDb3JlOjpJ
REJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYpIGZpbmFsOworICAgIHZvaWQg
cmVnaXN0ZXJUcmFuc2FjdGlvbihXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNl
VHJhbnNhY3Rpb24mKSBmaW5hbDsKKyAgICB2b2lkIHVucmVnaXN0ZXJUcmFuc2FjdGlvbihXZWJD
b3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mKSBmaW5hbDsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SURCU2VydmVyOjpJREJCYWNraW5nU3RvcmU+IGNy
ZWF0ZUJhY2tpbmdTdG9yZShjb25zdCBXZWJDb3JlOjpJREJEYXRhYmFzZUlkZW50aWZpZXImKSBm
aW5hbDsKKyAgICB2b2lkIHJlcXVlc3RTcGFjZShjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4m
LCB1aW50NjRfdCBzaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsK
KworICAgIFN0cmluZyBtX3BhdGg7CisgICAgSURCU3RvcmFnZVJlZ2lzdHJ5JiBtX3JlZ2lzdHJ5
OworICAgIFF1b3RhQ2hlY2tGdW5jdGlvbiBtX3F1b3RhQ2hlY2tGdW5jdGlvbjsKKyAgICBIYXNo
TWFwPFdlYkNvcmU6OklEQkRhdGFiYXNlSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFdlYkNv
cmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U+PiBtX2RhdGFiYXNlczsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZVJlZ2lzdHJ5LmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNjNh
YjVlMjU1MTZlZTYwZjVmNjQwZjU1MWUxZjliYTFjOWVhNjFhCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VSZWdpc3RyeS5j
cHAKQEAgLTAsMCArMSwxMDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiSURCU3RvcmFnZVJlZ2lzdHJ5LmgiCisKKyNpbmNsdWRlICJJREJTdG9yYWdlQ29u
bmVjdGlvblRvQ2xpZW50LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9VbmlxdWVJREJEYXRhYmFzZUNv
bm5lY3Rpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rp
b24uaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK0lEQlN0b3JhZ2VSZWdpc3RyeTo6SURCU3Rv
cmFnZVJlZ2lzdHJ5KCkgPSBkZWZhdWx0OworCitXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQkNvbm5l
Y3Rpb25Ub0NsaWVudCYgSURCU3RvcmFnZVJlZ2lzdHJ5OjplbnN1cmVDb25uZWN0aW9uVG9DbGll
bnQoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uLCBXZWJDb3JlOjpJREJDb25u
ZWN0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9j
b25uZWN0aW9uc1RvQ2xpZW50LmFkZChpZGVudGlmaWVyLCBudWxscHRyKTsKKyAgICBpZiAoYWRk
UmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBt
YWtlVW5pcXVlPElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ+KGNvbm5lY3Rpb24sIGlkZW50
aWZpZXIpOworCisgICAgQVNTRVJUKGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPmlwY0Nvbm5l
Y3Rpb24oKSA9PSBjb25uZWN0aW9uKTsKKyAgICByZXR1cm4gYWRkUmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZS0+Y29ubmVjdGlvblRvQ2xpZW50KCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZVJlZ2lzdHJ5
OjpyZW1vdmVDb25uZWN0aW9uVG9DbGllbnQoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25u
ZWN0aW9uKQoreworICAgIGF1dG8gYWxsQ29ubmVjdGlvbnNUb0NsaWVudCA9IHN0ZDo6ZXhjaGFu
Z2UobV9jb25uZWN0aW9uc1RvQ2xpZW50LCB7IH0pOworICAgIGZvciAoYXV0byYgW2lkZW50aWZp
ZXIsIGNvbm5lY3Rpb25Ub0NsaWVudF0gOiBhbGxDb25uZWN0aW9uc1RvQ2xpZW50KSB7CisgICAg
ICAgIGlmIChjb25uZWN0aW9uVG9DbGllbnQtPmlwY0Nvbm5lY3Rpb24oKSAhPSBjb25uZWN0aW9u
KSB7CisgICAgICAgICAgICBtX2Nvbm5lY3Rpb25zVG9DbGllbnQuYWRkKGlkZW50aWZpZXIsIFdU
Rk1vdmUoY29ubmVjdGlvblRvQ2xpZW50KSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgfQorICAgICAgICBjb25uZWN0aW9uVG9DbGllbnQtPmNvbm5lY3Rpb25Ub0NsaWVudCgpLmNv
bm5lY3Rpb25Ub0NsaWVudENsb3NlZCgpOworICAgIH0KK30KKwordm9pZCBJREJTdG9yYWdlUmVn
aXN0cnk6OnJlZ2lzdGVyQ29ubmVjdGlvbihXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRh
dGFiYXNlQ29ubmVjdGlvbiYgY29ubmVjdGlvbikKK3sKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBj
b25uZWN0aW9uLmlkZW50aWZpZXIoKTsKKyAgICBBU1NFUlQoIW1fY29ubmVjdGlvbnMuY29udGFp
bnMoaWRlbnRpZmllcikpOworCisgICAgbV9jb25uZWN0aW9ucy5hZGQoaWRlbnRpZmllciwgY29u
bmVjdGlvbik7Cit9CisKK3ZvaWQgSURCU3RvcmFnZVJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQ29ubmVj
dGlvbihXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYgY29u
bmVjdGlvbikKK3sKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBjb25uZWN0aW9uLmlkZW50aWZpZXIo
KTsKKyAgICBBU1NFUlQobV9jb25uZWN0aW9ucy5jb250YWlucyhpZGVudGlmaWVyKSk7CisKKyAg
ICBtX2Nvbm5lY3Rpb25zLnJlbW92ZShpZGVudGlmaWVyKTsKK30KKwordm9pZCBJREJTdG9yYWdl
UmVnaXN0cnk6OnJlZ2lzdGVyVHJhbnNhY3Rpb24oV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJ
REJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKK3sKKyAgICBhdXRvIGlkZW50aWZp
ZXIgPSB0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpOworICAgIEFTU0VSVCghbV90cmFu
c2FjdGlvbnMuY29udGFpbnMoaWRlbnRpZmllcikpOworCisgICAgbV90cmFuc2FjdGlvbnMuYWRk
KGlkZW50aWZpZXIsIHRyYW5zYWN0aW9uKTsKK30KKwordm9pZCBJREJTdG9yYWdlUmVnaXN0cnk6
OnVucmVnaXN0ZXJUcmFuc2FjdGlvbihXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFi
YXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQoreworICAgIGF1dG8gaWRlbnRpZmllciA9IHRy
YW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCk7CisgICAgQVNTRVJUKG1fdHJhbnNhY3Rpb25z
LmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKKworICAgIG1fdHJhbnNhY3Rpb25zLnJlbW92ZShpZGVu
dGlmaWVyKTsKK30KKworV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5l
Y3Rpb24qIElEQlN0b3JhZ2VSZWdpc3RyeTo6Y29ubmVjdGlvbih1aW50NjRfdCBpZGVudGlmaWVy
KQoreworICAgIHJldHVybiBtX2Nvbm5lY3Rpb25zLmdldChpZGVudGlmaWVyKS5nZXQoKTsKK30K
KworV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uKiBJREJT
dG9yYWdlUmVnaXN0cnk6OnRyYW5zYWN0aW9uKFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmll
ciBpZGVudGlmaWVyKQoreworICAgIHJldHVybiBtX3RyYW5zYWN0aW9ucy5nZXQoaWRlbnRpZmll
cikuZ2V0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VSZWdpc3RyeS5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VSZWdpc3RyeS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjIzODRkY2Y0ZjYxODY4N2JlNmMyNGVlMzI2M2NhNDhmODg3ODc2YWEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3Rv
cmFnZVJlZ2lzdHJ5LmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgPFdlYkNvcmUvSURCUmVzb3Vy
Y2VJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworbmFtZXNwYWNlIElEQlNlcnZlciB7CitjbGFzcyBVbmlxdWVJREJEYXRhYmFzZUNv
bm5lY3Rpb247CitjbGFzcyBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOworfQorfQorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDsK
KworY2xhc3MgSURCU3RvcmFnZVJlZ2lzdHJ5IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKK3B1YmxpYzoKKyAgICBJREJTdG9yYWdlUmVnaXN0cnkoKTsKKyAgICBXZWJDb3JlOjpJREJT
ZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub0NsaWVudCYgZW5zdXJlQ29ubmVjdGlvblRvQ2xpZW50KElQ
Qzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIFdlYkNvcmU6OklEQkNvbm5lY3Rpb25JZGVudGlmaWVy
KTsKKyAgICB2b2lkIHJlbW92ZUNvbm5lY3Rpb25Ub0NsaWVudChJUEM6OkNvbm5lY3Rpb246OlVu
aXF1ZUlEKTsKKyAgICB2b2lkIHJlZ2lzdGVyQ29ubmVjdGlvbihXZWJDb3JlOjpJREJTZXJ2ZXI6
OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYpOworICAgIHZvaWQgdW5yZWdpc3RlckNvbm5l
Y3Rpb24oV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mKTsK
KyAgICBXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiogY29u
bmVjdGlvbih1aW50NjRfdCBpZGVudGlmaWVyKTsKKyAgICB2b2lkIHJlZ2lzdGVyVHJhbnNhY3Rp
b24oV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJik7Cisg
ICAgdm9pZCB1bnJlZ2lzdGVyVHJhbnNhY3Rpb24oV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJ
REJEYXRhYmFzZVRyYW5zYWN0aW9uJik7CisgICAgV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJ
REJEYXRhYmFzZVRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbihXZWJDb3JlOjpJREJSZXNvdXJjZUlk
ZW50aWZpZXIpOworCitwcml2YXRlOgorICAgIEhhc2hNYXA8V2ViQ29yZTo6SURCQ29ubmVjdGlv
bklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50
Pj4gbV9jb25uZWN0aW9uc1RvQ2xpZW50OworICAgIEhhc2hNYXA8dWludDY0X3QsIFdlYWtQdHI8
V2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24+PiBtX2Nvbm5l
Y3Rpb25zOworICAgIEhhc2hNYXA8V2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyLCBXZWFr
UHRyPFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbj4+IG1f
dHJhbnNhY3Rpb25zOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2Vy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFn
ZU1hbmFnZXIuY3BwCmluZGV4IDgxM2U2ZTk1YTEzYWJlMzkxODZkMTliMmRhYjI4N2JiYjU1MjRm
NzkuLmQyYjdlMTY2ODc5MGYxNmQ2YmY0ODQyOWVjMGMxZWM3ZjQzNWQ1YWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFn
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3Jr
U3RvcmFnZU1hbmFnZXIuY3BwCkBAIC0yNiwxOCArMjYsMjYgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJOZXR3b3JrU3RvcmFnZU1hbmFnZXIuaCIKIAorI2luY2x1ZGUgIkNhY2hl
U3RvcmFnZUVuZ2luZS5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0
cnkuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIuaCIKKyNpbmNsdWRlICJJ
REJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50LmgiCisjaW5jbHVkZSAiSURCU3RvcmFnZU1hbmFn
ZXIuaCIKKyNpbmNsdWRlICJJREJTdG9yYWdlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJMb2NhbFN0
b3JhZ2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk5ldHdvcmtQ
cm9jZXNzUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtTdG9yYWdlTWFuYWdlck1l
c3NhZ2VzLmgiCiAjaW5jbHVkZSAiT3JpZ2luU3RvcmFnZU1hbmFnZXIuaCIKKyNpbmNsdWRlICJR
dW90YU1hbmFnZXIuaCIKICNpbmNsdWRlICJTZXNzaW9uU3RvcmFnZU1hbmFnZXIuaCIKICNpbmNs
dWRlICJTdG9yYWdlQXJlYUJhc2UuaCIKICNpbmNsdWRlICJTdG9yYWdlQXJlYU1hcE1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFyZWFSZWdpc3RyeS5oIgogI2luY2x1ZGUgIldlYnNpdGVE
YXRhVHlwZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uaD4KICNpbmNsdWRlIDxwYWwvY3J5
cHRvL0NyeXB0b0RpZ2VzdC5oPgogI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgogI2luY2x1ZGUgPHd0
Zi9TdXNwZW5kYWJsZVdvcmtRdWV1ZS5oPgpAQCAtMTAwLDIyICsxMDgsMjggQEAgc3RhdGljIHZv
aWQgZGVsZXRlT3JpZ2luRmlsZUlmTmVjZXNzYXJ5KGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiAg
ICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZmlsZVBhdGgpOwogfQogCi1SZWY8TmV0d29y
a1N0b3JhZ2VNYW5hZ2VyPiBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZShQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21M
b2NhbFN0b3JhZ2VQYXRoKQorUmVmPE5ldHdvcmtTdG9yYWdlTWFuYWdlcj4gTmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyOjpjcmVhdGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBJUEM6OkNvbm5lY3Rp
b246OlVuaXF1ZUlEIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5n
JiBjdXN0b21Mb2NhbFN0b3JhZ2VQYXRoLCBjb25zdCBTdHJpbmcmIGN1c3RvbUlEQlN0b3JhZ2VQ
YXRoLCBjb25zdCBTdHJpbmcmIGN1c3RvbUNhY2hlU3RvcmFnZVBhdGgsIHVpbnQ2NF90IGRlZmF1
bHRPcmlnaW5RdW90YSwgdWludDY0X3QgZGVmYXVsdFRoaXJkUGFydHlPcmlnaW5RdW90YSkKIHsK
LSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXR3b3JrU3RvcmFnZU1hbmFnZXIoc2Vzc2lvbklE
LCBwYXRoLCBjdXN0b21Mb2NhbFN0b3JhZ2VQYXRoKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyKHNlc3Npb25JRCwgY29ubmVjdGlvbiwgcGF0aCwgY3Vz
dG9tTG9jYWxTdG9yYWdlUGF0aCwgY3VzdG9tSURCU3RvcmFnZVBhdGgsIGN1c3RvbUNhY2hlU3Rv
cmFnZVBhdGgsIGRlZmF1bHRPcmlnaW5RdW90YSwgZGVmYXVsdFRoaXJkUGFydHlPcmlnaW5RdW90
YSkpOwogfQogCi1OZXR3b3JrU3RvcmFnZU1hbmFnZXI6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcihQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5n
JiBjdXN0b21Mb2NhbFN0b3JhZ2VQYXRoKQorTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpOZXR3b3Jr
U3RvcmFnZU1hbmFnZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBJUEM6OkNvbm5lY3Rpb246
OlVuaXF1ZUlEIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBj
dXN0b21Mb2NhbFN0b3JhZ2VQYXRoLCBjb25zdCBTdHJpbmcmIGN1c3RvbUlEQlN0b3JhZ2VQYXRo
LCBjb25zdCBTdHJpbmcmIGN1c3RvbUNhY2hlU3RvcmFnZVBhdGgsIHVpbnQ2NF90IGRlZmF1bHRP
cmlnaW5RdW90YSwgdWludDY0X3QgZGVmYXVsdFRoaXJkUGFydHlPcmlnaW5RdW90YSkKICAgICA6
IG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKICAgICAsIG1fcXVldWUoU3VzcGVuZGFibGVXb3JrUXVl
dWU6OmNyZWF0ZSgiY29tLmFwcGxlLldlYktpdC5TdG9yYWdlIikpCisgICAgLCBtX2RlZmF1bHRP
cmlnaW5RdW90YShkZWZhdWx0T3JpZ2luUXVvdGEpCisgICAgLCBtX2RlZmF1bHRUaGlyZFBhcnR5
T3JpZ2luUXVvdGEoZGVmYXVsdFRoaXJkUGFydHlPcmlnaW5RdW90YSkKKyAgICAsIG1fcGFyZW50
Q29ubmVjdGlvbihjb25uZWN0aW9uKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7
CiAKLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0
aGlzIH0sIHBhdGggPSBwYXRoLmlzb2xhdGVkQ29weSgpLCBjdXN0b21Mb2NhbFN0b3JhZ2VQYXRo
ID0gY3Jvc3NUaHJlYWRDb3B5KGN1c3RvbUxvY2FsU3RvcmFnZVBhdGgpXSgpIG11dGFibGUgewor
ICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMg
fSwgcGF0aCA9IHBhdGguaXNvbGF0ZWRDb3B5KCksIGN1c3RvbUxvY2FsU3RvcmFnZVBhdGggPSBj
cm9zc1RocmVhZENvcHkoY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCksIGN1c3RvbUlEQlN0b3JhZ2VQ
YXRoID0gY3Jvc3NUaHJlYWRDb3B5KGN1c3RvbUlEQlN0b3JhZ2VQYXRoKSwgY3VzdG9tQ2FjaGVT
dG9yYWdlUGF0aCA9IGNyb3NzVGhyZWFkQ29weShjdXN0b21DYWNoZVN0b3JhZ2VQYXRoKV0oKSBt
dXRhYmxlIHsKICAgICAgICAgbV9maWxlU3lzdGVtU3RvcmFnZUhhbmRsZVJlZ2lzdHJ5ID0gbWFr
ZVVuaXF1ZTxGaWxlU3lzdGVtU3RvcmFnZUhhbmRsZVJlZ2lzdHJ5PigpOwogICAgICAgICBtX3N0
b3JhZ2VBcmVhUmVnaXN0cnkgPSBtYWtlVW5pcXVlPFN0b3JhZ2VBcmVhUmVnaXN0cnk+KCk7Cisg
ICAgICAgIG1faWRiU3RvcmFnZVJlZ2lzdHJ5ID0gbWFrZVVuaXF1ZTxJREJTdG9yYWdlUmVnaXN0
cnk+KCk7CiAgICAgICAgIG1fcGF0aCA9IHBhdGg7CiAgICAgICAgIG1fY3VzdG9tTG9jYWxTdG9y
YWdlUGF0aCA9IGN1c3RvbUxvY2FsU3RvcmFnZVBhdGg7CisgICAgICAgIG1fY3VzdG9tSURCU3Rv
cmFnZVBhdGggPSBjdXN0b21JREJTdG9yYWdlUGF0aDsKKyAgICAgICAgbV9jdXN0b21DYWNoZVN0
b3JhZ2VQYXRoID0gY3VzdG9tQ2FjaGVTdG9yYWdlUGF0aDsKICAgICAgICAgaWYgKCFtX3BhdGgu
aXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBhdXRvIHNhbHRQYXRoID0gRmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fcGF0aCwgInNhbHQiKTsKICAgICAgICAgICAgIG1fc2Fs
dCA9IHZhbHVlT3JEZWZhdWx0KEZpbGVTeXN0ZW06OnJlYWRPck1ha2VTYWx0KHNhbHRQYXRoKSk7
CkBAIC0xMzEsNyArMTQ1LDEwIEBAIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6fk5ldHdvcmtTdG9y
YWdlTWFuYWdlcigpCiAKIGJvb2wgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjYW5IYW5kbGVUeXBl
cyhPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB0eXBlcykKIHsKLSAgICByZXR1cm4gdHlwZXMu
Y29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpMb2NhbFN0b3JhZ2UpIHx8IHR5cGVzLmNvbnRhaW5z
KFdlYnNpdGVEYXRhVHlwZTo6U2Vzc2lvblN0b3JhZ2UpIHx8IHR5cGVzLmNvbnRhaW5zKFdlYnNp
dGVEYXRhVHlwZTo6RmlsZVN5c3RlbSk7CisgICAgcmV0dXJuIHR5cGVzLmNvbnRhaW5zKFdlYnNp
dGVEYXRhVHlwZTo6TG9jYWxTdG9yYWdlKQorICAgICAgICB8fCB0eXBlcy5jb250YWlucyhXZWJz
aXRlRGF0YVR5cGU6OlNlc3Npb25TdG9yYWdlKQorICAgICAgICB8fCB0eXBlcy5jb250YWlucyhX
ZWJzaXRlRGF0YVR5cGU6OkZpbGVTeXN0ZW0pCisgICAgICAgIHx8IHR5cGVzLmNvbnRhaW5zKFdl
YnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKTsKIH0KIAogdm9pZCBOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6OmNsb3NlKCkKQEAgLTE3MCw2ICsxODcsNyBAQCB2b2lkIE5ldHdvcmtTdG9y
YWdlTWFuYWdlcjo6c3RvcFJlY2VpdmluZ01lc3NhZ2VGcm9tQ29ubmVjdGlvbihJUEM6OkNvbm5l
Y3Rpb24mCiAKICAgICBjb25uZWN0aW9uLnJlbW92ZVdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihN
ZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOwog
ICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMg
fSwgY29ubmVjdGlvbiA9IGNvbm5lY3Rpb24udW5pcXVlSUQoKV0oKSBtdXRhYmxlIHsKKyAgICAg
ICAgbV9pZGJTdG9yYWdlUmVnaXN0cnktPnJlbW92ZUNvbm5lY3Rpb25Ub0NsaWVudChjb25uZWN0
aW9uKTsKICAgICAgICAgbV9sb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2Vycy5yZW1vdmVJZihbJl0o
YXV0byYgZW50cnkpIHsKICAgICAgICAgICAgIGF1dG8mIG1hbmFnZXIgPSBlbnRyeS52YWx1ZTsK
ICAgICAgICAgICAgIG1hbmFnZXItPmNvbm5lY3Rpb25DbG9zZWQoY29ubmVjdGlvbik7CkBAIC0y
MjIsNyArMjQwLDE0IEBAIE9yaWdpblN0b3JhZ2VNYW5hZ2VyJiBOZXR3b3JrU3RvcmFnZU1hbmFn
ZXI6OmxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIoY29uc3QgV2ViCiAgICAgICAgICAgICAgICAg
d3JpdGVPcmlnaW5Ub0ZpbGVJZk5lY2Vzc2FyeShvcmlnaW5GaWxlUGF0aChvcmlnaW5EaXJlY3Rv
cnkpLCBvcmlnaW4pOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8T3JpZ2luU3RvcmFnZU1hbmFnZXI+KFdURk1vdmUob3JpZ2luRGlyZWN0b3J5
KSwgTG9jYWxTdG9yYWdlTWFuYWdlcjo6bG9jYWxTdG9yYWdlRmlsZVBhdGgobV9jdXN0b21Mb2Nh
bFN0b3JhZ2VQYXRoLCBvcmlnaW4pKTsKKyAgICAgICAgYXV0byBsb2NhbFN0b3JhZ2VQYXRoID0g
TG9jYWxTdG9yYWdlTWFuYWdlcjo6bG9jYWxTdG9yYWdlRmlsZVBhdGgobV9jdXN0b21Mb2NhbFN0
b3JhZ2VQYXRoLCBvcmlnaW4pOworICAgICAgICBhdXRvIGlkYlN0b3JhZ2VQYXRoID0gSURCU3Rv
cmFnZU1hbmFnZXI6OmlkYlN0b3JhZ2VPcmlnaW5EaXJlY3RvcnkobV9jdXN0b21JREJTdG9yYWdl
UGF0aCwgb3JpZ2luKTsKKyAgICAgICAgYXV0byBjYWNoZVN0b3JhZ2VQYXRoID0gQ2FjaGVTdG9y
YWdlOjpFbmdpbmU6OnN0b3JhZ2VQYXRoKG1fY3VzdG9tQ2FjaGVTdG9yYWdlUGF0aCwgb3JpZ2lu
KTsKKyAgICAgICAgdWludDY0X3QgcXVvdGEgPSBvcmlnaW4udG9wT3JpZ2luID09IG9yaWdpbi5j
bGllbnRPcmlnaW4gPyBtX2RlZmF1bHRPcmlnaW5RdW90YSA6IG1fZGVmYXVsdFRoaXJkUGFydHlP
cmlnaW5RdW90YTsKKyAgICAgICAgUXVvdGFNYW5hZ2VyOjpJbmNyZWFzZVF1b3RhRnVuY3Rpb24g
aW5jcmVhc2VRdW90YUZ1bmN0aW9uID0gW3Nlc3Npb25JRCA9IG1fc2Vzc2lvbklELCBvcmlnaW4s
IGNvbm5lY3Rpb24gPSBtX3BhcmVudENvbm5lY3Rpb25dIChhdXRvIGlkZW50aWZpZXIsIGF1dG8g
Y3VycmVudFF1b3RhLCBhdXRvIGN1cnJlbnRVc2FnZSwgYXV0byByZXF1ZXN0ZWRJbmNyZWFzZSkg
bXV0YWJsZSB7CisgICAgICAgICAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQoY29ubmVjdGlvbiwg
TWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkluY3JlYXNlUXVvdGEoc2Vzc2lvbklELCBv
cmlnaW4sIGlkZW50aWZpZXIsIGN1cnJlbnRRdW90YSwgY3VycmVudFVzYWdlLCByZXF1ZXN0ZWRJ
bmNyZWFzZSksIDApOworICAgICAgICB9OworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxPcmln
aW5TdG9yYWdlTWFuYWdlcj4ocXVvdGEsIFdURk1vdmUoaW5jcmVhc2VRdW90YUZ1bmN0aW9uKSwg
V1RGTW92ZShvcmlnaW5EaXJlY3RvcnkpLCBXVEZNb3ZlKGxvY2FsU3RvcmFnZVBhdGgpLCBXVEZN
b3ZlKGlkYlN0b3JhZ2VQYXRoKSwgV1RGTW92ZShjYWNoZVN0b3JhZ2VQYXRoKSk7CiAgICAgfSku
aXRlcmF0b3ItPnZhbHVlOwogfQogCkBAIC0yODIsNiArMzA3LDE2IEBAIHZvaWQgTmV0d29ya1N0
b3JhZ2VNYW5hZ2VyOjpjbGVhclN0b3JhZ2VGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjCiAgICAgfSk7CiB9CiAKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkaWRJ
bmNyZWFzZVF1b3RhKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBRdW90YUlu
Y3JlYXNlUmVxdWVzdElkZW50aWZpZXIgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gbmV3UXVvdGEpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIG1f
cXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgb3Jp
Z2luID0gY3Jvc3NUaHJlYWRDb3B5KG9yaWdpbiksIGlkZW50aWZpZXIsIG5ld1F1b3RhXSgpIG11
dGFibGUgeworICAgICAgICBpZiAoYXV0byBtYW5hZ2VyID0gbV9sb2NhbE9yaWdpblN0b3JhZ2VN
YW5hZ2Vycy5nZXQob3JpZ2luKSkKKyAgICAgICAgICAgIG1hbmFnZXItPnF1b3RhTWFuYWdlcigp
LmRpZEluY3JlYXNlUXVvdGEoaWRlbnRpZmllciwgbmV3UXVvdGEpOworICAgIH0pOworfQorCiB2
b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZmlsZVN5c3RlbUdldERpcmVjdG9yeShJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2lu
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5k
bGVJZGVudGlmaWVyLCBGaWxlU3lzdGVtU3RvcmFnZUVycm9yPik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CkBAIC00NTIsNiArNDg3LDkg
QEAgSGFzaFNldDxXZWJDb3JlOjpDbGllbnRPcmlnaW4+IE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6
Z2V0QWxsT3JpZ2lucygpCiAgICAgZm9yIChhdXRvJiBvcmlnaW4gOiBMb2NhbFN0b3JhZ2VNYW5h
Z2VyOjpvcmlnaW5zT2ZMb2NhbFN0b3JhZ2VEYXRhKG1fY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCkp
CiAgICAgICAgIGFsbE9yaWdpbnMuYWRkKFdlYkNvcmU6OkNsaWVudE9yaWdpbiB7IG9yaWdpbiwg
b3JpZ2luIH0pOwogCisgICAgZm9yIChhdXRvJiBvcmlnaW4gOiBJREJTdG9yYWdlTWFuYWdlcjo6
b3JpZ2luc09mSURCU3RvcmFnZURhdGEobV9jdXN0b21JREJTdG9yYWdlUGF0aCkpCisgICAgICAg
IGFsbE9yaWdpbnMuYWRkKG9yaWdpbik7CisKICAgICByZXR1cm4gYWxsT3JpZ2luczsKIH0KIApA
QCAtNTc5LDEyICs2MTcsMTcgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Om1vdmVEYXRh
KGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgc291cmNlLAogICAgICAgICBhdXRv
IHRhcmdldE9yaWdpbiA9IFdlYkNvcmU6OkNsaWVudE9yaWdpbiB7IHRhcmdldCwgdGFyZ2V0IH07
CiAgICAgICAgIAogICAgICAgICAvLyBDbGVhciBleGlzdGluZyBkYXRhIG9mIHRhcmdldCBvcmln
aW4uCi0gICAgICAgIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHR5cGVzID0geyBXZWJzaXRl
RGF0YVR5cGU6OkZpbGVTeXN0ZW0sIFdlYnNpdGVEYXRhVHlwZTo6TG9jYWxTdG9yYWdlLCBXZWJz
aXRlRGF0YVR5cGU6OlNlc3Npb25TdG9yYWdlICB9OworICAgICAgICBPcHRpb25TZXQ8V2Vic2l0
ZURhdGFUeXBlPiB0eXBlcyA9IHsKKyAgICAgICAgICAgIFdlYnNpdGVEYXRhVHlwZTo6RmlsZVN5
c3RlbSwKKyAgICAgICAgICAgIFdlYnNpdGVEYXRhVHlwZTo6TG9jYWxTdG9yYWdlLAorICAgICAg
ICAgICAgV2Vic2l0ZURhdGFUeXBlOjpTZXNzaW9uU3RvcmFnZSwKKyAgICAgICAgICAgIFdlYnNp
dGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzCisgICAgICAgIH07CiAgICAgICAgIGxvY2Fs
T3JpZ2luU3RvcmFnZU1hbmFnZXIodGFyZ2V0T3JpZ2luKS5kZWxldGVEYXRhKHR5cGVzLCAtV2Fs
bFRpbWU6OmluZmluaXR5KCkpOwogICAgICAgICByZW1vdmVPcmlnaW5TdG9yYWdlTWFuYWdlcklm
UG9zc2libGUodGFyZ2V0T3JpZ2luKTsKIAogICAgICAgICAvLyBNb3ZlIGRhdGEgZnJvbSBzb3Vy
Y2Ugb3JpZ2luIHRvIHRhcmdldCBvcmlnaW4uCi0gICAgICAgIGxvY2FsT3JpZ2luU3RvcmFnZU1h
bmFnZXIoc291cmNlT3JpZ2luKS5tb3ZlRGF0YShvcmlnaW5EaXJlY3RvcnlQYXRoKG1fcGF0aCwg
dGFyZ2V0T3JpZ2luLCBtX3NhbHQpLCBMb2NhbFN0b3JhZ2VNYW5hZ2VyOjpsb2NhbFN0b3JhZ2VG
aWxlUGF0aChtX2N1c3RvbUxvY2FsU3RvcmFnZVBhdGgsIHRhcmdldE9yaWdpbikpOworICAgICAg
ICBsb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2VyKHNvdXJjZU9yaWdpbikubW92ZURhdGEob3JpZ2lu
RGlyZWN0b3J5UGF0aChtX3BhdGgsIHRhcmdldE9yaWdpbiwgbV9zYWx0KSwgTG9jYWxTdG9yYWdl
TWFuYWdlcjo6bG9jYWxTdG9yYWdlRmlsZVBhdGgobV9jdXN0b21Mb2NhbFN0b3JhZ2VQYXRoLCB0
YXJnZXRPcmlnaW4pLCBJREJTdG9yYWdlTWFuYWdlcjo6aWRiU3RvcmFnZU9yaWdpbkRpcmVjdG9y
eShtX2N1c3RvbUlEQlN0b3JhZ2VQYXRoLCB0YXJnZXRPcmlnaW4pKTsKICAgICAgICAgcmVtb3Zl
T3JpZ2luU3RvcmFnZU1hbmFnZXJJZlBvc3NpYmxlKHNvdXJjZU9yaWdpbik7CiAKICAgICAgICAg
UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKQEAg
LTU5OSw2ICs2NDIsOCBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6c3VzcGVuZChDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZQogICAgICAgICBmb3IgKGF1
dG8mIG1hbmFnZXIgOiBtX2xvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXJzLnZhbHVlcygpKSB7CiAg
ICAgICAgICAgICBpZiAoYXV0byBsb2NhbFN0b3JhZ2VNYW5hZ2VyID0gbWFuYWdlci0+ZXhpc3Rp
bmdMb2NhbFN0b3JhZ2VNYW5hZ2VyKCkpCiAgICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlTWFu
YWdlci0+c3luY0xvY2FsU3RvcmFnZSgpOworICAgICAgICAgICAgaWYgKGF1dG8gaWRiU3RvcmFn
ZU1hbmFnZXIgPSBtYW5hZ2VyLT5leGlzdGluZ0lEQlN0b3JhZ2VNYW5hZ2VyKCkpCisgICAgICAg
ICAgICAgICAgaWRiU3RvcmFnZU1hbmFnZXItPnN0b3BEYXRhYmFzZUFjdGl2aXRpZXNGb3JTdXNw
ZW5kKCk7CiAgICAgICAgIH0KICAgICB9LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9
CkBAIC02MzYsNiArNjgxLDUyIEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpzeW5jTG9j
YWxTdG9yYWdlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0CiAgICAgfSk7CiB9
CiAKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpyZWdpc3RlclRlbXBvcmFyeUJsb2JGaWxl
UGF0aHMoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
ZmlsZVBhdGhzKQoreworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBtX3F1
ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNvbm5l
Y3Rpb25JRCA9IGNvbm5lY3Rpb24udW5pcXVlSUQoKSwgZmlsZVBhdGhzID0gY3Jvc3NUaHJlYWRD
b3B5KGZpbGVQYXRocyldIHsKKyAgICAgICAgYXV0byYgdGVtcG9yYXJ5QmxvYlBhdGhzID0gbV90
ZW1wb3JhcnlCbG9iUGF0aHNCeUNvbm5lY3Rpb24uZW5zdXJlKGNvbm5lY3Rpb25JRCwgW10gewor
ICAgICAgICAgICAgcmV0dXJuIEhhc2hTZXQ8U3RyaW5nPiB7IH07CisgICAgICAgIH0pLml0ZXJh
dG9yLT52YWx1ZTsKKyAgICAgICAgdGVtcG9yYXJ5QmxvYlBhdGhzLmFkZChmaWxlUGF0aHMuYmVn
aW4oKSwgZmlsZVBhdGhzLmVuZCgpKTsKKyAgICB9KTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFn
ZU1hbmFnZXI6OnJlcXVlc3RTcGFjZShjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdp
biwgdWludDY0X3Qgc2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgbV9x
dWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBvcmln
aW4gPSBjcm9zc1RocmVhZENvcHkob3JpZ2luKSwgc2l6ZSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgbG9jYWxPcmln
aW5TdG9yYWdlTWFuYWdlcihvcmlnaW4pLnF1b3RhTWFuYWdlcigpLnJlcXVlc3RTcGFjZShzaXpl
LCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byBk
ZWNpc2lvbikgbXV0YWJsZSB7CisgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2go
W2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGRlY2lzaW9u
XSgpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGRlY2lzaW9u
ID09IFF1b3RhTWFuYWdlcjo6RGVjaXNpb246OkdyYW50KTsKKyAgICAgICAgICAgIH0pOworICAg
ICAgICB9KTsKKyAgICB9KTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnJlc2V0
UXVvdGFGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgbV9xdWV1ZS0+
ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAg
ICBmb3IgKGF1dG8mIG1hbmFnZXIgOiBtX2xvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXJzLnZhbHVl
cygpKQorICAgICAgICAgICAgbWFuYWdlci0+cXVvdGFNYW5hZ2VyKCkucmVzZXRRdW90YUZvclRl
c3RpbmcoKTsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKKyAgICB9KTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6
OnJlc2V0UXVvdGFVcGRhdGVkQmFzZWRPblVzYWdlRm9yVGVzdGluZyhjb25zdCBXZWJDb3JlOjpD
bGllbnRPcmlnaW4mIG9yaWdpbikKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwor
CisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhp
cyB9LCBvcmlnaW4gPSBjcm9zc1RocmVhZENvcHkob3JpZ2luKV0oKSBtdXRhYmxlIHsKKyAgICAg
ICAgaWYgKGF1dG8gbWFuYWdlciA9IG1fbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcnMuZ2V0KG9y
aWdpbikpCisgICAgICAgICAgICBtYW5hZ2VyLT5xdW90YU1hbmFnZXIoKS5yZXNldFF1b3RhVXBk
YXRlZEJhc2VkT25Vc2FnZUZvclRlc3RpbmcoKTsKKyAgICB9KTsKK30KKwogdm9pZCBOZXR3b3Jr
U3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb1N0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgV2ViQ29yZTo6U3RvcmFnZVR5cGUgdHlwZSwgU3RvcmFnZUFyZWFNYXBJZGVudGlm
aWVyIHNvdXJjZUlkZW50aWZpZXIsIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyIG5hbWVzcGFj
ZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBcmVhSWRlbnRpZmllciwgSGFzaE1hcDxTdHJpbmcsIFN0
cmluZz4sIHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1
bkxvb3A6OmlzTWFpbigpKTsKQEAgLTcyMyw1ICs4MTQsMTk1IEBAIHZvaWQgTmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyOjpjbGVhcihJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFN0b3JhZ2VBcmVh
SWRlbnRpCiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAordm9pZCBOZXR3b3JrU3RvcmFn
ZU1hbmFnZXI6Om9wZW5EYXRhYmFzZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0
IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkKK3sKKyAgICBhdXRvJiBjb25u
ZWN0aW9uVG9DbGllbnQgPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+ZW5zdXJlQ29ubmVjdGlvblRv
Q2xpZW50KGNvbm5lY3Rpb24udW5pcXVlSUQoKSwgcmVxdWVzdERhdGEucmVxdWVzdElkZW50aWZp
ZXIoKS5jb25uZWN0aW9uSWRlbnRpZmllcigpKTsKKyAgICBsb2NhbE9yaWdpblN0b3JhZ2VNYW5h
Z2VyKHJlcXVlc3REYXRhLmRhdGFiYXNlSWRlbnRpZmllcigpLm9yaWdpbigpKS5pZGJTdG9yYWdl
TWFuYWdlcigqbV9pZGJTdG9yYWdlUmVnaXN0cnkpLm9wZW5EYXRhYmFzZShjb25uZWN0aW9uVG9D
bGllbnQsIHJlcXVlc3REYXRhKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Om9w
ZW5EQlJlcXVlc3RDYW5jZWxsZWQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVl
c3REYXRhKQoreworICAgIGxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIocmVxdWVzdERhdGEuZGF0
YWJhc2VJZGVudGlmaWVyKCkub3JpZ2luKCkpLmlkYlN0b3JhZ2VNYW5hZ2VyKCptX2lkYlN0b3Jh
Z2VSZWdpc3RyeSkub3BlbkRCUmVxdWVzdENhbmNlbGxlZChyZXF1ZXN0RGF0YSk7Cit9CisKK3Zv
aWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVEYXRhYmFzZShJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkK
K3sKKyAgICBhdXRvJiBjb25uZWN0aW9uVG9DbGllbnQgPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+
ZW5zdXJlQ29ubmVjdGlvblRvQ2xpZW50KGNvbm5lY3Rpb24udW5pcXVlSUQoKSwgcmVxdWVzdERh
dGEucmVxdWVzdElkZW50aWZpZXIoKS5jb25uZWN0aW9uSWRlbnRpZmllcigpKTsKKyAgICBsb2Nh
bE9yaWdpblN0b3JhZ2VNYW5hZ2VyKHJlcXVlc3REYXRhLmRhdGFiYXNlSWRlbnRpZmllcigpLm9y
aWdpbigpKS5pZGJTdG9yYWdlTWFuYWdlcigqbV9pZGJTdG9yYWdlUmVnaXN0cnkpLmRlbGV0ZURh
dGFiYXNlKGNvbm5lY3Rpb25Ub0NsaWVudCwgcmVxdWVzdERhdGEpOworfQorCit2b2lkIE5ldHdv
cmtTdG9yYWdlTWFuYWdlcjo6ZXN0YWJsaXNoVHJhbnNhY3Rpb24odWludDY0X3QgZGF0YWJhc2VD
b25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25JbmZvJiB0
cmFuc2FjdGlvbkluZm8pCit7CisgICAgaWYgKGF1dG8gY29ubmVjdGlvbiA9IG1faWRiU3RvcmFn
ZVJlZ2lzdHJ5LT5jb25uZWN0aW9uKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpKQorICAg
ICAgICBjb25uZWN0aW9uLT5lc3RhYmxpc2hUcmFuc2FjdGlvbih0cmFuc2FjdGlvbkluZm8pOwor
fQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGF0YWJhc2VDb25uZWN0aW9uUGVuZGlu
Z0Nsb3NlKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpCit7CisgICAgaWYg
KGF1dG8gY29ubmVjdGlvbiA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT5jb25uZWN0aW9uKGRhdGFi
YXNlQ29ubmVjdGlvbklkZW50aWZpZXIpKQorICAgICAgICBjb25uZWN0aW9uLT5jb25uZWN0aW9u
UGVuZGluZ0Nsb3NlRnJvbUNsaWVudCgpOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdl
cjo6ZGF0YWJhc2VDb25uZWN0aW9uQ2xvc2VkKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklk
ZW50aWZpZXIpCit7CisgICAgaWYgKGF1dG8gY29ubmVjdGlvbiA9IG1faWRiU3RvcmFnZVJlZ2lz
dHJ5LT5jb25uZWN0aW9uKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpKQorICAgICAgICBj
b25uZWN0aW9uLT5jb25uZWN0aW9uQ2xvc2VkRnJvbUNsaWVudCgpOworfQorCit2b2lkIE5ldHdv
cmtTdG9yYWdlTWFuYWdlcjo6YWJvcnRPcGVuQW5kVXBncmFkZU5lZWRlZCh1aW50NjRfdCBkYXRh
YmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50
aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcikKK3sKKyAgICBpZiAoYXV0byB0cmFuc2FjdGlv
biA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT50cmFuc2FjdGlvbih0cmFuc2FjdGlvbklkZW50aWZp
ZXIpKQorICAgICAgICB0cmFuc2FjdGlvbi0+YWJvcnRXaXRob3V0Q2FsbGJhY2soKTsKKworICAg
IGlmIChhdXRvIGNvbm5lY3Rpb24gPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+Y29ubmVjdGlvbihk
YXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKSkKKyAgICAgICAgY29ubmVjdGlvbi0+Y29ubmVj
dGlvbkNsb3NlZEZyb21DbGllbnQoKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6
OmRpZEZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRl
bnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRl
bnRpZmllciwgY29uc3QgV2ViQ29yZTo6SW5kZXhlZERCOjpDb25uZWN0aW9uQ2xvc2VkT25CZWhh
bGZPZlNlcnZlciBjb25uZWN0aW9uQ2xvc2VkKQoreworICAgIGlmIChhdXRvIGNvbm5lY3Rpb24g
PSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+Y29ubmVjdGlvbihkYXRhYmFzZUNvbm5lY3Rpb25JZGVu
dGlmaWVyKSkKKyAgICAgICAgY29ubmVjdGlvbi0+ZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudChy
ZXF1ZXN0SWRlbnRpZmllciwgY29ubmVjdGlvbkNsb3NlZCk7Cit9CisKK3ZvaWQgTmV0d29ya1N0
b3JhZ2VNYW5hZ2VyOjphYm9ydFRyYW5zYWN0aW9uKGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNl
SWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKQoreworICAgIGlmIChhdXRvIHRyYW5z
YWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPnRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRl
bnRpZmllcikpCisgICAgICAgIHRyYW5zYWN0aW9uLT5hYm9ydCgpOworfQorCit2b2lkIE5ldHdv
cmtTdG9yYWdlTWFuYWdlcjo6Y29tbWl0VHJhbnNhY3Rpb24oY29uc3QgV2ViQ29yZTo6SURCUmVz
b3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IHBlbmRpbmdS
ZXF1ZXN0Q291bnQpCit7CisgICAgaWYgKGF1dG8gdHJhbnNhY3Rpb24gPSBtX2lkYlN0b3JhZ2VS
ZWdpc3RyeS0+dHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZGVudGlmaWVyKSkKKyAgICAgICAgdHJh
bnNhY3Rpb24tPmNvbW1pdChwZW5kaW5nUmVxdWVzdENvdW50KTsKK30KKwordm9pZCBOZXR3b3Jr
U3RvcmFnZU1hbmFnZXI6OmRpZEZpbmlzaEhhbmRsaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9u
KHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OklE
QlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKQoreworICAgIGlmIChh
dXRvIGNvbm5lY3Rpb24gPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+Y29ubmVjdGlvbihkYXRhYmFz
ZUNvbm5lY3Rpb25JZGVudGlmaWVyKSkKKyAgICAgICAgY29ubmVjdGlvbi0+ZGlkRmluaXNoSGFu
ZGxpbmdWZXJzaW9uQ2hhbmdlKHRyYW5zYWN0aW9uSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgTmV0
d29ya1N0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJS
ZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IFdlYkNvcmU6OklEQk9iamVjdFN0b3JlSW5m
byYgb2JqZWN0U3RvcmVJbmZvKQoreworICAgIGlmIChhdXRvIHRyYW5zYWN0aW9uID0gbV9pZGJT
dG9yYWdlUmVnaXN0cnktPnRyYW5zYWN0aW9uKHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRp
ZmllcigpKSkgeworICAgICAgICBBU1NFUlQodHJhbnNhY3Rpb24tPmlzVmVyc2lvbkNoYW5nZSgp
KTsKKyAgICAgICAgdHJhbnNhY3Rpb24tPmNyZWF0ZU9iamVjdFN0b3JlKHJlcXVlc3REYXRhLCBv
YmplY3RTdG9yZUluZm8pOworICAgIH0KK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6
OmRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0
RGF0YSwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUpCit7CisgICAgaWYgKGF1dG8gdHJh
bnNhY3Rpb24gPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+dHJhbnNhY3Rpb24ocmVxdWVzdERhdGEu
dHJhbnNhY3Rpb25JZGVudGlmaWVyKCkpKSB7CisgICAgICAgIEFTU0VSVCh0cmFuc2FjdGlvbi0+
aXNWZXJzaW9uQ2hhbmdlKCkpOworICAgICAgICB0cmFuc2FjdGlvbi0+ZGVsZXRlT2JqZWN0U3Rv
cmUocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlTmFtZSk7CisgICAgfQorfQorCit2b2lkIE5ldHdv
cmtTdG9yYWdlTWFuYWdlcjo6cmVuYW1lT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6SURCUmVx
dWVzdERhdGEmIHJlcXVlc3REYXRhLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgbmV3TmFtZSkKK3sKKyAgICBpZiAoYXV0byB0cmFuc2FjdGlvbiA9IG1faWRi
U3RvcmFnZVJlZ2lzdHJ5LT50cmFuc2FjdGlvbihyZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50
aWZpZXIoKSkpIHsKKyAgICAgICAgQVNTRVJUKHRyYW5zYWN0aW9uLT5pc1ZlcnNpb25DaGFuZ2Uo
KSk7CisgICAgICAgIHRyYW5zYWN0aW9uLT5yZW5hbWVPYmplY3RTdG9yZShyZXF1ZXN0RGF0YSwg
b2JqZWN0U3RvcmVJZGVudGlmaWVyLCBuZXdOYW1lKTsKKyAgICB9Cit9CisKK3ZvaWQgTmV0d29y
a1N0b3JhZ2VNYW5hZ2VyOjpjbGVhck9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVl
c3REYXRhJiByZXF1ZXN0RGF0YSwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyKQorewor
ICAgIGlmIChhdXRvIHRyYW5zYWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPnRyYW5zYWN0
aW9uKHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpKSkKKyAgICAgICAgdHJhbnNh
Y3Rpb24tPmNsZWFyT2JqZWN0U3RvcmUocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVJbmRleChjb25zdCBX
ZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IFdlYkNvcmU6OklEQklu
ZGV4SW5mbyYgaW5kZXhJbmZvKQoreworICAgIGlmIChhdXRvIHRyYW5zYWN0aW9uID0gbV9pZGJT
dG9yYWdlUmVnaXN0cnktPnRyYW5zYWN0aW9uKHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRp
ZmllcigpKSkKKyAgICAgICAgdHJhbnNhY3Rpb24tPmNyZWF0ZUluZGV4KHJlcXVlc3REYXRhLCBp
bmRleEluZm8pOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlSW5kZXgo
Y29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCB1aW50NjRfdCBvYmpl
Y3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lKQoreworICAgIGlmIChh
dXRvIHRyYW5zYWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPnRyYW5zYWN0aW9uKHJlcXVl
c3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpKSkKKyAgICAgICAgdHJhbnNhY3Rpb24tPmRl
bGV0ZUluZGV4KHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4TmFtZSk7
Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpyZW5hbWVJbmRleChjb25zdCBXZWJD
b3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRl
bnRpZmllciwgdWludDY0X3QgaW5kZXhJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUp
Cit7CisgICAgaWYgKGF1dG8gdHJhbnNhY3Rpb24gPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+dHJh
bnNhY3Rpb24ocmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCkpKQorICAgICAgICB0
cmFuc2FjdGlvbi0+cmVuYW1lSW5kZXgocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmll
ciwgaW5kZXhJZGVudGlmaWVyLCBuZXdOYW1lKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1h
bmFnZXI6OnB1dE9yQWRkKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgV2ViQ29y
ZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBXZWJDb3JlOjpJREJLZXlEYXRh
JiBrZXlEYXRhLCBjb25zdCBXZWJDb3JlOjpJREJWYWx1ZSYgdmFsdWUsIFdlYkNvcmU6OkluZGV4
ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlIG92ZXJ3cml0ZU1vZGUpCit7CisgICAgaWYg
KHZhbHVlLmJsb2JVUkxzKCkuc2l6ZSgpICE9IHZhbHVlLmJsb2JGaWxlUGF0aHMoKS5zaXplKCkp
IHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRkFVTFQoSW5kZXhlZERCLCAiTmV0d29ya1N0b3JhZ2VN
YW5hZ2VyOjpwdXRPckFkZDogTnVtYmVyIG9mIGJsb2IgVVJMcyBkb2Vzbid0IG1hdGNoIHRoZSBu
dW1iZXIgb2YgYmxvYiBmaWxlIHBhdGhzLiIpOworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFZhbGlkYXRlIHRlbXBvcmFyeSBi
bG9iIHBhdGhzIGluIHx2YWx1ZXwgdG8gbWFrZSBzdXJlIHRoZXkgYmVsb25nIHRvIHRoZSBzb3Vy
Y2UgcHJvY2Vzcy4KKyAgICBpZiAoIXZhbHVlLmJsb2JGaWxlUGF0aHMoKS5pc0VtcHR5KCkpIHsK
KyAgICAgICAgYXV0byBpdCA9IG1fdGVtcG9yYXJ5QmxvYlBhdGhzQnlDb25uZWN0aW9uLmZpbmQo
Y29ubmVjdGlvbi51bmlxdWVJRCgpKTsKKyAgICAgICAgaWYgKGl0ID09IG1fdGVtcG9yYXJ5Qmxv
YlBhdGhzQnlDb25uZWN0aW9uLmVuZCgpKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19GQVVM
VChJbmRleGVkREIsICJOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnB1dE9yQWRkOiBJREJWYWx1ZSBj
b250YWlucyBibG9iIHBhdGhzIGJ1dCBub25lIGFyZSBhbGxvd2VkIGZvciB0aGlzIHByb2Nlc3Mi
KTsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKKyAgICAgICAgYXV0byYgdGVtcG9yYXJ5QmxvYlBhdGhzRm9yQ29ubmVj
dGlvbiA9IGl0LT52YWx1ZTsKKyAgICAgICAgZm9yIChhdXRvJiBibG9iRmlsZVBhdGggOiB2YWx1
ZS5ibG9iRmlsZVBhdGhzKCkpIHsKKyAgICAgICAgICAgIGlmICghdGVtcG9yYXJ5QmxvYlBhdGhz
Rm9yQ29ubmVjdGlvbi5yZW1vdmUoYmxvYkZpbGVQYXRoKSkgeworICAgICAgICAgICAgICAgIFJF
TEVBU0VfTE9HX0ZBVUxUKEluZGV4ZWREQiwgIk5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6cHV0T3JB
ZGQ6IEJsb2IgcGF0aCB3YXMgbm90IGNyZWF0ZWQgZm9yIHRoaXMgV2ViUHJvY2VzcyIpOworICAg
ICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChhdXRvIHRyYW5z
YWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPnRyYW5zYWN0aW9uKHJlcXVlc3REYXRhLnRy
YW5zYWN0aW9uSWRlbnRpZmllcigpKSkKKyAgICAgICAgdHJhbnNhY3Rpb24tPnB1dE9yQWRkKHJl
cXVlc3REYXRhLCBrZXlEYXRhLCB2YWx1ZSwgb3ZlcndyaXRlTW9kZSk7Cit9CisKK3ZvaWQgTmV0
d29ya1N0b3JhZ2VNYW5hZ2VyOjpnZXRSZWNvcmQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERh
dGEmIHJlcXVlc3REYXRhLCBjb25zdCBXZWJDb3JlOjpJREJHZXRSZWNvcmREYXRhJiBnZXRSZWNv
cmREYXRhKQoreworICAgIGlmIChhdXRvIHRyYW5zYWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0
cnktPnRyYW5zYWN0aW9uKHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpKSkKKyAg
ICAgICAgdHJhbnNhY3Rpb24tPmdldFJlY29yZChyZXF1ZXN0RGF0YSwgZ2V0UmVjb3JkRGF0YSk7
Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpnZXRBbGxSZWNvcmRzKGNvbnN0IFdl
YkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgV2ViQ29yZTo6SURCR2V0
QWxsUmVjb3Jkc0RhdGEmIGdldEFsbFJlY29yZHNEYXRhKQoreworICAgIGlmIChhdXRvIHRyYW5z
YWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPnRyYW5zYWN0aW9uKHJlcXVlc3REYXRhLnRy
YW5zYWN0aW9uSWRlbnRpZmllcigpKSkKKyAgICAgICAgdHJhbnNhY3Rpb24tPmdldEFsbFJlY29y
ZHMocmVxdWVzdERhdGEsIGdldEFsbFJlY29yZHNEYXRhKTsKK30KKwordm9pZCBOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6OmdldENvdW50KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1
ZXN0RGF0YSwgY29uc3QgV2ViQ29yZTo6SURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5nZURhdGEpCit7
CisgICAgaWYgKGF1dG8gdHJhbnNhY3Rpb24gPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+dHJhbnNh
Y3Rpb24ocmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCkpKQorICAgICAgICB0cmFu
c2FjdGlvbi0+Z2V0Q291bnQocmVxdWVzdERhdGEsIGtleVJhbmdlRGF0YSk7Cit9CisKK3ZvaWQg
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVSZWNvcmQoY29uc3QgV2ViQ29yZTo6SURCUmVx
dWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBXZWJDb3JlOjpJREJLZXlSYW5nZURhdGEmIGtl
eVJhbmdlRGF0YSkKK3sKKyAgICBpZiAoYXV0byB0cmFuc2FjdGlvbiA9IG1faWRiU3RvcmFnZVJl
Z2lzdHJ5LT50cmFuc2FjdGlvbihyZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSkp
CisgICAgICAgIHRyYW5zYWN0aW9uLT5kZWxldGVSZWNvcmQocmVxdWVzdERhdGEsIGtleVJhbmdl
RGF0YSk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpvcGVuQ3Vyc29yKGNvbnN0
IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgV2ViQ29yZTo6SURC
Q3Vyc29ySW5mbyYgY3Vyc29ySW5mbykKK3sKKyAgICBpZiAoYXV0byB0cmFuc2FjdGlvbiA9IG1f
aWRiU3RvcmFnZVJlZ2lzdHJ5LT50cmFuc2FjdGlvbihyZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklk
ZW50aWZpZXIoKSkpCisgICAgICAgIHRyYW5zYWN0aW9uLT5vcGVuQ3Vyc29yKHJlcXVlc3REYXRh
LCBjdXJzb3JJbmZvKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Oml0ZXJhdGVD
dXJzb3IoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBX
ZWJDb3JlOjpJREJJdGVyYXRlQ3Vyc29yRGF0YSYgY3Vyc29yRGF0YSkKK3sKKyAgICBpZiAoYXV0
byB0cmFuc2FjdGlvbiA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT50cmFuc2FjdGlvbihyZXF1ZXN0
RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSkpCisgICAgICAgIHRyYW5zYWN0aW9uLT5pdGVy
YXRlQ3Vyc29yKHJlcXVlc3REYXRhLCBjdXJzb3JEYXRhKTsKK30KKwordm9pZCBOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6OmdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgcmVx
dWVzdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luKQorewor
ICAgIGF1dG8mIGNvbm5lY3Rpb25Ub0NsaWVudCA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT5lbnN1
cmVDb25uZWN0aW9uVG9DbGllbnQoY29ubmVjdGlvbi51bmlxdWVJRCgpLCByZXF1ZXN0SWRlbnRp
Zmllci5jb25uZWN0aW9uSWRlbnRpZmllcigpKTsKKyAgICBhdXRvIHJlc3VsdCA9IGxvY2FsT3Jp
Z2luU3RvcmFnZU1hbmFnZXIob3JpZ2luKS5pZGJTdG9yYWdlTWFuYWdlcigqbV9pZGJTdG9yYWdl
UmVnaXN0cnkpLmdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucygpOworICAgIGNvbm5lY3Rp
b25Ub0NsaWVudC5kaWRHZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMocmVxdWVzdElkZW50
aWZpZXIsIFdURk1vdmUocmVzdWx0KSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0
b3JhZ2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0
d29ya1N0b3JhZ2VNYW5hZ2VyLmgKaW5kZXggMTVjMDM3MmU2NmE3ZjYyODQ5OTI3ZjFjMzdmMTZh
Njk1ODdmNDUwMS4uOWMzZDJkNjQwNmZlZTliMmI0ZTZjYTI2ZjdiNjVmZTBjNzhiODNiZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9y
YWdlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9O
ZXR3b3JrU3RvcmFnZU1hbmFnZXIuaApAQCAtMzYsNiArMzYsOCBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvQ2xpZW50T3JpZ2luLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtSGFuZGxlSWRl
bnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJ
ZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JREJSZXNvdXJjZUlkZW50aWZpZXIuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL0luZGV4ZWREQi5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQu
aD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCkBAIC00NCwxOCArNDYsMzEgQEAgY2xhc3Mg
U2hhcmVkRmlsZUhhbmRsZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgSURCQ3Vy
c29ySW5mbzsKK2NsYXNzIElEQktleURhdGE7CitjbGFzcyBJREJJbmRleEluZm87CitjbGFzcyBJ
REJPYmplY3RTdG9yZUluZm87CitjbGFzcyBJREJSZXF1ZXN0RGF0YTsKK2NsYXNzIElEQlRyYW5z
YWN0aW9uSW5mbzsKK2NsYXNzIElEQlZhbHVlOwogc3RydWN0IENsaWVudE9yaWdpbjsKK3N0cnVj
dCBJREJHZXRBbGxSZWNvcmRzRGF0YTsKK3N0cnVjdCBJREJHZXRSZWNvcmREYXRhOworc3RydWN0
IElEQkdldEFsbFJlY29yZHNEYXRhOworc3RydWN0IElEQkl0ZXJhdGVDdXJzb3JEYXRhOworc3Ry
dWN0IElEQktleVJhbmdlRGF0YTsKIGVudW0gY2xhc3MgU3RvcmFnZVR5cGUgOiB1aW50OF90Owog
fQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVS
ZWdpc3RyeTsKK2NsYXNzIElEQlN0b3JhZ2VSZWdpc3RyeTsKIGNsYXNzIFN0b3JhZ2VBcmVhUmVn
aXN0cnk7CiAKIGNsYXNzIE5ldHdvcmtTdG9yYWdlTWFuYWdlciBmaW5hbCA6IHB1YmxpYyBJUEM6
OkNvbm5lY3Rpb246OldvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxOZXR3b3JrU3RvcmFnZU1hbmFnZXI+IGNyZWF0ZShQQUw6OlNlc3Npb25JRCwgY29u
c3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGN1c3RvbUxvY2FsU3RvcmFnZVBhdGgpOwor
ICAgIHN0YXRpYyBSZWY8TmV0d29ya1N0b3JhZ2VNYW5hZ2VyPiBjcmVhdGUoUEFMOjpTZXNzaW9u
SUQsIElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3Qg
U3RyaW5nJiBjdXN0b21Mb2NhbFN0b3JhZ2VQYXRoLCBjb25zdCBTdHJpbmcmIGN1c3RvbUlEQlN0
b3JhZ2VQYXRoLCBjb25zdCBTdHJpbmcmIGN1c3RvbUNhY2hlU3RvcmFnZVBhdGgsIHVpbnQ2NF90
IGRlZmF1bHRPcmlnaW5RdW90YSwgdWludDY0X3QgZGVmYXVsdFRoaXJkUGFydHlPcmlnaW5RdW90
YSk7CiAgICAgc3RhdGljIGJvb2wgY2FuSGFuZGxlVHlwZXMoT3B0aW9uU2V0PFdlYnNpdGVEYXRh
VHlwZT4pOwogCiAgICAgdm9pZCBzdGFydFJlY2VpdmluZ01lc3NhZ2VGcm9tQ29ubmVjdGlvbihJ
UEM6OkNvbm5lY3Rpb24mKTsKQEAgLTY0LDYgKzc5LDcgQEAgcHVibGljOgogICAgIFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbklEOyB9CiAgICAgdm9p
ZCBjbG9zZSgpOwogICAgIHZvaWQgY2xlYXJTdG9yYWdlRm9yVGVzdGluZyhDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgZGlkSW5jcmVhc2VRdW90YShjb25zdCBXZWJDb3Jl
OjpDbGllbnRPcmlnaW4mLCBRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIsIHN0ZDo6b3B0
aW9uYWw8dWludDY0X3Q+IG5ld1F1b3RhKTsKICAgICB2b2lkIGZldGNoRGF0YShPcHRpb25TZXQ8
V2Vic2l0ZURhdGFUeXBlPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2Vic2l0ZURh
dGE6OkVudHJ5PiYmKT4mJik7CiAgICAgdm9pZCBkZWxldGVEYXRhKE9wdGlvblNldDxXZWJzaXRl
RGF0YVR5cGU+LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBkZWxldGVEYXRhTW9kaWZpZWRT
aW5jZShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgV2FsbFRpbWUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CkBAIC03MywxNCArODksMTggQEAgcHVibGljOgogICAgIHZvaWQgcmVz
dW1lKCk7CiAgICAgdm9pZCBoYW5kbGVMb3dNZW1vcnlXYXJuaW5nKCk7CiAgICAgdm9pZCBzeW5j
TG9jYWxTdG9yYWdlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCByZWdp
c3RlclRlbXBvcmFyeUJsb2JGaWxlUGF0aHMoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgVmVjdG9y
PFN0cmluZz4mKTsKKyAgICB2b2lkIHJlcXVlc3RTcGFjZShjb25zdCBXZWJDb3JlOjpDbGllbnRP
cmlnaW4mLCB1aW50NjRfdCBzaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsK
KyAgICB2b2lkIHJlc2V0UXVvdGFGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CisgICAgdm9pZCByZXNldFF1b3RhVXBkYXRlZEJhc2VkT25Vc2FnZUZvclRlc3RpbmcoY29u
c3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJik7CiAKIHByaXZhdGU6CiAgICAgTmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmlu
ZyYgY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCk7CisgICAgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyKFBB
TDo6U2Vzc2lvbklELCBJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBjb25zdCBTdHJpbmcmIHBh
dGgsIGNvbnN0IFN0cmluZyYgY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCwgY29uc3QgU3RyaW5nJiBj
dXN0b21JREJTdG9yYWdlUGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21DYWNoZVN0b3JhZ2VQYXRo
LCB1aW50NjRfdCBkZWZhdWx0T3JpZ2luUXVvdGEsIHVpbnQ2NF90IGRlZmF1bHRUaGlyZFBhcnR5
T3JpZ2luUXVvdGEpOwogICAgIH5OZXR3b3JrU3RvcmFnZU1hbmFnZXIoKTsKICAgICBPcmlnaW5T
dG9yYWdlTWFuYWdlciYgbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcihjb25zdCBXZWJDb3JlOjpD
bGllbnRPcmlnaW4mKTsKICAgICBib29sIHJlbW92ZU9yaWdpblN0b3JhZ2VNYW5hZ2VySWZQb3Nz
aWJsZShjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKICAgICB2b2lkIGRlbGV0ZU9yaWdp
bkRpcmVjdG9yeUlmUG9zc2libGUoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJik7Ci0gICAg
RmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeSYgZmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVS
ZWdpc3RyeSgpOwogCiAgICAgdm9pZCBmb3JFYWNoT3JpZ2luRGlyZWN0b3J5KGNvbnN0IEZ1bmN0
aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+Jik7CiAgICAgSGFzaFNldDxXZWJDb3JlOjpDbGllbnRP
cmlnaW4+IGdldEFsbE9yaWdpbnMoKTsKQEAgLTExOCw2ICsxMzgsMzQgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHJlbW92ZUl0ZW0oSVBDOjpDb25uZWN0aW9uJiwgU3RvcmFnZUFyZWFJZGVudGlmaWVy
LCBTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyLCBTdHJpbmcmJiBrZXksIFN0cmluZyYmIHVybFN0
cmluZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGNsZWFyKElQQzo6
Q29ubmVjdGlvbiYsIFN0b3JhZ2VBcmVhSWRlbnRpZmllciwgU3RvcmFnZUFyZWFJbXBsSWRlbnRp
ZmllciwgU3RyaW5nJiYgdXJsU3RyaW5nLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwog
CisgICAgLy8gTWVzc2FnZSBoYW5kbGVycyBmb3IgSW5kZXhlZERCLgorICAgIHZvaWQgb3BlbkRh
dGFiYXNlKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJik7
CisgICAgdm9pZCBvcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVl
c3REYXRhJik7CisgICAgdm9pZCBkZWxldGVEYXRhYmFzZShJUEM6OkNvbm5lY3Rpb24mLCBjb25z
dCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYpOworICAgIHZvaWQgZXN0YWJsaXNoVHJhbnNhY3Rp
b24odWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6
SURCVHJhbnNhY3Rpb25JbmZvJik7CisgICAgdm9pZCBkYXRhYmFzZUNvbm5lY3Rpb25QZW5kaW5n
Q2xvc2UodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcik7CisgICAgdm9pZCBk
YXRhYmFzZUNvbm5lY3Rpb25DbG9zZWQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRp
Zmllcik7CisgICAgdm9pZCBhYm9ydE9wZW5BbmRVcGdyYWRlTmVlZGVkKHVpbnQ2NF90IGRhdGFi
YXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRp
ZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKKyAgICB2b2lkIGRpZEZpcmVWZXJzaW9uQ2hh
bmdlRXZlbnQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2Vi
Q29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgV2Vi
Q29yZTo6SW5kZXhlZERCOjpDb25uZWN0aW9uQ2xvc2VkT25CZWhhbGZPZlNlcnZlcik7CisgICAg
dm9pZCBhYm9ydFRyYW5zYWN0aW9uKGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmll
ciYpOworICAgIHZvaWQgY29tbWl0VHJhbnNhY3Rpb24oY29uc3QgV2ViQ29yZTo6SURCUmVzb3Vy
Y2VJZGVudGlmaWVyJiwgdWludDY0X3QgcGVuZGluZ1JlcXVlc3RDb3VudCk7CisgICAgdm9pZCBk
aWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbih1aW50NjRfdCBkYXRhYmFz
ZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZp
ZXImKTsKKyAgICB2b2lkIGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVl
c3REYXRhJiwgY29uc3QgV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVJbmZvJik7CisgICAgdm9pZCBk
ZWxldGVPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IFN0
cmluZyYgb2JqZWN0U3RvcmVOYW1lKTsKKyAgICB2b2lkIHJlbmFtZU9iamVjdFN0b3JlKGNvbnN0
IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIG5ld05hbWUpOworICAgIHZvaWQgY2xlYXJPYmplY3RTdG9yZShjb25z
dCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmll
cik7CisgICAgdm9pZCBjcmVhdGVJbmRleChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYs
IGNvbnN0IFdlYkNvcmU6OklEQkluZGV4SW5mbyYpOworICAgIHZvaWQgZGVsZXRlSW5kZXgoY29u
c3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lKTsKKyAgICB2b2lkIHJlbmFtZUluZGV4KGNvbnN0
IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVy
LCB1aW50NjRfdCBpbmRleElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSk7CisgICAg
dm9pZCBwdXRPckFkZChJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0
RGF0YSYsIGNvbnN0IFdlYkNvcmU6OklEQktleURhdGEmLCBjb25zdCBXZWJDb3JlOjpJREJWYWx1
ZSYsIFdlYkNvcmU6OkluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlKTsKKyAgICB2
b2lkIGdldFJlY29yZChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IFdlYkNv
cmU6OklEQkdldFJlY29yZERhdGEmKTsKKyAgICB2b2lkIGdldEFsbFJlY29yZHMoY29uc3QgV2Vi
Q29yZTo6SURCUmVxdWVzdERhdGEmLCBjb25zdCBXZWJDb3JlOjpJREJHZXRBbGxSZWNvcmRzRGF0
YSYpOworICAgIHZvaWQgZ2V0Q291bnQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmLCBj
b25zdCBXZWJDb3JlOjpJREJLZXlSYW5nZURhdGEmKTsKKyAgICB2b2lkIGRlbGV0ZVJlY29yZChj
b25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IFdlYkNvcmU6OklEQktleVJhbmdl
RGF0YSYpOworICAgIHZvaWQgb3BlbkN1cnNvcihjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0
YSYsIGNvbnN0IFdlYkNvcmU6OklEQkN1cnNvckluZm8mKTsKKyAgICB2b2lkIGl0ZXJhdGVDdXJz
b3IoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmLCBjb25zdCBXZWJDb3JlOjpJREJJdGVy
YXRlQ3Vyc29yRGF0YSYpOworICAgIHZvaWQgZ2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25z
KElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYs
IGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYpOworCiAgICAgUEFMOjpTZXNzaW9uSUQgbV9z
ZXNzaW9uSUQ7CiAgICAgUmVmPFN1c3BlbmRhYmxlV29ya1F1ZXVlPiBtX3F1ZXVlOwogICAgIFN0
cmluZyBtX3BhdGg7CkBAIC0xMjcsNyArMTc1LDE0IEBAIHByaXZhdGU6CiAgICAgV2Vha0hhc2hT
ZXQ8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb25zOyAvLyBNYWluIHRocmVhZCBvbmx5Lgog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxGaWxlU3lzdGVtU3RvcmFnZUhhbmRsZVJlZ2lzdHJ5PiBtX2Zp
bGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFN0b3Jh
Z2VBcmVhUmVnaXN0cnk+IG1fc3RvcmFnZUFyZWFSZWdpc3RyeTsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8SURCU3RvcmFnZVJlZ2lzdHJ5PiBtX2lkYlN0b3JhZ2VSZWdpc3RyeTsKICAgICBTdHJpbmcg
bV9jdXN0b21Mb2NhbFN0b3JhZ2VQYXRoOworICAgIFN0cmluZyBtX2N1c3RvbUlEQlN0b3JhZ2VQ
YXRoOworICAgIFN0cmluZyBtX2N1c3RvbUNhY2hlU3RvcmFnZVBhdGg7CisgICAgdWludDY0X3Qg
bV9kZWZhdWx0T3JpZ2luUXVvdGE7CisgICAgdWludDY0X3QgbV9kZWZhdWx0VGhpcmRQYXJ0eU9y
aWdpblF1b3RhOworICAgIElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgbV9wYXJlbnRDb25uZWN0
aW9uOworICAgIEhhc2hNYXA8SVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCwgSGFzaFNldDxTdHJp
bmc+PiBtX3RlbXBvcmFyeUJsb2JQYXRoc0J5Q29ubmVjdGlvbjsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9y
YWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIubWVzc2FnZXMuaW4KaW5k
ZXggNTBiOTY3MDFiMDcwZGQ1YzMyNzExZGIxNDI3OTMwM2ZlNjUyMTFiNy4uNDczMDVlMGU5ODFj
YTVjZmFlMDc3NDI2YmYyNGI3ODE1YTRkNjRjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VN
YW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC00Nyw0ICs0NywzMSBAQAogICAgIFNldEl0ZW0oV2ViS2l0
OjpTdG9yYWdlQXJlYUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViS2l0OjpTdG9yYWdlQXJlYUlt
cGxJZGVudGlmaWVyIGltcGxJZGVudGlmaWVyLCBTdHJpbmcga2V5LCBTdHJpbmcgdmFsdWUsIFN0
cmluZyB1cmxTdHJpbmcpIC0+IChib29sIHF1b3RhRXhjZXB0aW9uKSBBc3luYyBXYW50c0Nvbm5l
Y3Rpb24KICAgICBSZW1vdmVJdGVtKFdlYktpdDo6U3RvcmFnZUFyZWFJZGVudGlmaWVyIGlkZW50
aWZpZXIsIFdlYktpdDo6U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllciBpbXBsSWRlbnRpZmllciwg
U3RyaW5nIGtleSwgU3RyaW5nIHVybFN0cmluZykgLT4gKCkgQXN5bmMgV2FudHNDb25uZWN0aW9u
CiAgICAgQ2xlYXIoV2ViS2l0OjpTdG9yYWdlQXJlYUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2Vi
S2l0OjpTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyIGltcGxJZGVudGlmaWVyLCBTdHJpbmcgdXJs
U3RyaW5nKSAtPiAoKSBBc3luYyBXYW50c0Nvbm5lY3Rpb24KKworICAgIE9wZW5EYXRhYmFzZShX
ZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YSkgV2FudHNDb25uZWN0aW9uCisgICAg
T3BlbkRCUmVxdWVzdENhbmNlbGxlZChXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0
YSkKKyAgICBEZWxldGVEYXRhYmFzZShXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0
YSkgV2FudHNDb25uZWN0aW9uCisgICAgRXN0YWJsaXNoVHJhbnNhY3Rpb24odWludDY0X3QgZGF0
YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25JbmZvIGlu
Zm8pCisgICAgRGF0YWJhc2VDb25uZWN0aW9uUGVuZGluZ0Nsb3NlKHVpbnQ2NF90IGRhdGFiYXNl
Q29ubmVjdGlvbklkZW50aWZpZXIpCisgICAgRGF0YWJhc2VDb25uZWN0aW9uQ2xvc2VkKHVpbnQ2
NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpCisgICAgQWJvcnRPcGVuQW5kVXBncmFk
ZU5lZWRlZCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpJ
REJSZXNvdXJjZUlkZW50aWZpZXIgdHJhbnNhY3Rpb25JZGVudGlmaWVyKQorICAgIERpZEZpcmVW
ZXJzaW9uQ2hhbmdlRXZlbnQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwg
V2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyIHJlcXVlc3RJZGVudGlmaWVyLCBXZWJDb3Jl
OjpJbmRleGVkREI6OkNvbm5lY3Rpb25DbG9zZWRPbkJlaGFsZk9mU2VydmVyIGNvbm5lY3Rpb25D
bG9zZWRPbkJlaGFsZk9mU2VydmVyKQorICAgIERpZEZpbmlzaEhhbmRsaW5nVmVyc2lvbkNoYW5n
ZVRyYW5zYWN0aW9uKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNv
cmU6OklEQlJlc291cmNlSWRlbnRpZmllciB0cmFuc2FjdGlvbklkZW50aWZpZXIpCisgICAgQWJv
cnRUcmFuc2FjdGlvbihXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXIgdHJhbnNhY3Rpb25J
ZGVudGlmaWVyKQorICAgIENvbW1pdFRyYW5zYWN0aW9uKFdlYkNvcmU6OklEQlJlc291cmNlSWRl
bnRpZmllciB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IHBlbmRpbmdSZXF1ZXN0Q291
bnQpCisgICAgQ3JlYXRlT2JqZWN0U3RvcmUoV2ViQ29yZTo6SURCUmVxdWVzdERhdGEgcmVxdWVz
dERhdGEsIFdlYkNvcmU6OklEQk9iamVjdFN0b3JlSW5mbyBpbmZvKQorICAgIERlbGV0ZU9iamVj
dFN0b3JlKFdlYkNvcmU6OklEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhLCBTdHJpbmcgb2JqZWN0
U3RvcmVOYW1lKQorICAgIFJlbmFtZU9iamVjdFN0b3JlKFdlYkNvcmU6OklEQlJlcXVlc3REYXRh
IHJlcXVlc3REYXRhLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIFN0cmluZyBuZXdO
YW1lKQorICAgIENsZWFyT2JqZWN0U3RvcmUoV2ViQ29yZTo6SURCUmVxdWVzdERhdGEgcmVxdWVz
dERhdGEsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllcikKKyAgICBDcmVhdGVJbmRleChX
ZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YSwgV2ViQ29yZTo6SURCSW5kZXhJbmZv
IGluZm8pCisgICAgRGVsZXRlSW5kZXgoV2ViQ29yZTo6SURCUmVxdWVzdERhdGEgcmVxdWVzdERh
dGEsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgU3RyaW5nIGluZGV4TmFtZSkKKyAg
ICBSZW5hbWVJbmRleChXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YSwgdWludDY0
X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRleElkZW50aWZpZXIsIFN0cmlu
ZyBuZXdOYW1lKQorICAgIFB1dE9yQWRkKFdlYkNvcmU6OklEQlJlcXVlc3REYXRhIHJlcXVlc3RE
YXRhLCBXZWJDb3JlOjpJREJLZXlEYXRhIGtleSwgV2ViQ29yZTo6SURCVmFsdWUgdmFsdWUsIFdl
YkNvcmU6OkluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlIG92ZXJ3cml0ZU1vZGUp
IFdhbnRzQ29ubmVjdGlvbgorICAgIEdldFJlY29yZChXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSBy
ZXF1ZXN0RGF0YSwgc3RydWN0IFdlYkNvcmU6OklEQkdldFJlY29yZERhdGEgZ2V0UmVjb3JkRGF0
YSkKKyAgICBHZXRBbGxSZWNvcmRzKFdlYkNvcmU6OklEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRh
LCBzdHJ1Y3QgV2ViQ29yZTo6SURCR2V0QWxsUmVjb3Jkc0RhdGEgZ2V0QWxsUmVjb3Jkc0RhdGEp
CisgICAgR2V0Q291bnQoV2ViQ29yZTo6SURCUmVxdWVzdERhdGEgcmVxdWVzdERhdGEsIHN0cnVj
dCBXZWJDb3JlOjpJREJLZXlSYW5nZURhdGEgcmFuZ2UpCisgICAgRGVsZXRlUmVjb3JkKFdlYkNv
cmU6OklEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhLCBzdHJ1Y3QgV2ViQ29yZTo6SURCS2V5UmFu
Z2VEYXRhIHJhbmdlKQorICAgIE9wZW5DdXJzb3IoV2ViQ29yZTo6SURCUmVxdWVzdERhdGEgcmVx
dWVzdERhdGEsIFdlYkNvcmU6OklEQkN1cnNvckluZm8gaW5mbykKKyAgICBJdGVyYXRlQ3Vyc29y
KFdlYkNvcmU6OklEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhLCBzdHJ1Y3QgV2ViQ29yZTo6SURC
SXRlcmF0ZUN1cnNvckRhdGEgZGF0YSkKKyAgICBHZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lv
bnMoV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyIHJlcXVlc3RJZGVudGlmaWVyLCBzdHJ1
Y3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbikgV2FudHNDb25uZWN0aW9uCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFn
ZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdp
blN0b3JhZ2VNYW5hZ2VyLmNwcAppbmRleCA1ODgzMWVhYTI2NjBhZjg3NGRlNmI5NTg5MGU1N2E3
ZmI2MTU1N2VjLi5iY2MwZjMzODc3OWY0OTMxMDA3NGE3YzZjYmQyZmNhZTc1MzZkYzA2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFn
ZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9P
cmlnaW5TdG9yYWdlTWFuYWdlci5jcHAKQEAgLTI2LDggKzI2LDExIEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiT3JpZ2luU3RvcmFnZU1hbmFnZXIuaCIKIAorI2luY2x1ZGUgIkNh
Y2hlU3RvcmFnZUVuZ2luZS5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVn
aXN0cnkuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIuaCIKKyNpbmNsdWRl
ICJJREJTdG9yYWdlTWFuYWdlci5oIgorI2luY2x1ZGUgIklEQlN0b3JhZ2VSZWdpc3RyeS5oIgog
I2luY2x1ZGUgIkxvY2FsU3RvcmFnZU1hbmFnZXIuaCIKICNpbmNsdWRlICJNZW1vcnlTdG9yYWdl
QXJlYS5oIgogI2luY2x1ZGUgIlNlc3Npb25TdG9yYWdlTWFuYWdlci5oIgpAQCAtNDQsMTAgKzQ3
LDExIEBAIGVudW0gY2xhc3MgT3JpZ2luU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VCdWNrZXRNb2Rl
IDogYm9vbCB7IEJlc3RFZmZvcnQsIFBlcnNpc3RlCiBjbGFzcyBPcmlnaW5TdG9yYWdlTWFuYWdl
cjo6U3RvcmFnZUJ1Y2tldCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
Ci0gICAgU3RvcmFnZUJ1Y2tldChjb25zdCBTdHJpbmcmIHJvb3RQYXRoLCBjb25zdCBTdHJpbmcm
IGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlUGF0aCkKKyAgICBTdG9yYWdl
QnVja2V0KGNvbnN0IFN0cmluZyYgcm9vdFBhdGgsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VQYXRoLCBjb25zdCBTdHJpbmcmIGlkYlN0b3JhZ2VQ
YXRoKQogICAgICAgICA6IG1fcm9vdFBhdGgocm9vdFBhdGgpCiAgICAgICAgICwgbV9pZGVudGlm
aWVyKGlkZW50aWZpZXIpCiAgICAgICAgICwgbV9sb2NhbFN0b3JhZ2VQYXRoKGxvY2FsU3RvcmFn
ZVBhdGgpCisgICAgICAgICwgbV9pZGJTdG9yYWdlUGF0aChpZGJTdG9yYWdlUGF0aCkKICAgICB7
CiAgICAgfQogCkBAIC03MCw2ICs3NCw3IEBAIHB1YmxpYzoKICAgICAgICAgRmlsZVN5c3RlbSwK
ICAgICAgICAgTG9jYWxTdG9yYWdlLAogICAgICAgICBTZXNzaW9uU3RvcmFnZSwKKyAgICAgICAg
SW5kZXhlZERCLAogICAgIH07CiAKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJzaXRlRGF0
YVR5cGU+IHRvV2Vic2l0ZURhdGFUeXBlKGNvbnN0IFN0cmluZyYgc3RvcmFnZUlkZW50aWZpZXIp
CkBAIC04MCw2ICs4NSw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBXZWJzaXRlRGF0
YVR5cGU6OkxvY2FsU3RvcmFnZTsKICAgICAgICAgaWYgKHN0b3JhZ2VJZGVudGlmaWVyID09ICJT
ZXNzaW9uU3RvcmFnZSJfcykKICAgICAgICAgICAgIHJldHVybiBXZWJzaXRlRGF0YVR5cGU6OlNl
c3Npb25TdG9yYWdlOworICAgICAgICBpZiAoc3RvcmFnZUlkZW50aWZpZXIgPT0gIkluZGV4ZWRE
QiJfcykKKyAgICAgICAgICAgIHJldHVybiBXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFi
YXNlczsKIAogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KQEAgLTkzLDYgKzEw
MCw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiAiTG9jYWxTdG9yYWdlIl9zOwogICAg
ICAgICBjYXNlIFN0b3JhZ2VUeXBlOjpTZXNzaW9uU3RvcmFnZToKICAgICAgICAgICAgIHJldHVy
biAiU2Vzc2lvblN0b3JhZ2UiX3M7CisgICAgICAgIGNhc2UgU3RvcmFnZVR5cGU6OkluZGV4ZWRE
QjoKKyAgICAgICAgICAgIHJldHVybiAiSW5kZXhlZERCIl9zOwogICAgICAgICBkZWZhdWx0Ogog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTE0MywxMyArMTUyLDI3IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIG1fc2Vzc2lvblN0b3JhZ2VNYW5hZ2VyLmdldCgpOwogICAgIH0K
IAorICAgIElEQlN0b3JhZ2VNYW5hZ2VyJiBpZGJTdG9yYWdlTWFuYWdlcihJREJTdG9yYWdlUmVn
aXN0cnkmIHJlZ2lzdHJ5LCBJREJTdG9yYWdlTWFuYWdlcjo6UXVvdGFDaGVja0Z1bmN0aW9uJiYg
cXVvdGFDaGVja0Z1bmN0aW9uKQorICAgIHsKKyAgICAgICAgaWYgKCFtX2lkYlN0b3JhZ2VNYW5h
Z2VyKQorICAgICAgICAgICAgbV9pZGJTdG9yYWdlTWFuYWdlciA9IG1ha2VVbmlxdWU8SURCU3Rv
cmFnZU1hbmFnZXI+KG1faWRiU3RvcmFnZVBhdGgsIHJlZ2lzdHJ5LCBXVEZNb3ZlKHF1b3RhQ2hl
Y2tGdW5jdGlvbikpOworCisgICAgICAgIHJldHVybiAqbV9pZGJTdG9yYWdlTWFuYWdlcjsKKyAg
ICB9CisKKyAgICBJREJTdG9yYWdlTWFuYWdlciogZXhpc3RpbmdJREJTdG9yYWdlTWFuYWdlcigp
CisgICAgeworICAgICAgICByZXR1cm4gbV9pZGJTdG9yYWdlTWFuYWdlci5nZXQoKTsKKyAgICB9
CisKICAgICBib29sIGlzQWN0aXZlKCkgY29uc3QKICAgICB7CiAgICAgICAgIC8vIFdlIGNhbm5v
dCByZW1vdmUgdGhlIGJ1Y2tldCBpZiBpdCBoYXMgaW4tbWVtb3J5IGRhdGEsIG90aGVyd2lzZSBz
ZXNzaW9uCiAgICAgICAgIC8vIGRhdGEgbWF5IGJlIGxvc3QuCiAgICAgICAgIHJldHVybiAobV9m
aWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIgJiYgbV9maWxlU3lzdGVtU3RvcmFnZU1hbmFnZXItPmlz
QWN0aXZlKCkpCiAgICAgICAgICAgICB8fCAobV9sb2NhbFN0b3JhZ2VNYW5hZ2VyICYmIChtX2xv
Y2FsU3RvcmFnZU1hbmFnZXItPmhhc0RhdGFJbk1lbW9yeSgpIHx8IG1fbG9jYWxTdG9yYWdlTWFu
YWdlci0+aXNBY3RpdmUoKSkpCi0gICAgICAgICAgICB8fCAobV9zZXNzaW9uU3RvcmFnZU1hbmFn
ZXIgJiYgKG1fc2Vzc2lvblN0b3JhZ2VNYW5hZ2VyLT5oYXNEYXRhSW5NZW1vcnkoKSB8fCBtX3Nl
c3Npb25TdG9yYWdlTWFuYWdlci0+aXNBY3RpdmUoKSkpOworICAgICAgICAgICAgfHwgKG1fc2Vz
c2lvblN0b3JhZ2VNYW5hZ2VyICYmIChtX3Nlc3Npb25TdG9yYWdlTWFuYWdlci0+aGFzRGF0YUlu
TWVtb3J5KCkgfHwgbV9zZXNzaW9uU3RvcmFnZU1hbmFnZXItPmlzQWN0aXZlKCkpKQorICAgICAg
ICAgICAgfHwgKG1faWRiU3RvcmFnZU1hbmFnZXIgJiYgKG1faWRiU3RvcmFnZU1hbmFnZXItPmhh
c0RhdGFJbk1lbW9yeSgpIHx8IG1faWRiU3RvcmFnZU1hbmFnZXItPmlzQWN0aXZlKCkpKTsKICAg
ICB9CiAKICAgICBib29sIGlzRW1wdHkoKSBjb25zdApAQCAtMTY1LDcgKzE4OCw4IEBAIHB1Ymxp
YzoKICAgICAgICAgaWYgKGhhc1ZhbGlkRmlsZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgICAgICByZXR1cm4gIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobV9sb2NhbFN0b3JhZ2VQ
YXRoKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkobV9pZGJTdG9y
YWdlUGF0aCk7CisgICAgICAgIHJldHVybiAhRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhtX2xvY2Fs
U3RvcmFnZVBhdGgpICYmICFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG1faWRiU3RvcmFnZVBhdGgp
OwogICAgIH0KIAogICAgIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGZldGNoRGF0YVR5cGVz
SW5MaXN0KE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHR5cGVzKQpAQCAtMTg2LDE0ICsyMTAs
MjAgQEAgcHVibGljOgogCiAgICAgICAgIGlmICh0eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5
cGU6OlNlc3Npb25TdG9yYWdlKSAmJiBtb2RpZmllZFNpbmNlVGltZSA8IFdhbGxUaW1lOjpub3co
KSkKICAgICAgICAgICAgIGRlbGV0ZVNlc3Npb25TdG9yYWdlRGF0YSgpOworCisgICAgICAgIGlm
ICh0eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykpCisg
ICAgICAgICAgICBkZWxldGVJREJTdG9yYWdlRGF0YShtb2RpZmllZFNpbmNlVGltZSk7CiAgICAg
fQogCi0gICAgdm9pZCBtb3ZlRGF0YShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYg
bG9jYWxTdG9yYWdlUGF0aCkKKyAgICB2b2lkIG1vdmVEYXRhKGNvbnN0IFN0cmluZyYgcGF0aCwg
Y29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VQYXRoLCBjb25zdCBTdHJpbmcmIGlkYlN0b3JhZ2VQ
YXRoKQogICAgIHsKICAgICAgICAgbV9maWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIgPSBudWxscHRy
OwogICAgICAgICBpZiAobV9sb2NhbFN0b3JhZ2VNYW5hZ2VyKQogICAgICAgICAgICAgbV9sb2Nh
bFN0b3JhZ2VNYW5hZ2VyLT5jbG9zZSgpOwogCisgICAgICAgIGlmIChtX2lkYlN0b3JhZ2VNYW5h
Z2VyKQorICAgICAgICAgICAgbV9pZGJTdG9yYWdlTWFuYWdlci0+Y2xvc2VEYXRhYmFzZXNGb3JE
ZWxldGlvbigpOworCiAgICAgICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhGaWxl
U3lzdGVtOjpwYXJlbnRQYXRoKHBhdGgpKTsKICAgICAgICAgRmlsZVN5c3RlbTo6bW92ZUZpbGUo
bV9yb290UGF0aCwgcGF0aCk7CiAKQEAgLTIwMSw2ICsyMzEsMTEgQEAgcHVibGljOgogICAgICAg
ICAgICAgRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKEZpbGVTeXN0ZW06OnBhcmVudFBh
dGgobG9jYWxTdG9yYWdlUGF0aCkpOwogICAgICAgICAgICAgV2ViQ29yZTo6U1FMaXRlRmlsZVN5
c3RlbTo6bW92ZURhdGFiYXNlRmlsZShtX2xvY2FsU3RvcmFnZVBhdGgsIGxvY2FsU3RvcmFnZVBh
dGgpOwogICAgICAgICB9CisKKyAgICAgICAgaWYgKCFtX2lkYlN0b3JhZ2VQYXRoLmlzRW1wdHko
KSAmJiAhaWRiU3RvcmFnZVBhdGguaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBGaWxlU3lzdGVt
OjptYWtlQWxsRGlyZWN0b3JpZXMoRmlsZVN5c3RlbTo6cGFyZW50UGF0aChpZGJTdG9yYWdlUGF0
aCkpOworICAgICAgICAgICAgV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6bW92ZURhdGFiYXNl
RmlsZShtX2lkYlN0b3JhZ2VQYXRoLCBpZGJTdG9yYWdlUGF0aCk7CisgICAgICAgIH0KICAgICB9
CiAKIHByaXZhdGU6CkBAIC0yMTcsNiArMjUyLDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgcmVzdWx0LmFkZChXZWJzaXRlRGF0YVR5cGU6OlNlc3Npb25TdG9yYWdlKTsKICAgICAgICAg
fQogCisgICAgICAgIGlmICh0eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWRE
QkRhdGFiYXNlcykpIHsKKyAgICAgICAgICAgIGlmIChtX2lkYlN0b3JhZ2VNYW5hZ2VyICYmIG1f
aWRiU3RvcmFnZU1hbmFnZXItPmhhc0RhdGFJbk1lbW9yeSgpKQorICAgICAgICAgICAgICAgIHJl
c3VsdC5hZGQoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpOworICAgICAgICB9
CisKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKQEAgLTIzMyw2ICsyNzMsMTEgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICByZXN1bHQuYWRkKFdlYnNpdGVEYXRhVHlwZTo6TG9j
YWxTdG9yYWdlKTsKICAgICAgICAgfQogCisgICAgICAgIGlmICh0eXBlcy5jb250YWlucyhXZWJz
aXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykgJiYgIXJlc3VsdC5jb250YWlucyhXZWJz
aXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykpIHsKKyAgICAgICAgICAgIGlmIChhdXRv
IGRhdGFiYXNlcyA9IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobV9pZGJTdG9yYWdlUGF0aCk7
ICFkYXRhYmFzZXMuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQoV2Vic2l0
ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpOworICAgICAgICB9CisKICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICB9CiAKQEAgLTI3MCw2ICszMTUsMTQgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIG1fc2Vzc2lvblN0b3JhZ2VNYW5hZ2VyID0gbnVsbHB0cjsKICAgICB9CiAgICAgCisg
ICAgdm9pZCBkZWxldGVJREJTdG9yYWdlRGF0YShXYWxsVGltZSB0aW1lKQorICAgIHsKKyAgICAg
ICAgaWYgKG1faWRiU3RvcmFnZU1hbmFnZXIpCisgICAgICAgICAgICBtX2lkYlN0b3JhZ2VNYW5h
Z2VyLT5jbG9zZURhdGFiYXNlc0ZvckRlbGV0aW9uKCk7CisKKyAgICAgICAgRmlsZVN5c3RlbTo6
ZGVsZXRlQWxsRmlsZXNNb2RpZmllZFNpbmNlKG1faWRiU3RvcmFnZVBhdGgsIHRpbWUpOworICAg
IH0KKyAgICAKICAgICBTdHJpbmcgbV9yb290UGF0aDsKICAgICBTdHJpbmcgbV9pZGVudGlmaWVy
OwogICAgIFN0b3JhZ2VCdWNrZXRNb2RlIG1fbW9kZSB7IFN0b3JhZ2VCdWNrZXRNb2RlOjpCZXN0
RWZmb3J0IH07CkBAIC0yNzcsMTEgKzMzMCwyNCBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVl
X3B0cjxMb2NhbFN0b3JhZ2VNYW5hZ2VyPiBtX2xvY2FsU3RvcmFnZU1hbmFnZXI7CiAgICAgU3Ry
aW5nIG1fbG9jYWxTdG9yYWdlUGF0aDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2Vzc2lvblN0b3Jh
Z2VNYW5hZ2VyPiBtX3Nlc3Npb25TdG9yYWdlTWFuYWdlcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
SURCU3RvcmFnZU1hbmFnZXI+IG1faWRiU3RvcmFnZU1hbmFnZXI7CisgICAgU3RyaW5nIG1faWRi
U3RvcmFnZVBhdGg7CiB9OwogCi1PcmlnaW5TdG9yYWdlTWFuYWdlcjo6T3JpZ2luU3RvcmFnZU1h
bmFnZXIoU3RyaW5nJiYgcGF0aCwgU3RyaW5nJiYgbG9jYWxTdG9yYWdlUGF0aCkKK3N0YXRpYyBS
ZWY8UXVvdGFNYW5hZ2VyPiBjcmVhdGVRdW90YU1hbmFnZXIodWludDY0X3QgcXVvdGEsIGNvbnN0
IFN0cmluZyYgaWRiU3RvcmFnZVBhdGgsIGNvbnN0IFN0cmluZyYgY2FjaGVTdG9yYWdlUGF0aCwg
UXVvdGFNYW5hZ2VyOjpJbmNyZWFzZVF1b3RhRnVuY3Rpb24mJiBpbmNyZWFzZVF1b3RhRnVuY3Rp
b24pCit7CisgICAgUXVvdGFNYW5hZ2VyOjpHZXRVc2FnZUZ1bmN0aW9uIGdldFVzYWdlRnVuY3Rp
b24gPSBbaWRiU3RvcmFnZVBhdGgsIGNhY2hlU3RvcmFnZVBhdGhdKCkgeworICAgICAgICByZXR1
cm4gSURCU3RvcmFnZU1hbmFnZXI6OmlkYlN0b3JhZ2VTaXplKGlkYlN0b3JhZ2VQYXRoKSArIENh
Y2hlU3RvcmFnZTo6RW5naW5lOjpkaXNrVXNhZ2UoY2FjaGVTdG9yYWdlUGF0aCk7CisgICAgfTsK
KyAgICByZXR1cm4gUXVvdGFNYW5hZ2VyOjpjcmVhdGUocXVvdGEsIFdURk1vdmUoZ2V0VXNhZ2VG
dW5jdGlvbiksIFdURk1vdmUoaW5jcmVhc2VRdW90YUZ1bmN0aW9uKSk7Cit9CisKK09yaWdpblN0
b3JhZ2VNYW5hZ2VyOjpPcmlnaW5TdG9yYWdlTWFuYWdlcih1aW50NjRfdCBxdW90YSwgUXVvdGFN
YW5hZ2VyOjpJbmNyZWFzZVF1b3RhRnVuY3Rpb24mJiBpbmNyZWFzZVF1b3RhRnVuY3Rpb24sIFN0
cmluZyYmIHBhdGgsIFN0cmluZyYmIGxvY2FsU3RvcmFnZVBhdGgsIFN0cmluZyYmIGlkYlN0b3Jh
Z2VQYXRoLCBTdHJpbmcmJiBjYWNoZVN0b3JhZ2VQYXRoKQogICAgIDogbV9wYXRoKFdURk1vdmUo
cGF0aCkpCiAgICAgLCBtX2xvY2FsU3RvcmFnZVBhdGgoV1RGTW92ZShsb2NhbFN0b3JhZ2VQYXRo
KSkKKyAgICAsIG1faWRiU3RvcmFnZVBhdGgoV1RGTW92ZShpZGJTdG9yYWdlUGF0aCkpCisgICAg
LCBtX2NhY2hlU3RvcmFnZVBhdGgoV1RGTW92ZShjYWNoZVN0b3JhZ2VQYXRoKSkKKyAgICAsIG1f
cXVvdGFNYW5hZ2VyKGNyZWF0ZVF1b3RhTWFuYWdlcihxdW90YSwgbV9pZGJTdG9yYWdlUGF0aCwg
bV9jYWNoZVN0b3JhZ2VQYXRoLCBXVEZNb3ZlKGluY3JlYXNlUXVvdGFGdW5jdGlvbikpKQogewog
ICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogfQpAQCAtMjk3LDExICszNjMsMTYgQEAg
dm9pZCBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6Y29ubmVjdGlvbkNsb3NlZChJUEM6OkNvbm5lY3Rp
b246OlVuaXF1ZUlEIGNvbm5lY3Rpb24KIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVj
a2V0JiBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6ZGVmYXVsdEJ1Y2tldCgpCiB7CiAgICAgaWYgKCFt
X2RlZmF1bHRCdWNrZXQpCi0gICAgICAgIG1fZGVmYXVsdEJ1Y2tldCA9IG1ha2VVbmlxdWU8U3Rv
cmFnZUJ1Y2tldD4obV9wYXRoLCAiZGVmYXVsdCJfcywgbV9sb2NhbFN0b3JhZ2VQYXRoKTsKKyAg
ICAgICAgbV9kZWZhdWx0QnVja2V0ID0gbWFrZVVuaXF1ZTxTdG9yYWdlQnVja2V0PihtX3BhdGgs
ICJkZWZhdWx0Il9zLCBtX2xvY2FsU3RvcmFnZVBhdGgsIG1faWRiU3RvcmFnZVBhdGgpOwogCiAg
ICAgcmV0dXJuICptX2RlZmF1bHRCdWNrZXQ7CiB9CiAKK1F1b3RhTWFuYWdlciYgT3JpZ2luU3Rv
cmFnZU1hbmFnZXI6OnF1b3RhTWFuYWdlcigpCit7CisgICAgcmV0dXJuIG1fcXVvdGFNYW5hZ2Vy
LmdldCgpOworfQorCiBGaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXImIE9yaWdpblN0b3JhZ2VNYW5h
Z2VyOjpmaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIoRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdp
c3RyeSYgcmVnaXN0cnkpCiB7CiAgICAgcmV0dXJuIGRlZmF1bHRCdWNrZXQoKS5maWxlU3lzdGVt
U3RvcmFnZU1hbmFnZXIocmVnaXN0cnkpOwpAQCAtMzI3LDYgKzM5OCwyMyBAQCBTZXNzaW9uU3Rv
cmFnZU1hbmFnZXIqIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpleGlzdGluZ1Nlc3Npb25TdG9yYWdl
TWFuYWdlcigpCiAgICAgcmV0dXJuIGRlZmF1bHRCdWNrZXQoKS5leGlzdGluZ1Nlc3Npb25TdG9y
YWdlTWFuYWdlcigpOwogfQogCitJREJTdG9yYWdlTWFuYWdlciYgT3JpZ2luU3RvcmFnZU1hbmFn
ZXI6OmlkYlN0b3JhZ2VNYW5hZ2VyKElEQlN0b3JhZ2VSZWdpc3RyeSYgcmVnaXN0cnkpCit7Cisg
ICAgcmV0dXJuIGRlZmF1bHRCdWNrZXQoKS5pZGJTdG9yYWdlTWFuYWdlcihyZWdpc3RyeSwgW3F1
b3RhTWFuYWdlciA9IFdlYWtQdHIgeyB0aGlzLT5xdW90YU1hbmFnZXIoKSB9XSh1aW50NjRfdCBz
cGFjZVJlcXVlc3RlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikgbXV0YWJsZSB7CisgICAgICAgIGlmICghcXVvdGFNYW5hZ2VyKQorICAgICAgICAg
ICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKworICAgICAgICBxdW90YU1hbmFn
ZXItPnJlcXVlc3RTcGFjZShzcGFjZVJlcXVlc3RlZCwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1dG8gZGVjaXNpb24pIG11dGFibGUgeworICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoZGVjaXNpb24gPT0gUXVvdGFNYW5hZ2VyOjpEZWNpc2lv
bjo6R3JhbnQpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKworSURCU3RvcmFnZU1hbmFnZXIq
IE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpleGlzdGluZ0lEQlN0b3JhZ2VNYW5hZ2VyKCkKK3sKKyAg
ICByZXR1cm4gZGVmYXVsdEJ1Y2tldCgpLmV4aXN0aW5nSURCU3RvcmFnZU1hbmFnZXIoKTsKK30K
KwogYm9vbCBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6aXNBY3RpdmUoKQogewogICAgIHJldHVybiBk
ZWZhdWx0QnVja2V0KCkuaXNBY3RpdmUoKTsKQEAgLTM1OSwxMSArNDQ3LDExIEBAIHZvaWQgT3Jp
Z2luU3RvcmFnZU1hbmFnZXI6OmRlbGV0ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4g
dHlwZXMsIFdhbGxUaW1lCiAgICAgZGVmYXVsdEJ1Y2tldCgpLmRlbGV0ZURhdGEodHlwZXMsIG1v
ZGlmaWVkU2luY2UpOwogfQogCi12b2lkIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjptb3ZlRGF0YShj
b25zdCBTdHJpbmcmIG5ld1BhdGgsIGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlUGF0aCkKK3Zv
aWQgT3JpZ2luU3RvcmFnZU1hbmFnZXI6Om1vdmVEYXRhKGNvbnN0IFN0cmluZyYgbmV3UGF0aCwg
Y29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VQYXRoLCBjb25zdCBTdHJpbmcmIGlkYlN0b3JhZ2VQ
YXRoKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgZGVmYXVsdEJ1
Y2tldCgpLm1vdmVEYXRhKG5ld1BhdGgsIGxvY2FsU3RvcmFnZVBhdGgpOworICAgIGRlZmF1bHRC
dWNrZXQoKS5tb3ZlRGF0YShuZXdQYXRoLCBsb2NhbFN0b3JhZ2VQYXRoLCBpZGJTdG9yYWdlUGF0
aCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2VyLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuaAppbmRl
eCA1ZTc2Njk5ODZlNDY2ODVmMzg5YjdhNTI3MWU2NmQwZTYzYzJkMTllLi5lYzQ2YzU0YjMxMTFm
YjAxYjNjZTY5NjkyMDdjMTNiZTVkOTk5ZDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuaApAQCAt
MjYsMTYgKzI2LDE1IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIK
KyNpbmNsdWRlICJRdW90YU1hbmFnZXIuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgewotc3RydWN0IENsaWVudE9yaWdpbjsKLX0KLQogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnk7
CiBjbGFzcyBGaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXI7CitjbGFzcyBJREJTdG9yYWdlTWFuYWdl
cjsKK2NsYXNzIElEQlN0b3JhZ2VSZWdpc3RyeTsKIGNsYXNzIExvY2FsU3RvcmFnZU1hbmFnZXI7
CiBjbGFzcyBTZXNzaW9uU3RvcmFnZU1hbmFnZXI7CiBjbGFzcyBTdG9yYWdlQXJlYVJlZ2lzdHJ5
OwpAQCAtNDQsMzUgKzQzLDM4IEBAIGVudW0gY2xhc3MgV2Vic2l0ZURhdGFUeXBlIDogdWludDMy
X3Q7CiBjbGFzcyBPcmlnaW5TdG9yYWdlTWFuYWdlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6Ci0gICAgT3JpZ2luU3RvcmFnZU1hbmFnZXIoU3RyaW5nJiYgcGF0aCwg
U3RyaW5nJiYgbG9jYWxTdG9yYWdlUGF0aCk7CisgICAgT3JpZ2luU3RvcmFnZU1hbmFnZXIodWlu
dDY0X3QgcXVvdGEsIFF1b3RhTWFuYWdlcjo6SW5jcmVhc2VRdW90YUZ1bmN0aW9uJiYsIFN0cmlu
ZyYmIHBhdGgsIFN0cmluZyYmIGxvY2FsU3RvcmFnZVBhdGgsIFN0cmluZyYmIGlkYlN0b3JhZ2VQ
YXRoLCBTdHJpbmcmJiBjYWNoZVN0b3JhZ2VQYXRoKTsKICAgICB+T3JpZ2luU3RvcmFnZU1hbmFn
ZXIoKTsKIAogICAgIHZvaWQgY29ubmVjdGlvbkNsb3NlZChJUEM6OkNvbm5lY3Rpb246OlVuaXF1
ZUlEKTsKICAgICBib29sIHBlcnNpc3RlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGVyc2lzdGVkOyB9
CiAgICAgdm9pZCBzZXRQZXJzaXN0ZWQoYm9vbCB2YWx1ZSk7CisgICAgUXVvdGFNYW5hZ2VyJiBx
dW90YU1hbmFnZXIoKTsKICAgICBGaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXImIGZpbGVTeXN0ZW1T
dG9yYWdlTWFuYWdlcihGaWxlU3lzdGVtU3RvcmFnZUhhbmRsZVJlZ2lzdHJ5Jik7CiAgICAgTG9j
YWxTdG9yYWdlTWFuYWdlciYgbG9jYWxTdG9yYWdlTWFuYWdlcihTdG9yYWdlQXJlYVJlZ2lzdHJ5
Jik7CiAgICAgTG9jYWxTdG9yYWdlTWFuYWdlciogZXhpc3RpbmdMb2NhbFN0b3JhZ2VNYW5hZ2Vy
KCk7CiAgICAgU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyJiBzZXNzaW9uU3RvcmFnZU1hbmFnZXIoU3Rv
cmFnZUFyZWFSZWdpc3RyeSYpOwogICAgIFNlc3Npb25TdG9yYWdlTWFuYWdlciogZXhpc3RpbmdT
ZXNzaW9uU3RvcmFnZU1hbmFnZXIoKTsKKyAgICBJREJTdG9yYWdlTWFuYWdlciYgaWRiU3RvcmFn
ZU1hbmFnZXIoSURCU3RvcmFnZVJlZ2lzdHJ5Jik7CisgICAgSURCU3RvcmFnZU1hbmFnZXIqIGV4
aXN0aW5nSURCU3RvcmFnZU1hbmFnZXIoKTsKICAgICBib29sIGlzQWN0aXZlKCk7CiAgICAgYm9v
bCBpc0VtcHR5KCk7CiAgICAgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZmV0Y2hEYXRhVHlw
ZXNJbkxpc3QoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4pOwogICAgIHZvaWQgZGVsZXRlRGF0
YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgV2FsbFRpbWUpOwotICAgIHZvaWQgbW92ZURh
dGEoY29uc3QgU3RyaW5nJiBuZXdQYXRoLCBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZVBhdGgp
OworICAgIHZvaWQgbW92ZURhdGEoY29uc3QgU3RyaW5nJiBuZXdQYXRoLCBjb25zdCBTdHJpbmcm
IGxvY2FsU3RvcmFnZVBhdGgsIGNvbnN0IFN0cmluZyYgaWRiU3RvcmFnZVBhdGgpOwogCiBwcml2
YXRlOgogICAgIGVudW0gY2xhc3MgU3RvcmFnZUJ1Y2tldE1vZGUgOiBib29sOwogICAgIGNsYXNz
IFN0b3JhZ2VCdWNrZXQ7CiAgICAgU3RvcmFnZUJ1Y2tldCYgZGVmYXVsdEJ1Y2tldCgpOwogCi0g
ICAgdm9pZCBjcmVhdGVPcmlnaW5GaWxlSWZOZWNlc3NhcnkoY29uc3QgV2ViQ29yZTo6Q2xpZW50
T3JpZ2luJik7Ci0gICAgdm9pZCBkZWxldGVPcmlnaW5GaWxlSWZOZWNlc3NhcnkoKTsKLQogICAg
IHN0ZDo6dW5pcXVlX3B0cjxTdG9yYWdlQnVja2V0PiBtX2RlZmF1bHRCdWNrZXQ7CiAgICAgU3Ry
aW5nIG1fcGF0aDsKICAgICBib29sIG1fcGVyc2lzdGVkIHsgZmFsc2UgfTsKICAgICBTdHJpbmcg
bV9sb2NhbFN0b3JhZ2VQYXRoOworICAgIFN0cmluZyBtX2lkYlN0b3JhZ2VQYXRoOworICAgIFN0
cmluZyBtX2NhY2hlU3RvcmFnZVBhdGg7CisgICAgUmVmPFF1b3RhTWFuYWdlcj4gbV9xdW90YU1h
bmFnZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9RdW90YU1hbmFnZXIuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1F1b3RhTWFuYWdlci5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YTcxZjE3NTg5ODU3YTk5ZDM3NGVjYWQ4ZDJlZTdhNDIxYTdmZjA2OAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9RdW90YU1hbmFnZXIuY3Bw
CkBAIC0wLDAgKzEsMTMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlF1b3RhTWFuYWdlci5oIgorCisjaW5jbHVkZSA8d3RmL1NldEZvclNjb3BlLmg+CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitSZWY8UXVvdGFNYW5hZ2VyPiBRdW90YU1hbmFnZXI6OmNy
ZWF0ZSh1aW50NjRfdCBxdW90YSwgR2V0VXNhZ2VGdW5jdGlvbiYmIGdldFVzYWdlRnVuY3Rpb24s
IEluY3JlYXNlUXVvdGFGdW5jdGlvbiYmIGluY3JlYXNlUXVvdGFGdW5jdGlvbikKK3sKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBRdW90YU1hbmFnZXIocXVvdGEsIFdURk1vdmUoZ2V0VXNhZ2VG
dW5jdGlvbiksIFdURk1vdmUoaW5jcmVhc2VRdW90YUZ1bmN0aW9uKSkpOworfQorCitRdW90YU1h
bmFnZXI6OlF1b3RhTWFuYWdlcih1aW50NjRfdCBxdW90YSwgR2V0VXNhZ2VGdW5jdGlvbiYmIGdl
dFVzYWdlRnVuY3Rpb24sIEluY3JlYXNlUXVvdGFGdW5jdGlvbiYmIGluY3JlYXNlUXVvdGFGdW5j
dGlvbikKKyAgICA6IG1fcXVvdGEocXVvdGEpCisgICAgLCBtX2luaXRpYWxRdW90YShxdW90YSkK
KyAgICAsIG1fZ2V0VXNhZ2VGdW5jdGlvbihXVEZNb3ZlKGdldFVzYWdlRnVuY3Rpb24pKQorICAg
ICwgbV9pbmNyZWFzZVF1b3RhRnVuY3Rpb24oV1RGTW92ZShpbmNyZWFzZVF1b3RhRnVuY3Rpb24p
KQoreworICAgIEFTU0VSVChtX3F1b3RhKTsKK30KKwordm9pZCBRdW90YU1hbmFnZXI6OnJlcXVl
c3RTcGFjZSh1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCwgUmVxdWVzdENhbGxiYWNrJiYgY2FsbGJh
Y2spCit7CisgICAgbV9yZXF1ZXN0cy5hcHBlbmQoUXVvdGFNYW5hZ2VyOjpSZXF1ZXN0IHsgc3Bh
Y2VSZXF1ZXN0ZWQsIFdURk1vdmUoY2FsbGJhY2spLCBRdW90YUluY3JlYXNlUmVxdWVzdElkZW50
aWZpZXIgeyB9IH0pOworICAgIGhhbmRsZVJlcXVlc3RzKCk7Cit9CisKK3ZvaWQgUXVvdGFNYW5h
Z2VyOjpoYW5kbGVSZXF1ZXN0cygpCit7CisgICAgaWYgKG1fY3VycmVudFJlcXVlc3QpCisgICAg
ICAgIHJldHVybjsKKworICAgIFNldEZvclNjb3BlPGJvb2w+IGlzSGFuZGxpbmdSZXF1ZXN0cyht
X2lzSGFuZGxpbmdSZXF1ZXN0cywgdHJ1ZSk7CisKKyAgICB3aGlsZSAoIW1fY3VycmVudFJlcXVl
c3QgJiYgIW1fcmVxdWVzdHMuaXNFbXB0eSgpKSB7CisgICAgICAgIG1fY3VycmVudFJlcXVlc3Qg
PSBtX3JlcXVlc3RzLnRha2VGaXJzdCgpOworICAgICAgICBpZiAoZ3JhbnRXaXRoQ3VycmVudFF1
b3RhKG1fY3VycmVudFJlcXVlc3QtPnNwYWNlUmVxdWVzdGVkKSkgeworICAgICAgICAgICAgbV9j
dXJyZW50UmVxdWVzdC0+Y2FsbGJhY2soRGVjaXNpb246OkdyYW50KTsKKyAgICAgICAgICAgIG1f
Y3VycmVudFJlcXVlc3QgPSBzdGQ6Om51bGxvcHQ7CisgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgfQorCisgICAgICAgIG1fY3VycmVudFJlcXVlc3QtPmlkZW50aWZpZXIgPSBRdW90YUlu
Y3JlYXNlUmVxdWVzdElkZW50aWZpZXI6OmdlbmVyYXRlVGhyZWFkU2FmZSgpOworICAgICAgICBt
X2luY3JlYXNlUXVvdGFGdW5jdGlvbihtX2N1cnJlbnRSZXF1ZXN0LT5pZGVudGlmaWVyLCBtX3F1
b3RhLCAqbV91c2FnZSwgbV9jdXJyZW50UmVxdWVzdC0+c3BhY2VSZXF1ZXN0ZWQpOworICAgIH0K
K30KKworYm9vbCBRdW90YU1hbmFnZXI6OmdyYW50V2l0aEN1cnJlbnRRdW90YSh1aW50NjRfdCBz
cGFjZVJlcXVlc3RlZCkKK3sKKyAgICBpZiAoZ3JhbnRGYXN0UGF0aChzcGFjZVJlcXVlc3RlZCkp
CisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gV2hlbiBRdW90YU1hbmFnZXIgaXMgdXNl
ZCBmb3IgdGhlIGZpcnN0IHRpbWUsIHdlIHdhbnQgdG8gbWFrZSBzdXJlIGl0cyBpbml0aWFsIHF1
b3RhIGlzIGJpZ2dlciB0aGFuIGV4aXN0aW5nIGRpc2sgdXNhZ2UsCisgICAgLy8gYmFzZWQgb24g
dGhlIGFzc3VtcHRpb24gdGhhdCB0aGUgcXVvdGEgd2FzIGluY3JlYXNlZCB0byBhdCBsZWFzdCB0
aGUgZGlzayB1c2FnZSB1bmRlciB1c2VyJ3MgcGVybWlzc2lvbiBiZWZvcmUuCisgICAgYm9vbCBz
aG91bGRVcGRhdGVRdW90YUJhc2VkT25Vc2FnZSA9ICFtX3VzYWdlOworICAgIG1fdXNhZ2UgPSBt
X2dldFVzYWdlRnVuY3Rpb24oKTsKKyAgICBpZiAoc2hvdWxkVXBkYXRlUXVvdGFCYXNlZE9uVXNh
Z2UpIHsKKyAgICAgICAgYXV0byBkZWZhdWx0UXVvdGFTdGVwID0gbV9xdW90YSAvIDEwOworICAg
ICAgICBtX3F1b3RhID0gc3RkOjptYXgobV9xdW90YSwgZGVmYXVsdFF1b3RhU3RlcCAqICgoKm1f
dXNhZ2UgLyBkZWZhdWx0UXVvdGFTdGVwKSArIDEpKTsKKyAgICB9CisgICAgbV9xdW90YUNvdW50
ZG93biA9ICptX3VzYWdlIDwgbV9xdW90YSA/IG1fcXVvdGEgLSAqbV91c2FnZSA6IDA7CisKKyAg
ICByZXR1cm4gZ3JhbnRGYXN0UGF0aChzcGFjZVJlcXVlc3RlZCk7Cit9CisKK2Jvb2wgUXVvdGFN
YW5hZ2VyOjpncmFudEZhc3RQYXRoKHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkKQoreworICAgIGlm
IChzcGFjZVJlcXVlc3RlZCA8PSBtX3F1b3RhQ291bnRkb3duKSB7CisgICAgICAgIG1fcXVvdGFD
b3VudGRvd24gLT0gc3BhY2VSZXF1ZXN0ZWQ7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
KworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBRdW90YU1hbmFnZXI6OmRpZEluY3JlYXNl
UXVvdGEoUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyIGlkZW50aWZpZXIsIHN0ZDo6b3B0
aW9uYWw8dWludDY0X3Q+IG5ld1F1b3RhKQoreworICAgIGlmICghbV9jdXJyZW50UmVxdWVzdCB8
fCBtX2N1cnJlbnRSZXF1ZXN0LT5pZGVudGlmaWVyICE9IGlkZW50aWZpZXIpCisgICAgICAgIHJl
dHVybjsKKworICAgIGlmIChuZXdRdW90YSkgeworICAgICAgICBtX3F1b3RhID0gKm5ld1F1b3Rh
OworICAgICAgICAvLyBSZWNhbGN1bGF0ZSBtX3F1b3RhQ291bnRkb3duIGJhc2VkIG9uIHVzYWdl
LgorICAgICAgICBtX3F1b3RhQ291bnRkb3duID0gMDsKKyAgICB9CisKKyAgICBhdXRvIGRlY2lz
aW9uID0gZ3JhbnRXaXRoQ3VycmVudFF1b3RhKG1fY3VycmVudFJlcXVlc3QtPnNwYWNlUmVxdWVz
dGVkKSA/IERlY2lzaW9uOjpHcmFudCA6IERlY2lzaW9uOjpEZW55OworICAgIG1fY3VycmVudFJl
cXVlc3QtPmNhbGxiYWNrKGRlY2lzaW9uKTsKKyAgICBtX2N1cnJlbnRSZXF1ZXN0ID0gc3RkOjpu
dWxsb3B0OworCisgICAgaWYgKCFtX2lzSGFuZGxpbmdSZXF1ZXN0cykKKyAgICAgICAgaGFuZGxl
UmVxdWVzdHMoKTsKK30KKwordm9pZCBRdW90YU1hbmFnZXI6OnJlc2V0UXVvdGFVcGRhdGVkQmFz
ZWRPblVzYWdlRm9yVGVzdGluZygpCit7CisgICAgcmVzZXRRdW90YUZvclRlc3RpbmcoKTsKKyAg
ICBtX3VzYWdlID0gc3RkOjpudWxsb3B0OworfQorCit2b2lkIFF1b3RhTWFuYWdlcjo6cmVzZXRR
dW90YUZvclRlc3RpbmcoKQoreworICAgIG1fcXVvdGEgPSBtX2luaXRpYWxRdW90YTsKKyAgICBt
X3F1b3RhQ291bnRkb3duID0gMDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvUXVvdGFNYW5hZ2VyLmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvUXVvdGFNYW5hZ2VyLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMmFiNDhjODhhYzg3YTYwNjJmOGNjN2JjMjc4ZWQ2OTNhMDY2NzY1NAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9RdW90YU1h
bmFnZXIuaApAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDx3dGYv
Q29tcGxldGlvbkhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIFF1b3RhTWFuYWdlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlZDxRdW90YU1hbmFnZXI+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UXVvdGFNYW5hZ2VyPiB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgdXNpbmcgR2V0VXNh
Z2VGdW5jdGlvbiA9IEZ1bmN0aW9uPHVpbnQ2NF90KCk+OworICAgIHVzaW5nIEluY3JlYXNlUXVv
dGFGdW5jdGlvbiA9IEZ1bmN0aW9uPHZvaWQoUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVy
LCB1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRVc2FnZSwgdWludDY0X3Qg
cmVxdWVzdGVkSW5jcmVhc2UpPjsKKyAgICBzdGF0aWMgUmVmPFF1b3RhTWFuYWdlcj4gY3JlYXRl
KHVpbnQ2NF90IHF1b3RhLCBHZXRVc2FnZUZ1bmN0aW9uJiYsIEluY3JlYXNlUXVvdGFGdW5jdGlv
biYmKTsKKworICAgIGVudW0gY2xhc3MgRGVjaXNpb24gOiBib29sIHsgRGVueSwgR3JhbnQgfTsK
KyAgICB1c2luZyBSZXF1ZXN0Q2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKERlY2lz
aW9uKT47CisgICAgdm9pZCByZXF1ZXN0U3BhY2UodWludDY0X3Qgc3BhY2VSZXF1ZXN0ZWQsIFJl
cXVlc3RDYWxsYmFjayYmKTsKKyAgICB2b2lkIGRpZEluY3JlYXNlUXVvdGEoUXVvdGFJbmNyZWFz
ZVJlcXVlc3RJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBuZXdRdW90YSk7CisK
KyAgICB2b2lkIHJlc2V0UXVvdGFVcGRhdGVkQmFzZWRPblVzYWdlRm9yVGVzdGluZygpOworICAg
IHZvaWQgcmVzZXRRdW90YUZvclRlc3RpbmcoKTsKKworcHJpdmF0ZToKKyAgICBRdW90YU1hbmFn
ZXIodWludDY0X3QgcXVvdGEsIEdldFVzYWdlRnVuY3Rpb24mJiwgSW5jcmVhc2VRdW90YUZ1bmN0
aW9uJiYpOworICAgIHZvaWQgaGFuZGxlUmVxdWVzdHMoKTsKKyAgICBib29sIGdyYW50V2l0aEN1
cnJlbnRRdW90YSh1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCk7CisgICAgYm9vbCBncmFudEZhc3RQ
YXRoKHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkKTsKKworICAgIHN0cnVjdCBSZXF1ZXN0IHsKKyAg
ICAgICAgdWludDY0X3Qgc3BhY2VSZXF1ZXN0ZWQ7CisgICAgICAgIFJlcXVlc3RDYWxsYmFjayBj
YWxsYmFjazsKKyAgICAgICAgUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyIGlkZW50aWZp
ZXI7CisgICAgfTsKKyAgICBEZXF1ZTxSZXF1ZXN0PiBtX3JlcXVlc3RzOworICAgIHN0ZDo6b3B0
aW9uYWw8UmVxdWVzdD4gbV9jdXJyZW50UmVxdWVzdDsKKyAgICBib29sIG1faXNIYW5kbGluZ1Jl
cXVlc3RzIHsgZmFsc2UgfTsKKyAgICB1aW50NjRfdCBtX3F1b3RhQ291bnRkb3duIHsgMCB9Owor
ICAgIHVpbnQ2NF90IG1fcXVvdGE7CisgICAgdWludDY0X3QgbV9pbml0aWFsUXVvdGE7IC8vIFRl
c3Qgb25seS4KKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBtX3VzYWdlOworICAgIEdldFVz
YWdlRnVuY3Rpb24gbV9nZXRVc2FnZUZ1bmN0aW9uOworICAgIEluY3JlYXNlUXVvdGFGdW5jdGlv
biBtX2luY3JlYXNlUXVvdGFGdW5jdGlvbjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggYzUzZWY5OTQzZjVm
ZjM3ZWZkNjgzOWUyNWZjZGVkZTNmMzZiNTUxZS4uNzU4ZDUwNTU2ZmYyZjZlNDczNzdkMTRlODI2
NmJjNWUzZWFjNDFhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5
CkBAIC0yODgsNiArMjg4LDcgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVj
bGFyZWQoKToKICAgICAgICAgJ1dlYkNvcmU6Ok5hdGl2ZUltYWdlUmVmZXJlbmNlJywKICAgICAg
ICAgJ1dlYkNvcmU6OlBhZ2VJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlBsYXliYWNr
VGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXInLAorICAgICAgICAnV2ViS2l0OjpRdW90YUlu
Y3JlYXNlUmVxdWVzdElkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6UGx1Z2luTG9hZENs
aWVudFBvbGljeScsCiAgICAgICAgICdXZWJDb3JlOjpQb2ludGVySUQnLAogICAgICAgICAnV2Vi
Q29yZTo6UHVzaFN1YnNjcmlwdGlvbklkZW50aWZpZXInLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2Vic2l0ZURhdGEvUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLmgg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9RdW90YUluY3JlYXNlUmVxdWVzdElk
ZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZTQ1NGI2YTA4YjY4YTIwYzY1MGRjODk3NjMyODU1OGEz
NzIwMWY1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURh
dGEvUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLmgKQEAgLTAsMCArMSwzNSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIu
aD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVu
dGlmaWVyVHlwZSB7IH07Cit1c2luZyBRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIgPSBP
YmplY3RJZGVudGlmaWVyPFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllclR5cGU+OworCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRl
RGF0YVN0b3JlUGFyYW1ldGVycy5oCmluZGV4IDE1M2JmOTNiZGY2ZmYxMWI0NjBmNjQ4MjViNDUw
MzA4Yjg0NWQzOGQuLjIwOTg0NjgxNjI5OTA0NzMzODg0Y2ZjYjEyN2FhNTcyMWQyY2VlODkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJz
LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMu
aApAQCAtNzEsOCArNzEsOCBAQCBzdHJ1Y3QgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgewog
ICAgIFN0cmluZyBnZW5lcmFsU3RvcmFnZURpcmVjdG9yeTsKICAgICBTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGUgZ2VuZXJhbFN0b3JhZ2VEaXJlY3RvcnlIYW5kbGU7CiAKLSAgICB1aW50NjRfdCBw
ZXJPcmlnaW5TdG9yYWdlUXVvdGEgeyBXZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2VyOjpkZWZh
dWx0UXVvdGEoKSB9OwotICAgIHVpbnQ2NF90IHBlclRoaXJkUGFydHlPcmlnaW5TdG9yYWdlUXVv
dGEgeyBXZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2VyOjpkZWZhdWx0VGhpcmRQYXJ0eVF1b3Rh
KCkgfTsKKyAgICB1aW50NjRfdCBwZXJPcmlnaW5TdG9yYWdlUXVvdGE7CisgICAgdWludDY0X3Qg
cGVyVGhpcmRQYXJ0eU9yaWdpblN0b3JhZ2VRdW90YTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJL
aXQvU291cmNlcy50eHQKaW5kZXggZTMxMzkxMDU5Y2IzY2IyMDBhNDgzNzE5OWE0OWQzMjE5Yzg0
NDczZC4uZTJmNGJkNGE0YWRjNDFjYzMyOTE2YmY1YzYzZmI0Njg0NDEwODA3MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMu
dHh0CkBAIC0xNDksMTAgKzE0OSwxNCBAQCBOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2Vi
U2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKIE5ldHdvcmtQcm9jZXNz
L3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyLmNwcAogTmV0d29ya1Byb2Nlc3Mvc3Rv
cmFnZS9GaWxlU3lzdGVtU3RvcmFnZUhhbmRsZS5jcHAKIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2Uv
RmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeS5jcHAKK05ldHdvcmtQcm9jZXNzL3N0b3Jh
Z2UvSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5jcHAKK05ldHdvcmtQcm9jZXNzL3N0b3Jh
Z2UvSURCU3RvcmFnZU1hbmFnZXIuY3BwCitOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3Jh
Z2VSZWdpc3RyeS5jcHAKIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTG9jYWxTdG9yYWdlTWFuYWdl
ci5jcHAKIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTWVtb3J5U3RvcmFnZUFyZWEuY3BwCiBOZXR3
b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAKIE5ldHdvcmtQcm9j
ZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuY3BwCitOZXR3b3JrUHJvY2Vzcy9zdG9y
YWdlL1F1b3RhTWFuYWdlci5jcHAKIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU1FMaXRlU3RvcmFn
ZUFyZWEuY3BwCiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1Nlc3Npb25TdG9yYWdlTWFuYWdlci5j
cHAKIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU3RvcmFnZUFyZWFCYXNlLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAKaW5kZXggMzMwMjBiZDVjM2NkOTQxNzc1NjE1NzlhYzIwZmMzOGY5YzY5Mjc4ZS4uYWU3Nzgx
OGRmMmUxM2FhODhlM2Q4ZjhjMTI5ODQxMmRjZjdjMzE0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0x
NTA2LDYgKzE1MDYsMTYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXF1ZXN0U3RvcmFn
ZVNwYWNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgV2UKICAgICB9KTsKIH0KIAor
dm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjppbmNyZWFzZVF1b3RhKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIFF1b3RhSW5jcmVh
c2VSZXF1ZXN0SWRlbnRpZmllciBpZGVudGlmaWVyLCB1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVp
bnQ2NF90IGN1cnJlbnRVc2FnZSwgdWludDY0X3Qgc3BhY2VSZXF1ZXN0ZWQpCit7CisgICAgcmVx
dWVzdFN0b3JhZ2VTcGFjZShzZXNzaW9uSUQsIG9yaWdpbiwgY3VycmVudFF1b3RhLCBjdXJyZW50
VXNhZ2UsIHNwYWNlUmVxdWVzdGVkLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMg
fSwgc2Vzc2lvbklELCBvcmlnaW4sIGlkZW50aWZpZXJdKGF1dG8gcmVzdWx0KSBtdXRhYmxlIHsK
KyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBz
ZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RGlkSW5jcmVhc2VRdW90YShzZXNzaW9uSUQs
IG9yaWdpbiwgaWRlbnRpZmllciwgcmVzdWx0KSwgMCk7CisgICAgfSk7Cit9CisKIHZvaWQgTmV0
d29ya1Byb2Nlc3NQcm94eTo6cmVnaXN0ZXJTY2hlbWVGb3JMZWdhY3lDdXN0b21Qcm90b2NvbChj
b25zdCBTdHJpbmcmIHNjaGVtZSkKIHsKICNpZiBFTkFCTEUoTEVHQUNZX0NVU1RPTV9QUk9UT0NP
TF9NQU5BR0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCA2ODQxYTM0ZmUwOWQxMmJhOTNkNGVmOGM4MGU0NTMz
YTU1ZmQ2NWM0Li5jNDMxOTg0OTM4OWQxMjI5MTVlMDc3ZjgzMGQzNWM5MDZlZjRkYjQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIlByb2Nlc3NMYXVuY2hlci5oIgog
I2luY2x1ZGUgIlByb2Nlc3NUaHJvdHRsZXIuaCIKICNpbmNsdWRlICJQcm9jZXNzVGhyb3R0bGVy
Q2xpZW50LmgiCisjaW5jbHVkZSAiUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLmgiCiAj
aW5jbHVkZSAiVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIldl
YlByb2Nlc3NQcm94eU1lc3NhZ2VzUmVwbGllcy5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3Rv
cmUuaCIKQEAgLTM0Miw2ICszNDMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgdHJpZ2dlckJyb3dz
aW5nQ29udGV4dEdyb3VwU3dpdGNoRm9yTmF2aWdhdGlvbihXZWJQYWdlUHJveHlJZGVudGlmaWVy
LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OkJyb3dzaW5nQ29udGV4dEdyb3VwU3dp
dGNoRGVjaXNpb24sIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiByZXNwb25zZURv
bWFpbiwgTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIgZXhpc3RpbmdOZXR3b3JrUmVzb3Vy
Y2VMb2FkSWRlbnRpZmllclRvUmVzdW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wgc3Vj
Y2Vzcyk+JiYpOwogCiAgICAgdm9pZCByZXF1ZXN0U3RvcmFnZVNwYWNlKFBBTDo6U2Vzc2lvbklE
LCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCB1aW50NjRfdCBxdW90YSwgdWludDY0X3Qg
Y3VycmVudFNpemUsIHVpbnQ2NF90IHNwYWNlUmVxdWlyZWQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcXVvdGEpPiYmKTsKKyAgICB2b2lkIGluY3JlYXNl
UXVvdGEoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIFF1b3Rh
SW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRf
dCBjdXJyZW50VXNhZ2UsIHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkKTsKIAogICAgIFdlYnNpdGVE
YXRhU3RvcmUqIHdlYnNpdGVEYXRhU3RvcmVGcm9tU2Vzc2lvbklEKFBBTDo6U2Vzc2lvbklEKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDE1NzU3ZWQ5YTI1MmIwOWRjZDEx
YmI1ZTZiOWM4YTEwZDA1MzRjOWEuLjhmYTBhMjE0NzhmNzI4MGMwYjgzYjAzODJkNGFkYjVkODIy
YThmZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTcwLDYgKzcwLDcgQEAg
bWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NQcm94eSBMZWdhY3lSZWNlaXZlciB7CiAjZW5kaWYK
IAogICAgIFJlcXVlc3RTdG9yYWdlU3BhY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdHJ1
Y3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbiwgdWludDY0X3QgcXVvdGEsIHVpbnQ2NF90
IGN1cnJlbnRTaXplLCB1aW50NjRfdCBzcGFjZVJlcXVpcmVkKSAtPiAoc3RkOjpvcHRpb25hbDx1
aW50NjRfdD4gbmV3UXVvdGEpIEFzeW5jCisgICAgSW5jcmVhc2VRdW90YShQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIHN0cnVjdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luLCBXZWJLaXQ6
OlF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllciBpZGVudGlmaWVyLCB1aW50NjRfdCBxdW90
YSwgdWludDY0X3QgY3VycmVudFNpemUsIHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkKQogICAgIAog
ICAgIFJlc291cmNlTG9hZERpZFNlbmRSZXF1ZXN0KFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRp
ZmllciBwYWdlSWRlbnRpZmllciwgc3RydWN0IFdlYktpdDo6UmVzb3VyY2VMb2FkSW5mbyByZXNv
dXJjZUxvYWRJbmZvLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgc3RkOjpvcHRp
b25hbDxJUEM6OkZvcm1EYXRhUmVmZXJlbmNlPiBodHRwQm9keSkKICAgICBSZXNvdXJjZUxvYWRE
aWRQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBw
YWdlSWRlbnRpZmllciwgc3RydWN0IFdlYktpdDo6UmVzb3VyY2VMb2FkSW5mbyByZXNvdXJjZUxv
YWRJbmZvLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc291cmNlUmVzcG9uc2UsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCAwOGNlY2Zl
YmZlMGRlNDRiMWY1YTRiNTAxMTQwNWUxZmQ4MTUwOWZlLi4xMzI5MDU1NzJmNGI4YzNkMDc5NTgz
NDMxNDhjMmZiNTY4M2ZlZmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMTcxNiw3ICsxNzE2LDcg
QEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpkaXNwYXRjaE9uUXVldWUoRnVuY3Rpb248dm9pZCgp
PiYmIGZ1bmN0aW9uKQogdWludDY0X3QgV2Vic2l0ZURhdGFTdG9yZTo6cGVyVGhpcmRQYXJ0eU9y
aWdpblN0b3JhZ2VRdW90YSgpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IENvbnNpZGVyIHdoZXRo
ZXIgYWxsb3dpbmcgdG8gc2V0IGEgcGVyVGhpcmRQYXJ0eU9yaWdpblN0b3JhZ2VRdW90YSBmcm9t
IGEgV2Vic2l0ZURhdGFTdG9yZS4KLSAgICByZXR1cm4gV2ViQ29yZTo6U3RvcmFnZVF1b3RhTWFu
YWdlcjo6ZGVmYXVsdFRoaXJkUGFydHlRdW90YUZyb21QZXJPcmlnaW5RdW90YShwZXJPcmlnaW5T
dG9yYWdlUXVvdGEoKSk7CisgICAgcmV0dXJuIHBlck9yaWdpblN0b3JhZ2VRdW90YSgpIC8gMTA7
CiB9CiAKIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0Q2FjaGVNb2RlbFN5bmNocm9ub3VzbHlG
b3JUZXN0aW5nKENhY2hlTW9kZWwgY2FjaGVNb2RlbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAppbmRleCA2YmM2OTM2
OWMzMzgzMjg2OWRlYTFmNWRhYTUwZTc5ZmFhNmU3YmY5Li44NWVlMzFlMTM4M2Q5N2Q2NDZjNjk4
YzJkZWY3ZDljMzM0YWI3NWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCkBAIC0zNTAsNiArMzUwLDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9y
YWdlRGlyZWN0b3J5KCk7CiAgICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRKYXZhU2NyaXB0
Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpOwogICAgIHN0YXRpYyBib29sIGh0dHAzRW5hYmxlZCgp
OworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDY0X3QgZGVmYXVsdFBlck9yaWdpblF1b3RhKCkg
eyByZXR1cm4gMTAwMCAqIE1COyB9CiAKICAgICB2b2lkIHJlc2V0UXVvdGEoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGNsZWFyU3RvcmFnZShDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCmlu
ZGV4IDMzMGI4YjEwNWE3OWRhNjVkYzIwN2E3ZWZlM2JjMzc2MDAwZTJmMWEuLjFhZTZkMGIxMWFk
Mzg0ZjY0MTZmZmQzYmY1NDgzNzI1YTRmZjNiMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbi5jcHAKQEAgLTMzLDYgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAK
IFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbihJc1BlcnNpc3RlbnQgaXNQZXJzaXN0ZW50LCBXaWxsQ29weVBhdGhzRnJvbUV4aXN0aW5n
Q29uZmlndXJhdGlvbiB3aWxsQ29weVBhdGhzKQogICAgIDogbV9pc1BlcnNpc3RlbnQoaXNQZXJz
aXN0ZW50KQorICAgICwgbV9wZXJPcmlnaW5TdG9yYWdlUXVvdGEoV2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdFBlck9yaWdpblF1b3RhKCkpCiB7CiAgICAgaWYgKGlzUGVyc2lzdGVudCA9PSBJc1Bl
cnNpc3RlbnQ6OlllcyAmJiB3aWxsQ29weVBhdGhzID09IFdpbGxDb3B5UGF0aHNGcm9tRXhpc3Rp
bmdDb25maWd1cmF0aW9uOjpObykgewogICAgICAgICBzZXRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0
b3J5KFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgKaW5kZXggZjE3MWFkNGNlNWUx
YjVjZTEzOTRlYzc4MDk1MjQxMDdmODJjMTc0YS4uMzBhMjk5MzEwMjI3ZDJmNzI0ZjQyNTc2YjY2
MTI1NDdiOTYxY2YyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCkBA
IC0yNiw3ICsyNiw2IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgot
I2luY2x1ZGUgPFdlYkNvcmUvU3RvcmFnZVF1b3RhTWFuYWdlci5oPgogI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtMjA3LDcgKzIwNiw3
IEBAIHByaXZhdGU6CiAKICAgICBTdHJpbmcgbV9jYWNoZVN0b3JhZ2VEaXJlY3Rvcnk7CiAgICAg
U3RyaW5nIG1fZ2VuZXJhbFN0b3JhZ2VEaXJlY3Rvcnk7Ci0gICAgdWludDY0X3QgbV9wZXJPcmln
aW5TdG9yYWdlUXVvdGEgeyBXZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2VyOjpkZWZhdWx0UXVv
dGEoKSB9OworICAgIHVpbnQ2NF90IG1fcGVyT3JpZ2luU3RvcmFnZVF1b3RhOwogICAgIFN0cmlu
ZyBtX25ldHdvcmtDYWNoZURpcmVjdG9yeTsKICAgICBTdHJpbmcgbV9hcHBsaWNhdGlvbkNhY2hl
RGlyZWN0b3J5OwogICAgIFN0cmluZyBtX2FwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVj
dG9yeU5hbWUgeyAiRmlsZXMiX3MgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDYwZDNlOTgyMDVkNWRkMzk4NGU1ODdjZDMwMTBlOTgz
MGQyMzg3NTAuLjNmY2MxZjFiZjc5MTE0ZGM1YjA5YTRiODJlMzQxZWEzZDBjMzkzMWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQ3
Miw2ICsxNDcyLDExIEBACiAJCTkzQjI2MTREMjI3RDE0OUUwMEI5N0E3NiAvKiBTdG9yYWdlTWFu
YWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNC
MjYxNDkyMjdEMTQ3MjAwQjk3QTc2IC8qIFN0b3JhZ2VNYW5hZ2VyLmggKi87IH07CiAJCTkzQjI2
MTRFMjI3RDE0QjEwMEI5N0E3NiAvKiBMb2NhbFN0b3JhZ2VEYXRhYmFzZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCMjYxNDUyMjdEMTQ3MDAwQjk3
QTc2IC8qIExvY2FsU3RvcmFnZURhdGFiYXNlLmggKi87IH07CiAJCTkzQjI2MTRGMjI3RDE0QjEw
MEI5N0E3NiAvKiBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjI2MTQ2MjI3RDE0NzEwMEI5N0E3NiAv
KiBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuaCAqLzsgfTsKKwkJOTNCNjMxRTUyN0FCQTYy
ODAwNDQzQTQ0IC8qIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjYzMUU0MjdBQkE2MjcwMDQ0M0E0
NCAvKiBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50LmggKi87IH07CisJCTkzQjYzMUU4MjdB
QkE2NUQwMDQ0M0E0NCAvKiBJREJTdG9yYWdlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCNjMxRTYyN0FCQTY1QzAwNDQzQTQ0IC8qIElE
QlN0b3JhZ2VNYW5hZ2VyLmggKi87IH07CisJCTkzQjYzMUVEMjdBQkE2QjQwMDQ0M0E0NCAvKiBJ
REJTdG9yYWdlUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDkzQjYzMUVCMjdBQkE2QjMwMDQ0M0E0NCAvKiBJREJTdG9yYWdlUmVnaXN0cnku
aCAqLzsgfTsKKwkJOTNCNjMxRjEyN0FCQUNBOTAwNDQzQTQ0IC8qIFF1b3RhTWFuYWdlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCNjMxRUYyN0FC
QUNBOTAwNDQzQTQ0IC8qIFF1b3RhTWFuYWdlci5oICovOyB9OworCQk5M0I2MzFGMzI3QUJBRDgw
MDA0NDNBNDQgLyogUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0I2MzFGMjI3QUJBRDdGMDA0NDNB
NDQgLyogUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLmggKi87IH07CiAJCTkzQkRFQjAx
MTcxREQ3QUYwMEJGRUUxQiAvKiBXS1BhZ2VMb2FkVHlwZXNQcml2YXRlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0JERUIwMDE3MUREN0FGMDBCRkVF
MUIgLyogV0tQYWdlTG9hZFR5cGVzUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzRDZCNzcyMjU0QkI1MTkwMDU4REQzQSAvKiBTcGVl
Y2hSZWNvZ25pdGlvblNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTNENkI3NkMyNTRCODk1ODAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9u
U2VydmVyLmggKi87IH07CiAJCTkzRDZCNzczMjU0QkI4QzcwMDU4REQzQSAvKiBXZWJTcGVlY2hS
ZWNvZ25pdGlvbkNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDkzRDZCNzY4MjU0QjdCQzYwMDU4REQzQSAvKiBXZWJTcGVlY2hSZWNvZ25p
dGlvbkNvbm5lY3Rpb24uaCAqLzsgfTsKQEAgLTUzNzcsNiArNTM4MiwxNSBAQAogCQk5M0IyNjE0
OTIyN0QxNDcyMDBCOTdBNzYgLyogU3RvcmFnZU1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU3RvcmFnZU1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTNCMjYxNEEyMjdEMTQ3MjAwQjk3QTc2IC8qIFN0b3JhZ2VNYW5hZ2VyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0b3JhZ2VNYW5hZ2VyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCMjYxNEMyMjdEMTQ3MjAwQjk3QTc2IC8qIExv
Y2FsU3RvcmFnZURhdGFiYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IExvY2FsU3RvcmFnZURhdGFiYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJOTNCNjMxRTMyN0FCQTVGNzAwNDQzQTQ0IC8qIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGll
bnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzQjYzMUU0MjdBQkE2MjcwMDQ0M0E0
NCAvKiBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJOTNCNjMxRTYyN0FCQTY1QzAwNDQzQTQ0IC8qIElEQlN0b3JhZ2VN
YW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElEQlN0b3JhZ2VNYW5h
Z2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzQjYzMUU3MjdBQkE2NUMwMDQ0
M0E0NCAvKiBJREJTdG9yYWdlTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBJREJTdG9yYWdlTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTkzQjYzMUVBMjdBQkE2QjIwMDQ0M0E0NCAvKiBJREJTdG9yYWdlUmVnaXN0cnkuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSURCU3RvcmFnZVJlZ2lzdHJ5
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNCNjMxRUIyN0FCQTZCMzAwNDQz
QTQ0IC8qIElEQlN0b3JhZ2VSZWdpc3RyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJREJTdG9yYWdlUmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
OTNCNjMxRUUyN0FCQUNBODAwNDQzQTQ0IC8qIFF1b3RhTWFuYWdlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBRdW90YU1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk5M0I2MzFFRjI3QUJBQ0E5MDA0NDNBNDQgLyogUXVvdGFNYW5hZ2Vy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFF1b3RhTWFuYWdlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0I2MzFGMjI3QUJBRDdGMDA0NDNBNDQgLyogUXVv
dGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5M0JBMDREQTIxNTFBREYzMDA3RjQ1NUYgLyogV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYlNXU2VydmVyQ29u
bmVjdGlvbi5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCQTA0
REIyMTUxQURGMzAwN0Y0NTVGIC8qIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCQTA0REMyMTUxQURGMzAw
N0Y0NTVGIC8qIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2Fn
ZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NTkyLDYgKzc2MDYsNyBAQAog
CQkxQUJGNDM3ODFBMzY4MDM1MDAzRkIwRTYgLyogV2Vic2l0ZURhdGEgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTkzQjYzMUYyMjdBQkFEN0YwMDQ0M0E0
NCAvKiBRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIuaCAqLywKIAkJCQkxQTQ4MzJENDFB
OUNERjk2MDA4QjRERkUgLyogV2Vic2l0ZURhdGEuY3BwICovLAogCQkJCTFBNDgzMkQ1MUE5Q0RG
OTYwMDhCNERGRSAvKiBXZWJzaXRlRGF0YS5oICovLAogCQkJCTFBMjhCOENCMUM4MEVENTkwMDZG
RDc0MyAvKiBXZWJzaXRlRGF0YUZldGNoT3B0aW9uLmggKi8sCkBAIC0xMDQ2OSw2ICsxMDQ4NCwx
MiBAQAogCQkJCTkzNUI1Nzk4MjZGNTEyNzAwMDhCNDhBQyAvKiBGaWxlU3lzdGVtU3RvcmFnZUhh
bmRsZVJlZ2lzdHJ5LmggKi8sCiAJCQkJOTMxQTA3NTEyNkYwNjMxMDAwNDQ3NENEIC8qIEZpbGVT
eXN0ZW1TdG9yYWdlTWFuYWdlci5jcHAgKi8sCiAJCQkJOTMxQTA3NTAyNkYwNjMxMDAwNDQ3NENE
IC8qIEZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlci5oICovLAorCQkJCTkzQjYzMUUzMjdBQkE1Rjcw
MDQ0M0E0NCAvKiBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50LmNwcCAqLywKKwkJCQk5M0I2
MzFFNDI3QUJBNjI3MDA0NDNBNDQgLyogSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5oICov
LAorCQkJCTkzQjYzMUU3MjdBQkE2NUMwMDQ0M0E0NCAvKiBJREJTdG9yYWdlTWFuYWdlci5jcHAg
Ki8sCisJCQkJOTNCNjMxRTYyN0FCQTY1QzAwNDQzQTQ0IC8qIElEQlN0b3JhZ2VNYW5hZ2VyLmgg
Ki8sCisJCQkJOTNCNjMxRUEyN0FCQTZCMjAwNDQzQTQ0IC8qIElEQlN0b3JhZ2VSZWdpc3RyeS5j
cHAgKi8sCisJCQkJOTNCNjMxRUIyN0FCQTZCMzAwNDQzQTQ0IC8qIElEQlN0b3JhZ2VSZWdpc3Ry
eS5oICovLAogCQkJCTkzRTc5OUM5Mjc2MDQ5N0EwMDc0MDA4QSAvKiBMb2NhbFN0b3JhZ2VNYW5h
Z2VyLmNwcCAqLywKIAkJCQk5M0U3OTlDQjI3NjA0OTdBMDA3NDAwOEEgLyogTG9jYWxTdG9yYWdl
TWFuYWdlci5oICovLAogCQkJCTkzRTc5OUQ4Mjc2MTIxMDgwMDc0MDA4QSAvKiBNZW1vcnlTdG9y
YWdlQXJlYS5jcHAgKi8sCkBAIC0xMDQ3OCw2ICsxMDQ5OSw4IEBACiAJCQkJOTMwODVEQzcyNkUx
QzZFRTAwMEVDNkE3IC8qIE5ldHdvcmtTdG9yYWdlTWFuYWdlci5tZXNzYWdlcy5pbiAqLywKIAkJ
CQk5MzA4NURDNTI2RTFDNkNGMDAwRUM2QTcgLyogT3JpZ2luU3RvcmFnZU1hbmFnZXIuY3BwICov
LAogCQkJCTkzMDg1REM2MjZFMUM2Q0YwMDBFQzZBNyAvKiBPcmlnaW5TdG9yYWdlTWFuYWdlci5o
ICovLAorCQkJCTkzQjYzMUVFMjdBQkFDQTgwMDQ0M0E0NCAvKiBRdW90YU1hbmFnZXIuY3BwICov
LAorCQkJCTkzQjYzMUVGMjdBQkFDQTkwMDQ0M0E0NCAvKiBRdW90YU1hbmFnZXIuaCAqLywKIAkJ
CQk5M0U3OTlDQzI3NjA0OTdCMDA3NDAwOEEgLyogU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyLmNwcCAq
LywKIAkJCQk5M0U3OTlDQTI3NjA0OTdBMDA3NDAwOEEgLyogU2Vzc2lvblN0b3JhZ2VNYW5hZ2Vy
LmggKi8sCiAJCQkJOTNFNzk5RDMyNzYxMjEwNzAwNzQwMDhBIC8qIFNRTGl0ZVN0b3JhZ2VBcmVh
LmNwcCAqLywKQEAgLTEzMDg4LDYgKzEzMTExLDkgQEAKIAkJCQkzMTJDQzlGMjIxNUIwNkYxMDBE
RTQwQ0EgLyogSGlnaFBlcmZvcm1hbmNlR1BVTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
ODM5QTJGMzIxRTIwNjc0NTAwMzkwNTdFIC8qIEhpZ2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VT
YW1wbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUMwQzk3NDFEREQ3NjAwMDAzMkNBRDMgLyog
SWNvbkxvYWRpbmdEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTNCNjMxRTUyN0FCQTYy
ODAwNDQzQTQ0IC8qIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQuaCBpbiBIZWFkZXJzICov
LAorCQkJCTkzQjYzMUU4MjdBQkE2NUQwMDQ0M0E0NCAvKiBJREJTdG9yYWdlTWFuYWdlci5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJOTNCNjMxRUQyN0FCQTZCNDAwNDQzQTQ0IC8qIElEQlN0b3JhZ2VS
ZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFFMzUxQ0IxODBGMkNDQzAwRTUzQkU5IC8q
IElEQlV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNDRjZCMjUxMkM5M0U3QTAwOEY5
QzM1IC8qIEltYWdlT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUExRUM2OUUxODcyMDky
MTAwQjk1MUYwIC8qIEltcG9ydGFuY2VBc3NlcnRpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMTMz
MDIsNiArMTMzMjgsOCBAQAogCQkJCUExRTY4ODcwMUY2RTJCQUIwMDcwMDZBNiAvKiBRdWFyYW50
aW5lU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTBDMjI3RTI0NTExMzBBMDBFRDYxNEQgLyog
UXVpY2tMb29rVGh1bWJuYWlsaW5nU29mdExpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRUU1
NzI1MjQwOUYxNDIwMDIwMDVENiAvKiBRdWlja0xvb2tUaHVtYm5haWxMb2FkZXIuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTkzQjYzMUYzMjdBQkFEODAwMDQ0M0E0NCAvKiBRdW90YUluY3JlYXNlUmVx
dWVzdElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTkzQjYzMUYxMjdBQkFDQTkwMDQ0
M0E0NCAvKiBRdW90YU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDQjZBRTQ0MjYwOTc5
OUMwMEI2RUQ1QSAvKiBSZWFzb25TUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3RkQzMTgyMjJC
MzUxNUUwMDhEMEU4QiAvKiBSZWRpcmVjdFNPQXV0aG9yaXphdGlvblNlc3Npb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTlCMTIyOUQyMjNGRjJCQ0MwMDhDQTc1MSAvKiBSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9TZXJ2
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2Vi
SURCQ29ubmVjdGlvblRvU2VydmVyLmNwcAppbmRleCAwNGMyNDEwZjM1YWRjYzA0NmM1NDA2YWYw
Y2NlMmZkMGU4NDFhZGIwLi5kNzkwMTY5YmUwZjU4ZTMwMWVkYmU0NGMwNDRjNzgzOTFlZjQ3NDUy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWRE
Qi9XZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAKQEAg
LTI5LDkgKzI5LDkgQEAKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIk5ldHdvcmtTdG9yYWdlTWFuYWdlck1lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2Vi
SURCUmVzdWx0LmgiCi0jaW5jbHVkZSAiV2ViSURCU2VydmVyTWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JREJDb25uZWN0aW9uVG9TZXJ2ZXIu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0lEQkN1cnNvckluZm8uaD4KQEAgLTgyLDEzMiArODIsMTMy
IEBAIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblRvU2VydmVyJiBXZWJJREJDb25uZWN0aW9uVG9T
ZXJ2ZXI6OmNvcmVDb25uZWN0aW9uVG9TZXJ2CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2Vy
dmVyOjpkZWxldGVEYXRhYmFzZShjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEpCiB7
Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyOjpEZWxldGVEYXRhYmFzZShyZXF1ZXN0
RGF0YSkpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6RGVsZXRl
RGF0YWJhc2UocmVxdWVzdERhdGEpKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2
ZXI6Om9wZW5EYXRhYmFzZShjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEpCiB7Ci0g
ICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyOjpPcGVuRGF0YWJhc2UocmVxdWVzdERhdGEp
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Ok9wZW5EYXRhYmFz
ZShyZXF1ZXN0RGF0YSkpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6YWJv
cnRUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRl
bnRpZmllcikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OkFib3J0VHJhbnNh
Y3Rpb24odHJhbnNhY3Rpb25JZGVudGlmaWVyKSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29y
a1N0b3JhZ2VNYW5hZ2VyOjpBYm9ydFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllcikp
OwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Y29tbWl0VHJhbnNhY3Rpb24o
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2
NF90IHBlbmRpbmdSZXF1ZXN0Q291bnQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2Vy
dmVyOjpDb21taXRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbklkZW50aWZpZXIsIHBlbmRpbmdSZXF1
ZXN0Q291bnQpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkNv
bW1pdFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgcGVuZGluZ1JlcXVlc3RDb3Vu
dCkpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGlkRmluaXNoSGFuZGxp
bmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24odWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRl
bnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZp
ZXIpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyOjpEaWRGaW5pc2hIYW5kbGlu
Z1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbihkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCB0
cmFuc2FjdGlvbklkZW50aWZpZXIpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFn
ZU1hbmFnZXI6OkRpZEZpbmlzaEhhbmRsaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKGRhdGFi
YXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHRyYW5zYWN0aW9uSWRlbnRpZmllcikpOwogfQogCiB2
b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURC
UmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mIGluZm8p
CiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyOjpDcmVhdGVPYmplY3RTdG9yZShy
ZXF1ZXN0RGF0YSwgaW5mbykpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFu
YWdlcjo6Q3JlYXRlT2JqZWN0U3RvcmUocmVxdWVzdERhdGEsIGluZm8pKTsKIH0KIAogdm9pZCBX
ZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVl
c3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUpCiB7Ci0g
ICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyOjpEZWxldGVPYmplY3RTdG9yZShyZXF1ZXN0
RGF0YSwgb2JqZWN0U3RvcmVOYW1lKSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyOjpEZWxldGVPYmplY3RTdG9yZShyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVOYW1l
KSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpyZW5hbWVPYmplY3RTdG9y
ZShjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIHVpbnQ2NF90IG9iamVjdFN0b3Jl
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lKQogewotICAgIHNlbmQoTWVzc2FnZXM6
OldlYklEQlNlcnZlcjo6UmVuYW1lT2JqZWN0U3RvcmUocmVxdWVzdERhdGEsIG9iamVjdFN0b3Jl
SWRlbnRpZmllciwgbmV3TmFtZSkpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdl
TWFuYWdlcjo6UmVuYW1lT2JqZWN0U3RvcmUocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRp
ZmllciwgbmV3TmFtZSkpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Y2xl
YXJPYmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIHVpbnQ2NF90
IG9iamVjdFN0b3JlSWRlbnRpZmllcikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2
ZXI6OkNsZWFyT2JqZWN0U3RvcmUocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmllcikp
OworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Q2xlYXJPYmplY3RT
dG9yZShyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyKSk7CiB9CiAKIHZvaWQgV2Vi
SURCQ29ubmVjdGlvblRvU2VydmVyOjpjcmVhdGVJbmRleChjb25zdCBJREJSZXF1ZXN0RGF0YSYg
cmVxdWVzdERhdGEsIGNvbnN0IElEQkluZGV4SW5mbyYgaW5mbykKIHsKLSAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJJREJTZXJ2ZXI6OkNyZWF0ZUluZGV4KHJlcXVlc3REYXRhLCBpbmZvKSk7CisgICAg
c2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpDcmVhdGVJbmRleChyZXF1ZXN0
RGF0YSwgaW5mbykpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGVsZXRl
SW5kZXgoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCB1aW50NjRfdCBvYmplY3RT
dG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lKQogewotICAgIHNlbmQoTWVz
c2FnZXM6OldlYklEQlNlcnZlcjo6RGVsZXRlSW5kZXgocmVxdWVzdERhdGEsIG9iamVjdFN0b3Jl
SWRlbnRpZmllciwgaW5kZXhOYW1lKSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyOjpEZWxldGVJbmRleChyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVy
LCBpbmRleE5hbWUpKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OnJlbmFt
ZUluZGV4KGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgdWludDY0X3Qgb2JqZWN0
U3RvcmVJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRleElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
bmV3TmFtZSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OlJlbmFtZUluZGV4
KHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4SWRlbnRpZmllciwgbmV3
TmFtZSkpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6UmVuYW1l
SW5kZXgocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhJZGVudGlmaWVy
LCBuZXdOYW1lKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpwdXRPckFk
ZChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQktleURhdGEmIGtl
eURhdGEsIGNvbnN0IElEQlZhbHVlJiB2YWx1ZSwgY29uc3QgSW5kZXhlZERCOjpPYmplY3RTdG9y
ZU92ZXJ3cml0ZU1vZGUgbW9kZSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6
OlB1dE9yQWRkKHJlcXVlc3REYXRhLCBrZXlEYXRhLCB2YWx1ZSwgbW9kZSkpOworICAgIHNlbmQo
TWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6UHV0T3JBZGQocmVxdWVzdERhdGEsIGtl
eURhdGEsIHZhbHVlLCBtb2RlKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVy
OjpnZXRSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJH
ZXRSZWNvcmREYXRhJiBnZXRSZWNvcmREYXRhKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklE
QlNlcnZlcjo6R2V0UmVjb3JkKHJlcXVlc3REYXRhLCBnZXRSZWNvcmREYXRhKSk7CisgICAgc2Vu
ZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpHZXRSZWNvcmQocmVxdWVzdERhdGEs
IGdldFJlY29yZERhdGEpKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6Omdl
dEFsbFJlY29yZHMoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJH
ZXRBbGxSZWNvcmRzRGF0YSYgZ2V0QWxsUmVjb3Jkc0RhdGEpCiB7Ci0gICAgc2VuZChNZXNzYWdl
czo6V2ViSURCU2VydmVyOjpHZXRBbGxSZWNvcmRzKHJlcXVlc3REYXRhLCBnZXRBbGxSZWNvcmRz
RGF0YSkpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6R2V0QWxs
UmVjb3JkcyhyZXF1ZXN0RGF0YSwgZ2V0QWxsUmVjb3Jkc0RhdGEpKTsKIH0KIAogdm9pZCBXZWJJ
REJDb25uZWN0aW9uVG9TZXJ2ZXI6OmdldENvdW50KGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1
ZXN0RGF0YSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiByYW5nZSkKIHsKLSAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJJREJTZXJ2ZXI6OkdldENvdW50KHJlcXVlc3REYXRhLCByYW5nZSkpOworICAgIHNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6R2V0Q291bnQocmVxdWVzdERhdGEs
IHJhbmdlKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpkZWxldGVSZWNv
cmQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXlSYW5nZURh
dGEmIHJhbmdlKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6RGVsZXRlUmVj
b3JkKHJlcXVlc3REYXRhLCByYW5nZSkpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9y
YWdlTWFuYWdlcjo6RGVsZXRlUmVjb3JkKHJlcXVlc3REYXRhLCByYW5nZSkpOwogfQogCiB2b2lk
IFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6b3BlbkN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0
YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkN1cnNvckluZm8mIGluZm8pCiB7Ci0gICAgc2VuZChN
ZXNzYWdlczo6V2ViSURCU2VydmVyOjpPcGVuQ3Vyc29yKHJlcXVlc3REYXRhLCBpbmZvKSk7Cisg
ICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpPcGVuQ3Vyc29yKHJlcXVl
c3REYXRhLCBpbmZvKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjppdGVy
YXRlQ3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCSXRl
cmF0ZUN1cnNvckRhdGEmIGRhdGEpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVy
OjpJdGVyYXRlQ3Vyc29yKHJlcXVlc3REYXRhLCBkYXRhKSk7CisgICAgc2VuZChNZXNzYWdlczo6
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpJdGVyYXRlQ3Vyc29yKHJlcXVlc3REYXRhLCBkYXRhKSk7
CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjplc3RhYmxpc2hUcmFuc2FjdGlv
bih1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJUcmFuc2Fj
dGlvbkluZm8mIGluZm8pCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyOjpFc3Rh
Ymxpc2hUcmFuc2FjdGlvbihkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBpbmZvKSk7Cisg
ICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpFc3RhYmxpc2hUcmFuc2Fj
dGlvbihkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBpbmZvKSk7CiB9CiAKIHZvaWQgV2Vi
SURCQ29ubmVjdGlvblRvU2VydmVyOjpkYXRhYmFzZUNvbm5lY3Rpb25QZW5kaW5nQ2xvc2UodWlu
dDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcikKIHsKLSAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJJREJTZXJ2ZXI6OkRhdGFiYXNlQ29ubmVjdGlvblBlbmRpbmdDbG9zZShkYXRhYmFzZUNv
bm5lY3Rpb25JZGVudGlmaWVyKSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VN
YW5hZ2VyOjpEYXRhYmFzZUNvbm5lY3Rpb25QZW5kaW5nQ2xvc2UoZGF0YWJhc2VDb25uZWN0aW9u
SWRlbnRpZmllcikpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGF0YWJh
c2VDb25uZWN0aW9uQ2xvc2VkKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIp
CiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyOjpEYXRhYmFzZUNvbm5lY3Rpb25D
bG9zZWQoZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcikpOworICAgIHNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6RGF0YWJhc2VDb25uZWN0aW9uQ2xvc2VkKGRhdGFiYXNl
Q29ubmVjdGlvbklkZW50aWZpZXIpKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2
ZXI6OmFib3J0T3BlbkFuZFVwZ3JhZGVOZWVkZWQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9u
SWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50
aWZpZXIpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyOjpBYm9ydE9wZW5BbmRV
cGdyYWRlTmVlZGVkKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHRyYW5zYWN0aW9uSWRl
bnRpZmllcikpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6QWJv
cnRPcGVuQW5kVXBncmFkZU5lZWRlZChkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCB0cmFu
c2FjdGlvbklkZW50aWZpZXIpKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6
OmRpZEZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRl
bnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwg
Y29uc3QgSW5kZXhlZERCOjpDb25uZWN0aW9uQ2xvc2VkT25CZWhhbGZPZlNlcnZlciBjb25uZWN0
aW9uQ2xvc2VkKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6RGlkRmlyZVZl
cnNpb25DaGFuZ2VFdmVudChkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCByZXF1ZXN0SWRl
bnRpZmllciwgY29ubmVjdGlvbkNsb3NlZCkpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtT
dG9yYWdlTWFuYWdlcjo6RGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudChkYXRhYmFzZUNvbm5lY3Rp
b25JZGVudGlmaWVyLCByZXF1ZXN0SWRlbnRpZmllciwgY29ubmVjdGlvbkNsb3NlZCkpOwogfQog
CiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6b3BlbkRCUmVxdWVzdENhbmNlbGxlZChj
b25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6
V2ViSURCU2VydmVyOjpPcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKHJlcXVlc3REYXRhKSk7CisgICAg
c2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpPcGVuREJSZXF1ZXN0Q2FuY2Vs
bGVkKHJlcXVlc3REYXRhKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpn
ZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVy
JiByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4pCiB7Ci0gICAg
c2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyOjpHZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lv
bnMocmVxdWVzdElkZW50aWZpZXIsIG9yaWdpbikpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdv
cmtTdG9yYWdlTWFuYWdlcjo6R2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKHJlcXVlc3RJ
ZGVudGlmaWVyLCBvcmlnaW4pKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6
OmRpZERlbGV0ZURhdGFiYXNlKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwIGIv
U291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAKaW5kZXgg
ZWEyZTJhNzhmODhmZmRkMTAxYTNhMTM3ZjBkNWExMGE1NmUxMGZiMi4uMGNhZGI1MDQyYmExNjEw
NzdmOTQ0OWE5NzNkY2Y5ODMyZDM3MDJhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9TdG9yYWdlL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9TdG9yYWdlL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAKQEAgLTQyLDYgKzQyLDggQEAKIAogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKK3N0YXRpYyBjb25zdGV4cHIgdWludDY0X3QgZGVmYXVs
dFBlck9yaWdpblF1b3RhID0gIDEwMDAgKiBNQjsKKwogUmVmPEluUHJvY2Vzc0lEQlNlcnZlcj4g
SW5Qcm9jZXNzSURCU2VydmVyOjpjcmVhdGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogewog
ICAgIEFTU0VSVChzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSk7CkBAIC03Myw3ICs3NSw3IEBAIElu
UHJvY2Vzc0lEQlNlcnZlcjo6fkluUHJvY2Vzc0lEQlNlcnZlcigpCiBTdG9yYWdlUXVvdGFNYW5h
Z2VyKiBJblByb2Nlc3NJREJTZXJ2ZXI6OnF1b3RhTWFuYWdlcihjb25zdCBDbGllbnRPcmlnaW4m
IG9yaWdpbikKIHsKICAgICByZXR1cm4gbV9xdW90YU1hbmFnZXJzLmVuc3VyZShvcmlnaW4sIFtd
IHsKLSAgICAgICAgcmV0dXJuIFN0b3JhZ2VRdW90YU1hbmFnZXI6OmNyZWF0ZShTdG9yYWdlUXVv
dGFNYW5hZ2VyOjpkZWZhdWx0UXVvdGEoKSwgW10geworICAgICAgICByZXR1cm4gU3RvcmFnZVF1
b3RhTWFuYWdlcjo6Y3JlYXRlKGRlZmF1bHRQZXJPcmlnaW5RdW90YSwgW10gewogICAgICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgICAgIH0sIFtdKHVpbnQ2NF90IHF1b3RhLCB1aW50NjRfdCBjdXJy
ZW50U3BhY2UsIHVpbnQ2NF90IHNwYWNlSW5jcmVhc2UsIGF1dG8gY2FsbGJhY2spIHsKICAgICAg
ICAgICAgIGNhbGxiYWNrKHF1b3RhICsgY3VycmVudFNwYWNlICsgc3BhY2VJbmNyZWFzZSk7CmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggODAzNzVk
MTA1Y2VkMDQwMDE2YTNkY2JiMDMxODkwOTg3YTk0ZTg1My4uMGQwOGU1ZDIxZGM3OWNkYjY1NmU3
MjQ2OTlkN2QyMWMxMzQ0NDQ5ZCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIyLTAyLTA4ICBTaWh1aSBMaXUgIDxz
aWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIE1hbmFnZSBJbmRleGVkREIgc3RvcmFnZSBi
eSBvcmlnaW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzNDkyNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODc1NTUwMTQ+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0luZGV4ZWREQkZpbGVOYW1lLm1tOgorICAgICAgICAocnVuVGVzdCk6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJQZXJzaXN0ZW5j
ZS5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWRE
QlN1c3BlbmRJbW1pbmVudGx5Lm1tOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TdG9yZUJsb2JUaGVuRGVsZXRlLm1tOgorICAgICAg
ICAoVEVTVCk6CisKIDIwMjItMDItMDEgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtnaXQtd2Via2l0XSBBdXRvc3Rhc2ggd2hlbiBwdWxsaW5nCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQkZp
bGVOYW1lLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVk
REJGaWxlTmFtZS5tbQppbmRleCBhNmIwMTI5YmMxMDU5YzRmOWMxMThkMWZkN2VmZDIxMjNlYWMy
YzdhLi40MTAyMjI0ZTQ1Mjc0ZDM2Mzc5ZTRiYjAwMmEwZmVlODk4MzJmNWJjIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQkZpbGVOYW1l
Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERC
RmlsZU5hbWUubW0KQEAgLTcxLDIwICs3MSwyMyBAQCBzdGF0aWMgdm9pZCBydW5UZXN0KCkKICAg
ICBSZXRhaW5QdHI8TlNTdHJpbmc+IHN0cmluZzIgPSAoTlNTdHJpbmcgKilbbGFzdFNjcmlwdE1l
c3NhZ2UgYm9keV07CiAgICAgRVhQRUNUX1dLX1NUUkVRKEAiU3VjY2VzcyIsIHN0cmluZzIuZ2V0
KCkpOwogCi0gICAgLy8gRm9yIGRhdGFiYXNlIHRoYXQgaXMgbm90IG9wZW5lZCBhZnRlciB1cGdy
YWRlLCBpdHMgZmlsZSBzaG91bGQgYmUgaW4gdjAuCisgICAgLy8gQWxsIGRhdGFiYXNlcyBvZiBh
biBvcmlnaW4gYXJlIG1pZ3JhdGVkIHRvIG5ldyB2ZXJzaW9uIGRpcmVjdG9yeSB3aGVuIHRoZSBv
cmlnaW4gaXMgYWNjZXNzZWQuCiAgICAgYXV0byBkZWZhdWx0RmlsZU1hbmFnZXIgPSBbTlNGaWxl
TWFuYWdlciBkZWZhdWx0TWFuYWdlcl07CiAgICAgTlNTdHJpbmcgKmV4aXN0aW5nRGF0YWJhc2VO
YW1lID0gQCJJbmRleGVkREJUZXN0IjsKICAgICBOU1N0cmluZyAqY3JlYXRlZERhdGFiYXNlTmFt
ZSA9IEAiSW5kZXhlZERCT3RoZXIiOwogICAgIE5TU3RyaW5nICp1bnVzZWREYXRhYmFzZU5hbWUg
PSBAIkluZGV4ZWREQlVudXNlZCI7CiAgICAgTlNTdHJpbmcgKmV4aXN0aW5nRGF0YmFzZUhhc2gg
PSBXZWJDb3JlOjpTUUxpdGVGaWxlU3lzdGVtOjpjb21wdXRlSGFzaEZvckZpbGVOYW1lKGV4aXN0
aW5nRGF0YWJhc2VOYW1lKTsKICAgICBOU1N0cmluZyAqY3JlYXRlZERhdGFiYXNlSGFzaCA9IFdl
YkNvcmU6OlNRTGl0ZUZpbGVTeXN0ZW06OmNvbXB1dGVIYXNoRm9yRmlsZU5hbWUoY3JlYXRlZERh
dGFiYXNlTmFtZSk7CisgICAgTlNTdHJpbmcgKnVudXNlZERhdGFiYXNlSGFzaCA9IFdlYkNvcmU6
OlNRTGl0ZUZpbGVTeXN0ZW06OmNvbXB1dGVIYXNoRm9yRmlsZU5hbWUoY3JlYXRlZERhdGFiYXNl
TmFtZSk7CiAgICAgTlNVUkwgKmlkYlJvb3RVUkwgPSBbW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZh
dWx0RGF0YVN0b3JlXSBfaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnldOwogICAgIE5TVVJMICpv
bGRWZXJzaW9uRGlyZWN0b3J5VVJMID0gW2lkYlJvb3RVUkwgVVJMQnlBcHBlbmRpbmdQYXRoQ29t
cG9uZW50OkAidjAiXTsKICAgICBOU1VSTCAqbmV3VmVyc2lvbkRpcmVjdG9yeVVSTCA9IFtpZGJS
b290VVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAInYxIl07CiAgICAgTlNVUkwgKm9s
ZFZlcnNpb25PcmlnaW5EaXJlY3RvcnlVUkwgPSBbb2xkVmVyc2lvbkRpcmVjdG9yeVVSTCBVUkxC
eUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6IEAiZmlsZV9fMCJdOwogICAgIE5TVVJMICpuZXdWZXJz
aW9uT3JpZ2luRGlyZWN0b3J5VVJMID0gW25ld1ZlcnNpb25EaXJlY3RvcnlVUkwgVVJMQnlBcHBl
bmRpbmdQYXRoQ29tcG9uZW50OiBAImZpbGVfXzAiXTsKICAgICBOU1VSTCAqb2xkVmVyc2lvblVu
dXNlZERhdGFiYXNlRGlyZWN0b3J5VVJMID0gW29sZFZlcnNpb25PcmlnaW5EaXJlY3RvcnlVUkwg
VVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OnVudXNlZERhdGFiYXNlTmFtZV07Ci0gICAgRVhQ
RUNUX1RSVUUoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRo
Om9sZFZlcnNpb25VbnVzZWREYXRhYmFzZURpcmVjdG9yeVVSTC5wYXRoXSk7CisgICAgTlNVUkwg
Km5ld1ZlcnNpb25VbnVzZWREYXRhYmFzZURpcmVjdG9yeVVSTCA9IFtuZXdWZXJzaW9uT3JpZ2lu
RGlyZWN0b3J5VVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDp1bnVzZWREYXRhYmFzZUhh
c2hdOworICAgIEVYUEVDVF9GQUxTRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZp
bGVFeGlzdHNBdFBhdGg6b2xkVmVyc2lvblVudXNlZERhdGFiYXNlRGlyZWN0b3J5VVJMLnBhdGhd
KTsKKyAgICBFWFBFQ1RfVFJVRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVF
eGlzdHNBdFBhdGg6bmV3VmVyc2lvblVudXNlZERhdGFiYXNlRGlyZWN0b3J5VVJMLnBhdGhdKTsK
ICAgICAKICAgICAvLyBGb3IgZGF0YWJhc2UgdGhhdCBpcyBvcGVuZWQgYWZ0ZXIgdXBncmFkZSwg
aXRzIGZpbGUgc2hvdWxkIG9ubHkgYmUgaW4gdjEuCiAgICAgTlNVUkwgKm9sZFZlcnNpb25FeGlz
dGluZ0RhdGFiYXNlRGlyZWN0b3J5VVJMID0gW29sZFZlcnNpb25PcmlnaW5EaXJlY3RvcnlVUkwg
VVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OiBleGlzdGluZ0RhdGFiYXNlTmFtZV07CmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlBl
cnNpc3RlbmNlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRl
eGVkREJQZXJzaXN0ZW5jZS5tbQppbmRleCAyNzE4YzRhYjM2OWE4MTgyZGEwZTExOGM0NTE2NjZh
ZTlkMWUyYzc0Li40ZjBhOGVjOTQ0NTQ4Y2E2Yzc4NzAxNWM2YjZkOTUwODU4ODM4OGIzIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlBl
cnNpc3RlbmNlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
SW5kZXhlZERCUGVyc2lzdGVuY2UubW0KQEAgLTMwNSwxMCArMzA1LDE0IEBAIFRFU1QoSW5kZXhl
ZERCLCBJbmRleGVkREJUaGlyZFBhcnR5RGF0YVJlbW92YWwpCiAgICAgRVhQRUNUX1dLX1NUUkVR
KCBAImRhdGFiYXNlIGlzIGNyZWF0ZWQgLSBwdXQgaXRlbSBzdWNjZXNzIiwgKE5TU3RyaW5nICop
W2xhc3RTY3JpcHRNZXNzYWdlIGJvZHldKTsKIAogICAgIHJlYWR5VG9Db250aW51ZSA9IGZhbHNl
OwotICAgIFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdIGZldGNoRGF0YVJl
Y29yZHNPZlR5cGVzOndlYnNpdGVEYXRhVHlwZXMuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihO
U0FycmF5PFdLV2Vic2l0ZURhdGFSZWNvcmQgKj4gKmRhdGFSZWNvcmRzKSB7Ci0gICAgICAgIEVY
UEVDVF9FUSgxdSwgZGF0YVJlY29yZHMuY291bnQpOwotICAgICAgICBFWFBFQ1RfV0tfU1RSRVEo
ImlmcmFtZSIsIFtbZGF0YVJlY29yZHMgZmlyc3RPYmplY3RdIGRpc3BsYXlOYW1lXSk7Ci0gICAg
ICAgIFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdIHJlbW92ZURhdGFPZlR5
cGVzOndlYnNpdGVEYXRhVHlwZXMuZ2V0KCkgZm9yRGF0YVJlY29yZHM6ZGF0YVJlY29yZHMgY29t
cGxldGlvbkhhbmRsZXI6XigpIHsKKyAgICBbW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0
YVN0b3JlXSBmZXRjaERhdGFSZWNvcmRzT2ZUeXBlczp3ZWJzaXRlRGF0YVR5cGVzLmdldCgpIGNv
bXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxXS1dlYnNpdGVEYXRhUmVjb3JkICo+ICpyZWNvcmRz
KSB7CisgICAgICAgIEVYUEVDVF9FUSgydSwgcmVjb3Jkcy5jb3VudCk7CisgICAgICAgIE5TU29y
dERlc2NyaXB0b3IgKnJlY29yZERlc2NyaXB0b3IgPSBbTlNTb3J0RGVzY3JpcHRvciBzb3J0RGVz
Y3JpcHRvcldpdGhLZXk6QCJkaXNwbGF5TmFtZSIgYXNjZW5kaW5nOllFU107CisgICAgICAgIE5T
QXJyYXkgKnNvcnREZXNjcmlwdG9ycyA9IEBbcmVjb3JkRGVzY3JpcHRvcl07CisgICAgICAgIE5T
QXJyYXkgKnNvcnRlZFJlY29yZHMgPSBbcmVjb3JkcyBzb3J0ZWRBcnJheVVzaW5nRGVzY3JpcHRv
cnM6c29ydERlc2NyaXB0b3JzXTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKCJpZnJhbWUiLCBb
W3NvcnRlZFJlY29yZHMgb2JqZWN0QXRJbmRleDowXSBkaXNwbGF5TmFtZV0pOworICAgICAgICBF
WFBFQ1RfV0tfU1RSRVEoIndlYmtpdC5vcmciLCBbW3NvcnRlZFJlY29yZHMgb2JqZWN0QXRJbmRl
eDoxXSBkaXNwbGF5TmFtZV0pOworICAgICAgICBbW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0
RGF0YVN0b3JlXSByZW1vdmVEYXRhT2ZUeXBlczp3ZWJzaXRlRGF0YVR5cGVzLmdldCgpIGZvckRh
dGFSZWNvcmRzOnJlY29yZHMgY29tcGxldGlvbkhhbmRsZXI6XigpIHsKICAgICAgICAgICAgIHJl
YWR5VG9Db250aW51ZSA9IHRydWU7CiAgICAgICAgIH1dOwogICAgIH1dOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJTdXNwZW5kSW1t
aW5lbnRseS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhl
ZERCU3VzcGVuZEltbWluZW50bHkubW0KaW5kZXggZGM2MzQzZTNlZGRmZTQ4ZGJmZWVlNGY3OTk5
MmZmY2I1ZjYwZTE2Yi4uYmY5MGY1N2NlMDk3NWU5NGU2MzcwNDdhNWQwZTlkZmQxOGZiZDYyNCAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVk
REJTdXNwZW5kSW1taW5lbnRseS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0luZGV4ZWREQlN1c3BlbmRJbW1pbmVudGx5Lm1tCkBAIC03Myw2ICs3MywxMiBA
QCBzdGF0aWMgdm9pZCBrZWVwTmV0d29ya1Byb2Nlc3NBY3RpdmUoKQogCiBURVNUKEluZGV4ZWRE
QiwgSW5kZXhlZERCU3VzcGVuZEltbWluZW50bHkpCiB7CisgICAgcmVhZHlUb0NvbnRpbnVlID0g
ZmFsc2U7CisgICAgW1tXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gcmVtb3Zl
RGF0YU9mVHlwZXM6W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxXZWJzaXRlRGF0YVR5cGVzXSBtb2Rp
ZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7Cisg
ICAgICAgIHJlYWR5VG9Db250aW51ZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZyZWFkeVRvQ29udGludWUpOworCiAgICAgYXV0byBoYW5kbGVyID0gYWRv
cHROUyhbW0luZGV4ZWREQlN1c3BlbmRJbW1pbmVudGx5TWVzc2FnZUhhbmRsZXIgYWxsb2NdIGlu
aXRdKTsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmln
dXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENv
bnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgbmFtZTpAInRl
c3RIYW5kbGVyIl07CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1N0b3JlQmxvYlRoZW5EZWxldGUubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1N0b3JlQmxvYlRoZW5EZWxldGUubW0KaW5kZXggYWFiZmZmODdiYzY0YjM5
NTJiMjQxNDUyMTVlZTAzODI4NmI3Yzg5MS4uOGU4NWE0MGE1ZTgzYmEwMzQzMjFlN2U3OTY5ZDgz
NTVlMzJjMjQ2NSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9TdG9yZUJsb2JUaGVuRGVsZXRlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvU3RvcmVCbG9iVGhlbkRlbGV0ZS5tbQpAQCAtODcsNyArODcsNyBAQCBU
RVNUKEluZGV4ZWREQiwgU3RvcmVCbG9iVGhlblJlbW92ZURhdGEpCiAgICAgW1tOU0ZpbGVNYW5h
Z2VyIGRlZmF1bHRNYW5hZ2VyXSBjb3B5SXRlbUF0UGF0aDpkYXRhYmFzZUZpbGVQYXRoIHRvUGF0
aDpmYWtlU2htUGF0aCBlcnJvcjpuaWxdOwogICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFu
YWdlcl0gY29weUl0ZW1BdFBhdGg6ZGF0YWJhc2VGaWxlUGF0aCB0b1BhdGg6ZmFrZVdhbFBhdGgg
ZXJyb3I6bmlsXTsKIAotICAgIC8vIE1ha2Ugc29tZSBvdGhlciAuYmxvYiBmaWxlcyBpbiB0aGUg
ZGF0YWJhc2UgZGlyZWN0b3J5IHRvIGxhdGVyIHZhbGlkYXRlIHRoYXQgb25seSBhcHByb3ByaWF0
ZSBmaWxlcyBhcmUgZGVsZXRlZC4KKyAgICAvLyBNYWtlIHNvbWUgb3RoZXIgLmJsb2IgZmlsZXMg
aW4gdGhlIGRhdGFiYXNlIGRpcmVjdG9yeSB0byBsYXRlciB2YWxpZGF0ZSBhbGwgYmxvYiBmaWxl
cyBpbiB0aGUgZGlyZWN0b3J5IGFyZSBkZWxldGVkLgogICAgIE5TU3RyaW5nICpvdGhlckJsb2Ix
ID0gW2RhdGFiYXNlRGlyZWN0b3J5IHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIjcx
ODIuYmxvYiJdOwogICAgIE5TU3RyaW5nICpvdGhlckJsb2IyID0gW2RhdGFiYXNlRGlyZWN0b3J5
IHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIjFhLmJsb2IiXTsKICAgICBOU1N0cmlu
ZyAqb3RoZXJCbG9iMyA9IFtkYXRhYmFzZURpcmVjdG9yeSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhD
b21wb25lbnQ6QCJhMS5ibG9iIl07CkBAIC0xMDIsMTMgKzEwMiwxMiBAQCBURVNUKEluZGV4ZWRE
QiwgU3RvcmVCbG9iVGhlblJlbW92ZURhdGEpCiAgICAgICAgIEVYUEVDVF9GQUxTRShbW05TRmls
ZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6YmxvYkZpbGVQYXRoXSk7
CiAgICAgICAgIEVYUEVDVF9GQUxTRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZp
bGVFeGlzdHNBdFBhdGg6ZGF0YWJhc2VGaWxlUGF0aF0pOwogCi0gICAgICAgIC8vIE1ha2Ugc3Vy
ZSB0aGUgZmFrZSBibG9iIGZpbGUgd2l0aCBhIHZhbGlkIGJsb2IgZmlsZSBuYW1lIGlzIGdvbmUu
CisgICAgICAgIC8vIE1ha2Ugc3VyZSBhbGwgZmFrZSBibG9iIGZpbGUgYXJlIGdvbmUuCiAgICAg
ICAgIEVYUEVDVF9GQUxTRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlz
dHNBdFBhdGg6b3RoZXJCbG9iMV0pOwogCi0gICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgZmFrZSBi
bG9iIGZpbGVzIHdpdGggaW52YWxpZCBibG9iIGZpbGUgbmFtZXMgYXJlIHN0aWxsIHRoZXJlLgot
ICAgICAgICBFWFBFQ1RfVFJVRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVF
eGlzdHNBdFBhdGg6b3RoZXJCbG9iMl0pOwotICAgICAgICBFWFBFQ1RfVFJVRShbW05TRmlsZU1h
bmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6b3RoZXJCbG9iM10pOwotICAg
ICAgICBFWFBFQ1RfVFJVRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlz
dHNBdFBhdGg6b3RoZXJCbG9iNF0pOworICAgICAgICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVNYW5h
Z2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOm90aGVyQmxvYjJdKTsKKyAgICAg
ICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0
c0F0UGF0aDpvdGhlckJsb2IzXSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShbW05TRmlsZU1hbmFn
ZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6b3RoZXJCbG9iNF0pOwogCiAgICAg
ICAgIC8vIE1ha2Ugc3VyZSBldmVyeXRoaW5nIHJlbGF0ZWQgdG8gdGhlIGZha2UgZGF0YWJhc2Ug
aXMgZ29uZS4KICAgICAgICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFu
YWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpmYWtlU2htUGF0aF0pOwo=
</data>
<flag name="commit-queue"
          id="478024"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451316</attachid>
            <date>2022-02-08 15:48:19 -0800</date>
            <delta_ts>2022-02-09 08:12:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234925-20220208154818.patch</filename>
            <type>text/plain</type>
            <size>284968</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NDM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTY2ODEyMGUyN2FhMzVm
ZDIxZTA2YWJmYWM5Y2VjNDhiYjJkNzM1Zi4uOGM5ODNmMjlmZGZjMmRjYmIwNWM0YWQyMjgxYmUw
ZWVkMGJmMzZkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk1IEBACisyMDIyLTAyLTA4ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIE1hbmFnZSBJbmRleGVkREIg
c3RvcmFnZSBieSBvcmlnaW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzNDkyNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODc1NTUwMTQ+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAgQm90aCBXZWJLaXQgYW5k
IFdlYktpdExlZ2FjeSB1c2VkIElEQlNlcnZlciB0byBtYW5hZ2UgVW5pcXVlSURCRGF0YWJhc2Vz
LCBhbmQgVW5pcXVlSURCRGF0YWJhc2UgcG9pbnRlZCB0byAKKyAgICAgICAgSURCU2VydmVyLiBO
b3cgdGhhdCBXZWJLaXQgdXNlcyBXZWJLaXQ6OklEQlN0b3JhZ2VNYW5hZ2VyIHRvIG1hbmFnZSBV
bmlxdWVJREJEYXRhYmFzZXMuIFdlIHVudGllIHRoZSAKKyAgICAgICAga25vdCBiZXR3ZWVuIElE
QlNlcnZlciBhbmQgVW5pcXVlSURCRGF0YWJhc2UgYnkgYWRkaW5nIGEgbmV3IGFic3RyYWN0IGNs
YXNzIFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlciBhbmQgbWFrZQorICAgICAgICBVbmlxdWVJREJE
YXRhYmFzZSBwb2ludCB0byBVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuCisKKyAgICAgICAgQWxz
bywgYXMgcXVvdGEgY2hlY2sgaXMgbm8gbG9uZ2VyIGFzeW5jIGFjY29yZGluZyB0byBjaGFuZ2Vz
IGluIFdlYktpdCwgd2UgbmVlZCB0byB1cGRhdGUgb3BlcmF0aW9ucyBpbgorICAgICAgICBVbmlx
dWVJREJEYXRhYmFzZSB0byBhZG9wdCB0aGUgY2hhbmdlLgorCisgICAgICAgIENvdmVyZWQgYnkg
ZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnQuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6SURCU2VydmVyOjpyZWdpc3RlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OnVucmVnaXN0ZXJDb25uZWN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpjcmVhdGVCYWNraW5nU3RvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OnVwZ3JhZGVkRGF0YWJhc2VE
aXJlY3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OnJlZ2lz
dGVyRGF0YWJhc2VDb25uZWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklEQlNl
cnZlcjo6SURCU2VydmVyOjp1bnJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0aW9uKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpjbG9zZUFuZFRha2VVbmlx
dWVJREJEYXRhYmFzZSk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL0lEQlNlcnZlci5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1v
cnlJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1v
cnlJREJCYWNraW5nU3RvcmU6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUp
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3Rv
cmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3Rv
cmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlPYmplY3RTdG9yZTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5T2JqZWN0U3RvcmU6
Ok1lbW9yeU9iamVjdFN0b3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
TWVtb3J5T2JqZWN0U3RvcmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
U1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
U1FMaXRlSURCQmFja2luZ1N0b3JlOjpTUUxpdGVJREJCYWNraW5nU3RvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmVuY29kZURhdGFiYXNl
TmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6ZGVjb2RlRGF0YWJhc2VOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FM
aXRlSURCQmFja2luZ1N0b3JlOjpnZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbyk6CisgICAgICAg
IChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlQmFja2lu
Z1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0
b3JlOjpmaWxlbmFtZUZvckRhdGFiYXNlTmFtZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZnVsbERhdGFiYXNlRGly
ZWN0b3J5V2l0aFVwZ3JhZGUpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6VW5pcXVlSURCRGF0YWJhc2UpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6bWFuYWdlcik6CisgICAgICAg
IChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtQ3VycmVudE9w
ZW5PcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRh
YmFzZTo6cGVyZm9ybUN1cnJlbnRPcGVuT3BlcmF0aW9uQWZ0ZXJTcGFjZUNoZWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZUJhY2tpbmdT
dG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpj
cmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlE
QkRhdGFiYXNlOjpkZWxldGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2
ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpyZW5hbWVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpjbGVhck9iamVjdFN0b3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZUluZGV4
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0
ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6
OnJlbmFtZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0
YWJhc2U6OnB1dE9yQWRkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURC
RGF0YWJhc2U6OnB1dE9yQWRkQWZ0ZXJTcGFjZUNoZWNrKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmdldFJlY29yZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRBbGxSZWNvcmRzKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmdldENvdW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZVJlY29yZCk6
CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuQ3Vy
c29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6Oml0
ZXJhdGVDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRh
YmFzZTo6Y29tbWl0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpV
bmlxdWVJREJEYXRhYmFzZTo6YWJvcnRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJ
REJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpoYXNEYXRhSW5NZW1vcnkgY29uc3QpOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6c2VydmVyKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJh
c2VDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURC
RGF0YWJhc2VDb25uZWN0aW9uOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb246On5Vbmlx
dWVJREJEYXRhYmFzZUNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpV
bmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb246Om1hbmFnZXIpOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uaDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uOjpzZXJ2ZXIp
OiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJE
YXRhYmFzZU1hbmFnZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVu
aXF1ZUlEQkRhdGFiYXNlTWFuYWdlcjo6flVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlcik6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZVRy
YW5zYWN0aW9uOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6flVuaXF1ZUlEQkRh
dGFiYXNlVHJhbnNhY3Rpb24pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9V
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvc2hhcmVkL0lEQkVycm9yLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJFcnJvcjo6b3BlcmF0
b3IgYm9vbCBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJl
cXVlc3REYXRhLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc291
cmNlSWRlbnRpZmllci5oOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVy
OjpvcGVyYXRvciE9IGNvbnN0KToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisKIDIwMjItMDItMDggIEJyYW5kb24gU3Rld2FydCAgPGJyYW5kb25zdGV3YXJ0
QGFwcGxlLmNvbT4KIAogICAgICAgICBHcmlkIG1heSBiZSBlbXB0eSBpbiBjZXJ0YWluIHNjZW5h
cmlvcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCBiY2JmN2E2NTFhNjI5ZGJkNDA0MzgzM2FhODk5MzBjZTgyMzQ5MTRi
Li40NmFlYTJlMTU5ZjRkNzkwMGI3MGVhYjg2OTM5MDdhNTBjNTg5OTEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI2NSBAQAorMjAyMi0wMi0wOCAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNv
bT4KKworICAgICAgICBNYW5hZ2UgSW5kZXhlZERCIHN0b3JhZ2UgYnkgb3JpZ2luCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ5MjUKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzg3NTU1MDE0PgorCisgICAgICAgIFJldmlld2VkIGJ5IENocmlzIER1
bWV6LgorCisgICAgICAgIEluIG5ldHdvcmsgcHJvY2VzcywgSW5kZXhlZERCIGRhdGEgaXMgbWFu
YWdlZCBieSBXZWJLaXQ6OldlYklEQlNlcnZlci4gRWFjaCBzZXNzaW9uIG93bnMgYSBXZWJJREJT
ZXJ2ZXIgCisgICAgICAgIChJREJTZXJ2ZXIpIGFuZCBlYWNoIElEQlNlcnZlciBvd25zIG9uZSBv
ciBtb3JlIFVuaXF1ZUlEQkRhdGFiYXNlcyAocmVzcHJlbnRpbmcgb25lIGFjdHVhbCBkYXRhYmFz
ZSB0aGF0CisgICAgICAgIElEQkRhdGFiYXNlIGNvbm5lY3RzIHRvLCBjYW4gYmUgaWRlbnRpZmll
ZCBieSB7c2Vzc2lvbiwgb3JpZ2luLCBuYW1lfSkuIE5vdyB0aGF0IHdlIGhhdmUgTmV0d29ya1N0
b3JhZ2VNYW5hZ2VyLCAKKyAgICAgICAgd2hpY2ggbWFuYWdlcyBzZXNzaW9uIHN0b3JhZ2UgYnkg
b3JpZ2luLCB3ZSBjYW4gbWVyZ2UgV2ViSURCU2VydmVyIHdpdGggTmV0d29ya1N0b3JhZ2VNYW5h
Z2VyLCBzaW5jZSBJbmRleGVkREIgCisgICAgICAgIHN0b3JhZ2UgaXMgbm90IHNoYXJlZCBhY3Jv
c3Mgb3JpZ2lucy4KKworICAgICAgICBUaGUgb2xkIHN0cnVjdHVyZSBpczoKKyAgICAgICAgTmV0
d29ya1Nlc3Npb24gLSBXZWJJREJTZXJ2ZXIgLSBJREJTZXJ2ZXIgLSBVbmlxdWVJREJEYXRhYmFz
ZXMKKyAgICAgICAgVGhlIG5ldyBzdHJ1Y3R1cmUgaXM6CisgICAgICAgIE5ldHdvcmtTZXNzaW9u
IC0gTmV0d29ya1N0b3JhZ2VNYW5hZ2VyIC0gT3JpZ2luU3RvcmFnZU1hbmFnZXIgLSBJREJTdG9y
YWdlTWFuYWdlciAtIFVuaXF1ZUlEQkRhdGFiYXNlCisKKyAgICAgICAgVG8gY29tcGxldGUgdGhp
cyB0cmFuc2l0aW9uLCB3ZSBuZWVkIHRvIG1ha2UgYSBmZXcgY2hhbmdlczoKKyAgICAgICAgMS4g
V2ViIHByb2Nlc3Mgbm93IHNlbmRzIEluZGV4ZWREQiByZWxhdGVkIG1lc3NhZ2VzIHRvIE5ldHdv
cmtTdG9yYWdlTWFuYWdlciBpbnN0ZWFkIG9mIFdlYklEQlNlcnZlci4gCisgICAgICAgIDIuIFNv
bWUgbWVzc2FnZXMgYXJlIHNlbnQgdG8gb3BlcmF0ZSBvbiBVbmlxdWVJREJEYXRhYmFzZUNvbm5l
Y3Rpb24gb3IgVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiwgYW5kIHRoZXkgCisgICAgICAg
IHVzZSBpZGVudGlmaWVycyB0byBzcGVjaWZ5IHRoZSB0YXJnZXQuIFRoZXJlZm9yZSwgTmV0d29y
a1N0b3JhZ2VNYW5hZ2VycyBuZWVkcyB0byBrbm93IHRoZSBtYXBwaW5nIGJldHdlZW4gCisgICAg
ICAgIGlkZW50aWZpZXJzIGFuZCB0YXJnZXQgb2JqZWN0cy4gQSBuZXcgY2xhcyBJREJTdG9yYWdl
UmVnaXN0cnkgaXMgYWRkZWQgcmVjb3JkIHRoaXMgbWFwcGluZy4gRWFjaCAKKyAgICAgICAgTmV0
d29ya1N0b3JhZ2VNYW5hZ2VyIG93bnMgYSBJREJTdG9yYWdlUmVnaXN0cnkgYW5kIGl0IHBhc3Nl
cyBJREJTdG9yYWdlUmVnaXN0cnkgdG8gSURCU3RvcmFnZU1hbmFnZXIsCisgICAgICAgIElEQlN0
b3JhZ2VNYW5hZ2VyIHdpbGwgcmVnaXN0ZXIgb2JqZWN0cyB0byBJREJTdG9yYWdlUmVnaXN0cnkg
YW5kIE5ldHdvcmtTdG9yYWdlTWFuYWdlciBjYW4gZG8gc2VhcmNoIHZpYSAKKyAgICAgICAgSURC
U3RvcmFnZVJlZ2lzdHJ5LgorICAgICAgICAzLiBRdW90YSBjaGVjayBmb3IgSW5kZXhlZERCIG9w
ZXJhdGlvbnMgYmVjb21lcyBhc3luYyBieSBhZGRpbmcgbmV3IFF1b3RhTWFuYWdlciBjbGFzcywg
d2hpY2ggaXMgc2ltaWxhciB0byAKKyAgICAgICAgV2ViQ29yZTo6U3RvcmFnZVF1b3RhTWFuYWdl
ciBidXQgcHJvdmlkZXMgYXN5bmMgaW50ZXJmYWNlcy4gCisgICAgICAgIFdlIHVzZWQgdG8gYmxv
Y2sgdGhlIElEQlNlcnZlciB0aHJlYWQgd2hlbiBpdCBpcyB3YWl0aW5nIGZvciBxdW90YSBjaGVj
ayByZXN1bHQgZnJvbSBVSSBwcm9jZXNzLCB0aGlzIGlzIGZpbmUgCisgICAgICAgIGJlY2F1c2Ug
SURCU2VydmVyIHJ1bnMgb24gaXRzIG93biB0aHJlYWQuIE5vdyB0aGF0IElEQlN0b3JhZ2VNYW5h
Z2VyIHJ1bnMgb24gdGhlIHNhbWUgdGhyZWFkIGFzIHRoZSBvdGhlciAKKyAgICAgICAgc3RvcmFn
ZSB0eXBlcywgd2UgY2Fubm90IGJsb2NrIHRoZSB0aHJlYWQgb24gcXVvdGEgY2hlY2suCisgICAg
ICAgIDQuIFJlbmFtZSBXZWJJREJDb25uZWN0aW9uVG9DbGllbnQgdG8gSURCU3RvcmFnZUNvbm5l
Y3Rpb25Ub0NsaWVudCB0byByZWZsZWN0IHRoZSBjaGFuZ2Ugb24gdGhlIHN0cnVjdHVyZS4gQWxz
bywKKyAgICAgICAgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudCBkb2VzIG5vdCBrZWVwIHJl
ZmVyZW5jZSB0byB0aGUgSVBDOjpDb25uZWN0aW9uIG5vdywgaXQgb25seSByZWNvcmRzIAorICAg
ICAgICBJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELgorICAgICAgICA1LiBJbmRleGVkREIgZGF0
YSBtYXkgYmUgcHV0IGluIGRpZmZlcmVudCB2ZXJzaW9uIGRpcmN0b3JpZXMuIFdlIHVzZWQgdG8g
bWlncmF0ZSBkYXRhYmFzZSB0byBuZXcgdmVyc2lvbiAKKyAgICAgICAgZGlyZXRvcnkgd2hlbiB0
aGUgZGF0YWJhc2UgaXMgYWNjZXNzZWQuIEFzIElEQlN0b3JhZ2VNYW5hZ2VyIG5vdyBtYW5hZ2Vz
IEluZGV4ZWREQiBkYXRhIG9mIG9uZSBvcmlnaW4sIGl0J3MgCisgICAgICAgIHNpbXBsZXIgaWYg
aXQgb25seSBrZWVwcyB0cmFjayBvZiBvbmUgZGlyZWN0b3J5LiBUaGVyZWZvcmUsIHdlIG5vdyBt
aWdyYXRlIGFsbCBkYXRhYmFzZXMgb2Ygb25lIG9yaWdpbgorICAgICAgICB3aGVuIHRoZSBvcmln
aW4gaXMgYWNjZXNzZWQgKHNlZSBJREJTdG9yYWdlTWFuYWdlcjo6aWRiU3RvcmFnZU9yaWdpbkRp
cmVjdG9yeSkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjp1cGRhdGVRdW90YUJhc2VkT25TcGFjZVVzYWdlRm9yVGVzdGluZyk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp3cml0ZUJsb2JzVG9UZW1w
b3JhcnlGaWxlc0ZvckluZGV4ZWREQik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGlkQ2xvc2Up
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6YWRkV2Vi
c2l0ZURhdGFTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpmZXRjaFdl
YnNpdGVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNp
dGVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVE
YXRhRm9yT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVB
bmRSZXN0cmljdFdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlZ2lzdHJhYmxlRG9tYWluc1dpdGhXZWJzaXRlRGF0YSk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5kKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlc3VtZSk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzOjpyZXNldFF1b3RhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3M6OmRpZEluY3JlYXNlUXVvdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
czo6cmVuYW1lT3JpZ2luSW5XZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzOjpzdG9yYWdlUXVvdGFNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3M6OmNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NDbG9zZWQpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6c3VzcGVuZElEQlNlcnZlcnMpOiBEZWxldGVkLgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzOjpzaG91bGRTdXNwZW5kSURCU2VydmVycyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrU2Vzc2lvbjo6aW52YWxpZGF0ZUFuZENhbmNlbCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtTZXNzaW9uOjphZGRTdG9yYWdlTWFuYWdlclNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrU2Vzc2lvbjo6ZW5zdXJlV2ViSURCU2VydmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Nlc3Npb246OmNsb3NlSURCU2VydmVyKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Nlc3Npb246OmFkZEluZGV4ZWREYXRhYmFzZVNlc3Npb24pOiBEZWxl
dGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmg6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjp3ZWJJREJTZXJ2ZXIpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6aGFzSURCRGF0YWJhc2VQYXRoIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6c3RvcmFnZVBhdGgp
OgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6ZGlza1VzYWdlKToKKyAg
ICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OnJlcXVlc3RTcGFjZSk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZXM6OnJlcXVlc3RTcGFjZSk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNzSU9TLm1tOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0SXNIb2xkaW5nTG9ja2VkRmlsZXMpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50
OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6SURCU3Rv
cmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6fklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQpOgor
ICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50Ojpjb25uZWN0aW9u
VG9DbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50
OjpkaWRHZXRSZXN1bHQpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVjdGlvblRv
Q2xpZW50OjpkaWREZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VD
b25uZWN0aW9uVG9DbGllbnQ6OmRpZE9wZW5EYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6OklE
QlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZFN0YXJ0VHJhbnNhY3Rpb24pOgorICAgICAg
ICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRBYm9ydFRyYW5zYWN0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlk
Q29tbWl0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVjdGlv
blRvQ2xpZW50OjpkaWRDcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0
b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZERlbGV0ZU9iamVjdFN0b3JlKToKKyAgICAgICAg
KFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkUmVuYW1lT2JqZWN0U3Rv
cmUpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRD
bGVhck9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25U
b0NsaWVudDo6ZGlkQ3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29u
bmVjdGlvblRvQ2xpZW50OjpkaWREZWxldGVJbmRleCk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0
b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZFJlbmFtZUluZGV4KToKKyAgICAgICAgKFdlYktp
dDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkUHV0T3JBZGQpOgorICAgICAgICAo
V2ViS2l0OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRHZXRSZWNvcmQpOgorICAg
ICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRHZXRBbGxSZWNv
cmRzKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlk
R2V0Q291bnQpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50
OjpkaWREZWxldGVSZWNvcmQpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVjdGlv
blRvQ2xpZW50OjpkaWRPcGVuQ3Vyc29yKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNv
bm5lY3Rpb25Ub0NsaWVudDo6ZGlkSXRlcmF0ZUN1cnNvcik6CisgICAgICAgIChXZWJLaXQ6OklE
QlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZEdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJz
aW9ucyk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmZp
cmVWZXJzaW9uQ2hhbmdlRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVj
dGlvblRvQ2xpZW50OjpkaWRDbG9zZUZyb21TZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0OjpJREJT
dG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50Ojpub3RpZnlPcGVuREJSZXF1ZXN0QmxvY2tlZCk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xp
ZW50Lmg6IEFkZGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFn
ZU1hbmFnZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6bWlncmF0ZU9yaWdpbkRhdGEp
OgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlTWFuYWdlcjo6aWRiU3RvcmFnZU9yaWdpbkRp
cmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VNYW5hZ2VyOjppZGJTdG9yYWdl
U2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OmdldE9yaWdpbnNGb3JWZXJzaW9uKToKKyAgICAgICAg
KFdlYktpdDo6SURCU3RvcmFnZU1hbmFnZXI6Om9yaWdpbnNPZklEQlN0b3JhZ2VEYXRhKToKKyAg
ICAgICAgKFdlYktpdDo6SURCU3RvcmFnZU1hbmFnZXI6OklEQlN0b3JhZ2VNYW5hZ2VyKToKKyAg
ICAgICAgKFdlYktpdDo6SURCU3RvcmFnZU1hbmFnZXI6OmlzQWN0aXZlIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6SURCU3RvcmFnZU1hbmFnZXI6Omhhc0RhdGFJbk1lbW9yeSBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VNYW5hZ2VyOjpjbG9zZURhdGFiYXNlc0ZvckRlbGV0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZU1hbmFnZXI6OnN0b3BEYXRhYmFzZUFj
dGl2aXRpZXNGb3JTdXNwZW5kKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZU1hbmFnZXI6
OmdldE9yQ3JlYXRlVW5pcXVlSURCRGF0YWJhc2UpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9y
YWdlTWFuYWdlcjo6b3BlbkRhdGFiYXNlKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZU1h
bmFnZXI6OmRlbGV0ZURhdGFiYXNlKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZU1hbmFn
ZXI6OmdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyk6CisgICAgICAgIChXZWJLaXQ6OklE
QlN0b3JhZ2VNYW5hZ2VyOjpvcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKToKKyAgICAgICAgKFdlYktp
dDo6SURCU3RvcmFnZU1hbmFnZXI6OnJlZ2lzdGVyQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJL
aXQ6OklEQlN0b3JhZ2VNYW5hZ2VyOjp1bnJlZ2lzdGVyQ29ubmVjdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OklEQlN0b3JhZ2VNYW5hZ2VyOjpyZWdpc3RlclRyYW5zYWN0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6SURCU3RvcmFnZU1hbmFnZXI6OnVucmVnaXN0ZXJUcmFuc2FjdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVCYWNraW5nU3RvcmUpOgorICAg
ICAgICAoV2ViS2l0OjpJREJTdG9yYWdlTWFuYWdlcjo6cmVxdWVzdFNwYWNlKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VNYW5hZ2VyLmg6IEFkZGVkLgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZVJlZ2lzdHJ5LmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VSZWdpc3RyeTo6ZW5zdXJlQ29ubmVjdGlv
blRvQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZVJlZ2lzdHJ5OjpyZW1vdmVD
b25uZWN0aW9uVG9DbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlUmVnaXN0cnk6
OnJlZ2lzdGVyQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VSZWdpc3Ry
eTo6dW5yZWdpc3RlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlUmVn
aXN0cnk6OnJlZ2lzdGVyVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdl
UmVnaXN0cnk6OnVucmVnaXN0ZXJUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OklEQlN0
b3JhZ2VSZWdpc3RyeTo6Y29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VS
ZWdpc3RyeTo6dHJhbnNhY3Rpb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2Uv
SURCU3RvcmFnZVJlZ2lzdHJ5Lmg6IEFkZGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0
b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1N0b3JhZ2VNYW5hZ2VyOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFn
ZU1hbmFnZXI6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtTdG9yYWdlTWFuYWdlcjo6Y2FuSGFuZGxlVHlwZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrU3RvcmFnZU1hbmFnZXI6OnN0b3BSZWNlaXZpbmdNZXNzYWdlRnJvbUNvbm5lY3Rpb24pOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmxvY2FsT3JpZ2luU3RvcmFn
ZU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmRpZElu
Y3JlYXNlUXVvdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Omdl
dEFsbE9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Om1v
dmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpzdXNwZW5k
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpyZWdpc3RlclRlbXBv
cmFyeUJsb2JGaWxlUGF0aHMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFn
ZXI6OnJlcXVlc3RTcGFjZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdl
cjo6cmVzZXRRdW90YUZvclRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFn
ZU1hbmFnZXI6OnJlc2V0UXVvdGFVcGRhdGVkQmFzZWRPblVzYWdlRm9yVGVzdGluZyk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6b3BlbkRhdGFiYXNlKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpvcGVuREJSZXF1ZXN0Q2FuY2VsbGVk
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVEYXRhYmFz
ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZXN0YWJsaXNoVHJh
bnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmRhdGFi
YXNlQ29ubmVjdGlvblBlbmRpbmdDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9y
YWdlTWFuYWdlcjo6ZGF0YWJhc2VDb25uZWN0aW9uQ2xvc2VkKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjphYm9ydE9wZW5BbmRVcGdyYWRlTmVlZGVkKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkaWRGaXJlVmVyc2lvbkNoYW5nZUV2
ZW50KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjphYm9ydFRyYW5z
YWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjb21taXRU
cmFuc2FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGlk
RmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVPYmplY3RTdG9yZSk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6cmVuYW1lT2JqZWN0U3RvcmUpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNsZWFyT2JqZWN0U3RvcmUpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZUluZGV4KToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVJbmRleCk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6cmVuYW1lSW5kZXgpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnB1dE9yQWRkKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpnZXRSZWNvcmQpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmdldEFsbFJlY29yZHMpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmdldENvdW50KToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVSZWNvcmQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrU3RvcmFnZU1hbmFnZXI6Om9wZW5DdXJzb3IpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
U3RvcmFnZU1hbmFnZXI6Oml0ZXJhdGVDdXJzb3IpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
U3RvcmFnZU1hbmFnZXI6OmdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuaDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VNYW5h
Z2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6T3JpZ2luU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VC
dWNrZXQ6OlN0b3JhZ2VCdWNrZXQpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFu
YWdlcjo6U3RvcmFnZUJ1Y2tldDo6dG9XZWJzaXRlRGF0YVR5cGUpOgorICAgICAgICAoV2ViS2l0
OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldDo6dG9TdG9yYWdlSWRlbnRpZmll
cik6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0
OjppZGJTdG9yYWdlTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5h
Z2VyOjpTdG9yYWdlQnVja2V0OjpleGlzdGluZ0lEQlN0b3JhZ2VNYW5hZ2VyKToKKyAgICAgICAg
KFdlYktpdDo6T3JpZ2luU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VCdWNrZXQ6OmlzQWN0aXZlIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6T3JpZ2luU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VCdWNr
ZXQ6OmlzRW1wdHkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdl
cjo6U3RvcmFnZUJ1Y2tldDo6ZGVsZXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0
b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0Ojptb3ZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6
Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0OjpmZXRjaERhdGFUeXBlc0luTGlz
dEZyb21NZW1vcnkpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6U3Rv
cmFnZUJ1Y2tldDo6ZmV0Y2hEYXRhVHlwZXNJbkxpc3RGcm9tRGlzayk6CisgICAgICAgIChXZWJL
aXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0OjpkZWxldGVJREJTdG9yYWdl
RGF0YSk6CisgICAgICAgIChXZWJLaXQ6OmNyZWF0ZVF1b3RhTWFuYWdlcik6CisgICAgICAgIChX
ZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpPcmlnaW5TdG9yYWdlTWFuYWdlcik6CisgICAg
ICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpkZWZhdWx0QnVja2V0KToKKyAgICAg
ICAgKFdlYktpdDo6T3JpZ2luU3RvcmFnZU1hbmFnZXI6OnF1b3RhTWFuYWdlcik6CisgICAgICAg
IChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjppZGJTdG9yYWdlTWFuYWdlcik6CisgICAg
ICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpleGlzdGluZ0lEQlN0b3JhZ2VNYW5h
Z2VyKToKKyAgICAgICAgKFdlYktpdDo6T3JpZ2luU3RvcmFnZU1hbmFnZXI6Om1vdmVEYXRhKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2VyLmg6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9RdW90YU1hbmFnZXIuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdDo6UXVvdGFNYW5hZ2VyOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
S2l0OjpRdW90YU1hbmFnZXI6OlF1b3RhTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OlF1b3Rh
TWFuYWdlcjo6cmVxdWVzdFNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6UXVvdGFNYW5hZ2VyOjpo
YW5kbGVSZXF1ZXN0cyk6CisgICAgICAgIChXZWJLaXQ6OlF1b3RhTWFuYWdlcjo6Z3JhbnRXaXRo
Q3VycmVudFF1b3RhKToKKyAgICAgICAgKFdlYktpdDo6UXVvdGFNYW5hZ2VyOjpncmFudEZhc3RQ
YXRoKToKKyAgICAgICAgKFdlYktpdDo6UXVvdGFNYW5hZ2VyOjpkaWRJbmNyZWFzZVF1b3RhKToK
KyAgICAgICAgKFdlYktpdDo6UXVvdGFNYW5hZ2VyOjpyZXNldFF1b3RhVXBkYXRlZEJhc2VkT25V
c2FnZUZvclRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpRdW90YU1hbmFnZXI6OnJlc2V0UXVv
dGFGb3JUZXN0aW5nKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1F1b3RhTWFu
YWdlci5oOiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAg
ICAgICAgKHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQpOgorICAgICAgICAq
IFNoYXJlZC9XZWJzaXRlRGF0YS9RdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIuaDogQWRk
ZWQuCisgICAgICAgICogU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmg6CisgICAg
ICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6Omlu
Y3JlYXNlUXVvdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cGVyVGhpcmRQ
YXJ0eU9yaWdpblN0b3JhZ2VRdW90YSBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdFBlck9yaWdpblF1b3RhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbi5oOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJDb25u
ZWN0aW9uVG9TZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9T
ZXJ2ZXI6OmRlbGV0ZURhdGFiYXNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlv
blRvU2VydmVyOjpvcGVuRGF0YWJhc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0
aW9uVG9TZXJ2ZXI6OmFib3J0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJD
b25uZWN0aW9uVG9TZXJ2ZXI6OmNvbW1pdFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpkaWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2VU
cmFuc2FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6
Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9T
ZXJ2ZXI6OmRlbGV0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVj
dGlvblRvU2VydmVyOjpyZW5hbWVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklE
QkNvbm5lY3Rpb25Ub1NlcnZlcjo6Y2xlYXJPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViS2l0
OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRlbGV0ZUluZGV4KToKKyAgICAgICAgKFdlYktp
dDo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpyZW5hbWVJbmRleCk6CisgICAgICAgIChXZWJL
aXQ6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6cHV0T3JBZGQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmdldFJlY29yZCk6CisgICAgICAgIChXZWJLaXQ6
OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Z2V0QWxsUmVjb3Jkcyk6CisgICAgICAgIChXZWJL
aXQ6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Z2V0Q291bnQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRlbGV0ZVJlY29yZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6b3BlbkN1cnNvcik6CisgICAgICAgIChXZWJL
aXQ6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6aXRlcmF0ZUN1cnNvcik6CisgICAgICAgIChX
ZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZXN0YWJsaXNoVHJhbnNhY3Rpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRhdGFiYXNlQ29ubmVj
dGlvblBlbmRpbmdDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub1Nl
cnZlcjo6ZGF0YWJhc2VDb25uZWN0aW9uQ2xvc2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURC
Q29ubmVjdGlvblRvU2VydmVyOjphYm9ydE9wZW5BbmRVcGdyYWRlTmVlZGVkKToKKyAgICAgICAg
KFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpkaWRGaXJlVmVyc2lvbkNoYW5nZUV2
ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpvcGVuREJS
ZXF1ZXN0Q2FuY2VsbGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvU2Vy
dmVyOjpnZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMpOgorCiAyMDIyLTAyLTA4ICBKIFBh
c2NvZSAgPGpfcGFzY29lQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViQXV0aG5dIFVzZSBBdXRo
ZW50aWNhdGlvblNlcnZpY2VzQWdlbnQgZm9yIFdlYkF1dGhuIGNhbGxzIG9uIGlPUwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L0NoYW5nZUxvZwppbmRleCBlNmJhNzMyMmMzNDhlY2RlNDc5NGUwOTQ5OTViYWI0ODk2YmY1YTQ5
Li5jNGU2NTVhZmQ2ZTFhOGQ1ZWUxMjcwNzJlYTA2YzVhY2JlMTU3ZDY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0No
YW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIyLTAyLTA4ICBTaWh1aSBMaXUgIDxzaWh1aV9s
aXVAYXBwbGUuY29tPgorCisgICAgICAgIE1hbmFnZSBJbmRleGVkREIgc3RvcmFnZSBieSBvcmln
aW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDky
NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODc1NTUwMTQ+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAgKiBTdG9yYWdlL0luUHJvY2Vzc0lEQlNlcnZlci5j
cHA6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OnF1b3RhTWFuYWdlcik6CisKIDIwMjIt
MDItMDIgIEVsbGlvdHQgV2lsbGlhbXMgIDxlbXdAYXBwbGUuY29tPgogCiAgICAgICAgIFtYY29k
ZV0gRml4IHJlZHVuZGFudCBleGVjdXRpb24gb2YgIkNoZWNrIFZUYWJsZXMuLi4iIHNjcmlwdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3Jl
L0hlYWRlcnMuY21ha2UKaW5kZXggMzMyYjAwMzMwMmMzZWY5NjJmYTcyZmIzZjg4NGNmNWY4Mjcx
ZDQ5Zi4uMDhhMDFlNTc4ZDhhMzUyN2U2ZmVlNDQyY2U5MDgxMWFmNWJhZmFjMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFk
ZXJzLmNtYWtlCkBAIC0yMjQsMTEgKzIyNCwxNiBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1F
V09SS19IRUFERVJTCiAgICAgTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkNvbm5lY3Rpb25U
b0NsaWVudC5oCiAgICAgTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkNvbm5lY3Rpb25Ub0Ns
aWVudERlbGVnYXRlLmgKICAgICBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmgK
KyAgICBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSW5kZXhWYWx1ZUVudHJ5LmgKKyAgICBNb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSW5kZXhWYWx1ZVN0b3JlLmgKKyAgICBNb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uaAogICAgIE1vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuaAogICAgIE1vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaAorICAgIE1vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9TUUxpdGVJREJUcmFuc2FjdGlvbi5oCiAgICAgTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1NlcnZlck9wZW5EQlJlcXVlc3QuaAogICAgIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9VbmlxdWVJREJEYXRhYmFzZS5oCiAgICAgTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1
ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5oCisgICAgTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1Vu
aXF1ZUlEQkRhdGFiYXNlTWFuYWdlci5oCiAgICAgTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1Vu
aXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uaAogCiAgICAgTW9kdWxlcy9pbmRleGVkZGIvc2hh
cmVkL0luZGV4S2V5LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmgKaW5kZXggMTVmOGJkMjU1MTQ1N2QzMjk5MmQ2
NmJhY2VhZjM2ZWI2NGRiYTM4MS4uZWFlZjI1NDU2OTMzOTU2MTRlMWMyMTg3ZmY0Y2FiNjRhZTEz
ZTU3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2VJZGVudGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2VJZGVudGlmaWVyLmgKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAgIGJv
b2wgaXNUcmFuc2llbnQoKSBjb25zdCB7IHJldHVybiBtX2lzVHJhbnNpZW50OyB9CiAKICAgICBT
dHJpbmcgZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9vdChjb25zdCBTdHJpbmcmIHJvb3RE
aXJlY3RvcnksIGNvbnN0IFN0cmluZyYgdmVyc2lvblN0cmluZz0idjEiKSBjb25zdDsKLSAgICBz
dGF0aWMgU3RyaW5nIGRhdGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVUb1Jvb3QoY29uc3QgU2VjdXJp
dHlPcmlnaW5EYXRhJiB0b3BMZXZlbE9yaWdpbiwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBv
cGVuaW5nT3JpZ2luLCBjb25zdCBTdHJpbmcmIHJvb3REaXJlY3RvcnksIGNvbnN0IFN0cmluZyYg
dmVyc2lvblN0cmluZyk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBkYXRhYmFz
ZURpcmVjdG9yeVJlbGF0aXZlVG9Sb290KGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgdG9wTGV2
ZWxPcmlnaW4sIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3BlbmluZ09yaWdpbiwgY29uc3Qg
U3RyaW5nJiByb290RGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIHZlcnNpb25TdHJpbmcpOwogCiAg
ICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0Owog
ICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPElEQkRhdGFi
YXNlSWRlbnRpZmllcj4gZGVjb2RlKERlY29kZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGll
bnQuaAppbmRleCAyN2Y3MjY5MTlmMTQyMWYyMWE1ZjAzZmZkZmMxNzZkNGM0YmRmM2MyLi5mMDVh
YzJmOGM4MmE4MDljMjcxYzlkZjU5N2Y5NjQ3MzE5ZWY2NDYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQ29ubmVjdGlvblRvQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkNvbm5lY3Rp
b25Ub0NsaWVudC5oCkBAIC03NCwxMSArNzQsMTEgQEAgcHVibGljOgogCiAgICAgdm9pZCBub3Rp
ZnlPcGVuREJSZXF1ZXN0QmxvY2tlZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVl
c3RJZGVudGlmaWVyLCB1aW50NjRfdCBvbGRWZXJzaW9uLCB1aW50NjRfdCBuZXdWZXJzaW9uKTsK
IAotICAgIHZvaWQgZGlkR2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKGNvbnN0IElEQlJl
c291cmNlSWRlbnRpZmllciYsIFZlY3RvcjxJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiYmKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZEdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9u
cyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImLCBWZWN0b3I8SURCRGF0YWJhc2VOYW1lQW5k
VmVyc2lvbj4mJik7CiAKICAgICB2b2lkIHJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0aW9uKFVuaXF1
ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYpOwogICAgIHZvaWQgdW5yZWdpc3RlckRhdGFiYXNlQ29u
bmVjdGlvbihVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mKTsKLSAgICB2b2lkIGNvbm5lY3Rp
b25Ub0NsaWVudENsb3NlZCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29ubmVjdGlvblRv
Q2xpZW50Q2xvc2VkKCk7CiAgICAgYm9vbCBpc0Nsb3NlZCgpIHsgcmV0dXJuIG1faXNDbG9zZWQ7
IH0KICAgICB2b2lkIGNsZWFyRGVsZWdhdGUoKSB7IG1fZGVsZWdhdGUgPSBudWxscHRyOyB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJT
ZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNl
cnZlci5jcHAKaW5kZXggZDI2NjkzMTgwODQ2YWY2NjY4OWUxN2FlYTNmZjk5NzE5NTVhZTM2ZS4u
NGJhZDQ0MmIxYjNhOWE0MTc4NTkwNDJmODE2NTc3ZTA3YjEzYmE4YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKQEAg
LTEwMSwxMyArMTAxLDEzIEBAIHZvaWQgSURCU2VydmVyOjp1bnJlZ2lzdGVyVHJhbnNhY3Rpb24o
VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCiAgICAgbV90cmFuc2Fj
dGlvbnMucmVtb3ZlKHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCkpOwogfQogCi12b2lk
IElEQlNlcnZlcjo6cmVnaXN0ZXJEYXRhYmFzZUNvbm5lY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VD
b25uZWN0aW9uJiBjb25uZWN0aW9uKQordm9pZCBJREJTZXJ2ZXI6OnJlZ2lzdGVyQ29ubmVjdGlv
bihVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiB7CiAgICAgQVNTRVJU
KCFtX2RhdGFiYXNlQ29ubmVjdGlvbnMuY29udGFpbnMoY29ubmVjdGlvbi5pZGVudGlmaWVyKCkp
KTsKICAgICBtX2RhdGFiYXNlQ29ubmVjdGlvbnMuc2V0KGNvbm5lY3Rpb24uaWRlbnRpZmllcigp
LCAmY29ubmVjdGlvbik7CiB9CiAKLXZvaWQgSURCU2VydmVyOjp1bnJlZ2lzdGVyRGF0YWJhc2VD
b25uZWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYgY29ubmVjdGlvbikKK3ZvaWQg
SURCU2VydmVyOjp1bnJlZ2lzdGVyQ29ubmVjdGlvbihVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24pCiB7CiAgICAgQVNTRVJUKG1fZGF0YWJhc2VDb25uZWN0aW9ucy5jb250
YWlucyhjb25uZWN0aW9uLmlkZW50aWZpZXIoKSkpOwogICAgIG1fZGF0YWJhc2VDb25uZWN0aW9u
cy5yZW1vdmUoY29ubmVjdGlvbi5pZGVudGlmaWVyKCkpOwpAQCAtMTI4LDEzICsxMjgsMTMgQEAg
c3RkOjp1bmlxdWVfcHRyPElEQkJhY2tpbmdTdG9yZT4gSURCU2VydmVyOjpjcmVhdGVCYWNraW5n
U3RvcmUoY29uc3QgSURCRGF0YWJhc2UKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsK
ICAgICBpZiAobV9kYXRhYmFzZURpcmVjdG9yeVBhdGguaXNFbXB0eSgpKQotICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxNZW1vcnlJREJCYWNraW5nU3RvcmU+KG1fc2Vzc2lvbklELCBpZGVudGlm
aWVyKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TWVtb3J5SURCQmFja2luZ1N0b3JlPihp
ZGVudGlmaWVyKTsKIAogICAgIEFTU0VSVCghbV9zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSk7CiAg
ICAgaWYgKGlkZW50aWZpZXIuaXNUcmFuc2llbnQoKSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmlx
dWU8TWVtb3J5SURCQmFja2luZ1N0b3JlPihtX3Nlc3Npb25JRCwgaWRlbnRpZmllcik7CisgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPE1lbW9yeUlEQkJhY2tpbmdTdG9yZT4oaWRlbnRpZmllcik7
CiAKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxTUUxpdGVJREJCYWNraW5nU3RvcmU+KG1fc2Vzc2lv
bklELCBpZGVudGlmaWVyLCBtX2RhdGFiYXNlRGlyZWN0b3J5UGF0aCk7CisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8U1FMaXRlSURCQmFja2luZ1N0b3JlPihpZGVudGlmaWVyLCB1cGdyYWRlZERhdGFi
YXNlRGlyZWN0b3J5KGlkZW50aWZpZXIpKTsKIH0KIAogdm9pZCBJREJTZXJ2ZXI6Om9wZW5EYXRh
YmFzZShjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEpCkBAIC0xNzcsMTcgKzE3Nyw2
IEBAIHZvaWQgSURCU2VydmVyOjpkZWxldGVEYXRhYmFzZShjb25zdCBJREJSZXF1ZXN0RGF0YSYg
cmVxdWVzdERhdGEpCiAgICAgICAgIG1fdW5pcXVlSURCRGF0YWJhc2VNYXAucmVtb3ZlKGRhdGFi
YXNlLT5pZGVudGlmaWVyKCkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8VW5pcXVlSURCRGF0YWJh
c2U+IElEQlNlcnZlcjo6Y2xvc2VBbmRUYWtlVW5pcXVlSURCRGF0YWJhc2UoVW5pcXVlSURCRGF0
YWJhc2UmIGRhdGFiYXNlKQotewotICAgIExPRyhJbmRleGVkREIsICJJREJTZXJ2ZXI6OmNsb3Nl
VW5pcXVlSURCRGF0YWJhc2UiKTsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotCi0gICAg
YXV0byB1bmlxdWVQb2ludGVyID0gbV91bmlxdWVJREJEYXRhYmFzZU1hcC50YWtlKGRhdGFiYXNl
LmlkZW50aWZpZXIoKSk7Ci0gICAgQVNTRVJUKHVuaXF1ZVBvaW50ZXIpOwotCi0gICAgcmV0dXJu
IHVuaXF1ZVBvaW50ZXI7Ci19Ci0KIHZvaWQgSURCU2VydmVyOjphYm9ydFRyYW5zYWN0aW9uKGNv
bnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKQogewogICAg
IExPRyhJbmRleGVkREIsICJJREJTZXJ2ZXI6OmFib3J0VHJhbnNhY3Rpb24iKTsKQEAgLTc1MCw3
ICs3MzksNyBAQCB2b2lkIElEQlNlcnZlcjo6cmVuYW1lT3JpZ2luKGNvbnN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSYgb2xkT3JpZ2luLCBjb25zdAogICAgICAgICBGaWxlU3lzdGVtOjpt
b3ZlRmlsZShvbGRPcmlnaW5QYXRoLCBuZXdPcmlnaW5QYXRoKTsKIH0KIAotU3RvcmFnZVF1b3Rh
TWFuYWdlcjo6RGVjaXNpb24gSURCU2VydmVyOjpyZXF1ZXN0U3BhY2UoY29uc3QgQ2xpZW50T3Jp
Z2luJiBvcmlnaW4sIHVpbnQ2NF90IHRhc2tTaXplKSBXVEZfSUdOT1JFU19USFJFQURfU0FGRVRZ
X0FOQUxZU0lTCit2b2lkIElEQlNlcnZlcjo6cmVxdWVzdFNwYWNlKGNvbnN0IENsaWVudE9yaWdp
biYgb3JpZ2luLCB1aW50NjRfdCB0YXNrU2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgV1RGX0lHTk9SRVNfVEhSRUFEX1NBRkVUWV9BTkFMWVNJ
UwogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVChtX2xvY2suaXNI
ZWxkKCkpOwpAQCAtNzYyLDcgKzc1MSw3IEBAIFN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9u
IElEQlNlcnZlcjo6cmVxdWVzdFNwYWNlKGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2luCiAgICAg
cmVzdWx0ID0gbV9zcGFjZVJlcXVlc3RlcihvcmlnaW4sIHRhc2tTaXplKTsKICAgICBtX2xvY2su
bG9jaygpOwogCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihyZXN1
bHQgPT0gU3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb246OkdyYW50KTsKIH0KIAogdWludDY0
X3QgSURCU2VydmVyOjpkaXNrVXNhZ2UoY29uc3QgU3RyaW5nJiByb290RGlyZWN0b3J5LCBjb25z
dCBDbGllbnRPcmlnaW4mIG9yaWdpbikKQEAgLTc4NCw2ICs3NzMsMjMgQEAgdm9pZCBJREJTZXJ2
ZXI6OnVwZ3JhZGVGaWxlc0lmTmVjZXNzYXJ5KCkKICAgICAgICAgRmlsZVN5c3RlbTo6bWFrZUFs
bERpcmVjdG9yaWVzKG5ld1ZlcnNpb25EaXJlY3RvcnkpOwogfQogCitTdHJpbmcgSURCU2VydmVy
Ojp1cGdyYWRlZERhdGFiYXNlRGlyZWN0b3J5KGNvbnN0IFdlYkNvcmU6OklEQkRhdGFiYXNlSWRl
bnRpZmllciYgaWRlbnRpZmllcikKK3sKKyAgICBTdHJpbmcgb2xkT3JpZ2luRGlyZWN0b3J5ID0g
aWRlbnRpZmllci5kYXRhYmFzZURpcmVjdG9yeVJlbGF0aXZlVG9Sb290KG1fZGF0YWJhc2VEaXJl
Y3RvcnlQYXRoLCAidjAiKTsKKyAgICBTdHJpbmcgb2xkRGF0YWJhc2VEaXJlY3RvcnkgPSBGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQob2xkT3JpZ2luRGlyZWN0b3J5LCBTUUxp
dGVJREJCYWNraW5nU3RvcmU6OmVuY29kZURhdGFiYXNlTmFtZShpZGVudGlmaWVyLmRhdGFiYXNl
TmFtZSgpKSk7CisgICAgU3RyaW5nIG5ld09yaWdpbkRpcmVjdG9yeSA9IGlkZW50aWZpZXIuZGF0
YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9vdChtX2RhdGFiYXNlRGlyZWN0b3J5UGF0aCwgInYx
Iik7CisgICAgU3RyaW5nIGZpbGVOYW1lSGFzaCA9IFNRTGl0ZUZpbGVTeXN0ZW06OmNvbXB1dGVI
YXNoRm9yRmlsZU5hbWUoaWRlbnRpZmllci5kYXRhYmFzZU5hbWUoKSk7CisgICAgU3RyaW5nIG5l
d0RhdGFiYXNlRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KG5ld09yaWdpbkRpcmVjdG9yeSwgZmlsZU5hbWVIYXNoKTsKKyAgICBGaWxlU3lzdGVtOjptYWtl
QWxsRGlyZWN0b3JpZXMobmV3RGF0YWJhc2VEaXJlY3RvcnkpOworCisgICAgaWYgKEZpbGVTeXN0
ZW06OmZpbGVFeGlzdHMob2xkRGF0YWJhc2VEaXJlY3RvcnkpKSB7CisgICAgICAgIEZpbGVTeXN0
ZW06Om1vdmVGaWxlKG9sZERhdGFiYXNlRGlyZWN0b3J5LCBuZXdEYXRhYmFzZURpcmVjdG9yeSk7
CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KG9sZE9yaWdpbkRpcmVj
dG9yeSk7CisgICAgfQorCisgICAgcmV0dXJuIG5ld0RhdGFiYXNlRGlyZWN0b3J5OworfQorCiBi
b29sIElEQlNlcnZlcjo6aGFzRGF0YWJhc2VBY3Rpdml0aWVzT25NYWluVGhyZWFkKCkgY29uc3QK
IHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5oCmluZGV4IGQ4ODM2NDlhNWM4ZDVi
NTlmMDJjMmJkYWNkZGU2NzhhMWNhM2M0MmYuLjEzZmI3MGJlMzc5YWFhOWMxMWY1OWQyNTRiOTZj
MDcyOTRkYTA2MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9JREJTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvSURCU2VydmVyLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJTdG9yYWdl
UXVvdGFNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiVW5pcXVlSURCRGF0YWJhc2UuaCIKICNpbmNsdWRl
ICJVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJVbmlxdWVJREJEYXRh
YmFzZU1hbmFnZXIuaCIKICNpbmNsdWRlIDxwYWwvSHlzdGVyZXNpc0FjdGl2aXR5Lmg+CiAjaW5j
bHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZFRhc2tIYW5k
bGVyLmg+CkBAIC00OCw4ICs0OSw3IEBAIHN0cnVjdCBJREJHZXRSZWNvcmREYXRhOwogCiBuYW1l
c3BhY2UgSURCU2VydmVyIHsKIAotY2xhc3MgSURCU2VydmVyIHsKLSAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKK2NsYXNzIElEQlNlcnZlciA6IHB1YmxpYyBVbmlxdWVJREJEYXRhYmFzZU1h
bmFnZXIgewogcHVibGljOgogICAgIHVzaW5nIFN0b3JhZ2VRdW90YU1hbmFnZXJTcGFjZVJlcXVl
c3RlciA9IEZ1bmN0aW9uPFN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uKGNvbnN0IENsaWVu
dE9yaWdpbiYsIHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkKT47CiAgICAgV0VCQ09SRV9FWFBPUlQg
SURCU2VydmVyKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5
UGF0aCwgU3RvcmFnZVF1b3RhTWFuYWdlclNwYWNlUmVxdWVzdGVyJiYsIExvY2smKTsKQEAgLTg4
LDE1ICs4OCwxMyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldEFsbERh
dGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhJREJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURC
UmVzb3VyY2VJZGVudGlmaWVyJiwgY29uc3QgQ2xpZW50T3JpZ2luJik7CiAKLQotICAgIHZvaWQg
cmVnaXN0ZXJEYXRhYmFzZUNvbm5lY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJik7
Ci0gICAgdm9pZCB1bnJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNl
Q29ubmVjdGlvbiYpOwotICAgIHZvaWQgcmVnaXN0ZXJUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRh
YmFzZVRyYW5zYWN0aW9uJik7Ci0gICAgdm9pZCB1bnJlZ2lzdGVyVHJhbnNhY3Rpb24oVW5pcXVl
SURCRGF0YWJhc2VUcmFuc2FjdGlvbiYpOwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPFVuaXF1ZUlE
QkRhdGFiYXNlPiBjbG9zZUFuZFRha2VVbmlxdWVJREJEYXRhYmFzZShVbmlxdWVJREJEYXRhYmFz
ZSYpOwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPElEQkJhY2tpbmdTdG9yZT4gY3JlYXRlQmFja2lu
Z1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYpOworICAgIC8vIFVuaXF1ZUlEQkRh
dGFiYXNlTWFuYWdlcgorICAgIHZvaWQgcmVnaXN0ZXJDb25uZWN0aW9uKFVuaXF1ZUlEQkRhdGFi
YXNlQ29ubmVjdGlvbiYpIGZpbmFsOworICAgIHZvaWQgdW5yZWdpc3RlckNvbm5lY3Rpb24oVW5p
cXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJikgZmluYWw7CisgICAgdm9pZCByZWdpc3RlclRyYW5z
YWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mKSBmaW5hbDsKKyAgICB2b2lkIHVu
cmVnaXN0ZXJUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJikgZmluYWw7
CisgICAgc3RkOjp1bmlxdWVfcHRyPElEQkJhY2tpbmdTdG9yZT4gY3JlYXRlQmFja2luZ1N0b3Jl
KGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYpIGZpbmFsOworICAgIHZvaWQgcmVxdWVzdFNw
YWNlKGNvbnN0IENsaWVudE9yaWdpbiYsIHVpbnQ2NF90IHNpemUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYpIGZpbmFsOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgSGFzaFNldDxTZWN1
cml0eU9yaWdpbkRhdGE+IGdldE9yaWdpbnMoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzTW9kaWZpZWRTaW5jZShXYWxsVGltZSk7CkBAIC0x
MDQsNyArMTAyLDYgQEAgcHVibGljOgogICAgIHZvaWQgY2xvc2VEYXRhYmFzZXNGb3JPcmlnaW5z
KGNvbnN0IFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+JiwgRnVuY3Rpb248Ym9vbChjb25zdCBT
ZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBDbGllbnRPcmlnaW4mKT4mJik7CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCByZW5hbWVPcmlnaW4oY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhJiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJik7CiAKLSAgICBTdG9yYWdl
UXVvdGFNYW5hZ2VyOjpEZWNpc2lvbiByZXF1ZXN0U3BhY2UoY29uc3QgQ2xpZW50T3JpZ2luJiwg
dWludDY0X3QgdGFza1NpemUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB1aW50NjRfdCBk
aXNrVXNhZ2UoY29uc3QgU3RyaW5nJiByb290RGlyZWN0b3J5LCBjb25zdCBDbGllbnRPcmlnaW4m
KTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzRGF0YWJhc2VBY3Rpdml0aWVzT25NYWlu
VGhyZWFkKCkgY29uc3Q7CkBAIC0xMTQsNiArMTExLDcgQEAgcHJpdmF0ZToKICAgICBVbmlxdWVJ
REJEYXRhYmFzZSYgZ2V0T3JDcmVhdGVVbmlxdWVJREJEYXRhYmFzZShjb25zdCBJREJEYXRhYmFz
ZUlkZW50aWZpZXImKTsKIAogICAgIHZvaWQgdXBncmFkZUZpbGVzSWZOZWNlc3NhcnkoKTsKKyAg
ICBTdHJpbmcgdXBncmFkZWREYXRhYmFzZURpcmVjdG9yeShjb25zdCBXZWJDb3JlOjpJREJEYXRh
YmFzZUlkZW50aWZpZXImKTsKICAgICB2b2lkIHJlbW92ZURhdGFiYXNlc01vZGlmaWVkU2luY2VG
b3JWZXJzaW9uKFdhbGxUaW1lLCBjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHJlbW92ZURhdGFi
YXNlc1dpdGhPcmlnaW5zRm9yVmVyc2lvbihjb25zdCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRh
PiYsIGNvbnN0IFN0cmluZyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwCmlu
ZGV4IDdlZTQxNDBhOGFmMTgwMTFjOTZiY2E3YjYwOGQ4NjU5MThhZjg1ZWEuLmQ2MzM1MDMwOTkz
MDU1YjliMTJiNzg0NTY1NWRhODMzNzJiMWE1NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5n
U3RvcmUuY3BwCkBAIC00NCw5ICs0NCw4IEBAIG5hbWVzcGFjZSBJREJTZXJ2ZXIgewogLy8gVGhl
IEluZGV4ZWREQiBzcGVjIHN0YXRlcyB0aGUgbWF4aW11bSB2YWx1ZSB5b3UgY2FuIGdldCBmcm9t
IHRoZSBrZXkgZ2VuZXJhdG9yIGlzIDJeNTMuCiBjb25zdGV4cHIgdWludDY0X3QgbWF4R2VuZXJh
dGVkS2V5VmFsdWUgPSAweDIwMDAwMDAwMDAwMDAwOwogCi1NZW1vcnlJREJCYWNraW5nU3RvcmU6
Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IElE
QkRhdGFiYXNlSWRlbnRpZmllciYgaWRlbnRpZmllcikKK01lbW9yeUlEQkJhY2tpbmdTdG9yZTo6
TWVtb3J5SURCQmFja2luZ1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYgaWRlbnRp
ZmllcikKICAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQotICAgICwgbV9zZXNzaW9uSUQo
c2Vzc2lvbklEKQogewogfQogCkBAIC0xMzQsNyArMTMzLDcgQEAgSURCRXJyb3IgTWVtb3J5SURC
QmFja2luZ1N0b3JlOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZp
ZXImIHQKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgQ29uc3RyYWludEVycm9yIH07CiAKICAg
ICBBU1NFUlQoIW1fb2JqZWN0U3RvcmVzQnlJZGVudGlmaWVyLmNvbnRhaW5zKGluZm8uaWRlbnRp
ZmllcigpKSk7Ci0gICAgYXV0byBvYmplY3RTdG9yZSA9IE1lbW9yeU9iamVjdFN0b3JlOjpjcmVh
dGUobV9zZXNzaW9uSUQsIGluZm8pOworICAgIGF1dG8gb2JqZWN0U3RvcmUgPSBNZW1vcnlPYmpl
Y3RTdG9yZTo6Y3JlYXRlKGluZm8pOwogCiAgICAgbV9kYXRhYmFzZUluZm8tPmFkZEV4aXN0aW5n
T2JqZWN0U3RvcmUoaW5mbyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuaAppbmRleCA5
MmFhNzYwZDIwNzMzNzE4ZmJkYjhjMDQ0Y2ZlNjdkY2FiMTY1MzM1Li4wOTMwMWU4M2ZjYTdjNzUw
OWUyODU4MTEwYzEyNzgzNTMzNThmM2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5o
CkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAiSURCUmVzb3VyY2VJZGVudGlmaWVyLmgiCiAj
aW5jbHVkZSAiSW5kZXhLZXkuaCIKICNpbmNsdWRlICJNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2Fj
dGlvbi5oIgotI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00MSw4ICs0MCw4IEBAIGNsYXNzIE1lbW9y
eU9iamVjdFN0b3JlOwogY2xhc3MgTWVtb3J5SURCQmFja2luZ1N0b3JlIGZpbmFsIDogcHVibGlj
IElEQkJhY2tpbmdTdG9yZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
Ci0gICAgTWVtb3J5SURCQmFja2luZ1N0b3JlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBJREJEYXRh
YmFzZUlkZW50aWZpZXImKTsKLSAgICB+TWVtb3J5SURCQmFja2luZ1N0b3JlKCk7CisgICAgV0VC
Q09SRV9FWFBPUlQgZXhwbGljaXQgTWVtb3J5SURCQmFja2luZ1N0b3JlKGNvbnN0IElEQkRhdGFi
YXNlSWRlbnRpZmllciYpOworICAgIFdFQkNPUkVfRVhQT1JUIH5NZW1vcnlJREJCYWNraW5nU3Rv
cmUoKTsKIAogICAgIElEQkVycm9yIGdldE9yRXN0YWJsaXNoRGF0YWJhc2VJbmZvKElEQkRhdGFi
YXNlSW5mbyYpIGZpbmFsOwogICAgIHVpbnQ2NF90IGRhdGFiYXNlVmVyc2lvbigpIGZpbmFsOwpA
QCAtOTIsNyArOTEsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgdW5yZWdpc3Rlck9iamVjdFN0b3Jl
KE1lbW9yeU9iamVjdFN0b3JlJik7CiAKICAgICBJREJEYXRhYmFzZUlkZW50aWZpZXIgbV9pZGVu
dGlmaWVyOwotICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxJREJEYXRhYmFzZUluZm8+IG1fZGF0YWJhc2VJbmZvOwogCiAgICAgSGFzaE1hcDxJREJS
ZXNvdXJjZUlkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxNZW1vcnlCYWNraW5nU3RvcmVUcmFu
c2FjdGlvbj4+IG1fdHJhbnNhY3Rpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5jcHAKaW5kZXgg
OWRkYzBmY2Y5OTE5M2YzMzRiZGM1ZDQyNjFlYTM5MWRlNGJhYWI3YS4uZTAxZWUwMmI3MTUyMzk5
Y2M3MjZmYjE4YmMzNDkxNDYwNGRlNzNlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuY3BwCkBA
IC0zOCwxOCArMzgsMTcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NKU1ZhbHVlLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSlNWYWx1ZUlubGluZXMuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KU0xvY2suaD4KLSNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiBuYW1lc3BhY2UgSURC
U2VydmVyIHsKIAotUmVmPE1lbW9yeU9iamVjdFN0b3JlPiBNZW1vcnlPYmplY3RTdG9yZTo6Y3Jl
YXRlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiBp
bmZvKQorUmVmPE1lbW9yeU9iamVjdFN0b3JlPiBNZW1vcnlPYmplY3RTdG9yZTo6Y3JlYXRlKGNv
bnN0IElEQk9iamVjdFN0b3JlSW5mbyYgaW5mbykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBNZW1vcnlPYmplY3RTdG9yZShzZXNzaW9uSUQsIGluZm8pKTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBNZW1vcnlPYmplY3RTdG9yZShpbmZvKSk7CiB9CiAKLU1lbW9yeU9iamVjdFN0b3Jl
OjpNZW1vcnlPYmplY3RTdG9yZShQQUw6OlNlc3Npb25JRCwgY29uc3QgSURCT2JqZWN0U3RvcmVJ
bmZvJiBpbmZvKQorTWVtb3J5T2JqZWN0U3RvcmU6Ok1lbW9yeU9iamVjdFN0b3JlKGNvbnN0IElE
Qk9iamVjdFN0b3JlSW5mbyYgaW5mbykKICAgICA6IG1faW5mbyhpbmZvKQogewogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVj
dFN0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5
T2JqZWN0U3RvcmUuaAppbmRleCA4NzFkZWI1ZTRhZTA1MTQ4MmI5MDg5Njg5NWVhMzFjMjc2ZGQz
MDg2Li5mMDNhM2ExYjBhZDUzNGI5ZjMzOWM0ZmJkN2U3NDBhZGYyMjg0NzAwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3Rv
cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5
T2JqZWN0U3RvcmUuaApAQCAtMzQsMTAgKzM0LDYgQEAKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKLW5hbWVzcGFjZSBQQUwgewotY2xhc3Mg
U2Vzc2lvbklEOwotfQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIElEQkN1cnNvcklu
Zm87CkBAIC02MSw3ICs1Nyw3IEBAIHR5cGVkZWYgSGFzaE1hcDxJREJLZXlEYXRhLCBUaHJlYWRT
YWZlRGF0YUJ1ZmZlciwgSURCS2V5RGF0YUhhc2gsIElEQktleURhdGFIYXNoCiAKIGNsYXNzIE1l
bW9yeU9iamVjdFN0b3JlIDogcHVibGljIFJlZkNvdW50ZWQ8TWVtb3J5T2JqZWN0U3RvcmU+IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPE1lbW9yeU9iamVjdFN0b3JlPiBjcmVhdGUoUEFMOjpT
ZXNzaW9uSUQsIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYpOworICAgIHN0YXRpYyBSZWY8TWVt
b3J5T2JqZWN0U3RvcmU+IGNyZWF0ZShjb25zdCBJREJPYmplY3RTdG9yZUluZm8mKTsKIAogICAg
IH5NZW1vcnlPYmplY3RTdG9yZSgpOwogCkBAIC0xMDgsNyArMTA0LDcgQEAgcHVibGljOgogICAg
IHZvaWQgcmVuYW1lSW5kZXgoTWVtb3J5SW5kZXgmLCBjb25zdCBTdHJpbmcmIG5ld05hbWUpOwog
CiBwcml2YXRlOgotICAgIE1lbW9yeU9iamVjdFN0b3JlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBJ
REJPYmplY3RTdG9yZUluZm8mKTsKKyAgICBNZW1vcnlPYmplY3RTdG9yZShjb25zdCBJREJPYmpl
Y3RTdG9yZUluZm8mKTsKIAogICAgIElEQktleURhdGFTZXQ6Oml0ZXJhdG9yIGxvd2VzdEl0ZXJh
dG9ySW5SYW5nZShjb25zdCBJREJLZXlSYW5nZURhdGEmLCBib29sIHJldmVyc2UpIGNvbnN0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FM
aXRlSURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDc4NDYxZjEzNmY3N2I0OGUw
NDI1NTY5OWQ4ZDlhYzg0OWQ5YzQ2NWQuLjkyMWFhMmIwYjg4MDliM2E0ZGNmNzMyMTg5ZGI5MDlh
NDYwYWIxOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCkBAIC0yMzYsMTIg
KzIzNiwxMCBAQCBzdGF0aWMgQVNDSUlMaXRlcmFsIGluZGV4SW5mb1RhYmxlU2NoZW1hVGVtcCgp
CiAgICAgcmV0dXJuIFRBQkxFX1NDSEVNQV9QUkVGSVggIl9UZW1wX0luZGV4SW5mbyIgSU5ERVhf
SU5GT19UQUJMRV9TQ0hFTUFfU1VGRklYOwogfQogCi1TUUxpdGVJREJCYWNraW5nU3RvcmU6OlNR
TGl0ZUlEQkJhY2tpbmdTdG9yZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IElEQkRh
dGFiYXNlSWRlbnRpZmllciYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZVJvb3RE
aXJlY3RvcnkpCi0gICAgOiBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCi0gICAgLCBtX2lkZW50aWZp
ZXIoaWRlbnRpZmllcikKLSAgICAsIG1fZGF0YWJhc2VSb290RGlyZWN0b3J5KGRhdGFiYXNlUm9v
dERpcmVjdG9yeSkKK1NRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6U1FMaXRlSURCQmFja2luZ1N0b3Jl
KGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBk
YXRhYmFzZURpcmVjdG9yeSkKKyAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQorICAgICwg
bV9kYXRhYmFzZURpcmVjdG9yeShkYXRhYmFzZURpcmVjdG9yeSkKIHsKLSAgICBtX2RhdGFiYXNl
RGlyZWN0b3J5ID0gZnVsbERhdGFiYXNlRGlyZWN0b3J5V2l0aFVwZ3JhZGUoKTsKIH0KIAogU1FM
aXRlSURCQmFja2luZ1N0b3JlOjp+U1FMaXRlSURCQmFja2luZ1N0b3JlKCkKQEAgLTkxMiwxOSAr
OTEwLDI5IEBAIHN0ZDo6dW5pcXVlX3B0cjxJREJEYXRhYmFzZUluZm8+IFNRTGl0ZUlEQkJhY2tp
bmdTdG9yZTo6ZXh0cmFjdEV4aXN0aW5nRGF0YWJhc2VJCiAgICAgcmV0dXJuIGRhdGFiYXNlSW5m
bzsKIH0KIAotU3RyaW5nIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZmlsZW5hbWVGb3JEYXRhYmFz
ZU5hbWUoKSBjb25zdAorU3RyaW5nIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZW5jb2RlRGF0YWJh
c2VOYW1lKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lKQogewotICAgIEFTU0VSVCghbV9pZGVu
dGlmaWVyLmRhdGFiYXNlTmFtZSgpLmlzTnVsbCgpKTsKLQotICAgIGlmIChtX2lkZW50aWZpZXIu
ZGF0YWJhc2VOYW1lKCkuaXNFbXB0eSgpKQorICAgIEFTU0VSVCghZGF0YWJhc2VOYW1lLmlzRW1w
dHkoKSk7CisgICAgaWYgKGRhdGFiYXNlTmFtZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAi
JTAwIjsKIAotICAgIFN0cmluZyBmaWxlbmFtZSA9IEZpbGVTeXN0ZW06OmVuY29kZUZvckZpbGVO
YW1lKG1faWRlbnRpZmllci5kYXRhYmFzZU5hbWUoKSk7Ci0gICAgZmlsZW5hbWUucmVwbGFjZSgn
LicsICIlMkUiKTsKKyAgICBTdHJpbmcgZmlsZW5hbWUgPSBGaWxlU3lzdGVtOjplbmNvZGVGb3JG
aWxlTmFtZShkYXRhYmFzZU5hbWUpOworICAgIGZpbGVuYW1lLnJlcGxhY2VXaXRoTGl0ZXJhbCgn
LicsICIlMkUiKTsKIAogICAgIHJldHVybiBmaWxlbmFtZTsKIH0KIAorU3RyaW5nIFNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6ZGVjb2RlRGF0YWJhc2VOYW1lKGNvbnN0IFN0cmluZyYgZW5jb2RlZE5h
bWUpCit7CisgICAgaWYgKGVuY29kZWROYW1lID09ICIlMDAiX3MpCisgICAgICAgIHJldHVybiBl
bXB0eVN0cmluZygpOworCisgICAgU3RyaW5nIG5hbWUgPSBlbmNvZGVkTmFtZTsKKyAgICBuYW1l
LnJlcGxhY2UoIiUyRSJfcywgIi4iX3MpOworCisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OmRlY29k
ZUZyb21GaWxlbmFtZShuYW1lKTsKK30KKwogU3RyaW5nIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
ZnVsbERhdGFiYXNlUGF0aEZvckRpcmVjdG9yeShjb25zdCBTdHJpbmcmIGZ1bGxEYXRhYmFzZURp
cmVjdG9yeSkKIHsKICAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KGZ1bGxEYXRhYmFzZURpcmVjdG9yeSwgIkluZGV4ZWREQi5zcWxpdGUzIik7CkBAIC05NjUs
MjMgKzk3Myw2IEBAIHN0ZDo6b3B0aW9uYWw8SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbj4gU1FM
aXRlSURCQmFja2luZ1N0b3JlOjpkYXRhYmFzZU5hbWVBbmRWCiAgICAgcmV0dXJuIElEQkRhdGFi
YXNlTmFtZUFuZFZlcnNpb24geyBkYXRhYmFzZU5hbWUsICpkYXRhYmFzZVZlcnNpb24gfTsKIH0K
IAotU3RyaW5nIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZnVsbERhdGFiYXNlRGlyZWN0b3J5V2l0
aFVwZ3JhZGUoKQotewotICAgIFN0cmluZyBvbGRPcmlnaW5EaXJlY3RvcnkgPSBtX2lkZW50aWZp
ZXIuZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9vdChtX2RhdGFiYXNlUm9vdERpcmVjdG9y
eSwgInYwIik7Ci0gICAgU3RyaW5nIG9sZERhdGFiYXNlRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG9sZE9yaWdpbkRpcmVjdG9yeSwgZmlsZW5hbWVGb3JE
YXRhYmFzZU5hbWUoKSk7Ci0gICAgU3RyaW5nIG5ld09yaWdpbkRpcmVjdG9yeSA9IG1faWRlbnRp
Zmllci5kYXRhYmFzZURpcmVjdG9yeVJlbGF0aXZlVG9Sb290KG1fZGF0YWJhc2VSb290RGlyZWN0
b3J5LCAidjEiKTsKLSAgICBTdHJpbmcgZmlsZU5hbWVIYXNoID0gU1FMaXRlRmlsZVN5c3RlbTo6
Y29tcHV0ZUhhc2hGb3JGaWxlTmFtZShtX2lkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCkpOwotICAg
IFN0cmluZyBuZXdEYXRhYmFzZURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChuZXdPcmlnaW5EaXJlY3RvcnksIGZpbGVOYW1lSGFzaCk7Ci0gICAgRmlsZVN5
c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKG5ld0RhdGFiYXNlRGlyZWN0b3J5KTsKLQotICAgIGlm
IChGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG9sZERhdGFiYXNlRGlyZWN0b3J5KSkgewotICAgICAg
ICBGaWxlU3lzdGVtOjptb3ZlRmlsZShvbGREYXRhYmFzZURpcmVjdG9yeSwgbmV3RGF0YWJhc2VE
aXJlY3RvcnkpOwotICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeShvbGRP
cmlnaW5EaXJlY3RvcnkpOwotICAgIH0KLQotICAgIHJldHVybiBuZXdEYXRhYmFzZURpcmVjdG9y
eTsKLX0KLQogSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRPckVzdGFibGlzaERh
dGFiYXNlSW5mbyhJREJEYXRhYmFzZUluZm8mIGluZm8pCiB7CiAgICAgTE9HKEluZGV4ZWREQiwg
IlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0T3JFc3RhYmxpc2hEYXRhYmFzZUluZm8gLSBkYXRh
YmFzZSAlcyIsIG1faWRlbnRpZmllci5kYXRhYmFzZU5hbWUoKS51dGY4KCkuZGF0YSgpKTsKQEAg
LTk5MSwxMSArOTgyLDExIEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0T3JF
c3RhYmxpc2hEYXRhYmFzZUluZm8oSURCRGF0YWJhc2VJbmZvJiBpbmZvCiAgICAgICAgIHJldHVy
biBJREJFcnJvciB7IH07CiAgICAgfQogCi0gICAgU3RyaW5nIGRiRmlsZW5hbWUgPSBmdWxsRGF0
YWJhc2VQYXRoKCk7Ci0KKyAgICBTdHJpbmcgZGF0YWJhc2VQYXRoID0gZnVsbERhdGFiYXNlUGF0
aCgpOworICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhGaWxlU3lzdGVtOjpwYXJl
bnRQYXRoKGRhdGFiYXNlUGF0aCkpOwogICAgIG1fc3FsaXRlREIgPSBtYWtlVW5pcXVlPFNRTGl0
ZURhdGFiYXNlPigpOwotICAgIGlmICghbV9zcWxpdGVEQi0+b3BlbihkYkZpbGVuYW1lKSkgewot
ICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBvcGVuIFNRTGl0ZSBkYXRhYmFzZSBhdCBwYXRo
ICclcyciLCBkYkZpbGVuYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgIGlmICghbV9zcWxpdGVEQi0+
b3BlbihkYXRhYmFzZVBhdGgpKSB7CisgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIG9wZW4g
U1FMaXRlIGRhdGFiYXNlIGF0IHBhdGggJyVzJyIsIGRhdGFiYXNlUGF0aC51dGY4KCkuZGF0YSgp
KTsKICAgICAgICAgY2xvc2VTUUxpdGVEQigpOwogICAgIH0KIApAQCAtMTA0NCw3ICsxMDM1LDcg
QEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRPckVzdGFibGlzaERhdGFiYXNl
SW5mbyhJREJEYXRhYmFzZUluZm8mIGluZm8KICAgICAgICAgZGF0YWJhc2VJbmZvID0gY3JlYXRl
QW5kUG9wdWxhdGVJbml0aWFsRGF0YWJhc2VJbmZvKCk7CiAKICAgICBpZiAoIWRhdGFiYXNlSW5m
bykgewotICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBlc3RhYmxpc2ggSURCIGRhdGFiYXNl
IGF0IHBhdGggJyVzJyIsIGRiRmlsZW5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIExPR19F
UlJPUigiVW5hYmxlIHRvIGVzdGFibGlzaCBJREIgZGF0YWJhc2UgYXQgcGF0aCAnJXMnIiwgZGF0
YWJhc2VQYXRoLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBjbG9zZVNRTGl0ZURCKCk7CiAgICAg
ICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBlc3RhYmxpc2gg
SURCIGRhdGFiYXNlIGZpbGUiX3MgfTsKICAgICB9CkBAIC0yNzk4LDcgKzI3ODksNiBAQCB2b2lk
IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlQmFja2luZ1N0b3JlKCkKIAogICAgIFNRTGl0
ZUZpbGVTeXN0ZW06OmRlbGV0ZURhdGFiYXNlRmlsZShkYXRhYmFzZVBhdGgpOwogICAgIFNRTGl0
ZUZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGF0YWJhc2VEaXJlY3RvcnkobV9kYXRhYmFzZURpcmVj
dG9yeSk7Ci0gICAgU1FMaXRlRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEYXRhYmFzZURpcmVjdG9y
eShtX2lkZW50aWZpZXIuZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9vdChtX2RhdGFiYXNl
Um9vdERpcmVjdG9yeSkpOwogfQogCiB2b2lkIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5yZWdp
c3RlckN1cnNvcihTUUxpdGVJREJDdXJzb3ImIGN1cnNvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5n
U3RvcmUuaAppbmRleCAyZWZlNmIyYTM0MTk5M2JiMjZmZGY5MWNmZjZlN2RlYThkYmJlZDM2Li43
MzFhOWE0MTkzODY1ZTNjNWYzYzM1ZWQ3NTcxYjEyODJmNzgwOTYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3Jl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlE
QkJhY2tpbmdTdG9yZS5oCkBAIC01MSw5ICs1MSw4IEBAIGNsYXNzIFNRTGl0ZUlEQkN1cnNvcjsK
IGNsYXNzIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZSBmaW5hbCA6IHB1YmxpYyBJREJCYWNraW5nU3Rv
cmUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFNRTGl0ZUlE
QkJhY2tpbmdTdG9yZShQQUw6OlNlc3Npb25JRCwgY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVy
JiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZVJvb3REaXJlY3RvcnkpOwotICAgIAotICAgIH5TUUxp
dGVJREJCYWNraW5nU3RvcmUoKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTUUxpdGVJREJC
YWNraW5nU3RvcmUoY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJiwgY29uc3QgU3RyaW5nJiBk
YXRhYmFzZURpcmVjdG9yeSk7CisgICAgV0VCQ09SRV9FWFBPUlQgflNRTGl0ZUlEQkJhY2tpbmdT
dG9yZSgpIGZpbmFsOwogCiAgICAgSURCRXJyb3IgZ2V0T3JFc3RhYmxpc2hEYXRhYmFzZUluZm8o
SURCRGF0YWJhc2VJbmZvJikgZmluYWw7CiAgICAgdWludDY0X3QgZGF0YWJhc2VWZXJzaW9uKCkg
ZmluYWw7CkBAIC05NCwxOCArOTMsMTUgQEAgcHVibGljOgogCiAgICAgSURCRXJyb3IgZ2V0Qmxv
YlJlY29yZHNGb3JPYmplY3RTdG9yZVJlY29yZChpbnQ2NF90IG9iamVjdFN0b3JlUmVjb3JkLCBW
ZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIFZlY3RvcjxTdHJpbmc+JiBibG9iRmlsZVBhdGhzKTsK
IAotICAgIHN0YXRpYyB1aW50NjRfdCBkYXRhYmFzZXNTaXplRm9yRGlyZWN0b3J5KGNvbnN0IFN0
cmluZyYgZGlyZWN0b3J5KTsKLQorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB1aW50NjRfdCBk
YXRhYmFzZXNTaXplRm9yRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKICAgICBT
dHJpbmcgZGF0YWJhc2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2RhdGFiYXNlRGlyZWN0
b3J5OyB9OwotICAgIHN0YXRpYyBTdHJpbmcgZnVsbERhdGFiYXNlUGF0aEZvckRpcmVjdG9yeShj
b25zdCBTdHJpbmcmKTsKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxJREJEYXRhYmFzZU5hbWVB
bmRWZXJzaW9uPiBkYXRhYmFzZU5hbWVBbmRWZXJzaW9uRnJvbUZpbGUoY29uc3QgU3RyaW5nJik7
CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBmdWxsRGF0YWJhc2VQYXRoRm9yRGly
ZWN0b3J5KGNvbnN0IFN0cmluZyYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcg
ZW5jb2RlRGF0YWJhc2VOYW1lKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIGRlY29kZURhdGFiYXNlTmFtZShjb25zdCBTdHJpbmcm
IGVuY29kZWREYXRhYmFzZU5hbWUpOwogCi0gICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkg
Y29uc3QgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
c3RkOjpvcHRpb25hbDxJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiBkYXRhYmFzZU5hbWVBbmRW
ZXJzaW9uRnJvbUZpbGUoY29uc3QgU3RyaW5nJik7CiAKIHByaXZhdGU6Ci0gICAgU3RyaW5nIGZp
bGVuYW1lRm9yRGF0YWJhc2VOYW1lKCkgY29uc3Q7Ci0gICAgU3RyaW5nIGZ1bGxEYXRhYmFzZURp
cmVjdG9yeVdpdGhVcGdyYWRlKCk7Ci0KICAgICBJREJFcnJvciBlbnN1cmVWYWxpZFJlY29yZHNU
YWJsZSgpOwogICAgIElEQkVycm9yIGVuc3VyZVZhbGlkSW5kZXhSZWNvcmRzVGFibGUoKTsKICAg
ICBJREJFcnJvciBlbnN1cmVWYWxpZEluZGV4UmVjb3Jkc0luZGV4KCk7CkBAIC0yMDYsNyArMjAy
LDYgQEAgcHJpdmF0ZToKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxTUUxpdGVTdGF0ZW1lbnQ+IG1f
Y2FjaGVkU3RhdGVtZW50c1tzdGF0aWNfY2FzdDxpbnQ+KFNRTDo6SW52YWxpZCldOwogCi0gICAg
UEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAgICAgSURCRGF0YWJhc2VJZGVudGlmaWVyIG1f
aWRlbnRpZmllcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SURCRGF0YWJhc2VJbmZvPiBtX2RhdGFi
YXNlSW5mbzsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SURCRGF0YWJhc2VJbmZvPiBtX29yaWdpbmFs
RGF0YWJhc2VJbmZvQmVmb3JlVmVyc2lvbkNoYW5nZTsKQEAgLTIxNiw3ICsyMTEsNiBAQCBwcml2
YXRlOgogICAgIEhhc2hNYXA8SURCUmVzb3VyY2VJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8
U1FMaXRlSURCVHJhbnNhY3Rpb24+PiBtX3RyYW5zYWN0aW9uczsKICAgICBIYXNoTWFwPElEQlJl
c291cmNlSWRlbnRpZmllciwgU1FMaXRlSURCQ3Vyc29yKj4gbV9jdXJzb3JzOwogCi0gICAgU3Ry
aW5nIG1fZGF0YWJhc2VSb290RGlyZWN0b3J5OwogICAgIFN0cmluZyBtX2RhdGFiYXNlRGlyZWN0
b3J5OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAKaW5kZXggMmIxZWFkYjllYTVjNDY0
ZDAyNzVlZDIyM2Y1MDAzYjdiZWYxNTczMy4uNWI1MGQyOThjZTNmMmU0YjY2NzJlZTAyZmJlNmY2
Y2Q4MmY4NmJlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCkBAIC00Miw2ICs0Miw3IEBA
CiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlN0b3JhZ2VRdW90YU1hbmFnZXIuaCIK
ICNpbmNsdWRlICJVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJVbmlx
dWVJREJEYXRhYmFzZU1hbmFnZXIuaCIKICNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtMTM0LDggKzEzNSw4IEBAIHN0YXRpYyBpbmxpbmUgdWludDY0X3Qg
ZXN0aW1hdGVTaXplKGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYgaW5mbykKICAgICByZXR1cm4g
c2l6ZTsKIH0KIAotVW5pcXVlSURCRGF0YWJhc2U6OlVuaXF1ZUlEQkRhdGFiYXNlKElEQlNlcnZl
ciYgc2VydmVyLCBjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImIGlkZW50aWZpZXIpCi0gICAg
OiBtX3NlcnZlcihzZXJ2ZXIpCitVbmlxdWVJREJEYXRhYmFzZTo6VW5pcXVlSURCRGF0YWJhc2Uo
VW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyJiBtYW5hZ2VyLCBjb25zdCBJREJEYXRhYmFzZUlkZW50
aWZpZXImIGlkZW50aWZpZXIpCisgICAgOiBtX21hbmFnZXIobWFuYWdlcikKICAgICAsIG1faWRl
bnRpZmllcihpZGVudGlmaWVyKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwpAQCAt
MTYzLDYgKzE2NCwxMSBAQCBjb25zdCBJREJEYXRhYmFzZUluZm8mIFVuaXF1ZUlEQkRhdGFiYXNl
OjppbmZvKCkgY29uc3QKICAgICByZXR1cm4gKm1fZGF0YWJhc2VJbmZvOwogfQogCitVbmlxdWVJ
REJEYXRhYmFzZU1hbmFnZXIqIFVuaXF1ZUlEQkRhdGFiYXNlOjptYW5hZ2VyKCkKK3sKKyAgICBy
ZXR1cm4gbV9tYW5hZ2VyLmdldCgpOworfQorCiB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVu
RGF0YWJhc2VDb25uZWN0aW9uKElEQkNvbm5lY3Rpb25Ub0NsaWVudCYgY29ubmVjdGlvbiwgY29u
c3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhKQogewogICAgIExPRyhJbmRleGVkREIsICJV
bmlxdWVJREJEYXRhYmFzZTo6b3BlbkRhdGFiYXNlQ29ubmVjdGlvbiIpOwpAQCAtMTg1LDE3ICsx
OTEsNDUgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybUN1cnJlbnRPcGVuT3BlcmF0
aW9uKCkKICAgICBBU1NFUlQobV9jdXJyZW50T3BlbkRCUmVxdWVzdCk7CiAgICAgQVNTRVJUKG1f
Y3VycmVudE9wZW5EQlJlcXVlc3QtPmlzT3BlblJlcXVlc3QoKSk7CiAKKyAgICAvLyBXZSBkb24n
dCBuZWVkIHRvIGNyZWF0ZSB0aGUgZmlsZSBzbyBubyBuZWVkIHRvIGRvIHNwYWNlIGNoZWNrLgor
ICAgIGlmIChtX2JhY2tpbmdTdG9yZSkKKyAgICAgICAgcmV0dXJuIHBlcmZvcm1DdXJyZW50T3Bl
bk9wZXJhdGlvbkFmdGVyU3BhY2VDaGVjayh0cnVlKTsKKworICAgIGlmICghbV9tYW5hZ2VyKQor
ICAgICAgICByZXR1cm4gcGVyZm9ybUN1cnJlbnRPcGVuT3BlcmF0aW9uQWZ0ZXJTcGFjZUNoZWNr
KGZhbHNlKTsKKworICAgIGF1dG8gcmVxdWVzdElkZW50aWZpZXIgPSBtX2N1cnJlbnRPcGVuREJS
ZXF1ZXN0LT5yZXF1ZXN0RGF0YSgpLnJlcXVlc3RJZGVudGlmaWVyKCk7CisgICAgaWYgKG1fb3Bl
bkRCUmVxdWVzdHNGb3JTcGFjZUNoZWNrLmNvbnRhaW5zKHJlcXVlc3RJZGVudGlmaWVyKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbV9vcGVuREJSZXF1ZXN0c0ZvclNwYWNlQ2hlY2suYWRkKHJl
cXVlc3RJZGVudGlmaWVyKTsKKyAgICBtX21hbmFnZXItPnJlcXVlc3RTcGFjZShtX2lkZW50aWZp
ZXIub3JpZ2luKCksIGRlZmF1bHRXcml0ZU9wZXJhdGlvbkNvc3QsIFt0aGlzLCB3ZWFrVGhpcyA9
IFdlYWtQdHIgeyAqdGhpcyB9LCByZXF1ZXN0SWRlbnRpZmllcl0oYm9vbCBncmFudGVkKSBtdXRh
YmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBtX29wZW5EQlJlcXVlc3RzRm9yU3BhY2VDaGVjay5yZW1vdmUocmVxdWVzdElkZW50aWZp
ZXIpOworICAgICAgICBpZiAobV9jdXJyZW50T3BlbkRCUmVxdWVzdC0+cmVxdWVzdERhdGEoKS5y
ZXF1ZXN0SWRlbnRpZmllcigpICE9IHJlcXVlc3RJZGVudGlmaWVyKQorICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgIHBlcmZvcm1DdXJyZW50T3Blbk9wZXJhdGlvbkFmdGVyU3BhY2VDaGVj
ayhncmFudGVkKTsKKyAgICB9KTsKK30KKwordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9y
bUN1cnJlbnRPcGVuT3BlcmF0aW9uQWZ0ZXJTcGFjZUNoZWNrKGJvb2wgaXNHcmFudGVkKQorewor
ICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybUN1cnJlbnRPcGVu
T3BlcmF0aW9uQWZ0ZXJTcGFjZVJlcXVlc3QgKCVwKSIsIHRoaXMpOworCiAgICAgSURCRXJyb3Ig
YmFja2luZ1N0b3JlT3BlbkVycm9yOwogICAgIGlmICghbV9iYWNraW5nU3RvcmUpIHsKLSAgICAg
ICAgLy8gUXVvdGEgY2hlY2suCi0gICAgICAgIGF1dG8gZGVjaXNpb24gPSBtX3NlcnZlci5yZXF1
ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCBkZWZhdWx0V3JpdGVPcGVyYXRpb25Db3N0
KTsKLSAgICAgICAgaWYgKGRlY2lzaW9uID09IFN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9u
OjpEZW55KQorICAgICAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAgICAgICAgIGJhY2tpbmdTdG9y
ZU9wZW5FcnJvciA9IElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKyAgICAgICAgZWxz
ZSBpZiAoIWlzR3JhbnRlZCkKICAgICAgICAgICAgIGJhY2tpbmdTdG9yZU9wZW5FcnJvciA9IElE
QkVycm9yIHsgUXVvdGFFeGNlZWRlZEVycm9yLCBxdW90YUVycm9yTWVzc2FnZU5hbWUoIk9wZW5C
YWNraW5nU3RvcmUiKSB9OwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIG1fYmFja2luZ1N0
b3JlID0gbV9zZXJ2ZXIuY3JlYXRlQmFja2luZ1N0b3JlKG1faWRlbnRpZmllcik7CisgICAgICAg
ICAgICBtX2JhY2tpbmdTdG9yZSA9IG1fbWFuYWdlci0+Y3JlYXRlQmFja2luZ1N0b3JlKG1faWRl
bnRpZmllcik7CiAgICAgICAgICAgICBJREJEYXRhYmFzZUluZm8gZGF0YWJhc2VJbmZvOwogICAg
ICAgICAgICAgYmFja2luZ1N0b3JlT3BlbkVycm9yID0gbV9iYWNraW5nU3RvcmUtPmdldE9yRXN0
YWJsaXNoRGF0YWJhc2VJbmZvKGRhdGFiYXNlSW5mbyk7Ci0gICAgICAgICAgICBpZiAoYmFja2lu
Z1N0b3JlT3BlbkVycm9yLmlzTnVsbCgpKQorICAgICAgICAgICAgaWYgKCFiYWNraW5nU3RvcmVP
cGVuRXJyb3IpCiAgICAgICAgICAgICAgICAgbV9kYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElE
QkRhdGFiYXNlSW5mbz4oZGF0YWJhc2VJbmZvKTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAg
ICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGdldCBkYXRhYmFzZSBpbmZvICclcyciLCBi
YWNraW5nU3RvcmVPcGVuRXJyb3IubWVzc2FnZSgpLnV0ZjgoKS5kYXRhKCkpOwpAQCAtMjA0LDcg
KzIzOCw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1DdXJyZW50T3Blbk9wZXJh
dGlvbigpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoIWJhY2tpbmdTdG9yZU9wZW5FcnJv
ci5pc051bGwoKSkgeworICAgIGlmIChiYWNraW5nU3RvcmVPcGVuRXJyb3IpIHsKICAgICAgICAg
YXV0byByZXN1bHQgPSBJREJSZXN1bHREYXRhOjplcnJvcihtX2N1cnJlbnRPcGVuREJSZXF1ZXN0
LT5yZXF1ZXN0RGF0YSgpLnJlcXVlc3RJZGVudGlmaWVyKCksIGJhY2tpbmdTdG9yZU9wZW5FcnJv
cik7CiAgICAgICAgIG1fY3VycmVudE9wZW5EQlJlcXVlc3QtPmNvbm5lY3Rpb24oKS5kaWRPcGVu
RGF0YWJhc2UocmVzdWx0KTsKICAgICAgICAgbV9jdXJyZW50T3BlbkRCUmVxdWVzdCA9IG51bGxw
dHI7CkBAIC0yOTQsNyArMzI4LDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlQmFj
a2luZ1N0b3JlKCkKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5kZXhl
ZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZUJhY2tpbmdTdG9yZSIpOwogICAgIAotICAg
IGF1dG8gYmFja2luZ1N0b3JlID0gbV9iYWNraW5nU3RvcmUgPyBzdGQ6OmV4Y2hhbmdlKG1fYmFj
a2luZ1N0b3JlLCBudWxscHRyKSA6IG1fc2VydmVyLmNyZWF0ZUJhY2tpbmdTdG9yZShtX2lkZW50
aWZpZXIpOworICAgIGF1dG8gYmFja2luZ1N0b3JlID0gbV9iYWNraW5nU3RvcmUgPyBzdGQ6OmV4
Y2hhbmdlKG1fYmFja2luZ1N0b3JlLCBudWxscHRyKSA6IG1fbWFuYWdlci0+Y3JlYXRlQmFja2lu
Z1N0b3JlKG1faWRlbnRpZmllcik7CiAgICAgdWludDY0X3QgZGVsZXRlZFZlcnNpb24gPSBiYWNr
aW5nU3RvcmUtPmRhdGFiYXNlVmVyc2lvbigpOwogICAgIGJhY2tpbmdTdG9yZS0+ZGVsZXRlQmFj
a2luZ1N0b3JlKCk7CiAgICAgZGlkRGVsZXRlQmFja2luZ1N0b3JlKGRlbGV0ZWRWZXJzaW9uKTsK
QEAgLTU0MiwyMCArNTc2LDMyIEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmFkZE9wZW5EYXRh
YmFzZUNvbm5lY3Rpb24oUmVmPFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvCiAgICAgbV9vcGVu
RGF0YWJhc2VDb25uZWN0aW9ucy5hZGQoYWRvcHRSZWYoY29ubmVjdGlvbi5sZWFrUmVmKCkpKTsK
IH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUoVW5pcXVlSURC
RGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIGNvbnN0IElEQk9iamVjdFN0b3JlSW5m
byYgaW5mbywgRXJyb3JDYWxsYmFjayBjYWxsYmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6
OmNyZWF0ZU9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0
aW9uLCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mIGluZm8sIEVycm9yQ2FsbGJhY2sgY2FsbGJh
Y2ssIFNwYWNlQ2hlY2tSZXN1bHQgc3BhY2VDaGVja1Jlc3VsdCkKIHsKICAgICBBU1NFUlQoIWlz
TWFpblRocmVhZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6OmNy
ZWF0ZU9iamVjdFN0b3JlIik7CiAKLSAgICBBU1NFUlQobV9iYWNraW5nU3RvcmUpOworICAgIGlm
IChzcGFjZUNoZWNrUmVzdWx0ID09IFNwYWNlQ2hlY2tSZXN1bHQ6OlVua25vd24pIHsKKyAgICAg
ICAgaWYgKCFtX21hbmFnZXIpCisgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3Ig
eyBJbnZhbGlkU3RhdGVFcnJvciB9KTsKIAotICAgIC8vIFF1b3RhIGNoZWNrLgotICAgIGF1dG8g
dGFza1NpemUgPSBkZWZhdWx0V3JpdGVPcGVyYXRpb25Db3N0ICsgZXN0aW1hdGVTaXplKGluZm8p
OwotICAgIGlmIChtX3NlcnZlci5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCB0
YXNrU2l6ZSkgPT0gU3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb246OkRlbnkpIHsKKyAgICAg
ICAgYXV0byB0YXNrU2l6ZSA9IGRlZmF1bHRXcml0ZU9wZXJhdGlvbkNvc3QgKyBlc3RpbWF0ZVNp
emUoaW5mbyk7CisgICAgICAgIG1fbWFuYWdlci0+cmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5v
cmlnaW4oKSwgdGFza1NpemUsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCB3
ZWFrVHJhbnNhY3Rpb24gPSBXZWFrUHRyIHsgdHJhbnNhY3Rpb24gfSwgaW5mbywgY2FsbGJhY2sg
PSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAgICAg
IGlmICghd2Vha1RoaXMgfHwgIXdlYWtUcmFuc2FjdGlvbikKKyAgICAgICAgICAgICAgICByZXR1
cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkRhdGFiYXNlIG9yIHRy
YW5zYWN0aW9uIGlzIGNsb3NlZCIgfSk7CisgICAgICAgICAgICBjcmVhdGVPYmplY3RTdG9yZSgq
d2Vha1RyYW5zYWN0aW9uLCBpbmZvLCBXVEZNb3ZlKGNhbGxiYWNrKSwgZ3JhbnRlZCA/IFNwYWNl
Q2hlY2tSZXN1bHQ6OlBhc3MgOiBTcGFjZUNoZWNrUmVzdWx0OjpGYWlsKTsKKyAgICAgICAgfSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoc3BhY2VDaGVja1Jlc3VsdCAhPSBT
cGFjZUNoZWNrUmVzdWx0OjpQYXNzKSB7CiAgICAgICAgIGNhbGxiYWNrKElEQkVycm9yIHsgUXVv
dGFFeGNlZWRlZEVycm9yLCBxdW90YUVycm9yTWVzc2FnZU5hbWUoIkNyZWF0ZU9iamVjdFN0b3Jl
IikgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBpZiAoIW1fYmFja2luZ1N0b3Jl
KQorICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwg
IkJhY2tpbmcgc3RvcmUgaGFzIGNsb3NlZCIgfSk7CisKICAgICBhdXRvIGVycm9yID0gbV9iYWNr
aW5nU3RvcmUtPmNyZWF0ZU9iamVjdFN0b3JlKHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVy
KCksIGluZm8pOwogICAgIGlmIChlcnJvci5pc051bGwoKSkKICAgICAgICAgbV9kYXRhYmFzZUlu
Zm8tPmFkZEV4aXN0aW5nT2JqZWN0U3RvcmUoaW5mbyk7CkBAIC01NjMsMTggKzYwOSwzNCBAQCB2
b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZShVbmlxdWVJREJEYXRhYmFz
ZVRyYW5zYWN0aW9uJiB0cmFuc2FjdAogICAgIGNhbGxiYWNrKGVycm9yKTsKIH0KIAotdm9pZCBV
bmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlT2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFu
c2FjdGlvbiYgdHJhbnNhY3Rpb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lLCBFcnJv
ckNhbGxiYWNrIGNhbGxiYWNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlT2JqZWN0
U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIGNvbnN0IFN0
cmluZyYgb2JqZWN0U3RvcmVOYW1lLCBFcnJvckNhbGxiYWNrIGNhbGxiYWNrLCBTcGFjZUNoZWNr
UmVzdWx0IHNwYWNlQ2hlY2tSZXN1bHQpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7
CiAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVPYmplY3RTdG9y
ZSIpOwogCisgICAgaWYgKHNwYWNlQ2hlY2tSZXN1bHQgPT0gU3BhY2VDaGVja1Jlc3VsdDo6VW5r
bm93bikgeworICAgICAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAgICAgICAgIHJldHVybiBjYWxs
YmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yIH0pOworCisgICAgICAgIG1fbWFuYWdl
ci0+cmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwgMCwgW3RoaXMsIHdlYWtUaGlz
ID0gV2Vha1B0ciB7ICp0aGlzIH0sIHdlYWtUcmFuc2FjdGlvbiA9IFdlYWtQdHIgeyB0cmFuc2Fj
dGlvbiB9LCBvYmplY3RTdG9yZU5hbWUsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJv
b2wgZ3JhbnRlZCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICF3ZWFr
VHJhbnNhY3Rpb24pCisgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsg
SW52YWxpZFN0YXRlRXJyb3IsICJEYXRhYmFzZSBvciB0cmFuc2FjdGlvbiBpcyBjbG9zZWQiIH0p
OworCisgICAgICAgICAgICBkZWxldGVPYmplY3RTdG9yZSgqd2Vha1RyYW5zYWN0aW9uLCBvYmpl
Y3RTdG9yZU5hbWUsIFdURk1vdmUoY2FsbGJhY2spLCBncmFudGVkID8gU3BhY2VDaGVja1Jlc3Vs
dDo6UGFzcyA6IFNwYWNlQ2hlY2tSZXN1bHQ6OkZhaWwpOworICAgICAgICB9KTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChzcGFjZUNoZWNrUmVzdWx0ID09IFNwYWNlQ2hl
Y2tSZXN1bHQ6OlBhc3MpOwogICAgIGF1dG8qIGluZm8gPSBtX2RhdGFiYXNlSW5mby0+aW5mb0Zv
ckV4aXN0aW5nT2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lKTsKICAgICBpZiAoIWluZm8pIHsK
ICAgICAgICAgY2FsbGJhY2soSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIGRl
bGV0ZSBub24tZXhpc3RhbnQgb2JqZWN0IHN0b3JlIl9zIH0pOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgQVNTRVJUKG1fYmFja2luZ1N0b3JlKTsKKyAgICBpZiAoIW1fYmFja2luZ1N0
b3JlKQorICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJv
ciwgIkJhY2tpbmcgc3RvcmUgaXMgY2xvc2VkIiB9KTsKKwogICAgIGF1dG8gZXJyb3IgPSBtX2Jh
Y2tpbmdTdG9yZS0+ZGVsZXRlT2JqZWN0U3RvcmUodHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZp
ZXIoKSwgaW5mby0+aWRlbnRpZmllcigpKTsKICAgICBpZiAoZXJyb3IuaXNOdWxsKCkpCiAgICAg
ICAgIG1fZGF0YWJhc2VJbmZvLT5kZWxldGVPYmplY3RTdG9yZShpbmZvLT5pZGVudGlmaWVyKCkp
OwpAQCAtNTgyLDE0ICs2NDQsMjYgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlT2Jq
ZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3QKICAgICBjYWxs
YmFjayhlcnJvcik7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnJlbmFtZU9iamVjdFN0
b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCB1aW50NjRfdCBv
YmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSwgRXJyb3JDYWxsYmFj
ayBjYWxsYmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnJlbmFtZU9iamVjdFN0b3JlKFVu
aXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCB1aW50NjRfdCBvYmplY3RT
dG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSwgRXJyb3JDYWxsYmFjayBjYWxs
YmFjaywgU3BhY2VDaGVja1Jlc3VsdCBzcGFjZUNoZWNrUmVzdWx0KQogewogICAgIEFTU0VSVCgh
aXNNYWluVGhyZWFkKCkpOwogICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6
cmVuYW1lT2JqZWN0U3RvcmUiKTsKIAotICAgIC8vIFF1b3RhIGNoZWNrLgotICAgIGF1dG8gdGFz
a1NpemUgPSBkZWZhdWx0V3JpdGVPcGVyYXRpb25Db3N0ICsgbmV3TmFtZS5zaXplSW5CeXRlcygp
OwotICAgIGlmIChtX3NlcnZlci5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCB0
YXNrU2l6ZSkgPT0gU3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb246OkRlbnkpIHsKKyAgICBp
ZiAoc3BhY2VDaGVja1Jlc3VsdCA9PSBTcGFjZUNoZWNrUmVzdWx0OjpVbmtub3duKSB7CisgICAg
ICAgIGlmICghbV9tYW5hZ2VyKQorICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9y
IHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7CisKKyAgICAgICAgYXV0byB0YXNrU2l6ZSA9IGRlZmF1
bHRXcml0ZU9wZXJhdGlvbkNvc3QgKyBuZXdOYW1lLnNpemVJbkJ5dGVzKCk7CisgICAgICAgIG1f
bWFuYWdlci0+cmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwgdGFza1NpemUsIFt0
aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCB3ZWFrVHJhbnNhY3Rpb24gPSBXZWFr
UHRyIHsgdHJhbnNhY3Rpb24gfSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBuZXdOYW1lLCBjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIGdyYW50ZWQpIG11dGFibGUgeworICAgICAg
ICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhd2Vha1RyYW5zYWN0aW9uKQorICAgICAgICAgICAgICAg
IHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiRGF0YWJhc2Ug
b3IgdHJhbnNhY3Rpb24gaXMgY2xvc2VkIiB9KTsKKworICAgICAgICAgICAgcmVuYW1lT2JqZWN0
U3RvcmUoKndlYWtUcmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBuZXdOYW1lLCBX
VEZNb3ZlKGNhbGxiYWNrKSwgZ3JhbnRlZCA/IFNwYWNlQ2hlY2tSZXN1bHQ6OlBhc3MgOiBTcGFj
ZUNoZWNrUmVzdWx0OjpGYWlsKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBpZiAoc3BhY2VDaGVja1Jlc3VsdCAhPSBTcGFjZUNoZWNrUmVzdWx0OjpQYXNzKSB7
CiAgICAgICAgIGNhbGxiYWNrKElEQkVycm9yKFF1b3RhRXhjZWVkZWRFcnJvciwgcXVvdGFFcnJv
ck1lc3NhZ2VOYW1lKCJSZW5hbWVPYmplY3RTdG9yZSIpKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CkBAIC02MDAsNyArNjc0LDkgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cmVuYW1lT2Jq
ZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3QKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CisgICAgaWYgKCFt
X2JhY2tpbmdTdG9yZSkKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxp
ZFN0YXRlRXJyb3IsICJCYWNraW5nIHN0b3JlIGlzIGNsb3NlZCIgfSk7CisKICAgICBhdXRvIGVy
cm9yID0gbV9iYWNraW5nU3RvcmUtPnJlbmFtZU9iamVjdFN0b3JlKHRyYW5zYWN0aW9uLmluZm8o
KS5pZGVudGlmaWVyKCksIG9iamVjdFN0b3JlSWRlbnRpZmllciwgbmV3TmFtZSk7CiAgICAgaWYg
KGVycm9yLmlzTnVsbCgpKQogICAgICAgICBtX2RhdGFiYXNlSW5mby0+cmVuYW1lT2JqZWN0U3Rv
cmUob2JqZWN0U3RvcmVJZGVudGlmaWVyLCBuZXdOYW1lKTsKQEAgLTYwOCwzMCArNjg0LDU5IEBA
IHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnJlbmFtZU9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFi
YXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0CiAgICAgY2FsbGJhY2soZXJyb3IpOwogfQogCi12b2lk
IFVuaXF1ZUlEQkRhdGFiYXNlOjpjbGVhck9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJh
bnNhY3Rpb24mIHRyYW5zYWN0aW9uLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIEVy
cm9yQ2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjbGVhck9iamVj
dFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCB1aW50NjRf
dCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIEVycm9yQ2FsbGJhY2sgY2FsbGJhY2ssIFNwYWNlQ2hl
Y2tSZXN1bHQgc3BhY2VDaGVja1Jlc3VsdCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgp
KTsKICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6OmNsZWFyT2JqZWN0U3Rv
cmUiKTsKIAotICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7Ci0gICAgYXV0byBlcnJvciA9IG1f
YmFja2luZ1N0b3JlLT5jbGVhck9iamVjdFN0b3JlKHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlm
aWVyKCksIG9iamVjdFN0b3JlSWRlbnRpZmllcik7CisgICAgaWYgKHNwYWNlQ2hlY2tSZXN1bHQg
PT0gU3BhY2VDaGVja1Jlc3VsdDo6VW5rbm93bikgeworICAgICAgICBpZiAoIW1fbWFuYWdlcikK
KyAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9y
IH0pOworCisgICAgICAgIG1fbWFuYWdlci0+cmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmln
aW4oKSwgMCwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHdlYWtUcmFuc2Fj
dGlvbiA9IFdlYWtQdHIgeyB0cmFuc2FjdGlvbiB9LCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgZ3JhbnRlZCkgbXV0YWJsZSB7CisgICAg
ICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICF3ZWFrVHJhbnNhY3Rpb24pCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJEYXRhYmFz
ZSBvciB0cmFuc2FjdGlvbiBpcyBjbG9zZWQiIH0pOworCisgICAgICAgICAgICBjbGVhck9iamVj
dFN0b3JlKCp3ZWFrVHJhbnNhY3Rpb24sIG9iamVjdFN0b3JlSWRlbnRpZmllciwgV1RGTW92ZShj
YWxsYmFjayksIGdyYW50ZWQgPyBTcGFjZUNoZWNrUmVzdWx0OjpQYXNzIDogU3BhY2VDaGVja1Jl
c3VsdDo6RmFpbCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
QVNTRVJUKHNwYWNlQ2hlY2tSZXN1bHQgPT0gU3BhY2VDaGVja1Jlc3VsdDo6UGFzcyk7CisgICAg
aWYgKCFtX2JhY2tpbmdTdG9yZSkKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsg
SW52YWxpZFN0YXRlRXJyb3IsICJCYWNraW5nIHN0b3JlIGlzIGNsb3NlZCIgfSk7CiAKKyAgICBh
dXRvIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPmNsZWFyT2JqZWN0U3RvcmUodHJhbnNhY3Rpb24u
aW5mbygpLmlkZW50aWZpZXIoKSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKICAgICBjYWxsYmFj
ayhlcnJvcik7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZUluZGV4KFVuaXF1
ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBjb25zdCBJREJJbmRleEluZm8m
IGluZm8sIEVycm9yQ2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpj
cmVhdGVJbmRleChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgY29u
c3QgSURCSW5kZXhJbmZvJiBpbmZvLCBFcnJvckNhbGxiYWNrIGNhbGxiYWNrLCBTcGFjZUNoZWNr
UmVzdWx0IHNwYWNlQ2hlY2tSZXN1bHQpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7
CiAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVJbmRleCIpOwog
Ci0gICAgLy8gUXVvdGEgY2hlY2suCi0gICAgYXV0byB0YXNrU2l6ZSA9IGRlZmF1bHRXcml0ZU9w
ZXJhdGlvbkNvc3QgKyBlc3RpbWF0ZVNpemUoaW5mbyk7Ci0gICAgaWYgKG1fc2VydmVyLnJlcXVl
c3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIHRhc2tTaXplKSA9PSBTdG9yYWdlUXVvdGFN
YW5hZ2VyOjpEZWNpc2lvbjo6RGVueSkgeworICAgIGlmIChzcGFjZUNoZWNrUmVzdWx0ID09IFNw
YWNlQ2hlY2tSZXN1bHQ6OlVua25vd24pIHsKKyAgICAgICAgaWYgKCFtX21hbmFnZXIpCisgICAg
ICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciB9KTsK
KworICAgICAgICBhdXRvIHRhc2tTaXplID0gZGVmYXVsdFdyaXRlT3BlcmF0aW9uQ29zdCArIGVz
dGltYXRlU2l6ZShpbmZvKTsKKyAgICAgICAgbV9tYW5hZ2VyLT5yZXF1ZXN0U3BhY2UobV9pZGVu
dGlmaWVyLm9yaWdpbigpLCB0YXNrU2l6ZSwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0
aGlzIH0sIHdlYWtUcmFuc2FjdGlvbiA9IFdlYWtQdHIgeyB0cmFuc2FjdGlvbiB9LCBpbmZvLCBj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIGdyYW50ZWQpIG11dGFibGUgeworICAg
ICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhd2Vha1RyYW5zYWN0aW9uKQorICAgICAgICAgICAg
ICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiRGF0YWJh
c2Ugb3IgdHJhbnNhY3Rpb24gaXMgY2xvc2VkIiB9KTsKKworICAgICAgICAgICAgY3JlYXRlSW5k
ZXgoKndlYWtUcmFuc2FjdGlvbiwgaW5mbywgV1RGTW92ZShjYWxsYmFjayksIGdyYW50ZWQgPyBT
cGFjZUNoZWNrUmVzdWx0OjpQYXNzIDogU3BhY2VDaGVja1Jlc3VsdDo6RmFpbCk7CisgICAgICAg
IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKHNwYWNlQ2hlY2tSZXN1bHQg
IT0gU3BhY2VDaGVja1Jlc3VsdDo6UGFzcykgewogICAgICAgICBjYWxsYmFjayhJREJFcnJvciB7
IFF1b3RhRXhjZWVkZWRFcnJvciwgcXVvdGFFcnJvck1lc3NhZ2VOYW1lKCJDcmVhdGVJbmRleCIp
IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgQVNTRVJUKG1fYmFja2luZ1N0b3Jl
KTsKKyAgICBpZiAoIW1fYmFja2luZ1N0b3JlKQorICAgICAgICByZXR1cm4gY2FsbGJhY2soSURC
RXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkJhY2tpbmcgc3RvcmUgaXMgY2xvc2VkIiB9KTsK
KwogICAgIGF1dG8gZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+Y3JlYXRlSW5kZXgodHJhbnNhY3Rp
b24uaW5mbygpLmlkZW50aWZpZXIoKSwgaW5mbyk7CiAgICAgaWYgKGVycm9yLmlzTnVsbCgpKSB7
CiAgICAgICAgIEFTU0VSVChtX2RhdGFiYXNlSW5mbyk7CkBAIC02NDQsMTEgKzc0OSwyOCBAQCB2
b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVJbmRleChVbmlxdWVJREJEYXRhYmFzZVRyYW5z
YWN0aW9uJiB0cmFuc2FjdGlvbiwgYwogICAgIGNhbGxiYWNrKGVycm9yKTsKIH0KIAotdm9pZCBV
bmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlSW5kZXgoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlv
biYgdHJhbnNhY3Rpb24sIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBpbmRleE5hbWUsIEVycm9yQ2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRh
dGFiYXNlOjpkZWxldGVJbmRleChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2Fj
dGlvbiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGluZGV4
TmFtZSwgRXJyb3JDYWxsYmFjayBjYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCBzcGFjZUNoZWNr
UmVzdWx0KQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIExPRyhJbmRleGVk
REIsICJVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlSW5kZXgiKTsKIAorICAgIGlmIChzcGFjZUNo
ZWNrUmVzdWx0ID09IFNwYWNlQ2hlY2tSZXN1bHQ6OlVua25vd24pIHsKKyAgICAgICAgaWYgKCFt
X21hbmFnZXIpCisgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlk
U3RhdGVFcnJvciB9KTsKKworICAgICAgICBtX21hbmFnZXItPnJlcXVlc3RTcGFjZShtX2lkZW50
aWZpZXIub3JpZ2luKCksIDAsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCB3
ZWFrVHJhbnNhY3Rpb24gPSBXZWFrUHRyIHsgdHJhbnNhY3Rpb24gfSwgb2JqZWN0U3RvcmVJZGVu
dGlmaWVyLCBpbmRleE5hbWUsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgZ3Jh
bnRlZCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICF3ZWFrVHJhbnNh
Y3Rpb24pCisgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxp
ZFN0YXRlRXJyb3IsICJEYXRhYmFzZSBvciB0cmFuc2FjdGlvbiBpcyBjbG9zZWQiIH0pOworCisg
ICAgICAgICAgICBkZWxldGVJbmRleCgqd2Vha1RyYW5zYWN0aW9uLCBvYmplY3RTdG9yZUlkZW50
aWZpZXIsIGluZGV4TmFtZSwgV1RGTW92ZShjYWxsYmFjayksIGdyYW50ZWQgPyBTcGFjZUNoZWNr
UmVzdWx0OjpQYXNzIDogU3BhY2VDaGVja1Jlc3VsdDo6RmFpbCk7CisgICAgICAgIH0pOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKHNwYWNlQ2hlY2tSZXN1bHQgPT0gU3Bh
Y2VDaGVja1Jlc3VsdDo6UGFzcyk7CisgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkKKyAgICAgICAg
cmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJCYWNraW5nIHN0
b3JlIGlzIGNsb3NlZCIgfSk7CisKICAgICBhdXRvKiBvYmplY3RTdG9yZUluZm8gPSBtX2RhdGFi
YXNlSW5mby0+aW5mb0ZvckV4aXN0aW5nT2JqZWN0U3RvcmUob2JqZWN0U3RvcmVJZGVudGlmaWVy
KTsKICAgICBpZiAoIW9iamVjdFN0b3JlSW5mbykgewogICAgICAgICBjYWxsYmFjayhJREJFcnJv
ciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gZGVsZXRlIGluZGV4IGZyb20gbm9uLWV4aXN0
YW50IG9iamVjdCBzdG9yZSJfcyB9KTsKQEAgLTY2MCw5ICs3ODIsOCBAQCB2b2lkIFVuaXF1ZUlE
QkRhdGFiYXNlOjpkZWxldGVJbmRleChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFu
c2FjdGlvbiwgdQogICAgICAgICBjYWxsYmFjayhJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0
dGVtcHQgdG8gZGVsZXRlIG5vbi1leGlzdGFudCBpbmRleCJfcyB9KTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KLSAgICBhdXRvIGluZGV4SWRlbnRpZmllciA9IGluZGV4SW5mby0+aWRlbnRpZmll
cigpOwogCi0gICAgQVNTRVJUKG1fYmFja2luZ1N0b3JlKTsKKyAgICBhdXRvIGluZGV4SWRlbnRp
ZmllciA9IGluZGV4SW5mby0+aWRlbnRpZmllcigpOwogICAgIGF1dG8gZXJyb3IgPSBtX2JhY2tp
bmdTdG9yZS0+ZGVsZXRlSW5kZXgodHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSwgb2Jq
ZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleElkZW50aWZpZXIpOwogICAgIGlmIChlcnJvci5pc051
bGwoKSkKICAgICAgICAgb2JqZWN0U3RvcmVJbmZvLT5kZWxldGVJbmRleChpbmRleElkZW50aWZp
ZXIpOwpAQCAtNjcwLDE4ICs3OTEsMzMgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRl
SW5kZXgoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIHUKICAgICBj
YWxsYmFjayhlcnJvcik7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnJlbmFtZUluZGV4
KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCB1aW50NjRfdCBvYmpl
Y3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiBuZXdOYW1lLCBFcnJvckNhbGxiYWNrIGNhbGxiYWNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFz
ZTo6cmVuYW1lSW5kZXgoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24s
IHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgdWludDY0X3QgaW5kZXhJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIG5ld05hbWUsIEVycm9yQ2FsbGJhY2sgY2FsbGJhY2ssIFNwYWNlQ2hl
Y2tSZXN1bHQgc3BhY2VDaGVja1Jlc3VsdCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgp
KTsKICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6OnJlbmFtZUluZGV4Iik7
CiAKLSAgICAvLyBRdW90YSBjaGVjay4KLSAgICBhdXRvIHRhc2tTaXplID0gZGVmYXVsdFdyaXRl
T3BlcmF0aW9uQ29zdCArIG5ld05hbWUuc2l6ZUluQnl0ZXMoKTsKLSAgICBpZiAobV9zZXJ2ZXIu
cmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwgdGFza1NpemUpID09IFN0b3JhZ2VR
dW90YU1hbmFnZXI6OkRlY2lzaW9uOjpEZW55KSB7CisgICAgaWYgKHNwYWNlQ2hlY2tSZXN1bHQg
PT0gU3BhY2VDaGVja1Jlc3VsdDo6VW5rbm93bikgeworICAgICAgICBpZiAoIW1fbWFuYWdlcikK
KyAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9y
IH0pOworCisgICAgICAgIGF1dG8gdGFza1NpemUgPSBkZWZhdWx0V3JpdGVPcGVyYXRpb25Db3N0
ICsgbmV3TmFtZS5zaXplSW5CeXRlcygpOworICAgICAgICBtX21hbmFnZXItPnJlcXVlc3RTcGFj
ZShtX2lkZW50aWZpZXIub3JpZ2luKCksIHRhc2tTaXplLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFr
UHRyIHsgKnRoaXMgfSwgd2Vha1RyYW5zYWN0aW9uID0gV2Vha1B0ciB7IHRyYW5zYWN0aW9uIH0s
IG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhJZGVudGlmaWVyLCBuZXdOYW1lLCBjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIGdyYW50ZWQpIG11dGFibGUgeworICAgICAgICAg
ICAgaWYgKCF3ZWFrVGhpcyB8fCAhd2Vha1RyYW5zYWN0aW9uKQorICAgICAgICAgICAgICAgIHJl
dHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiRGF0YWJhc2Ugb3Ig
dHJhbnNhY3Rpb24gaXMgY2xvc2VkIiB9KTsKKworICAgICAgICAgICAgcmVuYW1lSW5kZXgoKndl
YWtUcmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleElkZW50aWZpZXIsIG5l
d05hbWUsIFdURk1vdmUoY2FsbGJhY2spLCBncmFudGVkID8gU3BhY2VDaGVja1Jlc3VsdDo6UGFz
cyA6IFNwYWNlQ2hlY2tSZXN1bHQ6OkZhaWwpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGlmIChzcGFjZUNoZWNrUmVzdWx0ICE9IFNwYWNlQ2hlY2tSZXN1bHQ6
OlBhc3MpIHsKICAgICAgICAgY2FsbGJhY2soSURCRXJyb3IgeyBRdW90YUV4Y2VlZGVkRXJyb3Is
IHF1b3RhRXJyb3JNZXNzYWdlTmFtZSgiUmVuYW1lSW5kZXgiKSB9KTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAorICAgIGlmICghbV9iYWNraW5nU3RvcmUpCisgICAgICAgIHJldHVybiBjYWxs
YmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiQmFja2luZyBzdG9yZSBpcyBjbG9z
ZWQiIH0pOworCiAgICAgYXV0byogb2JqZWN0U3RvcmVJbmZvID0gbV9kYXRhYmFzZUluZm8tPmlu
Zm9Gb3JFeGlzdGluZ09iamVjdFN0b3JlKG9iamVjdFN0b3JlSWRlbnRpZmllcik7CiAgICAgaWYg
KCFvYmplY3RTdG9yZUluZm8pIHsKICAgICAgICAgY2FsbGJhY2soSURCRXJyb3IgeyBVbmtub3du
RXJyb3IsICJBdHRlbXB0IHRvIHJlbmFtZSBpbmRleCBpbiBub24tZXhpc3RhbnQgb2JqZWN0IHN0
b3JlIl9zIH0pOwpAQCAtNjk0LDcgKzgzMCw2IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnJl
bmFtZUluZGV4KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCB1CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBBU1NFUlQobV9iYWNraW5nU3RvcmUpOwogICAg
IGF1dG8gZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+cmVuYW1lSW5kZXgodHJhbnNhY3Rpb24uaW5m
bygpLmlkZW50aWZpZXIoKSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleElkZW50aWZpZXIs
IG5ld05hbWUpOwogICAgIGlmIChlcnJvci5pc051bGwoKSkKICAgICAgICAgaW5kZXhJbmZvLT5y
ZW5hbWUobmV3TmFtZSk7CkBAIC03MDksMTcgKzg0NCwxOSBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFi
YXNlOjpwdXRPckFkZChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElE
QktleQogCiAgICAgQVNTRVJUKG1fZGF0YWJhc2VJbmZvKTsKIAotICAgIElEQktleURhdGEgdXNl
ZEtleTsKLSAgICBJREJFcnJvciBlcnJvcjsKKyAgICBpZiAoIW1fYmFja2luZ1N0b3JlKQorICAg
ICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkJhY2tp
bmcgc3RvcmUgaXMgY2xvc2VkIiB9LCBrZXlEYXRhKTsKIAotICAgIEFTU0VSVChtX2JhY2tpbmdT
dG9yZSk7CiAgICAgYXV0byBvYmplY3RTdG9yZUlkZW50aWZpZXIgPSByZXF1ZXN0RGF0YS5vYmpl
Y3RTdG9yZUlkZW50aWZpZXIoKTsKICAgICBhdXRvKiBvYmplY3RTdG9yZUluZm8gPSBtX2JhY2tp
bmdTdG9yZS0+aW5mb0Zvck9iamVjdFN0b3JlKG9iamVjdFN0b3JlSWRlbnRpZmllcik7Ci0gICAg
aWYgKCFvYmplY3RTdG9yZUluZm8pIHsKLSAgICAgICAgY2FsbGJhY2soSURCRXJyb3IgeyBJbnZh
bGlkU3RhdGVFcnJvciwgIk9iamVjdCBzdG9yZSBjYW5ub3QgYmUgZm91bmQgaW4gdGhlIGJhY2tp
bmcgc3RvcmUiX3MgfSwgdXNlZEtleSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYg
KCFvYmplY3RTdG9yZUluZm8pCisgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IElu
dmFsaWRTdGF0ZUVycm9yLCAiT2JqZWN0IHN0b3JlIGNhbm5vdCBiZSBmb3VuZCBpbiB0aGUgYmFj
a2luZyBzdG9yZSJfcyB9LCBrZXlEYXRhKTsKKworICAgIGlmICghbV9tYW5hZ2VyKQorICAgICAg
ICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciB9LCBrZXlEYXRh
KTsKIAorICAgIElEQktleURhdGEgdXNlZEtleTsKKyAgICBJREJFcnJvciBlcnJvcjsKICAgICBi
b29sIHVzZWRLZXlJc0dlbmVyYXRlZCA9IGZhbHNlOwogICAgIHVpbnQ2NF90IGtleU51bWJlcjsK
ICAgICBhdXRvIHRyYW5zYWN0aW9uSWRlbnRpZmllciA9IHJlcXVlc3REYXRhLnRyYW5zYWN0aW9u
SWRlbnRpZmllcigpOwpAQCAtNzMwLDc2ICs4NjcsMTA1IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJh
c2U6OnB1dE9yQWRkKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURC
S2V5CiAKICAgICBpZiAob2JqZWN0U3RvcmVJbmZvLT5hdXRvSW5jcmVtZW50KCkgJiYgIWtleURh
dGEuaXNWYWxpZCgpKSB7CiAgICAgICAgIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPmdlbmVyYXRl
S2V5TnVtYmVyKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBr
ZXlOdW1iZXIpOwotICAgICAgICBpZiAoIWVycm9yLmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICBj
YWxsYmFjayhlcnJvciwgdXNlZEtleSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
KyAgICAgICAgaWYgKCFlcnJvci5pc051bGwoKSkKKyAgICAgICAgICAgIHJldHVybiBjYWxsYmFj
ayhlcnJvciwgdXNlZEtleSk7CisKICAgICAgICAgdXNlZEtleS5zZXROdW1iZXJWYWx1ZShrZXlO
dW1iZXIpOwogICAgICAgICB1c2VkS2V5SXNHZW5lcmF0ZWQgPSB0cnVlOwogICAgIH0gZWxzZQog
ICAgICAgICB1c2VkS2V5ID0ga2V5RGF0YTsKIAotICAgIC8vIEdlbmVyYXRlIGluZGV4IGtleXMg
dXAgZnJvbnQgZm9yIG1vcmUgYWNjdXJhdGUgcXVvdGEgY2hlY2suCi0gICAgSW5kZXhJRFRvSW5k
ZXhLZXlNYXAgaW5kZXhLZXlzOwotICAgIGNhbGxPbklEQlNlcmlhbGl6YXRpb25UaHJlYWRBbmRX
YWl0KFtvYmplY3RTdG9yZUluZm8gPSBvYmplY3RTdG9yZUluZm8tPmlzb2xhdGVkQ29weSgpLCBr
ZXkgPSB1c2VkS2V5Lmlzb2xhdGVkQ29weSgpLCB2YWx1ZSA9IHZhbHVlLmlzb2xhdGVkQ29weSgp
LCAmaW5kZXhLZXlzXShhdXRvJiBnbG9iYWxPYmplY3QpIHsKLSAgICAgICAgaW5kZXhLZXlzID0g
Z2VuZXJhdGVJbmRleEtleU1hcEZvclZhbHVlKGdsb2JhbE9iamVjdCwgb2JqZWN0U3RvcmVJbmZv
LCBrZXksIHZhbHVlKTsKLSAgICB9KTsKLQogICAgIGlmIChvdmVyd3JpdGVNb2RlID09IEluZGV4
ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlOjpOb092ZXJ3cml0ZSkgewogICAgICAgICBi
b29sIGtleUV4aXN0czsKICAgICAgICAgZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+a2V5RXhpc3Rz
SW5PYmplY3RTdG9yZSh0cmFuc2FjdGlvbklkZW50aWZpZXIsIG9iamVjdFN0b3JlSWRlbnRpZmll
ciwgdXNlZEtleSwga2V5RXhpc3RzKTsKLSAgICAgICAgaWYgKGVycm9yLmlzTnVsbCgpICYmIGtl
eUV4aXN0cykKKyAgICAgICAgaWYgKCFlcnJvciAmJiBrZXlFeGlzdHMpCiAgICAgICAgICAgICBl
cnJvciA9IElEQkVycm9yIHsgQ29uc3RyYWludEVycm9yLCAiS2V5IGFscmVhZHkgZXhpc3RzIGlu
IHRoZSBvYmplY3Qgc3RvcmUiX3MgfTsKIAotICAgICAgICBpZiAoIWVycm9yLmlzTnVsbCgpKSB7
Ci0gICAgICAgICAgICBjYWxsYmFjayhlcnJvciwgdXNlZEtleSk7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKCEhZXJyb3IpCisgICAgICAgICAgICByZXR1cm4g
Y2FsbGJhY2soZXJyb3IsIHVzZWRLZXkpOwogICAgIH0KIAotICAgIC8vIFF1b3RhIGNoZWNrLgor
ICAgIC8vIEdlbmVyYXRlIGluZGV4IGtleXMgdXAgZnJvbnQgZm9yIG1vcmUgYWNjdXJhdGUgcXVv
dGEgY2hlY2suCisgICAgSW5kZXhJRFRvSW5kZXhLZXlNYXAgaW5kZXhLZXlzOworICAgIGNhbGxP
bklEQlNlcmlhbGl6YXRpb25UaHJlYWRBbmRXYWl0KFtvYmplY3RTdG9yZUluZm8gPSBvYmplY3RT
dG9yZUluZm8tPmlzb2xhdGVkQ29weSgpLCBrZXkgPSB1c2VkS2V5Lmlzb2xhdGVkQ29weSgpLCB2
YWx1ZSA9IHZhbHVlLmlzb2xhdGVkQ29weSgpLCAmaW5kZXhLZXlzXShhdXRvJiBnbG9iYWxPYmpl
Y3QpIHsKKyAgICAgICAgaW5kZXhLZXlzID0gZ2VuZXJhdGVJbmRleEtleU1hcEZvclZhbHVlKGds
b2JhbE9iamVjdCwgb2JqZWN0U3RvcmVJbmZvLCBrZXksIHZhbHVlKTsKKyAgICB9KTsKKworICAg
IGdlbmVyYXRlZEtleVJlc2V0dGVyLnJlbGVhc2UoKTsKICAgICBhdXRvIGtleVNpemUgPSBlc3Rp
bWF0ZVNpemUodXNlZEtleSk7CiAgICAgYXV0byB2YWx1ZVNpemUgPSBlc3RpbWF0ZVNpemUodmFs
dWUpOwogICAgIGF1dG8gaW5kZXhTaXplID0gZXN0aW1hdGVTaXplKCpvYmplY3RTdG9yZUluZm8s
IGluZGV4S2V5cywga2V5U2l6ZSk7CiAgICAgYXV0byB0YXNrU2l6ZSA9IGRlZmF1bHRXcml0ZU9w
ZXJhdGlvbkNvc3QgKyBrZXlTaXplICsgdmFsdWVTaXplICsgaW5kZXhTaXplOwogCiAgICAgTE9H
KEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpwdXRPckFkZCBxdW90YSBjaGVjayB3aXRo
IHRhc2sgc2l6ZTogJSIgUFJJdTY0ICIga2V5IHNpemU6ICUiIFBSSXU2NCAiIHZhbHVlIHNpemU6
ICUiIFBSSXU2NCAiIGluZGV4IHNpemU6ICUiIFBSSXU2NCwgdGFza1NpemUsIGtleVNpemUsIHZh
bHVlU2l6ZSwgaW5kZXhTaXplKTsKKyAgICBtX21hbmFnZXItPnJlcXVlc3RTcGFjZShtX2lkZW50
aWZpZXIub3JpZ2luKCksIHRhc2tTaXplLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRo
aXMgfSwgcmVxdWVzdERhdGEsIHVzZWRLZXksIHZhbHVlLCBvdmVyd3JpdGVNb2RlLCBjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spLCB1c2VkS2V5SXNHZW5lcmF0ZWQsIGluZGV4S2V5cywgb2Jq
ZWN0U3RvcmVJbmZvID0gKm9iamVjdFN0b3JlSW5mb10oYm9vbCBncmFudGVkKSBtdXRhYmxlIHsK
KyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJF
cnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiRGF0YWJhc2UgaXMgY2xvc2VkIiB9LCB1c2VkS2V5
KTsKIAotICAgIGlmIChtX3NlcnZlci5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigp
LCB0YXNrU2l6ZSkgPT0gU3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb246OkRlbnkpIHsKLSAg
ICAgICAgY2FsbGJhY2soSURCRXJyb3IgeyBRdW90YUV4Y2VlZGVkRXJyb3IsIHF1b3RhRXJyb3JN
ZXNzYWdlTmFtZSgiUHV0T3JBZGQiKSB9LCB1c2VkS2V5KTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KKyAgICAgICAgcHV0T3JBZGRBZnRlclNwYWNlQ2hlY2socmVxdWVzdERhdGEsIHVzZWRLZXks
IHZhbHVlLCBvdmVyd3JpdGVNb2RlLCBXVEZNb3ZlKGNhbGxiYWNrKSwgdXNlZEtleUlzR2VuZXJh
dGVkLCBpbmRleEtleXMsIG9iamVjdFN0b3JlSW5mbywgZ3JhbnRlZCA/IFNwYWNlQ2hlY2tSZXN1
bHQ6OlBhc3MgOiBTcGFjZUNoZWNrUmVzdWx0OjpGYWlsKTsKKyAgICB9KTsKK30KKwordm9pZCBV
bmlxdWVJREJEYXRhYmFzZTo6cHV0T3JBZGRBZnRlclNwYWNlQ2hlY2soY29uc3QgSURCUmVxdWVz
dERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXlEYXRhJiBrZXlEYXRhLCBjb25zdCBJREJW
YWx1ZSYgdmFsdWUsIEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlIG92ZXJ3cml0
ZU1vZGUsIEtleURhdGFDYWxsYmFjayBjYWxsYmFjaywgYm9vbCBpc0tleUdlbmVyYXRlZCwgY29u
c3QgSW5kZXhJRFRvSW5kZXhLZXlNYXAmIGluZGV4S2V5cywgY29uc3QgSURCT2JqZWN0U3RvcmVJ
bmZvJiBvYmplY3RTdG9yZUluZm8sIFNwYWNlQ2hlY2tSZXN1bHQgc3BhY2VDaGVja1Jlc3VsdCkK
K3sKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9kYXRhYmFzZUlu
Zm8pOworCisgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNr
KElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJCYWNraW5nIHN0b3JlIGlzIGNsb3NlZCIg
fSwga2V5RGF0YSk7CisKKyAgICB1aW50NjRfdCBrZXlOdW1iZXIgPSBpc0tleUdlbmVyYXRlZCA/
IGtleURhdGEubnVtYmVyKCkgOiAwOworICAgIGF1dG8gb2JqZWN0U3RvcmVJZGVudGlmaWVyID0g
b2JqZWN0U3RvcmVJbmZvLmlkZW50aWZpZXIoKTsKKyAgICBhdXRvIHRyYW5zYWN0aW9uSWRlbnRp
ZmllciA9IHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpOworICAgIGF1dG8gZ2Vu
ZXJhdGVkS2V5UmVzZXR0ZXIgPSBtYWtlU2NvcGVFeGl0KFt0aGlzLCB0cmFuc2FjdGlvbklkZW50
aWZpZXIsIG9iamVjdFN0b3JlSWRlbnRpZmllciwgJmtleU51bWJlciwgJmlzS2V5R2VuZXJhdGVk
XSgpIHsKKyAgICAgICAgaWYgKGlzS2V5R2VuZXJhdGVkKQorICAgICAgICAgICAgbV9iYWNraW5n
U3RvcmUtPnJldmVydEdlbmVyYXRlZEtleU51bWJlcih0cmFuc2FjdGlvbklkZW50aWZpZXIsIG9i
amVjdFN0b3JlSWRlbnRpZmllciwga2V5TnVtYmVyKTsKKyAgICB9KTsKIAorICAgIGlmIChzcGFj
ZUNoZWNrUmVzdWx0ICE9IFNwYWNlQ2hlY2tSZXN1bHQ6OlBhc3MpCisgICAgICAgIHJldHVybiBj
YWxsYmFjayhJREJFcnJvciB7IFF1b3RhRXhjZWVkZWRFcnJvciwgcXVvdGFFcnJvck1lc3NhZ2VO
YW1lKCJQdXRPckFkZCIpIH0sIGtleURhdGEpOwogICAgIC8vIElmIGEgcmVjb3JkIGFscmVhZHkg
ZXhpc3RzIGluIHN0b3JlLCB0aGVuIHJlbW92ZSB0aGUgcmVjb3JkIGZyb20gc3RvcmUgdXNpbmcg
dGhlIHN0ZXBzIGZvciBkZWxldGluZyByZWNvcmRzIGZyb20gYW4gb2JqZWN0IHN0b3JlLgotICAg
IC8vIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UgZm9ybWFsbHkgZGVsZXRpbmcgaXQgZnJvbSBm
cm9tIHRoZSBvYmplY3Qgc3RvcmUgYWxzbyByZW1vdmVzIGl0IGZyb20gdGhlIGFwcHJvcHJpYXRl
IGluZGV4ZXMuCi0gICAgZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+ZGVsZXRlUmFuZ2UodHJhbnNh
Y3Rpb25JZGVudGlmaWVyLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVzZWRLZXkpOwotICAgIGlm
ICghZXJyb3IuaXNOdWxsKCkpIHsKLSAgICAgICAgY2FsbGJhY2soZXJyb3IsIHVzZWRLZXkpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIC8vIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2Ug
Zm9ybWFsbHkgZGVsZXRpbmcgaXQgZnJvbSB0aGUgb2JqZWN0IHN0b3JlIGFsc28gcmVtb3ZlcyBp
dCBmcm9tIHRoZSBhcHByb3ByaWF0ZSBpbmRleGVzLgorICAgIElEQkVycm9yIGVycm9yID0gbV9i
YWNraW5nU3RvcmUtPmRlbGV0ZVJhbmdlKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgb2JqZWN0U3Rv
cmVJZGVudGlmaWVyLCBrZXlEYXRhKTsKKyAgICBpZiAoIWVycm9yLmlzTnVsbCgpKQorICAgICAg
ICByZXR1cm4gY2FsbGJhY2soZXJyb3IsIGtleURhdGEpOwogCi0gICAgZXJyb3IgPSBtX2JhY2tp
bmdTdG9yZS0+YWRkUmVjb3JkKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgKm9iamVjdFN0b3JlSW5m
bywgdXNlZEtleSwgaW5kZXhLZXlzLCB2YWx1ZSk7Ci0gICAgaWYgKCFlcnJvci5pc051bGwoKSkg
ewotICAgICAgICBjYWxsYmFjayhlcnJvciwgdXNlZEtleSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9CisgICAgZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+YWRkUmVjb3JkKHRyYW5zYWN0aW9uSWRl
bnRpZmllciwgb2JqZWN0U3RvcmVJbmZvLCBrZXlEYXRhLCBpbmRleEtleXMsIHZhbHVlKTsKKyAg
ICBpZiAoIWVycm9yLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gY2FsbGJhY2soZXJyb3IsIGtl
eURhdGEpOwogCi0gICAgaWYgKG92ZXJ3cml0ZU1vZGUgIT0gSW5kZXhlZERCOjpPYmplY3RTdG9y
ZU92ZXJ3cml0ZU1vZGU6Ok92ZXJ3cml0ZUZvckN1cnNvciAmJiBvYmplY3RTdG9yZUluZm8tPmF1
dG9JbmNyZW1lbnQoKSAmJiBrZXlEYXRhLnR5cGUoKSA9PSBJbmRleGVkREI6OktleVR5cGU6Ok51
bWJlcikKKyAgICBpZiAob3ZlcndyaXRlTW9kZSAhPSBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3Zl
cndyaXRlTW9kZTo6T3ZlcndyaXRlRm9yQ3Vyc29yICYmIG9iamVjdFN0b3JlSW5mby5hdXRvSW5j
cmVtZW50KCkgJiYga2V5RGF0YS50eXBlKCkgPT0gSW5kZXhlZERCOjpLZXlUeXBlOjpOdW1iZXIp
CiAgICAgICAgIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPm1heWJlVXBkYXRlS2V5R2VuZXJhdG9y
TnVtYmVyKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBrZXlE
YXRhLm51bWJlcigpKTsKIAogICAgIGdlbmVyYXRlZEtleVJlc2V0dGVyLnJlbGVhc2UoKTsKLSAg
ICBjYWxsYmFjayhlcnJvciwgdXNlZEtleSk7CisgICAgY2FsbGJhY2soZXJyb3IsIGtleURhdGEp
OwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRSZWNvcmQoY29uc3QgSURCUmVxdWVz
dERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJHZXRSZWNvcmREYXRhJiBnZXRSZWNvcmREYXRh
LCBHZXRSZXN1bHRDYWxsYmFjayBjYWxsYmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6Omdl
dFJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkdldFJl
Y29yZERhdGEmIGdldFJlY29yZERhdGEsIEdldFJlc3VsdENhbGxiYWNrIGNhbGxiYWNrLCBTcGFj
ZUNoZWNrUmVzdWx0IHNwYWNlQ2hlY2tSZXN1bHQpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJl
YWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRSZWNvcmQi
KTsKIAorICAgIGlmIChzcGFjZUNoZWNrUmVzdWx0ID09IFNwYWNlQ2hlY2tSZXN1bHQ6OlVua25v
d24pIHsKKyAgICAgICAgaWYgKCFtX21hbmFnZXIpCisgICAgICAgICAgICByZXR1cm4gY2FsbGJh
Y2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciB9LCBJREJHZXRSZXN1bHQgeyB9KTsKKwor
ICAgICAgICBtX21hbmFnZXItPnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIDAs
IFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCByZXF1ZXN0RGF0YSwgZ2V0UmVj
b3JkRGF0YSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBncmFudGVkKSBtdXRh
YmxlIHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICAgICAgcmV0dXJu
IGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJEYXRhYmFzZSBpcyBjbG9z
ZWQiIH0sIElEQkdldFJlc3VsdCB7IH0pOworCisgICAgICAgICAgICBnZXRSZWNvcmQocmVxdWVz
dERhdGEsIGdldFJlY29yZERhdGEsIFdURk1vdmUoY2FsbGJhY2spLCBncmFudGVkID8gU3BhY2VD
aGVja1Jlc3VsdDo6UGFzcyA6IFNwYWNlQ2hlY2tSZXN1bHQ6OkZhaWwpOworICAgICAgICB9KTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChzcGFjZUNoZWNrUmVzdWx0ID09
IFNwYWNlQ2hlY2tSZXN1bHQ6OlBhc3MpOworICAgIGlmICghbV9iYWNraW5nU3RvcmUpCisgICAg
ICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiQmFja2lu
ZyBzdG9yZSBpcyBjbG9zZWQiIH0sIElEQkdldFJlc3VsdCB7IH0pOworCiAgICAgSURCR2V0UmVz
dWx0IHJlc3VsdDsKICAgICBJREJFcnJvciBlcnJvcjsKIAotICAgIEFTU0VSVChtX2JhY2tpbmdT
dG9yZSk7CiAgICAgaWYgKHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciA9IHJlcXVlc3REYXRhLmlu
ZGV4SWRlbnRpZmllcigpKQogICAgICAgICBlcnJvciA9IG1fYmFja2luZ1N0b3JlLT5nZXRJbmRl
eFJlY29yZChyZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSwgcmVxdWVzdERhdGEu
b2JqZWN0U3RvcmVJZGVudGlmaWVyKCksIGluZGV4SWRlbnRpZmllciwgcmVxdWVzdERhdGEuaW5k
ZXhSZWNvcmRUeXBlKCksIGdldFJlY29yZERhdGEua2V5UmFuZ2VEYXRhLCByZXN1bHQpOwogICAg
IGVsc2UKQEAgLTgwOCw0NyArOTc0LDExMCBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRS
ZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJHZQogICAg
IGNhbGxiYWNrKGVycm9yLCByZXN1bHQpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpn
ZXRBbGxSZWNvcmRzKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURC
R2V0QWxsUmVjb3Jkc0RhdGEmIGdldEFsbFJlY29yZHNEYXRhLCBHZXRBbGxSZXN1bHRzQ2FsbGJh
Y2sgY2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRBbGxSZWNvcmRzKGNvbnN0
IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCR2V0QWxsUmVjb3Jkc0RhdGEm
IGdldEFsbFJlY29yZHNEYXRhLCBHZXRBbGxSZXN1bHRzQ2FsbGJhY2sgY2FsbGJhY2ssIFNwYWNl
Q2hlY2tSZXN1bHQgc3BhY2VDaGVja1Jlc3VsdCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVh
ZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6OmdldEFsbFJlY29y
ZHMiKTsKIAotICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CisgICAgaWYgKHNwYWNlQ2hlY2tS
ZXN1bHQgPT0gU3BhY2VDaGVja1Jlc3VsdDo6VW5rbm93bikgeworICAgICAgICBpZiAoIW1fbWFu
YWdlcikKKyAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0
ZUVycm9yIH0sIElEQkdldEFsbFJlc3VsdCB7IH0pOworCisgICAgICAgIG1fbWFuYWdlci0+cmVx
dWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwgMCwgW3RoaXMsIHdlYWtUaGlzID0gV2Vh
a1B0ciB7ICp0aGlzIH0sIHJlcXVlc3REYXRhLCBnZXRBbGxSZWNvcmRzRGF0YSwgY2FsbGJhY2sg
PSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAgICAg
IGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9y
IHsgSW52YWxpZFN0YXRlRXJyb3IsICJEYXRhYmFzZSBpcyBjbG9zZWQiIH0sIElEQkdldEFsbFJl
c3VsdCB7IH0pOworCisgICAgICAgICAgICBnZXRBbGxSZWNvcmRzKHJlcXVlc3REYXRhLCBnZXRB
bGxSZWNvcmRzRGF0YSwgV1RGTW92ZShjYWxsYmFjayksIGdyYW50ZWQgPyBTcGFjZUNoZWNrUmVz
dWx0OjpQYXNzIDogU3BhY2VDaGVja1Jlc3VsdDo6RmFpbCk7CisgICAgICAgIH0pOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKHNwYWNlQ2hlY2tSZXN1bHQgPT0gU3BhY2VD
aGVja1Jlc3VsdDo6UGFzcyk7CisgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkKKyAgICAgICAgcmV0
dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJCYWNraW5nIHN0b3Jl
IGlzIGNsb3NlZCIgfSwgSURCR2V0QWxsUmVzdWx0IHsgfSk7CisKICAgICBJREJHZXRBbGxSZXN1
bHQgcmVzdWx0OwogICAgIGF1dG8gZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+Z2V0QWxsUmVjb3Jk
cyhyZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSwgZ2V0QWxsUmVjb3Jkc0RhdGEs
IHJlc3VsdCk7CiAKICAgICBjYWxsYmFjayhlcnJvciwgcmVzdWx0KTsKIH0KIAotdm9pZCBVbmlx
dWVJREJEYXRhYmFzZTo6Z2V0Q291bnQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRh
LCBjb25zdCBJREJLZXlSYW5nZURhdGEmIHJhbmdlLCBDb3VudENhbGxiYWNrIGNhbGxiYWNrKQor
dm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Z2V0Q291bnQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJl
cXVlc3REYXRhLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIHJhbmdlLCBDb3VudENhbGxiYWNrIGNh
bGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0IHNwYWNlQ2hlY2tSZXN1bHQpCiB7CiAgICAgQVNTRVJU
KCFpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNl
OjpnZXRDb3VudCIpOwogCi0gICAgQVNTRVJUKG1fYmFja2luZ1N0b3JlKTsKKyAgICBpZiAoc3Bh
Y2VDaGVja1Jlc3VsdCA9PSBTcGFjZUNoZWNrUmVzdWx0OjpVbmtub3duKSB7CisgICAgICAgIGlm
ICghbV9tYW5hZ2VyKQorICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52
YWxpZFN0YXRlRXJyb3IgfSwgMCk7CisKKyAgICAgICAgbV9tYW5hZ2VyLT5yZXF1ZXN0U3BhY2Uo
bV9pZGVudGlmaWVyLm9yaWdpbigpLCAwLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRo
aXMgfSwgcmVxdWVzdERhdGEsIHJhbmdlLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShi
b29sIGdyYW50ZWQpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAg
ICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwg
IkRhdGFiYXNlIGlzIGNsb3NlZCIgfSwgMCk7CisKKyAgICAgICAgICAgIGdldENvdW50KHJlcXVl
c3REYXRhLCByYW5nZSwgV1RGTW92ZShjYWxsYmFjayksIGdyYW50ZWQgPyBTcGFjZUNoZWNrUmVz
dWx0OjpQYXNzIDogU3BhY2VDaGVja1Jlc3VsdDo6RmFpbCk7CisgICAgICAgIH0pOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKHNwYWNlQ2hlY2tSZXN1bHQgPT0gU3BhY2VD
aGVja1Jlc3VsdDo6UGFzcyk7CisgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkKKyAgICAgICAgcmV0
dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJCYWNraW5nIHN0b3Jl
IGlzIGNsb3NlZCIgfSwgMCk7CisKICAgICB1aW50NjRfdCBjb3VudCA9IDA7CiAgICAgYXV0byBl
cnJvciA9IG1fYmFja2luZ1N0b3JlLT5nZXRDb3VudChyZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklk
ZW50aWZpZXIoKSwgcmVxdWVzdERhdGEub2JqZWN0U3RvcmVJZGVudGlmaWVyKCksIHJlcXVlc3RE
YXRhLmluZGV4SWRlbnRpZmllcigpLCByYW5nZSwgY291bnQpOwogCiAgICAgY2FsbGJhY2soZXJy
b3IsIGNvdW50KTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlUmVjb3JkKGNv
bnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBr
ZXlSYW5nZURhdGEsIEVycm9yQ2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFi
YXNlOjpkZWxldGVSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25z
dCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlRGF0YSwgRXJyb3JDYWxsYmFjayBjYWxsYmFjaywg
U3BhY2VDaGVja1Jlc3VsdCBzcGFjZUNoZWNrUmVzdWx0KQogewogICAgIEFTU0VSVCghaXNNYWlu
VGhyZWFkKCkpOwogICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRl
UmVjb3JkIik7CiAKLSAgICBBU1NFUlQobV9iYWNraW5nU3RvcmUpOworICAgIGlmIChzcGFjZUNo
ZWNrUmVzdWx0ID09IFNwYWNlQ2hlY2tSZXN1bHQ6OlVua25vd24pIHsKKyAgICAgICAgaWYgKCFt
X21hbmFnZXIpCisgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlk
U3RhdGVFcnJvciB9KTsKKworICAgICAgICBtX21hbmFnZXItPnJlcXVlc3RTcGFjZShtX2lkZW50
aWZpZXIub3JpZ2luKCksIDAsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBy
ZXF1ZXN0RGF0YSwga2V5UmFuZ2VEYXRhLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShi
b29sIGdyYW50ZWQpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAg
ICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwg
IkRhdGFiYXNlIGlzIGNsb3NlZCIgfSk7CisKKyAgICAgICAgICAgIGRlbGV0ZVJlY29yZChyZXF1
ZXN0RGF0YSwga2V5UmFuZ2VEYXRhLCBXVEZNb3ZlKGNhbGxiYWNrKSwgZ3JhbnRlZCA/IFNwYWNl
Q2hlY2tSZXN1bHQ6OlBhc3MgOiBTcGFjZUNoZWNrUmVzdWx0OjpGYWlsKTsKKyAgICAgICAgfSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQoc3BhY2VDaGVja1Jlc3VsdCA9
PSBTcGFjZUNoZWNrUmVzdWx0OjpQYXNzKTsKKyAgICBpZiAoIW1fYmFja2luZ1N0b3JlKQorICAg
ICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkJhY2tp
bmcgc3RvcmUgaXMgY2xvc2VkIiB9KTsKKwogICAgIGF1dG8gZXJyb3IgPSBtX2JhY2tpbmdTdG9y
ZS0+ZGVsZXRlUmFuZ2UocmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCksIHJlcXVl
c3REYXRhLm9iamVjdFN0b3JlSWRlbnRpZmllcigpLCBrZXlSYW5nZURhdGEpOwogCiAgICAgY2Fs
bGJhY2soZXJyb3IpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuQ3Vyc29yKGNv
bnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCQ3Vyc29ySW5mbyYgaW5m
bywgR2V0UmVzdWx0Q2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpv
cGVuQ3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCQ3Vy
c29ySW5mbyYgaW5mbywgR2V0UmVzdWx0Q2FsbGJhY2sgY2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1
bHQgc3BhY2VDaGVja1Jlc3VsdCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAg
ICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6Om9wZW5DdXJzb3IiKTsKIAotICAg
IEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CisgICAgaWYgKHNwYWNlQ2hlY2tSZXN1bHQgPT0gU3Bh
Y2VDaGVja1Jlc3VsdDo6VW5rbm93bikgeworICAgICAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAg
ICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yIH0sIElE
QkdldFJlc3VsdCB7IH0pOworCisgICAgICAgIG1fbWFuYWdlci0+cmVxdWVzdFNwYWNlKG1faWRl
bnRpZmllci5vcmlnaW4oKSwgMCwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0s
IHJlcXVlc3REYXRhLCBpbmZvLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIGdy
YW50ZWQpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAg
ICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkRhdGFi
YXNlIG9yIHRyYW5zYWN0aW9uIGlzIGNsb3NlZCIgfSwgSURCR2V0UmVzdWx0IHsgfSk7CisKKyAg
ICAgICAgICAgIG9wZW5DdXJzb3IocmVxdWVzdERhdGEsIGluZm8sIFdURk1vdmUoY2FsbGJhY2sp
LCBncmFudGVkID8gU3BhY2VDaGVja1Jlc3VsdDo6UGFzcyA6IFNwYWNlQ2hlY2tSZXN1bHQ6OkZh
aWwpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChz
cGFjZUNoZWNrUmVzdWx0ID09IFNwYWNlQ2hlY2tSZXN1bHQ6OlBhc3MpOworICAgIGlmICghbV9i
YWNraW5nU3RvcmUpCisgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRT
dGF0ZUVycm9yLCAiQmFja2luZyBzdG9yZSBpcyBjbG9zZWQiIH0sIElEQkdldFJlc3VsdCB7IH0p
OwogCiAgICAgSURCR2V0UmVzdWx0IHJlc3VsdDsKICAgICBhdXRvIGVycm9yID0gbV9iYWNraW5n
U3RvcmUtPm9wZW5DdXJzb3IocmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCksIGlu
Zm8sIHJlc3VsdCk7CkBAIC04NTYsMTIgKzEwODUsMjcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFz
ZTo6b3BlbkN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElE
QkMKICAgICBjYWxsYmFjayhlcnJvciwgcmVzdWx0KTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRh
YmFzZTo6aXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNv
bnN0IElEQkl0ZXJhdGVDdXJzb3JEYXRhJiBkYXRhLCBHZXRSZXN1bHRDYWxsYmFjayBjYWxsYmFj
aykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6Oml0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVxdWVz
dERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJJdGVyYXRlQ3Vyc29yRGF0YSYgZGF0YSwgR2V0
UmVzdWx0Q2FsbGJhY2sgY2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgc3BhY2VDaGVja1Jlc3Vs
dCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAi
VW5pcXVlSURCRGF0YWJhc2U6Oml0ZXJhdGVDdXJzb3IiKTsKIAotICAgIEFTU0VSVChtX2JhY2tp
bmdTdG9yZSk7CisgICAgaWYgKHNwYWNlQ2hlY2tSZXN1bHQgPT0gU3BhY2VDaGVja1Jlc3VsdDo6
VW5rbm93bikgeworICAgICAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAgICAgICAgIHJldHVybiBj
YWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yIH0sIElEQkdldFJlc3VsdCB7IH0p
OworCisgICAgICAgIG1fbWFuYWdlci0+cmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4o
KSwgMCwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHJlcXVlc3REYXRhLCBk
YXRhLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIGdyYW50ZWQpIG11dGFibGUg
eworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICByZXR1cm4gY2Fs
bGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkRhdGFiYXNlIG9yIHRyYW5zYWN0
aW9uIGlzIGNsb3NlZCIgfSwgSURCR2V0UmVzdWx0IHsgfSk7CisKKyAgICAgICAgICAgIGl0ZXJh
dGVDdXJzb3IocmVxdWVzdERhdGEsIGRhdGEsIFdURk1vdmUoY2FsbGJhY2spLCBncmFudGVkID8g
U3BhY2VDaGVja1Jlc3VsdDo6UGFzcyA6IFNwYWNlQ2hlY2tSZXN1bHQ6OkZhaWwpOworICAgICAg
ICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChzcGFjZUNoZWNrUmVz
dWx0ID09IFNwYWNlQ2hlY2tSZXN1bHQ6OlBhc3MpOworICAgIGlmICghbV9iYWNraW5nU3RvcmUp
CisgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAi
QmFja2luZyBzdG9yZSBpcyBjbG9zZWQiIH0sIElEQkdldFJlc3VsdCB7IH0pOwogCiAgICAgSURC
R2V0UmVzdWx0IHJlc3VsdDsKICAgICBhdXRvIHRyYW5zYWN0aW9uSWRlbnRpZmllciA9IHJlcXVl
c3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpOwpAQCAtODcxLDEzICsxMTE1LDMwIEBAIHZv
aWQgVW5pcXVlSURCRGF0YWJhc2U6Oml0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEm
IHJlcXVlc3REYXRhLCBjb25zdCBJCiAgICAgY2FsbGJhY2soZXJyb3IsIHJlc3VsdCk7CiB9CiAK
LXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNvbW1pdFRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFi
YXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBFcnJvckNhbGxiYWNrIGNhbGxiYWNrKQordm9p
ZCBVbmlxdWVJREJEYXRhYmFzZTo6Y29tbWl0VHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VU
cmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIEVycm9yQ2FsbGJhY2sgY2FsbGJhY2ssIFNwYWNlQ2hl
Y2tSZXN1bHQgc3BhY2VDaGVja1Jlc3VsdCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgp
KTsKICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6OmNvbW1pdFRyYW5zYWN0
aW9uIC0gJXMiLCB0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpLmxvZ2dpbmdTdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKIAorICAgIGlmIChzcGFjZUNoZWNrUmVzdWx0ID09IFNwYWNlQ2hl
Y2tSZXN1bHQ6OlVua25vd24pIHsKKyAgICAgICAgaWYgKCFtX21hbmFnZXIpCisgICAgICAgICAg
ICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciB9KTsKKworICAg
ICAgICBtX21hbmFnZXItPnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIDAsIFt0
aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCB3ZWFrVHJhbnNhY3Rpb24gPSBXZWFr
UHRyIHsgdHJhbnNhY3Rpb24gfSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBn
cmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMgfHwgIXdlYWtUcmFu
c2FjdGlvbikKKyAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZh
bGlkU3RhdGVFcnJvciwgIkRhdGFiYXNlIG9yIHRyYW5zYWN0aW9uIGlzIGNsb3NlZCIgfSk7CisK
KyAgICAgICAgICAgIGNvbW1pdFRyYW5zYWN0aW9uKCp3ZWFrVHJhbnNhY3Rpb24sIFdURk1vdmUo
Y2FsbGJhY2spLCBncmFudGVkID8gU3BhY2VDaGVja1Jlc3VsdDo6UGFzcyA6IFNwYWNlQ2hlY2tS
ZXN1bHQ6OkZhaWwpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IEFTU0VSVChzcGFjZUNoZWNrUmVzdWx0ID09IFNwYWNlQ2hlY2tSZXN1bHQ6OlBhc3MpOwogICAg
IEFTU0VSVCh0cmFuc2FjdGlvbi5kYXRhYmFzZUNvbm5lY3Rpb24oKS5kYXRhYmFzZSgpID09IHRo
aXMpOwotICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CisKKyAgICBpZiAoIW1fYmFja2luZ1N0
b3JlKQorICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJv
ciwgIkJhY2tpbmcgc3RvcmUgaXMgY2xvc2VkIiB9KTsKKwogICAgIGF1dG8gdGFrZW5UcmFuc2Fj
dGlvbiA9IG1faW5Qcm9ncmVzc1RyYW5zYWN0aW9ucy50YWtlKHRyYW5zYWN0aW9uLmluZm8oKS5p
ZGVudGlmaWVyKCkpOwogICAgIGlmICghdGFrZW5UcmFuc2FjdGlvbikgewogICAgICAgICBpZiAo
IW1fb3BlbkRhdGFiYXNlQ29ubmVjdGlvbnMuY29udGFpbnMoJnRyYW5zYWN0aW9uLmRhdGFiYXNl
Q29ubmVjdGlvbigpKSkKQEAgLTg5MywxMSArMTE1NCwyNSBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFi
YXNlOjpjb21taXRUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFu
c2FjdAogICAgIHRyYW5zYWN0aW9uQ29tcGxldGVkKFdURk1vdmUodGFrZW5UcmFuc2FjdGlvbikp
OwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjphYm9ydFRyYW5zYWN0aW9uKFVuaXF1ZUlE
QkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBFcnJvckNhbGxiYWNrIGNhbGxiYWNr
KQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6YWJvcnRUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRh
YmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgRXJyb3JDYWxsYmFjayBjYWxsYmFjaywgU3Bh
Y2VDaGVja1Jlc3VsdCBzcGFjZUNoZWNrUmVzdWx0KQogewogICAgIEFTU0VSVCghaXNNYWluVGhy
ZWFkKCkpOwogICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6YWJvcnRUcmFu
c2FjdGlvbiAtICVzIiwgdHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKS5sb2dnaW5nU3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKKyAgICBpZiAoc3BhY2VDaGVja1Jlc3VsdCA9PSBTcGFj
ZUNoZWNrUmVzdWx0OjpVbmtub3duKSB7CisgICAgICAgIGlmICghbV9tYW5hZ2VyKQorICAgICAg
ICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7CisK
KyAgICAgICAgbV9tYW5hZ2VyLT5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCAw
LCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgd2Vha1RyYW5zYWN0aW9uID0g
V2Vha1B0ciB7IHRyYW5zYWN0aW9uIH0sIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJv
b2wgZ3JhbnRlZCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICF3ZWFr
VHJhbnNhY3Rpb24pCisgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsg
SW52YWxpZFN0YXRlRXJyb3IsICJEYXRhYmFzZSBvciB0cmFuc2FjdGlvbiBpcyBjbG9zZWQiIH0p
OworCisgICAgICAgICAgICBhYm9ydFRyYW5zYWN0aW9uKCp3ZWFrVHJhbnNhY3Rpb24sIFdURk1v
dmUoY2FsbGJhY2spLCBncmFudGVkID8gU3BhY2VDaGVja1Jlc3VsdDo6UGFzcyA6IFNwYWNlQ2hl
Y2tSZXN1bHQ6OkZhaWwpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIEFTU0VSVChzcGFjZUNoZWNrUmVzdWx0ID09IFNwYWNlQ2hlY2tSZXN1bHQ6OlBhc3MpOwog
ICAgIEFTU0VSVCh0cmFuc2FjdGlvbi5kYXRhYmFzZUNvbm5lY3Rpb24oKS5kYXRhYmFzZSgpID09
IHRoaXMpOwogCiAgICAgYXV0byB0YWtlblRyYW5zYWN0aW9uID0gbV9pblByb2dyZXNzVHJhbnNh
Y3Rpb25zLnRha2UodHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSk7CkBAIC05MjUsNyAr
MTIwMCwxMSBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjphYm9ydFRyYW5zYWN0aW9uKFVuaXF1
ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aQogICAgICAgICBtX2RhdGFiYXNlSW5m
byA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPigqbV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rp
b24tPm9yaWdpbmFsRGF0YWJhc2VJbmZvKCkpOwogICAgIH0KIAotICAgIGF1dG8gZXJyb3IgPSBt
X2JhY2tpbmdTdG9yZS0+YWJvcnRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbklkZW50aWZpZXIpOwor
ICAgIElEQkVycm9yIGVycm9yOworICAgIGlmICghbV9iYWNraW5nU3RvcmUpCisgICAgICAgIGVy
cm9yID0gSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkJhY2tpbmcgc3RvcmUgaXMgY2xv
c2VkIiB9OworICAgIGVsc2UKKyAgICAgICAgZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+YWJvcnRU
cmFuc2FjdGlvbih0cmFuc2FjdGlvbklkZW50aWZpZXIpOwogCiAgICAgY2FsbGJhY2soZXJyb3Ip
OwogICAgIHRyYW5zYWN0aW9uQ29tcGxldGVkKFdURk1vdmUodGFrZW5UcmFuc2FjdGlvbikpOwpA
QCAtMTIyNSw2ICsxNTA0LDExIEBAIGJvb2wgVW5pcXVlSURCRGF0YWJhc2U6OnRyeUNsb3NlKCkK
ICAgICBjbG9zZSgpOwogICAgIHJldHVybiB0cnVlOwogfQorICAgIAorYm9vbCBVbmlxdWVJREJE
YXRhYmFzZTo6aGFzRGF0YUluTWVtb3J5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9iYWNraW5n
U3RvcmUgPyBtX2JhY2tpbmdTdG9yZS0+aXNFcGhlbWVyYWwoKSA6IGZhbHNlOworfQogCiBSZWZQ
dHI8U2VydmVyT3BlbkRCUmVxdWVzdD4gVW5pcXVlSURCRGF0YWJhc2U6OnRha2VOZXh0UnVubmFi
bGVSZXF1ZXN0KFJlcXVlc3RUeXBlIHJlcXVlc3RUeXBlKQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2Uu
aAppbmRleCBiMmE3NDE3ZjljODE5Y2ZjMjQxNDZjZTVmYjVjZjVkMjYxMjg1MDgwLi43ODgwZjY2
NWVhODdlMDVmY2JhZGMzZDFkMDc0NDYxOWJlMDM5MjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2Uu
aApAQCAtNTksOCArNTksOCBAQCBlbnVtIGNsYXNzIEluZGV4UmVjb3JkVHlwZSA6IGJvb2w7CiBu
YW1lc3BhY2UgSURCU2VydmVyIHsKIAogY2xhc3MgSURCQ29ubmVjdGlvblRvQ2xpZW50OwotY2xh
c3MgSURCU2VydmVyOwogY2xhc3MgVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uOworY2xhc3Mg
VW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyOwogCiB0eXBlZGVmIEZ1bmN0aW9uPHZvaWQoY29uc3Qg
SURCRXJyb3ImKT4gRXJyb3JDYWxsYmFjazsKIHR5cGVkZWYgRnVuY3Rpb248dm9pZChjb25zdCBJ
REJFcnJvciYsIGNvbnN0IElEQktleURhdGEmKT4gS2V5RGF0YUNhbGxiYWNrOwpAQCAtNzEsNTQg
KzcxLDYyIEBAIHR5cGVkZWYgRnVuY3Rpb248dm9pZChjb25zdCBJREJFcnJvciYsIHVpbnQ2NF90
KT4gQ291bnRDYWxsYmFjazsKIGNsYXNzIFVuaXF1ZUlEQkRhdGFiYXNlIDogcHVibGljIENhbk1h
a2VXZWFrUHRyPFVuaXF1ZUlEQkRhdGFiYXNlPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6Ci0gICAgVW5pcXVlSURCRGF0YWJhc2UoSURCU2VydmVyJiwgY29uc3QgSURC
RGF0YWJhc2VJZGVudGlmaWVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgVW5pcXVlSURCRGF0YWJh
c2UoVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyJiwgY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVy
Jik7CiAgICAgVW5pcXVlSURCRGF0YWJhc2UoVW5pcXVlSURCRGF0YWJhc2UmKSA9IGRlbGV0ZTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB+VW5pcXVlSURCRGF0YWJhc2UoKTsKIAotICAgIHZvaWQgb3Bl
bkRhdGFiYXNlQ29ubmVjdGlvbihJREJDb25uZWN0aW9uVG9DbGllbnQmLCBjb25zdCBJREJSZXF1
ZXN0RGF0YSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgb3BlbkRhdGFiYXNlQ29ubmVjdGlv
bihJREJDb25uZWN0aW9uVG9DbGllbnQmLCBjb25zdCBJREJSZXF1ZXN0RGF0YSYpOwogCiAgICAg
Y29uc3QgSURCRGF0YWJhc2VJbmZvJiBpbmZvKCkgY29uc3Q7Ci0gICAgSURCU2VydmVyJiBzZXJ2
ZXIoKSB7IHJldHVybiBtX3NlcnZlcjsgfQorICAgIFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlciog
bWFuYWdlcigpOwogICAgIGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYgaWRlbnRpZmllcigp
IGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogCi0gICAgdm9pZCBjcmVhdGVPYmplY3RT
dG9yZShVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgY29uc3QgSURCT2JqZWN0U3RvcmVJ
bmZvJiwgRXJyb3JDYWxsYmFjayk7Ci0gICAgdm9pZCBkZWxldGVPYmplY3RTdG9yZShVbmlxdWVJ
REJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUsIEVy
cm9yQ2FsbGJhY2spOwotICAgIHZvaWQgcmVuYW1lT2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJh
c2VUcmFuc2FjdGlvbiYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBuZXdOYW1lLCBFcnJvckNhbGxiYWNrKTsKLSAgICB2b2lkIGNsZWFyT2JqZWN0U3RvcmUo
VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRp
ZmllciwgRXJyb3JDYWxsYmFjayk7Ci0gICAgdm9pZCBjcmVhdGVJbmRleChVbmlxdWVJREJEYXRh
YmFzZVRyYW5zYWN0aW9uJiwgY29uc3QgSURCSW5kZXhJbmZvJiwgRXJyb3JDYWxsYmFjayk7Ci0g
ICAgdm9pZCBkZWxldGVJbmRleChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgdWludDY0
X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGluZGV4TmFtZSwgRXJyb3JD
YWxsYmFjayk7Ci0gICAgdm9pZCByZW5hbWVJbmRleChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0
aW9uJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRleElkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSwgRXJyb3JDYWxsYmFjayk7CisgICAgZW51bSBj
bGFzcyBTcGFjZUNoZWNrUmVzdWx0IDogdWludDhfdCB7CisgICAgICAgIFVua25vd24sCisgICAg
ICAgIFBhc3MsCisgICAgICAgIEZhaWwKKyAgICB9OworICAgIHZvaWQgY3JlYXRlT2JqZWN0U3Rv
cmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIGNvbnN0IElEQk9iamVjdFN0b3JlSW5m
byYsIEVycm9yQ2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgPSBTcGFjZUNoZWNrUmVzdWx0OjpV
bmtub3duKTsKKyAgICB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJh
bnNhY3Rpb24mLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSwgRXJyb3JDYWxsYmFjaywg
U3BhY2VDaGVja1Jlc3VsdCA9IFNwYWNlQ2hlY2tSZXN1bHQ6OlVua25vd24pOworICAgIHZvaWQg
cmVuYW1lT2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIHVpbnQ2NF90
IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lLCBFcnJvckNhbGxi
YWNrLCBTcGFjZUNoZWNrUmVzdWx0ID0gU3BhY2VDaGVja1Jlc3VsdDo6VW5rbm93bik7CisgICAg
dm9pZCBjbGVhck9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCB1aW50
NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIEVycm9yQ2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1
bHQgPSBTcGFjZUNoZWNrUmVzdWx0OjpVbmtub3duKTsKKyAgICB2b2lkIGNyZWF0ZUluZGV4KFVu
aXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCBjb25zdCBJREJJbmRleEluZm8mLCBFcnJvckNh
bGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0ID0gU3BhY2VDaGVja1Jlc3VsdDo6VW5rbm93bik7Cisg
ICAgdm9pZCBkZWxldGVJbmRleChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgdWludDY0
X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGluZGV4TmFtZSwgRXJyb3JD
YWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCA9IFNwYWNlQ2hlY2tSZXN1bHQ6OlVua25vd24pOwor
ICAgIHZvaWQgcmVuYW1lSW5kZXgoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIHVpbnQ2
NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgdWludDY0X3QgaW5kZXhJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIG5ld05hbWUsIEVycm9yQ2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgPSBTcGFj
ZUNoZWNrUmVzdWx0OjpVbmtub3duKTsKICAgICB2b2lkIHB1dE9yQWRkKGNvbnN0IElEQlJlcXVl
c3REYXRhJiwgY29uc3QgSURCS2V5RGF0YSYsIGNvbnN0IElEQlZhbHVlJiwgSW5kZXhlZERCOjpP
YmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUsIEtleURhdGFDYWxsYmFjayk7Ci0gICAgdm9pZCBnZXRS
ZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJHZXRSZWNvcmREYXRhJiwgR2V0
UmVzdWx0Q2FsbGJhY2spOwotICAgIHZvaWQgZ2V0QWxsUmVjb3Jkcyhjb25zdCBJREJSZXF1ZXN0
RGF0YSYsIGNvbnN0IElEQkdldEFsbFJlY29yZHNEYXRhJiwgR2V0QWxsUmVzdWx0c0NhbGxiYWNr
KTsKLSAgICB2b2lkIGdldENvdW50KGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5
UmFuZ2VEYXRhJiwgQ291bnRDYWxsYmFjayk7Ci0gICAgdm9pZCBkZWxldGVSZWNvcmQoY29uc3Qg
SURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmLCBFcnJvckNhbGxiYWNrKTsK
LSAgICB2b2lkIG9wZW5DdXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJDdXJz
b3JJbmZvJiwgR2V0UmVzdWx0Q2FsbGJhY2spOwotICAgIHZvaWQgaXRlcmF0ZUN1cnNvcihjb25z
dCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkl0ZXJhdGVDdXJzb3JEYXRhJiwgR2V0UmVzdWx0
Q2FsbGJhY2spOwotICAgIHZvaWQgY29tbWl0VHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VU
cmFuc2FjdGlvbiYsIEVycm9yQ2FsbGJhY2spOwotICAgIHZvaWQgYWJvcnRUcmFuc2FjdGlvbihV
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgRXJyb3JDYWxsYmFjayk7CisgICAgdm9pZCBw
dXRPckFkZEFmdGVyU3BhY2VDaGVjayhjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktl
eURhdGEmLCBjb25zdCBJREJWYWx1ZSYsIEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVN
b2RlLCBLZXlEYXRhQ2FsbGJhY2ssIGJvb2wgaXNLZXlHZW5lcmF0ZWQsIGNvbnN0IEluZGV4SURU
b0luZGV4S2V5TWFwJiwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiwgU3BhY2VDaGVja1Jlc3Vs
dCk7CisgICAgdm9pZCBnZXRSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJH
ZXRSZWNvcmREYXRhJiwgR2V0UmVzdWx0Q2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgPSBTcGFj
ZUNoZWNrUmVzdWx0OjpVbmtub3duKTsKKyAgICB2b2lkIGdldEFsbFJlY29yZHMoY29uc3QgSURC
UmVxdWVzdERhdGEmLCBjb25zdCBJREJHZXRBbGxSZWNvcmRzRGF0YSYsIEdldEFsbFJlc3VsdHND
YWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCA9IFNwYWNlQ2hlY2tSZXN1bHQ6OlVua25vd24pOwor
ICAgIHZvaWQgZ2V0Q291bnQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlSYW5n
ZURhdGEmLCBDb3VudENhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0ID0gU3BhY2VDaGVja1Jlc3Vs
dDo6VW5rbm93bik7CisgICAgdm9pZCBkZWxldGVSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEm
LCBjb25zdCBJREJLZXlSYW5nZURhdGEmLCBFcnJvckNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0
ID0gU3BhY2VDaGVja1Jlc3VsdDo6VW5rbm93bik7CisgICAgdm9pZCBvcGVuQ3Vyc29yKGNvbnN0
IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCQ3Vyc29ySW5mbyYsIEdldFJlc3VsdENhbGxiYWNr
LCBTcGFjZUNoZWNrUmVzdWx0ID0gU3BhY2VDaGVja1Jlc3VsdDo6VW5rbm93bik7CisgICAgdm9p
ZCBpdGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCSXRlcmF0ZUN1
cnNvckRhdGEmLCBHZXRSZXN1bHRDYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCA9IFNwYWNlQ2hl
Y2tSZXN1bHQ6OlVua25vd24pOworICAgIHZvaWQgY29tbWl0VHJhbnNhY3Rpb24oVW5pcXVlSURC
RGF0YWJhc2VUcmFuc2FjdGlvbiYsIEVycm9yQ2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgPSBT
cGFjZUNoZWNrUmVzdWx0OjpVbmtub3duKTsKKyAgICB2b2lkIGFib3J0VHJhbnNhY3Rpb24oVW5p
cXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIEVycm9yQ2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1
bHQgPSBTcGFjZUNoZWNrUmVzdWx0OjpVbmtub3duKTsKIAogICAgIHZvaWQgZGlkRmluaXNoSGFu
ZGxpbmdWZXJzaW9uQ2hhbmdlKFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYsIGNvbnN0IElE
QlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKICAgICB2b2lkIGNv
bm5lY3Rpb25DbG9zZWRGcm9tQ2xpZW50KFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYpOwog
ICAgIHZvaWQgZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudChVbmlxdWVJREJEYXRhYmFzZUNvbm5l
Y3Rpb24mLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBJ
bmRleGVkREI6OkNvbm5lY3Rpb25DbG9zZWRPbkJlaGFsZk9mU2VydmVyKTsKLSAgICB2b2lkIG9w
ZW5EQlJlcXVlc3RDYW5jZWxsZWQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0
SWRlbnRpZmllcik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBvcGVuREJSZXF1ZXN0Q2FuY2Vs
bGVkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIpOwogCiAg
ICAgdm9pZCBlbnF1ZXVlVHJhbnNhY3Rpb24oUmVmPFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rp
b24+JiYpOwogCi0gICAgdm9pZCBoYW5kbGVEZWxldGUoSURCQ29ubmVjdGlvblRvQ2xpZW50Jiwg
Y29uc3QgSURCUmVxdWVzdERhdGEmKTsKLSAgICB2b2lkIGltbWVkaWF0ZUNsb3NlKCk7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBoYW5kbGVEZWxldGUoSURCQ29ubmVjdGlvblRvQ2xpZW50Jiwg
Y29uc3QgSURCUmVxdWVzdERhdGEmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGltbWVkaWF0
ZUNsb3NlKCk7CiAKICAgICBib29sIGhhc0FjdGl2ZVRyYW5zYWN0aW9ucygpIGNvbnN0OwotICAg
IHZvaWQgYWJvcnRBY3RpdmVUcmFuc2FjdGlvbnMoKTsKLSAgICBib29sIHRyeUNsb3NlKCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhYm9ydEFjdGl2ZVRyYW5zYWN0aW9ucygpOworICAgIFdF
QkNPUkVfRVhQT1JUIGJvb2wgdHJ5Q2xvc2UoKTsKIAotICAgIFN0cmluZyBmaWxlUGF0aCgpIGNv
bnN0OwotICAgIHN0ZDo6b3B0aW9uYWw8SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbj4gbmFtZUFu
ZFZlcnNpb24oKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgZmlsZVBhdGgoKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPElEQkRhdGFiYXNlTmFtZUFu
ZFZlcnNpb24+IG5hbWVBbmRWZXJzaW9uKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9v
bCBoYXNEYXRhSW5NZW1vcnkoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICB2b2lkIGhhbmRsZURh
dGFiYXNlT3BlcmF0aW9ucygpOwogICAgIHZvaWQgaGFuZGxlQ3VycmVudE9wZXJhdGlvbigpOwog
ICAgIHZvaWQgcGVyZm9ybUN1cnJlbnRPcGVuT3BlcmF0aW9uKCk7CisgICAgdm9pZCBwZXJmb3Jt
Q3VycmVudE9wZW5PcGVyYXRpb25BZnRlclNwYWNlQ2hlY2soYm9vbCBpc0dyYW50ZWQpOwogICAg
IHZvaWQgcGVyZm9ybUN1cnJlbnREZWxldGVPcGVyYXRpb24oKTsKICAgICBlbnVtIGNsYXNzIFJl
cXVlc3RUeXBlIHsgRGVsZXRlLCBBbnkgfTsKICAgICBSZWZQdHI8U2VydmVyT3BlbkRCUmVxdWVz
dD4gdGFrZU5leHRSdW5uYWJsZVJlcXVlc3QoUmVxdWVzdFR5cGUgPSBSZXF1ZXN0VHlwZTo6QW55
KTsKQEAgLTE0NiwxMSArMTU0LDEzIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNsZWFyVHJhbnNh
Y3Rpb25zT25Db25uZWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYpOwogCi0gICAg
SURCU2VydmVyJiBtX3NlcnZlcjsKKyAgICBJREJTZXJ2ZXIqIG1fc2VydmVyOworICAgIFdlYWtQ
dHI8VW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyPiBtX21hbmFnZXI7CiAgICAgSURCRGF0YWJhc2VJ
ZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIAogICAgIExpc3RIYXNoU2V0PFJlZlB0cjxTZXJ2ZXJP
cGVuREJSZXF1ZXN0Pj4gbV9wZW5kaW5nT3BlbkRCUmVxdWVzdHM7CiAgICAgUmVmUHRyPFNlcnZl
ck9wZW5EQlJlcXVlc3Q+IG1fY3VycmVudE9wZW5EQlJlcXVlc3Q7CisgICAgSGFzaFNldDxJREJS
ZXNvdXJjZUlkZW50aWZpZXI+IG1fb3BlbkRCUmVxdWVzdHNGb3JTcGFjZUNoZWNrOwogCiAgICAg
TGlzdEhhc2hTZXQ8UmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbj4+IG1fb3BlbkRh
dGFiYXNlQ29ubmVjdGlvbnM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlQ29ubmVj
dGlvbi5jcHAKaW5kZXggNzQzZWRjYzNiOGM1OTQwNTFmNzkxMTE2NTI2YWY0ZDAyMTY5MTM2Ny4u
M2M3NzJhZjcwYjc0ODIyOTc0ZDlkNWI3MTBkMzE1ZjBhOWE4ZmI3ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlQ29u
bmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L1VuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNs
dWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiU2VydmVyT3BlbkRCUmVxdWVzdC5oIgogI2luY2x1
ZGUgIlVuaXF1ZUlEQkRhdGFiYXNlLmgiCisjaW5jbHVkZSAiVW5pcXVlSURCRGF0YWJhc2VNYW5h
Z2VyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBJREJTZXJ2ZXIgewpAQCAt
NDIsMTEgKzQzLDE0IEBAIFJlZjxVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24+IFVuaXF1ZUlE
QkRhdGFiYXNlQ29ubmVjdGlvbjo6Y3JlYXRlKFVuaXF1ZUlEQkRhCiAKIFVuaXF1ZUlEQkRhdGFi
YXNlQ29ubmVjdGlvbjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uKFVuaXF1ZUlEQkRhdGFi
YXNlJiBkYXRhYmFzZSwgU2VydmVyT3BlbkRCUmVxdWVzdCYgcmVxdWVzdCkKICAgICA6IG1fZGF0
YWJhc2UoZGF0YWJhc2UpCi0gICAgLCBtX3NlcnZlcihkYXRhYmFzZS5zZXJ2ZXIoKSkKKyAgICAs
IG1fbWFuYWdlcihkYXRhYmFzZS5tYW5hZ2VyKCkpCiAgICAgLCBtX2Nvbm5lY3Rpb25Ub0NsaWVu
dChyZXF1ZXN0LmNvbm5lY3Rpb24oKSkKICAgICAsIG1fb3BlblJlcXVlc3RJZGVudGlmaWVyKHJl
cXVlc3QucmVxdWVzdERhdGEoKS5yZXF1ZXN0SWRlbnRpZmllcigpKQogewotICAgIG1fc2VydmVy
LnJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0aW9uKCp0aGlzKTsKKyAgICBpZiAoYXV0byogbWFuYWdl
ciA9IGRhdGFiYXNlLm1hbmFnZXIoKSkgeworICAgICAgICBtX21hbmFnZXIgPSAqbWFuYWdlcjsK
KyAgICAgICAgbV9tYW5hZ2VyLT5yZWdpc3RlckNvbm5lY3Rpb24oKnRoaXMpOworICAgIH0KICAg
ICBtX2Nvbm5lY3Rpb25Ub0NsaWVudC0+cmVnaXN0ZXJEYXRhYmFzZUNvbm5lY3Rpb24oKnRoaXMp
OwogfQogCkBAIC01NCwxMCArNTgsMTYgQEAgVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uOjp+
VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uKCkKIHsKICAgICBBU1NFUlQobV90cmFuc2FjdGlv
bk1hcC5pc0VtcHR5KCkpOwogCi0gICAgbV9zZXJ2ZXIudW5yZWdpc3RlckRhdGFiYXNlQ29ubmVj
dGlvbigqdGhpcyk7CisgICAgaWYgKG1fbWFuYWdlcikKKyAgICAgICAgbV9tYW5hZ2VyLT51bnJl
Z2lzdGVyQ29ubmVjdGlvbigqdGhpcyk7CiAgICAgbV9jb25uZWN0aW9uVG9DbGllbnQtPnVucmVn
aXN0ZXJEYXRhYmFzZUNvbm5lY3Rpb24oKnRoaXMpOwogfQogCitVbmlxdWVJREJEYXRhYmFzZU1h
bmFnZXIqIFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbjo6bWFuYWdlcigpCit7CisgICAgcmV0
dXJuIG1fbWFuYWdlci5nZXQoKTsKK30KKwogYm9vbCBVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rp
b246Omhhc05vbkZpbmlzaGVkVHJhbnNhY3Rpb25zKCkgY29uc3QKIHsKICAgICByZXR1cm4gIW1f
dHJhbnNhY3Rpb25NYXAuaXNFbXB0eSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlQ29u
bmVjdGlvbi5oCmluZGV4IDJlMTlkZmQyZGM5MTQzNGJmYzVlN2MzYWU0YmU2NmQ4Y2Q4NTg4MTEu
Ljk4ZmViNTljNzZiZWFlYmU3MGVkZGU0YmU1NThmY2E4NzFjOThkYzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZUNv
bm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmgKQEAgLTI1LDcgKzI1LDYgQEAKIAogI3ByYWdt
YSBvbmNlCiAKLSNpbmNsdWRlICJJREJTZXJ2ZXIuaCIKICNpbmNsdWRlICJVbmlxdWVJREJEYXRh
YmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0lkZW50aWZp
ZWQuaD4KQEAgLTM2LDYgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJREJF
cnJvcjsKIGNsYXNzIElEQlJlc3VsdERhdGE7CitjbGFzcyBVbmlxdWVJREJEYXRhYmFzZU1hbmFn
ZXI7CiAKIG5hbWVzcGFjZSBJREJTZXJ2ZXIgewogCkBAIC01MiwxMSArNTIsMTEgQEAgcHVibGlj
OgogCiAgICAgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiBvcGVuUmVxdWVzdElkZW50aWZp
ZXIoKSB7IHJldHVybiBtX29wZW5SZXF1ZXN0SWRlbnRpZmllcjsgfQogICAgIFVuaXF1ZUlEQkRh
dGFiYXNlKiBkYXRhYmFzZSgpIHsgcmV0dXJuIG1fZGF0YWJhc2UuZ2V0KCk7IH0KLSAgICBJREJT
ZXJ2ZXIqIHNlcnZlcigpIHsgcmV0dXJuICZtX3NlcnZlcjsgfQorICAgIFVuaXF1ZUlEQkRhdGFi
YXNlTWFuYWdlciogbWFuYWdlcigpOwogICAgIElEQkNvbm5lY3Rpb25Ub0NsaWVudCYgY29ubmVj
dGlvblRvQ2xpZW50KCkgeyByZXR1cm4gbV9jb25uZWN0aW9uVG9DbGllbnQ7IH0KIAotICAgIHZv
aWQgY29ubmVjdGlvblBlbmRpbmdDbG9zZUZyb21DbGllbnQoKTsKLSAgICB2b2lkIGNvbm5lY3Rp
b25DbG9zZWRGcm9tQ2xpZW50KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb25uZWN0aW9u
UGVuZGluZ0Nsb3NlRnJvbUNsaWVudCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29ubmVj
dGlvbkNsb3NlZEZyb21DbGllbnQoKTsKIAogICAgIGJvb2wgY2xvc2VQZW5kaW5nKCkgY29uc3Qg
eyByZXR1cm4gbV9jbG9zZVBlbmRpbmc7IH0KIApAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBmaXJlVmVyc2lvbkNoYW5nZUV2ZW50KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmll
ciYgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IHJlcXVlc3RlZFZlcnNpb24pOwogICAgIFVu
aXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIGNyZWF0ZVZlcnNpb25DaGFuZ2VUcmFuc2FjdGlv
bih1aW50NjRfdCBuZXdWZXJzaW9uKTsKIAotICAgIHZvaWQgZXN0YWJsaXNoVHJhbnNhY3Rpb24o
Y29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlc3Rh
Ymxpc2hUcmFuc2FjdGlvbihjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mKTsKICAgICB2b2lkIGRp
ZEFib3J0VHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIGNvbnN0IElE
QkVycm9yJik7CiAgICAgdm9pZCBkaWRDb21taXRUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFz
ZVRyYW5zYWN0aW9uJiwgY29uc3QgSURCRXJyb3ImKTsKICAgICB2b2lkIGRpZENyZWF0ZU9iamVj
dFN0b3JlKGNvbnN0IElEQlJlc3VsdERhdGEmKTsKQEAgLTc1LDggKzc1LDggQEAgcHVibGljOgog
ICAgIHZvaWQgZGlkQ3JlYXRlSW5kZXgoY29uc3QgSURCUmVzdWx0RGF0YSYpOwogICAgIHZvaWQg
ZGlkRGVsZXRlSW5kZXgoY29uc3QgSURCUmVzdWx0RGF0YSYpOwogICAgIHZvaWQgZGlkUmVuYW1l
SW5kZXgoY29uc3QgSURCUmVzdWx0RGF0YSYpOwotICAgIHZvaWQgZGlkRmlyZVZlcnNpb25DaGFu
Z2VFdmVudChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBJ
bmRleGVkREI6OkNvbm5lY3Rpb25DbG9zZWRPbkJlaGFsZk9mU2VydmVyKTsKLSAgICB2b2lkIGRp
ZEZpbmlzaEhhbmRsaW5nVmVyc2lvbkNoYW5nZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXIm
IHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRGaXJl
VmVyc2lvbkNoYW5nZUV2ZW50KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElk
ZW50aWZpZXIsIEluZGV4ZWREQjo6Q29ubmVjdGlvbkNsb3NlZE9uQmVoYWxmT2ZTZXJ2ZXIpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlKGNv
bnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKIAogICAg
IHZvaWQgYWJvcnRUcmFuc2FjdGlvbldpdGhvdXRDYWxsYmFjayhVbmlxdWVJREJEYXRhYmFzZVRy
YW5zYWN0aW9uJik7CiAKQEAgLTg4LDcgKzg4LDcgQEAgcHJpdmF0ZToKICAgICBVbmlxdWVJREJE
YXRhYmFzZUNvbm5lY3Rpb24oVW5pcXVlSURCRGF0YWJhc2UmLCBTZXJ2ZXJPcGVuREJSZXF1ZXN0
Jik7CiAKICAgICBXZWFrUHRyPFVuaXF1ZUlEQkRhdGFiYXNlPiBtX2RhdGFiYXNlOwotICAgIElE
QlNlcnZlciYgbV9zZXJ2ZXI7CisgICAgV2Vha1B0cjxVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXI+
IG1fbWFuYWdlcjsKICAgICBSZWY8SURCQ29ubmVjdGlvblRvQ2xpZW50PiBtX2Nvbm5lY3Rpb25U
b0NsaWVudDsKICAgICBJREJSZXNvdXJjZUlkZW50aWZpZXIgbV9vcGVuUmVxdWVzdElkZW50aWZp
ZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9VbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mODNl
ZmI0OTBjYTNiZTE4M2MwN2RhMGYxZDY4YTllNjRjOWZiMzMyCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNl
TWFuYWdlci5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgIklEQkRhdGFiYXNlSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRy
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IENsaWVudE9yaWdpbjsKKworbmFt
ZXNwYWNlIElEQlNlcnZlciB7CisKK2NsYXNzIElEQkJhY2tpbmdTdG9yZTsKK2NsYXNzIFVuaXF1
ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbjsKK2NsYXNzIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rp
b247CisKK2NsYXNzIFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlciA6IHB1YmxpYyBDYW5NYWtlV2Vh
a1B0cjxVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXI+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5VbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIoKSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJDb25uZWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNl
Q29ubmVjdGlvbiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlckNvbm5lY3Rpb24o
VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWdp
c3RlclRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHVucmVnaXN0ZXJUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5z
YWN0aW9uJikgPSAwOworICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPElEQkJhY2tpbmdTdG9y
ZT4gY3JlYXRlQmFja2luZ1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFNwYWNlKGNvbnN0IENsaWVudE9yaWdpbiYsIHVpbnQ2
NF90IHNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpID0gMDsKK307CisKK30g
Ly8gbmFtZXNwYWNlIElEQlNlcnZlcgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0
YWJhc2VUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHAKaW5kZXggMWNjMDI4MTdhMTI0
YzhkMGVkNTJmMjEzYWM4ZTUwMDZiYTZiOTZkZS4uNmUzY2UwNDQwNmZjYWQzM2JjYzFjOWU5ZjYx
MmUyYWY0MTA2OTQxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0
aW9uLmNwcApAQCAtMjgsNyArMjgsNiBAQAogCiAjaW5jbHVkZSAiSURCSXRlcmF0ZUN1cnNvckRh
dGEuaCIKICNpbmNsdWRlICJJREJSZXN1bHREYXRhLmgiCi0jaW5jbHVkZSAiSURCU2VydmVyLmgi
CiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlVuaXF1ZUlEQkRhdGFiYXNlLmgiCiAK
QEAgLTUwLDEyICs0OSwxNCBAQCBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpVbmlxdWVJ
REJEYXRhYmFzZVRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlQ29ubgogICAgIGlmIChtX3Ry
YW5zYWN0aW9uSW5mby5tb2RlKCkgPT0gSURCVHJhbnNhY3Rpb25Nb2RlOjpWZXJzaW9uY2hhbmdl
KQogICAgICAgICBtX29yaWdpbmFsRGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFz
ZUluZm8+KGRhdGFiYXNlLT5pbmZvKCkpOwogCi0gICAgZGF0YWJhc2VDb25uZWN0aW9uKCkuc2Vy
dmVyKCktPnJlZ2lzdGVyVHJhbnNhY3Rpb24oKnRoaXMpOworICAgIGlmIChhdXRvKiBtYW5hZ2Vy
ID0gZGF0YWJhc2VDb25uZWN0aW9uKCkubWFuYWdlcigpKQorICAgICAgICBtYW5hZ2VyLT5yZWdp
c3RlclRyYW5zYWN0aW9uKCp0aGlzKTsKIH0KIAogVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlv
bjo6flVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24oKQogewotICAgIGRhdGFiYXNlQ29ubmVj
dGlvbigpLnNlcnZlcigpLT51bnJlZ2lzdGVyVHJhbnNhY3Rpb24oKnRoaXMpOworICAgIGlmIChh
dXRvKiBtYW5hZ2VyID0gZGF0YWJhc2VDb25uZWN0aW9uKCkubWFuYWdlcigpKQorICAgICAgICBt
YW5hZ2VyLT51bnJlZ2lzdGVyVHJhbnNhY3Rpb24oKnRoaXMpOwogfQogCiBVbmlxdWVJREJEYXRh
YmFzZUNvbm5lY3Rpb24mIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246OmRhdGFiYXNlQ29u
bmVjdGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uaAppbmRl
eCA5NTk2NjUyYWRjZGJhN2EwNDhiNjE5Zjc0ZWYxYTkyY2VlZjllMGU1Li5mYmE4NWMxNzM4Yjcz
NDJlMTI4ODAwYWViOWQxZGE0NjdlZTdhMTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRh
YmFzZVRyYW5zYWN0aW9uLmgKQEAgLTUxLDcgKzUxLDcgQEAgbmFtZXNwYWNlIElEQlNlcnZlciB7
CiBjbGFzcyBJREJTZXJ2ZXI7CiBjbGFzcyBVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb247CiAK
LWNsYXNzIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxV
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uPiB7CitjbGFzcyBVbmlxdWVJREJEYXRhYmFzZVRy
YW5zYWN0aW9uIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNh
Y3Rpb24+LCBwdWJsaWMgUmVmQ291bnRlZDxVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uPiB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uPiBj
cmVhdGUoVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiwgY29uc3QgSURCVHJhbnNhY3Rpb25J
bmZvJik7CiAKQEAgLTU5LDI5ICs1OSwyOSBAQCBwdWJsaWM6CiAKICAgICBVbmlxdWVJREJEYXRh
YmFzZUNvbm5lY3Rpb24mIGRhdGFiYXNlQ29ubmVjdGlvbigpOwogICAgIGNvbnN0IElEQlRyYW5z
YWN0aW9uSW5mbyYgaW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNhY3Rpb25JbmZvOyB9Ci0g
ICAgYm9vbCBpc1ZlcnNpb25DaGFuZ2UoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29s
IGlzVmVyc2lvbkNoYW5nZSgpIGNvbnN0OwogICAgIGJvb2wgaXNSZWFkT25seSgpIGNvbnN0Owog
CiAgICAgSURCRGF0YWJhc2VJbmZvKiBvcmlnaW5hbERhdGFiYXNlSW5mbygpIGNvbnN0OwogCi0g
ICAgdm9pZCBhYm9ydCgpOwotICAgIHZvaWQgYWJvcnRXaXRob3V0Q2FsbGJhY2soKTsKLSAgICB2
b2lkIGNvbW1pdCh1aW50NjRfdCBwZW5kaW5nUmVxdWVzdENvdW50KTsKLQotICAgIHZvaWQgY3Jl
YXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJPYmplY3RTdG9y
ZUluZm8mKTsKLSAgICB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRh
JiwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUpOwotICAgIHZvaWQgcmVuYW1lT2JqZWN0
U3RvcmUoY29uc3QgSURCUmVxdWVzdERhdGEmLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSk7Ci0gICAgdm9pZCBjbGVhck9iamVjdFN0b3JlKGNv
bnN0IElEQlJlcXVlc3REYXRhJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKLSAg
ICB2b2lkIGNyZWF0ZUluZGV4KGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCSW5kZXhJ
bmZvJik7Ci0gICAgdm9pZCBkZWxldGVJbmRleChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIHVpbnQ2
NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpbmRleE5hbWUpOwotICAg
IHZvaWQgcmVuYW1lSW5kZXgoY29uc3QgSURCUmVxdWVzdERhdGEmLCB1aW50NjRfdCBvYmplY3RT
dG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBu
ZXdOYW1lKTsKLSAgICB2b2lkIHB1dE9yQWRkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3Qg
SURCS2V5RGF0YSYsIGNvbnN0IElEQlZhbHVlJiwgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3
cml0ZU1vZGUpOwotICAgIHZvaWQgZ2V0UmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29u
c3QgSURCR2V0UmVjb3JkRGF0YSYpOwotICAgIHZvaWQgZ2V0QWxsUmVjb3Jkcyhjb25zdCBJREJS
ZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkdldEFsbFJlY29yZHNEYXRhJik7Ci0gICAgdm9pZCBnZXRD
b3VudChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYpOwotICAg
IHZvaWQgZGVsZXRlUmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5UmFu
Z2VEYXRhJik7Ci0gICAgdm9pZCBvcGVuQ3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29u
c3QgSURCQ3Vyc29ySW5mbyYpOwotICAgIHZvaWQgaXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXF1
ZXN0RGF0YSYsIGNvbnN0IElEQkl0ZXJhdGVDdXJzb3JEYXRhJik7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBhYm9ydCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWJvcnRXaXRob3V0Q2Fs
bGJhY2soKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbW1pdCh1aW50NjRfdCBwZW5kaW5n
UmVxdWVzdENvdW50KTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY3JlYXRlT2JqZWN0U3Rv
cmUoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3RE
YXRhJiwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgcmVuYW1lT2JqZWN0U3RvcmUoY29uc3QgSURCUmVxdWVzdERhdGEmLCB1aW50NjRfdCBv
YmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSk7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBjbGVhck9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgdWlu
dDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNy
ZWF0ZUluZGV4KGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCSW5kZXhJbmZvJik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkZWxldGVJbmRleChjb25zdCBJREJSZXF1ZXN0RGF0YSYs
IHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpbmRleE5hbWUp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVuYW1lSW5kZXgoY29uc3QgSURCUmVxdWVzdERh
dGEmLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHB1
dE9yQWRkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5RGF0YSYsIGNvbnN0IElE
QlZhbHVlJiwgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgZ2V0UmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURC
R2V0UmVjb3JkRGF0YSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0QWxsUmVjb3Jkcyhj
b25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkdldEFsbFJlY29yZHNEYXRhJik7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRDb3VudChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0
IElEQktleVJhbmdlRGF0YSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGVsZXRlUmVjb3Jk
KGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBvcGVuQ3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3Qg
SURCQ3Vyc29ySW5mbyYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaXRlcmF0ZUN1cnNvcihj
b25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkl0ZXJhdGVDdXJzb3JEYXRhJik7CiAKICAg
ICB2b2lkIGRpZEFjdGl2YXRlSW5CYWNraW5nU3RvcmUoY29uc3QgSURCRXJyb3ImKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkVycm9y
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3IuaApp
bmRleCBmZjE3Yzk4YTQxMTVkZTYyY2FjYzcwYWQzMjUyYmQ2ZWRmMTFmMzk5Li5iMzBhZDM5MTc2
ZjAzZmYwZDZjOTM5OGQ2YjNlZDE5Y2QyZTk5MjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3IuaApAQCAtNTIsNiArNTIsNyBAQCBw
dWJsaWM6CiAgICAgU3RyaW5nIG1lc3NhZ2UoKSBjb25zdDsKIAogICAgIGJvb2wgaXNOdWxsKCkg
Y29uc3QgeyByZXR1cm4gIW1fY29kZTsgfQorICAgIG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJl
dHVybiAhaXNOdWxsKCk7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIElEQkVycm9yIGlzb2xhdGVk
Q29weSgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5oCmluZGV4IDAxOGNiMTNlNzVlYjY0NWRkMTE0
ZTI0ZjZkYmZlYTM0Y2Y1NWIxNjQuLjAwMTc4N2E2NjU4YTQxNzhiNmE3OTcxMjhhMDRkYTM2Yjhh
ZmRmZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJl
ZC9JREJSZXF1ZXN0RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5oCkBAIC01Niw4ICs1Niw4IEBAIHB1YmxpYzoKICAgICBX
RUJDT1JFX0VYUE9SVCBJREJSZXF1ZXN0RGF0YSBpc29sYXRlZENvcHkoKSBjb25zdDsKIAogICAg
IElEQkNvbm5lY3Rpb25JZGVudGlmaWVyIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKCkgY29u
c3Q7Ci0gICAgSURCUmVzb3VyY2VJZGVudGlmaWVyIHJlcXVlc3RJZGVudGlmaWVyKCkgY29uc3Q7
Ci0gICAgSURCUmVzb3VyY2VJZGVudGlmaWVyIHRyYW5zYWN0aW9uSWRlbnRpZmllcigpIGNvbnN0
OworICAgIFdFQkNPUkVfRVhQT1JUIElEQlJlc291cmNlSWRlbnRpZmllciByZXF1ZXN0SWRlbnRp
ZmllcigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIElEQlJlc291cmNlSWRlbnRpZmllciB0
cmFuc2FjdGlvbklkZW50aWZpZXIoKSBjb25zdDsKICAgICB1aW50NjRfdCBvYmplY3RTdG9yZUlk
ZW50aWZpZXIoKSBjb25zdDsKICAgICB1aW50NjRfdCBpbmRleElkZW50aWZpZXIoKSBjb25zdDsK
ICAgICBJbmRleGVkREI6OkluZGV4UmVjb3JkVHlwZSBpbmRleFJlY29yZFR5cGUoKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJS
ZXNvdXJjZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3No
YXJlZC9JREJSZXNvdXJjZUlkZW50aWZpZXIuaAppbmRleCBiZTE2MTk3ZjYzNGE1OTZjMzllNTEz
MDI4NTkwNjgzNTc0NTg2ODJhLi5iZDM5NTRhMjg5NzNjZWI4YTViZjY0OGY0YWE1MTIzZjJlZmJl
ZjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQv
SURCUmVzb3VyY2VJZGVudGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2hhcmVkL0lEQlJlc291cmNlSWRlbnRpZmllci5oCkBAIC00OSw3ICs0OSw3IEBAIHB1
YmxpYzoKICAgICBJREJSZXNvdXJjZUlkZW50aWZpZXIoY29uc3QgSURCQ2xpZW50OjpJREJDb25u
ZWN0aW9uUHJveHkmLCBjb25zdCBJREJSZXF1ZXN0Jik7CiAgICAgZXhwbGljaXQgSURCUmVzb3Vy
Y2VJZGVudGlmaWVyKGNvbnN0IElEQlNlcnZlcjo6SURCQ29ubmVjdGlvblRvQ2xpZW50Jik7CiAK
LSAgICBzdGF0aWMgSURCUmVzb3VyY2VJZGVudGlmaWVyIGVtcHR5VmFsdWUoKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgSURCUmVzb3VyY2VJZGVudGlmaWVyIGVtcHR5VmFsdWUoKTsKICAg
ICBib29sIGlzRW1wdHkoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuICFtX3Jlc291cmNl
TnVtYmVyICYmICFtX2lkYkNvbm5lY3Rpb25JZGVudGlmaWVyOwpAQCAtNjAsNyArNjAsOCBAQCBw
dWJsaWM6CiAgICAgICAgIHVpbnQ2NF90IGhhc2hDb2Rlc1syXSA9IHsgbV9pZGJDb25uZWN0aW9u
SWRlbnRpZmllci50b1VJbnQ2NCgpLCBtX3Jlc291cmNlTnVtYmVyIH07CiAgICAgICAgIHJldHVy
biBTdHJpbmdIYXNoZXI6Omhhc2hNZW1vcnk8c2l6ZW9mKGhhc2hDb2Rlcyk+KGhhc2hDb2Rlcyk7
CiAgICAgfQotICAgIAorCisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IElEQlJlc291cmNlSWRl
bnRpZmllciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CiAgICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgb3RoZXIpIGNvbnN0
CiAgICAgewogICAgICAgICByZXR1cm4gbV9pZGJDb25uZWN0aW9uSWRlbnRpZmllciA9PSBvdGhl
ci5tX2lkYkNvbm5lY3Rpb25JZGVudGlmaWVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNTZhODY1MDRlMTZiMzAzMzM1Y2ZhOWYx
OGUxOTkwOWViMmE0NDUyMy4uMDkyMGRlNDA5ODBjODU1OTE0M2Y1MmQyMmY2ZTZhODJkM2M2NTM5
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMTU0NCwxMCArMTU0NCwxMCBAQAogCQk1MTEyM0UyRjI3Njk0MENBMDBGOUQ0MUIg
LyogTm90aWZpY2F0aW9uRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTExMjNFMkMyNzY5M0MzMjAwRjlENDFCIC8qIE5vdGlmaWNhdGlvbkRhdGEu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTE3
RjMwRTI1RTYxMDIwMDAyQTlGMUUgLyogUmVtb3RlQ29tbWFuZExpc3RlbmVyQ29jb2EuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMTdGMzBDMjVFNjEw
MUYwMDJBOUYxRSAvKiBSZW1vdGVDb21tYW5kTGlzdGVuZXJDb2NvYS5oICovOyB9OwogCQk1MTFF
QzEyODFDNTBBQUNBMDAzMkY5ODMgLyogSURCU2VyaWFsaXphdGlvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExRUMxMjYxQzUwQUE1NzAwMzJGOTgz
IC8qIElEQlNlcmlhbGl6YXRpb24uaCAqLzsgfTsKLQkJNTExRUMxMkMxQzUwQUJCRjAwMzJGOTgz
IC8qIFNRTGl0ZUlEQlRyYW5zYWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MTFFQzEyQTFDNTBBQkJBMDAzMkY5ODMgLyogU1FMaXRlSURCVHJh
bnNhY3Rpb24uaCAqLzsgfTsKKwkJNTExRUMxMkMxQzUwQUJCRjAwMzJGOTgzIC8qIFNRTGl0ZUlE
QlRyYW5zYWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTFFQzEyQTFDNTBBQkJBMDAzMkY5ODMgLyogU1FMaXRlSURCVHJhbnNhY3Rpb24uaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTFFQzEz
MDFDNTBBQkY1MDAzMkY5ODMgLyogU1FMaXRlSURCQ3Vyc29yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTFFQzEyRTFDNTBBQkVDMDAzMkY5ODMgLyog
U1FMaXRlSURCQ3Vyc29yLmggKi87IH07CiAJCTUxMjBCQkFGMUYxQ0VDRTcwMEVGRUJGMSAvKiBD
b29raWVTdG9yYWdlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxMjBCQkFEMUYxQ0U3NzAwMEVGRUJGMSAvKiBDb29raWVTdG9yYWdlT2Jz
ZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owot
CQk1MTJCREI0QjFDNDU2RkZBMDA2NDk0REYgLyogU1FMaXRlSURCQmFja2luZ1N0b3JlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTJCREI0OTFDNDU2
RkFCMDA2NDk0REYgLyogU1FMaXRlSURCQmFja2luZ1N0b3JlLmggKi87IH07CisJCTUxMkJEQjRC
MUM0NTZGRkEwMDY0OTRERiAvKiBTUUxpdGVJREJCYWNraW5nU3RvcmUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMkJEQjQ5MUM0NTZGQUIwMDY0OTRE
RiAvKiBTUUxpdGVJREJCYWNraW5nU3RvcmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTJERDhGNTBEOTFFNkFGMDAwRjg5RUUgLyogTGVnYWN5
V2ViQXJjaGl2ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTEyREQ4RUIwRDkxRTZBRjAwMEY4OUVFIC8qIExlZ2FjeVdlYkFyY2hpdmUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTJERDhGNjBEOTFF
NkFGMDAwRjg5RUUgLyogQXJjaGl2ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTEyREQ4RUMwRDkxRTZBRjAwMEY4OUVFIC8qIEFyY2hpdmUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTJERDhGODBE
OTFFNkFGMDAwRjg5RUUgLyogQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyREQ4RUUwRDkxRTZBRjAwMEY4
OUVFIC8qIEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24uaCAqLzsgfTsKQEAgLTE1OTMsNyArMTU5
Myw3IEBACiAJCTUxNkQ3RDcyMUJCNUYwQkQwMEFGN0M3NyAvKiBJREJDb25uZWN0aW9uVG9DbGll
bnREZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTE2RDdENkUxQkI1RjA2NTAwQUY3Qzc3IC8qIElEQkNvbm5lY3Rpb25Ub0NsaWVudERlbGVn
YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NTE2RjdGNkQxQzMxRTM5QTAwRjExMURDIC8qIFNlcnZlck9wZW5EQlJlcXVlc3QuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNkY3RjZDMUMzMUM3OUQw
MEYxMTFEQyAvKiBTZXJ2ZXJPcGVuREJSZXF1ZXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE3MTM4RjAxQkVEMUQxQTAwMEQ1RjAxIC8qIElu
ZGV4S2V5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTcxMzhFRTFCRUQxRDE3MDAwRDVGMDEgLyogSW5kZXhLZXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk1MTcxMzhGODFCRjEyOEJCMDAwRDVGMDEg
LyogSW5kZXhWYWx1ZVN0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTcxMzhGNjFCRjEyMjYyMDAwRDVGMDEgLyogSW5kZXhWYWx1ZVN0b3JlLmgg
Ki87IH07CisJCTUxNzEzOEY4MUJGMTI4QkIwMDBENUYwMSAvKiBJbmRleFZhbHVlU3RvcmUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNzEzOEY2MUJG
MTIyNjIwMDBENUYwMSAvKiBJbmRleFZhbHVlU3RvcmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTcxMzhGQzFCRjNBREY0MDAwRDVGMDEgLyog
SURCQ3Vyc29ySW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTE3MTM4RkExQkYzQURBQzAwMEQ1RjAxIC8qIElEQkN1cnNvckluZm8uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTcxMzkwNjFCRjY0
REVDMDAwRDVGMDEgLyogTWVtb3J5T2JqZWN0U3RvcmVDdXJzb3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNzEzOTA0MUJGNjRERTMwMDBENUYwMSAv
KiBNZW1vcnlPYmplY3RTdG9yZUN1cnNvci5oICovOyB9OwogCQk1MTcxMzkwODFCRjY0REVGMDAw
RDVGMDEgLyogTWVtb3J5Q3Vyc29yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTcxMzkwMjFCRjY0REUzMDAwRDVGMDEgLyogTWVtb3J5Q3Vyc29yLmgg
Ki87IH07CkBAIC0xNjY5LDcgKzE2NjksNyBAQAogCQk1MUI5MTQxMDFGRDI3ODJEMDBFRTI4NTkg
LyogUmVnaXN0cmF0aW9uRGF0YWJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxQjkxNDBDMUZEMjc4MjUwMEVFMjg1OSAvKiBSZWdpc3RyYXRpb25E
YXRhYmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTUxQjkxNDExMUZEMjc4MkQwMEVFMjg1OSAvKiBSZWdpc3RyYXRpb25TdG9yZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCOTE0MEIxRkQyNzgy
NTAwRUUyODU5IC8qIFJlZ2lzdHJhdGlvblN0b3JlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFCQTRBQzQxQkJCNUNEODAwREYzRDZEIC8qIElE
QkRhdGFiYXNlSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTFCQTRBQzIxQkJCNUNCRjAwREYzRDZEIC8qIElEQkRhdGFiYXNlSW5mby5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTUxQkE0QUNCMUJC
QzVCRDkwMERGM0Q2RCAvKiBNZW1vcnlJREJCYWNraW5nU3RvcmUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkE0QUM5MUJCQzVCOUUwMERGM0Q2RCAv
KiBNZW1vcnlJREJCYWNraW5nU3RvcmUuaCAqLzsgfTsKKwkJNTFCQTRBQ0IxQkJDNUJEOTAwREYz
RDZEIC8qIE1lbW9yeUlEQkJhY2tpbmdTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCQTRBQzkxQkJDNUI5RTAwREYzRDZEIC8qIE1lbW9yeUlE
QkJhY2tpbmdTdG9yZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTUxQkE0QUNDMUJCQzVCREQwMERGM0Q2RCAvKiBJREJCYWNraW5nU3RvcmUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkE0QUM3MUJC
QzVBRDYwMERGM0Q2RCAvKiBJREJCYWNraW5nU3RvcmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUJBOTQ3MTIzQUMzMDUzMDA0NDQ4NDYgLyog
UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxQkE5NDZGMjNBQzMwNTAwMDQ0NDg0NiAvKiBSdW5KYXZhU2NyaXB0
UGFyYW1ldGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTUxQkNDRTMwMUY4RjE3OUUwMDZCQTBFRCAvKiBTZXJ2aWNlV29ya2VyVGhyZWFkLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdDODcxMDFG
OEVFNzJFMDBFQjgwNzYgLyogU2VydmljZVdvcmtlclRocmVhZC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNjg1LDcgKzE2ODUsNyBAQAogCQk1
MUUwQkFCQjBEQTU1NDcxMDBBOUU0MTcgLyogU3RvcmFnZUV2ZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUwQkFCOTBEQTU1NDcxMDBBOUU0MTcg
LyogU3RvcmFnZUV2ZW50LmggKi87IH07CiAJCTUxRTBCQUVCMERBNTVENEEwMEE5RTQxNyAvKiBK
U1N0b3JhZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTFFMEJBRTkwREE1NUQ0QTAwQTlFNDE3IC8qIEpTU3RvcmFnZUV2ZW50LmggKi87IH07
CiAJCTUxRTBCQjM4MERBNUFDQjYwMEE5RTQxNyAvKiBTdG9yYWdlTWFwLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUwQkIzNjBEQTVBQ0I2MDBBOUU0
MTcgLyogU3RvcmFnZU1hcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07Ci0JCTUxRTFCQUMzMUJEODA2NEUwMDU1RDgxRiAvKiBNZW1vcnlCYWNraW5nU3Rv
cmVUcmFuc2FjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTFFMUJBQzExQkQ4MDY0NzAwNTVEODFGIC8qIE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5z
YWN0aW9uLmggKi87IH07CisJCTUxRTFCQUMzMUJEODA2NEUwMDU1RDgxRiAvKiBNZW1vcnlCYWNr
aW5nU3RvcmVUcmFuc2FjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTFFMUJBQzExQkQ4MDY0NzAwNTVEODFGIC8qIE1lbW9yeUJhY2tpbmdTdG9y
ZVRyYW5zYWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNTFFMjY5MzcxREQzQkQ5QjAwNkI2QTU4IC8qIElEQkl0ZXJhdGVDdXJzb3JEYXRh
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUyNjkz
NTFERDNCRDkxMDA2QjZBNTggLyogSURCSXRlcmF0ZUN1cnNvckRhdGEuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUUzOTkwMDFENkU0NzUwMDA5
Qzg4MzEgLyogR2FtZUNvbnRyb2xsZXJHYW1lcGFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUzOThGQzFENkU0NzRCMDA5Qzg4MzEgLyogR2FtZUNv
bnRyb2xsZXJHYW1lcGFkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNTFFMzk5MDIxRDZFNDc1MDAwOUM4ODMxIC8qIEdhbWVDb250cm9sbGVyR2Ft
ZXBhZFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MUUzOThGRTFENkU0NzRCMDA5Qzg4MzEgLyogR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJv
dmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpA
QCAtMTY5NSw3ICsxNjk1LDcgQEAKIAkJNTFFQ0MzRjgyMDA1ODdCRjAwNDgzRUFFIC8qIE1lc3Nh
Z2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MUVDQzNGMTIwMDU4N0I1MDA0ODNFQUUgLyogTWVzc2FnZVBvcnRDaGFu
bmVsUmVnaXN0cnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk1MUVDQzNGRDIwMDU5MzBEMDA0ODNFQUUgLyogTWVzc2FnZVBvcnRDaGFubmVsUHJv
dmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
RUNDM0ZCMjAwNTkzMDEwMDQ4M0VBRSAvKiBNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxRUU3QjM4
MUFBNTBCMDUwMEY5MkIyMSAvKiBSZXNvdXJjZUxvYWRJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUVFN0IzNzFBQTUwQjA1MDBGOTJCMjEgLyog
UmVzb3VyY2VMb2FkSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07Ci0JCTUxRUVBQTc0MUJFRkZBQjEwMDIxODAwOCAvKiBJbmRleFZhbHVlRW50cnku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRUVBQTcy
MUJFRkZBNzkwMDIxODAwOCAvKiBJbmRleFZhbHVlRW50cnkuaCAqLzsgfTsKKwkJNTFFRUFBNzQx
QkVGRkFCMTAwMjE4MDA4IC8qIEluZGV4VmFsdWVFbnRyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFRUFBNzIxQkVGRkE3OTAwMjE4MDA4IC8qIElu
ZGV4VmFsdWVFbnRyeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTUxRjE3NEZFMUYzNTg5OTIwMEM3NDk1MCAvKiBXb3JrZXJUeXBlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUYxNzRGQzFGMzU4OTg4
MDBDNzQ5NTAgLyogV29ya2VyVHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTUxRjE3NTAzMUYzNThCM0IwMEM3NDk1MCAvKiBKU1NlcnZpY2VX
b3JrZXJVcGRhdGVWaWFDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTFGMTc1MDExRjM1OEIzNjAwQzc0OTUwIC8qIEpTU2VydmljZVdvcmtlclVw
ZGF0ZVZpYUNhY2hlLmggKi87IH07CiAJCTUxRjE3NTA2MUYzNThCRjcwMEM3NDk1MCAvKiBKU1dv
cmtlclR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxRjE3NTA1MUYzNThCREUwMEM3NDk1MCAvKiBKU1dvcmtlclR5cGUuaCAqLzsgfTsKQEAgLTI5
OTUsNiArMjk5NSw3IEBACiAJCTkzQjJEODE2MEY5OTIwRDIwMDZBRTZCMiAvKiBTdWRkZW5UZXJt
aW5hdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTNCMkQ4MTUwRjk5MjBEMjAwNkFFNkIyIC8qIFN1ZGRlblRlcm1pbmF0aW9uLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNCMzhFQzMyNTgyMURC
NDAwMTk4RTYzIC8qIFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0IzOEVCQTI1ODIxOTNCMDAxOThFNjMgLyog
V2ViU3BlZWNoUmVjb2duaXplclRhc2suaCAqLzsgfTsKIAkJOTNCMzhFQzQyNTgyMURCNzAwMTk4
RTYzIC8qIFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jay5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCMzhFQkIyNTgyMTkzRDAwMTk4RTYzIC8qIFdl
YlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jay5oICovOyB9OworCQk5M0I2MzFFMjI3QUJBMUU2MDA0
NDNBNDQgLyogVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0I2MzFFMDI3QUJBMUUyMDA0NDNBNDQgLyogVW5p
cXVlSURCRGF0YWJhc2VNYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJOTNCNkEwRTYwQjBCQ0E1QzAwRjUwMjdBIC8qIENvbnRleHRNZW51
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0I2QTBF
NTBCMEJDQTVDMDBGNTAyN0EgLyogQ29udGV4dE1lbnUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0I3MEQ2NDA5RUIwQzdDMDA5RDg0NjggLyog
SlNET01CaW5kaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5M0I3MEQ0ODA5RUIwQzdDMDA5RDg0NjggLyogSlNET01CaW5kaW5nLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNCNzBENkEwOUVCMEM3
QzAwOUQ4NDY4IC8qIEpTRXZlbnRMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCNzBENEUwOUVCMEM3QzAwOUQ4NDY4IC8qIEpTRXZlbnRM
aXN0ZW5lci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CkBAIC0xMjgyOCw2ICsxMjgyOSw3IEBACiAJCTkzQjM4RUJBMjU4MjE5M0IwMDE5OEU2MyAvKiBX
ZWJTcGVlY2hSZWNvZ25pemVyVGFzay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJTcGVlY2hSZWNvZ25pemVyVGFzay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5M0IzOEVCQjI1ODIxOTNEMDAxOThFNjMgLyogV2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2Nr
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNwZWVjaFJlY29nbml6ZXJU
YXNrTW9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0IzOEVCQzI1ODIxOTNF
MDAxOThFNjMgLyogV2ViU3BlZWNoUmVjb2duaXplclRhc2subW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJTcGVlY2hSZWNvZ25pemVyVGFzay5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNCNjMxRTAyN0FCQTFFMjAwNDQzQTQ0IC8qIFVuaXF1
ZUlEQkRhdGFiYXNlTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBV
bmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OTNCNkEwRTUwQjBCQ0E1QzAwRjUwMjdBIC8qIENvbnRleHRNZW51LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDb250ZXh0TWVudS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5M0I3MEQ0ODA5RUIwQzdDMDA5RDg0NjggLyogSlNET01CaW5kaW5nLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RPTUJpbmRpbmcuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTNCNzBENEQwOUVCMEM3QzAwOUQ4NDY4IC8qIEpTRXZlbnRMaXN0
ZW5lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNFdmVudExp
c3RlbmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIyMTUxLDYgKzIyMTUz
LDcgQEAKIAkJCQk1MTg4NjRERjFCQkFGMzBGMDBFNTQwQzkgLyogVW5pcXVlSURCRGF0YWJhc2Uu
aCAqLywKIAkJCQk1MTk4RjdBMjFCQkRBQTI5MDBFMkNDNUYgLyogVW5pcXVlSURCRGF0YWJhc2VD
b25uZWN0aW9uLmNwcCAqLywKIAkJCQk1MTk4RjdBMzFCQkRBQTI5MDBFMkNDNUYgLyogVW5pcXVl
SURCRGF0YWJhc2VDb25uZWN0aW9uLmggKi8sCisJCQkJOTNCNjMxRTAyN0FCQTFFMjAwNDQzQTQ0
IC8qIFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlci5oICovLAogCQkJCTUxOThGN0E2MUJCREQzODEw
MEUyQ0M1RiAvKiBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcCAqLywKIAkJCQk1MTk4
RjdBNzFCQkREMzgxMDBFMkNDNUYgLyogVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5oICov
LAogCQkJKTsKQEAgLTM3NzcxLDYgKzM3Nzc0LDcgQEAKIAkJCQlBODYzRTIwMTEzNDM0MTIwMDAy
NzQ5MjYgLyogVW5pY29kZUJpZGkuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxODg2NEUxMUJCQUY1
NzQwMEU1NDBDOSAvKiBVbmlxdWVJREJEYXRhYmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE5
OEY3QTUxQkJEQjc5MzAwRTJDQzVGIC8qIFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJOTNCNjMxRTIyN0FCQTFFNjAwNDQzQTQ0IC8qIFVuaXF1ZUlEQkRh
dGFiYXNlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE5OEY3QTkxQkJERDM4NTAwRTJD
QzVGIC8qIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJ
CUU0QUZDRkE1MERBRjI5QTMwMEY1RjU1QyAvKiBVbml0QmV6aWVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlDMThDQzBBNDI1ODBFRkIxMDAzRDc1RkIgLyogVW5pdmVyc2FsQWNjZXNzWm9vbS5oIGlu
IEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IGM3YjE3ZmQ3MDc4
NTRiMTI4NDk4ZDExMThmNGU2ZTdkNWIzZDg1ZmQuLjI4N2MxYmY3NDhjODNjNmMxZTZjNzJiYTEy
OGM0ZDBhMWM2NjEyMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC01MiwxMyAr
NTIsMTMgQEAKICNpbmNsdWRlICJOZXR3b3JrU29ja2V0Q2hhbm5lbE1lc3NhZ2VzLmgiCiAjaW5j
bHVkZSAiTmV0d29ya1NvY2tldFN0cmVhbS5oIgogI2luY2x1ZGUgIk5ldHdvcmtTb2NrZXRTdHJl
YW1NZXNzYWdlcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtTdG9yYWdlTWFuYWdlci5oIgogI2luY2x1
ZGUgIlBpbmdMb2FkLmgiCiAjaW5jbHVkZSAiUHJlY29ubmVjdFRhc2suaCIKICNpbmNsdWRlICJS
VENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2tNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5o
IgogI2luY2x1ZGUgIldlYkVycm9ycy5oIgotI2luY2x1ZGUgIldlYklEQlNlcnZlci5oIgogI2lu
Y2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sTWVz
c2FnZXMuaCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCIKQEAg
LTQwOCw4ICs0MDgsMTIgQEAgYm9vbCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlk
UmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmUKIAogdm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6dXBkYXRlUXVvdGFCYXNlZE9uU3BhY2VVc2FnZUZvclRl
c3RpbmcoY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4pCiB7Ci0gICAgYXV0byBzdG9yYWdlUXVv
dGFNYW5hZ2VyID0gbV9uZXR3b3JrUHJvY2Vzcy0+c3RvcmFnZVF1b3RhTWFuYWdlcihzZXNzaW9u
SUQoKSwgb3JpZ2luKTsKLSAgICBzdG9yYWdlUXVvdGFNYW5hZ2VyLT5yZXNldFF1b3RhVXBkYXRl
ZEJhc2VkT25Vc2FnZUZvclRlc3RpbmcoKTsKKyAgICBhdXRvKiBzZXNzaW9uID0gbV9uZXR3b3Jr
UHJvY2Vzcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKCkpOworICAgIGlmICghc2Vzc2lvbikK
KyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGF1dG8qIHN0b3JhZ2VNYW5hZ2VyID0gc2Vzc2lv
bi0+c3RvcmFnZU1hbmFnZXIoKSkKKyAgICAgICAgc3RvcmFnZU1hbmFnZXItPnJlc2V0UXVvdGFV
cGRhdGVkQmFzZWRPblVzYWdlRm9yVGVzdGluZyhvcmlnaW4pOwogfQogCiB2b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24pCkBAIC0xMDAxLDggKzEwMDUsMTAgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXNGb3JJbmRleGVkREIoY29uc3QKICAgICAg
ICAgZm9yIChhdXRvJiBmaWxlIDogZmlsZVJlZmVyZW5jZXMpCiAgICAgICAgICAgICBmaWxlLT5y
ZXZva2VGaWxlQWNjZXNzKCk7CiAKLSAgICAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3Jr
U2Vzc2lvbigpKQotICAgICAgICAgICAgc2Vzc2lvbi0+ZW5zdXJlV2ViSURCU2VydmVyKCkucmVn
aXN0ZXJUZW1wb3JhcnlCbG9iRmlsZVBhdGhzKG1fY29ubmVjdGlvbiwgZmlsZVBhdGhzKTsKKyAg
ICAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpKSB7CisgICAgICAgICAg
ICBpZiAoYXV0byogc3RvcmFnZU1hbmFnZXIgPSBzZXNzaW9uLT5zdG9yYWdlTWFuYWdlcigpKQor
ICAgICAgICAgICAgICAgIHN0b3JhZ2VNYW5hZ2VyLT5yZWdpc3RlclRlbXBvcmFyeUJsb2JGaWxl
UGF0aHMobV9jb25uZWN0aW9uLCBmaWxlUGF0aHMpOworICAgICAgICB9CiAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFdURk1vdmUoZmlsZVBhdGhzKSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDdjNzllMmEy
MDk3NmExMzljN2Y2NjdmMTEzYzQ4OTQ2ZGVkZDU2NDEuLjE3NWJkMzgxNjQ3NDkxNmNjMDExNWM5
ZDhmZjJjNTg2YmQwZTMxZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0yNjQsOCArMjY0LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
czo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikKICAgICAvLyBNYWtlIHN1cmUgd2UgZmx1c2gg
YWxsIGNvb2tpZXMgdG8gZGlzayBiZWZvcmUgZXhpdGluZy4KICAgICBmb3JFYWNoTmV0d29ya1Nl
c3Npb24oWyZdIChhdXRvJiBzZXNzaW9uKSB7CiAgICAgICAgIHBsYXRmb3JtRmx1c2hDb29raWVz
KHNlc3Npb24uc2Vzc2lvbklEKCksIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7Ci0gICAgICAg
IC8vIE1ha2Ugc3VyZSByZWZlcmVuY2UgdG8gTmV0d29ya1Byb2Nlc3MgaW4gc3BhY2VSZXF1ZXN0
ZXIgaXMgcmVtb3ZlZC4KLSAgICAgICAgc2Vzc2lvbi5jbG9zZUlEQlNlcnZlcihbY2FsbGJhY2tB
Z2dyZWdhdG9yXSB7IH0pOwogICAgIH0pOwogfQogCkBAIC0zODIsNyArMzgwLDYgQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoUHJvY2Vz
c0lkZW50aWZpZXIgaWRlbnQKICAgICBjb25uZWN0aW9uLnNldE9uTGluZVN0YXRlKE5ldHdvcmtT
dGF0ZU5vdGlmaWVyOjpzaW5nbGV0b24oKS5vbkxpbmUoKSk7CiAKICAgICBpZiAoYXV0byogc2Vz
c2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKLSAgICAgICAgc2Vzc2lvbi0+ZW5z
dXJlV2ViSURCU2VydmVyKCkuYWRkQ29ubmVjdGlvbihjb25uZWN0aW9uLmNvbm5lY3Rpb24oKSwg
aWRlbnRpZmllcik7CiAgICAgICAgIGlmIChhdXRvKiBtYW5hZ2VyID0gc2Vzc2lvbi0+c3RvcmFn
ZU1hbmFnZXIoKSkKICAgICAgICAgICAgIG1hbmFnZXItPnN0YXJ0UmVjZWl2aW5nTWVzc2FnZUZy
b21Db25uZWN0aW9uKGNvbm5lY3Rpb24uY29ubmVjdGlvbigpKTsKICAgICB9CkBAIC00MDYsOCAr
NDAzLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6YWRkV2Vic2l0ZURhdGFTdG9yZShXZWJzaXRl
RGF0YVN0b3JlUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMKICAgICBhZGRTZXNzaW9uU3RvcmFnZVF1
b3RhTWFuYWdlcihzZXNzaW9uSUQsIHBhcmFtZXRlcnMucGVyT3JpZ2luU3RvcmFnZVF1b3RhLCBw
YXJhbWV0ZXJzLnBlclRoaXJkUGFydHlPcmlnaW5TdG9yYWdlUXVvdGEsIHBhcmFtZXRlcnMuY2Fj
aGVTdG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmNhY2hlU3RvcmFnZURpcmVjdG9yeUV4dGVu
c2lvbkhhbmRsZSk7CiAKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNl
c3Npb25JRCkpIHsKLSAgICAgICAgc2Vzc2lvbi0+YWRkU3RvcmFnZU1hbmFnZXJTZXNzaW9uKHBh
cmFtZXRlcnMuZ2VuZXJhbFN0b3JhZ2VEaXJlY3RvcnksIHBhcmFtZXRlcnMuZ2VuZXJhbFN0b3Jh
Z2VEaXJlY3RvcnlIYW5kbGUsIHBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5LCBwYXJh
bWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7Ci0gICAgICAgIHNl
c3Npb24tPmFkZEluZGV4ZWREYXRhYmFzZVNlc3Npb24ocGFyYW1ldGVycy5pbmRleGVkRGF0YWJh
c2VEaXJlY3RvcnksIHBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5RXh0ZW5zaW9u
SGFuZGxlKTsKKyAgICAgICAgc2Vzc2lvbi0+YWRkU3RvcmFnZU1hbmFnZXJTZXNzaW9uKHBhcmFt
ZXRlcnMuZ2VuZXJhbFN0b3JhZ2VEaXJlY3RvcnksIHBhcmFtZXRlcnMuZ2VuZXJhbFN0b3JhZ2VE
aXJlY3RvcnlIYW5kbGUsIHBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0
ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSwgcGFyYW1ldGVycy5pbmRl
eGVkRGF0YWJhc2VEaXJlY3RvcnksIHBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5
RXh0ZW5zaW9uSGFuZGxlLCBwYXJhbWV0ZXJzLmNhY2hlU3RvcmFnZURpcmVjdG9yeSwgcGFyYW1l
dGVycy5wZXJPcmlnaW5TdG9yYWdlUXVvdGEsIHBhcmFtZXRlcnMucGVyVGhpcmRQYXJ0eU9yaWdp
blN0b3JhZ2VRdW90YSk7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgICAgICBzZXNz
aW9uLT5hZGRTZXJ2aWNlV29ya2VyU2Vzc2lvbihwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJQcm9j
ZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQsIFdURk1vdmUocGFyYW1ldGVycy5zZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KSwgcGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKICNlbmRpZgpAQCAtMTQ1MiwxMyArMTQ0
OCw2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmZldGNoV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0CiAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRv
ci0+bV93ZWJzaXRlRGF0YS5ob3N0TmFtZXNXaXRoSFNUU0NhY2hlID0gaG9zdE5hbWVzV2l0aEhT
VFNDYWNoZShzZXNzaW9uSUQpOwogI2VuZGlmCiAKLSAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5j
b250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykgJiYgc2Vzc2lvbiAm
JiBzZXNzaW9uLT5oYXNJREJEYXRhYmFzZVBhdGgoKSkgewotICAgICAgICBzZXNzaW9uLT5lbnN1
cmVXZWJJREJTZXJ2ZXIoKS5nZXRPcmlnaW5zKFtjYWxsYmFja0FnZ3JlZ2F0b3JdKGF1dG8mJiBv
cmlnaW5zKSB7Ci0gICAgICAgICAgICB3aGlsZSAoIW9yaWdpbnMuaXNFbXB0eSgpKQotICAgICAg
ICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVu
ZCh7IG9yaWdpbnMudGFrZUFueSgpLCBXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNl
cywgMCB9KTsKLSAgICAgICAgfSk7Ci0gICAgfQotCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6U2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbnMpICYmIHNlc3Npb24gJiYgc2Vzc2lvbi0+aGFzU2Vydmlj
ZVdvcmtlckRhdGFiYXNlUGF0aCgpKSB7CiAgICAgICAgIHNlc3Npb24tPmVuc3VyZVNXU2VydmVy
KCkuZ2V0T3JpZ2luc1dpdGhSZWdpc3RyYXRpb25zKFtjYWxsYmFja0FnZ3JlZ2F0b3JdKGNvbnN0
IEhhc2hTZXQ8U2VjdXJpdHlPcmlnaW5EYXRhPiYgc2VjdXJpdHlPcmlnaW5zKSBtdXRhYmxlIHsK
QEAgLTE1MjUsOSArMTUxNCw2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVE
YXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpCiAgICAgaWYgKHdl
YnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSkgJiYgc2Vz
c2lvbikKICAgICAgICAgQ2FjaGVTdG9yYWdlOjpFbmdpbmU6OmNsZWFyQWxsQ2FjaGVzKCpzZXNz
aW9uLCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CiAKLSAgICBpZiAod2Vic2l0ZURhdGFUeXBl
cy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykgJiYgIXNlc3Np
b25JRC5pc0VwaGVtZXJhbCgpICYmIHNlc3Npb24pCi0gICAgICAgIHNlc3Npb24tPmVuc3VyZVdl
YklEQlNlcnZlcigpLmNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzTW9kaWZpZWRTaW5jZShtb2RpZmll
ZFNpbmNlLCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7Ci0KICNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCiAgICAgYm9vbCBjbGVhclNlcnZpY2VXb3JrZXJzID0gd2Vic2l0ZURhdGFUeXBlcy5j
b250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkRPTUNhY2hlKSB8fCB3ZWJzaXRlRGF0YVR5cGVzLmNv
bnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMpOwogICAg
IGlmIChjbGVhclNlcnZpY2VXb3JrZXJzICYmICFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSAmJiBz
ZXNzaW9uKQpAQCAtMTYyMCw5ICsxNjA2LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRl
V2Vic2l0ZURhdGFGb3JPcmlnaW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW8KICAg
ICAgICAgICAgIENhY2hlU3RvcmFnZTo6RW5naW5lOjpjbGVhckNhY2hlc0Zvck9yaWdpbigqc2Vz
c2lvbiwgU2VjdXJpdHlPcmlnaW5EYXRhIHsgb3JpZ2luRGF0YSB9LCBbY2xlYXJUYXNrc0hhbmRs
ZXJdIHsgfSk7CiAgICAgfQogCi0gICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vi
c2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpICYmICFzZXNzaW9uSUQuaXNFcGhlbWVy
YWwoKSAmJiBzZXNzaW9uKQotICAgICAgICBzZXNzaW9uLT5lbnN1cmVXZWJJREJTZXJ2ZXIoKS5j
bG9zZUFuZERlbGV0ZURhdGFiYXNlc0Zvck9yaWdpbnMob3JpZ2luRGF0YXMsIFtjbGVhclRhc2tz
SGFuZGxlcl0geyB9KTsKLQogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBib29sIGNs
ZWFyU2VydmljZVdvcmtlcnMgPSB3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRh
VHlwZTo6RE9NQ2FjaGUpIHx8IHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFU
eXBlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucyk7CiAgICAgaWYgKGNsZWFyU2VydmljZVdv
cmtlcnMgJiYgIXNlc3Npb25JRC5pc0VwaGVtZXJhbCgpICYmIHNlc3Npb24pIHsKQEAgLTE4MTEs
MTcgKzE3OTQsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVBbmRSZXN0cmljdFdlYnNp
dGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKFBBTDo6U2VzcwogICAgICAgICAgICAgfQogICAg
ICAgICB9KTsKICAgICB9Ci0KLSAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJz
aXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykgJiYgc2Vzc2lvbiAmJiBzZXNzaW9uLT5o
YXNJREJEYXRhYmFzZVBhdGgoKSkgewotICAgICAgICBzZXNzaW9uLT5lbnN1cmVXZWJJREJTZXJ2
ZXIoKS5nZXRPcmlnaW5zKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgc2Vz
c2lvbklELCBjYWxsYmFja0FnZ3JlZ2F0b3IsIGRvbWFpbnNUb0RlbGV0ZUFsbE5vbkNvb2tpZVdl
YnNpdGVEYXRhRm9yXShhdXRvJiYgb3JpZ2lucykgewotICAgICAgICAgICAgYXV0byogc2Vzc2lv
biA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7Ci0gICAgICAgICAgICBpZiAoIXNlc3Npb24g
fHwgIXNlc3Npb24tPndlYklEQlNlcnZlcigpKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICAgICAgYXV0byBvcmlnaW5zVG9EZWxldGUgPSBmaWx0ZXJGb3JSZWdpc3RyYWJsZURv
bWFpbnMob3JpZ2lucywgZG9tYWluc1RvRGVsZXRlQWxsTm9uQ29va2llV2Vic2l0ZURhdGFGb3Is
IGNhbGxiYWNrQWdncmVnYXRvci0+bV9kb21haW5zKTsKLSAgICAgICAgICAgIHNlc3Npb24tPndl
YklEQlNlcnZlcigpLT5jbG9zZUFuZERlbGV0ZURhdGFiYXNlc0Zvck9yaWdpbnMob3JpZ2luc1Rv
RGVsZXRlLCBbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwotICAgICAgICB9KTsKLSAgICB9CiAg
ICAgCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGJvb2wgY2xlYXJTZXJ2aWNlV29y
a2VycyA9IHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpET01DYWNo
ZSkgfHwgd2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25zKTsKQEAgLTE5NTgsMTMgKzE5MzAsNiBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpyZWdpc3RyYWJsZURvbWFpbnNXaXRoV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELAogICAgICAgICB9KTsKICAgICB9CiAgICAgCi0gICAgaWYgKHdlYnNpdGVEYXRh
VHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpICYmIHNl
c3Npb24gJiYgc2Vzc2lvbi0+aGFzSURCRGF0YWJhc2VQYXRoKCkpIHsKLSAgICAgICAgc2Vzc2lv
bi0+ZW5zdXJlV2ViSURCU2VydmVyKCkuZ2V0T3JpZ2lucyhbY2FsbGJhY2tBZ2dyZWdhdG9yXShh
dXRvJiYgb3JpZ2lucykgewotICAgICAgICAgICAgd2hpbGUgKCFvcmlnaW5zLmlzRW1wdHkoKSkK
LSAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fd2Vic2l0ZURhdGEuZW50cmll
cy5hcHBlbmQoeyBvcmlnaW5zLnRha2VBbnkoKSwgV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJE
YXRhYmFzZXMsIDAgfSk7Ci0gICAgICAgIH0pOwotICAgIH0KLSAgICAKICNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURh
dGFUeXBlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucykgJiYgc2Vzc2lvbiAmJiBzZXNzaW9u
LT5oYXNTZXJ2aWNlV29ya2VyRGF0YWJhc2VQYXRoKCkpIHsKICAgICAgICAgc2Vzc2lvbi0+ZW5z
dXJlU1dTZXJ2ZXIoKS5nZXRPcmlnaW5zV2l0aFJlZ2lzdHJhdGlvbnMoW2NhbGxiYWNrQWdncmVn
YXRvcl0oY29uc3QgSGFzaFNldDxTZWN1cml0eU9yaWdpbkRhdGE+JiBzZWN1cml0eU9yaWdpbnMp
IG11dGFibGUgewpAQCAtMjEyOSw0MyArMjA5NCwxMCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpw
cm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5Rm9yVGVzdGluZ1N5bmMoQ29tcGxldGlvbkhhbmRs
ZQogICAgIHByZXBhcmVUb1N1c3BlbmQodHJ1ZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpzdXNwZW5kSURCU2VydmVycyhib29sIGlzU3Vz
cGVuc2lvbkltbWluZW50KQotewotICAgIG1fc2hvdWxkU3VzcGVuZElEQlNlcnZlcnMgPSB0cnVl
OwotICAgICsrbV9zdXNwZW5zaW9uSWRlbnRpZmllcjsKLQotICAgIGJvb2wgYWxsU3VzcGVuZGVk
ID0gdHJ1ZTsKLSAgICBhdXRvIGNvbmRpdGlvbiA9IGlzU3VzcGVuc2lvbkltbWluZW50ID8gV2Vi
SURCU2VydmVyOjpTdXNwZW5zaW9uQ29uZGl0aW9uOjpBbHdheXMgOiBXZWJJREJTZXJ2ZXI6OlN1
c3BlbnNpb25Db25kaXRpb246OklmSWRsZTsKLSAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oWyZd
KGF1dG8mIHNlc3Npb24pIHsKLSAgICAgICAgaWYgKGF1dG8qIHNlcnZlciA9IHNlc3Npb24ud2Vi
SURCU2VydmVyKCkpCi0gICAgICAgICAgICBhbGxTdXNwZW5kZWQgJj0gc2VydmVyLT5zdXNwZW5k
KGNvbmRpdGlvbik7Ci0gICAgfSk7Ci0KLSAgICBpZiAoYWxsU3VzcGVuZGVkKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2hBZnRlcig1X3MsIFt0aGlzLCB3
ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBzdXNwZW5zaW9uSWRlbnRpZmllciA9IG1fc3Vz
cGVuc2lvbklkZW50aWZpZXJdIHsKLSAgICAgICAgaWYgKCF3ZWFrVGhpcykKLSAgICAgICAgICAg
IHJldHVybjsKLQotICAgICAgICBpZiAoIW1fc2hvdWxkU3VzcGVuZElEQlNlcnZlcnMgfHwgc3Vz
cGVuc2lvbklkZW50aWZpZXIgIT0gbV9zdXNwZW5zaW9uSWRlbnRpZmllcikKLSAgICAgICAgICAg
IHJldHVybjsKLQotICAgICAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oW10oYXV0byYgc2Vzc2lv
bikgewotICAgICAgICAgICAgaWYgKGF1dG8qIHNlcnZlciA9IHNlc3Npb24ud2ViSURCU2VydmVy
KCkpCi0gICAgICAgICAgICAgICAgc2VydmVyLT5zdXNwZW5kKFdlYklEQlNlcnZlcjo6U3VzcGVu
c2lvbkNvbmRpdGlvbjo6QWx3YXlzKTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci19Ci0KIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OnByZXBhcmVUb1N1c3BlbmQoYm9vbCBpc1N1c3BlbnNpb25JbW1pbmVu
dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBOZXR3b3JrUHJvY2Vzczo6cHJl
cGFyZVRvU3VzcGVuZCgpLCBpc1N1c3BlbnNpb25JbW1pbmVudD0lZCIsIHRoaXMsIGlzU3VzcGVu
c2lvbkltbWluZW50KTsKIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgc3VzcGVuZElE
QlNlcnZlcnMoaXNTdXNwZW5zaW9uSW1taW5lbnQpOwotI2VuZGlmCi0KICAgICBsb3dNZW1vcnlI
YW5kbGVyKENyaXRpY2FsOjpZZXMpOwogCiAgICAgUmVmUHRyPENhbGxiYWNrQWdncmVnYXRvcj4g
Y2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoW3RoaXMsIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7
CkBAIC0yMjIzLDE4ICsyMTU1LDEwIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlc3VtZSgpCiAj
aWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgICAgICBpZiAoYXV0byogc3dTZXJ2ZXIgPSBz
ZXNzaW9uLnN3U2VydmVyKCkpCiAgICAgICAgICAgICBzd1NlcnZlci0+ZW5kU3VzcGVuc2lvbigp
OwotI2VuZGlmCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAgICAgaWYgKGF1dG8qIHNl
cnZlciA9IHNlc3Npb24ud2ViSURCU2VydmVyKCkpCi0gICAgICAgICAgICBzZXJ2ZXItPnJlc3Vt
ZSgpOwogI2VuZGlmCiAgICAgICAgIGlmIChhdXRvKiBtYW5hZ2VyID0gc2Vzc2lvbi5zdG9yYWdl
TWFuYWdlcigpKQogICAgICAgICAgICAgbWFuYWdlci0+cmVzdW1lKCk7CiAgICAgfSk7Ci0KLSNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIG1fc2hvdWxkU3VzcGVuZElEQlNlcnZlcnMgPSBm
YWxzZTsKLSNlbmRpZgogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwcmVmZXRjaEROUyhjb25z
dCBTdHJpbmcmIGhvc3RuYW1lKQpAQCAtMjI4MSwxMiArMjIwNSwxNSBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpzeW5jTG9jYWxTdG9yYWdlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZAogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZXNldFF1b3RhKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewotICAgIExvY2tlciBsb2NrZXIgeyBtX3Nlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2Vy
c0xvY2sgfTsKLSAgICBpZiAoYXV0byogc2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXIgPSBtX3Nl
c3Npb25TdG9yYWdlUXVvdGFNYW5hZ2Vycy5nZXQoc2Vzc2lvbklEKSkgewotICAgICAgICBmb3Ig
KGF1dG8gc3RvcmFnZVF1b3RhTWFuYWdlciA6IHNlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2VyLT5l
eGlzdGluZ1N0b3JhZ2VRdW90YU1hbmFnZXJzKCkpCi0gICAgICAgICAgICBzdG9yYWdlUXVvdGFN
YW5hZ2VyLT5yZXNldFF1b3RhRm9yVGVzdGluZygpOwotICAgIH0KLSAgICBjb21wbGV0aW9uSGFu
ZGxlcigpOworICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOwor
ICAgIGlmICghc2Vzc2lvbikKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKCk7CisK
KyAgICBhdXRvKiBzdG9yYWdlTWFuYWdlciA9IHNlc3Npb24tPnN0b3JhZ2VNYW5hZ2VyKCk7Cisg
ICAgaWYgKCFzdG9yYWdlTWFuYWdlcikKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVy
KCk7CisKKyAgICBzdG9yYWdlTWFuYWdlci0+cmVzZXRRdW90YUZvclRlc3RpbmcoV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVhclN0b3Jh
Z2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCkBAIC0yMjk4LDYgKzIyMjUsMTYgQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6Y2xlYXJTdG9yYWdlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm8KICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAordm9pZCBOZXR3b3Jr
UHJvY2Vzczo6ZGlkSW5jcmVhc2VRdW90YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IENsaWVudE9yaWdpbiYgb3JpZ2luLCBRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIgaWRl
bnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbmV3UXVvdGEpCit7CisgICAgYXV0byog
c2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7CisgICAgaWYgKCFzZXNzaW9uKQor
ICAgICAgICByZXR1cm47CisKKyAgICBpZiAoYXV0byogbWFuYWdlciA9IHNlc3Npb24tPnN0b3Jh
Z2VNYW5hZ2VyKCkpCisgICAgICAgIG1hbmFnZXItPmRpZEluY3JlYXNlUXVvdGEob3JpZ2luLCBp
ZGVudGlmaWVyLCBuZXdRdW90YSk7Cit9CisKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlbmFtZU9y
aWdpbkluV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIG9s
ZE5hbWUsIGNvbnN0IFVSTCYgbmV3TmFtZSwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0
YVR5cGVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgYXV0byBhZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOwpAQCAtMjMxMCw5ICsyMjQ3LDYgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6cmVuYW1lT3JpZ2luSW5XZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFUKICAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklE
KTsKICAgICBpZiAoYXV0byogbWFuYWdlciA9IHNlc3Npb24gPyBzZXNzaW9uLT5zdG9yYWdlTWFu
YWdlcigpIDogbnVsbHB0cikKICAgICAgICAgbWFuYWdlci0+bW92ZURhdGEob2xkT3JpZ2luLCBu
ZXdPcmlnaW4sIFthZ2dyZWdhdG9yXSB7IH0pOwotCi0gICAgaWYgKGRhdGFUeXBlcy5jb250YWlu
cyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykgJiYgc2Vzc2lvbiAmJiBzZXNz
aW9uLT5oYXNJREJEYXRhYmFzZVBhdGgoKSkKLSAgICAgICAgc2Vzc2lvbi0+ZW5zdXJlV2ViSURC
U2VydmVyKCkucmVuYW1lT3JpZ2luKG9sZE9yaWdpbiwgbmV3T3JpZ2luLCBbYWdncmVnYXRvcl0g
eyB9KTsKIH0KIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKQEAgLTIzNzIsNyArMjMwNiw4
IEBAIFJlZlB0cjxTdG9yYWdlUXVvdGFNYW5hZ2VyPiBOZXR3b3JrUHJvY2Vzczo6c3RvcmFnZVF1
b3RhTWFuYWdlcihQQUw6OlNlc3Npb25JRCBzCiAgICAgU3RvcmFnZVF1b3RhTWFuYWdlcjo6VXNh
Z2VHZXR0ZXIgdXNhZ2VHZXR0ZXIgPSBbY2FjaGVSb290UGF0aCA9IHNlc3Npb25TdG9yYWdlUXVv
dGFNYW5hZ2VyLT5jYWNoZVJvb3RQYXRoKCkuaXNvbGF0ZWRDb3B5KCksIGlkYlJvb3RQYXRoID0g
aWRiUm9vdFBhdGguaXNvbGF0ZWRDb3B5KCksIG9yaWdpbiA9IG9yaWdpbi5pc29sYXRlZENvcHko
KV0oKSB7CiAgICAgICAgIEFTU0VSVCghaXNNYWluUnVuTG9vcCgpKTsKIAotICAgICAgICByZXR1
cm4gQ2FjaGVTdG9yYWdlOjpFbmdpbmU6OmRpc2tVc2FnZShjYWNoZVJvb3RQYXRoLCBvcmlnaW4p
ICsgSURCU2VydmVyOjpJREJTZXJ2ZXI6OmRpc2tVc2FnZShpZGJSb290UGF0aCwgb3JpZ2luKTsK
KyAgICAgICAgYXV0byBjYWNoZVN0b3JhZ2VQYXRoID0gQ2FjaGVTdG9yYWdlOjpFbmdpbmU6OnN0
b3JhZ2VQYXRoKGNhY2hlUm9vdFBhdGgsIG9yaWdpbik7CisgICAgICAgIHJldHVybiBDYWNoZVN0
b3JhZ2U6OkVuZ2luZTo6ZGlza1VzYWdlKGNhY2hlU3RvcmFnZVBhdGgpICsgSURCU2VydmVyOjpJ
REJTZXJ2ZXI6OmRpc2tVc2FnZShpZGJSb290UGF0aCwgb3JpZ2luKTsKICAgICB9OwogICAgIFN0
b3JhZ2VRdW90YU1hbmFnZXI6OlF1b3RhSW5jcmVhc2VSZXF1ZXN0ZXIgcXVvdGFJbmNyZWFzZVJl
cXVlc3RlciA9IFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBzZXNzaW9uSUQs
IG9yaWdpbl0gKHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgY3VycmVudFNwYWNlLCB1
aW50NjRfdCByZXF1ZXN0ZWRJbmNyZWFzZSwgYXV0byYmIGNhbGxiYWNrKSB7CiAgICAgICAgIEFT
U0VSVChpc01haW5SdW5Mb29wKCkpOwpAQCAtMjU4Niw4ICsyNTIxLDYgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6cmVtb3ZlS2VwdEFsaXZlTG9hZChOZXR3b3JrUmVzb3VyY2VMb2FkZXImIGxvYWRl
cikKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NDbG9zZWQoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7CiAg
ICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAg
ICAgIGlmIChhdXRvKiBzZXJ2ZXIgPSBzZXNzaW9uLT53ZWJJREJTZXJ2ZXIoKSkKLSAgICAgICAg
ICAgIHNlcnZlci0+cmVtb3ZlQ29ubmVjdGlvbihjb25uZWN0aW9uKTsKICAgICAgICAgaWYgKGF1
dG8qIG1hbmFnZXIgPSBzZXNzaW9uLT5zdG9yYWdlTWFuYWdlcigpKQogICAgICAgICAgICAgbWFu
YWdlci0+c3RvcFJlY2VpdmluZ01lc3NhZ2VGcm9tQ29ubmVjdGlvbihjb25uZWN0aW9uKTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5k
ZXggNzg3NzkyN2ExN2M1NTk2ZWIwM2JkNGFjZjRkNThlNDE4YWM4YmEyMy4uMGY4NTMzZWQxM2Rk
MjYyNzdhNmRkNTJhYjZkYWJlMjBjM2UwODgwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkxv
Y2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtDb250ZW50UnVs
ZUxpc3RNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIu
aCIKKyNpbmNsdWRlICJRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIuaCIKICNpbmNsdWRl
ICJSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIlNhbmRib3hF
eHRlbnNpb24uaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlJZGVudGlmaWVyLmgiCkBAIC0yODgs
MTIgKzI4OSwxMSBAQCBwdWJsaWM6CiAgICAgTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIm
IG5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyKCkgeyByZXR1cm4gbV9uZXR3b3JrQ29udGVu
dFJ1bGVMaXN0TWFuYWdlcjsgfQogI2VuZGlmCiAKLSAgICBib29sIHNob3VsZFN1c3BlbmRJREJT
ZXJ2ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRTdXNwZW5kSURCU2VydmVyczsgfQotCiAg
ICAgdm9pZCBzeW5jTG9jYWxTdG9yYWdlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAK
ICAgICB2b2lkIHJlc2V0UXVvdGEoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CiAgICAgdm9pZCBjbGVhclN0b3JhZ2UoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBkaWRJbmNyZWFzZVF1b3RhKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBRdW90YUluY3JlYXNlUmVxdWVz
dElkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IG5ld1F1b3RhKTsKICAgICB2b2lk
IHJlbmFtZU9yaWdpbkluV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIGNv
bnN0IFVSTCYsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTQ3Myw4ICs0NzMsNiBA
QCBwcml2YXRlOgogICAgIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVBc05vQWNjZXNzKGNvbnN0IFN0
cmluZyYpIGNvbnN0OwogICAgIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVBc0NPUlNFbmFibGVkKGNv
bnN0IFN0cmluZyYpIGNvbnN0OwogCi0gICAgdm9pZCBzdXNwZW5kSURCU2VydmVycyhib29sIGlz
U3VzcGVuc2lvbkltbWluZW50KTsKLQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdm9p
ZCBzZXRJc0hvbGRpbmdMb2NrZWRGaWxlcyhib29sKTsKICNlbmRpZgpAQCAtNDgyLDYgKzQ4MCw3
IEBAIHByaXZhdGU6CiAgICAgY2xhc3MgU2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXIgewogICAg
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CisgICAgICAgIFNlc3Np
b25TdG9yYWdlUXVvdGFNYW5hZ2VyKCkgPSBkZWxldGU7CiAgICAgICAgIFNlc3Npb25TdG9yYWdl
UXVvdGFNYW5hZ2VyKGNvbnN0IFN0cmluZyYgY2FjaGVSb290UGF0aCwgdWludDY0X3QgZGVmYXVs
dFF1b3RhLCB1aW50NjRfdCBkZWZhdWx0VGhpcmRQYXJ0eVF1b3RhKQogICAgICAgICAgICAgOiBt
X2NhY2hlUm9vdFBhdGgoY2FjaGVSb290UGF0aCkKICAgICAgICAgICAgICwgbV9kZWZhdWx0UXVv
dGEoZGVmYXVsdFF1b3RhKQpAQCAtNTA4LDggKzUwNyw4IEBAIHByaXZhdGU6CiAgICAgcHJpdmF0
ZToKICAgICAgICAgU3RyaW5nIG1fY2FjaGVSb290UGF0aDsKICAgICAgICAgU3RyaW5nIG1faWRi
Um9vdFBhdGg7Ci0gICAgICAgIHVpbnQ2NF90IG1fZGVmYXVsdFF1b3RhIHsgV2ViQ29yZTo6U3Rv
cmFnZVF1b3RhTWFuYWdlcjo6ZGVmYXVsdFF1b3RhKCkgfTsKLSAgICAgICAgdWludDY0X3QgbV9k
ZWZhdWx0VGhpcmRQYXJ0eVF1b3RhIHsgV2ViQ29yZTo6U3RvcmFnZVF1b3RhTWFuYWdlcjo6ZGVm
YXVsdFRoaXJkUGFydHlRdW90YSgpIH07CisgICAgICAgIHVpbnQ2NF90IG1fZGVmYXVsdFF1b3Rh
OworICAgICAgICB1aW50NjRfdCBtX2RlZmF1bHRUaGlyZFBhcnR5UXVvdGE7CiAgICAgICAgIEhh
c2hNYXA8V2ViQ29yZTo6Q2xpZW50T3JpZ2luLCBSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZVF1b3Rh
TWFuYWdlcj4+IG1fc3RvcmFnZVF1b3RhTWFuYWdlcnM7CiAgICAgfTsKICAgICB2b2lkIGFkZFNl
c3Npb25TdG9yYWdlUXVvdGFNYW5hZ2VyKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBkZWZhdWx0
UXVvdGEsIHVpbnQ2NF90IGRlZmF1bHRUaGlyZFBhcnR5UXVvdGEsIGNvbnN0IFN0cmluZyYgY2Fj
aGVSb290UGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJik7CkBAIC01NDksOSArNTQ4LDYg
QEAgcHJpdmF0ZToKICAgICBXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXIgbV93ZWJTUUxpdGVEYXRh
YmFzZVRyYWNrZXI7CiAgICAgUmVmUHRyPFByb2Nlc3NBc3NlcnRpb24+IG1faG9sZGluZ0xvY2tl
ZEZpbGVBc3NlcnRpb247CiAjZW5kaWYKLQotICAgIGJvb2wgbV9zaG91bGRTdXNwZW5kSURCU2Vy
dmVycyB7IGZhbHNlIH07Ci0gICAgdWludDY0X3QgbV9zdXNwZW5zaW9uSWRlbnRpZmllciB7IDAg
fTsKICAgICAKICNpZiBFTkFCTEUoV0VCX1JUQykKICAgICBSZWZQdHI8UlRDRGF0YUNoYW5uZWxS
ZW1vdGVNYW5hZ2VyUHJveHk+IG1fcnRjRGF0YUNoYW5uZWxQcm94eTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmlu
ZGV4IDYzN2UxNTlmMTg2MzkzYmVjNWNjMDVhYjViZDU3ODBiZThjNmZjZTQuLjYzMWUyYjYwNzNj
MDE5MjEzMDY4YzIwOTZiODI3YjI3OWRiYzdkZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTc5LDYg
KzE3OSw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKIAog
ICAgIFJlc2V0UXVvdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYwogICAg
IENsZWFyU3RvcmFnZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+ICgpIEFzeW5jCisgICAg
RGlkSW5jcmVhc2VRdW90YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0cnVjdCBXZWJDb3Jl
OjpDbGllbnRPcmlnaW4gb3JpZ2luLCBXZWJLaXQ6OlF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRp
ZmllciBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBuZXdRdW90YSkKICAgICAK
ICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgSGFzQXBwQm91bmRTZXNzaW9uKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKGJvb2wgaGFzQXBwQm91bmRTZXNzaW9uKSBBc3lu
YwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lv
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcApp
bmRleCBkNzYxNjI4NTBjYWQ4NDM4ZjAwODg5MDUzZjdlZGM4MmYzZTMzYTNkLi40YTcxOTQxY2Fl
NzA2ZDczMGJhZTIwYjI4MGUzZDhmZjc1ZDk0NTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcApAQCAtMjA1LDggKzIwNSw2IEBAIHZvaWQg
TmV0d29ya1Nlc3Npb246OmludmFsaWRhdGVBbmRDYW5jZWwoKQogICAgIGlmIChtX3Jlc291cmNl
TG9hZFN0YXRpc3RpY3MpCiAgICAgICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+aW52YWxp
ZGF0ZUFuZENhbmNlbCgpOwogI2VuZGlmCi0gICAgaWYgKGF1dG8gc2VydmVyID0gc3RkOjpleGNo
YW5nZShtX3dlYklEQlNlcnZlciwgbnVsbHB0cikpCi0gICAgICAgIHNlcnZlci0+Y2xvc2UoKTsK
ICAgICBpZiAoYXV0byBtYW5hZ2VyID0gc3RkOjpleGNoYW5nZShtX3N0b3JhZ2VNYW5hZ2VyLCBu
dWxscHRyKSkKICAgICAgICAgbWFuYWdlci0+Y2xvc2UoKTsKICAgICBtX2NhY2hlRW5naW5lID0g
bnVsbHB0cjsKQEAgLTY2MSw1NSArNjU5LDE4IEBAIFdlYlNoYXJlZFdvcmtlclNlcnZlciYgTmV0
d29ya1Nlc3Npb246OmVuc3VyZVNoYXJlZFdvcmtlclNlcnZlcigpCiAgICAgcmV0dXJuICptX3No
YXJlZFdvcmtlclNlcnZlcjsKIH0KIAotV2ViSURCU2VydmVyJiBOZXR3b3JrU2Vzc2lvbjo6ZW5z
dXJlV2ViSURCU2VydmVyKCkKLXsKLSAgICBpZiAoIW1fd2ViSURCU2VydmVyKSB7Ci0gICAgICAg
IFN0cmluZyBwYXRoOwotICAgICAgICBpZiAoIXNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkpIHsK
LSAgICAgICAgICAgIEFTU0VSVCghbV9pZGJEYXRhYmFzZVBhdGguaXNOdWxsKCkpOwotICAgICAg
ICAgICAgcGF0aCA9IG1faWRiRGF0YWJhc2VQYXRoOwotICAgICAgICB9Ci0KLSAgICAgICAgYXV0
byBzcGFjZVJlcXVlc3RlciA9IFtuZXR3b3JrUHJvY2VzcyA9IFJlZiB7IG5ldHdvcmtQcm9jZXNz
KCkgfSwgc2Vzc2lvbklEID0gc2Vzc2lvbklEKCldKGNvbnN0IGF1dG8mIG9yaWdpbiwgdWludDY0
X3Qgc3BhY2VSZXF1ZXN0ZWQpIHsKLSAgICAgICAgICAgIHJldHVybiBuZXR3b3JrUHJvY2Vzcy0+
c3RvcmFnZVF1b3RhTWFuYWdlcihzZXNzaW9uSUQsIG9yaWdpbiktPnJlcXVlc3RTcGFjZU9uQmFj
a2dyb3VuZFRocmVhZChzcGFjZVJlcXVlc3RlZCk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgbV93
ZWJJREJTZXJ2ZXIgPSBXZWJJREJTZXJ2ZXI6OmNyZWF0ZShzZXNzaW9uSUQoKSwgcGF0aCwgV1RG
TW92ZShzcGFjZVJlcXVlc3RlcikpOwotICAgICAgICBpZiAobmV0d29ya1Byb2Nlc3MoKS5zaG91
bGRTdXNwZW5kSURCU2VydmVycygpKQotICAgICAgICAgICAgbV93ZWJJREJTZXJ2ZXItPnN1c3Bl
bmQoV2ViSURCU2VydmVyOjpTdXNwZW5zaW9uQ29uZGl0aW9uOjpBbHdheXMpOwotICAgIH0KLSAg
ICByZXR1cm4gKm1fd2ViSURCU2VydmVyOwotfQotCi12b2lkIE5ldHdvcmtTZXNzaW9uOjpjbG9z
ZUlEQlNlcnZlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Ci17Ci0gICAgaWYgKCFtX3dlYklEQlNlcnZlcikKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25I
YW5kbGVyKCk7Ci0KLSAgICBzdGQ6OmV4Y2hhbmdlKG1fd2ViSURCU2VydmVyLCBudWxscHRyKS0+
Y2xvc2UoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotfQotCi12b2lkIE5ldHdvcmtTZXNz
aW9uOjphZGRJbmRleGVkRGF0YWJhc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYgaW5kZXhlZERhdGFi
YXNlRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIGhhbmRsZSkKLXsKLSAgICAv
LyAqKioqKioqKioKLSAgICAvLyBJTVBPUlRBTlQ6IERvIG5vdCBjaGFuZ2UgdGhlIGRpcmVjdG9y
eSBzdHJ1Y3R1cmUgZm9yIGluZGV4ZWQgZGF0YWJhc2VzIG9uIGRpc2sgd2l0aG91dCBmaXJzdCBj
b25zdWx0aW5nIGEgcmV2aWV3ZXIgZnJvbSBBcHBsZSAoPHJkYXI6Ly9wcm9ibGVtLzE3NDU0NzEy
PikKLSAgICAvLyAqKioqKioqKioKLSAgICBhdXRvIGlzTmV3ID0gbV9pZGJEYXRhYmFzZVBhdGgu
aXNOdWxsKCk7Ci0gICAgbV9pZGJEYXRhYmFzZVBhdGggPSBpbmRleGVkRGF0YWJhc2VEaXJlY3Rv
cnk7Ci0gICAgaWYgKGlzTmV3KSB7Ci0gICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQ
ZXJtYW5lbnRseShoYW5kbGUpOwotICAgICAgICBuZXR3b3JrUHJvY2VzcygpLnNldFNlc3Npb25T
dG9yYWdlUXVvdGFNYW5hZ2VySURCUm9vdFBhdGgoc2Vzc2lvbklEKCksIGluZGV4ZWREYXRhYmFz
ZURpcmVjdG9yeSk7Ci0gICAgfQotfQotCi12b2lkIE5ldHdvcmtTZXNzaW9uOjphZGRTdG9yYWdl
TWFuYWdlclNlc3Npb24oY29uc3QgU3RyaW5nJiBnZW5lcmFsU3RvcmFnZVBhdGgsIFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSYgZ2VuZXJhbFN0b3JhZ2VQYXRoSGFuZGxlLCBjb25zdCBTdHJpbmcm
IGxvY2FsU3RvcmFnZVBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgbG9jYWxTdG9yYWdl
UGF0aEhhbmRsZSkKK3ZvaWQgTmV0d29ya1Nlc3Npb246OmFkZFN0b3JhZ2VNYW5hZ2VyU2Vzc2lv
bihjb25zdCBTdHJpbmcmIGdlbmVyYWxTdG9yYWdlUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlJiBnZW5lcmFsU3RvcmFnZVBhdGhIYW5kbGUsIGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdl
UGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBsb2NhbFN0b3JhZ2VQYXRoSGFuZGxlLCBj
b25zdCBTdHJpbmcmIGlkYlN0b3JhZ2VQYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIGlk
YlN0b3JhZ2VQYXRoSGFuZGxlLCBjb25zdCBTdHJpbmcmIGNhY2hlU3RvcmFnZVBhdGgsIHVpbnQ2
NF90IGRlZmF1bHRPcmlnaW5RdW90YSwgdWludDY0X3QgZGVmYXVsdFRoaXJkUGFydHlRdW90YSkK
IHsKICAgICBpZiAobV9zdG9yYWdlTWFuYWdlcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgU2Fu
ZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KGdlbmVyYWxTdG9yYWdlUGF0aEhhbmRs
ZSk7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KGxvY2FsU3RvcmFn
ZVBhdGhIYW5kbGUpOwotICAgIG1fc3RvcmFnZU1hbmFnZXIgPSBOZXR3b3JrU3RvcmFnZU1hbmFn
ZXI6OmNyZWF0ZShzZXNzaW9uSUQoKSwgZ2VuZXJhbFN0b3JhZ2VQYXRoLCBsb2NhbFN0b3JhZ2VQ
YXRoKTsKKyAgICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkoaWRiU3RvcmFn
ZVBhdGhIYW5kbGUpOworICAgIElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgY29ubmVjdGlvbklE
OworICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gbmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpKQorICAgICAgICBjb25uZWN0aW9uSUQgPSBjb25uZWN0aW9uLT51bmlx
dWVJRCgpOworICAgIG1fc3RvcmFnZU1hbmFnZXIgPSBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNy
ZWF0ZShzZXNzaW9uSUQoKSwgY29ubmVjdGlvbklELCBnZW5lcmFsU3RvcmFnZVBhdGgsIGxvY2Fs
U3RvcmFnZVBhdGgsIGlkYlN0b3JhZ2VQYXRoLCBjYWNoZVN0b3JhZ2VQYXRoLCBkZWZhdWx0T3Jp
Z2luUXVvdGEsIGRlZmF1bHRUaGlyZFBhcnR5UXVvdGEpOwogfQogCiB2b2lkIE5ldHdvcmtTZXNz
aW9uOjplbnN1cmVDYWNoZUVuZ2luZShGdW5jdGlvbjx2b2lkKENhY2hlU3RvcmFnZTo6RW5naW5l
Jik+JiYgY2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtTZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtT
ZXNzaW9uLmgKaW5kZXggM2Y5ZDZjOTU1MGE4YjhjZWM5ZTRjNTU5ZDMxZDEyMWE5OGIwZTg0MC4u
NzlkN2NlNDQwNGExMzhkZjliODhhYWVjOTdiNjkxM2FmNjBhNGNlYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaApAQCAtMjE0LDE0ICsyMTQsOCBA
QCBwdWJsaWM6CiAgICAgV2ViU2hhcmVkV29ya2VyU2VydmVyKiBzaGFyZWRXb3JrZXJTZXJ2ZXIo
KSB7IHJldHVybiBtX3NoYXJlZFdvcmtlclNlcnZlci5nZXQoKTsgfQogICAgIFdlYlNoYXJlZFdv
cmtlclNlcnZlciYgZW5zdXJlU2hhcmVkV29ya2VyU2VydmVyKCk7CiAKLSAgICBXZWJJREJTZXJ2
ZXIqIHdlYklEQlNlcnZlcigpIHsgcmV0dXJuIG1fd2ViSURCU2VydmVyLmdldCgpOyB9Ci0gICAg
V2ViSURCU2VydmVyJiBlbnN1cmVXZWJJREJTZXJ2ZXIoKTsKLSAgICB2b2lkIGNsb3NlSURCU2Vy
dmVyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBhZGRJbmRleGVkRGF0
YWJhc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYgaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5LCBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUmKTsKLSAgICBib29sIGhhc0lEQkRhdGFiYXNlUGF0aCgpIGNv
bnN0IHsgcmV0dXJuICFtX2lkYkRhdGFiYXNlUGF0aC5pc0VtcHR5KCk7IH0KLQogICAgIE5ldHdv
cmtTdG9yYWdlTWFuYWdlciogc3RvcmFnZU1hbmFnZXIoKSB7IHJldHVybiBtX3N0b3JhZ2VNYW5h
Z2VyLmdldCgpOyB9Ci0gICAgdm9pZCBhZGRTdG9yYWdlTWFuYWdlclNlc3Npb24oY29uc3QgU3Ry
aW5nJiBnZW5lcmFsU3RvcmFnZVBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgZ2VuZXJh
bFN0b3JhZ2VQYXRoSGFuZGxlLCBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZVBhdGgsIFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSYgbG9jYWxTdG9yYWdlUGF0aEhhbmRsZSk7CisgICAgdm9pZCBh
ZGRTdG9yYWdlTWFuYWdlclNlc3Npb24oY29uc3QgU3RyaW5nJiBnZW5lcmFsU3RvcmFnZVBhdGgs
IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgZ2VuZXJhbFN0b3JhZ2VQYXRoSGFuZGxlLCBjb25z
dCBTdHJpbmcmIGxvY2FsU3RvcmFnZVBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgbG9j
YWxTdG9yYWdlUGF0aEhhbmRsZSwgY29uc3QgU3RyaW5nJiBpZGJTdG9yYWdlUGF0aCwgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlJiBpZGJTdG9yYWdlUGF0aEhhbmRsZSwgY29uc3QgU3RyaW5nJiBj
YWNoZVN0b3JhZ2VQYXRoLCB1aW50NjRfdCBkZWZhdWx0T3JpZ2luUXVvdGEsIHVpbnQ2NF90IGRl
ZmF1bHRUaGlyZFBhcnR5UXVvdGEpOwogCiAgICAgQ2FjaGVTdG9yYWdlOjpFbmdpbmUqIGNhY2hl
RW5naW5lKCkgeyByZXR1cm4gbV9jYWNoZUVuZ2luZS5nZXQoKTsgfQogICAgIHZvaWQgZW5zdXJl
Q2FjaGVFbmdpbmUoRnVuY3Rpb248dm9pZChDYWNoZVN0b3JhZ2U6OkVuZ2luZSYpPiYmKTsKQEAg
LTMyNCw5ICszMTgsNiBAQCBwcm90ZWN0ZWQ6CiAjZW5kaWYKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
V2ViU2hhcmVkV29ya2VyU2VydmVyPiBtX3NoYXJlZFdvcmtlclNlcnZlcjsKIAotICAgIFN0cmlu
ZyBtX2lkYkRhdGFiYXNlUGF0aDsKLSAgICBSZWZQdHI8V2ViSURCU2VydmVyPiBtX3dlYklEQlNl
cnZlcjsKLQogICAgIFJlZlB0cjxOZXR3b3JrU3RvcmFnZU1hbmFnZXI+IG1fc3RvcmFnZU1hbmFn
ZXI7CiAgICAgUmVmUHRyPENhY2hlU3RvcmFnZTo6RW5naW5lPiBtX2NhY2hlRW5naW5lOwogICAg
IFZlY3RvcjxGdW5jdGlvbjx2b2lkKENhY2hlU3RvcmFnZTo6RW5naW5lJik+PiBtX2NhY2hlU3Rv
cmFnZVBhcmFtZXRlcnNDYWxsYmFja3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKaW5kZXggNjM0MjVhYzVl
NWM1MTIyZTE3NTYzNjllNDU1MzgwNjQ3MTczZTYzMy4uZGQxZmEyMWM5ZWVjMTNmZGIzMDk0NzIy
ZWI4OTFmZDY1MzhlM2U2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcApAQCAtMzEsNiArMzEsNyBAQAog
I2luY2x1ZGUgIk5ldHdvcmtDYWNoZUlPQ2hhbm5lbC5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9j
ZXNzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Nlc3Npb24uaCIKKyNpbmNsdWRlICJOZXR3b3JrU3Rv
cmFnZU1hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVR5cGUuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL0NhY2hlUXVlcnlPcHRpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXRyaWV2ZVJl
Y29yZHNPcHRpb25zLmg+CkBAIC0yMDMsNDAgKzIwNCw1MiBAQCBzdGF0aWMgdWludDY0X3QgZ2V0
RGlyZWN0b3J5U2l6ZShjb25zdCBTdHJpbmcmIGRpcmVjdG9yeVBhdGgpCiAgICAgcmV0dXJuIGRp
cmVjdG9yeVNpemU7CiB9CiAKLXVpbnQ2NF90IEVuZ2luZTo6ZGlza1VzYWdlKGNvbnN0IFN0cmlu
ZyYgcm9vdFBhdGgsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luKQorU3RyaW5n
IEVuZ2luZTo6c3RvcmFnZVBhdGgoY29uc3QgU3RyaW5nJiByb290RGlyZWN0b3J5LCBjb25zdCBX
ZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbikKIHsKICAgICBBU1NFUlQoIWlzTWFpblJ1bkxv
b3AoKSk7CisgICAgCisgICAgaWYgKHJvb3REaXJlY3RvcnkuaXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAotICAgIGlmIChyb290UGF0aC5pc0VtcHR5KCkpCi0gICAg
ICAgIHJldHVybiAwOwotCi0gICAgU3RyaW5nIHNhbHRQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KHJvb3RQYXRoLCAic2FsdCJfcyk7CisgICAgU3RyaW5nIHNhbHRQ
YXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJvb3REaXJlY3Rvcnks
ICJzYWx0Il9zKTsKICAgICBhdXRvIHNhbHQgPSBGaWxlU3lzdGVtOjpyZWFkT3JNYWtlU2FsdChz
YWx0UGF0aCk7CiAgICAgaWYgKCFzYWx0KQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0
dXJuIGVtcHR5U3RyaW5nKCk7CiAKICAgICBLZXkga2V5KG9yaWdpbi50b3BPcmlnaW4udG9TdHJp
bmcoKSwgb3JpZ2luLmNsaWVudE9yaWdpbi50b1N0cmluZygpLCB7IH0sIHsgfSwgKnNhbHQpOwot
ICAgIFN0cmluZyBkaXJlY3RvcnlQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KHJvb3RQYXRoLCBrZXkuaGFzaEFzU3RyaW5nKCkpOworICAgIHJldHVybiBGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocm9vdERpcmVjdG9yeSwga2V5Lmhhc2hBc1N0
cmluZygpKTsKK30KKwordWludDY0X3QgRW5naW5lOjpkaXNrVXNhZ2UoY29uc3QgU3RyaW5nJiBv
cmlnaW5EaXJlY3RvcnkpCit7CisgICAgQVNTRVJUKCFpc01haW5SdW5Mb29wKCkpOwogCi0gICAg
U3RyaW5nIHNpemVGaWxlUGF0aCA9IENhY2hlczo6Y2FjaGVzU2l6ZUZpbGVuYW1lKGRpcmVjdG9y
eVBhdGgpOworICAgIGlmIChvcmlnaW5EaXJlY3RvcnkuaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm4gMDsKKworICAgIFN0cmluZyBzaXplRmlsZVBhdGggPSBDYWNoZXM6OmNhY2hlc1NpemVGaWxl
bmFtZShvcmlnaW5EaXJlY3RvcnkpOwogICAgIGlmIChhdXRvIHJlY29yZGVkU2l6ZSA9IHJlYWRT
aXplRmlsZShzaXplRmlsZVBhdGgpKQogICAgICAgICByZXR1cm4gKnJlY29yZGVkU2l6ZTsKIAot
ICAgIHJldHVybiBnZXREaXJlY3RvcnlTaXplKGRpcmVjdG9yeVBhdGgpOworICAgIHJldHVybiBn
ZXREaXJlY3RvcnlTaXplKG9yaWdpbkRpcmVjdG9yeSk7CiB9CiAKLXZvaWQgRW5naW5lOjpyZXF1
ZXN0U3BhY2UoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIHVpbnQ2NF90IHNw
YWNlUmVxdWVzdGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VRdW90
YU1hbmFnZXI6OkRlY2lzaW9uKT4mJiBjYWxsYmFjaykKK3ZvaWQgRW5naW5lOjpyZXF1ZXN0U3Bh
Y2UoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIHVpbnQ2NF90IHNwYWNlUmVx
dWVzdGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQogewogICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICBpZiAoIW1fbmV0d29ya1Byb2Nlc3MpCi0g
ICAgICAgIGNhbGxiYWNrKFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uOjpE
ZW55KTsKKyAgICAgICAgY2FsbGJhY2soZmFsc2UpOworCisgICAgYXV0byogc2Vzc2lvbiA9IG1f
bmV0d29ya1Byb2Nlc3MtPm5ldHdvcmtTZXNzaW9uKG1fc2Vzc2lvbklEKTsKKyAgICBpZiAoIXNl
c3Npb24pCisgICAgICAgIGNhbGxiYWNrKGZhbHNlKTsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpT
dG9yYWdlUXVvdGFNYW5hZ2VyPiBzdG9yYWdlUXVvdGFNYW5hZ2VyID0gbV9uZXR3b3JrUHJvY2Vz
cy0+c3RvcmFnZVF1b3RhTWFuYWdlcihtX3Nlc3Npb25JRCwgb3JpZ2luKTsKLSAgICBpZiAoIXN0
b3JhZ2VRdW90YU1hbmFnZXIpCi0gICAgICAgIGNhbGxiYWNrKFdlYkNvcmU6OlN0b3JhZ2VRdW90
YU1hbmFnZXI6OkRlY2lzaW9uOjpEZW55KTsKKyAgICBhdXRvKiBzdG9yYWdlTWFuYWdlciA9IHNl
c3Npb24tPnN0b3JhZ2VNYW5hZ2VyKCk7CisgICAgaWYgKCFzdG9yYWdlTWFuYWdlcikKKyAgICAg
ICAgY2FsbGJhY2soZmFsc2UpOwogCi0gICAgc3RvcmFnZVF1b3RhTWFuYWdlci0+cmVxdWVzdFNw
YWNlT25NYWluVGhyZWFkKHNwYWNlUmVxdWVzdGVkLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAg
c3RvcmFnZU1hbmFnZXItPnJlcXVlc3RTcGFjZShvcmlnaW4sIHNwYWNlUmVxdWVzdGVkLCBXVEZN
b3ZlKGNhbGxiYWNrKSk7CiB9CiAKIEVuZ2luZTo6RW5naW5lKE5ldHdvcmtTZXNzaW9uJiBuZXR3
b3JrU2Vzc2lvbiwgU3RyaW5nJiYgcm9vdFBhdGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaAppbmRleCAxNDdmYmFj
ZTE2NzdhNjA4NTkxOGFiNzcyYTllMTBhMjA2YzY4ODFlLi5mZTNjMWY5MzBkYWUzOTk4Y2QxYzA0
YzM0ZGJkZGM1MzU1NWE0NzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmgKQEAgLTI5LDcgKzI5LDYgQEAKICNp
bmNsdWRlICJOZXR3b3JrQ2FjaGVEYXRhLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGEuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL0NsaWVudE9yaWdpbi5oPgotI2luY2x1ZGUgPFdlYkNvcmUvU3RvcmFn
ZVF1b3RhTWFuYWdlci5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC04NCw4ICs4Myw5
IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVRdW90YVVzZXIoTmV0d29y
a1Nlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwogCi0gICAgc3RhdGljIHVpbnQ2NF90IGRpc2tVc2FnZShjb25zdCBTdHJp
bmcmIHJvb3RQYXRoLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKLSAgICB2b2lkIHJl
cXVlc3RTcGFjZShjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCB1aW50NjRfdCBzcGFjZVJl
cXVlc3RlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5h
Z2VyOjpEZWNpc2lvbik+JiYpOworICAgIHN0YXRpYyBTdHJpbmcgc3RvcmFnZVBhdGgoY29uc3Qg
U3RyaW5nJiByb290RGlyZWN0b3J5LCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKKyAg
ICBzdGF0aWMgdWludDY0X3QgZGlza1VzYWdlKGNvbnN0IFN0cmluZyYgb3JpZ2luRGlyZWN0b3J5
KTsKKyAgICB2b2lkIHJlcXVlc3RTcGFjZShjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCB1
aW50NjRfdCBzcGFjZVJlcXVlc3RlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7
CiAKICAgICBib29sIHNob3VsZFBlcnNpc3QoKSBjb25zdCB7IHJldHVybiAhIW1faW9RdWV1ZTt9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVT
dG9yYWdlRW5naW5lQ2FjaGVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcAppbmRleCAwNGVkZWNlMWM0YmZlOWVhY2Fl
MDZhNzA3YzVkZGZmZTAwZTgxMzhlLi5jMzBjM2JlN2M1YzU1M2JmMjMyOGQ5NTFiNzc0NDQ0MTNi
MzJkNmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0Nh
Y2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwCkBAIC01MjQsMTQgKzUyNCwx
MCBAQCB2b2lkIENhY2hlczo6cmVxdWVzdFNwYWNlKHVpbnQ2NF90IHNwYWNlUmVxdWlyZWQsIFdl
YkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDb21wbAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgbV9lbmdpbmUtPnJlcXVlc3RTcGFjZShtX29yaWdpbiwgc3BhY2VSZXF1aXJlZCwgW2NhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8gZGVjaXNpb24pIG11dGFibGUgewotICAgICAg
ICBzd2l0Y2ggKGRlY2lzaW9uKSB7Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6U3RvcmFnZVF1b3Rh
TWFuYWdlcjo6RGVjaXNpb246OkRlbnk6Ci0gICAgICAgICAgICBjYWxsYmFjayhFcnJvcjo6UXVv
dGFFeGNlZWRlZCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6
U3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb246OkdyYW50OgotICAgICAgICAgICAgY2FsbGJh
Y2soeyB9KTsKLSAgICAgICAgfTsKKyAgICBtX2VuZ2luZS0+cmVxdWVzdFNwYWNlKG1fb3JpZ2lu
LCBzcGFjZVJlcXVpcmVkLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBncmFu
dGVkKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCFncmFudGVkKQorICAgICAgICAgICAgcmV0dXJu
IGNhbGxiYWNrKEVycm9yOjpRdW90YUV4Y2VlZGVkKTsKKyAgICAgICAgY2FsbGJhY2soeyB9KTsK
ICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9p
b3MvTmV0d29ya1Byb2Nlc3NJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lv
cy9OZXR3b3JrUHJvY2Vzc0lPUy5tbQppbmRleCBhODdhZDgwNWI1ZGYxNTA3ODNiNTM5MWU4ZTAz
Zjk4ZTc2NGRmM2Q1Li4yMTk2ZTllNzRkMjQ1MzFjMGRiNWIzOTQ1YWM2MDhmZTNlOThjNzRhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vz
c0lPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJv
Y2Vzc0lPUy5tbQpAQCAtMTA5LDE5ICsxMDksNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRJ
c0hvbGRpbmdMb2NrZWRGaWxlcyhib29sIGlzSG9sZGluZ0xvY2tlZEZpbGVzKQogICAgIC8vIFdl
IHN5bmNocm9ub3VzbHkgdGFrZSBhIHByb2Nlc3MgYXNzZXJ0aW9uIHdoZW4gYmVnaW5uaW5nIGEg
U1FMaXRlIHRyYW5zYWN0aW9uIHNvIHRoYXQgd2UgZG9uJ3QgZ2V0IHN1c3BlbmRlZAogICAgIC8v
IHdoaWxlIGhvbGRpbmcgYSBsb2NrZWQgZmlsZS4gV2Ugd291bGQgZ2V0IGtpbGxlZCBpZiBzdXNw
ZW5kZWQgd2hpbGUgaG9sZGluZyBsb2NrZWQgZmlsZXMuCiAgICAgbV9ob2xkaW5nTG9ja2VkRmls
ZUFzc2VydGlvbiA9IFByb2Nlc3NBc3NlcnRpb246OmNyZWF0ZShnZXRDdXJyZW50UHJvY2Vzc0lE
KCksICJOZXR3b3JrIFByb2Nlc3MgaXMgaG9sZGluZyBsb2NrZWQgZmlsZXMiX3MsIFByb2Nlc3NB
c3NlcnRpb25UeXBlOjpGaW5pc2hUYXNrSW50ZXJydXB0YWJsZSwgUHJvY2Vzc0Fzc2VydGlvbjo6
TW9kZTo6U3luYyk7Ci0gICAgbV9ob2xkaW5nTG9ja2VkRmlsZUFzc2VydGlvbi0+c2V0UHJlcGFy
ZUZvckludmFsaWRhdGlvbkhhbmRsZXIoW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlz
IH1dKCkgbXV0YWJsZSB7Ci0gICAgICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOwotICAgICAg
ICBpZiAoIXdlYWtUaGlzKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmICghbV9z
aG91bGRTdXNwZW5kSURCU2VydmVycykKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBm
b3JFYWNoTmV0d29ya1Nlc3Npb24oW10oYXV0byYgc2Vzc2lvbikgewotICAgICAgICAgICAgaWYg
KGF1dG8qIHNlcnZlciA9IHNlc3Npb24ud2ViSURCU2VydmVyKCkpCi0gICAgICAgICAgICAgICAg
c2VydmVyLT5zdXNwZW5kKCk7Ci0gICAgICAgIH0pOwotICAgIH0pOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3Rv
cmFnZS9JREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50LmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44YWY0YzY0NjQzNmI5NmUxNGU4N2IzY2UyYjYxMWRiMDQyODc5MDVmCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3Jh
Z2VDb25uZWN0aW9uVG9DbGllbnQuY3BwCkBAIC0wLDAgKzEsMTkxIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE2LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSURCU3RvcmFnZUNvbm5lY3Rpb25U
b0NsaWVudC5oIgorCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVk
ZSAiV2ViSURCQ29ubmVjdGlvblRvU2VydmVyTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJJREJS
ZXN1bHQuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0lEQlJlcXVlc3REYXRhLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9JREJSZXN1bHREYXRhLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VbmlxdWVJREJEYXRh
YmFzZUNvbm5lY3Rpb24uaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK0lEQlN0b3JhZ2VDb25u
ZWN0aW9uVG9DbGllbnQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQoSVBDOjpDb25uZWN0
aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uLCBXZWJDb3JlOjpJREJDb25uZWN0aW9uSWRlbnRpZmll
ciBpZGVudGlmaWVyKQorICAgIDogbV9jb25uZWN0aW9uKGNvbm5lY3Rpb24pCisgICAgLCBtX2lk
ZW50aWZpZXIoaWRlbnRpZmllcikKKyAgICAsIG1fY29ubmVjdGlvblRvQ2xpZW50KFdlYkNvcmU6
OklEQlNlcnZlcjo6SURCQ29ubmVjdGlvblRvQ2xpZW50OjpjcmVhdGUoKnRoaXMpKQoreworfQor
CitJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50Ojp+SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0Ns
aWVudCgpCit7CisgICAgbV9jb25uZWN0aW9uVG9DbGllbnQtPmNsZWFyRGVsZWdhdGUoKTsKK30K
KworV2ViQ29yZTo6SURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnQmIElEQlN0b3JhZ2VD
b25uZWN0aW9uVG9DbGllbnQ6OmNvbm5lY3Rpb25Ub0NsaWVudCgpCit7CisgICAgcmV0dXJuIG1f
Y29ubmVjdGlvblRvQ2xpZW50OworfQorCit0ZW1wbGF0ZTxjbGFzcyBNZXNzYWdlVHlwZT4gdm9p
ZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRHZXRSZXN1bHQoY29uc3QgV2ViQ29y
ZTo6SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBpZiAocmVzdWx0RGF0YS50eXBl
KCkgPT0gV2ViQ29yZTo6SURCUmVzdWx0VHlwZTo6RXJyb3IpIHsKKyAgICAgICAgSVBDOjpDb25u
ZWN0aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwgTWVzc2FnZVR5cGUocmVzdWx0RGF0YSksIDApOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKHJlc3VsdERhdGEudHlwZSgpID09IFdl
YkNvcmU6OklEQlJlc3VsdFR5cGU6OkdldEFsbFJlY29yZHNTdWNjZXNzICYmIHJlc3VsdERhdGEu
Z2V0QWxsUmVzdWx0KCkudHlwZSgpID09IFdlYkNvcmU6OkluZGV4ZWREQjo6R2V0QWxsVHlwZTo6
S2V5cykgeworICAgICAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQobV9jb25uZWN0aW9uLCBNZXNz
YWdlVHlwZShyZXN1bHREYXRhKSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBh
dXRvIGJsb2JGaWxlUGF0aHMgPSByZXN1bHREYXRhLnR5cGUoKSA9PSBXZWJDb3JlOjpJREJSZXN1
bHRUeXBlOjpHZXRBbGxSZWNvcmRzU3VjY2VzcyA/IHJlc3VsdERhdGEuZ2V0QWxsUmVzdWx0KCku
YWxsQmxvYkZpbGVQYXRocygpIDogcmVzdWx0RGF0YS5nZXRSZXN1bHQoKS52YWx1ZSgpLmJsb2JG
aWxlUGF0aHMoKTsKKyAgICBpZiAoYmxvYkZpbGVQYXRocy5pc0VtcHR5KCkpIHsKKyAgICAgICAg
SVBDOjpDb25uZWN0aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwgTWVzc2FnZVR5cGUocmVzdWx0RGF0
YSksIDApOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgSVBDOjpDb25uZWN0aW9uOjpz
ZW5kKG1fY29ubmVjdGlvbiwgTWVzc2FnZVR5cGUocmVzdWx0RGF0YSksIDApOworfQorCit2b2lk
IElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZERlbGV0ZURhdGFiYXNlKGNvbnN0IFdl
YkNvcmU6OklEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCit7CisgICAgSVBDOjpDb25uZWN0aW9u
OjpzZW5kKG1fY29ubmVjdGlvbiwgTWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6
RGlkRGVsZXRlRGF0YWJhc2UocmVzdWx0RGF0YSksIDApOworfQorCit2b2lkIElEQlN0b3JhZ2VD
b25uZWN0aW9uVG9DbGllbnQ6OmRpZE9wZW5EYXRhYmFzZShjb25zdCBXZWJDb3JlOjpJREJSZXN1
bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5l
Y3Rpb24sIE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZE9wZW5EYXRhYmFz
ZShyZXN1bHREYXRhKSwgMCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVu
dDo6ZGlkU3RhcnRUcmFuc2FjdGlvbihjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZp
ZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCRXJyb3ImIGVycm9y
KQoreworICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpX
ZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZFN0YXJ0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25J
ZGVudGlmaWVyLCBlcnJvciksIDApOworfQorCit2b2lkIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9D
bGllbnQ6OmRpZEFib3J0VHJhbnNhY3Rpb24oY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVu
dGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OklEQkVycm9yJiBl
cnJvcikKK3sKKyAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQobV9jb25uZWN0aW9uLCBNZXNzYWdl
czo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWRBYm9ydFRyYW5zYWN0aW9uKHRyYW5zYWN0
aW9uSWRlbnRpZmllciwgZXJyb3IpLCAwKTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlv
blRvQ2xpZW50OjpkaWRDb21taXRUcmFuc2FjdGlvbihjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJj
ZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCRXJy
b3ImIGVycm9yKQoreworICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1l
c3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZENvbW1pdFRyYW5zYWN0aW9uKHRy
YW5zYWN0aW9uSWRlbnRpZmllciwgZXJyb3IpLCAwKTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29u
bmVjdGlvblRvQ2xpZW50OjpkaWRDcmVhdGVPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJS
ZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nv
bm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZENyZWF0ZU9i
amVjdFN0b3JlKHJlc3VsdERhdGEpLCAwKTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlv
blRvQ2xpZW50OjpkaWREZWxldGVPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXN1bHRE
YXRhJiByZXN1bHREYXRhKQoreworICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rp
b24sIE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZERlbGV0ZU9iamVjdFN0
b3JlKHJlc3VsdERhdGEpLCAwKTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xp
ZW50OjpkaWRSZW5hbWVPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJiBy
ZXN1bHREYXRhKQoreworICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1l
c3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZFJlbmFtZU9iamVjdFN0b3JlKHJl
c3VsdERhdGEpLCAwKTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50Ojpk
aWRDbGVhck9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmIHJlc3VsdERh
dGEpCit7CisgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwgTWVzc2FnZXM6
OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6RGlkQ2xlYXJPYmplY3RTdG9yZShyZXN1bHREYXRh
KSwgMCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkQ3JlYXRl
SW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBJ
UEM6OkNvbm5lY3Rpb246OnNlbmQobV9jb25uZWN0aW9uLCBNZXNzYWdlczo6V2ViSURCQ29ubmVj
dGlvblRvU2VydmVyOjpEaWRDcmVhdGVJbmRleChyZXN1bHREYXRhKSwgMCk7Cit9CisKK3ZvaWQg
SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkRGVsZXRlSW5kZXgoY29uc3QgV2ViQ29y
ZTo6SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBJUEM6OkNvbm5lY3Rpb246OnNl
bmQobV9jb25uZWN0aW9uLCBNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWRE
ZWxldGVJbmRleChyZXN1bHREYXRhKSwgMCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rp
b25Ub0NsaWVudDo6ZGlkUmVuYW1lSW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYg
cmVzdWx0RGF0YSkKK3sKKyAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQobV9jb25uZWN0aW9uLCBN
ZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWRSZW5hbWVJbmRleChyZXN1bHRE
YXRhKSwgMCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkUHV0
T3JBZGQoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBJ
UEM6OkNvbm5lY3Rpb246OnNlbmQobV9jb25uZWN0aW9uLCBNZXNzYWdlczo6V2ViSURCQ29ubmVj
dGlvblRvU2VydmVyOjpEaWRQdXRPckFkZChyZXN1bHREYXRhKSwgMCk7Cit9CisKK3ZvaWQgSURC
U3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkR2V0UmVjb3JkKGNvbnN0IFdlYkNvcmU6OklE
QlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCit7CisgICAgZGlkR2V0UmVzdWx0PE1lc3NhZ2VzOjpX
ZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZEdldFJlY29yZD4ocmVzdWx0RGF0YSk7Cit9CisK
K3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkR2V0QWxsUmVjb3Jkcyhjb25z
dCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIGRpZEdldFJlc3Vs
dDxNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWRHZXRBbGxSZWNvcmRzPihy
ZXN1bHREYXRhKTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRH
ZXRDb3VudChjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAg
IElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJJREJDb25u
ZWN0aW9uVG9TZXJ2ZXI6OkRpZEdldENvdW50KHJlc3VsdERhdGEpLCAwKTsKK30KKwordm9pZCBJ
REJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWREZWxldGVSZWNvcmQoY29uc3QgV2ViQ29y
ZTo6SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBJUEM6OkNvbm5lY3Rpb246OnNl
bmQobV9jb25uZWN0aW9uLCBNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWRE
ZWxldGVSZWNvcmQocmVzdWx0RGF0YSksIDApOworfQorCit2b2lkIElEQlN0b3JhZ2VDb25uZWN0
aW9uVG9DbGllbnQ6OmRpZE9wZW5DdXJzb3IoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYg
cmVzdWx0RGF0YSkKK3sKKyAgICBkaWRHZXRSZXN1bHQ8TWVzc2FnZXM6OldlYklEQkNvbm5lY3Rp
b25Ub1NlcnZlcjo6RGlkT3BlbkN1cnNvcj4ocmVzdWx0RGF0YSk7Cit9CisKK3ZvaWQgSURCU3Rv
cmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkSXRlcmF0ZUN1cnNvcihjb25zdCBXZWJDb3JlOjpJ
REJSZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIGRpZEdldFJlc3VsdDxNZXNzYWdlczo6
V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWRJdGVyYXRlQ3Vyc29yPihyZXN1bHREYXRhKTsK
K30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRHZXRBbGxEYXRhYmFz
ZU5hbWVzQW5kVmVyc2lvbnMoY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiBy
ZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OklEQkRhdGFiYXNlTmFtZUFu
ZFZlcnNpb24+JiBkYXRhYmFzZXMpCit7CisgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKG1fY29u
bmVjdGlvbiwgTWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6RGlkR2V0QWxsRGF0
YWJhc2VOYW1lc0FuZFZlcnNpb25zKHJlcXVlc3RJZGVudGlmaWVyLCBkYXRhYmFzZXMpLCAwKTsK
K30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpmaXJlVmVyc2lvbkNoYW5n
ZUV2ZW50KFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiBj
b25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJ
ZGVudGlmaWVyLCB1aW50NjRfdCByZXF1ZXN0ZWRWZXJzaW9uKQoreworICAgIElQQzo6Q29ubmVj
dGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2
ZXI6OkZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQoY29ubmVjdGlvbi5pZGVudGlmaWVyKCksIHJlcXVl
c3RJZGVudGlmaWVyLCByZXF1ZXN0ZWRWZXJzaW9uKSwgMCk7Cit9CisKK3ZvaWQgSURCU3RvcmFn
ZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkQ2xvc2VGcm9tU2VydmVyKFdlYkNvcmU6OklEQlNlcnZl
cjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3Jl
OjpJREJFcnJvciYgZXJyb3IpCit7CisgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKG1fY29ubmVj
dGlvbiwgTWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6RGlkQ2xvc2VGcm9tU2Vy
dmVyKGNvbm5lY3Rpb24uaWRlbnRpZmllcigpLCBlcnJvciksIDApOworfQorCit2b2lkIElEQlN0
b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6Om5vdGlmeU9wZW5EQlJlcXVlc3RCbG9ja2VkKGNvbnN0
IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2
NF90IG9sZFZlcnNpb24sIHVpbnQ2NF90IG5ld1ZlcnNpb24pCit7CisgICAgSVBDOjpDb25uZWN0
aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwgTWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZl
cjo6Tm90aWZ5T3BlbkRCUmVxdWVzdEJsb2NrZWQocmVxdWVzdElkZW50aWZpZXIsIG9sZFZlcnNp
b24sIG5ld1ZlcnNpb24pLCAwKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZUNvbm5l
Y3Rpb25Ub0NsaWVudC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lE
QlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MGJhMDFiMDIxMjBmMjFk
YjYxMzkxZjNhODc0NGQyMmI1ZmY3MGU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQuaApA
QCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0lEQkNvbm5lY3Rpb25Ub0NsaWVu
dC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSURCQ29ubmVjdGlvblRvQ2xpZW50RGVsZWdhdGUuaD4K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGll
bnQgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6SURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGll
bnREZWxlZ2F0ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAg
SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudChJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBX
ZWJDb3JlOjpJREJDb25uZWN0aW9uSWRlbnRpZmllcik7CisgICAgfklEQlN0b3JhZ2VDb25uZWN0
aW9uVG9DbGllbnQoKTsKKworICAgIFdlYkNvcmU6OklEQkNvbm5lY3Rpb25JZGVudGlmaWVyIGlk
ZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKyAgICBJUEM6
OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGlwY0Nvbm5lY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2Nv
bm5lY3Rpb247IH0KKyAgICBXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub0NsaWVu
dCYgY29ubmVjdGlvblRvQ2xpZW50KCk7CisKK3ByaXZhdGU6CisgICAgdGVtcGxhdGU8Y2xhc3Mg
TWVzc2FnZVR5cGU+IHZvaWQgZGlkR2V0UmVzdWx0KGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERh
dGEmKTsKKworICAgIC8vIElEQkNvbm5lY3Rpb25Ub0NsaWVudERlbGVnYXRlCisgICAgdm9pZCBk
aWREZWxldGVEYXRhYmFzZShjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJikgZmluYWw7Cisg
ICAgdm9pZCBkaWRPcGVuRGF0YWJhc2UoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZp
bmFsOworICAgIHZvaWQgZGlkQWJvcnRUcmFuc2FjdGlvbihjb25zdCBXZWJDb3JlOjpJREJSZXNv
dXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURC
RXJyb3ImKSBmaW5hbDsKKyAgICB2b2lkIGRpZENvbW1pdFRyYW5zYWN0aW9uKGNvbnN0IFdlYkNv
cmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBX
ZWJDb3JlOjpJREJFcnJvciYpIGZpbmFsOworICAgIHZvaWQgZGlkU3RhcnRUcmFuc2FjdGlvbihj
b25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmll
ciwgY29uc3QgV2ViQ29yZTo6SURCRXJyb3ImKSBmaW5hbDsKKyAgICB2b2lkIGRpZENyZWF0ZU9i
amVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBmaW5hbDsKKyAgICB2b2lk
IGRpZERlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBmaW5h
bDsKKyAgICB2b2lkIGRpZFJlbmFtZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlc3Vs
dERhdGEmKSBmaW5hbDsKKyAgICB2b2lkIGRpZENsZWFyT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29y
ZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkQ3JlYXRlSW5kZXgoY29uc3Qg
V2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkRGVsZXRlSW5kZXgo
Y29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVuYW1l
SW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlk
UHV0T3JBZGQoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQg
ZGlkR2V0UmVjb3JkKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBmaW5hbDsKKyAgICB2
b2lkIGRpZEdldEFsbFJlY29yZHMoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFs
OworICAgIHZvaWQgZGlkR2V0Q291bnQoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZp
bmFsOworICAgIHZvaWQgZGlkRGVsZXRlUmVjb3JkKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERh
dGEmKSBmaW5hbDsKKyAgICB2b2lkIGRpZE9wZW5DdXJzb3IoY29uc3QgV2ViQ29yZTo6SURCUmVz
dWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkSXRlcmF0ZUN1cnNvcihjb25zdCBXZWJDb3Jl
OjpJREJSZXN1bHREYXRhJikgZmluYWw7CisgICAgdm9pZCBkaWRHZXRBbGxEYXRhYmFzZU5hbWVz
QW5kVmVyc2lvbnMoY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiwgY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OklEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24+JikgZmluYWw7CisgICAg
dm9pZCBub3RpZnlPcGVuREJSZXF1ZXN0QmxvY2tlZChjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJj
ZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBvbGRWZXJzaW9uLCB1aW50
NjRfdCBuZXdWZXJzaW9uKSBmaW5hbDsKKyAgICB2b2lkIGZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQo
V2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mLCBjb25zdCBX
ZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRf
dCByZXF1ZXN0ZWRWZXJzaW9uKSBmaW5hbDsKKyAgICB2b2lkIGRpZENsb3NlRnJvbVNlcnZlcihX
ZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYsIGNvbnN0IFdl
YkNvcmU6OklEQkVycm9yJikgZmluYWw7CisKKyAgICBJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlE
IG1fY29ubmVjdGlvbjsKKyAgICBXZWJDb3JlOjpJREJDb25uZWN0aW9uSWRlbnRpZmllciBtX2lk
ZW50aWZpZXI7CisgICAgUmVmPFdlYkNvcmU6OklEQlNlcnZlcjo6SURCQ29ubmVjdGlvblRvQ2xp
ZW50PiBtX2Nvbm5lY3Rpb25Ub0NsaWVudDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3Jh
Z2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJT
dG9yYWdlTWFuYWdlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWI2YjcxMDE3ZmIzOWQ3YTBlMTM5MGVlMjg5
NmNiYzJlOGRmYTQwZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlTWFuYWdlci5jcHAKQEAgLTAsMCArMSwyNTQgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSURCU3RvcmFnZU1hbmFn
ZXIuaCIKKworI2luY2x1ZGUgIklEQlN0b3JhZ2VSZWdpc3RyeS5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvSURCUmVxdWVzdERhdGEuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01lbW9yeUlEQkJhY2tpbmdT
dG9yZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvU1FMaXRlSURCQmFja2luZ1N0b3JlLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitzdGF0aWMgdm9pZCBtaWdyYXRlT3JpZ2luRGF0YShjb25zdCBTdHJpbmcmIG9sZE9yaWdpbkRp
cmVjdG9yeSwgY29uc3QgU3RyaW5nJiBuZXdPcmlnaW5EaXJlY3RvcnkpCit7CisgICAgaWYgKCFG
aWxlU3lzdGVtOjpmaWxlRXhpc3RzKG9sZE9yaWdpbkRpcmVjdG9yeSkpCisgICAgICAgIHJldHVy
bjsKKworICAgIGF1dG8gZmlsZU5hbWVzID0gRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShvbGRP
cmlnaW5EaXJlY3RvcnkpOworICAgIGlmICghZmlsZU5hbWVzLmlzRW1wdHkoKSkKKyAgICAgICAg
RmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKG5ld09yaWdpbkRpcmVjdG9yeSk7CisKKyAg
ICBmb3IgKGF1dG8mIG5hbWUgOiBmaWxlTmFtZXMpIHsKKyAgICAgICAgU3RyaW5nIGNoaWxkUGF0
aCA9IEZpbGVTeXN0ZW06OnJlYWxQYXRoKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChvbGRPcmlnaW5EaXJlY3RvcnksIG5hbWUpKTsKKyAgICAgICAgU3RyaW5nIG5ld05hbWUg
PSBXZWJDb3JlOjpTUUxpdGVGaWxlU3lzdGVtOjpjb21wdXRlSGFzaEZvckZpbGVOYW1lKFdlYkNv
cmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWNvZGVEYXRhYmFzZU5hbWUo
bmFtZSkpOworICAgICAgICBhdXRvIG5ld0NoaWxkUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChuZXdPcmlnaW5EaXJlY3RvcnksIG5ld05hbWUpOworICAgICAgICBG
aWxlU3lzdGVtOjptb3ZlRmlsZShjaGlsZFBhdGgsIG5ld0NoaWxkUGF0aCk7CisgICAgfQorCisg
ICAgRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3Rvcnkob2xkT3JpZ2luRGlyZWN0b3J5KTsK
K30KKworU3RyaW5nIElEQlN0b3JhZ2VNYW5hZ2VyOjppZGJTdG9yYWdlT3JpZ2luRGlyZWN0b3J5
KGNvbnN0IFN0cmluZyYgcm9vdERpcmVjdG9yeSwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2lu
JiBvcmlnaW4pCit7CisgICAgaWYgKHJvb3REaXJlY3RvcnkuaXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm4gZW1wdHlTdHJpbmcoKTsKKworICAgIFN0cmluZyBvcmlnaW5EaXJlY3RvcnkgPSBXZWJD
b3JlOjpJREJEYXRhYmFzZUlkZW50aWZpZXI6OmRhdGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVUb1Jv
b3Qob3JpZ2luLnRvcE9yaWdpbiwgb3JpZ2luLmNsaWVudE9yaWdpbiwgcm9vdERpcmVjdG9yeSwg
InYxIik7CisgICAgU3RyaW5nIG9sZE9yaWdpbkRpcmVjdG9yeSA9IFdlYkNvcmU6OklEQkRhdGFi
YXNlSWRlbnRpZmllcjo6ZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9vdChvcmlnaW4udG9w
T3JpZ2luLCBvcmlnaW4uY2xpZW50T3JpZ2luLCByb290RGlyZWN0b3J5LCAidjAiKTsKKyAgICBt
aWdyYXRlT3JpZ2luRGF0YShvbGRPcmlnaW5EaXJlY3RvcnksIG9yaWdpbkRpcmVjdG9yeSk7CisK
KyAgICByZXR1cm4gb3JpZ2luRGlyZWN0b3J5OworfQorCit1aW50NjRfdCBJREJTdG9yYWdlTWFu
YWdlcjo6aWRiU3RvcmFnZVNpemUoY29uc3QgU3RyaW5nJiBvcmlnaW5EaXJlY3RvcnkpCit7Cisg
ICAgaWYgKG9yaWdpbkRpcmVjdG9yeS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiAwOworCisg
ICAgcmV0dXJuIFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpkYXRh
YmFzZXNTaXplRm9yRGlyZWN0b3J5KG9yaWdpbkRpcmVjdG9yeSk7Cit9CisKK3N0YXRpYyB2b2lk
IGdldE9yaWdpbnNGb3JWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvblBhdGgsIEhhc2hTZXQ8
V2ViQ29yZTo6Q2xpZW50T3JpZ2luPiYgb3JpZ2lucykKK3sKKyAgICBmb3IgKGF1dG8mIHRvcERh
dGFiYXNlSWRlbnRpZmllciA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkodmVyc2lvblBhdGgp
KSB7CisgICAgICAgIGF1dG8gdG9wT3JpZ2luID0gV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
Ojpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKHRvcERhdGFiYXNlSWRlbnRpZmllcik7CisgICAgICAg
IGlmICghdG9wT3JpZ2luKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgYXV0byB0
b3BPcmlnaW5EaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
dmVyc2lvblBhdGgsIHRvcERhdGFiYXNlSWRlbnRpZmllcik7CisgICAgICAgIGZvciAoYXV0byYg
ZGF0YWJhc2VJZGVudGlmaWVyIDogRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeSh0b3BPcmlnaW5E
aXJlY3RvcnkpKSB7CisgICAgICAgICAgICBhdXRvIG9yaWdpbkRpcmVjdG9yeSA9IEZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0b3BPcmlnaW5EaXJlY3RvcnksIGRhdGFiYXNl
SWRlbnRpZmllcik7CisgICAgICAgICAgICBpZiAoRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJl
Y3Rvcnkob3JpZ2luRGlyZWN0b3J5KSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAg
ICAgICAgICAgYXV0byBjbGllbnRPcmlnaW4gPSBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE6
OmZyb21EYXRhYmFzZUlkZW50aWZpZXIoZGF0YWJhc2VJZGVudGlmaWVyKTsKKyAgICAgICAgICAg
IC8vIFRoaXMgaXMgbm90IG9yaWdpbiBkaXJlY3RvcnksIGJ1dCBtYXkgYmUgZGF0YWJhc2UgZGly
ZWN0b3J5LgorICAgICAgICAgICAgaWYgKCFjbGllbnRPcmlnaW4pIHsKKyAgICAgICAgICAgICAg
ICBvcmlnaW5zLmFkZChXZWJDb3JlOjpDbGllbnRPcmlnaW4geyAqdG9wT3JpZ2luLCAqdG9wT3Jp
Z2luIH0pOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBvcmlnaW5zLmFkZChXZWJDb3JlOjpDbGllbnRPcmlnaW4geyAqdG9wT3JpZ2luLCAq
Y2xpZW50T3JpZ2luIH0pOworICAgICAgICB9CisKKyAgICAgICAgLy8gV2UgbWF5IGhhdmUgZGVs
ZXRlZCBlbXB0eSBjaGlsZHJlbiBkaXJlY3RvcmllcyBhYm92ZSwgd2hpY2ggbWFrZSB0aGlzIGRp
cmVjdG9yeSBlbXB0eS4KKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3Rvcnko
dG9wT3JpZ2luRGlyZWN0b3J5KTsKKyAgICB9Cit9CisKK0hhc2hTZXQ8V2ViQ29yZTo6Q2xpZW50
T3JpZ2luPiBJREJTdG9yYWdlTWFuYWdlcjo6b3JpZ2luc09mSURCU3RvcmFnZURhdGEoY29uc3Qg
U3RyaW5nJiByb290RGlyZWN0b3J5KQoreworICAgIEhhc2hTZXQ8V2ViQ29yZTo6Q2xpZW50T3Jp
Z2luPiBvcmlnaW5zOworICAgIGlmIChyb290RGlyZWN0b3J5LmlzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuIG9yaWdpbnM7CisKKyAgICBnZXRPcmlnaW5zRm9yVmVyc2lvbihGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQocm9vdERpcmVjdG9yeSwgInYwIiksIG9yaWdpbnMpOwor
ICAgIGdldE9yaWdpbnNGb3JWZXJzaW9uKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChyb290RGlyZWN0b3J5LCAidjEiKSwgb3JpZ2lucyk7CisKKyAgICByZXR1cm4gb3JpZ2lu
czsKK30KKworSURCU3RvcmFnZU1hbmFnZXI6OklEQlN0b3JhZ2VNYW5hZ2VyKGNvbnN0IFN0cmlu
ZyYgcGF0aCwgSURCU3RvcmFnZVJlZ2lzdHJ5JiByZWdpc3RyeSwgUXVvdGFDaGVja0Z1bmN0aW9u
JiYgcXVvdGFDaGVja0Z1bmN0aW9uKQorICAgIDogbV9wYXRoKHBhdGgpCisgICAgLCBtX3JlZ2lz
dHJ5KHJlZ2lzdHJ5KQorICAgICwgbV9xdW90YUNoZWNrRnVuY3Rpb24oV1RGTW92ZShxdW90YUNo
ZWNrRnVuY3Rpb24pKQoreworfQorCitib29sIElEQlN0b3JhZ2VNYW5hZ2VyOjppc0FjdGl2ZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuICFtX2RhdGFiYXNlcy5pc0VtcHR5KCk7Cit9CisKK2Jvb2wg
SURCU3RvcmFnZU1hbmFnZXI6Omhhc0RhdGFJbk1lbW9yeSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IFdURjo6YW55T2YobV9kYXRhYmFzZXMudmFsdWVzKCksIFsmXSAoYXV0byYgZGF0YWJhc2UpIHsK
KyAgICAgICAgcmV0dXJuIGRhdGFiYXNlLT5oYXNEYXRhSW5NZW1vcnkoKTsKKyAgICB9KTsKK30K
Kwordm9pZCBJREJTdG9yYWdlTWFuYWdlcjo6Y2xvc2VEYXRhYmFzZXNGb3JEZWxldGlvbigpCit7
CisgICAgZm9yIChhdXRvJiBkYXRhYmFzZSA6IG1fZGF0YWJhc2VzLnZhbHVlcygpKQorICAgICAg
ICBkYXRhYmFzZS0+aW1tZWRpYXRlQ2xvc2UoKTsKKworICAgIG1fZGF0YWJhc2VzLmNsZWFyKCk7
Cit9CisKK3ZvaWQgSURCU3RvcmFnZU1hbmFnZXI6OnN0b3BEYXRhYmFzZUFjdGl2aXRpZXNGb3JT
dXNwZW5kKCkKK3sKKyAgICBpZiAobV9wYXRoLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgZm9yIChhdXRvJiBkYXRhYmFzZSA6IG1fZGF0YWJhc2VzLnZhbHVlcygpKSB7CisgICAg
ICAgIC8vIE9ubHkgc3RvcCBkYXRhYmFzZXMgd2l0aCBub24tZXBoZW1lcmFsIGJhY2tpbmcgc3Rv
cmUgdGhhdCBjYW4gaG9sZCBkYXRhYmFzZSBmaWxlIGxvY2suCisgICAgICAgIGlmICghZGF0YWJh
c2UtPmlkZW50aWZpZXIoKS5pc1RyYW5zaWVudCgpKQorICAgICAgICAgICAgZGF0YWJhc2UtPmFi
b3J0QWN0aXZlVHJhbnNhY3Rpb25zKCk7CisgICAgfQorfQorCitXZWJDb3JlOjpJREJTZXJ2ZXI6
OlVuaXF1ZUlEQkRhdGFiYXNlJiBJREJTdG9yYWdlTWFuYWdlcjo6Z2V0T3JDcmVhdGVVbmlxdWVJ
REJEYXRhYmFzZShjb25zdCBXZWJDb3JlOjpJREJEYXRhYmFzZUlkZW50aWZpZXImIGlkZW50aWZp
ZXIpCit7CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX2RhdGFiYXNlcy5hZGQoaWRlbnRpZmllciwg
bnVsbHB0cik7CisgICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICBhZGRSZXN1
bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1
ZUlEQkRhdGFiYXNlPigqdGhpcywgaWRlbnRpZmllcik7CisKKyAgICByZXR1cm4gKmFkZFJlc3Vs
dC5pdGVyYXRvci0+dmFsdWU7Cit9CisKK3ZvaWQgSURCU3RvcmFnZU1hbmFnZXI6Om9wZW5EYXRh
YmFzZShXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub0NsaWVudCYgY29ubmVjdGlv
blRvQ2xpZW50LCBjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEpCit7
CisgICAgYXV0byYgZGF0YWJhc2UgPSBnZXRPckNyZWF0ZVVuaXF1ZUlEQkRhdGFiYXNlKHJlcXVl
c3REYXRhLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICBkYXRhYmFzZS5vcGVuRGF0YWJhc2VD
b25uZWN0aW9uKGNvbm5lY3Rpb25Ub0NsaWVudCwgcmVxdWVzdERhdGEpOworfQorCit2b2lkIElE
QlN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVEYXRhYmFzZShXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQkNv
bm5lY3Rpb25Ub0NsaWVudCYgY29ubmVjdGlvblRvQ2xpZW50LCBjb25zdCBXZWJDb3JlOjpJREJS
ZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEpCit7CisgICAgYXV0byYgZGF0YWJhc2UgPSBnZXRPckNy
ZWF0ZVVuaXF1ZUlEQkRhdGFiYXNlKHJlcXVlc3REYXRhLmRhdGFiYXNlSWRlbnRpZmllcigpKTsK
KyAgICBkYXRhYmFzZS5oYW5kbGVEZWxldGUoY29ubmVjdGlvblRvQ2xpZW50LCByZXF1ZXN0RGF0
YSk7CisKKyAgICAvLyBUaGlzIGRhdGFiYXNlIGlzIGNyZWF0ZWQgZm9yIGRlbGV0aW9uLgorICAg
IGlmIChkYXRhYmFzZS50cnlDbG9zZSgpKQorICAgICAgICBtX2RhdGFiYXNlcy5yZW1vdmUoZGF0
YWJhc2UuaWRlbnRpZmllcigpKTsKK30KKworVmVjdG9yPFdlYkNvcmU6OklEQkRhdGFiYXNlTmFt
ZUFuZFZlcnNpb24+IElEQlN0b3JhZ2VNYW5hZ2VyOjpnZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVy
c2lvbnMoKQoreworICAgIFZlY3RvcjxXZWJDb3JlOjpJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9u
PiByZXN1bHQ7CisgICAgSGFzaFNldDxTdHJpbmc+IHZpc2l0ZWREYXRhYmFzZVBhdGhzOworICAg
IGZvciAoYXV0byYgZGF0YWJhc2UgOiBtX2RhdGFiYXNlcy52YWx1ZXMoKSkgeworICAgICAgICBh
dXRvIHBhdGggPSBkYXRhYmFzZS0+ZmlsZVBhdGgoKTsKKyAgICAgICAgaWYgKCFwYXRoLmlzRW1w
dHkoKSkKKyAgICAgICAgICAgIHZpc2l0ZWREYXRhYmFzZVBhdGhzLmFkZChwYXRoKTsKKworICAg
ICAgICBpZiAoYXV0byBuYW1lQW5kVmVyc2lvbiA9IGRhdGFiYXNlLT5uYW1lQW5kVmVyc2lvbigp
KQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChXVEZNb3ZlKCpuYW1lQW5kVmVyc2lvbikpOwor
ICAgIH0KKworICAgIGF1dG8gZGF0YWJhc2VJZGVudGlmaWVycyA9IEZpbGVTeXN0ZW06Omxpc3RE
aXJlY3RvcnkobV9wYXRoKTsKKyAgICBmb3IgKGF1dG8gaWRlbnRpZmllciA6IGRhdGFiYXNlSWRl
bnRpZmllcnMpIHsKKyAgICAgICAgYXV0byBkYXRhYmFzZURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3BhdGgsIGlkZW50aWZpZXIpOworICAgICAgICBh
dXRvIGRhdGFiYXNlUGF0aCA9IFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0
b3JlOjpmdWxsRGF0YWJhc2VQYXRoRm9yRGlyZWN0b3J5KGRhdGFiYXNlRGlyZWN0b3J5KTsKKyAg
ICAgICAgaWYgKHZpc2l0ZWREYXRhYmFzZVBhdGhzLmNvbnRhaW5zKGRhdGFiYXNlUGF0aCkpCisg
ICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAoYXV0byBuYW1lQW5kVmVyc2lvbiA9
IFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpkYXRhYmFzZU5hbWVB
bmRWZXJzaW9uRnJvbUZpbGUoZGF0YWJhc2VQYXRoKSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmQoV1RGTW92ZSgqbmFtZUFuZFZlcnNpb24pKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0
OworfQorCit2b2lkIElEQlN0b3JhZ2VNYW5hZ2VyOjpvcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKGNv
bnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkKK3sKKyAgICBhdXRvKiBk
YXRhYmFzZSA9IG1fZGF0YWJhc2VzLmdldChyZXF1ZXN0RGF0YS5kYXRhYmFzZUlkZW50aWZpZXIo
KSk7CisgICAgaWYgKCFkYXRhYmFzZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZGF0YWJhc2Ut
Pm9wZW5EQlJlcXVlc3RDYW5jZWxsZWQocmVxdWVzdERhdGEucmVxdWVzdElkZW50aWZpZXIoKSk7
CisKKyAgICAvLyBEYXRhYmFzZSBiZWNvbWVzIGlkbGUgYWZ0ZXIgcmVxdWVzdCBpcyBjYW5jZWxs
ZWQuCisgICAgaWYgKGRhdGFiYXNlLT50cnlDbG9zZSgpKQorICAgICAgICBtX2RhdGFiYXNlcy5y
ZW1vdmUoZGF0YWJhc2UtPmlkZW50aWZpZXIoKSk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZU1hbmFn
ZXI6OnJlZ2lzdGVyQ29ubmVjdGlvbihXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFi
YXNlQ29ubmVjdGlvbiYgY29ubmVjdGlvbikKK3sKKyAgICBtX3JlZ2lzdHJ5LnJlZ2lzdGVyQ29u
bmVjdGlvbihjb25uZWN0aW9uKTsKK30KKwordm9pZCBJREJTdG9yYWdlTWFuYWdlcjo6dW5yZWdp
c3RlckNvbm5lY3Rpb24oV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24pCit7CisgICAgbV9yZWdpc3RyeS51bnJlZ2lzdGVyQ29ubmVjdGlv
bihjb25uZWN0aW9uKTsKK30KKwordm9pZCBJREJTdG9yYWdlTWFuYWdlcjo6cmVnaXN0ZXJUcmFu
c2FjdGlvbihXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24m
IHRyYW5zYWN0aW9uKQoreworICAgIG1fcmVnaXN0cnkucmVnaXN0ZXJUcmFuc2FjdGlvbih0cmFu
c2FjdGlvbik7Cit9CisKK3ZvaWQgSURCU3RvcmFnZU1hbmFnZXI6OnVucmVnaXN0ZXJUcmFuc2Fj
dGlvbihXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRy
YW5zYWN0aW9uKQoreworICAgIG1fcmVnaXN0cnkudW5yZWdpc3RlclRyYW5zYWN0aW9uKHRyYW5z
YWN0aW9uKTsKK30KKworc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklEQlNlcnZlcjo6SURCQmFj
a2luZ1N0b3JlPiBJREJTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlQmFja2luZ1N0b3JlKGNvbnN0IFdl
YkNvcmU6OklEQkRhdGFiYXNlSWRlbnRpZmllciYgaWRlbnRpZmllcikKK3sKKyAgICBpZiAobV9w
YXRoLmlzRW1wdHkoKSB8fCBpZGVudGlmaWVyLmlzVHJhbnNpZW50KCkpCisgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5SURCQmFja2luZ1N0b3JlPihp
ZGVudGlmaWVyKTsKKworICAgIGF1dG8gbmFtZSA9IFdlYkNvcmU6OlNRTGl0ZUZpbGVTeXN0ZW06
OmNvbXB1dGVIYXNoRm9yRmlsZU5hbWUoaWRlbnRpZmllci5kYXRhYmFzZU5hbWUoKSk7CisgICAg
cmV0dXJuIG1ha2VVbmlxdWU8V2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3Rv
cmU+KGlkZW50aWZpZXIsIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3Bh
dGgsIG5hbWUpKTsKK30KKwordm9pZCBJREJTdG9yYWdlTWFuYWdlcjo6cmVxdWVzdFNwYWNlKGNv
bnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIHVpbnQ2NF90IHNpemUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgbV9xdW90YUNoZWNr
RnVuY3Rpb24oc2l6ZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c3RvcmFnZS9JREJTdG9yYWdlTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9zdG9yYWdlL0lEQlN0b3JhZ2VNYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGFmZjQ3NDRhYzhkZTA4
OWU2ZDBlZDQ4MWJjODFiYWE1MDAxOGM3NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlTWFuYWdlci5oCkBAIC0wLDAgKzEs
ODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPFdlYkNvcmUvVW5p
cXVlSURCRGF0YWJhc2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1VuaXF1ZUlEQkRhdGFiYXNlTWFu
YWdlci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBJREJSZXF1ZXN0RGF0YTsKKwor
bmFtZXNwYWNlIElEQlNlcnZlciB7CitjbGFzcyBJREJCYWNraW5nU3RvcmU7CitjbGFzcyBJREJD
b25uZWN0aW9uVG9DbGllbnQ7CitjbGFzcyBVbmlxdWVJREJUcmFuc2FjdGlvbjsKK30KKworc3Ry
dWN0IElEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb247Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitjbGFzcyBJREJTdG9yYWdlUmVnaXN0cnk7CisKK2NsYXNzIElEQlN0b3JhZ2VNYW5hZ2VyIGZp
bmFsIDogcHVibGljIFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VNYW5hZ2Vy
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgU3RyaW5nIGlkYlN0b3JhZ2VPcmlnaW5EaXJlY3Rvcnko
Y29uc3QgU3RyaW5nJiByb290RGlyZWN0b3J5LCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4m
KTsKKyAgICBzdGF0aWMgdWludDY0X3QgaWRiU3RvcmFnZVNpemUoY29uc3QgU3RyaW5nJiBvcmln
aW5EaXJlY3RvcnkpOworICAgIHN0YXRpYyBIYXNoU2V0PFdlYkNvcmU6OkNsaWVudE9yaWdpbj4g
b3JpZ2luc09mSURCU3RvcmFnZURhdGEoY29uc3QgU3RyaW5nJiByb290RGlyZWN0b3J5KTsKKwor
ICAgIHVzaW5nIFF1b3RhQ2hlY2tGdW5jdGlvbiA9IEZ1bmN0aW9uPHZvaWQodWludDY0X3Qgc3Bh
Y2VSZXF1ZXN0ZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpPjsKKyAgICBJREJT
dG9yYWdlTWFuYWdlcihjb25zdCBTdHJpbmcmIHBhdGgsIElEQlN0b3JhZ2VSZWdpc3RyeSYsIFF1
b3RhQ2hlY2tGdW5jdGlvbiYmKTsKKyAgICBib29sIGlzQWN0aXZlKCkgY29uc3Q7CisgICAgYm9v
bCBoYXNEYXRhSW5NZW1vcnkoKSBjb25zdDsKKyAgICB2b2lkIGNsb3NlRGF0YWJhc2VzRm9yRGVs
ZXRpb24oKTsKKyAgICB2b2lkIHN0b3BEYXRhYmFzZUFjdGl2aXRpZXNGb3JTdXNwZW5kKCk7CisK
KyAgICB2b2lkIG9wZW5EYXRhYmFzZShXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQkNvbm5lY3Rpb25U
b0NsaWVudCYsIGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJik7CisgICAgdm9pZCBvcGVu
REJSZXF1ZXN0Q2FuY2VsbGVkKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJik7CisgICAg
dm9pZCBkZWxldGVEYXRhYmFzZShXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub0Ns
aWVudCYsIGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJik7CisgICAgVmVjdG9yPFdlYkNv
cmU6OklEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24+IGdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJz
aW9ucygpOworCitwcml2YXRlOgorICAgIFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0
YWJhc2UmIGdldE9yQ3JlYXRlVW5pcXVlSURCRGF0YWJhc2UoY29uc3QgV2ViQ29yZTo6SURCRGF0
YWJhc2VJZGVudGlmaWVyJik7CisKKyAgICAvLyBXZWJDb3JlOjpVbmlxdWVJREJEYXRhYmFzZU1h
bmFnZXIKKyAgICB2b2lkIHJlZ2lzdGVyQ29ubmVjdGlvbihXZWJDb3JlOjpJREJTZXJ2ZXI6OlVu
aXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYpIGZpbmFsOworICAgIHZvaWQgdW5yZWdpc3RlckNv
bm5lY3Rpb24oV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24m
KSBmaW5hbDsKKyAgICB2b2lkIHJlZ2lzdGVyVHJhbnNhY3Rpb24oV2ViQ29yZTo6SURCU2VydmVy
OjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJikgZmluYWw7CisgICAgdm9pZCB1bnJlZ2lz
dGVyVHJhbnNhY3Rpb24oV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5z
YWN0aW9uJikgZmluYWw7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklEQlNlcnZlcjo6
SURCQmFja2luZ1N0b3JlPiBjcmVhdGVCYWNraW5nU3RvcmUoY29uc3QgV2ViQ29yZTo6SURCRGF0
YWJhc2VJZGVudGlmaWVyJikgZmluYWw7CisgICAgdm9pZCByZXF1ZXN0U3BhY2UoY29uc3QgV2Vi
Q29yZTo6Q2xpZW50T3JpZ2luJiwgdWludDY0X3Qgc2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJikgZmluYWw7CisKKyAgICBTdHJpbmcgbV9wYXRoOworICAgIElEQlN0b3JhZ2VS
ZWdpc3RyeSYgbV9yZWdpc3RyeTsKKyAgICBRdW90YUNoZWNrRnVuY3Rpb24gbV9xdW90YUNoZWNr
RnVuY3Rpb247CisgICAgSGFzaE1hcDxXZWJDb3JlOjpJREJEYXRhYmFzZUlkZW50aWZpZXIsIHN0
ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlPj4gbV9k
YXRhYmFzZXM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlUmVnaXN0cnkuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VSZWdpc3RyeS5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYzYzYWI1ZTI1NTE2ZWU2MGY1ZjY0MGY1NTFlMWY5YmExYzllYTYxYQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9J
REJTdG9yYWdlUmVnaXN0cnkuY3BwCkBAIC0wLDAgKzEsMTAxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIklEQlN0b3JhZ2VSZWdpc3RyeS5oIgorCisjaW5j
bHVkZSAiSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VbmlxdWVJ
REJEYXRhYmFzZVRyYW5zYWN0aW9uLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitJREJTdG9y
YWdlUmVnaXN0cnk6OklEQlN0b3JhZ2VSZWdpc3RyeSgpID0gZGVmYXVsdDsKKworV2ViQ29yZTo6
SURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnQmIElEQlN0b3JhZ2VSZWdpc3RyeTo6ZW5z
dXJlQ29ubmVjdGlvblRvQ2xpZW50KElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgY29ubmVjdGlv
biwgV2ViQ29yZTo6SURCQ29ubmVjdGlvbklkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBh
dXRvIGFkZFJlc3VsdCA9IG1fY29ubmVjdGlvbnNUb0NsaWVudC5hZGQoaWRlbnRpZmllciwgbnVs
bHB0cik7CisgICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICBhZGRSZXN1bHQu
aXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50
Pihjb25uZWN0aW9uLCBpZGVudGlmaWVyKTsKKworICAgIEFTU0VSVChhZGRSZXN1bHQuaXRlcmF0
b3ItPnZhbHVlLT5pcGNDb25uZWN0aW9uKCkgPT0gY29ubmVjdGlvbik7CisgICAgcmV0dXJuIGFk
ZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPmNvbm5lY3Rpb25Ub0NsaWVudCgpOworfQorCit2b2lk
IElEQlN0b3JhZ2VSZWdpc3RyeTo6cmVtb3ZlQ29ubmVjdGlvblRvQ2xpZW50KElQQzo6Q29ubmVj
dGlvbjo6VW5pcXVlSUQgY29ubmVjdGlvbikKK3sKKyAgICBhdXRvIGFsbENvbm5lY3Rpb25zVG9D
bGllbnQgPSBzdGQ6OmV4Y2hhbmdlKG1fY29ubmVjdGlvbnNUb0NsaWVudCwgeyB9KTsKKyAgICBm
b3IgKGF1dG8mIFtpZGVudGlmaWVyLCBjb25uZWN0aW9uVG9DbGllbnRdIDogYWxsQ29ubmVjdGlv
bnNUb0NsaWVudCkgeworICAgICAgICBpZiAoY29ubmVjdGlvblRvQ2xpZW50LT5pcGNDb25uZWN0
aW9uKCkgIT0gY29ubmVjdGlvbikgeworICAgICAgICAgICAgbV9jb25uZWN0aW9uc1RvQ2xpZW50
LmFkZChpZGVudGlmaWVyLCBXVEZNb3ZlKGNvbm5lY3Rpb25Ub0NsaWVudCkpOworICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgY29ubmVjdGlvblRvQ2xpZW50LT5jb25u
ZWN0aW9uVG9DbGllbnQoKS5jb25uZWN0aW9uVG9DbGllbnRDbG9zZWQoKTsKKyAgICB9Cit9CisK
K3ZvaWQgSURCU3RvcmFnZVJlZ2lzdHJ5OjpyZWdpc3RlckNvbm5lY3Rpb24oV2ViQ29yZTo6SURC
U2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCit7CisgICAg
YXV0byBpZGVudGlmaWVyID0gY29ubmVjdGlvbi5pZGVudGlmaWVyKCk7CisgICAgQVNTRVJUKCFt
X2Nvbm5lY3Rpb25zLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKKworICAgIG1fY29ubmVjdGlvbnMu
YWRkKGlkZW50aWZpZXIsIGNvbm5lY3Rpb24pOworfQorCit2b2lkIElEQlN0b3JhZ2VSZWdpc3Ry
eTo6dW5yZWdpc3RlckNvbm5lY3Rpb24oV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRh
YmFzZUNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCit7CisgICAgYXV0byBpZGVudGlmaWVyID0gY29u
bmVjdGlvbi5pZGVudGlmaWVyKCk7CisgICAgQVNTRVJUKG1fY29ubmVjdGlvbnMuY29udGFpbnMo
aWRlbnRpZmllcikpOworCisgICAgbV9jb25uZWN0aW9ucy5yZW1vdmUoaWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgSURCU3RvcmFnZVJlZ2lzdHJ5OjpyZWdpc3RlclRyYW5zYWN0aW9uKFdlYkNvcmU6
OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCit7
CisgICAgYXV0byBpZGVudGlmaWVyID0gdHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKTsK
KyAgICBBU1NFUlQoIW1fdHJhbnNhY3Rpb25zLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKKworICAg
IG1fdHJhbnNhY3Rpb25zLmFkZChpZGVudGlmaWVyLCB0cmFuc2FjdGlvbik7Cit9CisKK3ZvaWQg
SURCU3RvcmFnZVJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyVHJhbnNhY3Rpb24oV2ViQ29yZTo6SURCU2Vy
dmVyOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKK3sKKyAgICBh
dXRvIGlkZW50aWZpZXIgPSB0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpOworICAgIEFT
U0VSVChtX3RyYW5zYWN0aW9ucy5jb250YWlucyhpZGVudGlmaWVyKSk7CisKKyAgICBtX3RyYW5z
YWN0aW9ucy5yZW1vdmUoaWRlbnRpZmllcik7Cit9CisKK1dlYkNvcmU6OklEQlNlcnZlcjo6VW5p
cXVlSURCRGF0YWJhc2VDb25uZWN0aW9uKiBJREJTdG9yYWdlUmVnaXN0cnk6OmNvbm5lY3Rpb24o
dWludDY0X3QgaWRlbnRpZmllcikKK3sKKyAgICByZXR1cm4gbV9jb25uZWN0aW9ucy5nZXQoaWRl
bnRpZmllcikuZ2V0KCk7Cit9CisKK1dlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJh
c2VUcmFuc2FjdGlvbiogSURCU3RvcmFnZVJlZ2lzdHJ5Ojp0cmFuc2FjdGlvbihXZWJDb3JlOjpJ
REJSZXNvdXJjZUlkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICByZXR1cm4gbV90cmFuc2Fj
dGlvbnMuZ2V0KGlkZW50aWZpZXIpLmdldCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9y
YWdlUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJT
dG9yYWdlUmVnaXN0cnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzg0ZGNmNGY2MTg2ODdiZTZjMjRlZTMyNjNj
YTQ4Zjg4Nzg3NmFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VSZWdpc3RyeS5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRl
IDxXZWJDb3JlL0lEQlJlc291cmNlSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRy
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBJREJTZXJ2ZXIgeworY2xhc3Mg
VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uOworY2xhc3MgVW5pcXVlSURCRGF0YWJhc2VUcmFu
c2FjdGlvbjsKK30KK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIElEQlN0b3JhZ2VD
b25uZWN0aW9uVG9DbGllbnQ7CisKK2NsYXNzIElEQlN0b3JhZ2VSZWdpc3RyeSB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgSURCU3RvcmFnZVJlZ2lzdHJ5KCk7
CisgICAgV2ViQ29yZTo6SURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnQmIGVuc3VyZUNv
bm5lY3Rpb25Ub0NsaWVudChJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBXZWJDb3JlOjpJREJD
b25uZWN0aW9uSWRlbnRpZmllcik7CisgICAgdm9pZCByZW1vdmVDb25uZWN0aW9uVG9DbGllbnQo
SVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCk7CisgICAgdm9pZCByZWdpc3RlckNvbm5lY3Rpb24o
V2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mKTsKKyAgICB2
b2lkIHVucmVnaXN0ZXJDb25uZWN0aW9uKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0
YWJhc2VDb25uZWN0aW9uJik7CisgICAgV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRh
YmFzZUNvbm5lY3Rpb24qIGNvbm5lY3Rpb24odWludDY0X3QgaWRlbnRpZmllcik7CisgICAgdm9p
ZCByZWdpc3RlclRyYW5zYWN0aW9uKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJh
c2VUcmFuc2FjdGlvbiYpOworICAgIHZvaWQgdW5yZWdpc3RlclRyYW5zYWN0aW9uKFdlYkNvcmU6
OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYpOworICAgIFdlYkNvcmU6
OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24oV2Vi
Q29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyKTsKKworcHJpdmF0ZToKKyAgICBIYXNoTWFwPFdl
YkNvcmU6OklEQkNvbm5lY3Rpb25JZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8SURCU3RvcmFn
ZUNvbm5lY3Rpb25Ub0NsaWVudD4+IG1fY29ubmVjdGlvbnNUb0NsaWVudDsKKyAgICBIYXNoTWFw
PHVpbnQ2NF90LCBXZWFrUHRyPFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VD
b25uZWN0aW9uPj4gbV9jb25uZWN0aW9uczsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OklEQlJlc291
cmNlSWRlbnRpZmllciwgV2Vha1B0cjxXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFi
YXNlVHJhbnNhY3Rpb24+PiBtX3RyYW5zYWN0aW9uczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05l
dHdvcmtTdG9yYWdlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0
b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmNwcAppbmRleCA4MTNlNmU5NWExM2FiZTM5MTg2
ZDE5YjJkYWIyODdiYmI1NTI0Zjc5Li5kMmI3ZTE2Njg3OTBmMTZkNmJmNDg0MjllYzBjMWVjN2Y0
MzVkNWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2Uv
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmNwcApAQCAtMjYsMTggKzI2LDI2IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmgi
CiAKKyNpbmNsdWRlICJDYWNoZVN0b3JhZ2VFbmdpbmUuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVt
U3RvcmFnZUhhbmRsZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbVN0b3JhZ2VNYW5h
Z2VyLmgiCisjaW5jbHVkZSAiSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5oIgorI2luY2x1
ZGUgIklEQlN0b3JhZ2VNYW5hZ2VyLmgiCisjaW5jbHVkZSAiSURCU3RvcmFnZVJlZ2lzdHJ5Lmgi
CiAjaW5jbHVkZSAiTG9jYWxTdG9yYWdlTWFuYWdlci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
KyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJOZXR3
b3JrU3RvcmFnZU1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk9yaWdpblN0b3JhZ2VNYW5h
Z2VyLmgiCisjaW5jbHVkZSAiUXVvdGFNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU2Vzc2lvblN0b3Jh
Z2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFyZWFCYXNlLmgiCiAjaW5jbHVkZSAiU3Rv
cmFnZUFyZWFNYXBNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhUmVnaXN0cnkuaCIK
ICNpbmNsdWRlICJXZWJzaXRlRGF0YVR5cGUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5
T3JpZ2luRGF0YS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0
aW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmg+
CiAjaW5jbHVkZSA8cGFsL2NyeXB0by9DcnlwdG9EaWdlc3QuaD4KICNpbmNsdWRlIDx3dGYvU2Nv
cGUuaD4KICNpbmNsdWRlIDx3dGYvU3VzcGVuZGFibGVXb3JrUXVldWUuaD4KQEAgLTEwMCwyMiAr
MTA4LDI4IEBAIHN0YXRpYyB2b2lkIGRlbGV0ZU9yaWdpbkZpbGVJZk5lY2Vzc2FyeShjb25zdCBT
dHJpbmcmIGZpbGVQYXRoKQogICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGZpbGVQYXRo
KTsKIH0KIAotUmVmPE5ldHdvcmtTdG9yYWdlTWFuYWdlcj4gTmV0d29ya1N0b3JhZ2VNYW5hZ2Vy
OjpjcmVhdGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHBhdGgsIGNv
bnN0IFN0cmluZyYgY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCkKK1JlZjxOZXR3b3JrU3RvcmFnZU1h
bmFnZXI+IE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcm
IHBhdGgsIGNvbnN0IFN0cmluZyYgY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCwgY29uc3QgU3RyaW5n
JiBjdXN0b21JREJTdG9yYWdlUGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21DYWNoZVN0b3JhZ2VQ
YXRoLCB1aW50NjRfdCBkZWZhdWx0T3JpZ2luUXVvdGEsIHVpbnQ2NF90IGRlZmF1bHRUaGlyZFBh
cnR5T3JpZ2luUXVvdGEpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyKHNlc3Npb25JRCwgcGF0aCwgY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCkpOworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IE5ldHdvcmtTdG9yYWdlTWFuYWdlcihzZXNzaW9uSUQsIGNv
bm5lY3Rpb24sIHBhdGgsIGN1c3RvbUxvY2FsU3RvcmFnZVBhdGgsIGN1c3RvbUlEQlN0b3JhZ2VQ
YXRoLCBjdXN0b21DYWNoZVN0b3JhZ2VQYXRoLCBkZWZhdWx0T3JpZ2luUXVvdGEsIGRlZmF1bHRU
aGlyZFBhcnR5T3JpZ2luUXVvdGEpKTsKIH0KIAotTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpOZXR3
b3JrU3RvcmFnZU1hbmFnZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcm
IHBhdGgsIGNvbnN0IFN0cmluZyYgY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCkKK05ldHdvcmtTdG9y
YWdlTWFuYWdlcjo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIHBh
dGgsIGNvbnN0IFN0cmluZyYgY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCwgY29uc3QgU3RyaW5nJiBj
dXN0b21JREJTdG9yYWdlUGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21DYWNoZVN0b3JhZ2VQYXRo
LCB1aW50NjRfdCBkZWZhdWx0T3JpZ2luUXVvdGEsIHVpbnQ2NF90IGRlZmF1bHRUaGlyZFBhcnR5
T3JpZ2luUXVvdGEpCiAgICAgOiBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCiAgICAgLCBtX3F1ZXVl
KFN1c3BlbmRhYmxlV29ya1F1ZXVlOjpjcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuU3RvcmFnZSIp
KQorICAgICwgbV9kZWZhdWx0T3JpZ2luUXVvdGEoZGVmYXVsdE9yaWdpblF1b3RhKQorICAgICwg
bV9kZWZhdWx0VGhpcmRQYXJ0eU9yaWdpblF1b3RhKGRlZmF1bHRUaGlyZFBhcnR5T3JpZ2luUXVv
dGEpCisgICAgLCBtX3BhcmVudENvbm5lY3Rpb24oY29ubmVjdGlvbikKIHsKICAgICBBU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBwYXRoID0gcGF0aC5pc29sYXRlZENvcHkoKSwgY3Vz
dG9tTG9jYWxTdG9yYWdlUGF0aCA9IGNyb3NzVGhyZWFkQ29weShjdXN0b21Mb2NhbFN0b3JhZ2VQ
YXRoKV0oKSBtdXRhYmxlIHsKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IFJlZiB7ICp0aGlzIH0sIHBhdGggPSBwYXRoLmlzb2xhdGVkQ29weSgpLCBjdXN0b21M
b2NhbFN0b3JhZ2VQYXRoID0gY3Jvc3NUaHJlYWRDb3B5KGN1c3RvbUxvY2FsU3RvcmFnZVBhdGgp
LCBjdXN0b21JREJTdG9yYWdlUGF0aCA9IGNyb3NzVGhyZWFkQ29weShjdXN0b21JREJTdG9yYWdl
UGF0aCksIGN1c3RvbUNhY2hlU3RvcmFnZVBhdGggPSBjcm9zc1RocmVhZENvcHkoY3VzdG9tQ2Fj
aGVTdG9yYWdlUGF0aCldKCkgbXV0YWJsZSB7CiAgICAgICAgIG1fZmlsZVN5c3RlbVN0b3JhZ2VI
YW5kbGVSZWdpc3RyeSA9IG1ha2VVbmlxdWU8RmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3Ry
eT4oKTsKICAgICAgICAgbV9zdG9yYWdlQXJlYVJlZ2lzdHJ5ID0gbWFrZVVuaXF1ZTxTdG9yYWdl
QXJlYVJlZ2lzdHJ5PigpOworICAgICAgICBtX2lkYlN0b3JhZ2VSZWdpc3RyeSA9IG1ha2VVbmlx
dWU8SURCU3RvcmFnZVJlZ2lzdHJ5PigpOwogICAgICAgICBtX3BhdGggPSBwYXRoOwogICAgICAg
ICBtX2N1c3RvbUxvY2FsU3RvcmFnZVBhdGggPSBjdXN0b21Mb2NhbFN0b3JhZ2VQYXRoOworICAg
ICAgICBtX2N1c3RvbUlEQlN0b3JhZ2VQYXRoID0gY3VzdG9tSURCU3RvcmFnZVBhdGg7CisgICAg
ICAgIG1fY3VzdG9tQ2FjaGVTdG9yYWdlUGF0aCA9IGN1c3RvbUNhY2hlU3RvcmFnZVBhdGg7CiAg
ICAgICAgIGlmICghbV9wYXRoLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgYXV0byBzYWx0UGF0
aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3BhdGgsICJzYWx0Iik7
CiAgICAgICAgICAgICBtX3NhbHQgPSB2YWx1ZU9yRGVmYXVsdChGaWxlU3lzdGVtOjpyZWFkT3JN
YWtlU2FsdChzYWx0UGF0aCkpOwpAQCAtMTMxLDcgKzE0NSwxMCBAQCBOZXR3b3JrU3RvcmFnZU1h
bmFnZXI6On5OZXR3b3JrU3RvcmFnZU1hbmFnZXIoKQogCiBib29sIE5ldHdvcmtTdG9yYWdlTWFu
YWdlcjo6Y2FuSGFuZGxlVHlwZXMoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gdHlwZXMpCiB7
Ci0gICAgcmV0dXJuIHR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6TG9jYWxTdG9yYWdl
KSB8fCB0eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlNlc3Npb25TdG9yYWdlKSB8fCB0
eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkZpbGVTeXN0ZW0pOworICAgIHJldHVybiB0
eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkxvY2FsU3RvcmFnZSkKKyAgICAgICAgfHwg
dHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpTZXNzaW9uU3RvcmFnZSkKKyAgICAgICAg
fHwgdHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpGaWxlU3lzdGVtKQorICAgICAgICB8
fCB0eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcyk7CiB9
CiAKIHZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjbG9zZSgpCkBAIC0xNzAsNiArMTg3LDcg
QEAgdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnN0b3BSZWNlaXZpbmdNZXNzYWdlRnJvbUNv
bm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uJgogCiAgICAgY29ubmVjdGlvbi5yZW1vdmVXb3JrUXVl
dWVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpKTsKICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNvbm5lY3Rpb24gPSBjb25uZWN0aW9uLnVuaXF1ZUlEKCld
KCkgbXV0YWJsZSB7CisgICAgICAgIG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT5yZW1vdmVDb25uZWN0
aW9uVG9DbGllbnQoY29ubmVjdGlvbik7CiAgICAgICAgIG1fbG9jYWxPcmlnaW5TdG9yYWdlTWFu
YWdlcnMucmVtb3ZlSWYoWyZdKGF1dG8mIGVudHJ5KSB7CiAgICAgICAgICAgICBhdXRvJiBtYW5h
Z2VyID0gZW50cnkudmFsdWU7CiAgICAgICAgICAgICBtYW5hZ2VyLT5jb25uZWN0aW9uQ2xvc2Vk
KGNvbm5lY3Rpb24pOwpAQCAtMjIyLDcgKzI0MCwxNCBAQCBPcmlnaW5TdG9yYWdlTWFuYWdlciYg
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpsb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2VyKGNvbnN0IFdl
YgogICAgICAgICAgICAgICAgIHdyaXRlT3JpZ2luVG9GaWxlSWZOZWNlc3Nhcnkob3JpZ2luRmls
ZVBhdGgob3JpZ2luRGlyZWN0b3J5KSwgb3JpZ2luKTsKICAgICAgICAgICAgIH0pOwogICAgICAg
ICB9Ci0gICAgICAgIHJldHVybiBtYWtlVW5pcXVlPE9yaWdpblN0b3JhZ2VNYW5hZ2VyPihXVEZN
b3ZlKG9yaWdpbkRpcmVjdG9yeSksIExvY2FsU3RvcmFnZU1hbmFnZXI6OmxvY2FsU3RvcmFnZUZp
bGVQYXRoKG1fY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCwgb3JpZ2luKSk7CisgICAgICAgIGF1dG8g
bG9jYWxTdG9yYWdlUGF0aCA9IExvY2FsU3RvcmFnZU1hbmFnZXI6OmxvY2FsU3RvcmFnZUZpbGVQ
YXRoKG1fY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCwgb3JpZ2luKTsKKyAgICAgICAgYXV0byBpZGJT
dG9yYWdlUGF0aCA9IElEQlN0b3JhZ2VNYW5hZ2VyOjppZGJTdG9yYWdlT3JpZ2luRGlyZWN0b3J5
KG1fY3VzdG9tSURCU3RvcmFnZVBhdGgsIG9yaWdpbik7CisgICAgICAgIGF1dG8gY2FjaGVTdG9y
YWdlUGF0aCA9IENhY2hlU3RvcmFnZTo6RW5naW5lOjpzdG9yYWdlUGF0aChtX2N1c3RvbUNhY2hl
U3RvcmFnZVBhdGgsIG9yaWdpbik7CisgICAgICAgIHVpbnQ2NF90IHF1b3RhID0gb3JpZ2luLnRv
cE9yaWdpbiA9PSBvcmlnaW4uY2xpZW50T3JpZ2luID8gbV9kZWZhdWx0T3JpZ2luUXVvdGEgOiBt
X2RlZmF1bHRUaGlyZFBhcnR5T3JpZ2luUXVvdGE7CisgICAgICAgIFF1b3RhTWFuYWdlcjo6SW5j
cmVhc2VRdW90YUZ1bmN0aW9uIGluY3JlYXNlUXVvdGFGdW5jdGlvbiA9IFtzZXNzaW9uSUQgPSBt
X3Nlc3Npb25JRCwgb3JpZ2luLCBjb25uZWN0aW9uID0gbV9wYXJlbnRDb25uZWN0aW9uXSAoYXV0
byBpZGVudGlmaWVyLCBhdXRvIGN1cnJlbnRRdW90YSwgYXV0byBjdXJyZW50VXNhZ2UsIGF1dG8g
cmVxdWVzdGVkSW5jcmVhc2UpIG11dGFibGUgeworICAgICAgICAgICAgSVBDOjpDb25uZWN0aW9u
OjpzZW5kKGNvbm5lY3Rpb24sIE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpJbmNyZWFz
ZVF1b3RhKHNlc3Npb25JRCwgb3JpZ2luLCBpZGVudGlmaWVyLCBjdXJyZW50UXVvdGEsIGN1cnJl
bnRVc2FnZSwgcmVxdWVzdGVkSW5jcmVhc2UpLCAwKTsKKyAgICAgICAgfTsKKyAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8T3JpZ2luU3RvcmFnZU1hbmFnZXI+KHF1b3RhLCBXVEZNb3ZlKGluY3Jl
YXNlUXVvdGFGdW5jdGlvbiksIFdURk1vdmUob3JpZ2luRGlyZWN0b3J5KSwgV1RGTW92ZShsb2Nh
bFN0b3JhZ2VQYXRoKSwgV1RGTW92ZShpZGJTdG9yYWdlUGF0aCksIFdURk1vdmUoY2FjaGVTdG9y
YWdlUGF0aCkpOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKIH0KIApAQCAtMjgyLDYgKzMwNywx
NiBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y2xlYXJTdG9yYWdlRm9yVGVzdGluZyhD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgYwogICAgIH0pOwogfQogCit2b2lkIE5ldHdvcmtT
dG9yYWdlTWFuYWdlcjo6ZGlkSW5jcmVhc2VRdW90YShjb25zdCBXZWJDb3JlOjpDbGllbnRPcmln
aW4mIG9yaWdpbiwgUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyIGlkZW50aWZpZXIsIHN0
ZDo6b3B0aW9uYWw8dWludDY0X3Q+IG5ld1F1b3RhKQoreworICAgIEFTU0VSVChSdW5Mb29wOjpp
c01haW4oKSk7CisKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IFJlZiB7ICp0aGlzIH0sIG9yaWdpbiA9IGNyb3NzVGhyZWFkQ29weShvcmlnaW4pLCBpZGVudGlm
aWVyLCBuZXdRdW90YV0oKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGF1dG8gbWFuYWdlciA9IG1f
bG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcnMuZ2V0KG9yaWdpbikpCisgICAgICAgICAgICBtYW5h
Z2VyLT5xdW90YU1hbmFnZXIoKS5kaWRJbmNyZWFzZVF1b3RhKGlkZW50aWZpZXIsIG5ld1F1b3Rh
KTsKKyAgICB9KTsKK30KKwogdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmZpbGVTeXN0ZW1H
ZXREaXJlY3RvcnkoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpD
bGllbnRPcmlnaW4mIG9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxXZWJD
b3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4p
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkp
OwpAQCAtNDUyLDYgKzQ4Nyw5IEBAIEhhc2hTZXQ8V2ViQ29yZTo6Q2xpZW50T3JpZ2luPiBOZXR3
b3JrU3RvcmFnZU1hbmFnZXI6OmdldEFsbE9yaWdpbnMoKQogICAgIGZvciAoYXV0byYgb3JpZ2lu
IDogTG9jYWxTdG9yYWdlTWFuYWdlcjo6b3JpZ2luc09mTG9jYWxTdG9yYWdlRGF0YShtX2N1c3Rv
bUxvY2FsU3RvcmFnZVBhdGgpKQogICAgICAgICBhbGxPcmlnaW5zLmFkZChXZWJDb3JlOjpDbGll
bnRPcmlnaW4geyBvcmlnaW4sIG9yaWdpbiB9KTsKIAorICAgIGZvciAoYXV0byYgb3JpZ2luIDog
SURCU3RvcmFnZU1hbmFnZXI6Om9yaWdpbnNPZklEQlN0b3JhZ2VEYXRhKG1fY3VzdG9tSURCU3Rv
cmFnZVBhdGgpKQorICAgICAgICBhbGxPcmlnaW5zLmFkZChvcmlnaW4pOworCiAgICAgcmV0dXJu
IGFsbE9yaWdpbnM7CiB9CiAKQEAgLTU3OSwxMiArNjE3LDE3IEBAIHZvaWQgTmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyOjptb3ZlRGF0YShjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHNv
dXJjZSwKICAgICAgICAgYXV0byB0YXJnZXRPcmlnaW4gPSBXZWJDb3JlOjpDbGllbnRPcmlnaW4g
eyB0YXJnZXQsIHRhcmdldCB9OwogICAgICAgICAKICAgICAgICAgLy8gQ2xlYXIgZXhpc3Rpbmcg
ZGF0YSBvZiB0YXJnZXQgb3JpZ2luLgotICAgICAgICBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBl
PiB0eXBlcyA9IHsgV2Vic2l0ZURhdGFUeXBlOjpGaWxlU3lzdGVtLCBXZWJzaXRlRGF0YVR5cGU6
OkxvY2FsU3RvcmFnZSwgV2Vic2l0ZURhdGFUeXBlOjpTZXNzaW9uU3RvcmFnZSAgfTsKKyAgICAg
ICAgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gdHlwZXMgPSB7CisgICAgICAgICAgICBXZWJz
aXRlRGF0YVR5cGU6OkZpbGVTeXN0ZW0sCisgICAgICAgICAgICBXZWJzaXRlRGF0YVR5cGU6Okxv
Y2FsU3RvcmFnZSwKKyAgICAgICAgICAgIFdlYnNpdGVEYXRhVHlwZTo6U2Vzc2lvblN0b3JhZ2Us
CisgICAgICAgICAgICBXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcworICAgICAg
ICB9OwogICAgICAgICBsb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2VyKHRhcmdldE9yaWdpbikuZGVs
ZXRlRGF0YSh0eXBlcywgLVdhbGxUaW1lOjppbmZpbml0eSgpKTsKICAgICAgICAgcmVtb3ZlT3Jp
Z2luU3RvcmFnZU1hbmFnZXJJZlBvc3NpYmxlKHRhcmdldE9yaWdpbik7CiAKICAgICAgICAgLy8g
TW92ZSBkYXRhIGZyb20gc291cmNlIG9yaWdpbiB0byB0YXJnZXQgb3JpZ2luLgotICAgICAgICBs
b2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2VyKHNvdXJjZU9yaWdpbikubW92ZURhdGEob3JpZ2luRGly
ZWN0b3J5UGF0aChtX3BhdGgsIHRhcmdldE9yaWdpbiwgbV9zYWx0KSwgTG9jYWxTdG9yYWdlTWFu
YWdlcjo6bG9jYWxTdG9yYWdlRmlsZVBhdGgobV9jdXN0b21Mb2NhbFN0b3JhZ2VQYXRoLCB0YXJn
ZXRPcmlnaW4pKTsKKyAgICAgICAgbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcihzb3VyY2VPcmln
aW4pLm1vdmVEYXRhKG9yaWdpbkRpcmVjdG9yeVBhdGgobV9wYXRoLCB0YXJnZXRPcmlnaW4sIG1f
c2FsdCksIExvY2FsU3RvcmFnZU1hbmFnZXI6OmxvY2FsU3RvcmFnZUZpbGVQYXRoKG1fY3VzdG9t
TG9jYWxTdG9yYWdlUGF0aCwgdGFyZ2V0T3JpZ2luKSwgSURCU3RvcmFnZU1hbmFnZXI6OmlkYlN0
b3JhZ2VPcmlnaW5EaXJlY3RvcnkobV9jdXN0b21JREJTdG9yYWdlUGF0aCwgdGFyZ2V0T3JpZ2lu
KSk7CiAgICAgICAgIHJlbW92ZU9yaWdpblN0b3JhZ2VNYW5hZ2VySWZQb3NzaWJsZShzb3VyY2VP
cmlnaW4pOwogCiAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CkBAIC01OTksNiArNjQyLDggQEAgdm9pZCBOZXR3b3JrU3RvcmFnZU1h
bmFnZXI6OnN1c3BlbmQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGUKICAgICAgICAgZm9yIChhdXRvJiBtYW5hZ2VyIDogbV9sb2NhbE9yaWdpblN0b3JhZ2VNYW5h
Z2Vycy52YWx1ZXMoKSkgewogICAgICAgICAgICAgaWYgKGF1dG8gbG9jYWxTdG9yYWdlTWFuYWdl
ciA9IG1hbmFnZXItPmV4aXN0aW5nTG9jYWxTdG9yYWdlTWFuYWdlcigpKQogICAgICAgICAgICAg
ICAgIGxvY2FsU3RvcmFnZU1hbmFnZXItPnN5bmNMb2NhbFN0b3JhZ2UoKTsKKyAgICAgICAgICAg
IGlmIChhdXRvIGlkYlN0b3JhZ2VNYW5hZ2VyID0gbWFuYWdlci0+ZXhpc3RpbmdJREJTdG9yYWdl
TWFuYWdlcigpKQorICAgICAgICAgICAgICAgIGlkYlN0b3JhZ2VNYW5hZ2VyLT5zdG9wRGF0YWJh
c2VBY3Rpdml0aWVzRm9yU3VzcGVuZCgpOwogICAgICAgICB9CiAgICAgfSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwogfQpAQCAtNjM2LDYgKzY4MSw1MiBAQCB2b2lkIE5ldHdvcmtTdG9y
YWdlTWFuYWdlcjo6c3luY0xvY2FsU3RvcmFnZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYg
Y29tcGxldAogICAgIH0pOwogfQogCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6cmVnaXN0
ZXJUZW1wb3JhcnlCbG9iRmlsZVBhdGhzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29u
c3QgVmVjdG9yPFN0cmluZz4mIGZpbGVQYXRocykKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNN
YWluKCkpOworCisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBS
ZWYgeyAqdGhpcyB9LCBjb25uZWN0aW9uSUQgPSBjb25uZWN0aW9uLnVuaXF1ZUlEKCksIGZpbGVQ
YXRocyA9IGNyb3NzVGhyZWFkQ29weShmaWxlUGF0aHMpXSB7CisgICAgICAgIGF1dG8mIHRlbXBv
cmFyeUJsb2JQYXRocyA9IG1fdGVtcG9yYXJ5QmxvYlBhdGhzQnlDb25uZWN0aW9uLmVuc3VyZShj
b25uZWN0aW9uSUQsIFtdIHsKKyAgICAgICAgICAgIHJldHVybiBIYXNoU2V0PFN0cmluZz4geyB9
OworICAgICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CisgICAgICAgIHRlbXBvcmFyeUJsb2JQYXRo
cy5hZGQoZmlsZVBhdGhzLmJlZ2luKCksIGZpbGVQYXRocy5lbmQoKSk7CisgICAgfSk7Cit9CisK
K3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpyZXF1ZXN0U3BhY2UoY29uc3QgV2ViQ29yZTo6
Q2xpZW50T3JpZ2luJiBvcmlnaW4sIHVpbnQ2NF90IHNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6Omlz
TWFpbigpKTsKKworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
UmVmIHsgKnRoaXMgfSwgb3JpZ2luID0gY3Jvc3NUaHJlYWRDb3B5KG9yaWdpbiksIHNpemUsIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7
CisgICAgICAgIGxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIob3JpZ2luKS5xdW90YU1hbmFnZXIo
KS5yZXF1ZXN0U3BhY2Uoc2l6ZSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKGF1dG8gZGVjaXNpb24pIG11dGFibGUgeworICAgICAgICAgICAgUnVuTG9v
cDo6bWFpbigpLmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpLCBkZWNpc2lvbl0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihkZWNpc2lvbiA9PSBRdW90YU1hbmFnZXI6OkRlY2lzaW9uOjpHcmFudCk7Cisg
ICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKK3ZvaWQgTmV0d29ya1N0
b3JhZ2VNYW5hZ2VyOjpyZXNldFF1b3RhRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigp
KTsKKworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsg
KnRoaXMgfSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0o
KSBtdXRhYmxlIHsKKyAgICAgICAgZm9yIChhdXRvJiBtYW5hZ2VyIDogbV9sb2NhbE9yaWdpblN0
b3JhZ2VNYW5hZ2Vycy52YWx1ZXMoKSkKKyAgICAgICAgICAgIG1hbmFnZXItPnF1b3RhTWFuYWdl
cigpLnJlc2V0UXVvdGFGb3JUZXN0aW5nKCk7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNw
YXRjaChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgfSk7Cit9CisKK3ZvaWQgTmV0
d29ya1N0b3JhZ2VNYW5hZ2VyOjpyZXNldFF1b3RhVXBkYXRlZEJhc2VkT25Vc2FnZUZvclRlc3Rp
bmcoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4pCit7CisgICAgQVNTRVJUKFJ1
bkxvb3A6OmlzTWFpbigpKTsKKworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgb3JpZ2luID0gY3Jvc3NUaHJlYWRDb3B5KG9yaWdpbild
KCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChhdXRvIG1hbmFnZXIgPSBtX2xvY2FsT3JpZ2luU3Rv
cmFnZU1hbmFnZXJzLmdldChvcmlnaW4pKQorICAgICAgICAgICAgbWFuYWdlci0+cXVvdGFNYW5h
Z2VyKCkucmVzZXRRdW90YVVwZGF0ZWRCYXNlZE9uVXNhZ2VGb3JUZXN0aW5nKCk7CisgICAgfSk7
Cit9CisKIHZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjb25uZWN0VG9TdG9yYWdlQXJlYShJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFdlYkNvcmU6OlN0b3JhZ2VUeXBlIHR5cGUsIFN0
b3JhZ2VBcmVhTWFwSWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBTdG9yYWdlTmFtZXNwYWNl
SWRlbnRpZmllciBuYW1lc3BhY2VJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmln
aW4mIG9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQXJlYUlkZW50aWZpZXIs
IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+LCB1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CkBAIC03MjMsNSArODE0LDE5NSBA
QCB2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y2xlYXIoSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBTdG9yYWdlQXJlYUlkZW50aQogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAK
K3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpvcGVuRGF0YWJhc2UoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEp
Cit7CisgICAgYXV0byYgY29ubmVjdGlvblRvQ2xpZW50ID0gbV9pZGJTdG9yYWdlUmVnaXN0cnkt
PmVuc3VyZUNvbm5lY3Rpb25Ub0NsaWVudChjb25uZWN0aW9uLnVuaXF1ZUlEKCksIHJlcXVlc3RE
YXRhLnJlcXVlc3RJZGVudGlmaWVyKCkuY29ubmVjdGlvbklkZW50aWZpZXIoKSk7CisgICAgbG9j
YWxPcmlnaW5TdG9yYWdlTWFuYWdlcihyZXF1ZXN0RGF0YS5kYXRhYmFzZUlkZW50aWZpZXIoKS5v
cmlnaW4oKSkuaWRiU3RvcmFnZU1hbmFnZXIoKm1faWRiU3RvcmFnZVJlZ2lzdHJ5KS5vcGVuRGF0
YWJhc2UoY29ubmVjdGlvblRvQ2xpZW50LCByZXF1ZXN0RGF0YSk7Cit9CisKK3ZvaWQgTmV0d29y
a1N0b3JhZ2VNYW5hZ2VyOjpvcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKGNvbnN0IFdlYkNvcmU6OklE
QlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkKK3sKKyAgICBsb2NhbE9yaWdpblN0b3JhZ2VNYW5h
Z2VyKHJlcXVlc3REYXRhLmRhdGFiYXNlSWRlbnRpZmllcigpLm9yaWdpbigpKS5pZGJTdG9yYWdl
TWFuYWdlcigqbV9pZGJTdG9yYWdlUmVnaXN0cnkpLm9wZW5EQlJlcXVlc3RDYW5jZWxsZWQocmVx
dWVzdERhdGEpOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlRGF0YWJh
c2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0
RGF0YSYgcmVxdWVzdERhdGEpCit7CisgICAgYXV0byYgY29ubmVjdGlvblRvQ2xpZW50ID0gbV9p
ZGJTdG9yYWdlUmVnaXN0cnktPmVuc3VyZUNvbm5lY3Rpb25Ub0NsaWVudChjb25uZWN0aW9uLnVu
aXF1ZUlEKCksIHJlcXVlc3REYXRhLnJlcXVlc3RJZGVudGlmaWVyKCkuY29ubmVjdGlvbklkZW50
aWZpZXIoKSk7CisgICAgbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcihyZXF1ZXN0RGF0YS5kYXRh
YmFzZUlkZW50aWZpZXIoKS5vcmlnaW4oKSkuaWRiU3RvcmFnZU1hbmFnZXIoKm1faWRiU3RvcmFn
ZVJlZ2lzdHJ5KS5kZWxldGVEYXRhYmFzZShjb25uZWN0aW9uVG9DbGllbnQsIHJlcXVlc3REYXRh
KTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmVzdGFibGlzaFRyYW5zYWN0aW9u
KHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OklE
QlRyYW5zYWN0aW9uSW5mbyYgdHJhbnNhY3Rpb25JbmZvKQoreworICAgIGlmIChhdXRvIGNvbm5l
Y3Rpb24gPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+Y29ubmVjdGlvbihkYXRhYmFzZUNvbm5lY3Rp
b25JZGVudGlmaWVyKSkKKyAgICAgICAgY29ubmVjdGlvbi0+ZXN0YWJsaXNoVHJhbnNhY3Rpb24o
dHJhbnNhY3Rpb25JbmZvKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmRhdGFi
YXNlQ29ubmVjdGlvblBlbmRpbmdDbG9zZSh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVu
dGlmaWVyKQoreworICAgIGlmIChhdXRvIGNvbm5lY3Rpb24gPSBtX2lkYlN0b3JhZ2VSZWdpc3Ry
eS0+Y29ubmVjdGlvbihkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKSkKKyAgICAgICAgY29u
bmVjdGlvbi0+Y29ubmVjdGlvblBlbmRpbmdDbG9zZUZyb21DbGllbnQoKTsKK30KKwordm9pZCBO
ZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmRhdGFiYXNlQ29ubmVjdGlvbkNsb3NlZCh1aW50NjRfdCBk
YXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKQoreworICAgIGlmIChhdXRvIGNvbm5lY3Rpb24g
PSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+Y29ubmVjdGlvbihkYXRhYmFzZUNvbm5lY3Rpb25JZGVu
dGlmaWVyKSkKKyAgICAgICAgY29ubmVjdGlvbi0+Y29ubmVjdGlvbkNsb3NlZEZyb21DbGllbnQo
KTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmFib3J0T3BlbkFuZFVwZ3JhZGVO
ZWVkZWQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29y
ZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpCit7CisgICAg
aWYgKGF1dG8gdHJhbnNhY3Rpb24gPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+dHJhbnNhY3Rpb24o
dHJhbnNhY3Rpb25JZGVudGlmaWVyKSkKKyAgICAgICAgdHJhbnNhY3Rpb24tPmFib3J0V2l0aG91
dENhbGxiYWNrKCk7CisKKyAgICBpZiAoYXV0byBjb25uZWN0aW9uID0gbV9pZGJTdG9yYWdlUmVn
aXN0cnktPmNvbm5lY3Rpb24oZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcikpCisgICAgICAg
IGNvbm5lY3Rpb24tPmNvbm5lY3Rpb25DbG9zZWRGcm9tQ2xpZW50KCk7Cit9CisKK3ZvaWQgTmV0
d29ya1N0b3JhZ2VNYW5hZ2VyOjpkaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KHVpbnQ2NF90IGRh
dGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRl
bnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkluZGV4ZWREQjo6Q29u
bmVjdGlvbkNsb3NlZE9uQmVoYWxmT2ZTZXJ2ZXIgY29ubmVjdGlvbkNsb3NlZCkKK3sKKyAgICBp
ZiAoYXV0byBjb25uZWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPmNvbm5lY3Rpb24oZGF0
YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcikpCisgICAgICAgIGNvbm5lY3Rpb24tPmRpZEZpcmVW
ZXJzaW9uQ2hhbmdlRXZlbnQocmVxdWVzdElkZW50aWZpZXIsIGNvbm5lY3Rpb25DbG9zZWQpOwor
fQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6YWJvcnRUcmFuc2FjdGlvbihjb25zdCBX
ZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcikKK3sK
KyAgICBpZiAoYXV0byB0cmFuc2FjdGlvbiA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT50cmFuc2Fj
dGlvbih0cmFuc2FjdGlvbklkZW50aWZpZXIpKQorICAgICAgICB0cmFuc2FjdGlvbi0+YWJvcnQo
KTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNvbW1pdFRyYW5zYWN0aW9uKGNv
bnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVy
LCB1aW50NjRfdCBwZW5kaW5nUmVxdWVzdENvdW50KQoreworICAgIGlmIChhdXRvIHRyYW5zYWN0
aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPnRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRp
ZmllcikpCisgICAgICAgIHRyYW5zYWN0aW9uLT5jb21taXQocGVuZGluZ1JlcXVlc3RDb3VudCk7
Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkaWRGaW5pc2hIYW5kbGluZ1ZlcnNp
b25DaGFuZ2VUcmFuc2FjdGlvbih1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVy
LCBjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRp
ZmllcikKK3sKKyAgICBpZiAoYXV0byBjb25uZWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0cnkt
PmNvbm5lY3Rpb24oZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcikpCisgICAgICAgIGNvbm5l
Y3Rpb24tPmRpZEZpbmlzaEhhbmRsaW5nVmVyc2lvbkNoYW5nZSh0cmFuc2FjdGlvbklkZW50aWZp
ZXIpOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlT2JqZWN0U3RvcmUo
Y29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBXZWJDb3Jl
OjpJREJPYmplY3RTdG9yZUluZm8mIG9iamVjdFN0b3JlSW5mbykKK3sKKyAgICBpZiAoYXV0byB0
cmFuc2FjdGlvbiA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT50cmFuc2FjdGlvbihyZXF1ZXN0RGF0
YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSkpIHsKKyAgICAgICAgQVNTRVJUKHRyYW5zYWN0aW9u
LT5pc1ZlcnNpb25DaGFuZ2UoKSk7CisgICAgICAgIHRyYW5zYWN0aW9uLT5jcmVhdGVPYmplY3RT
dG9yZShyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJbmZvKTsKKyAgICB9Cit9CisKK3ZvaWQgTmV0
d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJS
ZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lKQor
eworICAgIGlmIChhdXRvIHRyYW5zYWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPnRyYW5z
YWN0aW9uKHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpKSkgeworICAgICAgICBB
U1NFUlQodHJhbnNhY3Rpb24tPmlzVmVyc2lvbkNoYW5nZSgpKTsKKyAgICAgICAgdHJhbnNhY3Rp
b24tPmRlbGV0ZU9iamVjdFN0b3JlKHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZU5hbWUpOworICAg
IH0KK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnJlbmFtZU9iamVjdFN0b3JlKGNv
bnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgdWludDY0X3Qgb2JqZWN0
U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUpCit7CisgICAgaWYgKGF1dG8g
dHJhbnNhY3Rpb24gPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+dHJhbnNhY3Rpb24ocmVxdWVzdERh
dGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCkpKSB7CisgICAgICAgIEFTU0VSVCh0cmFuc2FjdGlv
bi0+aXNWZXJzaW9uQ2hhbmdlKCkpOworICAgICAgICB0cmFuc2FjdGlvbi0+cmVuYW1lT2JqZWN0
U3RvcmUocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmllciwgbmV3TmFtZSk7CisgICAg
fQorfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y2xlYXJPYmplY3RTdG9yZShjb25z
dCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIHVpbnQ2NF90IG9iamVjdFN0
b3JlSWRlbnRpZmllcikKK3sKKyAgICBpZiAoYXV0byB0cmFuc2FjdGlvbiA9IG1faWRiU3RvcmFn
ZVJlZ2lzdHJ5LT50cmFuc2FjdGlvbihyZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIo
KSkpCisgICAgICAgIHRyYW5zYWN0aW9uLT5jbGVhck9iamVjdFN0b3JlKHJlcXVlc3REYXRhLCBv
YmplY3RTdG9yZUlkZW50aWZpZXIpOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6
Y3JlYXRlSW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBj
b25zdCBXZWJDb3JlOjpJREJJbmRleEluZm8mIGluZGV4SW5mbykKK3sKKyAgICBpZiAoYXV0byB0
cmFuc2FjdGlvbiA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT50cmFuc2FjdGlvbihyZXF1ZXN0RGF0
YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSkpCisgICAgICAgIHRyYW5zYWN0aW9uLT5jcmVhdGVJ
bmRleChyZXF1ZXN0RGF0YSwgaW5kZXhJbmZvKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1h
bmFnZXI6OmRlbGV0ZUluZGV4KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0
RGF0YSwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGluZGV4
TmFtZSkKK3sKKyAgICBpZiAoYXV0byB0cmFuc2FjdGlvbiA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5
LT50cmFuc2FjdGlvbihyZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSkpCisgICAg
ICAgIHRyYW5zYWN0aW9uLT5kZWxldGVJbmRleChyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVu
dGlmaWVyLCBpbmRleE5hbWUpOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6cmVu
YW1lSW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCB1aW50
NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBuZXdOYW1lKQoreworICAgIGlmIChhdXRvIHRyYW5zYWN0aW9uID0gbV9pZGJT
dG9yYWdlUmVnaXN0cnktPnRyYW5zYWN0aW9uKHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRp
ZmllcigpKSkKKyAgICAgICAgdHJhbnNhY3Rpb24tPnJlbmFtZUluZGV4KHJlcXVlc3REYXRhLCBv
YmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4SWRlbnRpZmllciwgbmV3TmFtZSk7Cit9CisKK3Zv
aWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpwdXRPckFkZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24sIGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3Qg
V2ViQ29yZTo6SURCS2V5RGF0YSYga2V5RGF0YSwgY29uc3QgV2ViQ29yZTo6SURCVmFsdWUmIHZh
bHVlLCBXZWJDb3JlOjpJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSBvdmVyd3Jp
dGVNb2RlKQoreworICAgIGlmICh2YWx1ZS5ibG9iVVJMcygpLnNpemUoKSAhPSB2YWx1ZS5ibG9i
RmlsZVBhdGhzKCkuc2l6ZSgpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0ZBVUxUKEluZGV4ZWRE
QiwgIk5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6cHV0T3JBZGQ6IE51bWJlciBvZiBibG9iIFVSTHMg
ZG9lc24ndCBtYXRjaCB0aGUgbnVtYmVyIG9mIGJsb2IgZmlsZSBwYXRocy4iKTsKKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBW
YWxpZGF0ZSB0ZW1wb3JhcnkgYmxvYiBwYXRocyBpbiB8dmFsdWV8IHRvIG1ha2Ugc3VyZSB0aGV5
IGJlbG9uZyB0byB0aGUgc291cmNlIHByb2Nlc3MuCisgICAgaWYgKCF2YWx1ZS5ibG9iRmlsZVBh
dGhzKCkuaXNFbXB0eSgpKSB7CisgICAgICAgIGF1dG8gaXQgPSBtX3RlbXBvcmFyeUJsb2JQYXRo
c0J5Q29ubmVjdGlvbi5maW5kKGNvbm5lY3Rpb24udW5pcXVlSUQoKSk7CisgICAgICAgIGlmIChp
dCA9PSBtX3RlbXBvcmFyeUJsb2JQYXRoc0J5Q29ubmVjdGlvbi5lbmQoKSkgeworICAgICAgICAg
ICAgUkVMRUFTRV9MT0dfRkFVTFQoSW5kZXhlZERCLCAiTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpw
dXRPckFkZDogSURCVmFsdWUgY29udGFpbnMgYmxvYiBwYXRocyBidXQgbm9uZSBhcmUgYWxsb3dl
ZCBmb3IgdGhpcyBwcm9jZXNzIik7CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8mIHRlbXBvcmFy
eUJsb2JQYXRoc0ZvckNvbm5lY3Rpb24gPSBpdC0+dmFsdWU7CisgICAgICAgIGZvciAoYXV0byYg
YmxvYkZpbGVQYXRoIDogdmFsdWUuYmxvYkZpbGVQYXRocygpKSB7CisgICAgICAgICAgICBpZiAo
IXRlbXBvcmFyeUJsb2JQYXRoc0ZvckNvbm5lY3Rpb24ucmVtb3ZlKGJsb2JGaWxlUGF0aCkpIHsK
KyAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19GQVVMVChJbmRleGVkREIsICJOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6OnB1dE9yQWRkOiBCbG9iIHBhdGggd2FzIG5vdCBjcmVhdGVkIGZvciB0aGlz
IFdlYlByb2Nlc3MiKTsKKyAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBpZiAoYXV0byB0cmFuc2FjdGlvbiA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT50cmFuc2Fj
dGlvbihyZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSkpCisgICAgICAgIHRyYW5z
YWN0aW9uLT5wdXRPckFkZChyZXF1ZXN0RGF0YSwga2V5RGF0YSwgdmFsdWUsIG92ZXJ3cml0ZU1v
ZGUpOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Z2V0UmVjb3JkKGNvbnN0IFdl
YkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgV2ViQ29yZTo6SURCR2V0
UmVjb3JkRGF0YSYgZ2V0UmVjb3JkRGF0YSkKK3sKKyAgICBpZiAoYXV0byB0cmFuc2FjdGlvbiA9
IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT50cmFuc2FjdGlvbihyZXF1ZXN0RGF0YS50cmFuc2FjdGlv
bklkZW50aWZpZXIoKSkpCisgICAgICAgIHRyYW5zYWN0aW9uLT5nZXRSZWNvcmQocmVxdWVzdERh
dGEsIGdldFJlY29yZERhdGEpOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Z2V0
QWxsUmVjb3Jkcyhjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNv
bnN0IFdlYkNvcmU6OklEQkdldEFsbFJlY29yZHNEYXRhJiBnZXRBbGxSZWNvcmRzRGF0YSkKK3sK
KyAgICBpZiAoYXV0byB0cmFuc2FjdGlvbiA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT50cmFuc2Fj
dGlvbihyZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSkpCisgICAgICAgIHRyYW5z
YWN0aW9uLT5nZXRBbGxSZWNvcmRzKHJlcXVlc3REYXRhLCBnZXRBbGxSZWNvcmRzRGF0YSk7Cit9
CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpnZXRDb3VudChjb25zdCBXZWJDb3JlOjpJ
REJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IFdlYkNvcmU6OklEQktleVJhbmdlRGF0
YSYga2V5UmFuZ2VEYXRhKQoreworICAgIGlmIChhdXRvIHRyYW5zYWN0aW9uID0gbV9pZGJTdG9y
YWdlUmVnaXN0cnktPnRyYW5zYWN0aW9uKHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmll
cigpKSkKKyAgICAgICAgdHJhbnNhY3Rpb24tPmdldENvdW50KHJlcXVlc3REYXRhLCBrZXlSYW5n
ZURhdGEpOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlUmVjb3JkKGNv
bnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgV2ViQ29yZTo6
SURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5nZURhdGEpCit7CisgICAgaWYgKGF1dG8gdHJhbnNhY3Rp
b24gPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+dHJhbnNhY3Rpb24ocmVxdWVzdERhdGEudHJhbnNh
Y3Rpb25JZGVudGlmaWVyKCkpKQorICAgICAgICB0cmFuc2FjdGlvbi0+ZGVsZXRlUmVjb3JkKHJl
cXVlc3REYXRhLCBrZXlSYW5nZURhdGEpOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdl
cjo6b3BlbkN1cnNvcihjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEs
IGNvbnN0IFdlYkNvcmU6OklEQkN1cnNvckluZm8mIGN1cnNvckluZm8pCit7CisgICAgaWYgKGF1
dG8gdHJhbnNhY3Rpb24gPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+dHJhbnNhY3Rpb24ocmVxdWVz
dERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCkpKQorICAgICAgICB0cmFuc2FjdGlvbi0+b3Bl
bkN1cnNvcihyZXF1ZXN0RGF0YSwgY3Vyc29ySW5mbyk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyOjppdGVyYXRlQ3Vyc29yKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiBy
ZXF1ZXN0RGF0YSwgY29uc3QgV2ViQ29yZTo6SURCSXRlcmF0ZUN1cnNvckRhdGEmIGN1cnNvckRh
dGEpCit7CisgICAgaWYgKGF1dG8gdHJhbnNhY3Rpb24gPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+
dHJhbnNhY3Rpb24ocmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCkpKQorICAgICAg
ICB0cmFuc2FjdGlvbi0+aXRlcmF0ZUN1cnNvcihyZXF1ZXN0RGF0YSwgY3Vyc29yRGF0YSk7Cit9
CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpnZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVy
c2lvbnMoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpJREJSZXNv
dXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpDbGllbnRP
cmlnaW4mIG9yaWdpbikKK3sKKyAgICBhdXRvJiBjb25uZWN0aW9uVG9DbGllbnQgPSBtX2lkYlN0
b3JhZ2VSZWdpc3RyeS0+ZW5zdXJlQ29ubmVjdGlvblRvQ2xpZW50KGNvbm5lY3Rpb24udW5pcXVl
SUQoKSwgcmVxdWVzdElkZW50aWZpZXIuY29ubmVjdGlvbklkZW50aWZpZXIoKSk7CisgICAgYXV0
byByZXN1bHQgPSBsb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2VyKG9yaWdpbikuaWRiU3RvcmFnZU1h
bmFnZXIoKm1faWRiU3RvcmFnZVJlZ2lzdHJ5KS5nZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lv
bnMoKTsKKyAgICBjb25uZWN0aW9uVG9DbGllbnQuZGlkR2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZl
cnNpb25zKHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKHJlc3VsdCkpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5oCmluZGV4IDE1YzAzNzJlNjZh
N2Y2Mjg0OTkyN2YxYzM3ZjE2YTY5NTg3ZjQ1MDEuLjljM2QyZDY0MDZmZWU5YjJiNGU2Y2EyNmY3
YjY1ZmUwYzc4YjgzYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmgKQEAgLTM2LDYgKzM2LDgg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL0NsaWVudE9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0
ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSURCUmVz
b3VyY2VJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JbmRleGVkREIuaD4KICNpbmNs
dWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIApAQCAtNDQs
MTggKzQ2LDMxIEBAIGNsYXNzIFNoYXJlZEZpbGVIYW5kbGU7CiB9CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKK2NsYXNzIElEQkN1cnNvckluZm87CitjbGFzcyBJREJLZXlEYXRhOworY2xhc3MgSURC
SW5kZXhJbmZvOworY2xhc3MgSURCT2JqZWN0U3RvcmVJbmZvOworY2xhc3MgSURCUmVxdWVzdERh
dGE7CitjbGFzcyBJREJUcmFuc2FjdGlvbkluZm87CitjbGFzcyBJREJWYWx1ZTsKIHN0cnVjdCBD
bGllbnRPcmlnaW47CitzdHJ1Y3QgSURCR2V0QWxsUmVjb3Jkc0RhdGE7CitzdHJ1Y3QgSURCR2V0
UmVjb3JkRGF0YTsKK3N0cnVjdCBJREJHZXRBbGxSZWNvcmRzRGF0YTsKK3N0cnVjdCBJREJJdGVy
YXRlQ3Vyc29yRGF0YTsKK3N0cnVjdCBJREJLZXlSYW5nZURhdGE7CiBlbnVtIGNsYXNzIFN0b3Jh
Z2VUeXBlIDogdWludDhfdDsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEZpbGVT
eXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnk7CitjbGFzcyBJREJTdG9yYWdlUmVnaXN0cnk7CiBj
bGFzcyBTdG9yYWdlQXJlYVJlZ2lzdHJ5OwogCiBjbGFzcyBOZXR3b3JrU3RvcmFnZU1hbmFnZXIg
ZmluYWwgOiBwdWJsaWMgSVBDOjpDb25uZWN0aW9uOjpXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIg
ewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8TmV0d29ya1N0b3JhZ2VNYW5hZ2VyPiBjcmVhdGUo
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21M
b2NhbFN0b3JhZ2VQYXRoKTsKKyAgICBzdGF0aWMgUmVmPE5ldHdvcmtTdG9yYWdlTWFuYWdlcj4g
Y3JlYXRlKFBBTDo6U2Vzc2lvbklELCBJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBjb25zdCBT
dHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCwgY29uc3Qg
U3RyaW5nJiBjdXN0b21JREJTdG9yYWdlUGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21DYWNoZVN0
b3JhZ2VQYXRoLCB1aW50NjRfdCBkZWZhdWx0T3JpZ2luUXVvdGEsIHVpbnQ2NF90IGRlZmF1bHRU
aGlyZFBhcnR5T3JpZ2luUXVvdGEpOwogICAgIHN0YXRpYyBib29sIGNhbkhhbmRsZVR5cGVzKE9w
dGlvblNldDxXZWJzaXRlRGF0YVR5cGU+KTsKIAogICAgIHZvaWQgc3RhcnRSZWNlaXZpbmdNZXNz
YWdlRnJvbUNvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uJik7CkBAIC02NCw2ICs3OSw3IEBAIHB1
YmxpYzoKICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCB7IHJldHVybiBtX3Nl
c3Npb25JRDsgfQogICAgIHZvaWQgY2xvc2UoKTsKICAgICB2b2lkIGNsZWFyU3RvcmFnZUZvclRl
c3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGRpZEluY3JlYXNl
UXVvdGEoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgUXVvdGFJbmNyZWFzZVJlcXVlc3RJ
ZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBuZXdRdW90YSk7CiAgICAgdm9pZCBm
ZXRjaERhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoVmVjdG9yPFdlYnNpdGVEYXRhOjpFbnRyeT4mJik+JiYpOwogICAgIHZvaWQgZGVsZXRlRGF0
YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YT4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQg
ZGVsZXRlRGF0YU1vZGlmaWVkU2luY2UoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIFdhbGxU
aW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAtNzMsMTQgKzg5LDE4IEBAIHB1
YmxpYzoKICAgICB2b2lkIHJlc3VtZSgpOwogICAgIHZvaWQgaGFuZGxlTG93TWVtb3J5V2Fybmlu
ZygpOwogICAgIHZvaWQgc3luY0xvY2FsU3RvcmFnZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOworICAgIHZvaWQgcmVnaXN0ZXJUZW1wb3JhcnlCbG9iRmlsZVBhdGhzKElQQzo6Q29ubmVj
dGlvbiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7CisgICAgdm9pZCByZXF1ZXN0U3BhY2UoY29u
c3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgdWludDY0X3Qgc2l6ZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCByZXNldFF1b3RhRm9yVGVzdGluZyhDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgcmVzZXRRdW90YVVwZGF0ZWRCYXNlZE9u
VXNhZ2VGb3JUZXN0aW5nKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYpOwogCiBwcml2YXRl
OgogICAgIE5ldHdvcmtTdG9yYWdlTWFuYWdlcihQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5n
JiBwYXRoLCBjb25zdCBTdHJpbmcmIGN1c3RvbUxvY2FsU3RvcmFnZVBhdGgpOworICAgIE5ldHdv
cmtTdG9yYWdlTWFuYWdlcihQQUw6OlNlc3Npb25JRCwgSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJ
RCwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGN1c3RvbUxvY2FsU3RvcmFnZVBh
dGgsIGNvbnN0IFN0cmluZyYgY3VzdG9tSURCU3RvcmFnZVBhdGgsIGNvbnN0IFN0cmluZyYgY3Vz
dG9tQ2FjaGVTdG9yYWdlUGF0aCwgdWludDY0X3QgZGVmYXVsdE9yaWdpblF1b3RhLCB1aW50NjRf
dCBkZWZhdWx0VGhpcmRQYXJ0eU9yaWdpblF1b3RhKTsKICAgICB+TmV0d29ya1N0b3JhZ2VNYW5h
Z2VyKCk7CiAgICAgT3JpZ2luU3RvcmFnZU1hbmFnZXImIGxvY2FsT3JpZ2luU3RvcmFnZU1hbmFn
ZXIoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJik7CiAgICAgYm9vbCByZW1vdmVPcmlnaW5T
dG9yYWdlTWFuYWdlcklmUG9zc2libGUoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJik7CiAg
ICAgdm9pZCBkZWxldGVPcmlnaW5EaXJlY3RvcnlJZlBvc3NpYmxlKGNvbnN0IFdlYkNvcmU6OkNs
aWVudE9yaWdpbiYpOwotICAgIEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnkmIGZpbGVT
eXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnkoKTsKIAogICAgIHZvaWQgZm9yRWFjaE9yaWdpbkRp
cmVjdG9yeShjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYpOwogICAgIEhhc2hT
ZXQ8V2ViQ29yZTo6Q2xpZW50T3JpZ2luPiBnZXRBbGxPcmlnaW5zKCk7CkBAIC0xMTgsNiArMTM4
LDM0IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZW1vdmVJdGVtKElQQzo6Q29ubmVjdGlvbiYsIFN0
b3JhZ2VBcmVhSWRlbnRpZmllciwgU3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllciwgU3RyaW5nJiYg
a2V5LCBTdHJpbmcmJiB1cmxTdHJpbmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAg
ICAgdm9pZCBjbGVhcihJUEM6OkNvbm5lY3Rpb24mLCBTdG9yYWdlQXJlYUlkZW50aWZpZXIsIFN0
b3JhZ2VBcmVhSW1wbElkZW50aWZpZXIsIFN0cmluZyYmIHVybFN0cmluZywgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKIAorICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMgZm9yIEluZGV4ZWRE
Qi4KKyAgICB2b2lkIG9wZW5EYXRhYmFzZShJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3Jl
OjpJREJSZXF1ZXN0RGF0YSYpOworICAgIHZvaWQgb3BlbkRCUmVxdWVzdENhbmNlbGxlZChjb25z
dCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYpOworICAgIHZvaWQgZGVsZXRlRGF0YWJhc2UoSVBD
OjpDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmKTsKKyAgICB2b2lk
IGVzdGFibGlzaFRyYW5zYWN0aW9uKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZp
ZXIsIGNvbnN0IFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uSW5mbyYpOworICAgIHZvaWQgZGF0YWJh
c2VDb25uZWN0aW9uUGVuZGluZ0Nsb3NlKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50
aWZpZXIpOworICAgIHZvaWQgZGF0YWJhc2VDb25uZWN0aW9uQ2xvc2VkKHVpbnQ2NF90IGRhdGFi
YXNlQ29ubmVjdGlvbklkZW50aWZpZXIpOworICAgIHZvaWQgYWJvcnRPcGVuQW5kVXBncmFkZU5l
ZWRlZCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3Jl
OjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CisgICAgdm9p
ZCBkaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklk
ZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElk
ZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkluZGV4ZWREQjo6Q29ubmVjdGlvbkNsb3NlZE9uQmVo
YWxmT2ZTZXJ2ZXIpOworICAgIHZvaWQgYWJvcnRUcmFuc2FjdGlvbihjb25zdCBXZWJDb3JlOjpJ
REJSZXNvdXJjZUlkZW50aWZpZXImKTsKKyAgICB2b2lkIGNvbW1pdFRyYW5zYWN0aW9uKGNvbnN0
IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYsIHVpbnQ2NF90IHBlbmRpbmdSZXF1ZXN0
Q291bnQpOworICAgIHZvaWQgZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rp
b24odWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6
SURCUmVzb3VyY2VJZGVudGlmaWVyJik7CisgICAgdm9pZCBjcmVhdGVPYmplY3RTdG9yZShjb25z
dCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IFdlYkNvcmU6OklEQk9iamVjdFN0b3Jl
SW5mbyYpOworICAgIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6SURCUmVx
dWVzdERhdGEmLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSk7CisgICAgdm9pZCByZW5h
bWVPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYsIHVpbnQ2NF90IG9i
amVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lKTsKKyAgICB2b2lkIGNs
ZWFyT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmLCB1aW50NjRfdCBv
YmplY3RTdG9yZUlkZW50aWZpZXIpOworICAgIHZvaWQgY3JlYXRlSW5kZXgoY29uc3QgV2ViQ29y
ZTo6SURCUmVxdWVzdERhdGEmLCBjb25zdCBXZWJDb3JlOjpJREJJbmRleEluZm8mKTsKKyAgICB2
b2lkIGRlbGV0ZUluZGV4KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiwgdWludDY0X3Qg
b2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGluZGV4TmFtZSk7CisgICAgdm9p
ZCByZW5hbWVJbmRleChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYsIHVpbnQ2NF90IG9i
amVjdFN0b3JlSWRlbnRpZmllciwgdWludDY0X3QgaW5kZXhJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIG5ld05hbWUpOworICAgIHZvaWQgcHV0T3JBZGQoSVBDOjpDb25uZWN0aW9uJiwgY29uc3Qg
V2ViQ29yZTo6SURCUmVxdWVzdERhdGEmLCBjb25zdCBXZWJDb3JlOjpJREJLZXlEYXRhJiwgY29u
c3QgV2ViQ29yZTo6SURCVmFsdWUmLCBXZWJDb3JlOjpJbmRleGVkREI6Ok9iamVjdFN0b3JlT3Zl
cndyaXRlTW9kZSk7CisgICAgdm9pZCBnZXRSZWNvcmQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVz
dERhdGEmLCBjb25zdCBXZWJDb3JlOjpJREJHZXRSZWNvcmREYXRhJik7CisgICAgdm9pZCBnZXRB
bGxSZWNvcmRzKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiwgY29uc3QgV2ViQ29yZTo6
SURCR2V0QWxsUmVjb3Jkc0RhdGEmKTsKKyAgICB2b2lkIGdldENvdW50KGNvbnN0IFdlYkNvcmU6
OklEQlJlcXVlc3REYXRhJiwgY29uc3QgV2ViQ29yZTo6SURCS2V5UmFuZ2VEYXRhJik7CisgICAg
dm9pZCBkZWxldGVSZWNvcmQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmLCBjb25zdCBX
ZWJDb3JlOjpJREJLZXlSYW5nZURhdGEmKTsKKyAgICB2b2lkIG9wZW5DdXJzb3IoY29uc3QgV2Vi
Q29yZTo6SURCUmVxdWVzdERhdGEmLCBjb25zdCBXZWJDb3JlOjpJREJDdXJzb3JJbmZvJik7Cisg
ICAgdm9pZCBpdGVyYXRlQ3Vyc29yKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiwgY29u
c3QgV2ViQ29yZTo6SURCSXRlcmF0ZUN1cnNvckRhdGEmKTsKKyAgICB2b2lkIGdldEFsbERhdGFi
YXNlTmFtZXNBbmRWZXJzaW9ucyhJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpJREJS
ZXNvdXJjZUlkZW50aWZpZXImLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKKwogICAg
IFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOwogICAgIFJlZjxTdXNwZW5kYWJsZVdvcmtRdWV1
ZT4gbV9xdWV1ZTsKICAgICBTdHJpbmcgbV9wYXRoOwpAQCAtMTI3LDcgKzE3NSwxNCBAQCBwcml2
YXRlOgogICAgIFdlYWtIYXNoU2V0PElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uczsgLy8g
TWFpbiB0aHJlYWQgb25seS4KICAgICBzdGQ6OnVuaXF1ZV9wdHI8RmlsZVN5c3RlbVN0b3JhZ2VI
YW5kbGVSZWdpc3RyeT4gbV9maWxlU3lzdGVtU3RvcmFnZUhhbmRsZVJlZ2lzdHJ5OwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxTdG9yYWdlQXJlYVJlZ2lzdHJ5PiBtX3N0b3JhZ2VBcmVhUmVnaXN0cnk7
CisgICAgc3RkOjp1bmlxdWVfcHRyPElEQlN0b3JhZ2VSZWdpc3RyeT4gbV9pZGJTdG9yYWdlUmVn
aXN0cnk7CiAgICAgU3RyaW5nIG1fY3VzdG9tTG9jYWxTdG9yYWdlUGF0aDsKKyAgICBTdHJpbmcg
bV9jdXN0b21JREJTdG9yYWdlUGF0aDsKKyAgICBTdHJpbmcgbV9jdXN0b21DYWNoZVN0b3JhZ2VQ
YXRoOworICAgIHVpbnQ2NF90IG1fZGVmYXVsdE9yaWdpblF1b3RhOworICAgIHVpbnQ2NF90IG1f
ZGVmYXVsdFRoaXJkUGFydHlPcmlnaW5RdW90YTsKKyAgICBJUEM6OkNvbm5lY3Rpb246OlVuaXF1
ZUlEIG1fcGFyZW50Q29ubmVjdGlvbjsKKyAgICBIYXNoTWFwPElQQzo6Q29ubmVjdGlvbjo6VW5p
cXVlSUQsIEhhc2hTZXQ8U3RyaW5nPj4gbV90ZW1wb3JhcnlCbG9iUGF0aHNCeUNvbm5lY3Rpb247
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5h
Z2VyLm1lc3NhZ2VzLmluCmluZGV4IDUwYjk2NzAxYjA3MGRkNWMzMjcxMWRiMTQyNzkzMDNmZTY1
MjExYjcuLjQ3MzA1ZTBlOTgxY2E1Y2ZhZTA3NzQyNmJmMjRiNzgxNWE0ZDY0Y2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1h
bmFnZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9y
YWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtNDcsNCArNDcsMzEgQEAK
ICAgICBTZXRJdGVtKFdlYktpdDo6U3RvcmFnZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdl
YktpdDo6U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllciBpbXBsSWRlbnRpZmllciwgU3RyaW5nIGtl
eSwgU3RyaW5nIHZhbHVlLCBTdHJpbmcgdXJsU3RyaW5nKSAtPiAoYm9vbCBxdW90YUV4Y2VwdGlv
bikgQXN5bmMgV2FudHNDb25uZWN0aW9uCiAgICAgUmVtb3ZlSXRlbShXZWJLaXQ6OlN0b3JhZ2VB
cmVhSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1wbElkZW50aWZp
ZXIgaW1wbElkZW50aWZpZXIsIFN0cmluZyBrZXksIFN0cmluZyB1cmxTdHJpbmcpIC0+ICgpIEFz
eW5jIFdhbnRzQ29ubmVjdGlvbgogICAgIENsZWFyKFdlYktpdDo6U3RvcmFnZUFyZWFJZGVudGlm
aWVyIGlkZW50aWZpZXIsIFdlYktpdDo6U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllciBpbXBsSWRl
bnRpZmllciwgU3RyaW5nIHVybFN0cmluZykgLT4gKCkgQXN5bmMgV2FudHNDb25uZWN0aW9uCisK
KyAgICBPcGVuRGF0YWJhc2UoV2ViQ29yZTo6SURCUmVxdWVzdERhdGEgcmVxdWVzdERhdGEpIFdh
bnRzQ29ubmVjdGlvbgorICAgIE9wZW5EQlJlcXVlc3RDYW5jZWxsZWQoV2ViQ29yZTo6SURCUmVx
dWVzdERhdGEgcmVxdWVzdERhdGEpCisgICAgRGVsZXRlRGF0YWJhc2UoV2ViQ29yZTo6SURCUmVx
dWVzdERhdGEgcmVxdWVzdERhdGEpIFdhbnRzQ29ubmVjdGlvbgorICAgIEVzdGFibGlzaFRyYW5z
YWN0aW9uKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OklE
QlRyYW5zYWN0aW9uSW5mbyBpbmZvKQorICAgIERhdGFiYXNlQ29ubmVjdGlvblBlbmRpbmdDbG9z
ZSh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKQorICAgIERhdGFiYXNlQ29u
bmVjdGlvbkNsb3NlZCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKQorICAg
IEFib3J0T3BlbkFuZFVwZ3JhZGVOZWVkZWQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRl
bnRpZmllciwgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyIHRyYW5zYWN0aW9uSWRlbnRp
ZmllcikKKyAgICBEaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KHVpbnQ2NF90IGRhdGFiYXNlQ29u
bmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciByZXF1ZXN0
SWRlbnRpZmllciwgV2ViQ29yZTo6SW5kZXhlZERCOjpDb25uZWN0aW9uQ2xvc2VkT25CZWhhbGZP
ZlNlcnZlciBjb25uZWN0aW9uQ2xvc2VkT25CZWhhbGZPZlNlcnZlcikKKyAgICBEaWRGaW5pc2hI
YW5kbGluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbih1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rp
b25JZGVudGlmaWVyLCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXIgdHJhbnNhY3Rpb25J
ZGVudGlmaWVyKQorICAgIEFib3J0VHJhbnNhY3Rpb24oV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVu
dGlmaWVyIHRyYW5zYWN0aW9uSWRlbnRpZmllcikKKyAgICBDb21taXRUcmFuc2FjdGlvbihXZWJD
b3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXIgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRf
dCBwZW5kaW5nUmVxdWVzdENvdW50KQorICAgIENyZWF0ZU9iamVjdFN0b3JlKFdlYkNvcmU6OklE
QlJlcXVlc3REYXRhIHJlcXVlc3REYXRhLCBXZWJDb3JlOjpJREJPYmplY3RTdG9yZUluZm8gaW5m
bykKKyAgICBEZWxldGVPYmplY3RTdG9yZShXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSByZXF1ZXN0
RGF0YSwgU3RyaW5nIG9iamVjdFN0b3JlTmFtZSkKKyAgICBSZW5hbWVPYmplY3RTdG9yZShXZWJD
b3JlOjpJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YSwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVu
dGlmaWVyLCBTdHJpbmcgbmV3TmFtZSkKKyAgICBDbGVhck9iamVjdFN0b3JlKFdlYkNvcmU6OklE
QlJlcXVlc3REYXRhIHJlcXVlc3REYXRhLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIp
CisgICAgQ3JlYXRlSW5kZXgoV2ViQ29yZTo6SURCUmVxdWVzdERhdGEgcmVxdWVzdERhdGEsIFdl
YkNvcmU6OklEQkluZGV4SW5mbyBpbmZvKQorICAgIERlbGV0ZUluZGV4KFdlYkNvcmU6OklEQlJl
cXVlc3REYXRhIHJlcXVlc3REYXRhLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIFN0
cmluZyBpbmRleE5hbWUpCisgICAgUmVuYW1lSW5kZXgoV2ViQ29yZTo6SURCUmVxdWVzdERhdGEg
cmVxdWVzdERhdGEsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgdWludDY0X3QgaW5k
ZXhJZGVudGlmaWVyLCBTdHJpbmcgbmV3TmFtZSkKKyAgICBQdXRPckFkZChXZWJDb3JlOjpJREJS
ZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YSwgV2ViQ29yZTo6SURCS2V5RGF0YSBrZXksIFdlYkNvcmU6
OklEQlZhbHVlIHZhbHVlLCBXZWJDb3JlOjpJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRl
TW9kZSBvdmVyd3JpdGVNb2RlKSBXYW50c0Nvbm5lY3Rpb24KKyAgICBHZXRSZWNvcmQoV2ViQ29y
ZTo6SURCUmVxdWVzdERhdGEgcmVxdWVzdERhdGEsIHN0cnVjdCBXZWJDb3JlOjpJREJHZXRSZWNv
cmREYXRhIGdldFJlY29yZERhdGEpCisgICAgR2V0QWxsUmVjb3JkcyhXZWJDb3JlOjpJREJSZXF1
ZXN0RGF0YSByZXF1ZXN0RGF0YSwgc3RydWN0IFdlYkNvcmU6OklEQkdldEFsbFJlY29yZHNEYXRh
IGdldEFsbFJlY29yZHNEYXRhKQorICAgIEdldENvdW50KFdlYkNvcmU6OklEQlJlcXVlc3REYXRh
IHJlcXVlc3REYXRhLCBzdHJ1Y3QgV2ViQ29yZTo6SURCS2V5UmFuZ2VEYXRhIHJhbmdlKQorICAg
IERlbGV0ZVJlY29yZChXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YSwgc3RydWN0
IFdlYkNvcmU6OklEQktleVJhbmdlRGF0YSByYW5nZSkKKyAgICBPcGVuQ3Vyc29yKFdlYkNvcmU6
OklEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhLCBXZWJDb3JlOjpJREJDdXJzb3JJbmZvIGluZm8p
CisgICAgSXRlcmF0ZUN1cnNvcihXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YSwg
c3RydWN0IFdlYkNvcmU6OklEQkl0ZXJhdGVDdXJzb3JEYXRhIGRhdGEpCisgICAgR2V0QWxsRGF0
YWJhc2VOYW1lc0FuZFZlcnNpb25zKFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciByZXF1
ZXN0SWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiBvcmlnaW4pIFdhbnRz
Q29ubmVjdGlvbgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
dG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5jcHAKaW5kZXggNTg4MzFlYWEyNjYw
YWY4NzRkZTZiOTU4OTBlNTdhN2ZiNjE1NTdlYy4uYmNjMGYzMzg3NzlmNDkzMTAwNzRhN2M2Y2Jk
MmZjYWU3NTM2ZGMwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
dG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuY3BwCkBAIC0yNiw4ICsyNiwx
MSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk9yaWdpblN0b3JhZ2VNYW5hZ2Vy
LmgiCiAKKyNpbmNsdWRlICJDYWNoZVN0b3JhZ2VFbmdpbmUuaCIKICNpbmNsdWRlICJGaWxlU3lz
dGVtU3RvcmFnZUhhbmRsZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbVN0b3JhZ2VN
YW5hZ2VyLmgiCisjaW5jbHVkZSAiSURCU3RvcmFnZU1hbmFnZXIuaCIKKyNpbmNsdWRlICJJREJT
dG9yYWdlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJMb2NhbFN0b3JhZ2VNYW5hZ2VyLmgiCiAjaW5j
bHVkZSAiTWVtb3J5U3RvcmFnZUFyZWEuaCIKICNpbmNsdWRlICJTZXNzaW9uU3RvcmFnZU1hbmFn
ZXIuaCIKQEAgLTQ0LDEwICs0NywxMSBAQCBlbnVtIGNsYXNzIE9yaWdpblN0b3JhZ2VNYW5hZ2Vy
OjpTdG9yYWdlQnVja2V0TW9kZSA6IGJvb2wgeyBCZXN0RWZmb3J0LCBQZXJzaXN0ZQogY2xhc3Mg
T3JpZ2luU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VCdWNrZXQgewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgotICAgIFN0b3JhZ2VCdWNrZXQoY29uc3QgU3RyaW5nJiByb290
UGF0aCwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFn
ZVBhdGgpCisgICAgU3RvcmFnZUJ1Y2tldChjb25zdCBTdHJpbmcmIHJvb3RQYXRoLCBjb25zdCBT
dHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlUGF0aCwgY29uc3Qg
U3RyaW5nJiBpZGJTdG9yYWdlUGF0aCkKICAgICAgICAgOiBtX3Jvb3RQYXRoKHJvb3RQYXRoKQog
ICAgICAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogICAgICAgICAsIG1fbG9jYWxTdG9y
YWdlUGF0aChsb2NhbFN0b3JhZ2VQYXRoKQorICAgICAgICAsIG1faWRiU3RvcmFnZVBhdGgoaWRi
U3RvcmFnZVBhdGgpCiAgICAgewogICAgIH0KIApAQCAtNzAsNiArNzQsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIEZpbGVTeXN0ZW0sCiAgICAgICAgIExvY2FsU3RvcmFnZSwKICAgICAgICAgU2Vzc2lv
blN0b3JhZ2UsCisgICAgICAgIEluZGV4ZWREQiwKICAgICB9OwogCiAgICAgc3RhdGljIHN0ZDo6
b3B0aW9uYWw8V2Vic2l0ZURhdGFUeXBlPiB0b1dlYnNpdGVEYXRhVHlwZShjb25zdCBTdHJpbmcm
IHN0b3JhZ2VJZGVudGlmaWVyKQpAQCAtODAsNiArODUsOCBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICByZXR1cm4gV2Vic2l0ZURhdGFUeXBlOjpMb2NhbFN0b3JhZ2U7CiAgICAgICAgIGlmIChzdG9y
YWdlSWRlbnRpZmllciA9PSAiU2Vzc2lvblN0b3JhZ2UiX3MpCiAgICAgICAgICAgICByZXR1cm4g
V2Vic2l0ZURhdGFUeXBlOjpTZXNzaW9uU3RvcmFnZTsKKyAgICAgICAgaWYgKHN0b3JhZ2VJZGVu
dGlmaWVyID09ICJJbmRleGVkREIiX3MpCisgICAgICAgICAgICByZXR1cm4gV2Vic2l0ZURhdGFU
eXBlOjpJbmRleGVkREJEYXRhYmFzZXM7CiAKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICB9CkBAIC05Myw2ICsxMDAsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gIkxv
Y2FsU3RvcmFnZSJfczsKICAgICAgICAgY2FzZSBTdG9yYWdlVHlwZTo6U2Vzc2lvblN0b3JhZ2U6
CiAgICAgICAgICAgICByZXR1cm4gIlNlc3Npb25TdG9yYWdlIl9zOworICAgICAgICBjYXNlIFN0
b3JhZ2VUeXBlOjpJbmRleGVkREI6CisgICAgICAgICAgICByZXR1cm4gIkluZGV4ZWREQiJfczsK
ICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0xNDMs
MTMgKzE1MiwyNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX3Nlc3Npb25TdG9yYWdlTWFu
YWdlci5nZXQoKTsKICAgICB9CiAKKyAgICBJREJTdG9yYWdlTWFuYWdlciYgaWRiU3RvcmFnZU1h
bmFnZXIoSURCU3RvcmFnZVJlZ2lzdHJ5JiByZWdpc3RyeSwgSURCU3RvcmFnZU1hbmFnZXI6OlF1
b3RhQ2hlY2tGdW5jdGlvbiYmIHF1b3RhQ2hlY2tGdW5jdGlvbikKKyAgICB7CisgICAgICAgIGlm
ICghbV9pZGJTdG9yYWdlTWFuYWdlcikKKyAgICAgICAgICAgIG1faWRiU3RvcmFnZU1hbmFnZXIg
PSBtYWtlVW5pcXVlPElEQlN0b3JhZ2VNYW5hZ2VyPihtX2lkYlN0b3JhZ2VQYXRoLCByZWdpc3Ry
eSwgV1RGTW92ZShxdW90YUNoZWNrRnVuY3Rpb24pKTsKKworICAgICAgICByZXR1cm4gKm1faWRi
U3RvcmFnZU1hbmFnZXI7CisgICAgfQorCisgICAgSURCU3RvcmFnZU1hbmFnZXIqIGV4aXN0aW5n
SURCU3RvcmFnZU1hbmFnZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1faWRiU3RvcmFnZU1h
bmFnZXIuZ2V0KCk7CisgICAgfQorCiAgICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0CiAgICAgewog
ICAgICAgICAvLyBXZSBjYW5ub3QgcmVtb3ZlIHRoZSBidWNrZXQgaWYgaXQgaGFzIGluLW1lbW9y
eSBkYXRhLCBvdGhlcndpc2Ugc2Vzc2lvbgogICAgICAgICAvLyBkYXRhIG1heSBiZSBsb3N0Lgog
ICAgICAgICByZXR1cm4gKG1fZmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyICYmIG1fZmlsZVN5c3Rl
bVN0b3JhZ2VNYW5hZ2VyLT5pc0FjdGl2ZSgpKQogICAgICAgICAgICAgfHwgKG1fbG9jYWxTdG9y
YWdlTWFuYWdlciAmJiAobV9sb2NhbFN0b3JhZ2VNYW5hZ2VyLT5oYXNEYXRhSW5NZW1vcnkoKSB8
fCBtX2xvY2FsU3RvcmFnZU1hbmFnZXItPmlzQWN0aXZlKCkpKQotICAgICAgICAgICAgfHwgKG1f
c2Vzc2lvblN0b3JhZ2VNYW5hZ2VyICYmIChtX3Nlc3Npb25TdG9yYWdlTWFuYWdlci0+aGFzRGF0
YUluTWVtb3J5KCkgfHwgbV9zZXNzaW9uU3RvcmFnZU1hbmFnZXItPmlzQWN0aXZlKCkpKTsKKyAg
ICAgICAgICAgIHx8IChtX3Nlc3Npb25TdG9yYWdlTWFuYWdlciAmJiAobV9zZXNzaW9uU3RvcmFn
ZU1hbmFnZXItPmhhc0RhdGFJbk1lbW9yeSgpIHx8IG1fc2Vzc2lvblN0b3JhZ2VNYW5hZ2VyLT5p
c0FjdGl2ZSgpKSkKKyAgICAgICAgICAgIHx8IChtX2lkYlN0b3JhZ2VNYW5hZ2VyICYmIChtX2lk
YlN0b3JhZ2VNYW5hZ2VyLT5oYXNEYXRhSW5NZW1vcnkoKSB8fCBtX2lkYlN0b3JhZ2VNYW5hZ2Vy
LT5pc0FjdGl2ZSgpKSk7CiAgICAgfQogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QKQEAgLTE2
NSw3ICsxODgsOCBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChoYXNWYWxpZEZpbGUpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgcmV0dXJuICFGaWxlU3lzdGVtOjpmaWxlRXhp
c3RzKG1fbG9jYWxTdG9yYWdlUGF0aCk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5
RGlyZWN0b3J5KG1faWRiU3RvcmFnZVBhdGgpOworICAgICAgICByZXR1cm4gIUZpbGVTeXN0ZW06
OmZpbGVFeGlzdHMobV9sb2NhbFN0b3JhZ2VQYXRoKSAmJiAhRmlsZVN5c3RlbTo6ZmlsZUV4aXN0
cyhtX2lkYlN0b3JhZ2VQYXRoKTsKICAgICB9CiAKICAgICBPcHRpb25TZXQ8V2Vic2l0ZURhdGFU
eXBlPiBmZXRjaERhdGFUeXBlc0luTGlzdChPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB0eXBl
cykKQEAgLTE4NiwxNCArMjEwLDIwIEBAIHB1YmxpYzoKIAogICAgICAgICBpZiAodHlwZXMuY29u
dGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpTZXNzaW9uU3RvcmFnZSkgJiYgbW9kaWZpZWRTaW5jZVRp
bWUgPCBXYWxsVGltZTo6bm93KCkpCiAgICAgICAgICAgICBkZWxldGVTZXNzaW9uU3RvcmFnZURh
dGEoKTsKKworICAgICAgICBpZiAodHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRl
eGVkREJEYXRhYmFzZXMpKQorICAgICAgICAgICAgZGVsZXRlSURCU3RvcmFnZURhdGEobW9kaWZp
ZWRTaW5jZVRpbWUpOwogICAgIH0KIAotICAgIHZvaWQgbW92ZURhdGEoY29uc3QgU3RyaW5nJiBw
YXRoLCBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZVBhdGgpCisgICAgdm9pZCBtb3ZlRGF0YShj
b25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlUGF0aCwgY29uc3Qg
U3RyaW5nJiBpZGJTdG9yYWdlUGF0aCkKICAgICB7CiAgICAgICAgIG1fZmlsZVN5c3RlbVN0b3Jh
Z2VNYW5hZ2VyID0gbnVsbHB0cjsKICAgICAgICAgaWYgKG1fbG9jYWxTdG9yYWdlTWFuYWdlcikK
ICAgICAgICAgICAgIG1fbG9jYWxTdG9yYWdlTWFuYWdlci0+Y2xvc2UoKTsKIAorICAgICAgICBp
ZiAobV9pZGJTdG9yYWdlTWFuYWdlcikKKyAgICAgICAgICAgIG1faWRiU3RvcmFnZU1hbmFnZXIt
PmNsb3NlRGF0YWJhc2VzRm9yRGVsZXRpb24oKTsKKwogICAgICAgICBGaWxlU3lzdGVtOjptYWtl
QWxsRGlyZWN0b3JpZXMoRmlsZVN5c3RlbTo6cGFyZW50UGF0aChwYXRoKSk7CiAgICAgICAgIEZp
bGVTeXN0ZW06Om1vdmVGaWxlKG1fcm9vdFBhdGgsIHBhdGgpOwogCkBAIC0yMDEsNiArMjMxLDEx
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhG
aWxlU3lzdGVtOjpwYXJlbnRQYXRoKGxvY2FsU3RvcmFnZVBhdGgpKTsKICAgICAgICAgICAgIFdl
YkNvcmU6OlNRTGl0ZUZpbGVTeXN0ZW06Om1vdmVEYXRhYmFzZUZpbGUobV9sb2NhbFN0b3JhZ2VQ
YXRoLCBsb2NhbFN0b3JhZ2VQYXRoKTsKICAgICAgICAgfQorCisgICAgICAgIGlmICghbV9pZGJT
dG9yYWdlUGF0aC5pc0VtcHR5KCkgJiYgIWlkYlN0b3JhZ2VQYXRoLmlzRW1wdHkoKSkgeworICAg
ICAgICAgICAgRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKEZpbGVTeXN0ZW06OnBhcmVu
dFBhdGgoaWRiU3RvcmFnZVBhdGgpKTsKKyAgICAgICAgICAgIFdlYkNvcmU6OlNRTGl0ZUZpbGVT
eXN0ZW06Om1vdmVEYXRhYmFzZUZpbGUobV9pZGJTdG9yYWdlUGF0aCwgaWRiU3RvcmFnZVBhdGgp
OworICAgICAgICB9CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMjE3LDYgKzI1MiwxMSBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQoV2Vic2l0ZURhdGFUeXBlOjpTZXNzaW9u
U3RvcmFnZSk7CiAgICAgICAgIH0KIAorICAgICAgICBpZiAodHlwZXMuY29udGFpbnMoV2Vic2l0
ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpKSB7CisgICAgICAgICAgICBpZiAobV9pZGJT
dG9yYWdlTWFuYWdlciAmJiBtX2lkYlN0b3JhZ2VNYW5hZ2VyLT5oYXNEYXRhSW5NZW1vcnkoKSkK
KyAgICAgICAgICAgICAgICByZXN1bHQuYWRkKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0
YWJhc2VzKTsKKyAgICAgICAgfQorCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCkBA
IC0yMzMsNiArMjczLDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgcmVzdWx0LmFkZChX
ZWJzaXRlRGF0YVR5cGU6OkxvY2FsU3RvcmFnZSk7CiAgICAgICAgIH0KIAorICAgICAgICBpZiAo
dHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpICYmICFy
ZXN1bHQuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpKSB7Cisg
ICAgICAgICAgICBpZiAoYXV0byBkYXRhYmFzZXMgPSBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5
KG1faWRiU3RvcmFnZVBhdGgpOyAhZGF0YWJhc2VzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAg
ICByZXN1bHQuYWRkKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKTsKKyAgICAg
ICAgfQorCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCkBAIC0yNzAsNiArMzE1LDE0
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBtX3Nlc3Npb25TdG9yYWdlTWFuYWdlciA9IG51bGxw
dHI7CiAgICAgfQogICAgIAorICAgIHZvaWQgZGVsZXRlSURCU3RvcmFnZURhdGEoV2FsbFRpbWUg
dGltZSkKKyAgICB7CisgICAgICAgIGlmIChtX2lkYlN0b3JhZ2VNYW5hZ2VyKQorICAgICAgICAg
ICAgbV9pZGJTdG9yYWdlTWFuYWdlci0+Y2xvc2VEYXRhYmFzZXNGb3JEZWxldGlvbigpOworCisg
ICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUFsbEZpbGVzTW9kaWZpZWRTaW5jZShtX2lkYlN0b3Jh
Z2VQYXRoLCB0aW1lKTsKKyAgICB9CisgICAgCiAgICAgU3RyaW5nIG1fcm9vdFBhdGg7CiAgICAg
U3RyaW5nIG1faWRlbnRpZmllcjsKICAgICBTdG9yYWdlQnVja2V0TW9kZSBtX21vZGUgeyBTdG9y
YWdlQnVja2V0TW9kZTo6QmVzdEVmZm9ydCB9OwpAQCAtMjc3LDExICszMzAsMjQgQEAgcHJpdmF0
ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TG9jYWxTdG9yYWdlTWFuYWdlcj4gbV9sb2NhbFN0b3Jh
Z2VNYW5hZ2VyOwogICAgIFN0cmluZyBtX2xvY2FsU3RvcmFnZVBhdGg7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPFNlc3Npb25TdG9yYWdlTWFuYWdlcj4gbV9zZXNzaW9uU3RvcmFnZU1hbmFnZXI7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPElEQlN0b3JhZ2VNYW5hZ2VyPiBtX2lkYlN0b3JhZ2VNYW5hZ2Vy
OworICAgIFN0cmluZyBtX2lkYlN0b3JhZ2VQYXRoOwogfTsKIAotT3JpZ2luU3RvcmFnZU1hbmFn
ZXI6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyKFN0cmluZyYmIHBhdGgsIFN0cmluZyYmIGxvY2FsU3Rv
cmFnZVBhdGgpCitzdGF0aWMgUmVmPFF1b3RhTWFuYWdlcj4gY3JlYXRlUXVvdGFNYW5hZ2VyKHVp
bnQ2NF90IHF1b3RhLCBjb25zdCBTdHJpbmcmIGlkYlN0b3JhZ2VQYXRoLCBjb25zdCBTdHJpbmcm
IGNhY2hlU3RvcmFnZVBhdGgsIFF1b3RhTWFuYWdlcjo6SW5jcmVhc2VRdW90YUZ1bmN0aW9uJiYg
aW5jcmVhc2VRdW90YUZ1bmN0aW9uKQoreworICAgIFF1b3RhTWFuYWdlcjo6R2V0VXNhZ2VGdW5j
dGlvbiBnZXRVc2FnZUZ1bmN0aW9uID0gW2lkYlN0b3JhZ2VQYXRoLCBjYWNoZVN0b3JhZ2VQYXRo
XSgpIHsKKyAgICAgICAgcmV0dXJuIElEQlN0b3JhZ2VNYW5hZ2VyOjppZGJTdG9yYWdlU2l6ZShp
ZGJTdG9yYWdlUGF0aCkgKyBDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6ZGlza1VzYWdlKGNhY2hlU3Rv
cmFnZVBhdGgpOworICAgIH07CisgICAgcmV0dXJuIFF1b3RhTWFuYWdlcjo6Y3JlYXRlKHF1b3Rh
LCBXVEZNb3ZlKGdldFVzYWdlRnVuY3Rpb24pLCBXVEZNb3ZlKGluY3JlYXNlUXVvdGFGdW5jdGlv
bikpOworfQorCitPcmlnaW5TdG9yYWdlTWFuYWdlcjo6T3JpZ2luU3RvcmFnZU1hbmFnZXIodWlu
dDY0X3QgcXVvdGEsIFF1b3RhTWFuYWdlcjo6SW5jcmVhc2VRdW90YUZ1bmN0aW9uJiYgaW5jcmVh
c2VRdW90YUZ1bmN0aW9uLCBTdHJpbmcmJiBwYXRoLCBTdHJpbmcmJiBsb2NhbFN0b3JhZ2VQYXRo
LCBTdHJpbmcmJiBpZGJTdG9yYWdlUGF0aCwgU3RyaW5nJiYgY2FjaGVTdG9yYWdlUGF0aCkKICAg
ICA6IG1fcGF0aChXVEZNb3ZlKHBhdGgpKQogICAgICwgbV9sb2NhbFN0b3JhZ2VQYXRoKFdURk1v
dmUobG9jYWxTdG9yYWdlUGF0aCkpCisgICAgLCBtX2lkYlN0b3JhZ2VQYXRoKFdURk1vdmUoaWRi
U3RvcmFnZVBhdGgpKQorICAgICwgbV9jYWNoZVN0b3JhZ2VQYXRoKFdURk1vdmUoY2FjaGVTdG9y
YWdlUGF0aCkpCisgICAgLCBtX3F1b3RhTWFuYWdlcihjcmVhdGVRdW90YU1hbmFnZXIocXVvdGEs
IG1faWRiU3RvcmFnZVBhdGgsIG1fY2FjaGVTdG9yYWdlUGF0aCwgV1RGTW92ZShpbmNyZWFzZVF1
b3RhRnVuY3Rpb24pKSkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIH0KQEAg
LTI5NywxMSArMzYzLDE2IEBAIHZvaWQgT3JpZ2luU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3Rpb25D
bG9zZWQoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uCiBPcmlnaW5TdG9yYWdl
TWFuYWdlcjo6U3RvcmFnZUJ1Y2tldCYgT3JpZ2luU3RvcmFnZU1hbmFnZXI6OmRlZmF1bHRCdWNr
ZXQoKQogewogICAgIGlmICghbV9kZWZhdWx0QnVja2V0KQotICAgICAgICBtX2RlZmF1bHRCdWNr
ZXQgPSBtYWtlVW5pcXVlPFN0b3JhZ2VCdWNrZXQ+KG1fcGF0aCwgImRlZmF1bHQiX3MsIG1fbG9j
YWxTdG9yYWdlUGF0aCk7CisgICAgICAgIG1fZGVmYXVsdEJ1Y2tldCA9IG1ha2VVbmlxdWU8U3Rv
cmFnZUJ1Y2tldD4obV9wYXRoLCAiZGVmYXVsdCJfcywgbV9sb2NhbFN0b3JhZ2VQYXRoLCBtX2lk
YlN0b3JhZ2VQYXRoKTsKIAogICAgIHJldHVybiAqbV9kZWZhdWx0QnVja2V0OwogfQogCitRdW90
YU1hbmFnZXImIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpxdW90YU1hbmFnZXIoKQoreworICAgIHJl
dHVybiBtX3F1b3RhTWFuYWdlci5nZXQoKTsKK30KKwogRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2Vy
JiBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6ZmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyKEZpbGVTeXN0
ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnkmIHJlZ2lzdHJ5KQogewogICAgIHJldHVybiBkZWZhdWx0
QnVja2V0KCkuZmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyKHJlZ2lzdHJ5KTsKQEAgLTMyNyw2ICsz
OTgsMjMgQEAgU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyKiBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6ZXhp
c3RpbmdTZXNzaW9uU3RvcmFnZU1hbmFnZXIoKQogICAgIHJldHVybiBkZWZhdWx0QnVja2V0KCku
ZXhpc3RpbmdTZXNzaW9uU3RvcmFnZU1hbmFnZXIoKTsKIH0KIAorSURCU3RvcmFnZU1hbmFnZXIm
IE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjppZGJTdG9yYWdlTWFuYWdlcihJREJTdG9yYWdlUmVnaXN0
cnkmIHJlZ2lzdHJ5KQoreworICAgIHJldHVybiBkZWZhdWx0QnVja2V0KCkuaWRiU3RvcmFnZU1h
bmFnZXIocmVnaXN0cnksIFtxdW90YU1hbmFnZXIgPSBXZWFrUHRyIHsgdGhpcy0+cXVvdGFNYW5h
Z2VyKCkgfV0odWludDY0X3Qgc3BhY2VSZXF1ZXN0ZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIG11dGFibGUgeworICAgICAgICBpZiAoIXF1b3Rh
TWFuYWdlcikKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisK
KyAgICAgICAgcXVvdGFNYW5hZ2VyLT5yZXF1ZXN0U3BhY2Uoc3BhY2VSZXF1ZXN0ZWQsIFtjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvIGRlY2lzaW9u
KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGRlY2lzaW9uID09IFF1
b3RhTWFuYWdlcjo6RGVjaXNpb246OkdyYW50KTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisK
K0lEQlN0b3JhZ2VNYW5hZ2VyKiBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6ZXhpc3RpbmdJREJTdG9y
YWdlTWFuYWdlcigpCit7CisgICAgcmV0dXJuIGRlZmF1bHRCdWNrZXQoKS5leGlzdGluZ0lEQlN0
b3JhZ2VNYW5hZ2VyKCk7Cit9CisKIGJvb2wgT3JpZ2luU3RvcmFnZU1hbmFnZXI6OmlzQWN0aXZl
KCkKIHsKICAgICByZXR1cm4gZGVmYXVsdEJ1Y2tldCgpLmlzQWN0aXZlKCk7CkBAIC0zNTksMTEg
KzQ0NywxMSBAQCB2b2lkIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVEYXRhKE9wdGlvblNl
dDxXZWJzaXRlRGF0YVR5cGU+IHR5cGVzLCBXYWxsVGltZQogICAgIGRlZmF1bHRCdWNrZXQoKS5k
ZWxldGVEYXRhKHR5cGVzLCBtb2RpZmllZFNpbmNlKTsKIH0KIAotdm9pZCBPcmlnaW5TdG9yYWdl
TWFuYWdlcjo6bW92ZURhdGEoY29uc3QgU3RyaW5nJiBuZXdQYXRoLCBjb25zdCBTdHJpbmcmIGxv
Y2FsU3RvcmFnZVBhdGgpCit2b2lkIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjptb3ZlRGF0YShjb25z
dCBTdHJpbmcmIG5ld1BhdGgsIGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlUGF0aCwgY29uc3Qg
U3RyaW5nJiBpZGJTdG9yYWdlUGF0aCkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigp
KTsKIAotICAgIGRlZmF1bHRCdWNrZXQoKS5tb3ZlRGF0YShuZXdQYXRoLCBsb2NhbFN0b3JhZ2VQ
YXRoKTsKKyAgICBkZWZhdWx0QnVja2V0KCkubW92ZURhdGEobmV3UGF0aCwgbG9jYWxTdG9yYWdl
UGF0aCwgaWRiU3RvcmFnZVBhdGgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdl
TWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0
b3JhZ2VNYW5hZ2VyLmgKaW5kZXggNWU3NjY5OTg2ZTQ2Njg1ZjM4OWI3YTUyNzFlNjZkMGU2M2My
ZDE5ZS4uZWM0NmM1NGIzMTExZmIwMWIzY2U2OTY5MjA3YzEzYmU1ZDk5OWQ5NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VNYW5h
Z2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0
b3JhZ2VNYW5hZ2VyLmgKQEAgLTI2LDE2ICsyNiwxNSBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNs
dWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiUXVvdGFNYW5hZ2VyLmgiCiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLXN0cnVjdCBDbGll
bnRPcmlnaW47Ci19Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBGaWxlU3lzdGVtU3Rv
cmFnZUhhbmRsZVJlZ2lzdHJ5OwogY2xhc3MgRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyOworY2xh
c3MgSURCU3RvcmFnZU1hbmFnZXI7CitjbGFzcyBJREJTdG9yYWdlUmVnaXN0cnk7CiBjbGFzcyBM
b2NhbFN0b3JhZ2VNYW5hZ2VyOwogY2xhc3MgU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyOwogY2xhc3Mg
U3RvcmFnZUFyZWFSZWdpc3RyeTsKQEAgLTQ0LDM1ICs0MywzOCBAQCBlbnVtIGNsYXNzIFdlYnNp
dGVEYXRhVHlwZSA6IHVpbnQzMl90OwogY2xhc3MgT3JpZ2luU3RvcmFnZU1hbmFnZXIgewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIE9yaWdpblN0b3JhZ2VNYW5h
Z2VyKFN0cmluZyYmIHBhdGgsIFN0cmluZyYmIGxvY2FsU3RvcmFnZVBhdGgpOworICAgIE9yaWdp
blN0b3JhZ2VNYW5hZ2VyKHVpbnQ2NF90IHF1b3RhLCBRdW90YU1hbmFnZXI6OkluY3JlYXNlUXVv
dGFGdW5jdGlvbiYmLCBTdHJpbmcmJiBwYXRoLCBTdHJpbmcmJiBsb2NhbFN0b3JhZ2VQYXRoLCBT
dHJpbmcmJiBpZGJTdG9yYWdlUGF0aCwgU3RyaW5nJiYgY2FjaGVTdG9yYWdlUGF0aCk7CiAgICAg
fk9yaWdpblN0b3JhZ2VNYW5hZ2VyKCk7CiAKICAgICB2b2lkIGNvbm5lY3Rpb25DbG9zZWQoSVBD
OjpDb25uZWN0aW9uOjpVbmlxdWVJRCk7CiAgICAgYm9vbCBwZXJzaXN0ZWQoKSBjb25zdCB7IHJl
dHVybiBtX3BlcnNpc3RlZDsgfQogICAgIHZvaWQgc2V0UGVyc2lzdGVkKGJvb2wgdmFsdWUpOwor
ICAgIFF1b3RhTWFuYWdlciYgcXVvdGFNYW5hZ2VyKCk7CiAgICAgRmlsZVN5c3RlbVN0b3JhZ2VN
YW5hZ2VyJiBmaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIoRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVS
ZWdpc3RyeSYpOwogICAgIExvY2FsU3RvcmFnZU1hbmFnZXImIGxvY2FsU3RvcmFnZU1hbmFnZXIo
U3RvcmFnZUFyZWFSZWdpc3RyeSYpOwogICAgIExvY2FsU3RvcmFnZU1hbmFnZXIqIGV4aXN0aW5n
TG9jYWxTdG9yYWdlTWFuYWdlcigpOwogICAgIFNlc3Npb25TdG9yYWdlTWFuYWdlciYgc2Vzc2lv
blN0b3JhZ2VNYW5hZ2VyKFN0b3JhZ2VBcmVhUmVnaXN0cnkmKTsKICAgICBTZXNzaW9uU3RvcmFn
ZU1hbmFnZXIqIGV4aXN0aW5nU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyKCk7CisgICAgSURCU3RvcmFn
ZU1hbmFnZXImIGlkYlN0b3JhZ2VNYW5hZ2VyKElEQlN0b3JhZ2VSZWdpc3RyeSYpOworICAgIElE
QlN0b3JhZ2VNYW5hZ2VyKiBleGlzdGluZ0lEQlN0b3JhZ2VNYW5hZ2VyKCk7CiAgICAgYm9vbCBp
c0FjdGl2ZSgpOwogICAgIGJvb2wgaXNFbXB0eSgpOwogICAgIE9wdGlvblNldDxXZWJzaXRlRGF0
YVR5cGU+IGZldGNoRGF0YVR5cGVzSW5MaXN0KE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+KTsK
ICAgICB2b2lkIGRlbGV0ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIFdhbGxUaW1l
KTsKLSAgICB2b2lkIG1vdmVEYXRhKGNvbnN0IFN0cmluZyYgbmV3UGF0aCwgY29uc3QgU3RyaW5n
JiBsb2NhbFN0b3JhZ2VQYXRoKTsKKyAgICB2b2lkIG1vdmVEYXRhKGNvbnN0IFN0cmluZyYgbmV3
UGF0aCwgY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VQYXRoLCBjb25zdCBTdHJpbmcmIGlkYlN0
b3JhZ2VQYXRoKTsKIAogcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIFN0b3JhZ2VCdWNrZXRNb2Rl
IDogYm9vbDsKICAgICBjbGFzcyBTdG9yYWdlQnVja2V0OwogICAgIFN0b3JhZ2VCdWNrZXQmIGRl
ZmF1bHRCdWNrZXQoKTsKIAotICAgIHZvaWQgY3JlYXRlT3JpZ2luRmlsZUlmTmVjZXNzYXJ5KGNv
bnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYpOwotICAgIHZvaWQgZGVsZXRlT3JpZ2luRmlsZUlm
TmVjZXNzYXJ5KCk7Ci0KICAgICBzdGQ6OnVuaXF1ZV9wdHI8U3RvcmFnZUJ1Y2tldD4gbV9kZWZh
dWx0QnVja2V0OwogICAgIFN0cmluZyBtX3BhdGg7CiAgICAgYm9vbCBtX3BlcnNpc3RlZCB7IGZh
bHNlIH07CiAgICAgU3RyaW5nIG1fbG9jYWxTdG9yYWdlUGF0aDsKKyAgICBTdHJpbmcgbV9pZGJT
dG9yYWdlUGF0aDsKKyAgICBTdHJpbmcgbV9jYWNoZVN0b3JhZ2VQYXRoOworICAgIFJlZjxRdW90
YU1hbmFnZXI+IG1fcXVvdGFNYW5hZ2VyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvUXVvdGFNYW5h
Z2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9RdW90YU1hbmFn
ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmE3MWYxNzU4OTg1N2E5OWQzNzRlY2FkOGQyZWU3YTQyMWE3ZmYw
NjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3Jh
Z2UvUXVvdGFNYW5hZ2VyLmNwcApAQCAtMCwwICsxLDEzMiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJRdW90YU1hbmFnZXIuaCIKKworI2luY2x1ZGUgPHd0
Zi9TZXRGb3JTY29wZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworUmVmPFF1b3RhTWFuYWdl
cj4gUXVvdGFNYW5hZ2VyOjpjcmVhdGUodWludDY0X3QgcXVvdGEsIEdldFVzYWdlRnVuY3Rpb24m
JiBnZXRVc2FnZUZ1bmN0aW9uLCBJbmNyZWFzZVF1b3RhRnVuY3Rpb24mJiBpbmNyZWFzZVF1b3Rh
RnVuY3Rpb24pCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUXVvdGFNYW5hZ2VyKHF1b3Rh
LCBXVEZNb3ZlKGdldFVzYWdlRnVuY3Rpb24pLCBXVEZNb3ZlKGluY3JlYXNlUXVvdGFGdW5jdGlv
bikpKTsKK30KKworUXVvdGFNYW5hZ2VyOjpRdW90YU1hbmFnZXIodWludDY0X3QgcXVvdGEsIEdl
dFVzYWdlRnVuY3Rpb24mJiBnZXRVc2FnZUZ1bmN0aW9uLCBJbmNyZWFzZVF1b3RhRnVuY3Rpb24m
JiBpbmNyZWFzZVF1b3RhRnVuY3Rpb24pCisgICAgOiBtX3F1b3RhKHF1b3RhKQorICAgICwgbV9p
bml0aWFsUXVvdGEocXVvdGEpCisgICAgLCBtX2dldFVzYWdlRnVuY3Rpb24oV1RGTW92ZShnZXRV
c2FnZUZ1bmN0aW9uKSkKKyAgICAsIG1faW5jcmVhc2VRdW90YUZ1bmN0aW9uKFdURk1vdmUoaW5j
cmVhc2VRdW90YUZ1bmN0aW9uKSkKK3sKKyAgICBBU1NFUlQobV9xdW90YSk7Cit9CisKK3ZvaWQg
UXVvdGFNYW5hZ2VyOjpyZXF1ZXN0U3BhY2UodWludDY0X3Qgc3BhY2VSZXF1ZXN0ZWQsIFJlcXVl
c3RDYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIG1fcmVxdWVzdHMuYXBwZW5kKFF1b3RhTWFu
YWdlcjo6UmVxdWVzdCB7IHNwYWNlUmVxdWVzdGVkLCBXVEZNb3ZlKGNhbGxiYWNrKSwgUXVvdGFJ
bmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyIHsgfSB9KTsKKyAgICBoYW5kbGVSZXF1ZXN0cygpOwor
fQorCit2b2lkIFF1b3RhTWFuYWdlcjo6aGFuZGxlUmVxdWVzdHMoKQoreworICAgIGlmIChtX2N1
cnJlbnRSZXF1ZXN0KQorICAgICAgICByZXR1cm47CisKKyAgICBTZXRGb3JTY29wZTxib29sPiBp
c0hhbmRsaW5nUmVxdWVzdHMobV9pc0hhbmRsaW5nUmVxdWVzdHMsIHRydWUpOworCisgICAgd2hp
bGUgKCFtX2N1cnJlbnRSZXF1ZXN0ICYmICFtX3JlcXVlc3RzLmlzRW1wdHkoKSkgeworICAgICAg
ICBtX2N1cnJlbnRSZXF1ZXN0ID0gbV9yZXF1ZXN0cy50YWtlRmlyc3QoKTsKKyAgICAgICAgaWYg
KGdyYW50V2l0aEN1cnJlbnRRdW90YShtX2N1cnJlbnRSZXF1ZXN0LT5zcGFjZVJlcXVlc3RlZCkp
IHsKKyAgICAgICAgICAgIG1fY3VycmVudFJlcXVlc3QtPmNhbGxiYWNrKERlY2lzaW9uOjpHcmFu
dCk7CisgICAgICAgICAgICBtX2N1cnJlbnRSZXF1ZXN0ID0gc3RkOjpudWxsb3B0OworICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBtX2N1cnJlbnRSZXF1ZXN0LT5p
ZGVudGlmaWVyID0gUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyOjpnZW5lcmF0ZVRocmVh
ZFNhZmUoKTsKKyAgICAgICAgbV9pbmNyZWFzZVF1b3RhRnVuY3Rpb24obV9jdXJyZW50UmVxdWVz
dC0+aWRlbnRpZmllciwgbV9xdW90YSwgKm1fdXNhZ2UsIG1fY3VycmVudFJlcXVlc3QtPnNwYWNl
UmVxdWVzdGVkKTsKKyAgICB9Cit9CisKK2Jvb2wgUXVvdGFNYW5hZ2VyOjpncmFudFdpdGhDdXJy
ZW50UXVvdGEodWludDY0X3Qgc3BhY2VSZXF1ZXN0ZWQpCit7CisgICAgaWYgKGdyYW50RmFzdFBh
dGgoc3BhY2VSZXF1ZXN0ZWQpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIFdoZW4g
UXVvdGFNYW5hZ2VyIGlzIHVzZWQgZm9yIHRoZSBmaXJzdCB0aW1lLCB3ZSB3YW50IHRvIG1ha2Ug
c3VyZSBpdHMgaW5pdGlhbCBxdW90YSBpcyBiaWdnZXIgdGhhbiBleGlzdGluZyBkaXNrIHVzYWdl
LAorICAgIC8vIGJhc2VkIG9uIHRoZSBhc3N1bXB0aW9uIHRoYXQgdGhlIHF1b3RhIHdhcyBpbmNy
ZWFzZWQgdG8gYXQgbGVhc3QgdGhlIGRpc2sgdXNhZ2UgdW5kZXIgdXNlcidzIHBlcm1pc3Npb24g
YmVmb3JlLgorICAgIGJvb2wgc2hvdWxkVXBkYXRlUXVvdGFCYXNlZE9uVXNhZ2UgPSAhbV91c2Fn
ZTsKKyAgICBtX3VzYWdlID0gbV9nZXRVc2FnZUZ1bmN0aW9uKCk7CisgICAgaWYgKHNob3VsZFVw
ZGF0ZVF1b3RhQmFzZWRPblVzYWdlKSB7CisgICAgICAgIGF1dG8gZGVmYXVsdFF1b3RhU3RlcCA9
IG1fcXVvdGEgLyAxMDsKKyAgICAgICAgbV9xdW90YSA9IHN0ZDo6bWF4KG1fcXVvdGEsIGRlZmF1
bHRRdW90YVN0ZXAgKiAoKCptX3VzYWdlIC8gZGVmYXVsdFF1b3RhU3RlcCkgKyAxKSk7CisgICAg
fQorICAgIG1fcXVvdGFDb3VudGRvd24gPSAqbV91c2FnZSA8IG1fcXVvdGEgPyBtX3F1b3RhIC0g
Km1fdXNhZ2UgOiAwOworCisgICAgcmV0dXJuIGdyYW50RmFzdFBhdGgoc3BhY2VSZXF1ZXN0ZWQp
OworfQorCitib29sIFF1b3RhTWFuYWdlcjo6Z3JhbnRGYXN0UGF0aCh1aW50NjRfdCBzcGFjZVJl
cXVlc3RlZCkKK3sKKyAgICBpZiAoc3BhY2VSZXF1ZXN0ZWQgPD0gbV9xdW90YUNvdW50ZG93bikg
eworICAgICAgICBtX3F1b3RhQ291bnRkb3duIC09IHNwYWNlUmVxdWVzdGVkOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgUXVvdGFN
YW5hZ2VyOjpkaWRJbmNyZWFzZVF1b3RhKFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllciBp
ZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBuZXdRdW90YSkKK3sKKyAgICBpZiAo
IW1fY3VycmVudFJlcXVlc3QgfHwgbV9jdXJyZW50UmVxdWVzdC0+aWRlbnRpZmllciAhPSBpZGVu
dGlmaWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobmV3UXVvdGEpIHsKKyAgICAgICAg
bV9xdW90YSA9ICpuZXdRdW90YTsKKyAgICAgICAgLy8gUmVjYWxjdWxhdGUgbV9xdW90YUNvdW50
ZG93biBiYXNlZCBvbiB1c2FnZS4KKyAgICAgICAgbV9xdW90YUNvdW50ZG93biA9IDA7CisgICAg
fQorCisgICAgYXV0byBkZWNpc2lvbiA9IGdyYW50V2l0aEN1cnJlbnRRdW90YShtX2N1cnJlbnRS
ZXF1ZXN0LT5zcGFjZVJlcXVlc3RlZCkgPyBEZWNpc2lvbjo6R3JhbnQgOiBEZWNpc2lvbjo6RGVu
eTsKKyAgICBtX2N1cnJlbnRSZXF1ZXN0LT5jYWxsYmFjayhkZWNpc2lvbik7CisgICAgbV9jdXJy
ZW50UmVxdWVzdCA9IHN0ZDo6bnVsbG9wdDsKKworICAgIGlmICghbV9pc0hhbmRsaW5nUmVxdWVz
dHMpCisgICAgICAgIGhhbmRsZVJlcXVlc3RzKCk7Cit9CisKK3ZvaWQgUXVvdGFNYW5hZ2VyOjpy
ZXNldFF1b3RhVXBkYXRlZEJhc2VkT25Vc2FnZUZvclRlc3RpbmcoKQoreworICAgIHJlc2V0UXVv
dGFGb3JUZXN0aW5nKCk7CisgICAgbV91c2FnZSA9IHN0ZDo6bnVsbG9wdDsKK30KKwordm9pZCBR
dW90YU1hbmFnZXI6OnJlc2V0UXVvdGFGb3JUZXN0aW5nKCkKK3sKKyAgICBtX3F1b3RhID0gbV9p
bml0aWFsUXVvdGE7CisgICAgbV9xdW90YUNvdW50ZG93biA9IDA7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9y
YWdlL1F1b3RhTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdl
L1F1b3RhTWFuYWdlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJhYjQ4Yzg4YWM4N2E2MDYyZjhjYzdiYzI3OGVk
NjkzYTA2Njc2NTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3N0b3JhZ2UvUXVvdGFNYW5hZ2VyLmgKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVy
LmgiCisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL0Rl
cXVlLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBRdW90YU1hbmFnZXIgOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UXVvdGFNYW5hZ2VyPiwgcHVibGljIENhbk1ha2VXZWFr
UHRyPFF1b3RhTWFuYWdlcj4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGlj
OgorICAgIHVzaW5nIEdldFVzYWdlRnVuY3Rpb24gPSBGdW5jdGlvbjx1aW50NjRfdCgpPjsKKyAg
ICB1c2luZyBJbmNyZWFzZVF1b3RhRnVuY3Rpb24gPSBGdW5jdGlvbjx2b2lkKFF1b3RhSW5jcmVh
c2VSZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCBjdXJy
ZW50VXNhZ2UsIHVpbnQ2NF90IHJlcXVlc3RlZEluY3JlYXNlKT47CisgICAgc3RhdGljIFJlZjxR
dW90YU1hbmFnZXI+IGNyZWF0ZSh1aW50NjRfdCBxdW90YSwgR2V0VXNhZ2VGdW5jdGlvbiYmLCBJ
bmNyZWFzZVF1b3RhRnVuY3Rpb24mJik7CisKKyAgICBlbnVtIGNsYXNzIERlY2lzaW9uIDogYm9v
bCB7IERlbnksIEdyYW50IH07CisgICAgdXNpbmcgUmVxdWVzdENhbGxiYWNrID0gQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChEZWNpc2lvbik+OworICAgIHZvaWQgcmVxdWVzdFNwYWNlKHVpbnQ2NF90
IHNwYWNlUmVxdWVzdGVkLCBSZXF1ZXN0Q2FsbGJhY2smJik7CisgICAgdm9pZCBkaWRJbmNyZWFz
ZVF1b3RhKFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50
NjRfdD4gbmV3UXVvdGEpOworCisgICAgdm9pZCByZXNldFF1b3RhVXBkYXRlZEJhc2VkT25Vc2Fn
ZUZvclRlc3RpbmcoKTsKKyAgICB2b2lkIHJlc2V0UXVvdGFGb3JUZXN0aW5nKCk7CisKK3ByaXZh
dGU6CisgICAgUXVvdGFNYW5hZ2VyKHVpbnQ2NF90IHF1b3RhLCBHZXRVc2FnZUZ1bmN0aW9uJiYs
IEluY3JlYXNlUXVvdGFGdW5jdGlvbiYmKTsKKyAgICB2b2lkIGhhbmRsZVJlcXVlc3RzKCk7Cisg
ICAgYm9vbCBncmFudFdpdGhDdXJyZW50UXVvdGEodWludDY0X3Qgc3BhY2VSZXF1ZXN0ZWQpOwor
ICAgIGJvb2wgZ3JhbnRGYXN0UGF0aCh1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCk7CisKKyAgICBz
dHJ1Y3QgUmVxdWVzdCB7CisgICAgICAgIHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkOworICAgICAg
ICBSZXF1ZXN0Q2FsbGJhY2sgY2FsbGJhY2s7CisgICAgICAgIFF1b3RhSW5jcmVhc2VSZXF1ZXN0
SWRlbnRpZmllciBpZGVudGlmaWVyOworICAgIH07CisgICAgRGVxdWU8UmVxdWVzdD4gbV9yZXF1
ZXN0czsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlcXVlc3Q+IG1fY3VycmVudFJlcXVlc3Q7CisgICAg
Ym9vbCBtX2lzSGFuZGxpbmdSZXF1ZXN0cyB7IGZhbHNlIH07CisgICAgdWludDY0X3QgbV9xdW90
YUNvdW50ZG93biB7IDAgfTsKKyAgICB1aW50NjRfdCBtX3F1b3RhOworICAgIHVpbnQ2NF90IG1f
aW5pdGlhbFF1b3RhOyAvLyBUZXN0IG9ubHkuCisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4g
bV91c2FnZTsKKyAgICBHZXRVc2FnZUZ1bmN0aW9uIG1fZ2V0VXNhZ2VGdW5jdGlvbjsKKyAgICBJ
bmNyZWFzZVF1b3RhRnVuY3Rpb24gbV9pbmNyZWFzZVF1b3RhRnVuY3Rpb247Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5
CmluZGV4IGM1M2VmOTk0M2Y1ZmYzN2VmZDY4MzllMjVmY2RlZGUzZjM2YjU1MWUuLjc1OGQ1MDU1
NmZmMmY2ZTQ3Mzc3ZDE0ZTgyNjZiYzVlM2VhYzQxYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtMjg4LDYgKzI4OCw3IEBAIGRlZiB0eXBlc190aGF0X2Nh
bm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgICAgICdXZWJDb3JlOjpOYXRpdmVJbWFn
ZVJlZmVyZW5jZScsCiAgICAgICAgICdXZWJDb3JlOjpQYWdlSWRlbnRpZmllcicsCiAgICAgICAg
ICdXZWJDb3JlOjpQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyJywKKyAgICAg
ICAgJ1dlYktpdDo6UXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyJywKICAgICAgICAgJ1dl
YkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQb2xpY3knLAogICAgICAgICAnV2ViQ29yZTo6UG9pbnRl
cklEJywKICAgICAgICAgJ1dlYkNvcmU6OlB1c2hTdWJzY3JpcHRpb25JZGVudGlmaWVyJywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhL1F1b3RhSW5jcmVhc2VS
ZXF1ZXN0SWRlbnRpZmllci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGEvUXVv
dGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmU0NTRiNmEwOGI2OGEy
MGM2NTBkYzg5NzYzMjg1NThhMzcyMDFmNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYnNpdGVEYXRhL1F1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllci5oCkBA
IC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0
Zi9PYmplY3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitlbnVtIFF1b3Rh
SW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcgUXVvdGFJbmNyZWFzZVJl
cXVlc3RJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxRdW90YUluY3JlYXNlUmVxdWVzdElk
ZW50aWZpZXJUeXBlPjsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaAppbmRleCAxNTNiZjkzYmRm
NmZmMTFiNDYwZjY0ODI1YjQ1MDMwOGI4NDVkMzhkLi4yMDk4NDY4MTYyOTkwNDczMzg4NGNmY2Ix
MjdhYTU3MjFkMmNlZTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRl
RGF0YVN0b3JlUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVE
YXRhU3RvcmVQYXJhbWV0ZXJzLmgKQEAgLTcxLDggKzcxLDggQEAgc3RydWN0IFdlYnNpdGVEYXRh
U3RvcmVQYXJhbWV0ZXJzIHsKICAgICBTdHJpbmcgZ2VuZXJhbFN0b3JhZ2VEaXJlY3Rvcnk7CiAg
ICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGdlbmVyYWxTdG9yYWdlRGlyZWN0b3J5SGFuZGxl
OwogCi0gICAgdWludDY0X3QgcGVyT3JpZ2luU3RvcmFnZVF1b3RhIHsgV2ViQ29yZTo6U3RvcmFn
ZVF1b3RhTWFuYWdlcjo6ZGVmYXVsdFF1b3RhKCkgfTsKLSAgICB1aW50NjRfdCBwZXJUaGlyZFBh
cnR5T3JpZ2luU3RvcmFnZVF1b3RhIHsgV2ViQ29yZTo6U3RvcmFnZVF1b3RhTWFuYWdlcjo6ZGVm
YXVsdFRoaXJkUGFydHlRdW90YSgpIH07CisgICAgdWludDY0X3QgcGVyT3JpZ2luU3RvcmFnZVF1
b3RhOworICAgIHVpbnQ2NF90IHBlclRoaXJkUGFydHlPcmlnaW5TdG9yYWdlUXVvdGE7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNl
cy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IGUzMTM5MTA1OWNiM2NiMjAw
YTQ4MzcxOTlhNDlkMzIxOWM4NDQ3M2QuLmUyZjRiZDRhNGFkYzQxY2MzMjkxNmJmNWM2M2ZiNDY4
NDQxMDgwNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291
cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMTQ5LDEwICsxNDksMTQgQEAgTmV0d29ya1Byb2Nl
c3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
Y3BwCiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlci5jcHAK
IE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGUuY3BwCiBOZXR3
b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnkuY3BwCitO
ZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQuY3BwCitO
ZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VNYW5hZ2VyLmNwcAorTmV0d29ya1Byb2Nl
c3Mvc3RvcmFnZS9JREJTdG9yYWdlUmVnaXN0cnkuY3BwCiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdl
L0xvY2FsU3RvcmFnZU1hbmFnZXIuY3BwCiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL01lbW9yeVN0
b3JhZ2VBcmVhLmNwcAogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFn
ZXIuY3BwCiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2VyLmNwcAor
TmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9RdW90YU1hbmFnZXIuY3BwCiBOZXR3b3JrUHJvY2Vzcy9z
dG9yYWdlL1NRTGl0ZVN0b3JhZ2VBcmVhLmNwcAogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TZXNz
aW9uU3RvcmFnZU1hbmFnZXIuY3BwCiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1N0b3JhZ2VBcmVh
QmFzZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IDMzMDIwYmQ1YzNjZDk0MTc3NTYxNTc5YWMyMGZj
MzhmOWM2OTI3OGUuLmFlNzc4MThkZjJlMTNhYTg4ZTNkOGY4YzEyOTg0MTJkY2Y3YzMxNDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmNwcApAQCAtMTUwNiw2ICsxNTA2LDE2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQ
cm94eTo6cmVxdWVzdFN0b3JhZ2VTcGFjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IFdlCiAgICAgfSk7CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6aW5jcmVhc2VRdW90
YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYg
b3JpZ2luLCBRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIgaWRlbnRpZmllciwgdWludDY0
X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCBjdXJyZW50VXNhZ2UsIHVpbnQ2NF90IHNwYWNlUmVx
dWVzdGVkKQoreworICAgIHJlcXVlc3RTdG9yYWdlU3BhY2Uoc2Vzc2lvbklELCBvcmlnaW4sIGN1
cnJlbnRRdW90YSwgY3VycmVudFVzYWdlLCBzcGFjZVJlcXVlc3RlZCwgW3RoaXMsIHdlYWtUaGlz
ID0gV2Vha1B0ciB7ICp0aGlzIH0sIHNlc3Npb25JRCwgb3JpZ2luLCBpZGVudGlmaWVyXShhdXRv
IHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkRpZEluY3Jl
YXNlUXVvdGEoc2Vzc2lvbklELCBvcmlnaW4sIGlkZW50aWZpZXIsIHJlc3VsdCksIDApOworICAg
IH0pOworfQorCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlZ2lzdGVyU2NoZW1lRm9yTGVn
YWN5Q3VzdG9tUHJvdG9jb2woY29uc3QgU3RyaW5nJiBzY2hlbWUpCiB7CiAjaWYgRU5BQkxFKExF
R0FDWV9DVVNUT01fUFJPVE9DT0xfTUFOQUdFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggNjg0MWEzNGZlMDlk
MTJiYTkzZDRlZjhjODBlNDUzM2E1NWZkNjVjNC4uYzQzMTk4NDkzODlkMTIyOTE1ZTA3N2Y4MzBk
MzVjOTA2ZWY0ZGI0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJQ
cm9jZXNzTGF1bmNoZXIuaCIKICNpbmNsdWRlICJQcm9jZXNzVGhyb3R0bGVyLmgiCiAjaW5jbHVk
ZSAiUHJvY2Vzc1Rocm90dGxlckNsaWVudC5oIgorI2luY2x1ZGUgIlF1b3RhSW5jcmVhc2VSZXF1
ZXN0SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZp
ZXIuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdlc1JlcGxpZXMuaCIKICNpbmNs
dWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCkBAIC0zNDIsNiArMzQzLDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHRyaWdnZXJCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaEZvck5hdmlnYXRpb24oV2Vi
UGFnZVByb3h5SWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpCcm93
c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiYgcmVzcG9uc2VEb21haW4sIE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyIGV4
aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sIHN1Y2Nlc3MpPiYmKTsKIAogICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VT
cGFjZShQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgdWludDY0
X3QgcXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRTaXplLCB1aW50NjRfdCBzcGFjZVJlcXVpcmVkLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHF1b3RhKT4mJik7
CisgICAgdm9pZCBpbmNyZWFzZVF1b3RhKFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpD
bGllbnRPcmlnaW4mLCBRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGN1
cnJlbnRRdW90YSwgdWludDY0X3QgY3VycmVudFVzYWdlLCB1aW50NjRfdCBzcGFjZVJlcXVlc3Rl
ZCk7CiAKICAgICBXZWJzaXRlRGF0YVN0b3JlKiB3ZWJzaXRlRGF0YVN0b3JlRnJvbVNlc3Npb25J
RChQQUw6OlNlc3Npb25JRCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgppbmRleCAx
NTc1N2VkOWEyNTJiMDlkY2QxMWJiNWU2YjljOGExMGQwNTM0YzlhLi44ZmEwYTIxNDc4ZjcyODBj
MGI4M2IwMzgyZDRhZGI1ZDgyMmE4ZmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmlu
CkBAIC03MCw2ICs3MCw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJveHkgTGVnYWN5
UmVjZWl2ZXIgewogI2VuZGlmCiAKICAgICBSZXF1ZXN0U3RvcmFnZVNwYWNlKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgc3RydWN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiBvcmlnaW4sIHVpbnQ2
NF90IHF1b3RhLCB1aW50NjRfdCBjdXJyZW50U2l6ZSwgdWludDY0X3Qgc3BhY2VSZXF1aXJlZCkg
LT4gKHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IG5ld1F1b3RhKSBBc3luYworICAgIEluY3JlYXNl
UXVvdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdHJ1Y3QgV2ViQ29yZTo6Q2xpZW50T3Jp
Z2luIG9yaWdpbiwgV2ViS2l0OjpRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIgaWRlbnRp
ZmllciwgdWludDY0X3QgcXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRTaXplLCB1aW50NjRfdCBzcGFj
ZVJlcXVlc3RlZCkKICAgICAKICAgICBSZXNvdXJjZUxvYWREaWRTZW5kUmVxdWVzdChXZWJLaXQ6
OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlkZW50aWZpZXIsIHN0cnVjdCBXZWJLaXQ6OlJl
c291cmNlTG9hZEluZm8gcmVzb3VyY2VMb2FkSW5mbywgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
IHJlcXVlc3QsIHN0ZDo6b3B0aW9uYWw8SVBDOjpGb3JtRGF0YVJlZmVyZW5jZT4gaHR0cEJvZHkp
CiAgICAgUmVzb3VyY2VMb2FkRGlkUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJLaXQ6OldlYlBh
Z2VQcm94eUlkZW50aWZpZXIgcGFnZUlkZW50aWZpZXIsIHN0cnVjdCBXZWJLaXQ6OlJlc291cmNl
TG9hZEluZm8gcmVzb3VyY2VMb2FkSW5mbywgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNv
dXJjZVJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZS5jcHAKaW5kZXggMDhjZWNmZWJmZTBkZTQ0YjFmNWE0YjUwMTE0MDVlMWZkODE1MDlmZS4uMTMy
OTA1NTcyZjRiOGMzZDA3OTU4MzQzMTQ4YzJmYjU2ODNmZWZiMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAK
QEAgLTE3MTYsNyArMTcxNiw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZGlzcGF0Y2hPblF1
ZXVlKEZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKIHVpbnQ2NF90IFdlYnNpdGVEYXRhU3Rv
cmU6OnBlclRoaXJkUGFydHlPcmlnaW5TdG9yYWdlUXVvdGEoKSBjb25zdAogewogICAgIC8vIEZJ
WE1FOiBDb25zaWRlciB3aGV0aGVyIGFsbG93aW5nIHRvIHNldCBhIHBlclRoaXJkUGFydHlPcmln
aW5TdG9yYWdlUXVvdGEgZnJvbSBhIFdlYnNpdGVEYXRhU3RvcmUuCi0gICAgcmV0dXJuIFdlYkNv
cmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6OmRlZmF1bHRUaGlyZFBhcnR5UXVvdGFGcm9tUGVyT3Jp
Z2luUXVvdGEocGVyT3JpZ2luU3RvcmFnZVF1b3RhKCkpOworICAgIHJldHVybiBwZXJPcmlnaW5T
dG9yYWdlUXVvdGEoKSAvIDEwOwogfQogCiB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldENhY2hl
TW9kZWxTeW5jaHJvbm91c2x5Rm9yVGVzdGluZyhDYWNoZU1vZGVsIGNhY2hlTW9kZWwpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlLmgKaW5kZXggNmJjNjkzNjljMzM4MzI4NjlkZWExZjVkYWE1MGU3OWZhYTZlN2JmOS4uODVl
ZTMxZTEzODNkOTdkNjQ2YzY5OGMyZGVmN2Q5YzMzNGFiNzViZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaApAQCAt
MzUwLDYgKzM1MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdERl
dmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSgpOwogICAgIHN0YXRpYyBXVEY6OlN0cmlu
ZyBkZWZhdWx0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKTsKICAgICBzdGF0aWMg
Ym9vbCBodHRwM0VuYWJsZWQoKTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ2NF90IGRlZmF1
bHRQZXJPcmlnaW5RdW90YSgpIHsgcmV0dXJuIDEwMDAgKiBNQjsgfQogCiAgICAgdm9pZCByZXNl
dFF1b3RhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBjbGVhclN0b3Jh
Z2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uLmNwcAppbmRleCAzMzBiOGIxMDVhNzlkYTY1ZGMyMDdhN2VmZTNiYzM3NjAw
MGUyZjFhLi4xYWU2ZDBiMTFhZDM4NGY2NDE2ZmZkM2JmNTQ4MzcyNWE0ZmYzYjM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCkBAIC0zMyw2ICszMyw3IEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6V2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24oSXNQZXJzaXN0ZW50IGlzUGVyc2lzdGVudCwgV2lsbENv
cHlQYXRoc0Zyb21FeGlzdGluZ0NvbmZpZ3VyYXRpb24gd2lsbENvcHlQYXRocykKICAgICA6IG1f
aXNQZXJzaXN0ZW50KGlzUGVyc2lzdGVudCkKKyAgICAsIG1fcGVyT3JpZ2luU3RvcmFnZVF1b3Rh
KFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRQZXJPcmlnaW5RdW90YSgpKQogewogICAgIGlmIChp
c1BlcnNpc3RlbnQgPT0gSXNQZXJzaXN0ZW50OjpZZXMgJiYgd2lsbENvcHlQYXRocyA9PSBXaWxs
Q29weVBhdGhzRnJvbUV4aXN0aW5nQ29uZmlndXJhdGlvbjo6Tm8pIHsKICAgICAgICAgc2V0QXBw
bGljYXRpb25DYWNoZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRp
b25DYWNoZURpcmVjdG9yeSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5o
CmluZGV4IGYxNzFhZDRjZTVlMWI1Y2UxMzk0ZWM3ODA5NTI0MTA3ZjgyYzE3NGEuLjMwYTI5OTMx
MDIyN2QyZjcyNGY0MjU3NmI2NjEyNTQ3Yjk2MWNmMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24uaApAQCAtMjYsNyArMjYsNiBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNs
dWRlICJBUElPYmplY3QuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1N0b3JhZ2VRdW90YU1hbmFnZXIu
aD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKQEAgLTIwNyw3ICsyMDYsNyBAQCBwcml2YXRlOgogCiAgICAgU3RyaW5nIG1fY2FjaGVTdG9y
YWdlRGlyZWN0b3J5OwogICAgIFN0cmluZyBtX2dlbmVyYWxTdG9yYWdlRGlyZWN0b3J5OwotICAg
IHVpbnQ2NF90IG1fcGVyT3JpZ2luU3RvcmFnZVF1b3RhIHsgV2ViQ29yZTo6U3RvcmFnZVF1b3Rh
TWFuYWdlcjo6ZGVmYXVsdFF1b3RhKCkgfTsKKyAgICB1aW50NjRfdCBtX3Blck9yaWdpblN0b3Jh
Z2VRdW90YTsKICAgICBTdHJpbmcgbV9uZXR3b3JrQ2FjaGVEaXJlY3Rvcnk7CiAgICAgU3RyaW5n
IG1fYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeTsKICAgICBTdHJpbmcgbV9hcHBsaWNhdGlvbkNh
Y2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lIHsgIkZpbGVzIl9zIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2MGQzZTk4MjA1ZDVk
ZDM5ODRlNTg3Y2QzMDEwZTk4MzBkMjM4NzUwLi4zZmNjMWYxYmY3OTExNGRjNWIwOWE0YjgyZTM0
MWVhM2QwYzM5MzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTE0NzIsNiArMTQ3MiwxMSBAQAogCQk5M0IyNjE0RDIyN0QxNDlFMDBC
OTdBNzYgLyogU3RvcmFnZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzQjI2MTQ5MjI3RDE0NzIwMEI5N0E3NiAvKiBTdG9yYWdlTWFuYWdl
ci5oICovOyB9OwogCQk5M0IyNjE0RTIyN0QxNEIxMDBCOTdBNzYgLyogTG9jYWxTdG9yYWdlRGF0
YWJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkz
QjI2MTQ1MjI3RDE0NzAwMEI5N0E3NiAvKiBMb2NhbFN0b3JhZ2VEYXRhYmFzZS5oICovOyB9Owog
CQk5M0IyNjE0RjIyN0QxNEIxMDBCOTdBNzYgLyogTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2Vy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0IyNjE0
NjIyN0QxNDcxMDBCOTdBNzYgLyogTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmggKi87IH07
CisJCTkzQjYzMUU1MjdBQkE2MjgwMDQ0M0E0NCAvKiBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xp
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0I2
MzFFNDI3QUJBNjI3MDA0NDNBNDQgLyogSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5oICov
OyB9OworCQk5M0I2MzFFODI3QUJBNjVEMDA0NDNBNDQgLyogSURCU3RvcmFnZU1hbmFnZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjYzMUU2MjdB
QkE2NUMwMDQ0M0E0NCAvKiBJREJTdG9yYWdlTWFuYWdlci5oICovOyB9OworCQk5M0I2MzFFRDI3
QUJBNkI0MDA0NDNBNDQgLyogSURCU3RvcmFnZVJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0I2MzFFQjI3QUJBNkIzMDA0NDNBNDQgLyog
SURCU3RvcmFnZVJlZ2lzdHJ5LmggKi87IH07CisJCTkzQjYzMUYxMjdBQkFDQTkwMDQ0M0E0NCAv
KiBRdW90YU1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDkzQjYzMUVGMjdBQkFDQTkwMDQ0M0E0NCAvKiBRdW90YU1hbmFnZXIuaCAqLzsgfTsK
KwkJOTNCNjMxRjMyN0FCQUQ4MDAwNDQzQTQ0IC8qIFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRp
Zmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNC
NjMxRjIyN0FCQUQ3RjAwNDQzQTQ0IC8qIFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllci5o
ICovOyB9OwogCQk5M0JERUIwMTE3MUREN0FGMDBCRkVFMUIgLyogV0tQYWdlTG9hZFR5cGVzUHJp
dmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNC
REVCMDAxNzFERDdBRjAwQkZFRTFCIC8qIFdLUGFnZUxvYWRUeXBlc1ByaXZhdGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0Q2Qjc3MjI1NEJC
NTE5MDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDZCNzZDMjU0Qjg5NTgwMDU4REQzQSAv
KiBTcGVlY2hSZWNvZ25pdGlvblNlcnZlci5oICovOyB9OwogCQk5M0Q2Qjc3MzI1NEJCOEM3MDA1
OEREM0EgLyogV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Q2Qjc2ODI1NEI3QkM2MDA1OEREM0Eg
LyogV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmggKi87IH07CkBAIC01Mzc3LDYgKzUz
ODIsMTUgQEAKIAkJOTNCMjYxNDkyMjdEMTQ3MjAwQjk3QTc2IC8qIFN0b3JhZ2VNYW5hZ2VyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0b3JhZ2VNYW5hZ2VyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQjI2MTRBMjI3RDE0NzIwMEI5N0E3NiAvKiBTdG9y
YWdlTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdG9y
YWdlTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQjI2MTRDMjI3
RDE0NzIwMEI5N0E3NiAvKiBMb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzQjYzMUUzMjdBQkE1RjcwMDQ0M0E0NCAvKiBJREJTdG9y
YWdlQ29ubmVjdGlvblRvQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElEQlN0b3JhZ2VD
b25uZWN0aW9uVG9DbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0I2
MzFFNDI3QUJBNjI3MDA0NDNBNDQgLyogSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xp
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzQjYzMUU2MjdBQkE2NUMwMDQ0
M0E0NCAvKiBJREJTdG9yYWdlTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJREJTdG9yYWdlTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5
M0I2MzFFNzI3QUJBNjVDMDA0NDNBNDQgLyogSURCU3RvcmFnZU1hbmFnZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSURCU3RvcmFnZU1hbmFnZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0I2MzFFQTI3QUJBNkIyMDA0NDNBNDQgLyogSURC
U3RvcmFnZVJlZ2lzdHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IElEQlN0b3JhZ2VSZWdpc3RyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkz
QjYzMUVCMjdBQkE2QjMwMDQ0M0E0NCAvKiBJREJTdG9yYWdlUmVnaXN0cnkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSURCU3RvcmFnZVJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTkzQjYzMUVFMjdBQkFDQTgwMDQ0M0E0NCAvKiBRdW90YU1hbmFn
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUXVvdGFNYW5hZ2Vy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNCNjMxRUYyN0FCQUNBOTAwNDQz
QTQ0IC8qIFF1b3RhTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBR
dW90YU1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNCNjMxRjIyN0FC
QUQ3RjAwNDQzQTQ0IC8qIFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCQTA0REEyMTUxQURGMzAwN0Y0NTVG
IC8qIFdlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBXZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkzQkEwNERCMjE1MUFERjMwMDdGNDU1RiAvKiBXZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTkzQkEwNERDMjE1MUFERjMwMDdGNDU1RiAvKiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24ubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
NzU5Miw2ICs3NjA2LDcgQEAKIAkJMUFCRjQzNzgxQTM2ODAzNTAwM0ZCMEU2IC8qIFdlYnNpdGVE
YXRhICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk5M0I2
MzFGMjI3QUJBRDdGMDA0NDNBNDQgLyogUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLmgg
Ki8sCiAJCQkJMUE0ODMyRDQxQTlDREY5NjAwOEI0REZFIC8qIFdlYnNpdGVEYXRhLmNwcCAqLywK
IAkJCQkxQTQ4MzJENTFBOUNERjk2MDA4QjRERkUgLyogV2Vic2l0ZURhdGEuaCAqLywKIAkJCQkx
QTI4QjhDQjFDODBFRDU5MDA2RkQ3NDMgLyogV2Vic2l0ZURhdGFGZXRjaE9wdGlvbi5oICovLApA
QCAtMTA0NjksNiArMTA0ODQsMTIgQEAKIAkJCQk5MzVCNTc5ODI2RjUxMjcwMDA4QjQ4QUMgLyog
RmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeS5oICovLAogCQkJCTkzMUEwNzUxMjZGMDYz
MTAwMDQ0NzRDRCAvKiBGaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIuY3BwICovLAogCQkJCTkzMUEw
NzUwMjZGMDYzMTAwMDQ0NzRDRCAvKiBGaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIuaCAqLywKKwkJ
CQk5M0I2MzFFMzI3QUJBNUY3MDA0NDNBNDQgLyogSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVu
dC5jcHAgKi8sCisJCQkJOTNCNjMxRTQyN0FCQTYyNzAwNDQzQTQ0IC8qIElEQlN0b3JhZ2VDb25u
ZWN0aW9uVG9DbGllbnQuaCAqLywKKwkJCQk5M0I2MzFFNzI3QUJBNjVDMDA0NDNBNDQgLyogSURC
U3RvcmFnZU1hbmFnZXIuY3BwICovLAorCQkJCTkzQjYzMUU2MjdBQkE2NUMwMDQ0M0E0NCAvKiBJ
REJTdG9yYWdlTWFuYWdlci5oICovLAorCQkJCTkzQjYzMUVBMjdBQkE2QjIwMDQ0M0E0NCAvKiBJ
REJTdG9yYWdlUmVnaXN0cnkuY3BwICovLAorCQkJCTkzQjYzMUVCMjdBQkE2QjMwMDQ0M0E0NCAv
KiBJREJTdG9yYWdlUmVnaXN0cnkuaCAqLywKIAkJCQk5M0U3OTlDOTI3NjA0OTdBMDA3NDAwOEEg
LyogTG9jYWxTdG9yYWdlTWFuYWdlci5jcHAgKi8sCiAJCQkJOTNFNzk5Q0IyNzYwNDk3QTAwNzQw
MDhBIC8qIExvY2FsU3RvcmFnZU1hbmFnZXIuaCAqLywKIAkJCQk5M0U3OTlEODI3NjEyMTA4MDA3
NDAwOEEgLyogTWVtb3J5U3RvcmFnZUFyZWEuY3BwICovLApAQCAtMTA0NzgsNiArMTA0OTksOCBA
QAogCQkJCTkzMDg1REM3MjZFMUM2RUUwMDBFQzZBNyAvKiBOZXR3b3JrU3RvcmFnZU1hbmFnZXIu
bWVzc2FnZXMuaW4gKi8sCiAJCQkJOTMwODVEQzUyNkUxQzZDRjAwMEVDNkE3IC8qIE9yaWdpblN0
b3JhZ2VNYW5hZ2VyLmNwcCAqLywKIAkJCQk5MzA4NURDNjI2RTFDNkNGMDAwRUM2QTcgLyogT3Jp
Z2luU3RvcmFnZU1hbmFnZXIuaCAqLywKKwkJCQk5M0I2MzFFRTI3QUJBQ0E4MDA0NDNBNDQgLyog
UXVvdGFNYW5hZ2VyLmNwcCAqLywKKwkJCQk5M0I2MzFFRjI3QUJBQ0E5MDA0NDNBNDQgLyogUXVv
dGFNYW5hZ2VyLmggKi8sCiAJCQkJOTNFNzk5Q0MyNzYwNDk3QjAwNzQwMDhBIC8qIFNlc3Npb25T
dG9yYWdlTWFuYWdlci5jcHAgKi8sCiAJCQkJOTNFNzk5Q0EyNzYwNDk3QTAwNzQwMDhBIC8qIFNl
c3Npb25TdG9yYWdlTWFuYWdlci5oICovLAogCQkJCTkzRTc5OUQzMjc2MTIxMDcwMDc0MDA4QSAv
KiBTUUxpdGVTdG9yYWdlQXJlYS5jcHAgKi8sCkBAIC0xMzA4OCw2ICsxMzExMSw5IEBACiAJCQkJ
MzEyQ0M5RjIyMTVCMDZGMTAwREU0MENBIC8qIEhpZ2hQZXJmb3JtYW5jZUdQVU1hbmFnZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTgzOUEyRjMyMUUyMDY3NDUwMDM5MDU3RSAvKiBIaWdoUGVyZm9y
bWFuY2VHcmFwaGljc1VzYWdlU2FtcGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFDMEM5NzQx
RERENzYwMDAwMzJDQUQzIC8qIEljb25Mb2FkaW5nRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAor
CQkJCTkzQjYzMUU1MjdBQkE2MjgwMDQ0M0E0NCAvKiBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xp
ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk5M0I2MzFFODI3QUJBNjVEMDA0NDNBNDQgLyogSURC
U3RvcmFnZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTkzQjYzMUVEMjdBQkE2QjQwMDQ0
M0E0NCAvKiBJREJTdG9yYWdlUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRTM1MUNC
MTgwRjJDQ0MwMEU1M0JFOSAvKiBJREJVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
Q0Y2QjI1MTJDOTNFN0EwMDhGOUMzNSAvKiBJbWFnZU9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFBMUVDNjlFMTg3MjA5MjEwMEI5NTFGMCAvKiBJbXBvcnRhbmNlQXNzZXJ0aW9uLmggaW4g
SGVhZGVycyAqLywKQEAgLTEzMzAyLDYgKzEzMzI4LDggQEAKIAkJCQlBMUU2ODg3MDFGNkUyQkFC
MDA3MDA2QTYgLyogUXVhcmFudGluZVNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEwQzIyN0Uy
NDUxMTMwQTAwRUQ2MTREIC8qIFF1aWNrTG9va1RodW1ibmFpbGluZ1NvZnRMaW5rLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxQUVFNTcyNTI0MDlGMTQyMDAyMDA1RDYgLyogUXVpY2tMb29rVGh1bWJu
YWlsTG9hZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk5M0I2MzFGMzI3QUJBRDgwMDA0NDNBNDQg
LyogUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk5
M0I2MzFGMTI3QUJBQ0E5MDA0NDNBNDQgLyogUXVvdGFNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1Q0I2QUU0NDI2MDk3OTlDMDBCNkVENUEgLyogUmVhc29uU1BJLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1N0ZEMzE4MjIyQjM1MTVFMDA4RDBFOEIgLyogUmVkaXJlY3RTT0F1dGhvcml6YXRp
b25TZXNzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk5QjEyMjlEMjIzRkYyQkNDMDA4Q0E3NTEg
LyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2Vi
SURCQ29ubmVjdGlvblRvU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9EYXRh
YmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAKaW5kZXggMDRjMjQx
MGYzNWFkY2MwNDZjNTQwNmFmMGNjZTJmZDBlODQxYWRiMC4uZDc5MDE2OWJlMGY1OGUzMDFlZGJl
NDRjMDQ0Yzc4MzkxZWY0NzQ1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0
aW9uVG9TZXJ2ZXIuY3BwCkBAIC0yOSw5ICsyOSw5IEBACiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5j
ZS5oIgogI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJOZXR3b3Jr
U3RvcmFnZU1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVy
cy5oIgogI2luY2x1ZGUgIldlYklEQlJlc3VsdC5oIgotI2luY2x1ZGUgIldlYklEQlNlcnZlck1l
c3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSURC
Q29ubmVjdGlvblRvU2VydmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JREJDdXJzb3JJbmZvLmg+
CkBAIC04MiwxMzIgKzgyLDEzMiBAQCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Ub1NlcnZlciYg
V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpjb3JlQ29ubmVjdGlvblRvU2VydgogCiB2b2lkIFdl
YklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGVsZXRlRGF0YWJhc2UoY29uc3QgSURCUmVxdWVzdERh
dGEmIHJlcXVlc3REYXRhKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6RGVs
ZXRlRGF0YWJhc2UocmVxdWVzdERhdGEpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6OkRlbGV0ZURhdGFiYXNlKHJlcXVlc3REYXRhKSk7CiB9CiAKIHZvaWQgV2Vi
SURCQ29ubmVjdGlvblRvU2VydmVyOjpvcGVuRGF0YWJhc2UoY29uc3QgSURCUmVxdWVzdERhdGEm
IHJlcXVlc3REYXRhKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6T3BlbkRh
dGFiYXNlKHJlcXVlc3REYXRhKSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VN
YW5hZ2VyOjpPcGVuRGF0YWJhc2UocmVxdWVzdERhdGEpKTsKIH0KIAogdm9pZCBXZWJJREJDb25u
ZWN0aW9uVG9TZXJ2ZXI6OmFib3J0VHJhbnNhY3Rpb24oY29uc3QgSURCUmVzb3VyY2VJZGVudGlm
aWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURC
U2VydmVyOjpBYm9ydFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllcikpOworICAgIHNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6QWJvcnRUcmFuc2FjdGlvbih0cmFu
c2FjdGlvbklkZW50aWZpZXIpKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6
OmNvbW1pdFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rp
b25JZGVudGlmaWVyLCB1aW50NjRfdCBwZW5kaW5nUmVxdWVzdENvdW50KQogewotICAgIHNlbmQo
TWVzc2FnZXM6OldlYklEQlNlcnZlcjo6Q29tbWl0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZGVu
dGlmaWVyLCBwZW5kaW5nUmVxdWVzdENvdW50KSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29y
a1N0b3JhZ2VNYW5hZ2VyOjpDb21taXRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbklkZW50aWZpZXIs
IHBlbmRpbmdSZXF1ZXN0Q291bnQpKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2
ZXI6OmRpZEZpbmlzaEhhbmRsaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKHVpbnQ2NF90IGRh
dGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYg
dHJhbnNhY3Rpb25JZGVudGlmaWVyKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZl
cjo6RGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24oZGF0YWJhc2VDb25u
ZWN0aW9uSWRlbnRpZmllciwgdHJhbnNhY3Rpb25JZGVudGlmaWVyKSk7CisgICAgc2VuZChNZXNz
YWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpEaWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFu
Z2VUcmFuc2FjdGlvbihkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCB0cmFuc2FjdGlvbklk
ZW50aWZpZXIpKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmNyZWF0ZU9i
amVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCT2Jq
ZWN0U3RvcmVJbmZvJiBpbmZvKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6
Q3JlYXRlT2JqZWN0U3RvcmUocmVxdWVzdERhdGEsIGluZm8pKTsKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkNyZWF0ZU9iamVjdFN0b3JlKHJlcXVlc3REYXRhLCBp
bmZvKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpkZWxldGVPYmplY3RT
dG9yZShjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IFN0cmluZyYgb2Jq
ZWN0U3RvcmVOYW1lKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6RGVsZXRl
T2JqZWN0U3RvcmUocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlTmFtZSkpOworICAgIHNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6RGVsZXRlT2JqZWN0U3RvcmUocmVxdWVzdERh
dGEsIG9iamVjdFN0b3JlTmFtZSkpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZl
cjo6cmVuYW1lT2JqZWN0U3RvcmUoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCB1
aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSkKIHsK
LSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OlJlbmFtZU9iamVjdFN0b3JlKHJlcXVl
c3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIG5ld05hbWUpKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OlJlbmFtZU9iamVjdFN0b3JlKHJlcXVlc3REYXRh
LCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIG5ld05hbWUpKTsKIH0KIAogdm9pZCBXZWJJREJDb25u
ZWN0aW9uVG9TZXJ2ZXI6OmNsZWFyT2JqZWN0U3RvcmUoY29uc3QgSURCUmVxdWVzdERhdGEmIHJl
cXVlc3REYXRhLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIpCiB7Ci0gICAgc2VuZChN
ZXNzYWdlczo6V2ViSURCU2VydmVyOjpDbGVhck9iamVjdFN0b3JlKHJlcXVlc3REYXRhLCBvYmpl
Y3RTdG9yZUlkZW50aWZpZXIpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1h
bmFnZXI6OkNsZWFyT2JqZWN0U3RvcmUocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmll
cikpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Y3JlYXRlSW5kZXgoY29u
c3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJJbmRleEluZm8mIGluZm8p
CiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyOjpDcmVhdGVJbmRleChyZXF1ZXN0
RGF0YSwgaW5mbykpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6
Q3JlYXRlSW5kZXgocmVxdWVzdERhdGEsIGluZm8pKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0
aW9uVG9TZXJ2ZXI6OmRlbGV0ZUluZGV4KGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0
YSwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGluZGV4TmFt
ZSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OkRlbGV0ZUluZGV4KHJlcXVl
c3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4TmFtZSkpOworICAgIHNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6RGVsZXRlSW5kZXgocmVxdWVzdERhdGEsIG9i
amVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhOYW1lKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVj
dGlvblRvU2VydmVyOjpyZW5hbWVJbmRleChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERh
dGEsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgdWludDY0X3QgaW5kZXhJZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURC
U2VydmVyOjpSZW5hbWVJbmRleChyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBp
bmRleElkZW50aWZpZXIsIG5ld05hbWUpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6OlJlbmFtZUluZGV4KHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZp
ZXIsIGluZGV4SWRlbnRpZmllciwgbmV3TmFtZSkpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rp
b25Ub1NlcnZlcjo6cHV0T3JBZGQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBj
b25zdCBJREJLZXlEYXRhJiBrZXlEYXRhLCBjb25zdCBJREJWYWx1ZSYgdmFsdWUsIGNvbnN0IElu
ZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlIG1vZGUpCiB7Ci0gICAgc2VuZChNZXNz
YWdlczo6V2ViSURCU2VydmVyOjpQdXRPckFkZChyZXF1ZXN0RGF0YSwga2V5RGF0YSwgdmFsdWUs
IG1vZGUpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OlB1dE9y
QWRkKHJlcXVlc3REYXRhLCBrZXlEYXRhLCB2YWx1ZSwgbW9kZSkpOwogfQogCiB2b2lkIFdlYklE
QkNvbm5lY3Rpb25Ub1NlcnZlcjo6Z2V0UmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1
ZXN0RGF0YSwgY29uc3QgSURCR2V0UmVjb3JkRGF0YSYgZ2V0UmVjb3JkRGF0YSkKIHsKLSAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OkdldFJlY29yZChyZXF1ZXN0RGF0YSwgZ2V0UmVj
b3JkRGF0YSkpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6R2V0
UmVjb3JkKHJlcXVlc3REYXRhLCBnZXRSZWNvcmREYXRhKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29u
bmVjdGlvblRvU2VydmVyOjpnZXRBbGxSZWNvcmRzKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1
ZXN0RGF0YSwgY29uc3QgSURCR2V0QWxsUmVjb3Jkc0RhdGEmIGdldEFsbFJlY29yZHNEYXRhKQog
ewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6R2V0QWxsUmVjb3JkcyhyZXF1ZXN0
RGF0YSwgZ2V0QWxsUmVjb3Jkc0RhdGEpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6OkdldEFsbFJlY29yZHMocmVxdWVzdERhdGEsIGdldEFsbFJlY29yZHNEYXRh
KSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpnZXRDb3VudChjb25zdCBJ
REJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQktleVJhbmdlRGF0YSYgcmFuZ2Up
CiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyOjpHZXRDb3VudChyZXF1ZXN0RGF0
YSwgcmFuZ2UpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Okdl
dENvdW50KHJlcXVlc3REYXRhLCByYW5nZSkpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25U
b1NlcnZlcjo6ZGVsZXRlUmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwg
Y29uc3QgSURCS2V5UmFuZ2VEYXRhJiByYW5nZSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJ
REJTZXJ2ZXI6OkRlbGV0ZVJlY29yZChyZXF1ZXN0RGF0YSwgcmFuZ2UpKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkRlbGV0ZVJlY29yZChyZXF1ZXN0RGF0YSwg
cmFuZ2UpKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6Om9wZW5DdXJzb3Io
Y29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJDdXJzb3JJbmZvJiBp
bmZvKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6T3BlbkN1cnNvcihyZXF1
ZXN0RGF0YSwgaW5mbykpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdl
cjo6T3BlbkN1cnNvcihyZXF1ZXN0RGF0YSwgaW5mbykpOwogfQogCiB2b2lkIFdlYklEQkNvbm5l
Y3Rpb25Ub1NlcnZlcjo6aXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVz
dERhdGEsIGNvbnN0IElEQkl0ZXJhdGVDdXJzb3JEYXRhJiBkYXRhKQogewotICAgIHNlbmQoTWVz
c2FnZXM6OldlYklEQlNlcnZlcjo6SXRlcmF0ZUN1cnNvcihyZXF1ZXN0RGF0YSwgZGF0YSkpOwor
ICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6SXRlcmF0ZUN1cnNvcihy
ZXF1ZXN0RGF0YSwgZGF0YSkpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6
ZXN0YWJsaXNoVHJhbnNhY3Rpb24odWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmll
ciwgY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJiBpbmZvKQogewotICAgIHNlbmQoTWVzc2FnZXM6
OldlYklEQlNlcnZlcjo6RXN0YWJsaXNoVHJhbnNhY3Rpb24oZGF0YWJhc2VDb25uZWN0aW9uSWRl
bnRpZmllciwgaW5mbykpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdl
cjo6RXN0YWJsaXNoVHJhbnNhY3Rpb24oZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgaW5m
bykpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGF0YWJhc2VDb25uZWN0
aW9uUGVuZGluZ0Nsb3NlKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpCiB7
Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyOjpEYXRhYmFzZUNvbm5lY3Rpb25QZW5k
aW5nQ2xvc2UoZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcikpOworICAgIHNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6RGF0YWJhc2VDb25uZWN0aW9uUGVuZGluZ0Nsb3Nl
KGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0
aW9uVG9TZXJ2ZXI6OmRhdGFiYXNlQ29ubmVjdGlvbkNsb3NlZCh1aW50NjRfdCBkYXRhYmFzZUNv
bm5lY3Rpb25JZGVudGlmaWVyKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6
RGF0YWJhc2VDb25uZWN0aW9uQ2xvc2VkKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkRhdGFiYXNlQ29ubmVj
dGlvbkNsb3NlZChkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKSk7CiB9CiAKIHZvaWQgV2Vi
SURCQ29ubmVjdGlvblRvU2VydmVyOjphYm9ydE9wZW5BbmRVcGdyYWRlTmVlZGVkKHVpbnQ2NF90
IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmll
ciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNl
cnZlcjo6QWJvcnRPcGVuQW5kVXBncmFkZU5lZWRlZChkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlm
aWVyLCB0cmFuc2FjdGlvbklkZW50aWZpZXIpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3Jr
U3RvcmFnZU1hbmFnZXI6OkFib3J0T3BlbkFuZFVwZ3JhZGVOZWVkZWQoZGF0YWJhc2VDb25uZWN0
aW9uSWRlbnRpZmllciwgdHJhbnNhY3Rpb25JZGVudGlmaWVyKSk7CiB9CiAKIHZvaWQgV2ViSURC
Q29ubmVjdGlvblRvU2VydmVyOjpkaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KHVpbnQ2NF90IGRh
dGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYg
cmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IEluZGV4ZWREQjo6Q29ubmVjdGlvbkNsb3NlZE9uQmVo
YWxmT2ZTZXJ2ZXIgY29ubmVjdGlvbkNsb3NlZCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJ
REJTZXJ2ZXI6OkRpZEZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQoZGF0YWJhc2VDb25uZWN0aW9uSWRl
bnRpZmllciwgcmVxdWVzdElkZW50aWZpZXIsIGNvbm5lY3Rpb25DbG9zZWQpKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkRpZEZpcmVWZXJzaW9uQ2hhbmdlRXZl
bnQoZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgcmVxdWVzdElkZW50aWZpZXIsIGNvbm5l
Y3Rpb25DbG9zZWQpKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6Om9wZW5E
QlJlcXVlc3RDYW5jZWxsZWQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhKQogewot
ICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6T3BlbkRCUmVxdWVzdENhbmNlbGxlZChy
ZXF1ZXN0RGF0YSkpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6
T3BlbkRCUmVxdWVzdENhbmNlbGxlZChyZXF1ZXN0RGF0YSkpOwogfQogCiB2b2lkIFdlYklEQkNv
bm5lY3Rpb25Ub1NlcnZlcjo6Z2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKGNvbnN0IElE
QlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IENsaWVudE9yaWdp
biYgb3JpZ2luKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6R2V0QWxsRGF0
YWJhc2VOYW1lc0FuZFZlcnNpb25zKHJlcXVlc3RJZGVudGlmaWVyLCBvcmlnaW4pKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkdldEFsbERhdGFiYXNlTmFtZXNB
bmRWZXJzaW9ucyhyZXF1ZXN0SWRlbnRpZmllciwgb3JpZ2luKSk7CiB9CiAKIHZvaWQgV2ViSURC
Q29ubmVjdGlvblRvU2VydmVyOjpkaWREZWxldGVEYXRhYmFzZShjb25zdCBJREJSZXN1bHREYXRh
JiByZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvSW5Qcm9j
ZXNzSURCU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9JblByb2Nlc3NJ
REJTZXJ2ZXIuY3BwCmluZGV4IGVhMmUyYTc4Zjg4ZmZkZDEwMWEzYTEzN2YwZDVhMTBhNTZlMTBm
YjIuLjBjYWRiNTA0MmJhMTYxMDc3Zjk0NDlhOTczZGNmOTgzMmQzNzAyYWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCkBAIC00
Miw2ICs0Miw4IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCitzdGF0aWMgY29uc3Rl
eHByIHVpbnQ2NF90IGRlZmF1bHRQZXJPcmlnaW5RdW90YSA9ICAxMDAwICogTUI7CisKIFJlZjxJ
blByb2Nlc3NJREJTZXJ2ZXI+IEluUHJvY2Vzc0lEQlNlcnZlcjo6Y3JlYXRlKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCkKIHsKICAgICBBU1NFUlQoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpOwpA
QCAtNzMsNyArNzUsNyBAQCBJblByb2Nlc3NJREJTZXJ2ZXI6On5JblByb2Nlc3NJREJTZXJ2ZXIo
KQogU3RvcmFnZVF1b3RhTWFuYWdlciogSW5Qcm9jZXNzSURCU2VydmVyOjpxdW90YU1hbmFnZXIo
Y29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4pCiB7CiAgICAgcmV0dXJuIG1fcXVvdGFNYW5hZ2Vy
cy5lbnN1cmUob3JpZ2luLCBbXSB7Ci0gICAgICAgIHJldHVybiBTdG9yYWdlUXVvdGFNYW5hZ2Vy
OjpjcmVhdGUoU3RvcmFnZVF1b3RhTWFuYWdlcjo6ZGVmYXVsdFF1b3RhKCksIFtdIHsKKyAgICAg
ICAgcmV0dXJuIFN0b3JhZ2VRdW90YU1hbmFnZXI6OmNyZWF0ZShkZWZhdWx0UGVyT3JpZ2luUXVv
dGEsIFtdIHsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9LCBbXSh1aW50NjRfdCBx
dW90YSwgdWludDY0X3QgY3VycmVudFNwYWNlLCB1aW50NjRfdCBzcGFjZUluY3JlYXNlLCBhdXRv
IGNhbGxiYWNrKSB7CiAgICAgICAgICAgICBjYWxsYmFjayhxdW90YSArIGN1cnJlbnRTcGFjZSAr
IHNwYWNlSW5jcmVhc2UpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IGE1YjczOWM0NmQzYjI2YjE1NGRkY2VlMWEzYWY2MWI2ZDNlMDFiMDcuLmE1
NmM4ODllNTg0NDBmNDZlNGU1ZGY5YmU1ODkwY2UwZWUyYjlmYTQgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMi0w
Mi0wOCAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBNYW5hZ2Ug
SW5kZXhlZERCIHN0b3JhZ2UgYnkgb3JpZ2luCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ5MjUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg3NTU1
MDE0PgorCisgICAgICAgIFJldmlld2VkIGJ5IENocmlzIER1bWV6LgorCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJGaWxlTmFtZS5tbToKKyAgICAg
ICAgKHJ1blRlc3QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
SW5kZXhlZERCUGVyc2lzdGVuY2UubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9JbmRleGVkREJTdXNwZW5kSW1taW5lbnRseS5tbToKKyAgICAgICAgKFRFU1Qp
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU3RvcmVCbG9iVGhl
bkRlbGV0ZS5tbToKKyAgICAgICAgKFRFU1QpOgorCiAyMDIyLTAyLTAyICBKb25hdGhhbiBCZWRh
cmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBbRVdTXSBFbWJlZCBhZGRlZC9tb2Rp
ZmllZC9kZWxldGVkIHN0YXR1cyBpbnRvIGNoYW5nZWQgZmlsZXMKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCRmlsZU5hbWUubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQkZpbGVOYW1lLm1t
CmluZGV4IGE2YjAxMjliYzEwNTljNGY5YzExOGQxZmQ3ZWZkMjEyM2VhYzJjN2EuLjQxMDIyMjRl
NDUyNzRkMzYzNzllNGJiMDAyYTBmZWU4OTgzMmY1YmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCRmlsZU5hbWUubW0KKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJGaWxlTmFtZS5tbQpA
QCAtNzEsMjAgKzcxLDIzIEBAIHN0YXRpYyB2b2lkIHJ1blRlc3QoKQogICAgIFJldGFpblB0cjxO
U1N0cmluZz4gc3RyaW5nMiA9IChOU1N0cmluZyAqKVtsYXN0U2NyaXB0TWVzc2FnZSBib2R5XTsK
ICAgICBFWFBFQ1RfV0tfU1RSRVEoQCJTdWNjZXNzIiwgc3RyaW5nMi5nZXQoKSk7CiAKLSAgICAv
LyBGb3IgZGF0YWJhc2UgdGhhdCBpcyBub3Qgb3BlbmVkIGFmdGVyIHVwZ3JhZGUsIGl0cyBmaWxl
IHNob3VsZCBiZSBpbiB2MC4KKyAgICAvLyBBbGwgZGF0YWJhc2VzIG9mIGFuIG9yaWdpbiBhcmUg
bWlncmF0ZWQgdG8gbmV3IHZlcnNpb24gZGlyZWN0b3J5IHdoZW4gdGhlIG9yaWdpbiBpcyBhY2Nl
c3NlZC4KICAgICBhdXRvIGRlZmF1bHRGaWxlTWFuYWdlciA9IFtOU0ZpbGVNYW5hZ2VyIGRlZmF1
bHRNYW5hZ2VyXTsKICAgICBOU1N0cmluZyAqZXhpc3RpbmdEYXRhYmFzZU5hbWUgPSBAIkluZGV4
ZWREQlRlc3QiOwogICAgIE5TU3RyaW5nICpjcmVhdGVkRGF0YWJhc2VOYW1lID0gQCJJbmRleGVk
REJPdGhlciI7CiAgICAgTlNTdHJpbmcgKnVudXNlZERhdGFiYXNlTmFtZSA9IEAiSW5kZXhlZERC
VW51c2VkIjsKICAgICBOU1N0cmluZyAqZXhpc3RpbmdEYXRiYXNlSGFzaCA9IFdlYkNvcmU6OlNR
TGl0ZUZpbGVTeXN0ZW06OmNvbXB1dGVIYXNoRm9yRmlsZU5hbWUoZXhpc3RpbmdEYXRhYmFzZU5h
bWUpOwogICAgIE5TU3RyaW5nICpjcmVhdGVkRGF0YWJhc2VIYXNoID0gV2ViQ29yZTo6U1FMaXRl
RmlsZVN5c3RlbTo6Y29tcHV0ZUhhc2hGb3JGaWxlTmFtZShjcmVhdGVkRGF0YWJhc2VOYW1lKTsK
KyAgICBOU1N0cmluZyAqdW51c2VkRGF0YWJhc2VIYXNoID0gV2ViQ29yZTo6U1FMaXRlRmlsZVN5
c3RlbTo6Y29tcHV0ZUhhc2hGb3JGaWxlTmFtZShjcmVhdGVkRGF0YWJhc2VOYW1lKTsKICAgICBO
U1VSTCAqaWRiUm9vdFVSTCA9IFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVd
IF9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeV07CiAgICAgTlNVUkwgKm9sZFZlcnNpb25EaXJl
Y3RvcnlVUkwgPSBbaWRiUm9vdFVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJ2MCJd
OwogICAgIE5TVVJMICpuZXdWZXJzaW9uRGlyZWN0b3J5VVJMID0gW2lkYlJvb3RVUkwgVVJMQnlB
cHBlbmRpbmdQYXRoQ29tcG9uZW50OkAidjEiXTsKICAgICBOU1VSTCAqb2xkVmVyc2lvbk9yaWdp
bkRpcmVjdG9yeVVSTCA9IFtvbGRWZXJzaW9uRGlyZWN0b3J5VVJMIFVSTEJ5QXBwZW5kaW5nUGF0
aENvbXBvbmVudDogQCJmaWxlX18wIl07CiAgICAgTlNVUkwgKm5ld1ZlcnNpb25PcmlnaW5EaXJl
Y3RvcnlVUkwgPSBbbmV3VmVyc2lvbkRpcmVjdG9yeVVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21w
b25lbnQ6IEAiZmlsZV9fMCJdOwogICAgIE5TVVJMICpvbGRWZXJzaW9uVW51c2VkRGF0YWJhc2VE
aXJlY3RvcnlVUkwgPSBbb2xkVmVyc2lvbk9yaWdpbkRpcmVjdG9yeVVSTCBVUkxCeUFwcGVuZGlu
Z1BhdGhDb21wb25lbnQ6dW51c2VkRGF0YWJhc2VOYW1lXTsKLSAgICBFWFBFQ1RfVFJVRShbW05T
RmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6b2xkVmVyc2lvblVu
dXNlZERhdGFiYXNlRGlyZWN0b3J5VVJMLnBhdGhdKTsKKyAgICBOU1VSTCAqbmV3VmVyc2lvblVu
dXNlZERhdGFiYXNlRGlyZWN0b3J5VVJMID0gW25ld1ZlcnNpb25PcmlnaW5EaXJlY3RvcnlVUkwg
VVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OnVudXNlZERhdGFiYXNlSGFzaF07CisgICAgRVhQ
RUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0
aDpvbGRWZXJzaW9uVW51c2VkRGF0YWJhc2VEaXJlY3RvcnlVUkwucGF0aF0pOworICAgIEVYUEVD
VF9UUlVFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpu
ZXdWZXJzaW9uVW51c2VkRGF0YWJhc2VEaXJlY3RvcnlVUkwucGF0aF0pOwogICAgIAogICAgIC8v
IEZvciBkYXRhYmFzZSB0aGF0IGlzIG9wZW5lZCBhZnRlciB1cGdyYWRlLCBpdHMgZmlsZSBzaG91
bGQgb25seSBiZSBpbiB2MS4KICAgICBOU1VSTCAqb2xkVmVyc2lvbkV4aXN0aW5nRGF0YWJhc2VE
aXJlY3RvcnlVUkwgPSBbb2xkVmVyc2lvbk9yaWdpbkRpcmVjdG9yeVVSTCBVUkxCeUFwcGVuZGlu
Z1BhdGhDb21wb25lbnQ6IGV4aXN0aW5nRGF0YWJhc2VOYW1lXTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCUGVyc2lzdGVuY2UubW0g
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlBlcnNpc3Rl
bmNlLm1tCmluZGV4IDI3MThjNGFiMzY5YTgxODJkYTBlMTE4YzQ1MTY2NmFlOWQxZTJjNzQuLjRm
MGE4ZWM5NDQ1NDhjYTZjNzg3MDE1YzZiNmQ5NTA4NTg4Mzg4YjMgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCUGVyc2lzdGVuY2UubW0K
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJQZXJz
aXN0ZW5jZS5tbQpAQCAtMzA1LDEwICszMDUsMTQgQEAgVEVTVChJbmRleGVkREIsIEluZGV4ZWRE
QlRoaXJkUGFydHlEYXRhUmVtb3ZhbCkKICAgICBFWFBFQ1RfV0tfU1RSRVEoIEAiZGF0YWJhc2Ug
aXMgY3JlYXRlZCAtIHB1dCBpdGVtIHN1Y2Nlc3MiLCAoTlNTdHJpbmcgKilbbGFzdFNjcmlwdE1l
c3NhZ2UgYm9keV0pOwogCiAgICAgcmVhZHlUb0NvbnRpbnVlID0gZmFsc2U7Ci0gICAgW1tXS1dl
YnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gZmV0Y2hEYXRhUmVjb3Jkc09mVHlwZXM6
d2Vic2l0ZURhdGFUeXBlcy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8V0tXZWJz
aXRlRGF0YVJlY29yZCAqPiAqZGF0YVJlY29yZHMpIHsKLSAgICAgICAgRVhQRUNUX0VRKDF1LCBk
YXRhUmVjb3Jkcy5jb3VudCk7Ci0gICAgICAgIEVYUEVDVF9XS19TVFJFUSgiaWZyYW1lIiwgW1tk
YXRhUmVjb3JkcyBmaXJzdE9iamVjdF0gZGlzcGxheU5hbWVdKTsKLSAgICAgICAgW1tXS1dlYnNp
dGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gcmVtb3ZlRGF0YU9mVHlwZXM6d2Vic2l0ZURh
dGFUeXBlcy5nZXQoKSBmb3JEYXRhUmVjb3JkczpkYXRhUmVjb3JkcyBjb21wbGV0aW9uSGFuZGxl
cjpeKCkgeworICAgIFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdIGZldGNo
RGF0YVJlY29yZHNPZlR5cGVzOndlYnNpdGVEYXRhVHlwZXMuZ2V0KCkgY29tcGxldGlvbkhhbmRs
ZXI6XihOU0FycmF5PFdLV2Vic2l0ZURhdGFSZWNvcmQgKj4gKnJlY29yZHMpIHsKKyAgICAgICAg
RVhQRUNUX0VRKDJ1LCByZWNvcmRzLmNvdW50KTsKKyAgICAgICAgTlNTb3J0RGVzY3JpcHRvciAq
cmVjb3JkRGVzY3JpcHRvciA9IFtOU1NvcnREZXNjcmlwdG9yIHNvcnREZXNjcmlwdG9yV2l0aEtl
eTpAImRpc3BsYXlOYW1lIiBhc2NlbmRpbmc6WUVTXTsKKyAgICAgICAgTlNBcnJheSAqc29ydERl
c2NyaXB0b3JzID0gQFtyZWNvcmREZXNjcmlwdG9yXTsKKyAgICAgICAgTlNBcnJheSAqc29ydGVk
UmVjb3JkcyA9IFtyZWNvcmRzIHNvcnRlZEFycmF5VXNpbmdEZXNjcmlwdG9yczpzb3J0RGVzY3Jp
cHRvcnNdOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoImlmcmFtZSIsIFtbc29ydGVkUmVjb3Jk
cyBvYmplY3RBdEluZGV4OjBdIGRpc3BsYXlOYW1lXSk7CisgICAgICAgIEVYUEVDVF9XS19TVFJF
USgid2Via2l0Lm9yZyIsIFtbc29ydGVkUmVjb3JkcyBvYmplY3RBdEluZGV4OjFdIGRpc3BsYXlO
YW1lXSk7CisgICAgICAgIFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdIHJl
bW92ZURhdGFPZlR5cGVzOndlYnNpdGVEYXRhVHlwZXMuZ2V0KCkgZm9yRGF0YVJlY29yZHM6cmVj
b3JkcyBjb21wbGV0aW9uSGFuZGxlcjpeKCkgewogICAgICAgICAgICAgcmVhZHlUb0NvbnRpbnVl
ID0gdHJ1ZTsKICAgICAgICAgfV07CiAgICAgfV07CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlN1c3BlbmRJbW1pbmVudGx5Lm1tIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJTdXNwZW5kSW1t
aW5lbnRseS5tbQppbmRleCBkYzYzNDNlM2VkZGZlNDhkYmZlZWU0Zjc5OTkyZmZjYjVmNjBlMTZi
Li5iZjkwZjU3Y2UwOTc1ZTk0ZTYzNzA0N2E1ZDBlOWRmZDE4ZmJkNjI0IDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlN1c3BlbmRJbW1p
bmVudGx5Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5k
ZXhlZERCU3VzcGVuZEltbWluZW50bHkubW0KQEAgLTczLDYgKzczLDEyIEBAIHN0YXRpYyB2b2lk
IGtlZXBOZXR3b3JrUHJvY2Vzc0FjdGl2ZSgpCiAKIFRFU1QoSW5kZXhlZERCLCBJbmRleGVkREJT
dXNwZW5kSW1taW5lbnRseSkKIHsKKyAgICByZWFkeVRvQ29udGludWUgPSBmYWxzZTsKKyAgICBb
W1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSByZW1vdmVEYXRhT2ZUeXBlczpb
V0tXZWJzaXRlRGF0YVN0b3JlIGFsbFdlYnNpdGVEYXRhVHlwZXNdIG1vZGlmaWVkU2luY2U6W05T
RGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlvbkhhbmRsZXI6XigpIHsKKyAgICAgICAgcmVhZHlU
b0NvbnRpbnVlID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JnJlYWR5VG9Db250aW51ZSk7CisKICAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtbSW5kZXhl
ZERCU3VzcGVuZEltbWluZW50bHlNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOwogICAgIGF1
dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9j
XSBpbml0XSk7CiAgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRk
U2NyaXB0TWVzc2FnZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBuYW1lOkAidGVzdEhhbmRsZXIiXTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU3RvcmVC
bG9iVGhlbkRlbGV0ZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
U3RvcmVCbG9iVGhlbkRlbGV0ZS5tbQppbmRleCBhYWJmZmY4N2JjNjRiMzk1MmIyNDE0NTIxNWVl
MDM4Mjg2YjdjODkxLi44ZTg1YTQwYTVlODNiYTAzNDMyMWU3ZTc5NjlkODM1NWUzMmMyNDY1IDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1N0b3JlQmxv
YlRoZW5EZWxldGUubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9TdG9yZUJsb2JUaGVuRGVsZXRlLm1tCkBAIC04Nyw3ICs4Nyw3IEBAIFRFU1QoSW5kZXhlZERC
LCBTdG9yZUJsb2JUaGVuUmVtb3ZlRGF0YSkKICAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1h
bmFnZXJdIGNvcHlJdGVtQXRQYXRoOmRhdGFiYXNlRmlsZVBhdGggdG9QYXRoOmZha2VTaG1QYXRo
IGVycm9yOm5pbF07CiAgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjb3B5SXRl
bUF0UGF0aDpkYXRhYmFzZUZpbGVQYXRoIHRvUGF0aDpmYWtlV2FsUGF0aCBlcnJvcjpuaWxdOwog
Ci0gICAgLy8gTWFrZSBzb21lIG90aGVyIC5ibG9iIGZpbGVzIGluIHRoZSBkYXRhYmFzZSBkaXJl
Y3RvcnkgdG8gbGF0ZXIgdmFsaWRhdGUgdGhhdCBvbmx5IGFwcHJvcHJpYXRlIGZpbGVzIGFyZSBk
ZWxldGVkLgorICAgIC8vIE1ha2Ugc29tZSBvdGhlciAuYmxvYiBmaWxlcyBpbiB0aGUgZGF0YWJh
c2UgZGlyZWN0b3J5IHRvIGxhdGVyIHZhbGlkYXRlIGFsbCBibG9iIGZpbGVzIGluIHRoZSBkaXJl
Y3RvcnkgYXJlIGRlbGV0ZWQuCiAgICAgTlNTdHJpbmcgKm90aGVyQmxvYjEgPSBbZGF0YWJhc2VE
aXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiNzE4Mi5ibG9iIl07CiAg
ICAgTlNTdHJpbmcgKm90aGVyQmxvYjIgPSBbZGF0YWJhc2VEaXJlY3Rvcnkgc3RyaW5nQnlBcHBl
bmRpbmdQYXRoQ29tcG9uZW50OkAiMWEuYmxvYiJdOwogICAgIE5TU3RyaW5nICpvdGhlckJsb2Iz
ID0gW2RhdGFiYXNlRGlyZWN0b3J5IHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAImEx
LmJsb2IiXTsKQEAgLTEwMiwxMyArMTAyLDEyIEBAIFRFU1QoSW5kZXhlZERCLCBTdG9yZUJsb2JU
aGVuUmVtb3ZlRGF0YSkKICAgICAgICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZh
dWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpibG9iRmlsZVBhdGhdKTsKICAgICAgICAgRVhQ
RUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0
aDpkYXRhYmFzZUZpbGVQYXRoXSk7CiAKLSAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBmYWtlIGJs
b2IgZmlsZSB3aXRoIGEgdmFsaWQgYmxvYiBmaWxlIG5hbWUgaXMgZ29uZS4KKyAgICAgICAgLy8g
TWFrZSBzdXJlIGFsbCBmYWtlIGJsb2IgZmlsZSBhcmUgZ29uZS4KICAgICAgICAgRVhQRUNUX0ZB
TFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpvdGhl
ckJsb2IxXSk7CiAKLSAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBmYWtlIGJsb2IgZmlsZXMgd2l0
aCBpbnZhbGlkIGJsb2IgZmlsZSBuYW1lcyBhcmUgc3RpbGwgdGhlcmUuCi0gICAgICAgIEVYUEVD
VF9UUlVFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpv
dGhlckJsb2IyXSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0
TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpvdGhlckJsb2IzXSk7Ci0gICAgICAgIEVYUEVDVF9U
UlVFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpvdGhl
ckJsb2I0XSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1h
bmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6b3RoZXJCbG9iMl0pOworICAgICAgICBFWFBFQ1RfRkFM
U0UoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOm90aGVy
QmxvYjNdKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFu
YWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpvdGhlckJsb2I0XSk7CiAKICAgICAgICAgLy8gTWFrZSBz
dXJlIGV2ZXJ5dGhpbmcgcmVsYXRlZCB0byB0aGUgZmFrZSBkYXRhYmFzZSBpcyBnb25lLgogICAg
ICAgICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhp
c3RzQXRQYXRoOmZha2VTaG1QYXRoXSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451380</attachid>
            <date>2022-02-09 08:12:31 -0800</date>
            <delta_ts>2022-02-09 08:56:33 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-234925-20220209081230.patch</filename>
            <type>text/plain</type>
            <size>284908</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NDcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDU2ZDg5YjMxNjkyZGVk
NDhkNDgyMWM3MWFjODExOGMwNWQxM2E2Ni4uMDI4ZDlkM2YwZDlkMmRmNmI5OWQyOWZmNzgwNzJj
NjcxZmYwMWM0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk1IEBACisyMDIyLTAyLTA5ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIE1hbmFnZSBJbmRleGVkREIg
c3RvcmFnZSBieSBvcmlnaW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzNDkyNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODc1NTUwMTQ+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAgQm90aCBXZWJLaXQgYW5k
IFdlYktpdExlZ2FjeSB1c2VkIElEQlNlcnZlciB0byBtYW5hZ2UgVW5pcXVlSURCRGF0YWJhc2Vz
LCBhbmQgVW5pcXVlSURCRGF0YWJhc2UgcG9pbnRlZCB0byAKKyAgICAgICAgSURCU2VydmVyLiBO
b3cgdGhhdCBXZWJLaXQgdXNlcyBXZWJLaXQ6OklEQlN0b3JhZ2VNYW5hZ2VyIHRvIG1hbmFnZSBV
bmlxdWVJREJEYXRhYmFzZXMuIFdlIHVudGllIHRoZSAKKyAgICAgICAga25vdCBiZXR3ZWVuIElE
QlNlcnZlciBhbmQgVW5pcXVlSURCRGF0YWJhc2UgYnkgYWRkaW5nIGEgbmV3IGFic3RyYWN0IGNs
YXNzIFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlciBhbmQgbWFrZQorICAgICAgICBVbmlxdWVJREJE
YXRhYmFzZSBwb2ludCB0byBVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuCisKKyAgICAgICAgQWxz
bywgYXMgcXVvdGEgY2hlY2sgaXMgbm8gbG9uZ2VyIGFzeW5jIGFjY29yZGluZyB0byBjaGFuZ2Vz
IGluIFdlYktpdCwgd2UgbmVlZCB0byB1cGRhdGUgb3BlcmF0aW9ucyBpbgorICAgICAgICBVbmlx
dWVJREJEYXRhYmFzZSB0byBhZG9wdCB0aGUgY2hhbmdlLgorCisgICAgICAgIENvdmVyZWQgYnkg
ZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnQuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6SURCU2VydmVyOjpyZWdpc3RlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OnVucmVnaXN0ZXJDb25uZWN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpjcmVhdGVCYWNraW5nU3RvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OnVwZ3JhZGVkRGF0YWJhc2VE
aXJlY3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OnJlZ2lz
dGVyRGF0YWJhc2VDb25uZWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklEQlNl
cnZlcjo6SURCU2VydmVyOjp1bnJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0aW9uKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpjbG9zZUFuZFRha2VVbmlx
dWVJREJEYXRhYmFzZSk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL0lEQlNlcnZlci5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1v
cnlJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1v
cnlJREJCYWNraW5nU3RvcmU6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUp
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3Rv
cmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3Rv
cmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlPYmplY3RTdG9yZTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5T2JqZWN0U3RvcmU6
Ok1lbW9yeU9iamVjdFN0b3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
TWVtb3J5T2JqZWN0U3RvcmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
U1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
U1FMaXRlSURCQmFja2luZ1N0b3JlOjpTUUxpdGVJREJCYWNraW5nU3RvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmVuY29kZURhdGFiYXNl
TmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6ZGVjb2RlRGF0YWJhc2VOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FM
aXRlSURCQmFja2luZ1N0b3JlOjpnZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbyk6CisgICAgICAg
IChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlQmFja2lu
Z1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0
b3JlOjpmaWxlbmFtZUZvckRhdGFiYXNlTmFtZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZnVsbERhdGFiYXNlRGly
ZWN0b3J5V2l0aFVwZ3JhZGUpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6VW5pcXVlSURCRGF0YWJhc2UpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6bWFuYWdlcik6CisgICAgICAg
IChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtQ3VycmVudE9w
ZW5PcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRh
YmFzZTo6cGVyZm9ybUN1cnJlbnRPcGVuT3BlcmF0aW9uQWZ0ZXJTcGFjZUNoZWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZUJhY2tpbmdT
dG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpj
cmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlE
QkRhdGFiYXNlOjpkZWxldGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2
ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpyZW5hbWVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpjbGVhck9iamVjdFN0b3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZUluZGV4
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0
ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6
OnJlbmFtZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0
YWJhc2U6OnB1dE9yQWRkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURC
RGF0YWJhc2U6OnB1dE9yQWRkQWZ0ZXJTcGFjZUNoZWNrKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmdldFJlY29yZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRBbGxSZWNvcmRzKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmdldENvdW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZVJlY29yZCk6
CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuQ3Vy
c29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6Oml0
ZXJhdGVDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRh
YmFzZTo6Y29tbWl0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpV
bmlxdWVJREJEYXRhYmFzZTo6YWJvcnRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJ
REJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpoYXNEYXRhSW5NZW1vcnkgY29uc3QpOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6c2VydmVyKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJh
c2VDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURC
RGF0YWJhc2VDb25uZWN0aW9uOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb246On5Vbmlx
dWVJREJEYXRhYmFzZUNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpV
bmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb246Om1hbmFnZXIpOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uaDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uOjpzZXJ2ZXIp
OiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJE
YXRhYmFzZU1hbmFnZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVu
aXF1ZUlEQkRhdGFiYXNlTWFuYWdlcjo6flVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlcik6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZVRy
YW5zYWN0aW9uOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6flVuaXF1ZUlEQkRh
dGFiYXNlVHJhbnNhY3Rpb24pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9V
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvc2hhcmVkL0lEQkVycm9yLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJFcnJvcjo6b3BlcmF0
b3IgYm9vbCBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJl
cXVlc3REYXRhLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc291
cmNlSWRlbnRpZmllci5oOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVy
OjpvcGVyYXRvciE9IGNvbnN0KToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisKIDIwMjItMDItMDkgIExhdXJvIE1vdXJhICA8bG1vdXJhQGlnYWxpYS5jb20+
CiAKICAgICAgICAgTm9uLXVuaWZpZWQgYnVpbGQgZml4ZXMgYWZ0ZXIgcjI4OTI0NwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCA1YzBlNGE1OWE1MGQ1MjM3NzBhNmNiOTY5YjM2ZWIwYjU4NDU2ZTNjLi5hMWI3OTg5N2Q3
OWI4ZDE5NDBhOTdiOWFmZTEyMTg2NDdiM2NmMWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2NSBA
QAorMjAyMi0wMi0wOSAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAg
ICBNYW5hZ2UgSW5kZXhlZERCIHN0b3JhZ2UgYnkgb3JpZ2luCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ5MjUKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzg3NTU1MDE0PgorCisgICAgICAgIFJldmlld2VkIGJ5IENocmlzIER1bWV6LgorCisgICAg
ICAgIEluIG5ldHdvcmsgcHJvY2VzcywgSW5kZXhlZERCIGRhdGEgaXMgbWFuYWdlZCBieSBXZWJL
aXQ6OldlYklEQlNlcnZlci4gRWFjaCBzZXNzaW9uIG93bnMgYSBXZWJJREJTZXJ2ZXIgCisgICAg
ICAgIChJREJTZXJ2ZXIpIGFuZCBlYWNoIElEQlNlcnZlciBvd25zIG9uZSBvciBtb3JlIFVuaXF1
ZUlEQkRhdGFiYXNlcyAocmVzcHJlbnRpbmcgb25lIGFjdHVhbCBkYXRhYmFzZSB0aGF0CisgICAg
ICAgIElEQkRhdGFiYXNlIGNvbm5lY3RzIHRvLCBjYW4gYmUgaWRlbnRpZmllZCBieSB7c2Vzc2lv
biwgb3JpZ2luLCBuYW1lfSkuIE5vdyB0aGF0IHdlIGhhdmUgTmV0d29ya1N0b3JhZ2VNYW5hZ2Vy
LCAKKyAgICAgICAgd2hpY2ggbWFuYWdlcyBzZXNzaW9uIHN0b3JhZ2UgYnkgb3JpZ2luLCB3ZSBj
YW4gbWVyZ2UgV2ViSURCU2VydmVyIHdpdGggTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLCBzaW5jZSBJ
bmRleGVkREIgCisgICAgICAgIHN0b3JhZ2UgaXMgbm90IHNoYXJlZCBhY3Jvc3Mgb3JpZ2lucy4K
KworICAgICAgICBUaGUgb2xkIHN0cnVjdHVyZSBpczoKKyAgICAgICAgTmV0d29ya1Nlc3Npb24g
LSBXZWJJREJTZXJ2ZXIgLSBJREJTZXJ2ZXIgLSBVbmlxdWVJREJEYXRhYmFzZXMKKyAgICAgICAg
VGhlIG5ldyBzdHJ1Y3R1cmUgaXM6CisgICAgICAgIE5ldHdvcmtTZXNzaW9uIC0gTmV0d29ya1N0
b3JhZ2VNYW5hZ2VyIC0gT3JpZ2luU3RvcmFnZU1hbmFnZXIgLSBJREJTdG9yYWdlTWFuYWdlciAt
IFVuaXF1ZUlEQkRhdGFiYXNlCisKKyAgICAgICAgVG8gY29tcGxldGUgdGhpcyB0cmFuc2l0aW9u
LCB3ZSBuZWVkIHRvIG1ha2UgYSBmZXcgY2hhbmdlczoKKyAgICAgICAgMS4gV2ViIHByb2Nlc3Mg
bm93IHNlbmRzIEluZGV4ZWREQiByZWxhdGVkIG1lc3NhZ2VzIHRvIE5ldHdvcmtTdG9yYWdlTWFu
YWdlciBpbnN0ZWFkIG9mIFdlYklEQlNlcnZlci4gCisgICAgICAgIDIuIFNvbWUgbWVzc2FnZXMg
YXJlIHNlbnQgdG8gb3BlcmF0ZSBvbiBVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24gb3IgVW5p
cXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiwgYW5kIHRoZXkgCisgICAgICAgIHVzZSBpZGVudGlm
aWVycyB0byBzcGVjaWZ5IHRoZSB0YXJnZXQuIFRoZXJlZm9yZSwgTmV0d29ya1N0b3JhZ2VNYW5h
Z2VycyBuZWVkcyB0byBrbm93IHRoZSBtYXBwaW5nIGJldHdlZW4gCisgICAgICAgIGlkZW50aWZp
ZXJzIGFuZCB0YXJnZXQgb2JqZWN0cy4gQSBuZXcgY2xhcyBJREJTdG9yYWdlUmVnaXN0cnkgaXMg
YWRkZWQgcmVjb3JkIHRoaXMgbWFwcGluZy4gRWFjaCAKKyAgICAgICAgTmV0d29ya1N0b3JhZ2VN
YW5hZ2VyIG93bnMgYSBJREJTdG9yYWdlUmVnaXN0cnkgYW5kIGl0IHBhc3NlcyBJREJTdG9yYWdl
UmVnaXN0cnkgdG8gSURCU3RvcmFnZU1hbmFnZXIsCisgICAgICAgIElEQlN0b3JhZ2VNYW5hZ2Vy
IHdpbGwgcmVnaXN0ZXIgb2JqZWN0cyB0byBJREJTdG9yYWdlUmVnaXN0cnkgYW5kIE5ldHdvcmtT
dG9yYWdlTWFuYWdlciBjYW4gZG8gc2VhcmNoIHZpYSAKKyAgICAgICAgSURCU3RvcmFnZVJlZ2lz
dHJ5LgorICAgICAgICAzLiBRdW90YSBjaGVjayBmb3IgSW5kZXhlZERCIG9wZXJhdGlvbnMgYmVj
b21lcyBhc3luYyBieSBhZGRpbmcgbmV3IFF1b3RhTWFuYWdlciBjbGFzcywgd2hpY2ggaXMgc2lt
aWxhciB0byAKKyAgICAgICAgV2ViQ29yZTo6U3RvcmFnZVF1b3RhTWFuYWdlciBidXQgcHJvdmlk
ZXMgYXN5bmMgaW50ZXJmYWNlcy4gCisgICAgICAgIFdlIHVzZWQgdG8gYmxvY2sgdGhlIElEQlNl
cnZlciB0aHJlYWQgd2hlbiBpdCBpcyB3YWl0aW5nIGZvciBxdW90YSBjaGVjayByZXN1bHQgZnJv
bSBVSSBwcm9jZXNzLCB0aGlzIGlzIGZpbmUgCisgICAgICAgIGJlY2F1c2UgSURCU2VydmVyIHJ1
bnMgb24gaXRzIG93biB0aHJlYWQuIE5vdyB0aGF0IElEQlN0b3JhZ2VNYW5hZ2VyIHJ1bnMgb24g
dGhlIHNhbWUgdGhyZWFkIGFzIHRoZSBvdGhlciAKKyAgICAgICAgc3RvcmFnZSB0eXBlcywgd2Ug
Y2Fubm90IGJsb2NrIHRoZSB0aHJlYWQgb24gcXVvdGEgY2hlY2suCisgICAgICAgIDQuIFJlbmFt
ZSBXZWJJREJDb25uZWN0aW9uVG9DbGllbnQgdG8gSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVu
dCB0byByZWZsZWN0IHRoZSBjaGFuZ2Ugb24gdGhlIHN0cnVjdHVyZS4gQWxzbywKKyAgICAgICAg
SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudCBkb2VzIG5vdCBrZWVwIHJlZmVyZW5jZSB0byB0
aGUgSVBDOjpDb25uZWN0aW9uIG5vdywgaXQgb25seSByZWNvcmRzIAorICAgICAgICBJUEM6OkNv
bm5lY3Rpb246OlVuaXF1ZUlELgorICAgICAgICA1LiBJbmRleGVkREIgZGF0YSBtYXkgYmUgcHV0
IGluIGRpZmZlcmVudCB2ZXJzaW9uIGRpcmN0b3JpZXMuIFdlIHVzZWQgdG8gbWlncmF0ZSBkYXRh
YmFzZSB0byBuZXcgdmVyc2lvbiAKKyAgICAgICAgZGlyZXRvcnkgd2hlbiB0aGUgZGF0YWJhc2Ug
aXMgYWNjZXNzZWQuIEFzIElEQlN0b3JhZ2VNYW5hZ2VyIG5vdyBtYW5hZ2VzIEluZGV4ZWREQiBk
YXRhIG9mIG9uZSBvcmlnaW4sIGl0J3MgCisgICAgICAgIHNpbXBsZXIgaWYgaXQgb25seSBrZWVw
cyB0cmFjayBvZiBvbmUgZGlyZWN0b3J5LiBUaGVyZWZvcmUsIHdlIG5vdyBtaWdyYXRlIGFsbCBk
YXRhYmFzZXMgb2Ygb25lIG9yaWdpbgorICAgICAgICB3aGVuIHRoZSBvcmlnaW4gaXMgYWNjZXNz
ZWQgKHNlZSBJREJTdG9yYWdlTWFuYWdlcjo6aWRiU3RvcmFnZU9yaWdpbkRpcmVjdG9yeSkuCisK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1cGRh
dGVRdW90YUJhc2VkT25TcGFjZVVzYWdlRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlc0Zv
ckluZGV4ZWREQik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGlkQ2xvc2UpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6YWRkV2Vic2l0ZURhdGFTdG9y
ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpmZXRjaFdlYnNpdGVEYXRhKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lu
cyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVBbmRSZXN0cmljdFdl
YnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OnJlZ2lzdHJhYmxlRG9tYWluc1dpdGhXZWJzaXRlRGF0YSk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5kKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3M6OnJlc3VtZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzOjpyZXNldFF1b3RhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRpZElu
Y3JlYXNlUXVvdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVuYW1lT3Jp
Z2luSW5XZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzdG9y
YWdlUXVvdGFNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3NDbG9zZWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
czo6c3VzcGVuZElEQlNlcnZlcnMpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzaG91
bGRTdXNwZW5kSURCU2VydmVycyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Nlc3Npb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6
aW52YWxpZGF0ZUFuZENhbmNlbCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjph
ZGRTdG9yYWdlTWFuYWdlclNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lv
bjo6ZW5zdXJlV2ViSURCU2VydmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Nlc3Npb246OmNsb3NlSURCU2VydmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Nlc3Npb246OmFkZEluZGV4ZWREYXRhYmFzZVNlc3Npb24pOiBEZWxldGVkLgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmg6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtTZXNzaW9uOjp3ZWJJREJTZXJ2ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrU2Vzc2lvbjo6aGFzSURCRGF0YWJhc2VQYXRoIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6c3RvcmFnZVBhdGgpOgorICAgICAgICAo
V2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6ZGlza1VzYWdlKToKKyAgICAgICAgKFdlYktp
dDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OnJlcXVlc3RTcGFjZSk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6Q2FjaGVTdG9yYWdlOjpDYWNoZXM6OnJlcXVlc3RTcGFjZSk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNzSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6c2V0SXNIb2xkaW5nTG9ja2VkRmlsZXMpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpJREJTdG9yYWdl
Q29ubmVjdGlvblRvQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rp
b25Ub0NsaWVudDo6fklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQpOgorICAgICAgICAoV2Vi
S2l0OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50Ojpjb25uZWN0aW9uVG9DbGllbnQpOgor
ICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRHZXRSZXN1
bHQpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRE
ZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9D
bGllbnQ6OmRpZE9wZW5EYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25u
ZWN0aW9uVG9DbGllbnQ6OmRpZFN0YXJ0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpJ
REJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRBYm9ydFRyYW5zYWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkQ29tbWl0VHJhbnNh
Y3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50Ojpk
aWRDcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0
aW9uVG9DbGllbnQ6OmRpZERlbGV0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6SURC
U3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkUmVuYW1lT2JqZWN0U3RvcmUpOgorICAgICAg
ICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRDbGVhck9iamVjdFN0
b3JlKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlk
Q3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xp
ZW50OjpkaWREZWxldGVJbmRleCk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0
aW9uVG9DbGllbnQ6OmRpZFJlbmFtZUluZGV4KToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFn
ZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkUHV0T3JBZGQpOgorICAgICAgICAoV2ViS2l0OjpJREJT
dG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRHZXRSZWNvcmQpOgorICAgICAgICAoV2ViS2l0
OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRHZXRBbGxSZWNvcmRzKToKKyAgICAg
ICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkR2V0Q291bnQpOgor
ICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWREZWxldGVS
ZWNvcmQpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50Ojpk
aWRPcGVuQ3Vyc29yKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0Ns
aWVudDo6ZGlkSXRlcmF0ZUN1cnNvcik6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25u
ZWN0aW9uVG9DbGllbnQ6OmRpZEdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyk6CisgICAg
ICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmZpcmVWZXJzaW9uQ2hh
bmdlRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50
OjpkaWRDbG9zZUZyb21TZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlQ29ubmVj
dGlvblRvQ2xpZW50Ojpub3RpZnlPcGVuREJSZXF1ZXN0QmxvY2tlZCk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50Lmg6IEFkZGVk
LgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZU1hbmFnZXIuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6bWlncmF0ZU9yaWdpbkRhdGEpOgorICAgICAgICAo
V2ViS2l0OjpJREJTdG9yYWdlTWFuYWdlcjo6aWRiU3RvcmFnZU9yaWdpbkRpcmVjdG9yeSk6Cisg
ICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VNYW5hZ2VyOjppZGJTdG9yYWdlU2l6ZSk6CisgICAg
ICAgIChXZWJLaXQ6OmdldE9yaWdpbnNGb3JWZXJzaW9uKToKKyAgICAgICAgKFdlYktpdDo6SURC
U3RvcmFnZU1hbmFnZXI6Om9yaWdpbnNPZklEQlN0b3JhZ2VEYXRhKToKKyAgICAgICAgKFdlYktp
dDo6SURCU3RvcmFnZU1hbmFnZXI6OklEQlN0b3JhZ2VNYW5hZ2VyKToKKyAgICAgICAgKFdlYktp
dDo6SURCU3RvcmFnZU1hbmFnZXI6OmlzQWN0aXZlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
SURCU3RvcmFnZU1hbmFnZXI6Omhhc0RhdGFJbk1lbW9yeSBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6OklEQlN0b3JhZ2VNYW5hZ2VyOjpjbG9zZURhdGFiYXNlc0ZvckRlbGV0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6SURCU3RvcmFnZU1hbmFnZXI6OnN0b3BEYXRhYmFzZUFjdGl2aXRpZXNGb3JT
dXNwZW5kKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZU1hbmFnZXI6OmdldE9yQ3JlYXRl
VW5pcXVlSURCRGF0YWJhc2UpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlTWFuYWdlcjo6
b3BlbkRhdGFiYXNlKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZU1hbmFnZXI6OmRlbGV0
ZURhdGFiYXNlKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZU1hbmFnZXI6OmdldEFsbERh
dGFiYXNlTmFtZXNBbmRWZXJzaW9ucyk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VNYW5h
Z2VyOjpvcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFn
ZU1hbmFnZXI6OnJlZ2lzdGVyQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3Jh
Z2VNYW5hZ2VyOjp1bnJlZ2lzdGVyQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OklEQlN0
b3JhZ2VNYW5hZ2VyOjpyZWdpc3RlclRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6SURC
U3RvcmFnZU1hbmFnZXI6OnVucmVnaXN0ZXJUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OklEQlN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViS2l0
OjpJREJTdG9yYWdlTWFuYWdlcjo6cmVxdWVzdFNwYWNlKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VNYW5hZ2VyLmg6IEFkZGVkLgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZVJlZ2lzdHJ5LmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6OklEQlN0b3JhZ2VSZWdpc3RyeTo6ZW5zdXJlQ29ubmVjdGlvblRvQ2xpZW50KToK
KyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZVJlZ2lzdHJ5OjpyZW1vdmVDb25uZWN0aW9uVG9D
bGllbnQpOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlUmVnaXN0cnk6OnJlZ2lzdGVyQ29u
bmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VSZWdpc3RyeTo6dW5yZWdpc3Rl
ckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlUmVnaXN0cnk6OnJlZ2lz
dGVyVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpJREJTdG9yYWdlUmVnaXN0cnk6OnVu
cmVnaXN0ZXJUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VSZWdpc3Ry
eTo6Y29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VSZWdpc3RyeTo6dHJh
bnNhY3Rpb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZVJl
Z2lzdHJ5Lmg6IEFkZGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29y
a1N0b3JhZ2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5h
Z2VyOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Ok5l
dHdvcmtTdG9yYWdlTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFu
YWdlcjo6Y2FuSGFuZGxlVHlwZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1h
bmFnZXI6OnN0b3BSZWNlaXZpbmdNZXNzYWdlRnJvbUNvbm5lY3Rpb24pOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmRpZEluY3JlYXNlUXVvdGEp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmdldEFsbE9yaWdpbnMp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Om1vdmVEYXRhKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpzdXNwZW5kKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpyZWdpc3RlclRlbXBvcmFyeUJsb2JGaWxl
UGF0aHMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnJlcXVlc3RT
cGFjZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6cmVzZXRRdW90
YUZvclRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnJl
c2V0UXVvdGFVcGRhdGVkQmFzZWRPblVzYWdlRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6b3BlbkRhdGFiYXNlKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpvcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVEYXRhYmFzZSk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZXN0YWJsaXNoVHJhbnNhY3Rpb24pOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmRhdGFiYXNlQ29ubmVjdGlv
blBlbmRpbmdDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6
ZGF0YWJhc2VDb25uZWN0aW9uQ2xvc2VkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyOjphYm9ydE9wZW5BbmRVcGdyYWRlTmVlZGVkKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjphYm9ydFRyYW5zYWN0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjb21taXRUcmFuc2FjdGlvbik6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGlkRmluaXNoSGFuZGxp
bmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtTdG9yYWdlTWFuYWdlcjo6cmVuYW1lT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNsZWFyT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVJbmRleCk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6cmVuYW1lSW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnB1dE9yQWRkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1N0b3JhZ2VNYW5hZ2VyOjpnZXRSZWNvcmQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6OmdldEFsbFJlY29yZHMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6OmdldENvdW50KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VN
YW5hZ2VyOjpkZWxldGVSZWNvcmQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1h
bmFnZXI6Om9wZW5DdXJzb3IpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFn
ZXI6Oml0ZXJhdGVDdXJzb3IpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFn
ZXI6OmdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5tZXNzYWdlcy5pbjoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2VyLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6T3JpZ2luU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VCdWNrZXQ6OlN0b3Jh
Z2VCdWNrZXQpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFn
ZUJ1Y2tldDo6dG9XZWJzaXRlRGF0YVR5cGUpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9y
YWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldDo6dG9TdG9yYWdlSWRlbnRpZmllcik6CisgICAgICAg
IChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0OjppZGJTdG9yYWdl
TWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdl
QnVja2V0OjpleGlzdGluZ0lEQlN0b3JhZ2VNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6T3Jp
Z2luU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VCdWNrZXQ6OmlzQWN0aXZlIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6T3JpZ2luU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VCdWNrZXQ6OmlzRW1wdHkg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1
Y2tldDo6ZGVsZXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2Vy
OjpTdG9yYWdlQnVja2V0Ojptb3ZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3Jh
Z2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0OjpmZXRjaERhdGFUeXBlc0luTGlzdEZyb21NZW1vcnkp
OgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldDo6
ZmV0Y2hEYXRhVHlwZXNJbkxpc3RGcm9tRGlzayk6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0
b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0OjpkZWxldGVJREJTdG9yYWdlRGF0YSk6CisgICAg
ICAgIChXZWJLaXQ6OmNyZWF0ZVF1b3RhTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdp
blN0b3JhZ2VNYW5hZ2VyOjpPcmlnaW5TdG9yYWdlTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6
Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpkZWZhdWx0QnVja2V0KToKKyAgICAgICAgKFdlYktpdDo6
T3JpZ2luU3RvcmFnZU1hbmFnZXI6OnF1b3RhTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6Ok9y
aWdpblN0b3JhZ2VNYW5hZ2VyOjppZGJTdG9yYWdlTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6
Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpleGlzdGluZ0lEQlN0b3JhZ2VNYW5hZ2VyKToKKyAgICAg
ICAgKFdlYktpdDo6T3JpZ2luU3RvcmFnZU1hbmFnZXI6Om1vdmVEYXRhKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2VyLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9RdW90YU1hbmFnZXIuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdDo6UXVvdGFNYW5hZ2VyOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpRdW90YU1h
bmFnZXI6OlF1b3RhTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OlF1b3RhTWFuYWdlcjo6cmVx
dWVzdFNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6UXVvdGFNYW5hZ2VyOjpoYW5kbGVSZXF1ZXN0
cyk6CisgICAgICAgIChXZWJLaXQ6OlF1b3RhTWFuYWdlcjo6Z3JhbnRXaXRoQ3VycmVudFF1b3Rh
KToKKyAgICAgICAgKFdlYktpdDo6UXVvdGFNYW5hZ2VyOjpncmFudEZhc3RQYXRoKToKKyAgICAg
ICAgKFdlYktpdDo6UXVvdGFNYW5hZ2VyOjpkaWRJbmNyZWFzZVF1b3RhKToKKyAgICAgICAgKFdl
YktpdDo6UXVvdGFNYW5hZ2VyOjpyZXNldFF1b3RhVXBkYXRlZEJhc2VkT25Vc2FnZUZvclRlc3Rp
bmcpOgorICAgICAgICAoV2ViS2l0OjpRdW90YU1hbmFnZXI6OnJlc2V0UXVvdGFGb3JUZXN0aW5n
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1F1b3RhTWFuYWdlci5oOiBBZGRl
ZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKHR5cGVz
X3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQpOgorICAgICAgICAqIFNoYXJlZC9XZWJz
aXRlRGF0YS9RdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIuaDogQWRkZWQuCisgICAgICAg
ICogU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmg6CisgICAgICAgICogU291cmNl
cy50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmluY3JlYXNlUXVvdGEp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmlu
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cGVyVGhpcmRQYXJ0eU9yaWdpblN0
b3JhZ2VRdW90YSBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuaDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dFBlck9yaWdpblF1b3RhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbjo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bi5oOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9TZXJ2
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRlbGV0
ZURhdGFiYXNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpv
cGVuRGF0YWJhc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6
OmFib3J0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9T
ZXJ2ZXI6OmNvbW1pdFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVj
dGlvblRvU2VydmVyOjpkaWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Y3JlYXRlT2JqZWN0
U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRlbGV0
ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVy
OjpyZW5hbWVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25U
b1NlcnZlcjo6Y2xlYXJPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5l
Y3Rpb25Ub1NlcnZlcjo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25u
ZWN0aW9uVG9TZXJ2ZXI6OmRlbGV0ZUluZGV4KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29u
bmVjdGlvblRvU2VydmVyOjpyZW5hbWVJbmRleCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNv
bm5lY3Rpb25Ub1NlcnZlcjo6cHV0T3JBZGQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25u
ZWN0aW9uVG9TZXJ2ZXI6OmdldFJlY29yZCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5l
Y3Rpb25Ub1NlcnZlcjo6Z2V0QWxsUmVjb3Jkcyk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNv
bm5lY3Rpb25Ub1NlcnZlcjo6Z2V0Q291bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25u
ZWN0aW9uVG9TZXJ2ZXI6OmRlbGV0ZVJlY29yZCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNv
bm5lY3Rpb25Ub1NlcnZlcjo6b3BlbkN1cnNvcik6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNv
bm5lY3Rpb25Ub1NlcnZlcjo6aXRlcmF0ZUN1cnNvcik6CisgICAgICAgIChXZWJLaXQ6OldlYklE
QkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZXN0YWJsaXNoVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRhdGFiYXNlQ29ubmVjdGlvblBlbmRpbmdD
bG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGF0YWJh
c2VDb25uZWN0aW9uQ2xvc2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRv
U2VydmVyOjphYm9ydE9wZW5BbmRVcGdyYWRlTmVlZGVkKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
SURCQ29ubmVjdGlvblRvU2VydmVyOjpkaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpvcGVuREJSZXF1ZXN0Q2FuY2Vs
bGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpnZXRBbGxE
YXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMpOgorCiAyMDIyLTAyLTA5ICBMYXVybyBNb3VyYSAgPGxt
b3VyYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIE5vbi11bmlmaWVkIGJ1aWxkIGZpeGVzIGFmdGVy
IHIyODkyNDcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKaW5kZXggZTZiYTczMjJjMzQ4ZWNkZTQ3OTRlMDk0
OTk1YmFiNDg5NmJmNWE0OS4uMzgyY2JhOTgyNDkyMDE5MmNiYjFhM2JmNjM4NjVhODZhYTc4Zjg0
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMi0wMi0wOSAgU2lo
dWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBNYW5hZ2UgSW5kZXhlZERC
IHN0b3JhZ2UgYnkgb3JpZ2luCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzQ5MjUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg3NTU1MDE0PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IENocmlzIER1bWV6LgorCisgICAgICAgICogU3RvcmFnZS9JblBy
b2Nlc3NJREJTZXJ2ZXIuY3BwOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpxdW90YU1h
bmFnZXIpOgorCiAyMDIyLTAyLTAyICBFbGxpb3R0IFdpbGxpYW1zICA8ZW13QGFwcGxlLmNvbT4K
IAogICAgICAgICBbWGNvZGVdIEZpeCByZWR1bmRhbnQgZXhlY3V0aW9uIG9mICJDaGVjayBWVGFi
bGVzLi4uIiBzY3JpcHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2Ug
Yi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IDMzMmIwMDMzMDJjM2VmOTYyZmE3
MmZiM2Y4ODRjZjVmODI3MWQ0OWYuLjA4YTAxZTU3OGQ4YTM1MjdlNmZlZTQ0MmNlOTA4MTFhZjVi
YWZhYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291
cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMjI0LDExICsyMjQsMTYgQEAgc2V0KFdlYkNv
cmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9JREJDb25uZWN0aW9uVG9DbGllbnQuaAogICAgIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9J
REJDb25uZWN0aW9uVG9DbGllbnREZWxlZ2F0ZS5oCiAgICAgTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL0lEQlNlcnZlci5oCisgICAgTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0luZGV4VmFsdWVF
bnRyeS5oCisgICAgTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0luZGV4VmFsdWVTdG9yZS5oCisg
ICAgTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9u
LmgKICAgICBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmgK
ICAgICBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmgKKyAg
ICBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCVHJhbnNhY3Rpb24uaAogICAgIE1v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TZXJ2ZXJPcGVuREJSZXF1ZXN0LmgKICAgICBNb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaAogICAgIE1vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uaAorICAgIE1vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuaAogICAgIE1vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmgKIAogICAgIE1vZHVs
ZXMvaW5kZXhlZGRiL3NoYXJlZC9JbmRleEtleS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oCmluZGV4IDE1Zjhi
ZDI1NTE0NTdkMzI5OTJkNjZiYWNlYWYzNmViNjRkYmEzODEuLmVhZWYyNTQ1NjkzMzk1NjE0ZTFj
MjE4N2ZmNGNhYjY0YWUxM2U1N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oCkBAIC03MCw3ICs3MCw3IEBA
IHB1YmxpYzoKICAgICBib29sIGlzVHJhbnNpZW50KCkgY29uc3QgeyByZXR1cm4gbV9pc1RyYW5z
aWVudDsgfQogCiAgICAgU3RyaW5nIGRhdGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVUb1Jvb3QoY29u
c3QgU3RyaW5nJiByb290RGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIHZlcnNpb25TdHJpbmc9InYx
IikgY29uc3Q7Ci0gICAgc3RhdGljIFN0cmluZyBkYXRhYmFzZURpcmVjdG9yeVJlbGF0aXZlVG9S
b290KGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgdG9wTGV2ZWxPcmlnaW4sIGNvbnN0IFNlY3Vy
aXR5T3JpZ2luRGF0YSYgb3BlbmluZ09yaWdpbiwgY29uc3QgU3RyaW5nJiByb290RGlyZWN0b3J5
LCBjb25zdCBTdHJpbmcmIHZlcnNpb25TdHJpbmcpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBTdHJpbmcgZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9vdChjb25zdCBTZWN1cml0eU9y
aWdpbkRhdGEmIHRvcExldmVsT3JpZ2luLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9wZW5p
bmdPcmlnaW4sIGNvbnN0IFN0cmluZyYgcm9vdERpcmVjdG9yeSwgY29uc3QgU3RyaW5nJiB2ZXJz
aW9uU3RyaW5nKTsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVu
Y29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpv
cHRpb25hbDxJREJEYXRhYmFzZUlkZW50aWZpZXI+IGRlY29kZShEZWNvZGVyJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQ29ubmVjdGlv
blRvQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURC
Q29ubmVjdGlvblRvQ2xpZW50LmgKaW5kZXggMjdmNzI2OTE5ZjE0MjFmMjFhNWYwM2ZmZGZjMTc2
ZDRjNGJkZjNjMi4uZjA1YWMyZjhjODJhODA5YzI3MWM5ZGY1OTdmOTY0NzMxOWVmNjQ2MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkNvbm5l
Y3Rpb25Ub0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9JREJDb25uZWN0aW9uVG9DbGllbnQuaApAQCAtNzQsMTEgKzc0LDExIEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgbm90aWZ5T3BlbkRCUmVxdWVzdEJsb2NrZWQoY29uc3QgSURCUmVzb3VyY2VJ
ZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3Qgb2xkVmVyc2lvbiwgdWludDY0
X3QgbmV3VmVyc2lvbik7CiAKLSAgICB2b2lkIGRpZEdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJz
aW9ucyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImLCBWZWN0b3I8SURCRGF0YWJhc2VOYW1l
QW5kVmVyc2lvbj4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRHZXRBbGxEYXRhYmFz
ZU5hbWVzQW5kVmVyc2lvbnMoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiwgVmVjdG9yPElE
QkRhdGFiYXNlTmFtZUFuZFZlcnNpb24+JiYpOwogCiAgICAgdm9pZCByZWdpc3RlckRhdGFiYXNl
Q29ubmVjdGlvbihVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mKTsKICAgICB2b2lkIHVucmVn
aXN0ZXJEYXRhYmFzZUNvbm5lY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJik7Ci0g
ICAgdm9pZCBjb25uZWN0aW9uVG9DbGllbnRDbG9zZWQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGNvbm5lY3Rpb25Ub0NsaWVudENsb3NlZCgpOwogICAgIGJvb2wgaXNDbG9zZWQoKSB7IHJl
dHVybiBtX2lzQ2xvc2VkOyB9CiAgICAgdm9pZCBjbGVhckRlbGVnYXRlKCkgeyBtX2RlbGVnYXRl
ID0gbnVsbHB0cjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwCmluZGV4IGQyNjY5MzE4MDg0NmFmNjY2ODllMTdhZWEz
ZmY5OTcxOTU1YWUzNmUuLjRiYWQ0NDJiMWIzYTlhNDE3ODU5MDQyZjgxNjU3N2UwN2IxM2JhOGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJT
ZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9J
REJTZXJ2ZXIuY3BwCkBAIC0xMDEsMTMgKzEwMSwxMyBAQCB2b2lkIElEQlNlcnZlcjo6dW5yZWdp
c3RlclRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9u
KQogICAgIG1fdHJhbnNhY3Rpb25zLnJlbW92ZSh0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmll
cigpKTsKIH0KIAotdm9pZCBJREJTZXJ2ZXI6OnJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0aW9uKFVu
aXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYgY29ubmVjdGlvbikKK3ZvaWQgSURCU2VydmVyOjpy
ZWdpc3RlckNvbm5lY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiBjb25uZWN0aW9u
KQogewogICAgIEFTU0VSVCghbV9kYXRhYmFzZUNvbm5lY3Rpb25zLmNvbnRhaW5zKGNvbm5lY3Rp
b24uaWRlbnRpZmllcigpKSk7CiAgICAgbV9kYXRhYmFzZUNvbm5lY3Rpb25zLnNldChjb25uZWN0
aW9uLmlkZW50aWZpZXIoKSwgJmNvbm5lY3Rpb24pOwogfQogCi12b2lkIElEQlNlcnZlcjo6dW5y
ZWdpc3RlckRhdGFiYXNlQ29ubmVjdGlvbihVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24pCit2b2lkIElEQlNlcnZlcjo6dW5yZWdpc3RlckNvbm5lY3Rpb24oVW5pcXVlSURC
RGF0YWJhc2VDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogewogICAgIEFTU0VSVChtX2RhdGFiYXNl
Q29ubmVjdGlvbnMuY29udGFpbnMoY29ubmVjdGlvbi5pZGVudGlmaWVyKCkpKTsKICAgICBtX2Rh
dGFiYXNlQ29ubmVjdGlvbnMucmVtb3ZlKGNvbm5lY3Rpb24uaWRlbnRpZmllcigpKTsKQEAgLTEy
OCwxMyArMTI4LDEzIEBAIHN0ZDo6dW5pcXVlX3B0cjxJREJCYWNraW5nU3RvcmU+IElEQlNlcnZl
cjo6Y3JlYXRlQmFja2luZ1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlCiB7CiAgICAgQVNTRVJUKCFp
c01haW5UaHJlYWQoKSk7CiAgICAgaWYgKG1fZGF0YWJhc2VEaXJlY3RvcnlQYXRoLmlzRW1wdHko
KSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TWVtb3J5SURCQmFja2luZ1N0b3JlPihtX3Nl
c3Npb25JRCwgaWRlbnRpZmllcik7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPE1lbW9yeUlE
QkJhY2tpbmdTdG9yZT4oaWRlbnRpZmllcik7CiAKICAgICBBU1NFUlQoIW1fc2Vzc2lvbklELmlz
RXBoZW1lcmFsKCkpOwogICAgIGlmIChpZGVudGlmaWVyLmlzVHJhbnNpZW50KCkpCi0gICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPE1lbW9yeUlEQkJhY2tpbmdTdG9yZT4obV9zZXNzaW9uSUQsIGlk
ZW50aWZpZXIpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxNZW1vcnlJREJCYWNraW5nU3Rv
cmU+KGlkZW50aWZpZXIpOwogCi0gICAgcmV0dXJuIG1ha2VVbmlxdWU8U1FMaXRlSURCQmFja2lu
Z1N0b3JlPihtX3Nlc3Npb25JRCwgaWRlbnRpZmllciwgbV9kYXRhYmFzZURpcmVjdG9yeVBhdGgp
OworICAgIHJldHVybiBtYWtlVW5pcXVlPFNRTGl0ZUlEQkJhY2tpbmdTdG9yZT4oaWRlbnRpZmll
ciwgdXBncmFkZWREYXRhYmFzZURpcmVjdG9yeShpZGVudGlmaWVyKSk7CiB9CiAKIHZvaWQgSURC
U2VydmVyOjpvcGVuRGF0YWJhc2UoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhKQpA
QCAtMTc3LDE3ICsxNzcsNiBAQCB2b2lkIElEQlNlcnZlcjo6ZGVsZXRlRGF0YWJhc2UoY29uc3Qg
SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhKQogICAgICAgICBtX3VuaXF1ZUlEQkRhdGFiYXNl
TWFwLnJlbW92ZShkYXRhYmFzZS0+aWRlbnRpZmllcigpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRy
PFVuaXF1ZUlEQkRhdGFiYXNlPiBJREJTZXJ2ZXI6OmNsb3NlQW5kVGFrZVVuaXF1ZUlEQkRhdGFi
YXNlKFVuaXF1ZUlEQkRhdGFiYXNlJiBkYXRhYmFzZSkKLXsKLSAgICBMT0coSW5kZXhlZERCLCAi
SURCU2VydmVyOjpjbG9zZVVuaXF1ZUlEQkRhdGFiYXNlIik7Ci0gICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKLQotICAgIGF1dG8gdW5pcXVlUG9pbnRlciA9IG1fdW5pcXVlSURCRGF0YWJhc2VN
YXAudGFrZShkYXRhYmFzZS5pZGVudGlmaWVyKCkpOwotICAgIEFTU0VSVCh1bmlxdWVQb2ludGVy
KTsKLQotICAgIHJldHVybiB1bmlxdWVQb2ludGVyOwotfQotCiB2b2lkIElEQlNlcnZlcjo6YWJv
cnRUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRl
bnRpZmllcikKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCU2VydmVyOjphYm9ydFRyYW5zYWN0
aW9uIik7CkBAIC03NTAsNyArNzM5LDcgQEAgdm9pZCBJREJTZXJ2ZXI6OnJlbmFtZU9yaWdpbihj
b25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIG9sZE9yaWdpbiwgY29uc3QKICAgICAg
ICAgRmlsZVN5c3RlbTo6bW92ZUZpbGUob2xkT3JpZ2luUGF0aCwgbmV3T3JpZ2luUGF0aCk7CiB9
CiAKLVN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uIElEQlNlcnZlcjo6cmVxdWVzdFNwYWNl
KGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2luLCB1aW50NjRfdCB0YXNrU2l6ZSkgV1RGX0lHTk9S
RVNfVEhSRUFEX1NBRkVUWV9BTkFMWVNJUwordm9pZCBJREJTZXJ2ZXI6OnJlcXVlc3RTcGFjZShj
b25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbiwgdWludDY0X3QgdGFza1NpemUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIFdURl9JR05PUkVTX1RIUkVB
RF9TQUZFVFlfQU5BTFlTSVMKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBB
U1NFUlQobV9sb2NrLmlzSGVsZCgpKTsKQEAgLTc2Miw3ICs3NTEsNyBAQCBTdG9yYWdlUXVvdGFN
YW5hZ2VyOjpEZWNpc2lvbiBJREJTZXJ2ZXI6OnJlcXVlc3RTcGFjZShjb25zdCBDbGllbnRPcmln
aW4mIG9yaWdpbgogICAgIHJlc3VsdCA9IG1fc3BhY2VSZXF1ZXN0ZXIob3JpZ2luLCB0YXNrU2l6
ZSk7CiAgICAgbV9sb2NrLmxvY2soKTsKIAotICAgIHJldHVybiByZXN1bHQ7CisgICAgY29tcGxl
dGlvbkhhbmRsZXIocmVzdWx0ID09IFN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uOjpHcmFu
dCk7CiB9CiAKIHVpbnQ2NF90IElEQlNlcnZlcjo6ZGlza1VzYWdlKGNvbnN0IFN0cmluZyYgcm9v
dERpcmVjdG9yeSwgY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4pCkBAIC03ODQsNiArNzczLDIz
IEBAIHZvaWQgSURCU2VydmVyOjp1cGdyYWRlRmlsZXNJZk5lY2Vzc2FyeSgpCiAgICAgICAgIEZp
bGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhuZXdWZXJzaW9uRGlyZWN0b3J5KTsKIH0KIAor
U3RyaW5nIElEQlNlcnZlcjo6dXBncmFkZWREYXRhYmFzZURpcmVjdG9yeShjb25zdCBXZWJDb3Jl
OjpJREJEYXRhYmFzZUlkZW50aWZpZXImIGlkZW50aWZpZXIpCit7CisgICAgU3RyaW5nIG9sZE9y
aWdpbkRpcmVjdG9yeSA9IGlkZW50aWZpZXIuZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9v
dChtX2RhdGFiYXNlRGlyZWN0b3J5UGF0aCwgInYwIik7CisgICAgU3RyaW5nIG9sZERhdGFiYXNl
RGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG9sZE9yaWdp
bkRpcmVjdG9yeSwgU1FMaXRlSURCQmFja2luZ1N0b3JlOjplbmNvZGVEYXRhYmFzZU5hbWUoaWRl
bnRpZmllci5kYXRhYmFzZU5hbWUoKSkpOworICAgIFN0cmluZyBuZXdPcmlnaW5EaXJlY3Rvcnkg
PSBpZGVudGlmaWVyLmRhdGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVUb1Jvb3QobV9kYXRhYmFzZURp
cmVjdG9yeVBhdGgsICJ2MSIpOworICAgIFN0cmluZyBmaWxlTmFtZUhhc2ggPSBTUUxpdGVGaWxl
U3lzdGVtOjpjb21wdXRlSGFzaEZvckZpbGVOYW1lKGlkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCkp
OworICAgIFN0cmluZyBuZXdEYXRhYmFzZURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChuZXdPcmlnaW5EaXJlY3RvcnksIGZpbGVOYW1lSGFzaCk7CisgICAg
RmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKG5ld0RhdGFiYXNlRGlyZWN0b3J5KTsKKwor
ICAgIGlmIChGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG9sZERhdGFiYXNlRGlyZWN0b3J5KSkgewor
ICAgICAgICBGaWxlU3lzdGVtOjptb3ZlRmlsZShvbGREYXRhYmFzZURpcmVjdG9yeSwgbmV3RGF0
YWJhc2VEaXJlY3RvcnkpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9y
eShvbGRPcmlnaW5EaXJlY3RvcnkpOworICAgIH0KKworICAgIHJldHVybiBuZXdEYXRhYmFzZURp
cmVjdG9yeTsKK30KKwogYm9vbCBJREJTZXJ2ZXI6Omhhc0RhdGFiYXNlQWN0aXZpdGllc09uTWFp
blRocmVhZCgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaAppbmRl
eCBkODgzNjQ5YTVjOGQ1YjU5ZjAyYzJiZGFjZGRlNjc4YTFjYTNjNDJmLi4xM2ZiNzBiZTM3OWFh
YTljMTFmNTlkMjU0Yjk2YzA3Mjk0ZGEwNjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5oCkBAIC0zMCw2ICszMCw3IEBACiAj
aW5jbHVkZSAiU3RvcmFnZVF1b3RhTWFuYWdlci5oIgogI2luY2x1ZGUgIlVuaXF1ZUlEQkRhdGFi
YXNlLmgiCiAjaW5jbHVkZSAiVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmgiCisjaW5jbHVk
ZSAiVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSA8cGFsL0h5c3RlcmVzaXNB
Y3Rpdml0eS5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvQ3Jv
c3NUaHJlYWRUYXNrSGFuZGxlci5oPgpAQCAtNDgsOCArNDksNyBAQCBzdHJ1Y3QgSURCR2V0UmVj
b3JkRGF0YTsKIAogbmFtZXNwYWNlIElEQlNlcnZlciB7CiAKLWNsYXNzIElEQlNlcnZlciB7Ci0g
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitjbGFzcyBJREJTZXJ2ZXIgOiBwdWJsaWMgVW5p
cXVlSURCRGF0YWJhc2VNYW5hZ2VyIHsKIHB1YmxpYzoKICAgICB1c2luZyBTdG9yYWdlUXVvdGFN
YW5hZ2VyU3BhY2VSZXF1ZXN0ZXIgPSBGdW5jdGlvbjxTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNp
c2lvbihjb25zdCBDbGllbnRPcmlnaW4mLCB1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCk+OwogICAg
IFdFQkNPUkVfRVhQT1JUIElEQlNlcnZlcihQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBk
YXRhYmFzZURpcmVjdG9yeVBhdGgsIFN0b3JhZ2VRdW90YU1hbmFnZXJTcGFjZVJlcXVlc3RlciYm
LCBMb2NrJik7CkBAIC04OCwxNSArODgsMTMgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBnZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMoSURCQ29ubmVjdGlvbklkZW50
aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYsIGNvbnN0IENsaWVudE9yaWdpbiYp
OwogCi0KLSAgICB2b2lkIHJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0aW9uKFVuaXF1ZUlEQkRhdGFi
YXNlQ29ubmVjdGlvbiYpOwotICAgIHZvaWQgdW5yZWdpc3RlckRhdGFiYXNlQ29ubmVjdGlvbihV
bmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mKTsKLSAgICB2b2lkIHJlZ2lzdGVyVHJhbnNhY3Rp
b24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYpOwotICAgIHZvaWQgdW5yZWdpc3RlclRy
YW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mKTsKLQotICAgIHN0ZDo6dW5p
cXVlX3B0cjxVbmlxdWVJREJEYXRhYmFzZT4gY2xvc2VBbmRUYWtlVW5pcXVlSURCRGF0YWJhc2Uo
VW5pcXVlSURCRGF0YWJhc2UmKTsKLQotICAgIHN0ZDo6dW5pcXVlX3B0cjxJREJCYWNraW5nU3Rv
cmU+IGNyZWF0ZUJhY2tpbmdTdG9yZShjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImKTsKKyAg
ICAvLyBVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIKKyAgICB2b2lkIHJlZ2lzdGVyQ29ubmVjdGlv
bihVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mKSBmaW5hbDsKKyAgICB2b2lkIHVucmVnaXN0
ZXJDb25uZWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYpIGZpbmFsOworICAgIHZv
aWQgcmVnaXN0ZXJUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJikgZmlu
YWw7CisgICAgdm9pZCB1bnJlZ2lzdGVyVHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFu
c2FjdGlvbiYpIGZpbmFsOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJREJCYWNraW5nU3RvcmU+IGNy
ZWF0ZUJhY2tpbmdTdG9yZShjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImKSBmaW5hbDsKKyAg
ICB2b2lkIHJlcXVlc3RTcGFjZShjb25zdCBDbGllbnRPcmlnaW4mLCB1aW50NjRfdCBzaXplLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKIAogICAgIFdFQkNPUkVfRVhQ
T1JUIEhhc2hTZXQ8U2VjdXJpdHlPcmlnaW5EYXRhPiBnZXRPcmlnaW5zKCkgY29uc3Q7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBjbG9zZUFuZERlbGV0ZURhdGFiYXNlc01vZGlmaWVkU2luY2Uo
V2FsbFRpbWUpOwpAQCAtMTA0LDcgKzEwMiw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsb3NlRGF0
YWJhc2VzRm9yT3JpZ2lucyhjb25zdCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiYsIEZ1bmN0
aW9uPGJvb2woY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgQ2xpZW50T3JpZ2luJik+
JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVuYW1lT3JpZ2luKGNvbnN0IFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYp
OwogCi0gICAgU3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb24gcmVxdWVzdFNwYWNlKGNvbnN0
IENsaWVudE9yaWdpbiYsIHVpbnQ2NF90IHRhc2tTaXplKTsKICAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgdWludDY0X3QgZGlza1VzYWdlKGNvbnN0IFN0cmluZyYgcm9vdERpcmVjdG9yeSwgY29u
c3QgQ2xpZW50T3JpZ2luJik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhhc0RhdGFiYXNl
QWN0aXZpdGllc09uTWFpblRocmVhZCgpIGNvbnN0OwpAQCAtMTE0LDYgKzExMSw3IEBAIHByaXZh
dGU6CiAgICAgVW5pcXVlSURCRGF0YWJhc2UmIGdldE9yQ3JlYXRlVW5pcXVlSURCRGF0YWJhc2Uo
Y29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJik7CiAKICAgICB2b2lkIHVwZ3JhZGVGaWxlc0lm
TmVjZXNzYXJ5KCk7CisgICAgU3RyaW5nIHVwZ3JhZGVkRGF0YWJhc2VEaXJlY3RvcnkoY29uc3Qg
V2ViQ29yZTo6SURCRGF0YWJhc2VJZGVudGlmaWVyJik7CiAgICAgdm9pZCByZW1vdmVEYXRhYmFz
ZXNNb2RpZmllZFNpbmNlRm9yVmVyc2lvbihXYWxsVGltZSwgY29uc3QgU3RyaW5nJik7CiAgICAg
dm9pZCByZW1vdmVEYXRhYmFzZXNXaXRoT3JpZ2luc0ZvclZlcnNpb24oY29uc3QgVmVjdG9yPFNl
Y3VyaXR5T3JpZ2luRGF0YT4mLCBjb25zdCBTdHJpbmcmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFj
a2luZ1N0b3JlLmNwcAppbmRleCA3ZWU0MTQwYThhZjE4MDExYzk2YmNhN2I2MDhkODY1OTE4YWY4
NWVhLi5kNjMzNTAzMDk5MzA1NWI5YjEyYjc4NDU2NTVkYTgzMzcyYjFhNTUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2lu
Z1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
TWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcApAQCAtNDQsOSArNDQsOCBAQCBuYW1lc3BhY2UgSURC
U2VydmVyIHsKIC8vIFRoZSBJbmRleGVkREIgc3BlYyBzdGF0ZXMgdGhlIG1heGltdW0gdmFsdWUg
eW91IGNhbiBnZXQgZnJvbSB0aGUga2V5IGdlbmVyYXRvciBpcyAyXjUzLgogY29uc3RleHByIHVp
bnQ2NF90IG1heEdlbmVyYXRlZEtleVZhbHVlID0gMHgyMDAwMDAwMDAwMDAwMDsKIAotTWVtb3J5
SURCQmFja2luZ1N0b3JlOjpNZW1vcnlJREJCYWNraW5nU3RvcmUoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImIGlkZW50aWZpZXIpCitNZW1vcnlJ
REJCYWNraW5nU3RvcmU6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZShjb25zdCBJREJEYXRhYmFzZUlk
ZW50aWZpZXImIGlkZW50aWZpZXIpCiAgICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKLSAg
ICAsIG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKIHsKIH0KIApAQCAtMTM0LDcgKzEzMyw3IEBAIElE
QkVycm9yIE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURC
UmVzb3VyY2VJZGVudGlmaWVyJiB0CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IENvbnN0cmFp
bnRFcnJvciB9OwogCiAgICAgQVNTRVJUKCFtX29iamVjdFN0b3Jlc0J5SWRlbnRpZmllci5jb250
YWlucyhpbmZvLmlkZW50aWZpZXIoKSkpOwotICAgIGF1dG8gb2JqZWN0U3RvcmUgPSBNZW1vcnlP
YmplY3RTdG9yZTo6Y3JlYXRlKG1fc2Vzc2lvbklELCBpbmZvKTsKKyAgICBhdXRvIG9iamVjdFN0
b3JlID0gTWVtb3J5T2JqZWN0U3RvcmU6OmNyZWF0ZShpbmZvKTsKIAogICAgIG1fZGF0YWJhc2VJ
bmZvLT5hZGRFeGlzdGluZ09iamVjdFN0b3JlKGluZm8pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2lu
Z1N0b3JlLmgKaW5kZXggOTJhYTc2MGQyMDczMzcxOGZiZGI4YzA0NGNmZTY3ZGNhYjE2NTMzNS4u
MDkzMDFlODNmY2E3Yzc1MDllMjg1ODExMGMxMjc4MzUzMzU4ZjNkYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9y
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJ
REJCYWNraW5nU3RvcmUuaApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIklEQlJlc291cmNl
SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkluZGV4S2V5LmgiCiAjaW5jbHVkZSAiTWVtb3J5QmFj
a2luZ1N0b3JlVHJhbnNhY3Rpb24uaCIKLSNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDEsOCArNDAs
OCBAQCBjbGFzcyBNZW1vcnlPYmplY3RTdG9yZTsKIGNsYXNzIE1lbW9yeUlEQkJhY2tpbmdTdG9y
ZSBmaW5hbCA6IHB1YmxpYyBJREJCYWNraW5nU3RvcmUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgotICAgIE1lbW9yeUlEQkJhY2tpbmdTdG9yZShQQUw6OlNlc3Npb25J
RCwgY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJik7Ci0gICAgfk1lbW9yeUlEQkJhY2tpbmdT
dG9yZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IE1lbW9yeUlEQkJhY2tpbmdTdG9y
ZShjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB+TWVt
b3J5SURCQmFja2luZ1N0b3JlKCk7CiAKICAgICBJREJFcnJvciBnZXRPckVzdGFibGlzaERhdGFi
YXNlSW5mbyhJREJEYXRhYmFzZUluZm8mKSBmaW5hbDsKICAgICB1aW50NjRfdCBkYXRhYmFzZVZl
cnNpb24oKSBmaW5hbDsKQEAgLTkyLDcgKzkxLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVucmVn
aXN0ZXJPYmplY3RTdG9yZShNZW1vcnlPYmplY3RTdG9yZSYpOwogCiAgICAgSURCRGF0YWJhc2VJ
ZGVudGlmaWVyIG1faWRlbnRpZmllcjsKLSAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8SURCRGF0YWJhc2VJbmZvPiBtX2RhdGFiYXNlSW5mbzsKIAog
ICAgIEhhc2hNYXA8SURCUmVzb3VyY2VJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8TWVtb3J5
QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24+PiBtX3RyYW5zYWN0aW9uczsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0
U3RvcmUuY3BwCmluZGV4IDlkZGMwZmNmOTkxOTNmMzM0YmRjNWQ0MjYxZWEzOTFkZTRiYWFiN2Eu
LmUwMWVlMDJiNzE1MjM5OWNjNzI2ZmIxOGJjMzQ5MTQ2MDRkZTczZWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9i
amVjdFN0b3JlLmNwcApAQCAtMzgsMTggKzM4LDE3IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSlNDSlNWYWx1ZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0pTVmFsdWVJbmxp
bmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNMb2NrLmg+Ci0jaW5jbHVkZSA8cGFs
L1Nlc3Npb25JRC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSlND
OwogbmFtZXNwYWNlIElEQlNlcnZlciB7CiAKLVJlZjxNZW1vcnlPYmplY3RTdG9yZT4gTWVtb3J5
T2JqZWN0U3RvcmU6OmNyZWF0ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IElEQk9i
amVjdFN0b3JlSW5mbyYgaW5mbykKK1JlZjxNZW1vcnlPYmplY3RTdG9yZT4gTWVtb3J5T2JqZWN0
U3RvcmU6OmNyZWF0ZShjb25zdCBJREJPYmplY3RTdG9yZUluZm8mIGluZm8pCiB7Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgTWVtb3J5T2JqZWN0U3RvcmUoc2Vzc2lvbklELCBpbmZvKSk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVtb3J5T2JqZWN0U3RvcmUoaW5mbykpOwogfQogCi1N
ZW1vcnlPYmplY3RTdG9yZTo6TWVtb3J5T2JqZWN0U3RvcmUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IElEQk9iamVjdFN0b3JlSW5mbyYgaW5mbykKK01lbW9yeU9iamVjdFN0b3JlOjpNZW1vcnlPYmpl
Y3RTdG9yZShjb25zdCBJREJPYmplY3RTdG9yZUluZm8mIGluZm8pCiAgICAgOiBtX2luZm8oaW5m
bykKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9NZW1vcnlPYmplY3RTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmgKaW5kZXggODcxZGViNWU0YWUwNTE0ODJiOTA4
OTY4OTVlYTMxYzI3NmRkMzA4Ni4uZjAzYTNhMWIwYWQ1MzRiOWYzMzljNGZiZDdlNzQwYWRmMjI4
NDcwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L01lbW9yeU9iamVjdFN0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmgKQEAgLTM0LDEwICszNCw2IEBACiAjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCi1uYW1lc3Bh
Y2UgUEFMIHsKLWNsYXNzIFNlc3Npb25JRDsKLX0KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBJREJDdXJzb3JJbmZvOwpAQCAtNjEsNyArNTcsNyBAQCB0eXBlZGVmIEhhc2hNYXA8SURC
S2V5RGF0YSwgVGhyZWFkU2FmZURhdGFCdWZmZXIsIElEQktleURhdGFIYXNoLCBJREJLZXlEYXRh
SGFzaAogCiBjbGFzcyBNZW1vcnlPYmplY3RTdG9yZSA6IHB1YmxpYyBSZWZDb3VudGVkPE1lbW9y
eU9iamVjdFN0b3JlPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxNZW1vcnlPYmplY3RTdG9y
ZT4gY3JlYXRlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mKTsKKyAg
ICBzdGF0aWMgUmVmPE1lbW9yeU9iamVjdFN0b3JlPiBjcmVhdGUoY29uc3QgSURCT2JqZWN0U3Rv
cmVJbmZvJik7CiAKICAgICB+TWVtb3J5T2JqZWN0U3RvcmUoKTsKIApAQCAtMTA4LDcgKzEwNCw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbmFtZUluZGV4KE1lbW9yeUluZGV4JiwgY29uc3QgU3Ry
aW5nJiBuZXdOYW1lKTsKIAogcHJpdmF0ZToKLSAgICBNZW1vcnlPYmplY3RTdG9yZShQQUw6OlNl
c3Npb25JRCwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJik7CisgICAgTWVtb3J5T2JqZWN0U3Rv
cmUoY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJik7CiAKICAgICBJREJLZXlEYXRhU2V0OjppdGVy
YXRvciBsb3dlc3RJdGVyYXRvckluUmFuZ2UoY29uc3QgSURCS2V5UmFuZ2VEYXRhJiwgYm9vbCBy
ZXZlcnNlKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAppbmRleCA3
ODQ2MWYxMzZmNzdiNDhlMDQyNTU2OTlkOGQ5YWM4NDlkOWM0NjVkLi45MjFhYTJiMGI4ODA5YjNh
NGRjZjczMjE4OWRiOTA5YTQ2MGFiMThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3Jl
LmNwcApAQCAtMjM2LDEyICsyMzYsMTAgQEAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBpbmRleEluZm9U
YWJsZVNjaGVtYVRlbXAoKQogICAgIHJldHVybiBUQUJMRV9TQ0hFTUFfUFJFRklYICJfVGVtcF9J
bmRleEluZm8iIElOREVYX0lORk9fVEFCTEVfU0NIRU1BX1NVRkZJWDsKIH0KIAotU1FMaXRlSURC
QmFja2luZ1N0b3JlOjpTUUxpdGVJREJCYWNraW5nU3RvcmUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImIGlkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgZGF0YWJhc2VSb290RGlyZWN0b3J5KQotICAgIDogbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQot
ICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCi0gICAgLCBtX2RhdGFiYXNlUm9vdERpcmVj
dG9yeShkYXRhYmFzZVJvb3REaXJlY3RvcnkpCitTUUxpdGVJREJCYWNraW5nU3RvcmU6OlNRTGl0
ZUlEQkJhY2tpbmdTdG9yZShjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImIGlkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXJlY3RvcnkpCisgICAgOiBtX2lkZW50aWZpZXIoaWRl
bnRpZmllcikKKyAgICAsIG1fZGF0YWJhc2VEaXJlY3RvcnkoZGF0YWJhc2VEaXJlY3RvcnkpCiB7
Ci0gICAgbV9kYXRhYmFzZURpcmVjdG9yeSA9IGZ1bGxEYXRhYmFzZURpcmVjdG9yeVdpdGhVcGdy
YWRlKCk7CiB9CiAKIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6flNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZSgpCkBAIC05MTIsMTkgKzkxMCwyOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8SURCRGF0YWJhc2VJbmZv
PiBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmV4dHJhY3RFeGlzdGluZ0RhdGFiYXNlSQogICAgIHJl
dHVybiBkYXRhYmFzZUluZm87CiB9CiAKLVN0cmluZyBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmZp
bGVuYW1lRm9yRGF0YWJhc2VOYW1lKCkgY29uc3QKK1N0cmluZyBTUUxpdGVJREJCYWNraW5nU3Rv
cmU6OmVuY29kZURhdGFiYXNlTmFtZShjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSkKIHsKLSAg
ICBBU1NFUlQoIW1faWRlbnRpZmllci5kYXRhYmFzZU5hbWUoKS5pc051bGwoKSk7Ci0KLSAgICBp
ZiAobV9pZGVudGlmaWVyLmRhdGFiYXNlTmFtZSgpLmlzRW1wdHkoKSkKKyAgICBBU1NFUlQoIWRh
dGFiYXNlTmFtZS5pc0VtcHR5KCkpOworICAgIGlmIChkYXRhYmFzZU5hbWUuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gIiUwMCI7CiAKLSAgICBTdHJpbmcgZmlsZW5hbWUgPSBGaWxlU3lzdGVt
OjplbmNvZGVGb3JGaWxlTmFtZShtX2lkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCkpOwotICAgIGZp
bGVuYW1lLnJlcGxhY2UoJy4nLCAiJTJFIik7CisgICAgU3RyaW5nIGZpbGVuYW1lID0gRmlsZVN5
c3RlbTo6ZW5jb2RlRm9yRmlsZU5hbWUoZGF0YWJhc2VOYW1lKTsKKyAgICBmaWxlbmFtZS5yZXBs
YWNlV2l0aExpdGVyYWwoJy4nLCAiJTJFIik7CiAKICAgICByZXR1cm4gZmlsZW5hbWU7CiB9CiAK
K1N0cmluZyBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRlY29kZURhdGFiYXNlTmFtZShjb25zdCBT
dHJpbmcmIGVuY29kZWROYW1lKQoreworICAgIGlmIChlbmNvZGVkTmFtZSA9PSAiJTAwIl9zKQor
ICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKworICAgIFN0cmluZyBuYW1lID0gZW5jb2Rl
ZE5hbWU7CisgICAgbmFtZS5yZXBsYWNlKCIlMkUiX3MsICIuIl9zKTsKKworICAgIHJldHVybiBG
aWxlU3lzdGVtOjpkZWNvZGVGcm9tRmlsZW5hbWUobmFtZSk7Cit9CisKIFN0cmluZyBTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OmZ1bGxEYXRhYmFzZVBhdGhGb3JEaXJlY3RvcnkoY29uc3QgU3RyaW5n
JiBmdWxsRGF0YWJhc2VEaXJlY3RvcnkpCiB7CiAgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChmdWxsRGF0YWJhc2VEaXJlY3RvcnksICJJbmRleGVkREIuc3Fs
aXRlMyIpOwpAQCAtOTY1LDIzICs5NzMsNiBAQCBzdGQ6Om9wdGlvbmFsPElEQkRhdGFiYXNlTmFt
ZUFuZFZlcnNpb24+IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGF0YWJhc2VOYW1lQW5kVgogICAg
IHJldHVybiBJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uIHsgZGF0YWJhc2VOYW1lLCAqZGF0YWJh
c2VWZXJzaW9uIH07CiB9CiAKLVN0cmluZyBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmZ1bGxEYXRh
YmFzZURpcmVjdG9yeVdpdGhVcGdyYWRlKCkKLXsKLSAgICBTdHJpbmcgb2xkT3JpZ2luRGlyZWN0
b3J5ID0gbV9pZGVudGlmaWVyLmRhdGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVUb1Jvb3QobV9kYXRh
YmFzZVJvb3REaXJlY3RvcnksICJ2MCIpOwotICAgIFN0cmluZyBvbGREYXRhYmFzZURpcmVjdG9y
eSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChvbGRPcmlnaW5EaXJlY3Rv
cnksIGZpbGVuYW1lRm9yRGF0YWJhc2VOYW1lKCkpOwotICAgIFN0cmluZyBuZXdPcmlnaW5EaXJl
Y3RvcnkgPSBtX2lkZW50aWZpZXIuZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9vdChtX2Rh
dGFiYXNlUm9vdERpcmVjdG9yeSwgInYxIik7Ci0gICAgU3RyaW5nIGZpbGVOYW1lSGFzaCA9IFNR
TGl0ZUZpbGVTeXN0ZW06OmNvbXB1dGVIYXNoRm9yRmlsZU5hbWUobV9pZGVudGlmaWVyLmRhdGFi
YXNlTmFtZSgpKTsKLSAgICBTdHJpbmcgbmV3RGF0YWJhc2VEaXJlY3RvcnkgPSBGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobmV3T3JpZ2luRGlyZWN0b3J5LCBmaWxlTmFtZUhh
c2gpOwotICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhuZXdEYXRhYmFzZURpcmVj
dG9yeSk7Ci0KLSAgICBpZiAoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhvbGREYXRhYmFzZURpcmVj
dG9yeSkpIHsKLSAgICAgICAgRmlsZVN5c3RlbTo6bW92ZUZpbGUob2xkRGF0YWJhc2VEaXJlY3Rv
cnksIG5ld0RhdGFiYXNlRGlyZWN0b3J5KTsKLSAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRW1w
dHlEaXJlY3Rvcnkob2xkT3JpZ2luRGlyZWN0b3J5KTsKLSAgICB9Ci0KLSAgICByZXR1cm4gbmV3
RGF0YWJhc2VEaXJlY3Rvcnk7Ci19Ci0KIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
Z2V0T3JFc3RhYmxpc2hEYXRhYmFzZUluZm8oSURCRGF0YWJhc2VJbmZvJiBpbmZvKQogewogICAg
IExPRyhJbmRleGVkREIsICJTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldE9yRXN0YWJsaXNoRGF0
YWJhc2VJbmZvIC0gZGF0YWJhc2UgJXMiLCBtX2lkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCkudXRm
OCgpLmRhdGEoKSk7CkBAIC05OTEsMTEgKzk4MiwxMSBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNr
aW5nU3RvcmU6OmdldE9yRXN0YWJsaXNoRGF0YWJhc2VJbmZvKElEQkRhdGFiYXNlSW5mbyYgaW5m
bwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyB9OwogICAgIH0KIAotICAgIFN0cmluZyBkYkZp
bGVuYW1lID0gZnVsbERhdGFiYXNlUGF0aCgpOwotCisgICAgU3RyaW5nIGRhdGFiYXNlUGF0aCA9
IGZ1bGxEYXRhYmFzZVBhdGgoKTsKKyAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMo
RmlsZVN5c3RlbTo6cGFyZW50UGF0aChkYXRhYmFzZVBhdGgpKTsKICAgICBtX3NxbGl0ZURCID0g
bWFrZVVuaXF1ZTxTUUxpdGVEYXRhYmFzZT4oKTsKLSAgICBpZiAoIW1fc3FsaXRlREItPm9wZW4o
ZGJGaWxlbmFtZSkpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gb3BlbiBTUUxpdGUg
ZGF0YWJhc2UgYXQgcGF0aCAnJXMnIiwgZGJGaWxlbmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICBp
ZiAoIW1fc3FsaXRlREItPm9wZW4oZGF0YWJhc2VQYXRoKSkgeworICAgICAgICBMT0dfRVJST1Io
IkZhaWxlZCB0byBvcGVuIFNRTGl0ZSBkYXRhYmFzZSBhdCBwYXRoICclcyciLCBkYXRhYmFzZVBh
dGgudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIGNsb3NlU1FMaXRlREIoKTsKICAgICB9CiAKQEAg
LTEwNDQsNyArMTAzNSw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0T3JF
c3RhYmxpc2hEYXRhYmFzZUluZm8oSURCRGF0YWJhc2VJbmZvJiBpbmZvCiAgICAgICAgIGRhdGFi
YXNlSW5mbyA9IGNyZWF0ZUFuZFBvcHVsYXRlSW5pdGlhbERhdGFiYXNlSW5mbygpOwogCiAgICAg
aWYgKCFkYXRhYmFzZUluZm8pIHsKLSAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gZXN0YWJs
aXNoIElEQiBkYXRhYmFzZSBhdCBwYXRoICclcyciLCBkYkZpbGVuYW1lLnV0ZjgoKS5kYXRhKCkp
OworICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBlc3RhYmxpc2ggSURCIGRhdGFiYXNlIGF0
IHBhdGggJyVzJyIsIGRhdGFiYXNlUGF0aC51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgY2xvc2VT
UUxpdGVEQigpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFi
bGUgdG8gZXN0YWJsaXNoIElEQiBkYXRhYmFzZSBmaWxlIl9zIH07CiAgICAgfQpAQCAtMjc5OCw3
ICsyNzg5LDYgQEAgdm9pZCBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRlbGV0ZUJhY2tpbmdTdG9y
ZSgpCiAKICAgICBTUUxpdGVGaWxlU3lzdGVtOjpkZWxldGVEYXRhYmFzZUZpbGUoZGF0YWJhc2VQ
YXRoKTsKICAgICBTUUxpdGVGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURhdGFiYXNlRGlyZWN0b3J5
KG1fZGF0YWJhc2VEaXJlY3RvcnkpOwotICAgIFNRTGl0ZUZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5
RGF0YWJhc2VEaXJlY3RvcnkobV9pZGVudGlmaWVyLmRhdGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVU
b1Jvb3QobV9kYXRhYmFzZVJvb3REaXJlY3RvcnkpKTsKIH0KIAogdm9pZCBTUUxpdGVJREJCYWNr
aW5nU3RvcmU6OnVucmVnaXN0ZXJDdXJzb3IoU1FMaXRlSURCQ3Vyc29yJiBjdXJzb3IpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURC
QmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
U1FMaXRlSURCQmFja2luZ1N0b3JlLmgKaW5kZXggMmVmZTZiMmEzNDE5OTNiYjI2ZmRmOTFjZmY2
ZTdkZWE4ZGJiZWQzNi4uNzMxYTlhNDE5Mzg2NWUzYzVmM2MzNWVkNzU3MWIxMjgyZjc4MDk2MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0
ZUlEQkJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaApAQCAtNTEsOSArNTEsOCBAQCBjbGFzcyBT
UUxpdGVJREJDdXJzb3I7CiBjbGFzcyBTUUxpdGVJREJCYWNraW5nU3RvcmUgZmluYWwgOiBwdWJs
aWMgSURCQmFja2luZ1N0b3JlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKLSAgICBTUUxpdGVJREJCYWNraW5nU3RvcmUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IElEQkRh
dGFiYXNlSWRlbnRpZmllciYsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VSb290RGlyZWN0b3J5KTsK
LSAgICAKLSAgICB+U1FMaXRlSURCQmFja2luZ1N0b3JlKCkgZmluYWw7CisgICAgV0VCQ09SRV9F
WFBPUlQgU1FMaXRlSURCQmFja2luZ1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYs
IGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXJlY3RvcnkpOworICAgIFdFQkNPUkVfRVhQT1JUIH5T
UUxpdGVJREJCYWNraW5nU3RvcmUoKSBmaW5hbDsKIAogICAgIElEQkVycm9yIGdldE9yRXN0YWJs
aXNoRGF0YWJhc2VJbmZvKElEQkRhdGFiYXNlSW5mbyYpIGZpbmFsOwogICAgIHVpbnQ2NF90IGRh
dGFiYXNlVmVyc2lvbigpIGZpbmFsOwpAQCAtOTQsMTggKzkzLDE1IEBAIHB1YmxpYzoKIAogICAg
IElEQkVycm9yIGdldEJsb2JSZWNvcmRzRm9yT2JqZWN0U3RvcmVSZWNvcmQoaW50NjRfdCBvYmpl
Y3RTdG9yZVJlY29yZCwgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBWZWN0b3I8U3RyaW5nPiYg
YmxvYkZpbGVQYXRocyk7CiAKLSAgICBzdGF0aWMgdWludDY0X3QgZGF0YWJhc2VzU2l6ZUZvckRp
cmVjdG9yeShjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSk7Ci0KKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgdWludDY0X3QgZGF0YWJhc2VzU2l6ZUZvckRpcmVjdG9yeShjb25zdCBTdHJpbmcmIGRp
cmVjdG9yeSk7CiAgICAgU3RyaW5nIGRhdGFiYXNlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4g
bV9kYXRhYmFzZURpcmVjdG9yeTsgfTsKLSAgICBzdGF0aWMgU3RyaW5nIGZ1bGxEYXRhYmFzZVBh
dGhGb3JEaXJlY3RvcnkoY29uc3QgU3RyaW5nJik7Ci0gICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbj4gZGF0YWJhc2VOYW1lQW5kVmVyc2lvbkZyb21GaWxl
KGNvbnN0IFN0cmluZyYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcgZnVsbERh
dGFiYXNlUGF0aEZvckRpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgU3RyaW5nIGVuY29kZURhdGFiYXNlTmFtZShjb25zdCBTdHJpbmcmIGRhdGFiYXNl
TmFtZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBkZWNvZGVEYXRhYmFzZU5h
bWUoY29uc3QgU3RyaW5nJiBlbmNvZGVkRGF0YWJhc2VOYW1lKTsKIAotICAgIFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbklEOyB9CisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbj4g
ZGF0YWJhc2VOYW1lQW5kVmVyc2lvbkZyb21GaWxlKGNvbnN0IFN0cmluZyYpOwogCiBwcml2YXRl
OgotICAgIFN0cmluZyBmaWxlbmFtZUZvckRhdGFiYXNlTmFtZSgpIGNvbnN0OwotICAgIFN0cmlu
ZyBmdWxsRGF0YWJhc2VEaXJlY3RvcnlXaXRoVXBncmFkZSgpOwotCiAgICAgSURCRXJyb3IgZW5z
dXJlVmFsaWRSZWNvcmRzVGFibGUoKTsKICAgICBJREJFcnJvciBlbnN1cmVWYWxpZEluZGV4UmVj
b3Jkc1RhYmxlKCk7CiAgICAgSURCRXJyb3IgZW5zdXJlVmFsaWRJbmRleFJlY29yZHNJbmRleCgp
OwpAQCAtMjA2LDcgKzIwMiw2IEBAIHByaXZhdGU6CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U1FM
aXRlU3RhdGVtZW50PiBtX2NhY2hlZFN0YXRlbWVudHNbc3RhdGljX2Nhc3Q8aW50PihTUUw6Oklu
dmFsaWQpXTsKIAotICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOwogICAgIElEQkRhdGFi
YXNlSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPElEQkRhdGFi
YXNlSW5mbz4gbV9kYXRhYmFzZUluZm87CiAgICAgc3RkOjp1bmlxdWVfcHRyPElEQkRhdGFiYXNl
SW5mbz4gbV9vcmlnaW5hbERhdGFiYXNlSW5mb0JlZm9yZVZlcnNpb25DaGFuZ2U7CkBAIC0yMTYs
NyArMjExLDYgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPElEQlJlc291cmNlSWRlbnRpZmllciwg
c3RkOjp1bmlxdWVfcHRyPFNRTGl0ZUlEQlRyYW5zYWN0aW9uPj4gbV90cmFuc2FjdGlvbnM7CiAg
ICAgSGFzaE1hcDxJREJSZXNvdXJjZUlkZW50aWZpZXIsIFNRTGl0ZUlEQkN1cnNvcio+IG1fY3Vy
c29yczsKIAotICAgIFN0cmluZyBtX2RhdGFiYXNlUm9vdERpcmVjdG9yeTsKICAgICBTdHJpbmcg
bV9kYXRhYmFzZURpcmVjdG9yeTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCmluZGV4
IDJiMWVhZGI5ZWE1YzQ2NGQwMjc1ZWQyMjNmNTAwM2I3YmVmMTU3MzMuLjViNTBkMjk4Y2UzZjJl
NGI2NjcyZWUwMmZiZTZmNmNkODJmODZiZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcApA
QCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJTdG9yYWdl
UXVvdGFNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmgi
CisjaW5jbHVkZSAiVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSA8d3RmL1Nj
b3BlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTEzNCw4ICsxMzUsOCBAQCBzdGF0aWMg
aW5saW5lIHVpbnQ2NF90IGVzdGltYXRlU2l6ZShjb25zdCBJREJPYmplY3RTdG9yZUluZm8mIGlu
Zm8pCiAgICAgcmV0dXJuIHNpemU7CiB9CiAKLVVuaXF1ZUlEQkRhdGFiYXNlOjpVbmlxdWVJREJE
YXRhYmFzZShJREJTZXJ2ZXImIHNlcnZlciwgY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJiBp
ZGVudGlmaWVyKQotICAgIDogbV9zZXJ2ZXIoc2VydmVyKQorVW5pcXVlSURCRGF0YWJhc2U6OlVu
aXF1ZUlEQkRhdGFiYXNlKFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlciYgbWFuYWdlciwgY29uc3Qg
SURCRGF0YWJhc2VJZGVudGlmaWVyJiBpZGVudGlmaWVyKQorICAgIDogbV9tYW5hZ2VyKG1hbmFn
ZXIpCiAgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQoIWlzTWFp
blRocmVhZCgpKTsKQEAgLTE2Myw2ICsxNjQsMTEgQEAgY29uc3QgSURCRGF0YWJhc2VJbmZvJiBV
bmlxdWVJREJEYXRhYmFzZTo6aW5mbygpIGNvbnN0CiAgICAgcmV0dXJuICptX2RhdGFiYXNlSW5m
bzsKIH0KIAorVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyKiBVbmlxdWVJREJEYXRhYmFzZTo6bWFu
YWdlcigpCit7CisgICAgcmV0dXJuIG1fbWFuYWdlci5nZXQoKTsKK30KKwogdm9pZCBVbmlxdWVJ
REJEYXRhYmFzZTo6b3BlbkRhdGFiYXNlQ29ubmVjdGlvbihJREJDb25uZWN0aW9uVG9DbGllbnQm
IGNvbm5lY3Rpb24sIGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkKIHsKICAgICBM
T0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6Om9wZW5EYXRhYmFzZUNvbm5lY3Rpb24i
KTsKQEAgLTE4NSwxNyArMTkxLDQ1IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1D
dXJyZW50T3Blbk9wZXJhdGlvbigpCiAgICAgQVNTRVJUKG1fY3VycmVudE9wZW5EQlJlcXVlc3Qp
OwogICAgIEFTU0VSVChtX2N1cnJlbnRPcGVuREJSZXF1ZXN0LT5pc09wZW5SZXF1ZXN0KCkpOwog
CisgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBjcmVhdGUgdGhlIGZpbGUgc28gbm8gbmVlZCB0byBk
byBzcGFjZSBjaGVjay4KKyAgICBpZiAobV9iYWNraW5nU3RvcmUpCisgICAgICAgIHJldHVybiBw
ZXJmb3JtQ3VycmVudE9wZW5PcGVyYXRpb25BZnRlclNwYWNlQ2hlY2sodHJ1ZSk7CisKKyAgICBp
ZiAoIW1fbWFuYWdlcikKKyAgICAgICAgcmV0dXJuIHBlcmZvcm1DdXJyZW50T3Blbk9wZXJhdGlv
bkFmdGVyU3BhY2VDaGVjayhmYWxzZSk7CisKKyAgICBhdXRvIHJlcXVlc3RJZGVudGlmaWVyID0g
bV9jdXJyZW50T3BlbkRCUmVxdWVzdC0+cmVxdWVzdERhdGEoKS5yZXF1ZXN0SWRlbnRpZmllcigp
OworICAgIGlmIChtX29wZW5EQlJlcXVlc3RzRm9yU3BhY2VDaGVjay5jb250YWlucyhyZXF1ZXN0
SWRlbnRpZmllcikpCisgICAgICAgIHJldHVybjsKKworICAgIG1fb3BlbkRCUmVxdWVzdHNGb3JT
cGFjZUNoZWNrLmFkZChyZXF1ZXN0SWRlbnRpZmllcik7CisgICAgbV9tYW5hZ2VyLT5yZXF1ZXN0
U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCBkZWZhdWx0V3JpdGVPcGVyYXRpb25Db3N0LCBb
dGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgcmVxdWVzdElkZW50aWZpZXJdKGJv
b2wgZ3JhbnRlZCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgbV9vcGVuREJSZXF1ZXN0c0ZvclNwYWNlQ2hlY2sucmVtb3Zl
KHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICAgICAgaWYgKG1fY3VycmVudE9wZW5EQlJlcXVlc3Qt
PnJlcXVlc3REYXRhKCkucmVxdWVzdElkZW50aWZpZXIoKSAhPSByZXF1ZXN0SWRlbnRpZmllcikK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBwZXJmb3JtQ3VycmVudE9wZW5PcGVyYXRp
b25BZnRlclNwYWNlQ2hlY2soZ3JhbnRlZCk7CisgICAgfSk7Cit9CisKK3ZvaWQgVW5pcXVlSURC
RGF0YWJhc2U6OnBlcmZvcm1DdXJyZW50T3Blbk9wZXJhdGlvbkFmdGVyU3BhY2VDaGVjayhib29s
IGlzR3JhbnRlZCkKK3sKKyAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6OnBl
cmZvcm1DdXJyZW50T3Blbk9wZXJhdGlvbkFmdGVyU3BhY2VSZXF1ZXN0ICglcCkiLCB0aGlzKTsK
KwogICAgIElEQkVycm9yIGJhY2tpbmdTdG9yZU9wZW5FcnJvcjsKICAgICBpZiAoIW1fYmFja2lu
Z1N0b3JlKSB7Ci0gICAgICAgIC8vIFF1b3RhIGNoZWNrLgotICAgICAgICBhdXRvIGRlY2lzaW9u
ID0gbV9zZXJ2ZXIucmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwgZGVmYXVsdFdy
aXRlT3BlcmF0aW9uQ29zdCk7Ci0gICAgICAgIGlmIChkZWNpc2lvbiA9PSBTdG9yYWdlUXVvdGFN
YW5hZ2VyOjpEZWNpc2lvbjo6RGVueSkKKyAgICAgICAgaWYgKCFtX21hbmFnZXIpCisgICAgICAg
ICAgICBiYWNraW5nU3RvcmVPcGVuRXJyb3IgPSBJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9y
IH07CisgICAgICAgIGVsc2UgaWYgKCFpc0dyYW50ZWQpCiAgICAgICAgICAgICBiYWNraW5nU3Rv
cmVPcGVuRXJyb3IgPSBJREJFcnJvciB7IFF1b3RhRXhjZWVkZWRFcnJvciwgcXVvdGFFcnJvck1l
c3NhZ2VOYW1lKCJPcGVuQmFja2luZ1N0b3JlIikgfTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAg
ICAgICBtX2JhY2tpbmdTdG9yZSA9IG1fc2VydmVyLmNyZWF0ZUJhY2tpbmdTdG9yZShtX2lkZW50
aWZpZXIpOworICAgICAgICAgICAgbV9iYWNraW5nU3RvcmUgPSBtX21hbmFnZXItPmNyZWF0ZUJh
Y2tpbmdTdG9yZShtX2lkZW50aWZpZXIpOwogICAgICAgICAgICAgSURCRGF0YWJhc2VJbmZvIGRh
dGFiYXNlSW5mbzsKICAgICAgICAgICAgIGJhY2tpbmdTdG9yZU9wZW5FcnJvciA9IG1fYmFja2lu
Z1N0b3JlLT5nZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbyhkYXRhYmFzZUluZm8pOwotICAgICAg
ICAgICAgaWYgKGJhY2tpbmdTdG9yZU9wZW5FcnJvci5pc051bGwoKSkKKyAgICAgICAgICAgIGlm
ICghYmFja2luZ1N0b3JlT3BlbkVycm9yKQogICAgICAgICAgICAgICAgIG1fZGF0YWJhc2VJbmZv
ID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KGRhdGFiYXNlSW5mbyk7CiAgICAgICAgICAg
ICBlbHNlIHsKICAgICAgICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBnZXQgZGF0YWJh
c2UgaW5mbyAnJXMnIiwgYmFja2luZ1N0b3JlT3BlbkVycm9yLm1lc3NhZ2UoKS51dGY4KCkuZGF0
YSgpKTsKQEAgLTIwNCw3ICsyMzgsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3Jt
Q3VycmVudE9wZW5PcGVyYXRpb24oKQogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKCFiYWNr
aW5nU3RvcmVPcGVuRXJyb3IuaXNOdWxsKCkpIHsKKyAgICBpZiAoYmFja2luZ1N0b3JlT3BlbkVy
cm9yKSB7CiAgICAgICAgIGF1dG8gcmVzdWx0ID0gSURCUmVzdWx0RGF0YTo6ZXJyb3IobV9jdXJy
ZW50T3BlbkRCUmVxdWVzdC0+cmVxdWVzdERhdGEoKS5yZXF1ZXN0SWRlbnRpZmllcigpLCBiYWNr
aW5nU3RvcmVPcGVuRXJyb3IpOwogICAgICAgICBtX2N1cnJlbnRPcGVuREJSZXF1ZXN0LT5jb25u
ZWN0aW9uKCkuZGlkT3BlbkRhdGFiYXNlKHJlc3VsdCk7CiAgICAgICAgIG1fY3VycmVudE9wZW5E
QlJlcXVlc3QgPSBudWxscHRyOwpAQCAtMjk0LDcgKzMyOCw3IEBAIHZvaWQgVW5pcXVlSURCRGF0
YWJhc2U6OmRlbGV0ZUJhY2tpbmdTdG9yZSgpCiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7
CiAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVCYWNraW5nU3Rv
cmUiKTsKICAgICAKLSAgICBhdXRvIGJhY2tpbmdTdG9yZSA9IG1fYmFja2luZ1N0b3JlID8gc3Rk
OjpleGNoYW5nZShtX2JhY2tpbmdTdG9yZSwgbnVsbHB0cikgOiBtX3NlcnZlci5jcmVhdGVCYWNr
aW5nU3RvcmUobV9pZGVudGlmaWVyKTsKKyAgICBhdXRvIGJhY2tpbmdTdG9yZSA9IG1fYmFja2lu
Z1N0b3JlID8gc3RkOjpleGNoYW5nZShtX2JhY2tpbmdTdG9yZSwgbnVsbHB0cikgOiBtX21hbmFn
ZXItPmNyZWF0ZUJhY2tpbmdTdG9yZShtX2lkZW50aWZpZXIpOwogICAgIHVpbnQ2NF90IGRlbGV0
ZWRWZXJzaW9uID0gYmFja2luZ1N0b3JlLT5kYXRhYmFzZVZlcnNpb24oKTsKICAgICBiYWNraW5n
U3RvcmUtPmRlbGV0ZUJhY2tpbmdTdG9yZSgpOwogICAgIGRpZERlbGV0ZUJhY2tpbmdTdG9yZShk
ZWxldGVkVmVyc2lvbik7CkBAIC01NDIsMjAgKzU3NiwzMiBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFi
YXNlOjphZGRPcGVuRGF0YWJhc2VDb25uZWN0aW9uKFJlZjxVbmlxdWVJREJEYXRhYmFzZUNvbm5l
Y3RpbwogICAgIG1fb3BlbkRhdGFiYXNlQ29ubmVjdGlvbnMuYWRkKGFkb3B0UmVmKGNvbm5lY3Rp
b24ubGVha1JlZigpKSk7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVj
dFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBjb25zdCBJ
REJPYmplY3RTdG9yZUluZm8mIGluZm8sIEVycm9yQ2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIFVu
aXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZShVbmlxdWVJREJEYXRhYmFzZVRyYW5z
YWN0aW9uJiB0cmFuc2FjdGlvbiwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiBpbmZvLCBFcnJv
ckNhbGxiYWNrIGNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0IHNwYWNlQ2hlY2tSZXN1bHQpCiB7
CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1
ZUlEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZSIpOwogCi0gICAgQVNTRVJUKG1fYmFja2lu
Z1N0b3JlKTsKKyAgICBpZiAoc3BhY2VDaGVja1Jlc3VsdCA9PSBTcGFjZUNoZWNrUmVzdWx0OjpV
bmtub3duKSB7CisgICAgICAgIGlmICghbV9tYW5hZ2VyKQorICAgICAgICAgICAgcmV0dXJuIGNh
bGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7CiAKLSAgICAvLyBRdW90YSBj
aGVjay4KLSAgICBhdXRvIHRhc2tTaXplID0gZGVmYXVsdFdyaXRlT3BlcmF0aW9uQ29zdCArIGVz
dGltYXRlU2l6ZShpbmZvKTsKLSAgICBpZiAobV9zZXJ2ZXIucmVxdWVzdFNwYWNlKG1faWRlbnRp
Zmllci5vcmlnaW4oKSwgdGFza1NpemUpID09IFN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9u
OjpEZW55KSB7CisgICAgICAgIGF1dG8gdGFza1NpemUgPSBkZWZhdWx0V3JpdGVPcGVyYXRpb25D
b3N0ICsgZXN0aW1hdGVTaXplKGluZm8pOworICAgICAgICBtX21hbmFnZXItPnJlcXVlc3RTcGFj
ZShtX2lkZW50aWZpZXIub3JpZ2luKCksIHRhc2tTaXplLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFr
UHRyIHsgKnRoaXMgfSwgd2Vha1RyYW5zYWN0aW9uID0gV2Vha1B0ciB7IHRyYW5zYWN0aW9uIH0s
IGluZm8sIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgZ3JhbnRlZCkgbXV0YWJs
ZSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICF3ZWFrVHJhbnNhY3Rpb24pCisgICAg
ICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3Is
ICJEYXRhYmFzZSBvciB0cmFuc2FjdGlvbiBpcyBjbG9zZWQiIH0pOworICAgICAgICAgICAgY3Jl
YXRlT2JqZWN0U3RvcmUoKndlYWtUcmFuc2FjdGlvbiwgaW5mbywgV1RGTW92ZShjYWxsYmFjayks
IGdyYW50ZWQgPyBTcGFjZUNoZWNrUmVzdWx0OjpQYXNzIDogU3BhY2VDaGVja1Jlc3VsdDo6RmFp
bCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKHNwYWNl
Q2hlY2tSZXN1bHQgIT0gU3BhY2VDaGVja1Jlc3VsdDo6UGFzcykgewogICAgICAgICBjYWxsYmFj
ayhJREJFcnJvciB7IFF1b3RhRXhjZWVkZWRFcnJvciwgcXVvdGFFcnJvck1lc3NhZ2VOYW1lKCJD
cmVhdGVPYmplY3RTdG9yZSIpIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYg
KCFtX2JhY2tpbmdTdG9yZSkKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52
YWxpZFN0YXRlRXJyb3IsICJCYWNraW5nIHN0b3JlIGhhcyBjbG9zZWQiIH0pOworCiAgICAgYXV0
byBlcnJvciA9IG1fYmFja2luZ1N0b3JlLT5jcmVhdGVPYmplY3RTdG9yZSh0cmFuc2FjdGlvbi5p
bmZvKCkuaWRlbnRpZmllcigpLCBpbmZvKTsKICAgICBpZiAoZXJyb3IuaXNOdWxsKCkpCiAgICAg
ICAgIG1fZGF0YWJhc2VJbmZvLT5hZGRFeGlzdGluZ09iamVjdFN0b3JlKGluZm8pOwpAQCAtNTYz
LDE4ICs2MDksMzQgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUo
VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3QKICAgICBjYWxsYmFjayhlcnJv
cik7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZU9iamVjdFN0b3JlKFVuaXF1
ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBjb25zdCBTdHJpbmcmIG9iamVj
dFN0b3JlTmFtZSwgRXJyb3JDYWxsYmFjayBjYWxsYmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJh
c2U6OmRlbGV0ZU9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5z
YWN0aW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSwgRXJyb3JDYWxsYmFjayBjYWxs
YmFjaywgU3BhY2VDaGVja1Jlc3VsdCBzcGFjZUNoZWNrUmVzdWx0KQogewogICAgIEFTU0VSVCgh
aXNNYWluVGhyZWFkKCkpOwogICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6
ZGVsZXRlT2JqZWN0U3RvcmUiKTsKIAorICAgIGlmIChzcGFjZUNoZWNrUmVzdWx0ID09IFNwYWNl
Q2hlY2tSZXN1bHQ6OlVua25vd24pIHsKKyAgICAgICAgaWYgKCFtX21hbmFnZXIpCisgICAgICAg
ICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciB9KTsKKwor
ICAgICAgICBtX21hbmFnZXItPnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIDAs
IFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCB3ZWFrVHJhbnNhY3Rpb24gPSBX
ZWFrUHRyIHsgdHJhbnNhY3Rpb24gfSwgb2JqZWN0U3RvcmVOYW1lLCBjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spXShib29sIGdyYW50ZWQpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCF3
ZWFrVGhpcyB8fCAhd2Vha1RyYW5zYWN0aW9uKQorICAgICAgICAgICAgICAgIHJldHVybiBjYWxs
YmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiRGF0YWJhc2Ugb3IgdHJhbnNhY3Rp
b24gaXMgY2xvc2VkIiB9KTsKKworICAgICAgICAgICAgZGVsZXRlT2JqZWN0U3RvcmUoKndlYWtU
cmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVOYW1lLCBXVEZNb3ZlKGNhbGxiYWNrKSwgZ3JhbnRlZCA/
IFNwYWNlQ2hlY2tSZXN1bHQ6OlBhc3MgOiBTcGFjZUNoZWNrUmVzdWx0OjpGYWlsKTsKKyAgICAg
ICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQoc3BhY2VDaGVja1Jl
c3VsdCA9PSBTcGFjZUNoZWNrUmVzdWx0OjpQYXNzKTsKICAgICBhdXRvKiBpbmZvID0gbV9kYXRh
YmFzZUluZm8tPmluZm9Gb3JFeGlzdGluZ09iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSk7CiAg
ICAgaWYgKCFpbmZvKSB7CiAgICAgICAgIGNhbGxiYWNrKElEQkVycm9yIHsgVW5rbm93bkVycm9y
LCAiQXR0ZW1wdCB0byBkZWxldGUgbm9uLWV4aXN0YW50IG9iamVjdCBzdG9yZSJfcyB9KTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CisgICAg
aWYgKCFtX2JhY2tpbmdTdG9yZSkKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsg
SW52YWxpZFN0YXRlRXJyb3IsICJCYWNraW5nIHN0b3JlIGlzIGNsb3NlZCIgfSk7CisKICAgICBh
dXRvIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPmRlbGV0ZU9iamVjdFN0b3JlKHRyYW5zYWN0aW9u
LmluZm8oKS5pZGVudGlmaWVyKCksIGluZm8tPmlkZW50aWZpZXIoKSk7CiAgICAgaWYgKGVycm9y
LmlzTnVsbCgpKQogICAgICAgICBtX2RhdGFiYXNlSW5mby0+ZGVsZXRlT2JqZWN0U3RvcmUoaW5m
by0+aWRlbnRpZmllcigpKTsKQEAgLTU4MiwxNCArNjQ0LDI2IEBAIHZvaWQgVW5pcXVlSURCRGF0
YWJhc2U6OmRlbGV0ZU9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRy
YW5zYWN0CiAgICAgY2FsbGJhY2soZXJyb3IpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNl
OjpyZW5hbWVPYmplY3RTdG9yZShVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2Fj
dGlvbiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05h
bWUsIEVycm9yQ2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpyZW5h
bWVPYmplY3RTdG9yZShVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwg
dWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUsIEVy
cm9yQ2FsbGJhY2sgY2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgc3BhY2VDaGVja1Jlc3VsdCkK
IHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAiVW5p
cXVlSURCRGF0YWJhc2U6OnJlbmFtZU9iamVjdFN0b3JlIik7CiAKLSAgICAvLyBRdW90YSBjaGVj
ay4KLSAgICBhdXRvIHRhc2tTaXplID0gZGVmYXVsdFdyaXRlT3BlcmF0aW9uQ29zdCArIG5ld05h
bWUuc2l6ZUluQnl0ZXMoKTsKLSAgICBpZiAobV9zZXJ2ZXIucmVxdWVzdFNwYWNlKG1faWRlbnRp
Zmllci5vcmlnaW4oKSwgdGFza1NpemUpID09IFN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9u
OjpEZW55KSB7CisgICAgaWYgKHNwYWNlQ2hlY2tSZXN1bHQgPT0gU3BhY2VDaGVja1Jlc3VsdDo6
VW5rbm93bikgeworICAgICAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAgICAgICAgIHJldHVybiBj
YWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yIH0pOworCisgICAgICAgIGF1dG8g
dGFza1NpemUgPSBkZWZhdWx0V3JpdGVPcGVyYXRpb25Db3N0ICsgbmV3TmFtZS5zaXplSW5CeXRl
cygpOworICAgICAgICBtX21hbmFnZXItPnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2lu
KCksIHRhc2tTaXplLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgd2Vha1Ry
YW5zYWN0aW9uID0gV2Vha1B0ciB7IHRyYW5zYWN0aW9uIH0sIG9iamVjdFN0b3JlSWRlbnRpZmll
ciwgbmV3TmFtZSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBncmFudGVkKSBt
dXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMgfHwgIXdlYWtUcmFuc2FjdGlvbikK
KyAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVF
cnJvciwgIkRhdGFiYXNlIG9yIHRyYW5zYWN0aW9uIGlzIGNsb3NlZCIgfSk7CisKKyAgICAgICAg
ICAgIHJlbmFtZU9iamVjdFN0b3JlKCp3ZWFrVHJhbnNhY3Rpb24sIG9iamVjdFN0b3JlSWRlbnRp
ZmllciwgbmV3TmFtZSwgV1RGTW92ZShjYWxsYmFjayksIGdyYW50ZWQgPyBTcGFjZUNoZWNrUmVz
dWx0OjpQYXNzIDogU3BhY2VDaGVja1Jlc3VsdDo6RmFpbCk7CisgICAgICAgIH0pOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgaWYgKHNwYWNlQ2hlY2tSZXN1bHQgIT0gU3BhY2VDaGVj
a1Jlc3VsdDo6UGFzcykgewogICAgICAgICBjYWxsYmFjayhJREJFcnJvcihRdW90YUV4Y2VlZGVk
RXJyb3IsIHF1b3RhRXJyb3JNZXNzYWdlTmFtZSgiUmVuYW1lT2JqZWN0U3RvcmUiKSkpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQpAQCAtNjAwLDcgKzY3NCw5IEBAIHZvaWQgVW5pcXVlSURCRGF0
YWJhc2U6OnJlbmFtZU9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRy
YW5zYWN0CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBBU1NFUlQobV9iYWNraW5nU3Rv
cmUpOworICAgIGlmICghbV9iYWNraW5nU3RvcmUpCisgICAgICAgIHJldHVybiBjYWxsYmFjayhJ
REJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiQmFja2luZyBzdG9yZSBpcyBjbG9zZWQiIH0p
OworCiAgICAgYXV0byBlcnJvciA9IG1fYmFja2luZ1N0b3JlLT5yZW5hbWVPYmplY3RTdG9yZSh0
cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIG5l
d05hbWUpOwogICAgIGlmIChlcnJvci5pc051bGwoKSkKICAgICAgICAgbV9kYXRhYmFzZUluZm8t
PnJlbmFtZU9iamVjdFN0b3JlKG9iamVjdFN0b3JlSWRlbnRpZmllciwgbmV3TmFtZSk7CkBAIC02
MDgsMzAgKzY4NCw1OSBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpyZW5hbWVPYmplY3RTdG9y
ZShVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdAogICAgIGNhbGxiYWNrKGVy
cm9yKTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y2xlYXJPYmplY3RTdG9yZShVbmlx
dWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgdWludDY0X3Qgb2JqZWN0U3Rv
cmVJZGVudGlmaWVyLCBFcnJvckNhbGxiYWNrIGNhbGxiYWNrKQordm9pZCBVbmlxdWVJREJEYXRh
YmFzZTo6Y2xlYXJPYmplY3RTdG9yZShVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFu
c2FjdGlvbiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBFcnJvckNhbGxiYWNrIGNh
bGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0IHNwYWNlQ2hlY2tSZXN1bHQpCiB7CiAgICAgQVNTRVJU
KCFpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNl
OjpjbGVhck9iamVjdFN0b3JlIik7CiAKLSAgICBBU1NFUlQobV9iYWNraW5nU3RvcmUpOwotICAg
IGF1dG8gZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+Y2xlYXJPYmplY3RTdG9yZSh0cmFuc2FjdGlv
bi5pbmZvKCkuaWRlbnRpZmllcigpLCBvYmplY3RTdG9yZUlkZW50aWZpZXIpOworICAgIGlmIChz
cGFjZUNoZWNrUmVzdWx0ID09IFNwYWNlQ2hlY2tSZXN1bHQ6OlVua25vd24pIHsKKyAgICAgICAg
aWYgKCFtX21hbmFnZXIpCisgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJ
bnZhbGlkU3RhdGVFcnJvciB9KTsKKworICAgICAgICBtX21hbmFnZXItPnJlcXVlc3RTcGFjZSht
X2lkZW50aWZpZXIub3JpZ2luKCksIDAsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhp
cyB9LCB3ZWFrVHJhbnNhY3Rpb24gPSBXZWFrUHRyIHsgdHJhbnNhY3Rpb24gfSwgb2JqZWN0U3Rv
cmVJZGVudGlmaWVyLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIGdyYW50ZWQp
IG11dGFibGUgeworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhd2Vha1RyYW5zYWN0aW9u
KQorICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0
ZUVycm9yLCAiRGF0YWJhc2Ugb3IgdHJhbnNhY3Rpb24gaXMgY2xvc2VkIiB9KTsKKworICAgICAg
ICAgICAgY2xlYXJPYmplY3RTdG9yZSgqd2Vha1RyYW5zYWN0aW9uLCBvYmplY3RTdG9yZUlkZW50
aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spLCBncmFudGVkID8gU3BhY2VDaGVja1Jlc3VsdDo6UGFz
cyA6IFNwYWNlQ2hlY2tSZXN1bHQ6OkZhaWwpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIEFTU0VSVChzcGFjZUNoZWNrUmVzdWx0ID09IFNwYWNlQ2hlY2tSZXN1
bHQ6OlBhc3MpOworICAgIGlmICghbV9iYWNraW5nU3RvcmUpCisgICAgICAgIHJldHVybiBjYWxs
YmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiQmFja2luZyBzdG9yZSBpcyBjbG9z
ZWQiIH0pOwogCisgICAgYXV0byBlcnJvciA9IG1fYmFja2luZ1N0b3JlLT5jbGVhck9iamVjdFN0
b3JlKHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCksIG9iamVjdFN0b3JlSWRlbnRpZmll
cik7CiAgICAgY2FsbGJhY2soZXJyb3IpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpj
cmVhdGVJbmRleChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgY29u
c3QgSURCSW5kZXhJbmZvJiBpbmZvLCBFcnJvckNhbGxiYWNrIGNhbGxiYWNrKQordm9pZCBVbmlx
dWVJREJEYXRhYmFzZTo6Y3JlYXRlSW5kZXgoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYg
dHJhbnNhY3Rpb24sIGNvbnN0IElEQkluZGV4SW5mbyYgaW5mbywgRXJyb3JDYWxsYmFjayBjYWxs
YmFjaywgU3BhY2VDaGVja1Jlc3VsdCBzcGFjZUNoZWNrUmVzdWx0KQogewogICAgIEFTU0VSVCgh
aXNNYWluVGhyZWFkKCkpOwogICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6
Y3JlYXRlSW5kZXgiKTsKIAotICAgIC8vIFF1b3RhIGNoZWNrLgotICAgIGF1dG8gdGFza1NpemUg
PSBkZWZhdWx0V3JpdGVPcGVyYXRpb25Db3N0ICsgZXN0aW1hdGVTaXplKGluZm8pOwotICAgIGlm
IChtX3NlcnZlci5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCB0YXNrU2l6ZSkg
PT0gU3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb246OkRlbnkpIHsKKyAgICBpZiAoc3BhY2VD
aGVja1Jlc3VsdCA9PSBTcGFjZUNoZWNrUmVzdWx0OjpVbmtub3duKSB7CisgICAgICAgIGlmICgh
bV9tYW5hZ2VyKQorICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxp
ZFN0YXRlRXJyb3IgfSk7CisKKyAgICAgICAgYXV0byB0YXNrU2l6ZSA9IGRlZmF1bHRXcml0ZU9w
ZXJhdGlvbkNvc3QgKyBlc3RpbWF0ZVNpemUoaW5mbyk7CisgICAgICAgIG1fbWFuYWdlci0+cmVx
dWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwgdGFza1NpemUsIFt0aGlzLCB3ZWFrVGhp
cyA9IFdlYWtQdHIgeyAqdGhpcyB9LCB3ZWFrVHJhbnNhY3Rpb24gPSBXZWFrUHRyIHsgdHJhbnNh
Y3Rpb24gfSwgaW5mbywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBncmFudGVk
KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMgfHwgIXdlYWtUcmFuc2FjdGlv
bikKKyAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3Rh
dGVFcnJvciwgIkRhdGFiYXNlIG9yIHRyYW5zYWN0aW9uIGlzIGNsb3NlZCIgfSk7CisKKyAgICAg
ICAgICAgIGNyZWF0ZUluZGV4KCp3ZWFrVHJhbnNhY3Rpb24sIGluZm8sIFdURk1vdmUoY2FsbGJh
Y2spLCBncmFudGVkID8gU3BhY2VDaGVja1Jlc3VsdDo6UGFzcyA6IFNwYWNlQ2hlY2tSZXN1bHQ6
OkZhaWwpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChz
cGFjZUNoZWNrUmVzdWx0ICE9IFNwYWNlQ2hlY2tSZXN1bHQ6OlBhc3MpIHsKICAgICAgICAgY2Fs
bGJhY2soSURCRXJyb3IgeyBRdW90YUV4Y2VlZGVkRXJyb3IsIHF1b3RhRXJyb3JNZXNzYWdlTmFt
ZSgiQ3JlYXRlSW5kZXgiKSB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VS
VChtX2JhY2tpbmdTdG9yZSk7CisgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkKKyAgICAgICAgcmV0
dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJCYWNraW5nIHN0b3Jl
IGlzIGNsb3NlZCIgfSk7CisKICAgICBhdXRvIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPmNyZWF0
ZUluZGV4KHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCksIGluZm8pOwogICAgIGlmIChl
cnJvci5pc051bGwoKSkgewogICAgICAgICBBU1NFUlQobV9kYXRhYmFzZUluZm8pOwpAQCAtNjQ0
LDExICs3NDksMjggQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlSW5kZXgoVW5pcXVl
SURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIGMKICAgICBjYWxsYmFjayhlcnJv
cik7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZUluZGV4KFVuaXF1ZUlEQkRh
dGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lLCBFcnJvckNhbGxiYWNrIGNhbGxiYWNrKQor
dm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlSW5kZXgoVW5pcXVlSURCRGF0YWJhc2VUcmFu
c2FjdGlvbiYgdHJhbnNhY3Rpb24sIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBpbmRleE5hbWUsIEVycm9yQ2FsbGJhY2sgY2FsbGJhY2ssIFNwYWNlQ2hlY2tS
ZXN1bHQgc3BhY2VDaGVja1Jlc3VsdCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsK
ICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZUluZGV4Iik7CiAK
KyAgICBpZiAoc3BhY2VDaGVja1Jlc3VsdCA9PSBTcGFjZUNoZWNrUmVzdWx0OjpVbmtub3duKSB7
CisgICAgICAgIGlmICghbV9tYW5hZ2VyKQorICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElE
QkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7CisKKyAgICAgICAgbV9tYW5hZ2VyLT5yZXF1
ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCAwLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFr
UHRyIHsgKnRoaXMgfSwgd2Vha1RyYW5zYWN0aW9uID0gV2Vha1B0ciB7IHRyYW5zYWN0aW9uIH0s
IG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhOYW1lLCBjYWxsYmFjayA9IFdURk1vdmUoY2Fs
bGJhY2spXShib29sIGdyYW50ZWQpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCF3ZWFrVGhp
cyB8fCAhd2Vha1RyYW5zYWN0aW9uKQorICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJ
REJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiRGF0YWJhc2Ugb3IgdHJhbnNhY3Rpb24gaXMg
Y2xvc2VkIiB9KTsKKworICAgICAgICAgICAgZGVsZXRlSW5kZXgoKndlYWtUcmFuc2FjdGlvbiwg
b2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleE5hbWUsIFdURk1vdmUoY2FsbGJhY2spLCBncmFu
dGVkID8gU3BhY2VDaGVja1Jlc3VsdDo6UGFzcyA6IFNwYWNlQ2hlY2tSZXN1bHQ6OkZhaWwpOwor
ICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChzcGFjZUNo
ZWNrUmVzdWx0ID09IFNwYWNlQ2hlY2tSZXN1bHQ6OlBhc3MpOworICAgIGlmICghbV9iYWNraW5n
U3RvcmUpCisgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVy
cm9yLCAiQmFja2luZyBzdG9yZSBpcyBjbG9zZWQiIH0pOworCiAgICAgYXV0byogb2JqZWN0U3Rv
cmVJbmZvID0gbV9kYXRhYmFzZUluZm8tPmluZm9Gb3JFeGlzdGluZ09iamVjdFN0b3JlKG9iamVj
dFN0b3JlSWRlbnRpZmllcik7CiAgICAgaWYgKCFvYmplY3RTdG9yZUluZm8pIHsKICAgICAgICAg
Y2FsbGJhY2soSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIGRlbGV0ZSBpbmRl
eCBmcm9tIG5vbi1leGlzdGFudCBvYmplY3Qgc3RvcmUiX3MgfSk7CkBAIC02NjAsOSArNzgyLDgg
QEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlSW5kZXgoVW5pcXVlSURCRGF0YWJhc2VU
cmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIHUKICAgICAgICAgY2FsbGJhY2soSURCRXJyb3IgeyBV
bmtub3duRXJyb3IsICJBdHRlbXB0IHRvIGRlbGV0ZSBub24tZXhpc3RhbnQgaW5kZXgiX3MgfSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byBpbmRleElkZW50aWZpZXIgPSBpbmRl
eEluZm8tPmlkZW50aWZpZXIoKTsKIAotICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CisgICAg
YXV0byBpbmRleElkZW50aWZpZXIgPSBpbmRleEluZm8tPmlkZW50aWZpZXIoKTsKICAgICBhdXRv
IGVycm9yID0gbV9iYWNraW5nU3RvcmUtPmRlbGV0ZUluZGV4KHRyYW5zYWN0aW9uLmluZm8oKS5p
ZGVudGlmaWVyKCksIG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhJZGVudGlmaWVyKTsKICAg
ICBpZiAoZXJyb3IuaXNOdWxsKCkpCiAgICAgICAgIG9iamVjdFN0b3JlSW5mby0+ZGVsZXRlSW5k
ZXgoaW5kZXhJZGVudGlmaWVyKTsKQEAgLTY3MCwxOCArNzkxLDMzIEBAIHZvaWQgVW5pcXVlSURC
RGF0YWJhc2U6OmRlbGV0ZUluZGV4KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5z
YWN0aW9uLCB1CiAgICAgY2FsbGJhY2soZXJyb3IpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFi
YXNlOjpyZW5hbWVJbmRleChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlv
biwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRleElkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSwgRXJyb3JDYWxsYmFjayBjYWxsYmFjaykKK3ZvaWQg
VW5pcXVlSURCRGF0YWJhc2U6OnJlbmFtZUluZGV4KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rp
b24mIHRyYW5zYWN0aW9uLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90
IGluZGV4SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lLCBFcnJvckNhbGxiYWNrIGNh
bGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0IHNwYWNlQ2hlY2tSZXN1bHQpCiB7CiAgICAgQVNTRVJU
KCFpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNl
OjpyZW5hbWVJbmRleCIpOwogCi0gICAgLy8gUXVvdGEgY2hlY2suCi0gICAgYXV0byB0YXNrU2l6
ZSA9IGRlZmF1bHRXcml0ZU9wZXJhdGlvbkNvc3QgKyBuZXdOYW1lLnNpemVJbkJ5dGVzKCk7Ci0g
ICAgaWYgKG1fc2VydmVyLnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIHRhc2tT
aXplKSA9PSBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbjo6RGVueSkgeworICAgIGlmIChz
cGFjZUNoZWNrUmVzdWx0ID09IFNwYWNlQ2hlY2tSZXN1bHQ6OlVua25vd24pIHsKKyAgICAgICAg
aWYgKCFtX21hbmFnZXIpCisgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJ
bnZhbGlkU3RhdGVFcnJvciB9KTsKKworICAgICAgICBhdXRvIHRhc2tTaXplID0gZGVmYXVsdFdy
aXRlT3BlcmF0aW9uQ29zdCArIG5ld05hbWUuc2l6ZUluQnl0ZXMoKTsKKyAgICAgICAgbV9tYW5h
Z2VyLT5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCB0YXNrU2l6ZSwgW3RoaXMs
IHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHdlYWtUcmFuc2FjdGlvbiA9IFdlYWtQdHIg
eyB0cmFuc2FjdGlvbiB9LCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4SWRlbnRpZmllciwg
bmV3TmFtZSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBncmFudGVkKSBtdXRh
YmxlIHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMgfHwgIXdlYWtUcmFuc2FjdGlvbikKKyAg
ICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJv
ciwgIkRhdGFiYXNlIG9yIHRyYW5zYWN0aW9uIGlzIGNsb3NlZCIgfSk7CisKKyAgICAgICAgICAg
IHJlbmFtZUluZGV4KCp3ZWFrVHJhbnNhY3Rpb24sIG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5k
ZXhJZGVudGlmaWVyLCBuZXdOYW1lLCBXVEZNb3ZlKGNhbGxiYWNrKSwgZ3JhbnRlZCA/IFNwYWNl
Q2hlY2tSZXN1bHQ6OlBhc3MgOiBTcGFjZUNoZWNrUmVzdWx0OjpGYWlsKTsKKyAgICAgICAgfSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoc3BhY2VDaGVja1Jlc3VsdCAhPSBT
cGFjZUNoZWNrUmVzdWx0OjpQYXNzKSB7CiAgICAgICAgIGNhbGxiYWNrKElEQkVycm9yIHsgUXVv
dGFFeGNlZWRlZEVycm9yLCBxdW90YUVycm9yTWVzc2FnZU5hbWUoIlJlbmFtZUluZGV4IikgfSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBpZiAoIW1fYmFja2luZ1N0b3JlKQorICAg
ICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkJhY2tp
bmcgc3RvcmUgaXMgY2xvc2VkIiB9KTsKKwogICAgIGF1dG8qIG9iamVjdFN0b3JlSW5mbyA9IG1f
ZGF0YWJhc2VJbmZvLT5pbmZvRm9yRXhpc3RpbmdPYmplY3RTdG9yZShvYmplY3RTdG9yZUlkZW50
aWZpZXIpOwogICAgIGlmICghb2JqZWN0U3RvcmVJbmZvKSB7CiAgICAgICAgIGNhbGxiYWNrKElE
QkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byByZW5hbWUgaW5kZXggaW4gbm9uLWV4
aXN0YW50IG9iamVjdCBzdG9yZSJfcyB9KTsKQEAgLTY5NCw3ICs4MzAsNiBAQCB2b2lkIFVuaXF1
ZUlEQkRhdGFiYXNlOjpyZW5hbWVJbmRleChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0
cmFuc2FjdGlvbiwgdQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgQVNTRVJUKG1fYmFj
a2luZ1N0b3JlKTsKICAgICBhdXRvIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPnJlbmFtZUluZGV4
KHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCksIG9iamVjdFN0b3JlSWRlbnRpZmllciwg
aW5kZXhJZGVudGlmaWVyLCBuZXdOYW1lKTsKICAgICBpZiAoZXJyb3IuaXNOdWxsKCkpCiAgICAg
ICAgIGluZGV4SW5mby0+cmVuYW1lKG5ld05hbWUpOwpAQCAtNzA5LDE3ICs4NDQsMTkgQEAgdm9p
ZCBVbmlxdWVJREJEYXRhYmFzZTo6cHV0T3JBZGQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVl
c3REYXRhLCBjb25zdCBJREJLZXkKIAogICAgIEFTU0VSVChtX2RhdGFiYXNlSW5mbyk7CiAKLSAg
ICBJREJLZXlEYXRhIHVzZWRLZXk7Ci0gICAgSURCRXJyb3IgZXJyb3I7CisgICAgaWYgKCFtX2Jh
Y2tpbmdTdG9yZSkKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0
YXRlRXJyb3IsICJCYWNraW5nIHN0b3JlIGlzIGNsb3NlZCIgfSwga2V5RGF0YSk7CiAKLSAgICBB
U1NFUlQobV9iYWNraW5nU3RvcmUpOwogICAgIGF1dG8gb2JqZWN0U3RvcmVJZGVudGlmaWVyID0g
cmVxdWVzdERhdGEub2JqZWN0U3RvcmVJZGVudGlmaWVyKCk7CiAgICAgYXV0byogb2JqZWN0U3Rv
cmVJbmZvID0gbV9iYWNraW5nU3RvcmUtPmluZm9Gb3JPYmplY3RTdG9yZShvYmplY3RTdG9yZUlk
ZW50aWZpZXIpOwotICAgIGlmICghb2JqZWN0U3RvcmVJbmZvKSB7Ci0gICAgICAgIGNhbGxiYWNr
KElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJPYmplY3Qgc3RvcmUgY2Fubm90IGJlIGZv
dW5kIGluIHRoZSBiYWNraW5nIHN0b3JlIl9zIH0sIHVzZWRLZXkpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQorICAgIGlmICghb2JqZWN0U3RvcmVJbmZvKQorICAgICAgICByZXR1cm4gY2FsbGJh
Y2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIk9iamVjdCBzdG9yZSBjYW5ub3QgYmUg
Zm91bmQgaW4gdGhlIGJhY2tpbmcgc3RvcmUiX3MgfSwga2V5RGF0YSk7CisKKyAgICBpZiAoIW1f
bWFuYWdlcikKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRl
RXJyb3IgfSwga2V5RGF0YSk7CiAKKyAgICBJREJLZXlEYXRhIHVzZWRLZXk7CisgICAgSURCRXJy
b3IgZXJyb3I7CiAgICAgYm9vbCB1c2VkS2V5SXNHZW5lcmF0ZWQgPSBmYWxzZTsKICAgICB1aW50
NjRfdCBrZXlOdW1iZXI7CiAgICAgYXV0byB0cmFuc2FjdGlvbklkZW50aWZpZXIgPSByZXF1ZXN0
RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKTsKQEAgLTczMCw3NiArODY3LDEwNSBAQCB2b2lk
IFVuaXF1ZUlEQkRhdGFiYXNlOjpwdXRPckFkZChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVz
dERhdGEsIGNvbnN0IElEQktleQogCiAgICAgaWYgKG9iamVjdFN0b3JlSW5mby0+YXV0b0luY3Jl
bWVudCgpICYmICFrZXlEYXRhLmlzVmFsaWQoKSkgewogICAgICAgICBlcnJvciA9IG1fYmFja2lu
Z1N0b3JlLT5nZW5lcmF0ZUtleU51bWJlcih0cmFuc2FjdGlvbklkZW50aWZpZXIsIG9iamVjdFN0
b3JlSWRlbnRpZmllciwga2V5TnVtYmVyKTsKLSAgICAgICAgaWYgKCFlcnJvci5pc051bGwoKSkg
ewotICAgICAgICAgICAgY2FsbGJhY2soZXJyb3IsIHVzZWRLZXkpOwotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9CisgICAgICAgIGlmICghZXJyb3IuaXNOdWxsKCkpCisgICAgICAgICAg
ICByZXR1cm4gY2FsbGJhY2soZXJyb3IsIHVzZWRLZXkpOworCiAgICAgICAgIHVzZWRLZXkuc2V0
TnVtYmVyVmFsdWUoa2V5TnVtYmVyKTsKICAgICAgICAgdXNlZEtleUlzR2VuZXJhdGVkID0gdHJ1
ZTsKICAgICB9IGVsc2UKICAgICAgICAgdXNlZEtleSA9IGtleURhdGE7CiAKLSAgICAvLyBHZW5l
cmF0ZSBpbmRleCBrZXlzIHVwIGZyb250IGZvciBtb3JlIGFjY3VyYXRlIHF1b3RhIGNoZWNrLgot
ICAgIEluZGV4SURUb0luZGV4S2V5TWFwIGluZGV4S2V5czsKLSAgICBjYWxsT25JREJTZXJpYWxp
emF0aW9uVGhyZWFkQW5kV2FpdChbb2JqZWN0U3RvcmVJbmZvID0gb2JqZWN0U3RvcmVJbmZvLT5p
c29sYXRlZENvcHkoKSwga2V5ID0gdXNlZEtleS5pc29sYXRlZENvcHkoKSwgdmFsdWUgPSB2YWx1
ZS5pc29sYXRlZENvcHkoKSwgJmluZGV4S2V5c10oYXV0byYgZ2xvYmFsT2JqZWN0KSB7Ci0gICAg
ICAgIGluZGV4S2V5cyA9IGdlbmVyYXRlSW5kZXhLZXlNYXBGb3JWYWx1ZShnbG9iYWxPYmplY3Qs
IG9iamVjdFN0b3JlSW5mbywga2V5LCB2YWx1ZSk7Ci0gICAgfSk7Ci0KICAgICBpZiAob3Zlcndy
aXRlTW9kZSA9PSBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZTo6Tm9PdmVyd3Jp
dGUpIHsKICAgICAgICAgYm9vbCBrZXlFeGlzdHM7CiAgICAgICAgIGVycm9yID0gbV9iYWNraW5n
U3RvcmUtPmtleUV4aXN0c0luT2JqZWN0U3RvcmUodHJhbnNhY3Rpb25JZGVudGlmaWVyLCBvYmpl
Y3RTdG9yZUlkZW50aWZpZXIsIHVzZWRLZXksIGtleUV4aXN0cyk7Ci0gICAgICAgIGlmIChlcnJv
ci5pc051bGwoKSAmJiBrZXlFeGlzdHMpCisgICAgICAgIGlmICghZXJyb3IgJiYga2V5RXhpc3Rz
KQogICAgICAgICAgICAgZXJyb3IgPSBJREJFcnJvciB7IENvbnN0cmFpbnRFcnJvciwgIktleSBh
bHJlYWR5IGV4aXN0cyBpbiB0aGUgb2JqZWN0IHN0b3JlIl9zIH07CiAKLSAgICAgICAgaWYgKCFl
cnJvci5pc051bGwoKSkgewotICAgICAgICAgICAgY2FsbGJhY2soZXJyb3IsIHVzZWRLZXkpOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgICAgIGlmICghIWVycm9yKQorICAg
ICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGVycm9yLCB1c2VkS2V5KTsKICAgICB9CiAKLSAgICAv
LyBRdW90YSBjaGVjay4KKyAgICAvLyBHZW5lcmF0ZSBpbmRleCBrZXlzIHVwIGZyb250IGZvciBt
b3JlIGFjY3VyYXRlIHF1b3RhIGNoZWNrLgorICAgIEluZGV4SURUb0luZGV4S2V5TWFwIGluZGV4
S2V5czsKKyAgICBjYWxsT25JREJTZXJpYWxpemF0aW9uVGhyZWFkQW5kV2FpdChbb2JqZWN0U3Rv
cmVJbmZvID0gb2JqZWN0U3RvcmVJbmZvLT5pc29sYXRlZENvcHkoKSwga2V5ID0gdXNlZEtleS5p
c29sYXRlZENvcHkoKSwgdmFsdWUgPSB2YWx1ZS5pc29sYXRlZENvcHkoKSwgJmluZGV4S2V5c10o
YXV0byYgZ2xvYmFsT2JqZWN0KSB7CisgICAgICAgIGluZGV4S2V5cyA9IGdlbmVyYXRlSW5kZXhL
ZXlNYXBGb3JWYWx1ZShnbG9iYWxPYmplY3QsIG9iamVjdFN0b3JlSW5mbywga2V5LCB2YWx1ZSk7
CisgICAgfSk7CisKKyAgICBnZW5lcmF0ZWRLZXlSZXNldHRlci5yZWxlYXNlKCk7CiAgICAgYXV0
byBrZXlTaXplID0gZXN0aW1hdGVTaXplKHVzZWRLZXkpOwogICAgIGF1dG8gdmFsdWVTaXplID0g
ZXN0aW1hdGVTaXplKHZhbHVlKTsKICAgICBhdXRvIGluZGV4U2l6ZSA9IGVzdGltYXRlU2l6ZSgq
b2JqZWN0U3RvcmVJbmZvLCBpbmRleEtleXMsIGtleVNpemUpOwogICAgIGF1dG8gdGFza1NpemUg
PSBkZWZhdWx0V3JpdGVPcGVyYXRpb25Db3N0ICsga2V5U2l6ZSArIHZhbHVlU2l6ZSArIGluZGV4
U2l6ZTsKIAogICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6cHV0T3JBZGQg
cXVvdGEgY2hlY2sgd2l0aCB0YXNrIHNpemU6ICUiIFBSSXU2NCAiIGtleSBzaXplOiAlIiBQUkl1
NjQgIiB2YWx1ZSBzaXplOiAlIiBQUkl1NjQgIiBpbmRleCBzaXplOiAlIiBQUkl1NjQsIHRhc2tT
aXplLCBrZXlTaXplLCB2YWx1ZVNpemUsIGluZGV4U2l6ZSk7CisgICAgbV9tYW5hZ2VyLT5yZXF1
ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCB0YXNrU2l6ZSwgW3RoaXMsIHdlYWtUaGlz
ID0gV2Vha1B0ciB7ICp0aGlzIH0sIHJlcXVlc3REYXRhLCB1c2VkS2V5LCB2YWx1ZSwgb3Zlcndy
aXRlTW9kZSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgdXNlZEtleUlzR2VuZXJhdGVk
LCBpbmRleEtleXMsIG9iamVjdFN0b3JlSW5mbyA9ICpvYmplY3RTdG9yZUluZm9dKGJvb2wgZ3Jh
bnRlZCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1
cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkRhdGFiYXNlIGlzIGNs
b3NlZCIgfSwgdXNlZEtleSk7CiAKLSAgICBpZiAobV9zZXJ2ZXIucmVxdWVzdFNwYWNlKG1faWRl
bnRpZmllci5vcmlnaW4oKSwgdGFza1NpemUpID09IFN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lz
aW9uOjpEZW55KSB7Ci0gICAgICAgIGNhbGxiYWNrKElEQkVycm9yIHsgUXVvdGFFeGNlZWRlZEVy
cm9yLCBxdW90YUVycm9yTWVzc2FnZU5hbWUoIlB1dE9yQWRkIikgfSwgdXNlZEtleSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9CisgICAgICAgIHB1dE9yQWRkQWZ0ZXJTcGFjZUNoZWNrKHJlcXVl
c3REYXRhLCB1c2VkS2V5LCB2YWx1ZSwgb3ZlcndyaXRlTW9kZSwgV1RGTW92ZShjYWxsYmFjayks
IHVzZWRLZXlJc0dlbmVyYXRlZCwgaW5kZXhLZXlzLCBvYmplY3RTdG9yZUluZm8sIGdyYW50ZWQg
PyBTcGFjZUNoZWNrUmVzdWx0OjpQYXNzIDogU3BhY2VDaGVja1Jlc3VsdDo6RmFpbCk7CisgICAg
fSk7Cit9CisKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnB1dE9yQWRkQWZ0ZXJTcGFjZUNoZWNr
KGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5RGF0YSYga2V5
RGF0YSwgY29uc3QgSURCVmFsdWUmIHZhbHVlLCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3Zlcndy
aXRlTW9kZSBvdmVyd3JpdGVNb2RlLCBLZXlEYXRhQ2FsbGJhY2sgY2FsbGJhY2ssIGJvb2wgaXNL
ZXlHZW5lcmF0ZWQsIGNvbnN0IEluZGV4SURUb0luZGV4S2V5TWFwJiBpbmRleEtleXMsIGNvbnN0
IElEQk9iamVjdFN0b3JlSW5mbyYgb2JqZWN0U3RvcmVJbmZvLCBTcGFjZUNoZWNrUmVzdWx0IHNw
YWNlQ2hlY2tSZXN1bHQpCit7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAgQVNT
RVJUKG1fZGF0YWJhc2VJbmZvKTsKKworICAgIGlmICghbV9iYWNraW5nU3RvcmUpCisgICAgICAg
IHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiQmFja2luZyBz
dG9yZSBpcyBjbG9zZWQiIH0sIGtleURhdGEpOworCisgICAgdWludDY0X3Qga2V5TnVtYmVyID0g
aXNLZXlHZW5lcmF0ZWQgPyBrZXlEYXRhLm51bWJlcigpIDogMDsKKyAgICBhdXRvIG9iamVjdFN0
b3JlSWRlbnRpZmllciA9IG9iamVjdFN0b3JlSW5mby5pZGVudGlmaWVyKCk7CisgICAgYXV0byB0
cmFuc2FjdGlvbklkZW50aWZpZXIgPSByZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIo
KTsKKyAgICBhdXRvIGdlbmVyYXRlZEtleVJlc2V0dGVyID0gbWFrZVNjb3BlRXhpdChbdGhpcywg
dHJhbnNhY3Rpb25JZGVudGlmaWVyLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsICZrZXlOdW1iZXIs
ICZpc0tleUdlbmVyYXRlZF0oKSB7CisgICAgICAgIGlmIChpc0tleUdlbmVyYXRlZCkKKyAgICAg
ICAgICAgIG1fYmFja2luZ1N0b3JlLT5yZXZlcnRHZW5lcmF0ZWRLZXlOdW1iZXIodHJhbnNhY3Rp
b25JZGVudGlmaWVyLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGtleU51bWJlcik7CisgICAgfSk7
CiAKKyAgICBpZiAoc3BhY2VDaGVja1Jlc3VsdCAhPSBTcGFjZUNoZWNrUmVzdWx0OjpQYXNzKQor
ICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBRdW90YUV4Y2VlZGVkRXJyb3IsIHF1
b3RhRXJyb3JNZXNzYWdlTmFtZSgiUHV0T3JBZGQiKSB9LCBrZXlEYXRhKTsKICAgICAvLyBJZiBh
IHJlY29yZCBhbHJlYWR5IGV4aXN0cyBpbiBzdG9yZSwgdGhlbiByZW1vdmUgdGhlIHJlY29yZCBm
cm9tIHN0b3JlIHVzaW5nIHRoZSBzdGVwcyBmb3IgZGVsZXRpbmcgcmVjb3JkcyBmcm9tIGFuIG9i
amVjdCBzdG9yZS4KLSAgICAvLyBUaGlzIGlzIGltcG9ydGFudCBiZWNhdXNlIGZvcm1hbGx5IGRl
bGV0aW5nIGl0IGZyb20gZnJvbSB0aGUgb2JqZWN0IHN0b3JlIGFsc28gcmVtb3ZlcyBpdCBmcm9t
IHRoZSBhcHByb3ByaWF0ZSBpbmRleGVzLgotICAgIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPmRl
bGV0ZVJhbmdlKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1
c2VkS2V5KTsKLSAgICBpZiAoIWVycm9yLmlzTnVsbCgpKSB7Ci0gICAgICAgIGNhbGxiYWNrKGVy
cm9yLCB1c2VkS2V5KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICAvLyBUaGlzIGlzIGlt
cG9ydGFudCBiZWNhdXNlIGZvcm1hbGx5IGRlbGV0aW5nIGl0IGZyb20gdGhlIG9iamVjdCBzdG9y
ZSBhbHNvIHJlbW92ZXMgaXQgZnJvbSB0aGUgYXBwcm9wcmlhdGUgaW5kZXhlcy4KKyAgICBJREJF
cnJvciBlcnJvciA9IG1fYmFja2luZ1N0b3JlLT5kZWxldGVSYW5nZSh0cmFuc2FjdGlvbklkZW50
aWZpZXIsIG9iamVjdFN0b3JlSWRlbnRpZmllciwga2V5RGF0YSk7CisgICAgaWYgKCFlcnJvci5p
c051bGwoKSkKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGVycm9yLCBrZXlEYXRhKTsKIAotICAg
IGVycm9yID0gbV9iYWNraW5nU3RvcmUtPmFkZFJlY29yZCh0cmFuc2FjdGlvbklkZW50aWZpZXIs
ICpvYmplY3RTdG9yZUluZm8sIHVzZWRLZXksIGluZGV4S2V5cywgdmFsdWUpOwotICAgIGlmICgh
ZXJyb3IuaXNOdWxsKCkpIHsKLSAgICAgICAgY2FsbGJhY2soZXJyb3IsIHVzZWRLZXkpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQorICAgIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPmFkZFJlY29y
ZCh0cmFuc2FjdGlvbklkZW50aWZpZXIsIG9iamVjdFN0b3JlSW5mbywga2V5RGF0YSwgaW5kZXhL
ZXlzLCB2YWx1ZSk7CisgICAgaWYgKCFlcnJvci5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIGNh
bGxiYWNrKGVycm9yLCBrZXlEYXRhKTsKIAotICAgIGlmIChvdmVyd3JpdGVNb2RlICE9IEluZGV4
ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlOjpPdmVyd3JpdGVGb3JDdXJzb3IgJiYgb2Jq
ZWN0U3RvcmVJbmZvLT5hdXRvSW5jcmVtZW50KCkgJiYga2V5RGF0YS50eXBlKCkgPT0gSW5kZXhl
ZERCOjpLZXlUeXBlOjpOdW1iZXIpCisgICAgaWYgKG92ZXJ3cml0ZU1vZGUgIT0gSW5kZXhlZERC
OjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGU6Ok92ZXJ3cml0ZUZvckN1cnNvciAmJiBvYmplY3RT
dG9yZUluZm8uYXV0b0luY3JlbWVudCgpICYmIGtleURhdGEudHlwZSgpID09IEluZGV4ZWREQjo6
S2V5VHlwZTo6TnVtYmVyKQogICAgICAgICBlcnJvciA9IG1fYmFja2luZ1N0b3JlLT5tYXliZVVw
ZGF0ZUtleUdlbmVyYXRvck51bWJlcih0cmFuc2FjdGlvbklkZW50aWZpZXIsIG9iamVjdFN0b3Jl
SWRlbnRpZmllciwga2V5RGF0YS5udW1iZXIoKSk7CiAKICAgICBnZW5lcmF0ZWRLZXlSZXNldHRl
ci5yZWxlYXNlKCk7Ci0gICAgY2FsbGJhY2soZXJyb3IsIHVzZWRLZXkpOworICAgIGNhbGxiYWNr
KGVycm9yLCBrZXlEYXRhKTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Z2V0UmVjb3Jk
KGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCR2V0UmVjb3JkRGF0
YSYgZ2V0UmVjb3JkRGF0YSwgR2V0UmVzdWx0Q2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIFVuaXF1
ZUlEQkRhdGFiYXNlOjpnZXRSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRh
LCBjb25zdCBJREJHZXRSZWNvcmREYXRhJiBnZXRSZWNvcmREYXRhLCBHZXRSZXN1bHRDYWxsYmFj
ayBjYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCBzcGFjZUNoZWNrUmVzdWx0KQogewogICAgIEFT
U0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRh
YmFzZTo6Z2V0UmVjb3JkIik7CiAKKyAgICBpZiAoc3BhY2VDaGVja1Jlc3VsdCA9PSBTcGFjZUNo
ZWNrUmVzdWx0OjpVbmtub3duKSB7CisgICAgICAgIGlmICghbV9tYW5hZ2VyKQorICAgICAgICAg
ICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IgfSwgSURCR2V0
UmVzdWx0IHsgfSk7CisKKyAgICAgICAgbV9tYW5hZ2VyLT5yZXF1ZXN0U3BhY2UobV9pZGVudGlm
aWVyLm9yaWdpbigpLCAwLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgcmVx
dWVzdERhdGEsIGdldFJlY29yZERhdGEsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJv
b2wgZ3JhbnRlZCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAg
ICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAi
RGF0YWJhc2UgaXMgY2xvc2VkIiB9LCBJREJHZXRSZXN1bHQgeyB9KTsKKworICAgICAgICAgICAg
Z2V0UmVjb3JkKHJlcXVlc3REYXRhLCBnZXRSZWNvcmREYXRhLCBXVEZNb3ZlKGNhbGxiYWNrKSwg
Z3JhbnRlZCA/IFNwYWNlQ2hlY2tSZXN1bHQ6OlBhc3MgOiBTcGFjZUNoZWNrUmVzdWx0OjpGYWls
KTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQoc3Bh
Y2VDaGVja1Jlc3VsdCA9PSBTcGFjZUNoZWNrUmVzdWx0OjpQYXNzKTsKKyAgICBpZiAoIW1fYmFj
a2luZ1N0b3JlKQorICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3Rh
dGVFcnJvciwgIkJhY2tpbmcgc3RvcmUgaXMgY2xvc2VkIiB9LCBJREJHZXRSZXN1bHQgeyB9KTsK
KwogICAgIElEQkdldFJlc3VsdCByZXN1bHQ7CiAgICAgSURCRXJyb3IgZXJyb3I7CiAKLSAgICBB
U1NFUlQobV9iYWNraW5nU3RvcmUpOwogICAgIGlmICh1aW50NjRfdCBpbmRleElkZW50aWZpZXIg
PSByZXF1ZXN0RGF0YS5pbmRleElkZW50aWZpZXIoKSkKICAgICAgICAgZXJyb3IgPSBtX2JhY2tp
bmdTdG9yZS0+Z2V0SW5kZXhSZWNvcmQocmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVy
KCksIHJlcXVlc3REYXRhLm9iamVjdFN0b3JlSWRlbnRpZmllcigpLCBpbmRleElkZW50aWZpZXIs
IHJlcXVlc3REYXRhLmluZGV4UmVjb3JkVHlwZSgpLCBnZXRSZWNvcmREYXRhLmtleVJhbmdlRGF0
YSwgcmVzdWx0KTsKICAgICBlbHNlCkBAIC04MDgsNDcgKzk3NCwxMTAgQEAgdm9pZCBVbmlxdWVJ
REJEYXRhYmFzZTo6Z2V0UmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwg
Y29uc3QgSURCR2UKICAgICBjYWxsYmFjayhlcnJvciwgcmVzdWx0KTsKIH0KIAotdm9pZCBVbmlx
dWVJREJEYXRhYmFzZTo6Z2V0QWxsUmVjb3Jkcyhjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVz
dERhdGEsIGNvbnN0IElEQkdldEFsbFJlY29yZHNEYXRhJiBnZXRBbGxSZWNvcmRzRGF0YSwgR2V0
QWxsUmVzdWx0c0NhbGxiYWNrIGNhbGxiYWNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Z2V0
QWxsUmVjb3Jkcyhjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkdl
dEFsbFJlY29yZHNEYXRhJiBnZXRBbGxSZWNvcmRzRGF0YSwgR2V0QWxsUmVzdWx0c0NhbGxiYWNr
IGNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0IHNwYWNlQ2hlY2tSZXN1bHQpCiB7CiAgICAgQVNT
RVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFi
YXNlOjpnZXRBbGxSZWNvcmRzIik7CiAKLSAgICBBU1NFUlQobV9iYWNraW5nU3RvcmUpOworICAg
IGlmIChzcGFjZUNoZWNrUmVzdWx0ID09IFNwYWNlQ2hlY2tSZXN1bHQ6OlVua25vd24pIHsKKyAg
ICAgICAgaWYgKCFtX21hbmFnZXIpCisgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJy
b3IgeyBJbnZhbGlkU3RhdGVFcnJvciB9LCBJREJHZXRBbGxSZXN1bHQgeyB9KTsKKworICAgICAg
ICBtX21hbmFnZXItPnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIDAsIFt0aGlz
LCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCByZXF1ZXN0RGF0YSwgZ2V0QWxsUmVjb3Jk
c0RhdGEsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgZ3JhbnRlZCkgbXV0YWJs
ZSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHJldHVybiBj
YWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiRGF0YWJhc2UgaXMgY2xvc2Vk
IiB9LCBJREJHZXRBbGxSZXN1bHQgeyB9KTsKKworICAgICAgICAgICAgZ2V0QWxsUmVjb3Jkcyhy
ZXF1ZXN0RGF0YSwgZ2V0QWxsUmVjb3Jkc0RhdGEsIFdURk1vdmUoY2FsbGJhY2spLCBncmFudGVk
ID8gU3BhY2VDaGVja1Jlc3VsdDo6UGFzcyA6IFNwYWNlQ2hlY2tSZXN1bHQ6OkZhaWwpOworICAg
ICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChzcGFjZUNoZWNr
UmVzdWx0ID09IFNwYWNlQ2hlY2tSZXN1bHQ6OlBhc3MpOworICAgIGlmICghbV9iYWNraW5nU3Rv
cmUpCisgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9y
LCAiQmFja2luZyBzdG9yZSBpcyBjbG9zZWQiIH0sIElEQkdldEFsbFJlc3VsdCB7IH0pOworCiAg
ICAgSURCR2V0QWxsUmVzdWx0IHJlc3VsdDsKICAgICBhdXRvIGVycm9yID0gbV9iYWNraW5nU3Rv
cmUtPmdldEFsbFJlY29yZHMocmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCksIGdl
dEFsbFJlY29yZHNEYXRhLCByZXN1bHQpOwogCiAgICAgY2FsbGJhY2soZXJyb3IsIHJlc3VsdCk7
CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmdldENvdW50KGNvbnN0IElEQlJlcXVlc3RE
YXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiByYW5nZSwgQ291bnRDYWxs
YmFjayBjYWxsYmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmdldENvdW50KGNvbnN0IElE
QlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiByYW5nZSwg
Q291bnRDYWxsYmFjayBjYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCBzcGFjZUNoZWNrUmVzdWx0
KQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIExPRyhJbmRleGVkREIsICJV
bmlxdWVJREJEYXRhYmFzZTo6Z2V0Q291bnQiKTsKIAotICAgIEFTU0VSVChtX2JhY2tpbmdTdG9y
ZSk7CisgICAgaWYgKHNwYWNlQ2hlY2tSZXN1bHQgPT0gU3BhY2VDaGVja1Jlc3VsdDo6VW5rbm93
bikgeworICAgICAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAgICAgICAgIHJldHVybiBjYWxsYmFj
ayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yIH0sIDApOworCisgICAgICAgIG1fbWFuYWdl
ci0+cmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwgMCwgW3RoaXMsIHdlYWtUaGlz
ID0gV2Vha1B0ciB7ICp0aGlzIH0sIHJlcXVlc3REYXRhLCByYW5nZSwgY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKV0oYm9vbCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICgh
d2Vha1RoaXMpCisgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52
YWxpZFN0YXRlRXJyb3IsICJEYXRhYmFzZSBpcyBjbG9zZWQiIH0sIDApOworCisgICAgICAgICAg
ICBnZXRDb3VudChyZXF1ZXN0RGF0YSwgcmFuZ2UsIFdURk1vdmUoY2FsbGJhY2spLCBncmFudGVk
ID8gU3BhY2VDaGVja1Jlc3VsdDo6UGFzcyA6IFNwYWNlQ2hlY2tSZXN1bHQ6OkZhaWwpOworICAg
ICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChzcGFjZUNoZWNr
UmVzdWx0ID09IFNwYWNlQ2hlY2tSZXN1bHQ6OlBhc3MpOworICAgIGlmICghbV9iYWNraW5nU3Rv
cmUpCisgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9y
LCAiQmFja2luZyBzdG9yZSBpcyBjbG9zZWQiIH0sIDApOworCiAgICAgdWludDY0X3QgY291bnQg
PSAwOwogICAgIGF1dG8gZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+Z2V0Q291bnQocmVxdWVzdERh
dGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCksIHJlcXVlc3REYXRhLm9iamVjdFN0b3JlSWRlbnRp
ZmllcigpLCByZXF1ZXN0RGF0YS5pbmRleElkZW50aWZpZXIoKSwgcmFuZ2UsIGNvdW50KTsKIAog
ICAgIGNhbGxiYWNrKGVycm9yLCBjb3VudCk7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6
OmRlbGV0ZVJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElE
QktleVJhbmdlRGF0YSYga2V5UmFuZ2VEYXRhLCBFcnJvckNhbGxiYWNrIGNhbGxiYWNrKQordm9p
ZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlUmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiBy
ZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5nZURhdGEsIEVycm9yQ2Fs
bGJhY2sgY2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgc3BhY2VDaGVja1Jlc3VsdCkKIHsKICAg
ICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURC
RGF0YWJhc2U6OmRlbGV0ZVJlY29yZCIpOwogCi0gICAgQVNTRVJUKG1fYmFja2luZ1N0b3JlKTsK
KyAgICBpZiAoc3BhY2VDaGVja1Jlc3VsdCA9PSBTcGFjZUNoZWNrUmVzdWx0OjpVbmtub3duKSB7
CisgICAgICAgIGlmICghbV9tYW5hZ2VyKQorICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElE
QkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7CisKKyAgICAgICAgbV9tYW5hZ2VyLT5yZXF1
ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCAwLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFr
UHRyIHsgKnRoaXMgfSwgcmVxdWVzdERhdGEsIGtleVJhbmdlRGF0YSwgY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKV0oYm9vbCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICgh
d2Vha1RoaXMpCisgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52
YWxpZFN0YXRlRXJyb3IsICJEYXRhYmFzZSBpcyBjbG9zZWQiIH0pOworCisgICAgICAgICAgICBk
ZWxldGVSZWNvcmQocmVxdWVzdERhdGEsIGtleVJhbmdlRGF0YSwgV1RGTW92ZShjYWxsYmFjayks
IGdyYW50ZWQgPyBTcGFjZUNoZWNrUmVzdWx0OjpQYXNzIDogU3BhY2VDaGVja1Jlc3VsdDo6RmFp
bCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKHNw
YWNlQ2hlY2tSZXN1bHQgPT0gU3BhY2VDaGVja1Jlc3VsdDo6UGFzcyk7CisgICAgaWYgKCFtX2Jh
Y2tpbmdTdG9yZSkKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0
YXRlRXJyb3IsICJCYWNraW5nIHN0b3JlIGlzIGNsb3NlZCIgfSk7CisKICAgICBhdXRvIGVycm9y
ID0gbV9iYWNraW5nU3RvcmUtPmRlbGV0ZVJhbmdlKHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRl
bnRpZmllcigpLCByZXF1ZXN0RGF0YS5vYmplY3RTdG9yZUlkZW50aWZpZXIoKSwga2V5UmFuZ2VE
YXRhKTsKIAogICAgIGNhbGxiYWNrKGVycm9yKTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFz
ZTo6b3BlbkN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElE
QkN1cnNvckluZm8mIGluZm8sIEdldFJlc3VsdENhbGxiYWNrIGNhbGxiYWNrKQordm9pZCBVbmlx
dWVJREJEYXRhYmFzZTo6b3BlbkN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERh
dGEsIGNvbnN0IElEQkN1cnNvckluZm8mIGluZm8sIEdldFJlc3VsdENhbGxiYWNrIGNhbGxiYWNr
LCBTcGFjZUNoZWNrUmVzdWx0IHNwYWNlQ2hlY2tSZXN1bHQpCiB7CiAgICAgQVNTRVJUKCFpc01h
aW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVu
Q3Vyc29yIik7CiAKLSAgICBBU1NFUlQobV9iYWNraW5nU3RvcmUpOworICAgIGlmIChzcGFjZUNo
ZWNrUmVzdWx0ID09IFNwYWNlQ2hlY2tSZXN1bHQ6OlVua25vd24pIHsKKyAgICAgICAgaWYgKCFt
X21hbmFnZXIpCisgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlk
U3RhdGVFcnJvciB9LCBJREJHZXRSZXN1bHQgeyB9KTsKKworICAgICAgICBtX21hbmFnZXItPnJl
cXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIDAsIFt0aGlzLCB3ZWFrVGhpcyA9IFdl
YWtQdHIgeyAqdGhpcyB9LCByZXF1ZXN0RGF0YSwgaW5mbywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKV0oYm9vbCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghd2Vha1Ro
aXMpCisgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0
YXRlRXJyb3IsICJEYXRhYmFzZSBvciB0cmFuc2FjdGlvbiBpcyBjbG9zZWQiIH0sIElEQkdldFJl
c3VsdCB7IH0pOworCisgICAgICAgICAgICBvcGVuQ3Vyc29yKHJlcXVlc3REYXRhLCBpbmZvLCBX
VEZNb3ZlKGNhbGxiYWNrKSwgZ3JhbnRlZCA/IFNwYWNlQ2hlY2tSZXN1bHQ6OlBhc3MgOiBTcGFj
ZUNoZWNrUmVzdWx0OjpGYWlsKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBBU1NFUlQoc3BhY2VDaGVja1Jlc3VsdCA9PSBTcGFjZUNoZWNrUmVzdWx0OjpQYXNz
KTsKKyAgICBpZiAoIW1fYmFja2luZ1N0b3JlKQorICAgICAgICByZXR1cm4gY2FsbGJhY2soSURC
RXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIkJhY2tpbmcgc3RvcmUgaXMgY2xvc2VkIiB9LCBJ
REJHZXRSZXN1bHQgeyB9KTsKIAogICAgIElEQkdldFJlc3VsdCByZXN1bHQ7CiAgICAgYXV0byBl
cnJvciA9IG1fYmFja2luZ1N0b3JlLT5vcGVuQ3Vyc29yKHJlcXVlc3REYXRhLnRyYW5zYWN0aW9u
SWRlbnRpZmllcigpLCBpbmZvLCByZXN1bHQpOwpAQCAtODU2LDEyICsxMDg1LDI3IEBAIHZvaWQg
VW5pcXVlSURCRGF0YWJhc2U6Om9wZW5DdXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVl
c3REYXRhLCBjb25zdCBJREJDCiAgICAgY2FsbGJhY2soZXJyb3IsIHJlc3VsdCk7CiB9CiAKLXZv
aWQgVW5pcXVlSURCRGF0YWJhc2U6Oml0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEm
IHJlcXVlc3REYXRhLCBjb25zdCBJREJJdGVyYXRlQ3Vyc29yRGF0YSYgZGF0YSwgR2V0UmVzdWx0
Q2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjppdGVyYXRlQ3Vyc29y
KGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCSXRlcmF0ZUN1cnNv
ckRhdGEmIGRhdGEsIEdldFJlc3VsdENhbGxiYWNrIGNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0
IHNwYWNlQ2hlY2tSZXN1bHQpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAg
TE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjppdGVyYXRlQ3Vyc29yIik7CiAKLSAg
ICBBU1NFUlQobV9iYWNraW5nU3RvcmUpOworICAgIGlmIChzcGFjZUNoZWNrUmVzdWx0ID09IFNw
YWNlQ2hlY2tSZXN1bHQ6OlVua25vd24pIHsKKyAgICAgICAgaWYgKCFtX21hbmFnZXIpCisgICAg
ICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciB9LCBJ
REJHZXRSZXN1bHQgeyB9KTsKKworICAgICAgICBtX21hbmFnZXItPnJlcXVlc3RTcGFjZShtX2lk
ZW50aWZpZXIub3JpZ2luKCksIDAsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9
LCByZXF1ZXN0RGF0YSwgZGF0YSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBn
cmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJEYXRh
YmFzZSBvciB0cmFuc2FjdGlvbiBpcyBjbG9zZWQiIH0sIElEQkdldFJlc3VsdCB7IH0pOworCisg
ICAgICAgICAgICBpdGVyYXRlQ3Vyc29yKHJlcXVlc3REYXRhLCBkYXRhLCBXVEZNb3ZlKGNhbGxi
YWNrKSwgZ3JhbnRlZCA/IFNwYWNlQ2hlY2tSZXN1bHQ6OlBhc3MgOiBTcGFjZUNoZWNrUmVzdWx0
OjpGYWlsKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NF
UlQoc3BhY2VDaGVja1Jlc3VsdCA9PSBTcGFjZUNoZWNrUmVzdWx0OjpQYXNzKTsKKyAgICBpZiAo
IW1fYmFja2luZ1N0b3JlKQorICAgICAgICByZXR1cm4gY2FsbGJhY2soSURCRXJyb3IgeyBJbnZh
bGlkU3RhdGVFcnJvciwgIkJhY2tpbmcgc3RvcmUgaXMgY2xvc2VkIiB9LCBJREJHZXRSZXN1bHQg
eyB9KTsKIAogICAgIElEQkdldFJlc3VsdCByZXN1bHQ7CiAgICAgYXV0byB0cmFuc2FjdGlvbklk
ZW50aWZpZXIgPSByZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKTsKQEAgLTg3MSwx
MyArMTExNSwzMCBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjppdGVyYXRlQ3Vyc29yKGNvbnN0
IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSQogICAgIGNhbGxiYWNrKGVycm9y
LCByZXN1bHQpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjb21taXRUcmFuc2FjdGlv
bihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgRXJyb3JDYWxsYmFj
ayBjYWxsYmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNvbW1pdFRyYW5zYWN0aW9uKFVu
aXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBFcnJvckNhbGxiYWNrIGNh
bGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0IHNwYWNlQ2hlY2tSZXN1bHQpCiB7CiAgICAgQVNTRVJU
KCFpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNl
Ojpjb21taXRUcmFuc2FjdGlvbiAtICVzIiwgdHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIo
KS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKKyAgICBpZiAoc3BhY2VDaGVja1Jl
c3VsdCA9PSBTcGFjZUNoZWNrUmVzdWx0OjpVbmtub3duKSB7CisgICAgICAgIGlmICghbV9tYW5h
Z2VyKQorICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsgSW52YWxpZFN0YXRl
RXJyb3IgfSk7CisKKyAgICAgICAgbV9tYW5hZ2VyLT5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVy
Lm9yaWdpbigpLCAwLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgd2Vha1Ry
YW5zYWN0aW9uID0gV2Vha1B0ciB7IHRyYW5zYWN0aW9uIH0sIGNhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayldKGJvb2wgZ3JhbnRlZCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXdlYWtU
aGlzIHx8ICF3ZWFrVHJhbnNhY3Rpb24pCisgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNr
KElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJEYXRhYmFzZSBvciB0cmFuc2FjdGlvbiBp
cyBjbG9zZWQiIH0pOworCisgICAgICAgICAgICBjb21taXRUcmFuc2FjdGlvbigqd2Vha1RyYW5z
YWN0aW9uLCBXVEZNb3ZlKGNhbGxiYWNrKSwgZ3JhbnRlZCA/IFNwYWNlQ2hlY2tSZXN1bHQ6OlBh
c3MgOiBTcGFjZUNoZWNrUmVzdWx0OjpGYWlsKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBBU1NFUlQoc3BhY2VDaGVja1Jlc3VsdCA9PSBTcGFjZUNoZWNrUmVz
dWx0OjpQYXNzKTsKICAgICBBU1NFUlQodHJhbnNhY3Rpb24uZGF0YWJhc2VDb25uZWN0aW9uKCku
ZGF0YWJhc2UoKSA9PSB0aGlzKTsKLSAgICBBU1NFUlQobV9iYWNraW5nU3RvcmUpOworCisgICAg
aWYgKCFtX2JhY2tpbmdTdG9yZSkKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKElEQkVycm9yIHsg
SW52YWxpZFN0YXRlRXJyb3IsICJCYWNraW5nIHN0b3JlIGlzIGNsb3NlZCIgfSk7CisKICAgICBh
dXRvIHRha2VuVHJhbnNhY3Rpb24gPSBtX2luUHJvZ3Jlc3NUcmFuc2FjdGlvbnMudGFrZSh0cmFu
c2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpKTsKICAgICBpZiAoIXRha2VuVHJhbnNhY3Rpb24p
IHsKICAgICAgICAgaWYgKCFtX29wZW5EYXRhYmFzZUNvbm5lY3Rpb25zLmNvbnRhaW5zKCZ0cmFu
c2FjdGlvbi5kYXRhYmFzZUNvbm5lY3Rpb24oKSkpCkBAIC04OTMsMTEgKzExNTQsMjUgQEAgdm9p
ZCBVbmlxdWVJREJEYXRhYmFzZTo6Y29tbWl0VHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VU
cmFuc2FjdGlvbiYgdHJhbnNhY3QKICAgICB0cmFuc2FjdGlvbkNvbXBsZXRlZChXVEZNb3ZlKHRh
a2VuVHJhbnNhY3Rpb24pKTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6YWJvcnRUcmFu
c2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgRXJyb3JD
YWxsYmFjayBjYWxsYmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmFib3J0VHJhbnNhY3Rp
b24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIEVycm9yQ2FsbGJh
Y2sgY2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgc3BhY2VDaGVja1Jlc3VsdCkKIHsKICAgICBB
U1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0
YWJhc2U6OmFib3J0VHJhbnNhY3Rpb24gLSAlcyIsIHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlm
aWVyKCkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCisgICAgaWYgKHNwYWNlQ2hl
Y2tSZXN1bHQgPT0gU3BhY2VDaGVja1Jlc3VsdDo6VW5rbm93bikgeworICAgICAgICBpZiAoIW1f
bWFuYWdlcikKKyAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhJREJFcnJvciB7IEludmFsaWRT
dGF0ZUVycm9yIH0pOworCisgICAgICAgIG1fbWFuYWdlci0+cmVxdWVzdFNwYWNlKG1faWRlbnRp
Zmllci5vcmlnaW4oKSwgMCwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHdl
YWtUcmFuc2FjdGlvbiA9IFdlYWtQdHIgeyB0cmFuc2FjdGlvbiB9LCBjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spXShib29sIGdyYW50ZWQpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCF3
ZWFrVGhpcyB8fCAhd2Vha1RyYW5zYWN0aW9uKQorICAgICAgICAgICAgICAgIHJldHVybiBjYWxs
YmFjayhJREJFcnJvciB7IEludmFsaWRTdGF0ZUVycm9yLCAiRGF0YWJhc2Ugb3IgdHJhbnNhY3Rp
b24gaXMgY2xvc2VkIiB9KTsKKworICAgICAgICAgICAgYWJvcnRUcmFuc2FjdGlvbigqd2Vha1Ry
YW5zYWN0aW9uLCBXVEZNb3ZlKGNhbGxiYWNrKSwgZ3JhbnRlZCA/IFNwYWNlQ2hlY2tSZXN1bHQ6
OlBhc3MgOiBTcGFjZUNoZWNrUmVzdWx0OjpGYWlsKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQoc3BhY2VDaGVja1Jlc3VsdCA9PSBTcGFjZUNoZWNr
UmVzdWx0OjpQYXNzKTsKICAgICBBU1NFUlQodHJhbnNhY3Rpb24uZGF0YWJhc2VDb25uZWN0aW9u
KCkuZGF0YWJhc2UoKSA9PSB0aGlzKTsKIAogICAgIGF1dG8gdGFrZW5UcmFuc2FjdGlvbiA9IG1f
aW5Qcm9ncmVzc1RyYW5zYWN0aW9ucy50YWtlKHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVy
KCkpOwpAQCAtOTI1LDcgKzEyMDAsMTEgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6YWJvcnRU
cmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGkKICAgICAg
ICAgbV9kYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oKm1fdmVyc2lv
bkNoYW5nZVRyYW5zYWN0aW9uLT5vcmlnaW5hbERhdGFiYXNlSW5mbygpKTsKICAgICB9CiAKLSAg
ICBhdXRvIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPmFib3J0VHJhbnNhY3Rpb24odHJhbnNhY3Rp
b25JZGVudGlmaWVyKTsKKyAgICBJREJFcnJvciBlcnJvcjsKKyAgICBpZiAoIW1fYmFja2luZ1N0
b3JlKQorICAgICAgICBlcnJvciA9IElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJCYWNr
aW5nIHN0b3JlIGlzIGNsb3NlZCIgfTsKKyAgICBlbHNlCisgICAgICAgIGVycm9yID0gbV9iYWNr
aW5nU3RvcmUtPmFib3J0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKIAogICAg
IGNhbGxiYWNrKGVycm9yKTsKICAgICB0cmFuc2FjdGlvbkNvbXBsZXRlZChXVEZNb3ZlKHRha2Vu
VHJhbnNhY3Rpb24pKTsKQEAgLTEyMjUsNiArMTUwNCwxMSBAQCBib29sIFVuaXF1ZUlEQkRhdGFi
YXNlOjp0cnlDbG9zZSgpCiAgICAgY2xvc2UoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KKyAgICAK
K2Jvb2wgVW5pcXVlSURCRGF0YWJhc2U6Omhhc0RhdGFJbk1lbW9yeSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fYmFja2luZ1N0b3JlID8gbV9iYWNraW5nU3RvcmUtPmlzRXBoZW1lcmFsKCkgOiBm
YWxzZTsKK30KIAogUmVmUHRyPFNlcnZlck9wZW5EQlJlcXVlc3Q+IFVuaXF1ZUlEQkRhdGFiYXNl
Ojp0YWtlTmV4dFJ1bm5hYmxlUmVxdWVzdChSZXF1ZXN0VHlwZSByZXF1ZXN0VHlwZSkKIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJ
REJEYXRhYmFzZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1Vu
aXF1ZUlEQkRhdGFiYXNlLmgKaW5kZXggYjJhNzQxN2Y5YzgxOWNmYzI0MTQ2Y2U1ZmI1Y2Y1ZDI2
MTI4NTA4MC4uNzg4MGY2NjVlYTg3ZTA1ZmNiYWRjM2QxZDA3NDQ2MTliZTAzOTI0YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRh
dGFiYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1Vu
aXF1ZUlEQkRhdGFiYXNlLmgKQEAgLTU5LDggKzU5LDggQEAgZW51bSBjbGFzcyBJbmRleFJlY29y
ZFR5cGUgOiBib29sOwogbmFtZXNwYWNlIElEQlNlcnZlciB7CiAKIGNsYXNzIElEQkNvbm5lY3Rp
b25Ub0NsaWVudDsKLWNsYXNzIElEQlNlcnZlcjsKIGNsYXNzIFVuaXF1ZUlEQkRhdGFiYXNlQ29u
bmVjdGlvbjsKK2NsYXNzIFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlcjsKIAogdHlwZWRlZiBGdW5j
dGlvbjx2b2lkKGNvbnN0IElEQkVycm9yJik+IEVycm9yQ2FsbGJhY2s7CiB0eXBlZGVmIEZ1bmN0
aW9uPHZvaWQoY29uc3QgSURCRXJyb3ImLCBjb25zdCBJREJLZXlEYXRhJik+IEtleURhdGFDYWxs
YmFjazsKQEAgLTcxLDU0ICs3MSw2MiBAQCB0eXBlZGVmIEZ1bmN0aW9uPHZvaWQoY29uc3QgSURC
RXJyb3ImLCB1aW50NjRfdCk+IENvdW50Q2FsbGJhY2s7CiBjbGFzcyBVbmlxdWVJREJEYXRhYmFz
ZSA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxVbmlxdWVJREJEYXRhYmFzZT4gewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFVuaXF1ZUlEQkRhdGFiYXNlKElEQlNl
cnZlciYsIGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYpOworICAgIFdFQkNPUkVfRVhQT1JU
IFVuaXF1ZUlEQkRhdGFiYXNlKFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlciYsIGNvbnN0IElEQkRh
dGFiYXNlSWRlbnRpZmllciYpOwogICAgIFVuaXF1ZUlEQkRhdGFiYXNlKFVuaXF1ZUlEQkRhdGFi
YXNlJikgPSBkZWxldGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgflVuaXF1ZUlEQkRhdGFiYXNlKCk7
CiAKLSAgICB2b2lkIG9wZW5EYXRhYmFzZUNvbm5lY3Rpb24oSURCQ29ubmVjdGlvblRvQ2xpZW50
JiwgY29uc3QgSURCUmVxdWVzdERhdGEmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG9wZW5E
YXRhYmFzZUNvbm5lY3Rpb24oSURCQ29ubmVjdGlvblRvQ2xpZW50JiwgY29uc3QgSURCUmVxdWVz
dERhdGEmKTsKIAogICAgIGNvbnN0IElEQkRhdGFiYXNlSW5mbyYgaW5mbygpIGNvbnN0OwotICAg
IElEQlNlcnZlciYgc2VydmVyKCkgeyByZXR1cm4gbV9zZXJ2ZXI7IH0KKyAgICBVbmlxdWVJREJE
YXRhYmFzZU1hbmFnZXIqIG1hbmFnZXIoKTsKICAgICBjb25zdCBJREJEYXRhYmFzZUlkZW50aWZp
ZXImIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KIAotICAgIHZv
aWQgY3JlYXRlT2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIGNvbnN0
IElEQk9iamVjdFN0b3JlSW5mbyYsIEVycm9yQ2FsbGJhY2spOwotICAgIHZvaWQgZGVsZXRlT2Jq
ZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIGNvbnN0IFN0cmluZyYgb2Jq
ZWN0U3RvcmVOYW1lLCBFcnJvckNhbGxiYWNrKTsKLSAgICB2b2lkIHJlbmFtZU9iamVjdFN0b3Jl
KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSwgRXJyb3JDYWxsYmFjayk7Ci0gICAgdm9pZCBj
bGVhck9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCB1aW50NjRfdCBv
YmplY3RTdG9yZUlkZW50aWZpZXIsIEVycm9yQ2FsbGJhY2spOwotICAgIHZvaWQgY3JlYXRlSW5k
ZXgoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIGNvbnN0IElEQkluZGV4SW5mbyYsIEVy
cm9yQ2FsbGJhY2spOwotICAgIHZvaWQgZGVsZXRlSW5kZXgoVW5pcXVlSURCRGF0YWJhc2VUcmFu
c2FjdGlvbiYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBp
bmRleE5hbWUsIEVycm9yQ2FsbGJhY2spOwotICAgIHZvaWQgcmVuYW1lSW5kZXgoVW5pcXVlSURC
RGF0YWJhc2VUcmFuc2FjdGlvbiYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgdWlu
dDY0X3QgaW5kZXhJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUsIEVycm9yQ2FsbGJh
Y2spOworICAgIGVudW0gY2xhc3MgU3BhY2VDaGVja1Jlc3VsdCA6IHVpbnQ4X3QgeworICAgICAg
ICBVbmtub3duLAorICAgICAgICBQYXNzLAorICAgICAgICBGYWlsCisgICAgfTsKKyAgICB2b2lk
IGNyZWF0ZU9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCBjb25zdCBJ
REJPYmplY3RTdG9yZUluZm8mLCBFcnJvckNhbGxiYWNrLCBTcGFjZUNoZWNrUmVzdWx0ID0gU3Bh
Y2VDaGVja1Jlc3VsdDo6VW5rbm93bik7CisgICAgdm9pZCBkZWxldGVPYmplY3RTdG9yZShVbmlx
dWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUs
IEVycm9yQ2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgPSBTcGFjZUNoZWNrUmVzdWx0OjpVbmtu
b3duKTsKKyAgICB2b2lkIHJlbmFtZU9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNh
Y3Rpb24mLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3
TmFtZSwgRXJyb3JDYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCA9IFNwYWNlQ2hlY2tSZXN1bHQ6
OlVua25vd24pOworICAgIHZvaWQgY2xlYXJPYmplY3RTdG9yZShVbmlxdWVJREJEYXRhYmFzZVRy
YW5zYWN0aW9uJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBFcnJvckNhbGxiYWNr
LCBTcGFjZUNoZWNrUmVzdWx0ID0gU3BhY2VDaGVja1Jlc3VsdDo6VW5rbm93bik7CisgICAgdm9p
ZCBjcmVhdGVJbmRleChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgY29uc3QgSURCSW5k
ZXhJbmZvJiwgRXJyb3JDYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCA9IFNwYWNlQ2hlY2tSZXN1
bHQ6OlVua25vd24pOworICAgIHZvaWQgZGVsZXRlSW5kZXgoVW5pcXVlSURCRGF0YWJhc2VUcmFu
c2FjdGlvbiYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBp
bmRleE5hbWUsIEVycm9yQ2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgPSBTcGFjZUNoZWNrUmVz
dWx0OjpVbmtub3duKTsKKyAgICB2b2lkIHJlbmFtZUluZGV4KFVuaXF1ZUlEQkRhdGFiYXNlVHJh
bnNhY3Rpb24mLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lLCBFcnJvckNhbGxiYWNrLCBTcGFjZUNo
ZWNrUmVzdWx0ID0gU3BhY2VDaGVja1Jlc3VsdDo6VW5rbm93bik7CiAgICAgdm9pZCBwdXRPckFk
ZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleURhdGEmLCBjb25zdCBJREJWYWx1
ZSYsIEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlLCBLZXlEYXRhQ2FsbGJhY2sp
OwotICAgIHZvaWQgZ2V0UmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCR2V0
UmVjb3JkRGF0YSYsIEdldFJlc3VsdENhbGxiYWNrKTsKLSAgICB2b2lkIGdldEFsbFJlY29yZHMo
Y29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJHZXRBbGxSZWNvcmRzRGF0YSYsIEdldEFs
bFJlc3VsdHNDYWxsYmFjayk7Ci0gICAgdm9pZCBnZXRDb3VudChjb25zdCBJREJSZXF1ZXN0RGF0
YSYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYsIENvdW50Q2FsbGJhY2spOwotICAgIHZvaWQgZGVs
ZXRlUmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiwg
RXJyb3JDYWxsYmFjayk7Ci0gICAgdm9pZCBvcGVuQ3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRh
JiwgY29uc3QgSURCQ3Vyc29ySW5mbyYsIEdldFJlc3VsdENhbGxiYWNrKTsKLSAgICB2b2lkIGl0
ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJJdGVyYXRlQ3Vyc29y
RGF0YSYsIEdldFJlc3VsdENhbGxiYWNrKTsKLSAgICB2b2lkIGNvbW1pdFRyYW5zYWN0aW9uKFVu
aXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCBFcnJvckNhbGxiYWNrKTsKLSAgICB2b2lkIGFi
b3J0VHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIEVycm9yQ2FsbGJh
Y2spOworICAgIHZvaWQgcHV0T3JBZGRBZnRlclNwYWNlQ2hlY2soY29uc3QgSURCUmVxdWVzdERh
dGEmLCBjb25zdCBJREJLZXlEYXRhJiwgY29uc3QgSURCVmFsdWUmLCBJbmRleGVkREI6Ok9iamVj
dFN0b3JlT3ZlcndyaXRlTW9kZSwgS2V5RGF0YUNhbGxiYWNrLCBib29sIGlzS2V5R2VuZXJhdGVk
LCBjb25zdCBJbmRleElEVG9JbmRleEtleU1hcCYsIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYs
IFNwYWNlQ2hlY2tSZXN1bHQpOworICAgIHZvaWQgZ2V0UmVjb3JkKGNvbnN0IElEQlJlcXVlc3RE
YXRhJiwgY29uc3QgSURCR2V0UmVjb3JkRGF0YSYsIEdldFJlc3VsdENhbGxiYWNrLCBTcGFjZUNo
ZWNrUmVzdWx0ID0gU3BhY2VDaGVja1Jlc3VsdDo6VW5rbm93bik7CisgICAgdm9pZCBnZXRBbGxS
ZWNvcmRzKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCR2V0QWxsUmVjb3Jkc0RhdGEm
LCBHZXRBbGxSZXN1bHRzQ2FsbGJhY2ssIFNwYWNlQ2hlY2tSZXN1bHQgPSBTcGFjZUNoZWNrUmVz
dWx0OjpVbmtub3duKTsKKyAgICB2b2lkIGdldENvdW50KGNvbnN0IElEQlJlcXVlc3REYXRhJiwg
Y29uc3QgSURCS2V5UmFuZ2VEYXRhJiwgQ291bnRDYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCA9
IFNwYWNlQ2hlY2tSZXN1bHQ6OlVua25vd24pOworICAgIHZvaWQgZGVsZXRlUmVjb3JkKGNvbnN0
IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiwgRXJyb3JDYWxsYmFjaywg
U3BhY2VDaGVja1Jlc3VsdCA9IFNwYWNlQ2hlY2tSZXN1bHQ6OlVua25vd24pOworICAgIHZvaWQg
b3BlbkN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkN1cnNvckluZm8mLCBH
ZXRSZXN1bHRDYWxsYmFjaywgU3BhY2VDaGVja1Jlc3VsdCA9IFNwYWNlQ2hlY2tSZXN1bHQ6OlVu
a25vd24pOworICAgIHZvaWQgaXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNv
bnN0IElEQkl0ZXJhdGVDdXJzb3JEYXRhJiwgR2V0UmVzdWx0Q2FsbGJhY2ssIFNwYWNlQ2hlY2tS
ZXN1bHQgPSBTcGFjZUNoZWNrUmVzdWx0OjpVbmtub3duKTsKKyAgICB2b2lkIGNvbW1pdFRyYW5z
YWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCBFcnJvckNhbGxiYWNrLCBTcGFj
ZUNoZWNrUmVzdWx0ID0gU3BhY2VDaGVja1Jlc3VsdDo6VW5rbm93bik7CisgICAgdm9pZCBhYm9y
dFRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCBFcnJvckNhbGxiYWNr
LCBTcGFjZUNoZWNrUmVzdWx0ID0gU3BhY2VDaGVja1Jlc3VsdDo6VW5rbm93bik7CiAKICAgICB2
b2lkIGRpZEZpbmlzaEhhbmRsaW5nVmVyc2lvbkNoYW5nZShVbmlxdWVJREJEYXRhYmFzZUNvbm5l
Y3Rpb24mLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmll
cik7CiAgICAgdm9pZCBjb25uZWN0aW9uQ2xvc2VkRnJvbUNsaWVudChVbmlxdWVJREJEYXRhYmFz
ZUNvbm5lY3Rpb24mKTsKICAgICB2b2lkIGRpZEZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQoVW5pcXVl
SURCRGF0YWJhc2VDb25uZWN0aW9uJiwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1
ZXN0SWRlbnRpZmllciwgSW5kZXhlZERCOjpDb25uZWN0aW9uQ2xvc2VkT25CZWhhbGZPZlNlcnZl
cik7Ci0gICAgdm9pZCBvcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKGNvbnN0IElEQlJlc291cmNlSWRl
bnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgb3Bl
bkRCUmVxdWVzdENhbmNlbGxlZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJ
ZGVudGlmaWVyKTsKIAogICAgIHZvaWQgZW5xdWV1ZVRyYW5zYWN0aW9uKFJlZjxVbmlxdWVJREJE
YXRhYmFzZVRyYW5zYWN0aW9uPiYmKTsKIAotICAgIHZvaWQgaGFuZGxlRGVsZXRlKElEQkNvbm5l
Y3Rpb25Ub0NsaWVudCYsIGNvbnN0IElEQlJlcXVlc3REYXRhJik7Ci0gICAgdm9pZCBpbW1lZGlh
dGVDbG9zZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFuZGxlRGVsZXRlKElEQkNvbm5l
Y3Rpb25Ub0NsaWVudCYsIGNvbnN0IElEQlJlcXVlc3REYXRhJik7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBpbW1lZGlhdGVDbG9zZSgpOwogCiAgICAgYm9vbCBoYXNBY3RpdmVUcmFuc2FjdGlv
bnMoKSBjb25zdDsKLSAgICB2b2lkIGFib3J0QWN0aXZlVHJhbnNhY3Rpb25zKCk7Ci0gICAgYm9v
bCB0cnlDbG9zZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWJvcnRBY3RpdmVUcmFuc2Fj
dGlvbnMoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIHRyeUNsb3NlKCk7CiAKLSAgICBTdHJp
bmcgZmlsZVBhdGgoKSBjb25zdDsKLSAgICBzdGQ6Om9wdGlvbmFsPElEQkRhdGFiYXNlTmFtZUFu
ZFZlcnNpb24+IG5hbWVBbmRWZXJzaW9uKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgU3Ry
aW5nIGZpbGVQYXRoKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxJ
REJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiBuYW1lQW5kVmVyc2lvbigpIGNvbnN0OworICAgIFdF
QkNPUkVfRVhQT1JUIGJvb2wgaGFzRGF0YUluTWVtb3J5KCkgY29uc3Q7CiAKIHByaXZhdGU6CiAg
ICAgdm9pZCBoYW5kbGVEYXRhYmFzZU9wZXJhdGlvbnMoKTsKICAgICB2b2lkIGhhbmRsZUN1cnJl
bnRPcGVyYXRpb24oKTsKICAgICB2b2lkIHBlcmZvcm1DdXJyZW50T3Blbk9wZXJhdGlvbigpOwor
ICAgIHZvaWQgcGVyZm9ybUN1cnJlbnRPcGVuT3BlcmF0aW9uQWZ0ZXJTcGFjZUNoZWNrKGJvb2wg
aXNHcmFudGVkKTsKICAgICB2b2lkIHBlcmZvcm1DdXJyZW50RGVsZXRlT3BlcmF0aW9uKCk7CiAg
ICAgZW51bSBjbGFzcyBSZXF1ZXN0VHlwZSB7IERlbGV0ZSwgQW55IH07CiAgICAgUmVmUHRyPFNl
cnZlck9wZW5EQlJlcXVlc3Q+IHRha2VOZXh0UnVubmFibGVSZXF1ZXN0KFJlcXVlc3RUeXBlID0g
UmVxdWVzdFR5cGU6OkFueSk7CkBAIC0xNDYsMTEgKzE1NCwxMyBAQCBwcml2YXRlOgogCiAgICAg
dm9pZCBjbGVhclRyYW5zYWN0aW9uc09uQ29ubmVjdGlvbihVbmlxdWVJREJEYXRhYmFzZUNvbm5l
Y3Rpb24mKTsKIAotICAgIElEQlNlcnZlciYgbV9zZXJ2ZXI7CisgICAgSURCU2VydmVyKiBtX3Nl
cnZlcjsKKyAgICBXZWFrUHRyPFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlcj4gbV9tYW5hZ2VyOwog
ICAgIElEQkRhdGFiYXNlSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAKICAgICBMaXN0SGFzaFNl
dDxSZWZQdHI8U2VydmVyT3BlbkRCUmVxdWVzdD4+IG1fcGVuZGluZ09wZW5EQlJlcXVlc3RzOwog
ICAgIFJlZlB0cjxTZXJ2ZXJPcGVuREJSZXF1ZXN0PiBtX2N1cnJlbnRPcGVuREJSZXF1ZXN0Owor
ICAgIEhhc2hTZXQ8SURCUmVzb3VyY2VJZGVudGlmaWVyPiBtX29wZW5EQlJlcXVlc3RzRm9yU3Bh
Y2VDaGVjazsKIAogICAgIExpc3RIYXNoU2V0PFJlZlB0cjxVbmlxdWVJREJEYXRhYmFzZUNvbm5l
Y3Rpb24+PiBtX29wZW5EYXRhYmFzZUNvbm5lY3Rpb25zOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJ
REJEYXRhYmFzZUNvbm5lY3Rpb24uY3BwCmluZGV4IDc0M2VkY2MzYjhjNTk0MDUxZjc5MTExNjUy
NmFmNGQwMjE2OTEzNjcuLjNjNzcyYWY3MGI3NDgyMjk3NGQ5ZDViNzEwZDMxNWYwYTlhOGZiN2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9Vbmlx
dWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uY3BwCkBAIC0zMSw2
ICszMSw3IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlNlcnZlck9wZW5EQlJl
cXVlc3QuaCIKICNpbmNsdWRlICJVbmlxdWVJREJEYXRhYmFzZS5oIgorI2luY2x1ZGUgIlVuaXF1
ZUlEQkRhdGFiYXNlTWFuYWdlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2Ug
SURCU2VydmVyIHsKQEAgLTQyLDExICs0MywxNCBAQCBSZWY8VW5pcXVlSURCRGF0YWJhc2VDb25u
ZWN0aW9uPiBVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb246OmNyZWF0ZShVbmlxdWVJREJEYQog
CiBVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb246OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlv
bihVbmlxdWVJREJEYXRhYmFzZSYgZGF0YWJhc2UsIFNlcnZlck9wZW5EQlJlcXVlc3QmIHJlcXVl
c3QpCiAgICAgOiBtX2RhdGFiYXNlKGRhdGFiYXNlKQotICAgICwgbV9zZXJ2ZXIoZGF0YWJhc2Uu
c2VydmVyKCkpCisgICAgLCBtX21hbmFnZXIoZGF0YWJhc2UubWFuYWdlcigpKQogICAgICwgbV9j
b25uZWN0aW9uVG9DbGllbnQocmVxdWVzdC5jb25uZWN0aW9uKCkpCiAgICAgLCBtX29wZW5SZXF1
ZXN0SWRlbnRpZmllcihyZXF1ZXN0LnJlcXVlc3REYXRhKCkucmVxdWVzdElkZW50aWZpZXIoKSkK
IHsKLSAgICBtX3NlcnZlci5yZWdpc3RlckRhdGFiYXNlQ29ubmVjdGlvbigqdGhpcyk7CisgICAg
aWYgKGF1dG8qIG1hbmFnZXIgPSBkYXRhYmFzZS5tYW5hZ2VyKCkpIHsKKyAgICAgICAgbV9tYW5h
Z2VyID0gKm1hbmFnZXI7CisgICAgICAgIG1fbWFuYWdlci0+cmVnaXN0ZXJDb25uZWN0aW9uKCp0
aGlzKTsKKyAgICB9CiAgICAgbV9jb25uZWN0aW9uVG9DbGllbnQtPnJlZ2lzdGVyRGF0YWJhc2VD
b25uZWN0aW9uKCp0aGlzKTsKIH0KIApAQCAtNTQsMTAgKzU4LDE2IEBAIFVuaXF1ZUlEQkRhdGFi
YXNlQ29ubmVjdGlvbjo6flVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbigpCiB7CiAgICAgQVNT
RVJUKG1fdHJhbnNhY3Rpb25NYXAuaXNFbXB0eSgpKTsKIAotICAgIG1fc2VydmVyLnVucmVnaXN0
ZXJEYXRhYmFzZUNvbm5lY3Rpb24oKnRoaXMpOworICAgIGlmIChtX21hbmFnZXIpCisgICAgICAg
IG1fbWFuYWdlci0+dW5yZWdpc3RlckNvbm5lY3Rpb24oKnRoaXMpOwogICAgIG1fY29ubmVjdGlv
blRvQ2xpZW50LT51bnJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0aW9uKCp0aGlzKTsKIH0KIAorVW5p
cXVlSURCRGF0YWJhc2VNYW5hZ2VyKiBVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb246Om1hbmFn
ZXIoKQoreworICAgIHJldHVybiBtX21hbmFnZXIuZ2V0KCk7Cit9CisKIGJvb2wgVW5pcXVlSURC
RGF0YWJhc2VDb25uZWN0aW9uOjpoYXNOb25GaW5pc2hlZFRyYW5zYWN0aW9ucygpIGNvbnN0CiB7
CiAgICAgcmV0dXJuICFtX3RyYW5zYWN0aW9uTWFwLmlzRW1wdHkoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZUNv
bm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9Vbmlx
dWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uaAppbmRleCAyZTE5ZGZkMmRjOTE0MzRiZmM1ZTdjM2Fl
NGJlNjZkOGNkODU4ODExLi45OGZlYjU5Yzc2YmVhZWJlNzBlZGRlNGJlNTU4ZmNhODcxYzk4ZGM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5p
cXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5oCkBAIC0yNSw3ICsy
NSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiSURCU2VydmVyLmgiCiAjaW5jbHVk
ZSAiVW5pcXVlSURCRGF0YWJhc2UuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1
ZGUgPHd0Zi9JZGVudGlmaWVkLmg+CkBAIC0zNiw2ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgSURCRXJyb3I7CiBjbGFzcyBJREJSZXN1bHREYXRhOworY2xhc3MgVW5pcXVl
SURCRGF0YWJhc2VNYW5hZ2VyOwogCiBuYW1lc3BhY2UgSURCU2VydmVyIHsKIApAQCAtNTIsMTEg
KzUyLDExIEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgb3Bl
blJlcXVlc3RJZGVudGlmaWVyKCkgeyByZXR1cm4gbV9vcGVuUmVxdWVzdElkZW50aWZpZXI7IH0K
ICAgICBVbmlxdWVJREJEYXRhYmFzZSogZGF0YWJhc2UoKSB7IHJldHVybiBtX2RhdGFiYXNlLmdl
dCgpOyB9Ci0gICAgSURCU2VydmVyKiBzZXJ2ZXIoKSB7IHJldHVybiAmbV9zZXJ2ZXI7IH0KKyAg
ICBVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIqIG1hbmFnZXIoKTsKICAgICBJREJDb25uZWN0aW9u
VG9DbGllbnQmIGNvbm5lY3Rpb25Ub0NsaWVudCgpIHsgcmV0dXJuIG1fY29ubmVjdGlvblRvQ2xp
ZW50OyB9CiAKLSAgICB2b2lkIGNvbm5lY3Rpb25QZW5kaW5nQ2xvc2VGcm9tQ2xpZW50KCk7Ci0g
ICAgdm9pZCBjb25uZWN0aW9uQ2xvc2VkRnJvbUNsaWVudCgpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgY29ubmVjdGlvblBlbmRpbmdDbG9zZUZyb21DbGllbnQoKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGNvbm5lY3Rpb25DbG9zZWRGcm9tQ2xpZW50KCk7CiAKICAgICBib29sIGNsb3Nl
UGVuZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fY2xvc2VQZW5kaW5nOyB9CiAKQEAgLTY1LDcgKzY1
LDcgQEAgcHVibGljOgogICAgIHZvaWQgZmlyZVZlcnNpb25DaGFuZ2VFdmVudChjb25zdCBJREJS
ZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCByZXF1ZXN0ZWRW
ZXJzaW9uKTsKICAgICBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiBjcmVhdGVWZXJzaW9u
Q2hhbmdlVHJhbnNhY3Rpb24odWludDY0X3QgbmV3VmVyc2lvbik7CiAKLSAgICB2b2lkIGVzdGFi
bGlzaFRyYW5zYWN0aW9uKGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgZXN0YWJsaXNoVHJhbnNhY3Rpb24oY29uc3QgSURCVHJhbnNhY3Rpb25JbmZv
Jik7CiAgICAgdm9pZCBkaWRBYm9ydFRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNh
Y3Rpb24mLCBjb25zdCBJREJFcnJvciYpOwogICAgIHZvaWQgZGlkQ29tbWl0VHJhbnNhY3Rpb24o
VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIGNvbnN0IElEQkVycm9yJik7CiAgICAgdm9p
ZCBkaWRDcmVhdGVPYmplY3RTdG9yZShjb25zdCBJREJSZXN1bHREYXRhJik7CkBAIC03NSw4ICs3
NSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZENyZWF0ZUluZGV4KGNvbnN0IElEQlJlc3VsdERh
dGEmKTsKICAgICB2b2lkIGRpZERlbGV0ZUluZGV4KGNvbnN0IElEQlJlc3VsdERhdGEmKTsKICAg
ICB2b2lkIGRpZFJlbmFtZUluZGV4KGNvbnN0IElEQlJlc3VsdERhdGEmKTsKLSAgICB2b2lkIGRp
ZEZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1
ZXN0SWRlbnRpZmllciwgSW5kZXhlZERCOjpDb25uZWN0aW9uQ2xvc2VkT25CZWhhbGZPZlNlcnZl
cik7Ci0gICAgdm9pZCBkaWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2UoY29uc3QgSURCUmVz
b3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudChjb25zdCBJREJSZXNvdXJjZUlkZW50
aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBJbmRleGVkREI6OkNvbm5lY3Rpb25DbG9zZWRPbkJl
aGFsZk9mU2VydmVyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZEZpbmlzaEhhbmRsaW5n
VmVyc2lvbkNoYW5nZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRl
bnRpZmllcik7CiAKICAgICB2b2lkIGFib3J0VHJhbnNhY3Rpb25XaXRob3V0Q2FsbGJhY2soVW5p
cXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYpOwogCkBAIC04OCw3ICs4OCw3IEBAIHByaXZhdGU6
CiAgICAgVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlJiwgU2Vy
dmVyT3BlbkRCUmVxdWVzdCYpOwogCiAgICAgV2Vha1B0cjxVbmlxdWVJREJEYXRhYmFzZT4gbV9k
YXRhYmFzZTsKLSAgICBJREJTZXJ2ZXImIG1fc2VydmVyOworICAgIFdlYWtQdHI8VW5pcXVlSURC
RGF0YWJhc2VNYW5hZ2VyPiBtX21hbmFnZXI7CiAgICAgUmVmPElEQkNvbm5lY3Rpb25Ub0NsaWVu
dD4gbV9jb25uZWN0aW9uVG9DbGllbnQ7CiAgICAgSURCUmVzb3VyY2VJZGVudGlmaWVyIG1fb3Bl
blJlcXVlc3RJZGVudGlmaWVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZjgzZWZiNDkwY2EzYmUxODNjMDdkYTBmMWQ2OGE5ZTY0YzlmYjMzMgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9V
bmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuaApAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJREJEYXRhYmFzZUlkZW50aWZpZXIuaCIKKyNpbmNs
dWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBDbGll
bnRPcmlnaW47CisKK25hbWVzcGFjZSBJREJTZXJ2ZXIgeworCitjbGFzcyBJREJCYWNraW5nU3Rv
cmU7CitjbGFzcyBVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb247CitjbGFzcyBVbmlxdWVJREJE
YXRhYmFzZVRyYW5zYWN0aW9uOworCitjbGFzcyBVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIgOiBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8VW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyPiB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgdmlydHVhbCB+VW5pcXVlSURCRGF0
YWJhc2VNYW5hZ2VyKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQ29ubmVjdGlvbihV
bmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVucmVn
aXN0ZXJDb25uZWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgcmVnaXN0ZXJUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0
aW9uJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyVHJhbnNhY3Rpb24oVW5pcXVl
SURCRGF0YWJhc2VUcmFuc2FjdGlvbiYpID0gMDsKKyAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0
cjxJREJCYWNraW5nU3RvcmU+IGNyZWF0ZUJhY2tpbmdTdG9yZShjb25zdCBJREJEYXRhYmFzZUlk
ZW50aWZpZXImKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RTcGFjZShjb25zdCBDbGll
bnRPcmlnaW4mLCB1aW50NjRfdCBzaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
KSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBJREJTZXJ2ZXIKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uY3BwCmlu
ZGV4IDFjYzAyODE3YTEyNGM4ZDBlZDUyZjIxM2FjOGU1MDA2YmE2Yjk2ZGUuLjZlM2NlMDQ0MDZm
Y2FkMzNiY2MxYzllOWY2MTJlMmFmNDEwNjk0MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURC
RGF0YWJhc2VUcmFuc2FjdGlvbi5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2luY2x1ZGUgIklE
Qkl0ZXJhdGVDdXJzb3JEYXRhLmgiCiAjaW5jbHVkZSAiSURCUmVzdWx0RGF0YS5oIgotI2luY2x1
ZGUgIklEQlNlcnZlci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJVbmlxdWVJ
REJEYXRhYmFzZS5oIgogCkBAIC01MCwxMiArNDksMTQgQEAgVW5pcXVlSURCRGF0YWJhc2VUcmFu
c2FjdGlvbjo6VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZUNv
bm4KICAgICBpZiAobV90cmFuc2FjdGlvbkluZm8ubW9kZSgpID09IElEQlRyYW5zYWN0aW9uTW9k
ZTo6VmVyc2lvbmNoYW5nZSkKICAgICAgICAgbV9vcmlnaW5hbERhdGFiYXNlSW5mbyA9IG1ha2VV
bmlxdWU8SURCRGF0YWJhc2VJbmZvPihkYXRhYmFzZS0+aW5mbygpKTsKIAotICAgIGRhdGFiYXNl
Q29ubmVjdGlvbigpLnNlcnZlcigpLT5yZWdpc3RlclRyYW5zYWN0aW9uKCp0aGlzKTsKKyAgICBp
ZiAoYXV0byogbWFuYWdlciA9IGRhdGFiYXNlQ29ubmVjdGlvbigpLm1hbmFnZXIoKSkKKyAgICAg
ICAgbWFuYWdlci0+cmVnaXN0ZXJUcmFuc2FjdGlvbigqdGhpcyk7CiB9CiAKIFVuaXF1ZUlEQkRh
dGFiYXNlVHJhbnNhY3Rpb246On5VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uKCkKIHsKLSAg
ICBkYXRhYmFzZUNvbm5lY3Rpb24oKS5zZXJ2ZXIoKS0+dW5yZWdpc3RlclRyYW5zYWN0aW9uKCp0
aGlzKTsKKyAgICBpZiAoYXV0byogbWFuYWdlciA9IGRhdGFiYXNlQ29ubmVjdGlvbigpLm1hbmFn
ZXIoKSkKKyAgICAgICAgbWFuYWdlci0+dW5yZWdpc3RlclRyYW5zYWN0aW9uKCp0aGlzKTsKIH0K
IAogVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0
aW9uOjpkYXRhYmFzZUNvbm5lY3Rpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRy
YW5zYWN0aW9uLmgKaW5kZXggOTU5NjY1MmFkY2RiYTdhMDQ4YjYxOWY3NGVmMWE5MmNlZWY5ZTBl
NS4uZmJhODVjMTczOGI3MzQyZTEyODgwMGFlYjlkMWRhNDY3ZWU3YTEwMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNl
VHJhbnNhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5oCkBAIC01MSw3ICs1MSw3IEBAIG5hbWVz
cGFjZSBJREJTZXJ2ZXIgewogY2xhc3MgSURCU2VydmVyOwogY2xhc3MgVW5pcXVlSURCRGF0YWJh
c2VDb25uZWN0aW9uOwogCi1jbGFzcyBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uIDogcHVi
bGljIFJlZkNvdW50ZWQ8VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbj4geworY2xhc3MgVW5p
cXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxVbmlxdWVJ
REJEYXRhYmFzZVRyYW5zYWN0aW9uPiwgcHVibGljIFJlZkNvdW50ZWQ8VW5pcXVlSURCRGF0YWJh
c2VUcmFuc2FjdGlvbj4gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8VW5pcXVlSURCRGF0YWJh
c2VUcmFuc2FjdGlvbj4gY3JlYXRlKFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYsIGNvbnN0
IElEQlRyYW5zYWN0aW9uSW5mbyYpOwogCkBAIC01OSwyOSArNTksMjkgQEAgcHVibGljOgogCiAg
ICAgVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiBkYXRhYmFzZUNvbm5lY3Rpb24oKTsKICAg
ICBjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mIGluZm8oKSBjb25zdCB7IHJldHVybiBtX3RyYW5z
YWN0aW9uSW5mbzsgfQotICAgIGJvb2wgaXNWZXJzaW9uQ2hhbmdlKCkgY29uc3Q7CisgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBpc1ZlcnNpb25DaGFuZ2UoKSBjb25zdDsKICAgICBib29sIGlzUmVh
ZE9ubHkoKSBjb25zdDsKIAogICAgIElEQkRhdGFiYXNlSW5mbyogb3JpZ2luYWxEYXRhYmFzZUlu
Zm8oKSBjb25zdDsKIAotICAgIHZvaWQgYWJvcnQoKTsKLSAgICB2b2lkIGFib3J0V2l0aG91dENh
bGxiYWNrKCk7Ci0gICAgdm9pZCBjb21taXQodWludDY0X3QgcGVuZGluZ1JlcXVlc3RDb3VudCk7
Ci0KLSAgICB2b2lkIGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29u
c3QgSURCT2JqZWN0U3RvcmVJbmZvJik7Ci0gICAgdm9pZCBkZWxldGVPYmplY3RTdG9yZShjb25z
dCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lKTsKLSAgICB2
b2lkIHJlbmFtZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgdWludDY0X3Qgb2Jq
ZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUpOwotICAgIHZvaWQgY2xl
YXJPYmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0YSYsIHVpbnQ2NF90IG9iamVjdFN0b3Jl
SWRlbnRpZmllcik7Ci0gICAgdm9pZCBjcmVhdGVJbmRleChjb25zdCBJREJSZXF1ZXN0RGF0YSYs
IGNvbnN0IElEQkluZGV4SW5mbyYpOwotICAgIHZvaWQgZGVsZXRlSW5kZXgoY29uc3QgSURCUmVx
dWVzdERhdGEmLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
aW5kZXhOYW1lKTsKLSAgICB2b2lkIHJlbmFtZUluZGV4KGNvbnN0IElEQlJlcXVlc3REYXRhJiwg
dWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRleElkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgbmV3TmFtZSk7Ci0gICAgdm9pZCBwdXRPckFkZChjb25zdCBJREJSZXF1
ZXN0RGF0YSYsIGNvbnN0IElEQktleURhdGEmLCBjb25zdCBJREJWYWx1ZSYsIEluZGV4ZWREQjo6
T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlKTsKLSAgICB2b2lkIGdldFJlY29yZChjb25zdCBJREJS
ZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkdldFJlY29yZERhdGEmKTsKLSAgICB2b2lkIGdldEFsbFJl
Y29yZHMoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJHZXRBbGxSZWNvcmRzRGF0YSYp
OwotICAgIHZvaWQgZ2V0Q291bnQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlS
YW5nZURhdGEmKTsKLSAgICB2b2lkIGRlbGV0ZVJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYs
IGNvbnN0IElEQktleVJhbmdlRGF0YSYpOwotICAgIHZvaWQgb3BlbkN1cnNvcihjb25zdCBJREJS
ZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkN1cnNvckluZm8mKTsKLSAgICB2b2lkIGl0ZXJhdGVDdXJz
b3IoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJJdGVyYXRlQ3Vyc29yRGF0YSYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWJvcnQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGFib3J0V2l0aG91dENhbGxiYWNrKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb21taXQo
dWludDY0X3QgcGVuZGluZ1JlcXVlc3RDb3VudCk7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCT2JqZWN0
U3RvcmVJbmZvJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkZWxldGVPYmplY3RTdG9yZShj
b25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbmFtZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3RE
YXRhJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05h
bWUpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJPYmplY3RTdG9yZShjb25zdCBJREJS
ZXF1ZXN0RGF0YSYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllcik7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBjcmVhdGVJbmRleChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElE
QkluZGV4SW5mbyYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGVsZXRlSW5kZXgoY29uc3Qg
SURCUmVxdWVzdERhdGEmLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgaW5kZXhOYW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbmFtZUluZGV4KGNv
bnN0IElEQlJlcXVlc3REYXRhJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50
NjRfdCBpbmRleElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSk7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBwdXRPckFkZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktl
eURhdGEmLCBjb25zdCBJREJWYWx1ZSYsIEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVN
b2RlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldFJlY29yZChjb25zdCBJREJSZXF1ZXN0
RGF0YSYsIGNvbnN0IElEQkdldFJlY29yZERhdGEmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGdldEFsbFJlY29yZHMoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJHZXRBbGxSZWNv
cmRzRGF0YSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0Q291bnQoY29uc3QgSURCUmVx
dWVzdERhdGEmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGRlbGV0ZVJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleVJhbmdl
RGF0YSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgb3BlbkN1cnNvcihjb25zdCBJREJSZXF1
ZXN0RGF0YSYsIGNvbnN0IElEQkN1cnNvckluZm8mKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGl0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJJdGVyYXRlQ3Vy
c29yRGF0YSYpOwogCiAgICAgdm9pZCBkaWRBY3RpdmF0ZUluQmFja2luZ1N0b3JlKGNvbnN0IElE
QkVycm9yJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NoYXJlZC9JREJFcnJvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hh
cmVkL0lEQkVycm9yLmgKaW5kZXggZmYxN2M5OGE0MTE1ZGU2MmNhY2M3MGFkMzI1MmJkNmVkZjEx
ZjM5OS4uYjMwYWQzOTE3NmYwM2ZmMGQ2YzkzOThkNmIzZWQxOWNkMmU5OTIxZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkVycm9yLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkVycm9yLmgKQEAg
LTUyLDYgKzUyLDcgQEAgcHVibGljOgogICAgIFN0cmluZyBtZXNzYWdlKCkgY29uc3Q7CiAKICAg
ICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuICFtX2NvZGU7IH0KKyAgICBvcGVyYXRvciBi
b29sKCkgY29uc3QgeyByZXR1cm4gIWlzTnVsbCgpOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCBJ
REJFcnJvciBpc29sYXRlZENvcHkoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3REYXRhLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuaAppbmRleCAwMThj
YjEzZTc1ZWI2NDVkZDExNGUyNGY2ZGJmZWEzNGNmNTViMTY0Li4wMDE3ODdhNjY1OGE0MTc4YjZh
Nzk3MTI4YTA0ZGEzNmI4YWZkZmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuaApAQCAtNTYsOCArNTYsOCBA
QCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgSURCUmVxdWVzdERhdGEgaXNvbGF0ZWRDb3B5
KCkgY29uc3Q7CiAKICAgICBJREJDb25uZWN0aW9uSWRlbnRpZmllciBzZXJ2ZXJDb25uZWN0aW9u
SWRlbnRpZmllcigpIGNvbnN0OwotICAgIElEQlJlc291cmNlSWRlbnRpZmllciByZXF1ZXN0SWRl
bnRpZmllcigpIGNvbnN0OwotICAgIElEQlJlc291cmNlSWRlbnRpZmllciB0cmFuc2FjdGlvbklk
ZW50aWZpZXIoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBJREJSZXNvdXJjZUlkZW50aWZp
ZXIgcmVxdWVzdElkZW50aWZpZXIoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBJREJSZXNv
dXJjZUlkZW50aWZpZXIgdHJhbnNhY3Rpb25JZGVudGlmaWVyKCkgY29uc3Q7CiAgICAgdWludDY0
X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyKCkgY29uc3Q7CiAgICAgdWludDY0X3QgaW5kZXhJZGVu
dGlmaWVyKCkgY29uc3Q7CiAgICAgSW5kZXhlZERCOjpJbmRleFJlY29yZFR5cGUgaW5kZXhSZWNv
cmRUeXBlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zaGFyZWQvSURCUmVzb3VyY2VJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzb3VyY2VJZGVudGlmaWVyLmgKaW5kZXggYmUxNjE5
N2Y2MzRhNTk2YzM5ZTUxMzAyODU5MDY4MzU3NDU4NjgyYS4uYmQzOTU0YTI4OTczY2ViOGE1YmY2
NDhmNGFhNTEyM2YyZWZiZWY0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2hhcmVkL0lEQlJlc291cmNlSWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXNvdXJjZUlkZW50aWZpZXIuaApAQCAt
NDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgSURCUmVzb3VyY2VJZGVudGlmaWVyKGNvbnN0IElE
QkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5JiwgY29uc3QgSURCUmVxdWVzdCYpOwogICAgIGV4
cGxpY2l0IElEQlJlc291cmNlSWRlbnRpZmllcihjb25zdCBJREJTZXJ2ZXI6OklEQkNvbm5lY3Rp
b25Ub0NsaWVudCYpOwogCi0gICAgc3RhdGljIElEQlJlc291cmNlSWRlbnRpZmllciBlbXB0eVZh
bHVlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIElEQlJlc291cmNlSWRlbnRpZmllciBl
bXB0eVZhbHVlKCk7CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QKICAgICB7CiAgICAgICAgIHJl
dHVybiAhbV9yZXNvdXJjZU51bWJlciAmJiAhbV9pZGJDb25uZWN0aW9uSWRlbnRpZmllcjsKQEAg
LTYwLDcgKzYwLDggQEAgcHVibGljOgogICAgICAgICB1aW50NjRfdCBoYXNoQ29kZXNbMl0gPSB7
IG1faWRiQ29ubmVjdGlvbklkZW50aWZpZXIudG9VSW50NjQoKSwgbV9yZXNvdXJjZU51bWJlciB9
OwogICAgICAgICByZXR1cm4gU3RyaW5nSGFzaGVyOjpoYXNoTWVtb3J5PHNpemVvZihoYXNoQ29k
ZXMpPihoYXNoQ29kZXMpOwogICAgIH0KLSAgICAKKworICAgIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBJREJSZXNvdXJjZUlkZW50aWZpZXImIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09
IG90aGVyKTsgfQogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZp
ZXImIG90aGVyKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1faWRiQ29ubmVjdGlvbklk
ZW50aWZpZXIgPT0gb3RoZXIubV9pZGJDb25uZWN0aW9uSWRlbnRpZmllcgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDU2YTg2NTA0
ZTE2YjMwMzMzNWNmYTlmMThlMTk5MDllYjJhNDQ1MjMuLjA5MjBkZTQwOTgwYzg1NTkxNDNmNTJk
MjJmNmU2YTgyZDNjNjUzOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE1NDQsMTAgKzE1NDQsMTAgQEAKIAkJNTExMjNFMkYy
NzY5NDBDQTAwRjlENDFCIC8qIE5vdGlmaWNhdGlvbkRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMTIzRTJDMjc2OTNDMzIwMEY5RDQxQiAvKiBO
b3RpZmljYXRpb25EYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNTExN0YzMEUyNUU2MTAyMDAwMkE5RjFFIC8qIFJlbW90ZUNvbW1hbmRMaXN0
ZW5lckNvY29hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTE3RjMwQzI1RTYxMDFGMDAyQTlGMUUgLyogUmVtb3RlQ29tbWFuZExpc3RlbmVyQ29jb2Eu
aCAqLzsgfTsKIAkJNTExRUMxMjgxQzUwQUFDQTAwMzJGOTgzIC8qIElEQlNlcmlhbGl6YXRpb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMUVDMTI2
MUM1MEFBNTcwMDMyRjk4MyAvKiBJREJTZXJpYWxpemF0aW9uLmggKi87IH07Ci0JCTUxMUVDMTJD
MUM1MEFCQkYwMDMyRjk4MyAvKiBTUUxpdGVJREJUcmFuc2FjdGlvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExRUMxMkExQzUwQUJCQTAwMzJGOTgz
IC8qIFNRTGl0ZUlEQlRyYW5zYWN0aW9uLmggKi87IH07CisJCTUxMUVDMTJDMUM1MEFCQkYwMDMy
Rjk4MyAvKiBTUUxpdGVJREJUcmFuc2FjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTExRUMxMkExQzUwQUJCQTAwMzJGOTgzIC8qIFNRTGl0ZUlE
QlRyYW5zYWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNTExRUMxMzAxQzUwQUJGNTAwMzJGOTgzIC8qIFNRTGl0ZUlEQkN1cnNvci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExRUMxMkUxQzUw
QUJFQzAwMzJGOTgzIC8qIFNRTGl0ZUlEQkN1cnNvci5oICovOyB9OwogCQk1MTIwQkJBRjFGMUNF
Q0U3MDBFRkVCRjEgLyogQ29va2llU3RvcmFnZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTIwQkJBRDFGMUNFNzcwMDBFRkVCRjEgLyog
Q29va2llU3RvcmFnZU9ic2VydmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKLQkJNTEyQkRCNEIxQzQ1NkZGQTAwNjQ5NERGIC8qIFNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTEyQkRCNDkxQzQ1NkZBQjAwNjQ5NERGIC8qIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZS5oICov
OyB9OworCQk1MTJCREI0QjFDNDU2RkZBMDA2NDk0REYgLyogU1FMaXRlSURCQmFja2luZ1N0b3Jl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTJCREI0
OTFDNDU2RkFCMDA2NDk0REYgLyogU1FMaXRlSURCQmFja2luZ1N0b3JlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTEyREQ4RjUwRDkxRTZBRjAw
MEY4OUVFIC8qIExlZ2FjeVdlYkFyY2hpdmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxMkREOEVCMEQ5MUU2QUYwMDBGODlFRSAvKiBMZWdhY3lXZWJB
cmNoaXZlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNTEyREQ4RjYwRDkxRTZBRjAwMEY4OUVFIC8qIEFyY2hpdmUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMkREOEVDMEQ5MUU2QUYwMDBGODlFRSAv
KiBBcmNoaXZlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNTEyREQ4RjgwRDkxRTZBRjAwMEY4OUVFIC8qIEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMkRE
OEVFMEQ5MUU2QUYwMDBGODlFRSAvKiBBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uLmggKi87IH07
CkBAIC0xNTkzLDcgKzE1OTMsNyBAQAogCQk1MTZEN0Q3MjFCQjVGMEJEMDBBRjdDNzcgLyogSURC
Q29ubmVjdGlvblRvQ2xpZW50RGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxNkQ3RDZFMUJCNUYwNjUwMEFGN0M3NyAvKiBJREJDb25uZWN0
aW9uVG9DbGllbnREZWxlZ2F0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTUxNkY3RjZEMUMzMUUzOUEwMEYxMTFEQyAvKiBTZXJ2ZXJPcGVuREJS
ZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTZGN0Y2QzFDMzFDNzlEMDBGMTExREMgLyogU2VydmVyT3BlbkRCUmVxdWVzdC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxNzEzOEYwMUJFRDFE
MUEwMDBENUYwMSAvKiBJbmRleEtleS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTE3MTM4RUUxQkVEMUQxNzAwMEQ1RjAxIC8qIEluZGV4S2V5LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNTE3MTM4Rjgx
QkYxMjhCQjAwMEQ1RjAxIC8qIEluZGV4VmFsdWVTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3MTM4RjYxQkYxMjI2MjAwMEQ1RjAxIC8qIElu
ZGV4VmFsdWVTdG9yZS5oICovOyB9OworCQk1MTcxMzhGODFCRjEyOEJCMDAwRDVGMDEgLyogSW5k
ZXhWYWx1ZVN0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTcxMzhGNjFCRjEyMjYyMDAwRDVGMDEgLyogSW5kZXhWYWx1ZVN0b3JlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE3MTM4RkMxQkYz
QURGNDAwMEQ1RjAxIC8qIElEQkN1cnNvckluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNzEzOEZBMUJGM0FEQUMwMDBENUYwMSAvKiBJREJDdXJz
b3JJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNTE3MTM5MDYxQkY2NERFQzAwMEQ1RjAxIC8qIE1lbW9yeU9iamVjdFN0b3JlQ3Vyc29yLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTcxMzkwNDFC
RjY0REUzMDAwRDVGMDEgLyogTWVtb3J5T2JqZWN0U3RvcmVDdXJzb3IuaCAqLzsgfTsKIAkJNTE3
MTM5MDgxQkY2NERFRjAwMEQ1RjAxIC8qIE1lbW9yeUN1cnNvci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3MTM5MDIxQkY2NERFMzAwMEQ1RjAxIC8q
IE1lbW9yeUN1cnNvci5oICovOyB9OwpAQCAtMTY2OSw3ICsxNjY5LDcgQEAKIAkJNTFCOTE0MTAx
RkQyNzgyRDAwRUUyODU5IC8qIFJlZ2lzdHJhdGlvbkRhdGFiYXNlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUI5MTQwQzFGRDI3ODI1MDBFRTI4NTkg
LyogUmVnaXN0cmF0aW9uRGF0YWJhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk1MUI5MTQxMTFGRDI3ODJEMDBFRTI4NTkgLyogUmVnaXN0cmF0
aW9uU3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxQjkxNDBCMUZEMjc4MjUwMEVFMjg1OSAvKiBSZWdpc3RyYXRpb25TdG9yZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxQkE0QUM0MUJCQjVD
RDgwMERGM0Q2RCAvKiBJREJEYXRhYmFzZUluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkE0QUMyMUJCQjVDQkYwMERGM0Q2RCAvKiBJREJEYXRh
YmFzZUluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwotCQk1MUJBNEFDQjFCQkM1QkQ5MDBERjNENkQgLyogTWVtb3J5SURCQmFja2luZ1N0b3JlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJBNEFDOTFC
QkM1QjlFMDBERjNENkQgLyogTWVtb3J5SURCQmFja2luZ1N0b3JlLmggKi87IH07CisJCTUxQkE0
QUNCMUJCQzVCRDkwMERGM0Q2RCAvKiBNZW1vcnlJREJCYWNraW5nU3RvcmUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkE0QUM5MUJCQzVCOUUwMERG
M0Q2RCAvKiBNZW1vcnlJREJCYWNraW5nU3RvcmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUJBNEFDQzFCQkM1QkREMDBERjNENkQgLyogSURC
QmFja2luZ1N0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MUJBNEFDNzFCQkM1QUQ2MDBERjNENkQgLyogSURCQmFja2luZ1N0b3JlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFCQTk0NzEyM0FD
MzA1MzAwNDQ0ODQ2IC8qIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJBOTQ2RjIzQUMzMDUwMDA0NDQ4NDYg
LyogUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUJDQ0UzMDFGOEYxNzlFMDA2QkEwRUQgLyogU2Vydmlj
ZVdvcmtlclRocmVhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTE3Qzg3MTAxRjhFRTcyRTAwRUI4MDc2IC8qIFNlcnZpY2VXb3JrZXJUaHJlYWQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTY4NSw3
ICsxNjg1LDcgQEAKIAkJNTFFMEJBQkIwREE1NTQ3MTAwQTlFNDE3IC8qIFN0b3JhZ2VFdmVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFMEJBQjkw
REE1NTQ3MTAwQTlFNDE3IC8qIFN0b3JhZ2VFdmVudC5oICovOyB9OwogCQk1MUUwQkFFQjBEQTU1
RDRBMDBBOUU0MTcgLyogSlNTdG9yYWdlRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTBCQUU5MERBNTVENEEwMEE5RTQxNyAvKiBKU1N0b3Jh
Z2VFdmVudC5oICovOyB9OwogCQk1MUUwQkIzODBEQTVBQ0I2MDBBOUU0MTcgLyogU3RvcmFnZU1h
cC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFMEJC
MzYwREE1QUNCNjAwQTlFNDE3IC8qIFN0b3JhZ2VNYXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk1MUUxQkFDMzFCRDgwNjRFMDA1NUQ4MUYgLyog
TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTFCQUMxMUJEODA2NDcwMDU1RDgxRiAvKiBNZW1vcnlC
YWNraW5nU3RvcmVUcmFuc2FjdGlvbi5oICovOyB9OworCQk1MUUxQkFDMzFCRDgwNjRFMDA1NUQ4
MUYgLyogTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTFCQUMxMUJEODA2NDcwMDU1RDgxRiAvKiBN
ZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxRTI2OTM3MUREM0JEOUIwMDZCNkE1OCAvKiBJREJJ
dGVyYXRlQ3Vyc29yRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTFFMjY5MzUxREQzQkQ5MTAwNkI2QTU4IC8qIElEQkl0ZXJhdGVDdXJzb3JEYXRh
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFF
Mzk5MDAxRDZFNDc1MDAwOUM4ODMxIC8qIEdhbWVDb250cm9sbGVyR2FtZXBhZC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFMzk4RkMxRDZFNDc0QjAw
OUM4ODMxIC8qIEdhbWVDb250cm9sbGVyR2FtZXBhZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxRTM5OTAyMUQ2RTQ3NTAwMDlDODgzMSAvKiBH
YW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFMzk4RkUxRDZFNDc0QjAwOUM4ODMxIC8qIEdhbWVDb250
cm9sbGVyR2FtZXBhZFByb3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTE2OTUsNyArMTY5NSw3IEBACiAJCTUxRUNDM0Y4MjAwNTg3QkYw
MDQ4M0VBRSAvKiBNZXNzYWdlUG9ydENoYW5uZWxSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFQ0MzRjEyMDA1ODdCNTAwNDgzRUFFIC8q
IE1lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFFQ0MzRkQyMDA1OTMwRDAwNDgzRUFFIC8qIE1lc3Nh
Z2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MUVDQzNGQjIwMDU5MzAxMDA0ODNFQUUgLyogTWVzc2FnZVBvcnRDaGFu
bmVsUHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk1MUVFN0IzODFBQTUwQjA1MDBGOTJCMjEgLyogUmVzb3VyY2VMb2FkSW5mby5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFRTdCMzcxQUE1
MEIwNTAwRjkyQjIxIC8qIFJlc291cmNlTG9hZEluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk1MUVFQUE3NDFCRUZGQUIxMDAyMTgwMDggLyog
SW5kZXhWYWx1ZUVudHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MUVFQUE3MjFCRUZGQTc5MDAyMTgwMDggLyogSW5kZXhWYWx1ZUVudHJ5LmggKi87
IH07CisJCTUxRUVBQTc0MUJFRkZBQjEwMDIxODAwOCAvKiBJbmRleFZhbHVlRW50cnkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRUVBQTcyMUJFRkZB
NzkwMDIxODAwOCAvKiBJbmRleFZhbHVlRW50cnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUYxNzRGRTFGMzU4OTkyMDBDNzQ5NTAgLyogV29y
a2VyVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTFGMTc0RkMxRjM1ODk4ODAwQzc0OTUwIC8qIFdvcmtlclR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUYxNzUwMzFGMzU4QjNCMDBDNzQ5
NTAgLyogSlNTZXJ2aWNlV29ya2VyVXBkYXRlVmlhQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjE3NTAxMUYzNThCMzYwMEM3NDk1MCAvKiBK
U1NlcnZpY2VXb3JrZXJVcGRhdGVWaWFDYWNoZS5oICovOyB9OwogCQk1MUYxNzUwNjFGMzU4QkY3
MDBDNzQ5NTAgLyogSlNXb3JrZXJUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MUYxNzUwNTFGMzU4QkRFMDBDNzQ5NTAgLyogSlNXb3JrZXJUeXBl
LmggKi87IH07CkBAIC0yOTk1LDYgKzI5OTUsNyBAQAogCQk5M0IyRDgxNjBGOTkyMEQyMDA2QUU2
QjIgLyogU3VkZGVuVGVybWluYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzQjJEODE1MEY5OTIwRDIwMDZBRTZCMiAvKiBTdWRkZW5UZXJtaW5h
dGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTkzQjM4RUMzMjU4MjFEQjQwMDE5OEU2MyAvKiBXZWJTcGVlY2hSZWNvZ25pemVyVGFzay5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCMzhFQkEyNTgy
MTkzQjAwMTk4RTYzIC8qIFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrLmggKi87IH07CiAJCTkzQjM4
RUM0MjU4MjFEQjcwMDE5OEU2MyAvKiBXZWJTcGVlY2hSZWNvZ25pemVyVGFza01vY2suaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjM4RUJCMjU4MjE5
M0QwMDE5OEU2MyAvKiBXZWJTcGVlY2hSZWNvZ25pemVyVGFza01vY2suaCAqLzsgfTsKKwkJOTNC
NjMxRTIyN0FCQTFFNjAwNDQzQTQ0IC8qIFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCNjMxRTAyN0FCQTFF
MjAwNDQzQTQ0IC8qIFVuaXF1ZUlEQkRhdGFiYXNlTWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzQjZBMEU2MEIwQkNBNUMwMEY1MDI3
QSAvKiBDb250ZXh0TWVudS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTNCNkEwRTUwQjBCQ0E1QzAwRjUwMjdBIC8qIENvbnRleHRNZW51LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNCNzBENjQwOUVC
MEM3QzAwOUQ4NDY4IC8qIEpTRE9NQmluZGluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCNzBENDgwOUVCMEM3QzAwOUQ4NDY4IC8qIEpTRE9NQmlu
ZGluZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTkzQjcwRDZBMDlFQjBDN0MwMDlEODQ2OCAvKiBKU0V2ZW50TGlzdGVuZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjcwRDRFMDlFQjBDN0MwMDlE
ODQ2OCAvKiBKU0V2ZW50TGlzdGVuZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtMTI4MjgsNiArMTI4MjksNyBAQAogCQk5M0IzOEVCQTI1ODIx
OTNCMDAxOThFNjMgLyogV2ViU3BlZWNoUmVjb2duaXplclRhc2suaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViU3BlZWNoUmVjb2duaXplclRhc2suaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTNCMzhFQkIyNTgyMTkzRDAwMTk4RTYzIC8qIFdlYlNwZWVjaFJl
Y29nbml6ZXJUYXNrTW9jay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJT
cGVlY2hSZWNvZ25pemVyVGFza01vY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OTNCMzhFQkMyNTgyMTkzRTAwMTk4RTYzIC8qIFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViU3BlZWNoUmVjb2duaXpl
clRhc2subW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzQjYzMUUwMjdBQkExRTIw
MDQ0M0E0NCAvKiBVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVW5pcXVlSURCRGF0YWJhc2VNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTkzQjZBMEU1MEIwQkNBNUMwMEY1MDI3QSAvKiBDb250ZXh0TWVudS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29udGV4dE1lbnUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCNzBENDgwOUVCMEM3QzAwOUQ4NDY4IC8qIEpTRE9N
QmluZGluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01CaW5kaW5n
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQjcwRDREMDlFQjBDN0MwMDlEODQ2
OCAvKiBKU0V2ZW50TGlzdGVuZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTRXZlbnRMaXN0ZW5lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0yMjE1MSw2ICsyMjE1Myw3IEBACiAJCQkJNTE4ODY0REYxQkJBRjMwRjAwRTU0MEM5IC8qIFVu
aXF1ZUlEQkRhdGFiYXNlLmggKi8sCiAJCQkJNTE5OEY3QTIxQkJEQUEyOTAwRTJDQzVGIC8qIFVu
aXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5jcHAgKi8sCiAJCQkJNTE5OEY3QTMxQkJEQUEyOTAw
RTJDQzVGIC8qIFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5oICovLAorCQkJCTkzQjYzMUUw
MjdBQkExRTIwMDQ0M0E0NCAvKiBVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuaCAqLywKIAkJCQk1
MTk4RjdBNjFCQkREMzgxMDBFMkNDNUYgLyogVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5j
cHAgKi8sCiAJCQkJNTE5OEY3QTcxQkJERDM4MTAwRTJDQzVGIC8qIFVuaXF1ZUlEQkRhdGFiYXNl
VHJhbnNhY3Rpb24uaCAqLywKIAkJCSk7CkBAIC0zNzc3MSw2ICszNzc3NCw3IEBACiAJCQkJQTg2
M0UyMDExMzQzNDEyMDAwMjc0OTI2IC8qIFVuaWNvZGVCaWRpLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1MTg4NjRFMTFCQkFGNTc0MDBFNTQwQzkgLyogVW5pcXVlSURCRGF0YWJhc2UuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUxOThGN0E1MUJCREI3OTMwMEUyQ0M1RiAvKiBVbmlxdWVJREJEYXRhYmFz
ZUNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTkzQjYzMUUyMjdBQkExRTYwMDQ0M0E0
NCAvKiBVbmlxdWVJREJEYXRhYmFzZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxOThG
N0E5MUJCREQzODUwMEUyQ0M1RiAvKiBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQlFNEFGQ0ZBNTBEQUYyOUEzMDBGNUY1NUMgLyogVW5pdEJlemllci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQzE4Q0MwQTQyNTgwRUZCMTAwM0Q3NUZCIC8qIFVuaXZlcnNh
bEFjY2Vzc1pvb20uaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApp
bmRleCBjN2IxN2ZkNzA3ODU0YjEyODQ5OGQxMTE4ZjRlNmU3ZDViM2Q4NWZkLi4yODdjMWJmNzQ4
YzgzYzZjMWU2YzcyYmExMjhjNGQwYTFjNjYxMjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcApAQCAtNTIsMTMgKzUyLDEzIEBACiAjaW5jbHVkZSAiTmV0d29ya1NvY2tldENoYW5uZWxN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtTb2NrZXRTdHJlYW0uaCIKICNpbmNsdWRlICJO
ZXR3b3JrU29ja2V0U3RyZWFtTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJOZXR3b3JrU3RvcmFnZU1h
bmFnZXIuaCIKICNpbmNsdWRlICJQaW5nTG9hZC5oIgogI2luY2x1ZGUgIlByZWNvbm5lY3RUYXNr
LmgiCiAjaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyUHJveHkuaCIKICNpbmNs
dWRlICJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJFcnJvcnMuaCIKLSNpbmNsdWRlICJXZWJJ
REJTZXJ2ZXIuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJX
ZWJQcm9jZXNzUG9vbE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmgiCkBAIC00MDgsOCArNDA4LDEyIEBAIGJvb2wgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
CiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnVwZGF0ZVF1b3RhQmFzZWRP
blNwYWNlVXNhZ2VGb3JUZXN0aW5nKGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2luKQogewotICAg
IGF1dG8gc3RvcmFnZVF1b3RhTWFuYWdlciA9IG1fbmV0d29ya1Byb2Nlc3MtPnN0b3JhZ2VRdW90
YU1hbmFnZXIoc2Vzc2lvbklEKCksIG9yaWdpbik7Ci0gICAgc3RvcmFnZVF1b3RhTWFuYWdlci0+
cmVzZXRRdW90YVVwZGF0ZWRCYXNlZE9uVXNhZ2VGb3JUZXN0aW5nKCk7CisgICAgYXV0byogc2Vz
c2lvbiA9IG1fbmV0d29ya1Byb2Nlc3MtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCgpKTsKKyAg
ICBpZiAoIXNlc3Npb24pCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChhdXRvKiBzdG9yYWdl
TWFuYWdlciA9IHNlc3Npb24tPnN0b3JhZ2VNYW5hZ2VyKCkpCisgICAgICAgIHN0b3JhZ2VNYW5h
Z2VyLT5yZXNldFF1b3RhVXBkYXRlZEJhc2VkT25Vc2FnZUZvclRlc3Rpbmcob3JpZ2luKTsKIH0K
IAogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkQ2xvc2UoSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uKQpAQCAtMTAwMSw4ICsxMDA1LDEwIEBAIHZvaWQgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzRm9ySW5kZXhl
ZERCKGNvbnN0CiAgICAgICAgIGZvciAoYXV0byYgZmlsZSA6IGZpbGVSZWZlcmVuY2VzKQogICAg
ICAgICAgICAgZmlsZS0+cmV2b2tlRmlsZUFjY2VzcygpOwogCi0gICAgICAgIGlmIChhdXRvKiBz
ZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oKSkKLSAgICAgICAgICAgIHNlc3Npb24tPmVuc3VyZVdl
YklEQlNlcnZlcigpLnJlZ2lzdGVyVGVtcG9yYXJ5QmxvYkZpbGVQYXRocyhtX2Nvbm5lY3Rpb24s
IGZpbGVQYXRocyk7CisgICAgICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24o
KSkgeworICAgICAgICAgICAgaWYgKGF1dG8qIHN0b3JhZ2VNYW5hZ2VyID0gc2Vzc2lvbi0+c3Rv
cmFnZU1hbmFnZXIoKSkKKyAgICAgICAgICAgICAgICBzdG9yYWdlTWFuYWdlci0+cmVnaXN0ZXJU
ZW1wb3JhcnlCbG9iRmlsZVBhdGhzKG1fY29ubmVjdGlvbiwgZmlsZVBhdGhzKTsKKyAgICAgICAg
fQogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGZpbGVQYXRocykpOwogICAgIH0p
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNw
cAppbmRleCA3Yzc5ZTJhMjA5NzZhMTM5YzdmNjY3ZjExM2M0ODk0NmRlZGQ1NjQxLi4xNzViZDM4
MTY0NzQ5MTZjYzAxMTVjOWQ4ZmYyYzU4NmJkMGUzMWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMjY0LDggKzI2NCw2IEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpCiAgICAgLy8gTWFr
ZSBzdXJlIHdlIGZsdXNoIGFsbCBjb29raWVzIHRvIGRpc2sgYmVmb3JlIGV4aXRpbmcuCiAgICAg
Zm9yRWFjaE5ldHdvcmtTZXNzaW9uKFsmXSAoYXV0byYgc2Vzc2lvbikgewogICAgICAgICBwbGF0
Zm9ybUZsdXNoQ29va2llcyhzZXNzaW9uLnNlc3Npb25JRCgpLCBbY2FsbGJhY2tBZ2dyZWdhdG9y
XSB7IH0pOwotICAgICAgICAvLyBNYWtlIHN1cmUgcmVmZXJlbmNlIHRvIE5ldHdvcmtQcm9jZXNz
IGluIHNwYWNlUmVxdWVzdGVyIGlzIHJlbW92ZWQuCi0gICAgICAgIHNlc3Npb24uY2xvc2VJREJT
ZXJ2ZXIoW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKICAgICB9KTsKIH0KIApAQCAtMzgyLDcg
KzM4MCw2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzKFByb2Nlc3NJZGVudGlmaWVyIGlkZW50CiAgICAgY29ubmVjdGlvbi5zZXRPbkxp
bmVTdGF0ZShOZXR3b3JrU3RhdGVOb3RpZmllcjo6c2luZ2xldG9uKCkub25MaW5lKCkpOwogCiAg
ICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAg
ICAgIHNlc3Npb24tPmVuc3VyZVdlYklEQlNlcnZlcigpLmFkZENvbm5lY3Rpb24oY29ubmVjdGlv
bi5jb25uZWN0aW9uKCksIGlkZW50aWZpZXIpOwogICAgICAgICBpZiAoYXV0byogbWFuYWdlciA9
IHNlc3Npb24tPnN0b3JhZ2VNYW5hZ2VyKCkpCiAgICAgICAgICAgICBtYW5hZ2VyLT5zdGFydFJl
Y2VpdmluZ01lc3NhZ2VGcm9tQ29ubmVjdGlvbihjb25uZWN0aW9uLmNvbm5lY3Rpb24oKSk7CiAg
ICAgfQpAQCAtNDA2LDggKzQwMyw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmFkZFdlYnNpdGVE
YXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzCiAgICAgYWRk
U2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXIoc2Vzc2lvbklELCBwYXJhbWV0ZXJzLnBlck9yaWdp
blN0b3JhZ2VRdW90YSwgcGFyYW1ldGVycy5wZXJUaGlyZFBhcnR5T3JpZ2luU3RvcmFnZVF1b3Rh
LCBwYXJhbWV0ZXJzLmNhY2hlU3RvcmFnZURpcmVjdG9yeSwgcGFyYW1ldGVycy5jYWNoZVN0b3Jh
Z2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogCiAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBu
ZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIHNlc3Npb24tPmFkZFN0b3JhZ2VN
YW5hZ2VyU2Vzc2lvbihwYXJhbWV0ZXJzLmdlbmVyYWxTdG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0
ZXJzLmdlbmVyYWxTdG9yYWdlRGlyZWN0b3J5SGFuZGxlLCBwYXJhbWV0ZXJzLmxvY2FsU3RvcmFn
ZURpcmVjdG9yeSwgcGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5k
bGUpOwotICAgICAgICBzZXNzaW9uLT5hZGRJbmRleGVkRGF0YWJhc2VTZXNzaW9uKHBhcmFtZXRl
cnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURp
cmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CisgICAgICAgIHNlc3Npb24tPmFkZFN0b3JhZ2VNYW5h
Z2VyU2Vzc2lvbihwYXJhbWV0ZXJzLmdlbmVyYWxTdG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0ZXJz
LmdlbmVyYWxTdG9yYWdlRGlyZWN0b3J5SGFuZGxlLCBwYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURp
cmVjdG9yeSwgcGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUs
IHBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmluZGV4ZWRE
YXRhYmFzZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSwgcGFyYW1ldGVycy5jYWNoZVN0b3JhZ2VE
aXJlY3RvcnksIHBhcmFtZXRlcnMucGVyT3JpZ2luU3RvcmFnZVF1b3RhLCBwYXJhbWV0ZXJzLnBl
clRoaXJkUGFydHlPcmlnaW5TdG9yYWdlUXVvdGEpOwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKICAgICAgICAgc2Vzc2lvbi0+YWRkU2VydmljZVdvcmtlclNlc3Npb24ocGFyYW1ldGVycy5z
ZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkLCBXVEZNb3ZlKHBhcmFt
ZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSksIHBhcmFtZXRlcnMuc2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAjZW5kaWYK
QEAgLTE0NTIsMTMgKzE0NDgsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpmZXRjaFdlYnNpdGVE
YXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdAogICAgICAgICBj
YWxsYmFja0FnZ3JlZ2F0b3ItPm1fd2Vic2l0ZURhdGEuaG9zdE5hbWVzV2l0aEhTVFNDYWNoZSA9
IGhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUoc2Vzc2lvbklEKTsKICNlbmRpZgogCi0gICAgaWYgKHdl
YnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFz
ZXMpICYmIHNlc3Npb24gJiYgc2Vzc2lvbi0+aGFzSURCRGF0YWJhc2VQYXRoKCkpIHsKLSAgICAg
ICAgc2Vzc2lvbi0+ZW5zdXJlV2ViSURCU2VydmVyKCkuZ2V0T3JpZ2lucyhbY2FsbGJhY2tBZ2dy
ZWdhdG9yXShhdXRvJiYgb3JpZ2lucykgewotICAgICAgICAgICAgd2hpbGUgKCFvcmlnaW5zLmlz
RW1wdHkoKSkKLSAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fd2Vic2l0ZURh
dGEuZW50cmllcy5hcHBlbmQoeyBvcmlnaW5zLnRha2VBbnkoKSwgV2Vic2l0ZURhdGFUeXBlOjpJ
bmRleGVkREJEYXRhYmFzZXMsIDAgfSk7Ci0gICAgICAgIH0pOwotICAgIH0KLQogI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJz
aXRlRGF0YVR5cGU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zKSAmJiBzZXNzaW9uICYmIHNl
c3Npb24tPmhhc1NlcnZpY2VXb3JrZXJEYXRhYmFzZVBhdGgoKSkgewogICAgICAgICBzZXNzaW9u
LT5lbnN1cmVTV1NlcnZlcigpLmdldE9yaWdpbnNXaXRoUmVnaXN0cmF0aW9ucyhbY2FsbGJhY2tB
Z2dyZWdhdG9yXShjb25zdCBIYXNoU2V0PFNlY3VyaXR5T3JpZ2luRGF0YT4mIHNlY3VyaXR5T3Jp
Z2lucykgbXV0YWJsZSB7CkBAIC0xNTI1LDkgKzE1MTQsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
OjpkZWxldGVXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxX
ZWJzaQogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6
RE9NQ2FjaGUpICYmIHNlc3Npb24pCiAgICAgICAgIENhY2hlU3RvcmFnZTo6RW5naW5lOjpjbGVh
ckFsbENhY2hlcygqc2Vzc2lvbiwgW2NsZWFyVGFza3NIYW5kbGVyXSB7IH0pOwogCi0gICAgaWYg
KHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRh
YmFzZXMpICYmICFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSAmJiBzZXNzaW9uKQotICAgICAgICBz
ZXNzaW9uLT5lbnN1cmVXZWJJREJTZXJ2ZXIoKS5jbG9zZUFuZERlbGV0ZURhdGFiYXNlc01vZGlm
aWVkU2luY2UobW9kaWZpZWRTaW5jZSwgW2NsZWFyVGFza3NIYW5kbGVyXSB7IH0pOwotCiAjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGJvb2wgY2xlYXJTZXJ2aWNlV29ya2VycyA9IHdl
YnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSkgfHwgd2Vi
c2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25zKTsKICAgICBpZiAoY2xlYXJTZXJ2aWNlV29ya2VycyAmJiAhc2Vzc2lvbklELmlz
RXBoZW1lcmFsKCkgJiYgc2Vzc2lvbikKQEAgLTE2MjAsOSArMTYwNiw2IEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIE9wdGlvCiAgICAgICAgICAgICBDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6Y2xlYXJDYWNo
ZXNGb3JPcmlnaW4oKnNlc3Npb24sIFNlY3VyaXR5T3JpZ2luRGF0YSB7IG9yaWdpbkRhdGEgfSwg
W2NsZWFyVGFza3NIYW5kbGVyXSB7IH0pOwogICAgIH0KIAotICAgIGlmICh3ZWJzaXRlRGF0YVR5
cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKSAmJiAhc2Vz
c2lvbklELmlzRXBoZW1lcmFsKCkgJiYgc2Vzc2lvbikKLSAgICAgICAgc2Vzc2lvbi0+ZW5zdXJl
V2ViSURCU2VydmVyKCkuY2xvc2VBbmREZWxldGVEYXRhYmFzZXNGb3JPcmlnaW5zKG9yaWdpbkRh
dGFzLCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7Ci0KICNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCiAgICAgYm9vbCBjbGVhclNlcnZpY2VXb3JrZXJzID0gd2Vic2l0ZURhdGFUeXBlcy5jb250
YWlucyhXZWJzaXRlRGF0YVR5cGU6OkRPTUNhY2hlKSB8fCB3ZWJzaXRlRGF0YVR5cGVzLmNvbnRh
aW5zKFdlYnNpdGVEYXRhVHlwZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMpOwogICAgIGlm
IChjbGVhclNlcnZpY2VXb3JrZXJzICYmICFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSAmJiBzZXNz
aW9uKSB7CkBAIC0xODExLDE3ICsxNzk0LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRl
QW5kUmVzdHJpY3RXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhQQUw6OlNlc3MKICAg
ICAgICAgICAgIH0KICAgICAgICAgfSk7CiAgICAgfQotCi0gICAgaWYgKHdlYnNpdGVEYXRhVHlw
ZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpICYmIHNlc3Np
b24gJiYgc2Vzc2lvbi0+aGFzSURCRGF0YWJhc2VQYXRoKCkpIHsKLSAgICAgICAgc2Vzc2lvbi0+
ZW5zdXJlV2ViSURCU2VydmVyKCkuZ2V0T3JpZ2lucyhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJl
ZiB7ICp0aGlzIH0sIHNlc3Npb25JRCwgY2FsbGJhY2tBZ2dyZWdhdG9yLCBkb21haW5zVG9EZWxl
dGVBbGxOb25Db29raWVXZWJzaXRlRGF0YUZvcl0oYXV0byYmIG9yaWdpbnMpIHsKLSAgICAgICAg
ICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOwotICAgICAgICAg
ICAgaWYgKCFzZXNzaW9uIHx8ICFzZXNzaW9uLT53ZWJJREJTZXJ2ZXIoKSkKLSAgICAgICAgICAg
ICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIGF1dG8gb3JpZ2luc1RvRGVsZXRlID0gZmlsdGVy
Rm9yUmVnaXN0cmFibGVEb21haW5zKG9yaWdpbnMsIGRvbWFpbnNUb0RlbGV0ZUFsbE5vbkNvb2tp
ZVdlYnNpdGVEYXRhRm9yLCBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fZG9tYWlucyk7Ci0gICAgICAg
ICAgICBzZXNzaW9uLT53ZWJJREJTZXJ2ZXIoKS0+Y2xvc2VBbmREZWxldGVEYXRhYmFzZXNGb3JP
cmlnaW5zKG9yaWdpbnNUb0RlbGV0ZSwgW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKLSAgICAg
ICAgfSk7Ci0gICAgfQogICAgIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBib29s
IGNsZWFyU2VydmljZVdvcmtlcnMgPSB3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVE
YXRhVHlwZTo6RE9NQ2FjaGUpIHx8IHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURh
dGFUeXBlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucyk7CkBAIC0xOTU4LDEzICsxOTMwLDYg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVnaXN0cmFibGVEb21haW5zV2l0aFdlYnNpdGVEYXRh
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwKICAgICAgICAgfSk7CiAgICAgfQogICAgIAotICAg
IGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERC
RGF0YWJhc2VzKSAmJiBzZXNzaW9uICYmIHNlc3Npb24tPmhhc0lEQkRhdGFiYXNlUGF0aCgpKSB7
Ci0gICAgICAgIHNlc3Npb24tPmVuc3VyZVdlYklEQlNlcnZlcigpLmdldE9yaWdpbnMoW2NhbGxi
YWNrQWdncmVnYXRvcl0oYXV0byYmIG9yaWdpbnMpIHsKLSAgICAgICAgICAgIHdoaWxlICghb3Jp
Z2lucy5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX3dl
YnNpdGVEYXRhLmVudHJpZXMuYXBwZW5kKHsgb3JpZ2lucy50YWtlQW55KCksIFdlYnNpdGVEYXRh
VHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzLCAwIH0pOwotICAgICAgICB9KTsKLSAgICB9Ci0gICAg
CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNv
bnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMpICYmIHNl
c3Npb24gJiYgc2Vzc2lvbi0+aGFzU2VydmljZVdvcmtlckRhdGFiYXNlUGF0aCgpKSB7CiAgICAg
ICAgIHNlc3Npb24tPmVuc3VyZVNXU2VydmVyKCkuZ2V0T3JpZ2luc1dpdGhSZWdpc3RyYXRpb25z
KFtjYWxsYmFja0FnZ3JlZ2F0b3JdKGNvbnN0IEhhc2hTZXQ8U2VjdXJpdHlPcmlnaW5EYXRhPiYg
c2VjdXJpdHlPcmlnaW5zKSBtdXRhYmxlIHsKQEAgLTIxMjksNDMgKzIwOTQsMTAgQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6cHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseUZvclRlc3RpbmdTeW5j
KENvbXBsZXRpb25IYW5kbGUKICAgICBwcmVwYXJlVG9TdXNwZW5kKHRydWUsIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6c3VzcGVuZElEQlNl
cnZlcnMoYm9vbCBpc1N1c3BlbnNpb25JbW1pbmVudCkKLXsKLSAgICBtX3Nob3VsZFN1c3BlbmRJ
REJTZXJ2ZXJzID0gdHJ1ZTsKLSAgICArK21fc3VzcGVuc2lvbklkZW50aWZpZXI7Ci0KLSAgICBi
b29sIGFsbFN1c3BlbmRlZCA9IHRydWU7Ci0gICAgYXV0byBjb25kaXRpb24gPSBpc1N1c3BlbnNp
b25JbW1pbmVudCA/IFdlYklEQlNlcnZlcjo6U3VzcGVuc2lvbkNvbmRpdGlvbjo6QWx3YXlzIDog
V2ViSURCU2VydmVyOjpTdXNwZW5zaW9uQ29uZGl0aW9uOjpJZklkbGU7Ci0gICAgZm9yRWFjaE5l
dHdvcmtTZXNzaW9uKFsmXShhdXRvJiBzZXNzaW9uKSB7Ci0gICAgICAgIGlmIChhdXRvKiBzZXJ2
ZXIgPSBzZXNzaW9uLndlYklEQlNlcnZlcigpKQotICAgICAgICAgICAgYWxsU3VzcGVuZGVkICY9
IHNlcnZlci0+c3VzcGVuZChjb25kaXRpb24pOwotICAgIH0pOwotCi0gICAgaWYgKGFsbFN1c3Bl
bmRlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoQWZ0
ZXIoNV9zLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgc3VzcGVuc2lvbklk
ZW50aWZpZXIgPSBtX3N1c3BlbnNpb25JZGVudGlmaWVyXSB7Ci0gICAgICAgIGlmICghd2Vha1Ro
aXMpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKCFtX3Nob3VsZFN1c3BlbmRJ
REJTZXJ2ZXJzIHx8IHN1c3BlbnNpb25JZGVudGlmaWVyICE9IG1fc3VzcGVuc2lvbklkZW50aWZp
ZXIpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgZm9yRWFjaE5ldHdvcmtTZXNzaW9u
KFtdKGF1dG8mIHNlc3Npb24pIHsKLSAgICAgICAgICAgIGlmIChhdXRvKiBzZXJ2ZXIgPSBzZXNz
aW9uLndlYklEQlNlcnZlcigpKQotICAgICAgICAgICAgICAgIHNlcnZlci0+c3VzcGVuZChXZWJJ
REJTZXJ2ZXI6OlN1c3BlbnNpb25Db25kaXRpb246OkFsd2F5cyk7Ci0gICAgICAgIH0pOwotICAg
IH0pOwotfQotCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5kKGJvb2wgaXNT
dXNwZW5zaW9uSW1taW5lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gTmV0
d29ya1Byb2Nlc3M6OnByZXBhcmVUb1N1c3BlbmQoKSwgaXNTdXNwZW5zaW9uSW1taW5lbnQ9JWQi
LCB0aGlzLCBpc1N1c3BlbnNpb25JbW1pbmVudCk7CiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQotICAgIHN1c3BlbmRJREJTZXJ2ZXJzKGlzU3VzcGVuc2lvbkltbWluZW50KTsKLSNlbmRpZgot
CiAgICAgbG93TWVtb3J5SGFuZGxlcihDcml0aWNhbDo6WWVzKTsKIAogICAgIFJlZlB0cjxDYWxs
YmFja0FnZ3JlZ2F0b3I+IGNhbGxiYWNrQWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6
Y3JlYXRlKFt0aGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSgpIG11dGFibGUgewpAQCAtMjIyMywxOCArMjE1NSwxMCBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpyZXN1bWUoKQogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICAgICAgaWYgKGF1
dG8qIHN3U2VydmVyID0gc2Vzc2lvbi5zd1NlcnZlcigpKQogICAgICAgICAgICAgc3dTZXJ2ZXIt
PmVuZFN1c3BlbnNpb24oKTsKLSNlbmRpZgotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAg
ICAgIGlmIChhdXRvKiBzZXJ2ZXIgPSBzZXNzaW9uLndlYklEQlNlcnZlcigpKQotICAgICAgICAg
ICAgc2VydmVyLT5yZXN1bWUoKTsKICNlbmRpZgogICAgICAgICBpZiAoYXV0byogbWFuYWdlciA9
IHNlc3Npb24uc3RvcmFnZU1hbmFnZXIoKSkKICAgICAgICAgICAgIG1hbmFnZXItPnJlc3VtZSgp
OwogICAgIH0pOwotCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBtX3Nob3VsZFN1c3Bl
bmRJREJTZXJ2ZXJzID0gZmFsc2U7Ci0jZW5kaWYKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6
cHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKQEAgLTIyODEsMTIgKzIyMDUsMTUg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c3luY0xvY2FsU3RvcmFnZShDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmQKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVzZXRR
dW90YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXNzaW9uU3Rv
cmFnZVF1b3RhTWFuYWdlcnNMb2NrIH07Ci0gICAgaWYgKGF1dG8qIHNlc3Npb25TdG9yYWdlUXVv
dGFNYW5hZ2VyID0gbV9zZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlcnMuZ2V0KHNlc3Npb25JRCkp
IHsKLSAgICAgICAgZm9yIChhdXRvIHN0b3JhZ2VRdW90YU1hbmFnZXIgOiBzZXNzaW9uU3RvcmFn
ZVF1b3RhTWFuYWdlci0+ZXhpc3RpbmdTdG9yYWdlUXVvdGFNYW5hZ2VycygpKQotICAgICAgICAg
ICAgc3RvcmFnZVF1b3RhTWFuYWdlci0+cmVzZXRRdW90YUZvclRlc3RpbmcoKTsKLSAgICB9Ci0g
ICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Np
b24oc2Vzc2lvbklEKTsKKyAgICBpZiAoIXNlc3Npb24pCisgICAgICAgIHJldHVybiBjb21wbGV0
aW9uSGFuZGxlcigpOworCisgICAgYXV0byogc3RvcmFnZU1hbmFnZXIgPSBzZXNzaW9uLT5zdG9y
YWdlTWFuYWdlcigpOworICAgIGlmICghc3RvcmFnZU1hbmFnZXIpCisgICAgICAgIHJldHVybiBj
b21wbGV0aW9uSGFuZGxlcigpOworCisgICAgc3RvcmFnZU1hbmFnZXItPnJlc2V0UXVvdGFGb3JU
ZXN0aW5nKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6Y2xlYXJTdG9yYWdlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMjI5OCw2ICsyMjI1LDE2IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNsZWFyU3RvcmFnZShQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9
CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmRpZEluY3JlYXNlUXVvdGEoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbiwgUXVvdGFJbmNyZWFzZVJlcXVl
c3RJZGVudGlmaWVyIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IG5ld1F1b3Rh
KQoreworICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOworICAg
IGlmICghc2Vzc2lvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGF1dG8qIG1hbmFnZXIg
PSBzZXNzaW9uLT5zdG9yYWdlTWFuYWdlcigpKQorICAgICAgICBtYW5hZ2VyLT5kaWRJbmNyZWFz
ZVF1b3RhKG9yaWdpbiwgaWRlbnRpZmllciwgbmV3UXVvdGEpOworfQorCiB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpyZW5hbWVPcmlnaW5JbldlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgY29uc3QgVVJMJiBvbGROYW1lLCBjb25zdCBVUkwmIG5ld05hbWUsIE9wdGlvblNldDxXZWJz
aXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8gYWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRv
cjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKQEAgLTIzMTAsOSArMjI0Nyw2
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlbmFtZU9yaWdpbkluV2Vic2l0ZURhdGEoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVCiAgICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtT
ZXNzaW9uKHNlc3Npb25JRCk7CiAgICAgaWYgKGF1dG8qIG1hbmFnZXIgPSBzZXNzaW9uID8gc2Vz
c2lvbi0+c3RvcmFnZU1hbmFnZXIoKSA6IG51bGxwdHIpCiAgICAgICAgIG1hbmFnZXItPm1vdmVE
YXRhKG9sZE9yaWdpbiwgbmV3T3JpZ2luLCBbYWdncmVnYXRvcl0geyB9KTsKLQotICAgIGlmIChk
YXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpICYm
IHNlc3Npb24gJiYgc2Vzc2lvbi0+aGFzSURCRGF0YWJhc2VQYXRoKCkpCi0gICAgICAgIHNlc3Np
b24tPmVuc3VyZVdlYklEQlNlcnZlcigpLnJlbmFtZU9yaWdpbihvbGRPcmlnaW4sIG5ld09yaWdp
biwgW2FnZ3JlZ2F0b3JdIHsgfSk7CiB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCkBA
IC0yMzcyLDcgKzIzMDYsOCBAQCBSZWZQdHI8U3RvcmFnZVF1b3RhTWFuYWdlcj4gTmV0d29ya1By
b2Nlc3M6OnN0b3JhZ2VRdW90YU1hbmFnZXIoUEFMOjpTZXNzaW9uSUQgcwogICAgIFN0b3JhZ2VR
dW90YU1hbmFnZXI6OlVzYWdlR2V0dGVyIHVzYWdlR2V0dGVyID0gW2NhY2hlUm9vdFBhdGggPSBz
ZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlci0+Y2FjaGVSb290UGF0aCgpLmlzb2xhdGVkQ29weSgp
LCBpZGJSb290UGF0aCA9IGlkYlJvb3RQYXRoLmlzb2xhdGVkQ29weSgpLCBvcmlnaW4gPSBvcmln
aW4uaXNvbGF0ZWRDb3B5KCldKCkgewogICAgICAgICBBU1NFUlQoIWlzTWFpblJ1bkxvb3AoKSk7
CiAKLSAgICAgICAgcmV0dXJuIENhY2hlU3RvcmFnZTo6RW5naW5lOjpkaXNrVXNhZ2UoY2FjaGVS
b290UGF0aCwgb3JpZ2luKSArIElEQlNlcnZlcjo6SURCU2VydmVyOjpkaXNrVXNhZ2UoaWRiUm9v
dFBhdGgsIG9yaWdpbik7CisgICAgICAgIGF1dG8gY2FjaGVTdG9yYWdlUGF0aCA9IENhY2hlU3Rv
cmFnZTo6RW5naW5lOjpzdG9yYWdlUGF0aChjYWNoZVJvb3RQYXRoLCBvcmlnaW4pOworICAgICAg
ICByZXR1cm4gQ2FjaGVTdG9yYWdlOjpFbmdpbmU6OmRpc2tVc2FnZShjYWNoZVN0b3JhZ2VQYXRo
KSArIElEQlNlcnZlcjo6SURCU2VydmVyOjpkaXNrVXNhZ2UoaWRiUm9vdFBhdGgsIG9yaWdpbik7
CiAgICAgfTsKICAgICBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpRdW90YUluY3JlYXNlUmVxdWVzdGVy
IHF1b3RhSW5jcmVhc2VSZXF1ZXN0ZXIgPSBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRo
aXMgfSwgc2Vzc2lvbklELCBvcmlnaW5dICh1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90
IGN1cnJlbnRTcGFjZSwgdWludDY0X3QgcmVxdWVzdGVkSW5jcmVhc2UsIGF1dG8mJiBjYWxsYmFj
aykgewogICAgICAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgpKTsKQEAgLTI1ODYsOCArMjUyMSw2
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlbW92ZUtlcHRBbGl2ZUxvYWQoTmV0d29ya1Jlc291
cmNlTG9hZGVyJiBsb2FkZXIpCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjb25uZWN0aW9uVG9XZWJQ
cm9jZXNzQ2xvc2VkKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklEKQogewogICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vz
c2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byogc2VydmVyID0gc2Vzc2lvbi0+d2ViSURCU2Vy
dmVyKCkpCi0gICAgICAgICAgICBzZXJ2ZXItPnJlbW92ZUNvbm5lY3Rpb24oY29ubmVjdGlvbik7
CiAgICAgICAgIGlmIChhdXRvKiBtYW5hZ2VyID0gc2Vzc2lvbi0+c3RvcmFnZU1hbmFnZXIoKSkK
ICAgICAgICAgICAgIG1hbmFnZXItPnN0b3BSZWNlaXZpbmdNZXNzYWdlRnJvbUNvbm5lY3Rpb24o
Y29ubmVjdGlvbik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5oCmluZGV4IDc4Nzc5MjdhMTdjNTU5NmViMDNiZDRhY2Y0ZDU4ZTQxOGFjOGJh
MjMuLjBmODUzM2VkMTNkZDI2Mjc3YTZkZDUyYWI2ZGFiZTIwYzNlMDg4MDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTMzLDYgKzMzLDcg
QEAKICNpbmNsdWRlICJMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuaCIKICNpbmNsdWRlICJO
ZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJj
ZUxvYWRJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlm
aWVyLmgiCiAjaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyUHJveHkuaCIKICNp
bmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5SWRlbnRp
Zmllci5oIgpAQCAtMjg4LDEyICsyODksMTEgQEAgcHVibGljOgogICAgIE5ldHdvcmtDb250ZW50
UnVsZUxpc3RNYW5hZ2VyJiBuZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcigpIHsgcmV0dXJu
IG1fbmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXI7IH0KICNlbmRpZgogCi0gICAgYm9vbCBz
aG91bGRTdXNwZW5kSURCU2VydmVycygpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkU3VzcGVuZElE
QlNlcnZlcnM7IH0KLQogICAgIHZvaWQgc3luY0xvY2FsU3RvcmFnZShDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwogCiAgICAgdm9pZCByZXNldFF1b3RhKFBBTDo6U2Vzc2lvbklELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgY2xlYXJTdG9yYWdlKFBBTDo6U2Vz
c2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgZGlkSW5jcmVh
c2VRdW90YShQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgUXVv
dGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBuZXdR
dW90YSk7CiAgICAgdm9pZCByZW5hbWVPcmlnaW5JbldlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklE
LCBjb25zdCBVUkwmLCBjb25zdCBVUkwmLCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkBA
IC00NzMsOCArNDczLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lQXNO
b0FjY2Vzcyhjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1l
QXNDT1JTRW5hYmxlZChjb25zdCBTdHJpbmcmKSBjb25zdDsKIAotICAgIHZvaWQgc3VzcGVuZElE
QlNlcnZlcnMoYm9vbCBpc1N1c3BlbnNpb25JbW1pbmVudCk7Ci0KICNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIHZvaWQgc2V0SXNIb2xkaW5nTG9ja2VkRmlsZXMoYm9vbCk7CiAjZW5kaWYK
QEAgLTQ4Miw2ICs0ODAsNyBAQCBwcml2YXRlOgogICAgIGNsYXNzIFNlc3Npb25TdG9yYWdlUXVv
dGFNYW5hZ2VyIHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGlj
OgorICAgICAgICBTZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlcigpID0gZGVsZXRlOwogICAgICAg
ICBTZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlcihjb25zdCBTdHJpbmcmIGNhY2hlUm9vdFBhdGgs
IHVpbnQ2NF90IGRlZmF1bHRRdW90YSwgdWludDY0X3QgZGVmYXVsdFRoaXJkUGFydHlRdW90YSkK
ICAgICAgICAgICAgIDogbV9jYWNoZVJvb3RQYXRoKGNhY2hlUm9vdFBhdGgpCiAgICAgICAgICAg
ICAsIG1fZGVmYXVsdFF1b3RhKGRlZmF1bHRRdW90YSkKQEAgLTUwOCw4ICs1MDcsOCBAQCBwcml2
YXRlOgogICAgIHByaXZhdGU6CiAgICAgICAgIFN0cmluZyBtX2NhY2hlUm9vdFBhdGg7CiAgICAg
ICAgIFN0cmluZyBtX2lkYlJvb3RQYXRoOwotICAgICAgICB1aW50NjRfdCBtX2RlZmF1bHRRdW90
YSB7IFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6OmRlZmF1bHRRdW90YSgpIH07Ci0gICAg
ICAgIHVpbnQ2NF90IG1fZGVmYXVsdFRoaXJkUGFydHlRdW90YSB7IFdlYkNvcmU6OlN0b3JhZ2VR
dW90YU1hbmFnZXI6OmRlZmF1bHRUaGlyZFBhcnR5UXVvdGEoKSB9OworICAgICAgICB1aW50NjRf
dCBtX2RlZmF1bHRRdW90YTsKKyAgICAgICAgdWludDY0X3QgbV9kZWZhdWx0VGhpcmRQYXJ0eVF1
b3RhOwogICAgICAgICBIYXNoTWFwPFdlYkNvcmU6OkNsaWVudE9yaWdpbiwgUmVmUHRyPFdlYkNv
cmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI+PiBtX3N0b3JhZ2VRdW90YU1hbmFnZXJzOwogICAgIH07
CiAgICAgdm9pZCBhZGRTZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlcihQQUw6OlNlc3Npb25JRCwg
dWludDY0X3QgZGVmYXVsdFF1b3RhLCB1aW50NjRfdCBkZWZhdWx0VGhpcmRQYXJ0eVF1b3RhLCBj
b25zdCBTdHJpbmcmIGNhY2hlUm9vdFBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYpOwpA
QCAtNTQ5LDkgKzU0OCw2IEBAIHByaXZhdGU6CiAgICAgV2ViU1FMaXRlRGF0YWJhc2VUcmFja2Vy
IG1fd2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyOwogICAgIFJlZlB0cjxQcm9jZXNzQXNzZXJ0aW9u
PiBtX2hvbGRpbmdMb2NrZWRGaWxlQXNzZXJ0aW9uOwogI2VuZGlmCi0KLSAgICBib29sIG1fc2hv
dWxkU3VzcGVuZElEQlNlcnZlcnMgeyBmYWxzZSB9OwotICAgIHVpbnQ2NF90IG1fc3VzcGVuc2lv
bklkZW50aWZpZXIgeyAwIH07CiAgICAgCiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAgICAgUmVmUHRy
PFJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlclByb3h5PiBtX3J0Y0RhdGFDaGFubmVsUHJveHk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5tZXNzYWdlcy5pbgppbmRleCA2MzdlMTU5ZjE4NjM5M2JlYzVjYzA1YWI1YmQ1NzgwYmU4YzZm
Y2U0Li42MzFlMmI2MDczYzAxOTIxMzA2OGMyMDk2YjgyN2IyNzlkYmM3ZGUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2Fn
ZXMuaW4KQEAgLTE3OSw2ICsxNzksNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdh
Y3lSZWNlaXZlciB7CiAKICAgICBSZXNldFF1b3RhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkg
LT4gKCkgQXN5bmMKICAgICBDbGVhclN0b3JhZ2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAt
PiAoKSBBc3luYworICAgIERpZEluY3JlYXNlUXVvdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBzdHJ1Y3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbiwgV2ViS2l0OjpRdW90YUluY3Jl
YXNlUmVxdWVzdElkZW50aWZpZXIgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4g
bmV3UXVvdGEpCiAgICAgCiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIEhhc0Fw
cEJvdW5kU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+IChib29sIGhhc0FwcEJv
dW5kU2Vzc2lvbikgQXN5bmMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrU2Vzc2lvbi5jcHAKaW5kZXggZDc2MTYyODUwY2FkODQzOGYwMDg4OTA1M2Y3ZWRjODJmM2Uz
M2EzZC4uNGE3MTk0MWNhZTcwNmQ3MzBiYWUyMGIyODBlM2Q4ZmY3NWQ5NDUzMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKQEAgLTIwNSw4
ICsyMDUsNiBAQCB2b2lkIE5ldHdvcmtTZXNzaW9uOjppbnZhbGlkYXRlQW5kQ2FuY2VsKCkKICAg
ICBpZiAobV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKQogICAgICAgICBtX3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MtPmludmFsaWRhdGVBbmRDYW5jZWwoKTsKICNlbmRpZgotICAgIGlmIChhdXRvIHNl
cnZlciA9IHN0ZDo6ZXhjaGFuZ2UobV93ZWJJREJTZXJ2ZXIsIG51bGxwdHIpKQotICAgICAgICBz
ZXJ2ZXItPmNsb3NlKCk7CiAgICAgaWYgKGF1dG8gbWFuYWdlciA9IHN0ZDo6ZXhjaGFuZ2UobV9z
dG9yYWdlTWFuYWdlciwgbnVsbHB0cikpCiAgICAgICAgIG1hbmFnZXItPmNsb3NlKCk7CiAgICAg
bV9jYWNoZUVuZ2luZSA9IG51bGxwdHI7CkBAIC02NjEsNTUgKzY1OSwxOCBAQCBXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXImIE5ldHdvcmtTZXNzaW9uOjplbnN1cmVTaGFyZWRXb3JrZXJTZXJ2ZXIoKQog
ICAgIHJldHVybiAqbV9zaGFyZWRXb3JrZXJTZXJ2ZXI7CiB9CiAKLVdlYklEQlNlcnZlciYgTmV0
d29ya1Nlc3Npb246OmVuc3VyZVdlYklEQlNlcnZlcigpCi17Ci0gICAgaWYgKCFtX3dlYklEQlNl
cnZlcikgewotICAgICAgICBTdHJpbmcgcGF0aDsKLSAgICAgICAgaWYgKCFzZXNzaW9uSUQoKS5p
c0VwaGVtZXJhbCgpKSB7Ci0gICAgICAgICAgICBBU1NFUlQoIW1faWRiRGF0YWJhc2VQYXRoLmlz
TnVsbCgpKTsKLSAgICAgICAgICAgIHBhdGggPSBtX2lkYkRhdGFiYXNlUGF0aDsKLSAgICAgICAg
fQotCi0gICAgICAgIGF1dG8gc3BhY2VSZXF1ZXN0ZXIgPSBbbmV0d29ya1Byb2Nlc3MgPSBSZWYg
eyBuZXR3b3JrUHJvY2VzcygpIH0sIHNlc3Npb25JRCA9IHNlc3Npb25JRCgpXShjb25zdCBhdXRv
JiBvcmlnaW4sIHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkKSB7Ci0gICAgICAgICAgICByZXR1cm4g
bmV0d29ya1Byb2Nlc3MtPnN0b3JhZ2VRdW90YU1hbmFnZXIoc2Vzc2lvbklELCBvcmlnaW4pLT5y
ZXF1ZXN0U3BhY2VPbkJhY2tncm91bmRUaHJlYWQoc3BhY2VSZXF1ZXN0ZWQpOwotICAgICAgICB9
OwotCi0gICAgICAgIG1fd2ViSURCU2VydmVyID0gV2ViSURCU2VydmVyOjpjcmVhdGUoc2Vzc2lv
bklEKCksIHBhdGgsIFdURk1vdmUoc3BhY2VSZXF1ZXN0ZXIpKTsKLSAgICAgICAgaWYgKG5ldHdv
cmtQcm9jZXNzKCkuc2hvdWxkU3VzcGVuZElEQlNlcnZlcnMoKSkKLSAgICAgICAgICAgIG1fd2Vi
SURCU2VydmVyLT5zdXNwZW5kKFdlYklEQlNlcnZlcjo6U3VzcGVuc2lvbkNvbmRpdGlvbjo6QWx3
YXlzKTsKLSAgICB9Ci0gICAgcmV0dXJuICptX3dlYklEQlNlcnZlcjsKLX0KLQotdm9pZCBOZXR3
b3JrU2Vzc2lvbjo6Y2xvc2VJREJTZXJ2ZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQotewotICAgIGlmICghbV93ZWJJREJTZXJ2ZXIpCi0gICAgICAgIHJl
dHVybiBjb21wbGV0aW9uSGFuZGxlcigpOwotCi0gICAgc3RkOjpleGNoYW5nZShtX3dlYklEQlNl
cnZlciwgbnVsbHB0ciktPmNsb3NlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLX0KLQot
dm9pZCBOZXR3b3JrU2Vzc2lvbjo6YWRkSW5kZXhlZERhdGFiYXNlU2Vzc2lvbihjb25zdCBTdHJp
bmcmIGluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBo
YW5kbGUpCi17Ci0gICAgLy8gKioqKioqKioqCi0gICAgLy8gSU1QT1JUQU5UOiBEbyBub3QgY2hh
bmdlIHRoZSBkaXJlY3Rvcnkgc3RydWN0dXJlIGZvciBpbmRleGVkIGRhdGFiYXNlcyBvbiBkaXNr
IHdpdGhvdXQgZmlyc3QgY29uc3VsdGluZyBhIHJldmlld2VyIGZyb20gQXBwbGUgKDxyZGFyOi8v
cHJvYmxlbS8xNzQ1NDcxMj4pCi0gICAgLy8gKioqKioqKioqCi0gICAgYXV0byBpc05ldyA9IG1f
aWRiRGF0YWJhc2VQYXRoLmlzTnVsbCgpOwotICAgIG1faWRiRGF0YWJhc2VQYXRoID0gaW5kZXhl
ZERhdGFiYXNlRGlyZWN0b3J5OwotICAgIGlmIChpc05ldykgewotICAgICAgICBTYW5kYm94RXh0
ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkoaGFuZGxlKTsKLSAgICAgICAgbmV0d29ya1Byb2Nl
c3MoKS5zZXRTZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlcklEQlJvb3RQYXRoKHNlc3Npb25JRCgp
LCBpbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkpOwotICAgIH0KLX0KLQotdm9pZCBOZXR3b3JrU2Vz
c2lvbjo6YWRkU3RvcmFnZU1hbmFnZXJTZXNzaW9uKGNvbnN0IFN0cmluZyYgZ2VuZXJhbFN0b3Jh
Z2VQYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIGdlbmVyYWxTdG9yYWdlUGF0aEhhbmRs
ZSwgY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VQYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUmIGxvY2FsU3RvcmFnZVBhdGhIYW5kbGUpCit2b2lkIE5ldHdvcmtTZXNzaW9uOjphZGRTdG9y
YWdlTWFuYWdlclNlc3Npb24oY29uc3QgU3RyaW5nJiBnZW5lcmFsU3RvcmFnZVBhdGgsIFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSYgZ2VuZXJhbFN0b3JhZ2VQYXRoSGFuZGxlLCBjb25zdCBTdHJp
bmcmIGxvY2FsU3RvcmFnZVBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgbG9jYWxTdG9y
YWdlUGF0aEhhbmRsZSwgY29uc3QgU3RyaW5nJiBpZGJTdG9yYWdlUGF0aCwgU2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlJiBpZGJTdG9yYWdlUGF0aEhhbmRsZSwgY29uc3QgU3RyaW5nJiBjYWNoZVN0
b3JhZ2VQYXRoLCB1aW50NjRfdCBkZWZhdWx0T3JpZ2luUXVvdGEsIHVpbnQ2NF90IGRlZmF1bHRU
aGlyZFBhcnR5UXVvdGEpCiB7CiAgICAgaWYgKG1fc3RvcmFnZU1hbmFnZXIpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShnZW5lcmFs
U3RvcmFnZVBhdGhIYW5kbGUpOwogICAgIFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5l
bnRseShsb2NhbFN0b3JhZ2VQYXRoSGFuZGxlKTsKLSAgICBtX3N0b3JhZ2VNYW5hZ2VyID0gTmV0
d29ya1N0b3JhZ2VNYW5hZ2VyOjpjcmVhdGUoc2Vzc2lvbklEKCksIGdlbmVyYWxTdG9yYWdlUGF0
aCwgbG9jYWxTdG9yYWdlUGF0aCk7CisgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1h
bmVudGx5KGlkYlN0b3JhZ2VQYXRoSGFuZGxlKTsKKyAgICBJUEM6OkNvbm5lY3Rpb246OlVuaXF1
ZUlEIGNvbm5lY3Rpb25JRDsKKyAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IG5ldHdvcmtQcm9j
ZXNzKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKSkKKyAgICAgICAgY29ubmVjdGlvbklEID0g
Y29ubmVjdGlvbi0+dW5pcXVlSUQoKTsKKyAgICBtX3N0b3JhZ2VNYW5hZ2VyID0gTmV0d29ya1N0
b3JhZ2VNYW5hZ2VyOjpjcmVhdGUoc2Vzc2lvbklEKCksIGNvbm5lY3Rpb25JRCwgZ2VuZXJhbFN0
b3JhZ2VQYXRoLCBsb2NhbFN0b3JhZ2VQYXRoLCBpZGJTdG9yYWdlUGF0aCwgY2FjaGVTdG9yYWdl
UGF0aCwgZGVmYXVsdE9yaWdpblF1b3RhLCBkZWZhdWx0VGhpcmRQYXJ0eVF1b3RhKTsKIH0KIAog
dm9pZCBOZXR3b3JrU2Vzc2lvbjo6ZW5zdXJlQ2FjaGVFbmdpbmUoRnVuY3Rpb248dm9pZChDYWNo
ZVN0b3JhZ2U6OkVuZ2luZSYpPiYmIGNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCmluZGV4IDNmOWQ2Yzk1NTBhOGI4Y2VjOWU0YzU1OWQz
MWQxMjFhOThiMGU4NDAuLjc5ZDdjZTQ0MDRhMTM4ZGY5Yjg4YWFlYzk3YjY5MTNhZjYwYTRjZWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24u
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKQEAg
LTIxNCwxNCArMjE0LDggQEAgcHVibGljOgogICAgIFdlYlNoYXJlZFdvcmtlclNlcnZlciogc2hh
cmVkV29ya2VyU2VydmVyKCkgeyByZXR1cm4gbV9zaGFyZWRXb3JrZXJTZXJ2ZXIuZ2V0KCk7IH0K
ICAgICBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXImIGVuc3VyZVNoYXJlZFdvcmtlclNlcnZlcigpOwog
Ci0gICAgV2ViSURCU2VydmVyKiB3ZWJJREJTZXJ2ZXIoKSB7IHJldHVybiBtX3dlYklEQlNlcnZl
ci5nZXQoKTsgfQotICAgIFdlYklEQlNlcnZlciYgZW5zdXJlV2ViSURCU2VydmVyKCk7Ci0gICAg
dm9pZCBjbG9zZUlEQlNlcnZlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZv
aWQgYWRkSW5kZXhlZERhdGFiYXNlU2Vzc2lvbihjb25zdCBTdHJpbmcmIGluZGV4ZWREYXRhYmFz
ZURpcmVjdG9yeSwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJik7Ci0gICAgYm9vbCBoYXNJREJE
YXRhYmFzZVBhdGgoKSBjb25zdCB7IHJldHVybiAhbV9pZGJEYXRhYmFzZVBhdGguaXNFbXB0eSgp
OyB9Ci0KICAgICBOZXR3b3JrU3RvcmFnZU1hbmFnZXIqIHN0b3JhZ2VNYW5hZ2VyKCkgeyByZXR1
cm4gbV9zdG9yYWdlTWFuYWdlci5nZXQoKTsgfQotICAgIHZvaWQgYWRkU3RvcmFnZU1hbmFnZXJT
ZXNzaW9uKGNvbnN0IFN0cmluZyYgZ2VuZXJhbFN0b3JhZ2VQYXRoLCBTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGUmIGdlbmVyYWxTdG9yYWdlUGF0aEhhbmRsZSwgY29uc3QgU3RyaW5nJiBsb2NhbFN0
b3JhZ2VQYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIGxvY2FsU3RvcmFnZVBhdGhIYW5k
bGUpOworICAgIHZvaWQgYWRkU3RvcmFnZU1hbmFnZXJTZXNzaW9uKGNvbnN0IFN0cmluZyYgZ2Vu
ZXJhbFN0b3JhZ2VQYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIGdlbmVyYWxTdG9yYWdl
UGF0aEhhbmRsZSwgY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VQYXRoLCBTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGUmIGxvY2FsU3RvcmFnZVBhdGhIYW5kbGUsIGNvbnN0IFN0cmluZyYgaWRiU3Rv
cmFnZVBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgaWRiU3RvcmFnZVBhdGhIYW5kbGUs
IGNvbnN0IFN0cmluZyYgY2FjaGVTdG9yYWdlUGF0aCwgdWludDY0X3QgZGVmYXVsdE9yaWdpblF1
b3RhLCB1aW50NjRfdCBkZWZhdWx0VGhpcmRQYXJ0eVF1b3RhKTsKIAogICAgIENhY2hlU3RvcmFn
ZTo6RW5naW5lKiBjYWNoZUVuZ2luZSgpIHsgcmV0dXJuIG1fY2FjaGVFbmdpbmUuZ2V0KCk7IH0K
ICAgICB2b2lkIGVuc3VyZUNhY2hlRW5naW5lKEZ1bmN0aW9uPHZvaWQoQ2FjaGVTdG9yYWdlOjpF
bmdpbmUmKT4mJik7CkBAIC0zMjQsOSArMzE4LDYgQEAgcHJvdGVjdGVkOgogI2VuZGlmCiAgICAg
c3RkOjp1bmlxdWVfcHRyPFdlYlNoYXJlZFdvcmtlclNlcnZlcj4gbV9zaGFyZWRXb3JrZXJTZXJ2
ZXI7CiAKLSAgICBTdHJpbmcgbV9pZGJEYXRhYmFzZVBhdGg7Ci0gICAgUmVmUHRyPFdlYklEQlNl
cnZlcj4gbV93ZWJJREJTZXJ2ZXI7Ci0KICAgICBSZWZQdHI8TmV0d29ya1N0b3JhZ2VNYW5hZ2Vy
PiBtX3N0b3JhZ2VNYW5hZ2VyOwogICAgIFJlZlB0cjxDYWNoZVN0b3JhZ2U6OkVuZ2luZT4gbV9j
YWNoZUVuZ2luZTsKICAgICBWZWN0b3I8RnVuY3Rpb248dm9pZChDYWNoZVN0b3JhZ2U6OkVuZ2lu
ZSYpPj4gbV9jYWNoZVN0b3JhZ2VQYXJhbWV0ZXJzQ2FsbGJhY2tzOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3Bw
CmluZGV4IDYzNDI1YWM1ZTVjNTEyMmUxNzU2MzY5ZTQ1NTM4MDY0NzE3M2U2MzMuLmRkMWZhMjFj
OWVlYzEzZmRiMzA5NDcyMmViODkxZmQ2NTM4ZTNlNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKQEAg
LTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJOZXR3b3JrQ2FjaGVJT0NoYW5uZWwuaCIKICNpbmNs
dWRlICJOZXR3b3JrUHJvY2Vzcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtTZXNzaW9uLmgiCisjaW5j
bHVkZSAiTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFUeXBl
LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DYWNoZVF1ZXJ5T3B0aW9ucy5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUmV0cmlldmVSZWNvcmRzT3B0aW9ucy5oPgpAQCAtMjAzLDQwICsyMDQsNTIgQEAgc3Rh
dGljIHVpbnQ2NF90IGdldERpcmVjdG9yeVNpemUoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnlQYXRo
KQogICAgIHJldHVybiBkaXJlY3RvcnlTaXplOwogfQogCi11aW50NjRfdCBFbmdpbmU6OmRpc2tV
c2FnZShjb25zdCBTdHJpbmcmIHJvb3RQYXRoLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4m
IG9yaWdpbikKK1N0cmluZyBFbmdpbmU6OnN0b3JhZ2VQYXRoKGNvbnN0IFN0cmluZyYgcm9vdERp
cmVjdG9yeSwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4pCiB7CiAgICAgQVNT
RVJUKCFpc01haW5SdW5Mb29wKCkpOworICAgIAorICAgIGlmIChyb290RGlyZWN0b3J5LmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKLSAgICBpZiAocm9vdFBhdGgu
aXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIFN0cmluZyBzYWx0UGF0aCA9IEZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyb290UGF0aCwgInNhbHQiX3MpOwor
ICAgIFN0cmluZyBzYWx0UGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChyb290RGlyZWN0b3J5LCAic2FsdCJfcyk7CiAgICAgYXV0byBzYWx0ID0gRmlsZVN5c3RlbTo6
cmVhZE9yTWFrZVNhbHQoc2FsdFBhdGgpOwogICAgIGlmICghc2FsdCkKLSAgICAgICAgcmV0dXJu
IDA7CisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCiAgICAgS2V5IGtleShvcmlnaW4u
dG9wT3JpZ2luLnRvU3RyaW5nKCksIG9yaWdpbi5jbGllbnRPcmlnaW4udG9TdHJpbmcoKSwgeyB9
LCB7IH0sICpzYWx0KTsKLSAgICBTdHJpbmcgZGlyZWN0b3J5UGF0aCA9IEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChyb290UGF0aCwga2V5Lmhhc2hBc1N0cmluZygpKTsKKyAg
ICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJvb3REaXJlY3Rv
cnksIGtleS5oYXNoQXNTdHJpbmcoKSk7Cit9CisKK3VpbnQ2NF90IEVuZ2luZTo6ZGlza1VzYWdl
KGNvbnN0IFN0cmluZyYgb3JpZ2luRGlyZWN0b3J5KQoreworICAgIEFTU0VSVCghaXNNYWluUnVu
TG9vcCgpKTsKIAotICAgIFN0cmluZyBzaXplRmlsZVBhdGggPSBDYWNoZXM6OmNhY2hlc1NpemVG
aWxlbmFtZShkaXJlY3RvcnlQYXRoKTsKKyAgICBpZiAob3JpZ2luRGlyZWN0b3J5LmlzRW1wdHko
KSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBTdHJpbmcgc2l6ZUZpbGVQYXRoID0gQ2FjaGVz
OjpjYWNoZXNTaXplRmlsZW5hbWUob3JpZ2luRGlyZWN0b3J5KTsKICAgICBpZiAoYXV0byByZWNv
cmRlZFNpemUgPSByZWFkU2l6ZUZpbGUoc2l6ZUZpbGVQYXRoKSkKICAgICAgICAgcmV0dXJuICpy
ZWNvcmRlZFNpemU7CiAKLSAgICByZXR1cm4gZ2V0RGlyZWN0b3J5U2l6ZShkaXJlY3RvcnlQYXRo
KTsKKyAgICByZXR1cm4gZ2V0RGlyZWN0b3J5U2l6ZShvcmlnaW5EaXJlY3RvcnkpOwogfQogCi12
b2lkIEVuZ2luZTo6cmVxdWVzdFNwYWNlKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3Jp
Z2luLCB1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJD
b3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbik+JiYgY2FsbGJhY2spCit2b2lkIEVu
Z2luZTo6cmVxdWVzdFNwYWNlKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCB1
aW50NjRfdCBzcGFjZVJlcXVlc3RlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBj
YWxsYmFjaykKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAgaWYgKCFtX25l
dHdvcmtQcm9jZXNzKQotICAgICAgICBjYWxsYmFjayhXZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5h
Z2VyOjpEZWNpc2lvbjo6RGVueSk7CisgICAgICAgIGNhbGxiYWNrKGZhbHNlKTsKKworICAgIGF1
dG8qIHNlc3Npb24gPSBtX25ldHdvcmtQcm9jZXNzLT5uZXR3b3JrU2Vzc2lvbihtX3Nlc3Npb25J
RCk7CisgICAgaWYgKCFzZXNzaW9uKQorICAgICAgICBjYWxsYmFjayhmYWxzZSk7CiAKLSAgICBS
ZWZQdHI8V2ViQ29yZTo6U3RvcmFnZVF1b3RhTWFuYWdlcj4gc3RvcmFnZVF1b3RhTWFuYWdlciA9
IG1fbmV0d29ya1Byb2Nlc3MtPnN0b3JhZ2VRdW90YU1hbmFnZXIobV9zZXNzaW9uSUQsIG9yaWdp
bik7Ci0gICAgaWYgKCFzdG9yYWdlUXVvdGFNYW5hZ2VyKQotICAgICAgICBjYWxsYmFjayhXZWJD
b3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbjo6RGVueSk7CisgICAgYXV0byogc3Rv
cmFnZU1hbmFnZXIgPSBzZXNzaW9uLT5zdG9yYWdlTWFuYWdlcigpOworICAgIGlmICghc3RvcmFn
ZU1hbmFnZXIpCisgICAgICAgIGNhbGxiYWNrKGZhbHNlKTsKIAotICAgIHN0b3JhZ2VRdW90YU1h
bmFnZXItPnJlcXVlc3RTcGFjZU9uTWFpblRocmVhZChzcGFjZVJlcXVlc3RlZCwgV1RGTW92ZShj
YWxsYmFjaykpOworICAgIHN0b3JhZ2VNYW5hZ2VyLT5yZXF1ZXN0U3BhY2Uob3JpZ2luLCBzcGFj
ZVJlcXVlc3RlZCwgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCiBFbmdpbmU6OkVuZ2luZShOZXR3
b3JrU2Vzc2lvbiYgbmV0d29ya1Nlc3Npb24sIFN0cmluZyYmIHJvb3RQYXRoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUu
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5l
LmgKaW5kZXggMTQ3ZmJhY2UxNjc3YTYwODU5MThhYjc3MmE5ZTEwYTIwNmM2ODgxZS4uZmUzYzFm
OTMwZGFlMzk5OGNkMWMwNGMzNGRiZGRjNTM1NTVhNDcwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oCkBAIC0y
OSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiTmV0d29ya0NhY2hlRGF0YS5oIgogI2luY2x1ZGUgIldl
YnNpdGVEYXRhLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DbGllbnRPcmlnaW4uaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL1N0b3JhZ2VRdW90YU1hbmFnZXIuaD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklE
Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgpAQCAtODQsOCArODMsOSBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXpl
UXVvdGFVc2VyKE5ldHdvcmtTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAotICAgIHN0YXRpYyB1aW50NjRfdCBkaXNr
VXNhZ2UoY29uc3QgU3RyaW5nJiByb290UGF0aCwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2lu
Jik7Ci0gICAgdm9pZCByZXF1ZXN0U3BhY2UoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwg
dWludDY0X3Qgc3BhY2VSZXF1ZXN0ZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6
U3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb24pPiYmKTsKKyAgICBzdGF0aWMgU3RyaW5nIHN0
b3JhZ2VQYXRoKGNvbnN0IFN0cmluZyYgcm9vdERpcmVjdG9yeSwgY29uc3QgV2ViQ29yZTo6Q2xp
ZW50T3JpZ2luJik7CisgICAgc3RhdGljIHVpbnQ2NF90IGRpc2tVc2FnZShjb25zdCBTdHJpbmcm
IG9yaWdpbkRpcmVjdG9yeSk7CisgICAgdm9pZCByZXF1ZXN0U3BhY2UoY29uc3QgV2ViQ29yZTo6
Q2xpZW50T3JpZ2luJiwgdWludDY0X3Qgc3BhY2VSZXF1ZXN0ZWQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYpOwogCiAgICAgYm9vbCBzaG91bGRQZXJzaXN0KCkgY29uc3QgeyByZXR1
cm4gISFtX2lvUXVldWU7fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAKaW5kZXggMDRl
ZGVjZTFjNGJmZTllYWNhZTA2YTcwN2M1ZGRmZmUwMGU4MTM4ZS4uYzMwYzNiZTdjNWM1NTNiZjIz
MjhkOTUxYjc3NDQ0NDEzYjMyZDZhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcApA
QCAtNTI0LDE0ICs1MjQsMTAgQEAgdm9pZCBDYWNoZXM6OnJlcXVlc3RTcGFjZSh1aW50NjRfdCBz
cGFjZVJlcXVpcmVkLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q29tcGwKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIG1fZW5naW5lLT5yZXF1ZXN0U3BhY2UobV9vcmlnaW4sIHNwYWNl
UmVxdWlyZWQsIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvIGRlY2lzaW9uKSBt
dXRhYmxlIHsKLSAgICAgICAgc3dpdGNoIChkZWNpc2lvbikgewotICAgICAgICBjYXNlIFdlYkNv
cmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uOjpEZW55OgotICAgICAgICAgICAgY2Fs
bGJhY2soRXJyb3I6OlF1b3RhRXhjZWVkZWQpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICBjYXNlIFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uOjpHcmFudDoKLSAg
ICAgICAgICAgIGNhbGxiYWNrKHsgfSk7Ci0gICAgICAgIH07CisgICAgbV9lbmdpbmUtPnJlcXVl
c3RTcGFjZShtX29yaWdpbiwgc3BhY2VSZXF1aXJlZCwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayldKGJvb2wgZ3JhbnRlZCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghZ3JhbnRlZCkKKyAg
ICAgICAgICAgIHJldHVybiBjYWxsYmFjayhFcnJvcjo6UXVvdGFFeGNlZWRlZCk7CisgICAgICAg
IGNhbGxiYWNrKHsgfSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNzSU9TLm1tIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya1Byb2Nlc3NJT1MubW0KaW5kZXggYTg3YWQ4MDViNWRm
MTUwNzgzYjUzOTFlOGUwM2Y5OGU3NjRkZjNkNS4uMjE5NmU5ZTc0ZDI0NTMxYzBkYjViMzk0NWFj
NjA4ZmUzZTk4Yzc0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9p
b3MvTmV0d29ya1Byb2Nlc3NJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9pb3MvTmV0d29ya1Byb2Nlc3NJT1MubW0KQEAgLTEwOSwxOSArMTA5LDYgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzczo6c2V0SXNIb2xkaW5nTG9ja2VkRmlsZXMoYm9vbCBpc0hvbGRpbmdMb2NrZWRG
aWxlcykKICAgICAvLyBXZSBzeW5jaHJvbm91c2x5IHRha2UgYSBwcm9jZXNzIGFzc2VydGlvbiB3
aGVuIGJlZ2lubmluZyBhIFNRTGl0ZSB0cmFuc2FjdGlvbiBzbyB0aGF0IHdlIGRvbid0IGdldCBz
dXNwZW5kZWQKICAgICAvLyB3aGlsZSBob2xkaW5nIGEgbG9ja2VkIGZpbGUuIFdlIHdvdWxkIGdl
dCBraWxsZWQgaWYgc3VzcGVuZGVkIHdoaWxlIGhvbGRpbmcgbG9ja2VkIGZpbGVzLgogICAgIG1f
aG9sZGluZ0xvY2tlZEZpbGVBc3NlcnRpb24gPSBQcm9jZXNzQXNzZXJ0aW9uOjpjcmVhdGUoZ2V0
Q3VycmVudFByb2Nlc3NJRCgpLCAiTmV0d29yayBQcm9jZXNzIGlzIGhvbGRpbmcgbG9ja2VkIGZp
bGVzIl9zLCBQcm9jZXNzQXNzZXJ0aW9uVHlwZTo6RmluaXNoVGFza0ludGVycnVwdGFibGUsIFBy
b2Nlc3NBc3NlcnRpb246Ok1vZGU6OlN5bmMpOwotICAgIG1faG9sZGluZ0xvY2tlZEZpbGVBc3Nl
cnRpb24tPnNldFByZXBhcmVGb3JJbnZhbGlkYXRpb25IYW5kbGVyKFt0aGlzLCB3ZWFrVGhpcyA9
IFdlYWtQdHIgeyAqdGhpcyB9XSgpIG11dGFibGUgewotICAgICAgICBBU1NFUlQoaXNNYWluUnVu
TG9vcCgpKTsKLSAgICAgICAgaWYgKCF3ZWFrVGhpcykKLSAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICBpZiAoIW1fc2hvdWxkU3VzcGVuZElEQlNlcnZlcnMpCi0gICAgICAgICAgICByZXR1
cm47Ci0KLSAgICAgICAgZm9yRWFjaE5ldHdvcmtTZXNzaW9uKFtdKGF1dG8mIHNlc3Npb24pIHsK
LSAgICAgICAgICAgIGlmIChhdXRvKiBzZXJ2ZXIgPSBzZXNzaW9uLndlYklEQlNlcnZlcigpKQot
ICAgICAgICAgICAgICAgIHNlcnZlci0+c3VzcGVuZCgpOwotICAgICAgICB9KTsKLSAgICB9KTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZUNvbm5lY3Rpb25U
b0NsaWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGFmNGM2NDY0MzZiOTZlMTRlODdiM2NlMmI2MTFkYjA0
Mjg3OTA1ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c3RvcmFnZS9JREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50LmNwcApAQCAtMCwwICsxLDE5MSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIklEQlN0
b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQuaCIKKworI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENv
ZGVycy5oIgorI2luY2x1ZGUgIldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlck1lc3NhZ2VzLmgiCisj
aW5jbHVkZSAiV2ViSURCUmVzdWx0LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9JREJSZXF1ZXN0RGF0
YS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSURCUmVzdWx0RGF0YS5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xp
ZW50KElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgY29ubmVjdGlvbiwgV2ViQ29yZTo6SURCQ29u
bmVjdGlvbklkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICA6IG1fY29ubmVjdGlvbihjb25uZWN0
aW9uKQorICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCisgICAgLCBtX2Nvbm5lY3Rpb25U
b0NsaWVudChXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6Y3JlYXRl
KCp0aGlzKSkKK3sKK30KKworSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6fklEQlN0b3Jh
Z2VDb25uZWN0aW9uVG9DbGllbnQoKQoreworICAgIG1fY29ubmVjdGlvblRvQ2xpZW50LT5jbGVh
ckRlbGVnYXRlKCk7Cit9CisKK1dlYkNvcmU6OklEQlNlcnZlcjo6SURCQ29ubmVjdGlvblRvQ2xp
ZW50JiBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50Ojpjb25uZWN0aW9uVG9DbGllbnQoKQor
eworICAgIHJldHVybiBtX2Nvbm5lY3Rpb25Ub0NsaWVudDsKK30KKwordGVtcGxhdGU8Y2xhc3Mg
TWVzc2FnZVR5cGU+IHZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkR2V0UmVz
dWx0KGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCit7CisgICAgaWYg
KHJlc3VsdERhdGEudHlwZSgpID09IFdlYkNvcmU6OklEQlJlc3VsdFR5cGU6OkVycm9yKSB7Cisg
ICAgICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VUeXBlKHJl
c3VsdERhdGEpLCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChyZXN1bHRE
YXRhLnR5cGUoKSA9PSBXZWJDb3JlOjpJREJSZXN1bHRUeXBlOjpHZXRBbGxSZWNvcmRzU3VjY2Vz
cyAmJiByZXN1bHREYXRhLmdldEFsbFJlc3VsdCgpLnR5cGUoKSA9PSBXZWJDb3JlOjpJbmRleGVk
REI6OkdldEFsbFR5cGU6OktleXMpIHsKKyAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKG1f
Y29ubmVjdGlvbiwgTWVzc2FnZVR5cGUocmVzdWx0RGF0YSksIDApOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgYXV0byBibG9iRmlsZVBhdGhzID0gcmVzdWx0RGF0YS50eXBlKCkgPT0g
V2ViQ29yZTo6SURCUmVzdWx0VHlwZTo6R2V0QWxsUmVjb3Jkc1N1Y2Nlc3MgPyByZXN1bHREYXRh
LmdldEFsbFJlc3VsdCgpLmFsbEJsb2JGaWxlUGF0aHMoKSA6IHJlc3VsdERhdGEuZ2V0UmVzdWx0
KCkudmFsdWUoKS5ibG9iRmlsZVBhdGhzKCk7CisgICAgaWYgKGJsb2JGaWxlUGF0aHMuaXNFbXB0
eSgpKSB7CisgICAgICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3Nh
Z2VUeXBlKHJlc3VsdERhdGEpLCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIElQ
Qzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VUeXBlKHJlc3VsdERhdGEp
LCAwKTsKK30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWREZWxldGVE
YXRhYmFzZShjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAg
IElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJJREJDb25u
ZWN0aW9uVG9TZXJ2ZXI6OkRpZERlbGV0ZURhdGFiYXNlKHJlc3VsdERhdGEpLCAwKTsKK30KKwor
dm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRPcGVuRGF0YWJhc2UoY29uc3Qg
V2ViQ29yZTo6SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBJUEM6OkNvbm5lY3Rp
b246OnNlbmQobV9jb25uZWN0aW9uLCBNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVy
OjpEaWRPcGVuRGF0YWJhc2UocmVzdWx0RGF0YSksIDApOworfQorCit2b2lkIElEQlN0b3JhZ2VD
b25uZWN0aW9uVG9DbGllbnQ6OmRpZFN0YXJ0VHJhbnNhY3Rpb24oY29uc3QgV2ViQ29yZTo6SURC
UmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6
OklEQkVycm9yJiBlcnJvcikKK3sKKyAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQobV9jb25uZWN0
aW9uLCBNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWRTdGFydFRyYW5zYWN0
aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgZXJyb3IpLCAwKTsKK30KKwordm9pZCBJREJTdG9y
YWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRBYm9ydFRyYW5zYWN0aW9uKGNvbnN0IFdlYkNvcmU6
OklEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJD
b3JlOjpJREJFcnJvciYgZXJyb3IpCit7CisgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKG1fY29u
bmVjdGlvbiwgTWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6RGlkQWJvcnRUcmFu
c2FjdGlvbih0cmFuc2FjdGlvbklkZW50aWZpZXIsIGVycm9yKSwgMCk7Cit9CisKK3ZvaWQgSURC
U3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkQ29tbWl0VHJhbnNhY3Rpb24oY29uc3QgV2Vi
Q29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0
IFdlYkNvcmU6OklEQkVycm9yJiBlcnJvcikKK3sKKyAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQo
bV9jb25uZWN0aW9uLCBNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWRDb21t
aXRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbklkZW50aWZpZXIsIGVycm9yKSwgMCk7Cit9CisKK3Zv
aWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkQ3JlYXRlT2JqZWN0U3RvcmUoY29u
c3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBJUEM6OkNvbm5l
Y3Rpb246OnNlbmQobV9jb25uZWN0aW9uLCBNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2Vy
dmVyOjpEaWRDcmVhdGVPYmplY3RTdG9yZShyZXN1bHREYXRhKSwgMCk7Cit9CisKK3ZvaWQgSURC
U3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkRGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgV2Vi
Q29yZTo6SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBJUEM6OkNvbm5lY3Rpb246
OnNlbmQobV9jb25uZWN0aW9uLCBNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpE
aWREZWxldGVPYmplY3RTdG9yZShyZXN1bHREYXRhKSwgMCk7Cit9CisKK3ZvaWQgSURCU3RvcmFn
ZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkUmVuYW1lT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6
SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQo
bV9jb25uZWN0aW9uLCBNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWRSZW5h
bWVPYmplY3RTdG9yZShyZXN1bHREYXRhKSwgMCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5l
Y3Rpb25Ub0NsaWVudDo6ZGlkQ2xlYXJPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXN1
bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5l
Y3Rpb24sIE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZENsZWFyT2JqZWN0
U3RvcmUocmVzdWx0RGF0YSksIDApOworfQorCit2b2lkIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9D
bGllbnQ6OmRpZENyZWF0ZUluZGV4KGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmIHJlc3Vs
dERhdGEpCit7CisgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwgTWVzc2Fn
ZXM6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6RGlkQ3JlYXRlSW5kZXgocmVzdWx0RGF0YSks
IDApOworfQorCit2b2lkIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZERlbGV0ZUlu
ZGV4KGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCit7CisgICAgSVBD
OjpDb25uZWN0aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwgTWVzc2FnZXM6OldlYklEQkNvbm5lY3Rp
b25Ub1NlcnZlcjo6RGlkRGVsZXRlSW5kZXgocmVzdWx0RGF0YSksIDApOworfQorCit2b2lkIElE
QlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZFJlbmFtZUluZGV4KGNvbnN0IFdlYkNvcmU6
OklEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCit7CisgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5k
KG1fY29ubmVjdGlvbiwgTWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6RGlkUmVu
YW1lSW5kZXgocmVzdWx0RGF0YSksIDApOworfQorCit2b2lkIElEQlN0b3JhZ2VDb25uZWN0aW9u
VG9DbGllbnQ6OmRpZFB1dE9yQWRkKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmIHJlc3Vs
dERhdGEpCit7CisgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwgTWVzc2Fn
ZXM6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6RGlkUHV0T3JBZGQocmVzdWx0RGF0YSksIDAp
OworfQorCit2b2lkIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZEdldFJlY29yZChj
b25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIGRpZEdldFJl
c3VsdDxNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWRHZXRSZWNvcmQ+KHJl
c3VsdERhdGEpOworfQorCit2b2lkIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZEdl
dEFsbFJlY29yZHMoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sK
KyAgICBkaWRHZXRSZXN1bHQ8TWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6RGlk
R2V0QWxsUmVjb3Jkcz4ocmVzdWx0RGF0YSk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rp
b25Ub0NsaWVudDo6ZGlkR2V0Q291bnQoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYgcmVz
dWx0RGF0YSkKK3sKKyAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQobV9jb25uZWN0aW9uLCBNZXNz
YWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWRHZXRDb3VudChyZXN1bHREYXRhKSwg
MCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkRGVsZXRlUmVj
b3JkKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCit7CisgICAgSVBD
OjpDb25uZWN0aW9uOjpzZW5kKG1fY29ubmVjdGlvbiwgTWVzc2FnZXM6OldlYklEQkNvbm5lY3Rp
b25Ub1NlcnZlcjo6RGlkRGVsZXRlUmVjb3JkKHJlc3VsdERhdGEpLCAwKTsKK30KKwordm9pZCBJ
REJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRPcGVuQ3Vyc29yKGNvbnN0IFdlYkNvcmU6
OklEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCit7CisgICAgZGlkR2V0UmVzdWx0PE1lc3NhZ2Vz
OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZE9wZW5DdXJzb3I+KHJlc3VsdERhdGEpOwor
fQorCit2b2lkIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZEl0ZXJhdGVDdXJzb3Io
Y29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBkaWRHZXRS
ZXN1bHQ8TWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6RGlkSXRlcmF0ZUN1cnNv
cj4ocmVzdWx0RGF0YSk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6
ZGlkR2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKGNvbnN0IFdlYkNvcmU6OklEQlJlc291
cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJ
REJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiYgZGF0YWJhc2VzKQoreworICAgIElQQzo6Q29ubmVj
dGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2
ZXI6OkRpZEdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhyZXF1ZXN0SWRlbnRpZmllciwg
ZGF0YWJhc2VzKSwgMCk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6
ZmlyZVZlcnNpb25DaGFuZ2VFdmVudChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFi
YXNlQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVu
dGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgcmVxdWVzdGVkVmVyc2lvbikKK3sK
KyAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQobV9jb25uZWN0aW9uLCBNZXNzYWdlczo6V2ViSURC
Q29ubmVjdGlvblRvU2VydmVyOjpGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KGNvbm5lY3Rpb24uaWRl
bnRpZmllcigpLCByZXF1ZXN0SWRlbnRpZmllciwgcmVxdWVzdGVkVmVyc2lvbiksIDApOworfQor
Cit2b2lkIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZENsb3NlRnJvbVNlcnZlcihX
ZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYgY29ubmVjdGlv
biwgY29uc3QgV2ViQ29yZTo6SURCRXJyb3ImIGVycm9yKQoreworICAgIElQQzo6Q29ubmVjdGlv
bjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6
OkRpZENsb3NlRnJvbVNlcnZlcihjb25uZWN0aW9uLmlkZW50aWZpZXIoKSwgZXJyb3IpLCAwKTsK
K30KKwordm9pZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50Ojpub3RpZnlPcGVuREJSZXF1
ZXN0QmxvY2tlZChjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJ
ZGVudGlmaWVyLCB1aW50NjRfdCBvbGRWZXJzaW9uLCB1aW50NjRfdCBuZXdWZXJzaW9uKQorewor
ICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJJREJD
b25uZWN0aW9uVG9TZXJ2ZXI6Ok5vdGlmeU9wZW5EQlJlcXVlc3RCbG9ja2VkKHJlcXVlc3RJZGVu
dGlmaWVyLCBvbGRWZXJzaW9uLCBuZXdWZXJzaW9uKSwgMCk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdl
L0lEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NTBiYTAxYjAyMTIwZjIxZGI2MTM5MWYzYTg3NDRkMjJiNWZmNzBlNAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlQ29ubmVj
dGlvblRvQ2xpZW50LmgKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
Ni0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9JREJD
b25uZWN0aW9uVG9DbGllbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0lEQkNvbm5lY3Rpb25Ub0Ns
aWVudERlbGVnYXRlLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBJREJTdG9yYWdl
Q29ubmVjdGlvblRvQ2xpZW50IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OklEQlNlcnZlcjo6SURC
Q29ubmVjdGlvblRvQ2xpZW50RGVsZWdhdGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OworcHVibGljOgorICAgIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQoSVBDOjpDb25uZWN0
aW9uOjpVbmlxdWVJRCwgV2ViQ29yZTo6SURCQ29ubmVjdGlvbklkZW50aWZpZXIpOworICAgIH5J
REJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50KCk7CisKKyAgICBXZWJDb3JlOjpJREJDb25uZWN0
aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pZGVudGlm
aWVyOyB9CisgICAgSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBpcGNDb25uZWN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9jb25uZWN0aW9uOyB9CisgICAgV2ViQ29yZTo6SURCU2VydmVyOjpJREJD
b25uZWN0aW9uVG9DbGllbnQmIGNvbm5lY3Rpb25Ub0NsaWVudCgpOworCitwcml2YXRlOgorICAg
IHRlbXBsYXRlPGNsYXNzIE1lc3NhZ2VUeXBlPiB2b2lkIGRpZEdldFJlc3VsdChjb25zdCBXZWJD
b3JlOjpJREJSZXN1bHREYXRhJik7CisKKyAgICAvLyBJREJDb25uZWN0aW9uVG9DbGllbnREZWxl
Z2F0ZQorICAgIHZvaWQgZGlkRGVsZXRlRGF0YWJhc2UoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0
RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkT3BlbkRhdGFiYXNlKGNvbnN0IFdlYkNvcmU6OklE
QlJlc3VsdERhdGEmKSBmaW5hbDsKKyAgICB2b2lkIGRpZEFib3J0VHJhbnNhY3Rpb24oY29uc3Qg
V2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNv
bnN0IFdlYkNvcmU6OklEQkVycm9yJikgZmluYWw7CisgICAgdm9pZCBkaWRDb21taXRUcmFuc2Fj
dGlvbihjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRl
bnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCRXJyb3ImKSBmaW5hbDsKKyAgICB2b2lkIGRpZFN0
YXJ0VHJhbnNhY3Rpb24oY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFu
c2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OklEQkVycm9yJikgZmluYWw7CisgICAg
dm9pZCBkaWRDcmVhdGVPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJikg
ZmluYWw7CisgICAgdm9pZCBkaWREZWxldGVPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJS
ZXN1bHREYXRhJikgZmluYWw7CisgICAgdm9pZCBkaWRSZW5hbWVPYmplY3RTdG9yZShjb25zdCBX
ZWJDb3JlOjpJREJSZXN1bHREYXRhJikgZmluYWw7CisgICAgdm9pZCBkaWRDbGVhck9iamVjdFN0
b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBmaW5hbDsKKyAgICB2b2lkIGRpZENy
ZWF0ZUluZGV4KGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBmaW5hbDsKKyAgICB2b2lk
IGRpZERlbGV0ZUluZGV4KGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBmaW5hbDsKKyAg
ICB2b2lkIGRpZFJlbmFtZUluZGV4KGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBmaW5h
bDsKKyAgICB2b2lkIGRpZFB1dE9yQWRkKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBm
aW5hbDsKKyAgICB2b2lkIGRpZEdldFJlY29yZChjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRh
JikgZmluYWw7CisgICAgdm9pZCBkaWRHZXRBbGxSZWNvcmRzKGNvbnN0IFdlYkNvcmU6OklEQlJl
c3VsdERhdGEmKSBmaW5hbDsKKyAgICB2b2lkIGRpZEdldENvdW50KGNvbnN0IFdlYkNvcmU6OklE
QlJlc3VsdERhdGEmKSBmaW5hbDsKKyAgICB2b2lkIGRpZERlbGV0ZVJlY29yZChjb25zdCBXZWJD
b3JlOjpJREJSZXN1bHREYXRhJikgZmluYWw7CisgICAgdm9pZCBkaWRPcGVuQ3Vyc29yKGNvbnN0
IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBmaW5hbDsKKyAgICB2b2lkIGRpZEl0ZXJhdGVDdXJz
b3IoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkR2V0
QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRl
bnRpZmllciYsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9u
PiYpIGZpbmFsOworICAgIHZvaWQgbm90aWZ5T3BlbkRCUmVxdWVzdEJsb2NrZWQoY29uc3QgV2Vi
Q29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3Qg
b2xkVmVyc2lvbiwgdWludDY0X3QgbmV3VmVyc2lvbikgZmluYWw7CisgICAgdm9pZCBmaXJlVmVy
c2lvbkNoYW5nZUV2ZW50KFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25u
ZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRl
bnRpZmllciwgdWludDY0X3QgcmVxdWVzdGVkVmVyc2lvbikgZmluYWw7CisgICAgdm9pZCBkaWRD
bG9zZUZyb21TZXJ2ZXIoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5l
Y3Rpb24mLCBjb25zdCBXZWJDb3JlOjpJREJFcnJvciYpIGZpbmFsOworCisgICAgSVBDOjpDb25u
ZWN0aW9uOjpVbmlxdWVJRCBtX2Nvbm5lY3Rpb247CisgICAgV2ViQ29yZTo6SURCQ29ubmVjdGlv
bklkZW50aWZpZXIgbV9pZGVudGlmaWVyOworICAgIFJlZjxXZWJDb3JlOjpJREJTZXJ2ZXI6OklE
QkNvbm5lY3Rpb25Ub0NsaWVudD4gbV9jb25uZWN0aW9uVG9DbGllbnQ7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c3RvcmFnZS9JREJTdG9yYWdlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3N0b3JhZ2UvSURCU3RvcmFnZU1hbmFnZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjliNmI3MTAxN2Zi
MzlkN2EwZTEzOTBlZTI4OTZjYmMyZThkZmE0MGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZU1hbmFnZXIuY3BwCkBAIC0w
LDAgKzEsMjU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IklEQlN0b3JhZ2VNYW5hZ2VyLmgiCisKKyNpbmNsdWRlICJJREJTdG9yYWdlUmVnaXN0cnkuaCIK
KyNpbmNsdWRlIDxXZWJDb3JlL0lEQlJlcXVlc3REYXRhLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9N
ZW1vcnlJREJCYWNraW5nU3RvcmUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZUZpbGVTeXN0
ZW0uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5oPgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworc3RhdGljIHZvaWQgbWlncmF0ZU9yaWdpbkRhdGEoY29uc3QgU3Ry
aW5nJiBvbGRPcmlnaW5EaXJlY3RvcnksIGNvbnN0IFN0cmluZyYgbmV3T3JpZ2luRGlyZWN0b3J5
KQoreworICAgIGlmICghRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhvbGRPcmlnaW5EaXJlY3Rvcnkp
KQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGZpbGVOYW1lcyA9IEZpbGVTeXN0ZW06Omxp
c3REaXJlY3Rvcnkob2xkT3JpZ2luRGlyZWN0b3J5KTsKKyAgICBpZiAoIWZpbGVOYW1lcy5pc0Vt
cHR5KCkpCisgICAgICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhuZXdPcmlnaW5E
aXJlY3RvcnkpOworCisgICAgZm9yIChhdXRvJiBuYW1lIDogZmlsZU5hbWVzKSB7CisgICAgICAg
IFN0cmluZyBjaGlsZFBhdGggPSBGaWxlU3lzdGVtOjpyZWFsUGF0aChGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQob2xkT3JpZ2luRGlyZWN0b3J5LCBuYW1lKSk7CisgICAgICAg
IFN0cmluZyBuZXdOYW1lID0gV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0ZUhhc2hG
b3JGaWxlTmFtZShXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVj
b2RlRGF0YWJhc2VOYW1lKG5hbWUpKTsKKyAgICAgICAgYXV0byBuZXdDaGlsZFBhdGggPSBGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobmV3T3JpZ2luRGlyZWN0b3J5LCBuZXdO
YW1lKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6bW92ZUZpbGUoY2hpbGRQYXRoLCBuZXdDaGlsZFBh
dGgpOworICAgIH0KKworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KG9sZE9y
aWdpbkRpcmVjdG9yeSk7Cit9CisKK1N0cmluZyBJREJTdG9yYWdlTWFuYWdlcjo6aWRiU3RvcmFn
ZU9yaWdpbkRpcmVjdG9yeShjb25zdCBTdHJpbmcmIHJvb3REaXJlY3RvcnksIGNvbnN0IFdlYkNv
cmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luKQoreworICAgIGlmIChyb290RGlyZWN0b3J5LmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisKKyAgICBTdHJpbmcgb3JpZ2lu
RGlyZWN0b3J5ID0gV2ViQ29yZTo6SURCRGF0YWJhc2VJZGVudGlmaWVyOjpkYXRhYmFzZURpcmVj
dG9yeVJlbGF0aXZlVG9Sb290KG9yaWdpbi50b3BPcmlnaW4sIG9yaWdpbi5jbGllbnRPcmlnaW4s
IHJvb3REaXJlY3RvcnksICJ2MSIpOworICAgIFN0cmluZyBvbGRPcmlnaW5EaXJlY3RvcnkgPSBX
ZWJDb3JlOjpJREJEYXRhYmFzZUlkZW50aWZpZXI6OmRhdGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVU
b1Jvb3Qob3JpZ2luLnRvcE9yaWdpbiwgb3JpZ2luLmNsaWVudE9yaWdpbiwgcm9vdERpcmVjdG9y
eSwgInYwIik7CisgICAgbWlncmF0ZU9yaWdpbkRhdGEob2xkT3JpZ2luRGlyZWN0b3J5LCBvcmln
aW5EaXJlY3RvcnkpOworCisgICAgcmV0dXJuIG9yaWdpbkRpcmVjdG9yeTsKK30KKwordWludDY0
X3QgSURCU3RvcmFnZU1hbmFnZXI6OmlkYlN0b3JhZ2VTaXplKGNvbnN0IFN0cmluZyYgb3JpZ2lu
RGlyZWN0b3J5KQoreworICAgIGlmIChvcmlnaW5EaXJlY3RvcnkuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm4gMDsKKworICAgIHJldHVybiBXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6ZGF0YWJhc2VzU2l6ZUZvckRpcmVjdG9yeShvcmlnaW5EaXJlY3RvcnkpOwor
fQorCitzdGF0aWMgdm9pZCBnZXRPcmlnaW5zRm9yVmVyc2lvbihjb25zdCBTdHJpbmcmIHZlcnNp
b25QYXRoLCBIYXNoU2V0PFdlYkNvcmU6OkNsaWVudE9yaWdpbj4mIG9yaWdpbnMpCit7CisgICAg
Zm9yIChhdXRvJiB0b3BEYXRhYmFzZUlkZW50aWZpZXIgOiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0
b3J5KHZlcnNpb25QYXRoKSkgeworICAgICAgICBhdXRvIHRvcE9yaWdpbiA9IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmllcih0b3BEYXRhYmFzZUlkZW50
aWZpZXIpOworICAgICAgICBpZiAoIXRvcE9yaWdpbikKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
CisgICAgICAgIGF1dG8gdG9wT3JpZ2luRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KHZlcnNpb25QYXRoLCB0b3BEYXRhYmFzZUlkZW50aWZpZXIpOworICAg
ICAgICBmb3IgKGF1dG8mIGRhdGFiYXNlSWRlbnRpZmllciA6IEZpbGVTeXN0ZW06Omxpc3REaXJl
Y3RvcnkodG9wT3JpZ2luRGlyZWN0b3J5KSkgeworICAgICAgICAgICAgYXV0byBvcmlnaW5EaXJl
Y3RvcnkgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodG9wT3JpZ2luRGly
ZWN0b3J5LCBkYXRhYmFzZUlkZW50aWZpZXIpOworICAgICAgICAgICAgaWYgKEZpbGVTeXN0ZW06
OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KG9yaWdpbkRpcmVjdG9yeSkpCisgICAgICAgICAgICAgICAg
Y29udGludWU7CisKKyAgICAgICAgICAgIGF1dG8gY2xpZW50T3JpZ2luID0gV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKGRhdGFiYXNlSWRlbnRpZmll
cik7CisgICAgICAgICAgICAvLyBUaGlzIGlzIG5vdCBvcmlnaW4gZGlyZWN0b3J5LCBidXQgbWF5
IGJlIGRhdGFiYXNlIGRpcmVjdG9yeS4KKyAgICAgICAgICAgIGlmICghY2xpZW50T3JpZ2luKSB7
CisgICAgICAgICAgICAgICAgb3JpZ2lucy5hZGQoV2ViQ29yZTo6Q2xpZW50T3JpZ2luIHsgKnRv
cE9yaWdpbiwgKnRvcE9yaWdpbiB9KTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgb3JpZ2lucy5hZGQoV2ViQ29yZTo6Q2xpZW50T3JpZ2lu
IHsgKnRvcE9yaWdpbiwgKmNsaWVudE9yaWdpbiB9KTsKKyAgICAgICAgfQorCisgICAgICAgIC8v
IFdlIG1heSBoYXZlIGRlbGV0ZWQgZW1wdHkgY2hpbGRyZW4gZGlyZWN0b3JpZXMgYWJvdmUsIHdo
aWNoIG1ha2UgdGhpcyBkaXJlY3RvcnkgZW1wdHkuCisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0
ZUVtcHR5RGlyZWN0b3J5KHRvcE9yaWdpbkRpcmVjdG9yeSk7CisgICAgfQorfQorCitIYXNoU2V0
PFdlYkNvcmU6OkNsaWVudE9yaWdpbj4gSURCU3RvcmFnZU1hbmFnZXI6Om9yaWdpbnNPZklEQlN0
b3JhZ2VEYXRhKGNvbnN0IFN0cmluZyYgcm9vdERpcmVjdG9yeSkKK3sKKyAgICBIYXNoU2V0PFdl
YkNvcmU6OkNsaWVudE9yaWdpbj4gb3JpZ2luczsKKyAgICBpZiAocm9vdERpcmVjdG9yeS5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybiBvcmlnaW5zOworCisgICAgZ2V0T3JpZ2luc0ZvclZlcnNp
b24oRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJvb3REaXJlY3RvcnksICJ2
MCIpLCBvcmlnaW5zKTsKKyAgICBnZXRPcmlnaW5zRm9yVmVyc2lvbihGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQocm9vdERpcmVjdG9yeSwgInYxIiksIG9yaWdpbnMpOworCisg
ICAgcmV0dXJuIG9yaWdpbnM7Cit9CisKK0lEQlN0b3JhZ2VNYW5hZ2VyOjpJREJTdG9yYWdlTWFu
YWdlcihjb25zdCBTdHJpbmcmIHBhdGgsIElEQlN0b3JhZ2VSZWdpc3RyeSYgcmVnaXN0cnksIFF1
b3RhQ2hlY2tGdW5jdGlvbiYmIHF1b3RhQ2hlY2tGdW5jdGlvbikKKyAgICA6IG1fcGF0aChwYXRo
KQorICAgICwgbV9yZWdpc3RyeShyZWdpc3RyeSkKKyAgICAsIG1fcXVvdGFDaGVja0Z1bmN0aW9u
KFdURk1vdmUocXVvdGFDaGVja0Z1bmN0aW9uKSkKK3sKK30KKworYm9vbCBJREJTdG9yYWdlTWFu
YWdlcjo6aXNBY3RpdmUoKSBjb25zdAoreworICAgIHJldHVybiAhbV9kYXRhYmFzZXMuaXNFbXB0
eSgpOworfQorCitib29sIElEQlN0b3JhZ2VNYW5hZ2VyOjpoYXNEYXRhSW5NZW1vcnkoKSBjb25z
dAoreworICAgIHJldHVybiBXVEY6OmFueU9mKG1fZGF0YWJhc2VzLnZhbHVlcygpLCBbJl0gKGF1
dG8mIGRhdGFiYXNlKSB7CisgICAgICAgIHJldHVybiBkYXRhYmFzZS0+aGFzRGF0YUluTWVtb3J5
KCk7CisgICAgfSk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZU1hbmFnZXI6OmNsb3NlRGF0YWJhc2Vz
Rm9yRGVsZXRpb24oKQoreworICAgIGZvciAoYXV0byYgZGF0YWJhc2UgOiBtX2RhdGFiYXNlcy52
YWx1ZXMoKSkKKyAgICAgICAgZGF0YWJhc2UtPmltbWVkaWF0ZUNsb3NlKCk7CisKKyAgICBtX2Rh
dGFiYXNlcy5jbGVhcigpOworfQorCit2b2lkIElEQlN0b3JhZ2VNYW5hZ2VyOjpzdG9wRGF0YWJh
c2VBY3Rpdml0aWVzRm9yU3VzcGVuZCgpCit7CisgICAgaWYgKG1fcGF0aC5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIGZvciAoYXV0byYgZGF0YWJhc2UgOiBtX2RhdGFiYXNlcy52
YWx1ZXMoKSkgeworICAgICAgICAvLyBPbmx5IHN0b3AgZGF0YWJhc2VzIHdpdGggbm9uLWVwaGVt
ZXJhbCBiYWNraW5nIHN0b3JlIHRoYXQgY2FuIGhvbGQgZGF0YWJhc2UgZmlsZSBsb2NrLgorICAg
ICAgICBpZiAoIWRhdGFiYXNlLT5pZGVudGlmaWVyKCkuaXNUcmFuc2llbnQoKSkKKyAgICAgICAg
ICAgIGRhdGFiYXNlLT5hYm9ydEFjdGl2ZVRyYW5zYWN0aW9ucygpOworICAgIH0KK30KKworV2Vi
Q29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZSYgSURCU3RvcmFnZU1hbmFnZXI6Omdl
dE9yQ3JlYXRlVW5pcXVlSURCRGF0YWJhc2UoY29uc3QgV2ViQ29yZTo6SURCRGF0YWJhc2VJZGVu
dGlmaWVyJiBpZGVudGlmaWVyKQoreworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9kYXRhYmFzZXMu
YWRkKGlkZW50aWZpZXIsIG51bGxwdHIpOworICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkK
KyAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6
SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZT4oKnRoaXMsIGlkZW50aWZpZXIpOworCisgICAg
cmV0dXJuICphZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOworfQorCit2b2lkIElEQlN0b3JhZ2VN
YW5hZ2VyOjpvcGVuRGF0YWJhc2UoV2ViQ29yZTo6SURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9D
bGllbnQmIGNvbm5lY3Rpb25Ub0NsaWVudCwgY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEm
IHJlcXVlc3REYXRhKQoreworICAgIGF1dG8mIGRhdGFiYXNlID0gZ2V0T3JDcmVhdGVVbmlxdWVJ
REJEYXRhYmFzZShyZXF1ZXN0RGF0YS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAgZGF0YWJh
c2Uub3BlbkRhdGFiYXNlQ29ubmVjdGlvbihjb25uZWN0aW9uVG9DbGllbnQsIHJlcXVlc3REYXRh
KTsKK30KKwordm9pZCBJREJTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlRGF0YWJhc2UoV2ViQ29yZTo6
SURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnQmIGNvbm5lY3Rpb25Ub0NsaWVudCwgY29u
c3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhKQoreworICAgIGF1dG8mIGRh
dGFiYXNlID0gZ2V0T3JDcmVhdGVVbmlxdWVJREJEYXRhYmFzZShyZXF1ZXN0RGF0YS5kYXRhYmFz
ZUlkZW50aWZpZXIoKSk7CisgICAgZGF0YWJhc2UuaGFuZGxlRGVsZXRlKGNvbm5lY3Rpb25Ub0Ns
aWVudCwgcmVxdWVzdERhdGEpOworCisgICAgLy8gVGhpcyBkYXRhYmFzZSBpcyBjcmVhdGVkIGZv
ciBkZWxldGlvbi4KKyAgICBpZiAoZGF0YWJhc2UudHJ5Q2xvc2UoKSkKKyAgICAgICAgbV9kYXRh
YmFzZXMucmVtb3ZlKGRhdGFiYXNlLmlkZW50aWZpZXIoKSk7Cit9CisKK1ZlY3RvcjxXZWJDb3Jl
OjpJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiBJREJTdG9yYWdlTWFuYWdlcjo6Z2V0QWxsRGF0
YWJhc2VOYW1lc0FuZFZlcnNpb25zKCkKK3sKKyAgICBWZWN0b3I8V2ViQ29yZTo6SURCRGF0YWJh
c2VOYW1lQW5kVmVyc2lvbj4gcmVzdWx0OworICAgIEhhc2hTZXQ8U3RyaW5nPiB2aXNpdGVkRGF0
YWJhc2VQYXRoczsKKyAgICBmb3IgKGF1dG8mIGRhdGFiYXNlIDogbV9kYXRhYmFzZXMudmFsdWVz
KCkpIHsKKyAgICAgICAgYXV0byBwYXRoID0gZGF0YWJhc2UtPmZpbGVQYXRoKCk7CisgICAgICAg
IGlmICghcGF0aC5pc0VtcHR5KCkpCisgICAgICAgICAgICB2aXNpdGVkRGF0YWJhc2VQYXRocy5h
ZGQocGF0aCk7CisKKyAgICAgICAgaWYgKGF1dG8gbmFtZUFuZFZlcnNpb24gPSBkYXRhYmFzZS0+
bmFtZUFuZFZlcnNpb24oKSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoV1RGTW92ZSgqbmFt
ZUFuZFZlcnNpb24pKTsKKyAgICB9CisKKyAgICBhdXRvIGRhdGFiYXNlSWRlbnRpZmllcnMgPSBG
aWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KG1fcGF0aCk7CisgICAgZm9yIChhdXRvIGlkZW50aWZp
ZXIgOiBkYXRhYmFzZUlkZW50aWZpZXJzKSB7CisgICAgICAgIGF1dG8gZGF0YWJhc2VEaXJlY3Rv
cnkgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9wYXRoLCBpZGVudGlm
aWVyKTsKKyAgICAgICAgYXV0byBkYXRhYmFzZVBhdGggPSBXZWJDb3JlOjpJREJTZXJ2ZXI6OlNR
TGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZnVsbERhdGFiYXNlUGF0aEZvckRpcmVjdG9yeShkYXRhYmFz
ZURpcmVjdG9yeSk7CisgICAgICAgIGlmICh2aXNpdGVkRGF0YWJhc2VQYXRocy5jb250YWlucyhk
YXRhYmFzZVBhdGgpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKGF1dG8g
bmFtZUFuZFZlcnNpb24gPSBXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6ZGF0YWJhc2VOYW1lQW5kVmVyc2lvbkZyb21GaWxlKGRhdGFiYXNlUGF0aCkpCisgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKFdURk1vdmUoKm5hbWVBbmRWZXJzaW9uKSk7CisgICAgfQorCisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBJREJTdG9yYWdlTWFuYWdlcjo6b3BlbkRCUmVx
dWVzdENhbmNlbGxlZChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEp
Cit7CisgICAgYXV0byogZGF0YWJhc2UgPSBtX2RhdGFiYXNlcy5nZXQocmVxdWVzdERhdGEuZGF0
YWJhc2VJZGVudGlmaWVyKCkpOworICAgIGlmICghZGF0YWJhc2UpCisgICAgICAgIHJldHVybjsK
KworICAgIGRhdGFiYXNlLT5vcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKHJlcXVlc3REYXRhLnJlcXVl
c3RJZGVudGlmaWVyKCkpOworCisgICAgLy8gRGF0YWJhc2UgYmVjb21lcyBpZGxlIGFmdGVyIHJl
cXVlc3QgaXMgY2FuY2VsbGVkLgorICAgIGlmIChkYXRhYmFzZS0+dHJ5Q2xvc2UoKSkKKyAgICAg
ICAgbV9kYXRhYmFzZXMucmVtb3ZlKGRhdGFiYXNlLT5pZGVudGlmaWVyKCkpOworfQorCit2b2lk
IElEQlN0b3JhZ2VNYW5hZ2VyOjpyZWdpc3RlckNvbm5lY3Rpb24oV2ViQ29yZTo6SURCU2VydmVy
OjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCit7CisgICAgbV9yZWdp
c3RyeS5yZWdpc3RlckNvbm5lY3Rpb24oY29ubmVjdGlvbik7Cit9CisKK3ZvaWQgSURCU3RvcmFn
ZU1hbmFnZXI6OnVucmVnaXN0ZXJDb25uZWN0aW9uKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVl
SURCRGF0YWJhc2VDb25uZWN0aW9uJiBjb25uZWN0aW9uKQoreworICAgIG1fcmVnaXN0cnkudW5y
ZWdpc3RlckNvbm5lY3Rpb24oY29ubmVjdGlvbik7Cit9CisKK3ZvaWQgSURCU3RvcmFnZU1hbmFn
ZXI6OnJlZ2lzdGVyVHJhbnNhY3Rpb24oV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRh
YmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKK3sKKyAgICBtX3JlZ2lzdHJ5LnJlZ2lzdGVy
VHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pOworfQorCit2b2lkIElEQlN0b3JhZ2VNYW5hZ2VyOjp1
bnJlZ2lzdGVyVHJhbnNhY3Rpb24oV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFz
ZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKK3sKKyAgICBtX3JlZ2lzdHJ5LnVucmVnaXN0ZXJU
cmFuc2FjdGlvbih0cmFuc2FjdGlvbik7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJ
REJTZXJ2ZXI6OklEQkJhY2tpbmdTdG9yZT4gSURCU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZUJhY2tp
bmdTdG9yZShjb25zdCBXZWJDb3JlOjpJREJEYXRhYmFzZUlkZW50aWZpZXImIGlkZW50aWZpZXIp
Cit7CisgICAgaWYgKG1fcGF0aC5pc0VtcHR5KCkgfHwgaWRlbnRpZmllci5pc1RyYW5zaWVudCgp
KQorICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeUlE
QkJhY2tpbmdTdG9yZT4oaWRlbnRpZmllcik7CisKKyAgICBhdXRvIG5hbWUgPSBXZWJDb3JlOjpT
UUxpdGVGaWxlU3lzdGVtOjpjb21wdXRlSGFzaEZvckZpbGVOYW1lKGlkZW50aWZpZXIuZGF0YWJh
c2VOYW1lKCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYkNvcmU6OklEQlNlcnZlcjo6U1FM
aXRlSURCQmFja2luZ1N0b3JlPihpZGVudGlmaWVyLCBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQobV9wYXRoLCBuYW1lKSk7Cit9CisKK3ZvaWQgSURCU3RvcmFnZU1hbmFnZXI6
OnJlcXVlc3RTcGFjZShjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCB1aW50NjRfdCBzaXpl
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorewor
ICAgIG1fcXVvdGFDaGVja0Z1bmN0aW9uKHNpemUsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlTWFuYWdlci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmRhZmY0NzQ0YWM4ZGUwODllNmQwZWQ0ODFiYzgxYmFhNTAwMThjNzQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZU1hbmFn
ZXIuaApAQCAtMCwwICsxLDgyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlIDxXZWJDb3JlL1VuaXF1ZUlEQkRhdGFiYXNlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Vbmlx
dWVJREJEYXRhYmFzZU1hbmFnZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgSURC
UmVxdWVzdERhdGE7CisKK25hbWVzcGFjZSBJREJTZXJ2ZXIgeworY2xhc3MgSURCQmFja2luZ1N0
b3JlOworY2xhc3MgSURCQ29ubmVjdGlvblRvQ2xpZW50OworY2xhc3MgVW5pcXVlSURCVHJhbnNh
Y3Rpb247Cit9CisKK3N0cnVjdCBJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uOworfQorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgSURCU3RvcmFnZVJlZ2lzdHJ5OworCitjbGFzcyBJREJT
dG9yYWdlTWFuYWdlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlE
QkRhdGFiYXNlTWFuYWdlciB7CitwdWJsaWM6CisgICAgc3RhdGljIFN0cmluZyBpZGJTdG9yYWdl
T3JpZ2luRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcm9vdERpcmVjdG9yeSwgY29uc3QgV2ViQ29y
ZTo6Q2xpZW50T3JpZ2luJik7CisgICAgc3RhdGljIHVpbnQ2NF90IGlkYlN0b3JhZ2VTaXplKGNv
bnN0IFN0cmluZyYgb3JpZ2luRGlyZWN0b3J5KTsKKyAgICBzdGF0aWMgSGFzaFNldDxXZWJDb3Jl
OjpDbGllbnRPcmlnaW4+IG9yaWdpbnNPZklEQlN0b3JhZ2VEYXRhKGNvbnN0IFN0cmluZyYgcm9v
dERpcmVjdG9yeSk7CisKKyAgICB1c2luZyBRdW90YUNoZWNrRnVuY3Rpb24gPSBGdW5jdGlvbjx2
b2lkKHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmKT47CisgICAgSURCU3RvcmFnZU1hbmFnZXIoY29uc3QgU3RyaW5nJiBwYXRoLCBJREJTdG9y
YWdlUmVnaXN0cnkmLCBRdW90YUNoZWNrRnVuY3Rpb24mJik7CisgICAgYm9vbCBpc0FjdGl2ZSgp
IGNvbnN0OworICAgIGJvb2wgaGFzRGF0YUluTWVtb3J5KCkgY29uc3Q7CisgICAgdm9pZCBjbG9z
ZURhdGFiYXNlc0ZvckRlbGV0aW9uKCk7CisgICAgdm9pZCBzdG9wRGF0YWJhc2VBY3Rpdml0aWVz
Rm9yU3VzcGVuZCgpOworCisgICAgdm9pZCBvcGVuRGF0YWJhc2UoV2ViQ29yZTo6SURCU2VydmVy
OjpJREJDb25uZWN0aW9uVG9DbGllbnQmLCBjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYp
OworICAgIHZvaWQgb3BlbkRCUmVxdWVzdENhbmNlbGxlZChjb25zdCBXZWJDb3JlOjpJREJSZXF1
ZXN0RGF0YSYpOworICAgIHZvaWQgZGVsZXRlRGF0YWJhc2UoV2ViQ29yZTo6SURCU2VydmVyOjpJ
REJDb25uZWN0aW9uVG9DbGllbnQmLCBjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYpOwor
ICAgIFZlY3RvcjxXZWJDb3JlOjpJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiBnZXRBbGxEYXRh
YmFzZU5hbWVzQW5kVmVyc2lvbnMoKTsKKworcHJpdmF0ZToKKyAgICBXZWJDb3JlOjpJREJTZXJ2
ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlJiBnZXRPckNyZWF0ZVVuaXF1ZUlEQkRhdGFiYXNlKGNvbnN0
IFdlYkNvcmU6OklEQkRhdGFiYXNlSWRlbnRpZmllciYpOworCisgICAgLy8gV2ViQ29yZTo6VW5p
cXVlSURCRGF0YWJhc2VNYW5hZ2VyCisgICAgdm9pZCByZWdpc3RlckNvbm5lY3Rpb24oV2ViQ29y
ZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mKSBmaW5hbDsKKyAgICB2
b2lkIHVucmVnaXN0ZXJDb25uZWN0aW9uKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0
YWJhc2VDb25uZWN0aW9uJikgZmluYWw7CisgICAgdm9pZCByZWdpc3RlclRyYW5zYWN0aW9uKFdl
YkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYpIGZpbmFsOwor
ICAgIHZvaWQgdW5yZWdpc3RlclRyYW5zYWN0aW9uKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVl
SURCRGF0YWJhc2VUcmFuc2FjdGlvbiYpIGZpbmFsOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJD
b3JlOjpJREJTZXJ2ZXI6OklEQkJhY2tpbmdTdG9yZT4gY3JlYXRlQmFja2luZ1N0b3JlKGNvbnN0
IFdlYkNvcmU6OklEQkRhdGFiYXNlSWRlbnRpZmllciYpIGZpbmFsOworICAgIHZvaWQgcmVxdWVz
dFNwYWNlKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIHVpbnQ2NF90IHNpemUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZpbmFsOworCisgICAgU3RyaW5nIG1fcGF0aDsK
KyAgICBJREJTdG9yYWdlUmVnaXN0cnkmIG1fcmVnaXN0cnk7CisgICAgUXVvdGFDaGVja0Z1bmN0
aW9uIG1fcXVvdGFDaGVja0Z1bmN0aW9uOworICAgIEhhc2hNYXA8V2ViQ29yZTo6SURCRGF0YWJh
c2VJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJ
REJEYXRhYmFzZT4+IG1fZGF0YWJhc2VzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFn
ZVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJT
dG9yYWdlUmVnaXN0cnkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM2M2FiNWUyNTUxNmVlNjBmNWY2NDBmNTUx
ZTFmOWJhMWM5ZWE2MWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZVJlZ2lzdHJ5LmNwcApAQCAtMCwwICsxLDEwMSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJREJTdG9yYWdlUmVn
aXN0cnkuaCIKKworI2luY2x1ZGUgIklEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQuaCIKKyNp
bmNsdWRlIDxXZWJDb3JlL1VuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5oPgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworSURCU3RvcmFnZVJlZ2lzdHJ5OjpJREJTdG9yYWdlUmVnaXN0cnkoKSA9IGRlZmF1
bHQ7CisKK1dlYkNvcmU6OklEQlNlcnZlcjo6SURCQ29ubmVjdGlvblRvQ2xpZW50JiBJREJTdG9y
YWdlUmVnaXN0cnk6OmVuc3VyZUNvbm5lY3Rpb25Ub0NsaWVudChJUEM6OkNvbm5lY3Rpb246OlVu
aXF1ZUlEIGNvbm5lY3Rpb24sIFdlYkNvcmU6OklEQkNvbm5lY3Rpb25JZGVudGlmaWVyIGlkZW50
aWZpZXIpCit7CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX2Nvbm5lY3Rpb25zVG9DbGllbnQuYWRk
KGlkZW50aWZpZXIsIG51bGxwdHIpOworICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkKKyAg
ICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8SURCU3RvcmFnZUNv
bm5lY3Rpb25Ub0NsaWVudD4oY29ubmVjdGlvbiwgaWRlbnRpZmllcik7CisKKyAgICBBU1NFUlQo
YWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+aXBjQ29ubmVjdGlvbigpID09IGNvbm5lY3Rpb24p
OworICAgIHJldHVybiBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5jb25uZWN0aW9uVG9DbGll
bnQoKTsKK30KKwordm9pZCBJREJTdG9yYWdlUmVnaXN0cnk6OnJlbW92ZUNvbm5lY3Rpb25Ub0Ns
aWVudChJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGNvbm5lY3Rpb24pCit7CisgICAgYXV0byBh
bGxDb25uZWN0aW9uc1RvQ2xpZW50ID0gc3RkOjpleGNoYW5nZShtX2Nvbm5lY3Rpb25zVG9DbGll
bnQsIHsgfSk7CisgICAgZm9yIChhdXRvJiBbaWRlbnRpZmllciwgY29ubmVjdGlvblRvQ2xpZW50
XSA6IGFsbENvbm5lY3Rpb25zVG9DbGllbnQpIHsKKyAgICAgICAgaWYgKGNvbm5lY3Rpb25Ub0Ns
aWVudC0+aXBjQ29ubmVjdGlvbigpICE9IGNvbm5lY3Rpb24pIHsKKyAgICAgICAgICAgIG1fY29u
bmVjdGlvbnNUb0NsaWVudC5hZGQoaWRlbnRpZmllciwgV1RGTW92ZShjb25uZWN0aW9uVG9DbGll
bnQpKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGNvbm5lY3Rp
b25Ub0NsaWVudC0+Y29ubmVjdGlvblRvQ2xpZW50KCkuY29ubmVjdGlvblRvQ2xpZW50Q2xvc2Vk
KCk7CisgICAgfQorfQorCit2b2lkIElEQlN0b3JhZ2VSZWdpc3RyeTo6cmVnaXN0ZXJDb25uZWN0
aW9uKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiBjb25u
ZWN0aW9uKQoreworICAgIGF1dG8gaWRlbnRpZmllciA9IGNvbm5lY3Rpb24uaWRlbnRpZmllcigp
OworICAgIEFTU0VSVCghbV9jb25uZWN0aW9ucy5jb250YWlucyhpZGVudGlmaWVyKSk7CisKKyAg
ICBtX2Nvbm5lY3Rpb25zLmFkZChpZGVudGlmaWVyLCBjb25uZWN0aW9uKTsKK30KKwordm9pZCBJ
REJTdG9yYWdlUmVnaXN0cnk6OnVucmVnaXN0ZXJDb25uZWN0aW9uKFdlYkNvcmU6OklEQlNlcnZl
cjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiBjb25uZWN0aW9uKQoreworICAgIGF1dG8g
aWRlbnRpZmllciA9IGNvbm5lY3Rpb24uaWRlbnRpZmllcigpOworICAgIEFTU0VSVChtX2Nvbm5l
Y3Rpb25zLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKKworICAgIG1fY29ubmVjdGlvbnMucmVtb3Zl
KGlkZW50aWZpZXIpOworfQorCit2b2lkIElEQlN0b3JhZ2VSZWdpc3RyeTo6cmVnaXN0ZXJUcmFu
c2FjdGlvbihXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24m
IHRyYW5zYWN0aW9uKQoreworICAgIGF1dG8gaWRlbnRpZmllciA9IHRyYW5zYWN0aW9uLmluZm8o
KS5pZGVudGlmaWVyKCk7CisgICAgQVNTRVJUKCFtX3RyYW5zYWN0aW9ucy5jb250YWlucyhpZGVu
dGlmaWVyKSk7CisKKyAgICBtX3RyYW5zYWN0aW9ucy5hZGQoaWRlbnRpZmllciwgdHJhbnNhY3Rp
b24pOworfQorCit2b2lkIElEQlN0b3JhZ2VSZWdpc3RyeTo6dW5yZWdpc3RlclRyYW5zYWN0aW9u
KFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNh
Y3Rpb24pCit7CisgICAgYXV0byBpZGVudGlmaWVyID0gdHJhbnNhY3Rpb24uaW5mbygpLmlkZW50
aWZpZXIoKTsKKyAgICBBU1NFUlQobV90cmFuc2FjdGlvbnMuY29udGFpbnMoaWRlbnRpZmllcikp
OworCisgICAgbV90cmFuc2FjdGlvbnMucmVtb3ZlKGlkZW50aWZpZXIpOworfQorCitXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiogSURCU3RvcmFnZVJlZ2lz
dHJ5Ojpjb25uZWN0aW9uKHVpbnQ2NF90IGlkZW50aWZpZXIpCit7CisgICAgcmV0dXJuIG1fY29u
bmVjdGlvbnMuZ2V0KGlkZW50aWZpZXIpLmdldCgpOworfQorCitXZWJDb3JlOjpJREJTZXJ2ZXI6
OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24qIElEQlN0b3JhZ2VSZWdpc3RyeTo6dHJhbnNh
Y3Rpb24oV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAg
cmV0dXJuIG1fdHJhbnNhY3Rpb25zLmdldChpZGVudGlmaWVyKS5nZXQoKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3N0b3JhZ2UvSURCU3RvcmFnZVJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3N0b3JhZ2UvSURCU3RvcmFnZVJlZ2lzdHJ5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4NGRjZjRmNjE4
Njg3YmU2YzI0ZWUzMjYzY2E0OGY4ODc4NzZhYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlUmVnaXN0cnkuaApAQCAtMCww
ICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDb25uZWN0
aW9uLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9JREJSZXNvdXJjZUlkZW50aWZpZXIuaD4KKyNpbmNs
dWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgSURC
U2VydmVyIHsKK2NsYXNzIFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbjsKK2NsYXNzIFVuaXF1
ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb247Cit9Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitj
bGFzcyBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OworCitjbGFzcyBJREJTdG9yYWdlUmVn
aXN0cnkgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIElEQlN0
b3JhZ2VSZWdpc3RyeSgpOworICAgIFdlYkNvcmU6OklEQlNlcnZlcjo6SURCQ29ubmVjdGlvblRv
Q2xpZW50JiBlbnN1cmVDb25uZWN0aW9uVG9DbGllbnQoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJ
RCwgV2ViQ29yZTo6SURCQ29ubmVjdGlvbklkZW50aWZpZXIpOworICAgIHZvaWQgcmVtb3ZlQ29u
bmVjdGlvblRvQ2xpZW50KElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQpOworICAgIHZvaWQgcmVn
aXN0ZXJDb25uZWN0aW9uKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25u
ZWN0aW9uJik7CisgICAgdm9pZCB1bnJlZ2lzdGVyQ29ubmVjdGlvbihXZWJDb3JlOjpJREJTZXJ2
ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYpOworICAgIFdlYkNvcmU6OklEQlNlcnZl
cjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uKiBjb25uZWN0aW9uKHVpbnQ2NF90IGlkZW50
aWZpZXIpOworICAgIHZvaWQgcmVnaXN0ZXJUcmFuc2FjdGlvbihXZWJDb3JlOjpJREJTZXJ2ZXI6
OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJUcmFu
c2FjdGlvbihXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24m
KTsKKyAgICBXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24q
IHRyYW5zYWN0aW9uKFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllcik7CisKK3ByaXZhdGU6
CisgICAgSGFzaE1hcDxXZWJDb3JlOjpJREJDb25uZWN0aW9uSWRlbnRpZmllciwgc3RkOjp1bmlx
dWVfcHRyPElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ+PiBtX2Nvbm5lY3Rpb25zVG9DbGll
bnQ7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgV2Vha1B0cjxXZWJDb3JlOjpJREJTZXJ2ZXI6OlVu
aXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbj4+IG1fY29ubmVjdGlvbnM7CisgICAgSGFzaE1hcDxX
ZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXIsIFdlYWtQdHI8V2ViQ29yZTo6SURCU2VydmVy
OjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uPj4gbV90cmFuc2FjdGlvbnM7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAKaW5kZXggODEz
ZTZlOTVhMTNhYmUzOTE4NmQxOWIyZGFiMjg3YmJiNTUyNGY3OS4uZDJiN2UxNjY4NzkwZjE2ZDZi
ZjQ4NDI5ZWMwYzFlYzdmNDM1ZDVhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAKQEAg
LTI2LDE4ICsyNiwyNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtT
dG9yYWdlTWFuYWdlci5oIgogCisjaW5jbHVkZSAiQ2FjaGVTdG9yYWdlRW5naW5lLmgiCiAjaW5j
bHVkZSAiRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIkZpbGVT
eXN0ZW1TdG9yYWdlTWFuYWdlci5oIgorI2luY2x1ZGUgIklEQlN0b3JhZ2VDb25uZWN0aW9uVG9D
bGllbnQuaCIKKyNpbmNsdWRlICJJREJTdG9yYWdlTWFuYWdlci5oIgorI2luY2x1ZGUgIklEQlN0
b3JhZ2VSZWdpc3RyeS5oIgogI2luY2x1ZGUgIkxvY2FsU3RvcmFnZU1hbmFnZXIuaCIKICNpbmNs
dWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJP
cmlnaW5TdG9yYWdlTWFuYWdlci5oIgorI2luY2x1ZGUgIlF1b3RhTWFuYWdlci5oIgogI2luY2x1
ZGUgIlNlc3Npb25TdG9yYWdlTWFuYWdlci5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhQmFzZS5o
IgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhTWFwTWVzc2FnZXMuaCIKICNpbmNsdWRlICJTdG9yYWdl
QXJlYVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFUeXBlLmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1VuaXF1ZUlE
QkRhdGFiYXNlQ29ubmVjdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVW5pcXVlSURCRGF0YWJh
c2VUcmFuc2FjdGlvbi5oPgogI2luY2x1ZGUgPHBhbC9jcnlwdG8vQ3J5cHRvRGlnZXN0Lmg+CiAj
aW5jbHVkZSA8d3RmL1Njb3BlLmg+CiAjaW5jbHVkZSA8d3RmL1N1c3BlbmRhYmxlV29ya1F1ZXVl
Lmg+CkBAIC0xMDAsMjIgKzEwOCwyOCBAQCBzdGF0aWMgdm9pZCBkZWxldGVPcmlnaW5GaWxlSWZO
ZWNlc3NhcnkoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKICAgICAgICAgRmlsZVN5c3RlbTo6ZGVs
ZXRlRmlsZShmaWxlUGF0aCk7CiB9CiAKLVJlZjxOZXR3b3JrU3RvcmFnZU1hbmFnZXI+IE5ldHdv
cmtTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
U3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGN1c3RvbUxvY2FsU3RvcmFnZVBhdGgpCitSZWY8
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyPiBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZShQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgY29ubmVjdGlv
biwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGN1c3RvbUxvY2FsU3RvcmFnZVBh
dGgsIGNvbnN0IFN0cmluZyYgY3VzdG9tSURCU3RvcmFnZVBhdGgsIGNvbnN0IFN0cmluZyYgY3Vz
dG9tQ2FjaGVTdG9yYWdlUGF0aCwgdWludDY0X3QgZGVmYXVsdE9yaWdpblF1b3RhLCB1aW50NjRf
dCBkZWZhdWx0VGhpcmRQYXJ0eU9yaWdpblF1b3RhKQogewotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IE5ldHdvcmtTdG9yYWdlTWFuYWdlcihzZXNzaW9uSUQsIHBhdGgsIGN1c3RvbUxvY2FsU3Rv
cmFnZVBhdGgpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXR3b3JrU3RvcmFnZU1hbmFn
ZXIoc2Vzc2lvbklELCBjb25uZWN0aW9uLCBwYXRoLCBjdXN0b21Mb2NhbFN0b3JhZ2VQYXRoLCBj
dXN0b21JREJTdG9yYWdlUGF0aCwgY3VzdG9tQ2FjaGVTdG9yYWdlUGF0aCwgZGVmYXVsdE9yaWdp
blF1b3RhLCBkZWZhdWx0VGhpcmRQYXJ0eU9yaWdpblF1b3RhKSk7CiB9CiAKLU5ldHdvcmtTdG9y
YWdlTWFuYWdlcjo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGN1c3RvbUxvY2FsU3RvcmFnZVBh
dGgpCitOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcihQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgY29ubmVjdGlvbiwg
Y29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGN1c3RvbUxvY2FsU3RvcmFnZVBhdGgs
IGNvbnN0IFN0cmluZyYgY3VzdG9tSURCU3RvcmFnZVBhdGgsIGNvbnN0IFN0cmluZyYgY3VzdG9t
Q2FjaGVTdG9yYWdlUGF0aCwgdWludDY0X3QgZGVmYXVsdE9yaWdpblF1b3RhLCB1aW50NjRfdCBk
ZWZhdWx0VGhpcmRQYXJ0eU9yaWdpblF1b3RhKQogICAgIDogbV9zZXNzaW9uSUQoc2Vzc2lvbklE
KQogICAgICwgbV9xdWV1ZShTdXNwZW5kYWJsZVdvcmtRdWV1ZTo6Y3JlYXRlKCJjb20uYXBwbGUu
V2ViS2l0LlN0b3JhZ2UiKSkKKyAgICAsIG1fZGVmYXVsdE9yaWdpblF1b3RhKGRlZmF1bHRPcmln
aW5RdW90YSkKKyAgICAsIG1fZGVmYXVsdFRoaXJkUGFydHlPcmlnaW5RdW90YShkZWZhdWx0VGhp
cmRQYXJ0eU9yaWdpblF1b3RhKQorICAgICwgbV9wYXJlbnRDb25uZWN0aW9uKGNvbm5lY3Rpb24p
CiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIG1fcXVldWUtPmRpc3Bh
dGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgcGF0aCA9IHBhdGguaXNv
bGF0ZWRDb3B5KCksIGN1c3RvbUxvY2FsU3RvcmFnZVBhdGggPSBjcm9zc1RocmVhZENvcHkoY3Vz
dG9tTG9jYWxTdG9yYWdlUGF0aCldKCkgbXV0YWJsZSB7CisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2go
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBwYXRoID0gcGF0aC5pc29sYXRl
ZENvcHkoKSwgY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCA9IGNyb3NzVGhyZWFkQ29weShjdXN0b21M
b2NhbFN0b3JhZ2VQYXRoKSwgY3VzdG9tSURCU3RvcmFnZVBhdGggPSBjcm9zc1RocmVhZENvcHko
Y3VzdG9tSURCU3RvcmFnZVBhdGgpLCBjdXN0b21DYWNoZVN0b3JhZ2VQYXRoID0gY3Jvc3NUaHJl
YWRDb3B5KGN1c3RvbUNhY2hlU3RvcmFnZVBhdGgpXSgpIG11dGFibGUgewogICAgICAgICBtX2Zp
bGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnkgPSBtYWtlVW5pcXVlPEZpbGVTeXN0ZW1TdG9y
YWdlSGFuZGxlUmVnaXN0cnk+KCk7CiAgICAgICAgIG1fc3RvcmFnZUFyZWFSZWdpc3RyeSA9IG1h
a2VVbmlxdWU8U3RvcmFnZUFyZWFSZWdpc3RyeT4oKTsKKyAgICAgICAgbV9pZGJTdG9yYWdlUmVn
aXN0cnkgPSBtYWtlVW5pcXVlPElEQlN0b3JhZ2VSZWdpc3RyeT4oKTsKICAgICAgICAgbV9wYXRo
ID0gcGF0aDsKICAgICAgICAgbV9jdXN0b21Mb2NhbFN0b3JhZ2VQYXRoID0gY3VzdG9tTG9jYWxT
dG9yYWdlUGF0aDsKKyAgICAgICAgbV9jdXN0b21JREJTdG9yYWdlUGF0aCA9IGN1c3RvbUlEQlN0
b3JhZ2VQYXRoOworICAgICAgICBtX2N1c3RvbUNhY2hlU3RvcmFnZVBhdGggPSBjdXN0b21DYWNo
ZVN0b3JhZ2VQYXRoOwogICAgICAgICBpZiAoIW1fcGF0aC5pc0VtcHR5KCkpIHsKICAgICAgICAg
ICAgIGF1dG8gc2FsdFBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
bV9wYXRoLCAic2FsdCIpOwogICAgICAgICAgICAgbV9zYWx0ID0gdmFsdWVPckRlZmF1bHQoRmls
ZVN5c3RlbTo6cmVhZE9yTWFrZVNhbHQoc2FsdFBhdGgpKTsKQEAgLTEzMSw3ICsxNDUsMTAgQEAg
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjp+TmV0d29ya1N0b3JhZ2VNYW5hZ2VyKCkKIAogYm9vbCBO
ZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNhbkhhbmRsZVR5cGVzKE9wdGlvblNldDxXZWJzaXRlRGF0
YVR5cGU+IHR5cGVzKQogewotICAgIHJldHVybiB0eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5
cGU6OkxvY2FsU3RvcmFnZSkgfHwgdHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpTZXNz
aW9uU3RvcmFnZSkgfHwgdHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpGaWxlU3lzdGVt
KTsKKyAgICByZXR1cm4gdHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpMb2NhbFN0b3Jh
Z2UpCisgICAgICAgIHx8IHR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6U2Vzc2lvblN0
b3JhZ2UpCisgICAgICAgIHx8IHR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6RmlsZVN5
c3RlbSkKKyAgICAgICAgfHwgdHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVk
REJEYXRhYmFzZXMpOwogfQogCiB2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y2xvc2UoKQpA
QCAtMTcwLDYgKzE4Nyw3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpzdG9wUmVjZWl2
aW5nTWVzc2FnZUZyb21Db25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiYKIAogICAgIGNvbm5lY3Rp
b24ucmVtb3ZlV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFn
ZU1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7CiAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2go
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBjb25uZWN0aW9uID0gY29ubmVj
dGlvbi51bmlxdWVJRCgpXSgpIG11dGFibGUgeworICAgICAgICBtX2lkYlN0b3JhZ2VSZWdpc3Ry
eS0+cmVtb3ZlQ29ubmVjdGlvblRvQ2xpZW50KGNvbm5lY3Rpb24pOwogICAgICAgICBtX2xvY2Fs
T3JpZ2luU3RvcmFnZU1hbmFnZXJzLnJlbW92ZUlmKFsmXShhdXRvJiBlbnRyeSkgewogICAgICAg
ICAgICAgYXV0byYgbWFuYWdlciA9IGVudHJ5LnZhbHVlOwogICAgICAgICAgICAgbWFuYWdlci0+
Y29ubmVjdGlvbkNsb3NlZChjb25uZWN0aW9uKTsKQEAgLTIyMiw3ICsyNDAsMTQgQEAgT3JpZ2lu
U3RvcmFnZU1hbmFnZXImIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6bG9jYWxPcmlnaW5TdG9yYWdl
TWFuYWdlcihjb25zdCBXZWIKICAgICAgICAgICAgICAgICB3cml0ZU9yaWdpblRvRmlsZUlmTmVj
ZXNzYXJ5KG9yaWdpbkZpbGVQYXRoKG9yaWdpbkRpcmVjdG9yeSksIG9yaWdpbik7CiAgICAgICAg
ICAgICB9KTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxPcmlnaW5TdG9y
YWdlTWFuYWdlcj4oV1RGTW92ZShvcmlnaW5EaXJlY3RvcnkpLCBMb2NhbFN0b3JhZ2VNYW5hZ2Vy
Ojpsb2NhbFN0b3JhZ2VGaWxlUGF0aChtX2N1c3RvbUxvY2FsU3RvcmFnZVBhdGgsIG9yaWdpbikp
OworICAgICAgICBhdXRvIGxvY2FsU3RvcmFnZVBhdGggPSBMb2NhbFN0b3JhZ2VNYW5hZ2VyOjps
b2NhbFN0b3JhZ2VGaWxlUGF0aChtX2N1c3RvbUxvY2FsU3RvcmFnZVBhdGgsIG9yaWdpbik7Cisg
ICAgICAgIGF1dG8gaWRiU3RvcmFnZVBhdGggPSBJREJTdG9yYWdlTWFuYWdlcjo6aWRiU3RvcmFn
ZU9yaWdpbkRpcmVjdG9yeShtX2N1c3RvbUlEQlN0b3JhZ2VQYXRoLCBvcmlnaW4pOworICAgICAg
ICBhdXRvIGNhY2hlU3RvcmFnZVBhdGggPSBDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6c3RvcmFnZVBh
dGgobV9jdXN0b21DYWNoZVN0b3JhZ2VQYXRoLCBvcmlnaW4pOworICAgICAgICB1aW50NjRfdCBx
dW90YSA9IG9yaWdpbi50b3BPcmlnaW4gPT0gb3JpZ2luLmNsaWVudE9yaWdpbiA/IG1fZGVmYXVs
dE9yaWdpblF1b3RhIDogbV9kZWZhdWx0VGhpcmRQYXJ0eU9yaWdpblF1b3RhOworICAgICAgICBR
dW90YU1hbmFnZXI6OkluY3JlYXNlUXVvdGFGdW5jdGlvbiBpbmNyZWFzZVF1b3RhRnVuY3Rpb24g
PSBbc2Vzc2lvbklEID0gbV9zZXNzaW9uSUQsIG9yaWdpbiwgY29ubmVjdGlvbiA9IG1fcGFyZW50
Q29ubmVjdGlvbl0gKGF1dG8gaWRlbnRpZmllciwgYXV0byBjdXJyZW50UXVvdGEsIGF1dG8gY3Vy
cmVudFVzYWdlLCBhdXRvIHJlcXVlc3RlZEluY3JlYXNlKSBtdXRhYmxlIHsKKyAgICAgICAgICAg
IElQQzo6Q29ubmVjdGlvbjo6c2VuZChjb25uZWN0aW9uLCBNZXNzYWdlczo6TmV0d29ya1Byb2Nl
c3NQcm94eTo6SW5jcmVhc2VRdW90YShzZXNzaW9uSUQsIG9yaWdpbiwgaWRlbnRpZmllciwgY3Vy
cmVudFF1b3RhLCBjdXJyZW50VXNhZ2UsIHJlcXVlc3RlZEluY3JlYXNlKSwgMCk7CisgICAgICAg
IH07CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPE9yaWdpblN0b3JhZ2VNYW5hZ2VyPihxdW90
YSwgV1RGTW92ZShpbmNyZWFzZVF1b3RhRnVuY3Rpb24pLCBXVEZNb3ZlKG9yaWdpbkRpcmVjdG9y
eSksIFdURk1vdmUobG9jYWxTdG9yYWdlUGF0aCksIFdURk1vdmUoaWRiU3RvcmFnZVBhdGgpLCBX
VEZNb3ZlKGNhY2hlU3RvcmFnZVBhdGgpKTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiB9CiAK
QEAgLTI4Miw2ICszMDcsMTYgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNsZWFyU3Rv
cmFnZUZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGMKICAgICB9KTsKIH0K
IAordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmRpZEluY3JlYXNlUXVvdGEoY29uc3QgV2Vi
Q29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmll
ciBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBuZXdRdW90YSkKK3sKKyAgICBB
U1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBvcmlnaW4gPSBjcm9zc1RocmVhZENvcHko
b3JpZ2luKSwgaWRlbnRpZmllciwgbmV3UXVvdGFdKCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChh
dXRvIG1hbmFnZXIgPSBtX2xvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXJzLmdldChvcmlnaW4pKQor
ICAgICAgICAgICAgbWFuYWdlci0+cXVvdGFNYW5hZ2VyKCkuZGlkSW5jcmVhc2VRdW90YShpZGVu
dGlmaWVyLCBuZXdRdW90YSk7CisgICAgfSk7Cit9CisKIHZvaWQgTmV0d29ya1N0b3JhZ2VNYW5h
Z2VyOjpmaWxlU3lzdGVtR2V0RGlyZWN0b3J5KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwg
Y29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoRXhwZWN0ZWQ8V2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIEZpbGVTeXN0
ZW1TdG9yYWdlRXJyb3I+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1
bkxvb3A6OmlzTWFpbigpKTsKQEAgLTQ1Miw2ICs0ODcsOSBAQCBIYXNoU2V0PFdlYkNvcmU6OkNs
aWVudE9yaWdpbj4gTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpnZXRBbGxPcmlnaW5zKCkKICAgICBm
b3IgKGF1dG8mIG9yaWdpbiA6IExvY2FsU3RvcmFnZU1hbmFnZXI6Om9yaWdpbnNPZkxvY2FsU3Rv
cmFnZURhdGEobV9jdXN0b21Mb2NhbFN0b3JhZ2VQYXRoKSkKICAgICAgICAgYWxsT3JpZ2lucy5h
ZGQoV2ViQ29yZTo6Q2xpZW50T3JpZ2luIHsgb3JpZ2luLCBvcmlnaW4gfSk7CiAKKyAgICBmb3Ig
KGF1dG8mIG9yaWdpbiA6IElEQlN0b3JhZ2VNYW5hZ2VyOjpvcmlnaW5zT2ZJREJTdG9yYWdlRGF0
YShtX2N1c3RvbUlEQlN0b3JhZ2VQYXRoKSkKKyAgICAgICAgYWxsT3JpZ2lucy5hZGQob3JpZ2lu
KTsKKwogICAgIHJldHVybiBhbGxPcmlnaW5zOwogfQogCkBAIC01NzksMTIgKzYxNywxNyBAQCB2
b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6bW92ZURhdGEoY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiBzb3VyY2UsCiAgICAgICAgIGF1dG8gdGFyZ2V0T3JpZ2luID0gV2ViQ29y
ZTo6Q2xpZW50T3JpZ2luIHsgdGFyZ2V0LCB0YXJnZXQgfTsKICAgICAgICAgCiAgICAgICAgIC8v
IENsZWFyIGV4aXN0aW5nIGRhdGEgb2YgdGFyZ2V0IG9yaWdpbi4KLSAgICAgICAgT3B0aW9uU2V0
PFdlYnNpdGVEYXRhVHlwZT4gdHlwZXMgPSB7IFdlYnNpdGVEYXRhVHlwZTo6RmlsZVN5c3RlbSwg
V2Vic2l0ZURhdGFUeXBlOjpMb2NhbFN0b3JhZ2UsIFdlYnNpdGVEYXRhVHlwZTo6U2Vzc2lvblN0
b3JhZ2UgIH07CisgICAgICAgIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHR5cGVzID0gewor
ICAgICAgICAgICAgV2Vic2l0ZURhdGFUeXBlOjpGaWxlU3lzdGVtLAorICAgICAgICAgICAgV2Vi
c2l0ZURhdGFUeXBlOjpMb2NhbFN0b3JhZ2UsCisgICAgICAgICAgICBXZWJzaXRlRGF0YVR5cGU6
OlNlc3Npb25TdG9yYWdlLAorICAgICAgICAgICAgV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJE
YXRhYmFzZXMKKyAgICAgICAgfTsKICAgICAgICAgbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcih0
YXJnZXRPcmlnaW4pLmRlbGV0ZURhdGEodHlwZXMsIC1XYWxsVGltZTo6aW5maW5pdHkoKSk7CiAg
ICAgICAgIHJlbW92ZU9yaWdpblN0b3JhZ2VNYW5hZ2VySWZQb3NzaWJsZSh0YXJnZXRPcmlnaW4p
OwogCiAgICAgICAgIC8vIE1vdmUgZGF0YSBmcm9tIHNvdXJjZSBvcmlnaW4gdG8gdGFyZ2V0IG9y
aWdpbi4KLSAgICAgICAgbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcihzb3VyY2VPcmlnaW4pLm1v
dmVEYXRhKG9yaWdpbkRpcmVjdG9yeVBhdGgobV9wYXRoLCB0YXJnZXRPcmlnaW4sIG1fc2FsdCks
IExvY2FsU3RvcmFnZU1hbmFnZXI6OmxvY2FsU3RvcmFnZUZpbGVQYXRoKG1fY3VzdG9tTG9jYWxT
dG9yYWdlUGF0aCwgdGFyZ2V0T3JpZ2luKSk7CisgICAgICAgIGxvY2FsT3JpZ2luU3RvcmFnZU1h
bmFnZXIoc291cmNlT3JpZ2luKS5tb3ZlRGF0YShvcmlnaW5EaXJlY3RvcnlQYXRoKG1fcGF0aCwg
dGFyZ2V0T3JpZ2luLCBtX3NhbHQpLCBMb2NhbFN0b3JhZ2VNYW5hZ2VyOjpsb2NhbFN0b3JhZ2VG
aWxlUGF0aChtX2N1c3RvbUxvY2FsU3RvcmFnZVBhdGgsIHRhcmdldE9yaWdpbiksIElEQlN0b3Jh
Z2VNYW5hZ2VyOjppZGJTdG9yYWdlT3JpZ2luRGlyZWN0b3J5KG1fY3VzdG9tSURCU3RvcmFnZVBh
dGgsIHRhcmdldE9yaWdpbikpOwogICAgICAgICByZW1vdmVPcmlnaW5TdG9yYWdlTWFuYWdlcklm
UG9zc2libGUoc291cmNlT3JpZ2luKTsKIAogICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0
Y2goV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwpAQCAtNTk5LDYgKzY0Miw4IEBAIHZvaWQg
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpzdXNwZW5kKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlCiAgICAgICAgIGZvciAoYXV0byYgbWFuYWdlciA6IG1fbG9jYWxP
cmlnaW5TdG9yYWdlTWFuYWdlcnMudmFsdWVzKCkpIHsKICAgICAgICAgICAgIGlmIChhdXRvIGxv
Y2FsU3RvcmFnZU1hbmFnZXIgPSBtYW5hZ2VyLT5leGlzdGluZ0xvY2FsU3RvcmFnZU1hbmFnZXIo
KSkKICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2VNYW5hZ2VyLT5zeW5jTG9jYWxTdG9yYWdl
KCk7CisgICAgICAgICAgICBpZiAoYXV0byBpZGJTdG9yYWdlTWFuYWdlciA9IG1hbmFnZXItPmV4
aXN0aW5nSURCU3RvcmFnZU1hbmFnZXIoKSkKKyAgICAgICAgICAgICAgICBpZGJTdG9yYWdlTWFu
YWdlci0+c3RvcERhdGFiYXNlQWN0aXZpdGllc0ZvclN1c3BlbmQoKTsKICAgICAgICAgfQogICAg
IH0sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KQEAgLTYzNiw2ICs2ODEsNTIgQEAg
dm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnN5bmNMb2NhbFN0b3JhZ2UoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZXQKICAgICB9KTsKIH0KIAordm9pZCBOZXR3b3JrU3RvcmFn
ZU1hbmFnZXI6OnJlZ2lzdGVyVGVtcG9yYXJ5QmxvYkZpbGVQYXRocyhJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlUGF0aHMpCit7CisgICAgQVNT
RVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY29ubmVjdGlvbklEID0gY29ubmVjdGlvbi51
bmlxdWVJRCgpLCBmaWxlUGF0aHMgPSBjcm9zc1RocmVhZENvcHkoZmlsZVBhdGhzKV0geworICAg
ICAgICBhdXRvJiB0ZW1wb3JhcnlCbG9iUGF0aHMgPSBtX3RlbXBvcmFyeUJsb2JQYXRoc0J5Q29u
bmVjdGlvbi5lbnN1cmUoY29ubmVjdGlvbklELCBbXSB7CisgICAgICAgICAgICByZXR1cm4gSGFz
aFNldDxTdHJpbmc+IHsgfTsKKyAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOworICAgICAgICB0
ZW1wb3JhcnlCbG9iUGF0aHMuYWRkKGZpbGVQYXRocy5iZWdpbigpLCBmaWxlUGF0aHMuZW5kKCkp
OworICAgIH0pOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6cmVxdWVzdFNwYWNl
KGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCB1aW50NjRfdCBzaXplLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIEFT
U0VSVChSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIG9yaWdpbiA9IGNyb3NzVGhyZWFkQ29weShv
cmlnaW4pLCBzaXplLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSgpIG11dGFibGUgeworICAgICAgICBsb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2VyKG9yaWdp
bikucXVvdGFNYW5hZ2VyKCkucmVxdWVzdFNwYWNlKHNpemUsIFtjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvIGRlY2lzaW9uKSBtdXRhYmxlIHsKKyAg
ICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgZGVjaXNpb25dKCkgbXV0YWJsZSB7CisgICAgICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZGVjaXNpb24gPT0gUXVvdGFNYW5hZ2VyOjpEZWNp
c2lvbjo6R3JhbnQpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0pOworfQor
Cit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6cmVzZXRRdW90YUZvclRlc3RpbmcoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIEFTU0VSVChS
dW5Mb29wOjppc01haW4oKSk7CisKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIGZvciAoYXV0byYgbWFuYWdlciA6
IG1fbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcnMudmFsdWVzKCkpCisgICAgICAgICAgICBtYW5h
Z2VyLT5xdW90YU1hbmFnZXIoKS5yZXNldFF1b3RhRm9yVGVzdGluZygpOworICAgICAgICBSdW5M
b29wOjptYWluKCkuZGlzcGF0Y2goV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIH0p
OworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6cmVzZXRRdW90YVVwZGF0ZWRCYXNl
ZE9uVXNhZ2VGb3JUZXN0aW5nKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luKQor
eworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBtX3F1ZXVlLT5kaXNwYXRj
aChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIG9yaWdpbiA9IGNyb3NzVGhy
ZWFkQ29weShvcmlnaW4pXSgpIG11dGFibGUgeworICAgICAgICBpZiAoYXV0byBtYW5hZ2VyID0g
bV9sb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2Vycy5nZXQob3JpZ2luKSkKKyAgICAgICAgICAgIG1h
bmFnZXItPnF1b3RhTWFuYWdlcigpLnJlc2V0UXVvdGFVcGRhdGVkQmFzZWRPblVzYWdlRm9yVGVz
dGluZygpOworICAgIH0pOworfQorCiB2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y29ubmVj
dFRvU3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBXZWJDb3JlOjpTdG9y
YWdlVHlwZSB0eXBlLCBTdG9yYWdlQXJlYU1hcElkZW50aWZpZXIgc291cmNlSWRlbnRpZmllciwg
U3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIgbmFtZXNwYWNlSWRlbnRpZmllciwgY29uc3QgV2Vi
Q29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFn
ZUFyZWFJZGVudGlmaWVyLCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiwgdWludDY0X3QpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAt
NzIzLDUgKzgxNCwxOTUgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNsZWFyKElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU3RvcmFnZUFyZWFJZGVudGkKICAgICBjb21wbGV0aW9u
SGFuZGxlcigpOwogfQogCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6b3BlbkRhdGFiYXNl
KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERh
dGEmIHJlcXVlc3REYXRhKQoreworICAgIGF1dG8mIGNvbm5lY3Rpb25Ub0NsaWVudCA9IG1faWRi
U3RvcmFnZVJlZ2lzdHJ5LT5lbnN1cmVDb25uZWN0aW9uVG9DbGllbnQoY29ubmVjdGlvbi51bmlx
dWVJRCgpLCByZXF1ZXN0RGF0YS5yZXF1ZXN0SWRlbnRpZmllcigpLmNvbm5lY3Rpb25JZGVudGlm
aWVyKCkpOworICAgIGxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIocmVxdWVzdERhdGEuZGF0YWJh
c2VJZGVudGlmaWVyKCkub3JpZ2luKCkpLmlkYlN0b3JhZ2VNYW5hZ2VyKCptX2lkYlN0b3JhZ2VS
ZWdpc3RyeSkub3BlbkRhdGFiYXNlKGNvbm5lY3Rpb25Ub0NsaWVudCwgcmVxdWVzdERhdGEpOwor
fQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6b3BlbkRCUmVxdWVzdENhbmNlbGxlZChj
b25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEpCit7CisgICAgbG9jYWxP
cmlnaW5TdG9yYWdlTWFuYWdlcihyZXF1ZXN0RGF0YS5kYXRhYmFzZUlkZW50aWZpZXIoKS5vcmln
aW4oKSkuaWRiU3RvcmFnZU1hbmFnZXIoKm1faWRiU3RvcmFnZVJlZ2lzdHJ5KS5vcGVuREJSZXF1
ZXN0Q2FuY2VsbGVkKHJlcXVlc3REYXRhKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFn
ZXI6OmRlbGV0ZURhdGFiYXNlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgV2Vi
Q29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhKQoreworICAgIGF1dG8mIGNvbm5lY3Rp
b25Ub0NsaWVudCA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT5lbnN1cmVDb25uZWN0aW9uVG9DbGll
bnQoY29ubmVjdGlvbi51bmlxdWVJRCgpLCByZXF1ZXN0RGF0YS5yZXF1ZXN0SWRlbnRpZmllcigp
LmNvbm5lY3Rpb25JZGVudGlmaWVyKCkpOworICAgIGxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIo
cmVxdWVzdERhdGEuZGF0YWJhc2VJZGVudGlmaWVyKCkub3JpZ2luKCkpLmlkYlN0b3JhZ2VNYW5h
Z2VyKCptX2lkYlN0b3JhZ2VSZWdpc3RyeSkuZGVsZXRlRGF0YWJhc2UoY29ubmVjdGlvblRvQ2xp
ZW50LCByZXF1ZXN0RGF0YSk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjplc3Rh
Ymxpc2hUcmFuc2FjdGlvbih1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBj
b25zdCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkluZm8mIHRyYW5zYWN0aW9uSW5mbykKK3sKKyAg
ICBpZiAoYXV0byBjb25uZWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPmNvbm5lY3Rpb24o
ZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcikpCisgICAgICAgIGNvbm5lY3Rpb24tPmVzdGFi
bGlzaFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSW5mbyk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyOjpkYXRhYmFzZUNvbm5lY3Rpb25QZW5kaW5nQ2xvc2UodWludDY0X3QgZGF0YWJh
c2VDb25uZWN0aW9uSWRlbnRpZmllcikKK3sKKyAgICBpZiAoYXV0byBjb25uZWN0aW9uID0gbV9p
ZGJTdG9yYWdlUmVnaXN0cnktPmNvbm5lY3Rpb24oZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmll
cikpCisgICAgICAgIGNvbm5lY3Rpb24tPmNvbm5lY3Rpb25QZW5kaW5nQ2xvc2VGcm9tQ2xpZW50
KCk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkYXRhYmFzZUNvbm5lY3Rpb25D
bG9zZWQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcikKK3sKKyAgICBpZiAo
YXV0byBjb25uZWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPmNvbm5lY3Rpb24oZGF0YWJh
c2VDb25uZWN0aW9uSWRlbnRpZmllcikpCisgICAgICAgIGNvbm5lY3Rpb24tPmNvbm5lY3Rpb25D
bG9zZWRGcm9tQ2xpZW50KCk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjphYm9y
dE9wZW5BbmRVcGdyYWRlTmVlZGVkKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZp
ZXIsIGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVu
dGlmaWVyKQoreworICAgIGlmIChhdXRvIHRyYW5zYWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0
cnktPnRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllcikpCisgICAgICAgIHRyYW5zYWN0
aW9uLT5hYm9ydFdpdGhvdXRDYWxsYmFjaygpOworCisgICAgaWYgKGF1dG8gY29ubmVjdGlvbiA9
IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT5jb25uZWN0aW9uKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50
aWZpZXIpKQorICAgICAgICBjb25uZWN0aW9uLT5jb25uZWN0aW9uQ2xvc2VkRnJvbUNsaWVudCgp
OworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGlkRmlyZVZlcnNpb25DaGFuZ2VF
dmVudCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3Jl
OjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3Jl
OjpJbmRleGVkREI6OkNvbm5lY3Rpb25DbG9zZWRPbkJlaGFsZk9mU2VydmVyIGNvbm5lY3Rpb25D
bG9zZWQpCit7CisgICAgaWYgKGF1dG8gY29ubmVjdGlvbiA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5
LT5jb25uZWN0aW9uKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpKQorICAgICAgICBjb25u
ZWN0aW9uLT5kaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KHJlcXVlc3RJZGVudGlmaWVyLCBjb25u
ZWN0aW9uQ2xvc2VkKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmFib3J0VHJh
bnNhY3Rpb24oY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlv
bklkZW50aWZpZXIpCit7CisgICAgaWYgKGF1dG8gdHJhbnNhY3Rpb24gPSBtX2lkYlN0b3JhZ2VS
ZWdpc3RyeS0+dHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZGVudGlmaWVyKSkKKyAgICAgICAgdHJh
bnNhY3Rpb24tPmFib3J0KCk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjb21t
aXRUcmFuc2FjdGlvbihjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5z
YWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgcGVuZGluZ1JlcXVlc3RDb3VudCkKK3sKKyAgICBp
ZiAoYXV0byB0cmFuc2FjdGlvbiA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT50cmFuc2FjdGlvbih0
cmFuc2FjdGlvbklkZW50aWZpZXIpKQorICAgICAgICB0cmFuc2FjdGlvbi0+Y29tbWl0KHBlbmRp
bmdSZXF1ZXN0Q291bnQpOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGlkRmlu
aXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24odWludDY0X3QgZGF0YWJhc2VDb25u
ZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0
cmFuc2FjdGlvbklkZW50aWZpZXIpCit7CisgICAgaWYgKGF1dG8gY29ubmVjdGlvbiA9IG1faWRi
U3RvcmFnZVJlZ2lzdHJ5LT5jb25uZWN0aW9uKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIp
KQorICAgICAgICBjb25uZWN0aW9uLT5kaWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2UodHJh
bnNhY3Rpb25JZGVudGlmaWVyKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNy
ZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0
YSwgY29uc3QgV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVJbmZvJiBvYmplY3RTdG9yZUluZm8pCit7
CisgICAgaWYgKGF1dG8gdHJhbnNhY3Rpb24gPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+dHJhbnNh
Y3Rpb24ocmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCkpKSB7CisgICAgICAgIEFT
U0VSVCh0cmFuc2FjdGlvbi0+aXNWZXJzaW9uQ2hhbmdlKCkpOworICAgICAgICB0cmFuc2FjdGlv
bi0+Y3JlYXRlT2JqZWN0U3RvcmUocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSW5mbyk7CisgICAg
fQorfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlT2JqZWN0U3RvcmUoY29u
c3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBTdHJpbmcmIG9i
amVjdFN0b3JlTmFtZSkKK3sKKyAgICBpZiAoYXV0byB0cmFuc2FjdGlvbiA9IG1faWRiU3RvcmFn
ZVJlZ2lzdHJ5LT50cmFuc2FjdGlvbihyZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIo
KSkpIHsKKyAgICAgICAgQVNTRVJUKHRyYW5zYWN0aW9uLT5pc1ZlcnNpb25DaGFuZ2UoKSk7Cisg
ICAgICAgIHRyYW5zYWN0aW9uLT5kZWxldGVPYmplY3RTdG9yZShyZXF1ZXN0RGF0YSwgb2JqZWN0
U3RvcmVOYW1lKTsKKyAgICB9Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpyZW5h
bWVPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEs
IHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lKQor
eworICAgIGlmIChhdXRvIHRyYW5zYWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPnRyYW5z
YWN0aW9uKHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpKSkgeworICAgICAgICBB
U1NFUlQodHJhbnNhY3Rpb24tPmlzVmVyc2lvbkNoYW5nZSgpKTsKKyAgICAgICAgdHJhbnNhY3Rp
b24tPnJlbmFtZU9iamVjdFN0b3JlKHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIs
IG5ld05hbWUpOworICAgIH0KK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNsZWFy
T2JqZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCB1
aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIpCit7CisgICAgaWYgKGF1dG8gdHJhbnNhY3Rp
b24gPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+dHJhbnNhY3Rpb24ocmVxdWVzdERhdGEudHJhbnNh
Y3Rpb25JZGVudGlmaWVyKCkpKQorICAgICAgICB0cmFuc2FjdGlvbi0+Y2xlYXJPYmplY3RTdG9y
ZShyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKK30KKwordm9pZCBOZXR3b3Jr
U3RvcmFnZU1hbmFnZXI6OmNyZWF0ZUluZGV4KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRh
JiByZXF1ZXN0RGF0YSwgY29uc3QgV2ViQ29yZTo6SURCSW5kZXhJbmZvJiBpbmRleEluZm8pCit7
CisgICAgaWYgKGF1dG8gdHJhbnNhY3Rpb24gPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+dHJhbnNh
Y3Rpb24ocmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCkpKQorICAgICAgICB0cmFu
c2FjdGlvbi0+Y3JlYXRlSW5kZXgocmVxdWVzdERhdGEsIGluZGV4SW5mbyk7Cit9CisKK3ZvaWQg
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVJbmRleChjb25zdCBXZWJDb3JlOjpJREJSZXF1
ZXN0RGF0YSYgcmVxdWVzdERhdGEsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBpbmRleE5hbWUpCit7CisgICAgaWYgKGF1dG8gdHJhbnNhY3Rpb24gPSBtX2lk
YlN0b3JhZ2VSZWdpc3RyeS0+dHJhbnNhY3Rpb24ocmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVu
dGlmaWVyKCkpKQorICAgICAgICB0cmFuc2FjdGlvbi0+ZGVsZXRlSW5kZXgocmVxdWVzdERhdGEs
IG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhOYW1lKTsKK30KKwordm9pZCBOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6OnJlbmFtZUluZGV4KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiBy
ZXF1ZXN0RGF0YSwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRl
eElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSkKK3sKKyAgICBpZiAoYXV0byB0cmFu
c2FjdGlvbiA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT50cmFuc2FjdGlvbihyZXF1ZXN0RGF0YS50
cmFuc2FjdGlvbklkZW50aWZpZXIoKSkpCisgICAgICAgIHRyYW5zYWN0aW9uLT5yZW5hbWVJbmRl
eChyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleElkZW50aWZpZXIsIG5l
d05hbWUpOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6cHV0T3JBZGQoSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVx
dWVzdERhdGEsIGNvbnN0IFdlYkNvcmU6OklEQktleURhdGEmIGtleURhdGEsIGNvbnN0IFdlYkNv
cmU6OklEQlZhbHVlJiB2YWx1ZSwgV2ViQ29yZTo6SW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3
cml0ZU1vZGUgb3ZlcndyaXRlTW9kZSkKK3sKKyAgICBpZiAodmFsdWUuYmxvYlVSTHMoKS5zaXpl
KCkgIT0gdmFsdWUuYmxvYkZpbGVQYXRocygpLnNpemUoKSkgeworICAgICAgICBSRUxFQVNFX0xP
R19GQVVMVChJbmRleGVkREIsICJOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnB1dE9yQWRkOiBOdW1i
ZXIgb2YgYmxvYiBVUkxzIGRvZXNuJ3QgbWF0Y2ggdGhlIG51bWJlciBvZiBibG9iIGZpbGUgcGF0
aHMuIik7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgLy8gVmFsaWRhdGUgdGVtcG9yYXJ5IGJsb2IgcGF0aHMgaW4gfHZhbHVlfCB0
byBtYWtlIHN1cmUgdGhleSBiZWxvbmcgdG8gdGhlIHNvdXJjZSBwcm9jZXNzLgorICAgIGlmICgh
dmFsdWUuYmxvYkZpbGVQYXRocygpLmlzRW1wdHkoKSkgeworICAgICAgICBhdXRvIGl0ID0gbV90
ZW1wb3JhcnlCbG9iUGF0aHNCeUNvbm5lY3Rpb24uZmluZChjb25uZWN0aW9uLnVuaXF1ZUlEKCkp
OworICAgICAgICBpZiAoaXQgPT0gbV90ZW1wb3JhcnlCbG9iUGF0aHNCeUNvbm5lY3Rpb24uZW5k
KCkpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0ZBVUxUKEluZGV4ZWREQiwgIk5ldHdvcmtT
dG9yYWdlTWFuYWdlcjo6cHV0T3JBZGQ6IElEQlZhbHVlIGNvbnRhaW5zIGJsb2IgcGF0aHMgYnV0
IG5vbmUgYXJlIGFsbG93ZWQgZm9yIHRoaXMgcHJvY2VzcyIpOworICAgICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg
ICBhdXRvJiB0ZW1wb3JhcnlCbG9iUGF0aHNGb3JDb25uZWN0aW9uID0gaXQtPnZhbHVlOworICAg
ICAgICBmb3IgKGF1dG8mIGJsb2JGaWxlUGF0aCA6IHZhbHVlLmJsb2JGaWxlUGF0aHMoKSkgewor
ICAgICAgICAgICAgaWYgKCF0ZW1wb3JhcnlCbG9iUGF0aHNGb3JDb25uZWN0aW9uLnJlbW92ZShi
bG9iRmlsZVBhdGgpKSB7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRkFVTFQoSW5kZXhl
ZERCLCAiTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpwdXRPckFkZDogQmxvYiBwYXRoIHdhcyBub3Qg
Y3JlYXRlZCBmb3IgdGhpcyBXZWJQcm9jZXNzIik7CisgICAgICAgICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorCisgICAgaWYgKGF1dG8gdHJhbnNhY3Rpb24gPSBtX2lkYlN0b3JhZ2VS
ZWdpc3RyeS0+dHJhbnNhY3Rpb24ocmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCkp
KQorICAgICAgICB0cmFuc2FjdGlvbi0+cHV0T3JBZGQocmVxdWVzdERhdGEsIGtleURhdGEsIHZh
bHVlLCBvdmVyd3JpdGVNb2RlKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Omdl
dFJlY29yZChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0
IFdlYkNvcmU6OklEQkdldFJlY29yZERhdGEmIGdldFJlY29yZERhdGEpCit7CisgICAgaWYgKGF1
dG8gdHJhbnNhY3Rpb24gPSBtX2lkYlN0b3JhZ2VSZWdpc3RyeS0+dHJhbnNhY3Rpb24ocmVxdWVz
dERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCkpKQorICAgICAgICB0cmFuc2FjdGlvbi0+Z2V0
UmVjb3JkKHJlcXVlc3REYXRhLCBnZXRSZWNvcmREYXRhKTsKK30KKwordm9pZCBOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6OmdldEFsbFJlY29yZHMoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEm
IHJlcXVlc3REYXRhLCBjb25zdCBXZWJDb3JlOjpJREJHZXRBbGxSZWNvcmRzRGF0YSYgZ2V0QWxs
UmVjb3Jkc0RhdGEpCit7CisgICAgaWYgKGF1dG8gdHJhbnNhY3Rpb24gPSBtX2lkYlN0b3JhZ2VS
ZWdpc3RyeS0+dHJhbnNhY3Rpb24ocmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCkp
KQorICAgICAgICB0cmFuc2FjdGlvbi0+Z2V0QWxsUmVjb3JkcyhyZXF1ZXN0RGF0YSwgZ2V0QWxs
UmVjb3Jkc0RhdGEpOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Z2V0Q291bnQo
Y29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBXZWJDb3Jl
OjpJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlRGF0YSkKK3sKKyAgICBpZiAoYXV0byB0cmFuc2Fj
dGlvbiA9IG1faWRiU3RvcmFnZVJlZ2lzdHJ5LT50cmFuc2FjdGlvbihyZXF1ZXN0RGF0YS50cmFu
c2FjdGlvbklkZW50aWZpZXIoKSkpCisgICAgICAgIHRyYW5zYWN0aW9uLT5nZXRDb3VudChyZXF1
ZXN0RGF0YSwga2V5UmFuZ2VEYXRhKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6
OmRlbGV0ZVJlY29yZChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEs
IGNvbnN0IFdlYkNvcmU6OklEQktleVJhbmdlRGF0YSYga2V5UmFuZ2VEYXRhKQoreworICAgIGlm
IChhdXRvIHRyYW5zYWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPnRyYW5zYWN0aW9uKHJl
cXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpKSkKKyAgICAgICAgdHJhbnNhY3Rpb24t
PmRlbGV0ZVJlY29yZChyZXF1ZXN0RGF0YSwga2V5UmFuZ2VEYXRhKTsKK30KKwordm9pZCBOZXR3
b3JrU3RvcmFnZU1hbmFnZXI6Om9wZW5DdXJzb3IoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERh
dGEmIHJlcXVlc3REYXRhLCBjb25zdCBXZWJDb3JlOjpJREJDdXJzb3JJbmZvJiBjdXJzb3JJbmZv
KQoreworICAgIGlmIChhdXRvIHRyYW5zYWN0aW9uID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPnRy
YW5zYWN0aW9uKHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpKSkKKyAgICAgICAg
dHJhbnNhY3Rpb24tPm9wZW5DdXJzb3IocmVxdWVzdERhdGEsIGN1cnNvckluZm8pOworfQorCit2
b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6aXRlcmF0ZUN1cnNvcihjb25zdCBXZWJDb3JlOjpJ
REJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IFdlYkNvcmU6OklEQkl0ZXJhdGVDdXJz
b3JEYXRhJiBjdXJzb3JEYXRhKQoreworICAgIGlmIChhdXRvIHRyYW5zYWN0aW9uID0gbV9pZGJT
dG9yYWdlUmVnaXN0cnktPnRyYW5zYWN0aW9uKHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRp
ZmllcigpKSkKKyAgICAgICAgdHJhbnNhY3Rpb24tPml0ZXJhdGVDdXJzb3IocmVxdWVzdERhdGEs
IGN1cnNvckRhdGEpOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Z2V0QWxsRGF0
YWJhc2VOYW1lc0FuZFZlcnNpb25zKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3Qg
V2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgY29uc3Qg
V2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4pCit7CisgICAgYXV0byYgY29ubmVjdGlvblRv
Q2xpZW50ID0gbV9pZGJTdG9yYWdlUmVnaXN0cnktPmVuc3VyZUNvbm5lY3Rpb25Ub0NsaWVudChj
b25uZWN0aW9uLnVuaXF1ZUlEKCksIHJlcXVlc3RJZGVudGlmaWVyLmNvbm5lY3Rpb25JZGVudGlm
aWVyKCkpOworICAgIGF1dG8gcmVzdWx0ID0gbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcihvcmln
aW4pLmlkYlN0b3JhZ2VNYW5hZ2VyKCptX2lkYlN0b3JhZ2VSZWdpc3RyeSkuZ2V0QWxsRGF0YWJh
c2VOYW1lc0FuZFZlcnNpb25zKCk7CisgICAgY29ubmVjdGlvblRvQ2xpZW50LmRpZEdldEFsbERh
dGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhyZXF1ZXN0SWRlbnRpZmllciwgV1RGTW92ZShyZXN1bHQp
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuaApp
bmRleCAxNWMwMzcyZTY2YTdmNjI4NDk5MjdmMWMzN2YxNmE2OTU4N2Y0NTAxLi45YzNkMmQ2NDA2
ZmVlOWIyYjRlNmNhMjZmN2I2NWZlMGM3OGI4M2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5o
CkBAIC0zNiw2ICszNiw4IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9DbGllbnRPcmlnaW4uaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9GaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL0lEQlJlc291cmNlSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSW5k
ZXhlZERCLmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CiAKQEAgLTQ0LDE4ICs0NiwzMSBAQCBjbGFzcyBTaGFyZWRGaWxlSGFuZGxlOwogfQog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBJREJDdXJzb3JJbmZvOworY2xhc3MgSURCS2V5
RGF0YTsKK2NsYXNzIElEQkluZGV4SW5mbzsKK2NsYXNzIElEQk9iamVjdFN0b3JlSW5mbzsKK2Ns
YXNzIElEQlJlcXVlc3REYXRhOworY2xhc3MgSURCVHJhbnNhY3Rpb25JbmZvOworY2xhc3MgSURC
VmFsdWU7CiBzdHJ1Y3QgQ2xpZW50T3JpZ2luOworc3RydWN0IElEQkdldEFsbFJlY29yZHNEYXRh
Oworc3RydWN0IElEQkdldFJlY29yZERhdGE7CitzdHJ1Y3QgSURCR2V0QWxsUmVjb3Jkc0RhdGE7
CitzdHJ1Y3QgSURCSXRlcmF0ZUN1cnNvckRhdGE7CitzdHJ1Y3QgSURCS2V5UmFuZ2VEYXRhOwog
ZW51bSBjbGFzcyBTdG9yYWdlVHlwZSA6IHVpbnQ4X3Q7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiBjbGFzcyBGaWxlU3lzdGVtU3RvcmFnZUhhbmRsZVJlZ2lzdHJ5OworY2xhc3MgSURCU3Rv
cmFnZVJlZ2lzdHJ5OwogY2xhc3MgU3RvcmFnZUFyZWFSZWdpc3RyeTsKIAogY2xhc3MgTmV0d29y
a1N0b3JhZ2VNYW5hZ2VyIGZpbmFsIDogcHVibGljIElQQzo6Q29ubmVjdGlvbjo6V29ya1F1ZXVl
TWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPE5ldHdvcmtTdG9yYWdl
TWFuYWdlcj4gY3JlYXRlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0
IFN0cmluZyYgY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCk7CisgICAgc3RhdGljIFJlZjxOZXR3b3Jr
U3RvcmFnZU1hbmFnZXI+IGNyZWF0ZShQQUw6OlNlc3Npb25JRCwgSVBDOjpDb25uZWN0aW9uOjpV
bmlxdWVJRCwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGN1c3RvbUxvY2FsU3Rv
cmFnZVBhdGgsIGNvbnN0IFN0cmluZyYgY3VzdG9tSURCU3RvcmFnZVBhdGgsIGNvbnN0IFN0cmlu
ZyYgY3VzdG9tQ2FjaGVTdG9yYWdlUGF0aCwgdWludDY0X3QgZGVmYXVsdE9yaWdpblF1b3RhLCB1
aW50NjRfdCBkZWZhdWx0VGhpcmRQYXJ0eU9yaWdpblF1b3RhKTsKICAgICBzdGF0aWMgYm9vbCBj
YW5IYW5kbGVUeXBlcyhPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPik7CiAKICAgICB2b2lkIHN0
YXJ0UmVjZWl2aW5nTWVzc2FnZUZyb21Db25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiYpOwpAQCAt
NjQsNiArNzksNyBAQCBwdWJsaWM6CiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29u
c3QgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KICAgICB2b2lkIGNsb3NlKCk7CiAgICAgdm9pZCBj
bGVhclN0b3JhZ2VGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAg
dm9pZCBkaWRJbmNyZWFzZVF1b3RhKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIFF1b3Rh
SW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbmV3UXVv
dGEpOwogICAgIHZvaWQgZmV0Y2hEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJzaXRlRGF0YTo6RW50cnk+JiYpPiYmKTsKICAg
ICB2b2lkIGRlbGV0ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKICAgICB2b2lkIGRlbGV0ZURhdGFNb2RpZmllZFNpbmNlKE9wdGlvblNldDxXZWJzaXRl
RGF0YVR5cGU+LCBXYWxsVGltZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKQEAgLTcz
LDE0ICs4OSwxOCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXN1bWUoKTsKICAgICB2b2lkIGhhbmRs
ZUxvd01lbW9yeVdhcm5pbmcoKTsKICAgICB2b2lkIHN5bmNMb2NhbFN0b3JhZ2UoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHJlZ2lzdGVyVGVtcG9yYXJ5QmxvYkZpbGVQ
YXRocyhJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpOworICAgIHZvaWQg
cmVxdWVzdFNwYWNlKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIHVpbnQ2NF90IHNpemUs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgcmVzZXRRdW90YUZv
clRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHJlc2V0UXVv
dGFVcGRhdGVkQmFzZWRPblVzYWdlRm9yVGVzdGluZyhjb25zdCBXZWJDb3JlOjpDbGllbnRPcmln
aW4mKTsKIAogcHJpdmF0ZToKICAgICBOZXR3b3JrU3RvcmFnZU1hbmFnZXIoUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21Mb2NhbFN0b3JhZ2VQ
YXRoKTsKKyAgICBOZXR3b3JrU3RvcmFnZU1hbmFnZXIoUEFMOjpTZXNzaW9uSUQsIElQQzo6Q29u
bmVjdGlvbjo6VW5pcXVlSUQsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0
b21Mb2NhbFN0b3JhZ2VQYXRoLCBjb25zdCBTdHJpbmcmIGN1c3RvbUlEQlN0b3JhZ2VQYXRoLCBj
b25zdCBTdHJpbmcmIGN1c3RvbUNhY2hlU3RvcmFnZVBhdGgsIHVpbnQ2NF90IGRlZmF1bHRPcmln
aW5RdW90YSwgdWludDY0X3QgZGVmYXVsdFRoaXJkUGFydHlPcmlnaW5RdW90YSk7CiAgICAgfk5l
dHdvcmtTdG9yYWdlTWFuYWdlcigpOwogICAgIE9yaWdpblN0b3JhZ2VNYW5hZ2VyJiBsb2NhbE9y
aWdpblN0b3JhZ2VNYW5hZ2VyKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYpOwogICAgIGJv
b2wgcmVtb3ZlT3JpZ2luU3RvcmFnZU1hbmFnZXJJZlBvc3NpYmxlKGNvbnN0IFdlYkNvcmU6OkNs
aWVudE9yaWdpbiYpOwogICAgIHZvaWQgZGVsZXRlT3JpZ2luRGlyZWN0b3J5SWZQb3NzaWJsZShj
b25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKLSAgICBGaWxlU3lzdGVtU3RvcmFnZUhhbmRs
ZVJlZ2lzdHJ5JiBmaWxlU3lzdGVtU3RvcmFnZUhhbmRsZVJlZ2lzdHJ5KCk7CiAKICAgICB2b2lk
IGZvckVhY2hPcmlnaW5EaXJlY3RvcnkoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcm
KT4mKTsKICAgICBIYXNoU2V0PFdlYkNvcmU6OkNsaWVudE9yaWdpbj4gZ2V0QWxsT3JpZ2lucygp
OwpAQCAtMTE4LDYgKzEzOCwzNCBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVtb3ZlSXRlbShJUEM6
OkNvbm5lY3Rpb24mLCBTdG9yYWdlQXJlYUlkZW50aWZpZXIsIFN0b3JhZ2VBcmVhSW1wbElkZW50
aWZpZXIsIFN0cmluZyYmIGtleSwgU3RyaW5nJiYgdXJsU3RyaW5nLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwogICAgIHZvaWQgY2xlYXIoSVBDOjpDb25uZWN0aW9uJiwgU3RvcmFnZUFy
ZWFJZGVudGlmaWVyLCBTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyLCBTdHJpbmcmJiB1cmxTdHJp
bmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKKyAgICAvLyBNZXNzYWdlIGhhbmRs
ZXJzIGZvciBJbmRleGVkREIuCisgICAgdm9pZCBvcGVuRGF0YWJhc2UoSVBDOjpDb25uZWN0aW9u
JiwgY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmKTsKKyAgICB2b2lkIG9wZW5EQlJlcXVl
c3RDYW5jZWxsZWQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmKTsKKyAgICB2b2lkIGRl
bGV0ZURhdGFiYXNlKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3RE
YXRhJik7CisgICAgdm9pZCBlc3RhYmxpc2hUcmFuc2FjdGlvbih1aW50NjRfdCBkYXRhYmFzZUNv
bm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkluZm8mKTsK
KyAgICB2b2lkIGRhdGFiYXNlQ29ubmVjdGlvblBlbmRpbmdDbG9zZSh1aW50NjRfdCBkYXRhYmFz
ZUNvbm5lY3Rpb25JZGVudGlmaWVyKTsKKyAgICB2b2lkIGRhdGFiYXNlQ29ubmVjdGlvbkNsb3Nl
ZCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKTsKKyAgICB2b2lkIGFib3J0
T3BlbkFuZFVwZ3JhZGVOZWVkZWQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmll
ciwgY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50
aWZpZXIpOworICAgIHZvaWQgZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudCh1aW50NjRfdCBkYXRh
YmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50
aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJbmRleGVkREI6OkNvbm5l
Y3Rpb25DbG9zZWRPbkJlaGFsZk9mU2VydmVyKTsKKyAgICB2b2lkIGFib3J0VHJhbnNhY3Rpb24o
Y29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJik7CisgICAgdm9pZCBjb21taXRU
cmFuc2FjdGlvbihjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImLCB1aW50NjRf
dCBwZW5kaW5nUmVxdWVzdENvdW50KTsKKyAgICB2b2lkIGRpZEZpbmlzaEhhbmRsaW5nVmVyc2lv
bkNoYW5nZVRyYW5zYWN0aW9uKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIs
IGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYpOworICAgIHZvaWQgY3JlYXRl
T2JqZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmLCBjb25zdCBXZWJDb3Jl
OjpJREJPYmplY3RTdG9yZUluZm8mKTsKKyAgICB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0
IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUp
OworICAgIHZvaWQgcmVuYW1lT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERh
dGEmLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFt
ZSk7CisgICAgdm9pZCBjbGVhck9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3RE
YXRhJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKKyAgICB2b2lkIGNyZWF0ZUlu
ZGV4KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiwgY29uc3QgV2ViQ29yZTo6SURCSW5k
ZXhJbmZvJik7CisgICAgdm9pZCBkZWxldGVJbmRleChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0
RGF0YSYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpbmRl
eE5hbWUpOworICAgIHZvaWQgcmVuYW1lSW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERh
dGEmLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lKTsKKyAgICB2b2lkIHB1dE9yQWRkKElQQzo6Q29u
bmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiwgY29uc3QgV2ViQ29yZTo6
SURCS2V5RGF0YSYsIGNvbnN0IFdlYkNvcmU6OklEQlZhbHVlJiwgV2ViQ29yZTo6SW5kZXhlZERC
OjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUpOworICAgIHZvaWQgZ2V0UmVjb3JkKGNvbnN0IFdl
YkNvcmU6OklEQlJlcXVlc3REYXRhJiwgY29uc3QgV2ViQ29yZTo6SURCR2V0UmVjb3JkRGF0YSYp
OworICAgIHZvaWQgZ2V0QWxsUmVjb3Jkcyhjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYs
IGNvbnN0IFdlYkNvcmU6OklEQkdldEFsbFJlY29yZHNEYXRhJik7CisgICAgdm9pZCBnZXRDb3Vu
dChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IFdlYkNvcmU6OklEQktleVJh
bmdlRGF0YSYpOworICAgIHZvaWQgZGVsZXRlUmVjb3JkKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVl
c3REYXRhJiwgY29uc3QgV2ViQ29yZTo6SURCS2V5UmFuZ2VEYXRhJik7CisgICAgdm9pZCBvcGVu
Q3Vyc29yKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiwgY29uc3QgV2ViQ29yZTo6SURC
Q3Vyc29ySW5mbyYpOworICAgIHZvaWQgaXRlcmF0ZUN1cnNvcihjb25zdCBXZWJDb3JlOjpJREJS
ZXF1ZXN0RGF0YSYsIGNvbnN0IFdlYkNvcmU6OklEQkl0ZXJhdGVDdXJzb3JEYXRhJik7CisgICAg
dm9pZCBnZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMoSVBDOjpDb25uZWN0aW9uJiwgY29u
c3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiwgY29uc3QgV2ViQ29yZTo6Q2xpZW50
T3JpZ2luJik7CisKICAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKICAgICBSZWY8U3Vz
cGVuZGFibGVXb3JrUXVldWU+IG1fcXVldWU7CiAgICAgU3RyaW5nIG1fcGF0aDsKQEAgLTEyNyw3
ICsxNzUsMTQgQEAgcHJpdmF0ZToKICAgICBXZWFrSGFzaFNldDxJUEM6OkNvbm5lY3Rpb24+IG1f
Y29ubmVjdGlvbnM7IC8vIE1haW4gdGhyZWFkIG9ubHkuCiAgICAgc3RkOjp1bmlxdWVfcHRyPEZp
bGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnk+IG1fZmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVS
ZWdpc3RyeTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U3RvcmFnZUFyZWFSZWdpc3RyeT4gbV9zdG9y
YWdlQXJlYVJlZ2lzdHJ5OworICAgIHN0ZDo6dW5pcXVlX3B0cjxJREJTdG9yYWdlUmVnaXN0cnk+
IG1faWRiU3RvcmFnZVJlZ2lzdHJ5OwogICAgIFN0cmluZyBtX2N1c3RvbUxvY2FsU3RvcmFnZVBh
dGg7CisgICAgU3RyaW5nIG1fY3VzdG9tSURCU3RvcmFnZVBhdGg7CisgICAgU3RyaW5nIG1fY3Vz
dG9tQ2FjaGVTdG9yYWdlUGF0aDsKKyAgICB1aW50NjRfdCBtX2RlZmF1bHRPcmlnaW5RdW90YTsK
KyAgICB1aW50NjRfdCBtX2RlZmF1bHRUaGlyZFBhcnR5T3JpZ2luUXVvdGE7CisgICAgSVBDOjpD
b25uZWN0aW9uOjpVbmlxdWVJRCBtX3BhcmVudENvbm5lY3Rpb247CisgICAgSGFzaE1hcDxJUEM6
OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBIYXNoU2V0PFN0cmluZz4+IG1fdGVtcG9yYXJ5QmxvYlBh
dGhzQnlDb25uZWN0aW9uOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5h
Z2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05l
dHdvcmtTdG9yYWdlTWFuYWdlci5tZXNzYWdlcy5pbgppbmRleCA1MGI5NjcwMWIwNzBkZDVjMzI3
MTFkYjE0Mjc5MzAzZmU2NTIxMWI3Li40NzMwNWUwZTk4MWNhNWNmYWUwNzc0MjZiZjI0Yjc4MTVh
NGQ2NGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2Uv
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIubWVzc2FnZXMuaW4KQEAg
LTQ3LDQgKzQ3LDMxIEBACiAgICAgU2V0SXRlbShXZWJLaXQ6OlN0b3JhZ2VBcmVhSWRlbnRpZmll
ciBpZGVudGlmaWVyLCBXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXIgaW1wbElkZW50
aWZpZXIsIFN0cmluZyBrZXksIFN0cmluZyB2YWx1ZSwgU3RyaW5nIHVybFN0cmluZykgLT4gKGJv
b2wgcXVvdGFFeGNlcHRpb24pIEFzeW5jIFdhbnRzQ29ubmVjdGlvbgogICAgIFJlbW92ZUl0ZW0o
V2ViS2l0OjpTdG9yYWdlQXJlYUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViS2l0OjpTdG9yYWdl
QXJlYUltcGxJZGVudGlmaWVyIGltcGxJZGVudGlmaWVyLCBTdHJpbmcga2V5LCBTdHJpbmcgdXJs
U3RyaW5nKSAtPiAoKSBBc3luYyBXYW50c0Nvbm5lY3Rpb24KICAgICBDbGVhcihXZWJLaXQ6OlN0
b3JhZ2VBcmVhSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1wbElk
ZW50aWZpZXIgaW1wbElkZW50aWZpZXIsIFN0cmluZyB1cmxTdHJpbmcpIC0+ICgpIEFzeW5jIFdh
bnRzQ29ubmVjdGlvbgorCisgICAgT3BlbkRhdGFiYXNlKFdlYkNvcmU6OklEQlJlcXVlc3REYXRh
IHJlcXVlc3REYXRhKSBXYW50c0Nvbm5lY3Rpb24KKyAgICBPcGVuREJSZXF1ZXN0Q2FuY2VsbGVk
KFdlYkNvcmU6OklEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhKQorICAgIERlbGV0ZURhdGFiYXNl
KFdlYkNvcmU6OklEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhKSBXYW50c0Nvbm5lY3Rpb24KKyAg
ICBFc3RhYmxpc2hUcmFuc2FjdGlvbih1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlm
aWVyLCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkluZm8gaW5mbykKKyAgICBEYXRhYmFzZUNvbm5l
Y3Rpb25QZW5kaW5nQ2xvc2UodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcikK
KyAgICBEYXRhYmFzZUNvbm5lY3Rpb25DbG9zZWQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9u
SWRlbnRpZmllcikKKyAgICBBYm9ydE9wZW5BbmRVcGdyYWRlTmVlZGVkKHVpbnQ2NF90IGRhdGFi
YXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciB0
cmFuc2FjdGlvbklkZW50aWZpZXIpCisgICAgRGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudCh1aW50
NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpJREJSZXNvdXJjZUlk
ZW50aWZpZXIgcmVxdWVzdElkZW50aWZpZXIsIFdlYkNvcmU6OkluZGV4ZWREQjo6Q29ubmVjdGlv
bkNsb3NlZE9uQmVoYWxmT2ZTZXJ2ZXIgY29ubmVjdGlvbkNsb3NlZE9uQmVoYWxmT2ZTZXJ2ZXIp
CisgICAgRGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24odWludDY0X3Qg
ZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlm
aWVyIHRyYW5zYWN0aW9uSWRlbnRpZmllcikKKyAgICBBYm9ydFRyYW5zYWN0aW9uKFdlYkNvcmU6
OklEQlJlc291cmNlSWRlbnRpZmllciB0cmFuc2FjdGlvbklkZW50aWZpZXIpCisgICAgQ29tbWl0
VHJhbnNhY3Rpb24oV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyIHRyYW5zYWN0aW9uSWRl
bnRpZmllciwgdWludDY0X3QgcGVuZGluZ1JlcXVlc3RDb3VudCkKKyAgICBDcmVhdGVPYmplY3RT
dG9yZShXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YSwgV2ViQ29yZTo6SURCT2Jq
ZWN0U3RvcmVJbmZvIGluZm8pCisgICAgRGVsZXRlT2JqZWN0U3RvcmUoV2ViQ29yZTo6SURCUmVx
dWVzdERhdGEgcmVxdWVzdERhdGEsIFN0cmluZyBvYmplY3RTdG9yZU5hbWUpCisgICAgUmVuYW1l
T2JqZWN0U3RvcmUoV2ViQ29yZTo6SURCUmVxdWVzdERhdGEgcmVxdWVzdERhdGEsIHVpbnQ2NF90
IG9iamVjdFN0b3JlSWRlbnRpZmllciwgU3RyaW5nIG5ld05hbWUpCisgICAgQ2xlYXJPYmplY3RT
dG9yZShXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YSwgdWludDY0X3Qgb2JqZWN0
U3RvcmVJZGVudGlmaWVyKQorICAgIENyZWF0ZUluZGV4KFdlYkNvcmU6OklEQlJlcXVlc3REYXRh
IHJlcXVlc3REYXRhLCBXZWJDb3JlOjpJREJJbmRleEluZm8gaW5mbykKKyAgICBEZWxldGVJbmRl
eChXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YSwgdWludDY0X3Qgb2JqZWN0U3Rv
cmVJZGVudGlmaWVyLCBTdHJpbmcgaW5kZXhOYW1lKQorICAgIFJlbmFtZUluZGV4KFdlYkNvcmU6
OklEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZp
ZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciwgU3RyaW5nIG5ld05hbWUpCisgICAgUHV0T3JB
ZGQoV2ViQ29yZTo6SURCUmVxdWVzdERhdGEgcmVxdWVzdERhdGEsIFdlYkNvcmU6OklEQktleURh
dGEga2V5LCBXZWJDb3JlOjpJREJWYWx1ZSB2YWx1ZSwgV2ViQ29yZTo6SW5kZXhlZERCOjpPYmpl
Y3RTdG9yZU92ZXJ3cml0ZU1vZGUgb3ZlcndyaXRlTW9kZSkgV2FudHNDb25uZWN0aW9uCisgICAg
R2V0UmVjb3JkKFdlYkNvcmU6OklEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhLCBzdHJ1Y3QgV2Vi
Q29yZTo6SURCR2V0UmVjb3JkRGF0YSBnZXRSZWNvcmREYXRhKQorICAgIEdldEFsbFJlY29yZHMo
V2ViQ29yZTo6SURCUmVxdWVzdERhdGEgcmVxdWVzdERhdGEsIHN0cnVjdCBXZWJDb3JlOjpJREJH
ZXRBbGxSZWNvcmRzRGF0YSBnZXRBbGxSZWNvcmRzRGF0YSkKKyAgICBHZXRDb3VudChXZWJDb3Jl
OjpJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YSwgc3RydWN0IFdlYkNvcmU6OklEQktleVJhbmdl
RGF0YSByYW5nZSkKKyAgICBEZWxldGVSZWNvcmQoV2ViQ29yZTo6SURCUmVxdWVzdERhdGEgcmVx
dWVzdERhdGEsIHN0cnVjdCBXZWJDb3JlOjpJREJLZXlSYW5nZURhdGEgcmFuZ2UpCisgICAgT3Bl
bkN1cnNvcihXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YSwgV2ViQ29yZTo6SURC
Q3Vyc29ySW5mbyBpbmZvKQorICAgIEl0ZXJhdGVDdXJzb3IoV2ViQ29yZTo6SURCUmVxdWVzdERh
dGEgcmVxdWVzdERhdGEsIHN0cnVjdCBXZWJDb3JlOjpJREJJdGVyYXRlQ3Vyc29yRGF0YSBkYXRh
KQorICAgIEdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhXZWJDb3JlOjpJREJSZXNvdXJj
ZUlkZW50aWZpZXIgcmVxdWVzdElkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpDbGllbnRPcmln
aW4gb3JpZ2luKSBXYW50c0Nvbm5lY3Rpb24KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuY3BwCmlu
ZGV4IDU4ODMxZWFhMjY2MGFmODc0ZGU2Yjk1ODkwZTU3YTdmYjYxNTU3ZWMuLmJjYzBmMzM4Nzc5
ZjQ5MzEwMDc0YTdjNmNiZDJmY2FlNzUzNmRjMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2VyLmNw
cApAQCAtMjYsOCArMjYsMTEgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJPcmln
aW5TdG9yYWdlTWFuYWdlci5oIgogCisjaW5jbHVkZSAiQ2FjaGVTdG9yYWdlRW5naW5lLmgiCiAj
aW5jbHVkZSAiRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIkZp
bGVTeXN0ZW1TdG9yYWdlTWFuYWdlci5oIgorI2luY2x1ZGUgIklEQlN0b3JhZ2VNYW5hZ2VyLmgi
CisjaW5jbHVkZSAiSURCU3RvcmFnZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiTG9jYWxTdG9yYWdl
TWFuYWdlci5oIgogI2luY2x1ZGUgIk1lbW9yeVN0b3JhZ2VBcmVhLmgiCiAjaW5jbHVkZSAiU2Vz
c2lvblN0b3JhZ2VNYW5hZ2VyLmgiCkBAIC00NCwxMCArNDcsMTEgQEAgZW51bSBjbGFzcyBPcmln
aW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldE1vZGUgOiBib29sIHsgQmVzdEVmZm9ydCwg
UGVyc2lzdGUKIGNsYXNzIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0IHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBTdG9yYWdlQnVja2V0KGNv
bnN0IFN0cmluZyYgcm9vdFBhdGgsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBsb2NhbFN0b3JhZ2VQYXRoKQorICAgIFN0b3JhZ2VCdWNrZXQoY29uc3QgU3RyaW5nJiBy
b290UGF0aCwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGxvY2FsU3Rv
cmFnZVBhdGgsIGNvbnN0IFN0cmluZyYgaWRiU3RvcmFnZVBhdGgpCiAgICAgICAgIDogbV9yb290
UGF0aChyb290UGF0aCkKICAgICAgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKICAgICAg
ICAgLCBtX2xvY2FsU3RvcmFnZVBhdGgobG9jYWxTdG9yYWdlUGF0aCkKKyAgICAgICAgLCBtX2lk
YlN0b3JhZ2VQYXRoKGlkYlN0b3JhZ2VQYXRoKQogICAgIHsKICAgICB9CiAKQEAgLTcwLDYgKzc0
LDcgQEAgcHVibGljOgogICAgICAgICBGaWxlU3lzdGVtLAogICAgICAgICBMb2NhbFN0b3JhZ2Us
CiAgICAgICAgIFNlc3Npb25TdG9yYWdlLAorICAgICAgICBJbmRleGVkREIsCiAgICAgfTsKIAog
ICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVEYXRhVHlwZT4gdG9XZWJzaXRlRGF0YVR5
cGUoY29uc3QgU3RyaW5nJiBzdG9yYWdlSWRlbnRpZmllcikKQEAgLTgwLDYgKzg1LDggQEAgcHVi
bGljOgogICAgICAgICAgICAgcmV0dXJuIFdlYnNpdGVEYXRhVHlwZTo6TG9jYWxTdG9yYWdlOwog
ICAgICAgICBpZiAoc3RvcmFnZUlkZW50aWZpZXIgPT0gIlNlc3Npb25TdG9yYWdlIl9zKQogICAg
ICAgICAgICAgcmV0dXJuIFdlYnNpdGVEYXRhVHlwZTo6U2Vzc2lvblN0b3JhZ2U7CisgICAgICAg
IGlmIChzdG9yYWdlSWRlbnRpZmllciA9PSAiSW5kZXhlZERCIl9zKQorICAgICAgICAgICAgcmV0
dXJuIFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzOwogCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgfQpAQCAtOTMsNiArMTAwLDggQEAgcHVibGljOgogICAgICAg
ICAgICAgcmV0dXJuICJMb2NhbFN0b3JhZ2UiX3M7CiAgICAgICAgIGNhc2UgU3RvcmFnZVR5cGU6
OlNlc3Npb25TdG9yYWdlOgogICAgICAgICAgICAgcmV0dXJuICJTZXNzaW9uU3RvcmFnZSJfczsK
KyAgICAgICAgY2FzZSBTdG9yYWdlVHlwZTo6SW5kZXhlZERCOgorICAgICAgICAgICAgcmV0dXJu
ICJJbmRleGVkREIiX3M7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQpAQCAtMTQzLDEzICsxNTIsMjcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9z
ZXNzaW9uU3RvcmFnZU1hbmFnZXIuZ2V0KCk7CiAgICAgfQogCisgICAgSURCU3RvcmFnZU1hbmFn
ZXImIGlkYlN0b3JhZ2VNYW5hZ2VyKElEQlN0b3JhZ2VSZWdpc3RyeSYgcmVnaXN0cnksIElEQlN0
b3JhZ2VNYW5hZ2VyOjpRdW90YUNoZWNrRnVuY3Rpb24mJiBxdW90YUNoZWNrRnVuY3Rpb24pCisg
ICAgeworICAgICAgICBpZiAoIW1faWRiU3RvcmFnZU1hbmFnZXIpCisgICAgICAgICAgICBtX2lk
YlN0b3JhZ2VNYW5hZ2VyID0gbWFrZVVuaXF1ZTxJREJTdG9yYWdlTWFuYWdlcj4obV9pZGJTdG9y
YWdlUGF0aCwgcmVnaXN0cnksIFdURk1vdmUocXVvdGFDaGVja0Z1bmN0aW9uKSk7CisKKyAgICAg
ICAgcmV0dXJuICptX2lkYlN0b3JhZ2VNYW5hZ2VyOworICAgIH0KKworICAgIElEQlN0b3JhZ2VN
YW5hZ2VyKiBleGlzdGluZ0lEQlN0b3JhZ2VNYW5hZ2VyKCkKKyAgICB7CisgICAgICAgIHJldHVy
biBtX2lkYlN0b3JhZ2VNYW5hZ2VyLmdldCgpOworICAgIH0KKwogICAgIGJvb2wgaXNBY3RpdmUo
KSBjb25zdAogICAgIHsKICAgICAgICAgLy8gV2UgY2Fubm90IHJlbW92ZSB0aGUgYnVja2V0IGlm
IGl0IGhhcyBpbi1tZW1vcnkgZGF0YSwgb3RoZXJ3aXNlIHNlc3Npb24KICAgICAgICAgLy8gZGF0
YSBtYXkgYmUgbG9zdC4KICAgICAgICAgcmV0dXJuIChtX2ZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdl
ciAmJiBtX2ZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlci0+aXNBY3RpdmUoKSkKICAgICAgICAgICAg
IHx8IChtX2xvY2FsU3RvcmFnZU1hbmFnZXIgJiYgKG1fbG9jYWxTdG9yYWdlTWFuYWdlci0+aGFz
RGF0YUluTWVtb3J5KCkgfHwgbV9sb2NhbFN0b3JhZ2VNYW5hZ2VyLT5pc0FjdGl2ZSgpKSkKLSAg
ICAgICAgICAgIHx8IChtX3Nlc3Npb25TdG9yYWdlTWFuYWdlciAmJiAobV9zZXNzaW9uU3RvcmFn
ZU1hbmFnZXItPmhhc0RhdGFJbk1lbW9yeSgpIHx8IG1fc2Vzc2lvblN0b3JhZ2VNYW5hZ2VyLT5p
c0FjdGl2ZSgpKSk7CisgICAgICAgICAgICB8fCAobV9zZXNzaW9uU3RvcmFnZU1hbmFnZXIgJiYg
KG1fc2Vzc2lvblN0b3JhZ2VNYW5hZ2VyLT5oYXNEYXRhSW5NZW1vcnkoKSB8fCBtX3Nlc3Npb25T
dG9yYWdlTWFuYWdlci0+aXNBY3RpdmUoKSkpCisgICAgICAgICAgICB8fCAobV9pZGJTdG9yYWdl
TWFuYWdlciAmJiAobV9pZGJTdG9yYWdlTWFuYWdlci0+aGFzRGF0YUluTWVtb3J5KCkgfHwgbV9p
ZGJTdG9yYWdlTWFuYWdlci0+aXNBY3RpdmUoKSkpOwogICAgIH0KIAogICAgIGJvb2wgaXNFbXB0
eSgpIGNvbnN0CkBAIC0xNjUsNyArMTg4LDggQEAgcHVibGljOgogICAgICAgICBpZiAoaGFzVmFs
aWRGaWxlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIHJldHVybiAhRmls
ZVN5c3RlbTo6ZmlsZUV4aXN0cyhtX2xvY2FsU3RvcmFnZVBhdGgpOworICAgICAgICBGaWxlU3lz
dGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeShtX2lkYlN0b3JhZ2VQYXRoKTsKKyAgICAgICAgcmV0
dXJuICFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG1fbG9jYWxTdG9yYWdlUGF0aCkgJiYgIUZpbGVT
eXN0ZW06OmZpbGVFeGlzdHMobV9pZGJTdG9yYWdlUGF0aCk7CiAgICAgfQogCiAgICAgT3B0aW9u
U2V0PFdlYnNpdGVEYXRhVHlwZT4gZmV0Y2hEYXRhVHlwZXNJbkxpc3QoT3B0aW9uU2V0PFdlYnNp
dGVEYXRhVHlwZT4gdHlwZXMpCkBAIC0xODYsMTQgKzIxMCwyMCBAQCBwdWJsaWM6CiAKICAgICAg
ICAgaWYgKHR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6U2Vzc2lvblN0b3JhZ2UpICYm
IG1vZGlmaWVkU2luY2VUaW1lIDwgV2FsbFRpbWU6Om5vdygpKQogICAgICAgICAgICAgZGVsZXRl
U2Vzc2lvblN0b3JhZ2VEYXRhKCk7CisKKyAgICAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFdlYnNp
dGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKSkKKyAgICAgICAgICAgIGRlbGV0ZUlEQlN0
b3JhZ2VEYXRhKG1vZGlmaWVkU2luY2VUaW1lKTsKICAgICB9CiAKLSAgICB2b2lkIG1vdmVEYXRh
KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VQYXRoKQorICAg
IHZvaWQgbW92ZURhdGEoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGxvY2FsU3Rv
cmFnZVBhdGgsIGNvbnN0IFN0cmluZyYgaWRiU3RvcmFnZVBhdGgpCiAgICAgewogICAgICAgICBt
X2ZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlciA9IG51bGxwdHI7CiAgICAgICAgIGlmIChtX2xvY2Fs
U3RvcmFnZU1hbmFnZXIpCiAgICAgICAgICAgICBtX2xvY2FsU3RvcmFnZU1hbmFnZXItPmNsb3Nl
KCk7CiAKKyAgICAgICAgaWYgKG1faWRiU3RvcmFnZU1hbmFnZXIpCisgICAgICAgICAgICBtX2lk
YlN0b3JhZ2VNYW5hZ2VyLT5jbG9zZURhdGFiYXNlc0ZvckRlbGV0aW9uKCk7CisKICAgICAgICAg
RmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKEZpbGVTeXN0ZW06OnBhcmVudFBhdGgocGF0
aCkpOwogICAgICAgICBGaWxlU3lzdGVtOjptb3ZlRmlsZShtX3Jvb3RQYXRoLCBwYXRoKTsKIApA
QCAtMjAxLDYgKzIzMSwxMSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBGaWxlU3lzdGVtOjptYWtl
QWxsRGlyZWN0b3JpZXMoRmlsZVN5c3RlbTo6cGFyZW50UGF0aChsb2NhbFN0b3JhZ2VQYXRoKSk7
CiAgICAgICAgICAgICBXZWJDb3JlOjpTUUxpdGVGaWxlU3lzdGVtOjptb3ZlRGF0YWJhc2VGaWxl
KG1fbG9jYWxTdG9yYWdlUGF0aCwgbG9jYWxTdG9yYWdlUGF0aCk7CiAgICAgICAgIH0KKworICAg
ICAgICBpZiAoIW1faWRiU3RvcmFnZVBhdGguaXNFbXB0eSgpICYmICFpZGJTdG9yYWdlUGF0aC5p
c0VtcHR5KCkpIHsKKyAgICAgICAgICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhG
aWxlU3lzdGVtOjpwYXJlbnRQYXRoKGlkYlN0b3JhZ2VQYXRoKSk7CisgICAgICAgICAgICBXZWJD
b3JlOjpTUUxpdGVGaWxlU3lzdGVtOjptb3ZlRGF0YWJhc2VGaWxlKG1faWRiU3RvcmFnZVBhdGgs
IGlkYlN0b3JhZ2VQYXRoKTsKKyAgICAgICAgfQogICAgIH0KIAogcHJpdmF0ZToKQEAgLTIxNyw2
ICsyNTIsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICByZXN1bHQuYWRkKFdlYnNpdGVE
YXRhVHlwZTo6U2Vzc2lvblN0b3JhZ2UpOwogICAgICAgICB9CiAKKyAgICAgICAgaWYgKHR5cGVz
LmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKSkgeworICAgICAg
ICAgICAgaWYgKG1faWRiU3RvcmFnZU1hbmFnZXIgJiYgbV9pZGJTdG9yYWdlTWFuYWdlci0+aGFz
RGF0YUluTWVtb3J5KCkpCisgICAgICAgICAgICAgICAgcmVzdWx0LmFkZChXZWJzaXRlRGF0YVR5
cGU6OkluZGV4ZWREQkRhdGFiYXNlcyk7CisgICAgICAgIH0KKwogICAgICAgICByZXR1cm4gcmVz
dWx0OwogICAgIH0KIApAQCAtMjMzLDYgKzI3MywxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgIHJlc3VsdC5hZGQoV2Vic2l0ZURhdGFUeXBlOjpMb2NhbFN0b3JhZ2UpOwogICAgICAgICB9
CiAKKyAgICAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERC
RGF0YWJhc2VzKSAmJiAhcmVzdWx0LmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERC
RGF0YWJhc2VzKSkgeworICAgICAgICAgICAgaWYgKGF1dG8gZGF0YWJhc2VzID0gRmlsZVN5c3Rl
bTo6bGlzdERpcmVjdG9yeShtX2lkYlN0b3JhZ2VQYXRoKTsgIWRhdGFiYXNlcy5pc0VtcHR5KCkp
CisgICAgICAgICAgICAgICAgcmVzdWx0LmFkZChXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRh
dGFiYXNlcyk7CisgICAgICAgIH0KKwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIApA
QCAtMjcwLDYgKzMxNSwxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV9zZXNzaW9uU3RvcmFn
ZU1hbmFnZXIgPSBudWxscHRyOwogICAgIH0KICAgICAKKyAgICB2b2lkIGRlbGV0ZUlEQlN0b3Jh
Z2VEYXRhKFdhbGxUaW1lIHRpbWUpCisgICAgeworICAgICAgICBpZiAobV9pZGJTdG9yYWdlTWFu
YWdlcikKKyAgICAgICAgICAgIG1faWRiU3RvcmFnZU1hbmFnZXItPmNsb3NlRGF0YWJhc2VzRm9y
RGVsZXRpb24oKTsKKworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVBbGxGaWxlc01vZGlmaWVk
U2luY2UobV9pZGJTdG9yYWdlUGF0aCwgdGltZSk7CisgICAgfQorICAgIAogICAgIFN0cmluZyBt
X3Jvb3RQYXRoOwogICAgIFN0cmluZyBtX2lkZW50aWZpZXI7CiAgICAgU3RvcmFnZUJ1Y2tldE1v
ZGUgbV9tb2RlIHsgU3RvcmFnZUJ1Y2tldE1vZGU6OkJlc3RFZmZvcnQgfTsKQEAgLTI3NywxMSAr
MzMwLDI0IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPExvY2FsU3RvcmFnZU1hbmFn
ZXI+IG1fbG9jYWxTdG9yYWdlTWFuYWdlcjsKICAgICBTdHJpbmcgbV9sb2NhbFN0b3JhZ2VQYXRo
OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTZXNzaW9uU3RvcmFnZU1hbmFnZXI+IG1fc2Vzc2lvblN0
b3JhZ2VNYW5hZ2VyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJREJTdG9yYWdlTWFuYWdlcj4gbV9p
ZGJTdG9yYWdlTWFuYWdlcjsKKyAgICBTdHJpbmcgbV9pZGJTdG9yYWdlUGF0aDsKIH07CiAKLU9y
aWdpblN0b3JhZ2VNYW5hZ2VyOjpPcmlnaW5TdG9yYWdlTWFuYWdlcihTdHJpbmcmJiBwYXRoLCBT
dHJpbmcmJiBsb2NhbFN0b3JhZ2VQYXRoKQorc3RhdGljIFJlZjxRdW90YU1hbmFnZXI+IGNyZWF0
ZVF1b3RhTWFuYWdlcih1aW50NjRfdCBxdW90YSwgY29uc3QgU3RyaW5nJiBpZGJTdG9yYWdlUGF0
aCwgY29uc3QgU3RyaW5nJiBjYWNoZVN0b3JhZ2VQYXRoLCBRdW90YU1hbmFnZXI6OkluY3JlYXNl
UXVvdGFGdW5jdGlvbiYmIGluY3JlYXNlUXVvdGFGdW5jdGlvbikKK3sKKyAgICBRdW90YU1hbmFn
ZXI6OkdldFVzYWdlRnVuY3Rpb24gZ2V0VXNhZ2VGdW5jdGlvbiA9IFtpZGJTdG9yYWdlUGF0aCwg
Y2FjaGVTdG9yYWdlUGF0aF0oKSB7CisgICAgICAgIHJldHVybiBJREJTdG9yYWdlTWFuYWdlcjo6
aWRiU3RvcmFnZVNpemUoaWRiU3RvcmFnZVBhdGgpICsgQ2FjaGVTdG9yYWdlOjpFbmdpbmU6OmRp
c2tVc2FnZShjYWNoZVN0b3JhZ2VQYXRoKTsKKyAgICB9OworICAgIHJldHVybiBRdW90YU1hbmFn
ZXI6OmNyZWF0ZShxdW90YSwgV1RGTW92ZShnZXRVc2FnZUZ1bmN0aW9uKSwgV1RGTW92ZShpbmNy
ZWFzZVF1b3RhRnVuY3Rpb24pKTsKK30KKworT3JpZ2luU3RvcmFnZU1hbmFnZXI6Ok9yaWdpblN0
b3JhZ2VNYW5hZ2VyKHVpbnQ2NF90IHF1b3RhLCBRdW90YU1hbmFnZXI6OkluY3JlYXNlUXVvdGFG
dW5jdGlvbiYmIGluY3JlYXNlUXVvdGFGdW5jdGlvbiwgU3RyaW5nJiYgcGF0aCwgU3RyaW5nJiYg
bG9jYWxTdG9yYWdlUGF0aCwgU3RyaW5nJiYgaWRiU3RvcmFnZVBhdGgsIFN0cmluZyYmIGNhY2hl
U3RvcmFnZVBhdGgpCiAgICAgOiBtX3BhdGgoV1RGTW92ZShwYXRoKSkKICAgICAsIG1fbG9jYWxT
dG9yYWdlUGF0aChXVEZNb3ZlKGxvY2FsU3RvcmFnZVBhdGgpKQorICAgICwgbV9pZGJTdG9yYWdl
UGF0aChXVEZNb3ZlKGlkYlN0b3JhZ2VQYXRoKSkKKyAgICAsIG1fY2FjaGVTdG9yYWdlUGF0aChX
VEZNb3ZlKGNhY2hlU3RvcmFnZVBhdGgpKQorICAgICwgbV9xdW90YU1hbmFnZXIoY3JlYXRlUXVv
dGFNYW5hZ2VyKHF1b3RhLCBtX2lkYlN0b3JhZ2VQYXRoLCBtX2NhY2hlU3RvcmFnZVBhdGgsIFdU
Rk1vdmUoaW5jcmVhc2VRdW90YUZ1bmN0aW9uKSkpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjpp
c01haW4oKSk7CiB9CkBAIC0yOTcsMTEgKzM2MywxNiBAQCB2b2lkIE9yaWdpblN0b3JhZ2VNYW5h
Z2VyOjpjb25uZWN0aW9uQ2xvc2VkKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgY29ubmVjdGlv
bgogT3JpZ2luU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VCdWNrZXQmIE9yaWdpblN0b3JhZ2VNYW5h
Z2VyOjpkZWZhdWx0QnVja2V0KCkKIHsKICAgICBpZiAoIW1fZGVmYXVsdEJ1Y2tldCkKLSAgICAg
ICAgbV9kZWZhdWx0QnVja2V0ID0gbWFrZVVuaXF1ZTxTdG9yYWdlQnVja2V0PihtX3BhdGgsICJk
ZWZhdWx0Il9zLCBtX2xvY2FsU3RvcmFnZVBhdGgpOworICAgICAgICBtX2RlZmF1bHRCdWNrZXQg
PSBtYWtlVW5pcXVlPFN0b3JhZ2VCdWNrZXQ+KG1fcGF0aCwgImRlZmF1bHQiX3MsIG1fbG9jYWxT
dG9yYWdlUGF0aCwgbV9pZGJTdG9yYWdlUGF0aCk7CiAKICAgICByZXR1cm4gKm1fZGVmYXVsdEJ1
Y2tldDsKIH0KIAorUXVvdGFNYW5hZ2VyJiBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6cXVvdGFNYW5h
Z2VyKCkKK3sKKyAgICByZXR1cm4gbV9xdW90YU1hbmFnZXIuZ2V0KCk7Cit9CisKIEZpbGVTeXN0
ZW1TdG9yYWdlTWFuYWdlciYgT3JpZ2luU3RvcmFnZU1hbmFnZXI6OmZpbGVTeXN0ZW1TdG9yYWdl
TWFuYWdlcihGaWxlU3lzdGVtU3RvcmFnZUhhbmRsZVJlZ2lzdHJ5JiByZWdpc3RyeSkKIHsKICAg
ICByZXR1cm4gZGVmYXVsdEJ1Y2tldCgpLmZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlcihyZWdpc3Ry
eSk7CkBAIC0zMjcsNiArMzk4LDIzIEBAIFNlc3Npb25TdG9yYWdlTWFuYWdlciogT3JpZ2luU3Rv
cmFnZU1hbmFnZXI6OmV4aXN0aW5nU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyKCkKICAgICByZXR1cm4g
ZGVmYXVsdEJ1Y2tldCgpLmV4aXN0aW5nU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyKCk7CiB9CiAKK0lE
QlN0b3JhZ2VNYW5hZ2VyJiBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6aWRiU3RvcmFnZU1hbmFnZXIo
SURCU3RvcmFnZVJlZ2lzdHJ5JiByZWdpc3RyeSkKK3sKKyAgICByZXR1cm4gZGVmYXVsdEJ1Y2tl
dCgpLmlkYlN0b3JhZ2VNYW5hZ2VyKHJlZ2lzdHJ5LCBbcXVvdGFNYW5hZ2VyID0gV2Vha1B0ciB7
IHRoaXMtPnF1b3RhTWFuYWdlcigpIH1dKHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBtdXRhYmxlIHsKKyAg
ICAgICAgaWYgKCFxdW90YU1hbmFnZXIpCisgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhh
bmRsZXIoZmFsc2UpOworCisgICAgICAgIHF1b3RhTWFuYWdlci0+cmVxdWVzdFNwYWNlKHNwYWNl
UmVxdWVzdGVkLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0oYXV0byBkZWNpc2lvbikgbXV0YWJsZSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihkZWNpc2lvbiA9PSBRdW90YU1hbmFnZXI6OkRlY2lzaW9uOjpHcmFudCk7CisgICAgICAgIH0p
OworICAgIH0pOworfQorCitJREJTdG9yYWdlTWFuYWdlciogT3JpZ2luU3RvcmFnZU1hbmFnZXI6
OmV4aXN0aW5nSURCU3RvcmFnZU1hbmFnZXIoKQoreworICAgIHJldHVybiBkZWZhdWx0QnVja2V0
KCkuZXhpc3RpbmdJREJTdG9yYWdlTWFuYWdlcigpOworfQorCiBib29sIE9yaWdpblN0b3JhZ2VN
YW5hZ2VyOjppc0FjdGl2ZSgpCiB7CiAgICAgcmV0dXJuIGRlZmF1bHRCdWNrZXQoKS5pc0FjdGl2
ZSgpOwpAQCAtMzU5LDExICs0NDcsMTEgQEAgdm9pZCBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6ZGVs
ZXRlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB0eXBlcywgV2FsbFRpbWUKICAgICBk
ZWZhdWx0QnVja2V0KCkuZGVsZXRlRGF0YSh0eXBlcywgbW9kaWZpZWRTaW5jZSk7CiB9CiAKLXZv
aWQgT3JpZ2luU3RvcmFnZU1hbmFnZXI6Om1vdmVEYXRhKGNvbnN0IFN0cmluZyYgbmV3UGF0aCwg
Y29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VQYXRoKQordm9pZCBPcmlnaW5TdG9yYWdlTWFuYWdl
cjo6bW92ZURhdGEoY29uc3QgU3RyaW5nJiBuZXdQYXRoLCBjb25zdCBTdHJpbmcmIGxvY2FsU3Rv
cmFnZVBhdGgsIGNvbnN0IFN0cmluZyYgaWRiU3RvcmFnZVBhdGgpCiB7CiAgICAgQVNTRVJUKCFS
dW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBkZWZhdWx0QnVja2V0KCkubW92ZURhdGEobmV3UGF0
aCwgbG9jYWxTdG9yYWdlUGF0aCk7CisgICAgZGVmYXVsdEJ1Y2tldCgpLm1vdmVEYXRhKG5ld1Bh
dGgsIGxvY2FsU3RvcmFnZVBhdGgsIGlkYlN0b3JhZ2VQYXRoKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3Jh
Z2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5oCmluZGV4IDVlNzY2OTk4NmU0NjY4NWYzODli
N2E1MjcxZTY2ZDBlNjNjMmQxOWUuLmVjNDZjNTRiMzExMWZiMDFiM2NlNjk2OTIwN2MxM2JlNWQ5
OTlkOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9P
cmlnaW5TdG9yYWdlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5oCkBAIC0yNiwxNiArMjYsMTUgQEAKICNwcmFn
bWEgb25jZQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIlF1b3RhTWFuYWdl
ci5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci1zdHJ1Y3QgQ2xpZW50T3JpZ2luOwotfQotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xh
c3MgRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeTsKIGNsYXNzIEZpbGVTeXN0ZW1TdG9y
YWdlTWFuYWdlcjsKK2NsYXNzIElEQlN0b3JhZ2VNYW5hZ2VyOworY2xhc3MgSURCU3RvcmFnZVJl
Z2lzdHJ5OwogY2xhc3MgTG9jYWxTdG9yYWdlTWFuYWdlcjsKIGNsYXNzIFNlc3Npb25TdG9yYWdl
TWFuYWdlcjsKIGNsYXNzIFN0b3JhZ2VBcmVhUmVnaXN0cnk7CkBAIC00NCwzNSArNDMsMzggQEAg
ZW51bSBjbGFzcyBXZWJzaXRlRGF0YVR5cGUgOiB1aW50MzJfdDsKIGNsYXNzIE9yaWdpblN0b3Jh
Z2VNYW5hZ2VyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBP
cmlnaW5TdG9yYWdlTWFuYWdlcihTdHJpbmcmJiBwYXRoLCBTdHJpbmcmJiBsb2NhbFN0b3JhZ2VQ
YXRoKTsKKyAgICBPcmlnaW5TdG9yYWdlTWFuYWdlcih1aW50NjRfdCBxdW90YSwgUXVvdGFNYW5h
Z2VyOjpJbmNyZWFzZVF1b3RhRnVuY3Rpb24mJiwgU3RyaW5nJiYgcGF0aCwgU3RyaW5nJiYgbG9j
YWxTdG9yYWdlUGF0aCwgU3RyaW5nJiYgaWRiU3RvcmFnZVBhdGgsIFN0cmluZyYmIGNhY2hlU3Rv
cmFnZVBhdGgpOwogICAgIH5PcmlnaW5TdG9yYWdlTWFuYWdlcigpOwogCiAgICAgdm9pZCBjb25u
ZWN0aW9uQ2xvc2VkKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQpOwogICAgIGJvb2wgcGVyc2lz
dGVkKCkgY29uc3QgeyByZXR1cm4gbV9wZXJzaXN0ZWQ7IH0KICAgICB2b2lkIHNldFBlcnNpc3Rl
ZChib29sIHZhbHVlKTsKKyAgICBRdW90YU1hbmFnZXImIHF1b3RhTWFuYWdlcigpOwogICAgIEZp
bGVTeXN0ZW1TdG9yYWdlTWFuYWdlciYgZmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyKEZpbGVTeXN0
ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnkmKTsKICAgICBMb2NhbFN0b3JhZ2VNYW5hZ2VyJiBsb2Nh
bFN0b3JhZ2VNYW5hZ2VyKFN0b3JhZ2VBcmVhUmVnaXN0cnkmKTsKICAgICBMb2NhbFN0b3JhZ2VN
YW5hZ2VyKiBleGlzdGluZ0xvY2FsU3RvcmFnZU1hbmFnZXIoKTsKICAgICBTZXNzaW9uU3RvcmFn
ZU1hbmFnZXImIHNlc3Npb25TdG9yYWdlTWFuYWdlcihTdG9yYWdlQXJlYVJlZ2lzdHJ5Jik7CiAg
ICAgU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyKiBleGlzdGluZ1Nlc3Npb25TdG9yYWdlTWFuYWdlcigp
OworICAgIElEQlN0b3JhZ2VNYW5hZ2VyJiBpZGJTdG9yYWdlTWFuYWdlcihJREJTdG9yYWdlUmVn
aXN0cnkmKTsKKyAgICBJREJTdG9yYWdlTWFuYWdlciogZXhpc3RpbmdJREJTdG9yYWdlTWFuYWdl
cigpOwogICAgIGJvb2wgaXNBY3RpdmUoKTsKICAgICBib29sIGlzRW1wdHkoKTsKICAgICBPcHRp
b25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBmZXRjaERhdGFUeXBlc0luTGlzdChPcHRpb25TZXQ8V2Vi
c2l0ZURhdGFUeXBlPik7CiAgICAgdm9pZCBkZWxldGVEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0
YVR5cGU+LCBXYWxsVGltZSk7Ci0gICAgdm9pZCBtb3ZlRGF0YShjb25zdCBTdHJpbmcmIG5ld1Bh
dGgsIGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlUGF0aCk7CisgICAgdm9pZCBtb3ZlRGF0YShj
b25zdCBTdHJpbmcmIG5ld1BhdGgsIGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlUGF0aCwgY29u
c3QgU3RyaW5nJiBpZGJTdG9yYWdlUGF0aCk7CiAKIHByaXZhdGU6CiAgICAgZW51bSBjbGFzcyBT
dG9yYWdlQnVja2V0TW9kZSA6IGJvb2w7CiAgICAgY2xhc3MgU3RvcmFnZUJ1Y2tldDsKICAgICBT
dG9yYWdlQnVja2V0JiBkZWZhdWx0QnVja2V0KCk7CiAKLSAgICB2b2lkIGNyZWF0ZU9yaWdpbkZp
bGVJZk5lY2Vzc2FyeShjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKLSAgICB2b2lkIGRl
bGV0ZU9yaWdpbkZpbGVJZk5lY2Vzc2FyeSgpOwotCiAgICAgc3RkOjp1bmlxdWVfcHRyPFN0b3Jh
Z2VCdWNrZXQ+IG1fZGVmYXVsdEJ1Y2tldDsKICAgICBTdHJpbmcgbV9wYXRoOwogICAgIGJvb2wg
bV9wZXJzaXN0ZWQgeyBmYWxzZSB9OwogICAgIFN0cmluZyBtX2xvY2FsU3RvcmFnZVBhdGg7Cisg
ICAgU3RyaW5nIG1faWRiU3RvcmFnZVBhdGg7CisgICAgU3RyaW5nIG1fY2FjaGVTdG9yYWdlUGF0
aDsKKyAgICBSZWY8UXVvdGFNYW5hZ2VyPiBtX3F1b3RhTWFuYWdlcjsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
dG9yYWdlL1F1b3RhTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0
b3JhZ2UvUXVvdGFNYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNzFmMTc1ODk4NTdhOTlkMzc0ZWNh
ZDhkMmVlN2E0MjFhN2ZmMDY4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9zdG9yYWdlL1F1b3RhTWFuYWdlci5jcHAKQEAgLTAsMCArMSwxMzIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUXVvdGFNYW5hZ2VyLmgi
CisKKyNpbmNsdWRlIDx3dGYvU2V0Rm9yU2NvcGUuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K1JlZjxRdW90YU1hbmFnZXI+IFF1b3RhTWFuYWdlcjo6Y3JlYXRlKHVpbnQ2NF90IHF1b3RhLCBH
ZXRVc2FnZUZ1bmN0aW9uJiYgZ2V0VXNhZ2VGdW5jdGlvbiwgSW5jcmVhc2VRdW90YUZ1bmN0aW9u
JiYgaW5jcmVhc2VRdW90YUZ1bmN0aW9uKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFF1
b3RhTWFuYWdlcihxdW90YSwgV1RGTW92ZShnZXRVc2FnZUZ1bmN0aW9uKSwgV1RGTW92ZShpbmNy
ZWFzZVF1b3RhRnVuY3Rpb24pKSk7Cit9CisKK1F1b3RhTWFuYWdlcjo6UXVvdGFNYW5hZ2VyKHVp
bnQ2NF90IHF1b3RhLCBHZXRVc2FnZUZ1bmN0aW9uJiYgZ2V0VXNhZ2VGdW5jdGlvbiwgSW5jcmVh
c2VRdW90YUZ1bmN0aW9uJiYgaW5jcmVhc2VRdW90YUZ1bmN0aW9uKQorICAgIDogbV9xdW90YShx
dW90YSkKKyAgICAsIG1faW5pdGlhbFF1b3RhKHF1b3RhKQorICAgICwgbV9nZXRVc2FnZUZ1bmN0
aW9uKFdURk1vdmUoZ2V0VXNhZ2VGdW5jdGlvbikpCisgICAgLCBtX2luY3JlYXNlUXVvdGFGdW5j
dGlvbihXVEZNb3ZlKGluY3JlYXNlUXVvdGFGdW5jdGlvbikpCit7CisgICAgQVNTRVJUKG1fcXVv
dGEpOworfQorCit2b2lkIFF1b3RhTWFuYWdlcjo6cmVxdWVzdFNwYWNlKHVpbnQ2NF90IHNwYWNl
UmVxdWVzdGVkLCBSZXF1ZXN0Q2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBtX3JlcXVlc3Rz
LmFwcGVuZChRdW90YU1hbmFnZXI6OlJlcXVlc3QgeyBzcGFjZVJlcXVlc3RlZCwgV1RGTW92ZShj
YWxsYmFjayksIFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllciB7IH0gfSk7CisgICAgaGFu
ZGxlUmVxdWVzdHMoKTsKK30KKwordm9pZCBRdW90YU1hbmFnZXI6OmhhbmRsZVJlcXVlc3RzKCkK
K3sKKyAgICBpZiAobV9jdXJyZW50UmVxdWVzdCkKKyAgICAgICAgcmV0dXJuOworCisgICAgU2V0
Rm9yU2NvcGU8Ym9vbD4gaXNIYW5kbGluZ1JlcXVlc3RzKG1faXNIYW5kbGluZ1JlcXVlc3RzLCB0
cnVlKTsKKworICAgIHdoaWxlICghbV9jdXJyZW50UmVxdWVzdCAmJiAhbV9yZXF1ZXN0cy5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgbV9jdXJyZW50UmVxdWVzdCA9IG1fcmVxdWVzdHMudGFrZUZpcnN0
KCk7CisgICAgICAgIGlmIChncmFudFdpdGhDdXJyZW50UXVvdGEobV9jdXJyZW50UmVxdWVzdC0+
c3BhY2VSZXF1ZXN0ZWQpKSB7CisgICAgICAgICAgICBtX2N1cnJlbnRSZXF1ZXN0LT5jYWxsYmFj
ayhEZWNpc2lvbjo6R3JhbnQpOworICAgICAgICAgICAgbV9jdXJyZW50UmVxdWVzdCA9IHN0ZDo6
bnVsbG9wdDsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgbV9j
dXJyZW50UmVxdWVzdC0+aWRlbnRpZmllciA9IFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmll
cjo6Z2VuZXJhdGVUaHJlYWRTYWZlKCk7CisgICAgICAgIG1faW5jcmVhc2VRdW90YUZ1bmN0aW9u
KG1fY3VycmVudFJlcXVlc3QtPmlkZW50aWZpZXIsIG1fcXVvdGEsICptX3VzYWdlLCBtX2N1cnJl
bnRSZXF1ZXN0LT5zcGFjZVJlcXVlc3RlZCk7CisgICAgfQorfQorCitib29sIFF1b3RhTWFuYWdl
cjo6Z3JhbnRXaXRoQ3VycmVudFF1b3RhKHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkKQoreworICAg
IGlmIChncmFudEZhc3RQYXRoKHNwYWNlUmVxdWVzdGVkKSkKKyAgICAgICAgcmV0dXJuIHRydWU7
CisKKyAgICAvLyBXaGVuIFF1b3RhTWFuYWdlciBpcyB1c2VkIGZvciB0aGUgZmlyc3QgdGltZSwg
d2Ugd2FudCB0byBtYWtlIHN1cmUgaXRzIGluaXRpYWwgcXVvdGEgaXMgYmlnZ2VyIHRoYW4gZXhp
c3RpbmcgZGlzayB1c2FnZSwKKyAgICAvLyBiYXNlZCBvbiB0aGUgYXNzdW1wdGlvbiB0aGF0IHRo
ZSBxdW90YSB3YXMgaW5jcmVhc2VkIHRvIGF0IGxlYXN0IHRoZSBkaXNrIHVzYWdlIHVuZGVyIHVz
ZXIncyBwZXJtaXNzaW9uIGJlZm9yZS4KKyAgICBib29sIHNob3VsZFVwZGF0ZVF1b3RhQmFzZWRP
blVzYWdlID0gIW1fdXNhZ2U7CisgICAgbV91c2FnZSA9IG1fZ2V0VXNhZ2VGdW5jdGlvbigpOwor
ICAgIGlmIChzaG91bGRVcGRhdGVRdW90YUJhc2VkT25Vc2FnZSkgeworICAgICAgICBhdXRvIGRl
ZmF1bHRRdW90YVN0ZXAgPSBtX3F1b3RhIC8gMTA7CisgICAgICAgIG1fcXVvdGEgPSBzdGQ6Om1h
eChtX3F1b3RhLCBkZWZhdWx0UXVvdGFTdGVwICogKCgqbV91c2FnZSAvIGRlZmF1bHRRdW90YVN0
ZXApICsgMSkpOworICAgIH0KKyAgICBtX3F1b3RhQ291bnRkb3duID0gKm1fdXNhZ2UgPCBtX3F1
b3RhID8gbV9xdW90YSAtICptX3VzYWdlIDogMDsKKworICAgIHJldHVybiBncmFudEZhc3RQYXRo
KHNwYWNlUmVxdWVzdGVkKTsKK30KKworYm9vbCBRdW90YU1hbmFnZXI6OmdyYW50RmFzdFBhdGgo
dWludDY0X3Qgc3BhY2VSZXF1ZXN0ZWQpCit7CisgICAgaWYgKHNwYWNlUmVxdWVzdGVkIDw9IG1f
cXVvdGFDb3VudGRvd24pIHsKKyAgICAgICAgbV9xdW90YUNvdW50ZG93biAtPSBzcGFjZVJlcXVl
c3RlZDsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOwor
fQorCit2b2lkIFF1b3RhTWFuYWdlcjo6ZGlkSW5jcmVhc2VRdW90YShRdW90YUluY3JlYXNlUmVx
dWVzdElkZW50aWZpZXIgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbmV3UXVv
dGEpCit7CisgICAgaWYgKCFtX2N1cnJlbnRSZXF1ZXN0IHx8IG1fY3VycmVudFJlcXVlc3QtPmlk
ZW50aWZpZXIgIT0gaWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG5ld1F1
b3RhKSB7CisgICAgICAgIG1fcXVvdGEgPSAqbmV3UXVvdGE7CisgICAgICAgIC8vIFJlY2FsY3Vs
YXRlIG1fcXVvdGFDb3VudGRvd24gYmFzZWQgb24gdXNhZ2UuCisgICAgICAgIG1fcXVvdGFDb3Vu
dGRvd24gPSAwOworICAgIH0KKworICAgIGF1dG8gZGVjaXNpb24gPSBncmFudFdpdGhDdXJyZW50
UXVvdGEobV9jdXJyZW50UmVxdWVzdC0+c3BhY2VSZXF1ZXN0ZWQpID8gRGVjaXNpb246OkdyYW50
IDogRGVjaXNpb246OkRlbnk7CisgICAgbV9jdXJyZW50UmVxdWVzdC0+Y2FsbGJhY2soZGVjaXNp
b24pOworICAgIG1fY3VycmVudFJlcXVlc3QgPSBzdGQ6Om51bGxvcHQ7CisKKyAgICBpZiAoIW1f
aXNIYW5kbGluZ1JlcXVlc3RzKQorICAgICAgICBoYW5kbGVSZXF1ZXN0cygpOworfQorCit2b2lk
IFF1b3RhTWFuYWdlcjo6cmVzZXRRdW90YVVwZGF0ZWRCYXNlZE9uVXNhZ2VGb3JUZXN0aW5nKCkK
K3sKKyAgICByZXNldFF1b3RhRm9yVGVzdGluZygpOworICAgIG1fdXNhZ2UgPSBzdGQ6Om51bGxv
cHQ7Cit9CisKK3ZvaWQgUXVvdGFNYW5hZ2VyOjpyZXNldFF1b3RhRm9yVGVzdGluZygpCit7Cisg
ICAgbV9xdW90YSA9IG1faW5pdGlhbFF1b3RhOworICAgIG1fcXVvdGFDb3VudGRvd24gPSAwOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvc3RvcmFnZS9RdW90YU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvc3RvcmFnZS9RdW90YU1hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYWI0OGM4OGFjODdh
NjA2MmY4Y2M3YmMyNzhlZDY5M2EwNjY3NjU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1F1b3RhTWFuYWdlci5oCkBAIC0wLDAgKzEsNzEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlF1b3RhSW5jcmVhc2VS
ZXF1ZXN0SWRlbnRpZmllci5oIgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgor
I2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUXVv
dGFNYW5hZ2VyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFF1b3RhTWFuYWdlcj4sIHB1
YmxpYyBDYW5NYWtlV2Vha1B0cjxRdW90YU1hbmFnZXI+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKK3B1YmxpYzoKKyAgICB1c2luZyBHZXRVc2FnZUZ1bmN0aW9uID0gRnVuY3Rpb248
dWludDY0X3QoKT47CisgICAgdXNpbmcgSW5jcmVhc2VRdW90YUZ1bmN0aW9uID0gRnVuY3Rpb248
dm9pZChRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGN1cnJlbnRRdW90
YSwgdWludDY0X3QgY3VycmVudFVzYWdlLCB1aW50NjRfdCByZXF1ZXN0ZWRJbmNyZWFzZSk+Owor
ICAgIHN0YXRpYyBSZWY8UXVvdGFNYW5hZ2VyPiBjcmVhdGUodWludDY0X3QgcXVvdGEsIEdldFVz
YWdlRnVuY3Rpb24mJiwgSW5jcmVhc2VRdW90YUZ1bmN0aW9uJiYpOworCisgICAgZW51bSBjbGFz
cyBEZWNpc2lvbiA6IGJvb2wgeyBEZW55LCBHcmFudCB9OworICAgIHVzaW5nIFJlcXVlc3RDYWxs
YmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRGVjaXNpb24pPjsKKyAgICB2b2lkIHJlcXVl
c3RTcGFjZSh1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCwgUmVxdWVzdENhbGxiYWNrJiYpOworICAg
IHZvaWQgZGlkSW5jcmVhc2VRdW90YShRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIsIHN0
ZDo6b3B0aW9uYWw8dWludDY0X3Q+IG5ld1F1b3RhKTsKKworICAgIHZvaWQgcmVzZXRRdW90YVVw
ZGF0ZWRCYXNlZE9uVXNhZ2VGb3JUZXN0aW5nKCk7CisgICAgdm9pZCByZXNldFF1b3RhRm9yVGVz
dGluZygpOworCitwcml2YXRlOgorICAgIFF1b3RhTWFuYWdlcih1aW50NjRfdCBxdW90YSwgR2V0
VXNhZ2VGdW5jdGlvbiYmLCBJbmNyZWFzZVF1b3RhRnVuY3Rpb24mJik7CisgICAgdm9pZCBoYW5k
bGVSZXF1ZXN0cygpOworICAgIGJvb2wgZ3JhbnRXaXRoQ3VycmVudFF1b3RhKHVpbnQ2NF90IHNw
YWNlUmVxdWVzdGVkKTsKKyAgICBib29sIGdyYW50RmFzdFBhdGgodWludDY0X3Qgc3BhY2VSZXF1
ZXN0ZWQpOworCisgICAgc3RydWN0IFJlcXVlc3QgeworICAgICAgICB1aW50NjRfdCBzcGFjZVJl
cXVlc3RlZDsKKyAgICAgICAgUmVxdWVzdENhbGxiYWNrIGNhbGxiYWNrOworICAgICAgICBRdW90
YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIgaWRlbnRpZmllcjsKKyAgICB9OworICAgIERlcXVl
PFJlcXVlc3Q+IG1fcmVxdWVzdHM7CisgICAgc3RkOjpvcHRpb25hbDxSZXF1ZXN0PiBtX2N1cnJl
bnRSZXF1ZXN0OworICAgIGJvb2wgbV9pc0hhbmRsaW5nUmVxdWVzdHMgeyBmYWxzZSB9OworICAg
IHVpbnQ2NF90IG1fcXVvdGFDb3VudGRvd24geyAwIH07CisgICAgdWludDY0X3QgbV9xdW90YTsK
KyAgICB1aW50NjRfdCBtX2luaXRpYWxRdW90YTsgLy8gVGVzdCBvbmx5LgorICAgIHN0ZDo6b3B0
aW9uYWw8dWludDY0X3Q+IG1fdXNhZ2U7CisgICAgR2V0VXNhZ2VGdW5jdGlvbiBtX2dldFVzYWdl
RnVuY3Rpb247CisgICAgSW5jcmVhc2VRdW90YUZ1bmN0aW9uIG1faW5jcmVhc2VRdW90YUZ1bmN0
aW9uOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC9tZXNzYWdlcy5weQppbmRleCBjNTNlZjk5NDNmNWZmMzdlZmQ2ODM5ZTI1ZmNkZWRlM2Yz
NmI1NTFlLi43NThkNTA1NTZmZjJmNmU0NzM3N2QxNGU4MjY2YmM1ZTNlYWM0MWE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTI4OCw2ICsyODgsNyBAQCBk
ZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgpOgogICAgICAgICAnV2Vi
Q29yZTo6TmF0aXZlSW1hZ2VSZWZlcmVuY2UnLAogICAgICAgICAnV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRl
bnRpZmllcicsCisgICAgICAgICdXZWJLaXQ6OlF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmll
cicsCiAgICAgICAgICdXZWJDb3JlOjpQbHVnaW5Mb2FkQ2xpZW50UG9saWN5JywKICAgICAgICAg
J1dlYkNvcmU6OlBvaW50ZXJJRCcsCiAgICAgICAgICdXZWJDb3JlOjpQdXNoU3Vic2NyaXB0aW9u
SWRlbnRpZmllcicsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0
YS9RdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYnNpdGVEYXRhL1F1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmJlNDU0YjZhMDhiNjhhMjBjNjUwZGM4OTc2MzI4NTU4YTM3MjAxZjUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9RdW90YUluY3JlYXNlUmVxdWVz
dElkZW50aWZpZXIuaApAQCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworZW51bSBRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5n
IFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8UXVvdGFJ
bmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyVHlwZT47CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRl
cnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmgK
aW5kZXggMTUzYmY5M2JkZjZmZjExYjQ2MGY2NDgyNWI0NTAzMDhiODQ1ZDM4ZC4uMjA5ODQ2ODE2
Mjk5MDQ3MzM4ODRjZmNiMTI3YWE1NzIxZDJjZWU4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oCkBAIC03MSw4ICs3MSw4IEBAIHN0
cnVjdCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyB7CiAgICAgU3RyaW5nIGdlbmVyYWxTdG9y
YWdlRGlyZWN0b3J5OwogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBnZW5lcmFsU3RvcmFn
ZURpcmVjdG9yeUhhbmRsZTsKIAotICAgIHVpbnQ2NF90IHBlck9yaWdpblN0b3JhZ2VRdW90YSB7
IFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6OmRlZmF1bHRRdW90YSgpIH07Ci0gICAgdWlu
dDY0X3QgcGVyVGhpcmRQYXJ0eU9yaWdpblN0b3JhZ2VRdW90YSB7IFdlYkNvcmU6OlN0b3JhZ2VR
dW90YU1hbmFnZXI6OmRlZmF1bHRUaGlyZFBhcnR5UXVvdGEoKSB9OworICAgIHVpbnQ2NF90IHBl
ck9yaWdpblN0b3JhZ2VRdW90YTsKKyAgICB1aW50NjRfdCBwZXJUaGlyZFBhcnR5T3JpZ2luU3Rv
cmFnZVF1b3RhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCBl
MzEzOTEwNTljYjNjYjIwMGE0ODM3MTk5YTQ5ZDMyMTljODQ0NzNkLi5lMmY0YmQ0YTRhZGM0MWNj
MzI5MTZiZjVjNjNmYjQ2ODQ0MTA4MDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTE0OSwxMCArMTQ5LDE0
IEBAIE5ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLmNwcAogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3Rv
cmFnZU1hbmFnZXIuY3BwCiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdl
SGFuZGxlLmNwcAogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZUhhbmRs
ZVJlZ2lzdHJ5LmNwcAorTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlQ29ubmVjdGlv
blRvQ2xpZW50LmNwcAorTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlTWFuYWdlci5j
cHAKK05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZVJlZ2lzdHJ5LmNwcAogTmV0d29y
a1Byb2Nlc3Mvc3RvcmFnZS9Mb2NhbFN0b3JhZ2VNYW5hZ2VyLmNwcAogTmV0d29ya1Byb2Nlc3Mv
c3RvcmFnZS9NZW1vcnlTdG9yYWdlQXJlYS5jcHAKIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0
d29ya1N0b3JhZ2VNYW5hZ2VyLmNwcAogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9y
YWdlTWFuYWdlci5jcHAKK05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvUXVvdGFNYW5hZ2VyLmNwcAog
TmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TUUxpdGVTdG9yYWdlQXJlYS5jcHAKIE5ldHdvcmtQcm9j
ZXNzL3N0b3JhZ2UvU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyLmNwcAogTmV0d29ya1Byb2Nlc3Mvc3Rv
cmFnZS9TdG9yYWdlQXJlYUJhc2UuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAzMzAyMGJkNWMzY2Q5
NDE3NzU2MTU3OWFjMjBmYzM4ZjljNjkyNzhlLi5hZTc3ODE4ZGYyZTEzYWE4OGUzZDhmOGMxMjk4
NDEyZGNmN2MzMTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTE1MDYsNiArMTUwNiwxNiBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlcXVlc3RTdG9yYWdlU3BhY2UoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBjb25zdCBXZQogICAgIH0pOwogfQogCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJv
eHk6OmluY3JlYXNlUXVvdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBXZWJDb3Jl
OjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgY3VycmVudFVzYWdlLCB1
aW50NjRfdCBzcGFjZVJlcXVlc3RlZCkKK3sKKyAgICByZXF1ZXN0U3RvcmFnZVNwYWNlKHNlc3Np
b25JRCwgb3JpZ2luLCBjdXJyZW50UXVvdGEsIGN1cnJlbnRVc2FnZSwgc3BhY2VSZXF1ZXN0ZWQs
IFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBzZXNzaW9uSUQsIG9yaWdpbiwg
aWRlbnRpZmllcl0oYXV0byByZXN1bHQpIG11dGFibGUgeworICAgICAgICBpZiAoIXdlYWtUaGlz
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQ
cm9jZXNzOjpEaWRJbmNyZWFzZVF1b3RhKHNlc3Npb25JRCwgb3JpZ2luLCBpZGVudGlmaWVyLCBy
ZXN1bHQpLCAwKTsKKyAgICB9KTsKK30KKwogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZWdp
c3RlclNjaGVtZUZvckxlZ2FjeUN1c3RvbVByb3RvY29sKGNvbnN0IFN0cmluZyYgc2NoZW1lKQog
ewogI2lmIEVOQUJMRShMRUdBQ1lfQ1VTVE9NX1BST1RPQ09MX01BTkFHRVIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmlu
ZGV4IDY4NDFhMzRmZTA5ZDEyYmE5M2Q0ZWY4YzgwZTQ1MzNhNTVmZDY1YzQuLmM0MzE5ODQ5Mzg5
ZDEyMjkxNWUwNzdmODMwZDM1YzkwNmVmNGRiNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0zMyw2ICszMyw3
IEBACiAjaW5jbHVkZSAiUHJvY2Vzc0xhdW5jaGVyLmgiCiAjaW5jbHVkZSAiUHJvY2Vzc1Rocm90
dGxlci5oIgogI2luY2x1ZGUgIlByb2Nlc3NUaHJvdHRsZXJDbGllbnQuaCIKKyNpbmNsdWRlICJR
dW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJVc2VyQ29udGVudENv
bnRyb2xsZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZXNS
ZXBsaWVzLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgpAQCAtMzQyLDYgKzM0Myw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCB0cmlnZ2VyQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hG
b3JOYXZpZ2F0aW9uKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgV2ViQ29yZTo6QnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbiwgY29uc3QgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlc3BvbnNlRG9tYWluLCBOZXR3b3JrUmVzb3VyY2VM
b2FkSWRlbnRpZmllciBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1
bWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBzdWNjZXNzKT4mJik7CiAKICAgICB2b2lk
IHJlcXVlc3RTdG9yYWdlU3BhY2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNsaWVu
dE9yaWdpbiYsIHVpbnQ2NF90IHF1b3RhLCB1aW50NjRfdCBjdXJyZW50U2l6ZSwgdWludDY0X3Qg
c3BhY2VSZXF1aXJlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPHVpbnQ2
NF90PiBxdW90YSk+JiYpOworICAgIHZvaWQgaW5jcmVhc2VRdW90YShQQUw6OlNlc3Npb25JRCwg
Y29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlm
aWVyLCB1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRVc2FnZSwgdWludDY0
X3Qgc3BhY2VSZXF1ZXN0ZWQpOwogCiAgICAgV2Vic2l0ZURhdGFTdG9yZSogd2Vic2l0ZURhdGFT
dG9yZUZyb21TZXNzaW9uSUQoUEFMOjpTZXNzaW9uSUQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVz
c2FnZXMuaW4KaW5kZXggMTU3NTdlZDlhMjUyYjA5ZGNkMTFiYjVlNmI5YzhhMTBkMDUzNGM5YS4u
OGZhMGEyMTQ3OGY3MjgwYzBiODNiMDM4MmQ0YWRiNWQ4MjJhOGZkNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5tZXNzYWdlcy5pbgpAQCAtNzAsNiArNzAsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJv
Y2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIHsKICNlbmRpZgogCiAgICAgUmVxdWVzdFN0b3JhZ2VT
cGFjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0cnVjdCBXZWJDb3JlOjpDbGllbnRPcmln
aW4gb3JpZ2luLCB1aW50NjRfdCBxdW90YSwgdWludDY0X3QgY3VycmVudFNpemUsIHVpbnQ2NF90
IHNwYWNlUmVxdWlyZWQpIC0+IChzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBuZXdRdW90YSkgQXN5
bmMKKyAgICBJbmNyZWFzZVF1b3RhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RydWN0IFdl
YkNvcmU6OkNsaWVudE9yaWdpbiBvcmlnaW4sIFdlYktpdDo6UXVvdGFJbmNyZWFzZVJlcXVlc3RJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIHVpbnQ2NF90IHF1b3RhLCB1aW50NjRfdCBjdXJyZW50U2l6
ZSwgdWludDY0X3Qgc3BhY2VSZXF1ZXN0ZWQpCiAgICAgCiAgICAgUmVzb3VyY2VMb2FkRGlkU2Vu
ZFJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJZGVudGlmaWVyLCBz
dHJ1Y3QgV2ViS2l0OjpSZXNvdXJjZUxvYWRJbmZvIHJlc291cmNlTG9hZEluZm8sIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBzdGQ6Om9wdGlvbmFsPElQQzo6Rm9ybURhdGFSZWZl
cmVuY2U+IGh0dHBCb2R5KQogICAgIFJlc291cmNlTG9hZERpZFBlcmZvcm1IVFRQUmVkaXJlY3Rp
b24oV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJZGVudGlmaWVyLCBzdHJ1Y3Qg
V2ViS2l0OjpSZXNvdXJjZUxvYWRJbmZvIHJlc291cmNlTG9hZEluZm8sIFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UgcmVzb3VyY2VSZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJl
cXVlc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IDA4Y2VjZmViZmUwZGU0NGIxZjVhNGI1MDExNDA1
ZTFmZDgxNTA5ZmUuLjEzMjkwNTU3MmY0YjhjM2QwNzk1ODM0MzE0OGMyZmI1NjgzZmVmYjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuY3BwCkBAIC0xNzE2LDcgKzE3MTYsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3Rv
cmU6OmRpc3BhdGNoT25RdWV1ZShGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCiB1aW50NjRf
dCBXZWJzaXRlRGF0YVN0b3JlOjpwZXJUaGlyZFBhcnR5T3JpZ2luU3RvcmFnZVF1b3RhKCkgY29u
c3QKIHsKICAgICAvLyBGSVhNRTogQ29uc2lkZXIgd2hldGhlciBhbGxvd2luZyB0byBzZXQgYSBw
ZXJUaGlyZFBhcnR5T3JpZ2luU3RvcmFnZVF1b3RhIGZyb20gYSBXZWJzaXRlRGF0YVN0b3JlLgot
ICAgIHJldHVybiBXZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2VyOjpkZWZhdWx0VGhpcmRQYXJ0
eVF1b3RhRnJvbVBlck9yaWdpblF1b3RhKHBlck9yaWdpblN0b3JhZ2VRdW90YSgpKTsKKyAgICBy
ZXR1cm4gcGVyT3JpZ2luU3RvcmFnZVF1b3RhKCkgLyAxMDsKIH0KIAogdm9pZCBXZWJzaXRlRGF0
YVN0b3JlOjpzZXRDYWNoZU1vZGVsU3luY2hyb25vdXNseUZvclRlc3RpbmcoQ2FjaGVNb2RlbCBj
YWNoZU1vZGVsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5oCmluZGV4IDZiYzY5MzY5YzMzODMyODY5ZGVhMWY1ZGFhNTBl
NzlmYWE2ZTdiZjkuLjg1ZWUzMWUxMzgzZDk3ZDY0NmM2OThjMmRlZjdkOWMzMzRhYjc1YmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmgKQEAgLTM1MCw2ICszNTAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFdURjo6
U3RyaW5nIGRlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKTsKICAgICBz
dGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdEphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5
KCk7CiAgICAgc3RhdGljIGJvb2wgaHR0cDNFbmFibGVkKCk7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciB1aW50NjRfdCBkZWZhdWx0UGVyT3JpZ2luUXVvdGEoKSB7IHJldHVybiAxMDAwICogTUI7IH0K
IAogICAgIHZvaWQgcmVzZXRRdW90YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAg
IHZvaWQgY2xlYXJTdG9yYWdlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKaW5kZXggMzMwYjhiMTA1YTc5ZGE2NWRj
MjA3YTdlZmUzYmMzNzYwMDBlMmYxYS4uMWFlNmQwYjExYWQzODRmNjQxNmZmZDNiZjU0ODM3MjVh
NGZmM2IzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcApAQCAt
MzMsNiArMzMsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogV2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb246OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKElzUGVyc2lzdGVudCBpc1Bl
cnNpc3RlbnQsIFdpbGxDb3B5UGF0aHNGcm9tRXhpc3RpbmdDb25maWd1cmF0aW9uIHdpbGxDb3B5
UGF0aHMpCiAgICAgOiBtX2lzUGVyc2lzdGVudChpc1BlcnNpc3RlbnQpCisgICAgLCBtX3Blck9y
aWdpblN0b3JhZ2VRdW90YShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UGVyT3JpZ2luUXVvdGEo
KSkKIHsKICAgICBpZiAoaXNQZXJzaXN0ZW50ID09IElzUGVyc2lzdGVudDo6WWVzICYmIHdpbGxD
b3B5UGF0aHMgPT0gV2lsbENvcHlQYXRoc0Zyb21FeGlzdGluZ0NvbmZpZ3VyYXRpb246Ok5vKSB7
CiAgICAgICAgIHNldEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24uaAppbmRleCBmMTcxYWQ0Y2U1ZTFiNWNlMTM5NGVjNzgwOTUyNDEwN2Y4
MmMxNzRhLi4zMGEyOTkzMTAyMjdkMmY3MjRmNDI1NzZiNjYxMjU0N2I5NjFjZjI4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgKQEAgLTI2LDcgKzI2LDYgQEAKICNwcmFn
bWEgb25jZQogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9TdG9y
YWdlUXVvdGFNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCkBAIC0yMDcsNyArMjA2LDcgQEAgcHJpdmF0ZToKIAogICAgIFN0
cmluZyBtX2NhY2hlU3RvcmFnZURpcmVjdG9yeTsKICAgICBTdHJpbmcgbV9nZW5lcmFsU3RvcmFn
ZURpcmVjdG9yeTsKLSAgICB1aW50NjRfdCBtX3Blck9yaWdpblN0b3JhZ2VRdW90YSB7IFdlYkNv
cmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6OmRlZmF1bHRRdW90YSgpIH07CisgICAgdWludDY0X3Qg
bV9wZXJPcmlnaW5TdG9yYWdlUXVvdGE7CiAgICAgU3RyaW5nIG1fbmV0d29ya0NhY2hlRGlyZWN0
b3J5OwogICAgIFN0cmluZyBtX2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnk7CiAgICAgU3RyaW5n
IG1fYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSB7ICJGaWxlcyJfcyB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggNjBkM2U5ODIwNWQ1ZGQzOTg0ZTU4N2NkMzAxMGU5ODMwZDIzODc1MC4uM2ZjYzFmMWJmNzkx
MTRkYzViMDlhNGI4MmUzNDFlYTNkMGMzOTMxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNDcyLDYgKzE0NzIsMTEgQEAKIAkJOTNC
MjYxNEQyMjdEMTQ5RTAwQjk3QTc2IC8qIFN0b3JhZ2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0IyNjE0OTIyN0QxNDcyMDBCOTdBNzYg
LyogU3RvcmFnZU1hbmFnZXIuaCAqLzsgfTsKIAkJOTNCMjYxNEUyMjdEMTRCMTAwQjk3QTc2IC8q
IExvY2FsU3RvcmFnZURhdGFiYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5M0IyNjE0NTIyN0QxNDcwMDBCOTdBNzYgLyogTG9jYWxTdG9yYWdlRGF0
YWJhc2UuaCAqLzsgfTsKIAkJOTNCMjYxNEYyMjdEMTRCMTAwQjk3QTc2IC8qIExvY2FsU3RvcmFn
ZURhdGFiYXNlVHJhY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTNCMjYxNDYyMjdEMTQ3MTAwQjk3QTc2IC8qIExvY2FsU3RvcmFnZURhdGFiYXNl
VHJhY2tlci5oICovOyB9OworCQk5M0I2MzFFNTI3QUJBNjI4MDA0NDNBNDQgLyogSURCU3RvcmFn
ZUNvbm5lY3Rpb25Ub0NsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTNCNjMxRTQyN0FCQTYyNzAwNDQzQTQ0IC8qIElEQlN0b3JhZ2VDb25uZWN0
aW9uVG9DbGllbnQuaCAqLzsgfTsKKwkJOTNCNjMxRTgyN0FCQTY1RDAwNDQzQTQ0IC8qIElEQlN0
b3JhZ2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5M0I2MzFFNjI3QUJBNjVDMDA0NDNBNDQgLyogSURCU3RvcmFnZU1hbmFnZXIuaCAqLzsg
fTsKKwkJOTNCNjMxRUQyN0FCQTZCNDAwNDQzQTQ0IC8qIElEQlN0b3JhZ2VSZWdpc3RyeS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCNjMxRUIyN0FC
QTZCMzAwNDQzQTQ0IC8qIElEQlN0b3JhZ2VSZWdpc3RyeS5oICovOyB9OworCQk5M0I2MzFGMTI3
QUJBQ0E5MDA0NDNBNDQgLyogUXVvdGFNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0I2MzFFRjI3QUJBQ0E5MDA0NDNBNDQgLyogUXVvdGFN
YW5hZ2VyLmggKi87IH07CisJCTkzQjYzMUYzMjdBQkFEODAwMDQ0M0E0NCAvKiBRdW90YUluY3Jl
YXNlUmVxdWVzdElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDkzQjYzMUYyMjdBQkFEN0YwMDQ0M0E0NCAvKiBRdW90YUluY3JlYXNlUmVx
dWVzdElkZW50aWZpZXIuaCAqLzsgfTsKIAkJOTNCREVCMDExNzFERDdBRjAwQkZFRTFCIC8qIFdL
UGFnZUxvYWRUeXBlc1ByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDkzQkRFQjAwMTcxREQ3QUYwMEJGRUUxQiAvKiBXS1BhZ2VMb2FkVHlwZXNQ
cml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJOTNENkI3NzIyNTRCQjUxOTAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uU2VydmVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Q2Qjc2QzI1
NEI4OTU4MDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaCAqLzsgfTsKIAkJOTNE
NkI3NzMyNTRCQjhDNzAwNThERDNBIC8qIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNENkI3Njgy
NTRCN0JDNjAwNThERDNBIC8qIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5oICovOyB9
OwpAQCAtNTM3Nyw2ICs1MzgyLDE1IEBACiAJCTkzQjI2MTQ5MjI3RDE0NzIwMEI5N0E3NiAvKiBT
dG9yYWdlTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdG9yYWdl
TWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0IyNjE0QTIyN0QxNDcy
MDBCOTdBNzYgLyogU3RvcmFnZU1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU3RvcmFnZU1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5M0IyNjE0QzIyN0QxNDcyMDBCOTdBNzYgLyogTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTG9jYWxTdG9yYWdlRGF0YWJh
c2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0I2MzFFMzI3QUJBNUY3MDA0
NDNBNDQgLyogSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJOTNCNjMxRTQyN0FCQTYyNzAwNDQzQTQ0IC8qIElEQlN0b3JhZ2VDb25uZWN0
aW9uVG9DbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSURCU3RvcmFn
ZUNvbm5lY3Rpb25Ub0NsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0I2
MzFFNjI3QUJBNjVDMDA0NDNBNDQgLyogSURCU3RvcmFnZU1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSURCU3RvcmFnZU1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJOTNCNjMxRTcyN0FCQTY1QzAwNDQzQTQ0IC8qIElEQlN0b3JhZ2VNYW5h
Z2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElEQlN0b3JhZ2VN
YW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNCNjMxRUEyN0FCQTZC
MjAwNDQzQTQ0IC8qIElEQlN0b3JhZ2VSZWdpc3RyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBJREJTdG9yYWdlUmVnaXN0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk5M0I2MzFFQjI3QUJBNkIzMDA0NDNBNDQgLyogSURCU3RvcmFnZVJlZ2lz
dHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElEQlN0b3JhZ2VSZWdpc3Ry
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0I2MzFFRTI3QUJBQ0E4MDA0NDNB
NDQgLyogUXVvdGFNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFF1b3RhTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzQjYz
MUVGMjdBQkFDQTkwMDQ0M0E0NCAvKiBRdW90YU1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUXVvdGFNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTkzQjYzMUYyMjdBQkFEN0YwMDQ0M0E0NCAvKiBRdW90YUluY3JlYXNlUmVxdWVzdElkZW50
aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUXVvdGFJbmNyZWFzZVJl
cXVlc3RJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQkEwNERB
MjE1MUFERjMwMDdGNDU1RiAvKiBXZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0JBMDREQjIxNTFBREYzMDA3RjQ1NUYgLyog
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5M0JBMDREQzIxNTFBREYzMDA3RjQ1NUYgLyogV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTc1OTIsNiArNzYwNiw3IEBACiAJCTFBQkY0Mzc4MUEzNjgwMzUwMDNG
QjBFNiAvKiBXZWJzaXRlRGF0YSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCisJCQkJOTNCNjMxRjIyN0FCQUQ3RjAwNDQzQTQ0IC8qIFF1b3RhSW5jcmVhc2VSZXF1
ZXN0SWRlbnRpZmllci5oICovLAogCQkJCTFBNDgzMkQ0MUE5Q0RGOTYwMDhCNERGRSAvKiBXZWJz
aXRlRGF0YS5jcHAgKi8sCiAJCQkJMUE0ODMyRDUxQTlDREY5NjAwOEI0REZFIC8qIFdlYnNpdGVE
YXRhLmggKi8sCiAJCQkJMUEyOEI4Q0IxQzgwRUQ1OTAwNkZENzQzIC8qIFdlYnNpdGVEYXRhRmV0
Y2hPcHRpb24uaCAqLywKQEAgLTEwNDY5LDYgKzEwNDg0LDEyIEBACiAJCQkJOTM1QjU3OTgyNkY1
MTI3MDAwOEI0OEFDIC8qIEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnkuaCAqLywKIAkJ
CQk5MzFBMDc1MTI2RjA2MzEwMDA0NDc0Q0QgLyogRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyLmNw
cCAqLywKIAkJCQk5MzFBMDc1MDI2RjA2MzEwMDA0NDc0Q0QgLyogRmlsZVN5c3RlbVN0b3JhZ2VN
YW5hZ2VyLmggKi8sCisJCQkJOTNCNjMxRTMyN0FCQTVGNzAwNDQzQTQ0IC8qIElEQlN0b3JhZ2VD
b25uZWN0aW9uVG9DbGllbnQuY3BwICovLAorCQkJCTkzQjYzMUU0MjdBQkE2MjcwMDQ0M0E0NCAv
KiBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50LmggKi8sCisJCQkJOTNCNjMxRTcyN0FCQTY1
QzAwNDQzQTQ0IC8qIElEQlN0b3JhZ2VNYW5hZ2VyLmNwcCAqLywKKwkJCQk5M0I2MzFFNjI3QUJB
NjVDMDA0NDNBNDQgLyogSURCU3RvcmFnZU1hbmFnZXIuaCAqLywKKwkJCQk5M0I2MzFFQTI3QUJB
NkIyMDA0NDNBNDQgLyogSURCU3RvcmFnZVJlZ2lzdHJ5LmNwcCAqLywKKwkJCQk5M0I2MzFFQjI3
QUJBNkIzMDA0NDNBNDQgLyogSURCU3RvcmFnZVJlZ2lzdHJ5LmggKi8sCiAJCQkJOTNFNzk5Qzky
NzYwNDk3QTAwNzQwMDhBIC8qIExvY2FsU3RvcmFnZU1hbmFnZXIuY3BwICovLAogCQkJCTkzRTc5
OUNCMjc2MDQ5N0EwMDc0MDA4QSAvKiBMb2NhbFN0b3JhZ2VNYW5hZ2VyLmggKi8sCiAJCQkJOTNF
Nzk5RDgyNzYxMjEwODAwNzQwMDhBIC8qIE1lbW9yeVN0b3JhZ2VBcmVhLmNwcCAqLywKQEAgLTEw
NDc4LDYgKzEwNDk5LDggQEAKIAkJCQk5MzA4NURDNzI2RTFDNkVFMDAwRUM2QTcgLyogTmV0d29y
a1N0b3JhZ2VNYW5hZ2VyLm1lc3NhZ2VzLmluICovLAogCQkJCTkzMDg1REM1MjZFMUM2Q0YwMDBF
QzZBNyAvKiBPcmlnaW5TdG9yYWdlTWFuYWdlci5jcHAgKi8sCiAJCQkJOTMwODVEQzYyNkUxQzZD
RjAwMEVDNkE3IC8qIE9yaWdpblN0b3JhZ2VNYW5hZ2VyLmggKi8sCisJCQkJOTNCNjMxRUUyN0FC
QUNBODAwNDQzQTQ0IC8qIFF1b3RhTWFuYWdlci5jcHAgKi8sCisJCQkJOTNCNjMxRUYyN0FCQUNB
OTAwNDQzQTQ0IC8qIFF1b3RhTWFuYWdlci5oICovLAogCQkJCTkzRTc5OUNDMjc2MDQ5N0IwMDc0
MDA4QSAvKiBTZXNzaW9uU3RvcmFnZU1hbmFnZXIuY3BwICovLAogCQkJCTkzRTc5OUNBMjc2MDQ5
N0EwMDc0MDA4QSAvKiBTZXNzaW9uU3RvcmFnZU1hbmFnZXIuaCAqLywKIAkJCQk5M0U3OTlEMzI3
NjEyMTA3MDA3NDAwOEEgLyogU1FMaXRlU3RvcmFnZUFyZWEuY3BwICovLApAQCAtMTMwODgsNiAr
MTMxMTEsOSBAQAogCQkJCTMxMkNDOUYyMjE1QjA2RjEwMERFNDBDQSAvKiBIaWdoUGVyZm9ybWFu
Y2VHUFVNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzlBMkYzMjFFMjA2NzQ1MDAzOTA1
N0UgLyogSGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTUxQzBDOTc0MURERDc2MDAwMDMyQ0FEMyAvKiBJY29uTG9hZGluZ0RlbGVnYXRlLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk5M0I2MzFFNTI3QUJBNjI4MDA0NDNBNDQgLyogSURCU3RvcmFn
ZUNvbm5lY3Rpb25Ub0NsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTNCNjMxRTgyN0FCQTY1
RDAwNDQzQTQ0IC8qIElEQlN0b3JhZ2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQk5M0I2
MzFFRDI3QUJBNkI0MDA0NDNBNDQgLyogSURCU3RvcmFnZVJlZ2lzdHJ5LmggaW4gSGVhZGVycyAq
LywKIAkJCQk1MUUzNTFDQjE4MEYyQ0NDMDBFNTNCRTkgLyogSURCVXRpbGl0aWVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQ0NGNkIyNTEyQzkzRTdBMDA4RjlDMzUgLyogSW1hZ2VPcHRpb25zLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQTFFQzY5RTE4NzIwOTIxMDBCOTUxRjAgLyogSW1wb3J0YW5j
ZUFzc2VydGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMzMwMiw2ICsxMzMyOCw4IEBACiAJCQkJ
QTFFNjg4NzAxRjZFMkJBQjAwNzAwNkE2IC8qIFF1YXJhbnRpbmVTUEkuaCBpbiBIZWFkZXJzICov
LAogCQkJCTFBMEMyMjdFMjQ1MTEzMEEwMEVENjE0RCAvKiBRdWlja0xvb2tUaHVtYm5haWxpbmdT
b2Z0TGluay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFRTU3MjUyNDA5RjE0MjAwMjAwNUQ2IC8q
IFF1aWNrTG9va1RodW1ibmFpbExvYWRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTNCNjMxRjMy
N0FCQUQ4MDAwNDQzQTQ0IC8qIFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllci5oIGluIEhl
YWRlcnMgKi8sCisJCQkJOTNCNjMxRjEyN0FCQUNBOTAwNDQzQTQ0IC8qIFF1b3RhTWFuYWdlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNUNCNkFFNDQyNjA5Nzk5QzAwQjZFRDVBIC8qIFJlYXNvblNQ
SS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdGRDMxODIyMkIzNTE1RTAwOEQwRThCIC8qIFJlZGly
ZWN0U09BdXRob3JpemF0aW9uU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUIxMjI5RDIy
M0ZGMkJDQzAwOENBNzUxIC8qIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyLmggaW4g
SGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9EYXRhYmFz
ZXMvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIu
Y3BwCmluZGV4IDA0YzI0MTBmMzVhZGNjMDQ2YzU0MDZhZjBjY2UyZmQwZTg0MWFkYjAuLmQ3OTAx
NjliZTBmNThlMzAxZWRiZTQ0YzA0NGM3ODM5MWVmNDc0NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub1Nl
cnZlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVk
REIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcApAQCAtMjksOSArMjksOSBAQAogI2luY2x1
ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCisj
aW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJD
b3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJJREJSZXN1bHQuaCIKLSNpbmNsdWRl
ICJXZWJJREJTZXJ2ZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
SURCQ3Vyc29ySW5mby5oPgpAQCAtODIsMTMyICs4MiwxMzIgQEAgSURCQ2xpZW50OjpJREJDb25u
ZWN0aW9uVG9TZXJ2ZXImIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Y29yZUNvbm5lY3Rpb25U
b1NlcnYKIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRlbGV0ZURhdGFiYXNlKGNv
bnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJJREJTZXJ2ZXI6OkRlbGV0ZURhdGFiYXNlKHJlcXVlc3REYXRhKSk7CisgICAgc2VuZChNZXNz
YWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpEZWxldGVEYXRhYmFzZShyZXF1ZXN0RGF0YSkp
OwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6b3BlbkRhdGFiYXNlKGNvbnN0
IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJ
REJTZXJ2ZXI6Ok9wZW5EYXRhYmFzZShyZXF1ZXN0RGF0YSkpOworICAgIHNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6T3BlbkRhdGFiYXNlKHJlcXVlc3REYXRhKSk7CiB9CiAK
IHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjphYm9ydFRyYW5zYWN0aW9uKGNvbnN0IElE
QlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKQogewotICAgIHNlbmQo
TWVzc2FnZXM6OldlYklEQlNlcnZlcjo6QWJvcnRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbklkZW50
aWZpZXIpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkFib3J0
VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZGVudGlmaWVyKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29u
bmVjdGlvblRvU2VydmVyOjpjb21taXRUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50
aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgcGVuZGluZ1JlcXVlc3RDb3Vu
dCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OkNvbW1pdFRyYW5zYWN0aW9u
KHRyYW5zYWN0aW9uSWRlbnRpZmllciwgcGVuZGluZ1JlcXVlc3RDb3VudCkpOworICAgIHNlbmQo
TWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Q29tbWl0VHJhbnNhY3Rpb24odHJhbnNh
Y3Rpb25JZGVudGlmaWVyLCBwZW5kaW5nUmVxdWVzdENvdW50KSk7CiB9CiAKIHZvaWQgV2ViSURC
Q29ubmVjdGlvblRvU2VydmVyOjpkaWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2VUcmFuc2Fj
dGlvbih1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJSZXNv
dXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcikKIHsKLSAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJJREJTZXJ2ZXI6OkRpZEZpbmlzaEhhbmRsaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0
aW9uKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHRyYW5zYWN0aW9uSWRlbnRpZmllcikp
OworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6RGlkRmluaXNoSGFu
ZGxpbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24oZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmll
ciwgdHJhbnNhY3Rpb25JZGVudGlmaWVyKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRv
U2VydmVyOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERh
dGEsIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYgaW5mbykKIHsKLSAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJJREJTZXJ2ZXI6OkNyZWF0ZU9iamVjdFN0b3JlKHJlcXVlc3REYXRhLCBpbmZvKSk7Cisg
ICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpDcmVhdGVPYmplY3RTdG9y
ZShyZXF1ZXN0RGF0YSwgaW5mbykpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZl
cjo6ZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBj
b25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJ
REJTZXJ2ZXI6OkRlbGV0ZU9iamVjdFN0b3JlKHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZU5hbWUp
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkRlbGV0ZU9iamVj
dFN0b3JlKHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZU5hbWUpKTsKIH0KIAogdm9pZCBXZWJJREJD
b25uZWN0aW9uVG9TZXJ2ZXI6OnJlbmFtZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRh
JiByZXF1ZXN0RGF0YSwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIG5ld05hbWUpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyOjpSZW5hbWVP
YmplY3RTdG9yZShyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBuZXdOYW1lKSk7
CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpSZW5hbWVPYmplY3RT
dG9yZShyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBuZXdOYW1lKSk7CiB9CiAK
IHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpjbGVhck9iamVjdFN0b3JlKGNvbnN0IElE
QlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVy
KQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6Q2xlYXJPYmplY3RTdG9yZShy
ZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyKSk7CisgICAgc2VuZChNZXNzYWdlczo6
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpDbGVhck9iamVjdFN0b3JlKHJlcXVlc3REYXRhLCBvYmpl
Y3RTdG9yZUlkZW50aWZpZXIpKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6
OmNyZWF0ZUluZGV4KGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURC
SW5kZXhJbmZvJiBpbmZvKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6Q3Jl
YXRlSW5kZXgocmVxdWVzdERhdGEsIGluZm8pKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3Jr
U3RvcmFnZU1hbmFnZXI6OkNyZWF0ZUluZGV4KHJlcXVlc3REYXRhLCBpbmZvKSk7CiB9CiAKIHZv
aWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpkZWxldGVJbmRleChjb25zdCBJREJSZXF1ZXN0
RGF0YSYgcmVxdWVzdERhdGEsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBpbmRleE5hbWUpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyOjpE
ZWxldGVJbmRleChyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleE5hbWUp
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkRlbGV0ZUluZGV4
KHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4TmFtZSkpOwogfQogCiB2
b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6cmVuYW1lSW5kZXgoY29uc3QgSURCUmVxdWVz
dERhdGEmIHJlcXVlc3REYXRhLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2
NF90IGluZGV4SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lKQogewotICAgIHNlbmQo
TWVzc2FnZXM6OldlYklEQlNlcnZlcjo6UmVuYW1lSW5kZXgocmVxdWVzdERhdGEsIG9iamVjdFN0
b3JlSWRlbnRpZmllciwgaW5kZXhJZGVudGlmaWVyLCBuZXdOYW1lKSk7CisgICAgc2VuZChNZXNz
YWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpSZW5hbWVJbmRleChyZXF1ZXN0RGF0YSwgb2Jq
ZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleElkZW50aWZpZXIsIG5ld05hbWUpKTsKIH0KIAogdm9p
ZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OnB1dE9yQWRkKGNvbnN0IElEQlJlcXVlc3REYXRh
JiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5RGF0YSYga2V5RGF0YSwgY29uc3QgSURCVmFsdWUm
IHZhbHVlLCBjb25zdCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSBtb2RlKQog
ewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6UHV0T3JBZGQocmVxdWVzdERhdGEs
IGtleURhdGEsIHZhbHVlLCBtb2RlKSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyOjpQdXRPckFkZChyZXF1ZXN0RGF0YSwga2V5RGF0YSwgdmFsdWUsIG1vZGUpKTsK
IH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmdldFJlY29yZChjb25zdCBJREJS
ZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkdldFJlY29yZERhdGEmIGdldFJlY29y
ZERhdGEpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyOjpHZXRSZWNvcmQocmVx
dWVzdERhdGEsIGdldFJlY29yZERhdGEpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6OkdldFJlY29yZChyZXF1ZXN0RGF0YSwgZ2V0UmVjb3JkRGF0YSkpOwogfQog
CiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Z2V0QWxsUmVjb3Jkcyhjb25zdCBJREJS
ZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkdldEFsbFJlY29yZHNEYXRhJiBnZXRB
bGxSZWNvcmRzRGF0YSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OkdldEFs
bFJlY29yZHMocmVxdWVzdERhdGEsIGdldEFsbFJlY29yZHNEYXRhKSk7CisgICAgc2VuZChNZXNz
YWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpHZXRBbGxSZWNvcmRzKHJlcXVlc3REYXRhLCBn
ZXRBbGxSZWNvcmRzRGF0YSkpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6
Z2V0Q291bnQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXlS
YW5nZURhdGEmIHJhbmdlKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6R2V0
Q291bnQocmVxdWVzdERhdGEsIHJhbmdlKSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0
b3JhZ2VNYW5hZ2VyOjpHZXRDb3VudChyZXF1ZXN0RGF0YSwgcmFuZ2UpKTsKIH0KIAogdm9pZCBX
ZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRlbGV0ZVJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0
YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQktleVJhbmdlRGF0YSYgcmFuZ2UpCiB7Ci0gICAgc2Vu
ZChNZXNzYWdlczo6V2ViSURCU2VydmVyOjpEZWxldGVSZWNvcmQocmVxdWVzdERhdGEsIHJhbmdl
KSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpEZWxldGVSZWNv
cmQocmVxdWVzdERhdGEsIHJhbmdlKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2Vy
dmVyOjpvcGVuQ3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3Qg
SURCQ3Vyc29ySW5mbyYgaW5mbykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6
Ok9wZW5DdXJzb3IocmVxdWVzdERhdGEsIGluZm8pKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrU3RvcmFnZU1hbmFnZXI6Ok9wZW5DdXJzb3IocmVxdWVzdERhdGEsIGluZm8pKTsKIH0KIAog
dm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6Oml0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVx
dWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJJdGVyYXRlQ3Vyc29yRGF0YSYgZGF0YSkK
IHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6Okl0ZXJhdGVDdXJzb3IocmVxdWVz
dERhdGEsIGRhdGEpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6
Okl0ZXJhdGVDdXJzb3IocmVxdWVzdERhdGEsIGRhdGEpKTsKIH0KIAogdm9pZCBXZWJJREJDb25u
ZWN0aW9uVG9TZXJ2ZXI6OmVzdGFibGlzaFRyYW5zYWN0aW9uKHVpbnQ2NF90IGRhdGFiYXNlQ29u
bmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYgaW5mbykKIHsKLSAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OkVzdGFibGlzaFRyYW5zYWN0aW9uKGRhdGFi
YXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGluZm8pKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrU3RvcmFnZU1hbmFnZXI6OkVzdGFibGlzaFRyYW5zYWN0aW9uKGRhdGFiYXNlQ29ubmVjdGlv
bklkZW50aWZpZXIsIGluZm8pKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6
OmRhdGFiYXNlQ29ubmVjdGlvblBlbmRpbmdDbG9zZSh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rp
b25JZGVudGlmaWVyKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlcjo6RGF0YWJh
c2VDb25uZWN0aW9uUGVuZGluZ0Nsb3NlKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkRhdGFiYXNlQ29ubmVj
dGlvblBlbmRpbmdDbG9zZShkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKSk7CiB9CiAKIHZv
aWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpkYXRhYmFzZUNvbm5lY3Rpb25DbG9zZWQodWlu
dDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcikKIHsKLSAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJJREJTZXJ2ZXI6OkRhdGFiYXNlQ29ubmVjdGlvbkNsb3NlZChkYXRhYmFzZUNvbm5lY3Rp
b25JZGVudGlmaWVyKSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2Vy
OjpEYXRhYmFzZUNvbm5lY3Rpb25DbG9zZWQoZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcikp
OwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6YWJvcnRPcGVuQW5kVXBncmFk
ZU5lZWRlZCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJS
ZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcikKIHsKLSAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJJREJTZXJ2ZXI6OkFib3J0T3BlbkFuZFVwZ3JhZGVOZWVkZWQoZGF0YWJhc2VD
b25uZWN0aW9uSWRlbnRpZmllciwgdHJhbnNhY3Rpb25JZGVudGlmaWVyKSk7CisgICAgc2VuZChN
ZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpBYm9ydE9wZW5BbmRVcGdyYWRlTmVlZGVk
KGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHRyYW5zYWN0aW9uSWRlbnRpZmllcikpOwog
fQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGlkRmlyZVZlcnNpb25DaGFuZ2VF
dmVudCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJSZXNv
dXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBJbmRleGVkREI6OkNvbm5l
Y3Rpb25DbG9zZWRPbkJlaGFsZk9mU2VydmVyIGNvbm5lY3Rpb25DbG9zZWQpCiB7Ci0gICAgc2Vu
ZChNZXNzYWdlczo6V2ViSURCU2VydmVyOjpEaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KGRhdGFi
YXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHJlcXVlc3RJZGVudGlmaWVyLCBjb25uZWN0aW9uQ2xv
c2VkKSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpEaWRGaXJl
VmVyc2lvbkNoYW5nZUV2ZW50KGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHJlcXVlc3RJ
ZGVudGlmaWVyLCBjb25uZWN0aW9uQ2xvc2VkKSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlv
blRvU2VydmVyOjpvcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKGNvbnN0IElEQlJlcXVlc3REYXRhJiBy
ZXF1ZXN0RGF0YSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6Ok9wZW5EQlJl
cXVlc3RDYW5jZWxsZWQocmVxdWVzdERhdGEpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3Jr
U3RvcmFnZU1hbmFnZXI6Ok9wZW5EQlJlcXVlc3RDYW5jZWxsZWQocmVxdWVzdERhdGEpKTsKIH0K
IAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmdldEFsbERhdGFiYXNlTmFtZXNBbmRW
ZXJzaW9ucyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBj
b25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJT
ZXJ2ZXI6OkdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhyZXF1ZXN0SWRlbnRpZmllciwg
b3JpZ2luKSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpHZXRB
bGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMocmVxdWVzdElkZW50aWZpZXIsIG9yaWdpbikpOwog
fQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGlkRGVsZXRlRGF0YWJhc2UoY29u
c3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9TdG9yYWdlL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0
b3JhZ2UvSW5Qcm9jZXNzSURCU2VydmVyLmNwcAppbmRleCBlYTJlMmE3OGY4OGZmZGQxMDFhM2Ex
MzdmMGQ1YTEwYTU2ZTEwZmIyLi4wY2FkYjUwNDJiYTE2MTA3N2Y5NDQ5YTk3M2RjZjk4MzJkMzcw
MmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvSW5Qcm9jZXNzSURC
U2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvSW5Qcm9jZXNzSURC
U2VydmVyLmNwcApAQCAtNDIsNiArNDIsOCBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAorc3RhdGljIGNvbnN0ZXhwciB1aW50NjRfdCBkZWZhdWx0UGVyT3JpZ2luUXVvdGEgPSAgMTAw
MCAqIE1COworCiBSZWY8SW5Qcm9jZXNzSURCU2VydmVyPiBJblByb2Nlc3NJREJTZXJ2ZXI6OmNy
ZWF0ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7CiAgICAgQVNTRVJUKHNlc3Npb25JRC5p
c0VwaGVtZXJhbCgpKTsKQEAgLTczLDcgKzc1LDcgQEAgSW5Qcm9jZXNzSURCU2VydmVyOjp+SW5Q
cm9jZXNzSURCU2VydmVyKCkKIFN0b3JhZ2VRdW90YU1hbmFnZXIqIEluUHJvY2Vzc0lEQlNlcnZl
cjo6cXVvdGFNYW5hZ2VyKGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2luKQogewogICAgIHJldHVy
biBtX3F1b3RhTWFuYWdlcnMuZW5zdXJlKG9yaWdpbiwgW10gewotICAgICAgICByZXR1cm4gU3Rv
cmFnZVF1b3RhTWFuYWdlcjo6Y3JlYXRlKFN0b3JhZ2VRdW90YU1hbmFnZXI6OmRlZmF1bHRRdW90
YSgpLCBbXSB7CisgICAgICAgIHJldHVybiBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpjcmVhdGUoZGVm
YXVsdFBlck9yaWdpblF1b3RhLCBbXSB7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAg
fSwgW10odWludDY0X3QgcXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRTcGFjZSwgdWludDY0X3Qgc3Bh
Y2VJbmNyZWFzZSwgYXV0byBjYWxsYmFjaykgewogICAgICAgICAgICAgY2FsbGJhY2socXVvdGEg
KyBjdXJyZW50U3BhY2UgKyBzcGFjZUluY3JlYXNlKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBkNTNhYWFiN2Q2ZmViM2M2ZTQ1NjU5NGQ2MDgy
Y2YzOTViNDhiMWJlLi4zOWFlZmE3Mjg5NzExZmZlZjcyOWUxMWU5ZTY1OTZhMThmMGFkNzNlIDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTkgQEAKKzIwMjItMDItMDkgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisK
KyAgICAgICAgTWFuYWdlIEluZGV4ZWREQiBzdG9yYWdlIGJ5IG9yaWdpbgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0OTI1CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS84NzU1NTAxND4KKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4K
KworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCRmls
ZU5hbWUubW06CisgICAgICAgIChydW5UZXN0KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0luZGV4ZWREQlBlcnNpc3RlbmNlLm1tOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCU3VzcGVuZEltbWluZW50bHkubW06
CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1N0b3JlQmxvYlRoZW5EZWxldGUubW06CisgICAgICAgIChURVNUKToKKwogMjAyMi0wMi0w
OSAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW0Zs
YXRwYWsgU0RLXSBBZGQgYSB3cmFwcGVyIGZvciBjbGFuZ2QKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCRmlsZU5hbWUubW0gYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQkZpbGVOYW1lLm1tCmlu
ZGV4IGE2YjAxMjliYzEwNTljNGY5YzExOGQxZmQ3ZWZkMjEyM2VhYzJjN2EuLjQxMDIyMjRlNDUy
NzRkMzYzNzllNGJiMDAyYTBmZWU4OTgzMmY1YmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCRmlsZU5hbWUubW0KKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJGaWxlTmFtZS5tbQpAQCAt
NzEsMjAgKzcxLDIzIEBAIHN0YXRpYyB2b2lkIHJ1blRlc3QoKQogICAgIFJldGFpblB0cjxOU1N0
cmluZz4gc3RyaW5nMiA9IChOU1N0cmluZyAqKVtsYXN0U2NyaXB0TWVzc2FnZSBib2R5XTsKICAg
ICBFWFBFQ1RfV0tfU1RSRVEoQCJTdWNjZXNzIiwgc3RyaW5nMi5nZXQoKSk7CiAKLSAgICAvLyBG
b3IgZGF0YWJhc2UgdGhhdCBpcyBub3Qgb3BlbmVkIGFmdGVyIHVwZ3JhZGUsIGl0cyBmaWxlIHNo
b3VsZCBiZSBpbiB2MC4KKyAgICAvLyBBbGwgZGF0YWJhc2VzIG9mIGFuIG9yaWdpbiBhcmUgbWln
cmF0ZWQgdG8gbmV3IHZlcnNpb24gZGlyZWN0b3J5IHdoZW4gdGhlIG9yaWdpbiBpcyBhY2Nlc3Nl
ZC4KICAgICBhdXRvIGRlZmF1bHRGaWxlTWFuYWdlciA9IFtOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRN
YW5hZ2VyXTsKICAgICBOU1N0cmluZyAqZXhpc3RpbmdEYXRhYmFzZU5hbWUgPSBAIkluZGV4ZWRE
QlRlc3QiOwogICAgIE5TU3RyaW5nICpjcmVhdGVkRGF0YWJhc2VOYW1lID0gQCJJbmRleGVkREJP
dGhlciI7CiAgICAgTlNTdHJpbmcgKnVudXNlZERhdGFiYXNlTmFtZSA9IEAiSW5kZXhlZERCVW51
c2VkIjsKICAgICBOU1N0cmluZyAqZXhpc3RpbmdEYXRiYXNlSGFzaCA9IFdlYkNvcmU6OlNRTGl0
ZUZpbGVTeXN0ZW06OmNvbXB1dGVIYXNoRm9yRmlsZU5hbWUoZXhpc3RpbmdEYXRhYmFzZU5hbWUp
OwogICAgIE5TU3RyaW5nICpjcmVhdGVkRGF0YWJhc2VIYXNoID0gV2ViQ29yZTo6U1FMaXRlRmls
ZVN5c3RlbTo6Y29tcHV0ZUhhc2hGb3JGaWxlTmFtZShjcmVhdGVkRGF0YWJhc2VOYW1lKTsKKyAg
ICBOU1N0cmluZyAqdW51c2VkRGF0YWJhc2VIYXNoID0gV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3Rl
bTo6Y29tcHV0ZUhhc2hGb3JGaWxlTmFtZShjcmVhdGVkRGF0YWJhc2VOYW1lKTsKICAgICBOU1VS
TCAqaWRiUm9vdFVSTCA9IFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdIF9p
bmRleGVkREJEYXRhYmFzZURpcmVjdG9yeV07CiAgICAgTlNVUkwgKm9sZFZlcnNpb25EaXJlY3Rv
cnlVUkwgPSBbaWRiUm9vdFVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJ2MCJdOwog
ICAgIE5TVVJMICpuZXdWZXJzaW9uRGlyZWN0b3J5VVJMID0gW2lkYlJvb3RVUkwgVVJMQnlBcHBl
bmRpbmdQYXRoQ29tcG9uZW50OkAidjEiXTsKICAgICBOU1VSTCAqb2xkVmVyc2lvbk9yaWdpbkRp
cmVjdG9yeVVSTCA9IFtvbGRWZXJzaW9uRGlyZWN0b3J5VVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENv
bXBvbmVudDogQCJmaWxlX18wIl07CiAgICAgTlNVUkwgKm5ld1ZlcnNpb25PcmlnaW5EaXJlY3Rv
cnlVUkwgPSBbbmV3VmVyc2lvbkRpcmVjdG9yeVVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25l
bnQ6IEAiZmlsZV9fMCJdOwogICAgIE5TVVJMICpvbGRWZXJzaW9uVW51c2VkRGF0YWJhc2VEaXJl
Y3RvcnlVUkwgPSBbb2xkVmVyc2lvbk9yaWdpbkRpcmVjdG9yeVVSTCBVUkxCeUFwcGVuZGluZ1Bh
dGhDb21wb25lbnQ6dW51c2VkRGF0YWJhc2VOYW1lXTsKLSAgICBFWFBFQ1RfVFJVRShbW05TRmls
ZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6b2xkVmVyc2lvblVudXNl
ZERhdGFiYXNlRGlyZWN0b3J5VVJMLnBhdGhdKTsKKyAgICBOU1VSTCAqbmV3VmVyc2lvblVudXNl
ZERhdGFiYXNlRGlyZWN0b3J5VVJMID0gW25ld1ZlcnNpb25PcmlnaW5EaXJlY3RvcnlVUkwgVVJM
QnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OnVudXNlZERhdGFiYXNlSGFzaF07CisgICAgRVhQRUNU
X0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpv
bGRWZXJzaW9uVW51c2VkRGF0YWJhc2VEaXJlY3RvcnlVUkwucGF0aF0pOworICAgIEVYUEVDVF9U
UlVFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpuZXdW
ZXJzaW9uVW51c2VkRGF0YWJhc2VEaXJlY3RvcnlVUkwucGF0aF0pOwogICAgIAogICAgIC8vIEZv
ciBkYXRhYmFzZSB0aGF0IGlzIG9wZW5lZCBhZnRlciB1cGdyYWRlLCBpdHMgZmlsZSBzaG91bGQg
b25seSBiZSBpbiB2MS4KICAgICBOU1VSTCAqb2xkVmVyc2lvbkV4aXN0aW5nRGF0YWJhc2VEaXJl
Y3RvcnlVUkwgPSBbb2xkVmVyc2lvbk9yaWdpbkRpcmVjdG9yeVVSTCBVUkxCeUFwcGVuZGluZ1Bh
dGhDb21wb25lbnQ6IGV4aXN0aW5nRGF0YWJhc2VOYW1lXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCUGVyc2lzdGVuY2UubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlBlcnNpc3RlbmNl
Lm1tCmluZGV4IDI3MThjNGFiMzY5YTgxODJkYTBlMTE4YzQ1MTY2NmFlOWQxZTJjNzQuLjRmMGE4
ZWM5NDQ1NDhjYTZjNzg3MDE1YzZiNmQ5NTA4NTg4Mzg4YjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCUGVyc2lzdGVuY2UubW0KKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJQZXJzaXN0
ZW5jZS5tbQpAQCAtMzA1LDEwICszMDUsMTQgQEAgVEVTVChJbmRleGVkREIsIEluZGV4ZWREQlRo
aXJkUGFydHlEYXRhUmVtb3ZhbCkKICAgICBFWFBFQ1RfV0tfU1RSRVEoIEAiZGF0YWJhc2UgaXMg
Y3JlYXRlZCAtIHB1dCBpdGVtIHN1Y2Nlc3MiLCAoTlNTdHJpbmcgKilbbGFzdFNjcmlwdE1lc3Nh
Z2UgYm9keV0pOwogCiAgICAgcmVhZHlUb0NvbnRpbnVlID0gZmFsc2U7Ci0gICAgW1tXS1dlYnNp
dGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gZmV0Y2hEYXRhUmVjb3Jkc09mVHlwZXM6d2Vi
c2l0ZURhdGFUeXBlcy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8V0tXZWJzaXRl
RGF0YVJlY29yZCAqPiAqZGF0YVJlY29yZHMpIHsKLSAgICAgICAgRVhQRUNUX0VRKDF1LCBkYXRh
UmVjb3Jkcy5jb3VudCk7Ci0gICAgICAgIEVYUEVDVF9XS19TVFJFUSgiaWZyYW1lIiwgW1tkYXRh
UmVjb3JkcyBmaXJzdE9iamVjdF0gZGlzcGxheU5hbWVdKTsKLSAgICAgICAgW1tXS1dlYnNpdGVE
YXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gcmVtb3ZlRGF0YU9mVHlwZXM6d2Vic2l0ZURhdGFU
eXBlcy5nZXQoKSBmb3JEYXRhUmVjb3JkczpkYXRhUmVjb3JkcyBjb21wbGV0aW9uSGFuZGxlcjpe
KCkgeworICAgIFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdIGZldGNoRGF0
YVJlY29yZHNPZlR5cGVzOndlYnNpdGVEYXRhVHlwZXMuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6
XihOU0FycmF5PFdLV2Vic2l0ZURhdGFSZWNvcmQgKj4gKnJlY29yZHMpIHsKKyAgICAgICAgRVhQ
RUNUX0VRKDJ1LCByZWNvcmRzLmNvdW50KTsKKyAgICAgICAgTlNTb3J0RGVzY3JpcHRvciAqcmVj
b3JkRGVzY3JpcHRvciA9IFtOU1NvcnREZXNjcmlwdG9yIHNvcnREZXNjcmlwdG9yV2l0aEtleTpA
ImRpc3BsYXlOYW1lIiBhc2NlbmRpbmc6WUVTXTsKKyAgICAgICAgTlNBcnJheSAqc29ydERlc2Ny
aXB0b3JzID0gQFtyZWNvcmREZXNjcmlwdG9yXTsKKyAgICAgICAgTlNBcnJheSAqc29ydGVkUmVj
b3JkcyA9IFtyZWNvcmRzIHNvcnRlZEFycmF5VXNpbmdEZXNjcmlwdG9yczpzb3J0RGVzY3JpcHRv
cnNdOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoImlmcmFtZSIsIFtbc29ydGVkUmVjb3JkcyBv
YmplY3RBdEluZGV4OjBdIGRpc3BsYXlOYW1lXSk7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUSgi
d2Via2l0Lm9yZyIsIFtbc29ydGVkUmVjb3JkcyBvYmplY3RBdEluZGV4OjFdIGRpc3BsYXlOYW1l
XSk7CisgICAgICAgIFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdIHJlbW92
ZURhdGFPZlR5cGVzOndlYnNpdGVEYXRhVHlwZXMuZ2V0KCkgZm9yRGF0YVJlY29yZHM6cmVjb3Jk
cyBjb21wbGV0aW9uSGFuZGxlcjpeKCkgewogICAgICAgICAgICAgcmVhZHlUb0NvbnRpbnVlID0g
dHJ1ZTsKICAgICAgICAgfV07CiAgICAgfV07CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlN1c3BlbmRJbW1pbmVudGx5Lm1tIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJTdXNwZW5kSW1taW5l
bnRseS5tbQppbmRleCBkYzYzNDNlM2VkZGZlNDhkYmZlZWU0Zjc5OTkyZmZjYjVmNjBlMTZiLi5i
ZjkwZjU3Y2UwOTc1ZTk0ZTYzNzA0N2E1ZDBlOWRmZDE4ZmJkNjI0IDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlN1c3BlbmRJbW1pbmVu
dGx5Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhl
ZERCU3VzcGVuZEltbWluZW50bHkubW0KQEAgLTczLDYgKzczLDEyIEBAIHN0YXRpYyB2b2lkIGtl
ZXBOZXR3b3JrUHJvY2Vzc0FjdGl2ZSgpCiAKIFRFU1QoSW5kZXhlZERCLCBJbmRleGVkREJTdXNw
ZW5kSW1taW5lbnRseSkKIHsKKyAgICByZWFkeVRvQ29udGludWUgPSBmYWxzZTsKKyAgICBbW1dL
V2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSByZW1vdmVEYXRhT2ZUeXBlczpbV0tX
ZWJzaXRlRGF0YVN0b3JlIGFsbFdlYnNpdGVEYXRhVHlwZXNdIG1vZGlmaWVkU2luY2U6W05TRGF0
ZSBkaXN0YW50UGFzdF0gY29tcGxldGlvbkhhbmRsZXI6XigpIHsKKyAgICAgICAgcmVhZHlUb0Nv
bnRpbnVlID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJl
YWR5VG9Db250aW51ZSk7CisKICAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtbSW5kZXhlZERC
U3VzcGVuZEltbWluZW50bHlNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOwogICAgIGF1dG8g
Y29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBp
bml0XSk7CiAgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2Ny
aXB0TWVzc2FnZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBuYW1lOkAidGVzdEhhbmRsZXIiXTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU3RvcmVCbG9i
VGhlbkRlbGV0ZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU3Rv
cmVCbG9iVGhlbkRlbGV0ZS5tbQppbmRleCBhYWJmZmY4N2JjNjRiMzk1MmIyNDE0NTIxNWVlMDM4
Mjg2YjdjODkxLi44ZTg1YTQwYTVlODNiYTAzNDMyMWU3ZTc5NjlkODM1NWUzMmMyNDY1IDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1N0b3JlQmxvYlRo
ZW5EZWxldGUubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9T
dG9yZUJsb2JUaGVuRGVsZXRlLm1tCkBAIC04Nyw3ICs4Nyw3IEBAIFRFU1QoSW5kZXhlZERCLCBT
dG9yZUJsb2JUaGVuUmVtb3ZlRGF0YSkKICAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFn
ZXJdIGNvcHlJdGVtQXRQYXRoOmRhdGFiYXNlRmlsZVBhdGggdG9QYXRoOmZha2VTaG1QYXRoIGVy
cm9yOm5pbF07CiAgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjb3B5SXRlbUF0
UGF0aDpkYXRhYmFzZUZpbGVQYXRoIHRvUGF0aDpmYWtlV2FsUGF0aCBlcnJvcjpuaWxdOwogCi0g
ICAgLy8gTWFrZSBzb21lIG90aGVyIC5ibG9iIGZpbGVzIGluIHRoZSBkYXRhYmFzZSBkaXJlY3Rv
cnkgdG8gbGF0ZXIgdmFsaWRhdGUgdGhhdCBvbmx5IGFwcHJvcHJpYXRlIGZpbGVzIGFyZSBkZWxl
dGVkLgorICAgIC8vIE1ha2Ugc29tZSBvdGhlciAuYmxvYiBmaWxlcyBpbiB0aGUgZGF0YWJhc2Ug
ZGlyZWN0b3J5IHRvIGxhdGVyIHZhbGlkYXRlIGFsbCBibG9iIGZpbGVzIGluIHRoZSBkaXJlY3Rv
cnkgYXJlIGRlbGV0ZWQuCiAgICAgTlNTdHJpbmcgKm90aGVyQmxvYjEgPSBbZGF0YWJhc2VEaXJl
Y3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiNzE4Mi5ibG9iIl07CiAgICAg
TlNTdHJpbmcgKm90aGVyQmxvYjIgPSBbZGF0YWJhc2VEaXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRp
bmdQYXRoQ29tcG9uZW50OkAiMWEuYmxvYiJdOwogICAgIE5TU3RyaW5nICpvdGhlckJsb2IzID0g
W2RhdGFiYXNlRGlyZWN0b3J5IHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAImExLmJs
b2IiXTsKQEAgLTEwMiwxMyArMTAyLDEyIEBAIFRFU1QoSW5kZXhlZERCLCBTdG9yZUJsb2JUaGVu
UmVtb3ZlRGF0YSkKICAgICAgICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0
TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpibG9iRmlsZVBhdGhdKTsKICAgICAgICAgRVhQRUNU
X0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpk
YXRhYmFzZUZpbGVQYXRoXSk7CiAKLSAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBmYWtlIGJsb2Ig
ZmlsZSB3aXRoIGEgdmFsaWQgYmxvYiBmaWxlIG5hbWUgaXMgZ29uZS4KKyAgICAgICAgLy8gTWFr
ZSBzdXJlIGFsbCBmYWtlIGJsb2IgZmlsZSBhcmUgZ29uZS4KICAgICAgICAgRVhQRUNUX0ZBTFNF
KFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpvdGhlckJs
b2IxXSk7CiAKLSAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBmYWtlIGJsb2IgZmlsZXMgd2l0aCBp
bnZhbGlkIGJsb2IgZmlsZSBuYW1lcyBhcmUgc3RpbGwgdGhlcmUuCi0gICAgICAgIEVYUEVDVF9U
UlVFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpvdGhl
ckJsb2IyXSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFu
YWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpvdGhlckJsb2IzXSk7Ci0gICAgICAgIEVYUEVDVF9UUlVF
KFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpvdGhlckJs
b2I0XSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFn
ZXJdIGZpbGVFeGlzdHNBdFBhdGg6b3RoZXJCbG9iMl0pOworICAgICAgICBFWFBFQ1RfRkFMU0Uo
W1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOm90aGVyQmxv
YjNdKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdl
cl0gZmlsZUV4aXN0c0F0UGF0aDpvdGhlckJsb2I0XSk7CiAKICAgICAgICAgLy8gTWFrZSBzdXJl
IGV2ZXJ5dGhpbmcgcmVsYXRlZCB0byB0aGUgZmFrZSBkYXRhYmFzZSBpcyBnb25lLgogICAgICAg
ICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3Rz
QXRQYXRoOmZha2VTaG1QYXRoXSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>