<?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>200373</bug_id>
          
          <creation_ts>2019-08-01 18:54:40 -0700</creation_ts>
          <short_desc>Some improvements on web storage</short_desc>
          <delta_ts>2020-01-31 15:12:23 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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=206418</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=143339</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>200817</dependson>
    
    <dependson>207073</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sihui Liu">sihui_liu</reporter>
          <assigned_to name="Sihui Liu">sihui_liu</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>sam</cc>
    
    <cc>sihui_liu</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1557825</commentid>
    <comment_count>0</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2019-08-01 18:54:40 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557838</commentid>
    <comment_count>1</comment_count>
      <attachid>375381</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2019-08-01 19:32:42 -0700</bug_when>
    <thetext>Created attachment 375381
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557860</commentid>
    <comment_count>2</comment_count>
      <attachid>375381</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-08-01 20:43:59 -0700</bug_when>
    <thetext>Comment on attachment 375381
Patch

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

&gt; Source/WebKit/ChangeLog:7
&gt; +

Please write a ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558057</commentid>
    <comment_count>3</comment_count>
      <attachid>375381</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-08-02 12:48:30 -0700</bug_when>
    <thetext>Comment on attachment 375381
Patch

Needs ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558076</commentid>
    <comment_count>4</comment_count>
      <attachid>375446</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2019-08-02 13:20:02 -0700</bug_when>
    <thetext>Created attachment 375446
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558095</commentid>
    <comment_count>5</comment_count>
      <attachid>375449</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2019-08-02 13:39:57 -0700</bug_when>
    <thetext>Created attachment 375449
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558218</commentid>
    <comment_count>6</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2019-08-02 17:15:07 -0700</bug_when>
    <thetext>Under what conditions will (SessionID, SecurityOrigin) be the same, but (StorageNamespace) be different?

I’m trying to understand the feature that StorageNamespace provides. I can’t recall a web api that would distinguish a StorageNamespace.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558235</commentid>
    <comment_count>7</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2019-08-02 19:07:28 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #6)
&gt; Under what conditions will (SessionID, SecurityOrigin) be the same, but
&gt; (StorageNamespace) be different?
&gt; 
&gt; I’m trying to understand the feature that StorageNamespace provides. I can’t
&gt; recall a web api that would distinguish a StorageNamespace.

sessionStorage from different web pages on the same session. sessionStorage is isolated per tab by spec: https://www.w3.org/TR/webstorage/#the-sessionstorage-attribute.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558237</commentid>
    <comment_count>8</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2019-08-02 19:13:58 -0700</bug_when>
    <thetext>(In reply to Sihui Liu from comment #7)
&gt; (In reply to Geoffrey Garen from comment #6)
&gt; &gt; Under what conditions will (SessionID, SecurityOrigin) be the same, but
&gt; &gt; (StorageNamespace) be different?
&gt; &gt; 
&gt; &gt; I’m trying to understand the feature that StorageNamespace provides. I can’t
&gt; &gt; recall a web api that would distinguish a StorageNamespace.
&gt; 
&gt; sessionStorage from different web pages on the same session. sessionStorage
&gt; is isolated per tab by spec:
&gt; https://www.w3.org/TR/webstorage/#the-sessionstorage-attribute.

The StorageNameSpace was our implementation choice to separate storage between different tabs and different web page groups(this does not matter now). 

For SessionStorageNamespace, the ID equals to WebPageID. For LocalStorageNamespace, the ID is WebPageGroupID.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558566</commentid>
    <comment_count>9</comment_count>
      <attachid>375561</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2019-08-05 14:48:11 -0700</bug_when>
    <thetext>Created attachment 375561
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559337</commentid>
    <comment_count>10</comment_count>
      <attachid>375756</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2019-08-07 14:53:47 -0700</bug_when>
    <thetext>Created attachment 375756
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560073</commentid>
    <comment_count>11</comment_count>
      <attachid>375756</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2019-08-09 15:20:27 -0700</bug_when>
    <thetext>Comment on attachment 375756
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1561355</commentid>
    <comment_count>12</comment_count>
      <attachid>376320</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2019-08-14 15:15:20 -0700</bug_when>
    <thetext>Created attachment 376320
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1561375</commentid>
    <comment_count>13</comment_count>
      <attachid>376320</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-14 16:11:38 -0700</bug_when>
    <thetext>Comment on attachment 376320
Patch for landing

Rejecting attachment 376320 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-03&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 376320, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 5000 characters of output:
orageDatabase.cpp
patching file Source/WebKit/NetworkProcess/WebStorage/LocalStorageDatabase.h
patching file Source/WebKit/NetworkProcess/WebStorage/LocalStorageDatabaseTracker.cpp
patching file Source/WebKit/NetworkProcess/WebStorage/LocalStorageDatabaseTracker.h
patching file Source/WebKit/NetworkProcess/WebStorage/LocalStorageNamespace.cpp
patching file Source/WebKit/NetworkProcess/WebStorage/LocalStorageNamespace.h
patching file Source/WebKit/NetworkProcess/WebStorage/SessionStorageNamespace.cpp
patching file Source/WebKit/NetworkProcess/WebStorage/SessionStorageNamespace.h
patching file Source/WebKit/NetworkProcess/WebStorage/StorageArea.cpp
patching file Source/WebKit/NetworkProcess/WebStorage/StorageArea.h
patching file Source/WebKit/NetworkProcess/WebStorage/StorageManager.cpp
patching file Source/WebKit/NetworkProcess/WebStorage/StorageManager.h
patching file Source/WebKit/NetworkProcess/WebStorage/StorageManager.messages.in
rm &apos;Source/WebKit/NetworkProcess/WebStorage/StorageManager.messages.in&apos;
patching file Source/WebKit/NetworkProcess/WebStorage/StorageManagerSet.cpp
patching file Source/WebKit/NetworkProcess/WebStorage/StorageManagerSet.h
patching file Source/WebKit/NetworkProcess/WebStorage/StorageManagerSet.messages.in
patching file Source/WebKit/Shared/WebsiteDataStoreParameters.cpp
patching file Source/WebKit/Shared/WebsiteDataStoreParameters.h
patching file Source/WebKit/Sources.txt
patching file Source/WebKit/UIProcess/API/C/WKContext.cpp
patching file Source/WebKit/UIProcess/API/C/WKContextPrivate.h
patching file Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.cpp
Hunk #1 succeeded at 531 (offset 11 lines).
patching file Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.h
Hunk #1 succeeded at 118 (offset 2 lines).
patching file Source/WebKit/UIProcess/WebProcessPool.cpp
Hunk #2 succeeded at 1802 (offset -2 lines).
patching file Source/WebKit/UIProcess/WebProcessPool.h
patching file Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm
Hunk #1 succeeded at 109 (offset 2 lines).
Hunk #2 succeeded at 138 (offset 3 lines).
Hunk #3 succeeded at 173 (offset 3 lines).
patching file Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp
Hunk #1 succeeded at 1969 (offset 12 lines).
patching file Source/WebKit/WebKit.xcodeproj/project.pbxproj
patching file Source/WebKit/WebProcess/InjectedBundle/InjectedBundle.cpp
patching file Source/WebKit/WebProcess/WebProcess.cpp
patching file Source/WebKit/WebProcess/WebProcess.h
patching file Source/WebKit/WebProcess/WebStorage/StorageAreaImpl.cpp
patching file Source/WebKit/WebProcess/WebStorage/StorageAreaImpl.h
patching file Source/WebKit/WebProcess/WebStorage/StorageAreaMap.cpp
patching file Source/WebKit/WebProcess/WebStorage/StorageAreaMap.h
patching file Source/WebKit/WebProcess/WebStorage/StorageAreaMap.messages.in
patching file Source/WebKit/WebProcess/WebStorage/StorageNamespaceImpl.cpp
patching file Source/WebKit/WebProcess/WebStorage/StorageNamespaceImpl.h
patching file Source/WebKit/WebProcess/WebStorage/WebStorageNamespaceProvider.cpp
patching file Source/WebKit/WebProcess/WebStorage/WebStorageNamespaceProvider.h
patching file Source/WebKitLegacy/Storage/StorageAreaImpl.cpp
patching file Source/WebKitLegacy/Storage/StorageAreaImpl.h
patching file Source/WebKitLegacy/Storage/StorageAreaSync.h
patching file Source/WebKitLegacy/Storage/StorageNamespaceImpl.cpp
patching file Source/WebKitLegacy/Storage/StorageNamespaceImpl.h
patching file Source/WebKitLegacy/Storage/WebStorageNamespaceProvider.cpp
patching file Source/WebKitLegacy/Storage/WebStorageNamespaceProvider.h
patching file Source/WebKitLegacy/mac/WebView/WebView.mm
patching file Tools/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file Tools/TestWebKitAPI/Tests/WebKitCocoa/LocalStoragePersistence.mm
patching file Tools/WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl
patching file Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp
patching file Tools/WebKitTestRunner/InjectedBundle/TestRunner.h
patching file Tools/WebKitTestRunner/TestController.cpp
patching file Tools/WebKitTestRunner/TestController.h
Hunk #1 succeeded at 262 (offset 1 line).
patching file Tools/WebKitTestRunner/TestInvocation.cpp
Hunk #1 succeeded at 1659 (offset 9 lines).
patching file LayoutTests/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file LayoutTests/platform/ios-simulator-wk2/TestExpectations
patching file LayoutTests/platform/mac-wk2/TestExpectations
Hunk #1 succeeded at 922 (offset 2 lines).
patching file LayoutTests/storage/domstorage/localstorage/private-browsing-affects-storage-expected.txt
patching file LayoutTests/storage/indexeddb/IDBObject-leak.html
patching file LayoutTests/storage/indexeddb/modern/opendatabase-after-storage-crash-expected.txt
patching file LayoutTests/storage/indexeddb/modern/opendatabase-after-storage-crash.html

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Full output: https://webkit-queues.webkit.org/results/12913883</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1561396</commentid>
    <comment_count>14</comment_count>
      <attachid>376336</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2019-08-14 17:12:09 -0700</bug_when>
    <thetext>Created attachment 376336
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1561420</commentid>
    <comment_count>15</comment_count>
      <attachid>376336</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-14 18:58:58 -0700</bug_when>
    <thetext>Comment on attachment 376336
Patch for landing

Rejecting attachment 376336 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-03&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 376336, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 5000 characters of output:
Process/WebStorage/LocalStorageDatabase.h
patching file Source/WebKit/NetworkProcess/WebStorage/LocalStorageDatabaseTracker.cpp
patching file Source/WebKit/NetworkProcess/WebStorage/LocalStorageDatabaseTracker.h
patching file Source/WebKit/NetworkProcess/WebStorage/LocalStorageNamespace.cpp
patching file Source/WebKit/NetworkProcess/WebStorage/LocalStorageNamespace.h
patching file Source/WebKit/NetworkProcess/WebStorage/SessionStorageNamespace.cpp
patching file Source/WebKit/NetworkProcess/WebStorage/SessionStorageNamespace.h
patching file Source/WebKit/NetworkProcess/WebStorage/StorageArea.cpp
patching file Source/WebKit/NetworkProcess/WebStorage/StorageArea.h
patching file Source/WebKit/NetworkProcess/WebStorage/StorageManager.cpp
patching file Source/WebKit/NetworkProcess/WebStorage/StorageManager.h
patching file Source/WebKit/NetworkProcess/WebStorage/StorageManager.messages.in
rm &apos;Source/WebKit/NetworkProcess/WebStorage/StorageManager.messages.in&apos;
patching file Source/WebKit/NetworkProcess/WebStorage/StorageManagerSet.cpp
patching file Source/WebKit/NetworkProcess/WebStorage/StorageManagerSet.h
patching file Source/WebKit/NetworkProcess/WebStorage/StorageManagerSet.messages.in
patching file Source/WebKit/Shared/WebsiteDataStoreParameters.cpp
patching file Source/WebKit/Shared/WebsiteDataStoreParameters.h
patching file Source/WebKit/Sources.txt
patching file Source/WebKit/UIProcess/API/C/WKContext.cpp
Hunk #1 succeeded at 669 (offset 5 lines).
patching file Source/WebKit/UIProcess/API/C/WKContextPrivate.h
Hunk #1 succeeded at 120 (offset 2 lines).
patching file Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.cpp
patching file Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.h
patching file Source/WebKit/UIProcess/WebProcessPool.cpp
Hunk #2 succeeded at 1809 with fuzz 1 (offset 7 lines).
patching file Source/WebKit/UIProcess/WebProcessPool.h
Hunk #1 succeeded at 317 with fuzz 2.
patching file Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm
patching file Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp
patching file Source/WebKit/WebKit.xcodeproj/project.pbxproj
patching file Source/WebKit/WebProcess/InjectedBundle/InjectedBundle.cpp
patching file Source/WebKit/WebProcess/WebProcess.cpp
patching file Source/WebKit/WebProcess/WebProcess.h
patching file Source/WebKit/WebProcess/WebStorage/StorageAreaImpl.cpp
patching file Source/WebKit/WebProcess/WebStorage/StorageAreaImpl.h
patching file Source/WebKit/WebProcess/WebStorage/StorageAreaMap.cpp
patching file Source/WebKit/WebProcess/WebStorage/StorageAreaMap.h
patching file Source/WebKit/WebProcess/WebStorage/StorageAreaMap.messages.in
patching file Source/WebKit/WebProcess/WebStorage/StorageNamespaceImpl.cpp
patching file Source/WebKit/WebProcess/WebStorage/StorageNamespaceImpl.h
patching file Source/WebKit/WebProcess/WebStorage/WebStorageNamespaceProvider.cpp
patching file Source/WebKit/WebProcess/WebStorage/WebStorageNamespaceProvider.h
patching file Source/WebKitLegacy/Storage/StorageAreaImpl.cpp
patching file Source/WebKitLegacy/Storage/StorageAreaImpl.h
patching file Source/WebKitLegacy/Storage/StorageAreaSync.h
patching file Source/WebKitLegacy/Storage/StorageNamespaceImpl.cpp
patching file Source/WebKitLegacy/Storage/StorageNamespaceImpl.h
patching file Source/WebKitLegacy/Storage/WebStorageNamespaceProvider.cpp
patching file Source/WebKitLegacy/Storage/WebStorageNamespaceProvider.h
patching file Source/WebKitLegacy/mac/WebView/WebView.mm
Hunk #1 succeeded at 2888 (offset -5 lines).
patching file Tools/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file Tools/TestWebKitAPI/Tests/WebKitCocoa/LocalStoragePersistence.mm
patching file Tools/WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl
patching file Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp
patching file Tools/WebKitTestRunner/InjectedBundle/TestRunner.h
patching file Tools/WebKitTestRunner/TestController.cpp
Hunk #1 FAILED at 939.
Hunk #2 succeeded at 3070 with fuzz 1 (offset 6 lines).
Hunk #3 succeeded at 3080 (offset 6 lines).
1 out of 3 hunks FAILED -- saving rejects to file Tools/WebKitTestRunner/TestController.cpp.rej
patching file Tools/WebKitTestRunner/TestController.h
patching file Tools/WebKitTestRunner/TestInvocation.cpp
Hunk #1 succeeded at 1666 (offset 7 lines).
patching file LayoutTests/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file LayoutTests/platform/ios-simulator-wk2/TestExpectations
patching file LayoutTests/platform/mac-wk2/TestExpectations
patching file LayoutTests/storage/domstorage/localstorage/private-browsing-affects-storage-expected.txt
patching file LayoutTests/storage/indexeddb/IDBObject-leak.html
patching file LayoutTests/storage/indexeddb/modern/opendatabase-after-storage-crash-expected.txt
patching file LayoutTests/storage/indexeddb/modern/opendatabase-after-storage-crash.html

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Full output: https://webkit-queues.webkit.org/results/12914618</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1561544</commentid>
    <comment_count>16</comment_count>
      <attachid>376379</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2019-08-15 07:55:01 -0700</bug_when>
    <thetext>Created attachment 376379
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1561567</commentid>
    <comment_count>17</comment_count>
      <attachid>376382</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2019-08-15 09:05:39 -0700</bug_when>
    <thetext>Created attachment 376382
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1561605</commentid>
    <comment_count>18</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-08-15 10:28:34 -0700</bug_when>
    <thetext>Attachment 376382 did not pass style-queue:


ERROR: Source/WebCore/storage/StorageNamespace.h:48:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebStorage/WebStorageNamespaceProvider.h:42:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/NetworkProcess/WebStorage/StorageManager.cpp:69:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit/NetworkProcess/WebStorage/StorageManager.cpp:262:  Missing space before {  [whitespace/braces] [5]
Total errors found: 4 in 77 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1561636</commentid>
    <comment_count>19</comment_count>
      <attachid>376395</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2019-08-15 11:03:30 -0700</bug_when>
    <thetext>Created attachment 376395
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1561651</commentid>
    <comment_count>20</comment_count>
      <attachid>376395</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-15 11:42:02 -0700</bug_when>
    <thetext>Comment on attachment 376395
Patch for landing

Clearing flags on attachment: 376395

Committed r248734: &lt;https://trac.webkit.org/changeset/248734&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1561652</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-15 11:42:04 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1561654</commentid>
    <comment_count>22</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-08-15 11:43:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/54355962&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1562052</commentid>
    <comment_count>23</comment_count>
      <attachid>376395</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-08-16 09:16:57 -0700</bug_when>
    <thetext>Comment on attachment 376395
Patch for landing

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

&gt; Source/WebKit/NetworkProcess/WebStorage/StorageManager.cpp:105
&gt; +    RunLoop::main().dispatch([origins = WTFMove(origins), completionHandler = WTFMove(completionHandler)]() mutable {

Please don&apos;t do this, this is exactly how we end up with thread-safety bug. A method that takes a completion handler MUST call its completion handler on the thread is was called on. Here getSessionStorageOrigins() gets called on a background queue (as asserted at the beginning of this method) and then it calls its completion handler on the main thread. This is super error prone.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1562053</commentid>
    <comment_count>24</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-08-16 09:22:05 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #23)
&gt; Comment on attachment 376395 [details]
&gt; Patch for landing
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=376395&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/WebStorage/StorageManager.cpp:105
&gt; &gt; +    RunLoop::main().dispatch([origins = WTFMove(origins), completionHandler = WTFMove(completionHandler)]() mutable {
&gt; 
&gt; Please don&apos;t do this, this is exactly how we end up with thread-safety bug.
&gt; A method that takes a completion handler MUST call its completion handler on
&gt; the thread is was called on. Here getSessionStorageOrigins() gets called on
&gt; a background queue (as asserted at the beginning of this method) and then it
&gt; calls its completion handler on the main thread. This is super error prone.

I will write a follow-up. No need to do anything.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1562059</commentid>
    <comment_count>25</comment_count>
      <attachid>376395</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-08-16 09:42:47 -0700</bug_when>
    <thetext>Comment on attachment 376395
Patch for landing

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

&gt;&gt;&gt; Source/WebKit/NetworkProcess/WebStorage/StorageManager.cpp:105
&gt;&gt;&gt; +    RunLoop::main().dispatch([origins = WTFMove(origins), completionHandler = WTFMove(completionHandler)]() mutable {
&gt;&gt; 
&gt;&gt; Please don&apos;t do this, this is exactly how we end up with thread-safety bug. A method that takes a completion handler MUST call its completion handler on the thread is was called on. Here getSessionStorageOrigins() gets called on a background queue (as asserted at the beginning of this method) and then it calls its completion handler on the main thread. This is super error prone.
&gt; 
&gt; I will write a follow-up. No need to do anything.

If those methods were taking proper CompletionHandler data types for their completion handler (instead of the generic Function type), you&apos;d have hit assertions telling you this is unsafe.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1562073</commentid>
    <comment_count>26</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2019-08-16 10:07:57 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #25)
&gt; Comment on attachment 376395 [details]
&gt; Patch for landing
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=376395&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebKit/NetworkProcess/WebStorage/StorageManager.cpp:105
&gt; &gt;&gt;&gt; +    RunLoop::main().dispatch([origins = WTFMove(origins), completionHandler = WTFMove(completionHandler)]() mutable {
&gt; &gt;&gt; 
&gt; &gt;&gt; Please don&apos;t do this, this is exactly how we end up with thread-safety bug. A method that takes a completion handler MUST call its completion handler on the thread is was called on. Here getSessionStorageOrigins() gets called on a background queue (as asserted at the beginning of this method) and then it calls its completion handler on the main thread. This is super error prone.
&gt; &gt; 
&gt; &gt; I will write a follow-up. No need to do anything.
&gt; 
&gt; If those methods were taking proper CompletionHandler data types for their
&gt; completion handler (instead of the generic Function type), you&apos;d have hit
&gt; assertions telling you this is unsafe.

Yes, may be a nice thing to do to change Function&lt;&gt; ...completionHandler to CompletionHandler&lt;&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1562076</commentid>
    <comment_count>27</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-08-16 10:13:53 -0700</bug_when>
    <thetext>(In reply to Sihui Liu from comment #26)
&gt; (In reply to Chris Dumez from comment #25)
&gt; &gt; Comment on attachment 376395 [details]
&gt; &gt; Patch for landing
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=376395&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt;&gt; Source/WebKit/NetworkProcess/WebStorage/StorageManager.cpp:105
&gt; &gt; &gt;&gt;&gt; +    RunLoop::main().dispatch([origins = WTFMove(origins), completionHandler = WTFMove(completionHandler)]() mutable {
&gt; &gt; &gt;&gt; 
&gt; &gt; &gt;&gt; Please don&apos;t do this, this is exactly how we end up with thread-safety bug. A method that takes a completion handler MUST call its completion handler on the thread is was called on. Here getSessionStorageOrigins() gets called on a background queue (as asserted at the beginning of this method) and then it calls its completion handler on the main thread. This is super error prone.
&gt; &gt; &gt; 
&gt; &gt; &gt; I will write a follow-up. No need to do anything.
&gt; &gt; 
&gt; &gt; If those methods were taking proper CompletionHandler data types for their
&gt; &gt; completion handler (instead of the generic Function type), you&apos;d have hit
&gt; &gt; assertions telling you this is unsafe.
&gt; 
&gt; Yes, may be a nice thing to do to change Function&lt;&gt; ...completionHandler to
&gt; CompletionHandler&lt;&gt;.

Not really, if you look at my patch, you&apos;ll see that they are gone entirely since those operations are synchronous.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1562088</commentid>
    <comment_count>28</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2019-08-16 10:38:42 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #27)
&gt; (In reply to Sihui Liu from comment #26)
&gt; &gt; (In reply to Chris Dumez from comment #25)
&gt; &gt; &gt; Comment on attachment 376395 [details]
&gt; &gt; &gt; Patch for landing
&gt; &gt; &gt; 
&gt; &gt; &gt; View in context:
&gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=376395&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt;&gt;&gt; Source/WebKit/NetworkProcess/WebStorage/StorageManager.cpp:105
&gt; &gt; &gt; &gt;&gt;&gt; +    RunLoop::main().dispatch([origins = WTFMove(origins), completionHandler = WTFMove(completionHandler)]() mutable {
&gt; &gt; &gt; &gt;&gt; 
&gt; &gt; &gt; &gt;&gt; Please don&apos;t do this, this is exactly how we end up with thread-safety bug. A method that takes a completion handler MUST call its completion handler on the thread is was called on. Here getSessionStorageOrigins() gets called on a background queue (as asserted at the beginning of this method) and then it calls its completion handler on the main thread. This is super error prone.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; I will write a follow-up. No need to do anything.
&gt; &gt; &gt; 
&gt; &gt; &gt; If those methods were taking proper CompletionHandler data types for their
&gt; &gt; &gt; completion handler (instead of the generic Function type), you&apos;d have hit
&gt; &gt; &gt; assertions telling you this is unsafe.
&gt; &gt; 
&gt; &gt; Yes, may be a nice thing to do to change Function&lt;&gt; ...completionHandler to
&gt; &gt; CompletionHandler&lt;&gt;.
&gt; 
&gt; Not really, if you look at my patch, you&apos;ll see that they are gone entirely
&gt; since those operations are synchronous.

I saw your patch. I mean generally replacing Function&lt;&gt; ...completionHandler with CompletionHandler&lt;&gt; in the code base, so we will hit the assertion and notice the bad practice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1607998</commentid>
    <comment_count>29</comment_count>
      <attachid>376395</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-01-17 08:14:15 -0800</bug_when>
    <thetext>Comment on attachment 376395
Patch for landing

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

&gt; Source/WebCore/ChangeLog:25
&gt; +        (WebCore::DOMWindow::prewarmLocalStorageIfNecessary): localStorage will be prewarmed in network process in the

Could you point me to the code that does pre-warming now? I cannot find it and we are seeing hangs in StorageManagerSet::GetValues again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609083</commentid>
    <comment_count>30</comment_count>
      <attachid>376395</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-01-21 09:32:32 -0800</bug_when>
    <thetext>Comment on attachment 376395
Patch for landing

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

&gt;&gt; Source/WebCore/ChangeLog:25
&gt;&gt; +        (WebCore::DOMWindow::prewarmLocalStorageIfNecessary): localStorage will be prewarmed in network process in the
&gt; 
&gt; Could you point me to the code that does pre-warming now? I cannot find it and we are seeing hangs in StorageManagerSet::GetValues again.

Sorry I missed see this comment..

I did not change the logic of prewarming in web process(we still need to call prewarmLocalStorageIfNecessary in DocumentLodaer), but removed the prewarm message and merged it into ConnectToLocalStorageArea. (so network process imports database when receiving ConnectToLocalStorageArea)

Therefore I think https://trac.webkit.org/changeset/254753/webkit is not right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1613584</commentid>
    <comment_count>31</comment_count>
      <attachid>376395</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-01-31 14:26:57 -0800</bug_when>
    <thetext>Comment on attachment 376395
Patch for landing

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

&gt; Source/WebKit/WebProcess/WebStorage/StorageNamespaceImpl.h:54
&gt;      void didDestroyStorageAreaMap(StorageAreaMap&amp;);

This is never called anymore.

&gt; Source/WebKit/WebProcess/WebStorage/StorageNamespaceImpl.h:74
&gt; +    HashMap&lt;WebCore::SecurityOriginData, RefPtr&lt;StorageAreaMap&gt;&gt; m_storageAreaMaps;

Nobody is ever removing entries from this map so I suspect we have a leak here. The only method that removes things from this map is didDestroyStorageAreaMap() but it is dead code after this change. We found this after investigating a LocalStorage leak for &lt;rdar://problem/58550164&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1613593</commentid>
    <comment_count>32</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-01-31 14:42:44 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #31)
&gt; Comment on attachment 376395 [details]
&gt; Patch for landing
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=376395&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/WebProcess/WebStorage/StorageNamespaceImpl.h:54
&gt; &gt;      void didDestroyStorageAreaMap(StorageAreaMap&amp;);
&gt; 
&gt; This is never called anymore.
&gt; 
&gt; &gt; Source/WebKit/WebProcess/WebStorage/StorageNamespaceImpl.h:74
&gt; &gt; +    HashMap&lt;WebCore::SecurityOriginData, RefPtr&lt;StorageAreaMap&gt;&gt; m_storageAreaMaps;
&gt; 
&gt; Nobody is ever removing entries from this map so I suspect we have a leak
&gt; here. The only method that removes things from this map is
&gt; didDestroyStorageAreaMap() but it is dead code after this change. We found
&gt; this after investigating a LocalStorage leak for &lt;rdar://problem/58550164&gt;.

This patch seems to have reverted http://trac.webkit.org/changeset/184930, which was a fix for jetsams on iOS. I suspect this re-introduced the leak that http://trac.webkit.org/changeset/184930 fixed.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375381</attachid>
            <date>2019-08-01 19:32:42 -0700</date>
            <delta_ts>2019-08-02 13:20:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200373-20190801193241.patch</filename>
            <type>text/plain</type>
            <size>211689</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ3OTA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTE3OGQyNDE4YjVmYThj
YjAzNDIxOTcyZGI5NDZlNTUzZWQ0MTRkZC4uNTUxNGNkYTgwZmMxNjNmMWNmZjZjYmViZjQ2Y2Fh
NGJjMmZkMTBhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDE5LTA4LTAxICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIFNvbWUgaW1wcm92ZW1lbnRz
IG9uIHdlYiBzdG9yYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDAzNzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBNb2RpZmllZCBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIGxvYWRlci9FbXB0
eUNsaWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpF
bXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdl
TmFtZXNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOiBEZWxldGVkLgorICAg
ICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6Y3JlYXRl
V2luZG93IGNvbnN0KToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpET01XaW5kb3c6OnByZXdhcm1Mb2NhbFN0b3JhZ2VJZk5lY2Vzc2FyeSk6CisgICAg
ICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldFNlc3Npb25J
RCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjplcGhlbWVyYWxMb2NhbFN0b3JhZ2UpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0RXBoZW1lcmFsTG9jYWxTdG9yYWdlKTog
RGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKiBwYWdlL1BhZ2VHcm91
cC5oOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUdyb3VwOjppc0xlZ2FjeVByaXZhdGVCcm93c2lu
Z0VuYWJsZWRGb3JUZXN0aW5nKToKKyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U3RvcmFnZTo6cHJld2FybSk6IERlbGV0ZWQuCisgICAgICAgICogc3Rv
cmFnZS9TdG9yYWdlLmg6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlQXJlYS5oOgorICAgICAg
ICAoV2ViQ29yZTo6U3RvcmFnZUFyZWE6OmNsb3NlRGF0YWJhc2VJZklkbGUpOgorICAgICAgICAo
V2ViQ29yZTo6U3RvcmFnZUFyZWE6OnByZXdhcm0pOiBEZWxldGVkLgorICAgICAgICAqIHN0b3Jh
Z2UvU3RvcmFnZU5hbWVzcGFjZS5oOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
cjo6bG9jYWxTdG9yYWdlQXJlYSk6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXI6OmxvY2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpTdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXI6OnRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmVuYWJsZUxlZ2FjeVBy
aXZhdGVCcm93c2luZ0ZvclRlc3RpbmcpOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyLmg6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlVHlwZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6aXNMb2NhbFN0b3JhZ2UpOgorCiAyMDE5LTA3LTI5ICBQaGlsaXBwZSBOb3Jt
YW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIyNDMwNTgp
OiBbR1N0cmVhbWVyXSBXZWJLaXRXZWJTcmMncyBpbnRlcm5hbCBxdWV1ZSBjYW4gZXhoYXVzdCB0
aGUgV2ViUHJvY2VzcyBtZW1vcnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZTJmZjdiODljMmRiYjFmNTAxZDQwNzc5
NWIyMmE4M2I3ODQ4M2Q4Mi4uNzY1Y2I2MTg4YWZkYjFkYTk0ZGU5MTNhMzQ1NDQ0NTk0MzNjMjFk
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMTQgQEAKKzIwMTktMDgtMDEgIFNpaHVpIExpdSAgPHNp
aHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgU29tZSBpbXByb3ZlbWVudHMgb24gd2ViIHN0
b3JhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
MDM3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
Q01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlz
dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAgICAg
KiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmRpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OndlYlBhZ2VXYXNBZGRlZCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp3ZWJQYWdlV2FzUmVtb3Zl
ZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjp3ZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW46Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2Vi
S2l0OjptX3N0b3JhZ2VNYW5hZ2VyU2V0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6On5OZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpp
bml0aWFsaXplTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
czo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6YWRkV2Vic2l0ZURhdGFTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzOjpkZXN0cm95U2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzOjpoYXNMb2NhbFN0b3JhZ2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
OjpkZWxldGVXZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpk
ZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6YWN0dWFsUHJlcGFyZVRvU3VzcGVuZCk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZXN1bWUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6Z2V0TG9jYWxTdG9yYWdlT3JpZ2luRGV0YWlscyk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjpjb25uZWN0aW9uVG9XZWJQcm9jZXNzQ2xvc2VkKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OndlYlBhZ2VXYXNBZGRlZCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjp3ZWJQYWdlV2FzUmVtb3ZlZCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjp3ZWJQcm9jZXNzV2FzRGlzY29u
bmVjdGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OndlYlBy
b2Nlc3NTZXNzaW9uQ2hhbmdlZCk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lv
bi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpOZXR3b3JrU2Vzc2lvbik6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjp+TmV0d29ya1Nlc3Npb24pOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmg6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtTZXNzaW9uOjpzdG9yYWdlTWFuYWdlcik6IERlbGV0ZWQuCisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVyczo6cHJpdmF0ZVNlc3Np
b25QYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25DcmVhdGlvblBh
cmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9u
Q3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OkxvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6TG9jYWxTdG9yYWdlRGF0YWJhc2VU
cmFja2VyKToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjp+
TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9X
ZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpTdG9yYWdlTWFuYWdlcjo6TG9jYWxTdG9yYWdlTmFtZXNwYWNlOjpnZXRTdG9yYWdlQXJlYSk6
CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpUcmFuc2llbnRMb2NhbFN0b3JhZ2VO
YW1lc3BhY2U6OmdldFN0b3JhZ2VBcmVhKToKKyAgICAgICAgKFdlYktpdDo6Z2VuZXJhdGVTdG9y
YWdlQXJlYUlkZW50aWZpZXIpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6U3Rv
cmFnZUFyZWE6OlN0b3JhZ2VBcmVhKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6
OlN0b3JhZ2VBcmVhOjphZGRMaXN0ZW5lcik6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5h
Z2VyOjpTdG9yYWdlQXJlYTo6cmVtb3ZlTGlzdGVuZXIpOgorICAgICAgICAoV2ViS2l0OjpTdG9y
YWdlTWFuYWdlcjo6U3RvcmFnZUFyZWE6OmNsZWFyKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFn
ZU1hbmFnZXI6OlN0b3JhZ2VBcmVhOjpvcGVuRGF0YWJhc2VBbmRJbXBvcnRJdGVtc0lmTmVlZGVk
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VBcmVhOjpk
aXNwYXRjaEV2ZW50cyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpM
b2NhbFN0b3JhZ2VOYW1lc3BhY2U6OmdldE9yQ3JlYXRlU3RvcmFnZUFyZWEpOgorICAgICAgICAo
V2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2U6OmdldFN0b3Jh
Z2VBcmVhKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OlNlc3Npb25TdG9yYWdl
TmFtZXNwYWNlOjpnZXRPckNyZWF0ZVN0b3JhZ2VBcmVhKToKKyAgICAgICAgKFdlYktpdDo6U3Rv
cmFnZU1hbmFnZXI6OlN0b3JhZ2VNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1h
bmFnZXI6On5TdG9yYWdlTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2Vy
OjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3Jh
Z2VNYW5hZ2VyOjpkZXN0cm95U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAoV2Vi
S2l0OjpTdG9yYWdlTWFuYWdlcjo6Y2xvbmVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSk6CisgICAg
ICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpnZXRTZXNzaW9uU3RvcmFnZU9yaWdpbnMpOgor
ICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlU2Vzc2lvblN0b3JhZ2VPcmln
aW5zKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmRlbGV0ZVNlc3Npb25TdG9y
YWdlRW50cmllc0Zvck9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6
Z2V0TG9jYWxTdG9yYWdlT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2Vy
OjpnZXRMb2NhbFN0b3JhZ2VPcmlnaW5EZXRhaWxzKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFn
ZU1hbmFnZXI6OmRlbGV0ZUxvY2FsU3RvcmFnZU9yaWdpbnNNb2RpZmllZFNpbmNlKToKKyAgICAg
ICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmRlbGV0ZUxvY2FsU3RvcmFnZUVudHJpZXNGb3JP
cmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmNyZWF0ZUxvY2FsU3Rv
cmFnZUFyZWEpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlVHJhbnNp
ZW50TG9jYWxTdG9yYWdlQXJlYSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpj
cmVhdGVTZXNzaW9uU3RvcmFnZUFyZWEpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdl
cjo6Z2V0T3JDcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJLaXQ6
OlN0b3JhZ2VNYW5hZ2VyOjpjbGVhclN0b3JhZ2VOYW1lc3BhY2VzKToKKyAgICAgICAgKFdlYktp
dDo6U3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VBcmVhOjpzZWN1cml0eU9yaWdpbiBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQXJlYTo6aXNF
cGhlbWVyYWwgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VBcmVhOjpoYXNMaXN0ZW5lciBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQXJlYTo6
c2V0SXRlbXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6TG9j
YWxTdG9yYWdlTmFtZXNwYWNlOjpjbG9uZVRvKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
U3RvcmFnZU1hbmFnZXI6OlNlc3Npb25TdG9yYWdlTmFtZXNwYWNlOjphbGxvd2VkQ29ubmVjdGlv
bnMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6U2Vz
c2lvblN0b3JhZ2VOYW1lc3BhY2U6OmFkZEFsbG93ZWRDb25uZWN0aW9uKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OlNlc3Npb25TdG9yYWdlTmFtZXNwYWNlOjpy
ZW1vdmVBbGxvd2VkQ29ubmVjdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlN0b3Jh
Z2VNYW5hZ2VyOjphZGRBbGxvd2VkU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0aW9uKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OnJlbW92ZUFsbG93ZWRT
ZXNzaW9uU3RvcmFnZU5hbWVzcGFjZUNvbm5lY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAoV2Vi
S2l0OjpTdG9yYWdlTWFuYWdlcjo6cHJvY2Vzc0RpZENsb3NlQ29ubmVjdGlvbik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVMb2NhbFN0b3JhZ2VFbnRy
aWVzRm9yT3JpZ2luKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6
OmNyZWF0ZUxvY2FsU3RvcmFnZU1hcCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlN0b3Jh
Z2VNYW5hZ2VyOjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VNYXApOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VNYXApOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6ZGVzdHJveVN0b3JhZ2VN
YXApOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6cHJld2FybSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpnZXRWYWx1ZXMpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6c2V0SXRlbSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpzZXRJdGVtcyk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpyZW1vdmVJdGVtKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmNsZWFyKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OndhaXRVbnRpbFRhc2tzRmluaXNoZWQpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6c3VzcGVuZCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpyZXN1bWUpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6ZmluZFN0b3JhZ2VBcmVhIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2Vy
Lmg6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQXJlYTo6c2VjdXJp
dHlPcmlnaW4gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6U3RvcmFn
ZUFyZWE6OmlkZW50aWZpZXIpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6U3Rv
cmFnZUFyZWE6Omhhc0xpc3RlbmVyKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6
OlN0b3JhZ2VBcmVhOjppc0VwaGVtZXJhbCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlN0b3Jh
Z2VNYW5hZ2VyOjpTdG9yYWdlQXJlYTo6c2V0V29ya1F1ZXVlKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLm1lc3NhZ2VzLmluOiBSZW1vdmVkLgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXJTZXQ6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OjptX3F1ZXVlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFn
ZXJTZXQ6On5TdG9yYWdlTWFuYWdlclNldCk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5h
Z2VyU2V0OjphZGQpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlclNldDo6cmVtb3Zl
KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXJTZXQ6OmFkZENvbm5lY3Rpb24pOgor
ICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlclNldDo6cmVtb3ZlQ29ubmVjdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0Ojp3YWl0VW50aWxUYXNrc0ZpbmlzaGVk
KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXJTZXQ6OnN1c3BlbmQpOgorICAgICAg
ICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlclNldDo6cmVzdW1lKToKKyAgICAgICAgKFdlYktpdDo6
U3RvcmFnZU1hbmFnZXJTZXQ6OmdldFNlc3Npb25TdG9yYWdlT3JpZ2lucyk6CisgICAgICAgIChX
ZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpkZWxldGVTZXNzaW9uU3RvcmFnZSk6CisgICAgICAg
IChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpkZWxldGVTZXNzaW9uU3RvcmFnZUZvck9yaWdp
bnMpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlclNldDo6Z2V0TG9jYWxTdG9yYWdl
T3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpkZWxldGVMb2Nh
bFN0b3JhZ2VNb2RpZmllZFNpbmNlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXJT
ZXQ6OmRlbGV0ZUxvY2FsU3RvcmFnZUZvck9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpTdG9y
YWdlTWFuYWdlclNldDo6Z2V0TG9jYWxTdG9yYWdlT3JpZ2luRGV0YWlscyk6CisgICAgICAgIChX
ZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0Ojpjb25uZWN0VG9Mb2NhbFN0b3JhZ2VBcmVhKToKKyAg
ICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXJTZXQ6OmNvbm5lY3RUb1RyYW5zaWVudExvY2Fs
U3RvcmFnZUFyZWEpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlclNldDo6Y29ubmVj
dFRvU2Vzc2lvblN0b3JhZ2VBcmVhKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXJT
ZXQ6OmRpc2Nvbm5lY3RGcm9tU3RvcmFnZUFyZWEpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdl
TWFuYWdlclNldDo6Z2V0VmFsdWVzKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXJT
ZXQ6OnNldEl0ZW0pOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlclNldDo6cmVtb3Zl
SXRlbSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpjbGVhcik6CisgICAg
ICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpjbG9uZVNlc3Npb25TdG9yYWdlTmFtZXNw
YWNlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2Vy
U2V0Lmg6IEFkZGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFn
ZU1hbmFnZXJTZXQubWVzc2FnZXMuaW46IEFkZGVkLgorICAgICAgICAqIFNoYXJlZC9XZWJzaXRl
RGF0YVN0b3JlUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmVQYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZVBhcmFtZXRlcnM6OnByaXZhdGVTZXNzaW9uUGFyYW1ldGVycyk6CisgICAgICAgICogU2hh
cmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmg6CisgICAgICAgICogU291cmNlcy50eHQ6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tOgorICAgICAg
ICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0ZXJzKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMpOgorICAgICAgICAqIFdlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6c2V0
UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6Y3JlYXRlV2ViUGFnZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnJlbW92ZVdlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzOjplbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzOjpyZWdpc3RlclN0b3JhZ2VBcmVhTWFwKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzczo6c3RvcmFnZUFyZWFNYXAgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzOjplbmFibGVQcml2YXRlQnJvd3NpbmdGb3JUZXN0aW5nKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6U3RvcmFnZUFyZWFJbXBsOjppbmNyZW1lbnRBY2Nlc3NDb3VudCk6CisgICAgICAgIChX
ZWJLaXQ6OlN0b3JhZ2VBcmVhSW1wbDo6ZGVjcmVtZW50QWNjZXNzQ291bnQpOgorICAgICAgICAo
V2ViS2l0OjpTdG9yYWdlQXJlYUltcGw6OnByZXdhcm0pOiBEZWxldGVkLgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9y
YWdlQXJlYU1hcDo6U3RvcmFnZUFyZWFNYXApOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJl
YU1hcDo6flN0b3JhZ2VBcmVhTWFwKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6
OnNldEl0ZW0pOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6cmVtb3ZlSXRlbSk6
CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwOjpjbGVhcik6CisgICAgICAgIChXZWJL
aXQ6OlN0b3JhZ2VBcmVhTWFwOjpyZXNldFZhbHVlcyk6CisgICAgICAgIChXZWJLaXQ6OlN0b3Jh
Z2VBcmVhTWFwOjpsb2FkVmFsdWVzSWZOZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdl
QXJlYU1hcDo6Y2xlYXJDYWNoZSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwOjph
cHBseUNoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwOjpkaXNwYXRjaFN0
b3JhZ2VFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwOjpkaXNwYXRjaFNl
c3Npb25TdG9yYWdlRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6ZGlz
cGF0Y2hMb2NhbFN0b3JhZ2VFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhTWFw
Ojpjb25uZWN0KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OmRpc2Nvbm5lY3Qp
OgorICAgICAgICAoV2ViS2l0OjpnZW5lcmF0ZVN0b3JhZ2VNYXBJRCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwOjpwcmV3YXJtKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OmRpZEdldFZhbHVlcyk6IERlbGV0ZWQuCisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmg6CisgICAgICAgICgpOiBE
ZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5t
ZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVz
cGFjZUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3Jl
YXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTmFt
ZXNwYWNlSW1wbDo6Y3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktp
dDo6U3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVz
cGFjZSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpTdG9yYWdlTmFt
ZXNwYWNlSW1wbCk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjb3B5
KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUltcGw6OnNldFNlc3Npb25JREZv
clRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRl
RXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVTZXNzaW9uU3Rv
cmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92
aWRlcjo6Y3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1l
c3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNy
ZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZSk6IERlbGV0ZWQuCisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oOgorCiAy
MDE5LTA3LTI3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQWxs
b3cgbW9yZSBzeXNjYWxscyBpbiB0aGUgV2ViQ29udGVudCBwcm9jZXNzJyBzYW5kYm94IHByb2Zp
bGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdExlZ2FjeS9DaGFuZ2VMb2cKaW5kZXggM2YxM2E1NzhhMjA5MTFjZWY1ZjI1NzVhM2U2MjE3
YmMwYTBkMDU1ZC4uMjE5NzQ1YTlhYjUzMmExNjgyZTE2ZmMwMjk1NzUwNTRhYjZkM2E1ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAxOS0wOC0wMSAgU2lodWkgTGl1
ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBTb21lIGltcHJvdmVtZW50cyBvbiB3
ZWIgc3RvcmFnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjAwMzczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3Jh
Z2VBcmVhSW1wbDo6c2Vzc2lvbkNoYW5nZWQpOgorICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZUFy
ZWFJbXBsLmg6CisgICAgICAgICogU3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpTdG9yYWdlQXJlYVN5bmM6OnNjaGVkdWxlRmluYWxTeW5jKToKKyAgICAgICAg
KiBTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3Rv
cmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKToKKyAgICAg
ICAgKFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUltcGw6OmdldE9yQ3JlYXRlTG9jYWxTdG9yYWdl
TmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUltcGw6OlN0b3Jh
Z2VOYW1lc3BhY2VJbXBsKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUltcGw6
OmNvcHkpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y2xvc2UpOgor
ICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6c2V0U2Vzc2lvbklERm9yVGVz
dGluZyk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVFcGhl
bWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOiBEZWxldGVkLgorICAgICAgICAqIFN0b3JhZ2Uv
U3RvcmFnZU5hbWVzcGFjZUltcGwuaDoKKyAgICAgICAgKiBTdG9yYWdlL1dlYlN0b3JhZ2VOYW1l
c3BhY2VQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlN0b3JhZ2VOYW1lc3BhY2VQ
cm92aWRlcjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViS2l0
OjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFj
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRl
VHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3Rv
cmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2UpOiBEZWxldGVkLgorICAgICAgICAqIFN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyLmg6CisKIDIwMTktMDctMTggIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Vi
a2l0Lm9yZz4KIAogICAgICAgICBVbmlmeSBidWlsZHMgaW4gV2ViS2l0TGVnYWN5L21hYy9ET00K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCAwYjg5MmNmZDY1YjZhYzc2YWEwYTgxMjQy
MmJiNjQxYzg2MjE5NmVkLi5kYmMxYzc3MWU1NzliZjIxZDNkZGJlNzMwMWRjYThhYzVlOTE4ZTZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTktMDgt
MDEgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgU29tZSBpbXBy
b3ZlbWVudHMgb24gd2ViIHN0b3JhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwMDM3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3
IF9wcmVmZXJlbmNlc0NoYW5nZWQ6XSk6CisKIDIwMTktMDctMjUgIERlYW4gSmFja3NvbiAgPGRp
bm9AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBoZWxwZXIgZm9yIGlnbm9yaW5nIGRlcHJlY2F0
ZWQgaW1wbGVtZW50YXRpb24gd2FybmluZ3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9FbXB0eUNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50
cy5jcHAKaW5kZXggYzQ1MGMwODcwYzBkYjkwMDJiOTA0YzdiNmNiY2U0Yzk2OTAyYzZkYy4uYWY0
ZTg3ZTUyNGZiOTQ5MmRhOWE2N2MzMGZjZGQ5MjI0YmFlOTEwNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0VtcHR5Q2xpZW50cy5jcHAKQEAgLTM5NiwxMiArMzk2LDE0IEBAIGNsYXNzIEVtcHR5U3Rv
cmFnZU5hbWVzcGFjZVByb3ZpZGVyIGZpbmFsIDogcHVibGljIFN0b3JhZ2VOYW1lc3BhY2VQcm92
aWRlciB7CiAgICAgc3RydWN0IEVtcHR5U3RvcmFnZU5hbWVzcGFjZSBmaW5hbCA6IHB1YmxpYyBT
dG9yYWdlTmFtZXNwYWNlIHsKICAgICAgICAgUmVmPFN0b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYShj
b25zdCBTZWN1cml0eU9yaWdpbkRhdGEmKSBmaW5hbCB7IHJldHVybiBhZG9wdFJlZigqbmV3IEVt
cHR5U3RvcmFnZUFyZWEpOyB9CiAgICAgICAgIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjb3B5KFBh
Z2UqKSBmaW5hbCB7IHJldHVybiBhZG9wdFJlZigqbmV3IEVtcHR5U3RvcmFnZU5hbWVzcGFjZSk7
IH0KKyAgICAgICAgCisgICAgICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IHsg
cmV0dXJuIFBBTDo6U2Vzc2lvbklEOjplbXB0eVNlc3Npb25JRCgpOyB9CisgICAgICAgIHZvaWQg
c2V0U2Vzc2lvbklERm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCkgeyB9OwogICAgIH07CiAKICAg
ICBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoUGFn
ZSYsIHVuc2lnbmVkKSBmaW5hbDsKLSAgICBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlTG9j
YWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkKSBmaW5hbDsKLSAgICBSZWY8U3RvcmFnZU5hbWVz
cGFjZT4gY3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25l
ZCkgZmluYWw7Ci0gICAgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVRyYW5zaWVudExvY2Fs
U3RvcmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkKSBmaW5hbDsKKyAgICBS
ZWY8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVk
LCBQQUw6OlNlc3Npb25JRCkgZmluYWw7CisgICAgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0
ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVk
LCBQQUw6OlNlc3Npb25JRCkgZmluYWw7CiB9OwogCiBjbGFzcyBFbXB0eVVzZXJDb250ZW50UHJv
dmlkZXIgZmluYWwgOiBwdWJsaWMgVXNlckNvbnRlbnRQcm92aWRlciB7CkBAIC01MjUsMTcgKzUy
NywxMiBAQCBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gRW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEVtcHR5U3RvcmFnZU5hbWVzcGFjZSk7CiB9CiAKLVJlZjxTdG9yYWdlTmFtZXNwYWNlPiBFbXB0
eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVu
c2lnbmVkKQorUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IEVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQsIFBBTDo6U2Vzc2lvbklE
KQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEVtcHR5U3RvcmFnZU5hbWVzcGFjZSk7CiB9
CiAKLVJlZjxTdG9yYWdlTmFtZXNwYWNlPiBFbXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6
Y3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCkKLXsK
LSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBFbXB0eVN0b3JhZ2VOYW1lc3BhY2UpOwotfQotCi1S
ZWY8U3RvcmFnZU5hbWVzcGFjZT4gRW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0
ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVk
KQorUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IEVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpj
cmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoU2VjdXJpdHlPcmlnaW4mLCB1bnNp
Z25lZCwgUEFMOjpTZXNzaW9uSUQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRW1wdHlT
dG9yYWdlTmFtZXNwYWNlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hy
b21lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAppbmRleCAyMjBkOGMyNjI5
OGIwYzk1NTc5MzBmNDEyM2ZjZjJkNTgzYzk3OTNiLi5kY2E4NjQxMzhkMzBiNzEwZGNkNWFlMTI3
NWU4NTM1ZWM0NTNhNDFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCkBAIC0xODksOCArMTg5LDYg
QEAgUGFnZSogQ2hyb21lOjpjcmVhdGVXaW5kb3coRnJhbWUmIGZyYW1lLCBjb25zdCBGcmFtZUxv
YWRSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdAogCiAgICAgaWYgKGF1dG8qIG9sZFNlc3Npb25TdG9y
YWdlID0gbV9wYWdlLnNlc3Npb25TdG9yYWdlKGZhbHNlKSkKICAgICAgICAgbmV3UGFnZS0+c2V0
U2Vzc2lvblN0b3JhZ2Uob2xkU2Vzc2lvblN0b3JhZ2UtPmNvcHkobmV3UGFnZSkpOwotICAgIGlm
IChhdXRvKiBvbGRFcGhlbWVyYWxMb2NhbFN0b3JhZ2UgPSBtX3BhZ2UuZXBoZW1lcmFsTG9jYWxT
dG9yYWdlKGZhbHNlKSkKLSAgICAgICAgbmV3UGFnZS0+c2V0RXBoZW1lcmFsTG9jYWxTdG9yYWdl
KG9sZEVwaGVtZXJhbExvY2FsU3RvcmFnZS0+Y29weShuZXdQYWdlKSk7CiAKICAgICByZXR1cm4g
bmV3UGFnZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCA4YmJmZjhiYmE5NGJk
MDAwMDdlNGVkYjg4NDY1ODdkOTJiY2RlMjdkLi5iMTM2OTRhZDZiNTMxNDk4NzNhOTFjNzExOTRh
ZGFlZDA3ZTA2MGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC00NDIsOCArNDQy
LDcgQEAgdm9pZCBET01XaW5kb3c6OnByZXdhcm1Mb2NhbFN0b3JhZ2VJZk5lY2Vzc2FyeSgpCiAg
ICAgaWYgKCFsb2NhbFN0b3JhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChsb2NhbFN0
b3JhZ2UtPnByZXdhcm0oKSkKLSAgICAgICAgcGFnZS0+bWFpbkZyYW1lKCkuZGlkUHJld2FybUxv
Y2FsU3RvcmFnZSgpOworICAgIHBhZ2UtPm1haW5GcmFtZSgpLmRpZFByZXdhcm1Mb2NhbFN0b3Jh
Z2UoKTsKIH0KIAogRE9NV2luZG93Ojp+RE9NV2luZG93KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4
IGVkYTdjNWZhNWQ2NDc5YmE3MTA5MDIwYjUyODMyY2UyNjFiY2Q3ZTkuLjlkMmU5NDdkYTk1ZDYz
OGFjNzI3ZWExNTczOTM2ZTA5NzA4NTliM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMTUxMCwx
OSArMTUxMCw2IEBAIHZvaWQgUGFnZTo6c2V0U2Vzc2lvblN0b3JhZ2UoUmVmUHRyPFN0b3JhZ2VO
YW1lc3BhY2U+JiYgbmV3U3RvcmFnZSkKICAgICBtX3Nlc3Npb25TdG9yYWdlID0gV1RGTW92ZShu
ZXdTdG9yYWdlKTsKIH0KIAotU3RvcmFnZU5hbWVzcGFjZSogUGFnZTo6ZXBoZW1lcmFsTG9jYWxT
dG9yYWdlKGJvb2wgb3B0aW9uYWxDcmVhdGUpCi17Ci0gICAgaWYgKCFtX2VwaGVtZXJhbExvY2Fs
U3RvcmFnZSAmJiBvcHRpb25hbENyZWF0ZSkKLSAgICAgICAgbV9lcGhlbWVyYWxMb2NhbFN0b3Jh
Z2UgPSBtX3N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci0+Y3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9y
YWdlTmFtZXNwYWNlKCp0aGlzLCBtX3NldHRpbmdzLT5zZXNzaW9uU3RvcmFnZVF1b3RhKCkpOwot
Ci0gICAgcmV0dXJuIG1fZXBoZW1lcmFsTG9jYWxTdG9yYWdlLmdldCgpOwotfQotCi12b2lkIFBh
Z2U6OnNldEVwaGVtZXJhbExvY2FsU3RvcmFnZShSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4mJiBu
ZXdTdG9yYWdlKQotewotICAgIG1fZXBoZW1lcmFsTG9jYWxTdG9yYWdlID0gV1RGTW92ZShuZXdT
dG9yYWdlKTsKLX0KLQogYm9vbCBQYWdlOjpoYXNDdXN0b21IVE1MVG9rZW5pemVyVGltZURlbGF5
KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9zZXR0aW5ncy0+bWF4UGFyc2VEdXJhdGlvbigpICE9
IC0xOwpAQCAtMjUwNyw2ICsyNDk0LDkgQEAgdm9pZCBQYWdlOjpzZXRTZXNzaW9uSUQoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgICAgICBtX2lkYkNvbm5lY3Rpb25Ub1NlcnZlciA9IG51
bGxwdHI7CiAjZW5kaWYKIAorICAgIGlmIChzZXNzaW9uSUQgIT0gbV9zZXNzaW9uSUQgJiYgbV9z
ZXNzaW9uU3RvcmFnZSkKKyAgICAgICAgbV9zZXNzaW9uU3RvcmFnZS0+c2V0U2Vzc2lvbklERm9y
VGVzdGluZyhzZXNzaW9uSUQpOworCiAgICAgYm9vbCBwcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5n
ZWQgPSAoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkgIT0gbV9zZXNzaW9uSUQuaXNFcGhlbWVyYWwo
KSk7CiAKICAgICBtX3Nlc3Npb25JRCA9IHNlc3Npb25JRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggYzQ0
MDIzNDQzYzg1NmRhMjJiMGU0MTlmOGZjNWYyNjUyZjg2MmZlNy4uYTE4NDEyYTMzNzdlNDFkYzBk
NjEzNWVmMTRmOWIxODljNmVkYWQxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTUwNyw5ICs1MDcsNiBA
QCBwdWJsaWM6CiAgICAgU3RvcmFnZU5hbWVzcGFjZSogc2Vzc2lvblN0b3JhZ2UoYm9vbCBvcHRp
b25hbENyZWF0ZSA9IHRydWUpOwogICAgIHZvaWQgc2V0U2Vzc2lvblN0b3JhZ2UoUmVmUHRyPFN0
b3JhZ2VOYW1lc3BhY2U+JiYpOwogCi0gICAgU3RvcmFnZU5hbWVzcGFjZSogZXBoZW1lcmFsTG9j
YWxTdG9yYWdlKGJvb2wgb3B0aW9uYWxDcmVhdGUgPSB0cnVlKTsKLSAgICB2b2lkIHNldEVwaGVt
ZXJhbExvY2FsU3RvcmFnZShSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4mJik7Ci0KICAgICBib29s
IGhhc0N1c3RvbUhUTUxUb2tlbml6ZXJUaW1lRGVsYXkoKSBjb25zdDsKICAgICBkb3VibGUgY3Vz
dG9tSFRNTFRva2VuaXplclRpbWVEZWxheSgpIGNvbnN0OwogCkBAIC04NzcsNyArODc0LDYgQEAg
cHJpdmF0ZToKICAgICBib29sIG1fY2FuU3RhcnRNZWRpYSB7IHRydWUgfTsKIAogICAgIFJlZlB0
cjxTdG9yYWdlTmFtZXNwYWNlPiBtX3Nlc3Npb25TdG9yYWdlOwotICAgIFJlZlB0cjxTdG9yYWdl
TmFtZXNwYWNlPiBtX2VwaGVtZXJhbExvY2FsU3RvcmFnZTsKIAogICAgIFRpbWVyVGhyb3R0bGlu
Z1N0YXRlIG1fdGltZXJUaHJvdHRsaW5nU3RhdGUgeyBUaW1lclRocm90dGxpbmdTdGF0ZTo6RGlz
YWJsZWQgfTsKICAgICBNb25vdG9uaWNUaW1lIG1fdGltZXJUaHJvdHRsaW5nU3RhdGVMYXN0Q2hh
bmdlZFRpbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuaAppbmRleCA2YmFmMGExYWIxM2M5ZTJmMmVm
NTJmMmMxZTQwMWYzMjUwY2ZiMDlmLi5kNDFlYzQzOTBlZDJlNzk0NmZjZWEyN2Q3MWM1NzNjOTYw
ZDhmNDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmgKQEAgLTU5LDYgKzU5LDcgQEAgcHVibGlj
OgogI2VuZGlmCiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVuYWJsZUxlZ2FjeVByaXZhdGVC
cm93c2luZ0ZvclRlc3RpbmcoYm9vbCk7CisgICAgYm9vbCBpc0xlZ2FjeVByaXZhdGVCcm93c2lu
Z0VuYWJsZWRGb3JUZXN0aW5nKCkgeyByZXR1cm4gbV9pc0xlZ2FjeVByaXZhdGVCcm93c2luZ0Vu
YWJsZWRGb3JUZXN0aW5nOyB9CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fbmFtZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL1N0b3JhZ2UuY3BwCmluZGV4IDkxOTdiNjBlN2U2YTE1NWM0NDY4ZDUyOTRmYWIy
NTBjODY3OTg3ZmYuLjQ3ZGJiMTdkOWFlNmQyNjljMTQ3MDNhMWE2MmE0OTJlZTY2ZGY0MTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmNwcApAQCAtOTcsMTEgKzk3LDYgQEAgRXhjZXB0aW9u
T3I8dm9pZD4gU3RvcmFnZTo6cmVtb3ZlSXRlbShjb25zdCBTdHJpbmcmIGtleSkKICAgICByZXR1
cm4geyB9OwogfQogCi1ib29sIFN0b3JhZ2U6OnByZXdhcm0oKQotewotICAgIHJldHVybiBtX3N0
b3JhZ2VBcmVhLT5wcmV3YXJtKCk7Ci19Ci0KIEV4Y2VwdGlvbk9yPHZvaWQ+IFN0b3JhZ2U6OmNs
ZWFyKCkKIHsKICAgICBhdXRvKiBmcmFtZSA9IHRoaXMtPmZyYW1lKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
U3RvcmFnZS5oCmluZGV4IDUyMTVmNDdjMzc3ZmY3NTY0ZGFhMWU0NmVlZjc5NDRkMzA4NWY2MTEu
LjI4YWE5YWIxNGUxYjIyYWNjNWJjNWI0ZjZlMWM4NGMxYTk3NGY2NjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvU3RvcmFnZS5oCkBAIC00Niw3ICs0Niw2IEBAIHB1YmxpYzoKICAgICBFeGNlcHRpb25Pcjx2
b2lkPiByZW1vdmVJdGVtKGNvbnN0IFN0cmluZyYga2V5KTsKICAgICBFeGNlcHRpb25Pcjx2b2lk
PiBjbGVhcigpOwogICAgIGJvb2wgY29udGFpbnMoY29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0Owot
ICAgIGJvb2wgcHJld2FybSgpOwogCiAgICAgLy8gQmluZGluZ3Mgc3VwcG9ydCBmdW5jdGlvbnMu
CiAgICAgYm9vbCBpc1N1cHBvcnRlZFByb3BlcnR5TmFtZShjb25zdCBTdHJpbmcmKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWEuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWEuaAppbmRleCBmMzljY2Q3ZTZkYWNkZmY1NmFl
N2RmNjYwZGQ5N2I1ZmY1MjY0NmQ0Li45NzMyYjY2YzdhZjg1NWFmOGVmM2ZhNjdjYzBjYWQ5NDkw
Yjg2NDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYS5oCkBAIC01OCw3ICs1OCw2
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgaW5jcmVtZW50QWNjZXNzQ291bnQoKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgZGVjcmVtZW50QWNjZXNzQ291bnQoKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgY2xvc2VEYXRhYmFzZUlmSWRsZSgpIHsgfQotICAgIHZpcnR1YWwgYm9vbCBwcmV3YXJt
KCkgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZpcnR1YWwgY29uc3QgU2VjdXJpdHlPcmlnaW5E
YXRhJiBzZWN1cml0eU9yaWdpbigpIGNvbnN0ID0gMDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvU3RvcmFnZU5hbWVzcGFjZS5oCmluZGV4IDU1YzY2MjgyYjhiZDY4YmMwNDc4MmRmNDdjYWRl
ZDBjMjEyOTRiNDguLjc1YjhiMDVhYzEwNGJhYjM4YjVhMjQzOWMzNGM2OTFiMzZkNzBiYTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZS5oCkBAIC0yOCw2ICsyOCwx
MCBAQAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KIAorbmFtZXNwYWNlIFBBTCB7CitjbGFzcyBTZXNzaW9uSUQ7Cit9CisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgUGFnZTsKQEAgLTM5LDYgKzQzLDkgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgflN0b3JhZ2VOYW1lc3BhY2UoKSA9IGRlZmF1bHQ7CiAgICAgdmlydHVhbCBSZWY8U3Rv
cmFnZUFyZWE+IHN0b3JhZ2VBcmVhKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYpID0gMDsKICAg
ICB2aXJ0dWFsIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjb3B5KFBhZ2UqIG5ld1BhZ2UpID0gMDsK
KworICAgIHZpcnR1YWwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBzZXRTZXNzaW9uSURGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEKSA9IDA7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKaW5kZXggNTkzOWFmZmQzZWIyZjhl
ZWQ0NmJmNjJiYWI0YjE1YWViNWU5NWVkZi4uNmQxMDRlYmVmZWI4MzAzYTlhOGEwNzhmOWU1OWU2
MGJiZWRkZmYxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFt
ZXNwYWNlUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyLmNwcApAQCAtNjYsMzYgKzY2LDQyIEBAIFJlZjxTdG9yYWdlQXJlYT4g
U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpsb2NhbFN0b3JhZ2VBcmVhKERvY3VtZW50JiBkb2N1
bWVudCkKICAgICAvLyBzbyB0aGUgRG9jdW1lbnQgaGFkIGJldHRlciBzdGlsbCBhY3R1YWxseSBo
YXZlIGEgUGFnZS4KICAgICBBU1NFUlQoZG9jdW1lbnQucGFnZSgpKTsKIAotICAgIGJvb2wgZXBo
ZW1lcmFsID0gZG9jdW1lbnQucGFnZSgpLT51c2VzRXBoZW1lcmFsU2Vzc2lvbigpOwogICAgIGJv
b2wgdHJhbnNpZW50ID0gIWRvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCkuY2FuQWNjZXNzTG9jYWxT
dG9yYWdlKCZkb2N1bWVudC50b3BPcmlnaW4oKSk7CiAKICAgICBSZWZQdHI8U3RvcmFnZU5hbWVz
cGFjZT4gc3RvcmFnZU5hbWVzcGFjZTsKIAogICAgIGlmICh0cmFuc2llbnQpCi0gICAgICAgIHN0
b3JhZ2VOYW1lc3BhY2UgPSAmdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKGRvY3VtZW50
LnRvcE9yaWdpbigpKTsKLSAgICBlbHNlIGlmIChlcGhlbWVyYWwpCi0gICAgICAgIHN0b3JhZ2VO
YW1lc3BhY2UgPSBkb2N1bWVudC5wYWdlKCktPmVwaGVtZXJhbExvY2FsU3RvcmFnZSgpOworICAg
ICAgICBzdG9yYWdlTmFtZXNwYWNlID0gJnRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShk
b2N1bWVudC50b3BPcmlnaW4oKSwgZG9jdW1lbnQucGFnZSgpLT5zZXNzaW9uSUQoKSk7CiAgICAg
ZWxzZQotICAgICAgICBzdG9yYWdlTmFtZXNwYWNlID0gJmxvY2FsU3RvcmFnZU5hbWVzcGFjZSgp
OworICAgICAgICBzdG9yYWdlTmFtZXNwYWNlID0gJmxvY2FsU3RvcmFnZU5hbWVzcGFjZShkb2N1
bWVudC5wYWdlKCktPnNlc3Npb25JRCgpKTsKIAogICAgIHJldHVybiBzdG9yYWdlTmFtZXNwYWNl
LT5zdG9yYWdlQXJlYShkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSk7CiB9CiAKLVN0
b3JhZ2VOYW1lc3BhY2UmIFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6bG9jYWxTdG9yYWdlTmFt
ZXNwYWNlKCkKK1N0b3JhZ2VOYW1lc3BhY2UmIFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6bG9j
YWxTdG9yYWdlTmFtZXNwYWNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICBpZiAo
IW1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlKQotICAgICAgICBtX2xvY2FsU3RvcmFnZU5hbWVzcGFj
ZSA9IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZShsb2NhbFN0b3JhZ2VEYXRhYmFzZVF1b3Rh
SW5CeXRlcyk7CisgICAgICAgIG1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlID0gY3JlYXRlTG9jYWxT
dG9yYWdlTmFtZXNwYWNlKGxvY2FsU3RvcmFnZURhdGFiYXNlUXVvdGFJbkJ5dGVzLCBzZXNzaW9u
SUQpOwogCisgICAgQVNTRVJUKG1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlLT5zZXNzaW9uSUQoKSA9
PSBzZXNzaW9uSUQpOwogICAgIHJldHVybiAqbV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2U7CiB9CiAK
LVN0b3JhZ2VOYW1lc3BhY2UmIFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6dHJhbnNpZW50TG9j
YWxTdG9yYWdlTmFtZXNwYWNlKFNlY3VyaXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbikKK1N0b3Jh
Z2VOYW1lc3BhY2UmIFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6dHJhbnNpZW50TG9jYWxTdG9y
YWdlTmFtZXNwYWNlKFNlY3VyaXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbiwgUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklEKQogewogICAgIGF1dG8mIHNsb3QgPSBtX3RyYW5zaWVudExvY2FsU3RvcmFn
ZU1hcC5hZGQoJnNlY3VyaXR5T3JpZ2luLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAg
aWYgKCFzbG90KQotICAgICAgICBzbG90ID0gY3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFt
ZXNwYWNlKHNlY3VyaXR5T3JpZ2luLCBsb2NhbFN0b3JhZ2VEYXRhYmFzZVF1b3RhSW5CeXRlcyk7
CisgICAgICAgIHNsb3QgPSBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2Uoc2Vj
dXJpdHlPcmlnaW4sIGxvY2FsU3RvcmFnZURhdGFiYXNlUXVvdGFJbkJ5dGVzLCBzZXNzaW9uSUQp
OwogCisgICAgQVNTRVJUKHNsb3QtPnNlc3Npb25JRCgpID09IHNlc3Npb25JRCk7CiAgICAgcmV0
dXJuICpzbG90OwogfQogCit2b2lkIFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6ZW5hYmxlTGVn
YWN5UHJpdmF0ZUJyb3dzaW5nRm9yVGVzdGluZyhib29sIGVuYWJsZWQpCit7CisgICAgYXV0byBu
ZXdTZXNzaW9uSUQgPSBlbmFibGVkID8gUEFMOjpTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNz
aW9uSUQoKSA6IFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCk7CisgICAgaWYgKG1f
bG9jYWxTdG9yYWdlTmFtZXNwYWNlICYmIG5ld1Nlc3Npb25JRCAhPSBtX2xvY2FsU3RvcmFnZU5h
bWVzcGFjZS0+c2Vzc2lvbklEKCkpCisgICAgICAgIG1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlLT5z
ZXRTZXNzaW9uSURGb3JUZXN0aW5nKG5ld1Nlc3Npb25JRCk7Cit9CisKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oCmluZGV4IGRkN2Y5
YTQ2YmQ4NDc5MjQ5Yzc0ZDJhNGMyMjQ1Mjk2NGU2N2FlY2QuLjY3NTE1OTgzZWNjMDFkNDg4NDA1
ZDliNWZlYThjOTA1MWMwYjU0OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9T
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaApAQCAtMzEsNiArMzEsMTAgQEAKICNpbmNsdWRlIDx3
dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKK25hbWVzcGFjZSBQ
QUwgeworY2xhc3MgU2Vzc2lvbklEOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IERvY3VtZW50OwpAQCAtNDUsMjIgKzQ5LDIzIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIH5TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIoKTsKIAogICAgIHZpcnR1YWwgUmVm
PFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1
bnNpZ25lZCBxdW90YSkgPSAwOwotICAgIHZpcnR1YWwgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNy
ZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQgcXVvdGEp
ID0gMDsKIAogICAgIFJlZjxTdG9yYWdlQXJlYT4gbG9jYWxTdG9yYWdlQXJlYShEb2N1bWVudCYp
OwogCiAgICAgdm9pZCBhZGRQYWdlKFBhZ2UmKTsKICAgICB2b2lkIHJlbW92ZVBhZ2UoUGFnZSYp
OwogCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlbmFibGVMZWdhY3lQcml2YXRlQnJvd3NpbmdG
b3JUZXN0aW5nKGJvb2wgZW5hYmxlZCk7CisKIHByb3RlY3RlZDoKICAgICBTdG9yYWdlTmFtZXNw
YWNlKiBvcHRpb25hbExvY2FsU3RvcmFnZU5hbWVzcGFjZSgpIHsgcmV0dXJuIG1fbG9jYWxTdG9y
YWdlTmFtZXNwYWNlLmdldCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgU3RvcmFnZU5hbWVzcGFjZSYg
bG9jYWxTdG9yYWdlTmFtZXNwYWNlKCk7Ci0gICAgU3RvcmFnZU5hbWVzcGFjZSYgdHJhbnNpZW50
TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFNlY3VyaXR5T3JpZ2luJik7CisgICAgU3RvcmFnZU5hbWVz
cGFjZSYgbG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBBTDo6U2Vzc2lvbklEKTsKKyAgICBTdG9yYWdl
TmFtZXNwYWNlJiB0cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoU2VjdXJpdHlPcmlnaW4m
LCBQQUw6OlNlc3Npb25JRCk7CiAKLSAgICB2aXJ0dWFsIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBj
cmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEpID0gMDsKLSAgICB2aXJ0
dWFsIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1l
c3BhY2UoU2VjdXJpdHlPcmlnaW4mLCB1bnNpZ25lZCBxdW90YSkgPSAwOworICAgIHZpcnR1YWwg
UmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25l
ZCBxdW90YSwgUEFMOjpTZXNzaW9uSUQpID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxTdG9yYWdlTmFt
ZXNwYWNlPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoU2VjdXJpdHlPcmln
aW4mLCB1bnNpZ25lZCBxdW90YSwgUEFMOjpTZXNzaW9uSUQpID0gMDsKIAogICAgIEhhc2hTZXQ8
UGFnZSo+IG1fcGFnZXM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3Rv
cmFnZVR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZVR5cGUuaAppbmRleCA1
ODEzM2Y4OWNjYTcxZGMzNTBlZjcyODVhNzBhNzMwYTI5NjJhNmUyLi5mZTcwMDI1N2JhY2I0OWFm
ZGRmZjQ1NjQyYTYzZDQyOGQ3NDBmODljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL1N0b3JhZ2VUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlVHlw
ZS5oCkBAIC0zMCwxMyArMzAsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogZW51bSBjbGFzcyBT
dG9yYWdlVHlwZSB7CiAgICAgU2Vzc2lvbiwKICAgICBMb2NhbCwKLSAgICBFcGhlbWVyYWxMb2Nh
bCwKICAgICBUcmFuc2llbnRMb2NhbCwKIH07CiAKIGlubGluZSBib29sIGlzTG9jYWxTdG9yYWdl
KFN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlKQogewotICAgIHJldHVybiBzdG9yYWdlVHlwZSA9PSBT
dG9yYWdlVHlwZTo6TG9jYWwgfHwgc3RvcmFnZVR5cGUgPT0gU3RvcmFnZVR5cGU6OlRyYW5zaWVu
dExvY2FsIHx8IHN0b3JhZ2VUeXBlID09IFN0b3JhZ2VUeXBlOjpFcGhlbWVyYWxMb2NhbDsKKyAg
ICByZXR1cm4gc3RvcmFnZVR5cGUgPT0gU3RvcmFnZVR5cGU6OkxvY2FsIHx8IHN0b3JhZ2VUeXBl
ID09IFN0b3JhZ2VUeXBlOjpUcmFuc2llbnRMb2NhbDsKIH0KIAogaW5saW5lIGJvb2wgaXNQZXJz
aXN0ZW50TG9jYWxTdG9yYWdlKFN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50
eHQKaW5kZXggNmY3OWM4NjQ3YTYxMmRjMDRhMDJhYWM4MjNkNzQ5NTg0NGQ0YzkyMS4uZDg4YWE4
M2IyYTU0ZmYyYTg0MmEyYTVmYzU0NmQ4NzE0ODU1MmFiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CkBA
IC0xMTgsNyArMTE4LDcgQEAgc2V0KFdlYktpdF9NRVNTQUdFU19JTl9GSUxFUwogICAgIE5ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmlu
CiAgICAgTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24ubWVzc2FnZXMuaW4KIAotICAgIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3Rv
cmFnZU1hbmFnZXIubWVzc2FnZXMuaW4KKyAgICBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0
b3JhZ2VNYW5hZ2VyU2V0Lm1lc3NhZ2VzLmluCiAKICAgICBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9D
YWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJL
aXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCAwZmI4NDIzYjVjY2NmN2Qy
NjMzOTQyNWNkN2E3M2Y0YjJjMGQyZTg5Li5lZWVmMzAyYmM0ZDczMDcwODhjNDQ5YTI3YzdhNDI3
YTA0YjAxZWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0
LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2Zp
bGVsaXN0CkBAIC0yNiw2ICsyNiw3IEBAICQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5tZXNzYWdlcy5pbgogJChQUk9KRUNU
X0RJUikvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24u
bWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElS
KS9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLm1lc3NhZ2VzLmluCisk
KFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0
Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0
b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9OZXR3b3Jr
UHJvY2Vzcy9tYWMvY29tLmFwcGxlLldlYktpdC5OZXR3b3JrUHJvY2Vzcy5zYi5pbgogJChQUk9K
RUNUX0RJUikvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIubWVzc2Fn
ZXMuaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0Lnhj
ZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0
CmluZGV4IGZlMGE2YzAwNDAyYzUzNTU0MDU0NTE0OTFkNGQ4ZGY3NDQ3M2M3OTMuLjM1Y2RjNTJh
MjBmNmQ3YjcyZjM1ZmZiODNmYmIyY2NlZDExODhhZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9E
ZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtOTAsNiArOTAsOCBAQCAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9TdG9yYWdlQXJlYU1hcE1lc3Nh
Z2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJL
aXQyL1N0b3JhZ2VBcmVhTWFwTWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdDIvU3RvcmFnZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9TdG9yYWdlTWFuYWdlck1l
c3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1N0
b3JhZ2VNYW5hZ2VyU2V0TWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvU3RvcmFnZU1hbmFnZXJTZXRNZXNzYWdlcy5oCiAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9UZXh0Q2hlY2tpbmdDb250
cm9sbGVyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViS2l0Mi9UZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHlNZXNzYWdlcy5o
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9Vc2VyTWVkaWFD
YXB0dXJlTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFr
ZQppbmRleCA1MzkzYzViZDdmMDk3OTQ1MDAyZjEwMzIyZWZjZTA1MzE2MzJjM2ZmLi45ZGU3MDQy
NjZhZmVlNTEzNmU2NWU4NDc4MWI1YTAyNTI1MTU3YWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNl
cy5tYWtlCkBAIC0xMzYsNyArMTM2LDcgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAgICAgU2Vy
dmljZVdvcmtlckZldGNoVGFzayBcCiAgICAgU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlciBc
CiAgICAgU3RvcmFnZUFyZWFNYXAgXAotICAgIFN0b3JhZ2VNYW5hZ2VyIFwKKyAgICBTdG9yYWdl
TWFuYWdlclNldCBcCiAgICAgVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5IFwKICAgICBVc2Vy
TWVkaWFDYXB0dXJlTWFuYWdlciBcCiAgICAgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eSBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDkzM2MzYWViMmUyZmM5MzRkNmJjYTk1
NjYxNTkzMWMyYTBiNTE4ZjQuLjI4NDRkZGY5YTI4ODU1NWQ0ZmExNzU3ODg1MjFhZmE2YTQzYWZh
NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC00OSw3ICs0OSw2IEBACiAjaW5j
bHVkZSAiUGluZ0xvYWQuaCIKICNpbmNsdWRlICJQcmVjb25uZWN0VGFzay5oIgogI2luY2x1ZGUg
IlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tNZXNzYWdlcy5oIgotI2luY2x1ZGUgIlN0b3JhZ2VNYW5h
Z2VyLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2Vi
RXJyb3JzLmgiCiAjaW5jbHVkZSAiV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50LmgiCkBAIC0yOTks
NyArMjk4LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkQ2xvc2Uo
SVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogICAgIC8vIHJvb3QgYWN0aXZpdHkgdHJhY2tl
cnMuCiAgICAgc3RvcEFsbE5ldHdvcmtBY3Rpdml0eVRyYWNraW5nKCk7CiAKLSAgICBtX25ldHdv
cmtQcm9jZXNzLT53ZWJQcm9jZXNzV2FzRGlzY29ubmVjdGVkKGNvbm5lY3Rpb24pOworICAgIG1f
bmV0d29ya1Byb2Nlc3MtPmNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NDbG9zZWQoY29ubmVjdGlvbik7
CiAKICAgICBtX25ldHdvcmtQcm9jZXNzLT5uZXR3b3JrQmxvYlJlZ2lzdHJ5KCkuY29ubmVjdGlv
blRvV2ViUHJvY2Vzc0RpZENsb3NlKCp0aGlzKTsKICAgICBtX25ldHdvcmtQcm9jZXNzLT5yZW1v
dmVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcygqdGhpcyk7CkBAIC04OTIsMTkgKzg5MSw0
IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaFNXU2VydmVy
Q29ubmVjdGlvbihQQUw6OlNlc3Npb25JRCBzCiB9CiAjZW5kaWYKIAotdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6d2ViUGFnZVdhc0FkZGVkKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBvbGRQ
YWdlSUQpCi17Ci0gICAgbV9uZXR3b3JrUHJvY2Vzcy0+d2ViUGFnZVdhc0FkZGVkKG1fY29ubmVj
dGlvbi5nZXQoKSwgc2Vzc2lvbklELCBwYWdlSUQsIG9sZFBhZ2VJRCk7Ci19Ci0KLXZvaWQgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OndlYlBhZ2VXYXNSZW1vdmVkKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQotewotICAgIG1fbmV0d29ya1By
b2Nlc3MtPndlYlBhZ2VXYXNSZW1vdmVkKG1fY29ubmVjdGlvbi5nZXQoKSwgc2Vzc2lvbklELCBw
YWdlSUQpOwotfQotCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp3ZWJQcm9j
ZXNzU2Vzc2lvbkNoYW5nZWQoUEFMOjpTZXNzaW9uSUQgbmV3U2Vzc2lvbklELCBjb25zdCBWZWN0
b3I8UGFnZUlkZW50aWZpZXI+JiBwYWdlcykKLXsKLSAgICBtX25ldHdvcmtQcm9jZXNzLT53ZWJQ
cm9jZXNzU2Vzc2lvbkNoYW5nZWQobV9jb25uZWN0aW9uLmdldCgpLCBuZXdTZXNzaW9uSUQsIHBh
Z2VzKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgK
aW5kZXggZDdiMmYxYjYzYmM3YjA0ZmUwMzBlMDM2NWUyMTM2Zjc1YWI0OGNlNi4uNTYxMmVmZDFh
Y2YyNjlhZTE5MmViOTQ4Y2U0Yjk2ZDVmODQ0Nzc4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
aApAQCAtMTQyLDEwICsxNDIsNiBAQCBwdWJsaWM6CiAgICAgVmVjdG9yPFJlZlB0cjxXZWJDb3Jl
OjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBmaWxlc0luQmxvYihjb25zdCBVUkwmKTsKICAgICBW
ZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+IHJlc29sdmVCbG9i
UmVmZXJlbmNlcyhjb25zdCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYpOwogCi0gICAg
dm9pZCB3ZWJQYWdlV2FzQWRkZWQoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBvbGRQYWdlSUQpOwotICAgIHZvaWQgd2ViUGFn
ZVdhc1JlbW92ZWQoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKLSAg
ICB2b2lkIHdlYlByb2Nlc3NTZXNzaW9uQ2hhbmdlZChQQUw6OlNlc3Npb25JRCBuZXdTZXNzaW9u
SUQsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4mIHBhZ2VzKTsKLQogICAg
IHZvaWQgcmVtb3ZlU29ja2V0Q2hhbm5lbCh1aW50NjRfdCBpZGVudGlmaWVyKTsKIAogcHJpdmF0
ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGZhMmMz
MWE0MTNhZjYyMTk0OTNjZDRjZWEyYmM3YzRhZmE5MjA1OTAuLjc1ZTI0ZGRhOGUzODQ0Y2U3OGU2
MWQzMmM4OTkwNjk5NjNlYjY5MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5t
ZXNzYWdlcy5pbgpAQCAtODYsOCArODYsNCBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQogICAgIEVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQpIC0+IChXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIHNlcnZlckNvbm5l
Y3Rpb25JZGVudGlmaWVyKSBTeW5jaHJvbm91cwogI2VuZGlmCi0KLSAgICBXZWJQYWdlV2FzQWRk
ZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdl
SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG9sZFBhZ2VJRCkKLSAgICBXZWJQYWdlV2FzUmVt
b3ZlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCkKLSAgICBXZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQoUEFMOjpTZXNzaW9uSUQgbmV3U2Vz
c2lvbklELCBWZWN0b3I8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VzKQogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCBmZjBm
ODM4YjRhOTIzYTkwYWI4M2RkM2RjYzNkZGQ2MmUxZDYyZjYzLi5jNmIxYjcwMTVhMGQ5MTllYWIy
Mjc2ZGRkMzI1ZDg3YTVmMWYwYzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtNTMsOCArNTMsNyBAQAogI2luY2x1ZGUgIlNob3Vs
ZEdyYW5kZmF0aGVyU3RhdGlzdGljcy5oIgogI2luY2x1ZGUgIlN0YXRpc3RpY3NEYXRhLmgiCiAj
aW5jbHVkZSAiU3RvcmFnZUFjY2Vzc1N0YXR1cy5oIgotI2luY2x1ZGUgIlN0b3JhZ2VNYW5hZ2Vy
LmgiCi0jaW5jbHVkZSAiU3RvcmFnZU1hbmFnZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlN0b3Jh
Z2VNYW5hZ2VyU2V0LmgiCiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlci5oIgogI2luY2x1ZGUg
IldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2xNZXNzYWdl
cy5oIgpAQCAtMTMyLDYgKzEzMSw3IEBAIHN0YXRpYyB2b2lkIGNhbGxFeGl0U29vbihJUEM6OkNv
bm5lY3Rpb24qKQogCiBOZXR3b3JrUHJvY2Vzczo6TmV0d29ya1Byb2Nlc3MoQXV4aWxpYXJ5UHJv
Y2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgOiBtX2Rvd25s
b2FkTWFuYWdlcigqdGhpcykKKyAgICAsIG1fc3RvcmFnZU1hbmFnZXJTZXQoU3RvcmFnZU1hbmFn
ZXJTZXQ6OmNyZWF0ZSgpKQogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCiAgICAgLCBt
X25ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyKCp0aGlzKQogI2VuZGlmCkBAIC0xNzIsNiAr
MTcyLDggQEAgTmV0d29ya1Byb2Nlc3M6On5OZXR3b3JrUHJvY2VzcygpCiAgICAgICAgIGZvciAo
YXV0byYgY2FsbGJhY2sgOiBjYWxsYmFja3MpCiAgICAgICAgICAgICBjYWxsYmFjayhTdHJpbmcg
eyB9KTsKICAgICB9CisKKyAgICBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT53YWl0VW50aWxUYXNrc0Zp
bmlzaGVkKCk7CiB9CiAKIEF1dGhlbnRpY2F0aW9uTWFuYWdlciYgTmV0d29ya1Byb2Nlc3M6OmF1
dGhlbnRpY2F0aW9uTWFuYWdlcigpCkBAIC0zMTYsNiArMzE4LDEwIEBAIHZvaWQgTmV0d29ya1By
b2Nlc3M6OmluaXRpYWxpemVOZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycyYmCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KHBhcmFt
ZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJz
LnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogCiAgICAg
YXV0byBzZXNzaW9uSUQgPSBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLm5l
dHdvcmtTZXNzaW9uUGFyYW1ldGVycy5zZXNzaW9uSUQ7CisgICAgCisgICAgU2FuZGJveEV4dGVu
c2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFt
ZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBtX3N0b3Jh
Z2VNYW5hZ2VyU2V0LT5hZGQoc2Vzc2lvbklELCBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQ
YXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeSk7CisKICAgICBzZXRTZXNzaW9uKHNlc3Np
b25JRCwgTmV0d29ya1Nlc3Npb246OmNyZWF0ZSgqdGhpcywgV1RGTW92ZShwYXJhbWV0ZXJzLmRl
ZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycykpKTsKIAog
I2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpAQCAtNDQ1LDYgKzQ1MSw4IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKGJvb2wgaXNT
ZXJ2aWNlV29ya2VyUHJvCiAgICAgVU5VU0VEX1BBUkFNKGlzU2VydmljZVdvcmtlclByb2Nlc3Mp
OwogICAgIFVOVVNFRF9QQVJBTShyZWdpc3RyYWJsZURvbWFpbik7CiAjZW5kaWYKKworICAgIG1f
c3RvcmFnZU1hbmFnZXJTZXQtPmFkZENvbm5lY3Rpb24obV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMu
bGFzdCgpLT5jb25uZWN0aW9uKCkpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVhckNh
Y2hlZENyZWRlbnRpYWxzKCkKQEAgLTQ3Myw2ICs0ODEsOSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
OjphZGRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJiYgcGFyYW1l
dGVycwogICAgICAgICBhZGRTZXJ2aWNlV29ya2VyU2Vzc2lvbihwYXJhbWV0ZXJzLm5ldHdvcmtT
ZXNzaW9uUGFyYW1ldGVycy5zZXNzaW9uSUQsIHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRpcmVjdG9yeSwgcGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGly
ZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKICNlbmRpZgogCisgICAgU2FuZGJveEV4dGVuc2lvbjo6
Y29uc3VtZVBlcm1hbmVudGx5KHBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5z
aW9uSGFuZGxlKTsKKyAgICBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5hZGQocGFyYW1ldGVycy5uZXR3
b3JrU2Vzc2lvblBhcmFtZXRlcnMuc2Vzc2lvbklELCBwYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURp
cmVjdG9yeSk7CisKICAgICBpbml0aWFsaXplU3RvcmFnZVF1b3RhKHBhcmFtZXRlcnMpOwogCiAg
ICAgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVdlYnNpdGVEYXRhU3RvcmVTZXNzaW9u
KCp0aGlzLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKQEAgLTYwOCw2ICs2MTksOCBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpkZXN0cm95U2Vzc2lvbihjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lv
bklEKQogI2VuZGlmCiAKICAgICBtX3N0b3JhZ2VRdW90YU1hbmFnZXJzLnJlbW92ZShzZXNzaW9u
SUQpOworCisgICAgbV9zdG9yYWdlTWFuYWdlclNldC0+cmVtb3ZlKHNlc3Npb25JRCk7CiB9CiAK
ICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQpAQCAtMTA0MCwxNCArMTA1Mywx
MiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVhclVzZXJJbnRlcmFjdGlvbihQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdAogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpoYXNM
b2NhbFN0b3JhZ2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewotICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lv
bklEKSkgewotICAgICAgICBzZXNzaW9uLT5zdG9yYWdlTWFuYWdlcigpLmdldExvY2FsU3RvcmFn
ZU9yaWdpbnMoW2RvbWFpbiwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oYXV0byYmIG9yaWdpbnMpIG11dGFibGUgewotICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoV1RGOjphbnlPZihvcmlnaW5zLCBbJmRvbWFpbl0oYXV0byYgb3JpZ2luKSB7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIGRvbWFpbi5tYXRjaGVzKG9yaWdpbik7Ci0gICAgICAgICAg
ICB9KSk7Ci0gICAgICAgIH0pOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIG1fc3RvcmFn
ZU1hbmFnZXJTZXQtPmdldExvY2FsU3RvcmFnZU9yaWdpbnMoc2Vzc2lvbklELCBbZG9tYWluLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvJiYgb3Jp
Z2lucykgbXV0YWJsZSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6YW55T2Yob3Jp
Z2lucywgWyZkb21haW5dKGF1dG8mIG9yaWdpbikgeworICAgICAgICAgICAgcmV0dXJuIGRvbWFp
bi5tYXRjaGVzKG9yaWdpbik7CisgICAgICAgIH0pKTsKKyAgICB9KTsKKwogICAgIGNvbXBsZXRp
b25IYW5kbGVyKGZhbHNlKTsKIH0KIApAQCAtMTMxNiwxNCArMTMyNywxMyBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpmZXRjaFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0
aW9uU2V0PFdlYnNpdAogCiAgICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Np
b25JRCk7CiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBl
OjpTZXNzaW9uU3RvcmFnZSkgJiYgc2Vzc2lvbikgewotICAgICAgICBzZXNzaW9uLT5zdG9yYWdl
TWFuYWdlcigpLmdldFNlc3Npb25TdG9yYWdlT3JpZ2lucyhbY2FsbGJhY2tBZ2dyZWdhdG9yID0g
Y2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0oYXV0byYmIG9yaWdpbnMpIHsKKyAgICAgICAg
bV9zdG9yYWdlTWFuYWdlclNldC0+Z2V0U2Vzc2lvblN0b3JhZ2VPcmlnaW5zKHNlc3Npb25JRCwg
W2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldKGF1dG8m
JiBvcmlnaW5zKSB7CiAgICAgICAgICAgICB3aGlsZSAoIW9yaWdpbnMuaXNFbXB0eSgpKQogICAg
ICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YS5lbnRyaWVzLmFw
cGVuZChXZWJzaXRlRGF0YTo6RW50cnkgeyBvcmlnaW5zLnRha2VBbnkoKSwgV2Vic2l0ZURhdGFU
eXBlOjpTZXNzaW9uU3RvcmFnZSwgMCB9KTsKICAgICAgICAgfSk7CiAgICAgfQotCiAgICAgaWYg
KHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpMb2NhbFN0b3JhZ2Up
ICYmIHNlc3Npb24pIHsKLSAgICAgICAgc2Vzc2lvbi0+c3RvcmFnZU1hbmFnZXIoKS5nZXRMb2Nh
bFN0b3JhZ2VPcmlnaW5zKFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3Iu
Y29weVJlZigpXShhdXRvJiYgb3JpZ2lucykgeworICAgICAgICBtX3N0b3JhZ2VNYW5hZ2VyU2V0
LT5nZXRMb2NhbFN0b3JhZ2VPcmlnaW5zKHNlc3Npb25JRCwgW2NhbGxiYWNrQWdncmVnYXRvciA9
IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldKGF1dG8mJiBvcmlnaW5zKSB7CiAgICAgICAg
ICAgICB3aGlsZSAoIW9yaWdpbnMuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIGNhbGxiYWNr
QWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVuZChXZWJzaXRlRGF0YTo6RW50
cnkgeyBvcmlnaW5zLnRha2VBbnkoKSwgV2Vic2l0ZURhdGFUeXBlOjpMb2NhbFN0b3JhZ2UsIDAg
fSk7CiAgICAgICAgIH0pOwpAQCAtMTQwMCwxMCArMTQxMCwxMCBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpkZWxldGVXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNl
dDxXZWJzaQogCiAgICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7
CiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpTZXNz
aW9uU3RvcmFnZSkgJiYgc2Vzc2lvbikKLSAgICAgICAgc2Vzc2lvbi0+c3RvcmFnZU1hbmFnZXIo
KS5kZWxldGVTZXNzaW9uU3RvcmFnZU9yaWdpbnMoW2NsZWFyVGFza3NIYW5kbGVyID0gY2xlYXJU
YXNrc0hhbmRsZXIuY29weVJlZigpXSB7IH0pOworICAgICAgICBtX3N0b3JhZ2VNYW5hZ2VyU2V0
LT5kZWxldGVTZXNzaW9uU3RvcmFnZShzZXNzaW9uSUQsIFtjbGVhclRhc2tzSGFuZGxlciA9IGNs
ZWFyVGFza3NIYW5kbGVyLmNvcHlSZWYoKV0geyB9KTsKIAogICAgIGlmICh3ZWJzaXRlRGF0YVR5
cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6TG9jYWxTdG9yYWdlKSAmJiBzZXNzaW9uKQot
ICAgICAgICBzZXNzaW9uLT5zdG9yYWdlTWFuYWdlcigpLmRlbGV0ZUxvY2FsU3RvcmFnZU9yaWdp
bnNNb2RpZmllZFNpbmNlKG1vZGlmaWVkU2luY2UsIFtjbGVhclRhc2tzSGFuZGxlciA9IGNsZWFy
VGFza3NIYW5kbGVyLmNvcHlSZWYoKV0geyB9KTsKKyAgICAgICAgbV9zdG9yYWdlTWFuYWdlclNl
dC0+ZGVsZXRlTG9jYWxTdG9yYWdlTW9kaWZpZWRTaW5jZShzZXNzaW9uSUQsIG1vZGlmaWVkU2lu
Y2UsIFtjbGVhclRhc2tzSGFuZGxlciA9IGNsZWFyVGFza3NIYW5kbGVyLmNvcHlSZWYoKV0geyB9
KTsKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogICAgIGlmICh3ZWJzaXRlRGF0YVR5
cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKSAmJiAhc2Vz
c2lvbklELmlzRXBoZW1lcmFsKCkpCkBAIC0xNTAwLDEwICsxNTEwLDEwIEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIE9wdGlvCiAKICAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lv
bklEKTsKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6
OlNlc3Npb25TdG9yYWdlKSAmJiBzZXNzaW9uKQotICAgICAgICBzZXNzaW9uLT5zdG9yYWdlTWFu
YWdlcigpLmRlbGV0ZVNlc3Npb25TdG9yYWdlRW50cmllc0Zvck9yaWdpbnMob3JpZ2luRGF0YXMs
IFtjbGVhclRhc2tzSGFuZGxlciA9IGNsZWFyVGFza3NIYW5kbGVyLmNvcHlSZWYoKV0geyB9KTsK
KyAgICAgICAgbV9zdG9yYWdlTWFuYWdlclNldC0+ZGVsZXRlU2Vzc2lvblN0b3JhZ2VGb3JPcmln
aW5zKHNlc3Npb25JRCwgb3JpZ2luRGF0YXMsIFtjbGVhclRhc2tzSGFuZGxlciA9IGNsZWFyVGFz
a3NIYW5kbGVyLmNvcHlSZWYoKV0geyB9KTsKIAogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNv
bnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6TG9jYWxTdG9yYWdlKSAmJiBzZXNzaW9uKQotICAgICAg
ICBzZXNzaW9uLT5zdG9yYWdlTWFuYWdlcigpLmRlbGV0ZUxvY2FsU3RvcmFnZUVudHJpZXNGb3JP
cmlnaW5zKG9yaWdpbkRhdGFzLCBbY2xlYXJUYXNrc0hhbmRsZXIgPSBjbGVhclRhc2tzSGFuZGxl
ci5jb3B5UmVmKCldIHsgfSk7CisgICAgICAgIG1fc3RvcmFnZU1hbmFnZXJTZXQtPmRlbGV0ZUxv
Y2FsU3RvcmFnZUZvck9yaWdpbnMoc2Vzc2lvbklELCBvcmlnaW5EYXRhcywgW2NsZWFyVGFza3NI
YW5kbGVyID0gY2xlYXJUYXNrc0hhbmRsZXIuY29weVJlZigpXSB7IH0pOwogCiAjaWYgRU5BQkxF
KElOREVYRURfREFUQUJBU0UpCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vi
c2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpICYmICFzZXNzaW9uSUQuaXNFcGhlbWVy
YWwoKSkKQEAgLTE3MDEsMTggKzE3MTEsMTcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRl
V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2kKIAog
ICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOwogICAgIGlmIChz
ZXNzaW9uKSB7Ci0gICAgICAgIGF1dG8mIHN0b3JhZ2VNYW5hZ2VyID0gc2Vzc2lvbi0+c3RvcmFn
ZU1hbmFnZXIoKTsKICAgICAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0
ZURhdGFUeXBlOjpTZXNzaW9uU3RvcmFnZSkpIHsKLSAgICAgICAgICAgIHN0b3JhZ2VNYW5hZ2Vy
LmdldFNlc3Npb25TdG9yYWdlT3JpZ2lucyhbc3RvcmFnZU1hbmFnZXIgPSBtYWtlUmVmUHRyKHN0
b3JhZ2VNYW5hZ2VyKSwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNv
cHlSZWYoKSwgZG9tYWluc1RvRGVsZXRlQWxsQnV0Q29va2llc0Zvcl0oYXV0byYmIG9yaWdpbnMp
IHsKKyAgICAgICAgICAgIG1fc3RvcmFnZU1hbmFnZXJTZXQtPmdldFNlc3Npb25TdG9yYWdlT3Jp
Z2lucyhzZXNzaW9uSUQsIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHRoaXMsIHNl
c3Npb25JRCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYo
KSwgZG9tYWluc1RvRGVsZXRlQWxsQnV0Q29va2llc0Zvcl0oYXV0byYmIG9yaWdpbnMpIHsKICAg
ICAgICAgICAgICAgICBhdXRvIG9yaWdpbnNUb0RlbGV0ZSA9IGZpbHRlckZvclJlZ2lzdHJhYmxl
RG9tYWlucyhvcmlnaW5zLCBkb21haW5zVG9EZWxldGVBbGxCdXRDb29raWVzRm9yLCBjYWxsYmFj
a0FnZ3JlZ2F0b3ItPm1fZG9tYWlucyk7Ci0gICAgICAgICAgICAgICAgc3RvcmFnZU1hbmFnZXIt
PmRlbGV0ZVNlc3Npb25TdG9yYWdlRW50cmllc0Zvck9yaWdpbnMob3JpZ2luc1RvRGVsZXRlLCBb
Y2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsK
KyAgICAgICAgICAgICAgICBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5kZWxldGVTZXNzaW9uU3RvcmFn
ZUZvck9yaWdpbnMoc2Vzc2lvbklELCBvcmlnaW5zVG9EZWxldGUsIFtjYWxsYmFja0FnZ3JlZ2F0
b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwogICAgICAgICAgICAgfSk7
CiAgICAgICAgIH0KIAogICAgICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJz
aXRlRGF0YVR5cGU6OkxvY2FsU3RvcmFnZSkpIHsKLSAgICAgICAgICAgIHN0b3JhZ2VNYW5hZ2Vy
LmdldExvY2FsU3RvcmFnZU9yaWdpbnMoW3N0b3JhZ2VNYW5hZ2VyID0gbWFrZVJlZlB0cihzdG9y
YWdlTWFuYWdlciksIGNhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5
UmVmKCksIGRvbWFpbnNUb0RlbGV0ZUFsbEJ1dENvb2tpZXNGb3JdKGF1dG8mJiBvcmlnaW5zKSB7
CisgICAgICAgICAgICBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5nZXRMb2NhbFN0b3JhZ2VPcmlnaW5z
KHNlc3Npb25JRCwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdGhpcywgc2Vzc2lv
bklELCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpLCBk
b21haW5zVG9EZWxldGVBbGxCdXRDb29raWVzRm9yXShhdXRvJiYgb3JpZ2lucykgewogICAgICAg
ICAgICAgICAgIGF1dG8gb3JpZ2luc1RvRGVsZXRlID0gZmlsdGVyRm9yUmVnaXN0cmFibGVEb21h
aW5zKG9yaWdpbnMsIGRvbWFpbnNUb0RlbGV0ZUFsbEJ1dENvb2tpZXNGb3IsIGNhbGxiYWNrQWdn
cmVnYXRvci0+bV9kb21haW5zKTsKLSAgICAgICAgICAgICAgICBzdG9yYWdlTWFuYWdlci0+ZGVs
ZXRlTG9jYWxTdG9yYWdlRW50cmllc0Zvck9yaWdpbnMob3JpZ2luc1RvRGVsZXRlLCBbY2FsbGJh
Y2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKKyAgICAg
ICAgICAgICAgICBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5kZWxldGVMb2NhbFN0b3JhZ2VGb3JPcmln
aW5zKHNlc3Npb25JRCwgb3JpZ2luc1RvRGVsZXRlLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2Fs
bGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKICAgICAgICAgICAgIH0pOwogICAgICAg
ICB9CiAgICAgfQpAQCAtMjA4NCw4ICsyMDkzLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6YWN0
dWFsUHJlcGFyZVRvU3VzcGVuZChTaG91bGRBY2tub3dsZWRnZVdoZW5SZWFkeVRvU3VzcGVuZAog
ICAgIH0KICNlbmRpZgogCi0gICAgZm9yIChhdXRvJiBzZXNzaW9uIDogbV9uZXR3b3JrU2Vzc2lv
bnMpCi0gICAgICAgIHNlc3Npb24udmFsdWUtPnN0b3JhZ2VNYW5hZ2VyKCkuc3VzcGVuZChbY2Fs
bGJhY2tBZ2dyZWdhdG9yXSB7IH0pOworICAgIG1fc3RvcmFnZU1hbmFnZXJTZXQtPnN1c3BlbmQo
W2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJv
Y2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseSgpCkBAIC0yMTU1LDggKzIxNjMsNyBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpyZXN1bWUoKQogICAgICAgICBzZXJ2ZXItPnJlc3VtZSgpOwogI2VuZGlm
CiAKLSAgICBmb3IgKGF1dG8mIHNlc3Npb24gOiBtX25ldHdvcmtTZXNzaW9ucykKLSAgICAgICAg
c2Vzc2lvbi52YWx1ZS0+c3RvcmFnZU1hbmFnZXIoKS5yZXN1bWUoKTsKKyAgICBtX3N0b3JhZ2VN
YW5hZ2VyU2V0LT5yZXN1bWUoKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlZmV0Y2hE
TlMoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKQEAgLTI2NjksNjggKzI2NzYsNiBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpyZW1vdmVLZXB0QWxpdmVMb2FkKE5ldHdvcmtSZXNvdXJjZUxvYWRlciYg
bG9hZGVyKQogICAgICAgICBzZXNzaW9uLT5yZW1vdmVLZXB0QWxpdmVMb2FkKGxvYWRlcik7CiB9
CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OndlYlBhZ2VXYXNBZGRlZChJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUGFnZUlkZW50aWZpZXIgcGFn
ZUlELCBQYWdlSWRlbnRpZmllciBvbGRQYWdlSUQpCi17Ci0gICAgaWYgKCFwYWdlSUQgfHwgIW9s
ZFBhZ2VJRCkgewotICAgICAgICBMT0dfRVJST1IoIkNhbm5vdCBhZGQgcGFnZSB3aXRoIGludmFs
aWQgaWQiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGF1dG8qIHNlc3Npb24gPSBu
ZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOwotICAgIGlmICghc2Vzc2lvbikgewotICAgICAgICBM
T0dfRVJST1IoIkNhbm5vdCBhZGQgcGFnZSB0byBhbiB1bmtub3duIHNlc3Npb24iKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLSAgICBhdXRvJiBzdG9yYWdlTWFuYWdlciA9IHNlc3Npb24tPnN0
b3JhZ2VNYW5hZ2VyKCk7Ci0KLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1fc2Vzc2lvbkJ5Q29ubmVj
dGlvbi5hZGQoY29ubmVjdGlvbi51bmlxdWVJRCgpLCBzZXNzaW9uSUQpOwotICAgIEFTU0VSVF9V
TlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID09IHNlc3Npb25JRCk7
Ci0KLSAgICBzdG9yYWdlTWFuYWdlci5jcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShwYWdl
SUQudG9VSW50NjQoKSwgc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKTsKLSAg
ICBzdG9yYWdlTWFuYWdlci5hZGRBbGxvd2VkU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0
aW9uKHBhZ2VJRC50b1VJbnQ2NCgpLCBjb25uZWN0aW9uKTsKLSAgICBpZiAocGFnZUlEICE9IG9s
ZFBhZ2VJRCkKLSAgICAgICAgc3RvcmFnZU1hbmFnZXIuY2xvbmVTZXNzaW9uU3RvcmFnZU5hbWVz
cGFjZShvbGRQYWdlSUQudG9VSW50NjQoKSwgcGFnZUlELnRvVUludDY0KCkpOwotfQotCi12b2lk
IE5ldHdvcmtQcm9jZXNzOjp3ZWJQYWdlV2FzUmVtb3ZlZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQot
ewotICAgIGlmICghcGFnZUlEKSB7Ci0gICAgICAgIExPR19FUlJPUigiQ2Fubm90IHJlbW92ZSBw
YWdlIHdpdGggaW52YWxpZCBpZCIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgYXV0
byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7Ci0gICAgLy8gU2Vzc2lvbiBj
YW4gYmUgZGVzdHJveWVkIGJlZm9yZSBwYWdlIGdldHMgcmVtb3ZlZC4KLSAgICBpZiAoIXNlc3Np
b24pCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8mIHN0b3JhZ2VNYW5hZ2VyID0gc2Vzc2lv
bi0+c3RvcmFnZU1hbmFnZXIoKTsKLSAgICBzdG9yYWdlTWFuYWdlci5yZW1vdmVBbGxvd2VkU2Vz
c2lvblN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0aW9uKHBhZ2VJRC50b1VJbnQ2NCgpLCBjb25uZWN0
aW9uKTsKLSAgICBzdG9yYWdlTWFuYWdlci5kZXN0cm95U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2Uo
cGFnZUlELnRvVUludDY0KCkpOwotfQotCi12b2lkIE5ldHdvcmtQcm9jZXNzOjp3ZWJQcm9jZXNz
V2FzRGlzY29ubmVjdGVkKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKLXsKLSAgICBhdXRv
IHNlc3Npb25JRCA9IG1fc2Vzc2lvbkJ5Q29ubmVjdGlvbi50YWtlKGNvbm5lY3Rpb24udW5pcXVl
SUQoKSk7Ci0gICAgaWYgKCFzZXNzaW9uSUQuaXNWYWxpZCgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpCi0gICAg
ICAgIHNlc3Npb24tPnN0b3JhZ2VNYW5hZ2VyKCkucHJvY2Vzc0RpZENsb3NlQ29ubmVjdGlvbihj
b25uZWN0aW9uKTsKLX0KLQotdm9pZCBOZXR3b3JrUHJvY2Vzczo6d2ViUHJvY2Vzc1Nlc3Npb25D
aGFuZ2VkKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgUEFMOjpTZXNzaW9uSUQgbmV3U2Vz
c2lvbklELCBjb25zdCBWZWN0b3I8UGFnZUlkZW50aWZpZXI+JiBwYWdlSURzKQotewotICAgIGF1
dG8gY29ubmVjdGlvbklEID0gY29ubmVjdGlvbi51bmlxdWVJRCgpOwotICAgIEFTU0VSVChtX3Nl
c3Npb25CeUNvbm5lY3Rpb24uY29udGFpbnMoY29ubmVjdGlvbklEKSk7Ci0gICAgaWYgKG1fc2Vz
c2lvbkJ5Q29ubmVjdGlvbi5nZXQoY29ubmVjdGlvbklEKSA9PSBuZXdTZXNzaW9uSUQpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIHdlYlByb2Nlc3NXYXNEaXNjb25uZWN0ZWQoY29ubmVjdGlvbik7
Ci0gICAgZm9yIChhdXRvJiBwYWdlSUQgOiBwYWdlSURzKQotICAgICAgICB3ZWJQYWdlV2FzQWRk
ZWQoY29ubmVjdGlvbiwgbmV3U2Vzc2lvbklELCBwYWdlSUQsIHBhZ2VJRCk7Ci19Ci0KIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OmdldExvY2FsU3RvcmFnZU9yaWdpbkRldGFpbHMoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxMb2NhbFN0b3JhZ2VE
YXRhYmFzZVRyYWNrZXI6Ok9yaWdpbkRldGFpbHM+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOwpAQCAtMjcz
OSwxMCArMjY4NCwxNCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpnZXRMb2NhbFN0b3JhZ2VPcmln
aW5EZXRhaWxzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcAogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgYXV0byYgc3RvcmFnZU1hbmFnZXIgPSBzZXNzaW9uLT5zdG9yYWdlTWFu
YWdlcigpOwotICAgIHN0b3JhZ2VNYW5hZ2VyLmdldExvY2FsU3RvcmFnZU9yaWdpbkRldGFpbHMo
W2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1dG8mJiBk
ZXRhaWxzKSBtdXRhYmxlIHsKKyAgICBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5nZXRMb2NhbFN0b3Jh
Z2VPcmlnaW5EZXRhaWxzKHNlc3Npb25JRCwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKGF1dG8mJiBkZXRhaWxzKSBtdXRhYmxlIHsKICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoV1RGTW92ZShkZXRhaWxzKSk7CiAgICAgfSk7CiB9CiAKK3ZvaWQgTmV0
d29ya1Byb2Nlc3M6OmNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NDbG9zZWQoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uKQoreworICAgIG1fc3RvcmFnZU1hbmFnZXJTZXQtPnJlbW92ZUNvbm5lY3Rp
b24oY29ubmVjdGlvbik7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IDRhMWMzZjQ5YzdhY2M3
ODJmMTU1NjI5Njc1ZWYxNjMxZGQ4Nzc3OGQuLjVkZmMxY2YxZGM1ZjI2YzVhMTUwMDc4OGRiOTkw
M2VjZTM0ZGM2YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmgKQEAgLTk4LDYgKzk4LDcgQEAgY2xhc3MgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M7CiBjbGFzcyBOZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQ7CiBjbGFzcyBOZXR3b3JrUHJv
eGltaXR5TWFuYWdlcjsKIGNsYXNzIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjsKK2NsYXNzIFN0b3Jh
Z2VNYW5hZ2VyU2V0OwogY2xhc3MgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOwogY2xhc3MgV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOwogZW51bSBjbGFzcyBTaG91bGRHcmFuZGZhdGhlclN0
YXRpc3RpY3MgOiBib29sOwpAQCAtMjY5LDEwICsyNzAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRTZXNzaW9uSXNDb250cm9sbGVkQnlBdXRvbWF0aW9uKFBBTDo6U2Vzc2lvbklELCBib29sKTsK
ICAgICBib29sIHNlc3Npb25Jc0NvbnRyb2xsZWRCeUF1dG9tYXRpb24oUEFMOjpTZXNzaW9uSUQp
IGNvbnN0OwogCi0gICAgdm9pZCB3ZWJQYWdlV2FzQWRkZWQoSVBDOjpDb25uZWN0aW9uJiwgUEFM
OjpTZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRp
Zmllcik7Ci0gICAgdm9pZCB3ZWJQYWdlV2FzUmVtb3ZlZChJUEM6OkNvbm5lY3Rpb24mLCBQQUw6
OlNlc3Npb25JRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwotICAgIHZvaWQgd2ViUHJvY2Vz
c1dhc0Rpc2Nvbm5lY3RlZChJUEM6OkNvbm5lY3Rpb24mKTsKLSAgICB2b2lkIHdlYlByb2Nlc3NT
ZXNzaW9uQ2hhbmdlZChJUEM6OkNvbm5lY3Rpb24mLCBQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVj
dG9yPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiYpOworICAgIHZvaWQgY29ubmVjdGlvblRvV2Vi
UHJvY2Vzc0Nsb3NlZChJUEM6OkNvbm5lY3Rpb24mKTsKICAgICB2b2lkIGdldExvY2FsU3RvcmFn
ZU9yaWdpbkRldGFpbHMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVj
dG9yPExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6T3JpZ2luRGV0YWlscz4mJik+JiYpOwog
CiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKQEAgLTUwMSw2ICs0OTksOCBAQCBwcml2
YXRlOgogICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdl
U2Vzc2lvbj4gbV9kZWZhdWx0TmV0d29ya1N0b3JhZ2VTZXNzaW9uOwogICAgIE5ldHdvcmtCbG9i
UmVnaXN0cnkgbV9uZXR3b3JrQmxvYlJlZ2lzdHJ5OwogCisgICAgUmVmUHRyPFN0b3JhZ2VNYW5h
Z2VyU2V0PiBtX3N0b3JhZ2VNYW5hZ2VyU2V0OworCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
dm9pZCBwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2Vzc0NvY29hKGNvbnN0IE5ldHdvcmtQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAgICAgdm9pZCBzZXRTdG9yYWdlQWNjZXNzQVBJ
RW5hYmxlZChib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U2Vzc2lvbi5jcHAKaW5kZXggNjYzNTcwYTk5MWQ5NDRiMzhkYjg1NGViMjdiZjA2ZjFjMWFmODNh
OC4uYTU1OGNlMWNkOGY4ODIxZmFjMjZhMDI5MjZiMDcwMDEzMDc5OTRkMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKQEAgLTMzLDcgKzMz
LDYgQEAKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oIgogI2luY2x1
ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIlBpbmdMb2FkLmgiCi0jaW5j
bHVkZSAiU3RvcmFnZU1hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNs
dWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5o
IgpAQCAtODIsNyArODEsNiBAQCBOZXR3b3JrU2Vzc2lvbjo6TmV0d29ya1Nlc3Npb24oTmV0d29y
a1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBjb25zdCBOZXR3b3JrU2VzcwogICAgIDogbV9zZXNz
aW9uSUQocGFyYW1ldGVycy5zZXNzaW9uSUQpCiAgICAgLCBtX25ldHdvcmtQcm9jZXNzKG5ldHdv
cmtQcm9jZXNzKQogICAgICwgbV9hZENsaWNrQXR0cmlidXRpb24obWFrZVVuaXF1ZVJlZjxBZENs
aWNrQXR0cmlidXRpb25NYW5hZ2VyPihwYXJhbWV0ZXJzLnNlc3Npb25JRCkpCi0gICAgLCBtX3N0
b3JhZ2VNYW5hZ2VyKFN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGUoU3RyaW5nKHBhcmFtZXRlcnMubG9j
YWxTdG9yYWdlRGlyZWN0b3J5KSkpCiB7CiAgICAgaWYgKCFtX3Nlc3Npb25JRC5pc0VwaGVtZXJh
bCgpKSB7CiAgICAgICAgIFN0cmluZyBuZXR3b3JrQ2FjaGVEaXJlY3RvcnkgPSBwYXJhbWV0ZXJz
Lm5ldHdvcmtDYWNoZURpcmVjdG9yeTsKQEAgLTk2LDcgKzk0LDYgQEAgTmV0d29ya1Nlc3Npb246
Ok5ldHdvcmtTZXNzaW9uKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgY29uc3QgTmV0
d29ya1Nlc3MKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmtDYWNoZSwgIkZh
aWxlZCB0byBpbml0aWFsaXplIHRoZSBXZWJLaXQgbmV0d29yayBkaXNrIGNhY2hlIik7CiAgICAg
fQogCi0gICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KHBhcmFtZXRlcnMu
bG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKICAgICBtX2FkQ2xpY2tBdHRy
aWJ1dGlvbi0+c2V0UGluZ0xvYWRGdW5jdGlvbihbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0
cih0aGlzKV0oTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiBsb2FkUGFyYW1ldGVycywg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7CiAg
ICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMTAsOSArMTA3
LDYgQEAgTmV0d29ya1Nlc3Npb246On5OZXR3b3JrU2Vzc2lvbigpCiAjaWYgRU5BQkxFKFJFU09V
UkNFX0xPQURfU1RBVElTVElDUykKICAgICBkZXN0cm95UmVzb3VyY2VMb2FkU3RhdGlzdGljcygp
OwogI2VuZGlmCi0KLSAgICBtX3N0b3JhZ2VNYW5hZ2VyLT5yZXN1bWUoKTsKLSAgICBtX3N0b3Jh
Z2VNYW5hZ2VyLT53YWl0VW50aWxUYXNrc0ZpbmlzaGVkKCk7CiB9CiAKICNpZiBFTkFCTEUoUkVT
T1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU2Vzc2lvbi5oCmluZGV4IDkwNmFlY2QwZDVhMDhlZDViMmE2NjQ0NTI5NjZkOGUyYTZj
NjFiODMuLjRiMDMzMmI3OTAxNzVlNzM3ZmI0ODUxZWVjN2RkYmMxYjIxYjg4N2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKQEAgLTUxLDcgKzUx
LDYgQEAgY2xhc3MgQWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlcjsKIGNsYXNzIE5ldHdvcmtEYXRh
VGFzazsKIGNsYXNzIE5ldHdvcmtQcm9jZXNzOwogY2xhc3MgTmV0d29ya1Jlc291cmNlTG9hZGVy
OwotY2xhc3MgU3RvcmFnZU1hbmFnZXI7CiBjbGFzcyBOZXR3b3JrU29ja2V0Q2hhbm5lbDsKIGNs
YXNzIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTsKIGNsYXNzIFdlYlNvY2tldFRhc2s7
CkBAIC04MCw4ICs3OSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZ2lzdGVyTmV0d29ya0RhdGFU
YXNrKE5ldHdvcmtEYXRhVGFzayYgdGFzaykgeyBtX2RhdGFUYXNrU2V0LmFkZCgmdGFzayk7IH0K
ICAgICB2b2lkIHVucmVnaXN0ZXJOZXR3b3JrRGF0YVRhc2soTmV0d29ya0RhdGFUYXNrJiB0YXNr
KSB7IG1fZGF0YVRhc2tTZXQucmVtb3ZlKCZ0YXNrKTsgfQogCi0gICAgU3RvcmFnZU1hbmFnZXIm
IHN0b3JhZ2VNYW5hZ2VyKCkgeyByZXR1cm4gbV9zdG9yYWdlTWFuYWdlci5nZXQoKTsgfQotCiAj
aWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUqIHJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSBjb25zdCB7IHJldHVybiBt
X3Jlc291cmNlTG9hZFN0YXRpc3RpY3MuZ2V0KCk7IH0KICAgICB2b2lkIHNldFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NFbmFibGVkKGJvb2wpOwpAQCAtMTM1LDcgKzEzMiw2IEBAIHByb3RlY3RlZDoK
IAogICAgIFByZWZldGNoQ2FjaGUgbV9wcmVmZXRjaENhY2hlOwogCi0gICAgUmVmPFN0b3JhZ2VN
YW5hZ2VyPiBtX3N0b3JhZ2VNYW5hZ2VyOwogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICBib29s
IG1faXNJbnZhbGlkYXRlZCB7IGZhbHNlIH07CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFy
YW1ldGVycy5jcHAKaW5kZXggNGVmYTkzOTRiNzc5NTE3YzIzM2VjOWQ5MWU2NWU5YmQwYWY2NjFj
MC4uNWE4YzdmODhlOWM0MjZhMmI3NzQxYjA5NTgxMmI5MTVlYmQ0MDM2YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1l
dGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lv
bkNyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgTmV0d29ya1Nlc3Npb25D
cmVhdGlvblBhcmFtZXRlcnMgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM6OnByaXZh
dGVTZXNzaW8KICNpZiBVU0UoQ1VSTCkKICAgICAgICAgLCB7IH0sIHsgfQogI2VuZGlmCi0gICAg
ICAgICwgeyB9LCB7IH0sIGZhbHNlLCB7IH0sIHsgfSwgeyB9LCB7IH0sIHsgfSwgeyB9LCB7IH0s
IHsgfSwgeyB9CisgICAgICAgICwgeyB9LCB7IH0sIGZhbHNlLCB7IH0sIHsgfSwgeyB9LCB7IH0s
IHsgfSwgeyB9LCB7IH0KICAgICB9OwogfQogCkBAIC04NCw3ICs4NCw2IEBAIHZvaWQgTmV0d29y
a1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIp
IGNvbnN0CiAgICAgZW5jb2RlciA8PCBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdN
b2RlOwogICAgIGVuY29kZXIgPDwgcmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbnVhbFByZXZhbGVu
dFJlc291cmNlOwogCi0gICAgZW5jb2RlciA8PCBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPDwgbG9j
YWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGVuY29kZXIgPDwgbmV0d29y
a0NhY2hlRGlyZWN0b3J5IDw8IG5ldHdvcmtDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsK
IAogICAgIGVuY29kZXIgPDwgZGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0VuYWJsZWQ7CkBA
IC0yMDIsMTYgKzIwMSw2IEBAIE9wdGlvbmFsPE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0
ZXJzPiBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjCiAgICAgaWYgKCFyZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTWFudWFsUHJldmFsZW50UmVzb3VyY2UpCiAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxTdHJpbmc+IGxvY2FsU3RvcmFnZURpcmVj
dG9yeTsKLSAgICBkZWNvZGVyID4+IGxvY2FsU3RvcmFnZURpcmVjdG9yeTsKLSAgICBpZiAoIWxv
Y2FsU3RvcmFnZURpcmVjdG9yeSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAg
IE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gbG9jYWxTdG9yYWdlRGlyZWN0b3J5
RXh0ZW5zaW9uSGFuZGxlOwotICAgIGRlY29kZXIgPj4gbG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0
ZW5zaW9uSGFuZGxlOwotICAgIGlmICghbG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFu
ZGxlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCiAgICAgT3B0aW9uYWw8U3RyaW5n
PiBuZXR3b3JrQ2FjaGVEaXJlY3Rvcnk7CiAgICAgZGVjb2RlciA+PiBuZXR3b3JrQ2FjaGVEaXJl
Y3Rvcnk7CiAgICAgaWYgKCFuZXR3b3JrQ2FjaGVEaXJlY3RvcnkpCkBAIC0yNjIsOCArMjUxLDYg
QEAgT3B0aW9uYWw8TmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM+IE5ldHdvcmtTZXNz
aW9uQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWMKICAgICAgICAgLCBXVEZNb3ZlKCpkZXZpY2VNYW5h
Z2VtZW50UmVzdHJpY3Rpb25zRW5hYmxlZCkKICAgICAgICAgLCBXVEZNb3ZlKCphbGxMb2Fkc0Js
b2NrZWRCeURldmljZU1hbmFnZW1lbnRSZXN0cmljdGlvbnNGb3JUZXN0aW5nKQogICAgICAgICAs
IFdURk1vdmUoKnJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW51YWxQcmV2YWxlbnRSZXNvdXJjZSkK
LSAgICAgICAgLCBXVEZNb3ZlKCpsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpCi0gICAgICAgICwgV1RG
TW92ZSgqbG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKQogICAgICAgICAsIFdU
Rk1vdmUoKm5ldHdvcmtDYWNoZURpcmVjdG9yeSkKICAgICAgICAgLCBXVEZNb3ZlKCpuZXR3b3Jr
Q2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpCiAgICAgfX07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJz
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25Q
YXJhbWV0ZXJzLmgKaW5kZXggMDU4MmVhNDYxMmRjZTRiNWE0NTVlNDRkOGYyM2ZmMzg1NjczYmE5
My4uYWNiYTZjZmQ0YjlhMDIxMWMxNzQ3OTA3NWZmZGE4ZTI2ZjBkMjZiNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1l
dGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25D
cmVhdGlvblBhcmFtZXRlcnMuaApAQCAtOTAsOCArOTAsNiBAQCBzdHJ1Y3QgTmV0d29ya1Nlc3Np
b25DcmVhdGlvblBhcmFtZXRlcnMgewogICAgIGJvb2wgYWxsTG9hZHNCbG9ja2VkQnlEZXZpY2VN
YW5hZ2VtZW50UmVzdHJpY3Rpb25zRm9yVGVzdGluZyB7IGZhbHNlIH07CiAgICAgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4gcmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbnVhbFByZXZhbGVudFJl
c291cmNlIHsgfTsKIAotICAgIFN0cmluZyBsb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7Ci0gICAgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlIGxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRs
ZTsKICAgICBTdHJpbmcgbmV0d29ya0NhY2hlRGlyZWN0b3J5OwogICAgIFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZSBuZXR3b3JrQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3Rv
cmFnZURhdGFiYXNlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dl
YlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNwcAppbmRleCAwN2E2MzNmYmZl
OWJlNTllZGJlZDUzOWM5NmUxOWU0YjFiYmQyNTgzLi4yZmZkMGEyNWMxMWRhMWM1MTNlODcwMTQz
MzQ3NGZlYzZhN2QxNTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFj
a2VyLmNwcApAQCAtMzksMjQgKzM5LDIwIEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCi1SZWY8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyPiBMb2Nh
bFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OmNyZWF0ZShSZWY8V29ya1F1ZXVlPiYmIHF1ZXVlLCBT
dHJpbmcmJiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpCitSZWY8TG9jYWxTdG9yYWdlRGF0YWJhc2VU
cmFja2VyPiBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OmNyZWF0ZShTdHJpbmcmJiBsb2Nh
bFN0b3JhZ2VEaXJlY3RvcnkpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTG9jYWxTdG9y
YWdlRGF0YWJhc2VUcmFja2VyKFdURk1vdmUocXVldWUpLCBXVEZNb3ZlKGxvY2FsU3RvcmFnZURp
cmVjdG9yeSkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBMb2NhbFN0b3JhZ2VEYXRhYmFz
ZVRyYWNrZXIoV1RGTW92ZShsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpKSk7CiB9CiAKLUxvY2FsU3Rv
cmFnZURhdGFiYXNlVHJhY2tlcjo6TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyKFJlZjxXb3Jr
UXVldWU+JiYgcXVldWUsIFN0cmluZyYmIGxvY2FsU3RvcmFnZURpcmVjdG9yeSkKLSAgICA6IG1f
cXVldWUoV1RGTW92ZShxdWV1ZSkpCi0gICAgLCBtX2xvY2FsU3RvcmFnZURpcmVjdG9yeShXVEZN
b3ZlKGxvY2FsU3RvcmFnZURpcmVjdG9yeSkpCitMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6
OkxvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcihTdHJpbmcmJiBsb2NhbFN0b3JhZ2VEaXJlY3Rv
cnkpCisgICAgOiBtX2xvY2FsU3RvcmFnZURpcmVjdG9yeShXVEZNb3ZlKGxvY2FsU3RvcmFnZURp
cmVjdG9yeSkpCiB7Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBBU1NFUlQo
IVJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIC8vIE1ha2Ugc3VyZSB0aGUgZW5jb2RpbmcgaXMg
aW5pdGlhbGl6ZWQgYmVmb3JlIHdlIHN0YXJ0IGRpc3BhdGNoaW5nIHRoaW5ncyB0byB0aGUgcXVl
dWUuCiAgICAgVVRGOEVuY29kaW5nKCk7CiAKLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChbcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSgpIG11dGFibGUgewotICAgICAgICAvLyBEZWxldGUg
bGVnYWN5IHN0b3JhZ2VUcmFja2VyIGRhdGFiYXNlIGZpbGUuCi0gICAgICAgIFNRTGl0ZUZpbGVT
eXN0ZW06OmRlbGV0ZURhdGFiYXNlRmlsZShwcm90ZWN0ZWRUaGlzLT5kYXRhYmFzZVBhdGgoIlN0
b3JhZ2VUcmFja2VyLmRiIikpOwotICAgIH0pOworICAgIFNRTGl0ZUZpbGVTeXN0ZW06OmRlbGV0
ZURhdGFiYXNlRmlsZShkYXRhYmFzZVBhdGgoIlN0b3JhZ2VUcmFja2VyLmRiIikpOwogfQogCiBT
dHJpbmcgTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpsb2NhbFN0b3JhZ2VEaXJlY3Rvcnko
KSBjb25zdApAQCAtNjYsNyArNjIsNyBAQCBTdHJpbmcgTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFj
a2VyOjpsb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdAogCiBMb2NhbFN0b3JhZ2VEYXRhYmFz
ZVRyYWNrZXI6On5Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIoKQogewotICAgIEFTU0VSVChS
dW5Mb29wOjppc01haW4oKSk7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiB9CiAK
IFN0cmluZyBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OmRhdGFiYXNlUGF0aChjb25zdCBT
ZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNl
VHJhY2tlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2Fs
U3RvcmFnZURhdGFiYXNlVHJhY2tlci5oCmluZGV4IDVkOWQyYzJhNGM3ZGEwMTNmNjBmMTFlYjQz
NmYxOGU0NzU4MDIwOTEuLjA2OTU1ZjBjMjM3MmEzNjc1OTkxNzJmZmZiNWMxODkyY2ZmYTBmMjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2Nh
bFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmgKQEAgLTM3LDcgKzM3
LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIExvY2FsU3RvcmFnZURhdGFiYXNlVHJh
Y2tlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxMb2NhbFN0b3JhZ2VEYXRhYmFzZVRy
YWNrZXIsIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW5SdW5Mb29wPiB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZjxMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI+IGNyZWF0ZShSZWY8V29y
a1F1ZXVlPiYmLCBTdHJpbmcmJiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpOworICAgIHN0YXRpYyBS
ZWY8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyPiBjcmVhdGUoU3RyaW5nJiYgbG9jYWxTdG9y
YWdlRGlyZWN0b3J5KTsKICAgICB+TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyKCk7CiAKICAg
ICBTdHJpbmcgZGF0YWJhc2VQYXRoKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYp
IGNvbnN0OwpAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgVmVjdG9yPE9yaWdpbkRldGFp
bHM+IG9yaWdpbkRldGFpbHMoKTsKIAogcHJpdmF0ZToKLSAgICBMb2NhbFN0b3JhZ2VEYXRhYmFz
ZVRyYWNrZXIoUmVmPFdvcmtRdWV1ZT4mJiwgU3RyaW5nJiYgbG9jYWxTdG9yYWdlRGlyZWN0b3J5
KTsKKyAgICBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIoU3RyaW5nJiYgbG9jYWxTdG9yYWdl
RGlyZWN0b3J5KTsKIAogICAgIFN0cmluZyBkYXRhYmFzZVBhdGgoY29uc3QgU3RyaW5nJiBmaWxl
bmFtZSkgY29uc3Q7CiAgICAgU3RyaW5nIGxvY2FsU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0OwpA
QCAtNzMsOCArNzMsNiBAQCBwcml2YXRlOgogICAgICAgICBDcmVhdGVJZk5vbkV4aXN0ZW50LAog
ICAgICAgICBTa2lwSWZOb25FeGlzdGVudAogICAgIH07Ci0KLSAgICBSZWY8V29ya1F1ZXVlPiBt
X3F1ZXVlOwogICAgIAogICAgIC8vIEl0IGlzIG5vdCBzYWZlIHRvIHVzZSB0aGlzIG1lbWJlciBm
cm9tIGEgYmFja2dyb3VuZCB0aHJlYWQsIGNhbGwgbG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkgaW5z
dGVhZC4KICAgICBjb25zdCBTdHJpbmcgbV9sb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VN
YW5hZ2VyLmNwcAppbmRleCBhMTdjNTc5Y2JhYTU3ZTE5MjUxYTYzNDBiZWRiZDFlYWRiN2Q2OTgy
Li4wZThjZjdlZTQ1NWRkMmM5ZjI5ZDU4YWZkYWQ1YWMxY2NmNGNkNGE2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFu
YWdlci5jcHAKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJMb2NhbFN0b3JhZ2VEYXRhYmFz
ZS5oIgogI2luY2x1ZGUgIkxvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5oIgogI2luY2x1ZGUg
IlN0b3JhZ2VBcmVhTWFwTWVzc2FnZXMuaCIKLSNpbmNsdWRlICJTdG9yYWdlTWFuYWdlck1lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9T
ZWN1cml0eU9yaWdpbkRhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luSGFz
aC5oPgpAQCAtMzcsNTMgKzM2LDEwIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0RW5jb2Rpbmcu
aD4KICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgotI2luY2x1
ZGUgPHd0Zi90aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1jbGFzcyBTdG9yYWdlTWFuYWdlcjo6U3RvcmFn
ZUFyZWEgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U3RvcmFnZU1hbmFnZXI6OlN0b3Jh
Z2VBcmVhPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTdG9yYWdlQXJlYT4gY3JlYXRlKExv
Y2FsU3RvcmFnZU5hbWVzcGFjZSosIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYsIHVuc2lnbmVk
IHF1b3RhSW5CeXRlcyk7Ci0gICAgflN0b3JhZ2VBcmVhKCk7Ci0KLSAgICBjb25zdCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9z
ZWN1cml0eU9yaWdpbjsgfQotCi0gICAgdm9pZCBhZGRMaXN0ZW5lcihJUEM6OkNvbm5lY3Rpb246
OlVuaXF1ZUlELCB1aW50NjRfdCBzdG9yYWdlTWFwSUQpOwotICAgIHZvaWQgcmVtb3ZlTGlzdGVu
ZXIoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCwgdWludDY0X3Qgc3RvcmFnZU1hcElEKTsKLSAg
ICBib29sIGhhc0xpc3RlbmVyKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIHVpbnQ2NF90IHN0
b3JhZ2VNYXBJRCkgY29uc3Q7Ci0KLSAgICBSZWY8U3RvcmFnZUFyZWE+IGNsb25lKCkgY29uc3Q7
Ci0KLSAgICB2b2lkIHNldEl0ZW0oSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBzb3VyY2VDb25u
ZWN0aW9uLCB1aW50NjRfdCBzb3VyY2VTdG9yYWdlQXJlYUlELCBjb25zdCBTdHJpbmcmIGtleSwg
Y29uc3QgU3RyaW5nJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGJvb2wmIHF1b3Rh
RXhjZXB0aW9uKTsKLSAgICB2b2lkIHNldEl0ZW1zKGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJp
bmc+Jik7Ci0gICAgdm9pZCByZW1vdmVJdGVtKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgc291
cmNlQ29ubmVjdGlvbiwgdWludDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwgY29uc3QgU3RyaW5n
JiBrZXksIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKTsKLSAgICB2b2lkIGNsZWFyKElQQzo6Q29u
bmVjdGlvbjo6VW5pcXVlSUQgc291cmNlQ29ubmVjdGlvbiwgdWludDY0X3Qgc291cmNlU3RvcmFn
ZUFyZWFJRCwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpOwotCi0gICAgY29uc3QgSGFzaE1hcDxT
dHJpbmcsIFN0cmluZz4mIGl0ZW1zKCkgY29uc3Q7Ci0gICAgdm9pZCBjbGVhcigpOwotCi0gICAg
Ym9vbCBpc0VwaGVtZXJhbCgpIGNvbnN0IHsgcmV0dXJuICFtX2xvY2FsU3RvcmFnZU5hbWVzcGFj
ZTsgfQotCi0gICAgdm9pZCBvcGVuRGF0YWJhc2VBbmRJbXBvcnRJdGVtc0lmTmVlZGVkKCkgY29u
c3Q7Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgU3RvcmFnZUFyZWEoTG9jYWxTdG9yYWdlTmFt
ZXNwYWNlKiwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiwgdW5zaWduZWQgcXVvdGFJbkJ5dGVz
KTsKLQotICAgIHZvaWQgZGlzcGF0Y2hFdmVudHMoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBz
b3VyY2VDb25uZWN0aW9uLCB1aW50NjRfdCBzb3VyY2VTdG9yYWdlQXJlYUlELCBjb25zdCBTdHJp
bmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwg
Y29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpIGNvbnN0OwotCi0gICAgLy8gV2lsbCBiZSBudWxsIGlm
IHRoZSBzdG9yYWdlIGFyZWEgYmVsb25ncyB0byBhIHNlc3Npb24gc3RvcmFnZSBuYW1lc3BhY2Ug
b3IgdGhlIHN0b3JhZ2UgYXJlYSBpcyBpbiBhbiBlcGhlbWVyYWwgc2Vzc2lvbi4KLSAgICBXZWFr
UHRyPExvY2FsU3RvcmFnZU5hbWVzcGFjZT4gbV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2U7Ci0gICAg
bXV0YWJsZSBSZWZQdHI8TG9jYWxTdG9yYWdlRGF0YWJhc2U+IG1fbG9jYWxTdG9yYWdlRGF0YWJh
c2U7Ci0gICAgbXV0YWJsZSBib29sIG1fZGlkSW1wb3J0SXRlbXNGcm9tRGF0YWJhc2UgeyBmYWxz
ZSB9OwotCi0gICAgU2VjdXJpdHlPcmlnaW5EYXRhIG1fc2VjdXJpdHlPcmlnaW47Ci0gICAgdW5z
aWduZWQgbV9xdW90YUluQnl0ZXM7Ci0KLSAgICBSZWZQdHI8U3RvcmFnZU1hcD4gbV9zdG9yYWdl
TWFwOwotICAgIEhhc2hTZXQ8c3RkOjpwYWlyPElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIHVp
bnQ2NF90Pj4gbV9ldmVudExpc3RlbmVyczsKLX07Ci0KIGNsYXNzIFN0b3JhZ2VNYW5hZ2VyOjpM
b2NhbFN0b3JhZ2VOYW1lc3BhY2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8TG9jYWxT
dG9yYWdlTmFtZXNwYWNlPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPExvY2FsU3RvcmFnZU5hbWVz
cGFjZT4gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8TG9jYWxTdG9yYWdlTmFtZXNwYWNlPiBj
cmVhdGUoU3RvcmFnZU1hbmFnZXImLCB1aW50NjRfdCBzdG9yYWdlTWFuYWdlcklEKTsKQEAgLTkz
LDEyICs0OSwxMiBAQCBwdWJsaWM6CiAKICAgICBlbnVtIGNsYXNzIElzRXBoZW1lcmFsIDogYm9v
bCB7IE5vLCBZZXMgfTsKICAgICBSZWY8U3RvcmFnZUFyZWE+IGdldE9yQ3JlYXRlU3RvcmFnZUFy
ZWEoU2VjdXJpdHlPcmlnaW5EYXRhJiYsIElzRXBoZW1lcmFsKTsKKyAgICBTdG9yYWdlQXJlYSog
Z2V0U3RvcmFnZUFyZWEoU2VjdXJpdHlPcmlnaW5EYXRhJiYgb3JpZ2luRGF0YSkgeyByZXR1cm4g
bV9zdG9yYWdlQXJlYU1hcC5nZXQob3JpZ2luRGF0YSk7IH0KIAogICAgIHZvaWQgY2xlYXJTdG9y
YWdlQXJlYXNNYXRjaGluZ09yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmKTsKICAgICB2
b2lkIGNsZWFyQWxsU3RvcmFnZUFyZWFzKCk7CiAKICAgICBWZWN0b3I8U2VjdXJpdHlPcmlnaW5E
YXRhPiBlcGhlbWVyYWxPcmlnaW5zKCkgY29uc3Q7Ci0gICAgdm9pZCBjbG9uZVRvKExvY2FsU3Rv
cmFnZU5hbWVzcGFjZSYgbmV3TG9jYWxTdG9yYWdlTmFtZXNwYWNlKTsKIAogcHJpdmF0ZToKICAg
ICBMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoU3RvcmFnZU1hbmFnZXImLCB1aW50NjRfdCBzdG9yYWdl
TWFuYWdlcklEKTsKQEAgLTEyOSw2ICs4NSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVy
biBTdG9yYWdlQXJlYTo6Y3JlYXRlKG51bGxwdHIsIFdURk1vdmUoc2VjdXJpdHlPcmlnaW4pLCBt
X3F1b3RhSW5CeXRlcyk7CiAgICAgICAgIH0pLml0ZXJhdG9yLT52YWx1ZS5jb3B5UmVmKCk7CiAg
ICAgfQorICAgIFN0b3JhZ2VBcmVhKiBnZXRTdG9yYWdlQXJlYShTZWN1cml0eU9yaWdpbkRhdGEm
JiBvcmlnaW5EYXRhKSB7IHJldHVybiBtX3N0b3JhZ2VBcmVhTWFwLmdldChvcmlnaW5EYXRhKTsg
fQogCiAgICAgVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4gb3JpZ2lucygpIGNvbnN0CiAgICAg
ewpAQCAtMTY1LDYgKzEyMiwxMiBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8U2VjdXJpdHlPcmln
aW5EYXRhLCBSZWZQdHI8U3RvcmFnZUFyZWE+PiBtX3N0b3JhZ2VBcmVhTWFwOwogfTsKIAorc3Rh
dGljIHVpbnQ2NF90IGdlbmVyYXRlU3RvcmFnZUFyZWFJZGVudGlmaWVyKCkKK3sKKyAgICBzdGF0
aWMgdWludDY0X3QgaWRlbnRpZmllcjsKKyAgICByZXR1cm4gKytpZGVudGlmaWVyOworfQorCiBh
dXRvIFN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQXJlYTo6Y3JlYXRlKExvY2FsU3RvcmFnZU5hbWVz
cGFjZSogbG9jYWxTdG9yYWdlTmFtZXNwYWNlLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNl
Y3VyaXR5T3JpZ2luLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpIC0+IFJlZjxTdG9yYWdlTWFuYWdl
cjo6U3RvcmFnZUFyZWE+CiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmFnZUFyZWEo
bG9jYWxTdG9yYWdlTmFtZXNwYWNlLCBzZWN1cml0eU9yaWdpbiwgcXVvdGFJbkJ5dGVzKSk7CkBA
IC0xNzUsNiArMTM4LDcgQEAgU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VBcmVhOjpTdG9yYWdlQXJl
YShMb2NhbFN0b3JhZ2VOYW1lc3BhY2UqIGxvY2FsU3RvcmFnZU5hbWUKICAgICAsIG1fc2VjdXJp
dHlPcmlnaW4oc2VjdXJpdHlPcmlnaW4pCiAgICAgLCBtX3F1b3RhSW5CeXRlcyhxdW90YUluQnl0
ZXMpCiAgICAgLCBtX3N0b3JhZ2VNYXAoU3RvcmFnZU1hcDo6Y3JlYXRlKG1fcXVvdGFJbkJ5dGVz
KSkKKyAgICAsIG1faWRlbnRpZmllcihnZW5lcmF0ZVN0b3JhZ2VBcmVhSWRlbnRpZmllcigpKQog
ewogfQogCkBAIC0xODcsMjEgKzE1MSwxOSBAQCBTdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUFyZWE6
On5TdG9yYWdlQXJlYSgpCiAgICAgICAgIG1fbG9jYWxTdG9yYWdlRGF0YWJhc2UtPmNsb3NlKCk7
CiB9CiAKLXZvaWQgU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VBcmVhOjphZGRMaXN0ZW5lcihJUEM6
OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGNvbm5lY3Rpb25JRCwgdWludDY0X3Qgc3RvcmFnZU1hcElE
KQordm9pZCBTdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUFyZWE6OmFkZExpc3RlbmVyKElQQzo6Q29u
bmVjdGlvbjo6VW5pcXVlSUQgY29ubmVjdGlvbklEKQogewotICAgIEFTU0VSVCghbV9ldmVudExp
c3RlbmVycy5jb250YWlucyhzdGQ6Om1ha2VfcGFpcihjb25uZWN0aW9uSUQsIHN0b3JhZ2VNYXBJ
RCkpKTsKLSAgICBtX2V2ZW50TGlzdGVuZXJzLmFkZChzdGQ6Om1ha2VfcGFpcihjb25uZWN0aW9u
SUQsIHN0b3JhZ2VNYXBJRCkpOwotfQorICAgIEFTU0VSVCghbV9ldmVudExpc3RlbmVycy5jb250
YWlucyhjb25uZWN0aW9uSUQpKTsKIAotdm9pZCBTdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUFyZWE6
OnJlbW92ZUxpc3RlbmVyKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgY29ubmVjdGlvbklELCB1
aW50NjRfdCBzdG9yYWdlTWFwSUQpCi17Ci0gICAgQVNTRVJUKGlzRXBoZW1lcmFsKCkgfHwgbV9l
dmVudExpc3RlbmVycy5jb250YWlucyhzdGQ6Om1ha2VfcGFpcihjb25uZWN0aW9uSUQsIHN0b3Jh
Z2VNYXBJRCkpKTsKLSAgICBtX2V2ZW50TGlzdGVuZXJzLnJlbW92ZShzdGQ6Om1ha2VfcGFpcihj
b25uZWN0aW9uSUQsIHN0b3JhZ2VNYXBJRCkpOworICAgIGlmIChtX2V2ZW50TGlzdGVuZXJzLmlz
RW1wdHkoKSAmJiAhaXNFcGhlbWVyYWwoKSkKKyAgICAgICAgb3BlbkRhdGFiYXNlQW5kSW1wb3J0
SXRlbXNJZk5lZWRlZCgpOworCisgICAgbV9ldmVudExpc3RlbmVycy5hZGQoY29ubmVjdGlvbklE
KTsKIH0KIAotYm9vbCBTdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUFyZWE6Omhhc0xpc3RlbmVyKElQ
Qzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgY29ubmVjdGlvbklELCB1aW50NjRfdCBzdG9yYWdlTWFw
SUQpIGNvbnN0Cit2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQXJlYTo6cmVtb3ZlTGlzdGVu
ZXIoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uSUQpCiB7Ci0gICAgcmV0dXJu
IG1fZXZlbnRMaXN0ZW5lcnMuY29udGFpbnMoc3RkOjptYWtlX3BhaXIoY29ubmVjdGlvbklELCBz
dG9yYWdlTWFwSUQpKTsKKyAgICBtX2V2ZW50TGlzdGVuZXJzLnJlbW92ZShjb25uZWN0aW9uSUQp
OwogfQogCiBSZWY8U3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VBcmVhPiBTdG9yYWdlTWFuYWdlcjo6
U3RvcmFnZUFyZWE6OmNsb25lKCkgY29uc3QKQEAgLTIzMywyNCArMTk1LDYgQEAgdm9pZCBTdG9y
YWdlTWFuYWdlcjo6U3RvcmFnZUFyZWE6OnNldEl0ZW0oSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJ
RCBzb3VyY2VDb25uZWMKICAgICBkaXNwYXRjaEV2ZW50cyhzb3VyY2VDb25uZWN0aW9uLCBzb3Vy
Y2VTdG9yYWdlQXJlYUlELCBrZXksIG9sZFZhbHVlLCB2YWx1ZSwgdXJsU3RyaW5nKTsKIH0KIAot
dm9pZCBTdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUFyZWE6OnNldEl0ZW1zKGNvbnN0IEhhc2hNYXA8
U3RyaW5nLCBTdHJpbmc+JiBpdGVtcykKLXsKLSAgICAvLyBJbXBvcnQgaXRlbXMgZnJvbSB3ZWIg
cHJvY2VzcyBpZiBpdGVtcyBhcmUgbm90IHN0b3JlZCBvbiBkaXNrLgotICAgIGlmICghaXNFcGhl
bWVyYWwoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZm9yIChhdXRvJiBpdGVtIDogaXRlbXMp
IHsKLSAgICAgICAgU3RyaW5nIG9sZFZhbHVlOwotICAgICAgICBib29sIHF1b3RhRXhjZXB0aW9u
OwotICAgICAgICBhdXRvIG5ld1N0b3JhZ2VNYXAgPSBtX3N0b3JhZ2VNYXAtPnNldEl0ZW0oaXRl
bS5rZXksIGl0ZW0udmFsdWUsIG9sZFZhbHVlLCBxdW90YUV4Y2VwdGlvbik7Ci0gICAgICAgIGlm
IChuZXdTdG9yYWdlTWFwKQotICAgICAgICAgICAgbV9zdG9yYWdlTWFwID0gV1RGTW92ZShuZXdT
dG9yYWdlTWFwKTsKLSAgICAgICAgCi0gICAgICAgIGlmIChxdW90YUV4Y2VwdGlvbikKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICB9Ci19Ci0KIHZvaWQgU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VB
cmVhOjpyZW1vdmVJdGVtKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgc291cmNlQ29ubmVjdGlv
biwgdWludDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0
IFN0cmluZyYgdXJsU3RyaW5nKQogewogICAgIG9wZW5EYXRhYmFzZUFuZEltcG9ydEl0ZW1zSWZO
ZWVkZWQoKTsKQEAgLTMwMSw3ICsyNDUsNyBAQCB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdl
QXJlYTo6Y2xlYXIoKQogICAgIH0KIAogICAgIGZvciAoYXV0byBpdCA9IG1fZXZlbnRMaXN0ZW5l
cnMuYmVnaW4oKSwgZW5kID0gbV9ldmVudExpc3RlbmVycy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0
KSB7Ci0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY29ubmVjdGlvbklEID0gaXQt
PmZpcnN0LCBkZXN0aW5hdGlvblN0b3JhZ2VBcmVhSUQgPSBpdC0+c2Vjb25kXSB7CisgICAgICAg
IFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY29ubmVjdGlvbklEID0gKml0LCBkZXN0aW5hdGlv
blN0b3JhZ2VBcmVhSUQgPSBtX2lkZW50aWZpZXJdIHsKICAgICAgICAgICAgIGlmIChhdXRvKiBj
b25uZWN0aW9uID0gSVBDOjpDb25uZWN0aW9uOjpjb25uZWN0aW9uKGNvbm5lY3Rpb25JRCkpCiAg
ICAgICAgICAgICAgICAgY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U3RvcmFnZUFyZWFNYXA6
OkNsZWFyQ2FjaGUoKSwgZGVzdGluYXRpb25TdG9yYWdlQXJlYUlEKTsKICAgICAgICAgfSk7CkBA
IC0zMTQsOSArMjU4LDEwIEBAIHZvaWQgU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VBcmVhOjpvcGVu
RGF0YWJhc2VBbmRJbXBvcnRJdGVtc0lmTmVlZGVkKCkgY29uc3QKICAgICAgICAgcmV0dXJuOwog
CiAgICAgQVNTRVJUKG1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlLT5zdG9yYWdlTWFuYWdlcigpLT5t
X2xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcik7CisgICAgQVNTRVJUKG1fcXVldWUpOwogICAg
IC8vIFdlIG9wZW4gdGhlIGRhdGFiYXNlIGhlcmUgZXZlbiBpZiB3ZSd2ZSBhbHJlYWR5IGltcG9y
dGVkIG91ciBpdGVtcyB0byBlbnN1cmUgdGhhdCB0aGUgZGF0YWJhc2UgaXMgb3BlbiBpZiB3ZSBu
ZWVkIHRvIHdyaXRlIHRvIGl0LgogICAgIGlmICghbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZSkKLSAg
ICAgICAgbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZSA9IExvY2FsU3RvcmFnZURhdGFiYXNlOjpjcmVh
dGUobV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPnN0b3JhZ2VNYW5hZ2VyKCktPm1fcXVldWUuY29w
eVJlZigpLCAqbV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPnN0b3JhZ2VNYW5hZ2VyKCktPm1fbG9j
YWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLCBtX3NlY3VyaXR5T3JpZ2luKTsKKyAgICAgICAgbV9s
b2NhbFN0b3JhZ2VEYXRhYmFzZSA9IExvY2FsU3RvcmFnZURhdGFiYXNlOjpjcmVhdGUoKm1fcXVl
dWUsICptX2xvY2FsU3RvcmFnZU5hbWVzcGFjZS0+c3RvcmFnZU1hbmFnZXIoKS0+bV9sb2NhbFN0
b3JhZ2VEYXRhYmFzZVRyYWNrZXIsIG1fc2VjdXJpdHlPcmlnaW4pOwogCiAgICAgaWYgKG1fZGlk
SW1wb3J0SXRlbXNGcm9tRGF0YWJhc2UpCiAgICAgICAgIHJldHVybjsKQEAgLTMyOCw5ICsyNzMs
OSBAQCB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQXJlYTo6b3BlbkRhdGFiYXNlQW5kSW1w
b3J0SXRlbXNJZk5lZWRlZCgpIGNvbnN0CiB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQXJl
YTo6ZGlzcGF0Y2hFdmVudHMoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBzb3VyY2VDb25uZWN0
aW9uLCB1aW50NjRfdCBzb3VyY2VTdG9yYWdlQXJlYUlELCBjb25zdCBTdHJpbmcmIGtleSwgY29u
c3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgU3RyaW5n
JiB1cmxTdHJpbmcpIGNvbnN0CiB7CiAgICAgZm9yIChhdXRvIGl0ID0gbV9ldmVudExpc3RlbmVy
cy5iZWdpbigpLCBlbmQgPSBtX2V2ZW50TGlzdGVuZXJzLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQp
IHsKLSAgICAgICAgc291cmNlU3RvcmFnZUFyZWFJRCA9IGl0LT5maXJzdCA9PSBzb3VyY2VDb25u
ZWN0aW9uID8gc291cmNlU3RvcmFnZUFyZWFJRCA6IDA7CisgICAgICAgIHNvdXJjZVN0b3JhZ2VB
cmVhSUQgPSAqaXQgPT0gc291cmNlQ29ubmVjdGlvbiA/IHNvdXJjZVN0b3JhZ2VBcmVhSUQgOiAw
OwogCi0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY29ubmVjdGlvbklEID0gaXQt
PmZpcnN0LCBzb3VyY2VTdG9yYWdlQXJlYUlELCBkZXN0aW5hdGlvblN0b3JhZ2VBcmVhSUQgPSBp
dC0+c2Vjb25kLCBrZXkgPSBrZXkuaXNvbGF0ZWRDb3B5KCksIG9sZFZhbHVlID0gb2xkVmFsdWUu
aXNvbGF0ZWRDb3B5KCksIG5ld1ZhbHVlID0gbmV3VmFsdWUuaXNvbGF0ZWRDb3B5KCksIHVybFN0
cmluZyA9IHVybFN0cmluZy5pc29sYXRlZENvcHkoKV0geworICAgICAgICBSdW5Mb29wOjptYWlu
KCkuZGlzcGF0Y2goW2Nvbm5lY3Rpb25JRCA9ICppdCwgc291cmNlU3RvcmFnZUFyZWFJRCwgZGVz
dGluYXRpb25TdG9yYWdlQXJlYUlEID0gbV9pZGVudGlmaWVyLCBrZXkgPSBrZXkuaXNvbGF0ZWRD
b3B5KCksIG9sZFZhbHVlID0gb2xkVmFsdWUuaXNvbGF0ZWRDb3B5KCksIG5ld1ZhbHVlID0gbmV3
VmFsdWUuaXNvbGF0ZWRDb3B5KCksIHVybFN0cmluZyA9IHVybFN0cmluZy5pc29sYXRlZENvcHko
KV0gewogICAgICAgICAgICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBJUEM6OkNvbm5lY3Rpb246
OmNvbm5lY3Rpb24oY29ubmVjdGlvbklEKSkKICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLT5z
ZW5kKE1lc3NhZ2VzOjpTdG9yYWdlQXJlYU1hcDo6RGlzcGF0Y2hTdG9yYWdlRXZlbnQoc291cmNl
U3RvcmFnZUFyZWFJRCwga2V5LCBvbGRWYWx1ZSwgbmV3VmFsdWUsIHVybFN0cmluZyksIGRlc3Rp
bmF0aW9uU3RvcmFnZUFyZWFJRCk7CiAgICAgICAgIH0pOwpAQCAtMzQyLDggKzI4Nyw2IEBAIFJl
ZjxTdG9yYWdlTWFuYWdlcjo6TG9jYWxTdG9yYWdlTmFtZXNwYWNlPiBTdG9yYWdlTWFuYWdlcjo6
TG9jYWxTdG9yYWdlTmFtZXNwYWNlCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTG9jYWxTdG9y
YWdlTmFtZXNwYWNlKHN0b3JhZ2VNYW5hZ2VyLCBzdG9yYWdlTmFtZXNwYWNlSUQpKTsKIH0KIAot
Ly8gRklYTUU6IFRoZSBxdW90YSB2YWx1ZSBpcyBjb3BpZWQgZnJvbSBHcm91cFNldHRpbmdzLmNw
cC4KLS8vIFdlIHNob3VsZCBpbnZlc3RpZ2F0ZSBhIHdheSB0byBzaGFyZSBpdCB3aXRoIFdlYkNv
cmUuCiBTdG9yYWdlTWFuYWdlcjo6TG9jYWxTdG9yYWdlTmFtZXNwYWNlOjpMb2NhbFN0b3JhZ2VO
YW1lc3BhY2UoU3RvcmFnZU1hbmFnZXImIHN0b3JhZ2VNYW5hZ2VyLCB1aW50NjRfdCBzdG9yYWdl
TmFtZXNwYWNlSUQpCiAgICAgOiBtX3N0b3JhZ2VNYW5hZ2VyKHN0b3JhZ2VNYW5hZ2VyKQogICAg
ICwgbV9xdW90YUluQnl0ZXMobG9jYWxTdG9yYWdlRGF0YWJhc2VRdW90YUluQnl0ZXMpCkBAIC0z
NTQsNyArMjk3LDcgQEAgU3RvcmFnZU1hbmFnZXI6OkxvY2FsU3RvcmFnZU5hbWVzcGFjZTo6fkxv
Y2FsU3RvcmFnZU5hbWVzcGFjZSgpCiB7CiB9CiAKLWF1dG8gU3RvcmFnZU1hbmFnZXI6OkxvY2Fs
U3RvcmFnZU5hbWVzcGFjZTo6Z2V0T3JDcmVhdGVTdG9yYWdlQXJlYShTZWN1cml0eU9yaWdpbkRh
dGEmJiBzZWN1cml0eU9yaWdpbiwgSXNFcGhlbWVyYWwgaXNFcGhlbWVyYWwpIC0+IFJlZjxTdG9y
YWdlQXJlYT4KK1JlZjxTdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUFyZWE+IFN0b3JhZ2VNYW5hZ2Vy
OjpMb2NhbFN0b3JhZ2VOYW1lc3BhY2U6OmdldE9yQ3JlYXRlU3RvcmFnZUFyZWEoU2VjdXJpdHlP
cmlnaW5EYXRhJiYgc2VjdXJpdHlPcmlnaW4sIElzRXBoZW1lcmFsIGlzRXBoZW1lcmFsKQogewog
ICAgIHJldHVybiAqbV9zdG9yYWdlQXJlYU1hcC5lbnN1cmUoc2VjdXJpdHlPcmlnaW4sIFsmXSgp
IG11dGFibGUgewogICAgICAgICByZXR1cm4gU3RvcmFnZUFyZWE6OmNyZWF0ZShpc0VwaGVtZXJh
bCA9PSBJc0VwaGVtZXJhbDo6WWVzID8gbnVsbHB0ciA6IHRoaXMsIFdURk1vdmUoc2VjdXJpdHlP
cmlnaW4pLCBtX3F1b3RhSW5CeXRlcyk7CkBAIC0zODQsMTIgKzMyNyw2IEBAIFZlY3RvcjxTZWN1
cml0eU9yaWdpbkRhdGE+IFN0b3JhZ2VNYW5hZ2VyOjpMb2NhbFN0b3JhZ2VOYW1lc3BhY2U6OmVw
aGVtZXJhbE9yaWdpCiAgICAgcmV0dXJuIG9yaWdpbnM7CiB9CiAKLXZvaWQgU3RvcmFnZU1hbmFn
ZXI6OkxvY2FsU3RvcmFnZU5hbWVzcGFjZTo6Y2xvbmVUbyhMb2NhbFN0b3JhZ2VOYW1lc3BhY2Um
IG5ld0xvY2FsU3RvcmFnZU5hbWVzcGFjZSkKLXsKLSAgICBmb3IgKGF1dG8mIHBhaXIgOiBtX3N0
b3JhZ2VBcmVhTWFwKQotICAgICAgICBuZXdMb2NhbFN0b3JhZ2VOYW1lc3BhY2UubV9zdG9yYWdl
QXJlYU1hcC5hZGQocGFpci5rZXksIHBhaXIudmFsdWUtPmNsb25lKCkpOwotfQotCiBjbGFzcyBT
dG9yYWdlTWFuYWdlcjo6U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UgOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2U+IHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgUmVmPFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGUodW5zaWduZWQgcXVvdGFJbkJ5
dGVzKTsKQEAgLTM5NywxMSArMzM0LDggQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0VtcHR5KCkg
Y29uc3QgeyByZXR1cm4gbV9zdG9yYWdlQXJlYU1hcC5pc0VtcHR5KCk7IH0KIAotICAgIGNvbnN0
IEhhc2hTZXQ8SVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRD4mIGFsbG93ZWRDb25uZWN0aW9ucygp
IGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dlZENvbm5lY3Rpb25zOyB9Ci0gICAgdm9pZCBhZGRBbGxv
d2VkQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEKTsKLSAgICB2b2lkIHJlbW92
ZUFsbG93ZWRDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQpOwotCiAgICAgUmVm
PFN0b3JhZ2VBcmVhPiBnZXRPckNyZWF0ZVN0b3JhZ2VBcmVhKFNlY3VyaXR5T3JpZ2luRGF0YSYm
KTsKKyAgICBTdG9yYWdlQXJlYSogZ2V0U3RvcmFnZUFyZWEoU2VjdXJpdHlPcmlnaW5EYXRhJiYg
b3JpZ2luRGF0YSkgeyByZXR1cm4gbV9zdG9yYWdlQXJlYU1hcC5nZXQob3JpZ2luRGF0YSk7IH0K
IAogICAgIHZvaWQgY2xvbmVUbyhTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSYgbmV3U2Vzc2lvblN0
b3JhZ2VOYW1lc3BhY2UpOwogCkBAIC00MzMsNyArMzY3LDYgQEAgcHVibGljOgogcHJpdmF0ZToK
ICAgICBleHBsaWNpdCBTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YUluQnl0
ZXMpOwogCi0gICAgSGFzaFNldDxJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEPiBtX2FsbG93ZWRD
b25uZWN0aW9uczsKICAgICB1bnNpZ25lZCBtX3F1b3RhSW5CeXRlczsKIAogICAgIEhhc2hNYXA8
U2VjdXJpdHlPcmlnaW5EYXRhLCBSZWZQdHI8U3RvcmFnZUFyZWE+PiBtX3N0b3JhZ2VBcmVhTWFw
OwpAQCAtNDUzLDE4ICszODYsNyBAQCBTdG9yYWdlTWFuYWdlcjo6U2Vzc2lvblN0b3JhZ2VOYW1l
c3BhY2U6On5TZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSgpCiB7CiB9CiAKLXZvaWQgU3RvcmFnZU1h
bmFnZXI6OlNlc3Npb25TdG9yYWdlTmFtZXNwYWNlOjphZGRBbGxvd2VkQ29ubmVjdGlvbihJUEM6
OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGFsbG93ZWRDb25uZWN0aW9uKQotewotICAgIG1fYWxsb3dl
ZENvbm5lY3Rpb25zLmFkZChhbGxvd2VkQ29ubmVjdGlvbik7Ci19Ci0KLQotdm9pZCBTdG9yYWdl
TWFuYWdlcjo6U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2U6OnJlbW92ZUFsbG93ZWRDb25uZWN0aW9u
KElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgYWxsb3dlZENvbm5lY3Rpb24pCi17Ci0gICAgQVNT
RVJUKG1fYWxsb3dlZENvbm5lY3Rpb25zLmNvbnRhaW5zKGFsbG93ZWRDb25uZWN0aW9uKSk7Ci0g
ICAgbV9hbGxvd2VkQ29ubmVjdGlvbnMucmVtb3ZlKGFsbG93ZWRDb25uZWN0aW9uKTsKLX0KLWF1
dG8gU3RvcmFnZU1hbmFnZXI6OlNlc3Npb25TdG9yYWdlTmFtZXNwYWNlOjpnZXRPckNyZWF0ZVN0
b3JhZ2VBcmVhKFNlY3VyaXR5T3JpZ2luRGF0YSYmIHNlY3VyaXR5T3JpZ2luKSAtPiBSZWY8U3Rv
cmFnZUFyZWE+CitSZWY8U3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VBcmVhPiBTdG9yYWdlTWFuYWdl
cjo6U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2U6OmdldE9yQ3JlYXRlU3RvcmFnZUFyZWEoU2VjdXJp
dHlPcmlnaW5EYXRhJiYgc2VjdXJpdHlPcmlnaW4pCiB7CiAgICAgcmV0dXJuICptX3N0b3JhZ2VB
cmVhTWFwLmVuc3VyZShzZWN1cml0eU9yaWdpbiwgW3RoaXMsICZzZWN1cml0eU9yaWdpbl0oKSBt
dXRhYmxlIHsKICAgICAgICAgcmV0dXJuIFN0b3JhZ2VBcmVhOjpjcmVhdGUobnVsbHB0ciwgV1RG
TW92ZShzZWN1cml0eU9yaWdpbiksIG1fcXVvdGFJbkJ5dGVzKTsKQEAgLTQ4NSw0OTkgKzQwNywx
NzggQEAgUmVmPFN0b3JhZ2VNYW5hZ2VyPiBTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlKFN0cmluZyYm
IGxvY2FsU3RvcmFnZURpcmVjdG9yeSkKIH0KIAogU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VNYW5h
Z2VyKFN0cmluZyYmIGxvY2FsU3RvcmFnZURpcmVjdG9yeSkKLSAgICA6IG1fcXVldWUoV29ya1F1
ZXVlOjpjcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuU3RvcmFnZU1hbmFnZXIiKSkKIHsKLSAgICBB
U1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkp
OwogCiAgICAgLy8gTWFrZSBzdXJlIHRoZSBlbmNvZGluZyBpcyBpbml0aWFsaXplZCBiZWZvcmUg
d2Ugc3RhcnQgZGlzcGF0Y2hpbmcgdGhpbmdzIHRvIHRoZSBxdWV1ZS4KICAgICBVVEY4RW5jb2Rp
bmcoKTsKICAgICBpZiAoIWxvY2FsU3RvcmFnZURpcmVjdG9yeS5pc051bGwoKSkKLSAgICAgICAg
bV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIgPSBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNr
ZXI6OmNyZWF0ZShtX3F1ZXVlLmNvcHlSZWYoKSwgV1RGTW92ZShsb2NhbFN0b3JhZ2VEaXJlY3Rv
cnkpKTsKKyAgICAgICAgbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIgPSBMb2NhbFN0b3Jh
Z2VEYXRhYmFzZVRyYWNrZXI6OmNyZWF0ZShXVEZNb3ZlKGxvY2FsU3RvcmFnZURpcmVjdG9yeSkp
OwogfQogCiBTdG9yYWdlTWFuYWdlcjo6flN0b3JhZ2VNYW5hZ2VyKCkKIHsKLSAgICBBU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogfQog
CiB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50
NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcykKIHsKLSAgICBt
X3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBz
dG9yYWdlTmFtZXNwYWNlSUQsIHF1b3RhSW5CeXRlc10oKSBtdXRhYmxlIHsKLSAgICAgICAgbV9z
ZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMuZW5zdXJlKHN0b3JhZ2VOYW1lc3BhY2VJRCwgW3F1b3Rh
SW5CeXRlc10gewotICAgICAgICAgICAgcmV0dXJuIFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlOjpj
cmVhdGUocXVvdGFJbkJ5dGVzKTsKLSAgICAgICAgfSk7CisgICAgQVNTRVJUKCFSdW5Mb29wOjpp
c01haW4oKSk7CisgICAgbV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMuZW5zdXJlKHN0b3JhZ2VO
YW1lc3BhY2VJRCwgW3F1b3RhSW5CeXRlc10geworICAgICAgICByZXR1cm4gU2Vzc2lvblN0b3Jh
Z2VOYW1lc3BhY2U6OmNyZWF0ZShxdW90YUluQnl0ZXMpOwogICAgIH0pOwogfQogCiB2b2lkIFN0
b3JhZ2VNYW5hZ2VyOjpkZXN0cm95U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3Qgc3Rv
cmFnZU5hbWVzcGFjZUlEKQogewotICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHN0b3JhZ2VOYW1lc3BhY2VJRF0gewotICAgICAgICBB
U1NFUlQobV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMuY29udGFpbnMoc3RvcmFnZU5hbWVzcGFj
ZUlEKSk7Ci0gICAgICAgIGlmIChhdXRvKiBzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSA9IG1fc2Vz
c2lvblN0b3JhZ2VOYW1lc3BhY2VzLmdldChzdG9yYWdlTmFtZXNwYWNlSUQpKSB7Ci0gICAgICAg
ICAgICBpZiAoc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UtPmFsbG93ZWRDb25uZWN0aW9ucygpLmlz
RW1wdHkoKSkKLSAgICAgICAgICAgICAgICBtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlcy5yZW1v
dmUoc3RvcmFnZU5hbWVzcGFjZUlEKTsKLSAgICAgICAgfQotICAgIH0pOwotfQotCi12b2lkIFN0
b3JhZ2VNYW5hZ2VyOjphZGRBbGxvd2VkU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0aW9u
KHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgSVBDOjpDb25uZWN0aW9uJiBhbGxvd2VkQ29u
bmVjdGlvbikKLXsKLSAgICBhdXRvIGFsbG93ZWRDb25uZWN0aW9uSUQgPSBhbGxvd2VkQ29ubmVj
dGlvbi51bmlxdWVJRCgpOwotICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9jb25uZWN0aW9ucy5hZGQo
YWxsb3dlZENvbm5lY3Rpb25JRCk7Ci0gICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KQotICAg
ICAgICBhbGxvd2VkQ29ubmVjdGlvbi5hZGRXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoTWVzc2Fn
ZXM6OlN0b3JhZ2VNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcXVldWUuZ2V0KCks
IHRoaXMpOwotCi0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgYWxsb3dlZENvbm5lY3Rpb25JRCwgc3RvcmFnZU5hbWVzcGFjZUlEXSgp
IG11dGFibGUgewotICAgICAgICBBU1NFUlQobV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMuY29u
dGFpbnMoc3RvcmFnZU5hbWVzcGFjZUlEKSk7Ci0KLSAgICAgICAgbV9zZXNzaW9uU3RvcmFnZU5h
bWVzcGFjZXMuZ2V0KHN0b3JhZ2VOYW1lc3BhY2VJRCktPmFkZEFsbG93ZWRDb25uZWN0aW9uKGFs
bG93ZWRDb25uZWN0aW9uSUQpOwotICAgIH0pOwotfQotCi12b2lkIFN0b3JhZ2VNYW5hZ2VyOjpy
ZW1vdmVBbGxvd2VkU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0aW9uKHVpbnQ2NF90IHN0
b3JhZ2VOYW1lc3BhY2VJRCwgSVBDOjpDb25uZWN0aW9uJiBhbGxvd2VkQ29ubmVjdGlvbikKLXsK
LSAgICBhdXRvIGFsbG93ZWRDb25uZWN0aW9uSUQgPSBhbGxvd2VkQ29ubmVjdGlvbi51bmlxdWVJ
RCgpOwotICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIGFsbG93ZWRDb25uZWN0aW9uSUQsIHN0b3JhZ2VOYW1lc3BhY2VJRF0oKSBtdXRh
YmxlIHsKLSAgICAgICAgQVNTRVJUKG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLmNvbnRhaW5z
KHN0b3JhZ2VOYW1lc3BhY2VJRCkpOwotICAgICAgICBpZiAoYXV0byogc2Vzc2lvblN0b3JhZ2VO
YW1lc3BhY2UgPSBtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlcy5nZXQoc3RvcmFnZU5hbWVzcGFj
ZUlEKSkKLSAgICAgICAgICAgIHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlLT5yZW1vdmVBbGxvd2Vk
Q29ubmVjdGlvbihhbGxvd2VkQ29ubmVjdGlvbklEKTsKLSAgICB9KTsKKyAgICBBU1NFUlQoIVJ1
bkxvb3A6OmlzTWFpbigpKTsKKyAgICBBU1NFUlQobV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMu
Y29udGFpbnMoc3RvcmFnZU5hbWVzcGFjZUlEKSk7CisgICAgaWYgKGF1dG8qIHNlc3Npb25TdG9y
YWdlTmFtZXNwYWNlID0gbV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMuZ2V0KHN0b3JhZ2VOYW1l
c3BhY2VJRCkpCisgICAgICAgIG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLnJlbW92ZShzdG9y
YWdlTmFtZXNwYWNlSUQpOwogfQogCiB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpjbG9uZVNlc3Npb25T
dG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgdWludDY0X3QgbmV3
U3RvcmFnZU5hbWVzcGFjZUlEKQogewotICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHN0b3JhZ2VOYW1lc3BhY2VJRCwgbmV3U3RvcmFn
ZU5hbWVzcGFjZUlEXSB7Ci0gICAgICAgIFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKiBzZXNzaW9u
U3RvcmFnZU5hbWVzcGFjZSA9IG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLmdldChzdG9yYWdl
TmFtZXNwYWNlSUQpOwotICAgICAgICBpZiAoIXNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKSB7Ci0g
ICAgICAgICAgICAvLyBGSVhNRTogV2UgY2FuIGdldCBpbnRvIHRoaXMgc2l0dWF0aW9uIGlmIHNv
bWVvbmUgY2xvc2VzIHRoZSBvcmlnaW5hdGluZyBwYWdlIGZyb20gd2l0aGluIGEKLSAgICAgICAg
ICAgIC8vIGNyZWF0ZU5ld1BhZ2UgY2FsbGJhY2suIFdlIGJhaWwgZm9yIG5vdywgYnV0IHdlIHNo
b3VsZCByZWFsbHkgZmluZCBhIHdheSB0byBrZWVwIHRoZSBzZXNzaW9uIHN0b3JhZ2UgYWxpdmUK
LSAgICAgICAgICAgIC8vIHNvIHdlIHdlJ2xsIGNsb25lIHRoZSBzZXNzaW9uIHN0b3JhZ2UgY29y
cmVjdGx5LgotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgU2Vzc2lv
blN0b3JhZ2VOYW1lc3BhY2UqIG5ld1Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlID0gbV9zZXNzaW9u
U3RvcmFnZU5hbWVzcGFjZXMuZ2V0KG5ld1N0b3JhZ2VOYW1lc3BhY2VJRCk7Ci0gICAgICAgIEFT
U0VSVChuZXdTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSk7CisgICAgQVNTRVJUKCFSdW5Mb29wOjpp
c01haW4oKSk7CisgICAgU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UqIHNlc3Npb25TdG9yYWdlTmFt
ZXNwYWNlID0gbV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMuZ2V0KHN0b3JhZ2VOYW1lc3BhY2VJ
RCk7CisgICAgaWYgKCFzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSkKKyAgICAgICAgcmV0dXJuOwog
Ci0gICAgICAgIHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlLT5jbG9uZVRvKCpuZXdTZXNzaW9uU3Rv
cmFnZU5hbWVzcGFjZSk7CisgICAgU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UqIG5ld1Nlc3Npb25T
dG9yYWdlTmFtZXNwYWNlID0gZ2V0T3JDcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShuZXdT
dG9yYWdlTmFtZXNwYWNlSUQpOworICAgIEFTU0VSVChuZXdTZXNzaW9uU3RvcmFnZU5hbWVzcGFj
ZSk7CiAKLSAgICAgICAgaWYgKCFtX2xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcikgewotICAg
ICAgICAgICAgaWYgKGF1dG8qIGxvY2FsU3RvcmFnZU5hbWVzcGFjZSA9IG1fbG9jYWxTdG9yYWdl
TmFtZXNwYWNlcy5nZXQoc3RvcmFnZU5hbWVzcGFjZUlEKSkgewotICAgICAgICAgICAgICAgIExv
Y2FsU3RvcmFnZU5hbWVzcGFjZSogbmV3bG9jYWxTdG9yYWdlTmFtZXNwYWNlID0gZ2V0T3JDcmVh
dGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UobmV3U3RvcmFnZU5hbWVzcGFjZUlEKTsKLSAgICAgICAg
ICAgICAgICBsb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPmNsb25lVG8oKm5ld2xvY2FsU3RvcmFnZU5h
bWVzcGFjZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9KTsKLX0KLQotdm9pZCBT
dG9yYWdlTWFuYWdlcjo6cHJvY2Vzc0RpZENsb3NlQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24pCi17Ci0gICAgaWYgKG1fY29ubmVjdGlvbnMucmVtb3ZlKGNvbm5lY3Rpb24u
dW5pcXVlSUQoKSkpCi0gICAgICAgIGNvbm5lY3Rpb24ucmVtb3ZlV29ya1F1ZXVlTWVzc2FnZVJl
Y2VpdmVyKE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsK
LQotICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIGNvbm5lY3Rpb25JRCA9IGNvbm5lY3Rpb24udW5pcXVlSUQoKV0oKSBtdXRhYmxlIHsK
LSAgICAgICAgVmVjdG9yPHN0ZDo6cGFpcjxJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCB1aW50
NjRfdD4+IGNvbm5lY3Rpb25BbmRTdG9yYWdlTWFwSURQYWlyc1RvUmVtb3ZlOwotICAgICAgICBm
b3IgKGF1dG8mIHN0b3JhZ2VBcmVhIDogbV9zdG9yYWdlQXJlYXNCeUNvbm5lY3Rpb24pIHsKLSAg
ICAgICAgICAgIGlmIChzdG9yYWdlQXJlYS5rZXkuZmlyc3QgIT0gY29ubmVjdGlvbklEKQotICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBzdG9yYWdl
QXJlYS52YWx1ZS0+cmVtb3ZlTGlzdGVuZXIoc3RvcmFnZUFyZWEua2V5LmZpcnN0LCBzdG9yYWdl
QXJlYS5rZXkuc2Vjb25kKTsKLSAgICAgICAgICAgIGNvbm5lY3Rpb25BbmRTdG9yYWdlTWFwSURQ
YWlyc1RvUmVtb3ZlLmFwcGVuZChzdG9yYWdlQXJlYS5rZXkpOwotICAgICAgICB9Ci0gICAgICAg
IAotICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBjb25uZWN0aW9uQW5kU3RvcmFnZU1hcElEUGFp
cnNUb1JlbW92ZSkKLSAgICAgICAgICAgIG1fc3RvcmFnZUFyZWFzQnlDb25uZWN0aW9uLnJlbW92
ZShwYWlyKTsKLQotICAgICAgICBWZWN0b3I8dWludDY0X3Q+IHNlc3Npb25TdG9yYWdlTmFtZVNw
YWNlSURzVG9SZW1vdmU7Ci0gICAgICAgIGZvciAoYXV0byYgc2Vzc2lvblN0b3JhZ2VOYW1lc3Bh
Y2UgOiBtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlcykgewotICAgICAgICAgICAgaWYgKHNlc3Np
b25TdG9yYWdlTmFtZXNwYWNlLnZhbHVlLT5hbGxvd2VkQ29ubmVjdGlvbnMoKS5jb250YWlucyhj
b25uZWN0aW9uSUQpKQotICAgICAgICAgICAgICAgIHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlLnZh
bHVlLT5yZW1vdmVBbGxvd2VkQ29ubmVjdGlvbihjb25uZWN0aW9uSUQpOwotICAgICAgICAgICAg
Ci0gICAgICAgICAgICBpZiAoc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UudmFsdWUtPmFsbG93ZWRD
b25uZWN0aW9ucygpLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICBzZXNzaW9uU3RvcmFnZU5h
bWVTcGFjZUlEc1RvUmVtb3ZlLmFwcGVuZChzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS5rZXkpOwot
ICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBmb3IgKGF1dG8gaWQgOiBzZXNzaW9uU3RvcmFn
ZU5hbWVTcGFjZUlEc1RvUmVtb3ZlKQotICAgICAgICAgICAgbV9zZXNzaW9uU3RvcmFnZU5hbWVz
cGFjZXMucmVtb3ZlKGlkKTsKLSAgICB9KTsKKyAgICBzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS0+
Y2xvbmVUbygqbmV3U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UpOwogfQogCiB2b2lkIFN0b3JhZ2VN
YW5hZ2VyOjpnZXRTZXNzaW9uU3RvcmFnZU9yaWdpbnMoRnVuY3Rpb248dm9pZChIYXNoU2V0PFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0g
ICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRh
YmxlIHsKLSAgICAgICAgSGFzaFNldDxTZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdpbnM7Ci0KLSAg
ICAgICAgZm9yIChjb25zdCBhdXRvJiBzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSA6IG1fc2Vzc2lv
blN0b3JhZ2VOYW1lc3BhY2VzLnZhbHVlcygpKSB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8mIG9y
aWdpbiA6IHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlLT5vcmlnaW5zKCkpCi0gICAgICAgICAgICAg
ICAgb3JpZ2lucy5hZGQob3JpZ2luKTsKLSAgICAgICAgfQotCi0gICAgICAgIFJ1bkxvb3A6Om1h
aW4oKS5kaXNwYXRjaChbb3JpZ2lucyA9IFdURk1vdmUob3JpZ2lucyksIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKG9yaWdpbnMpKTsKLSAgICAgICAgfSk7CisgICAg
QVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisgICAgSGFzaFNldDxTZWN1cml0eU9yaWdpbkRh
dGE+IG9yaWdpbnM7CisgICAgZm9yIChjb25zdCBhdXRvJiBzZXNzaW9uU3RvcmFnZU5hbWVzcGFj
ZSA6IG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLnZhbHVlcygpKSB7CisgICAgICAgIGZvciAo
YXV0byYgb3JpZ2luIDogc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UtPm9yaWdpbnMoKSkKKyAgICAg
ICAgICAgIG9yaWdpbnMuYWRkKG9yaWdpbik7CisgICAgfQorICAgIFJ1bkxvb3A6Om1haW4oKS5k
aXNwYXRjaChbb3JpZ2lucyA9IFdURk1vdmUob3JpZ2lucyksIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKFdURk1vdmUob3JpZ2lucykpOwogICAgIH0pOwogfQogCiB2b2lkIFN0b3JhZ2VN
YW5hZ2VyOjpkZWxldGVTZXNzaW9uU3RvcmFnZU9yaWdpbnMoRnVuY3Rpb248dm9pZCgpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewotICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgIGZvciAoYXV0byYgc2Vzc2lvblN0
b3JhZ2VOYW1lc3BhY2UgOiBtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkKLSAg
ICAgICAgICAgIHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlLT5jbGVhckFsbFN0b3JhZ2VBcmVhcygp
OworICAgIGZvciAoYXV0byYgc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UgOiBtX3Nlc3Npb25TdG9y
YWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkKKyAgICAgICAgc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2Ut
PmNsZWFyQWxsU3RvcmFnZUFyZWFzKCk7CiAKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3Bh
dGNoKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICB9KTsKKyAgICBSdW5Mb29wOjpt
YWluKCkuZGlzcGF0Y2goV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIFN0
b3JhZ2VNYW5hZ2VyOjpkZWxldGVTZXNzaW9uU3RvcmFnZUVudHJpZXNGb3JPcmlnaW5zKGNvbnN0
IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiBvcmlnaW5zLCBGdW5jdGlvbjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29waWVkT3JpZ2lucyA9IGNyb3Nz
VGhyZWFkQ29weShvcmlnaW5zKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgZm9yIChhdXRvJiBvcmlnaW4gOiBjb3Bp
ZWRPcmlnaW5zKSB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8mIHNlc3Npb25TdG9yYWdlTmFtZXNw
YWNlIDogbV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMudmFsdWVzKCkpCi0gICAgICAgICAgICAg
ICAgc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UtPmNsZWFyU3RvcmFnZUFyZWFzTWF0Y2hpbmdPcmln
aW4ob3JpZ2luKTsKLSAgICAgICAgfQorICAgIGZvciAoYXV0byYgb3JpZ2luIDogb3JpZ2lucykg
eworICAgICAgICBmb3IgKGF1dG8mIHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlIDogbV9zZXNzaW9u
U3RvcmFnZU5hbWVzcGFjZXMudmFsdWVzKCkpCisgICAgICAgICAgICBzZXNzaW9uU3RvcmFnZU5h
bWVzcGFjZS0+Y2xlYXJTdG9yYWdlQXJlYXNNYXRjaGluZ09yaWdpbihvcmlnaW4pOworICAgIH0K
IAotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOwotICAgIH0pOworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgU3RvcmFnZU1hbmFnZXI6OmdldExvY2FsU3Rv
cmFnZU9yaWdpbnMoRnVuY3Rpb248dm9pZChIYXNoU2V0PFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2go
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgSGFzaFNl
dDxTZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdpbnM7Ci0KLSAgICAgICAgaWYgKG1fbG9jYWxTdG9y
YWdlRGF0YWJhc2VUcmFja2VyKSB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IG1f
bG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLT5vcmlnaW5zKCkpCisgICAgSGFzaFNldDxTZWN1
cml0eU9yaWdpbkRhdGE+IG9yaWdpbnM7CisgICAgaWYgKG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VU
cmFja2VyKSB7CisgICAgICAgIGZvciAoYXV0byYgb3JpZ2luIDogbV9sb2NhbFN0b3JhZ2VEYXRh
YmFzZVRyYWNrZXItPm9yaWdpbnMoKSkKKyAgICAgICAgICAgIG9yaWdpbnMuYWRkKG9yaWdpbi5p
c29sYXRlZENvcHkoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBs
b2NhbFN0b3JhZ2VOYW1lU3BhY2UgOiBtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZXMudmFsdWVzKCkp
IHsKKyAgICAgICAgICAgIGZvciAoYXV0byYgb3JpZ2luIDogbG9jYWxTdG9yYWdlTmFtZVNwYWNl
LT5lcGhlbWVyYWxPcmlnaW5zKCkpCiAgICAgICAgICAgICAgICAgb3JpZ2lucy5hZGQob3JpZ2lu
Lmlzb2xhdGVkQ29weSgpKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGZvciAoY29u
c3QgYXV0byYgbG9jYWxTdG9yYWdlTmFtZVNwYWNlIDogbV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2Vz
LnZhbHVlcygpKSB7Ci0gICAgICAgICAgICAgICAgZm9yIChhdXRvJiBvcmlnaW4gOiBsb2NhbFN0
b3JhZ2VOYW1lU3BhY2UtPmVwaGVtZXJhbE9yaWdpbnMoKSkKLSAgICAgICAgICAgICAgICAgICAg
b3JpZ2lucy5hZGQob3JpZ2luLmlzb2xhdGVkQ29weSgpKTsKLSAgICAgICAgICAgIH0KICAgICAg
ICAgfQorICAgIH0KIAotICAgICAgICBmb3IgKGF1dG8mIHRyYW5zaWVudExvY2FsU3RvcmFnZU5h
bWVzcGFjZSA6IG1fdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkgewot
ICAgICAgICAgICAgZm9yIChhdXRvJiBvcmlnaW4gOiB0cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1l
c3BhY2UtPm9yaWdpbnMoKSkKLSAgICAgICAgICAgICAgICBvcmlnaW5zLmFkZChvcmlnaW4uaXNv
bGF0ZWRDb3B5KCkpOwotICAgICAgICB9CisgICAgZm9yIChhdXRvJiB0cmFuc2llbnRMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UgOiBtX3RyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZXMudmFsdWVz
KCkpIHsKKyAgICAgICAgZm9yIChhdXRvJiBvcmlnaW4gOiB0cmFuc2llbnRMb2NhbFN0b3JhZ2VO
YW1lc3BhY2UtPm9yaWdpbnMoKSkKKyAgICAgICAgICAgIG9yaWdpbnMuYWRkKG9yaWdpbi5pc29s
YXRlZENvcHkoKSk7CisgICAgfQogCi0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChb
b3JpZ2lucyA9IFdURk1vdmUob3JpZ2lucyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihXVEZNb3ZlKG9yaWdpbnMpKTsKLSAgICAgICAgfSk7CisgICAgUnVuTG9vcDo6bWFpbigp
LmRpc3BhdGNoKFtvcmlnaW5zID0gV1RGTW92ZShvcmlnaW5zKSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoV1RGTW92ZShvcmlnaW5zKSk7CiAgICAgfSk7CiB9CiAKIHZvaWQgU3RvcmFn
ZU1hbmFnZXI6OmdldExvY2FsU3RvcmFnZU9yaWdpbkRldGFpbHMoRnVuY3Rpb248dm9pZChWZWN0
b3I8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpPcmlnaW5EZXRhaWxzPiYmKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICBWZWN0b3I8TG9jYWxTdG9yYWdlRGF0
YWJhc2VUcmFja2VyOjpPcmlnaW5EZXRhaWxzPiBvcmlnaW5EZXRhaWxzOwotICAgICAgICBpZiAo
bV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIpCi0gICAgICAgICAgICBvcmlnaW5EZXRhaWxz
ID0gbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXItPm9yaWdpbkRldGFpbHMoKS5pc29sYXRl
ZENvcHkoKTsKKyAgICBWZWN0b3I8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpPcmlnaW5E
ZXRhaWxzPiBvcmlnaW5EZXRhaWxzOworICAgIGlmIChtX2xvY2FsU3RvcmFnZURhdGFiYXNlVHJh
Y2tlcikKKyAgICAgICAgb3JpZ2luRGV0YWlscyA9IG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFj
a2VyLT5vcmlnaW5EZXRhaWxzKCkuaXNvbGF0ZWRDb3B5KCk7CiAKLSAgICAgICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFtvcmlnaW5EZXRhaWxzID0gV1RGTW92ZShvcmlnaW5EZXRhaWxzKSwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxl
IHsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUob3JpZ2luRGV0YWlscykp
OwotICAgICAgICB9KTsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW29yaWdpbkRldGFp
bHMgPSBXVEZNb3ZlKG9yaWdpbkRldGFpbHMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihXVEZNb3ZlKG9yaWdpbkRldGFpbHMpKTsKICAgICB9KTsKIH0KIAotdm9pZCBTdG9yYWdlTWFu
YWdlcjo6ZGVsZXRlTG9jYWxTdG9yYWdlRW50cmllc0Zvck9yaWdpbihjb25zdCBTZWN1cml0eU9y
aWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKQordm9pZCBTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlTG9j
YWxTdG9yYWdlT3JpZ2luc01vZGlmaWVkU2luY2UoV2FsbFRpbWUgdGltZSwgRnVuY3Rpb248dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvcGllZE9yaWdpbiA9IHNlY3VyaXR5
T3JpZ2luLmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUgewotICAgICAgICBmb3IgKGF1dG8mIGxv
Y2FsU3RvcmFnZU5hbWVzcGFjZSA6IG1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkK
LSAgICAgICAgICAgIGxvY2FsU3RvcmFnZU5hbWVzcGFjZS0+Y2xlYXJTdG9yYWdlQXJlYXNNYXRj
aGluZ09yaWdpbihjb3BpZWRPcmlnaW4pOworICAgIGlmIChtX2xvY2FsU3RvcmFnZURhdGFiYXNl
VHJhY2tlcikgeworICAgICAgICBhdXRvIG9yaWdpbnNUb0RlbGV0ZSA9IG1fbG9jYWxTdG9yYWdl
RGF0YWJhc2VUcmFja2VyLT5kYXRhYmFzZXNNb2RpZmllZFNpbmNlKHRpbWUpOwogCiAgICAgICAg
IGZvciAoYXV0byYgdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlIDogbV90cmFuc2llbnRM
b2NhbFN0b3JhZ2VOYW1lc3BhY2VzLnZhbHVlcygpKQotICAgICAgICAgICAgdHJhbnNpZW50TG9j
YWxTdG9yYWdlTmFtZXNwYWNlLT5jbGVhclN0b3JhZ2VBcmVhc01hdGNoaW5nT3JpZ2luKGNvcGll
ZE9yaWdpbik7CisgICAgICAgICAgICB0cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPmNs
ZWFyQWxsU3RvcmFnZUFyZWFzKCk7CiAKLSAgICAgICAgaWYgKG1fbG9jYWxTdG9yYWdlRGF0YWJh
c2VUcmFja2VyKQotICAgICAgICAgICAgbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXItPmRl
bGV0ZURhdGFiYXNlV2l0aE9yaWdpbihjb3BpZWRPcmlnaW4pOwotICAgIH0pOwotfQotCi12b2lk
IFN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVMb2NhbFN0b3JhZ2VPcmlnaW5zTW9kaWZpZWRTaW5jZShX
YWxsVGltZSB0aW1lLCBGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0g
ICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgdGltZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0o
KSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyKSB7
Ci0gICAgICAgICAgICBhdXRvIG9yaWdpbnNUb0RlbGV0ZSA9IG1fbG9jYWxTdG9yYWdlRGF0YWJh
c2VUcmFja2VyLT5kYXRhYmFzZXNNb2RpZmllZFNpbmNlKHRpbWUpOwotICAgICAgICAgICAgCi0g
ICAgICAgICAgICBmb3IgKGF1dG8mIHRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSA6IG1f
dHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkKLSAgICAgICAgICAgICAg
ICB0cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPmNsZWFyQWxsU3RvcmFnZUFyZWFzKCk7
Ci0KLSAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgb3JpZ2luIDogb3JpZ2luc1RvRGVsZXRl
KSB7Ci0gICAgICAgICAgICAgICAgZm9yIChhdXRvJiBsb2NhbFN0b3JhZ2VOYW1lc3BhY2UgOiBt
X2xvY2FsU3RvcmFnZU5hbWVzcGFjZXMudmFsdWVzKCkpCi0gICAgICAgICAgICAgICAgICAgIGxv
Y2FsU3RvcmFnZU5hbWVzcGFjZS0+Y2xlYXJTdG9yYWdlQXJlYXNNYXRjaGluZ09yaWdpbihvcmln
aW4pOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIG1fbG9jYWxTdG9yYWdlRGF0
YWJhc2VUcmFja2VyLT5kZWxldGVEYXRhYmFzZVdpdGhPcmlnaW4ob3JpZ2luKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBvcmlnaW4g
OiBvcmlnaW5zVG9EZWxldGUpIHsKICAgICAgICAgICAgIGZvciAoYXV0byYgbG9jYWxTdG9yYWdl
TmFtZXNwYWNlIDogbV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2VzLnZhbHVlcygpKQotICAgICAgICAg
ICAgICAgIGxvY2FsU3RvcmFnZU5hbWVzcGFjZS0+Y2xlYXJBbGxTdG9yYWdlQXJlYXMoKTsKKyAg
ICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPmNsZWFyU3RvcmFnZUFyZWFzTWF0
Y2hpbmdPcmlnaW4ob3JpZ2luKTsKKyAgICAgICAgICAgIG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VU
cmFja2VyLT5kZWxldGVEYXRhYmFzZVdpdGhPcmlnaW4ob3JpZ2luKTsKICAgICAgICAgfQorICAg
IH0gZWxzZSB7CisgICAgICAgIGZvciAoYXV0byYgbG9jYWxTdG9yYWdlTmFtZXNwYWNlIDogbV9s
b2NhbFN0b3JhZ2VOYW1lc3BhY2VzLnZhbHVlcygpKQorICAgICAgICAgICAgbG9jYWxTdG9yYWdl
TmFtZXNwYWNlLT5jbGVhckFsbFN0b3JhZ2VBcmVhcygpOworICAgIH0KIAotICAgICAgICBSdW5M
b29wOjptYWluKCkuZGlzcGF0Y2goV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgIH0p
OworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CiB9CiAKIHZvaWQgU3RvcmFnZU1hbmFnZXI6OmRlbGV0ZUxvY2FsU3RvcmFnZUVudHJpZXNG
b3JPcmlnaW5zKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiBvcmln
aW5zLCBGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgbV9xdWV1
ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29waWVk
T3JpZ2lucyA9IGNyb3NzVGhyZWFkQ29weShvcmlnaW5zKSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgZm9yIChhdXRv
JiBvcmlnaW4gOiBjb3BpZWRPcmlnaW5zKSB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8mIGxvY2Fs
U3RvcmFnZU5hbWVzcGFjZSA6IG1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkKLSAg
ICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPmNsZWFyU3RvcmFnZUFyZWFzTWF0
Y2hpbmdPcmlnaW4ob3JpZ2luKTsKKyAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IG9yaWdpbnMpIHsK
KyAgICAgICAgZm9yIChhdXRvJiBsb2NhbFN0b3JhZ2VOYW1lc3BhY2UgOiBtX2xvY2FsU3RvcmFn
ZU5hbWVzcGFjZXMudmFsdWVzKCkpCisgICAgICAgICAgICBsb2NhbFN0b3JhZ2VOYW1lc3BhY2Ut
PmNsZWFyU3RvcmFnZUFyZWFzTWF0Y2hpbmdPcmlnaW4ob3JpZ2luKTsKIAotICAgICAgICAgICAg
Zm9yIChhdXRvJiB0cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UgOiBtX3RyYW5zaWVudExv
Y2FsU3RvcmFnZU5hbWVzcGFjZXMudmFsdWVzKCkpCi0gICAgICAgICAgICAgICAgdHJhbnNpZW50
TG9jYWxTdG9yYWdlTmFtZXNwYWNlLT5jbGVhclN0b3JhZ2VBcmVhc01hdGNoaW5nT3JpZ2luKG9y
aWdpbik7CisgICAgICAgIGZvciAoYXV0byYgdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNl
IDogbV90cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2VzLnZhbHVlcygpKQorICAgICAgICAg
ICAgdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlLT5jbGVhclN0b3JhZ2VBcmVhc01hdGNo
aW5nT3JpZ2luKG9yaWdpbik7CiAKLSAgICAgICAgICAgIGlmIChtX2xvY2FsU3RvcmFnZURhdGFi
YXNlVHJhY2tlcikKLSAgICAgICAgICAgICAgICBtX2xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tl
ci0+ZGVsZXRlRGF0YWJhc2VXaXRoT3JpZ2luKG9yaWdpbik7Ci0gICAgICAgIH0KKyAgICAgICAg
aWYgKG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyKQorICAgICAgICAgICAgbV9sb2NhbFN0
b3JhZ2VEYXRhYmFzZVRyYWNrZXItPmRlbGV0ZURhdGFiYXNlV2l0aE9yaWdpbihvcmlnaW4pOwor
ICAgIH0KIAotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOwotICAgIH0pOworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgU3RvcmFnZU1hbmFnZXI6OmNyZWF0
ZUxvY2FsU3RvcmFnZU1hcChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVpbnQ2NF90IHN0
b3JhZ2VNYXBJRCwgdWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBTZWN1cml0eU9yaWdpbkRh
dGEmJiBzZWN1cml0eU9yaWdpbkRhdGEpCitTdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUFyZWEqIFN0
b3JhZ2VNYW5hZ2VyOjpjcmVhdGVMb2NhbFN0b3JhZ2VBcmVhKHVpbnQ2NF90IHN0b3JhZ2VOYW1l
c3BhY2VJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgb3JpZ2luRGF0YSkKIHsKICAg
ICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBhdXRvIGNvbm5lY3Rpb25JRCA9IGNv
bm5lY3Rpb24udW5pcXVlSUQoKTsKLSAgICBzdGQ6OnBhaXI8SVBDOjpDb25uZWN0aW9uOjpVbmlx
dWVJRCwgdWludDY0X3Q+IGNvbm5lY3Rpb25BbmRTdG9yYWdlTWFwSURQYWlyKGNvbm5lY3Rpb25J
RCwgc3RvcmFnZU1hcElEKTsKLQotICAgIEFTU0VSVCgoSGFzaE1hcDxzdGQ6OnBhaXI8SVBDOjpD
b25uZWN0aW9uOjpVbmlxdWVJRCwgdWludDY0X3Q+LCBSZWZQdHI8U3RvcmFnZUFyZWE+Pjo6aXNW
YWxpZEtleShjb25uZWN0aW9uQW5kU3RvcmFnZU1hcElEUGFpcikpKTsKLQotICAgIGF1dG8gcmVz
dWx0ID0gbV9zdG9yYWdlQXJlYXNCeUNvbm5lY3Rpb24uYWRkKGNvbm5lY3Rpb25BbmRTdG9yYWdl
TWFwSURQYWlyLCBudWxscHRyKTsKLSAgICBBU1NFUlQocmVzdWx0LmlzTmV3RW50cnkpOwogICAg
IEFTU0VSVCgoSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPExvY2FsU3RvcmFnZU5hbWVzcGFjZT4+
Ojppc1ZhbGlkS2V5KHN0b3JhZ2VOYW1lc3BhY2VJRCkpKTsKIAogICAgIExvY2FsU3RvcmFnZU5h
bWVzcGFjZSogbG9jYWxTdG9yYWdlTmFtZXNwYWNlID0gZ2V0T3JDcmVhdGVMb2NhbFN0b3JhZ2VO
YW1lc3BhY2Uoc3RvcmFnZU5hbWVzcGFjZUlEKTsKICAgICBBU1NFUlQobG9jYWxTdG9yYWdlTmFt
ZXNwYWNlKTsKIAotICAgIGF1dG8gc3RvcmFnZUFyZWEgPSBsb2NhbFN0b3JhZ2VOYW1lc3BhY2Ut
PmdldE9yQ3JlYXRlU3RvcmFnZUFyZWEoV1RGTW92ZShzZWN1cml0eU9yaWdpbkRhdGEpLCBtX2xv
Y2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlciA/IFN0b3JhZ2VNYW5hZ2VyOjpMb2NhbFN0b3JhZ2VO
YW1lc3BhY2U6OklzRXBoZW1lcmFsOjpObyA6IFN0b3JhZ2VNYW5hZ2VyOjpMb2NhbFN0b3JhZ2VO
YW1lc3BhY2U6OklzRXBoZW1lcmFsOjpZZXMpOwotICAgIHN0b3JhZ2VBcmVhLT5hZGRMaXN0ZW5l
cihjb25uZWN0aW9uSUQsIHN0b3JhZ2VNYXBJRCk7Ci0KLSAgICByZXN1bHQuaXRlcmF0b3ItPnZh
bHVlID0gV1RGTW92ZShzdG9yYWdlQXJlYSk7Ci19Ci0KLXZvaWQgU3RvcmFnZU1hbmFnZXI6OmNy
ZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU1hcChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
IHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCwgdWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBTZWN1
cml0eU9yaWdpbkRhdGEmJiB0b3BMZXZlbE9yaWdpbkRhdGEsIFNlY3VyaXR5T3JpZ2luRGF0YSYm
IG9yaWdpbikKLXsKLSAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBhdXRvIGNv
bm5lY3Rpb25JRCA9IGNvbm5lY3Rpb24udW5pcXVlSUQoKTsKLQotICAgIEFTU0VSVChtX3N0b3Jh
Z2VBcmVhc0J5Q29ubmVjdGlvbi5pc1ZhbGlkS2V5KHsgY29ubmVjdGlvbklELCBzdG9yYWdlTWFw
SUQgfSkpOwotCi0gICAgLy8gU2VlIGlmIHdlIGFscmVhZHkgaGF2ZSBzZXNzaW9uIHN0b3JhZ2Ug
Zm9yIHRoaXMgY29ubmVjdGlvbi9vcmlnaW4gY29tYm8uCi0gICAgLy8gSWYgc28sIHVwZGF0ZSB0
aGUgbWFwIHdpdGggdGhlIG5ldyBJRCwgb3RoZXJ3aXNlIGtlZXAgb24gdHJ1Y2tpbmcuCi0gICAg
Zm9yIChhdXRvIGl0ID0gbV9zdG9yYWdlQXJlYXNCeUNvbm5lY3Rpb24uYmVnaW4oKSwgZW5kID0g
bV9zdG9yYWdlQXJlYXNCeUNvbm5lY3Rpb24uZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAg
ICAgICBpZiAoaXQtPmtleS5maXJzdCAhPSBjb25uZWN0aW9uSUQpCi0gICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgUmVmPFN0b3JhZ2VBcmVhPiBhcmVhID0gKml0LT52YWx1ZTsKLSAgICAg
ICAgaWYgKCFhcmVhLT5pc0VwaGVtZXJhbCgpKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgIGlmICghb3JpZ2luLnNlY3VyaXR5T3JpZ2luKCktPmlzU2FtZVNjaGVtZUhvc3RQb3J0KGFy
ZWEtPnNlY3VyaXR5T3JpZ2luKCkuc2VjdXJpdHlPcmlnaW4oKS5nZXQoKSkpCi0gICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgYXJlYS0+YWRkTGlzdGVuZXIoY29ubmVjdGlvbklELCBzdG9y
YWdlTWFwSUQpOwotICAgICAgICAvLyBJZiB0aGUgc3RvcmFnZU1hcElEIHVzZWQgYXMga2V5IGlu
IG1fc3RvcmFnZUFyZWFzQnlDb25uZWN0aW9uIGlzIG5vIGxvbmdlciBvbmUgb2YgdGhlIFN0b3Jh
Z2VBcmVhJ3MgbGlzdGVuZXJzLCB0aGVuIHRoaXMgbWVhbnMKLSAgICAgICAgLy8gdGhhdCBkZXN0
cm95U3RvcmFnZU1hcCgpIHdhcyBhbHJlYWR5IGNhbGxlZCBmb3IgdGhhdCBzdG9yYWdlTWFwSUQg
YnV0IGl0IGRlY2lkZWQgbm90IHRvIHJlbW92ZSBpdCBmcm9tIG1fc3RvcmFnZUFyZWFzQnlDb25u
ZWN0aW9uCi0gICAgICAgIC8vIHNvIHRoYXQgd2UgY291bGQgcmV1c2UgaXQgbGF0ZXIgb24gZm9y
IHRoZSBzYW1lIGNvbm5lY3Rpb24vb3JpZ2luIGNvbWJvLiBJbiB0aGlzIGNhc2UsIGl0IGlzIHNh
ZmUgdG8gcmVtb3ZlIHRoZSBwcmV2aW91cwotICAgICAgICAvLyBzdG9yYWdlTWFwSUQgZnJvbSBt
X3N0b3JhZ2VBcmVhc0J5Q29ubmVjdGlvbi4KLSAgICAgICAgaWYgKCFhcmVhLT5oYXNMaXN0ZW5l
cihjb25uZWN0aW9uSUQsIGl0LT5rZXkuc2Vjb25kKSkKLSAgICAgICAgICAgIG1fc3RvcmFnZUFy
ZWFzQnlDb25uZWN0aW9uLnJlbW92ZShpdCk7Ci0gICAgICAgIG1fc3RvcmFnZUFyZWFzQnlDb25u
ZWN0aW9uLmFkZCh7IGNvbm5lY3Rpb25JRCwgc3RvcmFnZU1hcElEIH0sIFdURk1vdmUoYXJlYSkp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgYXV0byYgc2xvdCA9IG1fc3RvcmFnZUFy
ZWFzQnlDb25uZWN0aW9uLmFkZCh7IGNvbm5lY3Rpb25JRCwgc3RvcmFnZU1hcElEIH0sIG51bGxw
dHIpLml0ZXJhdG9yLT52YWx1ZTsKLSAgICBBU1NFUlQoIXNsb3QpOwotCi0gICAgYXV0byogdHJh
bnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlID0gZ2V0T3JDcmVhdGVUcmFuc2llbnRMb2NhbFN0
b3JhZ2VOYW1lc3BhY2Uoc3RvcmFnZU5hbWVzcGFjZUlELCBXVEZNb3ZlKHRvcExldmVsT3JpZ2lu
RGF0YSkpOwotCi0gICAgYXV0byBzdG9yYWdlQXJlYSA9IHRyYW5zaWVudExvY2FsU3RvcmFnZU5h
bWVzcGFjZS0+Z2V0T3JDcmVhdGVTdG9yYWdlQXJlYShXVEZNb3ZlKG9yaWdpbikpOwotICAgIHN0
b3JhZ2VBcmVhLT5hZGRMaXN0ZW5lcihjb25uZWN0aW9uSUQsIHN0b3JhZ2VNYXBJRCk7Ci0KLSAg
ICBzbG90ID0gV1RGTW92ZShzdG9yYWdlQXJlYSk7Ci19Ci0KLXZvaWQgU3RvcmFnZU1hbmFnZXI6
OmNyZWF0ZVNlc3Npb25TdG9yYWdlTWFwKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgdWlu
dDY0X3Qgc3RvcmFnZU1hcElELCB1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIFNlY3VyaXR5
T3JpZ2luRGF0YSYmIHNlY3VyaXR5T3JpZ2luRGF0YSkKLXsKLSAgICBBU1NFUlQoIVJ1bkxvb3A6
OmlzTWFpbigpKTsKLSAgICBhdXRvIGNvbm5lY3Rpb25JRCA9IGNvbm5lY3Rpb24udW5pcXVlSUQo
KTsKLSAgICBBU1NFUlQobV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMuaXNWYWxpZEtleShzdG9y
YWdlTmFtZXNwYWNlSUQpKTsKLQotICAgIFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKiBzZXNzaW9u
U3RvcmFnZU5hbWVzcGFjZSA9IG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLmdldChzdG9yYWdl
TmFtZXNwYWNlSUQpOwotICAgIGlmICghc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UpIHsKLSAgICAg
ICAgLy8gV2UncmUgZ2V0dGluZyBhbiBpbmNvbWluZyBtZXNzYWdlIGZyb20gdGhlIHdlYiBwcm9j
ZXNzIHRoYXQncyBmb3Igc2Vzc2lvbiBzdG9yYWdlIGZvciBhIHdlYiBwYWdlCi0gICAgICAgIC8v
IHRoYXQgaGFzIGFscmVhZHkgYmVlbiBjbG9zZWQsIGp1c3QgaWdub3JlIGl0LgotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUKG1fc3RvcmFnZUFyZWFzQnlDb25uZWN0aW9uLmlz
VmFsaWRLZXkoeyBjb25uZWN0aW9uSUQsIHN0b3JhZ2VNYXBJRCB9KSk7Ci0KLSAgICBhdXRvJiBz
bG90ID0gbV9zdG9yYWdlQXJlYXNCeUNvbm5lY3Rpb24uYWRkKHsgY29ubmVjdGlvbklELCBzdG9y
YWdlTWFwSUQgfSwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwotICAgIEFTU0VSVCghc2xvdCk7
Ci0gICAgQVNTRVJUKHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlLT5hbGxvd2VkQ29ubmVjdGlvbnMo
KS5jb250YWlucyhjb25uZWN0aW9uSUQpKTsKLQotICAgIGF1dG8gc3RvcmFnZUFyZWEgPSBzZXNz
aW9uU3RvcmFnZU5hbWVzcGFjZS0+Z2V0T3JDcmVhdGVTdG9yYWdlQXJlYShXVEZNb3ZlKHNlY3Vy
aXR5T3JpZ2luRGF0YSkpOwotICAgIHN0b3JhZ2VBcmVhLT5hZGRMaXN0ZW5lcihjb25uZWN0aW9u
SUQsIHN0b3JhZ2VNYXBJRCk7Ci0KLSAgICBzbG90ID0gV1RGTW92ZShzdG9yYWdlQXJlYSk7Ci19
Ci0KLXZvaWQgU3RvcmFnZU1hbmFnZXI6OmRlc3Ryb3lTdG9yYWdlTWFwKElQQzo6Q29ubmVjdGlv
biYgY29ubmVjdGlvbiwgdWludDY0X3Qgc3RvcmFnZU1hcElEKQotewotICAgIEFTU0VSVCghUnVu
TG9vcDo6aXNNYWluKCkpOwotICAgIGF1dG8gY29ubmVjdGlvbklEID0gY29ubmVjdGlvbi51bmlx
dWVJRCgpOwotCi0gICAgc3RkOjpwYWlyPElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIHVpbnQ2
NF90PiBjb25uZWN0aW9uQW5kU3RvcmFnZU1hcElEUGFpcihjb25uZWN0aW9uSUQsIHN0b3JhZ2VN
YXBJRCk7Ci0gICAgQVNTRVJUKG1fc3RvcmFnZUFyZWFzQnlDb25uZWN0aW9uLmlzVmFsaWRLZXko
Y29ubmVjdGlvbkFuZFN0b3JhZ2VNYXBJRFBhaXIpKTsKLQotICAgIGF1dG8gaXQgPSBtX3N0b3Jh
Z2VBcmVhc0J5Q29ubmVjdGlvbi5maW5kKGNvbm5lY3Rpb25BbmRTdG9yYWdlTWFwSURQYWlyKTsK
LSAgICBpZiAoaXQgPT0gbV9zdG9yYWdlQXJlYXNCeUNvbm5lY3Rpb24uZW5kKCkpIHsKLSAgICAg
ICAgLy8gVGhlIGNvbm5lY3Rpb24gaGFzIGJlZW4gcmVtb3ZlZCBiZWNhdXNlIHRoZSBsYXN0IHBh
Z2Ugd2FzIGNsb3NlZC4KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGl0LT52YWx1ZS0+
cmVtb3ZlTGlzdGVuZXIoY29ubmVjdGlvbklELCBzdG9yYWdlTWFwSUQpOwotCi0gICAgLy8gRG9u
J3QgcmVtb3ZlIHNlc3Npb24gc3RvcmFnZSBtYXBzLiBUaGUgd2ViIHByb2Nlc3MgbWF5IHJlY29u
bmVjdCBhbmQgZXhwZWN0IHRoZSBkYXRhIHRvIHN0aWxsIGJlIGFyb3VuZC4KLSAgICBpZiAoaXQt
PnZhbHVlLT5pc0VwaGVtZXJhbCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3N0b3JhZ2VB
cmVhc0J5Q29ubmVjdGlvbi5yZW1vdmUoY29ubmVjdGlvbkFuZFN0b3JhZ2VNYXBJRFBhaXIpOwot
fQotCi12b2lkIFN0b3JhZ2VNYW5hZ2VyOjpwcmV3YXJtKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgdWludDY0X3Qgc3RvcmFnZU1hcElEKQotewotICAgIEFTU0VSVCghUnVuTG9vcDo6aXNN
YWluKCkpOwotICAgIGlmIChhdXRvKiBzdG9yYWdlQXJlYSA9IGZpbmRTdG9yYWdlQXJlYShjb25u
ZWN0aW9uLCBzdG9yYWdlTWFwSUQpKQotICAgICAgICBzdG9yYWdlQXJlYS0+b3BlbkRhdGFiYXNl
QW5kSW1wb3J0SXRlbXNJZk5lZWRlZCgpOwotfQotCi12b2lkIFN0b3JhZ2VNYW5hZ2VyOjpnZXRW
YWx1ZXMoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCB1aW50NjRfdCBzdG9yYWdlTWFwSUQs
IHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkLCBHZXRWYWx1ZXNDYWxsYmFjayYmIGNvbXBsZXRpb25I
YW5kbGVyKQotewotICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIGF1dG8qIHN0
b3JhZ2VBcmVhID0gZmluZFN0b3JhZ2VBcmVhKGNvbm5lY3Rpb24sIHN0b3JhZ2VNYXBJRCk7Ci0K
LSAgICAvLyBUaGlzIGlzIGEgc2Vzc2lvbiBzdG9yYWdlIGFyZWEgZm9yIGEgcGFnZSB0aGF0IGhh
cyBhbHJlYWR5IGJlZW4gY2xvc2VkLiBJZ25vcmUgaXQuCi0gICAgaWYgKCFzdG9yYWdlQXJlYSkK
LSAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7Ci0KLSAgICBjb21wbGV0aW9u
SGFuZGxlcihzdG9yYWdlQXJlYS0+aXRlbXMoKSk7Ci0gICAgY29ubmVjdGlvbi5zZW5kKE1lc3Nh
Z2VzOjpTdG9yYWdlQXJlYU1hcDo6RGlkR2V0VmFsdWVzKHN0b3JhZ2VNYXBTZWVkKSwgc3RvcmFn
ZU1hcElEKTsKLX0KLQotdm9pZCBTdG9yYWdlTWFuYWdlcjo6c2V0SXRlbShJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIHNlY3VyaXR5T3Jp
Z2luRGF0YSwgdWludDY0X3Qgc3RvcmFnZU1hcElELCB1aW50NjRfdCBzb3VyY2VTdG9yYWdlQXJl
YUlELCB1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0
cmluZyYgdmFsdWUsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQotewotICAgIEFTU0VSVCghUnVu
TG9vcDo6aXNNYWluKCkpOwotICAgIGF1dG8qIHN0b3JhZ2VBcmVhID0gZmluZFN0b3JhZ2VBcmVh
KGNvbm5lY3Rpb24sIHN0b3JhZ2VNYXBJRCk7Ci0KLSAgICAvLyBUaGlzIGlzIGEgc2Vzc2lvbiBz
dG9yYWdlIGFyZWEgZm9yIGEgcGFnZSB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gY2xvc2VkLiBJZ25v
cmUgaXQuCi0gICAgaWYgKCFzdG9yYWdlQXJlYSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYm9v
bCBxdW90YUVycm9yOwotICAgIHN0b3JhZ2VBcmVhLT5zZXRJdGVtKGNvbm5lY3Rpb24udW5pcXVl
SUQoKSwgc291cmNlU3RvcmFnZUFyZWFJRCwga2V5LCB2YWx1ZSwgdXJsU3RyaW5nLCBxdW90YUVy
cm9yKTsKLSAgICBjb25uZWN0aW9uLnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VBcmVhTWFwOjpEaWRT
ZXRJdGVtKHN0b3JhZ2VNYXBTZWVkLCBrZXksIHF1b3RhRXJyb3IpLCBzdG9yYWdlTWFwSUQpOwot
fQotCi12b2lkIFN0b3JhZ2VNYW5hZ2VyOjpzZXRJdGVtcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24sIHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCwgY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmlu
Zz4mIGl0ZW1zKQotewotICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIGlmIChh
dXRvKiBzdG9yYWdlQXJlYSA9IGZpbmRTdG9yYWdlQXJlYShjb25uZWN0aW9uLCBzdG9yYWdlTWFw
SUQpKQotICAgICAgICBzdG9yYWdlQXJlYS0+c2V0SXRlbXMoaXRlbXMpOworICAgIHJldHVybiBs
b2NhbFN0b3JhZ2VOYW1lc3BhY2UtPmdldE9yQ3JlYXRlU3RvcmFnZUFyZWEoV1RGTW92ZShvcmln
aW5EYXRhKSwgbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIgPyBTdG9yYWdlTWFuYWdlcjo6
TG9jYWxTdG9yYWdlTmFtZXNwYWNlOjpJc0VwaGVtZXJhbDo6Tm8gOiBTdG9yYWdlTWFuYWdlcjo6
TG9jYWxTdG9yYWdlTmFtZXNwYWNlOjpJc0VwaGVtZXJhbDo6WWVzKS5wdHIoKTsKIH0KIAotdm9p
ZCBTdG9yYWdlTWFuYWdlcjo6cmVtb3ZlSXRlbShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIHNlY3VyaXR5T3JpZ2luRGF0YSwgdWludDY0
X3Qgc3RvcmFnZU1hcElELCB1aW50NjRfdCBzb3VyY2VTdG9yYWdlQXJlYUlELCB1aW50NjRfdCBz
dG9yYWdlTWFwU2VlZCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5n
KQorU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VBcmVhKiBTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlVHJh
bnNpZW50TG9jYWxTdG9yYWdlQXJlYSh1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIHRvcExldmVsT3JpZ2luRGF0YSwgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhJiYgb3JpZ2luRGF0YSkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6Omlz
TWFpbigpKTsKLSAgICBhdXRvKiBzdG9yYWdlQXJlYSA9IGZpbmRTdG9yYWdlQXJlYShjb25uZWN0
aW9uLCBzdG9yYWdlTWFwSUQpOworICAgIEFTU0VSVCgoSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRy
PFRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZT4+Ojppc1ZhbGlkS2V5KHN0b3JhZ2VOYW1l
c3BhY2VJRCkpKTsKIAotICAgIC8vIFRoaXMgaXMgYSBzZXNzaW9uIHN0b3JhZ2UgYXJlYSBmb3Ig
YSBwYWdlIHRoYXQgaGFzIGFscmVhZHkgYmVlbiBjbG9zZWQuIElnbm9yZSBpdC4KLSAgICBpZiAo
IXN0b3JhZ2VBcmVhKQotICAgICAgICByZXR1cm47Ci0KLSAgICBzdG9yYWdlQXJlYS0+cmVtb3Zl
SXRlbShjb25uZWN0aW9uLnVuaXF1ZUlEKCksIHNvdXJjZVN0b3JhZ2VBcmVhSUQsIGtleSwgdXJs
U3RyaW5nKTsKLSAgICBjb25uZWN0aW9uLnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VBcmVhTWFwOjpE
aWRSZW1vdmVJdGVtKHN0b3JhZ2VNYXBTZWVkLCBrZXkpLCBzdG9yYWdlTWFwSUQpOworICAgIGF1
dG8qIHRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSA9IGdldE9yQ3JlYXRlVHJhbnNpZW50
TG9jYWxTdG9yYWdlTmFtZXNwYWNlKHN0b3JhZ2VOYW1lc3BhY2VJRCwgdG9wTGV2ZWxPcmlnaW5E
YXRhLmlzb2xhdGVkQ29weSgpKTsKKyAgICByZXR1cm4gdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFt
ZXNwYWNlLT5nZXRPckNyZWF0ZVN0b3JhZ2VBcmVhKFdURk1vdmUodG9wTGV2ZWxPcmlnaW5EYXRh
KSkucHRyKCk7CiB9CiAKLXZvaWQgU3RvcmFnZU1hbmFnZXI6OmNsZWFyKElQQzo6Q29ubmVjdGlv
biYgY29ubmVjdGlvbiwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgc2VjdXJpdHlPcmln
aW5EYXRhLCB1aW50NjRfdCBzdG9yYWdlTWFwSUQsIHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVh
SUQsIHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZykKK1N0
b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQXJlYSogU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZVNlc3Npb25T
dG9yYWdlQXJlYSh1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYmIG9yaWdpbkRhdGEpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4o
KSk7Ci0gICAgYXV0byogc3RvcmFnZUFyZWEgPSBmaW5kU3RvcmFnZUFyZWEoY29ubmVjdGlvbiwg
c3RvcmFnZU1hcElEKTsKLQotICAgIC8vIFRoaXMgaXMgYSBzZXNzaW9uIHN0b3JhZ2UgYXJlYSBm
b3IgYSBwYWdlIHRoYXQgaGFzIGFscmVhZHkgYmVlbiBjbG9zZWQuIElnbm9yZSBpdC4KLSAgICBp
ZiAoIXN0b3JhZ2VBcmVhKQotICAgICAgICByZXR1cm47CisgICAgQVNTRVJUKChIYXNoTWFwPHVp
bnQ2NF90LCBSZWZQdHI8U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2U+Pjo6aXNWYWxpZEtleShzdG9y
YWdlTmFtZXNwYWNlSUQpKSk7CiAKLSAgICBzdG9yYWdlQXJlYS0+Y2xlYXIoY29ubmVjdGlvbi51
bmlxdWVJRCgpLCBzb3VyY2VTdG9yYWdlQXJlYUlELCB1cmxTdHJpbmcpOwotICAgIGNvbm5lY3Rp
b24uc2VuZChNZXNzYWdlczo6U3RvcmFnZUFyZWFNYXA6OkRpZENsZWFyKHN0b3JhZ2VNYXBTZWVk
KSwgc3RvcmFnZU1hcElEKTsKLX0KLQotdm9pZCBTdG9yYWdlTWFuYWdlcjo6d2FpdFVudGlsVGFz
a3NGaW5pc2hlZCgpCi17Ci0gICAgQmluYXJ5U2VtYXBob3JlIHNlbWFwaG9yZTsKLSAgICBtX3F1
ZXVlLT5kaXNwYXRjaChbdGhpcywgJnNlbWFwaG9yZV0gewotICAgICAgICBWZWN0b3I8c3RkOjpw
YWlyPElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIHVpbnQ2NF90Pj4gY29ubmVjdGlvbkFuZFN0
b3JhZ2VNYXBJRFBhaXJzVG9SZW1vdmU7Ci0gICAgICAgIGZvciAoYXV0byYgY29ubmVjdGlvblN0
b3JhZ2VBcmVhUGFpciA6IG1fc3RvcmFnZUFyZWFzQnlDb25uZWN0aW9uKSB7Ci0gICAgICAgICAg
ICBjb25uZWN0aW9uU3RvcmFnZUFyZWFQYWlyLnZhbHVlLT5yZW1vdmVMaXN0ZW5lcihjb25uZWN0
aW9uU3RvcmFnZUFyZWFQYWlyLmtleS5maXJzdCwgY29ubmVjdGlvblN0b3JhZ2VBcmVhUGFpci5r
ZXkuc2Vjb25kKTsKLSAgICAgICAgICAgIGNvbm5lY3Rpb25BbmRTdG9yYWdlTWFwSURQYWlyc1Rv
UmVtb3ZlLmFwcGVuZChjb25uZWN0aW9uU3RvcmFnZUFyZWFQYWlyLmtleSk7Ci0gICAgICAgIH0K
LQotICAgICAgICBmb3IgKGF1dG8mIGNvbm5lY3Rpb25TdG9yYWdlQXJlYVBhaXIgOiBjb25uZWN0
aW9uQW5kU3RvcmFnZU1hcElEUGFpcnNUb1JlbW92ZSkKLSAgICAgICAgICAgIG1fc3RvcmFnZUFy
ZWFzQnlDb25uZWN0aW9uLnJlbW92ZShjb25uZWN0aW9uU3RvcmFnZUFyZWFQYWlyKTsKLQotICAg
ICAgICBtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZXMuY2xlYXIoKTsKLQotICAgICAgICBzZW1hcGhv
cmUuc2lnbmFsKCk7Ci0gICAgfSk7Ci0gICAgc2VtYXBob3JlLndhaXQoKTsKLX0KLQotdm9pZCBT
dG9yYWdlTWFuYWdlcjo6c3VzcGVuZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCi17Ci0gICAgQ29tcGxldGlvbkhhbmRsZXJDYWxsaW5nU2NvcGUgY29tcGxl
dGlvbkhhbmRsZXJDYWxsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgIGlmICgh
bV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIExv
Y2tlcjxMb2NrPiBzdGF0ZUxvY2tlcihtX3N0YXRlTG9jayk7Ci0gICAgaWYgKG1fc3RhdGUgIT0g
U3RhdGU6OlJ1bm5pbmcpCi0gICAgICAgIHJldHVybjsKLSAgICBtX3N0YXRlID0gU3RhdGU6Oldp
bGxTdXNwZW5kOwotCi0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBjb21wbGV0aW9uSGFuZGxlckNh
bGxlci5yZWxlYXNlKCldICgpIG11dGFibGUgewotICAgICAgICBMb2NrZXI8TG9jaz4gc3RhdGVM
b2NrZXIobV9zdGF0ZUxvY2spOwotICAgICAgICBBU1NFUlQobV9zdGF0ZSAhPSBTdGF0ZTo6U3Vz
cGVuZGVkKTsKLQotICAgICAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6V2lsbFN1c3BlbmQpIHsK
LSAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBtX3N0
YXRlID0gU3RhdGU6OlN1c3BlbmRlZDsKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNo
KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICAgICAgCi0gICAgICAgIHdoaWxlICht
X3N0YXRlID09IFN0YXRlOjpTdXNwZW5kZWQpCi0gICAgICAgICAgICBtX3N0YXRlQ2hhbmdlQ29u
ZGl0aW9uLndhaXQobV9zdGF0ZUxvY2spOwotICAgICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0
ZTo6UnVubmluZyk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgU3RvcmFnZU1hbmFnZXI6OnJlc3VtZSgp
Ci17Ci0gICAgaWYgKCFtX2xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcikKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgTG9ja2VyPExvY2s+IHN0YXRlTG9ja2VyKG1fc3RhdGVMb2NrKTsKLSAgICBh
dXRvIHByZXZpb3VzU3RhdGUgPSBtX3N0YXRlOwotICAgIG1fc3RhdGUgPSBTdGF0ZTo6UnVubmlu
ZzsKLSAgICBpZiAocHJldmlvdXNTdGF0ZSA9PSBTdGF0ZTo6U3VzcGVuZGVkKQotICAgICAgICBt
X3N0YXRlQ2hhbmdlQ29uZGl0aW9uLm5vdGlmeU9uZSgpOwotfQotCi1TdG9yYWdlTWFuYWdlcjo6
U3RvcmFnZUFyZWEqIFN0b3JhZ2VNYW5hZ2VyOjpmaW5kU3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCB1aW50NjRfdCBzdG9yYWdlTWFwSUQpIGNvbnN0Ci17Ci0gICAgc3Rk
OjpwYWlyPElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIHVpbnQ2NF90PiBjb25uZWN0aW9uQW5k
U3RvcmFnZU1hcElEUGFpcihjb25uZWN0aW9uLnVuaXF1ZUlEKCksIHN0b3JhZ2VNYXBJRCk7Ci0K
LSAgICBpZiAoIW1fc3RvcmFnZUFyZWFzQnlDb25uZWN0aW9uLmlzVmFsaWRLZXkoY29ubmVjdGlv
bkFuZFN0b3JhZ2VNYXBJRFBhaXIpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJl
dHVybiBtX3N0b3JhZ2VBcmVhc0J5Q29ubmVjdGlvbi5nZXQoY29ubmVjdGlvbkFuZFN0b3JhZ2VN
YXBJRFBhaXIpOworICAgIGF1dG8qIHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlID0gZ2V0T3JDcmVh
dGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShzdG9yYWdlTmFtZXNwYWNlSUQpOworICAgIHJldHVy
biBzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS0+Z2V0T3JDcmVhdGVTdG9yYWdlQXJlYShXVEZNb3Zl
KG9yaWdpbkRhdGEpKS5wdHIoKTsKIH0KIAogU3RvcmFnZU1hbmFnZXI6OkxvY2FsU3RvcmFnZU5h
bWVzcGFjZSogU3RvcmFnZU1hbmFnZXI6OmdldE9yQ3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNl
KHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCkKQEAgLTEwMDAsNCArNjAxLDIyIEBAIFN0b3Jh
Z2VNYW5hZ2VyOjpUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UqIFN0b3JhZ2VNYW5hZ2Vy
OjpnZXRPckNyZWF0ZVRyYW5zCiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogfQogCitT
dG9yYWdlTWFuYWdlcjo6U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UqIFN0b3JhZ2VNYW5hZ2VyOjpn
ZXRPckNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3Bh
Y2VJRCkKK3sKKyAgICBpZiAoIW1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLmlzVmFsaWRLZXko
c3RvcmFnZU5hbWVzcGFjZUlEKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1
cm4gbV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMuZW5zdXJlKHN0b3JhZ2VOYW1lc3BhY2VJRCwg
W10geworICAgICAgICAvLyBXZSBjdXJyZW50bHkgaGF2ZSBubyBsaW1pdCBvbiBzZXNzaW9uIHN0
b3JhZ2UuCisgICAgICAgIHJldHVybiBTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZTo6Y3JlYXRlKHN0
ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSk7CisgICAgfSkuaXRlcmF0b3ItPnZh
bHVlLmdldCgpOworfQorCit2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpjbGVhclN0b3JhZ2VOYW1lc3Bh
Y2VzKCkKK3sKKyAgICBtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZXMuY2xlYXIoKTsKKyAgICBtX3Ry
YW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZXMuY2xlYXIoKTsKKyAgICBtX3Nlc3Npb25TdG9y
YWdlTmFtZXNwYWNlcy5jbGVhcigpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFu
YWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VN
YW5hZ2VyLmgKaW5kZXggNjBhMjVlM2QxYzMxMGE1YzBiOGZlYTRhYjE0M2VlYjcwZTE1YWMyMi4u
ODg4NjM1ZjYxMTE4NDVjNGFmOGExYWYyZmFlODYxNzg3MTRkYzg5MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2Vy
LmgKQEAgLTQwLDg4ICs0MCw5NiBAQCBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKK2NsYXNzIExvY2FsU3RvcmFnZURhdGFiYXNlOwogY2xhc3MgTG9jYWxTdG9y
YWdlRGF0YWJhc2VUcmFja2VyOwogY2xhc3MgV2ViUHJvY2Vzc1Byb3h5OwogCi11c2luZyBHZXRW
YWx1ZXNDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSGFzaE1hcDxTdHJp
bmcsIFN0cmluZz4mKT47Ci0KLWNsYXNzIFN0b3JhZ2VNYW5hZ2VyIDogcHVibGljIElQQzo6Q29u
bmVjdGlvbjo6V29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyIHsKK2NsYXNzIFN0b3JhZ2VNYW5hZ2Vy
IDogcHVibGljIFJlZkNvdW50ZWQ8U3RvcmFnZU1hbmFnZXI+IHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgUmVmPFN0b3JhZ2VNYW5hZ2VyPiBjcmVhdGUoU3RyaW5nJiYgbG9jYWxTdG9yYWdlRGlyZWN0
b3J5KTsKICAgICB+U3RvcmFnZU1hbmFnZXIoKTsKIAogICAgIHZvaWQgY3JlYXRlU2Vzc2lvblN0
b3JhZ2VOYW1lc3BhY2UodWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCB1bnNpZ25lZCBxdW90
YUluQnl0ZXMpOwogICAgIHZvaWQgZGVzdHJveVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2
NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCk7Ci0gICAgdm9pZCBhZGRBbGxvd2VkU2Vzc2lvblN0b3Jh
Z2VOYW1lc3BhY2VDb25uZWN0aW9uKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgSVBDOjpD
b25uZWN0aW9uJik7Ci0gICAgdm9pZCByZW1vdmVBbGxvd2VkU2Vzc2lvblN0b3JhZ2VOYW1lc3Bh
Y2VDb25uZWN0aW9uKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgSVBDOjpDb25uZWN0aW9u
Jik7CiAgICAgdm9pZCBjbG9uZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IHN0b3Jh
Z2VOYW1lc3BhY2VJRCwgdWludDY0X3QgbmV3U3RvcmFnZU5hbWVzcGFjZUlEKTsKIAotICAgIHZv
aWQgcHJvY2Vzc0RpZENsb3NlQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24mKTsKLSAgICB2b2lk
IHdhaXRVbnRpbFRhc2tzRmluaXNoZWQoKTsKLSAgICB2b2lkIHN1c3BlbmQoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIHJlc3VtZSgpOwotCi0gICAgdm9pZCBnZXRTZXNz
aW9uU3RvcmFnZU9yaWdpbnMoRnVuY3Rpb248dm9pZChIYXNoU2V0PFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpOworICAgIHZvaWQgZ2V0U2Vzc2lv
blN0b3JhZ2VPcmlnaW5zKEZ1bmN0aW9uPHZvaWQoSGFzaFNldDxXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGE+JiYpPiYmKTsKICAgICB2b2lkIGRlbGV0ZVNlc3Npb25TdG9yYWdlT3JpZ2lucyhG
dW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwotICAgIHZvaWQgZGVsZXRlU2Vz
c2lvblN0b3JhZ2VFbnRyaWVzRm9yT3JpZ2lucyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhPiYsIEZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7Cisg
ICAgdm9pZCBkZWxldGVTZXNzaW9uU3RvcmFnZUVudHJpZXNGb3JPcmlnaW5zKGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiwgRnVuY3Rpb248dm9pZCgpPiYmKTsKIAot
ICAgIHZvaWQgZ2V0TG9jYWxTdG9yYWdlT3JpZ2lucyhGdW5jdGlvbjx2b2lkKEhhc2hTZXQ8V2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7Ci0gICAg
dm9pZCBkZWxldGVMb2NhbFN0b3JhZ2VFbnRyaWVzRm9yT3JpZ2luKGNvbnN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSYpOworICAgIHZvaWQgZ2V0TG9jYWxTdG9yYWdlT3JpZ2lucyhGdW5j
dGlvbjx2b2lkKEhhc2hTZXQ8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYmKT4mJik7Cisg
ICAgdm9pZCBkZWxldGVMb2NhbFN0b3JhZ2VPcmlnaW5zTW9kaWZpZWRTaW5jZShXYWxsVGltZSwg
RnVuY3Rpb248dm9pZCgpPiYmKTsKKyAgICB2b2lkIGRlbGV0ZUxvY2FsU3RvcmFnZUVudHJpZXNG
b3JPcmlnaW5zKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiwgRnVu
Y3Rpb248dm9pZCgpPiYmKTsKKyAgICB2b2lkIGdldExvY2FsU3RvcmFnZU9yaWdpbkRldGFpbHMo
RnVuY3Rpb248dm9pZChWZWN0b3I8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpPcmlnaW5E
ZXRhaWxzPiYmKT4mJik7CisgICAgCisgICAgdm9pZCBjbGVhclN0b3JhZ2VOYW1lc3BhY2VzKCk7
CiAKLSAgICB2b2lkIGRlbGV0ZUxvY2FsU3RvcmFnZU9yaWdpbnNNb2RpZmllZFNpbmNlKFdhbGxU
aW1lLCBGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwotICAgIHZvaWQgZGVs
ZXRlTG9jYWxTdG9yYWdlRW50cmllc0Zvck9yaWdpbnMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YT4mLCBGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
OworICAgIGNsYXNzIExvY2FsU3RvcmFnZU5hbWVzcGFjZTsKKyAgICBjbGFzcyBTdG9yYWdlQXJl
YSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTdG9yYWdlQXJlYT4geworICAgIHB1Ymxp
YzoKKyAgICAgICAgc3RhdGljIFJlZjxTdG9yYWdlQXJlYT4gY3JlYXRlKExvY2FsU3RvcmFnZU5h
bWVzcGFjZSosIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIHVuc2lnbmVkIHF1
b3RhSW5CeXRlcyk7CisgICAgICAgIH5TdG9yYWdlQXJlYSgpOwogCi0gICAgdm9pZCBnZXRMb2Nh
bFN0b3JhZ2VPcmlnaW5EZXRhaWxzKEZ1bmN0aW9uPHZvaWQoVmVjdG9yPExvY2FsU3RvcmFnZURh
dGFiYXNlVHJhY2tlcjo6T3JpZ2luRGV0YWlscz4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpOwor
ICAgICAgICBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2lu
KCkgY29uc3QgeyByZXR1cm4gbV9zZWN1cml0eU9yaWdpbjsgfQorICAgICAgICB1aW50NjRfdCBp
ZGVudGlmaWVyKCkgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAKLSAgICB2b2lkIGRpZFJlY2Vp
dmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwotICAgIHZvaWQgZGlk
UmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6
dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpOworICAgICAgICB2b2lkIGFk
ZExpc3RlbmVyKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQpOworICAgICAgICB2b2lkIHJlbW92
ZUxpc3RlbmVyKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQpOworICAgICAgICBib29sIGhhc0xp
c3RlbmVyKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgY29ubmVjdGlvbklEKSB7IHJldHVybiBt
X2V2ZW50TGlzdGVuZXJzLmNvbnRhaW5zKGNvbm5lY3Rpb25JRCk7IH0KIAotcHJpdmF0ZToKLSAg
ICBleHBsaWNpdCBTdG9yYWdlTWFuYWdlcihTdHJpbmcmJiBsb2NhbFN0b3JhZ2VEaXJlY3Rvcnkp
OworICAgICAgICBSZWY8U3RvcmFnZUFyZWE+IGNsb25lKCkgY29uc3Q7CiAKLSAgICAvLyBNZXNz
YWdlIGhhbmRsZXJzLgotICAgIHZvaWQgY3JlYXRlTG9jYWxTdG9yYWdlTWFwKElQQzo6Q29ubmVj
dGlvbiYsIHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCwgdWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlE
LCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJik7Ci0gICAgdm9pZCBjcmVhdGVUcmFuc2ll
bnRMb2NhbFN0b3JhZ2VNYXAoSVBDOjpDb25uZWN0aW9uJiwgdWludDY0X3Qgc3RvcmFnZU1hcElE
LCB1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YSYmIHRvcExldmVsT3JpZ2luRGF0YSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYpOwot
ICAgIHZvaWQgY3JlYXRlU2Vzc2lvblN0b3JhZ2VNYXAoSVBDOjpDb25uZWN0aW9uJiwgdWludDY0
X3Qgc3RvcmFnZU1hcElELCB1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSYmKTsKLSAgICB2b2lkIGRlc3Ryb3lTdG9yYWdlTWFwKElQQzo6Q29u
bmVjdGlvbiYsIHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCk7CisgICAgICAgIHZvaWQgc2V0SXRlbShJ
UEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIHNvdXJjZUNvbm5lY3Rpb24sIHVpbnQ2NF90IHNvdXJj
ZVN0b3JhZ2VBcmVhSUQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlLCBj
b25zdCBTdHJpbmcmIHVybFN0cmluZywgYm9vbCYgcXVvdGFFeGNlcHRpb24pOworICAgICAgICB2
b2lkIHJlbW92ZUl0ZW0oSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBzb3VyY2VDb25uZWN0aW9u
LCB1aW50NjRfdCBzb3VyY2VTdG9yYWdlQXJlYUlELCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3Qg
U3RyaW5nJiB1cmxTdHJpbmcpOworICAgICAgICB2b2lkIGNsZWFyKElQQzo6Q29ubmVjdGlvbjo6
VW5pcXVlSUQgc291cmNlQ29ubmVjdGlvbiwgdWludDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwg
Y29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpOwogCi0gICAgdm9pZCBnZXRWYWx1ZXMoSVBDOjpDb25u
ZWN0aW9uJiwgdWludDY0X3Qgc3RvcmFnZU1hcElELCB1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCwg
R2V0VmFsdWVzQ2FsbGJhY2smJik7Ci0gICAgdm9pZCBwcmV3YXJtKElQQzo6Q29ubmVjdGlvbiYs
IHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCk7Ci0gICAgdm9pZCBzZXRJdGVtKElQQzo6Q29ubmVjdGlv
biYsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCB1aW50NjRfdCBzdG9yYWdlTWFwSUQs
IHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkLCBj
b25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiB1cmxT
dHJpbmcpOwotICAgIHZvaWQgc2V0SXRlbXMoSVBDOjpDb25uZWN0aW9uJiwgdWludDY0X3Qgc3Rv
cmFnZU1hcElELCBjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgaXRlbXMpOwotICAgIHZv
aWQgcmVtb3ZlSXRlbShJUEM6OkNvbm5lY3Rpb24mLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEmJiwgdWludDY0X3Qgc3RvcmFnZU1hcElELCB1aW50NjRfdCBzb3VyY2VTdG9yYWdlQXJlYUlE
LCB1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmlu
ZyYgdXJsU3RyaW5nKTsKLSAgICB2b2lkIGNsZWFyKElQQzo6Q29ubmVjdGlvbiYsIFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCB1aW50NjRfdCBzdG9yYWdlTWFwSUQsIHVpbnQ2NF90IHNv
dXJjZVN0b3JhZ2VBcmVhSUQsIHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkLCBjb25zdCBTdHJpbmcm
IHVybFN0cmluZyk7CisgICAgICAgIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBpdGVt
cygpIGNvbnN0OworICAgICAgICB2b2lkIGNsZWFyKCk7CiAKLSAgICBjbGFzcyBTdG9yYWdlQXJl
YTsKLSAgICBTdG9yYWdlQXJlYSogZmluZFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbiYsIHVp
bnQ2NF90KSBjb25zdDsKKyAgICAgICAgYm9vbCBpc0VwaGVtZXJhbCgpIGNvbnN0IHsgcmV0dXJu
ICFtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZTsgfQogCi0gICAgY2xhc3MgTG9jYWxTdG9yYWdlTmFt
ZXNwYWNlOwotICAgIExvY2FsU3RvcmFnZU5hbWVzcGFjZSogZ2V0T3JDcmVhdGVMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UodWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlEKTsKKyAgICAgICAgdm9pZCBv
cGVuRGF0YWJhc2VBbmRJbXBvcnRJdGVtc0lmTmVlZGVkKCkgY29uc3Q7CiAKLSAgICBjbGFzcyBU
cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2U7Ci0gICAgVHJhbnNpZW50TG9jYWxTdG9yYWdl
TmFtZXNwYWNlKiBnZXRPckNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50
NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIHRv
cExldmVsT3JpZ2luKTsKKyAgICAgICAgdm9pZCBzZXRXb3JrUXVldWUoUmVmUHRyPFdvcmtRdWV1
ZT4mJiBxdWV1ZSkgeyBtX3F1ZXVlID0gV1RGTW92ZShxdWV1ZSk7IH0KIAotICAgIFJlZjxXb3Jr
UXVldWU+IG1fcXVldWU7CisgICAgcHJpdmF0ZToKKyAgICAgICAgZXhwbGljaXQgU3RvcmFnZUFy
ZWEoTG9jYWxTdG9yYWdlTmFtZXNwYWNlKiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhJiwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKIAotICAgIFJlZlB0cjxMb2NhbFN0b3JhZ2VE
YXRhYmFzZVRyYWNrZXI+IG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOworICAgICAgICB2
b2lkIGRpc3BhdGNoRXZlbnRzKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgc291cmNlQ29ubmVj
dGlvbiwgdWludDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwgY29uc3QgU3RyaW5nJiBrZXksIGNv
bnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIGNvbnN0IFN0cmlu
ZyYgdXJsU3RyaW5nKSBjb25zdDsKKworICAgICAgICAvLyBXaWxsIGJlIG51bGwgaWYgdGhlIHN0
b3JhZ2UgYXJlYSBiZWxvbmdzIHRvIGEgc2Vzc2lvbiBzdG9yYWdlIG5hbWVzcGFjZSBvciB0aGUg
c3RvcmFnZSBhcmVhIGlzIGluIGFuIGVwaGVtZXJhbCBzZXNzaW9uLgorICAgICAgICBXZWFrUHRy
PExvY2FsU3RvcmFnZU5hbWVzcGFjZT4gbV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2U7CisgICAgICAg
IG11dGFibGUgUmVmUHRyPExvY2FsU3RvcmFnZURhdGFiYXNlPiBtX2xvY2FsU3RvcmFnZURhdGFi
YXNlOworICAgICAgICBtdXRhYmxlIGJvb2wgbV9kaWRJbXBvcnRJdGVtc0Zyb21EYXRhYmFzZSB7
IGZhbHNlIH07CisKKyAgICAgICAgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIG1fc2VjdXJp
dHlPcmlnaW47CisgICAgICAgIHVuc2lnbmVkIG1fcXVvdGFJbkJ5dGVzOworCisgICAgICAgIFJl
ZlB0cjxXZWJDb3JlOjpTdG9yYWdlTWFwPiBtX3N0b3JhZ2VNYXA7CisgICAgICAgIEhhc2hTZXQ8
SVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRD4gbV9ldmVudExpc3RlbmVyczsKKworICAgICAgICB1
aW50NjRfdCBtX2lkZW50aWZpZXI7CisgICAgICAgIFJlZlB0cjxXb3JrUXVldWU+IG1fcXVldWU7
CisgICAgfTsKKworICAgIFN0b3JhZ2VBcmVhKiBjcmVhdGVMb2NhbFN0b3JhZ2VBcmVhKHVpbnQ2
NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYpOwor
ICAgIFN0b3JhZ2VBcmVhKiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKHVpbnQ2NF90
IHN0b3JhZ2VOYW1lc3BhY2VJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmKTsKKyAgICBTdG9yYWdlQXJlYSogY3JlYXRlU2Vzc2lv
blN0b3JhZ2VBcmVhKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiYpOworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IFN0b3JhZ2VNYW5hZ2Vy
KFN0cmluZyYmIGxvY2FsU3RvcmFnZURpcmVjdG9yeSk7CisKKyAgICBMb2NhbFN0b3JhZ2VOYW1l
c3BhY2UqIGdldE9yQ3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IHN0b3JhZ2VO
YW1lc3BhY2VJRCk7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPExvY2FsU3RvcmFnZU5h
bWVzcGFjZT4+IG1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlczsKKyAgICBSZWZQdHI8TG9jYWxTdG9y
YWdlRGF0YWJhc2VUcmFja2VyPiBtX2xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjsKIAorICAg
IGNsYXNzIFRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZTsKKyAgICBUcmFuc2llbnRMb2Nh
bFN0b3JhZ2VOYW1lc3BhY2UqIGdldE9yQ3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNw
YWNlKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhJiYgdG9wTGV2ZWxPcmlnaW4pOwogICAgIEhhc2hNYXA8c3RkOjpwYWlyPHVpbnQ2NF90LCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+LCBSZWZQdHI8VHJhbnNpZW50TG9jYWxTdG9yYWdl
TmFtZXNwYWNlPj4gbV90cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2VzOwogCiAgICAgY2xh
c3MgU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2U7CisgICAgU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2Uq
IGdldE9yQ3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3Qgc3RvcmFnZU5hbWVz
cGFjZUlEKTsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8U2Vzc2lvblN0b3JhZ2VOYW1l
c3BhY2U+PiBtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlczsKLQotICAgIEhhc2hNYXA8c3RkOjpw
YWlyPElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIHVpbnQ2NF90PiwgUmVmUHRyPFN0b3JhZ2VB
cmVhPj4gbV9zdG9yYWdlQXJlYXNCeUNvbm5lY3Rpb247Ci0gICAgSGFzaFNldDxJUEM6OkNvbm5l
Y3Rpb246OlVuaXF1ZUlEPiBtX2Nvbm5lY3Rpb25zOwotCi0gICAgZW51bSBjbGFzcyBTdGF0ZSB7
Ci0gICAgICAgIFJ1bm5pbmcsCi0gICAgICAgIFdpbGxTdXNwZW5kLAotICAgICAgICBTdXNwZW5k
ZWQKLSAgICB9OwotICAgIFN0YXRlIG1fc3RhdGUgeyBTdGF0ZTo6UnVubmluZyB9OwotICAgIExv
Y2sgbV9zdGF0ZUxvY2s7Ci0gICAgQ29uZGl0aW9uIG1fc3RhdGVDaGFuZ2VDb25kaXRpb247CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5tZXNzYWdl
cy5pbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzhiYjZhYjI0MDI4YTI1M2FhMTE4
NTQyMDFkNmExNWQyNWNlMmM2Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFn
ZU1hbmFnZXIubWVzc2FnZXMuaW4KKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi0jIENv
cHlyaWdodCAoQykgMjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMK
LSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwK
LSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotbWVzc2FnZXMgLT4gU3Rv
cmFnZU1hbmFnZXIgewotICAgIENyZWF0ZUxvY2FsU3RvcmFnZU1hcCh1aW50NjRfdCBzdG9yYWdl
TWFwSUQsIHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSBzZWN1cml0eU9yaWdpbkRhdGEpIFdhbnRzQ29ubmVjdGlvbgotICAgIENy
ZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU1hcCh1aW50NjRfdCBzdG9yYWdlTWFwSUQsIHVpbnQ2
NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YSB0b3BMZXZlbFNlY3VyaXR5T3JpZ2luRGF0YSwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSBzZWN1cml0eU9yaWdpbkRhdGEpIFdhbnRzQ29ubmVjdGlvbgotICAgIENyZWF0ZVNl
c3Npb25TdG9yYWdlTWFwKHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCwgdWludDY0X3Qgc3RvcmFnZU5h
bWVzcGFjZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHNlY3VyaXR5T3Jp
Z2luRGF0YSkgV2FudHNDb25uZWN0aW9uCi0gICAgRGVzdHJveVN0b3JhZ2VNYXAodWludDY0X3Qg
c3RvcmFnZU1hcElEKSBXYW50c0Nvbm5lY3Rpb24KLQotICAgIFByZXdhcm0odWludDY0X3Qgc3Rv
cmFnZU1hcElEKSBXYW50c0Nvbm5lY3Rpb24KLSAgICBHZXRWYWx1ZXModWludDY0X3Qgc3RvcmFn
ZU1hcElELCB1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCkgLT4gKEhhc2hNYXA8U3RyaW5nLCBTdHJp
bmc+IHZhbHVlcykgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCi0KLSAgICBTZXRJdGVtKHN0
cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgc2VjdXJpdHlPcmlnaW5EYXRhLCB1aW50
NjRfdCBzdG9yYWdlTWFwSUQsIHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIHVpbnQ2NF90
IHN0b3JhZ2VNYXBTZWVkLCBTdHJpbmcga2V5LCBTdHJpbmcgdmFsdWUsIFN0cmluZyB1cmxTdHJp
bmcpIFdhbnRzQ29ubmVjdGlvbgotICAgIFNldEl0ZW1zKHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCwg
SGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gaXRlbXMpIFdhbnRzQ29ubmVjdGlvbgotICAgIFJlbW92
ZUl0ZW0oc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBzZWN1cml0eU9yaWdpbkRh
dGEsIHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCwgdWludDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwg
dWludDY0X3Qgc3RvcmFnZU1hcFNlZWQsIFN0cmluZyBrZXksIFN0cmluZyB1cmxTdHJpbmcpIFdh
bnRzQ29ubmVjdGlvbgotICAgIENsZWFyKHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEgc2VjdXJpdHlPcmlnaW5EYXRhLCB1aW50NjRfdCBzdG9yYWdlTWFwSUQsIHVpbnQ2NF90IHNv
dXJjZVN0b3JhZ2VBcmVhSUQsIHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkLCBTdHJpbmcgdXJsU3Ry
aW5nKSBXYW50c0Nvbm5lY3Rpb24KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjcwYzM4YTgyMGEyYjkwNDgzZGZiYzBjZDdhNDEwMTFmMGQxZTFhYTQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1h
bmFnZXJTZXQuY3BwCkBAIC0wLDAgKzEsMzQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlN0b3Jh
Z2VNYW5hZ2VyU2V0LmgiCisKKyNpbmNsdWRlICJTdG9yYWdlQXJlYU1hcE1lc3NhZ2VzLmgiCisj
aW5jbHVkZSAiU3RvcmFnZU1hbmFnZXJTZXRNZXNzYWdlcy5oIgorI2luY2x1ZGUgPHd0Zi90aHJl
YWRzL0JpbmFyeVNlbWFwaG9yZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY29uc3QgdWlu
dDY0X3QgaW52YWxpZFN0b3JhZ2VBcmVhSUQgPSAwOworCitSZWY8U3RvcmFnZU1hbmFnZXJTZXQ+
IFN0b3JhZ2VNYW5hZ2VyU2V0OjpjcmVhdGUoKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFN0b3JhZ2VNYW5hZ2VyU2V0KTsKK30KKworU3RvcmFnZU1hbmFnZXJTZXQ6OlN0b3JhZ2VNYW5h
Z2VyU2V0KCkKKyAgICA6IG1fcXVldWUoV29ya1F1ZXVlOjpjcmVhdGUoImNvbS5hcHBsZS5XZWJL
aXQuV2ViU3RvcmFnZSIpKQoreworfQorCitTdG9yYWdlTWFuYWdlclNldDo6flN0b3JhZ2VNYW5h
Z2VyU2V0KCkKK3sKK30KKwordm9pZCBTdG9yYWdlTWFuYWdlclNldDo6YWRkKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpCit7Cisg
ICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgc2Vzc2lvbklELCBkaXJlY3RvcnkgPSBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkuaXNvbGF0ZWRD
b3B5KCldKCkgbXV0YWJsZSB7CisgICAgICAgIG1fc3RvcmFnZU1hbmFnZXJzLmVuc3VyZShzZXNz
aW9uSUQsIFtkaXJlY3RvcnldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICByZXR1cm4gU3RvcmFn
ZU1hbmFnZXI6OmNyZWF0ZShXVEZNb3ZlKGRpcmVjdG9yeSkpOworICAgICAgICB9KTsKKyAgICB9
KTsKK30KKwordm9pZCBTdG9yYWdlTWFuYWdlclNldDo6cmVtb3ZlKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCkKK3sKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBzZXNzaW9uSURdKCkgeworICAgICAgICBBU1NFUlQobV9zdG9yYWdl
TWFuYWdlcnMuY29udGFpbnMoc2Vzc2lvbklEKSk7CisgICAgICAgIG1fc3RvcmFnZU1hbmFnZXJz
LnJlbW92ZShzZXNzaW9uSUQpOyAgICAKKyAgICB9KTsKK30KKwordm9pZCBTdG9yYWdlTWFuYWdl
clNldDo6YWRkQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pIAoreworICAg
IGF1dG8gY29ubmVjdGlvbklEID0gY29ubmVjdGlvbi51bmlxdWVJRCgpOworICAgIEFTU0VSVCgh
bV9jb25uZWN0aW9ucy5jb250YWlucyhjb25uZWN0aW9uSUQpKTsKKyAgICBpZiAobV9jb25uZWN0
aW9ucy5hZGQoY29ubmVjdGlvbklEKS5pc05ld0VudHJ5KQorICAgICAgICBjb25uZWN0aW9uLmFk
ZFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXJTZXQ6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9xdWV1ZS5nZXQoKSwgdGhpcyk7Cit9CisKK3ZvaWQgU3Rv
cmFnZU1hbmFnZXJTZXQ6OnJlbW92ZUNvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uKQoreworICAgIGF1dG8gY29ubmVjdGlvbklEID0gY29ubmVjdGlvbi51bmlxdWVJRCgpOwor
ICAgIEFTU0VSVChtX2Nvbm5lY3Rpb25zLmNvbnRhaW5zKGNvbm5lY3Rpb25JRCkpOworICAgIG1f
Y29ubmVjdGlvbnMucmVtb3ZlKGNvbm5lY3Rpb25JRCk7CisgICAgY29ubmVjdGlvbi5yZW1vdmVX
b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlN0b3JhZ2VNYW5hZ2VyU2V0OjptZXNz
YWdlUmVjZWl2ZXJOYW1lKCkpOworICAgIAorICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbm5lY3Rpb25JRF0oKSB7CisgICAgICAg
IGZvciAoYXV0byYgc3RvcmFnZUFyZWEgOiBtX3N0b3JhZ2VBcmVhcy52YWx1ZXMoKSkKKyAgICAg
ICAgICAgIHN0b3JhZ2VBcmVhLT5yZW1vdmVMaXN0ZW5lcihjb25uZWN0aW9uSUQpOworICAgIH0p
OworfQorCit2b2lkIFN0b3JhZ2VNYW5hZ2VyU2V0Ojp3YWl0VW50aWxUYXNrc0ZpbmlzaGVkKCkK
K3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIEJpbmFyeVNlbWFwaG9yZSBz
ZW1hcGhvcmU7CisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsICZzZW1hcGhvcmVdIHsKKyAg
ICAgICAgZm9yIChhdXRvJiBbc2Vzc2lvbklELCBzdG9yYWdlTWFuYWdlcl0gOiBtX3N0b3JhZ2VN
YW5hZ2VycykKKyAgICAgICAgICAgIHN0b3JhZ2VNYW5hZ2VyLT5jbGVhclN0b3JhZ2VOYW1lc3Bh
Y2VzKCk7CisKKyAgICAgICAgbV9zdG9yYWdlTWFuYWdlcnMuY2xlYXIoKTsKKyAgICAgICAgbV9z
dG9yYWdlQXJlYXMuY2xlYXIoKTsKKworICAgICAgICBzZW1hcGhvcmUuc2lnbmFsKCk7CisgICAg
fSk7CisgICAgc2VtYXBob3JlLndhaXQoKTsKK30KKwordm9pZCBTdG9yYWdlTWFuYWdlclNldDo6
c3VzcGVuZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7
CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBDb21wbGV0aW9uSGFuZGxlckNh
bGxpbmdTY29wZSBjb21wbGV0aW9uSGFuZGxlckNhbGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CisgICAgTG9ja2VyPExvY2s+IHN0YXRlTG9ja2VyKG1fc3RhdGVMb2NrKTsKKyAgICBp
ZiAobV9zdGF0ZSAhPSBTdGF0ZTo6UnVubmluZykKKyAgICAgICAgcmV0dXJuOworICAgIG1fc3Rh
dGUgPSBTdGF0ZTo6V2lsbFN1c3BlbmQ7CisKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IGNvbXBs
ZXRpb25IYW5kbGVyQ2FsbGVyLnJlbGVhc2UoKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIExvY2tl
cjxMb2NrPiBzdGF0ZUxvY2tlcihtX3N0YXRlTG9jayk7CisgICAgICAgIEFTU0VSVChtX3N0YXRl
ICE9IFN0YXRlOjpTdXNwZW5kZWQpOworCisgICAgICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpX
aWxsU3VzcGVuZCkgeworICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6U3VzcGVuZGVkOworICAgICAgICBSdW5Mb29wOjpt
YWluKCkuZGlzcGF0Y2goV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworCisgICAgICAgIHdo
aWxlIChtX3N0YXRlID09IFN0YXRlOjpTdXNwZW5kZWQpCisgICAgICAgICAgICBtX3N0YXRlQ2hh
bmdlQ29uZGl0aW9uLndhaXQobV9zdGF0ZUxvY2spOworICAgICAgICBBU1NFUlQobV9zdGF0ZSA9
PSBTdGF0ZTo6UnVubmluZyk7CisgICAgfSk7Cit9CisKK3ZvaWQgU3RvcmFnZU1hbmFnZXJTZXQ6
OnJlc3VtZSgpCit7CisgICAgTG9ja2VyPExvY2s+IHN0YXRlTG9ja2VyKG1fc3RhdGVMb2NrKTsK
KyAgICBhdXRvIHByZXZpb3VzU3RhdGUgPSBtX3N0YXRlOworICAgIG1fc3RhdGUgPSBTdGF0ZTo6
UnVubmluZzsKKyAgICBpZiAocHJldmlvdXNTdGF0ZSA9PSBTdGF0ZTo6U3VzcGVuZGVkKQorICAg
ICAgICBtX3N0YXRlQ2hhbmdlQ29uZGl0aW9uLm5vdGlmeU9uZSgpOworfQorCit2b2lkIFN0b3Jh
Z2VNYW5hZ2VyU2V0OjpnZXRTZXNzaW9uU3RvcmFnZU9yaWdpbnMoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc2hTZXQ8V2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBtX3F1ZXVlLT5kaXNw
YXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzZXNzaW9uSUQsIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7
CisgICAgICAgIGF1dG8qIHN0b3JhZ2VNYW5hZ2VyID0gbV9zdG9yYWdlTWFuYWdlcnMuZ2V0KHNl
c3Npb25JRCk7CisgICAgICAgIEFTU0VSVChzdG9yYWdlTWFuYWdlcik7CisKKyAgICAgICAgc3Rv
cmFnZU1hbmFnZXItPmdldFNlc3Npb25TdG9yYWdlT3JpZ2lucyhXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CisgICAgfSk7Cit9CisKK3ZvaWQgU3RvcmFnZU1hbmFnZXJTZXQ6OmRlbGV0ZVNl
c3Npb25TdG9yYWdlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHNlc3Npb25JRCwgY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAg
ICAgYXV0byogc3RvcmFnZU1hbmFnZXIgPSBtX3N0b3JhZ2VNYW5hZ2Vycy5nZXQoc2Vzc2lvbklE
KTsKKyAgICAgICAgQVNTRVJUKHN0b3JhZ2VNYW5hZ2VyKTsKKworICAgICAgICBzdG9yYWdlTWFu
YWdlci0+ZGVsZXRlU2Vzc2lvblN0b3JhZ2VPcmlnaW5zKFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKKyAgICB9KTsKK30KKwordm9pZCBTdG9yYWdlTWFuYWdlclNldDo6ZGVsZXRlU2Vzc2lv
blN0b3JhZ2VGb3JPcmlnaW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVmVjdG9y
PFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mIG9yaWdpbkRhdGFzLCBEZWxldGVDYWxsYmFj
ayYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHNlc3Npb25JRCwgY29waWVkT3JpZ2lucyA9
IGNyb3NzVGhyZWFkQ29weShvcmlnaW5EYXRhcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8qIHN0b3JhZ2VN
YW5hZ2VyID0gbV9zdG9yYWdlTWFuYWdlcnMuZ2V0KHNlc3Npb25JRCk7CisgICAgICAgIEFTU0VS
VChzdG9yYWdlTWFuYWdlcik7CisKKyAgICAgICAgc3RvcmFnZU1hbmFnZXItPmRlbGV0ZVNlc3Np
b25TdG9yYWdlRW50cmllc0Zvck9yaWdpbnMoY29waWVkT3JpZ2lucywgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOworICAgIH0pOworfQorCit2b2lkIFN0b3JhZ2VNYW5hZ2VyU2V0OjpnZXRM
b2NhbFN0b3JhZ2VPcmlnaW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgR2V0T3JpZ2luc0Nh
bGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc2Vzc2lvbklELCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAg
ICBhdXRvKiBzdG9yYWdlTWFuYWdlciA9IG1fc3RvcmFnZU1hbmFnZXJzLmdldChzZXNzaW9uSUQp
OworICAgICAgICBBU1NFUlQoc3RvcmFnZU1hbmFnZXIpOworCisgICAgICAgIHN0b3JhZ2VNYW5h
Z2VyLT5nZXRMb2NhbFN0b3JhZ2VPcmlnaW5zKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
KyAgICB9KTsKK30KKwordm9pZCBTdG9yYWdlTWFuYWdlclNldDo6ZGVsZXRlTG9jYWxTdG9yYWdl
TW9kaWZpZWRTaW5jZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdhbGxUaW1lIHRpbWUsIERl
bGV0ZUNhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgbV9xdWV1ZS0+ZGlzcGF0
Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc2Vzc2lvbklELCB0aW1l
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFi
bGUgeworICAgICAgICBhdXRvKiBzdG9yYWdlTWFuYWdlciA9IG1fc3RvcmFnZU1hbmFnZXJzLmdl
dChzZXNzaW9uSUQpOworICAgICAgICBBU1NFUlQoc3RvcmFnZU1hbmFnZXIpOworCisgICAgICAg
IHN0b3JhZ2VNYW5hZ2VyLT5kZWxldGVMb2NhbFN0b3JhZ2VPcmlnaW5zTW9kaWZpZWRTaW5jZSh0
aW1lLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgfSk7Cit9CisKK3ZvaWQgU3Rv
cmFnZU1hbmFnZXJTZXQ6OmRlbGV0ZUxvY2FsU3RvcmFnZUZvck9yaWdpbnMoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYg
b3JpZ2luRGF0YXMsIERlbGV0ZUNhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAg
bV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
c2Vzc2lvbklELCBjb3BpZWRPcmlnaW5zID0gY3Jvc3NUaHJlYWRDb3B5KG9yaWdpbkRhdGFzKSwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxl
IHsKKyAgICAgICAgYXV0byogc3RvcmFnZU1hbmFnZXIgPSBtX3N0b3JhZ2VNYW5hZ2Vycy5nZXQo
c2Vzc2lvbklEKTsKKyAgICAgICAgQVNTRVJUKHN0b3JhZ2VNYW5hZ2VyKTsKKworICAgICAgICBz
dG9yYWdlTWFuYWdlci0+ZGVsZXRlTG9jYWxTdG9yYWdlRW50cmllc0Zvck9yaWdpbnMoY29waWVk
T3JpZ2lucywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIH0pOworfQorCit2b2lk
IFN0b3JhZ2VNYW5hZ2VyU2V0OjpnZXRMb2NhbFN0b3JhZ2VPcmlnaW5EZXRhaWxzKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8TG9jYWxTdG9y
YWdlRGF0YWJhc2VUcmFja2VyOjpPcmlnaW5EZXRhaWxzPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3sKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCBzZXNzaW9uSUQsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8qIHN0b3JhZ2VNYW5hZ2VyID0g
bV9zdG9yYWdlTWFuYWdlcnMuZ2V0KHNlc3Npb25JRCk7CisgICAgICAgIEFTU0VSVChzdG9yYWdl
TWFuYWdlcik7CisKKyAgICAgICAgc3RvcmFnZU1hbmFnZXItPmdldExvY2FsU3RvcmFnZU9yaWdp
bkRldGFpbHMoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIH0pOworfQorCit2b2lk
IFN0b3JhZ2VNYW5hZ2VyU2V0Ojpjb25uZWN0VG9Mb2NhbFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBzdG9y
YWdlTmFtZXNwYWNlSUQsIFNlY3VyaXR5T3JpZ2luRGF0YSYmIHNlY3VyaXR5T3JpZ2luRGF0YSwg
Q29ubmVjdFRvU3RvcmFnZUFyZWFDYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAg
IEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgYXV0byogc3RvcmFnZU1hbmFnZXIg
PSBtX3N0b3JhZ2VNYW5hZ2Vycy5nZXQoc2Vzc2lvbklEKTsKKyAgICBBU1NFUlQoc3RvcmFnZU1h
bmFnZXIpOworICAgIGlmICghc3RvcmFnZU1hbmFnZXIpIHsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoaW52YWxpZFN0b3JhZ2VBcmVhSUQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgYXV0byogc3RvcmFnZUFyZWEgPSBzdG9yYWdlTWFuYWdlci0+Y3JlYXRlTG9jYWxTdG9yYWdl
QXJlYShzdG9yYWdlTmFtZXNwYWNlSUQsIFdURk1vdmUoc2VjdXJpdHlPcmlnaW5EYXRhKSk7Cisg
ICAgYXV0byBzdG9yYWdlQXJlYUlEID0gc3RvcmFnZUFyZWEtPmlkZW50aWZpZXIoKTsKKyAgICBh
dXRvW2l0ZXIsIGlzTmV3RW50cnldID0gbV9zdG9yYWdlQXJlYXMuYWRkKHN0b3JhZ2VBcmVhSUQs
IG51bGxwdHIpOworICAgIGlmIChpc05ld0VudHJ5KSB7CisgICAgICAgIHN0b3JhZ2VBcmVhLT5z
ZXRXb3JrUXVldWUobV9xdWV1ZS5wdHIoKSk7CisgICAgICAgIGl0ZXItPnZhbHVlID0gc3RvcmFn
ZUFyZWE7CisgICAgfSBlbHNlCisgICAgICAgIEFTU0VSVChzdG9yYWdlQXJlYSA9PSBpdGVyLT52
YWx1ZSk7CisKKyAgICBzdG9yYWdlQXJlYS0+YWRkTGlzdGVuZXIoY29ubmVjdGlvbi51bmlxdWVJ
RCgpKTsKKworICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0b3JhZ2VBcmVhSUQpOworfQorCit2b2lk
IFN0b3JhZ2VNYW5hZ2VyU2V0Ojpjb25uZWN0VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50
NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIFNlY3VyaXR5T3JpZ2luRGF0YSYmIHRvcExldmVsT3Jp
Z2luRGF0YSwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgb3JpZ2luRGF0YSwgQ29ubmVjdFRvU3RvcmFn
ZUFyZWFDYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIEFTU0VSVCghUnVuTG9v
cDo6aXNNYWluKCkpOworCisgICAgYXV0byogc3RvcmFnZU1hbmFnZXIgPSBtX3N0b3JhZ2VNYW5h
Z2Vycy5nZXQoc2Vzc2lvbklEKTsKKyAgICBBU1NFUlQoc3RvcmFnZU1hbmFnZXIpOworICAgIGlm
ICghc3RvcmFnZU1hbmFnZXIpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoaW52YWxpZFN0
b3JhZ2VBcmVhSUQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byogc3RvcmFn
ZUFyZWEgPSBzdG9yYWdlTWFuYWdlci0+Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlQXJlYShz
dG9yYWdlTmFtZXNwYWNlSUQsIFdURk1vdmUodG9wTGV2ZWxPcmlnaW5EYXRhKSwgV1RGTW92ZShv
cmlnaW5EYXRhKSk7CisgICAgYXV0byBzdG9yYWdlQXJlYUlEID0gc3RvcmFnZUFyZWEtPmlkZW50
aWZpZXIoKTsKKyAgICBhdXRvW2l0ZXIsIGlzTmV3RW50cnldID0gbV9zdG9yYWdlQXJlYXMuYWRk
KHN0b3JhZ2VBcmVhSUQsIG51bGxwdHIpOworICAgIGlmIChpc05ld0VudHJ5KQorICAgICAgICBp
dGVyLT52YWx1ZSA9IHN0b3JhZ2VBcmVhOworICAgIGVsc2UKKyAgICAgICAgQVNTRVJUKHN0b3Jh
Z2VBcmVhID09IGl0ZXItPnZhbHVlKTsKKworICAgIHN0b3JhZ2VBcmVhLT5hZGRMaXN0ZW5lcihj
b25uZWN0aW9uLnVuaXF1ZUlEKCkpOworCisgICAgY29tcGxldGlvbkhhbmRsZXIoc3RvcmFnZUFy
ZWFJRCk7Cit9CisKK3ZvaWQgU3RvcmFnZU1hbmFnZXJTZXQ6OmNvbm5lY3RUb1Nlc3Npb25TdG9y
YWdlQXJlYShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgdWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBTZWN1cml0eU9yaWdpbkRhdGEmJiBz
ZWN1cml0eU9yaWdpbkRhdGEsIENvbm5lY3RUb1N0b3JhZ2VBcmVhQ2FsbGJhY2smJiBjb21wbGV0
aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIGF1
dG8qIHN0b3JhZ2VNYW5hZ2VyID0gbV9zdG9yYWdlTWFuYWdlcnMuZ2V0KHNlc3Npb25JRCk7Cisg
ICAgQVNTRVJUKHN0b3JhZ2VNYW5hZ2VyKTsKKyAgICBpZiAoIXN0b3JhZ2VNYW5hZ2VyKSB7Cisg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGludmFsaWRTdG9yYWdlQXJlYUlEKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGF1dG8qIHN0b3JhZ2VBcmVhID0gc3RvcmFnZU1hbmFnZXIt
PmNyZWF0ZVNlc3Npb25TdG9yYWdlQXJlYShzdG9yYWdlTmFtZXNwYWNlSUQsIFdURk1vdmUoc2Vj
dXJpdHlPcmlnaW5EYXRhKSk7CisgICAgYXV0byBzdG9yYWdlQXJlYUlEID0gc3RvcmFnZUFyZWEt
PmlkZW50aWZpZXIoKTsKKyAgICBhdXRvW2l0ZXIsIGlzTmV3RW50cnldID0gbV9zdG9yYWdlQXJl
YXMuYWRkKHN0b3JhZ2VBcmVhSUQsIG51bGxwdHIpOworICAgIGlmIChpc05ld0VudHJ5KQorICAg
ICAgICBpdGVyLT52YWx1ZSA9IHN0b3JhZ2VBcmVhOworICAgIGVsc2UKKyAgICAgICAgQVNTRVJU
KHN0b3JhZ2VBcmVhID09IGl0ZXItPnZhbHVlKTsKKworICAgIHN0b3JhZ2VBcmVhLT5hZGRMaXN0
ZW5lcihjb25uZWN0aW9uLnVuaXF1ZUlEKCkpOworCisgICAgY29tcGxldGlvbkhhbmRsZXIoc3Rv
cmFnZUFyZWFJRCk7Cit9CisKK3ZvaWQgU3RvcmFnZU1hbmFnZXJTZXQ6OmRpc2Nvbm5lY3RGcm9t
U3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCB1aW50NjRfdCBzdG9yYWdl
QXJlYUlEKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworICAgIGF1dG8qIHN0
b3JhZ2VBcmVhID0gbV9zdG9yYWdlQXJlYXMuZ2V0KHN0b3JhZ2VBcmVhSUQpOworICAgIEFTU0VS
VChzdG9yYWdlQXJlYSk7CisgICAgQVNTRVJUKHN0b3JhZ2VBcmVhLT5oYXNMaXN0ZW5lcihjb25u
ZWN0aW9uLnVuaXF1ZUlEKCkpKTsKKworICAgIHN0b3JhZ2VBcmVhLT5yZW1vdmVMaXN0ZW5lcihj
b25uZWN0aW9uLnVuaXF1ZUlEKCkpOworfQorCit2b2lkIFN0b3JhZ2VNYW5hZ2VyU2V0OjpnZXRW
YWx1ZXMoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCB1aW50NjRfdCBzdG9yYWdlQXJlYUlE
LCBHZXRWYWx1ZXNDYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIEFTU0VSVCgh
UnVuTG9vcDo6aXNNYWluKCkpOworICAgIGF1dG8qIHN0b3JhZ2VBcmVhID0gbV9zdG9yYWdlQXJl
YXMuZ2V0KHN0b3JhZ2VBcmVhSUQpOworICAgIEFTU0VSVChzdG9yYWdlQXJlYSk7CisgICAgQVNT
RVJUKHN0b3JhZ2VBcmVhLT5oYXNMaXN0ZW5lcihjb25uZWN0aW9uLnVuaXF1ZUlEKCkpKTsKKwor
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0b3JhZ2VBcmVhID8gc3RvcmFnZUFyZWEtPml0ZW1zKCkg
OiBIYXNoTWFwPFN0cmluZywgU3RyaW5nPigpKTsKK30KKworCit2b2lkIFN0b3JhZ2VNYW5hZ2Vy
U2V0OjpzZXRJdGVtKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgdWludDY0X3Qgc3RvcmFn
ZUFyZWFJRCwgdWludDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwgdWludDY0X3Qgc3RvcmFnZU1h
cFNlZWQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlLCBjb25zdCBTdHJp
bmcmIHVybFN0cmluZykKK3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBh
dXRvKiBzdG9yYWdlQXJlYSA9IG1fc3RvcmFnZUFyZWFzLmdldChzdG9yYWdlQXJlYUlEKTsKKyAg
ICBBU1NFUlQoc3RvcmFnZUFyZWEpOworCisgICAgYm9vbCBxdW90YUVycm9yOworICAgIHN0b3Jh
Z2VBcmVhLT5zZXRJdGVtKGNvbm5lY3Rpb24udW5pcXVlSUQoKSwgc291cmNlU3RvcmFnZUFyZWFJ
RCwga2V5LCB2YWx1ZSwgdXJsU3RyaW5nLCBxdW90YUVycm9yKTsKKworICAgIGNvbm5lY3Rpb24u
c2VuZChNZXNzYWdlczo6U3RvcmFnZUFyZWFNYXA6OkRpZFNldEl0ZW0oc3RvcmFnZU1hcFNlZWQs
IGtleSwgcXVvdGFFcnJvciksIHN0b3JhZ2VBcmVhSUQpOworfSAKKwordm9pZCBTdG9yYWdlTWFu
YWdlclNldDo6cmVtb3ZlSXRlbShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVpbnQ2NF90
IHN0b3JhZ2VBcmVhSUQsIHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIHVpbnQ2NF90IHN0
b3JhZ2VNYXBTZWVkLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcp
Cit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisgICAgYXV0byogc3RvcmFnZUFy
ZWEgPSBtX3N0b3JhZ2VBcmVhcy5nZXQoc3RvcmFnZUFyZWFJRCk7CisgICAgQVNTRVJUKHN0b3Jh
Z2VBcmVhKTsKKworICAgIHN0b3JhZ2VBcmVhLT5yZW1vdmVJdGVtKGNvbm5lY3Rpb24udW5pcXVl
SUQoKSwgc291cmNlU3RvcmFnZUFyZWFJRCwga2V5LCB1cmxTdHJpbmcpOworCisgICAgY29ubmVj
dGlvbi5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlQXJlYU1hcDo6RGlkUmVtb3ZlSXRlbShzdG9yYWdl
TWFwU2VlZCwga2V5KSwgc3RvcmFnZUFyZWFJRCk7Cit9CisKK3ZvaWQgU3RvcmFnZU1hbmFnZXJT
ZXQ6OmNsZWFyKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgdWludDY0X3Qgc3RvcmFnZUFy
ZWFJRCwgdWludDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwgdWludDY0X3Qgc3RvcmFnZU1hcFNl
ZWQsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNN
YWluKCkpOworICAgIGF1dG8qIHN0b3JhZ2VBcmVhID0gbV9zdG9yYWdlQXJlYXMuZ2V0KHN0b3Jh
Z2VBcmVhSUQpOworICAgIEFTU0VSVChzdG9yYWdlQXJlYSk7CisKKyAgICBzdG9yYWdlQXJlYS0+
Y2xlYXIoY29ubmVjdGlvbi51bmlxdWVJRCgpLCBzb3VyY2VTdG9yYWdlQXJlYUlELCB1cmxTdHJp
bmcpOworCisgICAgY29ubmVjdGlvbi5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlQXJlYU1hcDo6RGlk
Q2xlYXIoc3RvcmFnZU1hcFNlZWQpLCBzdG9yYWdlQXJlYUlEKTsKK30KKwordm9pZCBTdG9yYWdl
TWFuYWdlclNldDo6Y2xvbmVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShJUEM6OkNvbm5lY3Rpb24m
LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGZyb21TdG9yYWdlTmFtZXNwYWNl
SUQsIHVpbnQ2NF90IHRvU3RvcmFnZU5hbWVzcGFjZUlEKQoreworICAgIEFTU0VSVCghUnVuTG9v
cDo6aXNNYWluKCkpOworICAgIGF1dG8qIHN0b3JhZ2VNYW5hZ2VyID0gbV9zdG9yYWdlTWFuYWdl
cnMuZ2V0KHNlc3Npb25JRCk7CisgICAgQVNTRVJUKHN0b3JhZ2VNYW5hZ2VyKTsKKworICAgIHN0
b3JhZ2VNYW5hZ2VyLT5jbG9uZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKGZyb21TdG9yYWdlTmFt
ZXNwYWNlSUQsIHRvU3RvcmFnZU5hbWVzcGFjZUlEKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2Uv
U3RvcmFnZU1hbmFnZXJTZXQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3Rv
cmFnZS9TdG9yYWdlTWFuYWdlclNldC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk2OTk5YTY4ZDkwMTU4YWJhMmI2
NGRmYzgwMWQwMmExNjcyZjMwOTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQuaApAQCAtMCwwICsxLDk3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlICJTdG9yYWdlTWFuYWdlci5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
U2VjdXJpdHlPcmlnaW5EYXRhLmg+CisjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgorCit1c2lu
ZyBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1
c2luZyBDb25uZWN0VG9TdG9yYWdlQXJlYUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCh1aW50NjRfdCk+OwordXNpbmcgR2V0VmFsdWVzQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+Jik+OwordXNpbmcgR2V0T3JpZ2lu
c0NhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0PFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YT4mJik+OwordXNpbmcgR2V0T3JpZ2luRGV0YWlsc0NhbGxiYWNrID0gQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpP
cmlnaW5EZXRhaWxzPiYmKT47Cit1c2luZyBEZWxldGVDYWxsYmFjayA9IENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT47CisKK2NsYXNzIFN0b3JhZ2VNYW5hZ2VyU2V0IDogcHVibGljIElQQzo6Q29u
bmVjdGlvbjo6V29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UmVmPFN0b3JhZ2VNYW5hZ2VyU2V0PiBjcmVhdGUoKTsKKyAgICBTdG9yYWdlTWFuYWdlclNldCgp
OworICAgIH5TdG9yYWdlTWFuYWdlclNldCgpOworCisgICAgdm9pZCBhZGQoUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlRGlyZWN0b3J5KTsKKyAgICB2b2lkIHJlbW92
ZShQQUw6OlNlc3Npb25JRCk7CisKKyAgICB2b2lkIGFkZENvbm5lY3Rpb24oSVBDOjpDb25uZWN0
aW9uJik7CisgICAgdm9pZCByZW1vdmVDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiYpOworCisg
ICAgdm9pZCB3YWl0VW50aWxUYXNrc0ZpbmlzaGVkKCk7CisgICAgdm9pZCBzdXNwZW5kKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCByZXN1bWUoKTsKKworICAgIHZvaWQg
Z2V0U2Vzc2lvblN0b3JhZ2VPcmlnaW5zKFBBTDo6U2Vzc2lvbklELCBHZXRPcmlnaW5zQ2FsbGJh
Y2smJik7CisgICAgdm9pZCBkZWxldGVTZXNzaW9uU3RvcmFnZShQQUw6OlNlc3Npb25JRCwgRGVs
ZXRlQ2FsbGJhY2smJik7CisgICAgdm9pZCBkZWxldGVTZXNzaW9uU3RvcmFnZUZvck9yaWdpbnMo
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+
JiwgRGVsZXRlQ2FsbGJhY2smJik7CisgICAgdm9pZCBnZXRMb2NhbFN0b3JhZ2VPcmlnaW5zKFBB
TDo6U2Vzc2lvbklELCBHZXRPcmlnaW5zQ2FsbGJhY2smJik7CisgICAgdm9pZCBkZWxldGVMb2Nh
bFN0b3JhZ2VNb2RpZmllZFNpbmNlKFBBTDo6U2Vzc2lvbklELCBXYWxsVGltZSwgRGVsZXRlQ2Fs
bGJhY2smJik7CisgICAgdm9pZCBkZWxldGVMb2NhbFN0b3JhZ2VGb3JPcmlnaW5zKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYsIERlbGV0
ZUNhbGxiYWNrJiYpOworICAgIHZvaWQgZ2V0TG9jYWxTdG9yYWdlT3JpZ2luRGV0YWlscyhQQUw6
OlNlc3Npb25JRCwgR2V0T3JpZ2luRGV0YWlsc0NhbGxiYWNrJiYpOworCisgICAgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKKyAgICB2b2lk
IGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBz
dGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKTsKKworcHJpdmF0ZToK
KyAgICAvLyBNZXNzYWdlIEhhbmRsZXJzCisgICAgdm9pZCBjb25uZWN0VG9Mb2NhbFN0b3JhZ2VB
cmVhKElQQzo6Q29ubmVjdGlvbiYsIFBBTDo6U2Vzc2lvbklEICwgdWludDY0X3Qgc3RvcmFnZU5h
bWVzcGFjZUlELCBTZWN1cml0eU9yaWdpbkRhdGEmJiwgQ29ubmVjdFRvU3RvcmFnZUFyZWFDYWxs
YmFjayYmKTsKKyAgICB2b2lkIGNvbm5lY3RUb1RyYW5zaWVudExvY2FsU3RvcmFnZUFyZWEoSVBD
OjpDb25uZWN0aW9uJiwgUEFMOjpTZXNzaW9uSUQgLCB1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNl
SUQsIFNlY3VyaXR5T3JpZ2luRGF0YSYmLCBTZWN1cml0eU9yaWdpbkRhdGEmJiwgQ29ubmVjdFRv
U3RvcmFnZUFyZWFDYWxsYmFjayYmKTsKKyAgICB2b2lkIGNvbm5lY3RUb1Nlc3Npb25TdG9yYWdl
QXJlYShJUEM6OkNvbm5lY3Rpb24mLCBQQUw6OlNlc3Npb25JRCwgdWludDY0X3Qgc3RvcmFnZU5h
bWVzcGFjZUlELCBTZWN1cml0eU9yaWdpbkRhdGEmJiwgQ29ubmVjdFRvU3RvcmFnZUFyZWFDYWxs
YmFjayYmKTsKKyAgICB2b2lkIGRpc2Nvbm5lY3RGcm9tU3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0
aW9uJiwgdWludDY0X3Qgc3RvcmFnZUFyZWFJRCk7CisgICAgdm9pZCBnZXRWYWx1ZXMoSVBDOjpD
b25uZWN0aW9uJiwgdWludDY0X3Qgc3RvcmFnZUFyZWFJRCwgR2V0VmFsdWVzQ2FsbGJhY2smJik7
CisgICAgdm9pZCBzZXRJdGVtKElQQzo6Q29ubmVjdGlvbiYsIHVpbnQ2NF90IHN0b3JhZ2VBcmVh
SUQsIHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVk
LCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiB1
cmxTdHJpbmcpOworICAgIHZvaWQgcmVtb3ZlSXRlbShJUEM6OkNvbm5lY3Rpb24mLCB1aW50NjRf
dCBzdG9yYWdlQXJlYUlELCB1aW50NjRfdCBzb3VyY2VTdG9yYWdlQXJlYUlELCB1aW50NjRfdCBz
dG9yYWdlTWFwU2VlZCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5n
KTsKKyAgICB2b2lkIGNsZWFyKElQQzo6Q29ubmVjdGlvbiYsIHVpbnQ2NF90IHN0b3JhZ2VBcmVh
SUQsIHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVk
LCBjb25zdCBTdHJpbmcmIHVybFN0cmluZyk7CisgICAgdm9pZCBjbG9uZVNlc3Npb25TdG9yYWdl
TmFtZXNwYWNlKElQQzo6Q29ubmVjdGlvbiYsIFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBmcm9t
U3RvcmFnZU5hbWVzcGFjZUlELCB1aW50NjRfdCB0b1N0b3JhZ2VOYW1lc3BhY2VJRCk7CisKKyAg
ICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBSZWZQdHI8U3RvcmFnZU1hbmFnZXI+PiBtX3N0b3Jh
Z2VNYW5hZ2VyczsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBTdG9yYWdlTWFuYWdlcjo6U3RvcmFn
ZUFyZWEqPiBtX3N0b3JhZ2VBcmVhczsgLy8gc3RvcmFnZUFyZWEgaXMga2VwdCBhbGl2ZSBieSBz
dG9yYWdlbmFtZXNwYWNlCisKKyAgICBIYXNoU2V0PElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQ+
IG1fY29ubmVjdGlvbnM7CisgICAgUmVmPFdvcmtRdWV1ZT4gbV9xdWV1ZTsKKworICAgIGVudW0g
Y2xhc3MgU3RhdGUgeworICAgICAgICBSdW5uaW5nLAorICAgICAgICBXaWxsU3VzcGVuZCwKKyAg
ICAgICAgU3VzcGVuZGVkCisgICAgfTsKKyAgICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6OlJ1bm5p
bmcgfTsKKyAgICBMb2NrIG1fc3RhdGVMb2NrOworICAgIENvbmRpdGlvbiBtX3N0YXRlQ2hhbmdl
Q29uZGl0aW9uOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFn
ZU1hbmFnZXJTZXQubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTBjMTNhMDBiYzM1YjkxNWZlYWQ4
NDAwNWRhMzQ3ZDI3YzdkMTdkNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldC5tZXNzYWdlcy5pbgpAQCAt
MCwwICsxLDM0IEBACisjIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK21l
c3NhZ2VzIC0+IFN0b3JhZ2VNYW5hZ2VyU2V0IHsKKyAgICBDb25uZWN0VG9Mb2NhbFN0b3JhZ2VB
cmVhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlE
LCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHNlY3VyaXR5T3JpZ2luRGF0YSkg
LT4gKHVpbnQ2NF90IHN0b3JhZ2VBcmVhSUQpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgor
ICAgIENvbm5lY3RUb1RyYW5zaWVudExvY2FsU3RvcmFnZUFyZWEoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCB1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEgdG9wTGV2ZWxTZWN1cml0eU9yaWdpbkRhdGEsIHN0cnVjdCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEgc2VjdXJpdHlPcmlnaW5EYXRhKSAtPiAodWludDY0X3Qgc3Rv
cmFnZUFyZWFJRCkgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCisgICAgQ29ubmVjdFRvU2Vz
c2lvblN0b3JhZ2VBcmVhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3Qgc3RvcmFn
ZU5hbWVzcGFjZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHNlY3VyaXR5
T3JpZ2luRGF0YSkgLT4gKHVpbnQ2NF90IHN0b3JhZ2VBcmVhSUQpIFN5bmNocm9ub3VzIFdhbnRz
Q29ubmVjdGlvbgorICAgIERpc2Nvbm5lY3RGcm9tU3RvcmFnZUFyZWEodWludDY0X3Qgc3RvcmFn
ZUFyZWFJRCkgV2FudHNDb25uZWN0aW9uCisgICAgR2V0VmFsdWVzKHVpbnQ2NF90IHN0b3JhZ2VB
cmVhSUQpIC0+IChIYXNoTWFwPFN0cmluZywgU3RyaW5nPiB2YWx1ZXMpIFN5bmNocm9ub3VzIFdh
bnRzQ29ubmVjdGlvbgorICAgIENsb25lU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBmcm9tU3RvcmFnZU5hbWVzcGFjZUlELCB1aW50NjRf
dCB0b1N0b3JhZ2VOYW1lc3BhY2VJRCkgV2FudHNDb25uZWN0aW9uCisKKyAgICBTZXRJdGVtKHVp
bnQ2NF90IHN0b3JhZ2VBcmVhSUQsIHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIHVpbnQ2
NF90IHN0b3JhZ2VNYXBTZWVkLCBTdHJpbmcga2V5LCBTdHJpbmcgdmFsdWUsIFN0cmluZyB1cmxT
dHJpbmcpIFdhbnRzQ29ubmVjdGlvbgorICAgIFJlbW92ZUl0ZW0odWludDY0X3Qgc3RvcmFnZUFy
ZWFJRCwgdWludDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwgdWludDY0X3Qgc3RvcmFnZU1hcFNl
ZWQsIFN0cmluZyBrZXksIFN0cmluZyB1cmxTdHJpbmcpIFdhbnRzQ29ubmVjdGlvbgorICAgIENs
ZWFyKHVpbnQ2NF90IHN0b3JhZ2VBcmVhSUQsIHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQs
IHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkLCBTdHJpbmcgdXJsU3RyaW5nKSBXYW50c0Nvbm5lY3Rp
b24KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQ
YXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJh
bWV0ZXJzLmNwcAppbmRleCBkOTFhMzRmNmE5MjcyNWMxNDE3NzNmMDhhYjQyOWU3ZThlNTg2M2Mz
Li42NGEwYzFiYmI0OWU2ZmFlMmQ4N2UxMGQ5ZGVlMTU4NGIwMGYwOThkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuY3BwCkBAIC01
Myw2ICs1Myw4IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM6OmVuY29kZShJUEM6
OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBzZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uRGlyZWN0b3J5IDw8IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlF
eHRlbnNpb25IYW5kbGU7CiAjZW5kaWYKIAorICAgIGVuY29kZXIgPDwgbG9jYWxTdG9yYWdlRGly
ZWN0b3J5IDw8IGxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKKwogICAgIGVu
Y29kZXIgPDwgcGVyT3JpZ2luU3RvcmFnZVF1b3RhOwogICAgIGVuY29kZXIgPDwgcGVyVGhpcmRQ
YXJ0eU9yaWdpblN0b3JhZ2VRdW90YTsKIH0KQEAgLTEyMSw2ICsxMjMsMTggQEAgT3B0aW9uYWw8
V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM+IFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOjpk
ZWNvZGUoSVBDOjpEZWMKICAgICBwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25E
aXJlY3RvcnlFeHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKCpzZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKICNlbmRpZgogCisgICAgT3B0aW9uYWw8U3Ry
aW5nPiBsb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7CisgICAgZGVjb2RlciA+PiBsb2NhbFN0b3JhZ2VE
aXJlY3Rvcnk7CisgICAgaWYgKCFsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpCisgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgcGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBX
VEZNb3ZlKCpsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpOworICAgIAorICAgIE9wdGlvbmFsPFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZT4gbG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxl
OworICAgIGRlY29kZXIgPj4gbG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwor
ICAgIGlmICghbG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKQorICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5
RXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgqbG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9u
SGFuZGxlKTsKKwogICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwZXJPcmlnaW5TdG9yYWdlUXVvdGE7
CiAgICAgZGVjb2RlciA+PiBwZXJPcmlnaW5TdG9yYWdlUXVvdGE7CiAgICAgaWYgKCFwZXJPcmln
aW5TdG9yYWdlUXVvdGEpCkBAIC0xNDksNiArMTYzLDcgQEAgV2Vic2l0ZURhdGFTdG9yZVBhcmFt
ZXRlcnMgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM6OnByaXZhdGVTZXNzaW9uUGFyYW1ldGVy
cygKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgICAgICwgeyB9LCB7IH0KICNlbmRp
ZgorICAgICAgICAsIHsgfSwgeyB9CiAgICAgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmgKaW5kZXggOTkyZmVlOTdkMDk5NzRj
OWYzNDdmNmM3MGRhYTFjZWJmM2UyZjI0Zi4uNmZlY2UzZjE1NGZlOWQ3ZmI5OGJmYzk3ZDliMWI3
YmZmNDI0ZjM5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGFT
dG9yZVBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0
b3JlUGFyYW1ldGVycy5oCkBAIC03MCw2ICs3MCw5IEBAIHN0cnVjdCBXZWJzaXRlRGF0YVN0b3Jl
UGFyYW1ldGVycyB7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAjZW5kaWYKIAorICAgIFN0cmlu
ZyBsb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7CisgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGxv
Y2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKKwogICAgIHVpbnQ2NF90IHBlck9y
aWdpblN0b3JhZ2VRdW90YSB7IFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6OmRlZmF1bHRR
dW90YSgpIH07CiAgICAgdWludDY0X3QgcGVyVGhpcmRQYXJ0eU9yaWdpblN0b3JhZ2VRdW90YSB7
IFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6OmRlZmF1bHRUaGlyZFBhcnR5UXVvdGEoKSB9
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0CmluZGV4IDFiNzVkN2EwNDBiMTgzZTM3NzdkODhjYzU0ODQwYTEwZGQw
NjRiNjEuLmMyZjEzY2QxNGY1ZjI2MzE2Yzc4NTA5NmQ2YTdmNjE1OGIyZWQyNmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2Vz
LnR4dApAQCAtNjksNiArNjksNyBAQCBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgQG5vLXVuaWZ5CiBOZXR3b3JrUHJvY2Vzcy9X
ZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcAogTmV0d29ya1Byb2Nlc3MvV2ViU3Rv
cmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3BwCiBOZXR3b3JrUHJvY2Vzcy9XZWJT
dG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcAorTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9y
YWdlTWFuYWdlclNldC5jcHAKIAogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5n
aW5lLmNwcAogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggZWU4NGFj
ZWI2MDI1MzdiODljYjhmNmYzYThlNjEyYmFiMmQ0YTk4Ny4uMmZjZDdhMGNlNmQwNDAwNGJhYmRi
Mjk1YWMxOTQ0OTMwMGI2YTY3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcApAQCAtNTcxLDggKzU3MSw4IEBAIE5ldHdvcmtQcm9jZXNzUHJveHkmIFdlYlBy
b2Nlc3NQb29sOjplbnN1cmVOZXR3b3JrUHJvY2VzcyhXZWJzaXRlRGF0YVN0b3JlKiB3aXRoCiAg
ICAgYXV0byBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBtX3dlYnNpdGVEYXRhU3RvcmUgPyBtX3dl
YnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5yZXNvbHZlZExvY2FsU3RvcmFnZURp
cmVjdG9yeSgpIDogbnVsbFN0cmluZygpOwogICAgIGlmICghbG9jYWxTdG9yYWdlRGlyZWN0b3J5
KQogICAgICAgICBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBBUEk6OldlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBwYXJhbWV0ZXJzLmRlZmF1bHRE
YXRhU3RvcmVQYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VE
aXJlY3RvcnkgPSBsb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7Ci0gICAgU2FuZGJveEV4dGVuc2lvbjo6
Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KGxvY2FsU3RvcmFnZURpcmVjdG9yeSwg
cGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFt
ZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBwYXJhbWV0
ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeSA9IGxv
Y2FsU3RvcmFnZURpcmVjdG9yeTsKKyAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVG
b3JSZWFkV3JpdGVEaXJlY3RvcnkobG9jYWxTdG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmRl
ZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhh
bmRsZSk7CiAKICAgICBpZiAobV93ZWJzaXRlRGF0YVN0b3JlKQogICAgICAgICBwYXJhbWV0ZXJz
LmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5ID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRl
RGF0YVN0b3JlKCkucmVzb2x2ZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJz
aXRlRGF0YVN0b3JlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KaW5kZXggZDdkMjJkOTNiOTJhNjViYmJh
YzE0MGViYjdiNmM0OGQzZjRiN2E4ZS4uNWRjZGUwYjI3YTQwYWQ0NDExODc2MmEwNTEwZjZmZmMy
NjJlMDY3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQpAQCAtMTA3LDEx
ICsxMDcsNiBAQCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0b3JlOjpw
YXJhbWV0ZXJzKCkKICAgICBpZiAoIXJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkuaXNF
bXB0eSgpKQogICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3Jp
dGVEaXJlY3RvcnkocmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgcmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RpcmVjdG9yeUhhbmRsZSk7CiAKLSAgICBhdXRvIGxvY2FsU3RvcmFnZURpcmVj
dG9yeSA9IHJlc29sdmVkTG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAgU2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlIGxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKLSAgICBp
ZiAoIWxvY2FsU3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpCi0gICAgICAgIFNhbmRib3hFeHRl
bnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShsb2NhbFN0b3JhZ2VEaXJl
Y3RvcnksIGxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7Ci0KICAgICBhdXRv
IG5ldHdvcmtDYWNoZURpcmVjdG9yeSA9IHJlc29sdmVkTmV0d29ya0NhY2hlRGlyZWN0b3J5KCk7
CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIG5ldHdvcmtDYWNoZURpcmVjdG9yeUV4dGVu
c2lvbkhhbmRsZTsKICAgICBpZiAoIW5ldHdvcmtDYWNoZURpcmVjdG9yeS5pc0VtcHR5KCkpCkBA
IC0xMzksOCArMTM0LDYgQEAgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgV2Vic2l0ZURhdGFT
dG9yZTo6cGFyYW1ldGVycygpCiAgICAgICAgIG1fY29uZmlndXJhdGlvbi0+ZGV2aWNlTWFuYWdl
bWVudFJlc3RyaWN0aW9uc0VuYWJsZWQoKSwKICAgICAgICAgbV9jb25maWd1cmF0aW9uLT5hbGxM
b2Fkc0Jsb2NrZWRCeURldmljZU1hbmFnZW1lbnRSZXN0cmljdGlvbnNGb3JUZXN0aW5nKCksCiAg
ICAgICAgIFdURk1vdmUocmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbnVhbFByZXZhbGVudFJlc291
cmNlKSwKLSAgICAgICAgV1RGTW92ZShsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpLAotICAgICAgICBX
VEZNb3ZlKGxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSksCiAgICAgICAgIFdU
Rk1vdmUobmV0d29ya0NhY2hlRGlyZWN0b3J5KSwKICAgICAgICAgV1RGTW92ZShuZXR3b3JrQ2Fj
aGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpLAogICAgIH07CkBAIC0xNzUsNiArMTY4LDEwIEBA
IFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMo
KQogICAgIGlmICghcGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5
LmlzRW1wdHkoKSkKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVh
ZFdyaXRlRGlyZWN0b3J5KHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVj
dG9yeSwgcGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5RXh0ZW5z
aW9uSGFuZGxlKTsKICNlbmRpZgorICAgIAorICAgIHBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGly
ZWN0b3J5ID0gcmVzb2x2ZWRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKTsKKyAgICBpZiAoIXBhcmFt
ZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5LmlzRW1wdHkoKSkKKyAgICAgICAgU2FuZGJveEV4
dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KHBhcmFtZXRlcnMubG9j
YWxTdG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVu
c2lvbkhhbmRsZSk7CiAKICAgICBwYXJhbWV0ZXJzLnBlck9yaWdpblN0b3JhZ2VRdW90YSA9IHBl
ck9yaWdpblN0b3JhZ2VRdW90YSgpOwogICAgIHBhcmFtZXRlcnMucGVyVGhpcmRQYXJ0eU9yaWdp
blN0b3JhZ2VRdW90YSA9IHBlclRoaXJkUGFydHlPcmlnaW5TdG9yYWdlUXVvdGEoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5jcHAKaW5kZXggMDBjN2ZlYjBlMzhiNDUyNGRjMjE4YTE1OWVmNzE0OTU0ZDRkZmFlNi4u
NDcwNWQxMmNiNmM5NzJjNTkwZmQyODIzOTlkODNlYjFmNjkyN2JiNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5j
cHAKQEAgLTE5NTMsOCArMTk1Myw4IEBAIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNp
dGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMoKQogCiAgICAgYXV0byBsb2NhbFN0b3JhZ2VEaXJlY3Rv
cnkgPSByZXNvbHZlZExvY2FsU3RvcmFnZURpcmVjdG9yeSgpOwogICAgIGlmICghbG9jYWxTdG9y
YWdlRGlyZWN0b3J5LmlzRW1wdHkoKSkgewotICAgICAgICBwYXJhbWV0ZXJzLm5ldHdvcmtTZXNz
aW9uUGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBsb2NhbFN0b3JhZ2VEaXJlY3Rv
cnk7Ci0gICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURp
cmVjdG9yeShsb2NhbFN0b3JhZ2VEaXJlY3RvcnksIHBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25Q
YXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CisgICAgICAg
IHBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gbG9jYWxTdG9yYWdlRGlyZWN0b3J5
OworICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJl
Y3RvcnkobG9jYWxTdG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVj
dG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAgICAgfQogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJB
U0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCAwYTJiMTkyZmY4NzVkNWYwNWFkMmJlYzE0YTlhZWMzNDI0MzAyY2Q5Li40N2FkYTE1Njc1
NDRkYjg2NGI5YzE3ZTg4ZDNmYjc2ZjU1YjQ4NDRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI5NCw4ICsyOTQsNiBAQAogCQkxQUIx
Rjc5NzFEMUIzNjEzMDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yTWVzc2FnZXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjFGNzkzMUQx
QjM2MTMwMDdDOUJEMSAvKiBXZWJQYXltZW50Q29vcmRpbmF0b3JNZXNzYWdlcy5oICovOyB9Owog
CQkxQUIxRjc5ODFEMUIzNjEzMDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlN
ZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUFCMUY3OTQxRDFCMzYxMzAwN0M5QkQxIC8qIFdlYlBheW1lbnRDb29yZGluYXRv
clByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJMUFCMUY3OTkxRDFCMzYxMzAwN0M5
QkQxIC8qIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjFGNzk1MUQxQjM2MTMwMDdDOUJE
MSAvKiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1lc3NhZ2VzLmggKi87IH07Ci0JCTFBQjMx
QTk2MTZCQzY4ODEwMEY2REJDOSAvKiBTdG9yYWdlTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUIzMUE5NDE2
QkM2ODgxMDBGNkRCQzkgLyogU3RvcmFnZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9
OwotCQkxQUIzMUE5NzE2QkM2ODgxMDBGNkRCQzkgLyogU3RvcmFnZU1hbmFnZXJNZXNzYWdlcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFCMzFBOTUx
NkJDNjg4MTAwRjZEQkM5IC8qIFN0b3JhZ2VNYW5hZ2VyTWVzc2FnZXMuaCAqLzsgfTsKIAkJMUFC
NDBFRTYxQkY2NzdFMzAwQkE4MUJFIC8qIFdLTWVudUl0ZW1JZGVudGlmaWVyc1ByaXZhdGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjQwRUU0MUJG
Njc3RTMwMEJBODFCRSAvKiBXS01lbnVJdGVtSWRlbnRpZmllcnNQcml2YXRlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUFCNDc0RDgxODRENDNG
RDAwNTFCNjIyIC8qIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFCNDc0RDcxODRENDNGRDAwNTFCNjIyIC8q
IFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTFBQjQ3NERBMTg0RDQ0MjUwMDUxQjYyMiAvKiBXS0J1bmRs
ZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFBQjQ3NEQ5MTg0RDQ0MjUwMDUxQjYyMiAvKiBXS0J1bmRsZVBhZ2VS
ZXNvdXJjZUxvYWRDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtMTI3MSw2ICsxMjY5LDkgQEAKIAkJOTM1RUVCOUIxMjc3NjE3QzAwMzMy
MkI4IC8qIFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM1RUVCOTgxMjc3NjE2RDAwMzMyMkI4IC8qIFdL
QnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTkzNUVFQjlGMTI3NzYxQUMwMDMzMjJCOCAvKiBXS0J1bmRs
ZUJhY2tGb3J3YXJkTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTM1RUVCOTYxMjc3NjE2RDAwMzMyMkI4IC8qIFdLQnVuZGxlQmFja0ZvcndhcmRM
aXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
OTM3MzVFQkIxQzkyOTg2MzAwMzM2RkE3IC8qIFdLUHJldmlld0FjdGlvbkl0ZW1JbnRlcm5hbC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM3MzVFQkEx
QzkyOTg2MzAwMzM2RkE3IC8qIFdLUHJldmlld0FjdGlvbkl0ZW1JbnRlcm5hbC5oICovOyB9Owor
CQk5Mzc2Mjc0NDIyRjExNUREMDAzNUJGODAgLyogU3RvcmFnZU1hbmFnZXJTZXQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNzYyNzQyMjJGMTE1Q0Qw
MDM1QkY4MCAvKiBTdG9yYWdlTWFuYWdlclNldC5oICovOyB9OworCQk5Mzc5MTBEQzIyRjE3MTAz
MDAzQkExNDQgLyogU3RvcmFnZU1hbmFnZXJTZXRNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM3OTEwREIyMkYxNkZDOTAw
M0JBMTQ0IC8qIFN0b3JhZ2VNYW5hZ2VyU2V0TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJ
OTM3OTEwREUyMkYxNzFBOTAwM0JBMTQ0IC8qIFN0b3JhZ2VNYW5hZ2VyU2V0TWVzc2FnZXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNzkxMEREMjJG
MTcxODEwMDNCQTE0NCAvKiBTdG9yYWdlTWFuYWdlclNldE1lc3NhZ2VzLmggKi87IH07CiAJCTkz
OTEwNzRGMUJGNkJDNjUwMDhDMTdBRCAvKiBXS1ByZXZpZXdFbGVtZW50SW5mb0ludGVybmFsLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzkxMDc0RTFC
RjZCQzY1MDA4QzE3QUQgLyogV0tQcmV2aWV3RWxlbWVudEluZm9JbnRlcm5hbC5oICovOyB9Owog
CQk5MzkxRjJDQjEyMUI2N0FEMDBFQkY3RTggLyogV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM5MUYyODMx
MjFCMzhGNTAwRUJGN0U4IC8qIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaCAqLzsgfTsKIAkJ
OTM5NUU2OEExQkYyQzMzMjAwRjQ5QkNFIC8qIFdLUHJldmlld0VsZW1lbnRJbmZvLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5Mzk1RTY4OTFCRjJDMzMy
MDBGNDlCQ0UgLyogV0tQcmV2aWV3RWxlbWVudEluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQdWJsaWMsICk7IH07IH07CkBAIC0xNzAxLDYgKzE3MDIsOCBAQAogCQkJY29tcGls
ZXJTcGVjID0gY29tLmFwcGxlLmNvbXBpbGVycy5wcm94eS5zY3JpcHQ7CiAJCQlmaWxlUGF0dGVy
bnMgPSAiKi5oIjsKIAkJCWZpbGVUeXBlID0gcGF0dGVybi5wcm94eTsKKwkJCWlucHV0RmlsZXMg
PSAoCisJCQkpOwogCQkJaXNFZGl0YWJsZSA9IDE7CiAJCQlvdXRwdXRGaWxlcyA9ICgKIAkJCQki
JChIRUFERVJfT1VUUFVUX0RJUikvJChJTlBVVF9GSUxFX05BTUUpIiwKQEAgLTIzMDEsOCArMjMw
NCw2IEBACiAJCTFBQjFGNzkzMUQxQjM2MTMwMDdDOUJEMSAvKiBXZWJQYXltZW50Q29vcmRpbmF0
b3JNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJQYXltZW50
Q29vcmRpbmF0b3JNZXNzYWdlcy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJQ
YXltZW50Q29vcmRpbmF0b3JNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNf
RElSOyB9OwogCQkxQUIxRjc5NDFEMUIzNjEzMDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBw
YXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1l
c3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJ
CTFBQjFGNzk1MUQxQjM2MTMwMDdDOUJEMSAvKiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1l
c3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5TWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJP
RFVDVFNfRElSOyB9OwotCQkxQUIzMUE5NDE2QkM2ODgxMDBGNkRCQzkgLyogU3RvcmFnZU1hbmFn
ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gU3RvcmFnZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0Mi9TdG9yYWdlTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUg
PSBCVUlMVF9QUk9EVUNUU19ESVI7IH07Ci0JCTFBQjMxQTk1MTZCQzY4ODEwMEY2REJDOSAvKiBT
dG9yYWdlTWFuYWdlck1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IFN0b3JhZ2VNYW5hZ2VyTWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIv
U3RvcmFnZU1hbmFnZXJNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElS
OyB9OwogCQkxQUI0MEVFMzFCRjY3N0UzMDBCQTgxQkUgLyogV0tNZW51SXRlbUlkZW50aWZpZXJz
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tNZW51SXRlbUlk
ZW50aWZpZXJzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUI0MEVFNDFCRjY3
N0UzMDBCQTgxQkUgLyogV0tNZW51SXRlbUlkZW50aWZpZXJzUHJpdmF0ZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXS01lbnVJdGVtSWRlbnRpZmllcnNQcml2YXRlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQjQ3NEQ3MTg0RDQzRkQwMDUxQjYyMiAvKiBX
S0J1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0zODg2LDYgKzM4ODcsMTEgQEAKIAkJOTM1RUVCOTcxMjc3NjE2RDAwMzMyMkI4IC8qIFdL
QnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5MzVFRUI5ODEyNzc2MTZEMDAzMzIyQjggLyogV0tCdW5kbGVCYWNr
Rm9yd2FyZExpc3RJdGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQnVu
ZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
MzczNUVCQTFDOTI5ODYzMDAzMzZGQTcgLyogV0tQcmV2aWV3QWN0aW9uSXRlbUludGVybmFsLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLUHJldmlld0FjdGlvbkl0ZW1JbnRl
cm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5Mzc2Mjc0MTIyRjExNUNEMDAz
NUJGODAgLyogU3RvcmFnZU1hbmFnZXJTZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU3RvcmFnZU1hbmFnZXJTZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk5Mzc2Mjc0MjIyRjExNUNEMDAzNUJGODAgLyogU3RvcmFnZU1hbmFnZXJTZXQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RvcmFnZU1hbmFnZXJTZXQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTM3NjI3NDMyMkYxMTVDRTAwMzVCRjgwIC8qIFN0
b3JhZ2VNYW5hZ2VyU2V0Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFN0b3Jh
Z2VNYW5hZ2VyU2V0Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5
Mzc5MTBEQjIyRjE2RkM5MDAzQkExNDQgLyogU3RvcmFnZU1hbmFnZXJTZXRNZXNzYWdlUmVjZWl2
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU3RvcmFnZU1hbmFn
ZXJTZXRNZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9T
dG9yYWdlTWFuYWdlclNldE1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9Q
Uk9EVUNUU19ESVI7IH07CisJCTkzNzkxMEREMjJGMTcxODEwMDNCQTE0NCAvKiBTdG9yYWdlTWFu
YWdlclNldE1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFN0b3Jh
Z2VNYW5hZ2VyU2V0TWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvU3Rv
cmFnZU1hbmFnZXJTZXRNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElS
OyB9OwogCQk5MzkxMDc0RTFCRjZCQzY1MDA4QzE3QUQgLyogV0tQcmV2aWV3RWxlbWVudEluZm9J
bnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1ByZXZpZXdFbGVt
ZW50SW5mb0ludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzOTFGMjgz
MTIxQjM4RjUwMEVCRjdFOCAvKiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM5MUYyODQxMjFCMzhGNTAwRUJGN0U4IC8qIFdl
YkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMzkxNCw3ICszOTIwLDYgQEAKIAkJOTNCMjYxNDgyMjdEMTQ3MTAwQjk3
QTc2IC8qIGlvcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IGZvbGRlcjsgcGF0aCA9IGlvczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNC
MjYxNDkyMjdEMTQ3MjAwQjk3QTc2IC8qIFN0b3JhZ2VNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFN0b3JhZ2VNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTkzQjI2MTRBMjI3RDE0NzIwMEI5N0E3NiAvKiBTdG9yYWdlTWFuYWdlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdG9yYWdlTWFuYWdlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTkzQjI2MTRCMjI3RDE0NzIwMEI5N0E3NiAv
KiBTdG9yYWdlTWFuYWdlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTdG9y
YWdlTWFuYWdlci5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNC
MjYxNEMyMjdEMTQ3MjAwQjk3QTc2IC8qIExvY2FsU3RvcmFnZURhdGFiYXNlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExvY2FsU3RvcmFnZURhdGFiYXNlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCQTA0REEyMTUxQURGMzAwN0Y0NTVGIC8q
IFdlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBXZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTkzQkEwNERCMjE1MUFERjMwMDdGNDU1RiAvKiBXZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03
MjkwLDcgKzcyOTUsOSBAQAogCQkJCTkzQjI2MTQ2MjI3RDE0NzEwMEI5N0E3NiAvKiBMb2NhbFN0
b3JhZ2VEYXRhYmFzZVRyYWNrZXIuaCAqLywKIAkJCQk5M0IyNjE0QTIyN0QxNDcyMDBCOTdBNzYg
LyogU3RvcmFnZU1hbmFnZXIuY3BwICovLAogCQkJCTkzQjI2MTQ5MjI3RDE0NzIwMEI5N0E3NiAv
KiBTdG9yYWdlTWFuYWdlci5oICovLAotCQkJCTkzQjI2MTRCMjI3RDE0NzIwMEI5N0E3NiAvKiBT
dG9yYWdlTWFuYWdlci5tZXNzYWdlcy5pbiAqLywKKwkJCQk5Mzc2Mjc0MTIyRjExNUNEMDAzNUJG
ODAgLyogU3RvcmFnZU1hbmFnZXJTZXQuY3BwICovLAorCQkJCTkzNzYyNzQyMjJGMTE1Q0QwMDM1
QkY4MCAvKiBTdG9yYWdlTWFuYWdlclNldC5oICovLAorCQkJCTkzNzYyNzQzMjJGMTE1Q0UwMDM1
QkY4MCAvKiBTdG9yYWdlTWFuYWdlclNldC5tZXNzYWdlcy5pbiAqLywKIAkJCSk7CiAJCQlwYXRo
ID0gV2ViU3RvcmFnZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC04NzQ5LDggKzg3
NTYsOCBAQAogCQkJCTJERTY5NDNDMThCRDJBNjgwMDVDMTVFNSAvKiBTbWFydE1hZ25pZmljYXRp
b25Db250cm9sbGVyTWVzc2FnZXMuaCAqLywKIAkJCQkxQTMzNERFQjE2REU4Rjg4MDA2QThFMzgg
LyogU3RvcmFnZUFyZWFNYXBNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTFBMzM0REVDMTZE
RThGODgwMDZBOEUzOCAvKiBTdG9yYWdlQXJlYU1hcE1lc3NhZ2VzLmggKi8sCi0JCQkJMUFCMzFB
OTQxNkJDNjg4MTAwRjZEQkM5IC8qIFN0b3JhZ2VNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAq
LywKLQkJCQkxQUIzMUE5NTE2QkM2ODgxMDBGNkRCQzkgLyogU3RvcmFnZU1hbmFnZXJNZXNzYWdl
cy5oICovLAorCQkJCTkzNzkxMERCMjJGMTZGQzkwMDNCQTE0NCAvKiBTdG9yYWdlTWFuYWdlclNl
dE1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJCQkJOTM3OTEwREQyMkYxNzE4MTAwM0JBMTQ0IC8q
IFN0b3JhZ2VNYW5hZ2VyU2V0TWVzc2FnZXMuaCAqLywKIAkJCQk1MTE4RTlBNTFGMjk1OTYzMDAz
RUY5RjUgLyogU3RvcmFnZVByb2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTUxMThF
OUE2MUYyOTU5NjMwMDNFRjlGNSAvKiBTdG9yYWdlUHJvY2Vzc01lc3NhZ2VzLmggKi8sCiAJCQkJ
NTExOEU5QTcxRjI5NTk2MzAwM0VGOUY1IC8qIFN0b3JhZ2VQcm9jZXNzUHJveHlNZXNzYWdlUmVj
ZWl2ZXIuY3BwICovLApAQCAtOTY1Nyw3ICs5NjY0LDggQEAKIAkJCQkxQUNFQ0QyNTE3MTYyREIx
MDAxRkM5RUYgLyogU3RvcmFnZUFyZWFNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMzM0REVF
MTZERThGODgwMDZBOEUzOCAvKiBTdG9yYWdlQXJlYU1hcE1lc3NhZ2VzLmggaW4gSGVhZGVycyAq
LywKIAkJCQk5M0IyNjE0RDIyN0QxNDlFMDBCOTdBNzYgLyogU3RvcmFnZU1hbmFnZXIuaCBpbiBI
ZWFkZXJzICovLAotCQkJCTFBQjMxQTk3MTZCQzY4ODEwMEY2REJDOSAvKiBTdG9yYWdlTWFuYWdl
ck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKKwkJCQk5Mzc2Mjc0NDIyRjExNUREMDAzNUJGODAg
LyogU3RvcmFnZU1hbmFnZXJTZXQuaCBpbiBIZWFkZXJzICovLAorCQkJCTkzNzkxMERFMjJGMTcx
QTkwMDNCQTE0NCAvKiBTdG9yYWdlTWFuYWdlclNldE1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQUUwMEQ2QzE4MzI3QzEyMDAwODdERDcgLyogU3RyaW5nUmVmZXJlbmNlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkyOTZCRDg1RDE1MDE5QkMzMDA3MUY0MjQgLyogU3RyaW5nVXRpbGl0aWVz
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0ZEMzE4NjIyQjM1MTZDMDA4RDBFOEIgLyogU3ViRnJh
bWVTT0F1dGhvcml6YXRpb25TZXNzaW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTExMTkwLDcgKzEx
MTk4LDcgQEAKIAkJCQkyRDkyQTc4NzIxMkI2QUIxMDBGNDkzRkQgLyogU2hhcmVhYmxlQml0bWFw
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJERTY5NDNEMThCRDJBNjgwMDVDMTVFNSAvKiBTbWFy
dE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTFBMzM0REVEMTZERThGODgwMDZBOEUzOCAvKiBTdG9yYWdlQXJlYU1hcE1lc3NhZ2VS
ZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkxQUIzMUE5NjE2QkM2ODgxMDBGNkRCQzkg
LyogU3RvcmFnZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
OTM3OTEwREMyMkYxNzEwMzAwM0JBMTQ0IC8qIFN0b3JhZ2VNYW5hZ2VyU2V0TWVzc2FnZVJlY2Vp
dmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTJBNzgzMjEyQjZBNzEwMEY0OTNGRCAvKiBT
dHJpbmdSZWZlcmVuY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQxMUI3NTEyMTI2QTI4MjAw
NkY4ODc4IC8qIFVuaWZpZWRTb3VyY2UxLW1tLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQxMUI3
NTIyMTI2QTI4MjAwNkY4ODc4IC8qIFVuaWZpZWRTb3VyY2UxLmNwcCBpbiBTb3VyY2VzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZS5jcHAKaW5kZXggMjBjZTU1OTExZDcwNjUxYzMzNWE3MGFjZjI0ZTViZGZj
MjFiZDYzMS4uNzE3OGE1Mjk0N2JlMDc4NDA0MWFhYTEyODgyMjFhMjhjMGI0NTJmOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGUuY3BwCkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2lu
Y2x1ZGUgIldlYlByb2Nlc3NQb29sTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJTdG9yYWdlTmFt
ZXNwYWNlUHJvdmlkZXIuaCIKICNpbmNsdWRlICJXZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaCIK
ICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0FQSUNhc3QuaD4KQEAgLTM1MSw2ICszNTIsOSBAQCB2b2lkIEluamVjdGVkQnVu
ZGxlOjpzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKFdlYlBhZ2VHcm91cFByb3h5KiBwYWdlR3Jv
dXAsIGJvbwogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuYWJsZVByaXZhdGVCcm93c2lu
Z0ZvclRlc3RpbmcoZW5hYmxlZCk7CiAKICAgICBQYWdlR3JvdXA6OnBhZ2VHcm91cChwYWdlR3Jv
dXAtPmlkZW50aWZpZXIoKSktPmVuYWJsZUxlZ2FjeVByaXZhdGVCcm93c2luZ0ZvclRlc3Rpbmco
ZW5hYmxlZCk7CisKKyAgICBhdXRvIHdlYlN0b3JhZ2VOYW1lU3BhY2VQcm92aWRlciA9IFdlYlN0
b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Z2V0T3JDcmVhdGUocGFnZUdyb3VwLT5wYWdlR3JvdXBJ
RCgpKTsKKyAgICB3ZWJTdG9yYWdlTmFtZVNwYWNlUHJvdmlkZXItPmVuYWJsZUxlZ2FjeVByaXZh
dGVCcm93c2luZ0ZvclRlc3RpbmcoZW5hYmxlZCk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGU6
OnNldFBvcHVwQmxvY2tpbmdFbmFibGVkKFdlYlBhZ2VHcm91cFByb3h5KiBwYWdlR3JvdXAsIGJv
b2wgZW5hYmxlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCBh
MmRhMTJjNjAyMjkzNzNjZjg3ODkyYjgzZGFhNTc3MzUwMGE3N2YyLi45N2E1ZWU4ZDdkZDVjN2Nl
YzgxN2UxYTA1Njk3MWNmNjgzOWFlOGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwCkBAIC02NzcsNyArNjc3LDYgQEAgdm9pZCBXZWJQcm9jZXNzOjpjcmVhdGVXZWJQ
YWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYKICAg
ICAvLyBJdCBpcyBuZWNlc3NhcnkgdG8gY2hlY2sgZm9yIHBhZ2UgZXhpc3RlbmNlIGhlcmUgc2lu
Y2UgZHVyaW5nIGEgd2luZG93Lm9wZW4oKSAob3IgdGFyZ2V0ZWQKICAgICAvLyBsaW5rKSB0aGUg
V2ViUGFnZSBnZXRzIGNyZWF0ZWQgYm90aCBpbiB0aGUgc3luY2hyb25vdXMgaGFuZGxlciBhbmQg
dGhyb3VnaCB0aGUgbm9ybWFsIHdheS4gCiAgICAgYXV0byByZXN1bHQgPSBtX3BhZ2VNYXAuYWRk
KHBhZ2VJRCwgbnVsbHB0cik7Ci0gICAgYXV0byBvbGRQYWdlSUQgPSBwYXJhbWV0ZXJzLm9sZFBh
Z2VJRCA/IHBhcmFtZXRlcnMub2xkUGFnZUlELnZhbHVlKCkgOiBwYWdlSUQ7CiAgICAgaWYgKHJl
c3VsdC5pc05ld0VudHJ5KSB7CiAgICAgICAgIEFTU0VSVCghcmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZSk7CiAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBXZWJQYWdlOjpjcmVhdGUocGFn
ZUlELCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKQEAgLTY4OCw4ICs2ODcsNiBAQCB2b2lkIFdlYlBy
b2Nlc3M6OmNyZWF0ZVdlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzJgogICAgIH0gZWxzZQogICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVl
LT5yZWluaXRpYWxpemVXZWJQYWdlKFdURk1vdmUocGFyYW1ldGVycykpOwogCi0gICAgZW5zdXJl
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpXZWJQYWdlV2FzQWRkZWQocmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZS0+c2Vzc2lvbklEKCksIHBhZ2VJRCwgb2xkUGFnZUlEKSwgMCk7Ci0KICAgICBB
U1NFUlQocmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSk7CiB9CiAKQEAgLTY5Nyw3ICs2OTQsNiBAQCB2
b2lkIFdlYlByb2Nlc3M6OnJlbW92ZVdlYlBhZ2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBQ
YWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgQVNTRVJUKG1fcGFnZU1hcC5jb250YWlucyhw
YWdlSUQpKTsKIAotICAgIGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rp
b24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6V2ViUGFn
ZVdhc1JlbW92ZWQoc2Vzc2lvbklELCBwYWdlSUQpLCAwKTsKICAgICBwYWdlV2lsbExlYXZlV2lu
ZG93KHBhZ2VJRCk7CiAgICAgbV9wYWdlTWFwLnJlbW92ZShwYWdlSUQpOwogCkBAIC0xMjQ2LDE2
ICsxMjQyLDYgQEAgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uJiBXZWJQcm9jZXNzOjplbnN1cmVO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKQogICAgICAgICAgICAgQ1JBU0goKTsKIAogICAgICAg
ICBtX25ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiA9IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6
Y3JlYXRlKGNvbm5lY3Rpb25JZGVudGlmaWVyKTsKLQotICAgICAgICAvLyBUbyByZWNvdmVyIHdl
YiBzdG9yYWdlLCBuZXR3b3JrIHByb2Nlc3MgbmVlZHMgdG8ga25vdyBhY3RpdmUgd2VicGFnZXMg
dG8gcHJlcGFyZSBzZXNzaW9uIHN0b3JhZ2UuCi0gICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4MDUxLgotICAgICAgICAvLyBXZWJwYWdl
IHNob3VsZCBiZSBhZGRlZCB3aGVuIFN0b3JhZ2UgaXMgdXNlZCwgbm90IHdoZW4gY29ubmVjdGlv
biBpcyByZS1lc3RhYmxpc2hlZC4KLSAgICAgICAgZm9yIChhdXRvJiBwYWdlIDogbV9wYWdlTWFw
KSB7Ci0gICAgICAgICAgICBpZiAoIXBhZ2UudmFsdWUpCi0gICAgICAgICAgICAgICAgY29udGlu
dWU7Ci0KLSAgICAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLT5jb25uZWN0aW9u
KCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OldlYlBhZ2VX
YXNBZGRlZChwYWdlLnZhbHVlLT5zZXNzaW9uSUQoKSwgcGFnZS5rZXksIHBhZ2Uua2V5KSwgMCk7
Ci0gICAgICAgIH0KICAgICB9CiAgICAgCiAgICAgcmV0dXJuICptX25ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbjsKQEAgLTE2NzQsOCArMTY2MCw4IEBAIHZvaWQgV2ViUHJvY2Vzczo6bm9uVmlzaWJs
ZVByb2Nlc3NDbGVhbnVwVGltZXJGaXJlZCgpCiAKIHZvaWQgV2ViUHJvY2Vzczo6cmVnaXN0ZXJT
dG9yYWdlQXJlYU1hcChTdG9yYWdlQXJlYU1hcCYgc3RvcmFnZUFyZWFNYXApCiB7Ci0gICAgQVNT
RVJUKCFtX3N0b3JhZ2VBcmVhTWFwcy5jb250YWlucyhzdG9yYWdlQXJlYU1hcC5pZGVudGlmaWVy
KCkpKTsKLSAgICBtX3N0b3JhZ2VBcmVhTWFwcy5zZXQoc3RvcmFnZUFyZWFNYXAuaWRlbnRpZmll
cigpLCAmc3RvcmFnZUFyZWFNYXApOworICAgIGlmICghbV9zdG9yYWdlQXJlYU1hcHMuY29udGFp
bnMoc3RvcmFnZUFyZWFNYXAuaWRlbnRpZmllcigpKSkKKyAgICAgICAgbV9zdG9yYWdlQXJlYU1h
cHMuc2V0KHN0b3JhZ2VBcmVhTWFwLmlkZW50aWZpZXIoKSwgJnN0b3JhZ2VBcmVhTWFwKTsKIH0K
IAogdm9pZCBXZWJQcm9jZXNzOjp1bnJlZ2lzdGVyU3RvcmFnZUFyZWFNYXAoU3RvcmFnZUFyZWFN
YXAmIHN0b3JhZ2VBcmVhTWFwKQpAQCAtMTY4Nyw3ICsxNjczLDYgQEAgdm9pZCBXZWJQcm9jZXNz
Ojp1bnJlZ2lzdGVyU3RvcmFnZUFyZWFNYXAoU3RvcmFnZUFyZWFNYXAmIHN0b3JhZ2VBcmVhTWFw
KQogCiBTdG9yYWdlQXJlYU1hcCogV2ViUHJvY2Vzczo6c3RvcmFnZUFyZWFNYXAodWludDY0X3Qg
aWRlbnRpZmllcikgY29uc3QKIHsKLSAgICBBU1NFUlQobV9zdG9yYWdlQXJlYU1hcHMuY29udGFp
bnMoaWRlbnRpZmllcikpOwogICAgIHJldHVybiBtX3N0b3JhZ2VBcmVhTWFwcy5nZXQoaWRlbnRp
Zmllcik7CiB9CiAKQEAgLTE2OTUsMTUgKzE2ODAsNiBAQCB2b2lkIFdlYlByb2Nlc3M6OmVuYWJs
ZVByaXZhdGVCcm93c2luZ0ZvclRlc3RpbmcoYm9vbCBlbmFibGUpCiB7CiAgICAgaWYgKGVuYWJs
ZSkKICAgICAgICAgZW5zdXJlTGVnYWN5UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbkluTmV0d29ya1By
b2Nlc3MoKTsKLQotICAgIFZlY3RvcjxQYWdlSWRlbnRpZmllcj4gcGFnZUlEczsKLSAgICBmb3Ig
KGF1dG8mIHBhZ2UgOiBtX3BhZ2VNYXApIHsKLSAgICAgICAgaWYgKHBhZ2UudmFsdWUpCi0gICAg
ICAgICAgICBwYWdlSURzLmFwcGVuZChwYWdlLmtleSk7Ci0gICAgfQotCi0gICAgaWYgKCFwYWdl
SURzLmlzRW1wdHkoKSkKLSAgICAgICAgZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCku
Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpXZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQoZW5hYmxlID8gUEFMOjpTZXNzaW9uSUQ6OmxlZ2Fj
eVByaXZhdGVTZXNzaW9uSUQoKSA6IFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCks
IHBhZ2VJRHMpLCAwKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzOjpzZXRSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRW5hYmxlZChib29sIGVuYWJsZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNwcAppbmRleCA3NDBjMGRiYzA3
Y2E3ZDU1ZTEzY2UyYjE5MDIzMzNjMGRlMGE2MjYzLi5mOTZlYmFhMzJiYmI3Y2ZlNmFmOGE0YWE2
MDRkNWJjODliZThlYjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
U3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHAKQEAgLTczLDExICs3Myw2IEBAIFN0cmlu
ZyBTdG9yYWdlQXJlYUltcGw6Oml0ZW0oY29uc3QgU3RyaW5nJiBrZXkpCiAgICAgcmV0dXJuIG1f
c3RvcmFnZUFyZWFNYXAtPml0ZW0oa2V5KTsKIH0KIAotYm9vbCBTdG9yYWdlQXJlYUltcGw6OnBy
ZXdhcm0oKQotewotICAgIHJldHVybiBtX3N0b3JhZ2VBcmVhTWFwLT5wcmV3YXJtKCk7Ci19Ci0K
IHZvaWQgU3RvcmFnZUFyZWFJbXBsOjpzZXRJdGVtKEZyYW1lKiBzb3VyY2VGcmFtZSwgY29uc3Qg
U3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wmIHF1b3RhRXhjZXB0aW9uKQog
ewogICAgIEFTU0VSVCghdmFsdWUuaXNOdWxsKCkpOwpAQCAtMTEyLDEyICsxMDcsMTIgQEAgc2l6
ZV90IFN0b3JhZ2VBcmVhSW1wbDo6bWVtb3J5Qnl0ZXNVc2VkQnlDYWNoZSgpCiAKIHZvaWQgU3Rv
cmFnZUFyZWFJbXBsOjppbmNyZW1lbnRBY2Nlc3NDb3VudCgpCiB7Ci0gICAgLy8gU3RvcmFnZSBh
Y2Nlc3MgaXMgaGFuZGxlZCBpbiB0aGUgVUkgcHJvY2Vzcywgc28gdGhlcmUncyBub3RoaW5nIHRv
IGRvIGhlcmUuCisgICAgLy8gU3RvcmFnZSBhY2Nlc3MgaXMgaGFuZGxlZCBpbiB0aGUgbmV0d29y
ayBwcm9jZXNzLCBzbyB0aGVyZSdzIG5vdGhpbmcgdG8gZG8gaGVyZS4KIH0KIAogdm9pZCBTdG9y
YWdlQXJlYUltcGw6OmRlY3JlbWVudEFjY2Vzc0NvdW50KCkKIHsKLSAgICAvLyBTdG9yYWdlIGFj
Y2VzcyBpcyBoYW5kbGVkIGluIHRoZSBVSSBwcm9jZXNzLCBzbyB0aGVyZSdzIG5vdGhpbmcgdG8g
ZG8gaGVyZS4KKyAgICAvLyBTdG9yYWdlIGFjY2VzcyBpcyBoYW5kbGVkIGluIHRoZSBuZXR3b3Jr
IHByb2Nlc3MsIHNvIHRoZXJlJ3Mgbm90aGluZyB0byBkbyBoZXJlLgogfQogCiB2b2lkIFN0b3Jh
Z2VBcmVhSW1wbDo6Y2xvc2VEYXRhYmFzZUlmSWRsZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oCmluZGV4IGI4ZjE2ZjJl
YWE1YTllYWMwNjY0NWIzOGU1ZjBmZjE0NGRkZDU4MjQuLjE2NWFmNDRkOTAxOGI5YjlkMTNmNzNm
Y2U4NDQ3MzkyY2QxODM0MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oCkBAIC02MSw3ICs2MSw2IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBkZWNyZW1lbnRBY2Nlc3NDb3VudCgpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xv
c2VEYXRhYmFzZUlmSWRsZSgpIG92ZXJyaWRlOwogICAgIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4oKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIHBy
ZXdhcm0oKSBmaW5hbDsKIAogICAgIHVpbnQ2NF90IG1fc3RvcmFnZUFyZWFJRDsKICAgICBSZWY8
U3RvcmFnZUFyZWFNYXA+IG1fc3RvcmFnZUFyZWFNYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAKaW5kZXggM2UwNTBk
ZjE3OGE0NDhiYzkzMmNhNGJhZWMxMDMxYTcyZjkzODBlNi4uODU0MTk4OGU3NmZiYThjYjE1ZTJh
ZjkxYmNjZTFlNDYzOGY0N2VhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcApAQCAtMjksNyArMjksNyBAQAogI2lu
Y2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVh
SW1wbC5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhTWFwTWVzc2FnZXMuaCIKLSNpbmNsdWRlICJT
dG9yYWdlTWFuYWdlck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiU3RvcmFnZU1hbmFnZXJTZXRNZXNz
YWdlcy5oIgogI2luY2x1ZGUgIlN0b3JhZ2VOYW1lc3BhY2VJbXBsLmgiCiAjaW5jbHVkZSAiV2Vi
UGFnZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VHcm91cFByb3h5LmgiCkBAIC00OCwxMiArNDgsNiBA
QAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotc3RhdGlj
IHVpbnQ2NF90IGdlbmVyYXRlU3RvcmFnZU1hcElEKCkKLXsKLSAgICBzdGF0aWMgdWludDY0X3Qg
c3RvcmFnZU1hcElEOwotICAgIHJldHVybiArK3N0b3JhZ2VNYXBJRDsKLX0KLQogUmVmPFN0b3Jh
Z2VBcmVhTWFwPiBTdG9yYWdlQXJlYU1hcDo6Y3JlYXRlKFN0b3JhZ2VOYW1lc3BhY2VJbXBsKiBz
dG9yYWdlTmFtZXNwYWNlLCBSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYgc2VjdXJpdHlP
cmlnaW4pCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmFnZUFyZWFNYXAoc3RvcmFn
ZU5hbWVzcGFjZSwgV1RGTW92ZShzZWN1cml0eU9yaWdpbikpKTsKQEAgLTYxLDI3ICs1NSwyMSBA
QCBSZWY8U3RvcmFnZUFyZWFNYXA+IFN0b3JhZ2VBcmVhTWFwOjpjcmVhdGUoU3RvcmFnZU5hbWVz
cGFjZUltcGwqIHN0b3JhZ2VOYW1lc3BhYwogCiBTdG9yYWdlQXJlYU1hcDo6U3RvcmFnZUFyZWFN
YXAoU3RvcmFnZU5hbWVzcGFjZUltcGwqIHN0b3JhZ2VOYW1lc3BhY2UsIFJlZjxXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbj4mJiBzZWN1cml0eU9yaWdpbikKICAgICA6IG1fc3RvcmFnZU5hbWVzcGFj
ZSgqc3RvcmFnZU5hbWVzcGFjZSkKLSAgICAsIG1fc3RvcmFnZU1hcElEKGdlbmVyYXRlU3RvcmFn
ZU1hcElEKCkpCisgICAgLCBtX3N0b3JhZ2VNYXBJRCgwKQogICAgICwgbV9zdG9yYWdlVHlwZShz
dG9yYWdlTmFtZXNwYWNlLT5zdG9yYWdlVHlwZSgpKQotICAgICwgbV9zdG9yYWdlTmFtZXNwYWNl
SUQoc3RvcmFnZU5hbWVzcGFjZS0+c3RvcmFnZU5hbWVzcGFjZUlEKCkpCiAgICAgLCBtX3F1b3Rh
SW5CeXRlcyhzdG9yYWdlTmFtZXNwYWNlLT5xdW90YUluQnl0ZXMoKSkKICAgICAsIG1fc2VjdXJp
dHlPcmlnaW4oV1RGTW92ZShzZWN1cml0eU9yaWdpbikpCiAgICAgLCBtX2N1cnJlbnRTZWVkKDAp
CiAgICAgLCBtX2hhc1BlbmRpbmdDbGVhcihmYWxzZSkKLSAgICAsIG1faGFzUGVuZGluZ0dldFZh
bHVlcyhmYWxzZSkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5yZWdpc3RlclN0b3Jh
Z2VBcmVhTWFwKCp0aGlzKTsKICAgICBjb25uZWN0KCk7CiB9CiAKIFN0b3JhZ2VBcmVhTWFwOjp+
U3RvcmFnZUFyZWFNYXAoKQogewotICAgIGlmIChtX3N0b3JhZ2VUeXBlICE9IFN0b3JhZ2VUeXBl
OjpFcGhlbWVyYWxMb2NhbCkKLSAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJl
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlN0
b3JhZ2VNYW5hZ2VyOjpEZXN0cm95U3RvcmFnZU1hcChtX3N0b3JhZ2VNYXBJRCksIDApOworICAg
IGRpc2Nvbm5lY3QoKTsKIAogICAgIG1fc3RvcmFnZU5hbWVzcGFjZS0+ZGlkRGVzdHJveVN0b3Jh
Z2VBcmVhTWFwKCp0aGlzKTsKLQotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnVucmVnaXN0
ZXJTdG9yYWdlQXJlYU1hcCgqdGhpcyk7CiB9CiAKIHVuc2lnbmVkIFN0b3JhZ2VBcmVhTWFwOjps
ZW5ndGgoKQpAQCAtMTIyLDcgKzExMCw3IEBAIHZvaWQgU3RvcmFnZUFyZWFNYXA6OnNldEl0ZW0o
RnJhbWUqIHNvdXJjZUZyYW1lLCBTdG9yYWdlQXJlYUltcGwqIHNvdXJjZUFyZWEsIGNvCiAKICAg
ICBtX3BlbmRpbmdWYWx1ZUNoYW5nZXMuYWRkKGtleSk7CiAKLSAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2Vu
ZChNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXI6OlNldEl0ZW0obV9zZWN1cml0eU9yaWdpbi0+ZGF0
YSgpLCBtX3N0b3JhZ2VNYXBJRCwgc291cmNlQXJlYS0+c3RvcmFnZUFyZWFJRCgpLCBtX2N1cnJl
bnRTZWVkLCBrZXksIHZhbHVlLCBzb3VyY2VGcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkpLCAwKTsK
KyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXJTZXQ6OlNldEl0
ZW0obV9zdG9yYWdlTWFwSUQsIHNvdXJjZUFyZWEtPnN0b3JhZ2VBcmVhSUQoKSwgbV9jdXJyZW50
U2VlZCwga2V5LCB2YWx1ZSwgc291cmNlRnJhbWUtPmRvY3VtZW50KCktPnVybCgpKSwgMCk7CiB9
CiAKIHZvaWQgU3RvcmFnZUFyZWFNYXA6OnJlbW92ZUl0ZW0oV2ViQ29yZTo6RnJhbWUqIHNvdXJj
ZUZyYW1lLCBTdG9yYWdlQXJlYUltcGwqIHNvdXJjZUFyZWEsIGNvbnN0IFN0cmluZyYga2V5KQpA
QCAtMTM4LDE2ICsxMjYsMTggQEAgdm9pZCBTdG9yYWdlQXJlYU1hcDo6cmVtb3ZlSXRlbShXZWJD
b3JlOjpGcmFtZSogc291cmNlRnJhbWUsIFN0b3JhZ2VBcmVhSW1wbCogc28KIAogICAgIG1fcGVu
ZGluZ1ZhbHVlQ2hhbmdlcy5hZGQoa2V5KTsKIAotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3Nh
Z2VzOjpTdG9yYWdlTWFuYWdlcjo6UmVtb3ZlSXRlbShtX3NlY3VyaXR5T3JpZ2luLT5kYXRhKCks
IG1fc3RvcmFnZU1hcElELCBzb3VyY2VBcmVhLT5zdG9yYWdlQXJlYUlEKCksIG1fY3VycmVudFNl
ZWQsIGtleSwgc291cmNlRnJhbWUtPmRvY3VtZW50KCktPnVybCgpKSwgMCk7CisgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVj
dGlvbigpLnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpSZW1vdmVJdGVtKG1fc3Rv
cmFnZU1hcElELCBzb3VyY2VBcmVhLT5zdG9yYWdlQXJlYUlEKCksIG1fY3VycmVudFNlZWQsIGtl
eSwgc291cmNlRnJhbWUtPmRvY3VtZW50KCktPnVybCgpKSwgMCk7CiB9CiAKIHZvaWQgU3RvcmFn
ZUFyZWFNYXA6OmNsZWFyKFdlYkNvcmU6OkZyYW1lKiBzb3VyY2VGcmFtZSwgU3RvcmFnZUFyZWFJ
bXBsKiBzb3VyY2VBcmVhKQogeworICAgIGNvbm5lY3QoKTsKKwogICAgIHJlc2V0VmFsdWVzKCk7
CiAKICAgICBtX2hhc1BlbmRpbmdDbGVhciA9IHRydWU7CiAgICAgbV9zdG9yYWdlTWFwID0gU3Rv
cmFnZU1hcDo6Y3JlYXRlKG1fcXVvdGFJbkJ5dGVzKTsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChN
ZXNzYWdlczo6U3RvcmFnZU1hbmFnZXI6OkNsZWFyKG1fc2VjdXJpdHlPcmlnaW4tPmRhdGEoKSwg
bV9zdG9yYWdlTWFwSUQsIHNvdXJjZUFyZWEtPnN0b3JhZ2VBcmVhSUQoKSwgbV9jdXJyZW50U2Vl
ZCwgc291cmNlRnJhbWUtPmRvY3VtZW50KCktPnVybCgpKSwgMCk7CisgICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigp
LnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpDbGVhcihtX3N0b3JhZ2VNYXBJRCwg
c291cmNlQXJlYS0+c3RvcmFnZUFyZWFJRCgpLCBtX2N1cnJlbnRTZWVkLCBzb3VyY2VGcmFtZS0+
ZG9jdW1lbnQoKS0+dXJsKCkpLCAwKTsKIH0KIAogYm9vbCBTdG9yYWdlQXJlYU1hcDo6Y29udGFp
bnMoY29uc3QgU3RyaW5nJiBrZXkpCkBAIC0xNjMsNyArMTUzLDYgQEAgdm9pZCBTdG9yYWdlQXJl
YU1hcDo6cmVzZXRWYWx1ZXMoKQogCiAgICAgbV9wZW5kaW5nVmFsdWVDaGFuZ2VzLmNsZWFyKCk7
CiAgICAgbV9oYXNQZW5kaW5nQ2xlYXIgPSBmYWxzZTsKLSAgICBtX2hhc1BlbmRpbmdHZXRWYWx1
ZXMgPSBmYWxzZTsKICAgICBtX2N1cnJlbnRTZWVkKys7CiB9CiAKQEAgLTE3OCwzMyArMTY3LDEw
IEBAIHZvaWQgU3RvcmFnZUFyZWFNYXA6OmxvYWRWYWx1ZXNJZk5lZWRlZCgpCiAgICAgLy8gRklY
TUU6IFRoaXMgc2hvdWxkIHVzZSBhIHNwZWNpYWwgc2VuZFN5bmMgZmxhZyB0byBpbmRpY2F0ZSB0
aGF0IHdlIGRvbid0IHdhbnQgdG8gcHJvY2VzcyBpbmNvbWluZyBtZXNzYWdlcyB3aGlsZSB3YWl0
aW5nIGZvciBhIHJlcGx5LgogICAgIC8vIChUaGlzIGZsYWcgZG9lcyBub3QgeWV0IGV4aXN0KS4g
U2luY2UgbG9hZFZhbHVlc0lmTmVlZGVkKCkgZW5kcyB1cCBiZWluZyBjYWxsZWQgZnJvbSB3aXRo
aW4gSmF2YVNjcmlwdCBjb2RlLCBwcm9jZXNzaW5nIGluY29taW5nIHN5bmNocm9ub3VzIG1lc3Nh
Z2VzCiAgICAgLy8gY291bGQgbGVhZCB0byB3ZWlyZCByZWVudHJlbmN5IGJ1Z3Mgb3RoZXJ3aXNl
LgotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXI6Okdl
dFZhbHVlcyhtX3N0b3JhZ2VNYXBJRCwgbV9jdXJyZW50U2VlZCksIE1lc3NhZ2VzOjpTdG9yYWdl
TWFuYWdlcjo6R2V0VmFsdWVzOjpSZXBseSh2YWx1ZXMpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCku
c2VuZFN5bmMoTWVzc2FnZXM6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpHZXRWYWx1ZXMobV9zdG9yYWdl
TWFwSUQpLCBNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXJTZXQ6OkdldFZhbHVlczo6UmVwbHkodmFs
dWVzKSwgMCk7CiAKICAgICBtX3N0b3JhZ2VNYXAgPSBTdG9yYWdlTWFwOjpjcmVhdGUobV9xdW90
YUluQnl0ZXMpOwogICAgIG1fc3RvcmFnZU1hcC0+aW1wb3J0SXRlbXMoV1RGTW92ZSh2YWx1ZXMp
KTsKLQotICAgIC8vIFdlIHdhbnQgdG8gaWdub3JlIGFsbCBjaGFuZ2VzIHVudGlsIHdlIGdldCB0
aGUgRGlkR2V0VmFsdWVzIG1lc3NhZ2UuCi0gICAgbV9oYXNQZW5kaW5nR2V0VmFsdWVzID0gdHJ1
ZTsKLX0KLQotYm9vbCBTdG9yYWdlQXJlYU1hcDo6cHJld2FybSgpCi17Ci0gICAgaWYgKG1fZGlk
UHJld2FybSB8fCBtX3N0b3JhZ2VNYXApCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBtX2Rp
ZFByZXdhcm0gPSB0cnVlOwotCi0gICAgY29ubmVjdCgpOwotICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5k
KE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdlcjo6UHJld2FybShtX3N0b3JhZ2VNYXBJRCksIDApOwot
ICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIFN0b3JhZ2VBcmVhTWFwOjpkaWRHZXRWYWx1ZXMo
dWludDY0X3Qgc3RvcmFnZU1hcFNlZWQpCi17Ci0gICAgaWYgKG1fY3VycmVudFNlZWQgIT0gc3Rv
cmFnZU1hcFNlZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIEFTU0VSVChtX2hhc1BlbmRpbmdH
ZXRWYWx1ZXMpOwotICAgIG1faGFzUGVuZGluZ0dldFZhbHVlcyA9IGZhbHNlOwogfQogCiB2b2lk
IFN0b3JhZ2VBcmVhTWFwOjpkaWRTZXRJdGVtKHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkLCBjb25z
dCBTdHJpbmcmIGtleSwgYm9vbCBxdW90YUVycm9yKQpAQCAtMjQwLDYgKzIwNiwxMSBAQCB2b2lk
IFN0b3JhZ2VBcmVhTWFwOjpkaWRDbGVhcih1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCkKICAgICBt
X2hhc1BlbmRpbmdDbGVhciA9IGZhbHNlOwogfQogCit2b2lkIFN0b3JhZ2VBcmVhTWFwOjpjbGVh
ckNhY2hlKCkKK3sKKyAgICByZXNldFZhbHVlcygpOworfQorCiBib29sIFN0b3JhZ2VBcmVhTWFw
OjpzaG91bGRBcHBseUNoYW5nZUZvcktleShjb25zdCBTdHJpbmcmIGtleSkgY29uc3QKIHsKICAg
ICAvLyBXZSBoYXZlIG5vdCB5ZXQgbG9hZGVkIGFueXRoaW5nIGZyb20gdGhpcyBzdG9yYWdlIG1h
cC4KQEAgLTI1OSw4ICsyMzAsOCBAQCB2b2lkIFN0b3JhZ2VBcmVhTWFwOjphcHBseUNoYW5nZShj
b25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSkKIHsKICAgICBBU1NFUlQo
IW1fc3RvcmFnZU1hcCB8fCBtX3N0b3JhZ2VNYXAtPmhhc09uZVJlZigpKTsKIAotICAgIC8vIFRo
ZXJlJ3MgYSBjbGVhciBwZW5kaW5nIG9yIGdldFZhbHVlcyBwZW5kaW5nIHdlIGRvbid0IHdhbnQg
dG8gYXBwbHkgYW55IGNoYW5nZXMgdW50aWwgd2UgZ2V0IHRoZSBjb3JyZXNwb25kaW5nIERpZENs
ZWFyL0RpZEdldFZhbHVlcyBtZXNzYWdlcy4KLSAgICBpZiAobV9oYXNQZW5kaW5nQ2xlYXIgfHwg
bV9oYXNQZW5kaW5nR2V0VmFsdWVzKQorICAgIC8vIFRoZXJlJ3MgYSBjbGVhciBwZW5kaW5nIG9y
IGdldFZhbHVlcyBwZW5kaW5nIHdlIGRvbid0IHdhbnQgdG8gYXBwbHkgYW55IGNoYW5nZXMgdW50
aWwgd2UgZ2V0IHRoZSBjb3JyZXNwb25kaW5nIERpZENsZWFyIG1lc3NhZ2VzLgorICAgIGlmICht
X2hhc1BlbmRpbmdDbGVhcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFrZXkpIHsKQEAg
LTMwNSwyMiArMjc2LDE3IEBAIHZvaWQgU3RvcmFnZUFyZWFNYXA6OmRpc3BhdGNoU3RvcmFnZUV2
ZW50KHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIGNvbnN0IFN0CiAgICAgICAgIGFwcGx5
Q2hhbmdlKGtleSwgbmV3VmFsdWUpOwogICAgIH0KIAotICAgIGlmIChzdG9yYWdlVHlwZSgpID09
IFN0b3JhZ2VUeXBlOjpTZXNzaW9uIHx8IHN0b3JhZ2VUeXBlKCkgPT0gU3RvcmFnZVR5cGU6OkVw
aGVtZXJhbExvY2FsKQorICAgIGlmIChzdG9yYWdlVHlwZSgpID09IFN0b3JhZ2VUeXBlOjpTZXNz
aW9uKQogICAgICAgICBkaXNwYXRjaFNlc3Npb25TdG9yYWdlRXZlbnQoc291cmNlU3RvcmFnZUFy
ZWFJRCwga2V5LCBvbGRWYWx1ZSwgbmV3VmFsdWUsIHVybFN0cmluZyk7CiAgICAgZWxzZQogICAg
ICAgICBkaXNwYXRjaExvY2FsU3RvcmFnZUV2ZW50KHNvdXJjZVN0b3JhZ2VBcmVhSUQsIGtleSwg
b2xkVmFsdWUsIG5ld1ZhbHVlLCB1cmxTdHJpbmcpOwogfQogCi12b2lkIFN0b3JhZ2VBcmVhTWFw
OjpjbGVhckNhY2hlKCkKLXsKLSAgICByZXNldFZhbHVlcygpOwotfQotCiB2b2lkIFN0b3JhZ2VB
cmVhTWFwOjpkaXNwYXRjaFNlc3Npb25TdG9yYWdlRXZlbnQodWludDY0X3Qgc291cmNlU3RvcmFn
ZUFyZWFJRCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0
IFN0cmluZyYgbmV3VmFsdWUsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQogewotICAgIC8vIE5h
bWVzcGFjZSBJRHMgZm9yIHNlc3Npb24gc3RvcmFnZSBuYW1lc3BhY2VzIGFuZCBlcGhlbWVyYWwg
bG9jYWwgc3RvcmFnZSBuYW1lc3BhY2VzIGFyZSBlcXVpdmFsZW50IHRvIHdlYiBwYWdlIElEcwor
ICAgIC8vIE5hbWVzcGFjZSBJRHMgZm9yIHNlc3Npb24gc3RvcmFnZSBuYW1lc3BhY2VzIGFyZSBl
cXVpdmFsZW50IHRvIHdlYiBwYWdlIElEcwogICAgIC8vIHNvIHdlIGNhbiBnZXQgdGhlIHJpZ2h0
IHBhZ2UgaGVyZS4KLSAgICBXZWJQYWdlKiB3ZWJQYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkud2ViUGFnZShtYWtlT2JqZWN0SWRlbnRpZmllcjxQYWdlSWRlbnRpZmllclR5cGU+KG1fc3Rv
cmFnZU5hbWVzcGFjZUlEKSk7CisgICAgV2ViUGFnZSogd2ViUGFnZSA9IFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLndlYlBhZ2UobWFrZU9iamVjdElkZW50aWZpZXI8UGFnZUlkZW50aWZpZXJUeXBl
PihtX3N0b3JhZ2VOYW1lc3BhY2UtPnN0b3JhZ2VOYW1lc3BhY2VJRCgpKSk7CiAgICAgaWYgKCF3
ZWJQYWdlKQogICAgICAgICByZXR1cm47CiAKQEAgLTM1NCw3ICszMjAsOCBAQCB2b2lkIFN0b3Jh
Z2VBcmVhTWFwOjpkaXNwYXRjaExvY2FsU3RvcmFnZUV2ZW50KHVpbnQ2NF90IHNvdXJjZVN0b3Jh
Z2VBcmVhSUQsIGNvbgogCiAgICAgVmVjdG9yPFJlZlB0cjxGcmFtZT4+IGZyYW1lczsKIAotICAg
IFBhZ2VHcm91cCYgcGFnZUdyb3VwID0gKldlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2VH
cm91cChtX3N0b3JhZ2VOYW1lc3BhY2VJRCktPmNvcmVQYWdlR3JvdXAoKTsKKyAgICAvLyBOYW1l
c3BhY2UgSURzIGZvciBsb2NhbCBzdG9yYWdlIG5hbWVzcGFjZXMgYXJlIGVxdWl2YWxlbnQgdG8g
d2ViIHBhZ2UgZ3JvdXAgSURzLgorICAgIFBhZ2VHcm91cCYgcGFnZUdyb3VwID0gKldlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLndlYlBhZ2VHcm91cChtX3N0b3JhZ2VOYW1lc3BhY2UtPnN0b3JhZ2VO
YW1lc3BhY2VJRCgpKS0+Y29yZVBhZ2VHcm91cCgpOwogICAgIGNvbnN0IEhhc2hTZXQ8UGFnZSo+
JiBwYWdlcyA9IHBhZ2VHcm91cC5wYWdlcygpOwogICAgIGZvciAoSGFzaFNldDxQYWdlKj46OmNv
bnN0X2l0ZXJhdG9yIGl0ID0gcGFnZXMuYmVnaW4oKSwgZW5kID0gcGFnZXMuZW5kKCk7IGl0ICE9
IGVuZDsgKytpdCkgewogICAgICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICYoKml0KS0+bWFpbkZy
YW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKQEAg
LTM4MSwzNSArMzQ4LDM3IEBAIHZvaWQgU3RvcmFnZUFyZWFNYXA6OmRpc3BhdGNoTG9jYWxTdG9y
YWdlRXZlbnQodWludDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwgY29uCiAKIHZvaWQgU3RvcmFn
ZUFyZWFNYXA6OmNvbm5lY3QoKQogewotICAgIGlmICghbV9pc0Rpc2Nvbm5lY3RlZCkKKyAgICBp
ZiAobV9zdG9yYWdlTWFwSUQpCiAgICAgICAgIHJldHVybjsKIAogICAgIHN3aXRjaCAobV9zdG9y
YWdlVHlwZSkgewogICAgIGNhc2UgU3RvcmFnZVR5cGU6OkxvY2FsOgotICAgIGNhc2UgU3RvcmFn
ZVR5cGU6OkVwaGVtZXJhbExvY2FsOgogICAgIGNhc2UgU3RvcmFnZVR5cGU6OlRyYW5zaWVudExv
Y2FsOgogICAgICAgICBpZiAoU2VjdXJpdHlPcmlnaW4qIHRvcExldmVsT3JpZ2luID0gbV9zdG9y
YWdlTmFtZXNwYWNlLT50b3BMZXZlbE9yaWdpbigpKQotICAgICAgICAgICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigp
LnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VNYW5hZ2VyOjpDcmVhdGVUcmFuc2llbnRMb2NhbFN0b3Jh
Z2VNYXAobV9zdG9yYWdlTWFwSUQsIG1fc3RvcmFnZU5hbWVzcGFjZS0+c3RvcmFnZU5hbWVzcGFj
ZUlEKCksIHRvcExldmVsT3JpZ2luLT5kYXRhKCksIG1fc2VjdXJpdHlPcmlnaW4tPmRhdGEoKSks
IDApOworICAgICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpTdG9yYWdl
TWFuYWdlclNldDo6Q29ubmVjdFRvVHJhbnNpZW50TG9jYWxTdG9yYWdlQXJlYShtX3N0b3JhZ2VO
YW1lc3BhY2UtPnNlc3Npb25JRCgpLCBtX3N0b3JhZ2VOYW1lc3BhY2UtPnN0b3JhZ2VOYW1lc3Bh
Y2VJRCgpLCB0b3BMZXZlbE9yaWdpbi0+ZGF0YSgpLCBtX3NlY3VyaXR5T3JpZ2luLT5kYXRhKCkp
LCBNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXJTZXQ6OkNvbm5lY3RUb1RyYW5zaWVudExvY2FsU3Rv
cmFnZUFyZWE6OlJlcGx5KG1fc3RvcmFnZU1hcElEKSwgMCk7CiAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdlcjo6Q3JlYXRl
TG9jYWxTdG9yYWdlTWFwKG1fc3RvcmFnZU1hcElELCBtX3N0b3JhZ2VOYW1lc3BhY2UtPnN0b3Jh
Z2VOYW1lc3BhY2VJRCgpLCBtX3NlY3VyaXR5T3JpZ2luLT5kYXRhKCkpLCAwKTsKKyAgICAgICAg
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXJTZXQ6OkNv
bm5lY3RUb0xvY2FsU3RvcmFnZUFyZWEobV9zdG9yYWdlTmFtZXNwYWNlLT5zZXNzaW9uSUQoKSwg
bV9zdG9yYWdlTmFtZXNwYWNlLT5zdG9yYWdlTmFtZXNwYWNlSUQoKSwgbV9zZWN1cml0eU9yaWdp
bi0+ZGF0YSgpKSwgTWVzc2FnZXM6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpDb25uZWN0VG9Mb2NhbFN0
b3JhZ2VBcmVhOjpSZXBseShtX3N0b3JhZ2VNYXBJRCksIDApOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIFN0b3JhZ2VUeXBlOjpTZXNzaW9uOgotICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChN
ZXNzYWdlczo6U3RvcmFnZU1hbmFnZXI6OkNyZWF0ZVNlc3Npb25TdG9yYWdlTWFwKG1fc3RvcmFn
ZU1hcElELCBtX3N0b3JhZ2VOYW1lc3BhY2UtPnN0b3JhZ2VOYW1lc3BhY2VJRCgpLCBtX3NlY3Vy
aXR5T3JpZ2luLT5kYXRhKCkpLCAwKTsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
ZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1l
c3NhZ2VzOjpTdG9yYWdlTWFuYWdlclNldDo6Q29ubmVjdFRvU2Vzc2lvblN0b3JhZ2VBcmVhKG1f
c3RvcmFnZU5hbWVzcGFjZS0+c2Vzc2lvbklEKCksIG1fc3RvcmFnZU5hbWVzcGFjZS0+c3RvcmFn
ZU5hbWVzcGFjZUlEKCksIG1fc2VjdXJpdHlPcmlnaW4tPmRhdGEoKSksIE1lc3NhZ2VzOjpTdG9y
YWdlTWFuYWdlclNldDo6Q29ubmVjdFRvU2Vzc2lvblN0b3JhZ2VBcmVhOjpSZXBseShtX3N0b3Jh
Z2VNYXBJRCksIDApOwogICAgIH0KIAotICAgIGlmIChtX3N0b3JhZ2VNYXApCi0gICAgICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNv
bm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdlcjo6U2V0SXRlbXMobV9zdG9y
YWdlTWFwSUQsIG1fc3RvcmFnZU1hcC0+aXRlbXMoKSksIDApOwotICAgIG1faXNEaXNjb25uZWN0
ZWQgPSBmYWxzZTsKKyAgICBpZiAobV9zdG9yYWdlTWFwSUQpCisgICAgICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnJlZ2lzdGVyU3RvcmFnZUFyZWFNYXAoKnRoaXMpOwogfQogCiB2b2lkIFN0
b3JhZ2VBcmVhTWFwOjpkaXNjb25uZWN0KCkKIHsKLSAgICBtX2lzRGlzY29ubmVjdGVkID0gdHJ1
ZTsKLSAgICBpZiAobV9zdG9yYWdlVHlwZSA9PSBTdG9yYWdlVHlwZTo6U2Vzc2lvbiAmJiBtX3N0
b3JhZ2VNYXApIHsKLSAgICAgICAgbV9wZW5kaW5nVmFsdWVDaGFuZ2VzLmNsZWFyKCk7Ci0gICAg
ICAgIG1faGFzUGVuZGluZ0NsZWFyID0gZmFsc2U7Ci0gICAgfSBlbHNlCi0gICAgICAgIHJlc2V0
VmFsdWVzKCk7CisgICAgaWYgKCFtX3N0b3JhZ2VNYXBJRCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgcmVzZXRWYWx1ZXMoKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS51bnJlZ2lzdGVy
U3RvcmFnZUFyZWFNYXAoKnRoaXMpOworCisgICAgaWYgKGF1dG8gbmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZXhpc3RpbmdOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24oKSkKKyAgICAgICAgbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLT5jb25uZWN0aW9u
KCkuc2VuZChNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXJTZXQ6OkRpc2Nvbm5lY3RGcm9tU3RvcmFn
ZUFyZWEobV9zdG9yYWdlTWFwSUQpLCAwKTsKKworICAgIG1fc3RvcmFnZU1hcElEID0gMDsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuaAppbmRleCBmYjkxYmM5MDU0MjVmYzgxYzZh
NDgzNTI3NGFiY2MwYzE3ZGE0OWM2Li5kZjE4ZWRiMWI2MWMwOGQ1MWRmODNjOTlmYWVmMzY2ZDA4
YTNlMDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9T
dG9yYWdlQXJlYU1hcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdl
L1N0b3JhZ2VBcmVhTWFwLmgKQEAgLTU3LDcgKzU3LDYgQEAgcHVibGljOgogICAgIHZvaWQgcmVt
b3ZlSXRlbShXZWJDb3JlOjpGcmFtZSogc291cmNlRnJhbWUsIFN0b3JhZ2VBcmVhSW1wbCogc291
cmNlQXJlYSwgY29uc3QgU3RyaW5nJiBrZXkpOwogICAgIHZvaWQgY2xlYXIoV2ViQ29yZTo6RnJh
bWUqIHNvdXJjZUZyYW1lLCBTdG9yYWdlQXJlYUltcGwqIHNvdXJjZUFyZWEpOwogICAgIGJvb2wg
Y29udGFpbnMoY29uc3QgU3RyaW5nJiBrZXkpOwotICAgIGJvb2wgcHJld2FybSgpOwogCiAgICAg
Ly8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwpAQCAtNzEsNyArNzAsNiBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIFN0b3JhZ2VBcmVhTWFwKFN0b3JhZ2VOYW1lc3BhY2VJbXBs
KiwgUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmKTsKIAotICAgIHZvaWQgZGlkR2V0VmFs
dWVzKHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkKTsKICAgICB2b2lkIGRpZFNldEl0ZW0odWludDY0
X3Qgc3RvcmFnZU1hcFNlZWQsIGNvbnN0IFN0cmluZyYga2V5LCBib29sIHF1b3RhRXJyb3IpOwog
ICAgIHZvaWQgZGlkUmVtb3ZlSXRlbSh1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCwgY29uc3QgU3Ry
aW5nJiBrZXkpOwogICAgIHZvaWQgZGlkQ2xlYXIodWludDY0X3Qgc3RvcmFnZU1hcFNlZWQpOwpA
QCAtOTMsNyArOTEsNiBAQCBwcml2YXRlOgogICAgIHVpbnQ2NF90IG1fc3RvcmFnZU1hcElEOwog
CiAgICAgV2ViQ29yZTo6U3RvcmFnZVR5cGUgbV9zdG9yYWdlVHlwZTsKLSAgICB1aW50NjRfdCBt
X3N0b3JhZ2VOYW1lc3BhY2VJRDsKICAgICB1bnNpZ25lZCBtX3F1b3RhSW5CeXRlczsKICAgICBS
ZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+IG1fc2VjdXJpdHlPcmlnaW47CiAKQEAgLTEwMSwx
MSArOTgsNyBAQCBwcml2YXRlOgogCiAgICAgdWludDY0X3QgbV9jdXJyZW50U2VlZDsKICAgICBi
b29sIG1faGFzUGVuZGluZ0NsZWFyOwotICAgIGJvb2wgbV9oYXNQZW5kaW5nR2V0VmFsdWVzOwog
ICAgIEhhc2hDb3VudGVkU2V0PFN0cmluZz4gbV9wZW5kaW5nVmFsdWVDaGFuZ2VzOwotCi0gICAg
Ym9vbCBtX2lzRGlzY29ubmVjdGVkIHsgdHJ1ZSB9OwotICAgIGJvb2wgbV9kaWRQcmV3YXJtIHsg
ZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5tZXNz
YWdlcy5pbgppbmRleCBiMTU5MDRmMTZiZWMxNDJiMTBiNDgwMGQxMDY0NTAwOTMzODMwMGQ1Li43
YTc1ZDIxMGZkODMyNWYyYjUxYTg5Y2UzZTU0MmQ0ODAzOTA5NmE5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1h
cC5tZXNzYWdlcy5pbgpAQCAtMjEsNyArMjEsNiBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBtZXNzYWdl
cyAtPiBTdG9yYWdlQXJlYU1hcCB7Ci0gICAgRGlkR2V0VmFsdWVzKHVpbnQ2NF90IHN0b3JhZ2VN
YXBTZWVkKQogICAgIERpZFNldEl0ZW0odWludDY0X3Qgc3RvcmFnZU1hcFNlZWQsIFN0cmluZyBr
ZXksIGJvb2wgcXVvdGFFeGNlcHRpb24pCiAgICAgRGlkUmVtb3ZlSXRlbSh1aW50NjRfdCBzdG9y
YWdlTWFwU2VlZCwgU3RyaW5nIGtleSkKICAgICBEaWRDbGVhcih1aW50NjRfdCBzdG9yYWdlTWFw
U2VlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0
b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcAppbmRleCBmNTljNzliN2ZhMmJlMmZjOWE3MjA1
MmMxYjllNTNjYjZhMzIzZmQwLi5mMGRiYTQ2YzQ5YWE0YmZkYjNlYjFmZjk3YWZkMTI2MzFjMDRl
NTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9y
YWdlTmFtZXNwYWNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0
b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNs
dWRlICJTdG9yYWdlQXJlYUltcGwuaCIKICNpbmNsdWRlICJTdG9yYWdlQXJlYU1hcC5oIgorI2lu
Y2x1ZGUgIlN0b3JhZ2VNYW5hZ2VyU2V0TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgi
CiAjaW5jbHVkZSAiV2ViUGFnZUdyb3VwUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgi
CkBAIC00MCwzMSArNDEsMjcgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKLVJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUlt
cGw6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVu
c2lnbmVkIHF1b3RhSW5CeXRlcykKK1JlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5h
bWVzcGFjZUltcGw6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50
aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcywgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQog
ewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0b3JhZ2VU
eXBlOjpTZXNzaW9uLCBpZGVudGlmaWVyLCBudWxscHRyLCBxdW90YUluQnl0ZXMpKTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChTdG9yYWdlVHlwZTo6U2Vz
c2lvbiwgaWRlbnRpZmllciwgbnVsbHB0ciwgcXVvdGFJbkJ5dGVzLCBzZXNzaW9uSUQpKTsKIH0K
IAotUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRl
RXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2ln
bmVkIHF1b3RhSW5CeXRlcykKK1JlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVz
cGFjZUltcGw6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVy
LCB1bnNpZ25lZCBxdW90YUluQnl0ZXMsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKLSAg
ICByZXR1cm4gY3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKGlkZW50aWZpZXIsIHF1b3RhSW5C
eXRlcywgSXNFcGhlbWVyYWw6Olllcyk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmFn
ZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5cGU6OkxvY2FsLCBpZGVudGlmaWVyLCBudWxscHRyLCBx
dW90YUluQnl0ZXMsIHNlc3Npb25JRCkpOwogfQogCi1SZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+
IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0
X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzLCBJc0VwaGVtZXJhbCBpc0VwaGVt
ZXJhbCkKK1JlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNy
ZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgdG9wTGV2ZWxPcmlnaW4sIHVpbnQ2NF90IHF1b3RhSW5C
eXRlcywgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogewotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKGlzRXBoZW1lcmFsID09IElzRXBoZW1lcmFsOjpZZXMg
PyBTdG9yYWdlVHlwZTo6RXBoZW1lcmFsTG9jYWwgOiBTdG9yYWdlVHlwZTo6TG9jYWwsIGlkZW50
aWZpZXIsIG51bGxwdHIsIHF1b3RhSW5CeXRlcykpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0b3JhZ2VUeXBlOjpUcmFuc2llbnRMb2NhbCwgaWRlbnRp
ZmllciwgJnRvcExldmVsT3JpZ2luLCBxdW90YUluQnl0ZXMsIHNlc3Npb25JRCkpOwogfQogCi1S
ZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVUcmFu
c2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW4mIHRvcExldmVsT3JpZ2luLCB1aW50NjRfdCBxdW90YUluQnl0ZXMpCi17
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5
cGU6OlRyYW5zaWVudExvY2FsLCBpZGVudGlmaWVyLCAmdG9wTGV2ZWxPcmlnaW4sIHF1b3RhSW5C
eXRlcykpOwotfQotCi1TdG9yYWdlTmFtZXNwYWNlSW1wbDo6U3RvcmFnZU5hbWVzcGFjZUltcGwo
V2ViQ29yZTo6U3RvcmFnZVR5cGUgc3RvcmFnZVR5cGUsIHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3Bh
Y2VJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qIHRvcExldmVsT3JpZ2luLCB1bnNpZ25lZCBx
dW90YUluQnl0ZXMpCitTdG9yYWdlTmFtZXNwYWNlSW1wbDo6U3RvcmFnZU5hbWVzcGFjZUltcGwo
V2ViQ29yZTo6U3RvcmFnZVR5cGUgc3RvcmFnZVR5cGUsIHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3Bh
Y2VJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qIHRvcExldmVsT3JpZ2luLCB1bnNpZ25lZCBx
dW90YUluQnl0ZXMsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKICAgICA6IG1fc3RvcmFnZVR5
cGUoc3RvcmFnZVR5cGUpCiAgICAgLCBtX3N0b3JhZ2VOYW1lc3BhY2VJRChzdG9yYWdlTmFtZXNw
YWNlSUQpCiAgICAgLCBtX3RvcExldmVsT3JpZ2luKHRvcExldmVsT3JpZ2luKQogICAgICwgbV9x
dW90YUluQnl0ZXMocXVvdGFJbkJ5dGVzKQorICAgICwgbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQog
ewogfQogCkBAIC05NCwxNCArOTEsMTkgQEAgUmVmPFN0b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNw
YWNlSW1wbDo6c3RvcmFnZUFyZWEoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWMKIFJlZjxT
dG9yYWdlTmFtZXNwYWNlPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y29weShQYWdlKiBuZXdQYWdl
KQogewogICAgIEFTU0VSVChtX3N0b3JhZ2VOYW1lc3BhY2VJRCk7CisgICAgQVNTRVJUKG1fc3Rv
cmFnZVR5cGUgPT0gU3RvcmFnZVR5cGU6OlNlc3Npb24pOwogCi0gICAgaWYgKG1fc3RvcmFnZVR5
cGUgPT0gU3RvcmFnZVR5cGU6OlNlc3Npb24pCi0gICAgICAgIHJldHVybiBjcmVhdGVTZXNzaW9u
U3RvcmFnZU5hbWVzcGFjZShXZWJQYWdlOjpmcm9tQ29yZVBhZ2UobmV3UGFnZSktPnBhZ2VJRCgp
LnRvVUludDY0KCksIG1fcXVvdGFJbkJ5dGVzKTsKLQotICAgIEFTU0VSVChtX3N0b3JhZ2VUeXBl
ID09IFN0b3JhZ2VUeXBlOjpFcGhlbWVyYWxMb2NhbCk7Ci0gICAgYXV0byBuZXdOYW1lc3BhY2Ug
PSBhZG9wdFJlZigqbmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKG1fc3RvcmFnZVR5cGUsIG1fc3Rv
cmFnZU5hbWVzcGFjZUlELCBtX3RvcExldmVsT3JpZ2luLmdldCgpLCBtX3F1b3RhSW5CeXRlcykp
OworICAgIGlmIChhdXRvIG5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLmV4aXN0aW5nTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkpCisgICAgICAgIG5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlN0b3Jh
Z2VNYW5hZ2VyU2V0OjpDbG9uZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKG5ld1BhZ2UtPnNlc3Np
b25JRCgpLCBtX3N0b3JhZ2VOYW1lc3BhY2VJRCwgV2ViUGFnZTo6ZnJvbUNvcmVQYWdlKG5ld1Bh
Z2UpLT5wYWdlSUQoKS50b1VJbnQ2NCgpKSwgMCk7CisgICAgCisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwobV9zdG9yYWdlVHlwZSwgV2ViUGFnZTo6ZnJvbUNv
cmVQYWdlKG5ld1BhZ2UpLT5wYWdlSUQoKS50b1VJbnQ2NCgpLCBtX3RvcExldmVsT3JpZ2luLmdl
dCgpLCBtX3F1b3RhSW5CeXRlcywgbmV3UGFnZS0+c2Vzc2lvbklEKCkpKTsKK30KIAotICAgIHJl
dHVybiBuZXdOYW1lc3BhY2U7Cit2b2lkIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpzZXRTZXNzaW9u
SURGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKK3sKKyAgICBtX3Nlc3Npb25J
RCA9IHNlc3Npb25JRDsKKyAgICBmb3IgKGF1dG8qIHN0b3JhZ2VBcmVhTWFwIDogbV9zdG9yYWdl
QXJlYU1hcHMudmFsdWVzKCkpCisgICAgICAgIHN0b3JhZ2VBcmVhTWFwLT5kaXNjb25uZWN0KCk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmgKaW5kZXggZWE2
ZDU1MThjZGZjOTlkYzNhMDFkODU3ZTM2NjM2NTBmOWI2NjZhMi4uOTM4NWU2MWVkNDQyYjc2ZDBh
OTVhYzhmM2UyNjM0NWIzZWYwNzJmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oCkBAIC0zOSwxMiAr
MzksMTAgQEAgY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgU3RvcmFnZU5hbWVzcGFjZUltcGwgOiBw
dWJsaWMgV2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodWlu
dDY0X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKLSAgICBzdGF0aWMgUmVm
PFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2UodWludDY0X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKKyAgICBzdGF0
aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFj
ZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMsIFBBTDo6U2Vzc2lv
bklEKTsKIAotICAgIGVudW0gY2xhc3MgSXNFcGhlbWVyYWwgOiBib29sIHsgTm8sIFllcyB9Owot
ICAgIHN0YXRpYyBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZUxvY2FsU3RvcmFnZU5h
bWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMsIElzRXBo
ZW1lcmFsIGlzRXBoZW1lcmFsKTsKLSAgICBzdGF0aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBs
PiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmll
ciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHRvcExldmVsT3JpZ2luLCB1aW50NjRfdCBxdW90
YUluQnl0ZXMpOworICAgIHN0YXRpYyBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZUxv
Y2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUlu
Qnl0ZXMsIFBBTDo6U2Vzc2lvbklEKTsKKyAgICBzdGF0aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJ
bXBsPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRp
ZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHRvcExldmVsT3JpZ2luLCB1aW50NjRfdCBx
dW90YUluQnl0ZXMsIFBBTDo6U2Vzc2lvbklEKTsKIAogICAgIHZpcnR1YWwgflN0b3JhZ2VOYW1l
c3BhY2VJbXBsKCk7CiAKQEAgLTU1LDggKzUzLDExIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGlk
RGVzdHJveVN0b3JhZ2VBcmVhTWFwKFN0b3JhZ2VBcmVhTWFwJik7CiAKKyAgICBQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3Nlc3Npb25JRDsgfQor
ICAgIHZvaWQgc2V0U2Vzc2lvbklERm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCkgb3ZlcnJpZGU7
CisKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgU3RvcmFnZU5hbWVzcGFjZUltcGwoV2ViQ29yZTo6
U3RvcmFnZVR5cGUsIHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW4qIHRvcExldmVsT3JpZ2luLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpOworICAgIGV4
cGxpY2l0IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFdlYkNvcmU6OlN0b3JhZ2VUeXBlLCB1aW50NjRf
dCBzdG9yYWdlTmFtZXNwYWNlSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiB0b3BMZXZlbE9y
aWdpbiwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzLCBQQUw6OlNlc3Npb25JRCk7CiAKICAgICBSZWY8
V2ViQ29yZTo6U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYpIG92ZXJyaWRlOwogICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNl
PiBjb3B5KFdlYkNvcmU6OlBhZ2UqKSBvdmVycmlkZTsKQEAgLTcwLDYgKzcxLDggQEAgcHJpdmF0
ZToKICAgICBjb25zdCB1bnNpZ25lZCBtX3F1b3RhSW5CeXRlczsKIAogICAgIEhhc2hNYXA8V2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhLCBTdG9yYWdlQXJlYU1hcCo+IG1fc3RvcmFnZUFyZWFN
YXBzOworCisgICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9y
YWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCmluZGV4IDg4
YTkzYzVkNTA0MmExMjYzNDExYzY4NGJlZGJkNTA2ZTM0YjVhMGUuLjllNzIxNjMxYjNiNGJkNzJl
YzAzM2U3OWJhZTBkMzc1MjU0YmFjMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyLmNwcApAQCAtNjcsMjIgKzY3LDE3IEBAIFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6
fldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcigpCiAKIFJlZjxXZWJDb3JlOjpTdG9yYWdlTmFt
ZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdl
TmFtZXNwYWNlKFBhZ2UmIHBhZ2UsIHVuc2lnbmVkIHF1b3RhKQogewotICAgIHJldHVybiBTdG9y
YWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoV2ViUGFnZTo6
ZnJvbUNvcmVQYWdlKCZwYWdlKS0+cGFnZUlEKCkudG9VSW50NjQoKSwgcXVvdGEpOworICAgIHJl
dHVybiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2Uo
V2ViUGFnZTo6ZnJvbUNvcmVQYWdlKCZwYWdlKS0+cGFnZUlEKCkudG9VSW50NjQoKSwgcXVvdGEs
IHBhZ2Uuc2Vzc2lvbklEKCkpOwogfQogCi1SZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4g
V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VO
YW1lc3BhY2UoUGFnZSYgcGFnZSwgdW5zaWduZWQgcXVvdGEpCitSZWY8V2ViQ29yZTo6U3RvcmFn
ZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsK
LSAgICByZXR1cm4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3Rv
cmFnZU5hbWVzcGFjZShXZWJQYWdlOjpmcm9tQ29yZVBhZ2UoJnBhZ2UpLT5wYWdlSUQoKS50b1VJ
bnQ2NCgpLCBxdW90YSk7CisgICAgcmV0dXJuIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVM
b2NhbFN0b3JhZ2VOYW1lc3BhY2UobV9pZGVudGlmaWVyLCBxdW90YSwgc2Vzc2lvbklEKTsKIH0K
IAotUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92
aWRlcjo6Y3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkIHF1b3RhKQorUmVmPFdl
YkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3Jl
YXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
JiB0b3BMZXZlbE9yaWdpbiwgdW5zaWduZWQgcXVvdGEsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCkKIHsKLSAgICByZXR1cm4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZUxvY2FsU3RvcmFn
ZU5hbWVzcGFjZShtX2lkZW50aWZpZXIsIHF1b3RhLCBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6SXNF
cGhlbWVyYWw6Ok5vKTsKLX0KLQotUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0
b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNw
YWNlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiB0b3BMZXZlbE9yaWdpbiwgdW5zaWduZWQgcXVv
dGEpCi17Ci0gICAgcmV0dXJuIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVUcmFuc2llbnRM
b2NhbFN0b3JhZ2VOYW1lc3BhY2UobV9pZGVudGlmaWVyLCB0b3BMZXZlbE9yaWdpbiwgcXVvdGEp
OworICAgIHJldHVybiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlVHJhbnNpZW50TG9jYWxT
dG9yYWdlTmFtZXNwYWNlKG1faWRlbnRpZmllciwgdG9wTGV2ZWxPcmlnaW4sIHF1b3RhLCBzZXNz
aW9uSUQpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
U3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oCmluZGV4IDNj
ZTZkYjlmMDY4ZTgwMzg5NjgxMTRlZjk5YWMyNWFjZTA0MTFmMzQuLjIyZTQyZjUyMGRhY2EzZGY2
OWM1YTg2MDU2NmZmNGE3NzAxZGY2YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
ci5oCkBAIC0zOCw5ICszOCw4IEBAIHByaXZhdGU6CiAgICAgZXhwbGljaXQgV2ViU3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyKHVpbnQ2NF90IGlkZW50aWZpZXIpOwogCiAgICAgUmVmPFdlYkNvcmU6
OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6
OlBhZ2UmLCB1bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7Ci0gICAgUmVmPFdlYkNvcmU6OlN0b3Jh
Z2VOYW1lc3BhY2U+IGNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShXZWJDb3Jl
OjpQYWdlJiwgdW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOwotICAgIFJlZjxXZWJDb3JlOjpTdG9y
YWdlTmFtZXNwYWNlPiBjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEp
IG92ZXJyaWRlOwotICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVUcmFu
c2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCB1bnNp
Z25lZCBxdW90YSkgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+
IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSwgUEFMOjpTZXNzaW9u
SUQpIG92ZXJyaWRlOworICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVU
cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCB1
bnNpZ25lZCBxdW90YSwgUEFMOjpTZXNzaW9uSUQpIG92ZXJyaWRlOwogCiAgICAgY29uc3QgdWlu
dDY0X3QgbV9pZGVudGlmaWVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
U3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdl
L1N0b3JhZ2VBcmVhSW1wbC5jcHAKaW5kZXggN2RhNWM3MmU1OGVmNzNkMTk2ZDE2NzMwNzc1YTM3
YmFhNTQ3NGNhZC4uNDJjYzRkYmQwMzllYzczNTkyYzQ3NjBmY2FlMWJiOGQ2ODNkYzk5NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHAKQEAg
LTI5Miw0ICsyOTIsMjIgQEAgdm9pZCBTdG9yYWdlQXJlYUltcGw6OmRpc3BhdGNoU3RvcmFnZUV2
ZW50KGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFYKICAgICAgICAgU3RvcmFn
ZUV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50cyhrZXksIG9sZFZh
bHVlLCBuZXdWYWx1ZSwgbV9zZWN1cml0eU9yaWdpbiwgc291cmNlRnJhbWUpOwogfQogCit2b2lk
IFN0b3JhZ2VBcmVhSW1wbDo6c2Vzc2lvbkNoYW5nZWQoYm9vbCBpc05ld1Nlc3Npb25QZXJzaXN0
ZW50KQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICB1bnNpZ25lZCBxdW90
YSA9IG1fc3RvcmFnZU1hcC0+cXVvdGEoKTsKKyAgICBtX3N0b3JhZ2VNYXAgPSBTdG9yYWdlTWFw
OjpjcmVhdGUocXVvdGEpOworCisgICAgaWYgKGlzTmV3U2Vzc2lvblBlcnNpc3RlbnQgJiYgIW1f
c3RvcmFnZUFyZWFTeW5jICYmIG1fc3RvcmFnZVN5bmNNYW5hZ2VyKSB7CisgICAgICAgIG1fc3Rv
cmFnZUFyZWFTeW5jID0gU3RvcmFnZUFyZWFTeW5jOjpjcmVhdGUobV9zdG9yYWdlU3luY01hbmFn
ZXIuZ2V0KCksICp0aGlzLCBtX3NlY3VyaXR5T3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigpKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghaXNOZXdTZXNzaW9uUGVyc2lzdGVu
dCAmJiBtX3N0b3JhZ2VBcmVhU3luYykgeworICAgICAgICBtX3N0b3JhZ2VBcmVhU3luYy0+c2No
ZWR1bGVGaW5hbFN5bmMoKTsKKyAgICAgICAgbV9zdG9yYWdlQXJlYVN5bmMgPSBudWxscHRyOwor
ICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9TdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oCmluZGV4IDU4ZmNiYTAzNTAwNGJhNjNjYzg4OGE4
ZGIyOTEwMDE5YmM4ZTdkOTEuLjcyNmU1ZDVmYmYxZjI5MDMzNDM1YjE2ZTUxYTIwOWM3ODE2Y2Zi
MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlQXJlYUlt
cGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmgK
QEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU3RvcmFnZUFyZWEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Rp
bWVyLmg+CisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKQEAgLTc0LDYgKzc1LDggQEAgcHVibGljOgogCiAg
ICAgdm9pZCBzeW5jKCk7CiAKKyAgICB2b2lkIHNlc3Npb25DaGFuZ2VkKGJvb2wgaXNOZXdTZXNz
aW9uUGVyc2lzdGVudCk7CisKIHByaXZhdGU6CiAgICAgU3RvcmFnZUFyZWFJbXBsKFdlYkNvcmU6
OlN0b3JhZ2VUeXBlLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBSZWZQdHI8
V2ViQ29yZTo6U3RvcmFnZVN5bmNNYW5hZ2VyPiYmLCB1bnNpZ25lZCBxdW90YSk7CiAgICAgZXhw
bGljaXQgU3RvcmFnZUFyZWFJbXBsKGNvbnN0IFN0b3JhZ2VBcmVhSW1wbCYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNwcAppbmRleCBjZTVjMjli
YWE1ODA1Y2E0MmY0OGVmMDUwYjgzMmQwY2Q1Y2NlMTFjLi5lMTcyZmJkYzdiNDQxMTdhOGQ4MmQ4
M2Y4YzM3YzAzMTU5NDNlNzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3Jh
Z2UvU3RvcmFnZUFyZWFTeW5jLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2Uv
U3RvcmFnZUFyZWFTeW5jLmNwcApAQCAtMTA4LDYgKzEwOCwxMSBAQCB2b2lkIFN0b3JhZ2VBcmVh
U3luYzo6c2NoZWR1bGVGaW5hbFN5bmMoKQogICAgIG1fc3luY01hbmFnZXItPmRpc3BhdGNoKFtw
cm90ZWN0b3JdIHsKICAgICAgICAgcHJvdGVjdG9yLT5kZWxldGVFbXB0eURhdGFiYXNlKCk7CiAg
ICAgfSk7CisKKyAgICAvLyBNYWtlIHN1cmUgU3RvcmFnZUFyZWFTeW5jIGlzIGRlc3RydWN0ZWQg
b24gbWFpbiB0aHJlYWQuCisgICAgbV9zeW5jTWFuYWdlci0+ZGlzcGF0Y2goW3Byb3RlY3Rvcl0g
eworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0b3IgPSBwcm90ZWN0b3IuY29weVJl
ZigpXSB7IH0pOworICAgIH0pOwogfQogCiB2b2lkIFN0b3JhZ2VBcmVhU3luYzo6c2NoZWR1bGVJ
dGVtRm9yU3luYyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3Bw
CmluZGV4IDRhOTRhMWQ4NWNlY2ExZTNjNjNiYzcyYTg2YWIwNmFmMGUxODZkNWQuLjczN2Y1YzA5
NzIxZDJiYmRiYzg2NTc2MWM5ZDExOGM4MWRmNjEzNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcApAQCAtNDUsMTcgKzQ1
LDEyIEBAIHN0YXRpYyBIYXNoTWFwPFN0cmluZywgU3RvcmFnZU5hbWVzcGFjZUltcGwqPiYgbG9j
YWxTdG9yYWdlTmFtZXNwYWNlTWFwKCkKICAgICByZXR1cm4gbG9jYWxTdG9yYWdlTmFtZXNwYWNl
TWFwOwogfQogCi1SZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBs
OjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSkKK1JlZjxTdG9y
YWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVNlc3Npb25TdG9y
YWdlTmFtZXNwYWNlKHVuc2lnbmVkIHF1b3RhLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5
cGU6OlNlc3Npb24sIFN0cmluZygpLCBxdW90YSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0b3JhZ2VUeXBlOjpTZXNzaW9uLCBTdHJpbmcoKSwgcXVv
dGEsIHNlc3Npb25JRCkpOwogfQogCi1SZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VO
YW1lc3BhY2VJbXBsOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWdu
ZWQgcXVvdGEpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFjZUlt
cGwoU3RvcmFnZVR5cGU6OkVwaGVtZXJhbExvY2FsLCBTdHJpbmcoKSwgcXVvdGEpKTsKLX0KLQot
UmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Z2V0T3JDcmVh
dGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoY29uc3QgU3RyaW5nJiBkYXRhYmFzZVBhdGgsIHVuc2ln
bmVkIHF1b3RhKQorUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1w
bDo6Z2V0T3JDcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoY29uc3QgU3RyaW5nJiBkYXRhYmFz
ZVBhdGgsIHVuc2lnbmVkIHF1b3RhLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7CiAgICAg
QVNTRVJUKCFkYXRhYmFzZVBhdGguaXNOdWxsKCkpOwogCkBAIC02MywxOCArNTgsMTkgQEAgUmVm
PFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Z2V0T3JDcmVhdGVM
b2NhbFN0b3JhZ2VOYW1lc3BhY2UKICAgICBpZiAoc2xvdCkKICAgICAgICAgcmV0dXJuICpzbG90
OwogCi0gICAgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBzdG9yYWdlTmFtZXNwYWNlID0gYWRv
cHRSZWYoKm5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChTdG9yYWdlVHlwZTo6TG9jYWwsIGRhdGFi
YXNlUGF0aCwgcXVvdGEpKTsKKyAgICBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IHN0b3JhZ2VO
YW1lc3BhY2UgPSBhZG9wdFJlZigqbmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0b3JhZ2VUeXBl
OjpMb2NhbCwgZGF0YWJhc2VQYXRoLCBxdW90YSwgc2Vzc2lvbklEKSk7CiAgICAgc2xvdCA9IHN0
b3JhZ2VOYW1lc3BhY2UucHRyKCk7CiAKICAgICByZXR1cm4gc3RvcmFnZU5hbWVzcGFjZTsKIH0K
IAotU3RvcmFnZU5hbWVzcGFjZUltcGw6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0b3JhZ2VUeXBl
IHN0b3JhZ2VUeXBlLCBjb25zdCBTdHJpbmcmIHBhdGgsIHVuc2lnbmVkIHF1b3RhKQorU3RvcmFn
ZU5hbWVzcGFjZUltcGw6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0b3JhZ2VUeXBlIHN0b3JhZ2VU
eXBlLCBjb25zdCBTdHJpbmcmIHBhdGgsIHVuc2lnbmVkIHF1b3RhLCBQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQpCiAgICAgOiBtX3N0b3JhZ2VUeXBlKHN0b3JhZ2VUeXBlKQogICAgICwgbV9wYXRo
KHBhdGguaXNvbGF0ZWRDb3B5KCkpCiAgICAgLCBtX3N5bmNNYW5hZ2VyKDApCiAgICAgLCBtX3F1
b3RhKHF1b3RhKQogICAgICwgbV9pc1NodXRkb3duKGZhbHNlKQorICAgICwgbV9zZXNzaW9uSUQo
c2Vzc2lvbklEKQogewogICAgIGlmIChpc1BlcnNpc3RlbnRMb2NhbFN0b3JhZ2UobV9zdG9yYWdl
VHlwZSkgJiYgIW1fcGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIG1fc3luY01hbmFnZXIgPSBTdG9y
YWdlU3luY01hbmFnZXI6OmNyZWF0ZShtX3BhdGgpOwpAQCAtOTcsOSArOTMsOSBAQCBSZWY8U3Rv
cmFnZU5hbWVzcGFjZT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNvcHkoUGFnZSopCiB7CiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQoIW1faXNTaHV0ZG93bik7Ci0gICAg
QVNTRVJUKG1fc3RvcmFnZVR5cGUgPT0gU3RvcmFnZVR5cGU6OlNlc3Npb24gfHwgbV9zdG9yYWdl
VHlwZSA9PSBTdG9yYWdlVHlwZTo6RXBoZW1lcmFsTG9jYWwpOworICAgIEFTU0VSVChtX3N0b3Jh
Z2VUeXBlID09IFN0b3JhZ2VUeXBlOjpTZXNzaW9uKTsKIAotICAgIGF1dG8gbmV3TmFtZXNwYWNl
ID0gYWRvcHRSZWYoKm5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChtX3N0b3JhZ2VUeXBlLCBtX3Bh
dGgsIG1fcXVvdGEpKTsKKyAgICBhdXRvIG5ld05hbWVzcGFjZSA9IGFkb3B0UmVmKCpuZXcgU3Rv
cmFnZU5hbWVzcGFjZUltcGwobV9zdG9yYWdlVHlwZSwgbV9wYXRoLCBtX3F1b3RhLCBtX3Nlc3Np
b25JRCkpOwogICAgIGZvciAoYXV0byYgaXRlciA6IG1fc3RvcmFnZUFyZWFNYXApCiAgICAgICAg
IG5ld05hbWVzcGFjZS0+bV9zdG9yYWdlQXJlYU1hcC5zZXQoaXRlci5rZXksIGl0ZXIudmFsdWUt
PmNvcHkoKSk7CiAKQEAgLTEyNyw3ICsxMjMsNyBAQCB2b2lkIFN0b3JhZ2VOYW1lc3BhY2VJbXBs
OjpjbG9zZSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIElmIHdlJ3JlIG5vdCBhIHBlcnNp
c3RlbnQgc3RvcmFnZSwgd2Ugc2hvdWxkbid0IG5lZWQgdG8gZG8gYW55IHdvcmsgaGVyZS4KLSAg
ICBpZiAobV9zdG9yYWdlVHlwZSA9PSBTdG9yYWdlVHlwZTo6U2Vzc2lvbiB8fCBtX3N0b3JhZ2VU
eXBlID09IFN0b3JhZ2VUeXBlOjpFcGhlbWVyYWxMb2NhbCkgeworICAgIGlmIChtX3N0b3JhZ2VU
eXBlID09IFN0b3JhZ2VUeXBlOjpTZXNzaW9uKSB7CiAgICAgICAgIEFTU0VSVCghbV9zeW5jTWFu
YWdlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xNzYsNCArMTcyLDExIEBAIHZvaWQg
U3RvcmFnZU5hbWVzcGFjZUltcGw6OmNsb3NlSWRsZUxvY2FsU3RvcmFnZURhdGFiYXNlcygpCiAg
ICAgICAgIGl0LT52YWx1ZS0+Y2xvc2VEYXRhYmFzZUlmSWRsZSgpOwogfQogCit2b2lkIFN0b3Jh
Z2VOYW1lc3BhY2VJbXBsOjpzZXRTZXNzaW9uSURGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCkKK3sKKyAgICBtX3Nlc3Npb25JRCA9IHNlc3Npb25JRDsKKyAgICBmb3IgKGF1dG8g
c3RvcmFnZUFyZWFNYXAgOiBtX3N0b3JhZ2VBcmVhTWFwLnZhbHVlcygpKQorICAgICAgICBzdG9y
YWdlQXJlYU1hcC0+c2Vzc2lvbkNoYW5nZWQoIXNlc3Npb25JRC5pc0VwaGVtZXJhbCgpKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0
b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaAppbmRleCBjODhmMDYxZWY1ZTUwYzliMTYzNWVj
M2Y4ZDZiYTBlZDc3MDVjYWE3Li4xMjAzMjUyZDg0NjlkOGIzMGVhMDQwMDc1ZDk2ZjcxNTdmZmVl
Y2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZU5hbWVz
cGFjZUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZU5hbWVz
cGFjZUltcGwuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlP
cmlnaW5EYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TdG9yYWdlQXJlYS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU3RvcmFnZU5hbWVzcGFjZS5oPgorI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4K
ICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTM4LDkgKzM5LDggQEAgY2xhc3MgU3RvcmFn
ZUFyZWFJbXBsOwogCiBjbGFzcyBTdG9yYWdlTmFtZXNwYWNlSW1wbCA6IHB1YmxpYyBXZWJDb3Jl
OjpTdG9yYWdlTmFtZXNwYWNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFN0b3JhZ2VOYW1l
c3BhY2VJbXBsPiBjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSk7
Ci0gICAgc3RhdGljIFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRlRXBoZW1lcmFsTG9j
YWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkIHF1b3RhKTsKLSAgICBzdGF0aWMgUmVmPFN0b3Jh
Z2VOYW1lc3BhY2VJbXBsPiBnZXRPckNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZShjb25zdCBT
dHJpbmcmIGRhdGFiYXNlUGF0aCwgdW5zaWduZWQgcXVvdGEpOworICAgIHN0YXRpYyBSZWY8U3Rv
cmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVk
IHF1b3RhLCBQQUw6OlNlc3Npb25JRCk7CisgICAgc3RhdGljIFJlZjxTdG9yYWdlTmFtZXNwYWNl
SW1wbD4gZ2V0T3JDcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoY29uc3QgU3RyaW5nJiBkYXRh
YmFzZVBhdGgsIHVuc2lnbmVkIHF1b3RhLCBQQUw6OlNlc3Npb25JRCk7CiAgICAgdmlydHVhbCB+
U3RvcmFnZU5hbWVzcGFjZUltcGwoKTsKIAogICAgIHZvaWQgY2xvc2UoKTsKQEAgLTU0LDggKzU0
LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHN5bmMoKTsKICAgICB2b2lkIGNsb3NlSWRsZUxvY2Fs
U3RvcmFnZURhdGFiYXNlcygpOwogCisgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KKyAgICB2b2lkIHNldFNlc3Npb25J
REZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQpIG92ZXJyaWRlOworCiBwcml2YXRlOgotICAgIFN0
b3JhZ2VOYW1lc3BhY2VJbXBsKFdlYkNvcmU6OlN0b3JhZ2VUeXBlLCBjb25zdCBTdHJpbmcmIHBh
dGgsIHVuc2lnbmVkIHF1b3RhKTsKKyAgICBTdG9yYWdlTmFtZXNwYWNlSW1wbChXZWJDb3JlOjpT
dG9yYWdlVHlwZSwgY29uc3QgU3RyaW5nJiBwYXRoLCB1bnNpZ25lZCBxdW90YSwgUEFMOjpTZXNz
aW9uSUQpOwogCiAgICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYShjb25z
dCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmKSBvdmVycmlkZTsKICAgICBSZWY8U3RvcmFn
ZU5hbWVzcGFjZT4gY29weShXZWJDb3JlOjpQYWdlKiBuZXdQYWdlKSBvdmVycmlkZTsKQEAgLTcz
LDYgKzc2LDggQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX3F1b3RhOwogCiAgICAgYm9vbCBt
X2lzU2h1dGRvd247CisKKyAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3Rv
cmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9TdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKaW5kZXggODM2MjA1N2Zm
ZDc0ZjZkMmRhMWFhNDdkNzc4MDA0OTFjOWRhMTFkYy4uZDA5NDY5MTI1ZmMyZjQ4NjY1OGE3M2E2
Yjk1MGIyNDM0YjA3MDc5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdl
L1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9TdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKQEAgLTI2LDYgKzI2LDcg
QEAKICNpbmNsdWRlICJXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaCIKIAogI2luY2x1ZGUg
IlN0b3JhZ2VOYW1lc3BhY2VJbXBsLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CiAjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpA
QCAtOTYsMjYgKzk3LDIxIEBAIHZvaWQgV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpzeW5j
TG9jYWxTdG9yYWdlKCkKICAgICB9CiB9CiAKLVJlZjxTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFBhZ2Um
LCB1bnNpZ25lZCBxdW90YSkKK1JlZjxTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNw
YWNlUHJvdmlkZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFBhZ2UmIHBhZ2UsIHVu
c2lnbmVkIHF1b3RhKQogewotICAgIHJldHVybiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRl
U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UocXVvdGEpOworICAgIHJldHVybiBTdG9yYWdlTmFtZXNw
YWNlSW1wbDo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UocXVvdGEsIHBhZ2Uuc2Vzc2lv
bklEKCkpOwogfQogCi1SZWY8U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVBy
b3ZpZGVyOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoUGFnZSYsIHVuc2ln
bmVkIHF1b3RhKQorUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92
aWRlcjo6Y3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkIHF1b3RhLCBQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQpCiB7Ci0gICAgcmV0dXJuIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpj
cmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UocXVvdGEpOworICAgIHJldHVybiBT
dG9yYWdlTmFtZXNwYWNlSW1wbDo6Z2V0T3JDcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UobV9s
b2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgsIHF1b3RhLCBzZXNzaW9uSUQpOwogfQogCi1SZWY8U3Rv
cmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEpCi17Ci0gICAgcmV0dXJuIFN0b3JhZ2VOYW1l
c3BhY2VJbXBsOjpnZXRPckNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZShtX2xvY2FsU3RvcmFn
ZURhdGFiYXNlUGF0aCwgcXVvdGEpOwotfQotCi1SZWY8U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3Rv
cmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2UoU2VjdXJpdHlPcmlnaW4mLCB1bnNpZ25lZCBxdW90YSkKK1JlZjxTdG9yYWdlTmFtZXNwYWNl
PiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFn
ZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkIHF1b3RhLCBQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQpCiB7CiAgICAgLy8gRklYTUU6IEEgc21hcnRlciBpbXBsZW1lbnRhdGlvbiB3
b3VsZCBjcmVhdGUgYSBzcGVjaWFsIG5hbWVzcGFjZSB0eXBlIGluc3RlYWQgb2YganVzdCBwaWdn
eS1iYWNraW5nIG9mZgogICAgIC8vIFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlIGhlcmUuCi0gICAg
cmV0dXJuIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFj
ZShxdW90YSk7CisgICAgcmV0dXJuIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVTZXNzaW9u
U3RvcmFnZU5hbWVzcGFjZShxdW90YSwgc2Vzc2lvbklEKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5o
IGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
ci5oCmluZGV4IGU1ODlmZWU3YTVjNmM5MWNmOTRiN2QyM2I0ODYxNDgxNzliOGNmZjYuLjZkYmM1
YzkwOWJmYjc5ZTFhMzViMDhiNDg5NTM5YTBmM2Y3MGE3MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmgK
QEAgLTUwLDkgKzUwLDggQEAgcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJTdG9yYWdlTmFtZXNw
YWNlUHJvdmlkZXIoY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpOwogCiAg
ICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFt
ZXNwYWNlKFdlYkNvcmU6OlBhZ2UmLCB1bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7Ci0gICAgUmVm
PFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5h
bWVzcGFjZShXZWJDb3JlOjpQYWdlJiwgdW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOwotICAgIFJl
ZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2Uo
dW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOwotICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNw
YWNlPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW4mLCB1bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OlN0
b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90
YSwgUEFMOjpTZXNzaW9uSUQpIG92ZXJyaWRlOworICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlTmFt
ZXNwYWNlPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW4mLCB1bnNpZ25lZCBxdW90YSwgUEFMOjpTZXNzaW9uSUQpIG92ZXJyaWRlOwog
CiAgICAgY29uc3QgU3RyaW5nIG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoOwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCA0YWUyM2U5MGE0NzEw
YzM0MDQxMjA3N2RiOWEzMDM0ZGM2NTcyNGI4Li41ZTVhZjMxMWQ5ODc3OWY0OWVjNDM5NzhjODkx
ZGZlNTVkMGI4ZTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tCkBAIC0yODkzLDYgKzI4OTMsNyBAQCAtICh2b2lkKV9wcmVmZXJlbmNlc0NoYW5nZWQ6KFdl
YlByZWZlcmVuY2VzICopcHJlZmVyZW5jZXMKICAgICBzZXR0aW5ncy5zZXRMb2NhbFN0b3JhZ2VF
bmFibGVkKFtwcmVmZXJlbmNlcyBsb2NhbFN0b3JhZ2VFbmFibGVkXSk7CiAKICAgICBfcHJpdmF0
ZS0+cGFnZS0+ZW5hYmxlTGVnYWN5UHJpdmF0ZUJyb3dzaW5nKFtwcmVmZXJlbmNlcyBwcml2YXRl
QnJvd3NpbmdFbmFibGVkXSk7CisgICAgX3ByaXZhdGUtPmdyb3VwLT5zdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXIoKS5lbmFibGVMZWdhY3lQcml2YXRlQnJvd3NpbmdGb3JUZXN0aW5nKFtwcmVmZXJl
bmNlcyBwcml2YXRlQnJvd3NpbmdFbmFibGVkXSk7CiAgICAgc2V0dGluZ3Muc2V0U2Fuc1Nlcmlm
Rm9udEZhbWlseShbcHJlZmVyZW5jZXMgc2Fuc1NlcmlmRm9udEZhbWlseV0pOwogICAgIHNldHRp
bmdzLnNldFNlcmlmRm9udEZhbWlseShbcHJlZmVyZW5jZXMgc2VyaWZGb250RmFtaWx5XSk7CiAg
ICAgc2V0dGluZ3Muc2V0U3RhbmRhcmRGb250RmFtaWx5KFtwcmVmZXJlbmNlcyBzdGFuZGFyZEZv
bnRGYW1pbHldKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCBmYzUxMTUwZjJkYTVhMGJmMjVlZGFiM2MyOWQzZjNiMzFjYTQ4
YzUzLi44YmU4MDg1ZWM5OTQyMDFkMzJhNDFlOGM2Y2Q2NjQyZjMyYTBiY2NiIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTUgQEAKKzIwMTktMDgtMDEgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+
CisKKyAgICAgICAgU29tZSBpbXByb3ZlbWVudHMgb24gd2ViIHN0b3JhZ2UKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDM3MworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vaW9zLXNpbXVs
YXRvci13azIvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL1Rl
c3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogc3RvcmFnZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFn
ZS9wcml2YXRlLWJyb3dzaW5nLWFmZmVjdHMtc3RvcmFnZS1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogc3RvcmFnZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFnZS9yZXNvdXJjZXMvcHJpdmF0ZS1icm93
c2luZy0xLmh0bWw6CisKIDIwMTktMDctMjggIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBh
cHBsZS5jb20+CiAKICAgICAgICAgUmVvcmdhbml6ZSBVSVNjcmlwdENvbnRyb2xsZXIgaW50byBw
bGF0Zm9ybS1zcGVjaWZpYyBzdWJjbGFzc2VzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9pb3Mtc2ltdWxhdG9yLXdrMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vaW9zLXNpbXVsYXRvci13azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA5ZTg2NjZhY2Vm
MTY4MzgyNWQ3NTM4NjIxYzFjOWY4OTRlMGI1MTNmLi45NzQ5NzdhMjVmY2YxZmQ5ZTU3N2UzM2Y4
NWZhNWFmZDA0YmFmY2EyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtc2lt
dWxhdG9yLXdrMi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lv
cy1zaW11bGF0b3Itd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTY2LDcgKzY2LDcgQEAgaHR0cC93
cHQvY2FjaGUtc3RvcmFnZS9jYWNoZS1wdXQta2V5cy5odHRwcy5hbnkud29ya2VyLmh0bWwgWyBT
bG93IF0KIGh0dHAvd3B0L2NhY2hlLXN0b3JhZ2UvYS1jYWNoZS1vcGVuLmh0dHBzLmh0bWwgWyBT
bG93IF0KIGh0dHAvd3B0L2NhY2hlLXN0b3JhZ2UvY2FjaGUtcXVvdGEtYWRkLmFueS5odG1sIFsg
U2xvdyBdCiAKLXdlYmtpdC5vcmcvYi8xOTYzNzYgWyBEZWJ1ZyBdIHN0b3JhZ2UvZG9tc3RvcmFn
ZS9sb2NhbHN0b3JhZ2UvcHJpdmF0ZS1icm93c2luZy1hZmZlY3RzLXN0b3JhZ2UuaHRtbCBbIFBh
c3MgRmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMTk2Mzc2IFsgRGVidWcgXSBzdG9yYWdlL2RvbXN0
b3JhZ2UvbG9jYWxzdG9yYWdlL3ByaXZhdGUtYnJvd3NpbmctYWZmZWN0cy1zdG9yYWdlLmh0bWwg
WyBQYXNzIF0KIAogd2Via2l0Lm9yZy9iLzE5NjQwMyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL21lZGlhY2FwdHVyZS1yZWNvcmQvTWVkaWFSZWNvcmRlci1zdG9wLmh0bWwgWyBQYXNz
IEZhaWx1cmUgXQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rl
c3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3Rh
dGlvbnMKaW5kZXggMzA3ZWNiZWZhZGI3YWY4Yjc2ZjkxYTVlMDAzY2Y1ZDlkOThhNzFmZC4uNTQw
ZTBkZTExOGVkZjU1OWQzMTY3NmRlNzI4ZTExNmUyMDVmOTM2NiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtOTIyLDcgKzkyMiw3IEBAIHdl
YmtpdC5vcmcvYi8xOTQ4MjYgaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2RvLW5v
dC1ibG9jay10b3AtbGV2ZWwtbmF2CiAKIHdlYmtpdC5vcmcvYi8xOTQ5MTYgZmFzdC9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbS12aWRlby1lbGVtZW50Lmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCi13
ZWJraXQub3JnL2IvMTk2Mzc2IHN0b3JhZ2UvZG9tc3RvcmFnZS9sb2NhbHN0b3JhZ2UvcHJpdmF0
ZS1icm93c2luZy1hZmZlY3RzLXN0b3JhZ2UuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCit3ZWJraXQu
b3JnL2IvMTk2Mzc2IHN0b3JhZ2UvZG9tc3RvcmFnZS9sb2NhbHN0b3JhZ2UvcHJpdmF0ZS1icm93
c2luZy1hZmZlY3RzLXN0b3JhZ2UuaHRtbCBbIFBhc3MgXQogCiB3ZWJraXQub3JnL2IvMTk2NDAw
IGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay1nZXRTZXR0aW5ncy5odG1sIFsgUGFz
cyBGYWlsdXJlIF0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9kb21zdG9yYWdl
L2xvY2Fsc3RvcmFnZS9wcml2YXRlLWJyb3dzaW5nLWFmZmVjdHMtc3RvcmFnZS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2RvbXN0b3JhZ2UvbG9jYWxzdG9yYWdlL3ByaXZhdGUt
YnJvd3NpbmctYWZmZWN0cy1zdG9yYWdlLWV4cGVjdGVkLnR4dAppbmRleCAyY2E5NTU3NTAyN2Zh
Yjg5YWJlYjQ2N2IzODA1YzIwNjA1ZGZmYmQxLi5mOTg0MGRlYjUzMGJlMWMxNTVhZDhkZWY1YTU4
YzgwZmM2NjFkMDI3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2RvbXN0b3JhZ2Uv
bG9jYWxzdG9yYWdlL3ByaXZhdGUtYnJvd3NpbmctYWZmZWN0cy1zdG9yYWdlLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2RvbXN0b3JhZ2UvbG9jYWxzdG9yYWdlL3ByaXZh
dGUtYnJvd3NpbmctYWZmZWN0cy1zdG9yYWdlLWV4cGVjdGVkLnR4dApAQCAtOCw3ICs4LDcgQEAg
QUxFUlQ6IGxvY2FsU3RvcmFnZSdzIGxlbmd0aCBpczogMQogQUxFUlQ6IFRoZSBpdGVtIGluIG5l
dyB3aW5kb3cgc3RhcnRzIG91dCBhczogQ2hhbmdlZFZhbHVlCiBBTEVSVDogVGhlIGl0ZW0gaW4g
bmV3IHdpbmRvdyBpcyBub3c6IE5ld1dpbmRvd1ZhbHVlCiBBTEVSVDogQmFjayBpbiBwYXJlbnQg
d2luZG93LCBsb2NhbFN0b3JhZ2UncyBsZW5ndGggaXM6IDEKLUFMRVJUOiBCYWNrIGluIHBhcmVu
dCB3aW5kb3csIHRlc3RJdGVtIGlzOiBDaGFuZ2VkVmFsdWUKK0FMRVJUOiBCYWNrIGluIHBhcmVu
dCB3aW5kb3csIHRlc3RJdGVtIGlzOiBOZXdXaW5kb3dWYWx1ZQogQUxFUlQ6IEZpbmFsIHdpbmRv
dywgbG9jYWxTdG9yYWdlJ3MgbGVuZ3RoIGlzOiAxCiBBTEVSVDogRmluYWwgd2luZG93LCBpdGVt
IGlzOiBQZXJzaXN0ZW50IGl0ZW0hCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
ZG9tc3RvcmFnZS9sb2NhbHN0b3JhZ2UvcmVzb3VyY2VzL3ByaXZhdGUtYnJvd3NpbmctMS5odG1s
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFnZS9yZXNvdXJjZXMv
cHJpdmF0ZS1icm93c2luZy0xLmh0bWwKaW5kZXggZTQxMDFlMzkxYzA1Y2Q2YjZhOTczMDhkMTYy
OTE3YTJkMWFjODljNC4uNzMwZDRiOTE5YzY3YTk1ZmMxOTBkNTAyZGFiZmUyYmUwZGJhMjhmNCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFnZS9y
ZXNvdXJjZXMvcHJpdmF0ZS1icm93c2luZy0xLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFnZS9yZXNvdXJjZXMvcHJpdmF0ZS1icm93c2luZy0xLmh0
bWwKQEAgLTI0LDYgKzI0LDEyIEBAIGZ1bmN0aW9uIHJ1blRlc3QoKQogICAgICAgICB3aW5kb3cu
bG9jYXRpb24uaHJlZiA9ICJwcml2YXRlLWJyb3dzaW5nLTMuaHRtbCI7CiAgICAgfQogCisgICAg
dHJ5IHsKKyAgICAgICAgbG9jYWxTdG9yYWdlLmNsZWFyKCk7CisgICAgfSBjYXRjaChlKSB7Cisg
ICAgICAgIGxvZygiQ2F1Z2h0IGV4Y2VwdGlvbiB0cnlpbmcgdG8gY2xlYXIiICsgZSk7CisgICAg
fQorCiAgICAgbG9nKCJTdGFydCBvZiBwcml2YXRlIGJyb3dzaW5nIHRlc3QsIHRlc3RJdGVtIGlz
OiAiICsgbG9jYWxTdG9yYWdlLmdldEl0ZW0oInRlc3RJdGVtIikpOwogICAgIGxvZygibG9jYWxT
dG9yYWdlJ3MgbGVuZ3RoIGlzOiAiICsgbG9jYWxTdG9yYWdlLmxlbmd0aCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375446</attachid>
            <date>2019-08-02 13:20:02 -0700</date>
            <delta_ts>2019-08-02 13:39:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200373-20190802132002.patch</filename>
            <type>text/plain</type>
            <size>190435</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4MTUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjZlMDg3YzNmNzEzYjg1
NzcwYjU1MWM4MzYzZWUxYjc3YjJiOTIxNy4uMWE5OGNiODdhYjk0ZGEwNTU4NmNiNjZkMTI5Nzdl
MmJlOGY3MDM4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDE5LTA4LTAyICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIFNvbWUgaW1wcm92ZW1lbnRz
IG9uIHdlYiBzdG9yYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDAzNzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBSZW1vdmUgdHlwZSBFcGhlbWVyYWxMb2NhbFN0b3JhZ2UsIHdoaWNoIGlzIHVzZWQg
Zm9yIGxvY2FsU3RvcmFnZSBpbiBlcGhlbWVyYWwgc2Vzc2lvbnMsIGFuZCByZXBsYWNlIHdpdGgg
CisgICAgICAgIExvY2FsU3RvcmFnZS4KKyAgICAgICAgCisgICAgICAgIEFkZCBTZXNzaW9uSUQg
dG8gU3RvcmFnZU5hbWVzcGFjZSB0byBtYWtlIGl0IHBvc3NpYmxlIHRvIG1ha2UgU3RvcmFnZU5h
bWVzcGFjZSBzZXNzaW9uLXNwZWNpZmljLgorCisgICAgICAgIFVwZGF0ZSBvbmUgbGF5b3V0IHRl
c3QgdG8gcmVmbGVjdCBjaGFuZ2VkIGJlaGF2aW9yLgorCisgICAgICAgICogbG9hZGVyL0VtcHR5
Q2xpZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92
aWRlcjo6Y3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkVt
cHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VO
YW1lc3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXI6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZSk6IERlbGV0ZWQuCisgICAg
ICAgICogcGFnZS9DaHJvbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjpjcmVhdGVX
aW5kb3cgY29uc3QpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRPTVdpbmRvdzo6cHJld2FybUxvY2FsU3RvcmFnZUlmTmVjZXNzYXJ5KToKKyAgICAg
ICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0U2Vzc2lvbklE
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmVwaGVtZXJhbExvY2FsU3RvcmFnZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzZXRFcGhlbWVyYWxMb2NhbFN0b3JhZ2UpOiBE
ZWxldGVkLgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAqIHBhZ2UvUGFnZUdyb3Vw
Lmg6CisgICAgICAgIChXZWJDb3JlOjpQYWdlR3JvdXA6OmlzTGVnYWN5UHJpdmF0ZUJyb3dzaW5n
RW5hYmxlZEZvclRlc3RpbmcpOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTdG9yYWdlOjpwcmV3YXJtKTogRGVsZXRlZC4gSW5pdGlhdGluZyBhIFN0
b3JhZ2VBcmVhTWFwIGlzIGVub3VnaCB0byBsZXQgbmV0d29yayBwcm9jZXNzIHByZXdhcm0KKyAg
ICAgICAgY29ycmVzcG9uZGluZyBsb2NhbFN0b3JhZ2UgYXJlYS4KKyAgICAgICAgKiBzdG9yYWdl
L1N0b3JhZ2UuaDoKKyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2VBcmVhLmg6CisgICAgICAgIChX
ZWJDb3JlOjpTdG9yYWdlQXJlYTo6Y2xvc2VEYXRhYmFzZUlmSWRsZSk6CisgICAgICAgIChXZWJD
b3JlOjpTdG9yYWdlQXJlYTo6cHJld2FybSk6IERlbGV0ZWQuCisgICAgICAgICogc3RvcmFnZS9T
dG9yYWdlTmFtZXNwYWNlLmg6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjps
b2NhbFN0b3JhZ2VBcmVhKToKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2VQcm92
aWRlcjo6bG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VO
YW1lc3BhY2VQcm92aWRlcjo6dHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6ZW5hYmxlTGVnYWN5UHJpdmF0
ZUJyb3dzaW5nRm9yVGVzdGluZyk6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXIuaDoKKyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2VUeXBlLmg6CisgICAgICAgIChX
ZWJDb3JlOjppc0xvY2FsU3RvcmFnZSk6CisKIDIwMTktMDgtMDIgIEtvbnN0YW50aW4gVG9rYXJl
diAgPGFubnVsZW5AeWFuZGV4LnJ1PgogCiAgICAgICAgIFJlbW92ZSBjb25zdHJ1Y3RvcnMgYW5k
IG9wZXJhdG9ycyBvZiBGb250UGxhdGZvcm1EYXRhIGRlZmluZWQgb25seSBmb3IgRnJlZXR5cGUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggM2FiN2Y5NzcwMzI0M2IyZDI0NmJkM2U3YTAxNzQ5YTM0MGQyNmQ0Mi4uNjA1
NzJhMTQ5N2VjYjA3Mjg4YjM1MTM2MDYxMWVkMDA4YThmZjJiYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyMzMgQEAKKzIwMTktMDgtMDIgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisK
KyAgICAgICAgU29tZSBpbXByb3ZlbWVudHMgb24gd2ViIHN0b3JhZ2UKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDM3MworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNvbWUgZmxhd3MgaW4gY3VycmVudCB3
ZWIgc3RvcmFnZSBhcmNoaXRlY3R1cmUgaGF2ZSBiZWNvbWUgb2J2aW91cyBhZnRlciB3ZWIgc3Rv
cmFnZSBpcyBtb3ZlZCBmcm9tIFVJIHByb2Nlc3MgdG8KKyAgICAgICAgbmV0d29yayBwcm9jZXNz
IGFuZCBQU09OIGlzIGVuYWJsZWQuIEZvciBleGFtcGxlLCBzZXNzaW9uU3RvcmFnZU5hbWVTcGFj
ZSBmb3Igd2ViIHBhZ2UgaXMgcHJlcGFyZWQgYW5kIGRlc3Ryb3llZAorICAgICAgICBpbiB0aGUg
bmV0d29yayBwcm9jZXNzIHdoZW4gdGhlIHBhZ2UgY29tZXMgYW5kIGdvZXMsIGV2ZW4gdGhvdWdo
IHRoZSBwYWdlIG1heSBub3QgdXNlIHNlc3Npb25TdG9yYWdlIGF0IGFsbC4gVUkKKyAgICAgICAg
cHJvY2VzcyBuYXR1cmFsbHkga25vd3Mgc3RhdGUgb2YgYSB3ZWIgcGFnZSwgYnV0IG5ldHdvcmsg
cHJvY2VzcyBkb2VzIG5vdC4gSWYgdGhlIHdlYiBwYWdlIGlzIG5vdCB1c2luZyB3ZWIKKyAgICAg
ICAgc3RvcmFnZSwgdGhlIG1lc3NhZ2VzIGFib3V0IHBhZ2Ugc3RhdGUgc2VudCBmcm9tIHdlYiBw
cm9jZXNzIHRvIG5ldHdvcmsgcHJvY2VzcyBhcmUgdXNlbGVzcy4KKworICAgICAgICBIZXJlIGFy
ZSBzb21lIGdlbmVyYWwgaWRlYXMgb2YgdGhpcyBwYXRjaDoKKyAgICAgICAgMS4gTmV0d29yayBw
cm9jZXNzIG93bnMgdGhlIHdlYiBzdG9yYWdlLCBhbmQgd2ViIHByb2Nlc3Mga2VlcHMgYSBzbWFs
bCBsb2NhbCBjb3B5IChiYXNlZCBvbiBzZXNzaW9uIGFuZCAKKyAgICAgICAgb3JpZ2lucyB0aGF0
IGFyZSB2aXNpdGVkKS4gVGhlcmUgaXMgYSB2aXJ0dWFsIGNvbm5lY3Rpb24gZnJvbSB0aGUgbG9j
YWwgY29weSBpbiB0aGUgd2ViIHByb2Nlc3MgdG8gdGhlIG9yaWdpbmFsCisgICAgICAgIGNvcHkg
aW4gdGhlIG5ldHdvcmsgcHJvY2Vzcy4gVGhlIGNvbm5lY3Rpb24gaXMgY3JlYXRlZCBieSB3ZWIg
cHJvY2VzcyB3aGVuIHNvbWUgcGFnZSBhc2tzIGZvciB3ZWIgc3RvcmFnZS4KKyAgICAgICAgMi4g
SWYgY29ubmVjdGlvbiBpcyBsb3N0IGJlY2F1c2UgbmV0d29yayBwcm9jZXNzIGlzIGdvbmUsIHN0
b3JhZ2UgaW4gbWVtb3J5IHdpbGwgYmUgbG9zdC4gVGhlIGxvY2FsIGNvcHkgaW4gd2ViCisgICAg
ICAgIHByb2Nlc3NzIHdpbGwgYmUgZGlzY2FyZGVkLgorICAgICAgICAzLiAoU2Vzc2lvbklELCBT
dG9yYWdlTmFtZXNwYWNlSUQsIFNlY3VyaXR5T3JpZ2luKSBpcyB1c2VkIHRvIGlkZW50aWZ5IGEg
c3RvcmFnZSBhcmVhLiBJZiBzZXNzaW9uIGlzIGNoYW5nZWQgaW4KKyAgICAgICAgd2ViIHByb2Nl
c3MgKGxpa2UgZW5hYmxpbmcgcHJpdmF0ZSBicm93c2luZyBpbiBsYXlvdXQgdGVzdCBub3cpLCBh
IHJlLWNvbm5lY3Rpb24gd2l0aCBkaWZmZXJlbnQgc2Vzc2lvbklEIHdvdWxkIAorICAgICAgICBz
dWZmaWNlIHRvIGxvYWQgYW5vdGhlciBjb3B5IG9mIHN0b3JhZ2UuCisgICAgICAgIDQuIGxvY2Fs
U3RvcmFnZSBpbiBlcGhlbWVyYWwgc2Vzc2lvbiBoYXMgdGhlIHNhbWUgYmVoYXZpb3IgYXMgbG9j
YWxTdG9yYWdlIGluc3RlYWQgb2Ygc2Vzc2lvblN0b3JhZ2UsIHdoaWNoCisgICAgICAgIG1lYW5z
IGRpZmZlcmVudCBwYWdlcyBpbiB0aGUgc2FtZSBlcGhlbWVyYWwgc2Vzc2lvbiBzaGFyZSB0aGUg
c2FtZSBsb2NhbFN0b3JhZ2UuCisKKyAgICAgICAgQWxzbywgdGhpcyBwYXRjaCBpbnRyb2R1Y2Vz
IFN0b3JhZ2VNYW5hZ2VyU2V0IHRvIG5ldHdvcmsgcHJvY2Vzcy4gSXQgaGFuZGxlcyB3ZWIgc3Rv
cmFnZSBzdHVmZiwgaW5jbHVkaW5nCisgICAgICAgIHJlY2VpdmluZyBzdG9yYWdlIG1lc3NhZ2Vz
IGZyb20gd2ViIHByb2Nlc3MsIG9uIG9uZSBiYWNrZ3JvdW5kIHRocmVhZC4gUHJldmlvdXNseSBl
YWNoIHNlc3Npb24gaGFzIGl0cyBvd24KKyAgICAgICAgU3RvcmFnZU1hbmFnZXIgYW5kIGVhY2gg
U3RvcmFnZU1hbmFnZXIgaGFzIGl0cyBvd24gV29ya1F1ZXVlLgorCisgICAgICAgICogQ01ha2VM
aXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdDoKKyAg
ICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJp
dmVkU291cmNlcy5tYWtlOgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwOiByZW1vdmUgbWVzc2FnZSBoYW5kbGVycyB0aGF0IGFyZSBu
byBsb25nZXIgbmVlZGVkLiBOZXR3b3JrCisgICAgICAgIHByb2Nlc3Mgbm8gbG9uZ2VyIG5lZWRz
IHRvIGtub3cgcGFnZSBzdGF0ZXMgZnJvbSB3ZWIgcHJvY2Vzcy4KKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZENsb3NlKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OndlYlBhZ2VXYXNBZGRlZCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp3ZWJQ
YWdlV2FzUmVtb3ZlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjp3ZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQpOiBEZWxldGVkLgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVz
c2FnZXMuaW46CisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6
IE5ldHdvcmtQcm9jZXNzIHVzZXMgU3RvcmFnZU1hbmFnZXJTZXQgaW5zdGVhZCBvZiBTdG9yYWdl
TWFuYWdlciBmcm9tIAorICAgICAgICBkaWZmZXJlbnQgc2Vzc2lvbnMgdG8gZGVhbCB3aXRod2Vi
IHN0b3JhZ2UuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpOZXR3b3JrUHJvY2Vz
cyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjp+TmV0d29ya1Byb2Nlc3MpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNz
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmFkZFdl
YnNpdGVEYXRhU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVzdHJv
eVNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6aGFzTG9jYWxTdG9y
YWdlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmZldGNoV2Vic2l0ZURhdGEp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGEpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmln
aW5zKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRh
Rm9yUmVnaXN0cmFibGVEb21haW5zKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OmFjdHVhbFByZXBhcmVUb1N1c3BlbmQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
czo6cmVzdW1lKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmdldExvY2FsU3Rv
cmFnZU9yaWdpbkRldGFpbHMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y29u
bmVjdGlvblRvV2ViUHJvY2Vzc0Nsb3NlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzOjp3ZWJQYWdlV2FzQWRkZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzczo6d2ViUGFnZVdhc1JlbW92ZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6d2ViUHJvY2Vzc1dhc0Rpc2Nvbm5lY3RlZCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjp3ZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQpOiBE
ZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHA6IFN0b3JhZ2VNYW5hZ2Vy
IGlzIG1vdmVkIG91dCBvZiBOZXR3b3JrU2Vzc2lvbi4gSXQgaXMgbm93IG1hbmFnZWQgYnkgCisg
ICAgICAgIFN0b3JhZ2VNYW5hZ2VyU2V0LgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lv
bjo6TmV0d29ya1Nlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6fk5l
dHdvcmtTZXNzaW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5o
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6c3RvcmFnZU1hbmFnZXIpOiBEZWxl
dGVkLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBh
cmFtZXRlcnMuY3BwOiBjcmVhdGlvbiBwYXJhbWV0ZXJzIG9mIFN0b3JhZ2VNYW5hZ2VyIGlzIG1v
dmVkIG91dCBvZgorICAgICAgICBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy4KKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM6OnByaXZhdGVT
ZXNzaW9uUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ3JlYXRp
b25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vz
c2lvbkNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5oOgorCisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3BwOiBMb2Nh
bFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIgaXMgY3JlYXRlZCBvbiB0aGUKKyAgICAgICAgYmFja2dy
b3VuZCB0aHJlYWQgbm93LCBzbyBpdCBkb2VzIG5vdCBuZWVkIGEgY29weSBvZiBXb3JrUXVldWUg
dG8gZG8gdGhlIGZpbGUgb3BlcmF0aW9uLgorICAgICAgICAoV2ViS2l0OjpMb2NhbFN0b3JhZ2VE
YXRhYmFzZVRyYWNrZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsU3RvcmFnZURh
dGFiYXNlVHJhY2tlcjo6TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyKToKKyAgICAgICAgKFdl
YktpdDo6TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjp+TG9jYWxTdG9yYWdlRGF0YWJhc2VU
cmFja2VyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFn
ZURhdGFiYXNlVHJhY2tlci5oOgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFn
ZS9TdG9yYWdlTWFuYWdlci5jcHA6IFN0b3JhZ2VNYW5hZ2VyIGlzIGNyZWF0ZWQgYW5kIGRlc3Ry
b3llZCBvbiB0aGUgYmFja2dyb3VuZCAKKyAgICAgICAgdGhyZWFkLiBUaGUgdGFza3MgYXJlIGRp
c3BhdGNoZWQgdG8gYmFja2dyb3VuZCB0aHJlYWQgYnkgU3RvcmFnZU1hbmFnZXJTZXQuIEFsbCB0
aHJlYWQgc2FmZXR5IGNoZWNrcyBpbiAKKyAgICAgICAgU3RvcmFnZU1hbmFnZXIgbm93IGFyZSBj
aGVja2luZyBpZiBpdCBpcyBpbiB0aGUgYmFja2dyb3VuZCB0aHJlYWQuCisgICAgICAgIChXZWJL
aXQ6OmdlbmVyYXRlU3RvcmFnZUFyZWFJZGVudGlmaWVyKTogZWFjaCBTdG9yYWdlQXJlYSBoYXMg
YW4gaWRlbnRpZmllci4gU3RvcmFnZUFyZWFNYXAgaW4gd2ViIHByb2Nlc3MKKyAgICAgICAgdXNl
IHRoaXMgaWRlbnRpZmllciB0byBpbmRpY2F0ZSB3aGljaCBTdG9yYWdlQXJlYSBpdCBpcyBjb25u
ZWN0aW5nIHRvLgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUFyZWE6
OlN0b3JhZ2VBcmVhKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VB
cmVhOjphZGRMaXN0ZW5lcik6IGxvYWQgbG9jYWxTdG9yYWdlRGF0YWJhc2UgaW4gYWR2YW5jZSBp
ZiB0aGVyZSBpcyBzb21lIAorICAgICAgICBjb25uZWN0aW9uIHRvIHRoaXMgTG9jYWxTdG9yYWdl
IGFyZWEuCisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQXJlYTo6cmVt
b3ZlTGlzdGVuZXIpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUFy
ZWE6OmNsZWFyKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VBcmVh
OjpvcGVuRGF0YWJhc2VBbmRJbXBvcnRJdGVtc0lmTmVlZGVkIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6U3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VBcmVhOjpkaXNwYXRjaEV2ZW50cyBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpMb2NhbFN0b3JhZ2VOYW1lc3BhY2U6
OmdldE9yQ3JlYXRlU3RvcmFnZUFyZWEpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdl
cjo6U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2U6OmdldE9yQ3JlYXRlU3RvcmFnZUFyZWEpOgorICAg
ICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6U3RvcmFnZU1hbmFnZXIpOgorICAgICAgICAo
V2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6flN0b3JhZ2VNYW5hZ2VyKToKKyAgICAgICAgKFdlYktp
dDo6U3RvcmFnZU1hbmFnZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKToKKyAgICAg
ICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmRlc3Ryb3lTZXNzaW9uU3RvcmFnZU5hbWVzcGFj
ZSk6IHRoaXMgaXMgbm90IHVzZWQgbm93LiBLZWVwIGl0IGZvciBmdXR1cmUgaW1wcm92ZW1lbnQK
KyAgICAgICAgdG8gcmVtb3ZlIGluLW1lbW9yeSBzZXNzaW9uU3RvcmFnZSBpbiBuZXR3b3JrIHBy
b2Nlc3MgaWYgd2Uga25vdyBzb21lIHdlYiBwYWdlIGlzIGdvbmUgZm9yZXZlci4KKyAgICAgICAg
KFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmNsb25lU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UpOgor
ICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6Z2V0U2Vzc2lvblN0b3JhZ2VPcmlnaW5z
KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmRlbGV0ZVNlc3Npb25TdG9yYWdl
T3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVTZXNzaW9u
U3RvcmFnZUVudHJpZXNGb3JPcmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFn
ZXI6OmdldExvY2FsU3RvcmFnZU9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFu
YWdlcjo6Z2V0TG9jYWxTdG9yYWdlT3JpZ2luRGV0YWlscyk6CisgICAgICAgIChXZWJLaXQ6OlN0
b3JhZ2VNYW5hZ2VyOjpkZWxldGVMb2NhbFN0b3JhZ2VPcmlnaW5zTW9kaWZpZWRTaW5jZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVMb2NhbFN0b3JhZ2VFbnRyaWVz
Rm9yT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVMb2Nh
bFN0b3JhZ2VBcmVhKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmNyZWF0ZVRy
YW5zaWVudExvY2FsU3RvcmFnZUFyZWEpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdl
cjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VBcmVhKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1h
bmFnZXI6OmdldE9yQ3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAoV2Vi
S2l0OjpTdG9yYWdlTWFuYWdlcjo6Y2xlYXJTdG9yYWdlTmFtZXNwYWNlcyk6CisgICAgICAgIChX
ZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQXJlYTo6c2VjdXJpdHlPcmlnaW4gY29uc3Qp
OiBEZWxldGVkLiBUaGUgZGVjbGFyYXRpb25zIGFyZSBtb3ZlZCB0byAKKyAgICAgICAgU3RvcmFn
ZU1hbmFnZXIuaCBiZWNhdXNlIFN0b3JhZ2VBcmVhIGlzIHVzZWQgaW4gU3RvcmFnZU1hbmFnZXJT
ZXQuCisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQXJlYTo6aXNFcGhl
bWVyYWwgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6U3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VBcmVhOjpoYXNMaXN0ZW5lciBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQXJlYTo6c2V0
SXRlbXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6TG9jYWxT
dG9yYWdlTmFtZXNwYWNlOjpjbG9uZVRvKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U3Rv
cmFnZU1hbmFnZXI6OlNlc3Npb25TdG9yYWdlTmFtZXNwYWNlOjphbGxvd2VkQ29ubmVjdGlvbnMg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6U2Vzc2lv
blN0b3JhZ2VOYW1lc3BhY2U6OmFkZEFsbG93ZWRDb25uZWN0aW9uKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OlNlc3Npb25TdG9yYWdlTmFtZXNwYWNlOjpyZW1v
dmVBbGxvd2VkQ29ubmVjdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VN
YW5hZ2VyOjphZGRBbGxvd2VkU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0aW9uKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OnJlbW92ZUFsbG93ZWRTZXNz
aW9uU3RvcmFnZU5hbWVzcGFjZUNvbm5lY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpTdG9yYWdlTWFuYWdlcjo6cHJvY2Vzc0RpZENsb3NlQ29ubmVjdGlvbik6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVMb2NhbFN0b3JhZ2VFbnRyaWVz
Rm9yT3JpZ2luKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmNy
ZWF0ZUxvY2FsU3RvcmFnZU1hcCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VN
YW5hZ2VyOjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VNYXApOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VNYXApOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6ZGVzdHJveVN0b3JhZ2VNYXAp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6cHJld2FybSk6IERl
bGV0ZWQuIEEgTG9jYWxTdG9yYWdlIGFyZWEgaW1wb3J0cyBmcm9tIGRhdGFiYXNlIHdoZW4gaXQg
aGFzIGEgY29ubmVjdGlvbiwKKyAgICAgICAgc28gbm8gbmVlZCB0byBoYXZlIHByZXdhcm0gZnVu
Y3Rpb24uCisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpnZXRWYWx1ZXMpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6c2V0SXRlbSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpzZXRJdGVtcyk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpyZW1vdmVJdGVtKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmNsZWFyKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OndhaXRVbnRpbFRhc2tzRmluaXNoZWQpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6c3VzcGVuZCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpyZXN1bWUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6ZmluZFN0b3JhZ2VBcmVhIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmg6
CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQXJlYTo6c2VjdXJpdHlP
cmlnaW4gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUFy
ZWE6OmlkZW50aWZpZXIpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6U3RvcmFn
ZUFyZWE6Omhhc0xpc3RlbmVyKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OlN0
b3JhZ2VBcmVhOjppc0VwaGVtZXJhbCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VN
YW5hZ2VyOjpTdG9yYWdlQXJlYTo6c2V0V29ya1F1ZXVlKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLm1lc3NhZ2VzLmluOiBSZW1vdmVkLgorCisg
ICAgICAgICogU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmNwcDogY3JlYXRpb24g
cGFyYW1ldGVycyBvZiBTdG9yYWdlTWFuYWdlciBhcmUgbW92ZWQgdG8gCisgICAgICAgIFdlYnNp
dGVEYXRhU3RvcmVQYXJhbWV0ZXJzLgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
UGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZVBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmVQYXJhbWV0ZXJzOjpwcml2YXRlU2Vzc2lvblBhcmFtZXRlcnMpOgorICAgICAgICAqIFNoYXJl
ZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oOgorICAgICAgICAqIFNvdXJjZXMudHh0Ogor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQb29sOjplbnN1cmVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbToKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cGFyYW1ldGVycyk6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0ZXJzKToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGUuY3BwOiBzZXNzaW9uIGNoYW5nZSBvZiB3ZWIgc3RvcmFnZSBpcyBkb25l
IHZpYSAKKyAgICAgICAgV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyIGluc3RlYWQgb2YgV2Vi
UHJvY2VzcyBub3cuCisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlOjpzZXRQcml2YXRl
QnJvd3NpbmdFbmFibGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpjcmVhdGVXZWJQYWdlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzczo6cmVtb3ZlV2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3M6OmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3M6OnJlZ2lzdGVyU3RvcmFnZUFyZWFNYXApOiB3ZWIgcHJvY2VzcyBvbmx5IGhh
dmUgb25lIGNvcHkgb2YgU3RvcmFnZUFyZWEgZm9yIHRoZSBzYW1lIAorICAgICAgICBpZGVudGlm
aWVyLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzdG9yYWdlQXJlYU1hcCBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmVuYWJsZVByaXZhdGVCcm93c2luZ0ZvclRl
c3RpbmcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYUltcGw6OmluY3JlbWVudEFjY2Vzc0Nv
dW50KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFJbXBsOjpkZWNyZW1lbnRBY2Nlc3ND
b3VudCk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1wbDo6cHJld2FybSk6IERlbGV0
ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oOgor
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcDogaWRl
bnRpZmllciBvZiBTdG9yYWdlQXJlYU1hcCBpcyB0aGUgc2FtZSBhcyBpZGVudGlmaWVyIG9mIAor
ICAgICAgICBTdG9yYWdlQXJlYSBpdCBjb25uZWN0cyB0by4gSWYgdGhlIGlkZW50aWZpZXIgaXMg
MCwgaXQgbWVhbnMgdGhlIFN0b3JhZ2VBcmVhTWFwIGlzIGRpc2Nvbm5lY3RlZC4gCisgICAgICAg
IFN0b3JhZ2VBcmVhTWFwIG5lZWRzIHRvIGJlIGNvbm5lY3RlZCB0byBiZSBmdW5jdGlvbmFsLgor
ICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6U3RvcmFnZUFyZWFNYXApOgorICAgICAg
ICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6flN0b3JhZ2VBcmVhTWFwKToKKyAgICAgICAgKFdl
YktpdDo6U3RvcmFnZUFyZWFNYXA6OnNldEl0ZW0pOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdl
QXJlYU1hcDo6cmVtb3ZlSXRlbSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwOjpj
bGVhcik6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwOjpyZXNldFZhbHVlcyk6Cisg
ICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwOjpsb2FkVmFsdWVzSWZOZWVkZWQpOgorICAg
ICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6Y2xlYXJDYWNoZSk6CisgICAgICAgIChXZWJL
aXQ6OlN0b3JhZ2VBcmVhTWFwOjphcHBseUNoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3Jh
Z2VBcmVhTWFwOjpkaXNwYXRjaFN0b3JhZ2VFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OlN0b3Jh
Z2VBcmVhTWFwOjpkaXNwYXRjaFNlc3Npb25TdG9yYWdlRXZlbnQpOgorICAgICAgICAoV2ViS2l0
OjpTdG9yYWdlQXJlYU1hcDo6ZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudCk6CisgICAgICAgIChX
ZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwOjpjb25uZWN0KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFn
ZUFyZWFNYXA6OmRpc2Nvbm5lY3QpOgorICAgICAgICAoV2ViS2l0OjpnZW5lcmF0ZVN0b3JhZ2VN
YXBJRCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwOjpwcmV3YXJt
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OmRpZEdldFZhbHVl
cyk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVh
TWFwLmg6CisgICAgICAgICgpOiBEZWxldGVkLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJT
dG9yYWdlL1N0b3JhZ2VBcmVhTWFwLm1lc3NhZ2VzLmluOiB0aGVyZSBhcmUgdHdvIHN5bmNocm9u
b3VzIG1lc3NhZ2VzLCBvbmUgZm9yIGNvbm5lY3Rpb24gYW5kIAorICAgICAgICBvbmUgZm9yIGdl
dHRpbmcgdmFsdWVzLiBXZSBtYXkgbWVyZ2UgdGhlbSBpbnRvIG9uZS4KKworICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFj
ZSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6
Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6
U3RvcmFnZU5hbWVzcGFjZUltcGw6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsKToKKyAgICAgICAgKFdl
YktpdDo6U3RvcmFnZU5hbWVzcGFjZUltcGw6OmNvcHkpOgorICAgICAgICAoV2ViS2l0OjpTdG9y
YWdlTmFtZXNwYWNlSW1wbDo6c2V0U2Vzc2lvbklERm9yVGVzdGluZyk6CisgICAgICAgIChXZWJL
aXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1l
c3BhY2UpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdl
TmFtZXNwYWNlSW1wbC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTdG9yYWdlTmFt
ZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVMb2NhbFN0b3JhZ2VO
YW1lc3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6
OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdl
TmFtZXNwYWNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2Vi
U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmg6CisKIDIwMTktMDgtMDIgIENhcmxvcyBHYXJjaWEg
Q2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIFVwZGF0
ZSBPcHRpb25zR1RLLmNtYWtlIGFuZCBORVdTIGZvciAyLjI1LjQgcmVsZWFzZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0No
YW5nZUxvZwppbmRleCA2NjA5MGUyZGE4ZDZmMWQ0ZTE4OGJlYjE3OTc1YTcxMzZjYTg3OTg0Li40
OTkwZWJkMjQxNzRhMzhlODE0MjgwYTc1MzY2MmY0MGMzYTRlNjI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE5LTA4LTAyICBTaWh1aSBMaXUgIDxzaWh1aV9saXVA
YXBwbGUuY29tPgorCisgICAgICAgIFNvbWUgaW1wcm92ZW1lbnRzIG9uIHdlYiBzdG9yYWdlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDAzNzMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3VwcG9y
dCBmb3IgY2hhbmdpbmcgc2Vzc2lvbiBvZiB3ZWIgc3RvcmFnZSBpbiBsYXlvdXQgdGVzdHMuCisK
KyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlN0b3JhZ2VBcmVhSW1wbDo6c2Vzc2lvbkNoYW5nZWQpOgorICAgICAgICAqIFN0b3JhZ2UvU3Rv
cmFnZUFyZWFJbXBsLmg6CisgICAgICAgICogU3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYVN5bmM6OnNjaGVkdWxlRmluYWxTeW5jKToKKyAg
ICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6U3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKToK
KyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUltcGw6OmdldE9yQ3JlYXRlTG9jYWxT
dG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUltcGw6
OlN0b3JhZ2VOYW1lc3BhY2VJbXBsKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVzcGFj
ZUltcGw6OmNvcHkpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y2xv
c2UpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6c2V0U2Vzc2lvbklE
Rm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVh
dGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOiBEZWxldGVkLgorICAgICAgICAqIFN0
b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaDoKKyAgICAgICAgKiBTdG9yYWdlL1dlYlN0b3Jh
Z2VOYW1lc3BhY2VQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlN0b3JhZ2VOYW1l
c3BhY2VQcm92aWRlcjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAo
V2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU5h
bWVzcGFjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6
Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VO
YW1lc3BhY2UpOiBEZWxldGVkLgorICAgICAgICAqIFN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyLmg6CisKIDIwMTktMDctMzEgIEtlaXRoIFJvbGxpbiAgPGtyb2xsaW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFVwZGF0ZSBXZWJLaXRMZWdhY3kgZm9yIFhDQnVpbGQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZwppbmRleCBmNjdjYTBhY2M0YTEzOWZmYzg2MDM0NTUxNzJiYTVmYWEy
NzY0ZGQ5Li43Y2Y5ZTAxMjMyMzY3ZWZlODNjMWEyNjA0OWZjZmM3NzY5MmEwN2EyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTktMDgtMDIgIFNpaHVp
IExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgU29tZSBpbXByb3ZlbWVudHMg
b24gd2ViIHN0b3JhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwMDM3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9wcmVmZXJl
bmNlc0NoYW5nZWQ6XSk6CisKIDIwMTktMDgtMDEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0
ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBNb3ZlIEZvcm1EYXRhIHppcCBmaWxlIGdlbmVy
YXRpb24gdG8gTmV0d29ya1Byb2Nlc3MgYW5kIGVuYWJsZSBpdCBmb3IgYWxsIFdlYktpdCBjbGll
bnRzIGZvciB1cGxvYWRpbmcgZGlyZWN0b3JpZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9FbXB0eUNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xp
ZW50cy5jcHAKaW5kZXggYzQ1MGMwODcwYzBkYjkwMDJiOTA0YzdiNmNiY2U0Yzk2OTAyYzZkYy4u
YWY0ZTg3ZTUyNGZiOTQ5MmRhOWE2N2MzMGZjZGQ5MjI0YmFlOTEwNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKQEAgLTM5NiwxMiArMzk2LDE0IEBAIGNsYXNzIEVtcHR5
U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyIGZpbmFsIDogcHVibGljIFN0b3JhZ2VOYW1lc3BhY2VQ
cm92aWRlciB7CiAgICAgc3RydWN0IEVtcHR5U3RvcmFnZU5hbWVzcGFjZSBmaW5hbCA6IHB1Ymxp
YyBTdG9yYWdlTmFtZXNwYWNlIHsKICAgICAgICAgUmVmPFN0b3JhZ2VBcmVhPiBzdG9yYWdlQXJl
YShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmKSBmaW5hbCB7IHJldHVybiBhZG9wdFJlZigqbmV3
IEVtcHR5U3RvcmFnZUFyZWEpOyB9CiAgICAgICAgIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjb3B5
KFBhZ2UqKSBmaW5hbCB7IHJldHVybiBhZG9wdFJlZigqbmV3IEVtcHR5U3RvcmFnZU5hbWVzcGFj
ZSk7IH0KKyAgICAgICAgCisgICAgICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0
IHsgcmV0dXJuIFBBTDo6U2Vzc2lvbklEOjplbXB0eVNlc3Npb25JRCgpOyB9CisgICAgICAgIHZv
aWQgc2V0U2Vzc2lvbklERm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCkgeyB9OwogICAgIH07CiAK
ICAgICBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2Uo
UGFnZSYsIHVuc2lnbmVkKSBmaW5hbDsKLSAgICBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRl
TG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkKSBmaW5hbDsKLSAgICBSZWY8U3RvcmFnZU5h
bWVzcGFjZT4gY3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNp
Z25lZCkgZmluYWw7Ci0gICAgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVRyYW5zaWVudExv
Y2FsU3RvcmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkKSBmaW5hbDsKKyAg
ICBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVuc2ln
bmVkLCBQQUw6OlNlc3Npb25JRCkgZmluYWw7CisgICAgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNy
ZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYsIHVuc2ln
bmVkLCBQQUw6OlNlc3Npb25JRCkgZmluYWw7CiB9OwogCiBjbGFzcyBFbXB0eVVzZXJDb250ZW50
UHJvdmlkZXIgZmluYWwgOiBwdWJsaWMgVXNlckNvbnRlbnRQcm92aWRlciB7CkBAIC01MjUsMTcg
KzUyNywxMiBAQCBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gRW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYQogICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEVtcHR5U3RvcmFnZU5hbWVzcGFjZSk7CiB9CiAKLVJlZjxTdG9yYWdlTmFtZXNwYWNlPiBF
bXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNl
KHVuc2lnbmVkKQorUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IEVtcHR5U3RvcmFnZU5hbWVzcGFjZVBy
b3ZpZGVyOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQsIFBBTDo6U2Vzc2lv
bklEKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEVtcHR5U3RvcmFnZU5hbWVzcGFjZSk7
CiB9CiAKLVJlZjxTdG9yYWdlTmFtZXNwYWNlPiBFbXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
cjo6Y3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCkK
LXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBFbXB0eVN0b3JhZ2VOYW1lc3BhY2UpOwotfQot
Ci1SZWY8U3RvcmFnZU5hbWVzcGFjZT4gRW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNy
ZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYsIHVuc2ln
bmVkKQorUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IEVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVy
OjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoU2VjdXJpdHlPcmlnaW4mLCB1
bnNpZ25lZCwgUEFMOjpTZXNzaW9uSUQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRW1w
dHlTdG9yYWdlTmFtZXNwYWNlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q2hyb21lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAppbmRleCA5NzU4MzI5
YmE5MDljZDkxM2NhYjQ2ODVkNzFhZTlkYTRmYzM1Y2E2Li43M2ZlZTA3ZDlhMTU0OTI1YTUxYTY3
ZTI0YzUzNTE5ZTEzNzI2NzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9t
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCkBAIC0xODksOCArMTg5
LDYgQEAgUGFnZSogQ2hyb21lOjpjcmVhdGVXaW5kb3coRnJhbWUmIGZyYW1lLCBjb25zdCBGcmFt
ZUxvYWRSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdAogCiAgICAgaWYgKGF1dG8qIG9sZFNlc3Npb25T
dG9yYWdlID0gbV9wYWdlLnNlc3Npb25TdG9yYWdlKGZhbHNlKSkKICAgICAgICAgbmV3UGFnZS0+
c2V0U2Vzc2lvblN0b3JhZ2Uob2xkU2Vzc2lvblN0b3JhZ2UtPmNvcHkobmV3UGFnZSkpOwotICAg
IGlmIChhdXRvKiBvbGRFcGhlbWVyYWxMb2NhbFN0b3JhZ2UgPSBtX3BhZ2UuZXBoZW1lcmFsTG9j
YWxTdG9yYWdlKGZhbHNlKSkKLSAgICAgICAgbmV3UGFnZS0+c2V0RXBoZW1lcmFsTG9jYWxTdG9y
YWdlKG9sZEVwaGVtZXJhbExvY2FsU3RvcmFnZS0+Y29weShuZXdQYWdlKSk7CiAKICAgICByZXR1
cm4gbmV3UGFnZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCA4YmJmZjhiYmE5
NGJkMDAwMDdlNGVkYjg4NDY1ODdkOTJiY2RlMjdkLi5iMTM2OTRhZDZiNTMxNDk4NzNhOTFjNzEx
OTRhZGFlZDA3ZTA2MGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRv
dy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC00NDIsOCAr
NDQyLDcgQEAgdm9pZCBET01XaW5kb3c6OnByZXdhcm1Mb2NhbFN0b3JhZ2VJZk5lY2Vzc2FyeSgp
CiAgICAgaWYgKCFsb2NhbFN0b3JhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChsb2Nh
bFN0b3JhZ2UtPnByZXdhcm0oKSkKLSAgICAgICAgcGFnZS0+bWFpbkZyYW1lKCkuZGlkUHJld2Fy
bUxvY2FsU3RvcmFnZSgpOworICAgIHBhZ2UtPm1haW5GcmFtZSgpLmRpZFByZXdhcm1Mb2NhbFN0
b3JhZ2UoKTsKIH0KIAogRE9NV2luZG93Ojp+RE9NV2luZG93KCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmlu
ZGV4IGVkYTdjNWZhNWQ2NDc5YmE3MTA5MDIwYjUyODMyY2UyNjFiY2Q3ZTkuLjlkMmU5NDdkYTk1
ZDYzOGFjNzI3ZWExNTczOTM2ZTA5NzA4NTliM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMTUx
MCwxOSArMTUxMCw2IEBAIHZvaWQgUGFnZTo6c2V0U2Vzc2lvblN0b3JhZ2UoUmVmUHRyPFN0b3Jh
Z2VOYW1lc3BhY2U+JiYgbmV3U3RvcmFnZSkKICAgICBtX3Nlc3Npb25TdG9yYWdlID0gV1RGTW92
ZShuZXdTdG9yYWdlKTsKIH0KIAotU3RvcmFnZU5hbWVzcGFjZSogUGFnZTo6ZXBoZW1lcmFsTG9j
YWxTdG9yYWdlKGJvb2wgb3B0aW9uYWxDcmVhdGUpCi17Ci0gICAgaWYgKCFtX2VwaGVtZXJhbExv
Y2FsU3RvcmFnZSAmJiBvcHRpb25hbENyZWF0ZSkKLSAgICAgICAgbV9lcGhlbWVyYWxMb2NhbFN0
b3JhZ2UgPSBtX3N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci0+Y3JlYXRlRXBoZW1lcmFsTG9jYWxT
dG9yYWdlTmFtZXNwYWNlKCp0aGlzLCBtX3NldHRpbmdzLT5zZXNzaW9uU3RvcmFnZVF1b3RhKCkp
OwotCi0gICAgcmV0dXJuIG1fZXBoZW1lcmFsTG9jYWxTdG9yYWdlLmdldCgpOwotfQotCi12b2lk
IFBhZ2U6OnNldEVwaGVtZXJhbExvY2FsU3RvcmFnZShSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4m
JiBuZXdTdG9yYWdlKQotewotICAgIG1fZXBoZW1lcmFsTG9jYWxTdG9yYWdlID0gV1RGTW92ZShu
ZXdTdG9yYWdlKTsKLX0KLQogYm9vbCBQYWdlOjpoYXNDdXN0b21IVE1MVG9rZW5pemVyVGltZURl
bGF5KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9zZXR0aW5ncy0+bWF4UGFyc2VEdXJhdGlvbigp
ICE9IC0xOwpAQCAtMjUwNyw2ICsyNDk0LDkgQEAgdm9pZCBQYWdlOjpzZXRTZXNzaW9uSUQoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgICAgICBtX2lkYkNvbm5lY3Rpb25Ub1NlcnZlciA9
IG51bGxwdHI7CiAjZW5kaWYKIAorICAgIGlmIChzZXNzaW9uSUQgIT0gbV9zZXNzaW9uSUQgJiYg
bV9zZXNzaW9uU3RvcmFnZSkKKyAgICAgICAgbV9zZXNzaW9uU3RvcmFnZS0+c2V0U2Vzc2lvbklE
Rm9yVGVzdGluZyhzZXNzaW9uSUQpOworCiAgICAgYm9vbCBwcml2YXRlQnJvd3NpbmdTdGF0ZUNo
YW5nZWQgPSAoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkgIT0gbV9zZXNzaW9uSUQuaXNFcGhlbWVy
YWwoKSk7CiAKICAgICBtX3Nlc3Npb25JRCA9IHNlc3Npb25JRDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXgg
YzQ0MDIzNDQzYzg1NmRhMjJiMGU0MTlmOGZjNWYyNjUyZjg2MmZlNy4uYTE4NDEyYTMzNzdlNDFk
YzBkNjEzNWVmMTRmOWIxODljNmVkYWQxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTUwNyw5ICs1MDcs
NiBAQCBwdWJsaWM6CiAgICAgU3RvcmFnZU5hbWVzcGFjZSogc2Vzc2lvblN0b3JhZ2UoYm9vbCBv
cHRpb25hbENyZWF0ZSA9IHRydWUpOwogICAgIHZvaWQgc2V0U2Vzc2lvblN0b3JhZ2UoUmVmUHRy
PFN0b3JhZ2VOYW1lc3BhY2U+JiYpOwogCi0gICAgU3RvcmFnZU5hbWVzcGFjZSogZXBoZW1lcmFs
TG9jYWxTdG9yYWdlKGJvb2wgb3B0aW9uYWxDcmVhdGUgPSB0cnVlKTsKLSAgICB2b2lkIHNldEVw
aGVtZXJhbExvY2FsU3RvcmFnZShSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4mJik7Ci0KICAgICBi
b29sIGhhc0N1c3RvbUhUTUxUb2tlbml6ZXJUaW1lRGVsYXkoKSBjb25zdDsKICAgICBkb3VibGUg
Y3VzdG9tSFRNTFRva2VuaXplclRpbWVEZWxheSgpIGNvbnN0OwogCkBAIC04NzcsNyArODc0LDYg
QEAgcHJpdmF0ZToKICAgICBib29sIG1fY2FuU3RhcnRNZWRpYSB7IHRydWUgfTsKIAogICAgIFJl
ZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBtX3Nlc3Npb25TdG9yYWdlOwotICAgIFJlZlB0cjxTdG9y
YWdlTmFtZXNwYWNlPiBtX2VwaGVtZXJhbExvY2FsU3RvcmFnZTsKIAogICAgIFRpbWVyVGhyb3R0
bGluZ1N0YXRlIG1fdGltZXJUaHJvdHRsaW5nU3RhdGUgeyBUaW1lclRocm90dGxpbmdTdGF0ZTo6
RGlzYWJsZWQgfTsKICAgICBNb25vdG9uaWNUaW1lIG1fdGltZXJUaHJvdHRsaW5nU3RhdGVMYXN0
Q2hhbmdlZFRpbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuaAppbmRleCA2YmFmMGExYWIxM2M5ZTJm
MmVmNTJmMmMxZTQwMWYzMjUwY2ZiMDlmLi5kNDFlYzQzOTBlZDJlNzk0NmZjZWEyN2Q3MWM1NzNj
OTYwZDhmNDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmgKQEAgLTU5LDYgKzU5LDcgQEAgcHVi
bGljOgogI2VuZGlmCiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVuYWJsZUxlZ2FjeVByaXZh
dGVCcm93c2luZ0ZvclRlc3RpbmcoYm9vbCk7CisgICAgYm9vbCBpc0xlZ2FjeVByaXZhdGVCcm93
c2luZ0VuYWJsZWRGb3JUZXN0aW5nKCkgeyByZXR1cm4gbV9pc0xlZ2FjeVByaXZhdGVCcm93c2lu
Z0VuYWJsZWRGb3JUZXN0aW5nOyB9CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fbmFtZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL1N0b3JhZ2UuY3BwCmluZGV4IDkxOTdiNjBlN2U2YTE1NWM0NDY4ZDUyOTRm
YWIyNTBjODY3OTg3ZmYuLjQ3ZGJiMTdkOWFlNmQyNjljMTQ3MDNhMWE2MmE0OTJlZTY2ZGY0MTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmNwcApAQCAtOTcsMTEgKzk3LDYgQEAgRXhjZXB0
aW9uT3I8dm9pZD4gU3RvcmFnZTo6cmVtb3ZlSXRlbShjb25zdCBTdHJpbmcmIGtleSkKICAgICBy
ZXR1cm4geyB9OwogfQogCi1ib29sIFN0b3JhZ2U6OnByZXdhcm0oKQotewotICAgIHJldHVybiBt
X3N0b3JhZ2VBcmVhLT5wcmV3YXJtKCk7Ci19Ci0KIEV4Y2VwdGlvbk9yPHZvaWQ+IFN0b3JhZ2U6
OmNsZWFyKCkKIHsKICAgICBhdXRvKiBmcmFtZSA9IHRoaXMtPmZyYW1lKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvU3RvcmFnZS5oCmluZGV4IDUyMTVmNDdjMzc3ZmY3NTY0ZGFhMWU0NmVlZjc5NDRkMzA4NWY2
MTEuLjI4YWE5YWIxNGUxYjIyYWNjNWJjNWI0ZjZlMWM4NGMxYTk3NGY2NjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvU3RvcmFnZS5oCkBAIC00Niw3ICs0Niw2IEBAIHB1YmxpYzoKICAgICBFeGNlcHRpb25P
cjx2b2lkPiByZW1vdmVJdGVtKGNvbnN0IFN0cmluZyYga2V5KTsKICAgICBFeGNlcHRpb25Pcjx2
b2lkPiBjbGVhcigpOwogICAgIGJvb2wgY29udGFpbnMoY29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0
OwotICAgIGJvb2wgcHJld2FybSgpOwogCiAgICAgLy8gQmluZGluZ3Mgc3VwcG9ydCBmdW5jdGlv
bnMuCiAgICAgYm9vbCBpc1N1cHBvcnRlZFByb3BlcnR5TmFtZShjb25zdCBTdHJpbmcmKSBjb25z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWEuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWEuaAppbmRleCBmMzljY2Q3ZTZkYWNkZmY1
NmFlN2RmNjYwZGQ5N2I1ZmY1MjY0NmQ0Li45NzMyYjY2YzdhZjg1NWFmOGVmM2ZhNjdjYzBjYWQ5
NDkwYjg2NDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYS5oCkBAIC01OCw3ICs1
OCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgaW5jcmVtZW50QWNjZXNzQ291bnQoKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgZGVjcmVtZW50QWNjZXNzQ291bnQoKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgY2xvc2VEYXRhYmFzZUlmSWRsZSgpIHsgfQotICAgIHZpcnR1YWwgYm9vbCBwcmV3
YXJtKCkgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZpcnR1YWwgY29uc3QgU2VjdXJpdHlPcmln
aW5EYXRhJiBzZWN1cml0eU9yaWdpbigpIGNvbnN0ID0gMDsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZS5oCmluZGV4IDU1YzY2MjgyYjhiZDY4YmMwNDc4MmRmNDdj
YWRlZDBjMjEyOTRiNDguLjc1YjhiMDVhYzEwNGJhYjM4YjVhMjQzOWMzNGM2OTFiMzZkNzBiYTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZS5oCkBAIC0yOCw2ICsy
OCwxMCBAQAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KIAorbmFtZXNwYWNlIFBBTCB7CitjbGFzcyBTZXNzaW9uSUQ7Cit9CisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgUGFnZTsKQEAgLTM5LDYgKzQzLDkgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgflN0b3JhZ2VOYW1lc3BhY2UoKSA9IGRlZmF1bHQ7CiAgICAgdmlydHVhbCBSZWY8
U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYpID0gMDsK
ICAgICB2aXJ0dWFsIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjb3B5KFBhZ2UqIG5ld1BhZ2UpID0g
MDsKKworICAgIHZpcnR1YWwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRTZXNzaW9uSURGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEKSA9
IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKaW5kZXggNTkzOWFmZmQzZWIy
ZjhlZWQ0NmJmNjJiYWI0YjE1YWViNWU5NWVkZi4uNmQxMDRlYmVmZWI4MzAzYTlhOGEwNzhmOWU1
OWU2MGJiZWRkZmYxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdl
TmFtZXNwYWNlUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyLmNwcApAQCAtNjYsMzYgKzY2LDQyIEBAIFJlZjxTdG9yYWdlQXJl
YT4gU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpsb2NhbFN0b3JhZ2VBcmVhKERvY3VtZW50JiBk
b2N1bWVudCkKICAgICAvLyBzbyB0aGUgRG9jdW1lbnQgaGFkIGJldHRlciBzdGlsbCBhY3R1YWxs
eSBoYXZlIGEgUGFnZS4KICAgICBBU1NFUlQoZG9jdW1lbnQucGFnZSgpKTsKIAotICAgIGJvb2wg
ZXBoZW1lcmFsID0gZG9jdW1lbnQucGFnZSgpLT51c2VzRXBoZW1lcmFsU2Vzc2lvbigpOwogICAg
IGJvb2wgdHJhbnNpZW50ID0gIWRvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCkuY2FuQWNjZXNzTG9j
YWxTdG9yYWdlKCZkb2N1bWVudC50b3BPcmlnaW4oKSk7CiAKICAgICBSZWZQdHI8U3RvcmFnZU5h
bWVzcGFjZT4gc3RvcmFnZU5hbWVzcGFjZTsKIAogICAgIGlmICh0cmFuc2llbnQpCi0gICAgICAg
IHN0b3JhZ2VOYW1lc3BhY2UgPSAmdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKGRvY3Vt
ZW50LnRvcE9yaWdpbigpKTsKLSAgICBlbHNlIGlmIChlcGhlbWVyYWwpCi0gICAgICAgIHN0b3Jh
Z2VOYW1lc3BhY2UgPSBkb2N1bWVudC5wYWdlKCktPmVwaGVtZXJhbExvY2FsU3RvcmFnZSgpOwor
ICAgICAgICBzdG9yYWdlTmFtZXNwYWNlID0gJnRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFj
ZShkb2N1bWVudC50b3BPcmlnaW4oKSwgZG9jdW1lbnQucGFnZSgpLT5zZXNzaW9uSUQoKSk7CiAg
ICAgZWxzZQotICAgICAgICBzdG9yYWdlTmFtZXNwYWNlID0gJmxvY2FsU3RvcmFnZU5hbWVzcGFj
ZSgpOworICAgICAgICBzdG9yYWdlTmFtZXNwYWNlID0gJmxvY2FsU3RvcmFnZU5hbWVzcGFjZShk
b2N1bWVudC5wYWdlKCktPnNlc3Npb25JRCgpKTsKIAogICAgIHJldHVybiBzdG9yYWdlTmFtZXNw
YWNlLT5zdG9yYWdlQXJlYShkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSk7CiB9CiAK
LVN0b3JhZ2VOYW1lc3BhY2UmIFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6bG9jYWxTdG9yYWdl
TmFtZXNwYWNlKCkKK1N0b3JhZ2VOYW1lc3BhY2UmIFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6
bG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICBp
ZiAoIW1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlKQotICAgICAgICBtX2xvY2FsU3RvcmFnZU5hbWVz
cGFjZSA9IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZShsb2NhbFN0b3JhZ2VEYXRhYmFzZVF1
b3RhSW5CeXRlcyk7CisgICAgICAgIG1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlID0gY3JlYXRlTG9j
YWxTdG9yYWdlTmFtZXNwYWNlKGxvY2FsU3RvcmFnZURhdGFiYXNlUXVvdGFJbkJ5dGVzLCBzZXNz
aW9uSUQpOwogCisgICAgQVNTRVJUKG1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlLT5zZXNzaW9uSUQo
KSA9PSBzZXNzaW9uSUQpOwogICAgIHJldHVybiAqbV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2U7CiB9
CiAKLVN0b3JhZ2VOYW1lc3BhY2UmIFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6dHJhbnNpZW50
TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFNlY3VyaXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbikKK1N0
b3JhZ2VOYW1lc3BhY2UmIFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6dHJhbnNpZW50TG9jYWxT
dG9yYWdlTmFtZXNwYWNlKFNlY3VyaXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbiwgUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklEKQogewogICAgIGF1dG8mIHNsb3QgPSBtX3RyYW5zaWVudExvY2FsU3Rv
cmFnZU1hcC5hZGQoJnNlY3VyaXR5T3JpZ2luLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAg
ICAgaWYgKCFzbG90KQotICAgICAgICBzbG90ID0gY3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdl
TmFtZXNwYWNlKHNlY3VyaXR5T3JpZ2luLCBsb2NhbFN0b3JhZ2VEYXRhYmFzZVF1b3RhSW5CeXRl
cyk7CisgICAgICAgIHNsb3QgPSBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2Uo
c2VjdXJpdHlPcmlnaW4sIGxvY2FsU3RvcmFnZURhdGFiYXNlUXVvdGFJbkJ5dGVzLCBzZXNzaW9u
SUQpOwogCisgICAgQVNTRVJUKHNsb3QtPnNlc3Npb25JRCgpID09IHNlc3Npb25JRCk7CiAgICAg
cmV0dXJuICpzbG90OwogfQogCit2b2lkIFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6ZW5hYmxl
TGVnYWN5UHJpdmF0ZUJyb3dzaW5nRm9yVGVzdGluZyhib29sIGVuYWJsZWQpCit7CisgICAgYXV0
byBuZXdTZXNzaW9uSUQgPSBlbmFibGVkID8gUEFMOjpTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVT
ZXNzaW9uSUQoKSA6IFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCk7CisgICAgaWYg
KG1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlICYmIG5ld1Nlc3Npb25JRCAhPSBtX2xvY2FsU3RvcmFn
ZU5hbWVzcGFjZS0+c2Vzc2lvbklEKCkpCisgICAgICAgIG1fbG9jYWxTdG9yYWdlTmFtZXNwYWNl
LT5zZXRTZXNzaW9uSURGb3JUZXN0aW5nKG5ld1Nlc3Npb25JRCk7Cit9CisKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oCmluZGV4IGRk
N2Y5YTQ2YmQ4NDc5MjQ5Yzc0ZDJhNGMyMjQ1Mjk2NGU2N2FlY2QuLjY3NTE1OTgzZWNjMDFkNDg4
NDA1ZDliNWZlYThjOTA1MWMwYjU0OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaApAQCAtMzEsNiArMzEsMTAgQEAKICNpbmNsdWRl
IDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKK25hbWVzcGFj
ZSBQQUwgeworY2xhc3MgU2Vzc2lvbklEOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIERvY3VtZW50OwpAQCAtNDUsMjIgKzQ5LDIzIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VY
UE9SVCB2aXJ0dWFsIH5TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIoKTsKIAogICAgIHZpcnR1YWwg
UmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFBhZ2Um
LCB1bnNpZ25lZCBxdW90YSkgPSAwOwotICAgIHZpcnR1YWwgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+
IGNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQgcXVv
dGEpID0gMDsKIAogICAgIFJlZjxTdG9yYWdlQXJlYT4gbG9jYWxTdG9yYWdlQXJlYShEb2N1bWVu
dCYpOwogCiAgICAgdm9pZCBhZGRQYWdlKFBhZ2UmKTsKICAgICB2b2lkIHJlbW92ZVBhZ2UoUGFn
ZSYpOwogCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlbmFibGVMZWdhY3lQcml2YXRlQnJvd3Np
bmdGb3JUZXN0aW5nKGJvb2wgZW5hYmxlZCk7CisKIHByb3RlY3RlZDoKICAgICBTdG9yYWdlTmFt
ZXNwYWNlKiBvcHRpb25hbExvY2FsU3RvcmFnZU5hbWVzcGFjZSgpIHsgcmV0dXJuIG1fbG9jYWxT
dG9yYWdlTmFtZXNwYWNlLmdldCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgU3RvcmFnZU5hbWVzcGFj
ZSYgbG9jYWxTdG9yYWdlTmFtZXNwYWNlKCk7Ci0gICAgU3RvcmFnZU5hbWVzcGFjZSYgdHJhbnNp
ZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFNlY3VyaXR5T3JpZ2luJik7CisgICAgU3RvcmFnZU5h
bWVzcGFjZSYgbG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBBTDo6U2Vzc2lvbklEKTsKKyAgICBTdG9y
YWdlTmFtZXNwYWNlJiB0cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoU2VjdXJpdHlPcmln
aW4mLCBQQUw6OlNlc3Npb25JRCk7CiAKLSAgICB2aXJ0dWFsIFJlZjxTdG9yYWdlTmFtZXNwYWNl
PiBjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEpID0gMDsKLSAgICB2
aXJ0dWFsIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VO
YW1lc3BhY2UoU2VjdXJpdHlPcmlnaW4mLCB1bnNpZ25lZCBxdW90YSkgPSAwOworICAgIHZpcnR1
YWwgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNp
Z25lZCBxdW90YSwgUEFMOjpTZXNzaW9uSUQpID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxTdG9yYWdl
TmFtZXNwYWNlPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoU2VjdXJpdHlP
cmlnaW4mLCB1bnNpZ25lZCBxdW90YSwgUEFMOjpTZXNzaW9uSUQpID0gMDsKIAogICAgIEhhc2hT
ZXQ8UGFnZSo+IG1fcGFnZXM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
U3RvcmFnZVR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZVR5cGUuaAppbmRl
eCA1ODEzM2Y4OWNjYTcxZGMzNTBlZjcyODVhNzBhNzMwYTI5NjJhNmUyLi5mZTcwMDI1N2JhY2I0
OWFmZGRmZjQ1NjQyYTYzZDQyOGQ3NDBmODljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL1N0b3JhZ2VUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdl
VHlwZS5oCkBAIC0zMCwxMyArMzAsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogZW51bSBjbGFz
cyBTdG9yYWdlVHlwZSB7CiAgICAgU2Vzc2lvbiwKICAgICBMb2NhbCwKLSAgICBFcGhlbWVyYWxM
b2NhbCwKICAgICBUcmFuc2llbnRMb2NhbCwKIH07CiAKIGlubGluZSBib29sIGlzTG9jYWxTdG9y
YWdlKFN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlKQogewotICAgIHJldHVybiBzdG9yYWdlVHlwZSA9
PSBTdG9yYWdlVHlwZTo6TG9jYWwgfHwgc3RvcmFnZVR5cGUgPT0gU3RvcmFnZVR5cGU6OlRyYW5z
aWVudExvY2FsIHx8IHN0b3JhZ2VUeXBlID09IFN0b3JhZ2VUeXBlOjpFcGhlbWVyYWxMb2NhbDsK
KyAgICByZXR1cm4gc3RvcmFnZVR5cGUgPT0gU3RvcmFnZVR5cGU6OkxvY2FsIHx8IHN0b3JhZ2VU
eXBlID09IFN0b3JhZ2VUeXBlOjpUcmFuc2llbnRMb2NhbDsKIH0KIAogaW5saW5lIGJvb2wgaXNQ
ZXJzaXN0ZW50TG9jYWxTdG9yYWdlKFN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0
cy50eHQKaW5kZXggNmY3OWM4NjQ3YTYxMmRjMDRhMDJhYWM4MjNkNzQ5NTg0NGQ0YzkyMS4uZDg4
YWE4M2IyYTU0ZmYyYTg0MmEyYTVmYzU0NmQ4NzE0ODU1MmFiOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0
CkBAIC0xMTgsNyArMTE4LDcgQEAgc2V0KFdlYktpdF9NRVNTQUdFU19JTl9GSUxFUwogICAgIE5l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluCiAgICAgTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KIAotICAgIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2Uv
U3RvcmFnZU1hbmFnZXIubWVzc2FnZXMuaW4KKyAgICBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdl
L1N0b3JhZ2VNYW5hZ2VyU2V0Lm1lc3NhZ2VzLmluCiAKICAgICBOZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9X
ZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCAwZmI4NDIzYjVjY2Nm
N2QyNjMzOTQyNWNkN2E3M2Y0YjJjMGQyZTg5Li5lZWVmMzAyYmM0ZDczMDcwODhjNDQ5YTI3Yzdh
NDI3YTA0YjAxZWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlu
cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54
Y2ZpbGVsaXN0CkBAIC0yNiw2ICsyNiw3IEBAICQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5tZXNzYWdlcy5pbgogJChQUk9K
RUNUX0RJUikvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rp
b24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1Rf
RElSKS9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLm1lc3NhZ2VzLmlu
CiskKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2Vy
U2V0Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9OZXR3
b3JrUHJvY2Vzcy9tYWMvY29tLmFwcGxlLldlYktpdC5OZXR3b3JrUHJvY2Vzcy5zYi5pbgogJChQ
Uk9KRUNUX0RJUikvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIubWVz
c2FnZXMuaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0
LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVs
aXN0CmluZGV4IGZlMGE2YzAwNDAyYzUzNTU0MDU0NTE0OTFkNGQ4ZGY3NDQ3M2M3OTMuLjM1Y2Rj
NTJhMjBmNmQ3YjcyZjM1ZmZiODNmYmIyY2NlZDExODhhZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktp
dC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtOTAsNiArOTAsOCBAQCAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9TdG9yYWdlQXJlYU1hcE1l
c3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJLaXQyL1N0b3JhZ2VBcmVhTWFwTWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdDIvU3RvcmFnZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9TdG9yYWdlTWFuYWdl
ck1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQy
L1N0b3JhZ2VNYW5hZ2VyU2V0TWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvU3RvcmFnZU1hbmFnZXJTZXRNZXNzYWdlcy5oCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9UZXh0Q2hlY2tpbmdD
b250cm9sbGVyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9UZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHlNZXNzYWdl
cy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9Vc2VyTWVk
aWFDYXB0dXJlTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMu
bWFrZQppbmRleCA1MzkzYzViZDdmMDk3OTQ1MDAyZjEwMzIyZWZjZTA1MzE2MzJjM2ZmLi45ZGU3
MDQyNjZhZmVlNTEzNmU2NWU4NDc4MWI1YTAyNTI1MTU3YWM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291
cmNlcy5tYWtlCkBAIC0xMzYsNyArMTM2LDcgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAgICAg
U2VydmljZVdvcmtlckZldGNoVGFzayBcCiAgICAgU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxl
ciBcCiAgICAgU3RvcmFnZUFyZWFNYXAgXAotICAgIFN0b3JhZ2VNYW5hZ2VyIFwKKyAgICBTdG9y
YWdlTWFuYWdlclNldCBcCiAgICAgVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5IFwKICAgICBV
c2VyTWVkaWFDYXB0dXJlTWFuYWdlciBcCiAgICAgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94
eSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDliMWI5Yjg2MDQzOGQ5YjZhM2Yx
MjY4OTE0NjJiMzM2YmM1OWZjNGQuLmIyNmY2ZjBhZWE1NDMwZDEwODQyZDljMjQ3MDM3YmI3ZjQw
NDZkZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC00OSw3ICs0OSw2IEBACiAj
aW5jbHVkZSAiUGluZ0xvYWQuaCIKICNpbmNsdWRlICJQcmVjb25uZWN0VGFzay5oIgogI2luY2x1
ZGUgIlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tNZXNzYWdlcy5oIgotI2luY2x1ZGUgIlN0b3JhZ2VN
YW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAi
V2ViRXJyb3JzLmgiCiAjaW5jbHVkZSAiV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50LmgiCkBAIC0y
OTksNyArMjk4LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkQ2xv
c2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogICAgIC8vIHJvb3QgYWN0aXZpdHkgdHJh
Y2tlcnMuCiAgICAgc3RvcEFsbE5ldHdvcmtBY3Rpdml0eVRyYWNraW5nKCk7CiAKLSAgICBtX25l
dHdvcmtQcm9jZXNzLT53ZWJQcm9jZXNzV2FzRGlzY29ubmVjdGVkKGNvbm5lY3Rpb24pOworICAg
IG1fbmV0d29ya1Byb2Nlc3MtPmNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NDbG9zZWQoY29ubmVjdGlv
bik7CiAKICAgICBtX25ldHdvcmtQcm9jZXNzLT5uZXR3b3JrQmxvYlJlZ2lzdHJ5KCkuY29ubmVj
dGlvblRvV2ViUHJvY2Vzc0RpZENsb3NlKCp0aGlzKTsKICAgICBtX25ldHdvcmtQcm9jZXNzLT5y
ZW1vdmVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcygqdGhpcyk7CkBAIC04OTEsMTkgKzg5
MCw0IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaFNXU2Vy
dmVyQ29ubmVjdGlvbihQQUw6OlNlc3Npb25JRCBzCiB9CiAjZW5kaWYKIAotdm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6d2ViUGFnZVdhc0FkZGVkKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBv
bGRQYWdlSUQpCi17Ci0gICAgbV9uZXR3b3JrUHJvY2Vzcy0+d2ViUGFnZVdhc0FkZGVkKG1fY29u
bmVjdGlvbi5nZXQoKSwgc2Vzc2lvbklELCBwYWdlSUQsIG9sZFBhZ2VJRCk7Ci19Ci0KLXZvaWQg
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OndlYlBhZ2VXYXNSZW1vdmVkKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQotewotICAgIG1fbmV0d29y
a1Byb2Nlc3MtPndlYlBhZ2VXYXNSZW1vdmVkKG1fY29ubmVjdGlvbi5nZXQoKSwgc2Vzc2lvbklE
LCBwYWdlSUQpOwotfQotCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp3ZWJQ
cm9jZXNzU2Vzc2lvbkNoYW5nZWQoUEFMOjpTZXNzaW9uSUQgbmV3U2Vzc2lvbklELCBjb25zdCBW
ZWN0b3I8UGFnZUlkZW50aWZpZXI+JiBwYWdlcykKLXsKLSAgICBtX25ldHdvcmtQcm9jZXNzLT53
ZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQobV9jb25uZWN0aW9uLmdldCgpLCBuZXdTZXNzaW9uSUQs
IHBhZ2VzKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmgKaW5kZXggZDdiMmYxYjYzYmM3YjA0ZmUwMzBlMDM2NWUyMTM2Zjc1YWI0OGNlNi4uNTYxMmVm
ZDFhY2YyNjlhZTE5MmViOTQ4Y2U0Yjk2ZDVmODQ0Nzc4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaApAQCAtMTQyLDEwICsxNDIsNiBAQCBwdWJsaWM6CiAgICAgVmVjdG9yPFJlZlB0cjxXZWJD
b3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBmaWxlc0luQmxvYihjb25zdCBVUkwmKTsKICAg
ICBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+IHJlc29sdmVC
bG9iUmVmZXJlbmNlcyhjb25zdCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYpOwogCi0g
ICAgdm9pZCB3ZWJQYWdlV2FzQWRkZWQoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBvbGRQYWdlSUQpOwotICAgIHZvaWQgd2Vi
UGFnZVdhc1JlbW92ZWQoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsK
LSAgICB2b2lkIHdlYlByb2Nlc3NTZXNzaW9uQ2hhbmdlZChQQUw6OlNlc3Npb25JRCBuZXdTZXNz
aW9uSUQsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4mIHBhZ2VzKTsKLQog
ICAgIHZvaWQgcmVtb3ZlU29ja2V0Q2hhbm5lbCh1aW50NjRfdCBpZGVudGlmaWVyKTsKIAogcHJp
dmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGZh
MmMzMWE0MTNhZjYyMTk0OTNjZDRjZWEyYmM3YzRhZmE5MjA1OTAuLjc1ZTI0ZGRhOGUzODQ0Y2U3
OGU2MWQzMmM4OTkwNjk5NjNlYjY5MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbgpAQCAtODYsOCArODYsNCBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQogICAgIEVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbihQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQpIC0+IChXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIHNlcnZlckNv
bm5lY3Rpb25JZGVudGlmaWVyKSBTeW5jaHJvbm91cwogI2VuZGlmCi0KLSAgICBXZWJQYWdlV2Fz
QWRkZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBw
YWdlSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG9sZFBhZ2VJRCkKLSAgICBXZWJQYWdlV2Fz
UmVtb3ZlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
IHBhZ2VJRCkKLSAgICBXZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQoUEFMOjpTZXNzaW9uSUQgbmV3
U2Vzc2lvbklELCBWZWN0b3I8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VzKQogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCBh
Y2Q5NTUxYzdkMGU0Y2NmYzk1Y2IwZGRmODdlNGY2OGMwZDY3N2RmLi4yN2QyNzNhNGMyNDFlNTE1
NTcyNjhkMTkzMmFmMTkyNzU0ZDk3MzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtNTMsOCArNTMsNyBAQAogI2luY2x1ZGUgIlNo
b3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcy5oIgogI2luY2x1ZGUgIlN0YXRpc3RpY3NEYXRhLmgi
CiAjaW5jbHVkZSAiU3RvcmFnZUFjY2Vzc1N0YXR1cy5oIgotI2luY2x1ZGUgIlN0b3JhZ2VNYW5h
Z2VyLmgiCi0jaW5jbHVkZSAiU3RvcmFnZU1hbmFnZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlN0
b3JhZ2VNYW5hZ2VyU2V0LmgiCiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlci5oIgogI2luY2x1
ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2xNZXNz
YWdlcy5oIgpAQCAtMTMzLDYgKzEzMiw3IEBAIHN0YXRpYyB2b2lkIGNhbGxFeGl0U29vbihJUEM6
OkNvbm5lY3Rpb24qKQogCiBOZXR3b3JrUHJvY2Vzczo6TmV0d29ya1Byb2Nlc3MoQXV4aWxpYXJ5
UHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgOiBtX2Rv
d25sb2FkTWFuYWdlcigqdGhpcykKKyAgICAsIG1fc3RvcmFnZU1hbmFnZXJTZXQoU3RvcmFnZU1h
bmFnZXJTZXQ6OmNyZWF0ZSgpKQogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCiAgICAg
LCBtX25ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyKCp0aGlzKQogI2VuZGlmCkBAIC0xNzMs
NiArMTczLDggQEAgTmV0d29ya1Byb2Nlc3M6On5OZXR3b3JrUHJvY2VzcygpCiAgICAgICAgIGZv
ciAoYXV0byYgY2FsbGJhY2sgOiBjYWxsYmFja3MpCiAgICAgICAgICAgICBjYWxsYmFjayhTdHJp
bmcgeyB9KTsKICAgICB9CisKKyAgICBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT53YWl0VW50aWxUYXNr
c0ZpbmlzaGVkKCk7CiB9CiAKIEF1dGhlbnRpY2F0aW9uTWFuYWdlciYgTmV0d29ya1Byb2Nlc3M6
OmF1dGhlbnRpY2F0aW9uTWFuYWdlcigpCkBAIC0zMTgsNiArMzIwLDEwIEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OmluaXRpYWxpemVOZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycyYmCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KHBh
cmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0
ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogCiAg
ICAgYXV0byBzZXNzaW9uSUQgPSBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJz
Lm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5zZXNzaW9uSUQ7CisgICAgCisgICAgU2FuZGJveEV4
dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBh
cmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBtX3N0
b3JhZ2VNYW5hZ2VyU2V0LT5hZGQoc2Vzc2lvbklELCBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3Rv
cmVQYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeSk7CisKICAgICBzZXRTZXNzaW9uKHNl
c3Npb25JRCwgTmV0d29ya1Nlc3Npb246OmNyZWF0ZSgqdGhpcywgV1RGTW92ZShwYXJhbWV0ZXJz
LmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycykpKTsK
IAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpAQCAtNDQ3LDYgKzQ1Myw4IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKGJvb2wg
aXNTZXJ2aWNlV29ya2VyUHJvCiAgICAgVU5VU0VEX1BBUkFNKGlzU2VydmljZVdvcmtlclByb2Nl
c3MpOwogICAgIFVOVVNFRF9QQVJBTShyZWdpc3RyYWJsZURvbWFpbik7CiAjZW5kaWYKKworICAg
IG1fc3RvcmFnZU1hbmFnZXJTZXQtPmFkZENvbm5lY3Rpb24obV93ZWJQcm9jZXNzQ29ubmVjdGlv
bnMubGFzdCgpLT5jb25uZWN0aW9uKCkpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVh
ckNhY2hlZENyZWRlbnRpYWxzKCkKQEAgLTQ3NSw2ICs0ODMsOSBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjphZGRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJiYgcGFy
YW1ldGVycwogICAgICAgICBhZGRTZXJ2aWNlV29ya2VyU2Vzc2lvbihwYXJhbWV0ZXJzLm5ldHdv
cmtTZXNzaW9uUGFyYW1ldGVycy5zZXNzaW9uSUQsIHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbkRpcmVjdG9yeSwgcGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
RGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKICNlbmRpZgogCisgICAgU2FuZGJveEV4dGVuc2lv
bjo6Y29uc3VtZVBlcm1hbmVudGx5KHBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0
ZW5zaW9uSGFuZGxlKTsKKyAgICBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5hZGQocGFyYW1ldGVycy5u
ZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuc2Vzc2lvbklELCBwYXJhbWV0ZXJzLmxvY2FsU3RvcmFn
ZURpcmVjdG9yeSk7CisKICAgICBpbml0aWFsaXplU3RvcmFnZVF1b3RhKHBhcmFtZXRlcnMpOwog
CiAgICAgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVdlYnNpdGVEYXRhU3RvcmVTZXNz
aW9uKCp0aGlzLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKQEAgLTYxNiw2ICs2MjcsOCBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpkZXN0cm95U2Vzc2lvbihjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vz
c2lvbklEKQogI2VuZGlmCiAKICAgICBtX3N0b3JhZ2VRdW90YU1hbmFnZXJzLnJlbW92ZShzZXNz
aW9uSUQpOworCisgICAgbV9zdG9yYWdlTWFuYWdlclNldC0+cmVtb3ZlKHNlc3Npb25JRCk7CiB9
CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQpAQCAtMTA0OCwxNCArMTA2
MSwxMiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVhclVzZXJJbnRlcmFjdGlvbihQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdAogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpo
YXNMb2NhbFN0b3JhZ2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYgZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewotICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vz
c2lvbklEKSkgewotICAgICAgICBzZXNzaW9uLT5zdG9yYWdlTWFuYWdlcigpLmdldExvY2FsU3Rv
cmFnZU9yaWdpbnMoW2RvbWFpbiwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0oYXV0byYmIG9yaWdpbnMpIG11dGFibGUgewotICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoV1RGOjphbnlPZihvcmlnaW5zLCBbJmRvbWFpbl0oYXV0byYgb3JpZ2luKSB7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGRvbWFpbi5tYXRjaGVzKG9yaWdpbik7Ci0gICAgICAg
ICAgICB9KSk7Ci0gICAgICAgIH0pOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIG1fc3Rv
cmFnZU1hbmFnZXJTZXQtPmdldExvY2FsU3RvcmFnZU9yaWdpbnMoc2Vzc2lvbklELCBbZG9tYWlu
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvJiYg
b3JpZ2lucykgbXV0YWJsZSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6YW55T2Yo
b3JpZ2lucywgWyZkb21haW5dKGF1dG8mIG9yaWdpbikgeworICAgICAgICAgICAgcmV0dXJuIGRv
bWFpbi5tYXRjaGVzKG9yaWdpbik7CisgICAgICAgIH0pKTsKKyAgICB9KTsKKwogICAgIGNvbXBs
ZXRpb25IYW5kbGVyKGZhbHNlKTsKIH0KIApAQCAtMTMzMiwxNCArMTM0MywxMyBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpmZXRjaFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
T3B0aW9uU2V0PFdlYnNpdAogCiAgICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNl
c3Npb25JRCk7CiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFU
eXBlOjpTZXNzaW9uU3RvcmFnZSkgJiYgc2Vzc2lvbikgewotICAgICAgICBzZXNzaW9uLT5zdG9y
YWdlTWFuYWdlcigpLmdldFNlc3Npb25TdG9yYWdlT3JpZ2lucyhbY2FsbGJhY2tBZ2dyZWdhdG9y
ID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0oYXV0byYmIG9yaWdpbnMpIHsKKyAgICAg
ICAgbV9zdG9yYWdlTWFuYWdlclNldC0+Z2V0U2Vzc2lvblN0b3JhZ2VPcmlnaW5zKHNlc3Npb25J
RCwgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldKGF1
dG8mJiBvcmlnaW5zKSB7CiAgICAgICAgICAgICB3aGlsZSAoIW9yaWdpbnMuaXNFbXB0eSgpKQog
ICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YS5lbnRyaWVz
LmFwcGVuZChXZWJzaXRlRGF0YTo6RW50cnkgeyBvcmlnaW5zLnRha2VBbnkoKSwgV2Vic2l0ZURh
dGFUeXBlOjpTZXNzaW9uU3RvcmFnZSwgMCB9KTsKICAgICAgICAgfSk7CiAgICAgfQotCiAgICAg
aWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpMb2NhbFN0b3Jh
Z2UpICYmIHNlc3Npb24pIHsKLSAgICAgICAgc2Vzc2lvbi0+c3RvcmFnZU1hbmFnZXIoKS5nZXRM
b2NhbFN0b3JhZ2VPcmlnaW5zKFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0
b3IuY29weVJlZigpXShhdXRvJiYgb3JpZ2lucykgeworICAgICAgICBtX3N0b3JhZ2VNYW5hZ2Vy
U2V0LT5nZXRMb2NhbFN0b3JhZ2VPcmlnaW5zKHNlc3Npb25JRCwgW2NhbGxiYWNrQWdncmVnYXRv
ciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldKGF1dG8mJiBvcmlnaW5zKSB7CiAgICAg
ICAgICAgICB3aGlsZSAoIW9yaWdpbnMuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIGNhbGxi
YWNrQWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVuZChXZWJzaXRlRGF0YTo6
RW50cnkgeyBvcmlnaW5zLnRha2VBbnkoKSwgV2Vic2l0ZURhdGFUeXBlOjpMb2NhbFN0b3JhZ2Us
IDAgfSk7CiAgICAgICAgIH0pOwpAQCAtMTQxNiwxMCArMTQyNiwxMCBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlv
blNldDxXZWJzaQogCiAgICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25J
RCk7CiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpT
ZXNzaW9uU3RvcmFnZSkgJiYgc2Vzc2lvbikKLSAgICAgICAgc2Vzc2lvbi0+c3RvcmFnZU1hbmFn
ZXIoKS5kZWxldGVTZXNzaW9uU3RvcmFnZU9yaWdpbnMoW2NsZWFyVGFza3NIYW5kbGVyID0gY2xl
YXJUYXNrc0hhbmRsZXIuY29weVJlZigpXSB7IH0pOworICAgICAgICBtX3N0b3JhZ2VNYW5hZ2Vy
U2V0LT5kZWxldGVTZXNzaW9uU3RvcmFnZShzZXNzaW9uSUQsIFtjbGVhclRhc2tzSGFuZGxlciA9
IGNsZWFyVGFza3NIYW5kbGVyLmNvcHlSZWYoKV0geyB9KTsKIAogICAgIGlmICh3ZWJzaXRlRGF0
YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6TG9jYWxTdG9yYWdlKSAmJiBzZXNzaW9u
KQotICAgICAgICBzZXNzaW9uLT5zdG9yYWdlTWFuYWdlcigpLmRlbGV0ZUxvY2FsU3RvcmFnZU9y
aWdpbnNNb2RpZmllZFNpbmNlKG1vZGlmaWVkU2luY2UsIFtjbGVhclRhc2tzSGFuZGxlciA9IGNs
ZWFyVGFza3NIYW5kbGVyLmNvcHlSZWYoKV0geyB9KTsKKyAgICAgICAgbV9zdG9yYWdlTWFuYWdl
clNldC0+ZGVsZXRlTG9jYWxTdG9yYWdlTW9kaWZpZWRTaW5jZShzZXNzaW9uSUQsIG1vZGlmaWVk
U2luY2UsIFtjbGVhclRhc2tzSGFuZGxlciA9IGNsZWFyVGFza3NIYW5kbGVyLmNvcHlSZWYoKV0g
eyB9KTsKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogICAgIGlmICh3ZWJzaXRlRGF0
YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKSAmJiAh
c2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCkBAIC0xNTE2LDEwICsxNTI2LDEwIEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIE9wdGlvCiAKICAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vz
c2lvbklEKTsKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5
cGU6OlNlc3Npb25TdG9yYWdlKSAmJiBzZXNzaW9uKQotICAgICAgICBzZXNzaW9uLT5zdG9yYWdl
TWFuYWdlcigpLmRlbGV0ZVNlc3Npb25TdG9yYWdlRW50cmllc0Zvck9yaWdpbnMob3JpZ2luRGF0
YXMsIFtjbGVhclRhc2tzSGFuZGxlciA9IGNsZWFyVGFza3NIYW5kbGVyLmNvcHlSZWYoKV0geyB9
KTsKKyAgICAgICAgbV9zdG9yYWdlTWFuYWdlclNldC0+ZGVsZXRlU2Vzc2lvblN0b3JhZ2VGb3JP
cmlnaW5zKHNlc3Npb25JRCwgb3JpZ2luRGF0YXMsIFtjbGVhclRhc2tzSGFuZGxlciA9IGNsZWFy
VGFza3NIYW5kbGVyLmNvcHlSZWYoKV0geyB9KTsKIAogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVz
LmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6TG9jYWxTdG9yYWdlKSAmJiBzZXNzaW9uKQotICAg
ICAgICBzZXNzaW9uLT5zdG9yYWdlTWFuYWdlcigpLmRlbGV0ZUxvY2FsU3RvcmFnZUVudHJpZXNG
b3JPcmlnaW5zKG9yaWdpbkRhdGFzLCBbY2xlYXJUYXNrc0hhbmRsZXIgPSBjbGVhclRhc2tzSGFu
ZGxlci5jb3B5UmVmKCldIHsgfSk7CisgICAgICAgIG1fc3RvcmFnZU1hbmFnZXJTZXQtPmRlbGV0
ZUxvY2FsU3RvcmFnZUZvck9yaWdpbnMoc2Vzc2lvbklELCBvcmlnaW5EYXRhcywgW2NsZWFyVGFz
a3NIYW5kbGVyID0gY2xlYXJUYXNrc0hhbmRsZXIuY29weVJlZigpXSB7IH0pOwogCiAjaWYgRU5B
QkxFKElOREVYRURfREFUQUJBU0UpCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMo
V2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpICYmICFzZXNzaW9uSUQuaXNFcGhl
bWVyYWwoKSkKQEAgLTE3MTgsMTggKzE3MjgsMTcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVs
ZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2kK
IAogICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOwogICAgIGlm
IChzZXNzaW9uKSB7Ci0gICAgICAgIGF1dG8mIHN0b3JhZ2VNYW5hZ2VyID0gc2Vzc2lvbi0+c3Rv
cmFnZU1hbmFnZXIoKTsKICAgICAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vi
c2l0ZURhdGFUeXBlOjpTZXNzaW9uU3RvcmFnZSkpIHsKLSAgICAgICAgICAgIHN0b3JhZ2VNYW5h
Z2VyLmdldFNlc3Npb25TdG9yYWdlT3JpZ2lucyhbc3RvcmFnZU1hbmFnZXIgPSBtYWtlUmVmUHRy
KHN0b3JhZ2VNYW5hZ2VyKSwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9y
LmNvcHlSZWYoKSwgZG9tYWluc1RvRGVsZXRlQWxsQnV0Q29va2llc0Zvcl0oYXV0byYmIG9yaWdp
bnMpIHsKKyAgICAgICAgICAgIG1fc3RvcmFnZU1hbmFnZXJTZXQtPmdldFNlc3Npb25TdG9yYWdl
T3JpZ2lucyhzZXNzaW9uSUQsIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHRoaXMs
IHNlc3Npb25JRCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlS
ZWYoKSwgZG9tYWluc1RvRGVsZXRlQWxsQnV0Q29va2llc0Zvcl0oYXV0byYmIG9yaWdpbnMpIHsK
ICAgICAgICAgICAgICAgICBhdXRvIG9yaWdpbnNUb0RlbGV0ZSA9IGZpbHRlckZvclJlZ2lzdHJh
YmxlRG9tYWlucyhvcmlnaW5zLCBkb21haW5zVG9EZWxldGVBbGxCdXRDb29raWVzRm9yLCBjYWxs
YmFja0FnZ3JlZ2F0b3ItPm1fZG9tYWlucyk7Ci0gICAgICAgICAgICAgICAgc3RvcmFnZU1hbmFn
ZXItPmRlbGV0ZVNlc3Npb25TdG9yYWdlRW50cmllc0Zvck9yaWdpbnMob3JpZ2luc1RvRGVsZXRl
LCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9
KTsKKyAgICAgICAgICAgICAgICBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5kZWxldGVTZXNzaW9uU3Rv
cmFnZUZvck9yaWdpbnMoc2Vzc2lvbklELCBvcmlnaW5zVG9EZWxldGUsIFtjYWxsYmFja0FnZ3Jl
Z2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwogICAgICAgICAgICAg
fSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhX
ZWJzaXRlRGF0YVR5cGU6OkxvY2FsU3RvcmFnZSkpIHsKLSAgICAgICAgICAgIHN0b3JhZ2VNYW5h
Z2VyLmdldExvY2FsU3RvcmFnZU9yaWdpbnMoW3N0b3JhZ2VNYW5hZ2VyID0gbWFrZVJlZlB0cihz
dG9yYWdlTWFuYWdlciksIGNhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5j
b3B5UmVmKCksIGRvbWFpbnNUb0RlbGV0ZUFsbEJ1dENvb2tpZXNGb3JdKGF1dG8mJiBvcmlnaW5z
KSB7CisgICAgICAgICAgICBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5nZXRMb2NhbFN0b3JhZ2VPcmln
aW5zKHNlc3Npb25JRCwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdGhpcywgc2Vz
c2lvbklELCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigp
LCBkb21haW5zVG9EZWxldGVBbGxCdXRDb29raWVzRm9yXShhdXRvJiYgb3JpZ2lucykgewogICAg
ICAgICAgICAgICAgIGF1dG8gb3JpZ2luc1RvRGVsZXRlID0gZmlsdGVyRm9yUmVnaXN0cmFibGVE
b21haW5zKG9yaWdpbnMsIGRvbWFpbnNUb0RlbGV0ZUFsbEJ1dENvb2tpZXNGb3IsIGNhbGxiYWNr
QWdncmVnYXRvci0+bV9kb21haW5zKTsKLSAgICAgICAgICAgICAgICBzdG9yYWdlTWFuYWdlci0+
ZGVsZXRlTG9jYWxTdG9yYWdlRW50cmllc0Zvck9yaWdpbnMob3JpZ2luc1RvRGVsZXRlLCBbY2Fs
bGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKKyAg
ICAgICAgICAgICAgICBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5kZWxldGVMb2NhbFN0b3JhZ2VGb3JP
cmlnaW5zKHNlc3Npb25JRCwgb3JpZ2luc1RvRGVsZXRlLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0g
Y2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKICAgICAgICAgICAgIH0pOwogICAg
ICAgICB9CiAgICAgfQpAQCAtMjEwMSw5ICsyMTEwLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
YWN0dWFsUHJlcGFyZVRvU3VzcGVuZChTaG91bGRBY2tub3dsZWRnZVdoZW5SZWFkeVRvU3VzcGVu
ZAogICAgIH0KICNlbmRpZgogCi0gICAgZm9yRWFjaE5ldHdvcmtTZXNzaW9uKFsmY2FsbGJhY2tB
Z2dyZWdhdG9yXShhdXRvJiBzZXNzaW9uKSB7Ci0gICAgICAgIHNlc3Npb24uc3RvcmFnZU1hbmFn
ZXIoKS5zdXNwZW5kKFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7Ci0gICAgfSk7CisgICAgbV9z
dG9yYWdlTWFuYWdlclNldC0+c3VzcGVuZChbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwogfQog
CiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5KCkKQEAg
LTIxNzksOSArMjE4Niw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlc3VtZSgpCiAgICAgICAg
IHNlcnZlci0+cmVzdW1lKCk7CiAjZW5kaWYKIAotICAgIGZvckVhY2hOZXR3b3JrU2Vzc2lvbihb
XShhdXRvJiBzZXNzaW9uKSB7Ci0gICAgICAgIHNlc3Npb24uc3RvcmFnZU1hbmFnZXIoKS5yZXN1
bWUoKTsKLSAgICB9KTsKKyAgICBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5yZXN1bWUoKTsKIH0KIAog
dm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkK
QEAgLTI2OTQsNjggKzI2OTksNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZW1vdmVLZXB0QWxp
dmVMb2FkKE5ldHdvcmtSZXNvdXJjZUxvYWRlciYgbG9hZGVyKQogICAgICAgICBzZXNzaW9uLT5y
ZW1vdmVLZXB0QWxpdmVMb2FkKGxvYWRlcik7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6Ondl
YlBhZ2VXYXNBZGRlZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBQYWdlSWRlbnRpZmllciBvbGRQYWdl
SUQpCi17Ci0gICAgaWYgKCFwYWdlSUQgfHwgIW9sZFBhZ2VJRCkgewotICAgICAgICBMT0dfRVJS
T1IoIkNhbm5vdCBhZGQgcGFnZSB3aXRoIGludmFsaWQgaWQiKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOwot
ICAgIGlmICghc2Vzc2lvbikgewotICAgICAgICBMT0dfRVJST1IoIkNhbm5vdCBhZGQgcGFnZSB0
byBhbiB1bmtub3duIHNlc3Npb24iKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBhdXRv
JiBzdG9yYWdlTWFuYWdlciA9IHNlc3Npb24tPnN0b3JhZ2VNYW5hZ2VyKCk7Ci0KLSAgICBhdXRv
IGFkZFJlc3VsdCA9IG1fc2Vzc2lvbkJ5Q29ubmVjdGlvbi5hZGQoY29ubmVjdGlvbi51bmlxdWVJ
RCgpLCBzZXNzaW9uSUQpOwotICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQu
aXRlcmF0b3ItPnZhbHVlID09IHNlc3Npb25JRCk7Ci0KLSAgICBzdG9yYWdlTWFuYWdlci5jcmVh
dGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShwYWdlSUQudG9VSW50NjQoKSwgc3RkOjpudW1lcmlj
X2xpbWl0czx1bnNpZ25lZD46Om1heCgpKTsKLSAgICBzdG9yYWdlTWFuYWdlci5hZGRBbGxvd2Vk
U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0aW9uKHBhZ2VJRC50b1VJbnQ2NCgpLCBjb25u
ZWN0aW9uKTsKLSAgICBpZiAocGFnZUlEICE9IG9sZFBhZ2VJRCkKLSAgICAgICAgc3RvcmFnZU1h
bmFnZXIuY2xvbmVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShvbGRQYWdlSUQudG9VSW50NjQoKSwg
cGFnZUlELnRvVUludDY0KCkpOwotfQotCi12b2lkIE5ldHdvcmtQcm9jZXNzOjp3ZWJQYWdlV2Fz
UmVtb3ZlZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQotewotICAgIGlmICghcGFnZUlEKSB7Ci0gICAg
ICAgIExPR19FUlJPUigiQ2Fubm90IHJlbW92ZSBwYWdlIHdpdGggaW52YWxpZCBpZCIpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9u
KHNlc3Npb25JRCk7Ci0gICAgLy8gU2Vzc2lvbiBjYW4gYmUgZGVzdHJveWVkIGJlZm9yZSBwYWdl
IGdldHMgcmVtb3ZlZC4KLSAgICBpZiAoIXNlc3Npb24pCi0gICAgICAgIHJldHVybjsKLQotICAg
IGF1dG8mIHN0b3JhZ2VNYW5hZ2VyID0gc2Vzc2lvbi0+c3RvcmFnZU1hbmFnZXIoKTsKLSAgICBz
dG9yYWdlTWFuYWdlci5yZW1vdmVBbGxvd2VkU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0
aW9uKHBhZ2VJRC50b1VJbnQ2NCgpLCBjb25uZWN0aW9uKTsKLSAgICBzdG9yYWdlTWFuYWdlci5k
ZXN0cm95U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UocGFnZUlELnRvVUludDY0KCkpOwotfQotCi12
b2lkIE5ldHdvcmtQcm9jZXNzOjp3ZWJQcm9jZXNzV2FzRGlzY29ubmVjdGVkKElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbikKLXsKLSAgICBhdXRvIHNlc3Npb25JRCA9IG1fc2Vzc2lvbkJ5Q29u
bmVjdGlvbi50YWtlKGNvbm5lY3Rpb24udW5pcXVlSUQoKSk7Ci0gICAgaWYgKCFzZXNzaW9uSUQu
aXNWYWxpZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5l
dHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpCi0gICAgICAgIHNlc3Npb24tPnN0b3JhZ2VNYW5hZ2Vy
KCkucHJvY2Vzc0RpZENsb3NlQ29ubmVjdGlvbihjb25uZWN0aW9uKTsKLX0KLQotdm9pZCBOZXR3
b3JrUHJvY2Vzczo6d2ViUHJvY2Vzc1Nlc3Npb25DaGFuZ2VkKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgUEFMOjpTZXNzaW9uSUQgbmV3U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8UGFnZUlk
ZW50aWZpZXI+JiBwYWdlSURzKQotewotICAgIGF1dG8gY29ubmVjdGlvbklEID0gY29ubmVjdGlv
bi51bmlxdWVJRCgpOwotICAgIEFTU0VSVChtX3Nlc3Npb25CeUNvbm5lY3Rpb24uY29udGFpbnMo
Y29ubmVjdGlvbklEKSk7Ci0gICAgaWYgKG1fc2Vzc2lvbkJ5Q29ubmVjdGlvbi5nZXQoY29ubmVj
dGlvbklEKSA9PSBuZXdTZXNzaW9uSUQpCi0gICAgICAgIHJldHVybjsKLQotICAgIHdlYlByb2Nl
c3NXYXNEaXNjb25uZWN0ZWQoY29ubmVjdGlvbik7Ci0gICAgZm9yIChhdXRvJiBwYWdlSUQgOiBw
YWdlSURzKQotICAgICAgICB3ZWJQYWdlV2FzQWRkZWQoY29ubmVjdGlvbiwgbmV3U2Vzc2lvbklE
LCBwYWdlSUQsIHBhZ2VJRCk7Ci19Ci0KIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmdldExvY2FsU3Rv
cmFnZU9yaWdpbkRldGFpbHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFZlY3RvcjxMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6Ok9yaWdpbkRldGFp
bHM+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3
b3JrU2Vzc2lvbihzZXNzaW9uSUQpOwpAQCAtMjc2NCwxMCArMjcwNywxNCBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpnZXRMb2NhbFN0b3JhZ2VPcmlnaW5EZXRhaWxzKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgQ29tcAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byYgc3RvcmFn
ZU1hbmFnZXIgPSBzZXNzaW9uLT5zdG9yYWdlTWFuYWdlcigpOwotICAgIHN0b3JhZ2VNYW5hZ2Vy
LmdldExvY2FsU3RvcmFnZU9yaWdpbkRldGFpbHMoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildKGF1dG8mJiBkZXRhaWxzKSBtdXRhYmxlIHsKKyAgICBtX3N0
b3JhZ2VNYW5hZ2VyU2V0LT5nZXRMb2NhbFN0b3JhZ2VPcmlnaW5EZXRhaWxzKHNlc3Npb25JRCwg
W2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1dG8mJiBk
ZXRhaWxzKSBtdXRhYmxlIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShkZXRh
aWxzKSk7CiAgICAgfSk7CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3NDbG9zZWQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQoreworICAgIG1fc3Rv
cmFnZU1hbmFnZXJTZXQtPnJlbW92ZUNvbm5lY3Rpb24oY29ubmVjdGlvbik7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5oCmluZGV4IDYwNTExMmM3NzU5NGY3YWJlNTFlMDdiZjk3ZTc3ZjVkOGNiM2MyOTMu
LmU0ZjY0Mjk2NjM3YWJjMWRjZTQ1NGVhYjliNDYxMmVlNmFlMjhlMWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTk4LDYgKzk4LDcgQEAg
Y2xhc3MgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CiBjbGFzcyBOZXR3b3JrUHJvY2Vz
c1N1cHBsZW1lbnQ7CiBjbGFzcyBOZXR3b3JrUHJveGltaXR5TWFuYWdlcjsKIGNsYXNzIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjsKK2NsYXNzIFN0b3JhZ2VNYW5hZ2VyU2V0OwogY2xhc3MgV2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uOwogY2xhc3MgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOwog
ZW51bSBjbGFzcyBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MgOiBib29sOwpAQCAtMjcwLDEw
ICsyNzEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTZXNzaW9uSXNDb250cm9sbGVkQnlBdXRv
bWF0aW9uKFBBTDo6U2Vzc2lvbklELCBib29sKTsKICAgICBib29sIHNlc3Npb25Jc0NvbnRyb2xs
ZWRCeUF1dG9tYXRpb24oUEFMOjpTZXNzaW9uSUQpIGNvbnN0OwogCi0gICAgdm9pZCB3ZWJQYWdl
V2FzQWRkZWQoSVBDOjpDb25uZWN0aW9uJiwgUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7Ci0gICAgdm9pZCB3ZWJQYWdlV2Fz
UmVtb3ZlZChJUEM6OkNvbm5lY3Rpb24mLCBQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIpOwotICAgIHZvaWQgd2ViUHJvY2Vzc1dhc0Rpc2Nvbm5lY3RlZChJUEM6OkNvbm5l
Y3Rpb24mKTsKLSAgICB2b2lkIHdlYlByb2Nlc3NTZXNzaW9uQ2hhbmdlZChJUEM6OkNvbm5lY3Rp
b24mLCBQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
PiYpOworICAgIHZvaWQgY29ubmVjdGlvblRvV2ViUHJvY2Vzc0Nsb3NlZChJUEM6OkNvbm5lY3Rp
b24mKTsKICAgICB2b2lkIGdldExvY2FsU3RvcmFnZU9yaWdpbkRldGFpbHMoUEFMOjpTZXNzaW9u
SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPExvY2FsU3RvcmFnZURhdGFiYXNlVHJh
Y2tlcjo6T3JpZ2luRGV0YWlscz4mJik+JiYpOwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5T
SU9OUykKQEAgLTUwMiw2ICs1MDAsOCBAQCBwcml2YXRlOgogICAgIG11dGFibGUgc3RkOjp1bmlx
dWVfcHRyPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4gbV9kZWZhdWx0TmV0d29ya1N0
b3JhZ2VTZXNzaW9uOwogICAgIE5ldHdvcmtCbG9iUmVnaXN0cnkgbV9uZXR3b3JrQmxvYlJlZ2lz
dHJ5OwogCisgICAgUmVmUHRyPFN0b3JhZ2VNYW5hZ2VyU2V0PiBtX3N0b3JhZ2VNYW5hZ2VyU2V0
OworCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemVOZXR3
b3JrUHJvY2Vzc0NvY29hKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJik7
CiAgICAgdm9pZCBzZXRTdG9yYWdlQWNjZXNzQVBJRW5hYmxlZChib29sKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKaW5kZXggNDg4YjkyOTgw
YWVkMWFkYzY0YWIzZDNjYWZjM2Y4ZDhmYTI3NjJiZC4uMWExMzk2MjkxNmE5OTI0MDQwMDhhMmVm
MjFhNDE5M2U2YzE3NjZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU2Vzc2lvbi5jcHAKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlICJOZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRlci5o
IgogI2luY2x1ZGUgIlBpbmdMb2FkLmgiCi0jaW5jbHVkZSAiU3RvcmFnZU1hbmFnZXIuaCIKICNp
bmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5o
IgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgpAQCAtODUsNyArODQsNiBAQCBOZXR3b3Jr
U2Vzc2lvbjo6TmV0d29ya1Nlc3Npb24oTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBj
b25zdCBOZXR3b3JrU2VzcwogICAgICwgbV9lbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTG9n
VGVzdGluZ0V2ZW50KHBhcmFtZXRlcnMuZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0xvZ1Rl
c3RpbmdFdmVudCkKICNlbmRpZgogICAgICwgbV9hZENsaWNrQXR0cmlidXRpb24obWFrZVVuaXF1
ZVJlZjxBZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyPihwYXJhbWV0ZXJzLnNlc3Npb25JRCkpCi0g
ICAgLCBtX3N0b3JhZ2VNYW5hZ2VyKFN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGUoU3RyaW5nKHBhcmFt
ZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5KSkpCiB7CiAgICAgaWYgKCFtX3Nlc3Npb25JRC5p
c0VwaGVtZXJhbCgpKSB7CiAgICAgICAgIFN0cmluZyBuZXR3b3JrQ2FjaGVEaXJlY3RvcnkgPSBw
YXJhbWV0ZXJzLm5ldHdvcmtDYWNoZURpcmVjdG9yeTsKQEAgLTk5LDcgKzk3LDYgQEAgTmV0d29y
a1Nlc3Npb246Ok5ldHdvcmtTZXNzaW9uKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2Vzcywg
Y29uc3QgTmV0d29ya1Nlc3MKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmtD
YWNoZSwgIkZhaWxlZCB0byBpbml0aWFsaXplIHRoZSBXZWJLaXQgbmV0d29yayBkaXNrIGNhY2hl
Iik7CiAgICAgfQogCi0gICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KHBh
cmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKICAgICBtX2Fk
Q2xpY2tBdHRyaWJ1dGlvbi0+c2V0UGluZ0xvYWRGdW5jdGlvbihbdGhpcywgd2Vha1RoaXMgPSBt
YWtlV2Vha1B0cih0aGlzKV0oTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiBsb2FkUGFy
YW1ldGVycywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0x
MTMsOSArMTEwLDYgQEAgTmV0d29ya1Nlc3Npb246On5OZXR3b3JrU2Vzc2lvbigpCiAjaWYgRU5B
QkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBkZXN0cm95UmVzb3VyY2VMb2FkU3Rh
dGlzdGljcygpOwogI2VuZGlmCi0KLSAgICBtX3N0b3JhZ2VNYW5hZ2VyLT5yZXN1bWUoKTsKLSAg
ICBtX3N0b3JhZ2VNYW5hZ2VyLT53YWl0VW50aWxUYXNrc0ZpbmlzaGVkKCk7CiB9CiAKICNpZiBF
TkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCmluZGV4IGMyYmY0M2QyNGUwOTFmZjc2ZDlkYjhiNzBh
MTZhZTNmYTE3YjJkNTAuLjk1NTBjZTVkNjM4OTliZDI4NTk5NDc1M2VjZjMzNDZhNTJiNDcwOTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24u
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKQEAg
LTUxLDcgKzUxLDYgQEAgY2xhc3MgQWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlcjsKIGNsYXNzIE5l
dHdvcmtEYXRhVGFzazsKIGNsYXNzIE5ldHdvcmtQcm9jZXNzOwogY2xhc3MgTmV0d29ya1Jlc291
cmNlTG9hZGVyOwotY2xhc3MgU3RvcmFnZU1hbmFnZXI7CiBjbGFzcyBOZXR3b3JrU29ja2V0Q2hh
bm5lbDsKIGNsYXNzIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTsKIGNsYXNzIFdlYlNv
Y2tldFRhc2s7CkBAIC04MCw4ICs3OSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZ2lzdGVyTmV0
d29ya0RhdGFUYXNrKE5ldHdvcmtEYXRhVGFzayYgdGFzaykgeyBtX2RhdGFUYXNrU2V0LmFkZCgm
dGFzayk7IH0KICAgICB2b2lkIHVucmVnaXN0ZXJOZXR3b3JrRGF0YVRhc2soTmV0d29ya0RhdGFU
YXNrJiB0YXNrKSB7IG1fZGF0YVRhc2tTZXQucmVtb3ZlKCZ0YXNrKTsgfQogCi0gICAgU3RvcmFn
ZU1hbmFnZXImIHN0b3JhZ2VNYW5hZ2VyKCkgeyByZXR1cm4gbV9zdG9yYWdlTWFuYWdlci5nZXQo
KTsgfQotCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUqIHJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSBjb25zdCB7
IHJldHVybiBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MuZ2V0KCk7IH0KICAgICB2b2lkIHNldFJl
c291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGJvb2wpOwpAQCAtMTM4LDcgKzEzNSw2IEBAIHBy
b3RlY3RlZDoKIAogICAgIFByZWZldGNoQ2FjaGUgbV9wcmVmZXRjaENhY2hlOwogCi0gICAgUmVm
PFN0b3JhZ2VNYW5hZ2VyPiBtX3N0b3JhZ2VNYW5hZ2VyOwogI2lmICFBU1NFUlRfRElTQUJMRUQK
ICAgICBib29sIG1faXNJbnZhbGlkYXRlZCB7IGZhbHNlIH07CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFt
ZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNy
ZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5kZXggMzUxNGNjMGYwODNjN2VhYzVkMWQ4NjEzYTBlZmE1
ZTcyZTg4Nzc5ZC4uMDE4MzJmZDI1NDc5MWMwNGMyOTc4ZDc3YmY2ODVlMjkzNTE5ZjRmNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0
aW9uUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgTmV0d29y
a1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRl
cnM6OnByaXZhdGVTZXNzaW8KICNpZiBVU0UoQ1VSTCkKICAgICAgICAgLCB7IH0sIHsgfQogI2Vu
ZGlmCi0gICAgICAgICwgeyB9LCB7IH0sIGZhbHNlLCBmYWxzZSwgeyB9LCB7IH0sIHsgfSwgeyB9
LCB7IH0sIHsgfSwgeyB9LCB7IH0sIHsgfQorICAgICAgICAsIHsgfSwgeyB9LCBmYWxzZSwgZmFs
c2UsIHsgfSwgeyB9LCB7IH0sIHsgfSwgeyB9LCB7IH0sIHsgfQogICAgIH07CiB9CiAKQEAgLTg1
LDcgKzg1LDYgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2Rl
KElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IGVuYWJsZVJlc291
cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGU7CiAgICAgZW5jb2RlciA8PCByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWFudWFsUHJldmFsZW50UmVzb3VyY2U7CiAKLSAgICBlbmNvZGVyIDw8IGxvY2Fs
U3RvcmFnZURpcmVjdG9yeSA8PCBsb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7
CiAgICAgZW5jb2RlciA8PCBuZXR3b3JrQ2FjaGVEaXJlY3RvcnkgPDwgbmV0d29ya0NhY2hlRGly
ZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogCiAgICAgZW5jb2RlciA8PCBkZXZpY2VNYW5hZ2VtZW50
UmVzdHJpY3Rpb25zRW5hYmxlZDsKQEAgLTIwOCwxNiArMjA3LDYgQEAgT3B0aW9uYWw8TmV0d29y
a1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM+IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0
ZXJzOjpkZWMKICAgICBpZiAoIXJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW51YWxQcmV2YWxlbnRS
ZXNvdXJjZSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPFN0
cmluZz4gbG9jYWxTdG9yYWdlRGlyZWN0b3J5OwotICAgIGRlY29kZXIgPj4gbG9jYWxTdG9yYWdl
RGlyZWN0b3J5OwotICAgIGlmICghbG9jYWxTdG9yYWdlRGlyZWN0b3J5KQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwotCi0gICAgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
PiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7Ci0gICAgZGVjb2RlciA+PiBs
b2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7Ci0gICAgaWYgKCFsb2NhbFN0b3Jh
Z2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
Ci0KICAgICBPcHRpb25hbDxTdHJpbmc+IG5ldHdvcmtDYWNoZURpcmVjdG9yeTsKICAgICBkZWNv
ZGVyID4+IG5ldHdvcmtDYWNoZURpcmVjdG9yeTsKICAgICBpZiAoIW5ldHdvcmtDYWNoZURpcmVj
dG9yeSkKQEAgLTI2OSw4ICsyNTgsNiBAQCBPcHRpb25hbDxOZXR3b3JrU2Vzc2lvbkNyZWF0aW9u
UGFyYW1ldGVycz4gTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM6OmRlYwogICAgICAg
ICAsIFdURk1vdmUoKmRldmljZU1hbmFnZW1lbnRSZXN0cmljdGlvbnNFbmFibGVkKQogICAgICAg
ICAsIFdURk1vdmUoKmFsbExvYWRzQmxvY2tlZEJ5RGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9u
c0ZvclRlc3RpbmcpCiAgICAgICAgICwgV1RGTW92ZSgqcmVzb3VyY2VMb2FkU3RhdGlzdGljc01h
bnVhbFByZXZhbGVudFJlc291cmNlKQotICAgICAgICAsIFdURk1vdmUoKmxvY2FsU3RvcmFnZURp
cmVjdG9yeSkKLSAgICAgICAgLCBXVEZNb3ZlKCpsb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNp
b25IYW5kbGUpCiAgICAgICAgICwgV1RGTW92ZSgqbmV0d29ya0NhY2hlRGlyZWN0b3J5KQogICAg
ICAgICAsIFdURk1vdmUoKm5ldHdvcmtDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSkKICAg
ICB9fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nl
c3Npb25DcmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCA3YTQ3NDE0YjUxMWZjZDgw
MmJlZTU3MjhiOGM3ZWI0OTM3N2IxMWU2Li5jN2YwNTQ1MjBhYWM4ZWY2ZGVjNTA0MDlhNGE5NDA3
Y2RkODk2NWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC05MSw4ICs5MSw2
IEBAIHN0cnVjdCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgYm9vbCBh
bGxMb2Fkc0Jsb2NrZWRCeURldmljZU1hbmFnZW1lbnRSZXN0cmljdGlvbnNGb3JUZXN0aW5nIHsg
ZmFsc2UgfTsKICAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWFudWFsUHJldmFsZW50UmVzb3VyY2UgeyB9OwogCi0gICAgU3RyaW5nIGxvY2FsU3Rv
cmFnZURpcmVjdG9yeTsKLSAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgbG9jYWxTdG9yYWdl
RGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIFN0cmluZyBuZXR3b3JrQ2FjaGVEaXJlY3Rv
cnk7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIG5ldHdvcmtDYWNoZURpcmVjdG9yeUV4
dGVuc2lvbkhhbmRsZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNr
ZXIuY3BwCmluZGV4IDA3YTYzM2ZiZmU5YmU1OWVkYmVkNTM5Yzk2ZTE5ZTRiMWJiZDI1ODMuLjJm
ZmQwYTI1YzExZGExYzUxM2U4NzAxNDMzNDc0ZmVjNmE3ZDE1MTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRy
YWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9M
b2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3BwCkBAIC0zOSwyNCArMzksMjAgQEAKIG5hbWVz
cGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVJlZjxMb2NhbFN0b3Jh
Z2VEYXRhYmFzZVRyYWNrZXI+IExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6Y3JlYXRlKFJl
ZjxXb3JrUXVldWU+JiYgcXVldWUsIFN0cmluZyYmIGxvY2FsU3RvcmFnZURpcmVjdG9yeSkKK1Jl
ZjxMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI+IExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tl
cjo6Y3JlYXRlKFN0cmluZyYmIGxvY2FsU3RvcmFnZURpcmVjdG9yeSkKIHsKLSAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIoV1RGTW92ZShxdWV1ZSks
IFdURk1vdmUobG9jYWxTdG9yYWdlRGlyZWN0b3J5KSkpOworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcihXVEZNb3ZlKGxvY2FsU3RvcmFnZURpcmVj
dG9yeSkpKTsKIH0KIAotTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpMb2NhbFN0b3JhZ2VE
YXRhYmFzZVRyYWNrZXIoUmVmPFdvcmtRdWV1ZT4mJiBxdWV1ZSwgU3RyaW5nJiYgbG9jYWxTdG9y
YWdlRGlyZWN0b3J5KQotICAgIDogbV9xdWV1ZShXVEZNb3ZlKHF1ZXVlKSkKLSAgICAsIG1fbG9j
YWxTdG9yYWdlRGlyZWN0b3J5KFdURk1vdmUobG9jYWxTdG9yYWdlRGlyZWN0b3J5KSkKK0xvY2Fs
U3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyKFN0cmlu
ZyYmIGxvY2FsU3RvcmFnZURpcmVjdG9yeSkKKyAgICA6IG1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5
KFdURk1vdmUobG9jYWxTdG9yYWdlRGlyZWN0b3J5KSkKIHsKLSAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgLy8gTWFr
ZSBzdXJlIHRoZSBlbmNvZGluZyBpcyBpbml0aWFsaXplZCBiZWZvcmUgd2Ugc3RhcnQgZGlzcGF0
Y2hpbmcgdGhpbmdzIHRvIHRoZSBxdWV1ZS4KICAgICBVVEY4RW5jb2RpbmcoKTsKIAotICAgIG1f
cXVldWUtPmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKCkgbXV0YWJs
ZSB7Ci0gICAgICAgIC8vIERlbGV0ZSBsZWdhY3kgc3RvcmFnZVRyYWNrZXIgZGF0YWJhc2UgZmls
ZS4KLSAgICAgICAgU1FMaXRlRmlsZVN5c3RlbTo6ZGVsZXRlRGF0YWJhc2VGaWxlKHByb3RlY3Rl
ZFRoaXMtPmRhdGFiYXNlUGF0aCgiU3RvcmFnZVRyYWNrZXIuZGIiKSk7Ci0gICAgfSk7CisgICAg
U1FMaXRlRmlsZVN5c3RlbTo6ZGVsZXRlRGF0YWJhc2VGaWxlKGRhdGFiYXNlUGF0aCgiU3RvcmFn
ZVRyYWNrZXIuZGIiKSk7CiB9CiAKIFN0cmluZyBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6
OmxvY2FsU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0CkBAIC02Niw3ICs2Miw3IEBAIFN0cmluZyBM
b2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OmxvY2FsU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0
CiAKIExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6fkxvY2FsU3RvcmFnZURhdGFiYXNlVHJh
Y2tlcigpCiB7Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBBU1NFUlQoIVJ1
bkxvb3A6OmlzTWFpbigpKTsKIH0KIAogU3RyaW5nIExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tl
cjo6ZGF0YWJhc2VQYXRoKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4p
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3Jh
Z2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmgKaW5kZXggNWQ5
ZDJjMmE0YzdkYTAxM2Y2MGYxMWViNDM2ZjE4ZTQ3NTgwMjA5MS4uMDY5NTVmMGMyMzcyYTM2NzU5
OTE3MmZmZmI1YzE4OTJjZmZhMGYyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFz
ZVRyYWNrZXIuaApAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3Mg
TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlciwgV1RGOjpEZXN0cnVjdGlvblRocmVhZDo6TWFp
blJ1bkxvb3A+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPExvY2FsU3RvcmFnZURhdGFiYXNl
VHJhY2tlcj4gY3JlYXRlKFJlZjxXb3JrUXVldWU+JiYsIFN0cmluZyYmIGxvY2FsU3RvcmFnZURp
cmVjdG9yeSk7CisgICAgc3RhdGljIFJlZjxMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI+IGNy
ZWF0ZShTdHJpbmcmJiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpOwogICAgIH5Mb2NhbFN0b3JhZ2VE
YXRhYmFzZVRyYWNrZXIoKTsKIAogICAgIFN0cmluZyBkYXRhYmFzZVBhdGgoY29uc3QgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhJikgY29uc3Q7CkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoK
ICAgICBWZWN0b3I8T3JpZ2luRGV0YWlscz4gb3JpZ2luRGV0YWlscygpOwogCiBwcml2YXRlOgot
ICAgIExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcihSZWY8V29ya1F1ZXVlPiYmLCBTdHJpbmcm
JiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpOworICAgIExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tl
cihTdHJpbmcmJiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpOwogCiAgICAgU3RyaW5nIGRhdGFiYXNl
UGF0aChjb25zdCBTdHJpbmcmIGZpbGVuYW1lKSBjb25zdDsKICAgICBTdHJpbmcgbG9jYWxTdG9y
YWdlRGlyZWN0b3J5KCkgY29uc3Q7CkBAIC03Myw4ICs3Myw2IEBAIHByaXZhdGU6CiAgICAgICAg
IENyZWF0ZUlmTm9uRXhpc3RlbnQsCiAgICAgICAgIFNraXBJZk5vbkV4aXN0ZW50CiAgICAgfTsK
LQotICAgIFJlZjxXb3JrUXVldWU+IG1fcXVldWU7CiAgICAgCiAgICAgLy8gSXQgaXMgbm90IHNh
ZmUgdG8gdXNlIHRoaXMgbWVtYmVyIGZyb20gYSBiYWNrZ3JvdW5kIHRocmVhZCwgY2FsbCBsb2Nh
bFN0b3JhZ2VEaXJlY3RvcnkoKSBpbnN0ZWFkLgogICAgIGNvbnN0IFN0cmluZyBtX2xvY2FsU3Rv
cmFnZURpcmVjdG9yeTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
V2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IGExN2M1NzljYmFhNTdlMTky
NTFhNjM0MGJlZGJkMWVhZGI3ZDY5ODIuLjY1NTU5MTlmZjg4NDliZWY2ZWEwOGM3NGEyZDNlMjZl
ZTE1NDA4ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3Rv
cmFnZS9TdG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcApAQCAtMjksNyArMjksNiBAQAogI2luY2x1
ZGUgIkxvY2FsU3RvcmFnZURhdGFiYXNlLmgiCiAjaW5jbHVkZSAiTG9jYWxTdG9yYWdlRGF0YWJh
c2VUcmFja2VyLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFyZWFNYXBNZXNzYWdlcy5oIgotI2luY2x1
ZGUgIlN0b3JhZ2VNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHku
aCIKICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvU2VjdXJpdHlPcmlnaW5IYXNoLmg+CkBAIC0zNyw1MyArMzYsMTAgQEAKICNpbmNsdWRl
IDxXZWJDb3JlL1RleHRFbmNvZGluZy5oPgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3
dGYvV29ya1F1ZXVlLmg+Ci0jaW5jbHVkZSA8d3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg+
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLWNsYXNz
IFN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQXJlYSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxTdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUFyZWE+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
PFN0b3JhZ2VBcmVhPiBjcmVhdGUoTG9jYWxTdG9yYWdlTmFtZXNwYWNlKiwgY29uc3QgU2VjdXJp
dHlPcmlnaW5EYXRhJiwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKLSAgICB+U3RvcmFnZUFyZWEo
KTsKLQotICAgIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmln
aW4oKSBjb25zdCB7IHJldHVybiBtX3NlY3VyaXR5T3JpZ2luOyB9Ci0KLSAgICB2b2lkIGFkZExp
c3RlbmVyKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCk7
Ci0gICAgdm9pZCByZW1vdmVMaXN0ZW5lcihJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCB1aW50
NjRfdCBzdG9yYWdlTWFwSUQpOwotICAgIGJvb2wgaGFzTGlzdGVuZXIoSVBDOjpDb25uZWN0aW9u
OjpVbmlxdWVJRCwgdWludDY0X3Qgc3RvcmFnZU1hcElEKSBjb25zdDsKLQotICAgIFJlZjxTdG9y
YWdlQXJlYT4gY2xvbmUoKSBjb25zdDsKLQotICAgIHZvaWQgc2V0SXRlbShJUEM6OkNvbm5lY3Rp
b246OlVuaXF1ZUlEIHNvdXJjZUNvbm5lY3Rpb24sIHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVh
SUQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlLCBjb25zdCBTdHJpbmcm
IHVybFN0cmluZywgYm9vbCYgcXVvdGFFeGNlcHRpb24pOwotICAgIHZvaWQgc2V0SXRlbXMoY29u
c3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mKTsKLSAgICB2b2lkIHJlbW92ZUl0ZW0oSVBDOjpD
b25uZWN0aW9uOjpVbmlxdWVJRCBzb3VyY2VDb25uZWN0aW9uLCB1aW50NjRfdCBzb3VyY2VTdG9y
YWdlQXJlYUlELCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpOwot
ICAgIHZvaWQgY2xlYXIoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBzb3VyY2VDb25uZWN0aW9u
LCB1aW50NjRfdCBzb3VyY2VTdG9yYWdlQXJlYUlELCBjb25zdCBTdHJpbmcmIHVybFN0cmluZyk7
Ci0KLSAgICBjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgaXRlbXMoKSBjb25zdDsKLSAg
ICB2b2lkIGNsZWFyKCk7Ci0KLSAgICBib29sIGlzRXBoZW1lcmFsKCkgY29uc3QgeyByZXR1cm4g
IW1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlOyB9Ci0KLSAgICB2b2lkIG9wZW5EYXRhYmFzZUFuZElt
cG9ydEl0ZW1zSWZOZWVkZWQoKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBTdG9y
YWdlQXJlYShMb2NhbFN0b3JhZ2VOYW1lc3BhY2UqLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEm
LCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpOwotCi0gICAgdm9pZCBkaXNwYXRjaEV2ZW50cyhJUEM6
OkNvbm5lY3Rpb246OlVuaXF1ZUlEIHNvdXJjZUNvbm5lY3Rpb24sIHVpbnQ2NF90IHNvdXJjZVN0
b3JhZ2VBcmVhSUQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBj
b25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZykgY29uc3Q7Ci0K
LSAgICAvLyBXaWxsIGJlIG51bGwgaWYgdGhlIHN0b3JhZ2UgYXJlYSBiZWxvbmdzIHRvIGEgc2Vz
c2lvbiBzdG9yYWdlIG5hbWVzcGFjZSBvciB0aGUgc3RvcmFnZSBhcmVhIGlzIGluIGFuIGVwaGVt
ZXJhbCBzZXNzaW9uLgotICAgIFdlYWtQdHI8TG9jYWxTdG9yYWdlTmFtZXNwYWNlPiBtX2xvY2Fs
U3RvcmFnZU5hbWVzcGFjZTsKLSAgICBtdXRhYmxlIFJlZlB0cjxMb2NhbFN0b3JhZ2VEYXRhYmFz
ZT4gbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZTsKLSAgICBtdXRhYmxlIGJvb2wgbV9kaWRJbXBvcnRJ
dGVtc0Zyb21EYXRhYmFzZSB7IGZhbHNlIH07Ci0KLSAgICBTZWN1cml0eU9yaWdpbkRhdGEgbV9z
ZWN1cml0eU9yaWdpbjsKLSAgICB1bnNpZ25lZCBtX3F1b3RhSW5CeXRlczsKLQotICAgIFJlZlB0
cjxTdG9yYWdlTWFwPiBtX3N0b3JhZ2VNYXA7Ci0gICAgSGFzaFNldDxzdGQ6OnBhaXI8SVBDOjpD
b25uZWN0aW9uOjpVbmlxdWVJRCwgdWludDY0X3Q+PiBtX2V2ZW50TGlzdGVuZXJzOwotfTsKLQog
Y2xhc3MgU3RvcmFnZU1hbmFnZXI6OkxvY2FsU3RvcmFnZU5hbWVzcGFjZSA6IHB1YmxpYyBUaHJl
YWRTYWZlUmVmQ291bnRlZDxMb2NhbFN0b3JhZ2VOYW1lc3BhY2U+LCBwdWJsaWMgQ2FuTWFrZVdl
YWtQdHI8TG9jYWxTdG9yYWdlTmFtZXNwYWNlPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxM
b2NhbFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZShTdG9yYWdlTWFuYWdlciYsIHVpbnQ2NF90IHN0
b3JhZ2VNYW5hZ2VySUQpOwpAQCAtOTgsNyArNTQsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVh
ckFsbFN0b3JhZ2VBcmVhcygpOwogCiAgICAgVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4gZXBo
ZW1lcmFsT3JpZ2lucygpIGNvbnN0OwotICAgIHZvaWQgY2xvbmVUbyhMb2NhbFN0b3JhZ2VOYW1l
c3BhY2UmIG5ld0xvY2FsU3RvcmFnZU5hbWVzcGFjZSk7CiAKIHByaXZhdGU6CiAgICAgTG9jYWxT
dG9yYWdlTmFtZXNwYWNlKFN0b3JhZ2VNYW5hZ2VyJiwgdWludDY0X3Qgc3RvcmFnZU1hbmFnZXJJ
RCk7CkBAIC0xNjUsNiArMTIwLDEyIEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxTZWN1cml0eU9y
aWdpbkRhdGEsIFJlZlB0cjxTdG9yYWdlQXJlYT4+IG1fc3RvcmFnZUFyZWFNYXA7CiB9OwogCitz
dGF0aWMgdWludDY0X3QgZ2VuZXJhdGVTdG9yYWdlQXJlYUlkZW50aWZpZXIoKQoreworICAgIHN0
YXRpYyB1aW50NjRfdCBpZGVudGlmaWVyOworICAgIHJldHVybiArK2lkZW50aWZpZXI7Cit9CisK
IGF1dG8gU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VBcmVhOjpjcmVhdGUoTG9jYWxTdG9yYWdlTmFt
ZXNwYWNlKiBsb2NhbFN0b3JhZ2VOYW1lc3BhY2UsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYg
c2VjdXJpdHlPcmlnaW4sIHVuc2lnbmVkIHF1b3RhSW5CeXRlcykgLT4gUmVmPFN0b3JhZ2VNYW5h
Z2VyOjpTdG9yYWdlQXJlYT4KIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9yYWdlQXJl
YShsb2NhbFN0b3JhZ2VOYW1lc3BhY2UsIHNlY3VyaXR5T3JpZ2luLCBxdW90YUluQnl0ZXMpKTsK
QEAgLTE3NSw2ICsxMzYsNyBAQCBTdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUFyZWE6OlN0b3JhZ2VB
cmVhKExvY2FsU3RvcmFnZU5hbWVzcGFjZSogbG9jYWxTdG9yYWdlTmFtZQogICAgICwgbV9zZWN1
cml0eU9yaWdpbihzZWN1cml0eU9yaWdpbikKICAgICAsIG1fcXVvdGFJbkJ5dGVzKHF1b3RhSW5C
eXRlcykKICAgICAsIG1fc3RvcmFnZU1hcChTdG9yYWdlTWFwOjpjcmVhdGUobV9xdW90YUluQnl0
ZXMpKQorICAgICwgbV9pZGVudGlmaWVyKGdlbmVyYXRlU3RvcmFnZUFyZWFJZGVudGlmaWVyKCkp
CiB7CiB9CiAKQEAgLTE4NywyMSArMTQ5LDE5IEBAIFN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQXJl
YTo6flN0b3JhZ2VBcmVhKCkKICAgICAgICAgbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZS0+Y2xvc2Uo
KTsKIH0KIAotdm9pZCBTdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUFyZWE6OmFkZExpc3RlbmVyKElQ
Qzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgY29ubmVjdGlvbklELCB1aW50NjRfdCBzdG9yYWdlTWFw
SUQpCit2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQXJlYTo6YWRkTGlzdGVuZXIoSVBDOjpD
b25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uSUQpCiB7Ci0gICAgQVNTRVJUKCFtX2V2ZW50
TGlzdGVuZXJzLmNvbnRhaW5zKHN0ZDo6bWFrZV9wYWlyKGNvbm5lY3Rpb25JRCwgc3RvcmFnZU1h
cElEKSkpOwotICAgIG1fZXZlbnRMaXN0ZW5lcnMuYWRkKHN0ZDo6bWFrZV9wYWlyKGNvbm5lY3Rp
b25JRCwgc3RvcmFnZU1hcElEKSk7Ci19CisgICAgQVNTRVJUKCFtX2V2ZW50TGlzdGVuZXJzLmNv
bnRhaW5zKGNvbm5lY3Rpb25JRCkpOwogCi12b2lkIFN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQXJl
YTo6cmVtb3ZlTGlzdGVuZXIoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uSUQs
IHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCkKLXsKLSAgICBBU1NFUlQoaXNFcGhlbWVyYWwoKSB8fCBt
X2V2ZW50TGlzdGVuZXJzLmNvbnRhaW5zKHN0ZDo6bWFrZV9wYWlyKGNvbm5lY3Rpb25JRCwgc3Rv
cmFnZU1hcElEKSkpOwotICAgIG1fZXZlbnRMaXN0ZW5lcnMucmVtb3ZlKHN0ZDo6bWFrZV9wYWly
KGNvbm5lY3Rpb25JRCwgc3RvcmFnZU1hcElEKSk7CisgICAgaWYgKG1fZXZlbnRMaXN0ZW5lcnMu
aXNFbXB0eSgpICYmICFpc0VwaGVtZXJhbCgpKQorICAgICAgICBvcGVuRGF0YWJhc2VBbmRJbXBv
cnRJdGVtc0lmTmVlZGVkKCk7CisKKyAgICBtX2V2ZW50TGlzdGVuZXJzLmFkZChjb25uZWN0aW9u
SUQpOwogfQogCi1ib29sIFN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQXJlYTo6aGFzTGlzdGVuZXIo
SVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uSUQsIHVpbnQ2NF90IHN0b3JhZ2VN
YXBJRCkgY29uc3QKK3ZvaWQgU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VBcmVhOjpyZW1vdmVMaXN0
ZW5lcihJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGNvbm5lY3Rpb25JRCkKIHsKLSAgICByZXR1
cm4gbV9ldmVudExpc3RlbmVycy5jb250YWlucyhzdGQ6Om1ha2VfcGFpcihjb25uZWN0aW9uSUQs
IHN0b3JhZ2VNYXBJRCkpOworICAgIG1fZXZlbnRMaXN0ZW5lcnMucmVtb3ZlKGNvbm5lY3Rpb25J
RCk7CiB9CiAKIFJlZjxTdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUFyZWE+IFN0b3JhZ2VNYW5hZ2Vy
OjpTdG9yYWdlQXJlYTo6Y2xvbmUoKSBjb25zdApAQCAtMjMzLDI0ICsxOTMsNiBAQCB2b2lkIFN0
b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQXJlYTo6c2V0SXRlbShJUEM6OkNvbm5lY3Rpb246OlVuaXF1
ZUlEIHNvdXJjZUNvbm5lYwogICAgIGRpc3BhdGNoRXZlbnRzKHNvdXJjZUNvbm5lY3Rpb24sIHNv
dXJjZVN0b3JhZ2VBcmVhSUQsIGtleSwgb2xkVmFsdWUsIHZhbHVlLCB1cmxTdHJpbmcpOwogfQog
Ci12b2lkIFN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQXJlYTo6c2V0SXRlbXMoY29uc3QgSGFzaE1h
cDxTdHJpbmcsIFN0cmluZz4mIGl0ZW1zKQotewotICAgIC8vIEltcG9ydCBpdGVtcyBmcm9tIHdl
YiBwcm9jZXNzIGlmIGl0ZW1zIGFyZSBub3Qgc3RvcmVkIG9uIGRpc2suCi0gICAgaWYgKCFpc0Vw
aGVtZXJhbCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBmb3IgKGF1dG8mIGl0ZW0gOiBpdGVt
cykgewotICAgICAgICBTdHJpbmcgb2xkVmFsdWU7Ci0gICAgICAgIGJvb2wgcXVvdGFFeGNlcHRp
b247Ci0gICAgICAgIGF1dG8gbmV3U3RvcmFnZU1hcCA9IG1fc3RvcmFnZU1hcC0+c2V0SXRlbShp
dGVtLmtleSwgaXRlbS52YWx1ZSwgb2xkVmFsdWUsIHF1b3RhRXhjZXB0aW9uKTsKLSAgICAgICAg
aWYgKG5ld1N0b3JhZ2VNYXApCi0gICAgICAgICAgICBtX3N0b3JhZ2VNYXAgPSBXVEZNb3ZlKG5l
d1N0b3JhZ2VNYXApOwotICAgICAgICAKLSAgICAgICAgaWYgKHF1b3RhRXhjZXB0aW9uKQotICAg
ICAgICAgICAgcmV0dXJuOwotICAgIH0KLX0KLQogdm9pZCBTdG9yYWdlTWFuYWdlcjo6U3RvcmFn
ZUFyZWE6OnJlbW92ZUl0ZW0oSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBzb3VyY2VDb25uZWN0
aW9uLCB1aW50NjRfdCBzb3VyY2VTdG9yYWdlQXJlYUlELCBjb25zdCBTdHJpbmcmIGtleSwgY29u
c3QgU3RyaW5nJiB1cmxTdHJpbmcpCiB7CiAgICAgb3BlbkRhdGFiYXNlQW5kSW1wb3J0SXRlbXNJ
Zk5lZWRlZCgpOwpAQCAtMzAxLDcgKzI0Myw3IEBAIHZvaWQgU3RvcmFnZU1hbmFnZXI6OlN0b3Jh
Z2VBcmVhOjpjbGVhcigpCiAgICAgfQogCiAgICAgZm9yIChhdXRvIGl0ID0gbV9ldmVudExpc3Rl
bmVycy5iZWdpbigpLCBlbmQgPSBtX2V2ZW50TGlzdGVuZXJzLmVuZCgpOyBpdCAhPSBlbmQ7ICsr
aXQpIHsKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb25uZWN0aW9uSUQgPSBp
dC0+Zmlyc3QsIGRlc3RpbmF0aW9uU3RvcmFnZUFyZWFJRCA9IGl0LT5zZWNvbmRdIHsKKyAgICAg
ICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb25uZWN0aW9uSUQgPSAqaXQsIGRlc3RpbmF0
aW9uU3RvcmFnZUFyZWFJRCA9IG1faWRlbnRpZmllcl0gewogICAgICAgICAgICAgaWYgKGF1dG8q
IGNvbm5lY3Rpb24gPSBJUEM6OkNvbm5lY3Rpb246OmNvbm5lY3Rpb24oY29ubmVjdGlvbklEKSkK
ICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlQXJlYU1h
cDo6Q2xlYXJDYWNoZSgpLCBkZXN0aW5hdGlvblN0b3JhZ2VBcmVhSUQpOwogICAgICAgICB9KTsK
QEAgLTMxNCw5ICsyNTYsMTAgQEAgdm9pZCBTdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUFyZWE6Om9w
ZW5EYXRhYmFzZUFuZEltcG9ydEl0ZW1zSWZOZWVkZWQoKSBjb25zdAogICAgICAgICByZXR1cm47
CiAKICAgICBBU1NFUlQobV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPnN0b3JhZ2VNYW5hZ2VyKCkt
Pm1fbG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyKTsKKyAgICBBU1NFUlQobV9xdWV1ZSk7CiAg
ICAgLy8gV2Ugb3BlbiB0aGUgZGF0YWJhc2UgaGVyZSBldmVuIGlmIHdlJ3ZlIGFscmVhZHkgaW1w
b3J0ZWQgb3VyIGl0ZW1zIHRvIGVuc3VyZSB0aGF0IHRoZSBkYXRhYmFzZSBpcyBvcGVuIGlmIHdl
IG5lZWQgdG8gd3JpdGUgdG8gaXQuCiAgICAgaWYgKCFtX2xvY2FsU3RvcmFnZURhdGFiYXNlKQot
ICAgICAgICBtX2xvY2FsU3RvcmFnZURhdGFiYXNlID0gTG9jYWxTdG9yYWdlRGF0YWJhc2U6OmNy
ZWF0ZShtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZS0+c3RvcmFnZU1hbmFnZXIoKS0+bV9xdWV1ZS5j
b3B5UmVmKCksICptX2xvY2FsU3RvcmFnZU5hbWVzcGFjZS0+c3RvcmFnZU1hbmFnZXIoKS0+bV9s
b2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIsIG1fc2VjdXJpdHlPcmlnaW4pOworICAgICAgICBt
X2xvY2FsU3RvcmFnZURhdGFiYXNlID0gTG9jYWxTdG9yYWdlRGF0YWJhc2U6OmNyZWF0ZSgqbV9x
dWV1ZSwgKm1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlLT5zdG9yYWdlTWFuYWdlcigpLT5tX2xvY2Fs
U3RvcmFnZURhdGFiYXNlVHJhY2tlciwgbV9zZWN1cml0eU9yaWdpbik7CiAKICAgICBpZiAobV9k
aWRJbXBvcnRJdGVtc0Zyb21EYXRhYmFzZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzI4LDkgKzI3
MSw5IEBAIHZvaWQgU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VBcmVhOjpvcGVuRGF0YWJhc2VBbmRJ
bXBvcnRJdGVtc0lmTmVlZGVkKCkgY29uc3QKIHZvaWQgU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VB
cmVhOjpkaXNwYXRjaEV2ZW50cyhJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIHNvdXJjZUNvbm5l
Y3Rpb24sIHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIGNvbnN0IFN0cmluZyYga2V5LCBj
b25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBjb25zdCBTdHJp
bmcmIHVybFN0cmluZykgY29uc3QKIHsKICAgICBmb3IgKGF1dG8gaXQgPSBtX2V2ZW50TGlzdGVu
ZXJzLmJlZ2luKCksIGVuZCA9IG1fZXZlbnRMaXN0ZW5lcnMuZW5kKCk7IGl0ICE9IGVuZDsgKytp
dCkgewotICAgICAgICBzb3VyY2VTdG9yYWdlQXJlYUlEID0gaXQtPmZpcnN0ID09IHNvdXJjZUNv
bm5lY3Rpb24gPyBzb3VyY2VTdG9yYWdlQXJlYUlEIDogMDsKKyAgICAgICAgc291cmNlU3RvcmFn
ZUFyZWFJRCA9ICppdCA9PSBzb3VyY2VDb25uZWN0aW9uID8gc291cmNlU3RvcmFnZUFyZWFJRCA6
IDA7CiAKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb25uZWN0aW9uSUQgPSBp
dC0+Zmlyc3QsIHNvdXJjZVN0b3JhZ2VBcmVhSUQsIGRlc3RpbmF0aW9uU3RvcmFnZUFyZWFJRCA9
IGl0LT5zZWNvbmQsIGtleSA9IGtleS5pc29sYXRlZENvcHkoKSwgb2xkVmFsdWUgPSBvbGRWYWx1
ZS5pc29sYXRlZENvcHkoKSwgbmV3VmFsdWUgPSBuZXdWYWx1ZS5pc29sYXRlZENvcHkoKSwgdXJs
U3RyaW5nID0gdXJsU3RyaW5nLmlzb2xhdGVkQ29weSgpXSB7CisgICAgICAgIFJ1bkxvb3A6Om1h
aW4oKS5kaXNwYXRjaChbY29ubmVjdGlvbklEID0gKml0LCBzb3VyY2VTdG9yYWdlQXJlYUlELCBk
ZXN0aW5hdGlvblN0b3JhZ2VBcmVhSUQgPSBtX2lkZW50aWZpZXIsIGtleSA9IGtleS5pc29sYXRl
ZENvcHkoKSwgb2xkVmFsdWUgPSBvbGRWYWx1ZS5pc29sYXRlZENvcHkoKSwgbmV3VmFsdWUgPSBu
ZXdWYWx1ZS5pc29sYXRlZENvcHkoKSwgdXJsU3RyaW5nID0gdXJsU3RyaW5nLmlzb2xhdGVkQ29w
eSgpXSB7CiAgICAgICAgICAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IElQQzo6Q29ubmVjdGlv
bjo6Y29ubmVjdGlvbihjb25uZWN0aW9uSUQpKQogICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24t
PnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VBcmVhTWFwOjpEaXNwYXRjaFN0b3JhZ2VFdmVudChzb3Vy
Y2VTdG9yYWdlQXJlYUlELCBrZXksIG9sZFZhbHVlLCBuZXdWYWx1ZSwgdXJsU3RyaW5nKSwgZGVz
dGluYXRpb25TdG9yYWdlQXJlYUlEKTsKICAgICAgICAgfSk7CkBAIC0zNDIsOCArMjg1LDYgQEAg
UmVmPFN0b3JhZ2VNYW5hZ2VyOjpMb2NhbFN0b3JhZ2VOYW1lc3BhY2U+IFN0b3JhZ2VNYW5hZ2Vy
OjpMb2NhbFN0b3JhZ2VOYW1lc3BhY2UKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBMb2NhbFN0
b3JhZ2VOYW1lc3BhY2Uoc3RvcmFnZU1hbmFnZXIsIHN0b3JhZ2VOYW1lc3BhY2VJRCkpOwogfQog
Ci0vLyBGSVhNRTogVGhlIHF1b3RhIHZhbHVlIGlzIGNvcGllZCBmcm9tIEdyb3VwU2V0dGluZ3Mu
Y3BwLgotLy8gV2Ugc2hvdWxkIGludmVzdGlnYXRlIGEgd2F5IHRvIHNoYXJlIGl0IHdpdGggV2Vi
Q29yZS4KIFN0b3JhZ2VNYW5hZ2VyOjpMb2NhbFN0b3JhZ2VOYW1lc3BhY2U6OkxvY2FsU3RvcmFn
ZU5hbWVzcGFjZShTdG9yYWdlTWFuYWdlciYgc3RvcmFnZU1hbmFnZXIsIHVpbnQ2NF90IHN0b3Jh
Z2VOYW1lc3BhY2VJRCkKICAgICA6IG1fc3RvcmFnZU1hbmFnZXIoc3RvcmFnZU1hbmFnZXIpCiAg
ICAgLCBtX3F1b3RhSW5CeXRlcyhsb2NhbFN0b3JhZ2VEYXRhYmFzZVF1b3RhSW5CeXRlcykKQEAg
LTM1NCw3ICsyOTUsNyBAQCBTdG9yYWdlTWFuYWdlcjo6TG9jYWxTdG9yYWdlTmFtZXNwYWNlOjp+
TG9jYWxTdG9yYWdlTmFtZXNwYWNlKCkKIHsKIH0KIAotYXV0byBTdG9yYWdlTWFuYWdlcjo6TG9j
YWxTdG9yYWdlTmFtZXNwYWNlOjpnZXRPckNyZWF0ZVN0b3JhZ2VBcmVhKFNlY3VyaXR5T3JpZ2lu
RGF0YSYmIHNlY3VyaXR5T3JpZ2luLCBJc0VwaGVtZXJhbCBpc0VwaGVtZXJhbCkgLT4gUmVmPFN0
b3JhZ2VBcmVhPgorUmVmPFN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQXJlYT4gU3RvcmFnZU1hbmFn
ZXI6OkxvY2FsU3RvcmFnZU5hbWVzcGFjZTo6Z2V0T3JDcmVhdGVTdG9yYWdlQXJlYShTZWN1cml0
eU9yaWdpbkRhdGEmJiBzZWN1cml0eU9yaWdpbiwgSXNFcGhlbWVyYWwgaXNFcGhlbWVyYWwpCiB7
CiAgICAgcmV0dXJuICptX3N0b3JhZ2VBcmVhTWFwLmVuc3VyZShzZWN1cml0eU9yaWdpbiwgWyZd
KCkgbXV0YWJsZSB7CiAgICAgICAgIHJldHVybiBTdG9yYWdlQXJlYTo6Y3JlYXRlKGlzRXBoZW1l
cmFsID09IElzRXBoZW1lcmFsOjpZZXMgPyBudWxscHRyIDogdGhpcywgV1RGTW92ZShzZWN1cml0
eU9yaWdpbiksIG1fcXVvdGFJbkJ5dGVzKTsKQEAgLTM4NCwxMiArMzI1LDYgQEAgVmVjdG9yPFNl
Y3VyaXR5T3JpZ2luRGF0YT4gU3RvcmFnZU1hbmFnZXI6OkxvY2FsU3RvcmFnZU5hbWVzcGFjZTo6
ZXBoZW1lcmFsT3JpZ2kKICAgICByZXR1cm4gb3JpZ2luczsKIH0KIAotdm9pZCBTdG9yYWdlTWFu
YWdlcjo6TG9jYWxTdG9yYWdlTmFtZXNwYWNlOjpjbG9uZVRvKExvY2FsU3RvcmFnZU5hbWVzcGFj
ZSYgbmV3TG9jYWxTdG9yYWdlTmFtZXNwYWNlKQotewotICAgIGZvciAoYXV0byYgcGFpciA6IG1f
c3RvcmFnZUFyZWFNYXApCi0gICAgICAgIG5ld0xvY2FsU3RvcmFnZU5hbWVzcGFjZS5tX3N0b3Jh
Z2VBcmVhTWFwLmFkZChwYWlyLmtleSwgcGFpci52YWx1ZS0+Y2xvbmUoKSk7Ci19Ci0KIGNsYXNz
IFN0b3JhZ2VNYW5hZ2VyOjpTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSA6IHB1YmxpYyBUaHJlYWRT
YWZlUmVmQ291bnRlZDxTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZT4gewogcHVibGljOgogICAgIHN0
YXRpYyBSZWY8U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZSh1bnNpZ25lZCBxdW90YUlu
Qnl0ZXMpOwpAQCAtMzk3LDEwICszMzIsNiBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzRW1wdHko
KSBjb25zdCB7IHJldHVybiBtX3N0b3JhZ2VBcmVhTWFwLmlzRW1wdHkoKTsgfQogCi0gICAgY29u
c3QgSGFzaFNldDxJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEPiYgYWxsb3dlZENvbm5lY3Rpb25z
KCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd2VkQ29ubmVjdGlvbnM7IH0KLSAgICB2b2lkIGFkZEFs
bG93ZWRDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQpOwotICAgIHZvaWQgcmVt
b3ZlQWxsb3dlZENvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCk7Ci0KICAgICBS
ZWY8U3RvcmFnZUFyZWE+IGdldE9yQ3JlYXRlU3RvcmFnZUFyZWEoU2VjdXJpdHlPcmlnaW5EYXRh
JiYpOwogCiAgICAgdm9pZCBjbG9uZVRvKFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlJiBuZXdTZXNz
aW9uU3RvcmFnZU5hbWVzcGFjZSk7CkBAIC00MzMsNyArMzY0LDYgQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICBleHBsaWNpdCBTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YUlu
Qnl0ZXMpOwogCi0gICAgSGFzaFNldDxJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEPiBtX2FsbG93
ZWRDb25uZWN0aW9uczsKICAgICB1bnNpZ25lZCBtX3F1b3RhSW5CeXRlczsKIAogICAgIEhhc2hN
YXA8U2VjdXJpdHlPcmlnaW5EYXRhLCBSZWZQdHI8U3RvcmFnZUFyZWE+PiBtX3N0b3JhZ2VBcmVh
TWFwOwpAQCAtNDUzLDE4ICszODMsNyBAQCBTdG9yYWdlTWFuYWdlcjo6U2Vzc2lvblN0b3JhZ2VO
YW1lc3BhY2U6On5TZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSgpCiB7CiB9CiAKLXZvaWQgU3RvcmFn
ZU1hbmFnZXI6OlNlc3Npb25TdG9yYWdlTmFtZXNwYWNlOjphZGRBbGxvd2VkQ29ubmVjdGlvbihJ
UEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGFsbG93ZWRDb25uZWN0aW9uKQotewotICAgIG1fYWxs
b3dlZENvbm5lY3Rpb25zLmFkZChhbGxvd2VkQ29ubmVjdGlvbik7Ci19Ci0KLQotdm9pZCBTdG9y
YWdlTWFuYWdlcjo6U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2U6OnJlbW92ZUFsbG93ZWRDb25uZWN0
aW9uKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgYWxsb3dlZENvbm5lY3Rpb24pCi17Ci0gICAg
QVNTRVJUKG1fYWxsb3dlZENvbm5lY3Rpb25zLmNvbnRhaW5zKGFsbG93ZWRDb25uZWN0aW9uKSk7
Ci0gICAgbV9hbGxvd2VkQ29ubmVjdGlvbnMucmVtb3ZlKGFsbG93ZWRDb25uZWN0aW9uKTsKLX0K
LWF1dG8gU3RvcmFnZU1hbmFnZXI6OlNlc3Npb25TdG9yYWdlTmFtZXNwYWNlOjpnZXRPckNyZWF0
ZVN0b3JhZ2VBcmVhKFNlY3VyaXR5T3JpZ2luRGF0YSYmIHNlY3VyaXR5T3JpZ2luKSAtPiBSZWY8
U3RvcmFnZUFyZWE+CitSZWY8U3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VBcmVhPiBTdG9yYWdlTWFu
YWdlcjo6U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2U6OmdldE9yQ3JlYXRlU3RvcmFnZUFyZWEoU2Vj
dXJpdHlPcmlnaW5EYXRhJiYgc2VjdXJpdHlPcmlnaW4pCiB7CiAgICAgcmV0dXJuICptX3N0b3Jh
Z2VBcmVhTWFwLmVuc3VyZShzZWN1cml0eU9yaWdpbiwgW3RoaXMsICZzZWN1cml0eU9yaWdpbl0o
KSBtdXRhYmxlIHsKICAgICAgICAgcmV0dXJuIFN0b3JhZ2VBcmVhOjpjcmVhdGUobnVsbHB0ciwg
V1RGTW92ZShzZWN1cml0eU9yaWdpbiksIG1fcXVvdGFJbkJ5dGVzKTsKQEAgLTQ4NSw0OTkgKzQw
NCwxNzggQEAgUmVmPFN0b3JhZ2VNYW5hZ2VyPiBTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlKFN0cmlu
ZyYmIGxvY2FsU3RvcmFnZURpcmVjdG9yeSkKIH0KIAogU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VN
YW5hZ2VyKFN0cmluZyYmIGxvY2FsU3RvcmFnZURpcmVjdG9yeSkKLSAgICA6IG1fcXVldWUoV29y
a1F1ZXVlOjpjcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuU3RvcmFnZU1hbmFnZXIiKSkKIHsKLSAg
ICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWlu
KCkpOwogCiAgICAgLy8gTWFrZSBzdXJlIHRoZSBlbmNvZGluZyBpcyBpbml0aWFsaXplZCBiZWZv
cmUgd2Ugc3RhcnQgZGlzcGF0Y2hpbmcgdGhpbmdzIHRvIHRoZSBxdWV1ZS4KICAgICBVVEY4RW5j
b2RpbmcoKTsKICAgICBpZiAoIWxvY2FsU3RvcmFnZURpcmVjdG9yeS5pc051bGwoKSkKLSAgICAg
ICAgbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIgPSBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRy
YWNrZXI6OmNyZWF0ZShtX3F1ZXVlLmNvcHlSZWYoKSwgV1RGTW92ZShsb2NhbFN0b3JhZ2VEaXJl
Y3RvcnkpKTsKKyAgICAgICAgbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIgPSBMb2NhbFN0
b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OmNyZWF0ZShXVEZNb3ZlKGxvY2FsU3RvcmFnZURpcmVjdG9y
eSkpOwogfQogCiBTdG9yYWdlTWFuYWdlcjo6flN0b3JhZ2VNYW5hZ2VyKCkKIHsKLSAgICBBU1NF
UlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwog
fQogCiB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1
aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcykKIHsKLSAg
ICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBzdG9yYWdlTmFtZXNwYWNlSUQsIHF1b3RhSW5CeXRlc10oKSBtdXRhYmxlIHsKLSAgICAgICAg
bV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMuZW5zdXJlKHN0b3JhZ2VOYW1lc3BhY2VJRCwgW3F1
b3RhSW5CeXRlc10gewotICAgICAgICAgICAgcmV0dXJuIFNlc3Npb25TdG9yYWdlTmFtZXNwYWNl
OjpjcmVhdGUocXVvdGFJbkJ5dGVzKTsKLSAgICAgICAgfSk7CisgICAgQVNTRVJUKCFSdW5Mb29w
Ojppc01haW4oKSk7CisgICAgbV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMuZW5zdXJlKHN0b3Jh
Z2VOYW1lc3BhY2VJRCwgW3F1b3RhSW5CeXRlc10geworICAgICAgICByZXR1cm4gU2Vzc2lvblN0
b3JhZ2VOYW1lc3BhY2U6OmNyZWF0ZShxdW90YUluQnl0ZXMpOwogICAgIH0pOwogfQogCiB2b2lk
IFN0b3JhZ2VNYW5hZ2VyOjpkZXN0cm95U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3Qg
c3RvcmFnZU5hbWVzcGFjZUlEKQogewotICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHN0b3JhZ2VOYW1lc3BhY2VJRF0gewotICAgICAg
ICBBU1NFUlQobV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMuY29udGFpbnMoc3RvcmFnZU5hbWVz
cGFjZUlEKSk7Ci0gICAgICAgIGlmIChhdXRvKiBzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSA9IG1f
c2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLmdldChzdG9yYWdlTmFtZXNwYWNlSUQpKSB7Ci0gICAg
ICAgICAgICBpZiAoc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UtPmFsbG93ZWRDb25uZWN0aW9ucygp
LmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICBtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlcy5y
ZW1vdmUoc3RvcmFnZU5hbWVzcGFjZUlEKTsKLSAgICAgICAgfQotICAgIH0pOwotfQotCi12b2lk
IFN0b3JhZ2VNYW5hZ2VyOjphZGRBbGxvd2VkU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0
aW9uKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgSVBDOjpDb25uZWN0aW9uJiBhbGxvd2Vk
Q29ubmVjdGlvbikKLXsKLSAgICBhdXRvIGFsbG93ZWRDb25uZWN0aW9uSUQgPSBhbGxvd2VkQ29u
bmVjdGlvbi51bmlxdWVJRCgpOwotICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9jb25uZWN0aW9ucy5h
ZGQoYWxsb3dlZENvbm5lY3Rpb25JRCk7Ci0gICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KQot
ICAgICAgICBhbGxvd2VkQ29ubmVjdGlvbi5hZGRXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoTWVz
c2FnZXM6OlN0b3JhZ2VNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcXVldWUuZ2V0
KCksIHRoaXMpOwotCi0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgYWxsb3dlZENvbm5lY3Rpb25JRCwgc3RvcmFnZU5hbWVzcGFjZUlE
XSgpIG11dGFibGUgewotICAgICAgICBBU1NFUlQobV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMu
Y29udGFpbnMoc3RvcmFnZU5hbWVzcGFjZUlEKSk7Ci0KLSAgICAgICAgbV9zZXNzaW9uU3RvcmFn
ZU5hbWVzcGFjZXMuZ2V0KHN0b3JhZ2VOYW1lc3BhY2VJRCktPmFkZEFsbG93ZWRDb25uZWN0aW9u
KGFsbG93ZWRDb25uZWN0aW9uSUQpOwotICAgIH0pOwotfQotCi12b2lkIFN0b3JhZ2VNYW5hZ2Vy
OjpyZW1vdmVBbGxvd2VkU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0aW9uKHVpbnQ2NF90
IHN0b3JhZ2VOYW1lc3BhY2VJRCwgSVBDOjpDb25uZWN0aW9uJiBhbGxvd2VkQ29ubmVjdGlvbikK
LXsKLSAgICBhdXRvIGFsbG93ZWRDb25uZWN0aW9uSUQgPSBhbGxvd2VkQ29ubmVjdGlvbi51bmlx
dWVJRCgpOwotICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIGFsbG93ZWRDb25uZWN0aW9uSUQsIHN0b3JhZ2VOYW1lc3BhY2VJRF0oKSBt
dXRhYmxlIHsKLSAgICAgICAgQVNTRVJUKG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLmNvbnRh
aW5zKHN0b3JhZ2VOYW1lc3BhY2VJRCkpOwotICAgICAgICBpZiAoYXV0byogc2Vzc2lvblN0b3Jh
Z2VOYW1lc3BhY2UgPSBtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlcy5nZXQoc3RvcmFnZU5hbWVz
cGFjZUlEKSkKLSAgICAgICAgICAgIHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlLT5yZW1vdmVBbGxv
d2VkQ29ubmVjdGlvbihhbGxvd2VkQ29ubmVjdGlvbklEKTsKLSAgICB9KTsKKyAgICBBU1NFUlQo
IVJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBBU1NFUlQobV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFj
ZXMuY29udGFpbnMoc3RvcmFnZU5hbWVzcGFjZUlEKSk7CisgICAgaWYgKGF1dG8qIHNlc3Npb25T
dG9yYWdlTmFtZXNwYWNlID0gbV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMuZ2V0KHN0b3JhZ2VO
YW1lc3BhY2VJRCkpCisgICAgICAgIG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLnJlbW92ZShz
dG9yYWdlTmFtZXNwYWNlSUQpOwogfQogCiB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpjbG9uZVNlc3Np
b25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgdWludDY0X3Qg
bmV3U3RvcmFnZU5hbWVzcGFjZUlEKQogewotICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHN0b3JhZ2VOYW1lc3BhY2VJRCwgbmV3U3Rv
cmFnZU5hbWVzcGFjZUlEXSB7Ci0gICAgICAgIFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKiBzZXNz
aW9uU3RvcmFnZU5hbWVzcGFjZSA9IG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLmdldChzdG9y
YWdlTmFtZXNwYWNlSUQpOwotICAgICAgICBpZiAoIXNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKSB7
Ci0gICAgICAgICAgICAvLyBGSVhNRTogV2UgY2FuIGdldCBpbnRvIHRoaXMgc2l0dWF0aW9uIGlm
IHNvbWVvbmUgY2xvc2VzIHRoZSBvcmlnaW5hdGluZyBwYWdlIGZyb20gd2l0aGluIGEKLSAgICAg
ICAgICAgIC8vIGNyZWF0ZU5ld1BhZ2UgY2FsbGJhY2suIFdlIGJhaWwgZm9yIG5vdywgYnV0IHdl
IHNob3VsZCByZWFsbHkgZmluZCBhIHdheSB0byBrZWVwIHRoZSBzZXNzaW9uIHN0b3JhZ2UgYWxp
dmUKLSAgICAgICAgICAgIC8vIHNvIHdlIHdlJ2xsIGNsb25lIHRoZSBzZXNzaW9uIHN0b3JhZ2Ug
Y29ycmVjdGx5LgotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgU2Vz
c2lvblN0b3JhZ2VOYW1lc3BhY2UqIG5ld1Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlID0gbV9zZXNz
aW9uU3RvcmFnZU5hbWVzcGFjZXMuZ2V0KG5ld1N0b3JhZ2VOYW1lc3BhY2VJRCk7Ci0gICAgICAg
IEFTU0VSVChuZXdTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSk7CisgICAgQVNTRVJUKCFSdW5Mb29w
Ojppc01haW4oKSk7CisgICAgU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UqIHNlc3Npb25TdG9yYWdl
TmFtZXNwYWNlID0gbV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMuZ2V0KHN0b3JhZ2VOYW1lc3Bh
Y2VJRCk7CisgICAgaWYgKCFzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSkKKyAgICAgICAgcmV0dXJu
OwogCi0gICAgICAgIHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlLT5jbG9uZVRvKCpuZXdTZXNzaW9u
U3RvcmFnZU5hbWVzcGFjZSk7CisgICAgU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UqIG5ld1Nlc3Np
b25TdG9yYWdlTmFtZXNwYWNlID0gZ2V0T3JDcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShu
ZXdTdG9yYWdlTmFtZXNwYWNlSUQpOworICAgIEFTU0VSVChuZXdTZXNzaW9uU3RvcmFnZU5hbWVz
cGFjZSk7CiAKLSAgICAgICAgaWYgKCFtX2xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcikgewot
ICAgICAgICAgICAgaWYgKGF1dG8qIGxvY2FsU3RvcmFnZU5hbWVzcGFjZSA9IG1fbG9jYWxTdG9y
YWdlTmFtZXNwYWNlcy5nZXQoc3RvcmFnZU5hbWVzcGFjZUlEKSkgewotICAgICAgICAgICAgICAg
IExvY2FsU3RvcmFnZU5hbWVzcGFjZSogbmV3bG9jYWxTdG9yYWdlTmFtZXNwYWNlID0gZ2V0T3JD
cmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UobmV3U3RvcmFnZU5hbWVzcGFjZUlEKTsKLSAgICAg
ICAgICAgICAgICBsb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPmNsb25lVG8oKm5ld2xvY2FsU3RvcmFn
ZU5hbWVzcGFjZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9KTsKLX0KLQotdm9p
ZCBTdG9yYWdlTWFuYWdlcjo6cHJvY2Vzc0RpZENsb3NlQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24pCi17Ci0gICAgaWYgKG1fY29ubmVjdGlvbnMucmVtb3ZlKGNvbm5lY3Rp
b24udW5pcXVlSUQoKSkpCi0gICAgICAgIGNvbm5lY3Rpb24ucmVtb3ZlV29ya1F1ZXVlTWVzc2Fn
ZVJlY2VpdmVyKE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
KTsKLQotICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIGNvbm5lY3Rpb25JRCA9IGNvbm5lY3Rpb24udW5pcXVlSUQoKV0oKSBtdXRhYmxl
IHsKLSAgICAgICAgVmVjdG9yPHN0ZDo6cGFpcjxJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCB1
aW50NjRfdD4+IGNvbm5lY3Rpb25BbmRTdG9yYWdlTWFwSURQYWlyc1RvUmVtb3ZlOwotICAgICAg
ICBmb3IgKGF1dG8mIHN0b3JhZ2VBcmVhIDogbV9zdG9yYWdlQXJlYXNCeUNvbm5lY3Rpb24pIHsK
LSAgICAgICAgICAgIGlmIChzdG9yYWdlQXJlYS5rZXkuZmlyc3QgIT0gY29ubmVjdGlvbklEKQot
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBzdG9y
YWdlQXJlYS52YWx1ZS0+cmVtb3ZlTGlzdGVuZXIoc3RvcmFnZUFyZWEua2V5LmZpcnN0LCBzdG9y
YWdlQXJlYS5rZXkuc2Vjb25kKTsKLSAgICAgICAgICAgIGNvbm5lY3Rpb25BbmRTdG9yYWdlTWFw
SURQYWlyc1RvUmVtb3ZlLmFwcGVuZChzdG9yYWdlQXJlYS5rZXkpOwotICAgICAgICB9Ci0gICAg
ICAgIAotICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBjb25uZWN0aW9uQW5kU3RvcmFnZU1hcElE
UGFpcnNUb1JlbW92ZSkKLSAgICAgICAgICAgIG1fc3RvcmFnZUFyZWFzQnlDb25uZWN0aW9uLnJl
bW92ZShwYWlyKTsKLQotICAgICAgICBWZWN0b3I8dWludDY0X3Q+IHNlc3Npb25TdG9yYWdlTmFt
ZVNwYWNlSURzVG9SZW1vdmU7Ci0gICAgICAgIGZvciAoYXV0byYgc2Vzc2lvblN0b3JhZ2VOYW1l
c3BhY2UgOiBtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlcykgewotICAgICAgICAgICAgaWYgKHNl
c3Npb25TdG9yYWdlTmFtZXNwYWNlLnZhbHVlLT5hbGxvd2VkQ29ubmVjdGlvbnMoKS5jb250YWlu
cyhjb25uZWN0aW9uSUQpKQotICAgICAgICAgICAgICAgIHNlc3Npb25TdG9yYWdlTmFtZXNwYWNl
LnZhbHVlLT5yZW1vdmVBbGxvd2VkQ29ubmVjdGlvbihjb25uZWN0aW9uSUQpOwotICAgICAgICAg
ICAgCi0gICAgICAgICAgICBpZiAoc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UudmFsdWUtPmFsbG93
ZWRDb25uZWN0aW9ucygpLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICBzZXNzaW9uU3RvcmFn
ZU5hbWVTcGFjZUlEc1RvUmVtb3ZlLmFwcGVuZChzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS5rZXkp
OwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBmb3IgKGF1dG8gaWQgOiBzZXNzaW9uU3Rv
cmFnZU5hbWVTcGFjZUlEc1RvUmVtb3ZlKQotICAgICAgICAgICAgbV9zZXNzaW9uU3RvcmFnZU5h
bWVzcGFjZXMucmVtb3ZlKGlkKTsKLSAgICB9KTsKKyAgICBzZXNzaW9uU3RvcmFnZU5hbWVzcGFj
ZS0+Y2xvbmVUbygqbmV3U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UpOwogfQogCiB2b2lkIFN0b3Jh
Z2VNYW5hZ2VyOjpnZXRTZXNzaW9uU3RvcmFnZU9yaWdpbnMoRnVuY3Rpb248dm9pZChIYXNoU2V0
PFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
Ci0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBt
dXRhYmxlIHsKLSAgICAgICAgSGFzaFNldDxTZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdpbnM7Ci0K
LSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSA6IG1fc2Vz
c2lvblN0b3JhZ2VOYW1lc3BhY2VzLnZhbHVlcygpKSB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8m
IG9yaWdpbiA6IHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlLT5vcmlnaW5zKCkpCi0gICAgICAgICAg
ICAgICAgb3JpZ2lucy5hZGQob3JpZ2luKTsKLSAgICAgICAgfQotCi0gICAgICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbb3JpZ2lucyA9IFdURk1vdmUob3JpZ2lucyksIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKG9yaWdpbnMpKTsKLSAgICAgICAgfSk7Cisg
ICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisgICAgSGFzaFNldDxTZWN1cml0eU9yaWdp
bkRhdGE+IG9yaWdpbnM7CisgICAgZm9yIChjb25zdCBhdXRvJiBzZXNzaW9uU3RvcmFnZU5hbWVz
cGFjZSA6IG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLnZhbHVlcygpKSB7CisgICAgICAgIGZv
ciAoYXV0byYgb3JpZ2luIDogc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UtPm9yaWdpbnMoKSkKKyAg
ICAgICAgICAgIG9yaWdpbnMuYWRkKG9yaWdpbik7CisgICAgfQorICAgIFJ1bkxvb3A6Om1haW4o
KS5kaXNwYXRjaChbb3JpZ2lucyA9IFdURk1vdmUob3JpZ2lucyksIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFdURk1vdmUob3JpZ2lucykpOwogICAgIH0pOwogfQogCiB2b2lkIFN0b3Jh
Z2VNYW5hZ2VyOjpkZWxldGVTZXNzaW9uU3RvcmFnZU9yaWdpbnMoRnVuY3Rpb248dm9pZCgpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgIGZvciAoYXV0byYgc2Vzc2lv
blN0b3JhZ2VOYW1lc3BhY2UgOiBtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkK
LSAgICAgICAgICAgIHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlLT5jbGVhckFsbFN0b3JhZ2VBcmVh
cygpOworICAgIGZvciAoYXV0byYgc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UgOiBtX3Nlc3Npb25T
dG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkKKyAgICAgICAgc2Vzc2lvblN0b3JhZ2VOYW1lc3Bh
Y2UtPmNsZWFyQWxsU3RvcmFnZUFyZWFzKCk7CiAKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRp
c3BhdGNoKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICB9KTsKKyAgICBSdW5Mb29w
OjptYWluKCkuZGlzcGF0Y2goV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lk
IFN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVTZXNzaW9uU3RvcmFnZUVudHJpZXNGb3JPcmlnaW5zKGNv
bnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiBvcmlnaW5zLCBGdW5jdGlv
bjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2go
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29waWVkT3JpZ2lucyA9IGNy
b3NzVGhyZWFkQ29weShvcmlnaW5zKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgZm9yIChhdXRvJiBvcmlnaW4gOiBj
b3BpZWRPcmlnaW5zKSB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8mIHNlc3Npb25TdG9yYWdlTmFt
ZXNwYWNlIDogbV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMudmFsdWVzKCkpCi0gICAgICAgICAg
ICAgICAgc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UtPmNsZWFyU3RvcmFnZUFyZWFzTWF0Y2hpbmdP
cmlnaW4ob3JpZ2luKTsKLSAgICAgICAgfQorICAgIGZvciAoYXV0byYgb3JpZ2luIDogb3JpZ2lu
cykgeworICAgICAgICBmb3IgKGF1dG8mIHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlIDogbV9zZXNz
aW9uU3RvcmFnZU5hbWVzcGFjZXMudmFsdWVzKCkpCisgICAgICAgICAgICBzZXNzaW9uU3RvcmFn
ZU5hbWVzcGFjZS0+Y2xlYXJTdG9yYWdlQXJlYXNNYXRjaGluZ09yaWdpbihvcmlnaW4pOworICAg
IH0KIAotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwotICAgIH0pOworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgU3RvcmFnZU1hbmFnZXI6OmdldExvY2Fs
U3RvcmFnZU9yaWdpbnMoRnVuY3Rpb248dm9pZChIYXNoU2V0PFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgbV9xdWV1ZS0+ZGlzcGF0
Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgSGFz
aFNldDxTZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdpbnM7Ci0KLSAgICAgICAgaWYgKG1fbG9jYWxT
dG9yYWdlRGF0YWJhc2VUcmFja2VyKSB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6
IG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLT5vcmlnaW5zKCkpCisgICAgSGFzaFNldDxT
ZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdpbnM7CisgICAgaWYgKG1fbG9jYWxTdG9yYWdlRGF0YWJh
c2VUcmFja2VyKSB7CisgICAgICAgIGZvciAoYXV0byYgb3JpZ2luIDogbV9sb2NhbFN0b3JhZ2VE
YXRhYmFzZVRyYWNrZXItPm9yaWdpbnMoKSkKKyAgICAgICAgICAgIG9yaWdpbnMuYWRkKG9yaWdp
bi5pc29sYXRlZENvcHkoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZm9yIChjb25zdCBhdXRv
JiBsb2NhbFN0b3JhZ2VOYW1lU3BhY2UgOiBtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZXMudmFsdWVz
KCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byYgb3JpZ2luIDogbG9jYWxTdG9yYWdlTmFtZVNw
YWNlLT5lcGhlbWVyYWxPcmlnaW5zKCkpCiAgICAgICAgICAgICAgICAgb3JpZ2lucy5hZGQob3Jp
Z2luLmlzb2xhdGVkQ29weSgpKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGZvciAo
Y29uc3QgYXV0byYgbG9jYWxTdG9yYWdlTmFtZVNwYWNlIDogbV9sb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2VzLnZhbHVlcygpKSB7Ci0gICAgICAgICAgICAgICAgZm9yIChhdXRvJiBvcmlnaW4gOiBsb2Nh
bFN0b3JhZ2VOYW1lU3BhY2UtPmVwaGVtZXJhbE9yaWdpbnMoKSkKLSAgICAgICAgICAgICAgICAg
ICAgb3JpZ2lucy5hZGQob3JpZ2luLmlzb2xhdGVkQ29weSgpKTsKLSAgICAgICAgICAgIH0KICAg
ICAgICAgfQorICAgIH0KIAotICAgICAgICBmb3IgKGF1dG8mIHRyYW5zaWVudExvY2FsU3RvcmFn
ZU5hbWVzcGFjZSA6IG1fdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkg
ewotICAgICAgICAgICAgZm9yIChhdXRvJiBvcmlnaW4gOiB0cmFuc2llbnRMb2NhbFN0b3JhZ2VO
YW1lc3BhY2UtPm9yaWdpbnMoKSkKLSAgICAgICAgICAgICAgICBvcmlnaW5zLmFkZChvcmlnaW4u
aXNvbGF0ZWRDb3B5KCkpOwotICAgICAgICB9CisgICAgZm9yIChhdXRvJiB0cmFuc2llbnRMb2Nh
bFN0b3JhZ2VOYW1lc3BhY2UgOiBtX3RyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZXMudmFs
dWVzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvJiBvcmlnaW4gOiB0cmFuc2llbnRMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UtPm9yaWdpbnMoKSkKKyAgICAgICAgICAgIG9yaWdpbnMuYWRkKG9yaWdpbi5p
c29sYXRlZENvcHkoKSk7CisgICAgfQogCi0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRj
aChbb3JpZ2lucyA9IFdURk1vdmUob3JpZ2lucyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihXVEZNb3ZlKG9yaWdpbnMpKTsKLSAgICAgICAgfSk7CisgICAgUnVuTG9vcDo6bWFp
bigpLmRpc3BhdGNoKFtvcmlnaW5zID0gV1RGTW92ZShvcmlnaW5zKSwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoV1RGTW92ZShvcmlnaW5zKSk7CiAgICAgfSk7CiB9CiAKIHZvaWQgU3Rv
cmFnZU1hbmFnZXI6OmdldExvY2FsU3RvcmFnZU9yaWdpbkRldGFpbHMoRnVuY3Rpb248dm9pZChW
ZWN0b3I8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpPcmlnaW5EZXRhaWxzPiYmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICBWZWN0b3I8TG9jYWxTdG9yYWdl
RGF0YWJhc2VUcmFja2VyOjpPcmlnaW5EZXRhaWxzPiBvcmlnaW5EZXRhaWxzOwotICAgICAgICBp
ZiAobV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIpCi0gICAgICAgICAgICBvcmlnaW5EZXRh
aWxzID0gbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXItPm9yaWdpbkRldGFpbHMoKS5pc29s
YXRlZENvcHkoKTsKKyAgICBWZWN0b3I8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpPcmln
aW5EZXRhaWxzPiBvcmlnaW5EZXRhaWxzOworICAgIGlmIChtX2xvY2FsU3RvcmFnZURhdGFiYXNl
VHJhY2tlcikKKyAgICAgICAgb3JpZ2luRGV0YWlscyA9IG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VU
cmFja2VyLT5vcmlnaW5EZXRhaWxzKCkuaXNvbGF0ZWRDb3B5KCk7CiAKLSAgICAgICAgUnVuTG9v
cDo6bWFpbigpLmRpc3BhdGNoKFtvcmlnaW5EZXRhaWxzID0gV1RGTW92ZShvcmlnaW5EZXRhaWxz
KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRh
YmxlIHsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUob3JpZ2luRGV0YWls
cykpOwotICAgICAgICB9KTsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW29yaWdpbkRl
dGFpbHMgPSBXVEZNb3ZlKG9yaWdpbkRldGFpbHMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihXVEZNb3ZlKG9yaWdpbkRldGFpbHMpKTsKICAgICB9KTsKIH0KIAotdm9pZCBTdG9yYWdl
TWFuYWdlcjo6ZGVsZXRlTG9jYWxTdG9yYWdlRW50cmllc0Zvck9yaWdpbihjb25zdCBTZWN1cml0
eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKQordm9pZCBTdG9yYWdlTWFuYWdlcjo6ZGVsZXRl
TG9jYWxTdG9yYWdlT3JpZ2luc01vZGlmaWVkU2luY2UoV2FsbFRpbWUgdGltZSwgRnVuY3Rpb248
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvcGllZE9yaWdpbiA9IHNlY3Vy
aXR5T3JpZ2luLmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUgewotICAgICAgICBmb3IgKGF1dG8m
IGxvY2FsU3RvcmFnZU5hbWVzcGFjZSA6IG1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMo
KSkKLSAgICAgICAgICAgIGxvY2FsU3RvcmFnZU5hbWVzcGFjZS0+Y2xlYXJTdG9yYWdlQXJlYXNN
YXRjaGluZ09yaWdpbihjb3BpZWRPcmlnaW4pOworICAgIGlmIChtX2xvY2FsU3RvcmFnZURhdGFi
YXNlVHJhY2tlcikgeworICAgICAgICBhdXRvIG9yaWdpbnNUb0RlbGV0ZSA9IG1fbG9jYWxTdG9y
YWdlRGF0YWJhc2VUcmFja2VyLT5kYXRhYmFzZXNNb2RpZmllZFNpbmNlKHRpbWUpOwogCiAgICAg
ICAgIGZvciAoYXV0byYgdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlIDogbV90cmFuc2ll
bnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2VzLnZhbHVlcygpKQotICAgICAgICAgICAgdHJhbnNpZW50
TG9jYWxTdG9yYWdlTmFtZXNwYWNlLT5jbGVhclN0b3JhZ2VBcmVhc01hdGNoaW5nT3JpZ2luKGNv
cGllZE9yaWdpbik7CisgICAgICAgICAgICB0cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2Ut
PmNsZWFyQWxsU3RvcmFnZUFyZWFzKCk7CiAKLSAgICAgICAgaWYgKG1fbG9jYWxTdG9yYWdlRGF0
YWJhc2VUcmFja2VyKQotICAgICAgICAgICAgbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIt
PmRlbGV0ZURhdGFiYXNlV2l0aE9yaWdpbihjb3BpZWRPcmlnaW4pOwotICAgIH0pOwotfQotCi12
b2lkIFN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVMb2NhbFN0b3JhZ2VPcmlnaW5zTW9kaWZpZWRTaW5j
ZShXYWxsVGltZSB0aW1lLCBGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17
Ci0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgdGltZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0oKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2Vy
KSB7Ci0gICAgICAgICAgICBhdXRvIG9yaWdpbnNUb0RlbGV0ZSA9IG1fbG9jYWxTdG9yYWdlRGF0
YWJhc2VUcmFja2VyLT5kYXRhYmFzZXNNb2RpZmllZFNpbmNlKHRpbWUpOwotICAgICAgICAgICAg
Ci0gICAgICAgICAgICBmb3IgKGF1dG8mIHRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSA6
IG1fdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkKLSAgICAgICAgICAg
ICAgICB0cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPmNsZWFyQWxsU3RvcmFnZUFyZWFz
KCk7Ci0KLSAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgb3JpZ2luIDogb3JpZ2luc1RvRGVs
ZXRlKSB7Ci0gICAgICAgICAgICAgICAgZm9yIChhdXRvJiBsb2NhbFN0b3JhZ2VOYW1lc3BhY2Ug
OiBtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZXMudmFsdWVzKCkpCi0gICAgICAgICAgICAgICAgICAg
IGxvY2FsU3RvcmFnZU5hbWVzcGFjZS0+Y2xlYXJTdG9yYWdlQXJlYXNNYXRjaGluZ09yaWdpbihv
cmlnaW4pOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIG1fbG9jYWxTdG9yYWdl
RGF0YWJhc2VUcmFja2VyLT5kZWxldGVEYXRhYmFzZVdpdGhPcmlnaW4ob3JpZ2luKTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBvcmln
aW4gOiBvcmlnaW5zVG9EZWxldGUpIHsKICAgICAgICAgICAgIGZvciAoYXV0byYgbG9jYWxTdG9y
YWdlTmFtZXNwYWNlIDogbV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2VzLnZhbHVlcygpKQotICAgICAg
ICAgICAgICAgIGxvY2FsU3RvcmFnZU5hbWVzcGFjZS0+Y2xlYXJBbGxTdG9yYWdlQXJlYXMoKTsK
KyAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPmNsZWFyU3RvcmFnZUFyZWFz
TWF0Y2hpbmdPcmlnaW4ob3JpZ2luKTsKKyAgICAgICAgICAgIG1fbG9jYWxTdG9yYWdlRGF0YWJh
c2VUcmFja2VyLT5kZWxldGVEYXRhYmFzZVdpdGhPcmlnaW4ob3JpZ2luKTsKICAgICAgICAgfQor
ICAgIH0gZWxzZSB7CisgICAgICAgIGZvciAoYXV0byYgbG9jYWxTdG9yYWdlTmFtZXNwYWNlIDog
bV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2VzLnZhbHVlcygpKQorICAgICAgICAgICAgbG9jYWxTdG9y
YWdlTmFtZXNwYWNlLT5jbGVhckFsbFN0b3JhZ2VBcmVhcygpOworICAgIH0KIAotICAgICAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAg
IH0pOworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiB9CiAKIHZvaWQgU3RvcmFnZU1hbmFnZXI6OmRlbGV0ZUxvY2FsU3RvcmFnZUVudHJp
ZXNGb3JPcmlnaW5zKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiBv
cmlnaW5zLCBGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgbV9x
dWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29w
aWVkT3JpZ2lucyA9IGNyb3NzVGhyZWFkQ29weShvcmlnaW5zKSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgZm9yIChh
dXRvJiBvcmlnaW4gOiBjb3BpZWRPcmlnaW5zKSB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8mIGxv
Y2FsU3RvcmFnZU5hbWVzcGFjZSA6IG1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkK
LSAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPmNsZWFyU3RvcmFnZUFyZWFz
TWF0Y2hpbmdPcmlnaW4ob3JpZ2luKTsKKyAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IG9yaWdpbnMp
IHsKKyAgICAgICAgZm9yIChhdXRvJiBsb2NhbFN0b3JhZ2VOYW1lc3BhY2UgOiBtX2xvY2FsU3Rv
cmFnZU5hbWVzcGFjZXMudmFsdWVzKCkpCisgICAgICAgICAgICBsb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2UtPmNsZWFyU3RvcmFnZUFyZWFzTWF0Y2hpbmdPcmlnaW4ob3JpZ2luKTsKIAotICAgICAgICAg
ICAgZm9yIChhdXRvJiB0cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UgOiBtX3RyYW5zaWVu
dExvY2FsU3RvcmFnZU5hbWVzcGFjZXMudmFsdWVzKCkpCi0gICAgICAgICAgICAgICAgdHJhbnNp
ZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlLT5jbGVhclN0b3JhZ2VBcmVhc01hdGNoaW5nT3JpZ2lu
KG9yaWdpbik7CisgICAgICAgIGZvciAoYXV0byYgdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNw
YWNlIDogbV90cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2VzLnZhbHVlcygpKQorICAgICAg
ICAgICAgdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlLT5jbGVhclN0b3JhZ2VBcmVhc01h
dGNoaW5nT3JpZ2luKG9yaWdpbik7CiAKLSAgICAgICAgICAgIGlmIChtX2xvY2FsU3RvcmFnZURh
dGFiYXNlVHJhY2tlcikKLSAgICAgICAgICAgICAgICBtX2xvY2FsU3RvcmFnZURhdGFiYXNlVHJh
Y2tlci0+ZGVsZXRlRGF0YWJhc2VXaXRoT3JpZ2luKG9yaWdpbik7Ci0gICAgICAgIH0KKyAgICAg
ICAgaWYgKG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyKQorICAgICAgICAgICAgbV9sb2Nh
bFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXItPmRlbGV0ZURhdGFiYXNlV2l0aE9yaWdpbihvcmlnaW4p
OworICAgIH0KIAotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwotICAgIH0pOworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgU3RvcmFnZU1hbmFnZXI6OmNy
ZWF0ZUxvY2FsU3RvcmFnZU1hcChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVpbnQ2NF90
IHN0b3JhZ2VNYXBJRCwgdWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBTZWN1cml0eU9yaWdp
bkRhdGEmJiBzZWN1cml0eU9yaWdpbkRhdGEpCitTdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUFyZWEq
IFN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVMb2NhbFN0b3JhZ2VBcmVhKHVpbnQ2NF90IHN0b3JhZ2VO
YW1lc3BhY2VJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgb3JpZ2luRGF0YSkKIHsK
ICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBhdXRvIGNvbm5lY3Rpb25JRCA9
IGNvbm5lY3Rpb24udW5pcXVlSUQoKTsKLSAgICBzdGQ6OnBhaXI8SVBDOjpDb25uZWN0aW9uOjpV
bmlxdWVJRCwgdWludDY0X3Q+IGNvbm5lY3Rpb25BbmRTdG9yYWdlTWFwSURQYWlyKGNvbm5lY3Rp
b25JRCwgc3RvcmFnZU1hcElEKTsKLQotICAgIEFTU0VSVCgoSGFzaE1hcDxzdGQ6OnBhaXI8SVBD
OjpDb25uZWN0aW9uOjpVbmlxdWVJRCwgdWludDY0X3Q+LCBSZWZQdHI8U3RvcmFnZUFyZWE+Pjo6
aXNWYWxpZEtleShjb25uZWN0aW9uQW5kU3RvcmFnZU1hcElEUGFpcikpKTsKLQotICAgIGF1dG8g
cmVzdWx0ID0gbV9zdG9yYWdlQXJlYXNCeUNvbm5lY3Rpb24uYWRkKGNvbm5lY3Rpb25BbmRTdG9y
YWdlTWFwSURQYWlyLCBudWxscHRyKTsKLSAgICBBU1NFUlQocmVzdWx0LmlzTmV3RW50cnkpOwog
ICAgIEFTU0VSVCgoSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPExvY2FsU3RvcmFnZU5hbWVzcGFj
ZT4+Ojppc1ZhbGlkS2V5KHN0b3JhZ2VOYW1lc3BhY2VJRCkpKTsKIAogICAgIExvY2FsU3RvcmFn
ZU5hbWVzcGFjZSogbG9jYWxTdG9yYWdlTmFtZXNwYWNlID0gZ2V0T3JDcmVhdGVMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2Uoc3RvcmFnZU5hbWVzcGFjZUlEKTsKICAgICBBU1NFUlQobG9jYWxTdG9yYWdl
TmFtZXNwYWNlKTsKIAotICAgIGF1dG8gc3RvcmFnZUFyZWEgPSBsb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2UtPmdldE9yQ3JlYXRlU3RvcmFnZUFyZWEoV1RGTW92ZShzZWN1cml0eU9yaWdpbkRhdGEpLCBt
X2xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlciA/IFN0b3JhZ2VNYW5hZ2VyOjpMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2U6OklzRXBoZW1lcmFsOjpObyA6IFN0b3JhZ2VNYW5hZ2VyOjpMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2U6OklzRXBoZW1lcmFsOjpZZXMpOwotICAgIHN0b3JhZ2VBcmVhLT5hZGRMaXN0
ZW5lcihjb25uZWN0aW9uSUQsIHN0b3JhZ2VNYXBJRCk7Ci0KLSAgICByZXN1bHQuaXRlcmF0b3It
PnZhbHVlID0gV1RGTW92ZShzdG9yYWdlQXJlYSk7Ci19Ci0KLXZvaWQgU3RvcmFnZU1hbmFnZXI6
OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU1hcChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCwgdWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBT
ZWN1cml0eU9yaWdpbkRhdGEmJiB0b3BMZXZlbE9yaWdpbkRhdGEsIFNlY3VyaXR5T3JpZ2luRGF0
YSYmIG9yaWdpbikKLXsKLSAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBhdXRv
IGNvbm5lY3Rpb25JRCA9IGNvbm5lY3Rpb24udW5pcXVlSUQoKTsKLQotICAgIEFTU0VSVChtX3N0
b3JhZ2VBcmVhc0J5Q29ubmVjdGlvbi5pc1ZhbGlkS2V5KHsgY29ubmVjdGlvbklELCBzdG9yYWdl
TWFwSUQgfSkpOwotCi0gICAgLy8gU2VlIGlmIHdlIGFscmVhZHkgaGF2ZSBzZXNzaW9uIHN0b3Jh
Z2UgZm9yIHRoaXMgY29ubmVjdGlvbi9vcmlnaW4gY29tYm8uCi0gICAgLy8gSWYgc28sIHVwZGF0
ZSB0aGUgbWFwIHdpdGggdGhlIG5ldyBJRCwgb3RoZXJ3aXNlIGtlZXAgb24gdHJ1Y2tpbmcuCi0g
ICAgZm9yIChhdXRvIGl0ID0gbV9zdG9yYWdlQXJlYXNCeUNvbm5lY3Rpb24uYmVnaW4oKSwgZW5k
ID0gbV9zdG9yYWdlQXJlYXNCeUNvbm5lY3Rpb24uZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewot
ICAgICAgICBpZiAoaXQtPmtleS5maXJzdCAhPSBjb25uZWN0aW9uSUQpCi0gICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgUmVmPFN0b3JhZ2VBcmVhPiBhcmVhID0gKml0LT52YWx1ZTsKLSAg
ICAgICAgaWYgKCFhcmVhLT5pc0VwaGVtZXJhbCgpKQotICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgIGlmICghb3JpZ2luLnNlY3VyaXR5T3JpZ2luKCktPmlzU2FtZVNjaGVtZUhvc3RQb3J0
KGFyZWEtPnNlY3VyaXR5T3JpZ2luKCkuc2VjdXJpdHlPcmlnaW4oKS5nZXQoKSkpCi0gICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgYXJlYS0+YWRkTGlzdGVuZXIoY29ubmVjdGlvbklELCBz
dG9yYWdlTWFwSUQpOwotICAgICAgICAvLyBJZiB0aGUgc3RvcmFnZU1hcElEIHVzZWQgYXMga2V5
IGluIG1fc3RvcmFnZUFyZWFzQnlDb25uZWN0aW9uIGlzIG5vIGxvbmdlciBvbmUgb2YgdGhlIFN0
b3JhZ2VBcmVhJ3MgbGlzdGVuZXJzLCB0aGVuIHRoaXMgbWVhbnMKLSAgICAgICAgLy8gdGhhdCBk
ZXN0cm95U3RvcmFnZU1hcCgpIHdhcyBhbHJlYWR5IGNhbGxlZCBmb3IgdGhhdCBzdG9yYWdlTWFw
SUQgYnV0IGl0IGRlY2lkZWQgbm90IHRvIHJlbW92ZSBpdCBmcm9tIG1fc3RvcmFnZUFyZWFzQnlD
b25uZWN0aW9uCi0gICAgICAgIC8vIHNvIHRoYXQgd2UgY291bGQgcmV1c2UgaXQgbGF0ZXIgb24g
Zm9yIHRoZSBzYW1lIGNvbm5lY3Rpb24vb3JpZ2luIGNvbWJvLiBJbiB0aGlzIGNhc2UsIGl0IGlz
IHNhZmUgdG8gcmVtb3ZlIHRoZSBwcmV2aW91cwotICAgICAgICAvLyBzdG9yYWdlTWFwSUQgZnJv
bSBtX3N0b3JhZ2VBcmVhc0J5Q29ubmVjdGlvbi4KLSAgICAgICAgaWYgKCFhcmVhLT5oYXNMaXN0
ZW5lcihjb25uZWN0aW9uSUQsIGl0LT5rZXkuc2Vjb25kKSkKLSAgICAgICAgICAgIG1fc3RvcmFn
ZUFyZWFzQnlDb25uZWN0aW9uLnJlbW92ZShpdCk7Ci0gICAgICAgIG1fc3RvcmFnZUFyZWFzQnlD
b25uZWN0aW9uLmFkZCh7IGNvbm5lY3Rpb25JRCwgc3RvcmFnZU1hcElEIH0sIFdURk1vdmUoYXJl
YSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgYXV0byYgc2xvdCA9IG1fc3RvcmFn
ZUFyZWFzQnlDb25uZWN0aW9uLmFkZCh7IGNvbm5lY3Rpb25JRCwgc3RvcmFnZU1hcElEIH0sIG51
bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKLSAgICBBU1NFUlQoIXNsb3QpOwotCi0gICAgYXV0byog
dHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlID0gZ2V0T3JDcmVhdGVUcmFuc2llbnRMb2Nh
bFN0b3JhZ2VOYW1lc3BhY2Uoc3RvcmFnZU5hbWVzcGFjZUlELCBXVEZNb3ZlKHRvcExldmVsT3Jp
Z2luRGF0YSkpOwotCi0gICAgYXV0byBzdG9yYWdlQXJlYSA9IHRyYW5zaWVudExvY2FsU3RvcmFn
ZU5hbWVzcGFjZS0+Z2V0T3JDcmVhdGVTdG9yYWdlQXJlYShXVEZNb3ZlKG9yaWdpbikpOwotICAg
IHN0b3JhZ2VBcmVhLT5hZGRMaXN0ZW5lcihjb25uZWN0aW9uSUQsIHN0b3JhZ2VNYXBJRCk7Ci0K
LSAgICBzbG90ID0gV1RGTW92ZShzdG9yYWdlQXJlYSk7Ci19Ci0KLXZvaWQgU3RvcmFnZU1hbmFn
ZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTWFwKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwg
dWludDY0X3Qgc3RvcmFnZU1hcElELCB1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIFNlY3Vy
aXR5T3JpZ2luRGF0YSYmIHNlY3VyaXR5T3JpZ2luRGF0YSkKLXsKLSAgICBBU1NFUlQoIVJ1bkxv
b3A6OmlzTWFpbigpKTsKLSAgICBhdXRvIGNvbm5lY3Rpb25JRCA9IGNvbm5lY3Rpb24udW5pcXVl
SUQoKTsKLSAgICBBU1NFUlQobV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMuaXNWYWxpZEtleShz
dG9yYWdlTmFtZXNwYWNlSUQpKTsKLQotICAgIFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKiBzZXNz
aW9uU3RvcmFnZU5hbWVzcGFjZSA9IG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLmdldChzdG9y
YWdlTmFtZXNwYWNlSUQpOwotICAgIGlmICghc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UpIHsKLSAg
ICAgICAgLy8gV2UncmUgZ2V0dGluZyBhbiBpbmNvbWluZyBtZXNzYWdlIGZyb20gdGhlIHdlYiBw
cm9jZXNzIHRoYXQncyBmb3Igc2Vzc2lvbiBzdG9yYWdlIGZvciBhIHdlYiBwYWdlCi0gICAgICAg
IC8vIHRoYXQgaGFzIGFscmVhZHkgYmVlbiBjbG9zZWQsIGp1c3QgaWdub3JlIGl0LgotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUKG1fc3RvcmFnZUFyZWFzQnlDb25uZWN0aW9u
LmlzVmFsaWRLZXkoeyBjb25uZWN0aW9uSUQsIHN0b3JhZ2VNYXBJRCB9KSk7Ci0KLSAgICBhdXRv
JiBzbG90ID0gbV9zdG9yYWdlQXJlYXNCeUNvbm5lY3Rpb24uYWRkKHsgY29ubmVjdGlvbklELCBz
dG9yYWdlTWFwSUQgfSwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwotICAgIEFTU0VSVCghc2xv
dCk7Ci0gICAgQVNTRVJUKHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlLT5hbGxvd2VkQ29ubmVjdGlv
bnMoKS5jb250YWlucyhjb25uZWN0aW9uSUQpKTsKLQotICAgIGF1dG8gc3RvcmFnZUFyZWEgPSBz
ZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS0+Z2V0T3JDcmVhdGVTdG9yYWdlQXJlYShXVEZNb3ZlKHNl
Y3VyaXR5T3JpZ2luRGF0YSkpOwotICAgIHN0b3JhZ2VBcmVhLT5hZGRMaXN0ZW5lcihjb25uZWN0
aW9uSUQsIHN0b3JhZ2VNYXBJRCk7Ci0KLSAgICBzbG90ID0gV1RGTW92ZShzdG9yYWdlQXJlYSk7
Ci19Ci0KLXZvaWQgU3RvcmFnZU1hbmFnZXI6OmRlc3Ryb3lTdG9yYWdlTWFwKElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgdWludDY0X3Qgc3RvcmFnZU1hcElEKQotewotICAgIEFTU0VSVCgh
UnVuTG9vcDo6aXNNYWluKCkpOwotICAgIGF1dG8gY29ubmVjdGlvbklEID0gY29ubmVjdGlvbi51
bmlxdWVJRCgpOwotCi0gICAgc3RkOjpwYWlyPElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIHVp
bnQ2NF90PiBjb25uZWN0aW9uQW5kU3RvcmFnZU1hcElEUGFpcihjb25uZWN0aW9uSUQsIHN0b3Jh
Z2VNYXBJRCk7Ci0gICAgQVNTRVJUKG1fc3RvcmFnZUFyZWFzQnlDb25uZWN0aW9uLmlzVmFsaWRL
ZXkoY29ubmVjdGlvbkFuZFN0b3JhZ2VNYXBJRFBhaXIpKTsKLQotICAgIGF1dG8gaXQgPSBtX3N0
b3JhZ2VBcmVhc0J5Q29ubmVjdGlvbi5maW5kKGNvbm5lY3Rpb25BbmRTdG9yYWdlTWFwSURQYWly
KTsKLSAgICBpZiAoaXQgPT0gbV9zdG9yYWdlQXJlYXNCeUNvbm5lY3Rpb24uZW5kKCkpIHsKLSAg
ICAgICAgLy8gVGhlIGNvbm5lY3Rpb24gaGFzIGJlZW4gcmVtb3ZlZCBiZWNhdXNlIHRoZSBsYXN0
IHBhZ2Ugd2FzIGNsb3NlZC4KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGl0LT52YWx1
ZS0+cmVtb3ZlTGlzdGVuZXIoY29ubmVjdGlvbklELCBzdG9yYWdlTWFwSUQpOwotCi0gICAgLy8g
RG9uJ3QgcmVtb3ZlIHNlc3Npb24gc3RvcmFnZSBtYXBzLiBUaGUgd2ViIHByb2Nlc3MgbWF5IHJl
Y29ubmVjdCBhbmQgZXhwZWN0IHRoZSBkYXRhIHRvIHN0aWxsIGJlIGFyb3VuZC4KLSAgICBpZiAo
aXQtPnZhbHVlLT5pc0VwaGVtZXJhbCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3N0b3Jh
Z2VBcmVhc0J5Q29ubmVjdGlvbi5yZW1vdmUoY29ubmVjdGlvbkFuZFN0b3JhZ2VNYXBJRFBhaXIp
OwotfQotCi12b2lkIFN0b3JhZ2VNYW5hZ2VyOjpwcmV3YXJtKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgdWludDY0X3Qgc3RvcmFnZU1hcElEKQotewotICAgIEFTU0VSVCghUnVuTG9vcDo6
aXNNYWluKCkpOwotICAgIGlmIChhdXRvKiBzdG9yYWdlQXJlYSA9IGZpbmRTdG9yYWdlQXJlYShj
b25uZWN0aW9uLCBzdG9yYWdlTWFwSUQpKQotICAgICAgICBzdG9yYWdlQXJlYS0+b3BlbkRhdGFi
YXNlQW5kSW1wb3J0SXRlbXNJZk5lZWRlZCgpOwotfQotCi12b2lkIFN0b3JhZ2VNYW5hZ2VyOjpn
ZXRWYWx1ZXMoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCB1aW50NjRfdCBzdG9yYWdlTWFw
SUQsIHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkLCBHZXRWYWx1ZXNDYWxsYmFjayYmIGNvbXBsZXRp
b25IYW5kbGVyKQotewotICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIGF1dG8q
IHN0b3JhZ2VBcmVhID0gZmluZFN0b3JhZ2VBcmVhKGNvbm5lY3Rpb24sIHN0b3JhZ2VNYXBJRCk7
Ci0KLSAgICAvLyBUaGlzIGlzIGEgc2Vzc2lvbiBzdG9yYWdlIGFyZWEgZm9yIGEgcGFnZSB0aGF0
IGhhcyBhbHJlYWR5IGJlZW4gY2xvc2VkLiBJZ25vcmUgaXQuCi0gICAgaWYgKCFzdG9yYWdlQXJl
YSkKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7Ci0KLSAgICBjb21wbGV0
aW9uSGFuZGxlcihzdG9yYWdlQXJlYS0+aXRlbXMoKSk7Ci0gICAgY29ubmVjdGlvbi5zZW5kKE1l
c3NhZ2VzOjpTdG9yYWdlQXJlYU1hcDo6RGlkR2V0VmFsdWVzKHN0b3JhZ2VNYXBTZWVkKSwgc3Rv
cmFnZU1hcElEKTsKLX0KLQotdm9pZCBTdG9yYWdlTWFuYWdlcjo6c2V0SXRlbShJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIHNlY3VyaXR5
T3JpZ2luRGF0YSwgdWludDY0X3Qgc3RvcmFnZU1hcElELCB1aW50NjRfdCBzb3VyY2VTdG9yYWdl
QXJlYUlELCB1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0
IFN0cmluZyYgdmFsdWUsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQotewotICAgIEFTU0VSVCgh
UnVuTG9vcDo6aXNNYWluKCkpOwotICAgIGF1dG8qIHN0b3JhZ2VBcmVhID0gZmluZFN0b3JhZ2VB
cmVhKGNvbm5lY3Rpb24sIHN0b3JhZ2VNYXBJRCk7Ci0KLSAgICAvLyBUaGlzIGlzIGEgc2Vzc2lv
biBzdG9yYWdlIGFyZWEgZm9yIGEgcGFnZSB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gY2xvc2VkLiBJ
Z25vcmUgaXQuCi0gICAgaWYgKCFzdG9yYWdlQXJlYSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
Ym9vbCBxdW90YUVycm9yOwotICAgIHN0b3JhZ2VBcmVhLT5zZXRJdGVtKGNvbm5lY3Rpb24udW5p
cXVlSUQoKSwgc291cmNlU3RvcmFnZUFyZWFJRCwga2V5LCB2YWx1ZSwgdXJsU3RyaW5nLCBxdW90
YUVycm9yKTsKLSAgICBjb25uZWN0aW9uLnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VBcmVhTWFwOjpE
aWRTZXRJdGVtKHN0b3JhZ2VNYXBTZWVkLCBrZXksIHF1b3RhRXJyb3IpLCBzdG9yYWdlTWFwSUQp
OwotfQotCi12b2lkIFN0b3JhZ2VNYW5hZ2VyOjpzZXRJdGVtcyhJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCwgY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0
cmluZz4mIGl0ZW1zKQotewotICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIGlm
IChhdXRvKiBzdG9yYWdlQXJlYSA9IGZpbmRTdG9yYWdlQXJlYShjb25uZWN0aW9uLCBzdG9yYWdl
TWFwSUQpKQotICAgICAgICBzdG9yYWdlQXJlYS0+c2V0SXRlbXMoaXRlbXMpOworICAgIHJldHVy
biBsb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPmdldE9yQ3JlYXRlU3RvcmFnZUFyZWEoV1RGTW92ZShv
cmlnaW5EYXRhKSwgbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIgPyBTdG9yYWdlTWFuYWdl
cjo6TG9jYWxTdG9yYWdlTmFtZXNwYWNlOjpJc0VwaGVtZXJhbDo6Tm8gOiBTdG9yYWdlTWFuYWdl
cjo6TG9jYWxTdG9yYWdlTmFtZXNwYWNlOjpJc0VwaGVtZXJhbDo6WWVzKS5wdHIoKTsKIH0KIAot
dm9pZCBTdG9yYWdlTWFuYWdlcjo6cmVtb3ZlSXRlbShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIHNlY3VyaXR5T3JpZ2luRGF0YSwgdWlu
dDY0X3Qgc3RvcmFnZU1hcElELCB1aW50NjRfdCBzb3VyY2VTdG9yYWdlQXJlYUlELCB1aW50NjRf
dCBzdG9yYWdlTWFwU2VlZCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdXJsU3Ry
aW5nKQorU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VBcmVhKiBTdG9yYWdlTWFuYWdlcjo6Y3JlYXRl
VHJhbnNpZW50TG9jYWxTdG9yYWdlQXJlYSh1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIHRvcExldmVsT3JpZ2luRGF0YSwgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhJiYgb3JpZ2luRGF0YSkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6
OmlzTWFpbigpKTsKLSAgICBhdXRvKiBzdG9yYWdlQXJlYSA9IGZpbmRTdG9yYWdlQXJlYShjb25u
ZWN0aW9uLCBzdG9yYWdlTWFwSUQpOworICAgIEFTU0VSVCgoSGFzaE1hcDx1aW50NjRfdCwgUmVm
UHRyPFRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZT4+Ojppc1ZhbGlkS2V5KHN0b3JhZ2VO
YW1lc3BhY2VJRCkpKTsKIAotICAgIC8vIFRoaXMgaXMgYSBzZXNzaW9uIHN0b3JhZ2UgYXJlYSBm
b3IgYSBwYWdlIHRoYXQgaGFzIGFscmVhZHkgYmVlbiBjbG9zZWQuIElnbm9yZSBpdC4KLSAgICBp
ZiAoIXN0b3JhZ2VBcmVhKQotICAgICAgICByZXR1cm47Ci0KLSAgICBzdG9yYWdlQXJlYS0+cmVt
b3ZlSXRlbShjb25uZWN0aW9uLnVuaXF1ZUlEKCksIHNvdXJjZVN0b3JhZ2VBcmVhSUQsIGtleSwg
dXJsU3RyaW5nKTsKLSAgICBjb25uZWN0aW9uLnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VBcmVhTWFw
OjpEaWRSZW1vdmVJdGVtKHN0b3JhZ2VNYXBTZWVkLCBrZXkpLCBzdG9yYWdlTWFwSUQpOworICAg
IGF1dG8qIHRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSA9IGdldE9yQ3JlYXRlVHJhbnNp
ZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKHN0b3JhZ2VOYW1lc3BhY2VJRCwgdG9wTGV2ZWxPcmln
aW5EYXRhLmlzb2xhdGVkQ29weSgpKTsKKyAgICByZXR1cm4gdHJhbnNpZW50TG9jYWxTdG9yYWdl
TmFtZXNwYWNlLT5nZXRPckNyZWF0ZVN0b3JhZ2VBcmVhKFdURk1vdmUodG9wTGV2ZWxPcmlnaW5E
YXRhKSkucHRyKCk7CiB9CiAKLXZvaWQgU3RvcmFnZU1hbmFnZXI6OmNsZWFyKElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgc2VjdXJpdHlP
cmlnaW5EYXRhLCB1aW50NjRfdCBzdG9yYWdlTWFwSUQsIHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VB
cmVhSUQsIHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZykK
K1N0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQXJlYSogU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZVNlc3Np
b25TdG9yYWdlQXJlYSh1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSYmIG9yaWdpbkRhdGEpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01h
aW4oKSk7Ci0gICAgYXV0byogc3RvcmFnZUFyZWEgPSBmaW5kU3RvcmFnZUFyZWEoY29ubmVjdGlv
biwgc3RvcmFnZU1hcElEKTsKLQotICAgIC8vIFRoaXMgaXMgYSBzZXNzaW9uIHN0b3JhZ2UgYXJl
YSBmb3IgYSBwYWdlIHRoYXQgaGFzIGFscmVhZHkgYmVlbiBjbG9zZWQuIElnbm9yZSBpdC4KLSAg
ICBpZiAoIXN0b3JhZ2VBcmVhKQotICAgICAgICByZXR1cm47CisgICAgQVNTRVJUKChIYXNoTWFw
PHVpbnQ2NF90LCBSZWZQdHI8U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2U+Pjo6aXNWYWxpZEtleShz
dG9yYWdlTmFtZXNwYWNlSUQpKSk7CiAKLSAgICBzdG9yYWdlQXJlYS0+Y2xlYXIoY29ubmVjdGlv
bi51bmlxdWVJRCgpLCBzb3VyY2VTdG9yYWdlQXJlYUlELCB1cmxTdHJpbmcpOwotICAgIGNvbm5l
Y3Rpb24uc2VuZChNZXNzYWdlczo6U3RvcmFnZUFyZWFNYXA6OkRpZENsZWFyKHN0b3JhZ2VNYXBT
ZWVkKSwgc3RvcmFnZU1hcElEKTsKLX0KLQotdm9pZCBTdG9yYWdlTWFuYWdlcjo6d2FpdFVudGls
VGFza3NGaW5pc2hlZCgpCi17Ci0gICAgQmluYXJ5U2VtYXBob3JlIHNlbWFwaG9yZTsKLSAgICBt
X3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgJnNlbWFwaG9yZV0gewotICAgICAgICBWZWN0b3I8c3Rk
OjpwYWlyPElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIHVpbnQ2NF90Pj4gY29ubmVjdGlvbkFu
ZFN0b3JhZ2VNYXBJRFBhaXJzVG9SZW1vdmU7Ci0gICAgICAgIGZvciAoYXV0byYgY29ubmVjdGlv
blN0b3JhZ2VBcmVhUGFpciA6IG1fc3RvcmFnZUFyZWFzQnlDb25uZWN0aW9uKSB7Ci0gICAgICAg
ICAgICBjb25uZWN0aW9uU3RvcmFnZUFyZWFQYWlyLnZhbHVlLT5yZW1vdmVMaXN0ZW5lcihjb25u
ZWN0aW9uU3RvcmFnZUFyZWFQYWlyLmtleS5maXJzdCwgY29ubmVjdGlvblN0b3JhZ2VBcmVhUGFp
ci5rZXkuc2Vjb25kKTsKLSAgICAgICAgICAgIGNvbm5lY3Rpb25BbmRTdG9yYWdlTWFwSURQYWly
c1RvUmVtb3ZlLmFwcGVuZChjb25uZWN0aW9uU3RvcmFnZUFyZWFQYWlyLmtleSk7Ci0gICAgICAg
IH0KLQotICAgICAgICBmb3IgKGF1dG8mIGNvbm5lY3Rpb25TdG9yYWdlQXJlYVBhaXIgOiBjb25u
ZWN0aW9uQW5kU3RvcmFnZU1hcElEUGFpcnNUb1JlbW92ZSkKLSAgICAgICAgICAgIG1fc3RvcmFn
ZUFyZWFzQnlDb25uZWN0aW9uLnJlbW92ZShjb25uZWN0aW9uU3RvcmFnZUFyZWFQYWlyKTsKLQot
ICAgICAgICBtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZXMuY2xlYXIoKTsKLQotICAgICAgICBzZW1h
cGhvcmUuc2lnbmFsKCk7Ci0gICAgfSk7Ci0gICAgc2VtYXBob3JlLndhaXQoKTsKLX0KLQotdm9p
ZCBTdG9yYWdlTWFuYWdlcjo6c3VzcGVuZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCi17Ci0gICAgQ29tcGxldGlvbkhhbmRsZXJDYWxsaW5nU2NvcGUgY29t
cGxldGlvbkhhbmRsZXJDYWxsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgIGlm
ICghbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIpCi0gICAgICAgIHJldHVybjsKLQotICAg
IExvY2tlcjxMb2NrPiBzdGF0ZUxvY2tlcihtX3N0YXRlTG9jayk7Ci0gICAgaWYgKG1fc3RhdGUg
IT0gU3RhdGU6OlJ1bm5pbmcpCi0gICAgICAgIHJldHVybjsKLSAgICBtX3N0YXRlID0gU3RhdGU6
OldpbGxTdXNwZW5kOwotCi0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBjb21wbGV0aW9uSGFuZGxl
ckNhbGxlci5yZWxlYXNlKCldICgpIG11dGFibGUgewotICAgICAgICBMb2NrZXI8TG9jaz4gc3Rh
dGVMb2NrZXIobV9zdGF0ZUxvY2spOwotICAgICAgICBBU1NFUlQobV9zdGF0ZSAhPSBTdGF0ZTo6
U3VzcGVuZGVkKTsKLQotICAgICAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6V2lsbFN1c3BlbmQp
IHsKLSAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBt
X3N0YXRlID0gU3RhdGU6OlN1c3BlbmRlZDsKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3Bh
dGNoKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICAgICAgCi0gICAgICAgIHdoaWxl
IChtX3N0YXRlID09IFN0YXRlOjpTdXNwZW5kZWQpCi0gICAgICAgICAgICBtX3N0YXRlQ2hhbmdl
Q29uZGl0aW9uLndhaXQobV9zdGF0ZUxvY2spOwotICAgICAgICBBU1NFUlQobV9zdGF0ZSA9PSBT
dGF0ZTo6UnVubmluZyk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgU3RvcmFnZU1hbmFnZXI6OnJlc3Vt
ZSgpCi17Ci0gICAgaWYgKCFtX2xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcikKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgTG9ja2VyPExvY2s+IHN0YXRlTG9ja2VyKG1fc3RhdGVMb2NrKTsKLSAg
ICBhdXRvIHByZXZpb3VzU3RhdGUgPSBtX3N0YXRlOwotICAgIG1fc3RhdGUgPSBTdGF0ZTo6UnVu
bmluZzsKLSAgICBpZiAocHJldmlvdXNTdGF0ZSA9PSBTdGF0ZTo6U3VzcGVuZGVkKQotICAgICAg
ICBtX3N0YXRlQ2hhbmdlQ29uZGl0aW9uLm5vdGlmeU9uZSgpOwotfQotCi1TdG9yYWdlTWFuYWdl
cjo6U3RvcmFnZUFyZWEqIFN0b3JhZ2VNYW5hZ2VyOjpmaW5kU3RvcmFnZUFyZWEoSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCB1aW50NjRfdCBzdG9yYWdlTWFwSUQpIGNvbnN0Ci17Ci0gICAg
c3RkOjpwYWlyPElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIHVpbnQ2NF90PiBjb25uZWN0aW9u
QW5kU3RvcmFnZU1hcElEUGFpcihjb25uZWN0aW9uLnVuaXF1ZUlEKCksIHN0b3JhZ2VNYXBJRCk7
Ci0KLSAgICBpZiAoIW1fc3RvcmFnZUFyZWFzQnlDb25uZWN0aW9uLmlzVmFsaWRLZXkoY29ubmVj
dGlvbkFuZFN0b3JhZ2VNYXBJRFBhaXIpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAg
IHJldHVybiBtX3N0b3JhZ2VBcmVhc0J5Q29ubmVjdGlvbi5nZXQoY29ubmVjdGlvbkFuZFN0b3Jh
Z2VNYXBJRFBhaXIpOworICAgIGF1dG8qIHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlID0gZ2V0T3JD
cmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShzdG9yYWdlTmFtZXNwYWNlSUQpOworICAgIHJl
dHVybiBzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS0+Z2V0T3JDcmVhdGVTdG9yYWdlQXJlYShXVEZN
b3ZlKG9yaWdpbkRhdGEpKS5wdHIoKTsKIH0KIAogU3RvcmFnZU1hbmFnZXI6OkxvY2FsU3RvcmFn
ZU5hbWVzcGFjZSogU3RvcmFnZU1hbmFnZXI6OmdldE9yQ3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNw
YWNlKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCkKQEAgLTEwMDAsNCArNTk4LDIyIEBAIFN0
b3JhZ2VNYW5hZ2VyOjpUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UqIFN0b3JhZ2VNYW5h
Z2VyOjpnZXRPckNyZWF0ZVRyYW5zCiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogfQog
CitTdG9yYWdlTWFuYWdlcjo6U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UqIFN0b3JhZ2VNYW5hZ2Vy
OjpnZXRPckNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IHN0b3JhZ2VOYW1l
c3BhY2VJRCkKK3sKKyAgICBpZiAoIW1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLmlzVmFsaWRL
ZXkoc3RvcmFnZU5hbWVzcGFjZUlEKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBy
ZXR1cm4gbV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMuZW5zdXJlKHN0b3JhZ2VOYW1lc3BhY2VJ
RCwgW10geworICAgICAgICAvLyBXZSBjdXJyZW50bHkgaGF2ZSBubyBsaW1pdCBvbiBzZXNzaW9u
IHN0b3JhZ2UuCisgICAgICAgIHJldHVybiBTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZTo6Y3JlYXRl
KHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSk7CisgICAgfSkuaXRlcmF0b3It
PnZhbHVlLmdldCgpOworfQorCit2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpjbGVhclN0b3JhZ2VOYW1l
c3BhY2VzKCkKK3sKKyAgICBtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZXMuY2xlYXIoKTsKKyAgICBt
X3RyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZXMuY2xlYXIoKTsKKyAgICBtX3Nlc3Npb25T
dG9yYWdlTmFtZXNwYWNlcy5jbGVhcigpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdl
TWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3Jh
Z2VNYW5hZ2VyLmgKaW5kZXggNjBhMjVlM2QxYzMxMGE1YzBiOGZlYTRhYjE0M2VlYjcwZTE1YWMy
Mi4uODg4NjM1ZjYxMTE4NDVjNGFmOGExYWYyZmFlODYxNzg3MTRkYzg5MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5h
Z2VyLmgKQEAgLTQwLDg4ICs0MCw5NiBAQCBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKK2NsYXNzIExvY2FsU3RvcmFnZURhdGFiYXNlOwogY2xhc3MgTG9jYWxT
dG9yYWdlRGF0YWJhc2VUcmFja2VyOwogY2xhc3MgV2ViUHJvY2Vzc1Byb3h5OwogCi11c2luZyBH
ZXRWYWx1ZXNDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSGFzaE1hcDxT
dHJpbmcsIFN0cmluZz4mKT47Ci0KLWNsYXNzIFN0b3JhZ2VNYW5hZ2VyIDogcHVibGljIElQQzo6
Q29ubmVjdGlvbjo6V29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyIHsKK2NsYXNzIFN0b3JhZ2VNYW5h
Z2VyIDogcHVibGljIFJlZkNvdW50ZWQ8U3RvcmFnZU1hbmFnZXI+IHsKIHB1YmxpYzoKICAgICBz
dGF0aWMgUmVmPFN0b3JhZ2VNYW5hZ2VyPiBjcmVhdGUoU3RyaW5nJiYgbG9jYWxTdG9yYWdlRGly
ZWN0b3J5KTsKICAgICB+U3RvcmFnZU1hbmFnZXIoKTsKIAogICAgIHZvaWQgY3JlYXRlU2Vzc2lv
blN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCB1bnNpZ25lZCBx
dW90YUluQnl0ZXMpOwogICAgIHZvaWQgZGVzdHJveVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVp
bnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCk7Ci0gICAgdm9pZCBhZGRBbGxvd2VkU2Vzc2lvblN0
b3JhZ2VOYW1lc3BhY2VDb25uZWN0aW9uKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgSVBD
OjpDb25uZWN0aW9uJik7Ci0gICAgdm9pZCByZW1vdmVBbGxvd2VkU2Vzc2lvblN0b3JhZ2VOYW1l
c3BhY2VDb25uZWN0aW9uKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgSVBDOjpDb25uZWN0
aW9uJik7CiAgICAgdm9pZCBjbG9uZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IHN0
b3JhZ2VOYW1lc3BhY2VJRCwgdWludDY0X3QgbmV3U3RvcmFnZU5hbWVzcGFjZUlEKTsKIAotICAg
IHZvaWQgcHJvY2Vzc0RpZENsb3NlQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24mKTsKLSAgICB2
b2lkIHdhaXRVbnRpbFRhc2tzRmluaXNoZWQoKTsKLSAgICB2b2lkIHN1c3BlbmQoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIHJlc3VtZSgpOwotCi0gICAgdm9pZCBnZXRT
ZXNzaW9uU3RvcmFnZU9yaWdpbnMoRnVuY3Rpb248dm9pZChIYXNoU2V0PFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpOworICAgIHZvaWQgZ2V0U2Vz
c2lvblN0b3JhZ2VPcmlnaW5zKEZ1bmN0aW9uPHZvaWQoSGFzaFNldDxXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGE+JiYpPiYmKTsKICAgICB2b2lkIGRlbGV0ZVNlc3Npb25TdG9yYWdlT3JpZ2lu
cyhGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwotICAgIHZvaWQgZGVsZXRl
U2Vzc2lvblN0b3JhZ2VFbnRyaWVzRm9yT3JpZ2lucyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhPiYsIEZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7
CisgICAgdm9pZCBkZWxldGVTZXNzaW9uU3RvcmFnZUVudHJpZXNGb3JPcmlnaW5zKGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiwgRnVuY3Rpb248dm9pZCgpPiYmKTsK
IAotICAgIHZvaWQgZ2V0TG9jYWxTdG9yYWdlT3JpZ2lucyhGdW5jdGlvbjx2b2lkKEhhc2hTZXQ8
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7Ci0g
ICAgdm9pZCBkZWxldGVMb2NhbFN0b3JhZ2VFbnRyaWVzRm9yT3JpZ2luKGNvbnN0IFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSYpOworICAgIHZvaWQgZ2V0TG9jYWxTdG9yYWdlT3JpZ2lucyhG
dW5jdGlvbjx2b2lkKEhhc2hTZXQ8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYmKT4mJik7
CisgICAgdm9pZCBkZWxldGVMb2NhbFN0b3JhZ2VPcmlnaW5zTW9kaWZpZWRTaW5jZShXYWxsVGlt
ZSwgRnVuY3Rpb248dm9pZCgpPiYmKTsKKyAgICB2b2lkIGRlbGV0ZUxvY2FsU3RvcmFnZUVudHJp
ZXNGb3JPcmlnaW5zKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+Jiwg
RnVuY3Rpb248dm9pZCgpPiYmKTsKKyAgICB2b2lkIGdldExvY2FsU3RvcmFnZU9yaWdpbkRldGFp
bHMoRnVuY3Rpb248dm9pZChWZWN0b3I8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpPcmln
aW5EZXRhaWxzPiYmKT4mJik7CisgICAgCisgICAgdm9pZCBjbGVhclN0b3JhZ2VOYW1lc3BhY2Vz
KCk7CiAKLSAgICB2b2lkIGRlbGV0ZUxvY2FsU3RvcmFnZU9yaWdpbnNNb2RpZmllZFNpbmNlKFdh
bGxUaW1lLCBGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwotICAgIHZvaWQg
ZGVsZXRlTG9jYWxTdG9yYWdlRW50cmllc0Zvck9yaWdpbnMoY29uc3QgVmVjdG9yPFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YT4mLCBGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpOworICAgIGNsYXNzIExvY2FsU3RvcmFnZU5hbWVzcGFjZTsKKyAgICBjbGFzcyBTdG9yYWdl
QXJlYSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTdG9yYWdlQXJlYT4geworICAgIHB1
YmxpYzoKKyAgICAgICAgc3RhdGljIFJlZjxTdG9yYWdlQXJlYT4gY3JlYXRlKExvY2FsU3RvcmFn
ZU5hbWVzcGFjZSosIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIHVuc2lnbmVk
IHF1b3RhSW5CeXRlcyk7CisgICAgICAgIH5TdG9yYWdlQXJlYSgpOwogCi0gICAgdm9pZCBnZXRM
b2NhbFN0b3JhZ2VPcmlnaW5EZXRhaWxzKEZ1bmN0aW9uPHZvaWQoVmVjdG9yPExvY2FsU3RvcmFn
ZURhdGFiYXNlVHJhY2tlcjo6T3JpZ2luRGV0YWlscz4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
OworICAgICAgICBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3Jp
Z2luKCkgY29uc3QgeyByZXR1cm4gbV9zZWN1cml0eU9yaWdpbjsgfQorICAgICAgICB1aW50NjRf
dCBpZGVudGlmaWVyKCkgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAKLSAgICB2b2lkIGRpZFJl
Y2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwotICAgIHZvaWQg
ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0
ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpOworICAgICAgICB2b2lk
IGFkZExpc3RlbmVyKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQpOworICAgICAgICB2b2lkIHJl
bW92ZUxpc3RlbmVyKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQpOworICAgICAgICBib29sIGhh
c0xpc3RlbmVyKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgY29ubmVjdGlvbklEKSB7IHJldHVy
biBtX2V2ZW50TGlzdGVuZXJzLmNvbnRhaW5zKGNvbm5lY3Rpb25JRCk7IH0KIAotcHJpdmF0ZToK
LSAgICBleHBsaWNpdCBTdG9yYWdlTWFuYWdlcihTdHJpbmcmJiBsb2NhbFN0b3JhZ2VEaXJlY3Rv
cnkpOworICAgICAgICBSZWY8U3RvcmFnZUFyZWE+IGNsb25lKCkgY29uc3Q7CiAKLSAgICAvLyBN
ZXNzYWdlIGhhbmRsZXJzLgotICAgIHZvaWQgY3JlYXRlTG9jYWxTdG9yYWdlTWFwKElQQzo6Q29u
bmVjdGlvbiYsIHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCwgdWludDY0X3Qgc3RvcmFnZU5hbWVzcGFj
ZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJik7Ci0gICAgdm9pZCBjcmVhdGVUcmFu
c2llbnRMb2NhbFN0b3JhZ2VNYXAoSVBDOjpDb25uZWN0aW9uJiwgdWludDY0X3Qgc3RvcmFnZU1h
cElELCB1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSYmIHRvcExldmVsT3JpZ2luRGF0YSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYp
OwotICAgIHZvaWQgY3JlYXRlU2Vzc2lvblN0b3JhZ2VNYXAoSVBDOjpDb25uZWN0aW9uJiwgdWlu
dDY0X3Qgc3RvcmFnZU1hcElELCB1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSYmKTsKLSAgICB2b2lkIGRlc3Ryb3lTdG9yYWdlTWFwKElQQzo6
Q29ubmVjdGlvbiYsIHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCk7CisgICAgICAgIHZvaWQgc2V0SXRl
bShJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIHNvdXJjZUNvbm5lY3Rpb24sIHVpbnQ2NF90IHNv
dXJjZVN0b3JhZ2VBcmVhSUQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVl
LCBjb25zdCBTdHJpbmcmIHVybFN0cmluZywgYm9vbCYgcXVvdGFFeGNlcHRpb24pOworICAgICAg
ICB2b2lkIHJlbW92ZUl0ZW0oSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBzb3VyY2VDb25uZWN0
aW9uLCB1aW50NjRfdCBzb3VyY2VTdG9yYWdlQXJlYUlELCBjb25zdCBTdHJpbmcmIGtleSwgY29u
c3QgU3RyaW5nJiB1cmxTdHJpbmcpOworICAgICAgICB2b2lkIGNsZWFyKElQQzo6Q29ubmVjdGlv
bjo6VW5pcXVlSUQgc291cmNlQ29ubmVjdGlvbiwgdWludDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJ
RCwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpOwogCi0gICAgdm9pZCBnZXRWYWx1ZXMoSVBDOjpD
b25uZWN0aW9uJiwgdWludDY0X3Qgc3RvcmFnZU1hcElELCB1aW50NjRfdCBzdG9yYWdlTWFwU2Vl
ZCwgR2V0VmFsdWVzQ2FsbGJhY2smJik7Ci0gICAgdm9pZCBwcmV3YXJtKElQQzo6Q29ubmVjdGlv
biYsIHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCk7Ci0gICAgdm9pZCBzZXRJdGVtKElQQzo6Q29ubmVj
dGlvbiYsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCB1aW50NjRfdCBzdG9yYWdlTWFw
SUQsIHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVk
LCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiB1
cmxTdHJpbmcpOwotICAgIHZvaWQgc2V0SXRlbXMoSVBDOjpDb25uZWN0aW9uJiwgdWludDY0X3Qg
c3RvcmFnZU1hcElELCBjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgaXRlbXMpOwotICAg
IHZvaWQgcmVtb3ZlSXRlbShJUEM6OkNvbm5lY3Rpb24mLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEmJiwgdWludDY0X3Qgc3RvcmFnZU1hcElELCB1aW50NjRfdCBzb3VyY2VTdG9yYWdlQXJl
YUlELCB1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0
cmluZyYgdXJsU3RyaW5nKTsKLSAgICB2b2lkIGNsZWFyKElQQzo6Q29ubmVjdGlvbiYsIFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCB1aW50NjRfdCBzdG9yYWdlTWFwSUQsIHVpbnQ2NF90
IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkLCBjb25zdCBTdHJp
bmcmIHVybFN0cmluZyk7CisgICAgICAgIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBp
dGVtcygpIGNvbnN0OworICAgICAgICB2b2lkIGNsZWFyKCk7CiAKLSAgICBjbGFzcyBTdG9yYWdl
QXJlYTsKLSAgICBTdG9yYWdlQXJlYSogZmluZFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbiYs
IHVpbnQ2NF90KSBjb25zdDsKKyAgICAgICAgYm9vbCBpc0VwaGVtZXJhbCgpIGNvbnN0IHsgcmV0
dXJuICFtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZTsgfQogCi0gICAgY2xhc3MgTG9jYWxTdG9yYWdl
TmFtZXNwYWNlOwotICAgIExvY2FsU3RvcmFnZU5hbWVzcGFjZSogZ2V0T3JDcmVhdGVMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UodWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlEKTsKKyAgICAgICAgdm9p
ZCBvcGVuRGF0YWJhc2VBbmRJbXBvcnRJdGVtc0lmTmVlZGVkKCkgY29uc3Q7CiAKLSAgICBjbGFz
cyBUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2U7Ci0gICAgVHJhbnNpZW50TG9jYWxTdG9y
YWdlTmFtZXNwYWNlKiBnZXRPckNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSh1
aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYm
IHRvcExldmVsT3JpZ2luKTsKKyAgICAgICAgdm9pZCBzZXRXb3JrUXVldWUoUmVmUHRyPFdvcmtR
dWV1ZT4mJiBxdWV1ZSkgeyBtX3F1ZXVlID0gV1RGTW92ZShxdWV1ZSk7IH0KIAotICAgIFJlZjxX
b3JrUXVldWU+IG1fcXVldWU7CisgICAgcHJpdmF0ZToKKyAgICAgICAgZXhwbGljaXQgU3RvcmFn
ZUFyZWEoTG9jYWxTdG9yYWdlTmFtZXNwYWNlKiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhJiwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKIAotICAgIFJlZlB0cjxMb2NhbFN0b3Jh
Z2VEYXRhYmFzZVRyYWNrZXI+IG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOworICAgICAg
ICB2b2lkIGRpc3BhdGNoRXZlbnRzKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgc291cmNlQ29u
bmVjdGlvbiwgdWludDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwgY29uc3QgU3RyaW5nJiBrZXks
IGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIGNvbnN0IFN0
cmluZyYgdXJsU3RyaW5nKSBjb25zdDsKKworICAgICAgICAvLyBXaWxsIGJlIG51bGwgaWYgdGhl
IHN0b3JhZ2UgYXJlYSBiZWxvbmdzIHRvIGEgc2Vzc2lvbiBzdG9yYWdlIG5hbWVzcGFjZSBvciB0
aGUgc3RvcmFnZSBhcmVhIGlzIGluIGFuIGVwaGVtZXJhbCBzZXNzaW9uLgorICAgICAgICBXZWFr
UHRyPExvY2FsU3RvcmFnZU5hbWVzcGFjZT4gbV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2U7CisgICAg
ICAgIG11dGFibGUgUmVmUHRyPExvY2FsU3RvcmFnZURhdGFiYXNlPiBtX2xvY2FsU3RvcmFnZURh
dGFiYXNlOworICAgICAgICBtdXRhYmxlIGJvb2wgbV9kaWRJbXBvcnRJdGVtc0Zyb21EYXRhYmFz
ZSB7IGZhbHNlIH07CisKKyAgICAgICAgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIG1fc2Vj
dXJpdHlPcmlnaW47CisgICAgICAgIHVuc2lnbmVkIG1fcXVvdGFJbkJ5dGVzOworCisgICAgICAg
IFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlTWFwPiBtX3N0b3JhZ2VNYXA7CisgICAgICAgIEhhc2hT
ZXQ8SVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRD4gbV9ldmVudExpc3RlbmVyczsKKworICAgICAg
ICB1aW50NjRfdCBtX2lkZW50aWZpZXI7CisgICAgICAgIFJlZlB0cjxXb3JrUXVldWU+IG1fcXVl
dWU7CisgICAgfTsKKworICAgIFN0b3JhZ2VBcmVhKiBjcmVhdGVMb2NhbFN0b3JhZ2VBcmVhKHVp
bnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYp
OworICAgIFN0b3JhZ2VBcmVhKiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKHVpbnQ2
NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmKTsKKyAgICBTdG9yYWdlQXJlYSogY3JlYXRlU2Vz
c2lvblN0b3JhZ2VBcmVhKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhJiYpOworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IFN0b3JhZ2VNYW5h
Z2VyKFN0cmluZyYmIGxvY2FsU3RvcmFnZURpcmVjdG9yeSk7CisKKyAgICBMb2NhbFN0b3JhZ2VO
YW1lc3BhY2UqIGdldE9yQ3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IHN0b3Jh
Z2VOYW1lc3BhY2VJRCk7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPExvY2FsU3RvcmFn
ZU5hbWVzcGFjZT4+IG1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlczsKKyAgICBSZWZQdHI8TG9jYWxT
dG9yYWdlRGF0YWJhc2VUcmFja2VyPiBtX2xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjsKIAor
ICAgIGNsYXNzIFRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZTsKKyAgICBUcmFuc2llbnRM
b2NhbFN0b3JhZ2VOYW1lc3BhY2UqIGdldE9yQ3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFt
ZXNwYWNlKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhJiYgdG9wTGV2ZWxPcmlnaW4pOwogICAgIEhhc2hNYXA8c3RkOjpwYWlyPHVpbnQ2NF90
LCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+LCBSZWZQdHI8VHJhbnNpZW50TG9jYWxTdG9y
YWdlTmFtZXNwYWNlPj4gbV90cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2VzOwogCiAgICAg
Y2xhc3MgU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2U7CisgICAgU2Vzc2lvblN0b3JhZ2VOYW1lc3Bh
Y2UqIGdldE9yQ3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3Qgc3RvcmFnZU5h
bWVzcGFjZUlEKTsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8U2Vzc2lvblN0b3JhZ2VO
YW1lc3BhY2U+PiBtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlczsKLQotICAgIEhhc2hNYXA8c3Rk
OjpwYWlyPElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIHVpbnQ2NF90PiwgUmVmUHRyPFN0b3Jh
Z2VBcmVhPj4gbV9zdG9yYWdlQXJlYXNCeUNvbm5lY3Rpb247Ci0gICAgSGFzaFNldDxJUEM6OkNv
bm5lY3Rpb246OlVuaXF1ZUlEPiBtX2Nvbm5lY3Rpb25zOwotCi0gICAgZW51bSBjbGFzcyBTdGF0
ZSB7Ci0gICAgICAgIFJ1bm5pbmcsCi0gICAgICAgIFdpbGxTdXNwZW5kLAotICAgICAgICBTdXNw
ZW5kZWQKLSAgICB9OwotICAgIFN0YXRlIG1fc3RhdGUgeyBTdGF0ZTo6UnVubmluZyB9OwotICAg
IExvY2sgbV9zdGF0ZUxvY2s7Ci0gICAgQ29uZGl0aW9uIG1fc3RhdGVDaGFuZ2VDb25kaXRpb247
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5tZXNz
YWdlcy5pbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzhiYjZhYjI0MDI4YTI1M2Fh
MTE4NTQyMDFkNmExNWQyNWNlMmM2Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3Rv
cmFnZU1hbmFnZXIubWVzc2FnZXMuaW4KKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi0j
IENvcHlyaWdodCAoQykgMjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMg
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotbWVzc2FnZXMgLT4g
U3RvcmFnZU1hbmFnZXIgewotICAgIENyZWF0ZUxvY2FsU3RvcmFnZU1hcCh1aW50NjRfdCBzdG9y
YWdlTWFwSUQsIHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgc3RydWN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSBzZWN1cml0eU9yaWdpbkRhdGEpIFdhbnRzQ29ubmVjdGlvbgotICAg
IENyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU1hcCh1aW50NjRfdCBzdG9yYWdlTWFwSUQsIHVp
bnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSB0b3BMZXZlbFNlY3VyaXR5T3JpZ2luRGF0YSwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSBzZWN1cml0eU9yaWdpbkRhdGEpIFdhbnRzQ29ubmVjdGlvbgotICAgIENyZWF0
ZVNlc3Npb25TdG9yYWdlTWFwKHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCwgdWludDY0X3Qgc3RvcmFn
ZU5hbWVzcGFjZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHNlY3VyaXR5
T3JpZ2luRGF0YSkgV2FudHNDb25uZWN0aW9uCi0gICAgRGVzdHJveVN0b3JhZ2VNYXAodWludDY0
X3Qgc3RvcmFnZU1hcElEKSBXYW50c0Nvbm5lY3Rpb24KLQotICAgIFByZXdhcm0odWludDY0X3Qg
c3RvcmFnZU1hcElEKSBXYW50c0Nvbm5lY3Rpb24KLSAgICBHZXRWYWx1ZXModWludDY0X3Qgc3Rv
cmFnZU1hcElELCB1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCkgLT4gKEhhc2hNYXA8U3RyaW5nLCBT
dHJpbmc+IHZhbHVlcykgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCi0KLSAgICBTZXRJdGVt
KHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgc2VjdXJpdHlPcmlnaW5EYXRhLCB1
aW50NjRfdCBzdG9yYWdlTWFwSUQsIHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIHVpbnQ2
NF90IHN0b3JhZ2VNYXBTZWVkLCBTdHJpbmcga2V5LCBTdHJpbmcgdmFsdWUsIFN0cmluZyB1cmxT
dHJpbmcpIFdhbnRzQ29ubmVjdGlvbgotICAgIFNldEl0ZW1zKHVpbnQ2NF90IHN0b3JhZ2VNYXBJ
RCwgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gaXRlbXMpIFdhbnRzQ29ubmVjdGlvbgotICAgIFJl
bW92ZUl0ZW0oc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBzZWN1cml0eU9yaWdp
bkRhdGEsIHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCwgdWludDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJ
RCwgdWludDY0X3Qgc3RvcmFnZU1hcFNlZWQsIFN0cmluZyBrZXksIFN0cmluZyB1cmxTdHJpbmcp
IFdhbnRzQ29ubmVjdGlvbgotICAgIENsZWFyKHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEgc2VjdXJpdHlPcmlnaW5EYXRhLCB1aW50NjRfdCBzdG9yYWdlTWFwSUQsIHVpbnQ2NF90
IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkLCBTdHJpbmcgdXJs
U3RyaW5nKSBXYW50c0Nvbm5lY3Rpb24KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmNwcAppbmRleCBkOTFhMzRmNmE5MjcyNWMxNDE3
NzNmMDhhYjQyOWU3ZThlNTg2M2MzLi42NGEwYzFiYmI0OWU2ZmFlMmQ4N2UxMGQ5ZGVlMTU4NGIw
MGYwOThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0b3Jl
UGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGFTdG9y
ZVBhcmFtZXRlcnMuY3BwCkBAIC01Myw2ICs1Myw4IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZVBh
cmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2Rl
ciA8PCBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5IDw8IHNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAjZW5kaWYKIAorICAgIGVuY29k
ZXIgPDwgbG9jYWxTdG9yYWdlRGlyZWN0b3J5IDw8IGxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVu
c2lvbkhhbmRsZTsKKwogICAgIGVuY29kZXIgPDwgcGVyT3JpZ2luU3RvcmFnZVF1b3RhOwogICAg
IGVuY29kZXIgPDwgcGVyVGhpcmRQYXJ0eU9yaWdpblN0b3JhZ2VRdW90YTsKIH0KQEAgLTEyMSw2
ICsxMjMsMTggQEAgT3B0aW9uYWw8V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM+IFdlYnNpdGVE
YXRhU3RvcmVQYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWMKICAgICBwYXJhbWV0ZXJzLnNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKCpz
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKICNlbmRp
ZgogCisgICAgT3B0aW9uYWw8U3RyaW5nPiBsb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7CisgICAgZGVj
b2RlciA+PiBsb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7CisgICAgaWYgKCFsb2NhbFN0b3JhZ2VEaXJl
Y3RvcnkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcGFyYW1ldGVycy5sb2Nh
bFN0b3JhZ2VEaXJlY3RvcnkgPSBXVEZNb3ZlKCpsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpOworICAg
IAorICAgIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gbG9jYWxTdG9yYWdlRGly
ZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOworICAgIGRlY29kZXIgPj4gbG9jYWxTdG9yYWdlRGlyZWN0
b3J5RXh0ZW5zaW9uSGFuZGxlOworICAgIGlmICghbG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5z
aW9uSGFuZGxlKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHBhcmFtZXRlcnMu
bG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgqbG9jYWxTdG9y
YWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKKwogICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBw
ZXJPcmlnaW5TdG9yYWdlUXVvdGE7CiAgICAgZGVjb2RlciA+PiBwZXJPcmlnaW5TdG9yYWdlUXVv
dGE7CiAgICAgaWYgKCFwZXJPcmlnaW5TdG9yYWdlUXVvdGEpCkBAIC0xNDksNiArMTYzLDcgQEAg
V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM6OnBy
aXZhdGVTZXNzaW9uUGFyYW1ldGVycygKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAg
ICAgICwgeyB9LCB7IH0KICNlbmRpZgorICAgICAgICAsIHsgfSwgeyB9CiAgICAgfTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRl
cnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmgK
aW5kZXggOTkyZmVlOTdkMDk5NzRjOWYzNDdmNmM3MGRhYTFjZWJmM2UyZjI0Zi4uNmZlY2UzZjE1
NGZlOWQ3ZmI5OGJmYzk3ZDliMWI3YmZmNDI0ZjM5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oCkBAIC03MCw2ICs3MCw5IEBAIHN0
cnVjdCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyB7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7
CiAjZW5kaWYKIAorICAgIFN0cmluZyBsb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7CisgICAgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlIGxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsK
KwogICAgIHVpbnQ2NF90IHBlck9yaWdpblN0b3JhZ2VRdW90YSB7IFdlYkNvcmU6OlN0b3JhZ2VR
dW90YU1hbmFnZXI6OmRlZmF1bHRRdW90YSgpIH07CiAgICAgdWludDY0X3QgcGVyVGhpcmRQYXJ0
eU9yaWdpblN0b3JhZ2VRdW90YSB7IFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6OmRlZmF1
bHRUaGlyZFBhcnR5UXVvdGEoKSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291
cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDc5MTZlMjNiNzdlZWZi
YzA4YjE5NzA0Mjc5N2YwMDA0OGNmYzE2M2YuLmI3OTA5NzQ3YzUyMTI0YWY0YzY4MzI4MDk0OTkx
NmMzNTkwYTM2YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIv
U291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtNjksNiArNjksNyBAQCBOZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgQG5vLXVu
aWZ5CiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcAog
TmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3Bw
CiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcAorTmV0d29ya1By
b2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldC5jcHAKIAogTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcAogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVT
dG9yYWdlRW5naW5lQ2FjaGUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5jcHAKaW5kZXggZjZiYmQyYjliZDJkYjM4YzBiOWZlZTVlNzk5OTI2YjdiZjIyZTY5Ny4u
NzUxNmI3NmY3NDhhMzBiZjA5ZmIyNmNlYzQxNmI0MGI4OWY4MjAyOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtNTgzLDggKzU4Myw4IEBAIE5ldHdv
cmtQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjplbnN1cmVOZXR3b3JrUHJvY2VzcyhXZWJz
aXRlRGF0YVN0b3JlKiB3aXRoCiAgICAgYXV0byBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBtX3dl
YnNpdGVEYXRhU3RvcmUgPyBtX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5y
ZXNvbHZlZExvY2FsU3RvcmFnZURpcmVjdG9yeSgpIDogbnVsbFN0cmluZygpOwogICAgIGlmICgh
bG9jYWxTdG9yYWdlRGlyZWN0b3J5KQogICAgICAgICBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBB
UEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKTsKLSAg
ICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFy
YW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBsb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7Ci0g
ICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KGxv
Y2FsU3RvcmFnZURpcmVjdG9yeSwgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVy
cy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9u
SGFuZGxlKTsKKyAgICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLmxvY2Fs
U3RvcmFnZURpcmVjdG9yeSA9IGxvY2FsU3RvcmFnZURpcmVjdG9yeTsKKyAgICBTYW5kYm94RXh0
ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkobG9jYWxTdG9yYWdlRGly
ZWN0b3J5LCBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLmxvY2FsU3RvcmFn
ZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAKICAgICBpZiAobV93ZWJzaXRlRGF0YVN0b3Jl
KQogICAgICAgICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLm5ldHdvcmtT
ZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5ID0gbV93ZWJz
aXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVzb2x2ZWRSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGlyZWN0b3J5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KaW5k
ZXggYTY4MzZkOTI1MTYzMmI4MTg1NTMxNmI2ZGM0ZWE3OGZmODFjYjZiNi4uOTZkZTI3OTliZWEx
NzBlNGM4ZTA2YzQ4OTI0NDg3ZmUzYmZjMmY5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3Rv
cmVDb2NvYS5tbQpAQCAtMTA3LDExICsxMDcsNiBAQCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVy
cyBXZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0ZXJzKCkKICAgICBpZiAoIXJlc291cmNlTG9hZFN0
YXRpc3RpY3NEaXJlY3RvcnkuaXNFbXB0eSgpKQogICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpj
cmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkocmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rp
cmVjdG9yeSwgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeUhhbmRsZSk7CiAKLSAgICBh
dXRvIGxvY2FsU3RvcmFnZURpcmVjdG9yeSA9IHJlc29sdmVkTG9jYWxTdG9yYWdlRGlyZWN0b3J5
KCk7Ci0gICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGxvY2FsU3RvcmFnZURpcmVjdG9yeUV4
dGVuc2lvbkhhbmRsZTsKLSAgICBpZiAoIWxvY2FsU3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkp
Ci0gICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVj
dG9yeShsb2NhbFN0b3JhZ2VEaXJlY3RvcnksIGxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lv
bkhhbmRsZSk7Ci0KICAgICBhdXRvIG5ldHdvcmtDYWNoZURpcmVjdG9yeSA9IHJlc29sdmVkTmV0
d29ya0NhY2hlRGlyZWN0b3J5KCk7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIG5ldHdv
cmtDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBpZiAoIW5ldHdvcmtDYWNoZURp
cmVjdG9yeS5pc0VtcHR5KCkpCkBAIC0xNDAsOCArMTM1LDYgQEAgV2Vic2l0ZURhdGFTdG9yZVBh
cmFtZXRlcnMgV2Vic2l0ZURhdGFTdG9yZTo6cGFyYW1ldGVycygpCiAgICAgICAgIG1fY29uZmln
dXJhdGlvbi0+ZGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0VuYWJsZWQoKSwKICAgICAgICAg
bV9jb25maWd1cmF0aW9uLT5hbGxMb2Fkc0Jsb2NrZWRCeURldmljZU1hbmFnZW1lbnRSZXN0cmlj
dGlvbnNGb3JUZXN0aW5nKCksCiAgICAgICAgIFdURk1vdmUocmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01hbnVhbFByZXZhbGVudFJlc291cmNlKSwKLSAgICAgICAgV1RGTW92ZShsb2NhbFN0b3JhZ2VE
aXJlY3RvcnkpLAotICAgICAgICBXVEZNb3ZlKGxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lv
bkhhbmRsZSksCiAgICAgICAgIFdURk1vdmUobmV0d29ya0NhY2hlRGlyZWN0b3J5KSwKICAgICAg
ICAgV1RGTW92ZShuZXR3b3JrQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpLAogICAgIH07
CkBAIC0xNzYsNiArMTY5LDEwIEBAIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVE
YXRhU3RvcmU6OnBhcmFtZXRlcnMoKQogICAgIGlmICghcGFyYW1ldGVycy5zZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uRGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAgU2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KHBhcmFtZXRlcnMuc2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSwgcGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKICNlbmRpZgorICAgIAorICAgIHBhcmFt
ZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gcmVzb2x2ZWRMb2NhbFN0b3JhZ2VEaXJlY3Rv
cnkoKTsKKyAgICBpZiAoIXBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5LmlzRW1wdHko
KSkKKyAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGly
ZWN0b3J5KHBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmxvY2Fs
U3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAKICAgICBwYXJhbWV0ZXJzLnBlck9y
aWdpblN0b3JhZ2VRdW90YSA9IHBlck9yaWdpblN0b3JhZ2VRdW90YSgpOwogICAgIHBhcmFtZXRl
cnMucGVyVGhpcmRQYXJ0eU9yaWdpblN0b3JhZ2VRdW90YSA9IHBlclRoaXJkUGFydHlPcmlnaW5T
dG9yYWdlUXVvdGEoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggOTRjNGQ1OThiNjAzN2E2OTk3MTJk
MTdiOWZhN2M1ZWIxNjRhNmM1OC4uNWI1MTBjZGFhMGM3YWIyM2M5MDM3ZmE3MzU5ZmU5M2Q3M2Qz
ZGQ5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTE5NTcsOCArMTk1Nyw4IEBAIFdlYnNpdGVEYXRh
U3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMoKQogCiAgICAgYXV0
byBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSByZXNvbHZlZExvY2FsU3RvcmFnZURpcmVjdG9yeSgp
OwogICAgIGlmICghbG9jYWxTdG9yYWdlRGlyZWN0b3J5LmlzRW1wdHkoKSkgewotICAgICAgICBw
YXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3Rvcnkg
PSBsb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7Ci0gICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0
ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShsb2NhbFN0b3JhZ2VEaXJlY3RvcnksIHBhcmFt
ZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVu
c2lvbkhhbmRsZSk7CisgICAgICAgIHBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0g
bG9jYWxTdG9yYWdlRGlyZWN0b3J5OworICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVI
YW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkobG9jYWxTdG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0
ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAgICAgfQogCiAjaWYg
RU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkYjQyMTk2ZTdlZGNjZjZjNjU5ZTAwMzVhYzA0YTc4
N2E5Y2VmYjFhLi43NDZmZjlhMmI1MWVkNTAzYzcyZTI2ZDM5ZTE5MjViMTVmYWM4ZjZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI5
NCw4ICsyOTQsNiBAQAogCQkxQUIxRjc5NzFEMUIzNjEzMDA3QzlCRDEgLyogV2ViUGF5bWVudENv
b3JkaW5hdG9yTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDFBQjFGNzkzMUQxQjM2MTMwMDdDOUJEMSAvKiBXZWJQYXltZW50Q29vcmRpbmF0
b3JNZXNzYWdlcy5oICovOyB9OwogCQkxQUIxRjc5ODFEMUIzNjEzMDA3QzlCRDEgLyogV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFCMUY3OTQxRDFCMzYxMzAwN0M5QkQxIC8q
IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJ
MUFCMUY3OTkxRDFCMzYxMzAwN0M5QkQxIC8qIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWVz
c2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFB
QjFGNzk1MUQxQjM2MTMwMDdDOUJEMSAvKiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1lc3Nh
Z2VzLmggKi87IH07Ci0JCTFBQjMxQTk2MTZCQzY4ODEwMEY2REJDOSAvKiBTdG9yYWdlTWFuYWdl
ck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxQUIzMUE5NDE2QkM2ODgxMDBGNkRCQzkgLyogU3RvcmFnZU1hbmFnZXJNZXNz
YWdlUmVjZWl2ZXIuY3BwICovOyB9OwotCQkxQUIzMUE5NzE2QkM2ODgxMDBGNkRCQzkgLyogU3Rv
cmFnZU1hbmFnZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUFCMzFBOTUxNkJDNjg4MTAwRjZEQkM5IC8qIFN0b3JhZ2VNYW5hZ2VyTWVz
c2FnZXMuaCAqLzsgfTsKIAkJMUFCNDBFRTYxQkY2NzdFMzAwQkE4MUJFIC8qIFdLTWVudUl0ZW1J
ZGVudGlmaWVyc1ByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDFBQjQwRUU0MUJGNjc3RTMwMEJBODFCRSAvKiBXS01lbnVJdGVtSWRlbnRpZmll
cnNQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMUFCNDc0RDgxODRENDNGRDAwNTFCNjIyIC8qIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFCNDc0
RDcxODRENDNGRDAwNTFCNjIyIC8qIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFBQjQ3NERBMTg0RDQ0
MjUwMDUxQjYyMiAvKiBXS0J1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjQ3NEQ5MTg0RDQ0MjUwMDUx
QjYyMiAvKiBXS0J1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTI3Miw2ICsxMjcwLDkgQEAKIAkJ
OTM1RUVCOUIxMjc3NjE3QzAwMzMyMkI4IC8qIFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM1RUVCOTgx
Mjc3NjE2RDAwMzMyMkI4IC8qIFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzNUVFQjlGMTI3NzYx
QUMwMDMzMjJCOCAvKiBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM1RUVCOTYxMjc3NjE2RDAwMzMyMkI4IC8q
IFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTM3MzVFQkIxQzkyOTg2MzAwMzM2RkE3IC8qIFdLUHJldmll
d0FjdGlvbkl0ZW1JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTM3MzVFQkExQzkyOTg2MzAwMzM2RkE3IC8qIFdLUHJldmlld0FjdGlvbkl0
ZW1JbnRlcm5hbC5oICovOyB9OworCQk5Mzc2Mjc0NDIyRjExNUREMDAzNUJGODAgLyogU3RvcmFn
ZU1hbmFnZXJTZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDkzNzYyNzQyMjJGMTE1Q0QwMDM1QkY4MCAvKiBTdG9yYWdlTWFuYWdlclNldC5oICovOyB9
OworCQk5Mzc5MTBEQzIyRjE3MTAzMDAzQkExNDQgLyogU3RvcmFnZU1hbmFnZXJTZXRNZXNzYWdl
UmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTM3OTEwREIyMkYxNkZDOTAwM0JBMTQ0IC8qIFN0b3JhZ2VNYW5hZ2VyU2V0TWVzc2FnZVJl
Y2VpdmVyLmNwcCAqLzsgfTsKKwkJOTM3OTEwREUyMkYxNzFBOTAwM0JBMTQ0IC8qIFN0b3JhZ2VN
YW5hZ2VyU2V0TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDkzNzkxMEREMjJGMTcxODEwMDNCQTE0NCAvKiBTdG9yYWdlTWFuYWdlclNldE1l
c3NhZ2VzLmggKi87IH07CiAJCTkzOTEwNzRGMUJGNkJDNjUwMDhDMTdBRCAvKiBXS1ByZXZpZXdF
bGVtZW50SW5mb0ludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5MzkxMDc0RTFCRjZCQzY1MDA4QzE3QUQgLyogV0tQcmV2aWV3RWxlbWVudElu
Zm9JbnRlcm5hbC5oICovOyB9OwogCQk5MzkxRjJDQjEyMUI2N0FEMDBFQkY3RTggLyogV2ViRnJh
bWVOZXR3b3JraW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTM5MUYyODMxMjFCMzhGNTAwRUJGN0U4IC8qIFdlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQuaCAqLzsgfTsKIAkJOTM5NUU2OEExQkYyQzMzMjAwRjQ5QkNFIC8qIFdLUHJldmll
d0VsZW1lbnRJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5Mzk1RTY4OTFCRjJDMzMyMDBGNDlCQ0UgLyogV0tQcmV2aWV3RWxlbWVudEluZm8uaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CkBAIC0xNzAyLDYg
KzE3MDMsOCBAQAogCQkJY29tcGlsZXJTcGVjID0gY29tLmFwcGxlLmNvbXBpbGVycy5wcm94eS5z
Y3JpcHQ7CiAJCQlmaWxlUGF0dGVybnMgPSAiKi5oIjsKIAkJCWZpbGVUeXBlID0gcGF0dGVybi5w
cm94eTsKKwkJCWlucHV0RmlsZXMgPSAoCisJCQkpOwogCQkJaXNFZGl0YWJsZSA9IDE7CiAJCQlv
dXRwdXRGaWxlcyA9ICgKIAkJCQkiJChIRUFERVJfT1VUUFVUX0RJUikvJChJTlBVVF9GSUxFX05B
TUUpIiwKQEAgLTIzMDIsOCArMjMwNSw2IEBACiAJCTFBQjFGNzkzMUQxQjM2MTMwMDdDOUJEMSAv
KiBXZWJQYXltZW50Q29vcmRpbmF0b3JNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBXZWJQYXltZW50Q29vcmRpbmF0b3JNZXNzYWdlcy5oOyBwYXRoID0gRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0Mi9XZWJQYXltZW50Q29vcmRpbmF0b3JNZXNzYWdlcy5oOyBzb3VyY2VU
cmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQkxQUIxRjc5NDFEMUIzNjEzMDA3QzlCRDEg
LyogV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlN
ZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlM
VF9QUk9EVUNUU19ESVI7IH07CiAJCTFBQjFGNzk1MUQxQjM2MTMwMDdDOUJEMSAvKiBXZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWVzc2FnZXMuaDsgcGF0aCA9IERlcml2
ZWRTb3VyY2VzL1dlYktpdDIvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNZXNzYWdlcy5oOyBz
b3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwotCQkxQUIzMUE5NDE2QkM2ODgxMDBG
NkRCQzkgLyogU3RvcmFnZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU3RvcmFnZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3Bw
OyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9TdG9yYWdlTWFuYWdlck1lc3NhZ2VSZWNl
aXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07Ci0JCTFBQjMxQTk1
MTZCQzY4ODEwMEY2REJDOSAvKiBTdG9yYWdlTWFuYWdlck1lc3NhZ2VzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFN0b3JhZ2VNYW5hZ2VyTWVzc2FnZXMuaDsgcGF0aCA9IERl
cml2ZWRTb3VyY2VzL1dlYktpdDIvU3RvcmFnZU1hbmFnZXJNZXNzYWdlcy5oOyBzb3VyY2VUcmVl
ID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQkxQUI0MEVFMzFCRjY3N0UzMDBCQTgxQkUgLyog
V0tNZW51SXRlbUlkZW50aWZpZXJzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gV0tNZW51SXRlbUlkZW50aWZpZXJzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxQUI0MEVFNDFCRjY3N0UzMDBCQTgxQkUgLyogV0tNZW51SXRlbUlkZW50aWZpZXJz
UHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS01lbnVJdGVtSWRl
bnRpZmllcnNQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQjQ3NEQ3
MTg0RDQzRkQwMDUxQjYyMiAvKiBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zODg4LDYgKzM4ODksMTEgQEAKIAkJOTM1RUVCOTcx
Mjc3NjE2RDAwMzMyMkI4IC8qIFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdEl0
ZW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzVFRUI5ODEyNzc2MTZEMDAz
MzIyQjggLyogV0tCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5MzczNUVCQTFDOTI5ODYzMDAzMzZGQTcgLyogV0tQcmV2aWV3
QWN0aW9uSXRlbUludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdL
UHJldmlld0FjdGlvbkl0ZW1JbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk5Mzc2Mjc0MTIyRjExNUNEMDAzNUJGODAgLyogU3RvcmFnZU1hbmFnZXJTZXQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RvcmFnZU1hbmFnZXJTZXQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5Mzc2Mjc0MjIyRjExNUNEMDAzNUJGODAgLyog
U3RvcmFnZU1hbmFnZXJTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3Rv
cmFnZU1hbmFnZXJTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTM3NjI3NDMy
MkYxMTVDRTAwMzVCRjgwIC8qIFN0b3JhZ2VNYW5hZ2VyU2V0Lm1lc3NhZ2VzLmluICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFN0b3JhZ2VNYW5hZ2VyU2V0Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk5Mzc5MTBEQjIyRjE2RkM5MDAzQkExNDQgLyogU3RvcmFnZU1h
bmFnZXJTZXRNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gU3RvcmFnZU1hbmFnZXJTZXRNZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0gRGVy
aXZlZFNvdXJjZXMvV2ViS2l0Mi9TdG9yYWdlTWFuYWdlclNldE1lc3NhZ2VSZWNlaXZlci5jcHA7
IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTkzNzkxMEREMjJGMTcxODEw
MDNCQTE0NCAvKiBTdG9yYWdlTWFuYWdlclNldE1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IFN0b3JhZ2VNYW5hZ2VyU2V0TWVzc2FnZXMuaDsgcGF0aCA9IERlcml2
ZWRTb3VyY2VzL1dlYktpdDIvU3RvcmFnZU1hbmFnZXJTZXRNZXNzYWdlcy5oOyBzb3VyY2VUcmVl
ID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk5MzkxMDc0RTFCRjZCQzY1MDA4QzE3QUQgLyog
V0tQcmV2aWV3RWxlbWVudEluZm9JbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXS1ByZXZpZXdFbGVtZW50SW5mb0ludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkzOTFGMjgzMTIxQjM4RjUwMEVCRjdFOCAvKiBXZWJGcmFtZU5ldHdvcmtp
bmdDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkZyYW1lTmV0
d29ya2luZ0NvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM5MUYyODQx
MjFCMzhGNTAwRUJGN0U4IC8qIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzkxNiw3ICszOTIyLDYgQEAKIAkJ
OTNCMjYxNDgyMjdEMTQ3MTAwQjk3QTc2IC8qIGlvcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZvbGRlcjsgcGF0aCA9IGlvczsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTNCMjYxNDkyMjdEMTQ3MjAwQjk3QTc2IC8qIFN0b3JhZ2VNYW5h
Z2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0b3JhZ2VNYW5hZ2VyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQjI2MTRBMjI3RDE0NzIwMEI5N0E3NiAv
KiBTdG9yYWdlTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTdG9yYWdlTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTkzQjI2
MTRCMjI3RDE0NzIwMEI5N0E3NiAvKiBTdG9yYWdlTWFuYWdlci5tZXNzYWdlcy5pbiAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBTdG9yYWdlTWFuYWdlci5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTNCMjYxNEMyMjdEMTQ3MjAwQjk3QTc2IC8qIExvY2FsU3RvcmFn
ZURhdGFiYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExvY2Fs
U3RvcmFnZURhdGFiYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCQTA0
REEyMTUxQURGMzAwN0Y0NTVGIC8qIFdlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW47
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQkEwNERCMjE1MUFERjMwMDdGNDU1RiAv
KiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC03MjkyLDcgKzcyOTcsOSBAQAogCQkJCTkzQjI2MTQ2MjI3RDE0
NzEwMEI5N0E3NiAvKiBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuaCAqLywKIAkJCQk5M0Iy
NjE0QTIyN0QxNDcyMDBCOTdBNzYgLyogU3RvcmFnZU1hbmFnZXIuY3BwICovLAogCQkJCTkzQjI2
MTQ5MjI3RDE0NzIwMEI5N0E3NiAvKiBTdG9yYWdlTWFuYWdlci5oICovLAotCQkJCTkzQjI2MTRC
MjI3RDE0NzIwMEI5N0E3NiAvKiBTdG9yYWdlTWFuYWdlci5tZXNzYWdlcy5pbiAqLywKKwkJCQk5
Mzc2Mjc0MTIyRjExNUNEMDAzNUJGODAgLyogU3RvcmFnZU1hbmFnZXJTZXQuY3BwICovLAorCQkJ
CTkzNzYyNzQyMjJGMTE1Q0QwMDM1QkY4MCAvKiBTdG9yYWdlTWFuYWdlclNldC5oICovLAorCQkJ
CTkzNzYyNzQzMjJGMTE1Q0UwMDM1QkY4MCAvKiBTdG9yYWdlTWFuYWdlclNldC5tZXNzYWdlcy5p
biAqLywKIAkJCSk7CiAJCQlwYXRoID0gV2ViU3RvcmFnZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CkBAIC04NzUyLDggKzg3NTksOCBAQAogCQkJCTJERTY5NDNDMThCRDJBNjgwMDVDMTVF
NSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZXMuaCAqLywKIAkJCQkxQTMz
NERFQjE2REU4Rjg4MDA2QThFMzggLyogU3RvcmFnZUFyZWFNYXBNZXNzYWdlUmVjZWl2ZXIuY3Bw
ICovLAogCQkJCTFBMzM0REVDMTZERThGODgwMDZBOEUzOCAvKiBTdG9yYWdlQXJlYU1hcE1lc3Nh
Z2VzLmggKi8sCi0JCQkJMUFCMzFBOTQxNkJDNjg4MTAwRjZEQkM5IC8qIFN0b3JhZ2VNYW5hZ2Vy
TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKLQkJCQkxQUIzMUE5NTE2QkM2ODgxMDBGNkRCQzkgLyog
U3RvcmFnZU1hbmFnZXJNZXNzYWdlcy5oICovLAorCQkJCTkzNzkxMERCMjJGMTZGQzkwMDNCQTE0
NCAvKiBTdG9yYWdlTWFuYWdlclNldE1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJCQkJOTM3OTEw
REQyMkYxNzE4MTAwM0JBMTQ0IC8qIFN0b3JhZ2VNYW5hZ2VyU2V0TWVzc2FnZXMuaCAqLywKIAkJ
CQk1MTE4RTlBNTFGMjk1OTYzMDAzRUY5RjUgLyogU3RvcmFnZVByb2Nlc3NNZXNzYWdlUmVjZWl2
ZXIuY3BwICovLAogCQkJCTUxMThFOUE2MUYyOTU5NjMwMDNFRjlGNSAvKiBTdG9yYWdlUHJvY2Vz
c01lc3NhZ2VzLmggKi8sCiAJCQkJNTExOEU5QTcxRjI5NTk2MzAwM0VGOUY1IC8qIFN0b3JhZ2VQ
cm9jZXNzUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLApAQCAtOTY2MCw3ICs5NjY3LDggQEAK
IAkJCQkxQUNFQ0QyNTE3MTYyREIxMDAxRkM5RUYgLyogU3RvcmFnZUFyZWFNYXAuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBMzM0REVFMTZERThGODgwMDZBOEUzOCAvKiBTdG9yYWdlQXJlYU1hcE1l
c3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0IyNjE0RDIyN0QxNDlFMDBCOTdBNzYgLyog
U3RvcmFnZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTFBQjMxQTk3MTZCQzY4ODEwMEY2
REJDOSAvKiBTdG9yYWdlTWFuYWdlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKKwkJCQk5Mzc2
Mjc0NDIyRjExNUREMDAzNUJGODAgLyogU3RvcmFnZU1hbmFnZXJTZXQuaCBpbiBIZWFkZXJzICov
LAorCQkJCTkzNzkxMERFMjJGMTcxQTkwMDNCQTE0NCAvKiBTdG9yYWdlTWFuYWdlclNldE1lc3Nh
Z2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUUwMEQ2QzE4MzI3QzEyMDAwODdERDcgLyogU3Ry
aW5nUmVmZXJlbmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkyOTZCRDg1RDE1MDE5QkMzMDA3MUY0
MjQgLyogU3RyaW5nVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0ZEMzE4NjIyQjM1
MTZDMDA4RDBFOEIgLyogU3ViRnJhbWVTT0F1dGhvcml6YXRpb25TZXNzaW9uLmggaW4gSGVhZGVy
cyAqLywKQEAgLTExMTk0LDcgKzExMjAyLDcgQEAKIAkJCQkyRDkyQTc4NzIxMkI2QUIxMDBGNDkz
RkQgLyogU2hhcmVhYmxlQml0bWFwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJERTY5NDNEMThC
RDJBNjgwMDVDMTVFNSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZVJlY2Vp
dmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMzM0REVEMTZERThGODgwMDZBOEUzOCAvKiBT
dG9yYWdlQXJlYU1hcE1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkxQUIz
MUE5NjE2QkM2ODgxMDBGNkRCQzkgLyogU3RvcmFnZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJOTM3OTEwREMyMkYxNzEwMzAwM0JBMTQ0IC8qIFN0b3JhZ2VN
YW5hZ2VyU2V0TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTJBNzgz
MjEyQjZBNzEwMEY0OTNGRCAvKiBTdHJpbmdSZWZlcmVuY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMkQxMUI3NTEyMTI2QTI4MjAwNkY4ODc4IC8qIFVuaWZpZWRTb3VyY2UxLW1tLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJMkQxMUI3NTIyMTI2QTI4MjAwNkY4ODc4IC8qIFVuaWZpZWRTb3VyY2Ux
LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKaW5kZXggMjBjZTU1OTExZDcw
NjUxYzMzNWE3MGFjZjI0ZTViZGZjMjFiZDYzMS4uNzE3OGE1Mjk0N2JlMDc4NDA0MWFhYTEyODgy
MjFhMjhjMGI0NTJmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCkBAIC00Niw2ICs0Niw3IEBACiAj
aW5jbHVkZSAiV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldlYlBy
b2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sTWVzc2FnZXMuaCIKKyNp
bmNsdWRlICJXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaCIKICNpbmNsdWRlICJXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVy
cy5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FQSUNhc3QuaD4KQEAgLTM1MSw2ICszNTIs
OSBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKFdlYlBh
Z2VHcm91cFByb3h5KiBwYWdlR3JvdXAsIGJvbwogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LmVuYWJsZVByaXZhdGVCcm93c2luZ0ZvclRlc3RpbmcoZW5hYmxlZCk7CiAKICAgICBQYWdlR3Jv
dXA6OnBhZ2VHcm91cChwYWdlR3JvdXAtPmlkZW50aWZpZXIoKSktPmVuYWJsZUxlZ2FjeVByaXZh
dGVCcm93c2luZ0ZvclRlc3RpbmcoZW5hYmxlZCk7CisKKyAgICBhdXRvIHdlYlN0b3JhZ2VOYW1l
U3BhY2VQcm92aWRlciA9IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Z2V0T3JDcmVhdGUo
cGFnZUdyb3VwLT5wYWdlR3JvdXBJRCgpKTsKKyAgICB3ZWJTdG9yYWdlTmFtZVNwYWNlUHJvdmlk
ZXItPmVuYWJsZUxlZ2FjeVByaXZhdGVCcm93c2luZ0ZvclRlc3RpbmcoZW5hYmxlZCk7CiB9CiAK
IHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnNldFBvcHVwQmxvY2tpbmdFbmFibGVkKFdlYlBhZ2VHcm91
cFByb3h5KiBwYWdlR3JvdXAsIGJvb2wgZW5hYmxlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcAppbmRleCBhMmRhMTJjNjAyMjkzNzNjZjg3ODkyYjgzZGFhNTc3MzUwMGE3
N2YyLi45N2E1ZWU4ZDdkZDVjN2NlYzgxN2UxYTA1Njk3MWNmNjgzOWFlOGI0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC02NzcsNyArNjc3LDYgQEAgdm9pZCBX
ZWJQcm9jZXNzOjpjcmVhdGVXZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycyYKICAgICAvLyBJdCBpcyBuZWNlc3NhcnkgdG8gY2hlY2sgZm9yIHBh
Z2UgZXhpc3RlbmNlIGhlcmUgc2luY2UgZHVyaW5nIGEgd2luZG93Lm9wZW4oKSAob3IgdGFyZ2V0
ZWQKICAgICAvLyBsaW5rKSB0aGUgV2ViUGFnZSBnZXRzIGNyZWF0ZWQgYm90aCBpbiB0aGUgc3lu
Y2hyb25vdXMgaGFuZGxlciBhbmQgdGhyb3VnaCB0aGUgbm9ybWFsIHdheS4gCiAgICAgYXV0byBy
ZXN1bHQgPSBtX3BhZ2VNYXAuYWRkKHBhZ2VJRCwgbnVsbHB0cik7Ci0gICAgYXV0byBvbGRQYWdl
SUQgPSBwYXJhbWV0ZXJzLm9sZFBhZ2VJRCA/IHBhcmFtZXRlcnMub2xkUGFnZUlELnZhbHVlKCkg
OiBwYWdlSUQ7CiAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KSB7CiAgICAgICAgIEFTU0VSVCgh
cmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSk7CiAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUg
PSBXZWJQYWdlOjpjcmVhdGUocGFnZUlELCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKQEAgLTY4OCw4
ICs2ODcsNiBAQCB2b2lkIFdlYlByb2Nlc3M6OmNyZWF0ZVdlYlBhZ2UoUGFnZUlkZW50aWZpZXIg
cGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJgogICAgIH0gZWxzZQogICAgICAgICBy
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5yZWluaXRpYWxpemVXZWJQYWdlKFdURk1vdmUocGFyYW1l
dGVycykpOwogCi0gICAgZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlv
bigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpXZWJQYWdl
V2FzQWRkZWQocmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+c2Vzc2lvbklEKCksIHBhZ2VJRCwgb2xk
UGFnZUlEKSwgMCk7Ci0KICAgICBBU1NFUlQocmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSk7CiB9CiAK
QEAgLTY5Nyw3ICs2OTQsNiBAQCB2b2lkIFdlYlByb2Nlc3M6OnJlbW92ZVdlYlBhZ2UoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgQVNTRVJU
KG1fcGFnZU1hcC5jb250YWlucyhwYWdlSUQpKTsKIAotICAgIGVuc3VyZU5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6V2ViUGFnZVdhc1JlbW92ZWQoc2Vzc2lvbklELCBwYWdlSUQpLCAwKTsK
ICAgICBwYWdlV2lsbExlYXZlV2luZG93KHBhZ2VJRCk7CiAgICAgbV9wYWdlTWFwLnJlbW92ZShw
YWdlSUQpOwogCkBAIC0xMjQ2LDE2ICsxMjQyLDYgQEAgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
JiBXZWJQcm9jZXNzOjplbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKQogICAgICAgICAg
ICAgQ1JBU0goKTsKIAogICAgICAgICBtX25ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiA9IE5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlKGNvbm5lY3Rpb25JZGVudGlmaWVyKTsKLQotICAg
ICAgICAvLyBUbyByZWNvdmVyIHdlYiBzdG9yYWdlLCBuZXR3b3JrIHByb2Nlc3MgbmVlZHMgdG8g
a25vdyBhY3RpdmUgd2VicGFnZXMgdG8gcHJlcGFyZSBzZXNzaW9uIHN0b3JhZ2UuCi0gICAgICAg
IC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4MDUx
LgotICAgICAgICAvLyBXZWJwYWdlIHNob3VsZCBiZSBhZGRlZCB3aGVuIFN0b3JhZ2UgaXMgdXNl
ZCwgbm90IHdoZW4gY29ubmVjdGlvbiBpcyByZS1lc3RhYmxpc2hlZC4KLSAgICAgICAgZm9yIChh
dXRvJiBwYWdlIDogbV9wYWdlTWFwKSB7Ci0gICAgICAgICAgICBpZiAoIXBhZ2UudmFsdWUpCi0g
ICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OldlYlBhZ2VXYXNBZGRlZChwYWdlLnZhbHVlLT5zZXNzaW9uSUQoKSwgcGFn
ZS5rZXksIHBhZ2Uua2V5KSwgMCk7Ci0gICAgICAgIH0KICAgICB9CiAgICAgCiAgICAgcmV0dXJu
ICptX25ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjsKQEAgLTE2NzQsOCArMTY2MCw4IEBAIHZvaWQg
V2ViUHJvY2Vzczo6bm9uVmlzaWJsZVByb2Nlc3NDbGVhbnVwVGltZXJGaXJlZCgpCiAKIHZvaWQg
V2ViUHJvY2Vzczo6cmVnaXN0ZXJTdG9yYWdlQXJlYU1hcChTdG9yYWdlQXJlYU1hcCYgc3RvcmFn
ZUFyZWFNYXApCiB7Ci0gICAgQVNTRVJUKCFtX3N0b3JhZ2VBcmVhTWFwcy5jb250YWlucyhzdG9y
YWdlQXJlYU1hcC5pZGVudGlmaWVyKCkpKTsKLSAgICBtX3N0b3JhZ2VBcmVhTWFwcy5zZXQoc3Rv
cmFnZUFyZWFNYXAuaWRlbnRpZmllcigpLCAmc3RvcmFnZUFyZWFNYXApOworICAgIGlmICghbV9z
dG9yYWdlQXJlYU1hcHMuY29udGFpbnMoc3RvcmFnZUFyZWFNYXAuaWRlbnRpZmllcigpKSkKKyAg
ICAgICAgbV9zdG9yYWdlQXJlYU1hcHMuc2V0KHN0b3JhZ2VBcmVhTWFwLmlkZW50aWZpZXIoKSwg
JnN0b3JhZ2VBcmVhTWFwKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzOjp1bnJlZ2lzdGVyU3RvcmFn
ZUFyZWFNYXAoU3RvcmFnZUFyZWFNYXAmIHN0b3JhZ2VBcmVhTWFwKQpAQCAtMTY4Nyw3ICsxNjcz
LDYgQEAgdm9pZCBXZWJQcm9jZXNzOjp1bnJlZ2lzdGVyU3RvcmFnZUFyZWFNYXAoU3RvcmFnZUFy
ZWFNYXAmIHN0b3JhZ2VBcmVhTWFwKQogCiBTdG9yYWdlQXJlYU1hcCogV2ViUHJvY2Vzczo6c3Rv
cmFnZUFyZWFNYXAodWludDY0X3QgaWRlbnRpZmllcikgY29uc3QKIHsKLSAgICBBU1NFUlQobV9z
dG9yYWdlQXJlYU1hcHMuY29udGFpbnMoaWRlbnRpZmllcikpOwogICAgIHJldHVybiBtX3N0b3Jh
Z2VBcmVhTWFwcy5nZXQoaWRlbnRpZmllcik7CiB9CiAKQEAgLTE2OTUsMTUgKzE2ODAsNiBAQCB2
b2lkIFdlYlByb2Nlc3M6OmVuYWJsZVByaXZhdGVCcm93c2luZ0ZvclRlc3RpbmcoYm9vbCBlbmFi
bGUpCiB7CiAgICAgaWYgKGVuYWJsZSkKICAgICAgICAgZW5zdXJlTGVnYWN5UHJpdmF0ZUJyb3dz
aW5nU2Vzc2lvbkluTmV0d29ya1Byb2Nlc3MoKTsKLQotICAgIFZlY3RvcjxQYWdlSWRlbnRpZmll
cj4gcGFnZUlEczsKLSAgICBmb3IgKGF1dG8mIHBhZ2UgOiBtX3BhZ2VNYXApIHsKLSAgICAgICAg
aWYgKHBhZ2UudmFsdWUpCi0gICAgICAgICAgICBwYWdlSURzLmFwcGVuZChwYWdlLmtleSk7Ci0g
ICAgfQotCi0gICAgaWYgKCFwYWdlSURzLmlzRW1wdHkoKSkKLSAgICAgICAgZW5zdXJlTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpXZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQoZW5hYmxlID8g
UEFMOjpTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSA6IFBBTDo6U2Vzc2lvbklE
OjpkZWZhdWx0U2Vzc2lvbklEKCksIHBhZ2VJRHMpLCAwKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNz
OjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChib29sIGVuYWJsZWQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBs
LmNwcAppbmRleCA3NDBjMGRiYzA3Y2E3ZDU1ZTEzY2UyYjE5MDIzMzNjMGRlMGE2MjYzLi5mOTZl
YmFhMzJiYmI3Y2ZlNmFmOGE0YWE2MDRkNWJjODliZThlYjM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHAKQEAg
LTczLDExICs3Myw2IEBAIFN0cmluZyBTdG9yYWdlQXJlYUltcGw6Oml0ZW0oY29uc3QgU3RyaW5n
JiBrZXkpCiAgICAgcmV0dXJuIG1fc3RvcmFnZUFyZWFNYXAtPml0ZW0oa2V5KTsKIH0KIAotYm9v
bCBTdG9yYWdlQXJlYUltcGw6OnByZXdhcm0oKQotewotICAgIHJldHVybiBtX3N0b3JhZ2VBcmVh
TWFwLT5wcmV3YXJtKCk7Ci19Ci0KIHZvaWQgU3RvcmFnZUFyZWFJbXBsOjpzZXRJdGVtKEZyYW1l
KiBzb3VyY2VGcmFtZSwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUsIGJv
b2wmIHF1b3RhRXhjZXB0aW9uKQogewogICAgIEFTU0VSVCghdmFsdWUuaXNOdWxsKCkpOwpAQCAt
MTEyLDEyICsxMDcsMTIgQEAgc2l6ZV90IFN0b3JhZ2VBcmVhSW1wbDo6bWVtb3J5Qnl0ZXNVc2Vk
QnlDYWNoZSgpCiAKIHZvaWQgU3RvcmFnZUFyZWFJbXBsOjppbmNyZW1lbnRBY2Nlc3NDb3VudCgp
CiB7Ci0gICAgLy8gU3RvcmFnZSBhY2Nlc3MgaXMgaGFuZGxlZCBpbiB0aGUgVUkgcHJvY2Vzcywg
c28gdGhlcmUncyBub3RoaW5nIHRvIGRvIGhlcmUuCisgICAgLy8gU3RvcmFnZSBhY2Nlc3MgaXMg
aGFuZGxlZCBpbiB0aGUgbmV0d29yayBwcm9jZXNzLCBzbyB0aGVyZSdzIG5vdGhpbmcgdG8gZG8g
aGVyZS4KIH0KIAogdm9pZCBTdG9yYWdlQXJlYUltcGw6OmRlY3JlbWVudEFjY2Vzc0NvdW50KCkK
IHsKLSAgICAvLyBTdG9yYWdlIGFjY2VzcyBpcyBoYW5kbGVkIGluIHRoZSBVSSBwcm9jZXNzLCBz
byB0aGVyZSdzIG5vdGhpbmcgdG8gZG8gaGVyZS4KKyAgICAvLyBTdG9yYWdlIGFjY2VzcyBpcyBo
YW5kbGVkIGluIHRoZSBuZXR3b3JrIHByb2Nlc3MsIHNvIHRoZXJlJ3Mgbm90aGluZyB0byBkbyBo
ZXJlLgogfQogCiB2b2lkIFN0b3JhZ2VBcmVhSW1wbDo6Y2xvc2VEYXRhYmFzZUlmSWRsZSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJl
YUltcGwuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVh
SW1wbC5oCmluZGV4IGI4ZjE2ZjJlYWE1YTllYWMwNjY0NWIzOGU1ZjBmZjE0NGRkZDU4MjQuLjE2
NWFmNDRkOTAxOGI5YjlkMTNmNzNmY2U4NDQ3MzkyY2QxODM0MmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oCkBAIC02
MSw3ICs2MSw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZWNyZW1lbnRBY2Nlc3NDb3VudCgpIG92
ZXJyaWRlOwogICAgIHZvaWQgY2xvc2VEYXRhYmFzZUlmSWRsZSgpIG92ZXJyaWRlOwogICAgIGNv
bnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4oKSBjb25zdCBv
dmVycmlkZTsKLSAgICBib29sIHByZXdhcm0oKSBmaW5hbDsKIAogICAgIHVpbnQ2NF90IG1fc3Rv
cmFnZUFyZWFJRDsKICAgICBSZWY8U3RvcmFnZUFyZWFNYXA+IG1fc3RvcmFnZUFyZWFNYXA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJl
YU1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJl
YU1hcC5jcHAKaW5kZXggM2UwNTBkZjE3OGE0NDhiYzkzMmNhNGJhZWMxMDMxYTcyZjkzODBlNi4u
ZGNjZDY0YzYyYWE5ZDQyMzIwM2RiMGI0OWM5YTRkNDE5N2FkYjU0YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcApA
QCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgog
I2luY2x1ZGUgIlN0b3JhZ2VBcmVhSW1wbC5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhTWFwTWVz
c2FnZXMuaCIKLSNpbmNsdWRlICJTdG9yYWdlTWFuYWdlck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAi
U3RvcmFnZU1hbmFnZXJTZXRNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlN0b3JhZ2VOYW1lc3BhY2VJ
bXBsLmgiCiAjaW5jbHVkZSAiV2ViUGFnZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VHcm91cFByb3h5
LmgiCkBAIC00OCwxMiArNDgsNiBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIAotc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlU3RvcmFnZU1hcElEKCkKLXsK
LSAgICBzdGF0aWMgdWludDY0X3Qgc3RvcmFnZU1hcElEOwotICAgIHJldHVybiArK3N0b3JhZ2VN
YXBJRDsKLX0KLQogUmVmPFN0b3JhZ2VBcmVhTWFwPiBTdG9yYWdlQXJlYU1hcDo6Y3JlYXRlKFN0
b3JhZ2VOYW1lc3BhY2VJbXBsKiBzdG9yYWdlTmFtZXNwYWNlLCBSZWY8V2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW4+JiYgc2VjdXJpdHlPcmlnaW4pCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U3RvcmFnZUFyZWFNYXAoc3RvcmFnZU5hbWVzcGFjZSwgV1RGTW92ZShzZWN1cml0eU9yaWdpbikp
KTsKQEAgLTYxLDI3ICs1NSwyMSBAQCBSZWY8U3RvcmFnZUFyZWFNYXA+IFN0b3JhZ2VBcmVhTWFw
OjpjcmVhdGUoU3RvcmFnZU5hbWVzcGFjZUltcGwqIHN0b3JhZ2VOYW1lc3BhYwogCiBTdG9yYWdl
QXJlYU1hcDo6U3RvcmFnZUFyZWFNYXAoU3RvcmFnZU5hbWVzcGFjZUltcGwqIHN0b3JhZ2VOYW1l
c3BhY2UsIFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiBzZWN1cml0eU9yaWdpbikKICAg
ICA6IG1fc3RvcmFnZU5hbWVzcGFjZSgqc3RvcmFnZU5hbWVzcGFjZSkKLSAgICAsIG1fc3RvcmFn
ZU1hcElEKGdlbmVyYXRlU3RvcmFnZU1hcElEKCkpCisgICAgLCBtX3N0b3JhZ2VNYXBJRCgwKQog
ICAgICwgbV9zdG9yYWdlVHlwZShzdG9yYWdlTmFtZXNwYWNlLT5zdG9yYWdlVHlwZSgpKQotICAg
ICwgbV9zdG9yYWdlTmFtZXNwYWNlSUQoc3RvcmFnZU5hbWVzcGFjZS0+c3RvcmFnZU5hbWVzcGFj
ZUlEKCkpCiAgICAgLCBtX3F1b3RhSW5CeXRlcyhzdG9yYWdlTmFtZXNwYWNlLT5xdW90YUluQnl0
ZXMoKSkKICAgICAsIG1fc2VjdXJpdHlPcmlnaW4oV1RGTW92ZShzZWN1cml0eU9yaWdpbikpCiAg
ICAgLCBtX2N1cnJlbnRTZWVkKDApCiAgICAgLCBtX2hhc1BlbmRpbmdDbGVhcihmYWxzZSkKLSAg
ICAsIG1faGFzUGVuZGluZ0dldFZhbHVlcyhmYWxzZSkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5yZWdpc3RlclN0b3JhZ2VBcmVhTWFwKCp0aGlzKTsKICAgICBjb25uZWN0KCk7CiB9
CiAKIFN0b3JhZ2VBcmVhTWFwOjp+U3RvcmFnZUFyZWFNYXAoKQogewotICAgIGlmIChtX3N0b3Jh
Z2VUeXBlICE9IFN0b3JhZ2VUeXBlOjpFcGhlbWVyYWxMb2NhbCkKLSAgICAgICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlv
bigpLnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VNYW5hZ2VyOjpEZXN0cm95U3RvcmFnZU1hcChtX3N0
b3JhZ2VNYXBJRCksIDApOworICAgIGRpc2Nvbm5lY3QoKTsKIAogICAgIG1fc3RvcmFnZU5hbWVz
cGFjZS0+ZGlkRGVzdHJveVN0b3JhZ2VBcmVhTWFwKCp0aGlzKTsKLQotICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnVucmVnaXN0ZXJTdG9yYWdlQXJlYU1hcCgqdGhpcyk7CiB9CiAKIHVuc2ln
bmVkIFN0b3JhZ2VBcmVhTWFwOjpsZW5ndGgoKQpAQCAtMTIyLDcgKzExMCw3IEBAIHZvaWQgU3Rv
cmFnZUFyZWFNYXA6OnNldEl0ZW0oRnJhbWUqIHNvdXJjZUZyYW1lLCBTdG9yYWdlQXJlYUltcGwq
IHNvdXJjZUFyZWEsIGNvCiAKICAgICBtX3BlbmRpbmdWYWx1ZUNoYW5nZXMuYWRkKGtleSk7CiAK
LSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXI6OlNldEl0ZW0o
bV9zZWN1cml0eU9yaWdpbi0+ZGF0YSgpLCBtX3N0b3JhZ2VNYXBJRCwgc291cmNlQXJlYS0+c3Rv
cmFnZUFyZWFJRCgpLCBtX2N1cnJlbnRTZWVkLCBrZXksIHZhbHVlLCBzb3VyY2VGcmFtZS0+ZG9j
dW1lbnQoKS0+dXJsKCkpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6U3Rv
cmFnZU1hbmFnZXJTZXQ6OlNldEl0ZW0obV9zdG9yYWdlTWFwSUQsIHNvdXJjZUFyZWEtPnN0b3Jh
Z2VBcmVhSUQoKSwgbV9jdXJyZW50U2VlZCwga2V5LCB2YWx1ZSwgc291cmNlRnJhbWUtPmRvY3Vt
ZW50KCktPnVybCgpKSwgMCk7CiB9CiAKIHZvaWQgU3RvcmFnZUFyZWFNYXA6OnJlbW92ZUl0ZW0o
V2ViQ29yZTo6RnJhbWUqIHNvdXJjZUZyYW1lLCBTdG9yYWdlQXJlYUltcGwqIHNvdXJjZUFyZWEs
IGNvbnN0IFN0cmluZyYga2V5KQpAQCAtMTM4LDE2ICsxMjYsMTggQEAgdm9pZCBTdG9yYWdlQXJl
YU1hcDo6cmVtb3ZlSXRlbShXZWJDb3JlOjpGcmFtZSogc291cmNlRnJhbWUsIFN0b3JhZ2VBcmVh
SW1wbCogc28KIAogICAgIG1fcGVuZGluZ1ZhbHVlQ2hhbmdlcy5hZGQoa2V5KTsKIAotICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNv
bm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdlcjo6UmVtb3ZlSXRlbShtX3Nl
Y3VyaXR5T3JpZ2luLT5kYXRhKCksIG1fc3RvcmFnZU1hcElELCBzb3VyY2VBcmVhLT5zdG9yYWdl
QXJlYUlEKCksIG1fY3VycmVudFNlZWQsIGtleSwgc291cmNlRnJhbWUtPmRvY3VtZW50KCktPnVy
bCgpKSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VNYW5hZ2Vy
U2V0OjpSZW1vdmVJdGVtKG1fc3RvcmFnZU1hcElELCBzb3VyY2VBcmVhLT5zdG9yYWdlQXJlYUlE
KCksIG1fY3VycmVudFNlZWQsIGtleSwgc291cmNlRnJhbWUtPmRvY3VtZW50KCktPnVybCgpKSwg
MCk7CiB9CiAKIHZvaWQgU3RvcmFnZUFyZWFNYXA6OmNsZWFyKFdlYkNvcmU6OkZyYW1lKiBzb3Vy
Y2VGcmFtZSwgU3RvcmFnZUFyZWFJbXBsKiBzb3VyY2VBcmVhKQogeworICAgIGNvbm5lY3QoKTsK
KwogICAgIHJlc2V0VmFsdWVzKCk7CiAKICAgICBtX2hhc1BlbmRpbmdDbGVhciA9IHRydWU7CiAg
ICAgbV9zdG9yYWdlTWFwID0gU3RvcmFnZU1hcDo6Y3JlYXRlKG1fcXVvdGFJbkJ5dGVzKTsKLSAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24o
KS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXI6OkNsZWFyKG1fc2Vj
dXJpdHlPcmlnaW4tPmRhdGEoKSwgbV9zdG9yYWdlTWFwSUQsIHNvdXJjZUFyZWEtPnN0b3JhZ2VB
cmVhSUQoKSwgbV9jdXJyZW50U2VlZCwgc291cmNlRnJhbWUtPmRvY3VtZW50KCktPnVybCgpKSwg
MCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpD
bGVhcihtX3N0b3JhZ2VNYXBJRCwgc291cmNlQXJlYS0+c3RvcmFnZUFyZWFJRCgpLCBtX2N1cnJl
bnRTZWVkLCBzb3VyY2VGcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkpLCAwKTsKIH0KIAogYm9vbCBT
dG9yYWdlQXJlYU1hcDo6Y29udGFpbnMoY29uc3QgU3RyaW5nJiBrZXkpCkBAIC0xNjMsNyArMTUz
LDYgQEAgdm9pZCBTdG9yYWdlQXJlYU1hcDo6cmVzZXRWYWx1ZXMoKQogCiAgICAgbV9wZW5kaW5n
VmFsdWVDaGFuZ2VzLmNsZWFyKCk7CiAgICAgbV9oYXNQZW5kaW5nQ2xlYXIgPSBmYWxzZTsKLSAg
ICBtX2hhc1BlbmRpbmdHZXRWYWx1ZXMgPSBmYWxzZTsKICAgICBtX2N1cnJlbnRTZWVkKys7CiB9
CiAKQEAgLTE3OCwzMyArMTY3LDEwIEBAIHZvaWQgU3RvcmFnZUFyZWFNYXA6OmxvYWRWYWx1ZXNJ
Zk5lZWRlZCgpCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHVzZSBhIHNwZWNpYWwgc2VuZFN5
bmMgZmxhZyB0byBpbmRpY2F0ZSB0aGF0IHdlIGRvbid0IHdhbnQgdG8gcHJvY2VzcyBpbmNvbWlu
ZyBtZXNzYWdlcyB3aGlsZSB3YWl0aW5nIGZvciBhIHJlcGx5LgogICAgIC8vIChUaGlzIGZsYWcg
ZG9lcyBub3QgeWV0IGV4aXN0KS4gU2luY2UgbG9hZFZhbHVlc0lmTmVlZGVkKCkgZW5kcyB1cCBi
ZWluZyBjYWxsZWQgZnJvbSB3aXRoaW4gSmF2YVNjcmlwdCBjb2RlLCBwcm9jZXNzaW5nIGluY29t
aW5nIHN5bmNocm9ub3VzIG1lc3NhZ2VzCiAgICAgLy8gY291bGQgbGVhZCB0byB3ZWlyZCByZWVu
dHJlbmN5IGJ1Z3Mgb3RoZXJ3aXNlLgotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3Vy
ZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdl
czo6U3RvcmFnZU1hbmFnZXI6OkdldFZhbHVlcyhtX3N0b3JhZ2VNYXBJRCwgbV9jdXJyZW50U2Vl
ZCksIE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdlcjo6R2V0VmFsdWVzOjpSZXBseSh2YWx1ZXMpLCAw
KTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlN0b3JhZ2VNYW5hZ2VyU2V0
OjpHZXRWYWx1ZXMobV9zdG9yYWdlTWFwSUQpLCBNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXJTZXQ6
OkdldFZhbHVlczo6UmVwbHkodmFsdWVzKSwgMCk7CiAKICAgICBtX3N0b3JhZ2VNYXAgPSBTdG9y
YWdlTWFwOjpjcmVhdGUobV9xdW90YUluQnl0ZXMpOwogICAgIG1fc3RvcmFnZU1hcC0+aW1wb3J0
SXRlbXMoV1RGTW92ZSh2YWx1ZXMpKTsKLQotICAgIC8vIFdlIHdhbnQgdG8gaWdub3JlIGFsbCBj
aGFuZ2VzIHVudGlsIHdlIGdldCB0aGUgRGlkR2V0VmFsdWVzIG1lc3NhZ2UuCi0gICAgbV9oYXNQ
ZW5kaW5nR2V0VmFsdWVzID0gdHJ1ZTsKLX0KLQotYm9vbCBTdG9yYWdlQXJlYU1hcDo6cHJld2Fy
bSgpCi17Ci0gICAgaWYgKG1fZGlkUHJld2FybSB8fCBtX3N0b3JhZ2VNYXApCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICBtX2RpZFByZXdhcm0gPSB0cnVlOwotCi0gICAgY29ubmVjdCgpOwot
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdlcjo6UHJld2FybSht
X3N0b3JhZ2VNYXBJRCksIDApOwotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIFN0b3JhZ2VB
cmVhTWFwOjpkaWRHZXRWYWx1ZXModWludDY0X3Qgc3RvcmFnZU1hcFNlZWQpCi17Ci0gICAgaWYg
KG1fY3VycmVudFNlZWQgIT0gc3RvcmFnZU1hcFNlZWQpCi0gICAgICAgIHJldHVybjsKLQotICAg
IEFTU0VSVChtX2hhc1BlbmRpbmdHZXRWYWx1ZXMpOwotICAgIG1faGFzUGVuZGluZ0dldFZhbHVl
cyA9IGZhbHNlOwogfQogCiB2b2lkIFN0b3JhZ2VBcmVhTWFwOjpkaWRTZXRJdGVtKHVpbnQ2NF90
IHN0b3JhZ2VNYXBTZWVkLCBjb25zdCBTdHJpbmcmIGtleSwgYm9vbCBxdW90YUVycm9yKQpAQCAt
MjQwLDYgKzIwNiwxMSBAQCB2b2lkIFN0b3JhZ2VBcmVhTWFwOjpkaWRDbGVhcih1aW50NjRfdCBz
dG9yYWdlTWFwU2VlZCkKICAgICBtX2hhc1BlbmRpbmdDbGVhciA9IGZhbHNlOwogfQogCit2b2lk
IFN0b3JhZ2VBcmVhTWFwOjpjbGVhckNhY2hlKCkKK3sKKyAgICByZXNldFZhbHVlcygpOworfQor
CiBib29sIFN0b3JhZ2VBcmVhTWFwOjpzaG91bGRBcHBseUNoYW5nZUZvcktleShjb25zdCBTdHJp
bmcmIGtleSkgY29uc3QKIHsKICAgICAvLyBXZSBoYXZlIG5vdCB5ZXQgbG9hZGVkIGFueXRoaW5n
IGZyb20gdGhpcyBzdG9yYWdlIG1hcC4KQEAgLTI1OSw4ICsyMzAsOCBAQCB2b2lkIFN0b3JhZ2VB
cmVhTWFwOjphcHBseUNoYW5nZShjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBuZXdW
YWx1ZSkKIHsKICAgICBBU1NFUlQoIW1fc3RvcmFnZU1hcCB8fCBtX3N0b3JhZ2VNYXAtPmhhc09u
ZVJlZigpKTsKIAotICAgIC8vIFRoZXJlJ3MgYSBjbGVhciBwZW5kaW5nIG9yIGdldFZhbHVlcyBw
ZW5kaW5nIHdlIGRvbid0IHdhbnQgdG8gYXBwbHkgYW55IGNoYW5nZXMgdW50aWwgd2UgZ2V0IHRo
ZSBjb3JyZXNwb25kaW5nIERpZENsZWFyL0RpZEdldFZhbHVlcyBtZXNzYWdlcy4KLSAgICBpZiAo
bV9oYXNQZW5kaW5nQ2xlYXIgfHwgbV9oYXNQZW5kaW5nR2V0VmFsdWVzKQorICAgIC8vIFRoZXJl
IGlzIGF0IGxlYXN0IG9uZSBjbGVhciBwZW5kaW5nIHdlIGRvbid0IHdhbnQgdG8gYXBwbHkgYW55
IGNoYW5nZXMgdW50aWwgd2UgZ2V0IHRoZSBjb3JyZXNwb25kaW5nIERpZENsZWFyIG1lc3NhZ2Vz
LgorICAgIGlmIChtX2hhc1BlbmRpbmdDbGVhcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYg
KCFrZXkpIHsKQEAgLTMwNSwyMiArMjc2LDE3IEBAIHZvaWQgU3RvcmFnZUFyZWFNYXA6OmRpc3Bh
dGNoU3RvcmFnZUV2ZW50KHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIGNvbnN0IFN0CiAg
ICAgICAgIGFwcGx5Q2hhbmdlKGtleSwgbmV3VmFsdWUpOwogICAgIH0KIAotICAgIGlmIChzdG9y
YWdlVHlwZSgpID09IFN0b3JhZ2VUeXBlOjpTZXNzaW9uIHx8IHN0b3JhZ2VUeXBlKCkgPT0gU3Rv
cmFnZVR5cGU6OkVwaGVtZXJhbExvY2FsKQorICAgIGlmIChzdG9yYWdlVHlwZSgpID09IFN0b3Jh
Z2VUeXBlOjpTZXNzaW9uKQogICAgICAgICBkaXNwYXRjaFNlc3Npb25TdG9yYWdlRXZlbnQoc291
cmNlU3RvcmFnZUFyZWFJRCwga2V5LCBvbGRWYWx1ZSwgbmV3VmFsdWUsIHVybFN0cmluZyk7CiAg
ICAgZWxzZQogICAgICAgICBkaXNwYXRjaExvY2FsU3RvcmFnZUV2ZW50KHNvdXJjZVN0b3JhZ2VB
cmVhSUQsIGtleSwgb2xkVmFsdWUsIG5ld1ZhbHVlLCB1cmxTdHJpbmcpOwogfQogCi12b2lkIFN0
b3JhZ2VBcmVhTWFwOjpjbGVhckNhY2hlKCkKLXsKLSAgICByZXNldFZhbHVlcygpOwotfQotCiB2
b2lkIFN0b3JhZ2VBcmVhTWFwOjpkaXNwYXRjaFNlc3Npb25TdG9yYWdlRXZlbnQodWludDY0X3Qg
c291cmNlU3RvcmFnZUFyZWFJRCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xk
VmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQog
ewotICAgIC8vIE5hbWVzcGFjZSBJRHMgZm9yIHNlc3Npb24gc3RvcmFnZSBuYW1lc3BhY2VzIGFu
ZCBlcGhlbWVyYWwgbG9jYWwgc3RvcmFnZSBuYW1lc3BhY2VzIGFyZSBlcXVpdmFsZW50IHRvIHdl
YiBwYWdlIElEcworICAgIC8vIE5hbWVzcGFjZSBJRHMgZm9yIHNlc3Npb24gc3RvcmFnZSBuYW1l
c3BhY2VzIGFyZSBlcXVpdmFsZW50IHRvIHdlYiBwYWdlIElEcwogICAgIC8vIHNvIHdlIGNhbiBn
ZXQgdGhlIHJpZ2h0IHBhZ2UgaGVyZS4KLSAgICBXZWJQYWdlKiB3ZWJQYWdlID0gV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkud2ViUGFnZShtYWtlT2JqZWN0SWRlbnRpZmllcjxQYWdlSWRlbnRpZmll
clR5cGU+KG1fc3RvcmFnZU5hbWVzcGFjZUlEKSk7CisgICAgV2ViUGFnZSogd2ViUGFnZSA9IFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UobWFrZU9iamVjdElkZW50aWZpZXI8UGFnZUlk
ZW50aWZpZXJUeXBlPihtX3N0b3JhZ2VOYW1lc3BhY2UtPnN0b3JhZ2VOYW1lc3BhY2VJRCgpKSk7
CiAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICByZXR1cm47CiAKQEAgLTM1NCw3ICszMjAsOCBA
QCB2b2lkIFN0b3JhZ2VBcmVhTWFwOjpkaXNwYXRjaExvY2FsU3RvcmFnZUV2ZW50KHVpbnQ2NF90
IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIGNvbgogCiAgICAgVmVjdG9yPFJlZlB0cjxGcmFtZT4+IGZy
YW1lczsKIAotICAgIFBhZ2VHcm91cCYgcGFnZUdyb3VwID0gKldlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLndlYlBhZ2VHcm91cChtX3N0b3JhZ2VOYW1lc3BhY2VJRCktPmNvcmVQYWdlR3JvdXAoKTsK
KyAgICAvLyBOYW1lc3BhY2UgSURzIGZvciBsb2NhbCBzdG9yYWdlIG5hbWVzcGFjZXMgYXJlIGVx
dWl2YWxlbnQgdG8gd2ViIHBhZ2UgZ3JvdXAgSURzLgorICAgIFBhZ2VHcm91cCYgcGFnZUdyb3Vw
ID0gKldlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2VHcm91cChtX3N0b3JhZ2VOYW1lc3Bh
Y2UtPnN0b3JhZ2VOYW1lc3BhY2VJRCgpKS0+Y29yZVBhZ2VHcm91cCgpOwogICAgIGNvbnN0IEhh
c2hTZXQ8UGFnZSo+JiBwYWdlcyA9IHBhZ2VHcm91cC5wYWdlcygpOwogICAgIGZvciAoSGFzaFNl
dDxQYWdlKj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcGFnZXMuYmVnaW4oKSwgZW5kID0gcGFnZXMu
ZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICYo
Kml0KS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VO
ZXh0KCkpIHsKQEAgLTM4MSwzNSArMzQ4LDM3IEBAIHZvaWQgU3RvcmFnZUFyZWFNYXA6OmRpc3Bh
dGNoTG9jYWxTdG9yYWdlRXZlbnQodWludDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwgY29uCiAK
IHZvaWQgU3RvcmFnZUFyZWFNYXA6OmNvbm5lY3QoKQogewotICAgIGlmICghbV9pc0Rpc2Nvbm5l
Y3RlZCkKKyAgICBpZiAobV9zdG9yYWdlTWFwSUQpCiAgICAgICAgIHJldHVybjsKIAogICAgIHN3
aXRjaCAobV9zdG9yYWdlVHlwZSkgewogICAgIGNhc2UgU3RvcmFnZVR5cGU6OkxvY2FsOgotICAg
IGNhc2UgU3RvcmFnZVR5cGU6OkVwaGVtZXJhbExvY2FsOgogICAgIGNhc2UgU3RvcmFnZVR5cGU6
OlRyYW5zaWVudExvY2FsOgogICAgICAgICBpZiAoU2VjdXJpdHlPcmlnaW4qIHRvcExldmVsT3Jp
Z2luID0gbV9zdG9yYWdlTmFtZXNwYWNlLT50b3BMZXZlbE9yaWdpbigpKQotICAgICAgICAgICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCku
Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VNYW5hZ2VyOjpDcmVhdGVUcmFuc2ll
bnRMb2NhbFN0b3JhZ2VNYXAobV9zdG9yYWdlTWFwSUQsIG1fc3RvcmFnZU5hbWVzcGFjZS0+c3Rv
cmFnZU5hbWVzcGFjZUlEKCksIHRvcExldmVsT3JpZ2luLT5kYXRhKCksIG1fc2VjdXJpdHlPcmln
aW4tPmRhdGEoKSksIDApOworICAgICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5z
dXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3Nh
Z2VzOjpTdG9yYWdlTWFuYWdlclNldDo6Q29ubmVjdFRvVHJhbnNpZW50TG9jYWxTdG9yYWdlQXJl
YShtX3N0b3JhZ2VOYW1lc3BhY2UtPnNlc3Npb25JRCgpLCBtX3N0b3JhZ2VOYW1lc3BhY2UtPnN0
b3JhZ2VOYW1lc3BhY2VJRCgpLCB0b3BMZXZlbE9yaWdpbi0+ZGF0YSgpLCBtX3NlY3VyaXR5T3Jp
Z2luLT5kYXRhKCkpLCBNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXJTZXQ6OkNvbm5lY3RUb1RyYW5z
aWVudExvY2FsU3RvcmFnZUFyZWE6OlJlcGx5KG1fc3RvcmFnZU1hcElEKSwgMCk7CiAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlTWFu
YWdlcjo6Q3JlYXRlTG9jYWxTdG9yYWdlTWFwKG1fc3RvcmFnZU1hcElELCBtX3N0b3JhZ2VOYW1l
c3BhY2UtPnN0b3JhZ2VOYW1lc3BhY2VJRCgpLCBtX3NlY3VyaXR5T3JpZ2luLT5kYXRhKCkpLCAw
KTsKKyAgICAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6U3RvcmFnZU1h
bmFnZXJTZXQ6OkNvbm5lY3RUb0xvY2FsU3RvcmFnZUFyZWEobV9zdG9yYWdlTmFtZXNwYWNlLT5z
ZXNzaW9uSUQoKSwgbV9zdG9yYWdlTmFtZXNwYWNlLT5zdG9yYWdlTmFtZXNwYWNlSUQoKSwgbV9z
ZWN1cml0eU9yaWdpbi0+ZGF0YSgpKSwgTWVzc2FnZXM6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpDb25u
ZWN0VG9Mb2NhbFN0b3JhZ2VBcmVhOjpSZXBseShtX3N0b3JhZ2VNYXBJRCksIDApOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIFN0b3JhZ2VUeXBlOjpTZXNzaW9uOgotICAgICAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0
aW9uKCkuc2VuZChNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXI6OkNyZWF0ZVNlc3Npb25TdG9yYWdl
TWFwKG1fc3RvcmFnZU1hcElELCBtX3N0b3JhZ2VOYW1lc3BhY2UtPnN0b3JhZ2VOYW1lc3BhY2VJ
RCgpLCBtX3NlY3VyaXR5T3JpZ2luLT5kYXRhKCkpLCAwKTsKKyAgICAgICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigp
LnNlbmRTeW5jKE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdlclNldDo6Q29ubmVjdFRvU2Vzc2lvblN0
b3JhZ2VBcmVhKG1fc3RvcmFnZU5hbWVzcGFjZS0+c2Vzc2lvbklEKCksIG1fc3RvcmFnZU5hbWVz
cGFjZS0+c3RvcmFnZU5hbWVzcGFjZUlEKCksIG1fc2VjdXJpdHlPcmlnaW4tPmRhdGEoKSksIE1l
c3NhZ2VzOjpTdG9yYWdlTWFuYWdlclNldDo6Q29ubmVjdFRvU2Vzc2lvblN0b3JhZ2VBcmVhOjpS
ZXBseShtX3N0b3JhZ2VNYXBJRCksIDApOwogICAgIH0KIAotICAgIGlmIChtX3N0b3JhZ2VNYXAp
Ci0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdlcjo6U2V0
SXRlbXMobV9zdG9yYWdlTWFwSUQsIG1fc3RvcmFnZU1hcC0+aXRlbXMoKSksIDApOwotICAgIG1f
aXNEaXNjb25uZWN0ZWQgPSBmYWxzZTsKKyAgICBpZiAobV9zdG9yYWdlTWFwSUQpCisgICAgICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnJlZ2lzdGVyU3RvcmFnZUFyZWFNYXAoKnRoaXMpOwog
fQogCiB2b2lkIFN0b3JhZ2VBcmVhTWFwOjpkaXNjb25uZWN0KCkKIHsKLSAgICBtX2lzRGlzY29u
bmVjdGVkID0gdHJ1ZTsKLSAgICBpZiAobV9zdG9yYWdlVHlwZSA9PSBTdG9yYWdlVHlwZTo6U2Vz
c2lvbiAmJiBtX3N0b3JhZ2VNYXApIHsKLSAgICAgICAgbV9wZW5kaW5nVmFsdWVDaGFuZ2VzLmNs
ZWFyKCk7Ci0gICAgICAgIG1faGFzUGVuZGluZ0NsZWFyID0gZmFsc2U7Ci0gICAgfSBlbHNlCi0g
ICAgICAgIHJlc2V0VmFsdWVzKCk7CisgICAgaWYgKCFtX3N0b3JhZ2VNYXBJRCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgcmVzZXRWYWx1ZXMoKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS51bnJlZ2lzdGVyU3RvcmFnZUFyZWFNYXAoKnRoaXMpOworCisgICAgaWYgKGF1dG8gbmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZXhpc3RpbmdOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKSkKKyAgICAgICAgbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
LT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXJTZXQ6OkRpc2Nvbm5l
Y3RGcm9tU3RvcmFnZUFyZWEobV9zdG9yYWdlTWFwSUQpLCAwKTsKKworICAgIG1fc3RvcmFnZU1h
cElEID0gMDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuaAppbmRleCBmYjkxYmM5
MDU0MjVmYzgxYzZhNDgzNTI3NGFiY2MwYzE3ZGE0OWM2Li5kZjE4ZWRiMWI2MWMwOGQ1MWRmODNj
OTlmYWVmMzY2ZDA4YTNlMDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmgKQEAgLTU3LDcgKzU3LDYgQEAgcHVibGljOgog
ICAgIHZvaWQgcmVtb3ZlSXRlbShXZWJDb3JlOjpGcmFtZSogc291cmNlRnJhbWUsIFN0b3JhZ2VB
cmVhSW1wbCogc291cmNlQXJlYSwgY29uc3QgU3RyaW5nJiBrZXkpOwogICAgIHZvaWQgY2xlYXIo
V2ViQ29yZTo6RnJhbWUqIHNvdXJjZUZyYW1lLCBTdG9yYWdlQXJlYUltcGwqIHNvdXJjZUFyZWEp
OwogICAgIGJvb2wgY29udGFpbnMoY29uc3QgU3RyaW5nJiBrZXkpOwotICAgIGJvb2wgcHJld2Fy
bSgpOwogCiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRpZFJlY2VpdmVN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwpAQCAtNzEs
NyArNzAsNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFN0b3JhZ2VBcmVhTWFwKFN0b3JhZ2VO
YW1lc3BhY2VJbXBsKiwgUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmKTsKIAotICAgIHZv
aWQgZGlkR2V0VmFsdWVzKHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkKTsKICAgICB2b2lkIGRpZFNl
dEl0ZW0odWludDY0X3Qgc3RvcmFnZU1hcFNlZWQsIGNvbnN0IFN0cmluZyYga2V5LCBib29sIHF1
b3RhRXJyb3IpOwogICAgIHZvaWQgZGlkUmVtb3ZlSXRlbSh1aW50NjRfdCBzdG9yYWdlTWFwU2Vl
ZCwgY29uc3QgU3RyaW5nJiBrZXkpOwogICAgIHZvaWQgZGlkQ2xlYXIodWludDY0X3Qgc3RvcmFn
ZU1hcFNlZWQpOwpAQCAtOTMsNyArOTEsNiBAQCBwcml2YXRlOgogICAgIHVpbnQ2NF90IG1fc3Rv
cmFnZU1hcElEOwogCiAgICAgV2ViQ29yZTo6U3RvcmFnZVR5cGUgbV9zdG9yYWdlVHlwZTsKLSAg
ICB1aW50NjRfdCBtX3N0b3JhZ2VOYW1lc3BhY2VJRDsKICAgICB1bnNpZ25lZCBtX3F1b3RhSW5C
eXRlczsKICAgICBSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+IG1fc2VjdXJpdHlPcmlnaW47
CiAKQEAgLTEwMSwxMSArOTgsNyBAQCBwcml2YXRlOgogCiAgICAgdWludDY0X3QgbV9jdXJyZW50
U2VlZDsKICAgICBib29sIG1faGFzUGVuZGluZ0NsZWFyOwotICAgIGJvb2wgbV9oYXNQZW5kaW5n
R2V0VmFsdWVzOwogICAgIEhhc2hDb3VudGVkU2V0PFN0cmluZz4gbV9wZW5kaW5nVmFsdWVDaGFu
Z2VzOwotCi0gICAgYm9vbCBtX2lzRGlzY29ubmVjdGVkIHsgdHJ1ZSB9OwotICAgIGJvb2wgbV9k
aWRQcmV3YXJtIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAu
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdl
QXJlYU1hcC5tZXNzYWdlcy5pbgppbmRleCBiMTU5MDRmMTZiZWMxNDJiMTBiNDgwMGQxMDY0NTAw
OTMzODMwMGQ1Li43YTc1ZDIxMGZkODMyNWYyYjUxYTg5Y2UzZTU0MmQ0ODAzOTA5NmE5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1h
cC5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9T
dG9yYWdlQXJlYU1hcC5tZXNzYWdlcy5pbgpAQCAtMjEsNyArMjEsNiBAQAogIyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogCiBtZXNzYWdlcyAtPiBTdG9yYWdlQXJlYU1hcCB7Ci0gICAgRGlkR2V0VmFsdWVzKHVpbnQ2
NF90IHN0b3JhZ2VNYXBTZWVkKQogICAgIERpZFNldEl0ZW0odWludDY0X3Qgc3RvcmFnZU1hcFNl
ZWQsIFN0cmluZyBrZXksIGJvb2wgcXVvdGFFeGNlcHRpb24pCiAgICAgRGlkUmVtb3ZlSXRlbSh1
aW50NjRfdCBzdG9yYWdlTWFwU2VlZCwgU3RyaW5nIGtleSkKICAgICBEaWRDbGVhcih1aW50NjRf
dCBzdG9yYWdlTWFwU2VlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcAppbmRleCBmNTljNzliN2Zh
MmJlMmZjOWE3MjA1MmMxYjllNTNjYjZhMzIzZmQwLi5mMGRiYTQ2YzQ5YWE0YmZkYjNlYjFmZjk3
YWZkMTI2MzFjMDRlNTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
U3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCkBAIC0yOCw2ICsyOCw3
IEBACiAKICNpbmNsdWRlICJTdG9yYWdlQXJlYUltcGwuaCIKICNpbmNsdWRlICJTdG9yYWdlQXJl
YU1hcC5oIgorI2luY2x1ZGUgIlN0b3JhZ2VNYW5hZ2VyU2V0TWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJXZWJQYWdlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZUdyb3VwUHJveHkuaCIKICNpbmNsdWRlICJX
ZWJQcm9jZXNzLmgiCkBAIC00MCwzMSArNDEsMjcgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFn
ZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlk
ZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcykKK1JlZjxTdG9yYWdlTmFtZXNwYWNlSW1w
bD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVp
bnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcywgUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklEKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0b3JhZ2VOYW1lc3BhY2VJ
bXBsKFN0b3JhZ2VUeXBlOjpTZXNzaW9uLCBpZGVudGlmaWVyLCBudWxscHRyLCBxdW90YUluQnl0
ZXMpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChTdG9y
YWdlVHlwZTo6U2Vzc2lvbiwgaWRlbnRpZmllciwgbnVsbHB0ciwgcXVvdGFJbkJ5dGVzLCBzZXNz
aW9uSUQpKTsKIH0KIAotUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNl
SW1wbDo6Y3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50
aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcykKK1JlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4g
U3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRf
dCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMsIFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCkKIHsKLSAgICByZXR1cm4gY3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKGlkZW50aWZp
ZXIsIHF1b3RhSW5CeXRlcywgSXNFcGhlbWVyYWw6Olllcyk7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5cGU6OkxvY2FsLCBpZGVudGlmaWVy
LCBudWxscHRyLCBxdW90YUluQnl0ZXMsIHNlc3Npb25JRCkpOwogfQogCi1SZWY8U3RvcmFnZU5h
bWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1l
c3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzLCBJc0VwaGVt
ZXJhbCBpc0VwaGVtZXJhbCkKK1JlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVz
cGFjZUltcGw6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBp
ZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgdG9wTGV2ZWxPcmlnaW4sIHVpbnQ2
NF90IHF1b3RhSW5CeXRlcywgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogewotICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKGlzRXBoZW1lcmFsID09IElzRXBo
ZW1lcmFsOjpZZXMgPyBTdG9yYWdlVHlwZTo6RXBoZW1lcmFsTG9jYWwgOiBTdG9yYWdlVHlwZTo6
TG9jYWwsIGlkZW50aWZpZXIsIG51bGxwdHIsIHF1b3RhSW5CeXRlcykpOworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0b3JhZ2VUeXBlOjpUcmFuc2llbnRM
b2NhbCwgaWRlbnRpZmllciwgJnRvcExldmVsT3JpZ2luLCBxdW90YUluQnl0ZXMsIHNlc3Npb25J
RCkpOwogfQogCi1SZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBs
OjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmll
ciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHRvcExldmVsT3JpZ2luLCB1aW50NjRfdCBxdW90
YUluQnl0ZXMpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFjZUlt
cGwoU3RvcmFnZVR5cGU6OlRyYW5zaWVudExvY2FsLCBpZGVudGlmaWVyLCAmdG9wTGV2ZWxPcmln
aW4sIHF1b3RhSW5CeXRlcykpOwotfQotCi1TdG9yYWdlTmFtZXNwYWNlSW1wbDo6U3RvcmFnZU5h
bWVzcGFjZUltcGwoV2ViQ29yZTo6U3RvcmFnZVR5cGUgc3RvcmFnZVR5cGUsIHVpbnQ2NF90IHN0
b3JhZ2VOYW1lc3BhY2VJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qIHRvcExldmVsT3JpZ2lu
LCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpCitTdG9yYWdlTmFtZXNwYWNlSW1wbDo6U3RvcmFnZU5h
bWVzcGFjZUltcGwoV2ViQ29yZTo6U3RvcmFnZVR5cGUgc3RvcmFnZVR5cGUsIHVpbnQ2NF90IHN0
b3JhZ2VOYW1lc3BhY2VJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qIHRvcExldmVsT3JpZ2lu
LCB1bnNpZ25lZCBxdW90YUluQnl0ZXMsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKICAgICA6
IG1fc3RvcmFnZVR5cGUoc3RvcmFnZVR5cGUpCiAgICAgLCBtX3N0b3JhZ2VOYW1lc3BhY2VJRChz
dG9yYWdlTmFtZXNwYWNlSUQpCiAgICAgLCBtX3RvcExldmVsT3JpZ2luKHRvcExldmVsT3JpZ2lu
KQogICAgICwgbV9xdW90YUluQnl0ZXMocXVvdGFJbkJ5dGVzKQorICAgICwgbV9zZXNzaW9uSUQo
c2Vzc2lvbklEKQogewogfQogCkBAIC05NCwxNCArOTEsMTkgQEAgUmVmPFN0b3JhZ2VBcmVhPiBT
dG9yYWdlTmFtZXNwYWNlSW1wbDo6c3RvcmFnZUFyZWEoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRh
JiBzZWMKIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y29weShQ
YWdlKiBuZXdQYWdlKQogewogICAgIEFTU0VSVChtX3N0b3JhZ2VOYW1lc3BhY2VJRCk7CisgICAg
QVNTRVJUKG1fc3RvcmFnZVR5cGUgPT0gU3RvcmFnZVR5cGU6OlNlc3Npb24pOwogCi0gICAgaWYg
KG1fc3RvcmFnZVR5cGUgPT0gU3RvcmFnZVR5cGU6OlNlc3Npb24pCi0gICAgICAgIHJldHVybiBj
cmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShXZWJQYWdlOjpmcm9tQ29yZVBhZ2UobmV3UGFn
ZSktPnBhZ2VJRCgpLnRvVUludDY0KCksIG1fcXVvdGFJbkJ5dGVzKTsKLQotICAgIEFTU0VSVCht
X3N0b3JhZ2VUeXBlID09IFN0b3JhZ2VUeXBlOjpFcGhlbWVyYWxMb2NhbCk7Ci0gICAgYXV0byBu
ZXdOYW1lc3BhY2UgPSBhZG9wdFJlZigqbmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKG1fc3RvcmFn
ZVR5cGUsIG1fc3RvcmFnZU5hbWVzcGFjZUlELCBtX3RvcExldmVsT3JpZ2luLmdldCgpLCBtX3F1
b3RhSW5CeXRlcykpOworICAgIGlmIChhdXRvIG5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiA9IFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLmV4aXN0aW5nTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkp
CisgICAgICAgIG5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVz
c2FnZXM6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpDbG9uZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKG5l
d1BhZ2UtPnNlc3Npb25JRCgpLCBtX3N0b3JhZ2VOYW1lc3BhY2VJRCwgV2ViUGFnZTo6ZnJvbUNv
cmVQYWdlKG5ld1BhZ2UpLT5wYWdlSUQoKS50b1VJbnQ2NCgpKSwgMCk7CisgICAgCisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwobV9zdG9yYWdlVHlwZSwgV2Vi
UGFnZTo6ZnJvbUNvcmVQYWdlKG5ld1BhZ2UpLT5wYWdlSUQoKS50b1VJbnQ2NCgpLCBtX3RvcExl
dmVsT3JpZ2luLmdldCgpLCBtX3F1b3RhSW5CeXRlcywgbmV3UGFnZS0+c2Vzc2lvbklEKCkpKTsK
K30KIAotICAgIHJldHVybiBuZXdOYW1lc3BhY2U7Cit2b2lkIFN0b3JhZ2VOYW1lc3BhY2VJbXBs
OjpzZXRTZXNzaW9uSURGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKK3sKKyAg
ICBtX3Nlc3Npb25JRCA9IHNlc3Npb25JRDsKKyAgICBmb3IgKGF1dG8qIHN0b3JhZ2VBcmVhTWFw
IDogbV9zdG9yYWdlQXJlYU1hcHMudmFsdWVzKCkpCisgICAgICAgIHN0b3JhZ2VBcmVhTWFwLT5k
aXNjb25uZWN0KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBs
LmgKaW5kZXggZWE2ZDU1MThjZGZjOTlkYzNhMDFkODU3ZTM2NjM2NTBmOWI2NjZhMi4uOTM4NWU2
MWVkNDQyYjc2ZDBhOTVhYzhmM2UyNjM0NWIzZWYwNzJmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5o
CkBAIC0zOSwxMiArMzksMTAgQEAgY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgU3RvcmFnZU5hbWVz
cGFjZUltcGwgOiBwdWJsaWMgV2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZSB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VO
YW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKLSAg
ICBzdGF0aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVFcGhlbWVyYWxMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVz
KTsKKyAgICBzdGF0aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVTZXNzaW9uU3Rv
cmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMs
IFBBTDo6U2Vzc2lvbklEKTsKIAotICAgIGVudW0gY2xhc3MgSXNFcGhlbWVyYWwgOiBib29sIHsg
Tm8sIFllcyB9OwotICAgIHN0YXRpYyBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZUxv
Y2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUlu
Qnl0ZXMsIElzRXBoZW1lcmFsIGlzRXBoZW1lcmFsKTsKLSAgICBzdGF0aWMgUmVmPFN0b3JhZ2VO
YW1lc3BhY2VJbXBsPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0
X3QgaWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHRvcExldmVsT3JpZ2luLCB1
aW50NjRfdCBxdW90YUluQnl0ZXMpOworICAgIHN0YXRpYyBSZWY8U3RvcmFnZU5hbWVzcGFjZUlt
cGw+IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNp
Z25lZCBxdW90YUluQnl0ZXMsIFBBTDo6U2Vzc2lvbklEKTsKKyAgICBzdGF0aWMgUmVmPFN0b3Jh
Z2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWlu
dDY0X3QgaWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHRvcExldmVsT3JpZ2lu
LCB1aW50NjRfdCBxdW90YUluQnl0ZXMsIFBBTDo6U2Vzc2lvbklEKTsKIAogICAgIHZpcnR1YWwg
flN0b3JhZ2VOYW1lc3BhY2VJbXBsKCk7CiAKQEAgLTU1LDggKzUzLDExIEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgZGlkRGVzdHJveVN0b3JhZ2VBcmVhTWFwKFN0b3JhZ2VBcmVhTWFwJik7CiAKKyAg
ICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3Nl
c3Npb25JRDsgfQorICAgIHZvaWQgc2V0U2Vzc2lvbklERm9yVGVzdGluZyhQQUw6OlNlc3Npb25J
RCkgb3ZlcnJpZGU7CisKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgU3RvcmFnZU5hbWVzcGFjZUlt
cGwoV2ViQ29yZTo6U3RvcmFnZVR5cGUsIHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW4qIHRvcExldmVsT3JpZ2luLCB1bnNpZ25lZCBxdW90YUluQnl0
ZXMpOworICAgIGV4cGxpY2l0IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFdlYkNvcmU6OlN0b3JhZ2VU
eXBlLCB1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
KiB0b3BMZXZlbE9yaWdpbiwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzLCBQQUw6OlNlc3Npb25JRCk7
CiAKICAgICBSZWY8V2ViQ29yZTo6U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhKGNvbnN0IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYpIG92ZXJyaWRlOwogICAgIFJlZjxXZWJDb3JlOjpTdG9y
YWdlTmFtZXNwYWNlPiBjb3B5KFdlYkNvcmU6OlBhZ2UqKSBvdmVycmlkZTsKQEAgLTcwLDYgKzcx
LDggQEAgcHJpdmF0ZToKICAgICBjb25zdCB1bnNpZ25lZCBtX3F1b3RhSW5CeXRlczsKIAogICAg
IEhhc2hNYXA8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhLCBTdG9yYWdlQXJlYU1hcCo+IG1f
c3RvcmFnZUFyZWFNYXBzOworCisgICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIu
Y3BwCmluZGV4IDg4YTkzYzVkNTA0MmExMjYzNDExYzY4NGJlZGJkNTA2ZTM0YjVhMGUuLjllNzIx
NjMxYjNiNGJkNzJlYzAzM2U3OWJhZTBkMzc1MjU0YmFjMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyLmNwcApAQCAtNjcsMjIgKzY3LDE3IEBAIFdlYlN0b3JhZ2VOYW1lc3Bh
Y2VQcm92aWRlcjo6fldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcigpCiAKIFJlZjxXZWJDb3Jl
OjpTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVNl
c3Npb25TdG9yYWdlTmFtZXNwYWNlKFBhZ2UmIHBhZ2UsIHVuc2lnbmVkIHF1b3RhKQogewotICAg
IHJldHVybiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3Bh
Y2UoV2ViUGFnZTo6ZnJvbUNvcmVQYWdlKCZwYWdlKS0+cGFnZUlEKCkudG9VSW50NjQoKSwgcXVv
dGEpOworICAgIHJldHVybiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlU2Vzc2lvblN0b3Jh
Z2VOYW1lc3BhY2UoV2ViUGFnZTo6ZnJvbUNvcmVQYWdlKCZwYWdlKS0+cGFnZUlEKCkudG9VSW50
NjQoKSwgcXVvdGEsIHBhZ2Uuc2Vzc2lvbklEKCkpOwogfQogCi1SZWY8V2ViQ29yZTo6U3RvcmFn
ZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVFcGhlbWVyYWxM
b2NhbFN0b3JhZ2VOYW1lc3BhY2UoUGFnZSYgcGFnZSwgdW5zaWduZWQgcXVvdGEpCitSZWY8V2Vi
Q29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVh
dGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEsIFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCkKIHsKLSAgICByZXR1cm4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZUVwaGVt
ZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShXZWJQYWdlOjpmcm9tQ29yZVBhZ2UoJnBhZ2UpLT5w
YWdlSUQoKS50b1VJbnQ2NCgpLCBxdW90YSk7CisgICAgcmV0dXJuIFN0b3JhZ2VOYW1lc3BhY2VJ
bXBsOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UobV9pZGVudGlmaWVyLCBxdW90YSwgc2Vz
c2lvbklEKTsKIH0KIAotUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VO
YW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkIHF1
b3RhKQorUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQ
cm92aWRlcjo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luJiB0b3BMZXZlbE9yaWdpbiwgdW5zaWduZWQgcXVvdGEsIFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCkKIHsKLSAgICByZXR1cm4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0
ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZShtX2lkZW50aWZpZXIsIHF1b3RhLCBTdG9yYWdlTmFtZXNw
YWNlSW1wbDo6SXNFcGhlbWVyYWw6Ok5vKTsKLX0KLQotUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1l
c3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNpZW50TG9jYWxT
dG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiB0b3BMZXZlbE9yaWdpbiwg
dW5zaWduZWQgcXVvdGEpCi17Ci0gICAgcmV0dXJuIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVh
dGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UobV9pZGVudGlmaWVyLCB0b3BMZXZlbE9y
aWdpbiwgcXVvdGEpOworICAgIHJldHVybiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlVHJh
bnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKG1faWRlbnRpZmllciwgdG9wTGV2ZWxPcmlnaW4s
IHF1b3RhLCBzZXNzaW9uSUQpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
ci5oCmluZGV4IDNjZTZkYjlmMDY4ZTgwMzg5NjgxMTRlZjk5YWMyNWFjZTA0MTFmMzQuLjIyZTQy
ZjUyMGRhY2EzZGY2OWM1YTg2MDU2NmZmNGE3NzAxZGY2YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1l
c3BhY2VQcm92aWRlci5oCkBAIC0zOCw5ICszOCw4IEBAIHByaXZhdGU6CiAgICAgZXhwbGljaXQg
V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKHVpbnQ2NF90IGlkZW50aWZpZXIpOwogCiAgICAg
UmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNw
YWNlKFdlYkNvcmU6OlBhZ2UmLCB1bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7Ci0gICAgUmVmPFdl
YkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVz
cGFjZShXZWJDb3JlOjpQYWdlJiwgdW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOwotICAgIFJlZjxX
ZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5z
aWduZWQgcXVvdGEpIG92ZXJyaWRlOwotICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNl
PiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW4mLCB1bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OlN0b3Jh
Z2VOYW1lc3BhY2U+IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSwg
UEFMOjpTZXNzaW9uSUQpIG92ZXJyaWRlOworICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNw
YWNlPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW4mLCB1bnNpZ25lZCBxdW90YSwgUEFMOjpTZXNzaW9uSUQpIG92ZXJyaWRlOwogCiAg
ICAgY29uc3QgdWludDY0X3QgbV9pZGVudGlmaWVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS9TdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHAKaW5kZXggN2RhNWM3MmU1OGVmNzNkMTk2
ZDE2NzMwNzc1YTM3YmFhNTQ3NGNhZC4uNDJjYzRkYmQwMzllYzczNTkyYzQ3NjBmY2FlMWJiOGQ2
ODNkYzk5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VB
cmVhSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VBcmVh
SW1wbC5jcHAKQEAgLTI5Miw0ICsyOTIsMjIgQEAgdm9pZCBTdG9yYWdlQXJlYUltcGw6OmRpc3Bh
dGNoU3RvcmFnZUV2ZW50KGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFYKICAg
ICAgICAgU3RvcmFnZUV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50
cyhrZXksIG9sZFZhbHVlLCBuZXdWYWx1ZSwgbV9zZWN1cml0eU9yaWdpbiwgc291cmNlRnJhbWUp
OwogfQogCit2b2lkIFN0b3JhZ2VBcmVhSW1wbDo6c2Vzc2lvbkNoYW5nZWQoYm9vbCBpc05ld1Nl
c3Npb25QZXJzaXN0ZW50KQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICB1
bnNpZ25lZCBxdW90YSA9IG1fc3RvcmFnZU1hcC0+cXVvdGEoKTsKKyAgICBtX3N0b3JhZ2VNYXAg
PSBTdG9yYWdlTWFwOjpjcmVhdGUocXVvdGEpOworCisgICAgaWYgKGlzTmV3U2Vzc2lvblBlcnNp
c3RlbnQgJiYgIW1fc3RvcmFnZUFyZWFTeW5jICYmIG1fc3RvcmFnZVN5bmNNYW5hZ2VyKSB7Cisg
ICAgICAgIG1fc3RvcmFnZUFyZWFTeW5jID0gU3RvcmFnZUFyZWFTeW5jOjpjcmVhdGUobV9zdG9y
YWdlU3luY01hbmFnZXIuZ2V0KCksICp0aGlzLCBtX3NlY3VyaXR5T3JpZ2luLmRhdGFiYXNlSWRl
bnRpZmllcigpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghaXNOZXdTZXNz
aW9uUGVyc2lzdGVudCAmJiBtX3N0b3JhZ2VBcmVhU3luYykgeworICAgICAgICBtX3N0b3JhZ2VB
cmVhU3luYy0+c2NoZWR1bGVGaW5hbFN5bmMoKTsKKyAgICAgICAgbV9zdG9yYWdlQXJlYVN5bmMg
PSBudWxscHRyOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oIGIvU291cmNl
L1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oCmluZGV4IDU4ZmNiYTAzNTAw
NGJhNjNjYzg4OGE4ZGIyOTEwMDE5YmM4ZTdkOTEuLjdlYmI4OTI2ODA5ZDhiMGJlZmZhYjEzZjQ5
YWM2ZWNhYTRkNDc0ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9T
dG9yYWdlQXJlYUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFn
ZUFyZWFJbXBsLmgKQEAgLTc0LDYgKzc0LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBzeW5jKCk7
CiAKKyAgICB2b2lkIHNlc3Npb25DaGFuZ2VkKGJvb2wgaXNOZXdTZXNzaW9uUGVyc2lzdGVudCk7
CisKIHByaXZhdGU6CiAgICAgU3RvcmFnZUFyZWFJbXBsKFdlYkNvcmU6OlN0b3JhZ2VUeXBlLCBj
b25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBSZWZQdHI8V2ViQ29yZTo6U3RvcmFn
ZVN5bmNNYW5hZ2VyPiYmLCB1bnNpZ25lZCBxdW90YSk7CiAgICAgZXhwbGljaXQgU3RvcmFnZUFy
ZWFJbXBsKGNvbnN0IFN0b3JhZ2VBcmVhSW1wbCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L1N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNwcAppbmRleCBjZTVjMjliYWE1ODA1Y2E0MmY0OGVm
MDUwYjgzMmQwY2Q1Y2NlMTFjLi5lMTcyZmJkYzdiNDQxMTdhOGQ4MmQ4M2Y4YzM3YzAzMTU5NDNl
NzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFT
eW5jLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5j
LmNwcApAQCAtMTA4LDYgKzEwOCwxMSBAQCB2b2lkIFN0b3JhZ2VBcmVhU3luYzo6c2NoZWR1bGVG
aW5hbFN5bmMoKQogICAgIG1fc3luY01hbmFnZXItPmRpc3BhdGNoKFtwcm90ZWN0b3JdIHsKICAg
ICAgICAgcHJvdGVjdG9yLT5kZWxldGVFbXB0eURhdGFiYXNlKCk7CiAgICAgfSk7CisKKyAgICAv
LyBNYWtlIHN1cmUgU3RvcmFnZUFyZWFTeW5jIGlzIGRlc3RydWN0ZWQgb24gbWFpbiB0aHJlYWQu
CisgICAgbV9zeW5jTWFuYWdlci0+ZGlzcGF0Y2goW3Byb3RlY3Rvcl0geworICAgICAgICBjYWxs
T25NYWluVGhyZWFkKFtwcm90ZWN0b3IgPSBwcm90ZWN0b3IuY29weVJlZigpXSB7IH0pOworICAg
IH0pOwogfQogCiB2b2lkIFN0b3JhZ2VBcmVhU3luYzo6c2NoZWR1bGVJdGVtRm9yU3luYyhjb25z
dCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCmluZGV4IDRhOTRhMWQ4
NWNlY2ExZTNjNjNiYzcyYTg2YWIwNmFmMGUxODZkNWQuLjczN2Y1YzA5NzIxZDJiYmRiYzg2NTc2
MWM5ZDExOGM4MWRmNjEzNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFn
ZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9y
YWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcApAQCAtNDUsMTcgKzQ1LDEyIEBAIHN0YXRpYyBI
YXNoTWFwPFN0cmluZywgU3RvcmFnZU5hbWVzcGFjZUltcGwqPiYgbG9jYWxTdG9yYWdlTmFtZXNw
YWNlTWFwKCkKICAgICByZXR1cm4gbG9jYWxTdG9yYWdlTmFtZXNwYWNlTWFwOwogfQogCi1SZWY8
U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVTZXNzaW9u
U3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSkKK1JlZjxTdG9yYWdlTmFtZXNwYWNlSW1w
bD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVu
c2lnbmVkIHF1b3RhLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7Ci0gICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5cGU6OlNlc3Npb24sIFN0
cmluZygpLCBxdW90YSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsKFN0b3JhZ2VUeXBlOjpTZXNzaW9uLCBTdHJpbmcoKSwgcXVvdGEsIHNlc3Npb25JRCkp
OwogfQogCi1SZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpj
cmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEpCi17Ci0g
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5cGU6
OkVwaGVtZXJhbExvY2FsLCBTdHJpbmcoKSwgcXVvdGEpKTsKLX0KLQotUmVmPFN0b3JhZ2VOYW1l
c3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Z2V0T3JDcmVhdGVMb2NhbFN0b3JhZ2VO
YW1lc3BhY2UoY29uc3QgU3RyaW5nJiBkYXRhYmFzZVBhdGgsIHVuc2lnbmVkIHF1b3RhKQorUmVm
PFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Z2V0T3JDcmVhdGVM
b2NhbFN0b3JhZ2VOYW1lc3BhY2UoY29uc3QgU3RyaW5nJiBkYXRhYmFzZVBhdGgsIHVuc2lnbmVk
IHF1b3RhLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7CiAgICAgQVNTRVJUKCFkYXRhYmFz
ZVBhdGguaXNOdWxsKCkpOwogCkBAIC02MywxOCArNTgsMTkgQEAgUmVmPFN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Z2V0T3JDcmVhdGVMb2NhbFN0b3JhZ2VOYW1l
c3BhY2UKICAgICBpZiAoc2xvdCkKICAgICAgICAgcmV0dXJuICpzbG90OwogCi0gICAgUmVmPFN0
b3JhZ2VOYW1lc3BhY2VJbXBsPiBzdG9yYWdlTmFtZXNwYWNlID0gYWRvcHRSZWYoKm5ldyBTdG9y
YWdlTmFtZXNwYWNlSW1wbChTdG9yYWdlVHlwZTo6TG9jYWwsIGRhdGFiYXNlUGF0aCwgcXVvdGEp
KTsKKyAgICBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IHN0b3JhZ2VOYW1lc3BhY2UgPSBhZG9w
dFJlZigqbmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0b3JhZ2VUeXBlOjpMb2NhbCwgZGF0YWJh
c2VQYXRoLCBxdW90YSwgc2Vzc2lvbklEKSk7CiAgICAgc2xvdCA9IHN0b3JhZ2VOYW1lc3BhY2Uu
cHRyKCk7CiAKICAgICByZXR1cm4gc3RvcmFnZU5hbWVzcGFjZTsKIH0KIAotU3RvcmFnZU5hbWVz
cGFjZUltcGw6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlLCBj
b25zdCBTdHJpbmcmIHBhdGgsIHVuc2lnbmVkIHF1b3RhKQorU3RvcmFnZU5hbWVzcGFjZUltcGw6
OlN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlLCBjb25zdCBTdHJp
bmcmIHBhdGgsIHVuc2lnbmVkIHF1b3RhLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAg
OiBtX3N0b3JhZ2VUeXBlKHN0b3JhZ2VUeXBlKQogICAgICwgbV9wYXRoKHBhdGguaXNvbGF0ZWRD
b3B5KCkpCiAgICAgLCBtX3N5bmNNYW5hZ2VyKDApCiAgICAgLCBtX3F1b3RhKHF1b3RhKQogICAg
ICwgbV9pc1NodXRkb3duKGZhbHNlKQorICAgICwgbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQogewog
ICAgIGlmIChpc1BlcnNpc3RlbnRMb2NhbFN0b3JhZ2UobV9zdG9yYWdlVHlwZSkgJiYgIW1fcGF0
aC5pc0VtcHR5KCkpCiAgICAgICAgIG1fc3luY01hbmFnZXIgPSBTdG9yYWdlU3luY01hbmFnZXI6
OmNyZWF0ZShtX3BhdGgpOwpAQCAtOTcsOSArOTMsOSBAQCBSZWY8U3RvcmFnZU5hbWVzcGFjZT4g
U3RvcmFnZU5hbWVzcGFjZUltcGw6OmNvcHkoUGFnZSopCiB7CiAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKICAgICBBU1NFUlQoIW1faXNTaHV0ZG93bik7Ci0gICAgQVNTRVJUKG1fc3RvcmFn
ZVR5cGUgPT0gU3RvcmFnZVR5cGU6OlNlc3Npb24gfHwgbV9zdG9yYWdlVHlwZSA9PSBTdG9yYWdl
VHlwZTo6RXBoZW1lcmFsTG9jYWwpOworICAgIEFTU0VSVChtX3N0b3JhZ2VUeXBlID09IFN0b3Jh
Z2VUeXBlOjpTZXNzaW9uKTsKIAotICAgIGF1dG8gbmV3TmFtZXNwYWNlID0gYWRvcHRSZWYoKm5l
dyBTdG9yYWdlTmFtZXNwYWNlSW1wbChtX3N0b3JhZ2VUeXBlLCBtX3BhdGgsIG1fcXVvdGEpKTsK
KyAgICBhdXRvIG5ld05hbWVzcGFjZSA9IGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFjZUlt
cGwobV9zdG9yYWdlVHlwZSwgbV9wYXRoLCBtX3F1b3RhLCBtX3Nlc3Npb25JRCkpOwogICAgIGZv
ciAoYXV0byYgaXRlciA6IG1fc3RvcmFnZUFyZWFNYXApCiAgICAgICAgIG5ld05hbWVzcGFjZS0+
bV9zdG9yYWdlQXJlYU1hcC5zZXQoaXRlci5rZXksIGl0ZXIudmFsdWUtPmNvcHkoKSk7CiAKQEAg
LTEyNyw3ICsxMjMsNyBAQCB2b2lkIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjbG9zZSgpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIC8vIElmIHdlJ3JlIG5vdCBhIHBlcnNpc3RlbnQgc3RvcmFnZSwg
d2Ugc2hvdWxkbid0IG5lZWQgdG8gZG8gYW55IHdvcmsgaGVyZS4KLSAgICBpZiAobV9zdG9yYWdl
VHlwZSA9PSBTdG9yYWdlVHlwZTo6U2Vzc2lvbiB8fCBtX3N0b3JhZ2VUeXBlID09IFN0b3JhZ2VU
eXBlOjpFcGhlbWVyYWxMb2NhbCkgeworICAgIGlmIChtX3N0b3JhZ2VUeXBlID09IFN0b3JhZ2VU
eXBlOjpTZXNzaW9uKSB7CiAgICAgICAgIEFTU0VSVCghbV9zeW5jTWFuYWdlcik7CiAgICAgICAg
IHJldHVybjsKICAgICB9CkBAIC0xNzYsNCArMTcyLDExIEBAIHZvaWQgU3RvcmFnZU5hbWVzcGFj
ZUltcGw6OmNsb3NlSWRsZUxvY2FsU3RvcmFnZURhdGFiYXNlcygpCiAgICAgICAgIGl0LT52YWx1
ZS0+Y2xvc2VEYXRhYmFzZUlmSWRsZSgpOwogfQogCit2b2lkIFN0b3JhZ2VOYW1lc3BhY2VJbXBs
OjpzZXRTZXNzaW9uSURGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKK3sKKyAg
ICBtX3Nlc3Npb25JRCA9IHNlc3Npb25JRDsKKyAgICBmb3IgKGF1dG8gc3RvcmFnZUFyZWFNYXAg
OiBtX3N0b3JhZ2VBcmVhTWFwLnZhbHVlcygpKQorICAgICAgICBzdG9yYWdlQXJlYU1hcC0+c2Vz
c2lvbkNoYW5nZWQoIXNlc3Npb25JRC5pc0VwaGVtZXJhbCgpKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3Jh
Z2VOYW1lc3BhY2VJbXBsLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZU5h
bWVzcGFjZUltcGwuaAppbmRleCBjODhmMDYxZWY1ZTUwYzliMTYzNWVjM2Y4ZDZiYTBlZDc3MDVj
YWE3Li4xMjAzMjUyZDg0NjlkOGIzMGVhMDQwMDc1ZDk2ZjcxNTdmZmVlY2YwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaApAQCAt
MjgsNiArMjgsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9TdG9yYWdlQXJlYS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3RvcmFn
ZU5hbWVzcGFjZS5oPgorI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KQEAgLTM4LDkgKzM5LDggQEAgY2xhc3MgU3RvcmFnZUFyZWFJbXBsOwogCiBj
bGFzcyBTdG9yYWdlTmFtZXNwYWNlSW1wbCA6IHB1YmxpYyBXZWJDb3JlOjpTdG9yYWdlTmFtZXNw
YWNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVh
dGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSk7Ci0gICAgc3RhdGljIFJl
ZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNw
YWNlKHVuc2lnbmVkIHF1b3RhKTsKLSAgICBzdGF0aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBs
PiBnZXRPckNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZShjb25zdCBTdHJpbmcmIGRhdGFiYXNl
UGF0aCwgdW5zaWduZWQgcXVvdGEpOworICAgIHN0YXRpYyBSZWY8U3RvcmFnZU5hbWVzcGFjZUlt
cGw+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkIHF1b3RhLCBQQUw6OlNl
c3Npb25JRCk7CisgICAgc3RhdGljIFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gZ2V0T3JDcmVh
dGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoY29uc3QgU3RyaW5nJiBkYXRhYmFzZVBhdGgsIHVuc2ln
bmVkIHF1b3RhLCBQQUw6OlNlc3Npb25JRCk7CiAgICAgdmlydHVhbCB+U3RvcmFnZU5hbWVzcGFj
ZUltcGwoKTsKIAogICAgIHZvaWQgY2xvc2UoKTsKQEAgLTU0LDggKzU0LDExIEBAIHB1YmxpYzoK
ICAgICB2b2lkIHN5bmMoKTsKICAgICB2b2lkIGNsb3NlSWRsZUxvY2FsU3RvcmFnZURhdGFiYXNl
cygpOwogCisgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gbV9zZXNzaW9uSUQ7IH0KKyAgICB2b2lkIHNldFNlc3Npb25JREZvclRlc3RpbmcoUEFM
OjpTZXNzaW9uSUQpIG92ZXJyaWRlOworCiBwcml2YXRlOgotICAgIFN0b3JhZ2VOYW1lc3BhY2VJ
bXBsKFdlYkNvcmU6OlN0b3JhZ2VUeXBlLCBjb25zdCBTdHJpbmcmIHBhdGgsIHVuc2lnbmVkIHF1
b3RhKTsKKyAgICBTdG9yYWdlTmFtZXNwYWNlSW1wbChXZWJDb3JlOjpTdG9yYWdlVHlwZSwgY29u
c3QgU3RyaW5nJiBwYXRoLCB1bnNpZ25lZCBxdW90YSwgUEFMOjpTZXNzaW9uSUQpOwogCiAgICAg
UmVmPFdlYkNvcmU6OlN0b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYShjb25zdCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEmKSBvdmVycmlkZTsKICAgICBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gY29w
eShXZWJDb3JlOjpQYWdlKiBuZXdQYWdlKSBvdmVycmlkZTsKQEAgLTczLDYgKzc2LDggQEAgcHJp
dmF0ZToKICAgICB1bnNpZ25lZCBtX3F1b3RhOwogCiAgICAgYm9vbCBtX2lzU2h1dGRvd247CisK
KyAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9XZWJTdG9yYWdl
TmFtZXNwYWNlUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1dlYlN0
b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKaW5kZXggODM2MjA1N2ZmZDc0ZjZkMmRhMWFhNDdk
Nzc4MDA0OTFjOWRhMTFkYy4uZDA5NDY5MTI1ZmMyZjQ4NjY1OGE3M2E2Yjk1MGIyNDM0YjA3MDc5
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1dlYlN0b3JhZ2VOYW1l
c3BhY2VQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1dlYlN0
b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJX
ZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaCIKIAogI2luY2x1ZGUgIlN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtOTYsMjYgKzk3LDIx
IEBAIHZvaWQgV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpzeW5jTG9jYWxTdG9yYWdlKCkK
ICAgICB9CiB9CiAKLVJlZjxTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCBxdW90
YSkKK1JlZjxTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNy
ZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFBhZ2UmIHBhZ2UsIHVuc2lnbmVkIHF1b3RhKQog
ewotICAgIHJldHVybiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VO
YW1lc3BhY2UocXVvdGEpOworICAgIHJldHVybiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRl
U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UocXVvdGEsIHBhZ2Uuc2Vzc2lvbklEKCkpOwogfQogCi1S
ZWY8U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVF
cGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoUGFnZSYsIHVuc2lnbmVkIHF1b3RhKQorUmVm
PFN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlTG9j
YWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkIHF1b3RhLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQpCiB7Ci0gICAgcmV0dXJuIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVFcGhlbWVyYWxM
b2NhbFN0b3JhZ2VOYW1lc3BhY2UocXVvdGEpOworICAgIHJldHVybiBTdG9yYWdlTmFtZXNwYWNl
SW1wbDo6Z2V0T3JDcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UobV9sb2NhbFN0b3JhZ2VEYXRh
YmFzZVBhdGgsIHF1b3RhLCBzZXNzaW9uSUQpOwogfQogCi1SZWY8U3RvcmFnZU5hbWVzcGFjZT4g
V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2Uo
dW5zaWduZWQgcXVvdGEpCi17Ci0gICAgcmV0dXJuIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpnZXRP
ckNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZShtX2xvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCwg
cXVvdGEpOwotfQotCi1SZWY8U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVBy
b3ZpZGVyOjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoU2VjdXJpdHlPcmln
aW4mLCB1bnNpZ25lZCBxdW90YSkKK1JlZjxTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFt
ZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShTZWN1
cml0eU9yaWdpbiYsIHVuc2lnbmVkIHF1b3RhLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7
CiAgICAgLy8gRklYTUU6IEEgc21hcnRlciBpbXBsZW1lbnRhdGlvbiB3b3VsZCBjcmVhdGUgYSBz
cGVjaWFsIG5hbWVzcGFjZSB0eXBlIGluc3RlYWQgb2YganVzdCBwaWdneS1iYWNraW5nIG9mZgog
ICAgIC8vIFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlIGhlcmUuCi0gICAgcmV0dXJuIFN0b3JhZ2VO
YW1lc3BhY2VJbXBsOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShxdW90YSk7CisgICAg
cmV0dXJuIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFj
ZShxdW90YSwgc2Vzc2lvbklEKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9TdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oIGIvU291cmNlL1dlYktp
dExlZ2FjeS9TdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oCmluZGV4IGU1ODlm
ZWU3YTVjNmM5MWNmOTRiN2QyM2I0ODYxNDgxNzliOGNmZjYuLjZkYmM1YzkwOWJmYjc5ZTFhMzVi
MDhiNDg5NTM5YTBmM2Y3MGE3MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3Rv
cmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L1N0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmgKQEAgLTUwLDkgKzUwLDgg
QEAgcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIoY29u
c3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpOwogCiAgICAgUmVmPFdlYkNvcmU6
OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6
OlBhZ2UmLCB1bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7Ci0gICAgUmVmPFdlYkNvcmU6OlN0b3Jh
Z2VOYW1lc3BhY2U+IGNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShXZWJDb3Jl
OjpQYWdlJiwgdW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOwotICAgIFJlZjxXZWJDb3JlOjpTdG9y
YWdlTmFtZXNwYWNlPiBjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEp
IG92ZXJyaWRlOwotICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVUcmFu
c2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCB1bnNp
Z25lZCBxdW90YSkgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+
IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSwgUEFMOjpTZXNzaW9u
SUQpIG92ZXJyaWRlOworICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVU
cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCB1
bnNpZ25lZCBxdW90YSwgUEFMOjpTZXNzaW9uSUQpIG92ZXJyaWRlOwogCiAgICAgY29uc3QgU3Ry
aW5nIG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCA0YWUyM2U5MGE0NzEwYzM0MDQxMjA3N2RiOWEz
MDM0ZGM2NTcyNGI4Li41ZTVhZjMxMWQ5ODc3OWY0OWVjNDM5NzhjODkxZGZlNTVkMGI4ZTI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC0yODkzLDYg
KzI4OTMsNyBAQCAtICh2b2lkKV9wcmVmZXJlbmNlc0NoYW5nZWQ6KFdlYlByZWZlcmVuY2VzICop
cHJlZmVyZW5jZXMKICAgICBzZXR0aW5ncy5zZXRMb2NhbFN0b3JhZ2VFbmFibGVkKFtwcmVmZXJl
bmNlcyBsb2NhbFN0b3JhZ2VFbmFibGVkXSk7CiAKICAgICBfcHJpdmF0ZS0+cGFnZS0+ZW5hYmxl
TGVnYWN5UHJpdmF0ZUJyb3dzaW5nKFtwcmVmZXJlbmNlcyBwcml2YXRlQnJvd3NpbmdFbmFibGVk
XSk7CisgICAgX3ByaXZhdGUtPmdyb3VwLT5zdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIoKS5lbmFi
bGVMZWdhY3lQcml2YXRlQnJvd3NpbmdGb3JUZXN0aW5nKFtwcmVmZXJlbmNlcyBwcml2YXRlQnJv
d3NpbmdFbmFibGVkXSk7CiAgICAgc2V0dGluZ3Muc2V0U2Fuc1NlcmlmRm9udEZhbWlseShbcHJl
ZmVyZW5jZXMgc2Fuc1NlcmlmRm9udEZhbWlseV0pOwogICAgIHNldHRpbmdzLnNldFNlcmlmRm9u
dEZhbWlseShbcHJlZmVyZW5jZXMgc2VyaWZGb250RmFtaWx5XSk7CiAgICAgc2V0dGluZ3Muc2V0
U3RhbmRhcmRGb250RmFtaWx5KFtwcmVmZXJlbmNlcyBzdGFuZGFyZEZvbnRGYW1pbHldKTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpp
bmRleCBkNGM0ZDBmY2YxMWIzZjFhZWQ0MmY1OGQ4YTkzMGY3M2VlNzlkNDM5Li5kZTdiMTFkZGY0
YmM1MjMzN2YzNjdjM2YyMGNlMzU2NDg5MzdlMDI1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIw
MTktMDgtMDIgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgU29t
ZSBpbXByb3ZlbWVudHMgb24gd2ViIHN0b3JhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDM3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vaW9zLXNpbXVsYXRvci13azIvVGVzdEV4
cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnM6
CisgICAgICAgICogc3RvcmFnZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFnZS9wcml2YXRlLWJyb3dz
aW5nLWFmZmVjdHMtc3RvcmFnZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3RvcmFnZS9kb21z
dG9yYWdlL2xvY2Fsc3RvcmFnZS9yZXNvdXJjZXMvcHJpdmF0ZS1icm93c2luZy0xLmh0bWw6CisK
IDIwMTktMDgtMDIgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgog
CiAgICAgICAgIFtTT1VQXSBXZWJTb2NrZXRzOiB1c2UgU09VUF9XRUJTT0NLRVRfQ0xPU0VfTk9f
U1RBVFVTIHdoZW4gY2xvc2luZyB3aXRoIG5vIHN0YXR1cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vaW9zLXNpbXVsYXRvci13azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2lvcy1zaW11bGF0b3Itd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggOWU4
NjY2YWNlZjE2ODM4MjVkNzUzODYyMWMxYzlmODk0ZTBiNTEzZi4uOTc0OTc3YTI1ZmNmMWZkOWU1
NzdlMzNmODVmYTVhZmQwNGJhZmNhMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
aW9zLXNpbXVsYXRvci13azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9pb3Mtc2ltdWxhdG9yLXdrMi9UZXN0RXhwZWN0YXRpb25zCkBAIC02Niw3ICs2Niw3IEBA
IGh0dHAvd3B0L2NhY2hlLXN0b3JhZ2UvY2FjaGUtcHV0LWtleXMuaHR0cHMuYW55Lndvcmtlci5o
dG1sIFsgU2xvdyBdCiBodHRwL3dwdC9jYWNoZS1zdG9yYWdlL2EtY2FjaGUtb3Blbi5odHRwcy5o
dG1sIFsgU2xvdyBdCiBodHRwL3dwdC9jYWNoZS1zdG9yYWdlL2NhY2hlLXF1b3RhLWFkZC5hbnku
aHRtbCBbIFNsb3cgXQogCi13ZWJraXQub3JnL2IvMTk2Mzc2IFsgRGVidWcgXSBzdG9yYWdlL2Rv
bXN0b3JhZ2UvbG9jYWxzdG9yYWdlL3ByaXZhdGUtYnJvd3NpbmctYWZmZWN0cy1zdG9yYWdlLmh0
bWwgWyBQYXNzIEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzE5NjM3NiBbIERlYnVnIF0gc3RvcmFn
ZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFnZS9wcml2YXRlLWJyb3dzaW5nLWFmZmVjdHMtc3RvcmFn
ZS5odG1sIFsgUGFzcyBdCiAKIHdlYmtpdC5vcmcvYi8xOTY0MDMgaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9tZWRpYWNhcHR1cmUtcmVjb3JkL01lZGlhUmVjb3JkZXItc3RvcC5odG1s
IFsgUGFzcyBGYWlsdXJlIF0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LXdrMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0
RXhwZWN0YXRpb25zCmluZGV4IDMwN2VjYmVmYWRiN2FmOGI3NmY5MWE1ZTAwM2NmNWQ5ZDk4YTcx
ZmQuLjU0MGUwZGUxMThlZGY1NTlkMzE2NzZkZTcyOGUxMTZlMjA1ZjkzNjYgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTkyMiw3ICs5MjIs
NyBAQCB3ZWJraXQub3JnL2IvMTk0ODI2IGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy9kby1ub3QtYmxvY2stdG9wLWxldmVsLW5hdgogCiB3ZWJraXQub3JnL2IvMTk0OTE2IGZhc3Qv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tdmlkZW8tZWxlbWVudC5odG1sIFsgUGFzcyBGYWlsdXJl
IF0KIAotd2Via2l0Lm9yZy9iLzE5NjM3NiBzdG9yYWdlL2RvbXN0b3JhZ2UvbG9jYWxzdG9yYWdl
L3ByaXZhdGUtYnJvd3NpbmctYWZmZWN0cy1zdG9yYWdlLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQor
d2Via2l0Lm9yZy9iLzE5NjM3NiBzdG9yYWdlL2RvbXN0b3JhZ2UvbG9jYWxzdG9yYWdlL3ByaXZh
dGUtYnJvd3NpbmctYWZmZWN0cy1zdG9yYWdlLmh0bWwgWyBQYXNzIF0KIAogd2Via2l0Lm9yZy9i
LzE5NjQwMCBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2stZ2V0U2V0dGluZ3MuaHRt
bCBbIFBhc3MgRmFpbHVyZSBdCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvZG9t
c3RvcmFnZS9sb2NhbHN0b3JhZ2UvcHJpdmF0ZS1icm93c2luZy1hZmZlY3RzLXN0b3JhZ2UtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFnZS9w
cml2YXRlLWJyb3dzaW5nLWFmZmVjdHMtc3RvcmFnZS1leHBlY3RlZC50eHQKaW5kZXggMmNhOTU1
NzUwMjdmYWI4OWFiZWI0NjdiMzgwNWMyMDYwNWRmZmJkMS4uZjk4NDBkZWI1MzBiZTFjMTU1YWQ4
ZGVmNWE1OGM4MGZjNjYxZDAyNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9kb21z
dG9yYWdlL2xvY2Fsc3RvcmFnZS9wcml2YXRlLWJyb3dzaW5nLWFmZmVjdHMtc3RvcmFnZS1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFn
ZS9wcml2YXRlLWJyb3dzaW5nLWFmZmVjdHMtc3RvcmFnZS1leHBlY3RlZC50eHQKQEAgLTgsNyAr
OCw3IEBAIEFMRVJUOiBsb2NhbFN0b3JhZ2UncyBsZW5ndGggaXM6IDEKIEFMRVJUOiBUaGUgaXRl
bSBpbiBuZXcgd2luZG93IHN0YXJ0cyBvdXQgYXM6IENoYW5nZWRWYWx1ZQogQUxFUlQ6IFRoZSBp
dGVtIGluIG5ldyB3aW5kb3cgaXMgbm93OiBOZXdXaW5kb3dWYWx1ZQogQUxFUlQ6IEJhY2sgaW4g
cGFyZW50IHdpbmRvdywgbG9jYWxTdG9yYWdlJ3MgbGVuZ3RoIGlzOiAxCi1BTEVSVDogQmFjayBp
biBwYXJlbnQgd2luZG93LCB0ZXN0SXRlbSBpczogQ2hhbmdlZFZhbHVlCitBTEVSVDogQmFjayBp
biBwYXJlbnQgd2luZG93LCB0ZXN0SXRlbSBpczogTmV3V2luZG93VmFsdWUKIEFMRVJUOiBGaW5h
bCB3aW5kb3csIGxvY2FsU3RvcmFnZSdzIGxlbmd0aCBpczogMQogQUxFUlQ6IEZpbmFsIHdpbmRv
dywgaXRlbSBpczogUGVyc2lzdGVudCBpdGVtIQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2RvbXN0b3JhZ2UvbG9jYWxzdG9yYWdlL3Jlc291cmNlcy9wcml2YXRlLWJyb3dzaW5n
LTEuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvZG9tc3RvcmFnZS9sb2NhbHN0b3JhZ2UvcmVz
b3VyY2VzL3ByaXZhdGUtYnJvd3NpbmctMS5odG1sCmluZGV4IGU0MTAxZTM5MWMwNWNkNmI2YTk3
MzA4ZDE2MjkxN2EyZDFhYzg5YzQuLjczMGQ0YjkxOWM2N2E5NWZjMTkwZDUwMmRhYmZlMmJlMGRi
YTI4ZjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvZG9tc3RvcmFnZS9sb2NhbHN0
b3JhZ2UvcmVzb3VyY2VzL3ByaXZhdGUtYnJvd3NpbmctMS5odG1sCisrKyBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvZG9tc3RvcmFnZS9sb2NhbHN0b3JhZ2UvcmVzb3VyY2VzL3ByaXZhdGUtYnJvd3Np
bmctMS5odG1sCkBAIC0yNCw2ICsyNCwxMiBAQCBmdW5jdGlvbiBydW5UZXN0KCkKICAgICAgICAg
d2luZG93LmxvY2F0aW9uLmhyZWYgPSAicHJpdmF0ZS1icm93c2luZy0zLmh0bWwiOwogICAgIH0K
IAorICAgIHRyeSB7CisgICAgICAgIGxvY2FsU3RvcmFnZS5jbGVhcigpOworICAgIH0gY2F0Y2go
ZSkgeworICAgICAgICBsb2coIkNhdWdodCBleGNlcHRpb24gdHJ5aW5nIHRvIGNsZWFyIiArIGUp
OworICAgIH0KKwogICAgIGxvZygiU3RhcnQgb2YgcHJpdmF0ZSBicm93c2luZyB0ZXN0LCB0ZXN0
SXRlbSBpczogIiArIGxvY2FsU3RvcmFnZS5nZXRJdGVtKCJ0ZXN0SXRlbSIpKTsKICAgICBsb2co
ImxvY2FsU3RvcmFnZSdzIGxlbmd0aCBpczogIiArIGxvY2FsU3RvcmFnZS5sZW5ndGgpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375449</attachid>
            <date>2019-08-02 13:39:57 -0700</date>
            <delta_ts>2019-08-05 14:48:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200373-20190802133956.patch</filename>
            <type>text/plain</type>
            <size>215140</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4MTUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjZlMDg3YzNmNzEzYjg1
NzcwYjU1MWM4MzYzZWUxYjc3YjJiOTIxNy4uMWU5YTI5MTg1ZmRlYjE0YzBiZDMyZjNiY2E3MjRk
MGZlZmY1MDMyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDE5LTA4LTAyICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIFNvbWUgaW1wcm92ZW1lbnRz
IG9uIHdlYiBzdG9yYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDAzNzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBSZW1vdmUgdHlwZSBFcGhlbWVyYWxMb2NhbFN0b3JhZ2UsIHdoaWNoIGlzIHVzZWQg
Zm9yIGxvY2FsU3RvcmFnZSBpbiBlcGhlbWVyYWwgc2Vzc2lvbnMsIGFuZCByZXBsYWNlIHdpdGgg
CisgICAgICAgIExvY2FsU3RvcmFnZS4KKworICAgICAgICBBZGQgU2Vzc2lvbklEIHRvIFN0b3Jh
Z2VOYW1lc3BhY2UgdG8gbWFrZSBpdCBwb3NzaWJsZSB0byBtYWtlIFN0b3JhZ2VOYW1lc3BhY2Ug
c2Vzc2lvbi1zcGVjaWZpYy4KKworICAgICAgICBVcGRhdGUgb25lIGxheW91dCB0ZXN0IHRvIHJl
ZmxlY3QgY2hhbmdlZCBiZWhhdmlvci4KKworICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNy
ZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eVN0b3Jh
Z2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVh
dGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOiBEZWxldGVkLgorICAgICAgICAqIHBh
Z2UvQ2hyb21lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6Y3JlYXRlV2luZG93IGNv
bnN0KToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
T01XaW5kb3c6OnByZXdhcm1Mb2NhbFN0b3JhZ2VJZk5lY2Vzc2FyeSk6CisgICAgICAgICogcGFn
ZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldFNlc3Npb25JRCk6CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlOjplcGhlbWVyYWxMb2NhbFN0b3JhZ2UpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0RXBoZW1lcmFsTG9jYWxTdG9yYWdlKTogRGVsZXRlZC4K
KyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKiBwYWdlL1BhZ2VHcm91cC5oOgorICAg
ICAgICAoV2ViQ29yZTo6UGFnZUdyb3VwOjppc0xlZ2FjeVByaXZhdGVCcm93c2luZ0VuYWJsZWRG
b3JUZXN0aW5nKToKKyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U3RvcmFnZTo6cHJld2FybSk6IERlbGV0ZWQuCisgICAgICAgICogc3RvcmFnZS9TdG9y
YWdlLmg6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlQXJlYS5oOgorICAgICAgICAoV2ViQ29y
ZTo6U3RvcmFnZUFyZWE6OmNsb3NlRGF0YWJhc2VJZklkbGUpOgorICAgICAgICAoV2ViQ29yZTo6
U3RvcmFnZUFyZWE6OnByZXdhcm0pOiBEZWxldGVkLgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFn
ZU5hbWVzcGFjZS5oOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6bG9jYWxT
dG9yYWdlQXJlYSk6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6
OmxvY2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlTmFtZXNw
YWNlUHJvdmlkZXI6OnRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmVuYWJsZUxlZ2FjeVByaXZhdGVCcm93
c2luZ0ZvclRlc3RpbmcpOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyLmg6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlVHlwZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6aXNMb2NhbFN0b3JhZ2UpOgorCiAyMDE5LTA4LTAyICBLb25zdGFudGluIFRva2FyZXYgIDxh
bm51bGVuQHlhbmRleC5ydT4KIAogICAgICAgICBSZW1vdmUgY29uc3RydWN0b3JzIGFuZCBvcGVy
YXRvcnMgb2YgRm9udFBsYXRmb3JtRGF0YSBkZWZpbmVkIG9ubHkgZm9yIEZyZWV0eXBlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IDNhYjdmOTc3MDMyNDNiMmQyNDZiZDNlN2EwMTc0OWEzNDBkMjZkNDIuLmI3NGM3MDRi
OGNmYjNkYmU3ZGUwOTU0NWQxZGEwZTQyYWQ3NTJiZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjY0
IEBACisyMDE5LTA4LTAyICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAg
ICAgIFNvbWUgaW1wcm92ZW1lbnRzIG9uIHdlYiBzdG9yYWdlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDAzNzMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTb21lIGZsYXdzIGluIGN1cnJlbnQgd2ViIHN0
b3JhZ2UgYXJjaGl0ZWN0dXJlIGhhdmUgYmVjb21lIG9idmlvdXMgYWZ0ZXIgd2ViIHN0b3JhZ2Ug
aXMgbW92ZWQgZnJvbSBVSSBwcm9jZXNzIHRvCisgICAgICAgIG5ldHdvcmsgcHJvY2VzcyBhbmQg
UFNPTiBpcyBlbmFibGVkLiBGb3IgZXhhbXBsZSwgc2Vzc2lvblN0b3JhZ2VOYW1lU3BhY2UgZm9y
IHdlYiBwYWdlIGlzIHByZXBhcmVkIGFuZCBkZXN0cm95ZWQKKyAgICAgICAgaW4gdGhlIG5ldHdv
cmsgcHJvY2VzcyB3aGVuIHRoZSBwYWdlIGNvbWVzIGFuZCBnb2VzLCBldmVuIHRob3VnaCB0aGUg
cGFnZSBtYXkgbm90IHVzZSBzZXNzaW9uU3RvcmFnZSBhdCBhbGwuIFVJCisgICAgICAgIHByb2Nl
c3MgbmF0dXJhbGx5IGtub3dzIHN0YXRlIG9mIGEgd2ViIHBhZ2UsIGJ1dCBuZXR3b3JrIHByb2Nl
c3MgZG9lcyBub3QuIElmIHRoZSB3ZWIgcGFnZSBpcyBub3QgdXNpbmcgd2ViCisgICAgICAgIHN0
b3JhZ2UsIHRoZSBtZXNzYWdlcyBhYm91dCBwYWdlIHN0YXRlIHNlbnQgZnJvbSB3ZWIgcHJvY2Vz
cyB0byBuZXR3b3JrIHByb2Nlc3MgYXJlIHVzZWxlc3MuCisKKyAgICAgICAgSGVyZSBhcmUgc29t
ZSBnZW5lcmFsIGlkZWFzIG9mIHRoaXMgcGF0Y2g6CisgICAgICAgIDEuIE5ldHdvcmsgcHJvY2Vz
cyBvd25zIHRoZSB3ZWIgc3RvcmFnZSwgYW5kIHdlYiBwcm9jZXNzIGtlZXBzIGEgc21hbGwgbG9j
YWwgY29weSAoYmFzZWQgb24gc2Vzc2lvbiBhbmQgCisgICAgICAgIG9yaWdpbnMgdGhhdCBhcmUg
dmlzaXRlZCkuIFRoZXJlIGlzIGEgdmlydHVhbCBjb25uZWN0aW9uIGZyb20gdGhlIGxvY2FsIGNv
cHkgaW4gdGhlIHdlYiBwcm9jZXNzIHRvIHRoZSBvcmlnaW5hbAorICAgICAgICBjb3B5IGluIHRo
ZSBuZXR3b3JrIHByb2Nlc3MuIFRoZSBjb25uZWN0aW9uIGlzIGNyZWF0ZWQgYnkgd2ViIHByb2Nl
c3Mgd2hlbiBzb21lIHBhZ2UgYXNrcyBmb3Igd2ViIHN0b3JhZ2UuCisgICAgICAgIDIuIElmIGNv
bm5lY3Rpb24gaXMgbG9zdCBiZWNhdXNlIG5ldHdvcmsgcHJvY2VzcyBpcyBnb25lLCBzdG9yYWdl
IGluIG1lbW9yeSB3aWxsIGJlIGxvc3QuIFRoZSBsb2NhbCBjb3B5IGluIHdlYgorICAgICAgICBw
cm9jZXNzcyB3aWxsIGJlIGRpc2NhcmRlZC4KKyAgICAgICAgMy4gKFNlc3Npb25JRCwgU3RvcmFn
ZU5hbWVzcGFjZUlELCBTZWN1cml0eU9yaWdpbikgaXMgdXNlZCB0byBpZGVudGlmeSBhIHN0b3Jh
Z2UgYXJlYS4gSWYgc2Vzc2lvbiBpcyBjaGFuZ2VkIGluCisgICAgICAgIHdlYiBwcm9jZXNzIChs
aWtlIGVuYWJsaW5nIHByaXZhdGUgYnJvd3NpbmcgaW4gbGF5b3V0IHRlc3Qgbm93KSwgYSByZS1j
b25uZWN0aW9uIHdpdGggZGlmZmVyZW50IHNlc3Npb25JRCB3b3VsZCAKKyAgICAgICAgc3VmZmlj
ZSB0byBsb2FkIGFub3RoZXIgY29weSBvZiBzdG9yYWdlLgorICAgICAgICA0LiBsb2NhbFN0b3Jh
Z2UgaW4gZXBoZW1lcmFsIHNlc3Npb24gaGFzIHRoZSBzYW1lIGJlaGF2aW9yIGFzIGxvY2FsU3Rv
cmFnZSBpbnN0ZWFkIG9mIHNlc3Npb25TdG9yYWdlLCB3aGljaAorICAgICAgICBtZWFucyBkaWZm
ZXJlbnQgcGFnZXMgaW4gdGhlIHNhbWUgZXBoZW1lcmFsIHNlc3Npb24gc2hhcmUgdGhlIHNhbWUg
bG9jYWxTdG9yYWdlLgorCisgICAgICAgIEFsc28sIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBTdG9y
YWdlTWFuYWdlclNldCB0byBuZXR3b3JrIHByb2Nlc3MuIEl0IGhhbmRsZXMgd2ViIHN0b3JhZ2Ug
c3R1ZmYsIGluY2x1ZGluZworICAgICAgICByZWNlaXZpbmcgc3RvcmFnZSBtZXNzYWdlcyBmcm9t
IHdlYiBwcm9jZXNzLCBvbiBvbmUgYmFja2dyb3VuZCB0aHJlYWQuIFByZXZpb3VzbHkgZWFjaCBz
ZXNzaW9uIGhhcyBpdHMgb3duCisgICAgICAgIFN0b3JhZ2VNYW5hZ2VyIGFuZCBlYWNoIFN0b3Jh
Z2VNYW5hZ2VyIGhhcyBpdHMgb3duIFdvcmtRdWV1ZS4KKworICAgICAgICAqIENNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAg
ICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNv
dXJjZXMubWFrZToKKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcDogcmVtb3ZlIG1lc3NhZ2UgaGFuZGxlcnMgdGhhdCBhcmUgbm8gbG9u
Z2VyIG5lZWRlZC4gTmV0d29yaworICAgICAgICBwcm9jZXNzIG5vIGxvbmdlciBuZWVkcyB0byBr
bm93IHBhZ2Ugc3RhdGVzIGZyb20gd2ViIHByb2Nlc3MuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp3ZWJQYWdlV2FzQWRkZWQpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6d2ViUGFnZVdh
c1JlbW92ZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6d2ViUHJvY2Vzc1Nlc3Npb25DaGFuZ2VkKTogRGVsZXRlZC4KKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2Vz
LmluOgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOiBOZXR3
b3JrUHJvY2VzcyB1c2VzIFN0b3JhZ2VNYW5hZ2VyU2V0IGluc3RlYWQgb2YgU3RvcmFnZU1hbmFn
ZXIgZnJvbSAKKyAgICAgICAgZGlmZmVyZW50IHNlc3Npb25zIHRvIGRlYWwgd2l0aHdlYiBzdG9y
YWdlLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6TmV0d29ya1Byb2Nlc3MpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6fk5ldHdvcmtQcm9jZXNzKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpjcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjphZGRXZWJzaXRl
RGF0YVN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRlc3Ryb3lTZXNz
aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6Omhhc0xvY2FsU3RvcmFnZSk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpmZXRjaFdlYnNpdGVEYXRhKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvclJl
Z2lzdHJhYmxlRG9tYWlucyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjphY3R1
YWxQcmVwYXJlVG9TdXNwZW5kKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJl
c3VtZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpnZXRMb2NhbFN0b3JhZ2VP
cmlnaW5EZXRhaWxzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3NDbG9zZWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6
d2ViUGFnZVdhc0FkZGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OndlYlBhZ2VXYXNSZW1vdmVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OndlYlByb2Nlc3NXYXNEaXNjb25uZWN0ZWQpOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6d2ViUHJvY2Vzc1Nlc3Npb25DaGFuZ2VkKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwOiBTdG9yYWdlTWFuYWdlciBpcyBt
b3ZlZCBvdXQgb2YgTmV0d29ya1Nlc3Npb24uIEl0IGlzIG5vdyBtYW5hZ2VkIGJ5IAorICAgICAg
ICBTdG9yYWdlTWFuYWdlclNldC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246Ok5l
dHdvcmtTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246On5OZXR3b3Jr
U2Vzc2lvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OnN0b3JhZ2VNYW5hZ2VyKTogRGVsZXRlZC4K
KworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0
ZXJzLmNwcDogY3JlYXRpb24gcGFyYW1ldGVycyBvZiBTdG9yYWdlTWFuYWdlciBpcyBtb3ZlZCBv
dXQgb2YKKyAgICAgICAgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuCisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzOjpwcml2YXRlU2Vzc2lv
blBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFy
YW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25D
cmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuaDoKKworICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNwcDogTG9jYWxTdG9y
YWdlRGF0YWJhc2VUcmFja2VyIGlzIGNyZWF0ZWQgb24gdGhlCisgICAgICAgIGJhY2tncm91bmQg
dGhyZWFkIG5vdywgc28gaXQgZG9lcyBub3QgbmVlZCBhIGNvcHkgb2YgV29ya1F1ZXVlIHRvIGRv
IHRoZSBmaWxlIG9wZXJhdGlvbi4KKyAgICAgICAgKFdlYktpdDo6TG9jYWxTdG9yYWdlRGF0YWJh
c2VUcmFja2VyOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpMb2NhbFN0b3JhZ2VEYXRhYmFz
ZVRyYWNrZXI6OkxvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcik6CisgICAgICAgIChXZWJLaXQ6
OkxvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6fkxvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tl
cik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRh
YmFzZVRyYWNrZXIuaDoKKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3Rv
cmFnZU1hbmFnZXIuY3BwOiBTdG9yYWdlTWFuYWdlciBpcyBjcmVhdGVkIGFuZCBkZXN0cm95ZWQg
b24gdGhlIGJhY2tncm91bmQgCisgICAgICAgIHRocmVhZC4gVGhlIHRhc2tzIGFyZSBkaXNwYXRj
aGVkIHRvIGJhY2tncm91bmQgdGhyZWFkIGJ5IFN0b3JhZ2VNYW5hZ2VyU2V0LiBBbGwgdGhyZWFk
IHNhZmV0eSBjaGVja3MgaW4gCisgICAgICAgIFN0b3JhZ2VNYW5hZ2VyIG5vdyBhcmUgY2hlY2tp
bmcgaWYgaXQgaXMgaW4gdGhlIGJhY2tncm91bmQgdGhyZWFkLgorICAgICAgICAoV2ViS2l0Ojpn
ZW5lcmF0ZVN0b3JhZ2VBcmVhSWRlbnRpZmllcik6IGVhY2ggU3RvcmFnZUFyZWEgaGFzIGFuIGlk
ZW50aWZpZXIuIFN0b3JhZ2VBcmVhTWFwIGluIHdlYiBwcm9jZXNzCisgICAgICAgIHVzZSB0aGlz
IGlkZW50aWZpZXIgdG8gaW5kaWNhdGUgd2hpY2ggU3RvcmFnZUFyZWEgaXQgaXMgY29ubmVjdGlu
ZyB0by4KKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VBcmVhOjpTdG9y
YWdlQXJlYSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQXJlYTo6
YWRkTGlzdGVuZXIpOiBsb2FkIGxvY2FsU3RvcmFnZURhdGFiYXNlIGluIGFkdmFuY2UgaWYgdGhl
cmUgaXMgc29tZSAKKyAgICAgICAgY29ubmVjdGlvbiB0byB0aGlzIExvY2FsU3RvcmFnZSBhcmVh
LgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUFyZWE6OnJlbW92ZUxp
c3RlbmVyKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VBcmVhOjpj
bGVhcik6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQXJlYTo6b3Bl
bkRhdGFiYXNlQW5kSW1wb3J0SXRlbXNJZk5lZWRlZCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
OlN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQXJlYTo6ZGlzcGF0Y2hFdmVudHMgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6TG9jYWxTdG9yYWdlTmFtZXNwYWNlOjpnZXRP
ckNyZWF0ZVN0b3JhZ2VBcmVhKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OlNl
c3Npb25TdG9yYWdlTmFtZXNwYWNlOjpnZXRPckNyZWF0ZVN0b3JhZ2VBcmVhKToKKyAgICAgICAg
KFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VNYW5hZ2VyKToKKyAgICAgICAgKFdlYktp
dDo6U3RvcmFnZU1hbmFnZXI6On5TdG9yYWdlTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OlN0
b3JhZ2VNYW5hZ2VyOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChX
ZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpkZXN0cm95U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UpOiB0
aGlzIGlzIG5vdCB1c2VkIG5vdy4gS2VlcCBpdCBmb3IgZnV0dXJlIGltcHJvdmVtZW50CisgICAg
ICAgIHRvIHJlbW92ZSBpbi1tZW1vcnkgc2Vzc2lvblN0b3JhZ2UgaW4gbmV0d29yayBwcm9jZXNz
IGlmIHdlIGtub3cgc29tZSB3ZWIgcGFnZSBpcyBnb25lIGZvcmV2ZXIuCisgICAgICAgIChXZWJL
aXQ6OlN0b3JhZ2VNYW5hZ2VyOjpjbG9uZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKToKKyAgICAg
ICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmdldFNlc3Npb25TdG9yYWdlT3JpZ2lucyk6Cisg
ICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVTZXNzaW9uU3RvcmFnZU9yaWdp
bnMpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlU2Vzc2lvblN0b3Jh
Z2VFbnRyaWVzRm9yT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpn
ZXRMb2NhbFN0b3JhZ2VPcmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6
OmdldExvY2FsU3RvcmFnZU9yaWdpbkRldGFpbHMpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdl
TWFuYWdlcjo6ZGVsZXRlTG9jYWxTdG9yYWdlT3JpZ2luc01vZGlmaWVkU2luY2UpOgorICAgICAg
ICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlTG9jYWxTdG9yYWdlRW50cmllc0Zvck9y
aWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlTG9jYWxTdG9y
YWdlQXJlYSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVUcmFuc2ll
bnRMb2NhbFN0b3JhZ2VBcmVhKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmNy
ZWF0ZVNlc3Npb25TdG9yYWdlQXJlYSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2Vy
OjpnZXRPckNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6
U3RvcmFnZU1hbmFnZXI6OmNsZWFyU3RvcmFnZU5hbWVzcGFjZXMpOgorCisgICAgICAgIChXZWJL
aXQ6OlN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQXJlYTo6c2VjdXJpdHlPcmlnaW4gY29uc3QpOiBE
ZWxldGVkLiBUaGUgZGVjbGFyYXRpb25zIGFyZSBtb3ZlZCB0byAKKyAgICAgICAgU3RvcmFnZU1h
bmFnZXIuaCBiZWNhdXNlIFN0b3JhZ2VBcmVhIGlzIHVzZWQgaW4gU3RvcmFnZU1hbmFnZXJTZXQu
CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQXJlYTo6aXNFcGhlbWVy
YWwgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6U3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VBcmVhOjpoYXNMaXN0ZW5lciBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQXJlYTo6c2V0SXRl
bXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6TG9jYWxTdG9y
YWdlTmFtZXNwYWNlOjpjbG9uZVRvKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U3RvcmFn
ZU1hbmFnZXI6OlNlc3Npb25TdG9yYWdlTmFtZXNwYWNlOjphbGxvd2VkQ29ubmVjdGlvbnMgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6U2Vzc2lvblN0
b3JhZ2VOYW1lc3BhY2U6OmFkZEFsbG93ZWRDb25uZWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OlNlc3Npb25TdG9yYWdlTmFtZXNwYWNlOjpyZW1vdmVB
bGxvd2VkQ29ubmVjdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5h
Z2VyOjphZGRBbGxvd2VkU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0aW9uKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OnJlbW92ZUFsbG93ZWRTZXNzaW9u
U3RvcmFnZU5hbWVzcGFjZUNvbm5lY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpT
dG9yYWdlTWFuYWdlcjo6cHJvY2Vzc0RpZENsb3NlQ29ubmVjdGlvbik6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVMb2NhbFN0b3JhZ2VFbnRyaWVzRm9y
T3JpZ2luKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmNyZWF0
ZUxvY2FsU3RvcmFnZU1hcCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5h
Z2VyOjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VNYXApOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VNYXApOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6ZGVzdHJveVN0b3JhZ2VNYXApOiBE
ZWxldGVkLgorCisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpwcmV3YXJtKTogRGVs
ZXRlZC4gQSBMb2NhbFN0b3JhZ2UgYXJlYSBpbXBvcnRzIGZyb20gZGF0YWJhc2Ugd2hlbiBpdCBo
YXMgYSBjb25uZWN0aW9uLAorICAgICAgICBzbyBubyBuZWVkIHRvIGhhdmUgcHJld2FybSBmdW5j
dGlvbi4KKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmdldFZhbHVlcyk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpzZXRJdGVtKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OnNldEl0ZW1zKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OnJlbW92ZUl0ZW0pOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6Y2xlYXIpOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6d2FpdFVudGlsVGFza3NGaW5pc2hlZCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpzdXNwZW5kKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OnJlc3VtZSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpmaW5kU3RvcmFnZUFyZWEgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuaDoK
KyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VBcmVhOjpzZWN1cml0eU9y
aWdpbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQXJl
YTo6aWRlbnRpZmllcik6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdl
QXJlYTo6aGFzTGlzdGVuZXIpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6U3Rv
cmFnZUFyZWE6OmlzRXBoZW1lcmFsIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1h
bmFnZXI6OlN0b3JhZ2VBcmVhOjpzZXRXb3JrUXVldWUpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIubWVzc2FnZXMuaW46IFJlbW92ZWQuCisKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0LmNwcDog
QWRkZWQuIEl0IG1hbmFnZXMgU3RvcmFnZU1hbmFnZXJzIGJ5IHNlc3Npb24uCisgICAgICAgIChX
ZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpTdG9y
YWdlTWFuYWdlclNldDo6U3RvcmFnZU1hbmFnZXJTZXQpOgorICAgICAgICAoV2ViS2l0OjpTdG9y
YWdlTWFuYWdlclNldDo6flN0b3JhZ2VNYW5hZ2VyU2V0KToKKyAgICAgICAgKFdlYktpdDo6U3Rv
cmFnZU1hbmFnZXJTZXQ6OmFkZCk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0
OjpyZW1vdmUpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlclNldDo6YWRkQ29ubmVj
dGlvbik6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpyZW1vdmVDb25uZWN0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXJTZXQ6OndhaXRVbnRpbFRhc2tz
RmluaXNoZWQpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlclNldDo6c3VzcGVuZCk6
CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpyZXN1bWUpOgorICAgICAgICAo
V2ViS2l0OjpTdG9yYWdlTWFuYWdlclNldDo6Z2V0U2Vzc2lvblN0b3JhZ2VPcmlnaW5zKToKKyAg
ICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXJTZXQ6OmRlbGV0ZVNlc3Npb25TdG9yYWdlKToK
KyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXJTZXQ6OmRlbGV0ZVNlc3Npb25TdG9yYWdl
Rm9yT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpnZXRMb2Nh
bFN0b3JhZ2VPcmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXJTZXQ6OmRl
bGV0ZUxvY2FsU3RvcmFnZU1vZGlmaWVkU2luY2UpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdl
TWFuYWdlclNldDo6ZGVsZXRlTG9jYWxTdG9yYWdlRm9yT3JpZ2lucyk6CisgICAgICAgIChXZWJL
aXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpnZXRMb2NhbFN0b3JhZ2VPcmlnaW5EZXRhaWxzKToKKyAg
ICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXJTZXQ6OmNvbm5lY3RUb0xvY2FsU3RvcmFnZUFy
ZWEpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlclNldDo6Y29ubmVjdFRvVHJhbnNp
ZW50TG9jYWxTdG9yYWdlQXJlYSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0
Ojpjb25uZWN0VG9TZXNzaW9uU3RvcmFnZUFyZWEpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdl
TWFuYWdlclNldDo6ZGlzY29ubmVjdEZyb21TdG9yYWdlQXJlYSk6CisgICAgICAgIChXZWJLaXQ6
OlN0b3JhZ2VNYW5hZ2VyU2V0OjpnZXRWYWx1ZXMpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdl
TWFuYWdlclNldDo6c2V0SXRlbSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0
OjpyZW1vdmVJdGVtKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXJTZXQ6OmNsZWFy
KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXJTZXQ6OmNsb25lU2Vzc2lvblN0b3Jh
Z2VOYW1lc3BhY2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFn
ZU1hbmFnZXJTZXQuaDogQWRkZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFn
ZS9TdG9yYWdlTWFuYWdlclNldC5tZXNzYWdlcy5pbjogQWRkZWQuCisKKyAgICAgICAgKiBTaGFy
ZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuY3BwOiBjcmVhdGlvbiBwYXJhbWV0ZXJzIG9m
IFN0b3JhZ2VNYW5hZ2VyIGFyZSBtb3ZlZCB0byAKKyAgICAgICAgV2Vic2l0ZURhdGFTdG9yZVBh
cmFtZXRlcnMuCisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOjpl
bmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVy
czo6ZGVjb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM6
OnByaXZhdGVTZXNzaW9uUGFyYW1ldGVycyk6CisgICAgICAgICogU2hhcmVkL1dlYnNpdGVEYXRh
U3RvcmVQYXJhbWV0ZXJzLmg6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bv
b2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURh
dGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJz
aXRlRGF0YVN0b3JlOjpwYXJhbWV0ZXJzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OnBhcmFtZXRlcnMpOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZS5jcHA6IHNlc3Npb24gY2hhbmdlIG9mIHdlYiBzdG9yYWdlIGlzIGRvbmUgdmlhIAorICAgICAg
ICBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgaW5zdGVhZCBvZiBXZWJQcm9jZXNzIG5vdy4K
KyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6OnNldFByaXZhdGVCcm93c2luZ0VuYWJs
ZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3M6OmNyZWF0ZVdlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzOjpyZW1vdmVXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZW5zdXJl
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6
cmVnaXN0ZXJTdG9yYWdlQXJlYU1hcCk6IHdlYiBwcm9jZXNzIG9ubHkgaGF2ZSBvbmUgY29weSBv
ZiBTdG9yYWdlQXJlYSBmb3IgdGhlIHNhbWUgCisgICAgICAgIGlkZW50aWZpZXIuCisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3M6OnN0b3JhZ2VBcmVhTWFwIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzczo6ZW5hYmxlUHJpdmF0ZUJyb3dzaW5nRm9yVGVzdGluZyk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1wbDo6aW5jcmVtZW50QWNjZXNzQ291bnQpOgorICAgICAg
ICAoV2ViS2l0OjpTdG9yYWdlQXJlYUltcGw6OmRlY3JlbWVudEFjY2Vzc0NvdW50KToKKyAgICAg
ICAgKFdlYktpdDo6U3RvcmFnZUFyZWFJbXBsOjpwcmV3YXJtKTogRGVsZXRlZC4KKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmg6CisKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuY3BwOiBpZGVudGlmaWVyIG9mIFN0
b3JhZ2VBcmVhTWFwIGlzIHRoZSBzYW1lIGFzIGlkZW50aWZpZXIgb2YgCisgICAgICAgIFN0b3Jh
Z2VBcmVhIGl0IGNvbm5lY3RzIHRvLiBJZiB0aGUgaWRlbnRpZmllciBpcyAwLCBpdCBtZWFucyB0
aGUgU3RvcmFnZUFyZWFNYXAgaXMgZGlzY29ubmVjdGVkLiAKKyAgICAgICAgU3RvcmFnZUFyZWFN
YXAgbmVlZHMgdG8gYmUgY29ubmVjdGVkIHRvIGJlIGZ1bmN0aW9uYWwuCisgICAgICAgIChXZWJL
aXQ6OlN0b3JhZ2VBcmVhTWFwOjpTdG9yYWdlQXJlYU1hcCk6CisgICAgICAgIChXZWJLaXQ6OlN0
b3JhZ2VBcmVhTWFwOjp+U3RvcmFnZUFyZWFNYXApOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdl
QXJlYU1hcDo6c2V0SXRlbSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwOjpyZW1v
dmVJdGVtKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OmNsZWFyKToKKyAgICAg
ICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OnJlc2V0VmFsdWVzKToKKyAgICAgICAgKFdlYktp
dDo6U3RvcmFnZUFyZWFNYXA6OmxvYWRWYWx1ZXNJZk5lZWRlZCk6CisgICAgICAgIChXZWJLaXQ6
OlN0b3JhZ2VBcmVhTWFwOjpjbGVhckNhY2hlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFy
ZWFNYXA6OmFwcGx5Q2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OmRp
c3BhdGNoU3RvcmFnZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OmRp
c3BhdGNoU2Vzc2lvblN0b3JhZ2VFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVh
TWFwOjpkaXNwYXRjaExvY2FsU3RvcmFnZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFn
ZUFyZWFNYXA6OmNvbm5lY3QpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6ZGlz
Y29ubmVjdCk6CisgICAgICAgIChXZWJLaXQ6OmdlbmVyYXRlU3RvcmFnZU1hcElEKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OnByZXdhcm0pOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6ZGlkR2V0VmFsdWVzKTogRGVsZXRlZC4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuaDoKKyAgICAg
ICAgKCk6IERlbGV0ZWQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFn
ZUFyZWFNYXAubWVzc2FnZXMuaW46IHRoZXJlIGFyZSB0d28gc3luY2hyb25vdXMgbWVzc2FnZXMs
IG9uZSBmb3IgY29ubmVjdGlvbiBhbmQgCisgICAgICAgIG9uZSBmb3IgZ2V0dGluZyB2YWx1ZXMu
IFdlIG1heSBtZXJnZSB0aGVtIGludG8gb25lLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViU3Rv
cmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VO
YW1lc3BhY2VJbXBsOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChX
ZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2Up
OgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlVHJhbnNpZW50
TG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVzcGFj
ZUltcGw6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5h
bWVzcGFjZUltcGw6OmNvcHkpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSW1w
bDo6c2V0U2Vzc2lvbklERm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1l
c3BhY2VJbXBsOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOiBEZWxldGVk
LgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6
OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3Rv
cmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVRyYW5zaWVu
dExvY2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlN0b3JhZ2VOYW1l
c3BhY2VQcm92aWRlcjo6Y3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyLmg6CisKIDIwMTktMDgtMDIgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNp
YUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIFVwZGF0ZSBPcHRpb25zR1RLLmNt
YWtlIGFuZCBORVdTIGZvciAyLjI1LjQgcmVsZWFzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwppbmRleCA2
NjA5MGUyZGE4ZDZmMWQ0ZTE4OGJlYjE3OTc1YTcxMzZjYTg3OTg0Li40OTkwZWJkMjQxNzRhMzhl
ODE0MjgwYTc1MzY2MmY0MGMzYTRlNjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDMzIEBACisyMDE5LTA4LTAyICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisg
ICAgICAgIFNvbWUgaW1wcm92ZW1lbnRzIG9uIHdlYiBzdG9yYWdlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDAzNzMKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgY2hhbmdpbmcg
c2Vzc2lvbiBvZiB3ZWIgc3RvcmFnZSBpbiBsYXlvdXQgdGVzdHMuCisKKyAgICAgICAgKiBTdG9y
YWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1w
bDo6c2Vzc2lvbkNoYW5nZWQpOgorICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmg6
CisgICAgICAgICogU3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuY3BwOgorICAgICAgICAoV2ViS2l0
OjpTdG9yYWdlQXJlYVN5bmM6OnNjaGVkdWxlRmluYWxTeW5jKToKKyAgICAgICAgKiBTdG9yYWdl
L1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVz
cGFjZUltcGw6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktp
dDo6U3RvcmFnZU5hbWVzcGFjZUltcGw6OmdldE9yQ3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNl
KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUltcGw6OlN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUltcGw6OmNvcHkpOgor
ICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y2xvc2UpOgorICAgICAgICAo
V2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6c2V0U2Vzc2lvbklERm9yVGVzdGluZyk6Cisg
ICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVFcGhlbWVyYWxMb2Nh
bFN0b3JhZ2VOYW1lc3BhY2UpOiBEZWxldGVkLgorICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZU5h
bWVzcGFjZUltcGwuaDoKKyAgICAgICAgKiBTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92
aWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6
Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNpZW50
TG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOiBEZWxl
dGVkLgorICAgICAgICAqIFN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmg6CisK
IDIwMTktMDctMzEgIEtlaXRoIFJvbGxpbiAgPGtyb2xsaW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFVwZGF0ZSBXZWJLaXRMZWdhY3kgZm9yIFhDQnVpbGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
ZwppbmRleCBmNjdjYTBhY2M0YTEzOWZmYzg2MDM0NTUxNzJiYTVmYWEyNzY0ZGQ5Li43Y2Y5ZTAx
MjMyMzY3ZWZlODNjMWEyNjA0OWZjZmM3NzY5MmEwN2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTktMDgtMDIgIFNpaHVpIExpdSAgPHNpaHVpX2xp
dUBhcHBsZS5jb20+CisKKyAgICAgICAgU29tZSBpbXByb3ZlbWVudHMgb24gd2ViIHN0b3JhZ2UK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDM3Mwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViVmll
dy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9wcmVmZXJlbmNlc0NoYW5nZWQ6XSk6
CisKIDIwMTktMDgtMDEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9y
Zz4KIAogICAgICAgICBNb3ZlIEZvcm1EYXRhIHppcCBmaWxlIGdlbmVyYXRpb24gdG8gTmV0d29y
a1Byb2Nlc3MgYW5kIGVuYWJsZSBpdCBmb3IgYWxsIFdlYktpdCBjbGllbnRzIGZvciB1cGxvYWRp
bmcgZGlyZWN0b3JpZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNs
aWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKaW5kZXgg
YzQ1MGMwODcwYzBkYjkwMDJiOTA0YzdiNmNiY2U0Yzk2OTAyYzZkYy4uYWY0ZTg3ZTUyNGZiOTQ5
MmRhOWE2N2MzMGZjZGQ5MjI0YmFlOTEwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xp
ZW50cy5jcHAKQEAgLTM5NiwxMiArMzk2LDE0IEBAIGNsYXNzIEVtcHR5U3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyIGZpbmFsIDogcHVibGljIFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciB7CiAgICAg
c3RydWN0IEVtcHR5U3RvcmFnZU5hbWVzcGFjZSBmaW5hbCA6IHB1YmxpYyBTdG9yYWdlTmFtZXNw
YWNlIHsKICAgICAgICAgUmVmPFN0b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYShjb25zdCBTZWN1cml0
eU9yaWdpbkRhdGEmKSBmaW5hbCB7IHJldHVybiBhZG9wdFJlZigqbmV3IEVtcHR5U3RvcmFnZUFy
ZWEpOyB9CiAgICAgICAgIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjb3B5KFBhZ2UqKSBmaW5hbCB7
IHJldHVybiBhZG9wdFJlZigqbmV3IEVtcHR5U3RvcmFnZU5hbWVzcGFjZSk7IH0KKyAgICAgICAg
CisgICAgICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJuIFBBTDo6
U2Vzc2lvbklEOjplbXB0eVNlc3Npb25JRCgpOyB9CisgICAgICAgIHZvaWQgc2V0U2Vzc2lvbklE
Rm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCkgeyB9OwogICAgIH07CiAKICAgICBSZWY8U3RvcmFn
ZU5hbWVzcGFjZT4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoUGFnZSYsIHVuc2lnbmVk
KSBmaW5hbDsKLSAgICBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlTG9jYWxTdG9yYWdlTmFt
ZXNwYWNlKHVuc2lnbmVkKSBmaW5hbDsKLSAgICBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRl
RXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCkgZmluYWw7Ci0g
ICAgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVz
cGFjZShTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkKSBmaW5hbDsKKyAgICBSZWY8U3RvcmFnZU5h
bWVzcGFjZT4gY3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkLCBQQUw6OlNlc3Np
b25JRCkgZmluYWw7CisgICAgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVRyYW5zaWVudExv
Y2FsU3RvcmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkLCBQQUw6OlNlc3Np
b25JRCkgZmluYWw7CiB9OwogCiBjbGFzcyBFbXB0eVVzZXJDb250ZW50UHJvdmlkZXIgZmluYWwg
OiBwdWJsaWMgVXNlckNvbnRlbnRQcm92aWRlciB7CkBAIC01MjUsMTcgKzUyNywxMiBAQCBSZWY8
U3RvcmFnZU5hbWVzcGFjZT4gRW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVNl
c3Npb25TdG9yYWdlTmFtZXNwYQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEVtcHR5U3RvcmFn
ZU5hbWVzcGFjZSk7CiB9CiAKLVJlZjxTdG9yYWdlTmFtZXNwYWNlPiBFbXB0eVN0b3JhZ2VOYW1l
c3BhY2VQcm92aWRlcjo6Y3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkKQorUmVm
PFN0b3JhZ2VOYW1lc3BhY2U+IEVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVM
b2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQsIFBBTDo6U2Vzc2lvbklEKQogewogICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEVtcHR5U3RvcmFnZU5hbWVzcGFjZSk7CiB9CiAKLVJlZjxTdG9y
YWdlTmFtZXNwYWNlPiBFbXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlRXBoZW1l
cmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCkKLXsKLSAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBFbXB0eVN0b3JhZ2VOYW1lc3BhY2UpOwotfQotCi1SZWY8U3RvcmFnZU5h
bWVzcGFjZT4gRW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVRyYW5zaWVudExv
Y2FsU3RvcmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkKQorUmVmPFN0b3Jh
Z2VOYW1lc3BhY2U+IEVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVUcmFuc2ll
bnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoU2VjdXJpdHlPcmlnaW4mLCB1bnNpZ25lZCwgUEFMOjpT
ZXNzaW9uSUQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRW1wdHlTdG9yYWdlTmFtZXNw
YWNlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAppbmRleCA5NzU4MzI5YmE5MDljZDkxM2NhYjQ2
ODVkNzFhZTlkYTRmYzM1Y2E2Li43M2ZlZTA3ZDlhMTU0OTI1YTUxYTY3ZTI0YzUzNTE5ZTEzNzI2
NzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCkBAIC0xODksOCArMTg5LDYgQEAgUGFnZSogQ2hy
b21lOjpjcmVhdGVXaW5kb3coRnJhbWUmIGZyYW1lLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiBy
ZXF1ZXN0LCBjb25zdAogCiAgICAgaWYgKGF1dG8qIG9sZFNlc3Npb25TdG9yYWdlID0gbV9wYWdl
LnNlc3Npb25TdG9yYWdlKGZhbHNlKSkKICAgICAgICAgbmV3UGFnZS0+c2V0U2Vzc2lvblN0b3Jh
Z2Uob2xkU2Vzc2lvblN0b3JhZ2UtPmNvcHkobmV3UGFnZSkpOwotICAgIGlmIChhdXRvKiBvbGRF
cGhlbWVyYWxMb2NhbFN0b3JhZ2UgPSBtX3BhZ2UuZXBoZW1lcmFsTG9jYWxTdG9yYWdlKGZhbHNl
KSkKLSAgICAgICAgbmV3UGFnZS0+c2V0RXBoZW1lcmFsTG9jYWxTdG9yYWdlKG9sZEVwaGVtZXJh
bExvY2FsU3RvcmFnZS0+Y29weShuZXdQYWdlKSk7CiAKICAgICByZXR1cm4gbmV3UGFnZTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCA4YmJmZjhiYmE5NGJkMDAwMDdlNGVkYjg4
NDY1ODdkOTJiY2RlMjdkLi5iMTM2OTRhZDZiNTMxNDk4NzNhOTFjNzExOTRhZGFlZDA3ZTA2MGQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC00NDIsOCArNDQyLDcgQEAgdm9pZCBE
T01XaW5kb3c6OnByZXdhcm1Mb2NhbFN0b3JhZ2VJZk5lY2Vzc2FyeSgpCiAgICAgaWYgKCFsb2Nh
bFN0b3JhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChsb2NhbFN0b3JhZ2UtPnByZXdh
cm0oKSkKLSAgICAgICAgcGFnZS0+bWFpbkZyYW1lKCkuZGlkUHJld2FybUxvY2FsU3RvcmFnZSgp
OworICAgIHBhZ2UtPm1haW5GcmFtZSgpLmRpZFByZXdhcm1Mb2NhbFN0b3JhZ2UoKTsKIH0KIAog
RE9NV2luZG93Ojp+RE9NV2luZG93KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IGVkYTdjNWZhNWQ2
NDc5YmE3MTA5MDIwYjUyODMyY2UyNjFiY2Q3ZTkuLjlkMmU5NDdkYTk1ZDYzOGFjNzI3ZWExNTcz
OTM2ZTA5NzA4NTliM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMTUxMCwxOSArMTUxMCw2IEBA
IHZvaWQgUGFnZTo6c2V0U2Vzc2lvblN0b3JhZ2UoUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+JiYg
bmV3U3RvcmFnZSkKICAgICBtX3Nlc3Npb25TdG9yYWdlID0gV1RGTW92ZShuZXdTdG9yYWdlKTsK
IH0KIAotU3RvcmFnZU5hbWVzcGFjZSogUGFnZTo6ZXBoZW1lcmFsTG9jYWxTdG9yYWdlKGJvb2wg
b3B0aW9uYWxDcmVhdGUpCi17Ci0gICAgaWYgKCFtX2VwaGVtZXJhbExvY2FsU3RvcmFnZSAmJiBv
cHRpb25hbENyZWF0ZSkKLSAgICAgICAgbV9lcGhlbWVyYWxMb2NhbFN0b3JhZ2UgPSBtX3N0b3Jh
Z2VOYW1lc3BhY2VQcm92aWRlci0+Y3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNl
KCp0aGlzLCBtX3NldHRpbmdzLT5zZXNzaW9uU3RvcmFnZVF1b3RhKCkpOwotCi0gICAgcmV0dXJu
IG1fZXBoZW1lcmFsTG9jYWxTdG9yYWdlLmdldCgpOwotfQotCi12b2lkIFBhZ2U6OnNldEVwaGVt
ZXJhbExvY2FsU3RvcmFnZShSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4mJiBuZXdTdG9yYWdlKQot
ewotICAgIG1fZXBoZW1lcmFsTG9jYWxTdG9yYWdlID0gV1RGTW92ZShuZXdTdG9yYWdlKTsKLX0K
LQogYm9vbCBQYWdlOjpoYXNDdXN0b21IVE1MVG9rZW5pemVyVGltZURlbGF5KCkgY29uc3QKIHsK
ICAgICByZXR1cm4gbV9zZXR0aW5ncy0+bWF4UGFyc2VEdXJhdGlvbigpICE9IC0xOwpAQCAtMjUw
Nyw2ICsyNDk0LDkgQEAgdm9pZCBQYWdlOjpzZXRTZXNzaW9uSUQoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklEKQogICAgICAgICBtX2lkYkNvbm5lY3Rpb25Ub1NlcnZlciA9IG51bGxwdHI7CiAjZW5k
aWYKIAorICAgIGlmIChzZXNzaW9uSUQgIT0gbV9zZXNzaW9uSUQgJiYgbV9zZXNzaW9uU3RvcmFn
ZSkKKyAgICAgICAgbV9zZXNzaW9uU3RvcmFnZS0+c2V0U2Vzc2lvbklERm9yVGVzdGluZyhzZXNz
aW9uSUQpOworCiAgICAgYm9vbCBwcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQgPSAoc2Vzc2lv
bklELmlzRXBoZW1lcmFsKCkgIT0gbV9zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSk7CiAKICAgICBt
X3Nlc3Npb25JRCA9IHNlc3Npb25JRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggYzQ0MDIzNDQzYzg1NmRh
MjJiMGU0MTlmOGZjNWYyNjUyZjg2MmZlNy4uYTE4NDEyYTMzNzdlNDFkYzBkNjEzNWVmMTRmOWIx
ODljNmVkYWQxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTUwNyw5ICs1MDcsNiBAQCBwdWJsaWM6CiAg
ICAgU3RvcmFnZU5hbWVzcGFjZSogc2Vzc2lvblN0b3JhZ2UoYm9vbCBvcHRpb25hbENyZWF0ZSA9
IHRydWUpOwogICAgIHZvaWQgc2V0U2Vzc2lvblN0b3JhZ2UoUmVmUHRyPFN0b3JhZ2VOYW1lc3Bh
Y2U+JiYpOwogCi0gICAgU3RvcmFnZU5hbWVzcGFjZSogZXBoZW1lcmFsTG9jYWxTdG9yYWdlKGJv
b2wgb3B0aW9uYWxDcmVhdGUgPSB0cnVlKTsKLSAgICB2b2lkIHNldEVwaGVtZXJhbExvY2FsU3Rv
cmFnZShSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4mJik7Ci0KICAgICBib29sIGhhc0N1c3RvbUhU
TUxUb2tlbml6ZXJUaW1lRGVsYXkoKSBjb25zdDsKICAgICBkb3VibGUgY3VzdG9tSFRNTFRva2Vu
aXplclRpbWVEZWxheSgpIGNvbnN0OwogCkBAIC04NzcsNyArODc0LDYgQEAgcHJpdmF0ZToKICAg
ICBib29sIG1fY2FuU3RhcnRNZWRpYSB7IHRydWUgfTsKIAogICAgIFJlZlB0cjxTdG9yYWdlTmFt
ZXNwYWNlPiBtX3Nlc3Npb25TdG9yYWdlOwotICAgIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBt
X2VwaGVtZXJhbExvY2FsU3RvcmFnZTsKIAogICAgIFRpbWVyVGhyb3R0bGluZ1N0YXRlIG1fdGlt
ZXJUaHJvdHRsaW5nU3RhdGUgeyBUaW1lclRocm90dGxpbmdTdGF0ZTo6RGlzYWJsZWQgfTsKICAg
ICBNb25vdG9uaWNUaW1lIG1fdGltZXJUaHJvdHRsaW5nU3RhdGVMYXN0Q2hhbmdlZFRpbWU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlR3JvdXAuaAppbmRleCA2YmFmMGExYWIxM2M5ZTJmMmVmNTJmMmMxZTQwMWYz
MjUwY2ZiMDlmLi5kNDFlYzQzOTBlZDJlNzk0NmZjZWEyN2Q3MWM1NzNjOTYwZDhmNDdlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZUdyb3VwLmgKQEAgLTU5LDYgKzU5LDcgQEAgcHVibGljOgogI2VuZGlmCiAK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVuYWJsZUxlZ2FjeVByaXZhdGVCcm93c2luZ0ZvclRl
c3RpbmcoYm9vbCk7CisgICAgYm9vbCBpc0xlZ2FjeVByaXZhdGVCcm93c2luZ0VuYWJsZWRGb3JU
ZXN0aW5nKCkgeyByZXR1cm4gbV9pc0xlZ2FjeVByaXZhdGVCcm93c2luZ0VuYWJsZWRGb3JUZXN0
aW5nOyB9CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fbmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0
b3JhZ2UuY3BwCmluZGV4IDkxOTdiNjBlN2U2YTE1NWM0NDY4ZDUyOTRmYWIyNTBjODY3OTg3ZmYu
LjQ3ZGJiMTdkOWFlNmQyNjljMTQ3MDNhMWE2MmE0OTJlZTY2ZGY0MTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9TdG9yYWdlLmNwcApAQCAtOTcsMTEgKzk3LDYgQEAgRXhjZXB0aW9uT3I8dm9pZD4gU3Rv
cmFnZTo6cmVtb3ZlSXRlbShjb25zdCBTdHJpbmcmIGtleSkKICAgICByZXR1cm4geyB9OwogfQog
Ci1ib29sIFN0b3JhZ2U6OnByZXdhcm0oKQotewotICAgIHJldHVybiBtX3N0b3JhZ2VBcmVhLT5w
cmV3YXJtKCk7Ci19Ci0KIEV4Y2VwdGlvbk9yPHZvaWQ+IFN0b3JhZ2U6OmNsZWFyKCkKIHsKICAg
ICBhdXRvKiBmcmFtZSA9IHRoaXMtPmZyYW1lKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL1N0b3JhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5oCmlu
ZGV4IDUyMTVmNDdjMzc3ZmY3NTY0ZGFhMWU0NmVlZjc5NDRkMzA4NWY2MTEuLjI4YWE5YWIxNGUx
YjIyYWNjNWJjNWI0ZjZlMWM4NGMxYTk3NGY2NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvU3RvcmFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5o
CkBAIC00Niw3ICs0Niw2IEBAIHB1YmxpYzoKICAgICBFeGNlcHRpb25Pcjx2b2lkPiByZW1vdmVJ
dGVtKGNvbnN0IFN0cmluZyYga2V5KTsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBjbGVhcigpOwog
ICAgIGJvb2wgY29udGFpbnMoY29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0OwotICAgIGJvb2wgcHJl
d2FybSgpOwogCiAgICAgLy8gQmluZGluZ3Mgc3VwcG9ydCBmdW5jdGlvbnMuCiAgICAgYm9vbCBp
c1N1cHBvcnRlZFByb3BlcnR5TmFtZShjb25zdCBTdHJpbmcmKSBjb25zdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWEuaCBiL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvU3RvcmFnZUFyZWEuaAppbmRleCBmMzljY2Q3ZTZkYWNkZmY1NmFlN2RmNjYwZGQ5N2I1
ZmY1MjY0NmQ0Li45NzMyYjY2YzdhZjg1NWFmOGVmM2ZhNjdjYzBjYWQ5NDkwYjg2NDAwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYS5oCkBAIC01OCw3ICs1OCw2IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgaW5jcmVtZW50QWNjZXNzQ291bnQoKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgZGVjcmVtZW50QWNjZXNzQ291bnQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VE
YXRhYmFzZUlmSWRsZSgpIHsgfQotICAgIHZpcnR1YWwgYm9vbCBwcmV3YXJtKCkgeyByZXR1cm4g
ZmFsc2U7IH0KIAogICAgIHZpcnR1YWwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0
eU9yaWdpbigpIGNvbnN0ID0gMDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL1N0b3JhZ2VOYW1lc3BhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5h
bWVzcGFjZS5oCmluZGV4IDU1YzY2MjgyYjhiZDY4YmMwNDc4MmRmNDdjYWRlZDBjMjEyOTRiNDgu
Ljc1YjhiMDVhYzEwNGJhYjM4YjVhMjQzOWMzNGM2OTFiMzZkNzBiYTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZS5oCkBAIC0yOCw2ICsyOCwxMCBAQAogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAorbmFtZXNw
YWNlIFBBTCB7CitjbGFzcyBTZXNzaW9uSUQ7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgUGFnZTsKQEAgLTM5LDYgKzQzLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflN0b3Jh
Z2VOYW1lc3BhY2UoKSA9IGRlZmF1bHQ7CiAgICAgdmlydHVhbCBSZWY8U3RvcmFnZUFyZWE+IHN0
b3JhZ2VBcmVhKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYpID0gMDsKICAgICB2aXJ0dWFsIFJl
ZjxTdG9yYWdlTmFtZXNwYWNlPiBjb3B5KFBhZ2UqIG5ld1BhZ2UpID0gMDsKKworICAgIHZpcnR1
YWwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBzZXRTZXNzaW9uSURGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEKSA9IDA7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0
b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3Jh
Z2VOYW1lc3BhY2VQcm92aWRlci5jcHAKaW5kZXggNTkzOWFmZmQzZWIyZjhlZWQ0NmJmNjJiYWI0
YjE1YWViNWU5NWVkZi4uNmQxMDRlYmVmZWI4MzAzYTlhOGEwNzhmOWU1OWU2MGJiZWRkZmYxYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyLmNwcApAQCAtNjYsMzYgKzY2LDQyIEBAIFJlZjxTdG9yYWdlQXJlYT4gU3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyOjpsb2NhbFN0b3JhZ2VBcmVhKERvY3VtZW50JiBkb2N1bWVudCkKICAgICAv
LyBzbyB0aGUgRG9jdW1lbnQgaGFkIGJldHRlciBzdGlsbCBhY3R1YWxseSBoYXZlIGEgUGFnZS4K
ICAgICBBU1NFUlQoZG9jdW1lbnQucGFnZSgpKTsKIAotICAgIGJvb2wgZXBoZW1lcmFsID0gZG9j
dW1lbnQucGFnZSgpLT51c2VzRXBoZW1lcmFsU2Vzc2lvbigpOwogICAgIGJvb2wgdHJhbnNpZW50
ID0gIWRvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCkuY2FuQWNjZXNzTG9jYWxTdG9yYWdlKCZkb2N1
bWVudC50b3BPcmlnaW4oKSk7CiAKICAgICBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gc3RvcmFn
ZU5hbWVzcGFjZTsKIAogICAgIGlmICh0cmFuc2llbnQpCi0gICAgICAgIHN0b3JhZ2VOYW1lc3Bh
Y2UgPSAmdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKGRvY3VtZW50LnRvcE9yaWdpbigp
KTsKLSAgICBlbHNlIGlmIChlcGhlbWVyYWwpCi0gICAgICAgIHN0b3JhZ2VOYW1lc3BhY2UgPSBk
b2N1bWVudC5wYWdlKCktPmVwaGVtZXJhbExvY2FsU3RvcmFnZSgpOworICAgICAgICBzdG9yYWdl
TmFtZXNwYWNlID0gJnRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShkb2N1bWVudC50b3BP
cmlnaW4oKSwgZG9jdW1lbnQucGFnZSgpLT5zZXNzaW9uSUQoKSk7CiAgICAgZWxzZQotICAgICAg
ICBzdG9yYWdlTmFtZXNwYWNlID0gJmxvY2FsU3RvcmFnZU5hbWVzcGFjZSgpOworICAgICAgICBz
dG9yYWdlTmFtZXNwYWNlID0gJmxvY2FsU3RvcmFnZU5hbWVzcGFjZShkb2N1bWVudC5wYWdlKCkt
PnNlc3Npb25JRCgpKTsKIAogICAgIHJldHVybiBzdG9yYWdlTmFtZXNwYWNlLT5zdG9yYWdlQXJl
YShkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSk7CiB9CiAKLVN0b3JhZ2VOYW1lc3Bh
Y2UmIFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6bG9jYWxTdG9yYWdlTmFtZXNwYWNlKCkKK1N0
b3JhZ2VOYW1lc3BhY2UmIFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6bG9jYWxTdG9yYWdlTmFt
ZXNwYWNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICBpZiAoIW1fbG9jYWxTdG9y
YWdlTmFtZXNwYWNlKQotICAgICAgICBtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZSA9IGNyZWF0ZUxv
Y2FsU3RvcmFnZU5hbWVzcGFjZShsb2NhbFN0b3JhZ2VEYXRhYmFzZVF1b3RhSW5CeXRlcyk7Cisg
ICAgICAgIG1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlID0gY3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNw
YWNlKGxvY2FsU3RvcmFnZURhdGFiYXNlUXVvdGFJbkJ5dGVzLCBzZXNzaW9uSUQpOwogCisgICAg
QVNTRVJUKG1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlLT5zZXNzaW9uSUQoKSA9PSBzZXNzaW9uSUQp
OwogICAgIHJldHVybiAqbV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2U7CiB9CiAKLVN0b3JhZ2VOYW1l
c3BhY2UmIFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6dHJhbnNpZW50TG9jYWxTdG9yYWdlTmFt
ZXNwYWNlKFNlY3VyaXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbikKK1N0b3JhZ2VOYW1lc3BhY2Um
IFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6dHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNl
KFNlY3VyaXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
KQogewogICAgIGF1dG8mIHNsb3QgPSBtX3RyYW5zaWVudExvY2FsU3RvcmFnZU1hcC5hZGQoJnNl
Y3VyaXR5T3JpZ2luLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKCFzbG90KQot
ICAgICAgICBzbG90ID0gY3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKHNlY3Vy
aXR5T3JpZ2luLCBsb2NhbFN0b3JhZ2VEYXRhYmFzZVF1b3RhSW5CeXRlcyk7CisgICAgICAgIHNs
b3QgPSBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2Uoc2VjdXJpdHlPcmlnaW4s
IGxvY2FsU3RvcmFnZURhdGFiYXNlUXVvdGFJbkJ5dGVzLCBzZXNzaW9uSUQpOwogCisgICAgQVNT
RVJUKHNsb3QtPnNlc3Npb25JRCgpID09IHNlc3Npb25JRCk7CiAgICAgcmV0dXJuICpzbG90Owog
fQogCit2b2lkIFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6ZW5hYmxlTGVnYWN5UHJpdmF0ZUJy
b3dzaW5nRm9yVGVzdGluZyhib29sIGVuYWJsZWQpCit7CisgICAgYXV0byBuZXdTZXNzaW9uSUQg
PSBlbmFibGVkID8gUEFMOjpTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSA6IFBB
TDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCk7CisgICAgaWYgKG1fbG9jYWxTdG9yYWdl
TmFtZXNwYWNlICYmIG5ld1Nlc3Npb25JRCAhPSBtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZS0+c2Vz
c2lvbklEKCkpCisgICAgICAgIG1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlLT5zZXRTZXNzaW9uSURG
b3JUZXN0aW5nKG5ld1Nlc3Npb25JRCk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oCmluZGV4IGRkN2Y5YTQ2YmQ4NDc5MjQ5
Yzc0ZDJhNGMyMjQ1Mjk2NGU2N2FlY2QuLjY3NTE1OTgzZWNjMDFkNDg4NDA1ZDliNWZlYThjOTA1
MWMwYjU0OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNw
YWNlUHJvdmlkZXIuaApAQCAtMzEsNiArMzEsMTAgQEAKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKK25hbWVzcGFjZSBQQUwgeworY2xhc3Mg
U2Vzc2lvbklEOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50OwpA
QCAtNDUsMjIgKzQ5LDIzIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5T
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIoKTsKIAogICAgIHZpcnR1YWwgUmVmPFN0b3JhZ2VOYW1l
c3BhY2U+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCBxdW90
YSkgPSAwOwotICAgIHZpcnR1YWwgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUVwaGVtZXJh
bExvY2FsU3RvcmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQgcXVvdGEpID0gMDsKIAogICAg
IFJlZjxTdG9yYWdlQXJlYT4gbG9jYWxTdG9yYWdlQXJlYShEb2N1bWVudCYpOwogCiAgICAgdm9p
ZCBhZGRQYWdlKFBhZ2UmKTsKICAgICB2b2lkIHJlbW92ZVBhZ2UoUGFnZSYpOwogCisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBlbmFibGVMZWdhY3lQcml2YXRlQnJvd3NpbmdGb3JUZXN0aW5nKGJv
b2wgZW5hYmxlZCk7CisKIHByb3RlY3RlZDoKICAgICBTdG9yYWdlTmFtZXNwYWNlKiBvcHRpb25h
bExvY2FsU3RvcmFnZU5hbWVzcGFjZSgpIHsgcmV0dXJuIG1fbG9jYWxTdG9yYWdlTmFtZXNwYWNl
LmdldCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgU3RvcmFnZU5hbWVzcGFjZSYgbG9jYWxTdG9yYWdl
TmFtZXNwYWNlKCk7Ci0gICAgU3RvcmFnZU5hbWVzcGFjZSYgdHJhbnNpZW50TG9jYWxTdG9yYWdl
TmFtZXNwYWNlKFNlY3VyaXR5T3JpZ2luJik7CisgICAgU3RvcmFnZU5hbWVzcGFjZSYgbG9jYWxT
dG9yYWdlTmFtZXNwYWNlKFBBTDo6U2Vzc2lvbklEKTsKKyAgICBTdG9yYWdlTmFtZXNwYWNlJiB0
cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoU2VjdXJpdHlPcmlnaW4mLCBQQUw6OlNlc3Np
b25JRCk7CiAKLSAgICB2aXJ0dWFsIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEpID0gMDsKLSAgICB2aXJ0dWFsIFJlZjxTdG9y
YWdlTmFtZXNwYWNlPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoU2VjdXJp
dHlPcmlnaW4mLCB1bnNpZ25lZCBxdW90YSkgPSAwOworICAgIHZpcnR1YWwgUmVmPFN0b3JhZ2VO
YW1lc3BhY2U+IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSwgUEFM
OjpTZXNzaW9uSUQpID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVh
dGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoU2VjdXJpdHlPcmlnaW4mLCB1bnNpZ25l
ZCBxdW90YSwgUEFMOjpTZXNzaW9uSUQpID0gMDsKIAogICAgIEhhc2hTZXQ8UGFnZSo+IG1fcGFn
ZXM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZVR5cGUuaCBi
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZVR5cGUuaAppbmRleCA1ODEzM2Y4OWNjYTcx
ZGMzNTBlZjcyODVhNzBhNzMwYTI5NjJhNmUyLi5mZTcwMDI1N2JhY2I0OWFmZGRmZjQ1NjQyYTYz
ZDQyOGQ3NDBmODljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VU
eXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlVHlwZS5oCkBAIC0zMCwx
MyArMzAsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogZW51bSBjbGFzcyBTdG9yYWdlVHlwZSB7
CiAgICAgU2Vzc2lvbiwKICAgICBMb2NhbCwKLSAgICBFcGhlbWVyYWxMb2NhbCwKICAgICBUcmFu
c2llbnRMb2NhbCwKIH07CiAKIGlubGluZSBib29sIGlzTG9jYWxTdG9yYWdlKFN0b3JhZ2VUeXBl
IHN0b3JhZ2VUeXBlKQogewotICAgIHJldHVybiBzdG9yYWdlVHlwZSA9PSBTdG9yYWdlVHlwZTo6
TG9jYWwgfHwgc3RvcmFnZVR5cGUgPT0gU3RvcmFnZVR5cGU6OlRyYW5zaWVudExvY2FsIHx8IHN0
b3JhZ2VUeXBlID09IFN0b3JhZ2VUeXBlOjpFcGhlbWVyYWxMb2NhbDsKKyAgICByZXR1cm4gc3Rv
cmFnZVR5cGUgPT0gU3RvcmFnZVR5cGU6OkxvY2FsIHx8IHN0b3JhZ2VUeXBlID09IFN0b3JhZ2VU
eXBlOjpUcmFuc2llbnRMb2NhbDsKIH0KIAogaW5saW5lIGJvb2wgaXNQZXJzaXN0ZW50TG9jYWxT
dG9yYWdlKFN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKaW5kZXggNmY3
OWM4NjQ3YTYxMmRjMDRhMDJhYWM4MjNkNzQ5NTg0NGQ0YzkyMS4uZDg4YWE4M2IyYTU0ZmYyYTg0
MmEyYTVmYzU0NmQ4NzE0ODU1MmFiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DTWFrZUxp
c3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CkBAIC0xMTgsNyArMTE4
LDcgQEAgc2V0KFdlYktpdF9NRVNTQUdFU19JTl9GSUxFUwogICAgIE5ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAgICAgTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVz
c2FnZXMuaW4KIAotICAgIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIu
bWVzc2FnZXMuaW4KKyAgICBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2Vy
U2V0Lm1lc3NhZ2VzLmluCiAKICAgICBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VF
bmdpbmVDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
RGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNv
dXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCAwZmI4NDIzYjVjY2NmN2QyNjMzOTQyNWNkN2E3
M2Y0YjJjMGQyZTg5Li5lZWVmMzAyYmM0ZDczMDcwODhjNDQ5YTI3YzdhNDI3YTA0YjAxZWY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QK
KysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC0y
Niw2ICsyNiw3IEBAICQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlckZldGNoVGFzay5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4K
ICQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJv
Y2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElS
KS9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0Lm1lc3NhZ2VzLmlu
CiAkKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVD
b25uZWN0aW9uLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9tYWMv
Y29tLmFwcGxlLldlYktpdC5OZXR3b3JrUHJvY2Vzcy5zYi5pbgogJChQUk9KRUNUX0RJUikvTmV0
d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIubWVzc2FnZXMuaW4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9T
b3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IGZlMGE2
YzAwNDAyYzUzNTU0MDU0NTE0OTFkNGQ4ZGY3NDQ3M2M3OTMuLjM1Y2RjNTJhMjBmNmQ3YjcyZjM1
ZmZiODNmYmIyY2NlZDExODhhZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNv
dXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNl
cy1vdXRwdXQueGNmaWxlbGlzdApAQCAtOTAsNiArOTAsOCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9TdG9yYWdlQXJlYU1hcE1lc3NhZ2VSZWNlaXZlci5j
cHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1N0b3JhZ2VB
cmVhTWFwTWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YktpdDIvU3RvcmFnZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9TdG9yYWdlTWFuYWdlck1lc3NhZ2VzLmgKKyQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1N0b3JhZ2VNYW5hZ2Vy
U2V0TWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvU3RvcmFnZU1hbmFnZXJTZXRNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9UZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHlN
ZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi9UZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHlNZXNzYWdlcy5oCiAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdl
ck1lc3NhZ2VSZWNlaXZlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNv
dXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA1Mzkz
YzViZDdmMDk3OTQ1MDAyZjEwMzIyZWZjZTA1MzE2MzJjM2ZmLi45ZGU3MDQyNjZhZmVlNTEzNmU2
NWU4NDc4MWI1YTAyNTI1MTU3YWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRT
b3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0x
MzYsNyArMTM2LDcgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAgICAgU2VydmljZVdvcmtlckZl
dGNoVGFzayBcCiAgICAgU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlciBcCiAgICAgU3RvcmFn
ZUFyZWFNYXAgXAotICAgIFN0b3JhZ2VNYW5hZ2VyIFwKKyAgICBTdG9yYWdlTWFuYWdlclNldCBc
CiAgICAgVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5IFwKICAgICBVc2VyTWVkaWFDYXB0dXJl
TWFuYWdlciBcCiAgICAgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eSBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwCmluZGV4IDliMWI5Yjg2MDQzOGQ5YjZhM2YxMjY4OTE0NjJiMzM2YmM1
OWZjNGQuLmIyNmY2ZjBhZWE1NDMwZDEwODQyZDljMjQ3MDM3YmI3ZjQwNDZkZjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC00OSw3ICs0OSw2IEBACiAjaW5jbHVkZSAiUGluZ0xv
YWQuaCIKICNpbmNsdWRlICJQcmVjb25uZWN0VGFzay5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2tNZXNzYWdlcy5oIgotI2luY2x1ZGUgIlN0b3JhZ2VNYW5hZ2VyLmgiCiAjaW5j
bHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViRXJyb3JzLmgiCiAj
aW5jbHVkZSAiV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50LmgiCkBAIC0yOTksNyArMjk4LDcgQEAg
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uKQogICAgIC8vIHJvb3QgYWN0aXZpdHkgdHJhY2tlcnMuCiAgICAgc3Rv
cEFsbE5ldHdvcmtBY3Rpdml0eVRyYWNraW5nKCk7CiAKLSAgICBtX25ldHdvcmtQcm9jZXNzLT53
ZWJQcm9jZXNzV2FzRGlzY29ubmVjdGVkKGNvbm5lY3Rpb24pOworICAgIG1fbmV0d29ya1Byb2Nl
c3MtPmNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NDbG9zZWQoY29ubmVjdGlvbik7CiAKICAgICBtX25l
dHdvcmtQcm9jZXNzLT5uZXR3b3JrQmxvYlJlZ2lzdHJ5KCkuY29ubmVjdGlvblRvV2ViUHJvY2Vz
c0RpZENsb3NlKCp0aGlzKTsKICAgICBtX25ldHdvcmtQcm9jZXNzLT5yZW1vdmVOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2VzcygqdGhpcyk7CkBAIC04OTEsMTkgKzg5MCw0IEBAIHZvaWQgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbihQ
QUw6OlNlc3Npb25JRCBzCiB9CiAjZW5kaWYKIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6d2ViUGFnZVdhc0FkZGVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUGFnZUlk
ZW50aWZpZXIgcGFnZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBvbGRQYWdlSUQpCi17Ci0g
ICAgbV9uZXR3b3JrUHJvY2Vzcy0+d2ViUGFnZVdhc0FkZGVkKG1fY29ubmVjdGlvbi5nZXQoKSwg
c2Vzc2lvbklELCBwYWdlSUQsIG9sZFBhZ2VJRCk7Ci19Ci0KLXZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OndlYlBhZ2VXYXNSZW1vdmVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQotewotICAgIG1fbmV0d29ya1Byb2Nlc3MtPndlYlBh
Z2VXYXNSZW1vdmVkKG1fY29ubmVjdGlvbi5nZXQoKSwgc2Vzc2lvbklELCBwYWdlSUQpOwotfQot
Ci12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp3ZWJQcm9jZXNzU2Vzc2lvbkNo
YW5nZWQoUEFMOjpTZXNzaW9uSUQgbmV3U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8UGFnZUlkZW50
aWZpZXI+JiBwYWdlcykKLXsKLSAgICBtX25ldHdvcmtQcm9jZXNzLT53ZWJQcm9jZXNzU2Vzc2lv
bkNoYW5nZWQobV9jb25uZWN0aW9uLmdldCgpLCBuZXdTZXNzaW9uSUQsIHBhZ2VzKTsKLX0KLQog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggZDdiMmYx
YjYzYmM3YjA0ZmUwMzBlMDM2NWUyMTM2Zjc1YWI0OGNlNi4uNTYxMmVmZDFhY2YyNjlhZTE5MmVi
OTQ4Y2U0Yjk2ZDVmODQ0Nzc4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtMTQyLDEw
ICsxNDIsNiBAQCBwdWJsaWM6CiAgICAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZp
bGVSZWZlcmVuY2U+PiBmaWxlc0luQmxvYihjb25zdCBVUkwmKTsKICAgICBWZWN0b3I8UmVmUHRy
PFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+IHJlc29sdmVCbG9iUmVmZXJlbmNlcyhj
b25zdCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYpOwogCi0gICAgdm9pZCB3ZWJQYWdl
V2FzQWRkZWQoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciBvbGRQYWdlSUQpOwotICAgIHZvaWQgd2ViUGFnZVdhc1JlbW92ZWQo
UEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKLSAgICB2b2lkIHdlYlBy
b2Nlc3NTZXNzaW9uQ2hhbmdlZChQQUw6OlNlc3Npb25JRCBuZXdTZXNzaW9uSUQsIGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4mIHBhZ2VzKTsKLQogICAgIHZvaWQgcmVtb3Zl
U29ja2V0Q2hhbm5lbCh1aW50NjRfdCBpZGVudGlmaWVyKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGZhMmMzMWE0MTNhZjYyMTk0
OTNjZDRjZWEyYmM3YzRhZmE5MjA1OTAuLjc1ZTI0ZGRhOGUzODQ0Y2U3OGU2MWQzMmM4OTkwNjk5
NjNlYjY5MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpA
QCAtODYsOCArODYsNCBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyBMZWdhY3lSZWNlaXZlciB7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIEVzdGFi
bGlzaFNXU2VydmVyQ29ubmVjdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+IChXZWJD
b3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIHNlcnZlckNvbm5lY3Rpb25JZGVudGlm
aWVyKSBTeW5jaHJvbm91cwogI2VuZGlmCi0KLSAgICBXZWJQYWdlV2FzQWRkZWQoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIG9sZFBhZ2VJRCkKLSAgICBXZWJQYWdlV2FzUmVtb3ZlZChQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKLSAgICBX
ZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQoUEFMOjpTZXNzaW9uSUQgbmV3U2Vzc2lvbklELCBWZWN0
b3I8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VzKQogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCBhY2Q5NTUxYzdkMGU0Y2Nm
Yzk1Y2IwZGRmODdlNGY2OGMwZDY3N2RmLi4yN2QyNzNhNGMyNDFlNTE1NTcyNjhkMTkzMmFmMTky
NzU0ZDk3MzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmNwcApAQCAtNTMsOCArNTMsNyBAQAogI2luY2x1ZGUgIlNob3VsZEdyYW5kZmF0aGVy
U3RhdGlzdGljcy5oIgogI2luY2x1ZGUgIlN0YXRpc3RpY3NEYXRhLmgiCiAjaW5jbHVkZSAiU3Rv
cmFnZUFjY2Vzc1N0YXR1cy5oIgotI2luY2x1ZGUgIlN0b3JhZ2VNYW5hZ2VyLmgiCi0jaW5jbHVk
ZSAiU3RvcmFnZU1hbmFnZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlN0b3JhZ2VNYW5hZ2VyU2V0
LmgiCiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlci5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94
eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2xNZXNzYWdlcy5oIgpAQCAtMTMz
LDYgKzEzMiw3IEBAIHN0YXRpYyB2b2lkIGNhbGxFeGl0U29vbihJUEM6OkNvbm5lY3Rpb24qKQog
CiBOZXR3b3JrUHJvY2Vzczo6TmV0d29ya1Byb2Nlc3MoQXV4aWxpYXJ5UHJvY2Vzc0luaXRpYWxp
emF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgOiBtX2Rvd25sb2FkTWFuYWdlcigq
dGhpcykKKyAgICAsIG1fc3RvcmFnZU1hbmFnZXJTZXQoU3RvcmFnZU1hbmFnZXJTZXQ6OmNyZWF0
ZSgpKQogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCiAgICAgLCBtX25ldHdvcmtDb250
ZW50UnVsZUxpc3RNYW5hZ2VyKCp0aGlzKQogI2VuZGlmCkBAIC0xNzMsNiArMTczLDggQEAgTmV0
d29ya1Byb2Nlc3M6On5OZXR3b3JrUHJvY2VzcygpCiAgICAgICAgIGZvciAoYXV0byYgY2FsbGJh
Y2sgOiBjYWxsYmFja3MpCiAgICAgICAgICAgICBjYWxsYmFjayhTdHJpbmcgeyB9KTsKICAgICB9
CisKKyAgICBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT53YWl0VW50aWxUYXNrc0ZpbmlzaGVkKCk7CiB9
CiAKIEF1dGhlbnRpY2F0aW9uTWFuYWdlciYgTmV0d29ya1Byb2Nlc3M6OmF1dGhlbnRpY2F0aW9u
TWFuYWdlcigpCkBAIC0zMTgsNiArMzIwLDEwIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmluaXRp
YWxpemVOZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYmCiAg
ICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KHBhcmFtZXRlcnMuZGVmYXVs
dERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogCiAgICAgYXV0byBzZXNzaW9u
SUQgPSBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9u
UGFyYW1ldGVycy5zZXNzaW9uSUQ7CisgICAgCisgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3Vt
ZVBlcm1hbmVudGx5KHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubG9jYWxT
dG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBtX3N0b3JhZ2VNYW5hZ2VyU2V0
LT5hZGQoc2Vzc2lvbklELCBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLmxv
Y2FsU3RvcmFnZURpcmVjdG9yeSk7CisKICAgICBzZXRTZXNzaW9uKHNlc3Npb25JRCwgTmV0d29y
a1Nlc3Npb246OmNyZWF0ZSgqdGhpcywgV1RGTW92ZShwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3Rv
cmVQYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycykpKTsKIAogI2lmIEVOQUJMRShJ
TkRFWEVEX0RBVEFCQVNFKQpAQCAtNDQ3LDYgKzQ1Myw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKGJvb2wgaXNTZXJ2aWNlV29ya2Vy
UHJvCiAgICAgVU5VU0VEX1BBUkFNKGlzU2VydmljZVdvcmtlclByb2Nlc3MpOwogICAgIFVOVVNF
RF9QQVJBTShyZWdpc3RyYWJsZURvbWFpbik7CiAjZW5kaWYKKworICAgIG1fc3RvcmFnZU1hbmFn
ZXJTZXQtPmFkZENvbm5lY3Rpb24obV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMubGFzdCgpLT5jb25u
ZWN0aW9uKCkpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVhckNhY2hlZENyZWRlbnRp
YWxzKCkKQEAgLTQ3NSw2ICs0ODMsOSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjphZGRXZWJzaXRl
RGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycwogICAgICAg
ICBhZGRTZXJ2aWNlV29ya2VyU2Vzc2lvbihwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1l
dGVycy5zZXNzaW9uSUQsIHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVj
dG9yeSwgcGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5RXh0ZW5z
aW9uSGFuZGxlKTsKICNlbmRpZgogCisgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1h
bmVudGx5KHBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsK
KyAgICBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5hZGQocGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBh
cmFtZXRlcnMuc2Vzc2lvbklELCBwYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeSk7CisK
ICAgICBpbml0aWFsaXplU3RvcmFnZVF1b3RhKHBhcmFtZXRlcnMpOwogCiAgICAgUmVtb3RlTmV0
d29ya2luZ0NvbnRleHQ6OmVuc3VyZVdlYnNpdGVEYXRhU3RvcmVTZXNzaW9uKCp0aGlzLCBXVEZN
b3ZlKHBhcmFtZXRlcnMpKTsKQEAgLTYxNiw2ICs2MjcsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
OjpkZXN0cm95U2Vzc2lvbihjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklEKQogI2VuZGlm
CiAKICAgICBtX3N0b3JhZ2VRdW90YU1hbmFnZXJzLnJlbW92ZShzZXNzaW9uSUQpOworCisgICAg
bV9zdG9yYWdlTWFuYWdlclNldC0+cmVtb3ZlKHNlc3Npb25JRCk7CiB9CiAKICNpZiBFTkFCTEUo
UkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQpAQCAtMTA0OCwxNCArMTA2MSwxMiBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpjbGVhclVzZXJJbnRlcmFjdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFJlZ2lzdAogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpoYXNMb2NhbFN0b3JhZ2Uo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWlu
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewot
ICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAg
ICAgICBzZXNzaW9uLT5zdG9yYWdlTWFuYWdlcigpLmdldExvY2FsU3RvcmFnZU9yaWdpbnMoW2Rv
bWFpbiwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0
byYmIG9yaWdpbnMpIG11dGFibGUgewotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RG
OjphbnlPZihvcmlnaW5zLCBbJmRvbWFpbl0oYXV0byYgb3JpZ2luKSB7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIGRvbWFpbi5tYXRjaGVzKG9yaWdpbik7Ci0gICAgICAgICAgICB9KSk7Ci0gICAg
ICAgIH0pOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIG1fc3RvcmFnZU1hbmFnZXJTZXQt
PmdldExvY2FsU3RvcmFnZU9yaWdpbnMoc2Vzc2lvbklELCBbZG9tYWluLCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvJiYgb3JpZ2lucykgbXV0YWJs
ZSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6YW55T2Yob3JpZ2lucywgWyZkb21h
aW5dKGF1dG8mIG9yaWdpbikgeworICAgICAgICAgICAgcmV0dXJuIGRvbWFpbi5tYXRjaGVzKG9y
aWdpbik7CisgICAgICAgIH0pKTsKKyAgICB9KTsKKwogICAgIGNvbXBsZXRpb25IYW5kbGVyKGZh
bHNlKTsKIH0KIApAQCAtMTMzMiwxNCArMTM0MywxMyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpm
ZXRjaFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNp
dAogCiAgICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7CiAgICAg
aWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpTZXNzaW9uU3Rv
cmFnZSkgJiYgc2Vzc2lvbikgewotICAgICAgICBzZXNzaW9uLT5zdG9yYWdlTWFuYWdlcigpLmdl
dFNlc3Npb25TdG9yYWdlT3JpZ2lucyhbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dy
ZWdhdG9yLmNvcHlSZWYoKV0oYXV0byYmIG9yaWdpbnMpIHsKKyAgICAgICAgbV9zdG9yYWdlTWFu
YWdlclNldC0+Z2V0U2Vzc2lvblN0b3JhZ2VPcmlnaW5zKHNlc3Npb25JRCwgW2NhbGxiYWNrQWdn
cmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldKGF1dG8mJiBvcmlnaW5zKSB7
CiAgICAgICAgICAgICB3aGlsZSAoIW9yaWdpbnMuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAg
IGNhbGxiYWNrQWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVuZChXZWJzaXRl
RGF0YTo6RW50cnkgeyBvcmlnaW5zLnRha2VBbnkoKSwgV2Vic2l0ZURhdGFUeXBlOjpTZXNzaW9u
U3RvcmFnZSwgMCB9KTsKICAgICAgICAgfSk7CiAgICAgfQotCiAgICAgaWYgKHdlYnNpdGVEYXRh
VHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpMb2NhbFN0b3JhZ2UpICYmIHNlc3Npb24p
IHsKLSAgICAgICAgc2Vzc2lvbi0+c3RvcmFnZU1hbmFnZXIoKS5nZXRMb2NhbFN0b3JhZ2VPcmln
aW5zKFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXShh
dXRvJiYgb3JpZ2lucykgeworICAgICAgICBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5nZXRMb2NhbFN0
b3JhZ2VPcmlnaW5zKHNlc3Npb25JRCwgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdn
cmVnYXRvci5jb3B5UmVmKCldKGF1dG8mJiBvcmlnaW5zKSB7CiAgICAgICAgICAgICB3aGlsZSAo
IW9yaWdpbnMuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+
bV93ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVuZChXZWJzaXRlRGF0YTo6RW50cnkgeyBvcmlnaW5z
LnRha2VBbnkoKSwgV2Vic2l0ZURhdGFUeXBlOjpMb2NhbFN0b3JhZ2UsIDAgfSk7CiAgICAgICAg
IH0pOwpAQCAtMTQxNiwxMCArMTQyNiwxMCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVX
ZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaQogCiAg
ICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7CiAgICAgaWYgKHdl
YnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpTZXNzaW9uU3RvcmFnZSkg
JiYgc2Vzc2lvbikKLSAgICAgICAgc2Vzc2lvbi0+c3RvcmFnZU1hbmFnZXIoKS5kZWxldGVTZXNz
aW9uU3RvcmFnZU9yaWdpbnMoW2NsZWFyVGFza3NIYW5kbGVyID0gY2xlYXJUYXNrc0hhbmRsZXIu
Y29weVJlZigpXSB7IH0pOworICAgICAgICBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5kZWxldGVTZXNz
aW9uU3RvcmFnZShzZXNzaW9uSUQsIFtjbGVhclRhc2tzSGFuZGxlciA9IGNsZWFyVGFza3NIYW5k
bGVyLmNvcHlSZWYoKV0geyB9KTsKIAogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5z
KFdlYnNpdGVEYXRhVHlwZTo6TG9jYWxTdG9yYWdlKSAmJiBzZXNzaW9uKQotICAgICAgICBzZXNz
aW9uLT5zdG9yYWdlTWFuYWdlcigpLmRlbGV0ZUxvY2FsU3RvcmFnZU9yaWdpbnNNb2RpZmllZFNp
bmNlKG1vZGlmaWVkU2luY2UsIFtjbGVhclRhc2tzSGFuZGxlciA9IGNsZWFyVGFza3NIYW5kbGVy
LmNvcHlSZWYoKV0geyB9KTsKKyAgICAgICAgbV9zdG9yYWdlTWFuYWdlclNldC0+ZGVsZXRlTG9j
YWxTdG9yYWdlTW9kaWZpZWRTaW5jZShzZXNzaW9uSUQsIG1vZGlmaWVkU2luY2UsIFtjbGVhclRh
c2tzSGFuZGxlciA9IGNsZWFyVGFza3NIYW5kbGVyLmNvcHlSZWYoKV0geyB9KTsKIAogI2lmIEVO
QUJMRShJTkRFWEVEX0RBVEFCQVNFKQogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5z
KFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKSAmJiAhc2Vzc2lvbklELmlzRXBo
ZW1lcmFsKCkpCkBAIC0xNTE2LDEwICsxNTI2LDEwIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRl
bGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlv
CiAKICAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKICAgICBp
ZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlNlc3Npb25TdG9y
YWdlKSAmJiBzZXNzaW9uKQotICAgICAgICBzZXNzaW9uLT5zdG9yYWdlTWFuYWdlcigpLmRlbGV0
ZVNlc3Npb25TdG9yYWdlRW50cmllc0Zvck9yaWdpbnMob3JpZ2luRGF0YXMsIFtjbGVhclRhc2tz
SGFuZGxlciA9IGNsZWFyVGFza3NIYW5kbGVyLmNvcHlSZWYoKV0geyB9KTsKKyAgICAgICAgbV9z
dG9yYWdlTWFuYWdlclNldC0+ZGVsZXRlU2Vzc2lvblN0b3JhZ2VGb3JPcmlnaW5zKHNlc3Npb25J
RCwgb3JpZ2luRGF0YXMsIFtjbGVhclRhc2tzSGFuZGxlciA9IGNsZWFyVGFza3NIYW5kbGVyLmNv
cHlSZWYoKV0geyB9KTsKIAogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNp
dGVEYXRhVHlwZTo6TG9jYWxTdG9yYWdlKSAmJiBzZXNzaW9uKQotICAgICAgICBzZXNzaW9uLT5z
dG9yYWdlTWFuYWdlcigpLmRlbGV0ZUxvY2FsU3RvcmFnZUVudHJpZXNGb3JPcmlnaW5zKG9yaWdp
bkRhdGFzLCBbY2xlYXJUYXNrc0hhbmRsZXIgPSBjbGVhclRhc2tzSGFuZGxlci5jb3B5UmVmKCld
IHsgfSk7CisgICAgICAgIG1fc3RvcmFnZU1hbmFnZXJTZXQtPmRlbGV0ZUxvY2FsU3RvcmFnZUZv
ck9yaWdpbnMoc2Vzc2lvbklELCBvcmlnaW5EYXRhcywgW2NsZWFyVGFza3NIYW5kbGVyID0gY2xl
YXJUYXNrc0hhbmRsZXIuY29weVJlZigpXSB7IH0pOwogCiAjaWYgRU5BQkxFKElOREVYRURfREFU
QUJBU0UpCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBl
OjpJbmRleGVkREJEYXRhYmFzZXMpICYmICFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKQEAgLTE3
MTgsMTggKzE3MjgsMTcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFG
b3JSZWdpc3RyYWJsZURvbWFpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2kKIAogICAgIGF1dG8qIHNl
c3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOwogICAgIGlmIChzZXNzaW9uKSB7Ci0g
ICAgICAgIGF1dG8mIHN0b3JhZ2VNYW5hZ2VyID0gc2Vzc2lvbi0+c3RvcmFnZU1hbmFnZXIoKTsK
ICAgICAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpT
ZXNzaW9uU3RvcmFnZSkpIHsKLSAgICAgICAgICAgIHN0b3JhZ2VNYW5hZ2VyLmdldFNlc3Npb25T
dG9yYWdlT3JpZ2lucyhbc3RvcmFnZU1hbmFnZXIgPSBtYWtlUmVmUHRyKHN0b3JhZ2VNYW5hZ2Vy
KSwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKSwgZG9t
YWluc1RvRGVsZXRlQWxsQnV0Q29va2llc0Zvcl0oYXV0byYmIG9yaWdpbnMpIHsKKyAgICAgICAg
ICAgIG1fc3RvcmFnZU1hbmFnZXJTZXQtPmdldFNlc3Npb25TdG9yYWdlT3JpZ2lucyhzZXNzaW9u
SUQsIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHRoaXMsIHNlc3Npb25JRCwgY2Fs
bGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKSwgZG9tYWluc1Rv
RGVsZXRlQWxsQnV0Q29va2llc0Zvcl0oYXV0byYmIG9yaWdpbnMpIHsKICAgICAgICAgICAgICAg
ICBhdXRvIG9yaWdpbnNUb0RlbGV0ZSA9IGZpbHRlckZvclJlZ2lzdHJhYmxlRG9tYWlucyhvcmln
aW5zLCBkb21haW5zVG9EZWxldGVBbGxCdXRDb29raWVzRm9yLCBjYWxsYmFja0FnZ3JlZ2F0b3It
Pm1fZG9tYWlucyk7Ci0gICAgICAgICAgICAgICAgc3RvcmFnZU1hbmFnZXItPmRlbGV0ZVNlc3Np
b25TdG9yYWdlRW50cmllc0Zvck9yaWdpbnMob3JpZ2luc1RvRGVsZXRlLCBbY2FsbGJhY2tBZ2dy
ZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKKyAgICAgICAgICAg
ICAgICBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5kZWxldGVTZXNzaW9uU3RvcmFnZUZvck9yaWdpbnMo
c2Vzc2lvbklELCBvcmlnaW5zVG9EZWxldGUsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFj
a0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0K
IAogICAgICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6
OkxvY2FsU3RvcmFnZSkpIHsKLSAgICAgICAgICAgIHN0b3JhZ2VNYW5hZ2VyLmdldExvY2FsU3Rv
cmFnZU9yaWdpbnMoW3N0b3JhZ2VNYW5hZ2VyID0gbWFrZVJlZlB0cihzdG9yYWdlTWFuYWdlciks
IGNhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCksIGRvbWFp
bnNUb0RlbGV0ZUFsbEJ1dENvb2tpZXNGb3JdKGF1dG8mJiBvcmlnaW5zKSB7CisgICAgICAgICAg
ICBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5nZXRMb2NhbFN0b3JhZ2VPcmlnaW5zKHNlc3Npb25JRCwg
W3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdGhpcywgc2Vzc2lvbklELCBjYWxsYmFj
a0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpLCBkb21haW5zVG9EZWxl
dGVBbGxCdXRDb29raWVzRm9yXShhdXRvJiYgb3JpZ2lucykgewogICAgICAgICAgICAgICAgIGF1
dG8gb3JpZ2luc1RvRGVsZXRlID0gZmlsdGVyRm9yUmVnaXN0cmFibGVEb21haW5zKG9yaWdpbnMs
IGRvbWFpbnNUb0RlbGV0ZUFsbEJ1dENvb2tpZXNGb3IsIGNhbGxiYWNrQWdncmVnYXRvci0+bV9k
b21haW5zKTsKLSAgICAgICAgICAgICAgICBzdG9yYWdlTWFuYWdlci0+ZGVsZXRlTG9jYWxTdG9y
YWdlRW50cmllc0Zvck9yaWdpbnMob3JpZ2luc1RvRGVsZXRlLCBbY2FsbGJhY2tBZ2dyZWdhdG9y
ID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKKyAgICAgICAgICAgICAgICBt
X3N0b3JhZ2VNYW5hZ2VyU2V0LT5kZWxldGVMb2NhbFN0b3JhZ2VGb3JPcmlnaW5zKHNlc3Npb25J
RCwgb3JpZ2luc1RvRGVsZXRlLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdh
dG9yLmNvcHlSZWYoKV0geyB9KTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAgICAgfQpA
QCAtMjEwMSw5ICsyMTEwLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6YWN0dWFsUHJlcGFyZVRv
U3VzcGVuZChTaG91bGRBY2tub3dsZWRnZVdoZW5SZWFkeVRvU3VzcGVuZAogICAgIH0KICNlbmRp
ZgogCi0gICAgZm9yRWFjaE5ldHdvcmtTZXNzaW9uKFsmY2FsbGJhY2tBZ2dyZWdhdG9yXShhdXRv
JiBzZXNzaW9uKSB7Ci0gICAgICAgIHNlc3Npb24uc3RvcmFnZU1hbmFnZXIoKS5zdXNwZW5kKFtj
YWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7Ci0gICAgfSk7CisgICAgbV9zdG9yYWdlTWFuYWdlclNl
dC0+c3VzcGVuZChbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwogfQogCiB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpwcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5KCkKQEAgLTIxNzksOSArMjE4Niw3
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlc3VtZSgpCiAgICAgICAgIHNlcnZlci0+cmVzdW1l
KCk7CiAjZW5kaWYKIAotICAgIGZvckVhY2hOZXR3b3JrU2Vzc2lvbihbXShhdXRvJiBzZXNzaW9u
KSB7Ci0gICAgICAgIHNlc3Npb24uc3RvcmFnZU1hbmFnZXIoKS5yZXN1bWUoKTsKLSAgICB9KTsK
KyAgICBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5yZXN1bWUoKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6cHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKQEAgLTI2OTQsNjggKzI2
OTksNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZW1vdmVLZXB0QWxpdmVMb2FkKE5ldHdvcmtS
ZXNvdXJjZUxvYWRlciYgbG9hZGVyKQogICAgICAgICBzZXNzaW9uLT5yZW1vdmVLZXB0QWxpdmVM
b2FkKGxvYWRlcik7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OndlYlBhZ2VXYXNBZGRlZChJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUGFn
ZUlkZW50aWZpZXIgcGFnZUlELCBQYWdlSWRlbnRpZmllciBvbGRQYWdlSUQpCi17Ci0gICAgaWYg
KCFwYWdlSUQgfHwgIW9sZFBhZ2VJRCkgewotICAgICAgICBMT0dfRVJST1IoIkNhbm5vdCBhZGQg
cGFnZSB3aXRoIGludmFsaWQgaWQiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGF1
dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOwotICAgIGlmICghc2Vzc2lv
bikgewotICAgICAgICBMT0dfRVJST1IoIkNhbm5vdCBhZGQgcGFnZSB0byBhbiB1bmtub3duIHNl
c3Npb24iKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBhdXRvJiBzdG9yYWdlTWFuYWdl
ciA9IHNlc3Npb24tPnN0b3JhZ2VNYW5hZ2VyKCk7Ci0KLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1f
c2Vzc2lvbkJ5Q29ubmVjdGlvbi5hZGQoY29ubmVjdGlvbi51bmlxdWVJRCgpLCBzZXNzaW9uSUQp
OwotICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVl
ID09IHNlc3Npb25JRCk7Ci0KLSAgICBzdG9yYWdlTWFuYWdlci5jcmVhdGVTZXNzaW9uU3RvcmFn
ZU5hbWVzcGFjZShwYWdlSUQudG9VSW50NjQoKSwgc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25l
ZD46Om1heCgpKTsKLSAgICBzdG9yYWdlTWFuYWdlci5hZGRBbGxvd2VkU2Vzc2lvblN0b3JhZ2VO
YW1lc3BhY2VDb25uZWN0aW9uKHBhZ2VJRC50b1VJbnQ2NCgpLCBjb25uZWN0aW9uKTsKLSAgICBp
ZiAocGFnZUlEICE9IG9sZFBhZ2VJRCkKLSAgICAgICAgc3RvcmFnZU1hbmFnZXIuY2xvbmVTZXNz
aW9uU3RvcmFnZU5hbWVzcGFjZShvbGRQYWdlSUQudG9VSW50NjQoKSwgcGFnZUlELnRvVUludDY0
KCkpOwotfQotCi12b2lkIE5ldHdvcmtQcm9jZXNzOjp3ZWJQYWdlV2FzUmVtb3ZlZChJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUGFnZUlkZW50
aWZpZXIgcGFnZUlEKQotewotICAgIGlmICghcGFnZUlEKSB7Ci0gICAgICAgIExPR19FUlJPUigi
Q2Fubm90IHJlbW92ZSBwYWdlIHdpdGggaW52YWxpZCBpZCIpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7Ci0g
ICAgLy8gU2Vzc2lvbiBjYW4gYmUgZGVzdHJveWVkIGJlZm9yZSBwYWdlIGdldHMgcmVtb3ZlZC4K
LSAgICBpZiAoIXNlc3Npb24pCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8mIHN0b3JhZ2VN
YW5hZ2VyID0gc2Vzc2lvbi0+c3RvcmFnZU1hbmFnZXIoKTsKLSAgICBzdG9yYWdlTWFuYWdlci5y
ZW1vdmVBbGxvd2VkU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0aW9uKHBhZ2VJRC50b1VJ
bnQ2NCgpLCBjb25uZWN0aW9uKTsKLSAgICBzdG9yYWdlTWFuYWdlci5kZXN0cm95U2Vzc2lvblN0
b3JhZ2VOYW1lc3BhY2UocGFnZUlELnRvVUludDY0KCkpOwotfQotCi12b2lkIE5ldHdvcmtQcm9j
ZXNzOjp3ZWJQcm9jZXNzV2FzRGlzY29ubmVjdGVkKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
bikKLXsKLSAgICBhdXRvIHNlc3Npb25JRCA9IG1fc2Vzc2lvbkJ5Q29ubmVjdGlvbi50YWtlKGNv
bm5lY3Rpb24udW5pcXVlSUQoKSk7Ci0gICAgaWYgKCFzZXNzaW9uSUQuaXNWYWxpZCgpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNl
c3Npb25JRCkpCi0gICAgICAgIHNlc3Npb24tPnN0b3JhZ2VNYW5hZ2VyKCkucHJvY2Vzc0RpZENs
b3NlQ29ubmVjdGlvbihjb25uZWN0aW9uKTsKLX0KLQotdm9pZCBOZXR3b3JrUHJvY2Vzczo6d2Vi
UHJvY2Vzc1Nlc3Npb25DaGFuZ2VkKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgUEFMOjpT
ZXNzaW9uSUQgbmV3U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8UGFnZUlkZW50aWZpZXI+JiBwYWdl
SURzKQotewotICAgIGF1dG8gY29ubmVjdGlvbklEID0gY29ubmVjdGlvbi51bmlxdWVJRCgpOwot
ICAgIEFTU0VSVChtX3Nlc3Npb25CeUNvbm5lY3Rpb24uY29udGFpbnMoY29ubmVjdGlvbklEKSk7
Ci0gICAgaWYgKG1fc2Vzc2lvbkJ5Q29ubmVjdGlvbi5nZXQoY29ubmVjdGlvbklEKSA9PSBuZXdT
ZXNzaW9uSUQpCi0gICAgICAgIHJldHVybjsKLQotICAgIHdlYlByb2Nlc3NXYXNEaXNjb25uZWN0
ZWQoY29ubmVjdGlvbik7Ci0gICAgZm9yIChhdXRvJiBwYWdlSUQgOiBwYWdlSURzKQotICAgICAg
ICB3ZWJQYWdlV2FzQWRkZWQoY29ubmVjdGlvbiwgbmV3U2Vzc2lvbklELCBwYWdlSUQsIHBhZ2VJ
RCk7Ci19Ci0KIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmdldExvY2FsU3RvcmFnZU9yaWdpbkRldGFp
bHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rv
cjxMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6Ok9yaWdpbkRldGFpbHM+JiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNz
aW9uSUQpOwpAQCAtMjc2NCwxMCArMjcwNywxNCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpnZXRM
b2NhbFN0b3JhZ2VPcmlnaW5EZXRhaWxzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcAog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byYgc3RvcmFnZU1hbmFnZXIgPSBzZXNz
aW9uLT5zdG9yYWdlTWFuYWdlcigpOwotICAgIHN0b3JhZ2VNYW5hZ2VyLmdldExvY2FsU3RvcmFn
ZU9yaWdpbkRldGFpbHMoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKGF1dG8mJiBkZXRhaWxzKSBtdXRhYmxlIHsKKyAgICBtX3N0b3JhZ2VNYW5hZ2VyU2V0
LT5nZXRMb2NhbFN0b3JhZ2VPcmlnaW5EZXRhaWxzKHNlc3Npb25JRCwgW2NvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1dG8mJiBkZXRhaWxzKSBtdXRhYmxl
IHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShkZXRhaWxzKSk7CiAgICAgfSk7
CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NDbG9zZWQo
SVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQoreworICAgIG1fc3RvcmFnZU1hbmFnZXJTZXQt
PnJlbW92ZUNvbm5lY3Rpb24oY29ubmVjdGlvbik7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4
IDYwNTExMmM3NzU5NGY3YWJlNTFlMDdiZjk3ZTc3ZjVkOGNiM2MyOTMuLmU0ZjY0Mjk2NjM3YWJj
MWRjZTQ1NGVhYjliNDYxMmVlNmFlMjhlMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTk4LDYgKzk4LDcgQEAgY2xhc3MgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M7CiBjbGFzcyBOZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQ7CiBj
bGFzcyBOZXR3b3JrUHJveGltaXR5TWFuYWdlcjsKIGNsYXNzIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjsKK2NsYXNzIFN0b3JhZ2VNYW5hZ2VyU2V0OwogY2xhc3MgV2ViU1dTZXJ2ZXJDb25uZWN0aW9u
OwogY2xhc3MgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOwogZW51bSBjbGFzcyBTaG91
bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MgOiBib29sOwpAQCAtMjcwLDEwICsyNzEsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRTZXNzaW9uSXNDb250cm9sbGVkQnlBdXRvbWF0aW9uKFBBTDo6U2Vz
c2lvbklELCBib29sKTsKICAgICBib29sIHNlc3Npb25Jc0NvbnRyb2xsZWRCeUF1dG9tYXRpb24o
UEFMOjpTZXNzaW9uSUQpIGNvbnN0OwogCi0gICAgdm9pZCB3ZWJQYWdlV2FzQWRkZWQoSVBDOjpD
b25uZWN0aW9uJiwgUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllcik7Ci0gICAgdm9pZCB3ZWJQYWdlV2FzUmVtb3ZlZChJUEM6OkNv
bm5lY3Rpb24mLCBQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwotICAg
IHZvaWQgd2ViUHJvY2Vzc1dhc0Rpc2Nvbm5lY3RlZChJUEM6OkNvbm5lY3Rpb24mKTsKLSAgICB2
b2lkIHdlYlByb2Nlc3NTZXNzaW9uQ2hhbmdlZChJUEM6OkNvbm5lY3Rpb24mLCBQQUw6OlNlc3Np
b25JRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiYpOworICAgIHZvaWQg
Y29ubmVjdGlvblRvV2ViUHJvY2Vzc0Nsb3NlZChJUEM6OkNvbm5lY3Rpb24mKTsKICAgICB2b2lk
IGdldExvY2FsU3RvcmFnZU9yaWdpbkRldGFpbHMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoVmVjdG9yPExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6T3JpZ2luRGV0
YWlscz4mJik+JiYpOwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKQEAgLTUwMiw2
ICs1MDAsOCBAQCBwcml2YXRlOgogICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6
Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4gbV9kZWZhdWx0TmV0d29ya1N0b3JhZ2VTZXNzaW9uOwog
ICAgIE5ldHdvcmtCbG9iUmVnaXN0cnkgbV9uZXR3b3JrQmxvYlJlZ2lzdHJ5OwogCisgICAgUmVm
UHRyPFN0b3JhZ2VNYW5hZ2VyU2V0PiBtX3N0b3JhZ2VNYW5hZ2VyU2V0OworCiAjaWYgUExBVEZP
Uk0oQ09DT0EpCiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2Vzc0NvY29h
KGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAgICAgdm9pZCBzZXRT
dG9yYWdlQWNjZXNzQVBJRW5hYmxlZChib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKaW5kZXggNDg4YjkyOTgwYWVkMWFkYzY0YWIzZDNj
YWZjM2Y4ZDhmYTI3NjJiZC4uMWExMzk2MjkxNmE5OTI0MDQwMDhhMmVmMjFhNDE5M2U2YzE3NjZl
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lv
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5j
cHAKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1l
dGVycy5oIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIlBp
bmdMb2FkLmgiCi0jaW5jbHVkZSAiU3RvcmFnZU1hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJQYWdl
UHJveHkuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldl
YlByb2Nlc3NQcm94eS5oIgpAQCAtODUsNyArODQsNiBAQCBOZXR3b3JrU2Vzc2lvbjo6TmV0d29y
a1Nlc3Npb24oTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBjb25zdCBOZXR3b3JrU2Vz
cwogICAgICwgbV9lbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTG9nVGVzdGluZ0V2ZW50KHBh
cmFtZXRlcnMuZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0xvZ1Rlc3RpbmdFdmVudCkKICNl
bmRpZgogICAgICwgbV9hZENsaWNrQXR0cmlidXRpb24obWFrZVVuaXF1ZVJlZjxBZENsaWNrQXR0
cmlidXRpb25NYW5hZ2VyPihwYXJhbWV0ZXJzLnNlc3Npb25JRCkpCi0gICAgLCBtX3N0b3JhZ2VN
YW5hZ2VyKFN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGUoU3RyaW5nKHBhcmFtZXRlcnMubG9jYWxTdG9y
YWdlRGlyZWN0b3J5KSkpCiB7CiAgICAgaWYgKCFtX3Nlc3Npb25JRC5pc0VwaGVtZXJhbCgpKSB7
CiAgICAgICAgIFN0cmluZyBuZXR3b3JrQ2FjaGVEaXJlY3RvcnkgPSBwYXJhbWV0ZXJzLm5ldHdv
cmtDYWNoZURpcmVjdG9yeTsKQEAgLTk5LDcgKzk3LDYgQEAgTmV0d29ya1Nlc3Npb246Ok5ldHdv
cmtTZXNzaW9uKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgY29uc3QgTmV0d29ya1Nl
c3MKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmtDYWNoZSwgIkZhaWxlZCB0
byBpbml0aWFsaXplIHRoZSBXZWJLaXQgbmV0d29yayBkaXNrIGNhY2hlIik7CiAgICAgfQogCi0g
ICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KHBhcmFtZXRlcnMubG9jYWxT
dG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKICAgICBtX2FkQ2xpY2tBdHRyaWJ1dGlv
bi0+c2V0UGluZ0xvYWRGdW5jdGlvbihbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlz
KV0oTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiBsb2FkUGFyYW1ldGVycywgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7CiAgICAgICAg
IGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMTMsOSArMTEwLDYgQEAg
TmV0d29ya1Nlc3Npb246On5OZXR3b3JrU2Vzc2lvbigpCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xP
QURfU1RBVElTVElDUykKICAgICBkZXN0cm95UmVzb3VyY2VMb2FkU3RhdGlzdGljcygpOwogI2Vu
ZGlmCi0KLSAgICBtX3N0b3JhZ2VNYW5hZ2VyLT5yZXN1bWUoKTsKLSAgICBtX3N0b3JhZ2VNYW5h
Z2VyLT53YWl0VW50aWxUYXNrc0ZpbmlzaGVkKCk7CiB9CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0Vf
TE9BRF9TVEFUSVNUSUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U2Vzc2lvbi5oCmluZGV4IGMyYmY0M2QyNGUwOTFmZjc2ZDlkYjhiNzBhMTZhZTNmYTE3YjJkNTAu
Ljk1NTBjZTVkNjM4OTliZDI4NTk5NDc1M2VjZjMzNDZhNTJiNDcwOTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKQEAgLTUxLDcgKzUxLDYgQEAg
Y2xhc3MgQWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlcjsKIGNsYXNzIE5ldHdvcmtEYXRhVGFzazsK
IGNsYXNzIE5ldHdvcmtQcm9jZXNzOwogY2xhc3MgTmV0d29ya1Jlc291cmNlTG9hZGVyOwotY2xh
c3MgU3RvcmFnZU1hbmFnZXI7CiBjbGFzcyBOZXR3b3JrU29ja2V0Q2hhbm5lbDsKIGNsYXNzIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTsKIGNsYXNzIFdlYlNvY2tldFRhc2s7CkBAIC04
MCw4ICs3OSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZ2lzdGVyTmV0d29ya0RhdGFUYXNrKE5l
dHdvcmtEYXRhVGFzayYgdGFzaykgeyBtX2RhdGFUYXNrU2V0LmFkZCgmdGFzayk7IH0KICAgICB2
b2lkIHVucmVnaXN0ZXJOZXR3b3JrRGF0YVRhc2soTmV0d29ya0RhdGFUYXNrJiB0YXNrKSB7IG1f
ZGF0YVRhc2tTZXQucmVtb3ZlKCZ0YXNrKTsgfQogCi0gICAgU3RvcmFnZU1hbmFnZXImIHN0b3Jh
Z2VNYW5hZ2VyKCkgeyByZXR1cm4gbV9zdG9yYWdlTWFuYWdlci5nZXQoKTsgfQotCiAjaWYgRU5B
QkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUqIHJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSBjb25zdCB7IHJldHVybiBtX3Jlc291
cmNlTG9hZFN0YXRpc3RpY3MuZ2V0KCk7IH0KICAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRp
c3RpY3NFbmFibGVkKGJvb2wpOwpAQCAtMTM4LDcgKzEzNSw2IEBAIHByb3RlY3RlZDoKIAogICAg
IFByZWZldGNoQ2FjaGUgbV9wcmVmZXRjaENhY2hlOwogCi0gICAgUmVmPFN0b3JhZ2VNYW5hZ2Vy
PiBtX3N0b3JhZ2VNYW5hZ2VyOwogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICBib29sIG1faXNJ
bnZhbGlkYXRlZCB7IGZhbHNlIH07CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVy
cy5jcHAKaW5kZXggMzUxNGNjMGYwODNjN2VhYzVkMWQ4NjEzYTBlZmE1ZTcyZTg4Nzc5ZC4uMDE4
MzJmZDI1NDc5MWMwNGMyOTc4ZDc3YmY2ODVlMjkzNTE5ZjRmNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0
aW9uUGFyYW1ldGVycy5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgTmV0d29ya1Nlc3Npb25DcmVhdGlv
blBhcmFtZXRlcnMgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM6OnByaXZhdGVTZXNz
aW8KICNpZiBVU0UoQ1VSTCkKICAgICAgICAgLCB7IH0sIHsgfQogI2VuZGlmCi0gICAgICAgICwg
eyB9LCB7IH0sIGZhbHNlLCBmYWxzZSwgeyB9LCB7IH0sIHsgfSwgeyB9LCB7IH0sIHsgfSwgeyB9
LCB7IH0sIHsgfQorICAgICAgICAsIHsgfSwgeyB9LCBmYWxzZSwgZmFsc2UsIHsgfSwgeyB9LCB7
IH0sIHsgfSwgeyB9LCB7IH0sIHsgfQogICAgIH07CiB9CiAKQEAgLTg1LDcgKzg1LDYgQEAgdm9p
ZCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IGVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEZWJ1Z01vZGU7CiAgICAgZW5jb2RlciA8PCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFudWFs
UHJldmFsZW50UmVzb3VyY2U7CiAKLSAgICBlbmNvZGVyIDw8IGxvY2FsU3RvcmFnZURpcmVjdG9y
eSA8PCBsb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgZW5jb2RlciA8
PCBuZXR3b3JrQ2FjaGVEaXJlY3RvcnkgPDwgbmV0d29ya0NhY2hlRGlyZWN0b3J5RXh0ZW5zaW9u
SGFuZGxlOwogCiAgICAgZW5jb2RlciA8PCBkZXZpY2VNYW5hZ2VtZW50UmVzdHJpY3Rpb25zRW5h
YmxlZDsKQEAgLTIwOCwxNiArMjA3LDYgQEAgT3B0aW9uYWw8TmV0d29ya1Nlc3Npb25DcmVhdGlv
blBhcmFtZXRlcnM+IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWMKICAgICBp
ZiAoIXJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW51YWxQcmV2YWxlbnRSZXNvdXJjZSkKICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPFN0cmluZz4gbG9jYWxTdG9y
YWdlRGlyZWN0b3J5OwotICAgIGRlY29kZXIgPj4gbG9jYWxTdG9yYWdlRGlyZWN0b3J5OwotICAg
IGlmICghbG9jYWxTdG9yYWdlRGlyZWN0b3J5KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OwotCi0gICAgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBsb2NhbFN0b3JhZ2VE
aXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7Ci0gICAgZGVjb2RlciA+PiBsb2NhbFN0b3JhZ2VEaXJl
Y3RvcnlFeHRlbnNpb25IYW5kbGU7Ci0gICAgaWYgKCFsb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRl
bnNpb25IYW5kbGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KICAgICBPcHRpb25h
bDxTdHJpbmc+IG5ldHdvcmtDYWNoZURpcmVjdG9yeTsKICAgICBkZWNvZGVyID4+IG5ldHdvcmtD
YWNoZURpcmVjdG9yeTsKICAgICBpZiAoIW5ldHdvcmtDYWNoZURpcmVjdG9yeSkKQEAgLTI2OSw4
ICsyNTgsNiBAQCBPcHRpb25hbDxOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycz4gTmV0
d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM6OmRlYwogICAgICAgICAsIFdURk1vdmUoKmRl
dmljZU1hbmFnZW1lbnRSZXN0cmljdGlvbnNFbmFibGVkKQogICAgICAgICAsIFdURk1vdmUoKmFs
bExvYWRzQmxvY2tlZEJ5RGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0ZvclRlc3RpbmcpCiAg
ICAgICAgICwgV1RGTW92ZSgqcmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbnVhbFByZXZhbGVudFJl
c291cmNlKQotICAgICAgICAsIFdURk1vdmUoKmxvY2FsU3RvcmFnZURpcmVjdG9yeSkKLSAgICAg
ICAgLCBXVEZNb3ZlKCpsb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpCiAgICAg
ICAgICwgV1RGTW92ZSgqbmV0d29ya0NhY2hlRGlyZWN0b3J5KQogICAgICAgICAsIFdURk1vdmUo
Km5ldHdvcmtDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSkKICAgICB9fTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBh
cmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25D
cmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCA3YTQ3NDE0YjUxMWZjZDgwMmJlZTU3MjhiOGM3ZWI0
OTM3N2IxMWU2Li5jN2YwNTQ1MjBhYWM4ZWY2ZGVjNTA0MDlhNGE5NDA3Y2RkODk2NWRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRp
b25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC05MSw4ICs5MSw2IEBAIHN0cnVjdCBOZXR3
b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgYm9vbCBhbGxMb2Fkc0Jsb2NrZWRC
eURldmljZU1hbmFnZW1lbnRSZXN0cmljdGlvbnNGb3JUZXN0aW5nIHsgZmFsc2UgfTsKICAgICBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFudWFsUHJl
dmFsZW50UmVzb3VyY2UgeyB9OwogCi0gICAgU3RyaW5nIGxvY2FsU3RvcmFnZURpcmVjdG9yeTsK
LSAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgbG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5z
aW9uSGFuZGxlOwogICAgIFN0cmluZyBuZXR3b3JrQ2FjaGVEaXJlY3Rvcnk7CiAgICAgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlIG5ldHdvcmtDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2Uv
TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3BwCmluZGV4IDA3
YTYzM2ZiZmU5YmU1OWVkYmVkNTM5Yzk2ZTE5ZTRiMWJiZDI1ODMuLjJmZmQwYTI1YzExZGExYzUx
M2U4NzAxNDMzNDc0ZmVjNmE3ZDE1MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRh
YmFzZVRyYWNrZXIuY3BwCkBAIC0zOSwyNCArMzksMjAgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVJlZjxMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNr
ZXI+IExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6Y3JlYXRlKFJlZjxXb3JrUXVldWU+JiYg
cXVldWUsIFN0cmluZyYmIGxvY2FsU3RvcmFnZURpcmVjdG9yeSkKK1JlZjxMb2NhbFN0b3JhZ2VE
YXRhYmFzZVRyYWNrZXI+IExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6Y3JlYXRlKFN0cmlu
ZyYmIGxvY2FsU3RvcmFnZURpcmVjdG9yeSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBM
b2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIoV1RGTW92ZShxdWV1ZSksIFdURk1vdmUobG9jYWxT
dG9yYWdlRGlyZWN0b3J5KSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IExvY2FsU3RvcmFn
ZURhdGFiYXNlVHJhY2tlcihXVEZNb3ZlKGxvY2FsU3RvcmFnZURpcmVjdG9yeSkpKTsKIH0KIAot
TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIo
UmVmPFdvcmtRdWV1ZT4mJiBxdWV1ZSwgU3RyaW5nJiYgbG9jYWxTdG9yYWdlRGlyZWN0b3J5KQot
ICAgIDogbV9xdWV1ZShXVEZNb3ZlKHF1ZXVlKSkKLSAgICAsIG1fbG9jYWxTdG9yYWdlRGlyZWN0
b3J5KFdURk1vdmUobG9jYWxTdG9yYWdlRGlyZWN0b3J5KSkKK0xvY2FsU3RvcmFnZURhdGFiYXNl
VHJhY2tlcjo6TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyKFN0cmluZyYmIGxvY2FsU3RvcmFn
ZURpcmVjdG9yeSkKKyAgICA6IG1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5KFdURk1vdmUobG9jYWxT
dG9yYWdlRGlyZWN0b3J5KSkKIHsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAg
IEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgLy8gTWFrZSBzdXJlIHRoZSBlbmNv
ZGluZyBpcyBpbml0aWFsaXplZCBiZWZvcmUgd2Ugc3RhcnQgZGlzcGF0Y2hpbmcgdGhpbmdzIHRv
IHRoZSBxdWV1ZS4KICAgICBVVEY4RW5jb2RpbmcoKTsKIAotICAgIG1fcXVldWUtPmRpc3BhdGNo
KFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKCkgbXV0YWJsZSB7Ci0gICAgICAgIC8v
IERlbGV0ZSBsZWdhY3kgc3RvcmFnZVRyYWNrZXIgZGF0YWJhc2UgZmlsZS4KLSAgICAgICAgU1FM
aXRlRmlsZVN5c3RlbTo6ZGVsZXRlRGF0YWJhc2VGaWxlKHByb3RlY3RlZFRoaXMtPmRhdGFiYXNl
UGF0aCgiU3RvcmFnZVRyYWNrZXIuZGIiKSk7Ci0gICAgfSk7CisgICAgU1FMaXRlRmlsZVN5c3Rl
bTo6ZGVsZXRlRGF0YWJhc2VGaWxlKGRhdGFiYXNlUGF0aCgiU3RvcmFnZVRyYWNrZXIuZGIiKSk7
CiB9CiAKIFN0cmluZyBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OmxvY2FsU3RvcmFnZURp
cmVjdG9yeSgpIGNvbnN0CkBAIC02Niw3ICs2Miw3IEBAIFN0cmluZyBMb2NhbFN0b3JhZ2VEYXRh
YmFzZVRyYWNrZXI6OmxvY2FsU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0CiAKIExvY2FsU3RvcmFn
ZURhdGFiYXNlVHJhY2tlcjo6fkxvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcigpCiB7Ci0gICAg
QVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigp
KTsKIH0KIAogU3RyaW5nIExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6ZGF0YWJhc2VQYXRo
KGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4pIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdl
RGF0YWJhc2VUcmFja2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3Jh
Z2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmgKaW5kZXggNWQ5ZDJjMmE0YzdkYTAxM2Y2
MGYxMWViNDM2ZjE4ZTQ3NTgwMjA5MS4uMDY5NTVmMGMyMzcyYTM2NzU5OTE3MmZmZmI1YzE4OTJj
ZmZhMGYyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9y
YWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuaApAQCAt
MzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTG9jYWxTdG9yYWdlRGF0
YWJhc2VUcmFja2VyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPExvY2FsU3RvcmFnZURh
dGFiYXNlVHJhY2tlciwgV1RGOjpEZXN0cnVjdGlvblRocmVhZDo6TWFpblJ1bkxvb3A+IHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcj4gY3JlYXRl
KFJlZjxXb3JrUXVldWU+JiYsIFN0cmluZyYmIGxvY2FsU3RvcmFnZURpcmVjdG9yeSk7CisgICAg
c3RhdGljIFJlZjxMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI+IGNyZWF0ZShTdHJpbmcmJiBs
b2NhbFN0b3JhZ2VEaXJlY3RvcnkpOwogICAgIH5Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIo
KTsKIAogICAgIFN0cmluZyBkYXRhYmFzZVBhdGgoY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhJikgY29uc3Q7CkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKICAgICBWZWN0b3I8T3Jp
Z2luRGV0YWlscz4gb3JpZ2luRGV0YWlscygpOwogCiBwcml2YXRlOgotICAgIExvY2FsU3RvcmFn
ZURhdGFiYXNlVHJhY2tlcihSZWY8V29ya1F1ZXVlPiYmLCBTdHJpbmcmJiBsb2NhbFN0b3JhZ2VE
aXJlY3RvcnkpOworICAgIExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcihTdHJpbmcmJiBsb2Nh
bFN0b3JhZ2VEaXJlY3RvcnkpOwogCiAgICAgU3RyaW5nIGRhdGFiYXNlUGF0aChjb25zdCBTdHJp
bmcmIGZpbGVuYW1lKSBjb25zdDsKICAgICBTdHJpbmcgbG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkg
Y29uc3Q7CkBAIC03Myw4ICs3Myw2IEBAIHByaXZhdGU6CiAgICAgICAgIENyZWF0ZUlmTm9uRXhp
c3RlbnQsCiAgICAgICAgIFNraXBJZk5vbkV4aXN0ZW50CiAgICAgfTsKLQotICAgIFJlZjxXb3Jr
UXVldWU+IG1fcXVldWU7CiAgICAgCiAgICAgLy8gSXQgaXMgbm90IHNhZmUgdG8gdXNlIHRoaXMg
bWVtYmVyIGZyb20gYSBiYWNrZ3JvdW5kIHRocmVhZCwgY2FsbCBsb2NhbFN0b3JhZ2VEaXJlY3Rv
cnkoKSBpbnN0ZWFkLgogICAgIGNvbnN0IFN0cmluZyBtX2xvY2FsU3RvcmFnZURpcmVjdG9yeTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9y
YWdlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2Uv
U3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IGExN2M1NzljYmFhNTdlMTkyNTFhNjM0MGJlZGJkMWVh
ZGI3ZDY5ODIuLjY1NTU5MTlmZjg4NDliZWY2ZWEwOGM3NGEyZDNlMjZlZTE1NDA4ZjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFu
YWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0
b3JhZ2VNYW5hZ2VyLmNwcApAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgIkxvY2FsU3RvcmFn
ZURhdGFiYXNlLmgiCiAjaW5jbHVkZSAiTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmgiCiAj
aW5jbHVkZSAiU3RvcmFnZUFyZWFNYXBNZXNzYWdlcy5oIgotI2luY2x1ZGUgIlN0b3JhZ2VNYW5h
Z2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlP
cmlnaW5IYXNoLmg+CkBAIC0zNyw1MyArMzYsMTAgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1RleHRF
bmNvZGluZy5oPgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+
Ci0jaW5jbHVkZSA8d3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg+CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLWNsYXNzIFN0b3JhZ2VNYW5hZ2Vy
OjpTdG9yYWdlQXJlYSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTdG9yYWdlTWFuYWdl
cjo6U3RvcmFnZUFyZWE+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFN0b3JhZ2VBcmVhPiBj
cmVhdGUoTG9jYWxTdG9yYWdlTmFtZXNwYWNlKiwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiwg
dW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKLSAgICB+U3RvcmFnZUFyZWEoKTsKLQotICAgIGNvbnN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4oKSBjb25zdCB7IHJl
dHVybiBtX3NlY3VyaXR5T3JpZ2luOyB9Ci0KLSAgICB2b2lkIGFkZExpc3RlbmVyKElQQzo6Q29u
bmVjdGlvbjo6VW5pcXVlSUQsIHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCk7Ci0gICAgdm9pZCByZW1v
dmVMaXN0ZW5lcihJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCB1aW50NjRfdCBzdG9yYWdlTWFw
SUQpOwotICAgIGJvb2wgaGFzTGlzdGVuZXIoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCwgdWlu
dDY0X3Qgc3RvcmFnZU1hcElEKSBjb25zdDsKLQotICAgIFJlZjxTdG9yYWdlQXJlYT4gY2xvbmUo
KSBjb25zdDsKLQotICAgIHZvaWQgc2V0SXRlbShJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIHNv
dXJjZUNvbm5lY3Rpb24sIHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIGNvbnN0IFN0cmlu
ZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZywgYm9v
bCYgcXVvdGFFeGNlcHRpb24pOwotICAgIHZvaWQgc2V0SXRlbXMoY29uc3QgSGFzaE1hcDxTdHJp
bmcsIFN0cmluZz4mKTsKLSAgICB2b2lkIHJlbW92ZUl0ZW0oSVBDOjpDb25uZWN0aW9uOjpVbmlx
dWVJRCBzb3VyY2VDb25uZWN0aW9uLCB1aW50NjRfdCBzb3VyY2VTdG9yYWdlQXJlYUlELCBjb25z
dCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpOwotICAgIHZvaWQgY2xlYXIo
SVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBzb3VyY2VDb25uZWN0aW9uLCB1aW50NjRfdCBzb3Vy
Y2VTdG9yYWdlQXJlYUlELCBjb25zdCBTdHJpbmcmIHVybFN0cmluZyk7Ci0KLSAgICBjb25zdCBI
YXNoTWFwPFN0cmluZywgU3RyaW5nPiYgaXRlbXMoKSBjb25zdDsKLSAgICB2b2lkIGNsZWFyKCk7
Ci0KLSAgICBib29sIGlzRXBoZW1lcmFsKCkgY29uc3QgeyByZXR1cm4gIW1fbG9jYWxTdG9yYWdl
TmFtZXNwYWNlOyB9Ci0KLSAgICB2b2lkIG9wZW5EYXRhYmFzZUFuZEltcG9ydEl0ZW1zSWZOZWVk
ZWQoKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBTdG9yYWdlQXJlYShMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UqLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmLCB1bnNpZ25lZCBxdW90
YUluQnl0ZXMpOwotCi0gICAgdm9pZCBkaXNwYXRjaEV2ZW50cyhJUEM6OkNvbm5lY3Rpb246OlVu
aXF1ZUlEIHNvdXJjZUNvbm5lY3Rpb24sIHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIGNv
bnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5l
d1ZhbHVlLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZykgY29uc3Q7Ci0KLSAgICAvLyBXaWxsIGJl
IG51bGwgaWYgdGhlIHN0b3JhZ2UgYXJlYSBiZWxvbmdzIHRvIGEgc2Vzc2lvbiBzdG9yYWdlIG5h
bWVzcGFjZSBvciB0aGUgc3RvcmFnZSBhcmVhIGlzIGluIGFuIGVwaGVtZXJhbCBzZXNzaW9uLgot
ICAgIFdlYWtQdHI8TG9jYWxTdG9yYWdlTmFtZXNwYWNlPiBtX2xvY2FsU3RvcmFnZU5hbWVzcGFj
ZTsKLSAgICBtdXRhYmxlIFJlZlB0cjxMb2NhbFN0b3JhZ2VEYXRhYmFzZT4gbV9sb2NhbFN0b3Jh
Z2VEYXRhYmFzZTsKLSAgICBtdXRhYmxlIGJvb2wgbV9kaWRJbXBvcnRJdGVtc0Zyb21EYXRhYmFz
ZSB7IGZhbHNlIH07Ci0KLSAgICBTZWN1cml0eU9yaWdpbkRhdGEgbV9zZWN1cml0eU9yaWdpbjsK
LSAgICB1bnNpZ25lZCBtX3F1b3RhSW5CeXRlczsKLQotICAgIFJlZlB0cjxTdG9yYWdlTWFwPiBt
X3N0b3JhZ2VNYXA7Ci0gICAgSGFzaFNldDxzdGQ6OnBhaXI8SVBDOjpDb25uZWN0aW9uOjpVbmlx
dWVJRCwgdWludDY0X3Q+PiBtX2V2ZW50TGlzdGVuZXJzOwotfTsKLQogY2xhc3MgU3RvcmFnZU1h
bmFnZXI6OkxvY2FsU3RvcmFnZU5hbWVzcGFjZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxMb2NhbFN0b3JhZ2VOYW1lc3BhY2U+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TG9jYWxTdG9y
YWdlTmFtZXNwYWNlPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxMb2NhbFN0b3JhZ2VOYW1l
c3BhY2U+IGNyZWF0ZShTdG9yYWdlTWFuYWdlciYsIHVpbnQ2NF90IHN0b3JhZ2VNYW5hZ2VySUQp
OwpAQCAtOTgsNyArNTQsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhckFsbFN0b3JhZ2VBcmVh
cygpOwogCiAgICAgVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4gZXBoZW1lcmFsT3JpZ2lucygp
IGNvbnN0OwotICAgIHZvaWQgY2xvbmVUbyhMb2NhbFN0b3JhZ2VOYW1lc3BhY2UmIG5ld0xvY2Fs
U3RvcmFnZU5hbWVzcGFjZSk7CiAKIHByaXZhdGU6CiAgICAgTG9jYWxTdG9yYWdlTmFtZXNwYWNl
KFN0b3JhZ2VNYW5hZ2VyJiwgdWludDY0X3Qgc3RvcmFnZU1hbmFnZXJJRCk7CkBAIC0xNjUsNiAr
MTIwLDEyIEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxTZWN1cml0eU9yaWdpbkRhdGEsIFJlZlB0
cjxTdG9yYWdlQXJlYT4+IG1fc3RvcmFnZUFyZWFNYXA7CiB9OwogCitzdGF0aWMgdWludDY0X3Qg
Z2VuZXJhdGVTdG9yYWdlQXJlYUlkZW50aWZpZXIoKQoreworICAgIHN0YXRpYyB1aW50NjRfdCBp
ZGVudGlmaWVyOworICAgIHJldHVybiArK2lkZW50aWZpZXI7Cit9CisKIGF1dG8gU3RvcmFnZU1h
bmFnZXI6OlN0b3JhZ2VBcmVhOjpjcmVhdGUoTG9jYWxTdG9yYWdlTmFtZXNwYWNlKiBsb2NhbFN0
b3JhZ2VOYW1lc3BhY2UsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4s
IHVuc2lnbmVkIHF1b3RhSW5CeXRlcykgLT4gUmVmPFN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQXJl
YT4KIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9yYWdlQXJlYShsb2NhbFN0b3JhZ2VO
YW1lc3BhY2UsIHNlY3VyaXR5T3JpZ2luLCBxdW90YUluQnl0ZXMpKTsKQEAgLTE3NSw2ICsxMzYs
NyBAQCBTdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUFyZWE6OlN0b3JhZ2VBcmVhKExvY2FsU3RvcmFn
ZU5hbWVzcGFjZSogbG9jYWxTdG9yYWdlTmFtZQogICAgICwgbV9zZWN1cml0eU9yaWdpbihzZWN1
cml0eU9yaWdpbikKICAgICAsIG1fcXVvdGFJbkJ5dGVzKHF1b3RhSW5CeXRlcykKICAgICAsIG1f
c3RvcmFnZU1hcChTdG9yYWdlTWFwOjpjcmVhdGUobV9xdW90YUluQnl0ZXMpKQorICAgICwgbV9p
ZGVudGlmaWVyKGdlbmVyYXRlU3RvcmFnZUFyZWFJZGVudGlmaWVyKCkpCiB7CiB9CiAKQEAgLTE4
NywyMSArMTQ5LDE5IEBAIFN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQXJlYTo6flN0b3JhZ2VBcmVh
KCkKICAgICAgICAgbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZS0+Y2xvc2UoKTsKIH0KIAotdm9pZCBT
dG9yYWdlTWFuYWdlcjo6U3RvcmFnZUFyZWE6OmFkZExpc3RlbmVyKElQQzo6Q29ubmVjdGlvbjo6
VW5pcXVlSUQgY29ubmVjdGlvbklELCB1aW50NjRfdCBzdG9yYWdlTWFwSUQpCit2b2lkIFN0b3Jh
Z2VNYW5hZ2VyOjpTdG9yYWdlQXJlYTo6YWRkTGlzdGVuZXIoSVBDOjpDb25uZWN0aW9uOjpVbmlx
dWVJRCBjb25uZWN0aW9uSUQpCiB7Ci0gICAgQVNTRVJUKCFtX2V2ZW50TGlzdGVuZXJzLmNvbnRh
aW5zKHN0ZDo6bWFrZV9wYWlyKGNvbm5lY3Rpb25JRCwgc3RvcmFnZU1hcElEKSkpOwotICAgIG1f
ZXZlbnRMaXN0ZW5lcnMuYWRkKHN0ZDo6bWFrZV9wYWlyKGNvbm5lY3Rpb25JRCwgc3RvcmFnZU1h
cElEKSk7Ci19CisgICAgQVNTRVJUKCFtX2V2ZW50TGlzdGVuZXJzLmNvbnRhaW5zKGNvbm5lY3Rp
b25JRCkpOwogCi12b2lkIFN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQXJlYTo6cmVtb3ZlTGlzdGVu
ZXIoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uSUQsIHVpbnQ2NF90IHN0b3Jh
Z2VNYXBJRCkKLXsKLSAgICBBU1NFUlQoaXNFcGhlbWVyYWwoKSB8fCBtX2V2ZW50TGlzdGVuZXJz
LmNvbnRhaW5zKHN0ZDo6bWFrZV9wYWlyKGNvbm5lY3Rpb25JRCwgc3RvcmFnZU1hcElEKSkpOwot
ICAgIG1fZXZlbnRMaXN0ZW5lcnMucmVtb3ZlKHN0ZDo6bWFrZV9wYWlyKGNvbm5lY3Rpb25JRCwg
c3RvcmFnZU1hcElEKSk7CisgICAgaWYgKG1fZXZlbnRMaXN0ZW5lcnMuaXNFbXB0eSgpICYmICFp
c0VwaGVtZXJhbCgpKQorICAgICAgICBvcGVuRGF0YWJhc2VBbmRJbXBvcnRJdGVtc0lmTmVlZGVk
KCk7CisKKyAgICBtX2V2ZW50TGlzdGVuZXJzLmFkZChjb25uZWN0aW9uSUQpOwogfQogCi1ib29s
IFN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQXJlYTo6aGFzTGlzdGVuZXIoSVBDOjpDb25uZWN0aW9u
OjpVbmlxdWVJRCBjb25uZWN0aW9uSUQsIHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCkgY29uc3QKK3Zv
aWQgU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VBcmVhOjpyZW1vdmVMaXN0ZW5lcihJUEM6OkNvbm5l
Y3Rpb246OlVuaXF1ZUlEIGNvbm5lY3Rpb25JRCkKIHsKLSAgICByZXR1cm4gbV9ldmVudExpc3Rl
bmVycy5jb250YWlucyhzdGQ6Om1ha2VfcGFpcihjb25uZWN0aW9uSUQsIHN0b3JhZ2VNYXBJRCkp
OworICAgIG1fZXZlbnRMaXN0ZW5lcnMucmVtb3ZlKGNvbm5lY3Rpb25JRCk7CiB9CiAKIFJlZjxT
dG9yYWdlTWFuYWdlcjo6U3RvcmFnZUFyZWE+IFN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQXJlYTo6
Y2xvbmUoKSBjb25zdApAQCAtMjMzLDI0ICsxOTMsNiBAQCB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpT
dG9yYWdlQXJlYTo6c2V0SXRlbShJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIHNvdXJjZUNvbm5l
YwogICAgIGRpc3BhdGNoRXZlbnRzKHNvdXJjZUNvbm5lY3Rpb24sIHNvdXJjZVN0b3JhZ2VBcmVh
SUQsIGtleSwgb2xkVmFsdWUsIHZhbHVlLCB1cmxTdHJpbmcpOwogfQogCi12b2lkIFN0b3JhZ2VN
YW5hZ2VyOjpTdG9yYWdlQXJlYTo6c2V0SXRlbXMoY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmlu
Zz4mIGl0ZW1zKQotewotICAgIC8vIEltcG9ydCBpdGVtcyBmcm9tIHdlYiBwcm9jZXNzIGlmIGl0
ZW1zIGFyZSBub3Qgc3RvcmVkIG9uIGRpc2suCi0gICAgaWYgKCFpc0VwaGVtZXJhbCgpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBmb3IgKGF1dG8mIGl0ZW0gOiBpdGVtcykgewotICAgICAgICBT
dHJpbmcgb2xkVmFsdWU7Ci0gICAgICAgIGJvb2wgcXVvdGFFeGNlcHRpb247Ci0gICAgICAgIGF1
dG8gbmV3U3RvcmFnZU1hcCA9IG1fc3RvcmFnZU1hcC0+c2V0SXRlbShpdGVtLmtleSwgaXRlbS52
YWx1ZSwgb2xkVmFsdWUsIHF1b3RhRXhjZXB0aW9uKTsKLSAgICAgICAgaWYgKG5ld1N0b3JhZ2VN
YXApCi0gICAgICAgICAgICBtX3N0b3JhZ2VNYXAgPSBXVEZNb3ZlKG5ld1N0b3JhZ2VNYXApOwot
ICAgICAgICAKLSAgICAgICAgaWYgKHF1b3RhRXhjZXB0aW9uKQotICAgICAgICAgICAgcmV0dXJu
OwotICAgIH0KLX0KLQogdm9pZCBTdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUFyZWE6OnJlbW92ZUl0
ZW0oSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBzb3VyY2VDb25uZWN0aW9uLCB1aW50NjRfdCBz
b3VyY2VTdG9yYWdlQXJlYUlELCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB1cmxT
dHJpbmcpCiB7CiAgICAgb3BlbkRhdGFiYXNlQW5kSW1wb3J0SXRlbXNJZk5lZWRlZCgpOwpAQCAt
MzAxLDcgKzI0Myw3IEBAIHZvaWQgU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VBcmVhOjpjbGVhcigp
CiAgICAgfQogCiAgICAgZm9yIChhdXRvIGl0ID0gbV9ldmVudExpc3RlbmVycy5iZWdpbigpLCBl
bmQgPSBtX2V2ZW50TGlzdGVuZXJzLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAg
UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb25uZWN0aW9uSUQgPSBpdC0+Zmlyc3QsIGRlc3Rp
bmF0aW9uU3RvcmFnZUFyZWFJRCA9IGl0LT5zZWNvbmRdIHsKKyAgICAgICAgUnVuTG9vcDo6bWFp
bigpLmRpc3BhdGNoKFtjb25uZWN0aW9uSUQgPSAqaXQsIGRlc3RpbmF0aW9uU3RvcmFnZUFyZWFJ
RCA9IG1faWRlbnRpZmllcl0gewogICAgICAgICAgICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBJ
UEM6OkNvbm5lY3Rpb246OmNvbm5lY3Rpb24oY29ubmVjdGlvbklEKSkKICAgICAgICAgICAgICAg
ICBjb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlQXJlYU1hcDo6Q2xlYXJDYWNoZSgp
LCBkZXN0aW5hdGlvblN0b3JhZ2VBcmVhSUQpOwogICAgICAgICB9KTsKQEAgLTMxNCw5ICsyNTYs
MTAgQEAgdm9pZCBTdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUFyZWE6Om9wZW5EYXRhYmFzZUFuZElt
cG9ydEl0ZW1zSWZOZWVkZWQoKSBjb25zdAogICAgICAgICByZXR1cm47CiAKICAgICBBU1NFUlQo
bV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPnN0b3JhZ2VNYW5hZ2VyKCktPm1fbG9jYWxTdG9yYWdl
RGF0YWJhc2VUcmFja2VyKTsKKyAgICBBU1NFUlQobV9xdWV1ZSk7CiAgICAgLy8gV2Ugb3BlbiB0
aGUgZGF0YWJhc2UgaGVyZSBldmVuIGlmIHdlJ3ZlIGFscmVhZHkgaW1wb3J0ZWQgb3VyIGl0ZW1z
IHRvIGVuc3VyZSB0aGF0IHRoZSBkYXRhYmFzZSBpcyBvcGVuIGlmIHdlIG5lZWQgdG8gd3JpdGUg
dG8gaXQuCiAgICAgaWYgKCFtX2xvY2FsU3RvcmFnZURhdGFiYXNlKQotICAgICAgICBtX2xvY2Fs
U3RvcmFnZURhdGFiYXNlID0gTG9jYWxTdG9yYWdlRGF0YWJhc2U6OmNyZWF0ZShtX2xvY2FsU3Rv
cmFnZU5hbWVzcGFjZS0+c3RvcmFnZU1hbmFnZXIoKS0+bV9xdWV1ZS5jb3B5UmVmKCksICptX2xv
Y2FsU3RvcmFnZU5hbWVzcGFjZS0+c3RvcmFnZU1hbmFnZXIoKS0+bV9sb2NhbFN0b3JhZ2VEYXRh
YmFzZVRyYWNrZXIsIG1fc2VjdXJpdHlPcmlnaW4pOworICAgICAgICBtX2xvY2FsU3RvcmFnZURh
dGFiYXNlID0gTG9jYWxTdG9yYWdlRGF0YWJhc2U6OmNyZWF0ZSgqbV9xdWV1ZSwgKm1fbG9jYWxT
dG9yYWdlTmFtZXNwYWNlLT5zdG9yYWdlTWFuYWdlcigpLT5tX2xvY2FsU3RvcmFnZURhdGFiYXNl
VHJhY2tlciwgbV9zZWN1cml0eU9yaWdpbik7CiAKICAgICBpZiAobV9kaWRJbXBvcnRJdGVtc0Zy
b21EYXRhYmFzZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzI4LDkgKzI3MSw5IEBAIHZvaWQgU3Rv
cmFnZU1hbmFnZXI6OlN0b3JhZ2VBcmVhOjpvcGVuRGF0YWJhc2VBbmRJbXBvcnRJdGVtc0lmTmVl
ZGVkKCkgY29uc3QKIHZvaWQgU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VBcmVhOjpkaXNwYXRjaEV2
ZW50cyhJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIHNvdXJjZUNvbm5lY3Rpb24sIHVpbnQ2NF90
IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9s
ZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZykg
Y29uc3QKIHsKICAgICBmb3IgKGF1dG8gaXQgPSBtX2V2ZW50TGlzdGVuZXJzLmJlZ2luKCksIGVu
ZCA9IG1fZXZlbnRMaXN0ZW5lcnMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBz
b3VyY2VTdG9yYWdlQXJlYUlEID0gaXQtPmZpcnN0ID09IHNvdXJjZUNvbm5lY3Rpb24gPyBzb3Vy
Y2VTdG9yYWdlQXJlYUlEIDogMDsKKyAgICAgICAgc291cmNlU3RvcmFnZUFyZWFJRCA9ICppdCA9
PSBzb3VyY2VDb25uZWN0aW9uID8gc291cmNlU3RvcmFnZUFyZWFJRCA6IDA7CiAKLSAgICAgICAg
UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb25uZWN0aW9uSUQgPSBpdC0+Zmlyc3QsIHNvdXJj
ZVN0b3JhZ2VBcmVhSUQsIGRlc3RpbmF0aW9uU3RvcmFnZUFyZWFJRCA9IGl0LT5zZWNvbmQsIGtl
eSA9IGtleS5pc29sYXRlZENvcHkoKSwgb2xkVmFsdWUgPSBvbGRWYWx1ZS5pc29sYXRlZENvcHko
KSwgbmV3VmFsdWUgPSBuZXdWYWx1ZS5pc29sYXRlZENvcHkoKSwgdXJsU3RyaW5nID0gdXJsU3Ry
aW5nLmlzb2xhdGVkQ29weSgpXSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChb
Y29ubmVjdGlvbklEID0gKml0LCBzb3VyY2VTdG9yYWdlQXJlYUlELCBkZXN0aW5hdGlvblN0b3Jh
Z2VBcmVhSUQgPSBtX2lkZW50aWZpZXIsIGtleSA9IGtleS5pc29sYXRlZENvcHkoKSwgb2xkVmFs
dWUgPSBvbGRWYWx1ZS5pc29sYXRlZENvcHkoKSwgbmV3VmFsdWUgPSBuZXdWYWx1ZS5pc29sYXRl
ZENvcHkoKSwgdXJsU3RyaW5nID0gdXJsU3RyaW5nLmlzb2xhdGVkQ29weSgpXSB7CiAgICAgICAg
ICAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IElQQzo6Q29ubmVjdGlvbjo6Y29ubmVjdGlvbihj
b25uZWN0aW9uSUQpKQogICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6
OlN0b3JhZ2VBcmVhTWFwOjpEaXNwYXRjaFN0b3JhZ2VFdmVudChzb3VyY2VTdG9yYWdlQXJlYUlE
LCBrZXksIG9sZFZhbHVlLCBuZXdWYWx1ZSwgdXJsU3RyaW5nKSwgZGVzdGluYXRpb25TdG9yYWdl
QXJlYUlEKTsKICAgICAgICAgfSk7CkBAIC0zNDIsOCArMjg1LDYgQEAgUmVmPFN0b3JhZ2VNYW5h
Z2VyOjpMb2NhbFN0b3JhZ2VOYW1lc3BhY2U+IFN0b3JhZ2VNYW5hZ2VyOjpMb2NhbFN0b3JhZ2VO
YW1lc3BhY2UKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBMb2NhbFN0b3JhZ2VOYW1lc3BhY2Uo
c3RvcmFnZU1hbmFnZXIsIHN0b3JhZ2VOYW1lc3BhY2VJRCkpOwogfQogCi0vLyBGSVhNRTogVGhl
IHF1b3RhIHZhbHVlIGlzIGNvcGllZCBmcm9tIEdyb3VwU2V0dGluZ3MuY3BwLgotLy8gV2Ugc2hv
dWxkIGludmVzdGlnYXRlIGEgd2F5IHRvIHNoYXJlIGl0IHdpdGggV2ViQ29yZS4KIFN0b3JhZ2VN
YW5hZ2VyOjpMb2NhbFN0b3JhZ2VOYW1lc3BhY2U6OkxvY2FsU3RvcmFnZU5hbWVzcGFjZShTdG9y
YWdlTWFuYWdlciYgc3RvcmFnZU1hbmFnZXIsIHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCkK
ICAgICA6IG1fc3RvcmFnZU1hbmFnZXIoc3RvcmFnZU1hbmFnZXIpCiAgICAgLCBtX3F1b3RhSW5C
eXRlcyhsb2NhbFN0b3JhZ2VEYXRhYmFzZVF1b3RhSW5CeXRlcykKQEAgLTM1NCw3ICsyOTUsNyBA
QCBTdG9yYWdlTWFuYWdlcjo6TG9jYWxTdG9yYWdlTmFtZXNwYWNlOjp+TG9jYWxTdG9yYWdlTmFt
ZXNwYWNlKCkKIHsKIH0KIAotYXV0byBTdG9yYWdlTWFuYWdlcjo6TG9jYWxTdG9yYWdlTmFtZXNw
YWNlOjpnZXRPckNyZWF0ZVN0b3JhZ2VBcmVhKFNlY3VyaXR5T3JpZ2luRGF0YSYmIHNlY3VyaXR5
T3JpZ2luLCBJc0VwaGVtZXJhbCBpc0VwaGVtZXJhbCkgLT4gUmVmPFN0b3JhZ2VBcmVhPgorUmVm
PFN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQXJlYT4gU3RvcmFnZU1hbmFnZXI6OkxvY2FsU3RvcmFn
ZU5hbWVzcGFjZTo6Z2V0T3JDcmVhdGVTdG9yYWdlQXJlYShTZWN1cml0eU9yaWdpbkRhdGEmJiBz
ZWN1cml0eU9yaWdpbiwgSXNFcGhlbWVyYWwgaXNFcGhlbWVyYWwpCiB7CiAgICAgcmV0dXJuICpt
X3N0b3JhZ2VBcmVhTWFwLmVuc3VyZShzZWN1cml0eU9yaWdpbiwgWyZdKCkgbXV0YWJsZSB7CiAg
ICAgICAgIHJldHVybiBTdG9yYWdlQXJlYTo6Y3JlYXRlKGlzRXBoZW1lcmFsID09IElzRXBoZW1l
cmFsOjpZZXMgPyBudWxscHRyIDogdGhpcywgV1RGTW92ZShzZWN1cml0eU9yaWdpbiksIG1fcXVv
dGFJbkJ5dGVzKTsKQEAgLTM4NCwxMiArMzI1LDYgQEAgVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0
YT4gU3RvcmFnZU1hbmFnZXI6OkxvY2FsU3RvcmFnZU5hbWVzcGFjZTo6ZXBoZW1lcmFsT3JpZ2kK
ICAgICByZXR1cm4gb3JpZ2luczsKIH0KIAotdm9pZCBTdG9yYWdlTWFuYWdlcjo6TG9jYWxTdG9y
YWdlTmFtZXNwYWNlOjpjbG9uZVRvKExvY2FsU3RvcmFnZU5hbWVzcGFjZSYgbmV3TG9jYWxTdG9y
YWdlTmFtZXNwYWNlKQotewotICAgIGZvciAoYXV0byYgcGFpciA6IG1fc3RvcmFnZUFyZWFNYXAp
Ci0gICAgICAgIG5ld0xvY2FsU3RvcmFnZU5hbWVzcGFjZS5tX3N0b3JhZ2VBcmVhTWFwLmFkZChw
YWlyLmtleSwgcGFpci52YWx1ZS0+Y2xvbmUoKSk7Ci19Ci0KIGNsYXNzIFN0b3JhZ2VNYW5hZ2Vy
OjpTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxT
ZXNzaW9uU3RvcmFnZU5hbWVzcGFjZT4gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8U2Vzc2lv
blN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZSh1bnNpZ25lZCBxdW90YUluQnl0ZXMpOwpAQCAtMzk3
LDEwICszMzIsNiBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVy
biBtX3N0b3JhZ2VBcmVhTWFwLmlzRW1wdHkoKTsgfQogCi0gICAgY29uc3QgSGFzaFNldDxJUEM6
OkNvbm5lY3Rpb246OlVuaXF1ZUlEPiYgYWxsb3dlZENvbm5lY3Rpb25zKCkgY29uc3QgeyByZXR1
cm4gbV9hbGxvd2VkQ29ubmVjdGlvbnM7IH0KLSAgICB2b2lkIGFkZEFsbG93ZWRDb25uZWN0aW9u
KElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQpOwotICAgIHZvaWQgcmVtb3ZlQWxsb3dlZENvbm5l
Y3Rpb24oSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCk7Ci0KICAgICBSZWY8U3RvcmFnZUFyZWE+
IGdldE9yQ3JlYXRlU3RvcmFnZUFyZWEoU2VjdXJpdHlPcmlnaW5EYXRhJiYpOwogCiAgICAgdm9p
ZCBjbG9uZVRvKFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlJiBuZXdTZXNzaW9uU3RvcmFnZU5hbWVz
cGFjZSk7CkBAIC00MzMsNyArMzY0LDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBleHBsaWNp
dCBTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YUluQnl0ZXMpOwogCi0gICAg
SGFzaFNldDxJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEPiBtX2FsbG93ZWRDb25uZWN0aW9uczsK
ICAgICB1bnNpZ25lZCBtX3F1b3RhSW5CeXRlczsKIAogICAgIEhhc2hNYXA8U2VjdXJpdHlPcmln
aW5EYXRhLCBSZWZQdHI8U3RvcmFnZUFyZWE+PiBtX3N0b3JhZ2VBcmVhTWFwOwpAQCAtNDUzLDE4
ICszODMsNyBAQCBTdG9yYWdlTWFuYWdlcjo6U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2U6On5TZXNz
aW9uU3RvcmFnZU5hbWVzcGFjZSgpCiB7CiB9CiAKLXZvaWQgU3RvcmFnZU1hbmFnZXI6OlNlc3Np
b25TdG9yYWdlTmFtZXNwYWNlOjphZGRBbGxvd2VkQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb246
OlVuaXF1ZUlEIGFsbG93ZWRDb25uZWN0aW9uKQotewotICAgIG1fYWxsb3dlZENvbm5lY3Rpb25z
LmFkZChhbGxvd2VkQ29ubmVjdGlvbik7Ci19Ci0KLQotdm9pZCBTdG9yYWdlTWFuYWdlcjo6U2Vz
c2lvblN0b3JhZ2VOYW1lc3BhY2U6OnJlbW92ZUFsbG93ZWRDb25uZWN0aW9uKElQQzo6Q29ubmVj
dGlvbjo6VW5pcXVlSUQgYWxsb3dlZENvbm5lY3Rpb24pCi17Ci0gICAgQVNTRVJUKG1fYWxsb3dl
ZENvbm5lY3Rpb25zLmNvbnRhaW5zKGFsbG93ZWRDb25uZWN0aW9uKSk7Ci0gICAgbV9hbGxvd2Vk
Q29ubmVjdGlvbnMucmVtb3ZlKGFsbG93ZWRDb25uZWN0aW9uKTsKLX0KLWF1dG8gU3RvcmFnZU1h
bmFnZXI6OlNlc3Npb25TdG9yYWdlTmFtZXNwYWNlOjpnZXRPckNyZWF0ZVN0b3JhZ2VBcmVhKFNl
Y3VyaXR5T3JpZ2luRGF0YSYmIHNlY3VyaXR5T3JpZ2luKSAtPiBSZWY8U3RvcmFnZUFyZWE+CitS
ZWY8U3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VBcmVhPiBTdG9yYWdlTWFuYWdlcjo6U2Vzc2lvblN0
b3JhZ2VOYW1lc3BhY2U6OmdldE9yQ3JlYXRlU3RvcmFnZUFyZWEoU2VjdXJpdHlPcmlnaW5EYXRh
JiYgc2VjdXJpdHlPcmlnaW4pCiB7CiAgICAgcmV0dXJuICptX3N0b3JhZ2VBcmVhTWFwLmVuc3Vy
ZShzZWN1cml0eU9yaWdpbiwgW3RoaXMsICZzZWN1cml0eU9yaWdpbl0oKSBtdXRhYmxlIHsKICAg
ICAgICAgcmV0dXJuIFN0b3JhZ2VBcmVhOjpjcmVhdGUobnVsbHB0ciwgV1RGTW92ZShzZWN1cml0
eU9yaWdpbiksIG1fcXVvdGFJbkJ5dGVzKTsKQEAgLTQ4NSw0OTkgKzQwNCwxNzggQEAgUmVmPFN0
b3JhZ2VNYW5hZ2VyPiBTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlKFN0cmluZyYmIGxvY2FsU3RvcmFn
ZURpcmVjdG9yeSkKIH0KIAogU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VNYW5hZ2VyKFN0cmluZyYm
IGxvY2FsU3RvcmFnZURpcmVjdG9yeSkKLSAgICA6IG1fcXVldWUoV29ya1F1ZXVlOjpjcmVhdGUo
ImNvbS5hcHBsZS5XZWJLaXQuU3RvcmFnZU1hbmFnZXIiKSkKIHsKLSAgICBBU1NFUlQoUnVuTG9v
cDo6aXNNYWluKCkpOworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgLy8g
TWFrZSBzdXJlIHRoZSBlbmNvZGluZyBpcyBpbml0aWFsaXplZCBiZWZvcmUgd2Ugc3RhcnQgZGlz
cGF0Y2hpbmcgdGhpbmdzIHRvIHRoZSBxdWV1ZS4KICAgICBVVEY4RW5jb2RpbmcoKTsKICAgICBp
ZiAoIWxvY2FsU3RvcmFnZURpcmVjdG9yeS5pc051bGwoKSkKLSAgICAgICAgbV9sb2NhbFN0b3Jh
Z2VEYXRhYmFzZVRyYWNrZXIgPSBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OmNyZWF0ZSht
X3F1ZXVlLmNvcHlSZWYoKSwgV1RGTW92ZShsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpKTsKKyAgICAg
ICAgbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIgPSBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRy
YWNrZXI6OmNyZWF0ZShXVEZNb3ZlKGxvY2FsU3RvcmFnZURpcmVjdG9yeSkpOwogfQogCiBTdG9y
YWdlTWFuYWdlcjo6flN0b3JhZ2VNYW5hZ2VyKCkKIHsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNN
YWluKCkpOworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogfQogCiB2b2lkIFN0b3Jh
Z2VNYW5hZ2VyOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBzdG9yYWdl
TmFtZXNwYWNlSUQsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcykKIHsKLSAgICBtX3F1ZXVlLT5kaXNw
YXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzdG9yYWdlTmFtZXNw
YWNlSUQsIHF1b3RhSW5CeXRlc10oKSBtdXRhYmxlIHsKLSAgICAgICAgbV9zZXNzaW9uU3RvcmFn
ZU5hbWVzcGFjZXMuZW5zdXJlKHN0b3JhZ2VOYW1lc3BhY2VJRCwgW3F1b3RhSW5CeXRlc10gewot
ICAgICAgICAgICAgcmV0dXJuIFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlOjpjcmVhdGUocXVvdGFJ
bkJ5dGVzKTsKLSAgICAgICAgfSk7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Cisg
ICAgbV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMuZW5zdXJlKHN0b3JhZ2VOYW1lc3BhY2VJRCwg
W3F1b3RhSW5CeXRlc10geworICAgICAgICByZXR1cm4gU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2U6
OmNyZWF0ZShxdW90YUluQnl0ZXMpOwogICAgIH0pOwogfQogCiB2b2lkIFN0b3JhZ2VNYW5hZ2Vy
OjpkZXN0cm95U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3Qgc3RvcmFnZU5hbWVzcGFj
ZUlEKQogewotICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIHN0b3JhZ2VOYW1lc3BhY2VJRF0gewotICAgICAgICBBU1NFUlQobV9zZXNz
aW9uU3RvcmFnZU5hbWVzcGFjZXMuY29udGFpbnMoc3RvcmFnZU5hbWVzcGFjZUlEKSk7Ci0gICAg
ICAgIGlmIChhdXRvKiBzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSA9IG1fc2Vzc2lvblN0b3JhZ2VO
YW1lc3BhY2VzLmdldChzdG9yYWdlTmFtZXNwYWNlSUQpKSB7Ci0gICAgICAgICAgICBpZiAoc2Vz
c2lvblN0b3JhZ2VOYW1lc3BhY2UtPmFsbG93ZWRDb25uZWN0aW9ucygpLmlzRW1wdHkoKSkKLSAg
ICAgICAgICAgICAgICBtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlcy5yZW1vdmUoc3RvcmFnZU5h
bWVzcGFjZUlEKTsKLSAgICAgICAgfQotICAgIH0pOwotfQotCi12b2lkIFN0b3JhZ2VNYW5hZ2Vy
OjphZGRBbGxvd2VkU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0aW9uKHVpbnQ2NF90IHN0
b3JhZ2VOYW1lc3BhY2VJRCwgSVBDOjpDb25uZWN0aW9uJiBhbGxvd2VkQ29ubmVjdGlvbikKLXsK
LSAgICBhdXRvIGFsbG93ZWRDb25uZWN0aW9uSUQgPSBhbGxvd2VkQ29ubmVjdGlvbi51bmlxdWVJ
RCgpOwotICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9jb25uZWN0aW9ucy5hZGQoYWxsb3dlZENvbm5l
Y3Rpb25JRCk7Ci0gICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KQotICAgICAgICBhbGxvd2Vk
Q29ubmVjdGlvbi5hZGRXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlN0b3JhZ2VN
YW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcXVldWUuZ2V0KCksIHRoaXMpOwotCi0g
ICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgYWxsb3dlZENvbm5lY3Rpb25JRCwgc3RvcmFnZU5hbWVzcGFjZUlEXSgpIG11dGFibGUgewot
ICAgICAgICBBU1NFUlQobV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMuY29udGFpbnMoc3RvcmFn
ZU5hbWVzcGFjZUlEKSk7Ci0KLSAgICAgICAgbV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMuZ2V0
KHN0b3JhZ2VOYW1lc3BhY2VJRCktPmFkZEFsbG93ZWRDb25uZWN0aW9uKGFsbG93ZWRDb25uZWN0
aW9uSUQpOwotICAgIH0pOwotfQotCi12b2lkIFN0b3JhZ2VNYW5hZ2VyOjpyZW1vdmVBbGxvd2Vk
U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0aW9uKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3Bh
Y2VJRCwgSVBDOjpDb25uZWN0aW9uJiBhbGxvd2VkQ29ubmVjdGlvbikKLXsKLSAgICBhdXRvIGFs
bG93ZWRDb25uZWN0aW9uSUQgPSBhbGxvd2VkQ29ubmVjdGlvbi51bmlxdWVJRCgpOwotICAgIG1f
cXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGFs
bG93ZWRDb25uZWN0aW9uSUQsIHN0b3JhZ2VOYW1lc3BhY2VJRF0oKSBtdXRhYmxlIHsKLSAgICAg
ICAgQVNTRVJUKG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLmNvbnRhaW5zKHN0b3JhZ2VOYW1l
c3BhY2VJRCkpOwotICAgICAgICBpZiAoYXV0byogc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UgPSBt
X3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlcy5nZXQoc3RvcmFnZU5hbWVzcGFjZUlEKSkKLSAgICAg
ICAgICAgIHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlLT5yZW1vdmVBbGxvd2VkQ29ubmVjdGlvbihh
bGxvd2VkQ29ubmVjdGlvbklEKTsKLSAgICB9KTsKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFp
bigpKTsKKyAgICBBU1NFUlQobV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMuY29udGFpbnMoc3Rv
cmFnZU5hbWVzcGFjZUlEKSk7CisgICAgaWYgKGF1dG8qIHNlc3Npb25TdG9yYWdlTmFtZXNwYWNl
ID0gbV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMuZ2V0KHN0b3JhZ2VOYW1lc3BhY2VJRCkpCisg
ICAgICAgIG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLnJlbW92ZShzdG9yYWdlTmFtZXNwYWNl
SUQpOwogfQogCiB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpjbG9uZVNlc3Npb25TdG9yYWdlTmFtZXNw
YWNlKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgdWludDY0X3QgbmV3U3RvcmFnZU5hbWVz
cGFjZUlEKQogewotICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIHN0b3JhZ2VOYW1lc3BhY2VJRCwgbmV3U3RvcmFnZU5hbWVzcGFjZUlE
XSB7Ci0gICAgICAgIFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKiBzZXNzaW9uU3RvcmFnZU5hbWVz
cGFjZSA9IG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLmdldChzdG9yYWdlTmFtZXNwYWNlSUQp
OwotICAgICAgICBpZiAoIXNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKSB7Ci0gICAgICAgICAgICAv
LyBGSVhNRTogV2UgY2FuIGdldCBpbnRvIHRoaXMgc2l0dWF0aW9uIGlmIHNvbWVvbmUgY2xvc2Vz
IHRoZSBvcmlnaW5hdGluZyBwYWdlIGZyb20gd2l0aGluIGEKLSAgICAgICAgICAgIC8vIGNyZWF0
ZU5ld1BhZ2UgY2FsbGJhY2suIFdlIGJhaWwgZm9yIG5vdywgYnV0IHdlIHNob3VsZCByZWFsbHkg
ZmluZCBhIHdheSB0byBrZWVwIHRoZSBzZXNzaW9uIHN0b3JhZ2UgYWxpdmUKLSAgICAgICAgICAg
IC8vIHNvIHdlIHdlJ2xsIGNsb25lIHRoZSBzZXNzaW9uIHN0b3JhZ2UgY29ycmVjdGx5LgotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgU2Vzc2lvblN0b3JhZ2VOYW1l
c3BhY2UqIG5ld1Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlID0gbV9zZXNzaW9uU3RvcmFnZU5hbWVz
cGFjZXMuZ2V0KG5ld1N0b3JhZ2VOYW1lc3BhY2VJRCk7Ci0gICAgICAgIEFTU0VSVChuZXdTZXNz
aW9uU3RvcmFnZU5hbWVzcGFjZSk7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Cisg
ICAgU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UqIHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlID0gbV9z
ZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMuZ2V0KHN0b3JhZ2VOYW1lc3BhY2VJRCk7CisgICAgaWYg
KCFzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHNl
c3Npb25TdG9yYWdlTmFtZXNwYWNlLT5jbG9uZVRvKCpuZXdTZXNzaW9uU3RvcmFnZU5hbWVzcGFj
ZSk7CisgICAgU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UqIG5ld1Nlc3Npb25TdG9yYWdlTmFtZXNw
YWNlID0gZ2V0T3JDcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShuZXdTdG9yYWdlTmFtZXNw
YWNlSUQpOworICAgIEFTU0VSVChuZXdTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSk7CiAKLSAgICAg
ICAgaWYgKCFtX2xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcikgewotICAgICAgICAgICAgaWYg
KGF1dG8qIGxvY2FsU3RvcmFnZU5hbWVzcGFjZSA9IG1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlcy5n
ZXQoc3RvcmFnZU5hbWVzcGFjZUlEKSkgewotICAgICAgICAgICAgICAgIExvY2FsU3RvcmFnZU5h
bWVzcGFjZSogbmV3bG9jYWxTdG9yYWdlTmFtZXNwYWNlID0gZ2V0T3JDcmVhdGVMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UobmV3U3RvcmFnZU5hbWVzcGFjZUlEKTsKLSAgICAgICAgICAgICAgICBsb2Nh
bFN0b3JhZ2VOYW1lc3BhY2UtPmNsb25lVG8oKm5ld2xvY2FsU3RvcmFnZU5hbWVzcGFjZSk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9KTsKLX0KLQotdm9pZCBTdG9yYWdlTWFuYWdl
cjo6cHJvY2Vzc0RpZENsb3NlQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24p
Ci17Ci0gICAgaWYgKG1fY29ubmVjdGlvbnMucmVtb3ZlKGNvbm5lY3Rpb24udW5pcXVlSUQoKSkp
Ci0gICAgICAgIGNvbm5lY3Rpb24ucmVtb3ZlV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKE1lc3Nh
Z2VzOjpTdG9yYWdlTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKLQotICAgIG1fcXVl
dWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbm5l
Y3Rpb25JRCA9IGNvbm5lY3Rpb24udW5pcXVlSUQoKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgVmVj
dG9yPHN0ZDo6cGFpcjxJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCB1aW50NjRfdD4+IGNvbm5l
Y3Rpb25BbmRTdG9yYWdlTWFwSURQYWlyc1RvUmVtb3ZlOwotICAgICAgICBmb3IgKGF1dG8mIHN0
b3JhZ2VBcmVhIDogbV9zdG9yYWdlQXJlYXNCeUNvbm5lY3Rpb24pIHsKLSAgICAgICAgICAgIGlm
IChzdG9yYWdlQXJlYS5rZXkuZmlyc3QgIT0gY29ubmVjdGlvbklEKQotICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBzdG9yYWdlQXJlYS52YWx1ZS0+
cmVtb3ZlTGlzdGVuZXIoc3RvcmFnZUFyZWEua2V5LmZpcnN0LCBzdG9yYWdlQXJlYS5rZXkuc2Vj
b25kKTsKLSAgICAgICAgICAgIGNvbm5lY3Rpb25BbmRTdG9yYWdlTWFwSURQYWlyc1RvUmVtb3Zl
LmFwcGVuZChzdG9yYWdlQXJlYS5rZXkpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBm
b3IgKGF1dG8mIHBhaXIgOiBjb25uZWN0aW9uQW5kU3RvcmFnZU1hcElEUGFpcnNUb1JlbW92ZSkK
LSAgICAgICAgICAgIG1fc3RvcmFnZUFyZWFzQnlDb25uZWN0aW9uLnJlbW92ZShwYWlyKTsKLQot
ICAgICAgICBWZWN0b3I8dWludDY0X3Q+IHNlc3Npb25TdG9yYWdlTmFtZVNwYWNlSURzVG9SZW1v
dmU7Ci0gICAgICAgIGZvciAoYXV0byYgc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UgOiBtX3Nlc3Np
b25TdG9yYWdlTmFtZXNwYWNlcykgewotICAgICAgICAgICAgaWYgKHNlc3Npb25TdG9yYWdlTmFt
ZXNwYWNlLnZhbHVlLT5hbGxvd2VkQ29ubmVjdGlvbnMoKS5jb250YWlucyhjb25uZWN0aW9uSUQp
KQotICAgICAgICAgICAgICAgIHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlLnZhbHVlLT5yZW1vdmVB
bGxvd2VkQ29ubmVjdGlvbihjb25uZWN0aW9uSUQpOwotICAgICAgICAgICAgCi0gICAgICAgICAg
ICBpZiAoc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UudmFsdWUtPmFsbG93ZWRDb25uZWN0aW9ucygp
LmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICBzZXNzaW9uU3RvcmFnZU5hbWVTcGFjZUlEc1Rv
UmVtb3ZlLmFwcGVuZChzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS5rZXkpOwotICAgICAgICB9Ci0g
ICAgICAgIAotICAgICAgICBmb3IgKGF1dG8gaWQgOiBzZXNzaW9uU3RvcmFnZU5hbWVTcGFjZUlE
c1RvUmVtb3ZlKQotICAgICAgICAgICAgbV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMucmVtb3Zl
KGlkKTsKLSAgICB9KTsKKyAgICBzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS0+Y2xvbmVUbygqbmV3
U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UpOwogfQogCiB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpnZXRT
ZXNzaW9uU3RvcmFnZU9yaWdpbnMoRnVuY3Rpb248dm9pZChIYXNoU2V0PFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgbV9xdWV1ZS0+
ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKLSAgICAg
ICAgSGFzaFNldDxTZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdpbnM7Ci0KLSAgICAgICAgZm9yIChj
b25zdCBhdXRvJiBzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSA6IG1fc2Vzc2lvblN0b3JhZ2VOYW1l
c3BhY2VzLnZhbHVlcygpKSB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IHNlc3Np
b25TdG9yYWdlTmFtZXNwYWNlLT5vcmlnaW5zKCkpCi0gICAgICAgICAgICAgICAgb3JpZ2lucy5h
ZGQob3JpZ2luKTsKLSAgICAgICAgfQotCi0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRj
aChbb3JpZ2lucyA9IFdURk1vdmUob3JpZ2lucyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihXVEZNb3ZlKG9yaWdpbnMpKTsKLSAgICAgICAgfSk7CisgICAgQVNTRVJUKCFSdW5M
b29wOjppc01haW4oKSk7CisgICAgSGFzaFNldDxTZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdpbnM7
CisgICAgZm9yIChjb25zdCBhdXRvJiBzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSA6IG1fc2Vzc2lv
blN0b3JhZ2VOYW1lc3BhY2VzLnZhbHVlcygpKSB7CisgICAgICAgIGZvciAoYXV0byYgb3JpZ2lu
IDogc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UtPm9yaWdpbnMoKSkKKyAgICAgICAgICAgIG9yaWdp
bnMuYWRkKG9yaWdpbik7CisgICAgfQorICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbb3Jp
Z2lucyA9IFdURk1vdmUob3JpZ2lucyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdU
Rk1vdmUob3JpZ2lucykpOwogICAgIH0pOwogfQogCiB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpkZWxl
dGVTZXNzaW9uU3RvcmFnZU9yaWdpbnMoRnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewotICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildKCkgbXV0YWJsZSB7Ci0gICAgICAgIGZvciAoYXV0byYgc2Vzc2lvblN0b3JhZ2VOYW1lc3Bh
Y2UgOiBtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkKLSAgICAgICAgICAgIHNl
c3Npb25TdG9yYWdlTmFtZXNwYWNlLT5jbGVhckFsbFN0b3JhZ2VBcmVhcygpOworICAgIGZvciAo
YXV0byYgc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UgOiBtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNl
cy52YWx1ZXMoKSkKKyAgICAgICAgc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UtPmNsZWFyQWxsU3Rv
cmFnZUFyZWFzKCk7CiAKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICB9KTsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0
Y2goV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIFN0b3JhZ2VNYW5hZ2Vy
OjpkZWxldGVTZXNzaW9uU3RvcmFnZUVudHJpZXNGb3JPcmlnaW5zKGNvbnN0IFZlY3RvcjxXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiBvcmlnaW5zLCBGdW5jdGlvbjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29waWVkT3JpZ2lucyA9IGNyb3NzVGhyZWFkQ29weShv
cmlnaW5zKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0o
KSBtdXRhYmxlIHsKLSAgICAgICAgZm9yIChhdXRvJiBvcmlnaW4gOiBjb3BpZWRPcmlnaW5zKSB7
Ci0gICAgICAgICAgICBmb3IgKGF1dG8mIHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlIDogbV9zZXNz
aW9uU3RvcmFnZU5hbWVzcGFjZXMudmFsdWVzKCkpCi0gICAgICAgICAgICAgICAgc2Vzc2lvblN0
b3JhZ2VOYW1lc3BhY2UtPmNsZWFyU3RvcmFnZUFyZWFzTWF0Y2hpbmdPcmlnaW4ob3JpZ2luKTsK
LSAgICAgICAgfQorICAgIGZvciAoYXV0byYgb3JpZ2luIDogb3JpZ2lucykgeworICAgICAgICBm
b3IgKGF1dG8mIHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlIDogbV9zZXNzaW9uU3RvcmFnZU5hbWVz
cGFjZXMudmFsdWVzKCkpCisgICAgICAgICAgICBzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS0+Y2xl
YXJTdG9yYWdlQXJlYXNNYXRjaGluZ09yaWdpbihvcmlnaW4pOworICAgIH0KIAotICAgICAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAg
IH0pOworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiB9CiAKIHZvaWQgU3RvcmFnZU1hbmFnZXI6OmdldExvY2FsU3RvcmFnZU9yaWdpbnMo
RnVuY3Rpb248dm9pZChIYXNoU2V0PFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgSGFzaFNldDxTZWN1cml0eU9y
aWdpbkRhdGE+IG9yaWdpbnM7Ci0KLSAgICAgICAgaWYgKG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VU
cmFja2VyKSB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IG1fbG9jYWxTdG9yYWdl
RGF0YWJhc2VUcmFja2VyLT5vcmlnaW5zKCkpCisgICAgSGFzaFNldDxTZWN1cml0eU9yaWdpbkRh
dGE+IG9yaWdpbnM7CisgICAgaWYgKG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyKSB7Cisg
ICAgICAgIGZvciAoYXV0byYgb3JpZ2luIDogbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIt
Pm9yaWdpbnMoKSkKKyAgICAgICAgICAgIG9yaWdpbnMuYWRkKG9yaWdpbi5pc29sYXRlZENvcHko
KSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBsb2NhbFN0b3JhZ2VO
YW1lU3BhY2UgOiBtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZXMudmFsdWVzKCkpIHsKKyAgICAgICAg
ICAgIGZvciAoYXV0byYgb3JpZ2luIDogbG9jYWxTdG9yYWdlTmFtZVNwYWNlLT5lcGhlbWVyYWxP
cmlnaW5zKCkpCiAgICAgICAgICAgICAgICAgb3JpZ2lucy5hZGQob3JpZ2luLmlzb2xhdGVkQ29w
eSgpKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgbG9j
YWxTdG9yYWdlTmFtZVNwYWNlIDogbV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2VzLnZhbHVlcygpKSB7
Ci0gICAgICAgICAgICAgICAgZm9yIChhdXRvJiBvcmlnaW4gOiBsb2NhbFN0b3JhZ2VOYW1lU3Bh
Y2UtPmVwaGVtZXJhbE9yaWdpbnMoKSkKLSAgICAgICAgICAgICAgICAgICAgb3JpZ2lucy5hZGQo
b3JpZ2luLmlzb2xhdGVkQ29weSgpKTsKLSAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgIH0K
IAotICAgICAgICBmb3IgKGF1dG8mIHRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSA6IG1f
dHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkgewotICAgICAgICAgICAg
Zm9yIChhdXRvJiBvcmlnaW4gOiB0cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPm9yaWdp
bnMoKSkKLSAgICAgICAgICAgICAgICBvcmlnaW5zLmFkZChvcmlnaW4uaXNvbGF0ZWRDb3B5KCkp
OwotICAgICAgICB9CisgICAgZm9yIChhdXRvJiB0cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2UgOiBtX3RyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZXMudmFsdWVzKCkpIHsKKyAgICAg
ICAgZm9yIChhdXRvJiBvcmlnaW4gOiB0cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPm9y
aWdpbnMoKSkKKyAgICAgICAgICAgIG9yaWdpbnMuYWRkKG9yaWdpbi5pc29sYXRlZENvcHkoKSk7
CisgICAgfQogCi0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbb3JpZ2lucyA9IFdU
Rk1vdmUob3JpZ2lucyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KG9yaWdpbnMpKTsKLSAgICAgICAgfSk7CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtv
cmlnaW5zID0gV1RGTW92ZShvcmlnaW5zKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
V1RGTW92ZShvcmlnaW5zKSk7CiAgICAgfSk7CiB9CiAKIHZvaWQgU3RvcmFnZU1hbmFnZXI6Omdl
dExvY2FsU3RvcmFnZU9yaWdpbkRldGFpbHMoRnVuY3Rpb248dm9pZChWZWN0b3I8TG9jYWxTdG9y
YWdlRGF0YWJhc2VUcmFja2VyOjpPcmlnaW5EZXRhaWxzPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XSgpIG11dGFibGUgewotICAgICAgICBWZWN0b3I8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2Vy
OjpPcmlnaW5EZXRhaWxzPiBvcmlnaW5EZXRhaWxzOwotICAgICAgICBpZiAobV9sb2NhbFN0b3Jh
Z2VEYXRhYmFzZVRyYWNrZXIpCi0gICAgICAgICAgICBvcmlnaW5EZXRhaWxzID0gbV9sb2NhbFN0
b3JhZ2VEYXRhYmFzZVRyYWNrZXItPm9yaWdpbkRldGFpbHMoKS5pc29sYXRlZENvcHkoKTsKKyAg
ICBWZWN0b3I8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpPcmlnaW5EZXRhaWxzPiBvcmln
aW5EZXRhaWxzOworICAgIGlmIChtX2xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcikKKyAgICAg
ICAgb3JpZ2luRGV0YWlscyA9IG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLT5vcmlnaW5E
ZXRhaWxzKCkuaXNvbGF0ZWRDb3B5KCk7CiAKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3Bh
dGNoKFtvcmlnaW5EZXRhaWxzID0gV1RGTW92ZShvcmlnaW5EZXRhaWxzKSwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKLSAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUob3JpZ2luRGV0YWlscykpOwotICAgICAgICB9
KTsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW29yaWdpbkRldGFpbHMgPSBXVEZNb3Zl
KG9yaWdpbkRldGFpbHMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKG9y
aWdpbkRldGFpbHMpKTsKICAgICB9KTsKIH0KIAotdm9pZCBTdG9yYWdlTWFuYWdlcjo6ZGVsZXRl
TG9jYWxTdG9yYWdlRW50cmllc0Zvck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNl
Y3VyaXR5T3JpZ2luKQordm9pZCBTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlTG9jYWxTdG9yYWdlT3Jp
Z2luc01vZGlmaWVkU2luY2UoV2FsbFRpbWUgdGltZSwgRnVuY3Rpb248dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewotICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIGNvcGllZE9yaWdpbiA9IHNlY3VyaXR5T3JpZ2luLmlzb2xh
dGVkQ29weSgpXSgpIG11dGFibGUgewotICAgICAgICBmb3IgKGF1dG8mIGxvY2FsU3RvcmFnZU5h
bWVzcGFjZSA6IG1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkKLSAgICAgICAgICAg
IGxvY2FsU3RvcmFnZU5hbWVzcGFjZS0+Y2xlYXJTdG9yYWdlQXJlYXNNYXRjaGluZ09yaWdpbihj
b3BpZWRPcmlnaW4pOworICAgIGlmIChtX2xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcikgewor
ICAgICAgICBhdXRvIG9yaWdpbnNUb0RlbGV0ZSA9IG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFj
a2VyLT5kYXRhYmFzZXNNb2RpZmllZFNpbmNlKHRpbWUpOwogCiAgICAgICAgIGZvciAoYXV0byYg
dHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlIDogbV90cmFuc2llbnRMb2NhbFN0b3JhZ2VO
YW1lc3BhY2VzLnZhbHVlcygpKQotICAgICAgICAgICAgdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFt
ZXNwYWNlLT5jbGVhclN0b3JhZ2VBcmVhc01hdGNoaW5nT3JpZ2luKGNvcGllZE9yaWdpbik7Cisg
ICAgICAgICAgICB0cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPmNsZWFyQWxsU3RvcmFn
ZUFyZWFzKCk7CiAKLSAgICAgICAgaWYgKG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyKQot
ICAgICAgICAgICAgbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXItPmRlbGV0ZURhdGFiYXNl
V2l0aE9yaWdpbihjb3BpZWRPcmlnaW4pOwotICAgIH0pOwotfQotCi12b2lkIFN0b3JhZ2VNYW5h
Z2VyOjpkZWxldGVMb2NhbFN0b3JhZ2VPcmlnaW5zTW9kaWZpZWRTaW5jZShXYWxsVGltZSB0aW1l
LCBGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgbV9xdWV1ZS0+
ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdGltZSwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsK
LSAgICAgICAgaWYgKG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyKSB7Ci0gICAgICAgICAg
ICBhdXRvIG9yaWdpbnNUb0RlbGV0ZSA9IG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLT5k
YXRhYmFzZXNNb2RpZmllZFNpbmNlKHRpbWUpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBm
b3IgKGF1dG8mIHRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSA6IG1fdHJhbnNpZW50TG9j
YWxTdG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkKLSAgICAgICAgICAgICAgICB0cmFuc2llbnRM
b2NhbFN0b3JhZ2VOYW1lc3BhY2UtPmNsZWFyQWxsU3RvcmFnZUFyZWFzKCk7Ci0KLSAgICAgICAg
ICAgIGZvciAoY29uc3QgYXV0byYgb3JpZ2luIDogb3JpZ2luc1RvRGVsZXRlKSB7Ci0gICAgICAg
ICAgICAgICAgZm9yIChhdXRvJiBsb2NhbFN0b3JhZ2VOYW1lc3BhY2UgOiBtX2xvY2FsU3RvcmFn
ZU5hbWVzcGFjZXMudmFsdWVzKCkpCi0gICAgICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZU5h
bWVzcGFjZS0+Y2xlYXJTdG9yYWdlQXJlYXNNYXRjaGluZ09yaWdpbihvcmlnaW4pOwotICAgICAg
ICAgICAgICAgIAotICAgICAgICAgICAgICAgIG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2Vy
LT5kZWxldGVEYXRhYmFzZVdpdGhPcmlnaW4ob3JpZ2luKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBvcmlnaW4gOiBvcmlnaW5zVG9E
ZWxldGUpIHsKICAgICAgICAgICAgIGZvciAoYXV0byYgbG9jYWxTdG9yYWdlTmFtZXNwYWNlIDog
bV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2VzLnZhbHVlcygpKQotICAgICAgICAgICAgICAgIGxvY2Fs
U3RvcmFnZU5hbWVzcGFjZS0+Y2xlYXJBbGxTdG9yYWdlQXJlYXMoKTsKKyAgICAgICAgICAgICAg
ICBsb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPmNsZWFyU3RvcmFnZUFyZWFzTWF0Y2hpbmdPcmlnaW4o
b3JpZ2luKTsKKyAgICAgICAgICAgIG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLT5kZWxl
dGVEYXRhYmFzZVdpdGhPcmlnaW4ob3JpZ2luKTsKICAgICAgICAgfQorICAgIH0gZWxzZSB7Cisg
ICAgICAgIGZvciAoYXV0byYgbG9jYWxTdG9yYWdlTmFtZXNwYWNlIDogbV9sb2NhbFN0b3JhZ2VO
YW1lc3BhY2VzLnZhbHVlcygpKQorICAgICAgICAgICAgbG9jYWxTdG9yYWdlTmFtZXNwYWNlLT5j
bGVhckFsbFN0b3JhZ2VBcmVhcygpOworICAgIH0KIAotICAgICAgICBSdW5Mb29wOjptYWluKCku
ZGlzcGF0Y2goV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgIH0pOworICAgIFJ1bkxv
b3A6Om1haW4oKS5kaXNwYXRjaChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZv
aWQgU3RvcmFnZU1hbmFnZXI6OmRlbGV0ZUxvY2FsU3RvcmFnZUVudHJpZXNGb3JPcmlnaW5zKGNv
bnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiBvcmlnaW5zLCBGdW5jdGlv
bjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2go
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29waWVkT3JpZ2lucyA9IGNy
b3NzVGhyZWFkQ29weShvcmlnaW5zKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgZm9yIChhdXRvJiBvcmlnaW4gOiBj
b3BpZWRPcmlnaW5zKSB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8mIGxvY2FsU3RvcmFnZU5hbWVz
cGFjZSA6IG1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkKLSAgICAgICAgICAgICAg
ICBsb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPmNsZWFyU3RvcmFnZUFyZWFzTWF0Y2hpbmdPcmlnaW4o
b3JpZ2luKTsKKyAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IG9yaWdpbnMpIHsKKyAgICAgICAgZm9y
IChhdXRvJiBsb2NhbFN0b3JhZ2VOYW1lc3BhY2UgOiBtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZXMu
dmFsdWVzKCkpCisgICAgICAgICAgICBsb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPmNsZWFyU3RvcmFn
ZUFyZWFzTWF0Y2hpbmdPcmlnaW4ob3JpZ2luKTsKIAotICAgICAgICAgICAgZm9yIChhdXRvJiB0
cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UgOiBtX3RyYW5zaWVudExvY2FsU3RvcmFnZU5h
bWVzcGFjZXMudmFsdWVzKCkpCi0gICAgICAgICAgICAgICAgdHJhbnNpZW50TG9jYWxTdG9yYWdl
TmFtZXNwYWNlLT5jbGVhclN0b3JhZ2VBcmVhc01hdGNoaW5nT3JpZ2luKG9yaWdpbik7CisgICAg
ICAgIGZvciAoYXV0byYgdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlIDogbV90cmFuc2ll
bnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2VzLnZhbHVlcygpKQorICAgICAgICAgICAgdHJhbnNpZW50
TG9jYWxTdG9yYWdlTmFtZXNwYWNlLT5jbGVhclN0b3JhZ2VBcmVhc01hdGNoaW5nT3JpZ2luKG9y
aWdpbik7CiAKLSAgICAgICAgICAgIGlmIChtX2xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcikK
LSAgICAgICAgICAgICAgICBtX2xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci0+ZGVsZXRlRGF0
YWJhc2VXaXRoT3JpZ2luKG9yaWdpbik7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKG1fbG9jYWxT
dG9yYWdlRGF0YWJhc2VUcmFja2VyKQorICAgICAgICAgICAgbV9sb2NhbFN0b3JhZ2VEYXRhYmFz
ZVRyYWNrZXItPmRlbGV0ZURhdGFiYXNlV2l0aE9yaWdpbihvcmlnaW4pOworICAgIH0KIAotICAg
ICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwotICAgIH0pOworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZUxvY2FsU3RvcmFn
ZU1hcChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCwg
dWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBTZWN1cml0eU9yaWdpbkRhdGEmJiBzZWN1cml0
eU9yaWdpbkRhdGEpCitTdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUFyZWEqIFN0b3JhZ2VNYW5hZ2Vy
OjpjcmVhdGVMb2NhbFN0b3JhZ2VBcmVhKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgb3JpZ2luRGF0YSkKIHsKICAgICBBU1NFUlQoIVJ1
bkxvb3A6OmlzTWFpbigpKTsKLSAgICBhdXRvIGNvbm5lY3Rpb25JRCA9IGNvbm5lY3Rpb24udW5p
cXVlSUQoKTsKLSAgICBzdGQ6OnBhaXI8SVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCwgdWludDY0
X3Q+IGNvbm5lY3Rpb25BbmRTdG9yYWdlTWFwSURQYWlyKGNvbm5lY3Rpb25JRCwgc3RvcmFnZU1h
cElEKTsKLQotICAgIEFTU0VSVCgoSGFzaE1hcDxzdGQ6OnBhaXI8SVBDOjpDb25uZWN0aW9uOjpV
bmlxdWVJRCwgdWludDY0X3Q+LCBSZWZQdHI8U3RvcmFnZUFyZWE+Pjo6aXNWYWxpZEtleShjb25u
ZWN0aW9uQW5kU3RvcmFnZU1hcElEUGFpcikpKTsKLQotICAgIGF1dG8gcmVzdWx0ID0gbV9zdG9y
YWdlQXJlYXNCeUNvbm5lY3Rpb24uYWRkKGNvbm5lY3Rpb25BbmRTdG9yYWdlTWFwSURQYWlyLCBu
dWxscHRyKTsKLSAgICBBU1NFUlQocmVzdWx0LmlzTmV3RW50cnkpOwogICAgIEFTU0VSVCgoSGFz
aE1hcDx1aW50NjRfdCwgUmVmUHRyPExvY2FsU3RvcmFnZU5hbWVzcGFjZT4+Ojppc1ZhbGlkS2V5
KHN0b3JhZ2VOYW1lc3BhY2VJRCkpKTsKIAogICAgIExvY2FsU3RvcmFnZU5hbWVzcGFjZSogbG9j
YWxTdG9yYWdlTmFtZXNwYWNlID0gZ2V0T3JDcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2Uoc3Rv
cmFnZU5hbWVzcGFjZUlEKTsKICAgICBBU1NFUlQobG9jYWxTdG9yYWdlTmFtZXNwYWNlKTsKIAot
ICAgIGF1dG8gc3RvcmFnZUFyZWEgPSBsb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPmdldE9yQ3JlYXRl
U3RvcmFnZUFyZWEoV1RGTW92ZShzZWN1cml0eU9yaWdpbkRhdGEpLCBtX2xvY2FsU3RvcmFnZURh
dGFiYXNlVHJhY2tlciA/IFN0b3JhZ2VNYW5hZ2VyOjpMb2NhbFN0b3JhZ2VOYW1lc3BhY2U6Oklz
RXBoZW1lcmFsOjpObyA6IFN0b3JhZ2VNYW5hZ2VyOjpMb2NhbFN0b3JhZ2VOYW1lc3BhY2U6Oklz
RXBoZW1lcmFsOjpZZXMpOwotICAgIHN0b3JhZ2VBcmVhLT5hZGRMaXN0ZW5lcihjb25uZWN0aW9u
SUQsIHN0b3JhZ2VNYXBJRCk7Ci0KLSAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gV1RGTW92
ZShzdG9yYWdlQXJlYSk7Ci19Ci0KLXZvaWQgU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZVRyYW5zaWVu
dExvY2FsU3RvcmFnZU1hcChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVpbnQ2NF90IHN0
b3JhZ2VNYXBJRCwgdWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBTZWN1cml0eU9yaWdpbkRh
dGEmJiB0b3BMZXZlbE9yaWdpbkRhdGEsIFNlY3VyaXR5T3JpZ2luRGF0YSYmIG9yaWdpbikKLXsK
LSAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBhdXRvIGNvbm5lY3Rpb25JRCA9
IGNvbm5lY3Rpb24udW5pcXVlSUQoKTsKLQotICAgIEFTU0VSVChtX3N0b3JhZ2VBcmVhc0J5Q29u
bmVjdGlvbi5pc1ZhbGlkS2V5KHsgY29ubmVjdGlvbklELCBzdG9yYWdlTWFwSUQgfSkpOwotCi0g
ICAgLy8gU2VlIGlmIHdlIGFscmVhZHkgaGF2ZSBzZXNzaW9uIHN0b3JhZ2UgZm9yIHRoaXMgY29u
bmVjdGlvbi9vcmlnaW4gY29tYm8uCi0gICAgLy8gSWYgc28sIHVwZGF0ZSB0aGUgbWFwIHdpdGgg
dGhlIG5ldyBJRCwgb3RoZXJ3aXNlIGtlZXAgb24gdHJ1Y2tpbmcuCi0gICAgZm9yIChhdXRvIGl0
ID0gbV9zdG9yYWdlQXJlYXNCeUNvbm5lY3Rpb24uYmVnaW4oKSwgZW5kID0gbV9zdG9yYWdlQXJl
YXNCeUNvbm5lY3Rpb24uZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBpZiAoaXQt
PmtleS5maXJzdCAhPSBjb25uZWN0aW9uSUQpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgUmVmPFN0b3JhZ2VBcmVhPiBhcmVhID0gKml0LT52YWx1ZTsKLSAgICAgICAgaWYgKCFhcmVh
LT5pc0VwaGVtZXJhbCgpKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmICghb3Jp
Z2luLnNlY3VyaXR5T3JpZ2luKCktPmlzU2FtZVNjaGVtZUhvc3RQb3J0KGFyZWEtPnNlY3VyaXR5
T3JpZ2luKCkuc2VjdXJpdHlPcmlnaW4oKS5nZXQoKSkpCi0gICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgYXJlYS0+YWRkTGlzdGVuZXIoY29ubmVjdGlvbklELCBzdG9yYWdlTWFwSUQpOwot
ICAgICAgICAvLyBJZiB0aGUgc3RvcmFnZU1hcElEIHVzZWQgYXMga2V5IGluIG1fc3RvcmFnZUFy
ZWFzQnlDb25uZWN0aW9uIGlzIG5vIGxvbmdlciBvbmUgb2YgdGhlIFN0b3JhZ2VBcmVhJ3MgbGlz
dGVuZXJzLCB0aGVuIHRoaXMgbWVhbnMKLSAgICAgICAgLy8gdGhhdCBkZXN0cm95U3RvcmFnZU1h
cCgpIHdhcyBhbHJlYWR5IGNhbGxlZCBmb3IgdGhhdCBzdG9yYWdlTWFwSUQgYnV0IGl0IGRlY2lk
ZWQgbm90IHRvIHJlbW92ZSBpdCBmcm9tIG1fc3RvcmFnZUFyZWFzQnlDb25uZWN0aW9uCi0gICAg
ICAgIC8vIHNvIHRoYXQgd2UgY291bGQgcmV1c2UgaXQgbGF0ZXIgb24gZm9yIHRoZSBzYW1lIGNv
bm5lY3Rpb24vb3JpZ2luIGNvbWJvLiBJbiB0aGlzIGNhc2UsIGl0IGlzIHNhZmUgdG8gcmVtb3Zl
IHRoZSBwcmV2aW91cwotICAgICAgICAvLyBzdG9yYWdlTWFwSUQgZnJvbSBtX3N0b3JhZ2VBcmVh
c0J5Q29ubmVjdGlvbi4KLSAgICAgICAgaWYgKCFhcmVhLT5oYXNMaXN0ZW5lcihjb25uZWN0aW9u
SUQsIGl0LT5rZXkuc2Vjb25kKSkKLSAgICAgICAgICAgIG1fc3RvcmFnZUFyZWFzQnlDb25uZWN0
aW9uLnJlbW92ZShpdCk7Ci0gICAgICAgIG1fc3RvcmFnZUFyZWFzQnlDb25uZWN0aW9uLmFkZCh7
IGNvbm5lY3Rpb25JRCwgc3RvcmFnZU1hcElEIH0sIFdURk1vdmUoYXJlYSkpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgYXV0byYgc2xvdCA9IG1fc3RvcmFnZUFyZWFzQnlDb25uZWN0
aW9uLmFkZCh7IGNvbm5lY3Rpb25JRCwgc3RvcmFnZU1hcElEIH0sIG51bGxwdHIpLml0ZXJhdG9y
LT52YWx1ZTsKLSAgICBBU1NFUlQoIXNsb3QpOwotCi0gICAgYXV0byogdHJhbnNpZW50TG9jYWxT
dG9yYWdlTmFtZXNwYWNlID0gZ2V0T3JDcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2Uoc3RvcmFnZU5hbWVzcGFjZUlELCBXVEZNb3ZlKHRvcExldmVsT3JpZ2luRGF0YSkpOwotCi0g
ICAgYXV0byBzdG9yYWdlQXJlYSA9IHRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZS0+Z2V0
T3JDcmVhdGVTdG9yYWdlQXJlYShXVEZNb3ZlKG9yaWdpbikpOwotICAgIHN0b3JhZ2VBcmVhLT5h
ZGRMaXN0ZW5lcihjb25uZWN0aW9uSUQsIHN0b3JhZ2VNYXBJRCk7Ci0KLSAgICBzbG90ID0gV1RG
TW92ZShzdG9yYWdlQXJlYSk7Ci19Ci0KLXZvaWQgU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZVNlc3Np
b25TdG9yYWdlTWFwKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgdWludDY0X3Qgc3RvcmFn
ZU1hcElELCB1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIFNlY3VyaXR5T3JpZ2luRGF0YSYm
IHNlY3VyaXR5T3JpZ2luRGF0YSkKLXsKLSAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsK
LSAgICBhdXRvIGNvbm5lY3Rpb25JRCA9IGNvbm5lY3Rpb24udW5pcXVlSUQoKTsKLSAgICBBU1NF
UlQobV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMuaXNWYWxpZEtleShzdG9yYWdlTmFtZXNwYWNl
SUQpKTsKLQotICAgIFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKiBzZXNzaW9uU3RvcmFnZU5hbWVz
cGFjZSA9IG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLmdldChzdG9yYWdlTmFtZXNwYWNlSUQp
OwotICAgIGlmICghc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UpIHsKLSAgICAgICAgLy8gV2UncmUg
Z2V0dGluZyBhbiBpbmNvbWluZyBtZXNzYWdlIGZyb20gdGhlIHdlYiBwcm9jZXNzIHRoYXQncyBm
b3Igc2Vzc2lvbiBzdG9yYWdlIGZvciBhIHdlYiBwYWdlCi0gICAgICAgIC8vIHRoYXQgaGFzIGFs
cmVhZHkgYmVlbiBjbG9zZWQsIGp1c3QgaWdub3JlIGl0LgotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgQVNTRVJUKG1fc3RvcmFnZUFyZWFzQnlDb25uZWN0aW9uLmlzVmFsaWRLZXkoeyBj
b25uZWN0aW9uSUQsIHN0b3JhZ2VNYXBJRCB9KSk7Ci0KLSAgICBhdXRvJiBzbG90ID0gbV9zdG9y
YWdlQXJlYXNCeUNvbm5lY3Rpb24uYWRkKHsgY29ubmVjdGlvbklELCBzdG9yYWdlTWFwSUQgfSwg
bnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwotICAgIEFTU0VSVCghc2xvdCk7Ci0gICAgQVNTRVJU
KHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlLT5hbGxvd2VkQ29ubmVjdGlvbnMoKS5jb250YWlucyhj
b25uZWN0aW9uSUQpKTsKLQotICAgIGF1dG8gc3RvcmFnZUFyZWEgPSBzZXNzaW9uU3RvcmFnZU5h
bWVzcGFjZS0+Z2V0T3JDcmVhdGVTdG9yYWdlQXJlYShXVEZNb3ZlKHNlY3VyaXR5T3JpZ2luRGF0
YSkpOwotICAgIHN0b3JhZ2VBcmVhLT5hZGRMaXN0ZW5lcihjb25uZWN0aW9uSUQsIHN0b3JhZ2VN
YXBJRCk7Ci0KLSAgICBzbG90ID0gV1RGTW92ZShzdG9yYWdlQXJlYSk7Ci19Ci0KLXZvaWQgU3Rv
cmFnZU1hbmFnZXI6OmRlc3Ryb3lTdG9yYWdlTWFwKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgdWludDY0X3Qgc3RvcmFnZU1hcElEKQotewotICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWlu
KCkpOwotICAgIGF1dG8gY29ubmVjdGlvbklEID0gY29ubmVjdGlvbi51bmlxdWVJRCgpOwotCi0g
ICAgc3RkOjpwYWlyPElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIHVpbnQ2NF90PiBjb25uZWN0
aW9uQW5kU3RvcmFnZU1hcElEUGFpcihjb25uZWN0aW9uSUQsIHN0b3JhZ2VNYXBJRCk7Ci0gICAg
QVNTRVJUKG1fc3RvcmFnZUFyZWFzQnlDb25uZWN0aW9uLmlzVmFsaWRLZXkoY29ubmVjdGlvbkFu
ZFN0b3JhZ2VNYXBJRFBhaXIpKTsKLQotICAgIGF1dG8gaXQgPSBtX3N0b3JhZ2VBcmVhc0J5Q29u
bmVjdGlvbi5maW5kKGNvbm5lY3Rpb25BbmRTdG9yYWdlTWFwSURQYWlyKTsKLSAgICBpZiAoaXQg
PT0gbV9zdG9yYWdlQXJlYXNCeUNvbm5lY3Rpb24uZW5kKCkpIHsKLSAgICAgICAgLy8gVGhlIGNv
bm5lY3Rpb24gaGFzIGJlZW4gcmVtb3ZlZCBiZWNhdXNlIHRoZSBsYXN0IHBhZ2Ugd2FzIGNsb3Nl
ZC4KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGl0LT52YWx1ZS0+cmVtb3ZlTGlzdGVu
ZXIoY29ubmVjdGlvbklELCBzdG9yYWdlTWFwSUQpOwotCi0gICAgLy8gRG9uJ3QgcmVtb3ZlIHNl
c3Npb24gc3RvcmFnZSBtYXBzLiBUaGUgd2ViIHByb2Nlc3MgbWF5IHJlY29ubmVjdCBhbmQgZXhw
ZWN0IHRoZSBkYXRhIHRvIHN0aWxsIGJlIGFyb3VuZC4KLSAgICBpZiAoaXQtPnZhbHVlLT5pc0Vw
aGVtZXJhbCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3N0b3JhZ2VBcmVhc0J5Q29ubmVj
dGlvbi5yZW1vdmUoY29ubmVjdGlvbkFuZFN0b3JhZ2VNYXBJRFBhaXIpOwotfQotCi12b2lkIFN0
b3JhZ2VNYW5hZ2VyOjpwcmV3YXJtKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgdWludDY0
X3Qgc3RvcmFnZU1hcElEKQotewotICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAg
IGlmIChhdXRvKiBzdG9yYWdlQXJlYSA9IGZpbmRTdG9yYWdlQXJlYShjb25uZWN0aW9uLCBzdG9y
YWdlTWFwSUQpKQotICAgICAgICBzdG9yYWdlQXJlYS0+b3BlbkRhdGFiYXNlQW5kSW1wb3J0SXRl
bXNJZk5lZWRlZCgpOwotfQotCi12b2lkIFN0b3JhZ2VNYW5hZ2VyOjpnZXRWYWx1ZXMoSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCB1aW50NjRfdCBzdG9yYWdlTWFwSUQsIHVpbnQ2NF90IHN0
b3JhZ2VNYXBTZWVkLCBHZXRWYWx1ZXNDYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKQotewot
ICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIGF1dG8qIHN0b3JhZ2VBcmVhID0g
ZmluZFN0b3JhZ2VBcmVhKGNvbm5lY3Rpb24sIHN0b3JhZ2VNYXBJRCk7Ci0KLSAgICAvLyBUaGlz
IGlzIGEgc2Vzc2lvbiBzdG9yYWdlIGFyZWEgZm9yIGEgcGFnZSB0aGF0IGhhcyBhbHJlYWR5IGJl
ZW4gY2xvc2VkLiBJZ25vcmUgaXQuCi0gICAgaWYgKCFzdG9yYWdlQXJlYSkKLSAgICAgICAgcmV0
dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7Ci0KLSAgICBjb21wbGV0aW9uSGFuZGxlcihzdG9y
YWdlQXJlYS0+aXRlbXMoKSk7Ci0gICAgY29ubmVjdGlvbi5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdl
QXJlYU1hcDo6RGlkR2V0VmFsdWVzKHN0b3JhZ2VNYXBTZWVkKSwgc3RvcmFnZU1hcElEKTsKLX0K
LQotdm9pZCBTdG9yYWdlTWFuYWdlcjo6c2V0SXRlbShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIHNlY3VyaXR5T3JpZ2luRGF0YSwgdWlu
dDY0X3Qgc3RvcmFnZU1hcElELCB1aW50NjRfdCBzb3VyY2VTdG9yYWdlQXJlYUlELCB1aW50NjRf
dCBzdG9yYWdlTWFwU2VlZCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUs
IGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQotewotICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWlu
KCkpOwotICAgIGF1dG8qIHN0b3JhZ2VBcmVhID0gZmluZFN0b3JhZ2VBcmVhKGNvbm5lY3Rpb24s
IHN0b3JhZ2VNYXBJRCk7Ci0KLSAgICAvLyBUaGlzIGlzIGEgc2Vzc2lvbiBzdG9yYWdlIGFyZWEg
Zm9yIGEgcGFnZSB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gY2xvc2VkLiBJZ25vcmUgaXQuCi0gICAg
aWYgKCFzdG9yYWdlQXJlYSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYm9vbCBxdW90YUVycm9y
OwotICAgIHN0b3JhZ2VBcmVhLT5zZXRJdGVtKGNvbm5lY3Rpb24udW5pcXVlSUQoKSwgc291cmNl
U3RvcmFnZUFyZWFJRCwga2V5LCB2YWx1ZSwgdXJsU3RyaW5nLCBxdW90YUVycm9yKTsKLSAgICBj
b25uZWN0aW9uLnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VBcmVhTWFwOjpEaWRTZXRJdGVtKHN0b3Jh
Z2VNYXBTZWVkLCBrZXksIHF1b3RhRXJyb3IpLCBzdG9yYWdlTWFwSUQpOwotfQotCi12b2lkIFN0
b3JhZ2VNYW5hZ2VyOjpzZXRJdGVtcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVpbnQ2
NF90IHN0b3JhZ2VNYXBJRCwgY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIGl0ZW1zKQot
ewotICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIGlmIChhdXRvKiBzdG9yYWdl
QXJlYSA9IGZpbmRTdG9yYWdlQXJlYShjb25uZWN0aW9uLCBzdG9yYWdlTWFwSUQpKQotICAgICAg
ICBzdG9yYWdlQXJlYS0+c2V0SXRlbXMoaXRlbXMpOworICAgIHJldHVybiBsb2NhbFN0b3JhZ2VO
YW1lc3BhY2UtPmdldE9yQ3JlYXRlU3RvcmFnZUFyZWEoV1RGTW92ZShvcmlnaW5EYXRhKSwgbV9s
b2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIgPyBTdG9yYWdlTWFuYWdlcjo6TG9jYWxTdG9yYWdl
TmFtZXNwYWNlOjpJc0VwaGVtZXJhbDo6Tm8gOiBTdG9yYWdlTWFuYWdlcjo6TG9jYWxTdG9yYWdl
TmFtZXNwYWNlOjpJc0VwaGVtZXJhbDo6WWVzKS5wdHIoKTsKIH0KIAotdm9pZCBTdG9yYWdlTWFu
YWdlcjo6cmVtb3ZlSXRlbShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSYmIHNlY3VyaXR5T3JpZ2luRGF0YSwgdWludDY0X3Qgc3RvcmFnZU1h
cElELCB1aW50NjRfdCBzb3VyY2VTdG9yYWdlQXJlYUlELCB1aW50NjRfdCBzdG9yYWdlTWFwU2Vl
ZCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQorU3RvcmFnZU1h
bmFnZXI6OlN0b3JhZ2VBcmVhKiBTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlVHJhbnNpZW50TG9jYWxT
dG9yYWdlQXJlYSh1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYmIHRvcExldmVsT3JpZ2luRGF0YSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhJiYgb3JpZ2luRGF0YSkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLSAg
ICBhdXRvKiBzdG9yYWdlQXJlYSA9IGZpbmRTdG9yYWdlQXJlYShjb25uZWN0aW9uLCBzdG9yYWdl
TWFwSUQpOworICAgIEFTU0VSVCgoSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFRyYW5zaWVudExv
Y2FsU3RvcmFnZU5hbWVzcGFjZT4+Ojppc1ZhbGlkS2V5KHN0b3JhZ2VOYW1lc3BhY2VJRCkpKTsK
IAotICAgIC8vIFRoaXMgaXMgYSBzZXNzaW9uIHN0b3JhZ2UgYXJlYSBmb3IgYSBwYWdlIHRoYXQg
aGFzIGFscmVhZHkgYmVlbiBjbG9zZWQuIElnbm9yZSBpdC4KLSAgICBpZiAoIXN0b3JhZ2VBcmVh
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBzdG9yYWdlQXJlYS0+cmVtb3ZlSXRlbShjb25uZWN0
aW9uLnVuaXF1ZUlEKCksIHNvdXJjZVN0b3JhZ2VBcmVhSUQsIGtleSwgdXJsU3RyaW5nKTsKLSAg
ICBjb25uZWN0aW9uLnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VBcmVhTWFwOjpEaWRSZW1vdmVJdGVt
KHN0b3JhZ2VNYXBTZWVkLCBrZXkpLCBzdG9yYWdlTWFwSUQpOworICAgIGF1dG8qIHRyYW5zaWVu
dExvY2FsU3RvcmFnZU5hbWVzcGFjZSA9IGdldE9yQ3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdl
TmFtZXNwYWNlKHN0b3JhZ2VOYW1lc3BhY2VJRCwgdG9wTGV2ZWxPcmlnaW5EYXRhLmlzb2xhdGVk
Q29weSgpKTsKKyAgICByZXR1cm4gdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlLT5nZXRP
ckNyZWF0ZVN0b3JhZ2VBcmVhKFdURk1vdmUodG9wTGV2ZWxPcmlnaW5EYXRhKSkucHRyKCk7CiB9
CiAKLXZvaWQgU3RvcmFnZU1hbmFnZXI6OmNsZWFyKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgc2VjdXJpdHlPcmlnaW5EYXRhLCB1aW50
NjRfdCBzdG9yYWdlTWFwSUQsIHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIHVpbnQ2NF90
IHN0b3JhZ2VNYXBTZWVkLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZykKK1N0b3JhZ2VNYW5hZ2Vy
OjpTdG9yYWdlQXJlYSogU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlQXJlYSh1
aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYm
IG9yaWdpbkRhdGEpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgYXV0
byogc3RvcmFnZUFyZWEgPSBmaW5kU3RvcmFnZUFyZWEoY29ubmVjdGlvbiwgc3RvcmFnZU1hcElE
KTsKLQotICAgIC8vIFRoaXMgaXMgYSBzZXNzaW9uIHN0b3JhZ2UgYXJlYSBmb3IgYSBwYWdlIHRo
YXQgaGFzIGFscmVhZHkgYmVlbiBjbG9zZWQuIElnbm9yZSBpdC4KLSAgICBpZiAoIXN0b3JhZ2VB
cmVhKQotICAgICAgICByZXR1cm47CisgICAgQVNTRVJUKChIYXNoTWFwPHVpbnQ2NF90LCBSZWZQ
dHI8U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2U+Pjo6aXNWYWxpZEtleShzdG9yYWdlTmFtZXNwYWNl
SUQpKSk7CiAKLSAgICBzdG9yYWdlQXJlYS0+Y2xlYXIoY29ubmVjdGlvbi51bmlxdWVJRCgpLCBz
b3VyY2VTdG9yYWdlQXJlYUlELCB1cmxTdHJpbmcpOwotICAgIGNvbm5lY3Rpb24uc2VuZChNZXNz
YWdlczo6U3RvcmFnZUFyZWFNYXA6OkRpZENsZWFyKHN0b3JhZ2VNYXBTZWVkKSwgc3RvcmFnZU1h
cElEKTsKLX0KLQotdm9pZCBTdG9yYWdlTWFuYWdlcjo6d2FpdFVudGlsVGFza3NGaW5pc2hlZCgp
Ci17Ci0gICAgQmluYXJ5U2VtYXBob3JlIHNlbWFwaG9yZTsKLSAgICBtX3F1ZXVlLT5kaXNwYXRj
aChbdGhpcywgJnNlbWFwaG9yZV0gewotICAgICAgICBWZWN0b3I8c3RkOjpwYWlyPElQQzo6Q29u
bmVjdGlvbjo6VW5pcXVlSUQsIHVpbnQ2NF90Pj4gY29ubmVjdGlvbkFuZFN0b3JhZ2VNYXBJRFBh
aXJzVG9SZW1vdmU7Ci0gICAgICAgIGZvciAoYXV0byYgY29ubmVjdGlvblN0b3JhZ2VBcmVhUGFp
ciA6IG1fc3RvcmFnZUFyZWFzQnlDb25uZWN0aW9uKSB7Ci0gICAgICAgICAgICBjb25uZWN0aW9u
U3RvcmFnZUFyZWFQYWlyLnZhbHVlLT5yZW1vdmVMaXN0ZW5lcihjb25uZWN0aW9uU3RvcmFnZUFy
ZWFQYWlyLmtleS5maXJzdCwgY29ubmVjdGlvblN0b3JhZ2VBcmVhUGFpci5rZXkuc2Vjb25kKTsK
LSAgICAgICAgICAgIGNvbm5lY3Rpb25BbmRTdG9yYWdlTWFwSURQYWlyc1RvUmVtb3ZlLmFwcGVu
ZChjb25uZWN0aW9uU3RvcmFnZUFyZWFQYWlyLmtleSk7Ci0gICAgICAgIH0KLQotICAgICAgICBm
b3IgKGF1dG8mIGNvbm5lY3Rpb25TdG9yYWdlQXJlYVBhaXIgOiBjb25uZWN0aW9uQW5kU3RvcmFn
ZU1hcElEUGFpcnNUb1JlbW92ZSkKLSAgICAgICAgICAgIG1fc3RvcmFnZUFyZWFzQnlDb25uZWN0
aW9uLnJlbW92ZShjb25uZWN0aW9uU3RvcmFnZUFyZWFQYWlyKTsKLQotICAgICAgICBtX2xvY2Fs
U3RvcmFnZU5hbWVzcGFjZXMuY2xlYXIoKTsKLQotICAgICAgICBzZW1hcGhvcmUuc2lnbmFsKCk7
Ci0gICAgfSk7Ci0gICAgc2VtYXBob3JlLndhaXQoKTsKLX0KLQotdm9pZCBTdG9yYWdlTWFuYWdl
cjo6c3VzcGVuZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Ci17Ci0gICAgQ29tcGxldGlvbkhhbmRsZXJDYWxsaW5nU2NvcGUgY29tcGxldGlvbkhhbmRsZXJD
YWxsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgIGlmICghbV9sb2NhbFN0b3Jh
Z2VEYXRhYmFzZVRyYWNrZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIExvY2tlcjxMb2NrPiBz
dGF0ZUxvY2tlcihtX3N0YXRlTG9jayk7Ci0gICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OlJ1bm5p
bmcpCi0gICAgICAgIHJldHVybjsKLSAgICBtX3N0YXRlID0gU3RhdGU6OldpbGxTdXNwZW5kOwot
Ci0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBjb21wbGV0aW9uSGFuZGxlckNhbGxlci5yZWxlYXNl
KCldICgpIG11dGFibGUgewotICAgICAgICBMb2NrZXI8TG9jaz4gc3RhdGVMb2NrZXIobV9zdGF0
ZUxvY2spOwotICAgICAgICBBU1NFUlQobV9zdGF0ZSAhPSBTdGF0ZTo6U3VzcGVuZGVkKTsKLQot
ICAgICAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6V2lsbFN1c3BlbmQpIHsKLSAgICAgICAgICAg
IFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBtX3N0YXRlID0gU3RhdGU6
OlN1c3BlbmRlZDsKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKLSAgICAgICAgCi0gICAgICAgIHdoaWxlIChtX3N0YXRlID09IFN0
YXRlOjpTdXNwZW5kZWQpCi0gICAgICAgICAgICBtX3N0YXRlQ2hhbmdlQ29uZGl0aW9uLndhaXQo
bV9zdGF0ZUxvY2spOwotICAgICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6UnVubmluZyk7
Ci0gICAgfSk7Ci19Ci0KLXZvaWQgU3RvcmFnZU1hbmFnZXI6OnJlc3VtZSgpCi17Ci0gICAgaWYg
KCFtX2xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
TG9ja2VyPExvY2s+IHN0YXRlTG9ja2VyKG1fc3RhdGVMb2NrKTsKLSAgICBhdXRvIHByZXZpb3Vz
U3RhdGUgPSBtX3N0YXRlOwotICAgIG1fc3RhdGUgPSBTdGF0ZTo6UnVubmluZzsKLSAgICBpZiAo
cHJldmlvdXNTdGF0ZSA9PSBTdGF0ZTo6U3VzcGVuZGVkKQotICAgICAgICBtX3N0YXRlQ2hhbmdl
Q29uZGl0aW9uLm5vdGlmeU9uZSgpOwotfQotCi1TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUFyZWEq
IFN0b3JhZ2VNYW5hZ2VyOjpmaW5kU3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCB1aW50NjRfdCBzdG9yYWdlTWFwSUQpIGNvbnN0Ci17Ci0gICAgc3RkOjpwYWlyPElQQzo6
Q29ubmVjdGlvbjo6VW5pcXVlSUQsIHVpbnQ2NF90PiBjb25uZWN0aW9uQW5kU3RvcmFnZU1hcElE
UGFpcihjb25uZWN0aW9uLnVuaXF1ZUlEKCksIHN0b3JhZ2VNYXBJRCk7Ci0KLSAgICBpZiAoIW1f
c3RvcmFnZUFyZWFzQnlDb25uZWN0aW9uLmlzVmFsaWRLZXkoY29ubmVjdGlvbkFuZFN0b3JhZ2VN
YXBJRFBhaXIpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiBtX3N0b3Jh
Z2VBcmVhc0J5Q29ubmVjdGlvbi5nZXQoY29ubmVjdGlvbkFuZFN0b3JhZ2VNYXBJRFBhaXIpOwor
ICAgIGF1dG8qIHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlID0gZ2V0T3JDcmVhdGVTZXNzaW9uU3Rv
cmFnZU5hbWVzcGFjZShzdG9yYWdlTmFtZXNwYWNlSUQpOworICAgIHJldHVybiBzZXNzaW9uU3Rv
cmFnZU5hbWVzcGFjZS0+Z2V0T3JDcmVhdGVTdG9yYWdlQXJlYShXVEZNb3ZlKG9yaWdpbkRhdGEp
KS5wdHIoKTsKIH0KIAogU3RvcmFnZU1hbmFnZXI6OkxvY2FsU3RvcmFnZU5hbWVzcGFjZSogU3Rv
cmFnZU1hbmFnZXI6OmdldE9yQ3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IHN0
b3JhZ2VOYW1lc3BhY2VJRCkKQEAgLTEwMDAsNCArNTk4LDIyIEBAIFN0b3JhZ2VNYW5hZ2VyOjpU
cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UqIFN0b3JhZ2VNYW5hZ2VyOjpnZXRPckNyZWF0
ZVRyYW5zCiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogfQogCitTdG9yYWdlTWFuYWdl
cjo6U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UqIFN0b3JhZ2VNYW5hZ2VyOjpnZXRPckNyZWF0ZVNl
c3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCkKK3sKKyAg
ICBpZiAoIW1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLmlzVmFsaWRLZXkoc3RvcmFnZU5hbWVz
cGFjZUlEKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gbV9zZXNzaW9u
U3RvcmFnZU5hbWVzcGFjZXMuZW5zdXJlKHN0b3JhZ2VOYW1lc3BhY2VJRCwgW10geworICAgICAg
ICAvLyBXZSBjdXJyZW50bHkgaGF2ZSBubyBsaW1pdCBvbiBzZXNzaW9uIHN0b3JhZ2UuCisgICAg
ICAgIHJldHVybiBTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZTo6Y3JlYXRlKHN0ZDo6bnVtZXJpY19s
aW1pdHM8dW5zaWduZWQ+OjptYXgoKSk7CisgICAgfSkuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwor
fQorCit2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpjbGVhclN0b3JhZ2VOYW1lc3BhY2VzKCkKK3sKKyAg
ICBtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZXMuY2xlYXIoKTsKKyAgICBtX3RyYW5zaWVudExvY2Fs
U3RvcmFnZU5hbWVzcGFjZXMuY2xlYXIoKTsKKyAgICBtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNl
cy5jbGVhcigpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmgKaW5k
ZXggNjBhMjVlM2QxYzMxMGE1YzBiOGZlYTRhYjE0M2VlYjcwZTE1YWMyMi4uODg4NjM1ZjYxMTE4
NDVjNGFmOGExYWYyZmFlODYxNzg3MTRkYzg5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmgKQEAgLTQwLDg4
ICs0MCw5NiBAQCBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
K2NsYXNzIExvY2FsU3RvcmFnZURhdGFiYXNlOwogY2xhc3MgTG9jYWxTdG9yYWdlRGF0YWJhc2VU
cmFja2VyOwogY2xhc3MgV2ViUHJvY2Vzc1Byb3h5OwogCi11c2luZyBHZXRWYWx1ZXNDYWxsYmFj
ayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4m
KT47Ci0KLWNsYXNzIFN0b3JhZ2VNYW5hZ2VyIDogcHVibGljIElQQzo6Q29ubmVjdGlvbjo6V29y
a1F1ZXVlTWVzc2FnZVJlY2VpdmVyIHsKK2NsYXNzIFN0b3JhZ2VNYW5hZ2VyIDogcHVibGljIFJl
ZkNvdW50ZWQ8U3RvcmFnZU1hbmFnZXI+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFN0b3Jh
Z2VNYW5hZ2VyPiBjcmVhdGUoU3RyaW5nJiYgbG9jYWxTdG9yYWdlRGlyZWN0b3J5KTsKICAgICB+
U3RvcmFnZU1hbmFnZXIoKTsKIAogICAgIHZvaWQgY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3Bh
Y2UodWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpOwog
ICAgIHZvaWQgZGVzdHJveVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IHN0b3JhZ2VO
YW1lc3BhY2VJRCk7Ci0gICAgdm9pZCBhZGRBbGxvd2VkU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VD
b25uZWN0aW9uKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgSVBDOjpDb25uZWN0aW9uJik7
Ci0gICAgdm9pZCByZW1vdmVBbGxvd2VkU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0aW9u
KHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgSVBDOjpDb25uZWN0aW9uJik7CiAgICAgdm9p
ZCBjbG9uZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJ
RCwgdWludDY0X3QgbmV3U3RvcmFnZU5hbWVzcGFjZUlEKTsKIAotICAgIHZvaWQgcHJvY2Vzc0Rp
ZENsb3NlQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24mKTsKLSAgICB2b2lkIHdhaXRVbnRpbFRh
c2tzRmluaXNoZWQoKTsKLSAgICB2b2lkIHN1c3BlbmQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKLSAgICB2b2lkIHJlc3VtZSgpOwotCi0gICAgdm9pZCBnZXRTZXNzaW9uU3RvcmFnZU9y
aWdpbnMoRnVuY3Rpb248dm9pZChIYXNoU2V0PFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4m
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpOworICAgIHZvaWQgZ2V0U2Vzc2lvblN0b3JhZ2VPcmln
aW5zKEZ1bmN0aW9uPHZvaWQoSGFzaFNldDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiYp
PiYmKTsKICAgICB2b2lkIGRlbGV0ZVNlc3Npb25TdG9yYWdlT3JpZ2lucyhGdW5jdGlvbjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwotICAgIHZvaWQgZGVsZXRlU2Vzc2lvblN0b3JhZ2VF
bnRyaWVzRm9yT3JpZ2lucyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
PiYsIEZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgdm9pZCBkZWxl
dGVTZXNzaW9uU3RvcmFnZUVudHJpZXNGb3JPcmlnaW5zKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGE+JiwgRnVuY3Rpb248dm9pZCgpPiYmKTsKIAotICAgIHZvaWQgZ2V0
TG9jYWxTdG9yYWdlT3JpZ2lucyhGdW5jdGlvbjx2b2lkKEhhc2hTZXQ8V2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7Ci0gICAgdm9pZCBkZWxldGVM
b2NhbFN0b3JhZ2VFbnRyaWVzRm9yT3JpZ2luKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSYpOworICAgIHZvaWQgZ2V0TG9jYWxTdG9yYWdlT3JpZ2lucyhGdW5jdGlvbjx2b2lkKEhh
c2hTZXQ8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYmKT4mJik7CisgICAgdm9pZCBkZWxl
dGVMb2NhbFN0b3JhZ2VPcmlnaW5zTW9kaWZpZWRTaW5jZShXYWxsVGltZSwgRnVuY3Rpb248dm9p
ZCgpPiYmKTsKKyAgICB2b2lkIGRlbGV0ZUxvY2FsU3RvcmFnZUVudHJpZXNGb3JPcmlnaW5zKGNv
bnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiwgRnVuY3Rpb248dm9pZCgp
PiYmKTsKKyAgICB2b2lkIGdldExvY2FsU3RvcmFnZU9yaWdpbkRldGFpbHMoRnVuY3Rpb248dm9p
ZChWZWN0b3I8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpPcmlnaW5EZXRhaWxzPiYmKT4m
Jik7CisgICAgCisgICAgdm9pZCBjbGVhclN0b3JhZ2VOYW1lc3BhY2VzKCk7CiAKLSAgICB2b2lk
IGRlbGV0ZUxvY2FsU3RvcmFnZU9yaWdpbnNNb2RpZmllZFNpbmNlKFdhbGxUaW1lLCBGdW5jdGlv
bjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwotICAgIHZvaWQgZGVsZXRlTG9jYWxTdG9y
YWdlRW50cmllc0Zvck9yaWdpbnMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YT4mLCBGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOworICAgIGNsYXNz
IExvY2FsU3RvcmFnZU5hbWVzcGFjZTsKKyAgICBjbGFzcyBTdG9yYWdlQXJlYSA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxTdG9yYWdlQXJlYT4geworICAgIHB1YmxpYzoKKyAgICAgICAg
c3RhdGljIFJlZjxTdG9yYWdlQXJlYT4gY3JlYXRlKExvY2FsU3RvcmFnZU5hbWVzcGFjZSosIGNv
bnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcyk7
CisgICAgICAgIH5TdG9yYWdlQXJlYSgpOwogCi0gICAgdm9pZCBnZXRMb2NhbFN0b3JhZ2VPcmln
aW5EZXRhaWxzKEZ1bmN0aW9uPHZvaWQoVmVjdG9yPExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tl
cjo6T3JpZ2luRGV0YWlscz4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpOworICAgICAgICBjb25z
dCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKCkgY29uc3QgeyBy
ZXR1cm4gbV9zZWN1cml0eU9yaWdpbjsgfQorICAgICAgICB1aW50NjRfdCBpZGVudGlmaWVyKCkg
eyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwotICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJ
UEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpOworICAgICAgICB2b2lkIGFkZExpc3RlbmVyKElQ
Qzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQpOworICAgICAgICB2b2lkIHJlbW92ZUxpc3RlbmVyKElQ
Qzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQpOworICAgICAgICBib29sIGhhc0xpc3RlbmVyKElQQzo6
Q29ubmVjdGlvbjo6VW5pcXVlSUQgY29ubmVjdGlvbklEKSB7IHJldHVybiBtX2V2ZW50TGlzdGVu
ZXJzLmNvbnRhaW5zKGNvbm5lY3Rpb25JRCk7IH0KIAotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBT
dG9yYWdlTWFuYWdlcihTdHJpbmcmJiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpOworICAgICAgICBS
ZWY8U3RvcmFnZUFyZWE+IGNsb25lKCkgY29uc3Q7CiAKLSAgICAvLyBNZXNzYWdlIGhhbmRsZXJz
LgotICAgIHZvaWQgY3JlYXRlTG9jYWxTdG9yYWdlTWFwKElQQzo6Q29ubmVjdGlvbiYsIHVpbnQ2
NF90IHN0b3JhZ2VNYXBJRCwgdWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEmJik7Ci0gICAgdm9pZCBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3Jh
Z2VNYXAoSVBDOjpDb25uZWN0aW9uJiwgdWludDY0X3Qgc3RvcmFnZU1hcElELCB1aW50NjRfdCBz
dG9yYWdlTmFtZXNwYWNlSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIHRvcExldmVs
T3JpZ2luRGF0YSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYpOwotICAgIHZvaWQgY3Jl
YXRlU2Vzc2lvblN0b3JhZ2VNYXAoSVBDOjpDb25uZWN0aW9uJiwgdWludDY0X3Qgc3RvcmFnZU1h
cElELCB1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSYmKTsKLSAgICB2b2lkIGRlc3Ryb3lTdG9yYWdlTWFwKElQQzo6Q29ubmVjdGlvbiYsIHVp
bnQ2NF90IHN0b3JhZ2VNYXBJRCk7CisgICAgICAgIHZvaWQgc2V0SXRlbShJUEM6OkNvbm5lY3Rp
b246OlVuaXF1ZUlEIHNvdXJjZUNvbm5lY3Rpb24sIHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVh
SUQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlLCBjb25zdCBTdHJpbmcm
IHVybFN0cmluZywgYm9vbCYgcXVvdGFFeGNlcHRpb24pOworICAgICAgICB2b2lkIHJlbW92ZUl0
ZW0oSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBzb3VyY2VDb25uZWN0aW9uLCB1aW50NjRfdCBz
b3VyY2VTdG9yYWdlQXJlYUlELCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB1cmxT
dHJpbmcpOworICAgICAgICB2b2lkIGNsZWFyKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgc291
cmNlQ29ubmVjdGlvbiwgdWludDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwgY29uc3QgU3RyaW5n
JiB1cmxTdHJpbmcpOwogCi0gICAgdm9pZCBnZXRWYWx1ZXMoSVBDOjpDb25uZWN0aW9uJiwgdWlu
dDY0X3Qgc3RvcmFnZU1hcElELCB1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCwgR2V0VmFsdWVzQ2Fs
bGJhY2smJik7Ci0gICAgdm9pZCBwcmV3YXJtKElQQzo6Q29ubmVjdGlvbiYsIHVpbnQ2NF90IHN0
b3JhZ2VNYXBJRCk7Ci0gICAgdm9pZCBzZXRJdGVtKElQQzo6Q29ubmVjdGlvbiYsIFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCB1aW50NjRfdCBzdG9yYWdlTWFwSUQsIHVpbnQ2NF90IHNv
dXJjZVN0b3JhZ2VBcmVhSUQsIHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkLCBjb25zdCBTdHJpbmcm
IGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpOwotICAg
IHZvaWQgc2V0SXRlbXMoSVBDOjpDb25uZWN0aW9uJiwgdWludDY0X3Qgc3RvcmFnZU1hcElELCBj
b25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgaXRlbXMpOwotICAgIHZvaWQgcmVtb3ZlSXRl
bShJUEM6OkNvbm5lY3Rpb24mLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgdWludDY0
X3Qgc3RvcmFnZU1hcElELCB1aW50NjRfdCBzb3VyY2VTdG9yYWdlQXJlYUlELCB1aW50NjRfdCBz
dG9yYWdlTWFwU2VlZCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5n
KTsKLSAgICB2b2lkIGNsZWFyKElQQzo6Q29ubmVjdGlvbiYsIFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSYmLCB1aW50NjRfdCBzdG9yYWdlTWFwSUQsIHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VB
cmVhSUQsIHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZyk7
CisgICAgICAgIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBpdGVtcygpIGNvbnN0Owor
ICAgICAgICB2b2lkIGNsZWFyKCk7CiAKLSAgICBjbGFzcyBTdG9yYWdlQXJlYTsKLSAgICBTdG9y
YWdlQXJlYSogZmluZFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbiYsIHVpbnQ2NF90KSBjb25z
dDsKKyAgICAgICAgYm9vbCBpc0VwaGVtZXJhbCgpIGNvbnN0IHsgcmV0dXJuICFtX2xvY2FsU3Rv
cmFnZU5hbWVzcGFjZTsgfQogCi0gICAgY2xhc3MgTG9jYWxTdG9yYWdlTmFtZXNwYWNlOwotICAg
IExvY2FsU3RvcmFnZU5hbWVzcGFjZSogZ2V0T3JDcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2Uo
dWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlEKTsKKyAgICAgICAgdm9pZCBvcGVuRGF0YWJhc2VB
bmRJbXBvcnRJdGVtc0lmTmVlZGVkKCkgY29uc3Q7CiAKLSAgICBjbGFzcyBUcmFuc2llbnRMb2Nh
bFN0b3JhZ2VOYW1lc3BhY2U7Ci0gICAgVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKiBn
ZXRPckNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBzdG9yYWdl
TmFtZXNwYWNlSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIHRvcExldmVsT3JpZ2lu
KTsKKyAgICAgICAgdm9pZCBzZXRXb3JrUXVldWUoUmVmUHRyPFdvcmtRdWV1ZT4mJiBxdWV1ZSkg
eyBtX3F1ZXVlID0gV1RGTW92ZShxdWV1ZSk7IH0KIAotICAgIFJlZjxXb3JrUXVldWU+IG1fcXVl
dWU7CisgICAgcHJpdmF0ZToKKyAgICAgICAgZXhwbGljaXQgU3RvcmFnZUFyZWEoTG9jYWxTdG9y
YWdlTmFtZXNwYWNlKiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgdW5zaWdu
ZWQgcXVvdGFJbkJ5dGVzKTsKIAotICAgIFJlZlB0cjxMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNr
ZXI+IG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOworICAgICAgICB2b2lkIGRpc3BhdGNo
RXZlbnRzKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgc291cmNlQ29ubmVjdGlvbiwgdWludDY0
X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYg
b2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5n
KSBjb25zdDsKKworICAgICAgICAvLyBXaWxsIGJlIG51bGwgaWYgdGhlIHN0b3JhZ2UgYXJlYSBi
ZWxvbmdzIHRvIGEgc2Vzc2lvbiBzdG9yYWdlIG5hbWVzcGFjZSBvciB0aGUgc3RvcmFnZSBhcmVh
IGlzIGluIGFuIGVwaGVtZXJhbCBzZXNzaW9uLgorICAgICAgICBXZWFrUHRyPExvY2FsU3RvcmFn
ZU5hbWVzcGFjZT4gbV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2U7CisgICAgICAgIG11dGFibGUgUmVm
UHRyPExvY2FsU3RvcmFnZURhdGFiYXNlPiBtX2xvY2FsU3RvcmFnZURhdGFiYXNlOworICAgICAg
ICBtdXRhYmxlIGJvb2wgbV9kaWRJbXBvcnRJdGVtc0Zyb21EYXRhYmFzZSB7IGZhbHNlIH07CisK
KyAgICAgICAgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIG1fc2VjdXJpdHlPcmlnaW47Cisg
ICAgICAgIHVuc2lnbmVkIG1fcXVvdGFJbkJ5dGVzOworCisgICAgICAgIFJlZlB0cjxXZWJDb3Jl
OjpTdG9yYWdlTWFwPiBtX3N0b3JhZ2VNYXA7CisgICAgICAgIEhhc2hTZXQ8SVBDOjpDb25uZWN0
aW9uOjpVbmlxdWVJRD4gbV9ldmVudExpc3RlbmVyczsKKworICAgICAgICB1aW50NjRfdCBtX2lk
ZW50aWZpZXI7CisgICAgICAgIFJlZlB0cjxXb3JrUXVldWU+IG1fcXVldWU7CisgICAgfTsKKwor
ICAgIFN0b3JhZ2VBcmVhKiBjcmVhdGVMb2NhbFN0b3JhZ2VBcmVhKHVpbnQ2NF90IHN0b3JhZ2VO
YW1lc3BhY2VJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYpOworICAgIFN0b3JhZ2VB
cmVhKiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKHVpbnQ2NF90IHN0b3JhZ2VOYW1l
c3BhY2VJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYmKTsKKyAgICBTdG9yYWdlQXJlYSogY3JlYXRlU2Vzc2lvblN0b3JhZ2VBcmVh
KHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
JiYpOworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IFN0b3JhZ2VNYW5hZ2VyKFN0cmluZyYmIGxv
Y2FsU3RvcmFnZURpcmVjdG9yeSk7CisKKyAgICBMb2NhbFN0b3JhZ2VOYW1lc3BhY2UqIGdldE9y
Q3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCk7
CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPExvY2FsU3RvcmFnZU5hbWVzcGFjZT4+IG1f
bG9jYWxTdG9yYWdlTmFtZXNwYWNlczsKKyAgICBSZWZQdHI8TG9jYWxTdG9yYWdlRGF0YWJhc2VU
cmFja2VyPiBtX2xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjsKIAorICAgIGNsYXNzIFRyYW5z
aWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZTsKKyAgICBUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1l
c3BhY2UqIGdldE9yQ3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90
IHN0b3JhZ2VOYW1lc3BhY2VJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wTGV2
ZWxPcmlnaW4pOwogICAgIEhhc2hNYXA8c3RkOjpwYWlyPHVpbnQ2NF90LCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGE+LCBSZWZQdHI8VHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlPj4g
bV90cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2VzOwogCiAgICAgY2xhc3MgU2Vzc2lvblN0
b3JhZ2VOYW1lc3BhY2U7CisgICAgU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UqIGdldE9yQ3JlYXRl
U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlEKTsKICAg
ICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2U+PiBtX3Nl
c3Npb25TdG9yYWdlTmFtZXNwYWNlczsKLQotICAgIEhhc2hNYXA8c3RkOjpwYWlyPElQQzo6Q29u
bmVjdGlvbjo6VW5pcXVlSUQsIHVpbnQ2NF90PiwgUmVmUHRyPFN0b3JhZ2VBcmVhPj4gbV9zdG9y
YWdlQXJlYXNCeUNvbm5lY3Rpb247Ci0gICAgSGFzaFNldDxJUEM6OkNvbm5lY3Rpb246OlVuaXF1
ZUlEPiBtX2Nvbm5lY3Rpb25zOwotCi0gICAgZW51bSBjbGFzcyBTdGF0ZSB7Ci0gICAgICAgIFJ1
bm5pbmcsCi0gICAgICAgIFdpbGxTdXNwZW5kLAotICAgICAgICBTdXNwZW5kZWQKLSAgICB9Owot
ICAgIFN0YXRlIG1fc3RhdGUgeyBTdGF0ZTo6UnVubmluZyB9OwotICAgIExvY2sgbV9zdGF0ZUxv
Y2s7Ci0gICAgQ29uZGl0aW9uIG1fc3RhdGVDaGFuZ2VDb25kaXRpb247CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
V2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5tZXNzYWdlcy5pbgpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzhiYjZhYjI0MDI4YTI1M2FhMTE4NTQyMDFkNmExNWQy
NWNlMmM2Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIubWVz
c2FnZXMuaW4KKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi0jIENvcHlyaWdodCAoQykg
MjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0j
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IK
LSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotbWVzc2FnZXMgLT4gU3RvcmFnZU1hbmFnZXIg
ewotICAgIENyZWF0ZUxvY2FsU3RvcmFnZU1hcCh1aW50NjRfdCBzdG9yYWdlTWFwSUQsIHVpbnQ2
NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YSBzZWN1cml0eU9yaWdpbkRhdGEpIFdhbnRzQ29ubmVjdGlvbgotICAgIENyZWF0ZVRyYW5zaWVu
dExvY2FsU3RvcmFnZU1hcCh1aW50NjRfdCBzdG9yYWdlTWFwSUQsIHVpbnQ2NF90IHN0b3JhZ2VO
YW1lc3BhY2VJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSB0b3BMZXZlbFNl
Y3VyaXR5T3JpZ2luRGF0YSwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBzZWN1
cml0eU9yaWdpbkRhdGEpIFdhbnRzQ29ubmVjdGlvbgotICAgIENyZWF0ZVNlc3Npb25TdG9yYWdl
TWFwKHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCwgdWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBz
dHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHNlY3VyaXR5T3JpZ2luRGF0YSkgV2Fu
dHNDb25uZWN0aW9uCi0gICAgRGVzdHJveVN0b3JhZ2VNYXAodWludDY0X3Qgc3RvcmFnZU1hcElE
KSBXYW50c0Nvbm5lY3Rpb24KLQotICAgIFByZXdhcm0odWludDY0X3Qgc3RvcmFnZU1hcElEKSBX
YW50c0Nvbm5lY3Rpb24KLSAgICBHZXRWYWx1ZXModWludDY0X3Qgc3RvcmFnZU1hcElELCB1aW50
NjRfdCBzdG9yYWdlTWFwU2VlZCkgLT4gKEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IHZhbHVlcykg
U3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCi0KLSAgICBTZXRJdGVtKHN0cnVjdCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEgc2VjdXJpdHlPcmlnaW5EYXRhLCB1aW50NjRfdCBzdG9yYWdl
TWFwSUQsIHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIHVpbnQ2NF90IHN0b3JhZ2VNYXBT
ZWVkLCBTdHJpbmcga2V5LCBTdHJpbmcgdmFsdWUsIFN0cmluZyB1cmxTdHJpbmcpIFdhbnRzQ29u
bmVjdGlvbgotICAgIFNldEl0ZW1zKHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCwgSGFzaE1hcDxTdHJp
bmcsIFN0cmluZz4gaXRlbXMpIFdhbnRzQ29ubmVjdGlvbgotICAgIFJlbW92ZUl0ZW0oc3RydWN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBzZWN1cml0eU9yaWdpbkRhdGEsIHVpbnQ2NF90
IHN0b3JhZ2VNYXBJRCwgdWludDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwgdWludDY0X3Qgc3Rv
cmFnZU1hcFNlZWQsIFN0cmluZyBrZXksIFN0cmluZyB1cmxTdHJpbmcpIFdhbnRzQ29ubmVjdGlv
bgotICAgIENsZWFyKHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgc2VjdXJpdHlP
cmlnaW5EYXRhLCB1aW50NjRfdCBzdG9yYWdlTWFwSUQsIHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VB
cmVhSUQsIHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkLCBTdHJpbmcgdXJsU3RyaW5nKSBXYW50c0Nv
bm5lY3Rpb24KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2Vi
U3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ2OTllODdm
NjViNjg3ODc5YjJkZTRmMjlmY2QwZDQ1MzU1OTlmNGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQuY3Bw
CkBAIC0wLDAgKzEsMzQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlN0b3JhZ2VNYW5hZ2VyU2V0
LmgiCisKKyNpbmNsdWRlICJTdG9yYWdlQXJlYU1hcE1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiU3Rv
cmFnZU1hbmFnZXJTZXRNZXNzYWdlcy5oIgorI2luY2x1ZGUgPHd0Zi90aHJlYWRzL0JpbmFyeVNl
bWFwaG9yZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY29uc3QgdWludDY0X3QgaW52YWxp
ZFN0b3JhZ2VBcmVhSUQgPSAwOworCitSZWY8U3RvcmFnZU1hbmFnZXJTZXQ+IFN0b3JhZ2VNYW5h
Z2VyU2V0OjpjcmVhdGUoKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0b3JhZ2VNYW5h
Z2VyU2V0KTsKK30KKworU3RvcmFnZU1hbmFnZXJTZXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0KCkKKyAg
ICA6IG1fcXVldWUoV29ya1F1ZXVlOjpjcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuV2ViU3RvcmFn
ZSIpKQoreworfQorCitTdG9yYWdlTWFuYWdlclNldDo6flN0b3JhZ2VNYW5hZ2VyU2V0KCkKK3sK
K30KKwordm9pZCBTdG9yYWdlTWFuYWdlclNldDo6YWRkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpCit7CisgICAgbV9xdWV1ZS0+
ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc2Vzc2lvbklE
LCBkaXJlY3RvcnkgPSBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkuaXNvbGF0ZWRDb3B5KCldKCkgbXV0
YWJsZSB7CisgICAgICAgIG1fc3RvcmFnZU1hbmFnZXJzLmVuc3VyZShzZXNzaW9uSUQsIFtkaXJl
Y3RvcnldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICByZXR1cm4gU3RvcmFnZU1hbmFnZXI6OmNy
ZWF0ZShXVEZNb3ZlKGRpcmVjdG9yeSkpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKwordm9p
ZCBTdG9yYWdlTWFuYWdlclNldDo6cmVtb3ZlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKK3sK
KyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCBzZXNzaW9uSURdKCkgeworICAgICAgICBBU1NFUlQobV9zdG9yYWdlTWFuYWdlcnMuY29u
dGFpbnMoc2Vzc2lvbklEKSk7CisgICAgICAgIG1fc3RvcmFnZU1hbmFnZXJzLnJlbW92ZShzZXNz
aW9uSUQpOyAgICAKKyAgICB9KTsKK30KKwordm9pZCBTdG9yYWdlTWFuYWdlclNldDo6YWRkQ29u
bmVjdGlvbihJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pIAoreworICAgIGF1dG8gY29ubmVj
dGlvbklEID0gY29ubmVjdGlvbi51bmlxdWVJRCgpOworICAgIEFTU0VSVCghbV9jb25uZWN0aW9u
cy5jb250YWlucyhjb25uZWN0aW9uSUQpKTsKKyAgICBpZiAobV9jb25uZWN0aW9ucy5hZGQoY29u
bmVjdGlvbklEKS5pc05ld0VudHJ5KQorICAgICAgICBjb25uZWN0aW9uLmFkZFdvcmtRdWV1ZU1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXJTZXQ6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSwgbV9xdWV1ZS5nZXQoKSwgdGhpcyk7Cit9CisKK3ZvaWQgU3RvcmFnZU1hbmFnZXJT
ZXQ6OnJlbW92ZUNvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQoreworICAg
IGF1dG8gY29ubmVjdGlvbklEID0gY29ubmVjdGlvbi51bmlxdWVJRCgpOworICAgIEFTU0VSVCht
X2Nvbm5lY3Rpb25zLmNvbnRhaW5zKGNvbm5lY3Rpb25JRCkpOworICAgIG1fY29ubmVjdGlvbnMu
cmVtb3ZlKGNvbm5lY3Rpb25JRCk7CisgICAgY29ubmVjdGlvbi5yZW1vdmVXb3JrUXVldWVNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlN0b3JhZ2VNYW5hZ2VyU2V0OjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCkpOworICAgIAorICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIGNvbm5lY3Rpb25JRF0oKSB7CisgICAgICAgIGZvciAoYXV0byYg
c3RvcmFnZUFyZWEgOiBtX3N0b3JhZ2VBcmVhcy52YWx1ZXMoKSkKKyAgICAgICAgICAgIHN0b3Jh
Z2VBcmVhLT5yZW1vdmVMaXN0ZW5lcihjb25uZWN0aW9uSUQpOworICAgIH0pOworfQorCit2b2lk
IFN0b3JhZ2VNYW5hZ2VyU2V0Ojp3YWl0VW50aWxUYXNrc0ZpbmlzaGVkKCkKK3sKKyAgICBBU1NF
UlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIEJpbmFyeVNlbWFwaG9yZSBzZW1hcGhvcmU7Cisg
ICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsICZzZW1hcGhvcmVdIHsKKyAgICAgICAgZm9yIChh
dXRvJiBbc2Vzc2lvbklELCBzdG9yYWdlTWFuYWdlcl0gOiBtX3N0b3JhZ2VNYW5hZ2VycykKKyAg
ICAgICAgICAgIHN0b3JhZ2VNYW5hZ2VyLT5jbGVhclN0b3JhZ2VOYW1lc3BhY2VzKCk7CisKKyAg
ICAgICAgbV9zdG9yYWdlTWFuYWdlcnMuY2xlYXIoKTsKKyAgICAgICAgbV9zdG9yYWdlQXJlYXMu
Y2xlYXIoKTsKKworICAgICAgICBzZW1hcGhvcmUuc2lnbmFsKCk7CisgICAgfSk7CisgICAgc2Vt
YXBob3JlLndhaXQoKTsKK30KKwordm9pZCBTdG9yYWdlTWFuYWdlclNldDo6c3VzcGVuZChDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJU
KFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBDb21wbGV0aW9uSGFuZGxlckNhbGxpbmdTY29wZSBj
b21wbGV0aW9uSGFuZGxlckNhbGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAg
TG9ja2VyPExvY2s+IHN0YXRlTG9ja2VyKG1fc3RhdGVMb2NrKTsKKyAgICBpZiAobV9zdGF0ZSAh
PSBTdGF0ZTo6UnVubmluZykKKyAgICAgICAgcmV0dXJuOworICAgIG1fc3RhdGUgPSBTdGF0ZTo6
V2lsbFN1c3BlbmQ7CisKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IGNvbXBsZXRpb25IYW5kbGVy
Q2FsbGVyLnJlbGVhc2UoKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIExvY2tlcjxMb2NrPiBzdGF0
ZUxvY2tlcihtX3N0YXRlTG9jayk7CisgICAgICAgIEFTU0VSVChtX3N0YXRlICE9IFN0YXRlOjpT
dXNwZW5kZWQpOworCisgICAgICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpXaWxsU3VzcGVuZCkg
eworICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIG1f
c3RhdGUgPSBTdGF0ZTo6U3VzcGVuZGVkOworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0
Y2goV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworCisgICAgICAgIHdoaWxlIChtX3N0YXRl
ID09IFN0YXRlOjpTdXNwZW5kZWQpCisgICAgICAgICAgICBtX3N0YXRlQ2hhbmdlQ29uZGl0aW9u
LndhaXQobV9zdGF0ZUxvY2spOworICAgICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6UnVu
bmluZyk7CisgICAgfSk7Cit9CisKK3ZvaWQgU3RvcmFnZU1hbmFnZXJTZXQ6OnJlc3VtZSgpCit7
CisgICAgTG9ja2VyPExvY2s+IHN0YXRlTG9ja2VyKG1fc3RhdGVMb2NrKTsKKyAgICBhdXRvIHBy
ZXZpb3VzU3RhdGUgPSBtX3N0YXRlOworICAgIG1fc3RhdGUgPSBTdGF0ZTo6UnVubmluZzsKKyAg
ICBpZiAocHJldmlvdXNTdGF0ZSA9PSBTdGF0ZTo6U3VzcGVuZGVkKQorICAgICAgICBtX3N0YXRl
Q2hhbmdlQ29uZGl0aW9uLm5vdGlmeU9uZSgpOworfQorCit2b2lkIFN0b3JhZ2VNYW5hZ2VyU2V0
OjpnZXRTZXNzaW9uU3RvcmFnZU9yaWdpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKEhhc2hTZXQ8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzZXNzaW9uSUQsIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIGF1
dG8qIHN0b3JhZ2VNYW5hZ2VyID0gbV9zdG9yYWdlTWFuYWdlcnMuZ2V0KHNlc3Npb25JRCk7Cisg
ICAgICAgIEFTU0VSVChzdG9yYWdlTWFuYWdlcik7CisKKyAgICAgICAgc3RvcmFnZU1hbmFnZXIt
PmdldFNlc3Npb25TdG9yYWdlT3JpZ2lucyhXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cisg
ICAgfSk7Cit9CisKK3ZvaWQgU3RvcmFnZU1hbmFnZXJTZXQ6OmRlbGV0ZVNlc3Npb25TdG9yYWdl
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQoreworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHNlc3Npb25JRCwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byogc3Rv
cmFnZU1hbmFnZXIgPSBtX3N0b3JhZ2VNYW5hZ2Vycy5nZXQoc2Vzc2lvbklEKTsKKyAgICAgICAg
QVNTRVJUKHN0b3JhZ2VNYW5hZ2VyKTsKKworICAgICAgICBzdG9yYWdlTWFuYWdlci0+ZGVsZXRl
U2Vzc2lvblN0b3JhZ2VPcmlnaW5zKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICB9
KTsKK30KKwordm9pZCBTdG9yYWdlTWFuYWdlclNldDo6ZGVsZXRlU2Vzc2lvblN0b3JhZ2VGb3JP
cmlnaW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YT4mIG9yaWdpbkRhdGFzLCBEZWxldGVDYWxsYmFjayYmIGNvbXBsZXRp
b25IYW5kbGVyKQoreworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIHNlc3Npb25JRCwgY29waWVkT3JpZ2lucyA9IGNyb3NzVGhyZWFk
Q29weShvcmlnaW5EYXRhcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8qIHN0b3JhZ2VNYW5hZ2VyID0gbV9z
dG9yYWdlTWFuYWdlcnMuZ2V0KHNlc3Npb25JRCk7CisgICAgICAgIEFTU0VSVChzdG9yYWdlTWFu
YWdlcik7CisKKyAgICAgICAgc3RvcmFnZU1hbmFnZXItPmRlbGV0ZVNlc3Npb25TdG9yYWdlRW50
cmllc0Zvck9yaWdpbnMoY29waWVkT3JpZ2lucywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OworICAgIH0pOworfQorCit2b2lkIFN0b3JhZ2VNYW5hZ2VyU2V0OjpnZXRMb2NhbFN0b3JhZ2VP
cmlnaW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgR2V0T3JpZ2luc0NhbGxiYWNrJiYgY29t
cGxldGlvbkhhbmRsZXIpCit7CisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc2Vzc2lvbklELCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICBhdXRvKiBzdG9y
YWdlTWFuYWdlciA9IG1fc3RvcmFnZU1hbmFnZXJzLmdldChzZXNzaW9uSUQpOworICAgICAgICBB
U1NFUlQoc3RvcmFnZU1hbmFnZXIpOworCisgICAgICAgIHN0b3JhZ2VNYW5hZ2VyLT5nZXRMb2Nh
bFN0b3JhZ2VPcmlnaW5zKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICB9KTsKK30K
Kwordm9pZCBTdG9yYWdlTWFuYWdlclNldDo6ZGVsZXRlTG9jYWxTdG9yYWdlTW9kaWZpZWRTaW5j
ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdhbGxUaW1lIHRpbWUsIERlbGV0ZUNhbGxiYWNr
JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc2Vzc2lvbklELCB0aW1lLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAg
ICBhdXRvKiBzdG9yYWdlTWFuYWdlciA9IG1fc3RvcmFnZU1hbmFnZXJzLmdldChzZXNzaW9uSUQp
OworICAgICAgICBBU1NFUlQoc3RvcmFnZU1hbmFnZXIpOworCisgICAgICAgIHN0b3JhZ2VNYW5h
Z2VyLT5kZWxldGVMb2NhbFN0b3JhZ2VPcmlnaW5zTW9kaWZpZWRTaW5jZSh0aW1lLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgfSk7Cit9CisKK3ZvaWQgU3RvcmFnZU1hbmFnZXJT
ZXQ6OmRlbGV0ZUxvY2FsU3RvcmFnZUZvck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYgb3JpZ2luRGF0YXMs
IERlbGV0ZUNhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgbV9xdWV1ZS0+ZGlz
cGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc2Vzc2lvbklELCBj
b3BpZWRPcmlnaW5zID0gY3Jvc3NUaHJlYWRDb3B5KG9yaWdpbkRhdGFzKSwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAg
YXV0byogc3RvcmFnZU1hbmFnZXIgPSBtX3N0b3JhZ2VNYW5hZ2Vycy5nZXQoc2Vzc2lvbklEKTsK
KyAgICAgICAgQVNTRVJUKHN0b3JhZ2VNYW5hZ2VyKTsKKworICAgICAgICBzdG9yYWdlTWFuYWdl
ci0+ZGVsZXRlTG9jYWxTdG9yYWdlRW50cmllc0Zvck9yaWdpbnMoY29waWVkT3JpZ2lucywgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIH0pOworfQorCit2b2lkIFN0b3JhZ2VNYW5h
Z2VyU2V0OjpnZXRMb2NhbFN0b3JhZ2VPcmlnaW5EZXRhaWxzKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8TG9jYWxTdG9yYWdlRGF0YWJhc2VU
cmFja2VyOjpPcmlnaW5EZXRhaWxzPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBt
X3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBz
ZXNzaW9uSUQsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
KCkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8qIHN0b3JhZ2VNYW5hZ2VyID0gbV9zdG9yYWdlTWFu
YWdlcnMuZ2V0KHNlc3Npb25JRCk7CisgICAgICAgIEFTU0VSVChzdG9yYWdlTWFuYWdlcik7CisK
KyAgICAgICAgc3RvcmFnZU1hbmFnZXItPmdldExvY2FsU3RvcmFnZU9yaWdpbkRldGFpbHMoV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIH0pOworfQorCit2b2lkIFN0b3JhZ2VNYW5h
Z2VyU2V0Ojpjb25uZWN0VG9Mb2NhbFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNl
SUQsIFNlY3VyaXR5T3JpZ2luRGF0YSYmIHNlY3VyaXR5T3JpZ2luRGF0YSwgQ29ubmVjdFRvU3Rv
cmFnZUFyZWFDYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIEFTU0VSVCghUnVu
TG9vcDo6aXNNYWluKCkpOworCisgICAgYXV0byogc3RvcmFnZU1hbmFnZXIgPSBtX3N0b3JhZ2VN
YW5hZ2Vycy5nZXQoc2Vzc2lvbklEKTsKKyAgICBBU1NFUlQoc3RvcmFnZU1hbmFnZXIpOworICAg
IGlmICghc3RvcmFnZU1hbmFnZXIpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoaW52YWxp
ZFN0b3JhZ2VBcmVhSUQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byogc3Rv
cmFnZUFyZWEgPSBzdG9yYWdlTWFuYWdlci0+Y3JlYXRlTG9jYWxTdG9yYWdlQXJlYShzdG9yYWdl
TmFtZXNwYWNlSUQsIFdURk1vdmUoc2VjdXJpdHlPcmlnaW5EYXRhKSk7CisgICAgYXV0byBzdG9y
YWdlQXJlYUlEID0gc3RvcmFnZUFyZWEtPmlkZW50aWZpZXIoKTsKKyAgICBhdXRvW2l0ZXIsIGlz
TmV3RW50cnldID0gbV9zdG9yYWdlQXJlYXMuYWRkKHN0b3JhZ2VBcmVhSUQsIG51bGxwdHIpOwor
ICAgIGlmIChpc05ld0VudHJ5KSB7CisgICAgICAgIHN0b3JhZ2VBcmVhLT5zZXRXb3JrUXVldWUo
bV9xdWV1ZS5wdHIoKSk7CisgICAgICAgIGl0ZXItPnZhbHVlID0gc3RvcmFnZUFyZWE7CisgICAg
fSBlbHNlCisgICAgICAgIEFTU0VSVChzdG9yYWdlQXJlYSA9PSBpdGVyLT52YWx1ZSk7CisKKyAg
ICBjb21wbGV0aW9uSGFuZGxlcihzdG9yYWdlQXJlYUlEKTsKKworICAgIHN0b3JhZ2VBcmVhLT5h
ZGRMaXN0ZW5lcihjb25uZWN0aW9uLnVuaXF1ZUlEKCkpOworfQorCit2b2lkIFN0b3JhZ2VNYW5h
Z2VyU2V0Ojpjb25uZWN0VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlv
biYgY29ubmVjdGlvbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBzdG9yYWdl
TmFtZXNwYWNlSUQsIFNlY3VyaXR5T3JpZ2luRGF0YSYmIHRvcExldmVsT3JpZ2luRGF0YSwgU2Vj
dXJpdHlPcmlnaW5EYXRhJiYgb3JpZ2luRGF0YSwgQ29ubmVjdFRvU3RvcmFnZUFyZWFDYWxsYmFj
ayYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkp
OworCisgICAgYXV0byogc3RvcmFnZU1hbmFnZXIgPSBtX3N0b3JhZ2VNYW5hZ2Vycy5nZXQoc2Vz
c2lvbklEKTsKKyAgICBBU1NFUlQoc3RvcmFnZU1hbmFnZXIpOworICAgIGlmICghc3RvcmFnZU1h
bmFnZXIpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoaW52YWxpZFN0b3JhZ2VBcmVhSUQp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byogc3RvcmFnZUFyZWEgPSBzdG9y
YWdlTWFuYWdlci0+Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlQXJlYShzdG9yYWdlTmFtZXNw
YWNlSUQsIFdURk1vdmUodG9wTGV2ZWxPcmlnaW5EYXRhKSwgV1RGTW92ZShvcmlnaW5EYXRhKSk7
CisgICAgYXV0byBzdG9yYWdlQXJlYUlEID0gc3RvcmFnZUFyZWEtPmlkZW50aWZpZXIoKTsKKyAg
ICBhdXRvW2l0ZXIsIGlzTmV3RW50cnldID0gbV9zdG9yYWdlQXJlYXMuYWRkKHN0b3JhZ2VBcmVh
SUQsIG51bGxwdHIpOworICAgIGlmIChpc05ld0VudHJ5KQorICAgICAgICBpdGVyLT52YWx1ZSA9
IHN0b3JhZ2VBcmVhOworICAgIGVsc2UKKyAgICAgICAgQVNTRVJUKHN0b3JhZ2VBcmVhID09IGl0
ZXItPnZhbHVlKTsKKworICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0b3JhZ2VBcmVhSUQpOworCisg
ICAgc3RvcmFnZUFyZWEtPmFkZExpc3RlbmVyKGNvbm5lY3Rpb24udW5pcXVlSUQoKSk7Cit9CisK
K3ZvaWQgU3RvcmFnZU1hbmFnZXJTZXQ6OmNvbm5lY3RUb1Nlc3Npb25TdG9yYWdlQXJlYShJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0
X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBTZWN1cml0eU9yaWdpbkRhdGEmJiBzZWN1cml0eU9yaWdp
bkRhdGEsIENvbm5lY3RUb1N0b3JhZ2VBcmVhQ2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikK
K3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIGF1dG8qIHN0b3JhZ2VN
YW5hZ2VyID0gbV9zdG9yYWdlTWFuYWdlcnMuZ2V0KHNlc3Npb25JRCk7CisgICAgQVNTRVJUKHN0
b3JhZ2VNYW5hZ2VyKTsKKyAgICBpZiAoIXN0b3JhZ2VNYW5hZ2VyKSB7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKGludmFsaWRTdG9yYWdlQXJlYUlEKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGF1dG8qIHN0b3JhZ2VBcmVhID0gc3RvcmFnZU1hbmFnZXItPmNyZWF0ZVNlc3Np
b25TdG9yYWdlQXJlYShzdG9yYWdlTmFtZXNwYWNlSUQsIFdURk1vdmUoc2VjdXJpdHlPcmlnaW5E
YXRhKSk7CisgICAgYXV0byBzdG9yYWdlQXJlYUlEID0gc3RvcmFnZUFyZWEtPmlkZW50aWZpZXIo
KTsKKyAgICBhdXRvW2l0ZXIsIGlzTmV3RW50cnldID0gbV9zdG9yYWdlQXJlYXMuYWRkKHN0b3Jh
Z2VBcmVhSUQsIG51bGxwdHIpOworICAgIGlmIChpc05ld0VudHJ5KQorICAgICAgICBpdGVyLT52
YWx1ZSA9IHN0b3JhZ2VBcmVhOworICAgIGVsc2UKKyAgICAgICAgQVNTRVJUKHN0b3JhZ2VBcmVh
ID09IGl0ZXItPnZhbHVlKTsKKworICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0b3JhZ2VBcmVhSUQp
OworCisgICAgc3RvcmFnZUFyZWEtPmFkZExpc3RlbmVyKGNvbm5lY3Rpb24udW5pcXVlSUQoKSk7
Cit9CisKK3ZvaWQgU3RvcmFnZU1hbmFnZXJTZXQ6OmRpc2Nvbm5lY3RGcm9tU3RvcmFnZUFyZWEo
SVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCB1aW50NjRfdCBzdG9yYWdlQXJlYUlEKQorewor
ICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworICAgIGF1dG8qIHN0b3JhZ2VBcmVhID0g
bV9zdG9yYWdlQXJlYXMuZ2V0KHN0b3JhZ2VBcmVhSUQpOworICAgIEFTU0VSVChzdG9yYWdlQXJl
YSk7CisgICAgQVNTRVJUKHN0b3JhZ2VBcmVhLT5oYXNMaXN0ZW5lcihjb25uZWN0aW9uLnVuaXF1
ZUlEKCkpKTsKKworICAgIHN0b3JhZ2VBcmVhLT5yZW1vdmVMaXN0ZW5lcihjb25uZWN0aW9uLnVu
aXF1ZUlEKCkpOworfQorCit2b2lkIFN0b3JhZ2VNYW5hZ2VyU2V0OjpnZXRWYWx1ZXMoSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCB1aW50NjRfdCBzdG9yYWdlQXJlYUlELCBHZXRWYWx1ZXND
YWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNN
YWluKCkpOworICAgIGF1dG8qIHN0b3JhZ2VBcmVhID0gbV9zdG9yYWdlQXJlYXMuZ2V0KHN0b3Jh
Z2VBcmVhSUQpOworICAgIEFTU0VSVChzdG9yYWdlQXJlYSk7CisgICAgQVNTRVJUKHN0b3JhZ2VB
cmVhLT5oYXNMaXN0ZW5lcihjb25uZWN0aW9uLnVuaXF1ZUlEKCkpKTsKKworICAgIGNvbXBsZXRp
b25IYW5kbGVyKHN0b3JhZ2VBcmVhID8gc3RvcmFnZUFyZWEtPml0ZW1zKCkgOiBIYXNoTWFwPFN0
cmluZywgU3RyaW5nPigpKTsKK30KKworCit2b2lkIFN0b3JhZ2VNYW5hZ2VyU2V0OjpzZXRJdGVt
KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgdWludDY0X3Qgc3RvcmFnZUFyZWFJRCwgdWlu
dDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwgdWludDY0X3Qgc3RvcmFnZU1hcFNlZWQsIGNvbnN0
IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlLCBjb25zdCBTdHJpbmcmIHVybFN0cmlu
ZykKK3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBhdXRvKiBzdG9yYWdl
QXJlYSA9IG1fc3RvcmFnZUFyZWFzLmdldChzdG9yYWdlQXJlYUlEKTsKKyAgICBBU1NFUlQoc3Rv
cmFnZUFyZWEpOworCisgICAgYm9vbCBxdW90YUVycm9yOworICAgIHN0b3JhZ2VBcmVhLT5zZXRJ
dGVtKGNvbm5lY3Rpb24udW5pcXVlSUQoKSwgc291cmNlU3RvcmFnZUFyZWFJRCwga2V5LCB2YWx1
ZSwgdXJsU3RyaW5nLCBxdW90YUVycm9yKTsKKworICAgIGNvbm5lY3Rpb24uc2VuZChNZXNzYWdl
czo6U3RvcmFnZUFyZWFNYXA6OkRpZFNldEl0ZW0oc3RvcmFnZU1hcFNlZWQsIGtleSwgcXVvdGFF
cnJvciksIHN0b3JhZ2VBcmVhSUQpOworfSAKKwordm9pZCBTdG9yYWdlTWFuYWdlclNldDo6cmVt
b3ZlSXRlbShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVpbnQ2NF90IHN0b3JhZ2VBcmVh
SUQsIHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVk
LCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCit7CisgICAgQVNT
RVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisgICAgYXV0byogc3RvcmFnZUFyZWEgPSBtX3N0b3Jh
Z2VBcmVhcy5nZXQoc3RvcmFnZUFyZWFJRCk7CisgICAgQVNTRVJUKHN0b3JhZ2VBcmVhKTsKKwor
ICAgIHN0b3JhZ2VBcmVhLT5yZW1vdmVJdGVtKGNvbm5lY3Rpb24udW5pcXVlSUQoKSwgc291cmNl
U3RvcmFnZUFyZWFJRCwga2V5LCB1cmxTdHJpbmcpOworCisgICAgY29ubmVjdGlvbi5zZW5kKE1l
c3NhZ2VzOjpTdG9yYWdlQXJlYU1hcDo6RGlkUmVtb3ZlSXRlbShzdG9yYWdlTWFwU2VlZCwga2V5
KSwgc3RvcmFnZUFyZWFJRCk7Cit9CisKK3ZvaWQgU3RvcmFnZU1hbmFnZXJTZXQ6OmNsZWFyKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgdWludDY0X3Qgc3RvcmFnZUFyZWFJRCwgdWludDY0
X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwgdWludDY0X3Qgc3RvcmFnZU1hcFNlZWQsIGNvbnN0IFN0
cmluZyYgdXJsU3RyaW5nKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworICAg
IGF1dG8qIHN0b3JhZ2VBcmVhID0gbV9zdG9yYWdlQXJlYXMuZ2V0KHN0b3JhZ2VBcmVhSUQpOwor
ICAgIEFTU0VSVChzdG9yYWdlQXJlYSk7CisKKyAgICBzdG9yYWdlQXJlYS0+Y2xlYXIoY29ubmVj
dGlvbi51bmlxdWVJRCgpLCBzb3VyY2VTdG9yYWdlQXJlYUlELCB1cmxTdHJpbmcpOworCisgICAg
Y29ubmVjdGlvbi5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlQXJlYU1hcDo6RGlkQ2xlYXIoc3RvcmFn
ZU1hcFNlZWQpLCBzdG9yYWdlQXJlYUlEKTsKK30KKwordm9pZCBTdG9yYWdlTWFuYWdlclNldDo6
Y2xvbmVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShJUEM6OkNvbm5lY3Rpb24mLCBQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGZyb21TdG9yYWdlTmFtZXNwYWNlSUQsIHVpbnQ2NF90
IHRvU3RvcmFnZU5hbWVzcGFjZUlEKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkp
OworICAgIGF1dG8qIHN0b3JhZ2VNYW5hZ2VyID0gbV9zdG9yYWdlTWFuYWdlcnMuZ2V0KHNlc3Np
b25JRCk7CisgICAgQVNTRVJUKHN0b3JhZ2VNYW5hZ2VyKTsKKworICAgIHN0b3JhZ2VNYW5hZ2Vy
LT5jbG9uZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKGZyb21TdG9yYWdlTmFtZXNwYWNlSUQsIHRv
U3RvcmFnZU5hbWVzcGFjZUlEKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFn
ZXJTZXQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdl
TWFuYWdlclNldC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk2OTk5YTY4ZDkwMTU4YWJhMmI2NGRmYzgwMWQwMmEx
NjcyZjMwOTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQuaApAQCAtMCwwICsxLDk3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJTdG9yYWdlTWFuYWdlci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmln
aW5EYXRhLmg+CisjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgorCit1c2luZyBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGE7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1c2luZyBDb25uZWN0
VG9TdG9yYWdlQXJlYUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+
OwordXNpbmcgR2V0VmFsdWVzQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+Jik+OwordXNpbmcgR2V0T3JpZ2luc0NhbGxiYWNrID0g
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0PFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YT4mJik+OwordXNpbmcgR2V0T3JpZ2luRGV0YWlsc0NhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChWZWN0b3I8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpPcmlnaW5EZXRhaWxz
PiYmKT47Cit1c2luZyBEZWxldGVDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT47
CisKK2NsYXNzIFN0b3JhZ2VNYW5hZ2VyU2V0IDogcHVibGljIElQQzo6Q29ubmVjdGlvbjo6V29y
a1F1ZXVlTWVzc2FnZVJlY2VpdmVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFN0b3JhZ2VN
YW5hZ2VyU2V0PiBjcmVhdGUoKTsKKyAgICBTdG9yYWdlTWFuYWdlclNldCgpOworICAgIH5TdG9y
YWdlTWFuYWdlclNldCgpOworCisgICAgdm9pZCBhZGQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0
cmluZyYgbG9jYWxTdG9yYWdlRGlyZWN0b3J5KTsKKyAgICB2b2lkIHJlbW92ZShQQUw6OlNlc3Np
b25JRCk7CisKKyAgICB2b2lkIGFkZENvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uJik7CisgICAg
dm9pZCByZW1vdmVDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiYpOworCisgICAgdm9pZCB3YWl0
VW50aWxUYXNrc0ZpbmlzaGVkKCk7CisgICAgdm9pZCBzdXNwZW5kKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CisgICAgdm9pZCByZXN1bWUoKTsKKworICAgIHZvaWQgZ2V0U2Vzc2lvblN0
b3JhZ2VPcmlnaW5zKFBBTDo6U2Vzc2lvbklELCBHZXRPcmlnaW5zQ2FsbGJhY2smJik7CisgICAg
dm9pZCBkZWxldGVTZXNzaW9uU3RvcmFnZShQQUw6OlNlc3Npb25JRCwgRGVsZXRlQ2FsbGJhY2sm
Jik7CisgICAgdm9pZCBkZWxldGVTZXNzaW9uU3RvcmFnZUZvck9yaWdpbnMoUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiwgRGVsZXRlQ2Fs
bGJhY2smJik7CisgICAgdm9pZCBnZXRMb2NhbFN0b3JhZ2VPcmlnaW5zKFBBTDo6U2Vzc2lvbklE
LCBHZXRPcmlnaW5zQ2FsbGJhY2smJik7CisgICAgdm9pZCBkZWxldGVMb2NhbFN0b3JhZ2VNb2Rp
ZmllZFNpbmNlKFBBTDo6U2Vzc2lvbklELCBXYWxsVGltZSwgRGVsZXRlQ2FsbGJhY2smJik7Cisg
ICAgdm9pZCBkZWxldGVMb2NhbFN0b3JhZ2VGb3JPcmlnaW5zKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYsIERlbGV0ZUNhbGxiYWNrJiYp
OworICAgIHZvaWQgZ2V0TG9jYWxTdG9yYWdlT3JpZ2luRGV0YWlscyhQQUw6OlNlc3Npb25JRCwg
R2V0T3JpZ2luRGV0YWlsc0NhbGxiYWNrJiYpOworCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVT
eW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9w
dHI8SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKTsKKworcHJpdmF0ZToKKyAgICAvLyBNZXNz
YWdlIEhhbmRsZXJzCisgICAgdm9pZCBjb25uZWN0VG9Mb2NhbFN0b3JhZ2VBcmVhKElQQzo6Q29u
bmVjdGlvbiYsIFBBTDo6U2Vzc2lvbklEICwgdWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBT
ZWN1cml0eU9yaWdpbkRhdGEmJiwgQ29ubmVjdFRvU3RvcmFnZUFyZWFDYWxsYmFjayYmKTsKKyAg
ICB2b2lkIGNvbm5lY3RUb1RyYW5zaWVudExvY2FsU3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9u
JiwgUEFMOjpTZXNzaW9uSUQgLCB1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIFNlY3VyaXR5
T3JpZ2luRGF0YSYmLCBTZWN1cml0eU9yaWdpbkRhdGEmJiwgQ29ubmVjdFRvU3RvcmFnZUFyZWFD
YWxsYmFjayYmKTsKKyAgICB2b2lkIGNvbm5lY3RUb1Nlc3Npb25TdG9yYWdlQXJlYShJUEM6OkNv
bm5lY3Rpb24mLCBQQUw6OlNlc3Npb25JRCwgdWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBT
ZWN1cml0eU9yaWdpbkRhdGEmJiwgQ29ubmVjdFRvU3RvcmFnZUFyZWFDYWxsYmFjayYmKTsKKyAg
ICB2b2lkIGRpc2Nvbm5lY3RGcm9tU3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uJiwgdWludDY0
X3Qgc3RvcmFnZUFyZWFJRCk7CisgICAgdm9pZCBnZXRWYWx1ZXMoSVBDOjpDb25uZWN0aW9uJiwg
dWludDY0X3Qgc3RvcmFnZUFyZWFJRCwgR2V0VmFsdWVzQ2FsbGJhY2smJik7CisgICAgdm9pZCBz
ZXRJdGVtKElQQzo6Q29ubmVjdGlvbiYsIHVpbnQ2NF90IHN0b3JhZ2VBcmVhSUQsIHVpbnQ2NF90
IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkLCBjb25zdCBTdHJp
bmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpOwor
ICAgIHZvaWQgcmVtb3ZlSXRlbShJUEM6OkNvbm5lY3Rpb24mLCB1aW50NjRfdCBzdG9yYWdlQXJl
YUlELCB1aW50NjRfdCBzb3VyY2VTdG9yYWdlQXJlYUlELCB1aW50NjRfdCBzdG9yYWdlTWFwU2Vl
ZCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKTsKKyAgICB2b2lk
IGNsZWFyKElQQzo6Q29ubmVjdGlvbiYsIHVpbnQ2NF90IHN0b3JhZ2VBcmVhSUQsIHVpbnQ2NF90
IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkLCBjb25zdCBTdHJp
bmcmIHVybFN0cmluZyk7CisgICAgdm9pZCBjbG9uZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKElQ
Qzo6Q29ubmVjdGlvbiYsIFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBmcm9tU3RvcmFnZU5hbWVz
cGFjZUlELCB1aW50NjRfdCB0b1N0b3JhZ2VOYW1lc3BhY2VJRCk7CisKKyAgICBIYXNoTWFwPFBB
TDo6U2Vzc2lvbklELCBSZWZQdHI8U3RvcmFnZU1hbmFnZXI+PiBtX3N0b3JhZ2VNYW5hZ2VyczsK
KyAgICBIYXNoTWFwPHVpbnQ2NF90LCBTdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUFyZWEqPiBtX3N0
b3JhZ2VBcmVhczsgLy8gc3RvcmFnZUFyZWEgaXMga2VwdCBhbGl2ZSBieSBzdG9yYWdlbmFtZXNw
YWNlCisKKyAgICBIYXNoU2V0PElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQ+IG1fY29ubmVjdGlv
bnM7CisgICAgUmVmPFdvcmtRdWV1ZT4gbV9xdWV1ZTsKKworICAgIGVudW0gY2xhc3MgU3RhdGUg
eworICAgICAgICBSdW5uaW5nLAorICAgICAgICBXaWxsU3VzcGVuZCwKKyAgICAgICAgU3VzcGVu
ZGVkCisgICAgfTsKKyAgICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6OlJ1bm5pbmcgfTsKKyAgICBM
b2NrIG1fc3RhdGVMb2NrOworICAgIENvbmRpdGlvbiBtX3N0YXRlQ2hhbmdlQ29uZGl0aW9uOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQu
bWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTBjMTNhMDBiYzM1YjkxNWZlYWQ4NDAwNWRhMzQ3ZDI3
YzdkMTdkNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
V2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldC5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDM0IEBA
CisjIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
CisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
CisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK21lc3NhZ2VzIC0+IFN0
b3JhZ2VNYW5hZ2VyU2V0IHsKKyAgICBDb25uZWN0VG9Mb2NhbFN0b3JhZ2VBcmVhKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgdWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBzdHJ1Y3QgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHNlY3VyaXR5T3JpZ2luRGF0YSkgLT4gKHVpbnQ2NF90
IHN0b3JhZ2VBcmVhSUQpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgorICAgIENvbm5lY3RU
b1RyYW5zaWVudExvY2FsU3RvcmFnZUFyZWEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50
NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEgdG9wTGV2ZWxTZWN1cml0eU9yaWdpbkRhdGEsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEgc2VjdXJpdHlPcmlnaW5EYXRhKSAtPiAodWludDY0X3Qgc3RvcmFnZUFyZWFJRCkg
U3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCisgICAgQ29ubmVjdFRvU2Vzc2lvblN0b3JhZ2VB
cmVhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlE
LCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHNlY3VyaXR5T3JpZ2luRGF0YSkg
LT4gKHVpbnQ2NF90IHN0b3JhZ2VBcmVhSUQpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgor
ICAgIERpc2Nvbm5lY3RGcm9tU3RvcmFnZUFyZWEodWludDY0X3Qgc3RvcmFnZUFyZWFJRCkgV2Fu
dHNDb25uZWN0aW9uCisgICAgR2V0VmFsdWVzKHVpbnQ2NF90IHN0b3JhZ2VBcmVhSUQpIC0+IChI
YXNoTWFwPFN0cmluZywgU3RyaW5nPiB2YWx1ZXMpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlv
bgorICAgIENsb25lU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCB1aW50NjRfdCBmcm9tU3RvcmFnZU5hbWVzcGFjZUlELCB1aW50NjRfdCB0b1N0b3JhZ2VO
YW1lc3BhY2VJRCkgV2FudHNDb25uZWN0aW9uCisKKyAgICBTZXRJdGVtKHVpbnQ2NF90IHN0b3Jh
Z2VBcmVhSUQsIHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIHVpbnQ2NF90IHN0b3JhZ2VN
YXBTZWVkLCBTdHJpbmcga2V5LCBTdHJpbmcgdmFsdWUsIFN0cmluZyB1cmxTdHJpbmcpIFdhbnRz
Q29ubmVjdGlvbgorICAgIFJlbW92ZUl0ZW0odWludDY0X3Qgc3RvcmFnZUFyZWFJRCwgdWludDY0
X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwgdWludDY0X3Qgc3RvcmFnZU1hcFNlZWQsIFN0cmluZyBr
ZXksIFN0cmluZyB1cmxTdHJpbmcpIFdhbnRzQ29ubmVjdGlvbgorICAgIENsZWFyKHVpbnQ2NF90
IHN0b3JhZ2VBcmVhSUQsIHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIHVpbnQ2NF90IHN0
b3JhZ2VNYXBTZWVkLCBTdHJpbmcgdXJsU3RyaW5nKSBXYW50c0Nvbm5lY3Rpb24KK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmNwcApp
bmRleCBkOTFhMzRmNmE5MjcyNWMxNDE3NzNmMDhhYjQyOWU3ZThlNTg2M2MzLi42NGEwYzFiYmI0
OWU2ZmFlMmQ4N2UxMGQ5ZGVlMTU4NGIwMGYwOThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuY3BwCkBAIC01Myw2ICs1Myw4IEBA
IHZvaWQgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVu
Y29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGly
ZWN0b3J5IDw8IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5k
bGU7CiAjZW5kaWYKIAorICAgIGVuY29kZXIgPDwgbG9jYWxTdG9yYWdlRGlyZWN0b3J5IDw8IGxv
Y2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKKwogICAgIGVuY29kZXIgPDwgcGVy
T3JpZ2luU3RvcmFnZVF1b3RhOwogICAgIGVuY29kZXIgPDwgcGVyVGhpcmRQYXJ0eU9yaWdpblN0
b3JhZ2VRdW90YTsKIH0KQEAgLTEyMSw2ICsxMjMsMTggQEAgT3B0aW9uYWw8V2Vic2l0ZURhdGFT
dG9yZVBhcmFtZXRlcnM+IFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpE
ZWMKICAgICBwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRl
bnNpb25IYW5kbGUgPSBXVEZNb3ZlKCpzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5
RXh0ZW5zaW9uSGFuZGxlKTsKICNlbmRpZgogCisgICAgT3B0aW9uYWw8U3RyaW5nPiBsb2NhbFN0
b3JhZ2VEaXJlY3Rvcnk7CisgICAgZGVjb2RlciA+PiBsb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7Cisg
ICAgaWYgKCFsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgcGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBXVEZNb3ZlKCpsb2Nh
bFN0b3JhZ2VEaXJlY3RvcnkpOworICAgIAorICAgIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZT4gbG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOworICAgIGRlY29k
ZXIgPj4gbG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOworICAgIGlmICghbG9j
YWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKQorICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgIHBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFu
ZGxlID0gV1RGTW92ZSgqbG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKKwog
ICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwZXJPcmlnaW5TdG9yYWdlUXVvdGE7CiAgICAgZGVjb2Rl
ciA+PiBwZXJPcmlnaW5TdG9yYWdlUXVvdGE7CiAgICAgaWYgKCFwZXJPcmlnaW5TdG9yYWdlUXVv
dGEpCkBAIC0xNDksNiArMTYzLDcgQEAgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgV2Vic2l0
ZURhdGFTdG9yZVBhcmFtZXRlcnM6OnByaXZhdGVTZXNzaW9uUGFyYW1ldGVycygKICNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCiAgICAgICAgICwgeyB9LCB7IH0KICNlbmRpZgorICAgICAgICAs
IHsgfSwgeyB9CiAgICAgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNp
dGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmgKaW5kZXggOTkyZmVlOTdkMDk5NzRjOWYzNDdmNmM3MGRh
YTFjZWJmM2UyZjI0Zi4uNmZlY2UzZjE1NGZlOWQ3ZmI5OGJmYzk3ZDliMWI3YmZmNDI0ZjM5OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRl
cnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVy
cy5oCkBAIC03MCw2ICs3MCw5IEBAIHN0cnVjdCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyB7
CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25E
aXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAjZW5kaWYKIAorICAgIFN0cmluZyBsb2NhbFN0b3Jh
Z2VEaXJlY3Rvcnk7CisgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGxvY2FsU3RvcmFnZURp
cmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKKwogICAgIHVpbnQ2NF90IHBlck9yaWdpblN0b3JhZ2VR
dW90YSB7IFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6OmRlZmF1bHRRdW90YSgpIH07CiAg
ICAgdWludDY0X3QgcGVyVGhpcmRQYXJ0eU9yaWdpblN0b3JhZ2VRdW90YSB7IFdlYkNvcmU6OlN0
b3JhZ2VRdW90YU1hbmFnZXI6OmRlZmF1bHRUaGlyZFBhcnR5UXVvdGEoKSB9OwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMu
dHh0CmluZGV4IDc5MTZlMjNiNzdlZWZiYzA4YjE5NzA0Mjc5N2YwMDA0OGNmYzE2M2YuLmI3OTA5
NzQ3YzUyMTI0YWY0YzY4MzI4MDk0OTkxNmMzNTkwYTM2YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtNjks
NiArNjksNyBAQCBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5jcHAgQG5vLXVuaWZ5CiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xv
Y2FsU3RvcmFnZURhdGFiYXNlLmNwcAogTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0
b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3BwCiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3Jh
Z2VNYW5hZ2VyLmNwcAorTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNl
dC5jcHAKIAogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcAogTmV0
d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggZjZiYmQyYjliZDJkYjM4YzBi
OWZlZTVlNzk5OTI2YjdiZjIyZTY5Ny4uNzUxNmI3NmY3NDhhMzBiZjA5ZmIyNmNlYzQxNmI0MGI4
OWY4MjAyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApA
QCAtNTgzLDggKzU4Myw4IEBAIE5ldHdvcmtQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjpl
bnN1cmVOZXR3b3JrUHJvY2VzcyhXZWJzaXRlRGF0YVN0b3JlKiB3aXRoCiAgICAgYXV0byBsb2Nh
bFN0b3JhZ2VEaXJlY3RvcnkgPSBtX3dlYnNpdGVEYXRhU3RvcmUgPyBtX3dlYnNpdGVEYXRhU3Rv
cmUtPndlYnNpdGVEYXRhU3RvcmUoKS5yZXNvbHZlZExvY2FsU3RvcmFnZURpcmVjdG9yeSgpIDog
bnVsbFN0cmluZygpOwogICAgIGlmICghbG9jYWxTdG9yYWdlRGlyZWN0b3J5KQogICAgICAgICBs
b2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRMb2Nh
bFN0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJh
bWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBs
b2NhbFN0b3JhZ2VEaXJlY3Rvcnk7Ci0gICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
Rm9yUmVhZFdyaXRlRGlyZWN0b3J5KGxvY2FsU3RvcmFnZURpcmVjdG9yeSwgcGFyYW1ldGVycy5k
ZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMubG9jYWxT
dG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBwYXJhbWV0ZXJzLmRlZmF1bHRE
YXRhU3RvcmVQYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeSA9IGxvY2FsU3RvcmFnZURp
cmVjdG9yeTsKKyAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVE
aXJlY3RvcnkobG9jYWxTdG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3Rv
cmVQYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAKICAg
ICBpZiAobV93ZWJzaXRlRGF0YVN0b3JlKQogICAgICAgICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRh
U3RvcmVQYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGlyZWN0b3J5ID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCku
cmVzb2x2ZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3Jl
Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJz
aXRlRGF0YVN0b3JlQ29jb2EubW0KaW5kZXggYTY4MzZkOTI1MTYzMmI4MTg1NTMxNmI2ZGM0ZWE3
OGZmODFjYjZiNi4uOTZkZTI3OTliZWExNzBlNGM4ZTA2YzQ4OTI0NDg3ZmUzYmZjMmY5ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0
ZURhdGFTdG9yZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQpAQCAtMTA3LDExICsxMDcsNiBAQCBX
ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0ZXJzKCkK
ICAgICBpZiAoIXJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkuaXNFbXB0eSgpKQogICAg
ICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3Rvcnko
cmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rp
cmVjdG9yeUhhbmRsZSk7CiAKLSAgICBhdXRvIGxvY2FsU3RvcmFnZURpcmVjdG9yeSA9IHJlc29s
dmVkTG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
IGxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKLSAgICBpZiAoIWxvY2FsU3Rv
cmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpCi0gICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0
ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShsb2NhbFN0b3JhZ2VEaXJlY3RvcnksIGxvY2Fs
U3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7Ci0KICAgICBhdXRvIG5ldHdvcmtDYWNo
ZURpcmVjdG9yeSA9IHJlc29sdmVkTmV0d29ya0NhY2hlRGlyZWN0b3J5KCk7CiAgICAgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlIG5ldHdvcmtDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsK
ICAgICBpZiAoIW5ldHdvcmtDYWNoZURpcmVjdG9yeS5pc0VtcHR5KCkpCkBAIC0xNDAsOCArMTM1
LDYgQEAgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgV2Vic2l0ZURhdGFTdG9yZTo6cGFyYW1l
dGVycygpCiAgICAgICAgIG1fY29uZmlndXJhdGlvbi0+ZGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0
aW9uc0VuYWJsZWQoKSwKICAgICAgICAgbV9jb25maWd1cmF0aW9uLT5hbGxMb2Fkc0Jsb2NrZWRC
eURldmljZU1hbmFnZW1lbnRSZXN0cmljdGlvbnNGb3JUZXN0aW5nKCksCiAgICAgICAgIFdURk1v
dmUocmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbnVhbFByZXZhbGVudFJlc291cmNlKSwKLSAgICAg
ICAgV1RGTW92ZShsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpLAotICAgICAgICBXVEZNb3ZlKGxvY2Fs
U3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSksCiAgICAgICAgIFdURk1vdmUobmV0d29y
a0NhY2hlRGlyZWN0b3J5KSwKICAgICAgICAgV1RGTW92ZShuZXR3b3JrQ2FjaGVEaXJlY3RvcnlF
eHRlbnNpb25IYW5kbGUpLAogICAgIH07CkBAIC0xNzYsNiArMTY5LDEwIEBAIFdlYnNpdGVEYXRh
U3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMoKQogICAgIGlmICgh
cGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5LmlzRW1wdHkoKSkK
ICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0
b3J5KHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSwgcGFyYW1l
dGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsK
ICNlbmRpZgorICAgIAorICAgIHBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gcmVz
b2x2ZWRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKTsKKyAgICBpZiAoIXBhcmFtZXRlcnMubG9jYWxT
dG9yYWdlRGlyZWN0b3J5LmlzRW1wdHkoKSkKKyAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KHBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGly
ZWN0b3J5LCBwYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7
CiAKICAgICBwYXJhbWV0ZXJzLnBlck9yaWdpblN0b3JhZ2VRdW90YSA9IHBlck9yaWdpblN0b3Jh
Z2VRdW90YSgpOwogICAgIHBhcmFtZXRlcnMucGVyVGhpcmRQYXJ0eU9yaWdpblN0b3JhZ2VRdW90
YSA9IHBlclRoaXJkUGFydHlPcmlnaW5TdG9yYWdlUXVvdGEoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5k
ZXggOTRjNGQ1OThiNjAzN2E2OTk3MTJkMTdiOWZhN2M1ZWIxNjRhNmM1OC4uNWI1MTBjZGFhMGM3
YWIyM2M5MDM3ZmE3MzU5ZmU5M2Q3M2QzZGQ5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTE5NTcs
OCArMTk1Nyw4IEBAIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRhU3RvcmU6
OnBhcmFtZXRlcnMoKQogCiAgICAgYXV0byBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSByZXNvbHZl
ZExvY2FsU3RvcmFnZURpcmVjdG9yeSgpOwogICAgIGlmICghbG9jYWxTdG9yYWdlRGlyZWN0b3J5
LmlzRW1wdHkoKSkgewotICAgICAgICBwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVy
cy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBsb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7Ci0gICAgICAg
IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShsb2Nh
bFN0b3JhZ2VEaXJlY3RvcnksIHBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmxv
Y2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CisgICAgICAgIHBhcmFtZXRlcnMu
bG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gbG9jYWxTdG9yYWdlRGlyZWN0b3J5OworICAgICAgICBT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkobG9jYWxT
dG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lv
bkhhbmRsZSk7CiAgICAgfQogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkYjQyMTk2
ZTdlZGNjZjZjNjU5ZTAwMzVhYzA0YTc4N2E5Y2VmYjFhLi43NDZmZjlhMmI1MWVkNTAzYzcyZTI2
ZDM5ZTE5MjViMTVmYWM4ZjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTI5NCw4ICsyOTQsNiBAQAogCQkxQUIxRjc5NzFEMUIzNjEz
MDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yTWVzc2FnZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjFGNzkzMUQxQjM2MTMwMDdDOUJE
MSAvKiBXZWJQYXltZW50Q29vcmRpbmF0b3JNZXNzYWdlcy5oICovOyB9OwogCQkxQUIxRjc5ODFE
MUIzNjEzMDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNZXNzYWdlUmVjZWl2
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFC
MUY3OTQxRDFCMzYxMzAwN0M5QkQxIC8qIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWVzc2Fn
ZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJMUFCMUY3OTkxRDFCMzYxMzAwN0M5QkQxIC8qIFdlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjFGNzk1MUQxQjM2MTMwMDdDOUJEMSAvKiBXZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eU1lc3NhZ2VzLmggKi87IH07Ci0JCTFBQjMxQTk2MTZCQzY4ODEw
MEY2REJDOSAvKiBTdG9yYWdlTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUIzMUE5NDE2QkM2ODgxMDBGNkRC
QzkgLyogU3RvcmFnZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwotCQkxQUIzMUE5
NzE2QkM2ODgxMDBGNkRCQzkgLyogU3RvcmFnZU1hbmFnZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFCMzFBOTUxNkJDNjg4MTAwRjZE
QkM5IC8qIFN0b3JhZ2VNYW5hZ2VyTWVzc2FnZXMuaCAqLzsgfTsKIAkJMUFCNDBFRTYxQkY2NzdF
MzAwQkE4MUJFIC8qIFdLTWVudUl0ZW1JZGVudGlmaWVyc1ByaXZhdGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjQwRUU0MUJGNjc3RTMwMEJBODFC
RSAvKiBXS01lbnVJdGVtSWRlbnRpZmllcnNQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUFCNDc0RDgxODRENDNGRDAwNTFCNjIyIC8q
IFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUFCNDc0RDcxODRENDNGRDAwNTFCNjIyIC8qIFdLQnVuZGxlUGFn
ZUxvYWRlckNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTFBQjQ3NERBMTg0RDQ0MjUwMDUxQjYyMiAvKiBXS0J1bmRsZVBhZ2VSZXNvdXJj
ZUxvYWRDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFBQjQ3NEQ5MTg0RDQ0MjUwMDUxQjYyMiAvKiBXS0J1bmRsZVBhZ2VSZXNvdXJjZUxvYWRD
bGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpA
QCAtMTI3Miw2ICsxMjcwLDkgQEAKIAkJOTM1RUVCOUIxMjc3NjE3QzAwMzMyMkI4IC8qIFdLQnVu
ZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTM1RUVCOTgxMjc3NjE2RDAwMzMyMkI4IC8qIFdLQnVuZGxlQmFja0Zv
cndhcmRMaXN0SXRlbS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTkzNUVFQjlGMTI3NzYxQUMwMDMzMjJCOCAvKiBXS0J1bmRsZUJhY2tGb3J3YXJk
TGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM1
RUVCOTYxMjc3NjE2RDAwMzMyMkI4IC8qIFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTM3MzVFQkIxQzky
OTg2MzAwMzM2RkE3IC8qIFdLUHJldmlld0FjdGlvbkl0ZW1JbnRlcm5hbC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM3MzVFQkExQzkyOTg2MzAwMzM2
RkE3IC8qIFdLUHJldmlld0FjdGlvbkl0ZW1JbnRlcm5hbC5oICovOyB9OworCQk5Mzc2Mjc0NDIy
RjExNUREMDAzNUJGODAgLyogU3RvcmFnZU1hbmFnZXJTZXQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNzYyNzQyMjJGMTE1Q0QwMDM1QkY4MCAvKiBT
dG9yYWdlTWFuYWdlclNldC5oICovOyB9OworCQk5Mzc5MTBEQzIyRjE3MTAzMDAzQkExNDQgLyog
U3RvcmFnZU1hbmFnZXJTZXRNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM3OTEwREIyMkYxNkZDOTAwM0JBMTQ0IC8qIFN0
b3JhZ2VNYW5hZ2VyU2V0TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJOTM3OTEwREUyMkYx
NzFBOTAwM0JBMTQ0IC8qIFN0b3JhZ2VNYW5hZ2VyU2V0TWVzc2FnZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNzkxMEREMjJGMTcxODEwMDNCQTE0
NCAvKiBTdG9yYWdlTWFuYWdlclNldE1lc3NhZ2VzLmggKi87IH07CiAJCTkzOTEwNzRGMUJGNkJD
NjUwMDhDMTdBRCAvKiBXS1ByZXZpZXdFbGVtZW50SW5mb0ludGVybmFsLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzkxMDc0RTFCRjZCQzY1MDA4QzE3
QUQgLyogV0tQcmV2aWV3RWxlbWVudEluZm9JbnRlcm5hbC5oICovOyB9OwogCQk5MzkxRjJDQjEy
MUI2N0FEMDBFQkY3RTggLyogV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM5MUYyODMxMjFCMzhGNTAwRUJG
N0U4IC8qIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaCAqLzsgfTsKIAkJOTM5NUU2OEExQkYy
QzMzMjAwRjQ5QkNFIC8qIFdLUHJldmlld0VsZW1lbnRJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5Mzk1RTY4OTFCRjJDMzMyMDBGNDlCQ0UgLyog
V0tQcmV2aWV3RWxlbWVudEluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJs
aWMsICk7IH07IH07CkBAIC0xNzAyLDYgKzE3MDMsOCBAQAogCQkJY29tcGlsZXJTcGVjID0gY29t
LmFwcGxlLmNvbXBpbGVycy5wcm94eS5zY3JpcHQ7CiAJCQlmaWxlUGF0dGVybnMgPSAiKi5oIjsK
IAkJCWZpbGVUeXBlID0gcGF0dGVybi5wcm94eTsKKwkJCWlucHV0RmlsZXMgPSAoCisJCQkpOwog
CQkJaXNFZGl0YWJsZSA9IDE7CiAJCQlvdXRwdXRGaWxlcyA9ICgKIAkJCQkiJChIRUFERVJfT1VU
UFVUX0RJUikvJChJTlBVVF9GSUxFX05BTUUpIiwKQEAgLTIzMDIsOCArMjMwNSw2IEBACiAJCTFB
QjFGNzkzMUQxQjM2MTMwMDdDOUJEMSAvKiBXZWJQYXltZW50Q29vcmRpbmF0b3JNZXNzYWdlcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJQYXltZW50Q29vcmRpbmF0b3JN
ZXNzYWdlcy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJQYXltZW50Q29vcmRp
bmF0b3JNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQkx
QUIxRjc5NDFEMUIzNjEzMDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNZXNz
YWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0gRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0Mi9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1lc3NhZ2VSZWNlaXZl
ci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTFBQjFGNzk1MUQx
QjM2MTMwMDdDOUJEMSAvKiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1lc3NhZ2VzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5
TWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9
OwotCQkxQUIzMUE5NDE2QkM2ODgxMDBGNkRCQzkgLyogU3RvcmFnZU1hbmFnZXJNZXNzYWdlUmVj
ZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU3RvcmFnZU1h
bmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9T
dG9yYWdlTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9E
VUNUU19ESVI7IH07Ci0JCTFBQjMxQTk1MTZCQzY4ODEwMEY2REJDOSAvKiBTdG9yYWdlTWFuYWdl
ck1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFN0b3JhZ2VNYW5h
Z2VyTWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvU3RvcmFnZU1hbmFn
ZXJNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQkxQUI0
MEVFMzFCRjY3N0UzMDBCQTgxQkUgLyogV0tNZW51SXRlbUlkZW50aWZpZXJzLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tNZW51SXRlbUlkZW50aWZpZXJzLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUI0MEVFNDFCRjY3N0UzMDBCQTgxQkUg
LyogV0tNZW51SXRlbUlkZW50aWZpZXJzUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXS01lbnVJdGVtSWRlbnRpZmllcnNQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTFBQjQ3NEQ3MTg0RDQzRkQwMDUxQjYyMiAvKiBXS0J1bmRsZVBhZ2VM
b2FkZXJDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tCdW5kbGVQ
YWdlTG9hZGVyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zODg4LDYg
KzM4ODksMTEgQEAKIAkJOTM1RUVCOTcxMjc3NjE2RDAwMzMyMkI4IC8qIFdLQnVuZGxlQmFja0Zv
cndhcmRMaXN0SXRlbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
S0J1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5MzVFRUI5ODEyNzc2MTZEMDAzMzIyQjggLyogV0tCdW5kbGVCYWNrRm9yd2FyZExpc3RJ
dGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQnVuZGxlQmFja0Zvcndh
cmRMaXN0SXRlbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzczNUVCQTFDOTI5
ODYzMDAzMzZGQTcgLyogV0tQcmV2aWV3QWN0aW9uSXRlbUludGVybmFsLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLUHJldmlld0FjdGlvbkl0ZW1JbnRlcm5hbC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5Mzc2Mjc0MTIyRjExNUNEMDAzNUJGODAgLyogU3Rv
cmFnZU1hbmFnZXJTZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U3RvcmFnZU1hbmFnZXJTZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5Mzc2
Mjc0MjIyRjExNUNEMDAzNUJGODAgLyogU3RvcmFnZU1hbmFnZXJTZXQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU3RvcmFnZU1hbmFnZXJTZXQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJOTM3NjI3NDMyMkYxMTVDRTAwMzVCRjgwIC8qIFN0b3JhZ2VNYW5hZ2Vy
U2V0Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFN0b3JhZ2VNYW5hZ2VyU2V0
Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5Mzc5MTBEQjIyRjE2
RkM5MDAzQkExNDQgLyogU3RvcmFnZU1hbmFnZXJTZXRNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU3RvcmFnZU1hbmFnZXJTZXRNZXNzYWdl
UmVjZWl2ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9TdG9yYWdlTWFuYWdl
clNldE1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7
IH07CisJCTkzNzkxMEREMjJGMTcxODEwMDNCQTE0NCAvKiBTdG9yYWdlTWFuYWdlclNldE1lc3Nh
Z2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFN0b3JhZ2VNYW5hZ2VyU2V0
TWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvU3RvcmFnZU1hbmFnZXJT
ZXRNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk5Mzkx
MDc0RTFCRjZCQzY1MDA4QzE3QUQgLyogV0tQcmV2aWV3RWxlbWVudEluZm9JbnRlcm5hbC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1ByZXZpZXdFbGVtZW50SW5mb0ludGVy
bmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzOTFGMjgzMTIxQjM4RjUwMEVC
RjdFOCAvKiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOTM5MUYyODQxMjFCMzhGNTAwRUJGN0U4IC8qIFdlYkZyYW1lTmV0d29y
a2luZ0NvbnRleHQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBX
ZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMzkxNiw3ICszOTIyLDYgQEAKIAkJOTNCMjYxNDgyMjdEMTQ3MTAwQjk3QTc2IC8qIGlvcyAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZvbGRlcjsg
cGF0aCA9IGlvczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCMjYxNDkyMjdEMTQ3
MjAwQjk3QTc2IC8qIFN0b3JhZ2VNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFN0b3JhZ2VNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkz
QjI2MTRBMjI3RDE0NzIwMEI5N0E3NiAvKiBTdG9yYWdlTWFuYWdlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdG9yYWdlTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTkzQjI2MTRCMjI3RDE0NzIwMEI5N0E3NiAvKiBTdG9yYWdlTWFu
YWdlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTdG9yYWdlTWFuYWdlci5t
ZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCMjYxNEMyMjdEMTQ3
MjAwQjk3QTc2IC8qIExvY2FsU3RvcmFnZURhdGFiYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IExvY2FsU3RvcmFnZURhdGFiYXNlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTNCQTA0REEyMTUxQURGMzAwN0Y0NTVGIC8qIFdlYlNXU2VydmVy
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJTV1NlcnZl
ckNvbm5lY3Rpb24ubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkz
QkEwNERCMjE1MUFERjMwMDdGNDU1RiAvKiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MjkyLDcgKzcyOTcs
OSBAQAogCQkJCTkzQjI2MTQ2MjI3RDE0NzEwMEI5N0E3NiAvKiBMb2NhbFN0b3JhZ2VEYXRhYmFz
ZVRyYWNrZXIuaCAqLywKIAkJCQk5M0IyNjE0QTIyN0QxNDcyMDBCOTdBNzYgLyogU3RvcmFnZU1h
bmFnZXIuY3BwICovLAogCQkJCTkzQjI2MTQ5MjI3RDE0NzIwMEI5N0E3NiAvKiBTdG9yYWdlTWFu
YWdlci5oICovLAotCQkJCTkzQjI2MTRCMjI3RDE0NzIwMEI5N0E3NiAvKiBTdG9yYWdlTWFuYWdl
ci5tZXNzYWdlcy5pbiAqLywKKwkJCQk5Mzc2Mjc0MTIyRjExNUNEMDAzNUJGODAgLyogU3RvcmFn
ZU1hbmFnZXJTZXQuY3BwICovLAorCQkJCTkzNzYyNzQyMjJGMTE1Q0QwMDM1QkY4MCAvKiBTdG9y
YWdlTWFuYWdlclNldC5oICovLAorCQkJCTkzNzYyNzQzMjJGMTE1Q0UwMDM1QkY4MCAvKiBTdG9y
YWdlTWFuYWdlclNldC5tZXNzYWdlcy5pbiAqLywKIAkJCSk7CiAJCQlwYXRoID0gV2ViU3RvcmFn
ZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC04NzUyLDggKzg3NTksOCBAQAogCQkJ
CTJERTY5NDNDMThCRDJBNjgwMDVDMTVFNSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVy
TWVzc2FnZXMuaCAqLywKIAkJCQkxQTMzNERFQjE2REU4Rjg4MDA2QThFMzggLyogU3RvcmFnZUFy
ZWFNYXBNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTFBMzM0REVDMTZERThGODgwMDZBOEUz
OCAvKiBTdG9yYWdlQXJlYU1hcE1lc3NhZ2VzLmggKi8sCi0JCQkJMUFCMzFBOTQxNkJDNjg4MTAw
RjZEQkM5IC8qIFN0b3JhZ2VNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKLQkJCQkxQUIz
MUE5NTE2QkM2ODgxMDBGNkRCQzkgLyogU3RvcmFnZU1hbmFnZXJNZXNzYWdlcy5oICovLAorCQkJ
CTkzNzkxMERCMjJGMTZGQzkwMDNCQTE0NCAvKiBTdG9yYWdlTWFuYWdlclNldE1lc3NhZ2VSZWNl
aXZlci5jcHAgKi8sCisJCQkJOTM3OTEwREQyMkYxNzE4MTAwM0JBMTQ0IC8qIFN0b3JhZ2VNYW5h
Z2VyU2V0TWVzc2FnZXMuaCAqLywKIAkJCQk1MTE4RTlBNTFGMjk1OTYzMDAzRUY5RjUgLyogU3Rv
cmFnZVByb2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTUxMThFOUE2MUYyOTU5NjMw
MDNFRjlGNSAvKiBTdG9yYWdlUHJvY2Vzc01lc3NhZ2VzLmggKi8sCiAJCQkJNTExOEU5QTcxRjI5
NTk2MzAwM0VGOUY1IC8qIFN0b3JhZ2VQcm9jZXNzUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICov
LApAQCAtOTY2MCw3ICs5NjY3LDggQEAKIAkJCQkxQUNFQ0QyNTE3MTYyREIxMDAxRkM5RUYgLyog
U3RvcmFnZUFyZWFNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMzM0REVFMTZERThGODgwMDZB
OEUzOCAvKiBTdG9yYWdlQXJlYU1hcE1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0Iy
NjE0RDIyN0QxNDlFMDBCOTdBNzYgLyogU3RvcmFnZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAot
CQkJCTFBQjMxQTk3MTZCQzY4ODEwMEY2REJDOSAvKiBTdG9yYWdlTWFuYWdlck1lc3NhZ2VzLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk5Mzc2Mjc0NDIyRjExNUREMDAzNUJGODAgLyogU3RvcmFnZU1h
bmFnZXJTZXQuaCBpbiBIZWFkZXJzICovLAorCQkJCTkzNzkxMERFMjJGMTcxQTkwMDNCQTE0NCAv
KiBTdG9yYWdlTWFuYWdlclNldE1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUUwMEQ2
QzE4MzI3QzEyMDAwODdERDcgLyogU3RyaW5nUmVmZXJlbmNlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkyOTZCRDg1RDE1MDE5QkMzMDA3MUY0MjQgLyogU3RyaW5nVXRpbGl0aWVzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1N0ZEMzE4NjIyQjM1MTZDMDA4RDBFOEIgLyogU3ViRnJhbWVTT0F1dGhvcml6
YXRpb25TZXNzaW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTExMTk0LDcgKzExMjAyLDcgQEAKIAkJ
CQkyRDkyQTc4NzIxMkI2QUIxMDBGNDkzRkQgLyogU2hhcmVhYmxlQml0bWFwLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTJERTY5NDNEMThCRDJBNjgwMDVDMTVFNSAvKiBTbWFydE1hZ25pZmljYXRp
b25Db250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMzM0
REVEMTZERThGODgwMDZBOEUzOCAvKiBTdG9yYWdlQXJlYU1hcE1lc3NhZ2VSZWNlaXZlci5jcHAg
aW4gU291cmNlcyAqLywKLQkJCQkxQUIzMUE5NjE2QkM2ODgxMDBGNkRCQzkgLyogU3RvcmFnZU1h
bmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTM3OTEwREMyMkYx
NzEwMzAwM0JBMTQ0IC8qIFN0b3JhZ2VNYW5hZ2VyU2V0TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTJEOTJBNzgzMjEyQjZBNzEwMEY0OTNGRCAvKiBTdHJpbmdSZWZlcmVu
Y2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQxMUI3NTEyMTI2QTI4MjAwNkY4ODc4IC8qIFVu
aWZpZWRTb3VyY2UxLW1tLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQxMUI3NTIyMTI2QTI4MjAw
NkY4ODc4IC8qIFVuaWZpZWRTb3VyY2UxLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZS5jcHAKaW5kZXggMjBjZTU1OTExZDcwNjUxYzMzNWE3MGFjZjI0ZTViZGZjMjFiZDYzMS4uNzE3
OGE1Mjk0N2JlMDc4NDA0MWFhYTEyODgyMjFhMjhjMGI0NTJmOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUu
Y3BwCkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBy
b2Nlc3NQb29sTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXIuaCIKICNpbmNsdWRlICJXZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJX
ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FQ
SUNhc3QuaD4KQEAgLTM1MSw2ICszNTIsOSBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpzZXRQcml2
YXRlQnJvd3NpbmdFbmFibGVkKFdlYlBhZ2VHcm91cFByb3h5KiBwYWdlR3JvdXAsIGJvbwogICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuYWJsZVByaXZhdGVCcm93c2luZ0ZvclRlc3Rpbmco
ZW5hYmxlZCk7CiAKICAgICBQYWdlR3JvdXA6OnBhZ2VHcm91cChwYWdlR3JvdXAtPmlkZW50aWZp
ZXIoKSktPmVuYWJsZUxlZ2FjeVByaXZhdGVCcm93c2luZ0ZvclRlc3RpbmcoZW5hYmxlZCk7CisK
KyAgICBhdXRvIHdlYlN0b3JhZ2VOYW1lU3BhY2VQcm92aWRlciA9IFdlYlN0b3JhZ2VOYW1lc3Bh
Y2VQcm92aWRlcjo6Z2V0T3JDcmVhdGUocGFnZUdyb3VwLT5wYWdlR3JvdXBJRCgpKTsKKyAgICB3
ZWJTdG9yYWdlTmFtZVNwYWNlUHJvdmlkZXItPmVuYWJsZUxlZ2FjeVByaXZhdGVCcm93c2luZ0Zv
clRlc3RpbmcoZW5hYmxlZCk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnNldFBvcHVwQmxv
Y2tpbmdFbmFibGVkKFdlYlBhZ2VHcm91cFByb3h5KiBwYWdlR3JvdXAsIGJvb2wgZW5hYmxlZCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCBhMmRhMTJjNjAyMjkz
NzNjZjg3ODkyYjgzZGFhNTc3MzUwMGE3N2YyLi45N2E1ZWU4ZDdkZDVjN2NlYzgxN2UxYTA1Njk3
MWNmNjgzOWFlOGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBA
IC02NzcsNyArNjc3LDYgQEAgdm9pZCBXZWJQcm9jZXNzOjpjcmVhdGVXZWJQYWdlKFBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYKICAgICAvLyBJdCBpcyBu
ZWNlc3NhcnkgdG8gY2hlY2sgZm9yIHBhZ2UgZXhpc3RlbmNlIGhlcmUgc2luY2UgZHVyaW5nIGEg
d2luZG93Lm9wZW4oKSAob3IgdGFyZ2V0ZWQKICAgICAvLyBsaW5rKSB0aGUgV2ViUGFnZSBnZXRz
IGNyZWF0ZWQgYm90aCBpbiB0aGUgc3luY2hyb25vdXMgaGFuZGxlciBhbmQgdGhyb3VnaCB0aGUg
bm9ybWFsIHdheS4gCiAgICAgYXV0byByZXN1bHQgPSBtX3BhZ2VNYXAuYWRkKHBhZ2VJRCwgbnVs
bHB0cik7Ci0gICAgYXV0byBvbGRQYWdlSUQgPSBwYXJhbWV0ZXJzLm9sZFBhZ2VJRCA/IHBhcmFt
ZXRlcnMub2xkUGFnZUlELnZhbHVlKCkgOiBwYWdlSUQ7CiAgICAgaWYgKHJlc3VsdC5pc05ld0Vu
dHJ5KSB7CiAgICAgICAgIEFTU0VSVCghcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSk7CiAgICAgICAg
IHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBXZWJQYWdlOjpjcmVhdGUocGFnZUlELCBXVEZNb3Zl
KHBhcmFtZXRlcnMpKTsKQEAgLTY4OCw4ICs2ODcsNiBAQCB2b2lkIFdlYlByb2Nlc3M6OmNyZWF0
ZVdlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
JgogICAgIH0gZWxzZQogICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5yZWluaXRpYWxp
emVXZWJQYWdlKFdURk1vdmUocGFyYW1ldGVycykpOwogCi0gICAgZW5zdXJlTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpXZWJQYWdlV2FzQWRkZWQocmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+
c2Vzc2lvbklEKCksIHBhZ2VJRCwgb2xkUGFnZUlEKSwgMCk7Ci0KICAgICBBU1NFUlQocmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZSk7CiB9CiAKQEAgLTY5Nyw3ICs2OTQsNiBAQCB2b2lkIFdlYlByb2Nl
c3M6OnJlbW92ZVdlYlBhZ2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBQYWdlSWRlbnRpZmll
ciBwYWdlSUQpCiB7CiAgICAgQVNTRVJUKG1fcGFnZU1hcC5jb250YWlucyhwYWdlSUQpKTsKIAot
ICAgIGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6V2ViUGFnZVdhc1JlbW92ZWQo
c2Vzc2lvbklELCBwYWdlSUQpLCAwKTsKICAgICBwYWdlV2lsbExlYXZlV2luZG93KHBhZ2VJRCk7
CiAgICAgbV9wYWdlTWFwLnJlbW92ZShwYWdlSUQpOwogCkBAIC0xMjQ2LDE2ICsxMjQyLDYgQEAg
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uJiBXZWJQcm9jZXNzOjplbnN1cmVOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24oKQogICAgICAgICAgICAgQ1JBU0goKTsKIAogICAgICAgICBtX25ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbiA9IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlKGNvbm5l
Y3Rpb25JZGVudGlmaWVyKTsKLQotICAgICAgICAvLyBUbyByZWNvdmVyIHdlYiBzdG9yYWdlLCBu
ZXR3b3JrIHByb2Nlc3MgbmVlZHMgdG8ga25vdyBhY3RpdmUgd2VicGFnZXMgdG8gcHJlcGFyZSBz
ZXNzaW9uIHN0b3JhZ2UuCi0gICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTk4MDUxLgotICAgICAgICAvLyBXZWJwYWdlIHNob3VsZCBiZSBh
ZGRlZCB3aGVuIFN0b3JhZ2UgaXMgdXNlZCwgbm90IHdoZW4gY29ubmVjdGlvbiBpcyByZS1lc3Rh
Ymxpc2hlZC4KLSAgICAgICAgZm9yIChhdXRvJiBwYWdlIDogbV9wYWdlTWFwKSB7Ci0gICAgICAg
ICAgICBpZiAoIXBhZ2UudmFsdWUpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAg
ICAgICAgIG1fbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChNZXNz
YWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OldlYlBhZ2VXYXNBZGRlZChwYWdl
LnZhbHVlLT5zZXNzaW9uSUQoKSwgcGFnZS5rZXksIHBhZ2Uua2V5KSwgMCk7Ci0gICAgICAgIH0K
ICAgICB9CiAgICAgCiAgICAgcmV0dXJuICptX25ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjsKQEAg
LTE2NzQsOCArMTY2MCw4IEBAIHZvaWQgV2ViUHJvY2Vzczo6bm9uVmlzaWJsZVByb2Nlc3NDbGVh
bnVwVGltZXJGaXJlZCgpCiAKIHZvaWQgV2ViUHJvY2Vzczo6cmVnaXN0ZXJTdG9yYWdlQXJlYU1h
cChTdG9yYWdlQXJlYU1hcCYgc3RvcmFnZUFyZWFNYXApCiB7Ci0gICAgQVNTRVJUKCFtX3N0b3Jh
Z2VBcmVhTWFwcy5jb250YWlucyhzdG9yYWdlQXJlYU1hcC5pZGVudGlmaWVyKCkpKTsKLSAgICBt
X3N0b3JhZ2VBcmVhTWFwcy5zZXQoc3RvcmFnZUFyZWFNYXAuaWRlbnRpZmllcigpLCAmc3RvcmFn
ZUFyZWFNYXApOworICAgIGlmICghbV9zdG9yYWdlQXJlYU1hcHMuY29udGFpbnMoc3RvcmFnZUFy
ZWFNYXAuaWRlbnRpZmllcigpKSkKKyAgICAgICAgbV9zdG9yYWdlQXJlYU1hcHMuc2V0KHN0b3Jh
Z2VBcmVhTWFwLmlkZW50aWZpZXIoKSwgJnN0b3JhZ2VBcmVhTWFwKTsKIH0KIAogdm9pZCBXZWJQ
cm9jZXNzOjp1bnJlZ2lzdGVyU3RvcmFnZUFyZWFNYXAoU3RvcmFnZUFyZWFNYXAmIHN0b3JhZ2VB
cmVhTWFwKQpAQCAtMTY4Nyw3ICsxNjczLDYgQEAgdm9pZCBXZWJQcm9jZXNzOjp1bnJlZ2lzdGVy
U3RvcmFnZUFyZWFNYXAoU3RvcmFnZUFyZWFNYXAmIHN0b3JhZ2VBcmVhTWFwKQogCiBTdG9yYWdl
QXJlYU1hcCogV2ViUHJvY2Vzczo6c3RvcmFnZUFyZWFNYXAodWludDY0X3QgaWRlbnRpZmllcikg
Y29uc3QKIHsKLSAgICBBU1NFUlQobV9zdG9yYWdlQXJlYU1hcHMuY29udGFpbnMoaWRlbnRpZmll
cikpOwogICAgIHJldHVybiBtX3N0b3JhZ2VBcmVhTWFwcy5nZXQoaWRlbnRpZmllcik7CiB9CiAK
QEAgLTE2OTUsMTUgKzE2ODAsNiBAQCB2b2lkIFdlYlByb2Nlc3M6OmVuYWJsZVByaXZhdGVCcm93
c2luZ0ZvclRlc3RpbmcoYm9vbCBlbmFibGUpCiB7CiAgICAgaWYgKGVuYWJsZSkKICAgICAgICAg
ZW5zdXJlTGVnYWN5UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbkluTmV0d29ya1Byb2Nlc3MoKTsKLQot
ICAgIFZlY3RvcjxQYWdlSWRlbnRpZmllcj4gcGFnZUlEczsKLSAgICBmb3IgKGF1dG8mIHBhZ2Ug
OiBtX3BhZ2VNYXApIHsKLSAgICAgICAgaWYgKHBhZ2UudmFsdWUpCi0gICAgICAgICAgICBwYWdl
SURzLmFwcGVuZChwYWdlLmtleSk7Ci0gICAgfQotCi0gICAgaWYgKCFwYWdlSURzLmlzRW1wdHko
KSkKLSAgICAgICAgZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigp
LnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpXZWJQcm9jZXNz
U2Vzc2lvbkNoYW5nZWQoZW5hYmxlID8gUEFMOjpTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNz
aW9uSUQoKSA6IFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIHBhZ2VJRHMpLCAw
KTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxl
ZChib29sIGVuYWJsZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
U3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNwcAppbmRleCA3NDBjMGRiYzA3Y2E3ZDU1ZTEzY2Uy
YjE5MDIzMzNjMGRlMGE2MjYzLi5mOTZlYmFhMzJiYmI3Y2ZlNmFmOGE0YWE2MDRkNWJjODliZThl
YjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9y
YWdlQXJlYUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdl
L1N0b3JhZ2VBcmVhSW1wbC5jcHAKQEAgLTczLDExICs3Myw2IEBAIFN0cmluZyBTdG9yYWdlQXJl
YUltcGw6Oml0ZW0oY29uc3QgU3RyaW5nJiBrZXkpCiAgICAgcmV0dXJuIG1fc3RvcmFnZUFyZWFN
YXAtPml0ZW0oa2V5KTsKIH0KIAotYm9vbCBTdG9yYWdlQXJlYUltcGw6OnByZXdhcm0oKQotewot
ICAgIHJldHVybiBtX3N0b3JhZ2VBcmVhTWFwLT5wcmV3YXJtKCk7Ci19Ci0KIHZvaWQgU3RvcmFn
ZUFyZWFJbXBsOjpzZXRJdGVtKEZyYW1lKiBzb3VyY2VGcmFtZSwgY29uc3QgU3RyaW5nJiBrZXks
IGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wmIHF1b3RhRXhjZXB0aW9uKQogewogICAgIEFTU0VS
VCghdmFsdWUuaXNOdWxsKCkpOwpAQCAtMTEyLDEyICsxMDcsMTIgQEAgc2l6ZV90IFN0b3JhZ2VB
cmVhSW1wbDo6bWVtb3J5Qnl0ZXNVc2VkQnlDYWNoZSgpCiAKIHZvaWQgU3RvcmFnZUFyZWFJbXBs
OjppbmNyZW1lbnRBY2Nlc3NDb3VudCgpCiB7Ci0gICAgLy8gU3RvcmFnZSBhY2Nlc3MgaXMgaGFu
ZGxlZCBpbiB0aGUgVUkgcHJvY2Vzcywgc28gdGhlcmUncyBub3RoaW5nIHRvIGRvIGhlcmUuCisg
ICAgLy8gU3RvcmFnZSBhY2Nlc3MgaXMgaGFuZGxlZCBpbiB0aGUgbmV0d29yayBwcm9jZXNzLCBz
byB0aGVyZSdzIG5vdGhpbmcgdG8gZG8gaGVyZS4KIH0KIAogdm9pZCBTdG9yYWdlQXJlYUltcGw6
OmRlY3JlbWVudEFjY2Vzc0NvdW50KCkKIHsKLSAgICAvLyBTdG9yYWdlIGFjY2VzcyBpcyBoYW5k
bGVkIGluIHRoZSBVSSBwcm9jZXNzLCBzbyB0aGVyZSdzIG5vdGhpbmcgdG8gZG8gaGVyZS4KKyAg
ICAvLyBTdG9yYWdlIGFjY2VzcyBpcyBoYW5kbGVkIGluIHRoZSBuZXR3b3JrIHByb2Nlc3MsIHNv
IHRoZXJlJ3Mgbm90aGluZyB0byBkbyBoZXJlLgogfQogCiB2b2lkIFN0b3JhZ2VBcmVhSW1wbDo6
Y2xvc2VEYXRhYmFzZUlmSWRsZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oCmluZGV4IGI4ZjE2ZjJlYWE1YTllYWMwNjY0
NWIzOGU1ZjBmZjE0NGRkZDU4MjQuLjE2NWFmNDRkOTAxOGI5YjlkMTNmNzNmY2U4NDQ3MzkyY2Qx
ODM0MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0
b3JhZ2VBcmVhSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdl
L1N0b3JhZ2VBcmVhSW1wbC5oCkBAIC02MSw3ICs2MSw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBk
ZWNyZW1lbnRBY2Nlc3NDb3VudCgpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xvc2VEYXRhYmFzZUlm
SWRsZSgpIG92ZXJyaWRlOwogICAgIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYg
c2VjdXJpdHlPcmlnaW4oKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIHByZXdhcm0oKSBmaW5h
bDsKIAogICAgIHVpbnQ2NF90IG1fc3RvcmFnZUFyZWFJRDsKICAgICBSZWY8U3RvcmFnZUFyZWFN
YXA+IG1fc3RvcmFnZUFyZWFNYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAKaW5kZXggM2UwNTBkZjE3OGE0NDhiYzkz
MmNhNGJhZWMxMDMxYTcyZjkzODBlNi4uZGNjZDY0YzYyYWE5ZDQyMzIwM2RiMGI0OWM5YTRkNDE5
N2FkYjU0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2Uv
U3RvcmFnZUFyZWFNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VBcmVhTWFwLmNwcApAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgIk5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhSW1wbC5oIgogI2lu
Y2x1ZGUgIlN0b3JhZ2VBcmVhTWFwTWVzc2FnZXMuaCIKLSNpbmNsdWRlICJTdG9yYWdlTWFuYWdl
ck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiU3RvcmFnZU1hbmFnZXJTZXRNZXNzYWdlcy5oIgogI2lu
Y2x1ZGUgIlN0b3JhZ2VOYW1lc3BhY2VJbXBsLmgiCiAjaW5jbHVkZSAiV2ViUGFnZS5oIgogI2lu
Y2x1ZGUgIldlYlBhZ2VHcm91cFByb3h5LmgiCkBAIC00OCwxMiArNDgsNiBAQAogbmFtZXNwYWNl
IFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotc3RhdGljIHVpbnQ2NF90IGdl
bmVyYXRlU3RvcmFnZU1hcElEKCkKLXsKLSAgICBzdGF0aWMgdWludDY0X3Qgc3RvcmFnZU1hcElE
OwotICAgIHJldHVybiArK3N0b3JhZ2VNYXBJRDsKLX0KLQogUmVmPFN0b3JhZ2VBcmVhTWFwPiBT
dG9yYWdlQXJlYU1hcDo6Y3JlYXRlKFN0b3JhZ2VOYW1lc3BhY2VJbXBsKiBzdG9yYWdlTmFtZXNw
YWNlLCBSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYgc2VjdXJpdHlPcmlnaW4pCiB7CiAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmFnZUFyZWFNYXAoc3RvcmFnZU5hbWVzcGFjZSwg
V1RGTW92ZShzZWN1cml0eU9yaWdpbikpKTsKQEAgLTYxLDI3ICs1NSwyMSBAQCBSZWY8U3RvcmFn
ZUFyZWFNYXA+IFN0b3JhZ2VBcmVhTWFwOjpjcmVhdGUoU3RvcmFnZU5hbWVzcGFjZUltcGwqIHN0
b3JhZ2VOYW1lc3BhYwogCiBTdG9yYWdlQXJlYU1hcDo6U3RvcmFnZUFyZWFNYXAoU3RvcmFnZU5h
bWVzcGFjZUltcGwqIHN0b3JhZ2VOYW1lc3BhY2UsIFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bj4mJiBzZWN1cml0eU9yaWdpbikKICAgICA6IG1fc3RvcmFnZU5hbWVzcGFjZSgqc3RvcmFnZU5h
bWVzcGFjZSkKLSAgICAsIG1fc3RvcmFnZU1hcElEKGdlbmVyYXRlU3RvcmFnZU1hcElEKCkpCisg
ICAgLCBtX3N0b3JhZ2VNYXBJRCgwKQogICAgICwgbV9zdG9yYWdlVHlwZShzdG9yYWdlTmFtZXNw
YWNlLT5zdG9yYWdlVHlwZSgpKQotICAgICwgbV9zdG9yYWdlTmFtZXNwYWNlSUQoc3RvcmFnZU5h
bWVzcGFjZS0+c3RvcmFnZU5hbWVzcGFjZUlEKCkpCiAgICAgLCBtX3F1b3RhSW5CeXRlcyhzdG9y
YWdlTmFtZXNwYWNlLT5xdW90YUluQnl0ZXMoKSkKICAgICAsIG1fc2VjdXJpdHlPcmlnaW4oV1RG
TW92ZShzZWN1cml0eU9yaWdpbikpCiAgICAgLCBtX2N1cnJlbnRTZWVkKDApCiAgICAgLCBtX2hh
c1BlbmRpbmdDbGVhcihmYWxzZSkKLSAgICAsIG1faGFzUGVuZGluZ0dldFZhbHVlcyhmYWxzZSkK
IHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5yZWdpc3RlclN0b3JhZ2VBcmVhTWFwKCp0
aGlzKTsKICAgICBjb25uZWN0KCk7CiB9CiAKIFN0b3JhZ2VBcmVhTWFwOjp+U3RvcmFnZUFyZWFN
YXAoKQogewotICAgIGlmIChtX3N0b3JhZ2VUeXBlICE9IFN0b3JhZ2VUeXBlOjpFcGhlbWVyYWxM
b2NhbCkKLSAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VNYW5hZ2Vy
OjpEZXN0cm95U3RvcmFnZU1hcChtX3N0b3JhZ2VNYXBJRCksIDApOworICAgIGRpc2Nvbm5lY3Qo
KTsKIAogICAgIG1fc3RvcmFnZU5hbWVzcGFjZS0+ZGlkRGVzdHJveVN0b3JhZ2VBcmVhTWFwKCp0
aGlzKTsKLQotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnVucmVnaXN0ZXJTdG9yYWdlQXJl
YU1hcCgqdGhpcyk7CiB9CiAKIHVuc2lnbmVkIFN0b3JhZ2VBcmVhTWFwOjpsZW5ndGgoKQpAQCAt
MTIyLDcgKzExMCw3IEBAIHZvaWQgU3RvcmFnZUFyZWFNYXA6OnNldEl0ZW0oRnJhbWUqIHNvdXJj
ZUZyYW1lLCBTdG9yYWdlQXJlYUltcGwqIHNvdXJjZUFyZWEsIGNvCiAKICAgICBtX3BlbmRpbmdW
YWx1ZUNoYW5nZXMuYWRkKGtleSk7CiAKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1
cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6
U3RvcmFnZU1hbmFnZXI6OlNldEl0ZW0obV9zZWN1cml0eU9yaWdpbi0+ZGF0YSgpLCBtX3N0b3Jh
Z2VNYXBJRCwgc291cmNlQXJlYS0+c3RvcmFnZUFyZWFJRCgpLCBtX2N1cnJlbnRTZWVkLCBrZXks
IHZhbHVlLCBzb3VyY2VGcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkpLCAwKTsKKyAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0
aW9uKCkuc2VuZChNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXJTZXQ6OlNldEl0ZW0obV9zdG9yYWdl
TWFwSUQsIHNvdXJjZUFyZWEtPnN0b3JhZ2VBcmVhSUQoKSwgbV9jdXJyZW50U2VlZCwga2V5LCB2
YWx1ZSwgc291cmNlRnJhbWUtPmRvY3VtZW50KCktPnVybCgpKSwgMCk7CiB9CiAKIHZvaWQgU3Rv
cmFnZUFyZWFNYXA6OnJlbW92ZUl0ZW0oV2ViQ29yZTo6RnJhbWUqIHNvdXJjZUZyYW1lLCBTdG9y
YWdlQXJlYUltcGwqIHNvdXJjZUFyZWEsIGNvbnN0IFN0cmluZyYga2V5KQpAQCAtMTM4LDE2ICsx
MjYsMTggQEAgdm9pZCBTdG9yYWdlQXJlYU1hcDo6cmVtb3ZlSXRlbShXZWJDb3JlOjpGcmFtZSog
c291cmNlRnJhbWUsIFN0b3JhZ2VBcmVhSW1wbCogc28KIAogICAgIG1fcGVuZGluZ1ZhbHVlQ2hh
bmdlcy5hZGQoa2V5KTsKIAotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdl
TWFuYWdlcjo6UmVtb3ZlSXRlbShtX3NlY3VyaXR5T3JpZ2luLT5kYXRhKCksIG1fc3RvcmFnZU1h
cElELCBzb3VyY2VBcmVhLT5zdG9yYWdlQXJlYUlEKCksIG1fY3VycmVudFNlZWQsIGtleSwgc291
cmNlRnJhbWUtPmRvY3VtZW50KCktPnVybCgpKSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQo
TWVzc2FnZXM6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpSZW1vdmVJdGVtKG1fc3RvcmFnZU1hcElELCBz
b3VyY2VBcmVhLT5zdG9yYWdlQXJlYUlEKCksIG1fY3VycmVudFNlZWQsIGtleSwgc291cmNlRnJh
bWUtPmRvY3VtZW50KCktPnVybCgpKSwgMCk7CiB9CiAKIHZvaWQgU3RvcmFnZUFyZWFNYXA6OmNs
ZWFyKFdlYkNvcmU6OkZyYW1lKiBzb3VyY2VGcmFtZSwgU3RvcmFnZUFyZWFJbXBsKiBzb3VyY2VB
cmVhKQogeworICAgIGNvbm5lY3QoKTsKKwogICAgIHJlc2V0VmFsdWVzKCk7CiAKICAgICBtX2hh
c1BlbmRpbmdDbGVhciA9IHRydWU7CiAgICAgbV9zdG9yYWdlTWFwID0gU3RvcmFnZU1hcDo6Y3Jl
YXRlKG1fcXVvdGFJbkJ5dGVzKTsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6U3Rv
cmFnZU1hbmFnZXI6OkNsZWFyKG1fc2VjdXJpdHlPcmlnaW4tPmRhdGEoKSwgbV9zdG9yYWdlTWFw
SUQsIHNvdXJjZUFyZWEtPnN0b3JhZ2VBcmVhSUQoKSwgbV9jdXJyZW50U2VlZCwgc291cmNlRnJh
bWUtPmRvY3VtZW50KCktPnVybCgpKSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
ZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2Fn
ZXM6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpDbGVhcihtX3N0b3JhZ2VNYXBJRCwgc291cmNlQXJlYS0+
c3RvcmFnZUFyZWFJRCgpLCBtX2N1cnJlbnRTZWVkLCBzb3VyY2VGcmFtZS0+ZG9jdW1lbnQoKS0+
dXJsKCkpLCAwKTsKIH0KIAogYm9vbCBTdG9yYWdlQXJlYU1hcDo6Y29udGFpbnMoY29uc3QgU3Ry
aW5nJiBrZXkpCkBAIC0xNjMsNyArMTUzLDYgQEAgdm9pZCBTdG9yYWdlQXJlYU1hcDo6cmVzZXRW
YWx1ZXMoKQogCiAgICAgbV9wZW5kaW5nVmFsdWVDaGFuZ2VzLmNsZWFyKCk7CiAgICAgbV9oYXNQ
ZW5kaW5nQ2xlYXIgPSBmYWxzZTsKLSAgICBtX2hhc1BlbmRpbmdHZXRWYWx1ZXMgPSBmYWxzZTsK
ICAgICBtX2N1cnJlbnRTZWVkKys7CiB9CiAKQEAgLTE3OCwzMyArMTY3LDEwIEBAIHZvaWQgU3Rv
cmFnZUFyZWFNYXA6OmxvYWRWYWx1ZXNJZk5lZWRlZCgpCiAgICAgLy8gRklYTUU6IFRoaXMgc2hv
dWxkIHVzZSBhIHNwZWNpYWwgc2VuZFN5bmMgZmxhZyB0byBpbmRpY2F0ZSB0aGF0IHdlIGRvbid0
IHdhbnQgdG8gcHJvY2VzcyBpbmNvbWluZyBtZXNzYWdlcyB3aGlsZSB3YWl0aW5nIGZvciBhIHJl
cGx5LgogICAgIC8vIChUaGlzIGZsYWcgZG9lcyBub3QgeWV0IGV4aXN0KS4gU2luY2UgbG9hZFZh
bHVlc0lmTmVlZGVkKCkgZW5kcyB1cCBiZWluZyBjYWxsZWQgZnJvbSB3aXRoaW4gSmF2YVNjcmlw
dCBjb2RlLCBwcm9jZXNzaW5nIGluY29taW5nIHN5bmNocm9ub3VzIG1lc3NhZ2VzCiAgICAgLy8g
Y291bGQgbGVhZCB0byB3ZWlyZCByZWVudHJlbmN5IGJ1Z3Mgb3RoZXJ3aXNlLgotICAgIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5l
Y3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXI6OkdldFZhbHVlcyhtX3N0
b3JhZ2VNYXBJRCwgbV9jdXJyZW50U2VlZCksIE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdlcjo6R2V0
VmFsdWVzOjpSZXBseSh2YWx1ZXMpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5l
bnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVz
c2FnZXM6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpHZXRWYWx1ZXMobV9zdG9yYWdlTWFwSUQpLCBNZXNz
YWdlczo6U3RvcmFnZU1hbmFnZXJTZXQ6OkdldFZhbHVlczo6UmVwbHkodmFsdWVzKSwgMCk7CiAK
ICAgICBtX3N0b3JhZ2VNYXAgPSBTdG9yYWdlTWFwOjpjcmVhdGUobV9xdW90YUluQnl0ZXMpOwog
ICAgIG1fc3RvcmFnZU1hcC0+aW1wb3J0SXRlbXMoV1RGTW92ZSh2YWx1ZXMpKTsKLQotICAgIC8v
IFdlIHdhbnQgdG8gaWdub3JlIGFsbCBjaGFuZ2VzIHVudGlsIHdlIGdldCB0aGUgRGlkR2V0VmFs
dWVzIG1lc3NhZ2UuCi0gICAgbV9oYXNQZW5kaW5nR2V0VmFsdWVzID0gdHJ1ZTsKLX0KLQotYm9v
bCBTdG9yYWdlQXJlYU1hcDo6cHJld2FybSgpCi17Ci0gICAgaWYgKG1fZGlkUHJld2FybSB8fCBt
X3N0b3JhZ2VNYXApCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBtX2RpZFByZXdhcm0gPSB0
cnVlOwotCi0gICAgY29ubmVjdCgpOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3Vy
ZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpT
dG9yYWdlTWFuYWdlcjo6UHJld2FybShtX3N0b3JhZ2VNYXBJRCksIDApOwotICAgIHJldHVybiB0
cnVlOwotfQotCi12b2lkIFN0b3JhZ2VBcmVhTWFwOjpkaWRHZXRWYWx1ZXModWludDY0X3Qgc3Rv
cmFnZU1hcFNlZWQpCi17Ci0gICAgaWYgKG1fY3VycmVudFNlZWQgIT0gc3RvcmFnZU1hcFNlZWQp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIEFTU0VSVChtX2hhc1BlbmRpbmdHZXRWYWx1ZXMpOwot
ICAgIG1faGFzUGVuZGluZ0dldFZhbHVlcyA9IGZhbHNlOwogfQogCiB2b2lkIFN0b3JhZ2VBcmVh
TWFwOjpkaWRTZXRJdGVtKHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkLCBjb25zdCBTdHJpbmcmIGtl
eSwgYm9vbCBxdW90YUVycm9yKQpAQCAtMjQwLDYgKzIwNiwxMSBAQCB2b2lkIFN0b3JhZ2VBcmVh
TWFwOjpkaWRDbGVhcih1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCkKICAgICBtX2hhc1BlbmRpbmdD
bGVhciA9IGZhbHNlOwogfQogCit2b2lkIFN0b3JhZ2VBcmVhTWFwOjpjbGVhckNhY2hlKCkKK3sK
KyAgICByZXNldFZhbHVlcygpOworfQorCiBib29sIFN0b3JhZ2VBcmVhTWFwOjpzaG91bGRBcHBs
eUNoYW5nZUZvcktleShjb25zdCBTdHJpbmcmIGtleSkgY29uc3QKIHsKICAgICAvLyBXZSBoYXZl
IG5vdCB5ZXQgbG9hZGVkIGFueXRoaW5nIGZyb20gdGhpcyBzdG9yYWdlIG1hcC4KQEAgLTI1OSw4
ICsyMzAsOCBAQCB2b2lkIFN0b3JhZ2VBcmVhTWFwOjphcHBseUNoYW5nZShjb25zdCBTdHJpbmcm
IGtleSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSkKIHsKICAgICBBU1NFUlQoIW1fc3RvcmFnZU1h
cCB8fCBtX3N0b3JhZ2VNYXAtPmhhc09uZVJlZigpKTsKIAotICAgIC8vIFRoZXJlJ3MgYSBjbGVh
ciBwZW5kaW5nIG9yIGdldFZhbHVlcyBwZW5kaW5nIHdlIGRvbid0IHdhbnQgdG8gYXBwbHkgYW55
IGNoYW5nZXMgdW50aWwgd2UgZ2V0IHRoZSBjb3JyZXNwb25kaW5nIERpZENsZWFyL0RpZEdldFZh
bHVlcyBtZXNzYWdlcy4KLSAgICBpZiAobV9oYXNQZW5kaW5nQ2xlYXIgfHwgbV9oYXNQZW5kaW5n
R2V0VmFsdWVzKQorICAgIC8vIFRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjbGVhciBwZW5kaW5nIHdl
IGRvbid0IHdhbnQgdG8gYXBwbHkgYW55IGNoYW5nZXMgdW50aWwgd2UgZ2V0IHRoZSBjb3JyZXNw
b25kaW5nIERpZENsZWFyIG1lc3NhZ2VzLgorICAgIGlmIChtX2hhc1BlbmRpbmdDbGVhcikKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFrZXkpIHsKQEAgLTMwNSwyMiArMjc2LDE3IEBAIHZv
aWQgU3RvcmFnZUFyZWFNYXA6OmRpc3BhdGNoU3RvcmFnZUV2ZW50KHVpbnQ2NF90IHNvdXJjZVN0
b3JhZ2VBcmVhSUQsIGNvbnN0IFN0CiAgICAgICAgIGFwcGx5Q2hhbmdlKGtleSwgbmV3VmFsdWUp
OwogICAgIH0KIAotICAgIGlmIChzdG9yYWdlVHlwZSgpID09IFN0b3JhZ2VUeXBlOjpTZXNzaW9u
IHx8IHN0b3JhZ2VUeXBlKCkgPT0gU3RvcmFnZVR5cGU6OkVwaGVtZXJhbExvY2FsKQorICAgIGlm
IChzdG9yYWdlVHlwZSgpID09IFN0b3JhZ2VUeXBlOjpTZXNzaW9uKQogICAgICAgICBkaXNwYXRj
aFNlc3Npb25TdG9yYWdlRXZlbnQoc291cmNlU3RvcmFnZUFyZWFJRCwga2V5LCBvbGRWYWx1ZSwg
bmV3VmFsdWUsIHVybFN0cmluZyk7CiAgICAgZWxzZQogICAgICAgICBkaXNwYXRjaExvY2FsU3Rv
cmFnZUV2ZW50KHNvdXJjZVN0b3JhZ2VBcmVhSUQsIGtleSwgb2xkVmFsdWUsIG5ld1ZhbHVlLCB1
cmxTdHJpbmcpOwogfQogCi12b2lkIFN0b3JhZ2VBcmVhTWFwOjpjbGVhckNhY2hlKCkKLXsKLSAg
ICByZXNldFZhbHVlcygpOwotfQotCiB2b2lkIFN0b3JhZ2VBcmVhTWFwOjpkaXNwYXRjaFNlc3Np
b25TdG9yYWdlRXZlbnQodWludDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwgY29uc3QgU3RyaW5n
JiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIGNv
bnN0IFN0cmluZyYgdXJsU3RyaW5nKQogewotICAgIC8vIE5hbWVzcGFjZSBJRHMgZm9yIHNlc3Np
b24gc3RvcmFnZSBuYW1lc3BhY2VzIGFuZCBlcGhlbWVyYWwgbG9jYWwgc3RvcmFnZSBuYW1lc3Bh
Y2VzIGFyZSBlcXVpdmFsZW50IHRvIHdlYiBwYWdlIElEcworICAgIC8vIE5hbWVzcGFjZSBJRHMg
Zm9yIHNlc3Npb24gc3RvcmFnZSBuYW1lc3BhY2VzIGFyZSBlcXVpdmFsZW50IHRvIHdlYiBwYWdl
IElEcwogICAgIC8vIHNvIHdlIGNhbiBnZXQgdGhlIHJpZ2h0IHBhZ2UgaGVyZS4KLSAgICBXZWJQ
YWdlKiB3ZWJQYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShtYWtlT2JqZWN0
SWRlbnRpZmllcjxQYWdlSWRlbnRpZmllclR5cGU+KG1fc3RvcmFnZU5hbWVzcGFjZUlEKSk7Cisg
ICAgV2ViUGFnZSogd2ViUGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UobWFr
ZU9iamVjdElkZW50aWZpZXI8UGFnZUlkZW50aWZpZXJUeXBlPihtX3N0b3JhZ2VOYW1lc3BhY2Ut
PnN0b3JhZ2VOYW1lc3BhY2VJRCgpKSk7CiAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICByZXR1
cm47CiAKQEAgLTM1NCw3ICszMjAsOCBAQCB2b2lkIFN0b3JhZ2VBcmVhTWFwOjpkaXNwYXRjaExv
Y2FsU3RvcmFnZUV2ZW50KHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIGNvbgogCiAgICAg
VmVjdG9yPFJlZlB0cjxGcmFtZT4+IGZyYW1lczsKIAotICAgIFBhZ2VHcm91cCYgcGFnZUdyb3Vw
ID0gKldlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2VHcm91cChtX3N0b3JhZ2VOYW1lc3Bh
Y2VJRCktPmNvcmVQYWdlR3JvdXAoKTsKKyAgICAvLyBOYW1lc3BhY2UgSURzIGZvciBsb2NhbCBz
dG9yYWdlIG5hbWVzcGFjZXMgYXJlIGVxdWl2YWxlbnQgdG8gd2ViIHBhZ2UgZ3JvdXAgSURzLgor
ICAgIFBhZ2VHcm91cCYgcGFnZUdyb3VwID0gKldlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBh
Z2VHcm91cChtX3N0b3JhZ2VOYW1lc3BhY2UtPnN0b3JhZ2VOYW1lc3BhY2VJRCgpKS0+Y29yZVBh
Z2VHcm91cCgpOwogICAgIGNvbnN0IEhhc2hTZXQ8UGFnZSo+JiBwYWdlcyA9IHBhZ2VHcm91cC5w
YWdlcygpOwogICAgIGZvciAoSGFzaFNldDxQYWdlKj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcGFn
ZXMuYmVnaW4oKSwgZW5kID0gcGFnZXMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAg
ICBmb3IgKEZyYW1lKiBmcmFtZSA9ICYoKml0KS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9
IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKQEAgLTM4MSwzNSArMzQ4LDM3IEBAIHZv
aWQgU3RvcmFnZUFyZWFNYXA6OmRpc3BhdGNoTG9jYWxTdG9yYWdlRXZlbnQodWludDY0X3Qgc291
cmNlU3RvcmFnZUFyZWFJRCwgY29uCiAKIHZvaWQgU3RvcmFnZUFyZWFNYXA6OmNvbm5lY3QoKQog
ewotICAgIGlmICghbV9pc0Rpc2Nvbm5lY3RlZCkKKyAgICBpZiAobV9zdG9yYWdlTWFwSUQpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIHN3aXRjaCAobV9zdG9yYWdlVHlwZSkgewogICAgIGNhc2Ug
U3RvcmFnZVR5cGU6OkxvY2FsOgotICAgIGNhc2UgU3RvcmFnZVR5cGU6OkVwaGVtZXJhbExvY2Fs
OgogICAgIGNhc2UgU3RvcmFnZVR5cGU6OlRyYW5zaWVudExvY2FsOgogICAgICAgICBpZiAoU2Vj
dXJpdHlPcmlnaW4qIHRvcExldmVsT3JpZ2luID0gbV9zdG9yYWdlTmFtZXNwYWNlLT50b3BMZXZl
bE9yaWdpbigpKQotICAgICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlN0b3Jh
Z2VNYW5hZ2VyOjpDcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VNYXAobV9zdG9yYWdlTWFwSUQs
IG1fc3RvcmFnZU5hbWVzcGFjZS0+c3RvcmFnZU5hbWVzcGFjZUlEKCksIHRvcExldmVsT3JpZ2lu
LT5kYXRhKCksIG1fc2VjdXJpdHlPcmlnaW4tPmRhdGEoKSksIDApOworICAgICAgICAgICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29u
bmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdlclNldDo6Q29ubmVjdFRv
VHJhbnNpZW50TG9jYWxTdG9yYWdlQXJlYShtX3N0b3JhZ2VOYW1lc3BhY2UtPnNlc3Npb25JRCgp
LCBtX3N0b3JhZ2VOYW1lc3BhY2UtPnN0b3JhZ2VOYW1lc3BhY2VJRCgpLCB0b3BMZXZlbE9yaWdp
bi0+ZGF0YSgpLCBtX3NlY3VyaXR5T3JpZ2luLT5kYXRhKCkpLCBNZXNzYWdlczo6U3RvcmFnZU1h
bmFnZXJTZXQ6OkNvbm5lY3RUb1RyYW5zaWVudExvY2FsU3RvcmFnZUFyZWE6OlJlcGx5KG1fc3Rv
cmFnZU1hcElEKSwgMCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdlcjo6Q3JlYXRlTG9jYWxTdG9yYWdlTWFwKG1fc3Rv
cmFnZU1hcElELCBtX3N0b3JhZ2VOYW1lc3BhY2UtPnN0b3JhZ2VOYW1lc3BhY2VJRCgpLCBtX3Nl
Y3VyaXR5T3JpZ2luLT5kYXRhKCkpLCAwKTsKKyAgICAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5k
U3luYyhNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXJTZXQ6OkNvbm5lY3RUb0xvY2FsU3RvcmFnZUFy
ZWEobV9zdG9yYWdlTmFtZXNwYWNlLT5zZXNzaW9uSUQoKSwgbV9zdG9yYWdlTmFtZXNwYWNlLT5z
dG9yYWdlTmFtZXNwYWNlSUQoKSwgbV9zZWN1cml0eU9yaWdpbi0+ZGF0YSgpKSwgTWVzc2FnZXM6
OlN0b3JhZ2VNYW5hZ2VyU2V0OjpDb25uZWN0VG9Mb2NhbFN0b3JhZ2VBcmVhOjpSZXBseShtX3N0
b3JhZ2VNYXBJRCksIDApOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFN0b3JhZ2VUeXBlOjpT
ZXNzaW9uOgotICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6U3RvcmFnZU1hbmFn
ZXI6OkNyZWF0ZVNlc3Npb25TdG9yYWdlTWFwKG1fc3RvcmFnZU1hcElELCBtX3N0b3JhZ2VOYW1l
c3BhY2UtPnN0b3JhZ2VOYW1lc3BhY2VJRCgpLCBtX3NlY3VyaXR5T3JpZ2luLT5kYXRhKCkpLCAw
KTsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdl
clNldDo6Q29ubmVjdFRvU2Vzc2lvblN0b3JhZ2VBcmVhKG1fc3RvcmFnZU5hbWVzcGFjZS0+c2Vz
c2lvbklEKCksIG1fc3RvcmFnZU5hbWVzcGFjZS0+c3RvcmFnZU5hbWVzcGFjZUlEKCksIG1fc2Vj
dXJpdHlPcmlnaW4tPmRhdGEoKSksIE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdlclNldDo6Q29ubmVj
dFRvU2Vzc2lvblN0b3JhZ2VBcmVhOjpSZXBseShtX3N0b3JhZ2VNYXBJRCksIDApOwogICAgIH0K
IAotICAgIGlmIChtX3N0b3JhZ2VNYXApCi0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3Nh
Z2VzOjpTdG9yYWdlTWFuYWdlcjo6U2V0SXRlbXMobV9zdG9yYWdlTWFwSUQsIG1fc3RvcmFnZU1h
cC0+aXRlbXMoKSksIDApOwotICAgIG1faXNEaXNjb25uZWN0ZWQgPSBmYWxzZTsKKyAgICBpZiAo
bV9zdG9yYWdlTWFwSUQpCisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnJlZ2lzdGVy
U3RvcmFnZUFyZWFNYXAoKnRoaXMpOwogfQogCiB2b2lkIFN0b3JhZ2VBcmVhTWFwOjpkaXNjb25u
ZWN0KCkKIHsKLSAgICBtX2lzRGlzY29ubmVjdGVkID0gdHJ1ZTsKLSAgICBpZiAobV9zdG9yYWdl
VHlwZSA9PSBTdG9yYWdlVHlwZTo6U2Vzc2lvbiAmJiBtX3N0b3JhZ2VNYXApIHsKLSAgICAgICAg
bV9wZW5kaW5nVmFsdWVDaGFuZ2VzLmNsZWFyKCk7Ci0gICAgICAgIG1faGFzUGVuZGluZ0NsZWFy
ID0gZmFsc2U7Ci0gICAgfSBlbHNlCi0gICAgICAgIHJlc2V0VmFsdWVzKCk7CisgICAgaWYgKCFt
X3N0b3JhZ2VNYXBJRCkKKyAgICAgICAgcmV0dXJuOworCisgICAgcmVzZXRWYWx1ZXMoKTsKKyAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS51bnJlZ2lzdGVyU3RvcmFnZUFyZWFNYXAoKnRoaXMp
OworCisgICAgaWYgKGF1dG8gbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uID0gV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkuZXhpc3RpbmdOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKSkKKyAgICAgICAg
bmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6U3Rv
cmFnZU1hbmFnZXJTZXQ6OkRpc2Nvbm5lY3RGcm9tU3RvcmFnZUFyZWEobV9zdG9yYWdlTWFwSUQp
LCAwKTsKKworICAgIG1fc3RvcmFnZU1hcElEID0gMDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9y
YWdlQXJlYU1hcC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFn
ZUFyZWFNYXAuaAppbmRleCBmYjkxYmM5MDU0MjVmYzgxYzZhNDgzNTI3NGFiY2MwYzE3ZGE0OWM2
Li5kZjE4ZWRiMWI2MWMwOGQ1MWRmODNjOTlmYWVmMzY2ZDA4YTNlMDVkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmgKQEAg
LTU3LDcgKzU3LDYgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlSXRlbShXZWJDb3JlOjpGcmFt
ZSogc291cmNlRnJhbWUsIFN0b3JhZ2VBcmVhSW1wbCogc291cmNlQXJlYSwgY29uc3QgU3RyaW5n
JiBrZXkpOwogICAgIHZvaWQgY2xlYXIoV2ViQ29yZTo6RnJhbWUqIHNvdXJjZUZyYW1lLCBTdG9y
YWdlQXJlYUltcGwqIHNvdXJjZUFyZWEpOwogICAgIGJvb2wgY29udGFpbnMoY29uc3QgU3RyaW5n
JiBrZXkpOwotICAgIGJvb2wgcHJld2FybSgpOwogCiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2
ZXIKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYpIG92ZXJyaWRlOwpAQCAtNzEsNyArNzAsNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAg
IFN0b3JhZ2VBcmVhTWFwKFN0b3JhZ2VOYW1lc3BhY2VJbXBsKiwgUmVmPFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luPiYmKTsKIAotICAgIHZvaWQgZGlkR2V0VmFsdWVzKHVpbnQ2NF90IHN0b3JhZ2VN
YXBTZWVkKTsKICAgICB2b2lkIGRpZFNldEl0ZW0odWludDY0X3Qgc3RvcmFnZU1hcFNlZWQsIGNv
bnN0IFN0cmluZyYga2V5LCBib29sIHF1b3RhRXJyb3IpOwogICAgIHZvaWQgZGlkUmVtb3ZlSXRl
bSh1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCwgY29uc3QgU3RyaW5nJiBrZXkpOwogICAgIHZvaWQg
ZGlkQ2xlYXIodWludDY0X3Qgc3RvcmFnZU1hcFNlZWQpOwpAQCAtOTMsNyArOTEsNiBAQCBwcml2
YXRlOgogICAgIHVpbnQ2NF90IG1fc3RvcmFnZU1hcElEOwogCiAgICAgV2ViQ29yZTo6U3RvcmFn
ZVR5cGUgbV9zdG9yYWdlVHlwZTsKLSAgICB1aW50NjRfdCBtX3N0b3JhZ2VOYW1lc3BhY2VJRDsK
ICAgICB1bnNpZ25lZCBtX3F1b3RhSW5CeXRlczsKICAgICBSZWY8V2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW4+IG1fc2VjdXJpdHlPcmlnaW47CiAKQEAgLTEwMSwxMSArOTgsNyBAQCBwcml2YXRlOgog
CiAgICAgdWludDY0X3QgbV9jdXJyZW50U2VlZDsKICAgICBib29sIG1faGFzUGVuZGluZ0NsZWFy
OwotICAgIGJvb2wgbV9oYXNQZW5kaW5nR2V0VmFsdWVzOwogICAgIEhhc2hDb3VudGVkU2V0PFN0
cmluZz4gbV9wZW5kaW5nVmFsdWVDaGFuZ2VzOwotCi0gICAgYm9vbCBtX2lzRGlzY29ubmVjdGVk
IHsgdHJ1ZSB9OwotICAgIGJvb2wgbV9kaWRQcmV3YXJtIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5tZXNzYWdlcy5pbgppbmRleCBiMTU5MDRm
MTZiZWMxNDJiMTBiNDgwMGQxMDY0NTAwOTMzODMwMGQ1Li43YTc1ZDIxMGZkODMyNWYyYjUxYTg5
Y2UzZTU0MmQ0ODAzOTA5NmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5tZXNzYWdlcy5pbgpAQCAtMjEs
NyArMjEsNiBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBtZXNzYWdlcyAtPiBTdG9yYWdlQXJlYU1hcCB7
Ci0gICAgRGlkR2V0VmFsdWVzKHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkKQogICAgIERpZFNldEl0
ZW0odWludDY0X3Qgc3RvcmFnZU1hcFNlZWQsIFN0cmluZyBrZXksIGJvb2wgcXVvdGFFeGNlcHRp
b24pCiAgICAgRGlkUmVtb3ZlSXRlbSh1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCwgU3RyaW5nIGtl
eSkKICAgICBEaWRDbGVhcih1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJ
bXBsLmNwcAppbmRleCBmNTljNzliN2ZhMmJlMmZjOWE3MjA1MmMxYjllNTNjYjZhMzIzZmQwLi5m
MGRiYTQ2YzQ5YWE0YmZkYjNlYjFmZjk3YWZkMTI2MzFjMDRlNTE0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFj
ZUltcGwuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJTdG9yYWdlQXJlYUltcGwu
aCIKICNpbmNsdWRlICJTdG9yYWdlQXJlYU1hcC5oIgorI2luY2x1ZGUgIlN0b3JhZ2VNYW5hZ2Vy
U2V0TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZUdy
b3VwUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCkBAIC00MCwzMSArNDEsMjcgQEAK
IG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVJlZjxTdG9y
YWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVNlc3Npb25TdG9y
YWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcykK
K1JlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVNl
c3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3Rh
SW5CeXRlcywgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogewotICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0b3JhZ2VUeXBlOjpTZXNzaW9uLCBpZGVudGlm
aWVyLCBudWxscHRyLCBxdW90YUluQnl0ZXMpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
dG9yYWdlTmFtZXNwYWNlSW1wbChTdG9yYWdlVHlwZTo6U2Vzc2lvbiwgaWRlbnRpZmllciwgbnVs
bHB0ciwgcXVvdGFJbkJ5dGVzLCBzZXNzaW9uSUQpKTsKIH0KIAotUmVmPFN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdl
TmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcykKK1Jl
ZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZUxvY2Fs
U3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0
ZXMsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKLSAgICByZXR1cm4gY3JlYXRlTG9jYWxT
dG9yYWdlTmFtZXNwYWNlKGlkZW50aWZpZXIsIHF1b3RhSW5CeXRlcywgSXNFcGhlbWVyYWw6Olll
cyk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwoU3RvcmFn
ZVR5cGU6OkxvY2FsLCBpZGVudGlmaWVyLCBudWxscHRyLCBxdW90YUluQnl0ZXMsIHNlc3Npb25J
RCkpOwogfQogCi1SZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBs
OjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgdW5zaWdu
ZWQgcXVvdGFJbkJ5dGVzLCBJc0VwaGVtZXJhbCBpc0VwaGVtZXJhbCkKK1JlZjxTdG9yYWdlTmFt
ZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3Rv
cmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
biYgdG9wTGV2ZWxPcmlnaW4sIHVpbnQ2NF90IHF1b3RhSW5CeXRlcywgUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklEKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0b3JhZ2VOYW1lc3BhY2VJ
bXBsKGlzRXBoZW1lcmFsID09IElzRXBoZW1lcmFsOjpZZXMgPyBTdG9yYWdlVHlwZTo6RXBoZW1l
cmFsTG9jYWwgOiBTdG9yYWdlVHlwZTo6TG9jYWwsIGlkZW50aWZpZXIsIG51bGxwdHIsIHF1b3Rh
SW5CeXRlcykpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBs
KFN0b3JhZ2VUeXBlOjpUcmFuc2llbnRMb2NhbCwgaWRlbnRpZmllciwgJnRvcExldmVsT3JpZ2lu
LCBxdW90YUluQnl0ZXMsIHNlc3Npb25JRCkpOwogfQogCi1SZWY8U3RvcmFnZU5hbWVzcGFjZUlt
cGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1l
c3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHRvcExl
dmVsT3JpZ2luLCB1aW50NjRfdCBxdW90YUluQnl0ZXMpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5cGU6OlRyYW5zaWVudExvY2FsLCBp
ZGVudGlmaWVyLCAmdG9wTGV2ZWxPcmlnaW4sIHF1b3RhSW5CeXRlcykpOwotfQotCi1TdG9yYWdl
TmFtZXNwYWNlSW1wbDo6U3RvcmFnZU5hbWVzcGFjZUltcGwoV2ViQ29yZTo6U3RvcmFnZVR5cGUg
c3RvcmFnZVR5cGUsIHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW4qIHRvcExldmVsT3JpZ2luLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpCitTdG9yYWdl
TmFtZXNwYWNlSW1wbDo6U3RvcmFnZU5hbWVzcGFjZUltcGwoV2ViQ29yZTo6U3RvcmFnZVR5cGUg
c3RvcmFnZVR5cGUsIHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW4qIHRvcExldmVsT3JpZ2luLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMsIFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCkKICAgICA6IG1fc3RvcmFnZVR5cGUoc3RvcmFnZVR5cGUpCiAgICAg
LCBtX3N0b3JhZ2VOYW1lc3BhY2VJRChzdG9yYWdlTmFtZXNwYWNlSUQpCiAgICAgLCBtX3RvcExl
dmVsT3JpZ2luKHRvcExldmVsT3JpZ2luKQogICAgICwgbV9xdW90YUluQnl0ZXMocXVvdGFJbkJ5
dGVzKQorICAgICwgbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQogewogfQogCkBAIC05NCwxNCArOTEs
MTkgQEAgUmVmPFN0b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6c3RvcmFnZUFyZWEo
Y29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWMKIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBTdG9y
YWdlTmFtZXNwYWNlSW1wbDo6Y29weShQYWdlKiBuZXdQYWdlKQogewogICAgIEFTU0VSVChtX3N0
b3JhZ2VOYW1lc3BhY2VJRCk7CisgICAgQVNTRVJUKG1fc3RvcmFnZVR5cGUgPT0gU3RvcmFnZVR5
cGU6OlNlc3Npb24pOwogCi0gICAgaWYgKG1fc3RvcmFnZVR5cGUgPT0gU3RvcmFnZVR5cGU6OlNl
c3Npb24pCi0gICAgICAgIHJldHVybiBjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShXZWJQ
YWdlOjpmcm9tQ29yZVBhZ2UobmV3UGFnZSktPnBhZ2VJRCgpLnRvVUludDY0KCksIG1fcXVvdGFJ
bkJ5dGVzKTsKLQotICAgIEFTU0VSVChtX3N0b3JhZ2VUeXBlID09IFN0b3JhZ2VUeXBlOjpFcGhl
bWVyYWxMb2NhbCk7Ci0gICAgYXV0byBuZXdOYW1lc3BhY2UgPSBhZG9wdFJlZigqbmV3IFN0b3Jh
Z2VOYW1lc3BhY2VJbXBsKG1fc3RvcmFnZVR5cGUsIG1fc3RvcmFnZU5hbWVzcGFjZUlELCBtX3Rv
cExldmVsT3JpZ2luLmdldCgpLCBtX3F1b3RhSW5CeXRlcykpOworICAgIGlmIChhdXRvIG5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmV4aXN0aW5nTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkpCisgICAgICAgIG5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpDbG9uZVNl
c3Npb25TdG9yYWdlTmFtZXNwYWNlKG5ld1BhZ2UtPnNlc3Npb25JRCgpLCBtX3N0b3JhZ2VOYW1l
c3BhY2VJRCwgV2ViUGFnZTo6ZnJvbUNvcmVQYWdlKG5ld1BhZ2UpLT5wYWdlSUQoKS50b1VJbnQ2
NCgpKSwgMCk7CisgICAgCisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFj
ZUltcGwobV9zdG9yYWdlVHlwZSwgV2ViUGFnZTo6ZnJvbUNvcmVQYWdlKG5ld1BhZ2UpLT5wYWdl
SUQoKS50b1VJbnQ2NCgpLCBtX3RvcExldmVsT3JpZ2luLmdldCgpLCBtX3F1b3RhSW5CeXRlcywg
bmV3UGFnZS0+c2Vzc2lvbklEKCkpKTsKK30KIAotICAgIHJldHVybiBuZXdOYW1lc3BhY2U7Cit2
b2lkIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpzZXRTZXNzaW9uSURGb3JUZXN0aW5nKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCkKK3sKKyAgICBtX3Nlc3Npb25JRCA9IHNlc3Npb25JRDsKKyAgICBm
b3IgKGF1dG8qIHN0b3JhZ2VBcmVhTWFwIDogbV9zdG9yYWdlQXJlYU1hcHMudmFsdWVzKCkpCisg
ICAgICAgIHN0b3JhZ2VBcmVhTWFwLT5kaXNjb25uZWN0KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2Uv
U3RvcmFnZU5hbWVzcGFjZUltcGwuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmgKaW5kZXggZWE2ZDU1MThjZGZjOTlkYzNhMDFkODU3
ZTM2NjM2NTBmOWI2NjZhMi4uOTM4NWU2MWVkNDQyYjc2ZDBhOTVhYzhmM2UyNjM0NWIzZWYwNzJm
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFn
ZU5hbWVzcGFjZUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFn
ZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oCkBAIC0zOSwxMiArMzksMTAgQEAgY2xhc3MgV2ViUGFn
ZTsKIAogY2xhc3MgU3RvcmFnZU5hbWVzcGFjZUltcGwgOiBwdWJsaWMgV2ViQ29yZTo6U3RvcmFn
ZU5hbWVzcGFjZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1w
bD4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgdW5z
aWduZWQgcXVvdGFJbkJ5dGVzKTsKLSAgICBzdGF0aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBs
PiBjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmll
ciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKKyAgICBzdGF0aWMgUmVmPFN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsPiBjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVy
LCB1bnNpZ25lZCBxdW90YUluQnl0ZXMsIFBBTDo6U2Vzc2lvbklEKTsKIAotICAgIGVudW0gY2xh
c3MgSXNFcGhlbWVyYWwgOiBib29sIHsgTm8sIFllcyB9OwotICAgIHN0YXRpYyBSZWY8U3RvcmFn
ZU5hbWVzcGFjZUltcGw+IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVu
dGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMsIElzRXBoZW1lcmFsIGlzRXBoZW1lcmFsKTsK
LSAgICBzdGF0aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVUcmFuc2llbnRMb2Nh
bFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW4mIHRvcExldmVsT3JpZ2luLCB1aW50NjRfdCBxdW90YUluQnl0ZXMpOworICAgIHN0YXRp
YyBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1
aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMsIFBBTDo6U2Vzc2lvbklE
KTsKKyAgICBzdGF0aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVUcmFuc2llbnRM
b2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW4mIHRvcExldmVsT3JpZ2luLCB1aW50NjRfdCBxdW90YUluQnl0ZXMsIFBBTDo6U2Vz
c2lvbklEKTsKIAogICAgIHZpcnR1YWwgflN0b3JhZ2VOYW1lc3BhY2VJbXBsKCk7CiAKQEAgLTU1
LDggKzUzLDExIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGlkRGVzdHJveVN0b3JhZ2VBcmVhTWFw
KFN0b3JhZ2VBcmVhTWFwJik7CiAKKyAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBtX3Nlc3Npb25JRDsgfQorICAgIHZvaWQgc2V0U2Vzc2lvbklE
Rm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCkgb3ZlcnJpZGU7CisKIHByaXZhdGU6Ci0gICAgZXhw
bGljaXQgU3RvcmFnZU5hbWVzcGFjZUltcGwoV2ViQ29yZTo6U3RvcmFnZVR5cGUsIHVpbnQ2NF90
IHN0b3JhZ2VOYW1lc3BhY2VJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qIHRvcExldmVsT3Jp
Z2luLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpOworICAgIGV4cGxpY2l0IFN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsKFdlYkNvcmU6OlN0b3JhZ2VUeXBlLCB1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQs
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiB0b3BMZXZlbE9yaWdpbiwgdW5zaWduZWQgcXVvdGFJ
bkJ5dGVzLCBQQUw6OlNlc3Npb25JRCk7CiAKICAgICBSZWY8V2ViQ29yZTo6U3RvcmFnZUFyZWE+
IHN0b3JhZ2VBcmVhKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYpIG92ZXJyaWRl
OwogICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjb3B5KFdlYkNvcmU6OlBhZ2Uq
KSBvdmVycmlkZTsKQEAgLTcwLDYgKzcxLDggQEAgcHJpdmF0ZToKICAgICBjb25zdCB1bnNpZ25l
ZCBtX3F1b3RhSW5CeXRlczsKIAogICAgIEhhc2hNYXA8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhLCBTdG9yYWdlQXJlYU1hcCo+IG1fc3RvcmFnZUFyZWFNYXBzOworCisgICAgUEFMOjpTZXNz
aW9uSUQgbV9zZXNzaW9uSUQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3Bh
Y2VQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJT
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCmluZGV4IDg4YTkzYzVkNTA0MmExMjYzNDExYzY4
NGJlZGJkNTA2ZTM0YjVhMGUuLjllNzIxNjMxYjNiNGJkNzJlYzAzM2U3OWJhZTBkMzc1MjU0YmFj
MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1dlYlN0
b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcApAQCAtNjcsMjIgKzY3
LDE3IEBAIFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6fldlYlN0b3JhZ2VOYW1lc3BhY2VQ
cm92aWRlcigpCiAKIFJlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFt
ZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFBhZ2UmIHBhZ2Us
IHVuc2lnbmVkIHF1b3RhKQogewotICAgIHJldHVybiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3Jl
YXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoV2ViUGFnZTo6ZnJvbUNvcmVQYWdlKCZwYWdlKS0+
cGFnZUlEKCkudG9VSW50NjQoKSwgcXVvdGEpOworICAgIHJldHVybiBTdG9yYWdlTmFtZXNwYWNl
SW1wbDo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoV2ViUGFnZTo6ZnJvbUNvcmVQYWdl
KCZwYWdlKS0+cGFnZUlEKCkudG9VSW50NjQoKSwgcXVvdGEsIHBhZ2Uuc2Vzc2lvbklEKCkpOwog
fQogCi1SZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVBy
b3ZpZGVyOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoUGFnZSYgcGFnZSwg
dW5zaWduZWQgcXVvdGEpCitSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQg
cXVvdGEsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKLSAgICByZXR1cm4gU3RvcmFnZU5h
bWVzcGFjZUltcGw6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShXZWJQYWdl
Ojpmcm9tQ29yZVBhZ2UoJnBhZ2UpLT5wYWdlSUQoKS50b1VJbnQ2NCgpLCBxdW90YSk7CisgICAg
cmV0dXJuIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2Uo
bV9pZGVudGlmaWVyLCBxdW90YSwgc2Vzc2lvbklEKTsKIH0KIAotUmVmPFdlYkNvcmU6OlN0b3Jh
Z2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlTG9jYWxTdG9y
YWdlTmFtZXNwYWNlKHVuc2lnbmVkIHF1b3RhKQorUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3Bh
Y2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9y
YWdlTmFtZXNwYWNlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiB0b3BMZXZlbE9yaWdpbiwgdW5z
aWduZWQgcXVvdGEsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKLSAgICByZXR1cm4gU3Rv
cmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZShtX2lkZW50aWZp
ZXIsIHF1b3RhLCBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6SXNFcGhlbWVyYWw6Ok5vKTsKLX0KLQot
UmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
cjo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luJiB0b3BMZXZlbE9yaWdpbiwgdW5zaWduZWQgcXVvdGEpCi17Ci0gICAgcmV0dXJuIFN0
b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2Uo
bV9pZGVudGlmaWVyLCB0b3BMZXZlbE9yaWdpbiwgcXVvdGEpOworICAgIHJldHVybiBTdG9yYWdl
TmFtZXNwYWNlSW1wbDo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKG1faWRl
bnRpZmllciwgdG9wTGV2ZWxPcmlnaW4sIHF1b3RhLCBzZXNzaW9uSUQpOwogfQogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFt
ZXNwYWNlUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1dl
YlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oCmluZGV4IDNjZTZkYjlmMDY4ZTgwMzg5NjgxMTRl
Zjk5YWMyNWFjZTA0MTFmMzQuLjIyZTQyZjUyMGRhY2EzZGY2OWM1YTg2MDU2NmZmNGE3NzAxZGY2
YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1dlYlN0
b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oCkBAIC0zOCw5ICszOCw4IEBA
IHByaXZhdGU6CiAgICAgZXhwbGljaXQgV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKHVpbnQ2
NF90IGlkZW50aWZpZXIpOwogCiAgICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNy
ZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlBhZ2UmLCB1bnNpZ25lZCBxdW90
YSkgb3ZlcnJpZGU7Ci0gICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUVw
aGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpQYWdlJiwgdW5zaWduZWQgcXVv
dGEpIG92ZXJyaWRlOwotICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVM
b2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOwotICAgIFJlZjxX
ZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1l
c3BhY2UoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCB1bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7
CisgICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUxvY2FsU3RvcmFnZU5h
bWVzcGFjZSh1bnNpZ25lZCBxdW90YSwgUEFMOjpTZXNzaW9uSUQpIG92ZXJyaWRlOworICAgIFJl
ZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VO
YW1lc3BhY2UoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCB1bnNpZ25lZCBxdW90YSwgUEFMOjpT
ZXNzaW9uSUQpIG92ZXJyaWRlOwogCiAgICAgY29uc3QgdWludDY0X3QgbV9pZGVudGlmaWVyOwog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlQXJlYUlt
cGwuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHAK
aW5kZXggN2RhNWM3MmU1OGVmNzNkMTk2ZDE2NzMwNzc1YTM3YmFhNTQ3NGNhZC4uNDJjYzRkYmQw
MzllYzczNTkyYzQ3NjBmY2FlMWJiOGQ2ODNkYzk5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9TdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHAKQEAgLTI5Miw0ICsyOTIsMjIgQEAgdm9p
ZCBTdG9yYWdlQXJlYUltcGw6OmRpc3BhdGNoU3RvcmFnZUV2ZW50KGNvbnN0IFN0cmluZyYga2V5
LCBjb25zdCBTdHJpbmcmIG9sZFYKICAgICAgICAgU3RvcmFnZUV2ZW50RGlzcGF0Y2hlcjo6ZGlz
cGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50cyhrZXksIG9sZFZhbHVlLCBuZXdWYWx1ZSwgbV9zZWN1
cml0eU9yaWdpbiwgc291cmNlRnJhbWUpOwogfQogCit2b2lkIFN0b3JhZ2VBcmVhSW1wbDo6c2Vz
c2lvbkNoYW5nZWQoYm9vbCBpc05ld1Nlc3Npb25QZXJzaXN0ZW50KQoreworICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CisKKyAgICB1bnNpZ25lZCBxdW90YSA9IG1fc3RvcmFnZU1hcC0+cXVv
dGEoKTsKKyAgICBtX3N0b3JhZ2VNYXAgPSBTdG9yYWdlTWFwOjpjcmVhdGUocXVvdGEpOworCisg
ICAgaWYgKGlzTmV3U2Vzc2lvblBlcnNpc3RlbnQgJiYgIW1fc3RvcmFnZUFyZWFTeW5jICYmIG1f
c3RvcmFnZVN5bmNNYW5hZ2VyKSB7CisgICAgICAgIG1fc3RvcmFnZUFyZWFTeW5jID0gU3RvcmFn
ZUFyZWFTeW5jOjpjcmVhdGUobV9zdG9yYWdlU3luY01hbmFnZXIuZ2V0KCksICp0aGlzLCBtX3Nl
Y3VyaXR5T3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGlmICghaXNOZXdTZXNzaW9uUGVyc2lzdGVudCAmJiBtX3N0b3JhZ2VBcmVhU3lu
YykgeworICAgICAgICBtX3N0b3JhZ2VBcmVhU3luYy0+c2NoZWR1bGVGaW5hbFN5bmMoKTsKKyAg
ICAgICAgbV9zdG9yYWdlQXJlYVN5bmMgPSBudWxscHRyOworICAgIH0KK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0
b3JhZ2VBcmVhSW1wbC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VBcmVh
SW1wbC5oCmluZGV4IDU4ZmNiYTAzNTAwNGJhNjNjYzg4OGE4ZGIyOTEwMDE5YmM4ZTdkOTEuLjdl
YmI4OTI2ODA5ZDhiMGJlZmZhYjEzZjQ5YWM2ZWNhYTRkNDc0ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmgKQEAgLTc0LDYgKzc0LDggQEAgcHVi
bGljOgogCiAgICAgdm9pZCBzeW5jKCk7CiAKKyAgICB2b2lkIHNlc3Npb25DaGFuZ2VkKGJvb2wg
aXNOZXdTZXNzaW9uUGVyc2lzdGVudCk7CisKIHByaXZhdGU6CiAgICAgU3RvcmFnZUFyZWFJbXBs
KFdlYkNvcmU6OlN0b3JhZ2VUeXBlLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEm
LCBSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZVN5bmNNYW5hZ2VyPiYmLCB1bnNpZ25lZCBxdW90YSk7
CiAgICAgZXhwbGljaXQgU3RvcmFnZUFyZWFJbXBsKGNvbnN0IFN0b3JhZ2VBcmVhSW1wbCYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNwcAppbmRl
eCBjZTVjMjliYWE1ODA1Y2E0MmY0OGVmMDUwYjgzMmQwY2Q1Y2NlMTFjLi5lMTcyZmJkYzdiNDQx
MTdhOGQ4MmQ4M2Y4YzM3YzAzMTU5NDNlNzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L1N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNwcApAQCAtMTA4LDYgKzEwOCwxMSBAQCB2b2lkIFN0
b3JhZ2VBcmVhU3luYzo6c2NoZWR1bGVGaW5hbFN5bmMoKQogICAgIG1fc3luY01hbmFnZXItPmRp
c3BhdGNoKFtwcm90ZWN0b3JdIHsKICAgICAgICAgcHJvdGVjdG9yLT5kZWxldGVFbXB0eURhdGFi
YXNlKCk7CiAgICAgfSk7CisKKyAgICAvLyBNYWtlIHN1cmUgU3RvcmFnZUFyZWFTeW5jIGlzIGRl
c3RydWN0ZWQgb24gbWFpbiB0aHJlYWQuCisgICAgbV9zeW5jTWFuYWdlci0+ZGlzcGF0Y2goW3By
b3RlY3Rvcl0geworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0b3IgPSBwcm90ZWN0
b3IuY29weVJlZigpXSB7IH0pOworICAgIH0pOwogfQogCiB2b2lkIFN0b3JhZ2VBcmVhU3luYzo6
c2NoZWR1bGVJdGVtRm9yU3luYyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlTmFtZXNw
YWNlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFj
ZUltcGwuY3BwCmluZGV4IDRhOTRhMWQ4NWNlY2ExZTNjNjNiYzcyYTg2YWIwNmFmMGUxODZkNWQu
LjczN2Y1YzA5NzIxZDJiYmRiYzg2NTc2MWM5ZDExOGM4MWRmNjEzNDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcApAQCAt
NDUsMTcgKzQ1LDEyIEBAIHN0YXRpYyBIYXNoTWFwPFN0cmluZywgU3RvcmFnZU5hbWVzcGFjZUlt
cGwqPiYgbG9jYWxTdG9yYWdlTmFtZXNwYWNlTWFwKCkKICAgICByZXR1cm4gbG9jYWxTdG9yYWdl
TmFtZXNwYWNlTWFwOwogfQogCi1SZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1l
c3BhY2VJbXBsOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSkK
K1JlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVNl
c3Npb25TdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkIHF1b3RhLCBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwo
U3RvcmFnZVR5cGU6OlNlc3Npb24sIFN0cmluZygpLCBxdW90YSkpOworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0b3JhZ2VUeXBlOjpTZXNzaW9uLCBTdHJp
bmcoKSwgcXVvdGEsIHNlc3Npb25JRCkpOwogfQogCi1SZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+
IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2UodW5zaWduZWQgcXVvdGEpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5h
bWVzcGFjZUltcGwoU3RvcmFnZVR5cGU6OkVwaGVtZXJhbExvY2FsLCBTdHJpbmcoKSwgcXVvdGEp
KTsKLX0KLQotUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6
Z2V0T3JDcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoY29uc3QgU3RyaW5nJiBkYXRhYmFzZVBh
dGgsIHVuc2lnbmVkIHF1b3RhKQorUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFt
ZXNwYWNlSW1wbDo6Z2V0T3JDcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoY29uc3QgU3RyaW5n
JiBkYXRhYmFzZVBhdGgsIHVuc2lnbmVkIHF1b3RhLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQp
CiB7CiAgICAgQVNTRVJUKCFkYXRhYmFzZVBhdGguaXNOdWxsKCkpOwogCkBAIC02MywxOCArNTgs
MTkgQEAgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Z2V0
T3JDcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UKICAgICBpZiAoc2xvdCkKICAgICAgICAgcmV0
dXJuICpzbG90OwogCi0gICAgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBzdG9yYWdlTmFtZXNw
YWNlID0gYWRvcHRSZWYoKm5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChTdG9yYWdlVHlwZTo6TG9j
YWwsIGRhdGFiYXNlUGF0aCwgcXVvdGEpKTsKKyAgICBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+
IHN0b3JhZ2VOYW1lc3BhY2UgPSBhZG9wdFJlZigqbmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0
b3JhZ2VUeXBlOjpMb2NhbCwgZGF0YWJhc2VQYXRoLCBxdW90YSwgc2Vzc2lvbklEKSk7CiAgICAg
c2xvdCA9IHN0b3JhZ2VOYW1lc3BhY2UucHRyKCk7CiAKICAgICByZXR1cm4gc3RvcmFnZU5hbWVz
cGFjZTsKIH0KIAotU3RvcmFnZU5hbWVzcGFjZUltcGw6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0
b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlLCBjb25zdCBTdHJpbmcmIHBhdGgsIHVuc2lnbmVkIHF1b3Rh
KQorU3RvcmFnZU5hbWVzcGFjZUltcGw6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0b3JhZ2VUeXBl
IHN0b3JhZ2VUeXBlLCBjb25zdCBTdHJpbmcmIHBhdGgsIHVuc2lnbmVkIHF1b3RhLCBQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQpCiAgICAgOiBtX3N0b3JhZ2VUeXBlKHN0b3JhZ2VUeXBlKQogICAg
ICwgbV9wYXRoKHBhdGguaXNvbGF0ZWRDb3B5KCkpCiAgICAgLCBtX3N5bmNNYW5hZ2VyKDApCiAg
ICAgLCBtX3F1b3RhKHF1b3RhKQogICAgICwgbV9pc1NodXRkb3duKGZhbHNlKQorICAgICwgbV9z
ZXNzaW9uSUQoc2Vzc2lvbklEKQogewogICAgIGlmIChpc1BlcnNpc3RlbnRMb2NhbFN0b3JhZ2Uo
bV9zdG9yYWdlVHlwZSkgJiYgIW1fcGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIG1fc3luY01hbmFn
ZXIgPSBTdG9yYWdlU3luY01hbmFnZXI6OmNyZWF0ZShtX3BhdGgpOwpAQCAtOTcsOSArOTMsOSBA
QCBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNvcHkoUGFnZSop
CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQoIW1faXNTaHV0ZG93
bik7Ci0gICAgQVNTRVJUKG1fc3RvcmFnZVR5cGUgPT0gU3RvcmFnZVR5cGU6OlNlc3Npb24gfHwg
bV9zdG9yYWdlVHlwZSA9PSBTdG9yYWdlVHlwZTo6RXBoZW1lcmFsTG9jYWwpOworICAgIEFTU0VS
VChtX3N0b3JhZ2VUeXBlID09IFN0b3JhZ2VUeXBlOjpTZXNzaW9uKTsKIAotICAgIGF1dG8gbmV3
TmFtZXNwYWNlID0gYWRvcHRSZWYoKm5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChtX3N0b3JhZ2VU
eXBlLCBtX3BhdGgsIG1fcXVvdGEpKTsKKyAgICBhdXRvIG5ld05hbWVzcGFjZSA9IGFkb3B0UmVm
KCpuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwobV9zdG9yYWdlVHlwZSwgbV9wYXRoLCBtX3F1b3Rh
LCBtX3Nlc3Npb25JRCkpOwogICAgIGZvciAoYXV0byYgaXRlciA6IG1fc3RvcmFnZUFyZWFNYXAp
CiAgICAgICAgIG5ld05hbWVzcGFjZS0+bV9zdG9yYWdlQXJlYU1hcC5zZXQoaXRlci5rZXksIGl0
ZXIudmFsdWUtPmNvcHkoKSk7CiAKQEAgLTEyNyw3ICsxMjMsNyBAQCB2b2lkIFN0b3JhZ2VOYW1l
c3BhY2VJbXBsOjpjbG9zZSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIElmIHdlJ3JlIG5v
dCBhIHBlcnNpc3RlbnQgc3RvcmFnZSwgd2Ugc2hvdWxkbid0IG5lZWQgdG8gZG8gYW55IHdvcmsg
aGVyZS4KLSAgICBpZiAobV9zdG9yYWdlVHlwZSA9PSBTdG9yYWdlVHlwZTo6U2Vzc2lvbiB8fCBt
X3N0b3JhZ2VUeXBlID09IFN0b3JhZ2VUeXBlOjpFcGhlbWVyYWxMb2NhbCkgeworICAgIGlmICht
X3N0b3JhZ2VUeXBlID09IFN0b3JhZ2VUeXBlOjpTZXNzaW9uKSB7CiAgICAgICAgIEFTU0VSVCgh
bV9zeW5jTWFuYWdlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xNzYsNCArMTcyLDEx
IEBAIHZvaWQgU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNsb3NlSWRsZUxvY2FsU3RvcmFnZURhdGFi
YXNlcygpCiAgICAgICAgIGl0LT52YWx1ZS0+Y2xvc2VEYXRhYmFzZUlmSWRsZSgpOwogfQogCit2
b2lkIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpzZXRTZXNzaW9uSURGb3JUZXN0aW5nKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCkKK3sKKyAgICBtX3Nlc3Npb25JRCA9IHNlc3Npb25JRDsKKyAgICBm
b3IgKGF1dG8gc3RvcmFnZUFyZWFNYXAgOiBtX3N0b3JhZ2VBcmVhTWFwLnZhbHVlcygpKQorICAg
ICAgICBzdG9yYWdlQXJlYU1hcC0+c2Vzc2lvbkNoYW5nZWQoIXNlc3Npb25JRC5pc0VwaGVtZXJh
bCgpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmggYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaAppbmRleCBjODhmMDYxZWY1ZTUw
YzliMTYzNWVjM2Y4ZDZiYTBlZDc3MDVjYWE3Li4xMjAzMjUyZDg0NjlkOGIzMGVhMDQwMDc1ZDk2
ZjcxNTdmZmVlY2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3Rv
cmFnZU5hbWVzcGFjZUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3Rv
cmFnZU5hbWVzcGFjZUltcGwuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
U2VjdXJpdHlPcmlnaW5EYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TdG9yYWdlQXJlYS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvU3RvcmFnZU5hbWVzcGFjZS5oPgorI2luY2x1ZGUgPHBhbC9TZXNz
aW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTM4LDkgKzM5LDggQEAgY2xh
c3MgU3RvcmFnZUFyZWFJbXBsOwogCiBjbGFzcyBTdG9yYWdlTmFtZXNwYWNlSW1wbCA6IHB1Ymxp
YyBXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFN0
b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25l
ZCBxdW90YSk7Ci0gICAgc3RhdGljIFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRlRXBo
ZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkIHF1b3RhKTsKLSAgICBzdGF0aWMg
UmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBnZXRPckNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFj
ZShjb25zdCBTdHJpbmcmIGRhdGFiYXNlUGF0aCwgdW5zaWduZWQgcXVvdGEpOworICAgIHN0YXRp
YyBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNl
KHVuc2lnbmVkIHF1b3RhLCBQQUw6OlNlc3Npb25JRCk7CisgICAgc3RhdGljIFJlZjxTdG9yYWdl
TmFtZXNwYWNlSW1wbD4gZ2V0T3JDcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoY29uc3QgU3Ry
aW5nJiBkYXRhYmFzZVBhdGgsIHVuc2lnbmVkIHF1b3RhLCBQQUw6OlNlc3Npb25JRCk7CiAgICAg
dmlydHVhbCB+U3RvcmFnZU5hbWVzcGFjZUltcGwoKTsKIAogICAgIHZvaWQgY2xvc2UoKTsKQEAg
LTU0LDggKzU0LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHN5bmMoKTsKICAgICB2b2lkIGNsb3Nl
SWRsZUxvY2FsU3RvcmFnZURhdGFiYXNlcygpOwogCisgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklEKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KKyAgICB2b2lkIHNl
dFNlc3Npb25JREZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQpIG92ZXJyaWRlOworCiBwcml2YXRl
OgotICAgIFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFdlYkNvcmU6OlN0b3JhZ2VUeXBlLCBjb25zdCBT
dHJpbmcmIHBhdGgsIHVuc2lnbmVkIHF1b3RhKTsKKyAgICBTdG9yYWdlTmFtZXNwYWNlSW1wbChX
ZWJDb3JlOjpTdG9yYWdlVHlwZSwgY29uc3QgU3RyaW5nJiBwYXRoLCB1bnNpZ25lZCBxdW90YSwg
UEFMOjpTZXNzaW9uSUQpOwogCiAgICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VBcmVhPiBzdG9yYWdl
QXJlYShjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmKSBvdmVycmlkZTsKICAgICBS
ZWY8U3RvcmFnZU5hbWVzcGFjZT4gY29weShXZWJDb3JlOjpQYWdlKiBuZXdQYWdlKSBvdmVycmlk
ZTsKQEAgLTczLDYgKzc2LDggQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX3F1b3RhOwogCiAg
ICAgYm9vbCBtX2lzU2h1dGRvd247CisKKyAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwIGIvU291cmNlL1dl
YktpdExlZ2FjeS9TdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKaW5kZXgg
ODM2MjA1N2ZmZDc0ZjZkMmRhMWFhNDdkNzc4MDA0OTFjOWRhMTFkYy4uZDA5NDY5MTI1ZmMyZjQ4
NjY1OGE3M2E2Yjk1MGIyNDM0YjA3MDc5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9TdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9TdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKQEAgLTI2
LDYgKzI2LDcgQEAKICNpbmNsdWRlICJXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaCIKIAog
I2luY2x1ZGUgIlN0b3JhZ2VOYW1lc3BhY2VJbXBsLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdl
Lmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwpAQCAtOTYsMjYgKzk3LDIxIEBAIHZvaWQgV2ViU3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyOjpzeW5jTG9jYWxTdG9yYWdlKCkKICAgICB9CiB9CiAKLVJlZjxTdG9yYWdlTmFtZXNwYWNl
PiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNw
YWNlKFBhZ2UmLCB1bnNpZ25lZCBxdW90YSkKK1JlZjxTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFBhZ2Um
IHBhZ2UsIHVuc2lnbmVkIHF1b3RhKQogewotICAgIHJldHVybiBTdG9yYWdlTmFtZXNwYWNlSW1w
bDo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UocXVvdGEpOworICAgIHJldHVybiBTdG9y
YWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UocXVvdGEsIHBh
Z2Uuc2Vzc2lvbklEKCkpOwogfQogCi1SZWY8U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoUGFn
ZSYsIHVuc2lnbmVkIHF1b3RhKQorUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1l
c3BhY2VQcm92aWRlcjo6Y3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkIHF1b3Rh
LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7Ci0gICAgcmV0dXJuIFN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UocXVvdGEpOworICAg
IHJldHVybiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Z2V0T3JDcmVhdGVMb2NhbFN0b3JhZ2VOYW1l
c3BhY2UobV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgsIHF1b3RhLCBzZXNzaW9uSUQpOwogfQog
Ci1SZWY8U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVh
dGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEpCi17Ci0gICAgcmV0dXJuIFN0
b3JhZ2VOYW1lc3BhY2VJbXBsOjpnZXRPckNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZShtX2xv
Y2FsU3RvcmFnZURhdGFiYXNlUGF0aCwgcXVvdGEpOwotfQotCi1SZWY8U3RvcmFnZU5hbWVzcGFj
ZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UoU2VjdXJpdHlPcmlnaW4mLCB1bnNpZ25lZCBxdW90YSkKK1JlZjxTdG9yYWdl
TmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVRyYW5zaWVudExv
Y2FsU3RvcmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkIHF1b3RhLCBQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7CiAgICAgLy8gRklYTUU6IEEgc21hcnRlciBpbXBsZW1l
bnRhdGlvbiB3b3VsZCBjcmVhdGUgYSBzcGVjaWFsIG5hbWVzcGFjZSB0eXBlIGluc3RlYWQgb2Yg
anVzdCBwaWdneS1iYWNraW5nIG9mZgogICAgIC8vIFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlIGhl
cmUuCi0gICAgcmV0dXJuIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVTZXNzaW9uU3RvcmFn
ZU5hbWVzcGFjZShxdW90YSk7CisgICAgcmV0dXJuIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVh
dGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShxdW90YSwgc2Vzc2lvbklEKTsKIH0KIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQ
cm92aWRlci5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3Bh
Y2VQcm92aWRlci5oCmluZGV4IGU1ODlmZWU3YTVjNmM5MWNmOTRiN2QyM2I0ODYxNDgxNzliOGNm
ZjYuLjZkYmM1YzkwOWJmYjc5ZTFhMzViMDhiNDg5NTM5YTBmM2Y3MGE3MWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVBy
b3ZpZGVyLmgKQEAgLTUwLDkgKzUwLDggQEAgcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJTdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXIoY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBh
dGgpOwogCiAgICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVNlc3Npb25T
dG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlBhZ2UmLCB1bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7
Ci0gICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUVwaGVtZXJhbExvY2Fs
U3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpQYWdlJiwgdW5zaWduZWQgcXVvdGEpIG92ZXJyaWRl
OwotICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVMb2NhbFN0b3JhZ2VO
YW1lc3BhY2UodW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOwotICAgIFJlZjxXZWJDb3JlOjpTdG9y
YWdlTmFtZXNwYWNlPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW4mLCB1bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7CisgICAgUmVmPFdl
YkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNp
Z25lZCBxdW90YSwgUEFMOjpTZXNzaW9uSUQpIG92ZXJyaWRlOworICAgIFJlZjxXZWJDb3JlOjpT
dG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW4mLCB1bnNpZ25lZCBxdW90YSwgUEFMOjpTZXNzaW9uSUQpIG92
ZXJyaWRlOwogCiAgICAgY29uc3QgU3RyaW5nIG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoOwog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5t
bSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCA0YWUy
M2U5MGE0NzEwYzM0MDQxMjA3N2RiOWEzMDM0ZGM2NTcyNGI4Li41ZTVhZjMxMWQ5ODc3OWY0OWVj
NDM5NzhjODkxZGZlNTVkMGI4ZTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJWaWV3Lm1tCkBAIC0yODkzLDYgKzI4OTMsNyBAQCAtICh2b2lkKV9wcmVmZXJlbmNlc0No
YW5nZWQ6KFdlYlByZWZlcmVuY2VzICopcHJlZmVyZW5jZXMKICAgICBzZXR0aW5ncy5zZXRMb2Nh
bFN0b3JhZ2VFbmFibGVkKFtwcmVmZXJlbmNlcyBsb2NhbFN0b3JhZ2VFbmFibGVkXSk7CiAKICAg
ICBfcHJpdmF0ZS0+cGFnZS0+ZW5hYmxlTGVnYWN5UHJpdmF0ZUJyb3dzaW5nKFtwcmVmZXJlbmNl
cyBwcml2YXRlQnJvd3NpbmdFbmFibGVkXSk7CisgICAgX3ByaXZhdGUtPmdyb3VwLT5zdG9yYWdl
TmFtZXNwYWNlUHJvdmlkZXIoKS5lbmFibGVMZWdhY3lQcml2YXRlQnJvd3NpbmdGb3JUZXN0aW5n
KFtwcmVmZXJlbmNlcyBwcml2YXRlQnJvd3NpbmdFbmFibGVkXSk7CiAgICAgc2V0dGluZ3Muc2V0
U2Fuc1NlcmlmRm9udEZhbWlseShbcHJlZmVyZW5jZXMgc2Fuc1NlcmlmRm9udEZhbWlseV0pOwog
ICAgIHNldHRpbmdzLnNldFNlcmlmRm9udEZhbWlseShbcHJlZmVyZW5jZXMgc2VyaWZGb250RmFt
aWx5XSk7CiAgICAgc2V0dGluZ3Muc2V0U3RhbmRhcmRGb250RmFtaWx5KFtwcmVmZXJlbmNlcyBz
dGFuZGFyZEZvbnRGYW1pbHldKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkNGM0ZDBmY2YxMWIzZjFhZWQ0MmY1OGQ4YTkz
MGY3M2VlNzlkNDM5Li5kZTdiMTFkZGY0YmM1MjMzN2YzNjdjM2YyMGNlMzU2NDg5MzdlMDI1IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTktMDgtMDIgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBh
cHBsZS5jb20+CisKKyAgICAgICAgU29tZSBpbXByb3ZlbWVudHMgb24gd2ViIHN0b3JhZ2UKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDM3MworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0v
aW9zLXNpbXVsYXRvci13azIvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS9t
YWMtd2syL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogc3RvcmFnZS9kb21zdG9yYWdlL2xv
Y2Fsc3RvcmFnZS9wcml2YXRlLWJyb3dzaW5nLWFmZmVjdHMtc3RvcmFnZS1leHBlY3RlZC50eHQ6
CisgICAgICAgICogc3RvcmFnZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFnZS9yZXNvdXJjZXMvcHJp
dmF0ZS1icm93c2luZy0xLmh0bWw6CisKIDIwMTktMDgtMDIgIENhcmxvcyBHYXJjaWEgQ2FtcG9z
ICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtTT1VQXSBXZWJTb2NrZXRzOiB1c2Ug
U09VUF9XRUJTT0NLRVRfQ0xPU0VfTk9fU1RBVFVTIHdoZW4gY2xvc2luZyB3aXRoIG5vIHN0YXR1
cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXNpbXVsYXRvci13azIvVGVz
dEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy1zaW11bGF0b3Itd2syL1Rl
c3RFeHBlY3RhdGlvbnMKaW5kZXggOWU4NjY2YWNlZjE2ODM4MjVkNzUzODYyMWMxYzlmODk0ZTBi
NTEzZi4uOTc0OTc3YTI1ZmNmMWZkOWU1NzdlMzNmODVmYTVhZmQwNGJhZmNhMiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXNpbXVsYXRvci13azIvVGVzdEV4cGVjdGF0aW9u
cworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yLXdrMi9UZXN0RXhwZWN0
YXRpb25zCkBAIC02Niw3ICs2Niw3IEBAIGh0dHAvd3B0L2NhY2hlLXN0b3JhZ2UvY2FjaGUtcHV0
LWtleXMuaHR0cHMuYW55Lndvcmtlci5odG1sIFsgU2xvdyBdCiBodHRwL3dwdC9jYWNoZS1zdG9y
YWdlL2EtY2FjaGUtb3Blbi5odHRwcy5odG1sIFsgU2xvdyBdCiBodHRwL3dwdC9jYWNoZS1zdG9y
YWdlL2NhY2hlLXF1b3RhLWFkZC5hbnkuaHRtbCBbIFNsb3cgXQogCi13ZWJraXQub3JnL2IvMTk2
Mzc2IFsgRGVidWcgXSBzdG9yYWdlL2RvbXN0b3JhZ2UvbG9jYWxzdG9yYWdlL3ByaXZhdGUtYnJv
d3NpbmctYWZmZWN0cy1zdG9yYWdlLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQord2Via2l0Lm9yZy9i
LzE5NjM3NiBbIERlYnVnIF0gc3RvcmFnZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFnZS9wcml2YXRl
LWJyb3dzaW5nLWFmZmVjdHMtc3RvcmFnZS5odG1sIFsgUGFzcyBdCiAKIHdlYmtpdC5vcmcvYi8x
OTY0MDMgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYWNhcHR1cmUtcmVjb3Jk
L01lZGlhUmVjb3JkZXItc3RvcC5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDMwN2VjYmVmYWRiN2Fm
OGI3NmY5MWE1ZTAwM2NmNWQ5ZDk4YTcxZmQuLjU0MGUwZGUxMThlZGY1NTlkMzE2NzZkZTcyOGUx
MTZlMjA1ZjkzNjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVz
dEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBl
Y3RhdGlvbnMKQEAgLTkyMiw3ICs5MjIsNyBAQCB3ZWJraXQub3JnL2IvMTk0ODI2IGh0dHAvdGVz
dHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9kby1ub3QtYmxvY2stdG9wLWxldmVsLW5hdgogCiB3
ZWJraXQub3JnL2IvMTk0OTE2IGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tdmlkZW8tZWxl
bWVudC5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzE5NjM3NiBzdG9yYWdl
L2RvbXN0b3JhZ2UvbG9jYWxzdG9yYWdlL3ByaXZhdGUtYnJvd3NpbmctYWZmZWN0cy1zdG9yYWdl
Lmh0bWwgWyBQYXNzIEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzE5NjM3NiBzdG9yYWdlL2RvbXN0
b3JhZ2UvbG9jYWxzdG9yYWdlL3ByaXZhdGUtYnJvd3NpbmctYWZmZWN0cy1zdG9yYWdlLmh0bWwg
WyBQYXNzIF0KIAogd2Via2l0Lm9yZy9iLzE5NjQwMCBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtVHJhY2stZ2V0U2V0dGluZ3MuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvZG9tc3RvcmFnZS9sb2NhbHN0b3JhZ2UvcHJpdmF0ZS1icm93
c2luZy1hZmZlY3RzLXN0b3JhZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9k
b21zdG9yYWdlL2xvY2Fsc3RvcmFnZS9wcml2YXRlLWJyb3dzaW5nLWFmZmVjdHMtc3RvcmFnZS1l
eHBlY3RlZC50eHQKaW5kZXggMmNhOTU1NzUwMjdmYWI4OWFiZWI0NjdiMzgwNWMyMDYwNWRmZmJk
MS4uZjk4NDBkZWI1MzBiZTFjMTU1YWQ4ZGVmNWE1OGM4MGZjNjYxZDAyNyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFnZS9wcml2YXRlLWJyb3dz
aW5nLWFmZmVjdHMtc3RvcmFnZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFnZS9wcml2YXRlLWJyb3dzaW5nLWFmZmVjdHMtc3RvcmFn
ZS1leHBlY3RlZC50eHQKQEAgLTgsNyArOCw3IEBAIEFMRVJUOiBsb2NhbFN0b3JhZ2UncyBsZW5n
dGggaXM6IDEKIEFMRVJUOiBUaGUgaXRlbSBpbiBuZXcgd2luZG93IHN0YXJ0cyBvdXQgYXM6IENo
YW5nZWRWYWx1ZQogQUxFUlQ6IFRoZSBpdGVtIGluIG5ldyB3aW5kb3cgaXMgbm93OiBOZXdXaW5k
b3dWYWx1ZQogQUxFUlQ6IEJhY2sgaW4gcGFyZW50IHdpbmRvdywgbG9jYWxTdG9yYWdlJ3MgbGVu
Z3RoIGlzOiAxCi1BTEVSVDogQmFjayBpbiBwYXJlbnQgd2luZG93LCB0ZXN0SXRlbSBpczogQ2hh
bmdlZFZhbHVlCitBTEVSVDogQmFjayBpbiBwYXJlbnQgd2luZG93LCB0ZXN0SXRlbSBpczogTmV3
V2luZG93VmFsdWUKIEFMRVJUOiBGaW5hbCB3aW5kb3csIGxvY2FsU3RvcmFnZSdzIGxlbmd0aCBp
czogMQogQUxFUlQ6IEZpbmFsIHdpbmRvdywgaXRlbSBpczogUGVyc2lzdGVudCBpdGVtIQogCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2RvbXN0b3JhZ2UvbG9jYWxzdG9yYWdlL3Jl
c291cmNlcy9wcml2YXRlLWJyb3dzaW5nLTEuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvZG9t
c3RvcmFnZS9sb2NhbHN0b3JhZ2UvcmVzb3VyY2VzL3ByaXZhdGUtYnJvd3NpbmctMS5odG1sCmlu
ZGV4IGU0MTAxZTM5MWMwNWNkNmI2YTk3MzA4ZDE2MjkxN2EyZDFhYzg5YzQuLjczMGQ0YjkxOWM2
N2E5NWZjMTkwZDUwMmRhYmZlMmJlMGRiYTI4ZjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvZG9tc3RvcmFnZS9sb2NhbHN0b3JhZ2UvcmVzb3VyY2VzL3ByaXZhdGUtYnJvd3Npbmct
MS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvZG9tc3RvcmFnZS9sb2NhbHN0b3JhZ2Uv
cmVzb3VyY2VzL3ByaXZhdGUtYnJvd3NpbmctMS5odG1sCkBAIC0yNCw2ICsyNCwxMiBAQCBmdW5j
dGlvbiBydW5UZXN0KCkKICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAicHJpdmF0ZS1i
cm93c2luZy0zLmh0bWwiOwogICAgIH0KIAorICAgIHRyeSB7CisgICAgICAgIGxvY2FsU3RvcmFn
ZS5jbGVhcigpOworICAgIH0gY2F0Y2goZSkgeworICAgICAgICBsb2coIkNhdWdodCBleGNlcHRp
b24gdHJ5aW5nIHRvIGNsZWFyIiArIGUpOworICAgIH0KKwogICAgIGxvZygiU3RhcnQgb2YgcHJp
dmF0ZSBicm93c2luZyB0ZXN0LCB0ZXN0SXRlbSBpczogIiArIGxvY2FsU3RvcmFnZS5nZXRJdGVt
KCJ0ZXN0SXRlbSIpKTsKICAgICBsb2coImxvY2FsU3RvcmFnZSdzIGxlbmd0aCBpczogIiArIGxv
Y2FsU3RvcmFnZS5sZW5ndGgpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375561</attachid>
            <date>2019-08-05 14:48:11 -0700</date>
            <delta_ts>2019-08-07 14:53:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200373-20190805144810.patch</filename>
            <type>text/plain</type>
            <size>227685</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4MTc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODM1MTI4OTFiOTA2NTE2
ZDI3ZWI5MjRlMTUzYWI2MzQ1M2Q0ZTc1OS4uYTVjZjkzNzIwZmIwNWMwYzg2ZDFhMTEyNDMyMWM2
OWVhNjk1MzEzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDE5LTA4LTA1ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIFNvbWUgaW1wcm92ZW1lbnRz
IG9uIHdlYiBzdG9yYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDAzNzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBSZW1vdmUgdHlwZSBFcGhlbWVyYWxMb2NhbFN0b3JhZ2UsIHdoaWNoIGlzIHVzZWQg
Zm9yIGxvY2FsU3RvcmFnZSBpbiBlcGhlbWVyYWwgc2Vzc2lvbnMsIGFuZCByZXBsYWNlIGl0IHdp
dGggCisgICAgICAgIExvY2FsU3RvcmFnZS4KKworICAgICAgICBBZGQgU2Vzc2lvbklEIHRvIFN0
b3JhZ2VOYW1lc3BhY2UgdG8gbWFrZSBTdG9yYWdlTmFtZXNwYWNlIHNlc3Npb24tc3BlY2lmaWMu
CisKKyAgICAgICAgVXBkYXRlIG9uZSBsYXlvdXQgdGVzdCB0byBjb3ZlciBjaGFuZ2VkIGJlaGF2
aW9yLgorCisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpFbXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlTG9jYWxTdG9yYWdlTmFt
ZXNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVy
OjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6RW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3Rv
cmFnZU5hbWVzcGFjZSk6IERlbGV0ZWQuCisKKyAgICAgICAgKiBwYWdlL0Nocm9tZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OmNyZWF0ZVdpbmRvdyBjb25zdCk6IGVwaGVtZXJhbCBs
b2NhbFN0b3JhZ2Ugb2YgZGlmZmVyZW50IHdpbmRvd3Mgd2lsbCBuYXR1cmFsbHkgY29ubmVjdCB0
byAKKyAgICAgICAgdGhlIHNhbWUgU3RvcmFnZUFyZWEgaW4gbmV0d29yayBwcm9jZXNzLiBObyBu
ZWVkIHRvIGNvcHkgZnJvbSBwYXJlbnQgd2luZG93IHRvIGNoaWxkLgorCisgICAgICAgICogcGFn
ZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpwcmV3YXJtTG9j
YWxTdG9yYWdlSWZOZWNlc3NhcnkpOiBzdG9yYWdlIHdpbGwgYmUgcHJld2FybWVkIHdoZW4gbG9j
YWxTdG9yYWdlIGlzIAorICAgICAgICBpbml0aWFsaXplZC4KKworICAgICAgICAqIHBhZ2UvUGFn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzZXRTZXNzaW9uSUQpOgorICAgICAgICAo
V2ViQ29yZTo6UGFnZTo6ZXBoZW1lcmFsTG9jYWxTdG9yYWdlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlBhZ2U6OnNldEVwaGVtZXJhbExvY2FsU3RvcmFnZSk6IERlbGV0ZWQuCisgICAg
ICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgICogcGFnZS9QYWdlR3JvdXAuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlBhZ2VHcm91cDo6aXNMZWdhY3lQcml2YXRlQnJvd3NpbmdFbmFibGVkRm9yVGVz
dGluZyk6CisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbi5oOgorICAgICAgICAoV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW46OmNhbkFjY2Vzc0xvY2FsU3RvcmFnZSBjb25zdCk6CisgICAgICAg
ICogc3RvcmFnZS9TdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2U6OnByZXdh
cm0pOiBEZWxldGVkLgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZS5oOgorICAgICAgICAqIHN0
b3JhZ2UvU3RvcmFnZUFyZWEuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VBcmVhOjpwcmV3
YXJtKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VBcmVhOjpzZWN1cml0eU9y
aWdpbik6IERlbGV0ZWQuCisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlLmg6Cisg
ICAgICAgICogc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpsb2NhbFN0b3JhZ2VBcmVhKToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6bG9jYWxTdG9yYWdlTmFt
ZXNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6dHJh
bnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VO
YW1lc3BhY2VQcm92aWRlcjo6ZW5hYmxlTGVnYWN5UHJpdmF0ZUJyb3dzaW5nRm9yVGVzdGluZyk6
CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaDoKKyAgICAgICAg
KiBzdG9yYWdlL1N0b3JhZ2VUeXBlLmg6CisgICAgICAgIChXZWJDb3JlOjppc0xvY2FsU3RvcmFn
ZSk6CisKIDIwMTktMDgtMDIgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IFN0b3JhZ2U6IGRpc2FibGUgcmVsYXRlZCBhZ2VudHMgd2hl
biB0aGUgdGFiIGlzIGNsb3NlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBlNjcyYThiY2VjOWYxMTdlNzBlYjZjZWUz
NDVkNzI1MTc5ODZlNjNlLi4xOWIxNzE3ZTM0NGY0MTk0MzhmZTYxMGQxYjcxNjIyMjc4MDFlOGVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3MyBAQAorMjAxOS0wOC0wNSAgU2lodWkgTGl1ICA8c2lo
dWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBTb21lIGltcHJvdmVtZW50cyBvbiB3ZWIgc3Rv
cmFnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAw
MzczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU29t
ZSBmbGF3cyBpbiBjdXJyZW50IHdlYiBzdG9yYWdlIGFyY2hpdGVjdHVyZSBoYXZlIGJlY29tZSBv
YnZpb3VzIGFmdGVyIHdlYiBzdG9yYWdlIGlzIG1vdmVkIGZyb20gVUkgcHJvY2VzcyB0bworICAg
ICAgICBuZXR3b3JrIHByb2Nlc3MgYW5kIFBTT04gaXMgZW5hYmxlZC4gRm9yIGV4YW1wbGUsIHNl
c3Npb25TdG9yYWdlTmFtZVNwYWNlIGZvciB3ZWIgcGFnZSBpcyBwcmVwYXJlZCBhbmQgZGVzdHJv
eWVkCisgICAgICAgIGluIHRoZSBuZXR3b3JrIHByb2Nlc3Mgd2hlbiB0aGUgcGFnZSBjb21lcyBh
bmQgZ29lcywgZXZlbiB0aG91Z2ggdGhlIHBhZ2UgbWF5IG5vdCB1c2Ugc2Vzc2lvblN0b3JhZ2Ug
YXQgYWxsLiBVSQorICAgICAgICBwcm9jZXNzIG5hdHVyYWxseSBrbm93cyBzdGF0ZSBvZiBhIHdl
YiBwYWdlLCBidXQgbmV0d29yayBwcm9jZXNzIGRvZXMgbm90LiBJZiB0aGUgd2ViIHBhZ2UgaXMg
bm90IHVzaW5nIHdlYgorICAgICAgICBzdG9yYWdlLCB0aGUgbWVzc2FnZXMgYWJvdXQgcGFnZSBz
dGF0ZSBzZW50IGZyb20gd2ViIHByb2Nlc3MgdG8gbmV0d29yayBwcm9jZXNzIGFyZSB3YXN0ZS4K
KworICAgICAgICBIZXJlIGFyZSBzb21lIGdlbmVyYWwgaWRlYXMgb2YgdGhpcyBwYXRjaDoKKyAg
ICAgICAgMS4gTmV0d29yayBwcm9jZXNzIG93bnMgdGhlIHdlYiBzdG9yYWdlLCBhbmQgd2ViIHBy
b2Nlc3Mga2VlcHMgYSBzbWFsbCBsb2NhbCBjb3B5IChiYXNlZCBvbiBzZXNzaW9uIGFuZCAKKyAg
ICAgICAgb3JpZ2lucyB0aGF0IGFyZSB2aXNpdGVkKS4gVGhlcmUgaXMgYSB2aXJ0dWFsIGNvbm5l
Y3Rpb24gZnJvbSB0aGUgbG9jYWwgY29weSBpbiB0aGUgd2ViIHByb2Nlc3MgdG8gdGhlIG9yaWdp
bmFsCisgICAgICAgIGNvcHkgaW4gdGhlIG5ldHdvcmsgcHJvY2Vzcy4gVGhlIGNvbm5lY3Rpb24g
aXMgY3JlYXRlZCBieSB3ZWIgcHJvY2VzcyB3aGVuIHNvbWUgcGFnZSBhc2tzIGZvciB3ZWIgc3Rv
cmFnZS4KKyAgICAgICAgMi4gSWYgY29ubmVjdGlvbiBpcyBsb3N0IGJlY2F1c2UgbmV0d29yayBw
cm9jZXNzIGlzIGdvbmUsIHN0b3JhZ2UgaW4gbWVtb3J5IHdpbGwgYmUgbG9zdC4gVGhlIGxvY2Fs
IGNvcHkgaW4gd2ViCisgICAgICAgIHByb2Nlc3NzIHdpbGwgYmUgZGlzY2FyZGVkLgorICAgICAg
ICAzLiAoU2Vzc2lvbklELCBTdG9yYWdlTmFtZXNwYWNlSUQsIFNlY3VyaXR5T3JpZ2luKSBpcyB1
c2VkIHRvIGlkZW50aWZ5IGEgc3RvcmFnZSBhcmVhLiBJZiBzZXNzaW9uIGlzIGNoYW5nZWQgaW4K
KyAgICAgICAgd2ViIHByb2Nlc3MgKGxpa2UgZW5hYmxpbmcgcHJpdmF0ZSBicm93c2luZyBpbiBs
YXlvdXQgdGVzdCBub3cpLCBhIHJlLWNvbm5lY3Rpb24gd2l0aCBkaWZmZXJlbnQgc2Vzc2lvbklE
IHdvdWxkIAorICAgICAgICBzdWZmaWNlIHRvIGxvYWQgYW5vdGhlciBjb3B5IG9mIHN0b3JhZ2Uu
CisgICAgICAgIDQuIGxvY2FsU3RvcmFnZSBpbiBlcGhlbWVyYWwgc2Vzc2lvbiBoYXMgdGhlIHNh
bWUgYmVoYXZpb3IgYXMgbG9jYWxTdG9yYWdlIGluc3RlYWQgb2Ygc2Vzc2lvblN0b3JhZ2UsIHdo
aWNoCisgICAgICAgIG1lYW5zIGRpZmZlcmVudCBwYWdlcyBpbiB0aGUgc2FtZSBlcGhlbWVyYWwg
c2Vzc2lvbiBzaGFyZSB0aGUgc2FtZSBsb2NhbFN0b3JhZ2UuCisKKyAgICAgICAgQWxzbywgdGhp
cyBwYXRjaCBpbnRyb2R1Y2VzIFN0b3JhZ2VNYW5hZ2VyU2V0IHRvIG5ldHdvcmsgcHJvY2Vzcy4g
SXQgaGFuZGxlcyB3ZWIgc3RvcmFnZSBzdHVmZiwgaW5jbHVkaW5nCisgICAgICAgIHJlY2Vpdmlu
ZyBzdG9yYWdlIG1lc3NhZ2VzIGZyb20gd2ViIHByb2Nlc3MsIG9uIG9uZSBiYWNrZ3JvdW5kIHRo
cmVhZC4gUHJldmlvdXNseSBlYWNoIHNlc3Npb24gaGFzIGl0cyBvd24KKyAgICAgICAgU3RvcmFn
ZU1hbmFnZXIgYW5kIGVhY2ggU3RvcmFnZU1hbmFnZXIgaGFzIGl0cyBvd24gV29ya1F1ZXVlLgor
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtaW5w
dXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlz
dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorCisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOiByZW1vdmUgbWVzc2FnZSBo
YW5kbGVycyB0aGF0IGFyZSBubyBsb25nZXIgbmVlZGVkLiBOZXR3b3JrCisgICAgICAgIHByb2Nl
c3Mgbm8gbG9uZ2VyIG5lZWRzIHRvIGtub3cgcGFnZSBzdGF0ZXMgZnJvbSB3ZWIgcHJvY2Vzcy4K
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZENsb3Nl
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OndlYlBh
Z2VXYXNBZGRlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjp3ZWJQYWdlV2FzUmVtb3ZlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp3ZWJQcm9jZXNzU2Vzc2lvbkNoYW5n
ZWQpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHA6IE5ldHdvcmtQcm9jZXNzIHVzZXMgU3RvcmFnZU1hbmFnZXJTZXQg
aW5zdGVhZCBvZiBTdG9yYWdlTWFuYWdlciBmcm9tIAorICAgICAgICBkaWZmZXJlbnQgc2Vzc2lv
bnMgdG8gZGVhbCB3aXRoIHdlYiBzdG9yYWdlLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6TmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6
fk5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmluaXRp
YWxpemVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpj
cmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzOjphZGRXZWJzaXRlRGF0YVN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3M6OmRlc3Ryb3lTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3M6Omhhc0xvY2FsU3RvcmFnZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
OjpmZXRjaFdlYnNpdGVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRl
bGV0ZVdlYnNpdGVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRlbGV0
ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
OjpkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjphY3R1YWxQcmVwYXJlVG9TdXNwZW5kKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlc3VtZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzOjpnZXRMb2NhbFN0b3JhZ2VPcmlnaW5EZXRhaWxzKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3M6OmNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NDbG9zZWQpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6d2ViUGFnZVdhc0FkZGVkKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OndlYlBhZ2VXYXNSZW1vdmVkKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OndlYlByb2Nlc3NXYXNEaXNjb25uZWN0
ZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6d2ViUHJvY2Vz
c1Nlc3Npb25DaGFuZ2VkKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5oOgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24u
Y3BwOiBTdG9yYWdlTWFuYWdlciBpcyBtb3ZlZCBvdXQgb2YgTmV0d29ya1Nlc3Npb24uIEl0IGlz
IG5vdyBtYW5hZ2VkIGJ5IAorICAgICAgICBTdG9yYWdlTWFuYWdlclNldC4KKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Nlc3Npb246Ok5ldHdvcmtTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Nlc3Npb246On5OZXR3b3JrU2Vzc2lvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Nlc3Npb24uaDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OnN0
b3JhZ2VNYW5hZ2VyKTogRGVsZXRlZC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDogY3JlYXRpb24gcGFyYW1ldGVycyBvZiBT
dG9yYWdlTWFuYWdlciBpcyBtb3ZlZCBvdXQgb2YKKyAgICAgICAgTmV0d29ya1Nlc3Npb25DcmVh
dGlvblBhcmFtZXRlcnMuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ3JlYXRpb25Q
YXJhbWV0ZXJzOjpwcml2YXRlU2Vzc2lvblBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuaDoK
KworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJh
c2VUcmFja2VyLmNwcDogTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyIGlzIGNyZWF0ZWQgb24g
dGhlCisgICAgICAgIGJhY2tncm91bmQgdGhyZWFkIG5vdywgc28gaXQgZG9lcyBub3QgaG9sZCBh
IGNvcHkgb2YgV29ya1F1ZXVlIHRvIGRvIHRoZSBmaWxlIG9wZXJhdGlvbi4KKyAgICAgICAgKFdl
YktpdDo6TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
S2l0OjpMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OkxvY2FsU3RvcmFnZURhdGFiYXNlVHJh
Y2tlcik6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6fkxv
Y2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvV2Vi
U3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
Z2VuZXJhdGVTdG9yYWdlQXJlYUlkZW50aWZpZXIpOiBlYWNoIFN0b3JhZ2VBcmVhIGhhcyBhbiBp
ZGVudGlmaWVyLiBTdG9yYWdlQXJlYU1hcCBpbiB3ZWIgcHJvY2VzcworICAgICAgICB1c2UgdGhp
cyBpZGVudGlmaWVyIHRvIGluZGljYXRlIHdoaWNoIFN0b3JhZ2VBcmVhIGl0IGlzIGNvbm5lY3Rp
bmcgdG8uCisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQXJlYTo6U3Rv
cmFnZUFyZWEpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUFyZWE6
On5TdG9yYWdlQXJlYSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdl
QXJlYTo6YWRkTGlzdGVuZXIpOiAgbG9hZCBsb2NhbFN0b3JhZ2VEYXRhYmFzZSBpbiBhZHZhbmNl
IGlmIHRoZXJlIGlzIHNvbWUgCisgICAgICAgIGNvbm5lY3Rpb24gdG8gdGhpcyBMb2NhbFN0b3Jh
Z2UgYXJlYS4KKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VBcmVhOjpy
ZW1vdmVMaXN0ZW5lcik6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdl
QXJlYTo6Y2xlYXIpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUFy
ZWE6Om9wZW5EYXRhYmFzZUFuZEltcG9ydEl0ZW1zSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUFyZWE6OmRpc3BhdGNoRXZlbnRzIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OkxvY2FsU3RvcmFnZU5hbWVzcGFj
ZTo6Z2V0T3JDcmVhdGVTdG9yYWdlQXJlYSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5h
Z2VyOjpTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZTo6Z2V0T3JDcmVhdGVTdG9yYWdlQXJlYSk6Cisg
ICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlTWFuYWdlcik6CisgICAgICAg
IChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjp+U3RvcmFnZU1hbmFnZXIpOgorICAgICAgICAoV2Vi
S2l0OjpTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UpOgorICAg
ICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6ZGVzdHJveVNlc3Npb25TdG9yYWdlTmFtZXNw
YWNlKTogdGhpcyBpcyBub3QgdXNlZCBub3cgYnV0IGtlZXAgaXQgZm9yIGZ1dHVyZSBpbXByb3Zl
bWVudAorICAgICAgICB0byByZW1vdmUgaW4tbWVtb3J5IHNlc3Npb25TdG9yYWdlIGluIG5ldHdv
cmsgcHJvY2VzcyBpZiB3ZSBrbm93IHNvbWUgd2ViIHBhZ2UgaXMgZ29uZSBmb3JldmVyLgorICAg
ICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6Y2xvbmVTZXNzaW9uU3RvcmFnZU5hbWVzcGFj
ZSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpnZXRTZXNzaW9uU3RvcmFnZU9y
aWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlU2Vzc2lvblN0
b3JhZ2VPcmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmRlbGV0ZVNl
c3Npb25TdG9yYWdlRW50cmllc0Zvck9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdl
TWFuYWdlcjo6Z2V0TG9jYWxTdG9yYWdlT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OlN0b3Jh
Z2VNYW5hZ2VyOjpnZXRMb2NhbFN0b3JhZ2VPcmlnaW5EZXRhaWxzKToKKyAgICAgICAgKFdlYktp
dDo6U3RvcmFnZU1hbmFnZXI6OmRlbGV0ZUxvY2FsU3RvcmFnZU9yaWdpbnNNb2RpZmllZFNpbmNl
KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmRlbGV0ZUxvY2FsU3RvcmFnZUVu
dHJpZXNGb3JPcmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmNyZWF0
ZUxvY2FsU3RvcmFnZUFyZWEpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6Y3Jl
YXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlQXJlYSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VN
YW5hZ2VyOjpjcmVhdGVTZXNzaW9uU3RvcmFnZUFyZWEpOgorICAgICAgICAoV2ViS2l0OjpTdG9y
YWdlTWFuYWdlcjo6Z2V0T3JDcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAg
IChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpjbGVhclN0b3JhZ2VOYW1lc3BhY2VzKToKKworICAg
ICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUFyZWE6OnNlY3VyaXR5T3JpZ2lu
IGNvbnN0KTogRGVsZXRlZC4gVGhlIGRlY2xhcmF0aW9ucyBvZiBTdG9yYWdlQXJlYSBhcmUgbW92
ZWQgdG8gCisgICAgICAgIFN0b3JhZ2VNYW5hZ2VyLmggYmVjYXVzZSBTdG9yYWdlQXJlYSBpcyB1
c2VkIGluIFN0b3JhZ2VNYW5hZ2VyU2V0LgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdl
cjo6U3RvcmFnZUFyZWE6OmlzRXBoZW1lcmFsIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQXJlYTo6
aGFzTGlzdGVuZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFu
YWdlcjo6U3RvcmFnZUFyZWE6OnNldEl0ZW1zKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
U3RvcmFnZU1hbmFnZXI6OkxvY2FsU3RvcmFnZU5hbWVzcGFjZTo6Y2xvbmVUbyk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpTZXNzaW9uU3RvcmFnZU5hbWVzcGFj
ZTo6YWxsb3dlZENvbm5lY3Rpb25zIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
U3RvcmFnZU1hbmFnZXI6OlNlc3Npb25TdG9yYWdlTmFtZXNwYWNlOjphZGRBbGxvd2VkQ29ubmVj
dGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpTZXNzaW9u
U3RvcmFnZU5hbWVzcGFjZTo6cmVtb3ZlQWxsb3dlZENvbm5lY3Rpb24pOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6YWRkQWxsb3dlZFNlc3Npb25TdG9yYWdlTmFt
ZXNwYWNlQ29ubmVjdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5h
Z2VyOjpyZW1vdmVBbGxvd2VkU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0aW9uKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OnByb2Nlc3NEaWRDbG9zZUNv
bm5lY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6ZGVs
ZXRlTG9jYWxTdG9yYWdlRW50cmllc0Zvck9yaWdpbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OlN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVMb2NhbFN0b3JhZ2VNYXApOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdl
TWFwKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmNyZWF0ZVNl
c3Npb25TdG9yYWdlTWFwKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFn
ZXI6OmRlc3Ryb3lTdG9yYWdlTWFwKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U3RvcmFn
ZU1hbmFnZXI6OnByZXdhcm0pOiBEZWxldGVkLiBBIExvY2FsU3RvcmFnZSBhcmVhIGltcG9ydHMg
ZnJvbSBkYXRhYmFzZSB3aGVuIGl0IGhhcyBhIGNvbm5lY3Rpb24sCisgICAgICAgIHNvIG5vIG5l
ZWQgdG8gaGF2ZSBwcmV3YXJtIGZ1bmN0aW9uLgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFu
YWdlcjo6Z2V0VmFsdWVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFn
ZXI6OnNldEl0ZW0pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6
c2V0SXRlbXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6cmVt
b3ZlSXRlbSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpjbGVh
cik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjp3YWl0VW50aWxU
YXNrc0ZpbmlzaGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6
OnN1c3BlbmQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6cmVz
dW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmZpbmRTdG9y
YWdlQXJlYSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvV2ViU3Rv
cmFnZS9TdG9yYWdlTWFuYWdlci5oOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6
U3RvcmFnZUFyZWE6OnNlY3VyaXR5T3JpZ2luIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6U3Rv
cmFnZU1hbmFnZXI6OlN0b3JhZ2VBcmVhOjppZGVudGlmaWVyKToKKyAgICAgICAgKFdlYktpdDo6
U3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VBcmVhOjpoYXNMaXN0ZW5lcik6CisgICAgICAgIChXZWJL
aXQ6OlN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQXJlYTo6aXNFcGhlbWVyYWwgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUFyZWE6OnNldFdvcmtRdWV1ZSk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5tZXNz
YWdlcy5pbjogUmVtb3ZlZC4gTW92ZWQgdG8gU3RvcmFnZU1hbmFnZXJTZXQubWVzc2FnZXMuaW4u
CisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0
LmNwcDogQWRkZWQuIEl0IG1hbmFnZXMgU3RvcmFnZU1hbmFnZXJzIGJ5IHNlc3Npb24uCisgICAg
ICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0
OjpTdG9yYWdlTWFuYWdlclNldDo6U3RvcmFnZU1hbmFnZXJTZXQpOgorICAgICAgICAoV2ViS2l0
OjpTdG9yYWdlTWFuYWdlclNldDo6flN0b3JhZ2VNYW5hZ2VyU2V0KToKKyAgICAgICAgKFdlYktp
dDo6U3RvcmFnZU1hbmFnZXJTZXQ6OmFkZCk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5h
Z2VyU2V0OjpyZW1vdmUpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlclNldDo6Y29u
dGFpbnMpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlclNldDo6YWRkQ29ubmVjdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpyZW1vdmVDb25uZWN0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXJTZXQ6OndhaXRVbnRpbFRhc2tzRmlu
aXNoZWQpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlclNldDo6c3VzcGVuZCk6Cisg
ICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpyZXN1bWUpOgorICAgICAgICAoV2Vi
S2l0OjpTdG9yYWdlTWFuYWdlclNldDo6Z2V0U2Vzc2lvblN0b3JhZ2VPcmlnaW5zKToKKyAgICAg
ICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXJTZXQ6OmRlbGV0ZVNlc3Npb25TdG9yYWdlKToKKyAg
ICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXJTZXQ6OmRlbGV0ZVNlc3Npb25TdG9yYWdlRm9y
T3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpnZXRMb2NhbFN0
b3JhZ2VPcmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXJTZXQ6OmRlbGV0
ZUxvY2FsU3RvcmFnZU1vZGlmaWVkU2luY2UpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFu
YWdlclNldDo6ZGVsZXRlTG9jYWxTdG9yYWdlRm9yT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6
OlN0b3JhZ2VNYW5hZ2VyU2V0OjpnZXRMb2NhbFN0b3JhZ2VPcmlnaW5EZXRhaWxzKToKKyAgICAg
ICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXJTZXQ6OmNvbm5lY3RUb0xvY2FsU3RvcmFnZUFyZWEp
OgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlclNldDo6Y29ubmVjdFRvVHJhbnNpZW50
TG9jYWxTdG9yYWdlQXJlYSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0Ojpj
b25uZWN0VG9TZXNzaW9uU3RvcmFnZUFyZWEpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFu
YWdlclNldDo6ZGlzY29ubmVjdEZyb21TdG9yYWdlQXJlYSk6CisgICAgICAgIChXZWJLaXQ6OlN0
b3JhZ2VNYW5hZ2VyU2V0OjpnZXRWYWx1ZXMpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFu
YWdlclNldDo6c2V0SXRlbSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0Ojpy
ZW1vdmVJdGVtKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXJTZXQ6OmNsZWFyKToK
KyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXJTZXQ6OmNsb25lU2Vzc2lvblN0b3JhZ2VO
YW1lc3BhY2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1h
bmFnZXJTZXQuaDogQWRkZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9T
dG9yYWdlTWFuYWdlclNldC5tZXNzYWdlcy5pbjogQWRkZWQuCisKKyAgICAgICAgKiBTaGFyZWQv
V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuY3BwOiBjcmVhdGlvbiBwYXJhbWV0ZXJzIG9mIFN0
b3JhZ2VNYW5hZ2VyIGFyZSBtb3ZlZCB0byAKKyAgICAgICAgV2Vic2l0ZURhdGFTdG9yZVBhcmFt
ZXRlcnMuCisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOjplbmNv
ZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczo6
ZGVjb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM6OnBy
aXZhdGVTZXNzaW9uUGFyYW1ldGVycyk6CisgICAgICAgICogU2hhcmVkL1dlYnNpdGVEYXRhU3Rv
cmVQYXJhbWV0ZXJzLmg6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6
OmVuc3VyZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEv
Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlOjpwYXJhbWV0ZXJzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6
OnBhcmFtZXRlcnMpOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5j
cHA6IHNlc3Npb24gY2hhbmdlIG9mIHdlYiBzdG9yYWdlIGlzIGRvbmUgdmlhIAorICAgICAgICBX
ZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgaW5zdGVhZCBvZiBXZWJQcm9jZXNzIG5vdy4KKyAg
ICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6OnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3M6OmNyZWF0ZVdlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
OjpyZW1vdmVXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZW5zdXJlTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6bmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uQ2xvc2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
czo6cmVnaXN0ZXJTdG9yYWdlQXJlYU1hcCk6IHdlYiBwcm9jZXNzIG9ubHkgaGF2ZSBvbmUgY29w
eSBvZiBTdG9yYWdlQXJlYSBmb3IgdGhlIHNhbWUgCisgICAgICAgIGlkZW50aWZpZXIuCisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnN0b3JhZ2VBcmVhTWFwIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzczo6ZW5hYmxlUHJpdmF0ZUJyb3dzaW5nRm9yVGVzdGluZyk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1wbDo6U3RvcmFnZUFyZWFJbXBsKToKKyAgICAgICAg
KFdlYktpdDo6U3RvcmFnZUFyZWFJbXBsOjpsZW5ndGgpOgorICAgICAgICAoV2ViS2l0OjpTdG9y
YWdlQXJlYUltcGw6OmtleSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1wbDo6aXRl
bSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1wbDo6c2V0SXRlbSk6CisgICAgICAg
IChXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1wbDo6cmVtb3ZlSXRlbSk6CisgICAgICAgIChXZWJLaXQ6
OlN0b3JhZ2VBcmVhSW1wbDo6Y2xlYXIpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYUlt
cGw6OmNvbnRhaW5zKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFJbXBsOjpzdG9yYWdl
VHlwZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1wbDo6aW5jcmVtZW50
QWNjZXNzQ291bnQpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYUltcGw6OmRlY3JlbWVu
dEFjY2Vzc0NvdW50KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFJbXBsOjpwcmV3YXJt
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFJbXBsOjpzZWN1cml0eU9y
aWdpbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0
b3JhZ2VBcmVhSW1wbC5oOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3Jh
Z2VBcmVhTWFwLmNwcDogaWRlbnRpZmllciBvZiBTdG9yYWdlQXJlYU1hcCBpcyB0aGUgc2FtZSBh
cyBpZGVudGlmaWVyIG9mIAorICAgICAgICBTdG9yYWdlQXJlYSBpdCBjb25uZWN0cyB0by4gSWYg
dGhlIGlkZW50aWZpZXIgaXMgMCwgaXQgbWVhbnMgdGhlIFN0b3JhZ2VBcmVhTWFwIGlzIGRpc2Nv
bm5lY3RlZC4gCisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwOjpTdG9yYWdlQXJlYU1h
cCk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwOjp+U3RvcmFnZUFyZWFNYXApOgor
ICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6c2V0SXRlbSk6CisgICAgICAgIChXZWJL
aXQ6OlN0b3JhZ2VBcmVhTWFwOjpyZW1vdmVJdGVtKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFn
ZUFyZWFNYXA6OmNsZWFyKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OnJlc2V0
VmFsdWVzKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OmxvYWRWYWx1ZXNJZk5l
ZWRlZCk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwOjpjbGVhckNhY2hlKToKKyAg
ICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OmFwcGx5Q2hhbmdlKToKKyAgICAgICAgKFdl
YktpdDo6U3RvcmFnZUFyZWFNYXA6OmRpc3BhdGNoU3RvcmFnZUV2ZW50KToKKyAgICAgICAgKFdl
YktpdDo6U3RvcmFnZUFyZWFNYXA6OmRpc3BhdGNoU2Vzc2lvblN0b3JhZ2VFdmVudCk6CisgICAg
ICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwOjpkaXNwYXRjaExvY2FsU3RvcmFnZUV2ZW50KToK
KyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OmNvbm5lY3QpOgorICAgICAgICAoV2Vi
S2l0OjpTdG9yYWdlQXJlYU1hcDo6ZGlzY29ubmVjdCk6CisgICAgICAgIChXZWJLaXQ6OmdlbmVy
YXRlU3RvcmFnZU1hcElEKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFN
YXA6OnByZXdhcm0pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6
ZGlkR2V0VmFsdWVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlN0b3JhZ2Uv
U3RvcmFnZUFyZWFNYXAuaDoKKyAgICAgICAgKCk6IERlbGV0ZWQuCisKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAubWVzc2FnZXMuaW46IHRoZXJlIGFyZSB0
d28gc3luY2hyb25vdXMgbWVzc2FnZXMsIG9uZSBmb3IgY29ubmVjdGlvbiBhbmQgCisgICAgICAg
IG9uZSBmb3IgZ2V0dGluZyB2YWx1ZXMuIFdlIG1heSBtZXJnZSB0aGVtIGludG8gb25lLgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVTZXNzaW9uU3RvcmFn
ZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVh
dGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNw
YWNlSW1wbDo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAg
KFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUltcGw6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsKToKKyAg
ICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUltcGw6OnN0b3JhZ2VBcmVhKToKKyAgICAg
ICAgKFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUltcGw6OmNvcHkpOgorICAgICAgICAoV2ViS2l0
OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6c2V0U2Vzc2lvbklERm9yVGVzdGluZyk6CisgICAgICAg
IChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9T
dG9yYWdlTmFtZXNwYWNlSW1wbC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9X
ZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlRXBoZW1lcmFsTG9jYWxT
dG9yYWdlTmFtZXNwYWNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlN0b3Jh
Z2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmg6CisKIDIwMTktMDgtMDIgIERldmluIFJv
dXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFRpbWVs
aW5lczogRGV2ZWxvcCA+IFN0YXJ0IFRpbWVsaW5lIFJlY29yZGluZyBkb2Vzbid0IHdvcmsgd2hl
biBmb2N1c2VkIG9uIGEgZGV0YWNoZWQgaW5zcGVjdG9yIHdpbmRvdwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxv
ZwppbmRleCA2NjA5MGUyZGE4ZDZmMWQ0ZTE4OGJlYjE3OTc1YTcxMzZjYTg3OTg0Li5iNDA2MTI2
OTNmMTliYzlkMzkwNzIxOGY4N2NkZjE0NWYwNTA5NTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDM4IEBACisyMDE5LTA4LTA1ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUu
Y29tPgorCisgICAgICAgIFNvbWUgaW1wcm92ZW1lbnRzIG9uIHdlYiBzdG9yYWdlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDAzNzMKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTb21lIGNsZWFuLXVwIGFu
ZCBhZGQgc3VwcG9ydCBmb3IgY2hhbmdpbmcgc2Vzc2lvbiBvZiB3ZWIgc3RvcmFnZSBpbiBsYXlv
dXQgdGVzdHMuCisKKyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1wbDo6c2Vzc2lvbkNoYW5nZWQpOgorICAgICAgICAq
IFN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmg6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVh
SW1wbDo6c2VjdXJpdHlPcmlnaW4gY29uc3QpOiByZW1vdmVkIGZvciBub3QgYmVpbmcgdXNlZC4K
KyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgICogU3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMu
aDogbWFrZSBzdXJlIFN0b3JhZ2VBcmVhU3luYyBpcyBkZXN0cnVjdGVkIG9uIHRoZSBtYWluIHRo
cmVhZCBhZnRlciBiZWluZyBkZXJlZi1lZCBpbiAKKyAgICAgICAgU3RvcmFnZUFyZWFJbXBsOjpz
ZXNzaW9uQ2hhbmdlZCBhbmQgZmluYWwgc3luYyBpcyBkb25lIG9uIHRoZSBiYWNrZ3JvdW5kIHRo
cmVhZC4KKworICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwOiByZW1v
dmUgRXBoZW1lcmFsTG9jYWwgdHlwZSwgYWRkIFNlc3Npb25JRCB0byBTdG9yYWdlTmFtZXNwYWNl
SW1wbCB0byBzdXBwb3J0CisgICAgICAgIHNlc3Npb24gY2hhbmdlLgorICAgICAgICAoV2ViS2l0
OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UpOgor
ICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Z2V0T3JDcmVhdGVMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6
U3RvcmFnZU5hbWVzcGFjZUltcGwpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNl
SW1wbDo6Y29weSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjbG9z
ZSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpzZXRTZXNzaW9uSURG
b3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0
ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZSk6IERlbGV0ZWQuCisKKyAgICAgICAgKiBT
dG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmg6CisgICAgICAgICogU3RvcmFnZS9XZWJTdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwOiBhZGQgc2Vzc2lvbklEIGluIHBhcmFtZXRlcnMuCisg
ICAgICAgIChXZWJLaXQ6OldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlU2Vzc2lv
blN0b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdl
TmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVy
OjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOiBEZWxldGVkLgorICAgICAg
ICAqIFN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmg6CisKIDIwMTktMDctMzEg
IEtlaXRoIFJvbGxpbiAgPGtyb2xsaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSBXZWJL
aXRMZWdhY3kgZm9yIFhDQnVpbGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBmNjdj
YTBhY2M0YTEzOWZmYzg2MDM0NTUxNzJiYTVmYWEyNzY0ZGQ5Li5mYTI0YjJlNDNiZDViZDNjMTMz
YzcyNTU2MTgwYjViZjU5YjcyOTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTMgQEAKKzIwMTktMDgtMDUgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+
CisKKyAgICAgICAgU29tZSBpbXByb3ZlbWVudHMgb24gd2ViIHN0b3JhZ2UKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDM3MworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1t
OgorICAgICAgICAoLVtXZWJWaWV3IF9wcmVmZXJlbmNlc0NoYW5nZWQ6XSk6IG5vdGlmeSBzdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXIgYWJvdXQgc2Vzc2lvbiBjaGFuZ2UuCisKIDIwMTktMDgtMDEg
IEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBN
b3ZlIEZvcm1EYXRhIHppcCBmaWxlIGdlbmVyYXRpb24gdG8gTmV0d29ya1Byb2Nlc3MgYW5kIGVu
YWJsZSBpdCBmb3IgYWxsIFdlYktpdCBjbGllbnRzIGZvciB1cGxvYWRpbmcgZGlyZWN0b3JpZXMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKaW5kZXggYzQ1MGMwODcwYzBkYjkw
MDJiOTA0YzdiNmNiY2U0Yzk2OTAyYzZkYy4uMjQ4NWM3M2M5YzFlZjRiNTE5NmEyMTAyM2Q0ZGNl
ZmYwYWNkNzU0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKQEAgLTM5
MCwxOCArMzkwLDE4IEBAIGNsYXNzIEVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyIGZpbmFs
IDogcHVibGljIFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciB7CiAgICAgICAgIGJvb2wgY29udGFp
bnMoY29uc3QgU3RyaW5nJikgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgU3RvcmFn
ZVR5cGUgc3RvcmFnZVR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBTdG9yYWdlVHlwZTo6TG9j
YWw7IH0KICAgICAgICAgc2l6ZV90IG1lbW9yeUJ5dGVzVXNlZEJ5Q2FjaGUoKSBmaW5hbCB7IHJl
dHVybiAwOyB9Ci0gICAgICAgIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmln
aW4oKSBjb25zdCBmaW5hbCB7IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTZWN1cml0eU9yaWdpbkRh
dGE+IG9yaWdpbjsgcmV0dXJuIG9yaWdpbi5nZXQoKTsgfQogICAgIH07CiAKICAgICBzdHJ1Y3Qg
RW1wdHlTdG9yYWdlTmFtZXNwYWNlIGZpbmFsIDogcHVibGljIFN0b3JhZ2VOYW1lc3BhY2Ugewog
ICAgICAgICBSZWY8U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhKGNvbnN0IFNlY3VyaXR5T3JpZ2lu
RGF0YSYpIGZpbmFsIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRW1wdHlTdG9yYWdlQXJlYSk7IH0K
ICAgICAgICAgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNvcHkoUGFnZSopIGZpbmFsIHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgRW1wdHlTdG9yYWdlTmFtZXNwYWNlKTsgfQorICAgICAgICBQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCB7IHJldHVybiBQQUw6OlNlc3Npb25JRDo6ZW1wdHlT
ZXNzaW9uSUQoKTsgfQorICAgICAgICB2b2lkIHNldFNlc3Npb25JREZvclRlc3RpbmcoUEFMOjpT
ZXNzaW9uSUQpIHsgfTsKICAgICB9OwogCiAgICAgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0
ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCkgZmluYWw7Ci0gICAgUmVm
PFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCkg
ZmluYWw7Ci0gICAgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUVwaGVtZXJhbExvY2FsU3Rv
cmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQpIGZpbmFsOwotICAgIFJlZjxTdG9yYWdlTmFt
ZXNwYWNlPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoU2VjdXJpdHlPcmln
aW4mLCB1bnNpZ25lZCkgZmluYWw7CisgICAgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUxv
Y2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCwgUEFMOjpTZXNzaW9uSUQpIGZpbmFsOworICAg
IFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2UoU2VjdXJpdHlPcmlnaW4mLCB1bnNpZ25lZCwgUEFMOjpTZXNzaW9uSUQpIGZpbmFsOwogfTsK
IAogY2xhc3MgRW1wdHlVc2VyQ29udGVudFByb3ZpZGVyIGZpbmFsIDogcHVibGljIFVzZXJDb250
ZW50UHJvdmlkZXIgewpAQCAtNTI1LDE3ICs1MjUsMTIgQEAgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+
IEVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVz
cGEKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBFbXB0eVN0b3JhZ2VOYW1lc3BhY2UpOwogfQog
Ci1SZWY8U3RvcmFnZU5hbWVzcGFjZT4gRW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNy
ZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCkKK1JlZjxTdG9yYWdlTmFtZXNwYWNl
PiBFbXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNw
YWNlKHVuc2lnbmVkLCBQQUw6OlNlc3Npb25JRCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBFbXB0eVN0b3JhZ2VOYW1lc3BhY2UpOwogfQogCi1SZWY8U3RvcmFnZU5hbWVzcGFjZT4gRW1w
dHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5h
bWVzcGFjZShQYWdlJiwgdW5zaWduZWQpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRW1w
dHlTdG9yYWdlTmFtZXNwYWNlKTsKLX0KLQotUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IEVtcHR5U3Rv
cmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2UoU2VjdXJpdHlPcmlnaW4mLCB1bnNpZ25lZCkKK1JlZjxTdG9yYWdlTmFtZXNwYWNlPiBFbXB0
eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFt
ZXNwYWNlKFNlY3VyaXR5T3JpZ2luJiwgdW5zaWduZWQsIFBBTDo6U2Vzc2lvbklEKQogewogICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IEVtcHR5U3RvcmFnZU5hbWVzcGFjZSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0Nocm9tZS5jcHAKaW5kZXggOTc1ODMyOWJhOTA5Y2Q5MTNjYWI0Njg1ZDcxYWU5ZGE0ZmMzNWNh
Ni4uNzNmZWUwN2Q5YTE1NDkyNWE1MWE2N2UyNGM1MzUxOWUxMzcyNjcwZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q2hyb21lLmNwcApAQCAtMTg5LDggKzE4OSw2IEBAIFBhZ2UqIENocm9tZTo6Y3JlYXRlV2luZG93
KEZyYW1lJiBmcmFtZSwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QKIAog
ICAgIGlmIChhdXRvKiBvbGRTZXNzaW9uU3RvcmFnZSA9IG1fcGFnZS5zZXNzaW9uU3RvcmFnZShm
YWxzZSkpCiAgICAgICAgIG5ld1BhZ2UtPnNldFNlc3Npb25TdG9yYWdlKG9sZFNlc3Npb25TdG9y
YWdlLT5jb3B5KG5ld1BhZ2UpKTsKLSAgICBpZiAoYXV0byogb2xkRXBoZW1lcmFsTG9jYWxTdG9y
YWdlID0gbV9wYWdlLmVwaGVtZXJhbExvY2FsU3RvcmFnZShmYWxzZSkpCi0gICAgICAgIG5ld1Bh
Z2UtPnNldEVwaGVtZXJhbExvY2FsU3RvcmFnZShvbGRFcGhlbWVyYWxMb2NhbFN0b3JhZ2UtPmNv
cHkobmV3UGFnZSkpOwogCiAgICAgcmV0dXJuIG5ld1BhZ2U7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdp
bmRvdy5jcHAKaW5kZXggOGJiZmY4YmJhOTRiZDAwMDA3ZTRlZGI4ODQ2NTg3ZDkyYmNkZTI3ZC4u
YjEzNjk0YWQ2YjUzMTQ5ODczYTkxYzcxMTk0YWRhZWQwN2UwNjBkMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RE9NV2luZG93LmNwcApAQCAtNDQyLDggKzQ0Miw3IEBAIHZvaWQgRE9NV2luZG93OjpwcmV3YXJt
TG9jYWxTdG9yYWdlSWZOZWNlc3NhcnkoKQogICAgIGlmICghbG9jYWxTdG9yYWdlKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBpZiAobG9jYWxTdG9yYWdlLT5wcmV3YXJtKCkpCi0gICAgICAgIHBh
Z2UtPm1haW5GcmFtZSgpLmRpZFByZXdhcm1Mb2NhbFN0b3JhZ2UoKTsKKyAgICBwYWdlLT5tYWlu
RnJhbWUoKS5kaWRQcmV3YXJtTG9jYWxTdG9yYWdlKCk7CiB9CiAKIERPTVdpbmRvdzo6fkRPTVdp
bmRvdygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCBlZGE3YzVmYTVkNjQ3OWJhNzEwOTAyMGI1Mjgz
MmNlMjYxYmNkN2U5Li45ZDJlOTQ3ZGE5NWQ2MzhhYzcyN2VhMTU3MzkzNmUwOTcwODU5YjNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTE1MTAsMTkgKzE1MTAsNiBAQCB2b2lkIFBhZ2U6OnNldFNl
c3Npb25TdG9yYWdlKFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiYmIG5ld1N0b3JhZ2UpCiAgICAg
bV9zZXNzaW9uU3RvcmFnZSA9IFdURk1vdmUobmV3U3RvcmFnZSk7CiB9CiAKLVN0b3JhZ2VOYW1l
c3BhY2UqIFBhZ2U6OmVwaGVtZXJhbExvY2FsU3RvcmFnZShib29sIG9wdGlvbmFsQ3JlYXRlKQot
ewotICAgIGlmICghbV9lcGhlbWVyYWxMb2NhbFN0b3JhZ2UgJiYgb3B0aW9uYWxDcmVhdGUpCi0g
ICAgICAgIG1fZXBoZW1lcmFsTG9jYWxTdG9yYWdlID0gbV9zdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXItPmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZSgqdGhpcywgbV9zZXR0aW5n
cy0+c2Vzc2lvblN0b3JhZ2VRdW90YSgpKTsKLQotICAgIHJldHVybiBtX2VwaGVtZXJhbExvY2Fs
U3RvcmFnZS5nZXQoKTsKLX0KLQotdm9pZCBQYWdlOjpzZXRFcGhlbWVyYWxMb2NhbFN0b3JhZ2Uo
UmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+JiYgbmV3U3RvcmFnZSkKLXsKLSAgICBtX2VwaGVtZXJh
bExvY2FsU3RvcmFnZSA9IFdURk1vdmUobmV3U3RvcmFnZSk7Ci19Ci0KIGJvb2wgUGFnZTo6aGFz
Q3VzdG9tSFRNTFRva2VuaXplclRpbWVEZWxheSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc2V0
dGluZ3MtPm1heFBhcnNlRHVyYXRpb24oKSAhPSAtMTsKQEAgLTI1MDcsNiArMjQ5NCw5IEBAIHZv
aWQgUGFnZTo6c2V0U2Vzc2lvbklEKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKICAgICAgICAg
bV9pZGJDb25uZWN0aW9uVG9TZXJ2ZXIgPSBudWxscHRyOwogI2VuZGlmCiAKKyAgICBpZiAoc2Vz
c2lvbklEICE9IG1fc2Vzc2lvbklEICYmIG1fc2Vzc2lvblN0b3JhZ2UpCisgICAgICAgIG1fc2Vz
c2lvblN0b3JhZ2UtPnNldFNlc3Npb25JREZvclRlc3Rpbmcoc2Vzc2lvbklEKTsKKwogICAgIGJv
b2wgcHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkID0gKHNlc3Npb25JRC5pc0VwaGVtZXJhbCgp
ICE9IG1fc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpOwogCiAgICAgbV9zZXNzaW9uSUQgPSBzZXNz
aW9uSUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4IGM0NDAyMzQ0M2M4NTZkYTIyYjBlNDE5ZjhmYzVmMjY1
MmY4NjJmZTcuLmExODQxMmEzMzc3ZTQxZGMwZDYxMzVlZjE0ZjliMTg5YzZlZGFkMTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5oCkBAIC01MDcsOSArNTA3LDYgQEAgcHVibGljOgogICAgIFN0b3JhZ2VOYW1lc3Bh
Y2UqIHNlc3Npb25TdG9yYWdlKGJvb2wgb3B0aW9uYWxDcmVhdGUgPSB0cnVlKTsKICAgICB2b2lk
IHNldFNlc3Npb25TdG9yYWdlKFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiYmKTsKIAotICAgIFN0
b3JhZ2VOYW1lc3BhY2UqIGVwaGVtZXJhbExvY2FsU3RvcmFnZShib29sIG9wdGlvbmFsQ3JlYXRl
ID0gdHJ1ZSk7Ci0gICAgdm9pZCBzZXRFcGhlbWVyYWxMb2NhbFN0b3JhZ2UoUmVmUHRyPFN0b3Jh
Z2VOYW1lc3BhY2U+JiYpOwotCiAgICAgYm9vbCBoYXNDdXN0b21IVE1MVG9rZW5pemVyVGltZURl
bGF5KCkgY29uc3Q7CiAgICAgZG91YmxlIGN1c3RvbUhUTUxUb2tlbml6ZXJUaW1lRGVsYXkoKSBj
b25zdDsKIApAQCAtODc3LDcgKzg3NCw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2NhblN0YXJ0
TWVkaWEgeyB0cnVlIH07CiAKICAgICBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gbV9zZXNzaW9u
U3RvcmFnZTsKLSAgICBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gbV9lcGhlbWVyYWxMb2NhbFN0
b3JhZ2U7CiAKICAgICBUaW1lclRocm90dGxpbmdTdGF0ZSBtX3RpbWVyVGhyb3R0bGluZ1N0YXRl
IHsgVGltZXJUaHJvdHRsaW5nU3RhdGU6OkRpc2FibGVkIH07CiAgICAgTW9ub3RvbmljVGltZSBt
X3RpbWVyVGhyb3R0bGluZ1N0YXRlTGFzdENoYW5nZWRUaW1lOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3Vw
LmgKaW5kZXggNmJhZjBhMWFiMTNjOWUyZjJlZjUyZjJjMWU0MDFmMzI1MGNmYjA5Zi4uZDQxZWM0
MzkwZWQyZTc5NDZmY2VhMjdkNzFjNTczYzk2MGQ4ZjQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlR3JvdXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91
cC5oCkBAIC01OSw2ICs1OSw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBlbmFibGVMZWdhY3lQcml2YXRlQnJvd3NpbmdGb3JUZXN0aW5nKGJvb2wpOworICAg
IGJvb2wgaXNMZWdhY3lQcml2YXRlQnJvd3NpbmdFbmFibGVkRm9yVGVzdGluZygpIHsgcmV0dXJu
IG1faXNMZWdhY3lQcml2YXRlQnJvd3NpbmdFbmFibGVkRm9yVGVzdGluZzsgfQogCiBwcml2YXRl
OgogICAgIFN0cmluZyBtX25hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
Y3VyaXR5T3JpZ2luLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgKaW5k
ZXggMzFiNmIzZDUyMzgwOWVhNzFkYTAzZGJiMGE4MDRkMjUyMTczMmQxNS4uYTY2YzhiOTQ2N2Jj
MDg3NjU2NzkzNmJhMmEyMTZlNDQyZmU0YTA1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9TZWN1cml0eU9yaWdpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlP
cmlnaW4uaApAQCAtMTQ3LDcgKzE0Nyw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgY2FuQWNjZXNz
RGF0YWJhc2UoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbikgY29uc3QgeyByZXR1cm4g
Y2FuQWNjZXNzU3RvcmFnZSgmdG9wT3JpZ2luKTsgfTsKICAgICBib29sIGNhbkFjY2Vzc1Nlc3Np
b25TdG9yYWdlKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4pIGNvbnN0IHsgcmV0dXJu
IGNhbkFjY2Vzc1N0b3JhZ2UoJnRvcE9yaWdpbiwgQWx3YXlzQWxsb3dGcm9tVGhpcmRQYXJ0eSk7
IH0KLSAgICBib29sIGNhbkFjY2Vzc0xvY2FsU3RvcmFnZShjb25zdCBTZWN1cml0eU9yaWdpbiog
dG9wT3JpZ2luKSBjb25zdCB7IHJldHVybiBjYW5BY2Nlc3NTdG9yYWdlKHRvcE9yaWdpbik7IH07
CisgICAgYm9vbCBjYW5BY2Nlc3NMb2NhbFN0b3JhZ2UoY29uc3QgU2VjdXJpdHlPcmlnaW4qIHRv
cE9yaWdpbikgY29uc3QgeyByZXR1cm4gY2FuQWNjZXNzU3RvcmFnZSh0b3BPcmlnaW4pOyB9CiAg
ICAgYm9vbCBjYW5BY2Nlc3NQbHVnaW5TdG9yYWdlKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0b3BP
cmlnaW4pIGNvbnN0IHsgcmV0dXJuIGNhbkFjY2Vzc1N0b3JhZ2UoJnRvcE9yaWdpbik7IH0KICAg
ICBib29sIGNhbkFjY2Vzc0FwcGxpY2F0aW9uQ2FjaGUoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRv
cE9yaWdpbikgY29uc3QgeyByZXR1cm4gY2FuQWNjZXNzU3RvcmFnZSgmdG9wT3JpZ2luKTsgfQog
ICAgIGJvb2wgY2FuQWNjZXNzQ29va2llcygpIGNvbnN0IHsgcmV0dXJuICFpc1VuaXF1ZSgpOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmNwcAppbmRleCA5MTk3YjYwZTdlNmExNTVjNDQ2OGQ1
Mjk0ZmFiMjUwYzg2Nzk4N2ZmLi40N2RiYjE3ZDlhZTZkMjY5YzE0NzAzYTFhNjJhNDkyZWU2NmRm
NDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5jcHAKQEAgLTk3LDExICs5Nyw2IEBAIEV4
Y2VwdGlvbk9yPHZvaWQ+IFN0b3JhZ2U6OnJlbW92ZUl0ZW0oY29uc3QgU3RyaW5nJiBrZXkpCiAg
ICAgcmV0dXJuIHsgfTsKIH0KIAotYm9vbCBTdG9yYWdlOjpwcmV3YXJtKCkKLXsKLSAgICByZXR1
cm4gbV9zdG9yYWdlQXJlYS0+cHJld2FybSgpOwotfQotCiBFeGNlcHRpb25Pcjx2b2lkPiBTdG9y
YWdlOjpjbGVhcigpCiB7CiAgICAgYXV0byogZnJhbWUgPSB0aGlzLT5mcmFtZSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL1N0b3JhZ2UuaAppbmRleCA1MjE1ZjQ3YzM3N2ZmNzU2NGRhYTFlNDZlZWY3OTQ0ZDMw
ODVmNjExLi4yMzEzZjM1ODMwZTcwY2Y2ZDlhM2M2ZmE1YTM1N2NhN2U4ODNjN2UwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL1N0b3JhZ2UuaApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIFN0b3JhZ2VBcmVhOwogCi1jbGFzcyBTdG9yYWdlIGZpbmFsIDogcHVibGljIFNj
cmlwdFdyYXBwYWJsZSwgcHVibGljIFJlZkNvdW50ZWQ8U3RvcmFnZT4sIHB1YmxpYyBET01XaW5k
b3dQcm9wZXJ0eSB7CitjbGFzcyBTdG9yYWdlIGZpbmFsIDogcHVibGljIFNjcmlwdFdyYXBwYWJs
ZSwgcHVibGljIFJlZkNvdW50ZWQ8U3RvcmFnZT4sIHB1YmxpYyBET01XaW5kb3dQcm9wZXJ0eSwg
cHVibGljIENhbk1ha2VXZWFrUHRyPFN0b3JhZ2U+IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NB
VEVEKFN0b3JhZ2UpOwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8U3RvcmFnZT4gY3JlYXRlKERP
TVdpbmRvdyYsIFJlZjxTdG9yYWdlQXJlYT4mJik7CkBAIC00Niw3ICs0Niw2IEBAIHB1YmxpYzoK
ICAgICBFeGNlcHRpb25Pcjx2b2lkPiByZW1vdmVJdGVtKGNvbnN0IFN0cmluZyYga2V5KTsKICAg
ICBFeGNlcHRpb25Pcjx2b2lkPiBjbGVhcigpOwogICAgIGJvb2wgY29udGFpbnMoY29uc3QgU3Ry
aW5nJiBrZXkpIGNvbnN0OwotICAgIGJvb2wgcHJld2FybSgpOwogCiAgICAgLy8gQmluZGluZ3Mg
c3VwcG9ydCBmdW5jdGlvbnMuCiAgICAgYm9vbCBpc1N1cHBvcnRlZFByb3BlcnR5TmFtZShjb25z
dCBTdHJpbmcmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3Rv
cmFnZUFyZWEuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWEuaAppbmRleCBm
MzljY2Q3ZTZkYWNkZmY1NmFlN2RmNjYwZGQ5N2I1ZmY1MjY0NmQ0Li41YTlmZmZmOWE2MjYwODc4
NTA3ZWQ5MWQ3MjUyZjY0ZmUxZmI0YjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL1N0b3JhZ2VBcmVhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJl
YS5oCkBAIC01OCw5ICs1OCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgaW5jcmVtZW50
QWNjZXNzQ291bnQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGVjcmVtZW50QWNjZXNzQ291bnQo
KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VEYXRhYmFzZUlmSWRsZSgpIHsgfQotICAgIHZp
cnR1YWwgYm9vbCBwcmV3YXJtKCkgeyByZXR1cm4gZmFsc2U7IH0KLQotICAgIHZpcnR1YWwgY29u
c3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbigpIGNvbnN0ID0gMDsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvU3RvcmFnZU5hbWVzcGFjZS5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFt
ZXNwYWNlLmgKaW5kZXggNTVjNjYyODJiOGJkNjhiYzA0NzgyZGY0N2NhZGVkMGMyMTI5NGI0OC4u
NzViOGIwNWFjMTA0YmFiMzhiNWEyNDM5YzM0YzY5MWIzNmQ3MGJhNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlLmgKQEAgLTI4LDYgKzI4LDEwIEBACiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCituYW1lc3Bh
Y2UgUEFMIHsKK2NsYXNzIFNlc3Npb25JRDsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBQYWdlOwpAQCAtMzksNiArNDMsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+U3RvcmFn
ZU5hbWVzcGFjZSgpID0gZGVmYXVsdDsKICAgICB2aXJ0dWFsIFJlZjxTdG9yYWdlQXJlYT4gc3Rv
cmFnZUFyZWEoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJikgPSAwOwogICAgIHZpcnR1YWwgUmVm
PFN0b3JhZ2VOYW1lc3BhY2U+IGNvcHkoUGFnZSogbmV3UGFnZSkgPSAwOworCisgICAgdmlydHVh
bCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHNldFNlc3Npb25JREZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQpID0gMDsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3Rv
cmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyLmNwcAppbmRleCA1OTM5YWZmZDNlYjJmOGVlZDQ2YmY2MmJhYjRi
MTVhZWI1ZTk1ZWRmLi4zYjk0MDQ0ZTEwOWM3YjIzODUxMDhjMjc0YjExYzA1MzQ1ZGE0NjZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXIuY3BwCkBAIC02NiwzNiArNjYsNDIgQEAgUmVmPFN0b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNw
YWNlUHJvdmlkZXI6OmxvY2FsU3RvcmFnZUFyZWEoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIC8v
IHNvIHRoZSBEb2N1bWVudCBoYWQgYmV0dGVyIHN0aWxsIGFjdHVhbGx5IGhhdmUgYSBQYWdlLgog
ICAgIEFTU0VSVChkb2N1bWVudC5wYWdlKCkpOwogCi0gICAgYm9vbCBlcGhlbWVyYWwgPSBkb2N1
bWVudC5wYWdlKCktPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCk7CiAgICAgYm9vbCB0cmFuc2llbnQg
PSAhZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKS5jYW5BY2Nlc3NMb2NhbFN0b3JhZ2UoJmRvY3Vt
ZW50LnRvcE9yaWdpbigpKTsKIAogICAgIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBzdG9yYWdl
TmFtZXNwYWNlOwogCiAgICAgaWYgKHRyYW5zaWVudCkKLSAgICAgICAgc3RvcmFnZU5hbWVzcGFj
ZSA9ICZ0cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoZG9jdW1lbnQudG9wT3JpZ2luKCkp
OwotICAgIGVsc2UgaWYgKGVwaGVtZXJhbCkKLSAgICAgICAgc3RvcmFnZU5hbWVzcGFjZSA9IGRv
Y3VtZW50LnBhZ2UoKS0+ZXBoZW1lcmFsTG9jYWxTdG9yYWdlKCk7CisgICAgICAgIHN0b3JhZ2VO
YW1lc3BhY2UgPSAmdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKGRvY3VtZW50LnRvcE9y
aWdpbigpLCBkb2N1bWVudC5wYWdlKCktPnNlc3Npb25JRCgpKTsKICAgICBlbHNlCi0gICAgICAg
IHN0b3JhZ2VOYW1lc3BhY2UgPSAmbG9jYWxTdG9yYWdlTmFtZXNwYWNlKCk7CisgICAgICAgIHN0
b3JhZ2VOYW1lc3BhY2UgPSAmbG9jYWxTdG9yYWdlTmFtZXNwYWNlKGRvY3VtZW50LnBhZ2UoKS0+
c2Vzc2lvbklEKCkpOwogCiAgICAgcmV0dXJuIHN0b3JhZ2VOYW1lc3BhY2UtPnN0b3JhZ2VBcmVh
KGRvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpKTsKIH0KIAotU3RvcmFnZU5hbWVzcGFj
ZSYgU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpsb2NhbFN0b3JhZ2VOYW1lc3BhY2UoKQorU3Rv
cmFnZU5hbWVzcGFjZSYgU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpsb2NhbFN0b3JhZ2VOYW1l
c3BhY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAgIGlmICghbV9sb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UpCi0gICAgICAgIG1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlID0gY3JlYXRlTG9j
YWxTdG9yYWdlTmFtZXNwYWNlKGxvY2FsU3RvcmFnZURhdGFiYXNlUXVvdGFJbkJ5dGVzKTsKKyAg
ICAgICAgbV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2UgPSBjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2UobG9jYWxTdG9yYWdlRGF0YWJhc2VRdW90YUluQnl0ZXMsIHNlc3Npb25JRCk7CiAKKyAgICBB
U1NFUlQobV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPnNlc3Npb25JRCgpID09IHNlc3Npb25JRCk7
CiAgICAgcmV0dXJuICptX2xvY2FsU3RvcmFnZU5hbWVzcGFjZTsKIH0KIAotU3RvcmFnZU5hbWVz
cGFjZSYgU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjp0cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1l
c3BhY2UoU2VjdXJpdHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2luKQorU3RvcmFnZU5hbWVzcGFjZSYg
U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjp0cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2Uo
U2VjdXJpdHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2luLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQp
CiB7Ci0gICAgYXV0byYgc2xvdCA9IG1fdHJhbnNpZW50TG9jYWxTdG9yYWdlTWFwLmFkZCgmc2Vj
dXJpdHlPcmlnaW4sIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICBhdXRvJiBzbG90ID0g
bV90cmFuc2llbnRMb2NhbFN0b3JhZ2VNYXAuYWRkKHNlY3VyaXR5T3JpZ2luLmRhdGEoKSwgbnVs
bHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAgIGlmICghc2xvdCkKLSAgICAgICAgc2xvdCA9IGNy
ZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShzZWN1cml0eU9yaWdpbiwgbG9jYWxT
dG9yYWdlRGF0YWJhc2VRdW90YUluQnl0ZXMpOworICAgICAgICBzbG90ID0gY3JlYXRlVHJhbnNp
ZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKHNlY3VyaXR5T3JpZ2luLCBsb2NhbFN0b3JhZ2VEYXRh
YmFzZVF1b3RhSW5CeXRlcywgc2Vzc2lvbklEKTsKIAorICAgIEFTU0VSVChzbG90LT5zZXNzaW9u
SUQoKSA9PSBzZXNzaW9uSUQpOwogICAgIHJldHVybiAqc2xvdDsKIH0KIAordm9pZCBTdG9yYWdl
TmFtZXNwYWNlUHJvdmlkZXI6OmVuYWJsZUxlZ2FjeVByaXZhdGVCcm93c2luZ0ZvclRlc3Rpbmco
Ym9vbCBlbmFibGVkKQoreworICAgIGF1dG8gbmV3U2Vzc2lvbklEID0gZW5hYmxlZCA/IFBBTDo6
U2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkgOiBQQUw6OlNlc3Npb25JRDo6ZGVm
YXVsdFNlc3Npb25JRCgpOworICAgIGlmIChtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZSAmJiBuZXdT
ZXNzaW9uSUQgIT0gbV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPnNlc3Npb25JRCgpKQorICAgICAg
ICBtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZS0+c2V0U2Vzc2lvbklERm9yVGVzdGluZyhuZXdTZXNz
aW9uSUQpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3Jh
Z2VOYW1lc3BhY2VQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFt
ZXNwYWNlUHJvdmlkZXIuaAppbmRleCBkZDdmOWE0NmJkODQ3OTI0OWM3NGQyYTRjMjI0NTI5NjRl
NjdhZWNkLi42MjI4ZTU5OGZiMzY5ODk0N2Q2ODViZGFjMWUyMjJiZTk5NTA4MjI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmgKQEAg
LTMxLDYgKzMxLDEwIEBACiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgogCituYW1lc3BhY2UgUEFMIHsKK2NsYXNzIFNlc3Npb25JRDsKK30KKwog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEb2N1bWVudDsKQEAgLTQ1LDI3ICs0OSwyOCBA
QCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+U3RvcmFnZU5hbWVzcGFjZVBy
b3ZpZGVyKCk7CiAKICAgICB2aXJ0dWFsIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVTZXNz
aW9uU3RvcmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQgcXVvdGEpID0gMDsKLSAgICB2aXJ0
dWFsIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1l
c3BhY2UoUGFnZSYsIHVuc2lnbmVkIHF1b3RhKSA9IDA7CiAKICAgICBSZWY8U3RvcmFnZUFyZWE+
IGxvY2FsU3RvcmFnZUFyZWEoRG9jdW1lbnQmKTsKIAogICAgIHZvaWQgYWRkUGFnZShQYWdlJik7
CiAgICAgdm9pZCByZW1vdmVQYWdlKFBhZ2UmKTsKIAorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
ZW5hYmxlTGVnYWN5UHJpdmF0ZUJyb3dzaW5nRm9yVGVzdGluZyhib29sIGVuYWJsZWQpOworCiBw
cm90ZWN0ZWQ6CiAgICAgU3RvcmFnZU5hbWVzcGFjZSogb3B0aW9uYWxMb2NhbFN0b3JhZ2VOYW1l
c3BhY2UoKSB7IHJldHVybiBtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZS5nZXQoKTsgfQogCiBwcml2
YXRlOgotICAgIFN0b3JhZ2VOYW1lc3BhY2UmIGxvY2FsU3RvcmFnZU5hbWVzcGFjZSgpOwotICAg
IFN0b3JhZ2VOYW1lc3BhY2UmIHRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShTZWN1cml0
eU9yaWdpbiYpOworICAgIFN0b3JhZ2VOYW1lc3BhY2UmIGxvY2FsU3RvcmFnZU5hbWVzcGFjZShQ
QUw6OlNlc3Npb25JRCk7CisgICAgU3RvcmFnZU5hbWVzcGFjZSYgdHJhbnNpZW50TG9jYWxTdG9y
YWdlTmFtZXNwYWNlKFNlY3VyaXR5T3JpZ2luJiwgUEFMOjpTZXNzaW9uSUQpOwogCi0gICAgdmly
dHVhbCBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVu
c2lnbmVkIHF1b3RhKSA9IDA7Ci0gICAgdmlydHVhbCBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gY3Jl
YXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFNlY3VyaXR5T3JpZ2luJiwgdW5zaWdu
ZWQgcXVvdGEpID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVM
b2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEsIFBBTDo6U2Vzc2lvbklEKSA9IDA7
CisgICAgdmlydHVhbCBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlVHJhbnNpZW50TG9jYWxT
dG9yYWdlTmFtZXNwYWNlKFNlY3VyaXR5T3JpZ2luJiwgdW5zaWduZWQgcXVvdGEsIFBBTDo6U2Vz
c2lvbklEKSA9IDA7CiAKICAgICBIYXNoU2V0PFBhZ2UqPiBtX3BhZ2VzOwogCiAgICAgUmVmUHRy
PFN0b3JhZ2VOYW1lc3BhY2U+IG1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlOwotICAgIEhhc2hNYXA8
UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+PiBtX3RyYW5z
aWVudExvY2FsU3RvcmFnZU1hcDsKKyAgICBIYXNoTWFwPFNlY3VyaXR5T3JpZ2luRGF0YSwgUmVm
UHRyPFN0b3JhZ2VOYW1lc3BhY2U+PiBtX3RyYW5zaWVudExvY2FsU3RvcmFnZU1hcDsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvU3RvcmFnZVR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZVR5cGUuaApp
bmRleCA1ODEzM2Y4OWNjYTcxZGMzNTBlZjcyODVhNzBhNzMwYTI5NjJhNmUyLi5mZTcwMDI1N2Jh
Y2I0OWFmZGRmZjQ1NjQyYTYzZDQyOGQ3NDBmODljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL1N0b3JhZ2VUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9y
YWdlVHlwZS5oCkBAIC0zMCwxMyArMzAsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogZW51bSBj
bGFzcyBTdG9yYWdlVHlwZSB7CiAgICAgU2Vzc2lvbiwKICAgICBMb2NhbCwKLSAgICBFcGhlbWVy
YWxMb2NhbCwKICAgICBUcmFuc2llbnRMb2NhbCwKIH07CiAKIGlubGluZSBib29sIGlzTG9jYWxT
dG9yYWdlKFN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlKQogewotICAgIHJldHVybiBzdG9yYWdlVHlw
ZSA9PSBTdG9yYWdlVHlwZTo6TG9jYWwgfHwgc3RvcmFnZVR5cGUgPT0gU3RvcmFnZVR5cGU6OlRy
YW5zaWVudExvY2FsIHx8IHN0b3JhZ2VUeXBlID09IFN0b3JhZ2VUeXBlOjpFcGhlbWVyYWxMb2Nh
bDsKKyAgICByZXR1cm4gc3RvcmFnZVR5cGUgPT0gU3RvcmFnZVR5cGU6OkxvY2FsIHx8IHN0b3Jh
Z2VUeXBlID09IFN0b3JhZ2VUeXBlOjpUcmFuc2llbnRMb2NhbDsKIH0KIAogaW5saW5lIGJvb2wg
aXNQZXJzaXN0ZW50TG9jYWxTdG9yYWdlKFN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQvQ01ha2VM
aXN0cy50eHQKaW5kZXggNmY3OWM4NjQ3YTYxMmRjMDRhMDJhYWM4MjNkNzQ5NTg0NGQ0YzkyMS4u
ZDg4YWE4M2IyYTU0ZmYyYTg0MmEyYTVmYzU0NmQ4NzE0ODU1MmFiOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMu
dHh0CkBAIC0xMTgsNyArMTE4LDcgQEAgc2V0KFdlYktpdF9NRVNTQUdFU19JTl9GSUxFUwogICAg
IE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3Nh
Z2VzLmluCiAgICAgTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KIAotICAgIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3Jh
Z2UvU3RvcmFnZU1hbmFnZXIubWVzc2FnZXMuaW4KKyAgICBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VNYW5hZ2VyU2V0Lm1lc3NhZ2VzLmluCiAKICAgICBOZXR3b3JrUHJvY2Vzcy9j
YWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdCBiL1NvdXJj
ZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCAwZmI4NDIzYjVj
Y2NmN2QyNjMzOTQyNWNkN2E3M2Y0YjJjMGQyZTg5Li5lZWVmMzAyYmM0ZDczMDcwODhjNDQ5YTI3
YzdhNDI3YTA0YjAxZWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2Vz
LWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1
dC54Y2ZpbGVsaXN0CkBAIC0yNiw2ICsyNiw3IEBAICQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5tZXNzYWdlcy5pbgogJChQ
Uk9KRUNUX0RJUikvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5l
Y3Rpb24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAkKFBST0pF
Q1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLm1lc3NhZ2Vz
LmluCiskKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5h
Z2VyU2V0Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9D
YWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9O
ZXR3b3JrUHJvY2Vzcy9tYWMvY29tLmFwcGxlLldlYktpdC5OZXR3b3JrUHJvY2Vzcy5zYi5pbgog
JChQUk9KRUNUX0RJUikvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIu
bWVzc2FnZXMuaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0
cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2Zp
bGVsaXN0CmluZGV4IGZlMGE2YzAwNDAyYzUzNTU0MDU0NTE0OTFkNGQ4ZGY3NDQ3M2M3OTMuLjM1
Y2RjNTJhMjBmNmQ3YjcyZjM1ZmZiODNmYmIyY2NlZDExODhhZDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dl
YktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtOTAsNiArOTAsOCBAQCAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9TdG9yYWdlQXJlYU1h
cE1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJLaXQyL1N0b3JhZ2VBcmVhTWFwTWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvU3RvcmFnZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3Bw
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9TdG9yYWdlTWFu
YWdlck1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJL
aXQyL1N0b3JhZ2VNYW5hZ2VyU2V0TWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvU3RvcmFnZU1hbmFnZXJTZXRNZXNzYWdlcy5o
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9UZXh0Q2hlY2tp
bmdDb250cm9sbGVyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9UZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHlNZXNz
YWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9Vc2Vy
TWVkaWFDYXB0dXJlTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJj
ZXMubWFrZQppbmRleCA1MzkzYzViZDdmMDk3OTQ1MDAyZjEwMzIyZWZjZTA1MzE2MzJjM2ZmLi45
ZGU3MDQyNjZhZmVlNTEzNmU2NWU4NDc4MWI1YTAyNTI1MTU3YWM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVk
U291cmNlcy5tYWtlCkBAIC0xMzYsNyArMTM2LDcgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAg
ICAgU2VydmljZVdvcmtlckZldGNoVGFzayBcCiAgICAgU21hcnRNYWduaWZpY2F0aW9uQ29udHJv
bGxlciBcCiAgICAgU3RvcmFnZUFyZWFNYXAgXAotICAgIFN0b3JhZ2VNYW5hZ2VyIFwKKyAgICBT
dG9yYWdlTWFuYWdlclNldCBcCiAgICAgVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5IFwKICAg
ICBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlciBcCiAgICAgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQ
cm94eSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDliMWI5Yjg2MDQzOGQ5YjZh
M2YxMjY4OTE0NjJiMzM2YmM1OWZjNGQuLmIyNmY2ZjBhZWE1NDMwZDEwODQyZDljMjQ3MDM3YmI3
ZjQwNDZkZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC00OSw3ICs0OSw2IEBA
CiAjaW5jbHVkZSAiUGluZ0xvYWQuaCIKICNpbmNsdWRlICJQcmVjb25uZWN0VGFzay5oIgogI2lu
Y2x1ZGUgIlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tNZXNzYWdlcy5oIgotI2luY2x1ZGUgIlN0b3Jh
Z2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVk
ZSAiV2ViRXJyb3JzLmgiCiAjaW5jbHVkZSAiV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50LmgiCkBA
IC0yOTksNyArMjk4LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlk
Q2xvc2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogICAgIC8vIHJvb3QgYWN0aXZpdHkg
dHJhY2tlcnMuCiAgICAgc3RvcEFsbE5ldHdvcmtBY3Rpdml0eVRyYWNraW5nKCk7CiAKLSAgICBt
X25ldHdvcmtQcm9jZXNzLT53ZWJQcm9jZXNzV2FzRGlzY29ubmVjdGVkKGNvbm5lY3Rpb24pOwor
ICAgIG1fbmV0d29ya1Byb2Nlc3MtPmNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NDbG9zZWQoY29ubmVj
dGlvbik7CiAKICAgICBtX25ldHdvcmtQcm9jZXNzLT5uZXR3b3JrQmxvYlJlZ2lzdHJ5KCkuY29u
bmVjdGlvblRvV2ViUHJvY2Vzc0RpZENsb3NlKCp0aGlzKTsKICAgICBtX25ldHdvcmtQcm9jZXNz
LT5yZW1vdmVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcygqdGhpcyk7CkBAIC04OTEsMTkg
Kzg5MCw0IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaFNX
U2VydmVyQ29ubmVjdGlvbihQQUw6OlNlc3Npb25JRCBzCiB9CiAjZW5kaWYKIAotdm9pZCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6d2ViUGFnZVdhc0FkZGVkKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciBvbGRQYWdlSUQpCi17Ci0gICAgbV9uZXR3b3JrUHJvY2Vzcy0+d2ViUGFnZVdhc0FkZGVkKG1f
Y29ubmVjdGlvbi5nZXQoKSwgc2Vzc2lvbklELCBwYWdlSUQsIG9sZFBhZ2VJRCk7Ci19Ci0KLXZv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OndlYlBhZ2VXYXNSZW1vdmVkKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQotewotICAgIG1fbmV0
d29ya1Byb2Nlc3MtPndlYlBhZ2VXYXNSZW1vdmVkKG1fY29ubmVjdGlvbi5nZXQoKSwgc2Vzc2lv
bklELCBwYWdlSUQpOwotfQotCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp3
ZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQoUEFMOjpTZXNzaW9uSUQgbmV3U2Vzc2lvbklELCBjb25z
dCBWZWN0b3I8UGFnZUlkZW50aWZpZXI+JiBwYWdlcykKLXsKLSAgICBtX25ldHdvcmtQcm9jZXNz
LT53ZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQobV9jb25uZWN0aW9uLmdldCgpLCBuZXdTZXNzaW9u
SUQsIHBhZ2VzKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmgKaW5kZXggZDdiMmYxYjYzYmM3YjA0ZmUwMzBlMDM2NWUyMTM2Zjc1YWI0OGNlNi4uNTYx
MmVmZDFhY2YyNjlhZTE5MmViOTQ4Y2U0Yjk2ZDVmODQ0Nzc4OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuaApAQCAtMTQyLDEwICsxNDIsNiBAQCBwdWJsaWM6CiAgICAgVmVjdG9yPFJlZlB0cjxX
ZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBmaWxlc0luQmxvYihjb25zdCBVUkwmKTsK
ICAgICBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+IHJlc29s
dmVCbG9iUmVmZXJlbmNlcyhjb25zdCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYpOwog
Ci0gICAgdm9pZCB3ZWJQYWdlV2FzQWRkZWQoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBvbGRQYWdlSUQpOwotICAgIHZvaWQg
d2ViUGFnZVdhc1JlbW92ZWQoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
KTsKLSAgICB2b2lkIHdlYlByb2Nlc3NTZXNzaW9uQ2hhbmdlZChQQUw6OlNlc3Npb25JRCBuZXdT
ZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4mIHBhZ2VzKTsK
LQogICAgIHZvaWQgcmVtb3ZlU29ja2V0Q2hhbm5lbCh1aW50NjRfdCBpZGVudGlmaWVyKTsKIAog
cHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4
IGZhMmMzMWE0MTNhZjYyMTk0OTNjZDRjZWEyYmM3YzRhZmE5MjA1OTAuLjc1ZTI0ZGRhOGUzODQ0
Y2U3OGU2MWQzMmM4OTkwNjk5NjNlYjY5MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5tZXNzYWdlcy5pbgpAQCAtODYsOCArODYsNCBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQogICAgIEVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbihQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQpIC0+IChXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIHNlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyKSBTeW5jaHJvbm91cwogI2VuZGlmCi0KLSAgICBXZWJQYWdl
V2FzQWRkZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciBwYWdlSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG9sZFBhZ2VJRCkKLSAgICBXZWJQYWdl
V2FzUmVtb3ZlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyIHBhZ2VJRCkKLSAgICBXZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQoUEFMOjpTZXNzaW9uSUQg
bmV3U2Vzc2lvbklELCBWZWN0b3I8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VzKQogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRl
eCBhY2Q5NTUxYzdkMGU0Y2NmYzk1Y2IwZGRmODdlNGY2OGMwZDY3N2RmLi4wMmRmOTQxMzQ1OWVm
MGRjODY0NTM1NzE2MDdmMTE2NTdlMGY2ZTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtNTMsOCArNTMsNyBAQAogI2luY2x1ZGUg
IlNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcy5oIgogI2luY2x1ZGUgIlN0YXRpc3RpY3NEYXRh
LmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFjY2Vzc1N0YXR1cy5oIgotI2luY2x1ZGUgIlN0b3JhZ2VN
YW5hZ2VyLmgiCi0jaW5jbHVkZSAiU3RvcmFnZU1hbmFnZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUg
IlN0b3JhZ2VNYW5hZ2VyU2V0LmgiCiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlci5oIgogI2lu
Y2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2xN
ZXNzYWdlcy5oIgpAQCAtMTMzLDYgKzEzMiw3IEBAIHN0YXRpYyB2b2lkIGNhbGxFeGl0U29vbihJ
UEM6OkNvbm5lY3Rpb24qKQogCiBOZXR3b3JrUHJvY2Vzczo6TmV0d29ya1Byb2Nlc3MoQXV4aWxp
YXJ5UHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgOiBt
X2Rvd25sb2FkTWFuYWdlcigqdGhpcykKKyAgICAsIG1fc3RvcmFnZU1hbmFnZXJTZXQoU3RvcmFn
ZU1hbmFnZXJTZXQ6OmNyZWF0ZSgpKQogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCiAg
ICAgLCBtX25ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyKCp0aGlzKQogI2VuZGlmCkBAIC0x
NzMsNiArMTczLDggQEAgTmV0d29ya1Byb2Nlc3M6On5OZXR3b3JrUHJvY2VzcygpCiAgICAgICAg
IGZvciAoYXV0byYgY2FsbGJhY2sgOiBjYWxsYmFja3MpCiAgICAgICAgICAgICBjYWxsYmFjayhT
dHJpbmcgeyB9KTsKICAgICB9CisKKyAgICBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT53YWl0VW50aWxU
YXNrc0ZpbmlzaGVkKCk7CiB9CiAKIEF1dGhlbnRpY2F0aW9uTWFuYWdlciYgTmV0d29ya1Byb2Nl
c3M6OmF1dGhlbnRpY2F0aW9uTWFuYWdlcigpCkBAIC0zMzYsNiArMzM4LDggQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzJiYKICNlbmRpZgogICAgIGluaXRpYWxpemVTdG9yYWdlUXVvdGEocGFyYW1l
dGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycyk7CiAKKyAgICBtX3N0b3JhZ2VNYW5hZ2Vy
U2V0LT5hZGQoc2Vzc2lvbklELCBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJz
LmxvY2FsU3RvcmFnZURpcmVjdG9yeSwgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1l
dGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOworCiAgICAgYXV0byog
ZGVmYXVsdFNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNl
c3Npb25JRCgpKTsKICAgICBhdXRvKiBkZWZhdWx0U3RvcmFnZVNlc3Npb24gPSBkZWZhdWx0U2Vz
c2lvbi0+bmV0d29ya1N0b3JhZ2VTZXNzaW9uKCk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBjb29r
aWUgOiBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLnBlbmRpbmdDb29raWVz
KQpAQCAtNDQ3LDYgKzQ1MSw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKGJvb2wgaXNTZXJ2aWNlV29ya2VyUHJvCiAgICAgVU5VU0VE
X1BBUkFNKGlzU2VydmljZVdvcmtlclByb2Nlc3MpOwogICAgIFVOVVNFRF9QQVJBTShyZWdpc3Ry
YWJsZURvbWFpbik7CiAjZW5kaWYKKworICAgIG1fc3RvcmFnZU1hbmFnZXJTZXQtPmFkZENvbm5l
Y3Rpb24obV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMubGFzdCgpLT5jb25uZWN0aW9uKCkpOwogfQog
CiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVhckNhY2hlZENyZWRlbnRpYWxzKCkKQEAgLTQ3NSw2
ICs0ODEsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjphZGRXZWJzaXRlRGF0YVN0b3JlKFdlYnNp
dGVEYXRhU3RvcmVQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycwogICAgICAgICBhZGRTZXJ2aWNlV29y
a2VyU2Vzc2lvbihwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5zZXNzaW9uSUQs
IHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSwgcGFyYW1ldGVy
cy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKICNl
bmRpZgogCisgICAgbV9zdG9yYWdlTWFuYWdlclNldC0+YWRkKHBhcmFtZXRlcnMubmV0d29ya1Nl
c3Npb25QYXJhbWV0ZXJzLnNlc3Npb25JRCwgcGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3Rv
cnksIHBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKKwog
ICAgIGluaXRpYWxpemVTdG9yYWdlUXVvdGEocGFyYW1ldGVycyk7CiAKICAgICBSZW1vdGVOZXR3
b3JraW5nQ29udGV4dDo6ZW5zdXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Npb24oKnRoaXMsIFdURk1v
dmUocGFyYW1ldGVycykpOwpAQCAtNjE2LDYgKzYyNCw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OmRlc3Ryb3lTZXNzaW9uKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQpCiAjZW5kaWYK
IAogICAgIG1fc3RvcmFnZVF1b3RhTWFuYWdlcnMucmVtb3ZlKHNlc3Npb25JRCk7CisKKyAgICBt
X3N0b3JhZ2VNYW5hZ2VyU2V0LT5yZW1vdmUoc2Vzc2lvbklEKTsKIH0KIAogI2lmIEVOQUJMRShS
RVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCkBAIC0xMDQ4LDE0ICsxMDU4LDEyIEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OmNsZWFyVXNlckludGVyYWN0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgY29uc3QgUmVnaXN0CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6Omhhc0xvY2FsU3RvcmFnZShQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4s
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0g
ICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAg
ICAgIHNlc3Npb24tPnN0b3JhZ2VNYW5hZ2VyKCkuZ2V0TG9jYWxTdG9yYWdlT3JpZ2lucyhbZG9t
YWluLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRv
JiYgb3JpZ2lucykgbXV0YWJsZSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6
OmFueU9mKG9yaWdpbnMsIFsmZG9tYWluXShhdXRvJiBvcmlnaW4pIHsKLSAgICAgICAgICAgICAg
ICByZXR1cm4gZG9tYWluLm1hdGNoZXMob3JpZ2luKTsKLSAgICAgICAgICAgIH0pKTsKLSAgICAg
ICAgfSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgbV9zdG9yYWdlTWFuYWdlclNldC0+
Z2V0TG9jYWxTdG9yYWdlT3JpZ2lucyhzZXNzaW9uSUQsIFtkb21haW4sIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1dG8mJiBvcmlnaW5zKSBtdXRhYmxl
IHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjphbnlPZihvcmlnaW5zLCBbJmRvbWFp
bl0oYXV0byYgb3JpZ2luKSB7CisgICAgICAgICAgICByZXR1cm4gZG9tYWluLm1hdGNoZXMob3Jp
Z2luKTsKKyAgICAgICAgfSkpOworICAgIH0pOworCiAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFs
c2UpOwogfQogCkBAIC0xMzMwLDE2ICsxMzM4LDE0IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmZl
dGNoV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0
CiAgICAgICAgIH0pOwogICAgIH0KIAotICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lv
bihzZXNzaW9uSUQpOwotICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVE
YXRhVHlwZTo6U2Vzc2lvblN0b3JhZ2UpICYmIHNlc3Npb24pIHsKLSAgICAgICAgc2Vzc2lvbi0+
c3RvcmFnZU1hbmFnZXIoKS5nZXRTZXNzaW9uU3RvcmFnZU9yaWdpbnMoW2NhbGxiYWNrQWdncmVn
YXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldKGF1dG8mJiBvcmlnaW5zKSB7Cisg
ICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpTZXNzaW9u
U3RvcmFnZSkgJiYgbV9zdG9yYWdlTWFuYWdlclNldC0+Y29udGFpbnMoc2Vzc2lvbklEKSkgewor
ICAgICAgICBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5nZXRTZXNzaW9uU3RvcmFnZU9yaWdpbnMoc2Vz
c2lvbklELCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYo
KV0oYXV0byYmIG9yaWdpbnMpIHsKICAgICAgICAgICAgIHdoaWxlICghb3JpZ2lucy5pc0VtcHR5
KCkpCiAgICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX3dlYnNpdGVEYXRhLmVu
dHJpZXMuYXBwZW5kKFdlYnNpdGVEYXRhOjpFbnRyeSB7IG9yaWdpbnMudGFrZUFueSgpLCBXZWJz
aXRlRGF0YVR5cGU6OlNlc3Npb25TdG9yYWdlLCAwIH0pOwogICAgICAgICB9KTsKICAgICB9Ci0K
LSAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkxvY2Fs
U3RvcmFnZSkgJiYgc2Vzc2lvbikgewotICAgICAgICBzZXNzaW9uLT5zdG9yYWdlTWFuYWdlcigp
LmdldExvY2FsU3RvcmFnZU9yaWdpbnMoW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdn
cmVnYXRvci5jb3B5UmVmKCldKGF1dG8mJiBvcmlnaW5zKSB7CisgICAgaWYgKHdlYnNpdGVEYXRh
VHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpMb2NhbFN0b3JhZ2UpICYmIG1fc3RvcmFn
ZU1hbmFnZXJTZXQtPmNvbnRhaW5zKHNlc3Npb25JRCkpIHsKKyAgICAgICAgbV9zdG9yYWdlTWFu
YWdlclNldC0+Z2V0TG9jYWxTdG9yYWdlT3JpZ2lucyhzZXNzaW9uSUQsIFtjYWxsYmFja0FnZ3Jl
Z2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXShhdXRvJiYgb3JpZ2lucykgewog
ICAgICAgICAgICAgd2hpbGUgKCFvcmlnaW5zLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBj
YWxsYmFja0FnZ3JlZ2F0b3ItPm1fd2Vic2l0ZURhdGEuZW50cmllcy5hcHBlbmQoV2Vic2l0ZURh
dGE6OkVudHJ5IHsgb3JpZ2lucy50YWtlQW55KCksIFdlYnNpdGVEYXRhVHlwZTo6TG9jYWxTdG9y
YWdlLCAwIH0pOwogICAgICAgICB9KTsKQEAgLTE0MTQsMTIgKzE0MjAsMTEgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBP
cHRpb25TZXQ8V2Vic2kKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRl
RGF0YVR5cGU6OkRPTUNhY2hlKSkKICAgICAgICAgQ2FjaGVTdG9yYWdlOjpFbmdpbmU6OmNsZWFy
QWxsQ2FjaGVzKCp0aGlzLCBzZXNzaW9uSUQsIFtjbGVhclRhc2tzSGFuZGxlciA9IGNsZWFyVGFz
a3NIYW5kbGVyLmNvcHlSZWYoKV0geyB9KTsKIAotICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3Jr
U2Vzc2lvbihzZXNzaW9uSUQpOwotICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdl
YnNpdGVEYXRhVHlwZTo6U2Vzc2lvblN0b3JhZ2UpICYmIHNlc3Npb24pCi0gICAgICAgIHNlc3Np
b24tPnN0b3JhZ2VNYW5hZ2VyKCkuZGVsZXRlU2Vzc2lvblN0b3JhZ2VPcmlnaW5zKFtjbGVhclRh
c2tzSGFuZGxlciA9IGNsZWFyVGFza3NIYW5kbGVyLmNvcHlSZWYoKV0geyB9KTsKKyAgICBpZiAo
d2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlNlc3Npb25TdG9yYWdl
KSAmJiBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5jb250YWlucyhzZXNzaW9uSUQpKQorICAgICAgICBt
X3N0b3JhZ2VNYW5hZ2VyU2V0LT5kZWxldGVTZXNzaW9uU3RvcmFnZShzZXNzaW9uSUQsIFtjbGVh
clRhc2tzSGFuZGxlciA9IGNsZWFyVGFza3NIYW5kbGVyLmNvcHlSZWYoKV0geyB9KTsKIAotICAg
IGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6TG9jYWxTdG9y
YWdlKSAmJiBzZXNzaW9uKQotICAgICAgICBzZXNzaW9uLT5zdG9yYWdlTWFuYWdlcigpLmRlbGV0
ZUxvY2FsU3RvcmFnZU9yaWdpbnNNb2RpZmllZFNpbmNlKG1vZGlmaWVkU2luY2UsIFtjbGVhclRh
c2tzSGFuZGxlciA9IGNsZWFyVGFza3NIYW5kbGVyLmNvcHlSZWYoKV0geyB9KTsKKyAgICBpZiAo
d2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkxvY2FsU3RvcmFnZSkg
JiYgbV9zdG9yYWdlTWFuYWdlclNldC0+Y29udGFpbnMoc2Vzc2lvbklEKSkKKyAgICAgICAgbV9z
dG9yYWdlTWFuYWdlclNldC0+ZGVsZXRlTG9jYWxTdG9yYWdlTW9kaWZpZWRTaW5jZShzZXNzaW9u
SUQsIG1vZGlmaWVkU2luY2UsIFtjbGVhclRhc2tzSGFuZGxlciA9IGNsZWFyVGFza3NIYW5kbGVy
LmNvcHlSZWYoKV0geyB9KTsKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogICAgIGlm
ICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0
YWJhc2VzKSAmJiAhc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCkBAIC0xNTE0LDEyICsxNTE5LDEx
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvCiAgICAgICAgICAgICBDYWNoZVN0b3JhZ2U6OkVu
Z2luZTo6Y2xlYXJDYWNoZXNGb3JPcmlnaW4oKnRoaXMsIHNlc3Npb25JRCwgU2VjdXJpdHlPcmln
aW5EYXRhIHsgb3JpZ2luRGF0YSB9LCBbY2xlYXJUYXNrc0hhbmRsZXIgPSBjbGVhclRhc2tzSGFu
ZGxlci5jb3B5UmVmKCldIHsgfSk7CiAgICAgfQogCi0gICAgYXV0byogc2Vzc2lvbiA9IG5ldHdv
cmtTZXNzaW9uKHNlc3Npb25JRCk7Ci0gICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMo
V2Vic2l0ZURhdGFUeXBlOjpTZXNzaW9uU3RvcmFnZSkgJiYgc2Vzc2lvbikKLSAgICAgICAgc2Vz
c2lvbi0+c3RvcmFnZU1hbmFnZXIoKS5kZWxldGVTZXNzaW9uU3RvcmFnZUVudHJpZXNGb3JPcmln
aW5zKG9yaWdpbkRhdGFzLCBbY2xlYXJUYXNrc0hhbmRsZXIgPSBjbGVhclRhc2tzSGFuZGxlci5j
b3B5UmVmKCldIHsgfSk7CisgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0
ZURhdGFUeXBlOjpTZXNzaW9uU3RvcmFnZSkgJiYgbV9zdG9yYWdlTWFuYWdlclNldC0+Y29udGFp
bnMoc2Vzc2lvbklEKSkKKyAgICAgICAgbV9zdG9yYWdlTWFuYWdlclNldC0+ZGVsZXRlU2Vzc2lv
blN0b3JhZ2VGb3JPcmlnaW5zKHNlc3Npb25JRCwgb3JpZ2luRGF0YXMsIFtjbGVhclRhc2tzSGFu
ZGxlciA9IGNsZWFyVGFza3NIYW5kbGVyLmNvcHlSZWYoKV0geyB9KTsKIAotICAgIGlmICh3ZWJz
aXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6TG9jYWxTdG9yYWdlKSAmJiBz
ZXNzaW9uKQotICAgICAgICBzZXNzaW9uLT5zdG9yYWdlTWFuYWdlcigpLmRlbGV0ZUxvY2FsU3Rv
cmFnZUVudHJpZXNGb3JPcmlnaW5zKG9yaWdpbkRhdGFzLCBbY2xlYXJUYXNrc0hhbmRsZXIgPSBj
bGVhclRhc2tzSGFuZGxlci5jb3B5UmVmKCldIHsgfSk7CisgICAgaWYgKHdlYnNpdGVEYXRhVHlw
ZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpMb2NhbFN0b3JhZ2UpICYmIG1fc3RvcmFnZU1h
bmFnZXJTZXQtPmNvbnRhaW5zKHNlc3Npb25JRCkpCisgICAgICAgIG1fc3RvcmFnZU1hbmFnZXJT
ZXQtPmRlbGV0ZUxvY2FsU3RvcmFnZUZvck9yaWdpbnMoc2Vzc2lvbklELCBvcmlnaW5EYXRhcywg
W2NsZWFyVGFza3NIYW5kbGVyID0gY2xlYXJUYXNrc0hhbmRsZXIuY29weVJlZigpXSB7IH0pOwog
CiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMu
Y29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpICYmICFzZXNzaW9u
SUQuaXNFcGhlbWVyYWwoKSkKQEAgLTE3MTYsMjAgKzE3MjAsMTggQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoUEFMOjpTZXNzaW9u
SUQgc2Vzc2kKICAgICAgICAgfSk7CiAgICAgfQogCi0gICAgYXV0byogc2Vzc2lvbiA9IG5ldHdv
cmtTZXNzaW9uKHNlc3Npb25JRCk7Ci0gICAgaWYgKHNlc3Npb24pIHsKLSAgICAgICAgYXV0byYg
c3RvcmFnZU1hbmFnZXIgPSBzZXNzaW9uLT5zdG9yYWdlTWFuYWdlcigpOworICAgIGlmIChtX3N0
b3JhZ2VNYW5hZ2VyU2V0LT5jb250YWlucyhzZXNzaW9uSUQpKSB7CiAgICAgICAgIGlmICh3ZWJz
aXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6U2Vzc2lvblN0b3JhZ2UpKSB7
Ci0gICAgICAgICAgICBzdG9yYWdlTWFuYWdlci5nZXRTZXNzaW9uU3RvcmFnZU9yaWdpbnMoW3N0
b3JhZ2VNYW5hZ2VyID0gbWFrZVJlZlB0cihzdG9yYWdlTWFuYWdlciksIGNhbGxiYWNrQWdncmVn
YXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCksIGRvbWFpbnNUb0RlbGV0ZUFsbEJ1
dENvb2tpZXNGb3JdKGF1dG8mJiBvcmlnaW5zKSB7CisgICAgICAgICAgICBtX3N0b3JhZ2VNYW5h
Z2VyU2V0LT5nZXRTZXNzaW9uU3RvcmFnZU9yaWdpbnMoc2Vzc2lvbklELCBbcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCB0aGlzLCBzZXNzaW9uSUQsIGNhbGxiYWNrQWdncmVnYXRvciA9
IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCksIGRvbWFpbnNUb0RlbGV0ZUFsbEJ1dENvb2tp
ZXNGb3JdKGF1dG8mJiBvcmlnaW5zKSB7CiAgICAgICAgICAgICAgICAgYXV0byBvcmlnaW5zVG9E
ZWxldGUgPSBmaWx0ZXJGb3JSZWdpc3RyYWJsZURvbWFpbnMob3JpZ2lucywgZG9tYWluc1RvRGVs
ZXRlQWxsQnV0Q29va2llc0ZvciwgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX2RvbWFpbnMpOwotICAg
ICAgICAgICAgICAgIHN0b3JhZ2VNYW5hZ2VyLT5kZWxldGVTZXNzaW9uU3RvcmFnZUVudHJpZXNG
b3JPcmlnaW5zKG9yaWdpbnNUb0RlbGV0ZSwgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNr
QWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CisgICAgICAgICAgICAgICAgbV9zdG9yYWdlTWFu
YWdlclNldC0+ZGVsZXRlU2Vzc2lvblN0b3JhZ2VGb3JPcmlnaW5zKHNlc3Npb25JRCwgb3JpZ2lu
c1RvRGVsZXRlLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlS
ZWYoKV0geyB9KTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKHdl
YnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpMb2NhbFN0b3JhZ2UpKSB7
Ci0gICAgICAgICAgICBzdG9yYWdlTWFuYWdlci5nZXRMb2NhbFN0b3JhZ2VPcmlnaW5zKFtzdG9y
YWdlTWFuYWdlciA9IG1ha2VSZWZQdHIoc3RvcmFnZU1hbmFnZXIpLCBjYWxsYmFja0FnZ3JlZ2F0
b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpLCBkb21haW5zVG9EZWxldGVBbGxCdXRD
b29raWVzRm9yXShhdXRvJiYgb3JpZ2lucykgeworICAgICAgICAgICAgbV9zdG9yYWdlTWFuYWdl
clNldC0+Z2V0TG9jYWxTdG9yYWdlT3JpZ2lucyhzZXNzaW9uSUQsIFtwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIHRoaXMsIHNlc3Npb25JRCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2Fs
bGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKSwgZG9tYWluc1RvRGVsZXRlQWxsQnV0Q29va2llc0Zv
cl0oYXV0byYmIG9yaWdpbnMpIHsKICAgICAgICAgICAgICAgICBhdXRvIG9yaWdpbnNUb0RlbGV0
ZSA9IGZpbHRlckZvclJlZ2lzdHJhYmxlRG9tYWlucyhvcmlnaW5zLCBkb21haW5zVG9EZWxldGVB
bGxCdXRDb29raWVzRm9yLCBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fZG9tYWlucyk7Ci0gICAgICAg
ICAgICAgICAgc3RvcmFnZU1hbmFnZXItPmRlbGV0ZUxvY2FsU3RvcmFnZUVudHJpZXNGb3JPcmln
aW5zKG9yaWdpbnNUb0RlbGV0ZSwgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVn
YXRvci5jb3B5UmVmKCldIHsgfSk7CisgICAgICAgICAgICAgICAgbV9zdG9yYWdlTWFuYWdlclNl
dC0+ZGVsZXRlTG9jYWxTdG9yYWdlRm9yT3JpZ2lucyhzZXNzaW9uSUQsIG9yaWdpbnNUb0RlbGV0
ZSwgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsg
fSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQogICAgIH0KQEAgLTIxMDEsOSArMjEwMyw3
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmFjdHVhbFByZXBhcmVUb1N1c3BlbmQoU2hvdWxkQWNr
bm93bGVkZ2VXaGVuUmVhZHlUb1N1c3BlbmQKICAgICB9CiAjZW5kaWYKIAotICAgIGZvckVhY2hO
ZXR3b3JrU2Vzc2lvbihbJmNhbGxiYWNrQWdncmVnYXRvcl0oYXV0byYgc2Vzc2lvbikgewotICAg
ICAgICBzZXNzaW9uLnN0b3JhZ2VNYW5hZ2VyKCkuc3VzcGVuZChbY2FsbGJhY2tBZ2dyZWdhdG9y
XSB7IH0pOwotICAgIH0pOworICAgIG1fc3RvcmFnZU1hbmFnZXJTZXQtPnN1c3BlbmQoW2NhbGxi
YWNrQWdncmVnYXRvcl0geyB9KTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJvY2Vzc1dp
bGxTdXNwZW5kSW1taW5lbnRseSgpCkBAIC0yMTc5LDkgKzIxNzksNyBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpyZXN1bWUoKQogICAgICAgICBzZXJ2ZXItPnJlc3VtZSgpOwogI2VuZGlmCiAKLSAg
ICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oW10oYXV0byYgc2Vzc2lvbikgewotICAgICAgICBzZXNz
aW9uLnN0b3JhZ2VNYW5hZ2VyKCkucmVzdW1lKCk7Ci0gICAgfSk7CisgICAgbV9zdG9yYWdlTWFu
YWdlclNldC0+cmVzdW1lKCk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnByZWZldGNoRE5T
KGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCkBAIC0yNjk0LDgwICsyNjkyLDIxIEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OnJlbW92ZUtlcHRBbGl2ZUxvYWQoTmV0d29ya1Jlc291cmNlTG9hZGVyJiBs
b2FkZXIpCiAgICAgICAgIHNlc3Npb24tPnJlbW92ZUtlcHRBbGl2ZUxvYWQobG9hZGVyKTsKIH0K
IAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6d2ViUGFnZVdhc0FkZGVkKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBQYWdlSWRlbnRpZmllciBwYWdl
SUQsIFBhZ2VJZGVudGlmaWVyIG9sZFBhZ2VJRCkKLXsKLSAgICBpZiAoIXBhZ2VJRCB8fCAhb2xk
UGFnZUlEKSB7Ci0gICAgICAgIExPR19FUlJPUigiQ2Fubm90IGFkZCBwYWdlIHdpdGggaW52YWxp
ZCBpZCIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgYXV0byogc2Vzc2lvbiA9IG5l
dHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7Ci0gICAgaWYgKCFzZXNzaW9uKSB7Ci0gICAgICAgIExP
R19FUlJPUigiQ2Fubm90IGFkZCBwYWdlIHRvIGFuIHVua25vd24gc2Vzc2lvbiIpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotICAgIGF1dG8mIHN0b3JhZ2VNYW5hZ2VyID0gc2Vzc2lvbi0+c3Rv
cmFnZU1hbmFnZXIoKTsKLQotICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9zZXNzaW9uQnlDb25uZWN0
aW9uLmFkZChjb25uZWN0aW9uLnVuaXF1ZUlEKCksIHNlc3Npb25JRCk7Ci0gICAgQVNTRVJUX1VO
VVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPT0gc2Vzc2lvbklEKTsK
LQotICAgIHN0b3JhZ2VNYW5hZ2VyLmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHBhZ2VJ
RC50b1VJbnQ2NCgpLCBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpOwotICAg
IHN0b3JhZ2VNYW5hZ2VyLmFkZEFsbG93ZWRTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZUNvbm5lY3Rp
b24ocGFnZUlELnRvVUludDY0KCksIGNvbm5lY3Rpb24pOwotICAgIGlmIChwYWdlSUQgIT0gb2xk
UGFnZUlEKQotICAgICAgICBzdG9yYWdlTWFuYWdlci5jbG9uZVNlc3Npb25TdG9yYWdlTmFtZXNw
YWNlKG9sZFBhZ2VJRC50b1VJbnQ2NCgpLCBwYWdlSUQudG9VSW50NjQoKSk7Ci19Ci0KLXZvaWQg
TmV0d29ya1Byb2Nlc3M6OndlYlBhZ2VXYXNSZW1vdmVkKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBQYWdlSWRlbnRpZmllciBwYWdlSUQpCi17
Ci0gICAgaWYgKCFwYWdlSUQpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJDYW5ub3QgcmVtb3ZlIHBh
Z2Ugd2l0aCBpbnZhbGlkIGlkIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBhdXRv
KiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKLSAgICAvLyBTZXNzaW9uIGNh
biBiZSBkZXN0cm95ZWQgYmVmb3JlIHBhZ2UgZ2V0cyByZW1vdmVkLgotICAgIGlmICghc2Vzc2lv
bikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byYgc3RvcmFnZU1hbmFnZXIgPSBzZXNzaW9u
LT5zdG9yYWdlTWFuYWdlcigpOwotICAgIHN0b3JhZ2VNYW5hZ2VyLnJlbW92ZUFsbG93ZWRTZXNz
aW9uU3RvcmFnZU5hbWVzcGFjZUNvbm5lY3Rpb24ocGFnZUlELnRvVUludDY0KCksIGNvbm5lY3Rp
b24pOwotICAgIHN0b3JhZ2VNYW5hZ2VyLmRlc3Ryb3lTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShw
YWdlSUQudG9VSW50NjQoKSk7Ci19Ci0KLXZvaWQgTmV0d29ya1Byb2Nlc3M6OndlYlByb2Nlc3NX
YXNEaXNjb25uZWN0ZWQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQotewotICAgIGF1dG8g
c2Vzc2lvbklEID0gbV9zZXNzaW9uQnlDb25uZWN0aW9uLnRha2UoY29ubmVjdGlvbi51bmlxdWVJ
RCgpKTsKLSAgICBpZiAoIXNlc3Npb25JRC5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkKLSAgICAg
ICAgc2Vzc2lvbi0+c3RvcmFnZU1hbmFnZXIoKS5wcm9jZXNzRGlkQ2xvc2VDb25uZWN0aW9uKGNv
bm5lY3Rpb24pOwotfQotCi12b2lkIE5ldHdvcmtQcm9jZXNzOjp3ZWJQcm9jZXNzU2Vzc2lvbkNo
YW5nZWQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBQQUw6OlNlc3Npb25JRCBuZXdTZXNz
aW9uSUQsIGNvbnN0IFZlY3RvcjxQYWdlSWRlbnRpZmllcj4mIHBhZ2VJRHMpCi17Ci0gICAgYXV0
byBjb25uZWN0aW9uSUQgPSBjb25uZWN0aW9uLnVuaXF1ZUlEKCk7Ci0gICAgQVNTRVJUKG1fc2Vz
c2lvbkJ5Q29ubmVjdGlvbi5jb250YWlucyhjb25uZWN0aW9uSUQpKTsKLSAgICBpZiAobV9zZXNz
aW9uQnlDb25uZWN0aW9uLmdldChjb25uZWN0aW9uSUQpID09IG5ld1Nlc3Npb25JRCkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgd2ViUHJvY2Vzc1dhc0Rpc2Nvbm5lY3RlZChjb25uZWN0aW9uKTsK
LSAgICBmb3IgKGF1dG8mIHBhZ2VJRCA6IHBhZ2VJRHMpCi0gICAgICAgIHdlYlBhZ2VXYXNBZGRl
ZChjb25uZWN0aW9uLCBuZXdTZXNzaW9uSUQsIHBhZ2VJRCwgcGFnZUlEKTsKLX0KLQogdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6Z2V0TG9jYWxTdG9yYWdlT3JpZ2luRGV0YWlscyhQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPExvY2FsU3RvcmFnZURh
dGFiYXNlVHJhY2tlcjo6T3JpZ2luRGV0YWlscz4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
Ci0gICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7Ci0gICAgaWYg
KCFzZXNzaW9uKSB7CisgICAgaWYgKCFtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5jb250YWlucyhzZXNz
aW9uSUQpKSB7CiAgICAgICAgIExPR19FUlJPUigiQ2Fubm90IGdldCBsb2NhbCBzdG9yYWdlIGlu
Zm9ybWF0aW9uIGZvciBhbiB1bmtub3duIHNlc3Npb24iKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIGF1dG8mIHN0b3JhZ2VNYW5hZ2VyID0gc2Vzc2lvbi0+c3RvcmFnZU1hbmFnZXIo
KTsKLSAgICBzdG9yYWdlTWFuYWdlci5nZXRMb2NhbFN0b3JhZ2VPcmlnaW5EZXRhaWxzKFtjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvJiYgZGV0YWls
cykgbXV0YWJsZSB7CisgICAgbV9zdG9yYWdlTWFuYWdlclNldC0+Z2V0TG9jYWxTdG9yYWdlT3Jp
Z2luRGV0YWlscyhzZXNzaW9uSUQsIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXShhdXRvJiYgZGV0YWlscykgbXV0YWJsZSB7CiAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKFdURk1vdmUoZGV0YWlscykpOwogICAgIH0pOwogfQogCit2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpjb25uZWN0aW9uVG9XZWJQcm9jZXNzQ2xvc2VkKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbikKK3sKKyAgICBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5yZW1vdmVDb25uZWN0aW9uKGNv
bm5lY3Rpb24pOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCA2MDUxMTJjNzc1OTRmN2FiZTUx
ZTA3YmY5N2U3N2Y1ZDhjYjNjMjkzLi5lNGY2NDI5NjYzN2FiYzFkY2U0NTRlYWI5YjQ2MTJlZTZh
ZTI4ZTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oCkBAIC05OCw2ICs5OCw3IEBAIGNsYXNzIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OwogY2xhc3MgTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50OwogY2xhc3MgTmV0d29ya1Byb3hpbWl0
eU1hbmFnZXI7CiBjbGFzcyBOZXR3b3JrUmVzb3VyY2VMb2FkZXI7CitjbGFzcyBTdG9yYWdlTWFu
YWdlclNldDsKIGNsYXNzIFdlYlNXU2VydmVyQ29ubmVjdGlvbjsKIGNsYXNzIFdlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbjsKIGVudW0gY2xhc3MgU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0
aWNzIDogYm9vbDsKQEAgLTI3MCwxMCArMjcxLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U2Vz
c2lvbklzQ29udHJvbGxlZEJ5QXV0b21hdGlvbihQQUw6OlNlc3Npb25JRCwgYm9vbCk7CiAgICAg
Ym9vbCBzZXNzaW9uSXNDb250cm9sbGVkQnlBdXRvbWF0aW9uKFBBTDo6U2Vzc2lvbklEKSBjb25z
dDsKIAotICAgIHZvaWQgd2ViUGFnZVdhc0FkZGVkKElQQzo6Q29ubmVjdGlvbiYsIFBBTDo6U2Vz
c2lvbklELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIp
OwotICAgIHZvaWQgd2ViUGFnZVdhc1JlbW92ZWQoSVBDOjpDb25uZWN0aW9uJiwgUEFMOjpTZXNz
aW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKLSAgICB2b2lkIHdlYlByb2Nlc3NXYXNE
aXNjb25uZWN0ZWQoSVBDOjpDb25uZWN0aW9uJik7Ci0gICAgdm9pZCB3ZWJQcm9jZXNzU2Vzc2lv
bkNoYW5nZWQoSVBDOjpDb25uZWN0aW9uJiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4mKTsKKyAgICB2b2lkIGNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3NDbG9zZWQoSVBDOjpDb25uZWN0aW9uJik7CiAgICAgdm9pZCBnZXRMb2NhbFN0b3JhZ2VPcmln
aW5EZXRhaWxzKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxM
b2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6Ok9yaWdpbkRldGFpbHM+JiYpPiYmKTsKIAogI2lm
IEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCkBAIC01MDIsNiArNTAwLDggQEAgcHJpdmF0ZToK
ICAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b24+IG1fZGVmYXVsdE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjsKICAgICBOZXR3b3JrQmxvYlJlZ2lz
dHJ5IG1fbmV0d29ya0Jsb2JSZWdpc3RyeTsKIAorICAgIFJlZlB0cjxTdG9yYWdlTWFuYWdlclNl
dD4gbV9zdG9yYWdlTWFuYWdlclNldDsKKwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQg
cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3NDb2NvYShjb25zdCBOZXR3b3JrUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycyYpOwogICAgIHZvaWQgc2V0U3RvcmFnZUFjY2Vzc0FQSUVuYWJs
ZWQoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Np
b24uY3BwCmluZGV4IDQ4OGI5Mjk4MGFlZDFhZGM2NGFiM2QzY2FmYzNmOGQ4ZmEyNzYyYmQuLjFh
MTM5NjI5MTZhOTkyNDA0MDA4YTJlZjIxYTQxOTNlNmMxNzY2ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCkBAIC0zMyw3ICszMyw2IEBA
CiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJO
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJQaW5nTG9hZC5oIgotI2luY2x1ZGUg
IlN0b3JhZ2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAi
V2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKQEAg
LTg1LDcgKzg0LDYgQEAgTmV0d29ya1Nlc3Npb246Ok5ldHdvcmtTZXNzaW9uKE5ldHdvcmtQcm9j
ZXNzJiBuZXR3b3JrUHJvY2VzcywgY29uc3QgTmV0d29ya1Nlc3MKICAgICAsIG1fZW5hYmxlUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0xvZ1Rlc3RpbmdFdmVudChwYXJhbWV0ZXJzLmVuYWJsZVJlc291
cmNlTG9hZFN0YXRpc3RpY3NMb2dUZXN0aW5nRXZlbnQpCiAjZW5kaWYKICAgICAsIG1fYWRDbGlj
a0F0dHJpYnV0aW9uKG1ha2VVbmlxdWVSZWY8QWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlcj4ocGFy
YW1ldGVycy5zZXNzaW9uSUQpKQotICAgICwgbV9zdG9yYWdlTWFuYWdlcihTdG9yYWdlTWFuYWdl
cjo6Y3JlYXRlKFN0cmluZyhwYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeSkpKQogewog
ICAgIGlmICghbV9zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkgewogICAgICAgICBTdHJpbmcgbmV0
d29ya0NhY2hlRGlyZWN0b3J5ID0gcGFyYW1ldGVycy5uZXR3b3JrQ2FjaGVEaXJlY3Rvcnk7CkBA
IC05OSw3ICs5Nyw2IEBAIE5ldHdvcmtTZXNzaW9uOjpOZXR3b3JrU2Vzc2lvbihOZXR3b3JrUHJv
Y2VzcyYgbmV0d29ya1Byb2Nlc3MsIGNvbnN0IE5ldHdvcmtTZXNzCiAgICAgICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUihOZXR3b3JrQ2FjaGUsICJGYWlsZWQgdG8gaW5pdGlhbGl6ZSB0aGUgV2Vi
S2l0IG5ldHdvcmsgZGlzayBjYWNoZSIpOwogICAgIH0KIAotICAgIFNhbmRib3hFeHRlbnNpb246
OmNvbnN1bWVQZXJtYW5lbnRseShwYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVu
c2lvbkhhbmRsZSk7CiAgICAgbV9hZENsaWNrQXR0cmlidXRpb24tPnNldFBpbmdMb2FkRnVuY3Rp
b24oW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldKE5ldHdvcmtSZXNvdXJjZUxv
YWRQYXJhbWV0ZXJzJiYgbG9hZFBhcmFtZXRlcnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgewogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAg
ICAgICAgICAgcmV0dXJuOwpAQCAtMTEzLDkgKzExMCw2IEBAIE5ldHdvcmtTZXNzaW9uOjp+TmV0
d29ya1Nlc3Npb24oKQogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAg
ZGVzdHJveVJlc291cmNlTG9hZFN0YXRpc3RpY3MoKTsKICNlbmRpZgotCi0gICAgbV9zdG9yYWdl
TWFuYWdlci0+cmVzdW1lKCk7Ci0gICAgbV9zdG9yYWdlTWFuYWdlci0+d2FpdFVudGlsVGFza3NG
aW5pc2hlZCgpOwogfQogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAppbmRleCBjMmJm
NDNkMjRlMDkxZmY3NmQ5ZGI4YjcwYTE2YWUzZmExN2IyZDUwLi45NTUwY2U1ZDYzODk5YmQyODU5
OTQ3NTNlY2YzMzQ2YTUyYjQ3MDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU2Vzc2lvbi5oCkBAIC01MSw3ICs1MSw2IEBAIGNsYXNzIEFkQ2xpY2tBdHRyaWJ1
dGlvbk1hbmFnZXI7CiBjbGFzcyBOZXR3b3JrRGF0YVRhc2s7CiBjbGFzcyBOZXR3b3JrUHJvY2Vz
czsKIGNsYXNzIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjsKLWNsYXNzIFN0b3JhZ2VNYW5hZ2VyOwog
Y2xhc3MgTmV0d29ya1NvY2tldENoYW5uZWw7CiBjbGFzcyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU7CiBjbGFzcyBXZWJTb2NrZXRUYXNrOwpAQCAtODAsOCArNzksNiBAQCBwdWJsaWM6
CiAgICAgdm9pZCByZWdpc3Rlck5ldHdvcmtEYXRhVGFzayhOZXR3b3JrRGF0YVRhc2smIHRhc2sp
IHsgbV9kYXRhVGFza1NldC5hZGQoJnRhc2spOyB9CiAgICAgdm9pZCB1bnJlZ2lzdGVyTmV0d29y
a0RhdGFUYXNrKE5ldHdvcmtEYXRhVGFzayYgdGFzaykgeyBtX2RhdGFUYXNrU2V0LnJlbW92ZSgm
dGFzayk7IH0KIAotICAgIFN0b3JhZ2VNYW5hZ2VyJiBzdG9yYWdlTWFuYWdlcigpIHsgcmV0dXJu
IG1fc3RvcmFnZU1hbmFnZXIuZ2V0KCk7IH0KLQogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NU
QVRJU1RJQ1MpCiAgICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKiByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmdl
dCgpOyB9CiAgICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChib29sKTsK
QEAgLTEzOCw3ICsxMzUsNiBAQCBwcm90ZWN0ZWQ6CiAKICAgICBQcmVmZXRjaENhY2hlIG1fcHJl
ZmV0Y2hDYWNoZTsKIAotICAgIFJlZjxTdG9yYWdlTWFuYWdlcj4gbV9zdG9yYWdlTWFuYWdlcjsK
ICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgYm9vbCBtX2lzSW52YWxpZGF0ZWQgeyBmYWxzZSB9
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IDM1MTRjYzBm
MDgzYzdlYWM1ZDFkODYxM2EwZWZhNWU3MmU4ODc3OWQuLjAxODMyZmQyNTQ3OTFjMDRjMjk3OGQ3
N2JmNjg1ZTI5MzUxOWY0ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBA
IC01MCw3ICs1MCw3IEBAIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzIE5ldHdvcmtT
ZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzOjpwcml2YXRlU2Vzc2lvCiAjaWYgVVNFKENVUkwpCiAg
ICAgICAgICwgeyB9LCB7IH0KICNlbmRpZgotICAgICAgICAsIHsgfSwgeyB9LCBmYWxzZSwgZmFs
c2UsIHsgfSwgeyB9LCB7IH0sIHsgfSwgeyB9LCB7IH0sIHsgfSwgeyB9LCB7IH0KKyAgICAgICAg
LCB7IH0sIHsgfSwgZmFsc2UsIGZhbHNlLCB7IH0sIHsgfSwgeyB9LCB7IH0sIHsgfSwgeyB9LCB7
IH0KICAgICB9OwogfQogCkBAIC04NSw3ICs4NSw2IEBAIHZvaWQgTmV0d29ya1Nlc3Npb25DcmVh
dGlvblBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAg
ZW5jb2RlciA8PCBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlOwogICAgIGVu
Y29kZXIgPDwgcmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbnVhbFByZXZhbGVudFJlc291cmNlOwog
Ci0gICAgZW5jb2RlciA8PCBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPDwgbG9jYWxTdG9yYWdlRGly
ZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGVuY29kZXIgPDwgbmV0d29ya0NhY2hlRGlyZWN0
b3J5IDw8IG5ldHdvcmtDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKIAogICAgIGVuY29k
ZXIgPDwgZGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0VuYWJsZWQ7CkBAIC0yMDgsMTYgKzIw
Nyw2IEBAIE9wdGlvbmFsPE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzPiBOZXR3b3Jr
U2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjCiAgICAgaWYgKCFyZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWFudWFsUHJldmFsZW50UmVzb3VyY2UpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CiAKLSAgICBPcHRpb25hbDxTdHJpbmc+IGxvY2FsU3RvcmFnZURpcmVjdG9yeTsKLSAgICBk
ZWNvZGVyID4+IGxvY2FsU3RvcmFnZURpcmVjdG9yeTsKLSAgICBpZiAoIWxvY2FsU3RvcmFnZURp
cmVjdG9yeSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIE9wdGlvbmFsPFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZT4gbG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFu
ZGxlOwotICAgIGRlY29kZXIgPj4gbG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxl
OwotICAgIGlmICghbG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwotCiAgICAgT3B0aW9uYWw8U3RyaW5nPiBuZXR3b3JrQ2Fj
aGVEaXJlY3Rvcnk7CiAgICAgZGVjb2RlciA+PiBuZXR3b3JrQ2FjaGVEaXJlY3Rvcnk7CiAgICAg
aWYgKCFuZXR3b3JrQ2FjaGVEaXJlY3RvcnkpCkBAIC0yNjksOCArMjU4LDYgQEAgT3B0aW9uYWw8
TmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM+IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25Q
YXJhbWV0ZXJzOjpkZWMKICAgICAgICAgLCBXVEZNb3ZlKCpkZXZpY2VNYW5hZ2VtZW50UmVzdHJp
Y3Rpb25zRW5hYmxlZCkKICAgICAgICAgLCBXVEZNb3ZlKCphbGxMb2Fkc0Jsb2NrZWRCeURldmlj
ZU1hbmFnZW1lbnRSZXN0cmljdGlvbnNGb3JUZXN0aW5nKQogICAgICAgICAsIFdURk1vdmUoKnJl
c291cmNlTG9hZFN0YXRpc3RpY3NNYW51YWxQcmV2YWxlbnRSZXNvdXJjZSkKLSAgICAgICAgLCBX
VEZNb3ZlKCpsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpCi0gICAgICAgICwgV1RGTW92ZSgqbG9jYWxT
dG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKQogICAgICAgICAsIFdURk1vdmUoKm5ldHdv
cmtDYWNoZURpcmVjdG9yeSkKICAgICAgICAgLCBXVEZNb3ZlKCpuZXR3b3JrQ2FjaGVEaXJlY3Rv
cnlFeHRlbnNpb25IYW5kbGUpCiAgICAgfX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmgK
aW5kZXggN2E0NzQxNGI1MTFmY2Q4MDJiZWU1NzI4YjhjN2ViNDkzNzdiMTFlNi4uYzdmMDU0NTIw
YWFjOGVmNmRlYzUwNDA5YTRhOTQwN2NkZDg5NjVkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFt
ZXRlcnMuaApAQCAtOTEsOCArOTEsNiBAQCBzdHJ1Y3QgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBh
cmFtZXRlcnMgewogICAgIGJvb2wgYWxsTG9hZHNCbG9ja2VkQnlEZXZpY2VNYW5hZ2VtZW50UmVz
dHJpY3Rpb25zRm9yVGVzdGluZyB7IGZhbHNlIH07CiAgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4gcmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbnVhbFByZXZhbGVudFJlc291cmNlIHsgfTsK
IAotICAgIFN0cmluZyBsb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7Ci0gICAgU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlIGxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBTdHJp
bmcgbmV0d29ya0NhY2hlRGlyZWN0b3J5OwogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBu
ZXR3b3JrQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNl
VHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9j
YWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNwcAppbmRleCAwN2E2MzNmYmZlOWJlNTllZGJlZDUz
OWM5NmUxOWU0YjFiYmQyNTgzLi4yZmZkMGEyNWMxMWRhMWM1MTNlODcwMTQzMzQ3NGZlYzZhN2Qx
NTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2Uv
TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNwcApAQCAt
MzksMjQgKzM5LDIwIEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCi1SZWY8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyPiBMb2NhbFN0b3JhZ2VEYXRh
YmFzZVRyYWNrZXI6OmNyZWF0ZShSZWY8V29ya1F1ZXVlPiYmIHF1ZXVlLCBTdHJpbmcmJiBsb2Nh
bFN0b3JhZ2VEaXJlY3RvcnkpCitSZWY8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyPiBMb2Nh
bFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OmNyZWF0ZShTdHJpbmcmJiBsb2NhbFN0b3JhZ2VEaXJl
Y3RvcnkpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTG9jYWxTdG9yYWdlRGF0YWJhc2VU
cmFja2VyKFdURk1vdmUocXVldWUpLCBXVEZNb3ZlKGxvY2FsU3RvcmFnZURpcmVjdG9yeSkpKTsK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIoV1RG
TW92ZShsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpKSk7CiB9CiAKLUxvY2FsU3RvcmFnZURhdGFiYXNl
VHJhY2tlcjo6TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyKFJlZjxXb3JrUXVldWU+JiYgcXVl
dWUsIFN0cmluZyYmIGxvY2FsU3RvcmFnZURpcmVjdG9yeSkKLSAgICA6IG1fcXVldWUoV1RGTW92
ZShxdWV1ZSkpCi0gICAgLCBtX2xvY2FsU3RvcmFnZURpcmVjdG9yeShXVEZNb3ZlKGxvY2FsU3Rv
cmFnZURpcmVjdG9yeSkpCitMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OkxvY2FsU3RvcmFn
ZURhdGFiYXNlVHJhY2tlcihTdHJpbmcmJiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpCisgICAgOiBt
X2xvY2FsU3RvcmFnZURpcmVjdG9yeShXVEZNb3ZlKGxvY2FsU3RvcmFnZURpcmVjdG9yeSkpCiB7
Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBBU1NFUlQoIVJ1bkxvb3A6Omlz
TWFpbigpKTsKIAogICAgIC8vIE1ha2Ugc3VyZSB0aGUgZW5jb2RpbmcgaXMgaW5pdGlhbGl6ZWQg
YmVmb3JlIHdlIHN0YXJ0IGRpc3BhdGNoaW5nIHRoaW5ncyB0byB0aGUgcXVldWUuCiAgICAgVVRG
OEVuY29kaW5nKCk7CiAKLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpXSgpIG11dGFibGUgewotICAgICAgICAvLyBEZWxldGUgbGVnYWN5IHN0b3Jh
Z2VUcmFja2VyIGRhdGFiYXNlIGZpbGUuCi0gICAgICAgIFNRTGl0ZUZpbGVTeXN0ZW06OmRlbGV0
ZURhdGFiYXNlRmlsZShwcm90ZWN0ZWRUaGlzLT5kYXRhYmFzZVBhdGgoIlN0b3JhZ2VUcmFja2Vy
LmRiIikpOwotICAgIH0pOworICAgIFNRTGl0ZUZpbGVTeXN0ZW06OmRlbGV0ZURhdGFiYXNlRmls
ZShkYXRhYmFzZVBhdGgoIlN0b3JhZ2VUcmFja2VyLmRiIikpOwogfQogCiBTdHJpbmcgTG9jYWxT
dG9yYWdlRGF0YWJhc2VUcmFja2VyOjpsb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdApAQCAt
NjYsNyArNjIsNyBAQCBTdHJpbmcgTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpsb2NhbFN0
b3JhZ2VEaXJlY3RvcnkoKSBjb25zdAogCiBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6On5M
b2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIoKQogewotICAgIEFTU0VSVChSdW5Mb29wOjppc01h
aW4oKSk7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiB9CiAKIFN0cmluZyBMb2Nh
bFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OmRhdGFiYXNlUGF0aChjb25zdCBTZWN1cml0eU9yaWdp
bkRhdGEmIHNlY3VyaXR5T3JpZ2luKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFi
YXNlVHJhY2tlci5oCmluZGV4IDVkOWQyYzJhNGM3ZGEwMTNmNjBmMTFlYjQzNmYxOGU0NzU4MDIw
OTEuLjg1YjQ5ZWUyNWI4YWNjYzlkYWY5OTkzNGRlNzg4YzIzNWZkNWFiZjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRh
YmFzZVRyYWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3Jh
Z2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmgKQEAgLTM1LDkgKzM1LDkgQEAKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlciA6IHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIsIFdU
Rjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW5SdW5Mb29wPiB7CitjbGFzcyBMb2NhbFN0b3JhZ2VE
YXRhYmFzZVRyYWNrZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8TG9jYWxTdG9yYWdl
RGF0YWJhc2VUcmFja2VyPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxMb2NhbFN0b3JhZ2VE
YXRhYmFzZVRyYWNrZXI+IGNyZWF0ZShSZWY8V29ya1F1ZXVlPiYmLCBTdHJpbmcmJiBsb2NhbFN0
b3JhZ2VEaXJlY3RvcnkpOworICAgIHN0YXRpYyBSZWY8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFj
a2VyPiBjcmVhdGUoU3RyaW5nJiYgbG9jYWxTdG9yYWdlRGlyZWN0b3J5KTsKICAgICB+TG9jYWxT
dG9yYWdlRGF0YWJhc2VUcmFja2VyKCk7CiAKICAgICBTdHJpbmcgZGF0YWJhc2VQYXRoKGNvbnN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYpIGNvbnN0OwpAQCAtNjQsNyArNjQsNyBAQCBw
dWJsaWM6CiAgICAgVmVjdG9yPE9yaWdpbkRldGFpbHM+IG9yaWdpbkRldGFpbHMoKTsKIAogcHJp
dmF0ZToKLSAgICBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIoUmVmPFdvcmtRdWV1ZT4mJiwg
U3RyaW5nJiYgbG9jYWxTdG9yYWdlRGlyZWN0b3J5KTsKKyAgICBMb2NhbFN0b3JhZ2VEYXRhYmFz
ZVRyYWNrZXIoU3RyaW5nJiYgbG9jYWxTdG9yYWdlRGlyZWN0b3J5KTsKIAogICAgIFN0cmluZyBk
YXRhYmFzZVBhdGgoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkgY29uc3Q7CiAgICAgU3RyaW5nIGxv
Y2FsU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0OwpAQCAtNzMsOCArNzMsNiBAQCBwcml2YXRlOgog
ICAgICAgICBDcmVhdGVJZk5vbkV4aXN0ZW50LAogICAgICAgICBTa2lwSWZOb25FeGlzdGVudAog
ICAgIH07Ci0KLSAgICBSZWY8V29ya1F1ZXVlPiBtX3F1ZXVlOwogICAgIAogICAgIC8vIEl0IGlz
IG5vdCBzYWZlIHRvIHVzZSB0aGlzIG1lbWJlciBmcm9tIGEgYmFja2dyb3VuZCB0aHJlYWQsIGNh
bGwgbG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkgaW5zdGVhZC4KICAgICBjb25zdCBTdHJpbmcgbV9s
b2NhbFN0b3JhZ2VEaXJlY3Rvcnk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcAppbmRleCBhMTdjNTc5Y2Jh
YTU3ZTE5MjUxYTYzNDBiZWRiZDFlYWRiN2Q2OTgyLi5mZmVjOWU1NjVkYmY5YzkzZDYwZTA1ZmY4
MmU2Njg4YmJjYzkxNDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAKQEAgLTI5LDcgKzI5LDYgQEAK
ICNpbmNsdWRlICJMb2NhbFN0b3JhZ2VEYXRhYmFzZS5oIgogI2luY2x1ZGUgIkxvY2FsU3RvcmFn
ZURhdGFiYXNlVHJhY2tlci5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhTWFwTWVzc2FnZXMuaCIK
LSNpbmNsdWRlICJTdG9yYWdlTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vz
c1Byb3h5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luSGFzaC5oPgpAQCAtMzcsNTMgKzM2LDEwIEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9UZXh0RW5jb2RpbmcuaD4KICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5j
bHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgotI2luY2x1ZGUgPHd0Zi90aHJlYWRzL0JpbmFyeVNlbWFw
aG9yZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
Ci1jbGFzcyBTdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUFyZWEgOiBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8U3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VBcmVhPiB7Ci1wdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxTdG9yYWdlQXJlYT4gY3JlYXRlKExvY2FsU3RvcmFnZU5hbWVzcGFjZSosIGNvbnN0
IFNlY3VyaXR5T3JpZ2luRGF0YSYsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcyk7Ci0gICAgflN0b3Jh
Z2VBcmVhKCk7Ci0KLSAgICBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3Vy
aXR5T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9zZWN1cml0eU9yaWdpbjsgfQotCi0gICAgdm9p
ZCBhZGRMaXN0ZW5lcihJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCB1aW50NjRfdCBzdG9yYWdl
TWFwSUQpOwotICAgIHZvaWQgcmVtb3ZlTGlzdGVuZXIoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJ
RCwgdWludDY0X3Qgc3RvcmFnZU1hcElEKTsKLSAgICBib29sIGhhc0xpc3RlbmVyKElQQzo6Q29u
bmVjdGlvbjo6VW5pcXVlSUQsIHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCkgY29uc3Q7Ci0KLSAgICBS
ZWY8U3RvcmFnZUFyZWE+IGNsb25lKCkgY29uc3Q7Ci0KLSAgICB2b2lkIHNldEl0ZW0oSVBDOjpD
b25uZWN0aW9uOjpVbmlxdWVJRCBzb3VyY2VDb25uZWN0aW9uLCB1aW50NjRfdCBzb3VyY2VTdG9y
YWdlQXJlYUlELCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgY29uc3Qg
U3RyaW5nJiB1cmxTdHJpbmcsIGJvb2wmIHF1b3RhRXhjZXB0aW9uKTsKLSAgICB2b2lkIHNldEl0
ZW1zKGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+Jik7Ci0gICAgdm9pZCByZW1vdmVJdGVt
KElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgc291cmNlQ29ubmVjdGlvbiwgdWludDY0X3Qgc291
cmNlU3RvcmFnZUFyZWFJRCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdXJsU3Ry
aW5nKTsKLSAgICB2b2lkIGNsZWFyKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgc291cmNlQ29u
bmVjdGlvbiwgdWludDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwgY29uc3QgU3RyaW5nJiB1cmxT
dHJpbmcpOwotCi0gICAgY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIGl0ZW1zKCkgY29u
c3Q7Ci0gICAgdm9pZCBjbGVhcigpOwotCi0gICAgYm9vbCBpc0VwaGVtZXJhbCgpIGNvbnN0IHsg
cmV0dXJuICFtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZTsgfQotCi0gICAgdm9pZCBvcGVuRGF0YWJh
c2VBbmRJbXBvcnRJdGVtc0lmTmVlZGVkKCkgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGlj
aXQgU3RvcmFnZUFyZWEoTG9jYWxTdG9yYWdlTmFtZXNwYWNlKiwgY29uc3QgU2VjdXJpdHlPcmln
aW5EYXRhJiwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKLQotICAgIHZvaWQgZGlzcGF0Y2hFdmVu
dHMoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBzb3VyY2VDb25uZWN0aW9uLCB1aW50NjRfdCBz
b3VyY2VTdG9yYWdlQXJlYUlELCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRW
YWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpIGNv
bnN0OwotCi0gICAgLy8gV2lsbCBiZSBudWxsIGlmIHRoZSBzdG9yYWdlIGFyZWEgYmVsb25ncyB0
byBhIHNlc3Npb24gc3RvcmFnZSBuYW1lc3BhY2Ugb3IgdGhlIHN0b3JhZ2UgYXJlYSBpcyBpbiBh
biBlcGhlbWVyYWwgc2Vzc2lvbi4KLSAgICBXZWFrUHRyPExvY2FsU3RvcmFnZU5hbWVzcGFjZT4g
bV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2U7Ci0gICAgbXV0YWJsZSBSZWZQdHI8TG9jYWxTdG9yYWdl
RGF0YWJhc2U+IG1fbG9jYWxTdG9yYWdlRGF0YWJhc2U7Ci0gICAgbXV0YWJsZSBib29sIG1fZGlk
SW1wb3J0SXRlbXNGcm9tRGF0YWJhc2UgeyBmYWxzZSB9OwotCi0gICAgU2VjdXJpdHlPcmlnaW5E
YXRhIG1fc2VjdXJpdHlPcmlnaW47Ci0gICAgdW5zaWduZWQgbV9xdW90YUluQnl0ZXM7Ci0KLSAg
ICBSZWZQdHI8U3RvcmFnZU1hcD4gbV9zdG9yYWdlTWFwOwotICAgIEhhc2hTZXQ8c3RkOjpwYWly
PElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIHVpbnQ2NF90Pj4gbV9ldmVudExpc3RlbmVyczsK
LX07Ci0KIGNsYXNzIFN0b3JhZ2VNYW5hZ2VyOjpMb2NhbFN0b3JhZ2VOYW1lc3BhY2UgOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8TG9jYWxTdG9yYWdlTmFtZXNwYWNlPiwgcHVibGljIENh
bk1ha2VXZWFrUHRyPExvY2FsU3RvcmFnZU5hbWVzcGFjZT4gewogcHVibGljOgogICAgIHN0YXRp
YyBSZWY8TG9jYWxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGUoU3RvcmFnZU1hbmFnZXImLCB1aW50
NjRfdCBzdG9yYWdlTWFuYWdlcklEKTsKQEAgLTk4LDcgKzU0LDYgQEAgcHVibGljOgogICAgIHZv
aWQgY2xlYXJBbGxTdG9yYWdlQXJlYXMoKTsKIAogICAgIFZlY3RvcjxTZWN1cml0eU9yaWdpbkRh
dGE+IGVwaGVtZXJhbE9yaWdpbnMoKSBjb25zdDsKLSAgICB2b2lkIGNsb25lVG8oTG9jYWxTdG9y
YWdlTmFtZXNwYWNlJiBuZXdMb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOwogCiBwcml2YXRlOgogICAg
IExvY2FsU3RvcmFnZU5hbWVzcGFjZShTdG9yYWdlTWFuYWdlciYsIHVpbnQ2NF90IHN0b3JhZ2VN
YW5hZ2VySUQpOwpAQCAtMTY1LDYgKzEyMCwxMiBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8U2Vj
dXJpdHlPcmlnaW5EYXRhLCBSZWZQdHI8U3RvcmFnZUFyZWE+PiBtX3N0b3JhZ2VBcmVhTWFwOwog
fTsKIAorc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlU3RvcmFnZUFyZWFJZGVudGlmaWVyKCkKK3sK
KyAgICBzdGF0aWMgdWludDY0X3QgaWRlbnRpZmllcjsKKyAgICByZXR1cm4gKytpZGVudGlmaWVy
OworfQorCiBhdXRvIFN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQXJlYTo6Y3JlYXRlKExvY2FsU3Rv
cmFnZU5hbWVzcGFjZSogbG9jYWxTdG9yYWdlTmFtZXNwYWNlLCBjb25zdCBTZWN1cml0eU9yaWdp
bkRhdGEmIHNlY3VyaXR5T3JpZ2luLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpIC0+IFJlZjxTdG9y
YWdlTWFuYWdlcjo6U3RvcmFnZUFyZWE+CiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3Rv
cmFnZUFyZWEobG9jYWxTdG9yYWdlTmFtZXNwYWNlLCBzZWN1cml0eU9yaWdpbiwgcXVvdGFJbkJ5
dGVzKSk7CkBAIC0xNzUsMzMgKzEzNiwzMSBAQCBTdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUFyZWE6
OlN0b3JhZ2VBcmVhKExvY2FsU3RvcmFnZU5hbWVzcGFjZSogbG9jYWxTdG9yYWdlTmFtZQogICAg
ICwgbV9zZWN1cml0eU9yaWdpbihzZWN1cml0eU9yaWdpbikKICAgICAsIG1fcXVvdGFJbkJ5dGVz
KHF1b3RhSW5CeXRlcykKICAgICAsIG1fc3RvcmFnZU1hcChTdG9yYWdlTWFwOjpjcmVhdGUobV9x
dW90YUluQnl0ZXMpKQorICAgICwgbV9pZGVudGlmaWVyKGdlbmVyYXRlU3RvcmFnZUFyZWFJZGVu
dGlmaWVyKCkpCiB7CiB9CiAKIFN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQXJlYTo6flN0b3JhZ2VB
cmVhKCkKIHsKLSAgICBBU1NFUlQobV9ldmVudExpc3RlbmVycy5pc0VtcHR5KCkpOwogICAgIEFT
U0VSVCghbV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOwogCiAgICAgaWYgKG1fbG9jYWxTdG9yYWdl
RGF0YWJhc2UpCiAgICAgICAgIG1fbG9jYWxTdG9yYWdlRGF0YWJhc2UtPmNsb3NlKCk7CiB9CiAK
LXZvaWQgU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VBcmVhOjphZGRMaXN0ZW5lcihJUEM6OkNvbm5l
Y3Rpb246OlVuaXF1ZUlEIGNvbm5lY3Rpb25JRCwgdWludDY0X3Qgc3RvcmFnZU1hcElEKQordm9p
ZCBTdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUFyZWE6OmFkZExpc3RlbmVyKElQQzo6Q29ubmVjdGlv
bjo6VW5pcXVlSUQgY29ubmVjdGlvbklEKQogewotICAgIEFTU0VSVCghbV9ldmVudExpc3RlbmVy
cy5jb250YWlucyhzdGQ6Om1ha2VfcGFpcihjb25uZWN0aW9uSUQsIHN0b3JhZ2VNYXBJRCkpKTsK
LSAgICBtX2V2ZW50TGlzdGVuZXJzLmFkZChzdGQ6Om1ha2VfcGFpcihjb25uZWN0aW9uSUQsIHN0
b3JhZ2VNYXBJRCkpOwotfQorICAgIEFTU0VSVCghbV9ldmVudExpc3RlbmVycy5jb250YWlucyhj
b25uZWN0aW9uSUQpKTsKIAotdm9pZCBTdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUFyZWE6OnJlbW92
ZUxpc3RlbmVyKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgY29ubmVjdGlvbklELCB1aW50NjRf
dCBzdG9yYWdlTWFwSUQpCi17Ci0gICAgQVNTRVJUKGlzRXBoZW1lcmFsKCkgfHwgbV9ldmVudExp
c3RlbmVycy5jb250YWlucyhzdGQ6Om1ha2VfcGFpcihjb25uZWN0aW9uSUQsIHN0b3JhZ2VNYXBJ
RCkpKTsKLSAgICBtX2V2ZW50TGlzdGVuZXJzLnJlbW92ZShzdGQ6Om1ha2VfcGFpcihjb25uZWN0
aW9uSUQsIHN0b3JhZ2VNYXBJRCkpOworICAgIGlmIChtX2V2ZW50TGlzdGVuZXJzLmlzRW1wdHko
KSAmJiAhaXNFcGhlbWVyYWwoKSkKKyAgICAgICAgb3BlbkRhdGFiYXNlQW5kSW1wb3J0SXRlbXNJ
Zk5lZWRlZCgpOworCisgICAgbV9ldmVudExpc3RlbmVycy5hZGQoY29ubmVjdGlvbklEKTsKIH0K
IAotYm9vbCBTdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUFyZWE6Omhhc0xpc3RlbmVyKElQQzo6Q29u
bmVjdGlvbjo6VW5pcXVlSUQgY29ubmVjdGlvbklELCB1aW50NjRfdCBzdG9yYWdlTWFwSUQpIGNv
bnN0Cit2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQXJlYTo6cmVtb3ZlTGlzdGVuZXIoSVBD
OjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uSUQpCiB7Ci0gICAgcmV0dXJuIG1fZXZl
bnRMaXN0ZW5lcnMuY29udGFpbnMoc3RkOjptYWtlX3BhaXIoY29ubmVjdGlvbklELCBzdG9yYWdl
TWFwSUQpKTsKKyAgICBtX2V2ZW50TGlzdGVuZXJzLnJlbW92ZShjb25uZWN0aW9uSUQpOwogfQog
CiBSZWY8U3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VBcmVhPiBTdG9yYWdlTWFuYWdlcjo6U3RvcmFn
ZUFyZWE6OmNsb25lKCkgY29uc3QKQEAgLTIzMywyNCArMTkyLDYgQEAgdm9pZCBTdG9yYWdlTWFu
YWdlcjo6U3RvcmFnZUFyZWE6OnNldEl0ZW0oSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBzb3Vy
Y2VDb25uZWMKICAgICBkaXNwYXRjaEV2ZW50cyhzb3VyY2VDb25uZWN0aW9uLCBzb3VyY2VTdG9y
YWdlQXJlYUlELCBrZXksIG9sZFZhbHVlLCB2YWx1ZSwgdXJsU3RyaW5nKTsKIH0KIAotdm9pZCBT
dG9yYWdlTWFuYWdlcjo6U3RvcmFnZUFyZWE6OnNldEl0ZW1zKGNvbnN0IEhhc2hNYXA8U3RyaW5n
LCBTdHJpbmc+JiBpdGVtcykKLXsKLSAgICAvLyBJbXBvcnQgaXRlbXMgZnJvbSB3ZWIgcHJvY2Vz
cyBpZiBpdGVtcyBhcmUgbm90IHN0b3JlZCBvbiBkaXNrLgotICAgIGlmICghaXNFcGhlbWVyYWwo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZm9yIChhdXRvJiBpdGVtIDogaXRlbXMpIHsKLSAg
ICAgICAgU3RyaW5nIG9sZFZhbHVlOwotICAgICAgICBib29sIHF1b3RhRXhjZXB0aW9uOwotICAg
ICAgICBhdXRvIG5ld1N0b3JhZ2VNYXAgPSBtX3N0b3JhZ2VNYXAtPnNldEl0ZW0oaXRlbS5rZXks
IGl0ZW0udmFsdWUsIG9sZFZhbHVlLCBxdW90YUV4Y2VwdGlvbik7Ci0gICAgICAgIGlmIChuZXdT
dG9yYWdlTWFwKQotICAgICAgICAgICAgbV9zdG9yYWdlTWFwID0gV1RGTW92ZShuZXdTdG9yYWdl
TWFwKTsKLSAgICAgICAgCi0gICAgICAgIGlmIChxdW90YUV4Y2VwdGlvbikKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICB9Ci19Ci0KIHZvaWQgU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VBcmVhOjpy
ZW1vdmVJdGVtKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgc291cmNlQ29ubmVjdGlvbiwgdWlu
dDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmlu
ZyYgdXJsU3RyaW5nKQogewogICAgIG9wZW5EYXRhYmFzZUFuZEltcG9ydEl0ZW1zSWZOZWVkZWQo
KTsKQEAgLTMwMSw3ICsyNDIsNyBAQCB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQXJlYTo6
Y2xlYXIoKQogICAgIH0KIAogICAgIGZvciAoYXV0byBpdCA9IG1fZXZlbnRMaXN0ZW5lcnMuYmVn
aW4oKSwgZW5kID0gbV9ldmVudExpc3RlbmVycy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0g
ICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY29ubmVjdGlvbklEID0gaXQtPmZpcnN0
LCBkZXN0aW5hdGlvblN0b3JhZ2VBcmVhSUQgPSBpdC0+c2Vjb25kXSB7CisgICAgICAgIFJ1bkxv
b3A6Om1haW4oKS5kaXNwYXRjaChbY29ubmVjdGlvbklEID0gKml0LCBkZXN0aW5hdGlvblN0b3Jh
Z2VBcmVhSUQgPSBtX2lkZW50aWZpZXJdIHsKICAgICAgICAgICAgIGlmIChhdXRvKiBjb25uZWN0
aW9uID0gSVBDOjpDb25uZWN0aW9uOjpjb25uZWN0aW9uKGNvbm5lY3Rpb25JRCkpCiAgICAgICAg
ICAgICAgICAgY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U3RvcmFnZUFyZWFNYXA6OkNsZWFy
Q2FjaGUoKSwgZGVzdGluYXRpb25TdG9yYWdlQXJlYUlEKTsKICAgICAgICAgfSk7CkBAIC0zMTQs
OSArMjU1LDEwIEBAIHZvaWQgU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VBcmVhOjpvcGVuRGF0YWJh
c2VBbmRJbXBvcnRJdGVtc0lmTmVlZGVkKCkgY29uc3QKICAgICAgICAgcmV0dXJuOwogCiAgICAg
QVNTRVJUKG1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlLT5zdG9yYWdlTWFuYWdlcigpLT5tX2xvY2Fs
U3RvcmFnZURhdGFiYXNlVHJhY2tlcik7CisgICAgQVNTRVJUKG1fcXVldWUpOwogICAgIC8vIFdl
IG9wZW4gdGhlIGRhdGFiYXNlIGhlcmUgZXZlbiBpZiB3ZSd2ZSBhbHJlYWR5IGltcG9ydGVkIG91
ciBpdGVtcyB0byBlbnN1cmUgdGhhdCB0aGUgZGF0YWJhc2UgaXMgb3BlbiBpZiB3ZSBuZWVkIHRv
IHdyaXRlIHRvIGl0LgogICAgIGlmICghbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZSkKLSAgICAgICAg
bV9sb2NhbFN0b3JhZ2VEYXRhYmFzZSA9IExvY2FsU3RvcmFnZURhdGFiYXNlOjpjcmVhdGUobV9s
b2NhbFN0b3JhZ2VOYW1lc3BhY2UtPnN0b3JhZ2VNYW5hZ2VyKCktPm1fcXVldWUuY29weVJlZigp
LCAqbV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPnN0b3JhZ2VNYW5hZ2VyKCktPm1fbG9jYWxTdG9y
YWdlRGF0YWJhc2VUcmFja2VyLCBtX3NlY3VyaXR5T3JpZ2luKTsKKyAgICAgICAgbV9sb2NhbFN0
b3JhZ2VEYXRhYmFzZSA9IExvY2FsU3RvcmFnZURhdGFiYXNlOjpjcmVhdGUoKm1fcXVldWUsICpt
X2xvY2FsU3RvcmFnZU5hbWVzcGFjZS0+c3RvcmFnZU1hbmFnZXIoKS0+bV9sb2NhbFN0b3JhZ2VE
YXRhYmFzZVRyYWNrZXIsIG1fc2VjdXJpdHlPcmlnaW4pOwogCiAgICAgaWYgKG1fZGlkSW1wb3J0
SXRlbXNGcm9tRGF0YWJhc2UpCiAgICAgICAgIHJldHVybjsKQEAgLTMyOCw5ICsyNzAsOSBAQCB2
b2lkIFN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQXJlYTo6b3BlbkRhdGFiYXNlQW5kSW1wb3J0SXRl
bXNJZk5lZWRlZCgpIGNvbnN0CiB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQXJlYTo6ZGlz
cGF0Y2hFdmVudHMoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBzb3VyY2VDb25uZWN0aW9uLCB1
aW50NjRfdCBzb3VyY2VTdG9yYWdlQXJlYUlELCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3Ry
aW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgU3RyaW5nJiB1cmxT
dHJpbmcpIGNvbnN0CiB7CiAgICAgZm9yIChhdXRvIGl0ID0gbV9ldmVudExpc3RlbmVycy5iZWdp
bigpLCBlbmQgPSBtX2V2ZW50TGlzdGVuZXJzLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAg
ICAgICAgc291cmNlU3RvcmFnZUFyZWFJRCA9IGl0LT5maXJzdCA9PSBzb3VyY2VDb25uZWN0aW9u
ID8gc291cmNlU3RvcmFnZUFyZWFJRCA6IDA7CisgICAgICAgIHNvdXJjZVN0b3JhZ2VBcmVhSUQg
PSAqaXQgPT0gc291cmNlQ29ubmVjdGlvbiA/IHNvdXJjZVN0b3JhZ2VBcmVhSUQgOiAwOwogCi0g
ICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY29ubmVjdGlvbklEID0gaXQtPmZpcnN0
LCBzb3VyY2VTdG9yYWdlQXJlYUlELCBkZXN0aW5hdGlvblN0b3JhZ2VBcmVhSUQgPSBpdC0+c2Vj
b25kLCBrZXkgPSBrZXkuaXNvbGF0ZWRDb3B5KCksIG9sZFZhbHVlID0gb2xkVmFsdWUuaXNvbGF0
ZWRDb3B5KCksIG5ld1ZhbHVlID0gbmV3VmFsdWUuaXNvbGF0ZWRDb3B5KCksIHVybFN0cmluZyA9
IHVybFN0cmluZy5pc29sYXRlZENvcHkoKV0geworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlz
cGF0Y2goW2Nvbm5lY3Rpb25JRCA9ICppdCwgc291cmNlU3RvcmFnZUFyZWFJRCwgZGVzdGluYXRp
b25TdG9yYWdlQXJlYUlEID0gbV9pZGVudGlmaWVyLCBrZXkgPSBrZXkuaXNvbGF0ZWRDb3B5KCks
IG9sZFZhbHVlID0gb2xkVmFsdWUuaXNvbGF0ZWRDb3B5KCksIG5ld1ZhbHVlID0gbmV3VmFsdWUu
aXNvbGF0ZWRDb3B5KCksIHVybFN0cmluZyA9IHVybFN0cmluZy5pc29sYXRlZENvcHkoKV0gewog
ICAgICAgICAgICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBJUEM6OkNvbm5lY3Rpb246OmNvbm5l
Y3Rpb24oY29ubmVjdGlvbklEKSkKICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLT5zZW5kKE1l
c3NhZ2VzOjpTdG9yYWdlQXJlYU1hcDo6RGlzcGF0Y2hTdG9yYWdlRXZlbnQoc291cmNlU3RvcmFn
ZUFyZWFJRCwga2V5LCBvbGRWYWx1ZSwgbmV3VmFsdWUsIHVybFN0cmluZyksIGRlc3RpbmF0aW9u
U3RvcmFnZUFyZWFJRCk7CiAgICAgICAgIH0pOwpAQCAtMzQyLDggKzI4NCw2IEBAIFJlZjxTdG9y
YWdlTWFuYWdlcjo6TG9jYWxTdG9yYWdlTmFtZXNwYWNlPiBTdG9yYWdlTWFuYWdlcjo6TG9jYWxT
dG9yYWdlTmFtZXNwYWNlCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTG9jYWxTdG9yYWdlTmFt
ZXNwYWNlKHN0b3JhZ2VNYW5hZ2VyLCBzdG9yYWdlTmFtZXNwYWNlSUQpKTsKIH0KIAotLy8gRklY
TUU6IFRoZSBxdW90YSB2YWx1ZSBpcyBjb3BpZWQgZnJvbSBHcm91cFNldHRpbmdzLmNwcC4KLS8v
IFdlIHNob3VsZCBpbnZlc3RpZ2F0ZSBhIHdheSB0byBzaGFyZSBpdCB3aXRoIFdlYkNvcmUuCiBT
dG9yYWdlTWFuYWdlcjo6TG9jYWxTdG9yYWdlTmFtZXNwYWNlOjpMb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2UoU3RvcmFnZU1hbmFnZXImIHN0b3JhZ2VNYW5hZ2VyLCB1aW50NjRfdCBzdG9yYWdlTmFtZXNw
YWNlSUQpCiAgICAgOiBtX3N0b3JhZ2VNYW5hZ2VyKHN0b3JhZ2VNYW5hZ2VyKQogICAgICwgbV9x
dW90YUluQnl0ZXMobG9jYWxTdG9yYWdlRGF0YWJhc2VRdW90YUluQnl0ZXMpCkBAIC0zNTQsNyAr
Mjk0LDcgQEAgU3RvcmFnZU1hbmFnZXI6OkxvY2FsU3RvcmFnZU5hbWVzcGFjZTo6fkxvY2FsU3Rv
cmFnZU5hbWVzcGFjZSgpCiB7CiB9CiAKLWF1dG8gU3RvcmFnZU1hbmFnZXI6OkxvY2FsU3RvcmFn
ZU5hbWVzcGFjZTo6Z2V0T3JDcmVhdGVTdG9yYWdlQXJlYShTZWN1cml0eU9yaWdpbkRhdGEmJiBz
ZWN1cml0eU9yaWdpbiwgSXNFcGhlbWVyYWwgaXNFcGhlbWVyYWwpIC0+IFJlZjxTdG9yYWdlQXJl
YT4KK1JlZjxTdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUFyZWE+IFN0b3JhZ2VNYW5hZ2VyOjpMb2Nh
bFN0b3JhZ2VOYW1lc3BhY2U6OmdldE9yQ3JlYXRlU3RvcmFnZUFyZWEoU2VjdXJpdHlPcmlnaW5E
YXRhJiYgc2VjdXJpdHlPcmlnaW4sIElzRXBoZW1lcmFsIGlzRXBoZW1lcmFsKQogewogICAgIHJl
dHVybiAqbV9zdG9yYWdlQXJlYU1hcC5lbnN1cmUoc2VjdXJpdHlPcmlnaW4sIFsmXSgpIG11dGFi
bGUgewogICAgICAgICByZXR1cm4gU3RvcmFnZUFyZWE6OmNyZWF0ZShpc0VwaGVtZXJhbCA9PSBJ
c0VwaGVtZXJhbDo6WWVzID8gbnVsbHB0ciA6IHRoaXMsIFdURk1vdmUoc2VjdXJpdHlPcmlnaW4p
LCBtX3F1b3RhSW5CeXRlcyk7CkBAIC0zODQsMTIgKzMyNCw2IEBAIFZlY3RvcjxTZWN1cml0eU9y
aWdpbkRhdGE+IFN0b3JhZ2VNYW5hZ2VyOjpMb2NhbFN0b3JhZ2VOYW1lc3BhY2U6OmVwaGVtZXJh
bE9yaWdpCiAgICAgcmV0dXJuIG9yaWdpbnM7CiB9CiAKLXZvaWQgU3RvcmFnZU1hbmFnZXI6Okxv
Y2FsU3RvcmFnZU5hbWVzcGFjZTo6Y2xvbmVUbyhMb2NhbFN0b3JhZ2VOYW1lc3BhY2UmIG5ld0xv
Y2FsU3RvcmFnZU5hbWVzcGFjZSkKLXsKLSAgICBmb3IgKGF1dG8mIHBhaXIgOiBtX3N0b3JhZ2VB
cmVhTWFwKQotICAgICAgICBuZXdMb2NhbFN0b3JhZ2VOYW1lc3BhY2UubV9zdG9yYWdlQXJlYU1h
cC5hZGQocGFpci5rZXksIHBhaXIudmFsdWUtPmNsb25lKCkpOwotfQotCiBjbGFzcyBTdG9yYWdl
TWFuYWdlcjo6U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2U+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVm
PFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGUodW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsK
QEAgLTM5NywxMCArMzMxLDYgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Qg
eyByZXR1cm4gbV9zdG9yYWdlQXJlYU1hcC5pc0VtcHR5KCk7IH0KIAotICAgIGNvbnN0IEhhc2hT
ZXQ8SVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRD4mIGFsbG93ZWRDb25uZWN0aW9ucygpIGNvbnN0
IHsgcmV0dXJuIG1fYWxsb3dlZENvbm5lY3Rpb25zOyB9Ci0gICAgdm9pZCBhZGRBbGxvd2VkQ29u
bmVjdGlvbihJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEKTsKLSAgICB2b2lkIHJlbW92ZUFsbG93
ZWRDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQpOwotCiAgICAgUmVmPFN0b3Jh
Z2VBcmVhPiBnZXRPckNyZWF0ZVN0b3JhZ2VBcmVhKFNlY3VyaXR5T3JpZ2luRGF0YSYmKTsKIAog
ICAgIHZvaWQgY2xvbmVUbyhTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSYgbmV3U2Vzc2lvblN0b3Jh
Z2VOYW1lc3BhY2UpOwpAQCAtNDMzLDcgKzM2Myw2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
ZXhwbGljaXQgU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsK
IAotICAgIEhhc2hTZXQ8SVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRD4gbV9hbGxvd2VkQ29ubmVj
dGlvbnM7CiAgICAgdW5zaWduZWQgbV9xdW90YUluQnl0ZXM7CiAKICAgICBIYXNoTWFwPFNlY3Vy
aXR5T3JpZ2luRGF0YSwgUmVmUHRyPFN0b3JhZ2VBcmVhPj4gbV9zdG9yYWdlQXJlYU1hcDsKQEAg
LTQ1MywxOCArMzgyLDcgQEAgU3RvcmFnZU1hbmFnZXI6OlNlc3Npb25TdG9yYWdlTmFtZXNwYWNl
Ojp+U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoKQogewogfQogCi12b2lkIFN0b3JhZ2VNYW5hZ2Vy
OjpTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZTo6YWRkQWxsb3dlZENvbm5lY3Rpb24oSVBDOjpDb25u
ZWN0aW9uOjpVbmlxdWVJRCBhbGxvd2VkQ29ubmVjdGlvbikKLXsKLSAgICBtX2FsbG93ZWRDb25u
ZWN0aW9ucy5hZGQoYWxsb3dlZENvbm5lY3Rpb24pOwotfQotCi0KLXZvaWQgU3RvcmFnZU1hbmFn
ZXI6OlNlc3Npb25TdG9yYWdlTmFtZXNwYWNlOjpyZW1vdmVBbGxvd2VkQ29ubmVjdGlvbihJUEM6
OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGFsbG93ZWRDb25uZWN0aW9uKQotewotICAgIEFTU0VSVCht
X2FsbG93ZWRDb25uZWN0aW9ucy5jb250YWlucyhhbGxvd2VkQ29ubmVjdGlvbikpOwotICAgIG1f
YWxsb3dlZENvbm5lY3Rpb25zLnJlbW92ZShhbGxvd2VkQ29ubmVjdGlvbik7Ci19Ci1hdXRvIFN0
b3JhZ2VNYW5hZ2VyOjpTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZTo6Z2V0T3JDcmVhdGVTdG9yYWdl
QXJlYShTZWN1cml0eU9yaWdpbkRhdGEmJiBzZWN1cml0eU9yaWdpbikgLT4gUmVmPFN0b3JhZ2VB
cmVhPgorUmVmPFN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQXJlYT4gU3RvcmFnZU1hbmFnZXI6OlNl
c3Npb25TdG9yYWdlTmFtZXNwYWNlOjpnZXRPckNyZWF0ZVN0b3JhZ2VBcmVhKFNlY3VyaXR5T3Jp
Z2luRGF0YSYmIHNlY3VyaXR5T3JpZ2luKQogewogICAgIHJldHVybiAqbV9zdG9yYWdlQXJlYU1h
cC5lbnN1cmUoc2VjdXJpdHlPcmlnaW4sIFt0aGlzLCAmc2VjdXJpdHlPcmlnaW5dKCkgbXV0YWJs
ZSB7CiAgICAgICAgIHJldHVybiBTdG9yYWdlQXJlYTo6Y3JlYXRlKG51bGxwdHIsIFdURk1vdmUo
c2VjdXJpdHlPcmlnaW4pLCBtX3F1b3RhSW5CeXRlcyk7CkBAIC00ODUsNDk5ICs0MDMsMTc4IEBA
IFJlZjxTdG9yYWdlTWFuYWdlcj4gU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZShTdHJpbmcmJiBsb2Nh
bFN0b3JhZ2VEaXJlY3RvcnkpCiB9CiAKIFN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlTWFuYWdlcihT
dHJpbmcmJiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpCi0gICAgOiBtX3F1ZXVlKFdvcmtRdWV1ZTo6
Y3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0LlN0b3JhZ2VNYW5hZ2VyIikpCiB7Ci0gICAgQVNTRVJU
KFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAog
ICAgIC8vIE1ha2Ugc3VyZSB0aGUgZW5jb2RpbmcgaXMgaW5pdGlhbGl6ZWQgYmVmb3JlIHdlIHN0
YXJ0IGRpc3BhdGNoaW5nIHRoaW5ncyB0byB0aGUgcXVldWUuCiAgICAgVVRGOEVuY29kaW5nKCk7
CiAgICAgaWYgKCFsb2NhbFN0b3JhZ2VEaXJlY3RvcnkuaXNOdWxsKCkpCi0gICAgICAgIG1fbG9j
YWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyID0gTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpj
cmVhdGUobV9xdWV1ZS5jb3B5UmVmKCksIFdURk1vdmUobG9jYWxTdG9yYWdlRGlyZWN0b3J5KSk7
CisgICAgICAgIG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyID0gTG9jYWxTdG9yYWdlRGF0
YWJhc2VUcmFja2VyOjpjcmVhdGUoV1RGTW92ZShsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpKTsKIH0K
IAogU3RvcmFnZU1hbmFnZXI6On5TdG9yYWdlTWFuYWdlcigpCiB7Ci0gICAgQVNTRVJUKFJ1bkxv
b3A6OmlzTWFpbigpKTsKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIH0KIAogdm9p
ZCBTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3Qg
c3RvcmFnZU5hbWVzcGFjZUlELCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpCiB7Ci0gICAgbV9xdWV1
ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc3RvcmFn
ZU5hbWVzcGFjZUlELCBxdW90YUluQnl0ZXNdKCkgbXV0YWJsZSB7Ci0gICAgICAgIG1fc2Vzc2lv
blN0b3JhZ2VOYW1lc3BhY2VzLmVuc3VyZShzdG9yYWdlTmFtZXNwYWNlSUQsIFtxdW90YUluQnl0
ZXNdIHsKLSAgICAgICAgICAgIHJldHVybiBTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZTo6Y3JlYXRl
KHF1b3RhSW5CeXRlcyk7Ci0gICAgICAgIH0pOworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWlu
KCkpOworICAgIG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLmVuc3VyZShzdG9yYWdlTmFtZXNw
YWNlSUQsIFtxdW90YUluQnl0ZXNdIHsKKyAgICAgICAgcmV0dXJuIFNlc3Npb25TdG9yYWdlTmFt
ZXNwYWNlOjpjcmVhdGUocXVvdGFJbkJ5dGVzKTsKICAgICB9KTsKIH0KIAogdm9pZCBTdG9yYWdl
TWFuYWdlcjo6ZGVzdHJveVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IHN0b3JhZ2VO
YW1lc3BhY2VJRCkKIHsKLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBzdG9yYWdlTmFtZXNwYWNlSURdIHsKLSAgICAgICAgQVNTRVJU
KG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLmNvbnRhaW5zKHN0b3JhZ2VOYW1lc3BhY2VJRCkp
OwotICAgICAgICBpZiAoYXV0byogc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UgPSBtX3Nlc3Npb25T
dG9yYWdlTmFtZXNwYWNlcy5nZXQoc3RvcmFnZU5hbWVzcGFjZUlEKSkgewotICAgICAgICAgICAg
aWYgKHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlLT5hbGxvd2VkQ29ubmVjdGlvbnMoKS5pc0VtcHR5
KCkpCi0gICAgICAgICAgICAgICAgbV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMucmVtb3ZlKHN0
b3JhZ2VOYW1lc3BhY2VJRCk7Ci0gICAgICAgIH0KLSAgICB9KTsKLX0KLQotdm9pZCBTdG9yYWdl
TWFuYWdlcjo6YWRkQWxsb3dlZFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlQ29ubmVjdGlvbih1aW50
NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIElQQzo6Q29ubmVjdGlvbiYgYWxsb3dlZENvbm5lY3Rp
b24pCi17Ci0gICAgYXV0byBhbGxvd2VkQ29ubmVjdGlvbklEID0gYWxsb3dlZENvbm5lY3Rpb24u
dW5pcXVlSUQoKTsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1fY29ubmVjdGlvbnMuYWRkKGFsbG93
ZWRDb25uZWN0aW9uSUQpOwotICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAg
YWxsb3dlZENvbm5lY3Rpb24uYWRkV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpT
dG9yYWdlTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3F1ZXVlLmdldCgpLCB0aGlz
KTsKLQotICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIGFsbG93ZWRDb25uZWN0aW9uSUQsIHN0b3JhZ2VOYW1lc3BhY2VJRF0oKSBtdXRh
YmxlIHsKLSAgICAgICAgQVNTRVJUKG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLmNvbnRhaW5z
KHN0b3JhZ2VOYW1lc3BhY2VJRCkpOwotCi0gICAgICAgIG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3Bh
Y2VzLmdldChzdG9yYWdlTmFtZXNwYWNlSUQpLT5hZGRBbGxvd2VkQ29ubmVjdGlvbihhbGxvd2Vk
Q29ubmVjdGlvbklEKTsKLSAgICB9KTsKLX0KLQotdm9pZCBTdG9yYWdlTWFuYWdlcjo6cmVtb3Zl
QWxsb3dlZFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlQ29ubmVjdGlvbih1aW50NjRfdCBzdG9yYWdl
TmFtZXNwYWNlSUQsIElQQzo6Q29ubmVjdGlvbiYgYWxsb3dlZENvbm5lY3Rpb24pCi17Ci0gICAg
YXV0byBhbGxvd2VkQ29ubmVjdGlvbklEID0gYWxsb3dlZENvbm5lY3Rpb24udW5pcXVlSUQoKTsK
LSAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCBhbGxvd2VkQ29ubmVjdGlvbklELCBzdG9yYWdlTmFtZXNwYWNlSURdKCkgbXV0YWJsZSB7
Ci0gICAgICAgIEFTU0VSVChtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlcy5jb250YWlucyhzdG9y
YWdlTmFtZXNwYWNlSUQpKTsKLSAgICAgICAgaWYgKGF1dG8qIHNlc3Npb25TdG9yYWdlTmFtZXNw
YWNlID0gbV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMuZ2V0KHN0b3JhZ2VOYW1lc3BhY2VJRCkp
Ci0gICAgICAgICAgICBzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS0+cmVtb3ZlQWxsb3dlZENvbm5l
Y3Rpb24oYWxsb3dlZENvbm5lY3Rpb25JRCk7Ci0gICAgfSk7CisgICAgQVNTRVJUKCFSdW5Mb29w
Ojppc01haW4oKSk7CisgICAgQVNTRVJUKG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLmNvbnRh
aW5zKHN0b3JhZ2VOYW1lc3BhY2VJRCkpOworICAgIGlmIChhdXRvKiBzZXNzaW9uU3RvcmFnZU5h
bWVzcGFjZSA9IG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLmdldChzdG9yYWdlTmFtZXNwYWNl
SUQpKQorICAgICAgICBtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlcy5yZW1vdmUoc3RvcmFnZU5h
bWVzcGFjZUlEKTsKIH0KIAogdm9pZCBTdG9yYWdlTWFuYWdlcjo6Y2xvbmVTZXNzaW9uU3RvcmFn
ZU5hbWVzcGFjZSh1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIHVpbnQ2NF90IG5ld1N0b3Jh
Z2VOYW1lc3BhY2VJRCkKIHsKLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzdG9yYWdlTmFtZXNwYWNlSUQsIG5ld1N0b3JhZ2VOYW1l
c3BhY2VJRF0gewotICAgICAgICBTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSogc2Vzc2lvblN0b3Jh
Z2VOYW1lc3BhY2UgPSBtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlcy5nZXQoc3RvcmFnZU5hbWVz
cGFjZUlEKTsKLSAgICAgICAgaWYgKCFzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSkgewotICAgICAg
ICAgICAgLy8gRklYTUU6IFdlIGNhbiBnZXQgaW50byB0aGlzIHNpdHVhdGlvbiBpZiBzb21lb25l
IGNsb3NlcyB0aGUgb3JpZ2luYXRpbmcgcGFnZSBmcm9tIHdpdGhpbiBhCi0gICAgICAgICAgICAv
LyBjcmVhdGVOZXdQYWdlIGNhbGxiYWNrLiBXZSBiYWlsIGZvciBub3csIGJ1dCB3ZSBzaG91bGQg
cmVhbGx5IGZpbmQgYSB3YXkgdG8ga2VlcCB0aGUgc2Vzc2lvbiBzdG9yYWdlIGFsaXZlCi0gICAg
ICAgICAgICAvLyBzbyB3ZSB3ZSdsbCBjbG9uZSB0aGUgc2Vzc2lvbiBzdG9yYWdlIGNvcnJlY3Rs
eS4KLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIFNlc3Npb25TdG9y
YWdlTmFtZXNwYWNlKiBuZXdTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSA9IG1fc2Vzc2lvblN0b3Jh
Z2VOYW1lc3BhY2VzLmdldChuZXdTdG9yYWdlTmFtZXNwYWNlSUQpOwotICAgICAgICBBU1NFUlQo
bmV3U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UpOworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWlu
KCkpOworICAgIFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKiBzZXNzaW9uU3RvcmFnZU5hbWVzcGFj
ZSA9IG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLmdldChzdG9yYWdlTmFtZXNwYWNlSUQpOwor
ICAgIGlmICghc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UpCisgICAgICAgIHJldHVybjsKIAotICAg
ICAgICBzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS0+Y2xvbmVUbygqbmV3U2Vzc2lvblN0b3JhZ2VO
YW1lc3BhY2UpOworICAgIFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKiBuZXdTZXNzaW9uU3RvcmFn
ZU5hbWVzcGFjZSA9IGdldE9yQ3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UobmV3U3RvcmFn
ZU5hbWVzcGFjZUlEKTsKKyAgICBBU1NFUlQobmV3U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UpOwog
Ci0gICAgICAgIGlmICghbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIpIHsKLSAgICAgICAg
ICAgIGlmIChhdXRvKiBsb2NhbFN0b3JhZ2VOYW1lc3BhY2UgPSBtX2xvY2FsU3RvcmFnZU5hbWVz
cGFjZXMuZ2V0KHN0b3JhZ2VOYW1lc3BhY2VJRCkpIHsKLSAgICAgICAgICAgICAgICBMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UqIG5ld2xvY2FsU3RvcmFnZU5hbWVzcGFjZSA9IGdldE9yQ3JlYXRlTG9j
YWxTdG9yYWdlTmFtZXNwYWNlKG5ld1N0b3JhZ2VOYW1lc3BhY2VJRCk7Ci0gICAgICAgICAgICAg
ICAgbG9jYWxTdG9yYWdlTmFtZXNwYWNlLT5jbG9uZVRvKCpuZXdsb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2UpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfSk7Ci19Ci0KLXZvaWQgU3RvcmFn
ZU1hbmFnZXI6OnByb2Nlc3NEaWRDbG9zZUNvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uKQotewotICAgIGlmIChtX2Nvbm5lY3Rpb25zLnJlbW92ZShjb25uZWN0aW9uLnVuaXF1
ZUlEKCkpKQotICAgICAgICBjb25uZWN0aW9uLnJlbW92ZVdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZl
cihNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7Ci0KLSAg
ICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBjb25uZWN0aW9uSUQgPSBjb25uZWN0aW9uLnVuaXF1ZUlEKCldKCkgbXV0YWJsZSB7Ci0gICAg
ICAgIFZlY3RvcjxzdGQ6OnBhaXI8SVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCwgdWludDY0X3Q+
PiBjb25uZWN0aW9uQW5kU3RvcmFnZU1hcElEUGFpcnNUb1JlbW92ZTsKLSAgICAgICAgZm9yIChh
dXRvJiBzdG9yYWdlQXJlYSA6IG1fc3RvcmFnZUFyZWFzQnlDb25uZWN0aW9uKSB7Ci0gICAgICAg
ICAgICBpZiAoc3RvcmFnZUFyZWEua2V5LmZpcnN0ICE9IGNvbm5lY3Rpb25JRCkKLSAgICAgICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgc3RvcmFnZUFyZWEu
dmFsdWUtPnJlbW92ZUxpc3RlbmVyKHN0b3JhZ2VBcmVhLmtleS5maXJzdCwgc3RvcmFnZUFyZWEu
a2V5LnNlY29uZCk7Ci0gICAgICAgICAgICBjb25uZWN0aW9uQW5kU3RvcmFnZU1hcElEUGFpcnNU
b1JlbW92ZS5hcHBlbmQoc3RvcmFnZUFyZWEua2V5KTsKLSAgICAgICAgfQotICAgICAgICAKLSAg
ICAgICAgZm9yIChhdXRvJiBwYWlyIDogY29ubmVjdGlvbkFuZFN0b3JhZ2VNYXBJRFBhaXJzVG9S
ZW1vdmUpCi0gICAgICAgICAgICBtX3N0b3JhZ2VBcmVhc0J5Q29ubmVjdGlvbi5yZW1vdmUocGFp
cik7Ci0KLSAgICAgICAgVmVjdG9yPHVpbnQ2NF90PiBzZXNzaW9uU3RvcmFnZU5hbWVTcGFjZUlE
c1RvUmVtb3ZlOwotICAgICAgICBmb3IgKGF1dG8mIHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlIDog
bV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMpIHsKLSAgICAgICAgICAgIGlmIChzZXNzaW9uU3Rv
cmFnZU5hbWVzcGFjZS52YWx1ZS0+YWxsb3dlZENvbm5lY3Rpb25zKCkuY29udGFpbnMoY29ubmVj
dGlvbklEKSkKLSAgICAgICAgICAgICAgICBzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS52YWx1ZS0+
cmVtb3ZlQWxsb3dlZENvbm5lY3Rpb24oY29ubmVjdGlvbklEKTsKLSAgICAgICAgICAgIAotICAg
ICAgICAgICAgaWYgKHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlLnZhbHVlLT5hbGxvd2VkQ29ubmVj
dGlvbnMoKS5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgc2Vzc2lvblN0b3JhZ2VOYW1lU3Bh
Y2VJRHNUb1JlbW92ZS5hcHBlbmQoc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2Uua2V5KTsKLSAgICAg
ICAgfQotICAgICAgICAKLSAgICAgICAgZm9yIChhdXRvIGlkIDogc2Vzc2lvblN0b3JhZ2VOYW1l
U3BhY2VJRHNUb1JlbW92ZSkKLSAgICAgICAgICAgIG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2Vz
LnJlbW92ZShpZCk7Ci0gICAgfSk7CisgICAgc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UtPmNsb25l
VG8oKm5ld1Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlKTsKIH0KIAogdm9pZCBTdG9yYWdlTWFuYWdl
cjo6Z2V0U2Vzc2lvblN0b3JhZ2VPcmlnaW5zKEZ1bmN0aW9uPHZvaWQoSGFzaFNldDxXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGE+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIG1f
cXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7
Ci0gICAgICAgIEhhc2hTZXQ8U2VjdXJpdHlPcmlnaW5EYXRhPiBvcmlnaW5zOwotCi0gICAgICAg
IGZvciAoY29uc3QgYXV0byYgc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UgOiBtX3Nlc3Npb25TdG9y
YWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkgewotICAgICAgICAgICAgZm9yIChhdXRvJiBvcmlnaW4g
OiBzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS0+b3JpZ2lucygpKQotICAgICAgICAgICAgICAgIG9y
aWdpbnMuYWRkKG9yaWdpbik7Ci0gICAgICAgIH0KLQotICAgICAgICBSdW5Mb29wOjptYWluKCku
ZGlzcGF0Y2goW29yaWdpbnMgPSBXVEZNb3ZlKG9yaWdpbnMpLCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoV1RGTW92ZShvcmlnaW5zKSk7Ci0gICAgICAgIH0pOworICAgIEFTU0VS
VCghUnVuTG9vcDo6aXNNYWluKCkpOworICAgIEhhc2hTZXQ8U2VjdXJpdHlPcmlnaW5EYXRhPiBv
cmlnaW5zOworICAgIGZvciAoY29uc3QgYXV0byYgc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UgOiBt
X3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkgeworICAgICAgICBmb3IgKGF1dG8m
IG9yaWdpbiA6IHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlLT5vcmlnaW5zKCkpCisgICAgICAgICAg
ICBvcmlnaW5zLmFkZChvcmlnaW4pOworICAgIH0KKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0
Y2goW29yaWdpbnMgPSBXVEZNb3ZlKG9yaWdpbnMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihXVEZNb3ZlKG9yaWdpbnMpKTsKICAgICB9KTsKIH0KIAogdm9pZCBTdG9yYWdlTWFuYWdl
cjo6ZGVsZXRlU2Vzc2lvblN0b3JhZ2VPcmlnaW5zKEZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICBmb3IgKGF1dG8mIHNlc3Npb25TdG9yYWdl
TmFtZXNwYWNlIDogbV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMudmFsdWVzKCkpCi0gICAgICAg
ICAgICBzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS0+Y2xlYXJBbGxTdG9yYWdlQXJlYXMoKTsKKyAg
ICBmb3IgKGF1dG8mIHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlIDogbV9zZXNzaW9uU3RvcmFnZU5h
bWVzcGFjZXMudmFsdWVzKCkpCisgICAgICAgIHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlLT5jbGVh
ckFsbFN0b3JhZ2VBcmVhcygpOwogCi0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgfSk7CisgICAgUnVuTG9vcDo6bWFpbigp
LmRpc3BhdGNoKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBTdG9yYWdl
TWFuYWdlcjo6ZGVsZXRlU2Vzc2lvblN0b3JhZ2VFbnRyaWVzRm9yT3JpZ2lucyhjb25zdCBWZWN0
b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYgb3JpZ2lucywgRnVuY3Rpb248dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvcGllZE9yaWdpbnMgPSBjcm9zc1RocmVh
ZENvcHkob3JpZ2lucyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgIGZvciAoYXV0byYgb3JpZ2luIDogY29waWVkT3Jp
Z2lucykgewotICAgICAgICAgICAgZm9yIChhdXRvJiBzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSA6
IG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLnZhbHVlcygpKQotICAgICAgICAgICAgICAgIHNl
c3Npb25TdG9yYWdlTmFtZXNwYWNlLT5jbGVhclN0b3JhZ2VBcmVhc01hdGNoaW5nT3JpZ2luKG9y
aWdpbik7Ci0gICAgICAgIH0KKyAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IG9yaWdpbnMpIHsKKyAg
ICAgICAgZm9yIChhdXRvJiBzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSA6IG1fc2Vzc2lvblN0b3Jh
Z2VOYW1lc3BhY2VzLnZhbHVlcygpKQorICAgICAgICAgICAgc2Vzc2lvblN0b3JhZ2VOYW1lc3Bh
Y2UtPmNsZWFyU3RvcmFnZUFyZWFzTWF0Y2hpbmdPcmlnaW4ob3JpZ2luKTsKKyAgICB9CiAKLSAg
ICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKLSAgICB9KTsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpnZXRMb2NhbFN0b3JhZ2VP
cmlnaW5zKEZ1bmN0aW9uPHZvaWQoSGFzaFNldDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgIEhhc2hTZXQ8U2Vj
dXJpdHlPcmlnaW5EYXRhPiBvcmlnaW5zOwotCi0gICAgICAgIGlmIChtX2xvY2FsU3RvcmFnZURh
dGFiYXNlVHJhY2tlcikgewotICAgICAgICAgICAgZm9yIChhdXRvJiBvcmlnaW4gOiBtX2xvY2Fs
U3RvcmFnZURhdGFiYXNlVHJhY2tlci0+b3JpZ2lucygpKQorICAgIEhhc2hTZXQ8U2VjdXJpdHlP
cmlnaW5EYXRhPiBvcmlnaW5zOworICAgIGlmIChtX2xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tl
cikgeworICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VU
cmFja2VyLT5vcmlnaW5zKCkpCisgICAgICAgICAgICBvcmlnaW5zLmFkZChvcmlnaW4uaXNvbGF0
ZWRDb3B5KCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgbG9jYWxT
dG9yYWdlTmFtZVNwYWNlIDogbV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2VzLnZhbHVlcygpKSB7Cisg
ICAgICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IGxvY2FsU3RvcmFnZU5hbWVTcGFjZS0+ZXBo
ZW1lcmFsT3JpZ2lucygpKQogICAgICAgICAgICAgICAgIG9yaWdpbnMuYWRkKG9yaWdpbi5pc29s
YXRlZENvcHkoKSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBmb3IgKGNvbnN0IGF1
dG8mIGxvY2FsU3RvcmFnZU5hbWVTcGFjZSA6IG1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlcy52YWx1
ZXMoKSkgewotICAgICAgICAgICAgICAgIGZvciAoYXV0byYgb3JpZ2luIDogbG9jYWxTdG9yYWdl
TmFtZVNwYWNlLT5lcGhlbWVyYWxPcmlnaW5zKCkpCi0gICAgICAgICAgICAgICAgICAgIG9yaWdp
bnMuYWRkKG9yaWdpbi5pc29sYXRlZENvcHkoKSk7Ci0gICAgICAgICAgICB9CiAgICAgICAgIH0K
KyAgICB9CiAKLSAgICAgICAgZm9yIChhdXRvJiB0cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2UgOiBtX3RyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZXMudmFsdWVzKCkpIHsKLSAgICAg
ICAgICAgIGZvciAoYXV0byYgb3JpZ2luIDogdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNl
LT5vcmlnaW5zKCkpCi0gICAgICAgICAgICAgICAgb3JpZ2lucy5hZGQob3JpZ2luLmlzb2xhdGVk
Q29weSgpKTsKLSAgICAgICAgfQorICAgIGZvciAoYXV0byYgdHJhbnNpZW50TG9jYWxTdG9yYWdl
TmFtZXNwYWNlIDogbV90cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2VzLnZhbHVlcygpKSB7
CisgICAgICAgIGZvciAoYXV0byYgb3JpZ2luIDogdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNw
YWNlLT5vcmlnaW5zKCkpCisgICAgICAgICAgICBvcmlnaW5zLmFkZChvcmlnaW4uaXNvbGF0ZWRD
b3B5KCkpOworICAgIH0KIAotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW29yaWdp
bnMgPSBXVEZNb3ZlKG9yaWdpbnMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
V1RGTW92ZShvcmlnaW5zKSk7Ci0gICAgICAgIH0pOworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNw
YXRjaChbb3JpZ2lucyA9IFdURk1vdmUob3JpZ2lucyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKFdURk1vdmUob3JpZ2lucykpOwogICAgIH0pOwogfQogCiB2b2lkIFN0b3JhZ2VNYW5h
Z2VyOjpnZXRMb2NhbFN0b3JhZ2VPcmlnaW5EZXRhaWxzKEZ1bmN0aW9uPHZvaWQoVmVjdG9yPExv
Y2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6T3JpZ2luRGV0YWlscz4mJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7Ci0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgVmVjdG9yPExvY2FsU3RvcmFnZURhdGFiYXNl
VHJhY2tlcjo6T3JpZ2luRGV0YWlscz4gb3JpZ2luRGV0YWlsczsKLSAgICAgICAgaWYgKG1fbG9j
YWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyKQotICAgICAgICAgICAgb3JpZ2luRGV0YWlscyA9IG1f
bG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLT5vcmlnaW5EZXRhaWxzKCkuaXNvbGF0ZWRDb3B5
KCk7CisgICAgVmVjdG9yPExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6T3JpZ2luRGV0YWls
cz4gb3JpZ2luRGV0YWlsczsKKyAgICBpZiAobV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIp
CisgICAgICAgIG9yaWdpbkRldGFpbHMgPSBtX2xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci0+
b3JpZ2luRGV0YWlscygpLmlzb2xhdGVkQ29weSgpOwogCi0gICAgICAgIFJ1bkxvb3A6Om1haW4o
KS5kaXNwYXRjaChbb3JpZ2luRGV0YWlscyA9IFdURk1vdmUob3JpZ2luRGV0YWlscyksIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0g
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKG9yaWdpbkRldGFpbHMpKTsKLSAg
ICAgICAgfSk7CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtvcmlnaW5EZXRhaWxzID0g
V1RGTW92ZShvcmlnaW5EZXRhaWxzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RG
TW92ZShvcmlnaW5EZXRhaWxzKSk7CiAgICAgfSk7CiB9CiAKLXZvaWQgU3RvcmFnZU1hbmFnZXI6
OmRlbGV0ZUxvY2FsU3RvcmFnZUVudHJpZXNGb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW5E
YXRhJiBzZWN1cml0eU9yaWdpbikKK3ZvaWQgU3RvcmFnZU1hbmFnZXI6OmRlbGV0ZUxvY2FsU3Rv
cmFnZU9yaWdpbnNNb2RpZmllZFNpbmNlKFdhbGxUaW1lIHRpbWUsIEZ1bmN0aW9uPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb3BpZWRPcmlnaW4gPSBzZWN1cml0eU9yaWdp
bi5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgZm9yIChhdXRvJiBsb2NhbFN0
b3JhZ2VOYW1lc3BhY2UgOiBtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZXMudmFsdWVzKCkpCi0gICAg
ICAgICAgICBsb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPmNsZWFyU3RvcmFnZUFyZWFzTWF0Y2hpbmdP
cmlnaW4oY29waWVkT3JpZ2luKTsKKyAgICBpZiAobV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNr
ZXIpIHsKKyAgICAgICAgYXV0byBvcmlnaW5zVG9EZWxldGUgPSBtX2xvY2FsU3RvcmFnZURhdGFi
YXNlVHJhY2tlci0+ZGF0YWJhc2VzTW9kaWZpZWRTaW5jZSh0aW1lKTsKIAogICAgICAgICBmb3Ig
KGF1dG8mIHRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSA6IG1fdHJhbnNpZW50TG9jYWxT
dG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkKLSAgICAgICAgICAgIHRyYW5zaWVudExvY2FsU3Rv
cmFnZU5hbWVzcGFjZS0+Y2xlYXJTdG9yYWdlQXJlYXNNYXRjaGluZ09yaWdpbihjb3BpZWRPcmln
aW4pOworICAgICAgICAgICAgdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlLT5jbGVhckFs
bFN0b3JhZ2VBcmVhcygpOwogCi0gICAgICAgIGlmIChtX2xvY2FsU3RvcmFnZURhdGFiYXNlVHJh
Y2tlcikKLSAgICAgICAgICAgIG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLT5kZWxldGVE
YXRhYmFzZVdpdGhPcmlnaW4oY29waWVkT3JpZ2luKTsKLSAgICB9KTsKLX0KLQotdm9pZCBTdG9y
YWdlTWFuYWdlcjo6ZGVsZXRlTG9jYWxTdG9yYWdlT3JpZ2luc01vZGlmaWVkU2luY2UoV2FsbFRp
bWUgdGltZSwgRnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIG1f
cXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHRp
bWUsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0
YWJsZSB7Ci0gICAgICAgIGlmIChtX2xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcikgewotICAg
ICAgICAgICAgYXV0byBvcmlnaW5zVG9EZWxldGUgPSBtX2xvY2FsU3RvcmFnZURhdGFiYXNlVHJh
Y2tlci0+ZGF0YWJhc2VzTW9kaWZpZWRTaW5jZSh0aW1lKTsKLSAgICAgICAgICAgIAotICAgICAg
ICAgICAgZm9yIChhdXRvJiB0cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UgOiBtX3RyYW5z
aWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZXMudmFsdWVzKCkpCi0gICAgICAgICAgICAgICAgdHJh
bnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlLT5jbGVhckFsbFN0b3JhZ2VBcmVhcygpOwotCi0g
ICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIG9yaWdpbiA6IG9yaWdpbnNUb0RlbGV0ZSkgewot
ICAgICAgICAgICAgICAgIGZvciAoYXV0byYgbG9jYWxTdG9yYWdlTmFtZXNwYWNlIDogbV9sb2Nh
bFN0b3JhZ2VOYW1lc3BhY2VzLnZhbHVlcygpKQotICAgICAgICAgICAgICAgICAgICBsb2NhbFN0
b3JhZ2VOYW1lc3BhY2UtPmNsZWFyU3RvcmFnZUFyZWFzTWF0Y2hpbmdPcmlnaW4ob3JpZ2luKTsK
LSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBtX2xvY2FsU3RvcmFnZURhdGFiYXNl
VHJhY2tlci0+ZGVsZXRlRGF0YWJhc2VXaXRoT3JpZ2luKG9yaWdpbik7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0gZWxzZSB7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgb3JpZ2luIDogb3Jp
Z2luc1RvRGVsZXRlKSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIGxvY2FsU3RvcmFnZU5hbWVz
cGFjZSA6IG1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkKLSAgICAgICAgICAgICAg
ICBsb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPmNsZWFyQWxsU3RvcmFnZUFyZWFzKCk7CisgICAgICAg
ICAgICAgICAgbG9jYWxTdG9yYWdlTmFtZXNwYWNlLT5jbGVhclN0b3JhZ2VBcmVhc01hdGNoaW5n
T3JpZ2luKG9yaWdpbik7CisgICAgICAgICAgICBtX2xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tl
ci0+ZGVsZXRlRGF0YWJhc2VXaXRoT3JpZ2luKG9yaWdpbik7CiAgICAgICAgIH0KKyAgICB9IGVs
c2UgeworICAgICAgICBmb3IgKGF1dG8mIGxvY2FsU3RvcmFnZU5hbWVzcGFjZSA6IG1fbG9jYWxT
dG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkKKyAgICAgICAgICAgIGxvY2FsU3RvcmFnZU5hbWVz
cGFjZS0+Y2xlYXJBbGxTdG9yYWdlQXJlYXMoKTsKKyAgICB9CiAKLSAgICAgICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICB9KTsKKyAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwog
fQogCiB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVMb2NhbFN0b3JhZ2VFbnRyaWVzRm9yT3Jp
Z2lucyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYgb3JpZ2lucywg
RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIG1fcXVldWUtPmRp
c3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvcGllZE9yaWdp
bnMgPSBjcm9zc1RocmVhZENvcHkob3JpZ2lucyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgIGZvciAoYXV0byYgb3Jp
Z2luIDogY29waWVkT3JpZ2lucykgewotICAgICAgICAgICAgZm9yIChhdXRvJiBsb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UgOiBtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZXMudmFsdWVzKCkpCi0gICAgICAg
ICAgICAgICAgbG9jYWxTdG9yYWdlTmFtZXNwYWNlLT5jbGVhclN0b3JhZ2VBcmVhc01hdGNoaW5n
T3JpZ2luKG9yaWdpbik7CisgICAgZm9yIChhdXRvJiBvcmlnaW4gOiBvcmlnaW5zKSB7CisgICAg
ICAgIGZvciAoYXV0byYgbG9jYWxTdG9yYWdlTmFtZXNwYWNlIDogbV9sb2NhbFN0b3JhZ2VOYW1l
c3BhY2VzLnZhbHVlcygpKQorICAgICAgICAgICAgbG9jYWxTdG9yYWdlTmFtZXNwYWNlLT5jbGVh
clN0b3JhZ2VBcmVhc01hdGNoaW5nT3JpZ2luKG9yaWdpbik7CiAKLSAgICAgICAgICAgIGZvciAo
YXV0byYgdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlIDogbV90cmFuc2llbnRMb2NhbFN0
b3JhZ2VOYW1lc3BhY2VzLnZhbHVlcygpKQotICAgICAgICAgICAgICAgIHRyYW5zaWVudExvY2Fs
U3RvcmFnZU5hbWVzcGFjZS0+Y2xlYXJTdG9yYWdlQXJlYXNNYXRjaGluZ09yaWdpbihvcmlnaW4p
OworICAgICAgICBmb3IgKGF1dG8mIHRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSA6IG1f
dHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkKKyAgICAgICAgICAgIHRy
YW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZS0+Y2xlYXJTdG9yYWdlQXJlYXNNYXRjaGluZ09y
aWdpbihvcmlnaW4pOwogCi0gICAgICAgICAgICBpZiAobV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRy
YWNrZXIpCi0gICAgICAgICAgICAgICAgbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXItPmRl
bGV0ZURhdGFiYXNlV2l0aE9yaWdpbihvcmlnaW4pOwotICAgICAgICB9CisgICAgICAgIGlmICht
X2xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcikKKyAgICAgICAgICAgIG1fbG9jYWxTdG9yYWdl
RGF0YWJhc2VUcmFja2VyLT5kZWxldGVEYXRhYmFzZVdpdGhPcmlnaW4ob3JpZ2luKTsKKyAgICB9
CiAKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKLSAgICB9KTsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIFN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVMb2Nh
bFN0b3JhZ2VNYXAoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCB1aW50NjRfdCBzdG9yYWdl
TWFwSUQsIHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgU2VjdXJpdHlPcmlnaW5EYXRhJiYg
c2VjdXJpdHlPcmlnaW5EYXRhKQorU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VBcmVhKiBTdG9yYWdl
TWFuYWdlcjo6Y3JlYXRlTG9jYWxTdG9yYWdlQXJlYSh1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNl
SUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIG9yaWdpbkRhdGEpCiB7CiAgICAgQVNT
RVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgYXV0byBjb25uZWN0aW9uSUQgPSBjb25uZWN0
aW9uLnVuaXF1ZUlEKCk7Ci0gICAgc3RkOjpwYWlyPElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQs
IHVpbnQ2NF90PiBjb25uZWN0aW9uQW5kU3RvcmFnZU1hcElEUGFpcihjb25uZWN0aW9uSUQsIHN0
b3JhZ2VNYXBJRCk7Ci0KLSAgICBBU1NFUlQoKEhhc2hNYXA8c3RkOjpwYWlyPElQQzo6Q29ubmVj
dGlvbjo6VW5pcXVlSUQsIHVpbnQ2NF90PiwgUmVmUHRyPFN0b3JhZ2VBcmVhPj46OmlzVmFsaWRL
ZXkoY29ubmVjdGlvbkFuZFN0b3JhZ2VNYXBJRFBhaXIpKSk7Ci0KLSAgICBhdXRvIHJlc3VsdCA9
IG1fc3RvcmFnZUFyZWFzQnlDb25uZWN0aW9uLmFkZChjb25uZWN0aW9uQW5kU3RvcmFnZU1hcElE
UGFpciwgbnVsbHB0cik7Ci0gICAgQVNTRVJUKHJlc3VsdC5pc05ld0VudHJ5KTsKICAgICBBU1NF
UlQoKEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxMb2NhbFN0b3JhZ2VOYW1lc3BhY2U+Pjo6aXNW
YWxpZEtleShzdG9yYWdlTmFtZXNwYWNlSUQpKSk7CiAKICAgICBMb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2UqIGxvY2FsU3RvcmFnZU5hbWVzcGFjZSA9IGdldE9yQ3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNw
YWNlKHN0b3JhZ2VOYW1lc3BhY2VJRCk7CiAgICAgQVNTRVJUKGxvY2FsU3RvcmFnZU5hbWVzcGFj
ZSk7CiAKLSAgICBhdXRvIHN0b3JhZ2VBcmVhID0gbG9jYWxTdG9yYWdlTmFtZXNwYWNlLT5nZXRP
ckNyZWF0ZVN0b3JhZ2VBcmVhKFdURk1vdmUoc2VjdXJpdHlPcmlnaW5EYXRhKSwgbV9sb2NhbFN0
b3JhZ2VEYXRhYmFzZVRyYWNrZXIgPyBTdG9yYWdlTWFuYWdlcjo6TG9jYWxTdG9yYWdlTmFtZXNw
YWNlOjpJc0VwaGVtZXJhbDo6Tm8gOiBTdG9yYWdlTWFuYWdlcjo6TG9jYWxTdG9yYWdlTmFtZXNw
YWNlOjpJc0VwaGVtZXJhbDo6WWVzKTsKLSAgICBzdG9yYWdlQXJlYS0+YWRkTGlzdGVuZXIoY29u
bmVjdGlvbklELCBzdG9yYWdlTWFwSUQpOwotCi0gICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9
IFdURk1vdmUoc3RvcmFnZUFyZWEpOwotfQotCi12b2lkIFN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVU
cmFuc2llbnRMb2NhbFN0b3JhZ2VNYXAoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCB1aW50
NjRfdCBzdG9yYWdlTWFwSUQsIHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgU2VjdXJpdHlP
cmlnaW5EYXRhJiYgdG9wTGV2ZWxPcmlnaW5EYXRhLCBTZWN1cml0eU9yaWdpbkRhdGEmJiBvcmln
aW4pCi17Ci0gICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgYXV0byBjb25uZWN0
aW9uSUQgPSBjb25uZWN0aW9uLnVuaXF1ZUlEKCk7Ci0KLSAgICBBU1NFUlQobV9zdG9yYWdlQXJl
YXNCeUNvbm5lY3Rpb24uaXNWYWxpZEtleSh7IGNvbm5lY3Rpb25JRCwgc3RvcmFnZU1hcElEIH0p
KTsKLQotICAgIC8vIFNlZSBpZiB3ZSBhbHJlYWR5IGhhdmUgc2Vzc2lvbiBzdG9yYWdlIGZvciB0
aGlzIGNvbm5lY3Rpb24vb3JpZ2luIGNvbWJvLgotICAgIC8vIElmIHNvLCB1cGRhdGUgdGhlIG1h
cCB3aXRoIHRoZSBuZXcgSUQsIG90aGVyd2lzZSBrZWVwIG9uIHRydWNraW5nLgotICAgIGZvciAo
YXV0byBpdCA9IG1fc3RvcmFnZUFyZWFzQnlDb25uZWN0aW9uLmJlZ2luKCksIGVuZCA9IG1fc3Rv
cmFnZUFyZWFzQnlDb25uZWN0aW9uLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAg
aWYgKGl0LT5rZXkuZmlyc3QgIT0gY29ubmVjdGlvbklEKQotICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgIFJlZjxTdG9yYWdlQXJlYT4gYXJlYSA9ICppdC0+dmFsdWU7Ci0gICAgICAgIGlm
ICghYXJlYS0+aXNFcGhlbWVyYWwoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBp
ZiAoIW9yaWdpbi5zZWN1cml0eU9yaWdpbigpLT5pc1NhbWVTY2hlbWVIb3N0UG9ydChhcmVhLT5z
ZWN1cml0eU9yaWdpbigpLnNlY3VyaXR5T3JpZ2luKCkuZ2V0KCkpKQotICAgICAgICAgICAgY29u
dGludWU7Ci0gICAgICAgIGFyZWEtPmFkZExpc3RlbmVyKGNvbm5lY3Rpb25JRCwgc3RvcmFnZU1h
cElEKTsKLSAgICAgICAgLy8gSWYgdGhlIHN0b3JhZ2VNYXBJRCB1c2VkIGFzIGtleSBpbiBtX3N0
b3JhZ2VBcmVhc0J5Q29ubmVjdGlvbiBpcyBubyBsb25nZXIgb25lIG9mIHRoZSBTdG9yYWdlQXJl
YSdzIGxpc3RlbmVycywgdGhlbiB0aGlzIG1lYW5zCi0gICAgICAgIC8vIHRoYXQgZGVzdHJveVN0
b3JhZ2VNYXAoKSB3YXMgYWxyZWFkeSBjYWxsZWQgZm9yIHRoYXQgc3RvcmFnZU1hcElEIGJ1dCBp
dCBkZWNpZGVkIG5vdCB0byByZW1vdmUgaXQgZnJvbSBtX3N0b3JhZ2VBcmVhc0J5Q29ubmVjdGlv
bgotICAgICAgICAvLyBzbyB0aGF0IHdlIGNvdWxkIHJldXNlIGl0IGxhdGVyIG9uIGZvciB0aGUg
c2FtZSBjb25uZWN0aW9uL29yaWdpbiBjb21iby4gSW4gdGhpcyBjYXNlLCBpdCBpcyBzYWZlIHRv
IHJlbW92ZSB0aGUgcHJldmlvdXMKLSAgICAgICAgLy8gc3RvcmFnZU1hcElEIGZyb20gbV9zdG9y
YWdlQXJlYXNCeUNvbm5lY3Rpb24uCi0gICAgICAgIGlmICghYXJlYS0+aGFzTGlzdGVuZXIoY29u
bmVjdGlvbklELCBpdC0+a2V5LnNlY29uZCkpCi0gICAgICAgICAgICBtX3N0b3JhZ2VBcmVhc0J5
Q29ubmVjdGlvbi5yZW1vdmUoaXQpOwotICAgICAgICBtX3N0b3JhZ2VBcmVhc0J5Q29ubmVjdGlv
bi5hZGQoeyBjb25uZWN0aW9uSUQsIHN0b3JhZ2VNYXBJRCB9LCBXVEZNb3ZlKGFyZWEpKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGF1dG8mIHNsb3QgPSBtX3N0b3JhZ2VBcmVhc0J5
Q29ubmVjdGlvbi5hZGQoeyBjb25uZWN0aW9uSUQsIHN0b3JhZ2VNYXBJRCB9LCBudWxscHRyKS5p
dGVyYXRvci0+dmFsdWU7Ci0gICAgQVNTRVJUKCFzbG90KTsKLQotICAgIGF1dG8qIHRyYW5zaWVu
dExvY2FsU3RvcmFnZU5hbWVzcGFjZSA9IGdldE9yQ3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdl
TmFtZXNwYWNlKHN0b3JhZ2VOYW1lc3BhY2VJRCwgV1RGTW92ZSh0b3BMZXZlbE9yaWdpbkRhdGEp
KTsKLQotICAgIGF1dG8gc3RvcmFnZUFyZWEgPSB0cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2UtPmdldE9yQ3JlYXRlU3RvcmFnZUFyZWEoV1RGTW92ZShvcmlnaW4pKTsKLSAgICBzdG9yYWdl
QXJlYS0+YWRkTGlzdGVuZXIoY29ubmVjdGlvbklELCBzdG9yYWdlTWFwSUQpOwotCi0gICAgc2xv
dCA9IFdURk1vdmUoc3RvcmFnZUFyZWEpOwotfQotCi12b2lkIFN0b3JhZ2VNYW5hZ2VyOjpjcmVh
dGVTZXNzaW9uU3RvcmFnZU1hcChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVpbnQ2NF90
IHN0b3JhZ2VNYXBJRCwgdWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBTZWN1cml0eU9yaWdp
bkRhdGEmJiBzZWN1cml0eU9yaWdpbkRhdGEpCi17Ci0gICAgQVNTRVJUKCFSdW5Mb29wOjppc01h
aW4oKSk7Ci0gICAgYXV0byBjb25uZWN0aW9uSUQgPSBjb25uZWN0aW9uLnVuaXF1ZUlEKCk7Ci0g
ICAgQVNTRVJUKG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLmlzVmFsaWRLZXkoc3RvcmFnZU5h
bWVzcGFjZUlEKSk7Ci0KLSAgICBTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSogc2Vzc2lvblN0b3Jh
Z2VOYW1lc3BhY2UgPSBtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlcy5nZXQoc3RvcmFnZU5hbWVz
cGFjZUlEKTsKLSAgICBpZiAoIXNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKSB7Ci0gICAgICAgIC8v
IFdlJ3JlIGdldHRpbmcgYW4gaW5jb21pbmcgbWVzc2FnZSBmcm9tIHRoZSB3ZWIgcHJvY2VzcyB0
aGF0J3MgZm9yIHNlc3Npb24gc3RvcmFnZSBmb3IgYSB3ZWIgcGFnZQotICAgICAgICAvLyB0aGF0
IGhhcyBhbHJlYWR5IGJlZW4gY2xvc2VkLCBqdXN0IGlnbm9yZSBpdC4KLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIEFTU0VSVChtX3N0b3JhZ2VBcmVhc0J5Q29ubmVjdGlvbi5pc1ZhbGlk
S2V5KHsgY29ubmVjdGlvbklELCBzdG9yYWdlTWFwSUQgfSkpOwotCi0gICAgYXV0byYgc2xvdCA9
IG1fc3RvcmFnZUFyZWFzQnlDb25uZWN0aW9uLmFkZCh7IGNvbm5lY3Rpb25JRCwgc3RvcmFnZU1h
cElEIH0sIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKLSAgICBBU1NFUlQoIXNsb3QpOwotICAg
IEFTU0VSVChzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS0+YWxsb3dlZENvbm5lY3Rpb25zKCkuY29u
dGFpbnMoY29ubmVjdGlvbklEKSk7Ci0KLSAgICBhdXRvIHN0b3JhZ2VBcmVhID0gc2Vzc2lvblN0
b3JhZ2VOYW1lc3BhY2UtPmdldE9yQ3JlYXRlU3RvcmFnZUFyZWEoV1RGTW92ZShzZWN1cml0eU9y
aWdpbkRhdGEpKTsKLSAgICBzdG9yYWdlQXJlYS0+YWRkTGlzdGVuZXIoY29ubmVjdGlvbklELCBz
dG9yYWdlTWFwSUQpOwotCi0gICAgc2xvdCA9IFdURk1vdmUoc3RvcmFnZUFyZWEpOwotfQotCi12
b2lkIFN0b3JhZ2VNYW5hZ2VyOjpkZXN0cm95U3RvcmFnZU1hcChJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCkKLXsKLSAgICBBU1NFUlQoIVJ1bkxvb3A6
OmlzTWFpbigpKTsKLSAgICBhdXRvIGNvbm5lY3Rpb25JRCA9IGNvbm5lY3Rpb24udW5pcXVlSUQo
KTsKLQotICAgIHN0ZDo6cGFpcjxJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCB1aW50NjRfdD4g
Y29ubmVjdGlvbkFuZFN0b3JhZ2VNYXBJRFBhaXIoY29ubmVjdGlvbklELCBzdG9yYWdlTWFwSUQp
OwotICAgIEFTU0VSVChtX3N0b3JhZ2VBcmVhc0J5Q29ubmVjdGlvbi5pc1ZhbGlkS2V5KGNvbm5l
Y3Rpb25BbmRTdG9yYWdlTWFwSURQYWlyKSk7Ci0KLSAgICBhdXRvIGl0ID0gbV9zdG9yYWdlQXJl
YXNCeUNvbm5lY3Rpb24uZmluZChjb25uZWN0aW9uQW5kU3RvcmFnZU1hcElEUGFpcik7Ci0gICAg
aWYgKGl0ID09IG1fc3RvcmFnZUFyZWFzQnlDb25uZWN0aW9uLmVuZCgpKSB7Ci0gICAgICAgIC8v
IFRoZSBjb25uZWN0aW9uIGhhcyBiZWVuIHJlbW92ZWQgYmVjYXVzZSB0aGUgbGFzdCBwYWdlIHdh
cyBjbG9zZWQuCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpdC0+dmFsdWUtPnJlbW92
ZUxpc3RlbmVyKGNvbm5lY3Rpb25JRCwgc3RvcmFnZU1hcElEKTsKLQotICAgIC8vIERvbid0IHJl
bW92ZSBzZXNzaW9uIHN0b3JhZ2UgbWFwcy4gVGhlIHdlYiBwcm9jZXNzIG1heSByZWNvbm5lY3Qg
YW5kIGV4cGVjdCB0aGUgZGF0YSB0byBzdGlsbCBiZSBhcm91bmQuCi0gICAgaWYgKGl0LT52YWx1
ZS0+aXNFcGhlbWVyYWwoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9zdG9yYWdlQXJlYXNC
eUNvbm5lY3Rpb24ucmVtb3ZlKGNvbm5lY3Rpb25BbmRTdG9yYWdlTWFwSURQYWlyKTsKLX0KLQot
dm9pZCBTdG9yYWdlTWFuYWdlcjo6cHJld2FybShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
IHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCkKLXsKLSAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigp
KTsKLSAgICBpZiAoYXV0byogc3RvcmFnZUFyZWEgPSBmaW5kU3RvcmFnZUFyZWEoY29ubmVjdGlv
biwgc3RvcmFnZU1hcElEKSkKLSAgICAgICAgc3RvcmFnZUFyZWEtPm9wZW5EYXRhYmFzZUFuZElt
cG9ydEl0ZW1zSWZOZWVkZWQoKTsKLX0KLQotdm9pZCBTdG9yYWdlTWFuYWdlcjo6Z2V0VmFsdWVz
KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgdWludDY0X3Qgc3RvcmFnZU1hcElELCB1aW50
NjRfdCBzdG9yYWdlTWFwU2VlZCwgR2V0VmFsdWVzQ2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxl
cikKLXsKLSAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBhdXRvKiBzdG9yYWdl
QXJlYSA9IGZpbmRTdG9yYWdlQXJlYShjb25uZWN0aW9uLCBzdG9yYWdlTWFwSUQpOwotCi0gICAg
Ly8gVGhpcyBpcyBhIHNlc3Npb24gc3RvcmFnZSBhcmVhIGZvciBhIHBhZ2UgdGhhdCBoYXMgYWxy
ZWFkeSBiZWVuIGNsb3NlZC4gSWdub3JlIGl0LgotICAgIGlmICghc3RvcmFnZUFyZWEpCi0gICAg
ICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwotCi0gICAgY29tcGxldGlvbkhhbmRs
ZXIoc3RvcmFnZUFyZWEtPml0ZW1zKCkpOwotICAgIGNvbm5lY3Rpb24uc2VuZChNZXNzYWdlczo6
U3RvcmFnZUFyZWFNYXA6OkRpZEdldFZhbHVlcyhzdG9yYWdlTWFwU2VlZCksIHN0b3JhZ2VNYXBJ
RCk7Ci19Ci0KLXZvaWQgU3RvcmFnZU1hbmFnZXI6OnNldEl0ZW0oSVBDOjpDb25uZWN0aW9uJiBj
b25uZWN0aW9uLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBzZWN1cml0eU9yaWdpbkRh
dGEsIHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCwgdWludDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwg
dWludDY0X3Qgc3RvcmFnZU1hcFNlZWQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcm
IHZhbHVlLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZykKLXsKLSAgICBBU1NFUlQoIVJ1bkxvb3A6
OmlzTWFpbigpKTsKLSAgICBhdXRvKiBzdG9yYWdlQXJlYSA9IGZpbmRTdG9yYWdlQXJlYShjb25u
ZWN0aW9uLCBzdG9yYWdlTWFwSUQpOwotCi0gICAgLy8gVGhpcyBpcyBhIHNlc3Npb24gc3RvcmFn
ZSBhcmVhIGZvciBhIHBhZ2UgdGhhdCBoYXMgYWxyZWFkeSBiZWVuIGNsb3NlZC4gSWdub3JlIGl0
LgotICAgIGlmICghc3RvcmFnZUFyZWEpCi0gICAgICAgIHJldHVybjsKLQotICAgIGJvb2wgcXVv
dGFFcnJvcjsKLSAgICBzdG9yYWdlQXJlYS0+c2V0SXRlbShjb25uZWN0aW9uLnVuaXF1ZUlEKCks
IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIGtleSwgdmFsdWUsIHVybFN0cmluZywgcXVvdGFFcnJvcik7
Ci0gICAgY29ubmVjdGlvbi5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlQXJlYU1hcDo6RGlkU2V0SXRl
bShzdG9yYWdlTWFwU2VlZCwga2V5LCBxdW90YUVycm9yKSwgc3RvcmFnZU1hcElEKTsKLX0KLQot
dm9pZCBTdG9yYWdlTWFuYWdlcjo6c2V0SXRlbXMoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
LCB1aW50NjRfdCBzdG9yYWdlTWFwSUQsIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBp
dGVtcykKLXsKLSAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBpZiAoYXV0byog
c3RvcmFnZUFyZWEgPSBmaW5kU3RvcmFnZUFyZWEoY29ubmVjdGlvbiwgc3RvcmFnZU1hcElEKSkK
LSAgICAgICAgc3RvcmFnZUFyZWEtPnNldEl0ZW1zKGl0ZW1zKTsKKyAgICByZXR1cm4gbG9jYWxT
dG9yYWdlTmFtZXNwYWNlLT5nZXRPckNyZWF0ZVN0b3JhZ2VBcmVhKFdURk1vdmUob3JpZ2luRGF0
YSksIG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyID8gU3RvcmFnZU1hbmFnZXI6OkxvY2Fs
U3RvcmFnZU5hbWVzcGFjZTo6SXNFcGhlbWVyYWw6Ok5vIDogU3RvcmFnZU1hbmFnZXI6OkxvY2Fs
U3RvcmFnZU5hbWVzcGFjZTo6SXNFcGhlbWVyYWw6OlllcykucHRyKCk7CiB9CiAKLXZvaWQgU3Rv
cmFnZU1hbmFnZXI6OnJlbW92ZUl0ZW0oSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBzZWN1cml0eU9yaWdpbkRhdGEsIHVpbnQ2NF90IHN0
b3JhZ2VNYXBJRCwgdWludDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwgdWludDY0X3Qgc3RvcmFn
ZU1hcFNlZWQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHVybFN0cmluZykKK1N0
b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQXJlYSogU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZVRyYW5zaWVu
dExvY2FsU3RvcmFnZUFyZWEodWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEmJiB0b3BMZXZlbE9yaWdpbkRhdGEsIFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYmIG9yaWdpbkRhdGEpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4o
KSk7Ci0gICAgYXV0byogc3RvcmFnZUFyZWEgPSBmaW5kU3RvcmFnZUFyZWEoY29ubmVjdGlvbiwg
c3RvcmFnZU1hcElEKTsKKyAgICBBU1NFUlQoKEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxUcmFu
c2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2U+Pjo6aXNWYWxpZEtleShzdG9yYWdlTmFtZXNwYWNl
SUQpKSk7CiAKLSAgICAvLyBUaGlzIGlzIGEgc2Vzc2lvbiBzdG9yYWdlIGFyZWEgZm9yIGEgcGFn
ZSB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gY2xvc2VkLiBJZ25vcmUgaXQuCi0gICAgaWYgKCFzdG9y
YWdlQXJlYSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc3RvcmFnZUFyZWEtPnJlbW92ZUl0ZW0o
Y29ubmVjdGlvbi51bmlxdWVJRCgpLCBzb3VyY2VTdG9yYWdlQXJlYUlELCBrZXksIHVybFN0cmlu
Zyk7Ci0gICAgY29ubmVjdGlvbi5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlQXJlYU1hcDo6RGlkUmVt
b3ZlSXRlbShzdG9yYWdlTWFwU2VlZCwga2V5KSwgc3RvcmFnZU1hcElEKTsKKyAgICBhdXRvKiB0
cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UgPSBnZXRPckNyZWF0ZVRyYW5zaWVudExvY2Fs
U3RvcmFnZU5hbWVzcGFjZShzdG9yYWdlTmFtZXNwYWNlSUQsIHRvcExldmVsT3JpZ2luRGF0YS5p
c29sYXRlZENvcHkoKSk7CisgICAgcmV0dXJuIHRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFj
ZS0+Z2V0T3JDcmVhdGVTdG9yYWdlQXJlYShXVEZNb3ZlKHRvcExldmVsT3JpZ2luRGF0YSkpLnB0
cigpOwogfQogCi12b2lkIFN0b3JhZ2VNYW5hZ2VyOjpjbGVhcihJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIHNlY3VyaXR5T3JpZ2luRGF0
YSwgdWludDY0X3Qgc3RvcmFnZU1hcElELCB1aW50NjRfdCBzb3VyY2VTdG9yYWdlQXJlYUlELCB1
aW50NjRfdCBzdG9yYWdlTWFwU2VlZCwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCitTdG9yYWdl
TWFuYWdlcjo6U3RvcmFnZUFyZWEqIFN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVTZXNzaW9uU3RvcmFn
ZUFyZWEodWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEmJiBvcmlnaW5EYXRhKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwot
ICAgIGF1dG8qIHN0b3JhZ2VBcmVhID0gZmluZFN0b3JhZ2VBcmVhKGNvbm5lY3Rpb24sIHN0b3Jh
Z2VNYXBJRCk7Ci0KLSAgICAvLyBUaGlzIGlzIGEgc2Vzc2lvbiBzdG9yYWdlIGFyZWEgZm9yIGEg
cGFnZSB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gY2xvc2VkLiBJZ25vcmUgaXQuCi0gICAgaWYgKCFz
dG9yYWdlQXJlYSkKLSAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVCgoSGFzaE1hcDx1aW50NjRf
dCwgUmVmUHRyPFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlPj46OmlzVmFsaWRLZXkoc3RvcmFnZU5h
bWVzcGFjZUlEKSkpOwogCi0gICAgc3RvcmFnZUFyZWEtPmNsZWFyKGNvbm5lY3Rpb24udW5pcXVl
SUQoKSwgc291cmNlU3RvcmFnZUFyZWFJRCwgdXJsU3RyaW5nKTsKLSAgICBjb25uZWN0aW9uLnNl
bmQoTWVzc2FnZXM6OlN0b3JhZ2VBcmVhTWFwOjpEaWRDbGVhcihzdG9yYWdlTWFwU2VlZCksIHN0
b3JhZ2VNYXBJRCk7Ci19Ci0KLXZvaWQgU3RvcmFnZU1hbmFnZXI6OndhaXRVbnRpbFRhc2tzRmlu
aXNoZWQoKQotewotICAgIEJpbmFyeVNlbWFwaG9yZSBzZW1hcGhvcmU7Ci0gICAgbV9xdWV1ZS0+
ZGlzcGF0Y2goW3RoaXMsICZzZW1hcGhvcmVdIHsKLSAgICAgICAgVmVjdG9yPHN0ZDo6cGFpcjxJ
UEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCB1aW50NjRfdD4+IGNvbm5lY3Rpb25BbmRTdG9yYWdl
TWFwSURQYWlyc1RvUmVtb3ZlOwotICAgICAgICBmb3IgKGF1dG8mIGNvbm5lY3Rpb25TdG9yYWdl
QXJlYVBhaXIgOiBtX3N0b3JhZ2VBcmVhc0J5Q29ubmVjdGlvbikgewotICAgICAgICAgICAgY29u
bmVjdGlvblN0b3JhZ2VBcmVhUGFpci52YWx1ZS0+cmVtb3ZlTGlzdGVuZXIoY29ubmVjdGlvblN0
b3JhZ2VBcmVhUGFpci5rZXkuZmlyc3QsIGNvbm5lY3Rpb25TdG9yYWdlQXJlYVBhaXIua2V5LnNl
Y29uZCk7Ci0gICAgICAgICAgICBjb25uZWN0aW9uQW5kU3RvcmFnZU1hcElEUGFpcnNUb1JlbW92
ZS5hcHBlbmQoY29ubmVjdGlvblN0b3JhZ2VBcmVhUGFpci5rZXkpOwotICAgICAgICB9Ci0KLSAg
ICAgICAgZm9yIChhdXRvJiBjb25uZWN0aW9uU3RvcmFnZUFyZWFQYWlyIDogY29ubmVjdGlvbkFu
ZFN0b3JhZ2VNYXBJRFBhaXJzVG9SZW1vdmUpCi0gICAgICAgICAgICBtX3N0b3JhZ2VBcmVhc0J5
Q29ubmVjdGlvbi5yZW1vdmUoY29ubmVjdGlvblN0b3JhZ2VBcmVhUGFpcik7Ci0KLSAgICAgICAg
bV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2VzLmNsZWFyKCk7Ci0KLSAgICAgICAgc2VtYXBob3JlLnNp
Z25hbCgpOwotICAgIH0pOwotICAgIHNlbWFwaG9yZS53YWl0KCk7Ci19Ci0KLXZvaWQgU3RvcmFn
ZU1hbmFnZXI6OnN1c3BlbmQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQotewotICAgIENvbXBsZXRpb25IYW5kbGVyQ2FsbGluZ1Njb3BlIGNvbXBsZXRpb25I
YW5kbGVyQ2FsbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICBpZiAoIW1fbG9j
YWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBMb2NrZXI8
TG9jaz4gc3RhdGVMb2NrZXIobV9zdGF0ZUxvY2spOwotICAgIGlmIChtX3N0YXRlICE9IFN0YXRl
OjpSdW5uaW5nKQotICAgICAgICByZXR1cm47Ci0gICAgbV9zdGF0ZSA9IFN0YXRlOjpXaWxsU3Vz
cGVuZDsKLQotICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gY29tcGxldGlvbkhhbmRsZXJDYWxsZXIu
cmVsZWFzZSgpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgTG9ja2VyPExvY2s+IHN0YXRlTG9ja2Vy
KG1fc3RhdGVMb2NrKTsKLSAgICAgICAgQVNTRVJUKG1fc3RhdGUgIT0gU3RhdGU6OlN1c3BlbmRl
ZCk7Ci0KLSAgICAgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OldpbGxTdXNwZW5kKSB7Ci0gICAg
ICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgbV9zdGF0ZSA9
IFN0YXRlOjpTdXNwZW5kZWQ7Ci0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgICAgIAotICAgICAgICB3aGlsZSAobV9zdGF0
ZSA9PSBTdGF0ZTo6U3VzcGVuZGVkKQotICAgICAgICAgICAgbV9zdGF0ZUNoYW5nZUNvbmRpdGlv
bi53YWl0KG1fc3RhdGVMb2NrKTsKLSAgICAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OlJ1
bm5pbmcpOwotICAgIH0pOwotfQotCi12b2lkIFN0b3JhZ2VNYW5hZ2VyOjpyZXN1bWUoKQotewot
ICAgIGlmICghbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIpCi0gICAgICAgIHJldHVybjsK
LQotICAgIExvY2tlcjxMb2NrPiBzdGF0ZUxvY2tlcihtX3N0YXRlTG9jayk7Ci0gICAgYXV0byBw
cmV2aW91c1N0YXRlID0gbV9zdGF0ZTsKLSAgICBtX3N0YXRlID0gU3RhdGU6OlJ1bm5pbmc7Ci0g
ICAgaWYgKHByZXZpb3VzU3RhdGUgPT0gU3RhdGU6OlN1c3BlbmRlZCkKLSAgICAgICAgbV9zdGF0
ZUNoYW5nZUNvbmRpdGlvbi5ub3RpZnlPbmUoKTsKLX0KLQotU3RvcmFnZU1hbmFnZXI6OlN0b3Jh
Z2VBcmVhKiBTdG9yYWdlTWFuYWdlcjo6ZmluZFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwgdWludDY0X3Qgc3RvcmFnZU1hcElEKSBjb25zdAotewotICAgIHN0ZDo6cGFp
cjxJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCB1aW50NjRfdD4gY29ubmVjdGlvbkFuZFN0b3Jh
Z2VNYXBJRFBhaXIoY29ubmVjdGlvbi51bmlxdWVJRCgpLCBzdG9yYWdlTWFwSUQpOwotCi0gICAg
aWYgKCFtX3N0b3JhZ2VBcmVhc0J5Q29ubmVjdGlvbi5pc1ZhbGlkS2V5KGNvbm5lY3Rpb25BbmRT
dG9yYWdlTWFwSURQYWlyKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4g
bV9zdG9yYWdlQXJlYXNCeUNvbm5lY3Rpb24uZ2V0KGNvbm5lY3Rpb25BbmRTdG9yYWdlTWFwSURQ
YWlyKTsKKyAgICBhdXRvKiBzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSA9IGdldE9yQ3JlYXRlU2Vz
c2lvblN0b3JhZ2VOYW1lc3BhY2Uoc3RvcmFnZU5hbWVzcGFjZUlEKTsKKyAgICByZXR1cm4gc2Vz
c2lvblN0b3JhZ2VOYW1lc3BhY2UtPmdldE9yQ3JlYXRlU3RvcmFnZUFyZWEoV1RGTW92ZShvcmln
aW5EYXRhKSkucHRyKCk7CiB9CiAKIFN0b3JhZ2VNYW5hZ2VyOjpMb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2UqIFN0b3JhZ2VNYW5hZ2VyOjpnZXRPckNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50
NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQpCkBAIC0xMDAwLDQgKzU5NywyMiBAQCBTdG9yYWdlTWFu
YWdlcjo6VHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKiBTdG9yYWdlTWFuYWdlcjo6Z2V0
T3JDcmVhdGVUcmFucwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKIH0KIAorU3RvcmFn
ZU1hbmFnZXI6OlNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKiBTdG9yYWdlTWFuYWdlcjo6Z2V0T3JD
cmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQp
Cit7CisgICAgaWYgKCFtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlcy5pc1ZhbGlkS2V5KHN0b3Jh
Z2VOYW1lc3BhY2VJRCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIG1f
c2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLmVuc3VyZShzdG9yYWdlTmFtZXNwYWNlSUQsIFtdIHsK
KyAgICAgICAgLy8gV2UgY3VycmVudGx5IGhhdmUgbm8gbGltaXQgb24gc2Vzc2lvbiBzdG9yYWdl
LgorICAgICAgICByZXR1cm4gU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2U6OmNyZWF0ZShzdGQ6Om51
bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpOworICAgIH0pLml0ZXJhdG9yLT52YWx1ZS5n
ZXQoKTsKK30KKwordm9pZCBTdG9yYWdlTWFuYWdlcjo6Y2xlYXJTdG9yYWdlTmFtZXNwYWNlcygp
Cit7CisgICAgbV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2VzLmNsZWFyKCk7CisgICAgbV90cmFuc2ll
bnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2VzLmNsZWFyKCk7CisgICAgbV9zZXNzaW9uU3RvcmFnZU5h
bWVzcGFjZXMuY2xlYXIoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIu
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdl
ci5oCmluZGV4IDYwYTI1ZTNkMWMzMTBhNWMwYjhmZWE0YWIxNDNlZWI3MGUxNWFjMjIuLjg4ODYz
NWY2MTExODQ1YzRhZjhhMWFmMmZhZTg2MTc4NzE0ZGM4OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5oCkBA
IC00MCw4OCArNDAsOTYgQEAgY2xhc3MgU2VjdXJpdHlPcmlnaW47CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCitjbGFzcyBMb2NhbFN0b3JhZ2VEYXRhYmFzZTsKIGNsYXNzIExvY2FsU3RvcmFnZURh
dGFiYXNlVHJhY2tlcjsKIGNsYXNzIFdlYlByb2Nlc3NQcm94eTsKIAotdXNpbmcgR2V0VmFsdWVz
Q2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBT
dHJpbmc+Jik+OwotCi1jbGFzcyBTdG9yYWdlTWFuYWdlciA6IHB1YmxpYyBJUEM6OkNvbm5lY3Rp
b246OldvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlciB7CitjbGFzcyBTdG9yYWdlTWFuYWdlciA6IHB1
YmxpYyBSZWZDb3VudGVkPFN0b3JhZ2VNYW5hZ2VyPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJl
ZjxTdG9yYWdlTWFuYWdlcj4gY3JlYXRlKFN0cmluZyYmIGxvY2FsU3RvcmFnZURpcmVjdG9yeSk7
CiAgICAgflN0b3JhZ2VNYW5hZ2VyKCk7CiAKICAgICB2b2lkIGNyZWF0ZVNlc3Npb25TdG9yYWdl
TmFtZXNwYWNlKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgdW5zaWduZWQgcXVvdGFJbkJ5
dGVzKTsKICAgICB2b2lkIGRlc3Ryb3lTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBz
dG9yYWdlTmFtZXNwYWNlSUQpOwotICAgIHZvaWQgYWRkQWxsb3dlZFNlc3Npb25TdG9yYWdlTmFt
ZXNwYWNlQ29ubmVjdGlvbih1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIElQQzo6Q29ubmVj
dGlvbiYpOwotICAgIHZvaWQgcmVtb3ZlQWxsb3dlZFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlQ29u
bmVjdGlvbih1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIElQQzo6Q29ubmVjdGlvbiYpOwog
ICAgIHZvaWQgY2xvbmVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBzdG9yYWdlTmFt
ZXNwYWNlSUQsIHVpbnQ2NF90IG5ld1N0b3JhZ2VOYW1lc3BhY2VJRCk7CiAKLSAgICB2b2lkIHBy
b2Nlc3NEaWRDbG9zZUNvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uJik7Ci0gICAgdm9pZCB3YWl0
VW50aWxUYXNrc0ZpbmlzaGVkKCk7Ci0gICAgdm9pZCBzdXNwZW5kKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7Ci0gICAgdm9pZCByZXN1bWUoKTsKLQotICAgIHZvaWQgZ2V0U2Vzc2lvblN0
b3JhZ2VPcmlnaW5zKEZ1bmN0aW9uPHZvaWQoSGFzaFNldDxXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGE+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICB2b2lkIGdldFNlc3Npb25TdG9y
YWdlT3JpZ2lucyhGdW5jdGlvbjx2b2lkKEhhc2hTZXQ8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhPiYmKT4mJik7CiAgICAgdm9pZCBkZWxldGVTZXNzaW9uU3RvcmFnZU9yaWdpbnMoRnVuY3Rp
b248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICB2b2lkIGRlbGV0ZVNlc3Npb25T
dG9yYWdlRW50cmllc0Zvck9yaWdpbnMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YT4mLCBGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOworICAgIHZv
aWQgZGVsZXRlU2Vzc2lvblN0b3JhZ2VFbnRyaWVzRm9yT3JpZ2lucyhjb25zdCBWZWN0b3I8V2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYsIEZ1bmN0aW9uPHZvaWQoKT4mJik7CiAKLSAgICB2
b2lkIGdldExvY2FsU3RvcmFnZU9yaWdpbnMoRnVuY3Rpb248dm9pZChIYXNoU2V0PFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpOwotICAgIHZvaWQg
ZGVsZXRlTG9jYWxTdG9yYWdlRW50cmllc0Zvck9yaWdpbihjb25zdCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGEmKTsKKyAgICB2b2lkIGdldExvY2FsU3RvcmFnZU9yaWdpbnMoRnVuY3Rpb248
dm9pZChIYXNoU2V0PFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mJik+JiYpOworICAgIHZv
aWQgZGVsZXRlTG9jYWxTdG9yYWdlT3JpZ2luc01vZGlmaWVkU2luY2UoV2FsbFRpbWUsIEZ1bmN0
aW9uPHZvaWQoKT4mJik7CisgICAgdm9pZCBkZWxldGVMb2NhbFN0b3JhZ2VFbnRyaWVzRm9yT3Jp
Z2lucyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYsIEZ1bmN0aW9u
PHZvaWQoKT4mJik7CisgICAgdm9pZCBnZXRMb2NhbFN0b3JhZ2VPcmlnaW5EZXRhaWxzKEZ1bmN0
aW9uPHZvaWQoVmVjdG9yPExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6T3JpZ2luRGV0YWls
cz4mJik+JiYpOworICAgIAorICAgIHZvaWQgY2xlYXJTdG9yYWdlTmFtZXNwYWNlcygpOwogCi0g
ICAgdm9pZCBkZWxldGVMb2NhbFN0b3JhZ2VPcmlnaW5zTW9kaWZpZWRTaW5jZShXYWxsVGltZSwg
RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICB2b2lkIGRlbGV0ZUxv
Y2FsU3RvcmFnZUVudHJpZXNGb3JPcmlnaW5zKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGE+JiwgRnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAg
ICBjbGFzcyBMb2NhbFN0b3JhZ2VOYW1lc3BhY2U7CisgICAgY2xhc3MgU3RvcmFnZUFyZWEgOiBw
dWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U3RvcmFnZUFyZWE+IHsKKyAgICBwdWJsaWM6Cisg
ICAgICAgIHN0YXRpYyBSZWY8U3RvcmFnZUFyZWE+IGNyZWF0ZShMb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2UqLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCB1bnNpZ25lZCBxdW90YUlu
Qnl0ZXMpOworICAgICAgICB+U3RvcmFnZUFyZWEoKTsKIAotICAgIHZvaWQgZ2V0TG9jYWxTdG9y
YWdlT3JpZ2luRGV0YWlscyhGdW5jdGlvbjx2b2lkKFZlY3RvcjxMb2NhbFN0b3JhZ2VEYXRhYmFz
ZVRyYWNrZXI6Ok9yaWdpbkRldGFpbHM+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICAg
ICAgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbigpIGNv
bnN0IHsgcmV0dXJuIG1fc2VjdXJpdHlPcmlnaW47IH0KKyAgICAgICAgdWludDY0X3QgaWRlbnRp
ZmllcigpIHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogCi0gICAgdm9pZCBkaWRSZWNlaXZlTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKLSAgICB2b2lkIGRpZFJlY2Vp
dmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1
ZV9wdHI8SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKTsKKyAgICAgICAgdm9pZCBhZGRMaXN0
ZW5lcihJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEKTsKKyAgICAgICAgdm9pZCByZW1vdmVMaXN0
ZW5lcihJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEKTsKKyAgICAgICAgYm9vbCBoYXNMaXN0ZW5l
cihJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGNvbm5lY3Rpb25JRCkgeyByZXR1cm4gbV9ldmVu
dExpc3RlbmVycy5jb250YWlucyhjb25uZWN0aW9uSUQpOyB9CiAKLXByaXZhdGU6Ci0gICAgZXhw
bGljaXQgU3RvcmFnZU1hbmFnZXIoU3RyaW5nJiYgbG9jYWxTdG9yYWdlRGlyZWN0b3J5KTsKKyAg
ICAgICAgUmVmPFN0b3JhZ2VBcmVhPiBjbG9uZSgpIGNvbnN0OwogCi0gICAgLy8gTWVzc2FnZSBo
YW5kbGVycy4KLSAgICB2b2lkIGNyZWF0ZUxvY2FsU3RvcmFnZU1hcChJUEM6OkNvbm5lY3Rpb24m
LCB1aW50NjRfdCBzdG9yYWdlTWFwSUQsIHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYpOwotICAgIHZvaWQgY3JlYXRlVHJhbnNpZW50TG9j
YWxTdG9yYWdlTWFwKElQQzo6Q29ubmVjdGlvbiYsIHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCwgdWlu
dDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiB0
b3BMZXZlbE9yaWdpbkRhdGEsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmKTsKLSAgICB2
b2lkIGNyZWF0ZVNlc3Npb25TdG9yYWdlTWFwKElQQzo6Q29ubmVjdGlvbiYsIHVpbnQ2NF90IHN0
b3JhZ2VNYXBJRCwgdWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGEmJik7Ci0gICAgdm9pZCBkZXN0cm95U3RvcmFnZU1hcChJUEM6OkNvbm5lY3Rp
b24mLCB1aW50NjRfdCBzdG9yYWdlTWFwSUQpOworICAgICAgICB2b2lkIHNldEl0ZW0oSVBDOjpD
b25uZWN0aW9uOjpVbmlxdWVJRCBzb3VyY2VDb25uZWN0aW9uLCB1aW50NjRfdCBzb3VyY2VTdG9y
YWdlQXJlYUlELCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgY29uc3Qg
U3RyaW5nJiB1cmxTdHJpbmcsIGJvb2wmIHF1b3RhRXhjZXB0aW9uKTsKKyAgICAgICAgdm9pZCBy
ZW1vdmVJdGVtKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgc291cmNlQ29ubmVjdGlvbiwgdWlu
dDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmlu
ZyYgdXJsU3RyaW5nKTsKKyAgICAgICAgdm9pZCBjbGVhcihJUEM6OkNvbm5lY3Rpb246OlVuaXF1
ZUlEIHNvdXJjZUNvbm5lY3Rpb24sIHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIGNvbnN0
IFN0cmluZyYgdXJsU3RyaW5nKTsKIAotICAgIHZvaWQgZ2V0VmFsdWVzKElQQzo6Q29ubmVjdGlv
biYsIHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCwgdWludDY0X3Qgc3RvcmFnZU1hcFNlZWQsIEdldFZh
bHVlc0NhbGxiYWNrJiYpOwotICAgIHZvaWQgcHJld2FybShJUEM6OkNvbm5lY3Rpb24mLCB1aW50
NjRfdCBzdG9yYWdlTWFwSUQpOwotICAgIHZvaWQgc2V0SXRlbShJUEM6OkNvbm5lY3Rpb24mLCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgdWludDY0X3Qgc3RvcmFnZU1hcElELCB1aW50
NjRfdCBzb3VyY2VTdG9yYWdlQXJlYUlELCB1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCwgY29uc3Qg
U3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5n
KTsKLSAgICB2b2lkIHNldEl0ZW1zKElQQzo6Q29ubmVjdGlvbiYsIHVpbnQ2NF90IHN0b3JhZ2VN
YXBJRCwgY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIGl0ZW1zKTsKLSAgICB2b2lkIHJl
bW92ZUl0ZW0oSVBDOjpDb25uZWN0aW9uJiwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYs
IHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCwgdWludDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwgdWlu
dDY0X3Qgc3RvcmFnZU1hcFNlZWQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHVy
bFN0cmluZyk7Ci0gICAgdm9pZCBjbGVhcihJUEM6OkNvbm5lY3Rpb24mLCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEmJiwgdWludDY0X3Qgc3RvcmFnZU1hcElELCB1aW50NjRfdCBzb3VyY2VT
dG9yYWdlQXJlYUlELCB1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCwgY29uc3QgU3RyaW5nJiB1cmxT
dHJpbmcpOworICAgICAgICBjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgaXRlbXMoKSBj
b25zdDsKKyAgICAgICAgdm9pZCBjbGVhcigpOwogCi0gICAgY2xhc3MgU3RvcmFnZUFyZWE7Ci0g
ICAgU3RvcmFnZUFyZWEqIGZpbmRTdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb24mLCB1aW50NjRf
dCkgY29uc3Q7CisgICAgICAgIGJvb2wgaXNFcGhlbWVyYWwoKSBjb25zdCB7IHJldHVybiAhbV9s
b2NhbFN0b3JhZ2VOYW1lc3BhY2U7IH0KIAotICAgIGNsYXNzIExvY2FsU3RvcmFnZU5hbWVzcGFj
ZTsKLSAgICBMb2NhbFN0b3JhZ2VOYW1lc3BhY2UqIGdldE9yQ3JlYXRlTG9jYWxTdG9yYWdlTmFt
ZXNwYWNlKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCk7CisgICAgICAgIHZvaWQgb3BlbkRh
dGFiYXNlQW5kSW1wb3J0SXRlbXNJZk5lZWRlZCgpIGNvbnN0OwogCi0gICAgY2xhc3MgVHJhbnNp
ZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlOwotICAgIFRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVz
cGFjZSogZ2V0T3JDcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3Qg
c3RvcmFnZU5hbWVzcGFjZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiB0b3BMZXZl
bE9yaWdpbik7CisgICAgICAgIHZvaWQgc2V0V29ya1F1ZXVlKFJlZlB0cjxXb3JrUXVldWU+JiYg
cXVldWUpIHsgbV9xdWV1ZSA9IFdURk1vdmUocXVldWUpOyB9CiAKLSAgICBSZWY8V29ya1F1ZXVl
PiBtX3F1ZXVlOworICAgIHByaXZhdGU6CisgICAgICAgIGV4cGxpY2l0IFN0b3JhZ2VBcmVhKExv
Y2FsU3RvcmFnZU5hbWVzcGFjZSosIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYs
IHVuc2lnbmVkIHF1b3RhSW5CeXRlcyk7CiAKLSAgICBSZWZQdHI8TG9jYWxTdG9yYWdlRGF0YWJh
c2VUcmFja2VyPiBtX2xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjsKKyAgICAgICAgdm9pZCBk
aXNwYXRjaEV2ZW50cyhJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIHNvdXJjZUNvbm5lY3Rpb24s
IHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBT
dHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBjb25zdCBTdHJpbmcmIHVy
bFN0cmluZykgY29uc3Q7CisKKyAgICAgICAgLy8gV2lsbCBiZSBudWxsIGlmIHRoZSBzdG9yYWdl
IGFyZWEgYmVsb25ncyB0byBhIHNlc3Npb24gc3RvcmFnZSBuYW1lc3BhY2Ugb3IgdGhlIHN0b3Jh
Z2UgYXJlYSBpcyBpbiBhbiBlcGhlbWVyYWwgc2Vzc2lvbi4KKyAgICAgICAgV2Vha1B0cjxMb2Nh
bFN0b3JhZ2VOYW1lc3BhY2U+IG1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlOworICAgICAgICBtdXRh
YmxlIFJlZlB0cjxMb2NhbFN0b3JhZ2VEYXRhYmFzZT4gbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZTsK
KyAgICAgICAgbXV0YWJsZSBib29sIG1fZGlkSW1wb3J0SXRlbXNGcm9tRGF0YWJhc2UgeyBmYWxz
ZSB9OworCisgICAgICAgIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBtX3NlY3VyaXR5T3Jp
Z2luOworICAgICAgICB1bnNpZ25lZCBtX3F1b3RhSW5CeXRlczsKKworICAgICAgICBSZWZQdHI8
V2ViQ29yZTo6U3RvcmFnZU1hcD4gbV9zdG9yYWdlTWFwOworICAgICAgICBIYXNoU2V0PElQQzo6
Q29ubmVjdGlvbjo6VW5pcXVlSUQ+IG1fZXZlbnRMaXN0ZW5lcnM7CisKKyAgICAgICAgdWludDY0
X3QgbV9pZGVudGlmaWVyOworICAgICAgICBSZWZQdHI8V29ya1F1ZXVlPiBtX3F1ZXVlOworICAg
IH07CisKKyAgICBTdG9yYWdlQXJlYSogY3JlYXRlTG9jYWxTdG9yYWdlQXJlYSh1aW50NjRfdCBz
dG9yYWdlTmFtZXNwYWNlSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmKTsKKyAgICBT
dG9yYWdlQXJlYSogY3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlQXJlYSh1aW50NjRfdCBzdG9y
YWdlTmFtZXNwYWNlSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEmJik7CisgICAgU3RvcmFnZUFyZWEqIGNyZWF0ZVNlc3Npb25TdG9y
YWdlQXJlYSh1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSYmKTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBTdG9yYWdlTWFuYWdlcihTdHJp
bmcmJiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpOworCisgICAgTG9jYWxTdG9yYWdlTmFtZXNwYWNl
KiBnZXRPckNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBzdG9yYWdlTmFtZXNw
YWNlSUQpOwogICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxMb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2U+PiBtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZXM7CisgICAgUmVmUHRyPExvY2FsU3RvcmFnZURh
dGFiYXNlVHJhY2tlcj4gbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI7CiAKKyAgICBjbGFz
cyBUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2U7CisgICAgVHJhbnNpZW50TG9jYWxTdG9y
YWdlTmFtZXNwYWNlKiBnZXRPckNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSh1
aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYm
IHRvcExldmVsT3JpZ2luKTsKICAgICBIYXNoTWFwPHN0ZDo6cGFpcjx1aW50NjRfdCwgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiwgUmVmUHRyPFRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVz
cGFjZT4+IG1fdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlczsKIAogICAgIGNsYXNzIFNl
c3Npb25TdG9yYWdlTmFtZXNwYWNlOworICAgIFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKiBnZXRP
ckNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJ
RCk7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFNlc3Npb25TdG9yYWdlTmFtZXNwYWNl
Pj4gbV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXM7Ci0KLSAgICBIYXNoTWFwPHN0ZDo6cGFpcjxJ
UEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCB1aW50NjRfdD4sIFJlZlB0cjxTdG9yYWdlQXJlYT4+
IG1fc3RvcmFnZUFyZWFzQnlDb25uZWN0aW9uOwotICAgIEhhc2hTZXQ8SVBDOjpDb25uZWN0aW9u
OjpVbmlxdWVJRD4gbV9jb25uZWN0aW9uczsKLQotICAgIGVudW0gY2xhc3MgU3RhdGUgewotICAg
ICAgICBSdW5uaW5nLAotICAgICAgICBXaWxsU3VzcGVuZCwKLSAgICAgICAgU3VzcGVuZGVkCi0g
ICAgfTsKLSAgICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6OlJ1bm5pbmcgfTsKLSAgICBMb2NrIG1f
c3RhdGVMb2NrOwotICAgIENvbmRpdGlvbiBtX3N0YXRlQ2hhbmdlQ29uZGl0aW9uOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIubWVzc2FnZXMuaW4K
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc4YmI2YWIyNDAyOGEyNTNhYTExODU0MjAx
ZDZhMTVkMjVjZTJjNmYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5h
Z2VyLm1lc3NhZ2VzLmluCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotIyBDb3B5cmln
aHQgKEMpIDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMK
LSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJyBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SCi0jIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLW1lc3NhZ2VzIC0+IFN0b3JhZ2VN
YW5hZ2VyIHsKLSAgICBDcmVhdGVMb2NhbFN0b3JhZ2VNYXAodWludDY0X3Qgc3RvcmFnZU1hcElE
LCB1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEgc2VjdXJpdHlPcmlnaW5EYXRhKSBXYW50c0Nvbm5lY3Rpb24KLSAgICBDcmVhdGVU
cmFuc2llbnRMb2NhbFN0b3JhZ2VNYXAodWludDY0X3Qgc3RvcmFnZU1hcElELCB1aW50NjRfdCBz
dG9yYWdlTmFtZXNwYWNlSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgdG9w
TGV2ZWxTZWN1cml0eU9yaWdpbkRhdGEsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEgc2VjdXJpdHlPcmlnaW5EYXRhKSBXYW50c0Nvbm5lY3Rpb24KLSAgICBDcmVhdGVTZXNzaW9u
U3RvcmFnZU1hcCh1aW50NjRfdCBzdG9yYWdlTWFwSUQsIHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3Bh
Y2VJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBzZWN1cml0eU9yaWdpbkRh
dGEpIFdhbnRzQ29ubmVjdGlvbgotICAgIERlc3Ryb3lTdG9yYWdlTWFwKHVpbnQ2NF90IHN0b3Jh
Z2VNYXBJRCkgV2FudHNDb25uZWN0aW9uCi0KLSAgICBQcmV3YXJtKHVpbnQ2NF90IHN0b3JhZ2VN
YXBJRCkgV2FudHNDb25uZWN0aW9uCi0gICAgR2V0VmFsdWVzKHVpbnQ2NF90IHN0b3JhZ2VNYXBJ
RCwgdWludDY0X3Qgc3RvcmFnZU1hcFNlZWQpIC0+IChIYXNoTWFwPFN0cmluZywgU3RyaW5nPiB2
YWx1ZXMpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgotCi0gICAgU2V0SXRlbShzdHJ1Y3Qg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHNlY3VyaXR5T3JpZ2luRGF0YSwgdWludDY0X3Qg
c3RvcmFnZU1hcElELCB1aW50NjRfdCBzb3VyY2VTdG9yYWdlQXJlYUlELCB1aW50NjRfdCBzdG9y
YWdlTWFwU2VlZCwgU3RyaW5nIGtleSwgU3RyaW5nIHZhbHVlLCBTdHJpbmcgdXJsU3RyaW5nKSBX
YW50c0Nvbm5lY3Rpb24KLSAgICBTZXRJdGVtcyh1aW50NjRfdCBzdG9yYWdlTWFwSUQsIEhhc2hN
YXA8U3RyaW5nLCBTdHJpbmc+IGl0ZW1zKSBXYW50c0Nvbm5lY3Rpb24KLSAgICBSZW1vdmVJdGVt
KHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgc2VjdXJpdHlPcmlnaW5EYXRhLCB1
aW50NjRfdCBzdG9yYWdlTWFwSUQsIHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIHVpbnQ2
NF90IHN0b3JhZ2VNYXBTZWVkLCBTdHJpbmcga2V5LCBTdHJpbmcgdXJsU3RyaW5nKSBXYW50c0Nv
bm5lY3Rpb24KLSAgICBDbGVhcihzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHNl
Y3VyaXR5T3JpZ2luRGF0YSwgdWludDY0X3Qgc3RvcmFnZU1hcElELCB1aW50NjRfdCBzb3VyY2VT
dG9yYWdlQXJlYUlELCB1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCwgU3RyaW5nIHVybFN0cmluZykg
V2FudHNDb25uZWN0aW9uCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0LmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
ZWY0OGExNjQ3OGYxNTc1OTUwY2JhYWE3NTBkZTJjZDAyNTMyZDRjCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2Vy
U2V0LmNwcApAQCAtMCwwICsxLDM2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTdG9yYWdlTWFu
YWdlclNldC5oIgorCisjaW5jbHVkZSAiU3RvcmFnZUFyZWFNYXBNZXNzYWdlcy5oIgorI2luY2x1
ZGUgIlN0b3JhZ2VNYW5hZ2VyU2V0TWVzc2FnZXMuaCIKKyNpbmNsdWRlIDx3dGYvdGhyZWFkcy9C
aW5hcnlTZW1hcGhvcmUuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NvbnN0IHVpbnQ2NF90
IGludmFsaWRTdG9yYWdlQXJlYUlEID0gMDsKKworUmVmPFN0b3JhZ2VNYW5hZ2VyU2V0PiBTdG9y
YWdlTWFuYWdlclNldDo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9y
YWdlTWFuYWdlclNldCk7Cit9CisKK1N0b3JhZ2VNYW5hZ2VyU2V0OjpTdG9yYWdlTWFuYWdlclNl
dCgpCisgICAgOiBtX3F1ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0Lldl
YlN0b3JhZ2UiKSkKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworfQorCitTdG9y
YWdlTWFuYWdlclNldDo6flN0b3JhZ2VNYW5hZ2VyU2V0KCkKK3sKKyAgICBBU1NFUlQoUnVuTG9v
cDo6aXNNYWluKCkpOworfQorCit2b2lkIFN0b3JhZ2VNYW5hZ2VyU2V0OjphZGQoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZURpcmVjdG9yeSwgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnlIYW5kbGUpCit7Cisg
ICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBhdXRvW2l0ZXIsIGlzTmV3RW50cnld
ID0gbV9zdG9yYWdlTWFuYWdlclBhdGhzLmFkZChzZXNzaW9uSUQsIGxvY2FsU3RvcmFnZURpcmVj
dG9yeSk7CisgICAgaWYgKGlzTmV3RW50cnkpIHsKKyAgICAgICAgaWYgKCFzZXNzaW9uSUQuaXNF
cGhlbWVyYWwoKSkKKyAgICAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5l
bnRseShsb2NhbFN0b3JhZ2VEaXJlY3RvcnlIYW5kbGUpOworICAgICAgICBtX3F1ZXVlLT5kaXNw
YXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzZXNzaW9uSUQsIGRp
cmVjdG9yeSA9IGxvY2FsU3RvcmFnZURpcmVjdG9yeS5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxl
IHsKKyAgICAgICAgICAgIG1fc3RvcmFnZU1hbmFnZXJzLmVuc3VyZShzZXNzaW9uSUQsIFtkaXJl
Y3RvcnldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFN0b3JhZ2VNYW5hZ2Vy
OjpjcmVhdGUoV1RGTW92ZShkaXJlY3RvcnkpKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9
KTsKKyAgICB9Cit9CisKK3ZvaWQgU3RvcmFnZU1hbmFnZXJTZXQ6OnJlbW92ZShQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBp
ZiAobV9zdG9yYWdlTWFuYWdlclBhdGhzLnJlbW92ZShzZXNzaW9uSUQpKSB7CisgICAgICAgIG1f
cXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHNl
c3Npb25JRF0oKSB7CisgICAgICAgICAgICBtX3N0b3JhZ2VNYW5hZ2Vycy5yZW1vdmUoc2Vzc2lv
bklEKTsKKyAgICAgICAgfSk7CisgICAgfQorfQorCitib29sIFN0b3JhZ2VNYW5hZ2VyU2V0Ojpj
b250YWlucyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCit7CisgICAgcmV0dXJuIG1fc3RvcmFn
ZU1hbmFnZXJQYXRocy5jb250YWlucyhzZXNzaW9uSUQpOworfQorCit2b2lkIFN0b3JhZ2VNYW5h
Z2VyU2V0OjphZGRDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikgCit7Cisg
ICAgYXV0byBjb25uZWN0aW9uSUQgPSBjb25uZWN0aW9uLnVuaXF1ZUlEKCk7CisgICAgQVNTRVJU
KCFtX2Nvbm5lY3Rpb25zLmNvbnRhaW5zKGNvbm5lY3Rpb25JRCkpOworICAgIGlmIChtX2Nvbm5l
Y3Rpb25zLmFkZChjb25uZWN0aW9uSUQpLmlzTmV3RW50cnkpCisgICAgICAgIGNvbm5lY3Rpb24u
YWRkV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdlclNldDo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3F1ZXVlLmdldCgpLCB0aGlzKTsKK30KKwordm9pZCBT
dG9yYWdlTWFuYWdlclNldDo6cmVtb3ZlQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24pCit7CisgICAgYXV0byBjb25uZWN0aW9uSUQgPSBjb25uZWN0aW9uLnVuaXF1ZUlEKCk7
CisgICAgQVNTRVJUKG1fY29ubmVjdGlvbnMuY29udGFpbnMoY29ubmVjdGlvbklEKSk7CisgICAg
bV9jb25uZWN0aW9ucy5yZW1vdmUoY29ubmVjdGlvbklEKTsKKyAgICBjb25uZWN0aW9uLnJlbW92
ZVdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXJTZXQ6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSk7CisKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb25uZWN0aW9uSURdKCkgeworICAgICAgICBm
b3IgKGF1dG8mIHN0b3JhZ2VBcmVhIDogbV9zdG9yYWdlQXJlYXMudmFsdWVzKCkpCisgICAgICAg
ICAgICBzdG9yYWdlQXJlYS0+cmVtb3ZlTGlzdGVuZXIoY29ubmVjdGlvbklEKTsKKyAgICB9KTsK
K30KKwordm9pZCBTdG9yYWdlTWFuYWdlclNldDo6d2FpdFVudGlsVGFza3NGaW5pc2hlZCgpCit7
CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBCaW5hcnlTZW1hcGhvcmUgc2Vt
YXBob3JlOworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCAmc2VtYXBob3JlXSB7CisgICAg
ICAgIGZvciAoYXV0byYgW3Nlc3Npb25JRCwgc3RvcmFnZU1hbmFnZXJdIDogbV9zdG9yYWdlTWFu
YWdlcnMpCisgICAgICAgICAgICBzdG9yYWdlTWFuYWdlci0+Y2xlYXJTdG9yYWdlTmFtZXNwYWNl
cygpOworCisgICAgICAgIG1fc3RvcmFnZU1hbmFnZXJzLmNsZWFyKCk7CisgICAgICAgIG1fc3Rv
cmFnZUFyZWFzLmNsZWFyKCk7CisKKyAgICAgICAgc2VtYXBob3JlLnNpZ25hbCgpOworICAgIH0p
OworICAgIHNlbWFwaG9yZS53YWl0KCk7Cit9CisKK3ZvaWQgU3RvcmFnZU1hbmFnZXJTZXQ6OnN1
c3BlbmQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorewor
ICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgQ29tcGxldGlvbkhhbmRsZXJDYWxs
aW5nU2NvcGUgY29tcGxldGlvbkhhbmRsZXJDYWxsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOworICAgIExvY2tlcjxMb2NrPiBzdGF0ZUxvY2tlcihtX3N0YXRlTG9jayk7CisgICAgaWYg
KG1fc3RhdGUgIT0gU3RhdGU6OlJ1bm5pbmcpCisgICAgICAgIHJldHVybjsKKyAgICBtX3N0YXRl
ID0gU3RhdGU6OldpbGxTdXNwZW5kOworCisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBjb21wbGV0
aW9uSGFuZGxlckNhbGxlci5yZWxlYXNlKCldICgpIG11dGFibGUgeworICAgICAgICBMb2NrZXI8
TG9jaz4gc3RhdGVMb2NrZXIobV9zdGF0ZUxvY2spOworICAgICAgICBBU1NFUlQobV9zdGF0ZSAh
PSBTdGF0ZTo6U3VzcGVuZGVkKTsKKworICAgICAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6V2ls
bFN1c3BlbmQpIHsKKyAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICBtX3N0YXRlID0gU3RhdGU6OlN1c3BlbmRlZDsKKyAgICAgICAgUnVuTG9vcDo6bWFp
bigpLmRpc3BhdGNoKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKworICAgICAgICB3aGls
ZSAobV9zdGF0ZSA9PSBTdGF0ZTo6U3VzcGVuZGVkKQorICAgICAgICAgICAgbV9zdGF0ZUNoYW5n
ZUNvbmRpdGlvbi53YWl0KG1fc3RhdGVMb2NrKTsKKyAgICAgICAgQVNTRVJUKG1fc3RhdGUgPT0g
U3RhdGU6OlJ1bm5pbmcpOworICAgIH0pOworfQorCit2b2lkIFN0b3JhZ2VNYW5hZ2VyU2V0Ojpy
ZXN1bWUoKQoreworICAgIExvY2tlcjxMb2NrPiBzdGF0ZUxvY2tlcihtX3N0YXRlTG9jayk7Cisg
ICAgYXV0byBwcmV2aW91c1N0YXRlID0gbV9zdGF0ZTsKKyAgICBtX3N0YXRlID0gU3RhdGU6OlJ1
bm5pbmc7CisgICAgaWYgKHByZXZpb3VzU3RhdGUgPT0gU3RhdGU6OlN1c3BlbmRlZCkKKyAgICAg
ICAgbV9zdGF0ZUNoYW5nZUNvbmRpdGlvbi5ub3RpZnlPbmUoKTsKK30KKwordm9pZCBTdG9yYWdl
TWFuYWdlclNldDo6Z2V0U2Vzc2lvblN0b3JhZ2VPcmlnaW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0PFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgbV9xdWV1ZS0+ZGlzcGF0
Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc2Vzc2lvbklELCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewor
ICAgICAgICBhdXRvKiBzdG9yYWdlTWFuYWdlciA9IG1fc3RvcmFnZU1hbmFnZXJzLmdldChzZXNz
aW9uSUQpOworICAgICAgICBBU1NFUlQoc3RvcmFnZU1hbmFnZXIpOworCisgICAgICAgIHN0b3Jh
Z2VNYW5hZ2VyLT5nZXRTZXNzaW9uU3RvcmFnZU9yaWdpbnMoV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOworICAgIH0pOworfQorCit2b2lkIFN0b3JhZ2VNYW5hZ2VyU2V0OjpkZWxldGVTZXNz
aW9uU3RvcmFnZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzZXNzaW9uSUQsIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAg
IGF1dG8qIHN0b3JhZ2VNYW5hZ2VyID0gbV9zdG9yYWdlTWFuYWdlcnMuZ2V0KHNlc3Npb25JRCk7
CisgICAgICAgIEFTU0VSVChzdG9yYWdlTWFuYWdlcik7CisKKyAgICAgICAgc3RvcmFnZU1hbmFn
ZXItPmRlbGV0ZVNlc3Npb25TdG9yYWdlT3JpZ2lucyhXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CisgICAgfSk7Cit9CisKK3ZvaWQgU3RvcmFnZU1hbmFnZXJTZXQ6OmRlbGV0ZVNlc3Npb25T
dG9yYWdlRm9yT3JpZ2lucyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiBvcmlnaW5EYXRhcywgRGVsZXRlQ2FsbGJhY2sm
JiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzZXNzaW9uSUQsIGNvcGllZE9yaWdpbnMgPSBj
cm9zc1RocmVhZENvcHkob3JpZ2luRGF0YXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICBhdXRvKiBzdG9yYWdlTWFu
YWdlciA9IG1fc3RvcmFnZU1hbmFnZXJzLmdldChzZXNzaW9uSUQpOworICAgICAgICBBU1NFUlQo
c3RvcmFnZU1hbmFnZXIpOworCisgICAgICAgIHN0b3JhZ2VNYW5hZ2VyLT5kZWxldGVTZXNzaW9u
U3RvcmFnZUVudHJpZXNGb3JPcmlnaW5zKGNvcGllZE9yaWdpbnMsIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKKyAgICB9KTsKK30KKwordm9pZCBTdG9yYWdlTWFuYWdlclNldDo6Z2V0TG9j
YWxTdG9yYWdlT3JpZ2lucyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIEdldE9yaWdpbnNDYWxs
YmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHNlc3Npb25JRCwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAg
YXV0byogc3RvcmFnZU1hbmFnZXIgPSBtX3N0b3JhZ2VNYW5hZ2Vycy5nZXQoc2Vzc2lvbklEKTsK
KyAgICAgICAgQVNTRVJUKHN0b3JhZ2VNYW5hZ2VyKTsKKworICAgICAgICBzdG9yYWdlTWFuYWdl
ci0+Z2V0TG9jYWxTdG9yYWdlT3JpZ2lucyhXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cisg
ICAgfSk7Cit9CisKK3ZvaWQgU3RvcmFnZU1hbmFnZXJTZXQ6OmRlbGV0ZUxvY2FsU3RvcmFnZU1v
ZGlmaWVkU2luY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXYWxsVGltZSB0aW1lLCBEZWxl
dGVDYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIG1fcXVldWUtPmRpc3BhdGNo
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHNlc3Npb25JRCwgdGltZSwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxl
IHsKKyAgICAgICAgYXV0byogc3RvcmFnZU1hbmFnZXIgPSBtX3N0b3JhZ2VNYW5hZ2Vycy5nZXQo
c2Vzc2lvbklEKTsKKyAgICAgICAgQVNTRVJUKHN0b3JhZ2VNYW5hZ2VyKTsKKworICAgICAgICBz
dG9yYWdlTWFuYWdlci0+ZGVsZXRlTG9jYWxTdG9yYWdlT3JpZ2luc01vZGlmaWVkU2luY2UodGlt
ZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIH0pOworfQorCit2b2lkIFN0b3Jh
Z2VNYW5hZ2VyU2V0OjpkZWxldGVMb2NhbFN0b3JhZ2VGb3JPcmlnaW5zKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mIG9y
aWdpbkRhdGFzLCBEZWxldGVDYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIG1f
cXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHNl
c3Npb25JRCwgY29waWVkT3JpZ2lucyA9IGNyb3NzVGhyZWFkQ29weShvcmlnaW5EYXRhcyksIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7
CisgICAgICAgIGF1dG8qIHN0b3JhZ2VNYW5hZ2VyID0gbV9zdG9yYWdlTWFuYWdlcnMuZ2V0KHNl
c3Npb25JRCk7CisgICAgICAgIEFTU0VSVChzdG9yYWdlTWFuYWdlcik7CisKKyAgICAgICAgc3Rv
cmFnZU1hbmFnZXItPmRlbGV0ZUxvY2FsU3RvcmFnZUVudHJpZXNGb3JPcmlnaW5zKGNvcGllZE9y
aWdpbnMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICB9KTsKK30KKwordm9pZCBT
dG9yYWdlTWFuYWdlclNldDo6Z2V0TG9jYWxTdG9yYWdlT3JpZ2luRGV0YWlscyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPExvY2FsU3RvcmFn
ZURhdGFiYXNlVHJhY2tlcjo6T3JpZ2luRGV0YWlscz4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit7CisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgc2Vzc2lvbklELCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICBhdXRvKiBzdG9yYWdlTWFuYWdlciA9IG1f
c3RvcmFnZU1hbmFnZXJzLmdldChzZXNzaW9uSUQpOworICAgICAgICBBU1NFUlQoc3RvcmFnZU1h
bmFnZXIpOworCisgICAgICAgIHN0b3JhZ2VNYW5hZ2VyLT5nZXRMb2NhbFN0b3JhZ2VPcmlnaW5E
ZXRhaWxzKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICB9KTsKK30KKwordm9pZCBT
dG9yYWdlTWFuYWdlclNldDo6Y29ubmVjdFRvTG9jYWxTdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3Qgc3RvcmFn
ZU5hbWVzcGFjZUlELCBTZWN1cml0eU9yaWdpbkRhdGEmJiBzZWN1cml0eU9yaWdpbkRhdGEsIENv
bm5lY3RUb1N0b3JhZ2VBcmVhQ2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBB
U1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIGF1dG8qIHN0b3JhZ2VNYW5hZ2VyID0g
bV9zdG9yYWdlTWFuYWdlcnMuZ2V0KHNlc3Npb25JRCk7CisgICAgQVNTRVJUKHN0b3JhZ2VNYW5h
Z2VyKTsKKyAgICBpZiAoIXN0b3JhZ2VNYW5hZ2VyKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKGludmFsaWRTdG9yYWdlQXJlYUlEKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGF1dG8qIHN0b3JhZ2VBcmVhID0gc3RvcmFnZU1hbmFnZXItPmNyZWF0ZUxvY2FsU3RvcmFnZUFy
ZWEoc3RvcmFnZU5hbWVzcGFjZUlELCBXVEZNb3ZlKHNlY3VyaXR5T3JpZ2luRGF0YSkpOworICAg
IGF1dG8gc3RvcmFnZUFyZWFJRCA9IHN0b3JhZ2VBcmVhLT5pZGVudGlmaWVyKCk7CisgICAgYXV0
b1tpdGVyLCBpc05ld0VudHJ5XSA9IG1fc3RvcmFnZUFyZWFzLmFkZChzdG9yYWdlQXJlYUlELCBu
dWxscHRyKTsKKyAgICBpZiAoaXNOZXdFbnRyeSkgeworICAgICAgICBzdG9yYWdlQXJlYS0+c2V0
V29ya1F1ZXVlKG1fcXVldWUucHRyKCkpOworICAgICAgICBpdGVyLT52YWx1ZSA9IHN0b3JhZ2VB
cmVhOworICAgIH0gZWxzZQorICAgICAgICBBU1NFUlQoc3RvcmFnZUFyZWEgPT0gaXRlci0+dmFs
dWUpOworCisgICAgY29tcGxldGlvbkhhbmRsZXIoc3RvcmFnZUFyZWFJRCk7CisgICAgCisgICAg
c3RvcmFnZUFyZWEtPmFkZExpc3RlbmVyKGNvbm5lY3Rpb24udW5pcXVlSUQoKSk7Cit9CisKK3Zv
aWQgU3RvcmFnZU1hbmFnZXJTZXQ6OmNvbm5lY3RUb1RyYW5zaWVudExvY2FsU3RvcmFnZUFyZWEo
SVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVp
bnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wTGV2ZWxP
cmlnaW5EYXRhLCBTZWN1cml0eU9yaWdpbkRhdGEmJiBvcmlnaW5EYXRhLCBDb25uZWN0VG9TdG9y
YWdlQXJlYUNhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJUKCFSdW5M
b29wOjppc01haW4oKSk7CisKKyAgICBhdXRvKiBzdG9yYWdlTWFuYWdlciA9IG1fc3RvcmFnZU1h
bmFnZXJzLmdldChzZXNzaW9uSUQpOworICAgIEFTU0VSVChzdG9yYWdlTWFuYWdlcik7CisgICAg
aWYgKCFzdG9yYWdlTWFuYWdlcikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihpbnZhbGlk
U3RvcmFnZUFyZWFJRCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvKiBzdG9y
YWdlQXJlYSA9IHN0b3JhZ2VNYW5hZ2VyLT5jcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVh
KHN0b3JhZ2VOYW1lc3BhY2VJRCwgV1RGTW92ZSh0b3BMZXZlbE9yaWdpbkRhdGEpLCBXVEZNb3Zl
KG9yaWdpbkRhdGEpKTsKKyAgICBhdXRvIHN0b3JhZ2VBcmVhSUQgPSBzdG9yYWdlQXJlYS0+aWRl
bnRpZmllcigpOworICAgIGF1dG9baXRlciwgaXNOZXdFbnRyeV0gPSBtX3N0b3JhZ2VBcmVhcy5h
ZGQoc3RvcmFnZUFyZWFJRCwgbnVsbHB0cik7CisgICAgaWYgKGlzTmV3RW50cnkpCisgICAgICAg
IGl0ZXItPnZhbHVlID0gc3RvcmFnZUFyZWE7CisgICAgZWxzZQorICAgICAgICBBU1NFUlQoc3Rv
cmFnZUFyZWEgPT0gaXRlci0+dmFsdWUpOworCisgICAgY29tcGxldGlvbkhhbmRsZXIoc3RvcmFn
ZUFyZWFJRCk7CisKKyAgICBzdG9yYWdlQXJlYS0+YWRkTGlzdGVuZXIoY29ubmVjdGlvbi51bmlx
dWVJRCgpKTsKK30KKwordm9pZCBTdG9yYWdlTWFuYWdlclNldDo6Y29ubmVjdFRvU2Vzc2lvblN0
b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCB1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIFNlY3VyaXR5T3JpZ2luRGF0YSYm
IHNlY3VyaXR5T3JpZ2luRGF0YSwgQ29ubmVjdFRvU3RvcmFnZUFyZWFDYWxsYmFjayYmIGNvbXBs
ZXRpb25IYW5kbGVyKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAg
YXV0byogc3RvcmFnZU1hbmFnZXIgPSBtX3N0b3JhZ2VNYW5hZ2Vycy5nZXQoc2Vzc2lvbklEKTsK
KyAgICBBU1NFUlQoc3RvcmFnZU1hbmFnZXIpOworICAgIGlmICghc3RvcmFnZU1hbmFnZXIpIHsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoaW52YWxpZFN0b3JhZ2VBcmVhSUQpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgYXV0byogc3RvcmFnZUFyZWEgPSBzdG9yYWdlTWFuYWdl
ci0+Y3JlYXRlU2Vzc2lvblN0b3JhZ2VBcmVhKHN0b3JhZ2VOYW1lc3BhY2VJRCwgV1RGTW92ZShz
ZWN1cml0eU9yaWdpbkRhdGEpKTsKKyAgICBhdXRvIHN0b3JhZ2VBcmVhSUQgPSBzdG9yYWdlQXJl
YS0+aWRlbnRpZmllcigpOworICAgIGF1dG9baXRlciwgaXNOZXdFbnRyeV0gPSBtX3N0b3JhZ2VB
cmVhcy5hZGQoc3RvcmFnZUFyZWFJRCwgbnVsbHB0cik7CisgICAgaWYgKGlzTmV3RW50cnkpCisg
ICAgICAgIGl0ZXItPnZhbHVlID0gc3RvcmFnZUFyZWE7CisgICAgZWxzZQorICAgICAgICBBU1NF
UlQoc3RvcmFnZUFyZWEgPT0gaXRlci0+dmFsdWUpOworCisgICAgY29tcGxldGlvbkhhbmRsZXIo
c3RvcmFnZUFyZWFJRCk7CisgICAgCisgICAgc3RvcmFnZUFyZWEtPmFkZExpc3RlbmVyKGNvbm5l
Y3Rpb24udW5pcXVlSUQoKSk7Cit9CisKK3ZvaWQgU3RvcmFnZU1hbmFnZXJTZXQ6OmRpc2Nvbm5l
Y3RGcm9tU3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCB1aW50NjRfdCBz
dG9yYWdlQXJlYUlEKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworICAgIGF1
dG8qIHN0b3JhZ2VBcmVhID0gbV9zdG9yYWdlQXJlYXMuZ2V0KHN0b3JhZ2VBcmVhSUQpOworICAg
IEFTU0VSVChzdG9yYWdlQXJlYSk7CisgICAgQVNTRVJUKHN0b3JhZ2VBcmVhLT5oYXNMaXN0ZW5l
cihjb25uZWN0aW9uLnVuaXF1ZUlEKCkpKTsKKworICAgIHN0b3JhZ2VBcmVhLT5yZW1vdmVMaXN0
ZW5lcihjb25uZWN0aW9uLnVuaXF1ZUlEKCkpOworfQorCit2b2lkIFN0b3JhZ2VNYW5hZ2VyU2V0
OjpnZXRWYWx1ZXMoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCB1aW50NjRfdCBzdG9yYWdl
QXJlYUlELCBHZXRWYWx1ZXNDYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIEFT
U0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworICAgIGF1dG8qIHN0b3JhZ2VBcmVhID0gbV9zdG9y
YWdlQXJlYXMuZ2V0KHN0b3JhZ2VBcmVhSUQpOworICAgIEFTU0VSVChzdG9yYWdlQXJlYSk7Cisg
ICAgQVNTRVJUKHN0b3JhZ2VBcmVhLT5oYXNMaXN0ZW5lcihjb25uZWN0aW9uLnVuaXF1ZUlEKCkp
KTsKKworICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0b3JhZ2VBcmVhID8gc3RvcmFnZUFyZWEtPml0
ZW1zKCkgOiBIYXNoTWFwPFN0cmluZywgU3RyaW5nPigpKTsKK30KKwordm9pZCBTdG9yYWdlTWFu
YWdlclNldDo6c2V0SXRlbShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVpbnQ2NF90IHN0
b3JhZ2VBcmVhSUQsIHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIHVpbnQ2NF90IHN0b3Jh
Z2VNYXBTZWVkLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgY29uc3Qg
U3RyaW5nJiB1cmxTdHJpbmcpCit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Cisg
ICAgYXV0byogc3RvcmFnZUFyZWEgPSBtX3N0b3JhZ2VBcmVhcy5nZXQoc3RvcmFnZUFyZWFJRCk7
CisgICAgQVNTRVJUKHN0b3JhZ2VBcmVhKTsKKworICAgIGJvb2wgcXVvdGFFcnJvcjsKKyAgICBz
dG9yYWdlQXJlYS0+c2V0SXRlbShjb25uZWN0aW9uLnVuaXF1ZUlEKCksIHNvdXJjZVN0b3JhZ2VB
cmVhSUQsIGtleSwgdmFsdWUsIHVybFN0cmluZywgcXVvdGFFcnJvcik7CisKKyAgICBjb25uZWN0
aW9uLnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VBcmVhTWFwOjpEaWRTZXRJdGVtKHN0b3JhZ2VNYXBT
ZWVkLCBrZXksIHF1b3RhRXJyb3IpLCBzdG9yYWdlQXJlYUlEKTsKK30gCisKK3ZvaWQgU3RvcmFn
ZU1hbmFnZXJTZXQ6OnJlbW92ZUl0ZW0oSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCB1aW50
NjRfdCBzdG9yYWdlQXJlYUlELCB1aW50NjRfdCBzb3VyY2VTdG9yYWdlQXJlYUlELCB1aW50NjRf
dCBzdG9yYWdlTWFwU2VlZCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdXJsU3Ry
aW5nKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworICAgIGF1dG8qIHN0b3Jh
Z2VBcmVhID0gbV9zdG9yYWdlQXJlYXMuZ2V0KHN0b3JhZ2VBcmVhSUQpOworICAgIEFTU0VSVChz
dG9yYWdlQXJlYSk7CisKKyAgICBzdG9yYWdlQXJlYS0+cmVtb3ZlSXRlbShjb25uZWN0aW9uLnVu
aXF1ZUlEKCksIHNvdXJjZVN0b3JhZ2VBcmVhSUQsIGtleSwgdXJsU3RyaW5nKTsKKworICAgIGNv
bm5lY3Rpb24uc2VuZChNZXNzYWdlczo6U3RvcmFnZUFyZWFNYXA6OkRpZFJlbW92ZUl0ZW0oc3Rv
cmFnZU1hcFNlZWQsIGtleSksIHN0b3JhZ2VBcmVhSUQpOworfQorCit2b2lkIFN0b3JhZ2VNYW5h
Z2VyU2V0OjpjbGVhcihJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVpbnQ2NF90IHN0b3Jh
Z2VBcmVhSUQsIHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIHVpbnQ2NF90IHN0b3JhZ2VN
YXBTZWVkLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZykKK3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6
OmlzTWFpbigpKTsKKyAgICBhdXRvKiBzdG9yYWdlQXJlYSA9IG1fc3RvcmFnZUFyZWFzLmdldChz
dG9yYWdlQXJlYUlEKTsKKyAgICBBU1NFUlQoc3RvcmFnZUFyZWEpOworCisgICAgc3RvcmFnZUFy
ZWEtPmNsZWFyKGNvbm5lY3Rpb24udW5pcXVlSUQoKSwgc291cmNlU3RvcmFnZUFyZWFJRCwgdXJs
U3RyaW5nKTsKKworICAgIGNvbm5lY3Rpb24uc2VuZChNZXNzYWdlczo6U3RvcmFnZUFyZWFNYXA6
OkRpZENsZWFyKHN0b3JhZ2VNYXBTZWVkKSwgc3RvcmFnZUFyZWFJRCk7Cit9CisKK3ZvaWQgU3Rv
cmFnZU1hbmFnZXJTZXQ6OmNsb25lU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoSVBDOjpDb25uZWN0
aW9uJiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBmcm9tU3RvcmFnZU5hbWVz
cGFjZUlELCB1aW50NjRfdCB0b1N0b3JhZ2VOYW1lc3BhY2VJRCkKK3sKKyAgICBBU1NFUlQoIVJ1
bkxvb3A6OmlzTWFpbigpKTsKKyAgICBhdXRvKiBzdG9yYWdlTWFuYWdlciA9IG1fc3RvcmFnZU1h
bmFnZXJzLmdldChzZXNzaW9uSUQpOworICAgIEFTU0VSVChzdG9yYWdlTWFuYWdlcik7CisKKyAg
ICBzdG9yYWdlTWFuYWdlci0+Y2xvbmVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShmcm9tU3RvcmFn
ZU5hbWVzcGFjZUlELCB0b1N0b3JhZ2VOYW1lc3BhY2VJRCk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VNYW5hZ2VyU2V0LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dl
YlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZDZkMDNmOGZmN2Q0ZWY4
ZTI2NWE2NGFjMWY0ZWQ2NjM3NTY5MjlhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0LmgKQEAgLTAsMCAr
MSwxMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKKyNpbmNsdWRlICJT
dG9yYWdlTWFuYWdlci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+
CisjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgorCit1c2luZyBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGE7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBTYW5kYm94RXh0ZW5zaW9u
OworCit1c2luZyBDb25uZWN0VG9TdG9yYWdlQXJlYUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCh1aW50NjRfdCk+OwordXNpbmcgR2V0VmFsdWVzQ2FsbGJhY2sgPSBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+Jik+OwordXNpbmcgR2V0
T3JpZ2luc0NhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0PFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YT4mJik+OwordXNpbmcgR2V0T3JpZ2luRGV0YWlsc0NhbGxiYWNr
ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFj
a2VyOjpPcmlnaW5EZXRhaWxzPiYmKT47Cit1c2luZyBEZWxldGVDYWxsYmFjayA9IENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT47CisKK2NsYXNzIFN0b3JhZ2VNYW5hZ2VyU2V0IDogcHVibGljIElQ
Qzo6Q29ubmVjdGlvbjo6V29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyIHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUmVmPFN0b3JhZ2VNYW5hZ2VyU2V0PiBjcmVhdGUoKTsKKyAgICBTdG9yYWdlTWFuYWdl
clNldCgpOworICAgIH5TdG9yYWdlTWFuYWdlclNldCgpOworCisgICAgdm9pZCBhZGQoUEFMOjpT
ZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlRGlyZWN0b3J5LCBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGUmIGxvY2FsU3RvcmFnZURpcmVjdG9yeUhhbmRsZSk7CisgICAgdm9pZCBy
ZW1vdmUoUEFMOjpTZXNzaW9uSUQpOworICAgIGJvb2wgY29udGFpbnMoUEFMOjpTZXNzaW9uSUQp
OworCisgICAgdm9pZCBhZGRDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiYpOworICAgIHZvaWQg
cmVtb3ZlQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24mKTsKKworICAgIHZvaWQgd2FpdFVudGls
VGFza3NGaW5pc2hlZCgpOworICAgIHZvaWQgc3VzcGVuZChDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOworICAgIHZvaWQgcmVzdW1lKCk7CisKKyAgICB2b2lkIGdldFNlc3Npb25TdG9yYWdl
T3JpZ2lucyhQQUw6OlNlc3Npb25JRCwgR2V0T3JpZ2luc0NhbGxiYWNrJiYpOworICAgIHZvaWQg
ZGVsZXRlU2Vzc2lvblN0b3JhZ2UoUEFMOjpTZXNzaW9uSUQsIERlbGV0ZUNhbGxiYWNrJiYpOwor
ICAgIHZvaWQgZGVsZXRlU2Vzc2lvblN0b3JhZ2VGb3JPcmlnaW5zKFBBTDo6U2Vzc2lvbklELCBj
b25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYsIERlbGV0ZUNhbGxiYWNr
JiYpOworICAgIHZvaWQgZ2V0TG9jYWxTdG9yYWdlT3JpZ2lucyhQQUw6OlNlc3Npb25JRCwgR2V0
T3JpZ2luc0NhbGxiYWNrJiYpOworICAgIHZvaWQgZGVsZXRlTG9jYWxTdG9yYWdlTW9kaWZpZWRT
aW5jZShQQUw6OlNlc3Npb25JRCwgV2FsbFRpbWUsIERlbGV0ZUNhbGxiYWNrJiYpOworICAgIHZv
aWQgZGVsZXRlTG9jYWxTdG9yYWdlRm9yT3JpZ2lucyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVj
dG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mLCBEZWxldGVDYWxsYmFjayYmKTsKKyAg
ICB2b2lkIGdldExvY2FsU3RvcmFnZU9yaWdpbkRldGFpbHMoUEFMOjpTZXNzaW9uSUQsIEdldE9y
aWdpbkRldGFpbHNDYWxsYmFjayYmKTsKKworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CisgICAgdm9pZCBkaWRSZWNlaXZlU3luY01l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQ
Qzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2Rlcik7CisKK3ByaXZhdGU6CisgICAgLy8gTWVzc2FnZSBI
YW5kbGVycworICAgIHZvaWQgY29ubmVjdFRvTG9jYWxTdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rp
b24mLCBQQUw6OlNlc3Npb25JRCAsIHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgU2VjdXJp
dHlPcmlnaW5EYXRhJiYsIENvbm5lY3RUb1N0b3JhZ2VBcmVhQ2FsbGJhY2smJik7CisgICAgdm9p
ZCBjb25uZWN0VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbiYsIFBB
TDo6U2Vzc2lvbklEICwgdWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBTZWN1cml0eU9yaWdp
bkRhdGEmJiwgU2VjdXJpdHlPcmlnaW5EYXRhJiYsIENvbm5lY3RUb1N0b3JhZ2VBcmVhQ2FsbGJh
Y2smJik7CisgICAgdm9pZCBjb25uZWN0VG9TZXNzaW9uU3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0
aW9uJiwgUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgU2VjdXJp
dHlPcmlnaW5EYXRhJiYsIENvbm5lY3RUb1N0b3JhZ2VBcmVhQ2FsbGJhY2smJik7CisgICAgdm9p
ZCBkaXNjb25uZWN0RnJvbVN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbiYsIHVpbnQ2NF90IHN0
b3JhZ2VBcmVhSUQpOworICAgIHZvaWQgZ2V0VmFsdWVzKElQQzo6Q29ubmVjdGlvbiYsIHVpbnQ2
NF90IHN0b3JhZ2VBcmVhSUQsIEdldFZhbHVlc0NhbGxiYWNrJiYpOworICAgIHZvaWQgc2V0SXRl
bShJUEM6OkNvbm5lY3Rpb24mLCB1aW50NjRfdCBzdG9yYWdlQXJlYUlELCB1aW50NjRfdCBzb3Vy
Y2VTdG9yYWdlQXJlYUlELCB1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCwgY29uc3QgU3RyaW5nJiBr
ZXksIGNvbnN0IFN0cmluZyYgdmFsdWUsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKTsKKyAgICB2
b2lkIHJlbW92ZUl0ZW0oSVBDOjpDb25uZWN0aW9uJiwgdWludDY0X3Qgc3RvcmFnZUFyZWFJRCwg
dWludDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwgdWludDY0X3Qgc3RvcmFnZU1hcFNlZWQsIGNv
bnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHVybFN0cmluZyk7CisgICAgdm9pZCBjbGVh
cihJUEM6OkNvbm5lY3Rpb24mLCB1aW50NjRfdCBzdG9yYWdlQXJlYUlELCB1aW50NjRfdCBzb3Vy
Y2VTdG9yYWdlQXJlYUlELCB1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCwgY29uc3QgU3RyaW5nJiB1
cmxTdHJpbmcpOworICAgIHZvaWQgY2xvbmVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShJUEM6OkNv
bm5lY3Rpb24mLCBQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgZnJvbVN0b3JhZ2VOYW1lc3BhY2VJ
RCwgdWludDY0X3QgdG9TdG9yYWdlTmFtZXNwYWNlSUQpOworCisgICAgSGFzaE1hcDxQQUw6OlNl
c3Npb25JRCwgUmVmUHRyPFN0b3JhZ2VNYW5hZ2VyPj4gbV9zdG9yYWdlTWFuYWdlcnM7CisgICAg
SGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgU3RyaW5nPiBtX3N0b3JhZ2VNYW5hZ2VyUGF0aHM7Cisg
ICAgSGFzaE1hcDx1aW50NjRfdCwgU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VBcmVhKj4gbV9zdG9y
YWdlQXJlYXM7IC8vIHN0b3JhZ2VBcmVhIGlzIGtlcHQgYWxpdmUgYnkgc3RvcmFnZW5hbWVzcGFj
ZQorCisgICAgSGFzaFNldDxJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEPiBtX2Nvbm5lY3Rpb25z
OworICAgIFJlZjxXb3JrUXVldWU+IG1fcXVldWU7CisKKyAgICBlbnVtIGNsYXNzIFN0YXRlIHsK
KyAgICAgICAgUnVubmluZywKKyAgICAgICAgV2lsbFN1c3BlbmQsCisgICAgICAgIFN1c3BlbmRl
ZAorICAgIH07CisgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpSdW5uaW5nIH07CisgICAgTG9j
ayBtX3N0YXRlTG9jazsKKyAgICBDb25kaXRpb24gbV9zdGF0ZUNoYW5nZUNvbmRpdGlvbjsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0Lm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0Lm1l
c3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUwYzEzYTAwYmMzNWI5MTVmZWFkODQwMDVkYTM0N2QyN2M3
ZDE3ZDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dl
YlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwzNCBAQAor
IyBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIwor
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAor
IyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCittZXNzYWdlcyAtPiBTdG9y
YWdlTWFuYWdlclNldCB7CisgICAgQ29ubmVjdFRvTG9jYWxTdG9yYWdlQXJlYShQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgc3RydWN0IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBzZWN1cml0eU9yaWdpbkRhdGEpIC0+ICh1aW50NjRfdCBz
dG9yYWdlQXJlYUlEKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KKyAgICBDb25uZWN0VG9U
cmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0
X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
IHRvcExldmVsU2VjdXJpdHlPcmlnaW5EYXRhLCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhIHNlY3VyaXR5T3JpZ2luRGF0YSkgLT4gKHVpbnQ2NF90IHN0b3JhZ2VBcmVhSUQpIFN5
bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgorICAgIENvbm5lY3RUb1Nlc3Npb25TdG9yYWdlQXJl
YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwg
c3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBzZWN1cml0eU9yaWdpbkRhdGEpIC0+
ICh1aW50NjRfdCBzdG9yYWdlQXJlYUlEKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KKyAg
ICBEaXNjb25uZWN0RnJvbVN0b3JhZ2VBcmVhKHVpbnQ2NF90IHN0b3JhZ2VBcmVhSUQpIFdhbnRz
Q29ubmVjdGlvbgorICAgIEdldFZhbHVlcyh1aW50NjRfdCBzdG9yYWdlQXJlYUlEKSAtPiAoSGFz
aE1hcDxTdHJpbmcsIFN0cmluZz4gdmFsdWVzKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24K
KyAgICBDbG9uZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgdWludDY0X3QgZnJvbVN0b3JhZ2VOYW1lc3BhY2VJRCwgdWludDY0X3QgdG9TdG9yYWdlTmFt
ZXNwYWNlSUQpIFdhbnRzQ29ubmVjdGlvbgorCisgICAgU2V0SXRlbSh1aW50NjRfdCBzdG9yYWdl
QXJlYUlELCB1aW50NjRfdCBzb3VyY2VTdG9yYWdlQXJlYUlELCB1aW50NjRfdCBzdG9yYWdlTWFw
U2VlZCwgU3RyaW5nIGtleSwgU3RyaW5nIHZhbHVlLCBTdHJpbmcgdXJsU3RyaW5nKSBXYW50c0Nv
bm5lY3Rpb24KKyAgICBSZW1vdmVJdGVtKHVpbnQ2NF90IHN0b3JhZ2VBcmVhSUQsIHVpbnQ2NF90
IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkLCBTdHJpbmcga2V5
LCBTdHJpbmcgdXJsU3RyaW5nKSBXYW50c0Nvbm5lY3Rpb24KKyAgICBDbGVhcih1aW50NjRfdCBz
dG9yYWdlQXJlYUlELCB1aW50NjRfdCBzb3VyY2VTdG9yYWdlQXJlYUlELCB1aW50NjRfdCBzdG9y
YWdlTWFwU2VlZCwgU3RyaW5nIHVybFN0cmluZykgV2FudHNDb25uZWN0aW9uCit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5jcHAKaW5k
ZXggZDkxYTM0ZjZhOTI3MjVjMTQxNzczZjA4YWI0MjllN2U4ZTU4NjNjMy4uNjRhMGMxYmJiNDll
NmZhZTJkODdlMTBkOWRlZTE1ODRiMDBmMDk4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmNwcApAQCAtNTMsNiArNTMsOCBAQCB2
b2lkIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVj
dG9yeSA8PCBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxl
OwogI2VuZGlmCiAKKyAgICBlbmNvZGVyIDw8IGxvY2FsU3RvcmFnZURpcmVjdG9yeSA8PCBsb2Nh
bFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CisKICAgICBlbmNvZGVyIDw8IHBlck9y
aWdpblN0b3JhZ2VRdW90YTsKICAgICBlbmNvZGVyIDw8IHBlclRoaXJkUGFydHlPcmlnaW5TdG9y
YWdlUXVvdGE7CiB9CkBAIC0xMjEsNiArMTIzLDE4IEBAIE9wdGlvbmFsPFdlYnNpdGVEYXRhU3Rv
cmVQYXJhbWV0ZXJzPiBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVj
CiAgICAgcGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5RXh0ZW5z
aW9uSGFuZGxlID0gV1RGTW92ZSgqc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeUV4
dGVuc2lvbkhhbmRsZSk7CiAjZW5kaWYKIAorICAgIE9wdGlvbmFsPFN0cmluZz4gbG9jYWxTdG9y
YWdlRGlyZWN0b3J5OworICAgIGRlY29kZXIgPj4gbG9jYWxTdG9yYWdlRGlyZWN0b3J5OworICAg
IGlmICghbG9jYWxTdG9yYWdlRGlyZWN0b3J5KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgIHBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gV1RGTW92ZSgqbG9jYWxT
dG9yYWdlRGlyZWN0b3J5KTsKKyAgICAKKyAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGU+IGxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKKyAgICBkZWNvZGVy
ID4+IGxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKKyAgICBpZiAoIWxvY2Fs
U3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICBwYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRs
ZSA9IFdURk1vdmUoKmxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CisKICAg
ICBPcHRpb25hbDx1aW50NjRfdD4gcGVyT3JpZ2luU3RvcmFnZVF1b3RhOwogICAgIGRlY29kZXIg
Pj4gcGVyT3JpZ2luU3RvcmFnZVF1b3RhOwogICAgIGlmICghcGVyT3JpZ2luU3RvcmFnZVF1b3Rh
KQpAQCAtMTQ5LDYgKzE2Myw3IEBAIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVE
YXRhU3RvcmVQYXJhbWV0ZXJzOjpwcml2YXRlU2Vzc2lvblBhcmFtZXRlcnMoCiAjaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQogICAgICAgICAsIHsgfSwgeyB9CiAjZW5kaWYKKyAgICAgICAgLCB7
IH0sIHsgfQogICAgIH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRl
RGF0YVN0b3JlUGFyYW1ldGVycy5oCmluZGV4IDk5MmZlZTk3ZDA5OTc0YzlmMzQ3ZjZjNzBkYWEx
Y2ViZjNlMmYyNGYuLjZmZWNlM2YxNTRmZTlkN2ZiOThiZmM5N2Q5YjFiN2JmZjQyNGYzOTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJz
LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMu
aApAQCAtNzAsNiArNzAsOSBAQCBzdHJ1Y3QgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgewog
ICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGly
ZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogI2VuZGlmCiAKKyAgICBTdHJpbmcgbG9jYWxTdG9yYWdl
RGlyZWN0b3J5OworICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBsb2NhbFN0b3JhZ2VEaXJl
Y3RvcnlFeHRlbnNpb25IYW5kbGU7CisKICAgICB1aW50NjRfdCBwZXJPcmlnaW5TdG9yYWdlUXVv
dGEgeyBXZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2VyOjpkZWZhdWx0UXVvdGEoKSB9OwogICAg
IHVpbnQ2NF90IHBlclRoaXJkUGFydHlPcmlnaW5TdG9yYWdlUXVvdGEgeyBXZWJDb3JlOjpTdG9y
YWdlUXVvdGFNYW5hZ2VyOjpkZWZhdWx0VGhpcmRQYXJ0eVF1b3RhKCkgfTsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4
dAppbmRleCA3OTE2ZTIzYjc3ZWVmYmMwOGIxOTcwNDI3OTdmMDAwNDhjZmMxNjNmLi5iNzkwOTc0
N2M1MjEyNGFmNGM2ODMyODA5NDk5MTZjMzU5MGEzNmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTY5LDYg
KzY5LDcgQEAgTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uY3BwIEBuby11bmlmeQogTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2Nh
bFN0b3JhZ2VEYXRhYmFzZS5jcHAKIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9y
YWdlRGF0YWJhc2VUcmFja2VyLmNwcAogTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdl
TWFuYWdlci5jcHAKK05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQu
Y3BwCiAKIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKIE5ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IGY2YmJkMmI5YmQyZGIzOGMwYjlm
ZWU1ZTc5OTkyNmI3YmYyMmU2OTcuLjc1MTZiNzZmNzQ4YTMwYmYwOWZiMjZjZWM0MTZiNDBiODlm
ODIwMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAg
LTU4Myw4ICs1ODMsOCBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5z
dXJlTmV0d29ya1Byb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSogd2l0aAogICAgIGF1dG8gbG9jYWxT
dG9yYWdlRGlyZWN0b3J5ID0gbV93ZWJzaXRlRGF0YVN0b3JlID8gbV93ZWJzaXRlRGF0YVN0b3Jl
LT53ZWJzaXRlRGF0YVN0b3JlKCkucmVzb2x2ZWRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSA6IG51
bGxTdHJpbmcoKTsKICAgICBpZiAoIWxvY2FsU3RvcmFnZURpcmVjdG9yeSkKICAgICAgICAgbG9j
YWxTdG9yYWdlRGlyZWN0b3J5ID0gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxT
dG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1l
dGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gbG9j
YWxTdG9yYWdlRGlyZWN0b3J5OwotICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZv
clJlYWRXcml0ZURpcmVjdG9yeShsb2NhbFN0b3JhZ2VEaXJlY3RvcnksIHBhcmFtZXRlcnMuZGVm
YXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmxvY2FsU3Rv
cmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CisgICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0
YVN0b3JlUGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBsb2NhbFN0b3JhZ2VEaXJl
Y3Rvcnk7CisgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGly
ZWN0b3J5KGxvY2FsU3RvcmFnZURpcmVjdG9yeSwgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3Jl
UGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogCiAgICAg
aWYgKG1fd2Vic2l0ZURhdGFTdG9yZSkKICAgICAgICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0
b3JlUGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RpcmVjdG9yeSA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJl
c29sdmVkUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNv
Y29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0
ZURhdGFTdG9yZUNvY29hLm1tCmluZGV4IGE2ODM2ZDkyNTE2MzJiODE4NTUzMTZiNmRjNGVhNzhm
ZjgxY2I2YjYuLjk2ZGUyNzk5YmVhMTcwZTRjOGUwNmM0ODkyNDQ4N2ZlM2JmYzJmOWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVE
YXRhU3RvcmVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KQEAgLTEwNywxMSArMTA3LDYgQEAgV2Vi
c2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgV2Vic2l0ZURhdGFTdG9yZTo6cGFyYW1ldGVycygpCiAg
ICAgaWYgKCFyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAg
ICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KHJl
c291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJl
Y3RvcnlIYW5kbGUpOwogCi0gICAgYXV0byBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSByZXNvbHZl
ZExvY2FsU3RvcmFnZURpcmVjdG9yeSgpOwotICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBs
b2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7Ci0gICAgaWYgKCFsb2NhbFN0b3Jh
Z2VEaXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVI
YW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkobG9jYWxTdG9yYWdlRGlyZWN0b3J5LCBsb2NhbFN0
b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwotCiAgICAgYXV0byBuZXR3b3JrQ2FjaGVE
aXJlY3RvcnkgPSByZXNvbHZlZE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpOwogICAgIFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSBuZXR3b3JrQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAg
ICAgaWYgKCFuZXR3b3JrQ2FjaGVEaXJlY3RvcnkuaXNFbXB0eSgpKQpAQCAtMTQwLDggKzEzNSw2
IEBAIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRl
cnMoKQogICAgICAgICBtX2NvbmZpZ3VyYXRpb24tPmRldmljZU1hbmFnZW1lbnRSZXN0cmljdGlv
bnNFbmFibGVkKCksCiAgICAgICAgIG1fY29uZmlndXJhdGlvbi0+YWxsTG9hZHNCbG9ja2VkQnlE
ZXZpY2VNYW5hZ2VtZW50UmVzdHJpY3Rpb25zRm9yVGVzdGluZygpLAogICAgICAgICBXVEZNb3Zl
KHJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW51YWxQcmV2YWxlbnRSZXNvdXJjZSksCi0gICAgICAg
IFdURk1vdmUobG9jYWxTdG9yYWdlRGlyZWN0b3J5KSwKLSAgICAgICAgV1RGTW92ZShsb2NhbFN0
b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpLAogICAgICAgICBXVEZNb3ZlKG5ldHdvcmtD
YWNoZURpcmVjdG9yeSksCiAgICAgICAgIFdURk1vdmUobmV0d29ya0NhY2hlRGlyZWN0b3J5RXh0
ZW5zaW9uSGFuZGxlKSwKICAgICB9OwpAQCAtMTc2LDYgKzE2OSwxMCBAQCBXZWJzaXRlRGF0YVN0
b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0ZXJzKCkKICAgICBpZiAoIXBh
cmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeS5pc0VtcHR5KCkpCiAg
ICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9y
eShwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnksIHBhcmFtZXRl
cnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAj
ZW5kaWYKKyAgICAKKyAgICBwYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeSA9IHJlc29s
dmVkTG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7CisgICAgaWYgKCFwYXJhbWV0ZXJzLmxvY2FsU3Rv
cmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpCisgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0
ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShwYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVj
dG9yeSwgcGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwog
CiAgICAgcGFyYW1ldGVycy5wZXJPcmlnaW5TdG9yYWdlUXVvdGEgPSBwZXJPcmlnaW5TdG9yYWdl
UXVvdGEoKTsKICAgICBwYXJhbWV0ZXJzLnBlclRoaXJkUGFydHlPcmlnaW5TdG9yYWdlUXVvdGEg
PSBwZXJUaGlyZFBhcnR5T3JpZ2luU3RvcmFnZVF1b3RhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4
IDk0YzRkNTk4YjYwMzdhNjk5NzEyZDE3YjlmYTdjNWViMTY0YTZjNTguLjViNTEwY2RhYTBjN2Fi
MjNjOTAzN2ZhNzM1OWZlOTNkNzNkM2RkOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC0xOTU3LDgg
KzE5NTcsOCBAQCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0b3JlOjpw
YXJhbWV0ZXJzKCkKIAogICAgIGF1dG8gbG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gcmVzb2x2ZWRM
b2NhbFN0b3JhZ2VEaXJlY3RvcnkoKTsKICAgICBpZiAoIWxvY2FsU3RvcmFnZURpcmVjdG9yeS5p
c0VtcHR5KCkpIHsKLSAgICAgICAgcGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMu
bG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gbG9jYWxTdG9yYWdlRGlyZWN0b3J5OwotICAgICAgICBT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkobG9jYWxT
dG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5sb2Nh
bFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOworICAgICAgICBwYXJhbWV0ZXJzLmxv
Y2FsU3RvcmFnZURpcmVjdG9yeSA9IGxvY2FsU3RvcmFnZURpcmVjdG9yeTsKKyAgICAgICAgU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KGxvY2FsU3Rv
cmFnZURpcmVjdG9yeSwgcGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25I
YW5kbGUpOwogICAgIH0KIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNzQ2OWRhMWQx
ODVjOWU2ZjM0NjA5YjE5ZTQ0NjE2YjEzY2QwZjgyMy4uM2ExMTM4ZWU2NDllYWYyMWNiOGRlYTcx
N2NiYTMyZmFhODMzNjk2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0yOTMsOCArMjkzLDYgQEAKIAkJMUFCMUY3OTcxRDFCMzYxMzAw
N0M5QkQxIC8qIFdlYlBheW1lbnRDb29yZGluYXRvck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUIxRjc5MzFEMUIzNjEzMDA3QzlCRDEg
LyogV2ViUGF5bWVudENvb3JkaW5hdG9yTWVzc2FnZXMuaCAqLzsgfTsKIAkJMUFCMUY3OTgxRDFC
MzYxMzAwN0M5QkQxIC8qIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWVzc2FnZVJlY2VpdmVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjFG
Nzk0MUQxQjM2MTMwMDdDOUJEMSAvKiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1lc3NhZ2VS
ZWNlaXZlci5jcHAgKi87IH07CiAJCTFBQjFGNzk5MUQxQjM2MTMwMDdDOUJEMSAvKiBXZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxQUIxRjc5NTFEMUIzNjEzMDA3QzlCRDEgLyogV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHlNZXNzYWdlcy5oICovOyB9OwotCQkxQUIzMUE5NjE2QkM2ODgxMDBG
NkRCQzkgLyogU3RvcmFnZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFCMzFBOTQxNkJDNjg4MTAwRjZEQkM5
IC8qIFN0b3JhZ2VNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKLQkJMUFCMzFBOTcx
NkJDNjg4MTAwRjZEQkM5IC8qIFN0b3JhZ2VNYW5hZ2VyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjMxQTk1MTZCQzY4ODEwMEY2REJD
OSAvKiBTdG9yYWdlTWFuYWdlck1lc3NhZ2VzLmggKi87IH07CiAJCTFBQjQwRUU2MUJGNjc3RTMw
MEJBODFCRSAvKiBXS01lbnVJdGVtSWRlbnRpZmllcnNQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUI0MEVFNDFCRjY3N0UzMDBCQTgxQkUg
LyogV0tNZW51SXRlbUlkZW50aWZpZXJzUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFBQjQ3NEQ4MTg0RDQzRkQwMDUxQjYyMiAvKiBX
S0J1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFBQjQ3NEQ3MTg0RDQzRkQwMDUxQjYyMiAvKiBXS0J1bmRsZVBhZ2VM
b2FkZXJDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkxQUI0NzREQTE4NEQ0NDI1MDA1MUI2MjIgLyogV0tCdW5kbGVQYWdlUmVzb3VyY2VM
b2FkQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQUI0NzREOTE4NEQ0NDI1MDA1MUI2MjIgLyogV0tCdW5kbGVQYWdlUmVzb3VyY2VMb2FkQ2xp
ZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTEyNzEsNiArMTI2OSw5IEBACiAJCTkzNUVFQjlCMTI3NzYxN0MwMDMzMjJCOCAvKiBXS0J1bmRs
ZUJhY2tGb3J3YXJkTGlzdEl0ZW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDkzNUVFQjk4MTI3NzYxNkQwMDMzMjJCOCAvKiBXS0J1bmRsZUJhY2tGb3J3
YXJkTGlzdEl0ZW0uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk5MzVFRUI5RjEyNzc2MUFDMDAzMzIyQjggLyogV0tCdW5kbGVCYWNrRm9yd2FyZExp
c3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNUVF
Qjk2MTI3NzYxNkQwMDMzMjJCOCAvKiBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzNzM1RUJCMUM5Mjk4
NjMwMDMzNkZBNyAvKiBXS1ByZXZpZXdBY3Rpb25JdGVtSW50ZXJuYWwuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNzM1RUJBMUM5Mjk4NjMwMDMzNkZB
NyAvKiBXS1ByZXZpZXdBY3Rpb25JdGVtSW50ZXJuYWwuaCAqLzsgfTsKKwkJOTM3NjI3NDQyMkYx
MTVERDAwMzVCRjgwIC8qIFN0b3JhZ2VNYW5hZ2VyU2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5Mzc2Mjc0MjIyRjExNUNEMDAzNUJGODAgLyogU3Rv
cmFnZU1hbmFnZXJTZXQuaCAqLzsgfTsKKwkJOTM3OTEwREMyMkYxNzEwMzAwM0JBMTQ0IC8qIFN0
b3JhZ2VNYW5hZ2VyU2V0TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNzkxMERCMjJGMTZGQzkwMDNCQTE0NCAvKiBTdG9y
YWdlTWFuYWdlclNldE1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CisJCTkzNzkxMERFMjJGMTcx
QTkwMDNCQTE0NCAvKiBTdG9yYWdlTWFuYWdlclNldE1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5Mzc5MTBERDIyRjE3MTgxMDAzQkExNDQg
LyogU3RvcmFnZU1hbmFnZXJTZXRNZXNzYWdlcy5oICovOyB9OwogCQk5MzkxMDc0RjFCRjZCQzY1
MDA4QzE3QUQgLyogV0tQcmV2aWV3RWxlbWVudEluZm9JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM5MTA3NEUxQkY2QkM2NTAwOEMxN0FE
IC8qIFdLUHJldmlld0VsZW1lbnRJbmZvSW50ZXJuYWwuaCAqLzsgfTsKIAkJOTM5MUYyQ0IxMjFC
NjdBRDAwRUJGN0U4IC8qIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzOTFGMjgzMTIxQjM4RjUwMEVCRjdF
OCAvKiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmggKi87IH07CiAJCTkzOTVFNjhBMUJGMkMz
MzIwMEY0OUJDRSAvKiBXS1ByZXZpZXdFbGVtZW50SW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM5NUU2ODkxQkYyQzMzMjAwRjQ5QkNFIC8qIFdL
UHJldmlld0VsZW1lbnRJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGlj
LCApOyB9OyB9OwpAQCAtMTcwMSw2ICsxNzAyLDggQEAKIAkJCWNvbXBpbGVyU3BlYyA9IGNvbS5h
cHBsZS5jb21waWxlcnMucHJveHkuc2NyaXB0OwogCQkJZmlsZVBhdHRlcm5zID0gIiouaCI7CiAJ
CQlmaWxlVHlwZSA9IHBhdHRlcm4ucHJveHk7CisJCQlpbnB1dEZpbGVzID0gKAorCQkJKTsKIAkJ
CWlzRWRpdGFibGUgPSAxOwogCQkJb3V0cHV0RmlsZXMgPSAoCiAJCQkJIiQoSEVBREVSX09VVFBV
VF9ESVIpLyQoSU5QVVRfRklMRV9OQU1FKSIsCkBAIC0yMzAxLDggKzIzMDQsNiBAQAogCQkxQUIx
Rjc5MzFEMUIzNjEzMDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yTWVzc2FnZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViUGF5bWVudENvb3JkaW5hdG9yTWVz
c2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViUGF5bWVudENvb3JkaW5h
dG9yTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJMUFC
MUY3OTQxRDFCMzYxMzAwN0M5QkQxIC8qIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWVzc2Fn
ZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0aCA9IERlcml2ZWRT
b3VyY2VzL1dlYktpdDIvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNZXNzYWdlUmVjZWl2ZXIu
Y3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQkxQUIxRjc5NTFEMUIz
NjEzMDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNZXNzYWdlcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1l
c3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsK
LQkJMUFCMzFBOTQxNkJDNjg4MTAwRjZEQkM5IC8qIFN0b3JhZ2VNYW5hZ2VyTWVzc2FnZVJlY2Vp
dmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFN0b3JhZ2VNYW5h
Z2VyTWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvU3Rv
cmFnZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVD
VFNfRElSOyB9OwotCQkxQUIzMUE5NTE2QkM2ODgxMDBGNkRCQzkgLyogU3RvcmFnZU1hbmFnZXJN
ZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTdG9yYWdlTWFuYWdl
ck1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1N0b3JhZ2VNYW5hZ2Vy
TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJMUFCNDBF
RTMxQkY2NzdFMzAwQkE4MUJFIC8qIFdLTWVudUl0ZW1JZGVudGlmaWVycy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLTWVudUl0ZW1JZGVudGlmaWVycy5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFCNDBFRTQxQkY2NzdFMzAwQkE4MUJFIC8q
IFdLTWVudUl0ZW1JZGVudGlmaWVyc1ByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV0tNZW51SXRlbUlkZW50aWZpZXJzUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxQUI0NzRENzE4NEQ0M0ZEMDA1MUI2MjIgLyogV0tCdW5kbGVQYWdlTG9h
ZGVyQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQnVuZGxlUGFn
ZUxvYWRlckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzg4Miw2ICsz
ODgzLDExIEBACiAJCTkzNUVFQjk3MTI3NzYxNkQwMDMzMjJCOCAvKiBXS0J1bmRsZUJhY2tGb3J3
YXJkTGlzdEl0ZW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tC
dW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOTM1RUVCOTgxMjc3NjE2RDAwMzMyMkI4IC8qIFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRl
bS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0J1bmRsZUJhY2tGb3J3YXJk
TGlzdEl0ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM3MzVFQkExQzkyOTg2
MzAwMzM2RkE3IC8qIFdLUHJldmlld0FjdGlvbkl0ZW1JbnRlcm5hbC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXS1ByZXZpZXdBY3Rpb25JdGVtSW50ZXJuYWwuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTM3NjI3NDEyMkYxMTVDRDAwMzVCRjgwIC8qIFN0b3Jh
Z2VNYW5hZ2VyU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0
b3JhZ2VNYW5hZ2VyU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTM3NjI3
NDIyMkYxMTVDRDAwMzVCRjgwIC8qIFN0b3JhZ2VNYW5hZ2VyU2V0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFN0b3JhZ2VNYW5hZ2VyU2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTkzNzYyNzQzMjJGMTE1Q0UwMDM1QkY4MCAvKiBTdG9yYWdlTWFuYWdlclNl
dC5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTdG9yYWdlTWFuYWdlclNldC5t
ZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTM3OTEwREIyMkYxNkZD
OTAwM0JBMTQ0IC8qIFN0b3JhZ2VNYW5hZ2VyU2V0TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFN0b3JhZ2VNYW5hZ2VyU2V0TWVzc2FnZVJl
Y2VpdmVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvU3RvcmFnZU1hbmFnZXJT
ZXRNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9
OworCQk5Mzc5MTBERDIyRjE3MTgxMDAzQkExNDQgLyogU3RvcmFnZU1hbmFnZXJTZXRNZXNzYWdl
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTdG9yYWdlTWFuYWdlclNldE1l
c3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1N0b3JhZ2VNYW5hZ2VyU2V0
TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJOTM5MTA3
NEUxQkY2QkM2NTAwOEMxN0FEIC8qIFdLUHJldmlld0VsZW1lbnRJbmZvSW50ZXJuYWwuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tQcmV2aWV3RWxlbWVudEluZm9JbnRlcm5h
bC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzkxRjI4MzEyMUIzOEY1MDBFQkY3
RTggLyogV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkzOTFGMjg0MTIxQjM4RjUwMEVCRjdFOCAvKiBXZWJGcmFtZU5ldHdvcmtp
bmdDb250ZXh0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTM5MTAsNyArMzkxNiw2IEBACiAJCTkzQjI2MTQ4MjI3RDE0NzEwMEI5N0E3NiAvKiBpb3MgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmb2xkZXI7IHBh
dGggPSBpb3M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQjI2MTQ5MjI3RDE0NzIw
MEI5N0E3NiAvKiBTdG9yYWdlTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTdG9yYWdlTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0Iy
NjE0QTIyN0QxNDcyMDBCOTdBNzYgLyogU3RvcmFnZU1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RvcmFnZU1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk5M0IyNjE0QjIyN0QxNDcyMDBCOTdBNzYgLyogU3RvcmFnZU1hbmFn
ZXIubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU3RvcmFnZU1hbmFnZXIubWVz
c2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQjI2MTRDMjI3RDE0NzIw
MEI5N0E3NiAvKiBMb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBMb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTkzQkEwNERBMjE1MUFERjMwMDdGNDU1RiAvKiBXZWJTV1NlcnZlckNv
bm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0JB
MDREQjIxNTFBREYzMDA3RjQ1NUYgLyogV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzI4MSw3ICs3Mjg2LDkg
QEAKIAkJCQk5M0IyNjE0NjIyN0QxNDcxMDBCOTdBNzYgLyogTG9jYWxTdG9yYWdlRGF0YWJhc2VU
cmFja2VyLmggKi8sCiAJCQkJOTNCMjYxNEEyMjdEMTQ3MjAwQjk3QTc2IC8qIFN0b3JhZ2VNYW5h
Z2VyLmNwcCAqLywKIAkJCQk5M0IyNjE0OTIyN0QxNDcyMDBCOTdBNzYgLyogU3RvcmFnZU1hbmFn
ZXIuaCAqLywKLQkJCQk5M0IyNjE0QjIyN0QxNDcyMDBCOTdBNzYgLyogU3RvcmFnZU1hbmFnZXIu
bWVzc2FnZXMuaW4gKi8sCisJCQkJOTM3NjI3NDEyMkYxMTVDRDAwMzVCRjgwIC8qIFN0b3JhZ2VN
YW5hZ2VyU2V0LmNwcCAqLywKKwkJCQk5Mzc2Mjc0MjIyRjExNUNEMDAzNUJGODAgLyogU3RvcmFn
ZU1hbmFnZXJTZXQuaCAqLywKKwkJCQk5Mzc2Mjc0MzIyRjExNUNFMDAzNUJGODAgLyogU3RvcmFn
ZU1hbmFnZXJTZXQubWVzc2FnZXMuaW4gKi8sCiAJCQkpOwogCQkJcGF0aCA9IFdlYlN0b3JhZ2U7
CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtODc0MSw4ICs4NzQ4LDggQEAKIAkJCQky
REU2OTQzQzE4QkQyQTY4MDA1QzE1RTUgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1l
c3NhZ2VzLmggKi8sCiAJCQkJMUEzMzRERUIxNkRFOEY4ODAwNkE4RTM4IC8qIFN0b3JhZ2VBcmVh
TWFwTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkxQTMzNERFQzE2REU4Rjg4MDA2QThFMzgg
LyogU3RvcmFnZUFyZWFNYXBNZXNzYWdlcy5oICovLAotCQkJCTFBQjMxQTk0MTZCQzY4ODEwMEY2
REJDOSAvKiBTdG9yYWdlTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCi0JCQkJMUFCMzFB
OTUxNkJDNjg4MTAwRjZEQkM5IC8qIFN0b3JhZ2VNYW5hZ2VyTWVzc2FnZXMuaCAqLywKKwkJCQk5
Mzc5MTBEQjIyRjE2RkM5MDAzQkExNDQgLyogU3RvcmFnZU1hbmFnZXJTZXRNZXNzYWdlUmVjZWl2
ZXIuY3BwICovLAorCQkJCTkzNzkxMEREMjJGMTcxODEwMDNCQTE0NCAvKiBTdG9yYWdlTWFuYWdl
clNldE1lc3NhZ2VzLmggKi8sCiAJCQkJNTExOEU5QTUxRjI5NTk2MzAwM0VGOUY1IC8qIFN0b3Jh
Z2VQcm9jZXNzTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQk1MTE4RTlBNjFGMjk1OTYzMDAz
RUY5RjUgLyogU3RvcmFnZVByb2Nlc3NNZXNzYWdlcy5oICovLAogCQkJCTUxMThFOUE3MUYyOTU5
NjMwMDNFRjlGNSAvKiBTdG9yYWdlUHJvY2Vzc1Byb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywK
QEAgLTk2NDksNyArOTY1Niw4IEBACiAJCQkJMUFDRUNEMjUxNzE2MkRCMTAwMUZDOUVGIC8qIFN0
b3JhZ2VBcmVhTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTMzNERFRTE2REU4Rjg4MDA2QThF
MzggLyogU3RvcmFnZUFyZWFNYXBNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNCMjYx
NEQyMjdEMTQ5RTAwQjk3QTc2IC8qIFN0b3JhZ2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKLQkJ
CQkxQUIzMUE5NzE2QkM2ODgxMDBGNkRCQzkgLyogU3RvcmFnZU1hbmFnZXJNZXNzYWdlcy5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJOTM3NjI3NDQyMkYxMTVERDAwMzVCRjgwIC8qIFN0b3JhZ2VNYW5h
Z2VyU2V0LmggaW4gSGVhZGVycyAqLywKKwkJCQk5Mzc5MTBERTIyRjE3MUE5MDAzQkExNDQgLyog
U3RvcmFnZU1hbmFnZXJTZXRNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFMDBENkMx
ODMyN0MxMjAwMDg3REQ3IC8qIFN0cmluZ1JlZmVyZW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
Mjk2QkQ4NUQxNTAxOUJDMzAwNzFGNDI0IC8qIFN0cmluZ1V0aWxpdGllcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTdGRDMxODYyMkIzNTE2QzAwOEQwRThCIC8qIFN1YkZyYW1lU09BdXRob3JpemF0
aW9uU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMTE2MCw3ICsxMTE2OCw3IEBACiAJCQkJ
MkQ5MkE3ODcyMTJCNkFCMTAwRjQ5M0ZEIC8qIFNoYXJlYWJsZUJpdG1hcC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkyREU2OTQzRDE4QkQyQTY4MDA1QzE1RTUgLyogU21hcnRNYWduaWZpY2F0aW9u
Q29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTMzNERF
RDE2REU4Rjg4MDA2QThFMzggLyogU3RvcmFnZUFyZWFNYXBNZXNzYWdlUmVjZWl2ZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCi0JCQkJMUFCMzFBOTYxNkJDNjg4MTAwRjZEQkM5IC8qIFN0b3JhZ2VNYW5h
Z2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTkzNzkxMERDMjJGMTcx
MDMwMDNCQTE0NCAvKiBTdG9yYWdlTWFuYWdlclNldE1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkyRDkyQTc4MzIxMkI2QTcxMDBGNDkzRkQgLyogU3RyaW5nUmVmZXJlbmNl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEMTFCNzUxMjEyNkEyODIwMDZGODg3OCAvKiBVbmlm
aWVkU291cmNlMS1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJEMTFCNzUyMjEyNkEyODIwMDZG
ODg3OCAvKiBVbmlmaWVkU291cmNlMS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUu
Y3BwCmluZGV4IDIwY2U1NTkxMWQ3MDY1MWMzMzVhNzBhY2YyNGU1YmRmYzIxYmQ2MzEuLjcxNzhh
NTI5NDdiZTA3ODQwNDFhYWExMjg4MjIxYTI4YzBiNDUyZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNw
cApAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9j
ZXNzUG9vbE1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVy
LmgiCiAjaW5jbHVkZSAiV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiV2Vi
c2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElD
YXN0Lmg+CkBAIC0zNTEsNiArMzUyLDkgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6c2V0UHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZChXZWJQYWdlR3JvdXBQcm94eSogcGFnZUdyb3VwLCBib28KICAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbmFibGVQcml2YXRlQnJvd3NpbmdGb3JUZXN0aW5nKGVu
YWJsZWQpOwogCiAgICAgUGFnZUdyb3VwOjpwYWdlR3JvdXAocGFnZUdyb3VwLT5pZGVudGlmaWVy
KCkpLT5lbmFibGVMZWdhY3lQcml2YXRlQnJvd3NpbmdGb3JUZXN0aW5nKGVuYWJsZWQpOworCisg
ICAgYXV0byB3ZWJTdG9yYWdlTmFtZVNwYWNlUHJvdmlkZXIgPSBXZWJTdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXI6OmdldE9yQ3JlYXRlKHBhZ2VHcm91cC0+cGFnZUdyb3VwSUQoKSk7CisgICAgd2Vi
U3RvcmFnZU5hbWVTcGFjZVByb3ZpZGVyLT5lbmFibGVMZWdhY3lQcml2YXRlQnJvd3NpbmdGb3JU
ZXN0aW5nKGVuYWJsZWQpOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlOjpzZXRQb3B1cEJsb2Nr
aW5nRW5hYmxlZChXZWJQYWdlR3JvdXBQcm94eSogcGFnZUdyb3VwLCBib29sIGVuYWJsZWQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggYTJkYTEyYzYwMjI5Mzcz
Y2Y4Nzg5MmI4M2RhYTU3NzM1MDBhNzdmMi4uODhiZDliZGQwNWRhODA5OGE3ZDU2OTA4ZmY3ZmQ2
ZDMyMjA0MzYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAt
Njc3LDcgKzY3Nyw2IEBAIHZvaWQgV2ViUHJvY2Vzczo6Y3JlYXRlV2ViUGFnZShQYWdlSWRlbnRp
ZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmCiAgICAgLy8gSXQgaXMgbmVj
ZXNzYXJ5IHRvIGNoZWNrIGZvciBwYWdlIGV4aXN0ZW5jZSBoZXJlIHNpbmNlIGR1cmluZyBhIHdp
bmRvdy5vcGVuKCkgKG9yIHRhcmdldGVkCiAgICAgLy8gbGluaykgdGhlIFdlYlBhZ2UgZ2V0cyBj
cmVhdGVkIGJvdGggaW4gdGhlIHN5bmNocm9ub3VzIGhhbmRsZXIgYW5kIHRocm91Z2ggdGhlIG5v
cm1hbCB3YXkuIAogICAgIGF1dG8gcmVzdWx0ID0gbV9wYWdlTWFwLmFkZChwYWdlSUQsIG51bGxw
dHIpOwotICAgIGF1dG8gb2xkUGFnZUlEID0gcGFyYW1ldGVycy5vbGRQYWdlSUQgPyBwYXJhbWV0
ZXJzLm9sZFBhZ2VJRC52YWx1ZSgpIDogcGFnZUlEOwogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRy
eSkgewogICAgICAgICBBU1NFUlQoIXJlc3VsdC5pdGVyYXRvci0+dmFsdWUpOwogICAgICAgICBy
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gV2ViUGFnZTo6Y3JlYXRlKHBhZ2VJRCwgV1RGTW92ZShw
YXJhbWV0ZXJzKSk7CkBAIC02ODgsOCArNjg3LDYgQEAgdm9pZCBXZWJQcm9jZXNzOjpjcmVhdGVX
ZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYK
ICAgICB9IGVsc2UKICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+cmVpbml0aWFsaXpl
V2ViUGFnZShXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKIAotICAgIGVuc3VyZU5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6V2ViUGFnZVdhc0FkZGVkKHJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPnNl
c3Npb25JRCgpLCBwYWdlSUQsIG9sZFBhZ2VJRCksIDApOwotCiAgICAgQVNTRVJUKHJlc3VsdC5p
dGVyYXRvci0+dmFsdWUpOwogfQogCkBAIC02OTcsNyArNjk0LDYgQEAgdm9pZCBXZWJQcm9jZXNz
OjpyZW1vdmVXZWJQYWdlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUGFnZUlkZW50aWZpZXIg
cGFnZUlEKQogewogICAgIEFTU0VSVChtX3BhZ2VNYXAuY29udGFpbnMocGFnZUlEKSk7CiAKLSAg
ICBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNz
YWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OldlYlBhZ2VXYXNSZW1vdmVkKHNl
c3Npb25JRCwgcGFnZUlEKSwgMCk7CiAgICAgcGFnZVdpbGxMZWF2ZVdpbmRvdyhwYWdlSUQpOwog
ICAgIG1fcGFnZU1hcC5yZW1vdmUocGFnZUlEKTsKIApAQCAtMTI0NiwxNiArMTI0Miw2IEBAIE5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbiYgV2ViUHJvY2Vzczo6ZW5zdXJlTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uKCkKICAgICAgICAgICAgIENSQVNIKCk7CiAKICAgICAgICAgbV9uZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24gPSBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZShjb25uZWN0
aW9uSWRlbnRpZmllcik7Ci0KLSAgICAgICAgLy8gVG8gcmVjb3ZlciB3ZWIgc3RvcmFnZSwgbmV0
d29yayBwcm9jZXNzIG5lZWRzIHRvIGtub3cgYWN0aXZlIHdlYnBhZ2VzIHRvIHByZXBhcmUgc2Vz
c2lvbiBzdG9yYWdlLgotICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5ODA1MS4KLSAgICAgICAgLy8gV2VicGFnZSBzaG91bGQgYmUgYWRk
ZWQgd2hlbiBTdG9yYWdlIGlzIHVzZWQsIG5vdCB3aGVuIGNvbm5lY3Rpb24gaXMgcmUtZXN0YWJs
aXNoZWQuCi0gICAgICAgIGZvciAoYXV0byYgcGFnZSA6IG1fcGFnZU1hcCkgewotICAgICAgICAg
ICAgaWYgKCFwYWdlLnZhbHVlKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAg
ICAgICBtX25ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpXZWJQYWdlV2FzQWRkZWQocGFnZS52
YWx1ZS0+c2Vzc2lvbklEKCksIHBhZ2Uua2V5LCBwYWdlLmtleSksIDApOwotICAgICAgICB9CiAg
ICAgfQogICAgIAogICAgIHJldHVybiAqbV9uZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb247CkBAIC0x
Mjg2LDcgKzEyNzIsNyBAQCB2b2lkIFdlYlByb2Nlc3M6Om5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bkNsb3NlZChOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24qIGNvbm5lYwogICAgIEFTU0VSVChtX25l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbik7CiAgICAgQVNTRVJUX1VOVVNFRChjb25uZWN0aW9uLCBt
X25ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiA9PSBjb25uZWN0aW9uKTsKIAotICAgIGZvciAoYXV0
byogc3RvcmFnZUFyZWFNYXAgOiBtX3N0b3JhZ2VBcmVhTWFwcy52YWx1ZXMoKSkKKyAgICBmb3Ig
KGF1dG8qIHN0b3JhZ2VBcmVhTWFwIDogY29weVRvVmVjdG9yKG1fc3RvcmFnZUFyZWFNYXBzLnZh
bHVlcygpKSkKICAgICAgICAgc3RvcmFnZUFyZWFNYXAtPmRpc2Nvbm5lY3QoKTsKIAogI2lmIEVO
QUJMRShJTkRFWEVEX0RBVEFCQVNFKQpAQCAtMTY3NCw4ICsxNjYwLDggQEAgdm9pZCBXZWJQcm9j
ZXNzOjpub25WaXNpYmxlUHJvY2Vzc0NsZWFudXBUaW1lckZpcmVkKCkKIAogdm9pZCBXZWJQcm9j
ZXNzOjpyZWdpc3RlclN0b3JhZ2VBcmVhTWFwKFN0b3JhZ2VBcmVhTWFwJiBzdG9yYWdlQXJlYU1h
cCkKIHsKLSAgICBBU1NFUlQoIW1fc3RvcmFnZUFyZWFNYXBzLmNvbnRhaW5zKHN0b3JhZ2VBcmVh
TWFwLmlkZW50aWZpZXIoKSkpOwotICAgIG1fc3RvcmFnZUFyZWFNYXBzLnNldChzdG9yYWdlQXJl
YU1hcC5pZGVudGlmaWVyKCksICZzdG9yYWdlQXJlYU1hcCk7CisgICAgaWYgKCFtX3N0b3JhZ2VB
cmVhTWFwcy5jb250YWlucyhzdG9yYWdlQXJlYU1hcC5pZGVudGlmaWVyKCkpKQorICAgICAgICBt
X3N0b3JhZ2VBcmVhTWFwcy5zZXQoc3RvcmFnZUFyZWFNYXAuaWRlbnRpZmllcigpLCAmc3RvcmFn
ZUFyZWFNYXApOwogfQogCiB2b2lkIFdlYlByb2Nlc3M6OnVucmVnaXN0ZXJTdG9yYWdlQXJlYU1h
cChTdG9yYWdlQXJlYU1hcCYgc3RvcmFnZUFyZWFNYXApCkBAIC0xNjg3LDcgKzE2NzMsNiBAQCB2
b2lkIFdlYlByb2Nlc3M6OnVucmVnaXN0ZXJTdG9yYWdlQXJlYU1hcChTdG9yYWdlQXJlYU1hcCYg
c3RvcmFnZUFyZWFNYXApCiAKIFN0b3JhZ2VBcmVhTWFwKiBXZWJQcm9jZXNzOjpzdG9yYWdlQXJl
YU1hcCh1aW50NjRfdCBpZGVudGlmaWVyKSBjb25zdAogewotICAgIEFTU0VSVChtX3N0b3JhZ2VB
cmVhTWFwcy5jb250YWlucyhpZGVudGlmaWVyKSk7CiAgICAgcmV0dXJuIG1fc3RvcmFnZUFyZWFN
YXBzLmdldChpZGVudGlmaWVyKTsKIH0KIApAQCAtMTY5NSwxNSArMTY4MCw2IEBAIHZvaWQgV2Vi
UHJvY2Vzczo6ZW5hYmxlUHJpdmF0ZUJyb3dzaW5nRm9yVGVzdGluZyhib29sIGVuYWJsZSkKIHsK
ICAgICBpZiAoZW5hYmxlKQogICAgICAgICBlbnN1cmVMZWdhY3lQcml2YXRlQnJvd3NpbmdTZXNz
aW9uSW5OZXR3b3JrUHJvY2VzcygpOwotCi0gICAgVmVjdG9yPFBhZ2VJZGVudGlmaWVyPiBwYWdl
SURzOwotICAgIGZvciAoYXV0byYgcGFnZSA6IG1fcGFnZU1hcCkgewotICAgICAgICBpZiAocGFn
ZS52YWx1ZSkKLSAgICAgICAgICAgIHBhZ2VJRHMuYXBwZW5kKHBhZ2Uua2V5KTsKLSAgICB9Ci0K
LSAgICBpZiAoIXBhZ2VJRHMuaXNFbXB0eSgpKQotICAgICAgICBlbnN1cmVOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OldlYlByb2Nlc3NTZXNzaW9uQ2hhbmdlZChlbmFibGUgPyBQQUw6OlNl
c3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpIDogUEFMOjpTZXNzaW9uSUQ6OmRlZmF1
bHRTZXNzaW9uSUQoKSwgcGFnZUlEcyksIDApOwogfQogCiB2b2lkIFdlYlByb2Nlc3M6OnNldFJl
c291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGJvb2wgZW5hYmxlZCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwCmlu
ZGV4IDc0MGMwZGJjMDdjYTdkNTVlMTNjZTJiMTkwMjMzM2MwZGUwYTYyNjMuLmIzNGUzNzlkYWFk
OGNmNjlmNDY1ZDRiYjZhYmU1MGVjY2Q3MmZhNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNwcApAQCAtMzMsNiAr
MzMsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU2NoZW1lUmVnaXN0cnkuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3Mu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1N0b3JhZ2VUeXBlLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC01MCw3ICs1MSw3IEBAIFJlZjxTdG9yYWdl
QXJlYUltcGw+IFN0b3JhZ2VBcmVhSW1wbDo6Y3JlYXRlKFJlZjxTdG9yYWdlQXJlYU1hcD4mJiBz
dG9yYWdlQXJlYU1hCiAKIFN0b3JhZ2VBcmVhSW1wbDo6U3RvcmFnZUFyZWFJbXBsKFJlZjxTdG9y
YWdlQXJlYU1hcD4mJiBzdG9yYWdlQXJlYU1hcCkKICAgICA6IG1fc3RvcmFnZUFyZWFJRChnZW5l
cmF0ZVN0b3JhZ2VBcmVhSUQoKSkKLSAgICAsIG1fc3RvcmFnZUFyZWFNYXAoV1RGTW92ZShzdG9y
YWdlQXJlYU1hcCkpCisgICAgLCBtX3N0b3JhZ2VBcmVhTWFwKG1ha2VXZWFrUHRyKHN0b3JhZ2VB
cmVhTWFwLmdldCgpKSkKIHsKIH0KIApAQCAtNjAsNDkgKzYxLDU0IEBAIFN0b3JhZ2VBcmVhSW1w
bDo6flN0b3JhZ2VBcmVhSW1wbCgpCiAKIHVuc2lnbmVkIFN0b3JhZ2VBcmVhSW1wbDo6bGVuZ3Ro
KCkKIHsKLSAgICByZXR1cm4gbV9zdG9yYWdlQXJlYU1hcC0+bGVuZ3RoKCk7CisgICAgcmV0dXJu
IG1fc3RvcmFnZUFyZWFNYXAgPyBtX3N0b3JhZ2VBcmVhTWFwLT5sZW5ndGgoKSA6IDA7CiB9CiAK
IFN0cmluZyBTdG9yYWdlQXJlYUltcGw6OmtleSh1bnNpZ25lZCBpbmRleCkKIHsKLSAgICByZXR1
cm4gbV9zdG9yYWdlQXJlYU1hcC0+a2V5KGluZGV4KTsKKyAgICByZXR1cm4gbV9zdG9yYWdlQXJl
YU1hcCA/IG1fc3RvcmFnZUFyZWFNYXAtPmtleShpbmRleCkgOiBudWxsU3RyaW5nKCk7CiB9CiAK
IFN0cmluZyBTdG9yYWdlQXJlYUltcGw6Oml0ZW0oY29uc3QgU3RyaW5nJiBrZXkpCiB7Ci0gICAg
cmV0dXJuIG1fc3RvcmFnZUFyZWFNYXAtPml0ZW0oa2V5KTsKLX0KLQotYm9vbCBTdG9yYWdlQXJl
YUltcGw6OnByZXdhcm0oKQotewotICAgIHJldHVybiBtX3N0b3JhZ2VBcmVhTWFwLT5wcmV3YXJt
KCk7CisgICAgcmV0dXJuIG1fc3RvcmFnZUFyZWFNYXAgPyBtX3N0b3JhZ2VBcmVhTWFwLT5pdGVt
KGtleSkgOiBudWxsU3RyaW5nKCk7CiB9CiAKIHZvaWQgU3RvcmFnZUFyZWFJbXBsOjpzZXRJdGVt
KEZyYW1lKiBzb3VyY2VGcmFtZSwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFs
dWUsIGJvb2wmIHF1b3RhRXhjZXB0aW9uKQogewogICAgIEFTU0VSVCghdmFsdWUuaXNOdWxsKCkp
OwogCi0gICAgbV9zdG9yYWdlQXJlYU1hcC0+c2V0SXRlbShzb3VyY2VGcmFtZSwgdGhpcywga2V5
LCB2YWx1ZSwgcXVvdGFFeGNlcHRpb24pOworICAgIGlmIChtX3N0b3JhZ2VBcmVhTWFwKQorICAg
ICAgICBtX3N0b3JhZ2VBcmVhTWFwLT5zZXRJdGVtKHNvdXJjZUZyYW1lLCB0aGlzLCBrZXksIHZh
bHVlLCBxdW90YUV4Y2VwdGlvbik7CiB9CiAKIHZvaWQgU3RvcmFnZUFyZWFJbXBsOjpyZW1vdmVJ
dGVtKEZyYW1lKiBzb3VyY2VGcmFtZSwgY29uc3QgU3RyaW5nJiBrZXkpCiB7Ci0gICAgbV9zdG9y
YWdlQXJlYU1hcC0+cmVtb3ZlSXRlbShzb3VyY2VGcmFtZSwgdGhpcywga2V5KTsKKyAgICBpZiAo
bV9zdG9yYWdlQXJlYU1hcCkKKyAgICAgICAgbV9zdG9yYWdlQXJlYU1hcC0+cmVtb3ZlSXRlbShz
b3VyY2VGcmFtZSwgdGhpcywga2V5KTsKIH0KIAogdm9pZCBTdG9yYWdlQXJlYUltcGw6OmNsZWFy
KEZyYW1lKiBzb3VyY2VGcmFtZSkKIHsKLSAgICBtX3N0b3JhZ2VBcmVhTWFwLT5jbGVhcihzb3Vy
Y2VGcmFtZSwgdGhpcyk7CisgICAgaWYgKG1fc3RvcmFnZUFyZWFNYXApCisgICAgICAgIG1fc3Rv
cmFnZUFyZWFNYXAtPmNsZWFyKHNvdXJjZUZyYW1lLCB0aGlzKTsKIH0KIAogYm9vbCBTdG9yYWdl
QXJlYUltcGw6OmNvbnRhaW5zKGNvbnN0IFN0cmluZyYga2V5KQogewotICAgIHJldHVybiBtX3N0
b3JhZ2VBcmVhTWFwLT5jb250YWlucyhrZXkpOworICAgIGlmIChtX3N0b3JhZ2VBcmVhTWFwKQor
ICAgICAgICByZXR1cm4gbV9zdG9yYWdlQXJlYU1hcC0+Y29udGFpbnMoa2V5KTsKKyAgICAKKyAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKIFN0b3JhZ2VUeXBlIFN0b3JhZ2VBcmVhSW1wbDo6c3RvcmFn
ZVR5cGUoKSBjb25zdAogewotICAgIHJldHVybiBtX3N0b3JhZ2VBcmVhTWFwLT5zdG9yYWdlVHlw
ZSgpOworICAgIGlmIChtX3N0b3JhZ2VBcmVhTWFwKQorICAgICAgICByZXR1cm4gbV9zdG9yYWdl
QXJlYU1hcC0+c3RvcmFnZVR5cGUoKTsKKyAgICAKKyAgICAvLyBXZSBwcm9iYWJseSBuZWVkIGFu
IEludmFsaWQgdHlwZS4KKyAgICByZXR1cm4gU3RvcmFnZVR5cGU6OkxvY2FsOwogfQogCiBzaXpl
X3QgU3RvcmFnZUFyZWFJbXBsOjptZW1vcnlCeXRlc1VzZWRCeUNhY2hlKCkKQEAgLTExMiwxMiAr
MTE4LDEyIEBAIHNpemVfdCBTdG9yYWdlQXJlYUltcGw6Om1lbW9yeUJ5dGVzVXNlZEJ5Q2FjaGUo
KQogCiB2b2lkIFN0b3JhZ2VBcmVhSW1wbDo6aW5jcmVtZW50QWNjZXNzQ291bnQoKQogewotICAg
IC8vIFN0b3JhZ2UgYWNjZXNzIGlzIGhhbmRsZWQgaW4gdGhlIFVJIHByb2Nlc3MsIHNvIHRoZXJl
J3Mgbm90aGluZyB0byBkbyBoZXJlLgorICAgIC8vIFN0b3JhZ2UgYWNjZXNzIGlzIGhhbmRsZWQg
aW4gdGhlIG5ldHdvcmsgcHJvY2Vzcywgc28gdGhlcmUncyBub3RoaW5nIHRvIGRvIGhlcmUuCiB9
CiAKIHZvaWQgU3RvcmFnZUFyZWFJbXBsOjpkZWNyZW1lbnRBY2Nlc3NDb3VudCgpCiB7Ci0gICAg
Ly8gU3RvcmFnZSBhY2Nlc3MgaXMgaGFuZGxlZCBpbiB0aGUgVUkgcHJvY2Vzcywgc28gdGhlcmUn
cyBub3RoaW5nIHRvIGRvIGhlcmUuCisgICAgLy8gU3RvcmFnZSBhY2Nlc3MgaXMgaGFuZGxlZCBp
biB0aGUgbmV0d29yayBwcm9jZXNzLCBzbyB0aGVyZSdzIG5vdGhpbmcgdG8gZG8gaGVyZS4KIH0K
IAogdm9pZCBTdG9yYWdlQXJlYUltcGw6OmNsb3NlRGF0YWJhc2VJZklkbGUoKQpAQCAtMTI2LDkg
KzEzMiw0IEBAIHZvaWQgU3RvcmFnZUFyZWFJbXBsOjpjbG9zZURhdGFiYXNlSWZJZGxlKCkKICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBT
dG9yYWdlQXJlYUltcGw6OnNlY3VyaXR5T3JpZ2luKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9z
dG9yYWdlQXJlYU1hcC0+c2VjdXJpdHlPcmlnaW4oKS5kYXRhKCk7Ci19Ci0KIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3Jh
Z2UvU3RvcmFnZUFyZWFJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFn
ZS9TdG9yYWdlQXJlYUltcGwuaAppbmRleCBiOGYxNmYyZWFhNWE5ZWFjMDY2NDViMzhlNWYwZmYx
NDRkZGQ1ODI0Li4yOWM1MDdiYmEyNTgwZGFlMDg1MzgyMTJiN2UyMTQwZjJhMDViYzA4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUlt
cGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJl
YUltcGwuaApAQCAtNjAsMTEgKzYwLDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGluY3JlbWVudEFj
Y2Vzc0NvdW50KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkZWNyZW1lbnRBY2Nlc3NDb3VudCgpIG92
ZXJyaWRlOwogICAgIHZvaWQgY2xvc2VEYXRhYmFzZUlmSWRsZSgpIG92ZXJyaWRlOwotICAgIGNv
bnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4oKSBjb25zdCBv
dmVycmlkZTsKLSAgICBib29sIHByZXdhcm0oKSBmaW5hbDsKIAogICAgIHVpbnQ2NF90IG1fc3Rv
cmFnZUFyZWFJRDsKLSAgICBSZWY8U3RvcmFnZUFyZWFNYXA+IG1fc3RvcmFnZUFyZWFNYXA7Cisg
ICAgV2Vha1B0cjxTdG9yYWdlQXJlYU1hcD4gbV9zdG9yYWdlQXJlYU1hcDsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuY3BwCmluZGV4IDNlMDUwZGYxNzhhNDQ4YmM5MzJjYTRi
YWVjMTAzMWE3MmY5MzgwZTYuLjExY2IyMmQyODY3OTU0MWYxZjgzNzJlMjJlNTFmOGM4MjBjY2Ex
MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3Jh
Z2VBcmVhTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9T
dG9yYWdlQXJlYU1hcC5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJOZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJTdG9yYWdlQXJlYUltcGwuaCIKICNpbmNsdWRl
ICJTdG9yYWdlQXJlYU1hcE1lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiU3RvcmFnZU1hbmFnZXJNZXNz
YWdlcy5oIgorI2luY2x1ZGUgIlN0b3JhZ2VNYW5hZ2VyU2V0TWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJTdG9yYWdlTmFtZXNwYWNlSW1wbC5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRl
ICJXZWJQYWdlR3JvdXBQcm94eS5oIgpAQCAtNDgsNDAgKzQ4LDI2IEBACiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1zdGF0aWMgdWludDY0X3QgZ2VuZXJh
dGVTdG9yYWdlTWFwSUQoKQotewotICAgIHN0YXRpYyB1aW50NjRfdCBzdG9yYWdlTWFwSUQ7Ci0g
ICAgcmV0dXJuICsrc3RvcmFnZU1hcElEOwotfQotCiBSZWY8U3RvcmFnZUFyZWFNYXA+IFN0b3Jh
Z2VBcmVhTWFwOjpjcmVhdGUoU3RvcmFnZU5hbWVzcGFjZUltcGwqIHN0b3JhZ2VOYW1lc3BhY2Us
IFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiBzZWN1cml0eU9yaWdpbikKIHsKICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9yYWdlQXJlYU1hcChzdG9yYWdlTmFtZXNwYWNlLCBXVEZN
b3ZlKHNlY3VyaXR5T3JpZ2luKSkpOwogfQogCiBTdG9yYWdlQXJlYU1hcDo6U3RvcmFnZUFyZWFN
YXAoU3RvcmFnZU5hbWVzcGFjZUltcGwqIHN0b3JhZ2VOYW1lc3BhY2UsIFJlZjxXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbj4mJiBzZWN1cml0eU9yaWdpbikKLSAgICA6IG1fc3RvcmFnZU5hbWVzcGFj
ZSgqc3RvcmFnZU5hbWVzcGFjZSkKLSAgICAsIG1fc3RvcmFnZU1hcElEKGdlbmVyYXRlU3RvcmFn
ZU1hcElEKCkpCisgICAgOiBtX3N0b3JhZ2VOYW1lc3BhY2Uoc3RvcmFnZU5hbWVzcGFjZSkKKyAg
ICAsIG1fc3RvcmFnZU1hcElEKDApCiAgICAgLCBtX3N0b3JhZ2VUeXBlKHN0b3JhZ2VOYW1lc3Bh
Y2UtPnN0b3JhZ2VUeXBlKCkpCi0gICAgLCBtX3N0b3JhZ2VOYW1lc3BhY2VJRChzdG9yYWdlTmFt
ZXNwYWNlLT5zdG9yYWdlTmFtZXNwYWNlSUQoKSkKICAgICAsIG1fcXVvdGFJbkJ5dGVzKHN0b3Jh
Z2VOYW1lc3BhY2UtPnF1b3RhSW5CeXRlcygpKQogICAgICwgbV9zZWN1cml0eU9yaWdpbihXVEZN
b3ZlKHNlY3VyaXR5T3JpZ2luKSkKICAgICAsIG1fY3VycmVudFNlZWQoMCkKICAgICAsIG1faGFz
UGVuZGluZ0NsZWFyKGZhbHNlKQotICAgICwgbV9oYXNQZW5kaW5nR2V0VmFsdWVzKGZhbHNlKQog
ewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnJlZ2lzdGVyU3RvcmFnZUFyZWFNYXAoKnRo
aXMpOwogICAgIGNvbm5lY3QoKTsKIH0KIAogU3RvcmFnZUFyZWFNYXA6On5TdG9yYWdlQXJlYU1h
cCgpCiB7Ci0gICAgaWYgKG1fc3RvcmFnZVR5cGUgIT0gU3RvcmFnZVR5cGU6OkVwaGVtZXJhbExv
Y2FsKQotICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXI6
OkRlc3Ryb3lTdG9yYWdlTWFwKG1fc3RvcmFnZU1hcElEKSwgMCk7Ci0KLSAgICBtX3N0b3JhZ2VO
YW1lc3BhY2UtPmRpZERlc3Ryb3lTdG9yYWdlQXJlYU1hcCgqdGhpcyk7Ci0KLSAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS51bnJlZ2lzdGVyU3RvcmFnZUFyZWFNYXAoKnRoaXMpOworICAgIGRp
c2Nvbm5lY3QoKTsKIH0KIAogdW5zaWduZWQgU3RvcmFnZUFyZWFNYXA6Omxlbmd0aCgpCkBAIC0x
MjIsNyArMTA4LDcgQEAgdm9pZCBTdG9yYWdlQXJlYU1hcDo6c2V0SXRlbShGcmFtZSogc291cmNl
RnJhbWUsIFN0b3JhZ2VBcmVhSW1wbCogc291cmNlQXJlYSwgY28KIAogICAgIG1fcGVuZGluZ1Zh
bHVlQ2hhbmdlcy5hZGQoa2V5KTsKIAotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3Vy
ZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpT
dG9yYWdlTWFuYWdlcjo6U2V0SXRlbShtX3NlY3VyaXR5T3JpZ2luLT5kYXRhKCksIG1fc3RvcmFn
ZU1hcElELCBzb3VyY2VBcmVhLT5zdG9yYWdlQXJlYUlEKCksIG1fY3VycmVudFNlZWQsIGtleSwg
dmFsdWUsIHNvdXJjZUZyYW1lLT5kb2N1bWVudCgpLT51cmwoKSksIDApOworICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rp
b24oKS5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdlclNldDo6U2V0SXRlbShtX3N0b3JhZ2VN
YXBJRCwgc291cmNlQXJlYS0+c3RvcmFnZUFyZWFJRCgpLCBtX2N1cnJlbnRTZWVkLCBrZXksIHZh
bHVlLCBzb3VyY2VGcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkpLCAwKTsKIH0KIAogdm9pZCBTdG9y
YWdlQXJlYU1hcDo6cmVtb3ZlSXRlbShXZWJDb3JlOjpGcmFtZSogc291cmNlRnJhbWUsIFN0b3Jh
Z2VBcmVhSW1wbCogc291cmNlQXJlYSwgY29uc3QgU3RyaW5nJiBrZXkpCkBAIC0xMzgsMTYgKzEy
NCwxOCBAQCB2b2lkIFN0b3JhZ2VBcmVhTWFwOjpyZW1vdmVJdGVtKFdlYkNvcmU6OkZyYW1lKiBz
b3VyY2VGcmFtZSwgU3RvcmFnZUFyZWFJbXBsKiBzbwogCiAgICAgbV9wZW5kaW5nVmFsdWVDaGFu
Z2VzLmFkZChrZXkpOwogCi0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VN
YW5hZ2VyOjpSZW1vdmVJdGVtKG1fc2VjdXJpdHlPcmlnaW4tPmRhdGEoKSwgbV9zdG9yYWdlTWFw
SUQsIHNvdXJjZUFyZWEtPnN0b3JhZ2VBcmVhSUQoKSwgbV9jdXJyZW50U2VlZCwga2V5LCBzb3Vy
Y2VGcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChN
ZXNzYWdlczo6U3RvcmFnZU1hbmFnZXJTZXQ6OlJlbW92ZUl0ZW0obV9zdG9yYWdlTWFwSUQsIHNv
dXJjZUFyZWEtPnN0b3JhZ2VBcmVhSUQoKSwgbV9jdXJyZW50U2VlZCwga2V5LCBzb3VyY2VGcmFt
ZS0+ZG9jdW1lbnQoKS0+dXJsKCkpLCAwKTsKIH0KIAogdm9pZCBTdG9yYWdlQXJlYU1hcDo6Y2xl
YXIoV2ViQ29yZTo6RnJhbWUqIHNvdXJjZUZyYW1lLCBTdG9yYWdlQXJlYUltcGwqIHNvdXJjZUFy
ZWEpCiB7CisgICAgY29ubmVjdCgpOworCiAgICAgcmVzZXRWYWx1ZXMoKTsKIAogICAgIG1faGFz
UGVuZGluZ0NsZWFyID0gdHJ1ZTsKICAgICBtX3N0b3JhZ2VNYXAgPSBTdG9yYWdlTWFwOjpjcmVh
dGUobV9xdW90YUluQnl0ZXMpOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpTdG9y
YWdlTWFuYWdlcjo6Q2xlYXIobV9zZWN1cml0eU9yaWdpbi0+ZGF0YSgpLCBtX3N0b3JhZ2VNYXBJ
RCwgc291cmNlQXJlYS0+c3RvcmFnZUFyZWFJRCgpLCBtX2N1cnJlbnRTZWVkLCBzb3VyY2VGcmFt
ZS0+ZG9jdW1lbnQoKS0+dXJsKCkpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5l
bnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdl
czo6U3RvcmFnZU1hbmFnZXJTZXQ6OkNsZWFyKG1fc3RvcmFnZU1hcElELCBzb3VyY2VBcmVhLT5z
dG9yYWdlQXJlYUlEKCksIG1fY3VycmVudFNlZWQsIHNvdXJjZUZyYW1lLT5kb2N1bWVudCgpLT51
cmwoKSksIDApOwogfQogCiBib29sIFN0b3JhZ2VBcmVhTWFwOjpjb250YWlucyhjb25zdCBTdHJp
bmcmIGtleSkKQEAgLTE2Myw3ICsxNTEsNiBAQCB2b2lkIFN0b3JhZ2VBcmVhTWFwOjpyZXNldFZh
bHVlcygpCiAKICAgICBtX3BlbmRpbmdWYWx1ZUNoYW5nZXMuY2xlYXIoKTsKICAgICBtX2hhc1Bl
bmRpbmdDbGVhciA9IGZhbHNlOwotICAgIG1faGFzUGVuZGluZ0dldFZhbHVlcyA9IGZhbHNlOwog
ICAgIG1fY3VycmVudFNlZWQrKzsKIH0KIApAQCAtMTc4LDMzICsxNjUsMTAgQEAgdm9pZCBTdG9y
YWdlQXJlYU1hcDo6bG9hZFZhbHVlc0lmTmVlZGVkKCkKICAgICAvLyBGSVhNRTogVGhpcyBzaG91
bGQgdXNlIGEgc3BlY2lhbCBzZW5kU3luYyBmbGFnIHRvIGluZGljYXRlIHRoYXQgd2UgZG9uJ3Qg
d2FudCB0byBwcm9jZXNzIGluY29taW5nIG1lc3NhZ2VzIHdoaWxlIHdhaXRpbmcgZm9yIGEgcmVw
bHkuCiAgICAgLy8gKFRoaXMgZmxhZyBkb2VzIG5vdCB5ZXQgZXhpc3QpLiBTaW5jZSBsb2FkVmFs
dWVzSWZOZWVkZWQoKSBlbmRzIHVwIGJlaW5nIGNhbGxlZCBmcm9tIHdpdGhpbiBKYXZhU2NyaXB0
IGNvZGUsIHByb2Nlc3NpbmcgaW5jb21pbmcgc3luY2hyb25vdXMgbWVzc2FnZXMKICAgICAvLyBj
b3VsZCBsZWFkIHRvIHdlaXJkIHJlZW50cmVuY3kgYnVncyBvdGhlcndpc2UuCi0gICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVj
dGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdlcjo6R2V0VmFsdWVzKG1fc3Rv
cmFnZU1hcElELCBtX2N1cnJlbnRTZWVkKSwgTWVzc2FnZXM6OlN0b3JhZ2VNYW5hZ2VyOjpHZXRW
YWx1ZXM6OlJlcGx5KHZhbHVlcyksIDApOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVu
c3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNz
YWdlczo6U3RvcmFnZU1hbmFnZXJTZXQ6OkdldFZhbHVlcyhtX3N0b3JhZ2VNYXBJRCksIE1lc3Nh
Z2VzOjpTdG9yYWdlTWFuYWdlclNldDo6R2V0VmFsdWVzOjpSZXBseSh2YWx1ZXMpLCAwKTsKIAog
ICAgIG1fc3RvcmFnZU1hcCA9IFN0b3JhZ2VNYXA6OmNyZWF0ZShtX3F1b3RhSW5CeXRlcyk7CiAg
ICAgbV9zdG9yYWdlTWFwLT5pbXBvcnRJdGVtcyhXVEZNb3ZlKHZhbHVlcykpOwotCi0gICAgLy8g
V2Ugd2FudCB0byBpZ25vcmUgYWxsIGNoYW5nZXMgdW50aWwgd2UgZ2V0IHRoZSBEaWRHZXRWYWx1
ZXMgbWVzc2FnZS4KLSAgICBtX2hhc1BlbmRpbmdHZXRWYWx1ZXMgPSB0cnVlOwotfQotCi1ib29s
IFN0b3JhZ2VBcmVhTWFwOjpwcmV3YXJtKCkKLXsKLSAgICBpZiAobV9kaWRQcmV3YXJtIHx8IG1f
c3RvcmFnZU1hcCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIG1fZGlkUHJld2FybSA9IHRy
dWU7Ci0KLSAgICBjb25uZWN0KCk7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJl
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlN0
b3JhZ2VNYW5hZ2VyOjpQcmV3YXJtKG1fc3RvcmFnZU1hcElEKSwgMCk7Ci0gICAgcmV0dXJuIHRy
dWU7Ci19Ci0KLXZvaWQgU3RvcmFnZUFyZWFNYXA6OmRpZEdldFZhbHVlcyh1aW50NjRfdCBzdG9y
YWdlTWFwU2VlZCkKLXsKLSAgICBpZiAobV9jdXJyZW50U2VlZCAhPSBzdG9yYWdlTWFwU2VlZCkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgQVNTRVJUKG1faGFzUGVuZGluZ0dldFZhbHVlcyk7Ci0g
ICAgbV9oYXNQZW5kaW5nR2V0VmFsdWVzID0gZmFsc2U7CiB9CiAKIHZvaWQgU3RvcmFnZUFyZWFN
YXA6OmRpZFNldEl0ZW0odWludDY0X3Qgc3RvcmFnZU1hcFNlZWQsIGNvbnN0IFN0cmluZyYga2V5
LCBib29sIHF1b3RhRXJyb3IpCkBAIC0yNDAsNiArMjA0LDExIEBAIHZvaWQgU3RvcmFnZUFyZWFN
YXA6OmRpZENsZWFyKHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkKQogICAgIG1faGFzUGVuZGluZ0Ns
ZWFyID0gZmFsc2U7CiB9CiAKK3ZvaWQgU3RvcmFnZUFyZWFNYXA6OmNsZWFyQ2FjaGUoKQorewor
ICAgIHJlc2V0VmFsdWVzKCk7Cit9CisKIGJvb2wgU3RvcmFnZUFyZWFNYXA6OnNob3VsZEFwcGx5
Q2hhbmdlRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5KSBjb25zdAogewogICAgIC8vIFdlIGhhdmUg
bm90IHlldCBsb2FkZWQgYW55dGhpbmcgZnJvbSB0aGlzIHN0b3JhZ2UgbWFwLgpAQCAtMjU5LDgg
KzIyOCw4IEBAIHZvaWQgU3RvcmFnZUFyZWFNYXA6OmFwcGx5Q2hhbmdlKGNvbnN0IFN0cmluZyYg
a2V5LCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlKQogewogICAgIEFTU0VSVCghbV9zdG9yYWdlTWFw
IHx8IG1fc3RvcmFnZU1hcC0+aGFzT25lUmVmKCkpOwogCi0gICAgLy8gVGhlcmUncyBhIGNsZWFy
IHBlbmRpbmcgb3IgZ2V0VmFsdWVzIHBlbmRpbmcgd2UgZG9uJ3Qgd2FudCB0byBhcHBseSBhbnkg
Y2hhbmdlcyB1bnRpbCB3ZSBnZXQgdGhlIGNvcnJlc3BvbmRpbmcgRGlkQ2xlYXIvRGlkR2V0VmFs
dWVzIG1lc3NhZ2VzLgotICAgIGlmIChtX2hhc1BlbmRpbmdDbGVhciB8fCBtX2hhc1BlbmRpbmdH
ZXRWYWx1ZXMpCisgICAgLy8gVGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNsZWFyIHBlbmRpbmcgd2Ug
ZG9uJ3Qgd2FudCB0byBhcHBseSBhbnkgY2hhbmdlcyB1bnRpbCB3ZSBnZXQgdGhlIGNvcnJlc3Bv
bmRpbmcgRGlkQ2xlYXIgbWVzc2FnZXMuCisgICAgaWYgKG1faGFzUGVuZGluZ0NsZWFyKQogICAg
ICAgICByZXR1cm47CiAKICAgICBpZiAoIWtleSkgewpAQCAtMzA1LDIyICsyNzQsMTcgQEAgdm9p
ZCBTdG9yYWdlQXJlYU1hcDo6ZGlzcGF0Y2hTdG9yYWdlRXZlbnQodWludDY0X3Qgc291cmNlU3Rv
cmFnZUFyZWFJRCwgY29uc3QgU3QKICAgICAgICAgYXBwbHlDaGFuZ2Uoa2V5LCBuZXdWYWx1ZSk7
CiAgICAgfQogCi0gICAgaWYgKHN0b3JhZ2VUeXBlKCkgPT0gU3RvcmFnZVR5cGU6OlNlc3Npb24g
fHwgc3RvcmFnZVR5cGUoKSA9PSBTdG9yYWdlVHlwZTo6RXBoZW1lcmFsTG9jYWwpCisgICAgaWYg
KHN0b3JhZ2VUeXBlKCkgPT0gU3RvcmFnZVR5cGU6OlNlc3Npb24pCiAgICAgICAgIGRpc3BhdGNo
U2Vzc2lvblN0b3JhZ2VFdmVudChzb3VyY2VTdG9yYWdlQXJlYUlELCBrZXksIG9sZFZhbHVlLCBu
ZXdWYWx1ZSwgdXJsU3RyaW5nKTsKICAgICBlbHNlCiAgICAgICAgIGRpc3BhdGNoTG9jYWxTdG9y
YWdlRXZlbnQoc291cmNlU3RvcmFnZUFyZWFJRCwga2V5LCBvbGRWYWx1ZSwgbmV3VmFsdWUsIHVy
bFN0cmluZyk7CiB9CiAKLXZvaWQgU3RvcmFnZUFyZWFNYXA6OmNsZWFyQ2FjaGUoKQotewotICAg
IHJlc2V0VmFsdWVzKCk7Ci19Ci0KIHZvaWQgU3RvcmFnZUFyZWFNYXA6OmRpc3BhdGNoU2Vzc2lv
blN0b3JhZ2VFdmVudCh1aW50NjRfdCBzb3VyY2VTdG9yYWdlQXJlYUlELCBjb25zdCBTdHJpbmcm
IGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgY29u
c3QgU3RyaW5nJiB1cmxTdHJpbmcpCiB7Ci0gICAgLy8gTmFtZXNwYWNlIElEcyBmb3Igc2Vzc2lv
biBzdG9yYWdlIG5hbWVzcGFjZXMgYW5kIGVwaGVtZXJhbCBsb2NhbCBzdG9yYWdlIG5hbWVzcGFj
ZXMgYXJlIGVxdWl2YWxlbnQgdG8gd2ViIHBhZ2UgSURzCisgICAgLy8gTmFtZXNwYWNlIElEcyBm
b3Igc2Vzc2lvbiBzdG9yYWdlIG5hbWVzcGFjZXMgYXJlIGVxdWl2YWxlbnQgdG8gd2ViIHBhZ2Ug
SURzCiAgICAgLy8gc28gd2UgY2FuIGdldCB0aGUgcmlnaHQgcGFnZSBoZXJlLgotICAgIFdlYlBh
Z2UqIHdlYlBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKG1ha2VPYmplY3RJ
ZGVudGlmaWVyPFBhZ2VJZGVudGlmaWVyVHlwZT4obV9zdG9yYWdlTmFtZXNwYWNlSUQpKTsKKyAg
ICBXZWJQYWdlKiB3ZWJQYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShtYWtl
T2JqZWN0SWRlbnRpZmllcjxQYWdlSWRlbnRpZmllclR5cGU+KG1fc3RvcmFnZU5hbWVzcGFjZS0+
c3RvcmFnZU5hbWVzcGFjZUlEKCkpKTsKICAgICBpZiAoIXdlYlBhZ2UpCiAgICAgICAgIHJldHVy
bjsKIApAQCAtMzU0LDcgKzMxOCw4IEBAIHZvaWQgU3RvcmFnZUFyZWFNYXA6OmRpc3BhdGNoTG9j
YWxTdG9yYWdlRXZlbnQodWludDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwgY29uCiAKICAgICBW
ZWN0b3I8UmVmUHRyPEZyYW1lPj4gZnJhbWVzOwogCi0gICAgUGFnZUdyb3VwJiBwYWdlR3JvdXAg
PSAqV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZUdyb3VwKG1fc3RvcmFnZU5hbWVzcGFj
ZUlEKS0+Y29yZVBhZ2VHcm91cCgpOworICAgIC8vIE5hbWVzcGFjZSBJRHMgZm9yIGxvY2FsIHN0
b3JhZ2UgbmFtZXNwYWNlcyBhcmUgZXF1aXZhbGVudCB0byB3ZWIgcGFnZSBncm91cCBJRHMuCisg
ICAgUGFnZUdyb3VwJiBwYWdlR3JvdXAgPSAqV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFn
ZUdyb3VwKG1fc3RvcmFnZU5hbWVzcGFjZS0+c3RvcmFnZU5hbWVzcGFjZUlEKCkpLT5jb3JlUGFn
ZUdyb3VwKCk7CiAgICAgY29uc3QgSGFzaFNldDxQYWdlKj4mIHBhZ2VzID0gcGFnZUdyb3VwLnBh
Z2VzKCk7CiAgICAgZm9yIChIYXNoU2V0PFBhZ2UqPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBwYWdl
cy5iZWdpbigpLCBlbmQgPSBwYWdlcy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAg
IGZvciAoRnJhbWUqIGZyYW1lID0gJigqaXQpLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0g
ZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgewpAQCAtMzgxLDM1ICszNDYsMzcgQEAgdm9p
ZCBTdG9yYWdlQXJlYU1hcDo6ZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudCh1aW50NjRfdCBzb3Vy
Y2VTdG9yYWdlQXJlYUlELCBjb24KIAogdm9pZCBTdG9yYWdlQXJlYU1hcDo6Y29ubmVjdCgpCiB7
Ci0gICAgaWYgKCFtX2lzRGlzY29ubmVjdGVkKQorICAgIGlmIChtX3N0b3JhZ2VNYXBJRCkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgc3dpdGNoIChtX3N0b3JhZ2VUeXBlKSB7CiAgICAgY2FzZSBT
dG9yYWdlVHlwZTo6TG9jYWw6Ci0gICAgY2FzZSBTdG9yYWdlVHlwZTo6RXBoZW1lcmFsTG9jYWw6
CiAgICAgY2FzZSBTdG9yYWdlVHlwZTo6VHJhbnNpZW50TG9jYWw6CiAgICAgICAgIGlmIChTZWN1
cml0eU9yaWdpbiogdG9wTGV2ZWxPcmlnaW4gPSBtX3N0b3JhZ2VOYW1lc3BhY2UtPnRvcExldmVs
T3JpZ2luKCkpCi0gICAgICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6U3RvcmFn
ZU1hbmFnZXI6OkNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU1hcChtX3N0b3JhZ2VNYXBJRCwg
bV9zdG9yYWdlTmFtZXNwYWNlLT5zdG9yYWdlTmFtZXNwYWNlSUQoKSwgdG9wTGV2ZWxPcmlnaW4t
PmRhdGEoKSwgbV9zZWN1cml0eU9yaWdpbi0+ZGF0YSgpKSwgMCk7CisgICAgICAgICAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25u
ZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpDb25uZWN0VG9U
cmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKG1fc3RvcmFnZU5hbWVzcGFjZS0+c2Vzc2lvbklEKCks
IG1fc3RvcmFnZU5hbWVzcGFjZS0+c3RvcmFnZU5hbWVzcGFjZUlEKCksIHRvcExldmVsT3JpZ2lu
LT5kYXRhKCksIG1fc2VjdXJpdHlPcmlnaW4tPmRhdGEoKSksIE1lc3NhZ2VzOjpTdG9yYWdlTWFu
YWdlclNldDo6Q29ubmVjdFRvVHJhbnNpZW50TG9jYWxTdG9yYWdlQXJlYTo6UmVwbHkobV9zdG9y
YWdlTWFwSUQpLCAwKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNl
bmQoTWVzc2FnZXM6OlN0b3JhZ2VNYW5hZ2VyOjpDcmVhdGVMb2NhbFN0b3JhZ2VNYXAobV9zdG9y
YWdlTWFwSUQsIG1fc3RvcmFnZU5hbWVzcGFjZS0+c3RvcmFnZU5hbWVzcGFjZUlEKCksIG1fc2Vj
dXJpdHlPcmlnaW4tPmRhdGEoKSksIDApOworICAgICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRT
eW5jKE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdlclNldDo6Q29ubmVjdFRvTG9jYWxTdG9yYWdlQXJl
YShtX3N0b3JhZ2VOYW1lc3BhY2UtPnNlc3Npb25JRCgpLCBtX3N0b3JhZ2VOYW1lc3BhY2UtPnN0
b3JhZ2VOYW1lc3BhY2VJRCgpLCBtX3NlY3VyaXR5T3JpZ2luLT5kYXRhKCkpLCBNZXNzYWdlczo6
U3RvcmFnZU1hbmFnZXJTZXQ6OkNvbm5lY3RUb0xvY2FsU3RvcmFnZUFyZWE6OlJlcGx5KG1fc3Rv
cmFnZU1hcElEKSwgMCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3RvcmFnZVR5cGU6OlNl
c3Npb246Ci0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdl
cjo6Q3JlYXRlU2Vzc2lvblN0b3JhZ2VNYXAobV9zdG9yYWdlTWFwSUQsIG1fc3RvcmFnZU5hbWVz
cGFjZS0+c3RvcmFnZU5hbWVzcGFjZUlEKCksIG1fc2VjdXJpdHlPcmlnaW4tPmRhdGEoKSksIDAp
OworICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlN0b3JhZ2VNYW5hZ2Vy
U2V0OjpDb25uZWN0VG9TZXNzaW9uU3RvcmFnZUFyZWEobV9zdG9yYWdlTmFtZXNwYWNlLT5zZXNz
aW9uSUQoKSwgbV9zdG9yYWdlTmFtZXNwYWNlLT5zdG9yYWdlTmFtZXNwYWNlSUQoKSwgbV9zZWN1
cml0eU9yaWdpbi0+ZGF0YSgpKSwgTWVzc2FnZXM6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpDb25uZWN0
VG9TZXNzaW9uU3RvcmFnZUFyZWE6OlJlcGx5KG1fc3RvcmFnZU1hcElEKSwgMCk7CiAgICAgfQog
Ci0gICAgaWYgKG1fc3RvcmFnZU1hcCkKLSAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
ZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2Fn
ZXM6OlN0b3JhZ2VNYW5hZ2VyOjpTZXRJdGVtcyhtX3N0b3JhZ2VNYXBJRCwgbV9zdG9yYWdlTWFw
LT5pdGVtcygpKSwgMCk7Ci0gICAgbV9pc0Rpc2Nvbm5lY3RlZCA9IGZhbHNlOworICAgIGlmICht
X3N0b3JhZ2VNYXBJRCkKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucmVnaXN0ZXJT
dG9yYWdlQXJlYU1hcCgqdGhpcyk7CiB9CiAKIHZvaWQgU3RvcmFnZUFyZWFNYXA6OmRpc2Nvbm5l
Y3QoKQogewotICAgIG1faXNEaXNjb25uZWN0ZWQgPSB0cnVlOwotICAgIGlmIChtX3N0b3JhZ2VU
eXBlID09IFN0b3JhZ2VUeXBlOjpTZXNzaW9uICYmIG1fc3RvcmFnZU1hcCkgewotICAgICAgICBt
X3BlbmRpbmdWYWx1ZUNoYW5nZXMuY2xlYXIoKTsKLSAgICAgICAgbV9oYXNQZW5kaW5nQ2xlYXIg
PSBmYWxzZTsKLSAgICB9IGVsc2UKLSAgICAgICAgcmVzZXRWYWx1ZXMoKTsKKyAgICBpZiAoIW1f
c3RvcmFnZU1hcElEKQorICAgICAgICByZXR1cm47CisKKyAgICByZXNldFZhbHVlcygpOworICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnVucmVnaXN0ZXJTdG9yYWdlQXJlYU1hcCgqdGhpcyk7
CisKKyAgICBpZiAoYXV0byBuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24gPSBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5leGlzdGluZ05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpKQorICAgICAgICBu
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpTdG9y
YWdlTWFuYWdlclNldDo6RGlzY29ubmVjdEZyb21TdG9yYWdlQXJlYShtX3N0b3JhZ2VNYXBJRCks
IDApOworCisgICAgbV9zdG9yYWdlTWFwSUQgPSAwOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3Jh
Z2VBcmVhTWFwLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdl
QXJlYU1hcC5oCmluZGV4IGZiOTFiYzkwNTQyNWZjODFjNmE0ODM1Mjc0YWJjYzBjMTdkYTQ5YzYu
LjQ0YWQwNmY5MWI1NWM3ZjQxZTZkMGYyODg3YzllYzE3ZDUyYTc0MWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuaApAQCAt
MzIsNiArMzIsNyBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoQ291bnRlZFNldC5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0
Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNlY3VyaXR5T3JpZ2lu
OwpAQCAtNDMsNyArNDQsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFN0b3JhZ2VBcmVh
SW1wbDsKIGNsYXNzIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOwogCi1jbGFzcyBTdG9yYWdlQXJlYU1h
cCA6IHB1YmxpYyBSZWZDb3VudGVkPFN0b3JhZ2VBcmVhTWFwPiwgcHJpdmF0ZSBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlciB7CitjbGFzcyBTdG9yYWdlQXJlYU1hcCA6IHB1YmxpYyBSZWZDb3VudGVkPFN0
b3JhZ2VBcmVhTWFwPiwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHVibGljIENhbk1h
a2VXZWFrUHRyPFN0b3JhZ2VBcmVhTWFwPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTdG9y
YWdlQXJlYU1hcD4gY3JlYXRlKFN0b3JhZ2VOYW1lc3BhY2VJbXBsKiwgUmVmPFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luPiYmKTsKICAgICB+U3RvcmFnZUFyZWFNYXAoKTsKQEAgLTU3LDcgKzU4LDYg
QEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlSXRlbShXZWJDb3JlOjpGcmFtZSogc291cmNlRnJh
bWUsIFN0b3JhZ2VBcmVhSW1wbCogc291cmNlQXJlYSwgY29uc3QgU3RyaW5nJiBrZXkpOwogICAg
IHZvaWQgY2xlYXIoV2ViQ29yZTo6RnJhbWUqIHNvdXJjZUZyYW1lLCBTdG9yYWdlQXJlYUltcGwq
IHNvdXJjZUFyZWEpOwogICAgIGJvb2wgY29udGFpbnMoY29uc3QgU3RyaW5nJiBrZXkpOwotICAg
IGJvb2wgcHJld2FybSgpOwogCiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lk
IGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJy
aWRlOwpAQCAtNzEsNyArNzEsNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFN0b3JhZ2VBcmVh
TWFwKFN0b3JhZ2VOYW1lc3BhY2VJbXBsKiwgUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYm
KTsKIAotICAgIHZvaWQgZGlkR2V0VmFsdWVzKHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkKTsKICAg
ICB2b2lkIGRpZFNldEl0ZW0odWludDY0X3Qgc3RvcmFnZU1hcFNlZWQsIGNvbnN0IFN0cmluZyYg
a2V5LCBib29sIHF1b3RhRXJyb3IpOwogICAgIHZvaWQgZGlkUmVtb3ZlSXRlbSh1aW50NjRfdCBz
dG9yYWdlTWFwU2VlZCwgY29uc3QgU3RyaW5nJiBrZXkpOwogICAgIHZvaWQgZGlkQ2xlYXIodWlu
dDY0X3Qgc3RvcmFnZU1hcFNlZWQpOwpAQCAtODgsMTIgKzg3LDExIEBAIHByaXZhdGU6CiAgICAg
dm9pZCBkaXNwYXRjaFNlc3Npb25TdG9yYWdlRXZlbnQodWludDY0X3Qgc291cmNlU3RvcmFnZUFy
ZWFJRCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0
cmluZyYgbmV3VmFsdWUsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKTsKICAgICB2b2lkIGRpc3Bh
dGNoTG9jYWxTdG9yYWdlRXZlbnQodWludDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwgY29uc3Qg
U3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFs
dWUsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKTsKIAotICAgIFJlZjxTdG9yYWdlTmFtZXNwYWNl
SW1wbD4gbV9zdG9yYWdlTmFtZXNwYWNlOworICAgIFN0b3JhZ2VOYW1lc3BhY2VJbXBsKiBtX3N0
b3JhZ2VOYW1lc3BhY2U7CiAKICAgICB1aW50NjRfdCBtX3N0b3JhZ2VNYXBJRDsKIAogICAgIFdl
YkNvcmU6OlN0b3JhZ2VUeXBlIG1fc3RvcmFnZVR5cGU7Ci0gICAgdWludDY0X3QgbV9zdG9yYWdl
TmFtZXNwYWNlSUQ7CiAgICAgdW5zaWduZWQgbV9xdW90YUluQnl0ZXM7CiAgICAgUmVmPFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luPiBtX3NlY3VyaXR5T3JpZ2luOwogCkBAIC0xMDEsMTEgKzk5LDcg
QEAgcHJpdmF0ZToKIAogICAgIHVpbnQ2NF90IG1fY3VycmVudFNlZWQ7CiAgICAgYm9vbCBtX2hh
c1BlbmRpbmdDbGVhcjsKLSAgICBib29sIG1faGFzUGVuZGluZ0dldFZhbHVlczsKICAgICBIYXNo
Q291bnRlZFNldDxTdHJpbmc+IG1fcGVuZGluZ1ZhbHVlQ2hhbmdlczsKLQotICAgIGJvb2wgbV9p
c0Rpc2Nvbm5lY3RlZCB7IHRydWUgfTsKLSAgICBib29sIG1fZGlkUHJld2FybSB7IGZhbHNlIH07
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAubWVzc2FnZXMuaW4K
aW5kZXggYjE1OTA0ZjE2YmVjMTQyYjEwYjQ4MDBkMTA2NDUwMDkzMzgzMDBkNS4uN2E3NWQyMTBm
ZDgzMjVmMmI1MWE4OWNlM2U1NDJkNDgwMzkwOTZhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAubWVzc2Fn
ZXMuaW4KQEAgLTIxLDcgKzIxLDYgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogbWVzc2FnZXMgLT4gU3Rv
cmFnZUFyZWFNYXAgewotICAgIERpZEdldFZhbHVlcyh1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCkK
ICAgICBEaWRTZXRJdGVtKHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkLCBTdHJpbmcga2V5LCBib29s
IHF1b3RhRXhjZXB0aW9uKQogICAgIERpZFJlbW92ZUl0ZW0odWludDY0X3Qgc3RvcmFnZU1hcFNl
ZWQsIFN0cmluZyBrZXkpCiAgICAgRGlkQ2xlYXIodWludDY0X3Qgc3RvcmFnZU1hcFNlZWQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFt
ZXNwYWNlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9y
YWdlTmFtZXNwYWNlSW1wbC5jcHAKaW5kZXggZjU5Yzc5YjdmYTJiZTJmYzlhNzIwNTJjMWI5ZTUz
Y2I2YTMyM2ZkMC4uZjc0NDIyMWJlNGY1N2M0MDM3NGIxZjY1YzgxMDFhOGNjZTZjOTQ4MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVz
cGFjZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0
b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiU3Rv
cmFnZUFyZWFJbXBsLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFyZWFNYXAuaCIKKyNpbmNsdWRlICJT
dG9yYWdlTWFuYWdlclNldE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUGFnZS5oIgogI2luY2x1
ZGUgIldlYlBhZ2VHcm91cFByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgpAQCAtNDAs
MzEgKzQxLDI3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCi1SZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVh
dGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBx
dW90YUluQnl0ZXMpCitSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJ
bXBsOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1
bnNpZ25lZCBxdW90YUluQnl0ZXMsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChTdG9yYWdlVHlwZTo6U2Vz
c2lvbiwgaWRlbnRpZmllciwgbnVsbHB0ciwgcXVvdGFJbkJ5dGVzKSk7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5cGU6OlNlc3Npb24sIGlk
ZW50aWZpZXIsIG51bGxwdHIsIHF1b3RhSW5CeXRlcywgc2Vzc2lvbklEKSk7CiB9CiAKLVJlZjxT
dG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZUVwaGVtZXJh
bExvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90
YUluQnl0ZXMpCitSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBs
OjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgdW5zaWdu
ZWQgcXVvdGFJbkJ5dGVzLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7Ci0gICAgcmV0dXJu
IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZShpZGVudGlmaWVyLCBxdW90YUluQnl0ZXMsIElz
RXBoZW1lcmFsOjpZZXMpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsKFN0b3JhZ2VUeXBlOjpMb2NhbCwgaWRlbnRpZmllciwgbnVsbHB0ciwgcXVvdGFJbkJ5
dGVzLCBzZXNzaW9uSUQpKTsKIH0KIAotUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdl
TmFtZXNwYWNlSW1wbDo6Y3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50
aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcywgSXNFcGhlbWVyYWwgaXNFcGhlbWVyYWwpCitS
ZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVUcmFu
c2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW4mIHRvcExldmVsT3JpZ2luLCB1aW50NjRfdCBxdW90YUluQnl0ZXMsIFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9y
YWdlTmFtZXNwYWNlSW1wbChpc0VwaGVtZXJhbCA9PSBJc0VwaGVtZXJhbDo6WWVzID8gU3RvcmFn
ZVR5cGU6OkVwaGVtZXJhbExvY2FsIDogU3RvcmFnZVR5cGU6OkxvY2FsLCBpZGVudGlmaWVyLCBu
dWxscHRyLCBxdW90YUluQnl0ZXMpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9yYWdl
TmFtZXNwYWNlSW1wbChTdG9yYWdlVHlwZTo6VHJhbnNpZW50TG9jYWwsIGlkZW50aWZpZXIsICZ0
b3BMZXZlbE9yaWdpbiwgcXVvdGFJbkJ5dGVzLCBzZXNzaW9uSUQpKTsKIH0KIAotUmVmPFN0b3Jh
Z2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlVHJhbnNpZW50TG9j
YWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luJiB0b3BMZXZlbE9yaWdpbiwgdWludDY0X3QgcXVvdGFJbkJ5dGVzKQotewotICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0b3JhZ2VUeXBlOjpUcmFu
c2llbnRMb2NhbCwgaWRlbnRpZmllciwgJnRvcExldmVsT3JpZ2luLCBxdW90YUluQnl0ZXMpKTsK
LX0KLQotU3RvcmFnZU5hbWVzcGFjZUltcGw6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsKFdlYkNvcmU6
OlN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlLCB1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luKiB0b3BMZXZlbE9yaWdpbiwgdW5zaWduZWQgcXVvdGFJbkJ5
dGVzKQorU3RvcmFnZU5hbWVzcGFjZUltcGw6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsKFdlYkNvcmU6
OlN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlLCB1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luKiB0b3BMZXZlbE9yaWdpbiwgdW5zaWduZWQgcXVvdGFJbkJ5
dGVzLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAgOiBtX3N0b3JhZ2VUeXBlKHN0b3Jh
Z2VUeXBlKQogICAgICwgbV9zdG9yYWdlTmFtZXNwYWNlSUQoc3RvcmFnZU5hbWVzcGFjZUlEKQog
ICAgICwgbV90b3BMZXZlbE9yaWdpbih0b3BMZXZlbE9yaWdpbikKICAgICAsIG1fcXVvdGFJbkJ5
dGVzKHF1b3RhSW5CeXRlcykKKyAgICAsIG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKIHsKIH0KIApA
QCAtNzcsMTMgKzc0LDE0IEBAIHZvaWQgU3RvcmFnZU5hbWVzcGFjZUltcGw6OmRpZERlc3Ryb3lT
dG9yYWdlQXJlYU1hcChTdG9yYWdlQXJlYU1hcCYgbWFwKQogICAgIG1fc3RvcmFnZUFyZWFNYXBz
LnJlbW92ZShtYXAuc2VjdXJpdHlPcmlnaW4oKS5kYXRhKCkpOwogfQogCi1SZWY8U3RvcmFnZUFy
ZWE+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpzdG9yYWdlQXJlYShjb25zdCBTZWN1cml0eU9yaWdp
bkRhdGEmIHNlY3VyaXR5T3JpZ2luKQorUmVmPFN0b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNl
SW1wbDo6c3RvcmFnZUFyZWEoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdp
bkRhdGEpCiB7CiAgICAgUmVmUHRyPFN0b3JhZ2VBcmVhTWFwPiBtYXA7CiAKLSAgICBhdXRvJiBz
bG90ID0gbV9zdG9yYWdlQXJlYU1hcHMuYWRkKHNlY3VyaXR5T3JpZ2luLCBudWxscHRyKS5pdGVy
YXRvci0+dmFsdWU7CisgICAgYXV0byBzZWN1cml0eU9yaWdpbiA9IHNlY3VyaXR5T3JpZ2luRGF0
YS5zZWN1cml0eU9yaWdpbigpOworICAgIGF1dG8mIHNsb3QgPSBtX3N0b3JhZ2VBcmVhTWFwcy5h
ZGQoc2VjdXJpdHlPcmlnaW4tPmRhdGEoKSwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAg
IGlmICghc2xvdCkgewotICAgICAgICBtYXAgPSBTdG9yYWdlQXJlYU1hcDo6Y3JlYXRlKHRoaXMs
IHNlY3VyaXR5T3JpZ2luLnNlY3VyaXR5T3JpZ2luKCkpOworICAgICAgICBtYXAgPSBTdG9yYWdl
QXJlYU1hcDo6Y3JlYXRlKHRoaXMsIFdURk1vdmUoc2VjdXJpdHlPcmlnaW4pKTsKICAgICAgICAg
c2xvdCA9IG1hcC5nZXQoKTsKICAgICB9IGVsc2UKICAgICAgICAgbWFwID0gc2xvdDsKQEAgLTk0
LDE0ICs5MiwxOSBAQCBSZWY8U3RvcmFnZUFyZWE+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpzdG9y
YWdlQXJlYShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlYwogUmVmPFN0b3JhZ2VOYW1lc3Bh
Y2U+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjb3B5KFBhZ2UqIG5ld1BhZ2UpCiB7CiAgICAgQVNT
RVJUKG1fc3RvcmFnZU5hbWVzcGFjZUlEKTsKKyAgICBBU1NFUlQobV9zdG9yYWdlVHlwZSA9PSBT
dG9yYWdlVHlwZTo6U2Vzc2lvbik7CiAKLSAgICBpZiAobV9zdG9yYWdlVHlwZSA9PSBTdG9yYWdl
VHlwZTo6U2Vzc2lvbikKLSAgICAgICAgcmV0dXJuIGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNw
YWNlKFdlYlBhZ2U6OmZyb21Db3JlUGFnZShuZXdQYWdlKS0+cGFnZUlEKCkudG9VSW50NjQoKSwg
bV9xdW90YUluQnl0ZXMpOwotCi0gICAgQVNTRVJUKG1fc3RvcmFnZVR5cGUgPT0gU3RvcmFnZVR5
cGU6OkVwaGVtZXJhbExvY2FsKTsKLSAgICBhdXRvIG5ld05hbWVzcGFjZSA9IGFkb3B0UmVmKCpu
ZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwobV9zdG9yYWdlVHlwZSwgbV9zdG9yYWdlTmFtZXNwYWNl
SUQsIG1fdG9wTGV2ZWxPcmlnaW4uZ2V0KCksIG1fcXVvdGFJbkJ5dGVzKSk7CisgICAgaWYgKGF1
dG8gbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZXhp
c3RpbmdOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKSkKKyAgICAgICAgbmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXJTZXQ6
OkNsb25lU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UobmV3UGFnZS0+c2Vzc2lvbklEKCksIG1fc3Rv
cmFnZU5hbWVzcGFjZUlELCBXZWJQYWdlOjpmcm9tQ29yZVBhZ2UobmV3UGFnZSktPnBhZ2VJRCgp
LnRvVUludDY0KCkpLCAwKTsKKyAgICAKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9yYWdl
TmFtZXNwYWNlSW1wbChtX3N0b3JhZ2VUeXBlLCBXZWJQYWdlOjpmcm9tQ29yZVBhZ2UobmV3UGFn
ZSktPnBhZ2VJRCgpLnRvVUludDY0KCksIG1fdG9wTGV2ZWxPcmlnaW4uZ2V0KCksIG1fcXVvdGFJ
bkJ5dGVzLCBuZXdQYWdlLT5zZXNzaW9uSUQoKSkpOworfQogCi0gICAgcmV0dXJuIG5ld05hbWVz
cGFjZTsKK3ZvaWQgU3RvcmFnZU5hbWVzcGFjZUltcGw6OnNldFNlc3Npb25JREZvclRlc3Rpbmco
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQoreworICAgIG1fc2Vzc2lvbklEID0gc2Vzc2lvbklE
OworICAgIGZvciAoYXV0byBzdG9yYWdlQXJlYU1hcCA6IG1fc3RvcmFnZUFyZWFNYXBzLnZhbHVl
cygpKQorICAgICAgICBzdG9yYWdlQXJlYU1hcC0+ZGlzY29ubmVjdCgpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJT
dG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oCmluZGV4IGVhNmQ1NTE4Y2RmYzk5ZGMz
YTAxZDg1N2UzNjYzNjUwZjliNjY2YTIuLmU3ZmViNjE3MGIyMGU3MThlOGEwNDE0Y2I1ZjQzNmQ1
NTM5OWYyNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdl
L1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaApAQCAtMzksMTIgKzM5LDEwIEBAIGNsYXNz
IFdlYlBhZ2U7CiAKIGNsYXNzIFN0b3JhZ2VOYW1lc3BhY2VJbXBsIDogcHVibGljIFdlYkNvcmU6
OlN0b3JhZ2VOYW1lc3BhY2UgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U3RvcmFnZU5hbWVz
cGFjZUltcGw+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZp
ZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcyk7Ci0gICAgc3RhdGljIFJlZjxTdG9yYWdlTmFtZXNw
YWNlSW1wbD4gY3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlk
ZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcyk7CisgICAgc3RhdGljIFJlZjxTdG9yYWdl
TmFtZXNwYWNlSW1wbD4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRl
bnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzLCBQQUw6OlNlc3Npb25JRCk7CiAKLSAgICBl
bnVtIGNsYXNzIElzRXBoZW1lcmFsIDogYm9vbCB7IE5vLCBZZXMgfTsKLSAgICBzdGF0aWMgUmVm
PFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0
X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzLCBJc0VwaGVtZXJhbCBpc0VwaGVt
ZXJhbCk7Ci0gICAgc3RhdGljIFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRlVHJhbnNp
ZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luJiB0b3BMZXZlbE9yaWdpbiwgdWludDY0X3QgcXVvdGFJbkJ5dGVzKTsKKyAg
ICBzdGF0aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVMb2NhbFN0b3JhZ2VOYW1l
c3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzLCBQQUw6OlNl
c3Npb25JRCk7CisgICAgc3RhdGljIFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRlVHJh
bnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luJiB0b3BMZXZlbE9yaWdpbiwgdWludDY0X3QgcXVvdGFJbkJ5dGVzLCBQ
QUw6OlNlc3Npb25JRCk7CiAKICAgICB2aXJ0dWFsIH5TdG9yYWdlTmFtZXNwYWNlSW1wbCgpOwog
CkBAIC01NSw4ICs1MywxMSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRpZERlc3Ryb3lTdG9yYWdl
QXJlYU1hcChTdG9yYWdlQXJlYU1hcCYpOwogCisgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KKyAgICB2b2lkIHNldFNl
c3Npb25JREZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQpIG92ZXJyaWRlOworCiBwcml2YXRlOgot
ICAgIGV4cGxpY2l0IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFdlYkNvcmU6OlN0b3JhZ2VUeXBlLCB1
aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiB0b3BM
ZXZlbE9yaWdpbiwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKKyAgICBleHBsaWNpdCBTdG9yYWdl
TmFtZXNwYWNlSW1wbChXZWJDb3JlOjpTdG9yYWdlVHlwZSwgdWludDY0X3Qgc3RvcmFnZU5hbWVz
cGFjZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiogdG9wTGV2ZWxPcmlnaW4sIHVuc2lnbmVk
IHF1b3RhSW5CeXRlcywgUEFMOjpTZXNzaW9uSUQpOwogCiAgICAgUmVmPFdlYkNvcmU6OlN0b3Jh
Z2VBcmVhPiBzdG9yYWdlQXJlYShjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmKSBv
dmVycmlkZTsKICAgICBSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY29weShXZWJDb3Jl
OjpQYWdlKikgb3ZlcnJpZGU7CkBAIC02OSw3ICs3MCw5IEBAIHByaXZhdGU6CiAKICAgICBjb25z
dCB1bnNpZ25lZCBtX3F1b3RhSW5CeXRlczsKIAotICAgIEhhc2hNYXA8V2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhLCBTdG9yYWdlQXJlYU1hcCo+IG1fc3RvcmFnZUFyZWFNYXBzOworICAgIEhh
c2hNYXA8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhLCBSZWZQdHI8U3RvcmFnZUFyZWFNYXA+
PiBtX3N0b3JhZ2VBcmVhTWFwczsKKworICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyLmNwcAppbmRleCA4OGE5M2M1ZDUwNDJhMTI2MzQxMWM2ODRiZWRiZDUwNmUzNGI1YTBlLi45
ZTcyMTYzMWIzYjRiZDcyZWMwMzNlNzliYWUwZDM3NTI1NGJhYzA0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1dlYlN0b3Jh
Z2VOYW1lc3BhY2VQcm92aWRlci5jcHAKQEAgLTY3LDIyICs2NywxNyBAQCBXZWJTdG9yYWdlTmFt
ZXNwYWNlUHJvdmlkZXI6On5XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIoKQogCiBSZWY8V2Vi
Q29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVh
dGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShQYWdlJiBwYWdlLCB1bnNpZ25lZCBxdW90YSkKIHsK
LSAgICByZXR1cm4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFt
ZXNwYWNlKFdlYlBhZ2U6OmZyb21Db3JlUGFnZSgmcGFnZSktPnBhZ2VJRCgpLnRvVUludDY0KCks
IHF1b3RhKTsKKyAgICByZXR1cm4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVNlc3Npb25T
dG9yYWdlTmFtZXNwYWNlKFdlYlBhZ2U6OmZyb21Db3JlUGFnZSgmcGFnZSktPnBhZ2VJRCgpLnRv
VUludDY0KCksIHF1b3RhLCBwYWdlLnNlc3Npb25JRCgpKTsKIH0KIAotUmVmPFdlYkNvcmU6OlN0
b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlRXBoZW1l
cmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBhZ2UmIHBhZ2UsIHVuc2lnbmVkIHF1b3RhKQorUmVm
PFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6
Y3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkIHF1b3RhLCBQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQpCiB7Ci0gICAgcmV0dXJuIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVF
cGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoV2ViUGFnZTo6ZnJvbUNvcmVQYWdlKCZwYWdl
KS0+cGFnZUlEKCkudG9VSW50NjQoKSwgcXVvdGEpOworICAgIHJldHVybiBTdG9yYWdlTmFtZXNw
YWNlSW1wbDo6Y3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKG1faWRlbnRpZmllciwgcXVvdGEs
IHNlc3Npb25JRCk7CiB9CiAKLVJlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25l
ZCBxdW90YSkKK1JlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNw
YWNlUHJvdmlkZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbiYgdG9wTGV2ZWxPcmlnaW4sIHVuc2lnbmVkIHF1b3RhLCBQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQpCiB7Ci0gICAgcmV0dXJuIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpj
cmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UobV9pZGVudGlmaWVyLCBxdW90YSwgU3RvcmFnZU5h
bWVzcGFjZUltcGw6OklzRXBoZW1lcmFsOjpObyk7Ci19Ci0KLVJlZjxXZWJDb3JlOjpTdG9yYWdl
TmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVRyYW5zaWVudExv
Y2FsU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgdG9wTGV2ZWxPcmln
aW4sIHVuc2lnbmVkIHF1b3RhKQotewotICAgIHJldHVybiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6
Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKG1faWRlbnRpZmllciwgdG9wTGV2
ZWxPcmlnaW4sIHF1b3RhKTsKKyAgICByZXR1cm4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0
ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShtX2lkZW50aWZpZXIsIHRvcExldmVsT3Jp
Z2luLCBxdW90YSwgc2Vzc2lvbklEKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXIuaAppbmRleCAzY2U2ZGI5ZjA2OGU4MDM4OTY4MTE0ZWY5OWFjMjVhY2UwNDExZjM0Li4y
MmU0MmY1MjBkYWNhM2RmNjljNWE4NjA1NjZmZjRhNzcwMWRmNmMxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdl
TmFtZXNwYWNlUHJvdmlkZXIuaApAQCAtMzgsOSArMzgsOCBAQCBwcml2YXRlOgogICAgIGV4cGxp
Y2l0IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcih1aW50NjRfdCBpZGVudGlmaWVyKTsKIAog
ICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVTZXNzaW9uU3RvcmFnZU5h
bWVzcGFjZShXZWJDb3JlOjpQYWdlJiwgdW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOwotICAgIFJl
ZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VO
YW1lc3BhY2UoV2ViQ29yZTo6UGFnZSYsIHVuc2lnbmVkIHF1b3RhKSBvdmVycmlkZTsKLSAgICBS
ZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNl
KHVuc2lnbmVkIHF1b3RhKSBvdmVycmlkZTsKLSAgICBSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVz
cGFjZT4gY3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luJiwgdW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOworICAgIFJlZjxXZWJDb3JlOjpT
dG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVv
dGEsIFBBTDo6U2Vzc2lvbklEKSBvdmVycmlkZTsKKyAgICBSZWY8V2ViQ29yZTo6U3RvcmFnZU5h
bWVzcGFjZT4gY3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luJiwgdW5zaWduZWQgcXVvdGEsIFBBTDo6U2Vzc2lvbklEKSBvdmVycmlkZTsK
IAogICAgIGNvbnN0IHVpbnQ2NF90IG1faWRlbnRpZmllcjsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNwcCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwCmluZGV4IDdkYTVjNzJlNThlZjcz
ZDE5NmQxNjczMDc3NWEzN2JhYTU0NzRjYWQuLjQyY2M0ZGJkMDM5ZWM3MzU5MmM0NzYwZmNhZTFi
YjhkNjgzZGM5OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9y
YWdlQXJlYUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdl
QXJlYUltcGwuY3BwCkBAIC0yOTIsNCArMjkyLDIyIEBAIHZvaWQgU3RvcmFnZUFyZWFJbXBsOjpk
aXNwYXRjaFN0b3JhZ2VFdmVudChjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRW
CiAgICAgICAgIFN0b3JhZ2VFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoU2Vzc2lvblN0b3JhZ2VF
dmVudHMoa2V5LCBvbGRWYWx1ZSwgbmV3VmFsdWUsIG1fc2VjdXJpdHlPcmlnaW4sIHNvdXJjZUZy
YW1lKTsKIH0KIAordm9pZCBTdG9yYWdlQXJlYUltcGw6OnNlc3Npb25DaGFuZ2VkKGJvb2wgaXNO
ZXdTZXNzaW9uUGVyc2lzdGVudCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisg
ICAgdW5zaWduZWQgcXVvdGEgPSBtX3N0b3JhZ2VNYXAtPnF1b3RhKCk7CisgICAgbV9zdG9yYWdl
TWFwID0gU3RvcmFnZU1hcDo6Y3JlYXRlKHF1b3RhKTsKKworICAgIGlmIChpc05ld1Nlc3Npb25Q
ZXJzaXN0ZW50ICYmICFtX3N0b3JhZ2VBcmVhU3luYyAmJiBtX3N0b3JhZ2VTeW5jTWFuYWdlcikg
eworICAgICAgICBtX3N0b3JhZ2VBcmVhU3luYyA9IFN0b3JhZ2VBcmVhU3luYzo6Y3JlYXRlKG1f
c3RvcmFnZVN5bmNNYW5hZ2VyLmdldCgpLCAqdGhpcywgbV9zZWN1cml0eU9yaWdpbi5kYXRhYmFz
ZUlkZW50aWZpZXIoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIWlzTmV3
U2Vzc2lvblBlcnNpc3RlbnQgJiYgbV9zdG9yYWdlQXJlYVN5bmMpIHsKKyAgICAgICAgbV9zdG9y
YWdlQXJlYVN5bmMtPnNjaGVkdWxlRmluYWxTeW5jKCk7CisgICAgICAgIG1fc3RvcmFnZUFyZWFT
eW5jID0gbnVsbHB0cjsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuaCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuaAppbmRleCA1OGZjYmEw
MzUwMDRiYTYzY2M4ODhhOGRiMjkxMDAxOWJjOGU3ZDkxLi5mYWQ3NDc2ODM3MWQyNDFhMTVjMmMy
ZjRlNDNhZTQ2MWM0OGNlY2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3Jh
Z2UvU3RvcmFnZUFyZWFJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0
b3JhZ2VBcmVhSW1wbC5oCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlY3Jl
bWVudEFjY2Vzc0NvdW50KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbG9zZURhdGFiYXNlSWZJZGxl
KCkgb3ZlcnJpZGU7CiAKLSAgICBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHNl
Y3VyaXR5T3JpZ2luKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zZWN1cml0eU9yaWdpbjsg
fQorICAgIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4o
KSBjb25zdCB7IHJldHVybiBtX3NlY3VyaXR5T3JpZ2luOyB9CiAKICAgICBSZWY8U3RvcmFnZUFy
ZWFJbXBsPiBjb3B5KCk7CiAgICAgdm9pZCBjbG9zZSgpOwpAQCAtNzQsNiArNzQsOCBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIHN5bmMoKTsKIAorICAgIHZvaWQgc2Vzc2lvbkNoYW5nZWQoYm9vbCBp
c05ld1Nlc3Npb25QZXJzaXN0ZW50KTsKKwogcHJpdmF0ZToKICAgICBTdG9yYWdlQXJlYUltcGwo
V2ViQ29yZTo6U3RvcmFnZVR5cGUsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYs
IFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlU3luY01hbmFnZXI+JiYsIHVuc2lnbmVkIHF1b3RhKTsK
ICAgICBleHBsaWNpdCBTdG9yYWdlQXJlYUltcGwoY29uc3QgU3RvcmFnZUFyZWFJbXBsJik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmgg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmgKaW5kZXggYzAw
ODc1M2YzNDQ5ZGEzNGM1NjNkY2IxNjVhNDI1NDYzNzAwN2EyNy4uMTA5YzdjZjM0NmMzNWZkMGNk
MDE3ODZiYjQ5MGRlMDhiZDMwOTZmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9T
dG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFn
ZS9TdG9yYWdlQXJlYVN5bmMuaApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsK
IAogY2xhc3MgU3RvcmFnZUFyZWFJbXBsOwogCi1jbGFzcyBTdG9yYWdlQXJlYVN5bmMgOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U3RvcmFnZUFyZWFTeW5jPiB7CitjbGFzcyBTdG9yYWdl
QXJlYVN5bmMgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U3RvcmFnZUFyZWFTeW5jLCBX
VEY6OkRlc3RydWN0aW9uVGhyZWFkOjpNYWluPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxT
dG9yYWdlQXJlYVN5bmM+IGNyZWF0ZShSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZVN5bmNNYW5hZ2Vy
PiYmLCBSZWY8U3RvcmFnZUFyZWFJbXBsPiYmLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlSWRlbnRp
Zmllcik7CiAgICAgflN0b3JhZ2VBcmVhU3luYygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKaW5kZXggNGE5NGExZDg1Y2Vj
YTFlM2M2M2JjNzJhODZhYjA2YWYwZTE4NmQ1ZC4uNzM3ZjVjMDk3MjFkMmJiZGJjODY1NzYxYzlk
MTE4YzgxZGY2MTM0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0
b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2Uv
U3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCkBAIC00NSwxNyArNDUsMTIgQEAgc3RhdGljIEhhc2hN
YXA8U3RyaW5nLCBTdG9yYWdlTmFtZXNwYWNlSW1wbCo+JiBsb2NhbFN0b3JhZ2VOYW1lc3BhY2VN
YXAoKQogICAgIHJldHVybiBsb2NhbFN0b3JhZ2VOYW1lc3BhY2VNYXA7CiB9CiAKLVJlZjxTdG9y
YWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVNlc3Npb25TdG9y
YWdlTmFtZXNwYWNlKHVuc2lnbmVkIHF1b3RhKQorUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBT
dG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodW5zaWdu
ZWQgcXVvdGEsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKLSAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChTdG9yYWdlVHlwZTo6U2Vzc2lvbiwgU3RyaW5n
KCksIHF1b3RhKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFjZUlt
cGwoU3RvcmFnZVR5cGU6OlNlc3Npb24sIFN0cmluZygpLCBxdW90YSwgc2Vzc2lvbklEKSk7CiB9
CiAKLVJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0
ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSkKLXsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChTdG9yYWdlVHlwZTo6RXBo
ZW1lcmFsTG9jYWwsIFN0cmluZygpLCBxdW90YSkpOwotfQotCi1SZWY8U3RvcmFnZU5hbWVzcGFj
ZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpnZXRPckNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVz
cGFjZShjb25zdCBTdHJpbmcmIGRhdGFiYXNlUGF0aCwgdW5zaWduZWQgcXVvdGEpCitSZWY8U3Rv
cmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpnZXRPckNyZWF0ZUxvY2Fs
U3RvcmFnZU5hbWVzcGFjZShjb25zdCBTdHJpbmcmIGRhdGFiYXNlUGF0aCwgdW5zaWduZWQgcXVv
dGEsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICBBU1NFUlQoIWRhdGFiYXNlUGF0
aC5pc051bGwoKSk7CiAKQEAgLTYzLDE4ICs1OCwxOSBAQCBSZWY8U3RvcmFnZU5hbWVzcGFjZUlt
cGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpnZXRPckNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFj
ZQogICAgIGlmIChzbG90KQogICAgICAgICByZXR1cm4gKnNsb3Q7CiAKLSAgICBSZWY8U3RvcmFn
ZU5hbWVzcGFjZUltcGw+IHN0b3JhZ2VOYW1lc3BhY2UgPSBhZG9wdFJlZigqbmV3IFN0b3JhZ2VO
YW1lc3BhY2VJbXBsKFN0b3JhZ2VUeXBlOjpMb2NhbCwgZGF0YWJhc2VQYXRoLCBxdW90YSkpOwor
ICAgIFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gc3RvcmFnZU5hbWVzcGFjZSA9IGFkb3B0UmVm
KCpuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5cGU6OkxvY2FsLCBkYXRhYmFzZVBh
dGgsIHF1b3RhLCBzZXNzaW9uSUQpKTsKICAgICBzbG90ID0gc3RvcmFnZU5hbWVzcGFjZS5wdHIo
KTsKIAogICAgIHJldHVybiBzdG9yYWdlTmFtZXNwYWNlOwogfQogCi1TdG9yYWdlTmFtZXNwYWNl
SW1wbDo6U3RvcmFnZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5cGUgc3RvcmFnZVR5cGUsIGNvbnN0
IFN0cmluZyYgcGF0aCwgdW5zaWduZWQgcXVvdGEpCitTdG9yYWdlTmFtZXNwYWNlSW1wbDo6U3Rv
cmFnZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5cGUgc3RvcmFnZVR5cGUsIGNvbnN0IFN0cmluZyYg
cGF0aCwgdW5zaWduZWQgcXVvdGEsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKICAgICA6IG1f
c3RvcmFnZVR5cGUoc3RvcmFnZVR5cGUpCiAgICAgLCBtX3BhdGgocGF0aC5pc29sYXRlZENvcHko
KSkKICAgICAsIG1fc3luY01hbmFnZXIoMCkKICAgICAsIG1fcXVvdGEocXVvdGEpCiAgICAgLCBt
X2lzU2h1dGRvd24oZmFsc2UpCisgICAgLCBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCiB7CiAgICAg
aWYgKGlzUGVyc2lzdGVudExvY2FsU3RvcmFnZShtX3N0b3JhZ2VUeXBlKSAmJiAhbV9wYXRoLmlz
RW1wdHkoKSkKICAgICAgICAgbV9zeW5jTWFuYWdlciA9IFN0b3JhZ2VTeW5jTWFuYWdlcjo6Y3Jl
YXRlKG1fcGF0aCk7CkBAIC05Nyw5ICs5Myw5IEBAIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBTdG9y
YWdlTmFtZXNwYWNlSW1wbDo6Y29weShQYWdlKikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwogICAgIEFTU0VSVCghbV9pc1NodXRkb3duKTsKLSAgICBBU1NFUlQobV9zdG9yYWdlVHlw
ZSA9PSBTdG9yYWdlVHlwZTo6U2Vzc2lvbiB8fCBtX3N0b3JhZ2VUeXBlID09IFN0b3JhZ2VUeXBl
OjpFcGhlbWVyYWxMb2NhbCk7CisgICAgQVNTRVJUKG1fc3RvcmFnZVR5cGUgPT0gU3RvcmFnZVR5
cGU6OlNlc3Npb24pOwogCi0gICAgYXV0byBuZXdOYW1lc3BhY2UgPSBhZG9wdFJlZigqbmV3IFN0
b3JhZ2VOYW1lc3BhY2VJbXBsKG1fc3RvcmFnZVR5cGUsIG1fcGF0aCwgbV9xdW90YSkpOworICAg
IGF1dG8gbmV3TmFtZXNwYWNlID0gYWRvcHRSZWYoKm5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbCht
X3N0b3JhZ2VUeXBlLCBtX3BhdGgsIG1fcXVvdGEsIG1fc2Vzc2lvbklEKSk7CiAgICAgZm9yIChh
dXRvJiBpdGVyIDogbV9zdG9yYWdlQXJlYU1hcCkKICAgICAgICAgbmV3TmFtZXNwYWNlLT5tX3N0
b3JhZ2VBcmVhTWFwLnNldChpdGVyLmtleSwgaXRlci52YWx1ZS0+Y29weSgpKTsKIApAQCAtMTI3
LDcgKzEyMyw3IEBAIHZvaWQgU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNsb3NlKCkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgLy8gSWYgd2UncmUgbm90IGEgcGVyc2lzdGVudCBzdG9yYWdlLCB3ZSBz
aG91bGRuJ3QgbmVlZCB0byBkbyBhbnkgd29yayBoZXJlLgotICAgIGlmIChtX3N0b3JhZ2VUeXBl
ID09IFN0b3JhZ2VUeXBlOjpTZXNzaW9uIHx8IG1fc3RvcmFnZVR5cGUgPT0gU3RvcmFnZVR5cGU6
OkVwaGVtZXJhbExvY2FsKSB7CisgICAgaWYgKG1fc3RvcmFnZVR5cGUgPT0gU3RvcmFnZVR5cGU6
OlNlc3Npb24pIHsKICAgICAgICAgQVNTRVJUKCFtX3N5bmNNYW5hZ2VyKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KQEAgLTE3Niw0ICsxNzIsMTEgQEAgdm9pZCBTdG9yYWdlTmFtZXNwYWNlSW1w
bDo6Y2xvc2VJZGxlTG9jYWxTdG9yYWdlRGF0YWJhc2VzKCkKICAgICAgICAgaXQtPnZhbHVlLT5j
bG9zZURhdGFiYXNlSWZJZGxlKCk7CiB9CiAKK3ZvaWQgU3RvcmFnZU5hbWVzcGFjZUltcGw6OnNl
dFNlc3Npb25JREZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQoreworICAgIG1f
c2Vzc2lvbklEID0gc2Vzc2lvbklEOworICAgIGZvciAoYXV0byBzdG9yYWdlQXJlYU1hcCA6IG1f
c3RvcmFnZUFyZWFNYXAudmFsdWVzKCkpCisgICAgICAgIHN0b3JhZ2VBcmVhTWFwLT5zZXNzaW9u
Q2hhbmdlZCghc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZU5h
bWVzcGFjZUltcGwuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlTmFtZXNw
YWNlSW1wbC5oCmluZGV4IGM4OGYwNjFlZjVlNTBjOWIxNjM1ZWMzZjhkNmJhMGVkNzcwNWNhYTcu
LjEyMDMyNTJkODQ2OWQ4YjMwZWEwNDAwNzVkOTZmNzE1N2ZmZWVjZjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oCkBAIC0yOCw2
ICsyOCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1N0b3JhZ2VBcmVhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TdG9yYWdlTmFt
ZXNwYWNlLmg+CisjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgpAQCAtMzgsOSArMzksOCBAQCBjbGFzcyBTdG9yYWdlQXJlYUltcGw7CiAKIGNsYXNz
IFN0b3JhZ2VOYW1lc3BhY2VJbXBsIDogcHVibGljIFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2Ug
ewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZVNl
c3Npb25TdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkIHF1b3RhKTsKLSAgICBzdGF0aWMgUmVmPFN0
b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2Uo
dW5zaWduZWQgcXVvdGEpOwotICAgIHN0YXRpYyBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGdl
dE9yQ3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VQYXRo
LCB1bnNpZ25lZCBxdW90YSk7CisgICAgc3RhdGljIFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4g
Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEsIFBBTDo6U2Vzc2lv
bklEKTsKKyAgICBzdGF0aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBnZXRPckNyZWF0ZUxv
Y2FsU3RvcmFnZU5hbWVzcGFjZShjb25zdCBTdHJpbmcmIGRhdGFiYXNlUGF0aCwgdW5zaWduZWQg
cXVvdGEsIFBBTDo6U2Vzc2lvbklEKTsKICAgICB2aXJ0dWFsIH5TdG9yYWdlTmFtZXNwYWNlSW1w
bCgpOwogCiAgICAgdm9pZCBjbG9zZSgpOwpAQCAtNTQsOCArNTQsMTEgQEAgcHVibGljOgogICAg
IHZvaWQgc3luYygpOwogICAgIHZvaWQgY2xvc2VJZGxlTG9jYWxTdG9yYWdlRGF0YWJhc2VzKCk7
CiAKKyAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtX3Nlc3Npb25JRDsgfQorICAgIHZvaWQgc2V0U2Vzc2lvbklERm9yVGVzdGluZyhQQUw6OlNl
c3Npb25JRCkgb3ZlcnJpZGU7CisKIHByaXZhdGU6Ci0gICAgU3RvcmFnZU5hbWVzcGFjZUltcGwo
V2ViQ29yZTo6U3RvcmFnZVR5cGUsIGNvbnN0IFN0cmluZyYgcGF0aCwgdW5zaWduZWQgcXVvdGEp
OworICAgIFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFdlYkNvcmU6OlN0b3JhZ2VUeXBlLCBjb25zdCBT
dHJpbmcmIHBhdGgsIHVuc2lnbmVkIHF1b3RhLCBQQUw6OlNlc3Npb25JRCk7CiAKICAgICBSZWY8
V2ViQ29yZTo6U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYpIG92ZXJyaWRlOwogICAgIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjb3B5KFdl
YkNvcmU6OlBhZ2UqIG5ld1BhZ2UpIG92ZXJyaWRlOwpAQCAtNzMsNiArNzYsOCBAQCBwcml2YXRl
OgogICAgIHVuc2lnbmVkIG1fcXVvdGE7CiAKICAgICBib29sIG1faXNTaHV0ZG93bjsKKworICAg
IFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1dlYlN0b3JhZ2VOYW1l
c3BhY2VQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvV2ViU3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyLmNwcAppbmRleCA4MzYyMDU3ZmZkNzRmNmQyZGExYWE0N2Q3Nzgw
MDQ5MWM5ZGExMWRjLi5kMDk0NjkxMjVmYzJmNDg2NjU4YTczYTZiOTUwYjI0MzRiMDcwNzllIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvV2ViU3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIldlYlN0
b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oIgogCiAjaW5jbHVkZSAiU3RvcmFnZU5hbWVzcGFjZUlt
cGwuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0
cm95ZWQuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC05NiwyNiArOTcsMjEgQEAg
dm9pZCBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OnN5bmNMb2NhbFN0b3JhZ2UoKQogICAg
IH0KIH0KIAotUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
cjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoUGFnZSYsIHVuc2lnbmVkIHF1b3RhKQor
UmVmPFN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRl
U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoUGFnZSYgcGFnZSwgdW5zaWduZWQgcXVvdGEpCiB7Ci0g
ICAgcmV0dXJuIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVz
cGFjZShxdW90YSk7CisgICAgcmV0dXJuIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVTZXNz
aW9uU3RvcmFnZU5hbWVzcGFjZShxdW90YSwgcGFnZS5zZXNzaW9uSUQoKSk7CiB9CiAKLVJlZjxT
dG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUVwaGVt
ZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQgcXVvdGEpCitSZWY8U3Rv
cmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkK
IHsKLSAgICByZXR1cm4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZUVwaGVtZXJhbExvY2Fs
U3RvcmFnZU5hbWVzcGFjZShxdW90YSk7CisgICAgcmV0dXJuIFN0b3JhZ2VOYW1lc3BhY2VJbXBs
OjpnZXRPckNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZShtX2xvY2FsU3RvcmFnZURhdGFiYXNl
UGF0aCwgcXVvdGEsIHNlc3Npb25JRCk7CiB9CiAKLVJlZjxTdG9yYWdlTmFtZXNwYWNlPiBXZWJT
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNp
Z25lZCBxdW90YSkKLXsKLSAgICByZXR1cm4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmdldE9yQ3Jl
YXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoLCBxdW90
YSk7Ci19Ci0KLVJlZjxTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYs
IHVuc2lnbmVkIHF1b3RhKQorUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3Bh
Y2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFNlY3VyaXR5
T3JpZ2luJiwgdW5zaWduZWQgcXVvdGEsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAg
ICAvLyBGSVhNRTogQSBzbWFydGVyIGltcGxlbWVudGF0aW9uIHdvdWxkIGNyZWF0ZSBhIHNwZWNp
YWwgbmFtZXNwYWNlIHR5cGUgaW5zdGVhZCBvZiBqdXN0IHBpZ2d5LWJhY2tpbmcgb2ZmCiAgICAg
Ly8gU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UgaGVyZS4KLSAgICByZXR1cm4gU3RvcmFnZU5hbWVz
cGFjZUltcGw6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHF1b3RhKTsKKyAgICByZXR1
cm4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHF1
b3RhLCBzZXNzaW9uSUQpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L1N0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L1N0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmgKaW5kZXggZTU4OWZlZTdh
NWM2YzkxY2Y5NGI3ZDIzYjQ4NjE0ODE3OWI4Y2ZmNi4uNmRiYzVjOTA5YmZiNzllMWEzNWIwOGI0
ODk1MzlhMGYzZjcwYTcxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdl
L1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
U3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaApAQCAtNTAsOSArNTAsOCBAQCBw
cml2YXRlOgogICAgIGV4cGxpY2l0IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcihjb25zdCBT
dHJpbmcmIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCk7CiAKICAgICBSZWY8V2ViQ29yZTo6U3Rv
cmFnZU5hbWVzcGFjZT4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6UGFn
ZSYsIHVuc2lnbmVkIHF1b3RhKSBvdmVycmlkZTsKLSAgICBSZWY8V2ViQ29yZTo6U3RvcmFnZU5h
bWVzcGFjZT4gY3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlBh
Z2UmLCB1bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7Ci0gICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VO
YW1lc3BhY2U+IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSkgb3Zl
cnJpZGU7Ci0gICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVRyYW5zaWVu
dExvY2FsU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVk
IHF1b3RhKSBvdmVycmlkZTsKKyAgICBSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY3Jl
YXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkIHF1b3RhLCBQQUw6OlNlc3Npb25JRCkg
b3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVRyYW5z
aWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYsIHVuc2ln
bmVkIHF1b3RhLCBQQUw6OlNlc3Npb25JRCkgb3ZlcnJpZGU7CiAKICAgICBjb25zdCBTdHJpbmcg
bV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGg7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDRhZTIzZTkwYTQ3MTBjMzQwNDEyMDc3ZGI5YTMwMzRk
YzY1NzI0YjguLjVlNWFmMzExZDk4Nzc5ZjQ5ZWM0Mzk3OGM4OTFkZmU1NWQwYjhlMjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTI4OTMsNiArMjg5
Myw3IEBAIC0gKHZvaWQpX3ByZWZlcmVuY2VzQ2hhbmdlZDooV2ViUHJlZmVyZW5jZXMgKilwcmVm
ZXJlbmNlcwogICAgIHNldHRpbmdzLnNldExvY2FsU3RvcmFnZUVuYWJsZWQoW3ByZWZlcmVuY2Vz
IGxvY2FsU3RvcmFnZUVuYWJsZWRdKTsKIAogICAgIF9wcml2YXRlLT5wYWdlLT5lbmFibGVMZWdh
Y3lQcml2YXRlQnJvd3NpbmcoW3ByZWZlcmVuY2VzIHByaXZhdGVCcm93c2luZ0VuYWJsZWRdKTsK
KyAgICBfcHJpdmF0ZS0+Z3JvdXAtPnN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcigpLmVuYWJsZUxl
Z2FjeVByaXZhdGVCcm93c2luZ0ZvclRlc3RpbmcoW3ByZWZlcmVuY2VzIHByaXZhdGVCcm93c2lu
Z0VuYWJsZWRdKTsKICAgICBzZXR0aW5ncy5zZXRTYW5zU2VyaWZGb250RmFtaWx5KFtwcmVmZXJl
bmNlcyBzYW5zU2VyaWZGb250RmFtaWx5XSk7CiAgICAgc2V0dGluZ3Muc2V0U2VyaWZGb250RmFt
aWx5KFtwcmVmZXJlbmNlcyBzZXJpZkZvbnRGYW1pbHldKTsKICAgICBzZXR0aW5ncy5zZXRTdGFu
ZGFyZEZvbnRGYW1pbHkoW3ByZWZlcmVuY2VzIHN0YW5kYXJkRm9udEZhbWlseV0pOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGE1OTQ0NTdkZTAy
YzNlNTNmMDAxMTAyNTY5NGY2MjA0OWRiZmVkODMuLjZhNDY2NWRkYWQ1NjA5N2QwNzMwYzYyNmYy
NGVkN2JiNDAyYjBkOWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxOS0wOC0wNSAgU2lodWkgTGl1ICA8c2lodWlf
bGl1QGFwcGxlLmNvbT4KKworICAgICAgICBTb21lIGltcHJvdmVtZW50cyBvbiB3ZWIgc3RvcmFn
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwMzcz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXBoZW1l
cmFsIHdlYiBzdG9yYWdlIHdpbGwgYmUgbG9zdCBub3cgaWYgbmV0d29yayBwcm9jZXNzIGNyYXNo
ZXMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0xvY2FsU3Rv
cmFnZVBlcnNpc3RlbmNlLm1tOgorICAgICAgICAoVEVTVCk6CisKIDIwMTktMDgtMDIgIEFuZHJl
cyBHb256YWxleiAgPGFuZHJlc2dfMjJAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBhY2Nlc3Np
YmlsaXR5IG9iamVjdCBtZXRob2QgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYW4gZWxlbWVudCBpcyBp
bnNpZGUgYSB0YWJsZSBjZWxsLiBOZWVkZWQgZm9yIGlPUyBhY2Nlc3NpYmlsaXR5IGNsaWVudC4K
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTG9jYWxT
dG9yYWdlUGVyc2lzdGVuY2UubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0xvY2FsU3RvcmFnZVBlcnNpc3RlbmNlLm1tCmluZGV4IDExNTYyYmI1NjkzNGY1NGQ2M2Y5
NzdhN2JkZTA5ZDk0MzU0OWFiMjcuLjllODVjNzc2YjYzODEyMjllYTg2ZjVmNTFiNjBiMjFkMTk5
OTk4MzYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
TG9jYWxTdG9yYWdlUGVyc2lzdGVuY2UubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9Mb2NhbFN0b3JhZ2VQZXJzaXN0ZW5jZS5tbQpAQCAtMTA0LDkgKzEwNCwx
MSBAQCBURVNUKFdLV2ViVmlldywgTG9jYWxTdG9yYWdlUHJvY2Vzc0NyYXNoZXMpCiAgICAgfV07
CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWFkeVRvQ29udGludWUpOwogCisgICAg
Ly8gSWYgbmV0d29yayBwcm9jZXNzLCBpbi1tZW1vcnkgc2Vzc2lvblN0b3JhZ2Ugd291bGQgYmUg
bG9zdC4KKyAgICAvLyBXZWIgcHJvY2VzcyBzaG91bGQgZGlzY2FyZCBpdHMgbG9jYWwgY29weSBv
ZiBzZXNzaW9uU3RvcmFnZS4KICAgICByZWFkeVRvQ29udGludWUgPSBmYWxzZTsKICAgICBbd2Vi
VmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJ3aW5kb3cuc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgn
c2Vzc2lvbicpIiBjb21wbGV0aW9uSGFuZGxlcjpeKGlkIHJlc3VsdCwgTlNFcnJvciAqKSB7Ci0g
ICAgICAgIEVYUEVDVF9UUlVFKFtAInN0b3JhZ2UiIGlzRXF1YWxUb1N0cmluZzpyZXN1bHRdKTsK
KyAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0VxdWFsOk5TTnVsbC5udWxsXSk7CiAgICAg
ICAgIHJlYWR5VG9Db250aW51ZSA9IHRydWU7CiAgICAgfV07CiAgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZyZWFkeVRvQ29udGludWUpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDBkYzhiOWE0MGFjYTRkYjdlNTgx
ZjY1ZDk2ZjBhMTQyMGJmMTZkODguLjA2MGUzM2QwNzMxNDRhMGZjY2FhMzUwZTNiZWNlNWU4ZTAz
N2FjZjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxOS0wOC0wNSAgU2lodWkgTGl1ICA8c2lo
dWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBTb21lIGltcHJvdmVtZW50cyBvbiB3ZWIgc3Rv
cmFnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAw
MzczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW9k
aWZpZWQgdGVzdCBmb3IgY2hhbmdlZCBiZWhhdmlvci4KKworICAgICAgICAqIHBsYXRmb3JtL2lv
cy1zaW11bGF0b3Itd2syL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vbWFj
LXdrMi9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHN0b3JhZ2UvZG9tc3RvcmFnZS9sb2Nh
bHN0b3JhZ2UvcHJpdmF0ZS1icm93c2luZy1hZmZlY3RzLXN0b3JhZ2UtZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIHN0b3JhZ2UvZG9tc3RvcmFnZS9sb2NhbHN0b3JhZ2UvcmVzb3VyY2VzL3ByaXZh
dGUtYnJvd3NpbmctMS5odG1sOiBjbGVhciBsZWdhY3kgbG9jYWxTdG9yYWdlIGF0IHRoZSBiZWdp
bm5pbmcgCisgICAgICAgIG9mIHRoZSB0ZXN0LCBiZWNhdXNlIGRpZmZlcmVudCBwYWdlcyB3b3Vs
ZCBzaGFyZSB0aGUgc2FtZSBlcGhlbWVyYWwgbG9jYWxTdG9yYWdlIG5vdywgYW5kIHdlIGRvbid0
IHdhbnQgdGhlbSB0bworICAgICAgICBhZmZlY3QgZWFjaCBvdGhlci4KKwogMjAxOS0wOC0wMiAg
WXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5z
cGVjdG9yOiBDcmFzaCB3aGVuIGludGVyYWN0aW5nIHdpdGggVGVtcGxhdGUgQ29udGVudCBpbiBD
b25zb2xlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yLXdr
Mi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXNpbXVsYXRvci13
azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA5ZTg2NjZhY2VmMTY4MzgyNWQ3NTM4NjIxYzFjOWY4
OTRlMGI1MTNmLi45NzQ5NzdhMjVmY2YxZmQ5ZTU3N2UzM2Y4NWZhNWFmZDA0YmFmY2EyIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yLXdrMi9UZXN0RXhwZWN0
YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy1zaW11bGF0b3Itd2syL1Rlc3RF
eHBlY3RhdGlvbnMKQEAgLTY2LDcgKzY2LDcgQEAgaHR0cC93cHQvY2FjaGUtc3RvcmFnZS9jYWNo
ZS1wdXQta2V5cy5odHRwcy5hbnkud29ya2VyLmh0bWwgWyBTbG93IF0KIGh0dHAvd3B0L2NhY2hl
LXN0b3JhZ2UvYS1jYWNoZS1vcGVuLmh0dHBzLmh0bWwgWyBTbG93IF0KIGh0dHAvd3B0L2NhY2hl
LXN0b3JhZ2UvY2FjaGUtcXVvdGEtYWRkLmFueS5odG1sIFsgU2xvdyBdCiAKLXdlYmtpdC5vcmcv
Yi8xOTYzNzYgWyBEZWJ1ZyBdIHN0b3JhZ2UvZG9tc3RvcmFnZS9sb2NhbHN0b3JhZ2UvcHJpdmF0
ZS1icm93c2luZy1hZmZlY3RzLXN0b3JhZ2UuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCit3ZWJraXQu
b3JnL2IvMTk2Mzc2IFsgRGVidWcgXSBzdG9yYWdlL2RvbXN0b3JhZ2UvbG9jYWxzdG9yYWdlL3By
aXZhdGUtYnJvd3NpbmctYWZmZWN0cy1zdG9yYWdlLmh0bWwgWyBQYXNzIF0KIAogd2Via2l0Lm9y
Zy9iLzE5NjQwMyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhY2FwdHVyZS1y
ZWNvcmQvTWVkaWFSZWNvcmRlci1zdG9wLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggMzA3ZWNiZWZh
ZGI3YWY4Yjc2ZjkxYTVlMDAzY2Y1ZDlkOThhNzFmZC4uNTQwZTBkZTExOGVkZjU1OWQzMTY3NmRl
NzI4ZTExNmUyMDVmOTM2NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdr
Mi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVz
dEV4cGVjdGF0aW9ucwpAQCAtOTIyLDcgKzkyMiw3IEBAIHdlYmtpdC5vcmcvYi8xOTQ4MjYgaHR0
cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2RvLW5vdC1ibG9jay10b3AtbGV2ZWwtbmF2
CiAKIHdlYmtpdC5vcmcvYi8xOTQ5MTYgZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS12aWRl
by1lbGVtZW50Lmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCi13ZWJraXQub3JnL2IvMTk2Mzc2IHN0
b3JhZ2UvZG9tc3RvcmFnZS9sb2NhbHN0b3JhZ2UvcHJpdmF0ZS1icm93c2luZy1hZmZlY3RzLXN0
b3JhZ2UuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMTk2Mzc2IHN0b3JhZ2Uv
ZG9tc3RvcmFnZS9sb2NhbHN0b3JhZ2UvcHJpdmF0ZS1icm93c2luZy1hZmZlY3RzLXN0b3JhZ2Uu
aHRtbCBbIFBhc3MgXQogCiB3ZWJraXQub3JnL2IvMTk2NDAwIGZhc3QvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1UcmFjay1nZXRTZXR0aW5ncy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFnZS9wcml2YXRl
LWJyb3dzaW5nLWFmZmVjdHMtc3RvcmFnZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2RvbXN0b3JhZ2UvbG9jYWxzdG9yYWdlL3ByaXZhdGUtYnJvd3NpbmctYWZmZWN0cy1zdG9y
YWdlLWV4cGVjdGVkLnR4dAppbmRleCAyY2E5NTU3NTAyN2ZhYjg5YWJlYjQ2N2IzODA1YzIwNjA1
ZGZmYmQxLi5mOTg0MGRlYjUzMGJlMWMxNTVhZDhkZWY1YTU4YzgwZmM2NjFkMDI3IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2RvbXN0b3JhZ2UvbG9jYWxzdG9yYWdlL3ByaXZhdGUt
YnJvd3NpbmctYWZmZWN0cy1zdG9yYWdlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2RvbXN0b3JhZ2UvbG9jYWxzdG9yYWdlL3ByaXZhdGUtYnJvd3NpbmctYWZmZWN0cy1z
dG9yYWdlLWV4cGVjdGVkLnR4dApAQCAtOCw3ICs4LDcgQEAgQUxFUlQ6IGxvY2FsU3RvcmFnZSdz
IGxlbmd0aCBpczogMQogQUxFUlQ6IFRoZSBpdGVtIGluIG5ldyB3aW5kb3cgc3RhcnRzIG91dCBh
czogQ2hhbmdlZFZhbHVlCiBBTEVSVDogVGhlIGl0ZW0gaW4gbmV3IHdpbmRvdyBpcyBub3c6IE5l
d1dpbmRvd1ZhbHVlCiBBTEVSVDogQmFjayBpbiBwYXJlbnQgd2luZG93LCBsb2NhbFN0b3JhZ2Un
cyBsZW5ndGggaXM6IDEKLUFMRVJUOiBCYWNrIGluIHBhcmVudCB3aW5kb3csIHRlc3RJdGVtIGlz
OiBDaGFuZ2VkVmFsdWUKK0FMRVJUOiBCYWNrIGluIHBhcmVudCB3aW5kb3csIHRlc3RJdGVtIGlz
OiBOZXdXaW5kb3dWYWx1ZQogQUxFUlQ6IEZpbmFsIHdpbmRvdywgbG9jYWxTdG9yYWdlJ3MgbGVu
Z3RoIGlzOiAxCiBBTEVSVDogRmluYWwgd2luZG93LCBpdGVtIGlzOiBQZXJzaXN0ZW50IGl0ZW0h
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvZG9tc3RvcmFnZS9sb2NhbHN0b3Jh
Z2UvcmVzb3VyY2VzL3ByaXZhdGUtYnJvd3NpbmctMS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFnZS9yZXNvdXJjZXMvcHJpdmF0ZS1icm93c2luZy0xLmh0
bWwKaW5kZXggZTQxMDFlMzkxYzA1Y2Q2YjZhOTczMDhkMTYyOTE3YTJkMWFjODljNC4uNzMwZDRi
OTE5YzY3YTk1ZmMxOTBkNTAyZGFiZmUyYmUwZGJhMjhmNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFnZS9yZXNvdXJjZXMvcHJpdmF0ZS1icm93
c2luZy0xLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9kb21zdG9yYWdlL2xvY2Fsc3Rv
cmFnZS9yZXNvdXJjZXMvcHJpdmF0ZS1icm93c2luZy0xLmh0bWwKQEAgLTI0LDYgKzI0LDEyIEBA
IGZ1bmN0aW9uIHJ1blRlc3QoKQogICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICJwcml2
YXRlLWJyb3dzaW5nLTMuaHRtbCI7CiAgICAgfQogCisgICAgdHJ5IHsKKyAgICAgICAgbG9jYWxT
dG9yYWdlLmNsZWFyKCk7CisgICAgfSBjYXRjaChlKSB7CisgICAgICAgIGxvZygiQ2F1Z2h0IGV4
Y2VwdGlvbiB0cnlpbmcgdG8gY2xlYXIiICsgZSk7CisgICAgfQorCiAgICAgbG9nKCJTdGFydCBv
ZiBwcml2YXRlIGJyb3dzaW5nIHRlc3QsIHRlc3RJdGVtIGlzOiAiICsgbG9jYWxTdG9yYWdlLmdl
dEl0ZW0oInRlc3RJdGVtIikpOwogICAgIGxvZygibG9jYWxTdG9yYWdlJ3MgbGVuZ3RoIGlzOiAi
ICsgbG9jYWxTdG9yYWdlLmxlbmd0aCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375756</attachid>
            <date>2019-08-07 14:53:47 -0700</date>
            <delta_ts>2019-08-14 15:15:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200373-20190807145346.patch</filename>
            <type>text/plain</type>
            <size>253321</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4Mzc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTkyYTk0YTQyOTljMDc1
N2VjN2E0ZGZkMWQ5MTA0NDE5N2Q0MmM2Yi4uOWM2ZjE2ZmJiNTFmYmQ3MzMyMzUyNzk4NTRmZjlm
YTlmNWMwMzFjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDE5LTA4LTA3ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIFNvbWUgaW1wcm92ZW1lbnRz
IG9uIHdlYiBzdG9yYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDAzNzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBSZW1vdmUgc3RvcmFnZSB0eXBlIEVwaGVtZXJhbExvY2FsU3RvcmFnZSwgd2hpY2gg
aXMgdXNlZCBmb3IgbG9jYWxTdG9yYWdlIGluIGVwaGVtZXJhbCBzZXNzaW9uLCBhbmQgdXNlIExv
Y2FsU3RvcmFnZSBpbnN0ZWFkLgorCisgICAgICAgIEFkZCBTZXNzaW9uSUQgdG8gU3RvcmFnZU5h
bWVzcGFjZSB0byBtYWtlIFN0b3JhZ2VOYW1lc3BhY2Ugc2Vzc2lvbi1zcGVjaWZpYy4KKworICAg
ICAgICBObyBuZXcgdGVzdCwgdXBkYXRpbmcgZXhpc3RpbmcgdGVzdHMgZm9yIG5ldyBiZWhhdmlv
ci4KKworICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVz
cGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6
Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UpOiBEZWxldGVkLgorCisgICAgICAgICogcGFnZS9DaHJvbWUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2hyb21lOjpjcmVhdGVXaW5kb3cgY29uc3QpOiBlcGhlbWVyYWwgbG9j
YWxTdG9yYWdlIG9mIGRpZmZlcmVudCB3aW5kb3dzIHdpbGwgY29ubmVjdCB0byB0aGUgc2FtZSAK
KyAgICAgICAgU3RvcmFnZUFyZWEgaW4gbmV0d29yayBwcm9jZXNzLCBzbyBubyBuZWVkIHRvIGNv
cHkgZnJvbSBwYXJlbnQgd2luZG93IHRvIGNoaWxkIHdpbmRvdy4KKworICAgICAgICAqIHBhZ2Uv
RE9NV2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6cHJld2FybUxvY2Fs
U3RvcmFnZUlmTmVjZXNzYXJ5KTogbG9jYWxTdG9yYWdlIHdpbGwgYmUgcHJld2FybWVkIGluIG5l
dHdvcmsgcHJvY2VzcyBpbiB0aGUKKyAgICAgICAgaW5pdGlhbGl6YXRpb24gb2YgU3RvcmFnZUFy
ZWFNYXAuCisKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZTo6c2V0U2Vzc2lvbklEKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmVwaGVtZXJhbExvY2Fs
U3RvcmFnZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzZXRFcGhlbWVyYWxM
b2NhbFN0b3JhZ2UpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAq
IHBhZ2UvUGFnZUdyb3VwLmg6CisgICAgICAgIChXZWJDb3JlOjpQYWdlR3JvdXA6OmlzTGVnYWN5
UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZEZvclRlc3RpbmcpOgorICAgICAgICAqIHBhZ2UvU2VjdXJp
dHlPcmlnaW4uaDoKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjYW5BY2Nlc3NM
b2NhbFN0b3JhZ2UgY29uc3QpOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTdG9yYWdlOjpwcmV3YXJtKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdG9y
YWdlL1N0b3JhZ2UuaDoKKyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2VBcmVhLmg6CisgICAgICAg
IChXZWJDb3JlOjpTdG9yYWdlQXJlYTo6Y2xvc2VEYXRhYmFzZUlmSWRsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTdG9yYWdlQXJlYTo6cHJld2FybSk6IERlbGV0ZWQuCisgICAgICAgICogc3RvcmFn
ZS9TdG9yYWdlTmFtZXNwYWNlLmg6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVy
Ojpsb2NhbFN0b3JhZ2VBcmVhKToKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2VQ
cm92aWRlcjo6bG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0b3Jh
Z2VOYW1lc3BhY2VQcm92aWRlcjo6dHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6ZW5hYmxlTGVnYWN5UHJp
dmF0ZUJyb3dzaW5nRm9yVGVzdGluZyk6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlTmFtZXNw
YWNlUHJvdmlkZXIuaDoKKyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2VUeXBlLmg6CisgICAgICAg
IChXZWJDb3JlOjppc0xvY2FsU3RvcmFnZSk6CisKIDIwMTktMDgtMDcgIENocmlzIER1bWV6ICA8
Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggdGhyZWFkIHNhZmV0eSBpc3N1ZSB1bmRl
ciBKU0hpc3Rvcnk6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZDhhYWNl
ZWM4ZTEzYjFlNTRkZWJmYThmOWU3MjgyYTdmN2RlZGY2Yi4uOGIzYzQ3YjQ0OTRlZmYwZmUxMjIz
ODk3ZDEwNmRlZjhlMWRjMTFkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOTEgQEAKKzIwMTktMDgt
MDcgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgU29tZSBpbXBy
b3ZlbWVudHMgb24gd2ViIHN0b3JhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwMDM3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFNvbWUgZmxhd3MgaW4gY3VycmVudCB3ZWIgc3RvcmFnZSBhcmNoaXRl
Y3R1cmUgaGF2ZSBiZWNvbWUgb2J2aW91cyBhZnRlciB3ZWIgc3RvcmFnZSBpcyBtb3ZlZCBmcm9t
IFVJIHByb2Nlc3MgdG8KKyAgICAgICAgbmV0d29yayBwcm9jZXNzIGFuZCBQU09OIGlzIGVuYWJs
ZWQuIEZvciBleGFtcGxlLCBzZXNzaW9uU3RvcmFnZU5hbWVTcGFjZSBmb3Igd2ViIHBhZ2UgaXMg
cHJlcGFyZWQgYW5kIGRlc3Ryb3llZAorICAgICAgICBpbiB0aGUgbmV0d29yayBwcm9jZXNzIHdo
ZW4gdGhlIHBhZ2UgY29tZXMgYW5kIGdvZXMsIGV2ZW4gdGhvdWdoIHRoZSBwYWdlIG1heSBub3Qg
dXNlIHNlc3Npb25TdG9yYWdlIGF0IGFsbC4gVUkKKyAgICAgICAgcHJvY2VzcyBuYXR1cmFsbHkg
a25vd3Mgc3RhdGUgb2YgYSB3ZWIgcGFnZSwgYnV0IG5ldHdvcmsgcHJvY2VzcyBkb2VzIG5vdC4g
SWYgdGhlIHdlYiBwYWdlIGlzIG5vdCB1c2luZyB3ZWIKKyAgICAgICAgc3RvcmFnZSwgdGhlIG1l
c3NhZ2VzIGFib3V0IHBhZ2Ugc3RhdGUgc2VudCBmcm9tIHdlYiBwcm9jZXNzIHRvIG5ldHdvcmsg
cHJvY2VzcyBhcmUgd2FzdGUuCisKKyAgICAgICAgSGVyZSBhcmUgc29tZSBnZW5lcmFsIGlkZWFz
IG9mIHRoaXMgcGF0Y2g6CisgICAgICAgIDEuIE5ldHdvcmsgcHJvY2VzcyBvd25zIHRoZSB3ZWIg
c3RvcmFnZSwgYW5kIHdlYiBwcm9jZXNzIGtlZXBzIGEgc21hbGwgbG9jYWwgY29weSAoYmFzZWQg
b24gc2Vzc2lvbiBhbmQgCisgICAgICAgIG9yaWdpbnMgdGhhdCBhcmUgdmlzaXRlZCkuIFRoZXJl
IGlzIGEgdmlydHVhbCBjb25uZWN0aW9uIGZyb20gdGhlIGxvY2FsIGNvcHkgaW4gdGhlIHdlYiBw
cm9jZXNzIHRvIHRoZSBvcmlnaW5hbAorICAgICAgICBjb3B5IGluIHRoZSBuZXR3b3JrIHByb2Nl
c3MuIFRoZSBjb25uZWN0aW9uIGlzIGNyZWF0ZWQgYnkgd2ViIHByb2Nlc3Mgd2hlbiBzb21lIHBh
Z2UgYXNrcyBmb3Igd2ViIHN0b3JhZ2UuCisgICAgICAgIDIuIElmIGNvbm5lY3Rpb24gaXMgbG9z
dCBiZWNhdXNlIG5ldHdvcmsgcHJvY2VzcyBpcyBnb25lLCBzdG9yYWdlIGluIG1lbW9yeSB3aWxs
IGJlIGxvc3QuIFRoZSBsb2NhbCBjb3B5IGluIHdlYgorICAgICAgICBwcm9jZXNzcyB3aWxsIGJl
IGRpc2NhcmRlZC4KKyAgICAgICAgMy4gKFNlc3Npb25JRCwgU3RvcmFnZU5hbWVzcGFjZUlELCBT
ZWN1cml0eU9yaWdpbikgaXMgdXNlZCB0byBpZGVudGlmeSBhIHN0b3JhZ2UgYXJlYS4gSWYgc2Vz
c2lvbiBpcyBjaGFuZ2VkIGluCisgICAgICAgIHdlYiBwcm9jZXNzIChsaWtlIGVuYWJsaW5nIHBy
aXZhdGUgYnJvd3NpbmcgaW4gbGF5b3V0IHRlc3Qgbm93KSwgYSByZS1jb25uZWN0aW9uIHdpdGgg
ZGlmZmVyZW50IHNlc3Npb25JRCB3b3VsZCAKKyAgICAgICAgc3VmZmljZSB0byBsb2FkIGFub3Ro
ZXIgY29weSBvZiBzdG9yYWdlLgorICAgICAgICA0LiBsb2NhbFN0b3JhZ2UgaW4gZXBoZW1lcmFs
IHNlc3Npb24gaGFzIHRoZSBzYW1lIGJlaGF2aW9yIGFzIGxvY2FsU3RvcmFnZSBpbnN0ZWFkIG9m
IHNlc3Npb25TdG9yYWdlLCB3aGljaAorICAgICAgICBtZWFucyBkaWZmZXJlbnQgcGFnZXMgaW4g
dGhlIHNhbWUgZXBoZW1lcmFsIHNlc3Npb24gc2hhcmUgdGhlIHNhbWUgbG9jYWxTdG9yYWdlLgor
CisgICAgICAgIEFsc28sIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBTdG9yYWdlTWFuYWdlclNldCB0
byBuZXR3b3JrIHByb2Nlc3MuIEl0IGhhbmRsZXMgd2ViIHN0b3JhZ2Ugc3R1ZmYsIGluY2x1ZGlu
ZworICAgICAgICByZWNlaXZpbmcgc3RvcmFnZSBtZXNzYWdlcyBmcm9tIHdlYiBwcm9jZXNzLCBv
biBvbmUgYmFja2dyb3VuZCB0aHJlYWQuIFByZXZpb3VzbHkgZWFjaCBzZXNzaW9uIGhhcyBpdHMg
b3duCisgICAgICAgIFN0b3JhZ2VNYW5hZ2VyIGFuZCBlYWNoIFN0b3JhZ2VNYW5hZ2VyIGhhcyBp
dHMgb3duIFdvcmtRdWV1ZS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAq
IERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJj
ZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKwor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cDogcmVtb3ZlIG1lc3NhZ2UgaGFuZGxlcnMgdGhhdCBhcmUgbm8gbG9uZ2VyIG5lZWRlZC4gTmV0
d29yaworICAgICAgICBwcm9jZXNzIG5vIGxvbmdlciBuZWVkcyB0byBrbm93IHBhZ2Ugc3RhdGVz
IGZyb20gd2ViIHByb2Nlc3MuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpkaWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjp3ZWJQYWdlV2FzQWRkZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6d2ViUGFnZVdhc1JlbW92ZWQpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6d2Vi
UHJvY2Vzc1Nlc3Npb25DaGFuZ2VkKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOiBOZXR3b3JrUHJvY2VzcyB1c2Vz
IFN0b3JhZ2VNYW5hZ2VyU2V0IGluc3RlYWQgb2YgU3RvcmFnZU1hbmFnZXIgZnJvbSAKKyAgICAg
ICAgZGlmZmVyZW50IHNlc3Npb25zIHRvIGRlYWwgd2l0aCB3ZWIgc3RvcmFnZS4KKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6Ok5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3M6OmluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpjcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjphZGRXZWJzaXRlRGF0YVN0b3Jl
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRlc3Ryb3lTZXNzaW9uKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6Omhhc0xvY2FsU3RvcmFnZSk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpmZXRjaFdlYnNpdGVEYXRhKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxl
RG9tYWlucyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjphY3R1YWxQcmVwYXJl
VG9TdXNwZW5kKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlc3VtZSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzeW5jTG9jYWxTdG9yYWdlKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNsZWFyTGVnYWN5UHJpdmF0ZUJyb3dzaW5nTG9j
YWxTdG9yYWdlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmdldExvY2FsU3Rv
cmFnZU9yaWdpbkRldGFpbHMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y29u
bmVjdGlvblRvV2ViUHJvY2Vzc0Nsb3NlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzOjp3ZWJQYWdlV2FzQWRkZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzczo6d2ViUGFnZVdhc1JlbW92ZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6d2ViUHJvY2Vzc1dhc0Rpc2Nvbm5lY3RlZCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjp3ZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQpOiBE
ZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHA6IFN0b3JhZ2VNYW5hZ2VyIGlz
IG1vdmVkIG91dCBvZiBOZXR3b3JrU2Vzc2lvbi4gSXQgaXMgbm93IG1hbmFnZWQgYnkgCisgICAg
ICAgIFN0b3JhZ2VNYW5hZ2VyU2V0LgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6
TmV0d29ya1Nlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6fk5ldHdv
cmtTZXNzaW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6c3RvcmFnZU1hbmFnZXIpOiBEZWxldGVk
LgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0
ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRl
cnM6OnByaXZhdGVTZXNzaW9uUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtT
ZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKworICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmg6IGNyZWF0
aW9uIHBhcmFtZXRlcnMgb2YgU3RvcmFnZU1hbmFnZXIgaXMgbW92ZWQgb3V0IG9mCisgICAgICAg
IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViS2l0
OjpMb2NhbFN0b3JhZ2VEYXRhYmFzZTo6dXBkYXRlRGF0YWJhc2UpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuaDoKKworICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNw
cDogTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyIGlzIGNyZWF0ZWQgb24gdGhlCisgICAgICAg
IGJhY2tncm91bmQgdGhyZWFkIG5vdywgc28gaXQgZG9lcyBub3QgaG9sZCBXb3JrUXVldWUgdG8g
ZG8gdGhlIGZpbGUgb3BlcmF0aW9uLgorICAgICAgICAoV2ViS2l0OjpMb2NhbFN0b3JhZ2VEYXRh
YmFzZVRyYWNrZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsU3RvcmFnZURhdGFi
YXNlVHJhY2tlcjo6TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyKToKKyAgICAgICAgKFdlYktp
dDo6TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjp+TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFj
a2VyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURh
dGFiYXNlVHJhY2tlci5oOgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9T
dG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OmdlbmVyYXRlU3RvcmFnZUFyZWFJ
ZGVudGlmaWVyKTogZWFjaCBTdG9yYWdlQXJlYSBoYXMgYW4gaWRlbnRpZmllci4gU3RvcmFnZUFy
ZWFNYXAgaW4gd2ViIHByb2Nlc3MKKyAgICAgICAgdXNlIHRoaXMgaWRlbnRpZmllciB0byBpbmRp
Y2F0ZSB3aGljaCBTdG9yYWdlQXJlYSBpdCBpcyBjb25uZWN0aW5nIHRvLgorICAgICAgICAoV2Vi
S2l0OjpTdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUFyZWE6OlN0b3JhZ2VBcmVhKToKKyAgICAgICAg
KFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VBcmVhOjp+U3RvcmFnZUFyZWEpOgorICAg
ICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUFyZWE6OmFkZExpc3RlbmVyKTog
bG9hZCBsb2NhbFN0b3JhZ2VEYXRhYmFzZSBpbiBhZHZhbmNlIGlmIHRoZXJlIGlzIHNvbWUgCisg
ICAgICAgIGNvbm5lY3Rpb24gdG8gdGhpcyBMb2NhbFN0b3JhZ2UgYXJlYS4KKyAgICAgICAgKFdl
YktpdDo6U3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VBcmVhOjpyZW1vdmVMaXN0ZW5lcik6CisgICAg
ICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQXJlYTo6Y2xlYXIpOgorICAgICAg
ICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUFyZWE6Om9wZW5EYXRhYmFzZUFuZElt
cG9ydEl0ZW1zSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdl
cjo6U3RvcmFnZUFyZWE6OmRpc3BhdGNoRXZlbnRzIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
U3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VBcmVhOjpzeW5jVG9EYXRhYmFzZSk6CisgICAgICAgIChX
ZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpMb2NhbFN0b3JhZ2VOYW1lc3BhY2U6OmdldE9yQ3JlYXRl
U3RvcmFnZUFyZWEpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6U2Vzc2lvblN0
b3JhZ2VOYW1lc3BhY2U6OmdldE9yQ3JlYXRlU3RvcmFnZUFyZWEpOgorICAgICAgICAoV2ViS2l0
OjpTdG9yYWdlTWFuYWdlcjo6U3RvcmFnZU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpTdG9y
YWdlTWFuYWdlcjo6flN0b3JhZ2VNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1h
bmFnZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6
U3RvcmFnZU1hbmFnZXI6OmRlc3Ryb3lTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSk6IHRoaXMgaXMg
bm90IHVzZWQgbm93IGJ1dCBrZWVwIGl0IGZvciBmdXR1cmUgCisgICAgICAgIGltcHJvdmVtZW50
IHRvIHJlbW92ZSBpbi1tZW1vcnkgc2Vzc2lvblN0b3JhZ2UgaW4gbmV0d29yayBwcm9jZXNzIGlm
IHdlIGtub3cgc29tZSB3ZWIgcGFnZSBpcyBnb25lIGZvcmV2ZXIuCisgICAgICAgIChXZWJLaXQ6
OlN0b3JhZ2VNYW5hZ2VyOjpjbG9uZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAg
KFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmdldFNlc3Npb25TdG9yYWdlT3JpZ2lucyk6CisgICAg
ICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVTZXNzaW9uU3RvcmFnZU9yaWdpbnMp
OgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlU2Vzc2lvblN0b3JhZ2VF
bnRyaWVzRm9yT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpnZXRM
b2NhbFN0b3JhZ2VPcmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6Omdl
dExvY2FsU3RvcmFnZU9yaWdpbkRldGFpbHMpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFu
YWdlcjo6ZGVsZXRlTG9jYWxTdG9yYWdlT3JpZ2luc01vZGlmaWVkU2luY2UpOgorICAgICAgICAo
V2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlTG9jYWxTdG9yYWdlRW50cmllc0Zvck9yaWdp
bnMpOgorCisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVMb2NhbFN0b3Jh
Z2VBcmVhKTogVGhlIGRlY2xhcmF0aW9ucyBvZiBTdG9yYWdlQXJlYSBhcmUgbW92ZWQgdG8gCisg
ICAgICAgIFN0b3JhZ2VNYW5hZ2VyLmggYmVjYXVzZSBTdG9yYWdlQXJlYSBpcyB1c2VkIGluIFN0
b3JhZ2VNYW5hZ2VyU2V0LgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6Y3JlYXRl
VHJhbnNpZW50TG9jYWxTdG9yYWdlQXJlYSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5h
Z2VyOjpjcmVhdGVTZXNzaW9uU3RvcmFnZUFyZWEpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdl
TWFuYWdlcjo6Z2V0T3JDcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChX
ZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpjbGVhclN0b3JhZ2VOYW1lc3BhY2VzKToKKyAgICAgICAg
KFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VBcmVhOjpzZWN1cml0eU9yaWdpbiBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQXJl
YTo6aXNFcGhlbWVyYWwgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VBcmVhOjpoYXNMaXN0ZW5lciBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdl
QXJlYTo6c2V0SXRlbXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdl
cjo6TG9jYWxTdG9yYWdlTmFtZXNwYWNlOjpjbG9uZVRvKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6U3RvcmFnZU1hbmFnZXI6OlNlc3Npb25TdG9yYWdlTmFtZXNwYWNlOjphbGxvd2VkQ29u
bmVjdGlvbnMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdl
cjo6U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2U6OmFkZEFsbG93ZWRDb25uZWN0aW9uKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OlNlc3Npb25TdG9yYWdlTmFtZXNw
YWNlOjpyZW1vdmVBbGxvd2VkQ29ubmVjdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6
OlN0b3JhZ2VNYW5hZ2VyOjphZGRBbGxvd2VkU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0
aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OnJlbW92ZUFs
bG93ZWRTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZUNvbm5lY3Rpb24pOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6cHJvY2Vzc0RpZENsb3NlQ29ubmVjdGlvbik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVMb2NhbFN0b3Jh
Z2VFbnRyaWVzRm9yT3JpZ2luKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1h
bmFnZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU1hcCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6
OlN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VNYXApOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VN
YXApOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6ZGVzdHJveVN0
b3JhZ2VNYXApOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6cHJl
d2FybSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpnZXRWYWx1
ZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6c2V0SXRlbSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpzZXRJdGVtcyk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpyZW1vdmVJdGVtKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmNsZWFyKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OndhaXRVbnRpbFRhc2tzRmluaXNoZWQp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6c3VzcGVuZCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpyZXN1bWUpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6ZmluZFN0b3JhZ2VBcmVhIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VN
YW5hZ2VyLmg6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQXJlYTo6
c2VjdXJpdHlPcmlnaW4gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6
U3RvcmFnZUFyZWE6OmlkZW50aWZpZXIpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdl
cjo6U3RvcmFnZUFyZWE6Omhhc0xpc3RlbmVyKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1h
bmFnZXI6OlN0b3JhZ2VBcmVhOjppc0VwaGVtZXJhbCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
OlN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQXJlYTo6c2V0V29ya1F1ZXVlKToKKworICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIubWVzc2FnZXMuaW46IFJl
bW92ZWQuIE1vdmVkIHRvIFN0b3JhZ2VNYW5hZ2VyU2V0Lm1lc3NhZ2VzLmluLgorCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldC5jcHA6IEFkZGVk
LiBJdCBtYW5hZ2VzIFN0b3JhZ2VNYW5hZ2VycyBieSBzZXNzaW9uLgorICAgICAgICAoV2ViS2l0
OjpTdG9yYWdlTWFuYWdlclNldDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1h
bmFnZXJTZXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1h
bmFnZXJTZXQ6On5TdG9yYWdlTWFuYWdlclNldCk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VN
YW5hZ2VyU2V0OjphZGQpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlclNldDo6cmVt
b3ZlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXJTZXQ6OmNvbnRhaW5zKToKKyAg
ICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXJTZXQ6OmFkZENvbm5lY3Rpb24pOgorICAgICAg
ICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlclNldDo6cmVtb3ZlQ29ubmVjdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0Ojp3YWl0VW50aWxUYXNrc0ZpbmlzaGVkKToKKyAg
ICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXJTZXQ6OndhaXRVbnRpbFN5bmNpbmdMb2NhbFN0
b3JhZ2VGaW5pc2hlZCk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpzdXNw
ZW5kKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXJTZXQ6OnJlc3VtZSk6CisgICAg
ICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpnZXRTZXNzaW9uU3RvcmFnZU9yaWdpbnMp
OgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlclNldDo6ZGVsZXRlU2Vzc2lvblN0b3Jh
Z2UpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlclNldDo6ZGVsZXRlU2Vzc2lvblN0
b3JhZ2VGb3JPcmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXJTZXQ6Omdl
dExvY2FsU3RvcmFnZU9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlclNl
dDo6ZGVsZXRlTG9jYWxTdG9yYWdlTW9kaWZpZWRTaW5jZSk6CisgICAgICAgIChXZWJLaXQ6OlN0
b3JhZ2VNYW5hZ2VyU2V0OjpkZWxldGVMb2NhbFN0b3JhZ2VGb3JPcmlnaW5zKToKKyAgICAgICAg
KFdlYktpdDo6U3RvcmFnZU1hbmFnZXJTZXQ6OmdldExvY2FsU3RvcmFnZU9yaWdpbkRldGFpbHMp
OgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlclNldDo6Y29ubmVjdFRvTG9jYWxTdG9y
YWdlQXJlYSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0Ojpjb25uZWN0VG9U
cmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFn
ZXJTZXQ6OmNvbm5lY3RUb1Nlc3Npb25TdG9yYWdlQXJlYSk6CisgICAgICAgIChXZWJLaXQ6OlN0
b3JhZ2VNYW5hZ2VyU2V0OjpkaXNjb25uZWN0RnJvbVN0b3JhZ2VBcmVhKToKKyAgICAgICAgKFdl
YktpdDo6U3RvcmFnZU1hbmFnZXJTZXQ6OmdldFZhbHVlcyk6CisgICAgICAgIChXZWJLaXQ6OlN0
b3JhZ2VNYW5hZ2VyU2V0OjpzZXRJdGVtKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFn
ZXJTZXQ6OnJlbW92ZUl0ZW0pOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlclNldDo6
Y2xlYXIpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlclNldDo6Y2xvbmVTZXNzaW9u
U3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9T
dG9yYWdlTWFuYWdlclNldC5oOiBBZGRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJT
dG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0Lm1lc3NhZ2VzLmluOiBBZGRlZC4KKworICAgICAgICAq
IFNoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5jcHA6IGNyZWF0aW9uIHBhcmFtZXRl
cnMgb2YgU3RvcmFnZU1hbmFnZXIgYXJlIG1vdmVkIHRvIAorICAgICAgICBXZWJzaXRlRGF0YVN0
b3JlUGFyYW1ldGVycy4KKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRl
cnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVQYXJh
bWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlUGFyYW1l
dGVyczo6cHJpdmF0ZVNlc3Npb25QYXJhbWV0ZXJzKToKKyAgICAgICAgKiBTaGFyZWQvV2Vic2l0
ZURhdGFTdG9yZVBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcDoKKyAgICAgICAgKFdLQ29udGV4dFN5bmNM
b2NhbFN0b3JhZ2UpOgorICAgICAgICAoV0tDb250ZXh0Q2xlYXJMZWdhY3lQcml2YXRlQnJvd3Np
bmdMb2NhbFN0b3JhZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRQcml2
YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5j
cHA6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVMb2NhbFN0b3JhZ2UpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbDo6c3luY0xvY2FsU3RvcmFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sOjpjbGVhckxlZ2FjeVByaXZhdGVCcm93c2luZ0xvY2FsU3RvcmFnZSk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6cGFyYW1ldGVycyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlOjpwYXJhbWV0ZXJzKToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKworICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGUuY3BwOiBzZXNzaW9uIGNoYW5nZSBvZiB3ZWIgc3RvcmFnZSBpcyBkb25lIHZpYSAKKyAgICAg
ICAgV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyIGluc3RlYWQgb2YgV2ViUHJvY2VzcyBub3cu
CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlOjpzZXRQcml2YXRlQnJvd3NpbmdFbmFi
bGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzOjpjcmVhdGVXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzczo6cmVtb3ZlV2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmVuc3Vy
ZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6
Om5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkNsb3NlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3M6OnJlZ2lzdGVyU3RvcmFnZUFyZWFNYXApOiB3ZWIgcHJvY2VzcyBvbmx5IGhhdmUgb25l
IGNvcHkgb2YgU3RvcmFnZUFyZWEgZm9yIHRoZSBzYW1lIAorICAgICAgICBpZGVudGlmaWVyLgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzdG9yYWdlQXJlYU1hcCBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmVuYWJsZVByaXZhdGVCcm93c2luZ0ZvclRlc3Rpbmcp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYUltcGw6OlN0b3JhZ2VBcmVhSW1wbCk6CisgICAg
ICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1wbDo6bGVuZ3RoKToKKyAgICAgICAgKFdlYktpdDo6
U3RvcmFnZUFyZWFJbXBsOjprZXkpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYUltcGw6
Oml0ZW0pOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYUltcGw6OnNldEl0ZW0pOgorICAg
ICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYUltcGw6OnJlbW92ZUl0ZW0pOgorICAgICAgICAoV2Vi
S2l0OjpTdG9yYWdlQXJlYUltcGw6OmNsZWFyKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFy
ZWFJbXBsOjpjb250YWlucyk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1wbDo6c3Rv
cmFnZVR5cGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYUltcGw6OmluY3Jl
bWVudEFjY2Vzc0NvdW50KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFJbXBsOjpkZWNy
ZW1lbnRBY2Nlc3NDb3VudCk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1wbDo6cHJl
d2FybSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1wbDo6c2VjdXJp
dHlPcmlnaW4gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViU3RvcmFn
ZS9TdG9yYWdlQXJlYUltcGwuaDoKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9T
dG9yYWdlQXJlYU1hcC5jcHA6IGlkZW50aWZpZXIgb2YgU3RvcmFnZUFyZWFNYXAgaXMgdGhlIHNh
bWUgYXMgaWRlbnRpZmllciBvZiAKKyAgICAgICAgU3RvcmFnZUFyZWEgaXQgY29ubmVjdHMgdG8u
IElmIHRoZSBpZGVudGlmaWVyIGlzIDAsIGl0IG1lYW5zIHRoZSBTdG9yYWdlQXJlYU1hcCBpcyBk
aXNjb25uZWN0ZWQuIAorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6U3RvcmFnZUFy
ZWFNYXApOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6flN0b3JhZ2VBcmVhTWFw
KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OnNldEl0ZW0pOgorICAgICAgICAo
V2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6cmVtb3ZlSXRlbSk6CisgICAgICAgIChXZWJLaXQ6OlN0
b3JhZ2VBcmVhTWFwOjpjbGVhcik6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwOjpy
ZXNldFZhbHVlcyk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwOjpsb2FkVmFsdWVz
SWZOZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6Y2xlYXJDYWNoZSk6
CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwOjphcHBseUNoYW5nZSk6CisgICAgICAg
IChXZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwOjpkaXNwYXRjaFN0b3JhZ2VFdmVudCk6CisgICAgICAg
IChXZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwOjpkaXNwYXRjaFNlc3Npb25TdG9yYWdlRXZlbnQpOgor
ICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6ZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVu
dCk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwOjpjb25uZWN0KToKKyAgICAgICAg
KFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OmRpc2Nvbm5lY3QpOgorICAgICAgICAoV2ViS2l0Ojpn
ZW5lcmF0ZVN0b3JhZ2VNYXBJRCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VB
cmVhTWFwOjpwcmV3YXJtKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFN
YXA6OmRpZEdldFZhbHVlcyk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VBcmVhTWFwLmg6CisgICAgICAgICgpOiBEZWxldGVkLgorCisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLm1lc3NhZ2VzLmluOiB0aGVyZSBh
cmUgdHdvIHN5bmNocm9ub3VzIG1lc3NhZ2VzLCBvbmUgZm9yIGNvbm5lY3Rpb24gYW5kIAorICAg
ICAgICBvbmUgZm9yIGdldHRpbmcgdmFsdWVzLiBXZSBtYXkgbWVyZ2UgdGhlbSBpbnRvIG9uZSBp
biBmdXR1cmUgaW1wcm92ZW1lbnQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0
b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVzcGFj
ZUltcGw6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6
U3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAg
ICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6
U3RvcmFnZU5hbWVzcGFjZUltcGwpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNl
SW1wbDo6c3RvcmFnZUFyZWEpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSW1w
bDo6Y29weSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpzZXRTZXNz
aW9uSURGb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUltcGw6
OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZSk6IERlbGV0ZWQuCisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlU2Vz
c2lvblN0b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNw
YWNlUHJvdmlkZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9y
YWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOiBEZWxldGVkLgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIu
aDoKKwogMjAxOS0wOC0wNyAgUHJpeWFua2EgQWdhcndhbCAgPHBhZ2Fyd2FsOTk5QGFwcGxlLmNv
bT4KIAogICAgICAgICBBbGxvdyBjbGllbnRzIHRvIHRvZ2dsZSBhIHRleHQgaW5wdXQgZmllbGQg
YmV0d2VlbiBiZWluZyB2aWV3YWJsZSBhbmQgaGF2aW5nIGNoYXJhY3RlcnMgaGlkZGVuIHdoaWxl
IG1haW50YWluaW5nIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwppbmRleCAzZGUwNDUzMjFhYWNmODJiMzE2
ZWUzZDhhZWU4ZDI0NTJjYmE2YTU4Li43MGMwMDk2Yzc3NDNkMDBmNWNmZTI0NTk2OWVmZWNmMTgx
N2JiZDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE5LTA4LTA3
ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIFNvbWUgaW1wcm92
ZW1lbnRzIG9uIHdlYiBzdG9yYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDAzNzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBEbyBzb21lIGNsZWFuLXVwIGFuZCBhZGQgc3VwcG9ydCBmb3Igc2Vzc2lv
biBjaGFuZ2Ugb2Ygd2ViIHN0b3JhZ2UgaW4gbGF5b3V0IHRlc3RzLgorCisgICAgICAgICogU3Rv
cmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYUlt
cGw6OnNlc3Npb25DaGFuZ2VkKToKKyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5o
OgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYUltcGw6OnNlY3VyaXR5T3JpZ2luIGNvbnN0
KTogRGVsZXRlZC4KKworICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmg6IG1ha2Ug
c3VyZSBTdG9yYWdlQXJlYVN5bmMgaXMgZGVzdHJ1Y3RlZCBvbiB0aGUgbWFpbiB0aHJlYWQsIGFz
IGl0IGNhbiBiZSAKKyAgICAgICAgZGVyZWZlcmVuY2VkIGluIFN0b3JhZ2VBcmVhSW1wbDo6c2Vz
c2lvbkNoYW5nZWQgYW5kIGl0cyBsYXN0IHJlZmVyZW5jZSBmb3IgZmluYWwgc3luYyBjb3VsZCBi
ZSByZWxlYXNlZCBvbiB0aGUgCisgICAgICAgIGJhY2tncm91bmQgdGhyZWFkLgorCisgICAgICAg
ICogU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHA6IHJlcGxhY2UgRXBoZW1lcmFsTG9j
YWxTdG9yYWdlIHdpdGggTG9jYWxTdG9yYWdlLCBhbmQgc3RvcmUgU2Vzc2lvbklEIGluIAorICAg
ICAgICBTdG9yYWdlTmFtZXNwYWNlLgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNl
SW1wbDo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpT
dG9yYWdlTmFtZXNwYWNlSW1wbDo6Z2V0T3JDcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOgor
ICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6U3RvcmFnZU5hbWVzcGFjZUlt
cGwpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y29weSk6CisgICAg
ICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjbG9zZSk6CisgICAgICAgIChXZWJL
aXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpzZXRTZXNzaW9uSURGb3JUZXN0aW5nKToKKyAgICAg
ICAgKFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3Rv
cmFnZU5hbWVzcGFjZSk6IERlbGV0ZWQuCisgICAgICAgICogU3RvcmFnZS9TdG9yYWdlTmFtZXNw
YWNlSW1wbC5oOgorICAgICAgICAqIFN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVh
dGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlN0b3JhZ2VO
YW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVUcmFuc2llbnRMb2Nh
bFN0b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXI6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZSk6IERlbGV0ZWQu
CisgICAgICAgICogU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaDoKKwogMjAx
OS0wOC0wNiAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAg
W1dpbl0gRml4IEFwcGxlV2luIGJ1aWxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXgg
ZjZiODQ4NTA4NDRjYmQ5Zjc1NjQ3NDE2NGY5NjdmNDNkNWE1NWIwMS4uMWE1ZjYxNDI1MmU0OTli
ZTRmYTQ1ZGUzOGM2OGViZGFhOTZkYWY5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE2IEBACisyMDE5LTA4LTA3ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUu
Y29tPgorCisgICAgICAgIFNvbWUgaW1wcm92ZW1lbnRzIG9uIHdlYiBzdG9yYWdlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDAzNzMKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFN0b3JhZ2UvV2ViU3Rv
cmFnZU1hbmFnZXIubW06CisgICAgICAgICgrW1dlYlN0b3JhZ2VNYW5hZ2VyIGNsZWFyTG9jYWxT
dG9yYWdlXSk6CisgICAgICAgICogU3RvcmFnZS9XZWJTdG9yYWdlTWFuYWdlclByaXZhdGUuaDoK
KyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgX3ByZWZl
cmVuY2VzQ2hhbmdlZDpdKTogbm90aWZ5IHN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciBhYm91dCBz
ZXNzaW9uIGNoYW5nZS4KKwogMjAxOS0wOC0wNyAgUHJpeWFua2EgQWdhcndhbCAgPHBhZ2Fyd2Fs
OTk5QGFwcGxlLmNvbT4KIAogICAgICAgICBBbGxvdyBjbGllbnRzIHRvIHRvZ2dsZSBhIHRleHQg
aW5wdXQgZmllbGQgYmV0d2VlbiBiZWluZyB2aWV3YWJsZSBhbmQgaGF2aW5nIGNoYXJhY3RlcnMg
aGlkZGVuIHdoaWxlIG1haW50YWluaW5nIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRz
LmNwcAppbmRleCBjNDUwYzA4NzBjMGRiOTAwMmI5MDRjN2I2Y2JjZTRjOTY5MDJjNmRjLi4yNDg1
YzczYzljMWVmNGI1MTk2YTIxMDIzZDRkY2VmZjBhY2Q3NTRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRW1wdHlDbGllbnRzLmNwcApAQCAtMzkwLDE4ICszOTAsMTggQEAgY2xhc3MgRW1wdHlTdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXIgZmluYWwgOiBwdWJsaWMgU3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyIHsKICAgICAgICAgYm9vbCBjb250YWlucyhjb25zdCBTdHJpbmcmKSBmaW5hbCB7IHJldHVy
biBmYWxzZTsgfQogICAgICAgICBTdG9yYWdlVHlwZSBzdG9yYWdlVHlwZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIFN0b3JhZ2VUeXBlOjpMb2NhbDsgfQogICAgICAgICBzaXplX3QgbWVtb3J5Qnl0
ZXNVc2VkQnlDYWNoZSgpIGZpbmFsIHsgcmV0dXJuIDA7IH0KLSAgICAgICAgY29uc3QgU2VjdXJp
dHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbigpIGNvbnN0IGZpbmFsIHsgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFNlY3VyaXR5T3JpZ2luRGF0YT4gb3JpZ2luOyByZXR1cm4gb3JpZ2luLmdldCgp
OyB9CiAgICAgfTsKIAogICAgIHN0cnVjdCBFbXB0eVN0b3JhZ2VOYW1lc3BhY2UgZmluYWwgOiBw
dWJsaWMgU3RvcmFnZU5hbWVzcGFjZSB7CiAgICAgICAgIFJlZjxTdG9yYWdlQXJlYT4gc3RvcmFn
ZUFyZWEoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJikgZmluYWwgeyByZXR1cm4gYWRvcHRSZWYo
Km5ldyBFbXB0eVN0b3JhZ2VBcmVhKTsgfQogICAgICAgICBSZWY8U3RvcmFnZU5hbWVzcGFjZT4g
Y29weShQYWdlKikgZmluYWwgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBFbXB0eVN0b3JhZ2VOYW1l
c3BhY2UpOyB9CisgICAgICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0
dXJuIFBBTDo6U2Vzc2lvbklEOjplbXB0eVNlc3Npb25JRCgpOyB9CisgICAgICAgIHZvaWQgc2V0
U2Vzc2lvbklERm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCkgeyB9OwogICAgIH07CiAKICAgICBS
ZWY8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoUGFnZSYs
IHVuc2lnbmVkKSBmaW5hbDsKLSAgICBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlTG9jYWxT
dG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkKSBmaW5hbDsKLSAgICBSZWY8U3RvcmFnZU5hbWVzcGFj
ZT4gY3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCkg
ZmluYWw7Ci0gICAgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVRyYW5zaWVudExvY2FsU3Rv
cmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkKSBmaW5hbDsKKyAgICBSZWY8
U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkLCBQ
QUw6OlNlc3Npb25JRCkgZmluYWw7CisgICAgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVRy
YW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkLCBQ
QUw6OlNlc3Npb25JRCkgZmluYWw7CiB9OwogCiBjbGFzcyBFbXB0eVVzZXJDb250ZW50UHJvdmlk
ZXIgZmluYWwgOiBwdWJsaWMgVXNlckNvbnRlbnRQcm92aWRlciB7CkBAIC01MjUsMTcgKzUyNSwx
MiBAQCBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gRW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6
OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEVt
cHR5U3RvcmFnZU5hbWVzcGFjZSk7CiB9CiAKLVJlZjxTdG9yYWdlTmFtZXNwYWNlPiBFbXB0eVN0
b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVuc2ln
bmVkKQorUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IEVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVy
OjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQsIFBBTDo6U2Vzc2lvbklEKQog
ewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEVtcHR5U3RvcmFnZU5hbWVzcGFjZSk7CiB9CiAK
LVJlZjxTdG9yYWdlTmFtZXNwYWNlPiBFbXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3Jl
YXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCkKLXsKLSAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBFbXB0eVN0b3JhZ2VOYW1lc3BhY2UpOwotfQotCi1SZWY8
U3RvcmFnZU5hbWVzcGFjZT4gRW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVRy
YW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkKQor
UmVmPFN0b3JhZ2VOYW1lc3BhY2U+IEVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVh
dGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoU2VjdXJpdHlPcmlnaW4mLCB1bnNpZ25l
ZCwgUEFMOjpTZXNzaW9uSUQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRW1wdHlTdG9y
YWdlTmFtZXNwYWNlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21l
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAppbmRleCA5NzU4MzI5YmE5MDlj
ZDkxM2NhYjQ2ODVkNzFhZTlkYTRmYzM1Y2E2Li43M2ZlZTA3ZDlhMTU0OTI1YTUxYTY3ZTI0YzUz
NTE5ZTEzNzI2NzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCkBAIC0xODksOCArMTg5LDYgQEAg
UGFnZSogQ2hyb21lOjpjcmVhdGVXaW5kb3coRnJhbWUmIGZyYW1lLCBjb25zdCBGcmFtZUxvYWRS
ZXF1ZXN0JiByZXF1ZXN0LCBjb25zdAogCiAgICAgaWYgKGF1dG8qIG9sZFNlc3Npb25TdG9yYWdl
ID0gbV9wYWdlLnNlc3Npb25TdG9yYWdlKGZhbHNlKSkKICAgICAgICAgbmV3UGFnZS0+c2V0U2Vz
c2lvblN0b3JhZ2Uob2xkU2Vzc2lvblN0b3JhZ2UtPmNvcHkobmV3UGFnZSkpOwotICAgIGlmIChh
dXRvKiBvbGRFcGhlbWVyYWxMb2NhbFN0b3JhZ2UgPSBtX3BhZ2UuZXBoZW1lcmFsTG9jYWxTdG9y
YWdlKGZhbHNlKSkKLSAgICAgICAgbmV3UGFnZS0+c2V0RXBoZW1lcmFsTG9jYWxTdG9yYWdlKG9s
ZEVwaGVtZXJhbExvY2FsU3RvcmFnZS0+Y29weShuZXdQYWdlKSk7CiAKICAgICByZXR1cm4gbmV3
UGFnZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCBmMDYxNjVhZjUwZWI1YTNi
ZWQyNjBjZTBkZGZiY2VmYjk5MGQzMjY5Li44YmFjMGE4MTcyZDRkMzExZmMyMTZjNDMwMTM3OTI1
MDJkODkzOGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC00NDIsOCArNDQyLDcg
QEAgdm9pZCBET01XaW5kb3c6OnByZXdhcm1Mb2NhbFN0b3JhZ2VJZk5lY2Vzc2FyeSgpCiAgICAg
aWYgKCFsb2NhbFN0b3JhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChsb2NhbFN0b3Jh
Z2UtPnByZXdhcm0oKSkKLSAgICAgICAgcGFnZS0+bWFpbkZyYW1lKCkuZGlkUHJld2FybUxvY2Fs
U3RvcmFnZSgpOworICAgIHBhZ2UtPm1haW5GcmFtZSgpLmRpZFByZXdhcm1Mb2NhbFN0b3JhZ2Uo
KTsKIH0KIAogRE9NV2luZG93Ojp+RE9NV2luZG93KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IGVk
YTdjNWZhNWQ2NDc5YmE3MTA5MDIwYjUyODMyY2UyNjFiY2Q3ZTkuLjlkMmU5NDdkYTk1ZDYzOGFj
NzI3ZWExNTczOTM2ZTA5NzA4NTliM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMTUxMCwxOSAr
MTUxMCw2IEBAIHZvaWQgUGFnZTo6c2V0U2Vzc2lvblN0b3JhZ2UoUmVmUHRyPFN0b3JhZ2VOYW1l
c3BhY2U+JiYgbmV3U3RvcmFnZSkKICAgICBtX3Nlc3Npb25TdG9yYWdlID0gV1RGTW92ZShuZXdT
dG9yYWdlKTsKIH0KIAotU3RvcmFnZU5hbWVzcGFjZSogUGFnZTo6ZXBoZW1lcmFsTG9jYWxTdG9y
YWdlKGJvb2wgb3B0aW9uYWxDcmVhdGUpCi17Ci0gICAgaWYgKCFtX2VwaGVtZXJhbExvY2FsU3Rv
cmFnZSAmJiBvcHRpb25hbENyZWF0ZSkKLSAgICAgICAgbV9lcGhlbWVyYWxMb2NhbFN0b3JhZ2Ug
PSBtX3N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci0+Y3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdl
TmFtZXNwYWNlKCp0aGlzLCBtX3NldHRpbmdzLT5zZXNzaW9uU3RvcmFnZVF1b3RhKCkpOwotCi0g
ICAgcmV0dXJuIG1fZXBoZW1lcmFsTG9jYWxTdG9yYWdlLmdldCgpOwotfQotCi12b2lkIFBhZ2U6
OnNldEVwaGVtZXJhbExvY2FsU3RvcmFnZShSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4mJiBuZXdT
dG9yYWdlKQotewotICAgIG1fZXBoZW1lcmFsTG9jYWxTdG9yYWdlID0gV1RGTW92ZShuZXdTdG9y
YWdlKTsKLX0KLQogYm9vbCBQYWdlOjpoYXNDdXN0b21IVE1MVG9rZW5pemVyVGltZURlbGF5KCkg
Y29uc3QKIHsKICAgICByZXR1cm4gbV9zZXR0aW5ncy0+bWF4UGFyc2VEdXJhdGlvbigpICE9IC0x
OwpAQCAtMjUwNyw2ICsyNDk0LDkgQEAgdm9pZCBQYWdlOjpzZXRTZXNzaW9uSUQoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklEKQogICAgICAgICBtX2lkYkNvbm5lY3Rpb25Ub1NlcnZlciA9IG51bGxw
dHI7CiAjZW5kaWYKIAorICAgIGlmIChzZXNzaW9uSUQgIT0gbV9zZXNzaW9uSUQgJiYgbV9zZXNz
aW9uU3RvcmFnZSkKKyAgICAgICAgbV9zZXNzaW9uU3RvcmFnZS0+c2V0U2Vzc2lvbklERm9yVGVz
dGluZyhzZXNzaW9uSUQpOworCiAgICAgYm9vbCBwcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQg
PSAoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkgIT0gbV9zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSk7
CiAKICAgICBtX3Nlc3Npb25JRCA9IHNlc3Npb25JRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggYzQ0MDIz
NDQzYzg1NmRhMjJiMGU0MTlmOGZjNWYyNjUyZjg2MmZlNy4uYTE4NDEyYTMzNzdlNDFkYzBkNjEz
NWVmMTRmOWIxODljNmVkYWQxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTUwNyw5ICs1MDcsNiBAQCBw
dWJsaWM6CiAgICAgU3RvcmFnZU5hbWVzcGFjZSogc2Vzc2lvblN0b3JhZ2UoYm9vbCBvcHRpb25h
bENyZWF0ZSA9IHRydWUpOwogICAgIHZvaWQgc2V0U2Vzc2lvblN0b3JhZ2UoUmVmUHRyPFN0b3Jh
Z2VOYW1lc3BhY2U+JiYpOwogCi0gICAgU3RvcmFnZU5hbWVzcGFjZSogZXBoZW1lcmFsTG9jYWxT
dG9yYWdlKGJvb2wgb3B0aW9uYWxDcmVhdGUgPSB0cnVlKTsKLSAgICB2b2lkIHNldEVwaGVtZXJh
bExvY2FsU3RvcmFnZShSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4mJik7Ci0KICAgICBib29sIGhh
c0N1c3RvbUhUTUxUb2tlbml6ZXJUaW1lRGVsYXkoKSBjb25zdDsKICAgICBkb3VibGUgY3VzdG9t
SFRNTFRva2VuaXplclRpbWVEZWxheSgpIGNvbnN0OwogCkBAIC04NzcsNyArODc0LDYgQEAgcHJp
dmF0ZToKICAgICBib29sIG1fY2FuU3RhcnRNZWRpYSB7IHRydWUgfTsKIAogICAgIFJlZlB0cjxT
dG9yYWdlTmFtZXNwYWNlPiBtX3Nlc3Npb25TdG9yYWdlOwotICAgIFJlZlB0cjxTdG9yYWdlTmFt
ZXNwYWNlPiBtX2VwaGVtZXJhbExvY2FsU3RvcmFnZTsKIAogICAgIFRpbWVyVGhyb3R0bGluZ1N0
YXRlIG1fdGltZXJUaHJvdHRsaW5nU3RhdGUgeyBUaW1lclRocm90dGxpbmdTdGF0ZTo6RGlzYWJs
ZWQgfTsKICAgICBNb25vdG9uaWNUaW1lIG1fdGltZXJUaHJvdHRsaW5nU3RhdGVMYXN0Q2hhbmdl
ZFRpbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuaAppbmRleCA2YmFmMGExYWIxM2M5ZTJmMmVmNTJm
MmMxZTQwMWYzMjUwY2ZiMDlmLi5kNDFlYzQzOTBlZDJlNzk0NmZjZWEyN2Q3MWM1NzNjOTYwZDhm
NDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmgKQEAgLTU5LDYgKzU5LDcgQEAgcHVibGljOgog
I2VuZGlmCiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVuYWJsZUxlZ2FjeVByaXZhdGVCcm93
c2luZ0ZvclRlc3RpbmcoYm9vbCk7CisgICAgYm9vbCBpc0xlZ2FjeVByaXZhdGVCcm93c2luZ0Vu
YWJsZWRGb3JUZXN0aW5nKCkgeyByZXR1cm4gbV9pc0xlZ2FjeVByaXZhdGVCcm93c2luZ0VuYWJs
ZWRGb3JUZXN0aW5nOyB9CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fbmFtZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2VjdXJpdHlPcmlnaW4uaAppbmRleCAzMWI2YjNkNTIzODA5ZWE3MWRhMDNkYmIwYTgw
NGQyNTIxNzMyZDE1Li5hNjZjOGI5NDY3YmMwODc2NTY3OTM2YmEyYTIxNmU0NDJmZTRhMDViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oCkBAIC0xNDcsNyArMTQ3LDcgQEAgcHVi
bGljOgogCiAgICAgYm9vbCBjYW5BY2Nlc3NEYXRhYmFzZShjb25zdCBTZWN1cml0eU9yaWdpbiYg
dG9wT3JpZ2luKSBjb25zdCB7IHJldHVybiBjYW5BY2Nlc3NTdG9yYWdlKCZ0b3BPcmlnaW4pOyB9
OwogICAgIGJvb2wgY2FuQWNjZXNzU2Vzc2lvblN0b3JhZ2UoY29uc3QgU2VjdXJpdHlPcmlnaW4m
IHRvcE9yaWdpbikgY29uc3QgeyByZXR1cm4gY2FuQWNjZXNzU3RvcmFnZSgmdG9wT3JpZ2luLCBB
bHdheXNBbGxvd0Zyb21UaGlyZFBhcnR5KTsgfQotICAgIGJvb2wgY2FuQWNjZXNzTG9jYWxTdG9y
YWdlKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiB0b3BPcmlnaW4pIGNvbnN0IHsgcmV0dXJuIGNhbkFj
Y2Vzc1N0b3JhZ2UodG9wT3JpZ2luKTsgfTsKKyAgICBib29sIGNhbkFjY2Vzc0xvY2FsU3RvcmFn
ZShjb25zdCBTZWN1cml0eU9yaWdpbiogdG9wT3JpZ2luKSBjb25zdCB7IHJldHVybiBjYW5BY2Nl
c3NTdG9yYWdlKHRvcE9yaWdpbik7IH0KICAgICBib29sIGNhbkFjY2Vzc1BsdWdpblN0b3JhZ2Uo
Y29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbikgY29uc3QgeyByZXR1cm4gY2FuQWNjZXNz
U3RvcmFnZSgmdG9wT3JpZ2luKTsgfQogICAgIGJvb2wgY2FuQWNjZXNzQXBwbGljYXRpb25DYWNo
ZShjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luKSBjb25zdCB7IHJldHVybiBjYW5BY2Nl
c3NTdG9yYWdlKCZ0b3BPcmlnaW4pOyB9CiAgICAgYm9vbCBjYW5BY2Nlc3NDb29raWVzKCkgY29u
c3QgeyByZXR1cm4gIWlzVW5pcXVlKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuY3BwCmlu
ZGV4IDkxOTdiNjBlN2U2YTE1NWM0NDY4ZDUyOTRmYWIyNTBjODY3OTg3ZmYuLjQ3ZGJiMTdkOWFl
NmQyNjljMTQ3MDNhMWE2MmE0OTJlZTY2ZGY0MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdl
LmNwcApAQCAtOTcsMTEgKzk3LDYgQEAgRXhjZXB0aW9uT3I8dm9pZD4gU3RvcmFnZTo6cmVtb3Zl
SXRlbShjb25zdCBTdHJpbmcmIGtleSkKICAgICByZXR1cm4geyB9OwogfQogCi1ib29sIFN0b3Jh
Z2U6OnByZXdhcm0oKQotewotICAgIHJldHVybiBtX3N0b3JhZ2VBcmVhLT5wcmV3YXJtKCk7Ci19
Ci0KIEV4Y2VwdGlvbk9yPHZvaWQ+IFN0b3JhZ2U6OmNsZWFyKCkKIHsKICAgICBhdXRvKiBmcmFt
ZSA9IHRoaXMtPmZyYW1lKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0
b3JhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5oCmluZGV4IDUyMTVmNDdj
Mzc3ZmY3NTY0ZGFhMWU0NmVlZjc5NDRkMzA4NWY2MTEuLjIzMTNmMzU4MzBlNzBjZjZkOWEzYzZm
YTVhMzU3Y2E3ZTg4M2M3ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3Rv
cmFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5oCkBAIC0zMyw3ICsz
Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU3RvcmFnZUFyZWE7CiAKLWNsYXNz
IFN0b3JhZ2UgZmluYWwgOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgUmVmQ291bnRl
ZDxTdG9yYWdlPiwgcHVibGljIERPTVdpbmRvd1Byb3BlcnR5IHsKK2NsYXNzIFN0b3JhZ2UgZmlu
YWwgOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgUmVmQ291bnRlZDxTdG9yYWdlPiwg
cHVibGljIERPTVdpbmRvd1Byb3BlcnR5LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8U3RvcmFnZT4g
ewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoU3RvcmFnZSk7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFJlZjxTdG9yYWdlPiBjcmVhdGUoRE9NV2luZG93JiwgUmVmPFN0b3JhZ2VBcmVhPiYmKTsK
QEAgLTQ2LDcgKzQ2LDYgQEAgcHVibGljOgogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHJlbW92ZUl0
ZW0oY29uc3QgU3RyaW5nJiBrZXkpOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGNsZWFyKCk7CiAg
ICAgYm9vbCBjb250YWlucyhjb25zdCBTdHJpbmcmIGtleSkgY29uc3Q7Ci0gICAgYm9vbCBwcmV3
YXJtKCk7CiAKICAgICAvLyBCaW5kaW5ncyBzdXBwb3J0IGZ1bmN0aW9ucy4KICAgICBib29sIGlz
U3VwcG9ydGVkUHJvcGVydHlOYW1lKGNvbnN0IFN0cmluZyYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYS5oIGIvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9TdG9yYWdlQXJlYS5oCmluZGV4IGYzOWNjZDdlNmRhY2RmZjU2YWU3ZGY2NjBkZDk3YjVm
ZjUyNjQ2ZDQuLjVhOWZmZmY5YTYyNjA4Nzg1MDdlZDkxZDcyNTJmNjRmZTFmYjRiM2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhLmgKQEAgLTU4LDkgKzU4LDYgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBpbmNyZW1lbnRBY2Nlc3NDb3VudCgpIHsgfQogICAgIHZpcnR1YWwg
dm9pZCBkZWNyZW1lbnRBY2Nlc3NDb3VudCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBjbG9zZURh
dGFiYXNlSWZJZGxlKCkgeyB9Ci0gICAgdmlydHVhbCBib29sIHByZXdhcm0oKSB7IHJldHVybiBm
YWxzZTsgfQotCi0gICAgdmlydHVhbCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5
T3JpZ2luKCkgY29uc3QgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2UuaAppbmRleCA1NWM2NjI4MmI4YmQ2OGJj
MDQ3ODJkZjQ3Y2FkZWQwYzIxMjk0YjQ4Li43NWI4YjA1YWMxMDRiYWIzOGI1YTI0MzljMzRjNjkx
YjM2ZDcwYmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1l
c3BhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2UuaApA
QCAtMjgsNiArMjgsMTAgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CiAKK25hbWVzcGFjZSBQQUwgeworY2xhc3MgU2Vzc2lvbklEOworfQor
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFBhZ2U7CkBAIC0zOSw2ICs0Myw5IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIH5TdG9yYWdlTmFtZXNwYWNlKCkgPSBkZWZhdWx0OwogICAgIHZp
cnR1YWwgUmVmPFN0b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYShjb25zdCBTZWN1cml0eU9yaWdpbkRh
dGEmKSA9IDA7CiAgICAgdmlydHVhbCBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gY29weShQYWdlKiBu
ZXdQYWdlKSA9IDA7CisKKyAgICB2aXJ0dWFsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2Vzc2lvbklERm9yVGVzdGluZyhQQUw6OlNl
c3Npb25JRCkgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCmluZGV4IDU5
MzlhZmZkM2ViMmY4ZWVkNDZiZjYyYmFiNGIxNWFlYjVlOTVlZGYuLjNiOTQwNDRlMTA5YzdiMjM4
NTEwOGMyNzRiMTFjMDUzNDVkYTQ2NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKQEAgLTY2LDM2ICs2Niw0MiBAQCBSZWY8
U3RvcmFnZUFyZWE+IFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6bG9jYWxTdG9yYWdlQXJlYShE
b2N1bWVudCYgZG9jdW1lbnQpCiAgICAgLy8gc28gdGhlIERvY3VtZW50IGhhZCBiZXR0ZXIgc3Rp
bGwgYWN0dWFsbHkgaGF2ZSBhIFBhZ2UuCiAgICAgQVNTRVJUKGRvY3VtZW50LnBhZ2UoKSk7CiAK
LSAgICBib29sIGVwaGVtZXJhbCA9IGRvY3VtZW50LnBhZ2UoKS0+dXNlc0VwaGVtZXJhbFNlc3Np
b24oKTsKICAgICBib29sIHRyYW5zaWVudCA9ICFkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpLmNh
bkFjY2Vzc0xvY2FsU3RvcmFnZSgmZG9jdW1lbnQudG9wT3JpZ2luKCkpOwogCiAgICAgUmVmUHRy
PFN0b3JhZ2VOYW1lc3BhY2U+IHN0b3JhZ2VOYW1lc3BhY2U7CiAKICAgICBpZiAodHJhbnNpZW50
KQotICAgICAgICBzdG9yYWdlTmFtZXNwYWNlID0gJnRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVz
cGFjZShkb2N1bWVudC50b3BPcmlnaW4oKSk7Ci0gICAgZWxzZSBpZiAoZXBoZW1lcmFsKQotICAg
ICAgICBzdG9yYWdlTmFtZXNwYWNlID0gZG9jdW1lbnQucGFnZSgpLT5lcGhlbWVyYWxMb2NhbFN0
b3JhZ2UoKTsKKyAgICAgICAgc3RvcmFnZU5hbWVzcGFjZSA9ICZ0cmFuc2llbnRMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UoZG9jdW1lbnQudG9wT3JpZ2luKCksIGRvY3VtZW50LnBhZ2UoKS0+c2Vzc2lv
bklEKCkpOwogICAgIGVsc2UKLSAgICAgICAgc3RvcmFnZU5hbWVzcGFjZSA9ICZsb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UoKTsKKyAgICAgICAgc3RvcmFnZU5hbWVzcGFjZSA9ICZsb2NhbFN0b3JhZ2VO
YW1lc3BhY2UoZG9jdW1lbnQucGFnZSgpLT5zZXNzaW9uSUQoKSk7CiAKICAgICByZXR1cm4gc3Rv
cmFnZU5hbWVzcGFjZS0+c3RvcmFnZUFyZWEoZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKS5kYXRh
KCkpOwogfQogCi1TdG9yYWdlTmFtZXNwYWNlJiBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6Omxv
Y2FsU3RvcmFnZU5hbWVzcGFjZSgpCitTdG9yYWdlTmFtZXNwYWNlJiBTdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXI6OmxvY2FsU3RvcmFnZU5hbWVzcGFjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQp
CiB7CiAgICAgaWYgKCFtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZSkKLSAgICAgICAgbV9sb2NhbFN0
b3JhZ2VOYW1lc3BhY2UgPSBjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UobG9jYWxTdG9yYWdl
RGF0YWJhc2VRdW90YUluQnl0ZXMpOworICAgICAgICBtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZSA9
IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZShsb2NhbFN0b3JhZ2VEYXRhYmFzZVF1b3RhSW5C
eXRlcywgc2Vzc2lvbklEKTsKIAorICAgIEFTU0VSVChtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZS0+
c2Vzc2lvbklEKCkgPT0gc2Vzc2lvbklEKTsKICAgICByZXR1cm4gKm1fbG9jYWxTdG9yYWdlTmFt
ZXNwYWNlOwogfQogCi1TdG9yYWdlTmFtZXNwYWNlJiBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6
OnRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlP
cmlnaW4pCitTdG9yYWdlTmFtZXNwYWNlJiBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OnRyYW5z
aWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4s
IFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKLSAgICBhdXRvJiBzbG90ID0gbV90cmFuc2ll
bnRMb2NhbFN0b3JhZ2VNYXAuYWRkKCZzZWN1cml0eU9yaWdpbiwgbnVsbHB0cikuaXRlcmF0b3It
PnZhbHVlOworICAgIGF1dG8mIHNsb3QgPSBtX3RyYW5zaWVudExvY2FsU3RvcmFnZU1hcC5hZGQo
c2VjdXJpdHlPcmlnaW4uZGF0YSgpLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYg
KCFzbG90KQotICAgICAgICBzbG90ID0gY3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNw
YWNlKHNlY3VyaXR5T3JpZ2luLCBsb2NhbFN0b3JhZ2VEYXRhYmFzZVF1b3RhSW5CeXRlcyk7Cisg
ICAgICAgIHNsb3QgPSBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2Uoc2VjdXJp
dHlPcmlnaW4sIGxvY2FsU3RvcmFnZURhdGFiYXNlUXVvdGFJbkJ5dGVzLCBzZXNzaW9uSUQpOwog
CisgICAgQVNTRVJUKHNsb3QtPnNlc3Npb25JRCgpID09IHNlc3Npb25JRCk7CiAgICAgcmV0dXJu
ICpzbG90OwogfQogCit2b2lkIFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6ZW5hYmxlTGVnYWN5
UHJpdmF0ZUJyb3dzaW5nRm9yVGVzdGluZyhib29sIGVuYWJsZWQpCit7CisgICAgYXV0byBuZXdT
ZXNzaW9uSUQgPSBlbmFibGVkID8gUEFMOjpTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9u
SUQoKSA6IFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCk7CisgICAgaWYgKG1fbG9j
YWxTdG9yYWdlTmFtZXNwYWNlICYmIG5ld1Nlc3Npb25JRCAhPSBtX2xvY2FsU3RvcmFnZU5hbWVz
cGFjZS0+c2Vzc2lvbklEKCkpCisgICAgICAgIG1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlLT5zZXRT
ZXNzaW9uSURGb3JUZXN0aW5nKG5ld1Nlc3Npb25JRCk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oCmluZGV4IGRkN2Y5YTQ2
YmQ4NDc5MjQ5Yzc0ZDJhNGMyMjQ1Mjk2NGU2N2FlY2QuLjYyMjhlNTk4ZmIzNjk4OTQ3ZDY4NWJk
YWMxZTIyMmJlOTk1MDgyMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3Rv
cmFnZU5hbWVzcGFjZVByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXIuaApAQCAtMzEsNiArMzEsMTAgQEAKICNpbmNsdWRlIDx3dGYv
SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKK25hbWVzcGFjZSBQQUwg
eworY2xhc3MgU2Vzc2lvbklEOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERv
Y3VtZW50OwpAQCAtNDUsMjcgKzQ5LDI4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2
aXJ0dWFsIH5TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIoKTsKIAogICAgIHZpcnR1YWwgUmVmPFN0
b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNp
Z25lZCBxdW90YSkgPSAwOwotICAgIHZpcnR1YWwgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0
ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQgcXVvdGEpID0g
MDsKIAogICAgIFJlZjxTdG9yYWdlQXJlYT4gbG9jYWxTdG9yYWdlQXJlYShEb2N1bWVudCYpOwog
CiAgICAgdm9pZCBhZGRQYWdlKFBhZ2UmKTsKICAgICB2b2lkIHJlbW92ZVBhZ2UoUGFnZSYpOwog
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlbmFibGVMZWdhY3lQcml2YXRlQnJvd3NpbmdGb3JU
ZXN0aW5nKGJvb2wgZW5hYmxlZCk7CisKIHByb3RlY3RlZDoKICAgICBTdG9yYWdlTmFtZXNwYWNl
KiBvcHRpb25hbExvY2FsU3RvcmFnZU5hbWVzcGFjZSgpIHsgcmV0dXJuIG1fbG9jYWxTdG9yYWdl
TmFtZXNwYWNlLmdldCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgU3RvcmFnZU5hbWVzcGFjZSYgbG9j
YWxTdG9yYWdlTmFtZXNwYWNlKCk7Ci0gICAgU3RvcmFnZU5hbWVzcGFjZSYgdHJhbnNpZW50TG9j
YWxTdG9yYWdlTmFtZXNwYWNlKFNlY3VyaXR5T3JpZ2luJik7CisgICAgU3RvcmFnZU5hbWVzcGFj
ZSYgbG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBBTDo6U2Vzc2lvbklEKTsKKyAgICBTdG9yYWdlTmFt
ZXNwYWNlJiB0cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoU2VjdXJpdHlPcmlnaW4mLCBQ
QUw6OlNlc3Npb25JRCk7CiAKLSAgICB2aXJ0dWFsIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVh
dGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEpID0gMDsKLSAgICB2aXJ0dWFs
IFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2UoU2VjdXJpdHlPcmlnaW4mLCB1bnNpZ25lZCBxdW90YSkgPSAwOworICAgIHZpcnR1YWwgUmVm
PFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBx
dW90YSwgUEFMOjpTZXNzaW9uSUQpID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxTdG9yYWdlTmFtZXNw
YWNlPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoU2VjdXJpdHlPcmlnaW4m
LCB1bnNpZ25lZCBxdW90YSwgUEFMOjpTZXNzaW9uSUQpID0gMDsKIAogICAgIEhhc2hTZXQ8UGFn
ZSo+IG1fcGFnZXM7CiAKICAgICBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gbV9sb2NhbFN0b3Jh
Z2VOYW1lc3BhY2U7Ci0gICAgSGFzaE1hcDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBSZWZQdHI8
U3RvcmFnZU5hbWVzcGFjZT4+IG1fdHJhbnNpZW50TG9jYWxTdG9yYWdlTWFwOworICAgIEhhc2hN
YXA8U2VjdXJpdHlPcmlnaW5EYXRhLCBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4+IG1fdHJhbnNp
ZW50TG9jYWxTdG9yYWdlTWFwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlVHlwZS5oIGIvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9TdG9yYWdlVHlwZS5oCmluZGV4IDU4MTMzZjg5Y2NhNzFkYzM1MGVmNzI4NWE3
MGE3MzBhMjk2MmE2ZTIuLmZlNzAwMjU3YmFjYjQ5YWZkZGZmNDU2NDJhNjNkNDI4ZDc0MGY4OWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZVR5cGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VUeXBlLmgKQEAgLTMwLDEzICszMCwxMiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBlbnVtIGNsYXNzIFN0b3JhZ2VUeXBlIHsKICAgICBTZXNzaW9u
LAogICAgIExvY2FsLAotICAgIEVwaGVtZXJhbExvY2FsLAogICAgIFRyYW5zaWVudExvY2FsLAog
fTsKIAogaW5saW5lIGJvb2wgaXNMb2NhbFN0b3JhZ2UoU3RvcmFnZVR5cGUgc3RvcmFnZVR5cGUp
CiB7Ci0gICAgcmV0dXJuIHN0b3JhZ2VUeXBlID09IFN0b3JhZ2VUeXBlOjpMb2NhbCB8fCBzdG9y
YWdlVHlwZSA9PSBTdG9yYWdlVHlwZTo6VHJhbnNpZW50TG9jYWwgfHwgc3RvcmFnZVR5cGUgPT0g
U3RvcmFnZVR5cGU6OkVwaGVtZXJhbExvY2FsOworICAgIHJldHVybiBzdG9yYWdlVHlwZSA9PSBT
dG9yYWdlVHlwZTo6TG9jYWwgfHwgc3RvcmFnZVR5cGUgPT0gU3RvcmFnZVR5cGU6OlRyYW5zaWVu
dExvY2FsOwogfQogCiBpbmxpbmUgYm9vbCBpc1BlcnNpc3RlbnRMb2NhbFN0b3JhZ2UoU3RvcmFn
ZVR5cGUgc3RvcmFnZVR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMu
dHh0IGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAppbmRleCA2Zjc5Yzg2NDdhNjEyZGMw
NGEwMmFhYzgyM2Q3NDk1ODQ0ZDRjOTIxLi5kODhhYTgzYjJhNTRmZjJhODQyYTJhNWZjNTQ2ZDg3
MTQ4NTUyYWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CisrKyBi
L1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKQEAgLTExOCw3ICsxMTgsNyBAQCBzZXQoV2Vi
S2l0X01FU1NBR0VTX0lOX0ZJTEVTCiAgICAgTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KICAgICBOZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgogCi0g
ICAgTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5tZXNzYWdlcy5pbgor
ICAgIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQubWVzc2FnZXMu
aW4KIAogICAgIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rp
b24ubWVzc2FnZXMuaW4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNl
cy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54
Y2ZpbGVsaXN0CmluZGV4IDBmYjg0MjNiNWNjY2Y3ZDI2MzM5NDI1Y2Q3YTczZjRiMmMwZDJlODku
LmVlZWYzMDJiYzRkNzMwNzA4OGM0NDlhMjdjN2E0MjdhMDRiMDFlZjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKQEAgLTI2LDYgKzI2LDcgQEAg
JChQUk9KRUNUX0RJUikvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJ
UikvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL1dlYlN0b3Jh
Z2UvU3RvcmFnZU1hbmFnZXIubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9j
ZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9E
SVIpL05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24ubWVz
c2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL21hYy9jb20uYXBwbGUuV2Vi
S2l0Lk5ldHdvcmtQcm9jZXNzLnNiLmluCiAkKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy93
ZWJydGMvTmV0d29ya01ETlNSZWdpc3Rlci5tZXNzYWdlcy5pbgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQv
RGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggZmUwYTZjMDA0MDJjNTM1NTQw
NTQ1MTQ5MWQ0ZDhkZjc0NDczYzc5My4uMzVjZGM1MmEyMGY2ZDdiNzJmMzVmZmI4M2ZiYjJjY2Vk
MTE4OGFkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQu
eGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2Zp
bGVsaXN0CkBAIC05MCw2ICs5MCw4IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQyL1N0b3JhZ2VBcmVhTWFwTWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvU3RvcmFnZUFyZWFNYXBNZXNzYWdl
cy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9TdG9yYWdl
TWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyL1N0b3JhZ2VNYW5hZ2VyTWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvU3RvcmFnZU1hbmFnZXJTZXRNZXNzYWdlUmVj
ZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9T
dG9yYWdlTWFuYWdlclNldE1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyL1RleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eU1lc3NhZ2VSZWNlaXZl
ci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1RleHRD
aGVja2luZ0NvbnRyb2xsZXJQcm94eU1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQyL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyTWVzc2FnZVJlY2Vp
dmVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlIGIv
U291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDUzOTNjNWJkN2YwOTc5NDUw
MDJmMTAzMjJlZmNlMDUzMTYzMmMzZmYuLjlkZTcwNDI2NmFmZWU1MTM2ZTY1ZTg0NzgxYjVhMDI1
MjUxNTdhYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQor
KysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTEzNiw3ICsxMzYsNyBA
QCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKICAgICBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrIFwKICAg
ICBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyIFwKICAgICBTdG9yYWdlQXJlYU1hcCBcCi0g
ICAgU3RvcmFnZU1hbmFnZXIgXAorICAgIFN0b3JhZ2VNYW5hZ2VyU2V0IFwKICAgICBUZXh0Q2hl
Y2tpbmdDb250cm9sbGVyUHJveHkgXAogICAgIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyIFwKICAg
ICBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
cHAKaW5kZXggOWIxYjliODYwNDM4ZDliNmEzZjEyNjg5MTQ2MmIzMzZiYzU5ZmM0ZC4uYjI2ZjZm
MGFlYTU0MzBkMTA4NDJkOWMyNDcwMzdiYjdmNDA0NmRmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jcHAKQEAgLTQ5LDcgKzQ5LDYgQEAKICNpbmNsdWRlICJQaW5nTG9hZC5oIgogI2luY2x1
ZGUgIlByZWNvbm5lY3RUYXNrLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckZldGNoVGFza01l
c3NhZ2VzLmgiCi0jaW5jbHVkZSAiU3RvcmFnZU1hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJFcnJvcnMuaCIKICNpbmNsdWRlICJXZWJJ
REJDb25uZWN0aW9uVG9DbGllbnQuaCIKQEAgLTI5OSw3ICsyOTgsNyBAQCB2b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24pCiAgICAgLy8gcm9vdCBhY3Rpdml0eSB0cmFja2Vycy4KICAgICBzdG9wQWxsTmV0d29ya0Fj
dGl2aXR5VHJhY2tpbmcoKTsKIAotICAgIG1fbmV0d29ya1Byb2Nlc3MtPndlYlByb2Nlc3NXYXNE
aXNjb25uZWN0ZWQoY29ubmVjdGlvbik7CisgICAgbV9uZXR3b3JrUHJvY2Vzcy0+Y29ubmVjdGlv
blRvV2ViUHJvY2Vzc0Nsb3NlZChjb25uZWN0aW9uKTsKIAogICAgIG1fbmV0d29ya1Byb2Nlc3Mt
Pm5ldHdvcmtCbG9iUmVnaXN0cnkoKS5jb25uZWN0aW9uVG9XZWJQcm9jZXNzRGlkQ2xvc2UoKnRo
aXMpOwogICAgIG1fbmV0d29ya1Byb2Nlc3MtPnJlbW92ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKCp0aGlzKTsKQEAgLTg5MSwxOSArODkwLDQgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uKFBBTDo6U2Vzc2lvbklE
IHMKIH0KICNlbmRpZgogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp3ZWJQ
YWdlV2FzQWRkZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBQYWdlSWRlbnRpZmllciBwYWdl
SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG9sZFBhZ2VJRCkKLXsKLSAgICBtX25ldHdvcmtQ
cm9jZXNzLT53ZWJQYWdlV2FzQWRkZWQobV9jb25uZWN0aW9uLmdldCgpLCBzZXNzaW9uSUQsIHBh
Z2VJRCwgb2xkUGFnZUlEKTsKLX0KLQotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6d2ViUGFnZVdhc1JlbW92ZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBQYWdlSWRlbnRp
ZmllciBwYWdlSUQpCi17Ci0gICAgbV9uZXR3b3JrUHJvY2Vzcy0+d2ViUGFnZVdhc1JlbW92ZWQo
bV9jb25uZWN0aW9uLmdldCgpLCBzZXNzaW9uSUQsIHBhZ2VJRCk7Ci19Ci0KLXZvaWQgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OndlYlByb2Nlc3NTZXNzaW9uQ2hhbmdlZChQQUw6OlNl
c3Npb25JRCBuZXdTZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxQYWdlSWRlbnRpZmllcj4mIHBhZ2Vz
KQotewotICAgIG1fbmV0d29ya1Byb2Nlc3MtPndlYlByb2Nlc3NTZXNzaW9uQ2hhbmdlZChtX2Nv
bm5lY3Rpb24uZ2V0KCksIG5ld1Nlc3Npb25JRCwgcGFnZXMpOwotfQotCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCBkN2IyZjFiNjNiYzdiMDRmZTAz
MGUwMzY1ZTIxMzZmNzVhYjQ4Y2U2Li41NjEyZWZkMWFjZjI2OWFlMTkyZWI5NDhjZTRiOTZkNWY4
NDQ3Nzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0xNDIsMTAgKzE0Miw2IEBAIHB1
YmxpYzoKICAgICBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+
IGZpbGVzSW5CbG9iKGNvbnN0IFVSTCYpOwogICAgIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Qmxv
YkRhdGFGaWxlUmVmZXJlbmNlPj4gcmVzb2x2ZUJsb2JSZWZlcmVuY2VzKGNvbnN0IE5ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJik7CiAKLSAgICB2b2lkIHdlYlBhZ2VXYXNBZGRlZChQQUw6
OlNlc3Npb25JRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyIG9sZFBhZ2VJRCk7Ci0gICAgdm9pZCB3ZWJQYWdlV2FzUmVtb3ZlZChQQUw6OlNlc3Npb25J
RCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwotICAgIHZvaWQgd2ViUHJvY2Vzc1Nlc3Npb25D
aGFuZ2VkKFBBTDo6U2Vzc2lvbklEIG5ld1Nlc3Npb25JRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyPiYgcGFnZXMpOwotCiAgICAgdm9pZCByZW1vdmVTb2NrZXRDaGFubmVs
KHVpbnQ2NF90IGlkZW50aWZpZXIpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggZmEyYzMxYTQxM2FmNjIxOTQ5M2NkNGNlYTJiYzdj
NGFmYTkyMDU5MC4uNzVlMjRkZGE4ZTM4NDRjZTc4ZTYxZDMyYzg5OTA2OTk2M2ViNjkwZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC04Niw4ICs4Niw0
IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIExlZ2FjeVJlY2Vp
dmVyIHsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgRXN0YWJsaXNoU1dTZXJ2ZXJD
b25uZWN0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKFdlYkNvcmU6OlNXU2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpIFN5bmNocm9u
b3VzCiAjZW5kaWYKLQotICAgIFdlYlBhZ2VXYXNBZGRlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIgb2xkUGFnZUlEKQotICAgIFdlYlBhZ2VXYXNSZW1vdmVkKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKQotICAgIFdlYlByb2Nlc3NTZXNz
aW9uQ2hhbmdlZChQQUw6OlNlc3Npb25JRCBuZXdTZXNzaW9uSUQsIFZlY3RvcjxXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllcj4gcGFnZXMpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IGMzMzM5NTcwYjg3NDBiMTg4OTQ2MjQ3ZjJiYmUw
N2E4OGRlMjdhZjkuLmM2MGMxOTBkZjc4NzAxODNiNzkxMTQwOTZjOThkZWYwYjhjOTM1OWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBA
IC01Myw4ICs1Myw3IEBACiAjaW5jbHVkZSAiU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLmgi
CiAjaW5jbHVkZSAiU3RhdGlzdGljc0RhdGEuaCIKICNpbmNsdWRlICJTdG9yYWdlQWNjZXNzU3Rh
dHVzLmgiCi0jaW5jbHVkZSAiU3RvcmFnZU1hbmFnZXIuaCIKLSNpbmNsdWRlICJTdG9yYWdlTWFu
YWdlck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiU3RvcmFnZU1hbmFnZXJTZXQuaCIKICNpbmNsdWRl
ICJXZWJDb29raWVNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbE1lc3NhZ2VzLmgiCkBAIC0xMzMsNiArMTMyLDcgQEAg
c3RhdGljIHZvaWQgY2FsbEV4aXRTb29uKElQQzo6Q29ubmVjdGlvbiopCiAKIE5ldHdvcmtQcm9j
ZXNzOjpOZXR3b3JrUHJvY2VzcyhBdXhpbGlhcnlQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0
ZXJzJiYgcGFyYW1ldGVycykKICAgICA6IG1fZG93bmxvYWRNYW5hZ2VyKCp0aGlzKQorICAgICwg
bV9zdG9yYWdlTWFuYWdlclNldChTdG9yYWdlTWFuYWdlclNldDo6Y3JlYXRlKCkpCiAjaWYgRU5B
QkxFKENPTlRFTlRfRVhURU5TSU9OUykKICAgICAsIG1fbmV0d29ya0NvbnRlbnRSdWxlTGlzdE1h
bmFnZXIoKnRoaXMpCiAjZW5kaWYKQEAgLTMzNiw2ICszMzYsOCBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjppbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMmJgogI2VuZGlmCiAgICAgaW5pdGlhbGl6ZVN0b3JhZ2VRdW90YShwYXJhbWV0ZXJzLmRl
ZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzKTsKIAorICAgIG1fc3RvcmFnZU1hbmFnZXJTZXQtPmFk
ZChzZXNzaW9uSUQsIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubG9jYWxT
dG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLmxv
Y2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CisKICAgICBhdXRvKiBkZWZhdWx0
U2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklE
KCkpOwogICAgIGF1dG8qIGRlZmF1bHRTdG9yYWdlU2Vzc2lvbiA9IGRlZmF1bHRTZXNzaW9uLT5u
ZXR3b3JrU3RvcmFnZVNlc3Npb24oKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGNvb2tpZSA6IHBh
cmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMucGVuZGluZ0Nvb2tpZXMpCkBAIC00
NDcsNiArNDQ5LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MoYm9vbCBpc1NlcnZpY2VXb3JrZXJQcm8KICAgICBVTlVTRURfUEFSQU0o
aXNTZXJ2aWNlV29ya2VyUHJvY2Vzcyk7CiAgICAgVU5VU0VEX1BBUkFNKHJlZ2lzdHJhYmxlRG9t
YWluKTsKICNlbmRpZgorCisgICAgbV9zdG9yYWdlTWFuYWdlclNldC0+YWRkQ29ubmVjdGlvbiht
X3dlYlByb2Nlc3NDb25uZWN0aW9ucy5sYXN0KCktPmNvbm5lY3Rpb24oKSk7CiB9CiAKIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OmNsZWFyQ2FjaGVkQ3JlZGVudGlhbHMoKQpAQCAtNDY5LDYgKzQ3Myw4
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmFkZFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFT
dG9yZVBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzCiAgICAgICAgIGFkZFNlcnZpY2VXb3JrZXJTZXNz
aW9uKHBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnNlc3Npb25JRCwgcGFyYW1l
dGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLnNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogI2VuZGlmCiAK
KyAgICBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5hZGQocGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBh
cmFtZXRlcnMuc2Vzc2lvbklELCBwYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeSwgcGFy
YW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOworCiAgICAgaW5p
dGlhbGl6ZVN0b3JhZ2VRdW90YShwYXJhbWV0ZXJzKTsKIAogICAgIFJlbW90ZU5ldHdvcmtpbmdD
b250ZXh0OjplbnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbigqdGhpcywgV1RGTW92ZShwYXJh
bWV0ZXJzKSk7CkBAIC02MTAsNiArNjE2LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVzdHJv
eVNlc3Npb24oY29uc3QgUEFMOjpTZXNzaW9uSUQmIHNlc3Npb25JRCkKICNlbmRpZgogCiAgICAg
bV9zdG9yYWdlUXVvdGFNYW5hZ2Vycy5yZW1vdmUoc2Vzc2lvbklEKTsKKworICAgIG1fc3RvcmFn
ZU1hbmFnZXJTZXQtPnJlbW92ZShzZXNzaW9uSUQpOwogfQogCiAjaWYgRU5BQkxFKFJFU09VUkNF
X0xPQURfU1RBVElTVElDUykKQEAgLTEwNDIsOCArMTA1MCw4IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OmNsZWFyVXNlckludGVyYWN0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
UmVnaXN0CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6Omhhc0xvY2FsU3RvcmFnZShQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4sIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1
dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIHNlc3Np
b24tPnN0b3JhZ2VNYW5hZ2VyKCkuZ2V0TG9jYWxTdG9yYWdlT3JpZ2lucyhbZG9tYWluLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvJiYgb3JpZ2lu
cykgbXV0YWJsZSB7CisgICAgaWYgKG1fc3RvcmFnZU1hbmFnZXJTZXQtPmNvbnRhaW5zKHNlc3Np
b25JRCkpIHsKKyAgICAgICAgbV9zdG9yYWdlTWFuYWdlclNldC0+Z2V0TG9jYWxTdG9yYWdlT3Jp
Z2lucyhzZXNzaW9uSUQsIFtkb21haW4sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildKGF1dG8mJiBvcmlnaW5zKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKFdURjo6YW55T2Yob3JpZ2lucywgWyZkb21haW5dKGF1dG8mIG9yaWdp
bikgewogICAgICAgICAgICAgICAgIHJldHVybiBkb21haW4ubWF0Y2hlcyhvcmlnaW4pOwogICAg
ICAgICAgICAgfSkpOwpAQCAtMTMyNCwxNiArMTMzMiwxNCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
OjpmZXRjaFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdl
YnNpdAogICAgICAgICB9KTsKICAgICB9CiAKLSAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nl
c3Npb24oc2Vzc2lvbklEKTsKLSAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJz
aXRlRGF0YVR5cGU6OlNlc3Npb25TdG9yYWdlKSAmJiBzZXNzaW9uKSB7Ci0gICAgICAgIHNlc3Np
b24tPnN0b3JhZ2VNYW5hZ2VyKCkuZ2V0U2Vzc2lvblN0b3JhZ2VPcmlnaW5zKFtjYWxsYmFja0Fn
Z3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXShhdXRvJiYgb3JpZ2lucykg
eworICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6U2Vz
c2lvblN0b3JhZ2UpICYmIG1fc3RvcmFnZU1hbmFnZXJTZXQtPmNvbnRhaW5zKHNlc3Npb25JRCkp
IHsKKyAgICAgICAgbV9zdG9yYWdlTWFuYWdlclNldC0+Z2V0U2Vzc2lvblN0b3JhZ2VPcmlnaW5z
KHNlc3Npb25JRCwgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5
UmVmKCldKGF1dG8mJiBvcmlnaW5zKSB7CiAgICAgICAgICAgICB3aGlsZSAoIW9yaWdpbnMuaXNF
bXB0eSgpKQogICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+bV93ZWJzaXRlRGF0
YS5lbnRyaWVzLmFwcGVuZChXZWJzaXRlRGF0YTo6RW50cnkgeyBvcmlnaW5zLnRha2VBbnkoKSwg
V2Vic2l0ZURhdGFUeXBlOjpTZXNzaW9uU3RvcmFnZSwgMCB9KTsKICAgICAgICAgfSk7CiAgICAg
fQotCi0gICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpM
b2NhbFN0b3JhZ2UpICYmIHNlc3Npb24pIHsKLSAgICAgICAgc2Vzc2lvbi0+c3RvcmFnZU1hbmFn
ZXIoKS5nZXRMb2NhbFN0b3JhZ2VPcmlnaW5zKFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFj
a0FnZ3JlZ2F0b3IuY29weVJlZigpXShhdXRvJiYgb3JpZ2lucykgeworICAgIGlmICh3ZWJzaXRl
RGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6TG9jYWxTdG9yYWdlKSAmJiBtX3N0
b3JhZ2VNYW5hZ2VyU2V0LT5jb250YWlucyhzZXNzaW9uSUQpKSB7CisgICAgICAgIG1fc3RvcmFn
ZU1hbmFnZXJTZXQtPmdldExvY2FsU3RvcmFnZU9yaWdpbnMoc2Vzc2lvbklELCBbY2FsbGJhY2tB
Z2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0oYXV0byYmIG9yaWdpbnMp
IHsKICAgICAgICAgICAgIHdoaWxlICghb3JpZ2lucy5pc0VtcHR5KCkpCiAgICAgICAgICAgICAg
ICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX3dlYnNpdGVEYXRhLmVudHJpZXMuYXBwZW5kKFdlYnNp
dGVEYXRhOjpFbnRyeSB7IG9yaWdpbnMudGFrZUFueSgpLCBXZWJzaXRlRGF0YVR5cGU6OkxvY2Fs
U3RvcmFnZSwgMCB9KTsKICAgICAgICAgfSk7CkBAIC0xNDA4LDEyICsxNDE0LDExIEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgT3B0aW9uU2V0PFdlYnNpCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vi
c2l0ZURhdGFUeXBlOjpET01DYWNoZSkpCiAgICAgICAgIENhY2hlU3RvcmFnZTo6RW5naW5lOjpj
bGVhckFsbENhY2hlcygqdGhpcywgc2Vzc2lvbklELCBbY2xlYXJUYXNrc0hhbmRsZXIgPSBjbGVh
clRhc2tzSGFuZGxlci5jb3B5UmVmKCldIHsgfSk7CiAKLSAgICBhdXRvKiBzZXNzaW9uID0gbmV0
d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKLSAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlu
cyhXZWJzaXRlRGF0YVR5cGU6OlNlc3Npb25TdG9yYWdlKSAmJiBzZXNzaW9uKQotICAgICAgICBz
ZXNzaW9uLT5zdG9yYWdlTWFuYWdlcigpLmRlbGV0ZVNlc3Npb25TdG9yYWdlT3JpZ2lucyhbY2xl
YXJUYXNrc0hhbmRsZXIgPSBjbGVhclRhc2tzSGFuZGxlci5jb3B5UmVmKCldIHsgfSk7CisgICAg
aWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpTZXNzaW9uU3Rv
cmFnZSkgJiYgbV9zdG9yYWdlTWFuYWdlclNldC0+Y29udGFpbnMoc2Vzc2lvbklEKSkKKyAgICAg
ICAgbV9zdG9yYWdlTWFuYWdlclNldC0+ZGVsZXRlU2Vzc2lvblN0b3JhZ2Uoc2Vzc2lvbklELCBb
Y2xlYXJUYXNrc0hhbmRsZXIgPSBjbGVhclRhc2tzSGFuZGxlci5jb3B5UmVmKCldIHsgfSk7CiAK
LSAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkxvY2Fs
U3RvcmFnZSkgJiYgc2Vzc2lvbikKLSAgICAgICAgc2Vzc2lvbi0+c3RvcmFnZU1hbmFnZXIoKS5k
ZWxldGVMb2NhbFN0b3JhZ2VPcmlnaW5zTW9kaWZpZWRTaW5jZShtb2RpZmllZFNpbmNlLCBbY2xl
YXJUYXNrc0hhbmRsZXIgPSBjbGVhclRhc2tzSGFuZGxlci5jb3B5UmVmKCldIHsgfSk7CisgICAg
aWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpMb2NhbFN0b3Jh
Z2UpICYmIG1fc3RvcmFnZU1hbmFnZXJTZXQtPmNvbnRhaW5zKHNlc3Npb25JRCkpCisgICAgICAg
IG1fc3RvcmFnZU1hbmFnZXJTZXQtPmRlbGV0ZUxvY2FsU3RvcmFnZU1vZGlmaWVkU2luY2Uoc2Vz
c2lvbklELCBtb2RpZmllZFNpbmNlLCBbY2xlYXJUYXNrc0hhbmRsZXIgPSBjbGVhclRhc2tzSGFu
ZGxlci5jb3B5UmVmKCldIHsgfSk7CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAg
ICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWRE
QkRhdGFiYXNlcykgJiYgIXNlc3Npb25JRC5pc0VwaGVtZXJhbCgpKQpAQCAtMTUwOCwxMiArMTUx
MywxMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpbwogICAgICAgICAgICAgQ2FjaGVTdG9yYWdl
OjpFbmdpbmU6OmNsZWFyQ2FjaGVzRm9yT3JpZ2luKCp0aGlzLCBzZXNzaW9uSUQsIFNlY3VyaXR5
T3JpZ2luRGF0YSB7IG9yaWdpbkRhdGEgfSwgW2NsZWFyVGFza3NIYW5kbGVyID0gY2xlYXJUYXNr
c0hhbmRsZXIuY29weVJlZigpXSB7IH0pOwogICAgIH0KIAotICAgIGF1dG8qIHNlc3Npb24gPSBu
ZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOwotICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRh
aW5zKFdlYnNpdGVEYXRhVHlwZTo6U2Vzc2lvblN0b3JhZ2UpICYmIHNlc3Npb24pCi0gICAgICAg
IHNlc3Npb24tPnN0b3JhZ2VNYW5hZ2VyKCkuZGVsZXRlU2Vzc2lvblN0b3JhZ2VFbnRyaWVzRm9y
T3JpZ2lucyhvcmlnaW5EYXRhcywgW2NsZWFyVGFza3NIYW5kbGVyID0gY2xlYXJUYXNrc0hhbmRs
ZXIuY29weVJlZigpXSB7IH0pOworICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdl
YnNpdGVEYXRhVHlwZTo6U2Vzc2lvblN0b3JhZ2UpICYmIG1fc3RvcmFnZU1hbmFnZXJTZXQtPmNv
bnRhaW5zKHNlc3Npb25JRCkpCisgICAgICAgIG1fc3RvcmFnZU1hbmFnZXJTZXQtPmRlbGV0ZVNl
c3Npb25TdG9yYWdlRm9yT3JpZ2lucyhzZXNzaW9uSUQsIG9yaWdpbkRhdGFzLCBbY2xlYXJUYXNr
c0hhbmRsZXIgPSBjbGVhclRhc2tzSGFuZGxlci5jb3B5UmVmKCldIHsgfSk7CiAKLSAgICBpZiAo
d2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkxvY2FsU3RvcmFnZSkg
JiYgc2Vzc2lvbikKLSAgICAgICAgc2Vzc2lvbi0+c3RvcmFnZU1hbmFnZXIoKS5kZWxldGVMb2Nh
bFN0b3JhZ2VFbnRyaWVzRm9yT3JpZ2lucyhvcmlnaW5EYXRhcywgW2NsZWFyVGFza3NIYW5kbGVy
ID0gY2xlYXJUYXNrc0hhbmRsZXIuY29weVJlZigpXSB7IH0pOworICAgIGlmICh3ZWJzaXRlRGF0
YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6TG9jYWxTdG9yYWdlKSAmJiBtX3N0b3Jh
Z2VNYW5hZ2VyU2V0LT5jb250YWlucyhzZXNzaW9uSUQpKQorICAgICAgICBtX3N0b3JhZ2VNYW5h
Z2VyU2V0LT5kZWxldGVMb2NhbFN0b3JhZ2VGb3JPcmlnaW5zKHNlc3Npb25JRCwgb3JpZ2luRGF0
YXMsIFtjbGVhclRhc2tzSGFuZGxlciA9IGNsZWFyVGFza3NIYW5kbGVyLmNvcHlSZWYoKV0geyB9
KTsKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogICAgIGlmICh3ZWJzaXRlRGF0YVR5
cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKSAmJiAhc2Vz
c2lvbklELmlzRXBoZW1lcmFsKCkpCkBAIC0xNzEwLDIwICsxNzE0LDE4IEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKFBBTDo6U2Vz
c2lvbklEIHNlc3NpCiAgICAgICAgIH0pOwogICAgIH0KIAotICAgIGF1dG8qIHNlc3Npb24gPSBu
ZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOwotICAgIGlmIChzZXNzaW9uKSB7Ci0gICAgICAgIGF1
dG8mIHN0b3JhZ2VNYW5hZ2VyID0gc2Vzc2lvbi0+c3RvcmFnZU1hbmFnZXIoKTsKKyAgICBpZiAo
bV9zdG9yYWdlTWFuYWdlclNldC0+Y29udGFpbnMoc2Vzc2lvbklEKSkgewogICAgICAgICBpZiAo
d2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlNlc3Npb25TdG9yYWdl
KSkgewotICAgICAgICAgICAgc3RvcmFnZU1hbmFnZXIuZ2V0U2Vzc2lvblN0b3JhZ2VPcmlnaW5z
KFtzdG9yYWdlTWFuYWdlciA9IG1ha2VSZWZQdHIoc3RvcmFnZU1hbmFnZXIpLCBjYWxsYmFja0Fn
Z3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpLCBkb21haW5zVG9EZWxldGVB
bGxCdXRDb29raWVzRm9yXShhdXRvJiYgb3JpZ2lucykgeworICAgICAgICAgICAgbV9zdG9yYWdl
TWFuYWdlclNldC0+Z2V0U2Vzc2lvblN0b3JhZ2VPcmlnaW5zKHNlc3Npb25JRCwgW3Byb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdGhpcywgc2Vzc2lvbklELCBjYWxsYmFja0FnZ3JlZ2F0
b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpLCBkb21haW5zVG9EZWxldGVBbGxCdXRD
b29raWVzRm9yXShhdXRvJiYgb3JpZ2lucykgewogICAgICAgICAgICAgICAgIGF1dG8gb3JpZ2lu
c1RvRGVsZXRlID0gZmlsdGVyRm9yUmVnaXN0cmFibGVEb21haW5zKG9yaWdpbnMsIGRvbWFpbnNU
b0RlbGV0ZUFsbEJ1dENvb2tpZXNGb3IsIGNhbGxiYWNrQWdncmVnYXRvci0+bV9kb21haW5zKTsK
LSAgICAgICAgICAgICAgICBzdG9yYWdlTWFuYWdlci0+ZGVsZXRlU2Vzc2lvblN0b3JhZ2VFbnRy
aWVzRm9yT3JpZ2lucyhvcmlnaW5zVG9EZWxldGUsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxs
YmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOworICAgICAgICAgICAgICAgIG1fc3RvcmFn
ZU1hbmFnZXJTZXQtPmRlbGV0ZVNlc3Npb25TdG9yYWdlRm9yT3JpZ2lucyhzZXNzaW9uSUQsIG9y
aWdpbnNUb0RlbGV0ZSwgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5j
b3B5UmVmKCldIHsgfSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQogCiAgICAgICAgIGlm
ICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6TG9jYWxTdG9yYWdl
KSkgewotICAgICAgICAgICAgc3RvcmFnZU1hbmFnZXIuZ2V0TG9jYWxTdG9yYWdlT3JpZ2lucyhb
c3RvcmFnZU1hbmFnZXIgPSBtYWtlUmVmUHRyKHN0b3JhZ2VNYW5hZ2VyKSwgY2FsbGJhY2tBZ2dy
ZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKSwgZG9tYWluc1RvRGVsZXRlQWxs
QnV0Q29va2llc0Zvcl0oYXV0byYmIG9yaWdpbnMpIHsKKyAgICAgICAgICAgIG1fc3RvcmFnZU1h
bmFnZXJTZXQtPmdldExvY2FsU3RvcmFnZU9yaWdpbnMoc2Vzc2lvbklELCBbcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCB0aGlzLCBzZXNzaW9uSUQsIGNhbGxiYWNrQWdncmVnYXRvciA9
IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCksIGRvbWFpbnNUb0RlbGV0ZUFsbEJ1dENvb2tp
ZXNGb3JdKGF1dG8mJiBvcmlnaW5zKSB7CiAgICAgICAgICAgICAgICAgYXV0byBvcmlnaW5zVG9E
ZWxldGUgPSBmaWx0ZXJGb3JSZWdpc3RyYWJsZURvbWFpbnMob3JpZ2lucywgZG9tYWluc1RvRGVs
ZXRlQWxsQnV0Q29va2llc0ZvciwgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX2RvbWFpbnMpOwotICAg
ICAgICAgICAgICAgIHN0b3JhZ2VNYW5hZ2VyLT5kZWxldGVMb2NhbFN0b3JhZ2VFbnRyaWVzRm9y
T3JpZ2lucyhvcmlnaW5zVG9EZWxldGUsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0Fn
Z3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOworICAgICAgICAgICAgICAgIG1fc3RvcmFnZU1hbmFn
ZXJTZXQtPmRlbGV0ZUxvY2FsU3RvcmFnZUZvck9yaWdpbnMoc2Vzc2lvbklELCBvcmlnaW5zVG9E
ZWxldGUsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigp
XSB7IH0pOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KICAgICB9CkBAIC0yMDk1LDkgKzIw
OTcsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjphY3R1YWxQcmVwYXJlVG9TdXNwZW5kKFNob3Vs
ZEFja25vd2xlZGdlV2hlblJlYWR5VG9TdXNwZW5kCiAgICAgfQogI2VuZGlmCiAKLSAgICBmb3JF
YWNoTmV0d29ya1Nlc3Npb24oWyZjYWxsYmFja0FnZ3JlZ2F0b3JdKGF1dG8mIHNlc3Npb24pIHsK
LSAgICAgICAgc2Vzc2lvbi5zdG9yYWdlTWFuYWdlcigpLnN1c3BlbmQoW2NhbGxiYWNrQWdncmVn
YXRvcl0geyB9KTsKLSAgICB9KTsKKyAgICBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5zdXNwZW5kKFtj
YWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnByb2Nl
c3NXaWxsU3VzcGVuZEltbWluZW50bHkoKQpAQCAtMjE3Myw5ICsyMTczLDcgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzczo6cmVzdW1lKCkKICAgICAgICAgc2VydmVyLT5yZXN1bWUoKTsKICNlbmRpZgog
Ci0gICAgZm9yRWFjaE5ldHdvcmtTZXNzaW9uKFtdKGF1dG8mIHNlc3Npb24pIHsKLSAgICAgICAg
c2Vzc2lvbi5zdG9yYWdlTWFuYWdlcigpLnJlc3VtZSgpOwotICAgIH0pOworICAgIG1fc3RvcmFn
ZU1hbmFnZXJTZXQtPnJlc3VtZSgpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwcmVmZXRj
aEROUyhjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQpAQCAtMjM4MSw2ICsyMzc5LDE4IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OnNldElEQlBlck9yaWdpblF1b3RhKHVpbnQ2NF90IHF1b3RhKQogfQog
I2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCit2b2lkIE5ldHdvcmtQcm9jZXNz
OjpzeW5jTG9jYWxTdG9yYWdlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3sKKyAgICBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT53YWl0VW50aWxTeW5jaW5nTG9j
YWxTdG9yYWdlRmluaXNoZWQoKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOworfQorCit2b2lk
IE5ldHdvcmtQcm9jZXNzOjpjbGVhckxlZ2FjeVByaXZhdGVCcm93c2luZ0xvY2FsU3RvcmFnZSgp
Cit7CisgICAgaWYgKG1fc3RvcmFnZU1hbmFnZXJTZXQtPmNvbnRhaW5zKFBBTDo6U2Vzc2lvbklE
OjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkpKQorICAgICAgICBtX3N0b3JhZ2VNYW5hZ2VyU2V0
LT5kZWxldGVMb2NhbFN0b3JhZ2VNb2RpZmllZFNpbmNlKFBBTDo6U2Vzc2lvbklEOjpsZWdhY3lQ
cml2YXRlU2Vzc2lvbklEKCksIC1XYWxsVGltZTo6aW5maW5pdHkoKSwgW10oKSB7IH0pOworfQor
CiB2b2lkIE5ldHdvcmtQcm9jZXNzOjp1cGRhdGVRdW90YUJhc2VkT25TcGFjZVVzYWdlRm9yVGVz
dGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2lu
KQogewogICAgIGF1dG8mIG1hbmFnZXIgPSBzdG9yYWdlUXVvdGFNYW5hZ2VyKHNlc3Npb25JRCwg
b3JpZ2luKTsKQEAgLTI2ODgsODAgKzI2OTgsMjEgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVt
b3ZlS2VwdEFsaXZlTG9hZChOZXR3b3JrUmVzb3VyY2VMb2FkZXImIGxvYWRlcikKICAgICAgICAg
c2Vzc2lvbi0+cmVtb3ZlS2VwdEFsaXZlTG9hZChsb2FkZXIpOwogfQogCi12b2lkIE5ldHdvcmtQ
cm9jZXNzOjp3ZWJQYWdlV2FzQWRkZWQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgUGFnZUlkZW50aWZp
ZXIgb2xkUGFnZUlEKQotewotICAgIGlmICghcGFnZUlEIHx8ICFvbGRQYWdlSUQpIHsKLSAgICAg
ICAgTE9HX0VSUk9SKCJDYW5ub3QgYWRkIHBhZ2Ugd2l0aCBpbnZhbGlkIGlkIik7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vz
c2lvbklEKTsKLSAgICBpZiAoIXNlc3Npb24pIHsKLSAgICAgICAgTE9HX0VSUk9SKCJDYW5ub3Qg
YWRkIHBhZ2UgdG8gYW4gdW5rbm93biBzZXNzaW9uIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgYXV0byYgc3RvcmFnZU1hbmFnZXIgPSBzZXNzaW9uLT5zdG9yYWdlTWFuYWdlcigpOwot
Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX3Nlc3Npb25CeUNvbm5lY3Rpb24uYWRkKGNvbm5lY3Rp
b24udW5pcXVlSUQoKSwgc2Vzc2lvbklEKTsKLSAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwg
YWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9PSBzZXNzaW9uSUQpOwotCi0gICAgc3RvcmFnZU1h
bmFnZXIuY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UocGFnZUlELnRvVUludDY0KCksIHN0
ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSk7Ci0gICAgc3RvcmFnZU1hbmFnZXIu
YWRkQWxsb3dlZFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlQ29ubmVjdGlvbihwYWdlSUQudG9VSW50
NjQoKSwgY29ubmVjdGlvbik7Ci0gICAgaWYgKHBhZ2VJRCAhPSBvbGRQYWdlSUQpCi0gICAgICAg
IHN0b3JhZ2VNYW5hZ2VyLmNsb25lU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2Uob2xkUGFnZUlELnRv
VUludDY0KCksIHBhZ2VJRC50b1VJbnQ2NCgpKTsKLX0KLQotdm9pZCBOZXR3b3JrUHJvY2Vzczo6
d2ViUGFnZVdhc1JlbW92ZWQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKLXsKLSAgICBpZiAoIXBhZ2VJ
RCkgewotICAgICAgICBMT0dfRVJST1IoIkNhbm5vdCByZW1vdmUgcGFnZSB3aXRoIGludmFsaWQg
aWQiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3
b3JrU2Vzc2lvbihzZXNzaW9uSUQpOwotICAgIC8vIFNlc3Npb24gY2FuIGJlIGRlc3Ryb3llZCBi
ZWZvcmUgcGFnZSBnZXRzIHJlbW92ZWQuCi0gICAgaWYgKCFzZXNzaW9uKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBhdXRvJiBzdG9yYWdlTWFuYWdlciA9IHNlc3Npb24tPnN0b3JhZ2VNYW5hZ2Vy
KCk7Ci0gICAgc3RvcmFnZU1hbmFnZXIucmVtb3ZlQWxsb3dlZFNlc3Npb25TdG9yYWdlTmFtZXNw
YWNlQ29ubmVjdGlvbihwYWdlSUQudG9VSW50NjQoKSwgY29ubmVjdGlvbik7Ci0gICAgc3RvcmFn
ZU1hbmFnZXIuZGVzdHJveVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHBhZ2VJRC50b1VJbnQ2NCgp
KTsKLX0KLQotdm9pZCBOZXR3b3JrUHJvY2Vzczo6d2ViUHJvY2Vzc1dhc0Rpc2Nvbm5lY3RlZChJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCi17Ci0gICAgYXV0byBzZXNzaW9uSUQgPSBtX3Nl
c3Npb25CeUNvbm5lY3Rpb24udGFrZShjb25uZWN0aW9uLnVuaXF1ZUlEKCkpOwotICAgIGlmICgh
c2Vzc2lvbklELmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKGF1dG8qIHNl
c3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKQotICAgICAgICBzZXNzaW9uLT5zdG9y
YWdlTWFuYWdlcigpLnByb2Nlc3NEaWRDbG9zZUNvbm5lY3Rpb24oY29ubmVjdGlvbik7Ci19Ci0K
LXZvaWQgTmV0d29ya1Byb2Nlc3M6OndlYlByb2Nlc3NTZXNzaW9uQ2hhbmdlZChJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIFBBTDo6U2Vzc2lvbklEIG5ld1Nlc3Npb25JRCwgY29uc3QgVmVj
dG9yPFBhZ2VJZGVudGlmaWVyPiYgcGFnZUlEcykKLXsKLSAgICBhdXRvIGNvbm5lY3Rpb25JRCA9
IGNvbm5lY3Rpb24udW5pcXVlSUQoKTsKLSAgICBBU1NFUlQobV9zZXNzaW9uQnlDb25uZWN0aW9u
LmNvbnRhaW5zKGNvbm5lY3Rpb25JRCkpOwotICAgIGlmIChtX3Nlc3Npb25CeUNvbm5lY3Rpb24u
Z2V0KGNvbm5lY3Rpb25JRCkgPT0gbmV3U2Vzc2lvbklEKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICB3ZWJQcm9jZXNzV2FzRGlzY29ubmVjdGVkKGNvbm5lY3Rpb24pOwotICAgIGZvciAoYXV0byYg
cGFnZUlEIDogcGFnZUlEcykKLSAgICAgICAgd2ViUGFnZVdhc0FkZGVkKGNvbm5lY3Rpb24sIG5l
d1Nlc3Npb25JRCwgcGFnZUlELCBwYWdlSUQpOwotfQotCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpn
ZXRMb2NhbFN0b3JhZ2VPcmlnaW5EZXRhaWxzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpP
cmlnaW5EZXRhaWxzPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBhdXRvKiBzZXNz
aW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKLSAgICBpZiAoIXNlc3Npb24pIHsKKyAg
ICBpZiAoIW1fc3RvcmFnZU1hbmFnZXJTZXQtPmNvbnRhaW5zKHNlc3Npb25JRCkpIHsKICAgICAg
ICAgTE9HX0VSUk9SKCJDYW5ub3QgZ2V0IGxvY2FsIHN0b3JhZ2UgaW5mb3JtYXRpb24gZm9yIGFu
IHVua25vd24gc2Vzc2lvbiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byYg
c3RvcmFnZU1hbmFnZXIgPSBzZXNzaW9uLT5zdG9yYWdlTWFuYWdlcigpOwotICAgIHN0b3JhZ2VN
YW5hZ2VyLmdldExvY2FsU3RvcmFnZU9yaWdpbkRldGFpbHMoW2NvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1dG8mJiBkZXRhaWxzKSBtdXRhYmxlIHsKKyAg
ICBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5nZXRMb2NhbFN0b3JhZ2VPcmlnaW5EZXRhaWxzKHNlc3Np
b25JRCwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1
dG8mJiBkZXRhaWxzKSBtdXRhYmxlIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92
ZShkZXRhaWxzKSk7CiAgICAgfSk7CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3NDbG9zZWQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQoreworICAg
IG1fc3RvcmFnZU1hbmFnZXJTZXQtPnJlbW92ZUNvbm5lY3Rpb24oY29ubmVjdGlvbik7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5oCmluZGV4IDU0NmQ1ZWYzY2NkOGY2YmJlNGMwMTUzZDliYmI3YmVkOGFj
ZWZkNjMuLmEyMWM0NmMxODhlOTdjMDdkMGVmZDY3NzJkYzNmYjFjYTMxMDM5MGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTk4LDYgKzk4
LDcgQEAgY2xhc3MgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CiBjbGFzcyBOZXR3b3Jr
UHJvY2Vzc1N1cHBsZW1lbnQ7CiBjbGFzcyBOZXR3b3JrUHJveGltaXR5TWFuYWdlcjsKIGNsYXNz
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjsKK2NsYXNzIFN0b3JhZ2VNYW5hZ2VyU2V0OwogY2xhc3Mg
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOwogY2xhc3MgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uOwogZW51bSBjbGFzcyBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MgOiBib29sOwpAQCAt
MjcwLDEwICsyNzEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTZXNzaW9uSXNDb250cm9sbGVk
QnlBdXRvbWF0aW9uKFBBTDo6U2Vzc2lvbklELCBib29sKTsKICAgICBib29sIHNlc3Npb25Jc0Nv
bnRyb2xsZWRCeUF1dG9tYXRpb24oUEFMOjpTZXNzaW9uSUQpIGNvbnN0OwogCi0gICAgdm9pZCB3
ZWJQYWdlV2FzQWRkZWQoSVBDOjpDb25uZWN0aW9uJiwgUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7Ci0gICAgdm9pZCB3ZWJQ
YWdlV2FzUmVtb3ZlZChJUEM6OkNvbm5lY3Rpb24mLCBQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIpOwotICAgIHZvaWQgd2ViUHJvY2Vzc1dhc0Rpc2Nvbm5lY3RlZChJUEM6
OkNvbm5lY3Rpb24mKTsKLSAgICB2b2lkIHdlYlByb2Nlc3NTZXNzaW9uQ2hhbmdlZChJUEM6OkNv
bm5lY3Rpb24mLCBQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyPiYpOworICAgIHZvaWQgY29ubmVjdGlvblRvV2ViUHJvY2Vzc0Nsb3NlZChJUEM6OkNv
bm5lY3Rpb24mKTsKICAgICB2b2lkIGdldExvY2FsU3RvcmFnZU9yaWdpbkRldGFpbHMoUEFMOjpT
ZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPExvY2FsU3RvcmFnZURhdGFi
YXNlVHJhY2tlcjo6T3JpZ2luRGV0YWlscz4mJik+JiYpOwogCiAjaWYgRU5BQkxFKENPTlRFTlRf
RVhURU5TSU9OUykKQEAgLTI4Nyw2ICsyODUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJREJQ
ZXJPcmlnaW5RdW90YSh1aW50NjRfdCk7CiAjZW5kaWYKICAgICB2b2lkIHVwZGF0ZVF1b3RhQmFz
ZWRPblNwYWNlVXNhZ2VGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpD
bGllbnRPcmlnaW4mKTsKKyAgICB2b2lkIHN5bmNMb2NhbFN0b3JhZ2UoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGNsZWFyTGVnYWN5UHJpdmF0ZUJyb3dzaW5nTG9jYWxT
dG9yYWdlKCk7CiAKICNpZiBFTkFCTEUoU0FOREJPWF9FWFRFTlNJT05TKQogICAgIHZvaWQgZ2V0
U2FuZGJveEV4dGVuc2lvbnNGb3JCbG9iRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVu
YW1lcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJh
eSYmKT4mJik7CkBAIC01MDEsNiArNTAxLDggQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIHN0ZDo6
dW5pcXVlX3B0cjxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+IG1fZGVmYXVsdE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjsKICAgICBOZXR3b3JrQmxvYlJlZ2lzdHJ5IG1fbmV0d29ya0Jsb2JS
ZWdpc3RyeTsKIAorICAgIFJlZlB0cjxTdG9yYWdlTWFuYWdlclNldD4gbV9zdG9yYWdlTWFuYWdl
clNldDsKKwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXpl
TmV0d29ya1Byb2Nlc3NDb2NvYShjb25zdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cyYpOwogICAgIHZvaWQgc2V0U3RvcmFnZUFjY2Vzc0FQSUVuYWJsZWQoYm9vbCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdl
cy5pbgppbmRleCBiN2UwMWY1MWFjZmJhN2I0M2NiYjk1MzQ3NGI1NzllNDcxYmVlN2JmLi4xNTc4
OGIyYmQxNTc1YmY2YTYxMzk1MmQ4N2M2ODM5ZmRmMWQ1MGVmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KQEAg
LTE2Miw2ICsxNjIsOCBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZl
ciB7CiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAgICAgU2V0SURCUGVyT3JpZ2luUXVv
dGEodWludDY0X3QgcXVvdGEpCiAjZW5kaWYKKyAgICBTeW5jTG9jYWxTdG9yYWdlKCkgLT4gKCkg
U3luY2hyb25vdXMKKyAgICBDbGVhckxlZ2FjeVByaXZhdGVCcm93c2luZ0xvY2FsU3RvcmFnZSgp
CiAgICAgVXBkYXRlUXVvdGFCYXNlZE9uU3BhY2VVc2FnZUZvclRlc3RpbmcoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBzdHJ1Y3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbikKIAogICAg
IFN0b3JlQWRDbGlja0F0dHJpYnV0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29y
ZTo6QWRDbGlja0F0dHJpYnV0aW9uIGFkQ2xpY2tBdHRyaWJ1dGlvbikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKaW5kZXggNDg4YjkyOTgwYWVk
MWFkYzY0YWIzZDNjYWZjM2Y4ZDhmYTI3NjJiZC4uMWExMzk2MjkxNmE5OTI0MDQwMDhhMmVmMjFh
NDE5M2U2YzE3NjZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrU2Vzc2lvbi5jcHAKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlICJOZXR3b3JrUmVzb3Vy
Y2VMb2FkUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRlci5oIgog
I2luY2x1ZGUgIlBpbmdMb2FkLmgiCi0jaW5jbHVkZSAiU3RvcmFnZU1hbmFnZXIuaCIKICNpbmNs
dWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgog
I2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgpAQCAtODUsNyArODQsNiBAQCBOZXR3b3JrU2Vz
c2lvbjo6TmV0d29ya1Nlc3Npb24oTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBjb25z
dCBOZXR3b3JrU2VzcwogICAgICwgbV9lbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTG9nVGVz
dGluZ0V2ZW50KHBhcmFtZXRlcnMuZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0xvZ1Rlc3Rp
bmdFdmVudCkKICNlbmRpZgogICAgICwgbV9hZENsaWNrQXR0cmlidXRpb24obWFrZVVuaXF1ZVJl
ZjxBZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyPihwYXJhbWV0ZXJzLnNlc3Npb25JRCkpCi0gICAg
LCBtX3N0b3JhZ2VNYW5hZ2VyKFN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGUoU3RyaW5nKHBhcmFtZXRl
cnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5KSkpCiB7CiAgICAgaWYgKCFtX3Nlc3Npb25JRC5pc0Vw
aGVtZXJhbCgpKSB7CiAgICAgICAgIFN0cmluZyBuZXR3b3JrQ2FjaGVEaXJlY3RvcnkgPSBwYXJh
bWV0ZXJzLm5ldHdvcmtDYWNoZURpcmVjdG9yeTsKQEAgLTk5LDcgKzk3LDYgQEAgTmV0d29ya1Nl
c3Npb246Ok5ldHdvcmtTZXNzaW9uKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgY29u
c3QgTmV0d29ya1Nlc3MKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmtDYWNo
ZSwgIkZhaWxlZCB0byBpbml0aWFsaXplIHRoZSBXZWJLaXQgbmV0d29yayBkaXNrIGNhY2hlIik7
CiAgICAgfQogCi0gICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KHBhcmFt
ZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKICAgICBtX2FkQ2xp
Y2tBdHRyaWJ1dGlvbi0+c2V0UGluZ0xvYWRGdW5jdGlvbihbdGhpcywgd2Vha1RoaXMgPSBtYWtl
V2Vha1B0cih0aGlzKV0oTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiBsb2FkUGFyYW1l
dGVycywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMTMs
OSArMTEwLDYgQEAgTmV0d29ya1Nlc3Npb246On5OZXR3b3JrU2Vzc2lvbigpCiAjaWYgRU5BQkxF
KFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBkZXN0cm95UmVzb3VyY2VMb2FkU3RhdGlz
dGljcygpOwogI2VuZGlmCi0KLSAgICBtX3N0b3JhZ2VNYW5hZ2VyLT5yZXN1bWUoKTsKLSAgICBt
X3N0b3JhZ2VNYW5hZ2VyLT53YWl0VW50aWxUYXNrc0ZpbmlzaGVkKCk7CiB9CiAKICNpZiBFTkFC
TEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCmluZGV4IGMyYmY0M2QyNGUwOTFmZjc2ZDlkYjhiNzBhMTZh
ZTNmYTE3YjJkNTAuLjk1NTBjZTVkNjM4OTliZDI4NTk5NDc1M2VjZjMzNDZhNTJiNDcwOTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKQEAgLTUx
LDcgKzUxLDYgQEAgY2xhc3MgQWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlcjsKIGNsYXNzIE5ldHdv
cmtEYXRhVGFzazsKIGNsYXNzIE5ldHdvcmtQcm9jZXNzOwogY2xhc3MgTmV0d29ya1Jlc291cmNl
TG9hZGVyOwotY2xhc3MgU3RvcmFnZU1hbmFnZXI7CiBjbGFzcyBOZXR3b3JrU29ja2V0Q2hhbm5l
bDsKIGNsYXNzIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTsKIGNsYXNzIFdlYlNvY2tl
dFRhc2s7CkBAIC04MCw4ICs3OSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZ2lzdGVyTmV0d29y
a0RhdGFUYXNrKE5ldHdvcmtEYXRhVGFzayYgdGFzaykgeyBtX2RhdGFUYXNrU2V0LmFkZCgmdGFz
ayk7IH0KICAgICB2b2lkIHVucmVnaXN0ZXJOZXR3b3JrRGF0YVRhc2soTmV0d29ya0RhdGFUYXNr
JiB0YXNrKSB7IG1fZGF0YVRhc2tTZXQucmVtb3ZlKCZ0YXNrKTsgfQogCi0gICAgU3RvcmFnZU1h
bmFnZXImIHN0b3JhZ2VNYW5hZ2VyKCkgeyByZXR1cm4gbV9zdG9yYWdlTWFuYWdlci5nZXQoKTsg
fQotCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUqIHJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSBjb25zdCB7IHJl
dHVybiBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MuZ2V0KCk7IH0KICAgICB2b2lkIHNldFJlc291
cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGJvb2wpOwpAQCAtMTM4LDcgKzEzNSw2IEBAIHByb3Rl
Y3RlZDoKIAogICAgIFByZWZldGNoQ2FjaGUgbV9wcmVmZXRjaENhY2hlOwogCi0gICAgUmVmPFN0
b3JhZ2VNYW5hZ2VyPiBtX3N0b3JhZ2VNYW5hZ2VyOwogI2lmICFBU1NFUlRfRElTQUJMRUQKICAg
ICBib29sIG1faXNJbnZhbGlkYXRlZCB7IGZhbHNlIH07CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRl
cnMuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0
aW9uUGFyYW1ldGVycy5jcHAKaW5kZXggMzUxNGNjMGYwODNjN2VhYzVkMWQ4NjEzYTBlZmE1ZTcy
ZTg4Nzc5ZC4uMDE4MzJmZDI1NDc5MWMwNGMyOTc4ZDc3YmY2ODVlMjkzNTE5ZjRmNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9u
UGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgTmV0d29ya1Nl
c3Npb25DcmVhdGlvblBhcmFtZXRlcnMgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM6
OnByaXZhdGVTZXNzaW8KICNpZiBVU0UoQ1VSTCkKICAgICAgICAgLCB7IH0sIHsgfQogI2VuZGlm
Ci0gICAgICAgICwgeyB9LCB7IH0sIGZhbHNlLCBmYWxzZSwgeyB9LCB7IH0sIHsgfSwgeyB9LCB7
IH0sIHsgfSwgeyB9LCB7IH0sIHsgfQorICAgICAgICAsIHsgfSwgeyB9LCBmYWxzZSwgZmFsc2Us
IHsgfSwgeyB9LCB7IH0sIHsgfSwgeyB9LCB7IH0sIHsgfQogICAgIH07CiB9CiAKQEAgLTg1LDcg
Kzg1LDYgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQ
Qzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IGVuYWJsZVJlc291cmNl
TG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGU7CiAgICAgZW5jb2RlciA8PCByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWFudWFsUHJldmFsZW50UmVzb3VyY2U7CiAKLSAgICBlbmNvZGVyIDw8IGxvY2FsU3Rv
cmFnZURpcmVjdG9yeSA8PCBsb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAg
ICAgZW5jb2RlciA8PCBuZXR3b3JrQ2FjaGVEaXJlY3RvcnkgPDwgbmV0d29ya0NhY2hlRGlyZWN0
b3J5RXh0ZW5zaW9uSGFuZGxlOwogCiAgICAgZW5jb2RlciA8PCBkZXZpY2VNYW5hZ2VtZW50UmVz
dHJpY3Rpb25zRW5hYmxlZDsKQEAgLTIwOCwxNiArMjA3LDYgQEAgT3B0aW9uYWw8TmV0d29ya1Nl
c3Npb25DcmVhdGlvblBhcmFtZXRlcnM+IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJz
OjpkZWMKICAgICBpZiAoIXJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW51YWxQcmV2YWxlbnRSZXNv
dXJjZSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPFN0cmlu
Zz4gbG9jYWxTdG9yYWdlRGlyZWN0b3J5OwotICAgIGRlY29kZXIgPj4gbG9jYWxTdG9yYWdlRGly
ZWN0b3J5OwotICAgIGlmICghbG9jYWxTdG9yYWdlRGlyZWN0b3J5KQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwotCi0gICAgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBs
b2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7Ci0gICAgZGVjb2RlciA+PiBsb2Nh
bFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7Ci0gICAgaWYgKCFsb2NhbFN0b3JhZ2VE
aXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0K
ICAgICBPcHRpb25hbDxTdHJpbmc+IG5ldHdvcmtDYWNoZURpcmVjdG9yeTsKICAgICBkZWNvZGVy
ID4+IG5ldHdvcmtDYWNoZURpcmVjdG9yeTsKICAgICBpZiAoIW5ldHdvcmtDYWNoZURpcmVjdG9y
eSkKQEAgLTI2OSw4ICsyNTgsNiBAQCBPcHRpb25hbDxOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFy
YW1ldGVycz4gTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM6OmRlYwogICAgICAgICAs
IFdURk1vdmUoKmRldmljZU1hbmFnZW1lbnRSZXN0cmljdGlvbnNFbmFibGVkKQogICAgICAgICAs
IFdURk1vdmUoKmFsbExvYWRzQmxvY2tlZEJ5RGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0Zv
clRlc3RpbmcpCiAgICAgICAgICwgV1RGTW92ZSgqcmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbnVh
bFByZXZhbGVudFJlc291cmNlKQotICAgICAgICAsIFdURk1vdmUoKmxvY2FsU3RvcmFnZURpcmVj
dG9yeSkKLSAgICAgICAgLCBXVEZNb3ZlKCpsb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25I
YW5kbGUpCiAgICAgICAgICwgV1RGTW92ZSgqbmV0d29ya0NhY2hlRGlyZWN0b3J5KQogICAgICAg
ICAsIFdURk1vdmUoKm5ldHdvcmtDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSkKICAgICB9
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Np
b25DcmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCA3YTQ3NDE0YjUxMWZjZDgwMmJl
ZTU3MjhiOGM3ZWI0OTM3N2IxMWU2Li5jN2YwNTQ1MjBhYWM4ZWY2ZGVjNTA0MDlhNGE5NDA3Y2Rk
ODk2NWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtT
ZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC05MSw4ICs5MSw2IEBA
IHN0cnVjdCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgYm9vbCBhbGxM
b2Fkc0Jsb2NrZWRCeURldmljZU1hbmFnZW1lbnRSZXN0cmljdGlvbnNGb3JUZXN0aW5nIHsgZmFs
c2UgfTsKICAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWFudWFsUHJldmFsZW50UmVzb3VyY2UgeyB9OwogCi0gICAgU3RyaW5nIGxvY2FsU3RvcmFn
ZURpcmVjdG9yeTsKLSAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgbG9jYWxTdG9yYWdlRGly
ZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIFN0cmluZyBuZXR3b3JrQ2FjaGVEaXJlY3Rvcnk7
CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIG5ldHdvcmtDYWNoZURpcmVjdG9yeUV4dGVu
c2lvbkhhbmRsZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcAppbmRleCBiZjUx
NTc4ZmIxNDdkZGRjODdlNjZkOTBhNWVkZDAyYTRjZDcyNjkzLi44ZjQ3NjNjOWRjODZhYjRhNDJk
OTQ2ZjI2ZGIyOGJjYzY5MDI5Y2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAK
QEAgLTI1OSw3ICsyNTksNiBAQCB2b2lkIExvY2FsU3RvcmFnZURhdGFiYXNlOjp1cGRhdGVEYXRh
YmFzZSgpCiAgICAgaWYgKG1faXNDbG9zZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFTU0VS
VChtX2RpZFNjaGVkdWxlRGF0YWJhc2VVcGRhdGUpOwogICAgIG1fZGlkU2NoZWR1bGVEYXRhYmFz
ZVVwZGF0ZSA9IGZhbHNlOwogCiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gY2hhbmdlZEl0
ZW1zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdl
L0xvY2FsU3RvcmFnZURhdGFiYXNlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dl
YlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuaAppbmRleCA0ZDY4NzZiMTcxM2ZlMTQ3Yzll
ZTcxYWU5YjZkNjk0NjIzOTdhZWZkLi44Y2ZiMjRiMjFmM2EwYTQyNmJkYjIyZDQ1Y2FiNDIwOTUy
M2VjODEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3Jh
Z2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuaApAQCAtNTUsNiArNTUsOCBAQCBw
dWJsaWM6CiAgICAgdm9pZCByZW1vdmVJdGVtKGNvbnN0IFN0cmluZyYga2V5KTsKICAgICB2b2lk
IGNsZWFyKCk7CiAKKyAgICB2b2lkIHVwZGF0ZURhdGFiYXNlKCk7CisKICAgICAvLyBXaWxsIGJs
b2NrIHVudGlsIGFsbCBwZW5kaW5nIGNoYW5nZXMgaGF2ZSBiZWVuIHdyaXR0ZW4gdG8gZGlzay4K
ICAgICB2b2lkIGNsb3NlKCk7CiAKQEAgLTczLDcgKzc1LDYgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGl0ZW1EaWRDaGFuZ2UoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUpOwog
CiAgICAgdm9pZCBzY2hlZHVsZURhdGFiYXNlVXBkYXRlKCk7Ci0gICAgdm9pZCB1cGRhdGVEYXRh
YmFzZSgpOwogICAgIHZvaWQgdXBkYXRlRGF0YWJhc2VXaXRoQ2hhbmdlZEl0ZW1zKGNvbnN0IEhh
c2hNYXA8U3RyaW5nLCBTdHJpbmc+Jik7CiAKICAgICBib29sIGRhdGFiYXNlSXNFbXB0eSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2Fs
U3RvcmFnZURhdGFiYXNlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNwcAppbmRleCAwN2E2MzNm
YmZlOWJlNTllZGJlZDUzOWM5NmUxOWU0YjFiYmQyNTgzLi4yZmZkMGEyNWMxMWRhMWM1MTNlODcw
MTQzMzQ3NGZlYzZhN2QxNTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VU
cmFja2VyLmNwcApAQCAtMzksMjQgKzM5LDIwIEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCi1SZWY8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyPiBM
b2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OmNyZWF0ZShSZWY8V29ya1F1ZXVlPiYmIHF1ZXVl
LCBTdHJpbmcmJiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpCitSZWY8TG9jYWxTdG9yYWdlRGF0YWJh
c2VUcmFja2VyPiBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OmNyZWF0ZShTdHJpbmcmJiBs
b2NhbFN0b3JhZ2VEaXJlY3RvcnkpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTG9jYWxT
dG9yYWdlRGF0YWJhc2VUcmFja2VyKFdURk1vdmUocXVldWUpLCBXVEZNb3ZlKGxvY2FsU3RvcmFn
ZURpcmVjdG9yeSkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBMb2NhbFN0b3JhZ2VEYXRh
YmFzZVRyYWNrZXIoV1RGTW92ZShsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpKSk7CiB9CiAKLUxvY2Fs
U3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyKFJlZjxX
b3JrUXVldWU+JiYgcXVldWUsIFN0cmluZyYmIGxvY2FsU3RvcmFnZURpcmVjdG9yeSkKLSAgICA6
IG1fcXVldWUoV1RGTW92ZShxdWV1ZSkpCi0gICAgLCBtX2xvY2FsU3RvcmFnZURpcmVjdG9yeShX
VEZNb3ZlKGxvY2FsU3RvcmFnZURpcmVjdG9yeSkpCitMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNr
ZXI6OkxvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcihTdHJpbmcmJiBsb2NhbFN0b3JhZ2VEaXJl
Y3RvcnkpCisgICAgOiBtX2xvY2FsU3RvcmFnZURpcmVjdG9yeShXVEZNb3ZlKGxvY2FsU3RvcmFn
ZURpcmVjdG9yeSkpCiB7Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBBU1NF
UlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIC8vIE1ha2Ugc3VyZSB0aGUgZW5jb2Rpbmcg
aXMgaW5pdGlhbGl6ZWQgYmVmb3JlIHdlIHN0YXJ0IGRpc3BhdGNoaW5nIHRoaW5ncyB0byB0aGUg
cXVldWUuCiAgICAgVVRGOEVuY29kaW5nKCk7CiAKLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChbcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSgpIG11dGFibGUgewotICAgICAgICAvLyBEZWxl
dGUgbGVnYWN5IHN0b3JhZ2VUcmFja2VyIGRhdGFiYXNlIGZpbGUuCi0gICAgICAgIFNRTGl0ZUZp
bGVTeXN0ZW06OmRlbGV0ZURhdGFiYXNlRmlsZShwcm90ZWN0ZWRUaGlzLT5kYXRhYmFzZVBhdGgo
IlN0b3JhZ2VUcmFja2VyLmRiIikpOwotICAgIH0pOworICAgIFNRTGl0ZUZpbGVTeXN0ZW06OmRl
bGV0ZURhdGFiYXNlRmlsZShkYXRhYmFzZVBhdGgoIlN0b3JhZ2VUcmFja2VyLmRiIikpOwogfQog
CiBTdHJpbmcgTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpsb2NhbFN0b3JhZ2VEaXJlY3Rv
cnkoKSBjb25zdApAQCAtNjYsNyArNjIsNyBAQCBTdHJpbmcgTG9jYWxTdG9yYWdlRGF0YWJhc2VU
cmFja2VyOjpsb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdAogCiBMb2NhbFN0b3JhZ2VEYXRh
YmFzZVRyYWNrZXI6On5Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIoKQogewotICAgIEFTU0VS
VChSdW5Mb29wOjppc01haW4oKSk7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiB9
CiAKIFN0cmluZyBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OmRhdGFiYXNlUGF0aChjb25z
dCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFi
YXNlVHJhY2tlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xv
Y2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5oCmluZGV4IDVkOWQyYzJhNGM3ZGEwMTNmNjBmMTFl
YjQzNmYxOGU0NzU4MDIwOTEuLjg1YjQ5ZWUyNWI4YWNjYzlkYWY5OTkzNGRlNzg4YzIzNWZkNWFi
ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9M
b2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmgKQEAgLTM1LDkg
KzM1LDkgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIExvY2FsU3RvcmFnZURhdGFi
YXNlVHJhY2tlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxMb2NhbFN0b3JhZ2VEYXRh
YmFzZVRyYWNrZXIsIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW5SdW5Mb29wPiB7CitjbGFz
cyBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI+IGNyZWF0ZShSZWY8V29ya1F1ZXVlPiYmLCBT
dHJpbmcmJiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpOworICAgIHN0YXRpYyBSZWY8TG9jYWxTdG9y
YWdlRGF0YWJhc2VUcmFja2VyPiBjcmVhdGUoU3RyaW5nJiYgbG9jYWxTdG9yYWdlRGlyZWN0b3J5
KTsKICAgICB+TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyKCk7CiAKICAgICBTdHJpbmcgZGF0
YWJhc2VQYXRoKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYpIGNvbnN0OwpAQCAt
NjQsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgVmVjdG9yPE9yaWdpbkRldGFpbHM+IG9yaWdpbkRl
dGFpbHMoKTsKIAogcHJpdmF0ZToKLSAgICBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIoUmVm
PFdvcmtRdWV1ZT4mJiwgU3RyaW5nJiYgbG9jYWxTdG9yYWdlRGlyZWN0b3J5KTsKKyAgICBMb2Nh
bFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIoU3RyaW5nJiYgbG9jYWxTdG9yYWdlRGlyZWN0b3J5KTsK
IAogICAgIFN0cmluZyBkYXRhYmFzZVBhdGgoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkgY29uc3Q7
CiAgICAgU3RyaW5nIGxvY2FsU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0OwpAQCAtNzMsOCArNzMs
NiBAQCBwcml2YXRlOgogICAgICAgICBDcmVhdGVJZk5vbkV4aXN0ZW50LAogICAgICAgICBTa2lw
SWZOb25FeGlzdGVudAogICAgIH07Ci0KLSAgICBSZWY8V29ya1F1ZXVlPiBtX3F1ZXVlOwogICAg
IAogICAgIC8vIEl0IGlzIG5vdCBzYWZlIHRvIHVzZSB0aGlzIG1lbWJlciBmcm9tIGEgYmFja2dy
b3VuZCB0aHJlYWQsIGNhbGwgbG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkgaW5zdGVhZC4KICAgICBj
b25zdCBTdHJpbmcgbV9sb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcApp
bmRleCBhMTdjNTc5Y2JhYTU3ZTE5MjUxYTYzNDBiZWRiZDFlYWRiN2Q2OTgyLi42ZmUzMTIzNjBm
NjI0YjZkOGYwYzE3ZDM5MWViNzNlM2JhYzc4N2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAKQEAg
LTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJMb2NhbFN0b3JhZ2VEYXRhYmFzZS5oIgogI2luY2x1
ZGUgIkxvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVh
TWFwTWVzc2FnZXMuaCIKLSNpbmNsdWRlICJTdG9yYWdlTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5j
bHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdp
bkRhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luSGFzaC5oPgpAQCAtMzcs
NTMgKzM2LDEwIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0RW5jb2RpbmcuaD4KICNpbmNsdWRl
IDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgotI2luY2x1ZGUgPHd0Zi90aHJl
YWRzL0JpbmFyeVNlbWFwaG9yZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCi1jbGFzcyBTdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUFyZWEgOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VBcmVhPiB7Ci1w
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTdG9yYWdlQXJlYT4gY3JlYXRlKExvY2FsU3RvcmFnZU5h
bWVzcGFjZSosIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYsIHVuc2lnbmVkIHF1b3RhSW5CeXRl
cyk7Ci0gICAgflN0b3JhZ2VBcmVhKCk7Ci0KLSAgICBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9zZWN1cml0eU9yaWdp
bjsgfQotCi0gICAgdm9pZCBhZGRMaXN0ZW5lcihJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCB1
aW50NjRfdCBzdG9yYWdlTWFwSUQpOwotICAgIHZvaWQgcmVtb3ZlTGlzdGVuZXIoSVBDOjpDb25u
ZWN0aW9uOjpVbmlxdWVJRCwgdWludDY0X3Qgc3RvcmFnZU1hcElEKTsKLSAgICBib29sIGhhc0xp
c3RlbmVyKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCkg
Y29uc3Q7Ci0KLSAgICBSZWY8U3RvcmFnZUFyZWE+IGNsb25lKCkgY29uc3Q7Ci0KLSAgICB2b2lk
IHNldEl0ZW0oSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBzb3VyY2VDb25uZWN0aW9uLCB1aW50
NjRfdCBzb3VyY2VTdG9yYWdlQXJlYUlELCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5n
JiB2YWx1ZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGJvb2wmIHF1b3RhRXhjZXB0aW9uKTsK
LSAgICB2b2lkIHNldEl0ZW1zKGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+Jik7Ci0gICAg
dm9pZCByZW1vdmVJdGVtKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgc291cmNlQ29ubmVjdGlv
biwgdWludDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0
IFN0cmluZyYgdXJsU3RyaW5nKTsKLSAgICB2b2lkIGNsZWFyKElQQzo6Q29ubmVjdGlvbjo6VW5p
cXVlSUQgc291cmNlQ29ubmVjdGlvbiwgdWludDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwgY29u
c3QgU3RyaW5nJiB1cmxTdHJpbmcpOwotCi0gICAgY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmlu
Zz4mIGl0ZW1zKCkgY29uc3Q7Ci0gICAgdm9pZCBjbGVhcigpOwotCi0gICAgYm9vbCBpc0VwaGVt
ZXJhbCgpIGNvbnN0IHsgcmV0dXJuICFtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZTsgfQotCi0gICAg
dm9pZCBvcGVuRGF0YWJhc2VBbmRJbXBvcnRJdGVtc0lmTmVlZGVkKCkgY29uc3Q7Ci0KLXByaXZh
dGU6Ci0gICAgZXhwbGljaXQgU3RvcmFnZUFyZWEoTG9jYWxTdG9yYWdlTmFtZXNwYWNlKiwgY29u
c3QgU2VjdXJpdHlPcmlnaW5EYXRhJiwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKLQotICAgIHZv
aWQgZGlzcGF0Y2hFdmVudHMoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBzb3VyY2VDb25uZWN0
aW9uLCB1aW50NjRfdCBzb3VyY2VTdG9yYWdlQXJlYUlELCBjb25zdCBTdHJpbmcmIGtleSwgY29u
c3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgU3RyaW5n
JiB1cmxTdHJpbmcpIGNvbnN0OwotCi0gICAgLy8gV2lsbCBiZSBudWxsIGlmIHRoZSBzdG9yYWdl
IGFyZWEgYmVsb25ncyB0byBhIHNlc3Npb24gc3RvcmFnZSBuYW1lc3BhY2Ugb3IgdGhlIHN0b3Jh
Z2UgYXJlYSBpcyBpbiBhbiBlcGhlbWVyYWwgc2Vzc2lvbi4KLSAgICBXZWFrUHRyPExvY2FsU3Rv
cmFnZU5hbWVzcGFjZT4gbV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2U7Ci0gICAgbXV0YWJsZSBSZWZQ
dHI8TG9jYWxTdG9yYWdlRGF0YWJhc2U+IG1fbG9jYWxTdG9yYWdlRGF0YWJhc2U7Ci0gICAgbXV0
YWJsZSBib29sIG1fZGlkSW1wb3J0SXRlbXNGcm9tRGF0YWJhc2UgeyBmYWxzZSB9OwotCi0gICAg
U2VjdXJpdHlPcmlnaW5EYXRhIG1fc2VjdXJpdHlPcmlnaW47Ci0gICAgdW5zaWduZWQgbV9xdW90
YUluQnl0ZXM7Ci0KLSAgICBSZWZQdHI8U3RvcmFnZU1hcD4gbV9zdG9yYWdlTWFwOwotICAgIEhh
c2hTZXQ8c3RkOjpwYWlyPElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIHVpbnQ2NF90Pj4gbV9l
dmVudExpc3RlbmVyczsKLX07Ci0KIGNsYXNzIFN0b3JhZ2VNYW5hZ2VyOjpMb2NhbFN0b3JhZ2VO
YW1lc3BhY2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8TG9jYWxTdG9yYWdlTmFtZXNw
YWNlPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPExvY2FsU3RvcmFnZU5hbWVzcGFjZT4gewogcHVi
bGljOgogICAgIHN0YXRpYyBSZWY8TG9jYWxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGUoU3RvcmFn
ZU1hbmFnZXImLCB1aW50NjRfdCBzdG9yYWdlTWFuYWdlcklEKTsKQEAgLTk4LDcgKzU0LDYgQEAg
cHVibGljOgogICAgIHZvaWQgY2xlYXJBbGxTdG9yYWdlQXJlYXMoKTsKIAogICAgIFZlY3RvcjxT
ZWN1cml0eU9yaWdpbkRhdGE+IGVwaGVtZXJhbE9yaWdpbnMoKSBjb25zdDsKLSAgICB2b2lkIGNs
b25lVG8oTG9jYWxTdG9yYWdlTmFtZXNwYWNlJiBuZXdMb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOwog
CiBwcml2YXRlOgogICAgIExvY2FsU3RvcmFnZU5hbWVzcGFjZShTdG9yYWdlTWFuYWdlciYsIHVp
bnQ2NF90IHN0b3JhZ2VNYW5hZ2VySUQpOwpAQCAtMTY1LDYgKzEyMCwxMiBAQCBwcml2YXRlOgog
ICAgIEhhc2hNYXA8U2VjdXJpdHlPcmlnaW5EYXRhLCBSZWZQdHI8U3RvcmFnZUFyZWE+PiBtX3N0
b3JhZ2VBcmVhTWFwOwogfTsKIAorc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlU3RvcmFnZUFyZWFJ
ZGVudGlmaWVyKCkKK3sKKyAgICBzdGF0aWMgdWludDY0X3QgaWRlbnRpZmllcjsKKyAgICByZXR1
cm4gKytpZGVudGlmaWVyOworfQorCiBhdXRvIFN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQXJlYTo6
Y3JlYXRlKExvY2FsU3RvcmFnZU5hbWVzcGFjZSogbG9jYWxTdG9yYWdlTmFtZXNwYWNlLCBjb25z
dCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luLCB1bnNpZ25lZCBxdW90YUluQnl0
ZXMpIC0+IFJlZjxTdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUFyZWE+CiB7CiAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU3RvcmFnZUFyZWEobG9jYWxTdG9yYWdlTmFtZXNwYWNlLCBzZWN1cml0eU9y
aWdpbiwgcXVvdGFJbkJ5dGVzKSk7CkBAIC0xNzUsMzMgKzEzNiwzMSBAQCBTdG9yYWdlTWFuYWdl
cjo6U3RvcmFnZUFyZWE6OlN0b3JhZ2VBcmVhKExvY2FsU3RvcmFnZU5hbWVzcGFjZSogbG9jYWxT
dG9yYWdlTmFtZQogICAgICwgbV9zZWN1cml0eU9yaWdpbihzZWN1cml0eU9yaWdpbikKICAgICAs
IG1fcXVvdGFJbkJ5dGVzKHF1b3RhSW5CeXRlcykKICAgICAsIG1fc3RvcmFnZU1hcChTdG9yYWdl
TWFwOjpjcmVhdGUobV9xdW90YUluQnl0ZXMpKQorICAgICwgbV9pZGVudGlmaWVyKGdlbmVyYXRl
U3RvcmFnZUFyZWFJZGVudGlmaWVyKCkpCiB7CiB9CiAKIFN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdl
QXJlYTo6flN0b3JhZ2VBcmVhKCkKIHsKLSAgICBBU1NFUlQobV9ldmVudExpc3RlbmVycy5pc0Vt
cHR5KCkpOwogICAgIEFTU0VSVCghbV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOwogCiAgICAgaWYg
KG1fbG9jYWxTdG9yYWdlRGF0YWJhc2UpCiAgICAgICAgIG1fbG9jYWxTdG9yYWdlRGF0YWJhc2Ut
PmNsb3NlKCk7CiB9CiAKLXZvaWQgU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VBcmVhOjphZGRMaXN0
ZW5lcihJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGNvbm5lY3Rpb25JRCwgdWludDY0X3Qgc3Rv
cmFnZU1hcElEKQordm9pZCBTdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUFyZWE6OmFkZExpc3RlbmVy
KElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgY29ubmVjdGlvbklEKQogewotICAgIEFTU0VSVCgh
bV9ldmVudExpc3RlbmVycy5jb250YWlucyhzdGQ6Om1ha2VfcGFpcihjb25uZWN0aW9uSUQsIHN0
b3JhZ2VNYXBJRCkpKTsKLSAgICBtX2V2ZW50TGlzdGVuZXJzLmFkZChzdGQ6Om1ha2VfcGFpcihj
b25uZWN0aW9uSUQsIHN0b3JhZ2VNYXBJRCkpOwotfQorICAgIEFTU0VSVCghbV9ldmVudExpc3Rl
bmVycy5jb250YWlucyhjb25uZWN0aW9uSUQpKTsKIAotdm9pZCBTdG9yYWdlTWFuYWdlcjo6U3Rv
cmFnZUFyZWE6OnJlbW92ZUxpc3RlbmVyKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgY29ubmVj
dGlvbklELCB1aW50NjRfdCBzdG9yYWdlTWFwSUQpCi17Ci0gICAgQVNTRVJUKGlzRXBoZW1lcmFs
KCkgfHwgbV9ldmVudExpc3RlbmVycy5jb250YWlucyhzdGQ6Om1ha2VfcGFpcihjb25uZWN0aW9u
SUQsIHN0b3JhZ2VNYXBJRCkpKTsKLSAgICBtX2V2ZW50TGlzdGVuZXJzLnJlbW92ZShzdGQ6Om1h
a2VfcGFpcihjb25uZWN0aW9uSUQsIHN0b3JhZ2VNYXBJRCkpOworICAgIGlmIChtX2V2ZW50TGlz
dGVuZXJzLmlzRW1wdHkoKSAmJiAhaXNFcGhlbWVyYWwoKSkKKyAgICAgICAgb3BlbkRhdGFiYXNl
QW5kSW1wb3J0SXRlbXNJZk5lZWRlZCgpOworCisgICAgbV9ldmVudExpc3RlbmVycy5hZGQoY29u
bmVjdGlvbklEKTsKIH0KIAotYm9vbCBTdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUFyZWE6Omhhc0xp
c3RlbmVyKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgY29ubmVjdGlvbklELCB1aW50NjRfdCBz
dG9yYWdlTWFwSUQpIGNvbnN0Cit2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQXJlYTo6cmVt
b3ZlTGlzdGVuZXIoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uSUQpCiB7Ci0g
ICAgcmV0dXJuIG1fZXZlbnRMaXN0ZW5lcnMuY29udGFpbnMoc3RkOjptYWtlX3BhaXIoY29ubmVj
dGlvbklELCBzdG9yYWdlTWFwSUQpKTsKKyAgICBtX2V2ZW50TGlzdGVuZXJzLnJlbW92ZShjb25u
ZWN0aW9uSUQpOwogfQogCiBSZWY8U3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VBcmVhPiBTdG9yYWdl
TWFuYWdlcjo6U3RvcmFnZUFyZWE6OmNsb25lKCkgY29uc3QKQEAgLTIzMywyNCArMTkyLDYgQEAg
dm9pZCBTdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUFyZWE6OnNldEl0ZW0oSVBDOjpDb25uZWN0aW9u
OjpVbmlxdWVJRCBzb3VyY2VDb25uZWMKICAgICBkaXNwYXRjaEV2ZW50cyhzb3VyY2VDb25uZWN0
aW9uLCBzb3VyY2VTdG9yYWdlQXJlYUlELCBrZXksIG9sZFZhbHVlLCB2YWx1ZSwgdXJsU3RyaW5n
KTsKIH0KIAotdm9pZCBTdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUFyZWE6OnNldEl0ZW1zKGNvbnN0
IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBpdGVtcykKLXsKLSAgICAvLyBJbXBvcnQgaXRlbXMg
ZnJvbSB3ZWIgcHJvY2VzcyBpZiBpdGVtcyBhcmUgbm90IHN0b3JlZCBvbiBkaXNrLgotICAgIGlm
ICghaXNFcGhlbWVyYWwoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZm9yIChhdXRvJiBpdGVt
IDogaXRlbXMpIHsKLSAgICAgICAgU3RyaW5nIG9sZFZhbHVlOwotICAgICAgICBib29sIHF1b3Rh
RXhjZXB0aW9uOwotICAgICAgICBhdXRvIG5ld1N0b3JhZ2VNYXAgPSBtX3N0b3JhZ2VNYXAtPnNl
dEl0ZW0oaXRlbS5rZXksIGl0ZW0udmFsdWUsIG9sZFZhbHVlLCBxdW90YUV4Y2VwdGlvbik7Ci0g
ICAgICAgIGlmIChuZXdTdG9yYWdlTWFwKQotICAgICAgICAgICAgbV9zdG9yYWdlTWFwID0gV1RG
TW92ZShuZXdTdG9yYWdlTWFwKTsKLSAgICAgICAgCi0gICAgICAgIGlmIChxdW90YUV4Y2VwdGlv
bikKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9Ci19Ci0KIHZvaWQgU3RvcmFnZU1hbmFnZXI6
OlN0b3JhZ2VBcmVhOjpyZW1vdmVJdGVtKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgc291cmNl
Q29ubmVjdGlvbiwgdWludDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwgY29uc3QgU3RyaW5nJiBr
ZXksIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQogewogICAgIG9wZW5EYXRhYmFzZUFuZEltcG9y
dEl0ZW1zSWZOZWVkZWQoKTsKQEAgLTMwMSw3ICsyNDIsNyBAQCB2b2lkIFN0b3JhZ2VNYW5hZ2Vy
OjpTdG9yYWdlQXJlYTo6Y2xlYXIoKQogICAgIH0KIAogICAgIGZvciAoYXV0byBpdCA9IG1fZXZl
bnRMaXN0ZW5lcnMuYmVnaW4oKSwgZW5kID0gbV9ldmVudExpc3RlbmVycy5lbmQoKTsgaXQgIT0g
ZW5kOyArK2l0KSB7Ci0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY29ubmVjdGlv
bklEID0gaXQtPmZpcnN0LCBkZXN0aW5hdGlvblN0b3JhZ2VBcmVhSUQgPSBpdC0+c2Vjb25kXSB7
CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY29ubmVjdGlvbklEID0gKml0LCBk
ZXN0aW5hdGlvblN0b3JhZ2VBcmVhSUQgPSBtX2lkZW50aWZpZXJdIHsKICAgICAgICAgICAgIGlm
IChhdXRvKiBjb25uZWN0aW9uID0gSVBDOjpDb25uZWN0aW9uOjpjb25uZWN0aW9uKGNvbm5lY3Rp
b25JRCkpCiAgICAgICAgICAgICAgICAgY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U3RvcmFn
ZUFyZWFNYXA6OkNsZWFyQ2FjaGUoKSwgZGVzdGluYXRpb25TdG9yYWdlQXJlYUlEKTsKICAgICAg
ICAgfSk7CkBAIC0zMTQsOSArMjU1LDEwIEBAIHZvaWQgU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VB
cmVhOjpvcGVuRGF0YWJhc2VBbmRJbXBvcnRJdGVtc0lmTmVlZGVkKCkgY29uc3QKICAgICAgICAg
cmV0dXJuOwogCiAgICAgQVNTRVJUKG1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlLT5zdG9yYWdlTWFu
YWdlcigpLT5tX2xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcik7CisgICAgQVNTRVJUKG1fcXVl
dWUpOwogICAgIC8vIFdlIG9wZW4gdGhlIGRhdGFiYXNlIGhlcmUgZXZlbiBpZiB3ZSd2ZSBhbHJl
YWR5IGltcG9ydGVkIG91ciBpdGVtcyB0byBlbnN1cmUgdGhhdCB0aGUgZGF0YWJhc2UgaXMgb3Bl
biBpZiB3ZSBuZWVkIHRvIHdyaXRlIHRvIGl0LgogICAgIGlmICghbV9sb2NhbFN0b3JhZ2VEYXRh
YmFzZSkKLSAgICAgICAgbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZSA9IExvY2FsU3RvcmFnZURhdGFi
YXNlOjpjcmVhdGUobV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPnN0b3JhZ2VNYW5hZ2VyKCktPm1f
cXVldWUuY29weVJlZigpLCAqbV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPnN0b3JhZ2VNYW5hZ2Vy
KCktPm1fbG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLCBtX3NlY3VyaXR5T3JpZ2luKTsKKyAg
ICAgICAgbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZSA9IExvY2FsU3RvcmFnZURhdGFiYXNlOjpjcmVh
dGUoKm1fcXVldWUsICptX2xvY2FsU3RvcmFnZU5hbWVzcGFjZS0+c3RvcmFnZU1hbmFnZXIoKS0+
bV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIsIG1fc2VjdXJpdHlPcmlnaW4pOwogCiAgICAg
aWYgKG1fZGlkSW1wb3J0SXRlbXNGcm9tRGF0YWJhc2UpCiAgICAgICAgIHJldHVybjsKQEAgLTMy
OCwyMiArMjcwLDI4IEBAIHZvaWQgU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VBcmVhOjpvcGVuRGF0
YWJhc2VBbmRJbXBvcnRJdGVtc0lmTmVlZGVkKCkgY29uc3QKIHZvaWQgU3RvcmFnZU1hbmFnZXI6
OlN0b3JhZ2VBcmVhOjpkaXNwYXRjaEV2ZW50cyhJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIHNv
dXJjZUNvbm5lY3Rpb24sIHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIGNvbnN0IFN0cmlu
ZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBj
b25zdCBTdHJpbmcmIHVybFN0cmluZykgY29uc3QKIHsKICAgICBmb3IgKGF1dG8gaXQgPSBtX2V2
ZW50TGlzdGVuZXJzLmJlZ2luKCksIGVuZCA9IG1fZXZlbnRMaXN0ZW5lcnMuZW5kKCk7IGl0ICE9
IGVuZDsgKytpdCkgewotICAgICAgICBzb3VyY2VTdG9yYWdlQXJlYUlEID0gaXQtPmZpcnN0ID09
IHNvdXJjZUNvbm5lY3Rpb24gPyBzb3VyY2VTdG9yYWdlQXJlYUlEIDogMDsKKyAgICAgICAgc291
cmNlU3RvcmFnZUFyZWFJRCA9ICppdCA9PSBzb3VyY2VDb25uZWN0aW9uID8gc291cmNlU3RvcmFn
ZUFyZWFJRCA6IDA7CiAKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb25uZWN0
aW9uSUQgPSBpdC0+Zmlyc3QsIHNvdXJjZVN0b3JhZ2VBcmVhSUQsIGRlc3RpbmF0aW9uU3RvcmFn
ZUFyZWFJRCA9IGl0LT5zZWNvbmQsIGtleSA9IGtleS5pc29sYXRlZENvcHkoKSwgb2xkVmFsdWUg
PSBvbGRWYWx1ZS5pc29sYXRlZENvcHkoKSwgbmV3VmFsdWUgPSBuZXdWYWx1ZS5pc29sYXRlZENv
cHkoKSwgdXJsU3RyaW5nID0gdXJsU3RyaW5nLmlzb2xhdGVkQ29weSgpXSB7CisgICAgICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY29ubmVjdGlvbklEID0gKml0LCBzb3VyY2VTdG9yYWdl
QXJlYUlELCBkZXN0aW5hdGlvblN0b3JhZ2VBcmVhSUQgPSBtX2lkZW50aWZpZXIsIGtleSA9IGtl
eS5pc29sYXRlZENvcHkoKSwgb2xkVmFsdWUgPSBvbGRWYWx1ZS5pc29sYXRlZENvcHkoKSwgbmV3
VmFsdWUgPSBuZXdWYWx1ZS5pc29sYXRlZENvcHkoKSwgdXJsU3RyaW5nID0gdXJsU3RyaW5nLmlz
b2xhdGVkQ29weSgpXSB7CiAgICAgICAgICAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IElQQzo6
Q29ubmVjdGlvbjo6Y29ubmVjdGlvbihjb25uZWN0aW9uSUQpKQogICAgICAgICAgICAgICAgIGNv
bm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VBcmVhTWFwOjpEaXNwYXRjaFN0b3JhZ2VF
dmVudChzb3VyY2VTdG9yYWdlQXJlYUlELCBrZXksIG9sZFZhbHVlLCBuZXdWYWx1ZSwgdXJsU3Ry
aW5nKSwgZGVzdGluYXRpb25TdG9yYWdlQXJlYUlEKTsKICAgICAgICAgfSk7CiAgICAgfQogfQog
Cit2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQXJlYTo6c3luY1RvRGF0YWJhc2UoKQorewor
ICAgIGlmICghbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
bV9sb2NhbFN0b3JhZ2VEYXRhYmFzZS0+dXBkYXRlRGF0YWJhc2UoKTsKK30KKwogUmVmPFN0b3Jh
Z2VNYW5hZ2VyOjpMb2NhbFN0b3JhZ2VOYW1lc3BhY2U+IFN0b3JhZ2VNYW5hZ2VyOjpMb2NhbFN0
b3JhZ2VOYW1lc3BhY2U6OmNyZWF0ZShTdG9yYWdlTWFuYWdlciYgc3RvcmFnZU1hbmFnZXIsIHVp
bnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBM
b2NhbFN0b3JhZ2VOYW1lc3BhY2Uoc3RvcmFnZU1hbmFnZXIsIHN0b3JhZ2VOYW1lc3BhY2VJRCkp
OwogfQogCi0vLyBGSVhNRTogVGhlIHF1b3RhIHZhbHVlIGlzIGNvcGllZCBmcm9tIEdyb3VwU2V0
dGluZ3MuY3BwLgotLy8gV2Ugc2hvdWxkIGludmVzdGlnYXRlIGEgd2F5IHRvIHNoYXJlIGl0IHdp
dGggV2ViQ29yZS4KIFN0b3JhZ2VNYW5hZ2VyOjpMb2NhbFN0b3JhZ2VOYW1lc3BhY2U6OkxvY2Fs
U3RvcmFnZU5hbWVzcGFjZShTdG9yYWdlTWFuYWdlciYgc3RvcmFnZU1hbmFnZXIsIHVpbnQ2NF90
IHN0b3JhZ2VOYW1lc3BhY2VJRCkKICAgICA6IG1fc3RvcmFnZU1hbmFnZXIoc3RvcmFnZU1hbmFn
ZXIpCiAgICAgLCBtX3F1b3RhSW5CeXRlcyhsb2NhbFN0b3JhZ2VEYXRhYmFzZVF1b3RhSW5CeXRl
cykKQEAgLTM1NCw3ICszMDIsNyBAQCBTdG9yYWdlTWFuYWdlcjo6TG9jYWxTdG9yYWdlTmFtZXNw
YWNlOjp+TG9jYWxTdG9yYWdlTmFtZXNwYWNlKCkKIHsKIH0KIAotYXV0byBTdG9yYWdlTWFuYWdl
cjo6TG9jYWxTdG9yYWdlTmFtZXNwYWNlOjpnZXRPckNyZWF0ZVN0b3JhZ2VBcmVhKFNlY3VyaXR5
T3JpZ2luRGF0YSYmIHNlY3VyaXR5T3JpZ2luLCBJc0VwaGVtZXJhbCBpc0VwaGVtZXJhbCkgLT4g
UmVmPFN0b3JhZ2VBcmVhPgorUmVmPFN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQXJlYT4gU3RvcmFn
ZU1hbmFnZXI6OkxvY2FsU3RvcmFnZU5hbWVzcGFjZTo6Z2V0T3JDcmVhdGVTdG9yYWdlQXJlYShT
ZWN1cml0eU9yaWdpbkRhdGEmJiBzZWN1cml0eU9yaWdpbiwgSXNFcGhlbWVyYWwgaXNFcGhlbWVy
YWwpCiB7CiAgICAgcmV0dXJuICptX3N0b3JhZ2VBcmVhTWFwLmVuc3VyZShzZWN1cml0eU9yaWdp
biwgWyZdKCkgbXV0YWJsZSB7CiAgICAgICAgIHJldHVybiBTdG9yYWdlQXJlYTo6Y3JlYXRlKGlz
RXBoZW1lcmFsID09IElzRXBoZW1lcmFsOjpZZXMgPyBudWxscHRyIDogdGhpcywgV1RGTW92ZShz
ZWN1cml0eU9yaWdpbiksIG1fcXVvdGFJbkJ5dGVzKTsKQEAgLTM4NCwxMiArMzMyLDYgQEAgVmVj
dG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4gU3RvcmFnZU1hbmFnZXI6OkxvY2FsU3RvcmFnZU5hbWVz
cGFjZTo6ZXBoZW1lcmFsT3JpZ2kKICAgICByZXR1cm4gb3JpZ2luczsKIH0KIAotdm9pZCBTdG9y
YWdlTWFuYWdlcjo6TG9jYWxTdG9yYWdlTmFtZXNwYWNlOjpjbG9uZVRvKExvY2FsU3RvcmFnZU5h
bWVzcGFjZSYgbmV3TG9jYWxTdG9yYWdlTmFtZXNwYWNlKQotewotICAgIGZvciAoYXV0byYgcGFp
ciA6IG1fc3RvcmFnZUFyZWFNYXApCi0gICAgICAgIG5ld0xvY2FsU3RvcmFnZU5hbWVzcGFjZS5t
X3N0b3JhZ2VBcmVhTWFwLmFkZChwYWlyLmtleSwgcGFpci52YWx1ZS0+Y2xvbmUoKSk7Ci19Ci0K
IGNsYXNzIFN0b3JhZ2VNYW5hZ2VyOjpTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZT4gewogcHVibGljOgog
ICAgIHN0YXRpYyBSZWY8U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZSh1bnNpZ25lZCBx
dW90YUluQnl0ZXMpOwpAQCAtMzk3LDEwICszMzksNiBAQCBwdWJsaWM6CiAKICAgICBib29sIGlz
RW1wdHkoKSBjb25zdCB7IHJldHVybiBtX3N0b3JhZ2VBcmVhTWFwLmlzRW1wdHkoKTsgfQogCi0g
ICAgY29uc3QgSGFzaFNldDxJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEPiYgYWxsb3dlZENvbm5l
Y3Rpb25zKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd2VkQ29ubmVjdGlvbnM7IH0KLSAgICB2b2lk
IGFkZEFsbG93ZWRDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQpOwotICAgIHZv
aWQgcmVtb3ZlQWxsb3dlZENvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCk7Ci0K
ICAgICBSZWY8U3RvcmFnZUFyZWE+IGdldE9yQ3JlYXRlU3RvcmFnZUFyZWEoU2VjdXJpdHlPcmln
aW5EYXRhJiYpOwogCiAgICAgdm9pZCBjbG9uZVRvKFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlJiBu
ZXdTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSk7CkBAIC00MzMsNyArMzcxLDYgQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICBleHBsaWNpdCBTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBx
dW90YUluQnl0ZXMpOwogCi0gICAgSGFzaFNldDxJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEPiBt
X2FsbG93ZWRDb25uZWN0aW9uczsKICAgICB1bnNpZ25lZCBtX3F1b3RhSW5CeXRlczsKIAogICAg
IEhhc2hNYXA8U2VjdXJpdHlPcmlnaW5EYXRhLCBSZWZQdHI8U3RvcmFnZUFyZWE+PiBtX3N0b3Jh
Z2VBcmVhTWFwOwpAQCAtNDUzLDE4ICszOTAsNyBAQCBTdG9yYWdlTWFuYWdlcjo6U2Vzc2lvblN0
b3JhZ2VOYW1lc3BhY2U6On5TZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSgpCiB7CiB9CiAKLXZvaWQg
U3RvcmFnZU1hbmFnZXI6OlNlc3Npb25TdG9yYWdlTmFtZXNwYWNlOjphZGRBbGxvd2VkQ29ubmVj
dGlvbihJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGFsbG93ZWRDb25uZWN0aW9uKQotewotICAg
IG1fYWxsb3dlZENvbm5lY3Rpb25zLmFkZChhbGxvd2VkQ29ubmVjdGlvbik7Ci19Ci0KLQotdm9p
ZCBTdG9yYWdlTWFuYWdlcjo6U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2U6OnJlbW92ZUFsbG93ZWRD
b25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgYWxsb3dlZENvbm5lY3Rpb24pCi17
Ci0gICAgQVNTRVJUKG1fYWxsb3dlZENvbm5lY3Rpb25zLmNvbnRhaW5zKGFsbG93ZWRDb25uZWN0
aW9uKSk7Ci0gICAgbV9hbGxvd2VkQ29ubmVjdGlvbnMucmVtb3ZlKGFsbG93ZWRDb25uZWN0aW9u
KTsKLX0KLWF1dG8gU3RvcmFnZU1hbmFnZXI6OlNlc3Npb25TdG9yYWdlTmFtZXNwYWNlOjpnZXRP
ckNyZWF0ZVN0b3JhZ2VBcmVhKFNlY3VyaXR5T3JpZ2luRGF0YSYmIHNlY3VyaXR5T3JpZ2luKSAt
PiBSZWY8U3RvcmFnZUFyZWE+CitSZWY8U3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VBcmVhPiBTdG9y
YWdlTWFuYWdlcjo6U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2U6OmdldE9yQ3JlYXRlU3RvcmFnZUFy
ZWEoU2VjdXJpdHlPcmlnaW5EYXRhJiYgc2VjdXJpdHlPcmlnaW4pCiB7CiAgICAgcmV0dXJuICpt
X3N0b3JhZ2VBcmVhTWFwLmVuc3VyZShzZWN1cml0eU9yaWdpbiwgW3RoaXMsICZzZWN1cml0eU9y
aWdpbl0oKSBtdXRhYmxlIHsKICAgICAgICAgcmV0dXJuIFN0b3JhZ2VBcmVhOjpjcmVhdGUobnVs
bHB0ciwgV1RGTW92ZShzZWN1cml0eU9yaWdpbiksIG1fcXVvdGFJbkJ5dGVzKTsKQEAgLTQ4NSw0
OTkgKzQxMSwxNzggQEAgUmVmPFN0b3JhZ2VNYW5hZ2VyPiBTdG9yYWdlTWFuYWdlcjo6Y3JlYXRl
KFN0cmluZyYmIGxvY2FsU3RvcmFnZURpcmVjdG9yeSkKIH0KIAogU3RvcmFnZU1hbmFnZXI6OlN0
b3JhZ2VNYW5hZ2VyKFN0cmluZyYmIGxvY2FsU3RvcmFnZURpcmVjdG9yeSkKLSAgICA6IG1fcXVl
dWUoV29ya1F1ZXVlOjpjcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuU3RvcmFnZU1hbmFnZXIiKSkK
IHsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIEFTU0VSVCghUnVuTG9vcDo6
aXNNYWluKCkpOwogCiAgICAgLy8gTWFrZSBzdXJlIHRoZSBlbmNvZGluZyBpcyBpbml0aWFsaXpl
ZCBiZWZvcmUgd2Ugc3RhcnQgZGlzcGF0Y2hpbmcgdGhpbmdzIHRvIHRoZSBxdWV1ZS4KICAgICBV
VEY4RW5jb2RpbmcoKTsKICAgICBpZiAoIWxvY2FsU3RvcmFnZURpcmVjdG9yeS5pc051bGwoKSkK
LSAgICAgICAgbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIgPSBMb2NhbFN0b3JhZ2VEYXRh
YmFzZVRyYWNrZXI6OmNyZWF0ZShtX3F1ZXVlLmNvcHlSZWYoKSwgV1RGTW92ZShsb2NhbFN0b3Jh
Z2VEaXJlY3RvcnkpKTsKKyAgICAgICAgbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIgPSBM
b2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OmNyZWF0ZShXVEZNb3ZlKGxvY2FsU3RvcmFnZURp
cmVjdG9yeSkpOwogfQogCiBTdG9yYWdlTWFuYWdlcjo6flN0b3JhZ2VNYW5hZ2VyKCkKIHsKLSAg
ICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWlu
KCkpOwogfQogCiB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVz
cGFjZSh1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcykK
IHsKLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCBzdG9yYWdlTmFtZXNwYWNlSUQsIHF1b3RhSW5CeXRlc10oKSBtdXRhYmxlIHsKLSAg
ICAgICAgbV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMuZW5zdXJlKHN0b3JhZ2VOYW1lc3BhY2VJ
RCwgW3F1b3RhSW5CeXRlc10gewotICAgICAgICAgICAgcmV0dXJuIFNlc3Npb25TdG9yYWdlTmFt
ZXNwYWNlOjpjcmVhdGUocXVvdGFJbkJ5dGVzKTsKLSAgICAgICAgfSk7CisgICAgQVNTRVJUKCFS
dW5Mb29wOjppc01haW4oKSk7CisgICAgbV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMuZW5zdXJl
KHN0b3JhZ2VOYW1lc3BhY2VJRCwgW3F1b3RhSW5CeXRlc10geworICAgICAgICByZXR1cm4gU2Vz
c2lvblN0b3JhZ2VOYW1lc3BhY2U6OmNyZWF0ZShxdW90YUluQnl0ZXMpOwogICAgIH0pOwogfQog
CiB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpkZXN0cm95U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodWlu
dDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlEKQogewotICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHN0b3JhZ2VOYW1lc3BhY2VJRF0gewot
ICAgICAgICBBU1NFUlQobV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMuY29udGFpbnMoc3RvcmFn
ZU5hbWVzcGFjZUlEKSk7Ci0gICAgICAgIGlmIChhdXRvKiBzZXNzaW9uU3RvcmFnZU5hbWVzcGFj
ZSA9IG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLmdldChzdG9yYWdlTmFtZXNwYWNlSUQpKSB7
Ci0gICAgICAgICAgICBpZiAoc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UtPmFsbG93ZWRDb25uZWN0
aW9ucygpLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICBtX3Nlc3Npb25TdG9yYWdlTmFtZXNw
YWNlcy5yZW1vdmUoc3RvcmFnZU5hbWVzcGFjZUlEKTsKLSAgICAgICAgfQotICAgIH0pOwotfQot
Ci12b2lkIFN0b3JhZ2VNYW5hZ2VyOjphZGRBbGxvd2VkU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VD
b25uZWN0aW9uKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgSVBDOjpDb25uZWN0aW9uJiBh
bGxvd2VkQ29ubmVjdGlvbikKLXsKLSAgICBhdXRvIGFsbG93ZWRDb25uZWN0aW9uSUQgPSBhbGxv
d2VkQ29ubmVjdGlvbi51bmlxdWVJRCgpOwotICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9jb25uZWN0
aW9ucy5hZGQoYWxsb3dlZENvbm5lY3Rpb25JRCk7Ci0gICAgaWYgKGFkZFJlc3VsdC5pc05ld0Vu
dHJ5KQotICAgICAgICBhbGxvd2VkQ29ubmVjdGlvbi5hZGRXb3JrUXVldWVNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZXM6OlN0b3JhZ2VNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcXVl
dWUuZ2V0KCksIHRoaXMpOwotCi0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgYWxsb3dlZENvbm5lY3Rpb25JRCwgc3RvcmFnZU5hbWVz
cGFjZUlEXSgpIG11dGFibGUgewotICAgICAgICBBU1NFUlQobV9zZXNzaW9uU3RvcmFnZU5hbWVz
cGFjZXMuY29udGFpbnMoc3RvcmFnZU5hbWVzcGFjZUlEKSk7Ci0KLSAgICAgICAgbV9zZXNzaW9u
U3RvcmFnZU5hbWVzcGFjZXMuZ2V0KHN0b3JhZ2VOYW1lc3BhY2VJRCktPmFkZEFsbG93ZWRDb25u
ZWN0aW9uKGFsbG93ZWRDb25uZWN0aW9uSUQpOwotICAgIH0pOwotfQotCi12b2lkIFN0b3JhZ2VN
YW5hZ2VyOjpyZW1vdmVBbGxvd2VkU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0aW9uKHVp
bnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgSVBDOjpDb25uZWN0aW9uJiBhbGxvd2VkQ29ubmVj
dGlvbikKLXsKLSAgICBhdXRvIGFsbG93ZWRDb25uZWN0aW9uSUQgPSBhbGxvd2VkQ29ubmVjdGlv
bi51bmlxdWVJRCgpOwotICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIGFsbG93ZWRDb25uZWN0aW9uSUQsIHN0b3JhZ2VOYW1lc3BhY2VJ
RF0oKSBtdXRhYmxlIHsKLSAgICAgICAgQVNTRVJUKG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2Vz
LmNvbnRhaW5zKHN0b3JhZ2VOYW1lc3BhY2VJRCkpOwotICAgICAgICBpZiAoYXV0byogc2Vzc2lv
blN0b3JhZ2VOYW1lc3BhY2UgPSBtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlcy5nZXQoc3RvcmFn
ZU5hbWVzcGFjZUlEKSkKLSAgICAgICAgICAgIHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlLT5yZW1v
dmVBbGxvd2VkQ29ubmVjdGlvbihhbGxvd2VkQ29ubmVjdGlvbklEKTsKLSAgICB9KTsKKyAgICBB
U1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBBU1NFUlQobV9zZXNzaW9uU3RvcmFnZU5h
bWVzcGFjZXMuY29udGFpbnMoc3RvcmFnZU5hbWVzcGFjZUlEKSk7CisgICAgaWYgKGF1dG8qIHNl
c3Npb25TdG9yYWdlTmFtZXNwYWNlID0gbV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMuZ2V0KHN0
b3JhZ2VOYW1lc3BhY2VJRCkpCisgICAgICAgIG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLnJl
bW92ZShzdG9yYWdlTmFtZXNwYWNlSUQpOwogfQogCiB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpjbG9u
ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgdWlu
dDY0X3QgbmV3U3RvcmFnZU5hbWVzcGFjZUlEKQogewotICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHN0b3JhZ2VOYW1lc3BhY2VJRCwg
bmV3U3RvcmFnZU5hbWVzcGFjZUlEXSB7Ci0gICAgICAgIFNlc3Npb25TdG9yYWdlTmFtZXNwYWNl
KiBzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSA9IG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLmdl
dChzdG9yYWdlTmFtZXNwYWNlSUQpOwotICAgICAgICBpZiAoIXNlc3Npb25TdG9yYWdlTmFtZXNw
YWNlKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogV2UgY2FuIGdldCBpbnRvIHRoaXMgc2l0dWF0
aW9uIGlmIHNvbWVvbmUgY2xvc2VzIHRoZSBvcmlnaW5hdGluZyBwYWdlIGZyb20gd2l0aGluIGEK
LSAgICAgICAgICAgIC8vIGNyZWF0ZU5ld1BhZ2UgY2FsbGJhY2suIFdlIGJhaWwgZm9yIG5vdywg
YnV0IHdlIHNob3VsZCByZWFsbHkgZmluZCBhIHdheSB0byBrZWVwIHRoZSBzZXNzaW9uIHN0b3Jh
Z2UgYWxpdmUKLSAgICAgICAgICAgIC8vIHNvIHdlIHdlJ2xsIGNsb25lIHRoZSBzZXNzaW9uIHN0
b3JhZ2UgY29ycmVjdGx5LgotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAg
ICAgU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UqIG5ld1Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlID0g
bV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMuZ2V0KG5ld1N0b3JhZ2VOYW1lc3BhY2VJRCk7Ci0g
ICAgICAgIEFTU0VSVChuZXdTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSk7Ci0KLSAgICAgICAgc2Vz
c2lvblN0b3JhZ2VOYW1lc3BhY2UtPmNsb25lVG8oKm5ld1Nlc3Npb25TdG9yYWdlTmFtZXNwYWNl
KTsKLQotICAgICAgICBpZiAoIW1fbG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyKSB7Ci0gICAg
ICAgICAgICBpZiAoYXV0byogbG9jYWxTdG9yYWdlTmFtZXNwYWNlID0gbV9sb2NhbFN0b3JhZ2VO
YW1lc3BhY2VzLmdldChzdG9yYWdlTmFtZXNwYWNlSUQpKSB7Ci0gICAgICAgICAgICAgICAgTG9j
YWxTdG9yYWdlTmFtZXNwYWNlKiBuZXdsb2NhbFN0b3JhZ2VOYW1lc3BhY2UgPSBnZXRPckNyZWF0
ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZShuZXdTdG9yYWdlTmFtZXNwYWNlSUQpOwotICAgICAgICAg
ICAgICAgIGxvY2FsU3RvcmFnZU5hbWVzcGFjZS0+Y2xvbmVUbygqbmV3bG9jYWxTdG9yYWdlTmFt
ZXNwYWNlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0pOwotfQorICAgIEFTU0VS
VCghUnVuTG9vcDo6aXNNYWluKCkpOworICAgIFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKiBzZXNz
aW9uU3RvcmFnZU5hbWVzcGFjZSA9IG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLmdldChzdG9y
YWdlTmFtZXNwYWNlSUQpOworICAgIGlmICghc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UpCisgICAg
ICAgIHJldHVybjsKIAotdm9pZCBTdG9yYWdlTWFuYWdlcjo6cHJvY2Vzc0RpZENsb3NlQ29ubmVj
dGlvbihJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCi17Ci0gICAgaWYgKG1fY29ubmVjdGlv
bnMucmVtb3ZlKGNvbm5lY3Rpb24udW5pcXVlSUQoKSkpCi0gICAgICAgIGNvbm5lY3Rpb24ucmVt
b3ZlV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdlcjo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpKTsKKyAgICBTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSogbmV3U2Vz
c2lvblN0b3JhZ2VOYW1lc3BhY2UgPSBnZXRPckNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNl
KG5ld1N0b3JhZ2VOYW1lc3BhY2VJRCk7CisgICAgQVNTRVJUKG5ld1Nlc3Npb25TdG9yYWdlTmFt
ZXNwYWNlKTsKIAotICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIGNvbm5lY3Rpb25JRCA9IGNvbm5lY3Rpb24udW5pcXVlSUQoKV0oKSBt
dXRhYmxlIHsKLSAgICAgICAgVmVjdG9yPHN0ZDo6cGFpcjxJUEM6OkNvbm5lY3Rpb246OlVuaXF1
ZUlELCB1aW50NjRfdD4+IGNvbm5lY3Rpb25BbmRTdG9yYWdlTWFwSURQYWlyc1RvUmVtb3ZlOwot
ICAgICAgICBmb3IgKGF1dG8mIHN0b3JhZ2VBcmVhIDogbV9zdG9yYWdlQXJlYXNCeUNvbm5lY3Rp
b24pIHsKLSAgICAgICAgICAgIGlmIChzdG9yYWdlQXJlYS5rZXkuZmlyc3QgIT0gY29ubmVjdGlv
bklEKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgCi0gICAgICAgICAg
ICBzdG9yYWdlQXJlYS52YWx1ZS0+cmVtb3ZlTGlzdGVuZXIoc3RvcmFnZUFyZWEua2V5LmZpcnN0
LCBzdG9yYWdlQXJlYS5rZXkuc2Vjb25kKTsKLSAgICAgICAgICAgIGNvbm5lY3Rpb25BbmRTdG9y
YWdlTWFwSURQYWlyc1RvUmVtb3ZlLmFwcGVuZChzdG9yYWdlQXJlYS5rZXkpOwotICAgICAgICB9
Ci0gICAgICAgIAotICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBjb25uZWN0aW9uQW5kU3RvcmFn
ZU1hcElEUGFpcnNUb1JlbW92ZSkKLSAgICAgICAgICAgIG1fc3RvcmFnZUFyZWFzQnlDb25uZWN0
aW9uLnJlbW92ZShwYWlyKTsKLQotICAgICAgICBWZWN0b3I8dWludDY0X3Q+IHNlc3Npb25TdG9y
YWdlTmFtZVNwYWNlSURzVG9SZW1vdmU7Ci0gICAgICAgIGZvciAoYXV0byYgc2Vzc2lvblN0b3Jh
Z2VOYW1lc3BhY2UgOiBtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlcykgewotICAgICAgICAgICAg
aWYgKHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlLnZhbHVlLT5hbGxvd2VkQ29ubmVjdGlvbnMoKS5j
b250YWlucyhjb25uZWN0aW9uSUQpKQotICAgICAgICAgICAgICAgIHNlc3Npb25TdG9yYWdlTmFt
ZXNwYWNlLnZhbHVlLT5yZW1vdmVBbGxvd2VkQ29ubmVjdGlvbihjb25uZWN0aW9uSUQpOwotICAg
ICAgICAgICAgCi0gICAgICAgICAgICBpZiAoc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UudmFsdWUt
PmFsbG93ZWRDb25uZWN0aW9ucygpLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICBzZXNzaW9u
U3RvcmFnZU5hbWVTcGFjZUlEc1RvUmVtb3ZlLmFwcGVuZChzZXNzaW9uU3RvcmFnZU5hbWVzcGFj
ZS5rZXkpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBmb3IgKGF1dG8gaWQgOiBzZXNz
aW9uU3RvcmFnZU5hbWVTcGFjZUlEc1RvUmVtb3ZlKQotICAgICAgICAgICAgbV9zZXNzaW9uU3Rv
cmFnZU5hbWVzcGFjZXMucmVtb3ZlKGlkKTsKLSAgICB9KTsKKyAgICBzZXNzaW9uU3RvcmFnZU5h
bWVzcGFjZS0+Y2xvbmVUbygqbmV3U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UpOwogfQogCiB2b2lk
IFN0b3JhZ2VNYW5hZ2VyOjpnZXRTZXNzaW9uU3RvcmFnZU9yaWdpbnMoRnVuY3Rpb248dm9pZChI
YXNoU2V0PFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7Ci0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0oKSBtdXRhYmxlIHsKLSAgICAgICAgSGFzaFNldDxTZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdp
bnM7Ci0KLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSA6
IG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLnZhbHVlcygpKSB7Ci0gICAgICAgICAgICBmb3Ig
KGF1dG8mIG9yaWdpbiA6IHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlLT5vcmlnaW5zKCkpCi0gICAg
ICAgICAgICAgICAgb3JpZ2lucy5hZGQob3JpZ2luKTsKLSAgICAgICAgfQotCi0gICAgICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbb3JpZ2lucyA9IFdURk1vdmUob3JpZ2lucyksIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0g
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKG9yaWdpbnMpKTsKLSAgICAgICAg
fSk7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisgICAgSGFzaFNldDxTZWN1cml0
eU9yaWdpbkRhdGE+IG9yaWdpbnM7CisgICAgZm9yIChjb25zdCBhdXRvJiBzZXNzaW9uU3RvcmFn
ZU5hbWVzcGFjZSA6IG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLnZhbHVlcygpKSB7CisgICAg
ICAgIGZvciAoYXV0byYgb3JpZ2luIDogc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UtPm9yaWdpbnMo
KSkKKyAgICAgICAgICAgIG9yaWdpbnMuYWRkKG9yaWdpbik7CisgICAgfQorICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbb3JpZ2lucyA9IFdURk1vdmUob3JpZ2lucyksIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUob3JpZ2lucykpOwogICAgIH0pOwogfQogCiB2b2lk
IFN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVTZXNzaW9uU3RvcmFnZU9yaWdpbnMoRnVuY3Rpb248dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgIGZvciAoYXV0byYg
c2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UgOiBtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlcy52YWx1
ZXMoKSkKLSAgICAgICAgICAgIHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlLT5jbGVhckFsbFN0b3Jh
Z2VBcmVhcygpOworICAgIGZvciAoYXV0byYgc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UgOiBtX3Nl
c3Npb25TdG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkKKyAgICAgICAgc2Vzc2lvblN0b3JhZ2VO
YW1lc3BhY2UtPmNsZWFyQWxsU3RvcmFnZUFyZWFzKCk7CiAKLSAgICAgICAgUnVuTG9vcDo6bWFp
bigpLmRpc3BhdGNoKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICB9KTsKKyAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQog
CiB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVTZXNzaW9uU3RvcmFnZUVudHJpZXNGb3JPcmln
aW5zKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiBvcmlnaW5zLCBG
dW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgbV9xdWV1ZS0+ZGlz
cGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29waWVkT3JpZ2lu
cyA9IGNyb3NzVGhyZWFkQ29weShvcmlnaW5zKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgZm9yIChhdXRvJiBvcmln
aW4gOiBjb3BpZWRPcmlnaW5zKSB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8mIHNlc3Npb25TdG9y
YWdlTmFtZXNwYWNlIDogbV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMudmFsdWVzKCkpCi0gICAg
ICAgICAgICAgICAgc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UtPmNsZWFyU3RvcmFnZUFyZWFzTWF0
Y2hpbmdPcmlnaW4ob3JpZ2luKTsKLSAgICAgICAgfQorICAgIGZvciAoYXV0byYgb3JpZ2luIDog
b3JpZ2lucykgeworICAgICAgICBmb3IgKGF1dG8mIHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlIDog
bV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMudmFsdWVzKCkpCisgICAgICAgICAgICBzZXNzaW9u
U3RvcmFnZU5hbWVzcGFjZS0+Y2xlYXJTdG9yYWdlQXJlYXNNYXRjaGluZ09yaWdpbihvcmlnaW4p
OworICAgIH0KIAotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwotICAgIH0pOworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgU3RvcmFnZU1hbmFnZXI6Omdl
dExvY2FsU3RvcmFnZU9yaWdpbnMoRnVuY3Rpb248dm9pZChIYXNoU2V0PFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgbV9xdWV1ZS0+
ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKLSAgICAg
ICAgSGFzaFNldDxTZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdpbnM7Ci0KLSAgICAgICAgaWYgKG1f
bG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyKSB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8mIG9y
aWdpbiA6IG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLT5vcmlnaW5zKCkpCisgICAgSGFz
aFNldDxTZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdpbnM7CisgICAgaWYgKG1fbG9jYWxTdG9yYWdl
RGF0YWJhc2VUcmFja2VyKSB7CisgICAgICAgIGZvciAoYXV0byYgb3JpZ2luIDogbV9sb2NhbFN0
b3JhZ2VEYXRhYmFzZVRyYWNrZXItPm9yaWdpbnMoKSkKKyAgICAgICAgICAgIG9yaWdpbnMuYWRk
KG9yaWdpbi5pc29sYXRlZENvcHkoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZm9yIChjb25z
dCBhdXRvJiBsb2NhbFN0b3JhZ2VOYW1lU3BhY2UgOiBtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZXMu
dmFsdWVzKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byYgb3JpZ2luIDogbG9jYWxTdG9yYWdl
TmFtZVNwYWNlLT5lcGhlbWVyYWxPcmlnaW5zKCkpCiAgICAgICAgICAgICAgICAgb3JpZ2lucy5h
ZGQob3JpZ2luLmlzb2xhdGVkQ29weSgpKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
IGZvciAoY29uc3QgYXV0byYgbG9jYWxTdG9yYWdlTmFtZVNwYWNlIDogbV9sb2NhbFN0b3JhZ2VO
YW1lc3BhY2VzLnZhbHVlcygpKSB7Ci0gICAgICAgICAgICAgICAgZm9yIChhdXRvJiBvcmlnaW4g
OiBsb2NhbFN0b3JhZ2VOYW1lU3BhY2UtPmVwaGVtZXJhbE9yaWdpbnMoKSkKLSAgICAgICAgICAg
ICAgICAgICAgb3JpZ2lucy5hZGQob3JpZ2luLmlzb2xhdGVkQ29weSgpKTsKLSAgICAgICAgICAg
IH0KICAgICAgICAgfQorICAgIH0KIAotICAgICAgICBmb3IgKGF1dG8mIHRyYW5zaWVudExvY2Fs
U3RvcmFnZU5hbWVzcGFjZSA6IG1fdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlcy52YWx1
ZXMoKSkgewotICAgICAgICAgICAgZm9yIChhdXRvJiBvcmlnaW4gOiB0cmFuc2llbnRMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UtPm9yaWdpbnMoKSkKLSAgICAgICAgICAgICAgICBvcmlnaW5zLmFkZChv
cmlnaW4uaXNvbGF0ZWRDb3B5KCkpOwotICAgICAgICB9CisgICAgZm9yIChhdXRvJiB0cmFuc2ll
bnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UgOiBtX3RyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFj
ZXMudmFsdWVzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvJiBvcmlnaW4gOiB0cmFuc2llbnRMb2Nh
bFN0b3JhZ2VOYW1lc3BhY2UtPm9yaWdpbnMoKSkKKyAgICAgICAgICAgIG9yaWdpbnMuYWRkKG9y
aWdpbi5pc29sYXRlZENvcHkoKSk7CisgICAgfQogCi0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5k
aXNwYXRjaChbb3JpZ2lucyA9IFdURk1vdmUob3JpZ2lucyksIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihXVEZNb3ZlKG9yaWdpbnMpKTsKLSAgICAgICAgfSk7CisgICAgUnVuTG9v
cDo6bWFpbigpLmRpc3BhdGNoKFtvcmlnaW5zID0gV1RGTW92ZShvcmlnaW5zKSwgY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShvcmlnaW5zKSk7CiAgICAgfSk7CiB9CiAKIHZv
aWQgU3RvcmFnZU1hbmFnZXI6OmdldExvY2FsU3RvcmFnZU9yaWdpbkRldGFpbHMoRnVuY3Rpb248
dm9pZChWZWN0b3I8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpPcmlnaW5EZXRhaWxzPiYm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICBWZWN0b3I8TG9jYWxT
dG9yYWdlRGF0YWJhc2VUcmFja2VyOjpPcmlnaW5EZXRhaWxzPiBvcmlnaW5EZXRhaWxzOwotICAg
ICAgICBpZiAobV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIpCi0gICAgICAgICAgICBvcmln
aW5EZXRhaWxzID0gbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXItPm9yaWdpbkRldGFpbHMo
KS5pc29sYXRlZENvcHkoKTsKKyAgICBWZWN0b3I8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2Vy
OjpPcmlnaW5EZXRhaWxzPiBvcmlnaW5EZXRhaWxzOworICAgIGlmIChtX2xvY2FsU3RvcmFnZURh
dGFiYXNlVHJhY2tlcikKKyAgICAgICAgb3JpZ2luRGV0YWlscyA9IG1fbG9jYWxTdG9yYWdlRGF0
YWJhc2VUcmFja2VyLT5vcmlnaW5EZXRhaWxzKCkuaXNvbGF0ZWRDb3B5KCk7CiAKLSAgICAgICAg
UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtvcmlnaW5EZXRhaWxzID0gV1RGTW92ZShvcmlnaW5E
ZXRhaWxzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0o
KSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUob3JpZ2lu
RGV0YWlscykpOwotICAgICAgICB9KTsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW29y
aWdpbkRldGFpbHMgPSBXVEZNb3ZlKG9yaWdpbkRldGFpbHMpLCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihXVEZNb3ZlKG9yaWdpbkRldGFpbHMpKTsKICAgICB9KTsKIH0KIAotdm9pZCBT
dG9yYWdlTWFuYWdlcjo6ZGVsZXRlTG9jYWxTdG9yYWdlRW50cmllc0Zvck9yaWdpbihjb25zdCBT
ZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKQordm9pZCBTdG9yYWdlTWFuYWdlcjo6
ZGVsZXRlTG9jYWxTdG9yYWdlT3JpZ2luc01vZGlmaWVkU2luY2UoV2FsbFRpbWUgdGltZSwgRnVu
Y3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIG1fcXVldWUtPmRpc3Bh
dGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvcGllZE9yaWdpbiA9
IHNlY3VyaXR5T3JpZ2luLmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUgewotICAgICAgICBmb3Ig
KGF1dG8mIGxvY2FsU3RvcmFnZU5hbWVzcGFjZSA6IG1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlcy52
YWx1ZXMoKSkKLSAgICAgICAgICAgIGxvY2FsU3RvcmFnZU5hbWVzcGFjZS0+Y2xlYXJTdG9yYWdl
QXJlYXNNYXRjaGluZ09yaWdpbihjb3BpZWRPcmlnaW4pOworICAgIGlmIChtX2xvY2FsU3RvcmFn
ZURhdGFiYXNlVHJhY2tlcikgeworICAgICAgICBhdXRvIG9yaWdpbnNUb0RlbGV0ZSA9IG1fbG9j
YWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLT5kYXRhYmFzZXNNb2RpZmllZFNpbmNlKHRpbWUpOwog
CiAgICAgICAgIGZvciAoYXV0byYgdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlIDogbV90
cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2VzLnZhbHVlcygpKQotICAgICAgICAgICAgdHJh
bnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlLT5jbGVhclN0b3JhZ2VBcmVhc01hdGNoaW5nT3Jp
Z2luKGNvcGllZE9yaWdpbik7Ci0KLSAgICAgICAgaWYgKG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VU
cmFja2VyKQotICAgICAgICAgICAgbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXItPmRlbGV0
ZURhdGFiYXNlV2l0aE9yaWdpbihjb3BpZWRPcmlnaW4pOwotICAgIH0pOwotfQorICAgICAgICAg
ICAgdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlLT5jbGVhckFsbFN0b3JhZ2VBcmVhcygp
OwogCi12b2lkIFN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVMb2NhbFN0b3JhZ2VPcmlnaW5zTW9kaWZp
ZWRTaW5jZShXYWxsVGltZSB0aW1lLCBGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCi17Ci0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgdGltZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VU
cmFja2VyKSB7Ci0gICAgICAgICAgICBhdXRvIG9yaWdpbnNUb0RlbGV0ZSA9IG1fbG9jYWxTdG9y
YWdlRGF0YWJhc2VUcmFja2VyLT5kYXRhYmFzZXNNb2RpZmllZFNpbmNlKHRpbWUpOwotICAgICAg
ICAgICAgCi0gICAgICAgICAgICBmb3IgKGF1dG8mIHRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVz
cGFjZSA6IG1fdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkKLSAgICAg
ICAgICAgICAgICB0cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPmNsZWFyQWxsU3RvcmFn
ZUFyZWFzKCk7Ci0KLSAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgb3JpZ2luIDogb3JpZ2lu
c1RvRGVsZXRlKSB7Ci0gICAgICAgICAgICAgICAgZm9yIChhdXRvJiBsb2NhbFN0b3JhZ2VOYW1l
c3BhY2UgOiBtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZXMudmFsdWVzKCkpCi0gICAgICAgICAgICAg
ICAgICAgIGxvY2FsU3RvcmFnZU5hbWVzcGFjZS0+Y2xlYXJTdG9yYWdlQXJlYXNNYXRjaGluZ09y
aWdpbihvcmlnaW4pOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIG1fbG9jYWxT
dG9yYWdlRGF0YWJhc2VUcmFja2VyLT5kZWxldGVEYXRhYmFzZVdpdGhPcmlnaW4ob3JpZ2luKTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgZm9yIChjb25zdCBhdXRv
JiBvcmlnaW4gOiBvcmlnaW5zVG9EZWxldGUpIHsKICAgICAgICAgICAgIGZvciAoYXV0byYgbG9j
YWxTdG9yYWdlTmFtZXNwYWNlIDogbV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2VzLnZhbHVlcygpKQot
ICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZU5hbWVzcGFjZS0+Y2xlYXJBbGxTdG9yYWdlQXJl
YXMoKTsKKyAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPmNsZWFyU3RvcmFn
ZUFyZWFzTWF0Y2hpbmdPcmlnaW4ob3JpZ2luKTsKKyAgICAgICAgICAgIG1fbG9jYWxTdG9yYWdl
RGF0YWJhc2VUcmFja2VyLT5kZWxldGVEYXRhYmFzZVdpdGhPcmlnaW4ob3JpZ2luKTsKICAgICAg
ICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGZvciAoYXV0byYgbG9jYWxTdG9yYWdlTmFtZXNw
YWNlIDogbV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2VzLnZhbHVlcygpKQorICAgICAgICAgICAgbG9j
YWxTdG9yYWdlTmFtZXNwYWNlLT5jbGVhckFsbFN0b3JhZ2VBcmVhcygpOworICAgIH0KIAotICAg
ICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwotICAgIH0pOworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgU3RvcmFnZU1hbmFnZXI6OmRlbGV0ZUxvY2FsU3RvcmFn
ZUVudHJpZXNGb3JPcmlnaW5zKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGE+JiBvcmlnaW5zLCBGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0g
ICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgY29waWVkT3JpZ2lucyA9IGNyb3NzVGhyZWFkQ29weShvcmlnaW5zKSwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKLSAgICAgICAg
Zm9yIChhdXRvJiBvcmlnaW4gOiBjb3BpZWRPcmlnaW5zKSB7Ci0gICAgICAgICAgICBmb3IgKGF1
dG8mIGxvY2FsU3RvcmFnZU5hbWVzcGFjZSA6IG1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlcy52YWx1
ZXMoKSkKLSAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPmNsZWFyU3RvcmFn
ZUFyZWFzTWF0Y2hpbmdPcmlnaW4ob3JpZ2luKTsKKyAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IG9y
aWdpbnMpIHsKKyAgICAgICAgZm9yIChhdXRvJiBsb2NhbFN0b3JhZ2VOYW1lc3BhY2UgOiBtX2xv
Y2FsU3RvcmFnZU5hbWVzcGFjZXMudmFsdWVzKCkpCisgICAgICAgICAgICBsb2NhbFN0b3JhZ2VO
YW1lc3BhY2UtPmNsZWFyU3RvcmFnZUFyZWFzTWF0Y2hpbmdPcmlnaW4ob3JpZ2luKTsKIAotICAg
ICAgICAgICAgZm9yIChhdXRvJiB0cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UgOiBtX3Ry
YW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZXMudmFsdWVzKCkpCi0gICAgICAgICAgICAgICAg
dHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlLT5jbGVhclN0b3JhZ2VBcmVhc01hdGNoaW5n
T3JpZ2luKG9yaWdpbik7CisgICAgICAgIGZvciAoYXV0byYgdHJhbnNpZW50TG9jYWxTdG9yYWdl
TmFtZXNwYWNlIDogbV90cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2VzLnZhbHVlcygpKQor
ICAgICAgICAgICAgdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlLT5jbGVhclN0b3JhZ2VB
cmVhc01hdGNoaW5nT3JpZ2luKG9yaWdpbik7CiAKLSAgICAgICAgICAgIGlmIChtX2xvY2FsU3Rv
cmFnZURhdGFiYXNlVHJhY2tlcikKLSAgICAgICAgICAgICAgICBtX2xvY2FsU3RvcmFnZURhdGFi
YXNlVHJhY2tlci0+ZGVsZXRlRGF0YWJhc2VXaXRoT3JpZ2luKG9yaWdpbik7Ci0gICAgICAgIH0K
KyAgICAgICAgaWYgKG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyKQorICAgICAgICAgICAg
bV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXItPmRlbGV0ZURhdGFiYXNlV2l0aE9yaWdpbihv
cmlnaW4pOworICAgIH0KIAotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgIH0pOworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNw
YXRjaChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgU3RvcmFnZU1hbmFn
ZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU1hcChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVp
bnQ2NF90IHN0b3JhZ2VNYXBJRCwgdWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBTZWN1cml0
eU9yaWdpbkRhdGEmJiBzZWN1cml0eU9yaWdpbkRhdGEpCitTdG9yYWdlTWFuYWdlcjo6U3RvcmFn
ZUFyZWEqIFN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVMb2NhbFN0b3JhZ2VBcmVhKHVpbnQ2NF90IHN0
b3JhZ2VOYW1lc3BhY2VJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgb3JpZ2luRGF0
YSkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBhdXRvIGNvbm5lY3Rp
b25JRCA9IGNvbm5lY3Rpb24udW5pcXVlSUQoKTsKLSAgICBzdGQ6OnBhaXI8SVBDOjpDb25uZWN0
aW9uOjpVbmlxdWVJRCwgdWludDY0X3Q+IGNvbm5lY3Rpb25BbmRTdG9yYWdlTWFwSURQYWlyKGNv
bm5lY3Rpb25JRCwgc3RvcmFnZU1hcElEKTsKLQotICAgIEFTU0VSVCgoSGFzaE1hcDxzdGQ6OnBh
aXI8SVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCwgdWludDY0X3Q+LCBSZWZQdHI8U3RvcmFnZUFy
ZWE+Pjo6aXNWYWxpZEtleShjb25uZWN0aW9uQW5kU3RvcmFnZU1hcElEUGFpcikpKTsKLQotICAg
IGF1dG8gcmVzdWx0ID0gbV9zdG9yYWdlQXJlYXNCeUNvbm5lY3Rpb24uYWRkKGNvbm5lY3Rpb25B
bmRTdG9yYWdlTWFwSURQYWlyLCBudWxscHRyKTsKLSAgICBBU1NFUlQocmVzdWx0LmlzTmV3RW50
cnkpOwogICAgIEFTU0VSVCgoSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPExvY2FsU3RvcmFnZU5h
bWVzcGFjZT4+Ojppc1ZhbGlkS2V5KHN0b3JhZ2VOYW1lc3BhY2VJRCkpKTsKIAogICAgIExvY2Fs
U3RvcmFnZU5hbWVzcGFjZSogbG9jYWxTdG9yYWdlTmFtZXNwYWNlID0gZ2V0T3JDcmVhdGVMb2Nh
bFN0b3JhZ2VOYW1lc3BhY2Uoc3RvcmFnZU5hbWVzcGFjZUlEKTsKICAgICBBU1NFUlQobG9jYWxT
dG9yYWdlTmFtZXNwYWNlKTsKIAotICAgIGF1dG8gc3RvcmFnZUFyZWEgPSBsb2NhbFN0b3JhZ2VO
YW1lc3BhY2UtPmdldE9yQ3JlYXRlU3RvcmFnZUFyZWEoV1RGTW92ZShzZWN1cml0eU9yaWdpbkRh
dGEpLCBtX2xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlciA/IFN0b3JhZ2VNYW5hZ2VyOjpMb2Nh
bFN0b3JhZ2VOYW1lc3BhY2U6OklzRXBoZW1lcmFsOjpObyA6IFN0b3JhZ2VNYW5hZ2VyOjpMb2Nh
bFN0b3JhZ2VOYW1lc3BhY2U6OklzRXBoZW1lcmFsOjpZZXMpOwotICAgIHN0b3JhZ2VBcmVhLT5h
ZGRMaXN0ZW5lcihjb25uZWN0aW9uSUQsIHN0b3JhZ2VNYXBJRCk7Ci0KLSAgICByZXN1bHQuaXRl
cmF0b3ItPnZhbHVlID0gV1RGTW92ZShzdG9yYWdlQXJlYSk7CisgICAgcmV0dXJuIGxvY2FsU3Rv
cmFnZU5hbWVzcGFjZS0+Z2V0T3JDcmVhdGVTdG9yYWdlQXJlYShXVEZNb3ZlKG9yaWdpbkRhdGEp
LCBtX2xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlciA/IFN0b3JhZ2VNYW5hZ2VyOjpMb2NhbFN0
b3JhZ2VOYW1lc3BhY2U6OklzRXBoZW1lcmFsOjpObyA6IFN0b3JhZ2VNYW5hZ2VyOjpMb2NhbFN0
b3JhZ2VOYW1lc3BhY2U6OklzRXBoZW1lcmFsOjpZZXMpLnB0cigpOwogfQogCi12b2lkIFN0b3Jh
Z2VNYW5hZ2VyOjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VNYXAoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCB1aW50NjRfdCBzdG9yYWdlTWFwSUQsIHVpbnQ2NF90IHN0b3JhZ2VOYW1l
c3BhY2VJRCwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wTGV2ZWxPcmlnaW5EYXRhLCBTZWN1cml0
eU9yaWdpbkRhdGEmJiBvcmlnaW4pCitTdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUFyZWEqIFN0b3Jh
Z2VNYW5hZ2VyOjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKHVpbnQ2NF90IHN0b3Jh
Z2VOYW1lc3BhY2VJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wTGV2ZWxPcmln
aW5EYXRhLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBvcmlnaW5EYXRhKQogewogICAg
IEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIGF1dG8gY29ubmVjdGlvbklEID0gY29u
bmVjdGlvbi51bmlxdWVJRCgpOwotCi0gICAgQVNTRVJUKG1fc3RvcmFnZUFyZWFzQnlDb25uZWN0
aW9uLmlzVmFsaWRLZXkoeyBjb25uZWN0aW9uSUQsIHN0b3JhZ2VNYXBJRCB9KSk7Ci0KLSAgICAv
LyBTZWUgaWYgd2UgYWxyZWFkeSBoYXZlIHNlc3Npb24gc3RvcmFnZSBmb3IgdGhpcyBjb25uZWN0
aW9uL29yaWdpbiBjb21iby4KLSAgICAvLyBJZiBzbywgdXBkYXRlIHRoZSBtYXAgd2l0aCB0aGUg
bmV3IElELCBvdGhlcndpc2Uga2VlcCBvbiB0cnVja2luZy4KLSAgICBmb3IgKGF1dG8gaXQgPSBt
X3N0b3JhZ2VBcmVhc0J5Q29ubmVjdGlvbi5iZWdpbigpLCBlbmQgPSBtX3N0b3JhZ2VBcmVhc0J5
Q29ubmVjdGlvbi5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIGlmIChpdC0+a2V5
LmZpcnN0ICE9IGNvbm5lY3Rpb25JRCkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBS
ZWY8U3RvcmFnZUFyZWE+IGFyZWEgPSAqaXQtPnZhbHVlOwotICAgICAgICBpZiAoIWFyZWEtPmlz
RXBoZW1lcmFsKCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKCFvcmlnaW4u
c2VjdXJpdHlPcmlnaW4oKS0+aXNTYW1lU2NoZW1lSG9zdFBvcnQoYXJlYS0+c2VjdXJpdHlPcmln
aW4oKS5zZWN1cml0eU9yaWdpbigpLmdldCgpKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICBhcmVhLT5hZGRMaXN0ZW5lcihjb25uZWN0aW9uSUQsIHN0b3JhZ2VNYXBJRCk7Ci0gICAg
ICAgIC8vIElmIHRoZSBzdG9yYWdlTWFwSUQgdXNlZCBhcyBrZXkgaW4gbV9zdG9yYWdlQXJlYXNC
eUNvbm5lY3Rpb24gaXMgbm8gbG9uZ2VyIG9uZSBvZiB0aGUgU3RvcmFnZUFyZWEncyBsaXN0ZW5l
cnMsIHRoZW4gdGhpcyBtZWFucwotICAgICAgICAvLyB0aGF0IGRlc3Ryb3lTdG9yYWdlTWFwKCkg
d2FzIGFscmVhZHkgY2FsbGVkIGZvciB0aGF0IHN0b3JhZ2VNYXBJRCBidXQgaXQgZGVjaWRlZCBu
b3QgdG8gcmVtb3ZlIGl0IGZyb20gbV9zdG9yYWdlQXJlYXNCeUNvbm5lY3Rpb24KLSAgICAgICAg
Ly8gc28gdGhhdCB3ZSBjb3VsZCByZXVzZSBpdCBsYXRlciBvbiBmb3IgdGhlIHNhbWUgY29ubmVj
dGlvbi9vcmlnaW4gY29tYm8uIEluIHRoaXMgY2FzZSwgaXQgaXMgc2FmZSB0byByZW1vdmUgdGhl
IHByZXZpb3VzCi0gICAgICAgIC8vIHN0b3JhZ2VNYXBJRCBmcm9tIG1fc3RvcmFnZUFyZWFzQnlD
b25uZWN0aW9uLgotICAgICAgICBpZiAoIWFyZWEtPmhhc0xpc3RlbmVyKGNvbm5lY3Rpb25JRCwg
aXQtPmtleS5zZWNvbmQpKQotICAgICAgICAgICAgbV9zdG9yYWdlQXJlYXNCeUNvbm5lY3Rpb24u
cmVtb3ZlKGl0KTsKLSAgICAgICAgbV9zdG9yYWdlQXJlYXNCeUNvbm5lY3Rpb24uYWRkKHsgY29u
bmVjdGlvbklELCBzdG9yYWdlTWFwSUQgfSwgV1RGTW92ZShhcmVhKSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBhdXRvJiBzbG90ID0gbV9zdG9yYWdlQXJlYXNCeUNvbm5lY3Rpb24u
YWRkKHsgY29ubmVjdGlvbklELCBzdG9yYWdlTWFwSUQgfSwgbnVsbHB0cikuaXRlcmF0b3ItPnZh
bHVlOwotICAgIEFTU0VSVCghc2xvdCk7CisgICAgQVNTRVJUKChIYXNoTWFwPHVpbnQ2NF90LCBS
ZWZQdHI8VHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlPj46OmlzVmFsaWRLZXkoc3RvcmFn
ZU5hbWVzcGFjZUlEKSkpOwogCi0gICAgYXV0byogdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNw
YWNlID0gZ2V0T3JDcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2Uoc3RvcmFnZU5h
bWVzcGFjZUlELCBXVEZNb3ZlKHRvcExldmVsT3JpZ2luRGF0YSkpOwotCi0gICAgYXV0byBzdG9y
YWdlQXJlYSA9IHRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZS0+Z2V0T3JDcmVhdGVTdG9y
YWdlQXJlYShXVEZNb3ZlKG9yaWdpbikpOwotICAgIHN0b3JhZ2VBcmVhLT5hZGRMaXN0ZW5lcihj
b25uZWN0aW9uSUQsIHN0b3JhZ2VNYXBJRCk7Ci0KLSAgICBzbG90ID0gV1RGTW92ZShzdG9yYWdl
QXJlYSk7CisgICAgYXV0byogdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlID0gZ2V0T3JD
cmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2Uoc3RvcmFnZU5hbWVzcGFjZUlELCB0
b3BMZXZlbE9yaWdpbkRhdGEuaXNvbGF0ZWRDb3B5KCkpOworICAgIHJldHVybiB0cmFuc2llbnRM
b2NhbFN0b3JhZ2VOYW1lc3BhY2UtPmdldE9yQ3JlYXRlU3RvcmFnZUFyZWEoV1RGTW92ZSh0b3BM
ZXZlbE9yaWdpbkRhdGEpKS5wdHIoKTsKIH0KIAotdm9pZCBTdG9yYWdlTWFuYWdlcjo6Y3JlYXRl
U2Vzc2lvblN0b3JhZ2VNYXAoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCB1aW50NjRfdCBz
dG9yYWdlTWFwSUQsIHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgU2VjdXJpdHlPcmlnaW5E
YXRhJiYgc2VjdXJpdHlPcmlnaW5EYXRhKQorU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VBcmVhKiBT
dG9yYWdlTWFuYWdlcjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VBcmVhKHVpbnQ2NF90IHN0b3JhZ2VO
YW1lc3BhY2VJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgb3JpZ2luRGF0YSkKIHsK
ICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBhdXRvIGNvbm5lY3Rpb25JRCA9
IGNvbm5lY3Rpb24udW5pcXVlSUQoKTsKLSAgICBBU1NFUlQobV9zZXNzaW9uU3RvcmFnZU5hbWVz
cGFjZXMuaXNWYWxpZEtleShzdG9yYWdlTmFtZXNwYWNlSUQpKTsKLQotICAgIFNlc3Npb25TdG9y
YWdlTmFtZXNwYWNlKiBzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSA9IG1fc2Vzc2lvblN0b3JhZ2VO
YW1lc3BhY2VzLmdldChzdG9yYWdlTmFtZXNwYWNlSUQpOwotICAgIGlmICghc2Vzc2lvblN0b3Jh
Z2VOYW1lc3BhY2UpIHsKLSAgICAgICAgLy8gV2UncmUgZ2V0dGluZyBhbiBpbmNvbWluZyBtZXNz
YWdlIGZyb20gdGhlIHdlYiBwcm9jZXNzIHRoYXQncyBmb3Igc2Vzc2lvbiBzdG9yYWdlIGZvciBh
IHdlYiBwYWdlCi0gICAgICAgIC8vIHRoYXQgaGFzIGFscmVhZHkgYmVlbiBjbG9zZWQsIGp1c3Qg
aWdub3JlIGl0LgotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUKG1fc3RvcmFn
ZUFyZWFzQnlDb25uZWN0aW9uLmlzVmFsaWRLZXkoeyBjb25uZWN0aW9uSUQsIHN0b3JhZ2VNYXBJ
RCB9KSk7CisgICAgQVNTRVJUKChIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8U2Vzc2lvblN0b3Jh
Z2VOYW1lc3BhY2U+Pjo6aXNWYWxpZEtleShzdG9yYWdlTmFtZXNwYWNlSUQpKSk7CiAKLSAgICBh
dXRvJiBzbG90ID0gbV9zdG9yYWdlQXJlYXNCeUNvbm5lY3Rpb24uYWRkKHsgY29ubmVjdGlvbklE
LCBzdG9yYWdlTWFwSUQgfSwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwotICAgIEFTU0VSVCgh
c2xvdCk7Ci0gICAgQVNTRVJUKHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlLT5hbGxvd2VkQ29ubmVj
dGlvbnMoKS5jb250YWlucyhjb25uZWN0aW9uSUQpKTsKLQotICAgIGF1dG8gc3RvcmFnZUFyZWEg
PSBzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS0+Z2V0T3JDcmVhdGVTdG9yYWdlQXJlYShXVEZNb3Zl
KHNlY3VyaXR5T3JpZ2luRGF0YSkpOwotICAgIHN0b3JhZ2VBcmVhLT5hZGRMaXN0ZW5lcihjb25u
ZWN0aW9uSUQsIHN0b3JhZ2VNYXBJRCk7Ci0KLSAgICBzbG90ID0gV1RGTW92ZShzdG9yYWdlQXJl
YSk7Ci19Ci0KLXZvaWQgU3RvcmFnZU1hbmFnZXI6OmRlc3Ryb3lTdG9yYWdlTWFwKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgdWludDY0X3Qgc3RvcmFnZU1hcElEKQotewotICAgIEFTU0VS
VCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIGF1dG8gY29ubmVjdGlvbklEID0gY29ubmVjdGlv
bi51bmlxdWVJRCgpOwotCi0gICAgc3RkOjpwYWlyPElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQs
IHVpbnQ2NF90PiBjb25uZWN0aW9uQW5kU3RvcmFnZU1hcElEUGFpcihjb25uZWN0aW9uSUQsIHN0
b3JhZ2VNYXBJRCk7Ci0gICAgQVNTRVJUKG1fc3RvcmFnZUFyZWFzQnlDb25uZWN0aW9uLmlzVmFs
aWRLZXkoY29ubmVjdGlvbkFuZFN0b3JhZ2VNYXBJRFBhaXIpKTsKLQotICAgIGF1dG8gaXQgPSBt
X3N0b3JhZ2VBcmVhc0J5Q29ubmVjdGlvbi5maW5kKGNvbm5lY3Rpb25BbmRTdG9yYWdlTWFwSURQ
YWlyKTsKLSAgICBpZiAoaXQgPT0gbV9zdG9yYWdlQXJlYXNCeUNvbm5lY3Rpb24uZW5kKCkpIHsK
LSAgICAgICAgLy8gVGhlIGNvbm5lY3Rpb24gaGFzIGJlZW4gcmVtb3ZlZCBiZWNhdXNlIHRoZSBs
YXN0IHBhZ2Ugd2FzIGNsb3NlZC4KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGl0LT52
YWx1ZS0+cmVtb3ZlTGlzdGVuZXIoY29ubmVjdGlvbklELCBzdG9yYWdlTWFwSUQpOwotCi0gICAg
Ly8gRG9uJ3QgcmVtb3ZlIHNlc3Npb24gc3RvcmFnZSBtYXBzLiBUaGUgd2ViIHByb2Nlc3MgbWF5
IHJlY29ubmVjdCBhbmQgZXhwZWN0IHRoZSBkYXRhIHRvIHN0aWxsIGJlIGFyb3VuZC4KLSAgICBp
ZiAoaXQtPnZhbHVlLT5pc0VwaGVtZXJhbCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3N0
b3JhZ2VBcmVhc0J5Q29ubmVjdGlvbi5yZW1vdmUoY29ubmVjdGlvbkFuZFN0b3JhZ2VNYXBJRFBh
aXIpOwotfQotCi12b2lkIFN0b3JhZ2VNYW5hZ2VyOjpwcmV3YXJtKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwgdWludDY0X3Qgc3RvcmFnZU1hcElEKQotewotICAgIEFTU0VSVCghUnVuTG9v
cDo6aXNNYWluKCkpOwotICAgIGlmIChhdXRvKiBzdG9yYWdlQXJlYSA9IGZpbmRTdG9yYWdlQXJl
YShjb25uZWN0aW9uLCBzdG9yYWdlTWFwSUQpKQotICAgICAgICBzdG9yYWdlQXJlYS0+b3BlbkRh
dGFiYXNlQW5kSW1wb3J0SXRlbXNJZk5lZWRlZCgpOwotfQotCi12b2lkIFN0b3JhZ2VNYW5hZ2Vy
OjpnZXRWYWx1ZXMoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCB1aW50NjRfdCBzdG9yYWdl
TWFwSUQsIHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkLCBHZXRWYWx1ZXNDYWxsYmFjayYmIGNvbXBs
ZXRpb25IYW5kbGVyKQotewotICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIGF1
dG8qIHN0b3JhZ2VBcmVhID0gZmluZFN0b3JhZ2VBcmVhKGNvbm5lY3Rpb24sIHN0b3JhZ2VNYXBJ
RCk7Ci0KLSAgICAvLyBUaGlzIGlzIGEgc2Vzc2lvbiBzdG9yYWdlIGFyZWEgZm9yIGEgcGFnZSB0
aGF0IGhhcyBhbHJlYWR5IGJlZW4gY2xvc2VkLiBJZ25vcmUgaXQuCi0gICAgaWYgKCFzdG9yYWdl
QXJlYSkKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7Ci0KLSAgICBjb21w
bGV0aW9uSGFuZGxlcihzdG9yYWdlQXJlYS0+aXRlbXMoKSk7Ci0gICAgY29ubmVjdGlvbi5zZW5k
KE1lc3NhZ2VzOjpTdG9yYWdlQXJlYU1hcDo6RGlkR2V0VmFsdWVzKHN0b3JhZ2VNYXBTZWVkKSwg
c3RvcmFnZU1hcElEKTsKLX0KLQotdm9pZCBTdG9yYWdlTWFuYWdlcjo6c2V0SXRlbShJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIHNlY3Vy
aXR5T3JpZ2luRGF0YSwgdWludDY0X3Qgc3RvcmFnZU1hcElELCB1aW50NjRfdCBzb3VyY2VTdG9y
YWdlQXJlYUlELCB1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCwgY29uc3QgU3RyaW5nJiBrZXksIGNv
bnN0IFN0cmluZyYgdmFsdWUsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQotewotICAgIEFTU0VS
VCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIGF1dG8qIHN0b3JhZ2VBcmVhID0gZmluZFN0b3Jh
Z2VBcmVhKGNvbm5lY3Rpb24sIHN0b3JhZ2VNYXBJRCk7Ci0KLSAgICAvLyBUaGlzIGlzIGEgc2Vz
c2lvbiBzdG9yYWdlIGFyZWEgZm9yIGEgcGFnZSB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gY2xvc2Vk
LiBJZ25vcmUgaXQuCi0gICAgaWYgKCFzdG9yYWdlQXJlYSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgYm9vbCBxdW90YUVycm9yOwotICAgIHN0b3JhZ2VBcmVhLT5zZXRJdGVtKGNvbm5lY3Rpb24u
dW5pcXVlSUQoKSwgc291cmNlU3RvcmFnZUFyZWFJRCwga2V5LCB2YWx1ZSwgdXJsU3RyaW5nLCBx
dW90YUVycm9yKTsKLSAgICBjb25uZWN0aW9uLnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VBcmVhTWFw
OjpEaWRTZXRJdGVtKHN0b3JhZ2VNYXBTZWVkLCBrZXksIHF1b3RhRXJyb3IpLCBzdG9yYWdlTWFw
SUQpOwotfQotCi12b2lkIFN0b3JhZ2VNYW5hZ2VyOjpzZXRJdGVtcyhJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCwgY29uc3QgSGFzaE1hcDxTdHJpbmcs
IFN0cmluZz4mIGl0ZW1zKQotewotICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAg
IGlmIChhdXRvKiBzdG9yYWdlQXJlYSA9IGZpbmRTdG9yYWdlQXJlYShjb25uZWN0aW9uLCBzdG9y
YWdlTWFwSUQpKQotICAgICAgICBzdG9yYWdlQXJlYS0+c2V0SXRlbXMoaXRlbXMpOwotfQotCi12
b2lkIFN0b3JhZ2VNYW5hZ2VyOjpyZW1vdmVJdGVtKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgc2VjdXJpdHlPcmlnaW5EYXRhLCB1aW50
NjRfdCBzdG9yYWdlTWFwSUQsIHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIHVpbnQ2NF90
IHN0b3JhZ2VNYXBTZWVkLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB1cmxTdHJp
bmcpCi17Ci0gICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgYXV0byogc3RvcmFn
ZUFyZWEgPSBmaW5kU3RvcmFnZUFyZWEoY29ubmVjdGlvbiwgc3RvcmFnZU1hcElEKTsKLQotICAg
IC8vIFRoaXMgaXMgYSBzZXNzaW9uIHN0b3JhZ2UgYXJlYSBmb3IgYSBwYWdlIHRoYXQgaGFzIGFs
cmVhZHkgYmVlbiBjbG9zZWQuIElnbm9yZSBpdC4KLSAgICBpZiAoIXN0b3JhZ2VBcmVhKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBzdG9yYWdlQXJlYS0+cmVtb3ZlSXRlbShjb25uZWN0aW9uLnVu
aXF1ZUlEKCksIHNvdXJjZVN0b3JhZ2VBcmVhSUQsIGtleSwgdXJsU3RyaW5nKTsKLSAgICBjb25u
ZWN0aW9uLnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VBcmVhTWFwOjpEaWRSZW1vdmVJdGVtKHN0b3Jh
Z2VNYXBTZWVkLCBrZXkpLCBzdG9yYWdlTWFwSUQpOwotfQotCi12b2lkIFN0b3JhZ2VNYW5hZ2Vy
OjpjbGVhcihJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSYmIHNlY3VyaXR5T3JpZ2luRGF0YSwgdWludDY0X3Qgc3RvcmFnZU1hcElELCB1aW50
NjRfdCBzb3VyY2VTdG9yYWdlQXJlYUlELCB1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCwgY29uc3Qg
U3RyaW5nJiB1cmxTdHJpbmcpCi17Ci0gICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0g
ICAgYXV0byogc3RvcmFnZUFyZWEgPSBmaW5kU3RvcmFnZUFyZWEoY29ubmVjdGlvbiwgc3RvcmFn
ZU1hcElEKTsKLQotICAgIC8vIFRoaXMgaXMgYSBzZXNzaW9uIHN0b3JhZ2UgYXJlYSBmb3IgYSBw
YWdlIHRoYXQgaGFzIGFscmVhZHkgYmVlbiBjbG9zZWQuIElnbm9yZSBpdC4KLSAgICBpZiAoIXN0
b3JhZ2VBcmVhKQotICAgICAgICByZXR1cm47Ci0KLSAgICBzdG9yYWdlQXJlYS0+Y2xlYXIoY29u
bmVjdGlvbi51bmlxdWVJRCgpLCBzb3VyY2VTdG9yYWdlQXJlYUlELCB1cmxTdHJpbmcpOwotICAg
IGNvbm5lY3Rpb24uc2VuZChNZXNzYWdlczo6U3RvcmFnZUFyZWFNYXA6OkRpZENsZWFyKHN0b3Jh
Z2VNYXBTZWVkKSwgc3RvcmFnZU1hcElEKTsKLX0KLQotdm9pZCBTdG9yYWdlTWFuYWdlcjo6d2Fp
dFVudGlsVGFza3NGaW5pc2hlZCgpCi17Ci0gICAgQmluYXJ5U2VtYXBob3JlIHNlbWFwaG9yZTsK
LSAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgJnNlbWFwaG9yZV0gewotICAgICAgICBWZWN0
b3I8c3RkOjpwYWlyPElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIHVpbnQ2NF90Pj4gY29ubmVj
dGlvbkFuZFN0b3JhZ2VNYXBJRFBhaXJzVG9SZW1vdmU7Ci0gICAgICAgIGZvciAoYXV0byYgY29u
bmVjdGlvblN0b3JhZ2VBcmVhUGFpciA6IG1fc3RvcmFnZUFyZWFzQnlDb25uZWN0aW9uKSB7Ci0g
ICAgICAgICAgICBjb25uZWN0aW9uU3RvcmFnZUFyZWFQYWlyLnZhbHVlLT5yZW1vdmVMaXN0ZW5l
cihjb25uZWN0aW9uU3RvcmFnZUFyZWFQYWlyLmtleS5maXJzdCwgY29ubmVjdGlvblN0b3JhZ2VB
cmVhUGFpci5rZXkuc2Vjb25kKTsKLSAgICAgICAgICAgIGNvbm5lY3Rpb25BbmRTdG9yYWdlTWFw
SURQYWlyc1RvUmVtb3ZlLmFwcGVuZChjb25uZWN0aW9uU3RvcmFnZUFyZWFQYWlyLmtleSk7Ci0g
ICAgICAgIH0KLQotICAgICAgICBmb3IgKGF1dG8mIGNvbm5lY3Rpb25TdG9yYWdlQXJlYVBhaXIg
OiBjb25uZWN0aW9uQW5kU3RvcmFnZU1hcElEUGFpcnNUb1JlbW92ZSkKLSAgICAgICAgICAgIG1f
c3RvcmFnZUFyZWFzQnlDb25uZWN0aW9uLnJlbW92ZShjb25uZWN0aW9uU3RvcmFnZUFyZWFQYWly
KTsKLQotICAgICAgICBtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZXMuY2xlYXIoKTsKLQotICAgICAg
ICBzZW1hcGhvcmUuc2lnbmFsKCk7Ci0gICAgfSk7Ci0gICAgc2VtYXBob3JlLndhaXQoKTsKLX0K
LQotdm9pZCBTdG9yYWdlTWFuYWdlcjo6c3VzcGVuZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgQ29tcGxldGlvbkhhbmRsZXJDYWxsaW5nU2Nv
cGUgY29tcGxldGlvbkhhbmRsZXJDYWxsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwot
ICAgIGlmICghbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIpCi0gICAgICAgIHJldHVybjsK
LQotICAgIExvY2tlcjxMb2NrPiBzdGF0ZUxvY2tlcihtX3N0YXRlTG9jayk7Ci0gICAgaWYgKG1f
c3RhdGUgIT0gU3RhdGU6OlJ1bm5pbmcpCi0gICAgICAgIHJldHVybjsKLSAgICBtX3N0YXRlID0g
U3RhdGU6OldpbGxTdXNwZW5kOwotCi0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBjb21wbGV0aW9u
SGFuZGxlckNhbGxlci5yZWxlYXNlKCldICgpIG11dGFibGUgewotICAgICAgICBMb2NrZXI8TG9j
az4gc3RhdGVMb2NrZXIobV9zdGF0ZUxvY2spOwotICAgICAgICBBU1NFUlQobV9zdGF0ZSAhPSBT
dGF0ZTo6U3VzcGVuZGVkKTsKLQotICAgICAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6V2lsbFN1
c3BlbmQpIHsKLSAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAg
ICAgICBtX3N0YXRlID0gU3RhdGU6OlN1c3BlbmRlZDsKLSAgICAgICAgUnVuTG9vcDo6bWFpbigp
LmRpc3BhdGNoKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICAgICAgCi0gICAgICAg
IHdoaWxlIChtX3N0YXRlID09IFN0YXRlOjpTdXNwZW5kZWQpCi0gICAgICAgICAgICBtX3N0YXRl
Q2hhbmdlQ29uZGl0aW9uLndhaXQobV9zdGF0ZUxvY2spOwotICAgICAgICBBU1NFUlQobV9zdGF0
ZSA9PSBTdGF0ZTo6UnVubmluZyk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgU3RvcmFnZU1hbmFnZXI6
OnJlc3VtZSgpCi17Ci0gICAgaWYgKCFtX2xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcikKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgTG9ja2VyPExvY2s+IHN0YXRlTG9ja2VyKG1fc3RhdGVMb2Nr
KTsKLSAgICBhdXRvIHByZXZpb3VzU3RhdGUgPSBtX3N0YXRlOwotICAgIG1fc3RhdGUgPSBTdGF0
ZTo6UnVubmluZzsKLSAgICBpZiAocHJldmlvdXNTdGF0ZSA9PSBTdGF0ZTo6U3VzcGVuZGVkKQot
ICAgICAgICBtX3N0YXRlQ2hhbmdlQ29uZGl0aW9uLm5vdGlmeU9uZSgpOwotfQotCi1TdG9yYWdl
TWFuYWdlcjo6U3RvcmFnZUFyZWEqIFN0b3JhZ2VNYW5hZ2VyOjpmaW5kU3RvcmFnZUFyZWEoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCB1aW50NjRfdCBzdG9yYWdlTWFwSUQpIGNvbnN0Ci17
Ci0gICAgc3RkOjpwYWlyPElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIHVpbnQ2NF90PiBjb25u
ZWN0aW9uQW5kU3RvcmFnZU1hcElEUGFpcihjb25uZWN0aW9uLnVuaXF1ZUlEKCksIHN0b3JhZ2VN
YXBJRCk7Ci0KLSAgICBpZiAoIW1fc3RvcmFnZUFyZWFzQnlDb25uZWN0aW9uLmlzVmFsaWRLZXko
Y29ubmVjdGlvbkFuZFN0b3JhZ2VNYXBJRFBhaXIpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LQotICAgIHJldHVybiBtX3N0b3JhZ2VBcmVhc0J5Q29ubmVjdGlvbi5nZXQoY29ubmVjdGlvbkFu
ZFN0b3JhZ2VNYXBJRFBhaXIpOworICAgIGF1dG8qIHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlID0g
Z2V0T3JDcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShzdG9yYWdlTmFtZXNwYWNlSUQpOwor
ICAgIHJldHVybiBzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS0+Z2V0T3JDcmVhdGVTdG9yYWdlQXJl
YShXVEZNb3ZlKG9yaWdpbkRhdGEpKS5wdHIoKTsKIH0KIAogU3RvcmFnZU1hbmFnZXI6OkxvY2Fs
U3RvcmFnZU5hbWVzcGFjZSogU3RvcmFnZU1hbmFnZXI6OmdldE9yQ3JlYXRlTG9jYWxTdG9yYWdl
TmFtZXNwYWNlKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCkKQEAgLTEwMDAsNCArNjA1LDIy
IEBAIFN0b3JhZ2VNYW5hZ2VyOjpUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UqIFN0b3Jh
Z2VNYW5hZ2VyOjpnZXRPckNyZWF0ZVRyYW5zCiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLmdldCgp
OwogfQogCitTdG9yYWdlTWFuYWdlcjo6U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UqIFN0b3JhZ2VN
YW5hZ2VyOjpnZXRPckNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IHN0b3Jh
Z2VOYW1lc3BhY2VJRCkKK3sKKyAgICBpZiAoIW1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLmlz
VmFsaWRLZXkoc3RvcmFnZU5hbWVzcGFjZUlEKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICByZXR1cm4gbV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMuZW5zdXJlKHN0b3JhZ2VOYW1l
c3BhY2VJRCwgW10geworICAgICAgICAvLyBXZSBjdXJyZW50bHkgaGF2ZSBubyBsaW1pdCBvbiBz
ZXNzaW9uIHN0b3JhZ2UuCisgICAgICAgIHJldHVybiBTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZTo6
Y3JlYXRlKHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSk7CisgICAgfSkuaXRl
cmF0b3ItPnZhbHVlLmdldCgpOworfQorCit2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpjbGVhclN0b3Jh
Z2VOYW1lc3BhY2VzKCkKK3sKKyAgICBtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZXMuY2xlYXIoKTsK
KyAgICBtX3RyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZXMuY2xlYXIoKTsKKyAgICBtX3Nl
c3Npb25TdG9yYWdlTmFtZXNwYWNlcy5jbGVhcigpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9T
dG9yYWdlTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdl
L1N0b3JhZ2VNYW5hZ2VyLmgKaW5kZXggNjBhMjVlM2QxYzMxMGE1YzBiOGZlYTRhYjE0M2VlYjcw
ZTE1YWMyMi4uYmViOTAxYWNmZmE1ZWNjNjJmOGRmM2UzYzQ2NTI2Yjk1ZWJkYjAwYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5h
Z2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3Jh
Z2VNYW5hZ2VyLmgKQEAgLTQwLDg4ICs0MCw5OCBAQCBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIExvY2FsU3RvcmFnZURhdGFiYXNlOwogY2xhc3Mg
TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOwogY2xhc3MgV2ViUHJvY2Vzc1Byb3h5OwogCi11
c2luZyBHZXRWYWx1ZXNDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSGFz
aE1hcDxTdHJpbmcsIFN0cmluZz4mKT47Ci0KLWNsYXNzIFN0b3JhZ2VNYW5hZ2VyIDogcHVibGlj
IElQQzo6Q29ubmVjdGlvbjo6V29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyIHsKK2NsYXNzIFN0b3Jh
Z2VNYW5hZ2VyIDogcHVibGljIFJlZkNvdW50ZWQ8U3RvcmFnZU1hbmFnZXI+IHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUmVmPFN0b3JhZ2VNYW5hZ2VyPiBjcmVhdGUoU3RyaW5nJiYgbG9jYWxTdG9y
YWdlRGlyZWN0b3J5KTsKICAgICB+U3RvcmFnZU1hbmFnZXIoKTsKIAogICAgIHZvaWQgY3JlYXRl
U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCB1bnNp
Z25lZCBxdW90YUluQnl0ZXMpOwogICAgIHZvaWQgZGVzdHJveVNlc3Npb25TdG9yYWdlTmFtZXNw
YWNlKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCk7Ci0gICAgdm9pZCBhZGRBbGxvd2VkU2Vz
c2lvblN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0aW9uKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJ
RCwgSVBDOjpDb25uZWN0aW9uJik7Ci0gICAgdm9pZCByZW1vdmVBbGxvd2VkU2Vzc2lvblN0b3Jh
Z2VOYW1lc3BhY2VDb25uZWN0aW9uKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgSVBDOjpD
b25uZWN0aW9uJik7CiAgICAgdm9pZCBjbG9uZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2
NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgdWludDY0X3QgbmV3U3RvcmFnZU5hbWVzcGFjZUlEKTsK
IAotICAgIHZvaWQgcHJvY2Vzc0RpZENsb3NlQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24mKTsK
LSAgICB2b2lkIHdhaXRVbnRpbFRhc2tzRmluaXNoZWQoKTsKLSAgICB2b2lkIHN1c3BlbmQoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIHJlc3VtZSgpOwotCi0gICAgdm9p
ZCBnZXRTZXNzaW9uU3RvcmFnZU9yaWdpbnMoRnVuY3Rpb248dm9pZChIYXNoU2V0PFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpOworICAgIHZvaWQg
Z2V0U2Vzc2lvblN0b3JhZ2VPcmlnaW5zKEZ1bmN0aW9uPHZvaWQoSGFzaFNldDxXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGE+JiYpPiYmKTsKICAgICB2b2lkIGRlbGV0ZVNlc3Npb25TdG9yYWdl
T3JpZ2lucyhGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwotICAgIHZvaWQg
ZGVsZXRlU2Vzc2lvblN0b3JhZ2VFbnRyaWVzRm9yT3JpZ2lucyhjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYsIEZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcik7CisgICAgdm9pZCBkZWxldGVTZXNzaW9uU3RvcmFnZUVudHJpZXNGb3JPcmlnaW5zKGNv
bnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiwgRnVuY3Rpb248dm9pZCgp
PiYmKTsKIAotICAgIHZvaWQgZ2V0TG9jYWxTdG9yYWdlT3JpZ2lucyhGdW5jdGlvbjx2b2lkKEhh
c2hTZXQ8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cik7Ci0gICAgdm9pZCBkZWxldGVMb2NhbFN0b3JhZ2VFbnRyaWVzRm9yT3JpZ2luKGNvbnN0IFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYpOworICAgIHZvaWQgZ2V0TG9jYWxTdG9yYWdlT3Jp
Z2lucyhGdW5jdGlvbjx2b2lkKEhhc2hTZXQ8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYm
KT4mJik7CisgICAgdm9pZCBkZWxldGVMb2NhbFN0b3JhZ2VPcmlnaW5zTW9kaWZpZWRTaW5jZShX
YWxsVGltZSwgRnVuY3Rpb248dm9pZCgpPiYmKTsKKyAgICB2b2lkIGRlbGV0ZUxvY2FsU3RvcmFn
ZUVudHJpZXNGb3JPcmlnaW5zKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGE+JiwgRnVuY3Rpb248dm9pZCgpPiYmKTsKKyAgICB2b2lkIGdldExvY2FsU3RvcmFnZU9yaWdp
bkRldGFpbHMoRnVuY3Rpb248dm9pZChWZWN0b3I8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2Vy
OjpPcmlnaW5EZXRhaWxzPiYmKT4mJik7CisgICAgCisgICAgdm9pZCBjbGVhclN0b3JhZ2VOYW1l
c3BhY2VzKCk7CiAKLSAgICB2b2lkIGRlbGV0ZUxvY2FsU3RvcmFnZU9yaWdpbnNNb2RpZmllZFNp
bmNlKFdhbGxUaW1lLCBGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwotICAg
IHZvaWQgZGVsZXRlTG9jYWxTdG9yYWdlRW50cmllc0Zvck9yaWdpbnMoY29uc3QgVmVjdG9yPFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mLCBGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpOworICAgIGNsYXNzIExvY2FsU3RvcmFnZU5hbWVzcGFjZTsKKyAgICBjbGFzcyBT
dG9yYWdlQXJlYSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTdG9yYWdlQXJlYT4gewor
ICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFJlZjxTdG9yYWdlQXJlYT4gY3JlYXRlKExvY2Fs
U3RvcmFnZU5hbWVzcGFjZSosIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIHVu
c2lnbmVkIHF1b3RhSW5CeXRlcyk7CisgICAgICAgIH5TdG9yYWdlQXJlYSgpOwogCi0gICAgdm9p
ZCBnZXRMb2NhbFN0b3JhZ2VPcmlnaW5EZXRhaWxzKEZ1bmN0aW9uPHZvaWQoVmVjdG9yPExvY2Fs
U3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6T3JpZ2luRGV0YWlscz4mJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpOworICAgICAgICBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3Vy
aXR5T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9zZWN1cml0eU9yaWdpbjsgfQorICAgICAgICB1
aW50NjRfdCBpZGVudGlmaWVyKCkgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAKLSAgICB2b2lk
IGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwotICAg
IHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2Rl
ciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpOworICAgICAg
ICB2b2lkIGFkZExpc3RlbmVyKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQpOworICAgICAgICB2
b2lkIHJlbW92ZUxpc3RlbmVyKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQpOworICAgICAgICBi
b29sIGhhc0xpc3RlbmVyKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgY29ubmVjdGlvbklEKSB7
IHJldHVybiBtX2V2ZW50TGlzdGVuZXJzLmNvbnRhaW5zKGNvbm5lY3Rpb25JRCk7IH0KIAotcHJp
dmF0ZToKLSAgICBleHBsaWNpdCBTdG9yYWdlTWFuYWdlcihTdHJpbmcmJiBsb2NhbFN0b3JhZ2VE
aXJlY3RvcnkpOworICAgICAgICBSZWY8U3RvcmFnZUFyZWE+IGNsb25lKCkgY29uc3Q7CiAKLSAg
ICAvLyBNZXNzYWdlIGhhbmRsZXJzLgotICAgIHZvaWQgY3JlYXRlTG9jYWxTdG9yYWdlTWFwKElQ
Qzo6Q29ubmVjdGlvbiYsIHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCwgdWludDY0X3Qgc3RvcmFnZU5h
bWVzcGFjZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJik7Ci0gICAgdm9pZCBjcmVh
dGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VNYXAoSVBDOjpDb25uZWN0aW9uJiwgdWludDY0X3Qgc3Rv
cmFnZU1hcElELCB1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYmIHRvcExldmVsT3JpZ2luRGF0YSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhJiYpOwotICAgIHZvaWQgY3JlYXRlU2Vzc2lvblN0b3JhZ2VNYXAoSVBDOjpDb25uZWN0aW9u
JiwgdWludDY0X3Qgc3RvcmFnZU1hcElELCB1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmKTsKLSAgICB2b2lkIGRlc3Ryb3lTdG9yYWdlTWFw
KElQQzo6Q29ubmVjdGlvbiYsIHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCk7CisgICAgICAgIHZvaWQg
c2V0SXRlbShJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIHNvdXJjZUNvbm5lY3Rpb24sIHVpbnQ2
NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcm
IHZhbHVlLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZywgYm9vbCYgcXVvdGFFeGNlcHRpb24pOwor
ICAgICAgICB2b2lkIHJlbW92ZUl0ZW0oSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBzb3VyY2VD
b25uZWN0aW9uLCB1aW50NjRfdCBzb3VyY2VTdG9yYWdlQXJlYUlELCBjb25zdCBTdHJpbmcmIGtl
eSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpOworICAgICAgICB2b2lkIGNsZWFyKElQQzo6Q29u
bmVjdGlvbjo6VW5pcXVlSUQgc291cmNlQ29ubmVjdGlvbiwgdWludDY0X3Qgc291cmNlU3RvcmFn
ZUFyZWFJRCwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpOwogCi0gICAgdm9pZCBnZXRWYWx1ZXMo
SVBDOjpDb25uZWN0aW9uJiwgdWludDY0X3Qgc3RvcmFnZU1hcElELCB1aW50NjRfdCBzdG9yYWdl
TWFwU2VlZCwgR2V0VmFsdWVzQ2FsbGJhY2smJik7Ci0gICAgdm9pZCBwcmV3YXJtKElQQzo6Q29u
bmVjdGlvbiYsIHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCk7Ci0gICAgdm9pZCBzZXRJdGVtKElQQzo6
Q29ubmVjdGlvbiYsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCB1aW50NjRfdCBzdG9y
YWdlTWFwSUQsIHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIHVpbnQ2NF90IHN0b3JhZ2VN
YXBTZWVkLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgY29uc3QgU3Ry
aW5nJiB1cmxTdHJpbmcpOwotICAgIHZvaWQgc2V0SXRlbXMoSVBDOjpDb25uZWN0aW9uJiwgdWlu
dDY0X3Qgc3RvcmFnZU1hcElELCBjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgaXRlbXMp
OwotICAgIHZvaWQgcmVtb3ZlSXRlbShJUEM6OkNvbm5lY3Rpb24mLCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGEmJiwgdWludDY0X3Qgc3RvcmFnZU1hcElELCB1aW50NjRfdCBzb3VyY2VTdG9y
YWdlQXJlYUlELCB1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCwgY29uc3QgU3RyaW5nJiBrZXksIGNv
bnN0IFN0cmluZyYgdXJsU3RyaW5nKTsKLSAgICB2b2lkIGNsZWFyKElQQzo6Q29ubmVjdGlvbiYs
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCB1aW50NjRfdCBzdG9yYWdlTWFwSUQsIHVp
bnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkLCBjb25z
dCBTdHJpbmcmIHVybFN0cmluZyk7CisgICAgICAgIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJp
bmc+JiBpdGVtcygpIGNvbnN0OworICAgICAgICB2b2lkIGNsZWFyKCk7CiAKLSAgICBjbGFzcyBT
dG9yYWdlQXJlYTsKLSAgICBTdG9yYWdlQXJlYSogZmluZFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVj
dGlvbiYsIHVpbnQ2NF90KSBjb25zdDsKKyAgICAgICAgYm9vbCBpc0VwaGVtZXJhbCgpIGNvbnN0
IHsgcmV0dXJuICFtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZTsgfQogCi0gICAgY2xhc3MgTG9jYWxT
dG9yYWdlTmFtZXNwYWNlOwotICAgIExvY2FsU3RvcmFnZU5hbWVzcGFjZSogZ2V0T3JDcmVhdGVM
b2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlEKTsKKyAgICAg
ICAgdm9pZCBvcGVuRGF0YWJhc2VBbmRJbXBvcnRJdGVtc0lmTmVlZGVkKCkgY29uc3Q7CiAKLSAg
ICBjbGFzcyBUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2U7Ci0gICAgVHJhbnNpZW50TG9j
YWxTdG9yYWdlTmFtZXNwYWNlKiBnZXRPckNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVz
cGFjZSh1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSYmIHRvcExldmVsT3JpZ2luKTsKKyAgICAgICAgdm9pZCBzZXRXb3JrUXVldWUoUmVmUHRy
PFdvcmtRdWV1ZT4mJiBxdWV1ZSkgeyBtX3F1ZXVlID0gV1RGTW92ZShxdWV1ZSk7IH0KKyAgICAg
ICAgCisgICAgICAgIHZvaWQgc3luY1RvRGF0YWJhc2UoKTsKIAotICAgIFJlZjxXb3JrUXVldWU+
IG1fcXVldWU7CisgICAgcHJpdmF0ZToKKyAgICAgICAgZXhwbGljaXQgU3RvcmFnZUFyZWEoTG9j
YWxTdG9yYWdlTmFtZXNwYWNlKiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwg
dW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKIAotICAgIFJlZlB0cjxMb2NhbFN0b3JhZ2VEYXRhYmFz
ZVRyYWNrZXI+IG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOworICAgICAgICB2b2lkIGRp
c3BhdGNoRXZlbnRzKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgc291cmNlQ29ubmVjdGlvbiwg
dWludDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0
cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIGNvbnN0IFN0cmluZyYgdXJs
U3RyaW5nKSBjb25zdDsKKworICAgICAgICAvLyBXaWxsIGJlIG51bGwgaWYgdGhlIHN0b3JhZ2Ug
YXJlYSBiZWxvbmdzIHRvIGEgc2Vzc2lvbiBzdG9yYWdlIG5hbWVzcGFjZSBvciB0aGUgc3RvcmFn
ZSBhcmVhIGlzIGluIGFuIGVwaGVtZXJhbCBzZXNzaW9uLgorICAgICAgICBXZWFrUHRyPExvY2Fs
U3RvcmFnZU5hbWVzcGFjZT4gbV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2U7CisgICAgICAgIG11dGFi
bGUgUmVmUHRyPExvY2FsU3RvcmFnZURhdGFiYXNlPiBtX2xvY2FsU3RvcmFnZURhdGFiYXNlOwor
ICAgICAgICBtdXRhYmxlIGJvb2wgbV9kaWRJbXBvcnRJdGVtc0Zyb21EYXRhYmFzZSB7IGZhbHNl
IH07CisKKyAgICAgICAgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIG1fc2VjdXJpdHlPcmln
aW47CisgICAgICAgIHVuc2lnbmVkIG1fcXVvdGFJbkJ5dGVzOworCisgICAgICAgIFJlZlB0cjxX
ZWJDb3JlOjpTdG9yYWdlTWFwPiBtX3N0b3JhZ2VNYXA7CisgICAgICAgIEhhc2hTZXQ8SVBDOjpD
b25uZWN0aW9uOjpVbmlxdWVJRD4gbV9ldmVudExpc3RlbmVyczsKKworICAgICAgICB1aW50NjRf
dCBtX2lkZW50aWZpZXI7CisgICAgICAgIFJlZlB0cjxXb3JrUXVldWU+IG1fcXVldWU7CisgICAg
fTsKKworICAgIFN0b3JhZ2VBcmVhKiBjcmVhdGVMb2NhbFN0b3JhZ2VBcmVhKHVpbnQ2NF90IHN0
b3JhZ2VOYW1lc3BhY2VJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYpOworICAgIFN0
b3JhZ2VBcmVhKiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKHVpbnQ2NF90IHN0b3Jh
Z2VOYW1lc3BhY2VJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSYmKTsKKyAgICBTdG9yYWdlQXJlYSogY3JlYXRlU2Vzc2lvblN0b3Jh
Z2VBcmVhKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhJiYpOworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IFN0b3JhZ2VNYW5hZ2VyKFN0cmlu
ZyYmIGxvY2FsU3RvcmFnZURpcmVjdG9yeSk7CisKKyAgICBMb2NhbFN0b3JhZ2VOYW1lc3BhY2Uq
IGdldE9yQ3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3Bh
Y2VJRCk7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPExvY2FsU3RvcmFnZU5hbWVzcGFj
ZT4+IG1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlczsKKyAgICBSZWZQdHI8TG9jYWxTdG9yYWdlRGF0
YWJhc2VUcmFja2VyPiBtX2xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjsKIAorICAgIGNsYXNz
IFRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZTsKKyAgICBUcmFuc2llbnRMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UqIGdldE9yQ3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVp
bnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYg
dG9wTGV2ZWxPcmlnaW4pOwogICAgIEhhc2hNYXA8c3RkOjpwYWlyPHVpbnQ2NF90LCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGE+LCBSZWZQdHI8VHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNw
YWNlPj4gbV90cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2VzOwogCiAgICAgY2xhc3MgU2Vz
c2lvblN0b3JhZ2VOYW1lc3BhY2U7CisgICAgU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UqIGdldE9y
Q3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlE
KTsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2U+
PiBtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlczsKLQotICAgIEhhc2hNYXA8c3RkOjpwYWlyPElQ
Qzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIHVpbnQ2NF90PiwgUmVmUHRyPFN0b3JhZ2VBcmVhPj4g
bV9zdG9yYWdlQXJlYXNCeUNvbm5lY3Rpb247Ci0gICAgSGFzaFNldDxJUEM6OkNvbm5lY3Rpb246
OlVuaXF1ZUlEPiBtX2Nvbm5lY3Rpb25zOwotCi0gICAgZW51bSBjbGFzcyBTdGF0ZSB7Ci0gICAg
ICAgIFJ1bm5pbmcsCi0gICAgICAgIFdpbGxTdXNwZW5kLAotICAgICAgICBTdXNwZW5kZWQKLSAg
ICB9OwotICAgIFN0YXRlIG1fc3RhdGUgeyBTdGF0ZTo6UnVubmluZyB9OwotICAgIExvY2sgbV9z
dGF0ZUxvY2s7Ci0gICAgQ29uZGl0aW9uIG1fc3RhdGVDaGFuZ2VDb25kaXRpb247CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5tZXNzYWdlcy5pbgpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzhiYjZhYjI0MDI4YTI1M2FhMTE4NTQyMDFk
NmExNWQyNWNlMmM2Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFn
ZXIubWVzc2FnZXMuaW4KKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi0jIENvcHlyaWdo
dCAoQykgMjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwot
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotbWVzc2FnZXMgLT4gU3RvcmFnZU1h
bmFnZXIgewotICAgIENyZWF0ZUxvY2FsU3RvcmFnZU1hcCh1aW50NjRfdCBzdG9yYWdlTWFwSUQs
IHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSBzZWN1cml0eU9yaWdpbkRhdGEpIFdhbnRzQ29ubmVjdGlvbgotICAgIENyZWF0ZVRy
YW5zaWVudExvY2FsU3RvcmFnZU1hcCh1aW50NjRfdCBzdG9yYWdlTWFwSUQsIHVpbnQ2NF90IHN0
b3JhZ2VOYW1lc3BhY2VJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSB0b3BM
ZXZlbFNlY3VyaXR5T3JpZ2luRGF0YSwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YSBzZWN1cml0eU9yaWdpbkRhdGEpIFdhbnRzQ29ubmVjdGlvbgotICAgIENyZWF0ZVNlc3Npb25T
dG9yYWdlTWFwKHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCwgdWludDY0X3Qgc3RvcmFnZU5hbWVzcGFj
ZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHNlY3VyaXR5T3JpZ2luRGF0
YSkgV2FudHNDb25uZWN0aW9uCi0gICAgRGVzdHJveVN0b3JhZ2VNYXAodWludDY0X3Qgc3RvcmFn
ZU1hcElEKSBXYW50c0Nvbm5lY3Rpb24KLQotICAgIFByZXdhcm0odWludDY0X3Qgc3RvcmFnZU1h
cElEKSBXYW50c0Nvbm5lY3Rpb24KLSAgICBHZXRWYWx1ZXModWludDY0X3Qgc3RvcmFnZU1hcElE
LCB1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCkgLT4gKEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IHZh
bHVlcykgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCi0KLSAgICBTZXRJdGVtKHN0cnVjdCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgc2VjdXJpdHlPcmlnaW5EYXRhLCB1aW50NjRfdCBz
dG9yYWdlTWFwSUQsIHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIHVpbnQ2NF90IHN0b3Jh
Z2VNYXBTZWVkLCBTdHJpbmcga2V5LCBTdHJpbmcgdmFsdWUsIFN0cmluZyB1cmxTdHJpbmcpIFdh
bnRzQ29ubmVjdGlvbgotICAgIFNldEl0ZW1zKHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCwgSGFzaE1h
cDxTdHJpbmcsIFN0cmluZz4gaXRlbXMpIFdhbnRzQ29ubmVjdGlvbgotICAgIFJlbW92ZUl0ZW0o
c3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBzZWN1cml0eU9yaWdpbkRhdGEsIHVp
bnQ2NF90IHN0b3JhZ2VNYXBJRCwgdWludDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwgdWludDY0
X3Qgc3RvcmFnZU1hcFNlZWQsIFN0cmluZyBrZXksIFN0cmluZyB1cmxTdHJpbmcpIFdhbnRzQ29u
bmVjdGlvbgotICAgIENsZWFyKHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgc2Vj
dXJpdHlPcmlnaW5EYXRhLCB1aW50NjRfdCBzdG9yYWdlTWFwSUQsIHVpbnQ2NF90IHNvdXJjZVN0
b3JhZ2VBcmVhSUQsIHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkLCBTdHJpbmcgdXJsU3RyaW5nKSBX
YW50c0Nvbm5lY3Rpb24KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQy
YTU5ZWY2Nzc2NzhjZGI5OTg0ZTg4NzhhODk5OTk2MmE2OGZiOWYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJT
ZXQuY3BwCkBAIC0wLDAgKzEsMzc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlN0b3JhZ2VNYW5h
Z2VyU2V0LmgiCisKKyNpbmNsdWRlICJTdG9yYWdlQXJlYU1hcE1lc3NhZ2VzLmgiCisjaW5jbHVk
ZSAiU3RvcmFnZU1hbmFnZXJTZXRNZXNzYWdlcy5oIgorI2luY2x1ZGUgPHd0Zi90aHJlYWRzL0Jp
bmFyeVNlbWFwaG9yZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY29uc3QgdWludDY0X3Qg
aW52YWxpZFN0b3JhZ2VBcmVhSUQgPSAwOworCitSZWY8U3RvcmFnZU1hbmFnZXJTZXQ+IFN0b3Jh
Z2VNYW5hZ2VyU2V0OjpjcmVhdGUoKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0b3Jh
Z2VNYW5hZ2VyU2V0KTsKK30KKworU3RvcmFnZU1hbmFnZXJTZXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0
KCkKKyAgICA6IG1fcXVldWUoV29ya1F1ZXVlOjpjcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuV2Vi
U3RvcmFnZSIpKQoreworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Cit9CisKK1N0b3Jh
Z2VNYW5hZ2VyU2V0Ojp+U3RvcmFnZU1hbmFnZXJTZXQoKQoreworICAgIEFTU0VSVChSdW5Mb29w
Ojppc01haW4oKSk7CisgICAgd2FpdFVudGlsVGFza3NGaW5pc2hlZCgpOworfQorCit2b2lkIFN0
b3JhZ2VNYW5hZ2VyU2V0OjphZGQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJp
bmcmIGxvY2FsU3RvcmFnZURpcmVjdG9yeSwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBsb2Nh
bFN0b3JhZ2VEaXJlY3RvcnlIYW5kbGUpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigp
KTsKKyAgICBhdXRvW2l0ZXIsIGlzTmV3RW50cnldID0gbV9zdG9yYWdlTWFuYWdlclBhdGhzLmFk
ZChzZXNzaW9uSUQsIGxvY2FsU3RvcmFnZURpcmVjdG9yeSk7CisgICAgaWYgKGlzTmV3RW50cnkp
IHsKKyAgICAgICAgaWYgKCFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKKyAgICAgICAgICAgIFNh
bmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShsb2NhbFN0b3JhZ2VEaXJlY3RvcnlI
YW5kbGUpOworICAgICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBzZXNzaW9uSUQsIGRpcmVjdG9yeSA9IGxvY2FsU3RvcmFnZURpcmVj
dG9yeS5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIG1fc3RvcmFnZU1h
bmFnZXJzLmVuc3VyZShzZXNzaW9uSUQsIFtkaXJlY3RvcnldKCkgbXV0YWJsZSB7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIFN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGUoV1RGTW92ZShkaXJlY3Rvcnkp
KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9Cit9CisKK3ZvaWQgU3RvcmFn
ZU1hbmFnZXJTZXQ6OnJlbW92ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCit7CisgICAgQVNT
RVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBpZiAobV9zdG9yYWdlTWFuYWdlclBhdGhzLnJl
bW92ZShzZXNzaW9uSUQpKSB7CisgICAgICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHNlc3Npb25JRF0oKSB7CisgICAgICAgICAgICBt
X3N0b3JhZ2VNYW5hZ2Vycy5yZW1vdmUoc2Vzc2lvbklEKTsKKyAgICAgICAgfSk7CisgICAgfQor
fQorCitib29sIFN0b3JhZ2VNYW5hZ2VyU2V0Ojpjb250YWlucyhQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQpCit7CisgICAgcmV0dXJuIG1fc3RvcmFnZU1hbmFnZXJQYXRocy5jb250YWlucyhzZXNz
aW9uSUQpOworfQorCit2b2lkIFN0b3JhZ2VNYW5hZ2VyU2V0OjphZGRDb25uZWN0aW9uKElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbikgCit7CisgICAgYXV0byBjb25uZWN0aW9uSUQgPSBjb25u
ZWN0aW9uLnVuaXF1ZUlEKCk7CisgICAgQVNTRVJUKCFtX2Nvbm5lY3Rpb25zLmNvbnRhaW5zKGNv
bm5lY3Rpb25JRCkpOworICAgIGlmIChtX2Nvbm5lY3Rpb25zLmFkZChjb25uZWN0aW9uSUQpLmlz
TmV3RW50cnkpCisgICAgICAgIGNvbm5lY3Rpb24uYWRkV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVy
KE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdlclNldDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3F1
ZXVlLmdldCgpLCB0aGlzKTsKK30KKwordm9pZCBTdG9yYWdlTWFuYWdlclNldDo6cmVtb3ZlQ29u
bmVjdGlvbihJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCit7CisgICAgYXV0byBjb25uZWN0
aW9uSUQgPSBjb25uZWN0aW9uLnVuaXF1ZUlEKCk7CisgICAgQVNTRVJUKG1fY29ubmVjdGlvbnMu
Y29udGFpbnMoY29ubmVjdGlvbklEKSk7CisgICAgbV9jb25uZWN0aW9ucy5yZW1vdmUoY29ubmVj
dGlvbklEKTsKKyAgICBjb25uZWN0aW9uLnJlbW92ZVdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihN
ZXNzYWdlczo6U3RvcmFnZU1hbmFnZXJTZXQ6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7CisKKyAg
ICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBjb25uZWN0aW9uSURdKCkgeworICAgICAgICBmb3IgKGF1dG8mIHN0b3JhZ2VBcmVhIDogbV9z
dG9yYWdlQXJlYXMudmFsdWVzKCkpCisgICAgICAgICAgICBzdG9yYWdlQXJlYS0+cmVtb3ZlTGlz
dGVuZXIoY29ubmVjdGlvbklEKTsKKyAgICB9KTsKK30KKwordm9pZCBTdG9yYWdlTWFuYWdlclNl
dDo6d2FpdFVudGlsVGFza3NGaW5pc2hlZCgpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFp
bigpKTsKKyAgICBCaW5hcnlTZW1hcGhvcmUgc2VtYXBob3JlOworICAgIG1fcXVldWUtPmRpc3Bh
dGNoKFt0aGlzLCAmc2VtYXBob3JlXSB7CisgICAgICAgIGZvciAoYXV0byYgW3Nlc3Npb25JRCwg
c3RvcmFnZU1hbmFnZXJdIDogbV9zdG9yYWdlTWFuYWdlcnMpCisgICAgICAgICAgICBzdG9yYWdl
TWFuYWdlci0+Y2xlYXJTdG9yYWdlTmFtZXNwYWNlcygpOworCisgICAgICAgIG1fc3RvcmFnZU1h
bmFnZXJzLmNsZWFyKCk7CisgICAgICAgIG1fc3RvcmFnZUFyZWFzLmNsZWFyKCk7CisKKyAgICAg
ICAgc2VtYXBob3JlLnNpZ25hbCgpOworICAgIH0pOworICAgIHNlbWFwaG9yZS53YWl0KCk7Cit9
CisKK3ZvaWQgU3RvcmFnZU1hbmFnZXJTZXQ6OndhaXRVbnRpbFN5bmNpbmdMb2NhbFN0b3JhZ2VG
aW5pc2hlZCgpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBCaW5hcnlT
ZW1hcGhvcmUgc2VtYXBob3JlOworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCAmc2VtYXBo
b3JlXSB7CisgICAgICAgIGZvciAoYXV0byogc3RvcmFnZUFyZWEgOiBtX3N0b3JhZ2VBcmVhcy52
YWx1ZXMoKSkKKyAgICAgICAgICAgIHN0b3JhZ2VBcmVhLT5zeW5jVG9EYXRhYmFzZSgpOworCisg
ICAgICAgIHNlbWFwaG9yZS5zaWduYWwoKTsKKyAgICB9KTsKKyAgICBzZW1hcGhvcmUud2FpdCgp
OworfQorCit2b2lkIFN0b3JhZ2VNYW5hZ2VyU2V0OjpzdXNwZW5kKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNN
YWluKCkpOworICAgIENvbXBsZXRpb25IYW5kbGVyQ2FsbGluZ1Njb3BlIGNvbXBsZXRpb25IYW5k
bGVyQ2FsbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBMb2NrZXI8TG9jaz4g
c3RhdGVMb2NrZXIobV9zdGF0ZUxvY2spOworICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpSdW5u
aW5nKQorICAgICAgICByZXR1cm47CisgICAgbV9zdGF0ZSA9IFN0YXRlOjpXaWxsU3VzcGVuZDsK
KworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gY29tcGxldGlvbkhhbmRsZXJDYWxsZXIucmVsZWFz
ZSgpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgTG9ja2VyPExvY2s+IHN0YXRlTG9ja2VyKG1fc3Rh
dGVMb2NrKTsKKyAgICAgICAgQVNTRVJUKG1fc3RhdGUgIT0gU3RhdGU6OlN1c3BlbmRlZCk7CisK
KyAgICAgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OldpbGxTdXNwZW5kKSB7CisgICAgICAgICAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgbV9zdGF0ZSA9IFN0YXRl
OjpTdXNwZW5kZWQ7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CisKKyAgICAgICAgd2hpbGUgKG1fc3RhdGUgPT0gU3RhdGU6OlN1
c3BlbmRlZCkKKyAgICAgICAgICAgIG1fc3RhdGVDaGFuZ2VDb25kaXRpb24ud2FpdChtX3N0YXRl
TG9jayk7CisgICAgICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpSdW5uaW5nKTsKKyAgICB9
KTsKK30KKwordm9pZCBTdG9yYWdlTWFuYWdlclNldDo6cmVzdW1lKCkKK3sKKyAgICBMb2NrZXI8
TG9jaz4gc3RhdGVMb2NrZXIobV9zdGF0ZUxvY2spOworICAgIGF1dG8gcHJldmlvdXNTdGF0ZSA9
IG1fc3RhdGU7CisgICAgbV9zdGF0ZSA9IFN0YXRlOjpSdW5uaW5nOworICAgIGlmIChwcmV2aW91
c1N0YXRlID09IFN0YXRlOjpTdXNwZW5kZWQpCisgICAgICAgIG1fc3RhdGVDaGFuZ2VDb25kaXRp
b24ubm90aWZ5T25lKCk7Cit9CisKK3ZvaWQgU3RvcmFnZU1hbmFnZXJTZXQ6OmdldFNlc3Npb25T
dG9yYWdlT3JpZ2lucyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoSGFzaFNldDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQoreworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIHNlc3Npb25JRCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byogc3RvcmFnZU1h
bmFnZXIgPSBtX3N0b3JhZ2VNYW5hZ2Vycy5nZXQoc2Vzc2lvbklEKTsKKyAgICAgICAgQVNTRVJU
KHN0b3JhZ2VNYW5hZ2VyKTsKKworICAgICAgICBzdG9yYWdlTWFuYWdlci0+Z2V0U2Vzc2lvblN0
b3JhZ2VPcmlnaW5zKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICB9KTsKK30KKwor
dm9pZCBTdG9yYWdlTWFuYWdlclNldDo6ZGVsZXRlU2Vzc2lvblN0b3JhZ2UoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit7CisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgc2Vzc2lvbklELCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICBhdXRvKiBzdG9yYWdlTWFuYWdlciA9
IG1fc3RvcmFnZU1hbmFnZXJzLmdldChzZXNzaW9uSUQpOworICAgICAgICBBU1NFUlQoc3RvcmFn
ZU1hbmFnZXIpOworCisgICAgICAgIHN0b3JhZ2VNYW5hZ2VyLT5kZWxldGVTZXNzaW9uU3RvcmFn
ZU9yaWdpbnMoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIH0pOworfQorCit2b2lk
IFN0b3JhZ2VNYW5hZ2VyU2V0OjpkZWxldGVTZXNzaW9uU3RvcmFnZUZvck9yaWdpbnMoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhPiYgb3JpZ2luRGF0YXMsIERlbGV0ZUNhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCit7
CisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgc2Vzc2lvbklELCBjb3BpZWRPcmlnaW5zID0gY3Jvc3NUaHJlYWRDb3B5KG9yaWdpbkRh
dGFzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBt
dXRhYmxlIHsKKyAgICAgICAgYXV0byogc3RvcmFnZU1hbmFnZXIgPSBtX3N0b3JhZ2VNYW5hZ2Vy
cy5nZXQoc2Vzc2lvbklEKTsKKyAgICAgICAgQVNTRVJUKHN0b3JhZ2VNYW5hZ2VyKTsKKworICAg
ICAgICBzdG9yYWdlTWFuYWdlci0+ZGVsZXRlU2Vzc2lvblN0b3JhZ2VFbnRyaWVzRm9yT3JpZ2lu
cyhjb3BpZWRPcmlnaW5zLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgfSk7Cit9
CisKK3ZvaWQgU3RvcmFnZU1hbmFnZXJTZXQ6OmdldExvY2FsU3RvcmFnZU9yaWdpbnMoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBHZXRPcmlnaW5zQ2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxl
cikKK3sKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCBzZXNzaW9uSUQsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8qIHN0b3JhZ2VNYW5hZ2VyID0g
bV9zdG9yYWdlTWFuYWdlcnMuZ2V0KHNlc3Npb25JRCk7CisgICAgICAgIEFTU0VSVChzdG9yYWdl
TWFuYWdlcik7CisKKyAgICAgICAgc3RvcmFnZU1hbmFnZXItPmdldExvY2FsU3RvcmFnZU9yaWdp
bnMoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIH0pOworfQorCit2b2lkIFN0b3Jh
Z2VNYW5hZ2VyU2V0OjpkZWxldGVMb2NhbFN0b3JhZ2VNb2RpZmllZFNpbmNlKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgV2FsbFRpbWUgdGltZSwgRGVsZXRlQ2FsbGJhY2smJiBjb21wbGV0aW9u
SGFuZGxlcikKK3sKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBzZXNzaW9uSUQsIHRpbWUsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8qIHN0b3Jh
Z2VNYW5hZ2VyID0gbV9zdG9yYWdlTWFuYWdlcnMuZ2V0KHNlc3Npb25JRCk7CisgICAgICAgIEFT
U0VSVChzdG9yYWdlTWFuYWdlcik7CisKKyAgICAgICAgc3RvcmFnZU1hbmFnZXItPmRlbGV0ZUxv
Y2FsU3RvcmFnZU9yaWdpbnNNb2RpZmllZFNpbmNlKHRpbWUsIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKKyAgICB9KTsKK30KKwordm9pZCBTdG9yYWdlTWFuYWdlclNldDo6ZGVsZXRlTG9j
YWxTdG9yYWdlRm9yT3JpZ2lucyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiBvcmlnaW5EYXRhcywgRGVsZXRlQ2FsbGJh
Y2smJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzZXNzaW9uSUQsIGNvcGllZE9yaWdpbnMg
PSBjcm9zc1RocmVhZENvcHkob3JpZ2luRGF0YXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICBhdXRvKiBzdG9yYWdl
TWFuYWdlciA9IG1fc3RvcmFnZU1hbmFnZXJzLmdldChzZXNzaW9uSUQpOworICAgICAgICBBU1NF
UlQoc3RvcmFnZU1hbmFnZXIpOworCisgICAgICAgIHN0b3JhZ2VNYW5hZ2VyLT5kZWxldGVMb2Nh
bFN0b3JhZ2VFbnRyaWVzRm9yT3JpZ2lucyhjb3BpZWRPcmlnaW5zLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CisgICAgfSk7Cit9CisKK3ZvaWQgU3RvcmFnZU1hbmFnZXJTZXQ6OmdldExv
Y2FsU3RvcmFnZU9yaWdpbkRldGFpbHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6Ok9yaWdp
bkRldGFpbHM+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIG1fcXVldWUtPmRpc3Bh
dGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHNlc3Npb25JRCwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsK
KyAgICAgICAgYXV0byogc3RvcmFnZU1hbmFnZXIgPSBtX3N0b3JhZ2VNYW5hZ2Vycy5nZXQoc2Vz
c2lvbklEKTsKKyAgICAgICAgQVNTRVJUKHN0b3JhZ2VNYW5hZ2VyKTsKKworICAgICAgICBzdG9y
YWdlTWFuYWdlci0+Z2V0TG9jYWxTdG9yYWdlT3JpZ2luRGV0YWlscyhXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CisgICAgfSk7Cit9CisKK3ZvaWQgU3RvcmFnZU1hbmFnZXJTZXQ6OmNvbm5l
Y3RUb0xvY2FsU3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgU2VjdXJpdHlP
cmlnaW5EYXRhJiYgc2VjdXJpdHlPcmlnaW5EYXRhLCBDb25uZWN0VG9TdG9yYWdlQXJlYUNhbGxi
YWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4o
KSk7CisKKyAgICBhdXRvKiBzdG9yYWdlTWFuYWdlciA9IG1fc3RvcmFnZU1hbmFnZXJzLmdldChz
ZXNzaW9uSUQpOworICAgIEFTU0VSVChzdG9yYWdlTWFuYWdlcik7CisgICAgaWYgKCFzdG9yYWdl
TWFuYWdlcikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihpbnZhbGlkU3RvcmFnZUFyZWFJ
RCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvKiBzdG9yYWdlQXJlYSA9IHN0
b3JhZ2VNYW5hZ2VyLT5jcmVhdGVMb2NhbFN0b3JhZ2VBcmVhKHN0b3JhZ2VOYW1lc3BhY2VJRCwg
V1RGTW92ZShzZWN1cml0eU9yaWdpbkRhdGEpKTsKKyAgICBhdXRvIHN0b3JhZ2VBcmVhSUQgPSBz
dG9yYWdlQXJlYS0+aWRlbnRpZmllcigpOworICAgIGF1dG9baXRlciwgaXNOZXdFbnRyeV0gPSBt
X3N0b3JhZ2VBcmVhcy5hZGQoc3RvcmFnZUFyZWFJRCwgbnVsbHB0cik7CisgICAgaWYgKGlzTmV3
RW50cnkpIHsKKyAgICAgICAgc3RvcmFnZUFyZWEtPnNldFdvcmtRdWV1ZShtX3F1ZXVlLnB0cigp
KTsKKyAgICAgICAgaXRlci0+dmFsdWUgPSBzdG9yYWdlQXJlYTsKKyAgICB9IGVsc2UKKyAgICAg
ICAgQVNTRVJUKHN0b3JhZ2VBcmVhID09IGl0ZXItPnZhbHVlKTsKKworICAgIGNvbXBsZXRpb25I
YW5kbGVyKHN0b3JhZ2VBcmVhSUQpOworICAgIAorICAgIHN0b3JhZ2VBcmVhLT5hZGRMaXN0ZW5l
cihjb25uZWN0aW9uLnVuaXF1ZUlEKCkpOworfQorCit2b2lkIFN0b3JhZ2VNYW5hZ2VyU2V0Ojpj
b25uZWN0VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNl
SUQsIFNlY3VyaXR5T3JpZ2luRGF0YSYmIHRvcExldmVsT3JpZ2luRGF0YSwgU2VjdXJpdHlPcmln
aW5EYXRhJiYgb3JpZ2luRGF0YSwgQ29ubmVjdFRvU3RvcmFnZUFyZWFDYWxsYmFjayYmIGNvbXBs
ZXRpb25IYW5kbGVyKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAg
YXV0byogc3RvcmFnZU1hbmFnZXIgPSBtX3N0b3JhZ2VNYW5hZ2Vycy5nZXQoc2Vzc2lvbklEKTsK
KyAgICBBU1NFUlQoc3RvcmFnZU1hbmFnZXIpOworICAgIGlmICghc3RvcmFnZU1hbmFnZXIpIHsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoaW52YWxpZFN0b3JhZ2VBcmVhSUQpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgYXV0byogc3RvcmFnZUFyZWEgPSBzdG9yYWdlTWFuYWdl
ci0+Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlQXJlYShzdG9yYWdlTmFtZXNwYWNlSUQsIFdU
Rk1vdmUodG9wTGV2ZWxPcmlnaW5EYXRhKSwgV1RGTW92ZShvcmlnaW5EYXRhKSk7CisgICAgYXV0
byBzdG9yYWdlQXJlYUlEID0gc3RvcmFnZUFyZWEtPmlkZW50aWZpZXIoKTsKKyAgICBhdXRvW2l0
ZXIsIGlzTmV3RW50cnldID0gbV9zdG9yYWdlQXJlYXMuYWRkKHN0b3JhZ2VBcmVhSUQsIG51bGxw
dHIpOworICAgIGlmIChpc05ld0VudHJ5KQorICAgICAgICBpdGVyLT52YWx1ZSA9IHN0b3JhZ2VB
cmVhOworICAgIGVsc2UKKyAgICAgICAgQVNTRVJUKHN0b3JhZ2VBcmVhID09IGl0ZXItPnZhbHVl
KTsKKworICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0b3JhZ2VBcmVhSUQpOworCisgICAgc3RvcmFn
ZUFyZWEtPmFkZExpc3RlbmVyKGNvbm5lY3Rpb24udW5pcXVlSUQoKSk7Cit9CisKK3ZvaWQgU3Rv
cmFnZU1hbmFnZXJTZXQ6OmNvbm5lY3RUb1Nlc3Npb25TdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3Qgc3RvcmFn
ZU5hbWVzcGFjZUlELCBTZWN1cml0eU9yaWdpbkRhdGEmJiBzZWN1cml0eU9yaWdpbkRhdGEsIENv
bm5lY3RUb1N0b3JhZ2VBcmVhQ2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBB
U1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIGF1dG8qIHN0b3JhZ2VNYW5hZ2VyID0g
bV9zdG9yYWdlTWFuYWdlcnMuZ2V0KHNlc3Npb25JRCk7CisgICAgQVNTRVJUKHN0b3JhZ2VNYW5h
Z2VyKTsKKyAgICBpZiAoIXN0b3JhZ2VNYW5hZ2VyKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKGludmFsaWRTdG9yYWdlQXJlYUlEKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGF1dG8qIHN0b3JhZ2VBcmVhID0gc3RvcmFnZU1hbmFnZXItPmNyZWF0ZVNlc3Npb25TdG9yYWdl
QXJlYShzdG9yYWdlTmFtZXNwYWNlSUQsIFdURk1vdmUoc2VjdXJpdHlPcmlnaW5EYXRhKSk7Cisg
ICAgYXV0byBzdG9yYWdlQXJlYUlEID0gc3RvcmFnZUFyZWEtPmlkZW50aWZpZXIoKTsKKyAgICBh
dXRvW2l0ZXIsIGlzTmV3RW50cnldID0gbV9zdG9yYWdlQXJlYXMuYWRkKHN0b3JhZ2VBcmVhSUQs
IG51bGxwdHIpOworICAgIGlmIChpc05ld0VudHJ5KQorICAgICAgICBpdGVyLT52YWx1ZSA9IHN0
b3JhZ2VBcmVhOworICAgIGVsc2UKKyAgICAgICAgQVNTRVJUKHN0b3JhZ2VBcmVhID09IGl0ZXIt
PnZhbHVlKTsKKworICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0b3JhZ2VBcmVhSUQpOworICAgIAor
ICAgIHN0b3JhZ2VBcmVhLT5hZGRMaXN0ZW5lcihjb25uZWN0aW9uLnVuaXF1ZUlEKCkpOworfQor
Cit2b2lkIFN0b3JhZ2VNYW5hZ2VyU2V0OjpkaXNjb25uZWN0RnJvbVN0b3JhZ2VBcmVhKElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgdWludDY0X3Qgc3RvcmFnZUFyZWFJRCkKK3sKKyAgICBB
U1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBhdXRvKiBzdG9yYWdlQXJlYSA9IG1fc3Rv
cmFnZUFyZWFzLmdldChzdG9yYWdlQXJlYUlEKTsKKyAgICBBU1NFUlQoc3RvcmFnZUFyZWEpOwor
ICAgIEFTU0VSVChzdG9yYWdlQXJlYS0+aGFzTGlzdGVuZXIoY29ubmVjdGlvbi51bmlxdWVJRCgp
KSk7CisKKyAgICBzdG9yYWdlQXJlYS0+cmVtb3ZlTGlzdGVuZXIoY29ubmVjdGlvbi51bmlxdWVJ
RCgpKTsKK30KKwordm9pZCBTdG9yYWdlTWFuYWdlclNldDo6Z2V0VmFsdWVzKElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgdWludDY0X3Qgc3RvcmFnZUFyZWFJRCwgR2V0VmFsdWVzQ2FsbGJh
Y2smJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigp
KTsKKyAgICBhdXRvKiBzdG9yYWdlQXJlYSA9IG1fc3RvcmFnZUFyZWFzLmdldChzdG9yYWdlQXJl
YUlEKTsKKyAgICBBU1NFUlQoc3RvcmFnZUFyZWEpOworICAgIEFTU0VSVChzdG9yYWdlQXJlYS0+
aGFzTGlzdGVuZXIoY29ubmVjdGlvbi51bmlxdWVJRCgpKSk7CisKKyAgICBjb21wbGV0aW9uSGFu
ZGxlcihzdG9yYWdlQXJlYSA/IHN0b3JhZ2VBcmVhLT5pdGVtcygpIDogSGFzaE1hcDxTdHJpbmcs
IFN0cmluZz4oKSk7Cit9CisKK3ZvaWQgU3RvcmFnZU1hbmFnZXJTZXQ6OnNldEl0ZW0oSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCB1aW50NjRfdCBzdG9yYWdlQXJlYUlELCB1aW50NjRfdCBz
b3VyY2VTdG9yYWdlQXJlYUlELCB1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCwgY29uc3QgU3RyaW5n
JiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQorewor
ICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworICAgIGF1dG8qIHN0b3JhZ2VBcmVhID0g
bV9zdG9yYWdlQXJlYXMuZ2V0KHN0b3JhZ2VBcmVhSUQpOworICAgIEFTU0VSVChzdG9yYWdlQXJl
YSk7CisKKyAgICBib29sIHF1b3RhRXJyb3I7CisgICAgc3RvcmFnZUFyZWEtPnNldEl0ZW0oY29u
bmVjdGlvbi51bmlxdWVJRCgpLCBzb3VyY2VTdG9yYWdlQXJlYUlELCBrZXksIHZhbHVlLCB1cmxT
dHJpbmcsIHF1b3RhRXJyb3IpOworCisgICAgY29ubmVjdGlvbi5zZW5kKE1lc3NhZ2VzOjpTdG9y
YWdlQXJlYU1hcDo6RGlkU2V0SXRlbShzdG9yYWdlTWFwU2VlZCwga2V5LCBxdW90YUVycm9yKSwg
c3RvcmFnZUFyZWFJRCk7Cit9IAorCit2b2lkIFN0b3JhZ2VNYW5hZ2VyU2V0OjpyZW1vdmVJdGVt
KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgdWludDY0X3Qgc3RvcmFnZUFyZWFJRCwgdWlu
dDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwgdWludDY0X3Qgc3RvcmFnZU1hcFNlZWQsIGNvbnN0
IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHVybFN0cmluZykKK3sKKyAgICBBU1NFUlQoIVJ1
bkxvb3A6OmlzTWFpbigpKTsKKyAgICBhdXRvKiBzdG9yYWdlQXJlYSA9IG1fc3RvcmFnZUFyZWFz
LmdldChzdG9yYWdlQXJlYUlEKTsKKyAgICBBU1NFUlQoc3RvcmFnZUFyZWEpOworCisgICAgc3Rv
cmFnZUFyZWEtPnJlbW92ZUl0ZW0oY29ubmVjdGlvbi51bmlxdWVJRCgpLCBzb3VyY2VTdG9yYWdl
QXJlYUlELCBrZXksIHVybFN0cmluZyk7CisKKyAgICBjb25uZWN0aW9uLnNlbmQoTWVzc2FnZXM6
OlN0b3JhZ2VBcmVhTWFwOjpEaWRSZW1vdmVJdGVtKHN0b3JhZ2VNYXBTZWVkLCBrZXkpLCBzdG9y
YWdlQXJlYUlEKTsKK30KKwordm9pZCBTdG9yYWdlTWFuYWdlclNldDo6Y2xlYXIoSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCB1aW50NjRfdCBzdG9yYWdlQXJlYUlELCB1aW50NjRfdCBzb3Vy
Y2VTdG9yYWdlQXJlYUlELCB1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCwgY29uc3QgU3RyaW5nJiB1
cmxTdHJpbmcpCit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisgICAgYXV0byog
c3RvcmFnZUFyZWEgPSBtX3N0b3JhZ2VBcmVhcy5nZXQoc3RvcmFnZUFyZWFJRCk7CisgICAgQVNT
RVJUKHN0b3JhZ2VBcmVhKTsKKworICAgIHN0b3JhZ2VBcmVhLT5jbGVhcihjb25uZWN0aW9uLnVu
aXF1ZUlEKCksIHNvdXJjZVN0b3JhZ2VBcmVhSUQsIHVybFN0cmluZyk7CisKKyAgICBjb25uZWN0
aW9uLnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VBcmVhTWFwOjpEaWRDbGVhcihzdG9yYWdlTWFwU2Vl
ZCksIHN0b3JhZ2VBcmVhSUQpOworfQorCit2b2lkIFN0b3JhZ2VNYW5hZ2VyU2V0OjpjbG9uZVNl
c3Npb25TdG9yYWdlTmFtZXNwYWNlKElQQzo6Q29ubmVjdGlvbiYsIFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgdWludDY0X3QgZnJvbVN0b3JhZ2VOYW1lc3BhY2VJRCwgdWludDY0X3QgdG9TdG9y
YWdlTmFtZXNwYWNlSUQpCit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisgICAg
YXV0byogc3RvcmFnZU1hbmFnZXIgPSBtX3N0b3JhZ2VNYW5hZ2Vycy5nZXQoc2Vzc2lvbklEKTsK
KyAgICBBU1NFUlQoc3RvcmFnZU1hbmFnZXIpOworCisgICAgc3RvcmFnZU1hbmFnZXItPmNsb25l
U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoZnJvbVN0b3JhZ2VOYW1lc3BhY2VJRCwgdG9TdG9yYWdl
TmFtZXNwYWNlSUQpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldC5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2Vy
U2V0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uN2JlMzU3ZDVmZDkxNzRmNjI2YzE0NjQ4YzZmOWYyNzNkNGMwZTA4
ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3Rv
cmFnZS9TdG9yYWdlTWFuYWdlclNldC5oCkBAIC0wLDAgKzEsMTAzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
ICJTYW5kYm94RXh0ZW5zaW9uLmgiCisjaW5jbHVkZSAiU3RvcmFnZU1hbmFnZXIuaCIKKyNpbmNs
dWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgorI2luY2x1ZGUgPHBhbC9TZXNzaW9u
SUQuaD4KKwordXNpbmcgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOworCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworY2xhc3MgU2FuZGJveEV4dGVuc2lvbjsKKwordXNpbmcgQ29ubmVjdFRvU3Rv
cmFnZUFyZWFDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QpPjsKK3Vz
aW5nIEdldFZhbHVlc0NhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNo
TWFwPFN0cmluZywgU3RyaW5nPiYpPjsKK3VzaW5nIEdldE9yaWdpbnNDYWxsYmFjayA9IENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoSGFzaFNldDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiYp
PjsKK3VzaW5nIEdldE9yaWdpbkRldGFpbHNDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoVmVjdG9yPExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6T3JpZ2luRGV0YWlscz4mJik+
OwordXNpbmcgRGVsZXRlQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+OworCitj
bGFzcyBTdG9yYWdlTWFuYWdlclNldCA6IHB1YmxpYyBJUEM6OkNvbm5lY3Rpb246OldvcmtRdWV1
ZU1lc3NhZ2VSZWNlaXZlciB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxTdG9yYWdlTWFuYWdl
clNldD4gY3JlYXRlKCk7CisgICAgU3RvcmFnZU1hbmFnZXJTZXQoKTsKKyAgICB+U3RvcmFnZU1h
bmFnZXJTZXQoKTsKKworICAgIHZvaWQgYWRkKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcm
IGxvY2FsU3RvcmFnZURpcmVjdG9yeSwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBsb2NhbFN0
b3JhZ2VEaXJlY3RvcnlIYW5kbGUpOworICAgIHZvaWQgcmVtb3ZlKFBBTDo6U2Vzc2lvbklEKTsK
KyAgICBib29sIGNvbnRhaW5zKFBBTDo6U2Vzc2lvbklEKTsKKworICAgIHZvaWQgYWRkQ29ubmVj
dGlvbihJUEM6OkNvbm5lY3Rpb24mKTsKKyAgICB2b2lkIHJlbW92ZUNvbm5lY3Rpb24oSVBDOjpD
b25uZWN0aW9uJik7CisKKyAgICB2b2lkIHdhaXRVbnRpbFRhc2tzRmluaXNoZWQoKTsKKyAgICB2
b2lkIHdhaXRVbnRpbFN5bmNpbmdMb2NhbFN0b3JhZ2VGaW5pc2hlZCgpOworICAgIHZvaWQgc3Vz
cGVuZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgcmVzdW1lKCk7CisK
KyAgICB2b2lkIGdldFNlc3Npb25TdG9yYWdlT3JpZ2lucyhQQUw6OlNlc3Npb25JRCwgR2V0T3Jp
Z2luc0NhbGxiYWNrJiYpOworICAgIHZvaWQgZGVsZXRlU2Vzc2lvblN0b3JhZ2UoUEFMOjpTZXNz
aW9uSUQsIERlbGV0ZUNhbGxiYWNrJiYpOworICAgIHZvaWQgZGVsZXRlU2Vzc2lvblN0b3JhZ2VG
b3JPcmlnaW5zKFBBTDo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhPiYsIERlbGV0ZUNhbGxiYWNrJiYpOworICAgIHZvaWQgZ2V0TG9jYWxTdG9yYWdl
T3JpZ2lucyhQQUw6OlNlc3Npb25JRCwgR2V0T3JpZ2luc0NhbGxiYWNrJiYpOworICAgIHZvaWQg
ZGVsZXRlTG9jYWxTdG9yYWdlTW9kaWZpZWRTaW5jZShQQUw6OlNlc3Npb25JRCwgV2FsbFRpbWUs
IERlbGV0ZUNhbGxiYWNrJiYpOworICAgIHZvaWQgZGVsZXRlTG9jYWxTdG9yYWdlRm9yT3JpZ2lu
cyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YT4mLCBEZWxldGVDYWxsYmFjayYmKTsKKyAgICB2b2lkIGdldExvY2FsU3RvcmFnZU9yaWdpbkRl
dGFpbHMoUEFMOjpTZXNzaW9uSUQsIEdldE9yaWdpbkRldGFpbHNDYWxsYmFjayYmKTsKKworICAg
IHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7
CisgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2Rlcik7CisK
K3ByaXZhdGU6CisgICAgLy8gTWVzc2FnZSBIYW5kbGVycworICAgIHZvaWQgY29ubmVjdFRvTG9j
YWxTdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb24mLCBQQUw6OlNlc3Npb25JRCAsIHVpbnQ2NF90
IHN0b3JhZ2VOYW1lc3BhY2VJRCwgU2VjdXJpdHlPcmlnaW5EYXRhJiYsIENvbm5lY3RUb1N0b3Jh
Z2VBcmVhQ2FsbGJhY2smJik7CisgICAgdm9pZCBjb25uZWN0VG9UcmFuc2llbnRMb2NhbFN0b3Jh
Z2VBcmVhKElQQzo6Q29ubmVjdGlvbiYsIFBBTDo6U2Vzc2lvbklEICwgdWludDY0X3Qgc3RvcmFn
ZU5hbWVzcGFjZUlELCBTZWN1cml0eU9yaWdpbkRhdGEmJiwgU2VjdXJpdHlPcmlnaW5EYXRhJiYs
IENvbm5lY3RUb1N0b3JhZ2VBcmVhQ2FsbGJhY2smJik7CisgICAgdm9pZCBjb25uZWN0VG9TZXNz
aW9uU3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uJiwgUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90
IHN0b3JhZ2VOYW1lc3BhY2VJRCwgU2VjdXJpdHlPcmlnaW5EYXRhJiYsIENvbm5lY3RUb1N0b3Jh
Z2VBcmVhQ2FsbGJhY2smJik7CisgICAgdm9pZCBkaXNjb25uZWN0RnJvbVN0b3JhZ2VBcmVhKElQ
Qzo6Q29ubmVjdGlvbiYsIHVpbnQ2NF90IHN0b3JhZ2VBcmVhSUQpOworICAgIHZvaWQgZ2V0VmFs
dWVzKElQQzo6Q29ubmVjdGlvbiYsIHVpbnQ2NF90IHN0b3JhZ2VBcmVhSUQsIEdldFZhbHVlc0Nh
bGxiYWNrJiYpOworICAgIHZvaWQgc2V0SXRlbShJUEM6OkNvbm5lY3Rpb24mLCB1aW50NjRfdCBz
dG9yYWdlQXJlYUlELCB1aW50NjRfdCBzb3VyY2VTdG9yYWdlQXJlYUlELCB1aW50NjRfdCBzdG9y
YWdlTWFwU2VlZCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUsIGNvbnN0
IFN0cmluZyYgdXJsU3RyaW5nKTsKKyAgICB2b2lkIHJlbW92ZUl0ZW0oSVBDOjpDb25uZWN0aW9u
JiwgdWludDY0X3Qgc3RvcmFnZUFyZWFJRCwgdWludDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwg
dWludDY0X3Qgc3RvcmFnZU1hcFNlZWQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcm
IHVybFN0cmluZyk7CisgICAgdm9pZCBjbGVhcihJUEM6OkNvbm5lY3Rpb24mLCB1aW50NjRfdCBz
dG9yYWdlQXJlYUlELCB1aW50NjRfdCBzb3VyY2VTdG9yYWdlQXJlYUlELCB1aW50NjRfdCBzdG9y
YWdlTWFwU2VlZCwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpOworICAgIHZvaWQgY2xvbmVTZXNz
aW9uU3RvcmFnZU5hbWVzcGFjZShJUEM6OkNvbm5lY3Rpb24mLCBQQUw6OlNlc3Npb25JRCwgdWlu
dDY0X3QgZnJvbVN0b3JhZ2VOYW1lc3BhY2VJRCwgdWludDY0X3QgdG9TdG9yYWdlTmFtZXNwYWNl
SUQpOworCisgICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgUmVmUHRyPFN0b3JhZ2VNYW5hZ2Vy
Pj4gbV9zdG9yYWdlTWFuYWdlcnM7CisgICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgU3RyaW5n
PiBtX3N0b3JhZ2VNYW5hZ2VyUGF0aHM7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgU3RvcmFnZU1h
bmFnZXI6OlN0b3JhZ2VBcmVhKj4gbV9zdG9yYWdlQXJlYXM7IC8vIHN0b3JhZ2VBcmVhIGlzIGtl
cHQgYWxpdmUgYnkgc3RvcmFnZW5hbWVzcGFjZQorCisgICAgSGFzaFNldDxJUEM6OkNvbm5lY3Rp
b246OlVuaXF1ZUlEPiBtX2Nvbm5lY3Rpb25zOworICAgIFJlZjxXb3JrUXVldWU+IG1fcXVldWU7
CisKKyAgICBlbnVtIGNsYXNzIFN0YXRlIHsKKyAgICAgICAgUnVubmluZywKKyAgICAgICAgV2ls
bFN1c3BlbmQsCisgICAgICAgIFN1c3BlbmRlZAorICAgIH07CisgICAgU3RhdGUgbV9zdGF0ZSB7
IFN0YXRlOjpSdW5uaW5nIH07CisgICAgTG9jayBtX3N0YXRlTG9jazsKKyAgICBDb25kaXRpb24g
bV9zdGF0ZUNoYW5nZUNvbmRpdGlvbjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VN
YW5hZ2VyU2V0Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJT
dG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0Lm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUwYzEzYTAw
YmMzNWI5MTVmZWFkODQwMDVkYTM0N2QyN2M3ZDE3ZDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQubWVz
c2FnZXMuaW4KQEAgLTAsMCArMSwzNCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFy
ZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IK
KyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCittZXNzYWdlcyAtPiBTdG9yYWdlTWFuYWdlclNldCB7CisgICAgQ29ubmVjdFRv
TG9jYWxTdG9yYWdlQXJlYShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHN0b3Jh
Z2VOYW1lc3BhY2VJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBzZWN1cml0
eU9yaWdpbkRhdGEpIC0+ICh1aW50NjRfdCBzdG9yYWdlQXJlYUlEKSBTeW5jaHJvbm91cyBXYW50
c0Nvbm5lY3Rpb24KKyAgICBDb25uZWN0VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBzdHJ1Y3Qg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHRvcExldmVsU2VjdXJpdHlPcmlnaW5EYXRhLCBz
dHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHNlY3VyaXR5T3JpZ2luRGF0YSkgLT4g
KHVpbnQ2NF90IHN0b3JhZ2VBcmVhSUQpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgorICAg
IENvbm5lY3RUb1Nlc3Npb25TdG9yYWdlQXJlYShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVp
bnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSBzZWN1cml0eU9yaWdpbkRhdGEpIC0+ICh1aW50NjRfdCBzdG9yYWdlQXJlYUlEKSBTeW5j
aHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KKyAgICBEaXNjb25uZWN0RnJvbVN0b3JhZ2VBcmVhKHVp
bnQ2NF90IHN0b3JhZ2VBcmVhSUQpIFdhbnRzQ29ubmVjdGlvbgorICAgIEdldFZhbHVlcyh1aW50
NjRfdCBzdG9yYWdlQXJlYUlEKSAtPiAoSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gdmFsdWVzKSBT
eW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KKyAgICBDbG9uZVNlc3Npb25TdG9yYWdlTmFtZXNw
YWNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgZnJvbVN0b3JhZ2VOYW1lc3Bh
Y2VJRCwgdWludDY0X3QgdG9TdG9yYWdlTmFtZXNwYWNlSUQpIFdhbnRzQ29ubmVjdGlvbgorCisg
ICAgU2V0SXRlbSh1aW50NjRfdCBzdG9yYWdlQXJlYUlELCB1aW50NjRfdCBzb3VyY2VTdG9yYWdl
QXJlYUlELCB1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCwgU3RyaW5nIGtleSwgU3RyaW5nIHZhbHVl
LCBTdHJpbmcgdXJsU3RyaW5nKSBXYW50c0Nvbm5lY3Rpb24KKyAgICBSZW1vdmVJdGVtKHVpbnQ2
NF90IHN0b3JhZ2VBcmVhSUQsIHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIHVpbnQ2NF90
IHN0b3JhZ2VNYXBTZWVkLCBTdHJpbmcga2V5LCBTdHJpbmcgdXJsU3RyaW5nKSBXYW50c0Nvbm5l
Y3Rpb24KKyAgICBDbGVhcih1aW50NjRfdCBzdG9yYWdlQXJlYUlELCB1aW50NjRfdCBzb3VyY2VT
dG9yYWdlQXJlYUlELCB1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCwgU3RyaW5nIHVybFN0cmluZykg
V2FudHNDb25uZWN0aW9uCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJz
aXRlRGF0YVN0b3JlUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRl
RGF0YVN0b3JlUGFyYW1ldGVycy5jcHAKaW5kZXggZDkxYTM0ZjZhOTI3MjVjMTQxNzczZjA4YWI0
MjllN2U4ZTU4NjNjMy4uNjRhMGMxYmJiNDllNmZhZTJkODdlMTBkOWRlZTE1ODRiMDBmMDk4ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRl
cnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0
ZXJzLmNwcApAQCAtNTMsNiArNTMsOCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJz
OjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgc2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSA8PCBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogI2VuZGlmCiAKKyAgICBlbmNvZGVyIDw8IGxv
Y2FsU3RvcmFnZURpcmVjdG9yeSA8PCBsb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5k
bGU7CisKICAgICBlbmNvZGVyIDw8IHBlck9yaWdpblN0b3JhZ2VRdW90YTsKICAgICBlbmNvZGVy
IDw8IHBlclRoaXJkUGFydHlPcmlnaW5TdG9yYWdlUXVvdGE7CiB9CkBAIC0xMjEsNiArMTIzLDE4
IEBAIE9wdGlvbmFsPFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzPiBXZWJzaXRlRGF0YVN0b3Jl
UGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjCiAgICAgcGFyYW1ldGVycy5zZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgqc2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAjZW5kaWYKIAorICAg
IE9wdGlvbmFsPFN0cmluZz4gbG9jYWxTdG9yYWdlRGlyZWN0b3J5OworICAgIGRlY29kZXIgPj4g
bG9jYWxTdG9yYWdlRGlyZWN0b3J5OworICAgIGlmICghbG9jYWxTdG9yYWdlRGlyZWN0b3J5KQor
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHBhcmFtZXRlcnMubG9jYWxTdG9yYWdl
RGlyZWN0b3J5ID0gV1RGTW92ZSgqbG9jYWxTdG9yYWdlRGlyZWN0b3J5KTsKKyAgICAKKyAgICBP
cHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGxvY2FsU3RvcmFnZURpcmVjdG9yeUV4
dGVuc2lvbkhhbmRsZTsKKyAgICBkZWNvZGVyID4+IGxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVu
c2lvbkhhbmRsZTsKKyAgICBpZiAoIWxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRs
ZSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBwYXJhbWV0ZXJzLmxvY2FsU3Rv
cmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoKmxvY2FsU3RvcmFnZURpcmVj
dG9yeUV4dGVuc2lvbkhhbmRsZSk7CisKICAgICBPcHRpb25hbDx1aW50NjRfdD4gcGVyT3JpZ2lu
U3RvcmFnZVF1b3RhOwogICAgIGRlY29kZXIgPj4gcGVyT3JpZ2luU3RvcmFnZVF1b3RhOwogICAg
IGlmICghcGVyT3JpZ2luU3RvcmFnZVF1b3RhKQpAQCAtMTQ5LDYgKzE2Myw3IEBAIFdlYnNpdGVE
YXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOjpwcml2YXRlU2Vz
c2lvblBhcmFtZXRlcnMoCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgICAgICAsIHsg
fSwgeyB9CiAjZW5kaWYKKyAgICAgICAgLCB7IH0sIHsgfQogICAgIH07CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmggYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oCmluZGV4IDk5
MmZlZTk3ZDA5OTc0YzlmMzQ3ZjZjNzBkYWExY2ViZjNlMmYyNGYuLjZmZWNlM2YxNTRmZTlkN2Zi
OThiZmM5N2Q5YjFiN2JmZjQyNGYzOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaApAQCAtNzAsNiArNzAsOSBAQCBzdHJ1Y3QgV2Vi
c2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgewogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBz
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogI2VuZGlm
CiAKKyAgICBTdHJpbmcgbG9jYWxTdG9yYWdlRGlyZWN0b3J5OworICAgIFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZSBsb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CisKICAgICB1
aW50NjRfdCBwZXJPcmlnaW5TdG9yYWdlUXVvdGEgeyBXZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5h
Z2VyOjpkZWZhdWx0UXVvdGEoKSB9OwogICAgIHVpbnQ2NF90IHBlclRoaXJkUGFydHlPcmlnaW5T
dG9yYWdlUXVvdGEgeyBXZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2VyOjpkZWZhdWx0VGhpcmRQ
YXJ0eVF1b3RhKCkgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0
IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCA3OTE2ZTIzYjc3ZWVmYmMwOGIxOTcw
NDI3OTdmMDAwNDhjZmMxNjNmLi5iNzkwOTc0N2M1MjEyNGFmNGM2ODMyODA5NDk5MTZjMzU5MGEz
NmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9X
ZWJLaXQvU291cmNlcy50eHQKQEAgLTY5LDYgKzY5LDcgQEAgTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwIEBuby11bmlmeQogTmV0
d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAKIE5ldHdvcmtQ
cm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNwcAogTmV0d29y
a1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAKK05ldHdvcmtQcm9jZXNzL1dl
YlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQuY3BwCiAKIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0Nh
Y2hlU3RvcmFnZUVuZ2luZS5jcHAKIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVu
Z2luZUNhY2hlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5j
cHAKaW5kZXggZDBlYjMxYWUxNjkwMDU3NzJhNmJlYzE0MzdjMmI0MzBkMGNiNGU2ZC4uZDgzYzZi
OGY5ODA2OTYwMzYyNzZjYmFlZmQ1NDJkOGE2ZmQwY2QwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCkBAIC02NjksMyArNjY5LDE5IEBAIHZvaWQgV0tD
b250ZXh0Q2xlYXJDdXJyZW50TW9kaWZpZXJTdGF0ZUZvclRlc3RpbmcoV0tDb250ZXh0UmVmIGNv
bnRleHRSZWYpCiB7CiAgICAgV2ViS2l0Ojp0b0ltcGwoY29udGV4dFJlZiktPmNsZWFyQ3VycmVu
dE1vZGlmaWVyU3RhdGVGb3JUZXN0aW5nKCk7CiB9CisKK3ZvaWQgV0tDb250ZXh0U3luY0xvY2Fs
U3RvcmFnZShXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgdm9pZCogY29udGV4dCwgV0tDb250ZXh0
U3luY0xvY2FsU3RvcmFnZUNhbGxiYWNrIGNhbGxiYWNrKQoreworICAgIFdlYktpdDo6dG9JbXBs
KGNvbnRleHRSZWYpLT5zeW5jTG9jYWxTdG9yYWdlKFtjb250ZXh0LCBjYWxsYmFja10geworICAg
ICAgICBpZiAoY2FsbGJhY2spCisgICAgICAgICAgICBjYWxsYmFjayhjb250ZXh0KTsKKyAgICB9
KTsKK30KKwordm9pZCBXS0NvbnRleHRDbGVhckxlZ2FjeVByaXZhdGVCcm93c2luZ0xvY2FsU3Rv
cmFnZShXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgdm9pZCogY29udGV4dCwgV0tDb250ZXh0Q2xl
YXJMZWdhY3lQcml2YXRlQnJvd3NpbmdMb2NhbFN0b3JhZ2VDYWxsYmFjayBjYWxsYmFjaykKK3sK
KyAgICBXZWJLaXQ6OnRvSW1wbChjb250ZXh0UmVmKS0+Y2xlYXJMZWdhY3lQcml2YXRlQnJvd3Np
bmdMb2NhbFN0b3JhZ2UoW2NvbnRleHQsIGNhbGxiYWNrXSB7CisgICAgICAgIGlmIChjYWxsYmFj
aykKKyAgICAgICAgICAgIGNhbGxiYWNrKGNvbnRleHQpOworICAgIH0pOworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0UHJpdmF0ZS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0UHJpdmF0ZS5oCmluZGV4IGY5Yzdk
MzI5NmU1YzBjZDdmMzM2N2RlMzlhMDMxZDI4M2ZiZTY2NjYuLjU4ZjFhOTIwOTkxMzU0ZjA3MGY2
NWI5ZDNkYTFiYTA3YmY4MzVjMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLQ29udGV4dFByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS0NvbnRleHRQcml2YXRlLmgKQEAgLTEyMCw2ICsxMjAsMTIgQEAgV0tfRVhQT1JUIHZv
aWQgV0tDb250ZXh0U2V0SURCUGVyT3JpZ2luUXVvdGEoV0tDb250ZXh0UmVmIGNvbnRleHQsIHVp
bnQ2NF90IHF1b3QKIAogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0Q2xlYXJDdXJyZW50TW9kaWZp
ZXJTdGF0ZUZvclRlc3RpbmcoV0tDb250ZXh0UmVmIGNvbnRleHQpOwogCit0eXBlZGVmIHZvaWQg
KCpXS0NvbnRleHRTeW5jTG9jYWxTdG9yYWdlQ2FsbGJhY2spKHZvaWQqIGZ1bmN0aW9uQ29udGV4
dCk7CitXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRTeW5jTG9jYWxTdG9yYWdlKFdLQ29udGV4dFJl
ZiBjb250ZXh0UmVmLCB2b2lkKiBjb250ZXh0LCBXS0NvbnRleHRTeW5jTG9jYWxTdG9yYWdlQ2Fs
bGJhY2sgY2FsbGJhY2spOworCit0eXBlZGVmIHZvaWQgKCpXS0NvbnRleHRDbGVhckxlZ2FjeVBy
aXZhdGVCcm93c2luZ0xvY2FsU3RvcmFnZUNhbGxiYWNrKSh2b2lkKiBmdW5jdGlvbkNvbnRleHQp
OworV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0Q2xlYXJMZWdhY3lQcml2YXRlQnJvd3NpbmdMb2Nh
bFN0b3JhZ2UoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIHZvaWQqIGNvbnRleHQsIFdLQ29udGV4
dENsZWFyTGVnYWN5UHJpdmF0ZUJyb3dzaW5nTG9jYWxTdG9yYWdlQ2FsbGJhY2sgY2FsbGJhY2sp
OworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKaW5kZXggM2M5
NjYwZTJiZTUyNDZhM2NhNmJiYTRlYjhmYTJlYjgwMzEzYTZkMy4uN2IwMTllN2I4ODA4ZDE5Y2Qz
MzI2ZjEzODE4MTFjZWE4YmQ3YzljMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCkBAIC01MjAsNiArNTIwLDE1
IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlQWxsSW5kZXhlZERhdGFiYXNlcyhXS1dl
YnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlCiAgICAgfSk7CiB9CiAKK3ZvaWQgV0tXZWJzaXRl
RGF0YVN0b3JlUmVtb3ZlTG9jYWxTdG9yYWdlKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3Rv
cmVSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUxvY2FsU3RvcmFn
ZUNhbGxiYWNrIGNhbGxiYWNrKQoreworICAgIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRh
VHlwZT4gZGF0YVR5cGVzID0gV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6OkxvY2FsU3RvcmFnZTsK
KyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVt
b3ZlRGF0YShkYXRhVHlwZXMsIC1XYWxsVGltZTo6aW5maW5pdHkoKSwgW2NvbnRleHQsIGNhbGxi
YWNrXSB7CisgICAgICAgIGlmIChjYWxsYmFjaykKKyAgICAgICAgICAgIGNhbGxiYWNrKGNvbnRl
eHQpOworICAgIH0pOworfQorCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUFsbFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25zKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYs
IHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUFsbFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25zQ2FsbGJhY2sgY2FsbGJhY2spCiB7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRl
RGF0YVN0b3JlUmVmLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVE
YXRhU3RvcmVSZWYuaAppbmRleCBjNzZlYjJkNGQ3NDk4YmNjYzEyYzNkNWQyYWJjOGI5MThiOGNk
MmRmLi5hMzk3OWEzYzIzMDE2Mjg0M2M1MzM1MmE0MjU0YWE0MjNjMTE0NDkyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYu
aApAQCAtMTE2LDYgKzExNiw5IEBAIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVJl
bW92ZUFsbFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zKFdLV2Vic2l0ZURhCiB0eXBlZGVmIHZv
aWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVBbGxJbmRleGVkRGF0YWJhc2VzQ2FsbGJhY2sp
KHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7CiBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3Rv
cmVSZW1vdmVBbGxJbmRleGVkRGF0YWJhc2VzKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3Rv
cmVSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUFsbEluZGV4ZWRE
YXRhYmFzZXNDYWxsYmFjayBjYWxsYmFjayk7CiAKK3R5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURh
dGFTdG9yZVJlbW92ZUxvY2FsU3RvcmFnZUNhbGxiYWNrKSh2b2lkKiBmdW5jdGlvbkNvbnRleHQp
OworV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlTG9jYWxTdG9yYWdlKFdL
V2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0
ZURhdGFTdG9yZVJlbW92ZUxvY2FsU3RvcmFnZUNhbGxiYWNrIGNhbGxiYWNrKTsKKwogdHlwZWRl
ZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlR2V0RmV0Y2hDYWNoZU9yaWdpbnNGdW5jdGlvbiko
V0tBcnJheVJlZiwgdm9pZCopOwogV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlR2V0
RmV0Y2hDYWNoZU9yaWdpbnMoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9p
ZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlR2V0RmV0Y2hDYWNoZU9yaWdpbnNGdW5jdGlv
biBmdW5jdGlvbik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNw
cAppbmRleCBjZjhjZjY5MGE4YjI2Y2QzNjdlODc3OTk5NjFmMzViMmJjYjZiNzUwLi5iZGQzYTMz
MzY5MzFhZWI4ODUyNGQ0OTYxYTY3MDk3M2I0YjEzZmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC01ODMsOCArNTgzLDggQEAgTmV0d29ya1Byb2Nl
c3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKFdlYnNpdGVEYXRh
U3RvcmUqIHdpdGgKICAgICBhdXRvIGxvY2FsU3RvcmFnZURpcmVjdG9yeSA9IG1fd2Vic2l0ZURh
dGFTdG9yZSA/IG1fd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlc29sdmVk
TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkgOiBudWxsU3RyaW5nKCk7CiAgICAgaWYgKCFsb2NhbFN0
b3JhZ2VEaXJlY3RvcnkpCiAgICAgICAgIGxvY2FsU3RvcmFnZURpcmVjdG9yeSA9IEFQSTo6V2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpOwotICAgIHBhcmFt
ZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJz
LmxvY2FsU3RvcmFnZURpcmVjdG9yeSA9IGxvY2FsU3RvcmFnZURpcmVjdG9yeTsKLSAgICBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkobG9jYWxTdG9y
YWdlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLm5ldHdv
cmtTZXNzaW9uUGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUp
OworICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubG9jYWxTdG9yYWdl
RGlyZWN0b3J5ID0gbG9jYWxTdG9yYWdlRGlyZWN0b3J5OworICAgIFNhbmRib3hFeHRlbnNpb246
OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShsb2NhbFN0b3JhZ2VEaXJlY3Rvcnks
IHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0
b3J5RXh0ZW5zaW9uSGFuZGxlKTsKIAogICAgIGlmIChtX3dlYnNpdGVEYXRhU3RvcmUpCiAgICAg
ICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25Q
YXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSBtX3dlYnNpdGVEYXRh
U3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5yZXNvbHZlZFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
aXJlY3RvcnkoKTsKQEAgLTE4MTEsNiArMTgxMSwxOSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpz
ZXRJREJQZXJPcmlnaW5RdW90YSh1aW50NjRfdCBxdW90YSkKICNlbmRpZgogfQogCit2b2lkIFdl
YlByb2Nlc3NQb29sOjpzeW5jTG9jYWxTdG9yYWdlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBzZW5kU3luY1RvTmV0d29ya2luZ1Byb2Nlc3Mo
TWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTeW5jTG9jYWxTdG9yYWdlKCksIE1lc3NhZ2VzOjpO
ZXR3b3JrUHJvY2Vzczo6U3luY0xvY2FsU3RvcmFnZTo6UmVwbHkoKSk7CisgICAgY29tcGxldGlv
bkhhbmRsZXIoKTsKK30KKwordm9pZCBXZWJQcm9jZXNzUG9vbDo6Y2xlYXJMZWdhY3lQcml2YXRl
QnJvd3NpbmdMb2NhbFN0b3JhZ2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQoreworICAgIGlmIChtX25ldHdvcmtQcm9jZXNzKQorICAgICAgICBtX25ldHdv
cmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6Q2xlYXJMZWdhY3lQcml2
YXRlQnJvd3NpbmdMb2NhbFN0b3JhZ2UoKSwgMCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoKTsK
K30KKwogdm9pZCBXZWJQcm9jZXNzUG9vbDo6YWxsb3dTcGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVG
b3JIb3N0KGNvbnN0IFdlYkNlcnRpZmljYXRlSW5mbyogY2VydGlmaWNhdGUsIGNvbnN0IFN0cmlu
ZyYgaG9zdCkKIHsKICAgICBlbnN1cmVOZXR3b3JrUHJvY2VzcygpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggMmNjYjQ3ZjFhZTY0ZmFlMzZhZmMxMWEzYzE1
NTkwYjc3MDUzNjM1MS4uYzAyZTZjNTRlZmNmY2I4NWQ0NjZmYjBmYTZlMjI3OGVhMDJjMjY4NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC0zMTksNiArMzE5
LDggQEAgcHVibGljOgogICAgIHZvaWQgc3luY05ldHdvcmtQcm9jZXNzQ29va2llcygpOwogCiAg
ICAgdm9pZCBzZXRJREJQZXJPcmlnaW5RdW90YSh1aW50NjRfdCk7CisgICAgdm9pZCBzeW5jTG9j
YWxTdG9yYWdlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFjayk7CisgICAgdm9p
ZCBjbGVhckxlZ2FjeVByaXZhdGVCcm93c2luZ0xvY2FsU3RvcmFnZShDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY2FsbGJhY2spOwogCiAgICAgdm9pZCBzZXRTaG91bGRNYWtlTmV4dFdlYlBy
b2Nlc3NMYXVuY2hGYWlsRm9yVGVzdGluZyhib29sIHZhbHVlKSB7IG1fc2hvdWxkTWFrZU5leHRX
ZWJQcm9jZXNzTGF1bmNoRmFpbEZvclRlc3RpbmcgPSB2YWx1ZTsgfQogICAgIGJvb2wgc2hvdWxk
TWFrZU5leHRXZWJQcm9jZXNzTGF1bmNoRmFpbEZvclRlc3RpbmcoKSBjb25zdCB7IHJldHVybiBt
X3Nob3VsZE1ha2VOZXh0V2ViUHJvY2Vzc0xhdW5jaEZhaWxGb3JUZXN0aW5nOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0
YVN0b3JlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2Nv
YS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KaW5kZXggYTY4MzZkOTI1MTYzMmI4MTg1NTMxNmI2
ZGM0ZWE3OGZmODFjYjZiNi4uOTZkZTI3OTliZWExNzBlNGM4ZTA2YzQ4OTI0NDg3ZmUzYmZjMmY5
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2Ev
V2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQpAQCAtMTA3LDExICsxMDcs
NiBAQCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0
ZXJzKCkKICAgICBpZiAoIXJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkuaXNFbXB0eSgp
KQogICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJl
Y3RvcnkocmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgcmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RpcmVjdG9yeUhhbmRsZSk7CiAKLSAgICBhdXRvIGxvY2FsU3RvcmFnZURpcmVjdG9yeSA9
IHJlc29sdmVkTG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlIGxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKLSAgICBpZiAoIWxv
Y2FsU3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpCi0gICAgICAgIFNhbmRib3hFeHRlbnNpb246
OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShsb2NhbFN0b3JhZ2VEaXJlY3Rvcnks
IGxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7Ci0KICAgICBhdXRvIG5ldHdv
cmtDYWNoZURpcmVjdG9yeSA9IHJlc29sdmVkTmV0d29ya0NhY2hlRGlyZWN0b3J5KCk7CiAgICAg
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIG5ldHdvcmtDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhh
bmRsZTsKICAgICBpZiAoIW5ldHdvcmtDYWNoZURpcmVjdG9yeS5pc0VtcHR5KCkpCkBAIC0xNDAs
OCArMTM1LDYgQEAgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgV2Vic2l0ZURhdGFTdG9yZTo6
cGFyYW1ldGVycygpCiAgICAgICAgIG1fY29uZmlndXJhdGlvbi0+ZGV2aWNlTWFuYWdlbWVudFJl
c3RyaWN0aW9uc0VuYWJsZWQoKSwKICAgICAgICAgbV9jb25maWd1cmF0aW9uLT5hbGxMb2Fkc0Js
b2NrZWRCeURldmljZU1hbmFnZW1lbnRSZXN0cmljdGlvbnNGb3JUZXN0aW5nKCksCiAgICAgICAg
IFdURk1vdmUocmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbnVhbFByZXZhbGVudFJlc291cmNlKSwK
LSAgICAgICAgV1RGTW92ZShsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpLAotICAgICAgICBXVEZNb3Zl
KGxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSksCiAgICAgICAgIFdURk1vdmUo
bmV0d29ya0NhY2hlRGlyZWN0b3J5KSwKICAgICAgICAgV1RGTW92ZShuZXR3b3JrQ2FjaGVEaXJl
Y3RvcnlFeHRlbnNpb25IYW5kbGUpLAogICAgIH07CkBAIC0xNzYsNiArMTY5LDEwIEBAIFdlYnNp
dGVEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMoKQogICAg
IGlmICghcGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5LmlzRW1w
dHkoKSkKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRl
RGlyZWN0b3J5KHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSwg
cGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5RXh0ZW5zaW9uSGFu
ZGxlKTsKICNlbmRpZgorICAgIAorICAgIHBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5
ID0gcmVzb2x2ZWRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKTsKKyAgICBpZiAoIXBhcmFtZXRlcnMu
bG9jYWxTdG9yYWdlRGlyZWN0b3J5LmlzRW1wdHkoKSkKKyAgICAgICAgU2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KHBhcmFtZXRlcnMubG9jYWxTdG9y
YWdlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhh
bmRsZSk7CiAKICAgICBwYXJhbWV0ZXJzLnBlck9yaWdpblN0b3JhZ2VRdW90YSA9IHBlck9yaWdp
blN0b3JhZ2VRdW90YSgpOwogICAgIHBhcmFtZXRlcnMucGVyVGhpcmRQYXJ0eU9yaWdpblN0b3Jh
Z2VRdW90YSA9IHBlclRoaXJkUGFydHlPcmlnaW5TdG9yYWdlUXVvdGEoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5j
cHAKaW5kZXggOTRjNGQ1OThiNjAzN2E2OTk3MTJkMTdiOWZhN2M1ZWIxNjRhNmM1OC4uNWI1MTBj
ZGFhMGM3YWIyM2M5MDM3ZmE3MzU5ZmU5M2Q3M2QzZGQ5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAg
LTE5NTcsOCArMTk1Nyw4IEBAIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRh
U3RvcmU6OnBhcmFtZXRlcnMoKQogCiAgICAgYXV0byBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBy
ZXNvbHZlZExvY2FsU3RvcmFnZURpcmVjdG9yeSgpOwogICAgIGlmICghbG9jYWxTdG9yYWdlRGly
ZWN0b3J5LmlzRW1wdHkoKSkgewotICAgICAgICBwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFy
YW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBsb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7Ci0g
ICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9y
eShsb2NhbFN0b3JhZ2VEaXJlY3RvcnksIHBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0
ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CisgICAgICAgIHBhcmFt
ZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gbG9jYWxTdG9yYWdlRGlyZWN0b3J5OworICAg
ICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3Rvcnko
bG9jYWxTdG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeUV4
dGVuc2lvbkhhbmRsZSk7CiAgICAgfQogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAy
YzA4ZjVlNGQ3ZjhhNjY5YmRkM2MwMTk0NDI3MzllY2NhYTk2NjZiLi4xMjlmMDk3OTk4NGM2YjBk
ZDVkMjU5MTExODdhZjkyY2IyNmZiOGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI5Myw4ICsyOTMsNiBAQAogCQkxQUIxRjc5NzFE
MUIzNjEzMDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yTWVzc2FnZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjFGNzkzMUQxQjM2MTMw
MDdDOUJEMSAvKiBXZWJQYXltZW50Q29vcmRpbmF0b3JNZXNzYWdlcy5oICovOyB9OwogCQkxQUIx
Rjc5ODFEMUIzNjEzMDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNZXNzYWdl
UmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUFCMUY3OTQxRDFCMzYxMzAwN0M5QkQxIC8qIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5
TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJMUFCMUY3OTkxRDFCMzYxMzAwN0M5QkQxIC8q
IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjFGNzk1MUQxQjM2MTMwMDdDOUJEMSAvKiBX
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1lc3NhZ2VzLmggKi87IH07Ci0JCTFBQjMxQTk2MTZC
QzY4ODEwMEY2REJDOSAvKiBTdG9yYWdlTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUIzMUE5NDE2QkM2ODgx
MDBGNkRCQzkgLyogU3RvcmFnZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwotCQkx
QUIzMUE5NzE2QkM2ODgxMDBGNkRCQzkgLyogU3RvcmFnZU1hbmFnZXJNZXNzYWdlcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFCMzFBOTUxNkJDNjg4
MTAwRjZEQkM5IC8qIFN0b3JhZ2VNYW5hZ2VyTWVzc2FnZXMuaCAqLzsgfTsKIAkJMUFCNDBFRTYx
QkY2NzdFMzAwQkE4MUJFIC8qIFdLTWVudUl0ZW1JZGVudGlmaWVyc1ByaXZhdGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjQwRUU0MUJGNjc3RTMw
MEJBODFCRSAvKiBXS01lbnVJdGVtSWRlbnRpZmllcnNQcml2YXRlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUFCNDc0RDgxODRENDNGRDAwNTFC
NjIyIC8qIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFCNDc0RDcxODRENDNGRDAwNTFCNjIyIC8qIFdLQnVu
ZGxlUGFnZUxvYWRlckNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTFBQjQ3NERBMTg0RDQ0MjUwMDUxQjYyMiAvKiBXS0J1bmRsZVBhZ2VS
ZXNvdXJjZUxvYWRDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDFBQjQ3NEQ5MTg0RDQ0MjUwMDUxQjYyMiAvKiBXS0J1bmRsZVBhZ2VSZXNvdXJj
ZUxvYWRDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtMTI3MSw2ICsxMjY5LDkgQEAKIAkJOTM1RUVCOUIxMjc3NjE3QzAwMzMyMkI4IC8q
IFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTM1RUVCOTgxMjc3NjE2RDAwMzMyMkI4IC8qIFdLQnVuZGxl
QmFja0ZvcndhcmRMaXN0SXRlbS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTkzNUVFQjlGMTI3NzYxQUMwMDMzMjJCOCAvKiBXS0J1bmRsZUJhY2tG
b3J3YXJkTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTM1RUVCOTYxMjc3NjE2RDAwMzMyMkI4IC8qIFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTM3MzVF
QkIxQzkyOTg2MzAwMzM2RkE3IC8qIFdLUHJldmlld0FjdGlvbkl0ZW1JbnRlcm5hbC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM3MzVFQkExQzkyOTg2
MzAwMzM2RkE3IC8qIFdLUHJldmlld0FjdGlvbkl0ZW1JbnRlcm5hbC5oICovOyB9OworCQk5Mzc2
Mjc0NDIyRjExNUREMDAzNUJGODAgLyogU3RvcmFnZU1hbmFnZXJTZXQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNzYyNzQyMjJGMTE1Q0QwMDM1QkY4
MCAvKiBTdG9yYWdlTWFuYWdlclNldC5oICovOyB9OworCQk5Mzc5MTBEQzIyRjE3MTAzMDAzQkEx
NDQgLyogU3RvcmFnZU1hbmFnZXJTZXRNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM3OTEwREIyMkYxNkZDOTAwM0JBMTQ0
IC8qIFN0b3JhZ2VNYW5hZ2VyU2V0TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJOTM3OTEw
REUyMkYxNzFBOTAwM0JBMTQ0IC8qIFN0b3JhZ2VNYW5hZ2VyU2V0TWVzc2FnZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNzkxMEREMjJGMTcxODEw
MDNCQTE0NCAvKiBTdG9yYWdlTWFuYWdlclNldE1lc3NhZ2VzLmggKi87IH07CiAJCTkzOTEwNzRG
MUJGNkJDNjUwMDhDMTdBRCAvKiBXS1ByZXZpZXdFbGVtZW50SW5mb0ludGVybmFsLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzkxMDc0RTFCRjZCQzY1
MDA4QzE3QUQgLyogV0tQcmV2aWV3RWxlbWVudEluZm9JbnRlcm5hbC5oICovOyB9OwogCQk5Mzkx
RjJDQjEyMUI2N0FEMDBFQkY3RTggLyogV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM5MUYyODMxMjFCMzhG
NTAwRUJGN0U4IC8qIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaCAqLzsgfTsKIAkJOTM5NUU2
OEExQkYyQzMzMjAwRjQ5QkNFIC8qIFdLUHJldmlld0VsZW1lbnRJbmZvLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5Mzk1RTY4OTFCRjJDMzMyMDBGNDlC
Q0UgLyogV0tQcmV2aWV3RWxlbWVudEluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQdWJsaWMsICk7IH07IH07CkBAIC0xNzAzLDYgKzE3MDQsOCBAQAogCQkJY29tcGlsZXJTcGVj
ID0gY29tLmFwcGxlLmNvbXBpbGVycy5wcm94eS5zY3JpcHQ7CiAJCQlmaWxlUGF0dGVybnMgPSAi
Ki5oIjsKIAkJCWZpbGVUeXBlID0gcGF0dGVybi5wcm94eTsKKwkJCWlucHV0RmlsZXMgPSAoCisJ
CQkpOwogCQkJaXNFZGl0YWJsZSA9IDE7CiAJCQlvdXRwdXRGaWxlcyA9ICgKIAkJCQkiJChIRUFE
RVJfT1VUUFVUX0RJUikvJChJTlBVVF9GSUxFX05BTUUpIiwKQEAgLTIzMDMsOCArMjMwNiw2IEBA
CiAJCTFBQjFGNzkzMUQxQjM2MTMwMDdDOUJEMSAvKiBXZWJQYXltZW50Q29vcmRpbmF0b3JNZXNz
YWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJQYXltZW50Q29vcmRp
bmF0b3JNZXNzYWdlcy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJQYXltZW50
Q29vcmRpbmF0b3JNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9
OwogCQkxQUIxRjc5NDFEMUIzNjEzMDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0g
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1lc3NhZ2VS
ZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTFBQjFG
Nzk1MUQxQjM2MTMwMDdDOUJEMSAvKiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1lc3NhZ2Vz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYlBheW1lbnRDb29yZGluYXRv
clByb3h5TWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNf
RElSOyB9OwotCQkxQUIzMUE5NDE2QkM2ODgxMDBGNkRCQzkgLyogU3RvcmFnZU1hbmFnZXJNZXNz
YWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU3Rv
cmFnZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0Mi9TdG9yYWdlTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlM
VF9QUk9EVUNUU19ESVI7IH07Ci0JCTFBQjMxQTk1MTZCQzY4ODEwMEY2REJDOSAvKiBTdG9yYWdl
TWFuYWdlck1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFN0b3Jh
Z2VNYW5hZ2VyTWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvU3RvcmFn
ZU1hbmFnZXJNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9Owog
CQkxQUI0MEVFMzFCRjY3N0UzMDBCQTgxQkUgLyogV0tNZW51SXRlbUlkZW50aWZpZXJzLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tNZW51SXRlbUlkZW50aWZp
ZXJzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUI0MEVFNDFCRjY3N0UzMDBC
QTgxQkUgLyogV0tNZW51SXRlbUlkZW50aWZpZXJzUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXS01lbnVJdGVtSWRlbnRpZmllcnNQcml2YXRlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQjQ3NEQ3MTg0RDQzRkQwMDUxQjYyMiAvKiBXS0J1bmRs
ZVBhZ2VMb2FkZXJDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tC
dW5kbGVQYWdlTG9hZGVyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0z
ODg0LDYgKzM4ODUsMTEgQEAKIAkJOTM1RUVCOTcxMjc3NjE2RDAwMzMyMkI4IC8qIFdLQnVuZGxl
QmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5MzVFRUI5ODEyNzc2MTZEMDAzMzIyQjggLyogV0tCdW5kbGVCYWNrRm9yd2Fy
ZExpc3RJdGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQnVuZGxlQmFj
a0ZvcndhcmRMaXN0SXRlbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzczNUVC
QTFDOTI5ODYzMDAzMzZGQTcgLyogV0tQcmV2aWV3QWN0aW9uSXRlbUludGVybmFsLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLUHJldmlld0FjdGlvbkl0ZW1JbnRlcm5hbC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5Mzc2Mjc0MTIyRjExNUNEMDAzNUJGODAg
LyogU3RvcmFnZU1hbmFnZXJTZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU3RvcmFnZU1hbmFnZXJTZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk5Mzc2Mjc0MjIyRjExNUNEMDAzNUJGODAgLyogU3RvcmFnZU1hbmFnZXJTZXQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RvcmFnZU1hbmFnZXJTZXQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTM3NjI3NDMyMkYxMTVDRTAwMzVCRjgwIC8qIFN0b3JhZ2VN
YW5hZ2VyU2V0Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFN0b3JhZ2VNYW5h
Z2VyU2V0Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5Mzc5MTBE
QjIyRjE2RkM5MDAzQkExNDQgLyogU3RvcmFnZU1hbmFnZXJTZXRNZXNzYWdlUmVjZWl2ZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU3RvcmFnZU1hbmFnZXJTZXRN
ZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9TdG9yYWdl
TWFuYWdlclNldE1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNU
U19ESVI7IH07CisJCTkzNzkxMEREMjJGMTcxODEwMDNCQTE0NCAvKiBTdG9yYWdlTWFuYWdlclNl
dE1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFN0b3JhZ2VNYW5h
Z2VyU2V0TWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvU3RvcmFnZU1h
bmFnZXJTZXRNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9Owog
CQk5MzkxMDc0RTFCRjZCQzY1MDA4QzE3QUQgLyogV0tQcmV2aWV3RWxlbWVudEluZm9JbnRlcm5h
bC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1ByZXZpZXdFbGVtZW50SW5m
b0ludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzOTFGMjgzMTIxQjM4
RjUwMEVCRjdFOCAvKiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM5MUYyODQxMjFCMzhGNTAwRUJGN0U4IC8qIFdlYkZyYW1l
TmV0d29ya2luZ0NvbnRleHQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMzkxMiw3ICszOTE4LDYgQEAKIAkJOTNCMjYxNDgyMjdEMTQ3MTAwQjk3QTc2IC8q
IGlvcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZv
bGRlcjsgcGF0aCA9IGlvczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCMjYxNDky
MjdEMTQ3MjAwQjk3QTc2IC8qIFN0b3JhZ2VNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFN0b3JhZ2VNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTkzQjI2MTRBMjI3RDE0NzIwMEI5N0E3NiAvKiBTdG9yYWdlTWFuYWdlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdG9yYWdlTWFuYWdlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTkzQjI2MTRCMjI3RDE0NzIwMEI5N0E3NiAvKiBTdG9y
YWdlTWFuYWdlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTdG9yYWdlTWFu
YWdlci5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCMjYxNEMy
MjdEMTQ3MjAwQjk3QTc2IC8qIExvY2FsU3RvcmFnZURhdGFiYXNlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExvY2FsU3RvcmFnZURhdGFiYXNlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCQTA0REEyMTUxQURGMzAwN0Y0NTVGIC8qIFdlYlNX
U2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJT
V1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTkzQkEwNERCMjE1MUFERjMwMDdGNDU1RiAvKiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03Mjg1LDcg
KzcyOTAsOSBAQAogCQkJCTkzQjI2MTQ2MjI3RDE0NzEwMEI5N0E3NiAvKiBMb2NhbFN0b3JhZ2VE
YXRhYmFzZVRyYWNrZXIuaCAqLywKIAkJCQk5M0IyNjE0QTIyN0QxNDcyMDBCOTdBNzYgLyogU3Rv
cmFnZU1hbmFnZXIuY3BwICovLAogCQkJCTkzQjI2MTQ5MjI3RDE0NzIwMEI5N0E3NiAvKiBTdG9y
YWdlTWFuYWdlci5oICovLAotCQkJCTkzQjI2MTRCMjI3RDE0NzIwMEI5N0E3NiAvKiBTdG9yYWdl
TWFuYWdlci5tZXNzYWdlcy5pbiAqLywKKwkJCQk5Mzc2Mjc0MTIyRjExNUNEMDAzNUJGODAgLyog
U3RvcmFnZU1hbmFnZXJTZXQuY3BwICovLAorCQkJCTkzNzYyNzQyMjJGMTE1Q0QwMDM1QkY4MCAv
KiBTdG9yYWdlTWFuYWdlclNldC5oICovLAorCQkJCTkzNzYyNzQzMjJGMTE1Q0UwMDM1QkY4MCAv
KiBTdG9yYWdlTWFuYWdlclNldC5tZXNzYWdlcy5pbiAqLywKIAkJCSk7CiAJCQlwYXRoID0gV2Vi
U3RvcmFnZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC04NzQ1LDggKzg3NTIsOCBA
QAogCQkJCTJERTY5NDNDMThCRDJBNjgwMDVDMTVFNSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250
cm9sbGVyTWVzc2FnZXMuaCAqLywKIAkJCQkxQTMzNERFQjE2REU4Rjg4MDA2QThFMzggLyogU3Rv
cmFnZUFyZWFNYXBNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTFBMzM0REVDMTZERThGODgw
MDZBOEUzOCAvKiBTdG9yYWdlQXJlYU1hcE1lc3NhZ2VzLmggKi8sCi0JCQkJMUFCMzFBOTQxNkJD
Njg4MTAwRjZEQkM5IC8qIFN0b3JhZ2VNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKLQkJ
CQkxQUIzMUE5NTE2QkM2ODgxMDBGNkRCQzkgLyogU3RvcmFnZU1hbmFnZXJNZXNzYWdlcy5oICov
LAorCQkJCTkzNzkxMERCMjJGMTZGQzkwMDNCQTE0NCAvKiBTdG9yYWdlTWFuYWdlclNldE1lc3Nh
Z2VSZWNlaXZlci5jcHAgKi8sCisJCQkJOTM3OTEwREQyMkYxNzE4MTAwM0JBMTQ0IC8qIFN0b3Jh
Z2VNYW5hZ2VyU2V0TWVzc2FnZXMuaCAqLywKIAkJCQk1MTE4RTlBNTFGMjk1OTYzMDAzRUY5RjUg
LyogU3RvcmFnZVByb2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTUxMThFOUE2MUYy
OTU5NjMwMDNFRjlGNSAvKiBTdG9yYWdlUHJvY2Vzc01lc3NhZ2VzLmggKi8sCiAJCQkJNTExOEU5
QTcxRjI5NTk2MzAwM0VGOUY1IC8qIFN0b3JhZ2VQcm9jZXNzUHJveHlNZXNzYWdlUmVjZWl2ZXIu
Y3BwICovLApAQCAtODk0Nyw4ICs4OTU0LDggQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCUNEMTlE
MkU5MjA0NjQwNkYwMDE3MDc0QSAvKiBGdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0aWMuY3BwICov
LAogCQkJCUNEMTlEMkU4MjA0NjQwNkYwMDE3MDc0QSAvKiBGdWxsc2NyZWVuVG91Y2hTZWNoZXVy
aXN0aWMuaCAqLywKLQkJCQlDREE5M0RBRTIyRjhCQ0YzMDA0OTBBNjkgLyogRnVsbHNjcmVlblRv
dWNoU2VjaGV1cmlzdGljUGFyYW1ldGVycy5oICovLAogCQkJCUNEQTkzREFGMjJGOEJDRjQwMDQ5
MEE2OSAvKiBGdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0aWNQYXJhbWV0ZXJzLmNwcCAqLywKKwkJ
CQlDREE5M0RBRTIyRjhCQ0YzMDA0OTBBNjkgLyogRnVsbHNjcmVlblRvdWNoU2VjaGV1cmlzdGlj
UGFyYW1ldGVycy5oICovLAogCQkJCUNEQzI4MzFCMjAxQkQ3OUQwMEU2RTc0NSAvKiBXS0Z1bGxz
Y3JlZW5TdGFja1ZpZXcuaCAqLywKIAkJCQlDREMyODMxQzIwMUJENzlEMDBFNkU3NDUgLyogV0tG
dWxsc2NyZWVuU3RhY2tWaWV3Lm1tICovLAogCQkJCUNEMEM2ODJGMjAxRkQxMDEwMEE1OTQwOSAv
KiBXS0Z1bGxTY3JlZW5WaWV3Q29udHJvbGxlci5oICovLApAQCAtOTM2OSw2ICs5Mzc2LDcgQEAK
IAkJCQkyRDRBRjA4OTIwNDRDM0M0MDA2Qzg4MTcgLyogRnJvbnRCb2FyZFNlcnZpY2VzU1BJLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDRDc4RTExNTFEQjdEN0VEMDAxNEEyREUgLyogRnVsbHNjcmVl
bkNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0QxOUQyRUEyMDQ2NDA2RjAwMTcwNzRBIC8q
IEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpYy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBOTNE
QjAyMkY4QkNGNDAwNDkwQTY5IC8qIEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpY1BhcmFtZXRl
cnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNUJFMUIzMUQ1OTAyREQwMEREN0M2OCAvKiBHYW1l
cGFkRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxNzc1M0YxMThCQUJGMDAwN0Q5RTlBIC8q
IEdlbmVyaWNDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMwNkY0MkYxMkRCQjlCNjAw
MkQ3OERFIC8qIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmggaW4gSGVhZGVy
cyAqLywKQEAgLTk2NTUsNyArOTY2Myw4IEBACiAJCQkJMUFDRUNEMjUxNzE2MkRCMTAwMUZDOUVG
IC8qIFN0b3JhZ2VBcmVhTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTMzNERFRTE2REU4Rjg4
MDA2QThFMzggLyogU3RvcmFnZUFyZWFNYXBNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTNCMjYxNEQyMjdEMTQ5RTAwQjk3QTc2IC8qIFN0b3JhZ2VNYW5hZ2VyLmggaW4gSGVhZGVycyAq
LywKLQkJCQkxQUIzMUE5NzE2QkM2ODgxMDBGNkRCQzkgLyogU3RvcmFnZU1hbmFnZXJNZXNzYWdl
cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTM3NjI3NDQyMkYxMTVERDAwMzVCRjgwIC8qIFN0b3Jh
Z2VNYW5hZ2VyU2V0LmggaW4gSGVhZGVycyAqLywKKwkJCQk5Mzc5MTBERTIyRjE3MUE5MDAzQkEx
NDQgLyogU3RvcmFnZU1hbmFnZXJTZXRNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFF
MDBENkMxODMyN0MxMjAwMDg3REQ3IC8qIFN0cmluZ1JlZmVyZW5jZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMjk2QkQ4NUQxNTAxOUJDMzAwNzFGNDI0IC8qIFN0cmluZ1V0aWxpdGllcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTdGRDMxODYyMkIzNTE2QzAwOEQwRThCIC8qIFN1YkZyYW1lU09BdXRo
b3JpemF0aW9uU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDAwNiw3ICsxMDAxNSw2IEBA
CiAJCQkJMUE0NDVCQTUxODRENUZEQTAwNEIzNDE0IC8qIFdLQ29udGV4dENvbm5lY3Rpb25DbGll
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNDQ1QkEzMTg0RDVGQ0YwMDRCMzQxNCAvKiBXS0Nv
bnRleHREb3dubG9hZENsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE0NDVCQTExODRENUZD
MTAwNEIzNDE0IC8qIFdLQ29udGV4dEhpc3RvcnlDbGllbnQuaCBpbiBIZWFkZXJzICovLAotCQkJ
CUNEQTkzREIwMjJGOEJDRjQwMDQ5MEE2OSAvKiBGdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0aWNQ
YXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTQ0NUI5RjE4NEQ1RkI1MDA0QjM0MTQg
LyogV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTVD
Nzk1RDcwMjI5RjM3M0YwMDNGRjFDNCAvKiBXS0NvbnRleHRNZW51RWxlbWVudEluZm8uaCBpbiBI
ZWFkZXJzICovLAogCQkJCTVDNzk1RDcxMjI5RjM3NTcwMDNGRjFDNCAvKiBXS0NvbnRleHRNZW51
RWxlbWVudEluZm9Qcml2YXRlLmggaW4gSGVhZGVycyAqLywKQEAgLTExMDk1LDYgKzExMTAzLDcg
QEAKIAkJCQkxQTY0MjMwODEyREQwOUVCMDBDQUFFMkMgLyogRHJhd2luZ0FyZWFQcm94eU1lc3Nh
Z2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc4MDIxMkI2QTcxMDBGNDkz
RkQgLyogRW5jb2Rlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUE1NzYwMjE0OTZCOTc5MDBB
NEVFMDYgLyogRXZlbnREaXNwYXRjaGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCUNEQTkzREIxMjJGOEJDRjQwMDQ5MEE2OSAvKiBGdWxsc2NyZWVuVG91Y2hTZWNoZXVy
aXN0aWNQYXJhbWV0ZXJzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTI3NDlGNjQ0MjE0NjU2MUIw
MDgzODBCRiAvKiBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMjc0OUY2NDUyMTQ2NTYxRTAwODM4MEJGIC8qIEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ5MTM0NDEyMTJDRjlGMDAwMTI4QUZEIC8qIEpTTlBN
ZXRob2QuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xMTE1Myw3ICsxMTE2Miw2IEBACiAJCQkJQkM4
Mjg0NEQxNkI1MDgxQzAwQTI3OEZFIC8qIFBsdWdpblNlcnZpY2VFbnRyeVBvaW50Lm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJMkQ5MTM0NEQyMTJDRjlGMDAwMTI4QUZEIC8qIFBsdWdpblZpZXcuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ1NEMzMUIyMTJGNERBNjAwNDlDMTc0IC8qIFByb2Nlc3NM
YXVuY2hlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlDREE5M0RCMTIyRjhCQ0Y0MDA0OTBBNjkg
LyogRnVsbHNjcmVlblRvdWNoU2VjaGV1cmlzdGljUGFyYW1ldGVycy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlDRDI4NjVFRjIyNTU1NjIwMDA2MDZBQzcgLyogUHJvY2Vzc1Rhc2tTdGF0ZU9ic2Vy
dmVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ3MkExRkEyMTJCRjQ2RTAwNTE3QTIwIC8qIFJl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGMjRBMkQx
ODc5RTRCQzAwM0FCRjBDIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdl
UmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xMTE2OCw3ICsxMTE3Niw3IEBACiAJCQkJ
MkQ5MkE3ODcyMTJCNkFCMTAwRjQ5M0ZEIC8qIFNoYXJlYWJsZUJpdG1hcC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkyREU2OTQzRDE4QkQyQTY4MDA1QzE1RTUgLyogU21hcnRNYWduaWZpY2F0aW9u
Q29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTMzNERF
RDE2REU4Rjg4MDA2QThFMzggLyogU3RvcmFnZUFyZWFNYXBNZXNzYWdlUmVjZWl2ZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCi0JCQkJMUFCMzFBOTYxNkJDNjg4MTAwRjZEQkM5IC8qIFN0b3JhZ2VNYW5h
Z2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTkzNzkxMERDMjJGMTcx
MDMwMDNCQTE0NCAvKiBTdG9yYWdlTWFuYWdlclNldE1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkyRDkyQTc4MzIxMkI2QTcxMDBGNDkzRkQgLyogU3RyaW5nUmVmZXJlbmNl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEMTFCNzUxMjEyNkEyODIwMDZGODg3OCAvKiBVbmlm
aWVkU291cmNlMS1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJEMTFCNzUyMjEyNkEyODIwMDZG
ODg3OCAvKiBVbmlmaWVkU291cmNlMS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUu
Y3BwCmluZGV4IDIwY2U1NTkxMWQ3MDY1MWMzMzVhNzBhY2YyNGU1YmRmYzIxYmQ2MzEuLjcxNzhh
NTI5NDdiZTA3ODQwNDFhYWExMjg4MjIxYTI4YzBiNDUyZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNw
cApAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9j
ZXNzUG9vbE1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVy
LmgiCiAjaW5jbHVkZSAiV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiV2Vi
c2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElD
YXN0Lmg+CkBAIC0zNTEsNiArMzUyLDkgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6c2V0UHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZChXZWJQYWdlR3JvdXBQcm94eSogcGFnZUdyb3VwLCBib28KICAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbmFibGVQcml2YXRlQnJvd3NpbmdGb3JUZXN0aW5nKGVu
YWJsZWQpOwogCiAgICAgUGFnZUdyb3VwOjpwYWdlR3JvdXAocGFnZUdyb3VwLT5pZGVudGlmaWVy
KCkpLT5lbmFibGVMZWdhY3lQcml2YXRlQnJvd3NpbmdGb3JUZXN0aW5nKGVuYWJsZWQpOworCisg
ICAgYXV0byB3ZWJTdG9yYWdlTmFtZVNwYWNlUHJvdmlkZXIgPSBXZWJTdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXI6OmdldE9yQ3JlYXRlKHBhZ2VHcm91cC0+cGFnZUdyb3VwSUQoKSk7CisgICAgd2Vi
U3RvcmFnZU5hbWVTcGFjZVByb3ZpZGVyLT5lbmFibGVMZWdhY3lQcml2YXRlQnJvd3NpbmdGb3JU
ZXN0aW5nKGVuYWJsZWQpOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlOjpzZXRQb3B1cEJsb2Nr
aW5nRW5hYmxlZChXZWJQYWdlR3JvdXBQcm94eSogcGFnZUdyb3VwLCBib29sIGVuYWJsZWQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggYTJkYTEyYzYwMjI5Mzcz
Y2Y4Nzg5MmI4M2RhYTU3NzM1MDBhNzdmMi4uODhiZDliZGQwNWRhODA5OGE3ZDU2OTA4ZmY3ZmQ2
ZDMyMjA0MzYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAt
Njc3LDcgKzY3Nyw2IEBAIHZvaWQgV2ViUHJvY2Vzczo6Y3JlYXRlV2ViUGFnZShQYWdlSWRlbnRp
ZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmCiAgICAgLy8gSXQgaXMgbmVj
ZXNzYXJ5IHRvIGNoZWNrIGZvciBwYWdlIGV4aXN0ZW5jZSBoZXJlIHNpbmNlIGR1cmluZyBhIHdp
bmRvdy5vcGVuKCkgKG9yIHRhcmdldGVkCiAgICAgLy8gbGluaykgdGhlIFdlYlBhZ2UgZ2V0cyBj
cmVhdGVkIGJvdGggaW4gdGhlIHN5bmNocm9ub3VzIGhhbmRsZXIgYW5kIHRocm91Z2ggdGhlIG5v
cm1hbCB3YXkuIAogICAgIGF1dG8gcmVzdWx0ID0gbV9wYWdlTWFwLmFkZChwYWdlSUQsIG51bGxw
dHIpOwotICAgIGF1dG8gb2xkUGFnZUlEID0gcGFyYW1ldGVycy5vbGRQYWdlSUQgPyBwYXJhbWV0
ZXJzLm9sZFBhZ2VJRC52YWx1ZSgpIDogcGFnZUlEOwogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRy
eSkgewogICAgICAgICBBU1NFUlQoIXJlc3VsdC5pdGVyYXRvci0+dmFsdWUpOwogICAgICAgICBy
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gV2ViUGFnZTo6Y3JlYXRlKHBhZ2VJRCwgV1RGTW92ZShw
YXJhbWV0ZXJzKSk7CkBAIC02ODgsOCArNjg3LDYgQEAgdm9pZCBXZWJQcm9jZXNzOjpjcmVhdGVX
ZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYK
ICAgICB9IGVsc2UKICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+cmVpbml0aWFsaXpl
V2ViUGFnZShXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKIAotICAgIGVuc3VyZU5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6V2ViUGFnZVdhc0FkZGVkKHJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPnNl
c3Npb25JRCgpLCBwYWdlSUQsIG9sZFBhZ2VJRCksIDApOwotCiAgICAgQVNTRVJUKHJlc3VsdC5p
dGVyYXRvci0+dmFsdWUpOwogfQogCkBAIC02OTcsNyArNjk0LDYgQEAgdm9pZCBXZWJQcm9jZXNz
OjpyZW1vdmVXZWJQYWdlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUGFnZUlkZW50aWZpZXIg
cGFnZUlEKQogewogICAgIEFTU0VSVChtX3BhZ2VNYXAuY29udGFpbnMocGFnZUlEKSk7CiAKLSAg
ICBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNz
YWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OldlYlBhZ2VXYXNSZW1vdmVkKHNl
c3Npb25JRCwgcGFnZUlEKSwgMCk7CiAgICAgcGFnZVdpbGxMZWF2ZVdpbmRvdyhwYWdlSUQpOwog
ICAgIG1fcGFnZU1hcC5yZW1vdmUocGFnZUlEKTsKIApAQCAtMTI0NiwxNiArMTI0Miw2IEBAIE5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbiYgV2ViUHJvY2Vzczo6ZW5zdXJlTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uKCkKICAgICAgICAgICAgIENSQVNIKCk7CiAKICAgICAgICAgbV9uZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24gPSBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZShjb25uZWN0
aW9uSWRlbnRpZmllcik7Ci0KLSAgICAgICAgLy8gVG8gcmVjb3ZlciB3ZWIgc3RvcmFnZSwgbmV0
d29yayBwcm9jZXNzIG5lZWRzIHRvIGtub3cgYWN0aXZlIHdlYnBhZ2VzIHRvIHByZXBhcmUgc2Vz
c2lvbiBzdG9yYWdlLgotICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5ODA1MS4KLSAgICAgICAgLy8gV2VicGFnZSBzaG91bGQgYmUgYWRk
ZWQgd2hlbiBTdG9yYWdlIGlzIHVzZWQsIG5vdCB3aGVuIGNvbm5lY3Rpb24gaXMgcmUtZXN0YWJs
aXNoZWQuCi0gICAgICAgIGZvciAoYXV0byYgcGFnZSA6IG1fcGFnZU1hcCkgewotICAgICAgICAg
ICAgaWYgKCFwYWdlLnZhbHVlKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAg
ICAgICBtX25ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpXZWJQYWdlV2FzQWRkZWQocGFnZS52
YWx1ZS0+c2Vzc2lvbklEKCksIHBhZ2Uua2V5LCBwYWdlLmtleSksIDApOwotICAgICAgICB9CiAg
ICAgfQogICAgIAogICAgIHJldHVybiAqbV9uZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb247CkBAIC0x
Mjg2LDcgKzEyNzIsNyBAQCB2b2lkIFdlYlByb2Nlc3M6Om5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bkNsb3NlZChOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24qIGNvbm5lYwogICAgIEFTU0VSVChtX25l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbik7CiAgICAgQVNTRVJUX1VOVVNFRChjb25uZWN0aW9uLCBt
X25ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiA9PSBjb25uZWN0aW9uKTsKIAotICAgIGZvciAoYXV0
byogc3RvcmFnZUFyZWFNYXAgOiBtX3N0b3JhZ2VBcmVhTWFwcy52YWx1ZXMoKSkKKyAgICBmb3Ig
KGF1dG8qIHN0b3JhZ2VBcmVhTWFwIDogY29weVRvVmVjdG9yKG1fc3RvcmFnZUFyZWFNYXBzLnZh
bHVlcygpKSkKICAgICAgICAgc3RvcmFnZUFyZWFNYXAtPmRpc2Nvbm5lY3QoKTsKIAogI2lmIEVO
QUJMRShJTkRFWEVEX0RBVEFCQVNFKQpAQCAtMTY3NCw4ICsxNjYwLDggQEAgdm9pZCBXZWJQcm9j
ZXNzOjpub25WaXNpYmxlUHJvY2Vzc0NsZWFudXBUaW1lckZpcmVkKCkKIAogdm9pZCBXZWJQcm9j
ZXNzOjpyZWdpc3RlclN0b3JhZ2VBcmVhTWFwKFN0b3JhZ2VBcmVhTWFwJiBzdG9yYWdlQXJlYU1h
cCkKIHsKLSAgICBBU1NFUlQoIW1fc3RvcmFnZUFyZWFNYXBzLmNvbnRhaW5zKHN0b3JhZ2VBcmVh
TWFwLmlkZW50aWZpZXIoKSkpOwotICAgIG1fc3RvcmFnZUFyZWFNYXBzLnNldChzdG9yYWdlQXJl
YU1hcC5pZGVudGlmaWVyKCksICZzdG9yYWdlQXJlYU1hcCk7CisgICAgaWYgKCFtX3N0b3JhZ2VB
cmVhTWFwcy5jb250YWlucyhzdG9yYWdlQXJlYU1hcC5pZGVudGlmaWVyKCkpKQorICAgICAgICBt
X3N0b3JhZ2VBcmVhTWFwcy5zZXQoc3RvcmFnZUFyZWFNYXAuaWRlbnRpZmllcigpLCAmc3RvcmFn
ZUFyZWFNYXApOwogfQogCiB2b2lkIFdlYlByb2Nlc3M6OnVucmVnaXN0ZXJTdG9yYWdlQXJlYU1h
cChTdG9yYWdlQXJlYU1hcCYgc3RvcmFnZUFyZWFNYXApCkBAIC0xNjg3LDcgKzE2NzMsNiBAQCB2
b2lkIFdlYlByb2Nlc3M6OnVucmVnaXN0ZXJTdG9yYWdlQXJlYU1hcChTdG9yYWdlQXJlYU1hcCYg
c3RvcmFnZUFyZWFNYXApCiAKIFN0b3JhZ2VBcmVhTWFwKiBXZWJQcm9jZXNzOjpzdG9yYWdlQXJl
YU1hcCh1aW50NjRfdCBpZGVudGlmaWVyKSBjb25zdAogewotICAgIEFTU0VSVChtX3N0b3JhZ2VB
cmVhTWFwcy5jb250YWlucyhpZGVudGlmaWVyKSk7CiAgICAgcmV0dXJuIG1fc3RvcmFnZUFyZWFN
YXBzLmdldChpZGVudGlmaWVyKTsKIH0KIApAQCAtMTY5NSwxNSArMTY4MCw2IEBAIHZvaWQgV2Vi
UHJvY2Vzczo6ZW5hYmxlUHJpdmF0ZUJyb3dzaW5nRm9yVGVzdGluZyhib29sIGVuYWJsZSkKIHsK
ICAgICBpZiAoZW5hYmxlKQogICAgICAgICBlbnN1cmVMZWdhY3lQcml2YXRlQnJvd3NpbmdTZXNz
aW9uSW5OZXR3b3JrUHJvY2VzcygpOwotCi0gICAgVmVjdG9yPFBhZ2VJZGVudGlmaWVyPiBwYWdl
SURzOwotICAgIGZvciAoYXV0byYgcGFnZSA6IG1fcGFnZU1hcCkgewotICAgICAgICBpZiAocGFn
ZS52YWx1ZSkKLSAgICAgICAgICAgIHBhZ2VJRHMuYXBwZW5kKHBhZ2Uua2V5KTsKLSAgICB9Ci0K
LSAgICBpZiAoIXBhZ2VJRHMuaXNFbXB0eSgpKQotICAgICAgICBlbnN1cmVOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OldlYlByb2Nlc3NTZXNzaW9uQ2hhbmdlZChlbmFibGUgPyBQQUw6OlNl
c3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpIDogUEFMOjpTZXNzaW9uSUQ6OmRlZmF1
bHRTZXNzaW9uSUQoKSwgcGFnZUlEcyksIDApOwogfQogCiB2b2lkIFdlYlByb2Nlc3M6OnNldFJl
c291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGJvb2wgZW5hYmxlZCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwCmlu
ZGV4IDc0MGMwZGJjMDdjYTdkNTVlMTNjZTJiMTkwMjMzM2MwZGUwYTYyNjMuLmIzNGUzNzlkYWFk
OGNmNjlmNDY1ZDRiYjZhYmU1MGVjY2Q3MmZhNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNwcApAQCAtMzMsNiAr
MzMsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU2NoZW1lUmVnaXN0cnkuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3Mu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1N0b3JhZ2VUeXBlLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC01MCw3ICs1MSw3IEBAIFJlZjxTdG9yYWdl
QXJlYUltcGw+IFN0b3JhZ2VBcmVhSW1wbDo6Y3JlYXRlKFJlZjxTdG9yYWdlQXJlYU1hcD4mJiBz
dG9yYWdlQXJlYU1hCiAKIFN0b3JhZ2VBcmVhSW1wbDo6U3RvcmFnZUFyZWFJbXBsKFJlZjxTdG9y
YWdlQXJlYU1hcD4mJiBzdG9yYWdlQXJlYU1hcCkKICAgICA6IG1fc3RvcmFnZUFyZWFJRChnZW5l
cmF0ZVN0b3JhZ2VBcmVhSUQoKSkKLSAgICAsIG1fc3RvcmFnZUFyZWFNYXAoV1RGTW92ZShzdG9y
YWdlQXJlYU1hcCkpCisgICAgLCBtX3N0b3JhZ2VBcmVhTWFwKG1ha2VXZWFrUHRyKHN0b3JhZ2VB
cmVhTWFwLmdldCgpKSkKIHsKIH0KIApAQCAtNjAsNDkgKzYxLDU0IEBAIFN0b3JhZ2VBcmVhSW1w
bDo6flN0b3JhZ2VBcmVhSW1wbCgpCiAKIHVuc2lnbmVkIFN0b3JhZ2VBcmVhSW1wbDo6bGVuZ3Ro
KCkKIHsKLSAgICByZXR1cm4gbV9zdG9yYWdlQXJlYU1hcC0+bGVuZ3RoKCk7CisgICAgcmV0dXJu
IG1fc3RvcmFnZUFyZWFNYXAgPyBtX3N0b3JhZ2VBcmVhTWFwLT5sZW5ndGgoKSA6IDA7CiB9CiAK
IFN0cmluZyBTdG9yYWdlQXJlYUltcGw6OmtleSh1bnNpZ25lZCBpbmRleCkKIHsKLSAgICByZXR1
cm4gbV9zdG9yYWdlQXJlYU1hcC0+a2V5KGluZGV4KTsKKyAgICByZXR1cm4gbV9zdG9yYWdlQXJl
YU1hcCA/IG1fc3RvcmFnZUFyZWFNYXAtPmtleShpbmRleCkgOiBudWxsU3RyaW5nKCk7CiB9CiAK
IFN0cmluZyBTdG9yYWdlQXJlYUltcGw6Oml0ZW0oY29uc3QgU3RyaW5nJiBrZXkpCiB7Ci0gICAg
cmV0dXJuIG1fc3RvcmFnZUFyZWFNYXAtPml0ZW0oa2V5KTsKLX0KLQotYm9vbCBTdG9yYWdlQXJl
YUltcGw6OnByZXdhcm0oKQotewotICAgIHJldHVybiBtX3N0b3JhZ2VBcmVhTWFwLT5wcmV3YXJt
KCk7CisgICAgcmV0dXJuIG1fc3RvcmFnZUFyZWFNYXAgPyBtX3N0b3JhZ2VBcmVhTWFwLT5pdGVt
KGtleSkgOiBudWxsU3RyaW5nKCk7CiB9CiAKIHZvaWQgU3RvcmFnZUFyZWFJbXBsOjpzZXRJdGVt
KEZyYW1lKiBzb3VyY2VGcmFtZSwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFs
dWUsIGJvb2wmIHF1b3RhRXhjZXB0aW9uKQogewogICAgIEFTU0VSVCghdmFsdWUuaXNOdWxsKCkp
OwogCi0gICAgbV9zdG9yYWdlQXJlYU1hcC0+c2V0SXRlbShzb3VyY2VGcmFtZSwgdGhpcywga2V5
LCB2YWx1ZSwgcXVvdGFFeGNlcHRpb24pOworICAgIGlmIChtX3N0b3JhZ2VBcmVhTWFwKQorICAg
ICAgICBtX3N0b3JhZ2VBcmVhTWFwLT5zZXRJdGVtKHNvdXJjZUZyYW1lLCB0aGlzLCBrZXksIHZh
bHVlLCBxdW90YUV4Y2VwdGlvbik7CiB9CiAKIHZvaWQgU3RvcmFnZUFyZWFJbXBsOjpyZW1vdmVJ
dGVtKEZyYW1lKiBzb3VyY2VGcmFtZSwgY29uc3QgU3RyaW5nJiBrZXkpCiB7Ci0gICAgbV9zdG9y
YWdlQXJlYU1hcC0+cmVtb3ZlSXRlbShzb3VyY2VGcmFtZSwgdGhpcywga2V5KTsKKyAgICBpZiAo
bV9zdG9yYWdlQXJlYU1hcCkKKyAgICAgICAgbV9zdG9yYWdlQXJlYU1hcC0+cmVtb3ZlSXRlbShz
b3VyY2VGcmFtZSwgdGhpcywga2V5KTsKIH0KIAogdm9pZCBTdG9yYWdlQXJlYUltcGw6OmNsZWFy
KEZyYW1lKiBzb3VyY2VGcmFtZSkKIHsKLSAgICBtX3N0b3JhZ2VBcmVhTWFwLT5jbGVhcihzb3Vy
Y2VGcmFtZSwgdGhpcyk7CisgICAgaWYgKG1fc3RvcmFnZUFyZWFNYXApCisgICAgICAgIG1fc3Rv
cmFnZUFyZWFNYXAtPmNsZWFyKHNvdXJjZUZyYW1lLCB0aGlzKTsKIH0KIAogYm9vbCBTdG9yYWdl
QXJlYUltcGw6OmNvbnRhaW5zKGNvbnN0IFN0cmluZyYga2V5KQogewotICAgIHJldHVybiBtX3N0
b3JhZ2VBcmVhTWFwLT5jb250YWlucyhrZXkpOworICAgIGlmIChtX3N0b3JhZ2VBcmVhTWFwKQor
ICAgICAgICByZXR1cm4gbV9zdG9yYWdlQXJlYU1hcC0+Y29udGFpbnMoa2V5KTsKKyAgICAKKyAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKIFN0b3JhZ2VUeXBlIFN0b3JhZ2VBcmVhSW1wbDo6c3RvcmFn
ZVR5cGUoKSBjb25zdAogewotICAgIHJldHVybiBtX3N0b3JhZ2VBcmVhTWFwLT5zdG9yYWdlVHlw
ZSgpOworICAgIGlmIChtX3N0b3JhZ2VBcmVhTWFwKQorICAgICAgICByZXR1cm4gbV9zdG9yYWdl
QXJlYU1hcC0+c3RvcmFnZVR5cGUoKTsKKyAgICAKKyAgICAvLyBXZSBwcm9iYWJseSBuZWVkIGFu
IEludmFsaWQgdHlwZS4KKyAgICByZXR1cm4gU3RvcmFnZVR5cGU6OkxvY2FsOwogfQogCiBzaXpl
X3QgU3RvcmFnZUFyZWFJbXBsOjptZW1vcnlCeXRlc1VzZWRCeUNhY2hlKCkKQEAgLTExMiwxMiAr
MTE4LDEyIEBAIHNpemVfdCBTdG9yYWdlQXJlYUltcGw6Om1lbW9yeUJ5dGVzVXNlZEJ5Q2FjaGUo
KQogCiB2b2lkIFN0b3JhZ2VBcmVhSW1wbDo6aW5jcmVtZW50QWNjZXNzQ291bnQoKQogewotICAg
IC8vIFN0b3JhZ2UgYWNjZXNzIGlzIGhhbmRsZWQgaW4gdGhlIFVJIHByb2Nlc3MsIHNvIHRoZXJl
J3Mgbm90aGluZyB0byBkbyBoZXJlLgorICAgIC8vIFN0b3JhZ2UgYWNjZXNzIGlzIGhhbmRsZWQg
aW4gdGhlIG5ldHdvcmsgcHJvY2Vzcywgc28gdGhlcmUncyBub3RoaW5nIHRvIGRvIGhlcmUuCiB9
CiAKIHZvaWQgU3RvcmFnZUFyZWFJbXBsOjpkZWNyZW1lbnRBY2Nlc3NDb3VudCgpCiB7Ci0gICAg
Ly8gU3RvcmFnZSBhY2Nlc3MgaXMgaGFuZGxlZCBpbiB0aGUgVUkgcHJvY2Vzcywgc28gdGhlcmUn
cyBub3RoaW5nIHRvIGRvIGhlcmUuCisgICAgLy8gU3RvcmFnZSBhY2Nlc3MgaXMgaGFuZGxlZCBp
biB0aGUgbmV0d29yayBwcm9jZXNzLCBzbyB0aGVyZSdzIG5vdGhpbmcgdG8gZG8gaGVyZS4KIH0K
IAogdm9pZCBTdG9yYWdlQXJlYUltcGw6OmNsb3NlRGF0YWJhc2VJZklkbGUoKQpAQCAtMTI2LDkg
KzEzMiw0IEBAIHZvaWQgU3RvcmFnZUFyZWFJbXBsOjpjbG9zZURhdGFiYXNlSWZJZGxlKCkKICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBT
dG9yYWdlQXJlYUltcGw6OnNlY3VyaXR5T3JpZ2luKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9z
dG9yYWdlQXJlYU1hcC0+c2VjdXJpdHlPcmlnaW4oKS5kYXRhKCk7Ci19Ci0KIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3Jh
Z2UvU3RvcmFnZUFyZWFJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFn
ZS9TdG9yYWdlQXJlYUltcGwuaAppbmRleCBiOGYxNmYyZWFhNWE5ZWFjMDY2NDViMzhlNWYwZmYx
NDRkZGQ1ODI0Li5iMmE4ZDUwYmUxODcwMWQ5MWQzMTExMTY5YzEzMmJmN2ZjOTE5OTlhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUlt
cGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJl
YUltcGwuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvU3RvcmFnZUFyZWEuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IFNlY3VyaXR5T3JpZ2luOwpAQCAtNjAsMTEgKzYxLDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGlu
Y3JlbWVudEFjY2Vzc0NvdW50KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkZWNyZW1lbnRBY2Nlc3ND
b3VudCgpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xvc2VEYXRhYmFzZUlmSWRsZSgpIG92ZXJyaWRl
OwotICAgIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4o
KSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIHByZXdhcm0oKSBmaW5hbDsKIAogICAgIHVpbnQ2
NF90IG1fc3RvcmFnZUFyZWFJRDsKLSAgICBSZWY8U3RvcmFnZUFyZWFNYXA+IG1fc3RvcmFnZUFy
ZWFNYXA7CisgICAgV2Vha1B0cjxTdG9yYWdlQXJlYU1hcD4gbV9zdG9yYWdlQXJlYU1hcDsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuY3BwCmluZGV4IDNlMDUwZGYxNzhhNDQ4
YmM5MzJjYTRiYWVjMTAzMWE3MmY5MzgwZTYuLjExY2IyMmQyODY3OTU0MWYxZjgzNzJlMjJlNTFm
OGM4MjBjY2ExMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VBcmVhTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
U3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJTdG9yYWdlQXJlYUltcGwuaCIK
ICNpbmNsdWRlICJTdG9yYWdlQXJlYU1hcE1lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiU3RvcmFnZU1h
bmFnZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlN0b3JhZ2VNYW5hZ2VyU2V0TWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJTdG9yYWdlTmFtZXNwYWNlSW1wbC5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIK
ICNpbmNsdWRlICJXZWJQYWdlR3JvdXBQcm94eS5oIgpAQCAtNDgsNDAgKzQ4LDI2IEBACiBuYW1l
c3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1zdGF0aWMgdWludDY0
X3QgZ2VuZXJhdGVTdG9yYWdlTWFwSUQoKQotewotICAgIHN0YXRpYyB1aW50NjRfdCBzdG9yYWdl
TWFwSUQ7Ci0gICAgcmV0dXJuICsrc3RvcmFnZU1hcElEOwotfQotCiBSZWY8U3RvcmFnZUFyZWFN
YXA+IFN0b3JhZ2VBcmVhTWFwOjpjcmVhdGUoU3RvcmFnZU5hbWVzcGFjZUltcGwqIHN0b3JhZ2VO
YW1lc3BhY2UsIFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiBzZWN1cml0eU9yaWdpbikK
IHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9yYWdlQXJlYU1hcChzdG9yYWdlTmFtZXNw
YWNlLCBXVEZNb3ZlKHNlY3VyaXR5T3JpZ2luKSkpOwogfQogCiBTdG9yYWdlQXJlYU1hcDo6U3Rv
cmFnZUFyZWFNYXAoU3RvcmFnZU5hbWVzcGFjZUltcGwqIHN0b3JhZ2VOYW1lc3BhY2UsIFJlZjxX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiBzZWN1cml0eU9yaWdpbikKLSAgICA6IG1fc3RvcmFn
ZU5hbWVzcGFjZSgqc3RvcmFnZU5hbWVzcGFjZSkKLSAgICAsIG1fc3RvcmFnZU1hcElEKGdlbmVy
YXRlU3RvcmFnZU1hcElEKCkpCisgICAgOiBtX3N0b3JhZ2VOYW1lc3BhY2Uoc3RvcmFnZU5hbWVz
cGFjZSkKKyAgICAsIG1fc3RvcmFnZU1hcElEKDApCiAgICAgLCBtX3N0b3JhZ2VUeXBlKHN0b3Jh
Z2VOYW1lc3BhY2UtPnN0b3JhZ2VUeXBlKCkpCi0gICAgLCBtX3N0b3JhZ2VOYW1lc3BhY2VJRChz
dG9yYWdlTmFtZXNwYWNlLT5zdG9yYWdlTmFtZXNwYWNlSUQoKSkKICAgICAsIG1fcXVvdGFJbkJ5
dGVzKHN0b3JhZ2VOYW1lc3BhY2UtPnF1b3RhSW5CeXRlcygpKQogICAgICwgbV9zZWN1cml0eU9y
aWdpbihXVEZNb3ZlKHNlY3VyaXR5T3JpZ2luKSkKICAgICAsIG1fY3VycmVudFNlZWQoMCkKICAg
ICAsIG1faGFzUGVuZGluZ0NsZWFyKGZhbHNlKQotICAgICwgbV9oYXNQZW5kaW5nR2V0VmFsdWVz
KGZhbHNlKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnJlZ2lzdGVyU3RvcmFnZUFy
ZWFNYXAoKnRoaXMpOwogICAgIGNvbm5lY3QoKTsKIH0KIAogU3RvcmFnZUFyZWFNYXA6On5TdG9y
YWdlQXJlYU1hcCgpCiB7Ci0gICAgaWYgKG1fc3RvcmFnZVR5cGUgIT0gU3RvcmFnZVR5cGU6OkVw
aGVtZXJhbExvY2FsKQotICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6U3RvcmFn
ZU1hbmFnZXI6OkRlc3Ryb3lTdG9yYWdlTWFwKG1fc3RvcmFnZU1hcElEKSwgMCk7Ci0KLSAgICBt
X3N0b3JhZ2VOYW1lc3BhY2UtPmRpZERlc3Ryb3lTdG9yYWdlQXJlYU1hcCgqdGhpcyk7Ci0KLSAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS51bnJlZ2lzdGVyU3RvcmFnZUFyZWFNYXAoKnRoaXMp
OworICAgIGRpc2Nvbm5lY3QoKTsKIH0KIAogdW5zaWduZWQgU3RvcmFnZUFyZWFNYXA6Omxlbmd0
aCgpCkBAIC0xMjIsNyArMTA4LDcgQEAgdm9pZCBTdG9yYWdlQXJlYU1hcDo6c2V0SXRlbShGcmFt
ZSogc291cmNlRnJhbWUsIFN0b3JhZ2VBcmVhSW1wbCogc291cmNlQXJlYSwgY28KIAogICAgIG1f
cGVuZGluZ1ZhbHVlQ2hhbmdlcy5hZGQoa2V5KTsKIAotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1l
c3NhZ2VzOjpTdG9yYWdlTWFuYWdlcjo6U2V0SXRlbShtX3NlY3VyaXR5T3JpZ2luLT5kYXRhKCks
IG1fc3RvcmFnZU1hcElELCBzb3VyY2VBcmVhLT5zdG9yYWdlQXJlYUlEKCksIG1fY3VycmVudFNl
ZWQsIGtleSwgdmFsdWUsIHNvdXJjZUZyYW1lLT5kb2N1bWVudCgpLT51cmwoKSksIDApOworICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigp
LmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdlclNldDo6U2V0SXRlbSht
X3N0b3JhZ2VNYXBJRCwgc291cmNlQXJlYS0+c3RvcmFnZUFyZWFJRCgpLCBtX2N1cnJlbnRTZWVk
LCBrZXksIHZhbHVlLCBzb3VyY2VGcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkpLCAwKTsKIH0KIAog
dm9pZCBTdG9yYWdlQXJlYU1hcDo6cmVtb3ZlSXRlbShXZWJDb3JlOjpGcmFtZSogc291cmNlRnJh
bWUsIFN0b3JhZ2VBcmVhSW1wbCogc291cmNlQXJlYSwgY29uc3QgU3RyaW5nJiBrZXkpCkBAIC0x
MzgsMTYgKzEyNCwxOCBAQCB2b2lkIFN0b3JhZ2VBcmVhTWFwOjpyZW1vdmVJdGVtKFdlYkNvcmU6
OkZyYW1lKiBzb3VyY2VGcmFtZSwgU3RvcmFnZUFyZWFJbXBsKiBzbwogCiAgICAgbV9wZW5kaW5n
VmFsdWVDaGFuZ2VzLmFkZChrZXkpOwogCi0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5z
dXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
OlN0b3JhZ2VNYW5hZ2VyOjpSZW1vdmVJdGVtKG1fc2VjdXJpdHlPcmlnaW4tPmRhdGEoKSwgbV9z
dG9yYWdlTWFwSUQsIHNvdXJjZUFyZWEtPnN0b3JhZ2VBcmVhSUQoKSwgbV9jdXJyZW50U2VlZCwg
a2V5LCBzb3VyY2VGcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkpLCAwKTsKKyAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9u
KCkuc2VuZChNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXJTZXQ6OlJlbW92ZUl0ZW0obV9zdG9yYWdl
TWFwSUQsIHNvdXJjZUFyZWEtPnN0b3JhZ2VBcmVhSUQoKSwgbV9jdXJyZW50U2VlZCwga2V5LCBz
b3VyY2VGcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkpLCAwKTsKIH0KIAogdm9pZCBTdG9yYWdlQXJl
YU1hcDo6Y2xlYXIoV2ViQ29yZTo6RnJhbWUqIHNvdXJjZUZyYW1lLCBTdG9yYWdlQXJlYUltcGwq
IHNvdXJjZUFyZWEpCiB7CisgICAgY29ubmVjdCgpOworCiAgICAgcmVzZXRWYWx1ZXMoKTsKIAog
ICAgIG1faGFzUGVuZGluZ0NsZWFyID0gdHJ1ZTsKICAgICBtX3N0b3JhZ2VNYXAgPSBTdG9yYWdl
TWFwOjpjcmVhdGUobV9xdW90YUluQnl0ZXMpOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3Nh
Z2VzOjpTdG9yYWdlTWFuYWdlcjo6Q2xlYXIobV9zZWN1cml0eU9yaWdpbi0+ZGF0YSgpLCBtX3N0
b3JhZ2VNYXBJRCwgc291cmNlQXJlYS0+c3RvcmFnZUFyZWFJRCgpLCBtX2N1cnJlbnRTZWVkLCBz
b3VyY2VGcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2Vu
ZChNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXJTZXQ6OkNsZWFyKG1fc3RvcmFnZU1hcElELCBzb3Vy
Y2VBcmVhLT5zdG9yYWdlQXJlYUlEKCksIG1fY3VycmVudFNlZWQsIHNvdXJjZUZyYW1lLT5kb2N1
bWVudCgpLT51cmwoKSksIDApOwogfQogCiBib29sIFN0b3JhZ2VBcmVhTWFwOjpjb250YWlucyhj
b25zdCBTdHJpbmcmIGtleSkKQEAgLTE2Myw3ICsxNTEsNiBAQCB2b2lkIFN0b3JhZ2VBcmVhTWFw
OjpyZXNldFZhbHVlcygpCiAKICAgICBtX3BlbmRpbmdWYWx1ZUNoYW5nZXMuY2xlYXIoKTsKICAg
ICBtX2hhc1BlbmRpbmdDbGVhciA9IGZhbHNlOwotICAgIG1faGFzUGVuZGluZ0dldFZhbHVlcyA9
IGZhbHNlOwogICAgIG1fY3VycmVudFNlZWQrKzsKIH0KIApAQCAtMTc4LDMzICsxNjUsMTAgQEAg
dm9pZCBTdG9yYWdlQXJlYU1hcDo6bG9hZFZhbHVlc0lmTmVlZGVkKCkKICAgICAvLyBGSVhNRTog
VGhpcyBzaG91bGQgdXNlIGEgc3BlY2lhbCBzZW5kU3luYyBmbGFnIHRvIGluZGljYXRlIHRoYXQg
d2UgZG9uJ3Qgd2FudCB0byBwcm9jZXNzIGluY29taW5nIG1lc3NhZ2VzIHdoaWxlIHdhaXRpbmcg
Zm9yIGEgcmVwbHkuCiAgICAgLy8gKFRoaXMgZmxhZyBkb2VzIG5vdCB5ZXQgZXhpc3QpLiBTaW5j
ZSBsb2FkVmFsdWVzSWZOZWVkZWQoKSBlbmRzIHVwIGJlaW5nIGNhbGxlZCBmcm9tIHdpdGhpbiBK
YXZhU2NyaXB0IGNvZGUsIHByb2Nlc3NpbmcgaW5jb21pbmcgc3luY2hyb25vdXMgbWVzc2FnZXMK
ICAgICAvLyBjb3VsZCBsZWFkIHRvIHdlaXJkIHJlZW50cmVuY3kgYnVncyBvdGhlcndpc2UuCi0g
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
KCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdlcjo6R2V0VmFs
dWVzKG1fc3RvcmFnZU1hcElELCBtX2N1cnJlbnRTZWVkKSwgTWVzc2FnZXM6OlN0b3JhZ2VNYW5h
Z2VyOjpHZXRWYWx1ZXM6OlJlcGx5KHZhbHVlcyksIDApOworICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5k
U3luYyhNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXJTZXQ6OkdldFZhbHVlcyhtX3N0b3JhZ2VNYXBJ
RCksIE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdlclNldDo6R2V0VmFsdWVzOjpSZXBseSh2YWx1ZXMp
LCAwKTsKIAogICAgIG1fc3RvcmFnZU1hcCA9IFN0b3JhZ2VNYXA6OmNyZWF0ZShtX3F1b3RhSW5C
eXRlcyk7CiAgICAgbV9zdG9yYWdlTWFwLT5pbXBvcnRJdGVtcyhXVEZNb3ZlKHZhbHVlcykpOwot
Ci0gICAgLy8gV2Ugd2FudCB0byBpZ25vcmUgYWxsIGNoYW5nZXMgdW50aWwgd2UgZ2V0IHRoZSBE
aWRHZXRWYWx1ZXMgbWVzc2FnZS4KLSAgICBtX2hhc1BlbmRpbmdHZXRWYWx1ZXMgPSB0cnVlOwot
fQotCi1ib29sIFN0b3JhZ2VBcmVhTWFwOjpwcmV3YXJtKCkKLXsKLSAgICBpZiAobV9kaWRQcmV3
YXJtIHx8IG1fc3RvcmFnZU1hcCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIG1fZGlkUHJl
d2FybSA9IHRydWU7Ci0KLSAgICBjb25uZWN0KCk7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVz
c2FnZXM6OlN0b3JhZ2VNYW5hZ2VyOjpQcmV3YXJtKG1fc3RvcmFnZU1hcElEKSwgMCk7Ci0gICAg
cmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgU3RvcmFnZUFyZWFNYXA6OmRpZEdldFZhbHVlcyh1aW50
NjRfdCBzdG9yYWdlTWFwU2VlZCkKLXsKLSAgICBpZiAobV9jdXJyZW50U2VlZCAhPSBzdG9yYWdl
TWFwU2VlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQVNTRVJUKG1faGFzUGVuZGluZ0dldFZh
bHVlcyk7Ci0gICAgbV9oYXNQZW5kaW5nR2V0VmFsdWVzID0gZmFsc2U7CiB9CiAKIHZvaWQgU3Rv
cmFnZUFyZWFNYXA6OmRpZFNldEl0ZW0odWludDY0X3Qgc3RvcmFnZU1hcFNlZWQsIGNvbnN0IFN0
cmluZyYga2V5LCBib29sIHF1b3RhRXJyb3IpCkBAIC0yNDAsNiArMjA0LDExIEBAIHZvaWQgU3Rv
cmFnZUFyZWFNYXA6OmRpZENsZWFyKHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkKQogICAgIG1faGFz
UGVuZGluZ0NsZWFyID0gZmFsc2U7CiB9CiAKK3ZvaWQgU3RvcmFnZUFyZWFNYXA6OmNsZWFyQ2Fj
aGUoKQoreworICAgIHJlc2V0VmFsdWVzKCk7Cit9CisKIGJvb2wgU3RvcmFnZUFyZWFNYXA6OnNo
b3VsZEFwcGx5Q2hhbmdlRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5KSBjb25zdAogewogICAgIC8v
IFdlIGhhdmUgbm90IHlldCBsb2FkZWQgYW55dGhpbmcgZnJvbSB0aGlzIHN0b3JhZ2UgbWFwLgpA
QCAtMjU5LDggKzIyOCw4IEBAIHZvaWQgU3RvcmFnZUFyZWFNYXA6OmFwcGx5Q2hhbmdlKGNvbnN0
IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlKQogewogICAgIEFTU0VSVCghbV9z
dG9yYWdlTWFwIHx8IG1fc3RvcmFnZU1hcC0+aGFzT25lUmVmKCkpOwogCi0gICAgLy8gVGhlcmUn
cyBhIGNsZWFyIHBlbmRpbmcgb3IgZ2V0VmFsdWVzIHBlbmRpbmcgd2UgZG9uJ3Qgd2FudCB0byBh
cHBseSBhbnkgY2hhbmdlcyB1bnRpbCB3ZSBnZXQgdGhlIGNvcnJlc3BvbmRpbmcgRGlkQ2xlYXIv
RGlkR2V0VmFsdWVzIG1lc3NhZ2VzLgotICAgIGlmIChtX2hhc1BlbmRpbmdDbGVhciB8fCBtX2hh
c1BlbmRpbmdHZXRWYWx1ZXMpCisgICAgLy8gVGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNsZWFyIHBl
bmRpbmcgd2UgZG9uJ3Qgd2FudCB0byBhcHBseSBhbnkgY2hhbmdlcyB1bnRpbCB3ZSBnZXQgdGhl
IGNvcnJlc3BvbmRpbmcgRGlkQ2xlYXIgbWVzc2FnZXMuCisgICAgaWYgKG1faGFzUGVuZGluZ0Ns
ZWFyKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIWtleSkgewpAQCAtMzA1LDIyICsyNzQs
MTcgQEAgdm9pZCBTdG9yYWdlQXJlYU1hcDo6ZGlzcGF0Y2hTdG9yYWdlRXZlbnQodWludDY0X3Qg
c291cmNlU3RvcmFnZUFyZWFJRCwgY29uc3QgU3QKICAgICAgICAgYXBwbHlDaGFuZ2Uoa2V5LCBu
ZXdWYWx1ZSk7CiAgICAgfQogCi0gICAgaWYgKHN0b3JhZ2VUeXBlKCkgPT0gU3RvcmFnZVR5cGU6
OlNlc3Npb24gfHwgc3RvcmFnZVR5cGUoKSA9PSBTdG9yYWdlVHlwZTo6RXBoZW1lcmFsTG9jYWwp
CisgICAgaWYgKHN0b3JhZ2VUeXBlKCkgPT0gU3RvcmFnZVR5cGU6OlNlc3Npb24pCiAgICAgICAg
IGRpc3BhdGNoU2Vzc2lvblN0b3JhZ2VFdmVudChzb3VyY2VTdG9yYWdlQXJlYUlELCBrZXksIG9s
ZFZhbHVlLCBuZXdWYWx1ZSwgdXJsU3RyaW5nKTsKICAgICBlbHNlCiAgICAgICAgIGRpc3BhdGNo
TG9jYWxTdG9yYWdlRXZlbnQoc291cmNlU3RvcmFnZUFyZWFJRCwga2V5LCBvbGRWYWx1ZSwgbmV3
VmFsdWUsIHVybFN0cmluZyk7CiB9CiAKLXZvaWQgU3RvcmFnZUFyZWFNYXA6OmNsZWFyQ2FjaGUo
KQotewotICAgIHJlc2V0VmFsdWVzKCk7Ci19Ci0KIHZvaWQgU3RvcmFnZUFyZWFNYXA6OmRpc3Bh
dGNoU2Vzc2lvblN0b3JhZ2VFdmVudCh1aW50NjRfdCBzb3VyY2VTdG9yYWdlQXJlYUlELCBjb25z
dCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdW
YWx1ZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCiB7Ci0gICAgLy8gTmFtZXNwYWNlIElEcyBm
b3Igc2Vzc2lvbiBzdG9yYWdlIG5hbWVzcGFjZXMgYW5kIGVwaGVtZXJhbCBsb2NhbCBzdG9yYWdl
IG5hbWVzcGFjZXMgYXJlIGVxdWl2YWxlbnQgdG8gd2ViIHBhZ2UgSURzCisgICAgLy8gTmFtZXNw
YWNlIElEcyBmb3Igc2Vzc2lvbiBzdG9yYWdlIG5hbWVzcGFjZXMgYXJlIGVxdWl2YWxlbnQgdG8g
d2ViIHBhZ2UgSURzCiAgICAgLy8gc28gd2UgY2FuIGdldCB0aGUgcmlnaHQgcGFnZSBoZXJlLgot
ICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKG1h
a2VPYmplY3RJZGVudGlmaWVyPFBhZ2VJZGVudGlmaWVyVHlwZT4obV9zdG9yYWdlTmFtZXNwYWNl
SUQpKTsKKyAgICBXZWJQYWdlKiB3ZWJQYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2Vi
UGFnZShtYWtlT2JqZWN0SWRlbnRpZmllcjxQYWdlSWRlbnRpZmllclR5cGU+KG1fc3RvcmFnZU5h
bWVzcGFjZS0+c3RvcmFnZU5hbWVzcGFjZUlEKCkpKTsKICAgICBpZiAoIXdlYlBhZ2UpCiAgICAg
ICAgIHJldHVybjsKIApAQCAtMzU0LDcgKzMxOCw4IEBAIHZvaWQgU3RvcmFnZUFyZWFNYXA6OmRp
c3BhdGNoTG9jYWxTdG9yYWdlRXZlbnQodWludDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwgY29u
CiAKICAgICBWZWN0b3I8UmVmUHRyPEZyYW1lPj4gZnJhbWVzOwogCi0gICAgUGFnZUdyb3VwJiBw
YWdlR3JvdXAgPSAqV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZUdyb3VwKG1fc3RvcmFn
ZU5hbWVzcGFjZUlEKS0+Y29yZVBhZ2VHcm91cCgpOworICAgIC8vIE5hbWVzcGFjZSBJRHMgZm9y
IGxvY2FsIHN0b3JhZ2UgbmFtZXNwYWNlcyBhcmUgZXF1aXZhbGVudCB0byB3ZWIgcGFnZSBncm91
cCBJRHMuCisgICAgUGFnZUdyb3VwJiBwYWdlR3JvdXAgPSAqV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkud2ViUGFnZUdyb3VwKG1fc3RvcmFnZU5hbWVzcGFjZS0+c3RvcmFnZU5hbWVzcGFjZUlEKCkp
LT5jb3JlUGFnZUdyb3VwKCk7CiAgICAgY29uc3QgSGFzaFNldDxQYWdlKj4mIHBhZ2VzID0gcGFn
ZUdyb3VwLnBhZ2VzKCk7CiAgICAgZm9yIChIYXNoU2V0PFBhZ2UqPjo6Y29uc3RfaXRlcmF0b3Ig
aXQgPSBwYWdlcy5iZWdpbigpLCBlbmQgPSBwYWdlcy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7
CiAgICAgICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJigqaXQpLT5tYWluRnJhbWUoKTsgZnJhbWU7
IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgewpAQCAtMzgxLDM1ICszNDYs
MzcgQEAgdm9pZCBTdG9yYWdlQXJlYU1hcDo6ZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudCh1aW50
NjRfdCBzb3VyY2VTdG9yYWdlQXJlYUlELCBjb24KIAogdm9pZCBTdG9yYWdlQXJlYU1hcDo6Y29u
bmVjdCgpCiB7Ci0gICAgaWYgKCFtX2lzRGlzY29ubmVjdGVkKQorICAgIGlmIChtX3N0b3JhZ2VN
YXBJRCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgc3dpdGNoIChtX3N0b3JhZ2VUeXBlKSB7CiAg
ICAgY2FzZSBTdG9yYWdlVHlwZTo6TG9jYWw6Ci0gICAgY2FzZSBTdG9yYWdlVHlwZTo6RXBoZW1l
cmFsTG9jYWw6CiAgICAgY2FzZSBTdG9yYWdlVHlwZTo6VHJhbnNpZW50TG9jYWw6CiAgICAgICAg
IGlmIChTZWN1cml0eU9yaWdpbiogdG9wTGV2ZWxPcmlnaW4gPSBtX3N0b3JhZ2VOYW1lc3BhY2Ut
PnRvcExldmVsT3JpZ2luKCkpCi0gICAgICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5l
bnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdl
czo6U3RvcmFnZU1hbmFnZXI6OkNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU1hcChtX3N0b3Jh
Z2VNYXBJRCwgbV9zdG9yYWdlTmFtZXNwYWNlLT5zdG9yYWdlTmFtZXNwYWNlSUQoKSwgdG9wTGV2
ZWxPcmlnaW4tPmRhdGEoKSwgbV9zZWN1cml0eU9yaWdpbi0+ZGF0YSgpKSwgMCk7CisgICAgICAg
ICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpD
b25uZWN0VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKG1fc3RvcmFnZU5hbWVzcGFjZS0+c2Vz
c2lvbklEKCksIG1fc3RvcmFnZU5hbWVzcGFjZS0+c3RvcmFnZU5hbWVzcGFjZUlEKCksIHRvcExl
dmVsT3JpZ2luLT5kYXRhKCksIG1fc2VjdXJpdHlPcmlnaW4tPmRhdGEoKSksIE1lc3NhZ2VzOjpT
dG9yYWdlTWFuYWdlclNldDo6Q29ubmVjdFRvVHJhbnNpZW50TG9jYWxTdG9yYWdlQXJlYTo6UmVw
bHkobV9zdG9yYWdlTWFwSUQpLCAwKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVj
dGlvbigpLnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VNYW5hZ2VyOjpDcmVhdGVMb2NhbFN0b3JhZ2VN
YXAobV9zdG9yYWdlTWFwSUQsIG1fc3RvcmFnZU5hbWVzcGFjZS0+c3RvcmFnZU5hbWVzcGFjZUlE
KCksIG1fc2VjdXJpdHlPcmlnaW4tPmRhdGEoKSksIDApOworICAgICAgICAgICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlv
bigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdlclNldDo6Q29ubmVjdFRvTG9jYWxT
dG9yYWdlQXJlYShtX3N0b3JhZ2VOYW1lc3BhY2UtPnNlc3Npb25JRCgpLCBtX3N0b3JhZ2VOYW1l
c3BhY2UtPnN0b3JhZ2VOYW1lc3BhY2VJRCgpLCBtX3NlY3VyaXR5T3JpZ2luLT5kYXRhKCkpLCBN
ZXNzYWdlczo6U3RvcmFnZU1hbmFnZXJTZXQ6OkNvbm5lY3RUb0xvY2FsU3RvcmFnZUFyZWE6OlJl
cGx5KG1fc3RvcmFnZU1hcElEKSwgMCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3RvcmFn
ZVR5cGU6OlNlc3Npb246Ci0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpTdG9y
YWdlTWFuYWdlcjo6Q3JlYXRlU2Vzc2lvblN0b3JhZ2VNYXAobV9zdG9yYWdlTWFwSUQsIG1fc3Rv
cmFnZU5hbWVzcGFjZS0+c3RvcmFnZU5hbWVzcGFjZUlEKCksIG1fc2VjdXJpdHlPcmlnaW4tPmRh
dGEoKSksIDApOworICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlN0b3Jh
Z2VNYW5hZ2VyU2V0OjpDb25uZWN0VG9TZXNzaW9uU3RvcmFnZUFyZWEobV9zdG9yYWdlTmFtZXNw
YWNlLT5zZXNzaW9uSUQoKSwgbV9zdG9yYWdlTmFtZXNwYWNlLT5zdG9yYWdlTmFtZXNwYWNlSUQo
KSwgbV9zZWN1cml0eU9yaWdpbi0+ZGF0YSgpKSwgTWVzc2FnZXM6OlN0b3JhZ2VNYW5hZ2VyU2V0
OjpDb25uZWN0VG9TZXNzaW9uU3RvcmFnZUFyZWE6OlJlcGx5KG1fc3RvcmFnZU1hcElEKSwgMCk7
CiAgICAgfQogCi0gICAgaWYgKG1fc3RvcmFnZU1hcCkKLSAgICAgICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNl
bmQoTWVzc2FnZXM6OlN0b3JhZ2VNYW5hZ2VyOjpTZXRJdGVtcyhtX3N0b3JhZ2VNYXBJRCwgbV9z
dG9yYWdlTWFwLT5pdGVtcygpKSwgMCk7Ci0gICAgbV9pc0Rpc2Nvbm5lY3RlZCA9IGZhbHNlOwor
ICAgIGlmIChtX3N0b3JhZ2VNYXBJRCkKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
cmVnaXN0ZXJTdG9yYWdlQXJlYU1hcCgqdGhpcyk7CiB9CiAKIHZvaWQgU3RvcmFnZUFyZWFNYXA6
OmRpc2Nvbm5lY3QoKQogewotICAgIG1faXNEaXNjb25uZWN0ZWQgPSB0cnVlOwotICAgIGlmICht
X3N0b3JhZ2VUeXBlID09IFN0b3JhZ2VUeXBlOjpTZXNzaW9uICYmIG1fc3RvcmFnZU1hcCkgewot
ICAgICAgICBtX3BlbmRpbmdWYWx1ZUNoYW5nZXMuY2xlYXIoKTsKLSAgICAgICAgbV9oYXNQZW5k
aW5nQ2xlYXIgPSBmYWxzZTsKLSAgICB9IGVsc2UKLSAgICAgICAgcmVzZXRWYWx1ZXMoKTsKKyAg
ICBpZiAoIW1fc3RvcmFnZU1hcElEKQorICAgICAgICByZXR1cm47CisKKyAgICByZXNldFZhbHVl
cygpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnVucmVnaXN0ZXJTdG9yYWdlQXJlYU1h
cCgqdGhpcyk7CisKKyAgICBpZiAoYXV0byBuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24gPSBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5leGlzdGluZ05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpKQor
ICAgICAgICBuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3Nh
Z2VzOjpTdG9yYWdlTWFuYWdlclNldDo6RGlzY29ubmVjdEZyb21TdG9yYWdlQXJlYShtX3N0b3Jh
Z2VNYXBJRCksIDApOworCisgICAgbV9zdG9yYWdlTWFwSUQgPSAwOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VBcmVhTWFwLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFn
ZS9TdG9yYWdlQXJlYU1hcC5oCmluZGV4IGZiOTFiYzkwNTQyNWZjODFjNmE0ODM1Mjc0YWJjYzBj
MTdkYTQ5YzYuLjQ0YWQwNmY5MWI1NWM3ZjQxZTZkMGYyODg3YzllYzE3ZDUyYTc0MWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFw
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFN
YXAuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoQ291bnRlZFNldC5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNlY3Vy
aXR5T3JpZ2luOwpAQCAtNDMsNyArNDQsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFN0
b3JhZ2VBcmVhSW1wbDsKIGNsYXNzIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOwogCi1jbGFzcyBTdG9y
YWdlQXJlYU1hcCA6IHB1YmxpYyBSZWZDb3VudGVkPFN0b3JhZ2VBcmVhTWFwPiwgcHJpdmF0ZSBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlciB7CitjbGFzcyBTdG9yYWdlQXJlYU1hcCA6IHB1YmxpYyBSZWZD
b3VudGVkPFN0b3JhZ2VBcmVhTWFwPiwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHVi
bGljIENhbk1ha2VXZWFrUHRyPFN0b3JhZ2VBcmVhTWFwPiB7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IFJlZjxTdG9yYWdlQXJlYU1hcD4gY3JlYXRlKFN0b3JhZ2VOYW1lc3BhY2VJbXBsKiwgUmVmPFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmKTsKICAgICB+U3RvcmFnZUFyZWFNYXAoKTsKQEAgLTU3
LDcgKzU4LDYgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlSXRlbShXZWJDb3JlOjpGcmFtZSog
c291cmNlRnJhbWUsIFN0b3JhZ2VBcmVhSW1wbCogc291cmNlQXJlYSwgY29uc3QgU3RyaW5nJiBr
ZXkpOwogICAgIHZvaWQgY2xlYXIoV2ViQ29yZTo6RnJhbWUqIHNvdXJjZUZyYW1lLCBTdG9yYWdl
QXJlYUltcGwqIHNvdXJjZUFyZWEpOwogICAgIGJvb2wgY29udGFpbnMoY29uc3QgU3RyaW5nJiBr
ZXkpOwotICAgIGJvb2wgcHJld2FybSgpOwogCiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIK
ICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2Rl
ciYpIG92ZXJyaWRlOwpAQCAtNzEsNyArNzEsNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFN0
b3JhZ2VBcmVhTWFwKFN0b3JhZ2VOYW1lc3BhY2VJbXBsKiwgUmVmPFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luPiYmKTsKIAotICAgIHZvaWQgZGlkR2V0VmFsdWVzKHVpbnQ2NF90IHN0b3JhZ2VNYXBT
ZWVkKTsKICAgICB2b2lkIGRpZFNldEl0ZW0odWludDY0X3Qgc3RvcmFnZU1hcFNlZWQsIGNvbnN0
IFN0cmluZyYga2V5LCBib29sIHF1b3RhRXJyb3IpOwogICAgIHZvaWQgZGlkUmVtb3ZlSXRlbSh1
aW50NjRfdCBzdG9yYWdlTWFwU2VlZCwgY29uc3QgU3RyaW5nJiBrZXkpOwogICAgIHZvaWQgZGlk
Q2xlYXIodWludDY0X3Qgc3RvcmFnZU1hcFNlZWQpOwpAQCAtODgsMTIgKzg3LDExIEBAIHByaXZh
dGU6CiAgICAgdm9pZCBkaXNwYXRjaFNlc3Npb25TdG9yYWdlRXZlbnQodWludDY0X3Qgc291cmNl
U3RvcmFnZUFyZWFJRCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUs
IGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKTsKICAgICB2
b2lkIGRpc3BhdGNoTG9jYWxTdG9yYWdlRXZlbnQodWludDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJ
RCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmlu
ZyYgbmV3VmFsdWUsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKTsKIAotICAgIFJlZjxTdG9yYWdl
TmFtZXNwYWNlSW1wbD4gbV9zdG9yYWdlTmFtZXNwYWNlOworICAgIFN0b3JhZ2VOYW1lc3BhY2VJ
bXBsKiBtX3N0b3JhZ2VOYW1lc3BhY2U7CiAKICAgICB1aW50NjRfdCBtX3N0b3JhZ2VNYXBJRDsK
IAogICAgIFdlYkNvcmU6OlN0b3JhZ2VUeXBlIG1fc3RvcmFnZVR5cGU7Ci0gICAgdWludDY0X3Qg
bV9zdG9yYWdlTmFtZXNwYWNlSUQ7CiAgICAgdW5zaWduZWQgbV9xdW90YUluQnl0ZXM7CiAgICAg
UmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiBtX3NlY3VyaXR5T3JpZ2luOwogCkBAIC0xMDEs
MTEgKzk5LDcgQEAgcHJpdmF0ZToKIAogICAgIHVpbnQ2NF90IG1fY3VycmVudFNlZWQ7CiAgICAg
Ym9vbCBtX2hhc1BlbmRpbmdDbGVhcjsKLSAgICBib29sIG1faGFzUGVuZGluZ0dldFZhbHVlczsK
ICAgICBIYXNoQ291bnRlZFNldDxTdHJpbmc+IG1fcGVuZGluZ1ZhbHVlQ2hhbmdlczsKLQotICAg
IGJvb2wgbV9pc0Rpc2Nvbm5lY3RlZCB7IHRydWUgfTsKLSAgICBib29sIG1fZGlkUHJld2FybSB7
IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAubWVz
c2FnZXMuaW4KaW5kZXggYjE1OTA0ZjE2YmVjMTQyYjEwYjQ4MDBkMTA2NDUwMDkzMzgzMDBkNS4u
N2E3NWQyMTBmZDgzMjVmMmI1MWE4OWNlM2U1NDJkNDgwMzkwOTZhOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFN
YXAubWVzc2FnZXMuaW4KQEAgLTIxLDcgKzIxLDYgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogbWVzc2Fn
ZXMgLT4gU3RvcmFnZUFyZWFNYXAgewotICAgIERpZEdldFZhbHVlcyh1aW50NjRfdCBzdG9yYWdl
TWFwU2VlZCkKICAgICBEaWRTZXRJdGVtKHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkLCBTdHJpbmcg
a2V5LCBib29sIHF1b3RhRXhjZXB0aW9uKQogICAgIERpZFJlbW92ZUl0ZW0odWludDY0X3Qgc3Rv
cmFnZU1hcFNlZWQsIFN0cmluZyBrZXkpCiAgICAgRGlkQ2xlYXIodWludDY0X3Qgc3RvcmFnZU1h
cFNlZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9T
dG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3Rv
cmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKaW5kZXggZjU5Yzc5YjdmYTJiZTJmYzlhNzIw
NTJjMWI5ZTUzY2I2YTMyM2ZkMC4uZjc0NDIyMWJlNGY1N2M0MDM3NGIxZjY1YzgxMDFhOGNjZTZj
OTQ4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3Rv
cmFnZU5hbWVzcGFjZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJT
dG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5j
bHVkZSAiU3RvcmFnZUFyZWFJbXBsLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFyZWFNYXAuaCIKKyNp
bmNsdWRlICJTdG9yYWdlTWFuYWdlclNldE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUGFnZS5o
IgogI2luY2x1ZGUgIldlYlBhZ2VHcm91cFByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5o
IgpAQCAtNDAsMzEgKzQxLDI3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCi1SZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJ
bXBsOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1
bnNpZ25lZCBxdW90YUluQnl0ZXMpCitSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VO
YW1lc3BhY2VJbXBsOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVu
dGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkK
IHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChTdG9yYWdl
VHlwZTo6U2Vzc2lvbiwgaWRlbnRpZmllciwgbnVsbHB0ciwgcXVvdGFJbkJ5dGVzKSk7CisgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5cGU6OlNl
c3Npb24sIGlkZW50aWZpZXIsIG51bGxwdHIsIHF1b3RhSW5CeXRlcywgc2Vzc2lvbklEKSk7CiB9
CiAKLVJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0
ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNp
Z25lZCBxdW90YUluQnl0ZXMpCitSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1l
c3BhY2VJbXBsOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmll
ciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7Ci0g
ICAgcmV0dXJuIGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZShpZGVudGlmaWVyLCBxdW90YUlu
Qnl0ZXMsIElzRXBoZW1lcmFsOjpZZXMpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0b3Jh
Z2VOYW1lc3BhY2VJbXBsKFN0b3JhZ2VUeXBlOjpMb2NhbCwgaWRlbnRpZmllciwgbnVsbHB0ciwg
cXVvdGFJbkJ5dGVzLCBzZXNzaW9uSUQpKTsKIH0KIAotUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBs
PiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2
NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcywgSXNFcGhlbWVyYWwgaXNFcGhl
bWVyYWwpCitSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpj
cmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHRvcExldmVsT3JpZ2luLCB1aW50NjRfdCBxdW90YUlu
Qnl0ZXMsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChpc0VwaGVtZXJhbCA9PSBJc0VwaGVtZXJhbDo6WWVz
ID8gU3RvcmFnZVR5cGU6OkVwaGVtZXJhbExvY2FsIDogU3RvcmFnZVR5cGU6OkxvY2FsLCBpZGVu
dGlmaWVyLCBudWxscHRyLCBxdW90YUluQnl0ZXMpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTdG9yYWdlTmFtZXNwYWNlSW1wbChTdG9yYWdlVHlwZTo6VHJhbnNpZW50TG9jYWwsIGlkZW50
aWZpZXIsICZ0b3BMZXZlbE9yaWdpbiwgcXVvdGFJbkJ5dGVzLCBzZXNzaW9uSUQpKTsKIH0KIAot
UmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlVHJh
bnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luJiB0b3BMZXZlbE9yaWdpbiwgdWludDY0X3QgcXVvdGFJbkJ5dGVzKQot
ewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0b3JhZ2VU
eXBlOjpUcmFuc2llbnRMb2NhbCwgaWRlbnRpZmllciwgJnRvcExldmVsT3JpZ2luLCBxdW90YUlu
Qnl0ZXMpKTsKLX0KLQotU3RvcmFnZU5hbWVzcGFjZUltcGw6OlN0b3JhZ2VOYW1lc3BhY2VJbXBs
KFdlYkNvcmU6OlN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlLCB1aW50NjRfdCBzdG9yYWdlTmFtZXNw
YWNlSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiB0b3BMZXZlbE9yaWdpbiwgdW5zaWduZWQg
cXVvdGFJbkJ5dGVzKQorU3RvcmFnZU5hbWVzcGFjZUltcGw6OlN0b3JhZ2VOYW1lc3BhY2VJbXBs
KFdlYkNvcmU6OlN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlLCB1aW50NjRfdCBzdG9yYWdlTmFtZXNw
YWNlSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiB0b3BMZXZlbE9yaWdpbiwgdW5zaWduZWQg
cXVvdGFJbkJ5dGVzLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAgOiBtX3N0b3JhZ2VU
eXBlKHN0b3JhZ2VUeXBlKQogICAgICwgbV9zdG9yYWdlTmFtZXNwYWNlSUQoc3RvcmFnZU5hbWVz
cGFjZUlEKQogICAgICwgbV90b3BMZXZlbE9yaWdpbih0b3BMZXZlbE9yaWdpbikKICAgICAsIG1f
cXVvdGFJbkJ5dGVzKHF1b3RhSW5CeXRlcykKKyAgICAsIG1fc2Vzc2lvbklEKHNlc3Npb25JRCkK
IHsKIH0KIApAQCAtNzcsMTMgKzc0LDE0IEBAIHZvaWQgU3RvcmFnZU5hbWVzcGFjZUltcGw6OmRp
ZERlc3Ryb3lTdG9yYWdlQXJlYU1hcChTdG9yYWdlQXJlYU1hcCYgbWFwKQogICAgIG1fc3RvcmFn
ZUFyZWFNYXBzLnJlbW92ZShtYXAuc2VjdXJpdHlPcmlnaW4oKS5kYXRhKCkpOwogfQogCi1SZWY8
U3RvcmFnZUFyZWE+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpzdG9yYWdlQXJlYShjb25zdCBTZWN1
cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKQorUmVmPFN0b3JhZ2VBcmVhPiBTdG9yYWdl
TmFtZXNwYWNlSW1wbDo6c3RvcmFnZUFyZWEoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1
cml0eU9yaWdpbkRhdGEpCiB7CiAgICAgUmVmUHRyPFN0b3JhZ2VBcmVhTWFwPiBtYXA7CiAKLSAg
ICBhdXRvJiBzbG90ID0gbV9zdG9yYWdlQXJlYU1hcHMuYWRkKHNlY3VyaXR5T3JpZ2luLCBudWxs
cHRyKS5pdGVyYXRvci0+dmFsdWU7CisgICAgYXV0byBzZWN1cml0eU9yaWdpbiA9IHNlY3VyaXR5
T3JpZ2luRGF0YS5zZWN1cml0eU9yaWdpbigpOworICAgIGF1dG8mIHNsb3QgPSBtX3N0b3JhZ2VB
cmVhTWFwcy5hZGQoc2VjdXJpdHlPcmlnaW4tPmRhdGEoKSwgbnVsbHB0cikuaXRlcmF0b3ItPnZh
bHVlOwogICAgIGlmICghc2xvdCkgewotICAgICAgICBtYXAgPSBTdG9yYWdlQXJlYU1hcDo6Y3Jl
YXRlKHRoaXMsIHNlY3VyaXR5T3JpZ2luLnNlY3VyaXR5T3JpZ2luKCkpOworICAgICAgICBtYXAg
PSBTdG9yYWdlQXJlYU1hcDo6Y3JlYXRlKHRoaXMsIFdURk1vdmUoc2VjdXJpdHlPcmlnaW4pKTsK
ICAgICAgICAgc2xvdCA9IG1hcC5nZXQoKTsKICAgICB9IGVsc2UKICAgICAgICAgbWFwID0gc2xv
dDsKQEAgLTk0LDE0ICs5MiwxOSBAQCBSZWY8U3RvcmFnZUFyZWE+IFN0b3JhZ2VOYW1lc3BhY2VJ
bXBsOjpzdG9yYWdlQXJlYShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlYwogUmVmPFN0b3Jh
Z2VOYW1lc3BhY2U+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjb3B5KFBhZ2UqIG5ld1BhZ2UpCiB7
CiAgICAgQVNTRVJUKG1fc3RvcmFnZU5hbWVzcGFjZUlEKTsKKyAgICBBU1NFUlQobV9zdG9yYWdl
VHlwZSA9PSBTdG9yYWdlVHlwZTo6U2Vzc2lvbik7CiAKLSAgICBpZiAobV9zdG9yYWdlVHlwZSA9
PSBTdG9yYWdlVHlwZTo6U2Vzc2lvbikKLSAgICAgICAgcmV0dXJuIGNyZWF0ZVNlc3Npb25TdG9y
YWdlTmFtZXNwYWNlKFdlYlBhZ2U6OmZyb21Db3JlUGFnZShuZXdQYWdlKS0+cGFnZUlEKCkudG9V
SW50NjQoKSwgbV9xdW90YUluQnl0ZXMpOwotCi0gICAgQVNTRVJUKG1fc3RvcmFnZVR5cGUgPT0g
U3RvcmFnZVR5cGU6OkVwaGVtZXJhbExvY2FsKTsKLSAgICBhdXRvIG5ld05hbWVzcGFjZSA9IGFk
b3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwobV9zdG9yYWdlVHlwZSwgbV9zdG9yYWdl
TmFtZXNwYWNlSUQsIG1fdG9wTGV2ZWxPcmlnaW4uZ2V0KCksIG1fcXVvdGFJbkJ5dGVzKSk7Cisg
ICAgaWYgKGF1dG8gbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uID0gV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkuZXhpc3RpbmdOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKSkKKyAgICAgICAgbmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6U3RvcmFnZU1h
bmFnZXJTZXQ6OkNsb25lU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UobmV3UGFnZS0+c2Vzc2lvbklE
KCksIG1fc3RvcmFnZU5hbWVzcGFjZUlELCBXZWJQYWdlOjpmcm9tQ29yZVBhZ2UobmV3UGFnZSkt
PnBhZ2VJRCgpLnRvVUludDY0KCkpLCAwKTsKKyAgICAKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTdG9yYWdlTmFtZXNwYWNlSW1wbChtX3N0b3JhZ2VUeXBlLCBXZWJQYWdlOjpmcm9tQ29yZVBh
Z2UobmV3UGFnZSktPnBhZ2VJRCgpLnRvVUludDY0KCksIG1fdG9wTGV2ZWxPcmlnaW4uZ2V0KCks
IG1fcXVvdGFJbkJ5dGVzLCBuZXdQYWdlLT5zZXNzaW9uSUQoKSkpOworfQogCi0gICAgcmV0dXJu
IG5ld05hbWVzcGFjZTsKK3ZvaWQgU3RvcmFnZU5hbWVzcGFjZUltcGw6OnNldFNlc3Npb25JREZv
clRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQoreworICAgIG1fc2Vzc2lvbklEID0g
c2Vzc2lvbklEOworICAgIGZvciAoYXV0byBzdG9yYWdlQXJlYU1hcCA6IG1fc3RvcmFnZUFyZWFN
YXBzLnZhbHVlcygpKQorICAgICAgICBzdG9yYWdlQXJlYU1hcC0+ZGlzY29ubmVjdCgpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oCmluZGV4IGVhNmQ1NTE4
Y2RmYzk5ZGMzYTAxZDg1N2UzNjYzNjUwZjliNjY2YTIuLmU3ZmViNjE3MGIyMGU3MThlOGEwNDE0
Y2I1ZjQzNmQ1NTM5OWYyNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaApAQCAtMzksMTIgKzM5LDEw
IEBAIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIFN0b3JhZ2VOYW1lc3BhY2VJbXBsIDogcHVibGlj
IFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2UgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U3Rv
cmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90
IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcyk7Ci0gICAgc3RhdGljIFJlZjxTdG9y
YWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVp
bnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcyk7CisgICAgc3RhdGljIFJl
ZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodWlu
dDY0X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzLCBQQUw6OlNlc3Npb25JRCk7
CiAKLSAgICBlbnVtIGNsYXNzIElzRXBoZW1lcmFsIDogYm9vbCB7IE5vLCBZZXMgfTsKLSAgICBz
dGF0aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2UodWludDY0X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzLCBJc0VwaGVtZXJh
bCBpc0VwaGVtZXJhbCk7Ci0gICAgc3RhdGljIFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3Jl
YXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luJiB0b3BMZXZlbE9yaWdpbiwgdWludDY0X3QgcXVvdGFJbkJ5
dGVzKTsKKyAgICBzdGF0aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVz
LCBQQUw6OlNlc3Npb25JRCk7CisgICAgc3RhdGljIFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4g
Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIs
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiB0b3BMZXZlbE9yaWdpbiwgdWludDY0X3QgcXVvdGFJ
bkJ5dGVzLCBQQUw6OlNlc3Npb25JRCk7CiAKICAgICB2aXJ0dWFsIH5TdG9yYWdlTmFtZXNwYWNl
SW1wbCgpOwogCkBAIC01NSw4ICs1MywxMSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRpZERlc3Ry
b3lTdG9yYWdlQXJlYU1hcChTdG9yYWdlQXJlYU1hcCYpOwogCisgICAgUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklEKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KKyAgICB2
b2lkIHNldFNlc3Npb25JREZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQpIG92ZXJyaWRlOworCiBw
cml2YXRlOgotICAgIGV4cGxpY2l0IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFdlYkNvcmU6OlN0b3Jh
Z2VUeXBlLCB1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luKiB0b3BMZXZlbE9yaWdpbiwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKKyAgICBleHBsaWNp
dCBTdG9yYWdlTmFtZXNwYWNlSW1wbChXZWJDb3JlOjpTdG9yYWdlVHlwZSwgdWludDY0X3Qgc3Rv
cmFnZU5hbWVzcGFjZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiogdG9wTGV2ZWxPcmlnaW4s
IHVuc2lnbmVkIHF1b3RhSW5CeXRlcywgUEFMOjpTZXNzaW9uSUQpOwogCiAgICAgUmVmPFdlYkNv
cmU6OlN0b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYShjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEmKSBvdmVycmlkZTsKICAgICBSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY29w
eShXZWJDb3JlOjpQYWdlKikgb3ZlcnJpZGU7CkBAIC02OSw3ICs3MCw5IEBAIHByaXZhdGU6CiAK
ICAgICBjb25zdCB1bnNpZ25lZCBtX3F1b3RhSW5CeXRlczsKIAotICAgIEhhc2hNYXA8V2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhLCBTdG9yYWdlQXJlYU1hcCo+IG1fc3RvcmFnZUFyZWFNYXBz
OworICAgIEhhc2hNYXA8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhLCBSZWZQdHI8U3RvcmFn
ZUFyZWFNYXA+PiBtX3N0b3JhZ2VBcmVhTWFwczsKKworICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vz
c2lvbklEOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyLmNwcAppbmRleCA4OGE5M2M1ZDUwNDJhMTI2MzQxMWM2ODRiZWRiZDUwNmUz
NGI1YTBlLi45ZTcyMTYzMWIzYjRiZDcyZWMwMzNlNzliYWUwZDM3NTI1NGJhYzA0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNw
YWNlUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdl
L1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKQEAgLTY3LDIyICs2NywxNyBAQCBXZWJT
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6On5XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIoKQog
CiBSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShQYWdlJiBwYWdlLCB1bnNpZ25lZCBx
dW90YSkKIHsKLSAgICByZXR1cm4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVNlc3Npb25T
dG9yYWdlTmFtZXNwYWNlKFdlYlBhZ2U6OmZyb21Db3JlUGFnZSgmcGFnZSktPnBhZ2VJRCgpLnRv
VUludDY0KCksIHF1b3RhKTsKKyAgICByZXR1cm4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0
ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFdlYlBhZ2U6OmZyb21Db3JlUGFnZSgmcGFnZSktPnBh
Z2VJRCgpLnRvVUludDY0KCksIHF1b3RhLCBwYWdlLnNlc3Npb25JRCgpKTsKIH0KIAotUmVmPFdl
YkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3Jl
YXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBhZ2UmIHBhZ2UsIHVuc2lnbmVkIHF1
b3RhKQorUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQ
cm92aWRlcjo6Y3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkIHF1b3RhLCBQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7Ci0gICAgcmV0dXJuIFN0b3JhZ2VOYW1lc3BhY2VJbXBs
OjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoV2ViUGFnZTo6ZnJvbUNvcmVQ
YWdlKCZwYWdlKS0+cGFnZUlEKCkudG9VSW50NjQoKSwgcXVvdGEpOworICAgIHJldHVybiBTdG9y
YWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKG1faWRlbnRpZmll
ciwgcXVvdGEsIHNlc3Npb25JRCk7CiB9CiAKLVJlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNl
PiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFj
ZSh1bnNpZ25lZCBxdW90YSkKK1JlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFj
ZShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgdG9wTGV2ZWxPcmlnaW4sIHVuc2lnbmVkIHF1b3Rh
LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7Ci0gICAgcmV0dXJuIFN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UobV9pZGVudGlmaWVyLCBxdW90YSwg
U3RvcmFnZU5hbWVzcGFjZUltcGw6OklzRXBoZW1lcmFsOjpObyk7Ci19Ci0KLVJlZjxXZWJDb3Jl
OjpTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVRy
YW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgdG9w
TGV2ZWxPcmlnaW4sIHVuc2lnbmVkIHF1b3RhKQotewotICAgIHJldHVybiBTdG9yYWdlTmFtZXNw
YWNlSW1wbDo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKG1faWRlbnRpZmll
ciwgdG9wTGV2ZWxPcmlnaW4sIHF1b3RhKTsKKyAgICByZXR1cm4gU3RvcmFnZU5hbWVzcGFjZUlt
cGw6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShtX2lkZW50aWZpZXIsIHRv
cExldmVsT3JpZ2luLCBxdW90YSwgc2Vzc2lvbklEKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFt
ZXNwYWNlUHJvdmlkZXIuaAppbmRleCAzY2U2ZGI5ZjA2OGU4MDM4OTY4MTE0ZWY5OWFjMjVhY2Uw
NDExZjM0Li4yMmU0MmY1MjBkYWNhM2RmNjljNWE4NjA1NjZmZjRhNzcwMWRmNmMxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNw
YWNlUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9X
ZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaApAQCAtMzgsOSArMzgsOCBAQCBwcml2YXRlOgog
ICAgIGV4cGxpY2l0IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcih1aW50NjRfdCBpZGVudGlm
aWVyKTsKIAogICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVTZXNzaW9u
U3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpQYWdlJiwgdW5zaWduZWQgcXVvdGEpIG92ZXJyaWRl
OwotICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVFcGhlbWVyYWxMb2Nh
bFN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6UGFnZSYsIHVuc2lnbmVkIHF1b3RhKSBvdmVycmlk
ZTsKLSAgICBSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlTG9jYWxTdG9yYWdl
TmFtZXNwYWNlKHVuc2lnbmVkIHF1b3RhKSBvdmVycmlkZTsKLSAgICBSZWY8V2ViQ29yZTo6U3Rv
cmFnZU5hbWVzcGFjZT4gY3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luJiwgdW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOworICAgIFJlZjxX
ZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5z
aWduZWQgcXVvdGEsIFBBTDo6U2Vzc2lvbklEKSBvdmVycmlkZTsKKyAgICBSZWY8V2ViQ29yZTo6
U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luJiwgdW5zaWduZWQgcXVvdGEsIFBBTDo6U2Vzc2lvbklEKSBv
dmVycmlkZTsKIAogICAgIGNvbnN0IHVpbnQ2NF90IG1faWRlbnRpZmllcjsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwCmluZGV4IDdkYTVj
NzJlNThlZjczZDE5NmQxNjczMDc3NWEzN2JhYTU0NzRjYWQuLjQyY2M0ZGJkMDM5ZWM3MzU5MmM0
NzYwZmNhZTFiYjhkNjgzZGM5OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3Rv
cmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFn
ZS9TdG9yYWdlQXJlYUltcGwuY3BwCkBAIC0yOTIsNCArMjkyLDIyIEBAIHZvaWQgU3RvcmFnZUFy
ZWFJbXBsOjpkaXNwYXRjaFN0b3JhZ2VFdmVudChjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3Ry
aW5nJiBvbGRWCiAgICAgICAgIFN0b3JhZ2VFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoU2Vzc2lv
blN0b3JhZ2VFdmVudHMoa2V5LCBvbGRWYWx1ZSwgbmV3VmFsdWUsIG1fc2VjdXJpdHlPcmlnaW4s
IHNvdXJjZUZyYW1lKTsKIH0KIAordm9pZCBTdG9yYWdlQXJlYUltcGw6OnNlc3Npb25DaGFuZ2Vk
KGJvb2wgaXNOZXdTZXNzaW9uUGVyc2lzdGVudCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOworCisgICAgdW5zaWduZWQgcXVvdGEgPSBtX3N0b3JhZ2VNYXAtPnF1b3RhKCk7CisgICAg
bV9zdG9yYWdlTWFwID0gU3RvcmFnZU1hcDo6Y3JlYXRlKHF1b3RhKTsKKworICAgIGlmIChpc05l
d1Nlc3Npb25QZXJzaXN0ZW50ICYmICFtX3N0b3JhZ2VBcmVhU3luYyAmJiBtX3N0b3JhZ2VTeW5j
TWFuYWdlcikgeworICAgICAgICBtX3N0b3JhZ2VBcmVhU3luYyA9IFN0b3JhZ2VBcmVhU3luYzo6
Y3JlYXRlKG1fc3RvcmFnZVN5bmNNYW5hZ2VyLmdldCgpLCAqdGhpcywgbV9zZWN1cml0eU9yaWdp
bi5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBp
ZiAoIWlzTmV3U2Vzc2lvblBlcnNpc3RlbnQgJiYgbV9zdG9yYWdlQXJlYVN5bmMpIHsKKyAgICAg
ICAgbV9zdG9yYWdlQXJlYVN5bmMtPnNjaGVkdWxlRmluYWxTeW5jKCk7CisgICAgICAgIG1fc3Rv
cmFnZUFyZWFTeW5jID0gbnVsbHB0cjsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlQXJlYUlt
cGwuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuaAppbmRl
eCA1OGZjYmEwMzUwMDRiYTYzY2M4ODhhOGRiMjkxMDAxOWJjOGU3ZDkxLi5iMjBiZWY5NTMzN2Q4
NDRkYjNjMjNmODAxZDBkYjkzNjU0NTBlMjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9T
dG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oCkBAIC02MSw4ICs2MSw2IEBAIHB1YmxpYzoKICAgICB2
b2lkIGRlY3JlbWVudEFjY2Vzc0NvdW50KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbG9zZURhdGFi
YXNlSWZJZGxlKCkgb3ZlcnJpZGU7CiAKLSAgICBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEmIHNlY3VyaXR5T3JpZ2luKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zZWN1cml0
eU9yaWdpbjsgfQotCiAgICAgUmVmPFN0b3JhZ2VBcmVhSW1wbD4gY29weSgpOwogICAgIHZvaWQg
Y2xvc2UoKTsKIApAQCAtNzQsNiArNzIsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHN5bmMoKTsK
IAorICAgIHZvaWQgc2Vzc2lvbkNoYW5nZWQoYm9vbCBpc05ld1Nlc3Npb25QZXJzaXN0ZW50KTsK
KwogcHJpdmF0ZToKICAgICBTdG9yYWdlQXJlYUltcGwoV2ViQ29yZTo6U3RvcmFnZVR5cGUsIGNv
bnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdl
U3luY01hbmFnZXI+JiYsIHVuc2lnbmVkIHF1b3RhKTsKICAgICBleHBsaWNpdCBTdG9yYWdlQXJl
YUltcGwoY29uc3QgU3RvcmFnZUFyZWFJbXBsJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0
b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmgKaW5kZXggYzAwODc1M2YzNDQ5ZGEzNGM1NjNkY2IxNjVh
NDI1NDYzNzAwN2EyNy4uMTA5YzdjZjM0NmMzNWZkMGNkMDE3ODZiYjQ5MGRlMDhiZDMwOTZmMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5o
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuaApAQCAt
MzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgU3RvcmFnZUFyZWFJbXBs
OwogCi1jbGFzcyBTdG9yYWdlQXJlYVN5bmMgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
U3RvcmFnZUFyZWFTeW5jPiB7CitjbGFzcyBTdG9yYWdlQXJlYVN5bmMgOiBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8U3RvcmFnZUFyZWFTeW5jLCBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpN
YWluPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTdG9yYWdlQXJlYVN5bmM+IGNyZWF0ZShS
ZWZQdHI8V2ViQ29yZTo6U3RvcmFnZVN5bmNNYW5hZ2VyPiYmLCBSZWY8U3RvcmFnZUFyZWFJbXBs
PiYmLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlSWRlbnRpZmllcik7CiAgICAgflN0b3JhZ2VBcmVh
U3luYygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VO
YW1lc3BhY2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlTmFt
ZXNwYWNlSW1wbC5jcHAKaW5kZXggNGE5NGExZDg1Y2VjYTFlM2M2M2JjNzJhODZhYjA2YWYwZTE4
NmQ1ZC4uNzM3ZjVjMDk3MjFkMmJiZGJjODY1NzYxYzlkMTE4YzgxZGY2MTM0NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3Bw
CkBAIC00NSwxNyArNDUsMTIgQEAgc3RhdGljIEhhc2hNYXA8U3RyaW5nLCBTdG9yYWdlTmFtZXNw
YWNlSW1wbCo+JiBsb2NhbFN0b3JhZ2VOYW1lc3BhY2VNYXAoKQogICAgIHJldHVybiBsb2NhbFN0
b3JhZ2VOYW1lc3BhY2VNYXA7CiB9CiAKLVJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFn
ZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkIHF1
b3RhKQorUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3Jl
YXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEsIFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9yYWdlTmFtZXNwYWNl
SW1wbChTdG9yYWdlVHlwZTo6U2Vzc2lvbiwgU3RyaW5nKCksIHF1b3RhKSk7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5cGU6OlNlc3Npb24s
IFN0cmluZygpLCBxdW90YSwgc2Vzc2lvbklEKSk7CiB9CiAKLVJlZjxTdG9yYWdlTmFtZXNwYWNl
SW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5h
bWVzcGFjZSh1bnNpZ25lZCBxdW90YSkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9y
YWdlTmFtZXNwYWNlSW1wbChTdG9yYWdlVHlwZTo6RXBoZW1lcmFsTG9jYWwsIFN0cmluZygpLCBx
dW90YSkpOwotfQotCi1SZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJ
bXBsOjpnZXRPckNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZShjb25zdCBTdHJpbmcmIGRhdGFi
YXNlUGF0aCwgdW5zaWduZWQgcXVvdGEpCitSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3Jh
Z2VOYW1lc3BhY2VJbXBsOjpnZXRPckNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZShjb25zdCBT
dHJpbmcmIGRhdGFiYXNlUGF0aCwgdW5zaWduZWQgcXVvdGEsIFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCkKIHsKICAgICBBU1NFUlQoIWRhdGFiYXNlUGF0aC5pc051bGwoKSk7CiAKQEAgLTYzLDE4
ICs1OCwxOSBAQCBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBs
OjpnZXRPckNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZQogICAgIGlmIChzbG90KQogICAgICAg
ICByZXR1cm4gKnNsb3Q7CiAKLSAgICBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IHN0b3JhZ2VO
YW1lc3BhY2UgPSBhZG9wdFJlZigqbmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0b3JhZ2VUeXBl
OjpMb2NhbCwgZGF0YWJhc2VQYXRoLCBxdW90YSkpOworICAgIFJlZjxTdG9yYWdlTmFtZXNwYWNl
SW1wbD4gc3RvcmFnZU5hbWVzcGFjZSA9IGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFjZUlt
cGwoU3RvcmFnZVR5cGU6OkxvY2FsLCBkYXRhYmFzZVBhdGgsIHF1b3RhLCBzZXNzaW9uSUQpKTsK
ICAgICBzbG90ID0gc3RvcmFnZU5hbWVzcGFjZS5wdHIoKTsKIAogICAgIHJldHVybiBzdG9yYWdl
TmFtZXNwYWNlOwogfQogCi1TdG9yYWdlTmFtZXNwYWNlSW1wbDo6U3RvcmFnZU5hbWVzcGFjZUlt
cGwoU3RvcmFnZVR5cGUgc3RvcmFnZVR5cGUsIGNvbnN0IFN0cmluZyYgcGF0aCwgdW5zaWduZWQg
cXVvdGEpCitTdG9yYWdlTmFtZXNwYWNlSW1wbDo6U3RvcmFnZU5hbWVzcGFjZUltcGwoU3RvcmFn
ZVR5cGUgc3RvcmFnZVR5cGUsIGNvbnN0IFN0cmluZyYgcGF0aCwgdW5zaWduZWQgcXVvdGEsIFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKICAgICA6IG1fc3RvcmFnZVR5cGUoc3RvcmFnZVR5cGUp
CiAgICAgLCBtX3BhdGgocGF0aC5pc29sYXRlZENvcHkoKSkKICAgICAsIG1fc3luY01hbmFnZXIo
MCkKICAgICAsIG1fcXVvdGEocXVvdGEpCiAgICAgLCBtX2lzU2h1dGRvd24oZmFsc2UpCisgICAg
LCBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCiB7CiAgICAgaWYgKGlzUGVyc2lzdGVudExvY2FsU3Rv
cmFnZShtX3N0b3JhZ2VUeXBlKSAmJiAhbV9wYXRoLmlzRW1wdHkoKSkKICAgICAgICAgbV9zeW5j
TWFuYWdlciA9IFN0b3JhZ2VTeW5jTWFuYWdlcjo6Y3JlYXRlKG1fcGF0aCk7CkBAIC05Nyw5ICs5
Myw5IEBAIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y29weShQ
YWdlKikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVCghbV9pc1No
dXRkb3duKTsKLSAgICBBU1NFUlQobV9zdG9yYWdlVHlwZSA9PSBTdG9yYWdlVHlwZTo6U2Vzc2lv
biB8fCBtX3N0b3JhZ2VUeXBlID09IFN0b3JhZ2VUeXBlOjpFcGhlbWVyYWxMb2NhbCk7CisgICAg
QVNTRVJUKG1fc3RvcmFnZVR5cGUgPT0gU3RvcmFnZVR5cGU6OlNlc3Npb24pOwogCi0gICAgYXV0
byBuZXdOYW1lc3BhY2UgPSBhZG9wdFJlZigqbmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKG1fc3Rv
cmFnZVR5cGUsIG1fcGF0aCwgbV9xdW90YSkpOworICAgIGF1dG8gbmV3TmFtZXNwYWNlID0gYWRv
cHRSZWYoKm5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChtX3N0b3JhZ2VUeXBlLCBtX3BhdGgsIG1f
cXVvdGEsIG1fc2Vzc2lvbklEKSk7CiAgICAgZm9yIChhdXRvJiBpdGVyIDogbV9zdG9yYWdlQXJl
YU1hcCkKICAgICAgICAgbmV3TmFtZXNwYWNlLT5tX3N0b3JhZ2VBcmVhTWFwLnNldChpdGVyLmtl
eSwgaXRlci52YWx1ZS0+Y29weSgpKTsKIApAQCAtMTI3LDcgKzEyMyw3IEBAIHZvaWQgU3RvcmFn
ZU5hbWVzcGFjZUltcGw6OmNsb3NlKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gSWYgd2Un
cmUgbm90IGEgcGVyc2lzdGVudCBzdG9yYWdlLCB3ZSBzaG91bGRuJ3QgbmVlZCB0byBkbyBhbnkg
d29yayBoZXJlLgotICAgIGlmIChtX3N0b3JhZ2VUeXBlID09IFN0b3JhZ2VUeXBlOjpTZXNzaW9u
IHx8IG1fc3RvcmFnZVR5cGUgPT0gU3RvcmFnZVR5cGU6OkVwaGVtZXJhbExvY2FsKSB7CisgICAg
aWYgKG1fc3RvcmFnZVR5cGUgPT0gU3RvcmFnZVR5cGU6OlNlc3Npb24pIHsKICAgICAgICAgQVNT
RVJUKCFtX3N5bmNNYW5hZ2VyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE3Niw0ICsx
NzIsMTEgQEAgdm9pZCBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y2xvc2VJZGxlTG9jYWxTdG9yYWdl
RGF0YWJhc2VzKCkKICAgICAgICAgaXQtPnZhbHVlLT5jbG9zZURhdGFiYXNlSWZJZGxlKCk7CiB9
CiAKK3ZvaWQgU3RvcmFnZU5hbWVzcGFjZUltcGw6OnNldFNlc3Npb25JREZvclRlc3RpbmcoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklEKQoreworICAgIG1fc2Vzc2lvbklEID0gc2Vzc2lvbklEOwor
ICAgIGZvciAoYXV0byBzdG9yYWdlQXJlYU1hcCA6IG1fc3RvcmFnZUFyZWFNYXAudmFsdWVzKCkp
CisgICAgICAgIHN0b3JhZ2VBcmVhTWFwLT5zZXNzaW9uQ2hhbmdlZCghc2Vzc2lvbklELmlzRXBo
ZW1lcmFsKCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oCmluZGV4IGM4OGYwNjFl
ZjVlNTBjOWIxNjM1ZWMzZjhkNmJhMGVkNzcwNWNhYTcuLjEyMDMyNTJkODQ2OWQ4YjMwZWEwNDAw
NzVkOTZmNzE1N2ZmZWVjZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFn
ZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFn
ZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1N0b3JhZ2VBcmVh
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TdG9yYWdlTmFtZXNwYWNlLmg+CisjaW5jbHVkZSA8cGFs
L1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtMzgsOSArMzksOCBA
QCBjbGFzcyBTdG9yYWdlQXJlYUltcGw7CiAKIGNsYXNzIFN0b3JhZ2VOYW1lc3BhY2VJbXBsIDog
cHVibGljIFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2UgewogcHVibGljOgotICAgIHN0YXRpYyBS
ZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVu
c2lnbmVkIHF1b3RhKTsKLSAgICBzdGF0aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVh
dGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEpOwotICAgIHN0
YXRpYyBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGdldE9yQ3JlYXRlTG9jYWxTdG9yYWdlTmFt
ZXNwYWNlKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VQYXRoLCB1bnNpZ25lZCBxdW90YSk7CisgICAg
c3RhdGljIFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1l
c3BhY2UodW5zaWduZWQgcXVvdGEsIFBBTDo6U2Vzc2lvbklEKTsKKyAgICBzdGF0aWMgUmVmPFN0
b3JhZ2VOYW1lc3BhY2VJbXBsPiBnZXRPckNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZShjb25z
dCBTdHJpbmcmIGRhdGFiYXNlUGF0aCwgdW5zaWduZWQgcXVvdGEsIFBBTDo6U2Vzc2lvbklEKTsK
ICAgICB2aXJ0dWFsIH5TdG9yYWdlTmFtZXNwYWNlSW1wbCgpOwogCiAgICAgdm9pZCBjbG9zZSgp
OwpAQCAtNTQsOCArNTQsMTEgQEAgcHVibGljOgogICAgIHZvaWQgc3luYygpOwogICAgIHZvaWQg
Y2xvc2VJZGxlTG9jYWxTdG9yYWdlRGF0YWJhc2VzKCk7CiAKKyAgICBQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3Nlc3Npb25JRDsgfQorICAgIHZv
aWQgc2V0U2Vzc2lvbklERm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCkgb3ZlcnJpZGU7CisKIHBy
aXZhdGU6Ci0gICAgU3RvcmFnZU5hbWVzcGFjZUltcGwoV2ViQ29yZTo6U3RvcmFnZVR5cGUsIGNv
bnN0IFN0cmluZyYgcGF0aCwgdW5zaWduZWQgcXVvdGEpOworICAgIFN0b3JhZ2VOYW1lc3BhY2VJ
bXBsKFdlYkNvcmU6OlN0b3JhZ2VUeXBlLCBjb25zdCBTdHJpbmcmIHBhdGgsIHVuc2lnbmVkIHF1
b3RhLCBQQUw6OlNlc3Npb25JRCk7CiAKICAgICBSZWY8V2ViQ29yZTo6U3RvcmFnZUFyZWE+IHN0
b3JhZ2VBcmVhKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYpIG92ZXJyaWRlOwog
ICAgIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjb3B5KFdlYkNvcmU6OlBhZ2UqIG5ld1BhZ2UpIG92
ZXJyaWRlOwpAQCAtNzMsNiArNzYsOCBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fcXVvdGE7
CiAKICAgICBib29sIG1faXNTaHV0ZG93bjsKKworICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lv
bklEOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9TdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcApp
bmRleCA4MzYyMDU3ZmZkNzRmNmQyZGExYWE0N2Q3NzgwMDQ5MWM5ZGExMWRjLi5kMDk0NjkxMjVm
YzJmNDg2NjU4YTczYTZiOTUwYjI0MzRiMDcwNzllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L1N0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcApA
QCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5o
IgogCiAjaW5jbHVkZSAiU3RvcmFnZU5hbWVzcGFjZUltcGwuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L1BhZ2UuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CkBAIC05NiwyNiArOTcsMjEgQEAgdm9pZCBXZWJTdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXI6OnN5bmNMb2NhbFN0b3JhZ2UoKQogICAgIH0KIH0KIAotUmVmPFN0b3JhZ2VOYW1l
c3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VO
YW1lc3BhY2UoUGFnZSYsIHVuc2lnbmVkIHF1b3RhKQorUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IFdl
YlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2Uo
UGFnZSYgcGFnZSwgdW5zaWduZWQgcXVvdGEpCiB7Ci0gICAgcmV0dXJuIFN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShxdW90YSk7CisgICAgcmV0dXJu
IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShxdW90
YSwgcGFnZS5zZXNzaW9uSUQoKSk7CiB9CiAKLVJlZjxTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFj
ZShQYWdlJiwgdW5zaWduZWQgcXVvdGEpCitSZWY8U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQg
cXVvdGEsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKLSAgICByZXR1cm4gU3RvcmFnZU5h
bWVzcGFjZUltcGw6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShxdW90YSk7
CisgICAgcmV0dXJuIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpnZXRPckNyZWF0ZUxvY2FsU3RvcmFn
ZU5hbWVzcGFjZShtX2xvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCwgcXVvdGEsIHNlc3Npb25JRCk7
CiB9CiAKLVJlZjxTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6
OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSkKLXsKLSAgICByZXR1
cm4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmdldE9yQ3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNl
KG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoLCBxdW90YSk7Ci19Ci0KLVJlZjxTdG9yYWdlTmFt
ZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVRyYW5zaWVudExvY2Fs
U3RvcmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkIHF1b3RhKQorUmVmPFN0
b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNp
ZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFNlY3VyaXR5T3JpZ2luJiwgdW5zaWduZWQgcXVvdGEs
IFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICAvLyBGSVhNRTogQSBzbWFydGVyIGlt
cGxlbWVudGF0aW9uIHdvdWxkIGNyZWF0ZSBhIHNwZWNpYWwgbmFtZXNwYWNlIHR5cGUgaW5zdGVh
ZCBvZiBqdXN0IHBpZ2d5LWJhY2tpbmcgb2ZmCiAgICAgLy8gU2Vzc2lvblN0b3JhZ2VOYW1lc3Bh
Y2UgaGVyZS4KLSAgICByZXR1cm4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVNlc3Npb25T
dG9yYWdlTmFtZXNwYWNlKHF1b3RhKTsKKyAgICByZXR1cm4gU3RvcmFnZU5hbWVzcGFjZUltcGw6
OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHF1b3RhLCBzZXNzaW9uSUQpOwogfQogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvV2ViU3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvV2ViU3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyLmgKaW5kZXggZTU4OWZlZTdhNWM2YzkxY2Y5NGI3ZDIzYjQ4NjE0ODE3
OWI4Y2ZmNi4uNmRiYzVjOTA5YmZiNzllMWEzNWIwOGI0ODk1MzlhMGYzZjcwYTcxYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92
aWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNw
YWNlUHJvdmlkZXIuaApAQCAtNTAsOSArNTAsOCBAQCBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdl
YlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcihjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZURhdGFi
YXNlUGF0aCk7CiAKICAgICBSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlU2Vz
c2lvblN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6UGFnZSYsIHVuc2lnbmVkIHF1b3RhKSBvdmVy
cmlkZTsKLSAgICBSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlRXBoZW1lcmFs
TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlBhZ2UmLCB1bnNpZ25lZCBxdW90YSkgb3Zl
cnJpZGU7Ci0gICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUxvY2FsU3Rv
cmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7Ci0gICAgUmVmPFdlYkNvcmU6
OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkIHF1b3RhKSBvdmVycmlkZTsKKyAgICBS
ZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNl
KHVuc2lnbmVkIHF1b3RhLCBQQUw6OlNlc3Npb25JRCkgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNv
cmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFj
ZShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkIHF1b3RhLCBQQUw6OlNlc3Npb25J
RCkgb3ZlcnJpZGU7CiAKICAgICBjb25zdCBTdHJpbmcgbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVBh
dGg7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJW
aWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4
IDRhZTIzZTkwYTQ3MTBjMzQwNDEyMDc3ZGI5YTMwMzRkYzY1NzI0YjguLjVlNWFmMzExZDk4Nzc5
ZjQ5ZWM0Mzk3OGM4OTFkZmU1NWQwYjhlMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYlZpZXcubW0KQEAgLTI4OTMsNiArMjg5Myw3IEBAIC0gKHZvaWQpX3ByZWZlcmVu
Y2VzQ2hhbmdlZDooV2ViUHJlZmVyZW5jZXMgKilwcmVmZXJlbmNlcwogICAgIHNldHRpbmdzLnNl
dExvY2FsU3RvcmFnZUVuYWJsZWQoW3ByZWZlcmVuY2VzIGxvY2FsU3RvcmFnZUVuYWJsZWRdKTsK
IAogICAgIF9wcml2YXRlLT5wYWdlLT5lbmFibGVMZWdhY3lQcml2YXRlQnJvd3NpbmcoW3ByZWZl
cmVuY2VzIHByaXZhdGVCcm93c2luZ0VuYWJsZWRdKTsKKyAgICBfcHJpdmF0ZS0+Z3JvdXAtPnN0
b3JhZ2VOYW1lc3BhY2VQcm92aWRlcigpLmVuYWJsZUxlZ2FjeVByaXZhdGVCcm93c2luZ0ZvclRl
c3RpbmcoW3ByZWZlcmVuY2VzIHByaXZhdGVCcm93c2luZ0VuYWJsZWRdKTsKICAgICBzZXR0aW5n
cy5zZXRTYW5zU2VyaWZGb250RmFtaWx5KFtwcmVmZXJlbmNlcyBzYW5zU2VyaWZGb250RmFtaWx5
XSk7CiAgICAgc2V0dGluZ3Muc2V0U2VyaWZGb250RmFtaWx5KFtwcmVmZXJlbmNlcyBzZXJpZkZv
bnRGYW1pbHldKTsKICAgICBzZXR0aW5ncy5zZXRTdGFuZGFyZEZvbnRGYW1pbHkoW3ByZWZlcmVu
Y2VzIHN0YW5kYXJkRm9udEZhbWlseV0pOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDU3MmQ1N2M4ZTE0NjE1MjExMTk4YzU1YzgxMDg2NWIyZTZk
NDg2YmYuLjUyZGJmMTRkNDE0MDBmNzU0MjQ2MGQ5MjA2Mjk3ZWYxMGQzMmIzOWIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBA
QAorMjAxOS0wOC0wNyAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAg
ICBTb21lIGltcHJvdmVtZW50cyBvbiB3ZWIgc3RvcmFnZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwMzczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0xvY2FsU3RvcmFnZVBlcnNpc3RlbmNlLm1tOgorICAgICAgICAoVEVTVCk6IHVwZGF0ZSBl
eHBlY3RhdGlvbiBmb3IgYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbDogbmV3IFNQSSB0byBz
eW5jaHJvbm91c2x5IGZsdXNoIGxvY2FsU3RvcmFnZSB0byBkYXRhYmFzZSBmaWxlLgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHA6CisgICAg
ICAgIChXVFI6OlRlc3RSdW5uZXI6OnN5bmNMb2NhbFN0b3JhZ2UpOgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oOgorCisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6IGNsZWFyIGxvY2FsIHN0b3JhZ2UgYmV0
d2VlbiB0ZXN0IHJ1bnMgdG8gbWFrZSBlYWNoIHRlc3QgaXNvbGF0ZWQuCisgICAgICAgIChXVFI6
OlRlc3RDb250cm9sbGVyOjpyZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKToKKyAgICAgICAg
KFdUUjo6U3RvcmFnZVZvaWRDYWxsYmFja0NvbnRleHQ6OlN0b3JhZ2VWb2lkQ2FsbGJhY2tDb250
ZXh0KToKKyAgICAgICAgKFdUUjo6U3RvcmFnZVZvaWRDYWxsYmFjayk6CisgICAgICAgIChXVFI6
OlRlc3RDb250cm9sbGVyOjpjbGVhckluZGV4ZWREYXRhYmFzZXMpOgorICAgICAgICAoV1RSOjpU
ZXN0Q29udHJvbGxlcjo6Y2xlYXJMb2NhbFN0b3JhZ2UpOgorICAgICAgICAoV1RSOjpUZXN0Q29u
dHJvbGxlcjo6c3luY0xvY2FsU3RvcmFnZSk6CisgICAgICAgIChXVFI6OlJlbW92ZUFsbEluZGV4
ZWREYXRhYmFzZXNDYWxsYmFja0NvbnRleHQ6OlJlbW92ZUFsbEluZGV4ZWREYXRhYmFzZXNDYWxs
YmFja0NvbnRleHQpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpSZW1vdmVBbGxJbmRleGVkRGF0
YWJhc2VzQ2FsbGJhY2spOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6
Q2xlYXJJbmRleGVkRGF0YWJhc2VzKTogRGVsZXRlZC4gVXNlIGxvd2VyY2FzZSBmb3IgY29uc2lz
dGVudCBzdHlsZS4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmg6
CisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoKKyAgICAg
ICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9t
SW5qZWN0ZWRCdW5kbGUpOiBhZGQgaGFuZGxlciBmb3IgbmV3IG1lc3NhZ2UgU3luY0xvY2FsU3Rv
cmFnZS4KKwogMjAxOS0wOC0wNiAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255
LmNvbT4KIAogICAgICAgICBBU1NFUlRJT04gRkFJTEVEOiBtX29ic2VydmVycy5pc0VtcHR5KCkg
aWYgV0tQYWdlU2V0UGFnZVN0YXRlQ2xpZW50IGlzIHVzZWQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTG9jYWxTdG9yYWdlUGVyc2lzdGVuY2UubW0g
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0xvY2FsU3RvcmFnZVBlcnNp
c3RlbmNlLm1tCmluZGV4IDExNTYyYmI1NjkzNGY1NGQ2M2Y5NzdhN2JkZTA5ZDk0MzU0OWFiMjcu
LjllODVjNzc2YjYzODEyMjllYTg2ZjVmNTFiNjBiMjFkMTk5OTk4MzYgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTG9jYWxTdG9yYWdlUGVyc2lzdGVu
Y2UubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Mb2NhbFN0
b3JhZ2VQZXJzaXN0ZW5jZS5tbQpAQCAtMTA0LDkgKzEwNCwxMSBAQCBURVNUKFdLV2ViVmlldywg
TG9jYWxTdG9yYWdlUHJvY2Vzc0NyYXNoZXMpCiAgICAgfV07CiAgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZyZWFkeVRvQ29udGludWUpOwogCisgICAgLy8gSWYgbmV0d29yayBwcm9jZXNz
LCBpbi1tZW1vcnkgc2Vzc2lvblN0b3JhZ2Ugd291bGQgYmUgbG9zdC4KKyAgICAvLyBXZWIgcHJv
Y2VzcyBzaG91bGQgZGlzY2FyZCBpdHMgbG9jYWwgY29weSBvZiBzZXNzaW9uU3RvcmFnZS4KICAg
ICByZWFkeVRvQ29udGludWUgPSBmYWxzZTsKICAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3Jp
cHQ6QCJ3aW5kb3cuc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnc2Vzc2lvbicpIiBjb21wbGV0aW9u
SGFuZGxlcjpeKGlkIHJlc3VsdCwgTlNFcnJvciAqKSB7Ci0gICAgICAgIEVYUEVDVF9UUlVFKFtA
InN0b3JhZ2UiIGlzRXF1YWxUb1N0cmluZzpyZXN1bHRdKTsKKyAgICAgICAgRVhQRUNUX1RSVUUo
W3Jlc3VsdCBpc0VxdWFsOk5TTnVsbC5udWxsXSk7CiAgICAgICAgIHJlYWR5VG9Db250aW51ZSA9
IHRydWU7CiAgICAgfV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWFkeVRvQ29u
dGludWUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKaW5kZXggY2Q1MWMxZDA3N2YxNTVmNDM2
N2JiMmNiYTViMTllYTRjODY0OTRmYi4uNTI4NWY3MmNiN2ViNzcxN2Q1Yzg1OWIwOTQwM2I3Yjdi
YzY4YjQ5ZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCkBAIC0xNDIsNiArMTQyLDcgQEAg
aW50ZXJmYWNlIFRlc3RSdW5uZXIgewogICAgIHZvaWQgY2xlYXJBbGxEYXRhYmFzZXMoKTsKICAg
ICB2b2lkIHNldERhdGFiYXNlUXVvdGEodW5zaWduZWQgbG9uZyBsb25nIHF1b3RhKTsKICAgICBE
T01TdHJpbmcgcGF0aFRvTG9jYWxSZXNvdXJjZShET01TdHJpbmcgdXJsKTsKKyAgICB2b2lkIHN5
bmNMb2NhbFN0b3JhZ2UoKTsKIAogICAgIGF0dHJpYnV0ZSBkb3VibGUgZGF0YWJhc2VEZWZhdWx0
UXVvdGE7CiAgICAgYXR0cmlidXRlIGRvdWJsZSBkYXRhYmFzZU1heFF1b3RhOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcCBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKaW5k
ZXggNDBiZGMyZWEwYmEyZTE0YTA0ZDBmNDVmNjY0ODA1NzRmNzhiZjg4YS4uMjQ1YTMxZDNjNTBk
YzgwY2QzMDg2NjI5NDE0MGZhYjdkNjliNTYwZCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCkBAIC0zNDIsNiArMzQyLDEz
IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0RGF0YWJhc2VRdW90YSh1aW50NjRfdCBxdW90YSkKICAg
ICByZXR1cm4gV0tCdW5kbGVTZXREYXRhYmFzZVF1b3RhKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0
b24oKS5idW5kbGUoKSwgcXVvdGEpOwogfQogCit2b2lkIFRlc3RSdW5uZXI6OnN5bmNMb2NhbFN0
b3JhZ2UoKQoreworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZSA9IGFk
b3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlN5bmNMb2NhbFN0b3JhZ2UiKSk7
CisgICAgV0tSZXRhaW5QdHI8V0tCb29sZWFuUmVmPiBtZXNzYWdlQm9keSA9IGFkb3B0V0soV0tC
b29sZWFuQ3JlYXRlKHRydWUpKTsKKyAgICBXS0J1bmRsZVBvc3RTeW5jaHJvbm91c01lc3NhZ2Uo
SW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRsZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwg
bWVzc2FnZUJvZHkuZ2V0KCksIG51bGxwdHIpOworfQorCiB2b2lkIFRlc3RSdW5uZXI6OmNsZWFy
QWxsQXBwbGljYXRpb25DYWNoZXMoKQogewogICAgIFdLQnVuZGxlUGFnZUNsZWFyQXBwbGljYXRp
b25DYWNoZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCkpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVy
LmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaApp
bmRleCA3M2NiZTdkOWM2MTcwOGZkYmYzNzAzOGU2MzQ1ZGExYTU3ZTg2ZjA5Li45ZWYwMGVmZTY3
ZGFhNDdkNmNkMTFlNTliNzQzNzM2YWU1ZDk1ZjdjIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaApAQCAtMTU5LDYgKzE1OSw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIGNsZWFyQWxsRGF0YWJhc2VzKCk7CiAgICAgdm9pZCBzZXREYXRh
YmFzZVF1b3RhKHVpbnQ2NF90KTsKICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gcGF0aFRv
TG9jYWxSZXNvdXJjZShKU1N0cmluZ1JlZik7CisgICAgdm9pZCBzeW5jTG9jYWxTdG9yYWdlKCk7
CiAKICAgICAvLyBBcHBsaWNhdGlvbiBDYWNoZQogICAgIHZvaWQgY2xlYXJBbGxBcHBsaWNhdGlv
bkNhY2hlcygpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJv
bGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRl
eCA3OTU3ZGM2MmY0MWViYmRmMDQ3Yjc0ZjQ2ZDllMzNjOTBkNGYyZGU5Li45NzE5MjU2ZmJkNzc3
ODZiODRlNjU4M2IwYmNlNGViZDVjNDk0MTFkIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmNwcApAQCAtOTM4LDkgKzkzOCwxMSBAQCBib29sIFRlc3RDb250cm9sbGVy
OjpyZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25z
LCBSZQogICAgIGF1dG8gd2Vic2l0ZURhdGFTdG9yZSA9IFdLQ29udGV4dEdldFdlYnNpdGVEYXRh
U3RvcmUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLmNvbnRleHQoKSk7CiAgICAgV0tXZWJz
aXRlRGF0YVN0b3JlQ2xlYXJBbGxEZXZpY2VPcmllbnRhdGlvblBlcm1pc3Npb25zKHdlYnNpdGVE
YXRhU3RvcmUpOwogCi0gICAgQ2xlYXJJbmRleGVkRGF0YWJhc2VzKCk7CisgICAgY2xlYXJJbmRl
eGVkRGF0YWJhc2VzKCk7CiAgICAgc2V0SURCUGVyT3JpZ2luUXVvdGEoNTAgKiBNQik7CiAKKyAg
ICBjbGVhckxvY2FsU3RvcmFnZSgpOworCiAgICAgY2xlYXJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9ucygpOwogICAgIGNsZWFyRE9NQ2FjaGVzKCk7CiAKQEAgLTMwNjYsOCArMzA2OCw4IEBAIHZv
aWQgVGVzdENvbnRyb2xsZXI6OnNldElEQlBlck9yaWdpblF1b3RhKHVpbnQ2NF90IHF1b3RhKQog
ICAgIFdLQ29udGV4dFNldElEQlBlck9yaWdpblF1b3RhKHBsYXRmb3JtQ29udGV4dCgpLCBxdW90
YSk7CiB9CiAKLXN0cnVjdCBSZW1vdmVBbGxJbmRleGVkRGF0YWJhc2VzQ2FsbGJhY2tDb250ZXh0
IHsKLSAgICBleHBsaWNpdCBSZW1vdmVBbGxJbmRleGVkRGF0YWJhc2VzQ2FsbGJhY2tDb250ZXh0
KFRlc3RDb250cm9sbGVyJiBjb250cm9sbGVyKQorc3RydWN0IFN0b3JhZ2VWb2lkQ2FsbGJhY2tD
b250ZXh0IHsKKyAgICBleHBsaWNpdCBTdG9yYWdlVm9pZENhbGxiYWNrQ29udGV4dChUZXN0Q29u
dHJvbGxlciYgY29udHJvbGxlcikKICAgICAgICAgOiB0ZXN0Q29udHJvbGxlcihjb250cm9sbGVy
KQogICAgIHsKICAgICB9CkBAIC0zMDc2LDE4ICszMDc4LDM3IEBAIHN0cnVjdCBSZW1vdmVBbGxJ
bmRleGVkRGF0YWJhc2VzQ2FsbGJhY2tDb250ZXh0IHsKICAgICBib29sIGRvbmUgeyBmYWxzZSB9
OwogfTsKIAotc3RhdGljIHZvaWQgUmVtb3ZlQWxsSW5kZXhlZERhdGFiYXNlc0NhbGxiYWNrKHZv
aWQqIHVzZXJEYXRhKQorc3RhdGljIHZvaWQgU3RvcmFnZVZvaWRDYWxsYmFjayh2b2lkKiB1c2Vy
RGF0YSkKIHsKLSAgICBhdXRvKiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8UmVtb3ZlQWxsSW5kZXhl
ZERhdGFiYXNlc0NhbGxiYWNrQ29udGV4dCo+KHVzZXJEYXRhKTsKKyAgICBhdXRvKiBjb250ZXh0
ID0gc3RhdGljX2Nhc3Q8U3RvcmFnZVZvaWRDYWxsYmFja0NvbnRleHQqPih1c2VyRGF0YSk7CiAg
ICAgY29udGV4dC0+ZG9uZSA9IHRydWU7CiAgICAgY29udGV4dC0+dGVzdENvbnRyb2xsZXIubm90
aWZ5RG9uZSgpOwogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjpDbGVhckluZGV4ZWREYXRhYmFz
ZXMoKQordm9pZCBUZXN0Q29udHJvbGxlcjo6Y2xlYXJJbmRleGVkRGF0YWJhc2VzKCkKK3sKKyAg
ICBhdXRvIHdlYnNpdGVEYXRhU3RvcmUgPSBXS0NvbnRleHRHZXRXZWJzaXRlRGF0YVN0b3JlKHBs
YXRmb3JtQ29udGV4dCgpKTsKKyAgICBTdG9yYWdlVm9pZENhbGxiYWNrQ29udGV4dCBjb250ZXh0
KCp0aGlzKTsKKyAgICBXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVBbGxJbmRleGVkRGF0YWJhc2Vz
KHdlYnNpdGVEYXRhU3RvcmUsICZjb250ZXh0LCBTdG9yYWdlVm9pZENhbGxiYWNrKTsKKyAgICBy
dW5VbnRpbChjb250ZXh0LmRvbmUsIG5vVGltZW91dCk7Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xs
ZXI6OmNsZWFyTG9jYWxTdG9yYWdlKCkKIHsKICAgICBhdXRvIHdlYnNpdGVEYXRhU3RvcmUgPSBX
S0NvbnRleHRHZXRXZWJzaXRlRGF0YVN0b3JlKHBsYXRmb3JtQ29udGV4dCgpKTsKLSAgICBSZW1v
dmVBbGxJbmRleGVkRGF0YWJhc2VzQ2FsbGJhY2tDb250ZXh0IGNvbnRleHQoKnRoaXMpOwotICAg
IFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUFsbEluZGV4ZWREYXRhYmFzZXMod2Vic2l0ZURhdGFT
dG9yZSwgJmNvbnRleHQsIFJlbW92ZUFsbEluZGV4ZWREYXRhYmFzZXNDYWxsYmFjayk7CisgICAg
U3RvcmFnZVZvaWRDYWxsYmFja0NvbnRleHQgY29udGV4dCgqdGhpcyk7CisgICAgV0tXZWJzaXRl
RGF0YVN0b3JlUmVtb3ZlTG9jYWxTdG9yYWdlKHdlYnNpdGVEYXRhU3RvcmUsICZjb250ZXh0LCBT
dG9yYWdlVm9pZENhbGxiYWNrKTsKKyAgICBydW5VbnRpbChjb250ZXh0LmRvbmUsIG5vVGltZW91
dCk7CisKKyAgICBTdG9yYWdlVm9pZENhbGxiYWNrQ29udGV4dCBsZWdhY3lDb250ZXh0KCp0aGlz
KTsKKyAgICBXS0NvbnRleHRDbGVhckxlZ2FjeVByaXZhdGVCcm93c2luZ0xvY2FsU3RvcmFnZShw
bGF0Zm9ybUNvbnRleHQoKSwgJmxlZ2FjeUNvbnRleHQsIFN0b3JhZ2VWb2lkQ2FsbGJhY2spOwor
ICAgIHJ1blVudGlsKGxlZ2FjeUNvbnRleHQuZG9uZSwgbm9UaW1lb3V0KTsKK30KKwordm9pZCBU
ZXN0Q29udHJvbGxlcjo6c3luY0xvY2FsU3RvcmFnZSgpCit7CisgICAgU3RvcmFnZVZvaWRDYWxs
YmFja0NvbnRleHQgY29udGV4dCgqdGhpcyk7CisgICAgV0tDb250ZXh0U3luY0xvY2FsU3RvcmFn
ZShwbGF0Zm9ybUNvbnRleHQoKSwgJmNvbnRleHQsIFN0b3JhZ2VWb2lkQ2FsbGJhY2spOwogICAg
IHJ1blVudGlsKGNvbnRleHQuZG9uZSwgbm9UaW1lb3V0KTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0Q29udHJvbGxlci5oCmluZGV4IGIwNGU1ODJkODJkNmRhNDIxNjYwYzhhNzVjZmJi
NjYxZDQ2OTMxZmEuLjkzZTY2NTYwZDMwZDBkNjk0OWJkYWE2MGVjOGE3YWRhNDRjMzM1ZjggMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKQEAgLTI2MSw3ICsyNjEsMTAg
QEAgcHVibGljOgogCiAgICAgdm9pZCByZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHMoKTsKIAot
ICAgIHZvaWQgQ2xlYXJJbmRleGVkRGF0YWJhc2VzKCk7CisgICAgdm9pZCBjbGVhckluZGV4ZWRE
YXRhYmFzZXMoKTsKKworICAgIHZvaWQgY2xlYXJMb2NhbFN0b3JhZ2UoKTsKKyAgICB2b2lkIHN5
bmNMb2NhbFN0b3JhZ2UoKTsKIAogICAgIHZvaWQgY2xlYXJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9ucygpOwogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0
aW9uLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCmluZGV4
IGE3Yjc3Y2E5YzAxMTk0YTUyMWE3YTUxZTJiOGJhNDQ3NjZjZGYxZGIuLjNkYWJiNzY4YWE3NzZl
NjkwNGJlYzU4YzlmMjRmYTZjNTE4NzAzOTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdEludm9jYXRpb24uY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dEludm9jYXRpb24uY3BwCkBAIC05MzcsNiArOTM3LDExIEBAIFdLUmV0YWluUHRyPFdLVHlwZVJl
Zj4gVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0
ZWRCCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAorICAgIGlmIChXS1N0cmluZ0lz
RXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiU3luY0xvY2FsU3RvcmFnZSIpKSB7Cisg
ICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5zeW5jTG9jYWxTdG9yYWdlKCk7Cisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKwogICAgIGlmIChXS1N0cmluZ0lzRXF1YWxU
b1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiQWRkTW9ja01lZGlhRGV2aWNlIikpIHsKICAgICAg
ICAgQVNTRVJUKFdLR2V0VHlwZUlEKG1lc3NhZ2VCb2R5KSA9PSBXS0RpY3Rpb25hcnlHZXRUeXBl
SUQoKSk7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCA4YzI2YzYwYjE4Y2I4YWUyYjg3MWJjMDRiOGUzMjY3M2I4ZjkyZDBi
Li5hMTA5Yzg3NzVlNmY0OThiZGUxZDc1NDYzZWExNjhhZWI3ZDI5YmMxIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjQgQEAKKzIwMTktMDgtMDcgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisK
KyAgICAgICAgU29tZSBpbXByb3ZlbWVudHMgb24gd2ViIHN0b3JhZ2UKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDM3MworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vZGlmeSB0ZXN0IGZvciBhIGJlaGF2
aW9yIGNoYW5nZTogc2Vzc2lvblN0b3JhZ2UgaXMgbG9zdCB3aGVuIG5ldHdvcmsgcHJvY2VzcyBj
cmFzaGVzLgorCisgICAgICAgIEZvciB0ZXN0cyB3aGljaCB1c2Ugc2Vzc2lvblN0b3JhZ2UgdG8g
c3RvcmUgaXRlbXMsIGNyYXNoIG5ldHdvcmsgcHJvY2VzcywgdGhlbiByZWFkIGZyb20gc2Vzc2lv
blN0b3JhZ2UgYW5kIAorICAgICAgICBleHBlY3QgaXRlbXMgdG8gYmUgaW4gc2Vzc2lvblN0b3Jh
Z2UsIHJlcGxhY2Ugc2Vzc2lvblN0b3JhZ2Ugd2l0aCBsb2NhbFN0b3JhZ2UuIEFsc28sIHRvIG1h
a2Ugc3VyZSBsb2NhbFN0b3JhZ2UKKyAgICAgICAgaXMgc3RvcmVkIHBlcnNpc3RlbnRseSBiZWZv
cmUgbmV0d29yayBwcm9jZXNzIGdldHMgdGVybWluYXRlZCwgYWRvcHQgYSBuZXdseSBpbnRyb2R1
Y2VkIFNQSSB0byAKKyAgICAgICAgc3luY2hyb25vdXNseSBmbHVzaCBsb2NhbFN0b3JhZ2UgY29u
dGVudCB0byBkaXNrLgorCisgICAgICAgICogcGxhdGZvcm0vaW9zLXNpbXVsYXRvci13azIvVGVz
dEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlv
bnM6CisgICAgICAgICogc3RvcmFnZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFnZS9wcml2YXRlLWJy
b3dzaW5nLWFmZmVjdHMtc3RvcmFnZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3RvcmFnZS9p
bmRleGVkZGIvSURCT2JqZWN0LWxlYWsuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRk
Yi9tb2Rlcm4vb3BlbmRhdGFiYXNlLWFmdGVyLXN0b3JhZ2UtY3Jhc2gtZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9vcGVuZGF0YWJhc2UtYWZ0ZXItc3Rv
cmFnZS1jcmFzaC5odG1sOgorCiAyMDE5LTA4LTA3ICBQcml5YW5rYSBBZ2Fyd2FsICA8cGFnYXJ3
YWw5OTlAYXBwbGUuY29tPgogCiAgICAgICAgIEFsbG93IGNsaWVudHMgdG8gdG9nZ2xlIGEgdGV4
dCBpbnB1dCBmaWVsZCBiZXR3ZWVuIGJlaW5nIHZpZXdhYmxlIGFuZCBoYXZpbmcgY2hhcmFjdGVy
cyBoaWRkZW4gd2hpbGUgbWFpbnRhaW5pbmcgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9pb3Mtc2ltdWxhdG9yLXdrMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vaW9zLXNpbXVsYXRvci13azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA5ZTg2NjZhY2Vm
MTY4MzgyNWQ3NTM4NjIxYzFjOWY4OTRlMGI1MTNmLi45NzQ5NzdhMjVmY2YxZmQ5ZTU3N2UzM2Y4
NWZhNWFmZDA0YmFmY2EyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtc2lt
dWxhdG9yLXdrMi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lv
cy1zaW11bGF0b3Itd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTY2LDcgKzY2LDcgQEAgaHR0cC93
cHQvY2FjaGUtc3RvcmFnZS9jYWNoZS1wdXQta2V5cy5odHRwcy5hbnkud29ya2VyLmh0bWwgWyBT
bG93IF0KIGh0dHAvd3B0L2NhY2hlLXN0b3JhZ2UvYS1jYWNoZS1vcGVuLmh0dHBzLmh0bWwgWyBT
bG93IF0KIGh0dHAvd3B0L2NhY2hlLXN0b3JhZ2UvY2FjaGUtcXVvdGEtYWRkLmFueS5odG1sIFsg
U2xvdyBdCiAKLXdlYmtpdC5vcmcvYi8xOTYzNzYgWyBEZWJ1ZyBdIHN0b3JhZ2UvZG9tc3RvcmFn
ZS9sb2NhbHN0b3JhZ2UvcHJpdmF0ZS1icm93c2luZy1hZmZlY3RzLXN0b3JhZ2UuaHRtbCBbIFBh
c3MgRmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMTk2Mzc2IFsgRGVidWcgXSBzdG9yYWdlL2RvbXN0
b3JhZ2UvbG9jYWxzdG9yYWdlL3ByaXZhdGUtYnJvd3NpbmctYWZmZWN0cy1zdG9yYWdlLmh0bWwg
WyBQYXNzIF0KIAogd2Via2l0Lm9yZy9iLzE5NjQwMyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL21lZGlhY2FwdHVyZS1yZWNvcmQvTWVkaWFSZWNvcmRlci1zdG9wLmh0bWwgWyBQYXNz
IEZhaWx1cmUgXQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rl
c3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3Rh
dGlvbnMKaW5kZXggZjMzNmZlYWRmZmQ4ZTdmNTY3ZTFkN2Q4M2FjYTE1OWM3NDIwMDJlYS4uODQz
NGY4NmI4MmYxZjRlYWNmNWQ1OTI2YTA3NTYxOWUwZjFjNjczZCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtOTIwLDcgKzkyMCw3IEBAIHdl
YmtpdC5vcmcvYi8xOTQ4MjYgaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2RvLW5v
dC1ibG9jay10b3AtbGV2ZWwtbmF2CiAKIHdlYmtpdC5vcmcvYi8xOTQ5MTYgZmFzdC9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbS12aWRlby1lbGVtZW50Lmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCi13
ZWJraXQub3JnL2IvMTk2Mzc2IHN0b3JhZ2UvZG9tc3RvcmFnZS9sb2NhbHN0b3JhZ2UvcHJpdmF0
ZS1icm93c2luZy1hZmZlY3RzLXN0b3JhZ2UuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCit3ZWJraXQu
b3JnL2IvMTk2Mzc2IHN0b3JhZ2UvZG9tc3RvcmFnZS9sb2NhbHN0b3JhZ2UvcHJpdmF0ZS1icm93
c2luZy1hZmZlY3RzLXN0b3JhZ2UuaHRtbCBbIFBhc3MgXQogCiB3ZWJraXQub3JnL2IvMTk2NDAw
IGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay1nZXRTZXR0aW5ncy5odG1sIFsgUGFz
cyBGYWlsdXJlIF0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9kb21zdG9yYWdl
L2xvY2Fsc3RvcmFnZS9wcml2YXRlLWJyb3dzaW5nLWFmZmVjdHMtc3RvcmFnZS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2RvbXN0b3JhZ2UvbG9jYWxzdG9yYWdlL3ByaXZhdGUt
YnJvd3NpbmctYWZmZWN0cy1zdG9yYWdlLWV4cGVjdGVkLnR4dAppbmRleCAyY2E5NTU3NTAyN2Zh
Yjg5YWJlYjQ2N2IzODA1YzIwNjA1ZGZmYmQxLi5mOTg0MGRlYjUzMGJlMWMxNTVhZDhkZWY1YTU4
YzgwZmM2NjFkMDI3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2RvbXN0b3JhZ2Uv
bG9jYWxzdG9yYWdlL3ByaXZhdGUtYnJvd3NpbmctYWZmZWN0cy1zdG9yYWdlLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2RvbXN0b3JhZ2UvbG9jYWxzdG9yYWdlL3ByaXZh
dGUtYnJvd3NpbmctYWZmZWN0cy1zdG9yYWdlLWV4cGVjdGVkLnR4dApAQCAtOCw3ICs4LDcgQEAg
QUxFUlQ6IGxvY2FsU3RvcmFnZSdzIGxlbmd0aCBpczogMQogQUxFUlQ6IFRoZSBpdGVtIGluIG5l
dyB3aW5kb3cgc3RhcnRzIG91dCBhczogQ2hhbmdlZFZhbHVlCiBBTEVSVDogVGhlIGl0ZW0gaW4g
bmV3IHdpbmRvdyBpcyBub3c6IE5ld1dpbmRvd1ZhbHVlCiBBTEVSVDogQmFjayBpbiBwYXJlbnQg
d2luZG93LCBsb2NhbFN0b3JhZ2UncyBsZW5ndGggaXM6IDEKLUFMRVJUOiBCYWNrIGluIHBhcmVu
dCB3aW5kb3csIHRlc3RJdGVtIGlzOiBDaGFuZ2VkVmFsdWUKK0FMRVJUOiBCYWNrIGluIHBhcmVu
dCB3aW5kb3csIHRlc3RJdGVtIGlzOiBOZXdXaW5kb3dWYWx1ZQogQUxFUlQ6IEZpbmFsIHdpbmRv
dywgbG9jYWxTdG9yYWdlJ3MgbGVuZ3RoIGlzOiAxCiBBTEVSVDogRmluYWwgd2luZG93LCBpdGVt
IGlzOiBQZXJzaXN0ZW50IGl0ZW0hCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL0lEQk9iamVjdC1sZWFrLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9JREJPYmplY3QtbGVhay5odG1sCmluZGV4IGUxOGI2OGI5MWFjN2Y2MTk1YTFlMWUxMTFh
ZjRjYWQwM2I4NjNjNTcuLjdiMDNlYTI0YjQwNmQ1NGZlMzMwOGVhZDZjMTQ5ZWFkNGRmMDA2MzYg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL0lEQk9iamVjdC1sZWFr
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvSURCT2JqZWN0LWxlYWsu
aHRtbApAQCAtMTMsNyArMTMsNyBAQCBmdW5jdGlvbiB0ZXN0KCkgewogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgaWYgKHNlc3Npb25TdG9yYWdlLmRvbmVGaXJzdExvYWQpIHsKKyAgICBp
ZiAobG9jYWxTdG9yYWdlLmRvbmVGaXJzdExvYWQpIHsKICAgICAgICAgZ2MoKTsKICAgICAgICAg
c2hvdWxkQmVFcXVhbFRvTnVtYmVyKCJpbnRlcm5hbHMubnVtYmVyT2ZJREJUcmFuc2FjdGlvbnMo
KSIsIDApOwogICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKQEAgLTIzLDE2ICsyMywyMiBAQCBmdW5j
dGlvbiB0ZXN0KCkgewogICAgIHZhciBkYm5hbWUgPSBzZXREQk5hbWVGcm9tUGF0aCgpICsgRGF0
ZSgpOwogICAgIHZhciByZXF1ZXN0ID0gIHdpbmRvdy5pbmRleGVkREIub3BlbihkYm5hbWUpOwog
ICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZXZ0KSB7Ci0gICAgICAgIHNl
c3Npb25TdG9yYWdlLmRvbmVGaXJzdExvYWQgPSB0cnVlOworICAgICAgICBsb2NhbFN0b3JhZ2Uu
ZG9uZUZpcnN0TG9hZCA9IHRydWU7CiAgICAgICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIgfHwg
IXRlc3RSdW5uZXIudGVybWluYXRlTmV0d29ya1Byb2Nlc3MpIHsKICAgICAgICAgICAgIHRlc3RG
YWlsZWQoJ1RoaXMgdGVzdCByZXF1aXJlcyBhY2Nlc3MgdG8gdGhlIFRlc3RSdW5uZXIgb2JqZWN0
IGFuZCB0ZXJtaW5hdGVOZXR3b3JrUHJvY2VzcygpIGZ1bmN0aW9uJyk7CiAgICAgICAgICAgICBm
aW5pc2hKU1Rlc3QoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfSAKKworICAgICAg
ICAvLyBNYWtlIHN1cmUgbG9jYWxTdG9yYWdlIGlzIGZsdXNoZWQgdG8gZGlzayBiZWZvcmUgY3Jh
c2hpbmcgbmV0d29yayBwcm9jZXNzLgorICAgICAgICB0ZXN0UnVubmVyLnN5bmNMb2NhbFN0b3Jh
Z2UoKTsKICAgICAgICAgdGVzdFJ1bm5lci50ZXJtaW5hdGVOZXR3b3JrUHJvY2VzcygpOwotICAg
ICAgICBzZXRUaW1lb3V0KCgoKT0+IHsKLSAgICAgICAgICAgIGxvY2F0aW9uLnJlbG9hZCgpOwot
ICAgICAgICB9KSwgMCk7CisKKyAgICAgICAgZXZ0LnRhcmdldC5yZXN1bHQub25lcnJvciA9IGZ1
bmN0aW9uKGUpIHsKKyAgICAgICAgICAgIHNldFRpbWVvdXQoKCgpPT4geworICAgICAgICAgICAg
ICAgIGxvY2F0aW9uLnJlbG9hZCgpOworICAgICAgICAgICAgfSksIDApOworICAgICAgICB9CiAg
ICAgfQogfQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rl
cm4vb3BlbmRhdGFiYXNlLWFmdGVyLXN0b3JhZ2UtY3Jhc2gtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL29wZW5kYXRhYmFzZS1hZnRlci1zdG9yYWdl
LWNyYXNoLWV4cGVjdGVkLnR4dAppbmRleCA0N2I4NzI3YTkzOTViNWQzYzRhM2QzZjFhNmEwZGUx
ZTgxNjU5NDliLi5mOTk3OGEwMjQ0ZjFkMGE2N2I0ZGMxZjU4ZGQyMWMxZWQxNThjZjRjIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vb3BlbmRhdGFiYXNl
LWFmdGVyLXN0b3JhZ2UtY3Jhc2gtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL21vZGVybi9vcGVuZGF0YWJhc2UtYWZ0ZXItc3RvcmFnZS1jcmFzaC1leHBl
Y3RlZC50eHQKQEAgLTEsMiArMSwyIEBACi1QQVNTIHNlc3Npb25TdG9yYWdlW3N0b3JhZ2VLZXld
IGlzICJNYWRlIGl0IgorUEFTUyBsb2NhbFN0b3JhZ2Vbc3RvcmFnZUtleV0gaXMgIk1hZGUgaXQi
CiBTdWNjZXNzZnVsbHkgb3BlbmVkIGRhdGFiYXNlIHdpdGggdmVyc2lvbiAzLgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL29wZW5kYXRhYmFzZS1hZnRl
ci1zdG9yYWdlLWNyYXNoLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rl
cm4vb3BlbmRhdGFiYXNlLWFmdGVyLXN0b3JhZ2UtY3Jhc2guaHRtbAppbmRleCBkMjQ1OGY2YTI5
OGIzNDEwN2E0YjhkMGVmNjdiYzY0MjNkMmRhMGRmLi43NDBjMmVjMjI4ZTllMjUwYWY5NDlkMjI3
OWJjZTM2ODMwN2I5ZGYyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9tb2Rlcm4vb3BlbmRhdGFiYXNlLWFmdGVyLXN0b3JhZ2UtY3Jhc2guaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vb3BlbmRhdGFiYXNlLWFmdGVyLXN0b3Jh
Z2UtY3Jhc2guaHRtbApAQCAtMjAsMzEgKzIwLDMxIEBAIGZ1bmN0aW9uIGNvbnRpbnVlVGVzdCgp
CiAJcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24oZSkgewogCQkvLyBHb29kLCB3ZSByZWNlaXZl
ZCBhbiBleHBlY3RlZCBlcnJvci4KIAkJLy8gTm93IHJlbG9hZCB0byBzZWUgaWYgYSBuZXcgZG9j
dW1lbnQgY29ubmVjdHMgc3VjY2Vzc2Z1bGx5Ci0JCWlmIChzZXNzaW9uU3RvcmFnZVtzdG9yYWdl
S2V5XSkgeworCQlpZiAobG9jYWxTdG9yYWdlW3N0b3JhZ2VLZXldKSB7CiAJCQlkb2N1bWVudC5i
b2R5LmlubmVySFRNTCA9ICJSZWNlaXZlZCBlcnJvciBtb3JlIHRoYW4gb25jZSB1bmV4cGVjdGVk
bHkuIERhdGFiYXNlOiBuYW1lICIgKyBkYm5hbWUgKyAiLCB2ZXJzaW9uIDIuIjsKIAkJCWlmICh3
aW5kb3cudGVzdFJ1bm5lcikKIAkJCQl0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIAkJCXJldHVy
bjsKIAkJfQogCi0JCXNlc3Npb25TdG9yYWdlW3N0b3JhZ2VLZXldID0gIk1hZGUgaXQiOworCQls
b2NhbFN0b3JhZ2Vbc3RvcmFnZUtleV0gPSAiTWFkZSBpdCI7CiAJCWxvY2F0aW9uLnJlbG9hZCgp
OwogCX0KIAogCXJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZSkgewotCQlkb2N1bWVudC5i
b2R5LmlubmVySFRNTCA9ICJVbmV4cGVjdGVkIHVwZ3JhZGVuZWVkZWQgYWZ0ZXIgc3RvcmFnZSBw
cm9jZXNzIHRlcm1pbmF0aW9uLiBEYXRhYmFzZTogbmFtZSAiICsgZGJuYW1lICsgIiwgdmVyc2lv
biAyLiBTZXNzaW9uU3RvcmFnZSB2YWx1ZTogIiArIHNlc3Npb25TdG9yYWdlW3N0b3JhZ2VLZXld
ICsgIi4iOworCQlkb2N1bWVudC5ib2R5LmlubmVySFRNTCA9ICJVbmV4cGVjdGVkIHVwZ3JhZGVu
ZWVkZWQgYWZ0ZXIgc3RvcmFnZSBwcm9jZXNzIHRlcm1pbmF0aW9uLiBEYXRhYmFzZTogbmFtZSAi
ICsgZGJuYW1lICsgIiwgdmVyc2lvbiAyLiBMb2NhbFN0b3JhZ2UgdmFsdWU6ICIgKyBsb2NhbHN0
b3JhU3RvcmFnZVtzdG9yYWdlS2V5XSArICIuIjsKIAkJaWYgKHdpbmRvdy50ZXN0UnVubmVyKQog
CQkJdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAJfQogfQogCi12YXIgdmVyc2lvblRvT3BlbiA9
IHNlc3Npb25TdG9yYWdlLmRvbmVGaXJzdExvYWQgPyAzIDogMTsKK3ZhciB2ZXJzaW9uVG9PcGVu
ID0gbG9jYWxTdG9yYWdlLmRvbmVGaXJzdExvYWQgPyAzIDogMTsKIHZhciByZXF1ZXN0ID0gd2lu
ZG93LmluZGV4ZWREQi5vcGVuKGRibmFtZSwgdmVyc2lvblRvT3Blbik7CiAKIHJlcXVlc3Qub251
cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZSkgewotCWlmIChzZXNzaW9uU3RvcmFnZS5kb25lRmly
c3RMb2FkKSB7CisJaWYgKGxvY2FsU3RvcmFnZS5kb25lRmlyc3RMb2FkKSB7CiAJCWRvY3VtZW50
LmJvZHkuaW5uZXJIVE1MID0gIlN1Y2Nlc3NmdWxseSBvcGVuZWQgZGF0YWJhc2Ugd2l0aCB2ZXJz
aW9uICIgKyB2ZXJzaW9uVG9PcGVuICsgIi4iOwotCQlzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Nl
c3Npb25TdG9yYWdlW3N0b3JhZ2VLZXldJywgJ01hZGUgaXQnKTsKKwkJc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCdsb2NhbFN0b3JhZ2Vbc3RvcmFnZUtleV0nLCAnTWFkZSBpdCcpOwogCiAJCWlmICh3
aW5kb3cudGVzdFJ1bm5lcikgewogCQkJdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CkBAIC01Miw3
ICs1Miw3IEBAIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZSkgewogCQl9CiAJ
fQogCi0Jc2Vzc2lvblN0b3JhZ2UuZG9uZUZpcnN0TG9hZCA9IHRydWU7CisJbG9jYWxTdG9yYWdl
LmRvbmVGaXJzdExvYWQgPSB0cnVlOwogCiAJLy8gU2V0IGFuIGVycm9yIGhhbmRsZXIgb24gdGhl
IGRhdGFiYXNlIGNvbm5lY3Rpb24gc28gb25jZSB0aGUgc3RvcmFnZSBwcm9jZXNzIHRlcm1pbmF0
ZXMgd2Uga25vdyB0byBjb250aW51ZSB0aGUgdGVzdAogCWUudGFyZ2V0LnJlc3VsdC5vbmVycm9y
ID0gZnVuY3Rpb24oZSkgewpAQCAtNjEsNiArNjEsOCBAQCByZXF1ZXN0Lm9udXBncmFkZW5lZWRl
ZCA9IGZ1bmN0aW9uKGUpIHsKIAogCWlmICh3aW5kb3cudGVzdFJ1bm5lcikgewogCQl0ZXN0UnVu
bmVyLndhaXRVbnRpbERvbmUoKTsKKwkJLy8gTWFrZSBzdXJlIGxvY2FsU3RvcmFnZSBpcyBmbHVz
aGVkIHRvIGRpc2sgYmVmb3JlIGNyYXNoaW5nIG5ldHdvcmsgcHJvY2Vzcy4KKwkJdGVzdFJ1bm5l
ci5zeW5jTG9jYWxTdG9yYWdlKCk7CiAJCXRlc3RSdW5uZXIudGVybWluYXRlTmV0d29ya1Byb2Nl
c3MoKTsKIAl9CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376320</attachid>
            <date>2019-08-14 15:15:20 -0700</date>
            <delta_ts>2019-08-14 17:12:07 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-200373-20190814151519.patch</filename>
            <type>text/plain</type>
            <size>253357</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4NjM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTg1ZGRlYzY4NmY3ZjYw
YTczMTA4Yzg0NzBiNWYwYWNkMTVmODBjMC4uNDM4MzQ0YmY0ODgwN2VjMjhhNDk1NjJkNTM5OGYy
NjBiMWYzMmEwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDE5LTA4LTE0ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIFNvbWUgaW1wcm92ZW1lbnRz
IG9uIHdlYiBzdG9yYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDAzNzMKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKwor
ICAgICAgICBSZW1vdmUgc3RvcmFnZSB0eXBlIEVwaGVtZXJhbExvY2FsU3RvcmFnZSwgd2hpY2gg
aXMgdXNlZCBmb3IgbG9jYWxTdG9yYWdlIGluIGVwaGVtZXJhbCBzZXNzaW9uLCBhbmQgdXNlIAor
ICAgICAgICBMb2NhbFN0b3JhZ2UgaW5zdGVhZC4KKworICAgICAgICBBZGQgU2Vzc2lvbklEIHRv
IFN0b3JhZ2VOYW1lc3BhY2UgdG8gbWFrZSBTdG9yYWdlTmFtZXNwYWNlIHNlc3Npb24tc3BlY2lm
aWMuCisKKyAgICAgICAgTm8gbmV3IHRlc3QsIHVwZGF0aW5nIGV4aXN0aW5nIHRlc3RzIGZvciBu
ZXcgYmVoYXZpb3IuCisKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlTdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAg
IChXZWJDb3JlOjpFbXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlRXBoZW1lcmFs
TG9jYWxTdG9yYWdlTmFtZXNwYWNlKTogRGVsZXRlZC4KKworICAgICAgICAqIHBhZ2UvQ2hyb21l
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6Y3JlYXRlV2luZG93IGNvbnN0KTogZXBo
ZW1lcmFsIGxvY2FsU3RvcmFnZSBvZiBkaWZmZXJlbnQgd2luZG93cyB3aWxsIGNvbm5lY3QgdG8g
dGhlIHNhbWUgCisgICAgICAgIFN0b3JhZ2VBcmVhIGluIG5ldHdvcmsgcHJvY2Vzcywgc28gbm8g
bmVlZCB0byBjb3B5IGZyb20gcGFyZW50IHdpbmRvdyB0byBjaGlsZCB3aW5kb3cuCisKKyAgICAg
ICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OnBy
ZXdhcm1Mb2NhbFN0b3JhZ2VJZk5lY2Vzc2FyeSk6IGxvY2FsU3RvcmFnZSB3aWxsIGJlIHByZXdh
cm1lZCBpbiBuZXR3b3JrIHByb2Nlc3MgaW4gdGhlCisgICAgICAgIGluaXRpYWxpemF0aW9uIG9m
IFN0b3JhZ2VBcmVhTWFwLgorCisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBhZ2U6OlBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6flBhZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2U6OnNldFNlc3Npb25JRCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdl
OjplcGhlbWVyYWxMb2NhbFN0b3JhZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZTo6c2V0RXBoZW1lcmFsTG9jYWxTdG9yYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL1Bh
Z2UuaDoKKyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U3RvcmFnZTo6cHJld2FybSk6IERlbGV0ZWQuCisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlLmg6
CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlQXJlYS5oOgorICAgICAgICAoV2ViQ29yZTo6U3Rv
cmFnZUFyZWE6OnByZXdhcm0pOiBEZWxldGVkLgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZU5h
bWVzcGFjZS5oOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6flN0b3JhZ2VO
YW1lc3BhY2VQcm92aWRlcik6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXI6OmxvY2FsU3RvcmFnZUFyZWEpOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyOjpsb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6
U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjp0cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2Up
OgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjplbmFibGVMZWdh
Y3lQcml2YXRlQnJvd3NpbmdGb3JUZXN0aW5nKTogY2hhbmdlIFNlc3Npb25JRCBvZiBzdG9yYWdl
TmFtZXNwYWNlCisgICAgICAgIGFuZCB1cGRhdGUgZXZlcnkgU3RvcmFnZUFyZWEgaW4gdGhpcyBu
YW1lc3BhY2UuCisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmFk
ZFBhZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyOjpyZW1vdmVQYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2VOYW1l
c3BhY2VQcm92aWRlci5oOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZVR5cGUuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OmlzTG9jYWxTdG9yYWdlKToKKwogMjAxOS0wOC0xMyAgWmFsYW4gQnVqdGFz
ICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtDb250ZW50Q2hhbmdlT2JzZXJ2ZXJdIFNj
b3BlIGV2ZW50cyBpbiBhZGp1c3RPYnNlcnZlZFN0YXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDU4ZTcxMzMwZWFk
NWE5YTI0ZWMyODFmNTY3NTAzYTk2YzRhYTZjZmIuLjU2YzEyN2Q2YjVhMmU3MzI4ZmZjM2M0OGRm
YTE5OGEwN2JhYWRjZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzA2IEBACisyMDE5LTA4LTE0ICBT
aWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIFNvbWUgaW1wcm92ZW1l
bnRzIG9uIHdlYiBzdG9yYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDAzNzMKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4K
KworICAgICAgICBGaXggc29tZSBpc3N1ZXMgaW4gd2ViIHN0b3JhZ2UgYXJjaGl0ZWN0dXJlLiBG
b3IgZXhhbXBsZSwgc2Vzc2lvblN0b3JhZ2VOYW1lU3BhY2UgZm9yIHdlYiBwYWdlIGlzIHByZXBh
cmVkIGFuZCAKKyAgICAgICAgZGVzdHJveWVkIGluIHRoZSBuZXR3b3JrIHByb2Nlc3Mgd2hlbiB0
aGUgcGFnZSBjb21lcyBhbmQgZ29lcywgZXZlbiB0aG91Z2ggdGhlIHBhZ2UgbWF5IG5vdCB1c2Ug
c2Vzc2lvblN0b3JhZ2UgCisgICAgICAgIGF0IGFsbC4gVGhlIG1lc3NhZ2VzIGFib3V0IHBhZ2Ug
c3RhdGUgc2VudCBmcm9tIHdlYiBwcm9jZXNzIHRvIG5ldHdvcmsgcHJvY2VzcyBjYW4gYmUgd2Fz
dGUuCisKKyAgICAgICAgSGVyZSBhcmUgc29tZSBnZW5lcmFsIGlkZWFzIG9mIHRoaXMgcGF0Y2g6
CisgICAgICAgIDEuIE5ldHdvcmsgcHJvY2VzcyBvd25zIHRoZSB3ZWIgc3RvcmFnZSwgYW5kIHdl
YiBwcm9jZXNzIGtlZXBzIGEgc21hbGwgbG9jYWwgY29weSAoYmFzZWQgb24gc2Vzc2lvbiBhbmQg
CisgICAgICAgIG9yaWdpbnMgdGhhdCBhcmUgdmlzaXRlZCkuIFRoZXJlIGlzIGEgdmlydHVhbCBj
b25uZWN0aW9uIGZyb20gdGhlIGxvY2FsIGNvcHkgaW4gdGhlIHdlYiBwcm9jZXNzIHRvIHRoZSBv
cmlnaW5hbAorICAgICAgICBjb3B5IGluIHRoZSBuZXR3b3JrIHByb2Nlc3MuIFRoZSBjb25uZWN0
aW9uIGlzIGNyZWF0ZWQgYnkgd2ViIHByb2Nlc3Mgd2hlbiBzb21lIHBhZ2UgYXNrcyBmb3Igd2Vi
IHN0b3JhZ2UuCisgICAgICAgIDIuIElmIGNvbm5lY3Rpb24gaXMgbG9zdCBiZWNhdXNlIG5ldHdv
cmsgcHJvY2VzcyBpcyBnb25lLCBzdG9yYWdlIGluIG1lbW9yeSB3aWxsIGJlIGxvc3QuIFRoZSBs
b2NhbCBjb3B5IGluIHdlYgorICAgICAgICBwcm9jZXNzcyB3aWxsIGJlIGRpc2NhcmRlZC4KKyAg
ICAgICAgMy4gKFNlc3Npb25JRCwgU3RvcmFnZU5hbWVzcGFjZUlELCBTZWN1cml0eU9yaWdpbikg
aXMgdXNlZCB0byBpZGVudGlmeSBhIHN0b3JhZ2UgYXJlYS4gSWYgc2Vzc2lvbiBpcyBjaGFuZ2Vk
IGluCisgICAgICAgIHdlYiBwcm9jZXNzIChsaWtlIGVuYWJsaW5nIHByaXZhdGUgYnJvd3Npbmcg
aW4gbGF5b3V0IHRlc3Qgbm93KSwgYSByZS1jb25uZWN0aW9uIHdpdGggZGlmZmVyZW50IHNlc3Np
b25JRCB3b3VsZCAKKyAgICAgICAgc3VmZmljZSB0byBsb2FkIGFub3RoZXIgY29weSBvZiBzdG9y
YWdlLgorICAgICAgICA0LiBsb2NhbFN0b3JhZ2UgaW4gZXBoZW1lcmFsIHNlc3Npb24gaGFzIHRo
ZSBzYW1lIGJlaGF2aW9yIGFzIGxvY2FsU3RvcmFnZSBpbnN0ZWFkIG9mIHNlc3Npb25TdG9yYWdl
LCB3aGljaAorICAgICAgICBtZWFucyBkaWZmZXJlbnQgcGFnZXMgaW4gdGhlIHNhbWUgZXBoZW1l
cmFsIHNlc3Npb24gc2hhcmUgdGhlIHNhbWUgbG9jYWxTdG9yYWdlLgorCisgICAgICAgIEFsc28s
IHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBTdG9yYWdlTWFuYWdlclNldCB0byBuZXR3b3JrIHByb2Nl
c3MuIEl0IGhhbmRsZXMgd2ViIHN0b3JhZ2Ugc3R1ZmYsIGluY2x1ZGluZworICAgICAgICByZWNl
aXZpbmcgc3RvcmFnZSBtZXNzYWdlcyBmcm9tIHdlYiBwcm9jZXNzLCBvbiBvbmUgYmFja2dyb3Vu
ZCB0aHJlYWQuIFByZXZpb3VzbHkgZWFjaCBzZXNzaW9uIGhhcyBpdHMgb3duCisgICAgICAgIFN0
b3JhZ2VNYW5hZ2VyIGFuZCBlYWNoIFN0b3JhZ2VNYW5hZ2VyIGhhcyBpdHMgb3duIFdvcmtRdWV1
ZS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2Vz
LWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmls
ZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKworICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDogcmVtb3ZlIG1lc3Nh
Z2UgaGFuZGxlcnMgdGhhdCBhcmUgbm8gbG9uZ2VyIG5lZWRlZC4gTmV0d29yaworICAgICAgICBw
cm9jZXNzIG5vIGxvbmdlciBuZWVkcyB0byBrbm93IHBhZ2Ugc3RhdGVzIGZyb20gd2ViIHByb2Nl
c3MuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRD
bG9zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp3
ZWJQYWdlV2FzQWRkZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6d2ViUGFnZVdhc1JlbW92ZWQpOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6d2ViUHJvY2Vzc1Nlc3Npb25D
aGFuZ2VkKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorCisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwOiBOZXR3b3JrUHJvY2VzcyB1c2VzIFN0b3JhZ2VNYW5hZ2Vy
U2V0IGluc3RlYWQgb2YgU3RvcmFnZU1hbmFnZXIgZnJvbSAKKyAgICAgICAgZGlmZmVyZW50IHNl
c3Npb25zIHRvIGRlYWwgd2l0aCB3ZWIgc3RvcmFnZS4KKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6Ok5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OmluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzOjpjcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyk6IFN0b3JhZ2VNYW5h
Z2VyU2V0IHN0YXJ0cyBoYW5kbGluZyAKKyAgICAgICAgU3RvcmFnZU1hbmFnZXJTZXQgbWVzc2Fn
ZXMgZnJvbSB0aGUgbmV3IGNvbm5lY3Rpb24uCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzOjphZGRXZWJzaXRlRGF0YVN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OmRlc3Ryb3lTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6Omhh
c0xvY2FsU3RvcmFnZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpmZXRjaFdl
YnNpdGVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNp
dGVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVE
YXRhRm9yT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVX
ZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzOjphY3R1YWxQcmVwYXJlVG9TdXNwZW5kKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3M6OnJlc3VtZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpz
eW5jTG9jYWxTdG9yYWdlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNsZWFy
TGVnYWN5UHJpdmF0ZUJyb3dzaW5nTG9jYWxTdG9yYWdlKTogYWRkZWQgZm9yIGNsZWFyaW5nIGlu
LW1lbW9yeSBlcGhlbWVyYWwKKyAgICAgICAgbG9jYWxTdG9yYWdlLgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6Z2V0TG9jYWxTdG9yYWdlT3JpZ2luRGV0YWlscyk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpjb25uZWN0aW9uVG9XZWJQcm9jZXNzQ2xvc2VkKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OndlYlBhZ2VXYXNBZGRlZCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjp3ZWJQYWdlV2FzUmVtb3ZlZCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjp3ZWJQcm9jZXNzV2Fz
RGlzY29ubmVjdGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OndlYlByb2Nlc3NTZXNzaW9uQ2hhbmdlZCk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5tZXNzYWdlcy5pbjoKKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtT
ZXNzaW9uLmNwcDogU3RvcmFnZU1hbmFnZXIgaXMgbW92ZWQgb3V0IG9mIE5ldHdvcmtTZXNzaW9u
LiBJdCBpcyBub3cgbWFuYWdlZCBieSAKKyAgICAgICAgU3RvcmFnZU1hbmFnZXJTZXQuCisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpOZXR3b3JrU2Vzc2lvbik6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjp+TmV0d29ya1Nlc3Npb24pOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNz
aW9uOjpzdG9yYWdlTWFuYWdlcik6IERlbGV0ZWQuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5jcHA6IGNyZWF0aW9uIHBhcmFtZXRl
cnMgb2YgU3RvcmFnZU1hbmFnZXIgaXMgbW92ZWQgb3V0IG9mCisgICAgICAgIE5ldHdvcmtTZXNz
aW9uQ3JlYXRpb25QYXJhbWV0ZXJzLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNy
ZWF0aW9uUGFyYW1ldGVyczo6cHJpdmF0ZVNlc3Npb25QYXJhbWV0ZXJzKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0
ZXJzLmg6CisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFn
ZURhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TG9jYWxTdG9yYWdlRGF0YWJhc2U6OnVw
ZGF0ZURhdGFiYXNlKTogcmVtb3ZlIGFuIGFzc2VydGlvbiB0aGF0IGlzIG5vIGxvbmdlciB0cnVl
IGFzIHdlIGNhbiBmb3JjZSBhbgorICAgICAgICB1cGRhdGUgd2l0aCBzeW5jTG9jYWxTdG9yYWdl
IG5vdy4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdl
RGF0YWJhc2UuaDogbWFrZSB1cGRhdGVEYXRhYmFzZSBwdWJsaWMgZm9yIHN5bmNMb2NhbFN0b3Jh
Z2UuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRh
YmFzZVRyYWNrZXIuY3BwOiBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIgaXMgY3JlYXRlZCBv
biB0aGUKKyAgICAgICAgYmFja2dyb3VuZCB0aHJlYWQgbm93LCBzbyBpdCBkb2VzIG5vdCBob2xk
IFdvcmtRdWV1ZSB0byBkbyB0aGUgZmlsZSBvcGVyYXRpb24uCisgICAgICAgIChXZWJLaXQ6Okxv
Y2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6TG9j
YWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIpOgor
ICAgICAgICAoV2ViS2l0OjpMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6On5Mb2NhbFN0b3Jh
Z2VEYXRhYmFzZVRyYWNrZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2Uv
TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
V2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VOYW1lc3BhY2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpM
b2NhbFN0b3JhZ2VOYW1lc3BhY2U6OmdldE9yQ3JlYXRlU3RvcmFnZUFyZWEpOgorICAgICAgICAo
V2ViS2l0OjpMb2NhbFN0b3JhZ2VOYW1lc3BhY2U6OmNsb25lVG8pOiBEZWxldGVkLgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlTmFtZXNwYWNlLmg6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TZXNzaW9uU3RvcmFnZU5hbWVzcGFj
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNlc3Npb25TdG9yYWdlTmFtZXNwYWNlOjpnZXRPckNy
ZWF0ZVN0b3JhZ2VBcmVhKToKKyAgICAgICAgKFdlYktpdDo6U2Vzc2lvblN0b3JhZ2VOYW1lc3Bh
Y2U6OmFkZEFsbG93ZWRDb25uZWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U2Vz
c2lvblN0b3JhZ2VOYW1lc3BhY2U6OnJlbW92ZUFsbG93ZWRDb25uZWN0aW9uKTogRGVsZXRlZC4K
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1Nlc3Npb25TdG9yYWdlTmFtZXNw
YWNlLmg6CisgICAgICAgIChXZWJLaXQ6OlNlc3Npb25TdG9yYWdlTmFtZXNwYWNlOjphbGxvd2Vk
Q29ubmVjdGlvbnMgY29uc3QpOiBEZWxldGVkLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
V2ViU3RvcmFnZS9TdG9yYWdlQXJlYS5jcHA6CisgICAgICAgIChXZWJLaXQ6OmdlbmVyYXRlU3Rv
cmFnZUFyZWFJZGVudGlmaWVyKTogZWFjaCBTdG9yYWdlQXJlYSBoYXMgYW4gaWRlbnRpZmllci4g
U3RvcmFnZUFyZWFNYXAgaW4gd2ViIHByb2Nlc3MgdXNlcworICAgICAgICB0aGlzIGlkZW50aWZp
ZXIgdG8gaW5kaWNhdGUgd2hpY2ggU3RvcmFnZUFyZWEgaXQgaXMgY29ubmVjdGluZyB0by4KKyAg
ICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWE6OlN0b3JhZ2VBcmVhKToKKyAgICAgICAgKFdlYktp
dDo6U3RvcmFnZUFyZWE6On5TdG9yYWdlQXJlYSk6IFN0b3JhZ2VBcmVhIG1heSBzdGlsbCBoYXZl
IGxpc3RlbmVycyBiZWNhdXNlIFN0b3JhZ2VBcmVhIHNob3VsZCBiZSAKKyAgICAgICAgZGVzdHJv
eWVkIGJ5IHJlcXVlc3RzIGZyb20gVUkgcHJvY2VzcywgYW5kIGxpc3RlbmVycyBhcmUgY29ubmVj
dGlvbnMgdG8gd2ViIHByb2Nlc3NzZXMuCisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhOjph
ZGRMaXN0ZW5lcik6IGxvYWQgbG9jYWxTdG9yYWdlRGF0YWJhc2UgaW4gYWR2YW5jZSBpZiB0aGVy
ZSBpcyBzb21lIGNvbm5lY3Rpb24gdG8gdGhpcyAKKyAgICAgICAgTG9jYWxTdG9yYWdlIGFyZWEu
CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhOjpyZW1vdmVMaXN0ZW5lcik6CisgICAgICAg
IChXZWJLaXQ6OlN0b3JhZ2VBcmVhOjpoYXNMaXN0ZW5lciBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6OlN0b3JhZ2VBcmVhOjpjbGVhcik6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhOjpv
cGVuRGF0YWJhc2VBbmRJbXBvcnRJdGVtc0lmTmVlZGVkIGNvbnN0KToKKyAgICAgICAgKFdlYktp
dDo6U3RvcmFnZUFyZWE6OmRpc3BhdGNoRXZlbnRzIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
U3RvcmFnZUFyZWE6OnN5bmNUb0RhdGFiYXNlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFy
ZWE6OnNldEl0ZW1zKTogRGVsZXRlZC4gU3RvcCBzeW5jaW5nIGZyb20gd2ViIHByb2Nlc3MgdG8g
bmV0d29yayBwcm9jZXNzIGFmdGVyIG5ldHdvcmsgcHJvY2VzcworICAgICAgICBpcyByZWxhdW5j
aGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWEuaDoK
KyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWE6OmlkZW50aWZpZXIpOgorICAgICAgICAoV2Vi
S2l0OjpTdG9yYWdlQXJlYTo6c2V0V29ya1F1ZXVlKToKKworICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwOiBTdG9yYWdlTWFuYWdlciBzaG91bGQg
YmUgYWNjZXNzZWQgYnkgb25seSBiYWNrZ3JvdW5kIHRocmVhZCBub3cuCisgICAgICAgIChXZWJL
aXQ6OlN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OlN0
b3JhZ2VNYW5hZ2VyOjp+U3RvcmFnZU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdl
TWFuYWdlcjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViS2l0
OjpTdG9yYWdlTWFuYWdlcjo6ZGVzdHJveVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKTogdGhpcyBp
cyBub3QgdXNlZCBub3cgYnV0IGtlZXAgaXQgZm9yIGZ1dHVyZSAKKyAgICAgICAgaW1wcm92ZW1l
bnQgdG8gcmVtb3ZlIGluLW1lbW9yeSBzZXNzaW9uU3RvcmFnZSBpbiBuZXR3b3JrIHByb2Nlc3Mg
aWYgd2Uga25vdyBzb21lIHdlYiBwYWdlIGlzIGdvbmUgZm9yZXZlci4KKyAgICAgICAgKFdlYktp
dDo6U3RvcmFnZU1hbmFnZXI6OmNsb25lU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UpOiBwcmV2aW91
c2x5IGVhY2ggcGFnZSBoYWQgaXRzIG93biBlcGhlbWVyYWwgCisgICAgICAgIGxvY2FsU3RvcmFn
ZU5hbWVzcGFjZSBhbmQgbm93IGFsbCBwYWdlcyBpbiB0aGUgc2FtZSBzZXNzaW9uIHNoYXJlIG9u
ZSBsb2NhbFN0b3JhZ2UsIHNvIHdlIGRvbid0IG5lZWQgdG8gY2xvbmUKKyAgICAgICAgbG9jYWxT
dG9yYWdlTmFtZXNwYWNlLgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6Z2V0U2Vz
c2lvblN0b3JhZ2VPcmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmRl
bGV0ZVNlc3Npb25TdG9yYWdlT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5h
Z2VyOjpkZWxldGVTZXNzaW9uU3RvcmFnZUVudHJpZXNGb3JPcmlnaW5zKToKKyAgICAgICAgKFdl
YktpdDo6U3RvcmFnZU1hbmFnZXI6OmdldExvY2FsU3RvcmFnZU9yaWdpbnMpOgorICAgICAgICAo
V2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6Z2V0TG9jYWxTdG9yYWdlT3JpZ2luRGV0YWlscyk6Cisg
ICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVMb2NhbFN0b3JhZ2VPcmlnaW5z
TW9kaWZpZWRTaW5jZSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVM
b2NhbFN0b3JhZ2VFbnRyaWVzRm9yT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VN
YW5hZ2VyOjpjcmVhdGVMb2NhbFN0b3JhZ2VBcmVhKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFn
ZU1hbmFnZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZUFyZWEpOgorICAgICAgICAoV2Vi
S2l0OjpTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VBcmVhKToKKyAgICAgICAg
KFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmdldE9yQ3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNl
KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmdldE9yQ3JlYXRlVHJhbnNpZW50
TG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6
OmdldE9yQ3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpT
dG9yYWdlTWFuYWdlcjo6Y2xlYXJTdG9yYWdlTmFtZXNwYWNlcyk6CisgICAgICAgIChXZWJLaXQ6
OlN0b3JhZ2VNYW5hZ2VyOjphZGRBbGxvd2VkU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0
aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OnJlbW92ZUFs
bG93ZWRTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZUNvbm5lY3Rpb24pOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6cHJvY2Vzc0RpZENsb3NlQ29ubmVjdGlvbik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVMb2NhbFN0b3Jh
Z2VFbnRyaWVzRm9yT3JpZ2luKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1h
bmFnZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU1hcCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6
OlN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VNYXApOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VN
YXApOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6ZGVzdHJveVN0
b3JhZ2VNYXApOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6cHJl
d2FybSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpnZXRWYWx1
ZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6c2V0SXRlbSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpzZXRJdGVtcyk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpyZW1vdmVJdGVtKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmNsZWFyKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OndhaXRVbnRpbFRhc2tzRmluaXNoZWQp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6c3VzcGVuZCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpyZXN1bWUpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6ZmluZFN0b3JhZ2VBcmVhIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VN
YW5hZ2VyLmg6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjp3b3JrUXVldWUgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoKTogRGVsZXRlZC4KKworICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIubWVzc2FnZXMuaW46IFJlbW92ZWQuIE1v
dmVkIHRvIFN0b3JhZ2VNYW5hZ2VyU2V0Lm1lc3NhZ2VzLmluLgorCisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldC5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlclNldDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6
U3RvcmFnZU1hbmFnZXJTZXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0KToKKyAgICAgICAgKFdlYktpdDo6
U3RvcmFnZU1hbmFnZXJTZXQ6On5TdG9yYWdlTWFuYWdlclNldCk6CisgICAgICAgIChXZWJLaXQ6
OlN0b3JhZ2VNYW5hZ2VyU2V0OjphZGQpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdl
clNldDo6cmVtb3ZlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXJTZXQ6OmNvbnRh
aW5zKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXJTZXQ6OmFkZENvbm5lY3Rpb24p
OgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlclNldDo6cmVtb3ZlQ29ubmVjdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0Ojp3YWl0VW50aWxUYXNrc0Zpbmlz
aGVkKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXJTZXQ6OndhaXRVbnRpbFN5bmNp
bmdMb2NhbFN0b3JhZ2VGaW5pc2hlZCk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2Vy
U2V0OjpzdXNwZW5kKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXJTZXQ6OnJlc3Vt
ZSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpnZXRTZXNzaW9uU3RvcmFn
ZU9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlclNldDo6ZGVsZXRlU2Vz
c2lvblN0b3JhZ2UpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlclNldDo6ZGVsZXRl
U2Vzc2lvblN0b3JhZ2VGb3JPcmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFn
ZXJTZXQ6OmdldExvY2FsU3RvcmFnZU9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdl
TWFuYWdlclNldDo6ZGVsZXRlTG9jYWxTdG9yYWdlTW9kaWZpZWRTaW5jZSk6CisgICAgICAgIChX
ZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpkZWxldGVMb2NhbFN0b3JhZ2VGb3JPcmlnaW5zKToK
KyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXJTZXQ6OmdldExvY2FsU3RvcmFnZU9yaWdp
bkRldGFpbHMpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlclNldDo6Y29ubmVjdFRv
TG9jYWxTdG9yYWdlQXJlYSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0Ojpj
b25uZWN0VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKToKKyAgICAgICAgKFdlYktpdDo6U3Rv
cmFnZU1hbmFnZXJTZXQ6OmNvbm5lY3RUb1Nlc3Npb25TdG9yYWdlQXJlYSk6CisgICAgICAgIChX
ZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpkaXNjb25uZWN0RnJvbVN0b3JhZ2VBcmVhKToKKyAg
ICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXJTZXQ6OmdldFZhbHVlcyk6CisgICAgICAgIChX
ZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpzZXRJdGVtKToKKyAgICAgICAgKFdlYktpdDo6U3Rv
cmFnZU1hbmFnZXJTZXQ6OnJlbW92ZUl0ZW0pOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFu
YWdlclNldDo6Y2xlYXIpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlclNldDo6Y2xv
bmVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvV2Vi
U3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldC5oOiBBZGRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0Lm1lc3NhZ2VzLmluOiBBZGRlZC4KKwor
ICAgICAgICAqIFNoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5jcHA6IGNyZWF0aW9u
IHBhcmFtZXRlcnMgb2YgU3RvcmFnZU1hbmFnZXIgYXJlIG1vdmVkIHRvIAorICAgICAgICBXZWJz
aXRlRGF0YVN0b3JlUGFyYW1ldGVycy4KKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9y
ZVBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmVQYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlUGFyYW1ldGVyczo6cHJpdmF0ZVNlc3Npb25QYXJhbWV0ZXJzKToKKyAgICAgICAgKiBTaGFy
ZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaDoKKworICAgICAgICAqIFNvdXJjZXMudHh0
OgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHA6IGFkZCBTUEkgZm9y
IHRlc3RzLgorICAgICAgICAoV0tDb250ZXh0U3luY0xvY2FsU3RvcmFnZSk6CisgICAgICAgIChX
S0NvbnRleHRDbGVhckxlZ2FjeVByaXZhdGVCcm93c2luZ0xvY2FsU3RvcmFnZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dFByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcDoKKyAgICAgICAgKFdLV2Vic2l0ZURh
dGFTdG9yZVJlbW92ZUxvY2FsU3RvcmFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dL
V2Vic2l0ZURhdGFTdG9yZVJlZi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjplbnN1cmVOZXR3b3JrUHJv
Y2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzeW5jTG9jYWxTdG9yYWdl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNsZWFyTGVnYWN5UHJpdmF0ZUJy
b3dzaW5nTG9jYWxTdG9yYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
aDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0
b3JlQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRl
cnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cGFyYW1ldGVycyk6CisKKyAg
ICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICAqIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwOiBzZXNzaW9uIGNoYW5n
ZSBvZiB3ZWIgc3RvcmFnZSBpcyBkb25lIHZpYSAKKyAgICAgICAgV2ViU3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyIGluc3RlYWQgb2YgV2ViUHJvY2VzcyBub3cuCisgICAgICAgIChXZWJLaXQ6Oklu
amVjdGVkQnVuZGxlOjpzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwOiB3ZWIgcHJvY2VzcyBubyBsb25nZXIgc2VuZHMgbWVzc3Nh
Z2VzIGFib3V0IHBhZ2Ugc3RhdGUgdG8gbmV0d29yayBwcm9jZXNzLgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzOjpjcmVhdGVXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
czo6cmVtb3ZlV2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmVuc3VyZU5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6Om5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbkNsb3NlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3M6OnN0b3JhZ2VBcmVhTWFwIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6
ZW5hYmxlUHJpdmF0ZUJyb3dzaW5nRm9yVGVzdGluZyk6IERlbGV0ZWQuIFRoaXMgd2FzIHVzZWQg
Zm9yIGNoYW5naW5nIHNlc3Npb24gdmlhIAorICAgICAgICBXZWJQcm9jZXNzLgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1w
bDo6U3RvcmFnZUFyZWFJbXBsKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFJbXBsOjps
ZW5ndGgpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYUltcGw6OmtleSk6CisgICAgICAg
IChXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1wbDo6aXRlbSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3Jh
Z2VBcmVhSW1wbDo6c2V0SXRlbSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1wbDo6
cmVtb3ZlSXRlbSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1wbDo6Y2xlYXIpOgor
ICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYUltcGw6OmNvbnRhaW5zKToKKyAgICAgICAgKFdl
YktpdDo6U3RvcmFnZUFyZWFJbXBsOjpzdG9yYWdlVHlwZSBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6OlN0b3JhZ2VBcmVhSW1wbDo6aW5jcmVtZW50QWNjZXNzQ291bnQpOgorICAgICAgICAoV2Vi
S2l0OjpTdG9yYWdlQXJlYUltcGw6OmRlY3JlbWVudEFjY2Vzc0NvdW50KToKKyAgICAgICAgKFdl
YktpdDo6U3RvcmFnZUFyZWFJbXBsOjpwcmV3YXJtKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6U3RvcmFnZUFyZWFJbXBsOjpzZWN1cml0eU9yaWdpbiBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oOiBtYWtlIFN0b3Jh
Z2VBcmVhSW1wbCBob2xkIGEgd2VhayByZWZlcmVuY2UgdG8gU3RvcmFnZUFyZWFNYXAgYW5kIAor
ICAgICAgICBTdG9yYWdlTmFtZXNwYWNlSW1wbCBob2xkIGEgc3Ryb25nIHJlZmVyZW5jZS4gSW4g
dGhpcyB3YXkgbGlmZWltZSBvZiBsb2NhbFN0b3JhZ2UgU3RvcmFnZUFyZXJhTWFwIHN0YXlzIGFs
aWduIAorICAgICAgICB3aXRoIFN0b3JhZ2VOYW1lU3BhY2VQcm92aWRlciBhbmQgUGFnZS4KKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHA6IGlkZW50
aWZpZXIgb2YgU3RvcmFnZUFyZWFNYXAgaXMgdGhlIHNhbWUgYXMgaWRlbnRpZmllciBvZiAKKyAg
ICAgICAgU3RvcmFnZUFyZWEgaXQgY29ubmVjdHMgdG8uIElmIHRoZSBpZGVudGlmaWVyIGlzIDAs
IGl0IG1lYW5zIHRoZSBTdG9yYWdlQXJlYU1hcCBpcyBkaXNjb25uZWN0ZWQuCisgICAgICAgIChX
ZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwOjpTdG9yYWdlQXJlYU1hcCk6CisgICAgICAgIChXZWJLaXQ6
OlN0b3JhZ2VBcmVhTWFwOjp+U3RvcmFnZUFyZWFNYXApOgorICAgICAgICAoV2ViS2l0OjpTdG9y
YWdlQXJlYU1hcDo6c2V0SXRlbSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwOjpy
ZW1vdmVJdGVtKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OmNsZWFyKToKKyAg
ICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OnJlc2V0VmFsdWVzKToKKyAgICAgICAgKFdl
YktpdDo6U3RvcmFnZUFyZWFNYXA6OmxvYWRWYWx1ZXNJZk5lZWRlZCk6CisgICAgICAgIChXZWJL
aXQ6OlN0b3JhZ2VBcmVhTWFwOjphcHBseUNoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3Jh
Z2VBcmVhTWFwOjpkaXNwYXRjaFN0b3JhZ2VFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OlN0b3Jh
Z2VBcmVhTWFwOjpkaXNwYXRjaFNlc3Npb25TdG9yYWdlRXZlbnQpOgorICAgICAgICAoV2ViS2l0
OjpTdG9yYWdlQXJlYU1hcDo6ZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudCk6CisgICAgICAgIChX
ZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwOjpjb25uZWN0KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFn
ZUFyZWFNYXA6OmRpc2Nvbm5lY3QpOgorICAgICAgICAoV2ViS2l0OjpnZW5lcmF0ZVN0b3JhZ2VN
YXBJRCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwOjpwcmV3YXJt
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OmRpZEdldFZhbHVl
cyk6IERlbGV0ZWQuIFRoaXMgaXMgdXNlbGVzcyBhcyBHZXRWYWx1ZXMgaXMgYSBzeW5jaHJvbm91
cyBvcGVyYXRpb24uCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVh
TWFwLmg6CisgICAgICAgICgpOiBEZWxldGVkLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJT
dG9yYWdlL1N0b3JhZ2VBcmVhTWFwLm1lc3NhZ2VzLmluOiB0aGVyZSBhcmUgdHdvIHN5bmNocm9u
b3VzIG1lc3NhZ2VzLCBvbmUgZm9yIGNvbm5lY3Rpb24gYW5kIAorICAgICAgICBvbmUgZm9yIGdl
dHRpbmcgdmFsdWVzLiBXZSBtYXkgbWVyZ2UgdGhlbSBpbnRvIG9uZSBpbiBmdXR1cmUgaW1wcm92
ZW1lbnQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVNl
c3Npb25TdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVzcGFj
ZUltcGw6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJLaXQ6OlN0
b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2Up
OgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6U3RvcmFnZU5hbWVzcGFj
ZUltcGwpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6c3RvcmFnZUFy
ZWEpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y29weSk6CisgICAg
ICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpzZXRTZXNzaW9uSURGb3JUZXN0aW5n
KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZUVwaGVtZXJh
bExvY2FsU3RvcmFnZU5hbWVzcGFjZSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1l
c3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNy
ZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlN0b3JhZ2VO
YW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVFcGhl
bWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaDoKKwogMjAxOS0wOC0x
MyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBwb3RlbnRp
YWwgdGhyZWFkIHNhZmV0eSBpc3N1ZSB1bmRlciBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6Omhhc0hhZFVzZXJJbnRlcmFjdGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCmluZGV4IDRjNTFl
OTY1ZjY4MjZiZWMzZWU5MmU3NTI5NTg3ZTFiMWIyZDA0M2EuLjUyZWI5ZDlkMTQ2ODUwN2E2NjUw
ZGRlYTQwMzA4MTJiYjM4OWFmMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzgg
QEAKKzIwMTktMDgtMTQgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAg
ICAgU29tZSBpbXByb3ZlbWVudHMgb24gd2ViIHN0b3JhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDM3MworCisgICAgICAgIFJldmlld2VkIGJ5
IEdlb2ZmcmV5IEdhcmVuLgorCisgICAgICAgIERvIHNvbWUgY2xlYW4tdXAgYW5kIGFkZCBzdXBw
b3J0IGZvciBzZXNzaW9uIGNoYW5nZSBvZiB3ZWIgc3RvcmFnZSBpbiBsYXlvdXQgdGVzdHMuCisK
KyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlN0b3JhZ2VBcmVhSW1wbDo6c2Vzc2lvbkNoYW5nZWQpOgorICAgICAgICAqIFN0b3JhZ2UvU3Rv
cmFnZUFyZWFJbXBsLmg6CisgICAgICAgICgpOiBEZWxldGVkLgorCisgICAgICAgICogU3RvcmFn
ZS9TdG9yYWdlQXJlYVN5bmMuaDogbWFrZSBzdXJlIFN0b3JhZ2VBcmVhU3luYyBpcyBkZXN0cnVj
dGVkIG9uIHRoZSBtYWluIHRocmVhZCwgYXMgaXQgY2FuIGJlIAorICAgICAgICBkZXJlZmVyZW5j
ZWQgaW4gU3RvcmFnZUFyZWFJbXBsOjpzZXNzaW9uQ2hhbmdlZCBhbmQgaXRzIGxhc3QgcmVmZXJl
bmNlIGZvciBmaW5hbCBzeW5jIGNvdWxkIGJlIHJlbGVhc2VkIG9uIHRoZSAKKyAgICAgICAgYmFj
a2dyb3VuZCB0aHJlYWQuCisKKyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBs
LmNwcDogcmVwbGFjZSBFcGhlbWVyYWxMb2NhbFN0b3JhZ2Ugd2l0aCBMb2NhbFN0b3JhZ2UsIGFu
ZCBzdG9yZSBTZXNzaW9uSUQgaW4gCisgICAgICAgIFN0b3JhZ2VOYW1lc3BhY2UuCisgICAgICAg
IChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVz
cGFjZSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpnZXRPckNyZWF0
ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsOjpTdG9yYWdlTmFtZXNwYWNlSW1wbCk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VO
YW1lc3BhY2VJbXBsOjpjb3B5KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUlt
cGw6OmNsb3NlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUltcGw6OnNldFNl
c3Npb25JREZvclRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSW1w
bDo6Y3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmg6CisgICAgICAgICogU3RvcmFnZS9X
ZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlRXBoZW1lcmFsTG9jYWxT
dG9yYWdlTmFtZXNwYWNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBTdG9yYWdlL1dlYlN0b3JhZ2VO
YW1lc3BhY2VQcm92aWRlci5oOgorCiAyMDE5LTA4LTEyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5u
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgSURCLXNwZWNpZmljIHF1b3RhCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggMGM0NGMyYzBkYzQ2YjU3N2ZhODFlNzVkYjg0MThhMDE0
ZmQxMGU1ZC4uYzkzNDg5ZDZkZGMwNDE2YTA3Y2E4NmYxOTI3YmQxNWQwYmFkZGMxNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE5LTA4LTE0ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIFNvbWUgaW1wcm92ZW1lbnRz
IG9uIHdlYiBzdG9yYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDAzNzMKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKwor
ICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBfcHJlZmVy
ZW5jZXNDaGFuZ2VkOl0pOiBub3RpZnkgc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyIGFib3V0IHNl
c3Npb24gY2hhbmdlLgorCiAyMDE5LTA4LTEzICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxl
LmNvbT4KIAogICAgICAgICBCbG9iIHJlZ2lzdHJpZXMgc2hvdWxkIGJlIGtleWVkIGJ5IHNlc3Np
b24gSURzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IGM0NTBjMDg3
MGMwZGI5MDAyYjkwNGM3YjZjYmNlNGM5NjkwMmM2ZGMuLjA0NTNkN2U2ZDllMzY1NjAyYWM5YWJk
OTk5YjRlMmZhYjEzMmFkYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0
eUNsaWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3Bw
CkBAIC0zOTAsMTggKzM5MCwxOSBAQCBjbGFzcyBFbXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
ciBmaW5hbCA6IHB1YmxpYyBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgewogICAgICAgICBib29s
IGNvbnRhaW5zKGNvbnN0IFN0cmluZyYpIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAg
IFN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gU3RvcmFnZVR5
cGU6OkxvY2FsOyB9CiAgICAgICAgIHNpemVfdCBtZW1vcnlCeXRlc1VzZWRCeUNhY2hlKCkgZmlu
YWwgeyByZXR1cm4gMDsgfQotICAgICAgICBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3Vy
aXR5T3JpZ2luKCkgY29uc3QgZmluYWwgeyBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2VjdXJpdHlP
cmlnaW5EYXRhPiBvcmlnaW47IHJldHVybiBvcmlnaW4uZ2V0KCk7IH0KICAgICB9OwogCiAgICAg
c3RydWN0IEVtcHR5U3RvcmFnZU5hbWVzcGFjZSBmaW5hbCA6IHB1YmxpYyBTdG9yYWdlTmFtZXNw
YWNlIHsKICAgICAgICAgUmVmPFN0b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYShjb25zdCBTZWN1cml0
eU9yaWdpbkRhdGEmKSBmaW5hbCB7IHJldHVybiBhZG9wdFJlZigqbmV3IEVtcHR5U3RvcmFnZUFy
ZWEpOyB9CiAgICAgICAgIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjb3B5KFBhZ2UqKSBmaW5hbCB7
IHJldHVybiBhZG9wdFJlZigqbmV3IEVtcHR5U3RvcmFnZU5hbWVzcGFjZSk7IH0KKyAgICAgICAg
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3QgeyByZXR1cm4gUEFMOjpTZXNzaW9uSUQ6
OmVtcHR5U2Vzc2lvbklEKCk7IH0KKyAgICAgICAgdm9pZCBzZXRTZXNzaW9uSURGb3JUZXN0aW5n
KFBBTDo6U2Vzc2lvbklEKSB7IH07CiAgICAgfTsKIAogICAgIFJlZjxTdG9yYWdlTmFtZXNwYWNl
PiBjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQpIGZpbmFsOwot
ICAgIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5z
aWduZWQpIGZpbmFsOwotICAgIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVFcGhlbWVyYWxM
b2NhbFN0b3JhZ2VOYW1lc3BhY2UoUGFnZSYsIHVuc2lnbmVkKSBmaW5hbDsKLSAgICBSZWY8U3Rv
cmFnZU5hbWVzcGFjZT4gY3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFNlY3Vy
aXR5T3JpZ2luJiwgdW5zaWduZWQpIGZpbmFsOworICAgIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBj
cmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQsIFBBTDo6U2Vzc2lvbklEKSBmaW5h
bDsKKyAgICBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdl
TmFtZXNwYWNlKFNlY3VyaXR5T3JpZ2luJiwgdW5zaWduZWQsIFBBTDo6U2Vzc2lvbklEKSBmaW5h
bDsKKwogfTsKIAogY2xhc3MgRW1wdHlVc2VyQ29udGVudFByb3ZpZGVyIGZpbmFsIDogcHVibGlj
IFVzZXJDb250ZW50UHJvdmlkZXIgewpAQCAtNTI1LDE3ICs1MjYsMTIgQEAgUmVmPFN0b3JhZ2VO
YW1lc3BhY2U+IEVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVTZXNzaW9uU3Rv
cmFnZU5hbWVzcGEKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBFbXB0eVN0b3JhZ2VOYW1lc3Bh
Y2UpOwogfQogCi1SZWY8U3RvcmFnZU5hbWVzcGFjZT4gRW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCkKLXsKLSAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBFbXB0eVN0b3JhZ2VOYW1lc3BhY2UpOwotfQotCi1SZWY8U3RvcmFn
ZU5hbWVzcGFjZT4gRW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUVwaGVtZXJh
bExvY2FsU3RvcmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQpCitSZWY8U3RvcmFnZU5hbWVz
cGFjZT4gRW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU5h
bWVzcGFjZSh1bnNpZ25lZCwgUEFMOjpTZXNzaW9uSUQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgRW1wdHlTdG9yYWdlTmFtZXNwYWNlKTsKIH0KIAotUmVmPFN0b3JhZ2VOYW1lc3BhY2U+
IEVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UoU2VjdXJpdHlPcmlnaW4mLCB1bnNpZ25lZCkKK1JlZjxTdG9yYWdlTmFtZXNw
YWNlPiBFbXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNpZW50TG9jYWxT
dG9yYWdlTmFtZXNwYWNlKFNlY3VyaXR5T3JpZ2luJiwgdW5zaWduZWQsIFBBTDo6U2Vzc2lvbklE
KQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEVtcHR5U3RvcmFnZU5hbWVzcGFjZSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0Nocm9tZS5jcHAKaW5kZXggOTc1ODMyOWJhOTA5Y2Q5MTNjYWI0Njg1ZDcxYWU5
ZGE0ZmMzNWNhNi4uNzNmZWUwN2Q5YTE1NDkyNWE1MWE2N2UyNGM1MzUxOWUxMzcyNjcwZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ2hyb21lLmNwcApAQCAtMTg5LDggKzE4OSw2IEBAIFBhZ2UqIENocm9tZTo6Y3Jl
YXRlV2luZG93KEZyYW1lJiBmcmFtZSwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QKIAogICAgIGlmIChhdXRvKiBvbGRTZXNzaW9uU3RvcmFnZSA9IG1fcGFnZS5zZXNzaW9u
U3RvcmFnZShmYWxzZSkpCiAgICAgICAgIG5ld1BhZ2UtPnNldFNlc3Npb25TdG9yYWdlKG9sZFNl
c3Npb25TdG9yYWdlLT5jb3B5KG5ld1BhZ2UpKTsKLSAgICBpZiAoYXV0byogb2xkRXBoZW1lcmFs
TG9jYWxTdG9yYWdlID0gbV9wYWdlLmVwaGVtZXJhbExvY2FsU3RvcmFnZShmYWxzZSkpCi0gICAg
ICAgIG5ld1BhZ2UtPnNldEVwaGVtZXJhbExvY2FsU3RvcmFnZShvbGRFcGhlbWVyYWxMb2NhbFN0
b3JhZ2UtPmNvcHkobmV3UGFnZSkpOwogCiAgICAgcmV0dXJuIG5ld1BhZ2U7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggMTdjYmE1ZTRmZjRlMmI1YmM4ODgxYTI3MGE0MzhjZDhh
NTQzNTY3Mi4uMzA3NGIxOGVlMzZlNDEwNjBkYzIyZTlhNDNkNTE4OGVkNDI4M2JjNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtNDQyLDggKzQ0Miw3IEBAIHZvaWQgRE9NV2luZG93
OjpwcmV3YXJtTG9jYWxTdG9yYWdlSWZOZWNlc3NhcnkoKQogICAgIGlmICghbG9jYWxTdG9yYWdl
KQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobG9jYWxTdG9yYWdlLT5wcmV3YXJtKCkpCi0g
ICAgICAgIHBhZ2UtPm1haW5GcmFtZSgpLmRpZFByZXdhcm1Mb2NhbFN0b3JhZ2UoKTsKKyAgICBw
YWdlLT5tYWluRnJhbWUoKS5kaWRQcmV3YXJtTG9jYWxTdG9yYWdlKCk7CiB9CiAKIERPTVdpbmRv
dzo6fkRPTVdpbmRvdygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCBlZGE3YzVmYTVkNjQ3OWJhNzEw
OTAyMGI1MjgzMmNlMjYxYmNkN2U5Li43YTE4ZTQwY2ZhNGY1OTVhNDBiMzc1MDgyYjg4NDgxOTRi
MjRjMGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTI4OSw3ICsyODksNiBAQCBQYWdlOjpQYWdl
KFBhZ2VDb25maWd1cmF0aW9uJiYgcGFnZUNvbmZpZ3VyYXRpb24pCiAgICAgdXBkYXRlVGltZXJU
aHJvdHRsaW5nU3RhdGUoKTsKIAogICAgIG1fcGx1Z2luSW5mb1Byb3ZpZGVyLT5hZGRQYWdlKCp0
aGlzKTsKLSAgICBtX3N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci0+YWRkUGFnZSgqdGhpcyk7CiAg
ICAgbV91c2VyQ29udGVudFByb3ZpZGVyLT5hZGRQYWdlKCp0aGlzKTsKICAgICBtX3Zpc2l0ZWRM
aW5rU3RvcmUtPmFkZFBhZ2UoKnRoaXMpOwogCkBAIC0zNjcsNyArMzY2LDYgQEAgUGFnZTo6flBh
Z2UoKQogI2VuZGlmCiAKICAgICBtX3BsdWdpbkluZm9Qcm92aWRlci0+cmVtb3ZlUGFnZSgqdGhp
cyk7Ci0gICAgbV9zdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXItPnJlbW92ZVBhZ2UoKnRoaXMpOwog
ICAgIG1fdXNlckNvbnRlbnRQcm92aWRlci0+cmVtb3ZlUGFnZSgqdGhpcyk7CiAgICAgbV92aXNp
dGVkTGlua1N0b3JlLT5yZW1vdmVQYWdlKCp0aGlzKTsKIH0KQEAgLTE1MTAsMTkgKzE1MDgsNiBA
QCB2b2lkIFBhZ2U6OnNldFNlc3Npb25TdG9yYWdlKFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiYm
IG5ld1N0b3JhZ2UpCiAgICAgbV9zZXNzaW9uU3RvcmFnZSA9IFdURk1vdmUobmV3U3RvcmFnZSk7
CiB9CiAKLVN0b3JhZ2VOYW1lc3BhY2UqIFBhZ2U6OmVwaGVtZXJhbExvY2FsU3RvcmFnZShib29s
IG9wdGlvbmFsQ3JlYXRlKQotewotICAgIGlmICghbV9lcGhlbWVyYWxMb2NhbFN0b3JhZ2UgJiYg
b3B0aW9uYWxDcmVhdGUpCi0gICAgICAgIG1fZXBoZW1lcmFsTG9jYWxTdG9yYWdlID0gbV9zdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXItPmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFj
ZSgqdGhpcywgbV9zZXR0aW5ncy0+c2Vzc2lvblN0b3JhZ2VRdW90YSgpKTsKLQotICAgIHJldHVy
biBtX2VwaGVtZXJhbExvY2FsU3RvcmFnZS5nZXQoKTsKLX0KLQotdm9pZCBQYWdlOjpzZXRFcGhl
bWVyYWxMb2NhbFN0b3JhZ2UoUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+JiYgbmV3U3RvcmFnZSkK
LXsKLSAgICBtX2VwaGVtZXJhbExvY2FsU3RvcmFnZSA9IFdURk1vdmUobmV3U3RvcmFnZSk7Ci19
Ci0KIGJvb2wgUGFnZTo6aGFzQ3VzdG9tSFRNTFRva2VuaXplclRpbWVEZWxheSgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIG1fc2V0dGluZ3MtPm1heFBhcnNlRHVyYXRpb24oKSAhPSAtMTsKQEAgLTI0
NzIsOSArMjQ1Nyw3IEBAIHZvaWQgUGFnZTo6c2V0VXNlckNvbnRlbnRQcm92aWRlcihSZWY8VXNl
ckNvbnRlbnRQcm92aWRlcj4mJiB1c2VyQ29udGVudFByb3ZpZGVyCiAKIHZvaWQgUGFnZTo6c2V0
U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKFJlZjxTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI+JiYg
c3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKQogewotICAgIG1fc3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyLT5yZW1vdmVQYWdlKCp0aGlzKTsKICAgICBtX3N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciA9
IFdURk1vdmUoc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKTsKLSAgICBtX3N0b3JhZ2VOYW1lc3Bh
Y2VQcm92aWRlci0+YWRkUGFnZSgqdGhpcyk7CiAKICAgICAvLyBUaGlzIG5lZWRzIHRvIHJlc2V0
IGFsbCB0aGUgbG9jYWwgc3RvcmFnZSBuYW1lc3BhY2VzIG9mIGFsbCB0aGUgcGFnZXMuCiB9CkBA
IC0yNTA3LDYgKzI0OTAsOSBAQCB2b2lkIFBhZ2U6OnNldFNlc3Npb25JRChQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQpCiAgICAgICAgIG1faWRiQ29ubmVjdGlvblRvU2VydmVyID0gbnVsbHB0cjsK
ICNlbmRpZgogCisgICAgaWYgKHNlc3Npb25JRCAhPSBtX3Nlc3Npb25JRCAmJiBtX3Nlc3Npb25T
dG9yYWdlKQorICAgICAgICBtX3Nlc3Npb25TdG9yYWdlLT5zZXRTZXNzaW9uSURGb3JUZXN0aW5n
KHNlc3Npb25JRCk7CisKICAgICBib29sIHByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZCA9IChz
ZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSAhPSBtX3Nlc3Npb25JRC5pc0VwaGVtZXJhbCgpKTsKIAog
ICAgIG1fc2Vzc2lvbklEID0gc2Vzc2lvbklEOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCBjNDQwMjM0NDNj
ODU2ZGEyMmIwZTQxOWY4ZmM1ZjI2NTJmODYyZmU3Li5hMTg0MTJhMzM3N2U0MWRjMGQ2MTM1ZWYx
NGY5YjE4OWM2ZWRhZDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtNTA3LDkgKzUwNyw2IEBAIHB1Ymxp
YzoKICAgICBTdG9yYWdlTmFtZXNwYWNlKiBzZXNzaW9uU3RvcmFnZShib29sIG9wdGlvbmFsQ3Jl
YXRlID0gdHJ1ZSk7CiAgICAgdm9pZCBzZXRTZXNzaW9uU3RvcmFnZShSZWZQdHI8U3RvcmFnZU5h
bWVzcGFjZT4mJik7CiAKLSAgICBTdG9yYWdlTmFtZXNwYWNlKiBlcGhlbWVyYWxMb2NhbFN0b3Jh
Z2UoYm9vbCBvcHRpb25hbENyZWF0ZSA9IHRydWUpOwotICAgIHZvaWQgc2V0RXBoZW1lcmFsTG9j
YWxTdG9yYWdlKFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiYmKTsKLQogICAgIGJvb2wgaGFzQ3Vz
dG9tSFRNTFRva2VuaXplclRpbWVEZWxheSgpIGNvbnN0OwogICAgIGRvdWJsZSBjdXN0b21IVE1M
VG9rZW5pemVyVGltZURlbGF5KCkgY29uc3Q7CiAKQEAgLTg3Nyw3ICs4NzQsNiBAQCBwcml2YXRl
OgogICAgIGJvb2wgbV9jYW5TdGFydE1lZGlhIHsgdHJ1ZSB9OwogCiAgICAgUmVmUHRyPFN0b3Jh
Z2VOYW1lc3BhY2U+IG1fc2Vzc2lvblN0b3JhZ2U7Ci0gICAgUmVmUHRyPFN0b3JhZ2VOYW1lc3Bh
Y2U+IG1fZXBoZW1lcmFsTG9jYWxTdG9yYWdlOwogCiAgICAgVGltZXJUaHJvdHRsaW5nU3RhdGUg
bV90aW1lclRocm90dGxpbmdTdGF0ZSB7IFRpbWVyVGhyb3R0bGluZ1N0YXRlOjpEaXNhYmxlZCB9
OwogICAgIE1vbm90b25pY1RpbWUgbV90aW1lclRocm90dGxpbmdTdGF0ZUxhc3RDaGFuZ2VkVGlt
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuY3BwCmluZGV4IDkxOTdiNjBlN2U2YTE1NWM0NDY4
ZDUyOTRmYWIyNTBjODY3OTg3ZmYuLjQ3ZGJiMTdkOWFlNmQyNjljMTQ3MDNhMWE2MmE0OTJlZTY2
ZGY0MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmNwcApAQCAtOTcsMTEgKzk3LDYgQEAg
RXhjZXB0aW9uT3I8dm9pZD4gU3RvcmFnZTo6cmVtb3ZlSXRlbShjb25zdCBTdHJpbmcmIGtleSkK
ICAgICByZXR1cm4geyB9OwogfQogCi1ib29sIFN0b3JhZ2U6OnByZXdhcm0oKQotewotICAgIHJl
dHVybiBtX3N0b3JhZ2VBcmVhLT5wcmV3YXJtKCk7Ci19Ci0KIEV4Y2VwdGlvbk9yPHZvaWQ+IFN0
b3JhZ2U6OmNsZWFyKCkKIHsKICAgICBhdXRvKiBmcmFtZSA9IHRoaXMtPmZyYW1lKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvU3RvcmFnZS5oCmluZGV4IDUyMTVmNDdjMzc3ZmY3NTY0ZGFhMWU0NmVlZjc5NDRk
MzA4NWY2MTEuLjI4YWE5YWIxNGUxYjIyYWNjNWJjNWI0ZjZlMWM4NGMxYTk3NGY2NjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvU3RvcmFnZS5oCkBAIC00Niw3ICs0Niw2IEBAIHB1YmxpYzoKICAgICBFeGNl
cHRpb25Pcjx2b2lkPiByZW1vdmVJdGVtKGNvbnN0IFN0cmluZyYga2V5KTsKICAgICBFeGNlcHRp
b25Pcjx2b2lkPiBjbGVhcigpOwogICAgIGJvb2wgY29udGFpbnMoY29uc3QgU3RyaW5nJiBrZXkp
IGNvbnN0OwotICAgIGJvb2wgcHJld2FybSgpOwogCiAgICAgLy8gQmluZGluZ3Mgc3VwcG9ydCBm
dW5jdGlvbnMuCiAgICAgYm9vbCBpc1N1cHBvcnRlZFByb3BlcnR5TmFtZShjb25zdCBTdHJpbmcm
KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWEu
aCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWEuaAppbmRleCBmMzljY2Q3ZTZk
YWNkZmY1NmFlN2RmNjYwZGQ5N2I1ZmY1MjY0NmQ0Li41YTlmZmZmOWE2MjYwODc4NTA3ZWQ5MWQ3
MjUyZjY0ZmUxZmI0YjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3Jh
Z2VBcmVhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYS5oCkBAIC01
OCw5ICs1OCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgaW5jcmVtZW50QWNjZXNzQ291
bnQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGVjcmVtZW50QWNjZXNzQ291bnQoKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgY2xvc2VEYXRhYmFzZUlmSWRsZSgpIHsgfQotICAgIHZpcnR1YWwgYm9v
bCBwcmV3YXJtKCkgeyByZXR1cm4gZmFsc2U7IH0KLQotICAgIHZpcnR1YWwgY29uc3QgU2VjdXJp
dHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbigpIGNvbnN0ID0gMDsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFn
ZU5hbWVzcGFjZS5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlLmgK
aW5kZXggNTVjNjYyODJiOGJkNjhiYzA0NzgyZGY0N2NhZGVkMGMyMTI5NGI0OC4uMTNjMjEyNWE5
OGUxMTc3ZDI1YmQ0MzY5OTliOWE1MDBlOWQ4NmUwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9TdG9yYWdlTmFtZXNwYWNlLmgKQEAgLTI4LDYgKzI4LDEwIEBACiAjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCituYW1lc3BhY2UgUEFMIHsK
K2NsYXNzIFNlc3Npb25JRDsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBQYWdl
OwpAQCAtMzksNiArNDMsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+U3RvcmFnZU5hbWVzcGFj
ZSgpID0gZGVmYXVsdDsKICAgICB2aXJ0dWFsIFJlZjxTdG9yYWdlQXJlYT4gc3RvcmFnZUFyZWEo
Y29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJikgPSAwOwogICAgIHZpcnR1YWwgUmVmPFN0b3JhZ2VO
YW1lc3BhY2U+IGNvcHkoUGFnZSogbmV3UGFnZSkgPSAwOworCisgICAgdmlydHVhbCBQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCA9IDA7CisJdmlydHVhbCB2b2lkIHNldFNlc3Npb25J
REZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVBy
b3ZpZGVyLmNwcAppbmRleCA1OTM5YWZmZDNlYjJmOGVlZDQ2YmY2MmJhYjRiMTVhZWI1ZTk1ZWRm
Li42YzVhOGRlMDUyNGM2MGFkN2IxYjFhNjE1ZTQ2Njk1M2IwMGVlYTY0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCkBAIC00
MywyMSArNDMsNiBAQCBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OlN0b3JhZ2VOYW1lc3BhY2VQ
cm92aWRlcigpCiAKIFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6flN0b3JhZ2VOYW1lc3BhY2VQ
cm92aWRlcigpCiB7Ci0gICAgQVNTRVJUKG1fcGFnZXMuaXNFbXB0eSgpKTsKLX0KLQotdm9pZCBT
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmFkZFBhZ2UoUGFnZSYgcGFnZSkKLXsKLSAgICBBU1NF
UlQoIW1fcGFnZXMuY29udGFpbnMoJnBhZ2UpKTsKLQotICAgIG1fcGFnZXMuYWRkKCZwYWdlKTsK
LX0KLQotdm9pZCBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OnJlbW92ZVBhZ2UoUGFnZSYgcGFn
ZSkKLXsKLSAgICBBU1NFUlQobV9wYWdlcy5jb250YWlucygmcGFnZSkpOwotCi0gICAgbV9wYWdl
cy5yZW1vdmUoJnBhZ2UpOwogfQogCiBSZWY8U3RvcmFnZUFyZWE+IFN0b3JhZ2VOYW1lc3BhY2VQ
cm92aWRlcjo6bG9jYWxTdG9yYWdlQXJlYShEb2N1bWVudCYgZG9jdW1lbnQpCkBAIC02NiwzNiAr
NTEsNDcgQEAgUmVmPFN0b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmxvY2Fs
U3RvcmFnZUFyZWEoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIC8vIHNvIHRoZSBEb2N1bWVudCBo
YWQgYmV0dGVyIHN0aWxsIGFjdHVhbGx5IGhhdmUgYSBQYWdlLgogICAgIEFTU0VSVChkb2N1bWVu
dC5wYWdlKCkpOwogCi0gICAgYm9vbCBlcGhlbWVyYWwgPSBkb2N1bWVudC5wYWdlKCktPnVzZXNF
cGhlbWVyYWxTZXNzaW9uKCk7CiAgICAgYm9vbCB0cmFuc2llbnQgPSAhZG9jdW1lbnQuc2VjdXJp
dHlPcmlnaW4oKS5jYW5BY2Nlc3NMb2NhbFN0b3JhZ2UoJmRvY3VtZW50LnRvcE9yaWdpbigpKTsK
IAogICAgIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBzdG9yYWdlTmFtZXNwYWNlOwogCiAgICAg
aWYgKHRyYW5zaWVudCkKLSAgICAgICAgc3RvcmFnZU5hbWVzcGFjZSA9ICZ0cmFuc2llbnRMb2Nh
bFN0b3JhZ2VOYW1lc3BhY2UoZG9jdW1lbnQudG9wT3JpZ2luKCkpOwotICAgIGVsc2UgaWYgKGVw
aGVtZXJhbCkKLSAgICAgICAgc3RvcmFnZU5hbWVzcGFjZSA9IGRvY3VtZW50LnBhZ2UoKS0+ZXBo
ZW1lcmFsTG9jYWxTdG9yYWdlKCk7CisgICAgICAgIHN0b3JhZ2VOYW1lc3BhY2UgPSAmdHJhbnNp
ZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKGRvY3VtZW50LnRvcE9yaWdpbigpLCBkb2N1bWVudC5w
YWdlKCktPnNlc3Npb25JRCgpKTsKICAgICBlbHNlCi0gICAgICAgIHN0b3JhZ2VOYW1lc3BhY2Ug
PSAmbG9jYWxTdG9yYWdlTmFtZXNwYWNlKCk7CisgICAgICAgIHN0b3JhZ2VOYW1lc3BhY2UgPSAm
bG9jYWxTdG9yYWdlTmFtZXNwYWNlKGRvY3VtZW50LnBhZ2UoKS0+c2Vzc2lvbklEKCkpOwogCiAg
ICAgcmV0dXJuIHN0b3JhZ2VOYW1lc3BhY2UtPnN0b3JhZ2VBcmVhKGRvY3VtZW50LnNlY3VyaXR5
T3JpZ2luKCkuZGF0YSgpKTsKIH0KIAotU3RvcmFnZU5hbWVzcGFjZSYgU3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyOjpsb2NhbFN0b3JhZ2VOYW1lc3BhY2UoKQorU3RvcmFnZU5hbWVzcGFjZSYgU3Rv
cmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpsb2NhbFN0b3JhZ2VOYW1lc3BhY2UoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklEKQogewogICAgIGlmICghbV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2UpCi0gICAg
ICAgIG1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlID0gY3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNl
KGxvY2FsU3RvcmFnZURhdGFiYXNlUXVvdGFJbkJ5dGVzKTsKKyAgICAgICAgbV9sb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UgPSBjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UobG9jYWxTdG9yYWdlRGF0
YWJhc2VRdW90YUluQnl0ZXMsIHNlc3Npb25JRCk7CiAKKyAgICBBU1NFUlQobV9sb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UtPnNlc3Npb25JRCgpID09IHNlc3Npb25JRCk7CiAgICAgcmV0dXJuICptX2xv
Y2FsU3RvcmFnZU5hbWVzcGFjZTsKIH0KIAotU3RvcmFnZU5hbWVzcGFjZSYgU3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyOjp0cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoU2VjdXJpdHlPcmln
aW4mIHNlY3VyaXR5T3JpZ2luKQorU3RvcmFnZU5hbWVzcGFjZSYgU3RvcmFnZU5hbWVzcGFjZVBy
b3ZpZGVyOjp0cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoU2VjdXJpdHlPcmlnaW4mIHNl
Y3VyaXR5T3JpZ2luLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7Ci0gICAgYXV0byYgc2xv
dCA9IG1fdHJhbnNpZW50TG9jYWxTdG9yYWdlTWFwLmFkZCgmc2VjdXJpdHlPcmlnaW4sIG51bGxw
dHIpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICBhdXRvJiBzbG90ID0gbV90cmFuc2llbnRMb2NhbFN0
b3JhZ2VOYW1lc3BhY2VzLmFkZChzZWN1cml0eU9yaWdpbi5kYXRhKCksIG51bGxwdHIpLml0ZXJh
dG9yLT52YWx1ZTsKICAgICBpZiAoIXNsb3QpCi0gICAgICAgIHNsb3QgPSBjcmVhdGVUcmFuc2ll
bnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2Uoc2VjdXJpdHlPcmlnaW4sIGxvY2FsU3RvcmFnZURhdGFi
YXNlUXVvdGFJbkJ5dGVzKTsKKyAgICAgICAgc2xvdCA9IGNyZWF0ZVRyYW5zaWVudExvY2FsU3Rv
cmFnZU5hbWVzcGFjZShzZWN1cml0eU9yaWdpbiwgbG9jYWxTdG9yYWdlRGF0YWJhc2VRdW90YUlu
Qnl0ZXMsIHNlc3Npb25JRCk7CiAKKyAgICBBU1NFUlQoc2xvdC0+c2Vzc2lvbklEKCkgPT0gc2Vz
c2lvbklEKTsKICAgICByZXR1cm4gKnNsb3Q7CiB9CiAKK3ZvaWQgU3RvcmFnZU5hbWVzcGFjZVBy
b3ZpZGVyOjplbmFibGVMZWdhY3lQcml2YXRlQnJvd3NpbmdGb3JUZXN0aW5nKGJvb2wgZW5hYmxl
ZCkKK3sKKyAgICBhdXRvIG5ld1Nlc3Npb25JRCA9IGVuYWJsZWQgPyBQQUw6OlNlc3Npb25JRDo6
bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpIDogUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9u
SUQoKTsKKyAgICBpZiAobV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2UgJiYgbmV3U2Vzc2lvbklEICE9
IG1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlLT5zZXNzaW9uSUQoKSkKKyAgICAgICAgbV9sb2NhbFN0
b3JhZ2VOYW1lc3BhY2UtPnNldFNlc3Npb25JREZvclRlc3RpbmcobmV3U2Vzc2lvbklEKTsKKyAg
ICAKKyAgICBmb3IgKGF1dG8mIHRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSA6IG1fdHJh
bnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkgeworICAgICAgICBpZiAobmV3
U2Vzc2lvbklEICE9IHRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZS0+c2Vzc2lvbklEKCkp
CisgICAgICAgICAgICBtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZS0+c2V0U2Vzc2lvbklERm9yVGVz
dGluZyhuZXdTZXNzaW9uSUQpOworICAgIH0KK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmgKaW5kZXggZGQ3ZjlhNDZiZDg0Nzky
NDljNzRkMmE0YzIyNDUyOTY0ZTY3YWVjZC4uMDFkMDY0YjRhNjFkMDY3NjBkYzg3YWZlNzFjODM5
ZWEwMmY3ODg3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFt
ZXNwYWNlUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1l
c3BhY2VQcm92aWRlci5oCkBAIC0zMSw2ICszMSwxMCBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAorbmFtZXNwYWNlIFBBTCB7CitjbGFz
cyBTZXNzaW9uSUQ7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7
CkBAIC00NSwyNyArNDksMjMgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwg
flN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcigpOwogCiAgICAgdmlydHVhbCBSZWY8U3RvcmFnZU5h
bWVzcGFjZT4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoUGFnZSYsIHVuc2lnbmVkIHF1
b3RhKSA9IDA7Ci0gICAgdmlydHVhbCBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlRXBoZW1l
cmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCBxdW90YSkgPSAwOwogCiAg
ICAgUmVmPFN0b3JhZ2VBcmVhPiBsb2NhbFN0b3JhZ2VBcmVhKERvY3VtZW50Jik7CiAKLSAgICB2
b2lkIGFkZFBhZ2UoUGFnZSYpOwotICAgIHZvaWQgcmVtb3ZlUGFnZShQYWdlJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBlbmFibGVMZWdhY3lQcml2YXRlQnJvd3NpbmdGb3JUZXN0aW5nKGJv
b2wgZW5hYmxlZCk7CiAKIHByb3RlY3RlZDoKICAgICBTdG9yYWdlTmFtZXNwYWNlKiBvcHRpb25h
bExvY2FsU3RvcmFnZU5hbWVzcGFjZSgpIHsgcmV0dXJuIG1fbG9jYWxTdG9yYWdlTmFtZXNwYWNl
LmdldCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgU3RvcmFnZU5hbWVzcGFjZSYgbG9jYWxTdG9yYWdl
TmFtZXNwYWNlKCk7Ci0gICAgU3RvcmFnZU5hbWVzcGFjZSYgdHJhbnNpZW50TG9jYWxTdG9yYWdl
TmFtZXNwYWNlKFNlY3VyaXR5T3JpZ2luJik7Ci0KLSAgICB2aXJ0dWFsIFJlZjxTdG9yYWdlTmFt
ZXNwYWNlPiBjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEpID0gMDsK
LSAgICB2aXJ0dWFsIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UoU2VjdXJpdHlPcmlnaW4mLCB1bnNpZ25lZCBxdW90YSkgPSAwOworICAg
IFN0b3JhZ2VOYW1lc3BhY2UmIGxvY2FsU3RvcmFnZU5hbWVzcGFjZShQQUw6OlNlc3Npb25JRCk7
CisgICAgU3RvcmFnZU5hbWVzcGFjZSYgdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFNl
Y3VyaXR5T3JpZ2luJiwgUEFMOjpTZXNzaW9uSUQpOwogCi0gICAgSGFzaFNldDxQYWdlKj4gbV9w
YWdlczsKKyAgICB2aXJ0dWFsIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEsIFBBTDo6U2Vzc2lvbklEKSA9IDA7CisgICAgdmly
dHVhbCBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFt
ZXNwYWNlKFNlY3VyaXR5T3JpZ2luJiwgdW5zaWduZWQgcXVvdGEsIFBBTDo6U2Vzc2lvbklEKSA9
IDA7CiAKICAgICBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gbV9sb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2U7Ci0gICAgSGFzaE1hcDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBSZWZQdHI8U3RvcmFnZU5h
bWVzcGFjZT4+IG1fdHJhbnNpZW50TG9jYWxTdG9yYWdlTWFwOworICAgIEhhc2hNYXA8U2VjdXJp
dHlPcmlnaW5EYXRhLCBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4+IG1fdHJhbnNpZW50TG9jYWxT
dG9yYWdlTmFtZXNwYWNlczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZVR5cGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvU3RvcmFnZVR5cGUuaAppbmRleCA1ODEzM2Y4OWNjYTcxZGMzNTBlZjcyODVhNzBh
NzMwYTI5NjJhNmUyLi5mZTcwMDI1N2JhY2I0OWFmZGRmZjQ1NjQyYTYzZDQyOGQ3NDBmODljIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VUeXBlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlVHlwZS5oCkBAIC0zMCwxMyArMzAsMTIgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogZW51bSBjbGFzcyBTdG9yYWdlVHlwZSB7CiAgICAgU2Vzc2lvbiwK
ICAgICBMb2NhbCwKLSAgICBFcGhlbWVyYWxMb2NhbCwKICAgICBUcmFuc2llbnRMb2NhbCwKIH07
CiAKIGlubGluZSBib29sIGlzTG9jYWxTdG9yYWdlKFN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlKQog
ewotICAgIHJldHVybiBzdG9yYWdlVHlwZSA9PSBTdG9yYWdlVHlwZTo6TG9jYWwgfHwgc3RvcmFn
ZVR5cGUgPT0gU3RvcmFnZVR5cGU6OlRyYW5zaWVudExvY2FsIHx8IHN0b3JhZ2VUeXBlID09IFN0
b3JhZ2VUeXBlOjpFcGhlbWVyYWxMb2NhbDsKKyAgICByZXR1cm4gc3RvcmFnZVR5cGUgPT0gU3Rv
cmFnZVR5cGU6OkxvY2FsIHx8IHN0b3JhZ2VUeXBlID09IFN0b3JhZ2VUeXBlOjpUcmFuc2llbnRM
b2NhbDsKIH0KIAogaW5saW5lIGJvb2wgaXNQZXJzaXN0ZW50TG9jYWxTdG9yYWdlKFN0b3JhZ2VU
eXBlIHN0b3JhZ2VUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4
dCBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKaW5kZXggNmY3OWM4NjQ3YTYxMmRjMDRh
MDJhYWM4MjNkNzQ5NTg0NGQ0YzkyMS4uZDg4YWE4M2IyYTU0ZmYyYTg0MmEyYTVmYzU0NmQ4NzE0
ODU1MmFiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAorKysgYi9T
b3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CkBAIC0xMTgsNyArMTE4LDcgQEAgc2V0KFdlYktp
dF9NRVNTQUdFU19JTl9GSUxFUwogICAgIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAgICAgTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KIAotICAg
IE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIubWVzc2FnZXMuaW4KKyAg
ICBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0Lm1lc3NhZ2VzLmlu
CiAKICAgICBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9u
Lm1lc3NhZ2VzLmluCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMt
aW5wdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNm
aWxlbGlzdAppbmRleCAwZmI4NDIzYjVjY2NmN2QyNjMzOTQyNWNkN2E3M2Y0YjJjMGQyZTg5Li4y
ZTQ3NjYwODU0MDNkNDIwN2YyYmYxNzJlOTljNzg0NjkwYTljY2UxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dl
YktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC0yNSw3ICsyNSw3IEBAICQo
UFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0ubWVzc2FnZXMu
aW4KICQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlckZldGNoVGFzay5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KICQoUFJPSkVD
VF9ESVIpL05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLm1lc3NhZ2VzLmluCi0kKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9XZWJT
dG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9OZXR3b3Jr
UHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0Lm1lc3NhZ2VzLmluCiAkKFBST0pF
Q1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9u
Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9tYWMvY29tLmFwcGxl
LldlYktpdC5OZXR3b3JrUHJvY2Vzcy5zYi5pbgogJChQUk9KRUNUX0RJUikvTmV0d29ya1Byb2Nl
c3Mvd2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIubWVzc2FnZXMuaW4KQEAgLTgzLDcgKzgzLDYg
QEAgJChQUk9KRUNUX0RJUikvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgogJChQ
Uk9KRUNUX0RJUikvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5tZXNzYWdlcy5pbgogJChQ
Uk9KRUNUX0RJUikvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLm1lc3NhZ2VzLmluCiAkKFBST0pF
Q1RfRElSKS9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCi0kKFBST0pFQ1Rf
RElSKS9VSVByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5tZXNzYWdlcy5pbgogJChQ
Uk9KRUNUX0RJUikvVUlQcm9jZXNzL2lvcy9FZGl0YWJsZUltYWdlQ29udHJvbGxlci5tZXNzYWdl
cy5pbgogJChQUk9KRUNUX0RJUikvVUlQcm9jZXNzL2lvcy9TbWFydE1hZ25pZmljYXRpb25Db250
cm9sbGVyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9VSVByb2Nlc3MvbWFjL1NlY0l0ZW1T
aGltUHJveHkubWVzc2FnZXMuaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNv
dXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91
dHB1dC54Y2ZpbGVsaXN0CmluZGV4IGZlMGE2YzAwNDAyYzUzNTU0MDU0NTE0OTFkNGQ4ZGY3NDQ3
M2M3OTMuLmJkOWRkN2Y2MzNjMTdiY2YyOTkwODc3ZjFkZTNhYWU0YThmYjQ3YWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIv
U291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtODgsOCAr
ODgsOCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9TbWFy
dE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZQogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdDIvU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2Vz
LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1N0b3JhZ2VB
cmVhTWFwTWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdDIvU3RvcmFnZUFyZWFNYXBNZXNzYWdlcy5oCi0kKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9TdG9yYWdlTWFuYWdlck1lc3NhZ2VSZWNlaXZl
ci5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1N0b3Jh
Z2VNYW5hZ2VyTWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYktpdDIvU3RvcmFnZU1hbmFnZXJTZXRNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9TdG9yYWdlTWFuYWdlclNldE1lc3Nh
Z2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1RleHRD
aGVja2luZ0NvbnRyb2xsZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1RleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94
eU1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQy
L1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYktpdC9EZXJpdmVk
U291cmNlcy5tYWtlCmluZGV4IDUzOTNjNWJkN2YwOTc5NDUwMDJmMTAzMjJlZmNlMDUzMTYzMmMz
ZmYuLjlkZTcwNDI2NmFmZWU1MTM2ZTY1ZTg0NzgxYjVhMDI1MjUxNTdhYzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L0Rl
cml2ZWRTb3VyY2VzLm1ha2UKQEAgLTEzNiw3ICsxMzYsNyBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9
IFwKICAgICBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrIFwKICAgICBTbWFydE1hZ25pZmljYXRpb25D
b250cm9sbGVyIFwKICAgICBTdG9yYWdlQXJlYU1hcCBcCi0gICAgU3RvcmFnZU1hbmFnZXIgXAor
ICAgIFN0b3JhZ2VNYW5hZ2VyU2V0IFwKICAgICBUZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkg
XAogICAgIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyIFwKICAgICBVc2VyTWVkaWFDYXB0dXJlTWFu
YWdlclByb3h5IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggMmU0ZjUzZDJhZGMw
ZTg1MjAyNmIwMzcxYjUxNTRkNGIzYzg5OTZjMS4uMTRiZDJkMDg3OTI0NDYxOWI2OTg1ZTBkYzI2
N2UwMmUwODg4Y2JiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTQ5LDcgKzQ5
LDYgQEAKICNpbmNsdWRlICJQaW5nTG9hZC5oIgogI2luY2x1ZGUgIlByZWNvbm5lY3RUYXNrLmgi
CiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckZldGNoVGFza01lc3NhZ2VzLmgiCi0jaW5jbHVkZSAi
U3RvcmFnZU1hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNp
bmNsdWRlICJXZWJFcnJvcnMuaCIKICNpbmNsdWRlICJXZWJJREJDb25uZWN0aW9uVG9DbGllbnQu
aCIKQEAgLTI5OSw3ICsyOTgsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiAgICAgLy8gcm9vdCBhY3Rp
dml0eSB0cmFja2Vycy4KICAgICBzdG9wQWxsTmV0d29ya0FjdGl2aXR5VHJhY2tpbmcoKTsKIAot
ICAgIG1fbmV0d29ya1Byb2Nlc3MtPndlYlByb2Nlc3NXYXNEaXNjb25uZWN0ZWQoY29ubmVjdGlv
bik7CisgICAgbV9uZXR3b3JrUHJvY2Vzcy0+Y29ubmVjdGlvblRvV2ViUHJvY2Vzc0Nsb3NlZChj
b25uZWN0aW9uKTsKIAogICAgIG1fbmV0d29ya1Byb2Nlc3MtPnJlbW92ZU5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKCp0aGlzKTsKIApAQCAtOTE4LDE5ICs5MTcsNCBAQCB2b2lkIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24oUEFM
OjpTZXNzaW9uSUQgcwogfQogI2VuZGlmCiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OndlYlBhZ2VXYXNBZGRlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgb2xkUGFnZUlEKQotewotICAg
IG1fbmV0d29ya1Byb2Nlc3MtPndlYlBhZ2VXYXNBZGRlZChtX2Nvbm5lY3Rpb24uZ2V0KCksIHNl
c3Npb25JRCwgcGFnZUlELCBvbGRQYWdlSUQpOwotfQotCi12b2lkIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjp3ZWJQYWdlV2FzUmVtb3ZlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKLXsKLSAgICBtX25ldHdvcmtQcm9jZXNzLT53ZWJQYWdl
V2FzUmVtb3ZlZChtX2Nvbm5lY3Rpb24uZ2V0KCksIHNlc3Npb25JRCwgcGFnZUlEKTsKLX0KLQot
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6d2ViUHJvY2Vzc1Nlc3Npb25DaGFu
Z2VkKFBBTDo6U2Vzc2lvbklEIG5ld1Nlc3Npb25JRCwgY29uc3QgVmVjdG9yPFBhZ2VJZGVudGlm
aWVyPiYgcGFnZXMpCi17Ci0gICAgbV9uZXR3b3JrUHJvY2Vzcy0+d2ViUHJvY2Vzc1Nlc3Npb25D
aGFuZ2VkKG1fY29ubmVjdGlvbi5nZXQoKSwgbmV3U2Vzc2lvbklELCBwYWdlcyk7Ci19Ci0KIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IDhmZTlmMzJj
OWVmYzYyZmQzYzUzZTBiMTJjMmRkNWQyYzQ1ZGUxMDguLjM0MzJmZTRmMjQ4ODJjNTBkM2M1ODNi
NWZiZGFhNzE1YzA2NzVhZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTE0MCwxMCAr
MTQwLDYgQEAgcHVibGljOgogCiAgICAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZp
bGVSZWZlcmVuY2U+PiByZXNvbHZlQmxvYlJlZmVyZW5jZXMoY29uc3QgTmV0d29ya1Jlc291cmNl
TG9hZFBhcmFtZXRlcnMmKTsKIAotICAgIHZvaWQgd2ViUGFnZVdhc0FkZGVkKFBBTDo6U2Vzc2lv
bklELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgb2xk
UGFnZUlEKTsKLSAgICB2b2lkIHdlYlBhZ2VXYXNSZW1vdmVkKFBBTDo6U2Vzc2lvbklELCBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllcik7Ci0gICAgdm9pZCB3ZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQo
UEFMOjpTZXNzaW9uSUQgbmV3U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXI+JiBwYWdlcyk7Ci0KICAgICB2b2lkIHJlbW92ZVNvY2tldENoYW5uZWwodWludDY0
X3QgaWRlbnRpZmllcik7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbgppbmRleCAxZTc3YzhhYjk4NDQ5ZmYwNGVmYWI3OTMwNWQ1MTM4ZGViZDg1
ZGRhLi5hNDdjOTcyYzViNmViYjFlYTVhY2QwMjRmYzhhNjIxMTU1MDEwNWE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTg3LDcgKzg3LDQgQEAgbWVz
c2FnZXMgLT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewog
ICAgIEVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQp
IC0+IChXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIHNlcnZlckNvbm5lY3Rp
b25JZGVudGlmaWVyKSBTeW5jaHJvbm91cwogI2VuZGlmCiAKLSAgICBXZWJQYWdlV2FzQWRkZWQo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQs
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG9sZFBhZ2VJRCkKLSAgICBXZWJQYWdlV2FzUmVtb3Zl
ZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCkKLSAgICBXZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQoUEFMOjpTZXNzaW9uSUQgbmV3U2Vzc2lv
bklELCBWZWN0b3I8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VzKQogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCBhOThmNzBm
YTk5YTU2NTAxYzdjMWRhZjUyOWFlZWIwNzA5ZDJjNmYxLi42NzhjMTlmY2Y2ZDI2NDBiMDY1MWQ1
ZTE5MTNiYjg5YjliYjFlYzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcApAQCAtNTMsOCArNTMsNyBAQAogI2luY2x1ZGUgIlNob3VsZEdy
YW5kZmF0aGVyU3RhdGlzdGljcy5oIgogI2luY2x1ZGUgIlN0YXRpc3RpY3NEYXRhLmgiCiAjaW5j
bHVkZSAiU3RvcmFnZUFjY2Vzc1N0YXR1cy5oIgotI2luY2x1ZGUgIlN0b3JhZ2VNYW5hZ2VyLmgi
Ci0jaW5jbHVkZSAiU3RvcmFnZU1hbmFnZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlN0b3JhZ2VN
YW5hZ2VyU2V0LmgiCiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlci5oIgogI2luY2x1ZGUgIldl
YlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2xNZXNzYWdlcy5o
IgpAQCAtMTMzLDYgKzEzMiw3IEBAIHN0YXRpYyB2b2lkIGNhbGxFeGl0U29vbihJUEM6OkNvbm5l
Y3Rpb24qKQogCiBOZXR3b3JrUHJvY2Vzczo6TmV0d29ya1Byb2Nlc3MoQXV4aWxpYXJ5UHJvY2Vz
c0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgOiBtX2Rvd25sb2Fk
TWFuYWdlcigqdGhpcykKKyAgICAsIG1fc3RvcmFnZU1hbmFnZXJTZXQoU3RvcmFnZU1hbmFnZXJT
ZXQ6OmNyZWF0ZSgpKQogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCiAgICAgLCBtX25l
dHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyKCp0aGlzKQogI2VuZGlmCkBAIC0zMzYsNiArMzM2
LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKE5ldHdv
cmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYKICNlbmRpZgogICAgIGluaXRpYWxpemVTdG9y
YWdlUXVvdGEocGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycyk7CiAKKyAgICBt
X3N0b3JhZ2VNYW5hZ2VyU2V0LT5hZGQoc2Vzc2lvbklELCBwYXJhbWV0ZXJzLmRlZmF1bHREYXRh
U3RvcmVQYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeSwgcGFyYW1ldGVycy5kZWZhdWx0
RGF0YVN0b3JlUGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUp
OworCiAgICAgYXV0byogZGVmYXVsdFNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihQQUw6OlNlc3Np
b25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKICAgICBhdXRvKiBkZWZhdWx0U3RvcmFnZVNlc3Np
b24gPSBkZWZhdWx0U2Vzc2lvbi0+bmV0d29ya1N0b3JhZ2VTZXNzaW9uKCk7CiAgICAgZm9yIChj
b25zdCBhdXRvJiBjb29raWUgOiBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJz
LnBlbmRpbmdDb29raWVzKQpAQCAtNDQ3LDYgKzQ0OSw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKGJvb2wgaXNTZXJ2aWNlV29ya2Vy
UHJvCiAgICAgVU5VU0VEX1BBUkFNKGlzU2VydmljZVdvcmtlclByb2Nlc3MpOwogICAgIFVOVVNF
RF9QQVJBTShyZWdpc3RyYWJsZURvbWFpbik7CiAjZW5kaWYKKworICAgIG1fc3RvcmFnZU1hbmFn
ZXJTZXQtPmFkZENvbm5lY3Rpb24obV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMubGFzdCgpLT5jb25u
ZWN0aW9uKCkpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVhckNhY2hlZENyZWRlbnRp
YWxzKCkKQEAgLTQ2OSw2ICs0NzMsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjphZGRXZWJzaXRl
RGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycwogICAgICAg
ICBhZGRTZXJ2aWNlV29ya2VyU2Vzc2lvbihwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1l
dGVycy5zZXNzaW9uSUQsIHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVj
dG9yeSwgcGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5RXh0ZW5z
aW9uSGFuZGxlKTsKICNlbmRpZgogCisgICAgbV9zdG9yYWdlTWFuYWdlclNldC0+YWRkKHBhcmFt
ZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnNlc3Npb25JRCwgcGFyYW1ldGVycy5sb2Nh
bFN0b3JhZ2VEaXJlY3RvcnksIHBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5z
aW9uSGFuZGxlKTsKKwogICAgIGluaXRpYWxpemVTdG9yYWdlUXVvdGEocGFyYW1ldGVycyk7CiAK
ICAgICBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Np
b24oKnRoaXMsIFdURk1vdmUocGFyYW1ldGVycykpOwpAQCAtNjEwLDYgKzYxNiw3IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OmRlc3Ryb3lTZXNzaW9uKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNz
aW9uSUQpCiAjZW5kaWYKIAogICAgIG1fc3RvcmFnZVF1b3RhTWFuYWdlcnMucmVtb3ZlKHNlc3Np
b25JRCk7CisgICAgbV9zdG9yYWdlTWFuYWdlclNldC0+cmVtb3ZlKHNlc3Npb25JRCk7CiB9CiAK
IEJsb2JSZWdpc3RyeUltcGwqIE5ldHdvcmtQcm9jZXNzOjpibG9iUmVnaXN0cnkoTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24pCkBAIC0xMDQ5LDggKzEwNTYsOCBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVhclVzZXJJbnRlcmFjdGlvbihQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdAogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpoYXNMb2NhbFN0
b3JhZ2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
ZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewotICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkg
ewotICAgICAgICBzZXNzaW9uLT5zdG9yYWdlTWFuYWdlcigpLmdldExvY2FsU3RvcmFnZU9yaWdp
bnMoW2RvbWFpbiwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0oYXV0byYmIG9yaWdpbnMpIG11dGFibGUgeworICAgIGlmIChtX3N0b3JhZ2VNYW5hZ2VyU2V0
LT5jb250YWlucyhzZXNzaW9uSUQpKSB7CisgICAgICAgIG1fc3RvcmFnZU1hbmFnZXJTZXQtPmdl
dExvY2FsU3RvcmFnZU9yaWdpbnMoc2Vzc2lvbklELCBbZG9tYWluLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvJiYgb3JpZ2lucykgbXV0YWJsZSB7
CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6OmFueU9mKG9yaWdpbnMsIFsmZG9t
YWluXShhdXRvJiBvcmlnaW4pIHsKICAgICAgICAgICAgICAgICByZXR1cm4gZG9tYWluLm1hdGNo
ZXMob3JpZ2luKTsKICAgICAgICAgICAgIH0pKTsKQEAgLTEzMzEsMTYgKzEzMzgsMTUgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIE9wdGlvblNldDxXZWJzaXQKICAgICAgICAgfSk7CiAgICAgfQogCi0gICAgYXV0byogc2Vz
c2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7Ci0gICAgaWYgKHdlYnNpdGVEYXRhVHlw
ZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpTZXNzaW9uU3RvcmFnZSkgJiYgc2Vzc2lvbikg
ewotICAgICAgICBzZXNzaW9uLT5zdG9yYWdlTWFuYWdlcigpLmdldFNlc3Npb25TdG9yYWdlT3Jp
Z2lucyhbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0o
YXV0byYmIG9yaWdpbnMpIHsKKyAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJz
aXRlRGF0YVR5cGU6OlNlc3Npb25TdG9yYWdlKSAmJiBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5jb250
YWlucyhzZXNzaW9uSUQpKSB7CisgICAgICAgIG1fc3RvcmFnZU1hbmFnZXJTZXQtPmdldFNlc3Np
b25TdG9yYWdlT3JpZ2lucyhzZXNzaW9uSUQsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFj
a0FnZ3JlZ2F0b3IuY29weVJlZigpXShhdXRvJiYgb3JpZ2lucykgewogICAgICAgICAgICAgd2hp
bGUgKCFvcmlnaW5zLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0
b3ItPm1fd2Vic2l0ZURhdGEuZW50cmllcy5hcHBlbmQoV2Vic2l0ZURhdGE6OkVudHJ5IHsgb3Jp
Z2lucy50YWtlQW55KCksIFdlYnNpdGVEYXRhVHlwZTo6U2Vzc2lvblN0b3JhZ2UsIDAgfSk7CiAg
ICAgICAgIH0pOwogICAgIH0KIAotICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdl
YnNpdGVEYXRhVHlwZTo6TG9jYWxTdG9yYWdlKSAmJiBzZXNzaW9uKSB7Ci0gICAgICAgIHNlc3Np
b24tPnN0b3JhZ2VNYW5hZ2VyKCkuZ2V0TG9jYWxTdG9yYWdlT3JpZ2lucyhbY2FsbGJhY2tBZ2dy
ZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0oYXV0byYmIG9yaWdpbnMpIHsK
KyAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkxvY2Fs
U3RvcmFnZSkgJiYgbV9zdG9yYWdlTWFuYWdlclNldC0+Y29udGFpbnMoc2Vzc2lvbklEKSkgewor
ICAgICAgICBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5nZXRMb2NhbFN0b3JhZ2VPcmlnaW5zKHNlc3Np
b25JRCwgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCld
KGF1dG8mJiBvcmlnaW5zKSB7CiAgICAgICAgICAgICB3aGlsZSAoIW9yaWdpbnMuaXNFbXB0eSgp
KQogICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YS5lbnRy
aWVzLmFwcGVuZChXZWJzaXRlRGF0YTo6RW50cnkgeyBvcmlnaW5zLnRha2VBbnkoKSwgV2Vic2l0
ZURhdGFUeXBlOjpMb2NhbFN0b3JhZ2UsIDAgfSk7CiAgICAgICAgIH0pOwpAQCAtMTQxNSwxMiAr
MTQyMSwxMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YShQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaQogICAgIGlmICh3ZWJzaXRlRGF0YVR5
cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6RE9NQ2FjaGUpKQogICAgICAgICBDYWNoZVN0
b3JhZ2U6OkVuZ2luZTo6Y2xlYXJBbGxDYWNoZXMoKnRoaXMsIHNlc3Npb25JRCwgW2NsZWFyVGFz
a3NIYW5kbGVyID0gY2xlYXJUYXNrc0hhbmRsZXIuY29weVJlZigpXSB7IH0pOwogCi0gICAgYXV0
byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7Ci0gICAgaWYgKHdlYnNpdGVE
YXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpTZXNzaW9uU3RvcmFnZSkgJiYgc2Vz
c2lvbikKLSAgICAgICAgc2Vzc2lvbi0+c3RvcmFnZU1hbmFnZXIoKS5kZWxldGVTZXNzaW9uU3Rv
cmFnZU9yaWdpbnMoW2NsZWFyVGFza3NIYW5kbGVyID0gY2xlYXJUYXNrc0hhbmRsZXIuY29weVJl
ZigpXSB7IH0pOworICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRh
VHlwZTo6U2Vzc2lvblN0b3JhZ2UpICYmIG1fc3RvcmFnZU1hbmFnZXJTZXQtPmNvbnRhaW5zKHNl
c3Npb25JRCkpCisgICAgICAgIG1fc3RvcmFnZU1hbmFnZXJTZXQtPmRlbGV0ZVNlc3Npb25TdG9y
YWdlKHNlc3Npb25JRCwgW2NsZWFyVGFza3NIYW5kbGVyID0gY2xlYXJUYXNrc0hhbmRsZXIuY29w
eVJlZigpXSB7IH0pOwogCi0gICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0
ZURhdGFUeXBlOjpMb2NhbFN0b3JhZ2UpICYmIHNlc3Npb24pCi0gICAgICAgIHNlc3Npb24tPnN0
b3JhZ2VNYW5hZ2VyKCkuZGVsZXRlTG9jYWxTdG9yYWdlT3JpZ2luc01vZGlmaWVkU2luY2UobW9k
aWZpZWRTaW5jZSwgW2NsZWFyVGFza3NIYW5kbGVyID0gY2xlYXJUYXNrc0hhbmRsZXIuY29weVJl
ZigpXSB7IH0pOworICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRh
VHlwZTo6TG9jYWxTdG9yYWdlKSAmJiBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5jb250YWlucyhzZXNz
aW9uSUQpKQorICAgICAgICBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5kZWxldGVMb2NhbFN0b3JhZ2VN
b2RpZmllZFNpbmNlKHNlc3Npb25JRCwgbW9kaWZpZWRTaW5jZSwgW2NsZWFyVGFza3NIYW5kbGVy
ID0gY2xlYXJUYXNrc0hhbmRsZXIuY29weVJlZigpXSB7IH0pOwogCiAjaWYgRU5BQkxFKElOREVY
RURfREFUQUJBU0UpCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURh
dGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpICYmICFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkK
QEAgLTE1MTUsMTIgKzE1MjAsMTEgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0
ZURhdGFGb3JPcmlnaW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW8KICAgICAgICAg
ICAgIENhY2hlU3RvcmFnZTo6RW5naW5lOjpjbGVhckNhY2hlc0Zvck9yaWdpbigqdGhpcywgc2Vz
c2lvbklELCBTZWN1cml0eU9yaWdpbkRhdGEgeyBvcmlnaW5EYXRhIH0sIFtjbGVhclRhc2tzSGFu
ZGxlciA9IGNsZWFyVGFza3NIYW5kbGVyLmNvcHlSZWYoKV0geyB9KTsKICAgICB9CiAKLSAgICBh
dXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKLSAgICBpZiAod2Vic2l0
ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlNlc3Npb25TdG9yYWdlKSAmJiBz
ZXNzaW9uKQotICAgICAgICBzZXNzaW9uLT5zdG9yYWdlTWFuYWdlcigpLmRlbGV0ZVNlc3Npb25T
dG9yYWdlRW50cmllc0Zvck9yaWdpbnMob3JpZ2luRGF0YXMsIFtjbGVhclRhc2tzSGFuZGxlciA9
IGNsZWFyVGFza3NIYW5kbGVyLmNvcHlSZWYoKV0geyB9KTsKKyAgICBpZiAod2Vic2l0ZURhdGFU
eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlNlc3Npb25TdG9yYWdlKSAmJiBtX3N0b3Jh
Z2VNYW5hZ2VyU2V0LT5jb250YWlucyhzZXNzaW9uSUQpKQorICAgICAgICBtX3N0b3JhZ2VNYW5h
Z2VyU2V0LT5kZWxldGVTZXNzaW9uU3RvcmFnZUZvck9yaWdpbnMoc2Vzc2lvbklELCBvcmlnaW5E
YXRhcywgW2NsZWFyVGFza3NIYW5kbGVyID0gY2xlYXJUYXNrc0hhbmRsZXIuY29weVJlZigpXSB7
IH0pOwogCi0gICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBl
OjpMb2NhbFN0b3JhZ2UpICYmIHNlc3Npb24pCi0gICAgICAgIHNlc3Npb24tPnN0b3JhZ2VNYW5h
Z2VyKCkuZGVsZXRlTG9jYWxTdG9yYWdlRW50cmllc0Zvck9yaWdpbnMob3JpZ2luRGF0YXMsIFtj
bGVhclRhc2tzSGFuZGxlciA9IGNsZWFyVGFza3NIYW5kbGVyLmNvcHlSZWYoKV0geyB9KTsKKyAg
ICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkxvY2FsU3Rv
cmFnZSkgJiYgbV9zdG9yYWdlTWFuYWdlclNldC0+Y29udGFpbnMoc2Vzc2lvbklEKSkKKyAgICAg
ICAgbV9zdG9yYWdlTWFuYWdlclNldC0+ZGVsZXRlTG9jYWxTdG9yYWdlRm9yT3JpZ2lucyhzZXNz
aW9uSUQsIG9yaWdpbkRhdGFzLCBbY2xlYXJUYXNrc0hhbmRsZXIgPSBjbGVhclRhc2tzSGFuZGxl
ci5jb3B5UmVmKCldIHsgfSk7CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICBp
ZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRh
dGFiYXNlcykgJiYgIXNlc3Npb25JRC5pc0VwaGVtZXJhbCgpKQpAQCAtMTcxNywyMCArMTcyMSwx
OCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxl
RG9tYWlucyhQQUw6OlNlc3Npb25JRCBzZXNzaQogICAgICAgICB9KTsKICAgICB9CiAKLSAgICBh
dXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKLSAgICBpZiAoc2Vzc2lv
bikgewotICAgICAgICBhdXRvJiBzdG9yYWdlTWFuYWdlciA9IHNlc3Npb24tPnN0b3JhZ2VNYW5h
Z2VyKCk7CisgICAgaWYgKG1fc3RvcmFnZU1hbmFnZXJTZXQtPmNvbnRhaW5zKHNlc3Npb25JRCkp
IHsKICAgICAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBl
OjpTZXNzaW9uU3RvcmFnZSkpIHsKLSAgICAgICAgICAgIHN0b3JhZ2VNYW5hZ2VyLmdldFNlc3Np
b25TdG9yYWdlT3JpZ2lucyhbc3RvcmFnZU1hbmFnZXIgPSBtYWtlUmVmUHRyKHN0b3JhZ2VNYW5h
Z2VyKSwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKSwg
ZG9tYWluc1RvRGVsZXRlQWxsQnV0Q29va2llc0Zvcl0oYXV0byYmIG9yaWdpbnMpIHsKKyAgICAg
ICAgICAgIG1fc3RvcmFnZU1hbmFnZXJTZXQtPmdldFNlc3Npb25TdG9yYWdlT3JpZ2lucyhzZXNz
aW9uSUQsIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHRoaXMsIHNlc3Npb25JRCwg
Y2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKSwgZG9tYWlu
c1RvRGVsZXRlQWxsQnV0Q29va2llc0Zvcl0oYXV0byYmIG9yaWdpbnMpIHsKICAgICAgICAgICAg
ICAgICBhdXRvIG9yaWdpbnNUb0RlbGV0ZSA9IGZpbHRlckZvclJlZ2lzdHJhYmxlRG9tYWlucyhv
cmlnaW5zLCBkb21haW5zVG9EZWxldGVBbGxCdXRDb29raWVzRm9yLCBjYWxsYmFja0FnZ3JlZ2F0
b3ItPm1fZG9tYWlucyk7Ci0gICAgICAgICAgICAgICAgc3RvcmFnZU1hbmFnZXItPmRlbGV0ZVNl
c3Npb25TdG9yYWdlRW50cmllc0Zvck9yaWdpbnMob3JpZ2luc1RvRGVsZXRlLCBbY2FsbGJhY2tB
Z2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKKyAgICAgICAg
ICAgICAgICBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5kZWxldGVTZXNzaW9uU3RvcmFnZUZvck9yaWdp
bnMoc2Vzc2lvbklELCBvcmlnaW5zVG9EZWxldGUsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxs
YmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwogICAgICAgICAgICAgfSk7CiAgICAgICAg
IH0KIAogICAgICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5
cGU6OkxvY2FsU3RvcmFnZSkpIHsKLSAgICAgICAgICAgIHN0b3JhZ2VNYW5hZ2VyLmdldExvY2Fs
U3RvcmFnZU9yaWdpbnMoW3N0b3JhZ2VNYW5hZ2VyID0gbWFrZVJlZlB0cihzdG9yYWdlTWFuYWdl
ciksIGNhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCksIGRv
bWFpbnNUb0RlbGV0ZUFsbEJ1dENvb2tpZXNGb3JdKGF1dG8mJiBvcmlnaW5zKSB7CisgICAgICAg
ICAgICBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5nZXRMb2NhbFN0b3JhZ2VPcmlnaW5zKHNlc3Npb25J
RCwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdGhpcywgc2Vzc2lvbklELCBjYWxs
YmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpLCBkb21haW5zVG9E
ZWxldGVBbGxCdXRDb29raWVzRm9yXShhdXRvJiYgb3JpZ2lucykgewogICAgICAgICAgICAgICAg
IGF1dG8gb3JpZ2luc1RvRGVsZXRlID0gZmlsdGVyRm9yUmVnaXN0cmFibGVEb21haW5zKG9yaWdp
bnMsIGRvbWFpbnNUb0RlbGV0ZUFsbEJ1dENvb2tpZXNGb3IsIGNhbGxiYWNrQWdncmVnYXRvci0+
bV9kb21haW5zKTsKLSAgICAgICAgICAgICAgICBzdG9yYWdlTWFuYWdlci0+ZGVsZXRlTG9jYWxT
dG9yYWdlRW50cmllc0Zvck9yaWdpbnMob3JpZ2luc1RvRGVsZXRlLCBbY2FsbGJhY2tBZ2dyZWdh
dG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKKyAgICAgICAgICAgICAg
ICBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5kZWxldGVMb2NhbFN0b3JhZ2VGb3JPcmlnaW5zKHNlc3Np
b25JRCwgb3JpZ2luc1RvRGVsZXRlLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dy
ZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAgICAg
fQpAQCAtMjEwMiw5ICsyMTA0LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6YWN0dWFsUHJlcGFy
ZVRvU3VzcGVuZChTaG91bGRBY2tub3dsZWRnZVdoZW5SZWFkeVRvU3VzcGVuZAogICAgIH0KICNl
bmRpZgogCi0gICAgZm9yRWFjaE5ldHdvcmtTZXNzaW9uKFsmY2FsbGJhY2tBZ2dyZWdhdG9yXShh
dXRvJiBzZXNzaW9uKSB7Ci0gICAgICAgIHNlc3Npb24uc3RvcmFnZU1hbmFnZXIoKS5zdXNwZW5k
KFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7Ci0gICAgfSk7CisgICAgbV9zdG9yYWdlTWFuYWdl
clNldC0+c3VzcGVuZChbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwogfQogCiB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpwcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5KCkKQEAgLTIxODAsOSArMjE4
MCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlc3VtZSgpCiAgICAgICAgIHNlcnZlci0+cmVz
dW1lKCk7CiAjZW5kaWYKIAotICAgIGZvckVhY2hOZXR3b3JrU2Vzc2lvbihbXShhdXRvJiBzZXNz
aW9uKSB7Ci0gICAgICAgIHNlc3Npb24uc3RvcmFnZU1hbmFnZXIoKS5yZXN1bWUoKTsKLSAgICB9
KTsKKyAgICBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5yZXN1bWUoKTsKIH0KIAogdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6cHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKQEAgLTIzNzgsNiAr
MjM3NiwxOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjphZGRJbmRleGVkRGF0YWJhc2VTZXNzaW9u
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nJgogfQogI2VuZGlmIC8vIEVOQUJMRShJ
TkRFWEVEX0RBVEFCQVNFKQogCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpzeW5jTG9jYWxTdG9yYWdl
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBt
X3N0b3JhZ2VNYW5hZ2VyU2V0LT53YWl0VW50aWxTeW5jaW5nTG9jYWxTdG9yYWdlRmluaXNoZWQo
KTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpj
bGVhckxlZ2FjeVByaXZhdGVCcm93c2luZ0xvY2FsU3RvcmFnZSgpCit7CisgICAgaWYgKG1fc3Rv
cmFnZU1hbmFnZXJTZXQtPmNvbnRhaW5zKFBBTDo6U2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vz
c2lvbklEKCkpKQorICAgICAgICBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5kZWxldGVMb2NhbFN0b3Jh
Z2VNb2RpZmllZFNpbmNlKFBBTDo6U2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCks
IC1XYWxsVGltZTo6aW5maW5pdHkoKSwgW10oKSB7IH0pOworfQorCiB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjp1cGRhdGVRdW90YUJhc2VkT25TcGFjZVVzYWdlRm9yVGVzdGluZyhQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2luKQogewogICAgIGF1dG8mIG1h
bmFnZXIgPSBzdG9yYWdlUXVvdGFNYW5hZ2VyKHNlc3Npb25JRCwgb3JpZ2luKTsKQEAgLTI2ODUs
ODAgKzI2OTUsMjEgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVtb3ZlS2VwdEFsaXZlTG9hZChO
ZXR3b3JrUmVzb3VyY2VMb2FkZXImIGxvYWRlcikKICAgICAgICAgc2Vzc2lvbi0+cmVtb3ZlS2Vw
dEFsaXZlTG9hZChsb2FkZXIpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjp3ZWJQYWdlV2Fz
QWRkZWQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgUGFnZUlkZW50aWZpZXIgb2xkUGFnZUlEKQotewot
ICAgIGlmICghcGFnZUlEIHx8ICFvbGRQYWdlSUQpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJDYW5u
b3QgYWRkIHBhZ2Ugd2l0aCBpbnZhbGlkIGlkIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKLSAgICBpZiAo
IXNlc3Npb24pIHsKLSAgICAgICAgTE9HX0VSUk9SKCJDYW5ub3QgYWRkIHBhZ2UgdG8gYW4gdW5r
bm93biBzZXNzaW9uIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgYXV0byYgc3RvcmFn
ZU1hbmFnZXIgPSBzZXNzaW9uLT5zdG9yYWdlTWFuYWdlcigpOwotCi0gICAgYXV0byBhZGRSZXN1
bHQgPSBtX3Nlc3Npb25CeUNvbm5lY3Rpb24uYWRkKGNvbm5lY3Rpb24udW5pcXVlSUQoKSwgc2Vz
c2lvbklEKTsKLSAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZSA9PSBzZXNzaW9uSUQpOwotCi0gICAgc3RvcmFnZU1hbmFnZXIuY3JlYXRlU2Vzc2lv
blN0b3JhZ2VOYW1lc3BhY2UocGFnZUlELnRvVUludDY0KCksIHN0ZDo6bnVtZXJpY19saW1pdHM8
dW5zaWduZWQ+OjptYXgoKSk7Ci0gICAgc3RvcmFnZU1hbmFnZXIuYWRkQWxsb3dlZFNlc3Npb25T
dG9yYWdlTmFtZXNwYWNlQ29ubmVjdGlvbihwYWdlSUQudG9VSW50NjQoKSwgY29ubmVjdGlvbik7
Ci0gICAgaWYgKHBhZ2VJRCAhPSBvbGRQYWdlSUQpCi0gICAgICAgIHN0b3JhZ2VNYW5hZ2VyLmNs
b25lU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2Uob2xkUGFnZUlELnRvVUludDY0KCksIHBhZ2VJRC50
b1VJbnQ2NCgpKTsKLX0KLQotdm9pZCBOZXR3b3JrUHJvY2Vzczo6d2ViUGFnZVdhc1JlbW92ZWQo
SVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCkKLXsKLSAgICBpZiAoIXBhZ2VJRCkgewotICAgICAgICBMT0df
RVJST1IoIkNhbm5vdCByZW1vdmUgcGFnZSB3aXRoIGludmFsaWQgaWQiKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9u
SUQpOwotICAgIC8vIFNlc3Npb24gY2FuIGJlIGRlc3Ryb3llZCBiZWZvcmUgcGFnZSBnZXRzIHJl
bW92ZWQuCi0gICAgaWYgKCFzZXNzaW9uKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvJiBz
dG9yYWdlTWFuYWdlciA9IHNlc3Npb24tPnN0b3JhZ2VNYW5hZ2VyKCk7Ci0gICAgc3RvcmFnZU1h
bmFnZXIucmVtb3ZlQWxsb3dlZFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlQ29ubmVjdGlvbihwYWdl
SUQudG9VSW50NjQoKSwgY29ubmVjdGlvbik7Ci0gICAgc3RvcmFnZU1hbmFnZXIuZGVzdHJveVNl
c3Npb25TdG9yYWdlTmFtZXNwYWNlKHBhZ2VJRC50b1VJbnQ2NCgpKTsKLX0KLQotdm9pZCBOZXR3
b3JrUHJvY2Vzczo6d2ViUHJvY2Vzc1dhc0Rpc2Nvbm5lY3RlZChJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24pCi17Ci0gICAgYXV0byBzZXNzaW9uSUQgPSBtX3Nlc3Npb25CeUNvbm5lY3Rpb24u
dGFrZShjb25uZWN0aW9uLnVuaXF1ZUlEKCkpOwotICAgIGlmICghc2Vzc2lvbklELmlzVmFsaWQo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vz
c2lvbihzZXNzaW9uSUQpKQotICAgICAgICBzZXNzaW9uLT5zdG9yYWdlTWFuYWdlcigpLnByb2Nl
c3NEaWRDbG9zZUNvbm5lY3Rpb24oY29ubmVjdGlvbik7Ci19Ci0KLXZvaWQgTmV0d29ya1Byb2Nl
c3M6OndlYlByb2Nlc3NTZXNzaW9uQ2hhbmdlZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
IFBBTDo6U2Vzc2lvbklEIG5ld1Nlc3Npb25JRCwgY29uc3QgVmVjdG9yPFBhZ2VJZGVudGlmaWVy
PiYgcGFnZUlEcykKLXsKLSAgICBhdXRvIGNvbm5lY3Rpb25JRCA9IGNvbm5lY3Rpb24udW5pcXVl
SUQoKTsKLSAgICBBU1NFUlQobV9zZXNzaW9uQnlDb25uZWN0aW9uLmNvbnRhaW5zKGNvbm5lY3Rp
b25JRCkpOwotICAgIGlmIChtX3Nlc3Npb25CeUNvbm5lY3Rpb24uZ2V0KGNvbm5lY3Rpb25JRCkg
PT0gbmV3U2Vzc2lvbklEKQotICAgICAgICByZXR1cm47Ci0KLSAgICB3ZWJQcm9jZXNzV2FzRGlz
Y29ubmVjdGVkKGNvbm5lY3Rpb24pOwotICAgIGZvciAoYXV0byYgcGFnZUlEIDogcGFnZUlEcykK
LSAgICAgICAgd2ViUGFnZVdhc0FkZGVkKGNvbm5lY3Rpb24sIG5ld1Nlc3Npb25JRCwgcGFnZUlE
LCBwYWdlSUQpOwotfQotCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpnZXRMb2NhbFN0b3JhZ2VPcmln
aW5EZXRhaWxzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChWZWN0b3I8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpPcmlnaW5EZXRhaWxzPiYmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Np
b24oc2Vzc2lvbklEKTsKLSAgICBpZiAoIXNlc3Npb24pIHsKKyAgICBpZiAoIW1fc3RvcmFnZU1h
bmFnZXJTZXQtPmNvbnRhaW5zKHNlc3Npb25JRCkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJDYW5u
b3QgZ2V0IGxvY2FsIHN0b3JhZ2UgaW5mb3JtYXRpb24gZm9yIGFuIHVua25vd24gc2Vzc2lvbiIp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byYgc3RvcmFnZU1hbmFnZXIgPSBz
ZXNzaW9uLT5zdG9yYWdlTWFuYWdlcigpOwotICAgIHN0b3JhZ2VNYW5hZ2VyLmdldExvY2FsU3Rv
cmFnZU9yaWdpbkRldGFpbHMoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildKGF1dG8mJiBkZXRhaWxzKSBtdXRhYmxlIHsKKyAgICBtX3N0b3JhZ2VNYW5hZ2Vy
U2V0LT5nZXRMb2NhbFN0b3JhZ2VPcmlnaW5EZXRhaWxzKHNlc3Npb25JRCwgW2NvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1dG8mJiBkZXRhaWxzKSBtdXRh
YmxlIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShkZXRhaWxzKSk7CiAgICAg
fSk7CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NDbG9z
ZWQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQoreworICAgIG1fc3RvcmFnZU1hbmFnZXJT
ZXQtPnJlbW92ZUNvbm5lY3Rpb24oY29ubmVjdGlvbik7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmlu
ZGV4IDk0ODY5MDQ2NWFhMTY0MGI5YWFlZWFlZmE4YjJlNDRiYzY1MmQzOTAuLjAyMWRiNGIyYTQ2
YmI5YjYyMjRkNWMyZWI0NWRhNTdjNjE4MmRkYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTk3LDYgKzk3LDcgQEAgY2xhc3MgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CiBjbGFzcyBOZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQ7
CiBjbGFzcyBOZXR3b3JrUHJveGltaXR5TWFuYWdlcjsKIGNsYXNzIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjsKK2NsYXNzIFN0b3JhZ2VNYW5hZ2VyU2V0OwogY2xhc3MgV2ViU1dTZXJ2ZXJDb25uZWN0
aW9uOwogY2xhc3MgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOwogZW51bSBjbGFzcyBT
aG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MgOiBib29sOwpAQCAtMjY5LDEwICsyNzAsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRTZXNzaW9uSXNDb250cm9sbGVkQnlBdXRvbWF0aW9uKFBBTDo6
U2Vzc2lvbklELCBib29sKTsKICAgICBib29sIHNlc3Npb25Jc0NvbnRyb2xsZWRCeUF1dG9tYXRp
b24oUEFMOjpTZXNzaW9uSUQpIGNvbnN0OwogCi0gICAgdm9pZCB3ZWJQYWdlV2FzQWRkZWQoSVBD
OjpDb25uZWN0aW9uJiwgUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7Ci0gICAgdm9pZCB3ZWJQYWdlV2FzUmVtb3ZlZChJUEM6
OkNvbm5lY3Rpb24mLCBQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwot
ICAgIHZvaWQgd2ViUHJvY2Vzc1dhc0Rpc2Nvbm5lY3RlZChJUEM6OkNvbm5lY3Rpb24mKTsKLSAg
ICB2b2lkIHdlYlByb2Nlc3NTZXNzaW9uQ2hhbmdlZChJUEM6OkNvbm5lY3Rpb24mLCBQQUw6OlNl
c3Npb25JRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiYpOworICAgIHZv
aWQgY29ubmVjdGlvblRvV2ViUHJvY2Vzc0Nsb3NlZChJUEM6OkNvbm5lY3Rpb24mKTsKICAgICB2
b2lkIGdldExvY2FsU3RvcmFnZU9yaWdpbkRldGFpbHMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoVmVjdG9yPExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6T3JpZ2lu
RGV0YWlscz4mJik+JiYpOwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKQEAgLTI4
NCw2ICsyODIsOSBAQCBwdWJsaWM6CiAgICAgLy8gV2ViQ29yZTo6SURCU2VydmVyOjpJREJCYWNr
aW5nU3RvcmVGaWxlSGFuZGxlci4KICAgICB2b2lkIGFjY2Vzc1RvVGVtcG9yYXJ5RmlsZUNvbXBs
ZXRlKGNvbnN0IFN0cmluZyYgcGF0aCkgZmluYWw7CiAjZW5kaWYKKyAgICB2b2lkIHN5bmNMb2Nh
bFN0b3JhZ2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGNsZWFyTGVn
YWN5UHJpdmF0ZUJyb3dzaW5nTG9jYWxTdG9yYWdlKCk7CisKICAgICB2b2lkIHVwZGF0ZVF1b3Rh
QmFzZWRPblNwYWNlVXNhZ2VGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3Jl
OjpDbGllbnRPcmlnaW4mKTsKIAogI2lmIEVOQUJMRShTQU5EQk9YX0VYVEVOU0lPTlMpCkBAIC00
OTgsNiArNDk5LDggQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBzdGQ6
OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPj4gbV9uZXR3b3JrU3Rv
cmFnZVNlc3Npb25zOwogICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbj4gbV9kZWZhdWx0TmV0d29ya1N0b3JhZ2VTZXNzaW9uOwogCisgICAg
UmVmUHRyPFN0b3JhZ2VNYW5hZ2VyU2V0PiBtX3N0b3JhZ2VNYW5hZ2VyU2V0OworCiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2Vzc0Nv
Y29hKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAgICAgdm9pZCBz
ZXRTdG9yYWdlQWNjZXNzQVBJRW5hYmxlZChib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDZjMjgy
N2ViOWRiMTM4ODk5M2QzMGJiOTQzZDNkNmVkMmUxZWFhMjIuLjYyZTBjOWRmNDJiMzgzNmM1ZjE4
NGVkYjQxNzNkNjExYjMxZjhjMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTU5LDYgKzE1OSw5IEBA
IG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBEaXNhYmxl
U2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5KCkKICNlbmRpZgogCisgICAgU3lu
Y0xvY2FsU3RvcmFnZSgpIC0+ICgpIFN5bmNocm9ub3VzCisgICAgQ2xlYXJMZWdhY3lQcml2YXRl
QnJvd3NpbmdMb2NhbFN0b3JhZ2UoKQorCiAgICAgVXBkYXRlUXVvdGFCYXNlZE9uU3BhY2VVc2Fn
ZUZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdHJ1Y3QgV2ViQ29yZTo6Q2xp
ZW50T3JpZ2luIG9yaWdpbikKIAogICAgIFN0b3JlQWRDbGlja0F0dHJpYnV0aW9uKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6QWRDbGlja0F0dHJpYnV0aW9uIGFkQ2xpY2tBdHRy
aWJ1dGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lv
bi5jcHAKaW5kZXggNDg4YjkyOTgwYWVkMWFkYzY0YWIzZDNjYWZjM2Y4ZDhmYTI3NjJiZC4uMWEx
Mzk2MjkxNmE5OTI0MDQwMDhhMmVmMjFhNDE5M2U2YzE3NjZlYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKQEAgLTMzLDcgKzMzLDYgQEAK
ICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIk5l
dHdvcmtSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIlBpbmdMb2FkLmgiCi0jaW5jbHVkZSAi
U3RvcmFnZU1hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJX
ZWJQYWdlUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgpAQCAt
ODUsNyArODQsNiBAQCBOZXR3b3JrU2Vzc2lvbjo6TmV0d29ya1Nlc3Npb24oTmV0d29ya1Byb2Nl
c3MmIG5ldHdvcmtQcm9jZXNzLCBjb25zdCBOZXR3b3JrU2VzcwogICAgICwgbV9lbmFibGVSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTG9nVGVzdGluZ0V2ZW50KHBhcmFtZXRlcnMuZW5hYmxlUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0xvZ1Rlc3RpbmdFdmVudCkKICNlbmRpZgogICAgICwgbV9hZENsaWNr
QXR0cmlidXRpb24obWFrZVVuaXF1ZVJlZjxBZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyPihwYXJh
bWV0ZXJzLnNlc3Npb25JRCkpCi0gICAgLCBtX3N0b3JhZ2VNYW5hZ2VyKFN0b3JhZ2VNYW5hZ2Vy
OjpjcmVhdGUoU3RyaW5nKHBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5KSkpCiB7CiAg
ICAgaWYgKCFtX3Nlc3Npb25JRC5pc0VwaGVtZXJhbCgpKSB7CiAgICAgICAgIFN0cmluZyBuZXR3
b3JrQ2FjaGVEaXJlY3RvcnkgPSBwYXJhbWV0ZXJzLm5ldHdvcmtDYWNoZURpcmVjdG9yeTsKQEAg
LTk5LDcgKzk3LDYgQEAgTmV0d29ya1Nlc3Npb246Ok5ldHdvcmtTZXNzaW9uKE5ldHdvcmtQcm9j
ZXNzJiBuZXR3b3JrUHJvY2VzcywgY29uc3QgTmV0d29ya1Nlc3MKICAgICAgICAgICAgIFJFTEVB
U0VfTE9HX0VSUk9SKE5ldHdvcmtDYWNoZSwgIkZhaWxlZCB0byBpbml0aWFsaXplIHRoZSBXZWJL
aXQgbmV0d29yayBkaXNrIGNhY2hlIik7CiAgICAgfQogCi0gICAgU2FuZGJveEV4dGVuc2lvbjo6
Y29uc3VtZVBlcm1hbmVudGx5KHBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5z
aW9uSGFuZGxlKTsKICAgICBtX2FkQ2xpY2tBdHRyaWJ1dGlvbi0+c2V0UGluZ0xvYWRGdW5jdGlv
bihbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0oTmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnMmJiBsb2FkUGFyYW1ldGVycywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAg
ICAgICAgICByZXR1cm47CkBAIC0xMTMsOSArMTEwLDYgQEAgTmV0d29ya1Nlc3Npb246On5OZXR3
b3JrU2Vzc2lvbigpCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBk
ZXN0cm95UmVzb3VyY2VMb2FkU3RhdGlzdGljcygpOwogI2VuZGlmCi0KLSAgICBtX3N0b3JhZ2VN
YW5hZ2VyLT5yZXN1bWUoKTsKLSAgICBtX3N0b3JhZ2VNYW5hZ2VyLT53YWl0VW50aWxUYXNrc0Zp
bmlzaGVkKCk7CiB9CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCmluZGV4IGM0ZTEw
MmU3NzUyN2VlYzFmYWY1MWU3YjA0ZTBlOTU3OTQ2NjdhMWUuLjJiY2UwY2ExNGZlYzc4YmQ1MTM3
YWI0NzVhNTcxMzgwMWEyZjUwZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtTZXNzaW9uLmgKQEAgLTUyLDcgKzUyLDYgQEAgY2xhc3MgQWRDbGlja0F0dHJpYnV0
aW9uTWFuYWdlcjsKIGNsYXNzIE5ldHdvcmtEYXRhVGFzazsKIGNsYXNzIE5ldHdvcmtQcm9jZXNz
OwogY2xhc3MgTmV0d29ya1Jlc291cmNlTG9hZGVyOwotY2xhc3MgU3RvcmFnZU1hbmFnZXI7CiBj
bGFzcyBOZXR3b3JrU29ja2V0Q2hhbm5lbDsKIGNsYXNzIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTsKIGNsYXNzIFdlYlNvY2tldFRhc2s7CkBAIC04MSw4ICs4MCw2IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHJlZ2lzdGVyTmV0d29ya0RhdGFUYXNrKE5ldHdvcmtEYXRhVGFzayYgdGFzaykg
eyBtX2RhdGFUYXNrU2V0LmFkZCgmdGFzayk7IH0KICAgICB2b2lkIHVucmVnaXN0ZXJOZXR3b3Jr
RGF0YVRhc2soTmV0d29ya0RhdGFUYXNrJiB0YXNrKSB7IG1fZGF0YVRhc2tTZXQucmVtb3ZlKCZ0
YXNrKTsgfQogCi0gICAgU3RvcmFnZU1hbmFnZXImIHN0b3JhZ2VNYW5hZ2VyKCkgeyByZXR1cm4g
bV9zdG9yYWdlTWFuYWdlci5nZXQoKTsgfQotCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RB
VElTVElDUykKICAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUqIHJlc291cmNlTG9h
ZFN0YXRpc3RpY3MoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MuZ2V0
KCk7IH0KICAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGJvb2wpOwpA
QCAtMTQxLDcgKzEzOCw2IEBAIHByb3RlY3RlZDoKIAogICAgIFByZWZldGNoQ2FjaGUgbV9wcmVm
ZXRjaENhY2hlOwogCi0gICAgUmVmPFN0b3JhZ2VNYW5hZ2VyPiBtX3N0b3JhZ2VNYW5hZ2VyOwog
I2lmICFBU1NFUlRfRElTQUJMRUQKICAgICBib29sIG1faXNJbnZhbGlkYXRlZCB7IGZhbHNlIH07
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5kZXggMzUxNGNjMGYw
ODNjN2VhYzVkMWQ4NjEzYTBlZmE1ZTcyZTg4Nzc5ZC4uMDE4MzJmZDI1NDc5MWMwNGMyOTc4ZDc3
YmY2ODVlMjkzNTE5ZjRmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAg
LTUwLDcgKzUwLDcgQEAgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMgTmV0d29ya1Nl
c3Npb25DcmVhdGlvblBhcmFtZXRlcnM6OnByaXZhdGVTZXNzaW8KICNpZiBVU0UoQ1VSTCkKICAg
ICAgICAgLCB7IH0sIHsgfQogI2VuZGlmCi0gICAgICAgICwgeyB9LCB7IH0sIGZhbHNlLCBmYWxz
ZSwgeyB9LCB7IH0sIHsgfSwgeyB9LCB7IH0sIHsgfSwgeyB9LCB7IH0sIHsgfQorICAgICAgICAs
IHsgfSwgeyB9LCBmYWxzZSwgZmFsc2UsIHsgfSwgeyB9LCB7IH0sIHsgfSwgeyB9LCB7IH0sIHsg
fQogICAgIH07CiB9CiAKQEAgLTg1LDcgKzg1LDYgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbkNyZWF0
aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBl
bmNvZGVyIDw8IGVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGU7CiAgICAgZW5j
b2RlciA8PCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFudWFsUHJldmFsZW50UmVzb3VyY2U7CiAK
LSAgICBlbmNvZGVyIDw8IGxvY2FsU3RvcmFnZURpcmVjdG9yeSA8PCBsb2NhbFN0b3JhZ2VEaXJl
Y3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgZW5jb2RlciA8PCBuZXR3b3JrQ2FjaGVEaXJlY3Rv
cnkgPDwgbmV0d29ya0NhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogCiAgICAgZW5jb2Rl
ciA8PCBkZXZpY2VNYW5hZ2VtZW50UmVzdHJpY3Rpb25zRW5hYmxlZDsKQEAgLTIwOCwxNiArMjA3
LDYgQEAgT3B0aW9uYWw8TmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM+IE5ldHdvcmtT
ZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWMKICAgICBpZiAoIXJlc291cmNlTG9hZFN0YXRp
c3RpY3NNYW51YWxQcmV2YWxlbnRSZXNvdXJjZSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKIAotICAgIE9wdGlvbmFsPFN0cmluZz4gbG9jYWxTdG9yYWdlRGlyZWN0b3J5OwotICAgIGRl
Y29kZXIgPj4gbG9jYWxTdG9yYWdlRGlyZWN0b3J5OwotICAgIGlmICghbG9jYWxTdG9yYWdlRGly
ZWN0b3J5KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgT3B0aW9uYWw8U2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5k
bGU7Ci0gICAgZGVjb2RlciA+PiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7
Ci0gICAgaWYgKCFsb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KICAgICBPcHRpb25hbDxTdHJpbmc+IG5ldHdvcmtDYWNo
ZURpcmVjdG9yeTsKICAgICBkZWNvZGVyID4+IG5ldHdvcmtDYWNoZURpcmVjdG9yeTsKICAgICBp
ZiAoIW5ldHdvcmtDYWNoZURpcmVjdG9yeSkKQEAgLTI2OSw4ICsyNTgsNiBAQCBPcHRpb25hbDxO
ZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycz4gTmV0d29ya1Nlc3Npb25DcmVhdGlvblBh
cmFtZXRlcnM6OmRlYwogICAgICAgICAsIFdURk1vdmUoKmRldmljZU1hbmFnZW1lbnRSZXN0cmlj
dGlvbnNFbmFibGVkKQogICAgICAgICAsIFdURk1vdmUoKmFsbExvYWRzQmxvY2tlZEJ5RGV2aWNl
TWFuYWdlbWVudFJlc3RyaWN0aW9uc0ZvclRlc3RpbmcpCiAgICAgICAgICwgV1RGTW92ZSgqcmVz
b3VyY2VMb2FkU3RhdGlzdGljc01hbnVhbFByZXZhbGVudFJlc291cmNlKQotICAgICAgICAsIFdU
Rk1vdmUoKmxvY2FsU3RvcmFnZURpcmVjdG9yeSkKLSAgICAgICAgLCBXVEZNb3ZlKCpsb2NhbFN0
b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpCiAgICAgICAgICwgV1RGTW92ZSgqbmV0d29y
a0NhY2hlRGlyZWN0b3J5KQogICAgICAgICAsIFdURk1vdmUoKm5ldHdvcmtDYWNoZURpcmVjdG9y
eUV4dGVuc2lvbkhhbmRsZSkKICAgICB9fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuaApp
bmRleCA3YTQ3NDE0YjUxMWZjZDgwMmJlZTU3MjhiOGM3ZWI0OTM3N2IxMWU2Li5jN2YwNTQ1MjBh
YWM4ZWY2ZGVjNTA0MDlhNGE5NDA3Y2RkODk2NWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1l
dGVycy5oCkBAIC05MSw4ICs5MSw2IEBAIHN0cnVjdCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFy
YW1ldGVycyB7CiAgICAgYm9vbCBhbGxMb2Fkc0Jsb2NrZWRCeURldmljZU1hbmFnZW1lbnRSZXN0
cmljdGlvbnNGb3JUZXN0aW5nIHsgZmFsc2UgfTsKICAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFudWFsUHJldmFsZW50UmVzb3VyY2UgeyB9Owog
Ci0gICAgU3RyaW5nIGxvY2FsU3RvcmFnZURpcmVjdG9yeTsKLSAgICBTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGUgbG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIFN0cmlu
ZyBuZXR3b3JrQ2FjaGVEaXJlY3Rvcnk7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIG5l
dHdvcmtDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2Uu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFn
ZURhdGFiYXNlLmNwcAppbmRleCBiZjUxNTc4ZmIxNDdkZGRjODdlNjZkOTBhNWVkZDAyYTRjZDcy
NjkzLi44ZjQ3NjNjOWRjODZhYjRhNDJkOTQ2ZjI2ZGIyOGJjYzY5MDI5Y2JlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0
YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9M
b2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAKQEAgLTI1OSw3ICsyNTksNiBAQCB2b2lkIExvY2FsU3Rv
cmFnZURhdGFiYXNlOjp1cGRhdGVEYXRhYmFzZSgpCiAgICAgaWYgKG1faXNDbG9zZWQpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIEFTU0VSVChtX2RpZFNjaGVkdWxlRGF0YWJhc2VVcGRhdGUpOwog
ICAgIG1fZGlkU2NoZWR1bGVEYXRhYmFzZVVwZGF0ZSA9IGZhbHNlOwogCiAgICAgSGFzaE1hcDxT
dHJpbmcsIFN0cmluZz4gY2hhbmdlZEl0ZW1zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuaApp
bmRleCA0ZDY4NzZiMTcxM2ZlMTQ3YzllZTcxYWU5YjZkNjk0NjIzOTdhZWZkLi44Y2ZiMjRiMjFm
M2EwYTQyNmJkYjIyZDQ1Y2FiNDIwOTUyM2VjODEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJh
c2UuaApAQCAtNTUsNiArNTUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVJdGVtKGNvbnN0
IFN0cmluZyYga2V5KTsKICAgICB2b2lkIGNsZWFyKCk7CiAKKyAgICB2b2lkIHVwZGF0ZURhdGFi
YXNlKCk7CisKICAgICAvLyBXaWxsIGJsb2NrIHVudGlsIGFsbCBwZW5kaW5nIGNoYW5nZXMgaGF2
ZSBiZWVuIHdyaXR0ZW4gdG8gZGlzay4KICAgICB2b2lkIGNsb3NlKCk7CiAKQEAgLTczLDcgKzc1
LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGl0ZW1EaWRDaGFuZ2UoY29uc3QgU3RyaW5nJiBrZXks
IGNvbnN0IFN0cmluZyYgdmFsdWUpOwogCiAgICAgdm9pZCBzY2hlZHVsZURhdGFiYXNlVXBkYXRl
KCk7Ci0gICAgdm9pZCB1cGRhdGVEYXRhYmFzZSgpOwogICAgIHZvaWQgdXBkYXRlRGF0YWJhc2VX
aXRoQ2hhbmdlZEl0ZW1zKGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+Jik7CiAKICAgICBi
b29sIGRhdGFiYXNlSXNFbXB0eSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VU
cmFja2VyLmNwcAppbmRleCAwN2E2MzNmYmZlOWJlNTllZGJlZDUzOWM5NmUxOWU0YjFiYmQyNTgz
Li42NzMyNzA5NDMyZjNhNmU3NTI1MTE3ZmVlZTc5ZmI1YzhhNjE2OTI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJh
c2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3Jh
Z2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNwcApAQCAtMzksMjQgKzM5LDE3IEBACiBu
YW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1SZWY8TG9jYWxT
dG9yYWdlRGF0YWJhc2VUcmFja2VyPiBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OmNyZWF0
ZShSZWY8V29ya1F1ZXVlPiYmIHF1ZXVlLCBTdHJpbmcmJiBsb2NhbFN0b3JhZ2VEaXJlY3Rvcnkp
CitSZWY8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyPiBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRy
YWNrZXI6OmNyZWF0ZShTdHJpbmcmJiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpCiB7Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyKFdURk1vdmUocXVl
dWUpLCBXVEZNb3ZlKGxvY2FsU3RvcmFnZURpcmVjdG9yeSkpKTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIoV1RGTW92ZShsb2NhbFN0b3JhZ2VE
aXJlY3RvcnkpKSk7CiB9CiAKLUxvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6TG9jYWxTdG9y
YWdlRGF0YWJhc2VUcmFja2VyKFJlZjxXb3JrUXVldWU+JiYgcXVldWUsIFN0cmluZyYmIGxvY2Fs
U3RvcmFnZURpcmVjdG9yeSkKLSAgICA6IG1fcXVldWUoV1RGTW92ZShxdWV1ZSkpCi0gICAgLCBt
X2xvY2FsU3RvcmFnZURpcmVjdG9yeShXVEZNb3ZlKGxvY2FsU3RvcmFnZURpcmVjdG9yeSkpCitM
b2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OkxvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcihT
dHJpbmcmJiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpCisgICAgOiBtX2xvY2FsU3RvcmFnZURpcmVj
dG9yeShXVEZNb3ZlKGxvY2FsU3RvcmFnZURpcmVjdG9yeSkpCiB7Ci0gICAgQVNTRVJUKFJ1bkxv
b3A6OmlzTWFpbigpKTsKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIC8v
IE1ha2Ugc3VyZSB0aGUgZW5jb2RpbmcgaXMgaW5pdGlhbGl6ZWQgYmVmb3JlIHdlIHN0YXJ0IGRp
c3BhdGNoaW5nIHRoaW5ncyB0byB0aGUgcXVldWUuCi0gICAgVVRGOEVuY29kaW5nKCk7Ci0KLSAg
ICBtX3F1ZXVlLT5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSgpIG11
dGFibGUgewotICAgICAgICAvLyBEZWxldGUgbGVnYWN5IHN0b3JhZ2VUcmFja2VyIGRhdGFiYXNl
IGZpbGUuCi0gICAgICAgIFNRTGl0ZUZpbGVTeXN0ZW06OmRlbGV0ZURhdGFiYXNlRmlsZShwcm90
ZWN0ZWRUaGlzLT5kYXRhYmFzZVBhdGgoIlN0b3JhZ2VUcmFja2VyLmRiIikpOwotICAgIH0pOwor
ICAgIFNRTGl0ZUZpbGVTeXN0ZW06OmRlbGV0ZURhdGFiYXNlRmlsZShkYXRhYmFzZVBhdGgoIlN0
b3JhZ2VUcmFja2VyLmRiIikpOwogfQogCiBTdHJpbmcgTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFj
a2VyOjpsb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdApAQCAtNjYsNyArNTksNyBAQCBTdHJp
bmcgTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpsb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSBj
b25zdAogCiBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6On5Mb2NhbFN0b3JhZ2VEYXRhYmFz
ZVRyYWNrZXIoKQogewotICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgQVNTRVJU
KCFSdW5Mb29wOjppc01haW4oKSk7CiB9CiAKIFN0cmluZyBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRy
YWNrZXI6OmRhdGFiYXNlUGF0aChjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3Jp
Z2luKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJT
dG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5oCmluZGV4
IDVkOWQyYzJhNGM3ZGEwMTNmNjBmMTFlYjQzNmYxOGU0NzU4MDIwOTEuLjg1YjQ5ZWUyNWI4YWNj
YzlkYWY5OTkzNGRlNzg4YzIzNWZkNWFiZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0
YWJhc2VUcmFja2VyLmgKQEAgLTM1LDkgKzM1LDkgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
LWNsYXNzIExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIsIFdURjo6RGVzdHJ1Y3Rpb25UaHJl
YWQ6Ok1haW5SdW5Mb29wPiB7CitjbGFzcyBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIgOiBw
dWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyPiB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI+IGNy
ZWF0ZShSZWY8V29ya1F1ZXVlPiYmLCBTdHJpbmcmJiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpOwor
ICAgIHN0YXRpYyBSZWY8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyPiBjcmVhdGUoU3RyaW5n
JiYgbG9jYWxTdG9yYWdlRGlyZWN0b3J5KTsKICAgICB+TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFj
a2VyKCk7CiAKICAgICBTdHJpbmcgZGF0YWJhc2VQYXRoKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYpIGNvbnN0OwpAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgVmVjdG9y
PE9yaWdpbkRldGFpbHM+IG9yaWdpbkRldGFpbHMoKTsKIAogcHJpdmF0ZToKLSAgICBMb2NhbFN0
b3JhZ2VEYXRhYmFzZVRyYWNrZXIoUmVmPFdvcmtRdWV1ZT4mJiwgU3RyaW5nJiYgbG9jYWxTdG9y
YWdlRGlyZWN0b3J5KTsKKyAgICBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIoU3RyaW5nJiYg
bG9jYWxTdG9yYWdlRGlyZWN0b3J5KTsKIAogICAgIFN0cmluZyBkYXRhYmFzZVBhdGgoY29uc3Qg
U3RyaW5nJiBmaWxlbmFtZSkgY29uc3Q7CiAgICAgU3RyaW5nIGxvY2FsU3RvcmFnZURpcmVjdG9y
eSgpIGNvbnN0OwpAQCAtNzMsOCArNzMsNiBAQCBwcml2YXRlOgogICAgICAgICBDcmVhdGVJZk5v
bkV4aXN0ZW50LAogICAgICAgICBTa2lwSWZOb25FeGlzdGVudAogICAgIH07Ci0KLSAgICBSZWY8
V29ya1F1ZXVlPiBtX3F1ZXVlOwogICAgIAogICAgIC8vIEl0IGlzIG5vdCBzYWZlIHRvIHVzZSB0
aGlzIG1lbWJlciBmcm9tIGEgYmFja2dyb3VuZCB0aHJlYWQsIGNhbGwgbG9jYWxTdG9yYWdlRGly
ZWN0b3J5KCkgaW5zdGVhZC4KICAgICBjb25zdCBTdHJpbmcgbV9sb2NhbFN0b3JhZ2VEaXJlY3Rv
cnk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2Uv
TG9jYWxTdG9yYWdlTmFtZXNwYWNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
V2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VOYW1lc3BhY2UuY3BwCmluZGV4IDU0ZGM3OTk0MjhjZGE4
YjMwNzA2NWQ5YTdkNjdlNzBiMzgyYmI0NDIuLjNhZWM2NjhkZjEwYmM1YzUxZWUzNjRmOWZlZmVk
YzUwZGQ0OTQ0MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2Vi
U3RvcmFnZS9Mb2NhbFN0b3JhZ2VOYW1lc3BhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VOYW1lc3BhY2UuY3BwCkBAIC00Nyw3
ICs0Nyw3IEBAIExvY2FsU3RvcmFnZU5hbWVzcGFjZTo6fkxvY2FsU3RvcmFnZU5hbWVzcGFjZSgp
CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiB9CiAKLWF1dG8gTG9jYWxTdG9yYWdl
TmFtZXNwYWNlOjpnZXRPckNyZWF0ZVN0b3JhZ2VBcmVhKFNlY3VyaXR5T3JpZ2luRGF0YSYmIHNl
Y3VyaXR5T3JpZ2luLCBJc0VwaGVtZXJhbCBpc0VwaGVtZXJhbCkgLT4gUmVmPFN0b3JhZ2VBcmVh
PgorUmVmPFN0b3JhZ2VBcmVhPiBMb2NhbFN0b3JhZ2VOYW1lc3BhY2U6OmdldE9yQ3JlYXRlU3Rv
cmFnZUFyZWEoU2VjdXJpdHlPcmlnaW5EYXRhJiYgc2VjdXJpdHlPcmlnaW4sIElzRXBoZW1lcmFs
IGlzRXBoZW1lcmFsKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIHJl
dHVybiAqbV9zdG9yYWdlQXJlYU1hcC5lbnN1cmUoc2VjdXJpdHlPcmlnaW4sIFsmXSgpIG11dGFi
bGUgewpAQCAtODEsMTEgKzgxLDQgQEAgVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4gTG9jYWxT
dG9yYWdlTmFtZXNwYWNlOjplcGhlbWVyYWxPcmlnaW5zKCkgY29uc3QKICAgICByZXR1cm4gb3Jp
Z2luczsKIH0KIAotdm9pZCBMb2NhbFN0b3JhZ2VOYW1lc3BhY2U6OmNsb25lVG8oTG9jYWxTdG9y
YWdlTmFtZXNwYWNlJiBuZXdMb2NhbFN0b3JhZ2VOYW1lc3BhY2UpCi17Ci0gICAgQVNTRVJUKCFS
dW5Mb29wOjppc01haW4oKSk7Ci0gICAgZm9yIChhdXRvJiBwYWlyIDogbV9zdG9yYWdlQXJlYU1h
cCkKLSAgICAgICAgbmV3TG9jYWxTdG9yYWdlTmFtZXNwYWNlLm1fc3RvcmFnZUFyZWFNYXAuYWRk
KHBhaXIua2V5LCBwYWlyLnZhbHVlLT5jbG9uZSgpKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2Uv
TG9jYWxTdG9yYWdlTmFtZXNwYWNlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dl
YlN0b3JhZ2UvTG9jYWxTdG9yYWdlTmFtZXNwYWNlLmgKaW5kZXggNDcxOTBjYzZjYjQ1MDM5NzJj
MjcyZDBjY2Y0OTY3NzhhOTA5Yzg4Zi4uOWE3NmUxYzYzOGRiNDMyNjBmZjgyNDQ1NjdjOTRlN2Qw
M2IzYmRlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9y
YWdlL0xvY2FsU3RvcmFnZU5hbWVzcGFjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VOYW1lc3BhY2UuaApAQCAtNTQsNyArNTQsNiBA
QCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhckFsbFN0b3JhZ2VBcmVhcygpOwogCiAgICAgVmVjdG9y
PFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gZXBoZW1lcmFsT3JpZ2lucygpIGNvbnN0Owot
ICAgIHZvaWQgY2xvbmVUbyhMb2NhbFN0b3JhZ2VOYW1lc3BhY2UmIG5ld0xvY2FsU3RvcmFnZU5h
bWVzcGFjZSk7CiAKIHByaXZhdGU6CiAgICAgTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFN0b3JhZ2VN
YW5hZ2VyJiwgdWludDY0X3Qgc3RvcmFnZU1hbmFnZXJJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2Uu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1Nlc3Npb25TdG9y
YWdlTmFtZXNwYWNlLmNwcAppbmRleCA1ODBhOGU2MmVhZjA0NGU2YzQ1NTY0MzJhNjAxNjlmMjFm
ZDcxNmMxLi5kZGY4MjEyYTQ5YzM3ZDVjZjdlYTNiODJjMTIyYjJlZGViYjdkZDdhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU2Vzc2lvblN0b3Jh
Z2VOYW1lc3BhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3Rv
cmFnZS9TZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS5jcHAKQEAgLTQzLDIwICs0Myw3IEBAIFNlc3Np
b25TdG9yYWdlTmFtZXNwYWNlOjp+U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoKQogICAgIEFTU0VS
VCghUnVuTG9vcDo6aXNNYWluKCkpOwogfQogCi12b2lkIFNlc3Npb25TdG9yYWdlTmFtZXNwYWNl
OjphZGRBbGxvd2VkQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGFsbG93ZWRD
b25uZWN0aW9uKQotewotICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIG1fYWxs
b3dlZENvbm5lY3Rpb25zLmFkZChhbGxvd2VkQ29ubmVjdGlvbik7Ci19Ci0KLQotdm9pZCBTZXNz
aW9uU3RvcmFnZU5hbWVzcGFjZTo6cmVtb3ZlQWxsb3dlZENvbm5lY3Rpb24oSVBDOjpDb25uZWN0
aW9uOjpVbmlxdWVJRCBhbGxvd2VkQ29ubmVjdGlvbikKLXsKLSAgICBBU1NFUlQoIVJ1bkxvb3A6
OmlzTWFpbigpKTsKLSAgICBBU1NFUlQobV9hbGxvd2VkQ29ubmVjdGlvbnMuY29udGFpbnMoYWxs
b3dlZENvbm5lY3Rpb24pKTsKLSAgICBtX2FsbG93ZWRDb25uZWN0aW9ucy5yZW1vdmUoYWxsb3dl
ZENvbm5lY3Rpb24pOwotfQotYXV0byBTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZTo6Z2V0T3JDcmVh
dGVTdG9yYWdlQXJlYShTZWN1cml0eU9yaWdpbkRhdGEmJiBzZWN1cml0eU9yaWdpbikgLT4gUmVm
PFN0b3JhZ2VBcmVhPgorUmVmPFN0b3JhZ2VBcmVhPiBTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZTo6
Z2V0T3JDcmVhdGVTdG9yYWdlQXJlYShTZWN1cml0eU9yaWdpbkRhdGEmJiBzZWN1cml0eU9yaWdp
bikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICByZXR1cm4gKm1fc3Rv
cmFnZUFyZWFNYXAuZW5zdXJlKHNlY3VyaXR5T3JpZ2luLCBbdGhpcywgJnNlY3VyaXR5T3JpZ2lu
XSgpIG11dGFibGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9X
ZWJTdG9yYWdlL1Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1dlYlN0b3JhZ2UvU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UuaAppbmRleCA3MjA3
NDhmNjc4NjgwNmIwZWMxMGQyYjBjMjdjZWYwMzJhMmY1MzBmLi4xOGYwZjA5YjgwMjExODRhMDQ4
ZDNmNTM4ZmNlZTQ2M2MzOTM0N2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1dlYlN0b3JhZ2UvU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2Uu
aApAQCAtNDUsMTAgKzQ1LDYgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Qg
eyByZXR1cm4gbV9zdG9yYWdlQXJlYU1hcC5pc0VtcHR5KCk7IH0KIAotICAgIGNvbnN0IEhhc2hT
ZXQ8SVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRD4mIGFsbG93ZWRDb25uZWN0aW9ucygpIGNvbnN0
IHsgcmV0dXJuIG1fYWxsb3dlZENvbm5lY3Rpb25zOyB9Ci0gICAgdm9pZCBhZGRBbGxvd2VkQ29u
bmVjdGlvbihJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEKTsKLSAgICB2b2lkIHJlbW92ZUFsbG93
ZWRDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQpOwotCiAgICAgUmVmPFN0b3Jh
Z2VBcmVhPiBnZXRPckNyZWF0ZVN0b3JhZ2VBcmVhKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YSYmKTsKIAogICAgIHZvaWQgY2xvbmVUbyhTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSYgbmV3U2Vz
c2lvblN0b3JhZ2VOYW1lc3BhY2UpOwpAQCAtNjEsNyArNTcsNiBAQCBwdWJsaWM6CiBwcml2YXRl
OgogICAgIGV4cGxpY2l0IFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkIHF1b3RhSW5C
eXRlcyk7CiAKLSAgICBIYXNoU2V0PElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQ+IG1fYWxsb3dl
ZENvbm5lY3Rpb25zOwogICAgIHVuc2lnbmVkIG1fcXVvdGFJbkJ5dGVzIHsgMCB9OwogCiAgICAg
SGFzaE1hcDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEsIFJlZlB0cjxTdG9yYWdlQXJlYT4+
IG1fc3RvcmFnZUFyZWFNYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWEuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhLmNwcAppbmRleCAzNDk0MzFmZWE1NmM0N2FiODE0
NjBjYjgzZjU1NmU3MjRkY2EyZDRkLi4yZDEyNTgzNWNiYzhiNTIyYzMzYWFlNTgwMTRkYmZjYTBh
Njg5MTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3Jh
Z2UvU3RvcmFnZUFyZWEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2Vi
U3RvcmFnZS9TdG9yYWdlQXJlYS5jcHAKQEAgLTM2LDExICszNiwxOCBAQCBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKK3N0YXRpYyB1aW50NjRfdCBnZW5l
cmF0ZVN0b3JhZ2VBcmVhSWRlbnRpZmllcigpCit7CisgICAgc3RhdGljIHVpbnQ2NF90IGlkZW50
aWZpZXI7CisgICAgcmV0dXJuICsraWRlbnRpZmllcjsKK30KKwogU3RvcmFnZUFyZWE6OlN0b3Jh
Z2VBcmVhKExvY2FsU3RvcmFnZU5hbWVzcGFjZSogbG9jYWxTdG9yYWdlTmFtZXNwYWNlLCBjb25z
dCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luLCB1bnNpZ25lZCBxdW90YUluQnl0
ZXMpCiAgICAgOiBtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZShtYWtlV2Vha1B0cihsb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UpKQogICAgICwgbV9zZWN1cml0eU9yaWdpbihzZWN1cml0eU9yaWdpbikKICAg
ICAsIG1fcXVvdGFJbkJ5dGVzKHF1b3RhSW5CeXRlcykKICAgICAsIG1fc3RvcmFnZU1hcChTdG9y
YWdlTWFwOjpjcmVhdGUobV9xdW90YUluQnl0ZXMpKQorICAgICwgbV9pZGVudGlmaWVyKGdlbmVy
YXRlU3RvcmFnZUFyZWFJZGVudGlmaWVyKCkpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01h
aW4oKSk7CiB9CkBAIC00OCwzMCArNTUsMzIgQEAgU3RvcmFnZUFyZWE6OlN0b3JhZ2VBcmVhKExv
Y2FsU3RvcmFnZU5hbWVzcGFjZSogbG9jYWxTdG9yYWdlTmFtZXNwYWNlLCBjb25zdCBTZWMKIFN0
b3JhZ2VBcmVhOjp+U3RvcmFnZUFyZWEoKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWlu
KCkpOwotICAgIEFTU0VSVChtX2V2ZW50TGlzdGVuZXJzLmlzRW1wdHkoKSk7CiAKICAgICBpZiAo
bV9sb2NhbFN0b3JhZ2VEYXRhYmFzZSkKICAgICAgICAgbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZS0+
Y2xvc2UoKTsKIH0KIAotdm9pZCBTdG9yYWdlQXJlYTo6YWRkTGlzdGVuZXIoSVBDOjpDb25uZWN0
aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uSUQsIHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCkKK3ZvaWQg
U3RvcmFnZUFyZWE6OmFkZExpc3RlbmVyKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgY29ubmVj
dGlvbklEKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIEFTU0VSVCgh
bV9ldmVudExpc3RlbmVycy5jb250YWlucyhzdGQ6Om1ha2VfcGFpcihjb25uZWN0aW9uSUQsIHN0
b3JhZ2VNYXBJRCkpKTsKLSAgICBtX2V2ZW50TGlzdGVuZXJzLmFkZChzdGQ6Om1ha2VfcGFpcihj
b25uZWN0aW9uSUQsIHN0b3JhZ2VNYXBJRCkpOworICAgIEFTU0VSVCghbV9ldmVudExpc3RlbmVy
cy5jb250YWlucyhjb25uZWN0aW9uSUQpKTsKKworICAgIGlmIChtX2V2ZW50TGlzdGVuZXJzLmlz
RW1wdHkoKSAmJiAhaXNFcGhlbWVyYWwoKSkKKyAgICAgICAgb3BlbkRhdGFiYXNlQW5kSW1wb3J0
SXRlbXNJZk5lZWRlZCgpOworCisgICAgbV9ldmVudExpc3RlbmVycy5hZGQoY29ubmVjdGlvbklE
KTsKIH0KIAotdm9pZCBTdG9yYWdlQXJlYTo6cmVtb3ZlTGlzdGVuZXIoSVBDOjpDb25uZWN0aW9u
OjpVbmlxdWVJRCBjb25uZWN0aW9uSUQsIHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCkKK3ZvaWQgU3Rv
cmFnZUFyZWE6OnJlbW92ZUxpc3RlbmVyKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgY29ubmVj
dGlvbklEKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIEFTU0VSVChp
c0VwaGVtZXJhbCgpIHx8IG1fZXZlbnRMaXN0ZW5lcnMuY29udGFpbnMoc3RkOjptYWtlX3BhaXIo
Y29ubmVjdGlvbklELCBzdG9yYWdlTWFwSUQpKSk7Ci0gICAgbV9ldmVudExpc3RlbmVycy5yZW1v
dmUoc3RkOjptYWtlX3BhaXIoY29ubmVjdGlvbklELCBzdG9yYWdlTWFwSUQpKTsKKyAgICBtX2V2
ZW50TGlzdGVuZXJzLnJlbW92ZShjb25uZWN0aW9uSUQpOwogfQogCi1ib29sIFN0b3JhZ2VBcmVh
OjpoYXNMaXN0ZW5lcihJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGNvbm5lY3Rpb25JRCwgdWlu
dDY0X3Qgc3RvcmFnZU1hcElEKSBjb25zdAorYm9vbCBTdG9yYWdlQXJlYTo6aGFzTGlzdGVuZXIo
SVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uSUQpIGNvbnN0CiB7CiAgICAgQVNT
RVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgcmV0dXJuIG1fZXZlbnRMaXN0ZW5lcnMuY29u
dGFpbnMoc3RkOjptYWtlX3BhaXIoY29ubmVjdGlvbklELCBzdG9yYWdlTWFwSUQpKTsKKyAgICBy
ZXR1cm4gbV9ldmVudExpc3RlbmVycy5jb250YWlucyhjb25uZWN0aW9uSUQpOwogfQogCiBSZWY8
U3RvcmFnZUFyZWE+IFN0b3JhZ2VBcmVhOjpjbG9uZSgpIGNvbnN0CkBAIC0xMDUsMjUgKzExNCw2
IEBAIHZvaWQgU3RvcmFnZUFyZWE6OnNldEl0ZW0oSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBz
b3VyY2VDb25uZWN0aW9uLCB1aW50NjRfdCBzCiAgICAgZGlzcGF0Y2hFdmVudHMoc291cmNlQ29u
bmVjdGlvbiwgc291cmNlU3RvcmFnZUFyZWFJRCwga2V5LCBvbGRWYWx1ZSwgdmFsdWUsIHVybFN0
cmluZyk7CiB9CiAKLXZvaWQgU3RvcmFnZUFyZWE6OnNldEl0ZW1zKGNvbnN0IEhhc2hNYXA8U3Ry
aW5nLCBTdHJpbmc+JiBpdGVtcykKLXsKLSAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsK
LSAgICAvLyBJbXBvcnQgaXRlbXMgZnJvbSB3ZWIgcHJvY2VzcyBpZiBpdGVtcyBhcmUgbm90IHN0
b3JlZCBvbiBkaXNrLgotICAgIGlmICghaXNFcGhlbWVyYWwoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgZm9yIChhdXRvJiBpdGVtIDogaXRlbXMpIHsKLSAgICAgICAgU3RyaW5nIG9sZFZhbHVl
OwotICAgICAgICBib29sIHF1b3RhRXhjZXB0aW9uOwotICAgICAgICBhdXRvIG5ld1N0b3JhZ2VN
YXAgPSBtX3N0b3JhZ2VNYXAtPnNldEl0ZW0oaXRlbS5rZXksIGl0ZW0udmFsdWUsIG9sZFZhbHVl
LCBxdW90YUV4Y2VwdGlvbik7Ci0gICAgICAgIGlmIChuZXdTdG9yYWdlTWFwKQotICAgICAgICAg
ICAgbV9zdG9yYWdlTWFwID0gV1RGTW92ZShuZXdTdG9yYWdlTWFwKTsKLSAgICAgICAgCi0gICAg
ICAgIGlmIChxdW90YUV4Y2VwdGlvbikKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9Ci19Ci0K
IHZvaWQgU3RvcmFnZUFyZWE6OnJlbW92ZUl0ZW0oSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBz
b3VyY2VDb25uZWN0aW9uLCB1aW50NjRfdCBzb3VyY2VTdG9yYWdlQXJlYUlELCBjb25zdCBTdHJp
bmcmIGtleSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29w
Ojppc01haW4oKSk7CkBAIC0xNzgsNyArMTY4LDcgQEAgdm9pZCBTdG9yYWdlQXJlYTo6Y2xlYXIo
KQogICAgIH0KIAogICAgIGZvciAoYXV0byBpdCA9IG1fZXZlbnRMaXN0ZW5lcnMuYmVnaW4oKSwg
ZW5kID0gbV9ldmVudExpc3RlbmVycy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAg
IFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY29ubmVjdGlvbklEID0gaXQtPmZpcnN0LCBkZXN0
aW5hdGlvblN0b3JhZ2VBcmVhSUQgPSBpdC0+c2Vjb25kXSB7CisgICAgICAgIFJ1bkxvb3A6Om1h
aW4oKS5kaXNwYXRjaChbY29ubmVjdGlvbklEID0gKml0LCBkZXN0aW5hdGlvblN0b3JhZ2VBcmVh
SUQgPSBtX2lkZW50aWZpZXJdIHsKICAgICAgICAgICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0g
SVBDOjpDb25uZWN0aW9uOjpjb25uZWN0aW9uKGNvbm5lY3Rpb25JRCkpCiAgICAgICAgICAgICAg
ICAgY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U3RvcmFnZUFyZWFNYXA6OkNsZWFyQ2FjaGUo
KSwgZGVzdGluYXRpb25TdG9yYWdlQXJlYUlEKTsKICAgICAgICAgfSk7CkBAIC0xOTIsOSArMTgy
LDEwIEBAIHZvaWQgU3RvcmFnZUFyZWE6Om9wZW5EYXRhYmFzZUFuZEltcG9ydEl0ZW1zSWZOZWVk
ZWQoKSBjb25zdAogICAgICAgICByZXR1cm47CiAKICAgICBBU1NFUlQobV9sb2NhbFN0b3JhZ2VO
YW1lc3BhY2UtPnN0b3JhZ2VNYW5hZ2VyKCktPmxvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcigp
KTsKKyAgICBBU1NFUlQobV9xdWV1ZSk7CiAgICAgLy8gV2Ugb3BlbiB0aGUgZGF0YWJhc2UgaGVy
ZSBldmVuIGlmIHdlJ3ZlIGFscmVhZHkgaW1wb3J0ZWQgb3VyIGl0ZW1zIHRvIGVuc3VyZSB0aGF0
IHRoZSBkYXRhYmFzZSBpcyBvcGVuIGlmIHdlIG5lZWQgdG8gd3JpdGUgdG8gaXQuCiAgICAgaWYg
KCFtX2xvY2FsU3RvcmFnZURhdGFiYXNlKQotICAgICAgICBtX2xvY2FsU3RvcmFnZURhdGFiYXNl
ID0gTG9jYWxTdG9yYWdlRGF0YWJhc2U6OmNyZWF0ZShtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZS0+
c3RvcmFnZU1hbmFnZXIoKS0+d29ya1F1ZXVlKCksICptX2xvY2FsU3RvcmFnZU5hbWVzcGFjZS0+
c3RvcmFnZU1hbmFnZXIoKS0+bG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyKCksIG1fc2VjdXJp
dHlPcmlnaW4pOworICAgICAgICBtX2xvY2FsU3RvcmFnZURhdGFiYXNlID0gTG9jYWxTdG9yYWdl
RGF0YWJhc2U6OmNyZWF0ZSgqbV9xdWV1ZSwgKm1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlLT5zdG9y
YWdlTWFuYWdlcigpLT5sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIoKSwgbV9zZWN1cml0eU9y
aWdpbik7CiAKICAgICBpZiAobV9kaWRJbXBvcnRJdGVtc0Zyb21EYXRhYmFzZSkKICAgICAgICAg
cmV0dXJuOwpAQCAtMjA3LDEzICsxOTgsMjEgQEAgdm9pZCBTdG9yYWdlQXJlYTo6ZGlzcGF0Y2hF
dmVudHMoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBzb3VyY2VDb25uZWN0aW9uLCB1aW4KIHsK
ICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBmb3IgKGF1dG8gaXQgPSBtX2V2
ZW50TGlzdGVuZXJzLmJlZ2luKCksIGVuZCA9IG1fZXZlbnRMaXN0ZW5lcnMuZW5kKCk7IGl0ICE9
IGVuZDsgKytpdCkgewotICAgICAgICBzb3VyY2VTdG9yYWdlQXJlYUlEID0gaXQtPmZpcnN0ID09
IHNvdXJjZUNvbm5lY3Rpb24gPyBzb3VyY2VTdG9yYWdlQXJlYUlEIDogMDsKKyAgICAgICAgc291
cmNlU3RvcmFnZUFyZWFJRCA9ICppdCA9PSBzb3VyY2VDb25uZWN0aW9uID8gc291cmNlU3RvcmFn
ZUFyZWFJRCA6IDA7CiAKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb25uZWN0
aW9uSUQgPSBpdC0+Zmlyc3QsIHNvdXJjZVN0b3JhZ2VBcmVhSUQsIGRlc3RpbmF0aW9uU3RvcmFn
ZUFyZWFJRCA9IGl0LT5zZWNvbmQsIGtleSA9IGtleS5pc29sYXRlZENvcHkoKSwgb2xkVmFsdWUg
PSBvbGRWYWx1ZS5pc29sYXRlZENvcHkoKSwgbmV3VmFsdWUgPSBuZXdWYWx1ZS5pc29sYXRlZENv
cHkoKSwgdXJsU3RyaW5nID0gdXJsU3RyaW5nLmlzb2xhdGVkQ29weSgpXSB7CisgICAgICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY29ubmVjdGlvbklEID0gKml0LCBzb3VyY2VTdG9yYWdl
QXJlYUlELCBkZXN0aW5hdGlvblN0b3JhZ2VBcmVhSUQgPSBtX2lkZW50aWZpZXIsIGtleSA9IGtl
eS5pc29sYXRlZENvcHkoKSwgb2xkVmFsdWUgPSBvbGRWYWx1ZS5pc29sYXRlZENvcHkoKSwgbmV3
VmFsdWUgPSBuZXdWYWx1ZS5pc29sYXRlZENvcHkoKSwgdXJsU3RyaW5nID0gdXJsU3RyaW5nLmlz
b2xhdGVkQ29weSgpXSB7CiAgICAgICAgICAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IElQQzo6
Q29ubmVjdGlvbjo6Y29ubmVjdGlvbihjb25uZWN0aW9uSUQpKQogICAgICAgICAgICAgICAgIGNv
bm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VBcmVhTWFwOjpEaXNwYXRjaFN0b3JhZ2VF
dmVudChzb3VyY2VTdG9yYWdlQXJlYUlELCBrZXksIG9sZFZhbHVlLCBuZXdWYWx1ZSwgdXJsU3Ry
aW5nKSwgZGVzdGluYXRpb25TdG9yYWdlQXJlYUlEKTsKICAgICAgICAgfSk7CiAgICAgfQogfQog
Cit2b2lkIFN0b3JhZ2VBcmVhOjpzeW5jVG9EYXRhYmFzZSgpCit7CisgICAgaWYgKCFtX2xvY2Fs
U3RvcmFnZURhdGFiYXNlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2xvY2FsU3RvcmFnZURh
dGFiYXNlLT51cGRhdGVEYXRhYmFzZSgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdl
QXJlYS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VB
cmVhLmgKaW5kZXggMDAwMTA3NTRjN2Y0MWEyNjkyZTgzMTdjNTY3OTg1Y2E3MDAyMjc3NS4uNGQz
M2M0YTI2M2ViMTY1Y2M2NjgzMTVmOWRmOTBkNmEyMDBmMDFmYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhLmgKQEAgLTQ5
LDE1ICs0OSwxNSBAQCBwdWJsaWM6CiAgICAgflN0b3JhZ2VBcmVhKCk7CiAKICAgICBjb25zdCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKCkgY29uc3QgeyByZXR1
cm4gbV9zZWN1cml0eU9yaWdpbjsgfQorICAgIHVpbnQ2NF90IGlkZW50aWZpZXIoKSB7IHJldHVy
biBtX2lkZW50aWZpZXI7IH0KIAotICAgIHZvaWQgYWRkTGlzdGVuZXIoSVBDOjpDb25uZWN0aW9u
OjpVbmlxdWVJRCwgdWludDY0X3Qgc3RvcmFnZU1hcElEKTsKLSAgICB2b2lkIHJlbW92ZUxpc3Rl
bmVyKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCk7Ci0g
ICAgYm9vbCBoYXNMaXN0ZW5lcihJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCB1aW50NjRfdCBz
dG9yYWdlTWFwSUQpIGNvbnN0OworICAgIHZvaWQgYWRkTGlzdGVuZXIoSVBDOjpDb25uZWN0aW9u
OjpVbmlxdWVJRCk7CisgICAgdm9pZCByZW1vdmVMaXN0ZW5lcihJUEM6OkNvbm5lY3Rpb246OlVu
aXF1ZUlEKTsKKyAgICBib29sIGhhc0xpc3RlbmVyKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQg
Y29ubmVjdGlvbklEKSBjb25zdDsKIAogICAgIFJlZjxTdG9yYWdlQXJlYT4gY2xvbmUoKSBjb25z
dDsKIAogICAgIHZvaWQgc2V0SXRlbShJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIHNvdXJjZUNv
bm5lY3Rpb24sIHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIGNvbnN0IFN0cmluZyYga2V5
LCBjb25zdCBTdHJpbmcmIHZhbHVlLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZywgYm9vbCYgcXVv
dGFFeGNlcHRpb24pOwotICAgIHZvaWQgc2V0SXRlbXMoY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0
cmluZz4mKTsKICAgICB2b2lkIHJlbW92ZUl0ZW0oSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBz
b3VyY2VDb25uZWN0aW9uLCB1aW50NjRfdCBzb3VyY2VTdG9yYWdlQXJlYUlELCBjb25zdCBTdHJp
bmcmIGtleSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpOwogICAgIHZvaWQgY2xlYXIoSVBDOjpD
b25uZWN0aW9uOjpVbmlxdWVJRCBzb3VyY2VDb25uZWN0aW9uLCB1aW50NjRfdCBzb3VyY2VTdG9y
YWdlQXJlYUlELCBjb25zdCBTdHJpbmcmIHVybFN0cmluZyk7CiAKQEAgLTY4LDYgKzY4LDEwIEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgb3BlbkRhdGFiYXNlQW5kSW1wb3J0SXRlbXNJZk5lZWRlZCgp
IGNvbnN0OwogCisgICAgdm9pZCBzZXRXb3JrUXVldWUoUmVmUHRyPFdvcmtRdWV1ZT4mJiBxdWV1
ZSkgeyBtX3F1ZXVlID0gV1RGTW92ZShxdWV1ZSk7IH0KKworICAgIHZvaWQgc3luY1RvRGF0YWJh
c2UoKTsKKwogcHJpdmF0ZToKICAgICBTdG9yYWdlQXJlYShMb2NhbFN0b3JhZ2VOYW1lc3BhY2Uq
LCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCB1bnNpZ25lZCBxdW90YUluQnl0
ZXMpOwogCkBAIC04Miw3ICs4NiwxMCBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fcXVvdGFJ
bkJ5dGVzIHsgMCB9OwogCiAgICAgUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VNYXA+IG1fc3RvcmFn
ZU1hcDsKLSAgICBIYXNoU2V0PHN0ZDo6cGFpcjxJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCB1
aW50NjRfdD4+IG1fZXZlbnRMaXN0ZW5lcnM7CisgICAgSGFzaFNldDxJUEM6OkNvbm5lY3Rpb246
OlVuaXF1ZUlEPiBtX2V2ZW50TGlzdGVuZXJzOworCisgICAgdWludDY0X3QgbV9pZGVudGlmaWVy
OworICAgIFJlZlB0cjxXb3JrUXVldWU+IG1fcXVldWU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFn
ZS9TdG9yYWdlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0
b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IDNlM2UwYjQ2NThlMjI4ZjEyMjU5NTcyODIx
MzE1Yzk3NDVjYjY2MGQuLjNiNWIzM2JlNTZhZGNiNTg0NjUzZTQ4YTU0NzQzMDliMWRhZDQ2OWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9y
YWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcApAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIlNlc3Np
b25TdG9yYWdlTmFtZXNwYWNlLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFyZWEuaCIKICNpbmNsdWRl
ICJTdG9yYWdlQXJlYU1hcE1lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiU3RvcmFnZU1hbmFnZXJNZXNz
YWdlcy5oIgogI2luY2x1ZGUgIlRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZS5oIgogI2lu
Y2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmln
aW5EYXRhLmg+CkBAIC00MSw3ICs0MCw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0RW5jb2Rp
bmcuaD4KICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgotI2lu
Y2x1ZGUgPHd0Zi90aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtNTAsNTQwICs0OCwyNDIgQEAgdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiBjb25zdCB1bnNpZ25lZCBTdG9yYWdlTWFuYWdlcjo6bG9jYWxT
dG9yYWdlRGF0YWJhc2VRdW90YUluQnl0ZXMgPSA1ICogMTAyNCAqIDEwMjQ7CiAKIFN0b3JhZ2VN
YW5hZ2VyOjpTdG9yYWdlTWFuYWdlcihTdHJpbmcmJiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpCi0g
ICAgOiBtX3F1ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0LlN0b3JhZ2VN
YW5hZ2VyIikpCiB7Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBBU1NFUlQo
IVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIC8vIE1ha2Ugc3VyZSB0aGUgZW5jb2RpbmcgaXMg
aW5pdGlhbGl6ZWQgYmVmb3JlIHdlIHN0YXJ0IGRpc3BhdGNoaW5nIHRoaW5ncyB0byB0aGUgcXVl
dWUuCi0gICAgVVRGOEVuY29kaW5nKCk7CiAgICAgaWYgKCFsb2NhbFN0b3JhZ2VEaXJlY3Rvcnku
aXNOdWxsKCkpCi0gICAgICAgIG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyID0gTG9jYWxT
dG9yYWdlRGF0YWJhc2VUcmFja2VyOjpjcmVhdGUobV9xdWV1ZS5jb3B5UmVmKCksIFdURk1vdmUo
bG9jYWxTdG9yYWdlRGlyZWN0b3J5KSk7CisgICAgICAgIG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VU
cmFja2VyID0gTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpjcmVhdGUoV1RGTW92ZShsb2Nh
bFN0b3JhZ2VEaXJlY3RvcnkpKTsKIH0KIAogU3RvcmFnZU1hbmFnZXI6On5TdG9yYWdlTWFuYWdl
cigpCiB7Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBBU1NFUlQoIVJ1bkxv
b3A6OmlzTWFpbigpKTsKIH0KIAogdm9pZCBTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlU2Vzc2lvblN0
b3JhZ2VOYW1lc3BhY2UodWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCB1bnNpZ25lZCBxdW90
YUluQnl0ZXMpCiB7Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBtX3F1ZXVl
LT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzdG9yYWdl
TmFtZXNwYWNlSUQsIHF1b3RhSW5CeXRlc10oKSBtdXRhYmxlIHsKLSAgICAgICAgbV9zZXNzaW9u
U3RvcmFnZU5hbWVzcGFjZXMuZW5zdXJlKHN0b3JhZ2VOYW1lc3BhY2VJRCwgW3F1b3RhSW5CeXRl
c10gewotICAgICAgICAgICAgcmV0dXJuIFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlOjpjcmVhdGUo
cXVvdGFJbkJ5dGVzKTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci19CisgICAgQVNTRVJUKCFSdW5M
b29wOjppc01haW4oKSk7CiAKLXZvaWQgU3RvcmFnZU1hbmFnZXI6OmRlc3Ryb3lTZXNzaW9uU3Rv
cmFnZU5hbWVzcGFjZSh1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQpCi17Ci0gICAgQVNTRVJU
KFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzdG9yYWdlTmFtZXNwYWNlSURdIHsKLSAgICAgICAg
QVNTRVJUKG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLmNvbnRhaW5zKHN0b3JhZ2VOYW1lc3Bh
Y2VJRCkpOwotICAgICAgICBpZiAoYXV0byogc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UgPSBtX3Nl
c3Npb25TdG9yYWdlTmFtZXNwYWNlcy5nZXQoc3RvcmFnZU5hbWVzcGFjZUlEKSkgewotICAgICAg
ICAgICAgaWYgKHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlLT5hbGxvd2VkQ29ubmVjdGlvbnMoKS5p
c0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgbV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMucmVt
b3ZlKHN0b3JhZ2VOYW1lc3BhY2VJRCk7Ci0gICAgICAgIH0KLSAgICB9KTsKKyAgICBtX3Nlc3Np
b25TdG9yYWdlTmFtZXNwYWNlcy5lbnN1cmUoc3RvcmFnZU5hbWVzcGFjZUlELCBbcXVvdGFJbkJ5
dGVzXSB7CisgICAgICAgIHJldHVybiBTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZTo6Y3JlYXRlKHF1
b3RhSW5CeXRlcyk7CisgICAgIH0pOwogfQogCi12b2lkIFN0b3JhZ2VNYW5hZ2VyOjphZGRBbGxv
d2VkU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0aW9uKHVpbnQ2NF90IHN0b3JhZ2VOYW1l
c3BhY2VJRCwgSVBDOjpDb25uZWN0aW9uJiBhbGxvd2VkQ29ubmVjdGlvbikKK3ZvaWQgU3RvcmFn
ZU1hbmFnZXI6OmRlc3Ryb3lTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBzdG9yYWdl
TmFtZXNwYWNlSUQpCiB7Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBhdXRv
IGFsbG93ZWRDb25uZWN0aW9uSUQgPSBhbGxvd2VkQ29ubmVjdGlvbi51bmlxdWVJRCgpOwotICAg
IGF1dG8gYWRkUmVzdWx0ID0gbV9jb25uZWN0aW9ucy5hZGQoYWxsb3dlZENvbm5lY3Rpb25JRCk7
Ci0gICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KQotICAgICAgICBhbGxvd2VkQ29ubmVjdGlv
bi5hZGRXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlN0b3JhZ2VNYW5hZ2VyOjpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcXVldWUuZ2V0KCksIHRoaXMpOwotCi0gICAgbV9xdWV1
ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgYWxsb3dl
ZENvbm5lY3Rpb25JRCwgc3RvcmFnZU5hbWVzcGFjZUlEXSgpIG11dGFibGUgewotICAgICAgICBB
U1NFUlQobV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMuY29udGFpbnMoc3RvcmFnZU5hbWVzcGFj
ZUlEKSk7Ci0KLSAgICAgICAgbV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMuZ2V0KHN0b3JhZ2VO
YW1lc3BhY2VJRCktPmFkZEFsbG93ZWRDb25uZWN0aW9uKGFsbG93ZWRDb25uZWN0aW9uSUQpOwot
ICAgIH0pOwotfQorICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi12b2lkIFN0b3Jh
Z2VNYW5hZ2VyOjpyZW1vdmVBbGxvd2VkU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0aW9u
KHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgSVBDOjpDb25uZWN0aW9uJiBhbGxvd2VkQ29u
bmVjdGlvbikKLXsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIGF1dG8gYWxs
b3dlZENvbm5lY3Rpb25JRCA9IGFsbG93ZWRDb25uZWN0aW9uLnVuaXF1ZUlEKCk7Ci0gICAgbV9x
dWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgYWxs
b3dlZENvbm5lY3Rpb25JRCwgc3RvcmFnZU5hbWVzcGFjZUlEXSgpIG11dGFibGUgewotICAgICAg
ICBBU1NFUlQobV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMuY29udGFpbnMoc3RvcmFnZU5hbWVz
cGFjZUlEKSk7Ci0gICAgICAgIGlmIChhdXRvKiBzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSA9IG1f
c2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLmdldChzdG9yYWdlTmFtZXNwYWNlSUQpKQotICAgICAg
ICAgICAgc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UtPnJlbW92ZUFsbG93ZWRDb25uZWN0aW9uKGFs
bG93ZWRDb25uZWN0aW9uSUQpOwotICAgIH0pOworICAgIEFTU0VSVChtX3Nlc3Npb25TdG9yYWdl
TmFtZXNwYWNlcy5jb250YWlucyhzdG9yYWdlTmFtZXNwYWNlSUQpKTsKKyAgICBpZiAoYXV0byog
c2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UgPSBtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlcy5nZXQo
c3RvcmFnZU5hbWVzcGFjZUlEKSkKKyAgICAgICAgbV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMu
cmVtb3ZlKHN0b3JhZ2VOYW1lc3BhY2VJRCk7CiB9CiAKIHZvaWQgU3RvcmFnZU1hbmFnZXI6OmNs
b25lU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCB1
aW50NjRfdCBuZXdTdG9yYWdlTmFtZXNwYWNlSUQpCiB7Ci0gICAgQVNTRVJUKFJ1bkxvb3A6Omlz
TWFpbigpKTsKLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCBzdG9yYWdlTmFtZXNwYWNlSUQsIG5ld1N0b3JhZ2VOYW1lc3BhY2VJRF0g
ewotICAgICAgICBTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSogc2Vzc2lvblN0b3JhZ2VOYW1lc3Bh
Y2UgPSBtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlcy5nZXQoc3RvcmFnZU5hbWVzcGFjZUlEKTsK
LSAgICAgICAgaWYgKCFzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSkgewotICAgICAgICAgICAgLy8g
RklYTUU6IFdlIGNhbiBnZXQgaW50byB0aGlzIHNpdHVhdGlvbiBpZiBzb21lb25lIGNsb3NlcyB0
aGUgb3JpZ2luYXRpbmcgcGFnZSBmcm9tIHdpdGhpbiBhCi0gICAgICAgICAgICAvLyBjcmVhdGVO
ZXdQYWdlIGNhbGxiYWNrLiBXZSBiYWlsIGZvciBub3csIGJ1dCB3ZSBzaG91bGQgcmVhbGx5IGZp
bmQgYSB3YXkgdG8ga2VlcCB0aGUgc2Vzc2lvbiBzdG9yYWdlIGFsaXZlCi0gICAgICAgICAgICAv
LyBzbyB3ZSB3ZSdsbCBjbG9uZSB0aGUgc2Vzc2lvbiBzdG9yYWdlIGNvcnJlY3RseS4KLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIFNlc3Npb25TdG9yYWdlTmFtZXNw
YWNlKiBuZXdTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSA9IG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3Bh
Y2VzLmdldChuZXdTdG9yYWdlTmFtZXNwYWNlSUQpOwotICAgICAgICBBU1NFUlQobmV3U2Vzc2lv
blN0b3JhZ2VOYW1lc3BhY2UpOworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0g
ICAgICAgIHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlLT5jbG9uZVRvKCpuZXdTZXNzaW9uU3RvcmFn
ZU5hbWVzcGFjZSk7CisgICAgU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UqIHNlc3Npb25TdG9yYWdl
TmFtZXNwYWNlID0gbV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMuZ2V0KHN0b3JhZ2VOYW1lc3Bh
Y2VJRCk7CisgICAgaWYgKCFzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSkKKyAgICAgICAgcmV0dXJu
OwogCi0gICAgICAgIGlmICghbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIpIHsKLSAgICAg
ICAgICAgIGlmIChhdXRvKiBsb2NhbFN0b3JhZ2VOYW1lc3BhY2UgPSBtX2xvY2FsU3RvcmFnZU5h
bWVzcGFjZXMuZ2V0KHN0b3JhZ2VOYW1lc3BhY2VJRCkpIHsKLSAgICAgICAgICAgICAgICBMb2Nh
bFN0b3JhZ2VOYW1lc3BhY2UqIG5ld2xvY2FsU3RvcmFnZU5hbWVzcGFjZSA9IGdldE9yQ3JlYXRl
TG9jYWxTdG9yYWdlTmFtZXNwYWNlKG5ld1N0b3JhZ2VOYW1lc3BhY2VJRCk7Ci0gICAgICAgICAg
ICAgICAgbG9jYWxTdG9yYWdlTmFtZXNwYWNlLT5jbG9uZVRvKCpuZXdsb2NhbFN0b3JhZ2VOYW1l
c3BhY2UpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfSk7Ci19CisgICAgU2Vzc2lv
blN0b3JhZ2VOYW1lc3BhY2UqIG5ld1Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlID0gZ2V0T3JDcmVh
dGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShuZXdTdG9yYWdlTmFtZXNwYWNlSUQpOworICAgIEFT
U0VSVChuZXdTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSk7CiAKLXZvaWQgU3RvcmFnZU1hbmFnZXI6
OnByb2Nlc3NEaWRDbG9zZUNvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQot
ewotICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgaWYgKG1fY29ubmVjdGlvbnMu
cmVtb3ZlKGNvbm5lY3Rpb24udW5pcXVlSUQoKSkpCi0gICAgICAgIGNvbm5lY3Rpb24ucmVtb3Zl
V29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdlcjo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpKTsKLQotICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbm5lY3Rpb25JRCA9IGNvbm5lY3Rpb24udW5pcXVl
SUQoKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgVmVjdG9yPHN0ZDo6cGFpcjxJUEM6OkNvbm5lY3Rp
b246OlVuaXF1ZUlELCB1aW50NjRfdD4+IGNvbm5lY3Rpb25BbmRTdG9yYWdlTWFwSURQYWlyc1Rv
UmVtb3ZlOwotICAgICAgICBmb3IgKGF1dG8mIHN0b3JhZ2VBcmVhIDogbV9zdG9yYWdlQXJlYXNC
eUNvbm5lY3Rpb24pIHsKLSAgICAgICAgICAgIGlmIChzdG9yYWdlQXJlYS5rZXkuZmlyc3QgIT0g
Y29ubmVjdGlvbklEKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgCi0g
ICAgICAgICAgICBzdG9yYWdlQXJlYS52YWx1ZS0+cmVtb3ZlTGlzdGVuZXIoc3RvcmFnZUFyZWEu
a2V5LmZpcnN0LCBzdG9yYWdlQXJlYS5rZXkuc2Vjb25kKTsKLSAgICAgICAgICAgIGNvbm5lY3Rp
b25BbmRTdG9yYWdlTWFwSURQYWlyc1RvUmVtb3ZlLmFwcGVuZChzdG9yYWdlQXJlYS5rZXkpOwot
ICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBjb25uZWN0aW9u
QW5kU3RvcmFnZU1hcElEUGFpcnNUb1JlbW92ZSkKLSAgICAgICAgICAgIG1fc3RvcmFnZUFyZWFz
QnlDb25uZWN0aW9uLnJlbW92ZShwYWlyKTsKLQotICAgICAgICBWZWN0b3I8dWludDY0X3Q+IHNl
c3Npb25TdG9yYWdlTmFtZVNwYWNlSURzVG9SZW1vdmU7Ci0gICAgICAgIGZvciAoYXV0byYgc2Vz
c2lvblN0b3JhZ2VOYW1lc3BhY2UgOiBtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlcykgewotICAg
ICAgICAgICAgaWYgKHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlLnZhbHVlLT5hbGxvd2VkQ29ubmVj
dGlvbnMoKS5jb250YWlucyhjb25uZWN0aW9uSUQpKQotICAgICAgICAgICAgICAgIHNlc3Npb25T
dG9yYWdlTmFtZXNwYWNlLnZhbHVlLT5yZW1vdmVBbGxvd2VkQ29ubmVjdGlvbihjb25uZWN0aW9u
SUQpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoc2Vzc2lvblN0b3JhZ2VOYW1lc3Bh
Y2UudmFsdWUtPmFsbG93ZWRDb25uZWN0aW9ucygpLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAg
ICBzZXNzaW9uU3RvcmFnZU5hbWVTcGFjZUlEc1RvUmVtb3ZlLmFwcGVuZChzZXNzaW9uU3RvcmFn
ZU5hbWVzcGFjZS5rZXkpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBmb3IgKGF1dG8g
aWQgOiBzZXNzaW9uU3RvcmFnZU5hbWVTcGFjZUlEc1RvUmVtb3ZlKQotICAgICAgICAgICAgbV9z
ZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMucmVtb3ZlKGlkKTsKLSAgICB9KTsKKyAgICBzZXNzaW9u
U3RvcmFnZU5hbWVzcGFjZS0+Y2xvbmVUbygqbmV3U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UpOwog
fQogCiB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpnZXRTZXNzaW9uU3RvcmFnZU9yaWdpbnMoRnVuY3Rp
b248dm9pZChIYXNoU2V0PFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBtX3F1
ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewot
ICAgICAgICBIYXNoU2V0PFNlY3VyaXR5T3JpZ2luRGF0YT4gb3JpZ2luczsKKyAgICBBU1NFUlQo
IVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHNlc3Npb25T
dG9yYWdlTmFtZXNwYWNlIDogbV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMudmFsdWVzKCkpIHsK
LSAgICAgICAgICAgIGZvciAoYXV0byYgb3JpZ2luIDogc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2Ut
Pm9yaWdpbnMoKSkKLSAgICAgICAgICAgICAgICBvcmlnaW5zLmFkZChjcm9zc1RocmVhZENvcHko
b3JpZ2luKSk7Ci0gICAgICAgIH0KKyAgICBIYXNoU2V0PFNlY3VyaXR5T3JpZ2luRGF0YT4gb3Jp
Z2luczsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlIDogbV9z
ZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMudmFsdWVzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvJiBv
cmlnaW4gOiBzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS0+b3JpZ2lucygpKQorICAgICAgICBvcmln
aW5zLmFkZChjcm9zc1RocmVhZENvcHkob3JpZ2luKSk7CisgICAgfQogCi0gICAgICAgIFJ1bkxv
b3A6Om1haW4oKS5kaXNwYXRjaChbb3JpZ2lucyA9IFdURk1vdmUob3JpZ2lucyksIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKG9yaWdpbnMpKTsKLSAgICAgICAgfSk7
CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtvcmlnaW5zID0gV1RGTW92ZShvcmlnaW5z
KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRh
YmxlIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShvcmlnaW5zKSk7CiAgICAg
fSk7CiB9CiAKIHZvaWQgU3RvcmFnZU1hbmFnZXI6OmRlbGV0ZVNlc3Npb25TdG9yYWdlT3JpZ2lu
cyhGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgQVNTRVJUKFJ1
bkxvb3A6OmlzTWFpbigpKTsKLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICBmb3IgKGF1dG8mIHNlc3Npb25TdG9y
YWdlTmFtZXNwYWNlIDogbV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMudmFsdWVzKCkpCi0gICAg
ICAgICAgICBzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS0+Y2xlYXJBbGxTdG9yYWdlQXJlYXMoKTsK
KyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgICAgICBSdW5Mb29wOjptYWlu
KCkuZGlzcGF0Y2goV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgIH0pOworICAgIGZv
ciAoYXV0byYgc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UgOiBtX3Nlc3Npb25TdG9yYWdlTmFtZXNw
YWNlcy52YWx1ZXMoKSkKKyAgICAgICAgc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UtPmNsZWFyQWxs
U3RvcmFnZUFyZWFzKCk7CisKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVTZXNz
aW9uU3RvcmFnZUVudHJpZXNGb3JPcmlnaW5zKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGE+JiBvcmlnaW5zLCBGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBtX3F1ZXVlLT5kaXNw
YXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb3BpZWRPcmlnaW5z
ID0gY3Jvc3NUaHJlYWRDb3B5KG9yaWdpbnMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICBmb3IgKGF1dG8mIG9yaWdp
biA6IGNvcGllZE9yaWdpbnMpIHsKLSAgICAgICAgICAgIGZvciAoYXV0byYgc2Vzc2lvblN0b3Jh
Z2VOYW1lc3BhY2UgOiBtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkKLSAgICAg
ICAgICAgICAgICBzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS0+Y2xlYXJTdG9yYWdlQXJlYXNNYXRj
aGluZ09yaWdpbihvcmlnaW4pOwotICAgICAgICB9CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01h
aW4oKSk7CiAKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKLSAgICB9KTsKKyAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IG9yaWdpbnMp
IHsKKyAgICAgICAgZm9yIChhdXRvJiBzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSA6IG1fc2Vzc2lv
blN0b3JhZ2VOYW1lc3BhY2VzLnZhbHVlcygpKQorICAgICAgICAgICAgc2Vzc2lvblN0b3JhZ2VO
YW1lc3BhY2UtPmNsZWFyU3RvcmFnZUFyZWFzTWF0Y2hpbmdPcmlnaW4ob3JpZ2luKTsKKyAgICB9
CisKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwogfQogCiB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpnZXRMb2NhbFN0b3JhZ2VPcmlnaW5zKEZ1
bmN0aW9uPHZvaWQoSGFzaFNldDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewotICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAg
bV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxl
IHsKLSAgICAgICAgSGFzaFNldDxTZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdpbnM7CisgICAgQVNT
RVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICAgICAgaWYgKG1fbG9jYWxTdG9yYWdlRGF0
YWJhc2VUcmFja2VyKSB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IG1fbG9jYWxT
dG9yYWdlRGF0YWJhc2VUcmFja2VyLT5vcmlnaW5zKCkpCisgICAgSGFzaFNldDxTZWN1cml0eU9y
aWdpbkRhdGE+IG9yaWdpbnM7CisgICAgaWYgKG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2Vy
KSB7CisgICAgZm9yIChhdXRvJiBvcmlnaW4gOiBtX2xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tl
ci0+b3JpZ2lucygpKQorICAgICAgICBvcmlnaW5zLmFkZChvcmlnaW4uaXNvbGF0ZWRDb3B5KCkp
OworICAgIH0gZWxzZSB7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgbG9jYWxTdG9yYWdlTmFt
ZVNwYWNlIDogbV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2VzLnZhbHVlcygpKSB7CisgICAgICAgICAg
ICBmb3IgKGF1dG8mIG9yaWdpbiA6IGxvY2FsU3RvcmFnZU5hbWVTcGFjZS0+ZXBoZW1lcmFsT3Jp
Z2lucygpKQogICAgICAgICAgICAgICAgIG9yaWdpbnMuYWRkKG9yaWdpbi5pc29sYXRlZENvcHko
KSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGxvY2Fs
U3RvcmFnZU5hbWVTcGFjZSA6IG1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkgewot
ICAgICAgICAgICAgICAgIGZvciAoYXV0byYgb3JpZ2luIDogbG9jYWxTdG9yYWdlTmFtZVNwYWNl
LT5lcGhlbWVyYWxPcmlnaW5zKCkpCi0gICAgICAgICAgICAgICAgICAgIG9yaWdpbnMuYWRkKG9y
aWdpbi5pc29sYXRlZENvcHkoKSk7Ci0gICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICB9CiAK
LSAgICAgICAgZm9yIChhdXRvJiB0cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UgOiBtX3Ry
YW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZXMudmFsdWVzKCkpIHsKLSAgICAgICAgICAgIGZv
ciAoYXV0byYgb3JpZ2luIDogdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlLT5vcmlnaW5z
KCkpCi0gICAgICAgICAgICAgICAgb3JpZ2lucy5hZGQob3JpZ2luLmlzb2xhdGVkQ29weSgpKTsK
LSAgICAgICAgfQorICAgIGZvciAoYXV0byYgdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNl
IDogbV90cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2VzLnZhbHVlcygpKSB7CisgICAgICAg
IGZvciAoYXV0byYgb3JpZ2luIDogdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlLT5vcmln
aW5zKCkpCisgICAgICAgICAgICBvcmlnaW5zLmFkZChvcmlnaW4uaXNvbGF0ZWRDb3B5KCkpOwor
ICAgIH0KIAotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW29yaWdpbnMgPSBXVEZN
b3ZlKG9yaWdpbnMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSgpIG11dGFibGUgewotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShv
cmlnaW5zKSk7Ci0gICAgICAgIH0pOworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbb3Jp
Z2lucyA9IFdURk1vdmUob3JpZ2lucyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdU
Rk1vdmUob3JpZ2lucykpOwogICAgIH0pOwogfQogCiB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpnZXRM
b2NhbFN0b3JhZ2VPcmlnaW5EZXRhaWxzKEZ1bmN0aW9uPHZvaWQoVmVjdG9yPExvY2FsU3RvcmFn
ZURhdGFiYXNlVHJhY2tlcjo6T3JpZ2luRGV0YWlscz4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBtX3F1ZXVlLT5kaXNwYXRj
aChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICBWZWN0
b3I8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpPcmlnaW5EZXRhaWxzPiBvcmlnaW5EZXRh
aWxzOwotICAgICAgICBpZiAobV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIpCi0gICAgICAg
ICAgICBvcmlnaW5EZXRhaWxzID0gbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXItPm9yaWdp
bkRldGFpbHMoKS5pc29sYXRlZENvcHkoKTsKLQotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlz
cGF0Y2goW29yaWdpbkRldGFpbHMgPSBXVEZNb3ZlKG9yaWdpbkRldGFpbHMpLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShvcmlnaW5EZXRhaWxzKSk7Ci0gICAgICAg
IH0pOwotICAgIH0pOwotfQotCi12b2lkIFN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVMb2NhbFN0b3Jh
Z2VFbnRyaWVzRm9yT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmln
aW4pCi17Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBtX3F1ZXVlLT5kaXNw
YXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb3BpZWRPcmlnaW4g
PSBzZWN1cml0eU9yaWdpbi5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgZm9y
IChhdXRvJiBsb2NhbFN0b3JhZ2VOYW1lc3BhY2UgOiBtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZXMu
dmFsdWVzKCkpCi0gICAgICAgICAgICBsb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPmNsZWFyU3RvcmFn
ZUFyZWFzTWF0Y2hpbmdPcmlnaW4oY29waWVkT3JpZ2luKTsKKyAgICBBU1NFUlQoIVJ1bkxvb3A6
OmlzTWFpbigpKTsKIAotICAgICAgICBmb3IgKGF1dG8mIHRyYW5zaWVudExvY2FsU3RvcmFnZU5h
bWVzcGFjZSA6IG1fdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkKLSAg
ICAgICAgICAgIHRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZS0+Y2xlYXJTdG9yYWdlQXJl
YXNNYXRjaGluZ09yaWdpbihjb3BpZWRPcmlnaW4pOworICAgIFZlY3RvcjxMb2NhbFN0b3JhZ2VE
YXRhYmFzZVRyYWNrZXI6Ok9yaWdpbkRldGFpbHM+IG9yaWdpbkRldGFpbHM7CisgICAgaWYgKG1f
bG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyKQorICAgICAgICBvcmlnaW5EZXRhaWxzID0gY3Jv
c3NUaHJlYWRDb3B5KG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLT5vcmlnaW5EZXRhaWxz
KCkpOwogCi0gICAgICAgIGlmIChtX2xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcikKLSAgICAg
ICAgICAgIG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLT5kZWxldGVEYXRhYmFzZVdpdGhP
cmlnaW4oY29waWVkT3JpZ2luKTsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW29yaWdp
bkRldGFpbHMgPSBXVEZNb3ZlKG9yaWdpbkRldGFpbHMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihXVEZNb3ZlKG9yaWdpbkRldGFpbHMpKTsKICAgICB9KTsKIH0KIAogdm9pZCBTdG9y
YWdlTWFuYWdlcjo6ZGVsZXRlTG9jYWxTdG9yYWdlT3JpZ2luc01vZGlmaWVkU2luY2UoV2FsbFRp
bWUgdGltZSwgRnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIEFT
U0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdGltZSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKG1fbG9j
YWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyKSB7Ci0gICAgICAgICAgICBhdXRvIG9yaWdpbnNUb0Rl
bGV0ZSA9IG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLT5kYXRhYmFzZXNNb2RpZmllZFNp
bmNlKHRpbWUpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBmb3IgKGF1dG8mIHRyYW5zaWVu
dExvY2FsU3RvcmFnZU5hbWVzcGFjZSA6IG1fdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNl
cy52YWx1ZXMoKSkKLSAgICAgICAgICAgICAgICB0cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2UtPmNsZWFyQWxsU3RvcmFnZUFyZWFzKCk7Ci0KLSAgICAgICAgICAgIGZvciAoY29uc3QgYXV0
byYgb3JpZ2luIDogb3JpZ2luc1RvRGVsZXRlKSB7Ci0gICAgICAgICAgICAgICAgZm9yIChhdXRv
JiBsb2NhbFN0b3JhZ2VOYW1lc3BhY2UgOiBtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZXMudmFsdWVz
KCkpCi0gICAgICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZU5hbWVzcGFjZS0+Y2xlYXJTdG9y
YWdlQXJlYXNNYXRjaGluZ09yaWdpbihvcmlnaW4pOwotICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgICAgIG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLT5kZWxldGVEYXRhYmFzZVdp
dGhPcmlnaW4ob3JpZ2luKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIGZvciAoYXV0byYgbG9jYWxTdG9yYWdlTmFtZXNwYWNlIDogbV9sb2NhbFN0b3JhZ2VO
YW1lc3BhY2VzLnZhbHVlcygpKQotICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZU5hbWVzcGFj
ZS0+Y2xlYXJBbGxTdG9yYWdlQXJlYXMoKTsKLSAgICAgICAgfQorICAgIEFTU0VSVCghUnVuTG9v
cDo6aXNNYWluKCkpOwogCi0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgfSk7Ci19CisgICAgaWYgKG1fbG9jYWxTdG9yYWdl
RGF0YWJhc2VUcmFja2VyKSB7CisgICAgICAgIGF1dG8gb3JpZ2luc1RvRGVsZXRlID0gbV9sb2Nh
bFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXItPmRhdGFiYXNlc01vZGlmaWVkU2luY2UodGltZSk7CiAK
LXZvaWQgU3RvcmFnZU1hbmFnZXI6OmRlbGV0ZUxvY2FsU3RvcmFnZUVudHJpZXNGb3JPcmlnaW5z
KGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiBvcmlnaW5zLCBGdW5j
dGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgQVNTRVJUKFJ1bkxvb3A6
OmlzTWFpbigpKTsKLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBjb3BpZWRPcmlnaW5zID0gY3Jvc3NUaHJlYWRDb3B5KG9yaWdpbnMp
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFi
bGUgewotICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IGNvcGllZE9yaWdpbnMpIHsKKyAgICAg
ICAgZm9yIChhdXRvJiB0cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UgOiBtX3RyYW5zaWVu
dExvY2FsU3RvcmFnZU5hbWVzcGFjZXMudmFsdWVzKCkpCisgICAgICAgICAgICB0cmFuc2llbnRM
b2NhbFN0b3JhZ2VOYW1lc3BhY2UtPmNsZWFyQWxsU3RvcmFnZUFyZWFzKCk7CisKKyAgICAgICAg
Zm9yIChjb25zdCBhdXRvJiBvcmlnaW4gOiBvcmlnaW5zVG9EZWxldGUpIHsKICAgICAgICAgICAg
IGZvciAoYXV0byYgbG9jYWxTdG9yYWdlTmFtZXNwYWNlIDogbV9sb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2VzLnZhbHVlcygpKQogICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZU5hbWVzcGFjZS0+Y2xl
YXJTdG9yYWdlQXJlYXNNYXRjaGluZ09yaWdpbihvcmlnaW4pOwotCi0gICAgICAgICAgICBmb3Ig
KGF1dG8mIHRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSA6IG1fdHJhbnNpZW50TG9jYWxT
dG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkKLSAgICAgICAgICAgICAgICB0cmFuc2llbnRMb2Nh
bFN0b3JhZ2VOYW1lc3BhY2UtPmNsZWFyU3RvcmFnZUFyZWFzTWF0Y2hpbmdPcmlnaW4ob3JpZ2lu
KTsKLQotICAgICAgICAgICAgaWYgKG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyKQotICAg
ICAgICAgICAgICAgIG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLT5kZWxldGVEYXRhYmFz
ZVdpdGhPcmlnaW4ob3JpZ2luKTsKKyAgICAgICAgICAgIG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VU
cmFja2VyLT5kZWxldGVEYXRhYmFzZVdpdGhPcmlnaW4ob3JpZ2luKTsKICAgICAgICAgfQotCi0g
ICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZUxvY2FsU3RvcmFn
ZU1hcChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCwg
dWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBTZWN1cml0eU9yaWdpbkRhdGEmJiBzZWN1cml0
eU9yaWdpbkRhdGEpCi17Ci0gICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgYXV0
byBjb25uZWN0aW9uSUQgPSBjb25uZWN0aW9uLnVuaXF1ZUlEKCk7Ci0gICAgc3RkOjpwYWlyPElQ
Qzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIHVpbnQ2NF90PiBjb25uZWN0aW9uQW5kU3RvcmFnZU1h
cElEUGFpcihjb25uZWN0aW9uSUQsIHN0b3JhZ2VNYXBJRCk7Ci0KLSAgICBBU1NFUlQoKEhhc2hN
YXA8c3RkOjpwYWlyPElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIHVpbnQ2NF90PiwgUmVmUHRy
PFN0b3JhZ2VBcmVhPj46OmlzVmFsaWRLZXkoY29ubmVjdGlvbkFuZFN0b3JhZ2VNYXBJRFBhaXIp
KSk7Ci0KLSAgICBhdXRvIHJlc3VsdCA9IG1fc3RvcmFnZUFyZWFzQnlDb25uZWN0aW9uLmFkZChj
b25uZWN0aW9uQW5kU3RvcmFnZU1hcElEUGFpciwgbnVsbHB0cik7Ci0gICAgQVNTRVJUKHJlc3Vs
dC5pc05ld0VudHJ5KTsKLSAgICBBU1NFUlQoKEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxMb2Nh
bFN0b3JhZ2VOYW1lc3BhY2U+Pjo6aXNWYWxpZEtleShzdG9yYWdlTmFtZXNwYWNlSUQpKSk7Ci0K
LSAgICBMb2NhbFN0b3JhZ2VOYW1lc3BhY2UqIGxvY2FsU3RvcmFnZU5hbWVzcGFjZSA9IGdldE9y
Q3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHN0b3JhZ2VOYW1lc3BhY2VJRCk7Ci0gICAgQVNT
RVJUKGxvY2FsU3RvcmFnZU5hbWVzcGFjZSk7Ci0KLSAgICBhdXRvIHN0b3JhZ2VBcmVhID0gbG9j
YWxTdG9yYWdlTmFtZXNwYWNlLT5nZXRPckNyZWF0ZVN0b3JhZ2VBcmVhKFdURk1vdmUoc2VjdXJp
dHlPcmlnaW5EYXRhKSwgbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIgPyBMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2U6OklzRXBoZW1lcmFsOjpObyA6IExvY2FsU3RvcmFnZU5hbWVzcGFjZTo6SXNF
cGhlbWVyYWw6Olllcyk7Ci0gICAgc3RvcmFnZUFyZWEtPmFkZExpc3RlbmVyKGNvbm5lY3Rpb25J
RCwgc3RvcmFnZU1hcElEKTsKLQotICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBXVEZNb3Zl
KHN0b3JhZ2VBcmVhKTsKLX0KLQotdm9pZCBTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlVHJhbnNpZW50
TG9jYWxTdG9yYWdlTWFwKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgdWludDY0X3Qgc3Rv
cmFnZU1hcElELCB1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIFNlY3VyaXR5T3JpZ2luRGF0
YSYmIHRvcExldmVsT3JpZ2luRGF0YSwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgb3JpZ2luKQotewot
ICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIGF1dG8gY29ubmVjdGlvbklEID0g
Y29ubmVjdGlvbi51bmlxdWVJRCgpOwotCi0gICAgQVNTRVJUKG1fc3RvcmFnZUFyZWFzQnlDb25u
ZWN0aW9uLmlzVmFsaWRLZXkoeyBjb25uZWN0aW9uSUQsIHN0b3JhZ2VNYXBJRCB9KSk7Ci0KLSAg
ICAvLyBTZWUgaWYgd2UgYWxyZWFkeSBoYXZlIHNlc3Npb24gc3RvcmFnZSBmb3IgdGhpcyBjb25u
ZWN0aW9uL29yaWdpbiBjb21iby4KLSAgICAvLyBJZiBzbywgdXBkYXRlIHRoZSBtYXAgd2l0aCB0
aGUgbmV3IElELCBvdGhlcndpc2Uga2VlcCBvbiB0cnVja2luZy4KLSAgICBmb3IgKGF1dG8gaXQg
PSBtX3N0b3JhZ2VBcmVhc0J5Q29ubmVjdGlvbi5iZWdpbigpLCBlbmQgPSBtX3N0b3JhZ2VBcmVh
c0J5Q29ubmVjdGlvbi5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIGlmIChpdC0+
a2V5LmZpcnN0ICE9IGNvbm5lY3Rpb25JRCkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICBSZWY8U3RvcmFnZUFyZWE+IGFyZWEgPSAqaXQtPnZhbHVlOwotICAgICAgICBpZiAoIWFyZWEt
PmlzRXBoZW1lcmFsKCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKCFvcmln
aW4uc2VjdXJpdHlPcmlnaW4oKS0+aXNTYW1lU2NoZW1lSG9zdFBvcnQoYXJlYS0+c2VjdXJpdHlP
cmlnaW4oKS5zZWN1cml0eU9yaWdpbigpLmdldCgpKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICBhcmVhLT5hZGRMaXN0ZW5lcihjb25uZWN0aW9uSUQsIHN0b3JhZ2VNYXBJRCk7Ci0g
ICAgICAgIC8vIElmIHRoZSBzdG9yYWdlTWFwSUQgdXNlZCBhcyBrZXkgaW4gbV9zdG9yYWdlQXJl
YXNCeUNvbm5lY3Rpb24gaXMgbm8gbG9uZ2VyIG9uZSBvZiB0aGUgU3RvcmFnZUFyZWEncyBsaXN0
ZW5lcnMsIHRoZW4gdGhpcyBtZWFucwotICAgICAgICAvLyB0aGF0IGRlc3Ryb3lTdG9yYWdlTWFw
KCkgd2FzIGFscmVhZHkgY2FsbGVkIGZvciB0aGF0IHN0b3JhZ2VNYXBJRCBidXQgaXQgZGVjaWRl
ZCBub3QgdG8gcmVtb3ZlIGl0IGZyb20gbV9zdG9yYWdlQXJlYXNCeUNvbm5lY3Rpb24KLSAgICAg
ICAgLy8gc28gdGhhdCB3ZSBjb3VsZCByZXVzZSBpdCBsYXRlciBvbiBmb3IgdGhlIHNhbWUgY29u
bmVjdGlvbi9vcmlnaW4gY29tYm8uIEluIHRoaXMgY2FzZSwgaXQgaXMgc2FmZSB0byByZW1vdmUg
dGhlIHByZXZpb3VzCi0gICAgICAgIC8vIHN0b3JhZ2VNYXBJRCBmcm9tIG1fc3RvcmFnZUFyZWFz
QnlDb25uZWN0aW9uLgotICAgICAgICBpZiAoIWFyZWEtPmhhc0xpc3RlbmVyKGNvbm5lY3Rpb25J
RCwgaXQtPmtleS5zZWNvbmQpKQotICAgICAgICAgICAgbV9zdG9yYWdlQXJlYXNCeUNvbm5lY3Rp
b24ucmVtb3ZlKGl0KTsKLSAgICAgICAgbV9zdG9yYWdlQXJlYXNCeUNvbm5lY3Rpb24uYWRkKHsg
Y29ubmVjdGlvbklELCBzdG9yYWdlTWFwSUQgfSwgV1RGTW92ZShhcmVhKSk7Ci0gICAgICAgIHJl
dHVybjsKKyAgICB9IGVsc2UgeworICAgICAgICBmb3IgKGF1dG8mIGxvY2FsU3RvcmFnZU5hbWVz
cGFjZSA6IG1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkKKyAgICAgICAgICAgIGxv
Y2FsU3RvcmFnZU5hbWVzcGFjZS0+Y2xlYXJBbGxTdG9yYWdlQXJlYXMoKTsKICAgICB9CiAKLSAg
ICBhdXRvJiBzbG90ID0gbV9zdG9yYWdlQXJlYXNCeUNvbm5lY3Rpb24uYWRkKHsgY29ubmVjdGlv
bklELCBzdG9yYWdlTWFwSUQgfSwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwotICAgIEFTU0VS
VCghc2xvdCk7Ci0KLSAgICBhdXRvKiB0cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UgPSBn
ZXRPckNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShzdG9yYWdlTmFtZXNwYWNl
SUQsIFdURk1vdmUodG9wTGV2ZWxPcmlnaW5EYXRhKSk7Ci0KLSAgICBhdXRvIHN0b3JhZ2VBcmVh
ID0gdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlLT5nZXRPckNyZWF0ZVN0b3JhZ2VBcmVh
KFdURk1vdmUob3JpZ2luKSk7Ci0gICAgc3RvcmFnZUFyZWEtPmFkZExpc3RlbmVyKGNvbm5lY3Rp
b25JRCwgc3RvcmFnZU1hcElEKTsKLQotICAgIHNsb3QgPSBXVEZNb3ZlKHN0b3JhZ2VBcmVhKTsK
KyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwogfQogCi12b2lkIFN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU1hcChJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCwgdWludDY0X3Qg
c3RvcmFnZU5hbWVzcGFjZUlELCBTZWN1cml0eU9yaWdpbkRhdGEmJiBzZWN1cml0eU9yaWdpbkRh
dGEpCit2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVMb2NhbFN0b3JhZ2VFbnRyaWVzRm9yT3Jp
Z2lucyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYgb3JpZ2lucywg
RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVCghUnVu
TG9vcDo6aXNNYWluKCkpOwotICAgIGF1dG8gY29ubmVjdGlvbklEID0gY29ubmVjdGlvbi51bmlx
dWVJRCgpOwotICAgIEFTU0VSVChtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlcy5pc1ZhbGlkS2V5
KHN0b3JhZ2VOYW1lc3BhY2VJRCkpOwotCi0gICAgU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UqIHNl
c3Npb25TdG9yYWdlTmFtZXNwYWNlID0gbV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMuZ2V0KHN0
b3JhZ2VOYW1lc3BhY2VJRCk7Ci0gICAgaWYgKCFzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSkgewot
ICAgICAgICAvLyBXZSdyZSBnZXR0aW5nIGFuIGluY29taW5nIG1lc3NhZ2UgZnJvbSB0aGUgd2Vi
IHByb2Nlc3MgdGhhdCdzIGZvciBzZXNzaW9uIHN0b3JhZ2UgZm9yIGEgd2ViIHBhZ2UKLSAgICAg
ICAgLy8gdGhhdCBoYXMgYWxyZWFkeSBiZWVuIGNsb3NlZCwganVzdCBpZ25vcmUgaXQuCi0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlQobV9zdG9yYWdlQXJlYXNCeUNvbm5lY3Rp
b24uaXNWYWxpZEtleSh7IGNvbm5lY3Rpb25JRCwgc3RvcmFnZU1hcElEIH0pKTsKIAotICAgIGF1
dG8mIHNsb3QgPSBtX3N0b3JhZ2VBcmVhc0J5Q29ubmVjdGlvbi5hZGQoeyBjb25uZWN0aW9uSUQs
IHN0b3JhZ2VNYXBJRCB9LCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7Ci0gICAgQVNTRVJUKCFz
bG90KTsKLSAgICBBU1NFUlQoc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UtPmFsbG93ZWRDb25uZWN0
aW9ucygpLmNvbnRhaW5zKGNvbm5lY3Rpb25JRCkpOwotCi0gICAgYXV0byBzdG9yYWdlQXJlYSA9
IHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlLT5nZXRPckNyZWF0ZVN0b3JhZ2VBcmVhKFdURk1vdmUo
c2VjdXJpdHlPcmlnaW5EYXRhKSk7Ci0gICAgc3RvcmFnZUFyZWEtPmFkZExpc3RlbmVyKGNvbm5l
Y3Rpb25JRCwgc3RvcmFnZU1hcElEKTsKLQotICAgIHNsb3QgPSBXVEZNb3ZlKHN0b3JhZ2VBcmVh
KTsKLX0KLQotdm9pZCBTdG9yYWdlTWFuYWdlcjo6ZGVzdHJveVN0b3JhZ2VNYXAoSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCB1aW50NjRfdCBzdG9yYWdlTWFwSUQpCi17Ci0gICAgQVNTRVJU
KCFSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgYXV0byBjb25uZWN0aW9uSUQgPSBjb25uZWN0aW9u
LnVuaXF1ZUlEKCk7CisgICAgZm9yIChhdXRvJiBvcmlnaW4gOiBvcmlnaW5zKSB7CisgICAgICAg
IGZvciAoYXV0byYgbG9jYWxTdG9yYWdlTmFtZXNwYWNlIDogbV9sb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2VzLnZhbHVlcygpKQorICAgICAgICAgICAgbG9jYWxTdG9yYWdlTmFtZXNwYWNlLT5jbGVhclN0
b3JhZ2VBcmVhc01hdGNoaW5nT3JpZ2luKG9yaWdpbik7CiAKLSAgICBzdGQ6OnBhaXI8SVBDOjpD
b25uZWN0aW9uOjpVbmlxdWVJRCwgdWludDY0X3Q+IGNvbm5lY3Rpb25BbmRTdG9yYWdlTWFwSURQ
YWlyKGNvbm5lY3Rpb25JRCwgc3RvcmFnZU1hcElEKTsKLSAgICBBU1NFUlQobV9zdG9yYWdlQXJl
YXNCeUNvbm5lY3Rpb24uaXNWYWxpZEtleShjb25uZWN0aW9uQW5kU3RvcmFnZU1hcElEUGFpcikp
OworICAgICAgICBmb3IgKGF1dG8mIHRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSA6IG1f
dHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkKKyAgICAgICAgICAgIHRy
YW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZS0+Y2xlYXJTdG9yYWdlQXJlYXNNYXRjaGluZ09y
aWdpbihvcmlnaW4pOwogCi0gICAgYXV0byBpdCA9IG1fc3RvcmFnZUFyZWFzQnlDb25uZWN0aW9u
LmZpbmQoY29ubmVjdGlvbkFuZFN0b3JhZ2VNYXBJRFBhaXIpOwotICAgIGlmIChpdCA9PSBtX3N0
b3JhZ2VBcmVhc0J5Q29ubmVjdGlvbi5lbmQoKSkgewotICAgICAgICAvLyBUaGUgY29ubmVjdGlv
biBoYXMgYmVlbiByZW1vdmVkIGJlY2F1c2UgdGhlIGxhc3QgcGFnZSB3YXMgY2xvc2VkLgotICAg
ICAgICByZXR1cm47CisgICAgICAgIGlmIChtX2xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcikK
KyAgICAgICAgICAgIG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLT5kZWxldGVEYXRhYmFz
ZVdpdGhPcmlnaW4ob3JpZ2luKTsKICAgICB9CiAKLSAgICBpdC0+dmFsdWUtPnJlbW92ZUxpc3Rl
bmVyKGNvbm5lY3Rpb25JRCwgc3RvcmFnZU1hcElEKTsKLQotICAgIC8vIERvbid0IHJlbW92ZSBz
ZXNzaW9uIHN0b3JhZ2UgbWFwcy4gVGhlIHdlYiBwcm9jZXNzIG1heSByZWNvbm5lY3QgYW5kIGV4
cGVjdCB0aGUgZGF0YSB0byBzdGlsbCBiZSBhcm91bmQuCi0gICAgaWYgKGl0LT52YWx1ZS0+aXNF
cGhlbWVyYWwoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9zdG9yYWdlQXJlYXNCeUNvbm5l
Y3Rpb24ucmVtb3ZlKGNvbm5lY3Rpb25BbmRTdG9yYWdlTWFwSURQYWlyKTsKKyAgICBSdW5Mb29w
OjptYWluKCkuZGlzcGF0Y2goV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lk
IFN0b3JhZ2VNYW5hZ2VyOjpwcmV3YXJtKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgdWlu
dDY0X3Qgc3RvcmFnZU1hcElEKQorU3RvcmFnZUFyZWEqIFN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVM
b2NhbFN0b3JhZ2VBcmVhKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhJiYgb3JpZ2luKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWlu
KCkpOwotICAgIGlmIChhdXRvKiBzdG9yYWdlQXJlYSA9IGZpbmRTdG9yYWdlQXJlYShjb25uZWN0
aW9uLCBzdG9yYWdlTWFwSUQpKQotICAgICAgICBzdG9yYWdlQXJlYS0+b3BlbkRhdGFiYXNlQW5k
SW1wb3J0SXRlbXNJZk5lZWRlZCgpOwotfQogCi12b2lkIFN0b3JhZ2VNYW5hZ2VyOjpnZXRWYWx1
ZXMoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCB1aW50NjRfdCBzdG9yYWdlTWFwSUQsIHVp
bnQ2NF90IHN0b3JhZ2VNYXBTZWVkLCBHZXRWYWx1ZXNDYWxsYmFjayYmIGNvbXBsZXRpb25IYW5k
bGVyKQotewotICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIGF1dG8qIHN0b3Jh
Z2VBcmVhID0gZmluZFN0b3JhZ2VBcmVhKGNvbm5lY3Rpb24sIHN0b3JhZ2VNYXBJRCk7CisgICAg
aWYgKGF1dG8qIGxvY2FsU3RvcmFnZU5hbWVzcGFjZSA9IGdldE9yQ3JlYXRlTG9jYWxTdG9yYWdl
TmFtZXNwYWNlKHN0b3JhZ2VOYW1lc3BhY2VJRCkpCisgICAgICAgIHJldHVybiBsb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UtPmdldE9yQ3JlYXRlU3RvcmFnZUFyZWEoV1RGTW92ZShvcmlnaW4pLCBtX2xv
Y2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlciA/IExvY2FsU3RvcmFnZU5hbWVzcGFjZTo6SXNFcGhl
bWVyYWw6Ok5vIDogTG9jYWxTdG9yYWdlTmFtZXNwYWNlOjpJc0VwaGVtZXJhbDo6WWVzKS5wdHIo
KTsKIAotICAgIC8vIFRoaXMgaXMgYSBzZXNzaW9uIHN0b3JhZ2UgYXJlYSBmb3IgYSBwYWdlIHRo
YXQgaGFzIGFscmVhZHkgYmVlbiBjbG9zZWQuIElnbm9yZSBpdC4KLSAgICBpZiAoIXN0b3JhZ2VB
cmVhKQotICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKLQotICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHN0b3JhZ2VBcmVhLT5pdGVtcygpKTsKLSAgICBjb25uZWN0aW9uLnNlbmQo
TWVzc2FnZXM6OlN0b3JhZ2VBcmVhTWFwOjpEaWRHZXRWYWx1ZXMoc3RvcmFnZU1hcFNlZWQpLCBz
dG9yYWdlTWFwSUQpOworICAgIHJldHVybiBudWxscHRyOwogfQogCi12b2lkIFN0b3JhZ2VNYW5h
Z2VyOjpzZXRJdGVtKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiYgc2VjdXJpdHlPcmlnaW5EYXRhLCB1aW50NjRfdCBzdG9yYWdlTWFwSUQs
IHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkLCBj
b25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiB1cmxT
dHJpbmcpCitTdG9yYWdlQXJlYSogU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZVRyYW5zaWVudExvY2Fs
U3RvcmFnZUFyZWEodWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGEmJiB0b3BMZXZlbE9yaWdpbiwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
JiYgb3JpZ2luKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIGF1dG8q
IHN0b3JhZ2VBcmVhID0gZmluZFN0b3JhZ2VBcmVhKGNvbm5lY3Rpb24sIHN0b3JhZ2VNYXBJRCk7
Ci0KLSAgICAvLyBUaGlzIGlzIGEgc2Vzc2lvbiBzdG9yYWdlIGFyZWEgZm9yIGEgcGFnZSB0aGF0
IGhhcyBhbHJlYWR5IGJlZW4gY2xvc2VkLiBJZ25vcmUgaXQuCi0gICAgaWYgKCFzdG9yYWdlQXJl
YSkKLSAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVCgoSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRy
PFRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZT4+Ojppc1ZhbGlkS2V5KHN0b3JhZ2VOYW1l
c3BhY2VJRCkpKTsKIAotICAgIGJvb2wgcXVvdGFFcnJvcjsKLSAgICBzdG9yYWdlQXJlYS0+c2V0
SXRlbShjb25uZWN0aW9uLnVuaXF1ZUlEKCksIHNvdXJjZVN0b3JhZ2VBcmVhSUQsIGtleSwgdmFs
dWUsIHVybFN0cmluZywgcXVvdGFFcnJvcik7Ci0gICAgY29ubmVjdGlvbi5zZW5kKE1lc3NhZ2Vz
OjpTdG9yYWdlQXJlYU1hcDo6RGlkU2V0SXRlbShzdG9yYWdlTWFwU2VlZCwga2V5LCBxdW90YUVy
cm9yKSwgc3RvcmFnZU1hcElEKTsKKyAgICBpZiAoYXV0byogdHJhbnNpZW50TG9jYWxTdG9yYWdl
TmFtZXNwYWNlID0gZ2V0T3JDcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2Uoc3Rv
cmFnZU5hbWVzcGFjZUlELCBXVEZNb3ZlKHRvcExldmVsT3JpZ2luKSkpCisgICAgICAgIHJldHVy
biB0cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPmdldE9yQ3JlYXRlU3RvcmFnZUFyZWEo
V1RGTW92ZShvcmlnaW4pKS5wdHIoKTsKKyAgICAKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAot
dm9pZCBTdG9yYWdlTWFuYWdlcjo6c2V0SXRlbXMoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
LCB1aW50NjRfdCBzdG9yYWdlTWFwSUQsIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBp
dGVtcykKK1N0b3JhZ2VBcmVhKiBTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VB
cmVhKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhJiYgb3JpZ2luKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIGlm
IChhdXRvKiBzdG9yYWdlQXJlYSA9IGZpbmRTdG9yYWdlQXJlYShjb25uZWN0aW9uLCBzdG9yYWdl
TWFwSUQpKQotICAgICAgICBzdG9yYWdlQXJlYS0+c2V0SXRlbXMoaXRlbXMpOwotfQorICAgIEFT
U0VSVCgoSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlPj46
OmlzVmFsaWRLZXkoc3RvcmFnZU5hbWVzcGFjZUlEKSkpOwogCi12b2lkIFN0b3JhZ2VNYW5hZ2Vy
OjpyZW1vdmVJdGVtKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiYgc2VjdXJpdHlPcmlnaW5EYXRhLCB1aW50NjRfdCBzdG9yYWdlTWFwSUQs
IHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkLCBj
b25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCi17Ci0gICAgQVNTRVJU
KCFSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgYXV0byogc3RvcmFnZUFyZWEgPSBmaW5kU3RvcmFn
ZUFyZWEoY29ubmVjdGlvbiwgc3RvcmFnZU1hcElEKTsKLQotICAgIC8vIFRoaXMgaXMgYSBzZXNz
aW9uIHN0b3JhZ2UgYXJlYSBmb3IgYSBwYWdlIHRoYXQgaGFzIGFscmVhZHkgYmVlbiBjbG9zZWQu
IElnbm9yZSBpdC4KLSAgICBpZiAoIXN0b3JhZ2VBcmVhKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBzdG9yYWdlQXJlYS0+cmVtb3ZlSXRlbShjb25uZWN0aW9uLnVuaXF1ZUlEKCksIHNvdXJjZVN0
b3JhZ2VBcmVhSUQsIGtleSwgdXJsU3RyaW5nKTsKLSAgICBjb25uZWN0aW9uLnNlbmQoTWVzc2Fn
ZXM6OlN0b3JhZ2VBcmVhTWFwOjpEaWRSZW1vdmVJdGVtKHN0b3JhZ2VNYXBTZWVkLCBrZXkpLCBz
dG9yYWdlTWFwSUQpOworICAgIGlmIChhdXRvKiBzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSA9IGdl
dE9yQ3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2Uoc3RvcmFnZU5hbWVzcGFjZUlEKSkKKyAg
ICAgICAgcmV0dXJuIHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlLT5nZXRPckNyZWF0ZVN0b3JhZ2VB
cmVhKFdURk1vdmUob3JpZ2luKSkucHRyKCk7CisgICAgCisgICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKLXZvaWQgU3RvcmFnZU1hbmFnZXI6OmNsZWFyKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgc2VjdXJpdHlPcmlnaW5EYXRhLCB1aW50
NjRfdCBzdG9yYWdlTWFwSUQsIHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIHVpbnQ2NF90
IHN0b3JhZ2VNYXBTZWVkLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZykKK0xvY2FsU3RvcmFnZU5h
bWVzcGFjZSogU3RvcmFnZU1hbmFnZXI6OmdldE9yQ3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNl
KHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6Omlz
TWFpbigpKTsKLSAgICBhdXRvKiBzdG9yYWdlQXJlYSA9IGZpbmRTdG9yYWdlQXJlYShjb25uZWN0
aW9uLCBzdG9yYWdlTWFwSUQpOwogCi0gICAgLy8gVGhpcyBpcyBhIHNlc3Npb24gc3RvcmFnZSBh
cmVhIGZvciBhIHBhZ2UgdGhhdCBoYXMgYWxyZWFkeSBiZWVuIGNsb3NlZC4gSWdub3JlIGl0Lgot
ICAgIGlmICghc3RvcmFnZUFyZWEpCi0gICAgICAgIHJldHVybjsKLQotICAgIHN0b3JhZ2VBcmVh
LT5jbGVhcihjb25uZWN0aW9uLnVuaXF1ZUlEKCksIHNvdXJjZVN0b3JhZ2VBcmVhSUQsIHVybFN0
cmluZyk7Ci0gICAgY29ubmVjdGlvbi5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlQXJlYU1hcDo6RGlk
Q2xlYXIoc3RvcmFnZU1hcFNlZWQpLCBzdG9yYWdlTWFwSUQpOwotfQotCi12b2lkIFN0b3JhZ2VN
YW5hZ2VyOjp3YWl0VW50aWxUYXNrc0ZpbmlzaGVkKCkKLXsKLSAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOwotICAgIEJpbmFyeVNlbWFwaG9yZSBzZW1hcGhvcmU7Ci0gICAgbV9xdWV1ZS0+
ZGlzcGF0Y2goW3RoaXMsICZzZW1hcGhvcmVdIHsKLSAgICAgICAgVmVjdG9yPHN0ZDo6cGFpcjxJ
UEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCB1aW50NjRfdD4+IGNvbm5lY3Rpb25BbmRTdG9yYWdl
TWFwSURQYWlyc1RvUmVtb3ZlOwotICAgICAgICBmb3IgKGF1dG8mIGNvbm5lY3Rpb25TdG9yYWdl
QXJlYVBhaXIgOiBtX3N0b3JhZ2VBcmVhc0J5Q29ubmVjdGlvbikgewotICAgICAgICAgICAgY29u
bmVjdGlvblN0b3JhZ2VBcmVhUGFpci52YWx1ZS0+cmVtb3ZlTGlzdGVuZXIoY29ubmVjdGlvblN0
b3JhZ2VBcmVhUGFpci5rZXkuZmlyc3QsIGNvbm5lY3Rpb25TdG9yYWdlQXJlYVBhaXIua2V5LnNl
Y29uZCk7Ci0gICAgICAgICAgICBjb25uZWN0aW9uQW5kU3RvcmFnZU1hcElEUGFpcnNUb1JlbW92
ZS5hcHBlbmQoY29ubmVjdGlvblN0b3JhZ2VBcmVhUGFpci5rZXkpOwotICAgICAgICB9Ci0KLSAg
ICAgICAgZm9yIChhdXRvJiBjb25uZWN0aW9uU3RvcmFnZUFyZWFQYWlyIDogY29ubmVjdGlvbkFu
ZFN0b3JhZ2VNYXBJRFBhaXJzVG9SZW1vdmUpCi0gICAgICAgICAgICBtX3N0b3JhZ2VBcmVhc0J5
Q29ubmVjdGlvbi5yZW1vdmUoY29ubmVjdGlvblN0b3JhZ2VBcmVhUGFpcik7Ci0KLSAgICAgICAg
bV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMuY2xlYXIoKTsKLSAgICAgICAgbV9sb2NhbFN0b3Jh
Z2VOYW1lc3BhY2VzLmNsZWFyKCk7Ci0KLSAgICAgICAgc2VtYXBob3JlLnNpZ25hbCgpOwotICAg
IH0pOwotICAgIHNlbWFwaG9yZS53YWl0KCk7Ci19Ci0KLXZvaWQgU3RvcmFnZU1hbmFnZXI6OnN1
c3BlbmQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewot
ICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgQ29tcGxldGlvbkhhbmRsZXJDYWxs
aW5nU2NvcGUgY29tcGxldGlvbkhhbmRsZXJDYWxsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwotICAgIGlmICghbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIExvY2tlcjxMb2NrPiBzdGF0ZUxvY2tlcihtX3N0YXRlTG9jayk7Ci0gICAg
aWYgKG1fc3RhdGUgIT0gU3RhdGU6OlJ1bm5pbmcpCi0gICAgICAgIHJldHVybjsKLSAgICBtX3N0
YXRlID0gU3RhdGU6OldpbGxTdXNwZW5kOwotCi0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBjb21w
bGV0aW9uSGFuZGxlckNhbGxlci5yZWxlYXNlKCldICgpIG11dGFibGUgewotICAgICAgICBMb2Nr
ZXI8TG9jaz4gc3RhdGVMb2NrZXIobV9zdGF0ZUxvY2spOwotICAgICAgICBBU1NFUlQobV9zdGF0
ZSAhPSBTdGF0ZTo6U3VzcGVuZGVkKTsKLQotICAgICAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6
V2lsbFN1c3BlbmQpIHsKLSAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
LQotICAgICAgICBtX3N0YXRlID0gU3RhdGU6OlN1c3BlbmRlZDsKLSAgICAgICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICAgICAgCi0g
ICAgICAgIHdoaWxlIChtX3N0YXRlID09IFN0YXRlOjpTdXNwZW5kZWQpCi0gICAgICAgICAgICBt
X3N0YXRlQ2hhbmdlQ29uZGl0aW9uLndhaXQobV9zdGF0ZUxvY2spOwotICAgICAgICBBU1NFUlQo
bV9zdGF0ZSA9PSBTdGF0ZTo6UnVubmluZyk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgU3RvcmFnZU1h
bmFnZXI6OnJlc3VtZSgpCi17Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBp
ZiAoIW1fbG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyKQotICAgICAgICByZXR1cm47CisgICAg
aWYgKCFtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZXMuaXNWYWxpZEtleShzdG9yYWdlTmFtZXNwYWNl
SUQpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIExvY2tlcjxMb2NrPiBzdGF0ZUxv
Y2tlcihtX3N0YXRlTG9jayk7Ci0gICAgYXV0byBwcmV2aW91c1N0YXRlID0gbV9zdGF0ZTsKLSAg
ICBtX3N0YXRlID0gU3RhdGU6OlJ1bm5pbmc7Ci0gICAgaWYgKHByZXZpb3VzU3RhdGUgPT0gU3Rh
dGU6OlN1c3BlbmRlZCkKLSAgICAgICAgbV9zdGF0ZUNoYW5nZUNvbmRpdGlvbi5ub3RpZnlPbmUo
KTsKKyAgICByZXR1cm4gbV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2VzLmVuc3VyZShzdG9yYWdlTmFt
ZXNwYWNlSUQsIFt0aGlzLCBzdG9yYWdlTmFtZXNwYWNlSURdKCkgeworICAgICAgICByZXR1cm4g
TG9jYWxTdG9yYWdlTmFtZXNwYWNlOjpjcmVhdGUoKnRoaXMsIHN0b3JhZ2VOYW1lc3BhY2VJRCk7
CisgICAgfSkuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogfQogCi1TdG9yYWdlQXJlYSogU3RvcmFn
ZU1hbmFnZXI6OmZpbmRTdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVp
bnQ2NF90IHN0b3JhZ2VNYXBJRCkgY29uc3QKK1RyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFj
ZSogU3RvcmFnZU1hbmFnZXI6OmdldE9yQ3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNw
YWNlKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhJiYgdG9wTGV2ZWxPcmlnaW4pCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7
Ci0gICAgc3RkOjpwYWlyPElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIHVpbnQ2NF90PiBjb25u
ZWN0aW9uQW5kU3RvcmFnZU1hcElEUGFpcihjb25uZWN0aW9uLnVuaXF1ZUlEKCksIHN0b3JhZ2VN
YXBJRCk7CiAKLSAgICBpZiAoIW1fc3RvcmFnZUFyZWFzQnlDb25uZWN0aW9uLmlzVmFsaWRLZXko
Y29ubmVjdGlvbkFuZFN0b3JhZ2VNYXBJRFBhaXIpKQorICAgIGlmICghbV90cmFuc2llbnRMb2Nh
bFN0b3JhZ2VOYW1lc3BhY2VzLmlzVmFsaWRLZXkoeyBzdG9yYWdlTmFtZXNwYWNlSUQsIHRvcExl
dmVsT3JpZ2luIH0pKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBtX3N0
b3JhZ2VBcmVhc0J5Q29ubmVjdGlvbi5nZXQoY29ubmVjdGlvbkFuZFN0b3JhZ2VNYXBJRFBhaXIp
OworICAgIHJldHVybiBtX3RyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZXMuZW5zdXJlKHsg
c3RvcmFnZU5hbWVzcGFjZUlELCBXVEZNb3ZlKHRvcExldmVsT3JpZ2luKSB9LCBbXSgpeworICAg
ICAgICByZXR1cm4gVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlOjpjcmVhdGUoKTsKKyAg
ICB9KS5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CiB9CiAKLUxvY2FsU3RvcmFnZU5hbWVzcGFjZSog
U3RvcmFnZU1hbmFnZXI6OmdldE9yQ3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90
IHN0b3JhZ2VOYW1lc3BhY2VJRCkKK1Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlKiBTdG9yYWdlTWFu
YWdlcjo6Z2V0T3JDcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBzdG9yYWdl
TmFtZXNwYWNlSUQpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgaWYg
KCFtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZXMuaXNWYWxpZEtleShzdG9yYWdlTmFtZXNwYWNlSUQp
KQorCisgICAgaWYgKCFtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlcy5pc1ZhbGlkS2V5KHN0b3Jh
Z2VOYW1lc3BhY2VJRCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIG1f
bG9jYWxTdG9yYWdlTmFtZXNwYWNlcy5lbnN1cmUoc3RvcmFnZU5hbWVzcGFjZUlELCBbdGhpcywg
c3RvcmFnZU5hbWVzcGFjZUlEXSgpIHsKLSAgICAgICAgcmV0dXJuIExvY2FsU3RvcmFnZU5hbWVz
cGFjZTo6Y3JlYXRlKCp0aGlzLCBzdG9yYWdlTmFtZXNwYWNlSUQpOworICAgIHJldHVybiBtX3Nl
c3Npb25TdG9yYWdlTmFtZXNwYWNlcy5lbnN1cmUoc3RvcmFnZU5hbWVzcGFjZUlELCBbXSB7Cisg
ICAgICAgIC8vIFdlIGN1cnJlbnRseSBoYXZlIG5vIGxpbWl0IG9uIHNlc3Npb24gc3RvcmFnZS4K
KyAgICAgICAgcmV0dXJuIFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlOjpjcmVhdGUoc3RkOjpudW1l
cmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWUuZ2V0
KCk7CiB9CiAKLVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSogU3RvcmFnZU1hbmFnZXI6
OmdldE9yQ3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IHN0b3Jh
Z2VOYW1lc3BhY2VJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wTGV2ZWxPcmln
aW4pCit2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpjbGVhclN0b3JhZ2VOYW1lc3BhY2VzKCkKIHsKICAg
ICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBpZiAoIW1fdHJhbnNpZW50TG9jYWxT
dG9yYWdlTmFtZXNwYWNlcy5pc1ZhbGlkS2V5KHsgc3RvcmFnZU5hbWVzcGFjZUlELCB0b3BMZXZl
bE9yaWdpbiB9KSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gbV90cmFu
c2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2VzLmVuc3VyZSh7IHN0b3JhZ2VOYW1lc3BhY2VJRCwg
V1RGTW92ZSh0b3BMZXZlbE9yaWdpbikgfSwgW10oKXsKLSAgICAgICAgcmV0dXJuIFRyYW5zaWVu
dExvY2FsU3RvcmFnZU5hbWVzcGFjZTo6Y3JlYXRlKCk7Ci0gICAgfSkuaXRlcmF0b3ItPnZhbHVl
LmdldCgpOworICAgIG1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlcy5jbGVhcigpOworICAgIG1fdHJh
bnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlcy5jbGVhcigpOworICAgIG1fc2Vzc2lvblN0b3Jh
Z2VOYW1lc3BhY2VzLmNsZWFyKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5h
Z2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1h
bmFnZXIuaAppbmRleCAzMTk5YTQyMGE4ZmRiY2JiMWY3N2Q3MmQwMTdlYTZiM2MwODA5NTBmLi42
YjUzZTFiMmUwNDQ5ZjliM2MwNDAzYjUzMjNhZWFkMDBjM2E5NjA5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIu
aApAQCAtNDksNyArNDksNyBAQCBjbGFzcyBXZWJQcm9jZXNzUHJveHk7CiAKIHVzaW5nIEdldFZh
bHVlc0NhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoTWFwPFN0cmlu
ZywgU3RyaW5nPiYpPjsKIAotY2xhc3MgU3RvcmFnZU1hbmFnZXIgOiBwdWJsaWMgSVBDOjpDb25u
ZWN0aW9uOjpXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIgeworY2xhc3MgU3RvcmFnZU1hbmFnZXIg
OiBwdWJsaWMgUmVmQ291bnRlZDxTdG9yYWdlTWFuYWdlcj4gewogcHVibGljOgogICAgIHN0YXRp
YyBSZWY8U3RvcmFnZU1hbmFnZXI+IGNyZWF0ZShTdHJpbmcmJiBsb2NhbFN0b3JhZ2VEaXJlY3Rv
cnkpCiAgICAgewpAQCAtNjAsNzggKzYwLDQxIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY3JlYXRl
U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCB1bnNp
Z25lZCBxdW90YUluQnl0ZXMpOwogICAgIHZvaWQgZGVzdHJveVNlc3Npb25TdG9yYWdlTmFtZXNw
YWNlKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCk7Ci0gICAgdm9pZCBhZGRBbGxvd2VkU2Vz
c2lvblN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0aW9uKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJ
RCwgSVBDOjpDb25uZWN0aW9uJik7Ci0gICAgdm9pZCByZW1vdmVBbGxvd2VkU2Vzc2lvblN0b3Jh
Z2VOYW1lc3BhY2VDb25uZWN0aW9uKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgSVBDOjpD
b25uZWN0aW9uJik7CiAgICAgdm9pZCBjbG9uZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2
NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgdWludDY0X3QgbmV3U3RvcmFnZU5hbWVzcGFjZUlEKTsK
IAotICAgIHZvaWQgcHJvY2Vzc0RpZENsb3NlQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24mKTsK
LSAgICB2b2lkIHdhaXRVbnRpbFRhc2tzRmluaXNoZWQoKTsKLSAgICB2b2lkIHN1c3BlbmQoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIHJlc3VtZSgpOwotCi0gICAgdm9p
ZCBnZXRTZXNzaW9uU3RvcmFnZU9yaWdpbnMoRnVuY3Rpb248dm9pZChIYXNoU2V0PFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpOworICAgIHZvaWQg
Z2V0U2Vzc2lvblN0b3JhZ2VPcmlnaW5zKEZ1bmN0aW9uPHZvaWQoSGFzaFNldDxXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGE+JiYpPiYmKTsKICAgICB2b2lkIGRlbGV0ZVNlc3Npb25TdG9yYWdl
T3JpZ2lucyhGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwotICAgIHZvaWQg
ZGVsZXRlU2Vzc2lvblN0b3JhZ2VFbnRyaWVzRm9yT3JpZ2lucyhjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYsIEZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcik7Ci0KLSAgICB2b2lkIGdldExvY2FsU3RvcmFnZU9yaWdpbnMoRnVuY3Rpb248dm9pZChI
YXNoU2V0PFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpOwotICAgIHZvaWQgZGVsZXRlTG9jYWxTdG9yYWdlRW50cmllc0Zvck9yaWdpbihjb25zdCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmKTsKKyAgICB2b2lkIGRlbGV0ZVNlc3Npb25TdG9y
YWdlRW50cmllc0Zvck9yaWdpbnMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YT4mLCBGdW5jdGlvbjx2b2lkKCk+JiYpOwogCi0gICAgdm9pZCBkZWxldGVMb2NhbFN0b3Jh
Z2VPcmlnaW5zTW9kaWZpZWRTaW5jZShXYWxsVGltZSwgRnVuY3Rpb248dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKTsKLSAgICB2b2lkIGRlbGV0ZUxvY2FsU3RvcmFnZUVudHJpZXNGb3JPcmln
aW5zKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiwgRnVuY3Rpb248
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICB2b2lkIGdldExvY2FsU3RvcmFnZU9y
aWdpbnMoRnVuY3Rpb248dm9pZChIYXNoU2V0PFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4m
Jik+JiYpOworICAgIHZvaWQgZGVsZXRlTG9jYWxTdG9yYWdlT3JpZ2luc01vZGlmaWVkU2luY2Uo
V2FsbFRpbWUsIEZ1bmN0aW9uPHZvaWQoKT4mJik7CisgICAgdm9pZCBkZWxldGVMb2NhbFN0b3Jh
Z2VFbnRyaWVzRm9yT3JpZ2lucyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhPiYsIEZ1bmN0aW9uPHZvaWQoKT4mJik7CisgICAgdm9pZCBnZXRMb2NhbFN0b3JhZ2VPcmln
aW5EZXRhaWxzKEZ1bmN0aW9uPHZvaWQoVmVjdG9yPExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tl
cjo6T3JpZ2luRGV0YWlscz4mJik+JiYpOwogCi0gICAgdm9pZCBnZXRMb2NhbFN0b3JhZ2VPcmln
aW5EZXRhaWxzKEZ1bmN0aW9uPHZvaWQoVmVjdG9yPExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tl
cjo6T3JpZ2luRGV0YWlscz4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpOworICAgIHZvaWQgY2xl
YXJTdG9yYWdlTmFtZXNwYWNlcygpOwogCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBD
OjpFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKTsKICAgICAKICAgICBMb2NhbFN0b3JhZ2VEYXRhYmFz
ZVRyYWNrZXIqIGxvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcigpIGNvbnN0IHsgcmV0dXJuIG1f
bG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmdldCgpOyB9CiAgICAgCi0gICAgV29ya1F1ZXVl
JiB3b3JrUXVldWUoKSBjb25zdCB7IHJldHVybiBtX3F1ZXVlLmdldCgpOyB9Ci0gICAgCiAgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIGxvY2FsU3RvcmFnZURhdGFiYXNlUXVvdGFJbkJ5dGVzOwog
CisgICAgU3RvcmFnZUFyZWEqIGNyZWF0ZUxvY2FsU3RvcmFnZUFyZWEodWludDY0X3Qgc3RvcmFn
ZU5hbWVzcGFjZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJik7CisgICAgU3RvcmFn
ZUFyZWEqIGNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZUFyZWEodWludDY0X3Qgc3RvcmFnZU5h
bWVzcGFjZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiYpOworICAgIFN0b3JhZ2VBcmVhKiBjcmVhdGVTZXNzaW9uU3RvcmFnZUFy
ZWEodWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEmJik7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgU3RvcmFnZU1hbmFnZXIoU3RyaW5nJiYg
bG9jYWxTdG9yYWdlRGlyZWN0b3J5KTsKIAotICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMuCi0gICAg
dm9pZCBjcmVhdGVMb2NhbFN0b3JhZ2VNYXAoSVBDOjpDb25uZWN0aW9uJiwgdWludDY0X3Qgc3Rv
cmFnZU1hcElELCB1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYmKTsKLSAgICB2b2lkIGNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU1hcChJ
UEM6OkNvbm5lY3Rpb24mLCB1aW50NjRfdCBzdG9yYWdlTWFwSUQsIHVpbnQ2NF90IHN0b3JhZ2VO
YW1lc3BhY2VJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wTGV2ZWxPcmlnaW5E
YXRhLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJik7Ci0gICAgdm9pZCBjcmVhdGVTZXNz
aW9uU3RvcmFnZU1hcChJUEM6OkNvbm5lY3Rpb24mLCB1aW50NjRfdCBzdG9yYWdlTWFwSUQsIHVp
bnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYp
OwotICAgIHZvaWQgZGVzdHJveVN0b3JhZ2VNYXAoSVBDOjpDb25uZWN0aW9uJiwgdWludDY0X3Qg
c3RvcmFnZU1hcElEKTsKLQotICAgIHZvaWQgZ2V0VmFsdWVzKElQQzo6Q29ubmVjdGlvbiYsIHVp
bnQ2NF90IHN0b3JhZ2VNYXBJRCwgdWludDY0X3Qgc3RvcmFnZU1hcFNlZWQsIEdldFZhbHVlc0Nh
bGxiYWNrJiYpOwotICAgIHZvaWQgcHJld2FybShJUEM6OkNvbm5lY3Rpb24mLCB1aW50NjRfdCBz
dG9yYWdlTWFwSUQpOwotICAgIHZvaWQgc2V0SXRlbShJUEM6OkNvbm5lY3Rpb24mLCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgdWludDY0X3Qgc3RvcmFnZU1hcElELCB1aW50NjRfdCBz
b3VyY2VTdG9yYWdlQXJlYUlELCB1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCwgY29uc3QgU3RyaW5n
JiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKTsKLSAg
ICB2b2lkIHNldEl0ZW1zKElQQzo6Q29ubmVjdGlvbiYsIHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCwg
Y29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIGl0ZW1zKTsKLSAgICB2b2lkIHJlbW92ZUl0
ZW0oSVBDOjpDb25uZWN0aW9uJiwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIHVpbnQ2
NF90IHN0b3JhZ2VNYXBJRCwgdWludDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwgdWludDY0X3Qg
c3RvcmFnZU1hcFNlZWQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHVybFN0cmlu
Zyk7Ci0gICAgdm9pZCBjbGVhcihJUEM6OkNvbm5lY3Rpb24mLCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmJiwgdWludDY0X3Qgc3RvcmFnZU1hcElELCB1aW50NjRfdCBzb3VyY2VTdG9yYWdl
QXJlYUlELCB1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcp
OwotCi0gICAgU3RvcmFnZUFyZWEqIGZpbmRTdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb24mLCB1
aW50NjRfdCkgY29uc3Q7Ci0KICAgICBMb2NhbFN0b3JhZ2VOYW1lc3BhY2UqIGdldE9yQ3JlYXRl
TG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCk7Ci0KICAg
ICBUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UqIGdldE9yQ3JlYXRlVHJhbnNpZW50TG9j
YWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wTGV2ZWxPcmlnaW4pOwotCi0gICAgUmVmPFdvcmtRdWV1
ZT4gbV9xdWV1ZTsKKyAgICBTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSogZ2V0T3JDcmVhdGVTZXNz
aW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQpOwogCiAgICAg
UmVmUHRyPExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcj4gbV9sb2NhbFN0b3JhZ2VEYXRhYmFz
ZVRyYWNrZXI7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPExvY2FsU3RvcmFnZU5hbWVz
cGFjZT4+IG1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlczsKLQogICAgIEhhc2hNYXA8c3RkOjpwYWly
PHVpbnQ2NF90LCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+LCBSZWZQdHI8VHJhbnNpZW50
TG9jYWxTdG9yYWdlTmFtZXNwYWNlPj4gbV90cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2Vz
OwotCiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFNlc3Npb25TdG9yYWdlTmFtZXNwYWNl
Pj4gbV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXM7Ci0KLSAgICBIYXNoTWFwPHN0ZDo6cGFpcjxJ
UEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCB1aW50NjRfdD4sIFJlZlB0cjxTdG9yYWdlQXJlYT4+
IG1fc3RvcmFnZUFyZWFzQnlDb25uZWN0aW9uOwotICAgIEhhc2hTZXQ8SVBDOjpDb25uZWN0aW9u
OjpVbmlxdWVJRD4gbV9jb25uZWN0aW9uczsKLQotICAgIGVudW0gY2xhc3MgU3RhdGUgewotICAg
ICAgICBSdW5uaW5nLAotICAgICAgICBXaWxsU3VzcGVuZCwKLSAgICAgICAgU3VzcGVuZGVkCi0g
ICAgfTsKLSAgICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6OlJ1bm5pbmcgfTsKLSAgICBMb2NrIG1f
c3RhdGVMb2NrOwotICAgIENvbmRpdGlvbiBtX3N0YXRlQ2hhbmdlQ29uZGl0aW9uOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIubWVzc2FnZXMuaW4K
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc4YmI2YWIyNDAyOGEyNTNhYTExODU0MjAx
ZDZhMTVkMjVjZTJjNmYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5h
Z2VyLm1lc3NhZ2VzLmluCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotIyBDb3B5cmln
aHQgKEMpIDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMK
LSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJyBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SCi0jIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLW1lc3NhZ2VzIC0+IFN0b3JhZ2VN
YW5hZ2VyIHsKLSAgICBDcmVhdGVMb2NhbFN0b3JhZ2VNYXAodWludDY0X3Qgc3RvcmFnZU1hcElE
LCB1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEgc2VjdXJpdHlPcmlnaW5EYXRhKSBXYW50c0Nvbm5lY3Rpb24KLSAgICBDcmVhdGVU
cmFuc2llbnRMb2NhbFN0b3JhZ2VNYXAodWludDY0X3Qgc3RvcmFnZU1hcElELCB1aW50NjRfdCBz
dG9yYWdlTmFtZXNwYWNlSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgdG9w
TGV2ZWxTZWN1cml0eU9yaWdpbkRhdGEsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEgc2VjdXJpdHlPcmlnaW5EYXRhKSBXYW50c0Nvbm5lY3Rpb24KLSAgICBDcmVhdGVTZXNzaW9u
U3RvcmFnZU1hcCh1aW50NjRfdCBzdG9yYWdlTWFwSUQsIHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3Bh
Y2VJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBzZWN1cml0eU9yaWdpbkRh
dGEpIFdhbnRzQ29ubmVjdGlvbgotICAgIERlc3Ryb3lTdG9yYWdlTWFwKHVpbnQ2NF90IHN0b3Jh
Z2VNYXBJRCkgV2FudHNDb25uZWN0aW9uCi0KLSAgICBQcmV3YXJtKHVpbnQ2NF90IHN0b3JhZ2VN
YXBJRCkgV2FudHNDb25uZWN0aW9uCi0gICAgR2V0VmFsdWVzKHVpbnQ2NF90IHN0b3JhZ2VNYXBJ
RCwgdWludDY0X3Qgc3RvcmFnZU1hcFNlZWQpIC0+IChIYXNoTWFwPFN0cmluZywgU3RyaW5nPiB2
YWx1ZXMpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgotCi0gICAgU2V0SXRlbShzdHJ1Y3Qg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHNlY3VyaXR5T3JpZ2luRGF0YSwgdWludDY0X3Qg
c3RvcmFnZU1hcElELCB1aW50NjRfdCBzb3VyY2VTdG9yYWdlQXJlYUlELCB1aW50NjRfdCBzdG9y
YWdlTWFwU2VlZCwgU3RyaW5nIGtleSwgU3RyaW5nIHZhbHVlLCBTdHJpbmcgdXJsU3RyaW5nKSBX
YW50c0Nvbm5lY3Rpb24KLSAgICBTZXRJdGVtcyh1aW50NjRfdCBzdG9yYWdlTWFwSUQsIEhhc2hN
YXA8U3RyaW5nLCBTdHJpbmc+IGl0ZW1zKSBXYW50c0Nvbm5lY3Rpb24KLSAgICBSZW1vdmVJdGVt
KHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgc2VjdXJpdHlPcmlnaW5EYXRhLCB1
aW50NjRfdCBzdG9yYWdlTWFwSUQsIHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIHVpbnQ2
NF90IHN0b3JhZ2VNYXBTZWVkLCBTdHJpbmcga2V5LCBTdHJpbmcgdXJsU3RyaW5nKSBXYW50c0Nv
bm5lY3Rpb24KLSAgICBDbGVhcihzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHNl
Y3VyaXR5T3JpZ2luRGF0YSwgdWludDY0X3Qgc3RvcmFnZU1hcElELCB1aW50NjRfdCBzb3VyY2VT
dG9yYWdlQXJlYUlELCB1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCwgU3RyaW5nIHVybFN0cmluZykg
V2FudHNDb25uZWN0aW9uCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0LmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
MWM3YjcxYmY0NTMwMzExZjg5OTk2ZGRmOGQ0NjgwZTliYjA5MjRhCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2Vy
U2V0LmNwcApAQCAtMCwwICsxLDQwOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTdG9yYWdlTWFu
YWdlclNldC5oIgorCisjaW5jbHVkZSAiU3RvcmFnZUFyZWFNYXBNZXNzYWdlcy5oIgorI2luY2x1
ZGUgIlN0b3JhZ2VNYW5hZ2VyU2V0TWVzc2FnZXMuaCIKKyNpbmNsdWRlIDx3dGYvdGhyZWFkcy9C
aW5hcnlTZW1hcGhvcmUuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NvbnN0IHVpbnQ2NF90
IGludmFsaWRTdG9yYWdlQXJlYUlEID0gMDsKKworUmVmPFN0b3JhZ2VNYW5hZ2VyU2V0PiBTdG9y
YWdlTWFuYWdlclNldDo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9y
YWdlTWFuYWdlclNldCk7Cit9CisKK1N0b3JhZ2VNYW5hZ2VyU2V0OjpTdG9yYWdlTWFuYWdlclNl
dCgpCisgICAgOiBtX3F1ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0Lldl
YlN0b3JhZ2UiKSkKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgLy8g
TWFrZSBzdXJlIHRoZSBlbmNvZGluZyBpcyBpbml0aWFsaXplZCBiZWZvcmUgd2Ugc3RhcnQgZGlz
cGF0Y2hpbmcgdGhpbmdzIHRvIHRoZSBxdWV1ZS4KKyAgICBVVEY4RW5jb2RpbmcoKTsKK30KKwor
U3RvcmFnZU1hbmFnZXJTZXQ6On5TdG9yYWdlTWFuYWdlclNldCgpCit7CisgICAgQVNTRVJUKFJ1
bkxvb3A6OmlzTWFpbigpKTsKKworICAgIHdhaXRVbnRpbFRhc2tzRmluaXNoZWQoKTsKK30KKwor
dm9pZCBTdG9yYWdlTWFuYWdlclNldDo6YWRkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29u
c3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZSYgbG9jYWxTdG9yYWdlRGlyZWN0b3J5SGFuZGxlKQoreworICAgIEFTU0VSVChSdW5Mb29wOjpp
c01haW4oKSk7CisKKyAgICBhdXRvW2l0ZXIsIGlzTmV3RW50cnldID0gbV9zdG9yYWdlTWFuYWdl
clBhdGhzLmFkZChzZXNzaW9uSUQsIGxvY2FsU3RvcmFnZURpcmVjdG9yeSk7CisgICAgaWYgKGlz
TmV3RW50cnkpIHsKKyAgICAgICAgaWYgKCFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKKyAgICAg
ICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShsb2NhbFN0b3JhZ2VE
aXJlY3RvcnlIYW5kbGUpOworCisgICAgICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHNlc3Npb25JRCwgZGlyZWN0b3J5ID0gbG9jYWxT
dG9yYWdlRGlyZWN0b3J5Lmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUgeworICAgICAgICAgICAg
bV9zdG9yYWdlTWFuYWdlcnMuZW5zdXJlKHNlc3Npb25JRCwgW2RpcmVjdG9yeV0oKSBtdXRhYmxl
IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZShXVEZNb3Zl
KGRpcmVjdG9yeSkpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0KK30KKwor
dm9pZCBTdG9yYWdlTWFuYWdlclNldDo6cmVtb3ZlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkK
K3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgaWYgKG1fc3RvcmFnZU1h
bmFnZXJQYXRocy5yZW1vdmUoc2Vzc2lvbklEKSkgeworICAgICAgICBtX3F1ZXVlLT5kaXNwYXRj
aChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzZXNzaW9uSURdKCkgewor
ICAgICAgICAgICAgbV9zdG9yYWdlTWFuYWdlcnMucmVtb3ZlKHNlc3Npb25JRCk7CisgICAgICAg
IH0pOworICAgIH0KK30KKworYm9vbCBTdG9yYWdlTWFuYWdlclNldDo6Y29udGFpbnMoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklEKQoreworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisK
KyAgICByZXR1cm4gbV9zdG9yYWdlTWFuYWdlclBhdGhzLmNvbnRhaW5zKHNlc3Npb25JRCk7Cit9
CisKK3ZvaWQgU3RvcmFnZU1hbmFnZXJTZXQ6OmFkZENvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uKSAKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAg
YXV0byBjb25uZWN0aW9uSUQgPSBjb25uZWN0aW9uLnVuaXF1ZUlEKCk7CisgICAgQVNTRVJUKCFt
X2Nvbm5lY3Rpb25zLmNvbnRhaW5zKGNvbm5lY3Rpb25JRCkpOworICAgIGlmIChtX2Nvbm5lY3Rp
b25zLmFkZChjb25uZWN0aW9uSUQpLmlzTmV3RW50cnkpCisgICAgICAgIGNvbm5lY3Rpb24uYWRk
V29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdlclNldDo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpLCBtX3F1ZXVlLmdldCgpLCB0aGlzKTsKK30KKwordm9pZCBTdG9y
YWdlTWFuYWdlclNldDo6cmVtb3ZlQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24pCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIGF1dG8gY29ubmVj
dGlvbklEID0gY29ubmVjdGlvbi51bmlxdWVJRCgpOworICAgIEFTU0VSVChtX2Nvbm5lY3Rpb25z
LmNvbnRhaW5zKGNvbm5lY3Rpb25JRCkpOworICAgIG1fY29ubmVjdGlvbnMucmVtb3ZlKGNvbm5l
Y3Rpb25JRCk7CisgICAgY29ubmVjdGlvbi5yZW1vdmVXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIo
TWVzc2FnZXM6OlN0b3JhZ2VNYW5hZ2VyU2V0OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOworCisg
ICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgY29ubmVjdGlvbklEXSgpIHsKKyAgICAgICAgZm9yIChhdXRvJiBzdG9yYWdlQXJlYSA6IG1f
c3RvcmFnZUFyZWFzLnZhbHVlcygpKQorICAgICAgICAgICAgc3RvcmFnZUFyZWEtPnJlbW92ZUxp
c3RlbmVyKGNvbm5lY3Rpb25JRCk7CisgICAgfSk7Cit9CisKK3ZvaWQgU3RvcmFnZU1hbmFnZXJT
ZXQ6OndhaXRVbnRpbFRhc2tzRmluaXNoZWQoKQoreworICAgIEFTU0VSVChSdW5Mb29wOjppc01h
aW4oKSk7CisKKyAgICBCaW5hcnlTZW1hcGhvcmUgc2VtYXBob3JlOworICAgIG1fcXVldWUtPmRp
c3BhdGNoKFt0aGlzLCAmc2VtYXBob3JlXSB7CisgICAgICAgIGZvciAoYXV0byYgW3Nlc3Npb25J
RCwgc3RvcmFnZU1hbmFnZXJdIDogbV9zdG9yYWdlTWFuYWdlcnMpCisgICAgICAgICAgICBzdG9y
YWdlTWFuYWdlci0+Y2xlYXJTdG9yYWdlTmFtZXNwYWNlcygpOworCisgICAgICAgIG1fc3RvcmFn
ZU1hbmFnZXJzLmNsZWFyKCk7CisgICAgICAgIG1fc3RvcmFnZUFyZWFzLmNsZWFyKCk7CisKKyAg
ICAgICAgc2VtYXBob3JlLnNpZ25hbCgpOworICAgIH0pOworICAgIHNlbWFwaG9yZS53YWl0KCk7
Cit9CisKK3ZvaWQgU3RvcmFnZU1hbmFnZXJTZXQ6OndhaXRVbnRpbFN5bmNpbmdMb2NhbFN0b3Jh
Z2VGaW5pc2hlZCgpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIEJp
bmFyeVNlbWFwaG9yZSBzZW1hcGhvcmU7CisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsICZz
ZW1hcGhvcmVdIHsKKyAgICAgICAgZm9yIChhdXRvKiBzdG9yYWdlQXJlYSA6IG1fc3RvcmFnZUFy
ZWFzLnZhbHVlcygpKQorICAgICAgICAgICAgc3RvcmFnZUFyZWEtPnN5bmNUb0RhdGFiYXNlKCk7
CisKKyAgICAgICAgc2VtYXBob3JlLnNpZ25hbCgpOworICAgIH0pOworICAgIHNlbWFwaG9yZS53
YWl0KCk7Cit9CisKK3ZvaWQgU3RvcmFnZU1hbmFnZXJTZXQ6OnN1c3BlbmQoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIEFTU0VSVChSdW5Mb29w
Ojppc01haW4oKSk7CisKKyAgICBDb21wbGV0aW9uSGFuZGxlckNhbGxpbmdTY29wZSBjb21wbGV0
aW9uSGFuZGxlckNhbGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgTG9ja2Vy
PExvY2s+IHN0YXRlTG9ja2VyKG1fc3RhdGVMb2NrKTsKKyAgICBpZiAobV9zdGF0ZSAhPSBTdGF0
ZTo6UnVubmluZykKKyAgICAgICAgcmV0dXJuOworICAgIG1fc3RhdGUgPSBTdGF0ZTo6V2lsbFN1
c3BlbmQ7CisKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IGNvbXBsZXRpb25IYW5kbGVyQ2FsbGVy
LnJlbGVhc2UoKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIExvY2tlcjxMb2NrPiBzdGF0ZUxvY2tl
cihtX3N0YXRlTG9jayk7CisgICAgICAgIEFTU0VSVChtX3N0YXRlICE9IFN0YXRlOjpTdXNwZW5k
ZWQpOworCisgICAgICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpXaWxsU3VzcGVuZCkgeworICAg
ICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIG1fc3RhdGUg
PSBTdGF0ZTo6U3VzcGVuZGVkOworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworCisgICAgICAgIHdoaWxlIChtX3N0YXRlID09IFN0
YXRlOjpTdXNwZW5kZWQpCisgICAgICAgICAgICBtX3N0YXRlQ2hhbmdlQ29uZGl0aW9uLndhaXQo
bV9zdGF0ZUxvY2spOworICAgICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6UnVubmluZyk7
CisgICAgfSk7Cit9CisKK3ZvaWQgU3RvcmFnZU1hbmFnZXJTZXQ6OnJlc3VtZSgpCit7CisgICAg
QVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIExvY2tlcjxMb2NrPiBzdGF0ZUxvY2tl
cihtX3N0YXRlTG9jayk7CisgICAgYXV0byBwcmV2aW91c1N0YXRlID0gbV9zdGF0ZTsKKyAgICBt
X3N0YXRlID0gU3RhdGU6OlJ1bm5pbmc7CisgICAgaWYgKHByZXZpb3VzU3RhdGUgPT0gU3RhdGU6
OlN1c3BlbmRlZCkKKyAgICAgICAgbV9zdGF0ZUNoYW5nZUNvbmRpdGlvbi5ub3RpZnlPbmUoKTsK
K30KKwordm9pZCBTdG9yYWdlTWFuYWdlclNldDo6Z2V0U2Vzc2lvblN0b3JhZ2VPcmlnaW5zKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0PFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7Cisg
ICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgc2Vzc2lvbklELCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSgpIG11dGFibGUgeworICAgICAgICBhdXRvKiBzdG9yYWdlTWFuYWdlciA9IG1fc3RvcmFn
ZU1hbmFnZXJzLmdldChzZXNzaW9uSUQpOworICAgICAgICBBU1NFUlQoc3RvcmFnZU1hbmFnZXIp
OworCisgICAgICAgIHN0b3JhZ2VNYW5hZ2VyLT5nZXRTZXNzaW9uU3RvcmFnZU9yaWdpbnMoV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIH0pOworfQorCit2b2lkIFN0b3JhZ2VNYW5h
Z2VyU2V0OjpkZWxldGVTZXNzaW9uU3RvcmFnZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBtX3F1
ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzZXNz
aW9uSUQsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkg
bXV0YWJsZSB7CisgICAgICAgIGF1dG8qIHN0b3JhZ2VNYW5hZ2VyID0gbV9zdG9yYWdlTWFuYWdl
cnMuZ2V0KHNlc3Npb25JRCk7CisgICAgICAgIEFTU0VSVChzdG9yYWdlTWFuYWdlcik7CisKKyAg
ICAgICAgc3RvcmFnZU1hbmFnZXItPmRlbGV0ZVNlc3Npb25TdG9yYWdlT3JpZ2lucyhXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgfSk7Cit9CisKK3ZvaWQgU3RvcmFnZU1hbmFnZXJT
ZXQ6OmRlbGV0ZVNlc3Npb25TdG9yYWdlRm9yT3JpZ2lucyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiBvcmlnaW5EYXRh
cywgRGVsZXRlQ2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBtX3F1ZXVlLT5k
aXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzZXNzaW9uSUQs
IGNvcGllZE9yaWdpbkRhdGFzID0gY3Jvc3NUaHJlYWRDb3B5KG9yaWdpbkRhdGFzKSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAg
ICAgICAgYXV0byogc3RvcmFnZU1hbmFnZXIgPSBtX3N0b3JhZ2VNYW5hZ2Vycy5nZXQoc2Vzc2lv
bklEKTsKKyAgICAgICAgQVNTRVJUKHN0b3JhZ2VNYW5hZ2VyKTsKKworICAgICAgICBzdG9yYWdl
TWFuYWdlci0+ZGVsZXRlU2Vzc2lvblN0b3JhZ2VFbnRyaWVzRm9yT3JpZ2lucyhjb3BpZWRPcmln
aW5EYXRhcywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIH0pOworfQorCit2b2lk
IFN0b3JhZ2VNYW5hZ2VyU2V0OjpnZXRMb2NhbFN0b3JhZ2VPcmlnaW5zKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgR2V0T3JpZ2luc0NhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCit7Cisg
ICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgc2Vzc2lvbklELCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSgpIG11dGFibGUgeworICAgICAgICBhdXRvKiBzdG9yYWdlTWFuYWdlciA9IG1fc3RvcmFn
ZU1hbmFnZXJzLmdldChzZXNzaW9uSUQpOworICAgICAgICBBU1NFUlQoc3RvcmFnZU1hbmFnZXIp
OworCisgICAgICAgIHN0b3JhZ2VNYW5hZ2VyLT5nZXRMb2NhbFN0b3JhZ2VPcmlnaW5zKFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICB9KTsKK30KKwordm9pZCBTdG9yYWdlTWFuYWdl
clNldDo6ZGVsZXRlTG9jYWxTdG9yYWdlTW9kaWZpZWRTaW5jZShQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIFdhbGxUaW1lIHRpbWUsIERlbGV0ZUNhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIp
Cit7CisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgc2Vzc2lvbklELCB0aW1lLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICBhdXRvKiBzdG9yYWdlTWFuYWdl
ciA9IG1fc3RvcmFnZU1hbmFnZXJzLmdldChzZXNzaW9uSUQpOworICAgICAgICBBU1NFUlQoc3Rv
cmFnZU1hbmFnZXIpOworCisgICAgICAgIHN0b3JhZ2VNYW5hZ2VyLT5kZWxldGVMb2NhbFN0b3Jh
Z2VPcmlnaW5zTW9kaWZpZWRTaW5jZSh0aW1lLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CisgICAgfSk7Cit9CisKK3ZvaWQgU3RvcmFnZU1hbmFnZXJTZXQ6OmRlbGV0ZUxvY2FsU3RvcmFn
ZUZvck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYgb3JpZ2luRGF0YXMsIERlbGV0ZUNhbGxiYWNrJiYgY29t
cGxldGlvbkhhbmRsZXIpCit7CisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc2Vzc2lvbklELCBjb3BpZWRPcmlnaW5EYXRhcyA9IGNy
b3NzVGhyZWFkQ29weShvcmlnaW5EYXRhcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8qIHN0b3JhZ2VNYW5h
Z2VyID0gbV9zdG9yYWdlTWFuYWdlcnMuZ2V0KHNlc3Npb25JRCk7CisgICAgICAgIEFTU0VSVChz
dG9yYWdlTWFuYWdlcik7CisKKyAgICAgICAgc3RvcmFnZU1hbmFnZXItPmRlbGV0ZUxvY2FsU3Rv
cmFnZUVudHJpZXNGb3JPcmlnaW5zKGNvcGllZE9yaWdpbkRhdGFzLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CisgICAgfSk7Cit9CisKK3ZvaWQgU3RvcmFnZU1hbmFnZXJTZXQ6OmdldExv
Y2FsU3RvcmFnZU9yaWdpbkRldGFpbHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6Ok9yaWdp
bkRldGFpbHM+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIG1fcXVldWUtPmRpc3Bh
dGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHNlc3Npb25JRCwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsK
KyAgICAgICAgYXV0byogc3RvcmFnZU1hbmFnZXIgPSBtX3N0b3JhZ2VNYW5hZ2Vycy5nZXQoc2Vz
c2lvbklEKTsKKyAgICAgICAgQVNTRVJUKHN0b3JhZ2VNYW5hZ2VyKTsKKworICAgICAgICBzdG9y
YWdlTWFuYWdlci0+Z2V0TG9jYWxTdG9yYWdlT3JpZ2luRGV0YWlscyhXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CisgICAgfSk7Cit9CisKK3ZvaWQgU3RvcmFnZU1hbmFnZXJTZXQ6OmNvbm5l
Y3RUb0xvY2FsU3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgU2VjdXJpdHlP
cmlnaW5EYXRhJiYgb3JpZ2luRGF0YSwgQ29ubmVjdFRvU3RvcmFnZUFyZWFDYWxsYmFjayYmIGNv
bXBsZXRpb25IYW5kbGVyKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworCisg
ICAgYXV0byogc3RvcmFnZU1hbmFnZXIgPSBtX3N0b3JhZ2VNYW5hZ2Vycy5nZXQoc2Vzc2lvbklE
KTsKKyAgICBpZiAoIXN0b3JhZ2VNYW5hZ2VyKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KGludmFsaWRTdG9yYWdlQXJlYUlEKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1
dG8qIHN0b3JhZ2VBcmVhID0gc3RvcmFnZU1hbmFnZXItPmNyZWF0ZUxvY2FsU3RvcmFnZUFyZWEo
c3RvcmFnZU5hbWVzcGFjZUlELCBXVEZNb3ZlKG9yaWdpbkRhdGEpKTsKKyAgICBpZiAoIXN0b3Jh
Z2VBcmVhKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGludmFsaWRTdG9yYWdlQXJlYUlE
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gc3RvcmFnZUFyZWFJRCA9IHN0
b3JhZ2VBcmVhLT5pZGVudGlmaWVyKCk7CisgICAgYXV0b1tpdGVyLCBpc05ld0VudHJ5XSA9IG1f
c3RvcmFnZUFyZWFzLmFkZChzdG9yYWdlQXJlYUlELCBudWxscHRyKTsKKyAgICBpZiAoaXNOZXdF
bnRyeSkgeworICAgICAgICBzdG9yYWdlQXJlYS0+c2V0V29ya1F1ZXVlKG1fcXVldWUucHRyKCkp
OworICAgICAgICBpdGVyLT52YWx1ZSA9IHN0b3JhZ2VBcmVhOworICAgIH0gZWxzZQorICAgICAg
ICBBU1NFUlQoc3RvcmFnZUFyZWEgPT0gaXRlci0+dmFsdWUpOworCisgICAgY29tcGxldGlvbkhh
bmRsZXIoc3RvcmFnZUFyZWFJRCk7CisKKyAgICBzdG9yYWdlQXJlYS0+YWRkTGlzdGVuZXIoY29u
bmVjdGlvbi51bmlxdWVJRCgpKTsKK30KKwordm9pZCBTdG9yYWdlTWFuYWdlclNldDo6Y29ubmVj
dFRvVHJhbnNpZW50TG9jYWxTdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
IFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBT
ZWN1cml0eU9yaWdpbkRhdGEmJiB0b3BMZXZlbE9yaWdpbkRhdGEsIFNlY3VyaXR5T3JpZ2luRGF0
YSYmIG9yaWdpbkRhdGEsIENvbm5lY3RUb1N0b3JhZ2VBcmVhQ2FsbGJhY2smJiBjb21wbGV0aW9u
SGFuZGxlcikKK3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIGF1dG8q
IHN0b3JhZ2VNYW5hZ2VyID0gbV9zdG9yYWdlTWFuYWdlcnMuZ2V0KHNlc3Npb25JRCk7CisgICAg
aWYgKCFzdG9yYWdlTWFuYWdlcikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihpbnZhbGlk
U3RvcmFnZUFyZWFJRCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvKiBzdG9y
YWdlQXJlYSA9IHN0b3JhZ2VNYW5hZ2VyLT5jcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVh
KHN0b3JhZ2VOYW1lc3BhY2VJRCwgV1RGTW92ZSh0b3BMZXZlbE9yaWdpbkRhdGEpLCBXVEZNb3Zl
KG9yaWdpbkRhdGEpKTsKKyAgICBpZiAoIXN0b3JhZ2VBcmVhKSB7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKGludmFsaWRTdG9yYWdlQXJlYUlEKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGF1dG8gc3RvcmFnZUFyZWFJRCA9IHN0b3JhZ2VBcmVhLT5pZGVudGlmaWVyKCk7Cisg
ICAgYXV0b1tpdGVyLCBpc05ld0VudHJ5XSA9IG1fc3RvcmFnZUFyZWFzLmFkZChzdG9yYWdlQXJl
YUlELCBudWxscHRyKTsKKyAgICBpZiAoaXNOZXdFbnRyeSkKKyAgICAgICAgaXRlci0+dmFsdWUg
PSBzdG9yYWdlQXJlYTsKKyAgICBlbHNlCisgICAgICAgIEFTU0VSVChzdG9yYWdlQXJlYSA9PSBp
dGVyLT52YWx1ZSk7CisKKyAgICBjb21wbGV0aW9uSGFuZGxlcihzdG9yYWdlQXJlYUlEKTsKKwor
ICAgIHN0b3JhZ2VBcmVhLT5hZGRMaXN0ZW5lcihjb25uZWN0aW9uLnVuaXF1ZUlEKCkpOworfQor
Cit2b2lkIFN0b3JhZ2VNYW5hZ2VyU2V0Ojpjb25uZWN0VG9TZXNzaW9uU3RvcmFnZUFyZWEoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2
NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgb3JpZ2luRGF0YSwg
Q29ubmVjdFRvU3RvcmFnZUFyZWFDYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAg
IEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgYXV0byogc3RvcmFnZU1hbmFnZXIg
PSBtX3N0b3JhZ2VNYW5hZ2Vycy5nZXQoc2Vzc2lvbklEKTsKKyAgICBpZiAoIXN0b3JhZ2VNYW5h
Z2VyKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGludmFsaWRTdG9yYWdlQXJlYUlEKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8qIHN0b3JhZ2VBcmVhID0gc3RvcmFn
ZU1hbmFnZXItPmNyZWF0ZVNlc3Npb25TdG9yYWdlQXJlYShzdG9yYWdlTmFtZXNwYWNlSUQsIFdU
Rk1vdmUob3JpZ2luRGF0YSkpOworICAgIGlmICghc3RvcmFnZUFyZWEpIHsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoaW52YWxpZFN0b3JhZ2VBcmVhSUQpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgYXV0byBzdG9yYWdlQXJlYUlEID0gc3RvcmFnZUFyZWEtPmlkZW50aWZpZXIo
KTsKKyAgICBhdXRvW2l0ZXIsIGlzTmV3RW50cnldID0gbV9zdG9yYWdlQXJlYXMuYWRkKHN0b3Jh
Z2VBcmVhSUQsIG51bGxwdHIpOworICAgIGlmIChpc05ld0VudHJ5KQorICAgICAgICBpdGVyLT52
YWx1ZSA9IHN0b3JhZ2VBcmVhOworICAgIGVsc2UKKyAgICAgICAgQVNTRVJUKHN0b3JhZ2VBcmVh
ID09IGl0ZXItPnZhbHVlKTsKKworICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0b3JhZ2VBcmVhSUQp
OworICAgIAorICAgIHN0b3JhZ2VBcmVhLT5hZGRMaXN0ZW5lcihjb25uZWN0aW9uLnVuaXF1ZUlE
KCkpOworfQorCit2b2lkIFN0b3JhZ2VNYW5hZ2VyU2V0OjpkaXNjb25uZWN0RnJvbVN0b3JhZ2VB
cmVhKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgdWludDY0X3Qgc3RvcmFnZUFyZWFJRCkK
K3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIGF1dG8qIHN0b3JhZ2VB
cmVhID0gbV9zdG9yYWdlQXJlYXMuZ2V0KHN0b3JhZ2VBcmVhSUQpOworICAgIEFTU0VSVChzdG9y
YWdlQXJlYSk7CisgICAgQVNTRVJUKHN0b3JhZ2VBcmVhLT5oYXNMaXN0ZW5lcihjb25uZWN0aW9u
LnVuaXF1ZUlEKCkpKTsKKworICAgIHN0b3JhZ2VBcmVhLT5yZW1vdmVMaXN0ZW5lcihjb25uZWN0
aW9uLnVuaXF1ZUlEKCkpOworfQorCit2b2lkIFN0b3JhZ2VNYW5hZ2VyU2V0OjpnZXRWYWx1ZXMo
SVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCB1aW50NjRfdCBzdG9yYWdlQXJlYUlELCBHZXRW
YWx1ZXNDYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIEFTU0VSVCghUnVuTG9v
cDo6aXNNYWluKCkpOworCisgICAgYXV0byogc3RvcmFnZUFyZWEgPSBtX3N0b3JhZ2VBcmVhcy5n
ZXQoc3RvcmFnZUFyZWFJRCk7CisgICAgQVNTRVJUKCFzdG9yYWdlQXJlYSB8fCBzdG9yYWdlQXJl
YS0+aGFzTGlzdGVuZXIoY29ubmVjdGlvbi51bmlxdWVJRCgpKSk7CisKKyAgICBjb21wbGV0aW9u
SGFuZGxlcihzdG9yYWdlQXJlYSA/IHN0b3JhZ2VBcmVhLT5pdGVtcygpIDogSGFzaE1hcDxTdHJp
bmcsIFN0cmluZz4oKSk7Cit9CisKK3ZvaWQgU3RvcmFnZU1hbmFnZXJTZXQ6OnNldEl0ZW0oSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCB1aW50NjRfdCBzdG9yYWdlQXJlYUlELCB1aW50NjRf
dCBzb3VyY2VTdG9yYWdlQXJlYUlELCB1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCwgY29uc3QgU3Ry
aW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQor
eworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgYXV0byogc3RvcmFnZUFy
ZWEgPSBtX3N0b3JhZ2VBcmVhcy5nZXQoc3RvcmFnZUFyZWFJRCk7CisgICAgQVNTRVJUKHN0b3Jh
Z2VBcmVhKTsKKworICAgIGJvb2wgcXVvdGFFcnJvcjsKKyAgICBzdG9yYWdlQXJlYS0+c2V0SXRl
bShjb25uZWN0aW9uLnVuaXF1ZUlEKCksIHNvdXJjZVN0b3JhZ2VBcmVhSUQsIGtleSwgdmFsdWUs
IHVybFN0cmluZywgcXVvdGFFcnJvcik7CisKKyAgICBjb25uZWN0aW9uLnNlbmQoTWVzc2FnZXM6
OlN0b3JhZ2VBcmVhTWFwOjpEaWRTZXRJdGVtKHN0b3JhZ2VNYXBTZWVkLCBrZXksIHF1b3RhRXJy
b3IpLCBzdG9yYWdlQXJlYUlEKTsKK30gCisKK3ZvaWQgU3RvcmFnZU1hbmFnZXJTZXQ6OnJlbW92
ZUl0ZW0oSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCB1aW50NjRfdCBzdG9yYWdlQXJlYUlE
LCB1aW50NjRfdCBzb3VyY2VTdG9yYWdlQXJlYUlELCB1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCwg
Y29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQoreworICAgIEFTU0VS
VCghUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgYXV0byogc3RvcmFnZUFyZWEgPSBtX3N0b3Jh
Z2VBcmVhcy5nZXQoc3RvcmFnZUFyZWFJRCk7CisgICAgQVNTRVJUKHN0b3JhZ2VBcmVhKTsKKwor
ICAgIHN0b3JhZ2VBcmVhLT5yZW1vdmVJdGVtKGNvbm5lY3Rpb24udW5pcXVlSUQoKSwgc291cmNl
U3RvcmFnZUFyZWFJRCwga2V5LCB1cmxTdHJpbmcpOworCisgICAgY29ubmVjdGlvbi5zZW5kKE1l
c3NhZ2VzOjpTdG9yYWdlQXJlYU1hcDo6RGlkUmVtb3ZlSXRlbShzdG9yYWdlTWFwU2VlZCwga2V5
KSwgc3RvcmFnZUFyZWFJRCk7Cit9CisKK3ZvaWQgU3RvcmFnZU1hbmFnZXJTZXQ6OmNsZWFyKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgdWludDY0X3Qgc3RvcmFnZUFyZWFJRCwgdWludDY0
X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwgdWludDY0X3Qgc3RvcmFnZU1hcFNlZWQsIGNvbnN0IFN0
cmluZyYgdXJsU3RyaW5nKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworCisg
ICAgYXV0byogc3RvcmFnZUFyZWEgPSBtX3N0b3JhZ2VBcmVhcy5nZXQoc3RvcmFnZUFyZWFJRCk7
CisgICAgQVNTRVJUKHN0b3JhZ2VBcmVhKTsKKworICAgIHN0b3JhZ2VBcmVhLT5jbGVhcihjb25u
ZWN0aW9uLnVuaXF1ZUlEKCksIHNvdXJjZVN0b3JhZ2VBcmVhSUQsIHVybFN0cmluZyk7CisKKyAg
ICBjb25uZWN0aW9uLnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VBcmVhTWFwOjpEaWRDbGVhcihzdG9y
YWdlTWFwU2VlZCksIHN0b3JhZ2VBcmVhSUQpOworfQorCit2b2lkIFN0b3JhZ2VNYW5hZ2VyU2V0
OjpjbG9uZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKElQQzo6Q29ubmVjdGlvbiYsIFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgZnJvbVN0b3JhZ2VOYW1lc3BhY2VJRCwgdWludDY0
X3QgdG9TdG9yYWdlTmFtZXNwYWNlSUQpCit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4o
KSk7CisKKyAgICBpZiAoYXV0byogc3RvcmFnZU1hbmFnZXIgPSBtX3N0b3JhZ2VNYW5hZ2Vycy5n
ZXQoc2Vzc2lvbklEKSkKKyAgICAgICAgc3RvcmFnZU1hbmFnZXItPmNsb25lU2Vzc2lvblN0b3Jh
Z2VOYW1lc3BhY2UoZnJvbVN0b3JhZ2VOYW1lc3BhY2VJRCwgdG9TdG9yYWdlTmFtZXNwYWNlSUQp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldC5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNzcwMzJhYzNlMmFjODZmOThjOTA5MGMyNmU5OGY1Y2EwNzgwZTFiMgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdl
TWFuYWdlclNldC5oCkBAIC0wLDAgKzEsMTAzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJTYW5kYm94RXh0
ZW5zaW9uLmgiCisjaW5jbHVkZSAiU3RvcmFnZU1hbmFnZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L1NlY3VyaXR5T3JpZ2luRGF0YS5oPgorI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KKwordXNp
bmcgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOworCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
Y2xhc3MgU2FuZGJveEV4dGVuc2lvbjsKKwordXNpbmcgQ29ubmVjdFRvU3RvcmFnZUFyZWFDYWxs
YmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QpPjsKK3VzaW5nIEdldFZhbHVl
c0NhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoTWFwPFN0cmluZywg
U3RyaW5nPiYpPjsKK3VzaW5nIEdldE9yaWdpbnNDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoSGFzaFNldDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiYpPjsKK3VzaW5nIEdl
dE9yaWdpbkRldGFpbHNDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPExv
Y2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6T3JpZ2luRGV0YWlscz4mJik+OwordXNpbmcgRGVs
ZXRlQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+OworCitjbGFzcyBTdG9yYWdl
TWFuYWdlclNldCA6IHB1YmxpYyBJUEM6OkNvbm5lY3Rpb246OldvcmtRdWV1ZU1lc3NhZ2VSZWNl
aXZlciB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxTdG9yYWdlTWFuYWdlclNldD4gY3JlYXRl
KCk7CisgICAgU3RvcmFnZU1hbmFnZXJTZXQoKTsKKyAgICB+U3RvcmFnZU1hbmFnZXJTZXQoKTsK
KworICAgIHZvaWQgYWRkKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFn
ZURpcmVjdG9yeSwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBsb2NhbFN0b3JhZ2VEaXJlY3Rv
cnlIYW5kbGUpOworICAgIHZvaWQgcmVtb3ZlKFBBTDo6U2Vzc2lvbklEKTsKKyAgICBib29sIGNv
bnRhaW5zKFBBTDo6U2Vzc2lvbklEKTsKKworICAgIHZvaWQgYWRkQ29ubmVjdGlvbihJUEM6OkNv
bm5lY3Rpb24mKTsKKyAgICB2b2lkIHJlbW92ZUNvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uJik7
CisKKyAgICB2b2lkIHdhaXRVbnRpbFRhc2tzRmluaXNoZWQoKTsKKyAgICB2b2lkIHdhaXRVbnRp
bFN5bmNpbmdMb2NhbFN0b3JhZ2VGaW5pc2hlZCgpOworICAgIHZvaWQgc3VzcGVuZChDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgcmVzdW1lKCk7CisKKyAgICB2b2lkIGdl
dFNlc3Npb25TdG9yYWdlT3JpZ2lucyhQQUw6OlNlc3Npb25JRCwgR2V0T3JpZ2luc0NhbGxiYWNr
JiYpOworICAgIHZvaWQgZGVsZXRlU2Vzc2lvblN0b3JhZ2UoUEFMOjpTZXNzaW9uSUQsIERlbGV0
ZUNhbGxiYWNrJiYpOworICAgIHZvaWQgZGVsZXRlU2Vzc2lvblN0b3JhZ2VGb3JPcmlnaW5zKFBB
TDo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYs
IERlbGV0ZUNhbGxiYWNrJiYpOworICAgIHZvaWQgZ2V0TG9jYWxTdG9yYWdlT3JpZ2lucyhQQUw6
OlNlc3Npb25JRCwgR2V0T3JpZ2luc0NhbGxiYWNrJiYpOworICAgIHZvaWQgZGVsZXRlTG9jYWxT
dG9yYWdlTW9kaWZpZWRTaW5jZShQQUw6OlNlc3Npb25JRCwgV2FsbFRpbWUsIERlbGV0ZUNhbGxi
YWNrJiYpOworICAgIHZvaWQgZGVsZXRlTG9jYWxTdG9yYWdlRm9yT3JpZ2lucyhQQUw6OlNlc3Np
b25JRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mLCBEZWxldGVD
YWxsYmFjayYmKTsKKyAgICB2b2lkIGdldExvY2FsU3RvcmFnZU9yaWdpbkRldGFpbHMoUEFMOjpT
ZXNzaW9uSUQsIEdldE9yaWdpbkRldGFpbHNDYWxsYmFjayYmKTsKKworICAgIHZvaWQgZGlkUmVj
ZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CisgICAgdm9pZCBk
aWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3Rk
Ojp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2Rlcik7CisKK3ByaXZhdGU6Cisg
ICAgLy8gTWVzc2FnZSBIYW5kbGVycworICAgIHZvaWQgY29ubmVjdFRvTG9jYWxTdG9yYWdlQXJl
YShJUEM6OkNvbm5lY3Rpb24mLCBQQUw6OlNlc3Npb25JRCAsIHVpbnQ2NF90IHN0b3JhZ2VOYW1l
c3BhY2VJRCwgU2VjdXJpdHlPcmlnaW5EYXRhJiYsIENvbm5lY3RUb1N0b3JhZ2VBcmVhQ2FsbGJh
Y2smJik7CisgICAgdm9pZCBjb25uZWN0VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKElQQzo6
Q29ubmVjdGlvbiYsIFBBTDo6U2Vzc2lvbklEICwgdWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlE
LCBTZWN1cml0eU9yaWdpbkRhdGEmJiwgU2VjdXJpdHlPcmlnaW5EYXRhJiYsIENvbm5lY3RUb1N0
b3JhZ2VBcmVhQ2FsbGJhY2smJik7CisgICAgdm9pZCBjb25uZWN0VG9TZXNzaW9uU3RvcmFnZUFy
ZWEoSVBDOjpDb25uZWN0aW9uJiwgUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHN0b3JhZ2VOYW1l
c3BhY2VJRCwgU2VjdXJpdHlPcmlnaW5EYXRhJiYsIENvbm5lY3RUb1N0b3JhZ2VBcmVhQ2FsbGJh
Y2smJik7CisgICAgdm9pZCBkaXNjb25uZWN0RnJvbVN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlv
biYsIHVpbnQ2NF90IHN0b3JhZ2VBcmVhSUQpOworICAgIHZvaWQgZ2V0VmFsdWVzKElQQzo6Q29u
bmVjdGlvbiYsIHVpbnQ2NF90IHN0b3JhZ2VBcmVhSUQsIEdldFZhbHVlc0NhbGxiYWNrJiYpOwor
ICAgIHZvaWQgc2V0SXRlbShJUEM6OkNvbm5lY3Rpb24mLCB1aW50NjRfdCBzdG9yYWdlQXJlYUlE
LCB1aW50NjRfdCBzb3VyY2VTdG9yYWdlQXJlYUlELCB1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCwg
Y29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUsIGNvbnN0IFN0cmluZyYgdXJs
U3RyaW5nKTsKKyAgICB2b2lkIHJlbW92ZUl0ZW0oSVBDOjpDb25uZWN0aW9uJiwgdWludDY0X3Qg
c3RvcmFnZUFyZWFJRCwgdWludDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwgdWludDY0X3Qgc3Rv
cmFnZU1hcFNlZWQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHVybFN0cmluZyk7
CisgICAgdm9pZCBjbGVhcihJUEM6OkNvbm5lY3Rpb24mLCB1aW50NjRfdCBzdG9yYWdlQXJlYUlE
LCB1aW50NjRfdCBzb3VyY2VTdG9yYWdlQXJlYUlELCB1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCwg
Y29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpOworICAgIHZvaWQgY2xvbmVTZXNzaW9uU3RvcmFnZU5h
bWVzcGFjZShJUEM6OkNvbm5lY3Rpb24mLCBQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgZnJvbVN0
b3JhZ2VOYW1lc3BhY2VJRCwgdWludDY0X3QgdG9TdG9yYWdlTmFtZXNwYWNlSUQpOworCisgICAg
SGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgUmVmUHRyPFN0b3JhZ2VNYW5hZ2VyPj4gbV9zdG9yYWdl
TWFuYWdlcnM7CisgICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgU3RyaW5nPiBtX3N0b3JhZ2VN
YW5hZ2VyUGF0aHM7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgU3RvcmFnZUFyZWEqPiBtX3N0b3Jh
Z2VBcmVhczsKKworICAgIEhhc2hTZXQ8SVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRD4gbV9jb25u
ZWN0aW9uczsKKyAgICBSZWY8V29ya1F1ZXVlPiBtX3F1ZXVlOworCisgICAgZW51bSBjbGFzcyBT
dGF0ZSB7CisgICAgICAgIFJ1bm5pbmcsCisgICAgICAgIFdpbGxTdXNwZW5kLAorICAgICAgICBT
dXNwZW5kZWQKKyAgICB9OworICAgIFN0YXRlIG1fc3RhdGUgeyBTdGF0ZTo6UnVubmluZyB9Owor
ICAgIExvY2sgbV9zdGF0ZUxvY2s7CisgICAgQ29uZGl0aW9uIG1fc3RhdGVDaGFuZ2VDb25kaXRp
b247Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldC5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdl
clNldC5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMGMxM2EwMGJjMzViOTE1ZmVhZDg0MDA1ZGEz
NDdkMjdjN2QxN2Q2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0Lm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEs
MzQgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
IyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworbWVzc2FnZXMg
LT4gU3RvcmFnZU1hbmFnZXJTZXQgeworICAgIENvbm5lY3RUb0xvY2FsU3RvcmFnZUFyZWEoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIHN0cnVj
dCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgc2VjdXJpdHlPcmlnaW5EYXRhKSAtPiAodWlu
dDY0X3Qgc3RvcmFnZUFyZWFJRCkgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCisgICAgQ29u
bmVjdFRvVHJhbnNpZW50TG9jYWxTdG9yYWdlQXJlYShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSB0b3BMZXZlbFNlY3VyaXR5T3JpZ2luRGF0YSwgc3RydWN0IFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSBzZWN1cml0eU9yaWdpbkRhdGEpIC0+ICh1aW50NjRfdCBzdG9yYWdlQXJl
YUlEKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KKyAgICBDb25uZWN0VG9TZXNzaW9uU3Rv
cmFnZUFyZWEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBzdG9yYWdlTmFtZXNw
YWNlSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgc2VjdXJpdHlPcmlnaW5E
YXRhKSAtPiAodWludDY0X3Qgc3RvcmFnZUFyZWFJRCkgU3luY2hyb25vdXMgV2FudHNDb25uZWN0
aW9uCisgICAgRGlzY29ubmVjdEZyb21TdG9yYWdlQXJlYSh1aW50NjRfdCBzdG9yYWdlQXJlYUlE
KSBXYW50c0Nvbm5lY3Rpb24KKyAgICBHZXRWYWx1ZXModWludDY0X3Qgc3RvcmFnZUFyZWFJRCkg
LT4gKEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IHZhbHVlcykgU3luY2hyb25vdXMgV2FudHNDb25u
ZWN0aW9uCisgICAgQ2xvbmVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIHVpbnQ2NF90IGZyb21TdG9yYWdlTmFtZXNwYWNlSUQsIHVpbnQ2NF90IHRvU3Rv
cmFnZU5hbWVzcGFjZUlEKSBXYW50c0Nvbm5lY3Rpb24KKworICAgIFNldEl0ZW0odWludDY0X3Qg
c3RvcmFnZUFyZWFJRCwgdWludDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwgdWludDY0X3Qgc3Rv
cmFnZU1hcFNlZWQsIFN0cmluZyBrZXksIFN0cmluZyB2YWx1ZSwgU3RyaW5nIHVybFN0cmluZykg
V2FudHNDb25uZWN0aW9uCisgICAgUmVtb3ZlSXRlbSh1aW50NjRfdCBzdG9yYWdlQXJlYUlELCB1
aW50NjRfdCBzb3VyY2VTdG9yYWdlQXJlYUlELCB1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCwgU3Ry
aW5nIGtleSwgU3RyaW5nIHVybFN0cmluZykgV2FudHNDb25uZWN0aW9uCisgICAgQ2xlYXIodWlu
dDY0X3Qgc3RvcmFnZUFyZWFJRCwgdWludDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwgdWludDY0
X3Qgc3RvcmFnZU1hcFNlZWQsIFN0cmluZyB1cmxTdHJpbmcpIFdhbnRzQ29ubmVjdGlvbgorfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRl
cnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMu
Y3BwCmluZGV4IGQ5MWEzNGY2YTkyNzI1YzE0MTc3M2YwOGFiNDI5ZTdlOGU1ODYzYzMuLmYxOGRk
MTZiZTI2YTc4ZmYwZTg2MjM5Njk5NDM2NjI2NWIxYTgyZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5jcHAKQEAgLTUzLDYgKzUz
LDggQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25EaXJlY3RvcnkgPDwgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeUV4dGVuc2lv
bkhhbmRsZTsKICNlbmRpZgogCisgICAgZW5jb2RlciA8PCBsb2NhbFN0b3JhZ2VEaXJlY3Rvcnkg
PDwgbG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOworCiAgICAgZW5jb2RlciA8
PCBwZXJPcmlnaW5TdG9yYWdlUXVvdGE7CiAgICAgZW5jb2RlciA8PCBwZXJUaGlyZFBhcnR5T3Jp
Z2luU3RvcmFnZVF1b3RhOwogfQpAQCAtMTIxLDYgKzEyMywxOCBAQCBPcHRpb25hbDxXZWJzaXRl
RGF0YVN0b3JlUGFyYW1ldGVycz4gV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM6OmRlY29kZShJ
UEM6OkRlYwogICAgIHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9y
eUV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoKnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJl
Y3RvcnlFeHRlbnNpb25IYW5kbGUpOwogI2VuZGlmCiAKKyAgICBPcHRpb25hbDxTdHJpbmc+IGxv
Y2FsU3RvcmFnZURpcmVjdG9yeTsKKyAgICBkZWNvZGVyID4+IGxvY2FsU3RvcmFnZURpcmVjdG9y
eTsKKyAgICBpZiAoIWxvY2FsU3RvcmFnZURpcmVjdG9yeSkKKyAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICBwYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeSA9IFdURk1vdmUo
KmxvY2FsU3RvcmFnZURpcmVjdG9yeSk7CisKKyAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGU+IGxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKKyAgICBkZWNv
ZGVyID4+IGxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKKyAgICBpZiAoIWxv
Y2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSkKKyAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICBwYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhh
bmRsZSA9IFdURk1vdmUoKmxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CisK
ICAgICBPcHRpb25hbDx1aW50NjRfdD4gcGVyT3JpZ2luU3RvcmFnZVF1b3RhOwogICAgIGRlY29k
ZXIgPj4gcGVyT3JpZ2luU3RvcmFnZVF1b3RhOwogICAgIGlmICghcGVyT3JpZ2luU3RvcmFnZVF1
b3RhKQpAQCAtMTQ5LDYgKzE2Myw3IEBAIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNp
dGVEYXRhU3RvcmVQYXJhbWV0ZXJzOjpwcml2YXRlU2Vzc2lvblBhcmFtZXRlcnMoCiAjaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQogICAgICAgICAsIHsgfSwgeyB9CiAjZW5kaWYKKyAgICAgICAg
LCB7IH0sIHsgfQogICAgIH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJz
aXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oCmluZGV4IDk5MmZlZTk3ZDA5OTc0YzlmMzQ3ZjZjNzBk
YWExY2ViZjNlMmYyNGYuLjZmZWNlM2YxNTRmZTlkN2ZiOThiZmM5N2Q5YjFiN2JmZjQyNGYzOTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0
ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRl
cnMuaApAQCAtNzAsNiArNzAsOSBAQCBzdHJ1Y3QgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMg
ewogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
RGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogI2VuZGlmCiAKKyAgICBTdHJpbmcgbG9jYWxTdG9y
YWdlRGlyZWN0b3J5OworICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBsb2NhbFN0b3JhZ2VE
aXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CisKICAgICB1aW50NjRfdCBwZXJPcmlnaW5TdG9yYWdl
UXVvdGEgeyBXZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2VyOjpkZWZhdWx0UXVvdGEoKSB9Owog
ICAgIHVpbnQ2NF90IHBlclRoaXJkUGFydHlPcmlnaW5TdG9yYWdlUXVvdGEgeyBXZWJDb3JlOjpT
dG9yYWdlUXVvdGFNYW5hZ2VyOjpkZWZhdWx0VGhpcmRQYXJ0eVF1b3RhKCkgfTsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2Vz
LnR4dAppbmRleCA0YmMyMGZkNTMxNmNjMDNmMjk3ZDk0ZWIyMWE0ZTYyYzVhY2MyNDJkLi5iNDY2
ZDJjNzQ4OWU2MmQ1N2YwNzg0Y2Q5NzZlMjE4NTY0NTE2NDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTcw
LDYgKzcwLDcgQEAgTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2UuY3BwCiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1Nlc3Npb25TdG9yYWdlTmFtZXNwYWNl
LmNwcAogTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYS5jcHAKIE5ldHdvcmtQ
cm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwCitOZXR3b3JrUHJvY2Vzcy9XZWJT
dG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0LmNwcAogTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9U
cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UuY3BwCiAKIE5ldHdvcmtQcm9jZXNzL2NhY2hl
L0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S0NvbnRleHQuY3BwCmluZGV4IGFmY2U3MGI2MjdmZWVmN2I1YmY4ODI4OWFkODIyZjE5YzE5Y2Ri
NmYuLmFmZjA2ZTFjOWE0NWQ3OTExYWJjYmFjOGVkZDcwYTQ0M2NjMzdjMGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcApAQCAtNjY0LDMgKzY2NCwxOSBA
QCB2b2lkIFdLQ29udGV4dENsZWFyQ3VycmVudE1vZGlmaWVyU3RhdGVGb3JUZXN0aW5nKFdLQ29u
dGV4dFJlZiBjb250ZXh0UmVmKQogewogICAgIFdlYktpdDo6dG9JbXBsKGNvbnRleHRSZWYpLT5j
bGVhckN1cnJlbnRNb2RpZmllclN0YXRlRm9yVGVzdGluZygpOwogfQorCit2b2lkIFdLQ29udGV4
dFN5bmNMb2NhbFN0b3JhZ2UoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIHZvaWQqIGNvbnRleHQs
IFdLQ29udGV4dFN5bmNMb2NhbFN0b3JhZ2VDYWxsYmFjayBjYWxsYmFjaykKK3sKKyAgICBXZWJL
aXQ6OnRvSW1wbChjb250ZXh0UmVmKS0+c3luY0xvY2FsU3RvcmFnZShbY29udGV4dCwgY2FsbGJh
Y2tdIHsKKyAgICAgICAgaWYgKGNhbGxiYWNrKQorICAgICAgICAgICAgY2FsbGJhY2soY29udGV4
dCk7CisgICAgfSk7Cit9CisKK3ZvaWQgV0tDb250ZXh0Q2xlYXJMZWdhY3lQcml2YXRlQnJvd3Np
bmdMb2NhbFN0b3JhZ2UoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIHZvaWQqIGNvbnRleHQsIFdL
Q29udGV4dENsZWFyTGVnYWN5UHJpdmF0ZUJyb3dzaW5nTG9jYWxTdG9yYWdlQ2FsbGJhY2sgY2Fs
bGJhY2spCit7CisgICAgV2ViS2l0Ojp0b0ltcGwoY29udGV4dFJlZiktPmNsZWFyTGVnYWN5UHJp
dmF0ZUJyb3dzaW5nTG9jYWxTdG9yYWdlKFtjb250ZXh0LCBjYWxsYmFja10geworICAgICAgICBp
ZiAoY2FsbGJhY2spCisgICAgICAgICAgICBjYWxsYmFjayhjb250ZXh0KTsKKyAgICB9KTsKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dFByaXZh
dGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dFByaXZhdGUuaApp
bmRleCAwYzE3YjFhMTEyYzJlYzFmMmU4NTAyMTdhYjUxZjY2NGE1MThhZWE2Li5lOTQyYjYyOWY2
YmQ0YmJmNGFlZTNjMmFhZWRjODdiNDFhMTFmZWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0UHJpdmF0ZS5oCkBAIC0xMTgsNiArMTE4LDEyIEBAIFdL
X0VYUE9SVCB2b2lkIFdLQ29udGV4dENsZWFyU3VwcG9ydGVkUGx1Z2lucyhXS0NvbnRleHRSZWYg
Y29udGV4dCk7CiAKIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dENsZWFyQ3VycmVudE1vZGlmaWVy
U3RhdGVGb3JUZXN0aW5nKFdLQ29udGV4dFJlZiBjb250ZXh0KTsKIAordHlwZWRlZiB2b2lkICgq
V0tDb250ZXh0U3luY0xvY2FsU3RvcmFnZUNhbGxiYWNrKSh2b2lkKiBmdW5jdGlvbkNvbnRleHQp
OworV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U3luY0xvY2FsU3RvcmFnZShXS0NvbnRleHRSZWYg
Y29udGV4dFJlZiwgdm9pZCogY29udGV4dCwgV0tDb250ZXh0U3luY0xvY2FsU3RvcmFnZUNhbGxi
YWNrIGNhbGxiYWNrKTsKKwordHlwZWRlZiB2b2lkICgqV0tDb250ZXh0Q2xlYXJMZWdhY3lQcml2
YXRlQnJvd3NpbmdMb2NhbFN0b3JhZ2VDYWxsYmFjaykodm9pZCogZnVuY3Rpb25Db250ZXh0KTsK
K1dLX0VYUE9SVCB2b2lkIFdLQ29udGV4dENsZWFyTGVnYWN5UHJpdmF0ZUJyb3dzaW5nTG9jYWxT
dG9yYWdlKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCB2b2lkKiBjb250ZXh0LCBXS0NvbnRleHRD
bGVhckxlZ2FjeVByaXZhdGVCcm93c2luZ0xvY2FsU3RvcmFnZUNhbGxiYWNrIGNhbGxiYWNrKTsK
KwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCmluZGV4IDNjOTY2
MGUyYmU1MjQ2YTNjYTZiYmE0ZWI4ZmEyZWI4MDMxM2E2ZDMuLjdiMDE5ZTdiODgwOGQxOWNkMzMy
NmYxMzgxODExY2VhOGJkN2M5YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcApAQCAtNTIwLDYgKzUyMCwxNSBA
QCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUFsbEluZGV4ZWREYXRhYmFzZXMoV0tXZWJz
aXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZQogICAgIH0pOwogfQogCit2b2lkIFdLV2Vic2l0ZURh
dGFTdG9yZVJlbW92ZUxvY2FsU3RvcmFnZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3Jl
UmVmLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVMb2NhbFN0b3JhZ2VD
YWxsYmFjayBjYWxsYmFjaykKK3sKKyAgICBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YVR5
cGU+IGRhdGFUeXBlcyA9IFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpMb2NhbFN0b3JhZ2U7Cisg
ICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlbW92
ZURhdGEoZGF0YVR5cGVzLCAtV2FsbFRpbWU6OmluZmluaXR5KCksIFtjb250ZXh0LCBjYWxsYmFj
a10geworICAgICAgICBpZiAoY2FsbGJhY2spCisgICAgICAgICAgICBjYWxsYmFjayhjb250ZXh0
KTsKKyAgICB9KTsKK30KKwogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVBbGxTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9ucyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB2
b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVBbGxTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uc0NhbGxiYWNrIGNhbGxiYWNrKQogewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURh
dGFTdG9yZVJlZi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0
YVN0b3JlUmVmLmgKaW5kZXggYzc2ZWIyZDRkNzQ5OGJjY2MxMmMzZDVkMmFiYzhiOTE4YjhjZDJk
Zi4uYTM5NzlhM2MyMzAxNjI4NDNjNTMzNTJhNDI1NGFhNDIzYzExNDQ5MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmgK
QEAgLTExNiw2ICsxMTYsOSBAQCBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVSZW1v
dmVBbGxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucyhXS1dlYnNpdGVEYQogdHlwZWRlZiB2b2lk
ICgqV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlQWxsSW5kZXhlZERhdGFiYXNlc0NhbGxiYWNrKSh2
b2lkKiBmdW5jdGlvbkNvbnRleHQpOwogV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3Jl
UmVtb3ZlQWxsSW5kZXhlZERhdGFiYXNlcyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3Jl
UmVmLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVBbGxJbmRleGVkRGF0
YWJhc2VzQ2FsbGJhY2sgY2FsbGJhY2spOwogCit0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRh
U3RvcmVSZW1vdmVMb2NhbFN0b3JhZ2VDYWxsYmFjaykodm9pZCogZnVuY3Rpb25Db250ZXh0KTsK
K1dLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUxvY2FsU3RvcmFnZShXS1dl
YnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVE
YXRhU3RvcmVSZW1vdmVMb2NhbFN0b3JhZ2VDYWxsYmFjayBjYWxsYmFjayk7CisKIHR5cGVkZWYg
dm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZUdldEZldGNoQ2FjaGVPcmlnaW5zRnVuY3Rpb24pKFdL
QXJyYXlSZWYsIHZvaWQqKTsKIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUdldEZl
dGNoQ2FjaGVPcmlnaW5zKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQq
IGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZUdldEZldGNoQ2FjaGVPcmlnaW5zRnVuY3Rpb24g
ZnVuY3Rpb24pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAK
aW5kZXggZGJlMjUzNTJiNTI1ODhkOGEzY2M4Njk0ODQ0NDBlNzllODVhMDk2ZC4uYzA1MTI2Yjlm
NDVjNzNiN2Y3Mzk2NDQ2MzFlMWVkMzBjMzQzZDQ4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtNTgzLDggKzU4Myw4IEBAIE5ldHdvcmtQcm9jZXNz
UHJveHkmIFdlYlByb2Nlc3NQb29sOjplbnN1cmVOZXR3b3JrUHJvY2VzcyhXZWJzaXRlRGF0YVN0
b3JlKiB3aXRoCiAgICAgYXV0byBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBtX3dlYnNpdGVEYXRh
U3RvcmUgPyBtX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5yZXNvbHZlZExv
Y2FsU3RvcmFnZURpcmVjdG9yeSgpIDogbnVsbFN0cmluZygpOwogICAgIGlmICghbG9jYWxTdG9y
YWdlRGlyZWN0b3J5KQogICAgICAgICBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBBUEk6OldlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBwYXJhbWV0
ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5s
b2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBsb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7Ci0gICAgU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KGxvY2FsU3RvcmFn
ZURpcmVjdG9yeSwgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3b3Jr
U2Vzc2lvblBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsK
KyAgICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURp
cmVjdG9yeSA9IGxvY2FsU3RvcmFnZURpcmVjdG9yeTsKKyAgICBTYW5kYm94RXh0ZW5zaW9uOjpj
cmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkobG9jYWxTdG9yYWdlRGlyZWN0b3J5LCBw
YXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9y
eUV4dGVuc2lvbkhhbmRsZSk7CiAKICAgICBpZiAobV93ZWJzaXRlRGF0YVN0b3JlKQogICAgICAg
ICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFy
YW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5ID0gbV93ZWJzaXRlRGF0YVN0
b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVzb2x2ZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGly
ZWN0b3J5KCk7CkBAIC0xODA0LDYgKzE4MDQsMTkgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c3lu
Y05ldHdvcmtQcm9jZXNzQ29va2llcygpCiAgICAgZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS5zeW5j
QWxsQ29va2llcygpOwogfQogCit2b2lkIFdlYlByb2Nlc3NQb29sOjpzeW5jTG9jYWxTdG9yYWdl
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBz
ZW5kU3luY1RvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTeW5j
TG9jYWxTdG9yYWdlKCksIE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U3luY0xvY2FsU3RvcmFn
ZTo6UmVwbHkoKSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKK30KKwordm9pZCBXZWJQcm9j
ZXNzUG9vbDo6Y2xlYXJMZWdhY3lQcml2YXRlQnJvd3NpbmdMb2NhbFN0b3JhZ2UoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmIChtX25ldHdv
cmtQcm9jZXNzKQorICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrUHJvY2Vzczo6Q2xlYXJMZWdhY3lQcml2YXRlQnJvd3NpbmdMb2NhbFN0b3JhZ2UoKSwgMCk7
CisgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKK30KKwogdm9pZCBXZWJQcm9jZXNzUG9vbDo6YWxs
b3dTcGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KGNvbnN0IFdlYkNlcnRpZmljYXRlSW5m
byogY2VydGlmaWNhdGUsIGNvbnN0IFN0cmluZyYgaG9zdCkKIHsKICAgICBlbnN1cmVOZXR3b3Jr
UHJvY2VzcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXgg
ZDA2YzQ0MDI0Y2RhMTM4ZWI3ZDM4ZjA3N2U1YTFhMWRmNDY1NzI5ZS4uNDBiZWE4NjFhMmU2NzAy
ODQ2MjIwODdjMDAzYjNlODhhNmFjYzAzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5oCkBAIC0zMTcsNiArMzE3LDggQEAgcHVibGljOgogICAgIHZvaWQgZGlzYWJs
ZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSgpOwogCiAgICAgdm9pZCBzeW5j
TmV0d29ya1Byb2Nlc3NDb29raWVzKCk7CisgICAgdm9pZCBzeW5jTG9jYWxTdG9yYWdlKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFjayk7CisgICAgdm9pZCBjbGVhckxlZ2FjeVBy
aXZhdGVCcm93c2luZ0xvY2FsU3RvcmFnZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2Fs
bGJhY2spOwogCiAgICAgdm9pZCBzZXRTaG91bGRNYWtlTmV4dFdlYlByb2Nlc3NMYXVuY2hGYWls
Rm9yVGVzdGluZyhib29sIHZhbHVlKSB7IG1fc2hvdWxkTWFrZU5leHRXZWJQcm9jZXNzTGF1bmNo
RmFpbEZvclRlc3RpbmcgPSB2YWx1ZTsgfQogICAgIGJvb2wgc2hvdWxkTWFrZU5leHRXZWJQcm9j
ZXNzTGF1bmNoRmFpbEZvclRlc3RpbmcoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZE1ha2VOZXh0
V2ViUHJvY2Vzc0xhdW5jaEZhaWxGb3JUZXN0aW5nOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0
b3JlQ29jb2EubW0KaW5kZXggYTY4MzZkOTI1MTYzMmI4MTg1NTMxNmI2ZGM0ZWE3OGZmODFjYjZi
Ni4uNjI4NzAxNTcxM2JkNDAyMjQwZWFiMGE2YTZjNzZhZTJhZDI3NjY5MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9y
ZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29h
L1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQpAQCAtMTA3LDExICsxMDcsNiBAQCBXZWJzaXRlRGF0
YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0ZXJzKCkKICAgICBpZiAo
IXJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkuaXNFbXB0eSgpKQogICAgICAgICBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkocmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeUhh
bmRsZSk7CiAKLSAgICBhdXRvIGxvY2FsU3RvcmFnZURpcmVjdG9yeSA9IHJlc29sdmVkTG9jYWxT
dG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGxvY2FsU3Rv
cmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKLSAgICBpZiAoIWxvY2FsU3RvcmFnZURpcmVj
dG9yeS5pc0VtcHR5KCkpCi0gICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZv
clJlYWRXcml0ZURpcmVjdG9yeShsb2NhbFN0b3JhZ2VEaXJlY3RvcnksIGxvY2FsU3RvcmFnZURp
cmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7Ci0KICAgICBhdXRvIG5ldHdvcmtDYWNoZURpcmVjdG9y
eSA9IHJlc29sdmVkTmV0d29ya0NhY2hlRGlyZWN0b3J5KCk7CiAgICAgU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlIG5ldHdvcmtDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBpZiAo
IW5ldHdvcmtDYWNoZURpcmVjdG9yeS5pc0VtcHR5KCkpCkBAIC0xNDAsOCArMTM1LDYgQEAgV2Vi
c2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgV2Vic2l0ZURhdGFTdG9yZTo6cGFyYW1ldGVycygpCiAg
ICAgICAgIG1fY29uZmlndXJhdGlvbi0+ZGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0VuYWJs
ZWQoKSwKICAgICAgICAgbV9jb25maWd1cmF0aW9uLT5hbGxMb2Fkc0Jsb2NrZWRCeURldmljZU1h
bmFnZW1lbnRSZXN0cmljdGlvbnNGb3JUZXN0aW5nKCksCiAgICAgICAgIFdURk1vdmUocmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01hbnVhbFByZXZhbGVudFJlc291cmNlKSwKLSAgICAgICAgV1RGTW92
ZShsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpLAotICAgICAgICBXVEZNb3ZlKGxvY2FsU3RvcmFnZURp
cmVjdG9yeUV4dGVuc2lvbkhhbmRsZSksCiAgICAgICAgIFdURk1vdmUobmV0d29ya0NhY2hlRGly
ZWN0b3J5KSwKICAgICAgICAgV1RGTW92ZShuZXR3b3JrQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25I
YW5kbGUpLAogICAgIH07CkBAIC0xNzcsNiArMTcwLDEwIEBAIFdlYnNpdGVEYXRhU3RvcmVQYXJh
bWV0ZXJzIFdlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMoKQogICAgICAgICBTYW5kYm94RXh0
ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkocGFyYW1ldGVycy5zZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogI2VuZGlmCiAKKyAgICBwYXJh
bWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeSA9IHJlc29sdmVkTG9jYWxTdG9yYWdlRGlyZWN0
b3J5KCk7CisgICAgaWYgKCFwYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5
KCkpCisgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURp
cmVjdG9yeShwYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeSwgcGFyYW1ldGVycy5sb2Nh
bFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOworCiAgICAgcGFyYW1ldGVycy5wZXJP
cmlnaW5TdG9yYWdlUXVvdGEgPSBwZXJPcmlnaW5TdG9yYWdlUXVvdGEoKTsKICAgICBwYXJhbWV0
ZXJzLnBlclRoaXJkUGFydHlPcmlnaW5TdG9yYWdlUXVvdGEgPSBwZXJUaGlyZFBhcnR5T3JpZ2lu
U3RvcmFnZVF1b3RhKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggOTRjNGQ1OThiNjAzN2E2OTk3
MTJkMTdiOWZhN2M1ZWIxNjRhNmM1OC4uNWI1MTBjZGFhMGM3YWIyM2M5MDM3ZmE3MzU5ZmU5M2Q3
M2QzZGQ5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTE5NTcsOCArMTk1Nyw4IEBAIFdlYnNpdGVE
YXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMoKQogCiAgICAg
YXV0byBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSByZXNvbHZlZExvY2FsU3RvcmFnZURpcmVjdG9y
eSgpOwogICAgIGlmICghbG9jYWxTdG9yYWdlRGlyZWN0b3J5LmlzRW1wdHkoKSkgewotICAgICAg
ICBwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3Rv
cnkgPSBsb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7Ci0gICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShsb2NhbFN0b3JhZ2VEaXJlY3RvcnksIHBh
cmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeUV4
dGVuc2lvbkhhbmRsZSk7CisgICAgICAgIHBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5
ID0gbG9jYWxTdG9yYWdlRGlyZWN0b3J5OworICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVh
dGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkobG9jYWxTdG9yYWdlRGlyZWN0b3J5LCBwYXJh
bWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAgICAgfQogCiAj
aWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiMTNlMzNkYWMxOWVjM2NkNGEzZDI0OTJhZThl
OGVlNGNlYTNhZWRmLi45Njk0NDgyZjU2NjJhM2NmZjA0YWM1ZjhjMzM0ZjA5ZWQ1Yjc2MmYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTI5Myw4ICsyOTMsNiBAQAogCQkxQUIxRjc5NzFEMUIzNjEzMDA3QzlCRDEgLyogV2ViUGF5bWVu
dENvb3JkaW5hdG9yTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFBQjFGNzkzMUQxQjM2MTMwMDdDOUJEMSAvKiBXZWJQYXltZW50Q29vcmRp
bmF0b3JNZXNzYWdlcy5oICovOyB9OwogCQkxQUIxRjc5ODFEMUIzNjEzMDA3QzlCRDEgLyogV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFCMUY3OTQxRDFCMzYxMzAwN0M5QkQx
IC8qIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsK
IAkJMUFCMUY3OTkxRDFCMzYxMzAwN0M5QkQxIC8qIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5
TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFBQjFGNzk1MUQxQjM2MTMwMDdDOUJEMSAvKiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1l
c3NhZ2VzLmggKi87IH07Ci0JCTFBQjMxQTk2MTZCQzY4ODEwMEY2REJDOSAvKiBTdG9yYWdlTWFu
YWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxQUIzMUE5NDE2QkM2ODgxMDBGNkRCQzkgLyogU3RvcmFnZU1hbmFnZXJN
ZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwotCQkxQUIzMUE5NzE2QkM2ODgxMDBGNkRCQzkgLyog
U3RvcmFnZU1hbmFnZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMUFCMzFBOTUxNkJDNjg4MTAwRjZEQkM5IC8qIFN0b3JhZ2VNYW5hZ2Vy
TWVzc2FnZXMuaCAqLzsgfTsKIAkJMUFCNDBFRTYxQkY2NzdFMzAwQkE4MUJFIC8qIFdLTWVudUl0
ZW1JZGVudGlmaWVyc1ByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFBQjQwRUU0MUJGNjc3RTMwMEJBODFCRSAvKiBXS01lbnVJdGVtSWRlbnRp
ZmllcnNQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMUFCNDc0RDgxODRENDNGRDAwNTFCNjIyIC8qIFdLQnVuZGxlUGFnZUxvYWRlckNs
aWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFC
NDc0RDcxODRENDNGRDAwNTFCNjIyIC8qIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFBQjQ3NERBMTg0
RDQ0MjUwMDUxQjYyMiAvKiBXS0J1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjQ3NEQ5MTg0RDQ0MjUw
MDUxQjYyMiAvKiBXS0J1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTI3NSw2ICsxMjczLDkgQEAK
IAkJOTM1NkYyRTEyMTUyQjc2NjAwRTZENURGIC8qIFdlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0JBMDRFMTIx
NTFBREY0MDA3RjQ1NUYgLyogV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcCAqLzsgfTsKIAkJOTM1
RUVCOUIxMjc3NjE3QzAwMzMyMkI4IC8qIFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM1RUVCOTgxMjc3
NjE2RDAwMzMyMkI4IC8qIFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzNUVFQjlGMTI3NzYxQUMw
MDMzMjJCOCAvKiBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM1RUVCOTYxMjc3NjE2RDAwMzMyMkI4IC8qIFdL
QnVuZGxlQmFja0ZvcndhcmRMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJOTM2OEVFREUyMzAzQTkwMjAwQkRCMTFBIC8qIFN0b3JhZ2VNYW5h
Z2VyU2V0TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzNjhFRURDMjMwM0E4RDgwMEJEQjExQSAvKiBTdG9yYWdlTWFuYWdl
clNldE1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CisJCTkzNjhFRURGMjMwM0E5RUQwMEJEQjEx
QSAvKiBTdG9yYWdlTWFuYWdlclNldE1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzY4RUVERDIzMDNBOEQ4MDBCREIxMUEgLyogU3RvcmFn
ZU1hbmFnZXJTZXRNZXNzYWdlcy5oICovOyB9OworCQk5MzZCMDU5ODIzMDM5MDk3MDAyRkMwNkIg
LyogU3RvcmFnZU1hbmFnZXJTZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDkzNkIwNTk1MjMwMzkwMEIwMDJGQzA2QiAvKiBTdG9yYWdlTWFuYWdlclNl
dC5oICovOyB9OwogCQk5MzczNUVCQjFDOTI5ODYzMDAzMzZGQTcgLyogV0tQcmV2aWV3QWN0aW9u
SXRlbUludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5MzczNUVCQTFDOTI5ODYzMDAzMzZGQTcgLyogV0tQcmV2aWV3QWN0aW9uSXRlbUludGVy
bmFsLmggKi87IH07CiAJCTkzOTEwNzRGMUJGNkJDNjUwMDhDMTdBRCAvKiBXS1ByZXZpZXdFbGVt
ZW50SW5mb0ludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5MzkxMDc0RTFCRjZCQzY1MDA4QzE3QUQgLyogV0tQcmV2aWV3RWxlbWVudEluZm9J
bnRlcm5hbC5oICovOyB9OwogCQk5MzkxRjJDQjEyMUI2N0FEMDBFQkY3RTggLyogV2ViRnJhbWVO
ZXR3b3JraW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTM5MUYyODMxMjFCMzhGNTAwRUJGN0U4IC8qIFdlYkZyYW1lTmV0d29ya2luZ0Nv
bnRleHQuaCAqLzsgfTsKQEAgLTE3MDcsNiArMTcwOCw4IEBACiAJCQljb21waWxlclNwZWMgPSBj
b20uYXBwbGUuY29tcGlsZXJzLnByb3h5LnNjcmlwdDsKIAkJCWZpbGVQYXR0ZXJucyA9ICIqLmgi
OwogCQkJZmlsZVR5cGUgPSBwYXR0ZXJuLnByb3h5OworCQkJaW5wdXRGaWxlcyA9ICgKKwkJCSk7
CiAJCQlpc0VkaXRhYmxlID0gMTsKIAkJCW91dHB1dEZpbGVzID0gKAogCQkJCSIkKEhFQURFUl9P
VVRQVVRfRElSKS8kKElOUFVUX0ZJTEVfTkFNRSkiLApAQCAtMjMwNyw4ICsyMzEwLDYgQEAKIAkJ
MUFCMUY3OTMxRDFCMzYxMzAwN0M5QkQxIC8qIFdlYlBheW1lbnRDb29yZGluYXRvck1lc3NhZ2Vz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYlBheW1lbnRDb29yZGluYXRv
ck1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYlBheW1lbnRDb29y
ZGluYXRvck1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJ
CTFBQjFGNzk0MUQxQjM2MTMwMDdDOUJEMSAvKiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1l
c3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBX
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHA7IHBhdGggPSBEZXJp
dmVkU291cmNlcy9XZWJLaXQyL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWVzc2FnZVJlY2Vp
dmVyLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJMUFCMUY3OTUx
RDFCMzYxMzAwN0M5QkQxIC8qIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWVzc2FnZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHlNZXNzYWdlcy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7
IH07Ci0JCTFBQjMxQTk0MTZCQzY4ODEwMEY2REJDOSAvKiBTdG9yYWdlTWFuYWdlck1lc3NhZ2VS
ZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBTdG9yYWdl
TWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQy
L1N0b3JhZ2VNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BS
T0RVQ1RTX0RJUjsgfTsKLQkJMUFCMzFBOTUxNkJDNjg4MTAwRjZEQkM5IC8qIFN0b3JhZ2VNYW5h
Z2VyTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU3RvcmFnZU1h
bmFnZXJNZXNzYWdlcy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9TdG9yYWdlTWFu
YWdlck1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTFB
QjQwRUUzMUJGNjc3RTMwMEJBODFCRSAvKiBXS01lbnVJdGVtSWRlbnRpZmllcnMubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS01lbnVJdGVtSWRlbnRpZmllcnMu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQjQwRUU0MUJGNjc3RTMwMEJBODFC
RSAvKiBXS01lbnVJdGVtSWRlbnRpZmllcnNQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdLTWVudUl0ZW1JZGVudGlmaWVyc1ByaXZhdGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMUFCNDc0RDcxODRENDNGRDAwNTFCNjIyIC8qIFdLQnVuZGxlUGFn
ZUxvYWRlckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0J1bmRs
ZVBhZ2VMb2FkZXJDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM4OTcs
NiArMzg5OCwxMSBAQAogCQk5MzVFRUI5NjEyNzc2MTZEMDAzMzIyQjggLyogV0tCdW5kbGVCYWNr
Rm9yd2FyZExpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tCdW5kbGVC
YWNrRm9yd2FyZExpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM1RUVCOTcx
Mjc3NjE2RDAwMzMyMkI4IC8qIFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdEl0
ZW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzVFRUI5ODEyNzc2MTZEMDAz
MzIyQjggLyogV0tCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk5MzY4RUVEQzIzMDNBOEQ4MDBCREIxMUEgLyogU3RvcmFnZU1h
bmFnZXJTZXRNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGV4cGxpY2l0RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IGZpbGVFbmNvZGluZyA9IDQ7
IG5hbWUgPSBTdG9yYWdlTWFuYWdlclNldE1lc3NhZ2VSZWNlaXZlci5jcHA7IHBhdGggPSBEZXJp
dmVkU291cmNlcy9XZWJLaXQyL1N0b3JhZ2VNYW5hZ2VyU2V0TWVzc2FnZVJlY2VpdmVyLmNwcDsg
c291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJOTM2OEVFREQyMzAzQThEODAw
QkRCMTFBIC8qIFN0b3JhZ2VNYW5hZ2VyU2V0TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gU3RvcmFnZU1hbmFnZXJTZXRNZXNzYWdlcy5oOyBwYXRoID0gRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0Mi9TdG9yYWdlTWFuYWdlclNldE1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUg
PSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTkzNkIwNTk1MjMwMzkwMEIwMDJGQzA2QiAvKiBT
dG9yYWdlTWFuYWdlclNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdG9y
YWdlTWFuYWdlclNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5MzZCMDU5NjIz
MDM5MDBCMDAyRkMwNkIgLyogU3RvcmFnZU1hbmFnZXJTZXQubWVzc2FnZXMuaW4gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gU3RvcmFnZU1hbmFnZXJTZXQubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTkzNkIwNTk3MjMwMzkwMEIwMDJGQzA2QiAvKiBTdG9yYWdlTWFu
YWdlclNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdG9yYWdl
TWFuYWdlclNldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNzM1RUJBMUM5
Mjk4NjMwMDMzNkZBNyAvKiBXS1ByZXZpZXdBY3Rpb25JdGVtSW50ZXJuYWwuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tQcmV2aWV3QWN0aW9uSXRlbUludGVybmFsLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzOTEwNzRFMUJGNkJDNjUwMDhDMTdBRCAvKiBX
S1ByZXZpZXdFbGVtZW50SW5mb0ludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdLUHJldmlld0VsZW1lbnRJbmZvSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTM5MUYyODMxMjFCMzhGNTAwRUJGN0U4IC8qIFdlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRnJhbWVOZXR3
b3JraW5nQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzkyNiw3ICsz
OTMyLDYgQEAKIAkJOTNCMjYxNDgyMjdEMTQ3MTAwQjk3QTc2IC8qIGlvcyAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZvbGRlcjsgcGF0aCA9IGlvczsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCMjYxNDkyMjdEMTQ3MjAwQjk3QTc2IC8q
IFN0b3JhZ2VNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0b3Jh
Z2VNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQjI2MTRBMjI3RDE0
NzIwMEI5N0E3NiAvKiBTdG9yYWdlTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTdG9yYWdlTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTkzQjI2MTRCMjI3RDE0NzIwMEI5N0E3NiAvKiBTdG9yYWdlTWFuYWdlci5tZXNzYWdl
cy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTdG9yYWdlTWFuYWdlci5tZXNzYWdlcy5pbjsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCMjYxNEMyMjdEMTQ3MjAwQjk3QTc2IC8q
IExvY2FsU3RvcmFnZURhdGFiYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IExvY2FsU3RvcmFnZURhdGFiYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTNCQTA0REEyMTUxQURGMzAwN0Y0NTVGIC8qIFdlYlNXU2VydmVyQ29ubmVjdGlvbi5t
ZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJTV1NlcnZlckNvbm5lY3Rpb24u
bWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQkEwNERCMjE1MUFE
RjMwMDdGNDU1RiAvKiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MjkxLDYgKzcyOTYsOSBAQAogCQk5M0Iy
NjE0MzIyN0QxNDMxMDBCOTdBNzYgLyogV2ViU3RvcmFnZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJOTM2QjA1OTcyMzAzOTAwQjAwMkZDMDZCIC8qIFN0
b3JhZ2VNYW5hZ2VyU2V0LmNwcCAqLywKKwkJCQk5MzZCMDU5NTIzMDM5MDBCMDAyRkMwNkIgLyog
U3RvcmFnZU1hbmFnZXJTZXQuaCAqLywKKwkJCQk5MzZCMDU5NjIzMDM5MDBCMDAyRkMwNkIgLyog
U3RvcmFnZU1hbmFnZXJTZXQubWVzc2FnZXMuaW4gKi8sCiAJCQkJOTNCMjYxNDgyMjdEMTQ3MTAw
Qjk3QTc2IC8qIGlvcyAqLywKIAkJCQk5M0IyNjE0QzIyN0QxNDcyMDBCOTdBNzYgLyogTG9jYWxT
dG9yYWdlRGF0YWJhc2UuY3BwICovLAogCQkJCTkzQjI2MTQ1MjI3RDE0NzAwMEI5N0E3NiAvKiBM
b2NhbFN0b3JhZ2VEYXRhYmFzZS5oICovLApAQCAtNzMwNCw3ICs3MzEyLDYgQEAKIAkJCQk0NkJF
QjZENTIyRkI5QkQ2MDAyNjk4NjcgLyogU3RvcmFnZUFyZWEuaCAqLywKIAkJCQk5M0IyNjE0QTIy
N0QxNDcyMDBCOTdBNzYgLyogU3RvcmFnZU1hbmFnZXIuY3BwICovLAogCQkJCTkzQjI2MTQ5MjI3
RDE0NzIwMEI5N0E3NiAvKiBTdG9yYWdlTWFuYWdlci5oICovLAotCQkJCTkzQjI2MTRCMjI3RDE0
NzIwMEI5N0E3NiAvKiBTdG9yYWdlTWFuYWdlci5tZXNzYWdlcy5pbiAqLywKIAkJCQk0NkJFQjZF
MjIyRkJCMjFBMDAyNjk4NjcgLyogVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlLmNwcCAq
LywKIAkJCQk0NkJFQjZFMTIyRkJCMjFBMDAyNjk4NjcgLyogVHJhbnNpZW50TG9jYWxTdG9yYWdl
TmFtZXNwYWNlLmggKi8sCiAJCQkpOwpAQCAtODY4NSw2ICs4NjkyLDggQEAKIAkJQzBDRTcyOUQx
MjQ3RTcxRDAwQkMwRUM0IC8qIERlcml2ZWQgU291cmNlcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJOTM2OEVFREMyMzAzQThEODAwQkRCMTFBIC8qIFN0
b3JhZ2VNYW5hZ2VyU2V0TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKKwkJCQk5MzY4RUVERDIzMDNB
OEQ4MDBCREIxMUEgLyogU3RvcmFnZU1hbmFnZXJTZXRNZXNzYWdlcy5oICovLAogCQkJCTJEN0RF
QkUyMjEyNjlFNEIwMEI5RjczQyAvKiB1bmlmaWVkLXNvdXJjZXMgKi8sCiAJCQkJNTEyRjU4QTAx
MkE4ODNBRDAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9uTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5j
cHAgKi8sCiAJCQkJNTEyRjU4QTExMkE4ODNBRDAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9uTWFu
YWdlck1lc3NhZ2VzLmggKi8sCkBAIC04NzY2LDggKzg3NzUsNiBAQAogCQkJCTJERTY5NDNDMThC
RDJBNjgwMDVDMTVFNSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZXMuaCAq
LywKIAkJCQkxQTMzNERFQjE2REU4Rjg4MDA2QThFMzggLyogU3RvcmFnZUFyZWFNYXBNZXNzYWdl
UmVjZWl2ZXIuY3BwICovLAogCQkJCTFBMzM0REVDMTZERThGODgwMDZBOEUzOCAvKiBTdG9yYWdl
QXJlYU1hcE1lc3NhZ2VzLmggKi8sCi0JCQkJMUFCMzFBOTQxNkJDNjg4MTAwRjZEQkM5IC8qIFN0
b3JhZ2VNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKLQkJCQkxQUIzMUE5NTE2QkM2ODgx
MDBGNkRCQzkgLyogU3RvcmFnZU1hbmFnZXJNZXNzYWdlcy5oICovLAogCQkJCTUxMThFOUE1MUYy
OTU5NjMwMDNFRjlGNSAvKiBTdG9yYWdlUHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJ
CQkJNTExOEU5QTYxRjI5NTk2MzAwM0VGOUY1IC8qIFN0b3JhZ2VQcm9jZXNzTWVzc2FnZXMuaCAq
LywKIAkJCQk1MTE4RTlBNzFGMjk1OTYzMDAzRUY5RjUgLyogU3RvcmFnZVByb2Nlc3NQcm94eU1l
c3NhZ2VSZWNlaXZlci5jcHAgKi8sCkBAIC05NDc2LDYgKzk0ODMsOCBAQAogCQkJCUU0OUQ0MEQ3
MUFEM0ZCMTcwMDY2QjdCOSAvKiBOZXR3b3JrQ2FjaGVCbG9iU3RvcmFnZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRTQ4OUQyOEMxQTBBMkRCODAwNzhDMDZBIC8qIE5ldHdvcmtDYWNoZUNvZGVycy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRTQyRTA2MTIxQUE3NUFCRDAwQjExNjk5IC8qIE5ldHdvcmtD
YWNoZURhdGEuaCBpbiBIZWFkZXJzICovLAorCQkJCTkzNjhFRURGMjMwM0E5RUQwMEJEQjExQSAv
KiBTdG9yYWdlTWFuYWdlclNldE1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKKwkJCQk5MzZCMDU5
ODIzMDM5MDk3MDAyRkMwNkIgLyogU3RvcmFnZU1hbmFnZXJTZXQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUU0MTNGNTlEMUFDMUFEQzQwMDM0NTM2MCAvKiBOZXR3b3JrQ2FjaGVFbnRyeS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJODM0QjI1MEYxQTgzMUE4RDAwQ0ZCMTUwIC8qIE5ldHdvcmtDYWNoZUZp
bGVTeXN0ZW0uaCBpbiBIZWFkZXJzICovLAogCQkJCUU0MkUwNjEwMUFBNzUyM0IwMEIxMTY5OSAv
KiBOZXR3b3JrQ2FjaGVJT0NoYW5uZWwuaCBpbiBIZWFkZXJzICovLApAQCAtOTY3MCw3ICs5Njc5
LDYgQEAKIAkJCQkxQUNFQ0QyNTE3MTYyREIxMDAxRkM5RUYgLyogU3RvcmFnZUFyZWFNYXAuaCBp
biBIZWFkZXJzICovLAogCQkJCTFBMzM0REVFMTZERThGODgwMDZBOEUzOCAvKiBTdG9yYWdlQXJl
YU1hcE1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0IyNjE0RDIyN0QxNDlFMDBCOTdB
NzYgLyogU3RvcmFnZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTFBQjMxQTk3MTZCQzY4
ODEwMEY2REJDOSAvKiBTdG9yYWdlTWFuYWdlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQUUwMEQ2QzE4MzI3QzEyMDAwODdERDcgLyogU3RyaW5nUmVmZXJlbmNlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkyOTZCRDg1RDE1MDE5QkMzMDA3MUY0MjQgLyogU3RyaW5nVXRpbGl0aWVzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1N0ZEMzE4NjIyQjM1MTZDMDA4RDBFOEIgLyogU3ViRnJhbWVT
T0F1dGhvcml6YXRpb25TZXNzaW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTExMTg0LDcgKzExMTky
LDYgQEAKIAkJCQkyRDkyQTc4NzIxMkI2QUIxMDBGNDkzRkQgLyogU2hhcmVhYmxlQml0bWFwLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTJERTY5NDNEMThCRDJBNjgwMDVDMTVFNSAvKiBTbWFydE1h
Z25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTFBMzM0REVEMTZERThGODgwMDZBOEUzOCAvKiBTdG9yYWdlQXJlYU1hcE1lc3NhZ2VSZWNl
aXZlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkxQUIzMUE5NjE2QkM2ODgxMDBGNkRCQzkgLyog
U3RvcmFnZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ5
MkE3ODMyMTJCNkE3MTAwRjQ5M0ZEIC8qIFN0cmluZ1JlZmVyZW5jZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkyRDExQjc1MTIxMjZBMjgyMDA2Rjg4NzggLyogVW5pZmllZFNvdXJjZTEtbW0ubW0g
aW4gU291cmNlcyAqLywKIAkJCQkyRDExQjc1MjIxMjZBMjgyMDA2Rjg4NzggLyogVW5pZmllZFNv
dXJjZTEuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xMTI1MSw2ICsxMTI1OCw3IEBACiAJCQkJMkQx
MUI3OEYyMTI2QTI4MzAwNkY4ODc4IC8qIFVuaWZpZWRTb3VyY2UzMi1tbS5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTJEMTFCNzkwMjEyNkEyODMwMDZGODg3OCAvKiBVbmlmaWVkU291cmNlMzIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMkQxMUI3OTEyMTI2QTI4MzAwNkY4ODc4IC8qIFVuaWZpZWRT
b3VyY2UzMy1tbS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTkzNjhFRURFMjMwM0E5MDIwMEJEQjEx
QSAvKiBTdG9yYWdlTWFuYWdlclNldE1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkyRDExQjc5MjIxMjZBMjgzMDA2Rjg4NzggLyogVW5pZmllZFNvdXJjZTMzLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTJEMTFCNzk0MjEyNkEyODMwMDZGODg3OCAvKiBVbmlmaWVkU291cmNl
MzQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQxMUI3OTMyMTI2QTI4MzAwNkY4ODc4IC8qIFVu
aWZpZWRTb3VyY2UzNC1tbS5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKaW5k
ZXggMjBjZTU1OTExZDcwNjUxYzMzNWE3MGFjZjI0ZTViZGZjMjFiZDYzMS4uYjBkY2I5MDAwYmU5
MTUyOGM3YzA3MWY2NmQ3ZThjMzAxY2U5NWE3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCkBAIC00
Niw2ICs0Niw3IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgog
I2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29s
TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaCIKICNp
bmNsdWRlICJXZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0
YVN0b3JlUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FQSUNhc3QuaD4K
QEAgLTM0OCw5ICszNDksMTMgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6c2V0SmF2YVNjcmlwdENh
bkFjY2Vzc0NsaXBib2FyZChXZWJQYWdlR3JvdXBQcm94eSogcGFnZUdyb3UKIHZvaWQgSW5qZWN0
ZWRCdW5kbGU6OnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoV2ViUGFnZUdyb3VwUHJveHkqIHBh
Z2VHcm91cCwgYm9vbCBlbmFibGVkKQogewogICAgIEFTU0VSVCghaGFzUHJvY2Vzc1ByaXZpbGVn
ZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7Ci0gICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkuZW5hYmxlUHJpdmF0ZUJyb3dzaW5nRm9yVGVzdGluZyhlbmFibGVkKTsK
KyAgICBpZiAoZW5hYmxlZCkKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJl
TGVnYWN5UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbkluTmV0d29ya1Byb2Nlc3MoKTsKIAogICAgIFBh
Z2VHcm91cDo6cGFnZUdyb3VwKHBhZ2VHcm91cC0+aWRlbnRpZmllcigpKS0+ZW5hYmxlTGVnYWN5
UHJpdmF0ZUJyb3dzaW5nRm9yVGVzdGluZyhlbmFibGVkKTsKKworICAgIGF1dG8gd2ViU3RvcmFn
ZU5hbWVTcGFjZVByb3ZpZGVyID0gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpnZXRPckNy
ZWF0ZShwYWdlR3JvdXAtPnBhZ2VHcm91cElEKCkpOworICAgIHdlYlN0b3JhZ2VOYW1lU3BhY2VQ
cm92aWRlci0+ZW5hYmxlTGVnYWN5UHJpdmF0ZUJyb3dzaW5nRm9yVGVzdGluZyhlbmFibGVkKTsK
IH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZTo6c2V0UG9wdXBCbG9ja2luZ0VuYWJsZWQoV2ViUGFn
ZUdyb3VwUHJveHkqIHBhZ2VHcm91cCwgYm9vbCBlbmFibGVkKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IGEyZGExMmM2MDIyOTM3M2NmODc4OTJiODNkYWE1Nzcz
NTAwYTc3ZjIuLjVhOGNjMTBmNWNjMDBlYmJiMzYxZmYyNTljNTU1M2ZmOGVlOGFiZjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTY3Nyw3ICs2NzcsNiBAQCB2
b2lkIFdlYlByb2Nlc3M6OmNyZWF0ZVdlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzJgogICAgIC8vIEl0IGlzIG5lY2Vzc2FyeSB0byBjaGVjayBm
b3IgcGFnZSBleGlzdGVuY2UgaGVyZSBzaW5jZSBkdXJpbmcgYSB3aW5kb3cub3BlbigpIChvciB0
YXJnZXRlZAogICAgIC8vIGxpbmspIHRoZSBXZWJQYWdlIGdldHMgY3JlYXRlZCBib3RoIGluIHRo
ZSBzeW5jaHJvbm91cyBoYW5kbGVyIGFuZCB0aHJvdWdoIHRoZSBub3JtYWwgd2F5LiAKICAgICBh
dXRvIHJlc3VsdCA9IG1fcGFnZU1hcC5hZGQocGFnZUlELCBudWxscHRyKTsKLSAgICBhdXRvIG9s
ZFBhZ2VJRCA9IHBhcmFtZXRlcnMub2xkUGFnZUlEID8gcGFyYW1ldGVycy5vbGRQYWdlSUQudmFs
dWUoKSA6IHBhZ2VJRDsKICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpIHsKICAgICAgICAgQVNT
RVJUKCFyZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZSA9IFdlYlBhZ2U6OmNyZWF0ZShwYWdlSUQsIFdURk1vdmUocGFyYW1ldGVycykpOwpAQCAt
Njg4LDggKzY4Nyw2IEBAIHZvaWQgV2ViUHJvY2Vzczo6Y3JlYXRlV2ViUGFnZShQYWdlSWRlbnRp
ZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmCiAgICAgfSBlbHNlCiAgICAg
ICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPnJlaW5pdGlhbGl6ZVdlYlBhZ2UoV1RGTW92ZShw
YXJhbWV0ZXJzKSk7CiAKLSAgICBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25u
ZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Oldl
YlBhZ2VXYXNBZGRlZChyZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5zZXNzaW9uSUQoKSwgcGFnZUlE
LCBvbGRQYWdlSUQpLCAwKTsKLQogICAgIEFTU0VSVChyZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsK
IH0KIApAQCAtNjk3LDcgKzY5NCw2IEBAIHZvaWQgV2ViUHJvY2Vzczo6cmVtb3ZlV2ViUGFnZShQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBB
U1NFUlQobV9wYWdlTWFwLmNvbnRhaW5zKHBhZ2VJRCkpOwogCi0gICAgZW5zdXJlTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpXZWJQYWdlV2FzUmVtb3ZlZChzZXNzaW9uSUQsIHBhZ2VJRCks
IDApOwogICAgIHBhZ2VXaWxsTGVhdmVXaW5kb3cocGFnZUlEKTsKICAgICBtX3BhZ2VNYXAucmVt
b3ZlKHBhZ2VJRCk7CiAKQEAgLTEyNDYsMTYgKzEyNDIsNiBAQCBOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24mIFdlYlByb2Nlc3M6OmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpCiAgICAg
ICAgICAgICBDUkFTSCgpOwogCiAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uID0g
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUoY29ubmVjdGlvbklkZW50aWZpZXIpOwot
Ci0gICAgICAgIC8vIFRvIHJlY292ZXIgd2ViIHN0b3JhZ2UsIG5ldHdvcmsgcHJvY2VzcyBuZWVk
cyB0byBrbm93IGFjdGl2ZSB3ZWJwYWdlcyB0byBwcmVwYXJlIHNlc3Npb24gc3RvcmFnZS4KLSAg
ICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTgwNTEuCi0gICAgICAgIC8vIFdlYnBhZ2Ugc2hvdWxkIGJlIGFkZGVkIHdoZW4gU3RvcmFnZSBp
cyB1c2VkLCBub3Qgd2hlbiBjb25uZWN0aW9uIGlzIHJlLWVzdGFibGlzaGVkLgotICAgICAgICBm
b3IgKGF1dG8mIHBhZ2UgOiBtX3BhZ2VNYXApIHsKLSAgICAgICAgICAgIGlmICghcGFnZS52YWx1
ZSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgbV9uZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6V2ViUGFnZVdhc0FkZGVkKHBhZ2UudmFsdWUtPnNlc3Npb25JRCgp
LCBwYWdlLmtleSwgcGFnZS5rZXkpLCAwKTsKLSAgICAgICAgfQogICAgIH0KICAgICAKICAgICBy
ZXR1cm4gKm1fbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOwpAQCAtMTI4Niw3ICsxMjcyLDcgQEAg
dm9pZCBXZWJQcm9jZXNzOjpuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25DbG9zZWQoTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uKiBjb25uZWMKICAgICBBU1NFUlQobV9uZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24pOwogICAgIEFTU0VSVF9VTlVTRUQoY29ubmVjdGlvbiwgbV9uZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24gPT0gY29ubmVjdGlvbik7CiAKLSAgICBmb3IgKGF1dG8qIHN0b3JhZ2VBcmVhTWFw
IDogbV9zdG9yYWdlQXJlYU1hcHMudmFsdWVzKCkpCisgICAgZm9yIChhdXRvKiBzdG9yYWdlQXJl
YU1hcCA6IGNvcHlUb1ZlY3RvcihtX3N0b3JhZ2VBcmVhTWFwcy52YWx1ZXMoKSkpCiAgICAgICAg
IHN0b3JhZ2VBcmVhTWFwLT5kaXNjb25uZWN0KCk7CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRB
QkFTRSkKQEAgLTE2ODcsMjUgKzE2NzMsOSBAQCB2b2lkIFdlYlByb2Nlc3M6OnVucmVnaXN0ZXJT
dG9yYWdlQXJlYU1hcChTdG9yYWdlQXJlYU1hcCYgc3RvcmFnZUFyZWFNYXApCiAKIFN0b3JhZ2VB
cmVhTWFwKiBXZWJQcm9jZXNzOjpzdG9yYWdlQXJlYU1hcCh1aW50NjRfdCBpZGVudGlmaWVyKSBj
b25zdAogewotICAgIEFTU0VSVChtX3N0b3JhZ2VBcmVhTWFwcy5jb250YWlucyhpZGVudGlmaWVy
KSk7CiAgICAgcmV0dXJuIG1fc3RvcmFnZUFyZWFNYXBzLmdldChpZGVudGlmaWVyKTsKIH0KIAot
dm9pZCBXZWJQcm9jZXNzOjplbmFibGVQcml2YXRlQnJvd3NpbmdGb3JUZXN0aW5nKGJvb2wgZW5h
YmxlKQotewotICAgIGlmIChlbmFibGUpCi0gICAgICAgIGVuc3VyZUxlZ2FjeVByaXZhdGVCcm93
c2luZ1Nlc3Npb25Jbk5ldHdvcmtQcm9jZXNzKCk7Ci0KLSAgICBWZWN0b3I8UGFnZUlkZW50aWZp
ZXI+IHBhZ2VJRHM7Ci0gICAgZm9yIChhdXRvJiBwYWdlIDogbV9wYWdlTWFwKSB7Ci0gICAgICAg
IGlmIChwYWdlLnZhbHVlKQotICAgICAgICAgICAgcGFnZUlEcy5hcHBlbmQocGFnZS5rZXkpOwot
ICAgIH0KLQotICAgIGlmICghcGFnZUlEcy5pc0VtcHR5KCkpCi0gICAgICAgIGVuc3VyZU5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6V2ViUHJvY2Vzc1Nlc3Npb25DaGFuZ2VkKGVuYWJsZSA/
IFBBTDo6U2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkgOiBQQUw6OlNlc3Npb25J
RDo6ZGVmYXVsdFNlc3Npb25JRCgpLCBwYWdlSURzKSwgMCk7Ci19Ci0KIHZvaWQgV2ViUHJvY2Vz
czo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoYm9vbCBlbmFibGVkKQogewogICAg
IFdlYkNvcmU6OkRlcHJlY2F0ZWRHbG9iYWxTZXR0aW5nczo6c2V0UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0VuYWJsZWQoZW5hYmxlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApp
bmRleCBkNGMwMWJhYjFmOTNkYTkwODViMGYyMTk0Y2QzMjdkNDcxODY1MGIyLi42NjExZTkyMzA1
OGQxMjM3MGU2NjVkOGNhYzY3MmFmZDJjMTczOWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmgKQEAgLTIxNCw4ICsyMTQsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCB1bnJlZ2lz
dGVyU3RvcmFnZUFyZWFNYXAoU3RvcmFnZUFyZWFNYXAmKTsKICAgICBTdG9yYWdlQXJlYU1hcCog
c3RvcmFnZUFyZWFNYXAodWludDY0X3QgaWRlbnRpZmllcikgY29uc3Q7CiAKLSAgICB2b2lkIGVu
YWJsZVByaXZhdGVCcm93c2luZ0ZvclRlc3RpbmcoYm9vbCk7Ci0KICNpZiBQTEFURk9STShDT0NP
QSkKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBzb3VyY2VBcHBsaWNhdGlvbkF1ZGl0RGF0YSgp
IGNvbnN0OwogICAgIHZvaWQgZGVzdHJveVJlbmRlcmluZ1Jlc291cmNlcygpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5j
cHAKaW5kZXggNzQwYzBkYmMwN2NhN2Q1NWUxM2NlMmIxOTAyMzMzYzBkZTBhNjI2My4uZWNkMmI5
MzVkNDMzYmU4MzdjNGM0YmJhZGYzZTU1YWM0NjZlNDFmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwCkBAIC0z
Myw2ICszMyw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TY2hlbWVSZWdpc3RyeS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXR0
aW5ncy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU3RvcmFnZVR5cGUuaD4KIAogbmFtZXNwYWNlIFdl
YktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTUwLDcgKzUxLDcgQEAgUmVmPFN0
b3JhZ2VBcmVhSW1wbD4gU3RvcmFnZUFyZWFJbXBsOjpjcmVhdGUoUmVmPFN0b3JhZ2VBcmVhTWFw
PiYmIHN0b3JhZ2VBcmVhTWEKIAogU3RvcmFnZUFyZWFJbXBsOjpTdG9yYWdlQXJlYUltcGwoUmVm
PFN0b3JhZ2VBcmVhTWFwPiYmIHN0b3JhZ2VBcmVhTWFwKQogICAgIDogbV9zdG9yYWdlQXJlYUlE
KGdlbmVyYXRlU3RvcmFnZUFyZWFJRCgpKQotICAgICwgbV9zdG9yYWdlQXJlYU1hcChXVEZNb3Zl
KHN0b3JhZ2VBcmVhTWFwKSkKKyAgICAsIG1fc3RvcmFnZUFyZWFNYXAobWFrZVdlYWtQdHIoc3Rv
cmFnZUFyZWFNYXAuZ2V0KCkpKQogewogfQogCkBAIC02MCw0OSArNjEsNTQgQEAgU3RvcmFnZUFy
ZWFJbXBsOjp+U3RvcmFnZUFyZWFJbXBsKCkKIAogdW5zaWduZWQgU3RvcmFnZUFyZWFJbXBsOjps
ZW5ndGgoKQogewotICAgIHJldHVybiBtX3N0b3JhZ2VBcmVhTWFwLT5sZW5ndGgoKTsKKyAgICBy
ZXR1cm4gbV9zdG9yYWdlQXJlYU1hcCA/IG1fc3RvcmFnZUFyZWFNYXAtPmxlbmd0aCgpIDogMDsK
IH0KIAogU3RyaW5nIFN0b3JhZ2VBcmVhSW1wbDo6a2V5KHVuc2lnbmVkIGluZGV4KQogewotICAg
IHJldHVybiBtX3N0b3JhZ2VBcmVhTWFwLT5rZXkoaW5kZXgpOworICAgIHJldHVybiBtX3N0b3Jh
Z2VBcmVhTWFwID8gbV9zdG9yYWdlQXJlYU1hcC0+a2V5KGluZGV4KSA6IG51bGxTdHJpbmcoKTsK
IH0KIAogU3RyaW5nIFN0b3JhZ2VBcmVhSW1wbDo6aXRlbShjb25zdCBTdHJpbmcmIGtleSkKIHsK
LSAgICByZXR1cm4gbV9zdG9yYWdlQXJlYU1hcC0+aXRlbShrZXkpOwotfQotCi1ib29sIFN0b3Jh
Z2VBcmVhSW1wbDo6cHJld2FybSgpCi17Ci0gICAgcmV0dXJuIG1fc3RvcmFnZUFyZWFNYXAtPnBy
ZXdhcm0oKTsKKyAgICByZXR1cm4gbV9zdG9yYWdlQXJlYU1hcCA/IG1fc3RvcmFnZUFyZWFNYXAt
Pml0ZW0oa2V5KSA6IG51bGxTdHJpbmcoKTsKIH0KIAogdm9pZCBTdG9yYWdlQXJlYUltcGw6OnNl
dEl0ZW0oRnJhbWUqIHNvdXJjZUZyYW1lLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5n
JiB2YWx1ZSwgYm9vbCYgcXVvdGFFeGNlcHRpb24pCiB7CiAgICAgQVNTRVJUKCF2YWx1ZS5pc051
bGwoKSk7CiAKLSAgICBtX3N0b3JhZ2VBcmVhTWFwLT5zZXRJdGVtKHNvdXJjZUZyYW1lLCB0aGlz
LCBrZXksIHZhbHVlLCBxdW90YUV4Y2VwdGlvbik7CisgICAgaWYgKG1fc3RvcmFnZUFyZWFNYXAp
CisgICAgICAgIG1fc3RvcmFnZUFyZWFNYXAtPnNldEl0ZW0oc291cmNlRnJhbWUsIHRoaXMsIGtl
eSwgdmFsdWUsIHF1b3RhRXhjZXB0aW9uKTsKIH0KIAogdm9pZCBTdG9yYWdlQXJlYUltcGw6OnJl
bW92ZUl0ZW0oRnJhbWUqIHNvdXJjZUZyYW1lLCBjb25zdCBTdHJpbmcmIGtleSkKIHsKLSAgICBt
X3N0b3JhZ2VBcmVhTWFwLT5yZW1vdmVJdGVtKHNvdXJjZUZyYW1lLCB0aGlzLCBrZXkpOworICAg
IGlmIChtX3N0b3JhZ2VBcmVhTWFwKQorICAgICAgICBtX3N0b3JhZ2VBcmVhTWFwLT5yZW1vdmVJ
dGVtKHNvdXJjZUZyYW1lLCB0aGlzLCBrZXkpOwogfQogCiB2b2lkIFN0b3JhZ2VBcmVhSW1wbDo6
Y2xlYXIoRnJhbWUqIHNvdXJjZUZyYW1lKQogewotICAgIG1fc3RvcmFnZUFyZWFNYXAtPmNsZWFy
KHNvdXJjZUZyYW1lLCB0aGlzKTsKKyAgICBpZiAobV9zdG9yYWdlQXJlYU1hcCkKKyAgICAgICAg
bV9zdG9yYWdlQXJlYU1hcC0+Y2xlYXIoc291cmNlRnJhbWUsIHRoaXMpOwogfQogCiBib29sIFN0
b3JhZ2VBcmVhSW1wbDo6Y29udGFpbnMoY29uc3QgU3RyaW5nJiBrZXkpCiB7Ci0gICAgcmV0dXJu
IG1fc3RvcmFnZUFyZWFNYXAtPmNvbnRhaW5zKGtleSk7CisgICAgaWYgKG1fc3RvcmFnZUFyZWFN
YXApCisgICAgICAgIHJldHVybiBtX3N0b3JhZ2VBcmVhTWFwLT5jb250YWlucyhrZXkpOworCisg
ICAgcmV0dXJuIGZhbHNlOwogfQogCiBTdG9yYWdlVHlwZSBTdG9yYWdlQXJlYUltcGw6OnN0b3Jh
Z2VUeXBlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9zdG9yYWdlQXJlYU1hcC0+c3RvcmFnZVR5
cGUoKTsKKyAgICBpZiAobV9zdG9yYWdlQXJlYU1hcCkKKyAgICAgICAgcmV0dXJuIG1fc3RvcmFn
ZUFyZWFNYXAtPnN0b3JhZ2VUeXBlKCk7CisKKyAgICAvLyBXZSBwcm9iYWJseSBuZWVkIGFuIElu
dmFsaWQgdHlwZS4KKyAgICByZXR1cm4gU3RvcmFnZVR5cGU6OkxvY2FsOwogfQogCiBzaXplX3Qg
U3RvcmFnZUFyZWFJbXBsOjptZW1vcnlCeXRlc1VzZWRCeUNhY2hlKCkKQEAgLTExMiwxMiArMTE4
LDEyIEBAIHNpemVfdCBTdG9yYWdlQXJlYUltcGw6Om1lbW9yeUJ5dGVzVXNlZEJ5Q2FjaGUoKQog
CiB2b2lkIFN0b3JhZ2VBcmVhSW1wbDo6aW5jcmVtZW50QWNjZXNzQ291bnQoKQogewotICAgIC8v
IFN0b3JhZ2UgYWNjZXNzIGlzIGhhbmRsZWQgaW4gdGhlIFVJIHByb2Nlc3MsIHNvIHRoZXJlJ3Mg
bm90aGluZyB0byBkbyBoZXJlLgorICAgIC8vIFN0b3JhZ2UgYWNjZXNzIGlzIGhhbmRsZWQgaW4g
dGhlIG5ldHdvcmsgcHJvY2Vzcywgc28gdGhlcmUncyBub3RoaW5nIHRvIGRvIGhlcmUuCiB9CiAK
IHZvaWQgU3RvcmFnZUFyZWFJbXBsOjpkZWNyZW1lbnRBY2Nlc3NDb3VudCgpCiB7Ci0gICAgLy8g
U3RvcmFnZSBhY2Nlc3MgaXMgaGFuZGxlZCBpbiB0aGUgVUkgcHJvY2Vzcywgc28gdGhlcmUncyBu
b3RoaW5nIHRvIGRvIGhlcmUuCisgICAgLy8gU3RvcmFnZSBhY2Nlc3MgaXMgaGFuZGxlZCBpbiB0
aGUgbmV0d29yayBwcm9jZXNzLCBzbyB0aGVyZSdzIG5vdGhpbmcgdG8gZG8gaGVyZS4KIH0KIAog
dm9pZCBTdG9yYWdlQXJlYUltcGw6OmNsb3NlRGF0YWJhc2VJZklkbGUoKQpAQCAtMTI2LDkgKzEz
Miw0IEBAIHZvaWQgU3RvcmFnZUFyZWFJbXBsOjpjbG9zZURhdGFiYXNlSWZJZGxlKCkKICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBTdG9y
YWdlQXJlYUltcGw6OnNlY3VyaXR5T3JpZ2luKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zdG9y
YWdlQXJlYU1hcC0+c2VjdXJpdHlPcmlnaW4oKS5kYXRhKCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2Uv
U3RvcmFnZUFyZWFJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9T
dG9yYWdlQXJlYUltcGwuaAppbmRleCBiOGYxNmYyZWFhNWE5ZWFjMDY2NDViMzhlNWYwZmYxNDRk
ZGQ1ODI0Li5iMmE4ZDUwYmUxODcwMWQ5MWQzMTExMTY5YzEzMmJmN2ZjOTE5OTlhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUlt
cGwuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU3RvcmFnZUFyZWEuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgor
I2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNl
Y3VyaXR5T3JpZ2luOwpAQCAtNjAsMTEgKzYxLDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGluY3Jl
bWVudEFjY2Vzc0NvdW50KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkZWNyZW1lbnRBY2Nlc3NDb3Vu
dCgpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xvc2VEYXRhYmFzZUlmSWRsZSgpIG92ZXJyaWRlOwot
ICAgIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4oKSBj
b25zdCBvdmVycmlkZTsKLSAgICBib29sIHByZXdhcm0oKSBmaW5hbDsKIAogICAgIHVpbnQ2NF90
IG1fc3RvcmFnZUFyZWFJRDsKLSAgICBSZWY8U3RvcmFnZUFyZWFNYXA+IG1fc3RvcmFnZUFyZWFN
YXA7CisgICAgV2Vha1B0cjxTdG9yYWdlQXJlYU1hcD4gbV9zdG9yYWdlQXJlYU1hcDsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuY3BwCmluZGV4IDNlMDUwZGYxNzhhNDQ4YmM5
MzJjYTRiYWVjMTAzMWE3MmY5MzgwZTYuLjY2NjViM2Y5Y2RmZDZmYWZlNmI2ZGUyMzljMTY0NjNm
YjhmNzg1YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdl
L1N0b3JhZ2VBcmVhTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3Rv
cmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJTdG9yYWdlQXJlYUltcGwuaCIKICNp
bmNsdWRlICJTdG9yYWdlQXJlYU1hcE1lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiU3RvcmFnZU1hbmFn
ZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlN0b3JhZ2VNYW5hZ2VyU2V0TWVzc2FnZXMuaCIKICNp
bmNsdWRlICJTdG9yYWdlTmFtZXNwYWNlSW1wbC5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNp
bmNsdWRlICJXZWJQYWdlR3JvdXBQcm94eS5oIgpAQCAtNDgsNDAgKzQ4LDI2IEBACiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1zdGF0aWMgdWludDY0X3Qg
Z2VuZXJhdGVTdG9yYWdlTWFwSUQoKQotewotICAgIHN0YXRpYyB1aW50NjRfdCBzdG9yYWdlTWFw
SUQ7Ci0gICAgcmV0dXJuICsrc3RvcmFnZU1hcElEOwotfQotCiBSZWY8U3RvcmFnZUFyZWFNYXA+
IFN0b3JhZ2VBcmVhTWFwOjpjcmVhdGUoU3RvcmFnZU5hbWVzcGFjZUltcGwqIHN0b3JhZ2VOYW1l
c3BhY2UsIFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiBzZWN1cml0eU9yaWdpbikKIHsK
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9yYWdlQXJlYU1hcChzdG9yYWdlTmFtZXNwYWNl
LCBXVEZNb3ZlKHNlY3VyaXR5T3JpZ2luKSkpOwogfQogCiBTdG9yYWdlQXJlYU1hcDo6U3RvcmFn
ZUFyZWFNYXAoU3RvcmFnZU5hbWVzcGFjZUltcGwqIHN0b3JhZ2VOYW1lc3BhY2UsIFJlZjxXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbj4mJiBzZWN1cml0eU9yaWdpbikKLSAgICA6IG1fc3RvcmFnZU5h
bWVzcGFjZSgqc3RvcmFnZU5hbWVzcGFjZSkKLSAgICAsIG1fc3RvcmFnZU1hcElEKGdlbmVyYXRl
U3RvcmFnZU1hcElEKCkpCisgICAgOiBtX3N0b3JhZ2VOYW1lc3BhY2Uoc3RvcmFnZU5hbWVzcGFj
ZSkKKyAgICAsIG1fc3RvcmFnZU1hcElEKDApCiAgICAgLCBtX3N0b3JhZ2VUeXBlKHN0b3JhZ2VO
YW1lc3BhY2UtPnN0b3JhZ2VUeXBlKCkpCi0gICAgLCBtX3N0b3JhZ2VOYW1lc3BhY2VJRChzdG9y
YWdlTmFtZXNwYWNlLT5zdG9yYWdlTmFtZXNwYWNlSUQoKSkKICAgICAsIG1fcXVvdGFJbkJ5dGVz
KHN0b3JhZ2VOYW1lc3BhY2UtPnF1b3RhSW5CeXRlcygpKQogICAgICwgbV9zZWN1cml0eU9yaWdp
bihXVEZNb3ZlKHNlY3VyaXR5T3JpZ2luKSkKICAgICAsIG1fY3VycmVudFNlZWQoMCkKICAgICAs
IG1faGFzUGVuZGluZ0NsZWFyKGZhbHNlKQotICAgICwgbV9oYXNQZW5kaW5nR2V0VmFsdWVzKGZh
bHNlKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnJlZ2lzdGVyU3RvcmFnZUFyZWFN
YXAoKnRoaXMpOwogICAgIGNvbm5lY3QoKTsKIH0KIAogU3RvcmFnZUFyZWFNYXA6On5TdG9yYWdl
QXJlYU1hcCgpCiB7Ci0gICAgaWYgKG1fc3RvcmFnZVR5cGUgIT0gU3RvcmFnZVR5cGU6OkVwaGVt
ZXJhbExvY2FsKQotICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6U3RvcmFnZU1h
bmFnZXI6OkRlc3Ryb3lTdG9yYWdlTWFwKG1fc3RvcmFnZU1hcElEKSwgMCk7Ci0KLSAgICBtX3N0
b3JhZ2VOYW1lc3BhY2UtPmRpZERlc3Ryb3lTdG9yYWdlQXJlYU1hcCgqdGhpcyk7Ci0KLSAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS51bnJlZ2lzdGVyU3RvcmFnZUFyZWFNYXAoKnRoaXMpOwor
ICAgIGRpc2Nvbm5lY3QoKTsKIH0KIAogdW5zaWduZWQgU3RvcmFnZUFyZWFNYXA6Omxlbmd0aCgp
CkBAIC0xMjIsNyArMTA4LDcgQEAgdm9pZCBTdG9yYWdlQXJlYU1hcDo6c2V0SXRlbShGcmFtZSog
c291cmNlRnJhbWUsIFN0b3JhZ2VBcmVhSW1wbCogc291cmNlQXJlYSwgY28KIAogICAgIG1fcGVu
ZGluZ1ZhbHVlQ2hhbmdlcy5hZGQoa2V5KTsKIAotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3Nh
Z2VzOjpTdG9yYWdlTWFuYWdlcjo6U2V0SXRlbShtX3NlY3VyaXR5T3JpZ2luLT5kYXRhKCksIG1f
c3RvcmFnZU1hcElELCBzb3VyY2VBcmVhLT5zdG9yYWdlQXJlYUlEKCksIG1fY3VycmVudFNlZWQs
IGtleSwgdmFsdWUsIHNvdXJjZUZyYW1lLT5kb2N1bWVudCgpLT51cmwoKSksIDApOworICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNv
bm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdlclNldDo6U2V0SXRlbShtX3N0
b3JhZ2VNYXBJRCwgc291cmNlQXJlYS0+c3RvcmFnZUFyZWFJRCgpLCBtX2N1cnJlbnRTZWVkLCBr
ZXksIHZhbHVlLCBzb3VyY2VGcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkpLCAwKTsKIH0KIAogdm9p
ZCBTdG9yYWdlQXJlYU1hcDo6cmVtb3ZlSXRlbShXZWJDb3JlOjpGcmFtZSogc291cmNlRnJhbWUs
IFN0b3JhZ2VBcmVhSW1wbCogc291cmNlQXJlYSwgY29uc3QgU3RyaW5nJiBrZXkpCkBAIC0xMzgs
MTYgKzEyNCwxOCBAQCB2b2lkIFN0b3JhZ2VBcmVhTWFwOjpyZW1vdmVJdGVtKFdlYkNvcmU6OkZy
YW1lKiBzb3VyY2VGcmFtZSwgU3RvcmFnZUFyZWFJbXBsKiBzbwogCiAgICAgbV9wZW5kaW5nVmFs
dWVDaGFuZ2VzLmFkZChrZXkpOwogCi0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJl
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlN0
b3JhZ2VNYW5hZ2VyOjpSZW1vdmVJdGVtKG1fc2VjdXJpdHlPcmlnaW4tPmRhdGEoKSwgbV9zdG9y
YWdlTWFwSUQsIHNvdXJjZUFyZWEtPnN0b3JhZ2VBcmVhSUQoKSwgbV9jdXJyZW50U2VlZCwga2V5
LCBzb3VyY2VGcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCku
c2VuZChNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXJTZXQ6OlJlbW92ZUl0ZW0obV9zdG9yYWdlTWFw
SUQsIHNvdXJjZUFyZWEtPnN0b3JhZ2VBcmVhSUQoKSwgbV9jdXJyZW50U2VlZCwga2V5LCBzb3Vy
Y2VGcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkpLCAwKTsKIH0KIAogdm9pZCBTdG9yYWdlQXJlYU1h
cDo6Y2xlYXIoV2ViQ29yZTo6RnJhbWUqIHNvdXJjZUZyYW1lLCBTdG9yYWdlQXJlYUltcGwqIHNv
dXJjZUFyZWEpCiB7CisgICAgY29ubmVjdCgpOworCiAgICAgcmVzZXRWYWx1ZXMoKTsKIAogICAg
IG1faGFzUGVuZGluZ0NsZWFyID0gdHJ1ZTsKICAgICBtX3N0b3JhZ2VNYXAgPSBTdG9yYWdlTWFw
OjpjcmVhdGUobV9xdW90YUluQnl0ZXMpOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVu
c3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2Vz
OjpTdG9yYWdlTWFuYWdlcjo6Q2xlYXIobV9zZWN1cml0eU9yaWdpbi0+ZGF0YSgpLCBtX3N0b3Jh
Z2VNYXBJRCwgc291cmNlQXJlYS0+c3RvcmFnZUFyZWFJRCgpLCBtX2N1cnJlbnRTZWVkLCBzb3Vy
Y2VGcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChN
ZXNzYWdlczo6U3RvcmFnZU1hbmFnZXJTZXQ6OkNsZWFyKG1fc3RvcmFnZU1hcElELCBzb3VyY2VB
cmVhLT5zdG9yYWdlQXJlYUlEKCksIG1fY3VycmVudFNlZWQsIHNvdXJjZUZyYW1lLT5kb2N1bWVu
dCgpLT51cmwoKSksIDApOwogfQogCiBib29sIFN0b3JhZ2VBcmVhTWFwOjpjb250YWlucyhjb25z
dCBTdHJpbmcmIGtleSkKQEAgLTE2Myw3ICsxNTEsNiBAQCB2b2lkIFN0b3JhZ2VBcmVhTWFwOjpy
ZXNldFZhbHVlcygpCiAKICAgICBtX3BlbmRpbmdWYWx1ZUNoYW5nZXMuY2xlYXIoKTsKICAgICBt
X2hhc1BlbmRpbmdDbGVhciA9IGZhbHNlOwotICAgIG1faGFzUGVuZGluZ0dldFZhbHVlcyA9IGZh
bHNlOwogICAgIG1fY3VycmVudFNlZWQrKzsKIH0KIApAQCAtMTc4LDMzICsxNjUsMTAgQEAgdm9p
ZCBTdG9yYWdlQXJlYU1hcDo6bG9hZFZhbHVlc0lmTmVlZGVkKCkKICAgICAvLyBGSVhNRTogVGhp
cyBzaG91bGQgdXNlIGEgc3BlY2lhbCBzZW5kU3luYyBmbGFnIHRvIGluZGljYXRlIHRoYXQgd2Ug
ZG9uJ3Qgd2FudCB0byBwcm9jZXNzIGluY29taW5nIG1lc3NhZ2VzIHdoaWxlIHdhaXRpbmcgZm9y
IGEgcmVwbHkuCiAgICAgLy8gKFRoaXMgZmxhZyBkb2VzIG5vdCB5ZXQgZXhpc3QpLiBTaW5jZSBs
b2FkVmFsdWVzSWZOZWVkZWQoKSBlbmRzIHVwIGJlaW5nIGNhbGxlZCBmcm9tIHdpdGhpbiBKYXZh
U2NyaXB0IGNvZGUsIHByb2Nlc3NpbmcgaW5jb21pbmcgc3luY2hyb25vdXMgbWVzc2FnZXMKICAg
ICAvLyBjb3VsZCBsZWFkIHRvIHdlaXJkIHJlZW50cmVuY3kgYnVncyBvdGhlcndpc2UuCi0gICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCku
Y29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdlcjo6R2V0VmFsdWVz
KG1fc3RvcmFnZU1hcElELCBtX2N1cnJlbnRTZWVkKSwgTWVzc2FnZXM6OlN0b3JhZ2VNYW5hZ2Vy
OjpHZXRWYWx1ZXM6OlJlcGx5KHZhbHVlcyksIDApOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3lu
YyhNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXJTZXQ6OkdldFZhbHVlcyhtX3N0b3JhZ2VNYXBJRCks
IE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdlclNldDo6R2V0VmFsdWVzOjpSZXBseSh2YWx1ZXMpLCAw
KTsKIAogICAgIG1fc3RvcmFnZU1hcCA9IFN0b3JhZ2VNYXA6OmNyZWF0ZShtX3F1b3RhSW5CeXRl
cyk7CiAgICAgbV9zdG9yYWdlTWFwLT5pbXBvcnRJdGVtcyhXVEZNb3ZlKHZhbHVlcykpOwotCi0g
ICAgLy8gV2Ugd2FudCB0byBpZ25vcmUgYWxsIGNoYW5nZXMgdW50aWwgd2UgZ2V0IHRoZSBEaWRH
ZXRWYWx1ZXMgbWVzc2FnZS4KLSAgICBtX2hhc1BlbmRpbmdHZXRWYWx1ZXMgPSB0cnVlOwotfQot
Ci1ib29sIFN0b3JhZ2VBcmVhTWFwOjpwcmV3YXJtKCkKLXsKLSAgICBpZiAobV9kaWRQcmV3YXJt
IHx8IG1fc3RvcmFnZU1hcCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIG1fZGlkUHJld2Fy
bSA9IHRydWU7Ci0KLSAgICBjb25uZWN0KCk7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
ZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2Fn
ZXM6OlN0b3JhZ2VNYW5hZ2VyOjpQcmV3YXJtKG1fc3RvcmFnZU1hcElEKSwgMCk7Ci0gICAgcmV0
dXJuIHRydWU7Ci19Ci0KLXZvaWQgU3RvcmFnZUFyZWFNYXA6OmRpZEdldFZhbHVlcyh1aW50NjRf
dCBzdG9yYWdlTWFwU2VlZCkKLXsKLSAgICBpZiAobV9jdXJyZW50U2VlZCAhPSBzdG9yYWdlTWFw
U2VlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQVNTRVJUKG1faGFzUGVuZGluZ0dldFZhbHVl
cyk7Ci0gICAgbV9oYXNQZW5kaW5nR2V0VmFsdWVzID0gZmFsc2U7CiB9CiAKIHZvaWQgU3RvcmFn
ZUFyZWFNYXA6OmRpZFNldEl0ZW0odWludDY0X3Qgc3RvcmFnZU1hcFNlZWQsIGNvbnN0IFN0cmlu
ZyYga2V5LCBib29sIHF1b3RhRXJyb3IpCkBAIC0yNTksOCArMjIzLDggQEAgdm9pZCBTdG9yYWdl
QXJlYU1hcDo6YXBwbHlDaGFuZ2UoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgbmV3
VmFsdWUpCiB7CiAgICAgQVNTRVJUKCFtX3N0b3JhZ2VNYXAgfHwgbV9zdG9yYWdlTWFwLT5oYXNP
bmVSZWYoKSk7CiAKLSAgICAvLyBUaGVyZSdzIGEgY2xlYXIgcGVuZGluZyBvciBnZXRWYWx1ZXMg
cGVuZGluZyB3ZSBkb24ndCB3YW50IHRvIGFwcGx5IGFueSBjaGFuZ2VzIHVudGlsIHdlIGdldCB0
aGUgY29ycmVzcG9uZGluZyBEaWRDbGVhci9EaWRHZXRWYWx1ZXMgbWVzc2FnZXMuCi0gICAgaWYg
KG1faGFzUGVuZGluZ0NsZWFyIHx8IG1faGFzUGVuZGluZ0dldFZhbHVlcykKKyAgICAvLyBUaGVy
ZSBpcyBhdCBsZWFzdCBvbmUgY2xlYXIgcGVuZGluZyB3ZSBkb24ndCB3YW50IHRvIGFwcGx5IGFu
eSBjaGFuZ2VzIHVudGlsIHdlIGdldCB0aGUgY29ycmVzcG9uZGluZyBEaWRDbGVhciBtZXNzYWdl
cy4KKyAgICBpZiAobV9oYXNQZW5kaW5nQ2xlYXIpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlm
ICgha2V5KSB7CkBAIC0zMDUsNyArMjY5LDcgQEAgdm9pZCBTdG9yYWdlQXJlYU1hcDo6ZGlzcGF0
Y2hTdG9yYWdlRXZlbnQodWludDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwgY29uc3QgU3QKICAg
ICAgICAgYXBwbHlDaGFuZ2Uoa2V5LCBuZXdWYWx1ZSk7CiAgICAgfQogCi0gICAgaWYgKHN0b3Jh
Z2VUeXBlKCkgPT0gU3RvcmFnZVR5cGU6OlNlc3Npb24gfHwgc3RvcmFnZVR5cGUoKSA9PSBTdG9y
YWdlVHlwZTo6RXBoZW1lcmFsTG9jYWwpCisgICAgaWYgKHN0b3JhZ2VUeXBlKCkgPT0gU3RvcmFn
ZVR5cGU6OlNlc3Npb24pCiAgICAgICAgIGRpc3BhdGNoU2Vzc2lvblN0b3JhZ2VFdmVudChzb3Vy
Y2VTdG9yYWdlQXJlYUlELCBrZXksIG9sZFZhbHVlLCBuZXdWYWx1ZSwgdXJsU3RyaW5nKTsKICAg
ICBlbHNlCiAgICAgICAgIGRpc3BhdGNoTG9jYWxTdG9yYWdlRXZlbnQoc291cmNlU3RvcmFnZUFy
ZWFJRCwga2V5LCBvbGRWYWx1ZSwgbmV3VmFsdWUsIHVybFN0cmluZyk7CkBAIC0zMTgsOSArMjgy
LDkgQEAgdm9pZCBTdG9yYWdlQXJlYU1hcDo6Y2xlYXJDYWNoZSgpCiAKIHZvaWQgU3RvcmFnZUFy
ZWFNYXA6OmRpc3BhdGNoU2Vzc2lvblN0b3JhZ2VFdmVudCh1aW50NjRfdCBzb3VyY2VTdG9yYWdl
QXJlYUlELCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3Qg
U3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCiB7Ci0gICAgLy8gTmFt
ZXNwYWNlIElEcyBmb3Igc2Vzc2lvbiBzdG9yYWdlIG5hbWVzcGFjZXMgYW5kIGVwaGVtZXJhbCBs
b2NhbCBzdG9yYWdlIG5hbWVzcGFjZXMgYXJlIGVxdWl2YWxlbnQgdG8gd2ViIHBhZ2UgSURzCisg
ICAgLy8gTmFtZXNwYWNlIElEcyBmb3Igc2Vzc2lvbiBzdG9yYWdlIG5hbWVzcGFjZXMgYXJlIGVx
dWl2YWxlbnQgdG8gd2ViIHBhZ2UgSURzCiAgICAgLy8gc28gd2UgY2FuIGdldCB0aGUgcmlnaHQg
cGFnZSBoZXJlLgotICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS53ZWJQYWdlKG1ha2VPYmplY3RJZGVudGlmaWVyPFBhZ2VJZGVudGlmaWVyVHlwZT4obV9zdG9y
YWdlTmFtZXNwYWNlSUQpKTsKKyAgICBXZWJQYWdlKiB3ZWJQYWdlID0gV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkud2ViUGFnZShtYWtlT2JqZWN0SWRlbnRpZmllcjxQYWdlSWRlbnRpZmllclR5cGU+
KG1fc3RvcmFnZU5hbWVzcGFjZS0+c3RvcmFnZU5hbWVzcGFjZUlEKCkpKTsKICAgICBpZiAoIXdl
YlBhZ2UpCiAgICAgICAgIHJldHVybjsKIApAQCAtMzU0LDcgKzMxOCw4IEBAIHZvaWQgU3RvcmFn
ZUFyZWFNYXA6OmRpc3BhdGNoTG9jYWxTdG9yYWdlRXZlbnQodWludDY0X3Qgc291cmNlU3RvcmFn
ZUFyZWFJRCwgY29uCiAKICAgICBWZWN0b3I8UmVmUHRyPEZyYW1lPj4gZnJhbWVzOwogCi0gICAg
UGFnZUdyb3VwJiBwYWdlR3JvdXAgPSAqV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZUdy
b3VwKG1fc3RvcmFnZU5hbWVzcGFjZUlEKS0+Y29yZVBhZ2VHcm91cCgpOworICAgIC8vIE5hbWVz
cGFjZSBJRHMgZm9yIGxvY2FsIHN0b3JhZ2UgbmFtZXNwYWNlcyBhcmUgZXF1aXZhbGVudCB0byB3
ZWIgcGFnZSBncm91cCBJRHMuCisgICAgUGFnZUdyb3VwJiBwYWdlR3JvdXAgPSAqV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkud2ViUGFnZUdyb3VwKG1fc3RvcmFnZU5hbWVzcGFjZS0+c3RvcmFnZU5h
bWVzcGFjZUlEKCkpLT5jb3JlUGFnZUdyb3VwKCk7CiAgICAgY29uc3QgSGFzaFNldDxQYWdlKj4m
IHBhZ2VzID0gcGFnZUdyb3VwLnBhZ2VzKCk7CiAgICAgZm9yIChIYXNoU2V0PFBhZ2UqPjo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBwYWdlcy5iZWdpbigpLCBlbmQgPSBwYWdlcy5lbmQoKTsgaXQgIT0g
ZW5kOyArK2l0KSB7CiAgICAgICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJigqaXQpLT5tYWluRnJh
bWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgewpAQCAt
MzgxLDM1ICszNDYsMzcgQEAgdm9pZCBTdG9yYWdlQXJlYU1hcDo6ZGlzcGF0Y2hMb2NhbFN0b3Jh
Z2VFdmVudCh1aW50NjRfdCBzb3VyY2VTdG9yYWdlQXJlYUlELCBjb24KIAogdm9pZCBTdG9yYWdl
QXJlYU1hcDo6Y29ubmVjdCgpCiB7Ci0gICAgaWYgKCFtX2lzRGlzY29ubmVjdGVkKQorICAgIGlm
IChtX3N0b3JhZ2VNYXBJRCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgc3dpdGNoIChtX3N0b3Jh
Z2VUeXBlKSB7CiAgICAgY2FzZSBTdG9yYWdlVHlwZTo6TG9jYWw6Ci0gICAgY2FzZSBTdG9yYWdl
VHlwZTo6RXBoZW1lcmFsTG9jYWw6CiAgICAgY2FzZSBTdG9yYWdlVHlwZTo6VHJhbnNpZW50TG9j
YWw6CiAgICAgICAgIGlmIChTZWN1cml0eU9yaWdpbiogdG9wTGV2ZWxPcmlnaW4gPSBtX3N0b3Jh
Z2VOYW1lc3BhY2UtPnRvcExldmVsT3JpZ2luKCkpCi0gICAgICAgICAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCku
c2VuZChNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXI6OkNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFn
ZU1hcChtX3N0b3JhZ2VNYXBJRCwgbV9zdG9yYWdlTmFtZXNwYWNlLT5zdG9yYWdlTmFtZXNwYWNl
SUQoKSwgdG9wTGV2ZWxPcmlnaW4tPmRhdGEoKSwgbV9zZWN1cml0eU9yaWdpbi0+ZGF0YSgpKSwg
MCk7CisgICAgICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlN0b3JhZ2VN
YW5hZ2VyU2V0OjpDb25uZWN0VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKG1fc3RvcmFnZU5h
bWVzcGFjZS0+c2Vzc2lvbklEKCksIG1fc3RvcmFnZU5hbWVzcGFjZS0+c3RvcmFnZU5hbWVzcGFj
ZUlEKCksIHRvcExldmVsT3JpZ2luLT5kYXRhKCksIG1fc2VjdXJpdHlPcmlnaW4tPmRhdGEoKSks
IE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdlclNldDo6Q29ubmVjdFRvVHJhbnNpZW50TG9jYWxTdG9y
YWdlQXJlYTo6UmVwbHkobV9zdG9yYWdlTWFwSUQpLCAwKTsKICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VNYW5hZ2VyOjpDcmVhdGVM
b2NhbFN0b3JhZ2VNYXAobV9zdG9yYWdlTWFwSUQsIG1fc3RvcmFnZU5hbWVzcGFjZS0+c3RvcmFn
ZU5hbWVzcGFjZUlEKCksIG1fc2VjdXJpdHlPcmlnaW4tPmRhdGEoKSksIDApOworICAgICAgICAg
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
KCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdlclNldDo6Q29u
bmVjdFRvTG9jYWxTdG9yYWdlQXJlYShtX3N0b3JhZ2VOYW1lc3BhY2UtPnNlc3Npb25JRCgpLCBt
X3N0b3JhZ2VOYW1lc3BhY2UtPnN0b3JhZ2VOYW1lc3BhY2VJRCgpLCBtX3NlY3VyaXR5T3JpZ2lu
LT5kYXRhKCkpLCBNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXJTZXQ6OkNvbm5lY3RUb0xvY2FsU3Rv
cmFnZUFyZWE6OlJlcGx5KG1fc3RvcmFnZU1hcElEKSwgMCk7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgU3RvcmFnZVR5cGU6OlNlc3Npb246Ci0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1l
c3NhZ2VzOjpTdG9yYWdlTWFuYWdlcjo6Q3JlYXRlU2Vzc2lvblN0b3JhZ2VNYXAobV9zdG9yYWdl
TWFwSUQsIG1fc3RvcmFnZU5hbWVzcGFjZS0+c3RvcmFnZU5hbWVzcGFjZUlEKCksIG1fc2VjdXJp
dHlPcmlnaW4tPmRhdGEoKSksIDApOworICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5l
bnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVz
c2FnZXM6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpDb25uZWN0VG9TZXNzaW9uU3RvcmFnZUFyZWEobV9z
dG9yYWdlTmFtZXNwYWNlLT5zZXNzaW9uSUQoKSwgbV9zdG9yYWdlTmFtZXNwYWNlLT5zdG9yYWdl
TmFtZXNwYWNlSUQoKSwgbV9zZWN1cml0eU9yaWdpbi0+ZGF0YSgpKSwgTWVzc2FnZXM6OlN0b3Jh
Z2VNYW5hZ2VyU2V0OjpDb25uZWN0VG9TZXNzaW9uU3RvcmFnZUFyZWE6OlJlcGx5KG1fc3RvcmFn
ZU1hcElEKSwgMCk7CiAgICAgfQogCi0gICAgaWYgKG1fc3RvcmFnZU1hcCkKLSAgICAgICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29u
bmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VNYW5hZ2VyOjpTZXRJdGVtcyhtX3N0b3Jh
Z2VNYXBJRCwgbV9zdG9yYWdlTWFwLT5pdGVtcygpKSwgMCk7Ci0gICAgbV9pc0Rpc2Nvbm5lY3Rl
ZCA9IGZhbHNlOworICAgIGlmIChtX3N0b3JhZ2VNYXBJRCkKKyAgICAgICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkucmVnaXN0ZXJTdG9yYWdlQXJlYU1hcCgqdGhpcyk7CiB9CiAKIHZvaWQgU3Rv
cmFnZUFyZWFNYXA6OmRpc2Nvbm5lY3QoKQogewotICAgIG1faXNEaXNjb25uZWN0ZWQgPSB0cnVl
OwotICAgIGlmIChtX3N0b3JhZ2VUeXBlID09IFN0b3JhZ2VUeXBlOjpTZXNzaW9uICYmIG1fc3Rv
cmFnZU1hcCkgewotICAgICAgICBtX3BlbmRpbmdWYWx1ZUNoYW5nZXMuY2xlYXIoKTsKLSAgICAg
ICAgbV9oYXNQZW5kaW5nQ2xlYXIgPSBmYWxzZTsKLSAgICB9IGVsc2UKLSAgICAgICAgcmVzZXRW
YWx1ZXMoKTsKKyAgICBpZiAoIW1fc3RvcmFnZU1hcElEKQorICAgICAgICByZXR1cm47CisKKyAg
ICByZXNldFZhbHVlcygpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnVucmVnaXN0ZXJT
dG9yYWdlQXJlYU1hcCgqdGhpcyk7CisKKyAgICBpZiAoYXV0byBuZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24gPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5leGlzdGluZ05ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbigpKQorICAgICAgICBuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24o
KS5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdlclNldDo6RGlzY29ubmVjdEZyb21TdG9yYWdl
QXJlYShtX3N0b3JhZ2VNYXBJRCksIDApOworCisgICAgbV9zdG9yYWdlTWFwSUQgPSAwOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5oCmluZGV4IGZiOTFiYzkwNTQyNWZjODFjNmE0
ODM1Mjc0YWJjYzBjMTdkYTQ5YzYuLjQ0YWQwNmY5MWI1NWM3ZjQxZTZkMGYyODg3YzllYzE3ZDUy
YTc0MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0
b3JhZ2VBcmVhTWFwLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2Uv
U3RvcmFnZUFyZWFNYXAuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoQ291
bnRlZFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIFNlY3VyaXR5T3JpZ2luOwpAQCAtNDMsNyArNDQsNyBAQCBuYW1lc3BhY2UgV2ViS2l0
IHsKIGNsYXNzIFN0b3JhZ2VBcmVhSW1wbDsKIGNsYXNzIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOwog
Ci1jbGFzcyBTdG9yYWdlQXJlYU1hcCA6IHB1YmxpYyBSZWZDb3VudGVkPFN0b3JhZ2VBcmVhTWFw
PiwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CitjbGFzcyBTdG9yYWdlQXJlYU1hcCA6
IHB1YmxpYyBSZWZDb3VudGVkPFN0b3JhZ2VBcmVhTWFwPiwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VS
ZWNlaXZlciwgcHVibGljIENhbk1ha2VXZWFrUHRyPFN0b3JhZ2VBcmVhTWFwPiB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIFJlZjxTdG9yYWdlQXJlYU1hcD4gY3JlYXRlKFN0b3JhZ2VOYW1lc3BhY2VJ
bXBsKiwgUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmKTsKICAgICB+U3RvcmFnZUFyZWFN
YXAoKTsKQEAgLTU3LDcgKzU4LDYgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlSXRlbShXZWJD
b3JlOjpGcmFtZSogc291cmNlRnJhbWUsIFN0b3JhZ2VBcmVhSW1wbCogc291cmNlQXJlYSwgY29u
c3QgU3RyaW5nJiBrZXkpOwogICAgIHZvaWQgY2xlYXIoV2ViQ29yZTo6RnJhbWUqIHNvdXJjZUZy
YW1lLCBTdG9yYWdlQXJlYUltcGwqIHNvdXJjZUFyZWEpOwogICAgIGJvb2wgY29udGFpbnMoY29u
c3QgU3RyaW5nJiBrZXkpOwotICAgIGJvb2wgcHJld2FybSgpOwogCiAgICAgLy8gSVBDOjpNZXNz
YWdlUmVjZWl2ZXIKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwpAQCAtNzEsNyArNzEsNiBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIFN0b3JhZ2VBcmVhTWFwKFN0b3JhZ2VOYW1lc3BhY2VJbXBsKiwgUmVmPFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luPiYmKTsKIAotICAgIHZvaWQgZGlkR2V0VmFsdWVzKHVpbnQ2NF90
IHN0b3JhZ2VNYXBTZWVkKTsKICAgICB2b2lkIGRpZFNldEl0ZW0odWludDY0X3Qgc3RvcmFnZU1h
cFNlZWQsIGNvbnN0IFN0cmluZyYga2V5LCBib29sIHF1b3RhRXJyb3IpOwogICAgIHZvaWQgZGlk
UmVtb3ZlSXRlbSh1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCwgY29uc3QgU3RyaW5nJiBrZXkpOwog
ICAgIHZvaWQgZGlkQ2xlYXIodWludDY0X3Qgc3RvcmFnZU1hcFNlZWQpOwpAQCAtODgsMTIgKzg3
LDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaXNwYXRjaFNlc3Npb25TdG9yYWdlRXZlbnQodWlu
dDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmlu
ZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIGNvbnN0IFN0cmluZyYgdXJsU3Ry
aW5nKTsKICAgICB2b2lkIGRpc3BhdGNoTG9jYWxTdG9yYWdlRXZlbnQodWludDY0X3Qgc291cmNl
U3RvcmFnZUFyZWFJRCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUs
IGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKTsKIAotICAg
IFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gbV9zdG9yYWdlTmFtZXNwYWNlOworICAgIFN0b3Jh
Z2VOYW1lc3BhY2VJbXBsKiBtX3N0b3JhZ2VOYW1lc3BhY2U7CiAKICAgICB1aW50NjRfdCBtX3N0
b3JhZ2VNYXBJRDsKIAogICAgIFdlYkNvcmU6OlN0b3JhZ2VUeXBlIG1fc3RvcmFnZVR5cGU7Ci0g
ICAgdWludDY0X3QgbV9zdG9yYWdlTmFtZXNwYWNlSUQ7CiAgICAgdW5zaWduZWQgbV9xdW90YUlu
Qnl0ZXM7CiAgICAgUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiBtX3NlY3VyaXR5T3JpZ2lu
OwogCkBAIC0xMDEsMTEgKzk5LDcgQEAgcHJpdmF0ZToKIAogICAgIHVpbnQ2NF90IG1fY3VycmVu
dFNlZWQ7CiAgICAgYm9vbCBtX2hhc1BlbmRpbmdDbGVhcjsKLSAgICBib29sIG1faGFzUGVuZGlu
Z0dldFZhbHVlczsKICAgICBIYXNoQ291bnRlZFNldDxTdHJpbmc+IG1fcGVuZGluZ1ZhbHVlQ2hh
bmdlczsKLQotICAgIGJvb2wgbV9pc0Rpc2Nvbm5lY3RlZCB7IHRydWUgfTsKLSAgICBib29sIG1f
ZGlkUHJld2FybSB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFw
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFn
ZUFyZWFNYXAubWVzc2FnZXMuaW4KaW5kZXggYjE1OTA0ZjE2YmVjMTQyYjEwYjQ4MDBkMTA2NDUw
MDkzMzgzMDBkNS4uN2E3NWQyMTBmZDgzMjVmMmI1MWE4OWNlM2U1NDJkNDgwMzkwOTZhOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFN
YXAubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2Uv
U3RvcmFnZUFyZWFNYXAubWVzc2FnZXMuaW4KQEAgLTIxLDcgKzIxLDYgQEAKICMgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KIAogbWVzc2FnZXMgLT4gU3RvcmFnZUFyZWFNYXAgewotICAgIERpZEdldFZhbHVlcyh1aW50
NjRfdCBzdG9yYWdlTWFwU2VlZCkKICAgICBEaWRTZXRJdGVtKHVpbnQ2NF90IHN0b3JhZ2VNYXBT
ZWVkLCBTdHJpbmcga2V5LCBib29sIHF1b3RhRXhjZXB0aW9uKQogICAgIERpZFJlbW92ZUl0ZW0o
dWludDY0X3Qgc3RvcmFnZU1hcFNlZWQsIFN0cmluZyBrZXkpCiAgICAgRGlkQ2xlYXIodWludDY0
X3Qgc3RvcmFnZU1hcFNlZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKaW5kZXggZjU5Yzc5Yjdm
YTJiZTJmYzlhNzIwNTJjMWI5ZTUzY2I2YTMyM2ZkMC4uNzQyOTYxODkzMjg4NGVlMjU0Mjk4ZmIz
MzVjMGU4YzMyNDA5NzZlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcApAQCAtMjgsNiArMjgs
NyBAQAogCiAjaW5jbHVkZSAiU3RvcmFnZUFyZWFJbXBsLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFy
ZWFNYXAuaCIKKyNpbmNsdWRlICJTdG9yYWdlTWFuYWdlclNldE1lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiV2ViUGFnZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VHcm91cFByb3h5LmgiCiAjaW5jbHVkZSAi
V2ViUHJvY2Vzcy5oIgpAQCAtNDAsMzEgKzQxLDI3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1SZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3Jh
Z2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBp
ZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpCitSZWY8U3RvcmFnZU5hbWVzcGFjZUlt
cGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1
aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMsIFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9yYWdlTmFtZXNwYWNl
SW1wbChTdG9yYWdlVHlwZTo6U2Vzc2lvbiwgaWRlbnRpZmllciwgbnVsbHB0ciwgcXVvdGFJbkJ5
dGVzKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwoU3Rv
cmFnZVR5cGU6OlNlc3Npb24sIGlkZW50aWZpZXIsIG51bGxwdHIsIHF1b3RhSW5CeXRlcywgc2Vz
c2lvbklEKSk7CiB9CiAKLVJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFj
ZUltcGw6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVu
dGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpCitSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+
IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0
X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzLCBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZShpZGVudGlm
aWVyLCBxdW90YUluQnl0ZXMsIElzRXBoZW1lcmFsOjpZZXMpOworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0b3JhZ2VUeXBlOjpMb2NhbCwgaWRlbnRpZmll
ciwgbnVsbHB0ciwgcXVvdGFJbkJ5dGVzLCBzZXNzaW9uSUQpKTsKIH0KIAotUmVmPFN0b3JhZ2VO
YW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlTG9jYWxTdG9yYWdlTmFt
ZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcywgSXNFcGhl
bWVyYWwgaXNFcGhlbWVyYWwpCitSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1l
c3BhY2VJbXBsOjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3Qg
aWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHRvcExldmVsT3JpZ2luLCB1aW50
NjRfdCBxdW90YUluQnl0ZXMsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKLSAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChpc0VwaGVtZXJhbCA9PSBJc0Vw
aGVtZXJhbDo6WWVzID8gU3RvcmFnZVR5cGU6OkVwaGVtZXJhbExvY2FsIDogU3RvcmFnZVR5cGU6
OkxvY2FsLCBpZGVudGlmaWVyLCBudWxscHRyLCBxdW90YUluQnl0ZXMpKTsKKyAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChTdG9yYWdlVHlwZTo6VHJhbnNpZW50
TG9jYWwsIGlkZW50aWZpZXIsICZ0b3BMZXZlbE9yaWdpbiwgcXVvdGFJbkJ5dGVzLCBzZXNzaW9u
SUQpKTsKIH0KIAotUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1w
bDo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZp
ZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiB0b3BMZXZlbE9yaWdpbiwgdWludDY0X3QgcXVv
dGFJbkJ5dGVzKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0b3JhZ2VOYW1lc3BhY2VJ
bXBsKFN0b3JhZ2VUeXBlOjpUcmFuc2llbnRMb2NhbCwgaWRlbnRpZmllciwgJnRvcExldmVsT3Jp
Z2luLCBxdW90YUluQnl0ZXMpKTsKLX0KLQotU3RvcmFnZU5hbWVzcGFjZUltcGw6OlN0b3JhZ2VO
YW1lc3BhY2VJbXBsKFdlYkNvcmU6OlN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlLCB1aW50NjRfdCBz
dG9yYWdlTmFtZXNwYWNlSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiB0b3BMZXZlbE9yaWdp
biwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKQorU3RvcmFnZU5hbWVzcGFjZUltcGw6OlN0b3JhZ2VO
YW1lc3BhY2VJbXBsKFdlYkNvcmU6OlN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlLCB1aW50NjRfdCBz
dG9yYWdlTmFtZXNwYWNlSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiB0b3BMZXZlbE9yaWdp
biwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAg
OiBtX3N0b3JhZ2VUeXBlKHN0b3JhZ2VUeXBlKQogICAgICwgbV9zdG9yYWdlTmFtZXNwYWNlSUQo
c3RvcmFnZU5hbWVzcGFjZUlEKQogICAgICwgbV90b3BMZXZlbE9yaWdpbih0b3BMZXZlbE9yaWdp
bikKICAgICAsIG1fcXVvdGFJbkJ5dGVzKHF1b3RhSW5CeXRlcykKKyAgICAsIG1fc2Vzc2lvbklE
KHNlc3Npb25JRCkKIHsKIH0KIApAQCAtNzcsMTMgKzc0LDE0IEBAIHZvaWQgU3RvcmFnZU5hbWVz
cGFjZUltcGw6OmRpZERlc3Ryb3lTdG9yYWdlQXJlYU1hcChTdG9yYWdlQXJlYU1hcCYgbWFwKQog
ICAgIG1fc3RvcmFnZUFyZWFNYXBzLnJlbW92ZShtYXAuc2VjdXJpdHlPcmlnaW4oKS5kYXRhKCkp
OwogfQogCi1SZWY8U3RvcmFnZUFyZWE+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpzdG9yYWdlQXJl
YShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKQorUmVmPFN0b3JhZ2VB
cmVhPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6c3RvcmFnZUFyZWEoY29uc3QgU2VjdXJpdHlPcmln
aW5EYXRhJiBzZWN1cml0eU9yaWdpbkRhdGEpCiB7CiAgICAgUmVmUHRyPFN0b3JhZ2VBcmVhTWFw
PiBtYXA7CiAKLSAgICBhdXRvJiBzbG90ID0gbV9zdG9yYWdlQXJlYU1hcHMuYWRkKHNlY3VyaXR5
T3JpZ2luLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CisgICAgYXV0byBzZWN1cml0eU9yaWdp
biA9IHNlY3VyaXR5T3JpZ2luRGF0YS5zZWN1cml0eU9yaWdpbigpOworICAgIGF1dG8mIHNsb3Qg
PSBtX3N0b3JhZ2VBcmVhTWFwcy5hZGQoc2VjdXJpdHlPcmlnaW4tPmRhdGEoKSwgbnVsbHB0ciku
aXRlcmF0b3ItPnZhbHVlOwogICAgIGlmICghc2xvdCkgewotICAgICAgICBtYXAgPSBTdG9yYWdl
QXJlYU1hcDo6Y3JlYXRlKHRoaXMsIHNlY3VyaXR5T3JpZ2luLnNlY3VyaXR5T3JpZ2luKCkpOwor
ICAgICAgICBtYXAgPSBTdG9yYWdlQXJlYU1hcDo6Y3JlYXRlKHRoaXMsIFdURk1vdmUoc2VjdXJp
dHlPcmlnaW4pKTsKICAgICAgICAgc2xvdCA9IG1hcC5nZXQoKTsKICAgICB9IGVsc2UKICAgICAg
ICAgbWFwID0gc2xvdDsKQEAgLTk1LDEzICs5MywxNyBAQCBSZWY8U3RvcmFnZU5hbWVzcGFjZT4g
U3RvcmFnZU5hbWVzcGFjZUltcGw6OmNvcHkoUGFnZSogbmV3UGFnZSkKIHsKICAgICBBU1NFUlQo
bV9zdG9yYWdlTmFtZXNwYWNlSUQpOwogCi0gICAgaWYgKG1fc3RvcmFnZVR5cGUgPT0gU3RvcmFn
ZVR5cGU6OlNlc3Npb24pCi0gICAgICAgIHJldHVybiBjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVz
cGFjZShXZWJQYWdlOjpmcm9tQ29yZVBhZ2UobmV3UGFnZSktPnBhZ2VJRCgpLnRvVUludDY0KCks
IG1fcXVvdGFJbkJ5dGVzKTsKKyAgICBpZiAoYXV0byBuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24g
PSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5leGlzdGluZ05ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bigpKQorICAgICAgICBuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5k
KE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdlclNldDo6Q2xvbmVTZXNzaW9uU3RvcmFnZU5hbWVzcGFj
ZShuZXdQYWdlLT5zZXNzaW9uSUQoKSwgbV9zdG9yYWdlTmFtZXNwYWNlSUQsIFdlYlBhZ2U6OmZy
b21Db3JlUGFnZShuZXdQYWdlKS0+cGFnZUlEKCkudG9VSW50NjQoKSksIDApOwogCi0gICAgQVNT
RVJUKG1fc3RvcmFnZVR5cGUgPT0gU3RvcmFnZVR5cGU6OkVwaGVtZXJhbExvY2FsKTsKLSAgICBh
dXRvIG5ld05hbWVzcGFjZSA9IGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwobV9z
dG9yYWdlVHlwZSwgbV9zdG9yYWdlTmFtZXNwYWNlSUQsIG1fdG9wTGV2ZWxPcmlnaW4uZ2V0KCks
IG1fcXVvdGFJbkJ5dGVzKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVz
cGFjZUltcGwobV9zdG9yYWdlVHlwZSwgV2ViUGFnZTo6ZnJvbUNvcmVQYWdlKG5ld1BhZ2UpLT5w
YWdlSUQoKS50b1VJbnQ2NCgpLCBtX3RvcExldmVsT3JpZ2luLmdldCgpLCBtX3F1b3RhSW5CeXRl
cywgbmV3UGFnZS0+c2Vzc2lvbklEKCkpKTsKK30KIAotICAgIHJldHVybiBuZXdOYW1lc3BhY2U7
Cit2b2lkIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpzZXRTZXNzaW9uSURGb3JUZXN0aW5nKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCkKK3sKKyAgICBtX3Nlc3Npb25JRCA9IHNlc3Npb25JRDsKKyAg
ICBmb3IgKGF1dG8gc3RvcmFnZUFyZWFNYXAgOiBtX3N0b3JhZ2VBcmVhTWFwcy52YWx1ZXMoKSkK
KyAgICAgICAgc3RvcmFnZUFyZWFNYXAtPmRpc2Nvbm5lY3QoKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFn
ZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0
b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaAppbmRleCBlYTZkNTUxOGNkZmM5OWRjM2EwMWQ4
NTdlMzY2MzY1MGY5YjY2NmEyLi41ZWU4OWU3YTk5MDFlZGJhODg5NTM0NTY0NTJiNjI1ZmVlZDc2
YmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9y
YWdlTmFtZXNwYWNlSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmgKQEAgLTM5LDEyICszOSw5IEBAIGNsYXNzIFdlYlBh
Z2U7CiAKIGNsYXNzIFN0b3JhZ2VOYW1lc3BhY2VJbXBsIDogcHVibGljIFdlYkNvcmU6OlN0b3Jh
Z2VOYW1lc3BhY2UgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U3RvcmFnZU5hbWVzcGFjZUlt
cGw+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVu
c2lnbmVkIHF1b3RhSW5CeXRlcyk7Ci0gICAgc3RhdGljIFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1w
bD4gY3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZp
ZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcyk7Ci0KLSAgICBlbnVtIGNsYXNzIElzRXBoZW1lcmFs
IDogYm9vbCB7IE5vLCBZZXMgfTsKLSAgICBzdGF0aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBs
PiBjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgdW5zaWdu
ZWQgcXVvdGFJbkJ5dGVzLCBJc0VwaGVtZXJhbCBpc0VwaGVtZXJhbCk7Ci0gICAgc3RhdGljIFJl
ZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNw
YWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiB0b3BMZXZl
bE9yaWdpbiwgdWludDY0X3QgcXVvdGFJbkJ5dGVzKTsKKyAgICBzdGF0aWMgUmVmPFN0b3JhZ2VO
YW1lc3BhY2VJbXBsPiBjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVu
dGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMsIFBBTDo6U2Vzc2lvbklEKTsKKyAgICBzdGF0
aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2Uo
dWludDY0X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzLCBQQUw6OlNlc3Npb25J
RCk7CisgICAgc3RhdGljIFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRlVHJhbnNpZW50
TG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luJiB0b3BMZXZlbE9yaWdpbiwgdWludDY0X3QgcXVvdGFJbkJ5dGVzLCBQQUw6OlNl
c3Npb25JRCk7CiAKICAgICB2aXJ0dWFsIH5TdG9yYWdlTmFtZXNwYWNlSW1wbCgpOwogCkBAIC01
MiwxMSArNDksMTQgQEAgcHVibGljOgogICAgIHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCgp
IGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFnZU5hbWVzcGFjZUlEOyB9CiAgICAgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW4qIHRvcExldmVsT3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV90b3BMZXZlbE9y
aWdpbi5nZXQoKTsgfQogICAgIHVuc2lnbmVkIHF1b3RhSW5CeXRlcygpIGNvbnN0IHsgcmV0dXJu
IG1fcXVvdGFJbkJ5dGVzOyB9CisgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KIAogICAgIHZvaWQgZGlkRGVzdHJveVN0
b3JhZ2VBcmVhTWFwKFN0b3JhZ2VBcmVhTWFwJik7CiAKKyAgICB2b2lkIHNldFNlc3Npb25JREZv
clRlc3RpbmcoUEFMOjpTZXNzaW9uSUQpIG92ZXJyaWRlOworCiBwcml2YXRlOgotICAgIGV4cGxp
Y2l0IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFdlYkNvcmU6OlN0b3JhZ2VUeXBlLCB1aW50NjRfdCBz
dG9yYWdlTmFtZXNwYWNlSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiB0b3BMZXZlbE9yaWdp
biwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKKyAgICBleHBsaWNpdCBTdG9yYWdlTmFtZXNwYWNl
SW1wbChXZWJDb3JlOjpTdG9yYWdlVHlwZSwgdWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbiogdG9wTGV2ZWxPcmlnaW4sIHVuc2lnbmVkIHF1b3RhSW5C
eXRlcywgUEFMOjpTZXNzaW9uSUQpOwogCiAgICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VBcmVhPiBz
dG9yYWdlQXJlYShjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmKSBvdmVycmlkZTsK
ICAgICBSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY29weShXZWJDb3JlOjpQYWdlKikg
b3ZlcnJpZGU7CkBAIC02OSw3ICs2OSw5IEBAIHByaXZhdGU6CiAKICAgICBjb25zdCB1bnNpZ25l
ZCBtX3F1b3RhSW5CeXRlczsKIAotICAgIEhhc2hNYXA8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhLCBTdG9yYWdlQXJlYU1hcCo+IG1fc3RvcmFnZUFyZWFNYXBzOworICAgIFBBTDo6U2Vzc2lv
bklEIG1fc2Vzc2lvbklEOworCisgICAgSGFzaE1hcDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEsIFJlZlB0cjxTdG9yYWdlQXJlYU1hcD4+IG1fc3RvcmFnZUFyZWFNYXBzOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcApp
bmRleCA4OGE5M2M1ZDUwNDJhMTI2MzQxMWM2ODRiZWRiZDUwNmUzNGI1YTBlLi45ZTcyMTYzMWIz
YjRiZDcyZWMwMzNlNzliYWUwZDM3NTI1NGJhYzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3Bh
Y2VQcm92aWRlci5jcHAKQEAgLTY3LDIyICs2NywxNyBAQCBXZWJTdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXI6On5XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIoKQogCiBSZWY8V2ViQ29yZTo6U3Rv
cmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVTZXNzaW9u
U3RvcmFnZU5hbWVzcGFjZShQYWdlJiBwYWdlLCB1bnNpZ25lZCBxdW90YSkKIHsKLSAgICByZXR1
cm4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFdl
YlBhZ2U6OmZyb21Db3JlUGFnZSgmcGFnZSktPnBhZ2VJRCgpLnRvVUludDY0KCksIHF1b3RhKTsK
KyAgICByZXR1cm4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFt
ZXNwYWNlKFdlYlBhZ2U6OmZyb21Db3JlUGFnZSgmcGFnZSktPnBhZ2VJRCgpLnRvVUludDY0KCks
IHF1b3RhLCBwYWdlLnNlc3Npb25JRCgpKTsKIH0KIAotUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1l
c3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlRXBoZW1lcmFsTG9jYWxT
dG9yYWdlTmFtZXNwYWNlKFBhZ2UmIHBhZ2UsIHVuc2lnbmVkIHF1b3RhKQorUmVmPFdlYkNvcmU6
OlN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlTG9j
YWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkIHF1b3RhLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQpCiB7Ci0gICAgcmV0dXJuIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVFcGhlbWVyYWxM
b2NhbFN0b3JhZ2VOYW1lc3BhY2UoV2ViUGFnZTo6ZnJvbUNvcmVQYWdlKCZwYWdlKS0+cGFnZUlE
KCkudG9VSW50NjQoKSwgcXVvdGEpOworICAgIHJldHVybiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6
Y3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKG1faWRlbnRpZmllciwgcXVvdGEsIHNlc3Npb25J
RCk7CiB9CiAKLVJlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNw
YWNlUHJvdmlkZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSkK
K1JlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbiYgdG9wTGV2ZWxPcmlnaW4sIHVuc2lnbmVkIHF1b3RhLCBQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQpCiB7Ci0gICAgcmV0dXJuIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVMb2Nh
bFN0b3JhZ2VOYW1lc3BhY2UobV9pZGVudGlmaWVyLCBxdW90YSwgU3RvcmFnZU5hbWVzcGFjZUlt
cGw6OklzRXBoZW1lcmFsOjpObyk7Ci19Ci0KLVJlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNl
PiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFn
ZU5hbWVzcGFjZShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgdG9wTGV2ZWxPcmlnaW4sIHVuc2ln
bmVkIHF1b3RhKQotewotICAgIHJldHVybiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlVHJh
bnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKG1faWRlbnRpZmllciwgdG9wTGV2ZWxPcmlnaW4s
IHF1b3RhKTsKKyAgICByZXR1cm4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVRyYW5zaWVu
dExvY2FsU3RvcmFnZU5hbWVzcGFjZShtX2lkZW50aWZpZXIsIHRvcExldmVsT3JpZ2luLCBxdW90
YSwgc2Vzc2lvbklEKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaApp
bmRleCAzY2U2ZGI5ZjA2OGU4MDM4OTY4MTE0ZWY5OWFjMjVhY2UwNDExZjM0Li4yYWY5YmY2ZTMy
NWQ0MWU5N2IzNzEwOTJjNDE3NDVmMTZmOWY0NmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXIuaApAQCAtMzgsOSArMzgsOCBAQCBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYlN0
b3JhZ2VOYW1lc3BhY2VQcm92aWRlcih1aW50NjRfdCBpZGVudGlmaWVyKTsKIAogICAgIFJlZjxX
ZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShX
ZWJDb3JlOjpQYWdlJiwgdW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOwotICAgIFJlZjxXZWJDb3Jl
OjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2Uo
V2ViQ29yZTo6UGFnZSYsIHVuc2lnbmVkIHF1b3RhKSBvdmVycmlkZTsKLSAgICBSZWY8V2ViQ29y
ZTo6U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVk
IHF1b3RhKSBvdmVycmlkZTsKLSAgICBSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY3Jl
YXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
JiwgdW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOworICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlTmFt
ZXNwYWNlPiBjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEsIFBBTDo6
U2Vzc2lvbklEKSBvdmVycmlkZTsKKwlSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY3Jl
YXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
JiwgdW5zaWduZWQgcXVvdGEsIFBBTDo6U2Vzc2lvbklEKSBvdmVycmlkZTsKIAogICAgIGNvbnN0
IHVpbnQ2NF90IG1faWRlbnRpZmllcjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3Rv
cmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwCmluZGV4IDdkYTVjNzJlNThlZjczZDE5NmQxNjczMDc3
NWEzN2JhYTU0NzRjYWQuLjQyY2M0ZGJkMDM5ZWM3MzU5MmM0NzYwZmNhZTFiYjhkNjgzZGM5OTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuY3Bw
CkBAIC0yOTIsNCArMjkyLDIyIEBAIHZvaWQgU3RvcmFnZUFyZWFJbXBsOjpkaXNwYXRjaFN0b3Jh
Z2VFdmVudChjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWCiAgICAgICAgIFN0
b3JhZ2VFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoU2Vzc2lvblN0b3JhZ2VFdmVudHMoa2V5LCBv
bGRWYWx1ZSwgbmV3VmFsdWUsIG1fc2VjdXJpdHlPcmlnaW4sIHNvdXJjZUZyYW1lKTsKIH0KIAor
dm9pZCBTdG9yYWdlQXJlYUltcGw6OnNlc3Npb25DaGFuZ2VkKGJvb2wgaXNOZXdTZXNzaW9uUGVy
c2lzdGVudCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgdW5zaWduZWQg
cXVvdGEgPSBtX3N0b3JhZ2VNYXAtPnF1b3RhKCk7CisgICAgbV9zdG9yYWdlTWFwID0gU3RvcmFn
ZU1hcDo6Y3JlYXRlKHF1b3RhKTsKKworICAgIGlmIChpc05ld1Nlc3Npb25QZXJzaXN0ZW50ICYm
ICFtX3N0b3JhZ2VBcmVhU3luYyAmJiBtX3N0b3JhZ2VTeW5jTWFuYWdlcikgeworICAgICAgICBt
X3N0b3JhZ2VBcmVhU3luYyA9IFN0b3JhZ2VBcmVhU3luYzo6Y3JlYXRlKG1fc3RvcmFnZVN5bmNN
YW5hZ2VyLmdldCgpLCAqdGhpcywgbV9zZWN1cml0eU9yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIo
KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIWlzTmV3U2Vzc2lvblBlcnNp
c3RlbnQgJiYgbV9zdG9yYWdlQXJlYVN5bmMpIHsKKyAgICAgICAgbV9zdG9yYWdlQXJlYVN5bmMt
PnNjaGVkdWxlRmluYWxTeW5jKCk7CisgICAgICAgIG1fc3RvcmFnZUFyZWFTeW5jID0gbnVsbHB0
cjsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuaCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuaAppbmRleCA1OGZjYmEwMzUwMDRiYTYzY2M4
ODhhOGRiMjkxMDAxOWJjOGU3ZDkxLi5iMjBiZWY5NTMzN2Q4NDRkYjNjMjNmODAxZDBkYjkzNjU0
NTBlMjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFy
ZWFJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VBcmVhSW1w
bC5oCkBAIC02MSw4ICs2MSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlY3JlbWVudEFjY2Vzc0Nv
dW50KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbG9zZURhdGFiYXNlSWZJZGxlKCkgb3ZlcnJpZGU7
CiAKLSAgICBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2lu
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zZWN1cml0eU9yaWdpbjsgfQotCiAgICAgUmVm
PFN0b3JhZ2VBcmVhSW1wbD4gY29weSgpOwogICAgIHZvaWQgY2xvc2UoKTsKIApAQCAtNzQsNiAr
NzIsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHN5bmMoKTsKIAorICAgIHZvaWQgc2Vzc2lvbkNo
YW5nZWQoYm9vbCBpc05ld1Nlc3Npb25QZXJzaXN0ZW50KTsKKwogcHJpdmF0ZToKICAgICBTdG9y
YWdlQXJlYUltcGwoV2ViQ29yZTo6U3RvcmFnZVR5cGUsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYsIFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlU3luY01hbmFnZXI+JiYsIHVuc2ln
bmVkIHF1b3RhKTsKICAgICBleHBsaWNpdCBTdG9yYWdlQXJlYUltcGwoY29uc3QgU3RvcmFnZUFy
ZWFJbXBsJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFn
ZUFyZWFTeW5jLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5j
LmgKaW5kZXggYzAwODc1M2YzNDQ5ZGEzNGM1NjNkY2IxNjVhNDI1NDYzNzAwN2EyNy4uMTA5Yzdj
ZjM0NmMzNWZkMGNkMDE3ODZiYjQ5MGRlMDhiZDMwOTZmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5oCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvU3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuaApAQCAtMzksNyArMzksNyBAQCBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogY2xhc3MgU3RvcmFnZUFyZWFJbXBsOwogCi1jbGFzcyBTdG9yYWdlQXJl
YVN5bmMgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U3RvcmFnZUFyZWFTeW5jPiB7Citj
bGFzcyBTdG9yYWdlQXJlYVN5bmMgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U3RvcmFn
ZUFyZWFTeW5jLCBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpNYWluPiB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIFJlZjxTdG9yYWdlQXJlYVN5bmM+IGNyZWF0ZShSZWZQdHI8V2ViQ29yZTo6U3RvcmFn
ZVN5bmNNYW5hZ2VyPiYmLCBSZWY8U3RvcmFnZUFyZWFJbXBsPiYmLCBjb25zdCBTdHJpbmcmIGRh
dGFiYXNlSWRlbnRpZmllcik7CiAgICAgflN0b3JhZ2VBcmVhU3luYygpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKaW5kZXgg
NGE5NGExZDg1Y2VjYTFlM2M2M2JjNzJhODZhYjA2YWYwZTE4NmQ1ZC4uNzM3ZjVjMDk3MjFkMmJi
ZGJjODY1NzYxYzlkMTE4YzgxZGY2MTM0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCkBAIC00NSwxNyArNDUsMTIgQEAg
c3RhdGljIEhhc2hNYXA8U3RyaW5nLCBTdG9yYWdlTmFtZXNwYWNlSW1wbCo+JiBsb2NhbFN0b3Jh
Z2VOYW1lc3BhY2VNYXAoKQogICAgIHJldHVybiBsb2NhbFN0b3JhZ2VOYW1lc3BhY2VNYXA7CiB9
CiAKLVJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0
ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkIHF1b3RhKQorUmVmPFN0b3JhZ2VOYW1l
c3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1l
c3BhY2UodW5zaWduZWQgcXVvdGEsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChTdG9yYWdlVHlwZTo6U2Vz
c2lvbiwgU3RyaW5nKCksIHF1b3RhKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmFn
ZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5cGU6OlNlc3Npb24sIFN0cmluZygpLCBxdW90YSwgc2Vz
c2lvbklEKSk7CiB9CiAKLVJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFj
ZUltcGw6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90
YSkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChTdG9y
YWdlVHlwZTo6RXBoZW1lcmFsTG9jYWwsIFN0cmluZygpLCBxdW90YSkpOwotfQotCi1SZWY8U3Rv
cmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpnZXRPckNyZWF0ZUxvY2Fs
U3RvcmFnZU5hbWVzcGFjZShjb25zdCBTdHJpbmcmIGRhdGFiYXNlUGF0aCwgdW5zaWduZWQgcXVv
dGEpCitSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpnZXRP
ckNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZShjb25zdCBTdHJpbmcmIGRhdGFiYXNlUGF0aCwg
dW5zaWduZWQgcXVvdGEsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICBBU1NFUlQo
IWRhdGFiYXNlUGF0aC5pc051bGwoKSk7CiAKQEAgLTYzLDE4ICs1OCwxOSBAQCBSZWY8U3RvcmFn
ZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpnZXRPckNyZWF0ZUxvY2FsU3Rv
cmFnZU5hbWVzcGFjZQogICAgIGlmIChzbG90KQogICAgICAgICByZXR1cm4gKnNsb3Q7CiAKLSAg
ICBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IHN0b3JhZ2VOYW1lc3BhY2UgPSBhZG9wdFJlZigq
bmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0b3JhZ2VUeXBlOjpMb2NhbCwgZGF0YWJhc2VQYXRo
LCBxdW90YSkpOworICAgIFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gc3RvcmFnZU5hbWVzcGFj
ZSA9IGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5cGU6OkxvY2Fs
LCBkYXRhYmFzZVBhdGgsIHF1b3RhLCBzZXNzaW9uSUQpKTsKICAgICBzbG90ID0gc3RvcmFnZU5h
bWVzcGFjZS5wdHIoKTsKIAogICAgIHJldHVybiBzdG9yYWdlTmFtZXNwYWNlOwogfQogCi1TdG9y
YWdlTmFtZXNwYWNlSW1wbDo6U3RvcmFnZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5cGUgc3RvcmFn
ZVR5cGUsIGNvbnN0IFN0cmluZyYgcGF0aCwgdW5zaWduZWQgcXVvdGEpCitTdG9yYWdlTmFtZXNw
YWNlSW1wbDo6U3RvcmFnZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5cGUgc3RvcmFnZVR5cGUsIGNv
bnN0IFN0cmluZyYgcGF0aCwgdW5zaWduZWQgcXVvdGEsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCkKICAgICA6IG1fc3RvcmFnZVR5cGUoc3RvcmFnZVR5cGUpCiAgICAgLCBtX3BhdGgocGF0aC5p
c29sYXRlZENvcHkoKSkKICAgICAsIG1fc3luY01hbmFnZXIoMCkKICAgICAsIG1fcXVvdGEocXVv
dGEpCiAgICAgLCBtX2lzU2h1dGRvd24oZmFsc2UpCisgICAgLCBtX3Nlc3Npb25JRChzZXNzaW9u
SUQpCiB7CiAgICAgaWYgKGlzUGVyc2lzdGVudExvY2FsU3RvcmFnZShtX3N0b3JhZ2VUeXBlKSAm
JiAhbV9wYXRoLmlzRW1wdHkoKSkKICAgICAgICAgbV9zeW5jTWFuYWdlciA9IFN0b3JhZ2VTeW5j
TWFuYWdlcjo6Y3JlYXRlKG1fcGF0aCk7CkBAIC05Nyw5ICs5Myw5IEBAIFJlZjxTdG9yYWdlTmFt
ZXNwYWNlPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y29weShQYWdlKikKIHsKICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVCghbV9pc1NodXRkb3duKTsKLSAgICBBU1NFUlQo
bV9zdG9yYWdlVHlwZSA9PSBTdG9yYWdlVHlwZTo6U2Vzc2lvbiB8fCBtX3N0b3JhZ2VUeXBlID09
IFN0b3JhZ2VUeXBlOjpFcGhlbWVyYWxMb2NhbCk7CisgICAgQVNTRVJUKG1fc3RvcmFnZVR5cGUg
PT0gU3RvcmFnZVR5cGU6OlNlc3Npb24pOwogCi0gICAgYXV0byBuZXdOYW1lc3BhY2UgPSBhZG9w
dFJlZigqbmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKG1fc3RvcmFnZVR5cGUsIG1fcGF0aCwgbV9x
dW90YSkpOworICAgIGF1dG8gbmV3TmFtZXNwYWNlID0gYWRvcHRSZWYoKm5ldyBTdG9yYWdlTmFt
ZXNwYWNlSW1wbChtX3N0b3JhZ2VUeXBlLCBtX3BhdGgsIG1fcXVvdGEsIG1fc2Vzc2lvbklEKSk7
CiAgICAgZm9yIChhdXRvJiBpdGVyIDogbV9zdG9yYWdlQXJlYU1hcCkKICAgICAgICAgbmV3TmFt
ZXNwYWNlLT5tX3N0b3JhZ2VBcmVhTWFwLnNldChpdGVyLmtleSwgaXRlci52YWx1ZS0+Y29weSgp
KTsKIApAQCAtMTI3LDcgKzEyMyw3IEBAIHZvaWQgU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNsb3Nl
KCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gSWYgd2UncmUgbm90IGEgcGVyc2lzdGVudCBz
dG9yYWdlLCB3ZSBzaG91bGRuJ3QgbmVlZCB0byBkbyBhbnkgd29yayBoZXJlLgotICAgIGlmICht
X3N0b3JhZ2VUeXBlID09IFN0b3JhZ2VUeXBlOjpTZXNzaW9uIHx8IG1fc3RvcmFnZVR5cGUgPT0g
U3RvcmFnZVR5cGU6OkVwaGVtZXJhbExvY2FsKSB7CisgICAgaWYgKG1fc3RvcmFnZVR5cGUgPT0g
U3RvcmFnZVR5cGU6OlNlc3Npb24pIHsKICAgICAgICAgQVNTRVJUKCFtX3N5bmNNYW5hZ2VyKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE3Niw0ICsxNzIsMTEgQEAgdm9pZCBTdG9yYWdl
TmFtZXNwYWNlSW1wbDo6Y2xvc2VJZGxlTG9jYWxTdG9yYWdlRGF0YWJhc2VzKCkKICAgICAgICAg
aXQtPnZhbHVlLT5jbG9zZURhdGFiYXNlSWZJZGxlKCk7CiB9CiAKK3ZvaWQgU3RvcmFnZU5hbWVz
cGFjZUltcGw6OnNldFNlc3Npb25JREZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
KQoreworICAgIG1fc2Vzc2lvbklEID0gc2Vzc2lvbklEOworICAgIGZvciAoYXV0byBzdG9yYWdl
QXJlYU1hcCA6IG1fc3RvcmFnZUFyZWFNYXAudmFsdWVzKCkpCisgICAgICAgIHN0b3JhZ2VBcmVh
TWFwLT5zZXNzaW9uQ2hhbmdlZCghc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpOworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3Jh
Z2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9T
dG9yYWdlTmFtZXNwYWNlSW1wbC5oCmluZGV4IGM4OGYwNjFlZjVlNTBjOWIxNjM1ZWMzZjhkNmJh
MGVkNzcwNWNhYTcuLjEyMDMyNTJkODQ2OWQ4YjMwZWEwNDAwNzVkOTZmNzE1N2ZmZWVjZjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1w
bC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1w
bC5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRh
dGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1N0b3JhZ2VBcmVhLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9TdG9yYWdlTmFtZXNwYWNlLmg+CisjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtMzgsOSArMzksOCBAQCBjbGFzcyBTdG9yYWdlQXJlYUlt
cGw7CiAKIGNsYXNzIFN0b3JhZ2VOYW1lc3BhY2VJbXBsIDogcHVibGljIFdlYkNvcmU6OlN0b3Jh
Z2VOYW1lc3BhY2UgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U3RvcmFnZU5hbWVzcGFjZUlt
cGw+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkIHF1b3RhKTsKLSAgICBz
dGF0aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEpOwotICAgIHN0YXRpYyBSZWY8U3RvcmFnZU5hbWVz
cGFjZUltcGw+IGdldE9yQ3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKGNvbnN0IFN0cmluZyYg
ZGF0YWJhc2VQYXRoLCB1bnNpZ25lZCBxdW90YSk7CisgICAgc3RhdGljIFJlZjxTdG9yYWdlTmFt
ZXNwYWNlSW1wbD4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEs
IFBBTDo6U2Vzc2lvbklEKTsKKyAgICBzdGF0aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBn
ZXRPckNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZShjb25zdCBTdHJpbmcmIGRhdGFiYXNlUGF0
aCwgdW5zaWduZWQgcXVvdGEsIFBBTDo6U2Vzc2lvbklEKTsKICAgICB2aXJ0dWFsIH5TdG9yYWdl
TmFtZXNwYWNlSW1wbCgpOwogCiAgICAgdm9pZCBjbG9zZSgpOwpAQCAtNTQsOCArNTQsMTEgQEAg
cHVibGljOgogICAgIHZvaWQgc3luYygpOwogICAgIHZvaWQgY2xvc2VJZGxlTG9jYWxTdG9yYWdl
RGF0YWJhc2VzKCk7CiAKKyAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX3Nlc3Npb25JRDsgfQorICAgIHZvaWQgc2V0U2Vzc2lvbklERm9yVGVz
dGluZyhQQUw6OlNlc3Npb25JRCkgb3ZlcnJpZGU7CisKIHByaXZhdGU6Ci0gICAgU3RvcmFnZU5h
bWVzcGFjZUltcGwoV2ViQ29yZTo6U3RvcmFnZVR5cGUsIGNvbnN0IFN0cmluZyYgcGF0aCwgdW5z
aWduZWQgcXVvdGEpOworICAgIFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFdlYkNvcmU6OlN0b3JhZ2VU
eXBlLCBjb25zdCBTdHJpbmcmIHBhdGgsIHVuc2lnbmVkIHF1b3RhLCBQQUw6OlNlc3Npb25JRCk7
CiAKICAgICBSZWY8V2ViQ29yZTo6U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhKGNvbnN0IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYpIG92ZXJyaWRlOwogICAgIFJlZjxTdG9yYWdlTmFtZXNw
YWNlPiBjb3B5KFdlYkNvcmU6OlBhZ2UqIG5ld1BhZ2UpIG92ZXJyaWRlOwpAQCAtNzMsNiArNzYs
OCBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fcXVvdGE7CiAKICAgICBib29sIG1faXNTaHV0
ZG93bjsKKworICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1dl
YlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3Jh
Z2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcAppbmRleCA4MzYyMDU3ZmZkNzRmNmQy
ZGExYWE0N2Q3NzgwMDQ5MWM5ZGExMWRjLi5kMDk0NjkxMjVmYzJmNDg2NjU4YTczYTZiOTUwYjI0
MzRiMDcwNzllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvV2ViU3Rv
cmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3Jh
Z2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2lu
Y2x1ZGUgIldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oIgogCiAjaW5jbHVkZSAiU3RvcmFn
ZU5hbWVzcGFjZUltcGwuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC05Niwy
NiArOTcsMjEgQEAgdm9pZCBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OnN5bmNMb2NhbFN0
b3JhZ2UoKQogICAgIH0KIH0KIAotUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1l
c3BhY2VQcm92aWRlcjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoUGFnZSYsIHVuc2ln
bmVkIHF1b3RhKQorUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92
aWRlcjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoUGFnZSYgcGFnZSwgdW5zaWduZWQg
cXVvdGEpCiB7Ci0gICAgcmV0dXJuIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVTZXNzaW9u
U3RvcmFnZU5hbWVzcGFjZShxdW90YSk7CisgICAgcmV0dXJuIFN0b3JhZ2VOYW1lc3BhY2VJbXBs
OjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShxdW90YSwgcGFnZS5zZXNzaW9uSUQoKSk7
CiB9CiAKLVJlZjxTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6
OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQgcXVv
dGEpCitSZWY8U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpj
cmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEsIFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCkKIHsKLSAgICByZXR1cm4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZUVw
aGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShxdW90YSk7CisgICAgcmV0dXJuIFN0b3JhZ2VO
YW1lc3BhY2VJbXBsOjpnZXRPckNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZShtX2xvY2FsU3Rv
cmFnZURhdGFiYXNlUGF0aCwgcXVvdGEsIHNlc3Npb25JRCk7CiB9CiAKLVJlZjxTdG9yYWdlTmFt
ZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU5h
bWVzcGFjZSh1bnNpZ25lZCBxdW90YSkKLXsKLSAgICByZXR1cm4gU3RvcmFnZU5hbWVzcGFjZUlt
cGw6OmdldE9yQ3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKG1fbG9jYWxTdG9yYWdlRGF0YWJh
c2VQYXRoLCBxdW90YSk7Ci19Ci0KLVJlZjxTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFt
ZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShTZWN1
cml0eU9yaWdpbiYsIHVuc2lnbmVkIHF1b3RhKQorUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0
b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNw
YWNlKFNlY3VyaXR5T3JpZ2luJiwgdW5zaWduZWQgcXVvdGEsIFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCkKIHsKICAgICAvLyBGSVhNRTogQSBzbWFydGVyIGltcGxlbWVudGF0aW9uIHdvdWxkIGNy
ZWF0ZSBhIHNwZWNpYWwgbmFtZXNwYWNlIHR5cGUgaW5zdGVhZCBvZiBqdXN0IHBpZ2d5LWJhY2tp
bmcgb2ZmCiAgICAgLy8gU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UgaGVyZS4KLSAgICByZXR1cm4g
U3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHF1b3Rh
KTsKKyAgICByZXR1cm4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVNlc3Npb25TdG9yYWdl
TmFtZXNwYWNlKHF1b3RhLCBzZXNzaW9uSUQpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L1N0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmggYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmgKaW5k
ZXggZTU4OWZlZTdhNWM2YzkxY2Y5NGI3ZDIzYjQ4NjE0ODE3OWI4Y2ZmNi4uNmRiYzVjOTA5YmZi
NzllMWEzNWIwOGI0ODk1MzlhMGYzZjcwYTcxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9TdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaApAQCAtNTAs
OSArNTAsOCBAQCBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92
aWRlcihjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCk7CiAKICAgICBSZWY8
V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2Uo
V2ViQ29yZTo6UGFnZSYsIHVuc2lnbmVkIHF1b3RhKSBvdmVycmlkZTsKLSAgICBSZWY8V2ViQ29y
ZTo6U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNl
KFdlYkNvcmU6OlBhZ2UmLCB1bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7Ci0gICAgUmVmPFdlYkNv
cmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25l
ZCBxdW90YSkgb3ZlcnJpZGU7Ci0gICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNy
ZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpTZWN1cml0eU9yaWdp
biYsIHVuc2lnbmVkIHF1b3RhKSBvdmVycmlkZTsKKyAgICBSZWY8V2ViQ29yZTo6U3RvcmFnZU5h
bWVzcGFjZT4gY3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkIHF1b3RhLCBQQUw6
OlNlc3Npb25JRCkgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+
IGNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbiYsIHVuc2lnbmVkIHF1b3RhLCBQQUw6OlNlc3Npb25JRCkgb3ZlcnJpZGU7CiAKICAgICBj
b25zdCBTdHJpbmcgbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGg7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IGJjY2M2NGIwN2EzZDA1ZjliZTg0
NWZkMTZhOGE0ZTE1OGI1NjQ3NWQuLjk1NTVkNDZlYTc1YjdkODVmOWNmNDdmOWM2NGViMjU3NDQw
MDY5NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmll
dy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAg
LTI4OTMsNiArMjg5Myw3IEBAIC0gKHZvaWQpX3ByZWZlcmVuY2VzQ2hhbmdlZDooV2ViUHJlZmVy
ZW5jZXMgKilwcmVmZXJlbmNlcwogICAgIHNldHRpbmdzLnNldExvY2FsU3RvcmFnZUVuYWJsZWQo
W3ByZWZlcmVuY2VzIGxvY2FsU3RvcmFnZUVuYWJsZWRdKTsKIAogICAgIF9wcml2YXRlLT5wYWdl
LT5lbmFibGVMZWdhY3lQcml2YXRlQnJvd3NpbmcoW3ByZWZlcmVuY2VzIHByaXZhdGVCcm93c2lu
Z0VuYWJsZWRdKTsKKyAgICBfcHJpdmF0ZS0+Z3JvdXAtPnN0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
cigpLmVuYWJsZUxlZ2FjeVByaXZhdGVCcm93c2luZ0ZvclRlc3RpbmcoW3ByZWZlcmVuY2VzIHBy
aXZhdGVCcm93c2luZ0VuYWJsZWRdKTsKICAgICBzZXR0aW5ncy5zZXRTYW5zU2VyaWZGb250RmFt
aWx5KFtwcmVmZXJlbmNlcyBzYW5zU2VyaWZGb250RmFtaWx5XSk7CiAgICAgc2V0dGluZ3Muc2V0
U2VyaWZGb250RmFtaWx5KFtwcmVmZXJlbmNlcyBzZXJpZkZvbnRGYW1pbHldKTsKICAgICBzZXR0
aW5ncy5zZXRTdGFuZGFyZEZvbnRGYW1pbHkoW3ByZWZlcmVuY2VzIHN0YW5kYXJkRm9udEZhbWls
eV0pOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IGUxMTgxZTM4NjVkZjZjYWRkZDViNDAyMWQ4NzA0Yjk3NDZhNGYxNzYuLjlmMTU0NDM4MmUwNGIz
NGExZDc0M2RkMGI4NDVkNTFlZWZiYjFhY2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAxOS0wOC0xNCAgU2lodWkg
TGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBTb21lIGltcHJvdmVtZW50cyBv
biB3ZWIgc3RvcmFnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjAwMzczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0xvY2FsU3RvcmFnZVBlcnNp
c3RlbmNlLm1tOgorICAgICAgICAoVEVTVCk6IHVwZGF0ZSBleHBlY3RhdGlvbiBmb3IgYmVoYXZp
b3IgY2hhbmdlLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9C
aW5kaW5ncy9UZXN0UnVubmVyLmlkbDogbmV3IFNQSSB0byBzeW5jaHJvbm91c2x5IGZsdXNoIGxv
Y2FsU3RvcmFnZSB0byAKKyAgICAgICAgZGF0YWJhc2UgZmlsZS4KKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoV1RSOjpU
ZXN0UnVubmVyOjpzeW5jTG9jYWxTdG9yYWdlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaDoKKworICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvVGVzdENvbnRyb2xsZXIuY3BwOiBjbGVhciBsb2NhbCBzdG9yYWdlIGJldHdlZW4gdGVzdCBy
dW5zIHRvIG1ha2UgZWFjaCB0ZXN0IGlzb2xhdGVkLgorICAgICAgICAoV1RSOjpUZXN0Q29udHJv
bGxlcjo6cmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcyk6CisgICAgICAgIChXVFI6OlN0b3Jh
Z2VWb2lkQ2FsbGJhY2tDb250ZXh0OjpTdG9yYWdlVm9pZENhbGxiYWNrQ29udGV4dCk6CisgICAg
ICAgIChXVFI6OlN0b3JhZ2VWb2lkQ2FsbGJhY2spOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJv
bGxlcjo6Y2xlYXJJbmRleGVkRGF0YWJhc2VzKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xs
ZXI6OmNsZWFyTG9jYWxTdG9yYWdlKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnN5
bmNMb2NhbFN0b3JhZ2UpOgorICAgICAgICAoV1RSOjpSZW1vdmVBbGxJbmRleGVkRGF0YWJhc2Vz
Q2FsbGJhY2tDb250ZXh0OjpSZW1vdmVBbGxJbmRleGVkRGF0YWJhc2VzQ2FsbGJhY2tDb250ZXh0
KTogRGVsZXRlZC4gUmVwbGFjZWQKKyAgICAgICAgd2l0aCBTdG9yYWdlVm9pZENhbGxiYWNrQ29u
dGV4dCBmb3IgZ2VuZXJhbCB1c2FnZS4KKyAgICAgICAgKFdUUjo6UmVtb3ZlQWxsSW5kZXhlZERh
dGFiYXNlc0NhbGxiYWNrKTogRGVsZXRlZC4gUmVwbGFjZWQgd2l0aCBTdG9yYWdlVm9pZENhbGxi
YWNrLgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Q2xlYXJJbmRleGVkRGF0YWJhc2Vz
KTogRGVsZXRlZC4gVXNlIGxvd2VyY2FzZSBmb3IgY29uc2lzdGVudCBzdHlsZS4KKworICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRp
b246OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOiBhZGQg
aGFuZGxlciBmb3IgbmV3IG1lc3NhZ2UgCisgICAgICAgIFN5bmNMb2NhbFN0b3JhZ2UuCisKIDIw
MTktMDgtMTIgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBB
ZGRzIFdlYkF1dGhuIGFuZCBBcHBTU08gaW50byB3YXRjaGxpc3QKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTG9jYWxTdG9yYWdlUGVyc2lzdGVuY2Uu
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0xvY2FsU3RvcmFnZVBl
cnNpc3RlbmNlLm1tCmluZGV4IDExNTYyYmI1NjkzNGY1NGQ2M2Y5NzdhN2JkZTA5ZDk0MzU0OWFi
MjcuLjU5MmJjMjlkMTE2NjczMWFhZjBkZjVlZjUyN2ZmYjc5OTdhNjQ5ZGMgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTG9jYWxTdG9yYWdlUGVyc2lz
dGVuY2UubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Mb2Nh
bFN0b3JhZ2VQZXJzaXN0ZW5jZS5tbQpAQCAtMTA0LDkgKzEwNCwxMCBAQCBURVNUKFdLV2ViVmll
dywgTG9jYWxTdG9yYWdlUHJvY2Vzc0NyYXNoZXMpCiAgICAgfV07CiAgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZyZWFkeVRvQ29udGludWUpOwogCisgICAgLy8gSWYgbmV0d29yayBwcm9j
ZXNzIGNyYXNoZXMsIHNlc3Npb25TdG9yYWdlIHdvdWxkIGJlIGxvc3QuCiAgICAgcmVhZHlUb0Nv
bnRpbnVlID0gZmFsc2U7CiAgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAid2luZG93
LnNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ3Nlc3Npb24nKSIgY29tcGxldGlvbkhhbmRsZXI6Xihp
ZCByZXN1bHQsIE5TRXJyb3IgKikgewotICAgICAgICBFWFBFQ1RfVFJVRShbQCJzdG9yYWdlIiBp
c0VxdWFsVG9TdHJpbmc6cmVzdWx0XSk7CisgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNF
cXVhbDpOU051bGwubnVsbF0pOwogICAgICAgICByZWFkeVRvQ29udGludWUgPSB0cnVlOwogICAg
IH1dOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVhZHlUb0NvbnRpbnVlKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3Mv
VGVzdFJ1bm5lci5pZGwgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0Jp
bmRpbmdzL1Rlc3RSdW5uZXIuaWRsCmluZGV4IDBhZWI5M2UxOTEwNzM3ZTcwMDIzZDE5NjljZWQy
Nzg5ZDI2ZDk4MjUuLjk3MzBhNjg2YTQ3ZGEwMjBjYjYxZWJlYjM4ZGViOWM3MmY5ZTE4NjAgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3Mv
VGVzdFJ1bm5lci5pZGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbApAQCAtMTQyLDYgKzE0Miw3IEBAIGludGVyZmFjZSBU
ZXN0UnVubmVyIHsKICAgICB2b2lkIGNsZWFyQWxsRGF0YWJhc2VzKCk7CiAgICAgdm9pZCBzZXRE
YXRhYmFzZVF1b3RhKHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90YSk7CiAgICAgRE9NU3RyaW5nIHBh
dGhUb0xvY2FsUmVzb3VyY2UoRE9NU3RyaW5nIHVybCk7CisgICAgdm9pZCBzeW5jTG9jYWxTdG9y
YWdlKCk7CiAKICAgICBhdHRyaWJ1dGUgZG91YmxlIGRhdGFiYXNlRGVmYXVsdFF1b3RhOwogICAg
IGF0dHJpYnV0ZSBkb3VibGUgZGF0YWJhc2VNYXhRdW90YTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCmluZGV4IDU5ZjI1YzFi
YmFjNmVkODllOTRjZmE4OGE5YWZmYzAzZmI3MjRhMTguLmZlZjZkODEwMTk2ODJhMTIwNTIzYWU0
YjE1ZWNhMTYwMWMyNjI1NDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcApAQCAtMzQyLDYgKzM0MiwxMyBAQCB2b2lkIFRl
c3RSdW5uZXI6OnNldERhdGFiYXNlUXVvdGEodWludDY0X3QgcXVvdGEpCiAgICAgcmV0dXJuIFdL
QnVuZGxlU2V0RGF0YWJhc2VRdW90YShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxl
KCksIHF1b3RhKTsKIH0KIAordm9pZCBUZXN0UnVubmVyOjpzeW5jTG9jYWxTdG9yYWdlKCkKK3sK
KyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTeW5jTG9jYWxTdG9yYWdlIikpOworICAgIFdLUmV0
YWluUHRyPFdLQm9vbGVhblJlZj4gbWVzc2FnZUJvZHkgPSBhZG9wdFdLKFdLQm9vbGVhbkNyZWF0
ZSh0cnVlKSk7CisgICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVu
ZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5
LmdldCgpLCBudWxscHRyKTsKK30KKwogdm9pZCBUZXN0UnVubmVyOjpjbGVhckFsbEFwcGxpY2F0
aW9uQ2FjaGVzKCkKIHsKICAgICBXS0J1bmRsZVBhZ2VDbGVhckFwcGxpY2F0aW9uQ2FjaGUoSW5q
ZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLnBhZ2UoKS0+cGFnZSgpKTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKaW5kZXggN2U4NTg4
ZWNhMzE3YmY4NDYwY2RjYWE3NDY4OTYyNDVhMTg5MWVkMy4uMTRkZGU4NDM5NmViZjBjYTNiNTRh
NjViYjdmZGQ4MmU4MmI4MDJmNSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKQEAgLTE1OSw2ICsxNTksNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBjbGVhckFsbERhdGFiYXNlcygpOwogICAgIHZvaWQgc2V0RGF0YWJhc2VRdW90YSh1
aW50NjRfdCk7CiAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHBhdGhUb0xvY2FsUmVzb3Vy
Y2UoSlNTdHJpbmdSZWYpOworICAgIHZvaWQgc3luY0xvY2FsU3RvcmFnZSgpOwogCiAgICAgLy8g
QXBwbGljYXRpb24gQ2FjaGUKICAgICB2b2lkIGNsZWFyQWxsQXBwbGljYXRpb25DYWNoZXMoKTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXggMTY1NDYyOWNh
YTZmNmQ4Yzg5NDU0ODM1MWMwYzhmYjBhMzMzMzcyYS4uY2MzY2EyMDA3ZWZmNjkwNDExNDAzOGY3
MzcyMzU5MzVlZjc5NWEzMSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxl
ci5jcHAKQEAgLTkzOSw3ICs5MzksOCBAQCBib29sIFRlc3RDb250cm9sbGVyOjpyZXNldFN0YXRl
VG9Db25zaXN0ZW50VmFsdWVzKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zLCBSZQogICAgIGF1
dG8gd2Vic2l0ZURhdGFTdG9yZSA9IFdLQ29udGV4dEdldFdlYnNpdGVEYXRhU3RvcmUoVGVzdENv
bnRyb2xsZXI6OnNpbmdsZXRvbigpLmNvbnRleHQoKSk7CiAgICAgV0tXZWJzaXRlRGF0YVN0b3Jl
Q2xlYXJBbGxEZXZpY2VPcmllbnRhdGlvblBlcm1pc3Npb25zKHdlYnNpdGVEYXRhU3RvcmUpOwog
Ci0gICAgQ2xlYXJJbmRleGVkRGF0YWJhc2VzKCk7CisgICAgY2xlYXJJbmRleGVkRGF0YWJhc2Vz
KCk7CisgICAgY2xlYXJMb2NhbFN0b3JhZ2UoKTsKIAogICAgIGNsZWFyU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbnMoKTsKICAgICBjbGVhckRPTUNhY2hlcygpOwpAQCAtMzA2Myw4ICszMDY0LDgg
QEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6Y2xlYXJET01DYWNoZXMoKQogICAgIHJ1blVudGlsKGNv
bnRleHQuZG9uZSwgbm9UaW1lb3V0KTsKIH0KIAotc3RydWN0IFJlbW92ZUFsbEluZGV4ZWREYXRh
YmFzZXNDYWxsYmFja0NvbnRleHQgewotICAgIGV4cGxpY2l0IFJlbW92ZUFsbEluZGV4ZWREYXRh
YmFzZXNDYWxsYmFja0NvbnRleHQoVGVzdENvbnRyb2xsZXImIGNvbnRyb2xsZXIpCitzdHJ1Y3Qg
U3RvcmFnZVZvaWRDYWxsYmFja0NvbnRleHQgeworICAgIGV4cGxpY2l0IFN0b3JhZ2VWb2lkQ2Fs
bGJhY2tDb250ZXh0KFRlc3RDb250cm9sbGVyJiBjb250cm9sbGVyKQogICAgICAgICA6IHRlc3RD
b250cm9sbGVyKGNvbnRyb2xsZXIpCiAgICAgewogICAgIH0KQEAgLTMwNzMsMTggKzMwNzQsMzcg
QEAgc3RydWN0IFJlbW92ZUFsbEluZGV4ZWREYXRhYmFzZXNDYWxsYmFja0NvbnRleHQgewogICAg
IGJvb2wgZG9uZSB7IGZhbHNlIH07CiB9OwogCi1zdGF0aWMgdm9pZCBSZW1vdmVBbGxJbmRleGVk
RGF0YWJhc2VzQ2FsbGJhY2sodm9pZCogdXNlckRhdGEpCitzdGF0aWMgdm9pZCBTdG9yYWdlVm9p
ZENhbGxiYWNrKHZvaWQqIHVzZXJEYXRhKQogewotICAgIGF1dG8qIGNvbnRleHQgPSBzdGF0aWNf
Y2FzdDxSZW1vdmVBbGxJbmRleGVkRGF0YWJhc2VzQ2FsbGJhY2tDb250ZXh0Kj4odXNlckRhdGEp
OworICAgIGF1dG8qIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxTdG9yYWdlVm9pZENhbGxiYWNrQ29u
dGV4dCo+KHVzZXJEYXRhKTsKICAgICBjb250ZXh0LT5kb25lID0gdHJ1ZTsKICAgICBjb250ZXh0
LT50ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6
OkNsZWFySW5kZXhlZERhdGFiYXNlcygpCit2b2lkIFRlc3RDb250cm9sbGVyOjpjbGVhckluZGV4
ZWREYXRhYmFzZXMoKQogewogICAgIGF1dG8gd2Vic2l0ZURhdGFTdG9yZSA9IFdLQ29udGV4dEdl
dFdlYnNpdGVEYXRhU3RvcmUocGxhdGZvcm1Db250ZXh0KCkpOwotICAgIFJlbW92ZUFsbEluZGV4
ZWREYXRhYmFzZXNDYWxsYmFja0NvbnRleHQgY29udGV4dCgqdGhpcyk7Ci0gICAgV0tXZWJzaXRl
RGF0YVN0b3JlUmVtb3ZlQWxsSW5kZXhlZERhdGFiYXNlcyh3ZWJzaXRlRGF0YVN0b3JlLCAmY29u
dGV4dCwgUmVtb3ZlQWxsSW5kZXhlZERhdGFiYXNlc0NhbGxiYWNrKTsKKyAgICBTdG9yYWdlVm9p
ZENhbGxiYWNrQ29udGV4dCBjb250ZXh0KCp0aGlzKTsKKyAgICBXS1dlYnNpdGVEYXRhU3RvcmVS
ZW1vdmVBbGxJbmRleGVkRGF0YWJhc2VzKHdlYnNpdGVEYXRhU3RvcmUsICZjb250ZXh0LCBTdG9y
YWdlVm9pZENhbGxiYWNrKTsKKyAgICBydW5VbnRpbChjb250ZXh0LmRvbmUsIG5vVGltZW91dCk7
Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmNsZWFyTG9jYWxTdG9yYWdlKCkKK3sKKyAgICBh
dXRvIHdlYnNpdGVEYXRhU3RvcmUgPSBXS0NvbnRleHRHZXRXZWJzaXRlRGF0YVN0b3JlKHBsYXRm
b3JtQ29udGV4dCgpKTsKKyAgICBTdG9yYWdlVm9pZENhbGxiYWNrQ29udGV4dCBjb250ZXh0KCp0
aGlzKTsKKyAgICBXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVMb2NhbFN0b3JhZ2Uod2Vic2l0ZURh
dGFTdG9yZSwgJmNvbnRleHQsIFN0b3JhZ2VWb2lkQ2FsbGJhY2spOworICAgIHJ1blVudGlsKGNv
bnRleHQuZG9uZSwgbm9UaW1lb3V0KTsKKworICAgIFN0b3JhZ2VWb2lkQ2FsbGJhY2tDb250ZXh0
IGxlZ2FjeUNvbnRleHQoKnRoaXMpOworICAgIFdLQ29udGV4dENsZWFyTGVnYWN5UHJpdmF0ZUJy
b3dzaW5nTG9jYWxTdG9yYWdlKHBsYXRmb3JtQ29udGV4dCgpLCAmbGVnYWN5Q29udGV4dCwgU3Rv
cmFnZVZvaWRDYWxsYmFjayk7CisgICAgcnVuVW50aWwobGVnYWN5Q29udGV4dC5kb25lLCBub1Rp
bWVvdXQpOworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpzeW5jTG9jYWxTdG9yYWdlKCkKK3sK
KyAgICBTdG9yYWdlVm9pZENhbGxiYWNrQ29udGV4dCBjb250ZXh0KCp0aGlzKTsKKyAgICBXS0Nv
bnRleHRTeW5jTG9jYWxTdG9yYWdlKHBsYXRmb3JtQ29udGV4dCgpLCAmY29udGV4dCwgU3RvcmFn
ZVZvaWRDYWxsYmFjayk7CiAgICAgcnVuVW50aWwoY29udGV4dC5kb25lLCBub1RpbWVvdXQpOwog
fQogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKaW5kZXggYzhmZTRlNWE4
YjU5YmI0ZWZhYzRjNWUxYTZhMjk4NzZjYTg5Y2ZmZi4uYmViNTM1YjVlYTYxMDgwNGY2NDU3YWRh
NTdlZjg1OTRhM2JhN2EyNSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIu
aApAQCAtMjYxLDcgKzI2MSw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVtb3ZlQWxsU2Vzc2lv
bkNyZWRlbnRpYWxzKCk7CiAKLSAgICB2b2lkIENsZWFySW5kZXhlZERhdGFiYXNlcygpOworICAg
IHZvaWQgY2xlYXJJbmRleGVkRGF0YWJhc2VzKCk7CisgICAgdm9pZCBjbGVhckxvY2FsU3RvcmFn
ZSgpOworICAgIHZvaWQgc3luY0xvY2FsU3RvcmFnZSgpOwogCiAgICAgdm9pZCBjbGVhclNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25zKCk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdEludm9jYXRpb24uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52
b2NhdGlvbi5jcHAKaW5kZXggMTA3M2FiMTUxYTBlMzU0OWE0MTJhNWQyNWY1NGY3YjFiNGU5ZGNi
OC4uOWJlNmYyODgyZjNkZWE3OGMxM2NkMTZkZGZjZjc3N2UwM2EwOTY3MiAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKQEAgLTE2NTAsNiArMTY1MCwxMSBAQCBX
S1JldGFpblB0cjxXS1R5cGVSZWY+IFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlU3luY2hyb25v
dXNNZXNzYWdlRnJvbUluamVjdGVkQgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAK
KyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlN5bmNM
b2NhbFN0b3JhZ2UiKSkgeworICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuc3lu
Y0xvY2FsU3RvcmFnZSgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5Nzkz
MmZkN2JhYTA1NmU1NDhkMThhYWM5Mzg1NzAyMDM5NDU4MDcwLi5iZmMyMmVhYzc1ZGU5OTI2Mjc2
YmUxYzc1Yzg2N2U1ZjAzOTFkNjVhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTktMDgtMTQg
IFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgU29tZSBpbXByb3Zl
bWVudHMgb24gd2ViIHN0b3JhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwMDM3MworCisgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVu
LgorCisgICAgICAgIE1vZGlmeSB0ZXN0cyBmb3IgYSBiZWhhdmlvciBjaGFuZ2U6IHNlc3Npb25T
dG9yYWdlIHdpbGwgYmUgbG9zdCB3aGVuIG5ldHdvcmsgcHJvY2VzcyBjcmFzaGVzLgorCisgICAg
ICAgIEZvciB0ZXN0cyB3aGljaCB1c2Ugc2Vzc2lvblN0b3JhZ2UgdG8gc3RvcmUgaXRlbXMsIGNy
YXNoIG5ldHdvcmsgcHJvY2VzcywgdGhlbiByZWFkIGZyb20gc2Vzc2lvblN0b3JhZ2UgYW5kIAor
ICAgICAgICBleHBlY3QgaXRlbXMgdG8gYmUgaW4gc2Vzc2lvblN0b3JhZ2UsIHJlcGxhY2Ugc2Vz
c2lvblN0b3JhZ2Ugd2l0aCBsb2NhbFN0b3JhZ2UuIEFsc28sIHRvIG1ha2Ugc3VyZSBsb2NhbFN0
b3JhZ2UKKyAgICAgICAgaXMgc3RvcmVkIHBlcnNpc3RlbnRseSBiZWZvcmUgbmV0d29yayBwcm9j
ZXNzIGdldHMgdGVybWluYXRlZCwgYWRvcHQgYSBuZXdseSBpbnRyb2R1Y2VkIFNQSSB0byAKKyAg
ICAgICAgc3luY2hyb25vdXNseSBmbHVzaCBsb2NhbFN0b3JhZ2UgY29udGVudCB0byBkaXNrIGJl
Zm9yZSB0ZXJtaW5hdGluZyBuZXR3b3JrIHByb2Nlc3MuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9p
b3Mtc2ltdWxhdG9yLXdrMi9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy13azIvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBzdG9yYWdlL2RvbXN0b3JhZ2UvbG9j
YWxzdG9yYWdlL3ByaXZhdGUtYnJvd3NpbmctYWZmZWN0cy1zdG9yYWdlLWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9JREJPYmplY3QtbGVhay5odG1sOgorICAgICAg
ICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9vcGVuZGF0YWJhc2UtYWZ0ZXItc3RvcmFnZS1j
cmFzaC1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL29w
ZW5kYXRhYmFzZS1hZnRlci1zdG9yYWdlLWNyYXNoLmh0bWw6CisKIDIwMTktMDgtMTMgIEp1c3Rp
biBGYW4gIDxqdXN0aW5fZmFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViR1BVXSBJbXByb3Zl
IEdQVUJpbmRHcm91cCBwZXJmb3JtYW5jZSB1c2luZyBvbmUgZGV2aWNlLXNoYXJlZCBhcmd1bWVu
dCBNVExCdWZmZXIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy1zaW11bGF0
b3Itd2syL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltdWxh
dG9yLXdrMi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDllODY2NmFjZWYxNjgzODI1ZDc1Mzg2MjFj
MWM5Zjg5NGUwYjUxM2YuLjk3NDk3N2EyNWZjZjFmZDllNTc3ZTMzZjg1ZmE1YWZkMDRiYWZjYTIg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy1zaW11bGF0b3Itd2syL1Rlc3RF
eHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXNpbXVsYXRvci13azIv
VGVzdEV4cGVjdGF0aW9ucwpAQCAtNjYsNyArNjYsNyBAQCBodHRwL3dwdC9jYWNoZS1zdG9yYWdl
L2NhY2hlLXB1dC1rZXlzLmh0dHBzLmFueS53b3JrZXIuaHRtbCBbIFNsb3cgXQogaHR0cC93cHQv
Y2FjaGUtc3RvcmFnZS9hLWNhY2hlLW9wZW4uaHR0cHMuaHRtbCBbIFNsb3cgXQogaHR0cC93cHQv
Y2FjaGUtc3RvcmFnZS9jYWNoZS1xdW90YS1hZGQuYW55Lmh0bWwgWyBTbG93IF0KIAotd2Via2l0
Lm9yZy9iLzE5NjM3NiBbIERlYnVnIF0gc3RvcmFnZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFnZS9w
cml2YXRlLWJyb3dzaW5nLWFmZmVjdHMtc3RvcmFnZS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KK3dl
YmtpdC5vcmcvYi8xOTYzNzYgWyBEZWJ1ZyBdIHN0b3JhZ2UvZG9tc3RvcmFnZS9sb2NhbHN0b3Jh
Z2UvcHJpdmF0ZS1icm93c2luZy1hZmZlY3RzLXN0b3JhZ2UuaHRtbCBbIFBhc3MgXQogCiB3ZWJr
aXQub3JnL2IvMTk2NDAzIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWFjYXB0
dXJlLXJlY29yZC9NZWRpYVJlY29yZGVyLXN0b3AuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBmMzM2
ZmVhZGZmZDhlN2Y1NjdlMWQ3ZDgzYWNhMTU5Yzc0MjAwMmVhLi44NDM0Zjg2YjgyZjFmNGVhY2Y1
ZDU5MjZhMDc1NjE5ZTBmMWM2NzNkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdr
Mi9UZXN0RXhwZWN0YXRpb25zCkBAIC05MjAsNyArOTIwLDcgQEAgd2Via2l0Lm9yZy9iLzE5NDgy
NiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZG8tbm90LWJsb2NrLXRvcC1sZXZl
bC1uYXYKIAogd2Via2l0Lm9yZy9iLzE5NDkxNiBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
LXZpZGVvLWVsZW1lbnQuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8xOTYz
NzYgc3RvcmFnZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFnZS9wcml2YXRlLWJyb3dzaW5nLWFmZmVj
dHMtc3RvcmFnZS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8xOTYzNzYgc3Rv
cmFnZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFnZS9wcml2YXRlLWJyb3dzaW5nLWFmZmVjdHMtc3Rv
cmFnZS5odG1sIFsgUGFzcyBdCiAKIHdlYmtpdC5vcmcvYi8xOTY0MDAgZmFzdC9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbVRyYWNrLWdldFNldHRpbmdzLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2RvbXN0b3JhZ2UvbG9jYWxzdG9yYWdlL3By
aXZhdGUtYnJvd3NpbmctYWZmZWN0cy1zdG9yYWdlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvZG9tc3RvcmFnZS9sb2NhbHN0b3JhZ2UvcHJpdmF0ZS1icm93c2luZy1hZmZlY3Rz
LXN0b3JhZ2UtZXhwZWN0ZWQudHh0CmluZGV4IDJjYTk1NTc1MDI3ZmFiODlhYmViNDY3YjM4MDVj
MjA2MDVkZmZiZDEuLmY5ODQwZGViNTMwYmUxYzE1NWFkOGRlZjVhNThjODBmYzY2MWQwMjcgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvZG9tc3RvcmFnZS9sb2NhbHN0b3JhZ2UvcHJp
dmF0ZS1icm93c2luZy1hZmZlY3RzLXN0b3JhZ2UtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvZG9tc3RvcmFnZS9sb2NhbHN0b3JhZ2UvcHJpdmF0ZS1icm93c2luZy1hZmZl
Y3RzLXN0b3JhZ2UtZXhwZWN0ZWQudHh0CkBAIC04LDcgKzgsNyBAQCBBTEVSVDogbG9jYWxTdG9y
YWdlJ3MgbGVuZ3RoIGlzOiAxCiBBTEVSVDogVGhlIGl0ZW0gaW4gbmV3IHdpbmRvdyBzdGFydHMg
b3V0IGFzOiBDaGFuZ2VkVmFsdWUKIEFMRVJUOiBUaGUgaXRlbSBpbiBuZXcgd2luZG93IGlzIG5v
dzogTmV3V2luZG93VmFsdWUKIEFMRVJUOiBCYWNrIGluIHBhcmVudCB3aW5kb3csIGxvY2FsU3Rv
cmFnZSdzIGxlbmd0aCBpczogMQotQUxFUlQ6IEJhY2sgaW4gcGFyZW50IHdpbmRvdywgdGVzdEl0
ZW0gaXM6IENoYW5nZWRWYWx1ZQorQUxFUlQ6IEJhY2sgaW4gcGFyZW50IHdpbmRvdywgdGVzdEl0
ZW0gaXM6IE5ld1dpbmRvd1ZhbHVlCiBBTEVSVDogRmluYWwgd2luZG93LCBsb2NhbFN0b3JhZ2Un
cyBsZW5ndGggaXM6IDEKIEFMRVJUOiBGaW5hbCB3aW5kb3csIGl0ZW0gaXM6IFBlcnNpc3RlbnQg
aXRlbSEKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvSURCT2Jq
ZWN0LWxlYWsuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL0lEQk9iamVjdC1s
ZWFrLmh0bWwKaW5kZXggZTE4YjY4YjkxYWM3ZjYxOTVhMWUxZTExMWFmNGNhZDAzYjg2M2M1Ny4u
NmFhOGFiNjEwMzgyM2I3Yzk3YmZhNzdlZjU1NmQ4MTljOWFhYTBjYyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvSURCT2JqZWN0LWxlYWsuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9JREJPYmplY3QtbGVhay5odG1sCkBAIC0xMyw3ICsx
Myw3IEBAIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBp
ZiAoc2Vzc2lvblN0b3JhZ2UuZG9uZUZpcnN0TG9hZCkgeworICAgIGlmIChsb2NhbFN0b3JhZ2Uu
ZG9uZUZpcnN0TG9hZCkgewogICAgICAgICBnYygpOwogICAgICAgICBzaG91bGRCZUVxdWFsVG9O
dW1iZXIoImludGVybmFscy5udW1iZXJPZklEQlRyYW5zYWN0aW9ucygpIiwgMCk7CiAgICAgICAg
IGZpbmlzaEpTVGVzdCgpOwpAQCAtMjMsMTYgKzIzLDIxIEBAIGZ1bmN0aW9uIHRlc3QoKSB7CiAg
ICAgdmFyIGRibmFtZSA9IHNldERCTmFtZUZyb21QYXRoKCkgKyBEYXRlKCk7CiAgICAgdmFyIHJl
cXVlc3QgPSAgd2luZG93LmluZGV4ZWREQi5vcGVuKGRibmFtZSk7CiAgICAgcmVxdWVzdC5vbnVw
Z3JhZGVuZWVkZWQgPSBmdW5jdGlvbihldnQpIHsKLSAgICAgICAgc2Vzc2lvblN0b3JhZ2UuZG9u
ZUZpcnN0TG9hZCA9IHRydWU7CisgICAgICAgIGxvY2FsU3RvcmFnZS5kb25lRmlyc3RMb2FkID0g
dHJ1ZTsKICAgICAgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lciB8fCAhdGVzdFJ1bm5lci50ZXJt
aW5hdGVOZXR3b3JrUHJvY2VzcykgewogICAgICAgICAgICAgdGVzdEZhaWxlZCgnVGhpcyB0ZXN0
IHJlcXVpcmVzIGFjY2VzcyB0byB0aGUgVGVzdFJ1bm5lciBvYmplY3QgYW5kIHRlcm1pbmF0ZU5l
dHdvcmtQcm9jZXNzKCkgZnVuY3Rpb24nKTsKICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9IAorCisgICAgICAgIC8vIE1ha2Ugc3VyZSBs
b2NhbFN0b3JhZ2UgaXMgZmx1c2hlZCB0byBkaXNrIGJlZm9yZSBjcmFzaGluZyBuZXR3b3JrIHBy
b2Nlc3MuCisgICAgICAgIHRlc3RSdW5uZXIuc3luY0xvY2FsU3RvcmFnZSgpOwogICAgICAgICB0
ZXN0UnVubmVyLnRlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzKCk7Ci0gICAgICAgIHNldFRpbWVvdXQo
KCgpPT4gewotICAgICAgICAgICAgbG9jYXRpb24ucmVsb2FkKCk7Ci0gICAgICAgIH0pLCAwKTsK
KyAgICAgICAgZXZ0LnRhcmdldC5yZXN1bHQub25lcnJvciA9IGZ1bmN0aW9uKGUpIHsKKyAgICAg
ICAgICAgIHNldFRpbWVvdXQoKCgpPT4geworICAgICAgICAgICAgICAgIGxvY2F0aW9uLnJlbG9h
ZCgpOworICAgICAgICAgICAgfSksIDApOworICAgICAgICB9CiAgICAgfQogfQogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vb3BlbmRhdGFiYXNlLWFm
dGVyLXN0b3JhZ2UtY3Jhc2gtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbW9kZXJuL29wZW5kYXRhYmFzZS1hZnRlci1zdG9yYWdlLWNyYXNoLWV4cGVjdGVkLnR4
dAppbmRleCA0N2I4NzI3YTkzOTViNWQzYzRhM2QzZjFhNmEwZGUxZTgxNjU5NDliLi5mOTk3OGEw
MjQ0ZjFkMGE2N2I0ZGMxZjU4ZGQyMWMxZWQxNThjZjRjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vb3BlbmRhdGFiYXNlLWFmdGVyLXN0b3JhZ2UtY3Jh
c2gtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVy
bi9vcGVuZGF0YWJhc2UtYWZ0ZXItc3RvcmFnZS1jcmFzaC1leHBlY3RlZC50eHQKQEAgLTEsMiAr
MSwyIEBACi1QQVNTIHNlc3Npb25TdG9yYWdlW3N0b3JhZ2VLZXldIGlzICJNYWRlIGl0IgorUEFT
UyBsb2NhbFN0b3JhZ2Vbc3RvcmFnZUtleV0gaXMgIk1hZGUgaXQiCiBTdWNjZXNzZnVsbHkgb3Bl
bmVkIGRhdGFiYXNlIHdpdGggdmVyc2lvbiAzLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvbW9kZXJuL29wZW5kYXRhYmFzZS1hZnRlci1zdG9yYWdlLWNyYXNoLmh0
bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vb3BlbmRhdGFiYXNlLWFm
dGVyLXN0b3JhZ2UtY3Jhc2guaHRtbAppbmRleCBkMjQ1OGY2YTI5OGIzNDEwN2E0YjhkMGVmNjdi
YzY0MjNkMmRhMGRmLi45YTA5MTJlZjE1YzdiODQ3ZTlmM2Q5MDEzM2UyMDdhMmQzMTEyNThiIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vb3BlbmRhdGFi
YXNlLWFmdGVyLXN0b3JhZ2UtY3Jhc2guaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb2Rlcm4vb3BlbmRhdGFiYXNlLWFmdGVyLXN0b3JhZ2UtY3Jhc2guaHRtbApAQCAt
MjAsMzEgKzIwLDMxIEBAIGZ1bmN0aW9uIGNvbnRpbnVlVGVzdCgpCiAJcmVxdWVzdC5vbmVycm9y
ID0gZnVuY3Rpb24oZSkgewogCQkvLyBHb29kLCB3ZSByZWNlaXZlZCBhbiBleHBlY3RlZCBlcnJv
ci4KIAkJLy8gTm93IHJlbG9hZCB0byBzZWUgaWYgYSBuZXcgZG9jdW1lbnQgY29ubmVjdHMgc3Vj
Y2Vzc2Z1bGx5Ci0JCWlmIChzZXNzaW9uU3RvcmFnZVtzdG9yYWdlS2V5XSkgeworCQlpZiAobG9j
YWxTdG9yYWdlW3N0b3JhZ2VLZXldKSB7CiAJCQlkb2N1bWVudC5ib2R5LmlubmVySFRNTCA9ICJS
ZWNlaXZlZCBlcnJvciBtb3JlIHRoYW4gb25jZSB1bmV4cGVjdGVkbHkuIERhdGFiYXNlOiBuYW1l
ICIgKyBkYm5hbWUgKyAiLCB2ZXJzaW9uIDIuIjsKIAkJCWlmICh3aW5kb3cudGVzdFJ1bm5lcikK
IAkJCQl0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIAkJCXJldHVybjsKIAkJfQogCi0JCXNlc3Np
b25TdG9yYWdlW3N0b3JhZ2VLZXldID0gIk1hZGUgaXQiOworCQlsb2NhbFN0b3JhZ2Vbc3RvcmFn
ZUtleV0gPSAiTWFkZSBpdCI7CiAJCWxvY2F0aW9uLnJlbG9hZCgpOwogCX0KIAogCXJlcXVlc3Qu
b25zdWNjZXNzID0gZnVuY3Rpb24oZSkgewotCQlkb2N1bWVudC5ib2R5LmlubmVySFRNTCA9ICJV
bmV4cGVjdGVkIHVwZ3JhZGVuZWVkZWQgYWZ0ZXIgc3RvcmFnZSBwcm9jZXNzIHRlcm1pbmF0aW9u
LiBEYXRhYmFzZTogbmFtZSAiICsgZGJuYW1lICsgIiwgdmVyc2lvbiAyLiBTZXNzaW9uU3RvcmFn
ZSB2YWx1ZTogIiArIHNlc3Npb25TdG9yYWdlW3N0b3JhZ2VLZXldICsgIi4iOworCQlkb2N1bWVu
dC5ib2R5LmlubmVySFRNTCA9ICJVbmV4cGVjdGVkIHVwZ3JhZGVuZWVkZWQgYWZ0ZXIgc3RvcmFn
ZSBwcm9jZXNzIHRlcm1pbmF0aW9uLiBEYXRhYmFzZTogbmFtZSAiICsgZGJuYW1lICsgIiwgdmVy
c2lvbiAyLiBsb2NhbFN0b3JhZ2UgdmFsdWU6ICIgKyBzZXNzaW9uU3RvcmFnZVtzdG9yYWdlS2V5
XSArICIuIjsKIAkJaWYgKHdpbmRvdy50ZXN0UnVubmVyKQogCQkJdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7CiAJfQogfQogCi12YXIgdmVyc2lvblRvT3BlbiA9IHNlc3Npb25TdG9yYWdlLmRvbmVG
aXJzdExvYWQgPyAzIDogMTsKK3ZhciB2ZXJzaW9uVG9PcGVuID0gbG9jYWxTdG9yYWdlLmRvbmVG
aXJzdExvYWQgPyAzIDogMTsKIHZhciByZXF1ZXN0ID0gd2luZG93LmluZGV4ZWREQi5vcGVuKGRi
bmFtZSwgdmVyc2lvblRvT3Blbik7CiAKIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rp
b24oZSkgewotCWlmIChzZXNzaW9uU3RvcmFnZS5kb25lRmlyc3RMb2FkKSB7CisJaWYgKGxvY2Fs
U3RvcmFnZS5kb25lRmlyc3RMb2FkKSB7CiAJCWRvY3VtZW50LmJvZHkuaW5uZXJIVE1MID0gIlN1
Y2Nlc3NmdWxseSBvcGVuZWQgZGF0YWJhc2Ugd2l0aCB2ZXJzaW9uICIgKyB2ZXJzaW9uVG9PcGVu
ICsgIi4iOwotCQlzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Nlc3Npb25TdG9yYWdlW3N0b3JhZ2VL
ZXldJywgJ01hZGUgaXQnKTsKKwkJc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdsb2NhbFN0b3JhZ2Vb
c3RvcmFnZUtleV0nLCAnTWFkZSBpdCcpOwogCiAJCWlmICh3aW5kb3cudGVzdFJ1bm5lcikgewog
CQkJdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CkBAIC01Miw3ICs1Miw3IEBAIHJlcXVlc3Qub251
cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZSkgewogCQl9CiAJfQogCi0Jc2Vzc2lvblN0b3JhZ2Uu
ZG9uZUZpcnN0TG9hZCA9IHRydWU7CisJbG9jYWxTdG9yYWdlLmRvbmVGaXJzdExvYWQgPSB0cnVl
OwogCiAJLy8gU2V0IGFuIGVycm9yIGhhbmRsZXIgb24gdGhlIGRhdGFiYXNlIGNvbm5lY3Rpb24g
c28gb25jZSB0aGUgc3RvcmFnZSBwcm9jZXNzIHRlcm1pbmF0ZXMgd2Uga25vdyB0byBjb250aW51
ZSB0aGUgdGVzdAogCWUudGFyZ2V0LnJlc3VsdC5vbmVycm9yID0gZnVuY3Rpb24oZSkgewpAQCAt
NjEsNiArNjEsOCBAQCByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGUpIHsKIAog
CWlmICh3aW5kb3cudGVzdFJ1bm5lcikgewogCQl0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
KwkJLy8gTWFrZSBzdXJlIGxvY2FsU3RvcmFnZSBpcyBmbHVzaGVkIHRvIGRpc2sgYmVmb3JlIGNy
YXNoaW5nIG5ldHdvcmsgcHJvY2Vzcy4KKwkJdGVzdFJ1bm5lci5zeW5jTG9jYWxTdG9yYWdlKCk7
CiAJCXRlc3RSdW5uZXIudGVybWluYXRlTmV0d29ya1Byb2Nlc3MoKTsKIAl9CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376336</attachid>
            <date>2019-08-14 17:12:09 -0700</date>
            <delta_ts>2019-08-15 07:54:59 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-200373-20190814171208.patch</filename>
            <type>text/plain</type>
            <size>254009</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4NjkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDg3NWYxZmMyZmMxYzgw
NGFiNjdkYjYwMWYwYTA4ODk3ZmQ3YzY4OC4uYzdkMjM4ZjMyMGEwOTdiYWRhMmE3ZjQwMWEyOGM3
OGViYjdmMTg0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDE5LTA4LTE0ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIFNvbWUgaW1wcm92ZW1lbnRz
IG9uIHdlYiBzdG9yYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDAzNzMKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKwor
ICAgICAgICBSZW1vdmUgc3RvcmFnZSB0eXBlIEVwaGVtZXJhbExvY2FsU3RvcmFnZSwgd2hpY2gg
aXMgdXNlZCBmb3IgbG9jYWxTdG9yYWdlIGluIGVwaGVtZXJhbCBzZXNzaW9uLCBhbmQgdXNlIAor
ICAgICAgICBMb2NhbFN0b3JhZ2UgaW5zdGVhZC4KKworICAgICAgICBBZGQgU2Vzc2lvbklEIHRv
IFN0b3JhZ2VOYW1lc3BhY2UgdG8gbWFrZSBTdG9yYWdlTmFtZXNwYWNlIHNlc3Npb24tc3BlY2lm
aWMuCisKKyAgICAgICAgTm8gbmV3IHRlc3QsIHVwZGF0aW5nIGV4aXN0aW5nIHRlc3RzIGZvciBu
ZXcgYmVoYXZpb3IuCisKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlTdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAg
IChXZWJDb3JlOjpFbXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlRXBoZW1lcmFs
TG9jYWxTdG9yYWdlTmFtZXNwYWNlKTogRGVsZXRlZC4KKworICAgICAgICAqIHBhZ2UvQ2hyb21l
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6Y3JlYXRlV2luZG93IGNvbnN0KTogZXBo
ZW1lcmFsIGxvY2FsU3RvcmFnZSBvZiBkaWZmZXJlbnQgd2luZG93cyB3aWxsIGNvbm5lY3QgdG8g
dGhlIHNhbWUgCisgICAgICAgIFN0b3JhZ2VBcmVhIGluIG5ldHdvcmsgcHJvY2Vzcywgc28gbm8g
bmVlZCB0byBjb3B5IGZyb20gcGFyZW50IHdpbmRvdyB0byBjaGlsZCB3aW5kb3cuCisKKyAgICAg
ICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OnBy
ZXdhcm1Mb2NhbFN0b3JhZ2VJZk5lY2Vzc2FyeSk6IGxvY2FsU3RvcmFnZSB3aWxsIGJlIHByZXdh
cm1lZCBpbiBuZXR3b3JrIHByb2Nlc3MgaW4gdGhlCisgICAgICAgIGluaXRpYWxpemF0aW9uIG9m
IFN0b3JhZ2VBcmVhTWFwLgorCisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Om1fYXBwbGljYXRpb25NYW5pZmVzdCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjp+
UGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzZXRTZXNzaW9uSUQpOgorICAgICAgICAo
V2ViQ29yZTo6UGFnZTo6ZXBoZW1lcmFsTG9jYWxTdG9yYWdlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlBhZ2U6OnNldEVwaGVtZXJhbExvY2FsU3RvcmFnZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpQYWdlOjpzZXRTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIpOiBEZWxldGVk
LgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyKToKKyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U3RvcmFnZTo6cHJld2FybSk6IERlbGV0ZWQuCisgICAgICAgICogc3Rv
cmFnZS9TdG9yYWdlLmg6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlQXJlYS5oOgorICAgICAg
ICAoV2ViQ29yZTo6U3RvcmFnZUFyZWE6OmNsb3NlRGF0YWJhc2VJZklkbGUpOgorICAgICAgICAo
V2ViQ29yZTo6U3RvcmFnZUFyZWE6OnByZXdhcm0pOiBEZWxldGVkLgorICAgICAgICAqIHN0b3Jh
Z2UvU3RvcmFnZU5hbWVzcGFjZS5oOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
cjo6flN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcik6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdl
TmFtZXNwYWNlUHJvdmlkZXI6OmxvY2FsU3RvcmFnZUFyZWEpOgorICAgICAgICAoV2ViQ29yZTo6
U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpsb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjp0cmFuc2llbnRMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVy
OjplbmFibGVMZWdhY3lQcml2YXRlQnJvd3NpbmdGb3JUZXN0aW5nKTogY2hhbmdlIFNlc3Npb25J
RCBvZiBzdG9yYWdlTmFtZXNwYWNlCisgICAgICAgIGFuZCB1cGRhdGUgZXZlcnkgU3RvcmFnZUFy
ZWEgaW4gdGhpcyBuYW1lc3BhY2UuCisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXI6OmFkZFBhZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyOjpyZW1vdmVQYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdG9yYWdl
L1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZVR5
cGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OmlzTG9jYWxTdG9yYWdlKToKKwogMjAxOS0wOC0xNCAg
RGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3Rv
cjogc3VwcG9ydCBgY29uc29sZS5zY3JlZW5zaG90YCB3aXRoIGRhdGFVUkwgc3RyaW5ncwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCAxOWZlZDUxMGQwZTBmYTI3OWUxZDJmYWMxZTQ3OWM4YzI2OWNjMDBhLi5hM2FlZjM2
M2MyYmNlZGZhMmNjY2Q3MjIzNWRiZmNjZDE4MWZlNzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMw
MyBAQAorMjAxOS0wOC0xNCAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAg
ICAgICBTb21lIGltcHJvdmVtZW50cyBvbiB3ZWIgc3RvcmFnZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwMzczCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgR2VvZmZyZXkgR2FyZW4uCisKKyAgICAgICAgRml4IHNvbWUgaXNzdWVzIGluIHdlYiBzdG9y
YWdlIGFyY2hpdGVjdHVyZS4gRm9yIGV4YW1wbGUsIHNlc3Npb25TdG9yYWdlTmFtZVNwYWNlIGZv
ciB3ZWIgcGFnZSBpcyBwcmVwYXJlZCBhbmQgCisgICAgICAgIGRlc3Ryb3llZCBpbiB0aGUgbmV0
d29yayBwcm9jZXNzIHdoZW4gdGhlIHBhZ2UgY29tZXMgYW5kIGdvZXMsIGV2ZW4gdGhvdWdoIHRo
ZSBwYWdlIG1heSBub3QgdXNlIHNlc3Npb25TdG9yYWdlIAorICAgICAgICBhdCBhbGwuIFRoZSBt
ZXNzYWdlcyBhYm91dCBwYWdlIHN0YXRlIHNlbnQgZnJvbSB3ZWIgcHJvY2VzcyB0byBuZXR3b3Jr
IHByb2Nlc3MgY2FuIGJlIHdhc3RlLgorCisgICAgICAgIEhlcmUgYXJlIHNvbWUgZ2VuZXJhbCBp
ZGVhcyBvZiB0aGlzIHBhdGNoOgorICAgICAgICAxLiBOZXR3b3JrIHByb2Nlc3Mgb3ducyB0aGUg
d2ViIHN0b3JhZ2UsIGFuZCB3ZWIgcHJvY2VzcyBrZWVwcyBhIHNtYWxsIGxvY2FsIGNvcHkgKGJh
c2VkIG9uIHNlc3Npb24gYW5kIAorICAgICAgICBvcmlnaW5zIHRoYXQgYXJlIHZpc2l0ZWQpLiBU
aGVyZSBpcyBhIHZpcnR1YWwgY29ubmVjdGlvbiBmcm9tIHRoZSBsb2NhbCBjb3B5IGluIHRoZSB3
ZWIgcHJvY2VzcyB0byB0aGUgb3JpZ2luYWwKKyAgICAgICAgY29weSBpbiB0aGUgbmV0d29yayBw
cm9jZXNzLiBUaGUgY29ubmVjdGlvbiBpcyBjcmVhdGVkIGJ5IHdlYiBwcm9jZXNzIHdoZW4gc29t
ZSBwYWdlIGFza3MgZm9yIHdlYiBzdG9yYWdlLgorICAgICAgICAyLiBJZiBjb25uZWN0aW9uIGlz
IGxvc3QgYmVjYXVzZSBuZXR3b3JrIHByb2Nlc3MgaXMgZ29uZSwgc3RvcmFnZSBpbiBtZW1vcnkg
d2lsbCBiZSBsb3N0LiBUaGUgbG9jYWwgY29weSBpbiB3ZWIKKyAgICAgICAgcHJvY2Vzc3Mgd2ls
bCBiZSBkaXNjYXJkZWQuCisgICAgICAgIDMuIChTZXNzaW9uSUQsIFN0b3JhZ2VOYW1lc3BhY2VJ
RCwgU2VjdXJpdHlPcmlnaW4pIGlzIHVzZWQgdG8gaWRlbnRpZnkgYSBzdG9yYWdlIGFyZWEuIElm
IHNlc3Npb24gaXMgY2hhbmdlZCBpbgorICAgICAgICB3ZWIgcHJvY2VzcyAobGlrZSBlbmFibGlu
ZyBwcml2YXRlIGJyb3dzaW5nIGluIGxheW91dCB0ZXN0IG5vdyksIGEgcmUtY29ubmVjdGlvbiB3
aXRoIGRpZmZlcmVudCBzZXNzaW9uSUQgd291bGQgCisgICAgICAgIHN1ZmZpY2UgdG8gbG9hZCBh
bm90aGVyIGNvcHkgb2Ygc3RvcmFnZS4KKyAgICAgICAgNC4gbG9jYWxTdG9yYWdlIGluIGVwaGVt
ZXJhbCBzZXNzaW9uIGhhcyB0aGUgc2FtZSBiZWhhdmlvciBhcyBsb2NhbFN0b3JhZ2UgaW5zdGVh
ZCBvZiBzZXNzaW9uU3RvcmFnZSwgd2hpY2gKKyAgICAgICAgbWVhbnMgZGlmZmVyZW50IHBhZ2Vz
IGluIHRoZSBzYW1lIGVwaGVtZXJhbCBzZXNzaW9uIHNoYXJlIHRoZSBzYW1lIGxvY2FsU3RvcmFn
ZS4KKworICAgICAgICBBbHNvLCB0aGlzIHBhdGNoIGludHJvZHVjZXMgU3RvcmFnZU1hbmFnZXJT
ZXQgdG8gbmV0d29yayBwcm9jZXNzLiBJdCBoYW5kbGVzIHdlYiBzdG9yYWdlIHN0dWZmLCBpbmNs
dWRpbmcKKyAgICAgICAgcmVjZWl2aW5nIHN0b3JhZ2UgbWVzc2FnZXMgZnJvbSB3ZWIgcHJvY2Vz
cywgb24gb25lIGJhY2tncm91bmQgdGhyZWFkLiBQcmV2aW91c2x5IGVhY2ggc2Vzc2lvbiBoYXMg
aXRzIG93bgorICAgICAgICBTdG9yYWdlTWFuYWdlciBhbmQgZWFjaCBTdG9yYWdlTWFuYWdlciBo
YXMgaXRzIG93biBXb3JrUXVldWUuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAg
ICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRT
b3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6
CisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHA6IHJlbW92ZSBtZXNzYWdlIGhhbmRsZXJzIHRoYXQgYXJlIG5vIGxvbmdlciBuZWVkZWQu
IE5ldHdvcmsKKyAgICAgICAgcHJvY2VzcyBubyBsb25nZXIgbmVlZHMgdG8ga25vdyBwYWdlIHN0
YXRlcyBmcm9tIHdlYiBwcm9jZXNzLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6ZGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6d2ViUGFnZVdhc0FkZGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OndlYlBhZ2VXYXNSZW1vdmVkKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OndlYlByb2Nlc3NTZXNzaW9uQ2hhbmdlZCk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKworICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDogTmV0d29ya1Byb2Nlc3Mg
dXNlcyBTdG9yYWdlTWFuYWdlclNldCBpbnN0ZWFkIG9mIFN0b3JhZ2VNYW5hZ2VyIGZyb20gCisg
ICAgICAgIGRpZmZlcmVudCBzZXNzaW9ucyB0byBkZWFsIHdpdGggd2ViIHN0b3JhZ2UuCisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplTmV0d29ya1Byb2Nlc3MpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MpOiBTdG9yYWdlTWFuYWdlclNldCBzdGFydHMgaGFuZGxpbmcgCisgICAgICAgIFN0b3Jh
Z2VNYW5hZ2VyU2V0IG1lc3NhZ2VzIGZyb20gdGhlIG5ldyBjb25uZWN0aW9uLgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6YWRkV2Vic2l0ZURhdGFTdG9yZSk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZXN0cm95U2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzOjpoYXNMb2NhbFN0b3JhZ2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6YWN0dWFsUHJlcGFyZVRvU3VzcGVuZCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZXN1bWUpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6c3luY0xvY2FsU3RvcmFnZSk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzOjpjbGVhckxlZ2FjeVByaXZhdGVCcm93c2luZ0xvY2FsU3RvcmFnZSk6IGFk
ZGVkIGZvciBjbGVhcmluZyBpbi1tZW1vcnkgZXBoZW1lcmFsCisgICAgICAgIGxvY2FsU3RvcmFn
ZS4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmdldExvY2FsU3RvcmFnZU9yaWdp
bkRldGFpbHMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y29ubmVjdGlvblRv
V2ViUHJvY2Vzc0Nsb3NlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjp3ZWJQ
YWdlV2FzQWRkZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6
d2ViUGFnZVdhc1JlbW92ZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6d2ViUHJvY2Vzc1dhc0Rpc2Nvbm5lY3RlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjp3ZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQpOiBEZWxldGVkLgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHA6IFN0b3JhZ2VNYW5hZ2VyIGlzIG1vdmVkIG91
dCBvZiBOZXR3b3JrU2Vzc2lvbi4gSXQgaXMgbm93IG1hbmFnZWQgYnkgCisgICAgICAgIFN0b3Jh
Z2VNYW5hZ2VyU2V0LgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6TmV0d29ya1Nl
c3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6fk5ldHdvcmtTZXNzaW9u
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6c3RvcmFnZU1hbmFnZXIpOiBEZWxldGVkLgorCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuY3Bw
OiBjcmVhdGlvbiBwYXJhbWV0ZXJzIG9mIFN0b3JhZ2VNYW5hZ2VyIGlzIG1vdmVkIG91dCBvZgor
ICAgICAgICBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy4KKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM6OnByaXZhdGVTZXNzaW9uUGFyYW1l
dGVycyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJz
OjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNyZWF0aW9u
UGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vz
c2lvbkNyZWF0aW9uUGFyYW1ldGVycy5oOgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvV2Vi
U3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxvY2Fs
U3RvcmFnZURhdGFiYXNlOjp1cGRhdGVEYXRhYmFzZSk6IHJlbW92ZSBhbiBhc3NlcnRpb24gdGhh
dCBpcyBubyBsb25nZXIgdHJ1ZSBhcyB3ZSBjYW4gZm9yY2UgYW4KKyAgICAgICAgdXBkYXRlIHdp
dGggc3luY0xvY2FsU3RvcmFnZSBub3cuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvV2ViU3Rv
cmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5oOiBtYWtlIHVwZGF0ZURhdGFiYXNlIHB1YmxpYyBm
b3Igc3luY0xvY2FsU3RvcmFnZS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3Jh
Z2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNwcDogTG9jYWxTdG9yYWdlRGF0YWJhc2VU
cmFja2VyIGlzIGNyZWF0ZWQgb24gdGhlCisgICAgICAgIGJhY2tncm91bmQgdGhyZWFkIG5vdywg
c28gaXQgZG9lcyBub3QgaG9sZCBXb3JrUXVldWUgdG8gZG8gdGhlIGZpbGUgb3BlcmF0aW9uLgor
ICAgICAgICAoV2ViS2l0OjpMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OkxvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6TG9jYWxTdG9yYWdl
RGF0YWJhc2VUcmFja2VyKToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxTdG9yYWdlRGF0YWJhc2VU
cmFja2VyOjp+TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlTmFtZXNwYWNlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TG9jYWxTdG9yYWdlTmFtZXNwYWNlOjpnZXRPckNyZWF0ZVN0b3Jh
Z2VBcmVhKToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxTdG9yYWdlTmFtZXNwYWNlOjpjbG9uZVRv
KTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3Rv
cmFnZU5hbWVzcGFjZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU2Vz
c2lvblN0b3JhZ2VOYW1lc3BhY2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpTZXNzaW9uU3RvcmFn
ZU5hbWVzcGFjZTo6Z2V0T3JDcmVhdGVTdG9yYWdlQXJlYSk6CisgICAgICAgIChXZWJLaXQ6OlNl
c3Npb25TdG9yYWdlTmFtZXNwYWNlOjphZGRBbGxvd2VkQ29ubmVjdGlvbik6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OlNlc3Npb25TdG9yYWdlTmFtZXNwYWNlOjpyZW1vdmVBbGxvd2VkQ29u
bmVjdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9T
ZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS5oOgorICAgICAgICAoV2ViS2l0OjpTZXNzaW9uU3RvcmFn
ZU5hbWVzcGFjZTo6YWxsb3dlZENvbm5lY3Rpb25zIGNvbnN0KTogRGVsZXRlZC4KKworICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWEuY3BwOgorICAgICAgICAo
V2ViS2l0OjpnZW5lcmF0ZVN0b3JhZ2VBcmVhSWRlbnRpZmllcik6IGVhY2ggU3RvcmFnZUFyZWEg
aGFzIGFuIGlkZW50aWZpZXIuIFN0b3JhZ2VBcmVhTWFwIGluIHdlYiBwcm9jZXNzIHVzZXMKKyAg
ICAgICAgdGhpcyBpZGVudGlmaWVyIHRvIGluZGljYXRlIHdoaWNoIFN0b3JhZ2VBcmVhIGl0IGlz
IGNvbm5lY3RpbmcgdG8uCisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhOjpTdG9yYWdlQXJl
YSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhOjp+U3RvcmFnZUFyZWEpOiBTdG9yYWdl
QXJlYSBtYXkgc3RpbGwgaGF2ZSBsaXN0ZW5lcnMgYmVjYXVzZSBTdG9yYWdlQXJlYSBzaG91bGQg
YmUgCisgICAgICAgIGRlc3Ryb3llZCBieSByZXF1ZXN0cyBmcm9tIFVJIHByb2Nlc3MsIGFuZCBs
aXN0ZW5lcnMgYXJlIGNvbm5lY3Rpb25zIHRvIHdlYiBwcm9jZXNzc2VzLgorICAgICAgICAoV2Vi
S2l0OjpTdG9yYWdlQXJlYTo6YWRkTGlzdGVuZXIpOiBsb2FkIGxvY2FsU3RvcmFnZURhdGFiYXNl
IGluIGFkdmFuY2UgaWYgdGhlcmUgaXMgc29tZSBjb25uZWN0aW9uIHRvIHRoaXMgCisgICAgICAg
IExvY2FsU3RvcmFnZSBhcmVhLgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYTo6cmVtb3Zl
TGlzdGVuZXIpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYTo6aGFzTGlzdGVuZXIgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYTo6Y2xlYXIpOgorICAgICAgICAoV2Vi
S2l0OjpTdG9yYWdlQXJlYTo6b3BlbkRhdGFiYXNlQW5kSW1wb3J0SXRlbXNJZk5lZWRlZCBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhOjpkaXNwYXRjaEV2ZW50cyBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhOjpzeW5jVG9EYXRhYmFzZSk6CisgICAgICAg
IChXZWJLaXQ6OlN0b3JhZ2VBcmVhOjpzZXRJdGVtcyk6IERlbGV0ZWQuIFN0b3Agc3luY2luZyBm
cm9tIHdlYiBwcm9jZXNzIHRvIG5ldHdvcmsgcHJvY2VzcyBhZnRlciBuZXR3b3JrIHByb2Nlc3MK
KyAgICAgICAgaXMgcmVsYXVuY2hlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VBcmVhLmg6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhOjppZGVudGlm
aWVyKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWE6OnNldFdvcmtRdWV1ZSk6CisKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcDogU3Rv
cmFnZU1hbmFnZXIgc2hvdWxkIGJlIGFjY2Vzc2VkIGJ5IG9ubHkgYmFja2dyb3VuZCB0aHJlYWQg
bm93LgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6U3RvcmFnZU1hbmFnZXIpOgor
ICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6flN0b3JhZ2VNYW5hZ2VyKToKKyAgICAg
ICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNl
KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmRlc3Ryb3lTZXNzaW9uU3RvcmFn
ZU5hbWVzcGFjZSk6IHRoaXMgaXMgbm90IHVzZWQgbm93IGJ1dCBrZWVwIGl0IGZvciBmdXR1cmUg
CisgICAgICAgIGltcHJvdmVtZW50IHRvIHJlbW92ZSBpbi1tZW1vcnkgc2Vzc2lvblN0b3JhZ2Ug
aW4gbmV0d29yayBwcm9jZXNzIGlmIHdlIGtub3cgc29tZSB3ZWIgcGFnZSBpcyBnb25lIGZvcmV2
ZXIuCisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpjbG9uZVNlc3Npb25TdG9yYWdl
TmFtZXNwYWNlKTogcHJldmlvdXNseSBlYWNoIHBhZ2UgaGFkIGl0cyBvd24gZXBoZW1lcmFsIAor
ICAgICAgICBsb2NhbFN0b3JhZ2VOYW1lc3BhY2UgYW5kIG5vdyBhbGwgcGFnZXMgaW4gdGhlIHNh
bWUgc2Vzc2lvbiBzaGFyZSBvbmUgbG9jYWxTdG9yYWdlLCBzbyB3ZSBkb24ndCBuZWVkIHRvIGNs
b25lCisgICAgICAgIGxvY2FsU3RvcmFnZU5hbWVzcGFjZS4KKyAgICAgICAgKFdlYktpdDo6U3Rv
cmFnZU1hbmFnZXI6OmdldFNlc3Npb25TdG9yYWdlT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6
OlN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVTZXNzaW9uU3RvcmFnZU9yaWdpbnMpOgorICAgICAgICAo
V2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlU2Vzc2lvblN0b3JhZ2VFbnRyaWVzRm9yT3Jp
Z2lucyk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpnZXRMb2NhbFN0b3JhZ2VP
cmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmdldExvY2FsU3RvcmFn
ZU9yaWdpbkRldGFpbHMpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6ZGVsZXRl
TG9jYWxTdG9yYWdlT3JpZ2luc01vZGlmaWVkU2luY2UpOgorICAgICAgICAoV2ViS2l0OjpTdG9y
YWdlTWFuYWdlcjo6ZGVsZXRlTG9jYWxTdG9yYWdlRW50cmllc0Zvck9yaWdpbnMpOgorICAgICAg
ICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlTG9jYWxTdG9yYWdlQXJlYSk6CisgICAg
ICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VB
cmVhKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmNyZWF0ZVNlc3Npb25TdG9y
YWdlQXJlYSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpnZXRPckNyZWF0ZUxv
Y2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpn
ZXRPckNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJL
aXQ6OlN0b3JhZ2VNYW5hZ2VyOjpnZXRPckNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKToK
KyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmNsZWFyU3RvcmFnZU5hbWVzcGFjZXMp
OgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6YWRkQWxsb3dlZFNlc3Npb25TdG9y
YWdlTmFtZXNwYWNlQ29ubmVjdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlN0b3Jh
Z2VNYW5hZ2VyOjpyZW1vdmVBbGxvd2VkU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0aW9u
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OnByb2Nlc3NEaWRD
bG9zZUNvbm5lY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdl
cjo6ZGVsZXRlTG9jYWxTdG9yYWdlRW50cmllc0Zvck9yaWdpbik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVMb2NhbFN0b3JhZ2VNYXApOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlVHJhbnNpZW50TG9jYWxT
dG9yYWdlTWFwKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmNy
ZWF0ZVNlc3Npb25TdG9yYWdlTWFwKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U3RvcmFn
ZU1hbmFnZXI6OmRlc3Ryb3lTdG9yYWdlTWFwKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
U3RvcmFnZU1hbmFnZXI6OnByZXdhcm0pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTdG9y
YWdlTWFuYWdlcjo6Z2V0VmFsdWVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U3RvcmFn
ZU1hbmFnZXI6OnNldEl0ZW0pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFu
YWdlcjo6c2V0SXRlbXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdl
cjo6cmVtb3ZlSXRlbSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2Vy
OjpjbGVhcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjp3YWl0
VW50aWxUYXNrc0ZpbmlzaGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1h
bmFnZXI6OnN1c3BlbmQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdl
cjo6cmVzdW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmZp
bmRTdG9yYWdlQXJlYSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
V2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5oOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFu
YWdlcjo6d29ya1F1ZXVlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKCk6IERlbGV0ZWQuCisK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLm1lc3Nh
Z2VzLmluOiBSZW1vdmVkLiBNb3ZlZCB0byBTdG9yYWdlTWFuYWdlclNldC5tZXNzYWdlcy5pbi4K
KworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXJTZXQ6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpTdG9yYWdlTWFuYWdlclNldCk6
CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0Ojp+U3RvcmFnZU1hbmFnZXJTZXQp
OgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlclNldDo6YWRkKToKKyAgICAgICAgKFdl
YktpdDo6U3RvcmFnZU1hbmFnZXJTZXQ6OnJlbW92ZSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3Jh
Z2VNYW5hZ2VyU2V0Ojpjb250YWlucyk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2Vy
U2V0OjphZGRDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXJTZXQ6
OnJlbW92ZUNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlclNldDo6
d2FpdFVudGlsVGFza3NGaW5pc2hlZCk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2Vy
U2V0Ojp3YWl0VW50aWxTeW5jaW5nTG9jYWxTdG9yYWdlRmluaXNoZWQpOgorICAgICAgICAoV2Vi
S2l0OjpTdG9yYWdlTWFuYWdlclNldDo6c3VzcGVuZCk6CisgICAgICAgIChXZWJLaXQ6OlN0b3Jh
Z2VNYW5hZ2VyU2V0OjpyZXN1bWUpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlclNl
dDo6Z2V0U2Vzc2lvblN0b3JhZ2VPcmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1h
bmFnZXJTZXQ6OmRlbGV0ZVNlc3Npb25TdG9yYWdlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFn
ZU1hbmFnZXJTZXQ6OmRlbGV0ZVNlc3Npb25TdG9yYWdlRm9yT3JpZ2lucyk6CisgICAgICAgIChX
ZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpnZXRMb2NhbFN0b3JhZ2VPcmlnaW5zKToKKyAgICAg
ICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXJTZXQ6OmRlbGV0ZUxvY2FsU3RvcmFnZU1vZGlmaWVk
U2luY2UpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlclNldDo6ZGVsZXRlTG9jYWxT
dG9yYWdlRm9yT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0Ojpn
ZXRMb2NhbFN0b3JhZ2VPcmlnaW5EZXRhaWxzKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1h
bmFnZXJTZXQ6OmNvbm5lY3RUb0xvY2FsU3RvcmFnZUFyZWEpOgorICAgICAgICAoV2ViS2l0OjpT
dG9yYWdlTWFuYWdlclNldDo6Y29ubmVjdFRvVHJhbnNpZW50TG9jYWxTdG9yYWdlQXJlYSk6Cisg
ICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0Ojpjb25uZWN0VG9TZXNzaW9uU3RvcmFn
ZUFyZWEpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlclNldDo6ZGlzY29ubmVjdEZy
b21TdG9yYWdlQXJlYSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpnZXRW
YWx1ZXMpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlclNldDo6c2V0SXRlbSk6Cisg
ICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpyZW1vdmVJdGVtKToKKyAgICAgICAg
KFdlYktpdDo6U3RvcmFnZU1hbmFnZXJTZXQ6OmNsZWFyKToKKyAgICAgICAgKFdlYktpdDo6U3Rv
cmFnZU1hbmFnZXJTZXQ6OmNsb25lU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQuaDogQWRkZWQuCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldC5tZXNz
YWdlcy5pbjogQWRkZWQuCisKKyAgICAgICAgKiBTaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFt
ZXRlcnMuY3BwOiBjcmVhdGlvbiBwYXJhbWV0ZXJzIG9mIFN0b3JhZ2VNYW5hZ2VyIGFyZSBtb3Zl
ZCB0byAKKyAgICAgICAgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuCisgICAgICAgIChXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKFdl
YktpdDo6V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM6OnByaXZhdGVTZXNzaW9uUGFyYW1ldGVy
cyk6CisgICAgICAgICogU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmg6CisgICAg
ICAgICogU291cmNlcy50eHQ6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0
LmNwcDogYWRkIFNQSSBmb3IgdGVzdHMuCisgICAgICAgIChXS0NvbnRleHRTeW5jTG9jYWxTdG9y
YWdlKToKKyAgICAgICAgKFdLQ29udGV4dENsZWFyTGVnYWN5UHJpdmF0ZUJyb3dzaW5nTG9jYWxT
dG9yYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0UHJpdmF0ZS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwOgorICAg
ICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlTG9jYWxTdG9yYWdlKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6
OmVuc3VyZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6
OnN5bmNMb2NhbFN0b3JhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6Y2xl
YXJMZWdhY3lQcml2YXRlQnJvd3NpbmdMb2NhbFN0b3JhZ2UpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2Nv
YS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmU6OnBhcmFtZXRlcnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cGFy
YW1ldGVycyk6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDog
c2Vzc2lvbiBjaGFuZ2Ugb2Ygd2ViIHN0b3JhZ2UgaXMgZG9uZSB2aWEgCisgICAgICAgIFdlYlN0
b3JhZ2VOYW1lc3BhY2VQcm92aWRlciBpbnN0ZWFkIG9mIFdlYlByb2Nlc3Mgbm93LgorICAgICAg
ICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDogd2ViIHByb2Nlc3Mgbm8gbG9uZ2Vy
IHNlbmRzIG1lc3NzYWdlcyBhYm91dCBwYWdlIHN0YXRlIHRvIG5ldHdvcmsgcHJvY2Vzcy4KKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6Y3JlYXRlV2ViUGFnZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3M6OnJlbW92ZVdlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzOjplbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzOjpuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25DbG9zZWQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzOjpzdG9yYWdlQXJlYU1hcCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3M6OmVuYWJsZVByaXZhdGVCcm93c2luZ0ZvclRlc3RpbmcpOiBEZWxldGVkLiBU
aGlzIHdhcyB1c2VkIGZvciBjaGFuZ2luZyBzZXNzaW9uIHZpYSAKKyAgICAgICAgV2ViUHJvY2Vz
cy4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3Rv
cmFnZUFyZWFJbXBsOjpTdG9yYWdlQXJlYUltcGwpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdl
QXJlYUltcGw6Omxlbmd0aCk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1wbDo6a2V5
KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFJbXBsOjppdGVtKToKKyAgICAgICAgKFdl
YktpdDo6U3RvcmFnZUFyZWFJbXBsOjpzZXRJdGVtKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFn
ZUFyZWFJbXBsOjpyZW1vdmVJdGVtKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFJbXBs
OjpjbGVhcik6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1wbDo6Y29udGFpbnMpOgor
ICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYUltcGw6OnN0b3JhZ2VUeXBlIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFJbXBsOjppbmNyZW1lbnRBY2Nlc3NDb3VudCk6Cisg
ICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1wbDo6ZGVjcmVtZW50QWNjZXNzQ291bnQpOgor
ICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYUltcGw6OnByZXdhcm0pOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYUltcGw6OnNlY3VyaXR5T3JpZ2luIGNvbnN0KTogRGVs
ZXRlZC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwu
aDogbWFrZSBTdG9yYWdlQXJlYUltcGwgaG9sZCBhIHdlYWsgcmVmZXJlbmNlIHRvIFN0b3JhZ2VB
cmVhTWFwIGFuZCAKKyAgICAgICAgU3RvcmFnZU5hbWVzcGFjZUltcGwgaG9sZCBhIHN0cm9uZyBy
ZWZlcmVuY2UuIEluIHRoaXMgd2F5IGxpZmVpbWUgb2YgbG9jYWxTdG9yYWdlIFN0b3JhZ2VBcmVy
YU1hcCBzdGF5cyBhbGlnbiAKKyAgICAgICAgd2l0aCBTdG9yYWdlTmFtZVNwYWNlUHJvdmlkZXIg
YW5kIFBhZ2UuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFN
YXAuY3BwOiBpZGVudGlmaWVyIG9mIFN0b3JhZ2VBcmVhTWFwIGlzIHRoZSBzYW1lIGFzIGlkZW50
aWZpZXIgb2YgCisgICAgICAgIFN0b3JhZ2VBcmVhIGl0IGNvbm5lY3RzIHRvLiBJZiB0aGUgaWRl
bnRpZmllciBpcyAwLCBpdCBtZWFucyB0aGUgU3RvcmFnZUFyZWFNYXAgaXMgZGlzY29ubmVjdGVk
LgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6U3RvcmFnZUFyZWFNYXApOgorICAg
ICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6flN0b3JhZ2VBcmVhTWFwKToKKyAgICAgICAg
KFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OnNldEl0ZW0pOgorICAgICAgICAoV2ViS2l0OjpTdG9y
YWdlQXJlYU1hcDo6cmVtb3ZlSXRlbSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhTWFw
OjpjbGVhcik6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwOjpyZXNldFZhbHVlcyk6
CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwOjpsb2FkVmFsdWVzSWZOZWVkZWQpOgor
ICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6YXBwbHlDaGFuZ2UpOgorICAgICAgICAo
V2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6ZGlzcGF0Y2hTdG9yYWdlRXZlbnQpOgorICAgICAgICAo
V2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6ZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50KToKKyAg
ICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OmRpc3BhdGNoTG9jYWxTdG9yYWdlRXZlbnQp
OgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6Y29ubmVjdCk6CisgICAgICAgIChX
ZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwOjpkaXNjb25uZWN0KToKKyAgICAgICAgKFdlYktpdDo6Z2Vu
ZXJhdGVTdG9yYWdlTWFwSUQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJl
YU1hcDo6cHJld2FybSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhTWFw
OjpkaWRHZXRWYWx1ZXMpOiBEZWxldGVkLiBUaGlzIGlzIHVzZWxlc3MgYXMgR2V0VmFsdWVzIGlz
IGEgc3luY2hyb25vdXMgb3BlcmF0aW9uLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViU3RvcmFn
ZS9TdG9yYWdlQXJlYU1hcC5oOgorICAgICAgICAoKTogRGVsZXRlZC4KKworICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5tZXNzYWdlcy5pbjogdGhlcmUgYXJl
IHR3byBzeW5jaHJvbm91cyBtZXNzYWdlcywgb25lIGZvciBjb25uZWN0aW9uIGFuZCAKKyAgICAg
ICAgb25lIGZvciBnZXR0aW5nIHZhbHVlcy4gV2UgbWF5IG1lcmdlIHRoZW0gaW50byBvbmUgaW4g
ZnV0dXJlIGltcHJvdmVtZW50LgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9y
YWdlTmFtZXNwYWNlSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJ
bXBsOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJLaXQ6OlN0
b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOgorICAgICAg
ICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9y
YWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUltcGw6OlN0
b3JhZ2VOYW1lc3BhY2VJbXBsKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUlt
cGw6OnN0b3JhZ2VBcmVhKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUltcGw6
OmNvcHkpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6c2V0U2Vzc2lv
bklERm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpj
cmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOiBEZWxldGVkLgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVNlc3Np
b25TdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViS2l0
OjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFn
ZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
cjo6Y3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmg6
CisKIDIwMTktMDgtMTQgIEx1bWluZyBZaW4gIDxsdW1pbmdfeWluQGFwcGxlLmNvbT4KIAogICAg
ICAgICB2MzogQ3Jhc2hUcmFjZXI6IFJlZ3Jlc3Npb24gOiBNb2JpbGVTYWZhcmkgYXQgVUlLaXRD
b3JlOiAtW1VJVGFyZ2V0ZWRQcmV2aWV3IGluaXRXaXRoVmlldzpwYXJhbWV0ZXJzOl0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9DaGFuZ2VMb2cKaW5kZXggNGM1MWU5NjVmNjgyNmJlYzNlZTkyZTc1Mjk1ODdlMWIxYjJkMDQz
YS4uNTJlYjlkOWQxNDY4NTA3YTY2NTBkZGVhNDAzMDgxMmJiMzg5YWYzNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAxOS0wOC0xNCAgU2lodWkgTGl1ICA8c2lodWlf
bGl1QGFwcGxlLmNvbT4KKworICAgICAgICBTb21lIGltcHJvdmVtZW50cyBvbiB3ZWIgc3RvcmFn
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwMzcz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAgICAgICAgRG8gc29t
ZSBjbGVhbi11cCBhbmQgYWRkIHN1cHBvcnQgZm9yIHNlc3Npb24gY2hhbmdlIG9mIHdlYiBzdG9y
YWdlIGluIGxheW91dCB0ZXN0cy4KKworICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBs
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFJbXBsOjpzZXNzaW9uQ2hhbmdlZCk6
CisgICAgICAgICogU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuaDoKKyAgICAgICAgKCk6IERlbGV0
ZWQuCisKKyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5oOiBtYWtlIHN1cmUgU3Rv
cmFnZUFyZWFTeW5jIGlzIGRlc3RydWN0ZWQgb24gdGhlIG1haW4gdGhyZWFkLCBhcyBpdCBjYW4g
YmUgCisgICAgICAgIGRlcmVmZXJlbmNlZCBpbiBTdG9yYWdlQXJlYUltcGw6OnNlc3Npb25DaGFu
Z2VkIGFuZCBpdHMgbGFzdCByZWZlcmVuY2UgZm9yIGZpbmFsIHN5bmMgY291bGQgYmUgcmVsZWFz
ZWQgb24gdGhlIAorICAgICAgICBiYWNrZ3JvdW5kIHRocmVhZC4KKworICAgICAgICAqIFN0b3Jh
Z2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwOiByZXBsYWNlIEVwaGVtZXJhbExvY2FsU3RvcmFn
ZSB3aXRoIExvY2FsU3RvcmFnZSwgYW5kIHN0b3JlIFNlc3Npb25JRCBpbiAKKyAgICAgICAgU3Rv
cmFnZU5hbWVzcGFjZS4KKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUltcGw6OmNy
ZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5h
bWVzcGFjZUltcGw6OmdldE9yQ3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAg
KFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUltcGw6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsKToKKyAg
ICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUltcGw6OmNvcHkpOgorICAgICAgICAoV2Vi
S2l0OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpTdG9y
YWdlTmFtZXNwYWNlSW1wbDo6c2V0U2Vzc2lvbklERm9yVGVzdGluZyk6CisgICAgICAgIChXZWJL
aXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1l
c3BhY2UpOiBEZWxldGVkLgorICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwu
aDoKKyAgICAgICAgKiBTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlU2Vzc2lv
blN0b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdl
TmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVy
OjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOiBEZWxldGVkLgorICAgICAg
ICAqIFN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmg6CisKIDIwMTktMDgtMTIg
IFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBJREIt
c3BlY2lmaWMgcXVvdGEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA4OWVlM2NiZTQ3
NjdhZWU2NTUyMTY2OTU2MGVjZGU4ZWQxMDZhMjdlLi40YmI0MTUxYWIyODM0MmE2YTE5MGIzMzBh
OTcwNzU5ZjkzNjNjNzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTMgQEAKKzIwMTktMDgtMTQgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAg
ICAgICAgU29tZSBpbXByb3ZlbWVudHMgb24gd2ViIHN0b3JhZ2UKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDM3MworCisgICAgICAgIFJldmlld2Vk
IGJ5IEdlb2ZmcmV5IEdhcmVuLgorCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAg
ICAgICAoLVtXZWJWaWV3IF9wcmVmZXJlbmNlc0NoYW5nZWQ6XSk6IG5vdGlmeSBzdG9yYWdlTmFt
ZXNwYWNlUHJvdmlkZXIgYWJvdXQgc2Vzc2lvbiBjaGFuZ2UuCisKIDIwMTktMDgtMTQgIFlvdWVu
biBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFRocmVhZGFibGVCbG9iUmVn
aXN0cnk6OmJsb2JTaXplIHNob3VsZCB0YWtlIGEgU2Vzc2lvbklEIGFzIHBhcmFtZXRlcgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAppbmRleCBjNDUwYzA4NzBjMGRiOTAwMmI5
MDRjN2I2Y2JjZTRjOTY5MDJjNmRjLi4wNDUzZDdlNmQ5ZTM2NTYwMmFjOWFiZDk5OWI0ZTJmYWIx
MzJhZGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApAQCAtMzkwLDE4
ICszOTAsMTkgQEAgY2xhc3MgRW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgZmluYWwgOiBw
dWJsaWMgU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyIHsKICAgICAgICAgYm9vbCBjb250YWlucyhj
b25zdCBTdHJpbmcmKSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICBTdG9yYWdlVHlw
ZSBzdG9yYWdlVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFN0b3JhZ2VUeXBlOjpMb2NhbDsg
fQogICAgICAgICBzaXplX3QgbWVtb3J5Qnl0ZXNVc2VkQnlDYWNoZSgpIGZpbmFsIHsgcmV0dXJu
IDA7IH0KLSAgICAgICAgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbigp
IGNvbnN0IGZpbmFsIHsgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNlY3VyaXR5T3JpZ2luRGF0YT4g
b3JpZ2luOyByZXR1cm4gb3JpZ2luLmdldCgpOyB9CiAgICAgfTsKIAogICAgIHN0cnVjdCBFbXB0
eVN0b3JhZ2VOYW1lc3BhY2UgZmluYWwgOiBwdWJsaWMgU3RvcmFnZU5hbWVzcGFjZSB7CiAgICAg
ICAgIFJlZjxTdG9yYWdlQXJlYT4gc3RvcmFnZUFyZWEoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRh
JikgZmluYWwgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBFbXB0eVN0b3JhZ2VBcmVhKTsgfQogICAg
ICAgICBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gY29weShQYWdlKikgZmluYWwgeyByZXR1cm4gYWRv
cHRSZWYoKm5ldyBFbXB0eVN0b3JhZ2VOYW1lc3BhY2UpOyB9CisgICAgICAgIFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJuIFBBTDo6U2Vzc2lvbklEOjplbXB0eVNlc3Np
b25JRCgpOyB9CisgICAgICAgIHZvaWQgc2V0U2Vzc2lvbklERm9yVGVzdGluZyhQQUw6OlNlc3Np
b25JRCkgeyB9OwogICAgIH07CiAKICAgICBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlU2Vz
c2lvblN0b3JhZ2VOYW1lc3BhY2UoUGFnZSYsIHVuc2lnbmVkKSBmaW5hbDsKLSAgICBSZWY8U3Rv
cmFnZU5hbWVzcGFjZT4gY3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkKSBmaW5h
bDsKLSAgICBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdl
TmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCkgZmluYWw7Ci0gICAgUmVmPFN0b3JhZ2VOYW1lc3Bh
Y2U+IGNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYs
IHVuc2lnbmVkKSBmaW5hbDsKKyAgICBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlTG9jYWxT
dG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkLCBQQUw6OlNlc3Npb25JRCkgZmluYWw7CisgICAgUmVm
PFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShT
ZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkLCBQQUw6OlNlc3Npb25JRCkgZmluYWw7CisKIH07CiAK
IGNsYXNzIEVtcHR5VXNlckNvbnRlbnRQcm92aWRlciBmaW5hbCA6IHB1YmxpYyBVc2VyQ29udGVu
dFByb3ZpZGVyIHsKQEAgLTUyNSwxNyArNTI2LDEyIEBAIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBF
bXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3Bh
CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRW1wdHlTdG9yYWdlTmFtZXNwYWNlKTsKIH0KIAot
UmVmPFN0b3JhZ2VOYW1lc3BhY2U+IEVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVh
dGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgRW1wdHlTdG9yYWdlTmFtZXNwYWNlKTsKLX0KLQotUmVmPFN0b3JhZ2VOYW1lc3BhY2U+
IEVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UoUGFnZSYsIHVuc2lnbmVkKQorUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IEVtcHR5
U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5z
aWduZWQsIFBBTDo6U2Vzc2lvbklEKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEVtcHR5
U3RvcmFnZU5hbWVzcGFjZSk7CiB9CiAKLVJlZjxTdG9yYWdlTmFtZXNwYWNlPiBFbXB0eVN0b3Jh
Z2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNl
KFNlY3VyaXR5T3JpZ2luJiwgdW5zaWduZWQpCitSZWY8U3RvcmFnZU5hbWVzcGFjZT4gRW1wdHlT
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVz
cGFjZShTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkLCBQQUw6OlNlc3Npb25JRCkKIHsKICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBFbXB0eVN0b3JhZ2VOYW1lc3BhY2UpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9D
aHJvbWUuY3BwCmluZGV4IDk3NTgzMjliYTkwOWNkOTEzY2FiNDY4NWQ3MWFlOWRhNGZjMzVjYTYu
LjczZmVlMDdkOWExNTQ5MjVhNTFhNjdlMjRjNTM1MTllMTM3MjY3MGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0No
cm9tZS5jcHAKQEAgLTE4OSw4ICsxODksNiBAQCBQYWdlKiBDaHJvbWU6OmNyZWF0ZVdpbmRvdyhG
cmFtZSYgZnJhbWUsIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0CiAKICAg
ICBpZiAoYXV0byogb2xkU2Vzc2lvblN0b3JhZ2UgPSBtX3BhZ2Uuc2Vzc2lvblN0b3JhZ2UoZmFs
c2UpKQogICAgICAgICBuZXdQYWdlLT5zZXRTZXNzaW9uU3RvcmFnZShvbGRTZXNzaW9uU3RvcmFn
ZS0+Y29weShuZXdQYWdlKSk7Ci0gICAgaWYgKGF1dG8qIG9sZEVwaGVtZXJhbExvY2FsU3RvcmFn
ZSA9IG1fcGFnZS5lcGhlbWVyYWxMb2NhbFN0b3JhZ2UoZmFsc2UpKQotICAgICAgICBuZXdQYWdl
LT5zZXRFcGhlbWVyYWxMb2NhbFN0b3JhZ2Uob2xkRXBoZW1lcmFsTG9jYWxTdG9yYWdlLT5jb3B5
KG5ld1BhZ2UpKTsKIAogICAgIHJldHVybiBuZXdQYWdlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5k
b3cuY3BwCmluZGV4IDE3Y2JhNWU0ZmY0ZTJiNWJjODg4MWEyNzBhNDM4Y2Q4YTU0MzU2NzIuLjMw
NzRiMThlZTM2ZTQxMDYwZGMyMmU5YTQzZDUxODhlZDQyODNiYzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVdpbmRvdy5jcHAKQEAgLTQ0Miw4ICs0NDIsNyBAQCB2b2lkIERPTVdpbmRvdzo6cHJld2FybUxv
Y2FsU3RvcmFnZUlmTmVjZXNzYXJ5KCkKICAgICBpZiAoIWxvY2FsU3RvcmFnZSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgaWYgKGxvY2FsU3RvcmFnZS0+cHJld2FybSgpKQotICAgICAgICBwYWdl
LT5tYWluRnJhbWUoKS5kaWRQcmV3YXJtTG9jYWxTdG9yYWdlKCk7CisgICAgcGFnZS0+bWFpbkZy
YW1lKCkuZGlkUHJld2FybUxvY2FsU3RvcmFnZSgpOwogfQogCiBET01XaW5kb3c6On5ET01XaW5k
b3coKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggNGQ0YTQ5YzczMWE0Y2FmNDZlZGU2MTE1NzdjYjM5
ZTZiZmZmMGEyMi4uMzk1ZDJmMDEyMzNjYjk4OWU3ZWY1NTVjYzcxOGJlOTQ4OTY3MTJkOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuY3BwCkBAIC0yODksNyArMjg5LDYgQEAgUGFnZTo6UGFnZShQYWdlQ29uZmln
dXJhdGlvbiYmIHBhZ2VDb25maWd1cmF0aW9uKQogICAgIHVwZGF0ZVRpbWVyVGhyb3R0bGluZ1N0
YXRlKCk7CiAKICAgICBtX3BsdWdpbkluZm9Qcm92aWRlci0+YWRkUGFnZSgqdGhpcyk7Ci0gICAg
bV9zdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXItPmFkZFBhZ2UoKnRoaXMpOwogICAgIG1fdXNlckNv
bnRlbnRQcm92aWRlci0+YWRkUGFnZSgqdGhpcyk7CiAgICAgbV92aXNpdGVkTGlua1N0b3JlLT5h
ZGRQYWdlKCp0aGlzKTsKIApAQCAtMzY3LDcgKzM2Niw2IEBAIFBhZ2U6On5QYWdlKCkKICNlbmRp
ZgogCiAgICAgbV9wbHVnaW5JbmZvUHJvdmlkZXItPnJlbW92ZVBhZ2UoKnRoaXMpOwotICAgIG1f
c3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLT5yZW1vdmVQYWdlKCp0aGlzKTsKICAgICBtX3VzZXJD
b250ZW50UHJvdmlkZXItPnJlbW92ZVBhZ2UoKnRoaXMpOwogICAgIG1fdmlzaXRlZExpbmtTdG9y
ZS0+cmVtb3ZlUGFnZSgqdGhpcyk7CiB9CkBAIC0xNTEwLDE5ICsxNTA4LDYgQEAgdm9pZCBQYWdl
OjpzZXRTZXNzaW9uU3RvcmFnZShSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4mJiBuZXdTdG9yYWdl
KQogICAgIG1fc2Vzc2lvblN0b3JhZ2UgPSBXVEZNb3ZlKG5ld1N0b3JhZ2UpOwogfQogCi1TdG9y
YWdlTmFtZXNwYWNlKiBQYWdlOjplcGhlbWVyYWxMb2NhbFN0b3JhZ2UoYm9vbCBvcHRpb25hbENy
ZWF0ZSkKLXsKLSAgICBpZiAoIW1fZXBoZW1lcmFsTG9jYWxTdG9yYWdlICYmIG9wdGlvbmFsQ3Jl
YXRlKQotICAgICAgICBtX2VwaGVtZXJhbExvY2FsU3RvcmFnZSA9IG1fc3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyLT5jcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoKnRoaXMsIG1f
c2V0dGluZ3MtPnNlc3Npb25TdG9yYWdlUXVvdGEoKSk7Ci0KLSAgICByZXR1cm4gbV9lcGhlbWVy
YWxMb2NhbFN0b3JhZ2UuZ2V0KCk7Ci19Ci0KLXZvaWQgUGFnZTo6c2V0RXBoZW1lcmFsTG9jYWxT
dG9yYWdlKFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiYmIG5ld1N0b3JhZ2UpCi17Ci0gICAgbV9l
cGhlbWVyYWxMb2NhbFN0b3JhZ2UgPSBXVEZNb3ZlKG5ld1N0b3JhZ2UpOwotfQotCiBib29sIFBh
Z2U6Omhhc0N1c3RvbUhUTUxUb2tlbml6ZXJUaW1lRGVsYXkoKSBjb25zdAogewogICAgIHJldHVy
biBtX3NldHRpbmdzLT5tYXhQYXJzZUR1cmF0aW9uKCkgIT0gLTE7CkBAIC0yNDcwLDE1ICsyNDU1
LDYgQEAgdm9pZCBQYWdlOjpzZXRVc2VyQ29udGVudFByb3ZpZGVyKFJlZjxVc2VyQ29udGVudFBy
b3ZpZGVyPiYmIHVzZXJDb250ZW50UHJvdmlkZXIKICAgICBpbnZhbGlkYXRlSW5qZWN0ZWRTdHls
ZVNoZWV0Q2FjaGVJbkFsbEZyYW1lcygpOwogfQogCi12b2lkIFBhZ2U6OnNldFN0b3JhZ2VOYW1l
c3BhY2VQcm92aWRlcihSZWY8U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyPiYmIHN0b3JhZ2VOYW1l
c3BhY2VQcm92aWRlcikKLXsKLSAgICBtX3N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci0+cmVtb3Zl
UGFnZSgqdGhpcyk7Ci0gICAgbV9zdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgPSBXVEZNb3ZlKHN0
b3JhZ2VOYW1lc3BhY2VQcm92aWRlcik7Ci0gICAgbV9zdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIt
PmFkZFBhZ2UoKnRoaXMpOwotCi0gICAgLy8gVGhpcyBuZWVkcyB0byByZXNldCBhbGwgdGhlIGxv
Y2FsIHN0b3JhZ2UgbmFtZXNwYWNlcyBvZiBhbGwgdGhlIHBhZ2VzLgotfQotCiBWaXNpdGVkTGlu
a1N0b3JlJiBQYWdlOjp2aXNpdGVkTGlua1N0b3JlKCkKIHsKICAgICByZXR1cm4gbV92aXNpdGVk
TGlua1N0b3JlOwpAQCAtMjUwNyw2ICsyNDgzLDkgQEAgdm9pZCBQYWdlOjpzZXRTZXNzaW9uSUQo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgICAgICBtX2lkYkNvbm5lY3Rpb25Ub1NlcnZl
ciA9IG51bGxwdHI7CiAjZW5kaWYKIAorICAgIGlmIChzZXNzaW9uSUQgIT0gbV9zZXNzaW9uSUQg
JiYgbV9zZXNzaW9uU3RvcmFnZSkKKyAgICAgICAgbV9zZXNzaW9uU3RvcmFnZS0+c2V0U2Vzc2lv
bklERm9yVGVzdGluZyhzZXNzaW9uSUQpOworCiAgICAgYm9vbCBwcml2YXRlQnJvd3NpbmdTdGF0
ZUNoYW5nZWQgPSAoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkgIT0gbV9zZXNzaW9uSUQuaXNFcGhl
bWVyYWwoKSk7CiAKICAgICBtX3Nlc3Npb25JRCA9IHNlc3Npb25JRDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5k
ZXggYzQ0MDIzNDQzYzg1NmRhMjJiMGU0MTlmOGZjNWYyNjUyZjg2MmZlNy4uN2M4NjUwMjMxMGYx
MWRkM2FhMGM5ZDYxNjllMzg1OGU5MzJlYTk0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTUwNyw5ICs1
MDcsNiBAQCBwdWJsaWM6CiAgICAgU3RvcmFnZU5hbWVzcGFjZSogc2Vzc2lvblN0b3JhZ2UoYm9v
bCBvcHRpb25hbENyZWF0ZSA9IHRydWUpOwogICAgIHZvaWQgc2V0U2Vzc2lvblN0b3JhZ2UoUmVm
UHRyPFN0b3JhZ2VOYW1lc3BhY2U+JiYpOwogCi0gICAgU3RvcmFnZU5hbWVzcGFjZSogZXBoZW1l
cmFsTG9jYWxTdG9yYWdlKGJvb2wgb3B0aW9uYWxDcmVhdGUgPSB0cnVlKTsKLSAgICB2b2lkIHNl
dEVwaGVtZXJhbExvY2FsU3RvcmFnZShSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4mJik7Ci0KICAg
ICBib29sIGhhc0N1c3RvbUhUTUxUb2tlbml6ZXJUaW1lRGVsYXkoKSBjb25zdDsKICAgICBkb3Vi
bGUgY3VzdG9tSFRNTFRva2VuaXplclRpbWVEZWxheSgpIGNvbnN0OwogCkBAIC01OTksNyArNTk2
LDYgQEAgcHVibGljOgogICAgIENvb2tpZUphciYgY29va2llSmFyKCkgeyByZXR1cm4gbV9jb29r
aWVKYXIuZ2V0KCk7IH0KIAogICAgIFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciYgc3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyKCkgeyByZXR1cm4gbV9zdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuZ2V0
KCk7IH0KLSAgICB2b2lkIHNldFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcihSZWY8U3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyPiYmKTsKIAogICAgIFBsdWdpbkluZm9Qcm92aWRlciYgcGx1Z2luSW5m
b1Byb3ZpZGVyKCk7CiAKQEAgLTg3Nyw3ICs4NzMsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9j
YW5TdGFydE1lZGlhIHsgdHJ1ZSB9OwogCiAgICAgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IG1f
c2Vzc2lvblN0b3JhZ2U7Ci0gICAgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IG1fZXBoZW1lcmFs
TG9jYWxTdG9yYWdlOwogCiAgICAgVGltZXJUaHJvdHRsaW5nU3RhdGUgbV90aW1lclRocm90dGxp
bmdTdGF0ZSB7IFRpbWVyVGhyb3R0bGluZ1N0YXRlOjpEaXNhYmxlZCB9OwogICAgIE1vbm90b25p
Y1RpbWUgbV90aW1lclRocm90dGxpbmdTdGF0ZUxhc3RDaGFuZ2VkVGltZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL1N0b3JhZ2UuY3BwCmluZGV4IDkxOTdiNjBlN2U2YTE1NWM0NDY4ZDUyOTRmYWIyNTBjODY3
OTg3ZmYuLjQ3ZGJiMTdkOWFlNmQyNjljMTQ3MDNhMWE2MmE0OTJlZTY2ZGY0MTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9TdG9yYWdlLmNwcApAQCAtOTcsMTEgKzk3LDYgQEAgRXhjZXB0aW9uT3I8dm9p
ZD4gU3RvcmFnZTo6cmVtb3ZlSXRlbShjb25zdCBTdHJpbmcmIGtleSkKICAgICByZXR1cm4geyB9
OwogfQogCi1ib29sIFN0b3JhZ2U6OnByZXdhcm0oKQotewotICAgIHJldHVybiBtX3N0b3JhZ2VB
cmVhLT5wcmV3YXJtKCk7Ci19Ci0KIEV4Y2VwdGlvbk9yPHZvaWQ+IFN0b3JhZ2U6OmNsZWFyKCkK
IHsKICAgICBhdXRvKiBmcmFtZSA9IHRoaXMtPmZyYW1lKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFn
ZS5oCmluZGV4IDUyMTVmNDdjMzc3ZmY3NTY0ZGFhMWU0NmVlZjc5NDRkMzA4NWY2MTEuLjI4YWE5
YWIxNGUxYjIyYWNjNWJjNWI0ZjZlMWM4NGMxYTk3NGY2NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3Rv
cmFnZS5oCkBAIC00Niw3ICs0Niw2IEBAIHB1YmxpYzoKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBy
ZW1vdmVJdGVtKGNvbnN0IFN0cmluZyYga2V5KTsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBjbGVh
cigpOwogICAgIGJvb2wgY29udGFpbnMoY29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0OwotICAgIGJv
b2wgcHJld2FybSgpOwogCiAgICAgLy8gQmluZGluZ3Mgc3VwcG9ydCBmdW5jdGlvbnMuCiAgICAg
Ym9vbCBpc1N1cHBvcnRlZFByb3BlcnR5TmFtZShjb25zdCBTdHJpbmcmKSBjb25zdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWEuaCBiL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWEuaAppbmRleCBmMzljY2Q3ZTZkYWNkZmY1NmFlN2RmNjYw
ZGQ5N2I1ZmY1MjY0NmQ0Li41YTlmZmZmOWE2MjYwODc4NTA3ZWQ5MWQ3MjUyZjY0ZmUxZmI0YjNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYS5oCkBAIC01OCw5ICs1OCw2IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgaW5jcmVtZW50QWNjZXNzQ291bnQoKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgZGVjcmVtZW50QWNjZXNzQ291bnQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
Y2xvc2VEYXRhYmFzZUlmSWRsZSgpIHsgfQotICAgIHZpcnR1YWwgYm9vbCBwcmV3YXJtKCkgeyBy
ZXR1cm4gZmFsc2U7IH0KLQotICAgIHZpcnR1YWwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBz
ZWN1cml0eU9yaWdpbigpIGNvbnN0ID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZS5oIGIv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlLmgKaW5kZXggNTVjNjYyODJi
OGJkNjhiYzA0NzgyZGY0N2NhZGVkMGMyMTI5NGI0OC4uMTNjMjEyNWE5OGUxMTc3ZDI1YmQ0MzY5
OTliOWE1MDBlOWQ4NmUwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9y
YWdlTmFtZXNwYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNw
YWNlLmgKQEAgLTI4LDYgKzI4LDEwIEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCituYW1lc3BhY2UgUEFMIHsKK2NsYXNzIFNlc3Npb25J
RDsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBQYWdlOwpAQCAtMzksNiArNDMs
OSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+U3RvcmFnZU5hbWVzcGFjZSgpID0gZGVmYXVsdDsK
ICAgICB2aXJ0dWFsIFJlZjxTdG9yYWdlQXJlYT4gc3RvcmFnZUFyZWEoY29uc3QgU2VjdXJpdHlP
cmlnaW5EYXRhJikgPSAwOwogICAgIHZpcnR1YWwgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNvcHko
UGFnZSogbmV3UGFnZSkgPSAwOworCisgICAgdmlydHVhbCBQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQoKSBjb25zdCA9IDA7CisJdmlydHVhbCB2b2lkIHNldFNlc3Npb25JREZvclRlc3RpbmcoUEFM
OjpTZXNzaW9uSUQpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcAppbmRl
eCA1OTM5YWZmZDNlYjJmOGVlZDQ2YmY2MmJhYjRiMTVhZWI1ZTk1ZWRmLi42YzVhOGRlMDUyNGM2
MGFkN2IxYjFhNjE1ZTQ2Njk1M2IwMGVlYTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCkBAIC00MywyMSArNDMsNiBAQCBT
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcigpCiAKIFN0
b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6flN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcigpCiB7Ci0g
ICAgQVNTRVJUKG1fcGFnZXMuaXNFbXB0eSgpKTsKLX0KLQotdm9pZCBTdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXI6OmFkZFBhZ2UoUGFnZSYgcGFnZSkKLXsKLSAgICBBU1NFUlQoIW1fcGFnZXMuY29u
dGFpbnMoJnBhZ2UpKTsKLQotICAgIG1fcGFnZXMuYWRkKCZwYWdlKTsKLX0KLQotdm9pZCBTdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXI6OnJlbW92ZVBhZ2UoUGFnZSYgcGFnZSkKLXsKLSAgICBBU1NF
UlQobV9wYWdlcy5jb250YWlucygmcGFnZSkpOwotCi0gICAgbV9wYWdlcy5yZW1vdmUoJnBhZ2Up
OwogfQogCiBSZWY8U3RvcmFnZUFyZWE+IFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6bG9jYWxT
dG9yYWdlQXJlYShEb2N1bWVudCYgZG9jdW1lbnQpCkBAIC02NiwzNiArNTEsNDcgQEAgUmVmPFN0
b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmxvY2FsU3RvcmFnZUFyZWEoRG9j
dW1lbnQmIGRvY3VtZW50KQogICAgIC8vIHNvIHRoZSBEb2N1bWVudCBoYWQgYmV0dGVyIHN0aWxs
IGFjdHVhbGx5IGhhdmUgYSBQYWdlLgogICAgIEFTU0VSVChkb2N1bWVudC5wYWdlKCkpOwogCi0g
ICAgYm9vbCBlcGhlbWVyYWwgPSBkb2N1bWVudC5wYWdlKCktPnVzZXNFcGhlbWVyYWxTZXNzaW9u
KCk7CiAgICAgYm9vbCB0cmFuc2llbnQgPSAhZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKS5jYW5B
Y2Nlc3NMb2NhbFN0b3JhZ2UoJmRvY3VtZW50LnRvcE9yaWdpbigpKTsKIAogICAgIFJlZlB0cjxT
dG9yYWdlTmFtZXNwYWNlPiBzdG9yYWdlTmFtZXNwYWNlOwogCiAgICAgaWYgKHRyYW5zaWVudCkK
LSAgICAgICAgc3RvcmFnZU5hbWVzcGFjZSA9ICZ0cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2UoZG9jdW1lbnQudG9wT3JpZ2luKCkpOwotICAgIGVsc2UgaWYgKGVwaGVtZXJhbCkKLSAgICAg
ICAgc3RvcmFnZU5hbWVzcGFjZSA9IGRvY3VtZW50LnBhZ2UoKS0+ZXBoZW1lcmFsTG9jYWxTdG9y
YWdlKCk7CisgICAgICAgIHN0b3JhZ2VOYW1lc3BhY2UgPSAmdHJhbnNpZW50TG9jYWxTdG9yYWdl
TmFtZXNwYWNlKGRvY3VtZW50LnRvcE9yaWdpbigpLCBkb2N1bWVudC5wYWdlKCktPnNlc3Npb25J
RCgpKTsKICAgICBlbHNlCi0gICAgICAgIHN0b3JhZ2VOYW1lc3BhY2UgPSAmbG9jYWxTdG9yYWdl
TmFtZXNwYWNlKCk7CisgICAgICAgIHN0b3JhZ2VOYW1lc3BhY2UgPSAmbG9jYWxTdG9yYWdlTmFt
ZXNwYWNlKGRvY3VtZW50LnBhZ2UoKS0+c2Vzc2lvbklEKCkpOwogCiAgICAgcmV0dXJuIHN0b3Jh
Z2VOYW1lc3BhY2UtPnN0b3JhZ2VBcmVhKGRvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgp
KTsKIH0KIAotU3RvcmFnZU5hbWVzcGFjZSYgU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpsb2Nh
bFN0b3JhZ2VOYW1lc3BhY2UoKQorU3RvcmFnZU5hbWVzcGFjZSYgU3RvcmFnZU5hbWVzcGFjZVBy
b3ZpZGVyOjpsb2NhbFN0b3JhZ2VOYW1lc3BhY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQog
ewogICAgIGlmICghbV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2UpCi0gICAgICAgIG1fbG9jYWxTdG9y
YWdlTmFtZXNwYWNlID0gY3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKGxvY2FsU3RvcmFnZURh
dGFiYXNlUXVvdGFJbkJ5dGVzKTsKKyAgICAgICAgbV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2UgPSBj
cmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UobG9jYWxTdG9yYWdlRGF0YWJhc2VRdW90YUluQnl0
ZXMsIHNlc3Npb25JRCk7CiAKKyAgICBBU1NFUlQobV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPnNl
c3Npb25JRCgpID09IHNlc3Npb25JRCk7CiAgICAgcmV0dXJuICptX2xvY2FsU3RvcmFnZU5hbWVz
cGFjZTsKIH0KIAotU3RvcmFnZU5hbWVzcGFjZSYgU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjp0
cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoU2VjdXJpdHlPcmlnaW4mIHNlY3VyaXR5T3Jp
Z2luKQorU3RvcmFnZU5hbWVzcGFjZSYgU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjp0cmFuc2ll
bnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoU2VjdXJpdHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2luLCBQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7Ci0gICAgYXV0byYgc2xvdCA9IG1fdHJhbnNpZW50
TG9jYWxTdG9yYWdlTWFwLmFkZCgmc2VjdXJpdHlPcmlnaW4sIG51bGxwdHIpLml0ZXJhdG9yLT52
YWx1ZTsKKyAgICBhdXRvJiBzbG90ID0gbV90cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2Vz
LmFkZChzZWN1cml0eU9yaWdpbi5kYXRhKCksIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAg
ICBpZiAoIXNsb3QpCi0gICAgICAgIHNsb3QgPSBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VO
YW1lc3BhY2Uoc2VjdXJpdHlPcmlnaW4sIGxvY2FsU3RvcmFnZURhdGFiYXNlUXVvdGFJbkJ5dGVz
KTsKKyAgICAgICAgc2xvdCA9IGNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShz
ZWN1cml0eU9yaWdpbiwgbG9jYWxTdG9yYWdlRGF0YWJhc2VRdW90YUluQnl0ZXMsIHNlc3Npb25J
RCk7CiAKKyAgICBBU1NFUlQoc2xvdC0+c2Vzc2lvbklEKCkgPT0gc2Vzc2lvbklEKTsKICAgICBy
ZXR1cm4gKnNsb3Q7CiB9CiAKK3ZvaWQgU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjplbmFibGVM
ZWdhY3lQcml2YXRlQnJvd3NpbmdGb3JUZXN0aW5nKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBhdXRv
IG5ld1Nlc3Npb25JRCA9IGVuYWJsZWQgPyBQQUw6OlNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNl
c3Npb25JRCgpIDogUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKTsKKyAgICBpZiAo
bV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2UgJiYgbmV3U2Vzc2lvbklEICE9IG1fbG9jYWxTdG9yYWdl
TmFtZXNwYWNlLT5zZXNzaW9uSUQoKSkKKyAgICAgICAgbV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2Ut
PnNldFNlc3Npb25JREZvclRlc3RpbmcobmV3U2Vzc2lvbklEKTsKKyAgICAKKyAgICBmb3IgKGF1
dG8mIHRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSA6IG1fdHJhbnNpZW50TG9jYWxTdG9y
YWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkgeworICAgICAgICBpZiAobmV3U2Vzc2lvbklEICE9IHRy
YW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZS0+c2Vzc2lvbklEKCkpCisgICAgICAgICAgICBt
X2xvY2FsU3RvcmFnZU5hbWVzcGFjZS0+c2V0U2Vzc2lvbklERm9yVGVzdGluZyhuZXdTZXNzaW9u
SUQpOworICAgIH0KK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9T
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyLmgKaW5kZXggZGQ3ZjlhNDZiZDg0NzkyNDljNzRkMmE0YzIyNDUy
OTY0ZTY3YWVjZC4uMDFkMDY0YjRhNjFkMDY3NjBkYzg3YWZlNzFjODM5ZWEwMmY3ODg3ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5o
CkBAIC0zMSw2ICszMSwxMCBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KIAorbmFtZXNwYWNlIFBBTCB7CitjbGFzcyBTZXNzaW9uSUQ7Cit9
CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7CkBAIC00NSwyNyArNDks
MjMgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgflN0b3JhZ2VOYW1lc3Bh
Y2VQcm92aWRlcigpOwogCiAgICAgdmlydHVhbCBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRl
U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoUGFnZSYsIHVuc2lnbmVkIHF1b3RhKSA9IDA7Ci0gICAg
dmlydHVhbCBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdl
TmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCBxdW90YSkgPSAwOwogCiAgICAgUmVmPFN0b3JhZ2VB
cmVhPiBsb2NhbFN0b3JhZ2VBcmVhKERvY3VtZW50Jik7CiAKLSAgICB2b2lkIGFkZFBhZ2UoUGFn
ZSYpOwotICAgIHZvaWQgcmVtb3ZlUGFnZShQYWdlJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBlbmFibGVMZWdhY3lQcml2YXRlQnJvd3NpbmdGb3JUZXN0aW5nKGJvb2wgZW5hYmxlZCk7CiAK
IHByb3RlY3RlZDoKICAgICBTdG9yYWdlTmFtZXNwYWNlKiBvcHRpb25hbExvY2FsU3RvcmFnZU5h
bWVzcGFjZSgpIHsgcmV0dXJuIG1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlLmdldCgpOyB9CiAKIHBy
aXZhdGU6Ci0gICAgU3RvcmFnZU5hbWVzcGFjZSYgbG9jYWxTdG9yYWdlTmFtZXNwYWNlKCk7Ci0g
ICAgU3RvcmFnZU5hbWVzcGFjZSYgdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFNlY3Vy
aXR5T3JpZ2luJik7Ci0KLSAgICB2aXJ0dWFsIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVM
b2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEpID0gMDsKLSAgICB2aXJ0dWFsIFJl
ZjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2Uo
U2VjdXJpdHlPcmlnaW4mLCB1bnNpZ25lZCBxdW90YSkgPSAwOworICAgIFN0b3JhZ2VOYW1lc3Bh
Y2UmIGxvY2FsU3RvcmFnZU5hbWVzcGFjZShQQUw6OlNlc3Npb25JRCk7CisgICAgU3RvcmFnZU5h
bWVzcGFjZSYgdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFNlY3VyaXR5T3JpZ2luJiwg
UEFMOjpTZXNzaW9uSUQpOwogCi0gICAgSGFzaFNldDxQYWdlKj4gbV9wYWdlczsKKyAgICB2aXJ0
dWFsIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5z
aWduZWQgcXVvdGEsIFBBTDo6U2Vzc2lvbklEKSA9IDA7CisgICAgdmlydHVhbCBSZWY8U3RvcmFn
ZU5hbWVzcGFjZT4gY3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFNlY3VyaXR5
T3JpZ2luJiwgdW5zaWduZWQgcXVvdGEsIFBBTDo6U2Vzc2lvbklEKSA9IDA7CiAKICAgICBSZWZQ
dHI8U3RvcmFnZU5hbWVzcGFjZT4gbV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2U7Ci0gICAgSGFzaE1h
cDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4+IG1fdHJh
bnNpZW50TG9jYWxTdG9yYWdlTWFwOworICAgIEhhc2hNYXA8U2VjdXJpdHlPcmlnaW5EYXRhLCBS
ZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4+IG1fdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNl
czsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvU3RvcmFnZVR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFn
ZVR5cGUuaAppbmRleCA1ODEzM2Y4OWNjYTcxZGMzNTBlZjcyODVhNzBhNzMwYTI5NjJhNmUyLi5m
ZTcwMDI1N2JhY2I0OWFmZGRmZjQ1NjQyYTYzZDQyOGQ3NDBmODljIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9TdG9yYWdlVHlwZS5oCkBAIC0zMCwxMyArMzAsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogZW51bSBjbGFzcyBTdG9yYWdlVHlwZSB7CiAgICAgU2Vzc2lvbiwKICAgICBMb2NhbCwKLSAg
ICBFcGhlbWVyYWxMb2NhbCwKICAgICBUcmFuc2llbnRMb2NhbCwKIH07CiAKIGlubGluZSBib29s
IGlzTG9jYWxTdG9yYWdlKFN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlKQogewotICAgIHJldHVybiBz
dG9yYWdlVHlwZSA9PSBTdG9yYWdlVHlwZTo6TG9jYWwgfHwgc3RvcmFnZVR5cGUgPT0gU3RvcmFn
ZVR5cGU6OlRyYW5zaWVudExvY2FsIHx8IHN0b3JhZ2VUeXBlID09IFN0b3JhZ2VUeXBlOjpFcGhl
bWVyYWxMb2NhbDsKKyAgICByZXR1cm4gc3RvcmFnZVR5cGUgPT0gU3RvcmFnZVR5cGU6OkxvY2Fs
IHx8IHN0b3JhZ2VUeXBlID09IFN0b3JhZ2VUeXBlOjpUcmFuc2llbnRMb2NhbDsKIH0KIAogaW5s
aW5lIGJvb2wgaXNQZXJzaXN0ZW50TG9jYWxTdG9yYWdlKFN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJL
aXQvQ01ha2VMaXN0cy50eHQKaW5kZXggNmY3OWM4NjQ3YTYxMmRjMDRhMDJhYWM4MjNkNzQ5NTg0
NGQ0YzkyMS4uZDg4YWE4M2IyYTU0ZmYyYTg0MmEyYTVmYzU0NmQ4NzE0ODU1MmFiOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L0NN
YWtlTGlzdHMudHh0CkBAIC0xMTgsNyArMTE4LDcgQEAgc2V0KFdlYktpdF9NRVNTQUdFU19JTl9G
SUxFUwogICAgIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0
aW9uLm1lc3NhZ2VzLmluCiAgICAgTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KIAotICAgIE5ldHdvcmtQcm9jZXNz
L1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIubWVzc2FnZXMuaW4KKyAgICBOZXR3b3JrUHJvY2Vz
cy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0Lm1lc3NhZ2VzLmluCiAKICAgICBOZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlz
dCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCAw
ZmI4NDIzYjVjY2NmN2QyNjMzOTQyNWNkN2E3M2Y0YjJjMGQyZTg5Li4yZTQ3NjYwODU0MDNkNDIw
N2YyYmYxNzJlOTljNzg0NjkwYTljY2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2
ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291
cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC0yNSw3ICsyNSw3IEBAICQoUFJPSkVDVF9ESVIpL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9E
SVIpL05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5t
ZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3Nh
Z2VzLmluCi0kKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VN
YW5hZ2VyLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VNYW5hZ2VyU2V0Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAk
KFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9tYWMvY29tLmFwcGxlLldlYktpdC5OZXR3b3Jr
UHJvY2Vzcy5zYi5pbgogJChQUk9KRUNUX0RJUikvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdv
cmtNRE5TUmVnaXN0ZXIubWVzc2FnZXMuaW4KQEAgLTgzLDcgKzgzLDYgQEAgJChQUk9KRUNUX0RJ
UikvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvVUlQ
cm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCi0kKFBST0pFQ1RfRElSKS9VSVByb2Nlc3Mv
V2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvVUlQ
cm9jZXNzL2lvcy9FZGl0YWJsZUltYWdlQ29udHJvbGxlci5tZXNzYWdlcy5pbgogJChQUk9KRUNU
X0RJUikvVUlQcm9jZXNzL2lvcy9TbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLm1lc3NhZ2Vz
LmluCiAkKFBST0pFQ1RfRElSKS9VSVByb2Nlc3MvbWFjL1NlY0l0ZW1TaGltUHJveHkubWVzc2Fn
ZXMuaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0Lnhj
ZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0
CmluZGV4IGZlMGE2YzAwNDAyYzUzNTU0MDU0NTE0OTFkNGQ4ZGY3NDQ3M2M3OTMuLmJkOWRkN2Y2
MzNjMTdiY2YyOTkwODc3ZjFkZTNhYWU0YThmYjQ3YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9E
ZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtODgsOCArODgsOCBAQCAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9TbWFydE1hZ25pZmljYXRpb25D
b250cm9sbGVyTWVzc2FnZQogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YktpdDIvU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VzLmgKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1N0b3JhZ2VBcmVhTWFwTWVzc2FnZVJl
Y2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIv
U3RvcmFnZUFyZWFNYXBNZXNzYWdlcy5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi9TdG9yYWdlTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAKLSQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1N0b3JhZ2VNYW5hZ2VyTWVzc2Fn
ZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvU3RvcmFn
ZU1hbmFnZXJTZXRNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViS2l0Mi9TdG9yYWdlTWFuYWdlclNldE1lc3NhZ2VzLmgKICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1RleHRDaGVja2luZ0NvbnRyb2xs
ZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyL1RleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eU1lc3NhZ2VzLmgKICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1VzZXJNZWRpYUNhcHR1
cmVNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9E
ZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCmlu
ZGV4IDUzOTNjNWJkN2YwOTc5NDUwMDJmMTAzMjJlZmNlMDUzMTYzMmMzZmYuLjlkZTcwNDI2NmFm
ZWU1MTM2ZTY1ZTg0NzgxYjVhMDI1MjUxNTdhYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
RGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1h
a2UKQEAgLTEzNiw3ICsxMzYsNyBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKICAgICBTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrIFwKICAgICBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyIFwKICAg
ICBTdG9yYWdlQXJlYU1hcCBcCi0gICAgU3RvcmFnZU1hbmFnZXIgXAorICAgIFN0b3JhZ2VNYW5h
Z2VyU2V0IFwKICAgICBUZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkgXAogICAgIFVzZXJNZWRp
YUNhcHR1cmVNYW5hZ2VyIFwKICAgICBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5IFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggMWYxMDA0ZTFiNWJjZDM5ZDhiMTIyZGY4YzZk
YTQ4ZDEzN2M0YmU2MS4uMWZhOGQ5ZWZmNTIzZDQwZjA4NzkwMjk4MGE2OTZhZTk2YTBhYmYwNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTQ5LDcgKzQ5LDYgQEAKICNpbmNsdWRl
ICJQaW5nTG9hZC5oIgogI2luY2x1ZGUgIlByZWNvbm5lY3RUYXNrLmgiCiAjaW5jbHVkZSAiU2Vy
dmljZVdvcmtlckZldGNoVGFza01lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiU3RvcmFnZU1hbmFnZXIu
aCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJFcnJv
cnMuaCIKICNpbmNsdWRlICJXZWJJREJDb25uZWN0aW9uVG9DbGllbnQuaCIKQEAgLTI5OSw3ICsy
OTgsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRDbG9zZShJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiAgICAgLy8gcm9vdCBhY3Rpdml0eSB0cmFja2Vycy4K
ICAgICBzdG9wQWxsTmV0d29ya0FjdGl2aXR5VHJhY2tpbmcoKTsKIAotICAgIG1fbmV0d29ya1By
b2Nlc3MtPndlYlByb2Nlc3NXYXNEaXNjb25uZWN0ZWQoY29ubmVjdGlvbik7CisgICAgbV9uZXR3
b3JrUHJvY2Vzcy0+Y29ubmVjdGlvblRvV2ViUHJvY2Vzc0Nsb3NlZChjb25uZWN0aW9uKTsKIAog
ICAgIG1fbmV0d29ya1Byb2Nlc3MtPnJlbW92ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
KCp0aGlzKTsKIApAQCAtOTE1LDE5ICs5MTQsNCBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjplc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24oUEFMOjpTZXNzaW9uSUQgcwog
fQogI2VuZGlmCiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OndlYlBhZ2VX
YXNBZGRlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgb2xkUGFnZUlEKQotewotICAgIG1fbmV0d29ya1Byb2Nl
c3MtPndlYlBhZ2VXYXNBZGRlZChtX2Nvbm5lY3Rpb24uZ2V0KCksIHNlc3Npb25JRCwgcGFnZUlE
LCBvbGRQYWdlSUQpOwotfQotCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp3
ZWJQYWdlV2FzUmVtb3ZlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFBhZ2VJZGVudGlmaWVy
IHBhZ2VJRCkKLXsKLSAgICBtX25ldHdvcmtQcm9jZXNzLT53ZWJQYWdlV2FzUmVtb3ZlZChtX2Nv
bm5lY3Rpb24uZ2V0KCksIHNlc3Npb25JRCwgcGFnZUlEKTsKLX0KLQotdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6d2ViUHJvY2Vzc1Nlc3Npb25DaGFuZ2VkKFBBTDo6U2Vzc2lv
bklEIG5ld1Nlc3Npb25JRCwgY29uc3QgVmVjdG9yPFBhZ2VJZGVudGlmaWVyPiYgcGFnZXMpCi17
Ci0gICAgbV9uZXR3b3JrUHJvY2Vzcy0+d2ViUHJvY2Vzc1Nlc3Npb25DaGFuZ2VkKG1fY29ubmVj
dGlvbi5nZXQoKSwgbmV3U2Vzc2lvbklELCBwYWdlcyk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IDkyODY3MzNjNGI3Yzc1MTJjMjljNTMy
NDM4MjFkMGVlMWVjNzEzMDkuLmQ0MDRhNTY5MmIzMWJhOGI2M2Y2MTU4ZjU1MzMzZmY0Y2I0Yjc5
NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTE0MCwxMCArMTQwLDYgQEAgcHVibGlj
OgogCiAgICAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBy
ZXNvbHZlQmxvYlJlZmVyZW5jZXMoY29uc3QgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMm
KTsKIAotICAgIHZvaWQgd2ViUGFnZVdhc0FkZGVkKFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgb2xkUGFnZUlEKTsKLSAgICB2
b2lkIHdlYlBhZ2VXYXNSZW1vdmVkKFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpQYWdlSWRlbnRp
Zmllcik7Ci0gICAgdm9pZCB3ZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQoUEFMOjpTZXNzaW9uSUQg
bmV3U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+JiBwYWdl
cyk7Ci0KICAgICB2b2lkIHJlbW92ZVNvY2tldENoYW5uZWwodWludDY0X3QgaWRlbnRpZmllcik7
CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpp
bmRleCA0YjExODliMzljY2ViYzhmYjIyNmY4ZmVlMDM0MjhjNmM4NWFkN2EzLi5mYTk3OTMzYzRh
OTE5YTA2MDE3NmM5ZjY5ZWQxM2Y0ZjM5OTJlYmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTg2LDggKzg2LDQgQEAgbWVzc2FnZXMgLT4gTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKICAgICBFc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24oUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklEKSAtPiAoV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBz
ZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcikgU3luY2hyb25vdXMKICNlbmRpZgotCi0gICAgV2Vi
UGFnZVdhc0FkZGVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIgcGFnZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBvbGRQYWdlSUQpCi0gICAgV2Vi
UGFnZVdhc1JlbW92ZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciBwYWdlSUQpCi0gICAgV2ViUHJvY2Vzc1Nlc3Npb25DaGFuZ2VkKFBBTDo6U2Vzc2lv
bklEIG5ld1Nlc3Npb25JRCwgVmVjdG9yPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlcykK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAK
aW5kZXggZTU0YTU0ZmVlNzQ4M2JmMTJkMmE5NGNhNGE2ZDljODJmNWIzOWJlMy4uMGNlN2RjMDlh
NDE2YTAwZjhiYjJmNWIwMTM4ZTkwZjIzMzZjNmYxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTUzLDggKzUzLDcgQEAKICNpbmNs
dWRlICJTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MuaCIKICNpbmNsdWRlICJTdGF0aXN0aWNz
RGF0YS5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBY2Nlc3NTdGF0dXMuaCIKLSNpbmNsdWRlICJTdG9y
YWdlTWFuYWdlci5oIgotI2luY2x1ZGUgIlN0b3JhZ2VNYW5hZ2VyTWVzc2FnZXMuaCIKKyNpbmNs
dWRlICJTdG9yYWdlTWFuYWdlclNldC5oIgogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXIuaCIK
ICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQ
b29sTWVzc2FnZXMuaCIKQEAgLTEzMyw2ICsxMzIsNyBAQCBzdGF0aWMgdm9pZCBjYWxsRXhpdFNv
b24oSVBDOjpDb25uZWN0aW9uKikKIAogTmV0d29ya1Byb2Nlc3M6Ok5ldHdvcmtQcm9jZXNzKEF1
eGlsaWFyeVByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAg
IDogbV9kb3dubG9hZE1hbmFnZXIoKnRoaXMpCisgICAgLCBtX3N0b3JhZ2VNYW5hZ2VyU2V0KFN0
b3JhZ2VNYW5hZ2VyU2V0OjpjcmVhdGUoKSkKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05T
KQogICAgICwgbV9uZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcigqdGhpcykKICNlbmRpZgpA
QCAtMzM2LDYgKzMzNiw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmluaXRpYWxpemVOZXR3b3Jr
UHJvY2VzcyhOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYmCiAjZW5kaWYKICAgICBp
bml0aWFsaXplU3RvcmFnZVF1b3RhKHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRl
cnMpOwogCisgICAgbV9zdG9yYWdlTWFuYWdlclNldC0+YWRkKHNlc3Npb25JRCwgcGFyYW1ldGVy
cy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnksIHBhcmFt
ZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0
ZW5zaW9uSGFuZGxlKTsKKwogICAgIGF1dG8qIGRlZmF1bHRTZXNzaW9uID0gbmV0d29ya1Nlc3Np
b24oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CiAgICAgYXV0byogZGVmYXVs
dFN0b3JhZ2VTZXNzaW9uID0gZGVmYXVsdFNlc3Npb24tPm5ldHdvcmtTdG9yYWdlU2Vzc2lvbigp
OwogICAgIGZvciAoY29uc3QgYXV0byYgY29va2llIDogcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0
b3JlUGFyYW1ldGVycy5wZW5kaW5nQ29va2llcykKQEAgLTQ0Nyw2ICs0NDksOCBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpjcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyhib29sIGlz
U2VydmljZVdvcmtlclBybwogICAgIFVOVVNFRF9QQVJBTShpc1NlcnZpY2VXb3JrZXJQcm9jZXNz
KTsKICAgICBVTlVTRURfUEFSQU0ocmVnaXN0cmFibGVEb21haW4pOwogI2VuZGlmCisKKyAgICBt
X3N0b3JhZ2VNYW5hZ2VyU2V0LT5hZGRDb25uZWN0aW9uKG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25z
Lmxhc3QoKS0+Y29ubmVjdGlvbigpKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2xlYXJD
YWNoZWRDcmVkZW50aWFscygpCkBAIC00NjksNiArNDczLDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
czo6YWRkV2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYmIHBhcmFt
ZXRlcnMKICAgICAgICAgYWRkU2VydmljZVdvcmtlclNlc3Npb24ocGFyYW1ldGVycy5uZXR3b3Jr
U2Vzc2lvblBhcmFtZXRlcnMuc2Vzc2lvbklELCBwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25EaXJlY3RvcnksIHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRp
cmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAjZW5kaWYKIAorICAgIG1fc3RvcmFnZU1hbmFnZXJT
ZXQtPmFkZChwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5zZXNzaW9uSUQsIHBh
cmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURp
cmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CisKICAgICBpbml0aWFsaXplU3RvcmFnZVF1b3RhKHBh
cmFtZXRlcnMpOwogCiAgICAgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVdlYnNpdGVE
YXRhU3RvcmVTZXNzaW9uKCp0aGlzLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKQEAgLTYwOSw2ICs2
MTUsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZXN0cm95U2Vzc2lvbihjb25zdCBQQUw6OlNl
c3Npb25JRCYgc2Vzc2lvbklEKQogICAgIG1fc3dEYXRhYmFzZVBhdGhzLnJlbW92ZShzZXNzaW9u
SUQpOwogI2VuZGlmCiAKKyAgICBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5yZW1vdmUoc2Vzc2lvbklE
KTsKKwogICAgIG1fc3RvcmFnZVF1b3RhTWFuYWdlcnMucmVtb3ZlKHNlc3Npb25JRCk7CiB9CiAK
QEAgLTEwNTAsOCArMTA1OCw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNsZWFyVXNlckludGVy
YWN0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0CiAKIHZvaWQgTmV0
d29ya1Byb2Nlc3M6Omhhc0xvY2FsU3RvcmFnZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3
b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIHNlc3Npb24tPnN0b3JhZ2VNYW5hZ2Vy
KCkuZ2V0TG9jYWxTdG9yYWdlT3JpZ2lucyhbZG9tYWluLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvJiYgb3JpZ2lucykgbXV0YWJsZSB7CisgICAg
aWYgKG1fc3RvcmFnZU1hbmFnZXJTZXQtPmNvbnRhaW5zKHNlc3Npb25JRCkpIHsKKyAgICAgICAg
bV9zdG9yYWdlTWFuYWdlclNldC0+Z2V0TG9jYWxTdG9yYWdlT3JpZ2lucyhzZXNzaW9uSUQsIFtk
b21haW4sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1
dG8mJiBvcmlnaW5zKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdU
Rjo6YW55T2Yob3JpZ2lucywgWyZkb21haW5dKGF1dG8mIG9yaWdpbikgewogICAgICAgICAgICAg
ICAgIHJldHVybiBkb21haW4ubWF0Y2hlcyhvcmlnaW4pOwogICAgICAgICAgICAgfSkpOwpAQCAt
MTM0MCwxNiArMTM0OCwxNSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpmZXRjaFdlYnNpdGVEYXRh
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdAogICAgICAgICB9KTsK
ICAgICB9CiAKLSAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsK
LSAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlNlc3Np
b25TdG9yYWdlKSAmJiBzZXNzaW9uKSB7Ci0gICAgICAgIHNlc3Npb24tPnN0b3JhZ2VNYW5hZ2Vy
KCkuZ2V0U2Vzc2lvblN0b3JhZ2VPcmlnaW5zKFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFj
a0FnZ3JlZ2F0b3IuY29weVJlZigpXShhdXRvJiYgb3JpZ2lucykgeworICAgIGlmICh3ZWJzaXRl
RGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6U2Vzc2lvblN0b3JhZ2UpICYmIG1f
c3RvcmFnZU1hbmFnZXJTZXQtPmNvbnRhaW5zKHNlc3Npb25JRCkpIHsKKyAgICAgICAgbV9zdG9y
YWdlTWFuYWdlclNldC0+Z2V0U2Vzc2lvblN0b3JhZ2VPcmlnaW5zKHNlc3Npb25JRCwgW2NhbGxi
YWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldKGF1dG8mJiBvcmln
aW5zKSB7CiAgICAgICAgICAgICB3aGlsZSAoIW9yaWdpbnMuaXNFbXB0eSgpKQogICAgICAgICAg
ICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVuZChX
ZWJzaXRlRGF0YTo6RW50cnkgeyBvcmlnaW5zLnRha2VBbnkoKSwgV2Vic2l0ZURhdGFUeXBlOjpT
ZXNzaW9uU3RvcmFnZSwgMCB9KTsKICAgICAgICAgfSk7CiAgICAgfQogCi0gICAgaWYgKHdlYnNp
dGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpMb2NhbFN0b3JhZ2UpICYmIHNl
c3Npb24pIHsKLSAgICAgICAgc2Vzc2lvbi0+c3RvcmFnZU1hbmFnZXIoKS5nZXRMb2NhbFN0b3Jh
Z2VPcmlnaW5zKFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJl
ZigpXShhdXRvJiYgb3JpZ2lucykgeworICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5z
KFdlYnNpdGVEYXRhVHlwZTo6TG9jYWxTdG9yYWdlKSAmJiBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5j
b250YWlucyhzZXNzaW9uSUQpKSB7CisgICAgICAgIG1fc3RvcmFnZU1hbmFnZXJTZXQtPmdldExv
Y2FsU3RvcmFnZU9yaWdpbnMoc2Vzc2lvbklELCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJh
Y2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0oYXV0byYmIG9yaWdpbnMpIHsKICAgICAgICAgICAgIHdo
aWxlICghb3JpZ2lucy5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdh
dG9yLT5tX3dlYnNpdGVEYXRhLmVudHJpZXMuYXBwZW5kKFdlYnNpdGVEYXRhOjpFbnRyeSB7IG9y
aWdpbnMudGFrZUFueSgpLCBXZWJzaXRlRGF0YVR5cGU6OkxvY2FsU3RvcmFnZSwgMCB9KTsKICAg
ICAgICAgfSk7CkBAIC0xNDI0LDEyICsxNDMxLDExIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRl
bGV0ZVdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNp
CiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpET01D
YWNoZSkpCiAgICAgICAgIENhY2hlU3RvcmFnZTo6RW5naW5lOjpjbGVhckFsbENhY2hlcygqdGhp
cywgc2Vzc2lvbklELCBbY2xlYXJUYXNrc0hhbmRsZXIgPSBjbGVhclRhc2tzSGFuZGxlci5jb3B5
UmVmKCldIHsgfSk7CiAKLSAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lv
bklEKTsKLSAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6
OlNlc3Npb25TdG9yYWdlKSAmJiBzZXNzaW9uKQotICAgICAgICBzZXNzaW9uLT5zdG9yYWdlTWFu
YWdlcigpLmRlbGV0ZVNlc3Npb25TdG9yYWdlT3JpZ2lucyhbY2xlYXJUYXNrc0hhbmRsZXIgPSBj
bGVhclRhc2tzSGFuZGxlci5jb3B5UmVmKCldIHsgfSk7CisgICAgaWYgKHdlYnNpdGVEYXRhVHlw
ZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpTZXNzaW9uU3RvcmFnZSkgJiYgbV9zdG9yYWdl
TWFuYWdlclNldC0+Y29udGFpbnMoc2Vzc2lvbklEKSkKKyAgICAgICAgbV9zdG9yYWdlTWFuYWdl
clNldC0+ZGVsZXRlU2Vzc2lvblN0b3JhZ2Uoc2Vzc2lvbklELCBbY2xlYXJUYXNrc0hhbmRsZXIg
PSBjbGVhclRhc2tzSGFuZGxlci5jb3B5UmVmKCldIHsgfSk7CiAKLSAgICBpZiAod2Vic2l0ZURh
dGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkxvY2FsU3RvcmFnZSkgJiYgc2Vzc2lv
bikKLSAgICAgICAgc2Vzc2lvbi0+c3RvcmFnZU1hbmFnZXIoKS5kZWxldGVMb2NhbFN0b3JhZ2VP
cmlnaW5zTW9kaWZpZWRTaW5jZShtb2RpZmllZFNpbmNlLCBbY2xlYXJUYXNrc0hhbmRsZXIgPSBj
bGVhclRhc2tzSGFuZGxlci5jb3B5UmVmKCldIHsgfSk7CisgICAgaWYgKHdlYnNpdGVEYXRhVHlw
ZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpMb2NhbFN0b3JhZ2UpICYmIG1fc3RvcmFnZU1h
bmFnZXJTZXQtPmNvbnRhaW5zKHNlc3Npb25JRCkpCisgICAgICAgIG1fc3RvcmFnZU1hbmFnZXJT
ZXQtPmRlbGV0ZUxvY2FsU3RvcmFnZU1vZGlmaWVkU2luY2Uoc2Vzc2lvbklELCBtb2RpZmllZFNp
bmNlLCBbY2xlYXJUYXNrc0hhbmRsZXIgPSBjbGVhclRhc2tzSGFuZGxlci5jb3B5UmVmKCldIHsg
fSk7CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICBpZiAod2Vic2l0ZURhdGFU
eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykgJiYgIXNl
c3Npb25JRC5pc0VwaGVtZXJhbCgpKQpAQCAtMTUyNCwxMiArMTUzMCwxMSBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBPcHRpbwogICAgICAgICAgICAgQ2FjaGVTdG9yYWdlOjpFbmdpbmU6OmNsZWFyQ2Fj
aGVzRm9yT3JpZ2luKCp0aGlzLCBzZXNzaW9uSUQsIFNlY3VyaXR5T3JpZ2luRGF0YSB7IG9yaWdp
bkRhdGEgfSwgW2NsZWFyVGFza3NIYW5kbGVyID0gY2xlYXJUYXNrc0hhbmRsZXIuY29weVJlZigp
XSB7IH0pOwogICAgIH0KIAotICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNz
aW9uSUQpOwotICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlw
ZTo6U2Vzc2lvblN0b3JhZ2UpICYmIHNlc3Npb24pCi0gICAgICAgIHNlc3Npb24tPnN0b3JhZ2VN
YW5hZ2VyKCkuZGVsZXRlU2Vzc2lvblN0b3JhZ2VFbnRyaWVzRm9yT3JpZ2lucyhvcmlnaW5EYXRh
cywgW2NsZWFyVGFza3NIYW5kbGVyID0gY2xlYXJUYXNrc0hhbmRsZXIuY29weVJlZigpXSB7IH0p
OworICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6U2Vz
c2lvblN0b3JhZ2UpICYmIG1fc3RvcmFnZU1hbmFnZXJTZXQtPmNvbnRhaW5zKHNlc3Npb25JRCkp
CisgICAgICAgIG1fc3RvcmFnZU1hbmFnZXJTZXQtPmRlbGV0ZVNlc3Npb25TdG9yYWdlRm9yT3Jp
Z2lucyhzZXNzaW9uSUQsIG9yaWdpbkRhdGFzLCBbY2xlYXJUYXNrc0hhbmRsZXIgPSBjbGVhclRh
c2tzSGFuZGxlci5jb3B5UmVmKCldIHsgfSk7CiAKLSAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5j
b250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkxvY2FsU3RvcmFnZSkgJiYgc2Vzc2lvbikKLSAgICAg
ICAgc2Vzc2lvbi0+c3RvcmFnZU1hbmFnZXIoKS5kZWxldGVMb2NhbFN0b3JhZ2VFbnRyaWVzRm9y
T3JpZ2lucyhvcmlnaW5EYXRhcywgW2NsZWFyVGFza3NIYW5kbGVyID0gY2xlYXJUYXNrc0hhbmRs
ZXIuY29weVJlZigpXSB7IH0pOworICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdl
YnNpdGVEYXRhVHlwZTo6TG9jYWxTdG9yYWdlKSAmJiBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5jb250
YWlucyhzZXNzaW9uSUQpKQorICAgICAgICBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5kZWxldGVMb2Nh
bFN0b3JhZ2VGb3JPcmlnaW5zKHNlc3Npb25JRCwgb3JpZ2luRGF0YXMsIFtjbGVhclRhc2tzSGFu
ZGxlciA9IGNsZWFyVGFza3NIYW5kbGVyLmNvcHlSZWYoKV0geyB9KTsKIAogI2lmIEVOQUJMRShJ
TkRFWEVEX0RBVEFCQVNFKQogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNp
dGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKSAmJiAhc2Vzc2lvbklELmlzRXBoZW1lcmFs
KCkpCkBAIC0xNzI2LDIwICsxNzMxLDE4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdl
YnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKFBBTDo6U2Vzc2lvbklEIHNlc3NpCiAgICAg
ICAgIH0pOwogICAgIH0KIAotICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNz
aW9uSUQpOwotICAgIGlmIChzZXNzaW9uKSB7Ci0gICAgICAgIGF1dG8mIHN0b3JhZ2VNYW5hZ2Vy
ID0gc2Vzc2lvbi0+c3RvcmFnZU1hbmFnZXIoKTsKKyAgICBpZiAobV9zdG9yYWdlTWFuYWdlclNl
dC0+Y29udGFpbnMoc2Vzc2lvbklEKSkgewogICAgICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5j
b250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlNlc3Npb25TdG9yYWdlKSkgewotICAgICAgICAgICAg
c3RvcmFnZU1hbmFnZXIuZ2V0U2Vzc2lvblN0b3JhZ2VPcmlnaW5zKFtzdG9yYWdlTWFuYWdlciA9
IG1ha2VSZWZQdHIoc3RvcmFnZU1hbmFnZXIpLCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFj
a0FnZ3JlZ2F0b3IuY29weVJlZigpLCBkb21haW5zVG9EZWxldGVBbGxCdXRDb29raWVzRm9yXShh
dXRvJiYgb3JpZ2lucykgeworICAgICAgICAgICAgbV9zdG9yYWdlTWFuYWdlclNldC0+Z2V0U2Vz
c2lvblN0b3JhZ2VPcmlnaW5zKHNlc3Npb25JRCwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgdGhpcywgc2Vzc2lvbklELCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3Jl
Z2F0b3IuY29weVJlZigpLCBkb21haW5zVG9EZWxldGVBbGxCdXRDb29raWVzRm9yXShhdXRvJiYg
b3JpZ2lucykgewogICAgICAgICAgICAgICAgIGF1dG8gb3JpZ2luc1RvRGVsZXRlID0gZmlsdGVy
Rm9yUmVnaXN0cmFibGVEb21haW5zKG9yaWdpbnMsIGRvbWFpbnNUb0RlbGV0ZUFsbEJ1dENvb2tp
ZXNGb3IsIGNhbGxiYWNrQWdncmVnYXRvci0+bV9kb21haW5zKTsKLSAgICAgICAgICAgICAgICBz
dG9yYWdlTWFuYWdlci0+ZGVsZXRlU2Vzc2lvblN0b3JhZ2VFbnRyaWVzRm9yT3JpZ2lucyhvcmln
aW5zVG9EZWxldGUsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29w
eVJlZigpXSB7IH0pOworICAgICAgICAgICAgICAgIG1fc3RvcmFnZU1hbmFnZXJTZXQtPmRlbGV0
ZVNlc3Npb25TdG9yYWdlRm9yT3JpZ2lucyhzZXNzaW9uSUQsIG9yaWdpbnNUb0RlbGV0ZSwgW2Nh
bGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CiAg
ICAgICAgICAgICB9KTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVz
LmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6TG9jYWxTdG9yYWdlKSkgewotICAgICAgICAgICAg
c3RvcmFnZU1hbmFnZXIuZ2V0TG9jYWxTdG9yYWdlT3JpZ2lucyhbc3RvcmFnZU1hbmFnZXIgPSBt
YWtlUmVmUHRyKHN0b3JhZ2VNYW5hZ2VyKSwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tB
Z2dyZWdhdG9yLmNvcHlSZWYoKSwgZG9tYWluc1RvRGVsZXRlQWxsQnV0Q29va2llc0Zvcl0oYXV0
byYmIG9yaWdpbnMpIHsKKyAgICAgICAgICAgIG1fc3RvcmFnZU1hbmFnZXJTZXQtPmdldExvY2Fs
U3RvcmFnZU9yaWdpbnMoc2Vzc2lvbklELCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCB0aGlzLCBzZXNzaW9uSUQsIGNhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRv
ci5jb3B5UmVmKCksIGRvbWFpbnNUb0RlbGV0ZUFsbEJ1dENvb2tpZXNGb3JdKGF1dG8mJiBvcmln
aW5zKSB7CiAgICAgICAgICAgICAgICAgYXV0byBvcmlnaW5zVG9EZWxldGUgPSBmaWx0ZXJGb3JS
ZWdpc3RyYWJsZURvbWFpbnMob3JpZ2lucywgZG9tYWluc1RvRGVsZXRlQWxsQnV0Q29va2llc0Zv
ciwgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX2RvbWFpbnMpOwotICAgICAgICAgICAgICAgIHN0b3Jh
Z2VNYW5hZ2VyLT5kZWxldGVMb2NhbFN0b3JhZ2VFbnRyaWVzRm9yT3JpZ2lucyhvcmlnaW5zVG9E
ZWxldGUsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigp
XSB7IH0pOworICAgICAgICAgICAgICAgIG1fc3RvcmFnZU1hbmFnZXJTZXQtPmRlbGV0ZUxvY2Fs
U3RvcmFnZUZvck9yaWdpbnMoc2Vzc2lvbklELCBvcmlnaW5zVG9EZWxldGUsIFtjYWxsYmFja0Fn
Z3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwogICAgICAgICAg
ICAgfSk7CiAgICAgICAgIH0KICAgICB9CkBAIC0yMTExLDkgKzIxMTQsNyBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzOjphY3R1YWxQcmVwYXJlVG9TdXNwZW5kKFNob3VsZEFja25vd2xlZGdlV2hlblJl
YWR5VG9TdXNwZW5kCiAgICAgfQogI2VuZGlmCiAKLSAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24o
WyZjYWxsYmFja0FnZ3JlZ2F0b3JdKGF1dG8mIHNlc3Npb24pIHsKLSAgICAgICAgc2Vzc2lvbi5z
dG9yYWdlTWFuYWdlcigpLnN1c3BlbmQoW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKLSAgICB9
KTsKKyAgICBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5zdXNwZW5kKFtjYWxsYmFja0FnZ3JlZ2F0b3Jd
IHsgfSk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnByb2Nlc3NXaWxsU3VzcGVuZEltbWlu
ZW50bHkoKQpAQCAtMjE4OSw5ICsyMTkwLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVzdW1l
KCkKICAgICAgICAgc2VydmVyLT5yZXN1bWUoKTsKICNlbmRpZgogCi0gICAgZm9yRWFjaE5ldHdv
cmtTZXNzaW9uKFtdKGF1dG8mIHNlc3Npb24pIHsKLSAgICAgICAgc2Vzc2lvbi5zdG9yYWdlTWFu
YWdlcigpLnJlc3VtZSgpOwotICAgIH0pOworICAgIG1fc3RvcmFnZU1hbmFnZXJTZXQtPnJlc3Vt
ZSgpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwcmVmZXRjaEROUyhjb25zdCBTdHJpbmcm
IGhvc3RuYW1lKQpAQCAtMjM4Niw2ICsyMzg1LDE4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmFk
ZEluZGV4ZWREYXRhYmFzZVNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcm
CiB9CiAjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKK3ZvaWQgTmV0d29ya1By
b2Nlc3M6OnN5bmNMb2NhbFN0b3JhZ2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQoreworICAgIG1fc3RvcmFnZU1hbmFnZXJTZXQtPndhaXRVbnRpbFN5bmNp
bmdMb2NhbFN0b3JhZ2VGaW5pc2hlZCgpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Cit9CisK
K3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmNsZWFyTGVnYWN5UHJpdmF0ZUJyb3dzaW5nTG9jYWxTdG9y
YWdlKCkKK3sKKyAgICBpZiAobV9zdG9yYWdlTWFuYWdlclNldC0+Y29udGFpbnMoUEFMOjpTZXNz
aW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSkpCisgICAgICAgIG1fc3RvcmFnZU1hbmFn
ZXJTZXQtPmRlbGV0ZUxvY2FsU3RvcmFnZU1vZGlmaWVkU2luY2UoUEFMOjpTZXNzaW9uSUQ6Omxl
Z2FjeVByaXZhdGVTZXNzaW9uSUQoKSwgLVdhbGxUaW1lOjppbmZpbml0eSgpLCBbXSgpIHsgfSk7
Cit9CisKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnVwZGF0ZVF1b3RhQmFzZWRPblNwYWNlVXNhZ2VG
b3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgQ2xpZW50T3JpZ2luJiBv
cmlnaW4pCiB7CiAgICAgYXV0byYgbWFuYWdlciA9IHN0b3JhZ2VRdW90YU1hbmFnZXIoc2Vzc2lv
bklELCBvcmlnaW4pOwpAQCAtMjY5Myw4MCArMjcwNCwyMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
OjpyZW1vdmVLZXB0QWxpdmVMb2FkKE5ldHdvcmtSZXNvdXJjZUxvYWRlciYgbG9hZGVyKQogICAg
ICAgICBzZXNzaW9uLT5yZW1vdmVLZXB0QWxpdmVMb2FkKGxvYWRlcik7CiB9CiAKLXZvaWQgTmV0
d29ya1Byb2Nlc3M6OndlYlBhZ2VXYXNBZGRlZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
IFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBQYWdlSWRl
bnRpZmllciBvbGRQYWdlSUQpCi17Ci0gICAgaWYgKCFwYWdlSUQgfHwgIW9sZFBhZ2VJRCkgewot
ICAgICAgICBMT0dfRVJST1IoIkNhbm5vdCBhZGQgcGFnZSB3aXRoIGludmFsaWQgaWQiKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lv
bihzZXNzaW9uSUQpOwotICAgIGlmICghc2Vzc2lvbikgewotICAgICAgICBMT0dfRVJST1IoIkNh
bm5vdCBhZGQgcGFnZSB0byBhbiB1bmtub3duIHNlc3Npb24iKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICBhdXRvJiBzdG9yYWdlTWFuYWdlciA9IHNlc3Npb24tPnN0b3JhZ2VNYW5hZ2Vy
KCk7Ci0KLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1fc2Vzc2lvbkJ5Q29ubmVjdGlvbi5hZGQoY29u
bmVjdGlvbi51bmlxdWVJRCgpLCBzZXNzaW9uSUQpOwotICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVz
dWx0LCBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID09IHNlc3Npb25JRCk7Ci0KLSAgICBzdG9y
YWdlTWFuYWdlci5jcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShwYWdlSUQudG9VSW50NjQo
KSwgc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKTsKLSAgICBzdG9yYWdlTWFu
YWdlci5hZGRBbGxvd2VkU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0aW9uKHBhZ2VJRC50
b1VJbnQ2NCgpLCBjb25uZWN0aW9uKTsKLSAgICBpZiAocGFnZUlEICE9IG9sZFBhZ2VJRCkKLSAg
ICAgICAgc3RvcmFnZU1hbmFnZXIuY2xvbmVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShvbGRQYWdl
SUQudG9VSW50NjQoKSwgcGFnZUlELnRvVUludDY0KCkpOwotfQotCi12b2lkIE5ldHdvcmtQcm9j
ZXNzOjp3ZWJQYWdlV2FzUmVtb3ZlZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQotewotICAgIGlmICgh
cGFnZUlEKSB7Ci0gICAgICAgIExPR19FUlJPUigiQ2Fubm90IHJlbW92ZSBwYWdlIHdpdGggaW52
YWxpZCBpZCIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgYXV0byogc2Vzc2lvbiA9
IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7Ci0gICAgLy8gU2Vzc2lvbiBjYW4gYmUgZGVzdHJv
eWVkIGJlZm9yZSBwYWdlIGdldHMgcmVtb3ZlZC4KLSAgICBpZiAoIXNlc3Npb24pCi0gICAgICAg
IHJldHVybjsKLQotICAgIGF1dG8mIHN0b3JhZ2VNYW5hZ2VyID0gc2Vzc2lvbi0+c3RvcmFnZU1h
bmFnZXIoKTsKLSAgICBzdG9yYWdlTWFuYWdlci5yZW1vdmVBbGxvd2VkU2Vzc2lvblN0b3JhZ2VO
YW1lc3BhY2VDb25uZWN0aW9uKHBhZ2VJRC50b1VJbnQ2NCgpLCBjb25uZWN0aW9uKTsKLSAgICBz
dG9yYWdlTWFuYWdlci5kZXN0cm95U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UocGFnZUlELnRvVUlu
dDY0KCkpOwotfQotCi12b2lkIE5ldHdvcmtQcm9jZXNzOjp3ZWJQcm9jZXNzV2FzRGlzY29ubmVj
dGVkKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKLXsKLSAgICBhdXRvIHNlc3Npb25JRCA9
IG1fc2Vzc2lvbkJ5Q29ubmVjdGlvbi50YWtlKGNvbm5lY3Rpb24udW5pcXVlSUQoKSk7Ci0gICAg
aWYgKCFzZXNzaW9uSUQuaXNWYWxpZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoYXV0
byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpCi0gICAgICAgIHNlc3Npb24t
PnN0b3JhZ2VNYW5hZ2VyKCkucHJvY2Vzc0RpZENsb3NlQ29ubmVjdGlvbihjb25uZWN0aW9uKTsK
LX0KLQotdm9pZCBOZXR3b3JrUHJvY2Vzczo6d2ViUHJvY2Vzc1Nlc3Npb25DaGFuZ2VkKElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgUEFMOjpTZXNzaW9uSUQgbmV3U2Vzc2lvbklELCBjb25z
dCBWZWN0b3I8UGFnZUlkZW50aWZpZXI+JiBwYWdlSURzKQotewotICAgIGF1dG8gY29ubmVjdGlv
bklEID0gY29ubmVjdGlvbi51bmlxdWVJRCgpOwotICAgIEFTU0VSVChtX3Nlc3Npb25CeUNvbm5l
Y3Rpb24uY29udGFpbnMoY29ubmVjdGlvbklEKSk7Ci0gICAgaWYgKG1fc2Vzc2lvbkJ5Q29ubmVj
dGlvbi5nZXQoY29ubmVjdGlvbklEKSA9PSBuZXdTZXNzaW9uSUQpCi0gICAgICAgIHJldHVybjsK
LQotICAgIHdlYlByb2Nlc3NXYXNEaXNjb25uZWN0ZWQoY29ubmVjdGlvbik7Ci0gICAgZm9yIChh
dXRvJiBwYWdlSUQgOiBwYWdlSURzKQotICAgICAgICB3ZWJQYWdlV2FzQWRkZWQoY29ubmVjdGlv
biwgbmV3U2Vzc2lvbklELCBwYWdlSUQsIHBhZ2VJRCk7Ci19Ci0KIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OmdldExvY2FsU3RvcmFnZU9yaWdpbkRldGFpbHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNr
ZXI6Ok9yaWdpbkRldGFpbHM+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGF1dG8q
IHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOwotICAgIGlmICghc2Vzc2lvbikg
eworICAgIGlmICghbV9zdG9yYWdlTWFuYWdlclNldC0+Y29udGFpbnMoc2Vzc2lvbklEKSkgewog
ICAgICAgICBMT0dfRVJST1IoIkNhbm5vdCBnZXQgbG9jYWwgc3RvcmFnZSBpbmZvcm1hdGlvbiBm
b3IgYW4gdW5rbm93biBzZXNzaW9uIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBh
dXRvJiBzdG9yYWdlTWFuYWdlciA9IHNlc3Npb24tPnN0b3JhZ2VNYW5hZ2VyKCk7Ci0gICAgc3Rv
cmFnZU1hbmFnZXIuZ2V0TG9jYWxTdG9yYWdlT3JpZ2luRGV0YWlscyhbY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byYmIGRldGFpbHMpIG11dGFibGUg
eworICAgIG1fc3RvcmFnZU1hbmFnZXJTZXQtPmdldExvY2FsU3RvcmFnZU9yaWdpbkRldGFpbHMo
c2Vzc2lvbklELCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0oYXV0byYmIGRldGFpbHMpIG11dGFibGUgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihX
VEZNb3ZlKGRldGFpbHMpKTsKICAgICB9KTsKIH0KIAordm9pZCBOZXR3b3JrUHJvY2Vzczo6Y29u
bmVjdGlvblRvV2ViUHJvY2Vzc0Nsb3NlZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCit7
CisgICAgbV9zdG9yYWdlTWFuYWdlclNldC0+cmVtb3ZlQ29ubmVjdGlvbihjb25uZWN0aW9uKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggYTkyYjcyNDFlYjI5OGVhNjZjNWE4YTI4NDc0ZjQw
M2U1N2U0NWMzOS4uZjQyZTdiOWQ2MjlhYTg2MGU1ZGM4ZjBmNGVlYmVlZTIxZGY4YTZhMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtOTcs
NiArOTcsNyBAQCBjbGFzcyBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKIGNsYXNzIE5l
dHdvcmtQcm9jZXNzU3VwcGxlbWVudDsKIGNsYXNzIE5ldHdvcmtQcm94aW1pdHlNYW5hZ2VyOwog
Y2xhc3MgTmV0d29ya1Jlc291cmNlTG9hZGVyOworY2xhc3MgU3RvcmFnZU1hbmFnZXJTZXQ7CiBj
bGFzcyBXZWJTV1NlcnZlckNvbm5lY3Rpb247CiBjbGFzcyBXZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb247CiBlbnVtIGNsYXNzIFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcyA6IGJvb2w7
CkBAIC0yNzAsMTAgKzI3MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNlc3Npb25Jc0NvbnRy
b2xsZWRCeUF1dG9tYXRpb24oUEFMOjpTZXNzaW9uSUQsIGJvb2wpOwogICAgIGJvb2wgc2Vzc2lv
bklzQ29udHJvbGxlZEJ5QXV0b21hdGlvbihQQUw6OlNlc3Npb25JRCkgY29uc3Q7CiAKLSAgICB2
b2lkIHdlYlBhZ2VXYXNBZGRlZChJUEM6OkNvbm5lY3Rpb24mLCBQQUw6OlNlc3Npb25JRCwgV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKLSAgICB2b2lk
IHdlYlBhZ2VXYXNSZW1vdmVkKElQQzo6Q29ubmVjdGlvbiYsIFBBTDo6U2Vzc2lvbklELCBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllcik7Ci0gICAgdm9pZCB3ZWJQcm9jZXNzV2FzRGlzY29ubmVjdGVk
KElQQzo6Q29ubmVjdGlvbiYpOwotICAgIHZvaWQgd2ViUHJvY2Vzc1Nlc3Npb25DaGFuZ2VkKElQ
Qzo6Q29ubmVjdGlvbiYsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXI+Jik7CisgICAgdm9pZCBjb25uZWN0aW9uVG9XZWJQcm9jZXNzQ2xvc2VkKElQ
Qzo6Q29ubmVjdGlvbiYpOwogICAgIHZvaWQgZ2V0TG9jYWxTdG9yYWdlT3JpZ2luRGV0YWlscyhQ
QUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8TG9jYWxTdG9yYWdl
RGF0YWJhc2VUcmFja2VyOjpPcmlnaW5EZXRhaWxzPiYmKT4mJik7CiAKICNpZiBFTkFCTEUoQ09O
VEVOVF9FWFRFTlNJT05TKQpAQCAtMjg1LDYgKzI4MywxMCBAQCBwdWJsaWM6CiAgICAgLy8gV2Vi
Q29yZTo6SURCU2VydmVyOjpJREJCYWNraW5nU3RvcmVGaWxlSGFuZGxlci4KICAgICB2b2lkIGFj
Y2Vzc1RvVGVtcG9yYXJ5RmlsZUNvbXBsZXRlKGNvbnN0IFN0cmluZyYgcGF0aCkgZmluYWw7CiAj
ZW5kaWYKKworICAgIHZvaWQgc3luY0xvY2FsU3RvcmFnZShDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOworICAgIHZvaWQgY2xlYXJMZWdhY3lQcml2YXRlQnJvd3NpbmdMb2NhbFN0b3JhZ2Uo
KTsKKwogICAgIHZvaWQgdXBkYXRlUXVvdGFCYXNlZE9uU3BhY2VVc2FnZUZvclRlc3RpbmcoUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYpOwogCiAjaWYgRU5BQkxF
KFNBTkRCT1hfRVhURU5TSU9OUykKQEAgLTQ5OSw2ICs1MDEsOCBAQCBwcml2YXRlOgogICAgIEhh
c2hNYXA8UEFMOjpTZXNzaW9uSUQsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb24+PiBtX25ldHdvcmtTdG9yYWdlU2Vzc2lvbnM7CiAgICAgbXV0YWJsZSBzdGQ6
OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiBtX2RlZmF1bHROZXR3
b3JrU3RvcmFnZVNlc3Npb247CiAKKyAgICBSZWZQdHI8U3RvcmFnZU1hbmFnZXJTZXQ+IG1fc3Rv
cmFnZU1hbmFnZXJTZXQ7CisKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIHBsYXRmb3Jt
SW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzQ29jb2EoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMmKTsKICAgICB2b2lkIHNldFN0b3JhZ2VBY2Nlc3NBUElFbmFibGVkKGJvb2wp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MubWVzc2FnZXMuaW4KaW5kZXggMjAwNjgzYjE5Y2VkNDgzMGUyOGQyMGNhNzdhMWYyNjJmZjFh
Yjk1Zi4uNGZjMTkyMGFkYWI3NWRkYmNhZTU1NTM1MTBiOWMxNmZiNDdhZmQwYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3Nh
Z2VzLmluCkBAIC0xNjAsNiArMTYwLDkgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVn
YWN5UmVjZWl2ZXIgewogICAgIERpc2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9u
RGVsYXkoKQogI2VuZGlmCiAKKyAgICBTeW5jTG9jYWxTdG9yYWdlKCkgLT4gKCkgU3luY2hyb25v
dXMKKyAgICBDbGVhckxlZ2FjeVByaXZhdGVCcm93c2luZ0xvY2FsU3RvcmFnZSgpCisKICAgICBV
cGRhdGVRdW90YUJhc2VkT25TcGFjZVVzYWdlRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIHN0cnVjdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luKQogCiAgICAgU3RvcmVB
ZENsaWNrQXR0cmlidXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpBZENs
aWNrQXR0cmlidXRpb24gYWRDbGlja0F0dHJpYnV0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAppbmRleCA0ODhiOTI5ODBhZWQxYWRjNjRh
YjNkM2NhZmMzZjhkOGZhMjc2MmJkLi4xYTEzOTYyOTE2YTk5MjQwNDAwOGEyZWYyMWE0MTkzZTZj
MTc2NmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtT
ZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNz
aW9uLmNwcApAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRQ
YXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVk
ZSAiUGluZ0xvYWQuaCIKLSNpbmNsdWRlICJTdG9yYWdlTWFuYWdlci5oIgogI2luY2x1ZGUgIldl
YlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCkBAIC04NSw3ICs4NCw2IEBAIE5ldHdvcmtTZXNzaW9uOjpO
ZXR3b3JrU2Vzc2lvbihOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIGNvbnN0IE5ldHdv
cmtTZXNzCiAgICAgLCBtX2VuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NMb2dUZXN0aW5nRXZl
bnQocGFyYW1ldGVycy5lbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTG9nVGVzdGluZ0V2ZW50
KQogI2VuZGlmCiAgICAgLCBtX2FkQ2xpY2tBdHRyaWJ1dGlvbihtYWtlVW5pcXVlUmVmPEFkQ2xp
Y2tBdHRyaWJ1dGlvbk1hbmFnZXI+KHBhcmFtZXRlcnMuc2Vzc2lvbklEKSkKLSAgICAsIG1fc3Rv
cmFnZU1hbmFnZXIoU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZShTdHJpbmcocGFyYW1ldGVycy5sb2Nh
bFN0b3JhZ2VEaXJlY3RvcnkpKSkKIHsKICAgICBpZiAoIW1fc2Vzc2lvbklELmlzRXBoZW1lcmFs
KCkpIHsKICAgICAgICAgU3RyaW5nIG5ldHdvcmtDYWNoZURpcmVjdG9yeSA9IHBhcmFtZXRlcnMu
bmV0d29ya0NhY2hlRGlyZWN0b3J5OwpAQCAtOTksNyArOTcsNiBAQCBOZXR3b3JrU2Vzc2lvbjo6
TmV0d29ya1Nlc3Npb24oTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBjb25zdCBOZXR3
b3JrU2VzcwogICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29ya0NhY2hlLCAiRmFp
bGVkIHRvIGluaXRpYWxpemUgdGhlIFdlYktpdCBuZXR3b3JrIGRpc2sgY2FjaGUiKTsKICAgICB9
CiAKLSAgICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkocGFyYW1ldGVycy5s
b2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogICAgIG1fYWRDbGlja0F0dHJp
YnV0aW9uLT5zZXRQaW5nTG9hZEZ1bmN0aW9uKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRy
KHRoaXMpXShOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmIGxvYWRQYXJhbWV0ZXJzLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsKICAg
ICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsKQEAgLTExMyw5ICsxMTAs
NiBAQCBOZXR3b3JrU2Vzc2lvbjo6fk5ldHdvcmtTZXNzaW9uKCkKICNpZiBFTkFCTEUoUkVTT1VS
Q0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIGRlc3Ryb3lSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCk7
CiAjZW5kaWYKLQotICAgIG1fc3RvcmFnZU1hbmFnZXItPnJlc3VtZSgpOwotICAgIG1fc3RvcmFn
ZU1hbmFnZXItPndhaXRVbnRpbFRhc2tzRmluaXNoZWQoKTsKIH0KIAogI2lmIEVOQUJMRShSRVNP
VVJDRV9MT0FEX1NUQVRJU1RJQ1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtTZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtTZXNzaW9uLmgKaW5kZXggNTA2ZTdmZjA4ZmJjOWE3NjRlYTgzMDMwOTRiNmQzMDY3NGEz
ZjNhNC4uNjg0OWIzMGY4ZDQ2Yzk1NzRjYWVkMTQxNDU2MmRlZTU3NGI5OWJmMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaApAQCAtNTIsNyArNTIs
NiBAQCBjbGFzcyBBZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyOwogY2xhc3MgTmV0d29ya0RhdGFU
YXNrOwogY2xhc3MgTmV0d29ya1Byb2Nlc3M7CiBjbGFzcyBOZXR3b3JrUmVzb3VyY2VMb2FkZXI7
Ci1jbGFzcyBTdG9yYWdlTWFuYWdlcjsKIGNsYXNzIE5ldHdvcmtTb2NrZXRDaGFubmVsOwogY2xh
c3MgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOwogY2xhc3MgV2ViU29ja2V0VGFzazsK
QEAgLTgxLDggKzgwLDYgQEAgcHVibGljOgogICAgIHZvaWQgcmVnaXN0ZXJOZXR3b3JrRGF0YVRh
c2soTmV0d29ya0RhdGFUYXNrJiB0YXNrKSB7IG1fZGF0YVRhc2tTZXQuYWRkKCZ0YXNrKTsgfQog
ICAgIHZvaWQgdW5yZWdpc3Rlck5ldHdvcmtEYXRhVGFzayhOZXR3b3JrRGF0YVRhc2smIHRhc2sp
IHsgbV9kYXRhVGFza1NldC5yZW1vdmUoJnRhc2spOyB9CiAKLSAgICBTdG9yYWdlTWFuYWdlciYg
c3RvcmFnZU1hbmFnZXIoKSB7IHJldHVybiBtX3N0b3JhZ2VNYW5hZ2VyLmdldCgpOyB9Ci0KICNp
ZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZSogcmVzb3VyY2VMb2FkU3RhdGlzdGljcygpIGNvbnN0IHsgcmV0dXJuIG1f
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy5nZXQoKTsgfQogICAgIHZvaWQgc2V0UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0VuYWJsZWQoYm9vbCk7CkBAIC0xNDUsNyArMTQyLDYgQEAgcHJvdGVjdGVkOgog
CiAgICAgUHJlZmV0Y2hDYWNoZSBtX3ByZWZldGNoQ2FjaGU7CiAKLSAgICBSZWY8U3RvcmFnZU1h
bmFnZXI+IG1fc3RvcmFnZU1hbmFnZXI7CiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIGJvb2wg
bV9pc0ludmFsaWRhdGVkIHsgZmFsc2UgfTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJh
bWV0ZXJzLmNwcAppbmRleCBjMWI5NzdjYzFkMmJjN2E4MzA1MWIyNjIxMmYyZDFkZTBlODU3OTg0
Li5iMjlmNDkzMzlmMDNkMTMzYTVjZjUwYTkwN2QxMjEzOTAzNDE4MWRiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0
ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9u
Q3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtNTAsNyArNTAsNyBAQCBOZXR3b3JrU2Vzc2lvbkNy
ZWF0aW9uUGFyYW1ldGVycyBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVyczo6cHJpdmF0
ZVNlc3NpbwogI2lmIFVTRShDVVJMKQogICAgICAgICAsIHsgfSwgeyB9CiAjZW5kaWYKLSAgICAg
ICAgLCB7IH0sIHsgfSwgZmFsc2UsIGZhbHNlLCB7IH0sIHsgfSwgeyB9LCB7IH0sIHsgfSwgeyB9
LCB7IH0sIHsgfSwgeyB9LCB7IH0KKyAgICAgICAgLCB7IH0sIHsgfSwgZmFsc2UsIGZhbHNlLCB7
IH0sIHsgfSwgeyB9LCB7IH0sIHsgfSwgeyB9LCB7IH0sIHsgfQogICAgIH07CiB9CiAKQEAgLTg2
LDcgKzg2LDYgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2Rl
KElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IHJlc291cmNlTG9h
ZFN0YXRpc3RpY3NNYW51YWxQcmV2YWxlbnRSZXNvdXJjZTsKICAgICBlbmNvZGVyIDw8IGVuYWJs
ZVJlc291cmNlTG9hZFN0YXRpc3RpY3NOU1VSTFNlc3Npb25Td2l0Y2hpbmc7CiAKLSAgICBlbmNv
ZGVyIDw8IGxvY2FsU3RvcmFnZURpcmVjdG9yeSA8PCBsb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRl
bnNpb25IYW5kbGU7CiAgICAgZW5jb2RlciA8PCBuZXR3b3JrQ2FjaGVEaXJlY3RvcnkgPDwgbmV0
d29ya0NhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogCiAgICAgZW5jb2RlciA8PCBkZXZp
Y2VNYW5hZ2VtZW50UmVzdHJpY3Rpb25zRW5hYmxlZDsKQEAgLTIxNCwxNiArMjEzLDYgQEAgT3B0
aW9uYWw8TmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM+IE5ldHdvcmtTZXNzaW9uQ3Jl
YXRpb25QYXJhbWV0ZXJzOjpkZWMKICAgICBkZWNvZGVyID4+IGVuYWJsZVJlc291cmNlTG9hZFN0
YXRpc3RpY3NOU1VSTFNlc3Npb25Td2l0Y2hpbmc7CiAgICAgaWYgKCFlbmFibGVSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTlNVUkxTZXNzaW9uU3dpdGNoaW5nKQogICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwotICAgIAotICAgIE9wdGlvbmFsPFN0cmluZz4gbG9jYWxTdG9yYWdlRGlyZWN0b3J5
OwotICAgIGRlY29kZXIgPj4gbG9jYWxTdG9yYWdlRGlyZWN0b3J5OwotICAgIGlmICghbG9jYWxT
dG9yYWdlRGlyZWN0b3J5KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgT3B0
aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRl
bnNpb25IYW5kbGU7Ci0gICAgZGVjb2RlciA+PiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNp
b25IYW5kbGU7Ci0gICAgaWYgKCFsb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxTdHJpbmc+IG5l
dHdvcmtDYWNoZURpcmVjdG9yeTsKICAgICBkZWNvZGVyID4+IG5ldHdvcmtDYWNoZURpcmVjdG9y
eTsKQEAgLTI3Nyw4ICsyNjYsNiBAQCBPcHRpb25hbDxOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFy
YW1ldGVycz4gTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM6OmRlYwogICAgICAgICAs
IFdURk1vdmUoKmRldmljZU1hbmFnZW1lbnRSZXN0cmljdGlvbnNFbmFibGVkKQogICAgICAgICAs
IFdURk1vdmUoKmFsbExvYWRzQmxvY2tlZEJ5RGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0Zv
clRlc3RpbmcpCiAgICAgICAgICwgV1RGTW92ZSgqcmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbnVh
bFByZXZhbGVudFJlc291cmNlKQotICAgICAgICAsIFdURk1vdmUoKmxvY2FsU3RvcmFnZURpcmVj
dG9yeSkKLSAgICAgICAgLCBXVEZNb3ZlKCpsb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25I
YW5kbGUpCiAgICAgICAgICwgV1RGTW92ZSgqbmV0d29ya0NhY2hlRGlyZWN0b3J5KQogICAgICAg
ICAsIFdURk1vdmUoKm5ldHdvcmtDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSkKICAgICB9
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Np
b25DcmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCAxODMzZTQ2N2ZmNmM1MmQyNDM4
YTY3MDJiZDE3OGU1N2M1MmI2NmEzLi41MGJlMzBlOGI2ZmZlMGRiMTE5ZmUxMDI3MGQxYzFlMmQ4
N2E5ZmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtT
ZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC05Miw4ICs5Miw2IEBA
IHN0cnVjdCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgYm9vbCBhbGxM
b2Fkc0Jsb2NrZWRCeURldmljZU1hbmFnZW1lbnRSZXN0cmljdGlvbnNGb3JUZXN0aW5nIHsgZmFs
c2UgfTsKICAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWFudWFsUHJldmFsZW50UmVzb3VyY2UgeyB9OwogCi0gICAgU3RyaW5nIGxvY2FsU3RvcmFn
ZURpcmVjdG9yeTsKLSAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgbG9jYWxTdG9yYWdlRGly
ZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIFN0cmluZyBuZXR3b3JrQ2FjaGVEaXJlY3Rvcnk7
CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIG5ldHdvcmtDYWNoZURpcmVjdG9yeUV4dGVu
c2lvbkhhbmRsZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcAppbmRleCBiZjUx
NTc4ZmIxNDdkZGRjODdlNjZkOTBhNWVkZDAyYTRjZDcyNjkzLi44ZjQ3NjNjOWRjODZhYjRhNDJk
OTQ2ZjI2ZGIyOGJjYzY5MDI5Y2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAK
QEAgLTI1OSw3ICsyNTksNiBAQCB2b2lkIExvY2FsU3RvcmFnZURhdGFiYXNlOjp1cGRhdGVEYXRh
YmFzZSgpCiAgICAgaWYgKG1faXNDbG9zZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFTU0VS
VChtX2RpZFNjaGVkdWxlRGF0YWJhc2VVcGRhdGUpOwogICAgIG1fZGlkU2NoZWR1bGVEYXRhYmFz
ZVVwZGF0ZSA9IGZhbHNlOwogCiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gY2hhbmdlZEl0
ZW1zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdl
L0xvY2FsU3RvcmFnZURhdGFiYXNlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dl
YlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuaAppbmRleCA0ZDY4NzZiMTcxM2ZlMTQ3Yzll
ZTcxYWU5YjZkNjk0NjIzOTdhZWZkLi44Y2ZiMjRiMjFmM2EwYTQyNmJkYjIyZDQ1Y2FiNDIwOTUy
M2VjODEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3Jh
Z2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuaApAQCAtNTUsNiArNTUsOCBAQCBw
dWJsaWM6CiAgICAgdm9pZCByZW1vdmVJdGVtKGNvbnN0IFN0cmluZyYga2V5KTsKICAgICB2b2lk
IGNsZWFyKCk7CiAKKyAgICB2b2lkIHVwZGF0ZURhdGFiYXNlKCk7CisKICAgICAvLyBXaWxsIGJs
b2NrIHVudGlsIGFsbCBwZW5kaW5nIGNoYW5nZXMgaGF2ZSBiZWVuIHdyaXR0ZW4gdG8gZGlzay4K
ICAgICB2b2lkIGNsb3NlKCk7CiAKQEAgLTczLDcgKzc1LDYgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGl0ZW1EaWRDaGFuZ2UoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUpOwog
CiAgICAgdm9pZCBzY2hlZHVsZURhdGFiYXNlVXBkYXRlKCk7Ci0gICAgdm9pZCB1cGRhdGVEYXRh
YmFzZSgpOwogICAgIHZvaWQgdXBkYXRlRGF0YWJhc2VXaXRoQ2hhbmdlZEl0ZW1zKGNvbnN0IEhh
c2hNYXA8U3RyaW5nLCBTdHJpbmc+Jik7CiAKICAgICBib29sIGRhdGFiYXNlSXNFbXB0eSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2Fs
U3RvcmFnZURhdGFiYXNlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNwcAppbmRleCAwN2E2MzNm
YmZlOWJlNTllZGJlZDUzOWM5NmUxOWU0YjFiYmQyNTgzLi42NzMyNzA5NDMyZjNhNmU3NTI1MTE3
ZmVlZTc5ZmI1YzhhNjE2OTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VU
cmFja2VyLmNwcApAQCAtMzksMjQgKzM5LDE3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCi1SZWY8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyPiBM
b2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OmNyZWF0ZShSZWY8V29ya1F1ZXVlPiYmIHF1ZXVl
LCBTdHJpbmcmJiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpCitSZWY8TG9jYWxTdG9yYWdlRGF0YWJh
c2VUcmFja2VyPiBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OmNyZWF0ZShTdHJpbmcmJiBs
b2NhbFN0b3JhZ2VEaXJlY3RvcnkpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTG9jYWxT
dG9yYWdlRGF0YWJhc2VUcmFja2VyKFdURk1vdmUocXVldWUpLCBXVEZNb3ZlKGxvY2FsU3RvcmFn
ZURpcmVjdG9yeSkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBMb2NhbFN0b3JhZ2VEYXRh
YmFzZVRyYWNrZXIoV1RGTW92ZShsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpKSk7CiB9CiAKLUxvY2Fs
U3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyKFJlZjxX
b3JrUXVldWU+JiYgcXVldWUsIFN0cmluZyYmIGxvY2FsU3RvcmFnZURpcmVjdG9yeSkKLSAgICA6
IG1fcXVldWUoV1RGTW92ZShxdWV1ZSkpCi0gICAgLCBtX2xvY2FsU3RvcmFnZURpcmVjdG9yeShX
VEZNb3ZlKGxvY2FsU3RvcmFnZURpcmVjdG9yeSkpCitMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNr
ZXI6OkxvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcihTdHJpbmcmJiBsb2NhbFN0b3JhZ2VEaXJl
Y3RvcnkpCisgICAgOiBtX2xvY2FsU3RvcmFnZURpcmVjdG9yeShXVEZNb3ZlKGxvY2FsU3RvcmFn
ZURpcmVjdG9yeSkpCiB7Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBBU1NF
UlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIC8vIE1ha2Ugc3VyZSB0aGUgZW5jb2Rpbmcg
aXMgaW5pdGlhbGl6ZWQgYmVmb3JlIHdlIHN0YXJ0IGRpc3BhdGNoaW5nIHRoaW5ncyB0byB0aGUg
cXVldWUuCi0gICAgVVRGOEVuY29kaW5nKCk7Ci0KLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChbcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSgpIG11dGFibGUgewotICAgICAgICAvLyBEZWxl
dGUgbGVnYWN5IHN0b3JhZ2VUcmFja2VyIGRhdGFiYXNlIGZpbGUuCi0gICAgICAgIFNRTGl0ZUZp
bGVTeXN0ZW06OmRlbGV0ZURhdGFiYXNlRmlsZShwcm90ZWN0ZWRUaGlzLT5kYXRhYmFzZVBhdGgo
IlN0b3JhZ2VUcmFja2VyLmRiIikpOwotICAgIH0pOworICAgIFNRTGl0ZUZpbGVTeXN0ZW06OmRl
bGV0ZURhdGFiYXNlRmlsZShkYXRhYmFzZVBhdGgoIlN0b3JhZ2VUcmFja2VyLmRiIikpOwogfQog
CiBTdHJpbmcgTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpsb2NhbFN0b3JhZ2VEaXJlY3Rv
cnkoKSBjb25zdApAQCAtNjYsNyArNTksNyBAQCBTdHJpbmcgTG9jYWxTdG9yYWdlRGF0YWJhc2VU
cmFja2VyOjpsb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdAogCiBMb2NhbFN0b3JhZ2VEYXRh
YmFzZVRyYWNrZXI6On5Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIoKQogewotICAgIEFTU0VS
VChSdW5Mb29wOjppc01haW4oKSk7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiB9
CiAKIFN0cmluZyBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OmRhdGFiYXNlUGF0aChjb25z
dCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFi
YXNlVHJhY2tlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xv
Y2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5oCmluZGV4IDVkOWQyYzJhNGM3ZGEwMTNmNjBmMTFl
YjQzNmYxOGU0NzU4MDIwOTEuLjg1YjQ5ZWUyNWI4YWNjYzlkYWY5OTkzNGRlNzg4YzIzNWZkNWFi
ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9M
b2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmgKQEAgLTM1LDkg
KzM1LDkgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIExvY2FsU3RvcmFnZURhdGFi
YXNlVHJhY2tlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxMb2NhbFN0b3JhZ2VEYXRh
YmFzZVRyYWNrZXIsIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW5SdW5Mb29wPiB7CitjbGFz
cyBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI+IGNyZWF0ZShSZWY8V29ya1F1ZXVlPiYmLCBT
dHJpbmcmJiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpOworICAgIHN0YXRpYyBSZWY8TG9jYWxTdG9y
YWdlRGF0YWJhc2VUcmFja2VyPiBjcmVhdGUoU3RyaW5nJiYgbG9jYWxTdG9yYWdlRGlyZWN0b3J5
KTsKICAgICB+TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyKCk7CiAKICAgICBTdHJpbmcgZGF0
YWJhc2VQYXRoKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYpIGNvbnN0OwpAQCAt
NjQsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgVmVjdG9yPE9yaWdpbkRldGFpbHM+IG9yaWdpbkRl
dGFpbHMoKTsKIAogcHJpdmF0ZToKLSAgICBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIoUmVm
PFdvcmtRdWV1ZT4mJiwgU3RyaW5nJiYgbG9jYWxTdG9yYWdlRGlyZWN0b3J5KTsKKyAgICBMb2Nh
bFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIoU3RyaW5nJiYgbG9jYWxTdG9yYWdlRGlyZWN0b3J5KTsK
IAogICAgIFN0cmluZyBkYXRhYmFzZVBhdGgoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkgY29uc3Q7
CiAgICAgU3RyaW5nIGxvY2FsU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0OwpAQCAtNzMsOCArNzMs
NiBAQCBwcml2YXRlOgogICAgICAgICBDcmVhdGVJZk5vbkV4aXN0ZW50LAogICAgICAgICBTa2lw
SWZOb25FeGlzdGVudAogICAgIH07Ci0KLSAgICBSZWY8V29ya1F1ZXVlPiBtX3F1ZXVlOwogICAg
IAogICAgIC8vIEl0IGlzIG5vdCBzYWZlIHRvIHVzZSB0aGlzIG1lbWJlciBmcm9tIGEgYmFja2dy
b3VuZCB0aHJlYWQsIGNhbGwgbG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkgaW5zdGVhZC4KICAgICBj
b25zdCBTdHJpbmcgbV9sb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlTmFtZXNwYWNlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VO
YW1lc3BhY2UuY3BwCmluZGV4IDU0ZGM3OTk0MjhjZGE4YjMwNzA2NWQ5YTdkNjdlNzBiMzgyYmI0
NDIuLjNhZWM2NjhkZjEwYmM1YzUxZWUzNjRmOWZlZmVkYzUwZGQ0OTQ0MWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VOYW1l
c3BhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9M
b2NhbFN0b3JhZ2VOYW1lc3BhY2UuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIExvY2FsU3RvcmFnZU5h
bWVzcGFjZTo6fkxvY2FsU3RvcmFnZU5hbWVzcGFjZSgpCiAgICAgQVNTRVJUKCFSdW5Mb29wOjpp
c01haW4oKSk7CiB9CiAKLWF1dG8gTG9jYWxTdG9yYWdlTmFtZXNwYWNlOjpnZXRPckNyZWF0ZVN0
b3JhZ2VBcmVhKFNlY3VyaXR5T3JpZ2luRGF0YSYmIHNlY3VyaXR5T3JpZ2luLCBJc0VwaGVtZXJh
bCBpc0VwaGVtZXJhbCkgLT4gUmVmPFN0b3JhZ2VBcmVhPgorUmVmPFN0b3JhZ2VBcmVhPiBMb2Nh
bFN0b3JhZ2VOYW1lc3BhY2U6OmdldE9yQ3JlYXRlU3RvcmFnZUFyZWEoU2VjdXJpdHlPcmlnaW5E
YXRhJiYgc2VjdXJpdHlPcmlnaW4sIElzRXBoZW1lcmFsIGlzRXBoZW1lcmFsKQogewogICAgIEFT
U0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIHJldHVybiAqbV9zdG9yYWdlQXJlYU1hcC5l
bnN1cmUoc2VjdXJpdHlPcmlnaW4sIFsmXSgpIG11dGFibGUgewpAQCAtODEsMTEgKzgxLDQgQEAg
VmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4gTG9jYWxTdG9yYWdlTmFtZXNwYWNlOjplcGhlbWVy
YWxPcmlnaW5zKCkgY29uc3QKICAgICByZXR1cm4gb3JpZ2luczsKIH0KIAotdm9pZCBMb2NhbFN0
b3JhZ2VOYW1lc3BhY2U6OmNsb25lVG8oTG9jYWxTdG9yYWdlTmFtZXNwYWNlJiBuZXdMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UpCi17Ci0gICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0gICAg
Zm9yIChhdXRvJiBwYWlyIDogbV9zdG9yYWdlQXJlYU1hcCkKLSAgICAgICAgbmV3TG9jYWxTdG9y
YWdlTmFtZXNwYWNlLm1fc3RvcmFnZUFyZWFNYXAuYWRkKHBhaXIua2V5LCBwYWlyLnZhbHVlLT5j
bG9uZSgpKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlTmFtZXNwYWNlLmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlTmFt
ZXNwYWNlLmgKaW5kZXggNDcxOTBjYzZjYjQ1MDM5NzJjMjcyZDBjY2Y0OTY3NzhhOTA5Yzg4Zi4u
OWE3NmUxYzYzOGRiNDMyNjBmZjgyNDQ1NjdjOTRlN2QwM2IzYmRlNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZU5hbWVzcGFj
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0
b3JhZ2VOYW1lc3BhY2UuaApAQCAtNTQsNyArNTQsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVh
ckFsbFN0b3JhZ2VBcmVhcygpOwogCiAgICAgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YT4gZXBoZW1lcmFsT3JpZ2lucygpIGNvbnN0OwotICAgIHZvaWQgY2xvbmVUbyhMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UmIG5ld0xvY2FsU3RvcmFnZU5hbWVzcGFjZSk7CiAKIHByaXZhdGU6CiAg
ICAgTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFN0b3JhZ2VNYW5hZ2VyJiwgdWludDY0X3Qgc3RvcmFn
ZU1hbmFnZXJJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dl
YlN0b3JhZ2UvU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlLmNwcAppbmRleCA1
ODBhOGU2MmVhZjA0NGU2YzQ1NTY0MzJhNjAxNjlmMjFmZDcxNmMxLi5kZGY4MjEyYTQ5YzM3ZDVj
ZjdlYTNiODJjMTIyYjJlZGViYjdkZDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1dlYlN0b3JhZ2UvU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TZXNzaW9uU3RvcmFnZU5hbWVz
cGFjZS5jcHAKQEAgLTQzLDIwICs0Myw3IEBAIFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlOjp+U2Vz
c2lvblN0b3JhZ2VOYW1lc3BhY2UoKQogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwog
fQogCi12b2lkIFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlOjphZGRBbGxvd2VkQ29ubmVjdGlvbihJ
UEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGFsbG93ZWRDb25uZWN0aW9uKQotewotICAgIEFTU0VS
VCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIG1fYWxsb3dlZENvbm5lY3Rpb25zLmFkZChhbGxv
d2VkQ29ubmVjdGlvbik7Ci19Ci0KLQotdm9pZCBTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZTo6cmVt
b3ZlQWxsb3dlZENvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBhbGxvd2VkQ29u
bmVjdGlvbikKLXsKLSAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBBU1NFUlQo
bV9hbGxvd2VkQ29ubmVjdGlvbnMuY29udGFpbnMoYWxsb3dlZENvbm5lY3Rpb24pKTsKLSAgICBt
X2FsbG93ZWRDb25uZWN0aW9ucy5yZW1vdmUoYWxsb3dlZENvbm5lY3Rpb24pOwotfQotYXV0byBT
ZXNzaW9uU3RvcmFnZU5hbWVzcGFjZTo6Z2V0T3JDcmVhdGVTdG9yYWdlQXJlYShTZWN1cml0eU9y
aWdpbkRhdGEmJiBzZWN1cml0eU9yaWdpbikgLT4gUmVmPFN0b3JhZ2VBcmVhPgorUmVmPFN0b3Jh
Z2VBcmVhPiBTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZTo6Z2V0T3JDcmVhdGVTdG9yYWdlQXJlYShT
ZWN1cml0eU9yaWdpbkRhdGEmJiBzZWN1cml0eU9yaWdpbikKIHsKICAgICBBU1NFUlQoIVJ1bkxv
b3A6OmlzTWFpbigpKTsKICAgICByZXR1cm4gKm1fc3RvcmFnZUFyZWFNYXAuZW5zdXJlKHNlY3Vy
aXR5T3JpZ2luLCBbdGhpcywgJnNlY3VyaXR5T3JpZ2luXSgpIG11dGFibGUgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1Nlc3Npb25TdG9yYWdl
TmFtZXNwYWNlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU2Vz
c2lvblN0b3JhZ2VOYW1lc3BhY2UuaAppbmRleCA3MjA3NDhmNjc4NjgwNmIwZWMxMGQyYjBjMjdj
ZWYwMzJhMmY1MzBmLi4xOGYwZjA5YjgwMjExODRhMDQ4ZDNmNTM4ZmNlZTQ2M2MzOTM0N2ZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU2Vzc2lv
blN0b3JhZ2VOYW1lc3BhY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dl
YlN0b3JhZ2UvU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UuaApAQCAtNDUsMTAgKzQ1LDYgQEAgcHVi
bGljOgogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9zdG9yYWdlQXJlYU1h
cC5pc0VtcHR5KCk7IH0KIAotICAgIGNvbnN0IEhhc2hTZXQ8SVBDOjpDb25uZWN0aW9uOjpVbmlx
dWVJRD4mIGFsbG93ZWRDb25uZWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dlZENvbm5l
Y3Rpb25zOyB9Ci0gICAgdm9pZCBhZGRBbGxvd2VkQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb246
OlVuaXF1ZUlEKTsKLSAgICB2b2lkIHJlbW92ZUFsbG93ZWRDb25uZWN0aW9uKElQQzo6Q29ubmVj
dGlvbjo6VW5pcXVlSUQpOwotCiAgICAgUmVmPFN0b3JhZ2VBcmVhPiBnZXRPckNyZWF0ZVN0b3Jh
Z2VBcmVhKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmKTsKIAogICAgIHZvaWQgY2xvbmVU
byhTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSYgbmV3U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UpOwpA
QCAtNjEsNyArNTcsNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFNlc3Npb25T
dG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkIHF1b3RhSW5CeXRlcyk7CiAKLSAgICBIYXNoU2V0PElQ
Qzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQ+IG1fYWxsb3dlZENvbm5lY3Rpb25zOwogICAgIHVuc2ln
bmVkIG1fcXVvdGFJbkJ5dGVzIHsgMCB9OwogCiAgICAgSGFzaE1hcDxXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGEsIFJlZlB0cjxTdG9yYWdlQXJlYT4+IG1fc3RvcmFnZUFyZWFNYXA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFy
ZWEuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VB
cmVhLmNwcAppbmRleCAzNDk0MzFmZWE1NmM0N2FiODE0NjBjYjgzZjU1NmU3MjRkY2EyZDRkLi4y
ZDEyNTgzNWNiYzhiNTIyYzMzYWFlNTgwMTRkYmZjYTBhNjg5MTZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWEuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYS5jcHAK
QEAgLTM2LDExICszNiwxOCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKK3N0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZVN0b3JhZ2VBcmVhSWRlbnRpZmll
cigpCit7CisgICAgc3RhdGljIHVpbnQ2NF90IGlkZW50aWZpZXI7CisgICAgcmV0dXJuICsraWRl
bnRpZmllcjsKK30KKwogU3RvcmFnZUFyZWE6OlN0b3JhZ2VBcmVhKExvY2FsU3RvcmFnZU5hbWVz
cGFjZSogbG9jYWxTdG9yYWdlTmFtZXNwYWNlLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNl
Y3VyaXR5T3JpZ2luLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpCiAgICAgOiBtX2xvY2FsU3RvcmFn
ZU5hbWVzcGFjZShtYWtlV2Vha1B0cihsb2NhbFN0b3JhZ2VOYW1lc3BhY2UpKQogICAgICwgbV9z
ZWN1cml0eU9yaWdpbihzZWN1cml0eU9yaWdpbikKICAgICAsIG1fcXVvdGFJbkJ5dGVzKHF1b3Rh
SW5CeXRlcykKICAgICAsIG1fc3RvcmFnZU1hcChTdG9yYWdlTWFwOjpjcmVhdGUobV9xdW90YUlu
Qnl0ZXMpKQorICAgICwgbV9pZGVudGlmaWVyKGdlbmVyYXRlU3RvcmFnZUFyZWFJZGVudGlmaWVy
KCkpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiB9CkBAIC00OCwzMCArNTUs
MzIgQEAgU3RvcmFnZUFyZWE6OlN0b3JhZ2VBcmVhKExvY2FsU3RvcmFnZU5hbWVzcGFjZSogbG9j
YWxTdG9yYWdlTmFtZXNwYWNlLCBjb25zdCBTZWMKIFN0b3JhZ2VBcmVhOjp+U3RvcmFnZUFyZWEo
KQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIEFTU0VSVChtX2V2ZW50
TGlzdGVuZXJzLmlzRW1wdHkoKSk7CiAKICAgICBpZiAobV9sb2NhbFN0b3JhZ2VEYXRhYmFzZSkK
ICAgICAgICAgbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZS0+Y2xvc2UoKTsKIH0KIAotdm9pZCBTdG9y
YWdlQXJlYTo6YWRkTGlzdGVuZXIoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9u
SUQsIHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCkKK3ZvaWQgU3RvcmFnZUFyZWE6OmFkZExpc3RlbmVy
KElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgY29ubmVjdGlvbklEKQogewogICAgIEFTU0VSVCgh
UnVuTG9vcDo6aXNNYWluKCkpOwotICAgIEFTU0VSVCghbV9ldmVudExpc3RlbmVycy5jb250YWlu
cyhzdGQ6Om1ha2VfcGFpcihjb25uZWN0aW9uSUQsIHN0b3JhZ2VNYXBJRCkpKTsKLSAgICBtX2V2
ZW50TGlzdGVuZXJzLmFkZChzdGQ6Om1ha2VfcGFpcihjb25uZWN0aW9uSUQsIHN0b3JhZ2VNYXBJ
RCkpOworICAgIEFTU0VSVCghbV9ldmVudExpc3RlbmVycy5jb250YWlucyhjb25uZWN0aW9uSUQp
KTsKKworICAgIGlmIChtX2V2ZW50TGlzdGVuZXJzLmlzRW1wdHkoKSAmJiAhaXNFcGhlbWVyYWwo
KSkKKyAgICAgICAgb3BlbkRhdGFiYXNlQW5kSW1wb3J0SXRlbXNJZk5lZWRlZCgpOworCisgICAg
bV9ldmVudExpc3RlbmVycy5hZGQoY29ubmVjdGlvbklEKTsKIH0KIAotdm9pZCBTdG9yYWdlQXJl
YTo6cmVtb3ZlTGlzdGVuZXIoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uSUQs
IHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCkKK3ZvaWQgU3RvcmFnZUFyZWE6OnJlbW92ZUxpc3RlbmVy
KElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgY29ubmVjdGlvbklEKQogewogICAgIEFTU0VSVCgh
UnVuTG9vcDo6aXNNYWluKCkpOwotICAgIEFTU0VSVChpc0VwaGVtZXJhbCgpIHx8IG1fZXZlbnRM
aXN0ZW5lcnMuY29udGFpbnMoc3RkOjptYWtlX3BhaXIoY29ubmVjdGlvbklELCBzdG9yYWdlTWFw
SUQpKSk7Ci0gICAgbV9ldmVudExpc3RlbmVycy5yZW1vdmUoc3RkOjptYWtlX3BhaXIoY29ubmVj
dGlvbklELCBzdG9yYWdlTWFwSUQpKTsKKyAgICBtX2V2ZW50TGlzdGVuZXJzLnJlbW92ZShjb25u
ZWN0aW9uSUQpOwogfQogCi1ib29sIFN0b3JhZ2VBcmVhOjpoYXNMaXN0ZW5lcihJUEM6OkNvbm5l
Y3Rpb246OlVuaXF1ZUlEIGNvbm5lY3Rpb25JRCwgdWludDY0X3Qgc3RvcmFnZU1hcElEKSBjb25z
dAorYm9vbCBTdG9yYWdlQXJlYTo6aGFzTGlzdGVuZXIoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJ
RCBjb25uZWN0aW9uSUQpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7
Ci0gICAgcmV0dXJuIG1fZXZlbnRMaXN0ZW5lcnMuY29udGFpbnMoc3RkOjptYWtlX3BhaXIoY29u
bmVjdGlvbklELCBzdG9yYWdlTWFwSUQpKTsKKyAgICByZXR1cm4gbV9ldmVudExpc3RlbmVycy5j
b250YWlucyhjb25uZWN0aW9uSUQpOwogfQogCiBSZWY8U3RvcmFnZUFyZWE+IFN0b3JhZ2VBcmVh
OjpjbG9uZSgpIGNvbnN0CkBAIC0xMDUsMjUgKzExNCw2IEBAIHZvaWQgU3RvcmFnZUFyZWE6OnNl
dEl0ZW0oSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBzb3VyY2VDb25uZWN0aW9uLCB1aW50NjRf
dCBzCiAgICAgZGlzcGF0Y2hFdmVudHMoc291cmNlQ29ubmVjdGlvbiwgc291cmNlU3RvcmFnZUFy
ZWFJRCwga2V5LCBvbGRWYWx1ZSwgdmFsdWUsIHVybFN0cmluZyk7CiB9CiAKLXZvaWQgU3RvcmFn
ZUFyZWE6OnNldEl0ZW1zKGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBpdGVtcykKLXsK
LSAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICAvLyBJbXBvcnQgaXRlbXMgZnJv
bSB3ZWIgcHJvY2VzcyBpZiBpdGVtcyBhcmUgbm90IHN0b3JlZCBvbiBkaXNrLgotICAgIGlmICgh
aXNFcGhlbWVyYWwoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZm9yIChhdXRvJiBpdGVtIDog
aXRlbXMpIHsKLSAgICAgICAgU3RyaW5nIG9sZFZhbHVlOwotICAgICAgICBib29sIHF1b3RhRXhj
ZXB0aW9uOwotICAgICAgICBhdXRvIG5ld1N0b3JhZ2VNYXAgPSBtX3N0b3JhZ2VNYXAtPnNldEl0
ZW0oaXRlbS5rZXksIGl0ZW0udmFsdWUsIG9sZFZhbHVlLCBxdW90YUV4Y2VwdGlvbik7Ci0gICAg
ICAgIGlmIChuZXdTdG9yYWdlTWFwKQotICAgICAgICAgICAgbV9zdG9yYWdlTWFwID0gV1RGTW92
ZShuZXdTdG9yYWdlTWFwKTsKLSAgICAgICAgCi0gICAgICAgIGlmIChxdW90YUV4Y2VwdGlvbikK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICB9Ci19Ci0KIHZvaWQgU3RvcmFnZUFyZWE6OnJlbW92
ZUl0ZW0oSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBzb3VyY2VDb25uZWN0aW9uLCB1aW50NjRf
dCBzb3VyY2VTdG9yYWdlQXJlYUlELCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB1
cmxTdHJpbmcpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CkBAIC0xNzgsNyAr
MTY4LDcgQEAgdm9pZCBTdG9yYWdlQXJlYTo6Y2xlYXIoKQogICAgIH0KIAogICAgIGZvciAoYXV0
byBpdCA9IG1fZXZlbnRMaXN0ZW5lcnMuYmVnaW4oKSwgZW5kID0gbV9ldmVudExpc3RlbmVycy5l
bmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRj
aChbY29ubmVjdGlvbklEID0gaXQtPmZpcnN0LCBkZXN0aW5hdGlvblN0b3JhZ2VBcmVhSUQgPSBp
dC0+c2Vjb25kXSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY29ubmVjdGlv
bklEID0gKml0LCBkZXN0aW5hdGlvblN0b3JhZ2VBcmVhSUQgPSBtX2lkZW50aWZpZXJdIHsKICAg
ICAgICAgICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gSVBDOjpDb25uZWN0aW9uOjpjb25uZWN0
aW9uKGNvbm5lY3Rpb25JRCkpCiAgICAgICAgICAgICAgICAgY29ubmVjdGlvbi0+c2VuZChNZXNz
YWdlczo6U3RvcmFnZUFyZWFNYXA6OkNsZWFyQ2FjaGUoKSwgZGVzdGluYXRpb25TdG9yYWdlQXJl
YUlEKTsKICAgICAgICAgfSk7CkBAIC0xOTIsOSArMTgyLDEwIEBAIHZvaWQgU3RvcmFnZUFyZWE6
Om9wZW5EYXRhYmFzZUFuZEltcG9ydEl0ZW1zSWZOZWVkZWQoKSBjb25zdAogICAgICAgICByZXR1
cm47CiAKICAgICBBU1NFUlQobV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPnN0b3JhZ2VNYW5hZ2Vy
KCktPmxvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcigpKTsKKyAgICBBU1NFUlQobV9xdWV1ZSk7
CiAgICAgLy8gV2Ugb3BlbiB0aGUgZGF0YWJhc2UgaGVyZSBldmVuIGlmIHdlJ3ZlIGFscmVhZHkg
aW1wb3J0ZWQgb3VyIGl0ZW1zIHRvIGVuc3VyZSB0aGF0IHRoZSBkYXRhYmFzZSBpcyBvcGVuIGlm
IHdlIG5lZWQgdG8gd3JpdGUgdG8gaXQuCiAgICAgaWYgKCFtX2xvY2FsU3RvcmFnZURhdGFiYXNl
KQotICAgICAgICBtX2xvY2FsU3RvcmFnZURhdGFiYXNlID0gTG9jYWxTdG9yYWdlRGF0YWJhc2U6
OmNyZWF0ZShtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZS0+c3RvcmFnZU1hbmFnZXIoKS0+d29ya1F1
ZXVlKCksICptX2xvY2FsU3RvcmFnZU5hbWVzcGFjZS0+c3RvcmFnZU1hbmFnZXIoKS0+bG9jYWxT
dG9yYWdlRGF0YWJhc2VUcmFja2VyKCksIG1fc2VjdXJpdHlPcmlnaW4pOworICAgICAgICBtX2xv
Y2FsU3RvcmFnZURhdGFiYXNlID0gTG9jYWxTdG9yYWdlRGF0YWJhc2U6OmNyZWF0ZSgqbV9xdWV1
ZSwgKm1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlLT5zdG9yYWdlTWFuYWdlcigpLT5sb2NhbFN0b3Jh
Z2VEYXRhYmFzZVRyYWNrZXIoKSwgbV9zZWN1cml0eU9yaWdpbik7CiAKICAgICBpZiAobV9kaWRJ
bXBvcnRJdGVtc0Zyb21EYXRhYmFzZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjA3LDEzICsxOTgs
MjEgQEAgdm9pZCBTdG9yYWdlQXJlYTo6ZGlzcGF0Y2hFdmVudHMoSVBDOjpDb25uZWN0aW9uOjpV
bmlxdWVJRCBzb3VyY2VDb25uZWN0aW9uLCB1aW4KIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6Omlz
TWFpbigpKTsKICAgICBmb3IgKGF1dG8gaXQgPSBtX2V2ZW50TGlzdGVuZXJzLmJlZ2luKCksIGVu
ZCA9IG1fZXZlbnRMaXN0ZW5lcnMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBz
b3VyY2VTdG9yYWdlQXJlYUlEID0gaXQtPmZpcnN0ID09IHNvdXJjZUNvbm5lY3Rpb24gPyBzb3Vy
Y2VTdG9yYWdlQXJlYUlEIDogMDsKKyAgICAgICAgc291cmNlU3RvcmFnZUFyZWFJRCA9ICppdCA9
PSBzb3VyY2VDb25uZWN0aW9uID8gc291cmNlU3RvcmFnZUFyZWFJRCA6IDA7CiAKLSAgICAgICAg
UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb25uZWN0aW9uSUQgPSBpdC0+Zmlyc3QsIHNvdXJj
ZVN0b3JhZ2VBcmVhSUQsIGRlc3RpbmF0aW9uU3RvcmFnZUFyZWFJRCA9IGl0LT5zZWNvbmQsIGtl
eSA9IGtleS5pc29sYXRlZENvcHkoKSwgb2xkVmFsdWUgPSBvbGRWYWx1ZS5pc29sYXRlZENvcHko
KSwgbmV3VmFsdWUgPSBuZXdWYWx1ZS5pc29sYXRlZENvcHkoKSwgdXJsU3RyaW5nID0gdXJsU3Ry
aW5nLmlzb2xhdGVkQ29weSgpXSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChb
Y29ubmVjdGlvbklEID0gKml0LCBzb3VyY2VTdG9yYWdlQXJlYUlELCBkZXN0aW5hdGlvblN0b3Jh
Z2VBcmVhSUQgPSBtX2lkZW50aWZpZXIsIGtleSA9IGtleS5pc29sYXRlZENvcHkoKSwgb2xkVmFs
dWUgPSBvbGRWYWx1ZS5pc29sYXRlZENvcHkoKSwgbmV3VmFsdWUgPSBuZXdWYWx1ZS5pc29sYXRl
ZENvcHkoKSwgdXJsU3RyaW5nID0gdXJsU3RyaW5nLmlzb2xhdGVkQ29weSgpXSB7CiAgICAgICAg
ICAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IElQQzo6Q29ubmVjdGlvbjo6Y29ubmVjdGlvbihj
b25uZWN0aW9uSUQpKQogICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6
OlN0b3JhZ2VBcmVhTWFwOjpEaXNwYXRjaFN0b3JhZ2VFdmVudChzb3VyY2VTdG9yYWdlQXJlYUlE
LCBrZXksIG9sZFZhbHVlLCBuZXdWYWx1ZSwgdXJsU3RyaW5nKSwgZGVzdGluYXRpb25TdG9yYWdl
QXJlYUlEKTsKICAgICAgICAgfSk7CiAgICAgfQogfQogCit2b2lkIFN0b3JhZ2VBcmVhOjpzeW5j
VG9EYXRhYmFzZSgpCit7CisgICAgaWYgKCFtX2xvY2FsU3RvcmFnZURhdGFiYXNlKQorICAgICAg
ICByZXR1cm47CisKKyAgICBtX2xvY2FsU3RvcmFnZURhdGFiYXNlLT51cGRhdGVEYXRhYmFzZSgp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYS5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhLmgKaW5kZXggMDAwMTA3NTRjN2Y0
MWEyNjkyZTgzMTdjNTY3OTg1Y2E3MDAyMjc3NS4uNGQzM2M0YTI2M2ViMTY1Y2M2NjgzMTVmOWRm
OTBkNmEyMDBmMDFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9X
ZWJTdG9yYWdlL1N0b3JhZ2VBcmVhLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhLmgKQEAgLTQ5LDE1ICs0OSwxNSBAQCBwdWJsaWM6CiAg
ICAgflN0b3JhZ2VBcmVhKCk7CiAKICAgICBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEmIHNlY3VyaXR5T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9zZWN1cml0eU9yaWdpbjsgfQor
ICAgIHVpbnQ2NF90IGlkZW50aWZpZXIoKSB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KIAotICAg
IHZvaWQgYWRkTGlzdGVuZXIoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCwgdWludDY0X3Qgc3Rv
cmFnZU1hcElEKTsKLSAgICB2b2lkIHJlbW92ZUxpc3RlbmVyKElQQzo6Q29ubmVjdGlvbjo6VW5p
cXVlSUQsIHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCk7Ci0gICAgYm9vbCBoYXNMaXN0ZW5lcihJUEM6
OkNvbm5lY3Rpb246OlVuaXF1ZUlELCB1aW50NjRfdCBzdG9yYWdlTWFwSUQpIGNvbnN0OworICAg
IHZvaWQgYWRkTGlzdGVuZXIoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCk7CisgICAgdm9pZCBy
ZW1vdmVMaXN0ZW5lcihJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEKTsKKyAgICBib29sIGhhc0xp
c3RlbmVyKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgY29ubmVjdGlvbklEKSBjb25zdDsKIAog
ICAgIFJlZjxTdG9yYWdlQXJlYT4gY2xvbmUoKSBjb25zdDsKIAogICAgIHZvaWQgc2V0SXRlbShJ
UEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIHNvdXJjZUNvbm5lY3Rpb24sIHVpbnQ2NF90IHNvdXJj
ZVN0b3JhZ2VBcmVhSUQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlLCBj
b25zdCBTdHJpbmcmIHVybFN0cmluZywgYm9vbCYgcXVvdGFFeGNlcHRpb24pOwotICAgIHZvaWQg
c2V0SXRlbXMoY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mKTsKICAgICB2b2lkIHJlbW92
ZUl0ZW0oSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBzb3VyY2VDb25uZWN0aW9uLCB1aW50NjRf
dCBzb3VyY2VTdG9yYWdlQXJlYUlELCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB1
cmxTdHJpbmcpOwogICAgIHZvaWQgY2xlYXIoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBzb3Vy
Y2VDb25uZWN0aW9uLCB1aW50NjRfdCBzb3VyY2VTdG9yYWdlQXJlYUlELCBjb25zdCBTdHJpbmcm
IHVybFN0cmluZyk7CiAKQEAgLTY4LDYgKzY4LDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgb3Bl
bkRhdGFiYXNlQW5kSW1wb3J0SXRlbXNJZk5lZWRlZCgpIGNvbnN0OwogCisgICAgdm9pZCBzZXRX
b3JrUXVldWUoUmVmUHRyPFdvcmtRdWV1ZT4mJiBxdWV1ZSkgeyBtX3F1ZXVlID0gV1RGTW92ZShx
dWV1ZSk7IH0KKworICAgIHZvaWQgc3luY1RvRGF0YWJhc2UoKTsKKwogcHJpdmF0ZToKICAgICBT
dG9yYWdlQXJlYShMb2NhbFN0b3JhZ2VOYW1lc3BhY2UqLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGEmLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpOwogCkBAIC04Miw3ICs4NiwxMCBA
QCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fcXVvdGFJbkJ5dGVzIHsgMCB9OwogCiAgICAgUmVm
UHRyPFdlYkNvcmU6OlN0b3JhZ2VNYXA+IG1fc3RvcmFnZU1hcDsKLSAgICBIYXNoU2V0PHN0ZDo6
cGFpcjxJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCB1aW50NjRfdD4+IG1fZXZlbnRMaXN0ZW5l
cnM7CisgICAgSGFzaFNldDxJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEPiBtX2V2ZW50TGlzdGVu
ZXJzOworCisgICAgdWludDY0X3QgbV9pZGVudGlmaWVyOworICAgIFJlZlB0cjxXb3JrUXVldWU+
IG1fcXVldWU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3Bw
CmluZGV4IDNlM2UwYjQ2NThlMjI4ZjEyMjU5NTcyODIxMzE1Yzk3NDVjYjY2MGQuLjNiNWIzM2Jl
NTZhZGNiNTg0NjUzZTQ4YTU0NzQzMDliMWRhZDQ2OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcApA
QCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIlNlc3Npb25TdG9yYWdlTmFtZXNwYWNlLmgiCiAj
aW5jbHVkZSAiU3RvcmFnZUFyZWEuaCIKICNpbmNsdWRlICJTdG9yYWdlQXJlYU1hcE1lc3NhZ2Vz
LmgiCi0jaW5jbHVkZSAiU3RvcmFnZU1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlRyYW5z
aWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+CkBAIC00MSw3ICs0MCw2
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0RW5jb2RpbmcuaD4KICNpbmNsdWRlIDxtZW1vcnk+
CiAjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgotI2luY2x1ZGUgPHd0Zi90aHJlYWRzL0JpbmFy
eVNlbWFwaG9yZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwpAQCAtNTAsNTQwICs0OCwyNDIgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBjb25z
dCB1bnNpZ25lZCBTdG9yYWdlTWFuYWdlcjo6bG9jYWxTdG9yYWdlRGF0YWJhc2VRdW90YUluQnl0
ZXMgPSA1ICogMTAyNCAqIDEwMjQ7CiAKIFN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlTWFuYWdlcihT
dHJpbmcmJiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpCi0gICAgOiBtX3F1ZXVlKFdvcmtRdWV1ZTo6
Y3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0LlN0b3JhZ2VNYW5hZ2VyIikpCiB7Ci0gICAgQVNTRVJU
KFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAot
ICAgIC8vIE1ha2Ugc3VyZSB0aGUgZW5jb2RpbmcgaXMgaW5pdGlhbGl6ZWQgYmVmb3JlIHdlIHN0
YXJ0IGRpc3BhdGNoaW5nIHRoaW5ncyB0byB0aGUgcXVldWUuCi0gICAgVVRGOEVuY29kaW5nKCk7
CiAgICAgaWYgKCFsb2NhbFN0b3JhZ2VEaXJlY3RvcnkuaXNOdWxsKCkpCi0gICAgICAgIG1fbG9j
YWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyID0gTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpj
cmVhdGUobV9xdWV1ZS5jb3B5UmVmKCksIFdURk1vdmUobG9jYWxTdG9yYWdlRGlyZWN0b3J5KSk7
CisgICAgICAgIG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyID0gTG9jYWxTdG9yYWdlRGF0
YWJhc2VUcmFja2VyOjpjcmVhdGUoV1RGTW92ZShsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpKTsKIH0K
IAogU3RvcmFnZU1hbmFnZXI6On5TdG9yYWdlTWFuYWdlcigpCiB7Ci0gICAgQVNTRVJUKFJ1bkxv
b3A6OmlzTWFpbigpKTsKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIH0KIAogdm9p
ZCBTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3Qg
c3RvcmFnZU5hbWVzcGFjZUlELCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpCiB7Ci0gICAgQVNTRVJU
KFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzdG9yYWdlTmFtZXNwYWNlSUQsIHF1b3RhSW5CeXRl
c10oKSBtdXRhYmxlIHsKLSAgICAgICAgbV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMuZW5zdXJl
KHN0b3JhZ2VOYW1lc3BhY2VJRCwgW3F1b3RhSW5CeXRlc10gewotICAgICAgICAgICAgcmV0dXJu
IFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlOjpjcmVhdGUocXVvdGFJbkJ5dGVzKTsKLSAgICAgICAg
fSk7Ci0gICAgfSk7Ci19CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLXZvaWQg
U3RvcmFnZU1hbmFnZXI6OmRlc3Ryb3lTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBz
dG9yYWdlTmFtZXNwYWNlSUQpCi17Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAg
ICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBzdG9yYWdlTmFtZXNwYWNlSURdIHsKLSAgICAgICAgQVNTRVJUKG1fc2Vzc2lvblN0b3JhZ2VO
YW1lc3BhY2VzLmNvbnRhaW5zKHN0b3JhZ2VOYW1lc3BhY2VJRCkpOwotICAgICAgICBpZiAoYXV0
byogc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UgPSBtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlcy5n
ZXQoc3RvcmFnZU5hbWVzcGFjZUlEKSkgewotICAgICAgICAgICAgaWYgKHNlc3Npb25TdG9yYWdl
TmFtZXNwYWNlLT5hbGxvd2VkQ29ubmVjdGlvbnMoKS5pc0VtcHR5KCkpCi0gICAgICAgICAgICAg
ICAgbV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMucmVtb3ZlKHN0b3JhZ2VOYW1lc3BhY2VJRCk7
Ci0gICAgICAgIH0KLSAgICB9KTsKKyAgICBtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlcy5lbnN1
cmUoc3RvcmFnZU5hbWVzcGFjZUlELCBbcXVvdGFJbkJ5dGVzXSB7CisgICAgICAgIHJldHVybiBT
ZXNzaW9uU3RvcmFnZU5hbWVzcGFjZTo6Y3JlYXRlKHF1b3RhSW5CeXRlcyk7CisgICAgIH0pOwog
fQogCi12b2lkIFN0b3JhZ2VNYW5hZ2VyOjphZGRBbGxvd2VkU2Vzc2lvblN0b3JhZ2VOYW1lc3Bh
Y2VDb25uZWN0aW9uKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgSVBDOjpDb25uZWN0aW9u
JiBhbGxvd2VkQ29ubmVjdGlvbikKK3ZvaWQgU3RvcmFnZU1hbmFnZXI6OmRlc3Ryb3lTZXNzaW9u
U3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQpCiB7Ci0gICAgQVNT
RVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBhdXRvIGFsbG93ZWRDb25uZWN0aW9uSUQgPSBh
bGxvd2VkQ29ubmVjdGlvbi51bmlxdWVJRCgpOwotICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9jb25u
ZWN0aW9ucy5hZGQoYWxsb3dlZENvbm5lY3Rpb25JRCk7Ci0gICAgaWYgKGFkZFJlc3VsdC5pc05l
d0VudHJ5KQotICAgICAgICBhbGxvd2VkQ29ubmVjdGlvbi5hZGRXb3JrUXVldWVNZXNzYWdlUmVj
ZWl2ZXIoTWVzc2FnZXM6OlN0b3JhZ2VNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1f
cXVldWUuZ2V0KCksIHRoaXMpOwotCi0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgYWxsb3dlZENvbm5lY3Rpb25JRCwgc3RvcmFnZU5h
bWVzcGFjZUlEXSgpIG11dGFibGUgewotICAgICAgICBBU1NFUlQobV9zZXNzaW9uU3RvcmFnZU5h
bWVzcGFjZXMuY29udGFpbnMoc3RvcmFnZU5hbWVzcGFjZUlEKSk7Ci0KLSAgICAgICAgbV9zZXNz
aW9uU3RvcmFnZU5hbWVzcGFjZXMuZ2V0KHN0b3JhZ2VOYW1lc3BhY2VJRCktPmFkZEFsbG93ZWRD
b25uZWN0aW9uKGFsbG93ZWRDb25uZWN0aW9uSUQpOwotICAgIH0pOwotfQorICAgIEFTU0VSVCgh
UnVuTG9vcDo6aXNNYWluKCkpOwogCi12b2lkIFN0b3JhZ2VNYW5hZ2VyOjpyZW1vdmVBbGxvd2Vk
U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0aW9uKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3Bh
Y2VJRCwgSVBDOjpDb25uZWN0aW9uJiBhbGxvd2VkQ29ubmVjdGlvbikKLXsKLSAgICBBU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOwotICAgIGF1dG8gYWxsb3dlZENvbm5lY3Rpb25JRCA9IGFsbG93
ZWRDb25uZWN0aW9uLnVuaXF1ZUlEKCk7Ci0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgYWxsb3dlZENvbm5lY3Rpb25JRCwgc3RvcmFn
ZU5hbWVzcGFjZUlEXSgpIG11dGFibGUgewotICAgICAgICBBU1NFUlQobV9zZXNzaW9uU3RvcmFn
ZU5hbWVzcGFjZXMuY29udGFpbnMoc3RvcmFnZU5hbWVzcGFjZUlEKSk7Ci0gICAgICAgIGlmIChh
dXRvKiBzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSA9IG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2Vz
LmdldChzdG9yYWdlTmFtZXNwYWNlSUQpKQotICAgICAgICAgICAgc2Vzc2lvblN0b3JhZ2VOYW1l
c3BhY2UtPnJlbW92ZUFsbG93ZWRDb25uZWN0aW9uKGFsbG93ZWRDb25uZWN0aW9uSUQpOwotICAg
IH0pOworICAgIEFTU0VSVChtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlcy5jb250YWlucyhzdG9y
YWdlTmFtZXNwYWNlSUQpKTsKKyAgICBpZiAoYXV0byogc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2Ug
PSBtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlcy5nZXQoc3RvcmFnZU5hbWVzcGFjZUlEKSkKKyAg
ICAgICAgbV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMucmVtb3ZlKHN0b3JhZ2VOYW1lc3BhY2VJ
RCk7CiB9CiAKIHZvaWQgU3RvcmFnZU1hbmFnZXI6OmNsb25lU2Vzc2lvblN0b3JhZ2VOYW1lc3Bh
Y2UodWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCB1aW50NjRfdCBuZXdTdG9yYWdlTmFtZXNw
YWNlSUQpCiB7Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBtX3F1ZXVlLT5k
aXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzdG9yYWdlTmFt
ZXNwYWNlSUQsIG5ld1N0b3JhZ2VOYW1lc3BhY2VJRF0gewotICAgICAgICBTZXNzaW9uU3RvcmFn
ZU5hbWVzcGFjZSogc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UgPSBtX3Nlc3Npb25TdG9yYWdlTmFt
ZXNwYWNlcy5nZXQoc3RvcmFnZU5hbWVzcGFjZUlEKTsKLSAgICAgICAgaWYgKCFzZXNzaW9uU3Rv
cmFnZU5hbWVzcGFjZSkgewotICAgICAgICAgICAgLy8gRklYTUU6IFdlIGNhbiBnZXQgaW50byB0
aGlzIHNpdHVhdGlvbiBpZiBzb21lb25lIGNsb3NlcyB0aGUgb3JpZ2luYXRpbmcgcGFnZSBmcm9t
IHdpdGhpbiBhCi0gICAgICAgICAgICAvLyBjcmVhdGVOZXdQYWdlIGNhbGxiYWNrLiBXZSBiYWls
IGZvciBub3csIGJ1dCB3ZSBzaG91bGQgcmVhbGx5IGZpbmQgYSB3YXkgdG8ga2VlcCB0aGUgc2Vz
c2lvbiBzdG9yYWdlIGFsaXZlCi0gICAgICAgICAgICAvLyBzbyB3ZSB3ZSdsbCBjbG9uZSB0aGUg
c2Vzc2lvbiBzdG9yYWdlIGNvcnJlY3RseS4KLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotCi0gICAgICAgIFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKiBuZXdTZXNzaW9uU3RvcmFnZU5h
bWVzcGFjZSA9IG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLmdldChuZXdTdG9yYWdlTmFtZXNw
YWNlSUQpOwotICAgICAgICBBU1NFUlQobmV3U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UpOworICAg
IEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgICAgIHNlc3Npb25TdG9yYWdlTmFt
ZXNwYWNlLT5jbG9uZVRvKCpuZXdTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSk7CisgICAgU2Vzc2lv
blN0b3JhZ2VOYW1lc3BhY2UqIHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlID0gbV9zZXNzaW9uU3Rv
cmFnZU5hbWVzcGFjZXMuZ2V0KHN0b3JhZ2VOYW1lc3BhY2VJRCk7CisgICAgaWYgKCFzZXNzaW9u
U3RvcmFnZU5hbWVzcGFjZSkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmICghbV9sb2Nh
bFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIpIHsKLSAgICAgICAgICAgIGlmIChhdXRvKiBsb2NhbFN0
b3JhZ2VOYW1lc3BhY2UgPSBtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZXMuZ2V0KHN0b3JhZ2VOYW1l
c3BhY2VJRCkpIHsKLSAgICAgICAgICAgICAgICBMb2NhbFN0b3JhZ2VOYW1lc3BhY2UqIG5ld2xv
Y2FsU3RvcmFnZU5hbWVzcGFjZSA9IGdldE9yQ3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKG5l
d1N0b3JhZ2VOYW1lc3BhY2VJRCk7Ci0gICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlTmFtZXNw
YWNlLT5jbG9uZVRvKCpuZXdsb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOwotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0gICAgfSk7Ci19CisgICAgU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UqIG5ld1Nl
c3Npb25TdG9yYWdlTmFtZXNwYWNlID0gZ2V0T3JDcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFj
ZShuZXdTdG9yYWdlTmFtZXNwYWNlSUQpOworICAgIEFTU0VSVChuZXdTZXNzaW9uU3RvcmFnZU5h
bWVzcGFjZSk7CiAKLXZvaWQgU3RvcmFnZU1hbmFnZXI6OnByb2Nlc3NEaWRDbG9zZUNvbm5lY3Rp
b24oSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQotewotICAgIEFTU0VSVChSdW5Mb29wOjpp
c01haW4oKSk7Ci0gICAgaWYgKG1fY29ubmVjdGlvbnMucmVtb3ZlKGNvbm5lY3Rpb24udW5pcXVl
SUQoKSkpCi0gICAgICAgIGNvbm5lY3Rpb24ucmVtb3ZlV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVy
KE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKLQotICAg
IG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IGNvbm5lY3Rpb25JRCA9IGNvbm5lY3Rpb24udW5pcXVlSUQoKV0oKSBtdXRhYmxlIHsKLSAgICAg
ICAgVmVjdG9yPHN0ZDo6cGFpcjxJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCB1aW50NjRfdD4+
IGNvbm5lY3Rpb25BbmRTdG9yYWdlTWFwSURQYWlyc1RvUmVtb3ZlOwotICAgICAgICBmb3IgKGF1
dG8mIHN0b3JhZ2VBcmVhIDogbV9zdG9yYWdlQXJlYXNCeUNvbm5lY3Rpb24pIHsKLSAgICAgICAg
ICAgIGlmIChzdG9yYWdlQXJlYS5rZXkuZmlyc3QgIT0gY29ubmVjdGlvbklEKQotICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBzdG9yYWdlQXJlYS52
YWx1ZS0+cmVtb3ZlTGlzdGVuZXIoc3RvcmFnZUFyZWEua2V5LmZpcnN0LCBzdG9yYWdlQXJlYS5r
ZXkuc2Vjb25kKTsKLSAgICAgICAgICAgIGNvbm5lY3Rpb25BbmRTdG9yYWdlTWFwSURQYWlyc1Rv
UmVtb3ZlLmFwcGVuZChzdG9yYWdlQXJlYS5rZXkpOwotICAgICAgICB9Ci0gICAgICAgIAotICAg
ICAgICBmb3IgKGF1dG8mIHBhaXIgOiBjb25uZWN0aW9uQW5kU3RvcmFnZU1hcElEUGFpcnNUb1Jl
bW92ZSkKLSAgICAgICAgICAgIG1fc3RvcmFnZUFyZWFzQnlDb25uZWN0aW9uLnJlbW92ZShwYWly
KTsKLQotICAgICAgICBWZWN0b3I8dWludDY0X3Q+IHNlc3Npb25TdG9yYWdlTmFtZVNwYWNlSURz
VG9SZW1vdmU7Ci0gICAgICAgIGZvciAoYXV0byYgc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UgOiBt
X3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlcykgewotICAgICAgICAgICAgaWYgKHNlc3Npb25TdG9y
YWdlTmFtZXNwYWNlLnZhbHVlLT5hbGxvd2VkQ29ubmVjdGlvbnMoKS5jb250YWlucyhjb25uZWN0
aW9uSUQpKQotICAgICAgICAgICAgICAgIHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlLnZhbHVlLT5y
ZW1vdmVBbGxvd2VkQ29ubmVjdGlvbihjb25uZWN0aW9uSUQpOwotICAgICAgICAgICAgCi0gICAg
ICAgICAgICBpZiAoc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UudmFsdWUtPmFsbG93ZWRDb25uZWN0
aW9ucygpLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICBzZXNzaW9uU3RvcmFnZU5hbWVTcGFj
ZUlEc1RvUmVtb3ZlLmFwcGVuZChzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS5rZXkpOwotICAgICAg
ICB9Ci0gICAgICAgIAotICAgICAgICBmb3IgKGF1dG8gaWQgOiBzZXNzaW9uU3RvcmFnZU5hbWVT
cGFjZUlEc1RvUmVtb3ZlKQotICAgICAgICAgICAgbV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMu
cmVtb3ZlKGlkKTsKLSAgICB9KTsKKyAgICBzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS0+Y2xvbmVU
bygqbmV3U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UpOwogfQogCiB2b2lkIFN0b3JhZ2VNYW5hZ2Vy
OjpnZXRTZXNzaW9uU3RvcmFnZU9yaWdpbnMoRnVuY3Rpb248dm9pZChIYXNoU2V0PFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgQVNT
RVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICBIYXNoU2V0PFNlY3VyaXR5
T3JpZ2luRGF0YT4gb3JpZ2luczsKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAot
ICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlIDogbV9zZXNz
aW9uU3RvcmFnZU5hbWVzcGFjZXMudmFsdWVzKCkpIHsKLSAgICAgICAgICAgIGZvciAoYXV0byYg
b3JpZ2luIDogc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UtPm9yaWdpbnMoKSkKLSAgICAgICAgICAg
ICAgICBvcmlnaW5zLmFkZChjcm9zc1RocmVhZENvcHkob3JpZ2luKSk7Ci0gICAgICAgIH0KKyAg
ICBIYXNoU2V0PFNlY3VyaXR5T3JpZ2luRGF0YT4gb3JpZ2luczsKKyAgICBmb3IgKGNvbnN0IGF1
dG8mIHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlIDogbV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMu
dmFsdWVzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvJiBvcmlnaW4gOiBzZXNzaW9uU3RvcmFnZU5h
bWVzcGFjZS0+b3JpZ2lucygpKQorICAgICAgICBvcmlnaW5zLmFkZChjcm9zc1RocmVhZENvcHko
b3JpZ2luKSk7CisgICAgfQogCi0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbb3Jp
Z2lucyA9IFdURk1vdmUob3JpZ2lucyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihXVEZNb3ZlKG9yaWdpbnMpKTsKLSAgICAgICAgfSk7CisgICAgUnVuTG9vcDo6bWFpbigpLmRp
c3BhdGNoKFtvcmlnaW5zID0gV1RGTW92ZShvcmlnaW5zKSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoV1RGTW92ZShvcmlnaW5zKSk7CiAgICAgfSk7CiB9CiAKIHZvaWQgU3RvcmFnZU1h
bmFnZXI6OmRlbGV0ZVNlc3Npb25TdG9yYWdlT3JpZ2lucyhGdW5jdGlvbjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBt
X3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUg
ewotICAgICAgICBmb3IgKGF1dG8mIHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlIDogbV9zZXNzaW9u
U3RvcmFnZU5hbWVzcGFjZXMudmFsdWVzKCkpCi0gICAgICAgICAgICBzZXNzaW9uU3RvcmFnZU5h
bWVzcGFjZS0+Y2xlYXJBbGxTdG9yYWdlQXJlYXMoKTsKKyAgICBBU1NFUlQoIVJ1bkxvb3A6Omlz
TWFpbigpKTsKIAotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwotICAgIH0pOworICAgIGZvciAoYXV0byYgc2Vzc2lvblN0b3JhZ2VO
YW1lc3BhY2UgOiBtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkKKyAgICAgICAg
c2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UtPmNsZWFyQWxsU3RvcmFnZUFyZWFzKCk7CisKKyAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQog
CiB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVTZXNzaW9uU3RvcmFnZUVudHJpZXNGb3JPcmln
aW5zKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiBvcmlnaW5zLCBG
dW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgQVNTRVJUKFJ1bkxv
b3A6OmlzTWFpbigpKTsKLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBjb3BpZWRPcmlnaW5zID0gY3Jvc3NUaHJlYWRDb3B5KG9yaWdp
bnMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11
dGFibGUgewotICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IGNvcGllZE9yaWdpbnMpIHsKLSAg
ICAgICAgICAgIGZvciAoYXV0byYgc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UgOiBtX3Nlc3Npb25T
dG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkKLSAgICAgICAgICAgICAgICBzZXNzaW9uU3RvcmFn
ZU5hbWVzcGFjZS0+Y2xlYXJTdG9yYWdlQXJlYXNNYXRjaGluZ09yaWdpbihvcmlnaW4pOwotICAg
ICAgICB9CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICAgICAgUnVuTG9v
cDo6bWFpbigpLmRpc3BhdGNoKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICB9KTsK
KyAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IG9yaWdpbnMpIHsKKyAgICAgICAgZm9yIChhdXRvJiBz
ZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSA6IG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLnZhbHVl
cygpKQorICAgICAgICAgICAgc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UtPmNsZWFyU3RvcmFnZUFy
ZWFzTWF0Y2hpbmdPcmlnaW4ob3JpZ2luKTsKKyAgICB9CisKKyAgICBSdW5Mb29wOjptYWluKCku
ZGlzcGF0Y2goV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIFN0b3JhZ2VN
YW5hZ2VyOjpnZXRMb2NhbFN0b3JhZ2VPcmlnaW5zKEZ1bmN0aW9uPHZvaWQoSGFzaFNldDxXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAg
IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgSGFzaFNldDxTZWN1
cml0eU9yaWdpbkRhdGE+IG9yaWdpbnM7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7
CiAKLSAgICAgICAgaWYgKG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyKSB7Ci0gICAgICAg
ICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLT5v
cmlnaW5zKCkpCisgICAgSGFzaFNldDxTZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdpbnM7CisgICAg
aWYgKG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyKSB7CisgICAgZm9yIChhdXRvJiBvcmln
aW4gOiBtX2xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci0+b3JpZ2lucygpKQorICAgICAgICBv
cmlnaW5zLmFkZChvcmlnaW4uaXNvbGF0ZWRDb3B5KCkpOworICAgIH0gZWxzZSB7CisgICAgICAg
IGZvciAoY29uc3QgYXV0byYgbG9jYWxTdG9yYWdlTmFtZVNwYWNlIDogbV9sb2NhbFN0b3JhZ2VO
YW1lc3BhY2VzLnZhbHVlcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IGxv
Y2FsU3RvcmFnZU5hbWVTcGFjZS0+ZXBoZW1lcmFsT3JpZ2lucygpKQogICAgICAgICAgICAgICAg
IG9yaWdpbnMuYWRkKG9yaWdpbi5pc29sYXRlZENvcHkoKSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGxvY2FsU3RvcmFnZU5hbWVTcGFjZSA6IG1fbG9j
YWxTdG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkgewotICAgICAgICAgICAgICAgIGZvciAoYXV0
byYgb3JpZ2luIDogbG9jYWxTdG9yYWdlTmFtZVNwYWNlLT5lcGhlbWVyYWxPcmlnaW5zKCkpCi0g
ICAgICAgICAgICAgICAgICAgIG9yaWdpbnMuYWRkKG9yaWdpbi5pc29sYXRlZENvcHkoKSk7Ci0g
ICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICB9CiAKLSAgICAgICAgZm9yIChhdXRvJiB0cmFu
c2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UgOiBtX3RyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVz
cGFjZXMudmFsdWVzKCkpIHsKLSAgICAgICAgICAgIGZvciAoYXV0byYgb3JpZ2luIDogdHJhbnNp
ZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlLT5vcmlnaW5zKCkpCi0gICAgICAgICAgICAgICAgb3Jp
Z2lucy5hZGQob3JpZ2luLmlzb2xhdGVkQ29weSgpKTsKLSAgICAgICAgfQorICAgIGZvciAoYXV0
byYgdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlIDogbV90cmFuc2llbnRMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2VzLnZhbHVlcygpKSB7CisgICAgICAgIGZvciAoYXV0byYgb3JpZ2luIDogdHJh
bnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlLT5vcmlnaW5zKCkpCisgICAgICAgICAgICBvcmln
aW5zLmFkZChvcmlnaW4uaXNvbGF0ZWRDb3B5KCkpOworICAgIH0KIAotICAgICAgICBSdW5Mb29w
OjptYWluKCkuZGlzcGF0Y2goW29yaWdpbnMgPSBXVEZNb3ZlKG9yaWdpbnMpLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShvcmlnaW5zKSk7Ci0gICAgICAgIH0pOwor
ICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbb3JpZ2lucyA9IFdURk1vdmUob3JpZ2lucyks
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJs
ZSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUob3JpZ2lucykpOwogICAgIH0p
OwogfQogCiB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpnZXRMb2NhbFN0b3JhZ2VPcmlnaW5EZXRhaWxz
KEZ1bmN0aW9uPHZvaWQoVmVjdG9yPExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6T3JpZ2lu
RGV0YWlscz4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgQVNTRVJUKFJ1bkxvb3A6
OmlzTWFpbigpKTsKLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICBWZWN0b3I8TG9jYWxTdG9yYWdlRGF0YWJhc2VU
cmFja2VyOjpPcmlnaW5EZXRhaWxzPiBvcmlnaW5EZXRhaWxzOwotICAgICAgICBpZiAobV9sb2Nh
bFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIpCi0gICAgICAgICAgICBvcmlnaW5EZXRhaWxzID0gbV9s
b2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXItPm9yaWdpbkRldGFpbHMoKS5pc29sYXRlZENvcHko
KTsKLQotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW29yaWdpbkRldGFpbHMgPSBX
VEZNb3ZlKG9yaWdpbkRldGFpbHMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
V1RGTW92ZShvcmlnaW5EZXRhaWxzKSk7Ci0gICAgICAgIH0pOwotICAgIH0pOwotfQotCi12b2lk
IFN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVMb2NhbFN0b3JhZ2VFbnRyaWVzRm9yT3JpZ2luKGNvbnN0
IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4pCi17Ci0gICAgQVNTRVJUKFJ1bkxv
b3A6OmlzTWFpbigpKTsKLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBjb3BpZWRPcmlnaW4gPSBzZWN1cml0eU9yaWdpbi5pc29sYXRl
ZENvcHkoKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgZm9yIChhdXRvJiBsb2NhbFN0b3JhZ2VOYW1l
c3BhY2UgOiBtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZXMudmFsdWVzKCkpCi0gICAgICAgICAgICBs
b2NhbFN0b3JhZ2VOYW1lc3BhY2UtPmNsZWFyU3RvcmFnZUFyZWFzTWF0Y2hpbmdPcmlnaW4oY29w
aWVkT3JpZ2luKTsKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgICAgICBm
b3IgKGF1dG8mIHRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSA6IG1fdHJhbnNpZW50TG9j
YWxTdG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkKLSAgICAgICAgICAgIHRyYW5zaWVudExvY2Fs
U3RvcmFnZU5hbWVzcGFjZS0+Y2xlYXJTdG9yYWdlQXJlYXNNYXRjaGluZ09yaWdpbihjb3BpZWRP
cmlnaW4pOworICAgIFZlY3RvcjxMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6Ok9yaWdpbkRl
dGFpbHM+IG9yaWdpbkRldGFpbHM7CisgICAgaWYgKG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFj
a2VyKQorICAgICAgICBvcmlnaW5EZXRhaWxzID0gY3Jvc3NUaHJlYWRDb3B5KG1fbG9jYWxTdG9y
YWdlRGF0YWJhc2VUcmFja2VyLT5vcmlnaW5EZXRhaWxzKCkpOwogCi0gICAgICAgIGlmIChtX2xv
Y2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcikKLSAgICAgICAgICAgIG1fbG9jYWxTdG9yYWdlRGF0
YWJhc2VUcmFja2VyLT5kZWxldGVEYXRhYmFzZVdpdGhPcmlnaW4oY29waWVkT3JpZ2luKTsKKyAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW29yaWdpbkRldGFpbHMgPSBXVEZNb3ZlKG9yaWdp
bkRldGFpbHMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XSgpIG11dGFibGUgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKG9yaWdpbkRl
dGFpbHMpKTsKICAgICB9KTsKIH0KIAogdm9pZCBTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlTG9jYWxT
dG9yYWdlT3JpZ2luc01vZGlmaWVkU2luY2UoV2FsbFRpbWUgdGltZSwgRnVuY3Rpb248dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7
Ci0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgdGltZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0oKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2Vy
KSB7Ci0gICAgICAgICAgICBhdXRvIG9yaWdpbnNUb0RlbGV0ZSA9IG1fbG9jYWxTdG9yYWdlRGF0
YWJhc2VUcmFja2VyLT5kYXRhYmFzZXNNb2RpZmllZFNpbmNlKHRpbWUpOwotICAgICAgICAgICAg
Ci0gICAgICAgICAgICBmb3IgKGF1dG8mIHRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSA6
IG1fdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkKLSAgICAgICAgICAg
ICAgICB0cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPmNsZWFyQWxsU3RvcmFnZUFyZWFz
KCk7Ci0KLSAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgb3JpZ2luIDogb3JpZ2luc1RvRGVs
ZXRlKSB7Ci0gICAgICAgICAgICAgICAgZm9yIChhdXRvJiBsb2NhbFN0b3JhZ2VOYW1lc3BhY2Ug
OiBtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZXMudmFsdWVzKCkpCi0gICAgICAgICAgICAgICAgICAg
IGxvY2FsU3RvcmFnZU5hbWVzcGFjZS0+Y2xlYXJTdG9yYWdlQXJlYXNNYXRjaGluZ09yaWdpbihv
cmlnaW4pOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIG1fbG9jYWxTdG9yYWdl
RGF0YWJhc2VUcmFja2VyLT5kZWxldGVEYXRhYmFzZVdpdGhPcmlnaW4ob3JpZ2luKTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGZvciAoYXV0byYgbG9jYWxT
dG9yYWdlTmFtZXNwYWNlIDogbV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2VzLnZhbHVlcygpKQotICAg
ICAgICAgICAgICAgIGxvY2FsU3RvcmFnZU5hbWVzcGFjZS0+Y2xlYXJBbGxTdG9yYWdlQXJlYXMo
KTsKLSAgICAgICAgfQorICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgICAg
IFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0g
ICAgfSk7Ci19CisgICAgaWYgKG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyKSB7CisgICAg
ICAgIGF1dG8gb3JpZ2luc1RvRGVsZXRlID0gbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIt
PmRhdGFiYXNlc01vZGlmaWVkU2luY2UodGltZSk7CiAKLXZvaWQgU3RvcmFnZU1hbmFnZXI6OmRl
bGV0ZUxvY2FsU3RvcmFnZUVudHJpZXNGb3JPcmlnaW5zKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGE+JiBvcmlnaW5zLCBGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCi17Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBtX3F1ZXVl
LT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb3BpZWRP
cmlnaW5zID0gY3Jvc3NUaHJlYWRDb3B5KG9yaWdpbnMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICBmb3IgKGF1dG8m
IG9yaWdpbiA6IGNvcGllZE9yaWdpbnMpIHsKKyAgICAgICAgZm9yIChhdXRvJiB0cmFuc2llbnRM
b2NhbFN0b3JhZ2VOYW1lc3BhY2UgOiBtX3RyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZXMu
dmFsdWVzKCkpCisgICAgICAgICAgICB0cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPmNs
ZWFyQWxsU3RvcmFnZUFyZWFzKCk7CisKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBvcmlnaW4g
OiBvcmlnaW5zVG9EZWxldGUpIHsKICAgICAgICAgICAgIGZvciAoYXV0byYgbG9jYWxTdG9yYWdl
TmFtZXNwYWNlIDogbV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2VzLnZhbHVlcygpKQogICAgICAgICAg
ICAgICAgIGxvY2FsU3RvcmFnZU5hbWVzcGFjZS0+Y2xlYXJTdG9yYWdlQXJlYXNNYXRjaGluZ09y
aWdpbihvcmlnaW4pOwotCi0gICAgICAgICAgICBmb3IgKGF1dG8mIHRyYW5zaWVudExvY2FsU3Rv
cmFnZU5hbWVzcGFjZSA6IG1fdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMo
KSkKLSAgICAgICAgICAgICAgICB0cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPmNsZWFy
U3RvcmFnZUFyZWFzTWF0Y2hpbmdPcmlnaW4ob3JpZ2luKTsKLQotICAgICAgICAgICAgaWYgKG1f
bG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyKQotICAgICAgICAgICAgICAgIG1fbG9jYWxTdG9y
YWdlRGF0YWJhc2VUcmFja2VyLT5kZWxldGVEYXRhYmFzZVdpdGhPcmlnaW4ob3JpZ2luKTsKKyAg
ICAgICAgICAgIG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLT5kZWxldGVEYXRhYmFzZVdp
dGhPcmlnaW4ob3JpZ2luKTsKICAgICAgICAgfQotCi0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5k
aXNwYXRjaChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQg
U3RvcmFnZU1hbmFnZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU1hcChJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCwgdWludDY0X3Qgc3RvcmFnZU5hbWVzcGFj
ZUlELCBTZWN1cml0eU9yaWdpbkRhdGEmJiBzZWN1cml0eU9yaWdpbkRhdGEpCi17Ci0gICAgQVNT
RVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgYXV0byBjb25uZWN0aW9uSUQgPSBjb25uZWN0
aW9uLnVuaXF1ZUlEKCk7Ci0gICAgc3RkOjpwYWlyPElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQs
IHVpbnQ2NF90PiBjb25uZWN0aW9uQW5kU3RvcmFnZU1hcElEUGFpcihjb25uZWN0aW9uSUQsIHN0
b3JhZ2VNYXBJRCk7Ci0KLSAgICBBU1NFUlQoKEhhc2hNYXA8c3RkOjpwYWlyPElQQzo6Q29ubmVj
dGlvbjo6VW5pcXVlSUQsIHVpbnQ2NF90PiwgUmVmUHRyPFN0b3JhZ2VBcmVhPj46OmlzVmFsaWRL
ZXkoY29ubmVjdGlvbkFuZFN0b3JhZ2VNYXBJRFBhaXIpKSk7Ci0KLSAgICBhdXRvIHJlc3VsdCA9
IG1fc3RvcmFnZUFyZWFzQnlDb25uZWN0aW9uLmFkZChjb25uZWN0aW9uQW5kU3RvcmFnZU1hcElE
UGFpciwgbnVsbHB0cik7Ci0gICAgQVNTRVJUKHJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICBBU1NF
UlQoKEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxMb2NhbFN0b3JhZ2VOYW1lc3BhY2U+Pjo6aXNW
YWxpZEtleShzdG9yYWdlTmFtZXNwYWNlSUQpKSk7Ci0KLSAgICBMb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2UqIGxvY2FsU3RvcmFnZU5hbWVzcGFjZSA9IGdldE9yQ3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNw
YWNlKHN0b3JhZ2VOYW1lc3BhY2VJRCk7Ci0gICAgQVNTRVJUKGxvY2FsU3RvcmFnZU5hbWVzcGFj
ZSk7Ci0KLSAgICBhdXRvIHN0b3JhZ2VBcmVhID0gbG9jYWxTdG9yYWdlTmFtZXNwYWNlLT5nZXRP
ckNyZWF0ZVN0b3JhZ2VBcmVhKFdURk1vdmUoc2VjdXJpdHlPcmlnaW5EYXRhKSwgbV9sb2NhbFN0
b3JhZ2VEYXRhYmFzZVRyYWNrZXIgPyBMb2NhbFN0b3JhZ2VOYW1lc3BhY2U6OklzRXBoZW1lcmFs
OjpObyA6IExvY2FsU3RvcmFnZU5hbWVzcGFjZTo6SXNFcGhlbWVyYWw6Olllcyk7Ci0gICAgc3Rv
cmFnZUFyZWEtPmFkZExpc3RlbmVyKGNvbm5lY3Rpb25JRCwgc3RvcmFnZU1hcElEKTsKLQotICAg
IHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBXVEZNb3ZlKHN0b3JhZ2VBcmVhKTsKLX0KLQotdm9p
ZCBTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTWFwKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgdWludDY0X3Qgc3RvcmFnZU1hcElELCB1aW50NjRfdCBzdG9y
YWdlTmFtZXNwYWNlSUQsIFNlY3VyaXR5T3JpZ2luRGF0YSYmIHRvcExldmVsT3JpZ2luRGF0YSwg
U2VjdXJpdHlPcmlnaW5EYXRhJiYgb3JpZ2luKQotewotICAgIEFTU0VSVCghUnVuTG9vcDo6aXNN
YWluKCkpOwotICAgIGF1dG8gY29ubmVjdGlvbklEID0gY29ubmVjdGlvbi51bmlxdWVJRCgpOwot
Ci0gICAgQVNTRVJUKG1fc3RvcmFnZUFyZWFzQnlDb25uZWN0aW9uLmlzVmFsaWRLZXkoeyBjb25u
ZWN0aW9uSUQsIHN0b3JhZ2VNYXBJRCB9KSk7Ci0KLSAgICAvLyBTZWUgaWYgd2UgYWxyZWFkeSBo
YXZlIHNlc3Npb24gc3RvcmFnZSBmb3IgdGhpcyBjb25uZWN0aW9uL29yaWdpbiBjb21iby4KLSAg
ICAvLyBJZiBzbywgdXBkYXRlIHRoZSBtYXAgd2l0aCB0aGUgbmV3IElELCBvdGhlcndpc2Uga2Vl
cCBvbiB0cnVja2luZy4KLSAgICBmb3IgKGF1dG8gaXQgPSBtX3N0b3JhZ2VBcmVhc0J5Q29ubmVj
dGlvbi5iZWdpbigpLCBlbmQgPSBtX3N0b3JhZ2VBcmVhc0J5Q29ubmVjdGlvbi5lbmQoKTsgaXQg
IT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIGlmIChpdC0+a2V5LmZpcnN0ICE9IGNvbm5lY3Rpb25J
RCkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBSZWY8U3RvcmFnZUFyZWE+IGFyZWEg
PSAqaXQtPnZhbHVlOwotICAgICAgICBpZiAoIWFyZWEtPmlzRXBoZW1lcmFsKCkpCi0gICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKCFvcmlnaW4uc2VjdXJpdHlPcmlnaW4oKS0+aXNT
YW1lU2NoZW1lSG9zdFBvcnQoYXJlYS0+c2VjdXJpdHlPcmlnaW4oKS5zZWN1cml0eU9yaWdpbigp
LmdldCgpKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBhcmVhLT5hZGRMaXN0ZW5l
cihjb25uZWN0aW9uSUQsIHN0b3JhZ2VNYXBJRCk7Ci0gICAgICAgIC8vIElmIHRoZSBzdG9yYWdl
TWFwSUQgdXNlZCBhcyBrZXkgaW4gbV9zdG9yYWdlQXJlYXNCeUNvbm5lY3Rpb24gaXMgbm8gbG9u
Z2VyIG9uZSBvZiB0aGUgU3RvcmFnZUFyZWEncyBsaXN0ZW5lcnMsIHRoZW4gdGhpcyBtZWFucwot
ICAgICAgICAvLyB0aGF0IGRlc3Ryb3lTdG9yYWdlTWFwKCkgd2FzIGFscmVhZHkgY2FsbGVkIGZv
ciB0aGF0IHN0b3JhZ2VNYXBJRCBidXQgaXQgZGVjaWRlZCBub3QgdG8gcmVtb3ZlIGl0IGZyb20g
bV9zdG9yYWdlQXJlYXNCeUNvbm5lY3Rpb24KLSAgICAgICAgLy8gc28gdGhhdCB3ZSBjb3VsZCBy
ZXVzZSBpdCBsYXRlciBvbiBmb3IgdGhlIHNhbWUgY29ubmVjdGlvbi9vcmlnaW4gY29tYm8uIElu
IHRoaXMgY2FzZSwgaXQgaXMgc2FmZSB0byByZW1vdmUgdGhlIHByZXZpb3VzCi0gICAgICAgIC8v
IHN0b3JhZ2VNYXBJRCBmcm9tIG1fc3RvcmFnZUFyZWFzQnlDb25uZWN0aW9uLgotICAgICAgICBp
ZiAoIWFyZWEtPmhhc0xpc3RlbmVyKGNvbm5lY3Rpb25JRCwgaXQtPmtleS5zZWNvbmQpKQotICAg
ICAgICAgICAgbV9zdG9yYWdlQXJlYXNCeUNvbm5lY3Rpb24ucmVtb3ZlKGl0KTsKLSAgICAgICAg
bV9zdG9yYWdlQXJlYXNCeUNvbm5lY3Rpb24uYWRkKHsgY29ubmVjdGlvbklELCBzdG9yYWdlTWFw
SUQgfSwgV1RGTW92ZShhcmVhKSk7Ci0gICAgICAgIHJldHVybjsKKyAgICB9IGVsc2UgeworICAg
ICAgICBmb3IgKGF1dG8mIGxvY2FsU3RvcmFnZU5hbWVzcGFjZSA6IG1fbG9jYWxTdG9yYWdlTmFt
ZXNwYWNlcy52YWx1ZXMoKSkKKyAgICAgICAgICAgIGxvY2FsU3RvcmFnZU5hbWVzcGFjZS0+Y2xl
YXJBbGxTdG9yYWdlQXJlYXMoKTsKICAgICB9CiAKLSAgICBhdXRvJiBzbG90ID0gbV9zdG9yYWdl
QXJlYXNCeUNvbm5lY3Rpb24uYWRkKHsgY29ubmVjdGlvbklELCBzdG9yYWdlTWFwSUQgfSwgbnVs
bHB0cikuaXRlcmF0b3ItPnZhbHVlOwotICAgIEFTU0VSVCghc2xvdCk7Ci0KLSAgICBhdXRvKiB0
cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UgPSBnZXRPckNyZWF0ZVRyYW5zaWVudExvY2Fs
U3RvcmFnZU5hbWVzcGFjZShzdG9yYWdlTmFtZXNwYWNlSUQsIFdURk1vdmUodG9wTGV2ZWxPcmln
aW5EYXRhKSk7Ci0KLSAgICBhdXRvIHN0b3JhZ2VBcmVhID0gdHJhbnNpZW50TG9jYWxTdG9yYWdl
TmFtZXNwYWNlLT5nZXRPckNyZWF0ZVN0b3JhZ2VBcmVhKFdURk1vdmUob3JpZ2luKSk7Ci0gICAg
c3RvcmFnZUFyZWEtPmFkZExpc3RlbmVyKGNvbm5lY3Rpb25JRCwgc3RvcmFnZU1hcElEKTsKLQot
ICAgIHNsb3QgPSBXVEZNb3ZlKHN0b3JhZ2VBcmVhKTsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlz
cGF0Y2goV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIFN0b3JhZ2VNYW5h
Z2VyOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU1hcChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
IHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCwgdWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBTZWN1
cml0eU9yaWdpbkRhdGEmJiBzZWN1cml0eU9yaWdpbkRhdGEpCit2b2lkIFN0b3JhZ2VNYW5hZ2Vy
OjpkZWxldGVMb2NhbFN0b3JhZ2VFbnRyaWVzRm9yT3JpZ2lucyhjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYgb3JpZ2lucywgRnVuY3Rpb248dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIGF1
dG8gY29ubmVjdGlvbklEID0gY29ubmVjdGlvbi51bmlxdWVJRCgpOwotICAgIEFTU0VSVChtX3Nl
c3Npb25TdG9yYWdlTmFtZXNwYWNlcy5pc1ZhbGlkS2V5KHN0b3JhZ2VOYW1lc3BhY2VJRCkpOwot
Ci0gICAgU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UqIHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlID0g
bV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMuZ2V0KHN0b3JhZ2VOYW1lc3BhY2VJRCk7Ci0gICAg
aWYgKCFzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSkgewotICAgICAgICAvLyBXZSdyZSBnZXR0aW5n
IGFuIGluY29taW5nIG1lc3NhZ2UgZnJvbSB0aGUgd2ViIHByb2Nlc3MgdGhhdCdzIGZvciBzZXNz
aW9uIHN0b3JhZ2UgZm9yIGEgd2ViIHBhZ2UKLSAgICAgICAgLy8gdGhhdCBoYXMgYWxyZWFkeSBi
ZWVuIGNsb3NlZCwganVzdCBpZ25vcmUgaXQuCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBBU1NFUlQobV9zdG9yYWdlQXJlYXNCeUNvbm5lY3Rpb24uaXNWYWxpZEtleSh7IGNvbm5lY3Rp
b25JRCwgc3RvcmFnZU1hcElEIH0pKTsKIAotICAgIGF1dG8mIHNsb3QgPSBtX3N0b3JhZ2VBcmVh
c0J5Q29ubmVjdGlvbi5hZGQoeyBjb25uZWN0aW9uSUQsIHN0b3JhZ2VNYXBJRCB9LCBudWxscHRy
KS5pdGVyYXRvci0+dmFsdWU7Ci0gICAgQVNTRVJUKCFzbG90KTsKLSAgICBBU1NFUlQoc2Vzc2lv
blN0b3JhZ2VOYW1lc3BhY2UtPmFsbG93ZWRDb25uZWN0aW9ucygpLmNvbnRhaW5zKGNvbm5lY3Rp
b25JRCkpOwotCi0gICAgYXV0byBzdG9yYWdlQXJlYSA9IHNlc3Npb25TdG9yYWdlTmFtZXNwYWNl
LT5nZXRPckNyZWF0ZVN0b3JhZ2VBcmVhKFdURk1vdmUoc2VjdXJpdHlPcmlnaW5EYXRhKSk7Ci0g
ICAgc3RvcmFnZUFyZWEtPmFkZExpc3RlbmVyKGNvbm5lY3Rpb25JRCwgc3RvcmFnZU1hcElEKTsK
LQotICAgIHNsb3QgPSBXVEZNb3ZlKHN0b3JhZ2VBcmVhKTsKLX0KLQotdm9pZCBTdG9yYWdlTWFu
YWdlcjo6ZGVzdHJveVN0b3JhZ2VNYXAoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCB1aW50
NjRfdCBzdG9yYWdlTWFwSUQpCi17Ci0gICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0g
ICAgYXV0byBjb25uZWN0aW9uSUQgPSBjb25uZWN0aW9uLnVuaXF1ZUlEKCk7CisgICAgZm9yIChh
dXRvJiBvcmlnaW4gOiBvcmlnaW5zKSB7CisgICAgICAgIGZvciAoYXV0byYgbG9jYWxTdG9yYWdl
TmFtZXNwYWNlIDogbV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2VzLnZhbHVlcygpKQorICAgICAgICAg
ICAgbG9jYWxTdG9yYWdlTmFtZXNwYWNlLT5jbGVhclN0b3JhZ2VBcmVhc01hdGNoaW5nT3JpZ2lu
KG9yaWdpbik7CiAKLSAgICBzdGQ6OnBhaXI8SVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCwgdWlu
dDY0X3Q+IGNvbm5lY3Rpb25BbmRTdG9yYWdlTWFwSURQYWlyKGNvbm5lY3Rpb25JRCwgc3RvcmFn
ZU1hcElEKTsKLSAgICBBU1NFUlQobV9zdG9yYWdlQXJlYXNCeUNvbm5lY3Rpb24uaXNWYWxpZEtl
eShjb25uZWN0aW9uQW5kU3RvcmFnZU1hcElEUGFpcikpOworICAgICAgICBmb3IgKGF1dG8mIHRy
YW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSA6IG1fdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFt
ZXNwYWNlcy52YWx1ZXMoKSkKKyAgICAgICAgICAgIHRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVz
cGFjZS0+Y2xlYXJTdG9yYWdlQXJlYXNNYXRjaGluZ09yaWdpbihvcmlnaW4pOwogCi0gICAgYXV0
byBpdCA9IG1fc3RvcmFnZUFyZWFzQnlDb25uZWN0aW9uLmZpbmQoY29ubmVjdGlvbkFuZFN0b3Jh
Z2VNYXBJRFBhaXIpOwotICAgIGlmIChpdCA9PSBtX3N0b3JhZ2VBcmVhc0J5Q29ubmVjdGlvbi5l
bmQoKSkgewotICAgICAgICAvLyBUaGUgY29ubmVjdGlvbiBoYXMgYmVlbiByZW1vdmVkIGJlY2F1
c2UgdGhlIGxhc3QgcGFnZSB3YXMgY2xvc2VkLgotICAgICAgICByZXR1cm47CisgICAgICAgIGlm
IChtX2xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcikKKyAgICAgICAgICAgIG1fbG9jYWxTdG9y
YWdlRGF0YWJhc2VUcmFja2VyLT5kZWxldGVEYXRhYmFzZVdpdGhPcmlnaW4ob3JpZ2luKTsKICAg
ICB9CiAKLSAgICBpdC0+dmFsdWUtPnJlbW92ZUxpc3RlbmVyKGNvbm5lY3Rpb25JRCwgc3RvcmFn
ZU1hcElEKTsKLQotICAgIC8vIERvbid0IHJlbW92ZSBzZXNzaW9uIHN0b3JhZ2UgbWFwcy4gVGhl
IHdlYiBwcm9jZXNzIG1heSByZWNvbm5lY3QgYW5kIGV4cGVjdCB0aGUgZGF0YSB0byBzdGlsbCBi
ZSBhcm91bmQuCi0gICAgaWYgKGl0LT52YWx1ZS0+aXNFcGhlbWVyYWwoKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgbV9zdG9yYWdlQXJlYXNCeUNvbm5lY3Rpb24ucmVtb3ZlKGNvbm5lY3Rpb25B
bmRTdG9yYWdlTWFwSURQYWlyKTsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIFN0b3JhZ2VNYW5hZ2VyOjpwcmV3YXJt
KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgdWludDY0X3Qgc3RvcmFnZU1hcElEKQorU3Rv
cmFnZUFyZWEqIFN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVMb2NhbFN0b3JhZ2VBcmVhKHVpbnQ2NF90
IHN0b3JhZ2VOYW1lc3BhY2VJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgb3JpZ2lu
KQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIGlmIChhdXRvKiBzdG9y
YWdlQXJlYSA9IGZpbmRTdG9yYWdlQXJlYShjb25uZWN0aW9uLCBzdG9yYWdlTWFwSUQpKQotICAg
ICAgICBzdG9yYWdlQXJlYS0+b3BlbkRhdGFiYXNlQW5kSW1wb3J0SXRlbXNJZk5lZWRlZCgpOwot
fQogCi12b2lkIFN0b3JhZ2VNYW5hZ2VyOjpnZXRWYWx1ZXMoSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCB1aW50NjRfdCBzdG9yYWdlTWFwSUQsIHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkLCBH
ZXRWYWx1ZXNDYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIEFTU0VSVCghUnVu
TG9vcDo6aXNNYWluKCkpOwotICAgIGF1dG8qIHN0b3JhZ2VBcmVhID0gZmluZFN0b3JhZ2VBcmVh
KGNvbm5lY3Rpb24sIHN0b3JhZ2VNYXBJRCk7CisgICAgaWYgKGF1dG8qIGxvY2FsU3RvcmFnZU5h
bWVzcGFjZSA9IGdldE9yQ3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHN0b3JhZ2VOYW1lc3Bh
Y2VJRCkpCisgICAgICAgIHJldHVybiBsb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPmdldE9yQ3JlYXRl
U3RvcmFnZUFyZWEoV1RGTW92ZShvcmlnaW4pLCBtX2xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tl
ciA/IExvY2FsU3RvcmFnZU5hbWVzcGFjZTo6SXNFcGhlbWVyYWw6Ok5vIDogTG9jYWxTdG9yYWdl
TmFtZXNwYWNlOjpJc0VwaGVtZXJhbDo6WWVzKS5wdHIoKTsKIAotICAgIC8vIFRoaXMgaXMgYSBz
ZXNzaW9uIHN0b3JhZ2UgYXJlYSBmb3IgYSBwYWdlIHRoYXQgaGFzIGFscmVhZHkgYmVlbiBjbG9z
ZWQuIElnbm9yZSBpdC4KLSAgICBpZiAoIXN0b3JhZ2VBcmVhKQotICAgICAgICByZXR1cm4gY29t
cGxldGlvbkhhbmRsZXIoeyB9KTsKLQotICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0b3JhZ2VBcmVh
LT5pdGVtcygpKTsKLSAgICBjb25uZWN0aW9uLnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VBcmVhTWFw
OjpEaWRHZXRWYWx1ZXMoc3RvcmFnZU1hcFNlZWQpLCBzdG9yYWdlTWFwSUQpOworICAgIHJldHVy
biBudWxscHRyOwogfQogCi12b2lkIFN0b3JhZ2VNYW5hZ2VyOjpzZXRJdGVtKElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgc2VjdXJpdHlP
cmlnaW5EYXRhLCB1aW50NjRfdCBzdG9yYWdlTWFwSUQsIHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VB
cmVhSUQsIHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCitTdG9yYWdlQXJlYSogU3Rv
cmFnZU1hbmFnZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZUFyZWEodWludDY0X3Qgc3Rv
cmFnZU5hbWVzcGFjZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiB0b3BMZXZlbE9y
aWdpbiwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgb3JpZ2luKQogewogICAgIEFTU0VS
VCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIGF1dG8qIHN0b3JhZ2VBcmVhID0gZmluZFN0b3Jh
Z2VBcmVhKGNvbm5lY3Rpb24sIHN0b3JhZ2VNYXBJRCk7Ci0KLSAgICAvLyBUaGlzIGlzIGEgc2Vz
c2lvbiBzdG9yYWdlIGFyZWEgZm9yIGEgcGFnZSB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gY2xvc2Vk
LiBJZ25vcmUgaXQuCi0gICAgaWYgKCFzdG9yYWdlQXJlYSkKLSAgICAgICAgcmV0dXJuOworICAg
IEFTU0VSVCgoSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFRyYW5zaWVudExvY2FsU3RvcmFnZU5h
bWVzcGFjZT4+Ojppc1ZhbGlkS2V5KHN0b3JhZ2VOYW1lc3BhY2VJRCkpKTsKIAotICAgIGJvb2wg
cXVvdGFFcnJvcjsKLSAgICBzdG9yYWdlQXJlYS0+c2V0SXRlbShjb25uZWN0aW9uLnVuaXF1ZUlE
KCksIHNvdXJjZVN0b3JhZ2VBcmVhSUQsIGtleSwgdmFsdWUsIHVybFN0cmluZywgcXVvdGFFcnJv
cik7Ci0gICAgY29ubmVjdGlvbi5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlQXJlYU1hcDo6RGlkU2V0
SXRlbShzdG9yYWdlTWFwU2VlZCwga2V5LCBxdW90YUVycm9yKSwgc3RvcmFnZU1hcElEKTsKKyAg
ICBpZiAoYXV0byogdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlID0gZ2V0T3JDcmVhdGVU
cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2Uoc3RvcmFnZU5hbWVzcGFjZUlELCBXVEZNb3Zl
KHRvcExldmVsT3JpZ2luKSkpCisgICAgICAgIHJldHVybiB0cmFuc2llbnRMb2NhbFN0b3JhZ2VO
YW1lc3BhY2UtPmdldE9yQ3JlYXRlU3RvcmFnZUFyZWEoV1RGTW92ZShvcmlnaW4pKS5wdHIoKTsK
KyAgICAKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotdm9pZCBTdG9yYWdlTWFuYWdlcjo6c2V0
SXRlbXMoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCB1aW50NjRfdCBzdG9yYWdlTWFwSUQs
IGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBpdGVtcykKK1N0b3JhZ2VBcmVhKiBTdG9y
YWdlTWFuYWdlcjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VBcmVhKHVpbnQ2NF90IHN0b3JhZ2VOYW1l
c3BhY2VJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgb3JpZ2luKQogewogICAgIEFT
U0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIGlmIChhdXRvKiBzdG9yYWdlQXJlYSA9IGZp
bmRTdG9yYWdlQXJlYShjb25uZWN0aW9uLCBzdG9yYWdlTWFwSUQpKQotICAgICAgICBzdG9yYWdl
QXJlYS0+c2V0SXRlbXMoaXRlbXMpOwotfQorICAgIEFTU0VSVCgoSGFzaE1hcDx1aW50NjRfdCwg
UmVmUHRyPFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlPj46OmlzVmFsaWRLZXkoc3RvcmFnZU5hbWVz
cGFjZUlEKSkpOwogCi12b2lkIFN0b3JhZ2VNYW5hZ2VyOjpyZW1vdmVJdGVtKElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgc2VjdXJpdHlP
cmlnaW5EYXRhLCB1aW50NjRfdCBzdG9yYWdlTWFwSUQsIHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VB
cmVhSUQsIHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3Qg
U3RyaW5nJiB1cmxTdHJpbmcpCi17Ci0gICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0g
ICAgYXV0byogc3RvcmFnZUFyZWEgPSBmaW5kU3RvcmFnZUFyZWEoY29ubmVjdGlvbiwgc3RvcmFn
ZU1hcElEKTsKLQotICAgIC8vIFRoaXMgaXMgYSBzZXNzaW9uIHN0b3JhZ2UgYXJlYSBmb3IgYSBw
YWdlIHRoYXQgaGFzIGFscmVhZHkgYmVlbiBjbG9zZWQuIElnbm9yZSBpdC4KLSAgICBpZiAoIXN0
b3JhZ2VBcmVhKQotICAgICAgICByZXR1cm47Ci0KLSAgICBzdG9yYWdlQXJlYS0+cmVtb3ZlSXRl
bShjb25uZWN0aW9uLnVuaXF1ZUlEKCksIHNvdXJjZVN0b3JhZ2VBcmVhSUQsIGtleSwgdXJsU3Ry
aW5nKTsKLSAgICBjb25uZWN0aW9uLnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VBcmVhTWFwOjpEaWRS
ZW1vdmVJdGVtKHN0b3JhZ2VNYXBTZWVkLCBrZXkpLCBzdG9yYWdlTWFwSUQpOworICAgIGlmIChh
dXRvKiBzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSA9IGdldE9yQ3JlYXRlU2Vzc2lvblN0b3JhZ2VO
YW1lc3BhY2Uoc3RvcmFnZU5hbWVzcGFjZUlEKSkKKyAgICAgICAgcmV0dXJuIHNlc3Npb25TdG9y
YWdlTmFtZXNwYWNlLT5nZXRPckNyZWF0ZVN0b3JhZ2VBcmVhKFdURk1vdmUob3JpZ2luKSkucHRy
KCk7CisgICAgCisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXZvaWQgU3RvcmFnZU1hbmFnZXI6
OmNsZWFyKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhJiYgc2VjdXJpdHlPcmlnaW5EYXRhLCB1aW50NjRfdCBzdG9yYWdlTWFwSUQsIHVpbnQ2
NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkLCBjb25zdCBT
dHJpbmcmIHVybFN0cmluZykKK0xvY2FsU3RvcmFnZU5hbWVzcGFjZSogU3RvcmFnZU1hbmFnZXI6
OmdldE9yQ3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3Bh
Y2VJRCkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBhdXRvKiBzdG9y
YWdlQXJlYSA9IGZpbmRTdG9yYWdlQXJlYShjb25uZWN0aW9uLCBzdG9yYWdlTWFwSUQpOwogCi0g
ICAgLy8gVGhpcyBpcyBhIHNlc3Npb24gc3RvcmFnZSBhcmVhIGZvciBhIHBhZ2UgdGhhdCBoYXMg
YWxyZWFkeSBiZWVuIGNsb3NlZC4gSWdub3JlIGl0LgotICAgIGlmICghc3RvcmFnZUFyZWEpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIHN0b3JhZ2VBcmVhLT5jbGVhcihjb25uZWN0aW9uLnVuaXF1
ZUlEKCksIHNvdXJjZVN0b3JhZ2VBcmVhSUQsIHVybFN0cmluZyk7Ci0gICAgY29ubmVjdGlvbi5z
ZW5kKE1lc3NhZ2VzOjpTdG9yYWdlQXJlYU1hcDo6RGlkQ2xlYXIoc3RvcmFnZU1hcFNlZWQpLCBz
dG9yYWdlTWFwSUQpOwotfQotCi12b2lkIFN0b3JhZ2VNYW5hZ2VyOjp3YWl0VW50aWxUYXNrc0Zp
bmlzaGVkKCkKLXsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIEJpbmFyeVNl
bWFwaG9yZSBzZW1hcGhvcmU7Ci0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsICZzZW1hcGhv
cmVdIHsKLSAgICAgICAgVmVjdG9yPHN0ZDo6cGFpcjxJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlE
LCB1aW50NjRfdD4+IGNvbm5lY3Rpb25BbmRTdG9yYWdlTWFwSURQYWlyc1RvUmVtb3ZlOwotICAg
ICAgICBmb3IgKGF1dG8mIGNvbm5lY3Rpb25TdG9yYWdlQXJlYVBhaXIgOiBtX3N0b3JhZ2VBcmVh
c0J5Q29ubmVjdGlvbikgewotICAgICAgICAgICAgY29ubmVjdGlvblN0b3JhZ2VBcmVhUGFpci52
YWx1ZS0+cmVtb3ZlTGlzdGVuZXIoY29ubmVjdGlvblN0b3JhZ2VBcmVhUGFpci5rZXkuZmlyc3Qs
IGNvbm5lY3Rpb25TdG9yYWdlQXJlYVBhaXIua2V5LnNlY29uZCk7Ci0gICAgICAgICAgICBjb25u
ZWN0aW9uQW5kU3RvcmFnZU1hcElEUGFpcnNUb1JlbW92ZS5hcHBlbmQoY29ubmVjdGlvblN0b3Jh
Z2VBcmVhUGFpci5rZXkpOwotICAgICAgICB9Ci0KLSAgICAgICAgZm9yIChhdXRvJiBjb25uZWN0
aW9uU3RvcmFnZUFyZWFQYWlyIDogY29ubmVjdGlvbkFuZFN0b3JhZ2VNYXBJRFBhaXJzVG9SZW1v
dmUpCi0gICAgICAgICAgICBtX3N0b3JhZ2VBcmVhc0J5Q29ubmVjdGlvbi5yZW1vdmUoY29ubmVj
dGlvblN0b3JhZ2VBcmVhUGFpcik7Ci0KLSAgICAgICAgbV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFj
ZXMuY2xlYXIoKTsKLSAgICAgICAgbV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2VzLmNsZWFyKCk7Ci0K
LSAgICAgICAgc2VtYXBob3JlLnNpZ25hbCgpOwotICAgIH0pOwotICAgIHNlbWFwaG9yZS53YWl0
KCk7Ci19Ci0KLXZvaWQgU3RvcmFnZU1hbmFnZXI6OnN1c3BlbmQoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIEFTU0VSVChSdW5Mb29wOjppc01h
aW4oKSk7Ci0gICAgQ29tcGxldGlvbkhhbmRsZXJDYWxsaW5nU2NvcGUgY29tcGxldGlvbkhhbmRs
ZXJDYWxsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgIGlmICghbV9sb2NhbFN0
b3JhZ2VEYXRhYmFzZVRyYWNrZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIExvY2tlcjxMb2Nr
PiBzdGF0ZUxvY2tlcihtX3N0YXRlTG9jayk7Ci0gICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OlJ1
bm5pbmcpCi0gICAgICAgIHJldHVybjsKLSAgICBtX3N0YXRlID0gU3RhdGU6OldpbGxTdXNwZW5k
OwotCi0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBjb21wbGV0aW9uSGFuZGxlckNhbGxlci5yZWxl
YXNlKCldICgpIG11dGFibGUgewotICAgICAgICBMb2NrZXI8TG9jaz4gc3RhdGVMb2NrZXIobV9z
dGF0ZUxvY2spOwotICAgICAgICBBU1NFUlQobV9zdGF0ZSAhPSBTdGF0ZTo6U3VzcGVuZGVkKTsK
LQotICAgICAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6V2lsbFN1c3BlbmQpIHsKLSAgICAgICAg
ICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBtX3N0YXRlID0gU3Rh
dGU6OlN1c3BlbmRlZDsKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICAgICAgCi0gICAgICAgIHdoaWxlIChtX3N0YXRlID09
IFN0YXRlOjpTdXNwZW5kZWQpCi0gICAgICAgICAgICBtX3N0YXRlQ2hhbmdlQ29uZGl0aW9uLndh
aXQobV9zdGF0ZUxvY2spOwotICAgICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6UnVubmlu
Zyk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgU3RvcmFnZU1hbmFnZXI6OnJlc3VtZSgpCi17Ci0gICAg
QVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBpZiAoIW1fbG9jYWxTdG9yYWdlRGF0YWJh
c2VUcmFja2VyKQotICAgICAgICByZXR1cm47CisgICAgaWYgKCFtX2xvY2FsU3RvcmFnZU5hbWVz
cGFjZXMuaXNWYWxpZEtleShzdG9yYWdlTmFtZXNwYWNlSUQpKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAotICAgIExvY2tlcjxMb2NrPiBzdGF0ZUxvY2tlcihtX3N0YXRlTG9jayk7Ci0gICAg
YXV0byBwcmV2aW91c1N0YXRlID0gbV9zdGF0ZTsKLSAgICBtX3N0YXRlID0gU3RhdGU6OlJ1bm5p
bmc7Ci0gICAgaWYgKHByZXZpb3VzU3RhdGUgPT0gU3RhdGU6OlN1c3BlbmRlZCkKLSAgICAgICAg
bV9zdGF0ZUNoYW5nZUNvbmRpdGlvbi5ub3RpZnlPbmUoKTsKKyAgICByZXR1cm4gbV9sb2NhbFN0
b3JhZ2VOYW1lc3BhY2VzLmVuc3VyZShzdG9yYWdlTmFtZXNwYWNlSUQsIFt0aGlzLCBzdG9yYWdl
TmFtZXNwYWNlSURdKCkgeworICAgICAgICByZXR1cm4gTG9jYWxTdG9yYWdlTmFtZXNwYWNlOjpj
cmVhdGUoKnRoaXMsIHN0b3JhZ2VOYW1lc3BhY2VJRCk7CisgICAgfSkuaXRlcmF0b3ItPnZhbHVl
LmdldCgpOwogfQogCi1TdG9yYWdlQXJlYSogU3RvcmFnZU1hbmFnZXI6OmZpbmRTdG9yYWdlQXJl
YShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCkgY29u
c3QKK1RyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSogU3RvcmFnZU1hbmFnZXI6OmdldE9y
Q3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IHN0b3JhZ2VOYW1l
c3BhY2VJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wTGV2ZWxPcmlnaW4pCiB7
CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgc3RkOjpwYWlyPElQQzo6Q29u
bmVjdGlvbjo6VW5pcXVlSUQsIHVpbnQ2NF90PiBjb25uZWN0aW9uQW5kU3RvcmFnZU1hcElEUGFp
cihjb25uZWN0aW9uLnVuaXF1ZUlEKCksIHN0b3JhZ2VNYXBJRCk7CiAKLSAgICBpZiAoIW1fc3Rv
cmFnZUFyZWFzQnlDb25uZWN0aW9uLmlzVmFsaWRLZXkoY29ubmVjdGlvbkFuZFN0b3JhZ2VNYXBJ
RFBhaXIpKQorICAgIGlmICghbV90cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2VzLmlzVmFs
aWRLZXkoeyBzdG9yYWdlTmFtZXNwYWNlSUQsIHRvcExldmVsT3JpZ2luIH0pKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBtX3N0b3JhZ2VBcmVhc0J5Q29ubmVjdGlvbi5n
ZXQoY29ubmVjdGlvbkFuZFN0b3JhZ2VNYXBJRFBhaXIpOworICAgIHJldHVybiBtX3RyYW5zaWVu
dExvY2FsU3RvcmFnZU5hbWVzcGFjZXMuZW5zdXJlKHsgc3RvcmFnZU5hbWVzcGFjZUlELCBXVEZN
b3ZlKHRvcExldmVsT3JpZ2luKSB9LCBbXSgpeworICAgICAgICByZXR1cm4gVHJhbnNpZW50TG9j
YWxTdG9yYWdlTmFtZXNwYWNlOjpjcmVhdGUoKTsKKyAgICB9KS5pdGVyYXRvci0+dmFsdWUuZ2V0
KCk7CiB9CiAKLUxvY2FsU3RvcmFnZU5hbWVzcGFjZSogU3RvcmFnZU1hbmFnZXI6OmdldE9yQ3Jl
YXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCkKK1Nl
c3Npb25TdG9yYWdlTmFtZXNwYWNlKiBTdG9yYWdlTWFuYWdlcjo6Z2V0T3JDcmVhdGVTZXNzaW9u
U3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQpCiB7CiAgICAgQVNT
RVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgaWYgKCFtX2xvY2FsU3RvcmFnZU5hbWVzcGFj
ZXMuaXNWYWxpZEtleShzdG9yYWdlTmFtZXNwYWNlSUQpKQorCisgICAgaWYgKCFtX3Nlc3Npb25T
dG9yYWdlTmFtZXNwYWNlcy5pc1ZhbGlkS2V5KHN0b3JhZ2VOYW1lc3BhY2VJRCkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIG1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlcy5l
bnN1cmUoc3RvcmFnZU5hbWVzcGFjZUlELCBbdGhpcywgc3RvcmFnZU5hbWVzcGFjZUlEXSgpIHsK
LSAgICAgICAgcmV0dXJuIExvY2FsU3RvcmFnZU5hbWVzcGFjZTo6Y3JlYXRlKCp0aGlzLCBzdG9y
YWdlTmFtZXNwYWNlSUQpOworICAgIHJldHVybiBtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlcy5l
bnN1cmUoc3RvcmFnZU5hbWVzcGFjZUlELCBbXSB7CisgICAgICAgIC8vIFdlIGN1cnJlbnRseSBo
YXZlIG5vIGxpbWl0IG9uIHNlc3Npb24gc3RvcmFnZS4KKyAgICAgICAgcmV0dXJuIFNlc3Npb25T
dG9yYWdlTmFtZXNwYWNlOjpjcmVhdGUoc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1h
eCgpKTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CiB9CiAKLVRyYW5zaWVudExvY2Fs
U3RvcmFnZU5hbWVzcGFjZSogU3RvcmFnZU1hbmFnZXI6OmdldE9yQ3JlYXRlVHJhbnNpZW50TG9j
YWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wTGV2ZWxPcmlnaW4pCit2b2lkIFN0b3JhZ2VNYW5hZ2Vy
OjpjbGVhclN0b3JhZ2VOYW1lc3BhY2VzKCkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFp
bigpKTsKLSAgICBpZiAoIW1fdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlcy5pc1ZhbGlk
S2V5KHsgc3RvcmFnZU5hbWVzcGFjZUlELCB0b3BMZXZlbE9yaWdpbiB9KSkKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gbV90cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2VzLmVuc3VyZSh7IHN0b3JhZ2VOYW1lc3BhY2VJRCwgV1RGTW92ZSh0b3BMZXZlbE9yaWdpbikg
fSwgW10oKXsKLSAgICAgICAgcmV0dXJuIFRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZTo6
Y3JlYXRlKCk7Ci0gICAgfSkuaXRlcmF0b3ItPnZhbHVlLmdldCgpOworICAgIG1fbG9jYWxTdG9y
YWdlTmFtZXNwYWNlcy5jbGVhcigpOworICAgIG1fdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNw
YWNlcy5jbGVhcigpOworICAgIG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLmNsZWFyKCk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuaAppbmRleCAzMTk5YTQyMGE4
ZmRiY2JiMWY3N2Q3MmQwMTdlYTZiM2MwODA5NTBmLi42YjUzZTFiMmUwNDQ5ZjliM2MwNDAzYjUz
MjNhZWFkMDBjM2E5NjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuaApAQCAtNDksNyArNDksNyBAQCBjbGFz
cyBXZWJQcm9jZXNzUHJveHk7CiAKIHVzaW5nIEdldFZhbHVlc0NhbGxiYWNrID0gQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYpPjsKIAotY2xhc3Mg
U3RvcmFnZU1hbmFnZXIgOiBwdWJsaWMgSVBDOjpDb25uZWN0aW9uOjpXb3JrUXVldWVNZXNzYWdl
UmVjZWl2ZXIgeworY2xhc3MgU3RvcmFnZU1hbmFnZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxTdG9y
YWdlTWFuYWdlcj4gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8U3RvcmFnZU1hbmFnZXI+IGNy
ZWF0ZShTdHJpbmcmJiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpCiAgICAgewpAQCAtNjAsNzggKzYw
LDQxIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2Uo
dWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpOwogICAg
IHZvaWQgZGVzdHJveVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IHN0b3JhZ2VOYW1l
c3BhY2VJRCk7Ci0gICAgdm9pZCBhZGRBbGxvd2VkU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VDb25u
ZWN0aW9uKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgSVBDOjpDb25uZWN0aW9uJik7Ci0g
ICAgdm9pZCByZW1vdmVBbGxvd2VkU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0aW9uKHVp
bnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgSVBDOjpDb25uZWN0aW9uJik7CiAgICAgdm9pZCBj
bG9uZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwg
dWludDY0X3QgbmV3U3RvcmFnZU5hbWVzcGFjZUlEKTsKIAotICAgIHZvaWQgcHJvY2Vzc0RpZENs
b3NlQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24mKTsKLSAgICB2b2lkIHdhaXRVbnRpbFRhc2tz
RmluaXNoZWQoKTsKLSAgICB2b2lkIHN1c3BlbmQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKLSAgICB2b2lkIHJlc3VtZSgpOwotCi0gICAgdm9pZCBnZXRTZXNzaW9uU3RvcmFnZU9yaWdp
bnMoRnVuY3Rpb248dm9pZChIYXNoU2V0PFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mJik+
JiYgY29tcGxldGlvbkhhbmRsZXIpOworICAgIHZvaWQgZ2V0U2Vzc2lvblN0b3JhZ2VPcmlnaW5z
KEZ1bmN0aW9uPHZvaWQoSGFzaFNldDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiYpPiYm
KTsKICAgICB2b2lkIGRlbGV0ZVNlc3Npb25TdG9yYWdlT3JpZ2lucyhGdW5jdGlvbjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpOwotICAgIHZvaWQgZGVsZXRlU2Vzc2lvblN0b3JhZ2VFbnRy
aWVzRm9yT3JpZ2lucyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYs
IEZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7Ci0KLSAgICB2b2lkIGdldExv
Y2FsU3RvcmFnZU9yaWdpbnMoRnVuY3Rpb248dm9pZChIYXNoU2V0PFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpOwotICAgIHZvaWQgZGVsZXRlTG9j
YWxTdG9yYWdlRW50cmllc0Zvck9yaWdpbihjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEmKTsKKyAgICB2b2lkIGRlbGV0ZVNlc3Npb25TdG9yYWdlRW50cmllc0Zvck9yaWdpbnMoY29u
c3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mLCBGdW5jdGlvbjx2b2lkKCk+
JiYpOwogCi0gICAgdm9pZCBkZWxldGVMb2NhbFN0b3JhZ2VPcmlnaW5zTW9kaWZpZWRTaW5jZShX
YWxsVGltZSwgRnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICB2b2lk
IGRlbGV0ZUxvY2FsU3RvcmFnZUVudHJpZXNGb3JPcmlnaW5zKGNvbnN0IFZlY3RvcjxXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGE+JiwgRnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKTsKKyAgICB2b2lkIGdldExvY2FsU3RvcmFnZU9yaWdpbnMoRnVuY3Rpb248dm9pZChIYXNo
U2V0PFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mJik+JiYpOworICAgIHZvaWQgZGVsZXRl
TG9jYWxTdG9yYWdlT3JpZ2luc01vZGlmaWVkU2luY2UoV2FsbFRpbWUsIEZ1bmN0aW9uPHZvaWQo
KT4mJik7CisgICAgdm9pZCBkZWxldGVMb2NhbFN0b3JhZ2VFbnRyaWVzRm9yT3JpZ2lucyhjb25z
dCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYsIEZ1bmN0aW9uPHZvaWQoKT4m
Jik7CisgICAgdm9pZCBnZXRMb2NhbFN0b3JhZ2VPcmlnaW5EZXRhaWxzKEZ1bmN0aW9uPHZvaWQo
VmVjdG9yPExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6T3JpZ2luRGV0YWlscz4mJik+JiYp
OwogCi0gICAgdm9pZCBnZXRMb2NhbFN0b3JhZ2VPcmlnaW5EZXRhaWxzKEZ1bmN0aW9uPHZvaWQo
VmVjdG9yPExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6T3JpZ2luRGV0YWlscz4mJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpOworICAgIHZvaWQgY2xlYXJTdG9yYWdlTmFtZXNwYWNlcygpOwog
CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29k
ZXImKTsKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNvZGVy
KTsKICAgICAKICAgICBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIqIGxvY2FsU3RvcmFnZURh
dGFiYXNlVHJhY2tlcigpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFj
a2VyLmdldCgpOyB9CiAgICAgCi0gICAgV29ya1F1ZXVlJiB3b3JrUXVldWUoKSBjb25zdCB7IHJl
dHVybiBtX3F1ZXVlLmdldCgpOyB9Ci0gICAgCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGxv
Y2FsU3RvcmFnZURhdGFiYXNlUXVvdGFJbkJ5dGVzOwogCisgICAgU3RvcmFnZUFyZWEqIGNyZWF0
ZUxvY2FsU3RvcmFnZUFyZWEodWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEmJik7CisgICAgU3RvcmFnZUFyZWEqIGNyZWF0ZVRyYW5zaWVudExv
Y2FsU3RvcmFnZUFyZWEodWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEmJiwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYpOworICAgIFN0
b3JhZ2VBcmVhKiBjcmVhdGVTZXNzaW9uU3RvcmFnZUFyZWEodWludDY0X3Qgc3RvcmFnZU5hbWVz
cGFjZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJik7CisKIHByaXZhdGU6CiAgICAg
ZXhwbGljaXQgU3RvcmFnZU1hbmFnZXIoU3RyaW5nJiYgbG9jYWxTdG9yYWdlRGlyZWN0b3J5KTsK
IAotICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMuCi0gICAgdm9pZCBjcmVhdGVMb2NhbFN0b3JhZ2VN
YXAoSVBDOjpDb25uZWN0aW9uJiwgdWludDY0X3Qgc3RvcmFnZU1hcElELCB1aW50NjRfdCBzdG9y
YWdlTmFtZXNwYWNlSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmKTsKLSAgICB2b2lk
IGNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU1hcChJUEM6OkNvbm5lY3Rpb24mLCB1aW50NjRf
dCBzdG9yYWdlTWFwSUQsIHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhJiYgdG9wTGV2ZWxPcmlnaW5EYXRhLCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmJik7Ci0gICAgdm9pZCBjcmVhdGVTZXNzaW9uU3RvcmFnZU1hcChJUEM6OkNvbm5l
Y3Rpb24mLCB1aW50NjRfdCBzdG9yYWdlTWFwSUQsIHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJ
RCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYpOwotICAgIHZvaWQgZGVzdHJveVN0b3Jh
Z2VNYXAoSVBDOjpDb25uZWN0aW9uJiwgdWludDY0X3Qgc3RvcmFnZU1hcElEKTsKLQotICAgIHZv
aWQgZ2V0VmFsdWVzKElQQzo6Q29ubmVjdGlvbiYsIHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCwgdWlu
dDY0X3Qgc3RvcmFnZU1hcFNlZWQsIEdldFZhbHVlc0NhbGxiYWNrJiYpOwotICAgIHZvaWQgcHJl
d2FybShJUEM6OkNvbm5lY3Rpb24mLCB1aW50NjRfdCBzdG9yYWdlTWFwSUQpOwotICAgIHZvaWQg
c2V0SXRlbShJUEM6OkNvbm5lY3Rpb24mLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwg
dWludDY0X3Qgc3RvcmFnZU1hcElELCB1aW50NjRfdCBzb3VyY2VTdG9yYWdlQXJlYUlELCB1aW50
NjRfdCBzdG9yYWdlTWFwU2VlZCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFs
dWUsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKTsKLSAgICB2b2lkIHNldEl0ZW1zKElQQzo6Q29u
bmVjdGlvbiYsIHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCwgY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0
cmluZz4mIGl0ZW1zKTsKLSAgICB2b2lkIHJlbW92ZUl0ZW0oSVBDOjpDb25uZWN0aW9uJiwgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCwgdWludDY0
X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwgdWludDY0X3Qgc3RvcmFnZU1hcFNlZWQsIGNvbnN0IFN0
cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHVybFN0cmluZyk7Ci0gICAgdm9pZCBjbGVhcihJUEM6
OkNvbm5lY3Rpb24mLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgdWludDY0X3Qgc3Rv
cmFnZU1hcElELCB1aW50NjRfdCBzb3VyY2VTdG9yYWdlQXJlYUlELCB1aW50NjRfdCBzdG9yYWdl
TWFwU2VlZCwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpOwotCi0gICAgU3RvcmFnZUFyZWEqIGZp
bmRTdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb24mLCB1aW50NjRfdCkgY29uc3Q7Ci0KICAgICBM
b2NhbFN0b3JhZ2VOYW1lc3BhY2UqIGdldE9yQ3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVp
bnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCk7Ci0KICAgICBUcmFuc2llbnRMb2NhbFN0b3JhZ2VO
YW1lc3BhY2UqIGdldE9yQ3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2
NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9w
TGV2ZWxPcmlnaW4pOwotCi0gICAgUmVmPFdvcmtRdWV1ZT4gbV9xdWV1ZTsKKyAgICBTZXNzaW9u
U3RvcmFnZU5hbWVzcGFjZSogZ2V0T3JDcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50
NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQpOwogCiAgICAgUmVmUHRyPExvY2FsU3RvcmFnZURhdGFi
YXNlVHJhY2tlcj4gbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI7CiAgICAgSGFzaE1hcDx1
aW50NjRfdCwgUmVmUHRyPExvY2FsU3RvcmFnZU5hbWVzcGFjZT4+IG1fbG9jYWxTdG9yYWdlTmFt
ZXNwYWNlczsKLQogICAgIEhhc2hNYXA8c3RkOjpwYWlyPHVpbnQ2NF90LCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGE+LCBSZWZQdHI8VHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlPj4g
bV90cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2VzOwotCiAgICAgSGFzaE1hcDx1aW50NjRf
dCwgUmVmUHRyPFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlPj4gbV9zZXNzaW9uU3RvcmFnZU5hbWVz
cGFjZXM7Ci0KLSAgICBIYXNoTWFwPHN0ZDo6cGFpcjxJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlE
LCB1aW50NjRfdD4sIFJlZlB0cjxTdG9yYWdlQXJlYT4+IG1fc3RvcmFnZUFyZWFzQnlDb25uZWN0
aW9uOwotICAgIEhhc2hTZXQ8SVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRD4gbV9jb25uZWN0aW9u
czsKLQotICAgIGVudW0gY2xhc3MgU3RhdGUgewotICAgICAgICBSdW5uaW5nLAotICAgICAgICBX
aWxsU3VzcGVuZCwKLSAgICAgICAgU3VzcGVuZGVkCi0gICAgfTsKLSAgICBTdGF0ZSBtX3N0YXRl
IHsgU3RhdGU6OlJ1bm5pbmcgfTsKLSAgICBMb2NrIG1fc3RhdGVMb2NrOwotICAgIENvbmRpdGlv
biBtX3N0YXRlQ2hhbmdlQ29uZGl0aW9uOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFn
ZU1hbmFnZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0
b3JhZ2UvU3RvcmFnZU1hbmFnZXIubWVzc2FnZXMuaW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDc4YmI2YWIyNDAyOGEyNTNhYTExODU0MjAxZDZhMTVkMjVjZTJjNmYuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLm1lc3NhZ2VzLmluCisrKyAvZGV2
L251bGwKQEAgLTEsMzYgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMg
YXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKLSMg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0KLW1lc3NhZ2VzIC0+IFN0b3JhZ2VNYW5hZ2VyIHsKLSAgICBDcmVhdGVMb2Nh
bFN0b3JhZ2VNYXAodWludDY0X3Qgc3RvcmFnZU1hcElELCB1aW50NjRfdCBzdG9yYWdlTmFtZXNw
YWNlSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgc2VjdXJpdHlPcmlnaW5E
YXRhKSBXYW50c0Nvbm5lY3Rpb24KLSAgICBDcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VNYXAo
dWludDY0X3Qgc3RvcmFnZU1hcElELCB1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIHN0cnVj
dCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgdG9wTGV2ZWxTZWN1cml0eU9yaWdpbkRhdGEs
IHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgc2VjdXJpdHlPcmlnaW5EYXRhKSBX
YW50c0Nvbm5lY3Rpb24KLSAgICBDcmVhdGVTZXNzaW9uU3RvcmFnZU1hcCh1aW50NjRfdCBzdG9y
YWdlTWFwSUQsIHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgc3RydWN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSBzZWN1cml0eU9yaWdpbkRhdGEpIFdhbnRzQ29ubmVjdGlvbgotICAg
IERlc3Ryb3lTdG9yYWdlTWFwKHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCkgV2FudHNDb25uZWN0aW9u
Ci0KLSAgICBQcmV3YXJtKHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCkgV2FudHNDb25uZWN0aW9uCi0g
ICAgR2V0VmFsdWVzKHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCwgdWludDY0X3Qgc3RvcmFnZU1hcFNl
ZWQpIC0+IChIYXNoTWFwPFN0cmluZywgU3RyaW5nPiB2YWx1ZXMpIFN5bmNocm9ub3VzIFdhbnRz
Q29ubmVjdGlvbgotCi0gICAgU2V0SXRlbShzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhIHNlY3VyaXR5T3JpZ2luRGF0YSwgdWludDY0X3Qgc3RvcmFnZU1hcElELCB1aW50NjRfdCBz
b3VyY2VTdG9yYWdlQXJlYUlELCB1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCwgU3RyaW5nIGtleSwg
U3RyaW5nIHZhbHVlLCBTdHJpbmcgdXJsU3RyaW5nKSBXYW50c0Nvbm5lY3Rpb24KLSAgICBTZXRJ
dGVtcyh1aW50NjRfdCBzdG9yYWdlTWFwSUQsIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IGl0ZW1z
KSBXYW50c0Nvbm5lY3Rpb24KLSAgICBSZW1vdmVJdGVtKHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGEgc2VjdXJpdHlPcmlnaW5EYXRhLCB1aW50NjRfdCBzdG9yYWdlTWFwSUQsIHVp
bnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkLCBTdHJp
bmcga2V5LCBTdHJpbmcgdXJsU3RyaW5nKSBXYW50c0Nvbm5lY3Rpb24KLSAgICBDbGVhcihzdHJ1
Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHNlY3VyaXR5T3JpZ2luRGF0YSwgdWludDY0
X3Qgc3RvcmFnZU1hcElELCB1aW50NjRfdCBzb3VyY2VTdG9yYWdlQXJlYUlELCB1aW50NjRfdCBz
dG9yYWdlTWFwU2VlZCwgU3RyaW5nIHVybFN0cmluZykgV2FudHNDb25uZWN0aW9uCi19CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1h
bmFnZXJTZXQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0
b3JhZ2VNYW5hZ2VyU2V0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MWM3YjcxYmY0NTMwMzExZjg5OTk2ZGRm
OGQ0NjgwZTliYjA5MjRhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0LmNwcApAQCAtMCwwICsxLDQwOSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJTdG9yYWdlTWFuYWdlclNldC5oIgorCisjaW5jbHVkZSAi
U3RvcmFnZUFyZWFNYXBNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlN0b3JhZ2VNYW5hZ2VyU2V0TWVz
c2FnZXMuaCIKKyNpbmNsdWRlIDx3dGYvdGhyZWFkcy9CaW5hcnlTZW1hcGhvcmUuaD4KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NvbnN0IHVpbnQ2NF90IGludmFsaWRTdG9yYWdlQXJlYUlEID0g
MDsKKworUmVmPFN0b3JhZ2VNYW5hZ2VyU2V0PiBTdG9yYWdlTWFuYWdlclNldDo6Y3JlYXRlKCkK
K3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9yYWdlTWFuYWdlclNldCk7Cit9CisKK1N0
b3JhZ2VNYW5hZ2VyU2V0OjpTdG9yYWdlTWFuYWdlclNldCgpCisgICAgOiBtX3F1ZXVlKFdvcmtR
dWV1ZTo6Y3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0LldlYlN0b3JhZ2UiKSkKK3sKKyAgICBBU1NF
UlQoUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgLy8gTWFrZSBzdXJlIHRoZSBlbmNvZGluZyBp
cyBpbml0aWFsaXplZCBiZWZvcmUgd2Ugc3RhcnQgZGlzcGF0Y2hpbmcgdGhpbmdzIHRvIHRoZSBx
dWV1ZS4KKyAgICBVVEY4RW5jb2RpbmcoKTsKK30KKworU3RvcmFnZU1hbmFnZXJTZXQ6On5TdG9y
YWdlTWFuYWdlclNldCgpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAg
IHdhaXRVbnRpbFRhc2tzRmluaXNoZWQoKTsKK30KKwordm9pZCBTdG9yYWdlTWFuYWdlclNldDo6
YWRkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VE
aXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgbG9jYWxTdG9yYWdlRGlyZWN0b3J5
SGFuZGxlKQoreworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBhdXRvW2l0
ZXIsIGlzTmV3RW50cnldID0gbV9zdG9yYWdlTWFuYWdlclBhdGhzLmFkZChzZXNzaW9uSUQsIGxv
Y2FsU3RvcmFnZURpcmVjdG9yeSk7CisgICAgaWYgKGlzTmV3RW50cnkpIHsKKyAgICAgICAgaWYg
KCFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKKyAgICAgICAgICAgIFNhbmRib3hFeHRlbnNpb246
OmNvbnN1bWVQZXJtYW5lbnRseShsb2NhbFN0b3JhZ2VEaXJlY3RvcnlIYW5kbGUpOworCisgICAg
ICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIHNlc3Npb25JRCwgZGlyZWN0b3J5ID0gbG9jYWxTdG9yYWdlRGlyZWN0b3J5Lmlzb2xhdGVk
Q29weSgpXSgpIG11dGFibGUgeworICAgICAgICAgICAgbV9zdG9yYWdlTWFuYWdlcnMuZW5zdXJl
KHNlc3Npb25JRCwgW2RpcmVjdG9yeV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICByZXR1
cm4gU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZShXVEZNb3ZlKGRpcmVjdG9yeSkpOworICAgICAgICAg
ICAgfSk7CisgICAgICAgIH0pOworICAgIH0KK30KKwordm9pZCBTdG9yYWdlTWFuYWdlclNldDo6
cmVtb3ZlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOworCisgICAgaWYgKG1fc3RvcmFnZU1hbmFnZXJQYXRocy5yZW1vdmUoc2Vzc2lv
bklEKSkgeworICAgICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBzZXNzaW9uSURdKCkgeworICAgICAgICAgICAgbV9zdG9yYWdlTWFu
YWdlcnMucmVtb3ZlKHNlc3Npb25JRCk7CisgICAgICAgIH0pOworICAgIH0KK30KKworYm9vbCBT
dG9yYWdlTWFuYWdlclNldDo6Y29udGFpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQorewor
ICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICByZXR1cm4gbV9zdG9yYWdlTWFu
YWdlclBhdGhzLmNvbnRhaW5zKHNlc3Npb25JRCk7Cit9CisKK3ZvaWQgU3RvcmFnZU1hbmFnZXJT
ZXQ6OmFkZENvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKSAKK3sKKyAgICBB
U1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgYXV0byBjb25uZWN0aW9uSUQgPSBjb25u
ZWN0aW9uLnVuaXF1ZUlEKCk7CisgICAgQVNTRVJUKCFtX2Nvbm5lY3Rpb25zLmNvbnRhaW5zKGNv
bm5lY3Rpb25JRCkpOworICAgIGlmIChtX2Nvbm5lY3Rpb25zLmFkZChjb25uZWN0aW9uSUQpLmlz
TmV3RW50cnkpCisgICAgICAgIGNvbm5lY3Rpb24uYWRkV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVy
KE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdlclNldDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3F1
ZXVlLmdldCgpLCB0aGlzKTsKK30KKwordm9pZCBTdG9yYWdlTWFuYWdlclNldDo6cmVtb3ZlQ29u
bmVjdGlvbihJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCit7CisgICAgQVNTRVJUKFJ1bkxv
b3A6OmlzTWFpbigpKTsKKworICAgIGF1dG8gY29ubmVjdGlvbklEID0gY29ubmVjdGlvbi51bmlx
dWVJRCgpOworICAgIEFTU0VSVChtX2Nvbm5lY3Rpb25zLmNvbnRhaW5zKGNvbm5lY3Rpb25JRCkp
OworICAgIG1fY29ubmVjdGlvbnMucmVtb3ZlKGNvbm5lY3Rpb25JRCk7CisgICAgY29ubmVjdGlv
bi5yZW1vdmVXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlN0b3JhZ2VNYW5hZ2Vy
U2V0OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOworCisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29ubmVjdGlvbklEXSgpIHsKKyAg
ICAgICAgZm9yIChhdXRvJiBzdG9yYWdlQXJlYSA6IG1fc3RvcmFnZUFyZWFzLnZhbHVlcygpKQor
ICAgICAgICAgICAgc3RvcmFnZUFyZWEtPnJlbW92ZUxpc3RlbmVyKGNvbm5lY3Rpb25JRCk7Cisg
ICAgfSk7Cit9CisKK3ZvaWQgU3RvcmFnZU1hbmFnZXJTZXQ6OndhaXRVbnRpbFRhc2tzRmluaXNo
ZWQoKQoreworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBCaW5hcnlTZW1h
cGhvcmUgc2VtYXBob3JlOworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCAmc2VtYXBob3Jl
XSB7CisgICAgICAgIGZvciAoYXV0byYgW3Nlc3Npb25JRCwgc3RvcmFnZU1hbmFnZXJdIDogbV9z
dG9yYWdlTWFuYWdlcnMpCisgICAgICAgICAgICBzdG9yYWdlTWFuYWdlci0+Y2xlYXJTdG9yYWdl
TmFtZXNwYWNlcygpOworCisgICAgICAgIG1fc3RvcmFnZU1hbmFnZXJzLmNsZWFyKCk7CisgICAg
ICAgIG1fc3RvcmFnZUFyZWFzLmNsZWFyKCk7CisKKyAgICAgICAgc2VtYXBob3JlLnNpZ25hbCgp
OworICAgIH0pOworICAgIHNlbWFwaG9yZS53YWl0KCk7Cit9CisKK3ZvaWQgU3RvcmFnZU1hbmFn
ZXJTZXQ6OndhaXRVbnRpbFN5bmNpbmdMb2NhbFN0b3JhZ2VGaW5pc2hlZCgpCit7CisgICAgQVNT
RVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIEJpbmFyeVNlbWFwaG9yZSBzZW1hcGhvcmU7
CisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsICZzZW1hcGhvcmVdIHsKKyAgICAgICAgZm9y
IChhdXRvKiBzdG9yYWdlQXJlYSA6IG1fc3RvcmFnZUFyZWFzLnZhbHVlcygpKQorICAgICAgICAg
ICAgc3RvcmFnZUFyZWEtPnN5bmNUb0RhdGFiYXNlKCk7CisKKyAgICAgICAgc2VtYXBob3JlLnNp
Z25hbCgpOworICAgIH0pOworICAgIHNlbWFwaG9yZS53YWl0KCk7Cit9CisKK3ZvaWQgU3RvcmFn
ZU1hbmFnZXJTZXQ6OnN1c3BlbmQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQoreworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBDb21w
bGV0aW9uSGFuZGxlckNhbGxpbmdTY29wZSBjb21wbGV0aW9uSGFuZGxlckNhbGxlcihXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgTG9ja2VyPExvY2s+IHN0YXRlTG9ja2VyKG1fc3Rh
dGVMb2NrKTsKKyAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6UnVubmluZykKKyAgICAgICAgcmV0
dXJuOworICAgIG1fc3RhdGUgPSBTdGF0ZTo6V2lsbFN1c3BlbmQ7CisKKyAgICBtX3F1ZXVlLT5k
aXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9u
SGFuZGxlciA9IGNvbXBsZXRpb25IYW5kbGVyQ2FsbGVyLnJlbGVhc2UoKV0gKCkgbXV0YWJsZSB7
CisgICAgICAgIExvY2tlcjxMb2NrPiBzdGF0ZUxvY2tlcihtX3N0YXRlTG9jayk7CisgICAgICAg
IEFTU0VSVChtX3N0YXRlICE9IFN0YXRlOjpTdXNwZW5kZWQpOworCisgICAgICAgIGlmIChtX3N0
YXRlICE9IFN0YXRlOjpXaWxsU3VzcGVuZCkgeworICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigp
LmRpc3BhdGNoKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorCisgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6U3VzcGVuZGVkOworICAg
ICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OworCisgICAgICAgIHdoaWxlIChtX3N0YXRlID09IFN0YXRlOjpTdXNwZW5kZWQpCisgICAgICAg
ICAgICBtX3N0YXRlQ2hhbmdlQ29uZGl0aW9uLndhaXQobV9zdGF0ZUxvY2spOworICAgICAgICBB
U1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6UnVubmluZyk7CisgICAgfSk7Cit9CisKK3ZvaWQgU3Rv
cmFnZU1hbmFnZXJTZXQ6OnJlc3VtZSgpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigp
KTsKKworICAgIExvY2tlcjxMb2NrPiBzdGF0ZUxvY2tlcihtX3N0YXRlTG9jayk7CisgICAgYXV0
byBwcmV2aW91c1N0YXRlID0gbV9zdGF0ZTsKKyAgICBtX3N0YXRlID0gU3RhdGU6OlJ1bm5pbmc7
CisgICAgaWYgKHByZXZpb3VzU3RhdGUgPT0gU3RhdGU6OlN1c3BlbmRlZCkKKyAgICAgICAgbV9z
dGF0ZUNoYW5nZUNvbmRpdGlvbi5ub3RpZnlPbmUoKTsKK30KKwordm9pZCBTdG9yYWdlTWFuYWdl
clNldDo6Z2V0U2Vzc2lvblN0b3JhZ2VPcmlnaW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0PFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc2Vzc2lvbklELCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAg
ICBhdXRvKiBzdG9yYWdlTWFuYWdlciA9IG1fc3RvcmFnZU1hbmFnZXJzLmdldChzZXNzaW9uSUQp
OworICAgICAgICBBU1NFUlQoc3RvcmFnZU1hbmFnZXIpOworCisgICAgICAgIHN0b3JhZ2VNYW5h
Z2VyLT5nZXRTZXNzaW9uU3RvcmFnZU9yaWdpbnMoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OworICAgIH0pOworfQorCit2b2lkIFN0b3JhZ2VNYW5hZ2VyU2V0OjpkZWxldGVTZXNzaW9uU3Rv
cmFnZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzZXNzaW9uSUQsIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8q
IHN0b3JhZ2VNYW5hZ2VyID0gbV9zdG9yYWdlTWFuYWdlcnMuZ2V0KHNlc3Npb25JRCk7CisgICAg
ICAgIEFTU0VSVChzdG9yYWdlTWFuYWdlcik7CisKKyAgICAgICAgc3RvcmFnZU1hbmFnZXItPmRl
bGV0ZVNlc3Npb25TdG9yYWdlT3JpZ2lucyhXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cisg
ICAgfSk7Cit9CisKK3ZvaWQgU3RvcmFnZU1hbmFnZXJTZXQ6OmRlbGV0ZVNlc3Npb25TdG9yYWdl
Rm9yT3JpZ2lucyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGE+JiBvcmlnaW5EYXRhcywgRGVsZXRlQ2FsbGJhY2smJiBjb21w
bGV0aW9uSGFuZGxlcikKK3sKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzZXNzaW9uSUQsIGNvcGllZE9yaWdpbkRhdGFzID0gY3Jv
c3NUaHJlYWRDb3B5KG9yaWdpbkRhdGFzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byogc3RvcmFnZU1hbmFn
ZXIgPSBtX3N0b3JhZ2VNYW5hZ2Vycy5nZXQoc2Vzc2lvbklEKTsKKyAgICAgICAgQVNTRVJUKHN0
b3JhZ2VNYW5hZ2VyKTsKKworICAgICAgICBzdG9yYWdlTWFuYWdlci0+ZGVsZXRlU2Vzc2lvblN0
b3JhZ2VFbnRyaWVzRm9yT3JpZ2lucyhjb3BpZWRPcmlnaW5EYXRhcywgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOworICAgIH0pOworfQorCit2b2lkIFN0b3JhZ2VNYW5hZ2VyU2V0OjpnZXRM
b2NhbFN0b3JhZ2VPcmlnaW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgR2V0T3JpZ2luc0Nh
bGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc2Vzc2lvbklELCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAg
ICBhdXRvKiBzdG9yYWdlTWFuYWdlciA9IG1fc3RvcmFnZU1hbmFnZXJzLmdldChzZXNzaW9uSUQp
OworICAgICAgICBBU1NFUlQoc3RvcmFnZU1hbmFnZXIpOworCisgICAgICAgIHN0b3JhZ2VNYW5h
Z2VyLT5nZXRMb2NhbFN0b3JhZ2VPcmlnaW5zKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
KyAgICB9KTsKK30KKwordm9pZCBTdG9yYWdlTWFuYWdlclNldDo6ZGVsZXRlTG9jYWxTdG9yYWdl
TW9kaWZpZWRTaW5jZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdhbGxUaW1lIHRpbWUsIERl
bGV0ZUNhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgbV9xdWV1ZS0+ZGlzcGF0
Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc2Vzc2lvbklELCB0aW1l
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFi
bGUgeworICAgICAgICBhdXRvKiBzdG9yYWdlTWFuYWdlciA9IG1fc3RvcmFnZU1hbmFnZXJzLmdl
dChzZXNzaW9uSUQpOworICAgICAgICBBU1NFUlQoc3RvcmFnZU1hbmFnZXIpOworCisgICAgICAg
IHN0b3JhZ2VNYW5hZ2VyLT5kZWxldGVMb2NhbFN0b3JhZ2VPcmlnaW5zTW9kaWZpZWRTaW5jZSh0
aW1lLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgfSk7Cit9CisKK3ZvaWQgU3Rv
cmFnZU1hbmFnZXJTZXQ6OmRlbGV0ZUxvY2FsU3RvcmFnZUZvck9yaWdpbnMoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYg
b3JpZ2luRGF0YXMsIERlbGV0ZUNhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAg
bV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
c2Vzc2lvbklELCBjb3BpZWRPcmlnaW5EYXRhcyA9IGNyb3NzVGhyZWFkQ29weShvcmlnaW5EYXRh
cyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0
YWJsZSB7CisgICAgICAgIGF1dG8qIHN0b3JhZ2VNYW5hZ2VyID0gbV9zdG9yYWdlTWFuYWdlcnMu
Z2V0KHNlc3Npb25JRCk7CisgICAgICAgIEFTU0VSVChzdG9yYWdlTWFuYWdlcik7CisKKyAgICAg
ICAgc3RvcmFnZU1hbmFnZXItPmRlbGV0ZUxvY2FsU3RvcmFnZUVudHJpZXNGb3JPcmlnaW5zKGNv
cGllZE9yaWdpbkRhdGFzLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgfSk7Cit9
CisKK3ZvaWQgU3RvcmFnZU1hbmFnZXJTZXQ6OmdldExvY2FsU3RvcmFnZU9yaWdpbkRldGFpbHMo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxM
b2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6Ok9yaWdpbkRldGFpbHM+JiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQoreworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIHNlc3Npb25JRCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byogc3RvcmFnZU1h
bmFnZXIgPSBtX3N0b3JhZ2VNYW5hZ2Vycy5nZXQoc2Vzc2lvbklEKTsKKyAgICAgICAgQVNTRVJU
KHN0b3JhZ2VNYW5hZ2VyKTsKKworICAgICAgICBzdG9yYWdlTWFuYWdlci0+Z2V0TG9jYWxTdG9y
YWdlT3JpZ2luRGV0YWlscyhXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgfSk7Cit9
CisKK3ZvaWQgU3RvcmFnZU1hbmFnZXJTZXQ6OmNvbm5lY3RUb0xvY2FsU3RvcmFnZUFyZWEoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2
NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgb3JpZ2luRGF0YSwg
Q29ubmVjdFRvU3RvcmFnZUFyZWFDYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAg
IEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgYXV0byogc3RvcmFnZU1hbmFnZXIg
PSBtX3N0b3JhZ2VNYW5hZ2Vycy5nZXQoc2Vzc2lvbklEKTsKKyAgICBpZiAoIXN0b3JhZ2VNYW5h
Z2VyKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGludmFsaWRTdG9yYWdlQXJlYUlEKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8qIHN0b3JhZ2VBcmVhID0gc3RvcmFn
ZU1hbmFnZXItPmNyZWF0ZUxvY2FsU3RvcmFnZUFyZWEoc3RvcmFnZU5hbWVzcGFjZUlELCBXVEZN
b3ZlKG9yaWdpbkRhdGEpKTsKKyAgICBpZiAoIXN0b3JhZ2VBcmVhKSB7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKGludmFsaWRTdG9yYWdlQXJlYUlEKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGF1dG8gc3RvcmFnZUFyZWFJRCA9IHN0b3JhZ2VBcmVhLT5pZGVudGlmaWVyKCk7
CisgICAgYXV0b1tpdGVyLCBpc05ld0VudHJ5XSA9IG1fc3RvcmFnZUFyZWFzLmFkZChzdG9yYWdl
QXJlYUlELCBudWxscHRyKTsKKyAgICBpZiAoaXNOZXdFbnRyeSkgeworICAgICAgICBzdG9yYWdl
QXJlYS0+c2V0V29ya1F1ZXVlKG1fcXVldWUucHRyKCkpOworICAgICAgICBpdGVyLT52YWx1ZSA9
IHN0b3JhZ2VBcmVhOworICAgIH0gZWxzZQorICAgICAgICBBU1NFUlQoc3RvcmFnZUFyZWEgPT0g
aXRlci0+dmFsdWUpOworCisgICAgY29tcGxldGlvbkhhbmRsZXIoc3RvcmFnZUFyZWFJRCk7CisK
KyAgICBzdG9yYWdlQXJlYS0+YWRkTGlzdGVuZXIoY29ubmVjdGlvbi51bmlxdWVJRCgpKTsKK30K
Kwordm9pZCBTdG9yYWdlTWFuYWdlclNldDo6Y29ubmVjdFRvVHJhbnNpZW50TG9jYWxTdG9yYWdl
QXJlYShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgdWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBTZWN1cml0eU9yaWdpbkRhdGEmJiB0b3BM
ZXZlbE9yaWdpbkRhdGEsIFNlY3VyaXR5T3JpZ2luRGF0YSYmIG9yaWdpbkRhdGEsIENvbm5lY3RU
b1N0b3JhZ2VBcmVhQ2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlQo
IVJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIGF1dG8qIHN0b3JhZ2VNYW5hZ2VyID0gbV9zdG9y
YWdlTWFuYWdlcnMuZ2V0KHNlc3Npb25JRCk7CisgICAgaWYgKCFzdG9yYWdlTWFuYWdlcikgewor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihpbnZhbGlkU3RvcmFnZUFyZWFJRCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvKiBzdG9yYWdlQXJlYSA9IHN0b3JhZ2VNYW5hZ2Vy
LT5jcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKHN0b3JhZ2VOYW1lc3BhY2VJRCwgV1RG
TW92ZSh0b3BMZXZlbE9yaWdpbkRhdGEpLCBXVEZNb3ZlKG9yaWdpbkRhdGEpKTsKKyAgICBpZiAo
IXN0b3JhZ2VBcmVhKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGludmFsaWRTdG9yYWdl
QXJlYUlEKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gc3RvcmFnZUFyZWFJ
RCA9IHN0b3JhZ2VBcmVhLT5pZGVudGlmaWVyKCk7CisgICAgYXV0b1tpdGVyLCBpc05ld0VudHJ5
XSA9IG1fc3RvcmFnZUFyZWFzLmFkZChzdG9yYWdlQXJlYUlELCBudWxscHRyKTsKKyAgICBpZiAo
aXNOZXdFbnRyeSkKKyAgICAgICAgaXRlci0+dmFsdWUgPSBzdG9yYWdlQXJlYTsKKyAgICBlbHNl
CisgICAgICAgIEFTU0VSVChzdG9yYWdlQXJlYSA9PSBpdGVyLT52YWx1ZSk7CisKKyAgICBjb21w
bGV0aW9uSGFuZGxlcihzdG9yYWdlQXJlYUlEKTsKKworICAgIHN0b3JhZ2VBcmVhLT5hZGRMaXN0
ZW5lcihjb25uZWN0aW9uLnVuaXF1ZUlEKCkpOworfQorCit2b2lkIFN0b3JhZ2VNYW5hZ2VyU2V0
Ojpjb25uZWN0VG9TZXNzaW9uU3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwg
U2VjdXJpdHlPcmlnaW5EYXRhJiYgb3JpZ2luRGF0YSwgQ29ubmVjdFRvU3RvcmFnZUFyZWFDYWxs
YmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWlu
KCkpOworCisgICAgYXV0byogc3RvcmFnZU1hbmFnZXIgPSBtX3N0b3JhZ2VNYW5hZ2Vycy5nZXQo
c2Vzc2lvbklEKTsKKyAgICBpZiAoIXN0b3JhZ2VNYW5hZ2VyKSB7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKGludmFsaWRTdG9yYWdlQXJlYUlEKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGF1dG8qIHN0b3JhZ2VBcmVhID0gc3RvcmFnZU1hbmFnZXItPmNyZWF0ZVNlc3Npb25T
dG9yYWdlQXJlYShzdG9yYWdlTmFtZXNwYWNlSUQsIFdURk1vdmUob3JpZ2luRGF0YSkpOworICAg
IGlmICghc3RvcmFnZUFyZWEpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoaW52YWxpZFN0
b3JhZ2VBcmVhSUQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBzdG9yYWdl
QXJlYUlEID0gc3RvcmFnZUFyZWEtPmlkZW50aWZpZXIoKTsKKyAgICBhdXRvW2l0ZXIsIGlzTmV3
RW50cnldID0gbV9zdG9yYWdlQXJlYXMuYWRkKHN0b3JhZ2VBcmVhSUQsIG51bGxwdHIpOworICAg
IGlmIChpc05ld0VudHJ5KQorICAgICAgICBpdGVyLT52YWx1ZSA9IHN0b3JhZ2VBcmVhOworICAg
IGVsc2UKKyAgICAgICAgQVNTRVJUKHN0b3JhZ2VBcmVhID09IGl0ZXItPnZhbHVlKTsKKworICAg
IGNvbXBsZXRpb25IYW5kbGVyKHN0b3JhZ2VBcmVhSUQpOworICAgIAorICAgIHN0b3JhZ2VBcmVh
LT5hZGRMaXN0ZW5lcihjb25uZWN0aW9uLnVuaXF1ZUlEKCkpOworfQorCit2b2lkIFN0b3JhZ2VN
YW5hZ2VyU2V0OjpkaXNjb25uZWN0RnJvbVN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgdWludDY0X3Qgc3RvcmFnZUFyZWFJRCkKK3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6
OmlzTWFpbigpKTsKKworICAgIGF1dG8qIHN0b3JhZ2VBcmVhID0gbV9zdG9yYWdlQXJlYXMuZ2V0
KHN0b3JhZ2VBcmVhSUQpOworICAgIEFTU0VSVChzdG9yYWdlQXJlYSk7CisgICAgQVNTRVJUKHN0
b3JhZ2VBcmVhLT5oYXNMaXN0ZW5lcihjb25uZWN0aW9uLnVuaXF1ZUlEKCkpKTsKKworICAgIHN0
b3JhZ2VBcmVhLT5yZW1vdmVMaXN0ZW5lcihjb25uZWN0aW9uLnVuaXF1ZUlEKCkpOworfQorCit2
b2lkIFN0b3JhZ2VNYW5hZ2VyU2V0OjpnZXRWYWx1ZXMoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCB1aW50NjRfdCBzdG9yYWdlQXJlYUlELCBHZXRWYWx1ZXNDYWxsYmFjayYmIGNvbXBsZXRp
b25IYW5kbGVyKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgYXV0
byogc3RvcmFnZUFyZWEgPSBtX3N0b3JhZ2VBcmVhcy5nZXQoc3RvcmFnZUFyZWFJRCk7CisgICAg
QVNTRVJUKCFzdG9yYWdlQXJlYSB8fCBzdG9yYWdlQXJlYS0+aGFzTGlzdGVuZXIoY29ubmVjdGlv
bi51bmlxdWVJRCgpKSk7CisKKyAgICBjb21wbGV0aW9uSGFuZGxlcihzdG9yYWdlQXJlYSA/IHN0
b3JhZ2VBcmVhLT5pdGVtcygpIDogSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4oKSk7Cit9CisKK3Zv
aWQgU3RvcmFnZU1hbmFnZXJTZXQ6OnNldEl0ZW0oSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
LCB1aW50NjRfdCBzdG9yYWdlQXJlYUlELCB1aW50NjRfdCBzb3VyY2VTdG9yYWdlQXJlYUlELCB1
aW50NjRfdCBzdG9yYWdlTWFwU2VlZCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYg
dmFsdWUsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6
aXNNYWluKCkpOworCisgICAgYXV0byogc3RvcmFnZUFyZWEgPSBtX3N0b3JhZ2VBcmVhcy5nZXQo
c3RvcmFnZUFyZWFJRCk7CisgICAgQVNTRVJUKHN0b3JhZ2VBcmVhKTsKKworICAgIGJvb2wgcXVv
dGFFcnJvcjsKKyAgICBzdG9yYWdlQXJlYS0+c2V0SXRlbShjb25uZWN0aW9uLnVuaXF1ZUlEKCks
IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIGtleSwgdmFsdWUsIHVybFN0cmluZywgcXVvdGFFcnJvcik7
CisKKyAgICBjb25uZWN0aW9uLnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VBcmVhTWFwOjpEaWRTZXRJ
dGVtKHN0b3JhZ2VNYXBTZWVkLCBrZXksIHF1b3RhRXJyb3IpLCBzdG9yYWdlQXJlYUlEKTsKK30g
CisKK3ZvaWQgU3RvcmFnZU1hbmFnZXJTZXQ6OnJlbW92ZUl0ZW0oSVBDOjpDb25uZWN0aW9uJiBj
b25uZWN0aW9uLCB1aW50NjRfdCBzdG9yYWdlQXJlYUlELCB1aW50NjRfdCBzb3VyY2VTdG9yYWdl
QXJlYUlELCB1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0
IFN0cmluZyYgdXJsU3RyaW5nKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwor
CisgICAgYXV0byogc3RvcmFnZUFyZWEgPSBtX3N0b3JhZ2VBcmVhcy5nZXQoc3RvcmFnZUFyZWFJ
RCk7CisgICAgQVNTRVJUKHN0b3JhZ2VBcmVhKTsKKworICAgIHN0b3JhZ2VBcmVhLT5yZW1vdmVJ
dGVtKGNvbm5lY3Rpb24udW5pcXVlSUQoKSwgc291cmNlU3RvcmFnZUFyZWFJRCwga2V5LCB1cmxT
dHJpbmcpOworCisgICAgY29ubmVjdGlvbi5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlQXJlYU1hcDo6
RGlkUmVtb3ZlSXRlbShzdG9yYWdlTWFwU2VlZCwga2V5KSwgc3RvcmFnZUFyZWFJRCk7Cit9CisK
K3ZvaWQgU3RvcmFnZU1hbmFnZXJTZXQ6OmNsZWFyKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgdWludDY0X3Qgc3RvcmFnZUFyZWFJRCwgdWludDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwg
dWludDY0X3Qgc3RvcmFnZU1hcFNlZWQsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQoreworICAg
IEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgYXV0byogc3RvcmFnZUFyZWEgPSBt
X3N0b3JhZ2VBcmVhcy5nZXQoc3RvcmFnZUFyZWFJRCk7CisgICAgQVNTRVJUKHN0b3JhZ2VBcmVh
KTsKKworICAgIHN0b3JhZ2VBcmVhLT5jbGVhcihjb25uZWN0aW9uLnVuaXF1ZUlEKCksIHNvdXJj
ZVN0b3JhZ2VBcmVhSUQsIHVybFN0cmluZyk7CisKKyAgICBjb25uZWN0aW9uLnNlbmQoTWVzc2Fn
ZXM6OlN0b3JhZ2VBcmVhTWFwOjpEaWRDbGVhcihzdG9yYWdlTWFwU2VlZCksIHN0b3JhZ2VBcmVh
SUQpOworfQorCit2b2lkIFN0b3JhZ2VNYW5hZ2VyU2V0OjpjbG9uZVNlc3Npb25TdG9yYWdlTmFt
ZXNwYWNlKElQQzo6Q29ubmVjdGlvbiYsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0
X3QgZnJvbVN0b3JhZ2VOYW1lc3BhY2VJRCwgdWludDY0X3QgdG9TdG9yYWdlTmFtZXNwYWNlSUQp
Cit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBpZiAoYXV0byogc3Rv
cmFnZU1hbmFnZXIgPSBtX3N0b3JhZ2VNYW5hZ2Vycy5nZXQoc2Vzc2lvbklEKSkKKyAgICAgICAg
c3RvcmFnZU1hbmFnZXItPmNsb25lU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoZnJvbVN0b3JhZ2VO
YW1lc3BhY2VJRCwgdG9TdG9yYWdlTmFtZXNwYWNlSUQpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFn
ZS9TdG9yYWdlTWFuYWdlclNldC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJT
dG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzcwMzJhYzNlMmFjODZmOThj
OTA5MGMyNmU5OGY1Y2EwNzgwZTFiMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldC5oCkBAIC0wLDAgKzEs
MTAzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCisjaW5jbHVkZSAiU3Rv
cmFnZU1hbmFnZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgor
I2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KKwordXNpbmcgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgU2FuZGJveEV4dGVuc2lvbjsK
KwordXNpbmcgQ29ubmVjdFRvU3RvcmFnZUFyZWFDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVy
PHZvaWQodWludDY0X3QpPjsKK3VzaW5nIEdldFZhbHVlc0NhbGxiYWNrID0gQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYpPjsKK3VzaW5nIEdldE9y
aWdpbnNDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzaFNldDxXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGE+JiYpPjsKK3VzaW5nIEdldE9yaWdpbkRldGFpbHNDYWxsYmFjayA9
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tl
cjo6T3JpZ2luRGV0YWlscz4mJik+OwordXNpbmcgRGVsZXRlQ2FsbGJhY2sgPSBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+OworCitjbGFzcyBTdG9yYWdlTWFuYWdlclNldCA6IHB1YmxpYyBJUEM6
OkNvbm5lY3Rpb246OldvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlciB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFJlZjxTdG9yYWdlTWFuYWdlclNldD4gY3JlYXRlKCk7CisgICAgU3RvcmFnZU1hbmFnZXJT
ZXQoKTsKKyAgICB+U3RvcmFnZU1hbmFnZXJTZXQoKTsKKworICAgIHZvaWQgYWRkKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZURpcmVjdG9yeSwgU2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlJiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnlIYW5kbGUpOworICAgIHZvaWQgcmVt
b3ZlKFBBTDo6U2Vzc2lvbklEKTsKKyAgICBib29sIGNvbnRhaW5zKFBBTDo6U2Vzc2lvbklEKTsK
KworICAgIHZvaWQgYWRkQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24mKTsKKyAgICB2b2lkIHJl
bW92ZUNvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uJik7CisKKyAgICB2b2lkIHdhaXRVbnRpbFRh
c2tzRmluaXNoZWQoKTsKKyAgICB2b2lkIHdhaXRVbnRpbFN5bmNpbmdMb2NhbFN0b3JhZ2VGaW5p
c2hlZCgpOworICAgIHZvaWQgc3VzcGVuZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwor
ICAgIHZvaWQgcmVzdW1lKCk7CisKKyAgICB2b2lkIGdldFNlc3Npb25TdG9yYWdlT3JpZ2lucyhQ
QUw6OlNlc3Npb25JRCwgR2V0T3JpZ2luc0NhbGxiYWNrJiYpOworICAgIHZvaWQgZGVsZXRlU2Vz
c2lvblN0b3JhZ2UoUEFMOjpTZXNzaW9uSUQsIERlbGV0ZUNhbGxiYWNrJiYpOworICAgIHZvaWQg
ZGVsZXRlU2Vzc2lvblN0b3JhZ2VGb3JPcmlnaW5zKFBBTDo6U2Vzc2lvbklELCBjb25zdCBWZWN0
b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYsIERlbGV0ZUNhbGxiYWNrJiYpOworICAg
IHZvaWQgZ2V0TG9jYWxTdG9yYWdlT3JpZ2lucyhQQUw6OlNlc3Npb25JRCwgR2V0T3JpZ2luc0Nh
bGxiYWNrJiYpOworICAgIHZvaWQgZGVsZXRlTG9jYWxTdG9yYWdlTW9kaWZpZWRTaW5jZShQQUw6
OlNlc3Npb25JRCwgV2FsbFRpbWUsIERlbGV0ZUNhbGxiYWNrJiYpOworICAgIHZvaWQgZGVsZXRl
TG9jYWxTdG9yYWdlRm9yT3JpZ2lucyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mLCBEZWxldGVDYWxsYmFjayYmKTsKKyAgICB2b2lkIGdl
dExvY2FsU3RvcmFnZU9yaWdpbkRldGFpbHMoUEFMOjpTZXNzaW9uSUQsIEdldE9yaWdpbkRldGFp
bHNDYWxsYmFjayYmKTsKKworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpEZWNvZGVyJik7CisgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rl
cj4mIHJlcGx5RW5jb2Rlcik7CisKK3ByaXZhdGU6CisgICAgLy8gTWVzc2FnZSBIYW5kbGVycwor
ICAgIHZvaWQgY29ubmVjdFRvTG9jYWxTdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb24mLCBQQUw6
OlNlc3Npb25JRCAsIHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgU2VjdXJpdHlPcmlnaW5E
YXRhJiYsIENvbm5lY3RUb1N0b3JhZ2VBcmVhQ2FsbGJhY2smJik7CisgICAgdm9pZCBjb25uZWN0
VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbiYsIFBBTDo6U2Vzc2lv
bklEICwgdWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBTZWN1cml0eU9yaWdpbkRhdGEmJiwg
U2VjdXJpdHlPcmlnaW5EYXRhJiYsIENvbm5lY3RUb1N0b3JhZ2VBcmVhQ2FsbGJhY2smJik7Cisg
ICAgdm9pZCBjb25uZWN0VG9TZXNzaW9uU3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uJiwgUEFM
OjpTZXNzaW9uSUQsIHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgU2VjdXJpdHlPcmlnaW5E
YXRhJiYsIENvbm5lY3RUb1N0b3JhZ2VBcmVhQ2FsbGJhY2smJik7CisgICAgdm9pZCBkaXNjb25u
ZWN0RnJvbVN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbiYsIHVpbnQ2NF90IHN0b3JhZ2VBcmVh
SUQpOworICAgIHZvaWQgZ2V0VmFsdWVzKElQQzo6Q29ubmVjdGlvbiYsIHVpbnQ2NF90IHN0b3Jh
Z2VBcmVhSUQsIEdldFZhbHVlc0NhbGxiYWNrJiYpOworICAgIHZvaWQgc2V0SXRlbShJUEM6OkNv
bm5lY3Rpb24mLCB1aW50NjRfdCBzdG9yYWdlQXJlYUlELCB1aW50NjRfdCBzb3VyY2VTdG9yYWdl
QXJlYUlELCB1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0
IFN0cmluZyYgdmFsdWUsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKTsKKyAgICB2b2lkIHJlbW92
ZUl0ZW0oSVBDOjpDb25uZWN0aW9uJiwgdWludDY0X3Qgc3RvcmFnZUFyZWFJRCwgdWludDY0X3Qg
c291cmNlU3RvcmFnZUFyZWFJRCwgdWludDY0X3Qgc3RvcmFnZU1hcFNlZWQsIGNvbnN0IFN0cmlu
ZyYga2V5LCBjb25zdCBTdHJpbmcmIHVybFN0cmluZyk7CisgICAgdm9pZCBjbGVhcihJUEM6OkNv
bm5lY3Rpb24mLCB1aW50NjRfdCBzdG9yYWdlQXJlYUlELCB1aW50NjRfdCBzb3VyY2VTdG9yYWdl
QXJlYUlELCB1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcp
OworICAgIHZvaWQgY2xvbmVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShJUEM6OkNvbm5lY3Rpb24m
LCBQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgZnJvbVN0b3JhZ2VOYW1lc3BhY2VJRCwgdWludDY0
X3QgdG9TdG9yYWdlTmFtZXNwYWNlSUQpOworCisgICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwg
UmVmUHRyPFN0b3JhZ2VNYW5hZ2VyPj4gbV9zdG9yYWdlTWFuYWdlcnM7CisgICAgSGFzaE1hcDxQ
QUw6OlNlc3Npb25JRCwgU3RyaW5nPiBtX3N0b3JhZ2VNYW5hZ2VyUGF0aHM7CisgICAgSGFzaE1h
cDx1aW50NjRfdCwgU3RvcmFnZUFyZWEqPiBtX3N0b3JhZ2VBcmVhczsKKworICAgIEhhc2hTZXQ8
SVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRD4gbV9jb25uZWN0aW9uczsKKyAgICBSZWY8V29ya1F1
ZXVlPiBtX3F1ZXVlOworCisgICAgZW51bSBjbGFzcyBTdGF0ZSB7CisgICAgICAgIFJ1bm5pbmcs
CisgICAgICAgIFdpbGxTdXNwZW5kLAorICAgICAgICBTdXNwZW5kZWQKKyAgICB9OworICAgIFN0
YXRlIG1fc3RhdGUgeyBTdGF0ZTo6UnVubmluZyB9OworICAgIExvY2sgbV9zdGF0ZUxvY2s7Cisg
ICAgQ29uZGl0aW9uIG1fc3RhdGVDaGFuZ2VDb25kaXRpb247Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3Rv
cmFnZS9TdG9yYWdlTWFuYWdlclNldC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldC5tZXNzYWdlcy5pbgpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lMGMxM2EwMGJjMzViOTE1ZmVhZDg0MDA1ZGEzNDdkMjdjN2QxN2Q2Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VN
YW5hZ2VyU2V0Lm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzQgQEAKKyMgQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKworbWVzc2FnZXMgLT4gU3RvcmFnZU1hbmFnZXJTZXQgewor
ICAgIENvbm5lY3RUb0xvY2FsU3RvcmFnZUFyZWEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1
aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEgc2VjdXJpdHlPcmlnaW5EYXRhKSAtPiAodWludDY0X3Qgc3RvcmFnZUFyZWFJRCkgU3lu
Y2hyb25vdXMgV2FudHNDb25uZWN0aW9uCisgICAgQ29ubmVjdFRvVHJhbnNpZW50TG9jYWxTdG9y
YWdlQXJlYShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3Bh
Y2VJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSB0b3BMZXZlbFNlY3VyaXR5
T3JpZ2luRGF0YSwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBzZWN1cml0eU9y
aWdpbkRhdGEpIC0+ICh1aW50NjRfdCBzdG9yYWdlQXJlYUlEKSBTeW5jaHJvbm91cyBXYW50c0Nv
bm5lY3Rpb24KKyAgICBDb25uZWN0VG9TZXNzaW9uU3RvcmFnZUFyZWEoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCB1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIHN0cnVjdCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEgc2VjdXJpdHlPcmlnaW5EYXRhKSAtPiAodWludDY0X3Qgc3RvcmFn
ZUFyZWFJRCkgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCisgICAgRGlzY29ubmVjdEZyb21T
dG9yYWdlQXJlYSh1aW50NjRfdCBzdG9yYWdlQXJlYUlEKSBXYW50c0Nvbm5lY3Rpb24KKyAgICBH
ZXRWYWx1ZXModWludDY0X3Qgc3RvcmFnZUFyZWFJRCkgLT4gKEhhc2hNYXA8U3RyaW5nLCBTdHJp
bmc+IHZhbHVlcykgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCisgICAgQ2xvbmVTZXNzaW9u
U3RvcmFnZU5hbWVzcGFjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGZyb21T
dG9yYWdlTmFtZXNwYWNlSUQsIHVpbnQ2NF90IHRvU3RvcmFnZU5hbWVzcGFjZUlEKSBXYW50c0Nv
bm5lY3Rpb24KKworICAgIFNldEl0ZW0odWludDY0X3Qgc3RvcmFnZUFyZWFJRCwgdWludDY0X3Qg
c291cmNlU3RvcmFnZUFyZWFJRCwgdWludDY0X3Qgc3RvcmFnZU1hcFNlZWQsIFN0cmluZyBrZXks
IFN0cmluZyB2YWx1ZSwgU3RyaW5nIHVybFN0cmluZykgV2FudHNDb25uZWN0aW9uCisgICAgUmVt
b3ZlSXRlbSh1aW50NjRfdCBzdG9yYWdlQXJlYUlELCB1aW50NjRfdCBzb3VyY2VTdG9yYWdlQXJl
YUlELCB1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCwgU3RyaW5nIGtleSwgU3RyaW5nIHVybFN0cmlu
ZykgV2FudHNDb25uZWN0aW9uCisgICAgQ2xlYXIodWludDY0X3Qgc3RvcmFnZUFyZWFJRCwgdWlu
dDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwgdWludDY0X3Qgc3RvcmFnZU1hcFNlZWQsIFN0cmlu
ZyB1cmxTdHJpbmcpIFdhbnRzQ29ubmVjdGlvbgorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuY3BwCmluZGV4IGQ5MWEzNGY2YTkyNzI1
YzE0MTc3M2YwOGFiNDI5ZTdlOGU1ODYzYzMuLmYxOGRkMTZiZTI2YTc4ZmYwZTg2MjM5Njk5NDM2
NjI2NWIxYTgyZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRh
U3RvcmVQYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0
YVN0b3JlUGFyYW1ldGVycy5jcHAKQEAgLTUzLDYgKzUzLDggQEAgdm9pZCBXZWJzaXRlRGF0YVN0
b3JlUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBl
bmNvZGVyIDw8IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkgPDwgc2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICNlbmRpZgogCisgICAg
ZW5jb2RlciA8PCBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPDwgbG9jYWxTdG9yYWdlRGlyZWN0b3J5
RXh0ZW5zaW9uSGFuZGxlOworCiAgICAgZW5jb2RlciA8PCBwZXJPcmlnaW5TdG9yYWdlUXVvdGE7
CiAgICAgZW5jb2RlciA8PCBwZXJUaGlyZFBhcnR5T3JpZ2luU3RvcmFnZVF1b3RhOwogfQpAQCAt
MTIxLDYgKzEyMywxOCBAQCBPcHRpb25hbDxXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycz4gV2Vi
c2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlYwogICAgIHBhcmFtZXRlcnMu
c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSA9IFdURk1v
dmUoKnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwog
I2VuZGlmCiAKKyAgICBPcHRpb25hbDxTdHJpbmc+IGxvY2FsU3RvcmFnZURpcmVjdG9yeTsKKyAg
ICBkZWNvZGVyID4+IGxvY2FsU3RvcmFnZURpcmVjdG9yeTsKKyAgICBpZiAoIWxvY2FsU3RvcmFn
ZURpcmVjdG9yeSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBwYXJhbWV0ZXJz
LmxvY2FsU3RvcmFnZURpcmVjdG9yeSA9IFdURk1vdmUoKmxvY2FsU3RvcmFnZURpcmVjdG9yeSk7
CisKKyAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGxvY2FsU3RvcmFnZURp
cmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKKyAgICBkZWNvZGVyID4+IGxvY2FsU3RvcmFnZURpcmVj
dG9yeUV4dGVuc2lvbkhhbmRsZTsKKyAgICBpZiAoIWxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVu
c2lvbkhhbmRsZSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBwYXJhbWV0ZXJz
LmxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoKmxvY2FsU3Rv
cmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CisKICAgICBPcHRpb25hbDx1aW50NjRfdD4g
cGVyT3JpZ2luU3RvcmFnZVF1b3RhOwogICAgIGRlY29kZXIgPj4gcGVyT3JpZ2luU3RvcmFnZVF1
b3RhOwogICAgIGlmICghcGVyT3JpZ2luU3RvcmFnZVF1b3RhKQpAQCAtMTQ5LDYgKzE2Myw3IEBA
IFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOjpw
cml2YXRlU2Vzc2lvblBhcmFtZXRlcnMoCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAg
ICAgICAsIHsgfSwgeyB9CiAjZW5kaWYKKyAgICAgICAgLCB7IH0sIHsgfQogICAgIH07CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0
ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5o
CmluZGV4IDk5MmZlZTk3ZDA5OTc0YzlmMzQ3ZjZjNzBkYWExY2ViZjNlMmYyNGYuLjZmZWNlM2Yx
NTRmZTlkN2ZiOThiZmM5N2Q5YjFiN2JmZjQyNGYzOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaApAQCAtNzAsNiArNzAsOSBAQCBz
dHJ1Y3QgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgewogICAgIFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZSBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxl
OwogI2VuZGlmCiAKKyAgICBTdHJpbmcgbG9jYWxTdG9yYWdlRGlyZWN0b3J5OworICAgIFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSBsb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7
CisKICAgICB1aW50NjRfdCBwZXJPcmlnaW5TdG9yYWdlUXVvdGEgeyBXZWJDb3JlOjpTdG9yYWdl
UXVvdGFNYW5hZ2VyOjpkZWZhdWx0UXVvdGEoKSB9OwogICAgIHVpbnQ2NF90IHBlclRoaXJkUGFy
dHlPcmlnaW5TdG9yYWdlUXVvdGEgeyBXZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2VyOjpkZWZh
dWx0VGhpcmRQYXJ0eVF1b3RhKCkgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCA0YmMyMGZkNTMxNmNj
MDNmMjk3ZDk0ZWIyMWE0ZTYyYzVhY2MyNDJkLi5iNDY2ZDJjNzQ4OWU2MmQ1N2YwNzg0Y2Q5NzZl
MjE4NTY0NTE2NDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBi
L1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTcwLDYgKzcwLDcgQEAgTmV0d29ya1Byb2Nl
c3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VOYW1lc3BhY2UuY3BwCiBOZXR3b3JrUHJvY2Vzcy9X
ZWJTdG9yYWdlL1Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlLmNwcAogTmV0d29ya1Byb2Nlc3MvV2Vi
U3RvcmFnZS9TdG9yYWdlQXJlYS5jcHAKIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFn
ZU1hbmFnZXIuY3BwCitOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0
LmNwcAogTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9UcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1l
c3BhY2UuY3BwCiAKIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCmluZGV4IGFmY2U3
MGI2MjdmZWVmN2I1YmY4ODI4OWFkODIyZjE5YzE5Y2RiNmYuLmFmZjA2ZTFjOWE0NWQ3OTExYWJj
YmFjOGVkZDcwYTQ0M2NjMzdjMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tDb250ZXh0LmNwcApAQCAtNjY0LDMgKzY2NCwxOSBAQCB2b2lkIFdLQ29udGV4dENsZWFyQ3Vy
cmVudE1vZGlmaWVyU3RhdGVGb3JUZXN0aW5nKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmKQogewog
ICAgIFdlYktpdDo6dG9JbXBsKGNvbnRleHRSZWYpLT5jbGVhckN1cnJlbnRNb2RpZmllclN0YXRl
Rm9yVGVzdGluZygpOwogfQorCit2b2lkIFdLQ29udGV4dFN5bmNMb2NhbFN0b3JhZ2UoV0tDb250
ZXh0UmVmIGNvbnRleHRSZWYsIHZvaWQqIGNvbnRleHQsIFdLQ29udGV4dFN5bmNMb2NhbFN0b3Jh
Z2VDYWxsYmFjayBjYWxsYmFjaykKK3sKKyAgICBXZWJLaXQ6OnRvSW1wbChjb250ZXh0UmVmKS0+
c3luY0xvY2FsU3RvcmFnZShbY29udGV4dCwgY2FsbGJhY2tdIHsKKyAgICAgICAgaWYgKGNhbGxi
YWNrKQorICAgICAgICAgICAgY2FsbGJhY2soY29udGV4dCk7CisgICAgfSk7Cit9CisKK3ZvaWQg
V0tDb250ZXh0Q2xlYXJMZWdhY3lQcml2YXRlQnJvd3NpbmdMb2NhbFN0b3JhZ2UoV0tDb250ZXh0
UmVmIGNvbnRleHRSZWYsIHZvaWQqIGNvbnRleHQsIFdLQ29udGV4dENsZWFyTGVnYWN5UHJpdmF0
ZUJyb3dzaW5nTG9jYWxTdG9yYWdlQ2FsbGJhY2sgY2FsbGJhY2spCit7CisgICAgV2ViS2l0Ojp0
b0ltcGwoY29udGV4dFJlZiktPmNsZWFyTGVnYWN5UHJpdmF0ZUJyb3dzaW5nTG9jYWxTdG9yYWdl
KFtjb250ZXh0LCBjYWxsYmFja10geworICAgICAgICBpZiAoY2FsbGJhY2spCisgICAgICAgICAg
ICBjYWxsYmFjayhjb250ZXh0KTsKKyAgICB9KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dFByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLQ29udGV4dFByaXZhdGUuaAppbmRleCAwYzE3YjFhMTEyYzJlYzFmMmU4
NTAyMTdhYjUxZjY2NGE1MThhZWE2Li5lOTQyYjYyOWY2YmQ0YmJmNGFlZTNjMmFhZWRjODdiNDFh
MTFmZWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRl
eHRQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0
UHJpdmF0ZS5oCkBAIC0xMTgsNiArMTE4LDEyIEBAIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dENs
ZWFyU3VwcG9ydGVkUGx1Z2lucyhXS0NvbnRleHRSZWYgY29udGV4dCk7CiAKIFdLX0VYUE9SVCB2
b2lkIFdLQ29udGV4dENsZWFyQ3VycmVudE1vZGlmaWVyU3RhdGVGb3JUZXN0aW5nKFdLQ29udGV4
dFJlZiBjb250ZXh0KTsKIAordHlwZWRlZiB2b2lkICgqV0tDb250ZXh0U3luY0xvY2FsU3RvcmFn
ZUNhbGxiYWNrKSh2b2lkKiBmdW5jdGlvbkNvbnRleHQpOworV0tfRVhQT1JUIHZvaWQgV0tDb250
ZXh0U3luY0xvY2FsU3RvcmFnZShXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgdm9pZCogY29udGV4
dCwgV0tDb250ZXh0U3luY0xvY2FsU3RvcmFnZUNhbGxiYWNrIGNhbGxiYWNrKTsKKwordHlwZWRl
ZiB2b2lkICgqV0tDb250ZXh0Q2xlYXJMZWdhY3lQcml2YXRlQnJvd3NpbmdMb2NhbFN0b3JhZ2VD
YWxsYmFjaykodm9pZCogZnVuY3Rpb25Db250ZXh0KTsKK1dLX0VYUE9SVCB2b2lkIFdLQ29udGV4
dENsZWFyTGVnYWN5UHJpdmF0ZUJyb3dzaW5nTG9jYWxTdG9yYWdlKFdLQ29udGV4dFJlZiBjb250
ZXh0UmVmLCB2b2lkKiBjb250ZXh0LCBXS0NvbnRleHRDbGVhckxlZ2FjeVByaXZhdGVCcm93c2lu
Z0xvY2FsU3RvcmFnZUNhbGxiYWNrIGNhbGxiYWNrKTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vi
c2l0ZURhdGFTdG9yZVJlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dl
YnNpdGVEYXRhU3RvcmVSZWYuY3BwCmluZGV4IDk2YjIzMzc0MmMwOWFiNjMzZGVlZDQzOTQ3OTBm
ZTFhNDM2YjJkY2MuLjhmYWE3NmYzYTQ4YWM4YmU5M2Y3YmYzNzgwY2M0NDM0YzYwNjk1NmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9y
ZVJlZi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0
YVN0b3JlUmVmLmNwcApAQCAtNTMxLDYgKzUzMSwxNSBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9y
ZVJlbW92ZUFsbEluZGV4ZWREYXRhYmFzZXMoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9y
ZQogICAgIH0pOwogfQogCit2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUxvY2FsU3RvcmFn
ZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1dl
YnNpdGVEYXRhU3RvcmVSZW1vdmVMb2NhbFN0b3JhZ2VDYWxsYmFjayBjYWxsYmFjaykKK3sKKyAg
ICBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcyA9IFdlYktpdDo6
V2Vic2l0ZURhdGFUeXBlOjpMb2NhbFN0b3JhZ2U7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0
b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlbW92ZURhdGEoZGF0YVR5cGVzLCAtV2FsbFRp
bWU6OmluZmluaXR5KCksIFtjb250ZXh0LCBjYWxsYmFja10geworICAgICAgICBpZiAoY2FsbGJh
Y2spCisgICAgICAgICAgICBjYWxsYmFjayhjb250ZXh0KTsKKyAgICB9KTsKK30KKwogdm9pZCBX
S1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVBbGxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucyhXS1dl
YnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVE
YXRhU3RvcmVSZW1vdmVBbGxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uc0NhbGxiYWNrIGNhbGxi
YWNrKQogewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmgKaW5kZXggY2RlMTRj
YTg2N2UwN2MyNzQ1OGFhMjY1MDE3ZjcxYWFjOWQwZmM1Yi4uN2RlYzkyYTJiMTdjNmVkYzc5Mzkw
M2NkODNhODhjZjE3NWRjM2JhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmgKQEAgLTEyMSw2ICsxMjEsOSBAQCBXS19F
WFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVBbGxJbmRleGVkRGF0YWJhc2VzKFdL
V2Vic2l0ZURhdGFTdG9yZVJlZgogdHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlR2V0
RmV0Y2hDYWNoZU9yaWdpbnNGdW5jdGlvbikoV0tBcnJheVJlZiwgdm9pZCopOwogV0tfRVhQT1JU
IHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlR2V0RmV0Y2hDYWNoZU9yaWdpbnMoV0tXZWJzaXRlRGF0
YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3Jl
R2V0RmV0Y2hDYWNoZU9yaWdpbnNGdW5jdGlvbiBmdW5jdGlvbik7CiAKK3R5cGVkZWYgdm9pZCAo
KldLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUxvY2FsU3RvcmFnZUNhbGxiYWNrKSh2b2lkKiBmdW5j
dGlvbkNvbnRleHQpOworV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlTG9j
YWxTdG9yYWdlKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQqIGNvbnRl
eHQsIFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUxvY2FsU3RvcmFnZUNhbGxiYWNrIGNhbGxiYWNr
KTsKKwogdHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlR2V0RmV0Y2hDYWNoZVNpemVG
b3JPcmlnaW5GdW5jdGlvbikodWludDY0X3QsIHZvaWQqKTsKIFdLX0VYUE9SVCB2b2lkIFdLV2Vi
c2l0ZURhdGFTdG9yZUdldEZldGNoQ2FjaGVTaXplRm9yT3JpZ2luKFdLV2Vic2l0ZURhdGFTdG9y
ZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIG9yaWdpbiwgdm9pZCogY29udGV4dCwgV0tX
ZWJzaXRlRGF0YVN0b3JlR2V0RmV0Y2hDYWNoZVNpemVGb3JPcmlnaW5GdW5jdGlvbiBmdW5jdGlv
bik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCA1
ZTg4MTlkNGM2MzlmZTQwMDIyYjE3YWI2YmFjNWNiM2NlNzI5MjAxLi4xNWE2ZTExODFjY2JiODI2
OTViZTA1NjNmNDZiNzE2ZTY5N2RkYjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuY3BwCkBAIC01ODMsOCArNTgzLDggQEAgTmV0d29ya1Byb2Nlc3NQcm94eSYg
V2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKFdlYnNpdGVEYXRhU3RvcmUqIHdp
dGgKICAgICBhdXRvIGxvY2FsU3RvcmFnZURpcmVjdG9yeSA9IG1fd2Vic2l0ZURhdGFTdG9yZSA/
IG1fd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlc29sdmVkTG9jYWxTdG9y
YWdlRGlyZWN0b3J5KCkgOiBudWxsU3RyaW5nKCk7CiAgICAgaWYgKCFsb2NhbFN0b3JhZ2VEaXJl
Y3RvcnkpCiAgICAgICAgIGxvY2FsU3RvcmFnZURpcmVjdG9yeSA9IEFQSTo6V2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpOwotICAgIHBhcmFtZXRlcnMuZGVm
YXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmxvY2FsU3Rv
cmFnZURpcmVjdG9yeSA9IGxvY2FsU3RvcmFnZURpcmVjdG9yeTsKLSAgICBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkobG9jYWxTdG9yYWdlRGlyZWN0
b3J5LCBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9u
UGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOworICAgIHBh
cmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5
ID0gbG9jYWxTdG9yYWdlRGlyZWN0b3J5OworICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhh
bmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShsb2NhbFN0b3JhZ2VEaXJlY3RvcnksIHBhcmFtZXRl
cnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5z
aW9uSGFuZGxlKTsKIAogICAgIGlmIChtX3dlYnNpdGVEYXRhU3RvcmUpCiAgICAgICAgIHBhcmFt
ZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJz
LnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSBtX3dlYnNpdGVEYXRhU3RvcmUtPndl
YnNpdGVEYXRhU3RvcmUoKS5yZXNvbHZlZFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnko
KTsKQEAgLTE4MDIsNiArMTgwMiwxOSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzeW5jTmV0d29y
a1Byb2Nlc3NDb29raWVzKCkKICAgICBlbnN1cmVOZXR3b3JrUHJvY2VzcygpLnN5bmNBbGxDb29r
aWVzKCk7CiB9CiAKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnN5bmNMb2NhbFN0b3JhZ2UoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIHNlbmRTeW5j
VG9OZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlN5bmNMb2NhbFN0
b3JhZ2UoKSwgTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTeW5jTG9jYWxTdG9yYWdlOjpSZXBs
eSgpKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOworfQorCit2b2lkIFdlYlByb2Nlc3NQb29s
OjpjbGVhckxlZ2FjeVByaXZhdGVCcm93c2luZ0xvY2FsU3RvcmFnZShDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKG1fbmV0d29ya1Byb2Nl
c3MpCisgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9j
ZXNzOjpDbGVhckxlZ2FjeVByaXZhdGVCcm93c2luZ0xvY2FsU3RvcmFnZSgpLCAwKTsKKyAgICBj
b21wbGV0aW9uSGFuZGxlcigpOworfQorCiB2b2lkIFdlYlByb2Nlc3NQb29sOjphbGxvd1NwZWNp
ZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QoY29uc3QgV2ViQ2VydGlmaWNhdGVJbmZvKiBjZXJ0
aWZpY2F0ZSwgY29uc3QgU3RyaW5nJiBob3N0KQogewogICAgIGVuc3VyZU5ldHdvcmtQcm9jZXNz
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCBkMDZjNDQw
MjRjZGExMzhlYjdkMzhmMDc3ZTVhMWExZGY0NjU3MjllLi40MGJlYTg2MWEyZTY3MDI4NDYyMjA4
N2MwMDNiM2U4OGE2YWNjMDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmgKQEAgLTMxNyw2ICszMTcsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaXNhYmxlU2Vydmlj
ZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5KCk7CiAKICAgICB2b2lkIHN5bmNOZXR3b3Jr
UHJvY2Vzc0Nvb2tpZXMoKTsKKyAgICB2b2lkIHN5bmNMb2NhbFN0b3JhZ2UoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrKTsKKyAgICB2b2lkIGNsZWFyTGVnYWN5UHJpdmF0ZUJy
b3dzaW5nTG9jYWxTdG9yYWdlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFjayk7
CiAKICAgICB2b2lkIHNldFNob3VsZE1ha2VOZXh0V2ViUHJvY2Vzc0xhdW5jaEZhaWxGb3JUZXN0
aW5nKGJvb2wgdmFsdWUpIHsgbV9zaG91bGRNYWtlTmV4dFdlYlByb2Nlc3NMYXVuY2hGYWlsRm9y
VGVzdGluZyA9IHZhbHVlOyB9CiAgICAgYm9vbCBzaG91bGRNYWtlTmV4dFdlYlByb2Nlc3NMYXVu
Y2hGYWlsRm9yVGVzdGluZygpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkTWFrZU5leHRXZWJQcm9j
ZXNzTGF1bmNoRmFpbEZvclRlc3Rpbmc7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2Nv
YS5tbQppbmRleCBiYTlmY2NlYjk4M2Q1YWMyYmNkZDFjMmFkODM0NmJjZDE0NWQ4NWExLi5hMDU0
NGQwNWE3NzQ2MDJhMDBjZDkyZDI0NGZkMzVmN2Y2NGNiZjIyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0
ZURhdGFTdG9yZUNvY29hLm1tCkBAIC0xMDksMTEgKzEwOSw2IEBAIFdlYnNpdGVEYXRhU3RvcmVQ
YXJhbWV0ZXJzIFdlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMoKQogICAgIGlmICghcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeS5pc0VtcHR5KCkpCiAgICAgICAgIFNhbmRib3hFeHRl
bnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShyZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGlyZWN0b3J5LCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5SGFuZGxlKTsK
IAotICAgIGF1dG8gbG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gcmVzb2x2ZWRMb2NhbFN0b3JhZ2VE
aXJlY3RvcnkoKTsKLSAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgbG9jYWxTdG9yYWdlRGly
ZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwotICAgIGlmICghbG9jYWxTdG9yYWdlRGlyZWN0b3J5Lmlz
RW1wdHkoKSkKLSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdy
aXRlRGlyZWN0b3J5KGxvY2FsU3RvcmFnZURpcmVjdG9yeSwgbG9jYWxTdG9yYWdlRGlyZWN0b3J5
RXh0ZW5zaW9uSGFuZGxlKTsKLQogICAgIGF1dG8gbmV0d29ya0NhY2hlRGlyZWN0b3J5ID0gcmVz
b2x2ZWROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKTsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUgbmV0d29ya0NhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGlmICghbmV0d29y
a0NhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSkKQEAgLTE0Myw4ICsxMzgsNiBAQCBXZWJzaXRlRGF0
YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0ZXJzKCkKICAgICAgICAg
bV9jb25maWd1cmF0aW9uLT5kZXZpY2VNYW5hZ2VtZW50UmVzdHJpY3Rpb25zRW5hYmxlZCgpLAog
ICAgICAgICBtX2NvbmZpZ3VyYXRpb24tPmFsbExvYWRzQmxvY2tlZEJ5RGV2aWNlTWFuYWdlbWVu
dFJlc3RyaWN0aW9uc0ZvclRlc3RpbmcoKSwKICAgICAgICAgV1RGTW92ZShyZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWFudWFsUHJldmFsZW50UmVzb3VyY2UpLAotICAgICAgICBXVEZNb3ZlKGxvY2Fs
U3RvcmFnZURpcmVjdG9yeSksCi0gICAgICAgIFdURk1vdmUobG9jYWxTdG9yYWdlRGlyZWN0b3J5
RXh0ZW5zaW9uSGFuZGxlKSwKICAgICAgICAgV1RGTW92ZShuZXR3b3JrQ2FjaGVEaXJlY3Rvcnkp
LAogICAgICAgICBXVEZNb3ZlKG5ldHdvcmtDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSks
CiAgICAgfTsKQEAgLTE4MCw2ICsxNzMsMTAgQEAgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMg
V2Vic2l0ZURhdGFTdG9yZTo6cGFyYW1ldGVycygpCiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246
OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShwYXJhbWV0ZXJzLnNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25EaXJlY3RvcnksIHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAjZW5kaWYKIAorICAgIHBhcmFtZXRlcnMu
bG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gcmVzb2x2ZWRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKTsK
KyAgICBpZiAoIXBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5LmlzRW1wdHkoKSkKKyAg
ICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5
KHBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmxvY2FsU3RvcmFn
ZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CisKICAgICBwYXJhbWV0ZXJzLnBlck9yaWdpblN0
b3JhZ2VRdW90YSA9IHBlck9yaWdpblN0b3JhZ2VRdW90YSgpOwogICAgIHBhcmFtZXRlcnMucGVy
VGhpcmRQYXJ0eU9yaWdpblN0b3JhZ2VRdW90YSA9IHBlclRoaXJkUGFydHlPcmlnaW5TdG9yYWdl
UXVvdGEoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCAwMjU4N2IxOWUxOTRlNjFkZjMxZTMxMWM4
NjJhZGIxY2ZiYzFjYmQ1Li42ZmYxYmNkMWE2Y2VmZGIwODMzZGMyYzY0YTU5MzRiNTNhNWQ5YTgx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMTk2OSw4ICsxOTY5LDggQEAgV2Vic2l0ZURhdGFTdG9y
ZVBhcmFtZXRlcnMgV2Vic2l0ZURhdGFTdG9yZTo6cGFyYW1ldGVycygpCiAKICAgICBhdXRvIGxv
Y2FsU3RvcmFnZURpcmVjdG9yeSA9IHJlc29sdmVkTG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7CiAg
ICAgaWYgKCFsb2NhbFN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHBhcmFt
ZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeSA9IGxv
Y2FsU3RvcmFnZURpcmVjdG9yeTsKLSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFu
ZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KGxvY2FsU3RvcmFnZURpcmVjdG9yeSwgcGFyYW1ldGVy
cy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9u
SGFuZGxlKTsKKyAgICAgICAgcGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBsb2Nh
bFN0b3JhZ2VEaXJlY3Rvcnk7CisgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRs
ZUZvclJlYWRXcml0ZURpcmVjdG9yeShsb2NhbFN0b3JhZ2VEaXJlY3RvcnksIHBhcmFtZXRlcnMu
bG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKICAgICB9CiAKICNpZiBFTkFC
TEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IGIxM2UzM2RhYzE5ZWMzY2Q0YTNkMjQ5MmFlOGU4ZWU0Y2Vh
M2FlZGYuLjk2OTQ0ODJmNTY2MmEzY2ZmMDRhYzVmOGMzMzRmMDllZDViNzYyZjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjkzLDgg
KzI5Myw2IEBACiAJCTFBQjFGNzk3MUQxQjM2MTMwMDdDOUJEMSAvKiBXZWJQYXltZW50Q29vcmRp
bmF0b3JNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUFCMUY3OTMxRDFCMzYxMzAwN0M5QkQxIC8qIFdlYlBheW1lbnRDb29yZGluYXRvck1l
c3NhZ2VzLmggKi87IH07CiAJCTFBQjFGNzk4MUQxQjM2MTMwMDdDOUJEMSAvKiBXZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUIxRjc5NDFEMUIzNjEzMDA3QzlCRDEgLyogV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQkxQUIx
Rjc5OTFEMUIzNjEzMDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNZXNzYWdl
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFCMUY3
OTUxRDFCMzYxMzAwN0M5QkQxIC8qIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWVzc2FnZXMu
aCAqLzsgfTsKLQkJMUFCMzFBOTYxNkJDNjg4MTAwRjZEQkM5IC8qIFN0b3JhZ2VNYW5hZ2VyTWVz
c2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFBQjMxQTk0MTZCQzY4ODEwMEY2REJDOSAvKiBTdG9yYWdlTWFuYWdlck1lc3NhZ2VS
ZWNlaXZlci5jcHAgKi87IH07Ci0JCTFBQjMxQTk3MTZCQzY4ODEwMEY2REJDOSAvKiBTdG9yYWdl
TWFuYWdlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQUIzMUE5NTE2QkM2ODgxMDBGNkRCQzkgLyogU3RvcmFnZU1hbmFnZXJNZXNzYWdl
cy5oICovOyB9OwogCQkxQUI0MEVFNjFCRjY3N0UzMDBCQTgxQkUgLyogV0tNZW51SXRlbUlkZW50
aWZpZXJzUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUFCNDBFRTQxQkY2NzdFMzAwQkE4MUJFIC8qIFdLTWVudUl0ZW1JZGVudGlmaWVyc1By
aXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkxQUI0NzREODE4NEQ0M0ZEMDA1MUI2MjIgLyogV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUI0NzRENzE4
NEQ0M0ZEMDA1MUI2MjIgLyogV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUFCNDc0REExODRENDQyNTAw
NTFCNjIyIC8qIFdLQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFCNDc0RDkxODRENDQyNTAwNTFCNjIy
IC8qIFdLQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMjc1LDYgKzEyNzMsOSBAQAogCQk5MzU2
RjJFMTIxNTJCNzY2MDBFNkQ1REYgLyogV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQkEwNEUxMjE1MUFERjQw
MDdGNDU1RiAvKiBXZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwICovOyB9OwogCQk5MzVFRUI5QjEy
Nzc2MTdDMDAzMzIyQjggLyogV0tCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzVFRUI5ODEyNzc2MTZEMDAz
MzIyQjggLyogV0tCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTM1RUVCOUYxMjc3NjFBQzAwMzMyMkI4
IC8qIFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5MzVFRUI5NjEyNzc2MTZEMDAzMzIyQjggLyogV0tCdW5kbGVC
YWNrRm9yd2FyZExpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQk5MzY4RUVERTIzMDNBOTAyMDBCREIxMUEgLyogU3RvcmFnZU1hbmFnZXJTZXRN
ZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTM2OEVFREMyMzAzQThEODAwQkRCMTFBIC8qIFN0b3JhZ2VNYW5hZ2VyU2V0TWVz
c2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJOTM2OEVFREYyMzAzQTlFRDAwQkRCMTFBIC8qIFN0
b3JhZ2VNYW5hZ2VyU2V0TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzNjhFRUREMjMwM0E4RDgwMEJEQjExQSAvKiBTdG9yYWdlTWFuYWdl
clNldE1lc3NhZ2VzLmggKi87IH07CisJCTkzNkIwNTk4MjMwMzkwOTcwMDJGQzA2QiAvKiBTdG9y
YWdlTWFuYWdlclNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTM2QjA1OTUyMzAzOTAwQjAwMkZDMDZCIC8qIFN0b3JhZ2VNYW5hZ2VyU2V0LmggKi87
IH07CiAJCTkzNzM1RUJCMUM5Mjk4NjMwMDMzNkZBNyAvKiBXS1ByZXZpZXdBY3Rpb25JdGVtSW50
ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkz
NzM1RUJBMUM5Mjk4NjMwMDMzNkZBNyAvKiBXS1ByZXZpZXdBY3Rpb25JdGVtSW50ZXJuYWwuaCAq
LzsgfTsKIAkJOTM5MTA3NEYxQkY2QkM2NTAwOEMxN0FEIC8qIFdLUHJldmlld0VsZW1lbnRJbmZv
SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDkzOTEwNzRFMUJGNkJDNjUwMDhDMTdBRCAvKiBXS1ByZXZpZXdFbGVtZW50SW5mb0ludGVybmFs
LmggKi87IH07CiAJCTkzOTFGMkNCMTIxQjY3QUQwMEVCRjdFOCAvKiBXZWJGcmFtZU5ldHdvcmtp
bmdDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5MzkxRjI4MzEyMUIzOEY1MDBFQkY3RTggLyogV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5o
ICovOyB9OwpAQCAtMTcwNyw2ICsxNzA4LDggQEAKIAkJCWNvbXBpbGVyU3BlYyA9IGNvbS5hcHBs
ZS5jb21waWxlcnMucHJveHkuc2NyaXB0OwogCQkJZmlsZVBhdHRlcm5zID0gIiouaCI7CiAJCQlm
aWxlVHlwZSA9IHBhdHRlcm4ucHJveHk7CisJCQlpbnB1dEZpbGVzID0gKAorCQkJKTsKIAkJCWlz
RWRpdGFibGUgPSAxOwogCQkJb3V0cHV0RmlsZXMgPSAoCiAJCQkJIiQoSEVBREVSX09VVFBVVF9E
SVIpLyQoSU5QVVRfRklMRV9OQU1FKSIsCkBAIC0yMzA3LDggKzIzMTAsNiBAQAogCQkxQUIxRjc5
MzFEMUIzNjEzMDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yTWVzc2FnZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViUGF5bWVudENvb3JkaW5hdG9yTWVzc2Fn
ZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViUGF5bWVudENvb3JkaW5hdG9y
TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJMUFCMUY3
OTQxRDFCMzYxMzAwN0M5QkQxIC8qIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWVzc2FnZVJl
Y2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYlBheW1l
bnRDb29yZGluYXRvclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3Bw
OyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQkxQUIxRjc5NTFEMUIzNjEz
MDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNZXNzYWdlcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1lc3Nh
Z2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYlBheW1lbnRDb29yZGluYXRv
clByb3h5TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKLQkJ
MUFCMzFBOTQxNkJDNjg4MTAwRjZEQkM5IC8qIFN0b3JhZ2VNYW5hZ2VyTWVzc2FnZVJlY2VpdmVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFN0b3JhZ2VNYW5hZ2Vy
TWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvU3RvcmFn
ZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNf
RElSOyB9OwotCQkxQUIzMUE5NTE2QkM2ODgxMDBGNkRCQzkgLyogU3RvcmFnZU1hbmFnZXJNZXNz
YWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTdG9yYWdlTWFuYWdlck1l
c3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1N0b3JhZ2VNYW5hZ2VyTWVz
c2FnZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJMUFCNDBFRTMx
QkY2NzdFMzAwQkE4MUJFIC8qIFdLTWVudUl0ZW1JZGVudGlmaWVycy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLTWVudUl0ZW1JZGVudGlmaWVycy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFCNDBFRTQxQkY2NzdFMzAwQkE4MUJFIC8qIFdL
TWVudUl0ZW1JZGVudGlmaWVyc1ByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV0tNZW51SXRlbUlkZW50aWZpZXJzUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxQUI0NzRENzE4NEQ0M0ZEMDA1MUI2MjIgLyogV0tCdW5kbGVQYWdlTG9hZGVy
Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQnVuZGxlUGFnZUxv
YWRlckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzg5Nyw2ICszODk4
LDExIEBACiAJCTkzNUVFQjk2MTI3NzYxNkQwMDMzMjJCOCAvKiBXS0J1bmRsZUJhY2tGb3J3YXJk
TGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0J1bmRsZUJhY2tGb3J3
YXJkTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzVFRUI5NzEyNzc2MTZE
MDAzMzIyQjggLyogV0tCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNUVFQjk4MTI3NzYxNkQwMDMzMjJCOCAv
KiBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV0tCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTkzNjhFRURDMjMwM0E4RDgwMEJEQjExQSAvKiBTdG9yYWdlTWFuYWdlclNl
dE1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGlj
aXRGaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgZmlsZUVuY29kaW5nID0gNDsgbmFtZSA9
IFN0b3JhZ2VNYW5hZ2VyU2V0TWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvU3RvcmFnZU1hbmFnZXJTZXRNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VU
cmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk5MzY4RUVERDIzMDNBOEQ4MDBCREIxMUEg
LyogU3RvcmFnZU1hbmFnZXJTZXRNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBTdG9yYWdlTWFuYWdlclNldE1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNl
cy9XZWJLaXQyL1N0b3JhZ2VNYW5hZ2VyU2V0TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJVSUxU
X1BST0RVQ1RTX0RJUjsgfTsKKwkJOTM2QjA1OTUyMzAzOTAwQjAwMkZDMDZCIC8qIFN0b3JhZ2VN
YW5hZ2VyU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0b3JhZ2VNYW5h
Z2VyU2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzNkIwNTk2MjMwMzkwMEIw
MDJGQzA2QiAvKiBTdG9yYWdlTWFuYWdlclNldC5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBTdG9yYWdlTWFuYWdlclNldC5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJOTM2QjA1OTcyMzAzOTAwQjAwMkZDMDZCIC8qIFN0b3JhZ2VNYW5hZ2VyU2V0
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0b3JhZ2VNYW5hZ2Vy
U2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM3MzVFQkExQzkyOTg2MzAw
MzM2RkE3IC8qIFdLUHJldmlld0FjdGlvbkl0ZW1JbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXS1ByZXZpZXdBY3Rpb25JdGVtSW50ZXJuYWwuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM5MTA3NEUxQkY2QkM2NTAwOEMxN0FEIC8qIFdLUHJldmll
d0VsZW1lbnRJbmZvSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V0tQcmV2aWV3RWxlbWVudEluZm9JbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5MzkxRjI4MzEyMUIzOEY1MDBFQkY3RTggLyogV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJGcmFtZU5ldHdvcmtpbmdD
b250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zOTI2LDcgKzM5MzIsNiBA
QAogCQk5M0IyNjE0ODIyN0QxNDcxMDBCOTdBNzYgLyogaW9zICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZm9sZGVyOyBwYXRoID0gaW9zOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5M0IyNjE0OTIyN0QxNDcyMDBCOTdBNzYgLyogU3RvcmFn
ZU1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RvcmFnZU1hbmFn
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCMjYxNEEyMjdEMTQ3MjAwQjk3
QTc2IC8qIFN0b3JhZ2VNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFN0b3JhZ2VNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
OTNCMjYxNEIyMjdEMTQ3MjAwQjk3QTc2IC8qIFN0b3JhZ2VNYW5hZ2VyLm1lc3NhZ2VzLmluICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IFN0b3JhZ2VNYW5hZ2VyLm1lc3NhZ2VzLmluOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5M0IyNjE0QzIyN0QxNDcyMDBCOTdBNzYgLyogTG9jYWxT
dG9yYWdlRGF0YWJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
M0JBMDREQTIxNTFBREYzMDA3RjQ1NUYgLyogV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdl
cy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCQTA0REIyMTUxQURGMzAwN0Y0
NTVGIC8qIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcyOTEsNiArNzI5Niw5IEBACiAJCTkzQjI2MTQzMjI3
RDE0MzEwMEI5N0E3NiAvKiBXZWJTdG9yYWdlICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKKwkJCQk5MzZCMDU5NzIzMDM5MDBCMDAyRkMwNkIgLyogU3RvcmFnZU1h
bmFnZXJTZXQuY3BwICovLAorCQkJCTkzNkIwNTk1MjMwMzkwMEIwMDJGQzA2QiAvKiBTdG9yYWdl
TWFuYWdlclNldC5oICovLAorCQkJCTkzNkIwNTk2MjMwMzkwMEIwMDJGQzA2QiAvKiBTdG9yYWdl
TWFuYWdlclNldC5tZXNzYWdlcy5pbiAqLywKIAkJCQk5M0IyNjE0ODIyN0QxNDcxMDBCOTdBNzYg
LyogaW9zICovLAogCQkJCTkzQjI2MTRDMjI3RDE0NzIwMEI5N0E3NiAvKiBMb2NhbFN0b3JhZ2VE
YXRhYmFzZS5jcHAgKi8sCiAJCQkJOTNCMjYxNDUyMjdEMTQ3MDAwQjk3QTc2IC8qIExvY2FsU3Rv
cmFnZURhdGFiYXNlLmggKi8sCkBAIC03MzA0LDcgKzczMTIsNiBAQAogCQkJCTQ2QkVCNkQ1MjJG
QjlCRDYwMDI2OTg2NyAvKiBTdG9yYWdlQXJlYS5oICovLAogCQkJCTkzQjI2MTRBMjI3RDE0NzIw
MEI5N0E3NiAvKiBTdG9yYWdlTWFuYWdlci5jcHAgKi8sCiAJCQkJOTNCMjYxNDkyMjdEMTQ3MjAw
Qjk3QTc2IC8qIFN0b3JhZ2VNYW5hZ2VyLmggKi8sCi0JCQkJOTNCMjYxNEIyMjdEMTQ3MjAwQjk3
QTc2IC8qIFN0b3JhZ2VNYW5hZ2VyLm1lc3NhZ2VzLmluICovLAogCQkJCTQ2QkVCNkUyMjJGQkIy
MUEwMDI2OTg2NyAvKiBUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UuY3BwICovLAogCQkJ
CTQ2QkVCNkUxMjJGQkIyMUEwMDI2OTg2NyAvKiBUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2UuaCAqLywKIAkJCSk7CkBAIC04Njg1LDYgKzg2OTIsOCBAQAogCQlDMENFNzI5RDEyNDdFNzFE
MDBCQzBFQzQgLyogRGVyaXZlZCBTb3VyY2VzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKKwkJCQk5MzY4RUVEQzIzMDNBOEQ4MDBCREIxMUEgLyogU3RvcmFnZU1h
bmFnZXJTZXRNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAorCQkJCTkzNjhFRUREMjMwM0E4RDgwMEJE
QjExQSAvKiBTdG9yYWdlTWFuYWdlclNldE1lc3NhZ2VzLmggKi8sCiAJCQkJMkQ3REVCRTIyMTI2
OUU0QjAwQjlGNzNDIC8qIHVuaWZpZWQtc291cmNlcyAqLywKIAkJCQk1MTJGNThBMDEyQTg4M0FE
MDA2Mjk1MzAgLyogQXV0aGVudGljYXRpb25NYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywK
IAkJCQk1MTJGNThBMTEyQTg4M0FEMDA2Mjk1MzAgLyogQXV0aGVudGljYXRpb25NYW5hZ2VyTWVz
c2FnZXMuaCAqLywKQEAgLTg3NjYsOCArODc3NSw2IEBACiAJCQkJMkRFNjk0M0MxOEJEMkE2ODAw
NUMxNUU1IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlcy5oICovLAogCQkJ
CTFBMzM0REVCMTZERThGODgwMDZBOEUzOCAvKiBTdG9yYWdlQXJlYU1hcE1lc3NhZ2VSZWNlaXZl
ci5jcHAgKi8sCiAJCQkJMUEzMzRERUMxNkRFOEY4ODAwNkE4RTM4IC8qIFN0b3JhZ2VBcmVhTWFw
TWVzc2FnZXMuaCAqLywKLQkJCQkxQUIzMUE5NDE2QkM2ODgxMDBGNkRCQzkgLyogU3RvcmFnZU1h
bmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAotCQkJCTFBQjMxQTk1MTZCQzY4ODEwMEY2REJD
OSAvKiBTdG9yYWdlTWFuYWdlck1lc3NhZ2VzLmggKi8sCiAJCQkJNTExOEU5QTUxRjI5NTk2MzAw
M0VGOUY1IC8qIFN0b3JhZ2VQcm9jZXNzTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQk1MTE4
RTlBNjFGMjk1OTYzMDAzRUY5RjUgLyogU3RvcmFnZVByb2Nlc3NNZXNzYWdlcy5oICovLAogCQkJ
CTUxMThFOUE3MUYyOTU5NjMwMDNFRjlGNSAvKiBTdG9yYWdlUHJvY2Vzc1Byb3h5TWVzc2FnZVJl
Y2VpdmVyLmNwcCAqLywKQEAgLTk0NzYsNiArOTQ4Myw4IEBACiAJCQkJRTQ5RDQwRDcxQUQzRkIx
NzAwNjZCN0I5IC8qIE5ldHdvcmtDYWNoZUJsb2JTdG9yYWdlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlFNDg5RDI4QzFBMEEyREI4MDA3OEMwNkEgLyogTmV0d29ya0NhY2hlQ29kZXJzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlFNDJFMDYxMjFBQTc1QUJEMDBCMTE2OTkgLyogTmV0d29ya0NhY2hlRGF0
YS5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTM2OEVFREYyMzAzQTlFRDAwQkRCMTFBIC8qIFN0b3Jh
Z2VNYW5hZ2VyU2V0TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTkzNkIwNTk4MjMwMzkw
OTcwMDJGQzA2QiAvKiBTdG9yYWdlTWFuYWdlclNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQx
M0Y1OUQxQUMxQURDNDAwMzQ1MzYwIC8qIE5ldHdvcmtDYWNoZUVudHJ5LmggaW4gSGVhZGVycyAq
LywKIAkJCQk4MzRCMjUwRjFBODMxQThEMDBDRkIxNTAgLyogTmV0d29ya0NhY2hlRmlsZVN5c3Rl
bS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQyRTA2MTAxQUE3NTIzQjAwQjExNjk5IC8qIE5ldHdv
cmtDYWNoZUlPQ2hhbm5lbC5oIGluIEhlYWRlcnMgKi8sCkBAIC05NjcwLDcgKzk2NzksNiBAQAog
CQkJCTFBQ0VDRDI1MTcxNjJEQjEwMDFGQzlFRiAvKiBTdG9yYWdlQXJlYU1hcC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUEzMzRERUUxNkRFOEY4ODAwNkE4RTM4IC8qIFN0b3JhZ2VBcmVhTWFwTWVz
c2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzQjI2MTREMjI3RDE0OUUwMEI5N0E3NiAvKiBT
dG9yYWdlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMUFCMzFBOTcxNkJDNjg4MTAwRjZE
QkM5IC8qIFN0b3JhZ2VNYW5hZ2VyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRTAw
RDZDMTgzMjdDMTIwMDA4N0RENyAvKiBTdHJpbmdSZWZlcmVuY2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCTI5NkJEODVEMTUwMTlCQzMwMDcxRjQyNCAvKiBTdHJpbmdVdGlsaXRpZXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTU3RkQzMTg2MjJCMzUxNkMwMDhEMEU4QiAvKiBTdWJGcmFtZVNPQXV0aG9y
aXphdGlvblNlc3Npb24uaCBpbiBIZWFkZXJzICovLApAQCAtMTExODQsNyArMTExOTIsNiBAQAog
CQkJCTJEOTJBNzg3MjEyQjZBQjEwMEY0OTNGRCAvKiBTaGFyZWFibGVCaXRtYXAuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMkRFNjk0M0QxOEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlmaWNh
dGlvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEz
MzRERUQxNkRFOEY4ODAwNkE4RTM4IC8qIFN0b3JhZ2VBcmVhTWFwTWVzc2FnZVJlY2VpdmVyLmNw
cCBpbiBTb3VyY2VzICovLAotCQkJCTFBQjMxQTk2MTZCQzY4ODEwMEY2REJDOSAvKiBTdG9yYWdl
TWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc4MzIx
MkI2QTcxMDBGNDkzRkQgLyogU3RyaW5nUmVmZXJlbmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTJEMTFCNzUxMjEyNkEyODIwMDZGODg3OCAvKiBVbmlmaWVkU291cmNlMS1tbS5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTJEMTFCNzUyMjEyNkEyODIwMDZGODg3OCAvKiBVbmlmaWVkU291cmNlMS5j
cHAgaW4gU291cmNlcyAqLywKQEAgLTExMjUxLDYgKzExMjU4LDcgQEAKIAkJCQkyRDExQjc4RjIx
MjZBMjgzMDA2Rjg4NzggLyogVW5pZmllZFNvdXJjZTMyLW1tLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMkQxMUI3OTAyMTI2QTI4MzAwNkY4ODc4IC8qIFVuaWZpZWRTb3VyY2UzMi5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkyRDExQjc5MTIxMjZBMjgzMDA2Rjg4NzggLyogVW5pZmllZFNvdXJjZTMz
LW1tLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJOTM2OEVFREUyMzAzQTkwMjAwQkRCMTFBIC8qIFN0
b3JhZ2VNYW5hZ2VyU2V0TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJE
MTFCNzkyMjEyNkEyODMwMDZGODg3OCAvKiBVbmlmaWVkU291cmNlMzMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMkQxMUI3OTQyMTI2QTI4MzAwNkY4ODc4IC8qIFVuaWZpZWRTb3VyY2UzNC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkyRDExQjc5MzIxMjZBMjgzMDA2Rjg4NzggLyogVW5pZmllZFNv
dXJjZTM0LW1tLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAppbmRleCAyMGNl
NTU5MTFkNzA2NTFjMzM1YTcwYWNmMjRlNWJkZmMyMWJkNjMxLi5iMGRjYjkwMDBiZTkxNTI4Yzdj
MDcxZjY2ZDdlOGMzMDFjZTk1YTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKQEAgLTQ2LDYgKzQ2
LDcgQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVk
ZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2xNZXNzYWdl
cy5oIgorI2luY2x1ZGUgIldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oIgogI2luY2x1ZGUg
IldlYlVzZXJDb250ZW50Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmVQ
YXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgpAQCAtMzQ4
LDkgKzM0OSwxMyBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpzZXRKYXZhU2NyaXB0Q2FuQWNjZXNz
Q2xpcGJvYXJkKFdlYlBhZ2VHcm91cFByb3h5KiBwYWdlR3JvdQogdm9pZCBJbmplY3RlZEJ1bmRs
ZTo6c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChXZWJQYWdlR3JvdXBQcm94eSogcGFnZUdyb3Vw
LCBib29sIGVuYWJsZWQpCiB7CiAgICAgQVNTRVJUKCFoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nl
c3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpKTsKLSAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5lbmFibGVQcml2YXRlQnJvd3NpbmdGb3JUZXN0aW5nKGVuYWJsZWQpOworICAgIGlm
IChlbmFibGVkKQorICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVMZWdhY3lQ
cml2YXRlQnJvd3NpbmdTZXNzaW9uSW5OZXR3b3JrUHJvY2VzcygpOwogCiAgICAgUGFnZUdyb3Vw
OjpwYWdlR3JvdXAocGFnZUdyb3VwLT5pZGVudGlmaWVyKCkpLT5lbmFibGVMZWdhY3lQcml2YXRl
QnJvd3NpbmdGb3JUZXN0aW5nKGVuYWJsZWQpOworCisgICAgYXV0byB3ZWJTdG9yYWdlTmFtZVNw
YWNlUHJvdmlkZXIgPSBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmdldE9yQ3JlYXRlKHBh
Z2VHcm91cC0+cGFnZUdyb3VwSUQoKSk7CisgICAgd2ViU3RvcmFnZU5hbWVTcGFjZVByb3ZpZGVy
LT5lbmFibGVMZWdhY3lQcml2YXRlQnJvd3NpbmdGb3JUZXN0aW5nKGVuYWJsZWQpOwogfQogCiB2
b2lkIEluamVjdGVkQnVuZGxlOjpzZXRQb3B1cEJsb2NraW5nRW5hYmxlZChXZWJQYWdlR3JvdXBQ
cm94eSogcGFnZUdyb3VwLCBib29sIGVuYWJsZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHAKaW5kZXggYTJkYTEyYzYwMjI5MzczY2Y4Nzg5MmI4M2RhYTU3NzM1MDBhNzdm
Mi4uNWE4Y2MxMGY1Y2MwMGViYmIzNjFmZjI1OWM1NTUzZmY4ZWU4YWJmNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtNjc3LDcgKzY3Nyw2IEBAIHZvaWQgV2Vi
UHJvY2Vzczo6Y3JlYXRlV2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMmCiAgICAgLy8gSXQgaXMgbmVjZXNzYXJ5IHRvIGNoZWNrIGZvciBwYWdl
IGV4aXN0ZW5jZSBoZXJlIHNpbmNlIGR1cmluZyBhIHdpbmRvdy5vcGVuKCkgKG9yIHRhcmdldGVk
CiAgICAgLy8gbGluaykgdGhlIFdlYlBhZ2UgZ2V0cyBjcmVhdGVkIGJvdGggaW4gdGhlIHN5bmNo
cm9ub3VzIGhhbmRsZXIgYW5kIHRocm91Z2ggdGhlIG5vcm1hbCB3YXkuIAogICAgIGF1dG8gcmVz
dWx0ID0gbV9wYWdlTWFwLmFkZChwYWdlSUQsIG51bGxwdHIpOwotICAgIGF1dG8gb2xkUGFnZUlE
ID0gcGFyYW1ldGVycy5vbGRQYWdlSUQgPyBwYXJhbWV0ZXJzLm9sZFBhZ2VJRC52YWx1ZSgpIDog
cGFnZUlEOwogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkgewogICAgICAgICBBU1NFUlQoIXJl
c3VsdC5pdGVyYXRvci0+dmFsdWUpOwogICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0g
V2ViUGFnZTo6Y3JlYXRlKHBhZ2VJRCwgV1RGTW92ZShwYXJhbWV0ZXJzKSk7CkBAIC02ODgsOCAr
Njg3LDYgQEAgdm9pZCBXZWJQcm9jZXNzOjpjcmVhdGVXZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYKICAgICB9IGVsc2UKICAgICAgICAgcmVz
dWx0Lml0ZXJhdG9yLT52YWx1ZS0+cmVpbml0aWFsaXplV2ViUGFnZShXVEZNb3ZlKHBhcmFtZXRl
cnMpKTsKIAotICAgIGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24o
KS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6V2ViUGFnZVdh
c0FkZGVkKHJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPnNlc3Npb25JRCgpLCBwYWdlSUQsIG9sZFBh
Z2VJRCksIDApOwotCiAgICAgQVNTRVJUKHJlc3VsdC5pdGVyYXRvci0+dmFsdWUpOwogfQogCkBA
IC02OTcsNyArNjk0LDYgQEAgdm9pZCBXZWJQcm9jZXNzOjpyZW1vdmVXZWJQYWdlKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIEFTU0VSVCht
X3BhZ2VNYXAuY29udGFpbnMocGFnZUlEKSk7CiAKLSAgICBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OldlYlBhZ2VXYXNSZW1vdmVkKHNlc3Npb25JRCwgcGFnZUlEKSwgMCk7CiAg
ICAgcGFnZVdpbGxMZWF2ZVdpbmRvdyhwYWdlSUQpOwogICAgIG1fcGFnZU1hcC5yZW1vdmUocGFn
ZUlEKTsKIApAQCAtMTI0NiwxNiArMTI0Miw2IEBAIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiYg
V2ViUHJvY2Vzczo6ZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkKICAgICAgICAgICAg
IENSQVNIKCk7CiAKICAgICAgICAgbV9uZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24gPSBOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZShjb25uZWN0aW9uSWRlbnRpZmllcik7Ci0KLSAgICAg
ICAgLy8gVG8gcmVjb3ZlciB3ZWIgc3RvcmFnZSwgbmV0d29yayBwcm9jZXNzIG5lZWRzIHRvIGtu
b3cgYWN0aXZlIHdlYnBhZ2VzIHRvIHByZXBhcmUgc2Vzc2lvbiBzdG9yYWdlLgotICAgICAgICAv
LyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODA1MS4K
LSAgICAgICAgLy8gV2VicGFnZSBzaG91bGQgYmUgYWRkZWQgd2hlbiBTdG9yYWdlIGlzIHVzZWQs
IG5vdCB3aGVuIGNvbm5lY3Rpb24gaXMgcmUtZXN0YWJsaXNoZWQuCi0gICAgICAgIGZvciAoYXV0
byYgcGFnZSA6IG1fcGFnZU1hcCkgewotICAgICAgICAgICAgaWYgKCFwYWdlLnZhbHVlKQotICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICBtX25ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpXZWJQYWdlV2FzQWRkZWQocGFnZS52YWx1ZS0+c2Vzc2lvbklEKCksIHBhZ2Uu
a2V5LCBwYWdlLmtleSksIDApOwotICAgICAgICB9CiAgICAgfQogICAgIAogICAgIHJldHVybiAq
bV9uZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb247CkBAIC0xMjg2LDcgKzEyNzIsNyBAQCB2b2lkIFdl
YlByb2Nlc3M6Om5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkNsb3NlZChOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24qIGNvbm5lYwogICAgIEFTU0VSVChtX25ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbik7
CiAgICAgQVNTRVJUX1VOVVNFRChjb25uZWN0aW9uLCBtX25ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
biA9PSBjb25uZWN0aW9uKTsKIAotICAgIGZvciAoYXV0byogc3RvcmFnZUFyZWFNYXAgOiBtX3N0
b3JhZ2VBcmVhTWFwcy52YWx1ZXMoKSkKKyAgICBmb3IgKGF1dG8qIHN0b3JhZ2VBcmVhTWFwIDog
Y29weVRvVmVjdG9yKG1fc3RvcmFnZUFyZWFNYXBzLnZhbHVlcygpKSkKICAgICAgICAgc3RvcmFn
ZUFyZWFNYXAtPmRpc2Nvbm5lY3QoKTsKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpA
QCAtMTY4NywyNSArMTY3Myw5IEBAIHZvaWQgV2ViUHJvY2Vzczo6dW5yZWdpc3RlclN0b3JhZ2VB
cmVhTWFwKFN0b3JhZ2VBcmVhTWFwJiBzdG9yYWdlQXJlYU1hcCkKIAogU3RvcmFnZUFyZWFNYXAq
IFdlYlByb2Nlc3M6OnN0b3JhZ2VBcmVhTWFwKHVpbnQ2NF90IGlkZW50aWZpZXIpIGNvbnN0CiB7
Ci0gICAgQVNTRVJUKG1fc3RvcmFnZUFyZWFNYXBzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKICAg
ICByZXR1cm4gbV9zdG9yYWdlQXJlYU1hcHMuZ2V0KGlkZW50aWZpZXIpOwogfQogCi12b2lkIFdl
YlByb2Nlc3M6OmVuYWJsZVByaXZhdGVCcm93c2luZ0ZvclRlc3RpbmcoYm9vbCBlbmFibGUpCi17
Ci0gICAgaWYgKGVuYWJsZSkKLSAgICAgICAgZW5zdXJlTGVnYWN5UHJpdmF0ZUJyb3dzaW5nU2Vz
c2lvbkluTmV0d29ya1Byb2Nlc3MoKTsKLQotICAgIFZlY3RvcjxQYWdlSWRlbnRpZmllcj4gcGFn
ZUlEczsKLSAgICBmb3IgKGF1dG8mIHBhZ2UgOiBtX3BhZ2VNYXApIHsKLSAgICAgICAgaWYgKHBh
Z2UudmFsdWUpCi0gICAgICAgICAgICBwYWdlSURzLmFwcGVuZChwYWdlLmtleSk7Ci0gICAgfQot
Ci0gICAgaWYgKCFwYWdlSURzLmlzRW1wdHkoKSkKLSAgICAgICAgZW5zdXJlTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpXZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQoZW5hYmxlID8gUEFMOjpT
ZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSA6IFBBTDo6U2Vzc2lvbklEOjpkZWZh
dWx0U2Vzc2lvbklEKCksIHBhZ2VJRHMpLCAwKTsKLX0KLQogdm9pZCBXZWJQcm9jZXNzOjpzZXRS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChib29sIGVuYWJsZWQpCiB7CiAgICAgV2ViQ29y
ZTo6RGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5h
YmxlZChlbmFibGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IGQ0
YzAxYmFiMWY5M2RhOTA4NWIwZjIxOTRjZDMyN2Q0NzE4NjUwYjIuLjY2MTFlOTIzMDU4ZDEyMzcw
ZTY2NWQ4Y2FjNjcyYWZkMmMxNzM5ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuaApAQCAtMjE0LDggKzIxNCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHVucmVnaXN0ZXJTdG9y
YWdlQXJlYU1hcChTdG9yYWdlQXJlYU1hcCYpOwogICAgIFN0b3JhZ2VBcmVhTWFwKiBzdG9yYWdl
QXJlYU1hcCh1aW50NjRfdCBpZGVudGlmaWVyKSBjb25zdDsKIAotICAgIHZvaWQgZW5hYmxlUHJp
dmF0ZUJyb3dzaW5nRm9yVGVzdGluZyhib29sKTsKLQogI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
IFJldGFpblB0cjxDRkRhdGFSZWY+IHNvdXJjZUFwcGxpY2F0aW9uQXVkaXREYXRhKCkgY29uc3Q7
CiAgICAgdm9pZCBkZXN0cm95UmVuZGVyaW5nUmVzb3VyY2VzKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNwcAppbmRl
eCA3NDBjMGRiYzA3Y2E3ZDU1ZTEzY2UyYjE5MDIzMzNjMGRlMGE2MjYzLi5lY2QyYjkzNWQ0MzNi
ZTgzN2M0YzRiYmFkZjNlNTVhYzQ2NmU0MWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHAKQEAgLTMzLDYgKzMz
LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1NjaGVtZVJlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9TdG9yYWdlVHlwZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtNTAsNyArNTEsNyBAQCBSZWY8U3RvcmFnZUFy
ZWFJbXBsPiBTdG9yYWdlQXJlYUltcGw6OmNyZWF0ZShSZWY8U3RvcmFnZUFyZWFNYXA+JiYgc3Rv
cmFnZUFyZWFNYQogCiBTdG9yYWdlQXJlYUltcGw6OlN0b3JhZ2VBcmVhSW1wbChSZWY8U3RvcmFn
ZUFyZWFNYXA+JiYgc3RvcmFnZUFyZWFNYXApCiAgICAgOiBtX3N0b3JhZ2VBcmVhSUQoZ2VuZXJh
dGVTdG9yYWdlQXJlYUlEKCkpCi0gICAgLCBtX3N0b3JhZ2VBcmVhTWFwKFdURk1vdmUoc3RvcmFn
ZUFyZWFNYXApKQorICAgICwgbV9zdG9yYWdlQXJlYU1hcChtYWtlV2Vha1B0cihzdG9yYWdlQXJl
YU1hcC5nZXQoKSkpCiB7CiB9CiAKQEAgLTYwLDQ5ICs2MSw1NCBAQCBTdG9yYWdlQXJlYUltcGw6
On5TdG9yYWdlQXJlYUltcGwoKQogCiB1bnNpZ25lZCBTdG9yYWdlQXJlYUltcGw6Omxlbmd0aCgp
CiB7Ci0gICAgcmV0dXJuIG1fc3RvcmFnZUFyZWFNYXAtPmxlbmd0aCgpOworICAgIHJldHVybiBt
X3N0b3JhZ2VBcmVhTWFwID8gbV9zdG9yYWdlQXJlYU1hcC0+bGVuZ3RoKCkgOiAwOwogfQogCiBT
dHJpbmcgU3RvcmFnZUFyZWFJbXBsOjprZXkodW5zaWduZWQgaW5kZXgpCiB7Ci0gICAgcmV0dXJu
IG1fc3RvcmFnZUFyZWFNYXAtPmtleShpbmRleCk7CisgICAgcmV0dXJuIG1fc3RvcmFnZUFyZWFN
YXAgPyBtX3N0b3JhZ2VBcmVhTWFwLT5rZXkoaW5kZXgpIDogbnVsbFN0cmluZygpOwogfQogCiBT
dHJpbmcgU3RvcmFnZUFyZWFJbXBsOjppdGVtKGNvbnN0IFN0cmluZyYga2V5KQogewotICAgIHJl
dHVybiBtX3N0b3JhZ2VBcmVhTWFwLT5pdGVtKGtleSk7Ci19Ci0KLWJvb2wgU3RvcmFnZUFyZWFJ
bXBsOjpwcmV3YXJtKCkKLXsKLSAgICByZXR1cm4gbV9zdG9yYWdlQXJlYU1hcC0+cHJld2FybSgp
OworICAgIHJldHVybiBtX3N0b3JhZ2VBcmVhTWFwID8gbV9zdG9yYWdlQXJlYU1hcC0+aXRlbShr
ZXkpIDogbnVsbFN0cmluZygpOwogfQogCiB2b2lkIFN0b3JhZ2VBcmVhSW1wbDo6c2V0SXRlbShG
cmFtZSogc291cmNlRnJhbWUsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVl
LCBib29sJiBxdW90YUV4Y2VwdGlvbikKIHsKICAgICBBU1NFUlQoIXZhbHVlLmlzTnVsbCgpKTsK
IAotICAgIG1fc3RvcmFnZUFyZWFNYXAtPnNldEl0ZW0oc291cmNlRnJhbWUsIHRoaXMsIGtleSwg
dmFsdWUsIHF1b3RhRXhjZXB0aW9uKTsKKyAgICBpZiAobV9zdG9yYWdlQXJlYU1hcCkKKyAgICAg
ICAgbV9zdG9yYWdlQXJlYU1hcC0+c2V0SXRlbShzb3VyY2VGcmFtZSwgdGhpcywga2V5LCB2YWx1
ZSwgcXVvdGFFeGNlcHRpb24pOwogfQogCiB2b2lkIFN0b3JhZ2VBcmVhSW1wbDo6cmVtb3ZlSXRl
bShGcmFtZSogc291cmNlRnJhbWUsIGNvbnN0IFN0cmluZyYga2V5KQogewotICAgIG1fc3RvcmFn
ZUFyZWFNYXAtPnJlbW92ZUl0ZW0oc291cmNlRnJhbWUsIHRoaXMsIGtleSk7CisgICAgaWYgKG1f
c3RvcmFnZUFyZWFNYXApCisgICAgICAgIG1fc3RvcmFnZUFyZWFNYXAtPnJlbW92ZUl0ZW0oc291
cmNlRnJhbWUsIHRoaXMsIGtleSk7CiB9CiAKIHZvaWQgU3RvcmFnZUFyZWFJbXBsOjpjbGVhcihG
cmFtZSogc291cmNlRnJhbWUpCiB7Ci0gICAgbV9zdG9yYWdlQXJlYU1hcC0+Y2xlYXIoc291cmNl
RnJhbWUsIHRoaXMpOworICAgIGlmIChtX3N0b3JhZ2VBcmVhTWFwKQorICAgICAgICBtX3N0b3Jh
Z2VBcmVhTWFwLT5jbGVhcihzb3VyY2VGcmFtZSwgdGhpcyk7CiB9CiAKIGJvb2wgU3RvcmFnZUFy
ZWFJbXBsOjpjb250YWlucyhjb25zdCBTdHJpbmcmIGtleSkKIHsKLSAgICByZXR1cm4gbV9zdG9y
YWdlQXJlYU1hcC0+Y29udGFpbnMoa2V5KTsKKyAgICBpZiAobV9zdG9yYWdlQXJlYU1hcCkKKyAg
ICAgICAgcmV0dXJuIG1fc3RvcmFnZUFyZWFNYXAtPmNvbnRhaW5zKGtleSk7CisKKyAgICByZXR1
cm4gZmFsc2U7CiB9CiAKIFN0b3JhZ2VUeXBlIFN0b3JhZ2VBcmVhSW1wbDo6c3RvcmFnZVR5cGUo
KSBjb25zdAogewotICAgIHJldHVybiBtX3N0b3JhZ2VBcmVhTWFwLT5zdG9yYWdlVHlwZSgpOwor
ICAgIGlmIChtX3N0b3JhZ2VBcmVhTWFwKQorICAgICAgICByZXR1cm4gbV9zdG9yYWdlQXJlYU1h
cC0+c3RvcmFnZVR5cGUoKTsKKworICAgIC8vIFdlIHByb2JhYmx5IG5lZWQgYW4gSW52YWxpZCB0
eXBlLgorICAgIHJldHVybiBTdG9yYWdlVHlwZTo6TG9jYWw7CiB9CiAKIHNpemVfdCBTdG9yYWdl
QXJlYUltcGw6Om1lbW9yeUJ5dGVzVXNlZEJ5Q2FjaGUoKQpAQCAtMTEyLDEyICsxMTgsMTIgQEAg
c2l6ZV90IFN0b3JhZ2VBcmVhSW1wbDo6bWVtb3J5Qnl0ZXNVc2VkQnlDYWNoZSgpCiAKIHZvaWQg
U3RvcmFnZUFyZWFJbXBsOjppbmNyZW1lbnRBY2Nlc3NDb3VudCgpCiB7Ci0gICAgLy8gU3RvcmFn
ZSBhY2Nlc3MgaXMgaGFuZGxlZCBpbiB0aGUgVUkgcHJvY2Vzcywgc28gdGhlcmUncyBub3RoaW5n
IHRvIGRvIGhlcmUuCisgICAgLy8gU3RvcmFnZSBhY2Nlc3MgaXMgaGFuZGxlZCBpbiB0aGUgbmV0
d29yayBwcm9jZXNzLCBzbyB0aGVyZSdzIG5vdGhpbmcgdG8gZG8gaGVyZS4KIH0KIAogdm9pZCBT
dG9yYWdlQXJlYUltcGw6OmRlY3JlbWVudEFjY2Vzc0NvdW50KCkKIHsKLSAgICAvLyBTdG9yYWdl
IGFjY2VzcyBpcyBoYW5kbGVkIGluIHRoZSBVSSBwcm9jZXNzLCBzbyB0aGVyZSdzIG5vdGhpbmcg
dG8gZG8gaGVyZS4KKyAgICAvLyBTdG9yYWdlIGFjY2VzcyBpcyBoYW5kbGVkIGluIHRoZSBuZXR3
b3JrIHByb2Nlc3MsIHNvIHRoZXJlJ3Mgbm90aGluZyB0byBkbyBoZXJlLgogfQogCiB2b2lkIFN0
b3JhZ2VBcmVhSW1wbDo6Y2xvc2VEYXRhYmFzZUlmSWRsZSgpCkBAIC0xMjYsOSArMTMyLDQgQEAg
dm9pZCBTdG9yYWdlQXJlYUltcGw6OmNsb3NlRGF0YWJhc2VJZklkbGUoKQogICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogfQogCi1jb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIFN0b3JhZ2VBcmVh
SW1wbDo6c2VjdXJpdHlPcmlnaW4oKSBjb25zdAotewotICAgIHJldHVybiBtX3N0b3JhZ2VBcmVh
TWFwLT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdl
QXJlYUltcGwuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VB
cmVhSW1wbC5oCmluZGV4IGI4ZjE2ZjJlYWE1YTllYWMwNjY0NWIzOGU1ZjBmZjE0NGRkZDU4MjQu
LmIyYThkNTBiZTE4NzAxZDkxZDMxMTExNjljMTMyYmY3ZmM5MTk5OWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oCkBA
IC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9TdG9yYWdlQXJlYS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVk
ZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgU2VjdXJpdHlP
cmlnaW47CkBAIC02MCwxMSArNjEsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgaW5jcmVtZW50QWNj
ZXNzQ291bnQoKSBvdmVycmlkZTsKICAgICB2b2lkIGRlY3JlbWVudEFjY2Vzc0NvdW50KCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBjbG9zZURhdGFiYXNlSWZJZGxlKCkgb3ZlcnJpZGU7Ci0gICAgY29u
c3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbigpIGNvbnN0IG92
ZXJyaWRlOwotICAgIGJvb2wgcHJld2FybSgpIGZpbmFsOwogCiAgICAgdWludDY0X3QgbV9zdG9y
YWdlQXJlYUlEOwotICAgIFJlZjxTdG9yYWdlQXJlYU1hcD4gbV9zdG9yYWdlQXJlYU1hcDsKKyAg
ICBXZWFrUHRyPFN0b3JhZ2VBcmVhTWFwPiBtX3N0b3JhZ2VBcmVhTWFwOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
U3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
U3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAKaW5kZXggM2UwNTBkZjE3OGE0NDhiYzkzMmNhNGJh
ZWMxMDMxYTcyZjkzODBlNi4uNjY2NWIzZjljZGZkNmZhZmU2YjZkZTIzOWMxNjQ2M2ZiOGY3ODVh
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFn
ZUFyZWFNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0
b3JhZ2VBcmVhTWFwLmNwcApAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhSW1wbC5oIgogI2luY2x1ZGUg
IlN0b3JhZ2VBcmVhTWFwTWVzc2FnZXMuaCIKLSNpbmNsdWRlICJTdG9yYWdlTWFuYWdlck1lc3Nh
Z2VzLmgiCisjaW5jbHVkZSAiU3RvcmFnZU1hbmFnZXJTZXRNZXNzYWdlcy5oIgogI2luY2x1ZGUg
IlN0b3JhZ2VOYW1lc3BhY2VJbXBsLmgiCiAjaW5jbHVkZSAiV2ViUGFnZS5oIgogI2luY2x1ZGUg
IldlYlBhZ2VHcm91cFByb3h5LmgiCkBAIC00OCw0MCArNDgsMjYgQEAKIG5hbWVzcGFjZSBXZWJL
aXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLXN0YXRpYyB1aW50NjRfdCBnZW5lcmF0
ZVN0b3JhZ2VNYXBJRCgpCi17Ci0gICAgc3RhdGljIHVpbnQ2NF90IHN0b3JhZ2VNYXBJRDsKLSAg
ICByZXR1cm4gKytzdG9yYWdlTWFwSUQ7Ci19Ci0KIFJlZjxTdG9yYWdlQXJlYU1hcD4gU3RvcmFn
ZUFyZWFNYXA6OmNyZWF0ZShTdG9yYWdlTmFtZXNwYWNlSW1wbCogc3RvcmFnZU5hbWVzcGFjZSwg
UmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmIHNlY3VyaXR5T3JpZ2luKQogewogICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFN0b3JhZ2VBcmVhTWFwKHN0b3JhZ2VOYW1lc3BhY2UsIFdURk1v
dmUoc2VjdXJpdHlPcmlnaW4pKSk7CiB9CiAKIFN0b3JhZ2VBcmVhTWFwOjpTdG9yYWdlQXJlYU1h
cChTdG9yYWdlTmFtZXNwYWNlSW1wbCogc3RvcmFnZU5hbWVzcGFjZSwgUmVmPFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luPiYmIHNlY3VyaXR5T3JpZ2luKQotICAgIDogbV9zdG9yYWdlTmFtZXNwYWNl
KCpzdG9yYWdlTmFtZXNwYWNlKQotICAgICwgbV9zdG9yYWdlTWFwSUQoZ2VuZXJhdGVTdG9yYWdl
TWFwSUQoKSkKKyAgICA6IG1fc3RvcmFnZU5hbWVzcGFjZShzdG9yYWdlTmFtZXNwYWNlKQorICAg
ICwgbV9zdG9yYWdlTWFwSUQoMCkKICAgICAsIG1fc3RvcmFnZVR5cGUoc3RvcmFnZU5hbWVzcGFj
ZS0+c3RvcmFnZVR5cGUoKSkKLSAgICAsIG1fc3RvcmFnZU5hbWVzcGFjZUlEKHN0b3JhZ2VOYW1l
c3BhY2UtPnN0b3JhZ2VOYW1lc3BhY2VJRCgpKQogICAgICwgbV9xdW90YUluQnl0ZXMoc3RvcmFn
ZU5hbWVzcGFjZS0+cXVvdGFJbkJ5dGVzKCkpCiAgICAgLCBtX3NlY3VyaXR5T3JpZ2luKFdURk1v
dmUoc2VjdXJpdHlPcmlnaW4pKQogICAgICwgbV9jdXJyZW50U2VlZCgwKQogICAgICwgbV9oYXNQ
ZW5kaW5nQ2xlYXIoZmFsc2UpCi0gICAgLCBtX2hhc1BlbmRpbmdHZXRWYWx1ZXMoZmFsc2UpCiB7
Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucmVnaXN0ZXJTdG9yYWdlQXJlYU1hcCgqdGhp
cyk7CiAgICAgY29ubmVjdCgpOwogfQogCiBTdG9yYWdlQXJlYU1hcDo6flN0b3JhZ2VBcmVhTWFw
KCkKIHsKLSAgICBpZiAobV9zdG9yYWdlVHlwZSAhPSBTdG9yYWdlVHlwZTo6RXBoZW1lcmFsTG9j
YWwpCi0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdlcjo6
RGVzdHJveVN0b3JhZ2VNYXAobV9zdG9yYWdlTWFwSUQpLCAwKTsKLQotICAgIG1fc3RvcmFnZU5h
bWVzcGFjZS0+ZGlkRGVzdHJveVN0b3JhZ2VBcmVhTWFwKCp0aGlzKTsKLQotICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLnVucmVnaXN0ZXJTdG9yYWdlQXJlYU1hcCgqdGhpcyk7CisgICAgZGlz
Y29ubmVjdCgpOwogfQogCiB1bnNpZ25lZCBTdG9yYWdlQXJlYU1hcDo6bGVuZ3RoKCkKQEAgLTEy
Miw3ICsxMDgsNyBAQCB2b2lkIFN0b3JhZ2VBcmVhTWFwOjpzZXRJdGVtKEZyYW1lKiBzb3VyY2VG
cmFtZSwgU3RvcmFnZUFyZWFJbXBsKiBzb3VyY2VBcmVhLCBjbwogCiAgICAgbV9wZW5kaW5nVmFs
dWVDaGFuZ2VzLmFkZChrZXkpOwogCi0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJl
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlN0
b3JhZ2VNYW5hZ2VyOjpTZXRJdGVtKG1fc2VjdXJpdHlPcmlnaW4tPmRhdGEoKSwgbV9zdG9yYWdl
TWFwSUQsIHNvdXJjZUFyZWEtPnN0b3JhZ2VBcmVhSUQoKSwgbV9jdXJyZW50U2VlZCwga2V5LCB2
YWx1ZSwgc291cmNlRnJhbWUtPmRvY3VtZW50KCktPnVybCgpKSwgMCk7CisgICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlv
bigpLnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpTZXRJdGVtKG1fc3RvcmFnZU1h
cElELCBzb3VyY2VBcmVhLT5zdG9yYWdlQXJlYUlEKCksIG1fY3VycmVudFNlZWQsIGtleSwgdmFs
dWUsIHNvdXJjZUZyYW1lLT5kb2N1bWVudCgpLT51cmwoKSksIDApOwogfQogCiB2b2lkIFN0b3Jh
Z2VBcmVhTWFwOjpyZW1vdmVJdGVtKFdlYkNvcmU6OkZyYW1lKiBzb3VyY2VGcmFtZSwgU3RvcmFn
ZUFyZWFJbXBsKiBzb3VyY2VBcmVhLCBjb25zdCBTdHJpbmcmIGtleSkKQEAgLTEzOCwxNiArMTI0
LDE4IEBAIHZvaWQgU3RvcmFnZUFyZWFNYXA6OnJlbW92ZUl0ZW0oV2ViQ29yZTo6RnJhbWUqIHNv
dXJjZUZyYW1lLCBTdG9yYWdlQXJlYUltcGwqIHNvCiAKICAgICBtX3BlbmRpbmdWYWx1ZUNoYW5n
ZXMuYWRkKGtleSk7CiAKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6U3RvcmFnZU1h
bmFnZXI6OlJlbW92ZUl0ZW0obV9zZWN1cml0eU9yaWdpbi0+ZGF0YSgpLCBtX3N0b3JhZ2VNYXBJ
RCwgc291cmNlQXJlYS0+c3RvcmFnZUFyZWFJRCgpLCBtX2N1cnJlbnRTZWVkLCBrZXksIHNvdXJj
ZUZyYW1lLT5kb2N1bWVudCgpLT51cmwoKSksIDApOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1l
c3NhZ2VzOjpTdG9yYWdlTWFuYWdlclNldDo6UmVtb3ZlSXRlbShtX3N0b3JhZ2VNYXBJRCwgc291
cmNlQXJlYS0+c3RvcmFnZUFyZWFJRCgpLCBtX2N1cnJlbnRTZWVkLCBrZXksIHNvdXJjZUZyYW1l
LT5kb2N1bWVudCgpLT51cmwoKSksIDApOwogfQogCiB2b2lkIFN0b3JhZ2VBcmVhTWFwOjpjbGVh
cihXZWJDb3JlOjpGcmFtZSogc291cmNlRnJhbWUsIFN0b3JhZ2VBcmVhSW1wbCogc291cmNlQXJl
YSkKIHsKKyAgICBjb25uZWN0KCk7CisKICAgICByZXNldFZhbHVlcygpOwogCiAgICAgbV9oYXNQ
ZW5kaW5nQ2xlYXIgPSB0cnVlOwogICAgIG1fc3RvcmFnZU1hcCA9IFN0b3JhZ2VNYXA6OmNyZWF0
ZShtX3F1b3RhSW5CeXRlcyk7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlN0b3Jh
Z2VNYW5hZ2VyOjpDbGVhcihtX3NlY3VyaXR5T3JpZ2luLT5kYXRhKCksIG1fc3RvcmFnZU1hcElE
LCBzb3VyY2VBcmVhLT5zdG9yYWdlQXJlYUlEKCksIG1fY3VycmVudFNlZWQsIHNvdXJjZUZyYW1l
LT5kb2N1bWVudCgpLT51cmwoKSksIDApOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVu
c3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2Vz
OjpTdG9yYWdlTWFuYWdlclNldDo6Q2xlYXIobV9zdG9yYWdlTWFwSUQsIHNvdXJjZUFyZWEtPnN0
b3JhZ2VBcmVhSUQoKSwgbV9jdXJyZW50U2VlZCwgc291cmNlRnJhbWUtPmRvY3VtZW50KCktPnVy
bCgpKSwgMCk7CiB9CiAKIGJvb2wgU3RvcmFnZUFyZWFNYXA6OmNvbnRhaW5zKGNvbnN0IFN0cmlu
ZyYga2V5KQpAQCAtMTYzLDcgKzE1MSw2IEBAIHZvaWQgU3RvcmFnZUFyZWFNYXA6OnJlc2V0VmFs
dWVzKCkKIAogICAgIG1fcGVuZGluZ1ZhbHVlQ2hhbmdlcy5jbGVhcigpOwogICAgIG1faGFzUGVu
ZGluZ0NsZWFyID0gZmFsc2U7Ci0gICAgbV9oYXNQZW5kaW5nR2V0VmFsdWVzID0gZmFsc2U7CiAg
ICAgbV9jdXJyZW50U2VlZCsrOwogfQogCkBAIC0xNzgsMzMgKzE2NSwxMCBAQCB2b2lkIFN0b3Jh
Z2VBcmVhTWFwOjpsb2FkVmFsdWVzSWZOZWVkZWQoKQogICAgIC8vIEZJWE1FOiBUaGlzIHNob3Vs
ZCB1c2UgYSBzcGVjaWFsIHNlbmRTeW5jIGZsYWcgdG8gaW5kaWNhdGUgdGhhdCB3ZSBkb24ndCB3
YW50IHRvIHByb2Nlc3MgaW5jb21pbmcgbWVzc2FnZXMgd2hpbGUgd2FpdGluZyBmb3IgYSByZXBs
eS4KICAgICAvLyAoVGhpcyBmbGFnIGRvZXMgbm90IHlldCBleGlzdCkuIFNpbmNlIGxvYWRWYWx1
ZXNJZk5lZWRlZCgpIGVuZHMgdXAgYmVpbmcgY2FsbGVkIGZyb20gd2l0aGluIEphdmFTY3JpcHQg
Y29kZSwgcHJvY2Vzc2luZyBpbmNvbWluZyBzeW5jaHJvbm91cyBtZXNzYWdlcwogICAgIC8vIGNv
dWxkIGxlYWQgdG8gd2VpcmQgcmVlbnRyZW5jeSBidWdzIG90aGVyd2lzZS4KLSAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0
aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlN0b3JhZ2VNYW5hZ2VyOjpHZXRWYWx1ZXMobV9zdG9y
YWdlTWFwSUQsIG1fY3VycmVudFNlZWQpLCBNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXI6OkdldFZh
bHVlczo6UmVwbHkodmFsdWVzKSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5z
dXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3Nh
Z2VzOjpTdG9yYWdlTWFuYWdlclNldDo6R2V0VmFsdWVzKG1fc3RvcmFnZU1hcElEKSwgTWVzc2Fn
ZXM6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpHZXRWYWx1ZXM6OlJlcGx5KHZhbHVlcyksIDApOwogCiAg
ICAgbV9zdG9yYWdlTWFwID0gU3RvcmFnZU1hcDo6Y3JlYXRlKG1fcXVvdGFJbkJ5dGVzKTsKICAg
ICBtX3N0b3JhZ2VNYXAtPmltcG9ydEl0ZW1zKFdURk1vdmUodmFsdWVzKSk7Ci0KLSAgICAvLyBX
ZSB3YW50IHRvIGlnbm9yZSBhbGwgY2hhbmdlcyB1bnRpbCB3ZSBnZXQgdGhlIERpZEdldFZhbHVl
cyBtZXNzYWdlLgotICAgIG1faGFzUGVuZGluZ0dldFZhbHVlcyA9IHRydWU7Ci19Ci0KLWJvb2wg
U3RvcmFnZUFyZWFNYXA6OnByZXdhcm0oKQotewotICAgIGlmIChtX2RpZFByZXdhcm0gfHwgbV9z
dG9yYWdlTWFwKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgbV9kaWRQcmV3YXJtID0gdHJ1
ZTsKLQotICAgIGNvbm5lY3QoKTsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6U3Rv
cmFnZU1hbmFnZXI6OlByZXdhcm0obV9zdG9yYWdlTWFwSUQpLCAwKTsKLSAgICByZXR1cm4gdHJ1
ZTsKLX0KLQotdm9pZCBTdG9yYWdlQXJlYU1hcDo6ZGlkR2V0VmFsdWVzKHVpbnQ2NF90IHN0b3Jh
Z2VNYXBTZWVkKQotewotICAgIGlmIChtX2N1cnJlbnRTZWVkICE9IHN0b3JhZ2VNYXBTZWVkKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBBU1NFUlQobV9oYXNQZW5kaW5nR2V0VmFsdWVzKTsKLSAg
ICBtX2hhc1BlbmRpbmdHZXRWYWx1ZXMgPSBmYWxzZTsKIH0KIAogdm9pZCBTdG9yYWdlQXJlYU1h
cDo6ZGlkU2V0SXRlbSh1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCwgY29uc3QgU3RyaW5nJiBrZXks
IGJvb2wgcXVvdGFFcnJvcikKQEAgLTI1OSw4ICsyMjMsOCBAQCB2b2lkIFN0b3JhZ2VBcmVhTWFw
OjphcHBseUNoYW5nZShjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSkK
IHsKICAgICBBU1NFUlQoIW1fc3RvcmFnZU1hcCB8fCBtX3N0b3JhZ2VNYXAtPmhhc09uZVJlZigp
KTsKIAotICAgIC8vIFRoZXJlJ3MgYSBjbGVhciBwZW5kaW5nIG9yIGdldFZhbHVlcyBwZW5kaW5n
IHdlIGRvbid0IHdhbnQgdG8gYXBwbHkgYW55IGNoYW5nZXMgdW50aWwgd2UgZ2V0IHRoZSBjb3Jy
ZXNwb25kaW5nIERpZENsZWFyL0RpZEdldFZhbHVlcyBtZXNzYWdlcy4KLSAgICBpZiAobV9oYXNQ
ZW5kaW5nQ2xlYXIgfHwgbV9oYXNQZW5kaW5nR2V0VmFsdWVzKQorICAgIC8vIFRoZXJlIGlzIGF0
IGxlYXN0IG9uZSBjbGVhciBwZW5kaW5nIHdlIGRvbid0IHdhbnQgdG8gYXBwbHkgYW55IGNoYW5n
ZXMgdW50aWwgd2UgZ2V0IHRoZSBjb3JyZXNwb25kaW5nIERpZENsZWFyIG1lc3NhZ2VzLgorICAg
IGlmIChtX2hhc1BlbmRpbmdDbGVhcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFrZXkp
IHsKQEAgLTMwNSw3ICsyNjksNyBAQCB2b2lkIFN0b3JhZ2VBcmVhTWFwOjpkaXNwYXRjaFN0b3Jh
Z2VFdmVudCh1aW50NjRfdCBzb3VyY2VTdG9yYWdlQXJlYUlELCBjb25zdCBTdAogICAgICAgICBh
cHBseUNoYW5nZShrZXksIG5ld1ZhbHVlKTsKICAgICB9CiAKLSAgICBpZiAoc3RvcmFnZVR5cGUo
KSA9PSBTdG9yYWdlVHlwZTo6U2Vzc2lvbiB8fCBzdG9yYWdlVHlwZSgpID09IFN0b3JhZ2VUeXBl
OjpFcGhlbWVyYWxMb2NhbCkKKyAgICBpZiAoc3RvcmFnZVR5cGUoKSA9PSBTdG9yYWdlVHlwZTo6
U2Vzc2lvbikKICAgICAgICAgZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50KHNvdXJjZVN0b3Jh
Z2VBcmVhSUQsIGtleSwgb2xkVmFsdWUsIG5ld1ZhbHVlLCB1cmxTdHJpbmcpOwogICAgIGVsc2UK
ICAgICAgICAgZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudChzb3VyY2VTdG9yYWdlQXJlYUlELCBr
ZXksIG9sZFZhbHVlLCBuZXdWYWx1ZSwgdXJsU3RyaW5nKTsKQEAgLTMxOCw5ICsyODIsOSBAQCB2
b2lkIFN0b3JhZ2VBcmVhTWFwOjpjbGVhckNhY2hlKCkKIAogdm9pZCBTdG9yYWdlQXJlYU1hcDo6
ZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50KHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQs
IGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcm
IG5ld1ZhbHVlLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZykKIHsKLSAgICAvLyBOYW1lc3BhY2Ug
SURzIGZvciBzZXNzaW9uIHN0b3JhZ2UgbmFtZXNwYWNlcyBhbmQgZXBoZW1lcmFsIGxvY2FsIHN0
b3JhZ2UgbmFtZXNwYWNlcyBhcmUgZXF1aXZhbGVudCB0byB3ZWIgcGFnZSBJRHMKKyAgICAvLyBO
YW1lc3BhY2UgSURzIGZvciBzZXNzaW9uIHN0b3JhZ2UgbmFtZXNwYWNlcyBhcmUgZXF1aXZhbGVu
dCB0byB3ZWIgcGFnZSBJRHMKICAgICAvLyBzbyB3ZSBjYW4gZ2V0IHRoZSByaWdodCBwYWdlIGhl
cmUuCi0gICAgV2ViUGFnZSogd2ViUGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBh
Z2UobWFrZU9iamVjdElkZW50aWZpZXI8UGFnZUlkZW50aWZpZXJUeXBlPihtX3N0b3JhZ2VOYW1l
c3BhY2VJRCkpOworICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS53ZWJQYWdlKG1ha2VPYmplY3RJZGVudGlmaWVyPFBhZ2VJZGVudGlmaWVyVHlwZT4obV9zdG9y
YWdlTmFtZXNwYWNlLT5zdG9yYWdlTmFtZXNwYWNlSUQoKSkpOwogICAgIGlmICghd2ViUGFnZSkK
ICAgICAgICAgcmV0dXJuOwogCkBAIC0zNTQsNyArMzE4LDggQEAgdm9pZCBTdG9yYWdlQXJlYU1h
cDo6ZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudCh1aW50NjRfdCBzb3VyY2VTdG9yYWdlQXJlYUlE
LCBjb24KIAogICAgIFZlY3RvcjxSZWZQdHI8RnJhbWU+PiBmcmFtZXM7CiAKLSAgICBQYWdlR3Jv
dXAmIHBhZ2VHcm91cCA9ICpXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlR3JvdXAobV9z
dG9yYWdlTmFtZXNwYWNlSUQpLT5jb3JlUGFnZUdyb3VwKCk7CisgICAgLy8gTmFtZXNwYWNlIElE
cyBmb3IgbG9jYWwgc3RvcmFnZSBuYW1lc3BhY2VzIGFyZSBlcXVpdmFsZW50IHRvIHdlYiBwYWdl
IGdyb3VwIElEcy4KKyAgICBQYWdlR3JvdXAmIHBhZ2VHcm91cCA9ICpXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS53ZWJQYWdlR3JvdXAobV9zdG9yYWdlTmFtZXNwYWNlLT5zdG9yYWdlTmFtZXNwYWNl
SUQoKSktPmNvcmVQYWdlR3JvdXAoKTsKICAgICBjb25zdCBIYXNoU2V0PFBhZ2UqPiYgcGFnZXMg
PSBwYWdlR3JvdXAucGFnZXMoKTsKICAgICBmb3IgKEhhc2hTZXQ8UGFnZSo+Ojpjb25zdF9pdGVy
YXRvciBpdCA9IHBhZ2VzLmJlZ2luKCksIGVuZCA9IHBhZ2VzLmVuZCgpOyBpdCAhPSBlbmQ7ICsr
aXQpIHsKICAgICAgICAgZm9yIChGcmFtZSogZnJhbWUgPSAmKCppdCktPm1haW5GcmFtZSgpOyBm
cmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7CkBAIC0zODEsMzUg
KzM0NiwzNyBAQCB2b2lkIFN0b3JhZ2VBcmVhTWFwOjpkaXNwYXRjaExvY2FsU3RvcmFnZUV2ZW50
KHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIGNvbgogCiB2b2lkIFN0b3JhZ2VBcmVhTWFw
Ojpjb25uZWN0KCkKIHsKLSAgICBpZiAoIW1faXNEaXNjb25uZWN0ZWQpCisgICAgaWYgKG1fc3Rv
cmFnZU1hcElEKQogICAgICAgICByZXR1cm47CiAKICAgICBzd2l0Y2ggKG1fc3RvcmFnZVR5cGUp
IHsKICAgICBjYXNlIFN0b3JhZ2VUeXBlOjpMb2NhbDoKLSAgICBjYXNlIFN0b3JhZ2VUeXBlOjpF
cGhlbWVyYWxMb2NhbDoKICAgICBjYXNlIFN0b3JhZ2VUeXBlOjpUcmFuc2llbnRMb2NhbDoKICAg
ICAgICAgaWYgKFNlY3VyaXR5T3JpZ2luKiB0b3BMZXZlbE9yaWdpbiA9IG1fc3RvcmFnZU5hbWVz
cGFjZS0+dG9wTGV2ZWxPcmlnaW4oKSkKLSAgICAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1l
c3NhZ2VzOjpTdG9yYWdlTWFuYWdlcjo6Q3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTWFwKG1f
c3RvcmFnZU1hcElELCBtX3N0b3JhZ2VOYW1lc3BhY2UtPnN0b3JhZ2VOYW1lc3BhY2VJRCgpLCB0
b3BMZXZlbE9yaWdpbi0+ZGF0YSgpLCBtX3NlY3VyaXR5T3JpZ2luLT5kYXRhKCkpLCAwKTsKKyAg
ICAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXJT
ZXQ6OkNvbm5lY3RUb1RyYW5zaWVudExvY2FsU3RvcmFnZUFyZWEobV9zdG9yYWdlTmFtZXNwYWNl
LT5zZXNzaW9uSUQoKSwgbV9zdG9yYWdlTmFtZXNwYWNlLT5zdG9yYWdlTmFtZXNwYWNlSUQoKSwg
dG9wTGV2ZWxPcmlnaW4tPmRhdGEoKSwgbV9zZWN1cml0eU9yaWdpbi0+ZGF0YSgpKSwgTWVzc2Fn
ZXM6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpDb25uZWN0VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVh
OjpSZXBseShtX3N0b3JhZ2VNYXBJRCksIDApOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5j
b25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXI6OkNyZWF0ZUxvY2FsU3Rv
cmFnZU1hcChtX3N0b3JhZ2VNYXBJRCwgbV9zdG9yYWdlTmFtZXNwYWNlLT5zdG9yYWdlTmFtZXNw
YWNlSUQoKSwgbV9zZWN1cml0eU9yaWdpbi0+ZGF0YSgpKSwgMCk7CisgICAgICAgICAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25u
ZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpDb25uZWN0VG9M
b2NhbFN0b3JhZ2VBcmVhKG1fc3RvcmFnZU5hbWVzcGFjZS0+c2Vzc2lvbklEKCksIG1fc3RvcmFn
ZU5hbWVzcGFjZS0+c3RvcmFnZU5hbWVzcGFjZUlEKCksIG1fc2VjdXJpdHlPcmlnaW4tPmRhdGEo
KSksIE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdlclNldDo6Q29ubmVjdFRvTG9jYWxTdG9yYWdlQXJl
YTo6UmVwbHkobV9zdG9yYWdlTWFwSUQpLCAwKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBT
dG9yYWdlVHlwZTo6U2Vzc2lvbjoKLSAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5z
dXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
OlN0b3JhZ2VNYW5hZ2VyOjpDcmVhdGVTZXNzaW9uU3RvcmFnZU1hcChtX3N0b3JhZ2VNYXBJRCwg
bV9zdG9yYWdlTmFtZXNwYWNlLT5zdG9yYWdlTmFtZXNwYWNlSUQoKSwgbV9zZWN1cml0eU9yaWdp
bi0+ZGF0YSgpKSwgMCk7CisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6
U3RvcmFnZU1hbmFnZXJTZXQ6OkNvbm5lY3RUb1Nlc3Npb25TdG9yYWdlQXJlYShtX3N0b3JhZ2VO
YW1lc3BhY2UtPnNlc3Npb25JRCgpLCBtX3N0b3JhZ2VOYW1lc3BhY2UtPnN0b3JhZ2VOYW1lc3Bh
Y2VJRCgpLCBtX3NlY3VyaXR5T3JpZ2luLT5kYXRhKCkpLCBNZXNzYWdlczo6U3RvcmFnZU1hbmFn
ZXJTZXQ6OkNvbm5lY3RUb1Nlc3Npb25TdG9yYWdlQXJlYTo6UmVwbHkobV9zdG9yYWdlTWFwSUQp
LCAwKTsKICAgICB9CiAKLSAgICBpZiAobV9zdG9yYWdlTWFwKQotICAgICAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9u
KCkuc2VuZChNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXI6OlNldEl0ZW1zKG1fc3RvcmFnZU1hcElE
LCBtX3N0b3JhZ2VNYXAtPml0ZW1zKCkpLCAwKTsKLSAgICBtX2lzRGlzY29ubmVjdGVkID0gZmFs
c2U7CisgICAgaWYgKG1fc3RvcmFnZU1hcElEKQorICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5yZWdpc3RlclN0b3JhZ2VBcmVhTWFwKCp0aGlzKTsKIH0KIAogdm9pZCBTdG9yYWdlQXJl
YU1hcDo6ZGlzY29ubmVjdCgpCiB7Ci0gICAgbV9pc0Rpc2Nvbm5lY3RlZCA9IHRydWU7Ci0gICAg
aWYgKG1fc3RvcmFnZVR5cGUgPT0gU3RvcmFnZVR5cGU6OlNlc3Npb24gJiYgbV9zdG9yYWdlTWFw
KSB7Ci0gICAgICAgIG1fcGVuZGluZ1ZhbHVlQ2hhbmdlcy5jbGVhcigpOwotICAgICAgICBtX2hh
c1BlbmRpbmdDbGVhciA9IGZhbHNlOwotICAgIH0gZWxzZQotICAgICAgICByZXNldFZhbHVlcygp
OworICAgIGlmICghbV9zdG9yYWdlTWFwSUQpCisgICAgICAgIHJldHVybjsKKworICAgIHJlc2V0
VmFsdWVzKCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudW5yZWdpc3RlclN0b3JhZ2VB
cmVhTWFwKCp0aGlzKTsKKworICAgIGlmIChhdXRvIG5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiA9
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmV4aXN0aW5nTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
KCkpCisgICAgICAgIG5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQo
TWVzc2FnZXM6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpEaXNjb25uZWN0RnJvbVN0b3JhZ2VBcmVhKG1f
c3RvcmFnZU1hcElEKSwgMCk7CisKKyAgICBtX3N0b3JhZ2VNYXBJRCA9IDA7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJT
dG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmgKaW5kZXggZmI5MWJjOTA1NDI1ZmM4MWM2YTQ4MzUyNzRh
YmNjMGMxN2RhNDljNi4uNDRhZDA2ZjkxYjU1YzdmNDFlNmQwZjI4ODdjOWVjMTdkNTJhNzQxZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFy
ZWFNYXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdl
QXJlYU1hcC5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hDb3VudGVkU2V0
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
U2VjdXJpdHlPcmlnaW47CkBAIC00Myw3ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xh
c3MgU3RvcmFnZUFyZWFJbXBsOwogY2xhc3MgU3RvcmFnZU5hbWVzcGFjZUltcGw7CiAKLWNsYXNz
IFN0b3JhZ2VBcmVhTWFwIDogcHVibGljIFJlZkNvdW50ZWQ8U3RvcmFnZUFyZWFNYXA+LCBwcml2
YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKK2NsYXNzIFN0b3JhZ2VBcmVhTWFwIDogcHVibGlj
IFJlZkNvdW50ZWQ8U3RvcmFnZUFyZWFNYXA+LCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVy
LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8U3RvcmFnZUFyZWFNYXA+IHsKIHB1YmxpYzoKICAgICBz
dGF0aWMgUmVmPFN0b3JhZ2VBcmVhTWFwPiBjcmVhdGUoU3RvcmFnZU5hbWVzcGFjZUltcGwqLCBS
ZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYpOwogICAgIH5TdG9yYWdlQXJlYU1hcCgpOwpA
QCAtNTcsNyArNTgsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVJdGVtKFdlYkNvcmU6OkZy
YW1lKiBzb3VyY2VGcmFtZSwgU3RvcmFnZUFyZWFJbXBsKiBzb3VyY2VBcmVhLCBjb25zdCBTdHJp
bmcmIGtleSk7CiAgICAgdm9pZCBjbGVhcihXZWJDb3JlOjpGcmFtZSogc291cmNlRnJhbWUsIFN0
b3JhZ2VBcmVhSW1wbCogc291cmNlQXJlYSk7CiAgICAgYm9vbCBjb250YWlucyhjb25zdCBTdHJp
bmcmIGtleSk7Ci0gICAgYm9vbCBwcmV3YXJtKCk7CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNl
aXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJikgb3ZlcnJpZGU7CkBAIC03MSw3ICs3MSw2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgU3RvcmFnZUFyZWFNYXAoU3RvcmFnZU5hbWVzcGFjZUltcGwqLCBSZWY8V2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW4+JiYpOwogCi0gICAgdm9pZCBkaWRHZXRWYWx1ZXModWludDY0X3Qgc3RvcmFn
ZU1hcFNlZWQpOwogICAgIHZvaWQgZGlkU2V0SXRlbSh1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCwg
Y29uc3QgU3RyaW5nJiBrZXksIGJvb2wgcXVvdGFFcnJvcik7CiAgICAgdm9pZCBkaWRSZW1vdmVJ
dGVtKHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkLCBjb25zdCBTdHJpbmcmIGtleSk7CiAgICAgdm9p
ZCBkaWRDbGVhcih1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCk7CkBAIC04OCwxMiArODcsMTEgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRpc3BhdGNoU2Vzc2lvblN0b3JhZ2VFdmVudCh1aW50NjRfdCBz
b3VyY2VTdG9yYWdlQXJlYUlELCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRW
YWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpOwog
ICAgIHZvaWQgZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudCh1aW50NjRfdCBzb3VyY2VTdG9yYWdl
QXJlYUlELCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3Qg
U3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpOwogCi0gICAgUmVmPFN0
b3JhZ2VOYW1lc3BhY2VJbXBsPiBtX3N0b3JhZ2VOYW1lc3BhY2U7CisgICAgU3RvcmFnZU5hbWVz
cGFjZUltcGwqIG1fc3RvcmFnZU5hbWVzcGFjZTsKIAogICAgIHVpbnQ2NF90IG1fc3RvcmFnZU1h
cElEOwogCiAgICAgV2ViQ29yZTo6U3RvcmFnZVR5cGUgbV9zdG9yYWdlVHlwZTsKLSAgICB1aW50
NjRfdCBtX3N0b3JhZ2VOYW1lc3BhY2VJRDsKICAgICB1bnNpZ25lZCBtX3F1b3RhSW5CeXRlczsK
ICAgICBSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+IG1fc2VjdXJpdHlPcmlnaW47CiAKQEAg
LTEwMSwxMSArOTksNyBAQCBwcml2YXRlOgogCiAgICAgdWludDY0X3QgbV9jdXJyZW50U2VlZDsK
ICAgICBib29sIG1faGFzUGVuZGluZ0NsZWFyOwotICAgIGJvb2wgbV9oYXNQZW5kaW5nR2V0VmFs
dWVzOwogICAgIEhhc2hDb3VudGVkU2V0PFN0cmluZz4gbV9wZW5kaW5nVmFsdWVDaGFuZ2VzOwot
Ci0gICAgYm9vbCBtX2lzRGlzY29ubmVjdGVkIHsgdHJ1ZSB9OwotICAgIGJvb2wgbV9kaWRQcmV3
YXJtIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1h
cC5tZXNzYWdlcy5pbgppbmRleCBiMTU5MDRmMTZiZWMxNDJiMTBiNDgwMGQxMDY0NTAwOTMzODMw
MGQ1Li43YTc1ZDIxMGZkODMyNWYyYjUxYTg5Y2UzZTU0MmQ0ODAzOTA5NmE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdl
QXJlYU1hcC5tZXNzYWdlcy5pbgpAQCAtMjEsNyArMjEsNiBAQAogIyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBt
ZXNzYWdlcyAtPiBTdG9yYWdlQXJlYU1hcCB7Ci0gICAgRGlkR2V0VmFsdWVzKHVpbnQ2NF90IHN0
b3JhZ2VNYXBTZWVkKQogICAgIERpZFNldEl0ZW0odWludDY0X3Qgc3RvcmFnZU1hcFNlZWQsIFN0
cmluZyBrZXksIGJvb2wgcXVvdGFFeGNlcHRpb24pCiAgICAgRGlkUmVtb3ZlSXRlbSh1aW50NjRf
dCBzdG9yYWdlTWFwU2VlZCwgU3RyaW5nIGtleSkKICAgICBEaWRDbGVhcih1aW50NjRfdCBzdG9y
YWdlTWFwU2VlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcAppbmRleCBmNTljNzliN2ZhMmJlMmZj
OWE3MjA1MmMxYjllNTNjYjZhMzIzZmQwLi43NDI5NjE4OTMyODg0ZWUyNTQyOThmYjMzNWMwZThj
MzI0MDk3NmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFn
ZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAK
ICNpbmNsdWRlICJTdG9yYWdlQXJlYUltcGwuaCIKICNpbmNsdWRlICJTdG9yYWdlQXJlYU1hcC5o
IgorI2luY2x1ZGUgIlN0b3JhZ2VNYW5hZ2VyU2V0TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQ
YWdlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZUdyb3VwUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcm9j
ZXNzLmgiCkBAIC00MCwzMSArNDEsMjcgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKLVJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVz
cGFjZUltcGw6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZp
ZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcykKK1JlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3Rv
cmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90
IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcywgUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklEKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0
b3JhZ2VUeXBlOjpTZXNzaW9uLCBpZGVudGlmaWVyLCBudWxscHRyLCBxdW90YUluQnl0ZXMpKTsK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChTdG9yYWdlVHlw
ZTo6U2Vzc2lvbiwgaWRlbnRpZmllciwgbnVsbHB0ciwgcXVvdGFJbkJ5dGVzLCBzZXNzaW9uSUQp
KTsKIH0KIAotUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6
Y3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIs
IHVuc2lnbmVkIHF1b3RhSW5CeXRlcykKK1JlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFn
ZU5hbWVzcGFjZUltcGw6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVu
dGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkK
IHsKLSAgICByZXR1cm4gY3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKGlkZW50aWZpZXIsIHF1
b3RhSW5CeXRlcywgSXNFcGhlbWVyYWw6Olllcyk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U3RvcmFnZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5cGU6OkxvY2FsLCBpZGVudGlmaWVyLCBudWxs
cHRyLCBxdW90YUluQnl0ZXMsIHNlc3Npb25JRCkpOwogfQogCi1SZWY8U3RvcmFnZU5hbWVzcGFj
ZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2Uo
dWludDY0X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzLCBJc0VwaGVtZXJhbCBp
c0VwaGVtZXJhbCkKK1JlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUlt
cGw6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlm
aWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgdG9wTGV2ZWxPcmlnaW4sIHVpbnQ2NF90IHF1
b3RhSW5CeXRlcywgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogewotICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKGlzRXBoZW1lcmFsID09IElzRXBoZW1lcmFs
OjpZZXMgPyBTdG9yYWdlVHlwZTo6RXBoZW1lcmFsTG9jYWwgOiBTdG9yYWdlVHlwZTo6TG9jYWws
IGlkZW50aWZpZXIsIG51bGxwdHIsIHF1b3RhSW5CeXRlcykpOworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0b3JhZ2VUeXBlOjpUcmFuc2llbnRMb2NhbCwg
aWRlbnRpZmllciwgJnRvcExldmVsT3JpZ2luLCBxdW90YUluQnl0ZXMsIHNlc3Npb25JRCkpOwog
fQogCi1SZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVh
dGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW4mIHRvcExldmVsT3JpZ2luLCB1aW50NjRfdCBxdW90YUluQnl0
ZXMpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwoU3Rv
cmFnZVR5cGU6OlRyYW5zaWVudExvY2FsLCBpZGVudGlmaWVyLCAmdG9wTGV2ZWxPcmlnaW4sIHF1
b3RhSW5CeXRlcykpOwotfQotCi1TdG9yYWdlTmFtZXNwYWNlSW1wbDo6U3RvcmFnZU5hbWVzcGFj
ZUltcGwoV2ViQ29yZTo6U3RvcmFnZVR5cGUgc3RvcmFnZVR5cGUsIHVpbnQ2NF90IHN0b3JhZ2VO
YW1lc3BhY2VJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qIHRvcExldmVsT3JpZ2luLCB1bnNp
Z25lZCBxdW90YUluQnl0ZXMpCitTdG9yYWdlTmFtZXNwYWNlSW1wbDo6U3RvcmFnZU5hbWVzcGFj
ZUltcGwoV2ViQ29yZTo6U3RvcmFnZVR5cGUgc3RvcmFnZVR5cGUsIHVpbnQ2NF90IHN0b3JhZ2VO
YW1lc3BhY2VJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qIHRvcExldmVsT3JpZ2luLCB1bnNp
Z25lZCBxdW90YUluQnl0ZXMsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKICAgICA6IG1fc3Rv
cmFnZVR5cGUoc3RvcmFnZVR5cGUpCiAgICAgLCBtX3N0b3JhZ2VOYW1lc3BhY2VJRChzdG9yYWdl
TmFtZXNwYWNlSUQpCiAgICAgLCBtX3RvcExldmVsT3JpZ2luKHRvcExldmVsT3JpZ2luKQogICAg
ICwgbV9xdW90YUluQnl0ZXMocXVvdGFJbkJ5dGVzKQorICAgICwgbV9zZXNzaW9uSUQoc2Vzc2lv
bklEKQogewogfQogCkBAIC03NywxMyArNzQsMTQgQEAgdm9pZCBTdG9yYWdlTmFtZXNwYWNlSW1w
bDo6ZGlkRGVzdHJveVN0b3JhZ2VBcmVhTWFwKFN0b3JhZ2VBcmVhTWFwJiBtYXApCiAgICAgbV9z
dG9yYWdlQXJlYU1hcHMucmVtb3ZlKG1hcC5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSk7CiB9CiAK
LVJlZjxTdG9yYWdlQXJlYT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OnN0b3JhZ2VBcmVhKGNvbnN0
IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4pCitSZWY8U3RvcmFnZUFyZWE+IFN0
b3JhZ2VOYW1lc3BhY2VJbXBsOjpzdG9yYWdlQXJlYShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEm
IHNlY3VyaXR5T3JpZ2luRGF0YSkKIHsKICAgICBSZWZQdHI8U3RvcmFnZUFyZWFNYXA+IG1hcDsK
IAotICAgIGF1dG8mIHNsb3QgPSBtX3N0b3JhZ2VBcmVhTWFwcy5hZGQoc2VjdXJpdHlPcmlnaW4s
IG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICBhdXRvIHNlY3VyaXR5T3JpZ2luID0gc2Vj
dXJpdHlPcmlnaW5EYXRhLnNlY3VyaXR5T3JpZ2luKCk7CisgICAgYXV0byYgc2xvdCA9IG1fc3Rv
cmFnZUFyZWFNYXBzLmFkZChzZWN1cml0eU9yaWdpbi0+ZGF0YSgpLCBudWxscHRyKS5pdGVyYXRv
ci0+dmFsdWU7CiAgICAgaWYgKCFzbG90KSB7Ci0gICAgICAgIG1hcCA9IFN0b3JhZ2VBcmVhTWFw
OjpjcmVhdGUodGhpcywgc2VjdXJpdHlPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKSk7CisgICAgICAg
IG1hcCA9IFN0b3JhZ2VBcmVhTWFwOjpjcmVhdGUodGhpcywgV1RGTW92ZShzZWN1cml0eU9yaWdp
bikpOwogICAgICAgICBzbG90ID0gbWFwLmdldCgpOwogICAgIH0gZWxzZQogICAgICAgICBtYXAg
PSBzbG90OwpAQCAtOTUsMTMgKzkzLDE3IEBAIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBTdG9yYWdl
TmFtZXNwYWNlSW1wbDo6Y29weShQYWdlKiBuZXdQYWdlKQogewogICAgIEFTU0VSVChtX3N0b3Jh
Z2VOYW1lc3BhY2VJRCk7CiAKLSAgICBpZiAobV9zdG9yYWdlVHlwZSA9PSBTdG9yYWdlVHlwZTo6
U2Vzc2lvbikKLSAgICAgICAgcmV0dXJuIGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFdl
YlBhZ2U6OmZyb21Db3JlUGFnZShuZXdQYWdlKS0+cGFnZUlEKCkudG9VSW50NjQoKSwgbV9xdW90
YUluQnl0ZXMpOworICAgIGlmIChhdXRvIG5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiA9IFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLmV4aXN0aW5nTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkpCisg
ICAgICAgIG5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2Fn
ZXM6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpDbG9uZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKG5ld1Bh
Z2UtPnNlc3Npb25JRCgpLCBtX3N0b3JhZ2VOYW1lc3BhY2VJRCwgV2ViUGFnZTo6ZnJvbUNvcmVQ
YWdlKG5ld1BhZ2UpLT5wYWdlSUQoKS50b1VJbnQ2NCgpKSwgMCk7CiAKLSAgICBBU1NFUlQobV9z
dG9yYWdlVHlwZSA9PSBTdG9yYWdlVHlwZTo6RXBoZW1lcmFsTG9jYWwpOwotICAgIGF1dG8gbmV3
TmFtZXNwYWNlID0gYWRvcHRSZWYoKm5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChtX3N0b3JhZ2VU
eXBlLCBtX3N0b3JhZ2VOYW1lc3BhY2VJRCwgbV90b3BMZXZlbE9yaWdpbi5nZXQoKSwgbV9xdW90
YUluQnl0ZXMpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9yYWdlTmFtZXNwYWNlSW1w
bChtX3N0b3JhZ2VUeXBlLCBXZWJQYWdlOjpmcm9tQ29yZVBhZ2UobmV3UGFnZSktPnBhZ2VJRCgp
LnRvVUludDY0KCksIG1fdG9wTGV2ZWxPcmlnaW4uZ2V0KCksIG1fcXVvdGFJbkJ5dGVzLCBuZXdQ
YWdlLT5zZXNzaW9uSUQoKSkpOworfQogCi0gICAgcmV0dXJuIG5ld05hbWVzcGFjZTsKK3ZvaWQg
U3RvcmFnZU5hbWVzcGFjZUltcGw6OnNldFNlc3Npb25JREZvclRlc3RpbmcoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklEKQoreworICAgIG1fc2Vzc2lvbklEID0gc2Vzc2lvbklEOworICAgIGZvciAo
YXV0byBzdG9yYWdlQXJlYU1hcCA6IG1fc3RvcmFnZUFyZWFNYXBzLnZhbHVlcygpKQorICAgICAg
ICBzdG9yYWdlQXJlYU1hcC0+ZGlzY29ubmVjdCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3Jh
Z2VOYW1lc3BhY2VJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9T
dG9yYWdlTmFtZXNwYWNlSW1wbC5oCmluZGV4IGVhNmQ1NTE4Y2RmYzk5ZGMzYTAxZDg1N2UzNjYz
NjUwZjliNjY2YTIuLjVlZTg5ZTdhOTkwMWVkYmE4ODk1MzQ1NjQ1MmI2MjVmZWVkNzZiY2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1l
c3BhY2VJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3Rv
cmFnZU5hbWVzcGFjZUltcGwuaApAQCAtMzksMTIgKzM5LDkgQEAgY2xhc3MgV2ViUGFnZTsKIAog
Y2xhc3MgU3RvcmFnZU5hbWVzcGFjZUltcGwgOiBwdWJsaWMgV2ViQ29yZTo6U3RvcmFnZU5hbWVz
cGFjZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3Jl
YXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgdW5zaWduZWQg
cXVvdGFJbkJ5dGVzKTsKLSAgICBzdGF0aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVh
dGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgdW5z
aWduZWQgcXVvdGFJbkJ5dGVzKTsKLQotICAgIGVudW0gY2xhc3MgSXNFcGhlbWVyYWwgOiBib29s
IHsgTm8sIFllcyB9OwotICAgIHN0YXRpYyBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0
ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90
YUluQnl0ZXMsIElzRXBoZW1lcmFsIGlzRXBoZW1lcmFsKTsKLSAgICBzdGF0aWMgUmVmPFN0b3Jh
Z2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWlu
dDY0X3QgaWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHRvcExldmVsT3JpZ2lu
LCB1aW50NjRfdCBxdW90YUluQnl0ZXMpOworICAgIHN0YXRpYyBSZWY8U3RvcmFnZU5hbWVzcGFj
ZUltcGw+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIs
IHVuc2lnbmVkIHF1b3RhSW5CeXRlcywgUEFMOjpTZXNzaW9uSUQpOworICAgIHN0YXRpYyBSZWY8
U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRf
dCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMsIFBBTDo6U2Vzc2lvbklEKTsKKyAg
ICBzdGF0aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW4mIHRvcExldmVsT3JpZ2luLCB1aW50NjRfdCBxdW90YUluQnl0ZXMsIFBBTDo6U2Vzc2lvbklE
KTsKIAogICAgIHZpcnR1YWwgflN0b3JhZ2VOYW1lc3BhY2VJbXBsKCk7CiAKQEAgLTUyLDExICs0
OSwxNCBAQCBwdWJsaWM6CiAgICAgdWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlEKCkgY29uc3Qg
eyByZXR1cm4gbV9zdG9yYWdlTmFtZXNwYWNlSUQ7IH0KICAgICBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbiogdG9wTGV2ZWxPcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX3RvcExldmVsT3JpZ2luLmdl
dCgpOyB9CiAgICAgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV9xdW90
YUluQnl0ZXM7IH0KKyAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX3Nlc3Npb25JRDsgfQogCiAgICAgdm9pZCBkaWREZXN0cm95U3RvcmFnZUFy
ZWFNYXAoU3RvcmFnZUFyZWFNYXAmKTsKIAorICAgIHZvaWQgc2V0U2Vzc2lvbklERm9yVGVzdGlu
ZyhQQUw6OlNlc3Npb25JRCkgb3ZlcnJpZGU7CisKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgU3Rv
cmFnZU5hbWVzcGFjZUltcGwoV2ViQ29yZTo6U3RvcmFnZVR5cGUsIHVpbnQ2NF90IHN0b3JhZ2VO
YW1lc3BhY2VJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qIHRvcExldmVsT3JpZ2luLCB1bnNp
Z25lZCBxdW90YUluQnl0ZXMpOworICAgIGV4cGxpY2l0IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFdl
YkNvcmU6OlN0b3JhZ2VUeXBlLCB1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luKiB0b3BMZXZlbE9yaWdpbiwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzLCBQ
QUw6OlNlc3Npb25JRCk7CiAKICAgICBSZWY8V2ViQ29yZTo6U3RvcmFnZUFyZWE+IHN0b3JhZ2VB
cmVhKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYpIG92ZXJyaWRlOwogICAgIFJl
ZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjb3B5KFdlYkNvcmU6OlBhZ2UqKSBvdmVycmlk
ZTsKQEAgLTY5LDcgKzY5LDkgQEAgcHJpdmF0ZToKIAogICAgIGNvbnN0IHVuc2lnbmVkIG1fcXVv
dGFJbkJ5dGVzOwogCi0gICAgSGFzaE1hcDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEsIFN0
b3JhZ2VBcmVhTWFwKj4gbV9zdG9yYWdlQXJlYU1hcHM7CisgICAgUEFMOjpTZXNzaW9uSUQgbV9z
ZXNzaW9uSUQ7CisKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSwgUmVm
UHRyPFN0b3JhZ2VBcmVhTWFwPj4gbV9zdG9yYWdlQXJlYU1hcHM7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9y
YWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCmluZGV4IDg4
YTkzYzVkNTA0MmExMjYzNDExYzY4NGJlZGJkNTA2ZTM0YjVhMGUuLjllNzIxNjMxYjNiNGJkNzJl
YzAzM2U3OWJhZTBkMzc1MjU0YmFjMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyLmNwcApAQCAtNjcsMjIgKzY3LDE3IEBAIFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6
fldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcigpCiAKIFJlZjxXZWJDb3JlOjpTdG9yYWdlTmFt
ZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdl
TmFtZXNwYWNlKFBhZ2UmIHBhZ2UsIHVuc2lnbmVkIHF1b3RhKQogewotICAgIHJldHVybiBTdG9y
YWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoV2ViUGFnZTo6
ZnJvbUNvcmVQYWdlKCZwYWdlKS0+cGFnZUlEKCkudG9VSW50NjQoKSwgcXVvdGEpOworICAgIHJl
dHVybiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2Uo
V2ViUGFnZTo6ZnJvbUNvcmVQYWdlKCZwYWdlKS0+cGFnZUlEKCkudG9VSW50NjQoKSwgcXVvdGEs
IHBhZ2Uuc2Vzc2lvbklEKCkpOwogfQogCi1SZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4g
V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VO
YW1lc3BhY2UoUGFnZSYgcGFnZSwgdW5zaWduZWQgcXVvdGEpCitSZWY8V2ViQ29yZTo6U3RvcmFn
ZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsK
LSAgICByZXR1cm4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3Rv
cmFnZU5hbWVzcGFjZShXZWJQYWdlOjpmcm9tQ29yZVBhZ2UoJnBhZ2UpLT5wYWdlSUQoKS50b1VJ
bnQ2NCgpLCBxdW90YSk7CisgICAgcmV0dXJuIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVM
b2NhbFN0b3JhZ2VOYW1lc3BhY2UobV9pZGVudGlmaWVyLCBxdW90YSwgc2Vzc2lvbklEKTsKIH0K
IAotUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92
aWRlcjo6Y3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkIHF1b3RhKQorUmVmPFdl
YkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3Jl
YXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
JiB0b3BMZXZlbE9yaWdpbiwgdW5zaWduZWQgcXVvdGEsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCkKIHsKLSAgICByZXR1cm4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZUxvY2FsU3RvcmFn
ZU5hbWVzcGFjZShtX2lkZW50aWZpZXIsIHF1b3RhLCBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6SXNF
cGhlbWVyYWw6Ok5vKTsKLX0KLQotUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0
b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNw
YWNlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiB0b3BMZXZlbE9yaWdpbiwgdW5zaWduZWQgcXVv
dGEpCi17Ci0gICAgcmV0dXJuIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVUcmFuc2llbnRM
b2NhbFN0b3JhZ2VOYW1lc3BhY2UobV9pZGVudGlmaWVyLCB0b3BMZXZlbE9yaWdpbiwgcXVvdGEp
OworICAgIHJldHVybiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlVHJhbnNpZW50TG9jYWxT
dG9yYWdlTmFtZXNwYWNlKG1faWRlbnRpZmllciwgdG9wTGV2ZWxPcmlnaW4sIHF1b3RhLCBzZXNz
aW9uSUQpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
U3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oCmluZGV4IDNj
ZTZkYjlmMDY4ZTgwMzg5NjgxMTRlZjk5YWMyNWFjZTA0MTFmMzQuLjJhZjliZjZlMzI1ZDQxZTk3
YjM3MTA5MmM0MTc0NWYxNmY5ZjQ2YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
ci5oCkBAIC0zOCw5ICszOCw4IEBAIHByaXZhdGU6CiAgICAgZXhwbGljaXQgV2ViU3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyKHVpbnQ2NF90IGlkZW50aWZpZXIpOwogCiAgICAgUmVmPFdlYkNvcmU6
OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6
OlBhZ2UmLCB1bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7Ci0gICAgUmVmPFdlYkNvcmU6OlN0b3Jh
Z2VOYW1lc3BhY2U+IGNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShXZWJDb3Jl
OjpQYWdlJiwgdW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOwotICAgIFJlZjxXZWJDb3JlOjpTdG9y
YWdlTmFtZXNwYWNlPiBjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEp
IG92ZXJyaWRlOwotICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVUcmFu
c2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCB1bnNp
Z25lZCBxdW90YSkgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+
IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSwgUEFMOjpTZXNzaW9u
SUQpIG92ZXJyaWRlOworCVJlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVUcmFu
c2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCB1bnNp
Z25lZCBxdW90YSwgUEFMOjpTZXNzaW9uSUQpIG92ZXJyaWRlOwogCiAgICAgY29uc3QgdWludDY0
X3QgbV9pZGVudGlmaWVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3Rv
cmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0
b3JhZ2VBcmVhSW1wbC5jcHAKaW5kZXggN2RhNWM3MmU1OGVmNzNkMTk2ZDE2NzMwNzc1YTM3YmFh
NTQ3NGNhZC4uNDJjYzRkYmQwMzllYzczNTkyYzQ3NjBmY2FlMWJiOGQ2ODNkYzk5NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHAKQEAgLTI5
Miw0ICsyOTIsMjIgQEAgdm9pZCBTdG9yYWdlQXJlYUltcGw6OmRpc3BhdGNoU3RvcmFnZUV2ZW50
KGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFYKICAgICAgICAgU3RvcmFnZUV2
ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50cyhrZXksIG9sZFZhbHVl
LCBuZXdWYWx1ZSwgbV9zZWN1cml0eU9yaWdpbiwgc291cmNlRnJhbWUpOwogfQogCit2b2lkIFN0
b3JhZ2VBcmVhSW1wbDo6c2Vzc2lvbkNoYW5nZWQoYm9vbCBpc05ld1Nlc3Npb25QZXJzaXN0ZW50
KQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICB1bnNpZ25lZCBxdW90YSA9
IG1fc3RvcmFnZU1hcC0+cXVvdGEoKTsKKyAgICBtX3N0b3JhZ2VNYXAgPSBTdG9yYWdlTWFwOjpj
cmVhdGUocXVvdGEpOworCisgICAgaWYgKGlzTmV3U2Vzc2lvblBlcnNpc3RlbnQgJiYgIW1fc3Rv
cmFnZUFyZWFTeW5jICYmIG1fc3RvcmFnZVN5bmNNYW5hZ2VyKSB7CisgICAgICAgIG1fc3RvcmFn
ZUFyZWFTeW5jID0gU3RvcmFnZUFyZWFTeW5jOjpjcmVhdGUobV9zdG9yYWdlU3luY01hbmFnZXIu
Z2V0KCksICp0aGlzLCBtX3NlY3VyaXR5T3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghaXNOZXdTZXNzaW9uUGVyc2lzdGVudCAm
JiBtX3N0b3JhZ2VBcmVhU3luYykgeworICAgICAgICBtX3N0b3JhZ2VBcmVhU3luYy0+c2NoZWR1
bGVGaW5hbFN5bmMoKTsKKyAgICAgICAgbV9zdG9yYWdlQXJlYVN5bmMgPSBudWxscHRyOworICAg
IH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9T
dG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oCmluZGV4IDU4ZmNiYTAzNTAwNGJhNjNjYzg4OGE4ZGIy
OTEwMDE5YmM4ZTdkOTEuLmIyMGJlZjk1MzM3ZDg0NGRiM2MyM2Y4MDFkMGRiOTM2NTQ1MGUyOWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwu
aAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmgKQEAg
LTYxLDggKzYxLDYgQEAgcHVibGljOgogICAgIHZvaWQgZGVjcmVtZW50QWNjZXNzQ291bnQoKSBv
dmVycmlkZTsKICAgICB2b2lkIGNsb3NlRGF0YWJhc2VJZklkbGUoKSBvdmVycmlkZTsKIAotICAg
IGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4oKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBtX3NlY3VyaXR5T3JpZ2luOyB9Ci0KICAgICBSZWY8U3RvcmFn
ZUFyZWFJbXBsPiBjb3B5KCk7CiAgICAgdm9pZCBjbG9zZSgpOwogCkBAIC03NCw2ICs3Miw4IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgc3luYygpOwogCisgICAgdm9pZCBzZXNzaW9uQ2hhbmdlZChi
b29sIGlzTmV3U2Vzc2lvblBlcnNpc3RlbnQpOworCiBwcml2YXRlOgogICAgIFN0b3JhZ2VBcmVh
SW1wbChXZWJDb3JlOjpTdG9yYWdlVHlwZSwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhJiwgUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VTeW5jTWFuYWdlcj4mJiwgdW5zaWduZWQgcXVv
dGEpOwogICAgIGV4cGxpY2l0IFN0b3JhZ2VBcmVhSW1wbChjb25zdCBTdG9yYWdlQXJlYUltcGwm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlQXJlYVN5
bmMuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuaAppbmRl
eCBjMDA4NzUzZjM0NDlkYTM0YzU2M2RjYjE2NWE0MjU0NjM3MDA3YTI3Li4xMDljN2NmMzQ2YzM1
ZmQwY2QwMTc4NmJiNDkwZGUwOGJkMzA5NmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9T
dG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5oCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBjbGFzcyBTdG9yYWdlQXJlYUltcGw7CiAKLWNsYXNzIFN0b3JhZ2VBcmVhU3luYyA6
IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTdG9yYWdlQXJlYVN5bmM+IHsKK2NsYXNzIFN0
b3JhZ2VBcmVhU3luYyA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTdG9yYWdlQXJlYVN5
bmMsIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW4+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
UmVmPFN0b3JhZ2VBcmVhU3luYz4gY3JlYXRlKFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlU3luY01h
bmFnZXI+JiYsIFJlZjxTdG9yYWdlQXJlYUltcGw+JiYsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJ
ZGVudGlmaWVyKTsKICAgICB+U3RvcmFnZUFyZWFTeW5jKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwIGIvU291cmNlL1dl
YktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcAppbmRleCA0YTk0YTFk
ODVjZWNhMWUzYzYzYmM3MmE4NmFiMDZhZjBlMTg2ZDVkLi43MzdmNWMwOTcyMWQyYmJkYmM4NjU3
NjFjOWQxMThjODFkZjYxMzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3Jh
Z2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3Rv
cmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKQEAgLTQ1LDE3ICs0NSwxMiBAQCBzdGF0aWMg
SGFzaE1hcDxTdHJpbmcsIFN0b3JhZ2VOYW1lc3BhY2VJbXBsKj4mIGxvY2FsU3RvcmFnZU5hbWVz
cGFjZU1hcCgpCiAgICAgcmV0dXJuIGxvY2FsU3RvcmFnZU5hbWVzcGFjZU1hcDsKIH0KIAotUmVm
PFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlU2Vzc2lv
blN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEpCitSZWY8U3RvcmFnZU5hbWVzcGFjZUlt
cGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1
bnNpZ25lZCBxdW90YSwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogewotICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0b3JhZ2VUeXBlOjpTZXNzaW9uLCBT
dHJpbmcoKSwgcXVvdGEpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9yYWdlTmFtZXNw
YWNlSW1wbChTdG9yYWdlVHlwZTo6U2Vzc2lvbiwgU3RyaW5nKCksIHF1b3RhLCBzZXNzaW9uSUQp
KTsKIH0KIAotUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6
Y3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkIHF1b3RhKQotewot
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0b3JhZ2VUeXBl
OjpFcGhlbWVyYWxMb2NhbCwgU3RyaW5nKCksIHF1b3RhKSk7Ci19Ci0KLVJlZjxTdG9yYWdlTmFt
ZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmdldE9yQ3JlYXRlTG9jYWxTdG9yYWdl
TmFtZXNwYWNlKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VQYXRoLCB1bnNpZ25lZCBxdW90YSkKK1Jl
ZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmdldE9yQ3JlYXRl
TG9jYWxTdG9yYWdlTmFtZXNwYWNlKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VQYXRoLCB1bnNpZ25l
ZCBxdW90YSwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAgIEFTU0VSVCghZGF0YWJh
c2VQYXRoLmlzTnVsbCgpKTsKIApAQCAtNjMsMTggKzU4LDE5IEBAIFJlZjxTdG9yYWdlTmFtZXNw
YWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmdldE9yQ3JlYXRlTG9jYWxTdG9yYWdlTmFt
ZXNwYWNlCiAgICAgaWYgKHNsb3QpCiAgICAgICAgIHJldHVybiAqc2xvdDsKIAotICAgIFJlZjxT
dG9yYWdlTmFtZXNwYWNlSW1wbD4gc3RvcmFnZU5hbWVzcGFjZSA9IGFkb3B0UmVmKCpuZXcgU3Rv
cmFnZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5cGU6OkxvY2FsLCBkYXRhYmFzZVBhdGgsIHF1b3Rh
KSk7CisgICAgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBzdG9yYWdlTmFtZXNwYWNlID0gYWRv
cHRSZWYoKm5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChTdG9yYWdlVHlwZTo6TG9jYWwsIGRhdGFi
YXNlUGF0aCwgcXVvdGEsIHNlc3Npb25JRCkpOwogICAgIHNsb3QgPSBzdG9yYWdlTmFtZXNwYWNl
LnB0cigpOwogCiAgICAgcmV0dXJuIHN0b3JhZ2VOYW1lc3BhY2U7CiB9CiAKLVN0b3JhZ2VOYW1l
c3BhY2VJbXBsOjpTdG9yYWdlTmFtZXNwYWNlSW1wbChTdG9yYWdlVHlwZSBzdG9yYWdlVHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXRoLCB1bnNpZ25lZCBxdW90YSkKK1N0b3JhZ2VOYW1lc3BhY2VJbXBs
OjpTdG9yYWdlTmFtZXNwYWNlSW1wbChTdG9yYWdlVHlwZSBzdG9yYWdlVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXRoLCB1bnNpZ25lZCBxdW90YSwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAg
IDogbV9zdG9yYWdlVHlwZShzdG9yYWdlVHlwZSkKICAgICAsIG1fcGF0aChwYXRoLmlzb2xhdGVk
Q29weSgpKQogICAgICwgbV9zeW5jTWFuYWdlcigwKQogICAgICwgbV9xdW90YShxdW90YSkKICAg
ICAsIG1faXNTaHV0ZG93bihmYWxzZSkKKyAgICAsIG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKIHsK
ICAgICBpZiAoaXNQZXJzaXN0ZW50TG9jYWxTdG9yYWdlKG1fc3RvcmFnZVR5cGUpICYmICFtX3Bh
dGguaXNFbXB0eSgpKQogICAgICAgICBtX3N5bmNNYW5hZ2VyID0gU3RvcmFnZVN5bmNNYW5hZ2Vy
OjpjcmVhdGUobV9wYXRoKTsKQEAgLTk3LDkgKzkzLDkgQEAgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+
IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjb3B5KFBhZ2UqKQogewogICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CiAgICAgQVNTRVJUKCFtX2lzU2h1dGRvd24pOwotICAgIEFTU0VSVChtX3N0b3Jh
Z2VUeXBlID09IFN0b3JhZ2VUeXBlOjpTZXNzaW9uIHx8IG1fc3RvcmFnZVR5cGUgPT0gU3RvcmFn
ZVR5cGU6OkVwaGVtZXJhbExvY2FsKTsKKyAgICBBU1NFUlQobV9zdG9yYWdlVHlwZSA9PSBTdG9y
YWdlVHlwZTo6U2Vzc2lvbik7CiAKLSAgICBhdXRvIG5ld05hbWVzcGFjZSA9IGFkb3B0UmVmKCpu
ZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwobV9zdG9yYWdlVHlwZSwgbV9wYXRoLCBtX3F1b3RhKSk7
CisgICAgYXV0byBuZXdOYW1lc3BhY2UgPSBhZG9wdFJlZigqbmV3IFN0b3JhZ2VOYW1lc3BhY2VJ
bXBsKG1fc3RvcmFnZVR5cGUsIG1fcGF0aCwgbV9xdW90YSwgbV9zZXNzaW9uSUQpKTsKICAgICBm
b3IgKGF1dG8mIGl0ZXIgOiBtX3N0b3JhZ2VBcmVhTWFwKQogICAgICAgICBuZXdOYW1lc3BhY2Ut
Pm1fc3RvcmFnZUFyZWFNYXAuc2V0KGl0ZXIua2V5LCBpdGVyLnZhbHVlLT5jb3B5KCkpOwogCkBA
IC0xMjcsNyArMTIzLDcgQEAgdm9pZCBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y2xvc2UoKQogICAg
ICAgICByZXR1cm47CiAKICAgICAvLyBJZiB3ZSdyZSBub3QgYSBwZXJzaXN0ZW50IHN0b3JhZ2Us
IHdlIHNob3VsZG4ndCBuZWVkIHRvIGRvIGFueSB3b3JrIGhlcmUuCi0gICAgaWYgKG1fc3RvcmFn
ZVR5cGUgPT0gU3RvcmFnZVR5cGU6OlNlc3Npb24gfHwgbV9zdG9yYWdlVHlwZSA9PSBTdG9yYWdl
VHlwZTo6RXBoZW1lcmFsTG9jYWwpIHsKKyAgICBpZiAobV9zdG9yYWdlVHlwZSA9PSBTdG9yYWdl
VHlwZTo6U2Vzc2lvbikgewogICAgICAgICBBU1NFUlQoIW1fc3luY01hbmFnZXIpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQpAQCAtMTc2LDQgKzE3MiwxMSBAQCB2b2lkIFN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsOjpjbG9zZUlkbGVMb2NhbFN0b3JhZ2VEYXRhYmFzZXMoKQogICAgICAgICBpdC0+dmFs
dWUtPmNsb3NlRGF0YWJhc2VJZklkbGUoKTsKIH0KIAordm9pZCBTdG9yYWdlTmFtZXNwYWNlSW1w
bDo6c2V0U2Vzc2lvbklERm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCit7Cisg
ICAgbV9zZXNzaW9uSUQgPSBzZXNzaW9uSUQ7CisgICAgZm9yIChhdXRvIHN0b3JhZ2VBcmVhTWFw
IDogbV9zdG9yYWdlQXJlYU1hcC52YWx1ZXMoKSkKKyAgICAgICAgc3RvcmFnZUFyZWFNYXAtPnNl
c3Npb25DaGFuZ2VkKCFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9y
YWdlTmFtZXNwYWNlSW1wbC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VO
YW1lc3BhY2VJbXBsLmgKaW5kZXggYzg4ZjA2MWVmNWU1MGM5YjE2MzVlYzNmOGQ2YmEwZWQ3NzA1
Y2FhNy4uMTIwMzI1MmQ4NDY5ZDhiMzBlYTA0MDA3NWQ5NmY3MTU3ZmZlZWNmMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmgKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmgKQEAg
LTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvU3RvcmFnZUFyZWEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1N0b3Jh
Z2VOYW1lc3BhY2UuaD4KKyNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CkBAIC0zOCw5ICszOSw4IEBAIGNsYXNzIFN0b3JhZ2VBcmVhSW1wbDsKIAog
Y2xhc3MgU3RvcmFnZU5hbWVzcGFjZUltcGwgOiBwdWJsaWMgV2ViQ29yZTo6U3RvcmFnZU5hbWVz
cGFjZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3Jl
YXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEpOwotICAgIHN0YXRpYyBS
ZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVz
cGFjZSh1bnNpZ25lZCBxdW90YSk7Ci0gICAgc3RhdGljIFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1w
bD4gZ2V0T3JDcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoY29uc3QgU3RyaW5nJiBkYXRhYmFz
ZVBhdGgsIHVuc2lnbmVkIHF1b3RhKTsKKyAgICBzdGF0aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJ
bXBsPiBjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSwgUEFMOjpT
ZXNzaW9uSUQpOworICAgIHN0YXRpYyBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGdldE9yQ3Jl
YXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VQYXRoLCB1bnNp
Z25lZCBxdW90YSwgUEFMOjpTZXNzaW9uSUQpOwogICAgIHZpcnR1YWwgflN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsKCk7CiAKICAgICB2b2lkIGNsb3NlKCk7CkBAIC01NCw4ICs1NCwxMSBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzeW5jKCk7CiAgICAgdm9pZCBjbG9zZUlkbGVMb2NhbFN0b3JhZ2VEYXRhYmFz
ZXMoKTsKIAorICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG1fc2Vzc2lvbklEOyB9CisgICAgdm9pZCBzZXRTZXNzaW9uSURGb3JUZXN0aW5nKFBB
TDo6U2Vzc2lvbklEKSBvdmVycmlkZTsKKwogcHJpdmF0ZToKLSAgICBTdG9yYWdlTmFtZXNwYWNl
SW1wbChXZWJDb3JlOjpTdG9yYWdlVHlwZSwgY29uc3QgU3RyaW5nJiBwYXRoLCB1bnNpZ25lZCBx
dW90YSk7CisgICAgU3RvcmFnZU5hbWVzcGFjZUltcGwoV2ViQ29yZTo6U3RvcmFnZVR5cGUsIGNv
bnN0IFN0cmluZyYgcGF0aCwgdW5zaWduZWQgcXVvdGEsIFBBTDo6U2Vzc2lvbklEKTsKIAogICAg
IFJlZjxXZWJDb3JlOjpTdG9yYWdlQXJlYT4gc3RvcmFnZUFyZWEoY29uc3QgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhJikgb3ZlcnJpZGU7CiAgICAgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNv
cHkoV2ViQ29yZTo6UGFnZSogbmV3UGFnZSkgb3ZlcnJpZGU7CkBAIC03Myw2ICs3Niw4IEBAIHBy
aXZhdGU6CiAgICAgdW5zaWduZWQgbV9xdW90YTsKIAogICAgIGJvb2wgbV9pc1NodXRkb3duOwor
CisgICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvV2ViU3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9XZWJT
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCmluZGV4IDgzNjIwNTdmZmQ3NGY2ZDJkYTFhYTQ3
ZDc3ODAwNDkxYzlkYTExZGMuLmQwOTQ2OTEyNWZjMmY0ODY2NThhNzNhNmI5NTBiMjQzNGIwNzA3
OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9XZWJTdG9yYWdlTmFt
ZXNwYWNlUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9XZWJT
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAi
V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmgiCiAKICNpbmNsdWRlICJTdG9yYWdlTmFtZXNw
YWNlSW1wbC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgogI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTk2LDI2ICs5Nywy
MSBAQCB2b2lkIFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6c3luY0xvY2FsU3RvcmFnZSgp
CiAgICAgfQogfQogCi1SZWY8U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVBy
b3ZpZGVyOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQgcXVv
dGEpCitSZWY8U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpj
cmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShQYWdlJiBwYWdlLCB1bnNpZ25lZCBxdW90YSkK
IHsKLSAgICByZXR1cm4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVNlc3Npb25TdG9yYWdl
TmFtZXNwYWNlKHF1b3RhKTsKKyAgICByZXR1cm4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0
ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHF1b3RhLCBwYWdlLnNlc3Npb25JRCgpKTsKIH0KIAot
UmVmPFN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRl
RXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCBxdW90YSkKK1Jl
ZjxTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUxv
Y2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklEKQogewotICAgIHJldHVybiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlRXBoZW1lcmFs
TG9jYWxTdG9yYWdlTmFtZXNwYWNlKHF1b3RhKTsKKyAgICByZXR1cm4gU3RvcmFnZU5hbWVzcGFj
ZUltcGw6OmdldE9yQ3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKG1fbG9jYWxTdG9yYWdlRGF0
YWJhc2VQYXRoLCBxdW90YSwgc2Vzc2lvbklEKTsKIH0KIAotUmVmPFN0b3JhZ2VOYW1lc3BhY2U+
IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNl
KHVuc2lnbmVkIHF1b3RhKQotewotICAgIHJldHVybiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Z2V0
T3JDcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UobV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgs
IHF1b3RhKTsKLX0KLQotUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQ
cm92aWRlcjo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFNlY3VyaXR5T3Jp
Z2luJiwgdW5zaWduZWQgcXVvdGEpCitSZWY8U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoU2Vj
dXJpdHlPcmlnaW4mLCB1bnNpZ25lZCBxdW90YSwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQog
ewogICAgIC8vIEZJWE1FOiBBIHNtYXJ0ZXIgaW1wbGVtZW50YXRpb24gd291bGQgY3JlYXRlIGEg
c3BlY2lhbCBuYW1lc3BhY2UgdHlwZSBpbnN0ZWFkIG9mIGp1c3QgcGlnZ3ktYmFja2luZyBvZmYK
ICAgICAvLyBTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSBoZXJlLgotICAgIHJldHVybiBTdG9yYWdl
TmFtZXNwYWNlSW1wbDo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UocXVvdGEpOworICAg
IHJldHVybiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3Bh
Y2UocXVvdGEsIHNlc3Npb25JRCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaAppbmRleCBlNTg5
ZmVlN2E1YzZjOTFjZjk0YjdkMjNiNDg2MTQ4MTc5YjhjZmY2Li42ZGJjNWM5MDliZmI3OWUxYTM1
YjA4YjQ4OTUzOWEwZjNmNzBhNzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0
b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9TdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oCkBAIC01MCw5ICs1MCw4
IEBAIHByaXZhdGU6CiAgICAgZXhwbGljaXQgV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKGNv
bnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKTsKIAogICAgIFJlZjxXZWJDb3Jl
OjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShXZWJDb3Jl
OjpQYWdlJiwgdW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOwotICAgIFJlZjxXZWJDb3JlOjpTdG9y
YWdlTmFtZXNwYWNlPiBjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29y
ZTo6UGFnZSYsIHVuc2lnbmVkIHF1b3RhKSBvdmVycmlkZTsKLSAgICBSZWY8V2ViQ29yZTo6U3Rv
cmFnZU5hbWVzcGFjZT4gY3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkIHF1b3Rh
KSBvdmVycmlkZTsKLSAgICBSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlVHJh
bnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiwgdW5z
aWduZWQgcXVvdGEpIG92ZXJyaWRlOworICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNl
PiBjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEsIFBBTDo6U2Vzc2lv
bklEKSBvdmVycmlkZTsKKyAgICBSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRl
VHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiwg
dW5zaWduZWQgcXVvdGEsIFBBTDo6U2Vzc2lvbklEKSBvdmVycmlkZTsKIAogICAgIGNvbnN0IFN0
cmluZyBtX2xvY2FsU3RvcmFnZURhdGFiYXNlUGF0aDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggYmNjYzY0YjA3YTNkMDVmOWJlODQ1ZmQxNmE4
YTRlMTU4YjU2NDc1ZC4uOTU1NWQ0NmVhNzViN2Q4NWY5Y2Y0N2Y5YzY0ZWIyNTc0NDAwNjk2ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMjg5Myw2
ICsyODkzLDcgQEAgLSAodm9pZClfcHJlZmVyZW5jZXNDaGFuZ2VkOihXZWJQcmVmZXJlbmNlcyAq
KXByZWZlcmVuY2VzCiAgICAgc2V0dGluZ3Muc2V0TG9jYWxTdG9yYWdlRW5hYmxlZChbcHJlZmVy
ZW5jZXMgbG9jYWxTdG9yYWdlRW5hYmxlZF0pOwogCiAgICAgX3ByaXZhdGUtPnBhZ2UtPmVuYWJs
ZUxlZ2FjeVByaXZhdGVCcm93c2luZyhbcHJlZmVyZW5jZXMgcHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZF0pOworICAgIF9wcml2YXRlLT5ncm91cC0+c3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKCkuZW5h
YmxlTGVnYWN5UHJpdmF0ZUJyb3dzaW5nRm9yVGVzdGluZyhbcHJlZmVyZW5jZXMgcHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZF0pOwogICAgIHNldHRpbmdzLnNldFNhbnNTZXJpZkZvbnRGYW1pbHkoW3By
ZWZlcmVuY2VzIHNhbnNTZXJpZkZvbnRGYW1pbHldKTsKICAgICBzZXR0aW5ncy5zZXRTZXJpZkZv
bnRGYW1pbHkoW3ByZWZlcmVuY2VzIHNlcmlmRm9udEZhbWlseV0pOwogICAgIHNldHRpbmdzLnNl
dFN0YW5kYXJkRm9udEZhbWlseShbcHJlZmVyZW5jZXMgc3RhbmRhcmRGb250RmFtaWx5XSk7CmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMDRhZmM4
YjlkZmM2ZWZlNDg4YmE0NTI5ZTVkMWY2YzYxNzY3MWNlYS4uODdkYmM2OTNmYTZiMWE0M2RmYTAw
YTEzZTk3M2Q5MWI4ZjY4YWI1ZCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE5LTA4LTE0ICBTaWh1aSBMaXUgIDxz
aWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIFNvbWUgaW1wcm92ZW1lbnRzIG9uIHdlYiBz
dG9yYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDAzNzMKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKworICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTG9jYWxTdG9yYWdlUGVyc2lzdGVuY2Uu
bW06CisgICAgICAgIChURVNUKTogdXBkYXRlIGV4cGVjdGF0aW9uIGZvciBiZWhhdmlvciBjaGFu
Z2UuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdz
L1Rlc3RSdW5uZXIuaWRsOiBuZXcgU1BJIHRvIHN5bmNocm9ub3VzbHkgZmx1c2ggbG9jYWxTdG9y
YWdlIHRvIAorICAgICAgICBkYXRhYmFzZSBmaWxlLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5u
ZXI6OnN5bmNMb2NhbFN0b3JhZ2UpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvVGVzdFJ1bm5lci5oOgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0
Q29udHJvbGxlci5jcHA6IGNsZWFyIGxvY2FsIHN0b3JhZ2UgYmV0d2VlbiB0ZXN0IHJ1bnMgdG8g
bWFrZSBlYWNoIHRlc3QgaXNvbGF0ZWQuCisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpy
ZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKToKKyAgICAgICAgKFdUUjo6U3RvcmFnZVZvaWRD
YWxsYmFja0NvbnRleHQ6OlN0b3JhZ2VWb2lkQ2FsbGJhY2tDb250ZXh0KToKKyAgICAgICAgKFdU
Ujo6U3RvcmFnZVZvaWRDYWxsYmFjayk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpj
bGVhckluZGV4ZWREYXRhYmFzZXMpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Y2xl
YXJMb2NhbFN0b3JhZ2UpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6c3luY0xvY2Fs
U3RvcmFnZSk6CisgICAgICAgIChXVFI6OlJlbW92ZUFsbEluZGV4ZWREYXRhYmFzZXNDYWxsYmFj
a0NvbnRleHQ6OlJlbW92ZUFsbEluZGV4ZWREYXRhYmFzZXNDYWxsYmFja0NvbnRleHQpOiBEZWxl
dGVkLiBSZXBsYWNlZAorICAgICAgICB3aXRoIFN0b3JhZ2VWb2lkQ2FsbGJhY2tDb250ZXh0IGZv
ciBnZW5lcmFsIHVzYWdlLgorICAgICAgICAoV1RSOjpSZW1vdmVBbGxJbmRleGVkRGF0YWJhc2Vz
Q2FsbGJhY2spOiBEZWxldGVkLiBSZXBsYWNlZCB3aXRoIFN0b3JhZ2VWb2lkQ2FsbGJhY2suCisg
ICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpDbGVhckluZGV4ZWREYXRhYmFzZXMpOiBEZWxl
dGVkLiBVc2UgbG93ZXJjYXNlIGZvciBjb25zaXN0ZW50IHN0eWxlLgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaDoKKworICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvVGVzdEludm9jYXRpb24uY3BwOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlk
UmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6IGFkZCBoYW5kbGVy
IGZvciBuZXcgbWVzc2FnZSAKKyAgICAgICAgU3luY0xvY2FsU3RvcmFnZS4KKwogMjAxOS0wOC0x
NCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIExl
c3MgY29udGVuZGVkIE1ldGFBbGxvY2F0b3IKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvTG9jYWxTdG9yYWdlUGVyc2lzdGVuY2UubW0gYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0xvY2FsU3RvcmFnZVBlcnNpc3RlbmNlLm1t
CmluZGV4IDExNTYyYmI1NjkzNGY1NGQ2M2Y5NzdhN2JkZTA5ZDk0MzU0OWFiMjcuLjU5MmJjMjlk
MTE2NjczMWFhZjBkZjVlZjUyN2ZmYjc5OTdhNjQ5ZGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTG9jYWxTdG9yYWdlUGVyc2lzdGVuY2UubW0KKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Mb2NhbFN0b3JhZ2VQZXJz
aXN0ZW5jZS5tbQpAQCAtMTA0LDkgKzEwNCwxMCBAQCBURVNUKFdLV2ViVmlldywgTG9jYWxTdG9y
YWdlUHJvY2Vzc0NyYXNoZXMpCiAgICAgfV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZyZWFkeVRvQ29udGludWUpOwogCisgICAgLy8gSWYgbmV0d29yayBwcm9jZXNzIGNyYXNoZXMs
IHNlc3Npb25TdG9yYWdlIHdvdWxkIGJlIGxvc3QuCiAgICAgcmVhZHlUb0NvbnRpbnVlID0gZmFs
c2U7CiAgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAid2luZG93LnNlc3Npb25TdG9y
YWdlLmdldEl0ZW0oJ3Nlc3Npb24nKSIgY29tcGxldGlvbkhhbmRsZXI6XihpZCByZXN1bHQsIE5T
RXJyb3IgKikgewotICAgICAgICBFWFBFQ1RfVFJVRShbQCJzdG9yYWdlIiBpc0VxdWFsVG9TdHJp
bmc6cmVzdWx0XSk7CisgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNFcXVhbDpOU051bGwu
bnVsbF0pOwogICAgICAgICByZWFkeVRvQ29udGludWUgPSB0cnVlOwogICAgIH1dOwogICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVhZHlUb0NvbnRpbnVlKTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5p
ZGwgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RS
dW5uZXIuaWRsCmluZGV4IGFjZWVkNDBmMmIyNjZiYWYwMGRmNGZiNWM5NWY5MGVkY2RmMDg2MjIu
LjA3NTA5NjI4OTY3ZmZmY2YyMzMyYmRlZWMzMzRmMmRmNTkxZDQ3YTIgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5p
ZGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9U
ZXN0UnVubmVyLmlkbApAQCAtMTQyLDYgKzE0Miw3IEBAIGludGVyZmFjZSBUZXN0UnVubmVyIHsK
ICAgICB2b2lkIGNsZWFyQWxsRGF0YWJhc2VzKCk7CiAgICAgdm9pZCBzZXREYXRhYmFzZVF1b3Rh
KHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90YSk7CiAgICAgRE9NU3RyaW5nIHBhdGhUb0xvY2FsUmVz
b3VyY2UoRE9NU3RyaW5nIHVybCk7CisgICAgdm9pZCBzeW5jTG9jYWxTdG9yYWdlKCk7CiAKICAg
ICBhdHRyaWJ1dGUgZG91YmxlIGRhdGFiYXNlRGVmYXVsdFF1b3RhOwogICAgIGF0dHJpYnV0ZSBk
b3VibGUgZGF0YWJhc2VNYXhRdW90YTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCmluZGV4IDM3MjllMDVhOWI3YmM1OTEwYjA5
OTgwOWU4NmYwYTcyZmE1Y2ZjOTkuLjkwMTliYzQ3MTI2YmMzYTIwYTY4ZWM3OGYxYmE4ZmZmNzYy
NTM1ZGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
VGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9UZXN0UnVubmVyLmNwcApAQCAtMzQyLDYgKzM0MiwxMyBAQCB2b2lkIFRlc3RSdW5uZXI6OnNl
dERhdGFiYXNlUXVvdGEodWludDY0X3QgcXVvdGEpCiAgICAgcmV0dXJuIFdLQnVuZGxlU2V0RGF0
YWJhc2VRdW90YShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxlKCksIHF1b3RhKTsK
IH0KIAordm9pZCBUZXN0UnVubmVyOjpzeW5jTG9jYWxTdG9yYWdlKCkKK3sKKyAgICBXS1JldGFp
blB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKCJTeW5jTG9jYWxTdG9yYWdlIikpOworICAgIFdLUmV0YWluUHRyPFdLQm9v
bGVhblJlZj4gbWVzc2FnZUJvZHkgPSBhZG9wdFdLKFdLQm9vbGVhbkNyZWF0ZSh0cnVlKSk7Cisg
ICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0
b24oKS5idW5kbGUoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpLCBudWxs
cHRyKTsKK30KKwogdm9pZCBUZXN0UnVubmVyOjpjbGVhckFsbEFwcGxpY2F0aW9uQ2FjaGVzKCkK
IHsKICAgICBXS0J1bmRsZVBhZ2VDbGVhckFwcGxpY2F0aW9uQ2FjaGUoSW5qZWN0ZWRCdW5kbGU6
OnNpbmdsZXRvbigpLnBhZ2UoKS0+cGFnZSgpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKaW5kZXggY2FmZTc3NmNhODliNDVlOTc0
ZTRjYjc3ODI4Y2Q4OWRmZTY2NTQ5MC4uMTQ2ZTkxZjQ3ODViZmQwN2I2NjEwMzczYmEwN2I3ODky
ZDdkYWY2YiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9UZXN0UnVubmVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9UZXN0UnVubmVyLmgKQEAgLTE1OSw2ICsxNTksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVh
ckFsbERhdGFiYXNlcygpOwogICAgIHZvaWQgc2V0RGF0YWJhc2VRdW90YSh1aW50NjRfdCk7CiAg
ICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHBhdGhUb0xvY2FsUmVzb3VyY2UoSlNTdHJpbmdS
ZWYpOworICAgIHZvaWQgc3luY0xvY2FsU3RvcmFnZSgpOwogCiAgICAgLy8gQXBwbGljYXRpb24g
Q2FjaGUKICAgICB2b2lkIGNsZWFyQWxsQXBwbGljYXRpb25DYWNoZXMoKTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXggOGZlZDU5MjU1OGYxYzYwMjJlZDEz
OWUwYzhjODJlZWEyNGRhNTVhYS4uN2FmNDg3YmY2OTA4NjAwYWExMDYzMDM0MDc5YjdjNWVkOGY2
OTExMiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5j
cHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAgLTkz
OSw3ICs5MzksOCBAQCBib29sIFRlc3RDb250cm9sbGVyOjpyZXNldFN0YXRlVG9Db25zaXN0ZW50
VmFsdWVzKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zLCBSZQogICAgIGF1dG8gd2Vic2l0ZURh
dGFTdG9yZSA9IFdLQ29udGV4dEdldFdlYnNpdGVEYXRhU3RvcmUoVGVzdENvbnRyb2xsZXI6OnNp
bmdsZXRvbigpLmNvbnRleHQoKSk7CiAgICAgV0tXZWJzaXRlRGF0YVN0b3JlQ2xlYXJBbGxEZXZp
Y2VPcmllbnRhdGlvblBlcm1pc3Npb25zKHdlYnNpdGVEYXRhU3RvcmUpOwogCi0gICAgQ2xlYXJJ
bmRleGVkRGF0YWJhc2VzKCk7CisgICAgY2xlYXJJbmRleGVkRGF0YWJhc2VzKCk7CisgICAgY2xl
YXJMb2NhbFN0b3JhZ2UoKTsKIAogICAgIGNsZWFyU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMo
KTsKICAgICBjbGVhckRPTUNhY2hlcygpOwpAQCAtMzA2Myw4ICszMDY0LDggQEAgdm9pZCBUZXN0
Q29udHJvbGxlcjo6Y2xlYXJET01DYWNoZXMoKQogICAgIHJ1blVudGlsKGNvbnRleHQuZG9uZSwg
bm9UaW1lb3V0KTsKIH0KIAotc3RydWN0IFJlbW92ZUFsbEluZGV4ZWREYXRhYmFzZXNDYWxsYmFj
a0NvbnRleHQgewotICAgIGV4cGxpY2l0IFJlbW92ZUFsbEluZGV4ZWREYXRhYmFzZXNDYWxsYmFj
a0NvbnRleHQoVGVzdENvbnRyb2xsZXImIGNvbnRyb2xsZXIpCitzdHJ1Y3QgU3RvcmFnZVZvaWRD
YWxsYmFja0NvbnRleHQgeworICAgIGV4cGxpY2l0IFN0b3JhZ2VWb2lkQ2FsbGJhY2tDb250ZXh0
KFRlc3RDb250cm9sbGVyJiBjb250cm9sbGVyKQogICAgICAgICA6IHRlc3RDb250cm9sbGVyKGNv
bnRyb2xsZXIpCiAgICAgewogICAgIH0KQEAgLTMwNzMsMTggKzMwNzQsMzcgQEAgc3RydWN0IFJl
bW92ZUFsbEluZGV4ZWREYXRhYmFzZXNDYWxsYmFja0NvbnRleHQgewogICAgIGJvb2wgZG9uZSB7
IGZhbHNlIH07CiB9OwogCi1zdGF0aWMgdm9pZCBSZW1vdmVBbGxJbmRleGVkRGF0YWJhc2VzQ2Fs
bGJhY2sodm9pZCogdXNlckRhdGEpCitzdGF0aWMgdm9pZCBTdG9yYWdlVm9pZENhbGxiYWNrKHZv
aWQqIHVzZXJEYXRhKQogewotICAgIGF1dG8qIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxSZW1vdmVB
bGxJbmRleGVkRGF0YWJhc2VzQ2FsbGJhY2tDb250ZXh0Kj4odXNlckRhdGEpOworICAgIGF1dG8q
IGNvbnRleHQgPSBzdGF0aWNfY2FzdDxTdG9yYWdlVm9pZENhbGxiYWNrQ29udGV4dCo+KHVzZXJE
YXRhKTsKICAgICBjb250ZXh0LT5kb25lID0gdHJ1ZTsKICAgICBjb250ZXh0LT50ZXN0Q29udHJv
bGxlci5ub3RpZnlEb25lKCk7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OkNsZWFySW5kZXhl
ZERhdGFiYXNlcygpCit2b2lkIFRlc3RDb250cm9sbGVyOjpjbGVhckluZGV4ZWREYXRhYmFzZXMo
KQogewogICAgIGF1dG8gd2Vic2l0ZURhdGFTdG9yZSA9IFdLQ29udGV4dEdldFdlYnNpdGVEYXRh
U3RvcmUocGxhdGZvcm1Db250ZXh0KCkpOwotICAgIFJlbW92ZUFsbEluZGV4ZWREYXRhYmFzZXND
YWxsYmFja0NvbnRleHQgY29udGV4dCgqdGhpcyk7Ci0gICAgV0tXZWJzaXRlRGF0YVN0b3JlUmVt
b3ZlQWxsSW5kZXhlZERhdGFiYXNlcyh3ZWJzaXRlRGF0YVN0b3JlLCAmY29udGV4dCwgUmVtb3Zl
QWxsSW5kZXhlZERhdGFiYXNlc0NhbGxiYWNrKTsKKyAgICBTdG9yYWdlVm9pZENhbGxiYWNrQ29u
dGV4dCBjb250ZXh0KCp0aGlzKTsKKyAgICBXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVBbGxJbmRl
eGVkRGF0YWJhc2VzKHdlYnNpdGVEYXRhU3RvcmUsICZjb250ZXh0LCBTdG9yYWdlVm9pZENhbGxi
YWNrKTsKKyAgICBydW5VbnRpbChjb250ZXh0LmRvbmUsIG5vVGltZW91dCk7Cit9CisKK3ZvaWQg
VGVzdENvbnRyb2xsZXI6OmNsZWFyTG9jYWxTdG9yYWdlKCkKK3sKKyAgICBhdXRvIHdlYnNpdGVE
YXRhU3RvcmUgPSBXS0NvbnRleHRHZXRXZWJzaXRlRGF0YVN0b3JlKHBsYXRmb3JtQ29udGV4dCgp
KTsKKyAgICBTdG9yYWdlVm9pZENhbGxiYWNrQ29udGV4dCBjb250ZXh0KCp0aGlzKTsKKyAgICBX
S1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVMb2NhbFN0b3JhZ2Uod2Vic2l0ZURhdGFTdG9yZSwgJmNv
bnRleHQsIFN0b3JhZ2VWb2lkQ2FsbGJhY2spOworICAgIHJ1blVudGlsKGNvbnRleHQuZG9uZSwg
bm9UaW1lb3V0KTsKKworICAgIFN0b3JhZ2VWb2lkQ2FsbGJhY2tDb250ZXh0IGxlZ2FjeUNvbnRl
eHQoKnRoaXMpOworICAgIFdLQ29udGV4dENsZWFyTGVnYWN5UHJpdmF0ZUJyb3dzaW5nTG9jYWxT
dG9yYWdlKHBsYXRmb3JtQ29udGV4dCgpLCAmbGVnYWN5Q29udGV4dCwgU3RvcmFnZVZvaWRDYWxs
YmFjayk7CisgICAgcnVuVW50aWwobGVnYWN5Q29udGV4dC5kb25lLCBub1RpbWVvdXQpOworfQor
Cit2b2lkIFRlc3RDb250cm9sbGVyOjpzeW5jTG9jYWxTdG9yYWdlKCkKK3sKKyAgICBTdG9yYWdl
Vm9pZENhbGxiYWNrQ29udGV4dCBjb250ZXh0KCp0aGlzKTsKKyAgICBXS0NvbnRleHRTeW5jTG9j
YWxTdG9yYWdlKHBsYXRmb3JtQ29udGV4dCgpLCAmY29udGV4dCwgU3RvcmFnZVZvaWRDYWxsYmFj
ayk7CiAgICAgcnVuVW50aWwoY29udGV4dC5kb25lLCBub1RpbWVvdXQpOwogfQogCmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmggYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKaW5kZXggOGUxMTE5N2I5NzJiYzMzNmFkNmIy
MmVjMjYxNzBkMDcwYTMyZWFmOS4uMzQwMGY0Y2I1MWI4ODk1MjFkNDA5NjI5YmExMWJjMjQ2MzAx
ZjViNyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5o
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaApAQCAtMjYyLDcg
KzI2Miw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxz
KCk7CiAKLSAgICB2b2lkIENsZWFySW5kZXhlZERhdGFiYXNlcygpOworICAgIHZvaWQgY2xlYXJJ
bmRleGVkRGF0YWJhc2VzKCk7CisgICAgdm9pZCBjbGVhckxvY2FsU3RvcmFnZSgpOworICAgIHZv
aWQgc3luY0xvY2FsU3RvcmFnZSgpOwogCiAgICAgdm9pZCBjbGVhclNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25zKCk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdElu
dm9jYXRpb24uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAK
aW5kZXggNGQ1OWU4MzY3N2FhOTAyZmM1ODAzNDAzZTE5MmMwYjQwNzFmOWM4YS4uMmE5MTIzZWYx
NzM3MTE4ZDYzYTEyNTMxYmRjODUzYWEyY2I3MTM3YSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0SW52b2NhdGlvbi5jcHAKQEAgLTE2NTksNiArMTY1OSwxMSBAQCBXS1JldGFpblB0cjxX
S1R5cGVSZWY+IFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJv
bUluamVjdGVkQgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKKyAgICBpZiAoV0tT
dHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlN5bmNMb2NhbFN0b3JhZ2Ui
KSkgeworICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuc3luY0xvY2FsU3RvcmFn
ZSgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2NjI1YTg0YmIyYzlmMTUx
ZWJlNmUxZjAwMWEwZjgwZTU0OTIxMjE5Li4zYjQ4MmEzMjYxYzRmNWZlYWZlZTUxYjczM2NlMzVj
ZmZmNDE2Mjg1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTktMDgtMTQgIFNpaHVpIExpdSAg
PHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgU29tZSBpbXByb3ZlbWVudHMgb24gd2Vi
IHN0b3JhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwMDM3MworCisgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgorIAorICAgICAg
ICBNb2RpZnkgdGVzdHMgZm9yIGEgYmVoYXZpb3IgY2hhbmdlOiBzZXNzaW9uU3RvcmFnZSB3aWxs
IGJlIGxvc3Qgd2hlbiBuZXR3b3JrIHByb2Nlc3MgY3Jhc2hlcy4KKworICAgICAgICBGb3IgdGVz
dHMgd2hpY2ggdXNlIHNlc3Npb25TdG9yYWdlIHRvIHN0b3JlIGl0ZW1zLCBjcmFzaCBuZXR3b3Jr
IHByb2Nlc3MsIHRoZW4gcmVhZCBmcm9tIHNlc3Npb25TdG9yYWdlIGFuZCAKKyAgICAgICAgZXhw
ZWN0IGl0ZW1zIHRvIGJlIGluIHNlc3Npb25TdG9yYWdlLCByZXBsYWNlIHNlc3Npb25TdG9yYWdl
IHdpdGggbG9jYWxTdG9yYWdlLiBBbHNvLCB0byBtYWtlIHN1cmUgbG9jYWxTdG9yYWdlCisgICAg
ICAgIGlzIHN0b3JlZCBwZXJzaXN0ZW50bHkgYmVmb3JlIG5ldHdvcmsgcHJvY2VzcyBnZXRzIHRl
cm1pbmF0ZWQsIGFkb3B0IGEgbmV3bHkgaW50cm9kdWNlZCBTUEkgdG8gCisgICAgICAgIHN5bmNo
cm9ub3VzbHkgZmx1c2ggbG9jYWxTdG9yYWdlIGNvbnRlbnQgdG8gZGlzayBiZWZvcmUgdGVybWlu
YXRpbmcgbmV0d29yayBwcm9jZXNzLgorCisgICAgICAgICogcGxhdGZvcm0vaW9zLXNpbXVsYXRv
ci13azIvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL1Rlc3RF
eHBlY3RhdGlvbnM6CisgICAgICAgICogc3RvcmFnZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFnZS9w
cml2YXRlLWJyb3dzaW5nLWFmZmVjdHMtc3RvcmFnZS1leHBlY3RlZC50eHQ6CisgICAgICAgICog
c3RvcmFnZS9pbmRleGVkZGIvSURCT2JqZWN0LWxlYWsuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdl
L2luZGV4ZWRkYi9tb2Rlcm4vb3BlbmRhdGFiYXNlLWFmdGVyLXN0b3JhZ2UtY3Jhc2gtZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9vcGVuZGF0YWJhc2Ut
YWZ0ZXItc3RvcmFnZS1jcmFzaC5odG1sOgorCiAyMDE5LTA4LTE0ICBEZXZpbiBSb3Vzc28gIDxk
cm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBzdXBwb3J0IGBjb25z
b2xlLnNjcmVlbnNob3RgIHdpdGggZGF0YVVSTCBzdHJpbmdzCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yLXdrMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vaW9zLXNpbXVsYXRvci13azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA5
ZTg2NjZhY2VmMTY4MzgyNWQ3NTM4NjIxYzFjOWY4OTRlMGI1MTNmLi45NzQ5NzdhMjVmY2YxZmQ5
ZTU3N2UzM2Y4NWZhNWFmZDA0YmFmY2EyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9pb3Mtc2ltdWxhdG9yLXdrMi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2lvcy1zaW11bGF0b3Itd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTY2LDcgKzY2LDcg
QEAgaHR0cC93cHQvY2FjaGUtc3RvcmFnZS9jYWNoZS1wdXQta2V5cy5odHRwcy5hbnkud29ya2Vy
Lmh0bWwgWyBTbG93IF0KIGh0dHAvd3B0L2NhY2hlLXN0b3JhZ2UvYS1jYWNoZS1vcGVuLmh0dHBz
Lmh0bWwgWyBTbG93IF0KIGh0dHAvd3B0L2NhY2hlLXN0b3JhZ2UvY2FjaGUtcXVvdGEtYWRkLmFu
eS5odG1sIFsgU2xvdyBdCiAKLXdlYmtpdC5vcmcvYi8xOTYzNzYgWyBEZWJ1ZyBdIHN0b3JhZ2Uv
ZG9tc3RvcmFnZS9sb2NhbHN0b3JhZ2UvcHJpdmF0ZS1icm93c2luZy1hZmZlY3RzLXN0b3JhZ2Uu
aHRtbCBbIFBhc3MgRmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMTk2Mzc2IFsgRGVidWcgXSBzdG9y
YWdlL2RvbXN0b3JhZ2UvbG9jYWxzdG9yYWdlL3ByaXZhdGUtYnJvd3NpbmctYWZmZWN0cy1zdG9y
YWdlLmh0bWwgWyBQYXNzIF0KIAogd2Via2l0Lm9yZy9iLzE5NjQwMyBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL21lZGlhY2FwdHVyZS1yZWNvcmQvTWVkaWFSZWNvcmRlci1zdG9wLmh0
bWwgWyBQYXNzIEZhaWx1cmUgXQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rl
c3RFeHBlY3RhdGlvbnMKaW5kZXggNmE4MjcwZjdlOTlhMGFiNDRiNTQzOTIyMTQ0ODJiN2ZhNzU1
ZWY2MS4uZDIyZDc4N2Q4ODRhNTk2NDA0YjFkM2UwY2ZkMDE3M2YyMjRjNGE0OCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtOTIyLDcgKzky
Miw3IEBAIHdlYmtpdC5vcmcvYi8xOTQ4MjYgaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL2RvLW5vdC1ibG9jay10b3AtbGV2ZWwtbmF2CiAKIHdlYmtpdC5vcmcvYi8xOTQ5MTYgZmFz
dC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS12aWRlby1lbGVtZW50Lmh0bWwgWyBQYXNzIEZhaWx1
cmUgXQogCi13ZWJraXQub3JnL2IvMTk2Mzc2IHN0b3JhZ2UvZG9tc3RvcmFnZS9sb2NhbHN0b3Jh
Z2UvcHJpdmF0ZS1icm93c2luZy1hZmZlY3RzLXN0b3JhZ2UuaHRtbCBbIFBhc3MgRmFpbHVyZSBd
Cit3ZWJraXQub3JnL2IvMTk2Mzc2IHN0b3JhZ2UvZG9tc3RvcmFnZS9sb2NhbHN0b3JhZ2UvcHJp
dmF0ZS1icm93c2luZy1hZmZlY3RzLXN0b3JhZ2UuaHRtbCBbIFBhc3MgXQogCiB3ZWJraXQub3Jn
L2IvMTk2NDAwIGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay1nZXRTZXR0aW5ncy5o
dG1sIFsgUGFzcyBGYWlsdXJlIF0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9k
b21zdG9yYWdlL2xvY2Fsc3RvcmFnZS9wcml2YXRlLWJyb3dzaW5nLWFmZmVjdHMtc3RvcmFnZS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2RvbXN0b3JhZ2UvbG9jYWxzdG9yYWdl
L3ByaXZhdGUtYnJvd3NpbmctYWZmZWN0cy1zdG9yYWdlLWV4cGVjdGVkLnR4dAppbmRleCAyY2E5
NTU3NTAyN2ZhYjg5YWJlYjQ2N2IzODA1YzIwNjA1ZGZmYmQxLi5mOTg0MGRlYjUzMGJlMWMxNTVh
ZDhkZWY1YTU4YzgwZmM2NjFkMDI3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2Rv
bXN0b3JhZ2UvbG9jYWxzdG9yYWdlL3ByaXZhdGUtYnJvd3NpbmctYWZmZWN0cy1zdG9yYWdlLWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2RvbXN0b3JhZ2UvbG9jYWxzdG9y
YWdlL3ByaXZhdGUtYnJvd3NpbmctYWZmZWN0cy1zdG9yYWdlLWV4cGVjdGVkLnR4dApAQCAtOCw3
ICs4LDcgQEAgQUxFUlQ6IGxvY2FsU3RvcmFnZSdzIGxlbmd0aCBpczogMQogQUxFUlQ6IFRoZSBp
dGVtIGluIG5ldyB3aW5kb3cgc3RhcnRzIG91dCBhczogQ2hhbmdlZFZhbHVlCiBBTEVSVDogVGhl
IGl0ZW0gaW4gbmV3IHdpbmRvdyBpcyBub3c6IE5ld1dpbmRvd1ZhbHVlCiBBTEVSVDogQmFjayBp
biBwYXJlbnQgd2luZG93LCBsb2NhbFN0b3JhZ2UncyBsZW5ndGggaXM6IDEKLUFMRVJUOiBCYWNr
IGluIHBhcmVudCB3aW5kb3csIHRlc3RJdGVtIGlzOiBDaGFuZ2VkVmFsdWUKK0FMRVJUOiBCYWNr
IGluIHBhcmVudCB3aW5kb3csIHRlc3RJdGVtIGlzOiBOZXdXaW5kb3dWYWx1ZQogQUxFUlQ6IEZp
bmFsIHdpbmRvdywgbG9jYWxTdG9yYWdlJ3MgbGVuZ3RoIGlzOiAxCiBBTEVSVDogRmluYWwgd2lu
ZG93LCBpdGVtIGlzOiBQZXJzaXN0ZW50IGl0ZW0hCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL0lEQk9iamVjdC1sZWFrLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9JREJPYmplY3QtbGVhay5odG1sCmluZGV4IGUxOGI2OGI5MWFjN2Y2MTk1
YTFlMWUxMTFhZjRjYWQwM2I4NjNjNTcuLjZhYThhYjYxMDM4MjNiN2M5N2JmYTc3ZWY1NTZkODE5
YzlhYWEwY2MgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL0lEQk9i
amVjdC1sZWFrLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvSURCT2Jq
ZWN0LWxlYWsuaHRtbApAQCAtMTMsNyArMTMsNyBAQCBmdW5jdGlvbiB0ZXN0KCkgewogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKHNlc3Npb25TdG9yYWdlLmRvbmVGaXJzdExvYWQp
IHsKKyAgICBpZiAobG9jYWxTdG9yYWdlLmRvbmVGaXJzdExvYWQpIHsKICAgICAgICAgZ2MoKTsK
ICAgICAgICAgc2hvdWxkQmVFcXVhbFRvTnVtYmVyKCJpbnRlcm5hbHMubnVtYmVyT2ZJREJUcmFu
c2FjdGlvbnMoKSIsIDApOwogICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKQEAgLTIzLDE2ICsyMywy
MSBAQCBmdW5jdGlvbiB0ZXN0KCkgewogICAgIHZhciBkYm5hbWUgPSBzZXREQk5hbWVGcm9tUGF0
aCgpICsgRGF0ZSgpOwogICAgIHZhciByZXF1ZXN0ID0gIHdpbmRvdy5pbmRleGVkREIub3Blbihk
Ym5hbWUpOwogICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZXZ0KSB7Ci0g
ICAgICAgIHNlc3Npb25TdG9yYWdlLmRvbmVGaXJzdExvYWQgPSB0cnVlOworICAgICAgICBsb2Nh
bFN0b3JhZ2UuZG9uZUZpcnN0TG9hZCA9IHRydWU7CiAgICAgICAgIGlmICghd2luZG93LnRlc3RS
dW5uZXIgfHwgIXRlc3RSdW5uZXIudGVybWluYXRlTmV0d29ya1Byb2Nlc3MpIHsKICAgICAgICAg
ICAgIHRlc3RGYWlsZWQoJ1RoaXMgdGVzdCByZXF1aXJlcyBhY2Nlc3MgdG8gdGhlIFRlc3RSdW5u
ZXIgb2JqZWN0IGFuZCB0ZXJtaW5hdGVOZXR3b3JrUHJvY2VzcygpIGZ1bmN0aW9uJyk7CiAgICAg
ICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfSAK
KworICAgICAgICAvLyBNYWtlIHN1cmUgbG9jYWxTdG9yYWdlIGlzIGZsdXNoZWQgdG8gZGlzayBi
ZWZvcmUgY3Jhc2hpbmcgbmV0d29yayBwcm9jZXNzLgorICAgICAgICB0ZXN0UnVubmVyLnN5bmNM
b2NhbFN0b3JhZ2UoKTsKICAgICAgICAgdGVzdFJ1bm5lci50ZXJtaW5hdGVOZXR3b3JrUHJvY2Vz
cygpOwotICAgICAgICBzZXRUaW1lb3V0KCgoKT0+IHsKLSAgICAgICAgICAgIGxvY2F0aW9uLnJl
bG9hZCgpOwotICAgICAgICB9KSwgMCk7CisgICAgICAgIGV2dC50YXJnZXQucmVzdWx0Lm9uZXJy
b3IgPSBmdW5jdGlvbihlKSB7CisgICAgICAgICAgICBzZXRUaW1lb3V0KCgoKT0+IHsKKyAgICAg
ICAgICAgICAgICBsb2NhdGlvbi5yZWxvYWQoKTsKKyAgICAgICAgICAgIH0pLCAwKTsKKyAgICAg
ICAgfQogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvbW9kZXJuL29wZW5kYXRhYmFzZS1hZnRlci1zdG9yYWdlLWNyYXNoLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9vcGVuZGF0YWJhc2UtYWZ0ZXIt
c3RvcmFnZS1jcmFzaC1leHBlY3RlZC50eHQKaW5kZXggNDdiODcyN2E5Mzk1YjVkM2M0YTNkM2Yx
YTZhMGRlMWU4MTY1OTQ5Yi4uZjk5NzhhMDI0NGYxZDBhNjdiNGRjMWY1OGRkMjFjMWVkMTU4Y2Y0
YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL29wZW5k
YXRhYmFzZS1hZnRlci1zdG9yYWdlLWNyYXNoLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vb3BlbmRhdGFiYXNlLWFmdGVyLXN0b3JhZ2UtY3Jh
c2gtZXhwZWN0ZWQudHh0CkBAIC0xLDIgKzEsMiBAQAotUEFTUyBzZXNzaW9uU3RvcmFnZVtzdG9y
YWdlS2V5XSBpcyAiTWFkZSBpdCIKK1BBU1MgbG9jYWxTdG9yYWdlW3N0b3JhZ2VLZXldIGlzICJN
YWRlIGl0IgogU3VjY2Vzc2Z1bGx5IG9wZW5lZCBkYXRhYmFzZSB3aXRoIHZlcnNpb24gMy4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9vcGVuZGF0YWJh
c2UtYWZ0ZXItc3RvcmFnZS1jcmFzaC5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvbW9kZXJuL29wZW5kYXRhYmFzZS1hZnRlci1zdG9yYWdlLWNyYXNoLmh0bWwKaW5kZXggZDI0
NThmNmEyOThiMzQxMDdhNGI4ZDBlZjY3YmM2NDIzZDJkYTBkZi4uOWEwOTEyZWYxNWM3Yjg0N2U5
ZjNkOTAxMzNlMjA3YTJkMzExMjU4YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvbW9kZXJuL29wZW5kYXRhYmFzZS1hZnRlci1zdG9yYWdlLWNyYXNoLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL29wZW5kYXRhYmFzZS1hZnRl
ci1zdG9yYWdlLWNyYXNoLmh0bWwKQEAgLTIwLDMxICsyMCwzMSBAQCBmdW5jdGlvbiBjb250aW51
ZVRlc3QoKQogCXJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKGUpIHsKIAkJLy8gR29vZCwgd2Ug
cmVjZWl2ZWQgYW4gZXhwZWN0ZWQgZXJyb3IuCiAJCS8vIE5vdyByZWxvYWQgdG8gc2VlIGlmIGEg
bmV3IGRvY3VtZW50IGNvbm5lY3RzIHN1Y2Nlc3NmdWxseQotCQlpZiAoc2Vzc2lvblN0b3JhZ2Vb
c3RvcmFnZUtleV0pIHsKKwkJaWYgKGxvY2FsU3RvcmFnZVtzdG9yYWdlS2V5XSkgewogCQkJZG9j
dW1lbnQuYm9keS5pbm5lckhUTUwgPSAiUmVjZWl2ZWQgZXJyb3IgbW9yZSB0aGFuIG9uY2UgdW5l
eHBlY3RlZGx5LiBEYXRhYmFzZTogbmFtZSAiICsgZGJuYW1lICsgIiwgdmVyc2lvbiAyLiI7CiAJ
CQlpZiAod2luZG93LnRlc3RSdW5uZXIpCiAJCQkJdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAJ
CQlyZXR1cm47CiAJCX0KIAotCQlzZXNzaW9uU3RvcmFnZVtzdG9yYWdlS2V5XSA9ICJNYWRlIGl0
IjsKKwkJbG9jYWxTdG9yYWdlW3N0b3JhZ2VLZXldID0gIk1hZGUgaXQiOwogCQlsb2NhdGlvbi5y
ZWxvYWQoKTsKIAl9CiAKIAlyZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGUpIHsKLQkJZG9j
dW1lbnQuYm9keS5pbm5lckhUTUwgPSAiVW5leHBlY3RlZCB1cGdyYWRlbmVlZGVkIGFmdGVyIHN0
b3JhZ2UgcHJvY2VzcyB0ZXJtaW5hdGlvbi4gRGF0YWJhc2U6IG5hbWUgIiArIGRibmFtZSArICIs
IHZlcnNpb24gMi4gU2Vzc2lvblN0b3JhZ2UgdmFsdWU6ICIgKyBzZXNzaW9uU3RvcmFnZVtzdG9y
YWdlS2V5XSArICIuIjsKKwkJZG9jdW1lbnQuYm9keS5pbm5lckhUTUwgPSAiVW5leHBlY3RlZCB1
cGdyYWRlbmVlZGVkIGFmdGVyIHN0b3JhZ2UgcHJvY2VzcyB0ZXJtaW5hdGlvbi4gRGF0YWJhc2U6
IG5hbWUgIiArIGRibmFtZSArICIsIHZlcnNpb24gMi4gbG9jYWxTdG9yYWdlIHZhbHVlOiAiICsg
c2Vzc2lvblN0b3JhZ2Vbc3RvcmFnZUtleV0gKyAiLiI7CiAJCWlmICh3aW5kb3cudGVzdFJ1bm5l
cikKIAkJCXRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogCX0KIH0KIAotdmFyIHZlcnNpb25Ub09w
ZW4gPSBzZXNzaW9uU3RvcmFnZS5kb25lRmlyc3RMb2FkID8gMyA6IDE7Cit2YXIgdmVyc2lvblRv
T3BlbiA9IGxvY2FsU3RvcmFnZS5kb25lRmlyc3RMb2FkID8gMyA6IDE7CiB2YXIgcmVxdWVzdCA9
IHdpbmRvdy5pbmRleGVkREIub3BlbihkYm5hbWUsIHZlcnNpb25Ub09wZW4pOwogCiByZXF1ZXN0
Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGUpIHsKLQlpZiAoc2Vzc2lvblN0b3JhZ2UuZG9u
ZUZpcnN0TG9hZCkgeworCWlmIChsb2NhbFN0b3JhZ2UuZG9uZUZpcnN0TG9hZCkgewogCQlkb2N1
bWVudC5ib2R5LmlubmVySFRNTCA9ICJTdWNjZXNzZnVsbHkgb3BlbmVkIGRhdGFiYXNlIHdpdGgg
dmVyc2lvbiAiICsgdmVyc2lvblRvT3BlbiArICIuIjsKLQkJc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCdzZXNzaW9uU3RvcmFnZVtzdG9yYWdlS2V5XScsICdNYWRlIGl0Jyk7CisJCXNob3VsZEJlRXF1
YWxUb1N0cmluZygnbG9jYWxTdG9yYWdlW3N0b3JhZ2VLZXldJywgJ01hZGUgaXQnKTsKIAogCQlp
ZiAod2luZG93LnRlc3RSdW5uZXIpIHsKIAkJCXRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwpAQCAt
NTIsNyArNTIsNyBAQCByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGUpIHsKIAkJ
fQogCX0KIAotCXNlc3Npb25TdG9yYWdlLmRvbmVGaXJzdExvYWQgPSB0cnVlOworCWxvY2FsU3Rv
cmFnZS5kb25lRmlyc3RMb2FkID0gdHJ1ZTsKIAogCS8vIFNldCBhbiBlcnJvciBoYW5kbGVyIG9u
IHRoZSBkYXRhYmFzZSBjb25uZWN0aW9uIHNvIG9uY2UgdGhlIHN0b3JhZ2UgcHJvY2VzcyB0ZXJt
aW5hdGVzIHdlIGtub3cgdG8gY29udGludWUgdGhlIHRlc3QKIAllLnRhcmdldC5yZXN1bHQub25l
cnJvciA9IGZ1bmN0aW9uKGUpIHsKQEAgLTYxLDYgKzYxLDggQEAgcmVxdWVzdC5vbnVwZ3JhZGVu
ZWVkZWQgPSBmdW5jdGlvbihlKSB7CiAKIAlpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKIAkJdGVz
dFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisJCS8vIE1ha2Ugc3VyZSBsb2NhbFN0b3JhZ2UgaXMg
Zmx1c2hlZCB0byBkaXNrIGJlZm9yZSBjcmFzaGluZyBuZXR3b3JrIHByb2Nlc3MuCisJCXRlc3RS
dW5uZXIuc3luY0xvY2FsU3RvcmFnZSgpOwogCQl0ZXN0UnVubmVyLnRlcm1pbmF0ZU5ldHdvcmtQ
cm9jZXNzKCk7CiAJfQogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376379</attachid>
            <date>2019-08-15 07:55:01 -0700</date>
            <delta_ts>2019-08-15 09:05:37 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-200373-20190815075500.patch</filename>
            <type>text/plain</type>
            <size>253681</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4NzEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzY0ZmYzODZkMjExYTFh
Yjk3OTNlZDlkNGQxNjY4MzFkZWFjMzNjNS4uMzk4YWQ4MGI2NTA1ZDUyODJmYjlkY2ZlZmE0ZTZm
ZDA0YTAxNmQ2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDE5LTA4LTE1ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIFNvbWUgaW1wcm92ZW1lbnRz
IG9uIHdlYiBzdG9yYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDAzNzMKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKwor
ICAgICAgICBSZW1vdmUgc3RvcmFnZSB0eXBlIEVwaGVtZXJhbExvY2FsU3RvcmFnZSwgd2hpY2gg
aXMgdXNlZCBmb3IgbG9jYWxTdG9yYWdlIGluIGVwaGVtZXJhbCBzZXNzaW9uLCBhbmQgdXNlIAor
ICAgICAgICBMb2NhbFN0b3JhZ2UgaW5zdGVhZC4KKworICAgICAgICBBZGQgU2Vzc2lvbklEIHRv
IFN0b3JhZ2VOYW1lc3BhY2UgdG8gbWFrZSBTdG9yYWdlTmFtZXNwYWNlIHNlc3Npb24tc3BlY2lm
aWMuCisKKyAgICAgICAgTm8gbmV3IHRlc3QsIHVwZGF0aW5nIGV4aXN0aW5nIHRlc3RzIGZvciBu
ZXcgYmVoYXZpb3IuCisKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlTdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAg
IChXZWJDb3JlOjpFbXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlRXBoZW1lcmFs
TG9jYWxTdG9yYWdlTmFtZXNwYWNlKTogRGVsZXRlZC4KKworICAgICAgICAqIHBhZ2UvQ2hyb21l
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6Y3JlYXRlV2luZG93IGNvbnN0KTogZXBo
ZW1lcmFsIGxvY2FsU3RvcmFnZSBvZiBkaWZmZXJlbnQgd2luZG93cyB3aWxsIGNvbm5lY3QgdG8g
dGhlIHNhbWUgCisgICAgICAgIFN0b3JhZ2VBcmVhIGluIG5ldHdvcmsgcHJvY2Vzcywgc28gbm8g
bmVlZCB0byBjb3B5IGZyb20gcGFyZW50IHdpbmRvdyB0byBjaGlsZCB3aW5kb3cuCisKKyAgICAg
ICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OnBy
ZXdhcm1Mb2NhbFN0b3JhZ2VJZk5lY2Vzc2FyeSk6IGxvY2FsU3RvcmFnZSB3aWxsIGJlIHByZXdh
cm1lZCBpbiBuZXR3b3JrIHByb2Nlc3MgaW4gdGhlCisgICAgICAgIGluaXRpYWxpemF0aW9uIG9m
IFN0b3JhZ2VBcmVhTWFwLgorCisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Om1fYXBwbGljYXRpb25NYW5pZmVzdCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjp+
UGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzZXRTZXNzaW9uSUQpOgorICAgICAgICAo
V2ViQ29yZTo6UGFnZTo6ZXBoZW1lcmFsTG9jYWxTdG9yYWdlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlBhZ2U6OnNldEVwaGVtZXJhbExvY2FsU3RvcmFnZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpQYWdlOjpzZXRTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIpOiBEZWxldGVk
LgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyKToKKyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U3RvcmFnZTo6cHJld2FybSk6IERlbGV0ZWQuCisgICAgICAgICogc3Rv
cmFnZS9TdG9yYWdlLmg6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlQXJlYS5oOgorICAgICAg
ICAoV2ViQ29yZTo6U3RvcmFnZUFyZWE6OmNsb3NlRGF0YWJhc2VJZklkbGUpOgorICAgICAgICAo
V2ViQ29yZTo6U3RvcmFnZUFyZWE6OnByZXdhcm0pOiBEZWxldGVkLgorICAgICAgICAqIHN0b3Jh
Z2UvU3RvcmFnZU5hbWVzcGFjZS5oOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
cjo6flN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcik6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdl
TmFtZXNwYWNlUHJvdmlkZXI6OmxvY2FsU3RvcmFnZUFyZWEpOgorICAgICAgICAoV2ViQ29yZTo6
U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpsb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjp0cmFuc2llbnRMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVy
OjplbmFibGVMZWdhY3lQcml2YXRlQnJvd3NpbmdGb3JUZXN0aW5nKTogY2hhbmdlIFNlc3Npb25J
RCBvZiBzdG9yYWdlTmFtZXNwYWNlCisgICAgICAgIGFuZCB1cGRhdGUgZXZlcnkgU3RvcmFnZUFy
ZWEgaW4gdGhpcyBuYW1lc3BhY2UuCisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXI6OmFkZFBhZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyOjpyZW1vdmVQYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdG9yYWdl
L1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZVR5
cGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OmlzTG9jYWxTdG9yYWdlKToKKwogMjAxOS0wOC0xNSAg
VGhpYmF1bHQgU2F1bmllciAgPHRzYXVuaWVyQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dTdHJl
YW1lcl1bV2ViUlRDXTogb3BlbmgyNjQgZW5jb2RlciBiaXRyYXRlIGlzIGluIGJpdHMgcGVyIHNl
Y29uZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCA3MDlmNWMzNjI1MTQyODY4OTQ3M2M5OThiMzhmZGFhYmI1NGE2MGNk
Li4yNTRmY2VlODY1NDE2MzhhY2I3N2JhYTY1ZDAwOTM0ZjIxZGJkY2U3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDMwMyBAQAorMjAxOS0wOC0xNSAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNv
bT4KKworICAgICAgICBTb21lIGltcHJvdmVtZW50cyBvbiB3ZWIgc3RvcmFnZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwMzczCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAgICAgICAgRml4IHNvbWUgaXNzdWVzIGlu
IHdlYiBzdG9yYWdlIGFyY2hpdGVjdHVyZS4gRm9yIGV4YW1wbGUsIHNlc3Npb25TdG9yYWdlTmFt
ZVNwYWNlIGZvciB3ZWIgcGFnZSBpcyBwcmVwYXJlZCBhbmQgCisgICAgICAgIGRlc3Ryb3llZCBp
biB0aGUgbmV0d29yayBwcm9jZXNzIHdoZW4gdGhlIHBhZ2UgY29tZXMgYW5kIGdvZXMsIGV2ZW4g
dGhvdWdoIHRoZSBwYWdlIG1heSBub3QgdXNlIHNlc3Npb25TdG9yYWdlIAorICAgICAgICBhdCBh
bGwuIFRoZSBtZXNzYWdlcyBhYm91dCBwYWdlIHN0YXRlIHNlbnQgZnJvbSB3ZWIgcHJvY2VzcyB0
byBuZXR3b3JrIHByb2Nlc3MgY2FuIGJlIHdhc3RlLgorCisgICAgICAgIEhlcmUgYXJlIHNvbWUg
Z2VuZXJhbCBpZGVhcyBvZiB0aGlzIHBhdGNoOgorICAgICAgICAxLiBOZXR3b3JrIHByb2Nlc3Mg
b3ducyB0aGUgd2ViIHN0b3JhZ2UsIGFuZCB3ZWIgcHJvY2VzcyBrZWVwcyBhIHNtYWxsIGxvY2Fs
IGNvcHkgKGJhc2VkIG9uIHNlc3Npb24gYW5kIAorICAgICAgICBvcmlnaW5zIHRoYXQgYXJlIHZp
c2l0ZWQpLiBUaGVyZSBpcyBhIHZpcnR1YWwgY29ubmVjdGlvbiBmcm9tIHRoZSBsb2NhbCBjb3B5
IGluIHRoZSB3ZWIgcHJvY2VzcyB0byB0aGUgb3JpZ2luYWwKKyAgICAgICAgY29weSBpbiB0aGUg
bmV0d29yayBwcm9jZXNzLiBUaGUgY29ubmVjdGlvbiBpcyBjcmVhdGVkIGJ5IHdlYiBwcm9jZXNz
IHdoZW4gc29tZSBwYWdlIGFza3MgZm9yIHdlYiBzdG9yYWdlLgorICAgICAgICAyLiBJZiBjb25u
ZWN0aW9uIGlzIGxvc3QgYmVjYXVzZSBuZXR3b3JrIHByb2Nlc3MgaXMgZ29uZSwgc3RvcmFnZSBp
biBtZW1vcnkgd2lsbCBiZSBsb3N0LiBUaGUgbG9jYWwgY29weSBpbiB3ZWIKKyAgICAgICAgcHJv
Y2Vzc3Mgd2lsbCBiZSBkaXNjYXJkZWQuCisgICAgICAgIDMuIChTZXNzaW9uSUQsIFN0b3JhZ2VO
YW1lc3BhY2VJRCwgU2VjdXJpdHlPcmlnaW4pIGlzIHVzZWQgdG8gaWRlbnRpZnkgYSBzdG9yYWdl
IGFyZWEuIElmIHNlc3Npb24gaXMgY2hhbmdlZCBpbgorICAgICAgICB3ZWIgcHJvY2VzcyAobGlr
ZSBlbmFibGluZyBwcml2YXRlIGJyb3dzaW5nIGluIGxheW91dCB0ZXN0IG5vdyksIGEgcmUtY29u
bmVjdGlvbiB3aXRoIGRpZmZlcmVudCBzZXNzaW9uSUQgd291bGQgCisgICAgICAgIHN1ZmZpY2Ug
dG8gbG9hZCBhbm90aGVyIGNvcHkgb2Ygc3RvcmFnZS4KKyAgICAgICAgNC4gbG9jYWxTdG9yYWdl
IGluIGVwaGVtZXJhbCBzZXNzaW9uIGhhcyB0aGUgc2FtZSBiZWhhdmlvciBhcyBsb2NhbFN0b3Jh
Z2UgaW5zdGVhZCBvZiBzZXNzaW9uU3RvcmFnZSwgd2hpY2gKKyAgICAgICAgbWVhbnMgZGlmZmVy
ZW50IHBhZ2VzIGluIHRoZSBzYW1lIGVwaGVtZXJhbCBzZXNzaW9uIHNoYXJlIHRoZSBzYW1lIGxv
Y2FsU3RvcmFnZS4KKworICAgICAgICBBbHNvLCB0aGlzIHBhdGNoIGludHJvZHVjZXMgU3RvcmFn
ZU1hbmFnZXJTZXQgdG8gbmV0d29yayBwcm9jZXNzLiBJdCBoYW5kbGVzIHdlYiBzdG9yYWdlIHN0
dWZmLCBpbmNsdWRpbmcKKyAgICAgICAgcmVjZWl2aW5nIHN0b3JhZ2UgbWVzc2FnZXMgZnJvbSB3
ZWIgcHJvY2Vzcywgb24gb25lIGJhY2tncm91bmQgdGhyZWFkLiBQcmV2aW91c2x5IGVhY2ggc2Vz
c2lvbiBoYXMgaXRzIG93bgorICAgICAgICBTdG9yYWdlTWFuYWdlciBhbmQgZWFjaCBTdG9yYWdl
TWFuYWdlciBoYXMgaXRzIG93biBXb3JrUXVldWUuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAq
IERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3Vy
Y2VzLm1ha2U6CisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5jcHA6IHJlbW92ZSBtZXNzYWdlIGhhbmRsZXJzIHRoYXQgYXJlIG5vIGxvbmdl
ciBuZWVkZWQuIE5ldHdvcmsKKyAgICAgICAgcHJvY2VzcyBubyBsb25nZXIgbmVlZHMgdG8ga25v
dyBwYWdlIHN0YXRlcyBmcm9tIHdlYiBwcm9jZXNzLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6d2ViUGFnZVdhc0FkZGVkKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OndlYlBhZ2VXYXNS
ZW1vdmVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OndlYlByb2Nlc3NTZXNzaW9uQ2hhbmdlZCk6IERlbGV0ZWQuCisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5p
bjoKKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDogTmV0d29y
a1Byb2Nlc3MgdXNlcyBTdG9yYWdlTWFuYWdlclNldCBpbnN0ZWFkIG9mIFN0b3JhZ2VNYW5hZ2Vy
IGZyb20gCisgICAgICAgIGRpZmZlcmVudCBzZXNzaW9ucyB0byBkZWFsIHdpdGggd2ViIHN0b3Jh
Z2UuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpOZXR3b3JrUHJvY2Vzcyk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplTmV0d29ya1Byb2Nlc3Mp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MpOiBTdG9yYWdlTWFuYWdlclNldCBzdGFydHMgaGFuZGxpbmcgCisgICAg
ICAgIFN0b3JhZ2VNYW5hZ2VyU2V0IG1lc3NhZ2VzIGZyb20gdGhlIG5ldyBjb25uZWN0aW9uLgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6YWRkV2Vic2l0ZURhdGFTdG9yZSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZXN0cm95U2Vzc2lvbik6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpoYXNMb2NhbFN0b3JhZ2UpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFp
bnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6YWN0dWFsUHJlcGFyZVRvU3Vz
cGVuZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZXN1bWUpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c3luY0xvY2FsU3RvcmFnZSk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpjbGVhckxlZ2FjeVByaXZhdGVCcm93c2luZ0xvY2FsU3Rv
cmFnZSk6IGFkZGVkIGZvciBjbGVhcmluZyBpbi1tZW1vcnkgZXBoZW1lcmFsCisgICAgICAgIGxv
Y2FsU3RvcmFnZS4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmdldExvY2FsU3Rv
cmFnZU9yaWdpbkRldGFpbHMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y29u
bmVjdGlvblRvV2ViUHJvY2Vzc0Nsb3NlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzOjp3ZWJQYWdlV2FzQWRkZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzczo6d2ViUGFnZVdhc1JlbW92ZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6d2ViUHJvY2Vzc1dhc0Rpc2Nvbm5lY3RlZCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjp3ZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQpOiBE
ZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHA6IFN0b3JhZ2VNYW5hZ2VyIGlz
IG1vdmVkIG91dCBvZiBOZXR3b3JrU2Vzc2lvbi4gSXQgaXMgbm93IG1hbmFnZWQgYnkgCisgICAg
ICAgIFN0b3JhZ2VNYW5hZ2VyU2V0LgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6
TmV0d29ya1Nlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6fk5ldHdv
cmtTZXNzaW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6c3RvcmFnZU1hbmFnZXIpOiBEZWxldGVk
LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFt
ZXRlcnMuY3BwOiBjcmVhdGlvbiBwYXJhbWV0ZXJzIG9mIFN0b3JhZ2VNYW5hZ2VyIGlzIG1vdmVk
IG91dCBvZgorICAgICAgICBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy4KKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM6OnByaXZhdGVTZXNz
aW9uUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ3JlYXRpb25Q
YXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lv
bkNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5oOgorCisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkxvY2FsU3RvcmFnZURhdGFiYXNlOjp1cGRhdGVEYXRhYmFzZSk6IHJlbW92ZSBhbiBhc3Nl
cnRpb24gdGhhdCBpcyBubyBsb25nZXIgdHJ1ZSBhcyB3ZSBjYW4gZm9yY2UgYW4KKyAgICAgICAg
dXBkYXRlIHdpdGggc3luY0xvY2FsU3RvcmFnZSBub3cuCisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5oOiBtYWtlIHVwZGF0ZURhdGFiYXNl
IHB1YmxpYyBmb3Igc3luY0xvY2FsU3RvcmFnZS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNwcDogTG9jYWxTdG9yYWdl
RGF0YWJhc2VUcmFja2VyIGlzIGNyZWF0ZWQgb24gdGhlCisgICAgICAgIGJhY2tncm91bmQgdGhy
ZWFkIG5vdywgc28gaXQgZG9lcyBub3QgaG9sZCBXb3JrUXVldWUgdG8gZG8gdGhlIGZpbGUgb3Bl
cmF0aW9uLgorICAgICAgICAoV2ViS2l0OjpMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6TG9j
YWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyKToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxTdG9yYWdl
RGF0YWJhc2VUcmFja2VyOjp+TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlTmFtZXNw
YWNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TG9jYWxTdG9yYWdlTmFtZXNwYWNlOjpnZXRPckNy
ZWF0ZVN0b3JhZ2VBcmVhKToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxTdG9yYWdlTmFtZXNwYWNl
OjpjbG9uZVRvKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdl
L0xvY2FsU3RvcmFnZU5hbWVzcGFjZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0
b3JhZ2UvU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpTZXNz
aW9uU3RvcmFnZU5hbWVzcGFjZTo6Z2V0T3JDcmVhdGVTdG9yYWdlQXJlYSk6CisgICAgICAgIChX
ZWJLaXQ6OlNlc3Npb25TdG9yYWdlTmFtZXNwYWNlOjphZGRBbGxvd2VkQ29ubmVjdGlvbik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlNlc3Npb25TdG9yYWdlTmFtZXNwYWNlOjpyZW1vdmVB
bGxvd2VkQ29ubmVjdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvV2Vi
U3RvcmFnZS9TZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS5oOgorICAgICAgICAoV2ViS2l0OjpTZXNz
aW9uU3RvcmFnZU5hbWVzcGFjZTo6YWxsb3dlZENvbm5lY3Rpb25zIGNvbnN0KTogRGVsZXRlZC4K
KworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWEuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpnZW5lcmF0ZVN0b3JhZ2VBcmVhSWRlbnRpZmllcik6IGVhY2ggU3Rv
cmFnZUFyZWEgaGFzIGFuIGlkZW50aWZpZXIuIFN0b3JhZ2VBcmVhTWFwIGluIHdlYiBwcm9jZXNz
IHVzZXMKKyAgICAgICAgdGhpcyBpZGVudGlmaWVyIHRvIGluZGljYXRlIHdoaWNoIFN0b3JhZ2VB
cmVhIGl0IGlzIGNvbm5lY3RpbmcgdG8uCisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhOjpT
dG9yYWdlQXJlYSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhOjp+U3RvcmFnZUFyZWEp
OiBTdG9yYWdlQXJlYSBtYXkgc3RpbGwgaGF2ZSBsaXN0ZW5lcnMgYmVjYXVzZSBTdG9yYWdlQXJl
YSBzaG91bGQgYmUgCisgICAgICAgIGRlc3Ryb3llZCBieSByZXF1ZXN0cyBmcm9tIFVJIHByb2Nl
c3MsIGFuZCBsaXN0ZW5lcnMgYXJlIGNvbm5lY3Rpb25zIHRvIHdlYiBwcm9jZXNzc2VzLgorICAg
ICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYTo6YWRkTGlzdGVuZXIpOiBsb2FkIGxvY2FsU3RvcmFn
ZURhdGFiYXNlIGluIGFkdmFuY2UgaWYgdGhlcmUgaXMgc29tZSBjb25uZWN0aW9uIHRvIHRoaXMg
CisgICAgICAgIExvY2FsU3RvcmFnZSBhcmVhLgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJl
YTo6cmVtb3ZlTGlzdGVuZXIpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYTo6aGFzTGlz
dGVuZXIgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYTo6Y2xlYXIpOgorICAg
ICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYTo6b3BlbkRhdGFiYXNlQW5kSW1wb3J0SXRlbXNJZk5l
ZWRlZCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhOjpkaXNwYXRjaEV2ZW50
cyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhOjpzeW5jVG9EYXRhYmFzZSk6
CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhOjpzZXRJdGVtcyk6IERlbGV0ZWQuIFN0b3Ag
c3luY2luZyBmcm9tIHdlYiBwcm9jZXNzIHRvIG5ldHdvcmsgcHJvY2VzcyBhZnRlciBuZXR3b3Jr
IHByb2Nlc3MKKyAgICAgICAgaXMgcmVsYXVuY2hlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhLmg6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVh
OjppZGVudGlmaWVyKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWE6OnNldFdvcmtRdWV1
ZSk6CisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2Vy
LmNwcDogU3RvcmFnZU1hbmFnZXIgc2hvdWxkIGJlIGFjY2Vzc2VkIGJ5IG9ubHkgYmFja2dyb3Vu
ZCB0aHJlYWQgbm93LgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6U3RvcmFnZU1h
bmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6flN0b3JhZ2VNYW5hZ2Vy
KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdl
TmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmRlc3Ryb3lTZXNz
aW9uU3RvcmFnZU5hbWVzcGFjZSk6IHRoaXMgaXMgbm90IHVzZWQgbm93IGJ1dCBrZWVwIGl0IGZv
ciBmdXR1cmUgCisgICAgICAgIGltcHJvdmVtZW50IHRvIHJlbW92ZSBpbi1tZW1vcnkgc2Vzc2lv
blN0b3JhZ2UgaW4gbmV0d29yayBwcm9jZXNzIGlmIHdlIGtub3cgc29tZSB3ZWIgcGFnZSBpcyBn
b25lIGZvcmV2ZXIuCisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpjbG9uZVNlc3Np
b25TdG9yYWdlTmFtZXNwYWNlKTogcHJldmlvdXNseSBlYWNoIHBhZ2UgaGFkIGl0cyBvd24gZXBo
ZW1lcmFsIAorICAgICAgICBsb2NhbFN0b3JhZ2VOYW1lc3BhY2UgYW5kIG5vdyBhbGwgcGFnZXMg
aW4gdGhlIHNhbWUgc2Vzc2lvbiBzaGFyZSBvbmUgbG9jYWxTdG9yYWdlLCBzbyB3ZSBkb24ndCBu
ZWVkIHRvIGNsb25lCisgICAgICAgIGxvY2FsU3RvcmFnZU5hbWVzcGFjZS4KKyAgICAgICAgKFdl
YktpdDo6U3RvcmFnZU1hbmFnZXI6OmdldFNlc3Npb25TdG9yYWdlT3JpZ2lucyk6CisgICAgICAg
IChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVTZXNzaW9uU3RvcmFnZU9yaWdpbnMpOgor
ICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlU2Vzc2lvblN0b3JhZ2VFbnRy
aWVzRm9yT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpnZXRMb2Nh
bFN0b3JhZ2VPcmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmdldExv
Y2FsU3RvcmFnZU9yaWdpbkRldGFpbHMpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdl
cjo6ZGVsZXRlTG9jYWxTdG9yYWdlT3JpZ2luc01vZGlmaWVkU2luY2UpOgorICAgICAgICAoV2Vi
S2l0OjpTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlTG9jYWxTdG9yYWdlRW50cmllc0Zvck9yaWdpbnMp
OgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlTG9jYWxTdG9yYWdlQXJl
YSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVUcmFuc2llbnRMb2Nh
bFN0b3JhZ2VBcmVhKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmNyZWF0ZVNl
c3Npb25TdG9yYWdlQXJlYSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpnZXRP
ckNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VN
YW5hZ2VyOjpnZXRPckNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAg
ICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpnZXRPckNyZWF0ZVNlc3Npb25TdG9yYWdlTmFt
ZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmNsZWFyU3RvcmFnZU5h
bWVzcGFjZXMpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6YWRkQWxsb3dlZFNl
c3Npb25TdG9yYWdlTmFtZXNwYWNlQ29ubmVjdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OlN0b3JhZ2VNYW5hZ2VyOjpyZW1vdmVBbGxvd2VkU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VD
b25uZWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OnBy
b2Nlc3NEaWRDbG9zZUNvbm5lY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTdG9y
YWdlTWFuYWdlcjo6ZGVsZXRlTG9jYWxTdG9yYWdlRW50cmllc0Zvck9yaWdpbik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVMb2NhbFN0b3JhZ2VNYXAp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlVHJhbnNp
ZW50TG9jYWxTdG9yYWdlTWFwKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1h
bmFnZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTWFwKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6U3RvcmFnZU1hbmFnZXI6OmRlc3Ryb3lTdG9yYWdlTWFwKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OnByZXdhcm0pOiBEZWxldGVkLgorICAgICAgICAoV2Vi
S2l0OjpTdG9yYWdlTWFuYWdlcjo6Z2V0VmFsdWVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6U3RvcmFnZU1hbmFnZXI6OnNldEl0ZW0pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpT
dG9yYWdlTWFuYWdlcjo6c2V0SXRlbXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTdG9y
YWdlTWFuYWdlcjo6cmVtb3ZlSXRlbSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlN0b3Jh
Z2VNYW5hZ2VyOjpjbGVhcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5h
Z2VyOjp3YWl0VW50aWxUYXNrc0ZpbmlzaGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
U3RvcmFnZU1hbmFnZXI6OnN1c3BlbmQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTdG9y
YWdlTWFuYWdlcjo6cmVzdW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1h
bmFnZXI6OmZpbmRTdG9yYWdlQXJlYSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5oOgorICAgICAgICAoV2ViS2l0OjpT
dG9yYWdlTWFuYWdlcjo6d29ya1F1ZXVlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKCk6IERl
bGV0ZWQuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5h
Z2VyLm1lc3NhZ2VzLmluOiBSZW1vdmVkLiBNb3ZlZCB0byBTdG9yYWdlTWFuYWdlclNldC5tZXNz
YWdlcy5pbi4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1h
bmFnZXJTZXQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXJTZXQ6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpTdG9yYWdlTWFu
YWdlclNldCk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0Ojp+U3RvcmFnZU1h
bmFnZXJTZXQpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlclNldDo6YWRkKToKKyAg
ICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXJTZXQ6OnJlbW92ZSk6CisgICAgICAgIChXZWJL
aXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0Ojpjb250YWlucyk6CisgICAgICAgIChXZWJLaXQ6OlN0b3Jh
Z2VNYW5hZ2VyU2V0OjphZGRDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1h
bmFnZXJTZXQ6OnJlbW92ZUNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFu
YWdlclNldDo6d2FpdFVudGlsVGFza3NGaW5pc2hlZCk6CisgICAgICAgIChXZWJLaXQ6OlN0b3Jh
Z2VNYW5hZ2VyU2V0Ojp3YWl0VW50aWxTeW5jaW5nTG9jYWxTdG9yYWdlRmluaXNoZWQpOgorICAg
ICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlclNldDo6c3VzcGVuZCk6CisgICAgICAgIChXZWJL
aXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpyZXN1bWUpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdl
TWFuYWdlclNldDo6Z2V0U2Vzc2lvblN0b3JhZ2VPcmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6
U3RvcmFnZU1hbmFnZXJTZXQ6OmRlbGV0ZVNlc3Npb25TdG9yYWdlKToKKyAgICAgICAgKFdlYktp
dDo6U3RvcmFnZU1hbmFnZXJTZXQ6OmRlbGV0ZVNlc3Npb25TdG9yYWdlRm9yT3JpZ2lucyk6Cisg
ICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpnZXRMb2NhbFN0b3JhZ2VPcmlnaW5z
KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXJTZXQ6OmRlbGV0ZUxvY2FsU3RvcmFn
ZU1vZGlmaWVkU2luY2UpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlclNldDo6ZGVs
ZXRlTG9jYWxTdG9yYWdlRm9yT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5h
Z2VyU2V0OjpnZXRMb2NhbFN0b3JhZ2VPcmlnaW5EZXRhaWxzKToKKyAgICAgICAgKFdlYktpdDo6
U3RvcmFnZU1hbmFnZXJTZXQ6OmNvbm5lY3RUb0xvY2FsU3RvcmFnZUFyZWEpOgorICAgICAgICAo
V2ViS2l0OjpTdG9yYWdlTWFuYWdlclNldDo6Y29ubmVjdFRvVHJhbnNpZW50TG9jYWxTdG9yYWdl
QXJlYSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0Ojpjb25uZWN0VG9TZXNz
aW9uU3RvcmFnZUFyZWEpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlclNldDo6ZGlz
Y29ubmVjdEZyb21TdG9yYWdlQXJlYSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2Vy
U2V0OjpnZXRWYWx1ZXMpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlclNldDo6c2V0
SXRlbSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpyZW1vdmVJdGVtKToK
KyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXJTZXQ6OmNsZWFyKToKKyAgICAgICAgKFdl
YktpdDo6U3RvcmFnZU1hbmFnZXJTZXQ6OmNsb25lU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQuaDog
QWRkZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdl
clNldC5tZXNzYWdlcy5pbjogQWRkZWQuCisKKyAgICAgICAgKiBTaGFyZWQvV2Vic2l0ZURhdGFT
dG9yZVBhcmFtZXRlcnMuY3BwOiBjcmVhdGlvbiBwYXJhbWV0ZXJzIG9mIFN0b3JhZ2VNYW5hZ2Vy
IGFyZSBtb3ZlZCB0byAKKyAgICAgICAgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuCisgICAg
ICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAg
ICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM6OnByaXZhdGVTZXNzaW9u
UGFyYW1ldGVycyk6CisgICAgICAgICogU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJz
Lmg6CisgICAgICAgICogU291cmNlcy50eHQ6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mv
V0tDb250ZXh0LmNwcDogYWRkIFNQSSBmb3IgdGVzdHMuCisgICAgICAgIChXS0NvbnRleHRTeW5j
TG9jYWxTdG9yYWdlKToKKyAgICAgICAgKFdLQ29udGV4dENsZWFyTGVnYWN5UHJpdmF0ZUJyb3dz
aW5nTG9jYWxTdG9yYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0UHJp
dmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYu
Y3BwOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlTG9jYWxTdG9yYWdlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc1Bvb2w6OnN5bmNMb2NhbFN0b3JhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbDo6Y2xlYXJMZWdhY3lQcml2YXRlQnJvd3NpbmdMb2NhbFN0b3JhZ2UpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZTo6cGFyYW1ldGVycyk6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlLmNwcDogc2Vzc2lvbiBjaGFuZ2Ugb2Ygd2ViIHN0b3JhZ2UgaXMgZG9uZSB2aWEgCisgICAg
ICAgIFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciBpbnN0ZWFkIG9mIFdlYlByb2Nlc3Mgbm93
LgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6c2V0UHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDogd2ViIHByb2Nlc3Mg
bm8gbG9uZ2VyIHNlbmRzIG1lc3NzYWdlcyBhYm91dCBwYWdlIHN0YXRlIHRvIG5ldHdvcmsgcHJv
Y2Vzcy4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6Y3JlYXRlV2ViUGFnZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnJlbW92ZVdlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzOjplbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzOjpuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25DbG9zZWQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzdG9yYWdlQXJlYU1hcCBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3M6OmVuYWJsZVByaXZhdGVCcm93c2luZ0ZvclRlc3RpbmcpOiBE
ZWxldGVkLiBUaGlzIHdhcyB1c2VkIGZvciBjaGFuZ2luZyBzZXNzaW9uIHZpYSAKKyAgICAgICAg
V2ViUHJvY2Vzcy4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6U3RvcmFnZUFyZWFJbXBsOjpTdG9yYWdlQXJlYUltcGwpOgorICAgICAgICAoV2ViS2l0
OjpTdG9yYWdlQXJlYUltcGw6Omxlbmd0aCk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVh
SW1wbDo6a2V5KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFJbXBsOjppdGVtKToKKyAg
ICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFJbXBsOjpzZXRJdGVtKToKKyAgICAgICAgKFdlYktp
dDo6U3RvcmFnZUFyZWFJbXBsOjpyZW1vdmVJdGVtKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFn
ZUFyZWFJbXBsOjpjbGVhcik6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1wbDo6Y29u
dGFpbnMpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYUltcGw6OnN0b3JhZ2VUeXBlIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFJbXBsOjppbmNyZW1lbnRBY2Nlc3ND
b3VudCk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1wbDo6ZGVjcmVtZW50QWNjZXNz
Q291bnQpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYUltcGw6OnByZXdhcm0pOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYUltcGw6OnNlY3VyaXR5T3JpZ2luIGNv
bnN0KTogRGVsZXRlZC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdl
QXJlYUltcGwuaDogbWFrZSBTdG9yYWdlQXJlYUltcGwgaG9sZCBhIHdlYWsgcmVmZXJlbmNlIHRv
IFN0b3JhZ2VBcmVhTWFwIGFuZCAKKyAgICAgICAgU3RvcmFnZU5hbWVzcGFjZUltcGwgaG9sZCBh
IHN0cm9uZyByZWZlcmVuY2UuIEluIHRoaXMgd2F5IGxpZmVpbWUgb2YgbG9jYWxTdG9yYWdlIFN0
b3JhZ2VBcmVyYU1hcCBzdGF5cyBhbGlnbiAKKyAgICAgICAgd2l0aCBTdG9yYWdlTmFtZVNwYWNl
UHJvdmlkZXIgYW5kIFBhZ2UuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3Rv
cmFnZUFyZWFNYXAuY3BwOiBpZGVudGlmaWVyIG9mIFN0b3JhZ2VBcmVhTWFwIGlzIHRoZSBzYW1l
IGFzIGlkZW50aWZpZXIgb2YgCisgICAgICAgIFN0b3JhZ2VBcmVhIGl0IGNvbm5lY3RzIHRvLiBJ
ZiB0aGUgaWRlbnRpZmllciBpcyAwLCBpdCBtZWFucyB0aGUgU3RvcmFnZUFyZWFNYXAgaXMgZGlz
Y29ubmVjdGVkLgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6U3RvcmFnZUFyZWFN
YXApOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6flN0b3JhZ2VBcmVhTWFwKToK
KyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OnNldEl0ZW0pOgorICAgICAgICAoV2Vi
S2l0OjpTdG9yYWdlQXJlYU1hcDo6cmVtb3ZlSXRlbSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3Jh
Z2VBcmVhTWFwOjpjbGVhcik6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwOjpyZXNl
dFZhbHVlcyk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwOjpsb2FkVmFsdWVzSWZO
ZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6YXBwbHlDaGFuZ2UpOgor
ICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6ZGlzcGF0Y2hTdG9yYWdlRXZlbnQpOgor
ICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6ZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2
ZW50KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OmRpc3BhdGNoTG9jYWxTdG9y
YWdlRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6Y29ubmVjdCk6Cisg
ICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwOjpkaXNjb25uZWN0KToKKyAgICAgICAgKFdl
YktpdDo6Z2VuZXJhdGVTdG9yYWdlTWFwSUQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpT
dG9yYWdlQXJlYU1hcDo6cHJld2FybSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlN0b3Jh
Z2VBcmVhTWFwOjpkaWRHZXRWYWx1ZXMpOiBEZWxldGVkLiBUaGlzIGlzIHVzZWxlc3MgYXMgR2V0
VmFsdWVzIGlzIGEgc3luY2hyb25vdXMgb3BlcmF0aW9uLgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5oOgorICAgICAgICAoKTogRGVsZXRlZC4KKworICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5tZXNzYWdlcy5pbjog
dGhlcmUgYXJlIHR3byBzeW5jaHJvbm91cyBtZXNzYWdlcywgb25lIGZvciBjb25uZWN0aW9uIGFu
ZCAKKyAgICAgICAgb25lIGZvciBnZXR0aW5nIHZhbHVlcy4gV2UgbWF5IG1lcmdlIHRoZW0gaW50
byBvbmUgaW4gZnV0dXJlIGltcHJvdmVtZW50LgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViU3Rv
cmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VO
YW1lc3BhY2VJbXBsOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChX
ZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2Up
OgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlVHJhbnNpZW50
TG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVzcGFj
ZUltcGw6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5h
bWVzcGFjZUltcGw6OnN0b3JhZ2VBcmVhKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVz
cGFjZUltcGw6OmNvcHkpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6
c2V0U2Vzc2lvbklERm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOiBEZWxldGVkLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNy
ZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVRyYW5zaWVudExv
Y2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlN0b3JhZ2VOYW1lc3Bh
Y2VQcm92aWRlcjo6Y3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVBy
b3ZpZGVyLmg6CisKIDIwMTktMDgtMTQgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIG1fYmxvY2tSZWN0Rm9yVGV4dFNlbGVjdGlvbiAoYWxv
bmcgd2l0aCByZWxhdGVkIGNvZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCmluZGV4IGQ3YmZmY2JkMzdi
ZmUyMjcxNzA4YTYzMmEzMWY5NDdiZmJjM2MxMWYuLjY2ZTVmYTNhMmJjZDAwODRmZWUwODQzYTYz
NTYwNzU4ZWYxZjI1ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIw
MTktMDgtMTUgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgU29t
ZSBpbXByb3ZlbWVudHMgb24gd2ViIHN0b3JhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDM3MworCisgICAgICAgIFJldmlld2VkIGJ5IEdlb2Zm
cmV5IEdhcmVuLgorCisgICAgICAgIERvIHNvbWUgY2xlYW4tdXAgYW5kIGFkZCBzdXBwb3J0IGZv
ciBzZXNzaW9uIGNoYW5nZSBvZiB3ZWIgc3RvcmFnZSBpbiBsYXlvdXQgdGVzdHMuCisKKyAgICAg
ICAgKiBTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3Jh
Z2VBcmVhSW1wbDo6c2Vzc2lvbkNoYW5nZWQpOgorICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZUFy
ZWFJbXBsLmg6CisgICAgICAgICgpOiBEZWxldGVkLgorCisgICAgICAgICogU3RvcmFnZS9TdG9y
YWdlQXJlYVN5bmMuaDogbWFrZSBzdXJlIFN0b3JhZ2VBcmVhU3luYyBpcyBkZXN0cnVjdGVkIG9u
IHRoZSBtYWluIHRocmVhZCwgYXMgaXQgY2FuIGJlIAorICAgICAgICBkZXJlZmVyZW5jZWQgaW4g
U3RvcmFnZUFyZWFJbXBsOjpzZXNzaW9uQ2hhbmdlZCBhbmQgaXRzIGxhc3QgcmVmZXJlbmNlIGZv
ciBmaW5hbCBzeW5jIGNvdWxkIGJlIHJlbGVhc2VkIG9uIHRoZSAKKyAgICAgICAgYmFja2dyb3Vu
ZCB0aHJlYWQuCisKKyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcDog
cmVwbGFjZSBFcGhlbWVyYWxMb2NhbFN0b3JhZ2Ugd2l0aCBMb2NhbFN0b3JhZ2UsIGFuZCBzdG9y
ZSBTZXNzaW9uSUQgaW4gCisgICAgICAgIFN0b3JhZ2VOYW1lc3BhY2UuCisgICAgICAgIChXZWJL
aXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSk6
CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpnZXRPckNyZWF0ZUxvY2Fs
U3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBs
OjpTdG9yYWdlTmFtZXNwYWNlSW1wbCk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsOjpjb3B5KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUltcGw6OmNs
b3NlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUltcGw6OnNldFNlc3Npb25J
REZvclRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3Jl
YXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBT
dG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmg6CisgICAgICAgICogU3RvcmFnZS9XZWJTdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTdG9yYWdlTmFt
ZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVMb2NhbFN0b3JhZ2VO
YW1lc3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6
OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdl
TmFtZXNwYWNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3Bh
Y2VQcm92aWRlci5oOgorCiAyMDE5LTA4LTE0ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBw
bGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyNDg1MjYuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggMDJhMWNlN2JhNjhlYmRkMmU3ZmIzYWJmODRjM2Ri
NjhkNzQ4NWU2ZS4uYmExNjBjZGM0NmQ2MDljN2ZkODJiYzg1ZWY0MGQ4ZjdiMmI3OWU3YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE5LTA4LTE1ICBT
aWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIFNvbWUgaW1wcm92ZW1l
bnRzIG9uIHdlYiBzdG9yYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDAzNzMKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4K
KworICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBfcHJl
ZmVyZW5jZXNDaGFuZ2VkOl0pOiBub3RpZnkgc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyIGFib3V0
IHNlc3Npb24gY2hhbmdlLgorCiAyMDE5LTA4LTE0ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRA
YXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyNDg1MjYuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IGM0NTBjMDg3MGMwZGI5MDAy
YjkwNGM3YjZjYmNlNGM5NjkwMmM2ZGMuLjA0NTNkN2U2ZDllMzY1NjAyYWM5YWJkOTk5YjRlMmZh
YjEzMmFkYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC0zOTAs
MTggKzM5MCwxOSBAQCBjbGFzcyBFbXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciBmaW5hbCA6
IHB1YmxpYyBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgewogICAgICAgICBib29sIGNvbnRhaW5z
KGNvbnN0IFN0cmluZyYpIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIFN0b3JhZ2VU
eXBlIHN0b3JhZ2VUeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gU3RvcmFnZVR5cGU6OkxvY2Fs
OyB9CiAgICAgICAgIHNpemVfdCBtZW1vcnlCeXRlc1VzZWRCeUNhY2hlKCkgZmluYWwgeyByZXR1
cm4gMDsgfQotICAgICAgICBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2lu
KCkgY29uc3QgZmluYWwgeyBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2VjdXJpdHlPcmlnaW5EYXRh
PiBvcmlnaW47IHJldHVybiBvcmlnaW4uZ2V0KCk7IH0KICAgICB9OwogCiAgICAgc3RydWN0IEVt
cHR5U3RvcmFnZU5hbWVzcGFjZSBmaW5hbCA6IHB1YmxpYyBTdG9yYWdlTmFtZXNwYWNlIHsKICAg
ICAgICAgUmVmPFN0b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYShjb25zdCBTZWN1cml0eU9yaWdpbkRh
dGEmKSBmaW5hbCB7IHJldHVybiBhZG9wdFJlZigqbmV3IEVtcHR5U3RvcmFnZUFyZWEpOyB9CiAg
ICAgICAgIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjb3B5KFBhZ2UqKSBmaW5hbCB7IHJldHVybiBh
ZG9wdFJlZigqbmV3IEVtcHR5U3RvcmFnZU5hbWVzcGFjZSk7IH0KKyAgICAgICAgUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklEKCkgY29uc3QgeyByZXR1cm4gUEFMOjpTZXNzaW9uSUQ6OmVtcHR5U2Vz
c2lvbklEKCk7IH0KKyAgICAgICAgdm9pZCBzZXRTZXNzaW9uSURGb3JUZXN0aW5nKFBBTDo6U2Vz
c2lvbklEKSB7IH07CiAgICAgfTsKIAogICAgIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVT
ZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQpIGZpbmFsOwotICAgIFJlZjxT
dG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQpIGZp
bmFsOwotICAgIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UoUGFnZSYsIHVuc2lnbmVkKSBmaW5hbDsKLSAgICBSZWY8U3RvcmFnZU5hbWVz
cGFjZT4gY3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFNlY3VyaXR5T3JpZ2lu
JiwgdW5zaWduZWQpIGZpbmFsOworICAgIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVMb2Nh
bFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQsIFBBTDo6U2Vzc2lvbklEKSBmaW5hbDsKKyAgICBS
ZWY8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNl
KFNlY3VyaXR5T3JpZ2luJiwgdW5zaWduZWQsIFBBTDo6U2Vzc2lvbklEKSBmaW5hbDsKKwogfTsK
IAogY2xhc3MgRW1wdHlVc2VyQ29udGVudFByb3ZpZGVyIGZpbmFsIDogcHVibGljIFVzZXJDb250
ZW50UHJvdmlkZXIgewpAQCAtNTI1LDE3ICs1MjYsMTIgQEAgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+
IEVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVz
cGEKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBFbXB0eVN0b3JhZ2VOYW1lc3BhY2UpOwogfQog
Ci1SZWY8U3RvcmFnZU5hbWVzcGFjZT4gRW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNy
ZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCkKLXsKLSAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBFbXB0eVN0b3JhZ2VOYW1lc3BhY2UpOwotfQotCi1SZWY8U3RvcmFnZU5hbWVzcGFj
ZT4gRW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3Rv
cmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQpCitSZWY8U3RvcmFnZU5hbWVzcGFjZT4gRW1w
dHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1
bnNpZ25lZCwgUEFMOjpTZXNzaW9uSUQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRW1w
dHlTdG9yYWdlTmFtZXNwYWNlKTsKIH0KIAotUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IEVtcHR5U3Rv
cmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2UoU2VjdXJpdHlPcmlnaW4mLCB1bnNpZ25lZCkKK1JlZjxTdG9yYWdlTmFtZXNwYWNlPiBFbXB0
eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFt
ZXNwYWNlKFNlY3VyaXR5T3JpZ2luJiwgdW5zaWduZWQsIFBBTDo6U2Vzc2lvbklEKQogewogICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IEVtcHR5U3RvcmFnZU5hbWVzcGFjZSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0Nocm9tZS5jcHAKaW5kZXggOTc1ODMyOWJhOTA5Y2Q5MTNjYWI0Njg1ZDcxYWU5ZGE0ZmMzNWNh
Ni4uNzNmZWUwN2Q5YTE1NDkyNWE1MWE2N2UyNGM1MzUxOWUxMzcyNjcwZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q2hyb21lLmNwcApAQCAtMTg5LDggKzE4OSw2IEBAIFBhZ2UqIENocm9tZTo6Y3JlYXRlV2luZG93
KEZyYW1lJiBmcmFtZSwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QKIAog
ICAgIGlmIChhdXRvKiBvbGRTZXNzaW9uU3RvcmFnZSA9IG1fcGFnZS5zZXNzaW9uU3RvcmFnZShm
YWxzZSkpCiAgICAgICAgIG5ld1BhZ2UtPnNldFNlc3Npb25TdG9yYWdlKG9sZFNlc3Npb25TdG9y
YWdlLT5jb3B5KG5ld1BhZ2UpKTsKLSAgICBpZiAoYXV0byogb2xkRXBoZW1lcmFsTG9jYWxTdG9y
YWdlID0gbV9wYWdlLmVwaGVtZXJhbExvY2FsU3RvcmFnZShmYWxzZSkpCi0gICAgICAgIG5ld1Bh
Z2UtPnNldEVwaGVtZXJhbExvY2FsU3RvcmFnZShvbGRFcGhlbWVyYWxMb2NhbFN0b3JhZ2UtPmNv
cHkobmV3UGFnZSkpOwogCiAgICAgcmV0dXJuIG5ld1BhZ2U7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdp
bmRvdy5jcHAKaW5kZXggMTdjYmE1ZTRmZjRlMmI1YmM4ODgxYTI3MGE0MzhjZDhhNTQzNTY3Mi4u
MzA3NGIxOGVlMzZlNDEwNjBkYzIyZTlhNDNkNTE4OGVkNDI4M2JjNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RE9NV2luZG93LmNwcApAQCAtNDQyLDggKzQ0Miw3IEBAIHZvaWQgRE9NV2luZG93OjpwcmV3YXJt
TG9jYWxTdG9yYWdlSWZOZWNlc3NhcnkoKQogICAgIGlmICghbG9jYWxTdG9yYWdlKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBpZiAobG9jYWxTdG9yYWdlLT5wcmV3YXJtKCkpCi0gICAgICAgIHBh
Z2UtPm1haW5GcmFtZSgpLmRpZFByZXdhcm1Mb2NhbFN0b3JhZ2UoKTsKKyAgICBwYWdlLT5tYWlu
RnJhbWUoKS5kaWRQcmV3YXJtTG9jYWxTdG9yYWdlKCk7CiB9CiAKIERPTVdpbmRvdzo6fkRPTVdp
bmRvdygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCA0ZDRhNDljNzMxYTRjYWY0NmVkZTYxMTU3N2Ni
MzllNmJmZmYwYTIyLi4zOTVkMmYwMTIzM2NiOTg5ZTdlZjU1NWNjNzE4YmU5NDg5NjcxMmQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTI4OSw3ICsyODksNiBAQCBQYWdlOjpQYWdlKFBhZ2VDb25m
aWd1cmF0aW9uJiYgcGFnZUNvbmZpZ3VyYXRpb24pCiAgICAgdXBkYXRlVGltZXJUaHJvdHRsaW5n
U3RhdGUoKTsKIAogICAgIG1fcGx1Z2luSW5mb1Byb3ZpZGVyLT5hZGRQYWdlKCp0aGlzKTsKLSAg
ICBtX3N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci0+YWRkUGFnZSgqdGhpcyk7CiAgICAgbV91c2Vy
Q29udGVudFByb3ZpZGVyLT5hZGRQYWdlKCp0aGlzKTsKICAgICBtX3Zpc2l0ZWRMaW5rU3RvcmUt
PmFkZFBhZ2UoKnRoaXMpOwogCkBAIC0zNjcsNyArMzY2LDYgQEAgUGFnZTo6flBhZ2UoKQogI2Vu
ZGlmCiAKICAgICBtX3BsdWdpbkluZm9Qcm92aWRlci0+cmVtb3ZlUGFnZSgqdGhpcyk7Ci0gICAg
bV9zdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXItPnJlbW92ZVBhZ2UoKnRoaXMpOwogICAgIG1fdXNl
ckNvbnRlbnRQcm92aWRlci0+cmVtb3ZlUGFnZSgqdGhpcyk7CiAgICAgbV92aXNpdGVkTGlua1N0
b3JlLT5yZW1vdmVQYWdlKCp0aGlzKTsKIH0KQEAgLTE1MTAsMTkgKzE1MDgsNiBAQCB2b2lkIFBh
Z2U6OnNldFNlc3Npb25TdG9yYWdlKFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiYmIG5ld1N0b3Jh
Z2UpCiAgICAgbV9zZXNzaW9uU3RvcmFnZSA9IFdURk1vdmUobmV3U3RvcmFnZSk7CiB9CiAKLVN0
b3JhZ2VOYW1lc3BhY2UqIFBhZ2U6OmVwaGVtZXJhbExvY2FsU3RvcmFnZShib29sIG9wdGlvbmFs
Q3JlYXRlKQotewotICAgIGlmICghbV9lcGhlbWVyYWxMb2NhbFN0b3JhZ2UgJiYgb3B0aW9uYWxD
cmVhdGUpCi0gICAgICAgIG1fZXBoZW1lcmFsTG9jYWxTdG9yYWdlID0gbV9zdG9yYWdlTmFtZXNw
YWNlUHJvdmlkZXItPmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZSgqdGhpcywg
bV9zZXR0aW5ncy0+c2Vzc2lvblN0b3JhZ2VRdW90YSgpKTsKLQotICAgIHJldHVybiBtX2VwaGVt
ZXJhbExvY2FsU3RvcmFnZS5nZXQoKTsKLX0KLQotdm9pZCBQYWdlOjpzZXRFcGhlbWVyYWxMb2Nh
bFN0b3JhZ2UoUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+JiYgbmV3U3RvcmFnZSkKLXsKLSAgICBt
X2VwaGVtZXJhbExvY2FsU3RvcmFnZSA9IFdURk1vdmUobmV3U3RvcmFnZSk7Ci19Ci0KIGJvb2wg
UGFnZTo6aGFzQ3VzdG9tSFRNTFRva2VuaXplclRpbWVEZWxheSgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIG1fc2V0dGluZ3MtPm1heFBhcnNlRHVyYXRpb24oKSAhPSAtMTsKQEAgLTI0NzAsMTUgKzI0
NTUsNiBAQCB2b2lkIFBhZ2U6OnNldFVzZXJDb250ZW50UHJvdmlkZXIoUmVmPFVzZXJDb250ZW50
UHJvdmlkZXI+JiYgdXNlckNvbnRlbnRQcm92aWRlcgogICAgIGludmFsaWRhdGVJbmplY3RlZFN0
eWxlU2hlZXRDYWNoZUluQWxsRnJhbWVzKCk7CiB9CiAKLXZvaWQgUGFnZTo6c2V0U3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyKFJlZjxTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI+JiYgc3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyKQotewotICAgIG1fc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLT5yZW1v
dmVQYWdlKCp0aGlzKTsKLSAgICBtX3N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciA9IFdURk1vdmUo
c3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKTsKLSAgICBtX3N0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
ci0+YWRkUGFnZSgqdGhpcyk7Ci0KLSAgICAvLyBUaGlzIG5lZWRzIHRvIHJlc2V0IGFsbCB0aGUg
bG9jYWwgc3RvcmFnZSBuYW1lc3BhY2VzIG9mIGFsbCB0aGUgcGFnZXMuCi19Ci0KIFZpc2l0ZWRM
aW5rU3RvcmUmIFBhZ2U6OnZpc2l0ZWRMaW5rU3RvcmUoKQogewogICAgIHJldHVybiBtX3Zpc2l0
ZWRMaW5rU3RvcmU7CkBAIC0yNTA3LDYgKzI0ODMsOSBAQCB2b2lkIFBhZ2U6OnNldFNlc3Npb25J
RChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAgICAgIG1faWRiQ29ubmVjdGlvblRvU2Vy
dmVyID0gbnVsbHB0cjsKICNlbmRpZgogCisgICAgaWYgKHNlc3Npb25JRCAhPSBtX3Nlc3Npb25J
RCAmJiBtX3Nlc3Npb25TdG9yYWdlKQorICAgICAgICBtX3Nlc3Npb25TdG9yYWdlLT5zZXRTZXNz
aW9uSURGb3JUZXN0aW5nKHNlc3Npb25JRCk7CisKICAgICBib29sIHByaXZhdGVCcm93c2luZ1N0
YXRlQ2hhbmdlZCA9IChzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSAhPSBtX3Nlc3Npb25JRC5pc0Vw
aGVtZXJhbCgpKTsKIAogICAgIG1fc2Vzc2lvbklEID0gc2Vzc2lvbklEOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApp
bmRleCBjNDQwMjM0NDNjODU2ZGEyMmIwZTQxOWY4ZmM1ZjI2NTJmODYyZmU3Li43Yzg2NTAyMzEw
ZjExZGQzYWEwYzlkNjE2OWUzODU4ZTkzMmVhOTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtNTA3LDkg
KzUwNyw2IEBAIHB1YmxpYzoKICAgICBTdG9yYWdlTmFtZXNwYWNlKiBzZXNzaW9uU3RvcmFnZShi
b29sIG9wdGlvbmFsQ3JlYXRlID0gdHJ1ZSk7CiAgICAgdm9pZCBzZXRTZXNzaW9uU3RvcmFnZShS
ZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4mJik7CiAKLSAgICBTdG9yYWdlTmFtZXNwYWNlKiBlcGhl
bWVyYWxMb2NhbFN0b3JhZ2UoYm9vbCBvcHRpb25hbENyZWF0ZSA9IHRydWUpOwotICAgIHZvaWQg
c2V0RXBoZW1lcmFsTG9jYWxTdG9yYWdlKFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiYmKTsKLQog
ICAgIGJvb2wgaGFzQ3VzdG9tSFRNTFRva2VuaXplclRpbWVEZWxheSgpIGNvbnN0OwogICAgIGRv
dWJsZSBjdXN0b21IVE1MVG9rZW5pemVyVGltZURlbGF5KCkgY29uc3Q7CiAKQEAgLTU5OSw3ICs1
OTYsNiBAQCBwdWJsaWM6CiAgICAgQ29va2llSmFyJiBjb29raWVKYXIoKSB7IHJldHVybiBtX2Nv
b2tpZUphci5nZXQoKTsgfQogCiAgICAgU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyJiBzdG9yYWdl
TmFtZXNwYWNlUHJvdmlkZXIoKSB7IHJldHVybiBtX3N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5n
ZXQoKTsgfQotICAgIHZvaWQgc2V0U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKFJlZjxTdG9yYWdl
TmFtZXNwYWNlUHJvdmlkZXI+JiYpOwogCiAgICAgUGx1Z2luSW5mb1Byb3ZpZGVyJiBwbHVnaW5J
bmZvUHJvdmlkZXIoKTsKIApAQCAtODc3LDcgKzg3Myw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBt
X2NhblN0YXJ0TWVkaWEgeyB0cnVlIH07CiAKICAgICBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4g
bV9zZXNzaW9uU3RvcmFnZTsKLSAgICBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gbV9lcGhlbWVy
YWxMb2NhbFN0b3JhZ2U7CiAKICAgICBUaW1lclRocm90dGxpbmdTdGF0ZSBtX3RpbWVyVGhyb3R0
bGluZ1N0YXRlIHsgVGltZXJUaHJvdHRsaW5nU3RhdGU6OkRpc2FibGVkIH07CiAgICAgTW9ub3Rv
bmljVGltZSBtX3RpbWVyVGhyb3R0bGluZ1N0YXRlTGFzdENoYW5nZWRUaW1lOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvU3RvcmFnZS5jcHAKaW5kZXggOTE5N2I2MGU3ZTZhMTU1YzQ0NjhkNTI5NGZhYjI1MGM4
Njc5ODdmZi4uNDdkYmIxN2Q5YWU2ZDI2OWMxNDcwM2ExYTYyYTQ5MmVlNjZkZjQxNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL1N0b3JhZ2UuY3BwCkBAIC05NywxMSArOTcsNiBAQCBFeGNlcHRpb25Pcjx2
b2lkPiBTdG9yYWdlOjpyZW1vdmVJdGVtKGNvbnN0IFN0cmluZyYga2V5KQogICAgIHJldHVybiB7
IH07CiB9CiAKLWJvb2wgU3RvcmFnZTo6cHJld2FybSgpCi17Ci0gICAgcmV0dXJuIG1fc3RvcmFn
ZUFyZWEtPnByZXdhcm0oKTsKLX0KLQogRXhjZXB0aW9uT3I8dm9pZD4gU3RvcmFnZTo6Y2xlYXIo
KQogewogICAgIGF1dG8qIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9y
YWdlLmgKaW5kZXggNTIxNWY0N2MzNzdmZjc1NjRkYWExZTQ2ZWVmNzk0NGQzMDg1ZjYxMS4uMjhh
YTlhYjE0ZTFiMjJhY2M1YmM1YjRmNmUxYzg0YzFhOTc0ZjY2MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9T
dG9yYWdlLmgKQEAgLTQ2LDcgKzQ2LDYgQEAgcHVibGljOgogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+
IHJlbW92ZUl0ZW0oY29uc3QgU3RyaW5nJiBrZXkpOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGNs
ZWFyKCk7CiAgICAgYm9vbCBjb250YWlucyhjb25zdCBTdHJpbmcmIGtleSkgY29uc3Q7Ci0gICAg
Ym9vbCBwcmV3YXJtKCk7CiAKICAgICAvLyBCaW5kaW5ncyBzdXBwb3J0IGZ1bmN0aW9ucy4KICAg
ICBib29sIGlzU3VwcG9ydGVkUHJvcGVydHlOYW1lKGNvbnN0IFN0cmluZyYpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYS5oIGIvU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYS5oCmluZGV4IGYzOWNjZDdlNmRhY2RmZjU2YWU3ZGY2
NjBkZDk3YjVmZjUyNjQ2ZDQuLjVhOWZmZmY5YTYyNjA4Nzg1MDdlZDkxZDcyNTJmNjRmZTFmYjRi
M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWEuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhLmgKQEAgLTU4LDkgKzU4LDYgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBpbmNyZW1lbnRBY2Nlc3NDb3VudCgpIHsgfQogICAg
IHZpcnR1YWwgdm9pZCBkZWNyZW1lbnRBY2Nlc3NDb3VudCgpIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCBjbG9zZURhdGFiYXNlSWZJZGxlKCkgeyB9Ci0gICAgdmlydHVhbCBib29sIHByZXdhcm0oKSB7
IHJldHVybiBmYWxzZTsgfQotCi0gICAgdmlydHVhbCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEm
IHNlY3VyaXR5T3JpZ2luKCkgY29uc3QgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2UuaAppbmRleCA1NWM2NjI4
MmI4YmQ2OGJjMDQ3ODJkZjQ3Y2FkZWQwYzIxMjk0YjQ4Li4xM2MyMTI1YTk4ZTExNzdkMjViZDQz
Njk5OWI5YTUwMGU5ZDg2ZTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0
b3JhZ2VOYW1lc3BhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1l
c3BhY2UuaApAQCAtMjgsNiArMjgsMTAgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKK25hbWVzcGFjZSBQQUwgeworY2xhc3MgU2Vzc2lv
bklEOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFBhZ2U7CkBAIC0zOSw2ICs0
Myw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5TdG9yYWdlTmFtZXNwYWNlKCkgPSBkZWZhdWx0
OwogICAgIHZpcnR1YWwgUmVmPFN0b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYShjb25zdCBTZWN1cml0
eU9yaWdpbkRhdGEmKSA9IDA7CiAgICAgdmlydHVhbCBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gY29w
eShQYWdlKiBuZXdQYWdlKSA9IDA7CisKKyAgICB2aXJ0dWFsIFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCgpIGNvbnN0ID0gMDsKKwl2aXJ0dWFsIHZvaWQgc2V0U2Vzc2lvbklERm9yVGVzdGluZyhQ
QUw6OlNlc3Npb25JRCkgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCmlu
ZGV4IDU5MzlhZmZkM2ViMmY4ZWVkNDZiZjYyYmFiNGIxNWFlYjVlOTVlZGYuLjZjNWE4ZGUwNTI0
YzYwYWQ3YjFiMWE2MTVlNDY2OTUzYjAwZWVhNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKQEAgLTQzLDIxICs0Myw2IEBA
IFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKCkKIAog
U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjp+U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKCkKIHsK
LSAgICBBU1NFUlQobV9wYWdlcy5pc0VtcHR5KCkpOwotfQotCi12b2lkIFN0b3JhZ2VOYW1lc3Bh
Y2VQcm92aWRlcjo6YWRkUGFnZShQYWdlJiBwYWdlKQotewotICAgIEFTU0VSVCghbV9wYWdlcy5j
b250YWlucygmcGFnZSkpOwotCi0gICAgbV9wYWdlcy5hZGQoJnBhZ2UpOwotfQotCi12b2lkIFN0
b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6cmVtb3ZlUGFnZShQYWdlJiBwYWdlKQotewotICAgIEFT
U0VSVChtX3BhZ2VzLmNvbnRhaW5zKCZwYWdlKSk7Ci0KLSAgICBtX3BhZ2VzLnJlbW92ZSgmcGFn
ZSk7CiB9CiAKIFJlZjxTdG9yYWdlQXJlYT4gU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpsb2Nh
bFN0b3JhZ2VBcmVhKERvY3VtZW50JiBkb2N1bWVudCkKQEAgLTY2LDM2ICs1MSw0NyBAQCBSZWY8
U3RvcmFnZUFyZWE+IFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6bG9jYWxTdG9yYWdlQXJlYShE
b2N1bWVudCYgZG9jdW1lbnQpCiAgICAgLy8gc28gdGhlIERvY3VtZW50IGhhZCBiZXR0ZXIgc3Rp
bGwgYWN0dWFsbHkgaGF2ZSBhIFBhZ2UuCiAgICAgQVNTRVJUKGRvY3VtZW50LnBhZ2UoKSk7CiAK
LSAgICBib29sIGVwaGVtZXJhbCA9IGRvY3VtZW50LnBhZ2UoKS0+dXNlc0VwaGVtZXJhbFNlc3Np
b24oKTsKICAgICBib29sIHRyYW5zaWVudCA9ICFkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpLmNh
bkFjY2Vzc0xvY2FsU3RvcmFnZSgmZG9jdW1lbnQudG9wT3JpZ2luKCkpOwogCiAgICAgUmVmUHRy
PFN0b3JhZ2VOYW1lc3BhY2U+IHN0b3JhZ2VOYW1lc3BhY2U7CiAKICAgICBpZiAodHJhbnNpZW50
KQotICAgICAgICBzdG9yYWdlTmFtZXNwYWNlID0gJnRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVz
cGFjZShkb2N1bWVudC50b3BPcmlnaW4oKSk7Ci0gICAgZWxzZSBpZiAoZXBoZW1lcmFsKQotICAg
ICAgICBzdG9yYWdlTmFtZXNwYWNlID0gZG9jdW1lbnQucGFnZSgpLT5lcGhlbWVyYWxMb2NhbFN0
b3JhZ2UoKTsKKyAgICAgICAgc3RvcmFnZU5hbWVzcGFjZSA9ICZ0cmFuc2llbnRMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UoZG9jdW1lbnQudG9wT3JpZ2luKCksIGRvY3VtZW50LnBhZ2UoKS0+c2Vzc2lv
bklEKCkpOwogICAgIGVsc2UKLSAgICAgICAgc3RvcmFnZU5hbWVzcGFjZSA9ICZsb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UoKTsKKyAgICAgICAgc3RvcmFnZU5hbWVzcGFjZSA9ICZsb2NhbFN0b3JhZ2VO
YW1lc3BhY2UoZG9jdW1lbnQucGFnZSgpLT5zZXNzaW9uSUQoKSk7CiAKICAgICByZXR1cm4gc3Rv
cmFnZU5hbWVzcGFjZS0+c3RvcmFnZUFyZWEoZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKS5kYXRh
KCkpOwogfQogCi1TdG9yYWdlTmFtZXNwYWNlJiBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6Omxv
Y2FsU3RvcmFnZU5hbWVzcGFjZSgpCitTdG9yYWdlTmFtZXNwYWNlJiBTdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXI6OmxvY2FsU3RvcmFnZU5hbWVzcGFjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQp
CiB7CiAgICAgaWYgKCFtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZSkKLSAgICAgICAgbV9sb2NhbFN0
b3JhZ2VOYW1lc3BhY2UgPSBjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UobG9jYWxTdG9yYWdl
RGF0YWJhc2VRdW90YUluQnl0ZXMpOworICAgICAgICBtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZSA9
IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZShsb2NhbFN0b3JhZ2VEYXRhYmFzZVF1b3RhSW5C
eXRlcywgc2Vzc2lvbklEKTsKIAorICAgIEFTU0VSVChtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZS0+
c2Vzc2lvbklEKCkgPT0gc2Vzc2lvbklEKTsKICAgICByZXR1cm4gKm1fbG9jYWxTdG9yYWdlTmFt
ZXNwYWNlOwogfQogCi1TdG9yYWdlTmFtZXNwYWNlJiBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6
OnRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlP
cmlnaW4pCitTdG9yYWdlTmFtZXNwYWNlJiBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OnRyYW5z
aWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4s
IFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKLSAgICBhdXRvJiBzbG90ID0gbV90cmFuc2ll
bnRMb2NhbFN0b3JhZ2VNYXAuYWRkKCZzZWN1cml0eU9yaWdpbiwgbnVsbHB0cikuaXRlcmF0b3It
PnZhbHVlOworICAgIGF1dG8mIHNsb3QgPSBtX3RyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFj
ZXMuYWRkKHNlY3VyaXR5T3JpZ2luLmRhdGEoKSwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwog
ICAgIGlmICghc2xvdCkKLSAgICAgICAgc2xvdCA9IGNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFn
ZU5hbWVzcGFjZShzZWN1cml0eU9yaWdpbiwgbG9jYWxTdG9yYWdlRGF0YWJhc2VRdW90YUluQnl0
ZXMpOworICAgICAgICBzbG90ID0gY3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNl
KHNlY3VyaXR5T3JpZ2luLCBsb2NhbFN0b3JhZ2VEYXRhYmFzZVF1b3RhSW5CeXRlcywgc2Vzc2lv
bklEKTsKIAorICAgIEFTU0VSVChzbG90LT5zZXNzaW9uSUQoKSA9PSBzZXNzaW9uSUQpOwogICAg
IHJldHVybiAqc2xvdDsKIH0KIAordm9pZCBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmVuYWJs
ZUxlZ2FjeVByaXZhdGVCcm93c2luZ0ZvclRlc3RpbmcoYm9vbCBlbmFibGVkKQoreworICAgIGF1
dG8gbmV3U2Vzc2lvbklEID0gZW5hYmxlZCA/IFBBTDo6U2Vzc2lvbklEOjpsZWdhY3lQcml2YXRl
U2Vzc2lvbklEKCkgOiBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpOworICAgIGlm
IChtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZSAmJiBuZXdTZXNzaW9uSUQgIT0gbV9sb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UtPnNlc3Npb25JRCgpKQorICAgICAgICBtX2xvY2FsU3RvcmFnZU5hbWVzcGFj
ZS0+c2V0U2Vzc2lvbklERm9yVGVzdGluZyhuZXdTZXNzaW9uSUQpOworICAgIAorICAgIGZvciAo
YXV0byYgdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlIDogbV90cmFuc2llbnRMb2NhbFN0
b3JhZ2VOYW1lc3BhY2VzLnZhbHVlcygpKSB7CisgICAgICAgIGlmIChuZXdTZXNzaW9uSUQgIT0g
dHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlLT5zZXNzaW9uSUQoKSkKKyAgICAgICAgICAg
IG1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlLT5zZXRTZXNzaW9uSURGb3JUZXN0aW5nKG5ld1Nlc3Np
b25JRCk7CisgICAgfQorfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdl
L1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXIuaAppbmRleCBkZDdmOWE0NmJkODQ3OTI0OWM3NGQyYTRjMjI0
NTI5NjRlNjdhZWNkLi4wMWQwNjRiNGE2MWQwNjc2MGRjODdhZmU3MWM4MzllYTAyZjc4ODdmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVy
LmgKQEAgLTMxLDYgKzMxLDEwIEBACiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgogCituYW1lc3BhY2UgUEFMIHsKK2NsYXNzIFNlc3Npb25JRDsK
K30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEb2N1bWVudDsKQEAgLTQ1LDI3ICs0
OSwyMyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+U3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyKCk7CiAKICAgICB2aXJ0dWFsIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVh
dGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQgcXVvdGEpID0gMDsKLSAg
ICB2aXJ0dWFsIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UoUGFnZSYsIHVuc2lnbmVkIHF1b3RhKSA9IDA7CiAKICAgICBSZWY8U3RvcmFn
ZUFyZWE+IGxvY2FsU3RvcmFnZUFyZWEoRG9jdW1lbnQmKTsKIAotICAgIHZvaWQgYWRkUGFnZShQ
YWdlJik7Ci0gICAgdm9pZCByZW1vdmVQYWdlKFBhZ2UmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGVuYWJsZUxlZ2FjeVByaXZhdGVCcm93c2luZ0ZvclRlc3RpbmcoYm9vbCBlbmFibGVkKTsK
IAogcHJvdGVjdGVkOgogICAgIFN0b3JhZ2VOYW1lc3BhY2UqIG9wdGlvbmFsTG9jYWxTdG9yYWdl
TmFtZXNwYWNlKCkgeyByZXR1cm4gbV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2UuZ2V0KCk7IH0KIAog
cHJpdmF0ZToKLSAgICBTdG9yYWdlTmFtZXNwYWNlJiBsb2NhbFN0b3JhZ2VOYW1lc3BhY2UoKTsK
LSAgICBTdG9yYWdlTmFtZXNwYWNlJiB0cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoU2Vj
dXJpdHlPcmlnaW4mKTsKLQotICAgIHZpcnR1YWwgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0
ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSkgPSAwOwotICAgIHZpcnR1YWwg
UmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFj
ZShTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkIHF1b3RhKSA9IDA7CisgICAgU3RvcmFnZU5hbWVz
cGFjZSYgbG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBBTDo6U2Vzc2lvbklEKTsKKyAgICBTdG9yYWdl
TmFtZXNwYWNlJiB0cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoU2VjdXJpdHlPcmlnaW4m
LCBQQUw6OlNlc3Npb25JRCk7CiAKLSAgICBIYXNoU2V0PFBhZ2UqPiBtX3BhZ2VzOworICAgIHZp
cnR1YWwgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1
bnNpZ25lZCBxdW90YSwgUEFMOjpTZXNzaW9uSUQpID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxTdG9y
YWdlTmFtZXNwYWNlPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoU2VjdXJp
dHlPcmlnaW4mLCB1bnNpZ25lZCBxdW90YSwgUEFMOjpTZXNzaW9uSUQpID0gMDsKIAogICAgIFJl
ZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZTsKLSAgICBIYXNo
TWFwPFJlZlB0cjxTZWN1cml0eU9yaWdpbj4sIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPj4gbV90
cmFuc2llbnRMb2NhbFN0b3JhZ2VNYXA7CisgICAgSGFzaE1hcDxTZWN1cml0eU9yaWdpbkRhdGEs
IFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPj4gbV90cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2VzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9TdG9yYWdlVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9y
YWdlVHlwZS5oCmluZGV4IDU4MTMzZjg5Y2NhNzFkYzM1MGVmNzI4NWE3MGE3MzBhMjk2MmE2ZTIu
LmZlNzAwMjU3YmFjYjQ5YWZkZGZmNDU2NDJhNjNkNDI4ZDc0MGY4OWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZVR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL1N0b3JhZ2VUeXBlLmgKQEAgLTMwLDEzICszMCwxMiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBlbnVtIGNsYXNzIFN0b3JhZ2VUeXBlIHsKICAgICBTZXNzaW9uLAogICAgIExvY2FsLAot
ICAgIEVwaGVtZXJhbExvY2FsLAogICAgIFRyYW5zaWVudExvY2FsLAogfTsKIAogaW5saW5lIGJv
b2wgaXNMb2NhbFN0b3JhZ2UoU3RvcmFnZVR5cGUgc3RvcmFnZVR5cGUpCiB7Ci0gICAgcmV0dXJu
IHN0b3JhZ2VUeXBlID09IFN0b3JhZ2VUeXBlOjpMb2NhbCB8fCBzdG9yYWdlVHlwZSA9PSBTdG9y
YWdlVHlwZTo6VHJhbnNpZW50TG9jYWwgfHwgc3RvcmFnZVR5cGUgPT0gU3RvcmFnZVR5cGU6OkVw
aGVtZXJhbExvY2FsOworICAgIHJldHVybiBzdG9yYWdlVHlwZSA9PSBTdG9yYWdlVHlwZTo6TG9j
YWwgfHwgc3RvcmFnZVR5cGUgPT0gU3RvcmFnZVR5cGU6OlRyYW5zaWVudExvY2FsOwogfQogCiBp
bmxpbmUgYm9vbCBpc1BlcnNpc3RlbnRMb2NhbFN0b3JhZ2UoU3RvcmFnZVR5cGUgc3RvcmFnZVR5
cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dl
YktpdC9DTWFrZUxpc3RzLnR4dAppbmRleCA2Zjc5Yzg2NDdhNjEyZGMwNGEwMmFhYzgyM2Q3NDk1
ODQ0ZDRjOTIxLi5kODhhYTgzYjJhNTRmZjJhODQyYTJhNWZjNTQ2ZDg3MTQ4NTUyYWI5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQv
Q01ha2VMaXN0cy50eHQKQEAgLTExOCw3ICsxMTgsNyBAQCBzZXQoV2ViS2l0X01FU1NBR0VTX0lO
X0ZJTEVTCiAgICAgTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5l
Y3Rpb24ubWVzc2FnZXMuaW4KICAgICBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgogCi0gICAgTmV0d29ya1Byb2Nl
c3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5tZXNzYWdlcy5pbgorICAgIE5ldHdvcmtQcm9j
ZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQubWVzc2FnZXMuaW4KIAogICAgIE5ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVs
aXN0IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CmluZGV4
IDBmYjg0MjNiNWNjY2Y3ZDI2MzM5NDI1Y2Q3YTczZjRiMmMwZDJlODkuLjJlNDc2NjA4NTQwM2Q0
MjA3ZjJiZjE3MmU5OWM3ODQ2OTBhOWNjZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVy
aXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRT
b3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKQEAgLTI1LDcgKzI1LDcgQEAgJChQUk9KRUNUX0RJUikv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5tZXNzYWdlcy5pbgogJChQUk9KRUNU
X0RJUikvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1dlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVz
c2FnZXMuaW4KLSQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFn
ZU1hbmFnZXIubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL1dlYlN0
b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL05ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4K
ICQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL21hYy9jb20uYXBwbGUuV2ViS2l0Lk5ldHdv
cmtQcm9jZXNzLnNiLmluCiAkKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0
d29ya01ETlNSZWdpc3Rlci5tZXNzYWdlcy5pbgpAQCAtODMsNyArODMsNiBAQCAkKFBST0pFQ1Rf
RElSKS9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9V
SVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KLSQoUFJPSkVDVF9ESVIpL1VJUHJvY2Vz
cy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9V
SVByb2Nlc3MvaW9zL0VkaXRhYmxlSW1hZ2VDb250cm9sbGVyLm1lc3NhZ2VzLmluCiAkKFBST0pF
Q1RfRElSKS9VSVByb2Nlc3MvaW9zL1NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIubWVzc2Fn
ZXMuaW4KICQoUFJPSkVDVF9ESVIpL1VJUHJvY2Vzcy9tYWMvU2VjSXRlbVNoaW1Qcm94eS5tZXNz
YWdlcy5pbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQu
eGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxp
c3QKaW5kZXggZmUwYTZjMDA0MDJjNTM1NTQwNTQ1MTQ5MWQ0ZDhkZjc0NDczYzc5My4uYmQ5ZGQ3
ZjYzM2MxN2JjZjI5OTA4NzdmMWRlM2FhZTRhOGZiNDdhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0
L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC04OCw4ICs4OCw4IEBAICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1NtYXJ0TWFnbmlmaWNhdGlv
bkNvbnRyb2xsZXJNZXNzYWdlCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi9TbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZXMuaAogJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvU3RvcmFnZUFyZWFNYXBNZXNzYWdl
UmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi9TdG9yYWdlQXJlYU1hcE1lc3NhZ2VzLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyL1N0b3JhZ2VNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcAotJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvU3RvcmFnZU1hbmFnZXJNZXNz
YWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9TdG9y
YWdlTWFuYWdlclNldE1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQyL1N0b3JhZ2VNYW5hZ2VyU2V0TWVzc2FnZXMuaAogJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvVGV4dENoZWNraW5nQ29udHJv
bGxlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdDIvVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5TWVzc2FnZXMuaAog
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvVXNlck1lZGlhQ2Fw
dHVyZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UK
aW5kZXggNTM5M2M1YmQ3ZjA5Nzk0NTAwMmYxMDMyMmVmY2UwNTMxNjMyYzNmZi4uOWRlNzA0MjY2
YWZlZTUxMzZlNjVlODQ3ODFiNWEwMjUyNTE1N2FjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMu
bWFrZQpAQCAtMTM2LDcgKzEzNiw3IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogICAgIFNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2sgXAogICAgIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIgXAog
ICAgIFN0b3JhZ2VBcmVhTWFwIFwKLSAgICBTdG9yYWdlTWFuYWdlciBcCisgICAgU3RvcmFnZU1h
bmFnZXJTZXQgXAogICAgIFRleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eSBcCiAgICAgVXNlck1l
ZGlhQ2FwdHVyZU1hbmFnZXIgXAogICAgIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkgXApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCAxZjEwMDRlMWI1YmNkMzlkOGIxMjJkZjhj
NmRhNDhkMTM3YzRiZTYxLi4xZmE4ZDllZmY1MjNkNDBmMDg3OTAyOTgwYTY5NmFlOTZhMGFiZjA3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtNDksNyArNDksNiBAQAogI2luY2x1
ZGUgIlBpbmdMb2FkLmgiCiAjaW5jbHVkZSAiUHJlY29ubmVjdFRhc2suaCIKICNpbmNsdWRlICJT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrTWVzc2FnZXMuaCIKLSNpbmNsdWRlICJTdG9yYWdlTWFuYWdl
ci5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYkVy
cm9ycy5oIgogI2luY2x1ZGUgIldlYklEQkNvbm5lY3Rpb25Ub0NsaWVudC5oIgpAQCAtMjk5LDcg
KzI5OCw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZENsb3NlKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKICAgICAvLyByb290IGFjdGl2aXR5IHRyYWNrZXJz
LgogICAgIHN0b3BBbGxOZXR3b3JrQWN0aXZpdHlUcmFja2luZygpOwogCi0gICAgbV9uZXR3b3Jr
UHJvY2Vzcy0+d2ViUHJvY2Vzc1dhc0Rpc2Nvbm5lY3RlZChjb25uZWN0aW9uKTsKKyAgICBtX25l
dHdvcmtQcm9jZXNzLT5jb25uZWN0aW9uVG9XZWJQcm9jZXNzQ2xvc2VkKGNvbm5lY3Rpb24pOwog
CiAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+cmVtb3ZlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MoKnRoaXMpOwogCkBAIC05MTUsMTkgKzkxNCw0IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbihQQUw6OlNlc3Npb25JRCBz
CiB9CiAjZW5kaWYKIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6d2ViUGFn
ZVdhc0FkZGVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlE
LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBvbGRQYWdlSUQpCi17Ci0gICAgbV9uZXR3b3JrUHJv
Y2Vzcy0+d2ViUGFnZVdhc0FkZGVkKG1fY29ubmVjdGlvbi5nZXQoKSwgc2Vzc2lvbklELCBwYWdl
SUQsIG9sZFBhZ2VJRCk7Ci19Ci0KLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OndlYlBhZ2VXYXNSZW1vdmVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUGFnZUlkZW50aWZp
ZXIgcGFnZUlEKQotewotICAgIG1fbmV0d29ya1Byb2Nlc3MtPndlYlBhZ2VXYXNSZW1vdmVkKG1f
Y29ubmVjdGlvbi5nZXQoKSwgc2Vzc2lvbklELCBwYWdlSUQpOwotfQotCi12b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjp3ZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQoUEFMOjpTZXNz
aW9uSUQgbmV3U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8UGFnZUlkZW50aWZpZXI+JiBwYWdlcykK
LXsKLSAgICBtX25ldHdvcmtQcm9jZXNzLT53ZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQobV9jb25u
ZWN0aW9uLmdldCgpLCBuZXdTZXNzaW9uSUQsIHBhZ2VzKTsKLX0KLQogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggOTI4NjczM2M0YjdjNzUxMmMyOWM1
MzI0MzgyMWQwZWUxZWM3MTMwOS4uZDQwNGE1NjkyYjMxYmE4YjYzZjYxNThmNTUzMzNmZjRjYjRi
Nzk2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtMTQwLDEwICsxNDAsNiBAQCBwdWJs
aWM6CiAKICAgICBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+
IHJlc29sdmVCbG9iUmVmZXJlbmNlcyhjb25zdCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVy
cyYpOwogCi0gICAgdm9pZCB3ZWJQYWdlV2FzQWRkZWQoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBvbGRQYWdlSUQpOwotICAg
IHZvaWQgd2ViUGFnZVdhc1JlbW92ZWQoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyKTsKLSAgICB2b2lkIHdlYlByb2Nlc3NTZXNzaW9uQ2hhbmdlZChQQUw6OlNlc3Npb25J
RCBuZXdTZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4mIHBh
Z2VzKTsKLQogICAgIHZvaWQgcmVtb3ZlU29ja2V0Q2hhbm5lbCh1aW50NjRfdCBpZGVudGlmaWVy
KTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmlu
CmluZGV4IDRiMTE4OWIzOWNjZWJjOGZiMjI2ZjhmZWUwMzQyOGM2Yzg1YWQ3YTMuLmZhOTc5MzNj
NGE5MTlhMDYwMTc2YzlmNjllZDEzZjRmMzk5MmViYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtODYsOCArODYsNCBAQCBtZXNzYWdlcyAtPiBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAjaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQogICAgIEVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbihQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQpIC0+IChXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKSBTeW5jaHJvbm91cwogI2VuZGlmCi0KLSAgICBX
ZWJQYWdlV2FzQWRkZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciBwYWdlSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG9sZFBhZ2VJRCkKLSAgICBX
ZWJQYWdlV2FzUmVtb3ZlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCkKLSAgICBXZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQoUEFMOjpTZXNz
aW9uSUQgbmV3U2Vzc2lvbklELCBWZWN0b3I8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2Vz
KQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNw
cAppbmRleCBlODIwYjI5YzIwZjUxOWZiNWUzZGQ4OGE4YmVmNjQ2NTQwNjg2YjBiLi5mYmU4ZTY4
YWZlODI4ZTg1ZjA1OTAxM2U2NzFkMWYwZDdjNDlkOTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtNTMsOCArNTMsNyBAQAogI2lu
Y2x1ZGUgIlNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcy5oIgogI2luY2x1ZGUgIlN0YXRpc3Rp
Y3NEYXRhLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFjY2Vzc1N0YXR1cy5oIgotI2luY2x1ZGUgIlN0
b3JhZ2VNYW5hZ2VyLmgiCi0jaW5jbHVkZSAiU3RvcmFnZU1hbmFnZXJNZXNzYWdlcy5oIgorI2lu
Y2x1ZGUgIlN0b3JhZ2VNYW5hZ2VyU2V0LmgiCiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlci5o
IgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vz
c1Bvb2xNZXNzYWdlcy5oIgpAQCAtMTMzLDYgKzEzMiw3IEBAIHN0YXRpYyB2b2lkIGNhbGxFeGl0
U29vbihJUEM6OkNvbm5lY3Rpb24qKQogCiBOZXR3b3JrUHJvY2Vzczo6TmV0d29ya1Byb2Nlc3Mo
QXV4aWxpYXJ5UHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAg
ICAgOiBtX2Rvd25sb2FkTWFuYWdlcigqdGhpcykKKyAgICAsIG1fc3RvcmFnZU1hbmFnZXJTZXQo
U3RvcmFnZU1hbmFnZXJTZXQ6OmNyZWF0ZSgpKQogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lP
TlMpCiAgICAgLCBtX25ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyKCp0aGlzKQogI2VuZGlm
CkBAIC0zMzYsNiArMzM2LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZU5ldHdv
cmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYKICNlbmRpZgogICAg
IGluaXRpYWxpemVTdG9yYWdlUXVvdGEocGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1l
dGVycyk7CiAKKyAgICBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5hZGQoc2Vzc2lvbklELCBwYXJhbWV0
ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeSwgcGFy
YW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnlF
eHRlbnNpb25IYW5kbGUpOworCiAgICAgYXV0byogZGVmYXVsdFNlc3Npb24gPSBuZXR3b3JrU2Vz
c2lvbihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKICAgICBhdXRvKiBkZWZh
dWx0U3RvcmFnZVNlc3Npb24gPSBkZWZhdWx0U2Vzc2lvbi0+bmV0d29ya1N0b3JhZ2VTZXNzaW9u
KCk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBjb29raWUgOiBwYXJhbWV0ZXJzLmRlZmF1bHREYXRh
U3RvcmVQYXJhbWV0ZXJzLnBlbmRpbmdDb29raWVzKQpAQCAtNDQ3LDYgKzQ0OSw4IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKGJvb2wg
aXNTZXJ2aWNlV29ya2VyUHJvCiAgICAgVU5VU0VEX1BBUkFNKGlzU2VydmljZVdvcmtlclByb2Nl
c3MpOwogICAgIFVOVVNFRF9QQVJBTShyZWdpc3RyYWJsZURvbWFpbik7CiAjZW5kaWYKKworICAg
IG1fc3RvcmFnZU1hbmFnZXJTZXQtPmFkZENvbm5lY3Rpb24obV93ZWJQcm9jZXNzQ29ubmVjdGlv
bnMubGFzdCgpLT5jb25uZWN0aW9uKCkpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVh
ckNhY2hlZENyZWRlbnRpYWxzKCkKQEAgLTQ2OSw2ICs0NzMsOCBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjphZGRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJiYgcGFy
YW1ldGVycwogICAgICAgICBhZGRTZXJ2aWNlV29ya2VyU2Vzc2lvbihwYXJhbWV0ZXJzLm5ldHdv
cmtTZXNzaW9uUGFyYW1ldGVycy5zZXNzaW9uSUQsIHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbkRpcmVjdG9yeSwgcGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
RGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKICNlbmRpZgogCisgICAgbV9zdG9yYWdlTWFuYWdl
clNldC0+YWRkKHBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnNlc3Npb25JRCwg
cGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnksIHBhcmFtZXRlcnMubG9jYWxTdG9yYWdl
RGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKKwogICAgIGluaXRpYWxpemVTdG9yYWdlUXVvdGEo
cGFyYW1ldGVycyk7CiAKICAgICBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlV2Vic2l0
ZURhdGFTdG9yZVNlc3Npb24oKnRoaXMsIFdURk1vdmUocGFyYW1ldGVycykpOwpAQCAtNjA5LDYg
KzYxNSw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlc3Ryb3lTZXNzaW9uKGNvbnN0IFBBTDo6
U2Vzc2lvbklEJiBzZXNzaW9uSUQpCiAgICAgbV9zd0RhdGFiYXNlUGF0aHMucmVtb3ZlKHNlc3Np
b25JRCk7CiAjZW5kaWYKIAorICAgIG1fc3RvcmFnZU1hbmFnZXJTZXQtPnJlbW92ZShzZXNzaW9u
SUQpOworCiAgICAgbV9zdG9yYWdlUXVvdGFNYW5hZ2Vycy5yZW1vdmUoc2Vzc2lvbklEKTsKIH0K
IApAQCAtMTA1MCw4ICsxMDU4LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2xlYXJVc2VySW50
ZXJhY3Rpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3QKIAogdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6aGFzTG9jYWxTdG9yYWdlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5l
dHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKLSAgICAgICAgc2Vzc2lvbi0+c3RvcmFnZU1hbmFn
ZXIoKS5nZXRMb2NhbFN0b3JhZ2VPcmlnaW5zKFtkb21haW4sIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1dG8mJiBvcmlnaW5zKSBtdXRhYmxlIHsKKyAg
ICBpZiAobV9zdG9yYWdlTWFuYWdlclNldC0+Y29udGFpbnMoc2Vzc2lvbklEKSkgeworICAgICAg
ICBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5nZXRMb2NhbFN0b3JhZ2VPcmlnaW5zKHNlc3Npb25JRCwg
W2RvbWFpbiwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0o
YXV0byYmIG9yaWdpbnMpIG11dGFibGUgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
V1RGOjphbnlPZihvcmlnaW5zLCBbJmRvbWFpbl0oYXV0byYgb3JpZ2luKSB7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGRvbWFpbi5tYXRjaGVzKG9yaWdpbik7CiAgICAgICAgICAgICB9KSk7CkBA
IC0xMzQwLDE2ICsxMzQ4LDE1IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmZldGNoV2Vic2l0ZURh
dGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0CiAgICAgICAgIH0p
OwogICAgIH0KIAotICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQp
OwotICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6U2Vz
c2lvblN0b3JhZ2UpICYmIHNlc3Npb24pIHsKLSAgICAgICAgc2Vzc2lvbi0+c3RvcmFnZU1hbmFn
ZXIoKS5nZXRTZXNzaW9uU3RvcmFnZU9yaWdpbnMoW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxi
YWNrQWdncmVnYXRvci5jb3B5UmVmKCldKGF1dG8mJiBvcmlnaW5zKSB7CisgICAgaWYgKHdlYnNp
dGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpTZXNzaW9uU3RvcmFnZSkgJiYg
bV9zdG9yYWdlTWFuYWdlclNldC0+Y29udGFpbnMoc2Vzc2lvbklEKSkgeworICAgICAgICBtX3N0
b3JhZ2VNYW5hZ2VyU2V0LT5nZXRTZXNzaW9uU3RvcmFnZU9yaWdpbnMoc2Vzc2lvbklELCBbY2Fs
bGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0oYXV0byYmIG9y
aWdpbnMpIHsKICAgICAgICAgICAgIHdoaWxlICghb3JpZ2lucy5pc0VtcHR5KCkpCiAgICAgICAg
ICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX3dlYnNpdGVEYXRhLmVudHJpZXMuYXBwZW5k
KFdlYnNpdGVEYXRhOjpFbnRyeSB7IG9yaWdpbnMudGFrZUFueSgpLCBXZWJzaXRlRGF0YVR5cGU6
OlNlc3Npb25TdG9yYWdlLCAwIH0pOwogICAgICAgICB9KTsKICAgICB9CiAKLSAgICBpZiAod2Vi
c2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkxvY2FsU3RvcmFnZSkgJiYg
c2Vzc2lvbikgewotICAgICAgICBzZXNzaW9uLT5zdG9yYWdlTWFuYWdlcigpLmdldExvY2FsU3Rv
cmFnZU9yaWdpbnMoW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5
UmVmKCldKGF1dG8mJiBvcmlnaW5zKSB7CisgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFp
bnMoV2Vic2l0ZURhdGFUeXBlOjpMb2NhbFN0b3JhZ2UpICYmIG1fc3RvcmFnZU1hbmFnZXJTZXQt
PmNvbnRhaW5zKHNlc3Npb25JRCkpIHsKKyAgICAgICAgbV9zdG9yYWdlTWFuYWdlclNldC0+Z2V0
TG9jYWxTdG9yYWdlT3JpZ2lucyhzZXNzaW9uSUQsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxs
YmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXShhdXRvJiYgb3JpZ2lucykgewogICAgICAgICAgICAg
d2hpbGUgKCFvcmlnaW5zLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3Jl
Z2F0b3ItPm1fd2Vic2l0ZURhdGEuZW50cmllcy5hcHBlbmQoV2Vic2l0ZURhdGE6OkVudHJ5IHsg
b3JpZ2lucy50YWtlQW55KCksIFdlYnNpdGVEYXRhVHlwZTo6TG9jYWxTdG9yYWdlLCAwIH0pOwog
ICAgICAgICB9KTsKQEAgLTE0MjQsMTIgKzE0MzEsMTEgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
ZGVsZXRlV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vi
c2kKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkRP
TUNhY2hlKSkKICAgICAgICAgQ2FjaGVTdG9yYWdlOjpFbmdpbmU6OmNsZWFyQWxsQ2FjaGVzKCp0
aGlzLCBzZXNzaW9uSUQsIFtjbGVhclRhc2tzSGFuZGxlciA9IGNsZWFyVGFza3NIYW5kbGVyLmNv
cHlSZWYoKV0geyB9KTsKIAotICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNz
aW9uSUQpOwotICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlw
ZTo6U2Vzc2lvblN0b3JhZ2UpICYmIHNlc3Npb24pCi0gICAgICAgIHNlc3Npb24tPnN0b3JhZ2VN
YW5hZ2VyKCkuZGVsZXRlU2Vzc2lvblN0b3JhZ2VPcmlnaW5zKFtjbGVhclRhc2tzSGFuZGxlciA9
IGNsZWFyVGFza3NIYW5kbGVyLmNvcHlSZWYoKV0geyB9KTsKKyAgICBpZiAod2Vic2l0ZURhdGFU
eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlNlc3Npb25TdG9yYWdlKSAmJiBtX3N0b3Jh
Z2VNYW5hZ2VyU2V0LT5jb250YWlucyhzZXNzaW9uSUQpKQorICAgICAgICBtX3N0b3JhZ2VNYW5h
Z2VyU2V0LT5kZWxldGVTZXNzaW9uU3RvcmFnZShzZXNzaW9uSUQsIFtjbGVhclRhc2tzSGFuZGxl
ciA9IGNsZWFyVGFza3NIYW5kbGVyLmNvcHlSZWYoKV0geyB9KTsKIAotICAgIGlmICh3ZWJzaXRl
RGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6TG9jYWxTdG9yYWdlKSAmJiBzZXNz
aW9uKQotICAgICAgICBzZXNzaW9uLT5zdG9yYWdlTWFuYWdlcigpLmRlbGV0ZUxvY2FsU3RvcmFn
ZU9yaWdpbnNNb2RpZmllZFNpbmNlKG1vZGlmaWVkU2luY2UsIFtjbGVhclRhc2tzSGFuZGxlciA9
IGNsZWFyVGFza3NIYW5kbGVyLmNvcHlSZWYoKV0geyB9KTsKKyAgICBpZiAod2Vic2l0ZURhdGFU
eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkxvY2FsU3RvcmFnZSkgJiYgbV9zdG9yYWdl
TWFuYWdlclNldC0+Y29udGFpbnMoc2Vzc2lvbklEKSkKKyAgICAgICAgbV9zdG9yYWdlTWFuYWdl
clNldC0+ZGVsZXRlTG9jYWxTdG9yYWdlTW9kaWZpZWRTaW5jZShzZXNzaW9uSUQsIG1vZGlmaWVk
U2luY2UsIFtjbGVhclRhc2tzSGFuZGxlciA9IGNsZWFyVGFza3NIYW5kbGVyLmNvcHlSZWYoKV0g
eyB9KTsKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogICAgIGlmICh3ZWJzaXRlRGF0
YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKSAmJiAh
c2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCkBAIC0xNTI0LDEyICsxNTMwLDExIEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIE9wdGlvCiAgICAgICAgICAgICBDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6Y2xlYXJD
YWNoZXNGb3JPcmlnaW4oKnRoaXMsIHNlc3Npb25JRCwgU2VjdXJpdHlPcmlnaW5EYXRhIHsgb3Jp
Z2luRGF0YSB9LCBbY2xlYXJUYXNrc0hhbmRsZXIgPSBjbGVhclRhc2tzSGFuZGxlci5jb3B5UmVm
KCldIHsgfSk7CiAgICAgfQogCi0gICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNl
c3Npb25JRCk7Ci0gICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFU
eXBlOjpTZXNzaW9uU3RvcmFnZSkgJiYgc2Vzc2lvbikKLSAgICAgICAgc2Vzc2lvbi0+c3RvcmFn
ZU1hbmFnZXIoKS5kZWxldGVTZXNzaW9uU3RvcmFnZUVudHJpZXNGb3JPcmlnaW5zKG9yaWdpbkRh
dGFzLCBbY2xlYXJUYXNrc0hhbmRsZXIgPSBjbGVhclRhc2tzSGFuZGxlci5jb3B5UmVmKCldIHsg
fSk7CisgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpT
ZXNzaW9uU3RvcmFnZSkgJiYgbV9zdG9yYWdlTWFuYWdlclNldC0+Y29udGFpbnMoc2Vzc2lvbklE
KSkKKyAgICAgICAgbV9zdG9yYWdlTWFuYWdlclNldC0+ZGVsZXRlU2Vzc2lvblN0b3JhZ2VGb3JP
cmlnaW5zKHNlc3Npb25JRCwgb3JpZ2luRGF0YXMsIFtjbGVhclRhc2tzSGFuZGxlciA9IGNsZWFy
VGFza3NIYW5kbGVyLmNvcHlSZWYoKV0geyB9KTsKIAotICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVz
LmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6TG9jYWxTdG9yYWdlKSAmJiBzZXNzaW9uKQotICAg
ICAgICBzZXNzaW9uLT5zdG9yYWdlTWFuYWdlcigpLmRlbGV0ZUxvY2FsU3RvcmFnZUVudHJpZXNG
b3JPcmlnaW5zKG9yaWdpbkRhdGFzLCBbY2xlYXJUYXNrc0hhbmRsZXIgPSBjbGVhclRhc2tzSGFu
ZGxlci5jb3B5UmVmKCldIHsgfSk7CisgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMo
V2Vic2l0ZURhdGFUeXBlOjpMb2NhbFN0b3JhZ2UpICYmIG1fc3RvcmFnZU1hbmFnZXJTZXQtPmNv
bnRhaW5zKHNlc3Npb25JRCkpCisgICAgICAgIG1fc3RvcmFnZU1hbmFnZXJTZXQtPmRlbGV0ZUxv
Y2FsU3RvcmFnZUZvck9yaWdpbnMoc2Vzc2lvbklELCBvcmlnaW5EYXRhcywgW2NsZWFyVGFza3NI
YW5kbGVyID0gY2xlYXJUYXNrc0hhbmRsZXIuY29weVJlZigpXSB7IH0pOwogCiAjaWYgRU5BQkxF
KElOREVYRURfREFUQUJBU0UpCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vi
c2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpICYmICFzZXNzaW9uSUQuaXNFcGhlbWVy
YWwoKSkKQEAgLTE3MjYsMjAgKzE3MzEsMTggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRl
V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2kKICAg
ICAgICAgfSk7CiAgICAgfQogCi0gICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNl
c3Npb25JRCk7Ci0gICAgaWYgKHNlc3Npb24pIHsKLSAgICAgICAgYXV0byYgc3RvcmFnZU1hbmFn
ZXIgPSBzZXNzaW9uLT5zdG9yYWdlTWFuYWdlcigpOworICAgIGlmIChtX3N0b3JhZ2VNYW5hZ2Vy
U2V0LT5jb250YWlucyhzZXNzaW9uSUQpKSB7CiAgICAgICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVz
LmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6U2Vzc2lvblN0b3JhZ2UpKSB7Ci0gICAgICAgICAg
ICBzdG9yYWdlTWFuYWdlci5nZXRTZXNzaW9uU3RvcmFnZU9yaWdpbnMoW3N0b3JhZ2VNYW5hZ2Vy
ID0gbWFrZVJlZlB0cihzdG9yYWdlTWFuYWdlciksIGNhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxi
YWNrQWdncmVnYXRvci5jb3B5UmVmKCksIGRvbWFpbnNUb0RlbGV0ZUFsbEJ1dENvb2tpZXNGb3Jd
KGF1dG8mJiBvcmlnaW5zKSB7CisgICAgICAgICAgICBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5nZXRT
ZXNzaW9uU3RvcmFnZU9yaWdpbnMoc2Vzc2lvbklELCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCB0aGlzLCBzZXNzaW9uSUQsIGNhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdn
cmVnYXRvci5jb3B5UmVmKCksIGRvbWFpbnNUb0RlbGV0ZUFsbEJ1dENvb2tpZXNGb3JdKGF1dG8m
JiBvcmlnaW5zKSB7CiAgICAgICAgICAgICAgICAgYXV0byBvcmlnaW5zVG9EZWxldGUgPSBmaWx0
ZXJGb3JSZWdpc3RyYWJsZURvbWFpbnMob3JpZ2lucywgZG9tYWluc1RvRGVsZXRlQWxsQnV0Q29v
a2llc0ZvciwgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX2RvbWFpbnMpOwotICAgICAgICAgICAgICAg
IHN0b3JhZ2VNYW5hZ2VyLT5kZWxldGVTZXNzaW9uU3RvcmFnZUVudHJpZXNGb3JPcmlnaW5zKG9y
aWdpbnNUb0RlbGV0ZSwgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5j
b3B5UmVmKCldIHsgfSk7CisgICAgICAgICAgICAgICAgbV9zdG9yYWdlTWFuYWdlclNldC0+ZGVs
ZXRlU2Vzc2lvblN0b3JhZ2VGb3JPcmlnaW5zKHNlc3Npb25JRCwgb3JpZ2luc1RvRGVsZXRlLCBb
Y2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsK
ICAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKHdlYnNpdGVEYXRhVHlw
ZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpMb2NhbFN0b3JhZ2UpKSB7Ci0gICAgICAgICAg
ICBzdG9yYWdlTWFuYWdlci5nZXRMb2NhbFN0b3JhZ2VPcmlnaW5zKFtzdG9yYWdlTWFuYWdlciA9
IG1ha2VSZWZQdHIoc3RvcmFnZU1hbmFnZXIpLCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFj
a0FnZ3JlZ2F0b3IuY29weVJlZigpLCBkb21haW5zVG9EZWxldGVBbGxCdXRDb29raWVzRm9yXShh
dXRvJiYgb3JpZ2lucykgeworICAgICAgICAgICAgbV9zdG9yYWdlTWFuYWdlclNldC0+Z2V0TG9j
YWxTdG9yYWdlT3JpZ2lucyhzZXNzaW9uSUQsIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIHRoaXMsIHNlc3Npb25JRCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdh
dG9yLmNvcHlSZWYoKSwgZG9tYWluc1RvRGVsZXRlQWxsQnV0Q29va2llc0Zvcl0oYXV0byYmIG9y
aWdpbnMpIHsKICAgICAgICAgICAgICAgICBhdXRvIG9yaWdpbnNUb0RlbGV0ZSA9IGZpbHRlckZv
clJlZ2lzdHJhYmxlRG9tYWlucyhvcmlnaW5zLCBkb21haW5zVG9EZWxldGVBbGxCdXRDb29raWVz
Rm9yLCBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fZG9tYWlucyk7Ci0gICAgICAgICAgICAgICAgc3Rv
cmFnZU1hbmFnZXItPmRlbGV0ZUxvY2FsU3RvcmFnZUVudHJpZXNGb3JPcmlnaW5zKG9yaWdpbnNU
b0RlbGV0ZSwgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVm
KCldIHsgfSk7CisgICAgICAgICAgICAgICAgbV9zdG9yYWdlTWFuYWdlclNldC0+ZGVsZXRlTG9j
YWxTdG9yYWdlRm9yT3JpZ2lucyhzZXNzaW9uSUQsIG9yaWdpbnNUb0RlbGV0ZSwgW2NhbGxiYWNr
QWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CiAgICAgICAg
ICAgICB9KTsKICAgICAgICAgfQogICAgIH0KQEAgLTIxMTEsOSArMjExNCw3IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OmFjdHVhbFByZXBhcmVUb1N1c3BlbmQoU2hvdWxkQWNrbm93bGVkZ2VXaGVu
UmVhZHlUb1N1c3BlbmQKICAgICB9CiAjZW5kaWYKIAotICAgIGZvckVhY2hOZXR3b3JrU2Vzc2lv
bihbJmNhbGxiYWNrQWdncmVnYXRvcl0oYXV0byYgc2Vzc2lvbikgewotICAgICAgICBzZXNzaW9u
LnN0b3JhZ2VNYW5hZ2VyKCkuc3VzcGVuZChbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwotICAg
IH0pOworICAgIG1fc3RvcmFnZU1hbmFnZXJTZXQtPnN1c3BlbmQoW2NhbGxiYWNrQWdncmVnYXRv
cl0geyB9KTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJvY2Vzc1dpbGxTdXNwZW5kSW1t
aW5lbnRseSgpCkBAIC0yMTg5LDkgKzIxOTAsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZXN1
bWUoKQogICAgICAgICBzZXJ2ZXItPnJlc3VtZSgpOwogI2VuZGlmCiAKLSAgICBmb3JFYWNoTmV0
d29ya1Nlc3Npb24oW10oYXV0byYgc2Vzc2lvbikgewotICAgICAgICBzZXNzaW9uLnN0b3JhZ2VN
YW5hZ2VyKCkucmVzdW1lKCk7Ci0gICAgfSk7CisgICAgbV9zdG9yYWdlTWFuYWdlclNldC0+cmVz
dW1lKCk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnByZWZldGNoRE5TKGNvbnN0IFN0cmlu
ZyYgaG9zdG5hbWUpCkBAIC0yMzk2LDYgKzIzOTUsMTggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
c2V0SURCUGVyT3JpZ2luUXVvdGEodWludDY0X3QgcXVvdGEpCiB9CiAjZW5kaWYgLy8gRU5BQkxF
KElOREVYRURfREFUQUJBU0UpCiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnN5bmNMb2NhbFN0b3Jh
Z2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAg
IG1fc3RvcmFnZU1hbmFnZXJTZXQtPndhaXRVbnRpbFN5bmNpbmdMb2NhbFN0b3JhZ2VGaW5pc2hl
ZCgpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6
OmNsZWFyTGVnYWN5UHJpdmF0ZUJyb3dzaW5nTG9jYWxTdG9yYWdlKCkKK3sKKyAgICBpZiAobV9z
dG9yYWdlTWFuYWdlclNldC0+Y29udGFpbnMoUEFMOjpTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVT
ZXNzaW9uSUQoKSkpCisgICAgICAgIG1fc3RvcmFnZU1hbmFnZXJTZXQtPmRlbGV0ZUxvY2FsU3Rv
cmFnZU1vZGlmaWVkU2luY2UoUEFMOjpTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQo
KSwgLVdhbGxUaW1lOjppbmZpbml0eSgpLCBbXSgpIHsgfSk7Cit9CisKIHZvaWQgTmV0d29ya1By
b2Nlc3M6OnVwZGF0ZVF1b3RhQmFzZWRPblNwYWNlVXNhZ2VGb3JUZXN0aW5nKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4pCiB7CiAgICAgYXV0byYg
bWFuYWdlciA9IHN0b3JhZ2VRdW90YU1hbmFnZXIoc2Vzc2lvbklELCBvcmlnaW4pOwpAQCAtMjcw
Myw4MCArMjcxNCwyMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZW1vdmVLZXB0QWxpdmVMb2Fk
KE5ldHdvcmtSZXNvdXJjZUxvYWRlciYgbG9hZGVyKQogICAgICAgICBzZXNzaW9uLT5yZW1vdmVL
ZXB0QWxpdmVMb2FkKGxvYWRlcik7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OndlYlBhZ2VX
YXNBZGRlZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBQYWdlSWRlbnRpZmllciBvbGRQYWdlSUQpCi17
Ci0gICAgaWYgKCFwYWdlSUQgfHwgIW9sZFBhZ2VJRCkgewotICAgICAgICBMT0dfRVJST1IoIkNh
bm5vdCBhZGQgcGFnZSB3aXRoIGludmFsaWQgaWQiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOwotICAgIGlm
ICghc2Vzc2lvbikgewotICAgICAgICBMT0dfRVJST1IoIkNhbm5vdCBhZGQgcGFnZSB0byBhbiB1
bmtub3duIHNlc3Npb24iKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBhdXRvJiBzdG9y
YWdlTWFuYWdlciA9IHNlc3Npb24tPnN0b3JhZ2VNYW5hZ2VyKCk7Ci0KLSAgICBhdXRvIGFkZFJl
c3VsdCA9IG1fc2Vzc2lvbkJ5Q29ubmVjdGlvbi5hZGQoY29ubmVjdGlvbi51bmlxdWVJRCgpLCBz
ZXNzaW9uSUQpOwotICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXRlcmF0
b3ItPnZhbHVlID09IHNlc3Npb25JRCk7Ci0KLSAgICBzdG9yYWdlTWFuYWdlci5jcmVhdGVTZXNz
aW9uU3RvcmFnZU5hbWVzcGFjZShwYWdlSUQudG9VSW50NjQoKSwgc3RkOjpudW1lcmljX2xpbWl0
czx1bnNpZ25lZD46Om1heCgpKTsKLSAgICBzdG9yYWdlTWFuYWdlci5hZGRBbGxvd2VkU2Vzc2lv
blN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0aW9uKHBhZ2VJRC50b1VJbnQ2NCgpLCBjb25uZWN0aW9u
KTsKLSAgICBpZiAocGFnZUlEICE9IG9sZFBhZ2VJRCkKLSAgICAgICAgc3RvcmFnZU1hbmFnZXIu
Y2xvbmVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShvbGRQYWdlSUQudG9VSW50NjQoKSwgcGFnZUlE
LnRvVUludDY0KCkpOwotfQotCi12b2lkIE5ldHdvcmtQcm9jZXNzOjp3ZWJQYWdlV2FzUmVtb3Zl
ZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
UGFnZUlkZW50aWZpZXIgcGFnZUlEKQotewotICAgIGlmICghcGFnZUlEKSB7Ci0gICAgICAgIExP
R19FUlJPUigiQ2Fubm90IHJlbW92ZSBwYWdlIHdpdGggaW52YWxpZCBpZCIpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Np
b25JRCk7Ci0gICAgLy8gU2Vzc2lvbiBjYW4gYmUgZGVzdHJveWVkIGJlZm9yZSBwYWdlIGdldHMg
cmVtb3ZlZC4KLSAgICBpZiAoIXNlc3Npb24pCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8m
IHN0b3JhZ2VNYW5hZ2VyID0gc2Vzc2lvbi0+c3RvcmFnZU1hbmFnZXIoKTsKLSAgICBzdG9yYWdl
TWFuYWdlci5yZW1vdmVBbGxvd2VkU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0aW9uKHBh
Z2VJRC50b1VJbnQ2NCgpLCBjb25uZWN0aW9uKTsKLSAgICBzdG9yYWdlTWFuYWdlci5kZXN0cm95
U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UocGFnZUlELnRvVUludDY0KCkpOwotfQotCi12b2lkIE5l
dHdvcmtQcm9jZXNzOjp3ZWJQcm9jZXNzV2FzRGlzY29ubmVjdGVkKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbikKLXsKLSAgICBhdXRvIHNlc3Npb25JRCA9IG1fc2Vzc2lvbkJ5Q29ubmVjdGlv
bi50YWtlKGNvbm5lY3Rpb24udW5pcXVlSUQoKSk7Ci0gICAgaWYgKCFzZXNzaW9uSUQuaXNWYWxp
ZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtT
ZXNzaW9uKHNlc3Npb25JRCkpCi0gICAgICAgIHNlc3Npb24tPnN0b3JhZ2VNYW5hZ2VyKCkucHJv
Y2Vzc0RpZENsb3NlQ29ubmVjdGlvbihjb25uZWN0aW9uKTsKLX0KLQotdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6d2ViUHJvY2Vzc1Nlc3Npb25DaGFuZ2VkKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgUEFMOjpTZXNzaW9uSUQgbmV3U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8UGFnZUlkZW50aWZp
ZXI+JiBwYWdlSURzKQotewotICAgIGF1dG8gY29ubmVjdGlvbklEID0gY29ubmVjdGlvbi51bmlx
dWVJRCgpOwotICAgIEFTU0VSVChtX3Nlc3Npb25CeUNvbm5lY3Rpb24uY29udGFpbnMoY29ubmVj
dGlvbklEKSk7Ci0gICAgaWYgKG1fc2Vzc2lvbkJ5Q29ubmVjdGlvbi5nZXQoY29ubmVjdGlvbklE
KSA9PSBuZXdTZXNzaW9uSUQpCi0gICAgICAgIHJldHVybjsKLQotICAgIHdlYlByb2Nlc3NXYXNE
aXNjb25uZWN0ZWQoY29ubmVjdGlvbik7Ci0gICAgZm9yIChhdXRvJiBwYWdlSUQgOiBwYWdlSURz
KQotICAgICAgICB3ZWJQYWdlV2FzQWRkZWQoY29ubmVjdGlvbiwgbmV3U2Vzc2lvbklELCBwYWdl
SUQsIHBhZ2VJRCk7Ci19Ci0KIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmdldExvY2FsU3RvcmFnZU9y
aWdpbkRldGFpbHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFZlY3RvcjxMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6Ok9yaWdpbkRldGFpbHM+JiYp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vz
c2lvbihzZXNzaW9uSUQpOwotICAgIGlmICghc2Vzc2lvbikgeworICAgIGlmICghbV9zdG9yYWdl
TWFuYWdlclNldC0+Y29udGFpbnMoc2Vzc2lvbklEKSkgewogICAgICAgICBMT0dfRVJST1IoIkNh
bm5vdCBnZXQgbG9jYWwgc3RvcmFnZSBpbmZvcm1hdGlvbiBmb3IgYW4gdW5rbm93biBzZXNzaW9u
Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvJiBzdG9yYWdlTWFuYWdlciA9
IHNlc3Npb24tPnN0b3JhZ2VNYW5hZ2VyKCk7Ci0gICAgc3RvcmFnZU1hbmFnZXIuZ2V0TG9jYWxT
dG9yYWdlT3JpZ2luRGV0YWlscyhbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0oYXV0byYmIGRldGFpbHMpIG11dGFibGUgeworICAgIG1fc3RvcmFnZU1hbmFn
ZXJTZXQtPmdldExvY2FsU3RvcmFnZU9yaWdpbkRldGFpbHMoc2Vzc2lvbklELCBbY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byYmIGRldGFpbHMpIG11
dGFibGUgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGRldGFpbHMpKTsKICAg
ICB9KTsKIH0KIAordm9pZCBOZXR3b3JrUHJvY2Vzczo6Y29ubmVjdGlvblRvV2ViUHJvY2Vzc0Ns
b3NlZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCit7CisgICAgbV9zdG9yYWdlTWFuYWdl
clNldC0+cmVtb3ZlQ29ubmVjdGlvbihjb25uZWN0aW9uKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgK
aW5kZXggMWJlYjdiNjVkYjYzMGMzYjMyOGJiMTVjZmMzYjMxMTZiNGI5OTRkNi4uZmMwZjUzYzZm
ODA3MTRhMmUwYjUyOGVlYzM1MjQwODJjNzU4ZWE0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtOTcsNiArOTcsNyBAQCBjbGFzcyBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKIGNsYXNzIE5ldHdvcmtQcm9jZXNzU3VwcGxlbWVu
dDsKIGNsYXNzIE5ldHdvcmtQcm94aW1pdHlNYW5hZ2VyOwogY2xhc3MgTmV0d29ya1Jlc291cmNl
TG9hZGVyOworY2xhc3MgU3RvcmFnZU1hbmFnZXJTZXQ7CiBjbGFzcyBXZWJTV1NlcnZlckNvbm5l
Y3Rpb247CiBjbGFzcyBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb247CiBlbnVtIGNsYXNz
IFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcyA6IGJvb2w7CkBAIC0yNzAsMTAgKzI3MSw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldFNlc3Npb25Jc0NvbnRyb2xsZWRCeUF1dG9tYXRpb24oUEFM
OjpTZXNzaW9uSUQsIGJvb2wpOwogICAgIGJvb2wgc2Vzc2lvbklzQ29udHJvbGxlZEJ5QXV0b21h
dGlvbihQQUw6OlNlc3Npb25JRCkgY29uc3Q7CiAKLSAgICB2b2lkIHdlYlBhZ2VXYXNBZGRlZChJ
UEM6OkNvbm5lY3Rpb24mLCBQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIs
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKLSAgICB2b2lkIHdlYlBhZ2VXYXNSZW1vdmVkKElQ
Qzo6Q29ubmVjdGlvbiYsIFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7
Ci0gICAgdm9pZCB3ZWJQcm9jZXNzV2FzRGlzY29ubmVjdGVkKElQQzo6Q29ubmVjdGlvbiYpOwot
ICAgIHZvaWQgd2ViUHJvY2Vzc1Nlc3Npb25DaGFuZ2VkKElQQzo6Q29ubmVjdGlvbiYsIFBBTDo6
U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+Jik7CisgICAg
dm9pZCBjb25uZWN0aW9uVG9XZWJQcm9jZXNzQ2xvc2VkKElQQzo6Q29ubmVjdGlvbiYpOwogICAg
IHZvaWQgZ2V0TG9jYWxTdG9yYWdlT3JpZ2luRGV0YWlscyhQQUw6OlNlc3Npb25JRCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpPcmln
aW5EZXRhaWxzPiYmKT4mJik7CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpAQCAt
Mjg2LDYgKzI4NCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhY2Nlc3NUb1RlbXBvcmFyeUZpbGVD
b21wbGV0ZShjb25zdCBTdHJpbmcmIHBhdGgpIGZpbmFsOwogICAgIHZvaWQgc2V0SURCUGVyT3Jp
Z2luUXVvdGEodWludDY0X3QpOwogI2VuZGlmCisKKyAgICB2b2lkIHN5bmNMb2NhbFN0b3JhZ2Uo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGNsZWFyTGVnYWN5UHJpdmF0
ZUJyb3dzaW5nTG9jYWxTdG9yYWdlKCk7CisKICAgICB2b2lkIHVwZGF0ZVF1b3RhQmFzZWRPblNw
YWNlVXNhZ2VGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpDbGllbnRP
cmlnaW4mKTsKIAogI2lmIEVOQUJMRShTQU5EQk9YX0VYVEVOU0lPTlMpCkBAIC01MDAsNiArNTAy
LDggQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBzdGQ6OnVuaXF1ZV9w
dHI8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPj4gbV9uZXR3b3JrU3RvcmFnZVNlc3Np
b25zOwogICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdl
U2Vzc2lvbj4gbV9kZWZhdWx0TmV0d29ya1N0b3JhZ2VTZXNzaW9uOwogCisgICAgUmVmUHRyPFN0
b3JhZ2VNYW5hZ2VyU2V0PiBtX3N0b3JhZ2VNYW5hZ2VyU2V0OworCiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2Vzc0NvY29hKGNvbnN0
IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAgICAgdm9pZCBzZXRTdG9yYWdl
QWNjZXNzQVBJRW5hYmxlZChib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGI3NmRhYTFlZmJhZjQ5
ZmJmZTg0NjRlMzRjMjE1YmM4MDBiNDY2ZDEuLmM1NTNhODg5YTZlMjA4YzQ4ZDNkMzZmYzU5N2Ey
ZTkxYjdlNTM0MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTYzLDYgKzE2MywxMCBAQCBtZXNzYWdl
cyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAjaWYgRU5BQkxFKElOREVYRURf
REFUQUJBU0UpCiAgICAgU2V0SURCUGVyT3JpZ2luUXVvdGEodWludDY0X3QgcXVvdGEpCiAjZW5k
aWYKKworICAgIFN5bmNMb2NhbFN0b3JhZ2UoKSAtPiAoKSBTeW5jaHJvbm91cworICAgIENsZWFy
TGVnYWN5UHJpdmF0ZUJyb3dzaW5nTG9jYWxTdG9yYWdlKCkKKwogICAgIFVwZGF0ZVF1b3RhQmFz
ZWRPblNwYWNlVXNhZ2VGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RydWN0
IFdlYkNvcmU6OkNsaWVudE9yaWdpbiBvcmlnaW4pCiAKICAgICBTdG9yZUFkQ2xpY2tBdHRyaWJ1
dGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OkFkQ2xpY2tBdHRyaWJ1dGlv
biBhZENsaWNrQXR0cmlidXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Nlc3Npb24uY3BwCmluZGV4IDQ4OGI5Mjk4MGFlZDFhZGM2NGFiM2QzY2FmYzNmOGQ4
ZmEyNzYyYmQuLjFhMTM5NjI5MTZhOTkyNDA0MDA4YTJlZjIxYTQxOTNlNmMxNzY2ZWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCkBAIC0z
Myw3ICszMyw2IEBACiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaCIK
ICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJQaW5nTG9hZC5o
IgotI2luY2x1ZGUgIlN0b3JhZ2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5Lmgi
CiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNz
UHJveHkuaCIKQEAgLTg1LDcgKzg0LDYgQEAgTmV0d29ya1Nlc3Npb246Ok5ldHdvcmtTZXNzaW9u
KE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgY29uc3QgTmV0d29ya1Nlc3MKICAgICAs
IG1fZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0xvZ1Rlc3RpbmdFdmVudChwYXJhbWV0ZXJz
LmVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NMb2dUZXN0aW5nRXZlbnQpCiAjZW5kaWYKICAg
ICAsIG1fYWRDbGlja0F0dHJpYnV0aW9uKG1ha2VVbmlxdWVSZWY8QWRDbGlja0F0dHJpYnV0aW9u
TWFuYWdlcj4ocGFyYW1ldGVycy5zZXNzaW9uSUQpKQotICAgICwgbV9zdG9yYWdlTWFuYWdlcihT
dG9yYWdlTWFuYWdlcjo6Y3JlYXRlKFN0cmluZyhwYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVj
dG9yeSkpKQogewogICAgIGlmICghbV9zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkgewogICAgICAg
ICBTdHJpbmcgbmV0d29ya0NhY2hlRGlyZWN0b3J5ID0gcGFyYW1ldGVycy5uZXR3b3JrQ2FjaGVE
aXJlY3Rvcnk7CkBAIC05OSw3ICs5Nyw2IEBAIE5ldHdvcmtTZXNzaW9uOjpOZXR3b3JrU2Vzc2lv
bihOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIGNvbnN0IE5ldHdvcmtTZXNzCiAgICAg
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrQ2FjaGUsICJGYWlsZWQgdG8gaW5pdGlh
bGl6ZSB0aGUgV2ViS2l0IG5ldHdvcmsgZGlzayBjYWNoZSIpOwogICAgIH0KIAotICAgIFNhbmRi
b3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShwYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURp
cmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAgICAgbV9hZENsaWNrQXR0cmlidXRpb24tPnNldFBp
bmdMb2FkRnVuY3Rpb24oW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldKE5ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYgbG9hZFBhcmFtZXRlcnMsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgewogICAgICAgICBpZiAoIXdl
YWtUaGlzKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTEzLDkgKzExMCw2IEBAIE5ldHdvcmtT
ZXNzaW9uOjp+TmV0d29ya1Nlc3Npb24oKQogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCiAgICAgZGVzdHJveVJlc291cmNlTG9hZFN0YXRpc3RpY3MoKTsKICNlbmRpZgotCi0g
ICAgbV9zdG9yYWdlTWFuYWdlci0+cmVzdW1lKCk7Ci0gICAgbV9zdG9yYWdlTWFuYWdlci0+d2Fp
dFVudGlsVGFza3NGaW5pc2hlZCgpOwogfQogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RB
VElTVElDUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Nlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24u
aAppbmRleCA1MDZlN2ZmMDhmYmM5YTc2NGVhODMwMzA5NGI2ZDMwNjc0YTNmM2E0Li42ODQ5YjMw
ZjhkNDZjOTU3NGNhZWQxNDE0NTYyZGVlNTc0Yjk5YmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCkBAIC01Miw3ICs1Miw2IEBAIGNsYXNzIEFk
Q2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXI7CiBjbGFzcyBOZXR3b3JrRGF0YVRhc2s7CiBjbGFzcyBO
ZXR3b3JrUHJvY2VzczsKIGNsYXNzIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjsKLWNsYXNzIFN0b3Jh
Z2VNYW5hZ2VyOwogY2xhc3MgTmV0d29ya1NvY2tldENoYW5uZWw7CiBjbGFzcyBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU7CiBjbGFzcyBXZWJTb2NrZXRUYXNrOwpAQCAtODEsOCArODAs
NiBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWdpc3Rlck5ldHdvcmtEYXRhVGFzayhOZXR3b3JrRGF0
YVRhc2smIHRhc2spIHsgbV9kYXRhVGFza1NldC5hZGQoJnRhc2spOyB9CiAgICAgdm9pZCB1bnJl
Z2lzdGVyTmV0d29ya0RhdGFUYXNrKE5ldHdvcmtEYXRhVGFzayYgdGFzaykgeyBtX2RhdGFUYXNr
U2V0LnJlbW92ZSgmdGFzayk7IH0KIAotICAgIFN0b3JhZ2VNYW5hZ2VyJiBzdG9yYWdlTWFuYWdl
cigpIHsgcmV0dXJuIG1fc3RvcmFnZU1hbmFnZXIuZ2V0KCk7IH0KLQogI2lmIEVOQUJMRShSRVNP
VVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
KiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzLmdldCgpOyB9CiAgICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5h
YmxlZChib29sKTsKQEAgLTE0NSw3ICsxNDIsNiBAQCBwcm90ZWN0ZWQ6CiAKICAgICBQcmVmZXRj
aENhY2hlIG1fcHJlZmV0Y2hDYWNoZTsKIAotICAgIFJlZjxTdG9yYWdlTWFuYWdlcj4gbV9zdG9y
YWdlTWFuYWdlcjsKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgYm9vbCBtX2lzSW52YWxpZGF0
ZWQgeyBmYWxzZSB9OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuY3BwCmlu
ZGV4IGMxYjk3N2NjMWQyYmM3YTgzMDUxYjI2MjEyZjJkMWRlMGU4NTc5ODQuLmIyOWY0OTMzOWYw
M2QxMzNhNWNmNTBhOTA3ZDEyMTM5MDM0MTgxZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFt
ZXRlcnMuY3BwCkBAIC01MCw3ICs1MCw3IEBAIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0
ZXJzIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzOjpwcml2YXRlU2Vzc2lvCiAjaWYg
VVNFKENVUkwpCiAgICAgICAgICwgeyB9LCB7IH0KICNlbmRpZgotICAgICAgICAsIHsgfSwgeyB9
LCBmYWxzZSwgZmFsc2UsIHsgfSwgeyB9LCB7IH0sIHsgfSwgeyB9LCB7IH0sIHsgfSwgeyB9LCB7
IH0sIHsgfQorICAgICAgICAsIHsgfSwgeyB9LCBmYWxzZSwgZmFsc2UsIHsgfSwgeyB9LCB7IH0s
IHsgfSwgeyB9LCB7IH0sIHsgfSwgeyB9CiAgICAgfTsKIH0KIApAQCAtODYsNyArODYsNiBAQCB2
b2lkIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgcmVzb3VyY2VMb2FkU3RhdGlzdGljc01h
bnVhbFByZXZhbGVudFJlc291cmNlOwogICAgIGVuY29kZXIgPDwgZW5hYmxlUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc05TVVJMU2Vzc2lvblN3aXRjaGluZzsKIAotICAgIGVuY29kZXIgPDwgbG9jYWxT
dG9yYWdlRGlyZWN0b3J5IDw8IGxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsK
ICAgICBlbmNvZGVyIDw8IG5ldHdvcmtDYWNoZURpcmVjdG9yeSA8PCBuZXR3b3JrQ2FjaGVEaXJl
Y3RvcnlFeHRlbnNpb25IYW5kbGU7CiAKICAgICBlbmNvZGVyIDw8IGRldmljZU1hbmFnZW1lbnRS
ZXN0cmljdGlvbnNFbmFibGVkOwpAQCAtMjE0LDE2ICsyMTMsNiBAQCBPcHRpb25hbDxOZXR3b3Jr
U2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycz4gTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRl
cnM6OmRlYwogICAgIGRlY29kZXIgPj4gZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc05TVVJM
U2Vzc2lvblN3aXRjaGluZzsKICAgICBpZiAoIWVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NO
U1VSTFNlc3Npb25Td2l0Y2hpbmcpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAg
Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiBsb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7Ci0gICAgZGVjb2Rl
ciA+PiBsb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7Ci0gICAgaWYgKCFsb2NhbFN0b3JhZ2VEaXJlY3Rv
cnkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBPcHRpb25hbDxTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGU+IGxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsK
LSAgICBkZWNvZGVyID4+IGxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKLSAg
ICBpZiAoIWxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFN0cmluZz4gbmV0d29ya0NhY2hlRGly
ZWN0b3J5OwogICAgIGRlY29kZXIgPj4gbmV0d29ya0NhY2hlRGlyZWN0b3J5OwpAQCAtMjc3LDgg
KzI2Niw2IEBAIE9wdGlvbmFsPE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzPiBOZXR3
b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjCiAgICAgICAgICwgV1RGTW92ZSgqZGV2
aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0VuYWJsZWQpCiAgICAgICAgICwgV1RGTW92ZSgqYWxs
TG9hZHNCbG9ja2VkQnlEZXZpY2VNYW5hZ2VtZW50UmVzdHJpY3Rpb25zRm9yVGVzdGluZykKICAg
ICAgICAgLCBXVEZNb3ZlKCpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFudWFsUHJldmFsZW50UmVz
b3VyY2UpCi0gICAgICAgICwgV1RGTW92ZSgqbG9jYWxTdG9yYWdlRGlyZWN0b3J5KQotICAgICAg
ICAsIFdURk1vdmUoKmxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSkKICAgICAg
ICAgLCBXVEZNb3ZlKCpuZXR3b3JrQ2FjaGVEaXJlY3RvcnkpCiAgICAgICAgICwgV1RGTW92ZSgq
bmV0d29ya0NhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKQogICAgIH19OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFy
YW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNy
ZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IDE4MzNlNDY3ZmY2YzUyZDI0MzhhNjcwMmJkMTc4ZTU3
YzUyYjY2YTMuLjUwYmUzMGU4YjZmZmUwZGIxMTlmZTEwMjcwZDFjMWUyZDg3YTlmY2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlv
blBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtT
ZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTkyLDggKzkyLDYgQEAgc3RydWN0IE5ldHdv
cmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICAgICBib29sIGFsbExvYWRzQmxvY2tlZEJ5
RGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0ZvclRlc3RpbmcgeyBmYWxzZSB9OwogICAgIFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW51YWxQcmV2
YWxlbnRSZXNvdXJjZSB7IH07CiAKLSAgICBTdHJpbmcgbG9jYWxTdG9yYWdlRGlyZWN0b3J5Owot
ICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBsb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNp
b25IYW5kbGU7CiAgICAgU3RyaW5nIG5ldHdvcmtDYWNoZURpcmVjdG9yeTsKICAgICBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGUgbmV0d29ya0NhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9M
b2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dl
YlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwCmluZGV4IGJmNTE1NzhmYjE0N2RkZGM4
N2U2NmQ5MGE1ZWRkMDJhNGNkNzI2OTMuLjhmNDc2M2M5ZGM4NmFiNGE0MmQ5NDZmMjZkYjI4YmNj
NjkwMjljYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3Rv
cmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcApAQCAtMjU5LDcgKzI1
OSw2IEBAIHZvaWQgTG9jYWxTdG9yYWdlRGF0YWJhc2U6OnVwZGF0ZURhdGFiYXNlKCkKICAgICBp
ZiAobV9pc0Nsb3NlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJUKG1fZGlkU2NoZWR1
bGVEYXRhYmFzZVVwZGF0ZSk7CiAgICAgbV9kaWRTY2hlZHVsZURhdGFiYXNlVXBkYXRlID0gZmFs
c2U7CiAKICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBjaGFuZ2VkSXRlbXM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdl
RGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2Nh
bFN0b3JhZ2VEYXRhYmFzZS5oCmluZGV4IDRkNjg3NmIxNzEzZmUxNDdjOWVlNzFhZTliNmQ2OTQ2
MjM5N2FlZmQuLjhjZmIyNGIyMWYzYTBhNDI2YmRiMjJkNDVjYWI0MjA5NTIzZWM4MTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3Jh
Z2VEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFn
ZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5oCkBAIC01NSw2ICs1NSw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIHJlbW92ZUl0ZW0oY29uc3QgU3RyaW5nJiBrZXkpOwogICAgIHZvaWQgY2xlYXIoKTsKIAor
ICAgIHZvaWQgdXBkYXRlRGF0YWJhc2UoKTsKKwogICAgIC8vIFdpbGwgYmxvY2sgdW50aWwgYWxs
IHBlbmRpbmcgY2hhbmdlcyBoYXZlIGJlZW4gd3JpdHRlbiB0byBkaXNrLgogICAgIHZvaWQgY2xv
c2UoKTsKIApAQCAtNzMsNyArNzUsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgaXRlbURpZENoYW5n
ZShjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAKICAgICB2b2lkIHNj
aGVkdWxlRGF0YWJhc2VVcGRhdGUoKTsKLSAgICB2b2lkIHVwZGF0ZURhdGFiYXNlKCk7CiAgICAg
dm9pZCB1cGRhdGVEYXRhYmFzZVdpdGhDaGFuZ2VkSXRlbXMoY29uc3QgSGFzaE1hcDxTdHJpbmcs
IFN0cmluZz4mKTsKIAogICAgIGJvb2wgZGF0YWJhc2VJc0VtcHR5KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJh
c2VUcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9M
b2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3BwCmluZGV4IDA3YTYzM2ZiZmU5YmU1OWVkYmVk
NTM5Yzk2ZTE5ZTRiMWJiZDI1ODMuLjY3MzI3MDk0MzJmM2E2ZTc1MjUxMTdmZWVlNzlmYjVjOGE2
MTY5MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFn
ZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3BwCkBA
IC0zOSwyNCArMzksMTcgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKLVJlZjxMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI+IExvY2FsU3RvcmFnZURh
dGFiYXNlVHJhY2tlcjo6Y3JlYXRlKFJlZjxXb3JrUXVldWU+JiYgcXVldWUsIFN0cmluZyYmIGxv
Y2FsU3RvcmFnZURpcmVjdG9yeSkKK1JlZjxMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI+IExv
Y2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6Y3JlYXRlKFN0cmluZyYmIGxvY2FsU3RvcmFnZURp
cmVjdG9yeSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBMb2NhbFN0b3JhZ2VEYXRhYmFz
ZVRyYWNrZXIoV1RGTW92ZShxdWV1ZSksIFdURk1vdmUobG9jYWxTdG9yYWdlRGlyZWN0b3J5KSkp
OworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcihX
VEZNb3ZlKGxvY2FsU3RvcmFnZURpcmVjdG9yeSkpKTsKIH0KIAotTG9jYWxTdG9yYWdlRGF0YWJh
c2VUcmFja2VyOjpMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIoUmVmPFdvcmtRdWV1ZT4mJiBx
dWV1ZSwgU3RyaW5nJiYgbG9jYWxTdG9yYWdlRGlyZWN0b3J5KQotICAgIDogbV9xdWV1ZShXVEZN
b3ZlKHF1ZXVlKSkKLSAgICAsIG1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5KFdURk1vdmUobG9jYWxT
dG9yYWdlRGlyZWN0b3J5KSkKK0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6TG9jYWxTdG9y
YWdlRGF0YWJhc2VUcmFja2VyKFN0cmluZyYmIGxvY2FsU3RvcmFnZURpcmVjdG9yeSkKKyAgICA6
IG1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5KFdURk1vdmUobG9jYWxTdG9yYWdlRGlyZWN0b3J5KSkK
IHsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIEFTU0VSVCghUnVuTG9vcDo6
aXNNYWluKCkpOwogCi0gICAgLy8gTWFrZSBzdXJlIHRoZSBlbmNvZGluZyBpcyBpbml0aWFsaXpl
ZCBiZWZvcmUgd2Ugc3RhcnQgZGlzcGF0Y2hpbmcgdGhpbmdzIHRvIHRoZSBxdWV1ZS4KLSAgICBV
VEY4RW5jb2RpbmcoKTsKLQotICAgIG1fcXVldWUtPmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyldKCkgbXV0YWJsZSB7Ci0gICAgICAgIC8vIERlbGV0ZSBsZWdhY3kgc3Rv
cmFnZVRyYWNrZXIgZGF0YWJhc2UgZmlsZS4KLSAgICAgICAgU1FMaXRlRmlsZVN5c3RlbTo6ZGVs
ZXRlRGF0YWJhc2VGaWxlKHByb3RlY3RlZFRoaXMtPmRhdGFiYXNlUGF0aCgiU3RvcmFnZVRyYWNr
ZXIuZGIiKSk7Ci0gICAgfSk7CisgICAgU1FMaXRlRmlsZVN5c3RlbTo6ZGVsZXRlRGF0YWJhc2VG
aWxlKGRhdGFiYXNlUGF0aCgiU3RvcmFnZVRyYWNrZXIuZGIiKSk7CiB9CiAKIFN0cmluZyBMb2Nh
bFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OmxvY2FsU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0CkBA
IC02Niw3ICs1OSw3IEBAIFN0cmluZyBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OmxvY2Fs
U3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0CiAKIExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6
fkxvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcigpCiB7Ci0gICAgQVNTRVJUKFJ1bkxvb3A6Omlz
TWFpbigpKTsKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIH0KIAogU3RyaW5nIExv
Y2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6ZGF0YWJhc2VQYXRoKGNvbnN0IFNlY3VyaXR5T3Jp
Z2luRGF0YSYgc2VjdXJpdHlPcmlnaW4pIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0
YWJhc2VUcmFja2VyLmgKaW5kZXggNWQ5ZDJjMmE0YzdkYTAxM2Y2MGYxMWViNDM2ZjE4ZTQ3NTgw
MjA5MS4uODViNDllZTI1YjhhY2NjOWRhZjk5OTM0ZGU3ODhjMjM1ZmQ1YWJmMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURh
dGFiYXNlVHJhY2tlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3Rv
cmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuaApAQCAtMzUsOSArMzUsOSBAQAogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlciwg
V1RGOjpEZXN0cnVjdGlvblRocmVhZDo6TWFpblJ1bkxvb3A+IHsKK2NsYXNzIExvY2FsU3RvcmFn
ZURhdGFiYXNlVHJhY2tlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxMb2NhbFN0b3Jh
Z2VEYXRhYmFzZVRyYWNrZXI+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPExvY2FsU3RvcmFn
ZURhdGFiYXNlVHJhY2tlcj4gY3JlYXRlKFJlZjxXb3JrUXVldWU+JiYsIFN0cmluZyYmIGxvY2Fs
U3RvcmFnZURpcmVjdG9yeSk7CisgICAgc3RhdGljIFJlZjxMb2NhbFN0b3JhZ2VEYXRhYmFzZVRy
YWNrZXI+IGNyZWF0ZShTdHJpbmcmJiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpOwogICAgIH5Mb2Nh
bFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIoKTsKIAogICAgIFN0cmluZyBkYXRhYmFzZVBhdGgoY29u
c3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJikgY29uc3Q7CkBAIC02NCw3ICs2NCw3IEBA
IHB1YmxpYzoKICAgICBWZWN0b3I8T3JpZ2luRGV0YWlscz4gb3JpZ2luRGV0YWlscygpOwogCiBw
cml2YXRlOgotICAgIExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcihSZWY8V29ya1F1ZXVlPiYm
LCBTdHJpbmcmJiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpOworICAgIExvY2FsU3RvcmFnZURhdGFi
YXNlVHJhY2tlcihTdHJpbmcmJiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpOwogCiAgICAgU3RyaW5n
IGRhdGFiYXNlUGF0aChjb25zdCBTdHJpbmcmIGZpbGVuYW1lKSBjb25zdDsKICAgICBTdHJpbmcg
bG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3Q7CkBAIC03Myw4ICs3Myw2IEBAIHByaXZhdGU6
CiAgICAgICAgIENyZWF0ZUlmTm9uRXhpc3RlbnQsCiAgICAgICAgIFNraXBJZk5vbkV4aXN0ZW50
CiAgICAgfTsKLQotICAgIFJlZjxXb3JrUXVldWU+IG1fcXVldWU7CiAgICAgCiAgICAgLy8gSXQg
aXMgbm90IHNhZmUgdG8gdXNlIHRoaXMgbWVtYmVyIGZyb20gYSBiYWNrZ3JvdW5kIHRocmVhZCwg
Y2FsbCBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSBpbnN0ZWFkLgogICAgIGNvbnN0IFN0cmluZyBt
X2xvY2FsU3RvcmFnZURpcmVjdG9yeTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VOYW1lc3BhY2UuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZU5hbWVzcGFjZS5jcHAK
aW5kZXggNTRkYzc5OTQyOGNkYThiMzA3MDY1ZDlhN2Q2N2U3MGIzODJiYjQ0Mi4uM2FlYzY2OGRm
MTBiYzVjNTFlZTM2NGY5ZmVmZWRjNTBkZDQ5NDQxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZU5hbWVzcGFjZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZU5h
bWVzcGFjZS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgTG9jYWxTdG9yYWdlTmFtZXNwYWNlOjp+TG9j
YWxTdG9yYWdlTmFtZXNwYWNlKCkKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIH0K
IAotYXV0byBMb2NhbFN0b3JhZ2VOYW1lc3BhY2U6OmdldE9yQ3JlYXRlU3RvcmFnZUFyZWEoU2Vj
dXJpdHlPcmlnaW5EYXRhJiYgc2VjdXJpdHlPcmlnaW4sIElzRXBoZW1lcmFsIGlzRXBoZW1lcmFs
KSAtPiBSZWY8U3RvcmFnZUFyZWE+CitSZWY8U3RvcmFnZUFyZWE+IExvY2FsU3RvcmFnZU5hbWVz
cGFjZTo6Z2V0T3JDcmVhdGVTdG9yYWdlQXJlYShTZWN1cml0eU9yaWdpbkRhdGEmJiBzZWN1cml0
eU9yaWdpbiwgSXNFcGhlbWVyYWwgaXNFcGhlbWVyYWwpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29w
Ojppc01haW4oKSk7CiAgICAgcmV0dXJuICptX3N0b3JhZ2VBcmVhTWFwLmVuc3VyZShzZWN1cml0
eU9yaWdpbiwgWyZdKCkgbXV0YWJsZSB7CkBAIC04MSwxMSArODEsNCBAQCBWZWN0b3I8U2VjdXJp
dHlPcmlnaW5EYXRhPiBMb2NhbFN0b3JhZ2VOYW1lc3BhY2U6OmVwaGVtZXJhbE9yaWdpbnMoKSBj
b25zdAogICAgIHJldHVybiBvcmlnaW5zOwogfQogCi12b2lkIExvY2FsU3RvcmFnZU5hbWVzcGFj
ZTo6Y2xvbmVUbyhMb2NhbFN0b3JhZ2VOYW1lc3BhY2UmIG5ld0xvY2FsU3RvcmFnZU5hbWVzcGFj
ZSkKLXsKLSAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBmb3IgKGF1dG8mIHBh
aXIgOiBtX3N0b3JhZ2VBcmVhTWFwKQotICAgICAgICBuZXdMb2NhbFN0b3JhZ2VOYW1lc3BhY2Uu
bV9zdG9yYWdlQXJlYU1hcC5hZGQocGFpci5rZXksIHBhaXIudmFsdWUtPmNsb25lKCkpOwotfQot
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VOYW1lc3BhY2UuaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VOYW1lc3BhY2UuaAppbmRl
eCA0NzE5MGNjNmNiNDUwMzk3MmMyNzJkMGNjZjQ5Njc3OGE5MDljODhmLi45YTc2ZTFjNjM4ZGI0
MzI2MGZmODI0NDU2N2M5NGU3ZDAzYjNiZGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlTmFtZXNwYWNlLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZU5hbWVzcGFj
ZS5oCkBAIC01NCw3ICs1NCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyQWxsU3RvcmFnZUFy
ZWFzKCk7CiAKICAgICBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBlcGhlbWVy
YWxPcmlnaW5zKCkgY29uc3Q7Ci0gICAgdm9pZCBjbG9uZVRvKExvY2FsU3RvcmFnZU5hbWVzcGFj
ZSYgbmV3TG9jYWxTdG9yYWdlTmFtZXNwYWNlKTsKIAogcHJpdmF0ZToKICAgICBMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UoU3RvcmFnZU1hbmFnZXImLCB1aW50NjRfdCBzdG9yYWdlTWFuYWdlcklEKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TZXNz
aW9uU3RvcmFnZU5hbWVzcGFjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dl
YlN0b3JhZ2UvU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UuY3BwCmluZGV4IDU4MGE4ZTYyZWFmMDQ0
ZTZjNDU1NjQzMmE2MDE2OWYyMWZkNzE2YzEuLmRkZjgyMTJhNDljMzdkNWNmN2VhM2I4MmMxMjJi
MmVkZWJiN2RkN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2Vi
U3RvcmFnZS9TZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlLmNwcApAQCAt
NDMsMjAgKzQzLDcgQEAgU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2U6On5TZXNzaW9uU3RvcmFnZU5h
bWVzcGFjZSgpCiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiB9CiAKLXZvaWQgU2Vz
c2lvblN0b3JhZ2VOYW1lc3BhY2U6OmFkZEFsbG93ZWRDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlv
bjo6VW5pcXVlSUQgYWxsb3dlZENvbm5lY3Rpb24pCi17Ci0gICAgQVNTRVJUKCFSdW5Mb29wOjpp
c01haW4oKSk7Ci0gICAgbV9hbGxvd2VkQ29ubmVjdGlvbnMuYWRkKGFsbG93ZWRDb25uZWN0aW9u
KTsKLX0KLQotCi12b2lkIFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlOjpyZW1vdmVBbGxvd2VkQ29u
bmVjdGlvbihJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGFsbG93ZWRDb25uZWN0aW9uKQotewot
ICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIEFTU0VSVChtX2FsbG93ZWRDb25u
ZWN0aW9ucy5jb250YWlucyhhbGxvd2VkQ29ubmVjdGlvbikpOwotICAgIG1fYWxsb3dlZENvbm5l
Y3Rpb25zLnJlbW92ZShhbGxvd2VkQ29ubmVjdGlvbik7Ci19Ci1hdXRvIFNlc3Npb25TdG9yYWdl
TmFtZXNwYWNlOjpnZXRPckNyZWF0ZVN0b3JhZ2VBcmVhKFNlY3VyaXR5T3JpZ2luRGF0YSYmIHNl
Y3VyaXR5T3JpZ2luKSAtPiBSZWY8U3RvcmFnZUFyZWE+CitSZWY8U3RvcmFnZUFyZWE+IFNlc3Np
b25TdG9yYWdlTmFtZXNwYWNlOjpnZXRPckNyZWF0ZVN0b3JhZ2VBcmVhKFNlY3VyaXR5T3JpZ2lu
RGF0YSYmIHNlY3VyaXR5T3JpZ2luKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkp
OwogICAgIHJldHVybiAqbV9zdG9yYWdlQXJlYU1hcC5lbnN1cmUoc2VjdXJpdHlPcmlnaW4sIFt0
aGlzLCAmc2VjdXJpdHlPcmlnaW5dKCkgbXV0YWJsZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TZXNzaW9uU3RvcmFnZU5h
bWVzcGFjZS5oCmluZGV4IDcyMDc0OGY2Nzg2ODA2YjBlYzEwZDJiMGMyN2NlZjAzMmEyZjUzMGYu
LjE4ZjBmMDliODAyMTE4NGEwNDhkM2Y1MzhmY2VlNDYzYzM5MzQ3ZmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TZXNzaW9uU3RvcmFnZU5hbWVz
cGFjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TZXNz
aW9uU3RvcmFnZU5hbWVzcGFjZS5oCkBAIC00NSwxMCArNDUsNiBAQCBwdWJsaWM6CiAKICAgICBi
b29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX3N0b3JhZ2VBcmVhTWFwLmlzRW1wdHkoKTsg
fQogCi0gICAgY29uc3QgSGFzaFNldDxJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEPiYgYWxsb3dl
ZENvbm5lY3Rpb25zKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd2VkQ29ubmVjdGlvbnM7IH0KLSAg
ICB2b2lkIGFkZEFsbG93ZWRDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQpOwot
ICAgIHZvaWQgcmVtb3ZlQWxsb3dlZENvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJ
RCk7Ci0KICAgICBSZWY8U3RvcmFnZUFyZWE+IGdldE9yQ3JlYXRlU3RvcmFnZUFyZWEoV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYpOwogCiAgICAgdm9pZCBjbG9uZVRvKFNlc3Npb25TdG9y
YWdlTmFtZXNwYWNlJiBuZXdTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSk7CkBAIC02MSw3ICs1Nyw2
IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgU2Vzc2lvblN0b3JhZ2VOYW1lc3Bh
Y2UodW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKIAotICAgIEhhc2hTZXQ8SVBDOjpDb25uZWN0aW9u
OjpVbmlxdWVJRD4gbV9hbGxvd2VkQ29ubmVjdGlvbnM7CiAgICAgdW5zaWduZWQgbV9xdW90YUlu
Qnl0ZXMgeyAwIH07CiAKICAgICBIYXNoTWFwPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSwg
UmVmUHRyPFN0b3JhZ2VBcmVhPj4gbV9zdG9yYWdlQXJlYU1hcDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWEuY3BwCmluZGV4
IDM0OTQzMWZlYTU2YzQ3YWI4MTQ2MGNiODNmNTU2ZTcyNGRjYTJkNGQuLjJkMTI1ODM1Y2JjOGI1
MjJjMzNhYWU1ODAxNGRiZmNhMGE2ODkxNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhLmNwcApAQCAtMzYsMTEgKzM2
LDE4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAor
c3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlU3RvcmFnZUFyZWFJZGVudGlmaWVyKCkKK3sKKyAgICBz
dGF0aWMgdWludDY0X3QgaWRlbnRpZmllcjsKKyAgICByZXR1cm4gKytpZGVudGlmaWVyOworfQor
CiBTdG9yYWdlQXJlYTo6U3RvcmFnZUFyZWEoTG9jYWxTdG9yYWdlTmFtZXNwYWNlKiBsb2NhbFN0
b3JhZ2VOYW1lc3BhY2UsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4s
IHVuc2lnbmVkIHF1b3RhSW5CeXRlcykKICAgICA6IG1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlKG1h
a2VXZWFrUHRyKGxvY2FsU3RvcmFnZU5hbWVzcGFjZSkpCiAgICAgLCBtX3NlY3VyaXR5T3JpZ2lu
KHNlY3VyaXR5T3JpZ2luKQogICAgICwgbV9xdW90YUluQnl0ZXMocXVvdGFJbkJ5dGVzKQogICAg
ICwgbV9zdG9yYWdlTWFwKFN0b3JhZ2VNYXA6OmNyZWF0ZShtX3F1b3RhSW5CeXRlcykpCisgICAg
LCBtX2lkZW50aWZpZXIoZ2VuZXJhdGVTdG9yYWdlQXJlYUlkZW50aWZpZXIoKSkKIHsKICAgICBB
U1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIH0KQEAgLTQ4LDMwICs1NSwzMiBAQCBTdG9yYWdl
QXJlYTo6U3RvcmFnZUFyZWEoTG9jYWxTdG9yYWdlTmFtZXNwYWNlKiBsb2NhbFN0b3JhZ2VOYW1l
c3BhY2UsIGNvbnN0IFNlYwogU3RvcmFnZUFyZWE6On5TdG9yYWdlQXJlYSgpCiB7CiAgICAgQVNT
RVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgQVNTRVJUKG1fZXZlbnRMaXN0ZW5lcnMuaXNF
bXB0eSgpKTsKIAogICAgIGlmIChtX2xvY2FsU3RvcmFnZURhdGFiYXNlKQogICAgICAgICBtX2xv
Y2FsU3RvcmFnZURhdGFiYXNlLT5jbG9zZSgpOwogfQogCi12b2lkIFN0b3JhZ2VBcmVhOjphZGRM
aXN0ZW5lcihJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGNvbm5lY3Rpb25JRCwgdWludDY0X3Qg
c3RvcmFnZU1hcElEKQordm9pZCBTdG9yYWdlQXJlYTo6YWRkTGlzdGVuZXIoSVBDOjpDb25uZWN0
aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uSUQpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01h
aW4oKSk7Ci0gICAgQVNTRVJUKCFtX2V2ZW50TGlzdGVuZXJzLmNvbnRhaW5zKHN0ZDo6bWFrZV9w
YWlyKGNvbm5lY3Rpb25JRCwgc3RvcmFnZU1hcElEKSkpOwotICAgIG1fZXZlbnRMaXN0ZW5lcnMu
YWRkKHN0ZDo6bWFrZV9wYWlyKGNvbm5lY3Rpb25JRCwgc3RvcmFnZU1hcElEKSk7CisgICAgQVNT
RVJUKCFtX2V2ZW50TGlzdGVuZXJzLmNvbnRhaW5zKGNvbm5lY3Rpb25JRCkpOworCisgICAgaWYg
KG1fZXZlbnRMaXN0ZW5lcnMuaXNFbXB0eSgpICYmICFpc0VwaGVtZXJhbCgpKQorICAgICAgICBv
cGVuRGF0YWJhc2VBbmRJbXBvcnRJdGVtc0lmTmVlZGVkKCk7CisKKyAgICBtX2V2ZW50TGlzdGVu
ZXJzLmFkZChjb25uZWN0aW9uSUQpOwogfQogCi12b2lkIFN0b3JhZ2VBcmVhOjpyZW1vdmVMaXN0
ZW5lcihJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGNvbm5lY3Rpb25JRCwgdWludDY0X3Qgc3Rv
cmFnZU1hcElEKQordm9pZCBTdG9yYWdlQXJlYTo6cmVtb3ZlTGlzdGVuZXIoSVBDOjpDb25uZWN0
aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uSUQpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01h
aW4oKSk7Ci0gICAgQVNTRVJUKGlzRXBoZW1lcmFsKCkgfHwgbV9ldmVudExpc3RlbmVycy5jb250
YWlucyhzdGQ6Om1ha2VfcGFpcihjb25uZWN0aW9uSUQsIHN0b3JhZ2VNYXBJRCkpKTsKLSAgICBt
X2V2ZW50TGlzdGVuZXJzLnJlbW92ZShzdGQ6Om1ha2VfcGFpcihjb25uZWN0aW9uSUQsIHN0b3Jh
Z2VNYXBJRCkpOworICAgIG1fZXZlbnRMaXN0ZW5lcnMucmVtb3ZlKGNvbm5lY3Rpb25JRCk7CiB9
CiAKLWJvb2wgU3RvcmFnZUFyZWE6Omhhc0xpc3RlbmVyKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVl
SUQgY29ubmVjdGlvbklELCB1aW50NjRfdCBzdG9yYWdlTWFwSUQpIGNvbnN0Citib29sIFN0b3Jh
Z2VBcmVhOjpoYXNMaXN0ZW5lcihJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGNvbm5lY3Rpb25J
RCkgY29uc3QKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICByZXR1cm4g
bV9ldmVudExpc3RlbmVycy5jb250YWlucyhzdGQ6Om1ha2VfcGFpcihjb25uZWN0aW9uSUQsIHN0
b3JhZ2VNYXBJRCkpOworICAgIHJldHVybiBtX2V2ZW50TGlzdGVuZXJzLmNvbnRhaW5zKGNvbm5l
Y3Rpb25JRCk7CiB9CiAKIFJlZjxTdG9yYWdlQXJlYT4gU3RvcmFnZUFyZWE6OmNsb25lKCkgY29u
c3QKQEAgLTEwNSwyNSArMTE0LDYgQEAgdm9pZCBTdG9yYWdlQXJlYTo6c2V0SXRlbShJUEM6OkNv
bm5lY3Rpb246OlVuaXF1ZUlEIHNvdXJjZUNvbm5lY3Rpb24sIHVpbnQ2NF90IHMKICAgICBkaXNw
YXRjaEV2ZW50cyhzb3VyY2VDb25uZWN0aW9uLCBzb3VyY2VTdG9yYWdlQXJlYUlELCBrZXksIG9s
ZFZhbHVlLCB2YWx1ZSwgdXJsU3RyaW5nKTsKIH0KIAotdm9pZCBTdG9yYWdlQXJlYTo6c2V0SXRl
bXMoY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIGl0ZW1zKQotewotICAgIEFTU0VSVCgh
UnVuTG9vcDo6aXNNYWluKCkpOwotICAgIC8vIEltcG9ydCBpdGVtcyBmcm9tIHdlYiBwcm9jZXNz
IGlmIGl0ZW1zIGFyZSBub3Qgc3RvcmVkIG9uIGRpc2suCi0gICAgaWYgKCFpc0VwaGVtZXJhbCgp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBmb3IgKGF1dG8mIGl0ZW0gOiBpdGVtcykgewotICAg
ICAgICBTdHJpbmcgb2xkVmFsdWU7Ci0gICAgICAgIGJvb2wgcXVvdGFFeGNlcHRpb247Ci0gICAg
ICAgIGF1dG8gbmV3U3RvcmFnZU1hcCA9IG1fc3RvcmFnZU1hcC0+c2V0SXRlbShpdGVtLmtleSwg
aXRlbS52YWx1ZSwgb2xkVmFsdWUsIHF1b3RhRXhjZXB0aW9uKTsKLSAgICAgICAgaWYgKG5ld1N0
b3JhZ2VNYXApCi0gICAgICAgICAgICBtX3N0b3JhZ2VNYXAgPSBXVEZNb3ZlKG5ld1N0b3JhZ2VN
YXApOwotICAgICAgICAKLSAgICAgICAgaWYgKHF1b3RhRXhjZXB0aW9uKQotICAgICAgICAgICAg
cmV0dXJuOwotICAgIH0KLX0KLQogdm9pZCBTdG9yYWdlQXJlYTo6cmVtb3ZlSXRlbShJUEM6OkNv
bm5lY3Rpb246OlVuaXF1ZUlEIHNvdXJjZUNvbm5lY3Rpb24sIHVpbnQ2NF90IHNvdXJjZVN0b3Jh
Z2VBcmVhSUQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHVybFN0cmluZykKIHsK
ICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKQEAgLTE3OCw3ICsxNjgsNyBAQCB2b2lk
IFN0b3JhZ2VBcmVhOjpjbGVhcigpCiAgICAgfQogCiAgICAgZm9yIChhdXRvIGl0ID0gbV9ldmVu
dExpc3RlbmVycy5iZWdpbigpLCBlbmQgPSBtX2V2ZW50TGlzdGVuZXJzLmVuZCgpOyBpdCAhPSBl
bmQ7ICsraXQpIHsKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb25uZWN0aW9u
SUQgPSBpdC0+Zmlyc3QsIGRlc3RpbmF0aW9uU3RvcmFnZUFyZWFJRCA9IGl0LT5zZWNvbmRdIHsK
KyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb25uZWN0aW9uSUQgPSAqaXQsIGRl
c3RpbmF0aW9uU3RvcmFnZUFyZWFJRCA9IG1faWRlbnRpZmllcl0gewogICAgICAgICAgICAgaWYg
KGF1dG8qIGNvbm5lY3Rpb24gPSBJUEM6OkNvbm5lY3Rpb246OmNvbm5lY3Rpb24oY29ubmVjdGlv
bklEKSkKICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdl
QXJlYU1hcDo6Q2xlYXJDYWNoZSgpLCBkZXN0aW5hdGlvblN0b3JhZ2VBcmVhSUQpOwogICAgICAg
ICB9KTsKQEAgLTE5Miw5ICsxODIsMTAgQEAgdm9pZCBTdG9yYWdlQXJlYTo6b3BlbkRhdGFiYXNl
QW5kSW1wb3J0SXRlbXNJZk5lZWRlZCgpIGNvbnN0CiAgICAgICAgIHJldHVybjsKIAogICAgIEFT
U0VSVChtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZS0+c3RvcmFnZU1hbmFnZXIoKS0+bG9jYWxTdG9y
YWdlRGF0YWJhc2VUcmFja2VyKCkpOworICAgIEFTU0VSVChtX3F1ZXVlKTsKICAgICAvLyBXZSBv
cGVuIHRoZSBkYXRhYmFzZSBoZXJlIGV2ZW4gaWYgd2UndmUgYWxyZWFkeSBpbXBvcnRlZCBvdXIg
aXRlbXMgdG8gZW5zdXJlIHRoYXQgdGhlIGRhdGFiYXNlIGlzIG9wZW4gaWYgd2UgbmVlZCB0byB3
cml0ZSB0byBpdC4KICAgICBpZiAoIW1fbG9jYWxTdG9yYWdlRGF0YWJhc2UpCi0gICAgICAgIG1f
bG9jYWxTdG9yYWdlRGF0YWJhc2UgPSBMb2NhbFN0b3JhZ2VEYXRhYmFzZTo6Y3JlYXRlKG1fbG9j
YWxTdG9yYWdlTmFtZXNwYWNlLT5zdG9yYWdlTWFuYWdlcigpLT53b3JrUXVldWUoKSwgKm1fbG9j
YWxTdG9yYWdlTmFtZXNwYWNlLT5zdG9yYWdlTWFuYWdlcigpLT5sb2NhbFN0b3JhZ2VEYXRhYmFz
ZVRyYWNrZXIoKSwgbV9zZWN1cml0eU9yaWdpbik7CisgICAgICAgIG1fbG9jYWxTdG9yYWdlRGF0
YWJhc2UgPSBMb2NhbFN0b3JhZ2VEYXRhYmFzZTo6Y3JlYXRlKCptX3F1ZXVlLCAqbV9sb2NhbFN0
b3JhZ2VOYW1lc3BhY2UtPnN0b3JhZ2VNYW5hZ2VyKCktPmxvY2FsU3RvcmFnZURhdGFiYXNlVHJh
Y2tlcigpLCBtX3NlY3VyaXR5T3JpZ2luKTsKIAogICAgIGlmIChtX2RpZEltcG9ydEl0ZW1zRnJv
bURhdGFiYXNlKQogICAgICAgICByZXR1cm47CkBAIC0yMDcsMTMgKzE5OCwyMSBAQCB2b2lkIFN0
b3JhZ2VBcmVhOjpkaXNwYXRjaEV2ZW50cyhJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIHNvdXJj
ZUNvbm5lY3Rpb24sIHVpbgogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAg
IGZvciAoYXV0byBpdCA9IG1fZXZlbnRMaXN0ZW5lcnMuYmVnaW4oKSwgZW5kID0gbV9ldmVudExp
c3RlbmVycy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIHNvdXJjZVN0b3JhZ2VB
cmVhSUQgPSBpdC0+Zmlyc3QgPT0gc291cmNlQ29ubmVjdGlvbiA/IHNvdXJjZVN0b3JhZ2VBcmVh
SUQgOiAwOworICAgICAgICBzb3VyY2VTdG9yYWdlQXJlYUlEID0gKml0ID09IHNvdXJjZUNvbm5l
Y3Rpb24gPyBzb3VyY2VTdG9yYWdlQXJlYUlEIDogMDsKIAotICAgICAgICBSdW5Mb29wOjptYWlu
KCkuZGlzcGF0Y2goW2Nvbm5lY3Rpb25JRCA9IGl0LT5maXJzdCwgc291cmNlU3RvcmFnZUFyZWFJ
RCwgZGVzdGluYXRpb25TdG9yYWdlQXJlYUlEID0gaXQtPnNlY29uZCwga2V5ID0ga2V5Lmlzb2xh
dGVkQ29weSgpLCBvbGRWYWx1ZSA9IG9sZFZhbHVlLmlzb2xhdGVkQ29weSgpLCBuZXdWYWx1ZSA9
IG5ld1ZhbHVlLmlzb2xhdGVkQ29weSgpLCB1cmxTdHJpbmcgPSB1cmxTdHJpbmcuaXNvbGF0ZWRD
b3B5KCldIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb25uZWN0aW9uSUQg
PSAqaXQsIHNvdXJjZVN0b3JhZ2VBcmVhSUQsIGRlc3RpbmF0aW9uU3RvcmFnZUFyZWFJRCA9IG1f
aWRlbnRpZmllciwga2V5ID0ga2V5Lmlzb2xhdGVkQ29weSgpLCBvbGRWYWx1ZSA9IG9sZFZhbHVl
Lmlzb2xhdGVkQ29weSgpLCBuZXdWYWx1ZSA9IG5ld1ZhbHVlLmlzb2xhdGVkQ29weSgpLCB1cmxT
dHJpbmcgPSB1cmxTdHJpbmcuaXNvbGF0ZWRDb3B5KCldIHsKICAgICAgICAgICAgIGlmIChhdXRv
KiBjb25uZWN0aW9uID0gSVBDOjpDb25uZWN0aW9uOjpjb25uZWN0aW9uKGNvbm5lY3Rpb25JRCkp
CiAgICAgICAgICAgICAgICAgY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U3RvcmFnZUFyZWFN
YXA6OkRpc3BhdGNoU3RvcmFnZUV2ZW50KHNvdXJjZVN0b3JhZ2VBcmVhSUQsIGtleSwgb2xkVmFs
dWUsIG5ld1ZhbHVlLCB1cmxTdHJpbmcpLCBkZXN0aW5hdGlvblN0b3JhZ2VBcmVhSUQpOwogICAg
ICAgICB9KTsKICAgICB9CiB9CiAKK3ZvaWQgU3RvcmFnZUFyZWE6OnN5bmNUb0RhdGFiYXNlKCkK
K3sKKyAgICBpZiAoIW1fbG9jYWxTdG9yYWdlRGF0YWJhc2UpCisgICAgICAgIHJldHVybjsKKwor
ICAgIG1fbG9jYWxTdG9yYWdlRGF0YWJhc2UtPnVwZGF0ZURhdGFiYXNlKCk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWEuaAppbmRleCAwMDAxMDc1NGM3ZjQxYTI2OTJlODMxN2M1
Njc5ODVjYTcwMDIyNzc1Li40ZDMzYzRhMjYzZWIxNjVjYzY2ODMxNWY5ZGY5MGQ2YTIwMGYwMWZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3Rv
cmFnZUFyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2Uv
U3RvcmFnZUFyZWEuaApAQCAtNDksMTUgKzQ5LDE1IEBAIHB1YmxpYzoKICAgICB+U3RvcmFnZUFy
ZWEoKTsKIAogICAgIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlP
cmlnaW4oKSBjb25zdCB7IHJldHVybiBtX3NlY3VyaXR5T3JpZ2luOyB9CisgICAgdWludDY0X3Qg
aWRlbnRpZmllcigpIHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogCi0gICAgdm9pZCBhZGRMaXN0
ZW5lcihJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCB1aW50NjRfdCBzdG9yYWdlTWFwSUQpOwot
ICAgIHZvaWQgcmVtb3ZlTGlzdGVuZXIoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCwgdWludDY0
X3Qgc3RvcmFnZU1hcElEKTsKLSAgICBib29sIGhhc0xpc3RlbmVyKElQQzo6Q29ubmVjdGlvbjo6
VW5pcXVlSUQsIHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCkgY29uc3Q7CisgICAgdm9pZCBhZGRMaXN0
ZW5lcihJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEKTsKKyAgICB2b2lkIHJlbW92ZUxpc3RlbmVy
KElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQpOworICAgIGJvb2wgaGFzTGlzdGVuZXIoSVBDOjpD
b25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uSUQpIGNvbnN0OwogCiAgICAgUmVmPFN0b3Jh
Z2VBcmVhPiBjbG9uZSgpIGNvbnN0OwogCiAgICAgdm9pZCBzZXRJdGVtKElQQzo6Q29ubmVjdGlv
bjo6VW5pcXVlSUQgc291cmNlQ29ubmVjdGlvbiwgdWludDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJ
RCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUsIGNvbnN0IFN0cmluZyYg
dXJsU3RyaW5nLCBib29sJiBxdW90YUV4Y2VwdGlvbik7Ci0gICAgdm9pZCBzZXRJdGVtcyhjb25z
dCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYpOwogICAgIHZvaWQgcmVtb3ZlSXRlbShJUEM6OkNv
bm5lY3Rpb246OlVuaXF1ZUlEIHNvdXJjZUNvbm5lY3Rpb24sIHVpbnQ2NF90IHNvdXJjZVN0b3Jh
Z2VBcmVhSUQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHVybFN0cmluZyk7CiAg
ICAgdm9pZCBjbGVhcihJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIHNvdXJjZUNvbm5lY3Rpb24s
IHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKTsK
IApAQCAtNjgsNiArNjgsMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCBvcGVuRGF0YWJhc2VBbmRJ
bXBvcnRJdGVtc0lmTmVlZGVkKCkgY29uc3Q7CiAKKyAgICB2b2lkIHNldFdvcmtRdWV1ZShSZWZQ
dHI8V29ya1F1ZXVlPiYmIHF1ZXVlKSB7IG1fcXVldWUgPSBXVEZNb3ZlKHF1ZXVlKTsgfQorCisg
ICAgdm9pZCBzeW5jVG9EYXRhYmFzZSgpOworCiBwcml2YXRlOgogICAgIFN0b3JhZ2VBcmVhKExv
Y2FsU3RvcmFnZU5hbWVzcGFjZSosIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYs
IHVuc2lnbmVkIHF1b3RhSW5CeXRlcyk7CiAKQEAgLTgyLDcgKzg2LDEwIEBAIHByaXZhdGU6CiAg
ICAgdW5zaWduZWQgbV9xdW90YUluQnl0ZXMgeyAwIH07CiAKICAgICBSZWZQdHI8V2ViQ29yZTo6
U3RvcmFnZU1hcD4gbV9zdG9yYWdlTWFwOwotICAgIEhhc2hTZXQ8c3RkOjpwYWlyPElQQzo6Q29u
bmVjdGlvbjo6VW5pcXVlSUQsIHVpbnQ2NF90Pj4gbV9ldmVudExpc3RlbmVyczsKKyAgICBIYXNo
U2V0PElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQ+IG1fZXZlbnRMaXN0ZW5lcnM7CisKKyAgICB1
aW50NjRfdCBtX2lkZW50aWZpZXI7CisgICAgUmVmUHRyPFdvcmtRdWV1ZT4gbV9xdWV1ZTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAKaW5kZXggM2UzZTBi
NDY1OGUyMjhmMTIyNTk1NzI4MjEzMTVjOTc0NWNiNjYwZC4uM2I1YjMzYmU1NmFkY2I1ODQ2NTNl
NDhhNTQ3NDMwOWIxZGFkNDY5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwCkBAIC0zMiw3ICszMiw2
IEBACiAjaW5jbHVkZSAiU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UuaCIKICNpbmNsdWRlICJTdG9y
YWdlQXJlYS5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhTWFwTWVzc2FnZXMuaCIKLSNpbmNsdWRl
ICJTdG9yYWdlTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiVHJhbnNpZW50TG9jYWxTdG9y
YWdlTmFtZXNwYWNlLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KQEAgLTQxLDcgKzQwLDYgQEAKICNpbmNsdWRl
IDxXZWJDb3JlL1RleHRFbmNvZGluZy5oPgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3
dGYvV29ya1F1ZXVlLmg+Ci0jaW5jbHVkZSA8d3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg+
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC01MCw1
NDAgKzQ4LDI0MiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIGNvbnN0IHVuc2lnbmVkIFN0
b3JhZ2VNYW5hZ2VyOjpsb2NhbFN0b3JhZ2VEYXRhYmFzZVF1b3RhSW5CeXRlcyA9IDUgKiAxMDI0
ICogMTAyNDsKIAogU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VNYW5hZ2VyKFN0cmluZyYmIGxvY2Fs
U3RvcmFnZURpcmVjdG9yeSkKLSAgICA6IG1fcXVldWUoV29ya1F1ZXVlOjpjcmVhdGUoImNvbS5h
cHBsZS5XZWJLaXQuU3RvcmFnZU1hbmFnZXIiKSkKIHsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNN
YWluKCkpOworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgLy8gTWFrZSBz
dXJlIHRoZSBlbmNvZGluZyBpcyBpbml0aWFsaXplZCBiZWZvcmUgd2Ugc3RhcnQgZGlzcGF0Y2hp
bmcgdGhpbmdzIHRvIHRoZSBxdWV1ZS4KLSAgICBVVEY4RW5jb2RpbmcoKTsKICAgICBpZiAoIWxv
Y2FsU3RvcmFnZURpcmVjdG9yeS5pc051bGwoKSkKLSAgICAgICAgbV9sb2NhbFN0b3JhZ2VEYXRh
YmFzZVRyYWNrZXIgPSBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OmNyZWF0ZShtX3F1ZXVl
LmNvcHlSZWYoKSwgV1RGTW92ZShsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpKTsKKyAgICAgICAgbV9s
b2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIgPSBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6
OmNyZWF0ZShXVEZNb3ZlKGxvY2FsU3RvcmFnZURpcmVjdG9yeSkpOwogfQogCiBTdG9yYWdlTWFu
YWdlcjo6flN0b3JhZ2VNYW5hZ2VyKCkKIHsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogfQogCiB2b2lkIFN0b3JhZ2VNYW5h
Z2VyOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBzdG9yYWdlTmFtZXNw
YWNlSUQsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcykKIHsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNN
YWluKCkpOwotICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIHN0b3JhZ2VOYW1lc3BhY2VJRCwgcXVvdGFJbkJ5dGVzXSgpIG11dGFibGUg
ewotICAgICAgICBtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlcy5lbnN1cmUoc3RvcmFnZU5hbWVz
cGFjZUlELCBbcXVvdGFJbkJ5dGVzXSB7Ci0gICAgICAgICAgICByZXR1cm4gU2Vzc2lvblN0b3Jh
Z2VOYW1lc3BhY2U6OmNyZWF0ZShxdW90YUluQnl0ZXMpOwotICAgICAgICB9KTsKLSAgICB9KTsK
LX0KKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotdm9pZCBTdG9yYWdlTWFuYWdl
cjo6ZGVzdHJveVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3Bh
Y2VJRCkKLXsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIG1fcXVldWUtPmRp
c3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHN0b3JhZ2VOYW1l
c3BhY2VJRF0gewotICAgICAgICBBU1NFUlQobV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMuY29u
dGFpbnMoc3RvcmFnZU5hbWVzcGFjZUlEKSk7Ci0gICAgICAgIGlmIChhdXRvKiBzZXNzaW9uU3Rv
cmFnZU5hbWVzcGFjZSA9IG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLmdldChzdG9yYWdlTmFt
ZXNwYWNlSUQpKSB7Ci0gICAgICAgICAgICBpZiAoc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UtPmFs
bG93ZWRDb25uZWN0aW9ucygpLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICBtX3Nlc3Npb25T
dG9yYWdlTmFtZXNwYWNlcy5yZW1vdmUoc3RvcmFnZU5hbWVzcGFjZUlEKTsKLSAgICAgICAgfQot
ICAgIH0pOworICAgIG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLmVuc3VyZShzdG9yYWdlTmFt
ZXNwYWNlSUQsIFtxdW90YUluQnl0ZXNdIHsKKyAgICAgICAgcmV0dXJuIFNlc3Npb25TdG9yYWdl
TmFtZXNwYWNlOjpjcmVhdGUocXVvdGFJbkJ5dGVzKTsKKyAgICAgfSk7CiB9CiAKLXZvaWQgU3Rv
cmFnZU1hbmFnZXI6OmFkZEFsbG93ZWRTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZUNvbm5lY3Rpb24o
dWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBJUEM6OkNvbm5lY3Rpb24mIGFsbG93ZWRDb25u
ZWN0aW9uKQordm9pZCBTdG9yYWdlTWFuYWdlcjo6ZGVzdHJveVNlc3Npb25TdG9yYWdlTmFtZXNw
YWNlKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCkKIHsKLSAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOwotICAgIGF1dG8gYWxsb3dlZENvbm5lY3Rpb25JRCA9IGFsbG93ZWRDb25uZWN0
aW9uLnVuaXF1ZUlEKCk7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX2Nvbm5lY3Rpb25zLmFkZChh
bGxvd2VkQ29ubmVjdGlvbklEKTsKLSAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpCi0gICAg
ICAgIGFsbG93ZWRDb25uZWN0aW9uLmFkZFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdl
czo6U3RvcmFnZU1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9xdWV1ZS5nZXQoKSwg
dGhpcyk7Ci0KLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCBhbGxvd2VkQ29ubmVjdGlvbklELCBzdG9yYWdlTmFtZXNwYWNlSURdKCkg
bXV0YWJsZSB7Ci0gICAgICAgIEFTU0VSVChtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlcy5jb250
YWlucyhzdG9yYWdlTmFtZXNwYWNlSUQpKTsKLQotICAgICAgICBtX3Nlc3Npb25TdG9yYWdlTmFt
ZXNwYWNlcy5nZXQoc3RvcmFnZU5hbWVzcGFjZUlEKS0+YWRkQWxsb3dlZENvbm5lY3Rpb24oYWxs
b3dlZENvbm5lY3Rpb25JRCk7Ci0gICAgfSk7Ci19CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01h
aW4oKSk7CiAKLXZvaWQgU3RvcmFnZU1hbmFnZXI6OnJlbW92ZUFsbG93ZWRTZXNzaW9uU3RvcmFn
ZU5hbWVzcGFjZUNvbm5lY3Rpb24odWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBJUEM6OkNv
bm5lY3Rpb24mIGFsbG93ZWRDb25uZWN0aW9uKQotewotICAgIEFTU0VSVChSdW5Mb29wOjppc01h
aW4oKSk7Ci0gICAgYXV0byBhbGxvd2VkQ29ubmVjdGlvbklEID0gYWxsb3dlZENvbm5lY3Rpb24u
dW5pcXVlSUQoKTsKLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBhbGxvd2VkQ29ubmVjdGlvbklELCBzdG9yYWdlTmFtZXNwYWNlSURd
KCkgbXV0YWJsZSB7Ci0gICAgICAgIEFTU0VSVChtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlcy5j
b250YWlucyhzdG9yYWdlTmFtZXNwYWNlSUQpKTsKLSAgICAgICAgaWYgKGF1dG8qIHNlc3Npb25T
dG9yYWdlTmFtZXNwYWNlID0gbV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMuZ2V0KHN0b3JhZ2VO
YW1lc3BhY2VJRCkpCi0gICAgICAgICAgICBzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS0+cmVtb3Zl
QWxsb3dlZENvbm5lY3Rpb24oYWxsb3dlZENvbm5lY3Rpb25JRCk7Ci0gICAgfSk7CisgICAgQVNT
RVJUKG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLmNvbnRhaW5zKHN0b3JhZ2VOYW1lc3BhY2VJ
RCkpOworICAgIGlmIChhdXRvKiBzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSA9IG1fc2Vzc2lvblN0
b3JhZ2VOYW1lc3BhY2VzLmdldChzdG9yYWdlTmFtZXNwYWNlSUQpKQorICAgICAgICBtX3Nlc3Np
b25TdG9yYWdlTmFtZXNwYWNlcy5yZW1vdmUoc3RvcmFnZU5hbWVzcGFjZUlEKTsKIH0KIAogdm9p
ZCBTdG9yYWdlTWFuYWdlcjo6Y2xvbmVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBz
dG9yYWdlTmFtZXNwYWNlSUQsIHVpbnQ2NF90IG5ld1N0b3JhZ2VOYW1lc3BhY2VJRCkKIHsKLSAg
ICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHN0b3JhZ2VOYW1lc3BhY2VJRCwgbmV3
U3RvcmFnZU5hbWVzcGFjZUlEXSB7Ci0gICAgICAgIFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKiBz
ZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSA9IG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLmdldChz
dG9yYWdlTmFtZXNwYWNlSUQpOwotICAgICAgICBpZiAoIXNlc3Npb25TdG9yYWdlTmFtZXNwYWNl
KSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogV2UgY2FuIGdldCBpbnRvIHRoaXMgc2l0dWF0aW9u
IGlmIHNvbWVvbmUgY2xvc2VzIHRoZSBvcmlnaW5hdGluZyBwYWdlIGZyb20gd2l0aGluIGEKLSAg
ICAgICAgICAgIC8vIGNyZWF0ZU5ld1BhZ2UgY2FsbGJhY2suIFdlIGJhaWwgZm9yIG5vdywgYnV0
IHdlIHNob3VsZCByZWFsbHkgZmluZCBhIHdheSB0byBrZWVwIHRoZSBzZXNzaW9uIHN0b3JhZ2Ug
YWxpdmUKLSAgICAgICAgICAgIC8vIHNvIHdlIHdlJ2xsIGNsb25lIHRoZSBzZXNzaW9uIHN0b3Jh
Z2UgY29ycmVjdGx5LgotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAg
U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UqIG5ld1Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlID0gbV9z
ZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMuZ2V0KG5ld1N0b3JhZ2VOYW1lc3BhY2VJRCk7Ci0gICAg
ICAgIEFTU0VSVChuZXdTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSk7CisgICAgQVNTRVJUKCFSdW5M
b29wOjppc01haW4oKSk7CiAKLSAgICAgICAgc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UtPmNsb25l
VG8oKm5ld1Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlKTsKKyAgICBTZXNzaW9uU3RvcmFnZU5hbWVz
cGFjZSogc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UgPSBtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNl
cy5nZXQoc3RvcmFnZU5hbWVzcGFjZUlEKTsKKyAgICBpZiAoIXNlc3Npb25TdG9yYWdlTmFtZXNw
YWNlKQorICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKCFtX2xvY2FsU3RvcmFnZURhdGFi
YXNlVHJhY2tlcikgewotICAgICAgICAgICAgaWYgKGF1dG8qIGxvY2FsU3RvcmFnZU5hbWVzcGFj
ZSA9IG1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlcy5nZXQoc3RvcmFnZU5hbWVzcGFjZUlEKSkgewot
ICAgICAgICAgICAgICAgIExvY2FsU3RvcmFnZU5hbWVzcGFjZSogbmV3bG9jYWxTdG9yYWdlTmFt
ZXNwYWNlID0gZ2V0T3JDcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UobmV3U3RvcmFnZU5hbWVz
cGFjZUlEKTsKLSAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPmNsb25lVG8o
Km5ld2xvY2FsU3RvcmFnZU5hbWVzcGFjZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICB9KTsKLX0KKyAgICBTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSogbmV3U2Vzc2lvblN0b3JhZ2VO
YW1lc3BhY2UgPSBnZXRPckNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKG5ld1N0b3JhZ2VO
YW1lc3BhY2VJRCk7CisgICAgQVNTRVJUKG5ld1Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlKTsKIAot
dm9pZCBTdG9yYWdlTWFuYWdlcjo6cHJvY2Vzc0RpZENsb3NlQ29ubmVjdGlvbihJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24pCi17Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAg
ICBpZiAobV9jb25uZWN0aW9ucy5yZW1vdmUoY29ubmVjdGlvbi51bmlxdWVJRCgpKSkKLSAgICAg
ICAgY29ubmVjdGlvbi5yZW1vdmVXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlN0
b3JhZ2VNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOwotCi0gICAgbV9xdWV1ZS0+ZGlz
cGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29ubmVjdGlvbklE
ID0gY29ubmVjdGlvbi51bmlxdWVJRCgpXSgpIG11dGFibGUgewotICAgICAgICBWZWN0b3I8c3Rk
OjpwYWlyPElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIHVpbnQ2NF90Pj4gY29ubmVjdGlvbkFu
ZFN0b3JhZ2VNYXBJRFBhaXJzVG9SZW1vdmU7Ci0gICAgICAgIGZvciAoYXV0byYgc3RvcmFnZUFy
ZWEgOiBtX3N0b3JhZ2VBcmVhc0J5Q29ubmVjdGlvbikgewotICAgICAgICAgICAgaWYgKHN0b3Jh
Z2VBcmVhLmtleS5maXJzdCAhPSBjb25uZWN0aW9uSUQpCi0gICAgICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHN0b3JhZ2VBcmVhLnZhbHVlLT5yZW1vdmVM
aXN0ZW5lcihzdG9yYWdlQXJlYS5rZXkuZmlyc3QsIHN0b3JhZ2VBcmVhLmtleS5zZWNvbmQpOwot
ICAgICAgICAgICAgY29ubmVjdGlvbkFuZFN0b3JhZ2VNYXBJRFBhaXJzVG9SZW1vdmUuYXBwZW5k
KHN0b3JhZ2VBcmVhLmtleSk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGZvciAoYXV0
byYgcGFpciA6IGNvbm5lY3Rpb25BbmRTdG9yYWdlTWFwSURQYWlyc1RvUmVtb3ZlKQotICAgICAg
ICAgICAgbV9zdG9yYWdlQXJlYXNCeUNvbm5lY3Rpb24ucmVtb3ZlKHBhaXIpOwotCi0gICAgICAg
IFZlY3Rvcjx1aW50NjRfdD4gc2Vzc2lvblN0b3JhZ2VOYW1lU3BhY2VJRHNUb1JlbW92ZTsKLSAg
ICAgICAgZm9yIChhdXRvJiBzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSA6IG1fc2Vzc2lvblN0b3Jh
Z2VOYW1lc3BhY2VzKSB7Ci0gICAgICAgICAgICBpZiAoc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2Uu
dmFsdWUtPmFsbG93ZWRDb25uZWN0aW9ucygpLmNvbnRhaW5zKGNvbm5lY3Rpb25JRCkpCi0gICAg
ICAgICAgICAgICAgc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UudmFsdWUtPnJlbW92ZUFsbG93ZWRD
b25uZWN0aW9uKGNvbm5lY3Rpb25JRCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChz
ZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS52YWx1ZS0+YWxsb3dlZENvbm5lY3Rpb25zKCkuaXNFbXB0
eSgpKQotICAgICAgICAgICAgICAgIHNlc3Npb25TdG9yYWdlTmFtZVNwYWNlSURzVG9SZW1vdmUu
YXBwZW5kKHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlLmtleSk7Ci0gICAgICAgIH0KLSAgICAgICAg
Ci0gICAgICAgIGZvciAoYXV0byBpZCA6IHNlc3Npb25TdG9yYWdlTmFtZVNwYWNlSURzVG9SZW1v
dmUpCi0gICAgICAgICAgICBtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlcy5yZW1vdmUoaWQpOwot
ICAgIH0pOworICAgIHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlLT5jbG9uZVRvKCpuZXdTZXNzaW9u
U3RvcmFnZU5hbWVzcGFjZSk7CiB9CiAKIHZvaWQgU3RvcmFnZU1hbmFnZXI6OmdldFNlc3Npb25T
dG9yYWdlT3JpZ2lucyhGdW5jdGlvbjx2b2lkKEhhc2hTZXQ8V2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOwotICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgIEhhc2hTZXQ8U2VjdXJpdHlPcmlnaW5EYXRhPiBv
cmlnaW5zOworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgICAgIGZvciAo
Y29uc3QgYXV0byYgc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UgOiBtX3Nlc3Npb25TdG9yYWdlTmFt
ZXNwYWNlcy52YWx1ZXMoKSkgewotICAgICAgICAgICAgZm9yIChhdXRvJiBvcmlnaW4gOiBzZXNz
aW9uU3RvcmFnZU5hbWVzcGFjZS0+b3JpZ2lucygpKQotICAgICAgICAgICAgICAgIG9yaWdpbnMu
YWRkKGNyb3NzVGhyZWFkQ29weShvcmlnaW4pKTsKLSAgICAgICAgfQorICAgIEhhc2hTZXQ8U2Vj
dXJpdHlPcmlnaW5EYXRhPiBvcmlnaW5zOworICAgIGZvciAoY29uc3QgYXV0byYgc2Vzc2lvblN0
b3JhZ2VOYW1lc3BhY2UgOiBtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkgewor
ICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlLT5vcmln
aW5zKCkpCisgICAgICAgIG9yaWdpbnMuYWRkKGNyb3NzVGhyZWFkQ29weShvcmlnaW4pKTsKKyAg
ICB9CiAKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtvcmlnaW5zID0gV1RGTW92
ZShvcmlnaW5zKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUob3Jp
Z2lucykpOwotICAgICAgICB9KTsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW29yaWdp
bnMgPSBXVEZNb3ZlKG9yaWdpbnMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZN
b3ZlKG9yaWdpbnMpKTsKICAgICB9KTsKIH0KIAogdm9pZCBTdG9yYWdlTWFuYWdlcjo6ZGVsZXRl
U2Vzc2lvblN0b3JhZ2VPcmlnaW5zKEZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIG1fcXVldWUtPmRpc3Bh
dGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgIGZv
ciAoYXV0byYgc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UgOiBtX3Nlc3Npb25TdG9yYWdlTmFtZXNw
YWNlcy52YWx1ZXMoKSkKLSAgICAgICAgICAgIHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlLT5jbGVh
ckFsbFN0b3JhZ2VBcmVhcygpOworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0g
ICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7Ci0gICAgfSk7CisgICAgZm9yIChhdXRvJiBzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSA6IG1f
c2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLnZhbHVlcygpKQorICAgICAgICBzZXNzaW9uU3RvcmFn
ZU5hbWVzcGFjZS0+Y2xlYXJBbGxTdG9yYWdlQXJlYXMoKTsKKworICAgIFJ1bkxvb3A6Om1haW4o
KS5kaXNwYXRjaChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgU3RvcmFn
ZU1hbmFnZXI6OmRlbGV0ZVNlc3Npb25TdG9yYWdlRW50cmllc0Zvck9yaWdpbnMoY29uc3QgVmVj
dG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mIG9yaWdpbnMsIEZ1bmN0aW9uPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OwotICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIGNvcGllZE9yaWdpbnMgPSBjcm9zc1RocmVhZENvcHkob3JpZ2lucyksIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAg
ICAgIGZvciAoYXV0byYgb3JpZ2luIDogY29waWVkT3JpZ2lucykgewotICAgICAgICAgICAgZm9y
IChhdXRvJiBzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSA6IG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3Bh
Y2VzLnZhbHVlcygpKQotICAgICAgICAgICAgICAgIHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlLT5j
bGVhclN0b3JhZ2VBcmVhc01hdGNoaW5nT3JpZ2luKG9yaWdpbik7Ci0gICAgICAgIH0KKyAgICBB
U1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlz
cGF0Y2goV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgIH0pOworICAgIGZvciAoYXV0
byYgb3JpZ2luIDogb3JpZ2lucykgeworICAgICAgICBmb3IgKGF1dG8mIHNlc3Npb25TdG9yYWdl
TmFtZXNwYWNlIDogbV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMudmFsdWVzKCkpCisgICAgICAg
ICAgICBzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS0+Y2xlYXJTdG9yYWdlQXJlYXNNYXRjaGluZ09y
aWdpbihvcmlnaW4pOworICAgIH0KKworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgU3RvcmFnZU1hbmFnZXI6OmdldExv
Y2FsU3RvcmFnZU9yaWdpbnMoRnVuY3Rpb248dm9pZChIYXNoU2V0PFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgQVNTRVJUKFJ1bkxv
b3A6OmlzTWFpbigpKTsKLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICBIYXNoU2V0PFNlY3VyaXR5T3JpZ2luRGF0
YT4gb3JpZ2luczsKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgICAgICBp
ZiAobV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIpIHsKLSAgICAgICAgICAgIGZvciAoYXV0
byYgb3JpZ2luIDogbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXItPm9yaWdpbnMoKSkKKyAg
ICBIYXNoU2V0PFNlY3VyaXR5T3JpZ2luRGF0YT4gb3JpZ2luczsKKyAgICBpZiAobV9sb2NhbFN0
b3JhZ2VEYXRhYmFzZVRyYWNrZXIpIHsKKyAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IG1fbG9jYWxT
dG9yYWdlRGF0YWJhc2VUcmFja2VyLT5vcmlnaW5zKCkpCisgICAgICAgIG9yaWdpbnMuYWRkKG9y
aWdpbi5pc29sYXRlZENvcHkoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZm9yIChjb25zdCBh
dXRvJiBsb2NhbFN0b3JhZ2VOYW1lU3BhY2UgOiBtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZXMudmFs
dWVzKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byYgb3JpZ2luIDogbG9jYWxTdG9yYWdlTmFt
ZVNwYWNlLT5lcGhlbWVyYWxPcmlnaW5zKCkpCiAgICAgICAgICAgICAgICAgb3JpZ2lucy5hZGQo
b3JpZ2luLmlzb2xhdGVkQ29weSgpKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGZv
ciAoY29uc3QgYXV0byYgbG9jYWxTdG9yYWdlTmFtZVNwYWNlIDogbV9sb2NhbFN0b3JhZ2VOYW1l
c3BhY2VzLnZhbHVlcygpKSB7Ci0gICAgICAgICAgICAgICAgZm9yIChhdXRvJiBvcmlnaW4gOiBs
b2NhbFN0b3JhZ2VOYW1lU3BhY2UtPmVwaGVtZXJhbE9yaWdpbnMoKSkKLSAgICAgICAgICAgICAg
ICAgICAgb3JpZ2lucy5hZGQob3JpZ2luLmlzb2xhdGVkQ29weSgpKTsKLSAgICAgICAgICAgIH0K
ICAgICAgICAgfQorICAgIH0KIAotICAgICAgICBmb3IgKGF1dG8mIHRyYW5zaWVudExvY2FsU3Rv
cmFnZU5hbWVzcGFjZSA6IG1fdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMo
KSkgewotICAgICAgICAgICAgZm9yIChhdXRvJiBvcmlnaW4gOiB0cmFuc2llbnRMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UtPm9yaWdpbnMoKSkKLSAgICAgICAgICAgICAgICBvcmlnaW5zLmFkZChvcmln
aW4uaXNvbGF0ZWRDb3B5KCkpOwotICAgICAgICB9CisgICAgZm9yIChhdXRvJiB0cmFuc2llbnRM
b2NhbFN0b3JhZ2VOYW1lc3BhY2UgOiBtX3RyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZXMu
dmFsdWVzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvJiBvcmlnaW4gOiB0cmFuc2llbnRMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UtPm9yaWdpbnMoKSkKKyAgICAgICAgICAgIG9yaWdpbnMuYWRkKG9yaWdp
bi5pc29sYXRlZENvcHkoKSk7CisgICAgfQogCi0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNw
YXRjaChbb3JpZ2lucyA9IFdURk1vdmUob3JpZ2lucyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihXVEZNb3ZlKG9yaWdpbnMpKTsKLSAgICAgICAgfSk7CisgICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFtvcmlnaW5zID0gV1RGTW92ZShvcmlnaW5zKSwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShvcmlnaW5zKSk7CiAgICAgfSk7CiB9CiAKIHZvaWQg
U3RvcmFnZU1hbmFnZXI6OmdldExvY2FsU3RvcmFnZU9yaWdpbkRldGFpbHMoRnVuY3Rpb248dm9p
ZChWZWN0b3I8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpPcmlnaW5EZXRhaWxzPiYmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwot
ICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0
YWJsZSB7Ci0gICAgICAgIFZlY3RvcjxMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6Ok9yaWdp
bkRldGFpbHM+IG9yaWdpbkRldGFpbHM7Ci0gICAgICAgIGlmIChtX2xvY2FsU3RvcmFnZURhdGFi
YXNlVHJhY2tlcikKLSAgICAgICAgICAgIG9yaWdpbkRldGFpbHMgPSBtX2xvY2FsU3RvcmFnZURh
dGFiYXNlVHJhY2tlci0+b3JpZ2luRGV0YWlscygpLmlzb2xhdGVkQ29weSgpOwotCi0gICAgICAg
IFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbb3JpZ2luRGV0YWlscyA9IFdURk1vdmUob3JpZ2lu
RGV0YWlscyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
KCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKG9yaWdp
bkRldGFpbHMpKTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgU3RvcmFnZU1hbmFn
ZXI6OmRlbGV0ZUxvY2FsU3RvcmFnZUVudHJpZXNGb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmln
aW5EYXRhJiBzZWN1cml0eU9yaWdpbikKLXsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OwotICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIGNvcGllZE9yaWdpbiA9IHNlY3VyaXR5T3JpZ2luLmlzb2xhdGVkQ29weSgpXSgpIG11
dGFibGUgewotICAgICAgICBmb3IgKGF1dG8mIGxvY2FsU3RvcmFnZU5hbWVzcGFjZSA6IG1fbG9j
YWxTdG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkKLSAgICAgICAgICAgIGxvY2FsU3RvcmFnZU5h
bWVzcGFjZS0+Y2xlYXJTdG9yYWdlQXJlYXNNYXRjaGluZ09yaWdpbihjb3BpZWRPcmlnaW4pOwor
ICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgICAgIGZvciAoYXV0byYgdHJh
bnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlIDogbV90cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1l
c3BhY2VzLnZhbHVlcygpKQotICAgICAgICAgICAgdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNw
YWNlLT5jbGVhclN0b3JhZ2VBcmVhc01hdGNoaW5nT3JpZ2luKGNvcGllZE9yaWdpbik7CisgICAg
VmVjdG9yPExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6T3JpZ2luRGV0YWlscz4gb3JpZ2lu
RGV0YWlsczsKKyAgICBpZiAobV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIpCisgICAgICAg
IG9yaWdpbkRldGFpbHMgPSBjcm9zc1RocmVhZENvcHkobV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRy
YWNrZXItPm9yaWdpbkRldGFpbHMoKSk7CiAKLSAgICAgICAgaWYgKG1fbG9jYWxTdG9yYWdlRGF0
YWJhc2VUcmFja2VyKQotICAgICAgICAgICAgbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIt
PmRlbGV0ZURhdGFiYXNlV2l0aE9yaWdpbihjb3BpZWRPcmlnaW4pOworICAgIFJ1bkxvb3A6Om1h
aW4oKS5kaXNwYXRjaChbb3JpZ2luRGV0YWlscyA9IFdURk1vdmUob3JpZ2luRGV0YWlscyksIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUob3JpZ2luRGV0YWlscykpOwogICAg
IH0pOwogfQogCiB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVMb2NhbFN0b3JhZ2VPcmlnaW5z
TW9kaWZpZWRTaW5jZShXYWxsVGltZSB0aW1lLCBGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBtX3F1ZXVl
LT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB0aW1lLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUg
ewotICAgICAgICBpZiAobV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIpIHsKLSAgICAgICAg
ICAgIGF1dG8gb3JpZ2luc1RvRGVsZXRlID0gbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIt
PmRhdGFiYXNlc01vZGlmaWVkU2luY2UodGltZSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAg
IGZvciAoYXV0byYgdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlIDogbV90cmFuc2llbnRM
b2NhbFN0b3JhZ2VOYW1lc3BhY2VzLnZhbHVlcygpKQotICAgICAgICAgICAgICAgIHRyYW5zaWVu
dExvY2FsU3RvcmFnZU5hbWVzcGFjZS0+Y2xlYXJBbGxTdG9yYWdlQXJlYXMoKTsKLQotICAgICAg
ICAgICAgZm9yIChjb25zdCBhdXRvJiBvcmlnaW4gOiBvcmlnaW5zVG9EZWxldGUpIHsKLSAgICAg
ICAgICAgICAgICBmb3IgKGF1dG8mIGxvY2FsU3RvcmFnZU5hbWVzcGFjZSA6IG1fbG9jYWxTdG9y
YWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkKLSAgICAgICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdl
TmFtZXNwYWNlLT5jbGVhclN0b3JhZ2VBcmVhc01hdGNoaW5nT3JpZ2luKG9yaWdpbik7Ci0gICAg
ICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNr
ZXItPmRlbGV0ZURhdGFiYXNlV2l0aE9yaWdpbihvcmlnaW4pOwotICAgICAgICAgICAgfQotICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgZm9yIChhdXRvJiBsb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2UgOiBtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZXMudmFsdWVzKCkpCi0gICAgICAgICAgICAgICAg
bG9jYWxTdG9yYWdlTmFtZXNwYWNlLT5jbGVhckFsbFN0b3JhZ2VBcmVhcygpOwotICAgICAgICB9
CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICAgICAgUnVuTG9vcDo6bWFp
bigpLmRpc3BhdGNoKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICB9KTsKLX0KKyAg
ICBpZiAobV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIpIHsKKyAgICAgICAgYXV0byBvcmln
aW5zVG9EZWxldGUgPSBtX2xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci0+ZGF0YWJhc2VzTW9k
aWZpZWRTaW5jZSh0aW1lKTsKIAotdm9pZCBTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlTG9jYWxTdG9y
YWdlRW50cmllc0Zvck9yaWdpbnMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YT4mIG9yaWdpbnMsIEZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsK
LSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvcGllZE9yaWdpbnMgPSBjcm9z
c1RocmVhZENvcHkob3JpZ2lucyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgIGZvciAoYXV0byYgb3JpZ2luIDogY29w
aWVkT3JpZ2lucykgeworICAgICAgICBmb3IgKGF1dG8mIHRyYW5zaWVudExvY2FsU3RvcmFnZU5h
bWVzcGFjZSA6IG1fdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkKKyAg
ICAgICAgICAgIHRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZS0+Y2xlYXJBbGxTdG9yYWdl
QXJlYXMoKTsKKworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIG9yaWdpbiA6IG9yaWdpbnNUb0Rl
bGV0ZSkgewogICAgICAgICAgICAgZm9yIChhdXRvJiBsb2NhbFN0b3JhZ2VOYW1lc3BhY2UgOiBt
X2xvY2FsU3RvcmFnZU5hbWVzcGFjZXMudmFsdWVzKCkpCiAgICAgICAgICAgICAgICAgbG9jYWxT
dG9yYWdlTmFtZXNwYWNlLT5jbGVhclN0b3JhZ2VBcmVhc01hdGNoaW5nT3JpZ2luKG9yaWdpbik7
Ci0KLSAgICAgICAgICAgIGZvciAoYXV0byYgdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNl
IDogbV90cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2VzLnZhbHVlcygpKQotICAgICAgICAg
ICAgICAgIHRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZS0+Y2xlYXJTdG9yYWdlQXJlYXNN
YXRjaGluZ09yaWdpbihvcmlnaW4pOwotCi0gICAgICAgICAgICBpZiAobV9sb2NhbFN0b3JhZ2VE
YXRhYmFzZVRyYWNrZXIpCi0gICAgICAgICAgICAgICAgbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRy
YWNrZXItPmRlbGV0ZURhdGFiYXNlV2l0aE9yaWdpbihvcmlnaW4pOworICAgICAgICAgICAgbV9s
b2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXItPmRlbGV0ZURhdGFiYXNlV2l0aE9yaWdpbihvcmln
aW4pOwogICAgICAgICB9Ci0KLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICB9KTsKLX0KLQotdm9pZCBTdG9yYWdlTWFuYWdl
cjo6Y3JlYXRlTG9jYWxTdG9yYWdlTWFwKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgdWlu
dDY0X3Qgc3RvcmFnZU1hcElELCB1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIFNlY3VyaXR5
T3JpZ2luRGF0YSYmIHNlY3VyaXR5T3JpZ2luRGF0YSkKLXsKLSAgICBBU1NFUlQoIVJ1bkxvb3A6
OmlzTWFpbigpKTsKLSAgICBhdXRvIGNvbm5lY3Rpb25JRCA9IGNvbm5lY3Rpb24udW5pcXVlSUQo
KTsKLSAgICBzdGQ6OnBhaXI8SVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCwgdWludDY0X3Q+IGNv
bm5lY3Rpb25BbmRTdG9yYWdlTWFwSURQYWlyKGNvbm5lY3Rpb25JRCwgc3RvcmFnZU1hcElEKTsK
LQotICAgIEFTU0VSVCgoSGFzaE1hcDxzdGQ6OnBhaXI8SVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJ
RCwgdWludDY0X3Q+LCBSZWZQdHI8U3RvcmFnZUFyZWE+Pjo6aXNWYWxpZEtleShjb25uZWN0aW9u
QW5kU3RvcmFnZU1hcElEUGFpcikpKTsKLQotICAgIGF1dG8gcmVzdWx0ID0gbV9zdG9yYWdlQXJl
YXNCeUNvbm5lY3Rpb24uYWRkKGNvbm5lY3Rpb25BbmRTdG9yYWdlTWFwSURQYWlyLCBudWxscHRy
KTsKLSAgICBBU1NFUlQocmVzdWx0LmlzTmV3RW50cnkpOwotICAgIEFTU0VSVCgoSGFzaE1hcDx1
aW50NjRfdCwgUmVmUHRyPExvY2FsU3RvcmFnZU5hbWVzcGFjZT4+Ojppc1ZhbGlkS2V5KHN0b3Jh
Z2VOYW1lc3BhY2VJRCkpKTsKLQotICAgIExvY2FsU3RvcmFnZU5hbWVzcGFjZSogbG9jYWxTdG9y
YWdlTmFtZXNwYWNlID0gZ2V0T3JDcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2Uoc3RvcmFnZU5h
bWVzcGFjZUlEKTsKLSAgICBBU1NFUlQobG9jYWxTdG9yYWdlTmFtZXNwYWNlKTsKLQotICAgIGF1
dG8gc3RvcmFnZUFyZWEgPSBsb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPmdldE9yQ3JlYXRlU3RvcmFn
ZUFyZWEoV1RGTW92ZShzZWN1cml0eU9yaWdpbkRhdGEpLCBtX2xvY2FsU3RvcmFnZURhdGFiYXNl
VHJhY2tlciA/IExvY2FsU3RvcmFnZU5hbWVzcGFjZTo6SXNFcGhlbWVyYWw6Ok5vIDogTG9jYWxT
dG9yYWdlTmFtZXNwYWNlOjpJc0VwaGVtZXJhbDo6WWVzKTsKLSAgICBzdG9yYWdlQXJlYS0+YWRk
TGlzdGVuZXIoY29ubmVjdGlvbklELCBzdG9yYWdlTWFwSUQpOwotCi0gICAgcmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZSA9IFdURk1vdmUoc3RvcmFnZUFyZWEpOwotfQotCi12b2lkIFN0b3JhZ2VNYW5h
Z2VyOjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VNYXAoSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCB1aW50NjRfdCBzdG9yYWdlTWFwSUQsIHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJ
RCwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wTGV2ZWxPcmlnaW5EYXRhLCBTZWN1cml0eU9yaWdp
bkRhdGEmJiBvcmlnaW4pCi17Ci0gICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0gICAg
YXV0byBjb25uZWN0aW9uSUQgPSBjb25uZWN0aW9uLnVuaXF1ZUlEKCk7Ci0KLSAgICBBU1NFUlQo
bV9zdG9yYWdlQXJlYXNCeUNvbm5lY3Rpb24uaXNWYWxpZEtleSh7IGNvbm5lY3Rpb25JRCwgc3Rv
cmFnZU1hcElEIH0pKTsKLQotICAgIC8vIFNlZSBpZiB3ZSBhbHJlYWR5IGhhdmUgc2Vzc2lvbiBz
dG9yYWdlIGZvciB0aGlzIGNvbm5lY3Rpb24vb3JpZ2luIGNvbWJvLgotICAgIC8vIElmIHNvLCB1
cGRhdGUgdGhlIG1hcCB3aXRoIHRoZSBuZXcgSUQsIG90aGVyd2lzZSBrZWVwIG9uIHRydWNraW5n
LgotICAgIGZvciAoYXV0byBpdCA9IG1fc3RvcmFnZUFyZWFzQnlDb25uZWN0aW9uLmJlZ2luKCks
IGVuZCA9IG1fc3RvcmFnZUFyZWFzQnlDb25uZWN0aW9uLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQp
IHsKLSAgICAgICAgaWYgKGl0LT5rZXkuZmlyc3QgIT0gY29ubmVjdGlvbklEKQotICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgIFJlZjxTdG9yYWdlQXJlYT4gYXJlYSA9ICppdC0+dmFsdWU7
Ci0gICAgICAgIGlmICghYXJlYS0+aXNFcGhlbWVyYWwoKSkKLSAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICBpZiAoIW9yaWdpbi5zZWN1cml0eU9yaWdpbigpLT5pc1NhbWVTY2hlbWVIb3N0
UG9ydChhcmVhLT5zZWN1cml0eU9yaWdpbigpLnNlY3VyaXR5T3JpZ2luKCkuZ2V0KCkpKQotICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGFyZWEtPmFkZExpc3RlbmVyKGNvbm5lY3Rpb25J
RCwgc3RvcmFnZU1hcElEKTsKLSAgICAgICAgLy8gSWYgdGhlIHN0b3JhZ2VNYXBJRCB1c2VkIGFz
IGtleSBpbiBtX3N0b3JhZ2VBcmVhc0J5Q29ubmVjdGlvbiBpcyBubyBsb25nZXIgb25lIG9mIHRo
ZSBTdG9yYWdlQXJlYSdzIGxpc3RlbmVycywgdGhlbiB0aGlzIG1lYW5zCi0gICAgICAgIC8vIHRo
YXQgZGVzdHJveVN0b3JhZ2VNYXAoKSB3YXMgYWxyZWFkeSBjYWxsZWQgZm9yIHRoYXQgc3RvcmFn
ZU1hcElEIGJ1dCBpdCBkZWNpZGVkIG5vdCB0byByZW1vdmUgaXQgZnJvbSBtX3N0b3JhZ2VBcmVh
c0J5Q29ubmVjdGlvbgotICAgICAgICAvLyBzbyB0aGF0IHdlIGNvdWxkIHJldXNlIGl0IGxhdGVy
IG9uIGZvciB0aGUgc2FtZSBjb25uZWN0aW9uL29yaWdpbiBjb21iby4gSW4gdGhpcyBjYXNlLCBp
dCBpcyBzYWZlIHRvIHJlbW92ZSB0aGUgcHJldmlvdXMKLSAgICAgICAgLy8gc3RvcmFnZU1hcElE
IGZyb20gbV9zdG9yYWdlQXJlYXNCeUNvbm5lY3Rpb24uCi0gICAgICAgIGlmICghYXJlYS0+aGFz
TGlzdGVuZXIoY29ubmVjdGlvbklELCBpdC0+a2V5LnNlY29uZCkpCi0gICAgICAgICAgICBtX3N0
b3JhZ2VBcmVhc0J5Q29ubmVjdGlvbi5yZW1vdmUoaXQpOwotICAgICAgICBtX3N0b3JhZ2VBcmVh
c0J5Q29ubmVjdGlvbi5hZGQoeyBjb25uZWN0aW9uSUQsIHN0b3JhZ2VNYXBJRCB9LCBXVEZNb3Zl
KGFyZWEpKTsKLSAgICAgICAgcmV0dXJuOworICAgIH0gZWxzZSB7CisgICAgICAgIGZvciAoYXV0
byYgbG9jYWxTdG9yYWdlTmFtZXNwYWNlIDogbV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2VzLnZhbHVl
cygpKQorICAgICAgICAgICAgbG9jYWxTdG9yYWdlTmFtZXNwYWNlLT5jbGVhckFsbFN0b3JhZ2VB
cmVhcygpOwogICAgIH0KIAotICAgIGF1dG8mIHNsb3QgPSBtX3N0b3JhZ2VBcmVhc0J5Q29ubmVj
dGlvbi5hZGQoeyBjb25uZWN0aW9uSUQsIHN0b3JhZ2VNYXBJRCB9LCBudWxscHRyKS5pdGVyYXRv
ci0+dmFsdWU7Ci0gICAgQVNTRVJUKCFzbG90KTsKLQotICAgIGF1dG8qIHRyYW5zaWVudExvY2Fs
U3RvcmFnZU5hbWVzcGFjZSA9IGdldE9yQ3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNw
YWNlKHN0b3JhZ2VOYW1lc3BhY2VJRCwgV1RGTW92ZSh0b3BMZXZlbE9yaWdpbkRhdGEpKTsKLQot
ICAgIGF1dG8gc3RvcmFnZUFyZWEgPSB0cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPmdl
dE9yQ3JlYXRlU3RvcmFnZUFyZWEoV1RGTW92ZShvcmlnaW4pKTsKLSAgICBzdG9yYWdlQXJlYS0+
YWRkTGlzdGVuZXIoY29ubmVjdGlvbklELCBzdG9yYWdlTWFwSUQpOwotCi0gICAgc2xvdCA9IFdU
Rk1vdmUoc3RvcmFnZUFyZWEpOworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZVNl
c3Npb25TdG9yYWdlTWFwKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgdWludDY0X3Qgc3Rv
cmFnZU1hcElELCB1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIFNlY3VyaXR5T3JpZ2luRGF0
YSYmIHNlY3VyaXR5T3JpZ2luRGF0YSkKK3ZvaWQgU3RvcmFnZU1hbmFnZXI6OmRlbGV0ZUxvY2Fs
U3RvcmFnZUVudHJpZXNGb3JPcmlnaW5zKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGE+JiBvcmlnaW5zLCBGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgYXV0byBjb25uZWN0aW9u
SUQgPSBjb25uZWN0aW9uLnVuaXF1ZUlEKCk7Ci0gICAgQVNTRVJUKG1fc2Vzc2lvblN0b3JhZ2VO
YW1lc3BhY2VzLmlzVmFsaWRLZXkoc3RvcmFnZU5hbWVzcGFjZUlEKSk7Ci0KLSAgICBTZXNzaW9u
U3RvcmFnZU5hbWVzcGFjZSogc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UgPSBtX3Nlc3Npb25TdG9y
YWdlTmFtZXNwYWNlcy5nZXQoc3RvcmFnZU5hbWVzcGFjZUlEKTsKLSAgICBpZiAoIXNlc3Npb25T
dG9yYWdlTmFtZXNwYWNlKSB7Ci0gICAgICAgIC8vIFdlJ3JlIGdldHRpbmcgYW4gaW5jb21pbmcg
bWVzc2FnZSBmcm9tIHRoZSB3ZWIgcHJvY2VzcyB0aGF0J3MgZm9yIHNlc3Npb24gc3RvcmFnZSBm
b3IgYSB3ZWIgcGFnZQotICAgICAgICAvLyB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gY2xvc2VkLCBq
dXN0IGlnbm9yZSBpdC4KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVChtX3N0
b3JhZ2VBcmVhc0J5Q29ubmVjdGlvbi5pc1ZhbGlkS2V5KHsgY29ubmVjdGlvbklELCBzdG9yYWdl
TWFwSUQgfSkpOwogCi0gICAgYXV0byYgc2xvdCA9IG1fc3RvcmFnZUFyZWFzQnlDb25uZWN0aW9u
LmFkZCh7IGNvbm5lY3Rpb25JRCwgc3RvcmFnZU1hcElEIH0sIG51bGxwdHIpLml0ZXJhdG9yLT52
YWx1ZTsKLSAgICBBU1NFUlQoIXNsb3QpOwotICAgIEFTU0VSVChzZXNzaW9uU3RvcmFnZU5hbWVz
cGFjZS0+YWxsb3dlZENvbm5lY3Rpb25zKCkuY29udGFpbnMoY29ubmVjdGlvbklEKSk7Ci0KLSAg
ICBhdXRvIHN0b3JhZ2VBcmVhID0gc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UtPmdldE9yQ3JlYXRl
U3RvcmFnZUFyZWEoV1RGTW92ZShzZWN1cml0eU9yaWdpbkRhdGEpKTsKLSAgICBzdG9yYWdlQXJl
YS0+YWRkTGlzdGVuZXIoY29ubmVjdGlvbklELCBzdG9yYWdlTWFwSUQpOwotCi0gICAgc2xvdCA9
IFdURk1vdmUoc3RvcmFnZUFyZWEpOwotfQotCi12b2lkIFN0b3JhZ2VNYW5hZ2VyOjpkZXN0cm95
U3RvcmFnZU1hcChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVpbnQ2NF90IHN0b3JhZ2VN
YXBJRCkKLXsKLSAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBhdXRvIGNvbm5l
Y3Rpb25JRCA9IGNvbm5lY3Rpb24udW5pcXVlSUQoKTsKKyAgICBmb3IgKGF1dG8mIG9yaWdpbiA6
IG9yaWdpbnMpIHsKKyAgICAgICAgZm9yIChhdXRvJiBsb2NhbFN0b3JhZ2VOYW1lc3BhY2UgOiBt
X2xvY2FsU3RvcmFnZU5hbWVzcGFjZXMudmFsdWVzKCkpCisgICAgICAgICAgICBsb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UtPmNsZWFyU3RvcmFnZUFyZWFzTWF0Y2hpbmdPcmlnaW4ob3JpZ2luKTsKIAot
ICAgIHN0ZDo6cGFpcjxJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCB1aW50NjRfdD4gY29ubmVj
dGlvbkFuZFN0b3JhZ2VNYXBJRFBhaXIoY29ubmVjdGlvbklELCBzdG9yYWdlTWFwSUQpOwotICAg
IEFTU0VSVChtX3N0b3JhZ2VBcmVhc0J5Q29ubmVjdGlvbi5pc1ZhbGlkS2V5KGNvbm5lY3Rpb25B
bmRTdG9yYWdlTWFwSURQYWlyKSk7CisgICAgICAgIGZvciAoYXV0byYgdHJhbnNpZW50TG9jYWxT
dG9yYWdlTmFtZXNwYWNlIDogbV90cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2VzLnZhbHVl
cygpKQorICAgICAgICAgICAgdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlLT5jbGVhclN0
b3JhZ2VBcmVhc01hdGNoaW5nT3JpZ2luKG9yaWdpbik7CiAKLSAgICBhdXRvIGl0ID0gbV9zdG9y
YWdlQXJlYXNCeUNvbm5lY3Rpb24uZmluZChjb25uZWN0aW9uQW5kU3RvcmFnZU1hcElEUGFpcik7
Ci0gICAgaWYgKGl0ID09IG1fc3RvcmFnZUFyZWFzQnlDb25uZWN0aW9uLmVuZCgpKSB7Ci0gICAg
ICAgIC8vIFRoZSBjb25uZWN0aW9uIGhhcyBiZWVuIHJlbW92ZWQgYmVjYXVzZSB0aGUgbGFzdCBw
YWdlIHdhcyBjbG9zZWQuCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKG1fbG9jYWxTdG9y
YWdlRGF0YWJhc2VUcmFja2VyKQorICAgICAgICAgICAgbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRy
YWNrZXItPmRlbGV0ZURhdGFiYXNlV2l0aE9yaWdpbihvcmlnaW4pOwogICAgIH0KIAotICAgIGl0
LT52YWx1ZS0+cmVtb3ZlTGlzdGVuZXIoY29ubmVjdGlvbklELCBzdG9yYWdlTWFwSUQpOwotCi0g
ICAgLy8gRG9uJ3QgcmVtb3ZlIHNlc3Npb24gc3RvcmFnZSBtYXBzLiBUaGUgd2ViIHByb2Nlc3Mg
bWF5IHJlY29ubmVjdCBhbmQgZXhwZWN0IHRoZSBkYXRhIHRvIHN0aWxsIGJlIGFyb3VuZC4KLSAg
ICBpZiAoaXQtPnZhbHVlLT5pc0VwaGVtZXJhbCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBt
X3N0b3JhZ2VBcmVhc0J5Q29ubmVjdGlvbi5yZW1vdmUoY29ubmVjdGlvbkFuZFN0b3JhZ2VNYXBJ
RFBhaXIpOworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CiB9CiAKLXZvaWQgU3RvcmFnZU1hbmFnZXI6OnByZXdhcm0oSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCB1aW50NjRfdCBzdG9yYWdlTWFwSUQpCitTdG9yYWdlQXJlYSogU3Rv
cmFnZU1hbmFnZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZUFyZWEodWludDY0X3Qgc3RvcmFnZU5hbWVz
cGFjZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBvcmlnaW4pCiB7CiAgICAgQVNT
RVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgaWYgKGF1dG8qIHN0b3JhZ2VBcmVhID0gZmlu
ZFN0b3JhZ2VBcmVhKGNvbm5lY3Rpb24sIHN0b3JhZ2VNYXBJRCkpCi0gICAgICAgIHN0b3JhZ2VB
cmVhLT5vcGVuRGF0YWJhc2VBbmRJbXBvcnRJdGVtc0lmTmVlZGVkKCk7Ci19CiAKLXZvaWQgU3Rv
cmFnZU1hbmFnZXI6OmdldFZhbHVlcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVpbnQ2
NF90IHN0b3JhZ2VNYXBJRCwgdWludDY0X3Qgc3RvcmFnZU1hcFNlZWQsIEdldFZhbHVlc0NhbGxi
YWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4o
KSk7Ci0gICAgYXV0byogc3RvcmFnZUFyZWEgPSBmaW5kU3RvcmFnZUFyZWEoY29ubmVjdGlvbiwg
c3RvcmFnZU1hcElEKTsKKyAgICBpZiAoYXV0byogbG9jYWxTdG9yYWdlTmFtZXNwYWNlID0gZ2V0
T3JDcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2Uoc3RvcmFnZU5hbWVzcGFjZUlEKSkKKyAgICAg
ICAgcmV0dXJuIGxvY2FsU3RvcmFnZU5hbWVzcGFjZS0+Z2V0T3JDcmVhdGVTdG9yYWdlQXJlYShX
VEZNb3ZlKG9yaWdpbiksIG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyID8gTG9jYWxTdG9y
YWdlTmFtZXNwYWNlOjpJc0VwaGVtZXJhbDo6Tm8gOiBMb2NhbFN0b3JhZ2VOYW1lc3BhY2U6Oklz
RXBoZW1lcmFsOjpZZXMpLnB0cigpOwogCi0gICAgLy8gVGhpcyBpcyBhIHNlc3Npb24gc3RvcmFn
ZSBhcmVhIGZvciBhIHBhZ2UgdGhhdCBoYXMgYWxyZWFkeSBiZWVuIGNsb3NlZC4gSWdub3JlIGl0
LgotICAgIGlmICghc3RvcmFnZUFyZWEpCi0gICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxl
cih7IH0pOwotCi0gICAgY29tcGxldGlvbkhhbmRsZXIoc3RvcmFnZUFyZWEtPml0ZW1zKCkpOwot
ICAgIGNvbm5lY3Rpb24uc2VuZChNZXNzYWdlczo6U3RvcmFnZUFyZWFNYXA6OkRpZEdldFZhbHVl
cyhzdG9yYWdlTWFwU2VlZCksIHN0b3JhZ2VNYXBJRCk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKLXZvaWQgU3RvcmFnZU1hbmFnZXI6OnNldEl0ZW0oSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBzZWN1cml0eU9yaWdpbkRhdGEsIHVp
bnQ2NF90IHN0b3JhZ2VNYXBJRCwgdWludDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwgdWludDY0
X3Qgc3RvcmFnZU1hcFNlZWQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVl
LCBjb25zdCBTdHJpbmcmIHVybFN0cmluZykKK1N0b3JhZ2VBcmVhKiBTdG9yYWdlTWFuYWdlcjo6
Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlQXJlYSh1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNl
SUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIHRvcExldmVsT3JpZ2luLCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEmJiBvcmlnaW4pCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjpp
c01haW4oKSk7Ci0gICAgYXV0byogc3RvcmFnZUFyZWEgPSBmaW5kU3RvcmFnZUFyZWEoY29ubmVj
dGlvbiwgc3RvcmFnZU1hcElEKTsKLQotICAgIC8vIFRoaXMgaXMgYSBzZXNzaW9uIHN0b3JhZ2Ug
YXJlYSBmb3IgYSBwYWdlIHRoYXQgaGFzIGFscmVhZHkgYmVlbiBjbG9zZWQuIElnbm9yZSBpdC4K
LSAgICBpZiAoIXN0b3JhZ2VBcmVhKQotICAgICAgICByZXR1cm47CisgICAgQVNTRVJUKChIYXNo
TWFwPHVpbnQ2NF90LCBSZWZQdHI8VHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlPj46Omlz
VmFsaWRLZXkoc3RvcmFnZU5hbWVzcGFjZUlEKSkpOwogCi0gICAgYm9vbCBxdW90YUVycm9yOwot
ICAgIHN0b3JhZ2VBcmVhLT5zZXRJdGVtKGNvbm5lY3Rpb24udW5pcXVlSUQoKSwgc291cmNlU3Rv
cmFnZUFyZWFJRCwga2V5LCB2YWx1ZSwgdXJsU3RyaW5nLCBxdW90YUVycm9yKTsKLSAgICBjb25u
ZWN0aW9uLnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VBcmVhTWFwOjpEaWRTZXRJdGVtKHN0b3JhZ2VN
YXBTZWVkLCBrZXksIHF1b3RhRXJyb3IpLCBzdG9yYWdlTWFwSUQpOworICAgIGlmIChhdXRvKiB0
cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UgPSBnZXRPckNyZWF0ZVRyYW5zaWVudExvY2Fs
U3RvcmFnZU5hbWVzcGFjZShzdG9yYWdlTmFtZXNwYWNlSUQsIFdURk1vdmUodG9wTGV2ZWxPcmln
aW4pKSkKKyAgICAgICAgcmV0dXJuIHRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZS0+Z2V0
T3JDcmVhdGVTdG9yYWdlQXJlYShXVEZNb3ZlKG9yaWdpbikpLnB0cigpOworICAgIAorICAgIHJl
dHVybiBudWxscHRyOwogfQogCi12b2lkIFN0b3JhZ2VNYW5hZ2VyOjpzZXRJdGVtcyhJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCwgY29uc3QgSGFzaE1h
cDxTdHJpbmcsIFN0cmluZz4mIGl0ZW1zKQorU3RvcmFnZUFyZWEqIFN0b3JhZ2VNYW5hZ2VyOjpj
cmVhdGVTZXNzaW9uU3RvcmFnZUFyZWEodWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBvcmlnaW4pCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29w
Ojppc01haW4oKSk7Ci0gICAgaWYgKGF1dG8qIHN0b3JhZ2VBcmVhID0gZmluZFN0b3JhZ2VBcmVh
KGNvbm5lY3Rpb24sIHN0b3JhZ2VNYXBJRCkpCi0gICAgICAgIHN0b3JhZ2VBcmVhLT5zZXRJdGVt
cyhpdGVtcyk7Ci19CisgICAgQVNTRVJUKChIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8U2Vzc2lv
blN0b3JhZ2VOYW1lc3BhY2U+Pjo6aXNWYWxpZEtleShzdG9yYWdlTmFtZXNwYWNlSUQpKSk7CiAK
LXZvaWQgU3RvcmFnZU1hbmFnZXI6OnJlbW92ZUl0ZW0oSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBzZWN1cml0eU9yaWdpbkRhdGEsIHVp
bnQ2NF90IHN0b3JhZ2VNYXBJRCwgdWludDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwgdWludDY0
X3Qgc3RvcmFnZU1hcFNlZWQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHVybFN0
cmluZykKLXsKLSAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBhdXRvKiBzdG9y
YWdlQXJlYSA9IGZpbmRTdG9yYWdlQXJlYShjb25uZWN0aW9uLCBzdG9yYWdlTWFwSUQpOwotCi0g
ICAgLy8gVGhpcyBpcyBhIHNlc3Npb24gc3RvcmFnZSBhcmVhIGZvciBhIHBhZ2UgdGhhdCBoYXMg
YWxyZWFkeSBiZWVuIGNsb3NlZC4gSWdub3JlIGl0LgotICAgIGlmICghc3RvcmFnZUFyZWEpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIHN0b3JhZ2VBcmVhLT5yZW1vdmVJdGVtKGNvbm5lY3Rpb24u
dW5pcXVlSUQoKSwgc291cmNlU3RvcmFnZUFyZWFJRCwga2V5LCB1cmxTdHJpbmcpOwotICAgIGNv
bm5lY3Rpb24uc2VuZChNZXNzYWdlczo6U3RvcmFnZUFyZWFNYXA6OkRpZFJlbW92ZUl0ZW0oc3Rv
cmFnZU1hcFNlZWQsIGtleSksIHN0b3JhZ2VNYXBJRCk7CisgICAgaWYgKGF1dG8qIHNlc3Npb25T
dG9yYWdlTmFtZXNwYWNlID0gZ2V0T3JDcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShzdG9y
YWdlTmFtZXNwYWNlSUQpKQorICAgICAgICByZXR1cm4gc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2Ut
PmdldE9yQ3JlYXRlU3RvcmFnZUFyZWEoV1RGTW92ZShvcmlnaW4pKS5wdHIoKTsKKyAgICAKKyAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KIAotdm9pZCBTdG9yYWdlTWFuYWdlcjo6Y2xlYXIoSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBzZWN1
cml0eU9yaWdpbkRhdGEsIHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCwgdWludDY0X3Qgc291cmNlU3Rv
cmFnZUFyZWFJRCwgdWludDY0X3Qgc3RvcmFnZU1hcFNlZWQsIGNvbnN0IFN0cmluZyYgdXJsU3Ry
aW5nKQorTG9jYWxTdG9yYWdlTmFtZXNwYWNlKiBTdG9yYWdlTWFuYWdlcjo6Z2V0T3JDcmVhdGVM
b2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlEKQogewogICAg
IEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIGF1dG8qIHN0b3JhZ2VBcmVhID0gZmlu
ZFN0b3JhZ2VBcmVhKGNvbm5lY3Rpb24sIHN0b3JhZ2VNYXBJRCk7CiAKLSAgICAvLyBUaGlzIGlz
IGEgc2Vzc2lvbiBzdG9yYWdlIGFyZWEgZm9yIGEgcGFnZSB0aGF0IGhhcyBhbHJlYWR5IGJlZW4g
Y2xvc2VkLiBJZ25vcmUgaXQuCi0gICAgaWYgKCFzdG9yYWdlQXJlYSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgc3RvcmFnZUFyZWEtPmNsZWFyKGNvbm5lY3Rpb24udW5pcXVlSUQoKSwgc291cmNl
U3RvcmFnZUFyZWFJRCwgdXJsU3RyaW5nKTsKLSAgICBjb25uZWN0aW9uLnNlbmQoTWVzc2FnZXM6
OlN0b3JhZ2VBcmVhTWFwOjpEaWRDbGVhcihzdG9yYWdlTWFwU2VlZCksIHN0b3JhZ2VNYXBJRCk7
Ci19Ci0KLXZvaWQgU3RvcmFnZU1hbmFnZXI6OndhaXRVbnRpbFRhc2tzRmluaXNoZWQoKQotewot
ICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgQmluYXJ5U2VtYXBob3JlIHNlbWFw
aG9yZTsKLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgJnNlbWFwaG9yZV0gewotICAgICAg
ICBWZWN0b3I8c3RkOjpwYWlyPElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIHVpbnQ2NF90Pj4g
Y29ubmVjdGlvbkFuZFN0b3JhZ2VNYXBJRFBhaXJzVG9SZW1vdmU7Ci0gICAgICAgIGZvciAoYXV0
byYgY29ubmVjdGlvblN0b3JhZ2VBcmVhUGFpciA6IG1fc3RvcmFnZUFyZWFzQnlDb25uZWN0aW9u
KSB7Ci0gICAgICAgICAgICBjb25uZWN0aW9uU3RvcmFnZUFyZWFQYWlyLnZhbHVlLT5yZW1vdmVM
aXN0ZW5lcihjb25uZWN0aW9uU3RvcmFnZUFyZWFQYWlyLmtleS5maXJzdCwgY29ubmVjdGlvblN0
b3JhZ2VBcmVhUGFpci5rZXkuc2Vjb25kKTsKLSAgICAgICAgICAgIGNvbm5lY3Rpb25BbmRTdG9y
YWdlTWFwSURQYWlyc1RvUmVtb3ZlLmFwcGVuZChjb25uZWN0aW9uU3RvcmFnZUFyZWFQYWlyLmtl
eSk7Ci0gICAgICAgIH0KLQotICAgICAgICBmb3IgKGF1dG8mIGNvbm5lY3Rpb25TdG9yYWdlQXJl
YVBhaXIgOiBjb25uZWN0aW9uQW5kU3RvcmFnZU1hcElEUGFpcnNUb1JlbW92ZSkKLSAgICAgICAg
ICAgIG1fc3RvcmFnZUFyZWFzQnlDb25uZWN0aW9uLnJlbW92ZShjb25uZWN0aW9uU3RvcmFnZUFy
ZWFQYWlyKTsKLQotICAgICAgICBtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlcy5jbGVhcigpOwot
ICAgICAgICBtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZXMuY2xlYXIoKTsKLQotICAgICAgICBzZW1h
cGhvcmUuc2lnbmFsKCk7Ci0gICAgfSk7Ci0gICAgc2VtYXBob3JlLndhaXQoKTsKLX0KLQotdm9p
ZCBTdG9yYWdlTWFuYWdlcjo6c3VzcGVuZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCi17Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBD
b21wbGV0aW9uSGFuZGxlckNhbGxpbmdTY29wZSBjb21wbGV0aW9uSGFuZGxlckNhbGxlcihXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgaWYgKCFtX2xvY2FsU3RvcmFnZURhdGFiYXNl
VHJhY2tlcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgTG9ja2VyPExvY2s+IHN0YXRlTG9ja2Vy
KG1fc3RhdGVMb2NrKTsKLSAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6UnVubmluZykKLSAgICAg
ICAgcmV0dXJuOwotICAgIG1fc3RhdGUgPSBTdGF0ZTo6V2lsbFN1c3BlbmQ7Ci0KLSAgICBtX3F1
ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21w
bGV0aW9uSGFuZGxlciA9IGNvbXBsZXRpb25IYW5kbGVyQ2FsbGVyLnJlbGVhc2UoKV0gKCkgbXV0
YWJsZSB7Ci0gICAgICAgIExvY2tlcjxMb2NrPiBzdGF0ZUxvY2tlcihtX3N0YXRlTG9jayk7Ci0g
ICAgICAgIEFTU0VSVChtX3N0YXRlICE9IFN0YXRlOjpTdXNwZW5kZWQpOwotCi0gICAgICAgIGlm
IChtX3N0YXRlICE9IFN0YXRlOjpXaWxsU3VzcGVuZCkgewotICAgICAgICAgICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6U3VzcGVuZGVk
OwotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOwotICAgICAgICAKLSAgICAgICAgd2hpbGUgKG1fc3RhdGUgPT0gU3RhdGU6OlN1c3Bl
bmRlZCkKLSAgICAgICAgICAgIG1fc3RhdGVDaGFuZ2VDb25kaXRpb24ud2FpdChtX3N0YXRlTG9j
ayk7Ci0gICAgICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpSdW5uaW5nKTsKLSAgICB9KTsK
LX0KLQotdm9pZCBTdG9yYWdlTWFuYWdlcjo6cmVzdW1lKCkKLXsKLSAgICBBU1NFUlQoUnVuTG9v
cDo6aXNNYWluKCkpOwotICAgIGlmICghbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIpCi0g
ICAgICAgIHJldHVybjsKKyAgICBpZiAoIW1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlcy5pc1ZhbGlk
S2V5KHN0b3JhZ2VOYW1lc3BhY2VJRCkpCisgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
TG9ja2VyPExvY2s+IHN0YXRlTG9ja2VyKG1fc3RhdGVMb2NrKTsKLSAgICBhdXRvIHByZXZpb3Vz
U3RhdGUgPSBtX3N0YXRlOwotICAgIG1fc3RhdGUgPSBTdGF0ZTo6UnVubmluZzsKLSAgICBpZiAo
cHJldmlvdXNTdGF0ZSA9PSBTdGF0ZTo6U3VzcGVuZGVkKQotICAgICAgICBtX3N0YXRlQ2hhbmdl
Q29uZGl0aW9uLm5vdGlmeU9uZSgpOworICAgIHJldHVybiBtX2xvY2FsU3RvcmFnZU5hbWVzcGFj
ZXMuZW5zdXJlKHN0b3JhZ2VOYW1lc3BhY2VJRCwgW3RoaXMsIHN0b3JhZ2VOYW1lc3BhY2VJRF0o
KSB7CisgICAgICAgIHJldHVybiBMb2NhbFN0b3JhZ2VOYW1lc3BhY2U6OmNyZWF0ZSgqdGhpcywg
c3RvcmFnZU5hbWVzcGFjZUlEKTsKKyAgICB9KS5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CiB9CiAK
LVN0b3JhZ2VBcmVhKiBTdG9yYWdlTWFuYWdlcjo6ZmluZFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgdWludDY0X3Qgc3RvcmFnZU1hcElEKSBjb25zdAorVHJhbnNpZW50
TG9jYWxTdG9yYWdlTmFtZXNwYWNlKiBTdG9yYWdlTWFuYWdlcjo6Z2V0T3JDcmVhdGVUcmFuc2ll
bnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiB0b3BMZXZlbE9yaWdpbikKIHsKICAgICBBU1NFUlQo
IVJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBzdGQ6OnBhaXI8SVBDOjpDb25uZWN0aW9uOjpVbmlx
dWVJRCwgdWludDY0X3Q+IGNvbm5lY3Rpb25BbmRTdG9yYWdlTWFwSURQYWlyKGNvbm5lY3Rpb24u
dW5pcXVlSUQoKSwgc3RvcmFnZU1hcElEKTsKIAotICAgIGlmICghbV9zdG9yYWdlQXJlYXNCeUNv
bm5lY3Rpb24uaXNWYWxpZEtleShjb25uZWN0aW9uQW5kU3RvcmFnZU1hcElEUGFpcikpCisgICAg
aWYgKCFtX3RyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZXMuaXNWYWxpZEtleSh7IHN0b3Jh
Z2VOYW1lc3BhY2VJRCwgdG9wTGV2ZWxPcmlnaW4gfSkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCi0gICAgcmV0dXJuIG1fc3RvcmFnZUFyZWFzQnlDb25uZWN0aW9uLmdldChjb25uZWN0aW9u
QW5kU3RvcmFnZU1hcElEUGFpcik7CisgICAgcmV0dXJuIG1fdHJhbnNpZW50TG9jYWxTdG9yYWdl
TmFtZXNwYWNlcy5lbnN1cmUoeyBzdG9yYWdlTmFtZXNwYWNlSUQsIFdURk1vdmUodG9wTGV2ZWxP
cmlnaW4pIH0sIFtdKCl7CisgICAgICAgIHJldHVybiBUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1l
c3BhY2U6OmNyZWF0ZSgpOworICAgIH0pLml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKIH0KIAotTG9j
YWxTdG9yYWdlTmFtZXNwYWNlKiBTdG9yYWdlTWFuYWdlcjo6Z2V0T3JDcmVhdGVMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UodWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlEKQorU2Vzc2lvblN0b3JhZ2VO
YW1lc3BhY2UqIFN0b3JhZ2VNYW5hZ2VyOjpnZXRPckNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNw
YWNlKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6
OmlzTWFpbigpKTsKLSAgICBpZiAoIW1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlcy5pc1ZhbGlkS2V5
KHN0b3JhZ2VOYW1lc3BhY2VJRCkpCisKKyAgICBpZiAoIW1fc2Vzc2lvblN0b3JhZ2VOYW1lc3Bh
Y2VzLmlzVmFsaWRLZXkoc3RvcmFnZU5hbWVzcGFjZUlEKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKLSAgICByZXR1cm4gbV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2VzLmVuc3VyZShzdG9yYWdl
TmFtZXNwYWNlSUQsIFt0aGlzLCBzdG9yYWdlTmFtZXNwYWNlSURdKCkgewotICAgICAgICByZXR1
cm4gTG9jYWxTdG9yYWdlTmFtZXNwYWNlOjpjcmVhdGUoKnRoaXMsIHN0b3JhZ2VOYW1lc3BhY2VJ
RCk7CisgICAgcmV0dXJuIG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLmVuc3VyZShzdG9yYWdl
TmFtZXNwYWNlSUQsIFtdIHsKKyAgICAgICAgLy8gV2UgY3VycmVudGx5IGhhdmUgbm8gbGltaXQg
b24gc2Vzc2lvbiBzdG9yYWdlLgorICAgICAgICByZXR1cm4gU2Vzc2lvblN0b3JhZ2VOYW1lc3Bh
Y2U6OmNyZWF0ZShzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpOwogICAgIH0p
Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKIH0KIAotVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNw
YWNlKiBTdG9yYWdlTWFuYWdlcjo6Z2V0T3JDcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1l
c3BhY2UodWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEmJiB0b3BMZXZlbE9yaWdpbikKK3ZvaWQgU3RvcmFnZU1hbmFnZXI6OmNsZWFyU3RvcmFn
ZU5hbWVzcGFjZXMoKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIGlm
ICghbV90cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2VzLmlzVmFsaWRLZXkoeyBzdG9yYWdl
TmFtZXNwYWNlSUQsIHRvcExldmVsT3JpZ2luIH0pKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgIHJldHVybiBtX3RyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZXMuZW5zdXJlKHsg
c3RvcmFnZU5hbWVzcGFjZUlELCBXVEZNb3ZlKHRvcExldmVsT3JpZ2luKSB9LCBbXSgpewotICAg
ICAgICByZXR1cm4gVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlOjpjcmVhdGUoKTsKLSAg
ICB9KS5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CisgICAgbV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2Vz
LmNsZWFyKCk7CisgICAgbV90cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2VzLmNsZWFyKCk7
CisgICAgbV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMuY2xlYXIoKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dl
YlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
V2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5oCmluZGV4IDMxOTlhNDIwYThmZGJjYmIxZjc3ZDcy
ZDAxN2VhNmIzYzA4MDk1MGYuLjZiNTNlMWIyZTA0NDlmOWIzYzA0MDNiNTMyM2FlYWQwMGMzYTk2
MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9T
dG9yYWdlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3Rv
cmFnZS9TdG9yYWdlTWFuYWdlci5oCkBAIC00OSw3ICs0OSw3IEBAIGNsYXNzIFdlYlByb2Nlc3NQ
cm94eTsKIAogdXNpbmcgR2V0VmFsdWVzQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+Jik+OwogCi1jbGFzcyBTdG9yYWdlTWFuYWdl
ciA6IHB1YmxpYyBJUEM6OkNvbm5lY3Rpb246OldvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlciB7Citj
bGFzcyBTdG9yYWdlTWFuYWdlciA6IHB1YmxpYyBSZWZDb3VudGVkPFN0b3JhZ2VNYW5hZ2VyPiB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTdG9yYWdlTWFuYWdlcj4gY3JlYXRlKFN0cmluZyYm
IGxvY2FsU3RvcmFnZURpcmVjdG9yeSkKICAgICB7CkBAIC02MCw3OCArNjAsNDEgQEAgcHVibGlj
OgogCiAgICAgdm9pZCBjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBzdG9y
YWdlTmFtZXNwYWNlSUQsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcyk7CiAgICAgdm9pZCBkZXN0cm95
U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlEKTsKLSAg
ICB2b2lkIGFkZEFsbG93ZWRTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZUNvbm5lY3Rpb24odWludDY0
X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBJUEM6OkNvbm5lY3Rpb24mKTsKLSAgICB2b2lkIHJlbW92
ZUFsbG93ZWRTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZUNvbm5lY3Rpb24odWludDY0X3Qgc3RvcmFn
ZU5hbWVzcGFjZUlELCBJUEM6OkNvbm5lY3Rpb24mKTsKICAgICB2b2lkIGNsb25lU2Vzc2lvblN0
b3JhZ2VOYW1lc3BhY2UodWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCB1aW50NjRfdCBuZXdT
dG9yYWdlTmFtZXNwYWNlSUQpOwogCi0gICAgdm9pZCBwcm9jZXNzRGlkQ2xvc2VDb25uZWN0aW9u
KElQQzo6Q29ubmVjdGlvbiYpOwotICAgIHZvaWQgd2FpdFVudGlsVGFza3NGaW5pc2hlZCgpOwot
ICAgIHZvaWQgc3VzcGVuZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQg
cmVzdW1lKCk7Ci0KLSAgICB2b2lkIGdldFNlc3Npb25TdG9yYWdlT3JpZ2lucyhGdW5jdGlvbjx2
b2lkKEhhc2hTZXQ8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcik7CisgICAgdm9pZCBnZXRTZXNzaW9uU3RvcmFnZU9yaWdpbnMoRnVuY3Rpb248dm9p
ZChIYXNoU2V0PFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mJik+JiYpOwogICAgIHZvaWQg
ZGVsZXRlU2Vzc2lvblN0b3JhZ2VPcmlnaW5zKEZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcik7Ci0gICAgdm9pZCBkZWxldGVTZXNzaW9uU3RvcmFnZUVudHJpZXNGb3JPcmlnaW5z
KGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiwgRnVuY3Rpb248dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKLQotICAgIHZvaWQgZ2V0TG9jYWxTdG9yYWdlT3Jp
Z2lucyhGdW5jdGlvbjx2b2lkKEhhc2hTZXQ8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcik7Ci0gICAgdm9pZCBkZWxldGVMb2NhbFN0b3JhZ2VFbnRy
aWVzRm9yT3JpZ2luKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYpOworICAgIHZv
aWQgZGVsZXRlU2Vzc2lvblN0b3JhZ2VFbnRyaWVzRm9yT3JpZ2lucyhjb25zdCBWZWN0b3I8V2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYsIEZ1bmN0aW9uPHZvaWQoKT4mJik7CiAKLSAgICB2
b2lkIGRlbGV0ZUxvY2FsU3RvcmFnZU9yaWdpbnNNb2RpZmllZFNpbmNlKFdhbGxUaW1lLCBGdW5j
dGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwotICAgIHZvaWQgZGVsZXRlTG9jYWxT
dG9yYWdlRW50cmllc0Zvck9yaWdpbnMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YT4mLCBGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOworICAgIHZv
aWQgZ2V0TG9jYWxTdG9yYWdlT3JpZ2lucyhGdW5jdGlvbjx2b2lkKEhhc2hTZXQ8V2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhPiYmKT4mJik7CisgICAgdm9pZCBkZWxldGVMb2NhbFN0b3JhZ2VP
cmlnaW5zTW9kaWZpZWRTaW5jZShXYWxsVGltZSwgRnVuY3Rpb248dm9pZCgpPiYmKTsKKyAgICB2
b2lkIGRlbGV0ZUxvY2FsU3RvcmFnZUVudHJpZXNGb3JPcmlnaW5zKGNvbnN0IFZlY3RvcjxXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiwgRnVuY3Rpb248dm9pZCgpPiYmKTsKKyAgICB2b2lk
IGdldExvY2FsU3RvcmFnZU9yaWdpbkRldGFpbHMoRnVuY3Rpb248dm9pZChWZWN0b3I8TG9jYWxT
dG9yYWdlRGF0YWJhc2VUcmFja2VyOjpPcmlnaW5EZXRhaWxzPiYmKT4mJik7CiAKLSAgICB2b2lk
IGdldExvY2FsU3RvcmFnZU9yaWdpbkRldGFpbHMoRnVuY3Rpb248dm9pZChWZWN0b3I8TG9jYWxT
dG9yYWdlRGF0YWJhc2VUcmFja2VyOjpPcmlnaW5EZXRhaWxzPiYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcik7CisgICAgdm9pZCBjbGVhclN0b3JhZ2VOYW1lc3BhY2VzKCk7CiAKICAgICB2b2lkIGRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwogICAgIHZv
aWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYs
IHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpOwogICAgIAogICAg
IExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlciogbG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2Vy
KCkgY29uc3QgeyByZXR1cm4gbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuZ2V0KCk7IH0K
ICAgICAKLSAgICBXb3JrUXVldWUmIHdvcmtRdWV1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcXVldWUu
Z2V0KCk7IH0KLSAgICAKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbG9jYWxTdG9yYWdlRGF0
YWJhc2VRdW90YUluQnl0ZXM7CiAKKyAgICBTdG9yYWdlQXJlYSogY3JlYXRlTG9jYWxTdG9yYWdl
QXJlYSh1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSYmKTsKKyAgICBTdG9yYWdlQXJlYSogY3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlQXJl
YSh1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YSYmLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJik7CisgICAgU3RvcmFnZUFyZWEqIGNy
ZWF0ZVNlc3Npb25TdG9yYWdlQXJlYSh1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmKTsKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBTdG9y
YWdlTWFuYWdlcihTdHJpbmcmJiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpOwogCi0gICAgLy8gTWVz
c2FnZSBoYW5kbGVycy4KLSAgICB2b2lkIGNyZWF0ZUxvY2FsU3RvcmFnZU1hcChJUEM6OkNvbm5l
Y3Rpb24mLCB1aW50NjRfdCBzdG9yYWdlTWFwSUQsIHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJ
RCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYpOwotICAgIHZvaWQgY3JlYXRlVHJhbnNp
ZW50TG9jYWxTdG9yYWdlTWFwKElQQzo6Q29ubmVjdGlvbiYsIHVpbnQ2NF90IHN0b3JhZ2VNYXBJ
RCwgdWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEmJiB0b3BMZXZlbE9yaWdpbkRhdGEsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmKTsK
LSAgICB2b2lkIGNyZWF0ZVNlc3Npb25TdG9yYWdlTWFwKElQQzo6Q29ubmVjdGlvbiYsIHVpbnQ2
NF90IHN0b3JhZ2VNYXBJRCwgdWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEmJik7Ci0gICAgdm9pZCBkZXN0cm95U3RvcmFnZU1hcChJUEM6OkNv
bm5lY3Rpb24mLCB1aW50NjRfdCBzdG9yYWdlTWFwSUQpOwotCi0gICAgdm9pZCBnZXRWYWx1ZXMo
SVBDOjpDb25uZWN0aW9uJiwgdWludDY0X3Qgc3RvcmFnZU1hcElELCB1aW50NjRfdCBzdG9yYWdl
TWFwU2VlZCwgR2V0VmFsdWVzQ2FsbGJhY2smJik7Ci0gICAgdm9pZCBwcmV3YXJtKElQQzo6Q29u
bmVjdGlvbiYsIHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCk7Ci0gICAgdm9pZCBzZXRJdGVtKElQQzo6
Q29ubmVjdGlvbiYsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCB1aW50NjRfdCBzdG9y
YWdlTWFwSUQsIHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIHVpbnQ2NF90IHN0b3JhZ2VN
YXBTZWVkLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgY29uc3QgU3Ry
aW5nJiB1cmxTdHJpbmcpOwotICAgIHZvaWQgc2V0SXRlbXMoSVBDOjpDb25uZWN0aW9uJiwgdWlu
dDY0X3Qgc3RvcmFnZU1hcElELCBjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgaXRlbXMp
OwotICAgIHZvaWQgcmVtb3ZlSXRlbShJUEM6OkNvbm5lY3Rpb24mLCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGEmJiwgdWludDY0X3Qgc3RvcmFnZU1hcElELCB1aW50NjRfdCBzb3VyY2VTdG9y
YWdlQXJlYUlELCB1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCwgY29uc3QgU3RyaW5nJiBrZXksIGNv
bnN0IFN0cmluZyYgdXJsU3RyaW5nKTsKLSAgICB2b2lkIGNsZWFyKElQQzo6Q29ubmVjdGlvbiYs
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCB1aW50NjRfdCBzdG9yYWdlTWFwSUQsIHVp
bnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkLCBjb25z
dCBTdHJpbmcmIHVybFN0cmluZyk7Ci0KLSAgICBTdG9yYWdlQXJlYSogZmluZFN0b3JhZ2VBcmVh
KElQQzo6Q29ubmVjdGlvbiYsIHVpbnQ2NF90KSBjb25zdDsKLQogICAgIExvY2FsU3RvcmFnZU5h
bWVzcGFjZSogZ2V0T3JDcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3Qgc3RvcmFn
ZU5hbWVzcGFjZUlEKTsKLQogICAgIFRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSogZ2V0
T3JDcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3Qgc3RvcmFnZU5h
bWVzcGFjZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiB0b3BMZXZlbE9yaWdpbik7
Ci0KLSAgICBSZWY8V29ya1F1ZXVlPiBtX3F1ZXVlOworICAgIFNlc3Npb25TdG9yYWdlTmFtZXNw
YWNlKiBnZXRPckNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IHN0b3JhZ2VO
YW1lc3BhY2VJRCk7CiAKICAgICBSZWZQdHI8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyPiBt
X2xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQ
dHI8TG9jYWxTdG9yYWdlTmFtZXNwYWNlPj4gbV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2VzOwotCiAg
ICAgSGFzaE1hcDxzdGQ6OnBhaXI8dWludDY0X3QsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YT4sIFJlZlB0cjxUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2U+PiBtX3RyYW5zaWVudExv
Y2FsU3RvcmFnZU5hbWVzcGFjZXM7Ci0KICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8U2Vz
c2lvblN0b3JhZ2VOYW1lc3BhY2U+PiBtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlczsKLQotICAg
IEhhc2hNYXA8c3RkOjpwYWlyPElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIHVpbnQ2NF90Piwg
UmVmUHRyPFN0b3JhZ2VBcmVhPj4gbV9zdG9yYWdlQXJlYXNCeUNvbm5lY3Rpb247Ci0gICAgSGFz
aFNldDxJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEPiBtX2Nvbm5lY3Rpb25zOwotCi0gICAgZW51
bSBjbGFzcyBTdGF0ZSB7Ci0gICAgICAgIFJ1bm5pbmcsCi0gICAgICAgIFdpbGxTdXNwZW5kLAot
ICAgICAgICBTdXNwZW5kZWQKLSAgICB9OwotICAgIFN0YXRlIG1fc3RhdGUgeyBTdGF0ZTo6UnVu
bmluZyB9OwotICAgIExvY2sgbV9zdGF0ZUxvY2s7Ci0gICAgQ29uZGl0aW9uIG1fc3RhdGVDaGFu
Z2VDb25kaXRpb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdl
TWFuYWdlci5tZXNzYWdlcy5pbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzhiYjZh
YjI0MDI4YTI1M2FhMTE4NTQyMDFkNmExNWQyNWNlMmM2Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dl
YlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIubWVzc2FnZXMuaW4KKysrIC9kZXYvbnVsbApAQCAtMSwz
NiArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0j
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotIyBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQot
bWVzc2FnZXMgLT4gU3RvcmFnZU1hbmFnZXIgewotICAgIENyZWF0ZUxvY2FsU3RvcmFnZU1hcCh1
aW50NjRfdCBzdG9yYWdlTWFwSUQsIHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgc3RydWN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBzZWN1cml0eU9yaWdpbkRhdGEpIFdhbnRzQ29u
bmVjdGlvbgotICAgIENyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU1hcCh1aW50NjRfdCBzdG9y
YWdlTWFwSUQsIHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgc3RydWN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSB0b3BMZXZlbFNlY3VyaXR5T3JpZ2luRGF0YSwgc3RydWN0IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBzZWN1cml0eU9yaWdpbkRhdGEpIFdhbnRzQ29ubmVjdGlv
bgotICAgIENyZWF0ZVNlc3Npb25TdG9yYWdlTWFwKHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCwgdWlu
dDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhIHNlY3VyaXR5T3JpZ2luRGF0YSkgV2FudHNDb25uZWN0aW9uCi0gICAgRGVzdHJveVN0b3Jh
Z2VNYXAodWludDY0X3Qgc3RvcmFnZU1hcElEKSBXYW50c0Nvbm5lY3Rpb24KLQotICAgIFByZXdh
cm0odWludDY0X3Qgc3RvcmFnZU1hcElEKSBXYW50c0Nvbm5lY3Rpb24KLSAgICBHZXRWYWx1ZXMo
dWludDY0X3Qgc3RvcmFnZU1hcElELCB1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCkgLT4gKEhhc2hN
YXA8U3RyaW5nLCBTdHJpbmc+IHZhbHVlcykgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCi0K
LSAgICBTZXRJdGVtKHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgc2VjdXJpdHlP
cmlnaW5EYXRhLCB1aW50NjRfdCBzdG9yYWdlTWFwSUQsIHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VB
cmVhSUQsIHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkLCBTdHJpbmcga2V5LCBTdHJpbmcgdmFsdWUs
IFN0cmluZyB1cmxTdHJpbmcpIFdhbnRzQ29ubmVjdGlvbgotICAgIFNldEl0ZW1zKHVpbnQ2NF90
IHN0b3JhZ2VNYXBJRCwgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gaXRlbXMpIFdhbnRzQ29ubmVj
dGlvbgotICAgIFJlbW92ZUl0ZW0oc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBz
ZWN1cml0eU9yaWdpbkRhdGEsIHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCwgdWludDY0X3Qgc291cmNl
U3RvcmFnZUFyZWFJRCwgdWludDY0X3Qgc3RvcmFnZU1hcFNlZWQsIFN0cmluZyBrZXksIFN0cmlu
ZyB1cmxTdHJpbmcpIFdhbnRzQ29ubmVjdGlvbgotICAgIENsZWFyKHN0cnVjdCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEgc2VjdXJpdHlPcmlnaW5EYXRhLCB1aW50NjRfdCBzdG9yYWdlTWFw
SUQsIHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVk
LCBTdHJpbmcgdXJsU3RyaW5nKSBXYW50c0Nvbm5lY3Rpb24KLX0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJT
ZXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjgxYzdiNzFiZjQ1MzAzMTFmODk5OTZkZGY4ZDQ2ODBlOWJiMDky
NGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0
b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQuY3BwCkBAIC0wLDAgKzEsNDA5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlN0b3JhZ2VNYW5hZ2VyU2V0LmgiCisKKyNpbmNsdWRlICJTdG9yYWdlQXJlYU1h
cE1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiU3RvcmFnZU1hbmFnZXJTZXRNZXNzYWdlcy5oIgorI2lu
Y2x1ZGUgPHd0Zi90aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5oPgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworY29uc3QgdWludDY0X3QgaW52YWxpZFN0b3JhZ2VBcmVhSUQgPSAwOworCitSZWY8U3Rv
cmFnZU1hbmFnZXJTZXQ+IFN0b3JhZ2VNYW5hZ2VyU2V0OjpjcmVhdGUoKQoreworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFN0b3JhZ2VNYW5hZ2VyU2V0KTsKK30KKworU3RvcmFnZU1hbmFnZXJT
ZXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0KCkKKyAgICA6IG1fcXVldWUoV29ya1F1ZXVlOjpjcmVhdGUo
ImNvbS5hcHBsZS5XZWJLaXQuV2ViU3RvcmFnZSIpKQoreworICAgIEFTU0VSVChSdW5Mb29wOjpp
c01haW4oKSk7CisKKyAgICAvLyBNYWtlIHN1cmUgdGhlIGVuY29kaW5nIGlzIGluaXRpYWxpemVk
IGJlZm9yZSB3ZSBzdGFydCBkaXNwYXRjaGluZyB0aGluZ3MgdG8gdGhlIHF1ZXVlLgorICAgIFVU
RjhFbmNvZGluZygpOworfQorCitTdG9yYWdlTWFuYWdlclNldDo6flN0b3JhZ2VNYW5hZ2VyU2V0
KCkKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgd2FpdFVudGlsVGFz
a3NGaW5pc2hlZCgpOworfQorCit2b2lkIFN0b3JhZ2VNYW5hZ2VyU2V0OjphZGQoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZURpcmVjdG9yeSwgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnlIYW5kbGUpCit7Cisg
ICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIGF1dG9baXRlciwgaXNOZXdFbnRy
eV0gPSBtX3N0b3JhZ2VNYW5hZ2VyUGF0aHMuYWRkKHNlc3Npb25JRCwgbG9jYWxTdG9yYWdlRGly
ZWN0b3J5KTsKKyAgICBpZiAoaXNOZXdFbnRyeSkgeworICAgICAgICBpZiAoIXNlc3Npb25JRC5p
c0VwaGVtZXJhbCgpKQorICAgICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1h
bmVudGx5KGxvY2FsU3RvcmFnZURpcmVjdG9yeUhhbmRsZSk7CisKKyAgICAgICAgbV9xdWV1ZS0+
ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc2Vzc2lvbklE
LCBkaXJlY3RvcnkgPSBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkuaXNvbGF0ZWRDb3B5KCldKCkgbXV0
YWJsZSB7CisgICAgICAgICAgICBtX3N0b3JhZ2VNYW5hZ2Vycy5lbnN1cmUoc2Vzc2lvbklELCBb
ZGlyZWN0b3J5XSgpIG11dGFibGUgeworICAgICAgICAgICAgICAgIHJldHVybiBTdG9yYWdlTWFu
YWdlcjo6Y3JlYXRlKFdURk1vdmUoZGlyZWN0b3J5KSk7CisgICAgICAgICAgICB9KTsKKyAgICAg
ICAgfSk7CisgICAgfQorfQorCit2b2lkIFN0b3JhZ2VNYW5hZ2VyU2V0OjpyZW1vdmUoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklEKQoreworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisK
KyAgICBpZiAobV9zdG9yYWdlTWFuYWdlclBhdGhzLnJlbW92ZShzZXNzaW9uSUQpKSB7CisgICAg
ICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIHNlc3Npb25JRF0oKSB7CisgICAgICAgICAgICBtX3N0b3JhZ2VNYW5hZ2Vycy5yZW1vdmUo
c2Vzc2lvbklEKTsKKyAgICAgICAgfSk7CisgICAgfQorfQorCitib29sIFN0b3JhZ2VNYW5hZ2Vy
U2V0Ojpjb250YWlucyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCit7CisgICAgQVNTRVJUKFJ1
bkxvb3A6OmlzTWFpbigpKTsKKworICAgIHJldHVybiBtX3N0b3JhZ2VNYW5hZ2VyUGF0aHMuY29u
dGFpbnMoc2Vzc2lvbklEKTsKK30KKwordm9pZCBTdG9yYWdlTWFuYWdlclNldDo6YWRkQ29ubmVj
dGlvbihJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pIAoreworICAgIEFTU0VSVChSdW5Mb29w
Ojppc01haW4oKSk7CisKKyAgICBhdXRvIGNvbm5lY3Rpb25JRCA9IGNvbm5lY3Rpb24udW5pcXVl
SUQoKTsKKyAgICBBU1NFUlQoIW1fY29ubmVjdGlvbnMuY29udGFpbnMoY29ubmVjdGlvbklEKSk7
CisgICAgaWYgKG1fY29ubmVjdGlvbnMuYWRkKGNvbm5lY3Rpb25JRCkuaXNOZXdFbnRyeSkKKyAg
ICAgICAgY29ubmVjdGlvbi5hZGRXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlN0
b3JhZ2VNYW5hZ2VyU2V0OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcXVldWUuZ2V0KCksIHRo
aXMpOworfQorCit2b2lkIFN0b3JhZ2VNYW5hZ2VyU2V0OjpyZW1vdmVDb25uZWN0aW9uKElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OworCisgICAgYXV0byBjb25uZWN0aW9uSUQgPSBjb25uZWN0aW9uLnVuaXF1ZUlEKCk7CisgICAg
QVNTRVJUKG1fY29ubmVjdGlvbnMuY29udGFpbnMoY29ubmVjdGlvbklEKSk7CisgICAgbV9jb25u
ZWN0aW9ucy5yZW1vdmUoY29ubmVjdGlvbklEKTsKKyAgICBjb25uZWN0aW9uLnJlbW92ZVdvcmtR
dWV1ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXJTZXQ6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSk7CisKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb25uZWN0aW9uSURdKCkgeworICAgICAgICBmb3IgKGF1
dG8mIHN0b3JhZ2VBcmVhIDogbV9zdG9yYWdlQXJlYXMudmFsdWVzKCkpCisgICAgICAgICAgICBz
dG9yYWdlQXJlYS0+cmVtb3ZlTGlzdGVuZXIoY29ubmVjdGlvbklEKTsKKyAgICB9KTsKK30KKwor
dm9pZCBTdG9yYWdlTWFuYWdlclNldDo6d2FpdFVudGlsVGFza3NGaW5pc2hlZCgpCit7CisgICAg
QVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIEJpbmFyeVNlbWFwaG9yZSBzZW1hcGhv
cmU7CisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsICZzZW1hcGhvcmVdIHsKKyAgICAgICAg
Zm9yIChhdXRvJiBbc2Vzc2lvbklELCBzdG9yYWdlTWFuYWdlcl0gOiBtX3N0b3JhZ2VNYW5hZ2Vy
cykKKyAgICAgICAgICAgIHN0b3JhZ2VNYW5hZ2VyLT5jbGVhclN0b3JhZ2VOYW1lc3BhY2VzKCk7
CisKKyAgICAgICAgbV9zdG9yYWdlTWFuYWdlcnMuY2xlYXIoKTsKKyAgICAgICAgbV9zdG9yYWdl
QXJlYXMuY2xlYXIoKTsKKworICAgICAgICBzZW1hcGhvcmUuc2lnbmFsKCk7CisgICAgfSk7Cisg
ICAgc2VtYXBob3JlLndhaXQoKTsKK30KKwordm9pZCBTdG9yYWdlTWFuYWdlclNldDo6d2FpdFVu
dGlsU3luY2luZ0xvY2FsU3RvcmFnZUZpbmlzaGVkKCkKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOworCisgICAgQmluYXJ5U2VtYXBob3JlIHNlbWFwaG9yZTsKKyAgICBtX3F1ZXVl
LT5kaXNwYXRjaChbdGhpcywgJnNlbWFwaG9yZV0geworICAgICAgICBmb3IgKGF1dG8qIHN0b3Jh
Z2VBcmVhIDogbV9zdG9yYWdlQXJlYXMudmFsdWVzKCkpCisgICAgICAgICAgICBzdG9yYWdlQXJl
YS0+c3luY1RvRGF0YWJhc2UoKTsKKworICAgICAgICBzZW1hcGhvcmUuc2lnbmFsKCk7CisgICAg
fSk7CisgICAgc2VtYXBob3JlLndhaXQoKTsKK30KKwordm9pZCBTdG9yYWdlTWFuYWdlclNldDo6
c3VzcGVuZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7
CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIENvbXBsZXRpb25IYW5kbGVy
Q2FsbGluZ1Njb3BlIGNvbXBsZXRpb25IYW5kbGVyQ2FsbGVyKFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKKyAgICBMb2NrZXI8TG9jaz4gc3RhdGVMb2NrZXIobV9zdGF0ZUxvY2spOworICAg
IGlmIChtX3N0YXRlICE9IFN0YXRlOjpSdW5uaW5nKQorICAgICAgICByZXR1cm47CisgICAgbV9z
dGF0ZSA9IFN0YXRlOjpXaWxsU3VzcGVuZDsKKworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gY29t
cGxldGlvbkhhbmRsZXJDYWxsZXIucmVsZWFzZSgpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgTG9j
a2VyPExvY2s+IHN0YXRlTG9ja2VyKG1fc3RhdGVMb2NrKTsKKyAgICAgICAgQVNTRVJUKG1fc3Rh
dGUgIT0gU3RhdGU6OlN1c3BlbmRlZCk7CisKKyAgICAgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6
OldpbGxTdXNwZW5kKSB7CisgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKKyAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpTdXNwZW5kZWQ7CisgICAgICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisKKyAgICAgICAg
d2hpbGUgKG1fc3RhdGUgPT0gU3RhdGU6OlN1c3BlbmRlZCkKKyAgICAgICAgICAgIG1fc3RhdGVD
aGFuZ2VDb25kaXRpb24ud2FpdChtX3N0YXRlTG9jayk7CisgICAgICAgIEFTU0VSVChtX3N0YXRl
ID09IFN0YXRlOjpSdW5uaW5nKTsKKyAgICB9KTsKK30KKwordm9pZCBTdG9yYWdlTWFuYWdlclNl
dDo6cmVzdW1lKCkKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgTG9j
a2VyPExvY2s+IHN0YXRlTG9ja2VyKG1fc3RhdGVMb2NrKTsKKyAgICBhdXRvIHByZXZpb3VzU3Rh
dGUgPSBtX3N0YXRlOworICAgIG1fc3RhdGUgPSBTdGF0ZTo6UnVubmluZzsKKyAgICBpZiAocHJl
dmlvdXNTdGF0ZSA9PSBTdGF0ZTo6U3VzcGVuZGVkKQorICAgICAgICBtX3N0YXRlQ2hhbmdlQ29u
ZGl0aW9uLm5vdGlmeU9uZSgpOworfQorCit2b2lkIFN0b3JhZ2VNYW5hZ2VyU2V0OjpnZXRTZXNz
aW9uU3RvcmFnZU9yaWdpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKEhhc2hTZXQ8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYmKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3sKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzZXNzaW9uSUQsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8qIHN0b3Jh
Z2VNYW5hZ2VyID0gbV9zdG9yYWdlTWFuYWdlcnMuZ2V0KHNlc3Npb25JRCk7CisgICAgICAgIEFT
U0VSVChzdG9yYWdlTWFuYWdlcik7CisKKyAgICAgICAgc3RvcmFnZU1hbmFnZXItPmdldFNlc3Np
b25TdG9yYWdlT3JpZ2lucyhXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgfSk7Cit9
CisKK3ZvaWQgU3RvcmFnZU1hbmFnZXJTZXQ6OmRlbGV0ZVNlc3Npb25TdG9yYWdlKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQoreworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIHNlc3Npb25JRCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byogc3RvcmFnZU1hbmFn
ZXIgPSBtX3N0b3JhZ2VNYW5hZ2Vycy5nZXQoc2Vzc2lvbklEKTsKKyAgICAgICAgQVNTRVJUKHN0
b3JhZ2VNYW5hZ2VyKTsKKworICAgICAgICBzdG9yYWdlTWFuYWdlci0+ZGVsZXRlU2Vzc2lvblN0
b3JhZ2VPcmlnaW5zKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICB9KTsKK30KKwor
dm9pZCBTdG9yYWdlTWFuYWdlclNldDo6ZGVsZXRlU2Vzc2lvblN0b3JhZ2VGb3JPcmlnaW5zKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YT4mIG9yaWdpbkRhdGFzLCBEZWxldGVDYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVy
KQoreworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIHNlc3Npb25JRCwgY29waWVkT3JpZ2luRGF0YXMgPSBjcm9zc1RocmVhZENvcHko
b3JpZ2luRGF0YXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSgpIG11dGFibGUgeworICAgICAgICBhdXRvKiBzdG9yYWdlTWFuYWdlciA9IG1fc3RvcmFn
ZU1hbmFnZXJzLmdldChzZXNzaW9uSUQpOworICAgICAgICBBU1NFUlQoc3RvcmFnZU1hbmFnZXIp
OworCisgICAgICAgIHN0b3JhZ2VNYW5hZ2VyLT5kZWxldGVTZXNzaW9uU3RvcmFnZUVudHJpZXNG
b3JPcmlnaW5zKGNvcGllZE9yaWdpbkRhdGFzLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CisgICAgfSk7Cit9CisKK3ZvaWQgU3RvcmFnZU1hbmFnZXJTZXQ6OmdldExvY2FsU3RvcmFnZU9y
aWdpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBHZXRPcmlnaW5zQ2FsbGJhY2smJiBjb21w
bGV0aW9uSGFuZGxlcikKK3sKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzZXNzaW9uSUQsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8qIHN0b3Jh
Z2VNYW5hZ2VyID0gbV9zdG9yYWdlTWFuYWdlcnMuZ2V0KHNlc3Npb25JRCk7CisgICAgICAgIEFT
U0VSVChzdG9yYWdlTWFuYWdlcik7CisKKyAgICAgICAgc3RvcmFnZU1hbmFnZXItPmdldExvY2Fs
U3RvcmFnZU9yaWdpbnMoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIH0pOworfQor
Cit2b2lkIFN0b3JhZ2VNYW5hZ2VyU2V0OjpkZWxldGVMb2NhbFN0b3JhZ2VNb2RpZmllZFNpbmNl
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2FsbFRpbWUgdGltZSwgRGVsZXRlQ2FsbGJhY2sm
JiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzZXNzaW9uSUQsIHRpbWUsIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAg
IGF1dG8qIHN0b3JhZ2VNYW5hZ2VyID0gbV9zdG9yYWdlTWFuYWdlcnMuZ2V0KHNlc3Npb25JRCk7
CisgICAgICAgIEFTU0VSVChzdG9yYWdlTWFuYWdlcik7CisKKyAgICAgICAgc3RvcmFnZU1hbmFn
ZXItPmRlbGV0ZUxvY2FsU3RvcmFnZU9yaWdpbnNNb2RpZmllZFNpbmNlKHRpbWUsIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICB9KTsKK30KKwordm9pZCBTdG9yYWdlTWFuYWdlclNl
dDo6ZGVsZXRlTG9jYWxTdG9yYWdlRm9yT3JpZ2lucyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiBvcmlnaW5EYXRhcywg
RGVsZXRlQ2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBtX3F1ZXVlLT5kaXNw
YXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzZXNzaW9uSUQsIGNv
cGllZE9yaWdpbkRhdGFzID0gY3Jvc3NUaHJlYWRDb3B5KG9yaWdpbkRhdGFzKSwgY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAg
ICAgYXV0byogc3RvcmFnZU1hbmFnZXIgPSBtX3N0b3JhZ2VNYW5hZ2Vycy5nZXQoc2Vzc2lvbklE
KTsKKyAgICAgICAgQVNTRVJUKHN0b3JhZ2VNYW5hZ2VyKTsKKworICAgICAgICBzdG9yYWdlTWFu
YWdlci0+ZGVsZXRlTG9jYWxTdG9yYWdlRW50cmllc0Zvck9yaWdpbnMoY29waWVkT3JpZ2luRGF0
YXMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICB9KTsKK30KKwordm9pZCBTdG9y
YWdlTWFuYWdlclNldDo6Z2V0TG9jYWxTdG9yYWdlT3JpZ2luRGV0YWlscyhQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPExvY2FsU3RvcmFnZURh
dGFiYXNlVHJhY2tlcjo6T3JpZ2luRGV0YWlscz4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7
CisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgc2Vzc2lvbklELCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICBhdXRvKiBzdG9yYWdlTWFuYWdlciA9IG1fc3Rv
cmFnZU1hbmFnZXJzLmdldChzZXNzaW9uSUQpOworICAgICAgICBBU1NFUlQoc3RvcmFnZU1hbmFn
ZXIpOworCisgICAgICAgIHN0b3JhZ2VNYW5hZ2VyLT5nZXRMb2NhbFN0b3JhZ2VPcmlnaW5EZXRh
aWxzKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICB9KTsKK30KKwordm9pZCBTdG9y
YWdlTWFuYWdlclNldDo6Y29ubmVjdFRvTG9jYWxTdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3Qgc3RvcmFnZU5h
bWVzcGFjZUlELCBTZWN1cml0eU9yaWdpbkRhdGEmJiBvcmlnaW5EYXRhLCBDb25uZWN0VG9TdG9y
YWdlQXJlYUNhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJUKCFSdW5M
b29wOjppc01haW4oKSk7CisKKyAgICBhdXRvKiBzdG9yYWdlTWFuYWdlciA9IG1fc3RvcmFnZU1h
bmFnZXJzLmdldChzZXNzaW9uSUQpOworICAgIGlmICghc3RvcmFnZU1hbmFnZXIpIHsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoaW52YWxpZFN0b3JhZ2VBcmVhSUQpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgYXV0byogc3RvcmFnZUFyZWEgPSBzdG9yYWdlTWFuYWdlci0+Y3Jl
YXRlTG9jYWxTdG9yYWdlQXJlYShzdG9yYWdlTmFtZXNwYWNlSUQsIFdURk1vdmUob3JpZ2luRGF0
YSkpOworICAgIGlmICghc3RvcmFnZUFyZWEpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
aW52YWxpZFN0b3JhZ2VBcmVhSUQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0
byBzdG9yYWdlQXJlYUlEID0gc3RvcmFnZUFyZWEtPmlkZW50aWZpZXIoKTsKKyAgICBhdXRvW2l0
ZXIsIGlzTmV3RW50cnldID0gbV9zdG9yYWdlQXJlYXMuYWRkKHN0b3JhZ2VBcmVhSUQsIG51bGxw
dHIpOworICAgIGlmIChpc05ld0VudHJ5KSB7CisgICAgICAgIHN0b3JhZ2VBcmVhLT5zZXRXb3Jr
UXVldWUobV9xdWV1ZS5wdHIoKSk7CisgICAgICAgIGl0ZXItPnZhbHVlID0gc3RvcmFnZUFyZWE7
CisgICAgfSBlbHNlCisgICAgICAgIEFTU0VSVChzdG9yYWdlQXJlYSA9PSBpdGVyLT52YWx1ZSk7
CisKKyAgICBjb21wbGV0aW9uSGFuZGxlcihzdG9yYWdlQXJlYUlEKTsKKworICAgIHN0b3JhZ2VB
cmVhLT5hZGRMaXN0ZW5lcihjb25uZWN0aW9uLnVuaXF1ZUlEKCkpOworfQorCit2b2lkIFN0b3Jh
Z2VNYW5hZ2VyU2V0Ojpjb25uZWN0VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBz
dG9yYWdlTmFtZXNwYWNlSUQsIFNlY3VyaXR5T3JpZ2luRGF0YSYmIHRvcExldmVsT3JpZ2luRGF0
YSwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgb3JpZ2luRGF0YSwgQ29ubmVjdFRvU3RvcmFnZUFyZWFD
YWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNN
YWluKCkpOworCisgICAgYXV0byogc3RvcmFnZU1hbmFnZXIgPSBtX3N0b3JhZ2VNYW5hZ2Vycy5n
ZXQoc2Vzc2lvbklEKTsKKyAgICBpZiAoIXN0b3JhZ2VNYW5hZ2VyKSB7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKGludmFsaWRTdG9yYWdlQXJlYUlEKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGF1dG8qIHN0b3JhZ2VBcmVhID0gc3RvcmFnZU1hbmFnZXItPmNyZWF0ZVRyYW5z
aWVudExvY2FsU3RvcmFnZUFyZWEoc3RvcmFnZU5hbWVzcGFjZUlELCBXVEZNb3ZlKHRvcExldmVs
T3JpZ2luRGF0YSksIFdURk1vdmUob3JpZ2luRGF0YSkpOworICAgIGlmICghc3RvcmFnZUFyZWEp
IHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoaW52YWxpZFN0b3JhZ2VBcmVhSUQpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBzdG9yYWdlQXJlYUlEID0gc3RvcmFnZUFy
ZWEtPmlkZW50aWZpZXIoKTsKKyAgICBhdXRvW2l0ZXIsIGlzTmV3RW50cnldID0gbV9zdG9yYWdl
QXJlYXMuYWRkKHN0b3JhZ2VBcmVhSUQsIG51bGxwdHIpOworICAgIGlmIChpc05ld0VudHJ5KQor
ICAgICAgICBpdGVyLT52YWx1ZSA9IHN0b3JhZ2VBcmVhOworICAgIGVsc2UKKyAgICAgICAgQVNT
RVJUKHN0b3JhZ2VBcmVhID09IGl0ZXItPnZhbHVlKTsKKworICAgIGNvbXBsZXRpb25IYW5kbGVy
KHN0b3JhZ2VBcmVhSUQpOworCisgICAgc3RvcmFnZUFyZWEtPmFkZExpc3RlbmVyKGNvbm5lY3Rp
b24udW5pcXVlSUQoKSk7Cit9CisKK3ZvaWQgU3RvcmFnZU1hbmFnZXJTZXQ6OmNvbm5lY3RUb1Nl
c3Npb25TdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgdWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBTZWN1cml0eU9yaWdp
bkRhdGEmJiBvcmlnaW5EYXRhLCBDb25uZWN0VG9TdG9yYWdlQXJlYUNhbGxiYWNrJiYgY29tcGxl
dGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBh
dXRvKiBzdG9yYWdlTWFuYWdlciA9IG1fc3RvcmFnZU1hbmFnZXJzLmdldChzZXNzaW9uSUQpOwor
ICAgIGlmICghc3RvcmFnZU1hbmFnZXIpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoaW52
YWxpZFN0b3JhZ2VBcmVhSUQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byog
c3RvcmFnZUFyZWEgPSBzdG9yYWdlTWFuYWdlci0+Y3JlYXRlU2Vzc2lvblN0b3JhZ2VBcmVhKHN0
b3JhZ2VOYW1lc3BhY2VJRCwgV1RGTW92ZShvcmlnaW5EYXRhKSk7CisgICAgaWYgKCFzdG9yYWdl
QXJlYSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihpbnZhbGlkU3RvcmFnZUFyZWFJRCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIHN0b3JhZ2VBcmVhSUQgPSBzdG9y
YWdlQXJlYS0+aWRlbnRpZmllcigpOworICAgIGF1dG9baXRlciwgaXNOZXdFbnRyeV0gPSBtX3N0
b3JhZ2VBcmVhcy5hZGQoc3RvcmFnZUFyZWFJRCwgbnVsbHB0cik7CisgICAgaWYgKGlzTmV3RW50
cnkpCisgICAgICAgIGl0ZXItPnZhbHVlID0gc3RvcmFnZUFyZWE7CisgICAgZWxzZQorICAgICAg
ICBBU1NFUlQoc3RvcmFnZUFyZWEgPT0gaXRlci0+dmFsdWUpOworCisgICAgY29tcGxldGlvbkhh
bmRsZXIoc3RvcmFnZUFyZWFJRCk7CisgICAgCisgICAgc3RvcmFnZUFyZWEtPmFkZExpc3RlbmVy
KGNvbm5lY3Rpb24udW5pcXVlSUQoKSk7Cit9CisKK3ZvaWQgU3RvcmFnZU1hbmFnZXJTZXQ6OmRp
c2Nvbm5lY3RGcm9tU3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCB1aW50
NjRfdCBzdG9yYWdlQXJlYUlEKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwor
CisgICAgYXV0byogc3RvcmFnZUFyZWEgPSBtX3N0b3JhZ2VBcmVhcy5nZXQoc3RvcmFnZUFyZWFJ
RCk7CisgICAgQVNTRVJUKHN0b3JhZ2VBcmVhKTsKKyAgICBBU1NFUlQoc3RvcmFnZUFyZWEtPmhh
c0xpc3RlbmVyKGNvbm5lY3Rpb24udW5pcXVlSUQoKSkpOworCisgICAgc3RvcmFnZUFyZWEtPnJl
bW92ZUxpc3RlbmVyKGNvbm5lY3Rpb24udW5pcXVlSUQoKSk7Cit9CisKK3ZvaWQgU3RvcmFnZU1h
bmFnZXJTZXQ6OmdldFZhbHVlcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVpbnQ2NF90
IHN0b3JhZ2VBcmVhSUQsIEdldFZhbHVlc0NhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCit7
CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBhdXRvKiBzdG9yYWdlQXJl
YSA9IG1fc3RvcmFnZUFyZWFzLmdldChzdG9yYWdlQXJlYUlEKTsKKyAgICBBU1NFUlQoIXN0b3Jh
Z2VBcmVhIHx8IHN0b3JhZ2VBcmVhLT5oYXNMaXN0ZW5lcihjb25uZWN0aW9uLnVuaXF1ZUlEKCkp
KTsKKworICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0b3JhZ2VBcmVhID8gc3RvcmFnZUFyZWEtPml0
ZW1zKCkgOiBIYXNoTWFwPFN0cmluZywgU3RyaW5nPigpKTsKK30KKwordm9pZCBTdG9yYWdlTWFu
YWdlclNldDo6c2V0SXRlbShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVpbnQ2NF90IHN0
b3JhZ2VBcmVhSUQsIHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIHVpbnQ2NF90IHN0b3Jh
Z2VNYXBTZWVkLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgY29uc3Qg
U3RyaW5nJiB1cmxTdHJpbmcpCit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisK
KyAgICBhdXRvKiBzdG9yYWdlQXJlYSA9IG1fc3RvcmFnZUFyZWFzLmdldChzdG9yYWdlQXJlYUlE
KTsKKyAgICBBU1NFUlQoc3RvcmFnZUFyZWEpOworCisgICAgYm9vbCBxdW90YUVycm9yOworICAg
IHN0b3JhZ2VBcmVhLT5zZXRJdGVtKGNvbm5lY3Rpb24udW5pcXVlSUQoKSwgc291cmNlU3RvcmFn
ZUFyZWFJRCwga2V5LCB2YWx1ZSwgdXJsU3RyaW5nLCBxdW90YUVycm9yKTsKKworICAgIGNvbm5l
Y3Rpb24uc2VuZChNZXNzYWdlczo6U3RvcmFnZUFyZWFNYXA6OkRpZFNldEl0ZW0oc3RvcmFnZU1h
cFNlZWQsIGtleSwgcXVvdGFFcnJvciksIHN0b3JhZ2VBcmVhSUQpOworfSAKKwordm9pZCBTdG9y
YWdlTWFuYWdlclNldDo6cmVtb3ZlSXRlbShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVp
bnQ2NF90IHN0b3JhZ2VBcmVhSUQsIHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIHVpbnQ2
NF90IHN0b3JhZ2VNYXBTZWVkLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB1cmxT
dHJpbmcpCit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBhdXRvKiBz
dG9yYWdlQXJlYSA9IG1fc3RvcmFnZUFyZWFzLmdldChzdG9yYWdlQXJlYUlEKTsKKyAgICBBU1NF
UlQoc3RvcmFnZUFyZWEpOworCisgICAgc3RvcmFnZUFyZWEtPnJlbW92ZUl0ZW0oY29ubmVjdGlv
bi51bmlxdWVJRCgpLCBzb3VyY2VTdG9yYWdlQXJlYUlELCBrZXksIHVybFN0cmluZyk7CisKKyAg
ICBjb25uZWN0aW9uLnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VBcmVhTWFwOjpEaWRSZW1vdmVJdGVt
KHN0b3JhZ2VNYXBTZWVkLCBrZXkpLCBzdG9yYWdlQXJlYUlEKTsKK30KKwordm9pZCBTdG9yYWdl
TWFuYWdlclNldDo6Y2xlYXIoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCB1aW50NjRfdCBz
dG9yYWdlQXJlYUlELCB1aW50NjRfdCBzb3VyY2VTdG9yYWdlQXJlYUlELCB1aW50NjRfdCBzdG9y
YWdlTWFwU2VlZCwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCit7CisgICAgQVNTRVJUKCFSdW5M
b29wOjppc01haW4oKSk7CisKKyAgICBhdXRvKiBzdG9yYWdlQXJlYSA9IG1fc3RvcmFnZUFyZWFz
LmdldChzdG9yYWdlQXJlYUlEKTsKKyAgICBBU1NFUlQoc3RvcmFnZUFyZWEpOworCisgICAgc3Rv
cmFnZUFyZWEtPmNsZWFyKGNvbm5lY3Rpb24udW5pcXVlSUQoKSwgc291cmNlU3RvcmFnZUFyZWFJ
RCwgdXJsU3RyaW5nKTsKKworICAgIGNvbm5lY3Rpb24uc2VuZChNZXNzYWdlczo6U3RvcmFnZUFy
ZWFNYXA6OkRpZENsZWFyKHN0b3JhZ2VNYXBTZWVkKSwgc3RvcmFnZUFyZWFJRCk7Cit9CisKK3Zv
aWQgU3RvcmFnZU1hbmFnZXJTZXQ6OmNsb25lU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoSVBDOjpD
b25uZWN0aW9uJiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBmcm9tU3RvcmFn
ZU5hbWVzcGFjZUlELCB1aW50NjRfdCB0b1N0b3JhZ2VOYW1lc3BhY2VJRCkKK3sKKyAgICBBU1NF
UlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIGlmIChhdXRvKiBzdG9yYWdlTWFuYWdlciA9
IG1fc3RvcmFnZU1hbmFnZXJzLmdldChzZXNzaW9uSUQpKQorICAgICAgICBzdG9yYWdlTWFuYWdl
ci0+Y2xvbmVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShmcm9tU3RvcmFnZU5hbWVzcGFjZUlELCB0
b1N0b3JhZ2VOYW1lc3BhY2VJRCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5h
Z2VyU2V0LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFn
ZU1hbmFnZXJTZXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NzAzMmFjM2UyYWM4NmY5OGM5MDkwYzI2ZTk4ZjVj
YTA3ODBlMWIyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0LmgKQEAgLTAsMCArMSwxMDMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKKyNpbmNsdWRlICJTdG9yYWdlTWFuYWdlci5o
IgorI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+CisjaW5jbHVkZSA8cGFs
L1Nlc3Npb25JRC5oPgorCit1c2luZyBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE7CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBTYW5kYm94RXh0ZW5zaW9uOworCit1c2luZyBDb25u
ZWN0VG9TdG9yYWdlQXJlYUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRf
dCk+OwordXNpbmcgR2V0VmFsdWVzQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+Jik+OwordXNpbmcgR2V0T3JpZ2luc0NhbGxiYWNr
ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0PFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YT4mJik+OwordXNpbmcgR2V0T3JpZ2luRGV0YWlsc0NhbGxiYWNrID0gQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChWZWN0b3I8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpPcmlnaW5EZXRh
aWxzPiYmKT47Cit1c2luZyBEZWxldGVDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT47CisKK2NsYXNzIFN0b3JhZ2VNYW5hZ2VyU2V0IDogcHVibGljIElQQzo6Q29ubmVjdGlvbjo6
V29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFN0b3Jh
Z2VNYW5hZ2VyU2V0PiBjcmVhdGUoKTsKKyAgICBTdG9yYWdlTWFuYWdlclNldCgpOworICAgIH5T
dG9yYWdlTWFuYWdlclNldCgpOworCisgICAgdm9pZCBhZGQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFN0cmluZyYgbG9jYWxTdG9yYWdlRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUm
IGxvY2FsU3RvcmFnZURpcmVjdG9yeUhhbmRsZSk7CisgICAgdm9pZCByZW1vdmUoUEFMOjpTZXNz
aW9uSUQpOworICAgIGJvb2wgY29udGFpbnMoUEFMOjpTZXNzaW9uSUQpOworCisgICAgdm9pZCBh
ZGRDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiYpOworICAgIHZvaWQgcmVtb3ZlQ29ubmVjdGlv
bihJUEM6OkNvbm5lY3Rpb24mKTsKKworICAgIHZvaWQgd2FpdFVudGlsVGFza3NGaW5pc2hlZCgp
OworICAgIHZvaWQgd2FpdFVudGlsU3luY2luZ0xvY2FsU3RvcmFnZUZpbmlzaGVkKCk7CisgICAg
dm9pZCBzdXNwZW5kKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCByZXN1
bWUoKTsKKworICAgIHZvaWQgZ2V0U2Vzc2lvblN0b3JhZ2VPcmlnaW5zKFBBTDo6U2Vzc2lvbklE
LCBHZXRPcmlnaW5zQ2FsbGJhY2smJik7CisgICAgdm9pZCBkZWxldGVTZXNzaW9uU3RvcmFnZShQ
QUw6OlNlc3Npb25JRCwgRGVsZXRlQ2FsbGJhY2smJik7CisgICAgdm9pZCBkZWxldGVTZXNzaW9u
U3RvcmFnZUZvck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGE+JiwgRGVsZXRlQ2FsbGJhY2smJik7CisgICAgdm9pZCBnZXRMb2Nh
bFN0b3JhZ2VPcmlnaW5zKFBBTDo6U2Vzc2lvbklELCBHZXRPcmlnaW5zQ2FsbGJhY2smJik7Cisg
ICAgdm9pZCBkZWxldGVMb2NhbFN0b3JhZ2VNb2RpZmllZFNpbmNlKFBBTDo6U2Vzc2lvbklELCBX
YWxsVGltZSwgRGVsZXRlQ2FsbGJhY2smJik7CisgICAgdm9pZCBkZWxldGVMb2NhbFN0b3JhZ2VG
b3JPcmlnaW5zKFBBTDo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhPiYsIERlbGV0ZUNhbGxiYWNrJiYpOworICAgIHZvaWQgZ2V0TG9jYWxTdG9yYWdl
T3JpZ2luRGV0YWlscyhQQUw6OlNlc3Npb25JRCwgR2V0T3JpZ2luRGV0YWlsc0NhbGxiYWNrJiYp
OworCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRl
Y29kZXImKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNv
ZGVyKTsKKworcHJpdmF0ZToKKyAgICAvLyBNZXNzYWdlIEhhbmRsZXJzCisgICAgdm9pZCBjb25u
ZWN0VG9Mb2NhbFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbiYsIFBBTDo6U2Vzc2lvbklEICwg
dWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBTZWN1cml0eU9yaWdpbkRhdGEmJiwgQ29ubmVj
dFRvU3RvcmFnZUFyZWFDYWxsYmFjayYmKTsKKyAgICB2b2lkIGNvbm5lY3RUb1RyYW5zaWVudExv
Y2FsU3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uJiwgUEFMOjpTZXNzaW9uSUQgLCB1aW50NjRf
dCBzdG9yYWdlTmFtZXNwYWNlSUQsIFNlY3VyaXR5T3JpZ2luRGF0YSYmLCBTZWN1cml0eU9yaWdp
bkRhdGEmJiwgQ29ubmVjdFRvU3RvcmFnZUFyZWFDYWxsYmFjayYmKTsKKyAgICB2b2lkIGNvbm5l
Y3RUb1Nlc3Npb25TdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb24mLCBQQUw6OlNlc3Npb25JRCwg
dWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBTZWN1cml0eU9yaWdpbkRhdGEmJiwgQ29ubmVj
dFRvU3RvcmFnZUFyZWFDYWxsYmFjayYmKTsKKyAgICB2b2lkIGRpc2Nvbm5lY3RGcm9tU3RvcmFn
ZUFyZWEoSVBDOjpDb25uZWN0aW9uJiwgdWludDY0X3Qgc3RvcmFnZUFyZWFJRCk7CisgICAgdm9p
ZCBnZXRWYWx1ZXMoSVBDOjpDb25uZWN0aW9uJiwgdWludDY0X3Qgc3RvcmFnZUFyZWFJRCwgR2V0
VmFsdWVzQ2FsbGJhY2smJik7CisgICAgdm9pZCBzZXRJdGVtKElQQzo6Q29ubmVjdGlvbiYsIHVp
bnQ2NF90IHN0b3JhZ2VBcmVhSUQsIHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIHVpbnQ2
NF90IHN0b3JhZ2VNYXBTZWVkLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1
ZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpOworICAgIHZvaWQgcmVtb3ZlSXRlbShJUEM6OkNv
bm5lY3Rpb24mLCB1aW50NjRfdCBzdG9yYWdlQXJlYUlELCB1aW50NjRfdCBzb3VyY2VTdG9yYWdl
QXJlYUlELCB1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0
IFN0cmluZyYgdXJsU3RyaW5nKTsKKyAgICB2b2lkIGNsZWFyKElQQzo6Q29ubmVjdGlvbiYsIHVp
bnQ2NF90IHN0b3JhZ2VBcmVhSUQsIHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIHVpbnQ2
NF90IHN0b3JhZ2VNYXBTZWVkLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZyk7CisgICAgdm9pZCBj
bG9uZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKElQQzo6Q29ubmVjdGlvbiYsIFBBTDo6U2Vzc2lv
bklELCB1aW50NjRfdCBmcm9tU3RvcmFnZU5hbWVzcGFjZUlELCB1aW50NjRfdCB0b1N0b3JhZ2VO
YW1lc3BhY2VJRCk7CisKKyAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBSZWZQdHI8U3RvcmFn
ZU1hbmFnZXI+PiBtX3N0b3JhZ2VNYW5hZ2VyczsKKyAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklE
LCBTdHJpbmc+IG1fc3RvcmFnZU1hbmFnZXJQYXRoczsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBT
dG9yYWdlQXJlYSo+IG1fc3RvcmFnZUFyZWFzOworCisgICAgSGFzaFNldDxJUEM6OkNvbm5lY3Rp
b246OlVuaXF1ZUlEPiBtX2Nvbm5lY3Rpb25zOworICAgIFJlZjxXb3JrUXVldWU+IG1fcXVldWU7
CisKKyAgICBlbnVtIGNsYXNzIFN0YXRlIHsKKyAgICAgICAgUnVubmluZywKKyAgICAgICAgV2ls
bFN1c3BlbmQsCisgICAgICAgIFN1c3BlbmRlZAorICAgIH07CisgICAgU3RhdGUgbV9zdGF0ZSB7
IFN0YXRlOjpSdW5uaW5nIH07CisgICAgTG9jayBtX3N0YXRlTG9jazsKKyAgICBDb25kaXRpb24g
bV9zdGF0ZUNoYW5nZUNvbmRpdGlvbjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VN
YW5hZ2VyU2V0Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJT
dG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0Lm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUwYzEzYTAw
YmMzNWI5MTVmZWFkODQwMDVkYTM0N2QyN2M3ZDE3ZDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQubWVz
c2FnZXMuaW4KQEAgLTAsMCArMSwzNCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFy
ZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IK
KyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCittZXNzYWdlcyAtPiBTdG9yYWdlTWFuYWdlclNldCB7CisgICAgQ29ubmVjdFRv
TG9jYWxTdG9yYWdlQXJlYShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHN0b3Jh
Z2VOYW1lc3BhY2VJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBzZWN1cml0
eU9yaWdpbkRhdGEpIC0+ICh1aW50NjRfdCBzdG9yYWdlQXJlYUlEKSBTeW5jaHJvbm91cyBXYW50
c0Nvbm5lY3Rpb24KKyAgICBDb25uZWN0VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBzdHJ1Y3Qg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHRvcExldmVsU2VjdXJpdHlPcmlnaW5EYXRhLCBz
dHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHNlY3VyaXR5T3JpZ2luRGF0YSkgLT4g
KHVpbnQ2NF90IHN0b3JhZ2VBcmVhSUQpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgorICAg
IENvbm5lY3RUb1Nlc3Npb25TdG9yYWdlQXJlYShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVp
bnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSBzZWN1cml0eU9yaWdpbkRhdGEpIC0+ICh1aW50NjRfdCBzdG9yYWdlQXJlYUlEKSBTeW5j
aHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KKyAgICBEaXNjb25uZWN0RnJvbVN0b3JhZ2VBcmVhKHVp
bnQ2NF90IHN0b3JhZ2VBcmVhSUQpIFdhbnRzQ29ubmVjdGlvbgorICAgIEdldFZhbHVlcyh1aW50
NjRfdCBzdG9yYWdlQXJlYUlEKSAtPiAoSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gdmFsdWVzKSBT
eW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KKyAgICBDbG9uZVNlc3Npb25TdG9yYWdlTmFtZXNw
YWNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgZnJvbVN0b3JhZ2VOYW1lc3Bh
Y2VJRCwgdWludDY0X3QgdG9TdG9yYWdlTmFtZXNwYWNlSUQpIFdhbnRzQ29ubmVjdGlvbgorCisg
ICAgU2V0SXRlbSh1aW50NjRfdCBzdG9yYWdlQXJlYUlELCB1aW50NjRfdCBzb3VyY2VTdG9yYWdl
QXJlYUlELCB1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCwgU3RyaW5nIGtleSwgU3RyaW5nIHZhbHVl
LCBTdHJpbmcgdXJsU3RyaW5nKSBXYW50c0Nvbm5lY3Rpb24KKyAgICBSZW1vdmVJdGVtKHVpbnQ2
NF90IHN0b3JhZ2VBcmVhSUQsIHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIHVpbnQ2NF90
IHN0b3JhZ2VNYXBTZWVkLCBTdHJpbmcga2V5LCBTdHJpbmcgdXJsU3RyaW5nKSBXYW50c0Nvbm5l
Y3Rpb24KKyAgICBDbGVhcih1aW50NjRfdCBzdG9yYWdlQXJlYUlELCB1aW50NjRfdCBzb3VyY2VT
dG9yYWdlQXJlYUlELCB1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCwgU3RyaW5nIHVybFN0cmluZykg
V2FudHNDb25uZWN0aW9uCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJz
aXRlRGF0YVN0b3JlUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRl
RGF0YVN0b3JlUGFyYW1ldGVycy5jcHAKaW5kZXggZDkxYTM0ZjZhOTI3MjVjMTQxNzczZjA4YWI0
MjllN2U4ZTU4NjNjMy4uZjE4ZGQxNmJlMjZhNzhmZjBlODYyMzk2OTk0MzY2MjY1YjFhODJkNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRl
cnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0
ZXJzLmNwcApAQCAtNTMsNiArNTMsOCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJz
OjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgc2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSA8PCBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogI2VuZGlmCiAKKyAgICBlbmNvZGVyIDw8IGxv
Y2FsU3RvcmFnZURpcmVjdG9yeSA8PCBsb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5k
bGU7CisKICAgICBlbmNvZGVyIDw8IHBlck9yaWdpblN0b3JhZ2VRdW90YTsKICAgICBlbmNvZGVy
IDw8IHBlclRoaXJkUGFydHlPcmlnaW5TdG9yYWdlUXVvdGE7CiB9CkBAIC0xMjEsNiArMTIzLDE4
IEBAIE9wdGlvbmFsPFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzPiBXZWJzaXRlRGF0YVN0b3Jl
UGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjCiAgICAgcGFyYW1ldGVycy5zZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgqc2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAjZW5kaWYKIAorICAg
IE9wdGlvbmFsPFN0cmluZz4gbG9jYWxTdG9yYWdlRGlyZWN0b3J5OworICAgIGRlY29kZXIgPj4g
bG9jYWxTdG9yYWdlRGlyZWN0b3J5OworICAgIGlmICghbG9jYWxTdG9yYWdlRGlyZWN0b3J5KQor
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHBhcmFtZXRlcnMubG9jYWxTdG9yYWdl
RGlyZWN0b3J5ID0gV1RGTW92ZSgqbG9jYWxTdG9yYWdlRGlyZWN0b3J5KTsKKworICAgIE9wdGlv
bmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gbG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5z
aW9uSGFuZGxlOworICAgIGRlY29kZXIgPj4gbG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9u
SGFuZGxlOworICAgIGlmICghbG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKQor
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHBhcmFtZXRlcnMubG9jYWxTdG9yYWdl
RGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgqbG9jYWxTdG9yYWdlRGlyZWN0b3J5
RXh0ZW5zaW9uSGFuZGxlKTsKKwogICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwZXJPcmlnaW5TdG9y
YWdlUXVvdGE7CiAgICAgZGVjb2RlciA+PiBwZXJPcmlnaW5TdG9yYWdlUXVvdGE7CiAgICAgaWYg
KCFwZXJPcmlnaW5TdG9yYWdlUXVvdGEpCkBAIC0xNDksNiArMTYzLDcgQEAgV2Vic2l0ZURhdGFT
dG9yZVBhcmFtZXRlcnMgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM6OnByaXZhdGVTZXNzaW9u
UGFyYW1ldGVycygKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgICAgICwgeyB9LCB7
IH0KICNlbmRpZgorICAgICAgICAsIHsgfSwgeyB9CiAgICAgfTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmgKaW5kZXggOTkyZmVl
OTdkMDk5NzRjOWYzNDdmNmM3MGRhYTFjZWJmM2UyZjI0Zi4uNmZlY2UzZjE1NGZlOWQ3ZmI5OGJm
Yzk3ZDliMWI3YmZmNDI0ZjM5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
c2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJz
aXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oCkBAIC03MCw2ICs3MCw5IEBAIHN0cnVjdCBXZWJzaXRl
RGF0YVN0b3JlUGFyYW1ldGVycyB7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAjZW5kaWYKIAor
ICAgIFN0cmluZyBsb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7CisgICAgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlIGxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKKwogICAgIHVpbnQ2
NF90IHBlck9yaWdpblN0b3JhZ2VRdW90YSB7IFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6
OmRlZmF1bHRRdW90YSgpIH07CiAgICAgdWludDY0X3QgcGVyVGhpcmRQYXJ0eU9yaWdpblN0b3Jh
Z2VRdW90YSB7IFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6OmRlZmF1bHRUaGlyZFBhcnR5
UXVvdGEoKSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9T
b3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDRiYzIwZmQ1MzE2Y2MwM2YyOTdkOTRlYjIx
YTRlNjJjNWFjYzI0MmQuLmI0NjZkMmM3NDg5ZTYyZDU3ZjA3ODRjZDk3NmUyMTg1NjQ1MTY0NDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktp
dC9Tb3VyY2VzLnR4dApAQCAtNzAsNiArNzAsNyBAQCBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdl
L0xvY2FsU3RvcmFnZU5hbWVzcGFjZS5jcHAKIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU2Vz
c2lvblN0b3JhZ2VOYW1lc3BhY2UuY3BwCiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3Jh
Z2VBcmVhLmNwcAogTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAK
K05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQuY3BwCiBOZXR3b3Jr
UHJvY2Vzcy9XZWJTdG9yYWdlL1RyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZS5jcHAKIAog
TmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKaW5kZXggZDBlYjMxYWUxNjkwMDU3NzJh
NmJlYzE0MzdjMmI0MzBkMGNiNGU2ZC4uZDgzYzZiOGY5ODA2OTYwMzYyNzZjYmFlZmQ1NDJkOGE2
ZmQwY2QwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3Bw
CkBAIC02NjksMyArNjY5LDE5IEBAIHZvaWQgV0tDb250ZXh0Q2xlYXJDdXJyZW50TW9kaWZpZXJT
dGF0ZUZvclRlc3RpbmcoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYpCiB7CiAgICAgV2ViS2l0Ojp0
b0ltcGwoY29udGV4dFJlZiktPmNsZWFyQ3VycmVudE1vZGlmaWVyU3RhdGVGb3JUZXN0aW5nKCk7
CiB9CisKK3ZvaWQgV0tDb250ZXh0U3luY0xvY2FsU3RvcmFnZShXS0NvbnRleHRSZWYgY29udGV4
dFJlZiwgdm9pZCogY29udGV4dCwgV0tDb250ZXh0U3luY0xvY2FsU3RvcmFnZUNhbGxiYWNrIGNh
bGxiYWNrKQoreworICAgIFdlYktpdDo6dG9JbXBsKGNvbnRleHRSZWYpLT5zeW5jTG9jYWxTdG9y
YWdlKFtjb250ZXh0LCBjYWxsYmFja10geworICAgICAgICBpZiAoY2FsbGJhY2spCisgICAgICAg
ICAgICBjYWxsYmFjayhjb250ZXh0KTsKKyAgICB9KTsKK30KKwordm9pZCBXS0NvbnRleHRDbGVh
ckxlZ2FjeVByaXZhdGVCcm93c2luZ0xvY2FsU3RvcmFnZShXS0NvbnRleHRSZWYgY29udGV4dFJl
Ziwgdm9pZCogY29udGV4dCwgV0tDb250ZXh0Q2xlYXJMZWdhY3lQcml2YXRlQnJvd3NpbmdMb2Nh
bFN0b3JhZ2VDYWxsYmFjayBjYWxsYmFjaykKK3sKKyAgICBXZWJLaXQ6OnRvSW1wbChjb250ZXh0
UmVmKS0+Y2xlYXJMZWdhY3lQcml2YXRlQnJvd3NpbmdMb2NhbFN0b3JhZ2UoW2NvbnRleHQsIGNh
bGxiYWNrXSB7CisgICAgICAgIGlmIChjYWxsYmFjaykKKyAgICAgICAgICAgIGNhbGxiYWNrKGNv
bnRleHQpOworICAgIH0pOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tDb250ZXh0UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tDb250ZXh0UHJpdmF0ZS5oCmluZGV4IGY5YzdkMzI5NmU1YzBjZDdmMzM2N2RlMzlhMDMxZDI4
M2ZiZTY2NjYuLjU4ZjFhOTIwOTkxMzU0ZjA3MGY2NWI5ZDNkYTFiYTA3YmY4MzVjMjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dFByaXZhdGUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRQcml2YXRlLmgKQEAg
LTEyMCw2ICsxMjAsMTIgQEAgV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0SURCUGVyT3JpZ2lu
UXVvdGEoV0tDb250ZXh0UmVmIGNvbnRleHQsIHVpbnQ2NF90IHF1b3QKIAogV0tfRVhQT1JUIHZv
aWQgV0tDb250ZXh0Q2xlYXJDdXJyZW50TW9kaWZpZXJTdGF0ZUZvclRlc3RpbmcoV0tDb250ZXh0
UmVmIGNvbnRleHQpOwogCit0eXBlZGVmIHZvaWQgKCpXS0NvbnRleHRTeW5jTG9jYWxTdG9yYWdl
Q2FsbGJhY2spKHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7CitXS19FWFBPUlQgdm9pZCBXS0NvbnRl
eHRTeW5jTG9jYWxTdG9yYWdlKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCB2b2lkKiBjb250ZXh0
LCBXS0NvbnRleHRTeW5jTG9jYWxTdG9yYWdlQ2FsbGJhY2sgY2FsbGJhY2spOworCit0eXBlZGVm
IHZvaWQgKCpXS0NvbnRleHRDbGVhckxlZ2FjeVByaXZhdGVCcm93c2luZ0xvY2FsU3RvcmFnZUNh
bGxiYWNrKSh2b2lkKiBmdW5jdGlvbkNvbnRleHQpOworV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0
Q2xlYXJMZWdhY3lQcml2YXRlQnJvd3NpbmdMb2NhbFN0b3JhZ2UoV0tDb250ZXh0UmVmIGNvbnRl
eHRSZWYsIHZvaWQqIGNvbnRleHQsIFdLQ29udGV4dENsZWFyTGVnYWN5UHJpdmF0ZUJyb3dzaW5n
TG9jYWxTdG9yYWdlQ2FsbGJhY2sgY2FsbGJhY2spOworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0K
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJz
aXRlRGF0YVN0b3JlUmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vi
c2l0ZURhdGFTdG9yZVJlZi5jcHAKaW5kZXggOTZiMjMzNzQyYzA5YWI2MzNkZWVkNDM5NDc5MGZl
MWE0MzZiMmRjYy4uOGZhYTc2ZjNhNDhhYzhiZTkzZjdiZjM3ODBjYzQ0MzRjNjA2OTU2ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRh
U3RvcmVSZWYuY3BwCkBAIC01MzEsNiArNTMxLDE1IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3Jl
UmVtb3ZlQWxsSW5kZXhlZERhdGFiYXNlcyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3Jl
CiAgICAgfSk7CiB9CiAKK3ZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlTG9jYWxTdG9yYWdl
KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vi
c2l0ZURhdGFTdG9yZVJlbW92ZUxvY2FsU3RvcmFnZUNhbGxiYWNrIGNhbGxiYWNrKQoreworICAg
IE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzID0gV2ViS2l0OjpX
ZWJzaXRlRGF0YVR5cGU6OkxvY2FsU3RvcmFnZTsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3Rv
cmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVtb3ZlRGF0YShkYXRhVHlwZXMsIC1XYWxsVGlt
ZTo6aW5maW5pdHkoKSwgW2NvbnRleHQsIGNhbGxiYWNrXSB7CisgICAgICAgIGlmIChjYWxsYmFj
aykKKyAgICAgICAgICAgIGNhbGxiYWNrKGNvbnRleHQpOworICAgIH0pOworfQorCiB2b2lkIFdL
V2Vic2l0ZURhdGFTdG9yZVJlbW92ZUFsbFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zKFdLV2Vi
c2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURh
dGFTdG9yZVJlbW92ZUFsbFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zQ2FsbGJhY2sgY2FsbGJh
Y2spCiB7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAppbmRleCBjZGUxNGNh
ODY3ZTA3YzI3NDU4YWEyNjUwMTdmNzFhYWM5ZDBmYzViLi43ZGVjOTJhMmIxN2M2ZWRjNzkzOTAz
Y2Q4M2E4OGNmMTc1ZGMzYmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaApAQCAtMTIxLDYgKzEyMSw5IEBAIFdLX0VY
UE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUFsbEluZGV4ZWREYXRhYmFzZXMoV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmCiB0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVHZXRG
ZXRjaENhY2hlT3JpZ2luc0Z1bmN0aW9uKShXS0FycmF5UmVmLCB2b2lkKik7CiBXS19FWFBPUlQg
dm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVHZXRGZXRjaENhY2hlT3JpZ2lucyhXS1dlYnNpdGVEYXRh
U3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVH
ZXRGZXRjaENhY2hlT3JpZ2luc0Z1bmN0aW9uIGZ1bmN0aW9uKTsKIAordHlwZWRlZiB2b2lkICgq
V0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlTG9jYWxTdG9yYWdlQ2FsbGJhY2spKHZvaWQqIGZ1bmN0
aW9uQ29udGV4dCk7CitXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVMb2Nh
bFN0b3JhZ2UoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCogY29udGV4
dCwgV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlTG9jYWxTdG9yYWdlQ2FsbGJhY2sgY2FsbGJhY2sp
OworCiB0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVHZXRGZXRjaENhY2hlU2l6ZUZv
ck9yaWdpbkZ1bmN0aW9uKSh1aW50NjRfdCwgdm9pZCopOwogV0tfRVhQT1JUIHZvaWQgV0tXZWJz
aXRlRGF0YVN0b3JlR2V0RmV0Y2hDYWNoZVNpemVGb3JPcmlnaW4oV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgb3JpZ2luLCB2b2lkKiBjb250ZXh0LCBXS1dl
YnNpdGVEYXRhU3RvcmVHZXRGZXRjaENhY2hlU2l6ZUZvck9yaWdpbkZ1bmN0aW9uIGZ1bmN0aW9u
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDM2
MzY3ZjAwNGNmMWUyMTY1ZDI3YjZhZThlNmZjYjVkYzZmOTEzOGMuLmI5NzY3OTEwNTRiODI5NGQ5
Zjc5ZTlmMGFhNGI5NmFiYTExNDM3YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5jcHAKQEAgLTU4Myw4ICs1ODMsOCBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBX
ZWJQcm9jZXNzUG9vbDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSogd2l0
aAogICAgIGF1dG8gbG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gbV93ZWJzaXRlRGF0YVN0b3JlID8g
bV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVzb2x2ZWRMb2NhbFN0b3Jh
Z2VEaXJlY3RvcnkoKSA6IG51bGxTdHJpbmcoKTsKICAgICBpZiAoIWxvY2FsU3RvcmFnZURpcmVj
dG9yeSkKICAgICAgICAgbG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gQVBJOjpXZWJzaXRlRGF0YVN0
b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAgcGFyYW1ldGVycy5kZWZh
dWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMubG9jYWxTdG9y
YWdlRGlyZWN0b3J5ID0gbG9jYWxTdG9yYWdlRGlyZWN0b3J5OwotICAgIFNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShsb2NhbFN0b3JhZ2VEaXJlY3Rv
cnksIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25Q
YXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CisgICAgcGFy
YW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3Rvcnkg
PSBsb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7CisgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFu
ZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KGxvY2FsU3RvcmFnZURpcmVjdG9yeSwgcGFyYW1ldGVy
cy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNp
b25IYW5kbGUpOwogCiAgICAgaWYgKG1fd2Vic2l0ZURhdGFTdG9yZSkKICAgICAgICAgcGFyYW1l
dGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMu
cmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+d2Vi
c2l0ZURhdGFTdG9yZSgpLnJlc29sdmVkUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgp
OwpAQCAtMTgwOSw2ICsxODA5LDE5IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldElEQlBlck9y
aWdpblF1b3RhKHVpbnQ2NF90IHF1b3RhKQogI2VuZGlmCiB9CiAKK3ZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OnN5bmNMb2NhbFN0b3JhZ2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQoreworICAgIHNlbmRTeW5jVG9OZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6
TmV0d29ya1Byb2Nlc3M6OlN5bmNMb2NhbFN0b3JhZ2UoKSwgTWVzc2FnZXM6Ok5ldHdvcmtQcm9j
ZXNzOjpTeW5jTG9jYWxTdG9yYWdlOjpSZXBseSgpKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcigp
OworfQorCit2b2lkIFdlYlByb2Nlc3NQb29sOjpjbGVhckxlZ2FjeVByaXZhdGVCcm93c2luZ0xv
Y2FsU3RvcmFnZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit7CisgICAgaWYgKG1fbmV0d29ya1Byb2Nlc3MpCisgICAgICAgIG1fbmV0d29ya1Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpDbGVhckxlZ2FjeVByaXZhdGVCcm93c2lu
Z0xvY2FsU3RvcmFnZSgpLCAwKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOworfQorCiB2b2lk
IFdlYlByb2Nlc3NQb29sOjphbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QoY29u
c3QgV2ViQ2VydGlmaWNhdGVJbmZvKiBjZXJ0aWZpY2F0ZSwgY29uc3QgU3RyaW5nJiBob3N0KQog
ewogICAgIGVuc3VyZU5ldHdvcmtQcm9jZXNzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuaAppbmRleCAyY2NiNDdmMWFlNjRmYWUzNmFmYzExYTNjMTU1OTBiNzcwNTM2
MzUxLi5lZDZjMjlmZjMyODM4OTY3NjkxMGE4ZmZmZmZhNDJkYWNmNDQxMjhmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTMxNyw2ICszMTcsOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBkaXNhYmxlU2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5
KCk7CiAKICAgICB2b2lkIHN5bmNOZXR3b3JrUHJvY2Vzc0Nvb2tpZXMoKTsKKyAgICB2b2lkIHN5
bmNMb2NhbFN0b3JhZ2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrKTsKKyAg
ICB2b2lkIGNsZWFyTGVnYWN5UHJpdmF0ZUJyb3dzaW5nTG9jYWxTdG9yYWdlKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFjayk7CiAKICAgICB2b2lkIHNldElEQlBlck9yaWdpblF1
b3RhKHVpbnQ2NF90KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCmluZGV4
IGJhOWZjY2ViOTgzZDVhYzJiY2RkMWMyYWQ4MzQ2YmNkMTQ1ZDg1YTEuLmEwNTQ0ZDA1YTc3NDYw
MmEwMGNkOTJkMjQ0ZmQzNWY3ZjY0Y2JmMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3Jl
Q29jb2EubW0KQEAgLTEwOSwxMSArMTA5LDYgQEAgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMg
V2Vic2l0ZURhdGFTdG9yZTo6cGFyYW1ldGVycygpCiAgICAgaWYgKCFyZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJl
Y3RvcnksIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnlIYW5kbGUpOwogCi0gICAgYXV0
byBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSByZXNvbHZlZExvY2FsU3RvcmFnZURpcmVjdG9yeSgp
OwotICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBsb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRl
bnNpb25IYW5kbGU7Ci0gICAgaWYgKCFsb2NhbFN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKQot
ICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3Rv
cnkobG9jYWxTdG9yYWdlRGlyZWN0b3J5LCBsb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25I
YW5kbGUpOwotCiAgICAgYXV0byBuZXR3b3JrQ2FjaGVEaXJlY3RvcnkgPSByZXNvbHZlZE5ldHdv
cmtDYWNoZURpcmVjdG9yeSgpOwogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBuZXR3b3Jr
Q2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgaWYgKCFuZXR3b3JrQ2FjaGVEaXJl
Y3RvcnkuaXNFbXB0eSgpKQpAQCAtMTQzLDggKzEzOCw2IEBAIFdlYnNpdGVEYXRhU3RvcmVQYXJh
bWV0ZXJzIFdlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMoKQogICAgICAgICBtX2NvbmZpZ3Vy
YXRpb24tPmRldmljZU1hbmFnZW1lbnRSZXN0cmljdGlvbnNFbmFibGVkKCksCiAgICAgICAgIG1f
Y29uZmlndXJhdGlvbi0+YWxsTG9hZHNCbG9ja2VkQnlEZXZpY2VNYW5hZ2VtZW50UmVzdHJpY3Rp
b25zRm9yVGVzdGluZygpLAogICAgICAgICBXVEZNb3ZlKHJlc291cmNlTG9hZFN0YXRpc3RpY3NN
YW51YWxQcmV2YWxlbnRSZXNvdXJjZSksCi0gICAgICAgIFdURk1vdmUobG9jYWxTdG9yYWdlRGly
ZWN0b3J5KSwKLSAgICAgICAgV1RGTW92ZShsb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25I
YW5kbGUpLAogICAgICAgICBXVEZNb3ZlKG5ldHdvcmtDYWNoZURpcmVjdG9yeSksCiAgICAgICAg
IFdURk1vdmUobmV0d29ya0NhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKSwKICAgICB9OwpA
QCAtMTgwLDYgKzE3MywxMCBAQCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0
YVN0b3JlOjpwYXJhbWV0ZXJzKCkKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFu
ZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbkRpcmVjdG9yeSwgcGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5RXh0ZW5zaW9uSGFuZGxlKTsKICNlbmRpZgogCisgICAgcGFyYW1ldGVycy5sb2NhbFN0b3Jh
Z2VEaXJlY3RvcnkgPSByZXNvbHZlZExvY2FsU3RvcmFnZURpcmVjdG9yeSgpOworICAgIGlmICgh
cGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKQorICAgICAgICBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkocGFyYW1ldGVy
cy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnksIHBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5
RXh0ZW5zaW9uSGFuZGxlKTsKKwogICAgIHBhcmFtZXRlcnMucGVyT3JpZ2luU3RvcmFnZVF1b3Rh
ID0gcGVyT3JpZ2luU3RvcmFnZVF1b3RhKCk7CiAgICAgcGFyYW1ldGVycy5wZXJUaGlyZFBhcnR5
T3JpZ2luU3RvcmFnZVF1b3RhID0gcGVyVGhpcmRQYXJ0eU9yaWdpblN0b3JhZ2VRdW90YSgpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuY3BwCmluZGV4IDAyNTg3YjE5ZTE5NGU2MWRmMzFlMzExYzg2MmFkYjFjZmJj
MWNiZDUuLjZmZjFiY2QxYTZjZWZkYjA4MzNkYzJjNjRhNTkzNGI1M2E1ZDlhODEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmUuY3BwCkBAIC0xOTY5LDggKzE5NjksOCBAQCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVy
cyBXZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0ZXJzKCkKIAogICAgIGF1dG8gbG9jYWxTdG9yYWdl
RGlyZWN0b3J5ID0gcmVzb2x2ZWRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKTsKICAgICBpZiAoIWxv
Y2FsU3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpIHsKLSAgICAgICAgcGFyYW1ldGVycy5uZXR3
b3JrU2Vzc2lvblBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gbG9jYWxTdG9yYWdl
RGlyZWN0b3J5OwotICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFk
V3JpdGVEaXJlY3RvcnkobG9jYWxTdG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLm5ldHdvcmtT
ZXNzaW9uUGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwor
ICAgICAgICBwYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeSA9IGxvY2FsU3RvcmFnZURp
cmVjdG9yeTsKKyAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdy
aXRlRGlyZWN0b3J5KGxvY2FsU3RvcmFnZURpcmVjdG9yeSwgcGFyYW1ldGVycy5sb2NhbFN0b3Jh
Z2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogICAgIH0KIAogI2lmIEVOQUJMRShJTkRFWEVE
X0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggYjEzZTMzZGFjMTllYzNjZDRhM2QyNDkyYWU4ZThlZTRjZWEzYWVkZi4uOTY5
NDQ4MmY1NjYyYTNjZmYwNGFjNWY4YzMzNGYwOWVkNWI3NjJmMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yOTMsOCArMjkzLDYgQEAK
IAkJMUFCMUY3OTcxRDFCMzYxMzAwN0M5QkQxIC8qIFdlYlBheW1lbnRDb29yZGluYXRvck1lc3Nh
Z2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUIx
Rjc5MzFEMUIzNjEzMDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yTWVzc2FnZXMuaCAq
LzsgfTsKIAkJMUFCMUY3OTgxRDFCMzYxMzAwN0M5QkQxIC8qIFdlYlBheW1lbnRDb29yZGluYXRv
clByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFBQjFGNzk0MUQxQjM2MTMwMDdDOUJEMSAvKiBXZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTFBQjFGNzk5MUQxQjM2
MTMwMDdDOUJEMSAvKiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1lc3NhZ2VzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUIxRjc5NTFEMUIzNjEz
MDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNZXNzYWdlcy5oICovOyB9Owot
CQkxQUIzMUE5NjE2QkM2ODgxMDBGNkRCQzkgLyogU3RvcmFnZU1hbmFnZXJNZXNzYWdlUmVjZWl2
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFC
MzFBOTQxNkJDNjg4MTAwRjZEQkM5IC8qIFN0b3JhZ2VNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNw
cCAqLzsgfTsKLQkJMUFCMzFBOTcxNkJDNjg4MTAwRjZEQkM5IC8qIFN0b3JhZ2VNYW5hZ2VyTWVz
c2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFB
QjMxQTk1MTZCQzY4ODEwMEY2REJDOSAvKiBTdG9yYWdlTWFuYWdlck1lc3NhZ2VzLmggKi87IH07
CiAJCTFBQjQwRUU2MUJGNjc3RTMwMEJBODFCRSAvKiBXS01lbnVJdGVtSWRlbnRpZmllcnNQcml2
YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUI0
MEVFNDFCRjY3N0UzMDBCQTgxQkUgLyogV0tNZW51SXRlbUlkZW50aWZpZXJzUHJpdmF0ZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFBQjQ3NEQ4
MTg0RDQzRkQwMDUxQjYyMiAvKiBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjQ3NEQ3MTg0RDQzRkQwMDUx
QjYyMiAvKiBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxQUI0NzREQTE4NEQ0NDI1MDA1MUI2MjIgLyog
V0tCdW5kbGVQYWdlUmVzb3VyY2VMb2FkQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUI0NzREOTE4NEQ0NDI1MDA1MUI2MjIgLyogV0tCdW5k
bGVQYWdlUmVzb3VyY2VMb2FkQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEyNzUsNiArMTI3Myw5IEBACiAJCTkzNTZGMkUxMjE1MkI3
NjYwMEU2RDVERiAvKiBXZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCQTA0RTEyMTUxQURGNDAwN0Y0NTVGIC8q
IFdlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAgKi87IH07CiAJCTkzNUVFQjlCMTI3NzYxN0MwMDMz
MjJCOCAvKiBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNUVFQjk4MTI3NzYxNkQwMDMzMjJCOCAvKiBX
S0J1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk5MzVFRUI5RjEyNzc2MUFDMDAzMzIyQjggLyogV0tCdW5k
bGVCYWNrRm9yd2FyZExpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDkzNUVFQjk2MTI3NzYxNkQwMDMzMjJCOCAvKiBXS0J1bmRsZUJhY2tGb3J3YXJk
TGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTkzNjhFRURFMjMwM0E5MDIwMEJEQjExQSAvKiBTdG9yYWdlTWFuYWdlclNldE1lc3NhZ2VSZWNl
aXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
MzY4RUVEQzIzMDNBOEQ4MDBCREIxMUEgLyogU3RvcmFnZU1hbmFnZXJTZXRNZXNzYWdlUmVjZWl2
ZXIuY3BwICovOyB9OworCQk5MzY4RUVERjIzMDNBOUVEMDBCREIxMUEgLyogU3RvcmFnZU1hbmFn
ZXJTZXRNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTM2OEVFREQyMzAzQThEODAwQkRCMTFBIC8qIFN0b3JhZ2VNYW5hZ2VyU2V0TWVzc2Fn
ZXMuaCAqLzsgfTsKKwkJOTM2QjA1OTgyMzAzOTA5NzAwMkZDMDZCIC8qIFN0b3JhZ2VNYW5hZ2Vy
U2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzZC
MDU5NTIzMDM5MDBCMDAyRkMwNkIgLyogU3RvcmFnZU1hbmFnZXJTZXQuaCAqLzsgfTsKIAkJOTM3
MzVFQkIxQzkyOTg2MzAwMzM2RkE3IC8qIFdLUHJldmlld0FjdGlvbkl0ZW1JbnRlcm5hbC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM3MzVFQkExQzky
OTg2MzAwMzM2RkE3IC8qIFdLUHJldmlld0FjdGlvbkl0ZW1JbnRlcm5hbC5oICovOyB9OwogCQk5
MzkxMDc0RjFCRjZCQzY1MDA4QzE3QUQgLyogV0tQcmV2aWV3RWxlbWVudEluZm9JbnRlcm5hbC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM5MTA3NEUx
QkY2QkM2NTAwOEMxN0FEIC8qIFdLUHJldmlld0VsZW1lbnRJbmZvSW50ZXJuYWwuaCAqLzsgfTsK
IAkJOTM5MUYyQ0IxMjFCNjdBRDAwRUJGN0U4IC8qIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzOTFGMjgz
MTIxQjM4RjUwMEVCRjdFOCAvKiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmggKi87IH07CkBA
IC0xNzA3LDYgKzE3MDgsOCBAQAogCQkJY29tcGlsZXJTcGVjID0gY29tLmFwcGxlLmNvbXBpbGVy
cy5wcm94eS5zY3JpcHQ7CiAJCQlmaWxlUGF0dGVybnMgPSAiKi5oIjsKIAkJCWZpbGVUeXBlID0g
cGF0dGVybi5wcm94eTsKKwkJCWlucHV0RmlsZXMgPSAoCisJCQkpOwogCQkJaXNFZGl0YWJsZSA9
IDE7CiAJCQlvdXRwdXRGaWxlcyA9ICgKIAkJCQkiJChIRUFERVJfT1VUUFVUX0RJUikvJChJTlBV
VF9GSUxFX05BTUUpIiwKQEAgLTIzMDcsOCArMjMxMCw2IEBACiAJCTFBQjFGNzkzMUQxQjM2MTMw
MDdDOUJEMSAvKiBXZWJQYXltZW50Q29vcmRpbmF0b3JNZXNzYWdlcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJQYXltZW50Q29vcmRpbmF0b3JNZXNzYWdlcy5oOyBwYXRo
ID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJQYXltZW50Q29vcmRpbmF0b3JNZXNzYWdlcy5o
OyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQkxQUIxRjc5NDFEMUIzNjEz
MDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRy
ZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTFBQjFGNzk1MUQxQjM2MTMwMDdDOUJEMSAv
KiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWVzc2FnZXMuaDsgcGF0
aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNZXNz
YWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwotCQkxQUIzMUE5NDE2
QkM2ODgxMDBGNkRCQzkgLyogU3RvcmFnZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU3RvcmFnZU1hbmFnZXJNZXNzYWdlUmVj
ZWl2ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9TdG9yYWdlTWFuYWdlck1l
c3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07Ci0J
CTFBQjMxQTk1MTZCQzY4ODEwMEY2REJDOSAvKiBTdG9yYWdlTWFuYWdlck1lc3NhZ2VzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFN0b3JhZ2VNYW5hZ2VyTWVzc2FnZXMuaDsg
cGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvU3RvcmFnZU1hbmFnZXJNZXNzYWdlcy5oOyBz
b3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQkxQUI0MEVFMzFCRjY3N0UzMDBC
QTgxQkUgLyogV0tNZW51SXRlbUlkZW50aWZpZXJzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gV0tNZW51SXRlbUlkZW50aWZpZXJzLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxQUI0MEVFNDFCRjY3N0UzMDBCQTgxQkUgLyogV0tNZW51SXRlbUlk
ZW50aWZpZXJzUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS01l
bnVJdGVtSWRlbnRpZmllcnNQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTFBQjQ3NEQ3MTg0RDQzRkQwMDUxQjYyMiAvKiBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zODk3LDYgKzM4OTgsMTEgQEAKIAkJ
OTM1RUVCOTYxMjc3NjE2RDAwMzMyMkI4IC8qIFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNUVFQjk3MTI3NzYxNkQwMDMzMjJCOCAv
KiBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV0tCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM1RUVCOTgxMjc3NjE2RDAwMzMyMkI4IC8qIFdLQnVuZGxl
QmFja0ZvcndhcmRMaXN0SXRlbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
S0J1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJOTM2OEVFREMyMzAzQThEODAwQkRCMTFBIC8qIFN0b3JhZ2VNYW5hZ2VyU2V0TWVzc2FnZVJl
Y2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBmaWxlRW5jb2RpbmcgPSA0OyBuYW1lID0gU3RvcmFnZU1h
bmFnZXJTZXRNZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi9TdG9yYWdlTWFuYWdlclNldE1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlM
VF9QUk9EVUNUU19ESVI7IH07CisJCTkzNjhFRUREMjMwM0E4RDgwMEJEQjExQSAvKiBTdG9yYWdl
TWFuYWdlclNldE1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFN0
b3JhZ2VNYW5hZ2VyU2V0TWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIv
U3RvcmFnZU1hbmFnZXJTZXRNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNf
RElSOyB9OworCQk5MzZCMDU5NTIzMDM5MDBCMDAyRkMwNkIgLyogU3RvcmFnZU1hbmFnZXJTZXQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RvcmFnZU1hbmFnZXJTZXQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTM2QjA1OTYyMzAzOTAwQjAwMkZDMDZCIC8q
IFN0b3JhZ2VNYW5hZ2VyU2V0Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFN0
b3JhZ2VNYW5hZ2VyU2V0Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk5MzZCMDU5NzIzMDM5MDBCMDAyRkMwNkIgLyogU3RvcmFnZU1hbmFnZXJTZXQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RvcmFnZU1hbmFnZXJTZXQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzczNUVCQTFDOTI5ODYzMDAzMzZGQTcgLyog
V0tQcmV2aWV3QWN0aW9uSXRlbUludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdLUHJldmlld0FjdGlvbkl0ZW1JbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5MzkxMDc0RTFCRjZCQzY1MDA4QzE3QUQgLyogV0tQcmV2aWV3RWxlbWVudElu
Zm9JbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1ByZXZpZXdF
bGVtZW50SW5mb0ludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzOTFG
MjgzMTIxQjM4RjUwMEVCRjdFOCAvKiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM5MjYsNyArMzkzMiw2IEBACiAJCTkzQjI2
MTQ4MjI3RDE0NzEwMEI5N0E3NiAvKiBpb3MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBmb2xkZXI7IHBhdGggPSBpb3M7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkzQjI2MTQ5MjI3RDE0NzIwMEI5N0E3NiAvKiBTdG9yYWdlTWFuYWdlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdG9yYWdlTWFuYWdlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0IyNjE0QTIyN0QxNDcyMDBCOTdBNzYgLyogU3Rv
cmFnZU1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3Rv
cmFnZU1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5M0IyNjE0QjIy
N0QxNDcyMDBCOTdBNzYgLyogU3RvcmFnZU1hbmFnZXIubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gU3RvcmFnZU1hbmFnZXIubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkzQjI2MTRDMjI3RDE0NzIwMEI5N0E3NiAvKiBMb2NhbFN0b3JhZ2VEYXRh
YmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMb2NhbFN0b3Jh
Z2VEYXRhYmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQkEwNERBMjE1
MUFERjMwMDdGNDU1RiAvKiBXZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0JBMDREQjIxNTFBREYzMDA3RjQ1NUYgLyogV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNzI5MSw2ICs3Mjk2LDkgQEAKIAkJOTNCMjYxNDMyMjdEMTQzMTAwQjk3
QTc2IC8qIFdlYlN0b3JhZ2UgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAorCQkJCTkzNkIwNTk3MjMwMzkwMEIwMDJGQzA2QiAvKiBTdG9yYWdlTWFuYWdlclNldC5j
cHAgKi8sCisJCQkJOTM2QjA1OTUyMzAzOTAwQjAwMkZDMDZCIC8qIFN0b3JhZ2VNYW5hZ2VyU2V0
LmggKi8sCisJCQkJOTM2QjA1OTYyMzAzOTAwQjAwMkZDMDZCIC8qIFN0b3JhZ2VNYW5hZ2VyU2V0
Lm1lc3NhZ2VzLmluICovLAogCQkJCTkzQjI2MTQ4MjI3RDE0NzEwMEI5N0E3NiAvKiBpb3MgKi8s
CiAJCQkJOTNCMjYxNEMyMjdEMTQ3MjAwQjk3QTc2IC8qIExvY2FsU3RvcmFnZURhdGFiYXNlLmNw
cCAqLywKIAkJCQk5M0IyNjE0NTIyN0QxNDcwMDBCOTdBNzYgLyogTG9jYWxTdG9yYWdlRGF0YWJh
c2UuaCAqLywKQEAgLTczMDQsNyArNzMxMiw2IEBACiAJCQkJNDZCRUI2RDUyMkZCOUJENjAwMjY5
ODY3IC8qIFN0b3JhZ2VBcmVhLmggKi8sCiAJCQkJOTNCMjYxNEEyMjdEMTQ3MjAwQjk3QTc2IC8q
IFN0b3JhZ2VNYW5hZ2VyLmNwcCAqLywKIAkJCQk5M0IyNjE0OTIyN0QxNDcyMDBCOTdBNzYgLyog
U3RvcmFnZU1hbmFnZXIuaCAqLywKLQkJCQk5M0IyNjE0QjIyN0QxNDcyMDBCOTdBNzYgLyogU3Rv
cmFnZU1hbmFnZXIubWVzc2FnZXMuaW4gKi8sCiAJCQkJNDZCRUI2RTIyMkZCQjIxQTAwMjY5ODY3
IC8qIFRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZS5jcHAgKi8sCiAJCQkJNDZCRUI2RTEy
MkZCQjIxQTAwMjY5ODY3IC8qIFRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZS5oICovLAog
CQkJKTsKQEAgLTg2ODUsNiArODY5Miw4IEBACiAJCUMwQ0U3MjlEMTI0N0U3MUQwMEJDMEVDNCAv
KiBEZXJpdmVkIFNvdXJjZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAorCQkJCTkzNjhFRURDMjMwM0E4RDgwMEJEQjExQSAvKiBTdG9yYWdlTWFuYWdlclNldE1l
c3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJCQkJOTM2OEVFREQyMzAzQThEODAwQkRCMTFBIC8qIFN0
b3JhZ2VNYW5hZ2VyU2V0TWVzc2FnZXMuaCAqLywKIAkJCQkyRDdERUJFMjIxMjY5RTRCMDBCOUY3
M0MgLyogdW5pZmllZC1zb3VyY2VzICovLAogCQkJCTUxMkY1OEEwMTJBODgzQUQwMDYyOTUzMCAv
KiBBdXRoZW50aWNhdGlvbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTUxMkY1
OEExMTJBODgzQUQwMDYyOTUzMCAvKiBBdXRoZW50aWNhdGlvbk1hbmFnZXJNZXNzYWdlcy5oICov
LApAQCAtODc2Niw4ICs4Nzc1LDYgQEAKIAkJCQkyREU2OTQzQzE4QkQyQTY4MDA1QzE1RTUgLyog
U21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VzLmggKi8sCiAJCQkJMUEzMzRERUIx
NkRFOEY4ODAwNkE4RTM4IC8qIFN0b3JhZ2VBcmVhTWFwTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywK
IAkJCQkxQTMzNERFQzE2REU4Rjg4MDA2QThFMzggLyogU3RvcmFnZUFyZWFNYXBNZXNzYWdlcy5o
ICovLAotCQkJCTFBQjMxQTk0MTZCQzY4ODEwMEY2REJDOSAvKiBTdG9yYWdlTWFuYWdlck1lc3Nh
Z2VSZWNlaXZlci5jcHAgKi8sCi0JCQkJMUFCMzFBOTUxNkJDNjg4MTAwRjZEQkM5IC8qIFN0b3Jh
Z2VNYW5hZ2VyTWVzc2FnZXMuaCAqLywKIAkJCQk1MTE4RTlBNTFGMjk1OTYzMDAzRUY5RjUgLyog
U3RvcmFnZVByb2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTUxMThFOUE2MUYyOTU5
NjMwMDNFRjlGNSAvKiBTdG9yYWdlUHJvY2Vzc01lc3NhZ2VzLmggKi8sCiAJCQkJNTExOEU5QTcx
RjI5NTk2MzAwM0VGOUY1IC8qIFN0b3JhZ2VQcm9jZXNzUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3Bw
ICovLApAQCAtOTQ3Niw2ICs5NDgzLDggQEAKIAkJCQlFNDlENDBENzFBRDNGQjE3MDA2NkI3Qjkg
LyogTmV0d29ya0NhY2hlQmxvYlN0b3JhZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0ODlEMjhD
MUEwQTJEQjgwMDc4QzA2QSAvKiBOZXR3b3JrQ2FjaGVDb2RlcnMuaCBpbiBIZWFkZXJzICovLAog
CQkJCUU0MkUwNjEyMUFBNzVBQkQwMEIxMTY5OSAvKiBOZXR3b3JrQ2FjaGVEYXRhLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk5MzY4RUVERjIzMDNBOUVEMDBCREIxMUEgLyogU3RvcmFnZU1hbmFnZXJT
ZXRNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTM2QjA1OTgyMzAzOTA5NzAwMkZDMDZC
IC8qIFN0b3JhZ2VNYW5hZ2VyU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDEzRjU5RDFBQzFB
REM0MDAzNDUzNjAgLyogTmV0d29ya0NhY2hlRW50cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTgz
NEIyNTBGMUE4MzFBOEQwMENGQjE1MCAvKiBOZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlFNDJFMDYxMDFBQTc1MjNCMDBCMTE2OTkgLyogTmV0d29ya0NhY2hlSU9D
aGFubmVsLmggaW4gSGVhZGVycyAqLywKQEAgLTk2NzAsNyArOTY3OSw2IEBACiAJCQkJMUFDRUNE
MjUxNzE2MkRCMTAwMUZDOUVGIC8qIFN0b3JhZ2VBcmVhTWFwLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQTMzNERFRTE2REU4Rjg4MDA2QThFMzggLyogU3RvcmFnZUFyZWFNYXBNZXNzYWdlcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTNCMjYxNEQyMjdEMTQ5RTAwQjk3QTc2IC8qIFN0b3JhZ2VNYW5h
Z2VyLmggaW4gSGVhZGVycyAqLywKLQkJCQkxQUIzMUE5NzE2QkM2ODgxMDBGNkRCQzkgLyogU3Rv
cmFnZU1hbmFnZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFMDBENkMxODMyN0Mx
MjAwMDg3REQ3IC8qIFN0cmluZ1JlZmVyZW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjk2QkQ4
NUQxNTAxOUJDMzAwNzFGNDI0IC8qIFN0cmluZ1V0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTdGRDMxODYyMkIzNTE2QzAwOEQwRThCIC8qIFN1YkZyYW1lU09BdXRob3JpemF0aW9uU2Vz
c2lvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMTE4NCw3ICsxMTE5Miw2IEBACiAJCQkJMkQ5MkE3
ODcyMTJCNkFCMTAwRjQ5M0ZEIC8qIFNoYXJlYWJsZUJpdG1hcC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkyREU2OTQzRDE4QkQyQTY4MDA1QzE1RTUgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJv
bGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTMzNERFRDE2REU4
Rjg4MDA2QThFMzggLyogU3RvcmFnZUFyZWFNYXBNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCi0JCQkJMUFCMzFBOTYxNkJDNjg4MTAwRjZEQkM5IC8qIFN0b3JhZ2VNYW5hZ2VyTWVz
c2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTJBNzgzMjEyQjZBNzEwMEY0
OTNGRCAvKiBTdHJpbmdSZWZlcmVuY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQxMUI3NTEy
MTI2QTI4MjAwNkY4ODc4IC8qIFVuaWZpZWRTb3VyY2UxLW1tLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMkQxMUI3NTIyMTI2QTI4MjAwNkY4ODc4IC8qIFVuaWZpZWRTb3VyY2UxLmNwcCBpbiBTb3Vy
Y2VzICovLApAQCAtMTEyNTEsNiArMTEyNTgsNyBAQAogCQkJCTJEMTFCNzhGMjEyNkEyODMwMDZG
ODg3OCAvKiBVbmlmaWVkU291cmNlMzItbW0ubW0gaW4gU291cmNlcyAqLywKIAkJCQkyRDExQjc5
MDIxMjZBMjgzMDA2Rjg4NzggLyogVW5pZmllZFNvdXJjZTMyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTJEMTFCNzkxMjEyNkEyODMwMDZGODg3OCAvKiBVbmlmaWVkU291cmNlMzMtbW0ubW0gaW4g
U291cmNlcyAqLywKKwkJCQk5MzY4RUVERTIzMDNBOTAyMDBCREIxMUEgLyogU3RvcmFnZU1hbmFn
ZXJTZXRNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQxMUI3OTIyMTI2
QTI4MzAwNkY4ODc4IC8qIFVuaWZpZWRTb3VyY2UzMy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQky
RDExQjc5NDIxMjZBMjgzMDA2Rjg4NzggLyogVW5pZmllZFNvdXJjZTM0LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTJEMTFCNzkzMjEyNkEyODMwMDZGODg3OCAvKiBVbmlmaWVkU291cmNlMzQtbW0u
bW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCmluZGV4IDIwY2U1NTkxMWQ3MDY1
MWMzMzVhNzBhY2YyNGU1YmRmYzIxYmQ2MzEuLmIwZGNiOTAwMGJlOTE1MjhjN2MwNzFmNjZkN2U4
YzMwMWNlOTVhNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcApAQCAtNDYsNiArNDYsNyBAQAogI2lu
Y2x1ZGUgIldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJXZWJQcm9j
ZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbE1lc3NhZ2VzLmgiCisjaW5j
bHVkZSAiV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMu
aCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+CkBAIC0zNDgsOSArMzQ5LDEz
IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnNldEphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQo
V2ViUGFnZUdyb3VwUHJveHkqIHBhZ2VHcm91CiB2b2lkIEluamVjdGVkQnVuZGxlOjpzZXRQcml2
YXRlQnJvd3NpbmdFbmFibGVkKFdlYlBhZ2VHcm91cFByb3h5KiBwYWdlR3JvdXAsIGJvb2wgZW5h
YmxlZCkKIHsKICAgICBBU1NFUlQoIWhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVn
ZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVu
YWJsZVByaXZhdGVCcm93c2luZ0ZvclRlc3RpbmcoZW5hYmxlZCk7CisgICAgaWYgKGVuYWJsZWQp
CisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUxlZ2FjeVByaXZhdGVCcm93
c2luZ1Nlc3Npb25Jbk5ldHdvcmtQcm9jZXNzKCk7CiAKICAgICBQYWdlR3JvdXA6OnBhZ2VHcm91
cChwYWdlR3JvdXAtPmlkZW50aWZpZXIoKSktPmVuYWJsZUxlZ2FjeVByaXZhdGVCcm93c2luZ0Zv
clRlc3RpbmcoZW5hYmxlZCk7CisKKyAgICBhdXRvIHdlYlN0b3JhZ2VOYW1lU3BhY2VQcm92aWRl
ciA9IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Z2V0T3JDcmVhdGUocGFnZUdyb3VwLT5w
YWdlR3JvdXBJRCgpKTsKKyAgICB3ZWJTdG9yYWdlTmFtZVNwYWNlUHJvdmlkZXItPmVuYWJsZUxl
Z2FjeVByaXZhdGVCcm93c2luZ0ZvclRlc3RpbmcoZW5hYmxlZCk7CiB9CiAKIHZvaWQgSW5qZWN0
ZWRCdW5kbGU6OnNldFBvcHVwQmxvY2tpbmdFbmFibGVkKFdlYlBhZ2VHcm91cFByb3h5KiBwYWdl
R3JvdXAsIGJvb2wgZW5hYmxlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cAppbmRleCA3YjQ4YTBmNzI0NjJmZmU1N2ZlOTIwNmNiY2MwY2YzMzFjMzIxMWUxLi5hZjc5MjU2
MDRhNTEzMTFmNDVmNWMwZGYxOTk5OWRiZjE3OTNkOWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC02NzcsNyArNjc3LDYgQEAgdm9pZCBXZWJQcm9jZXNzOjpj
cmVhdGVXZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycyYKICAgICAvLyBJdCBpcyBuZWNlc3NhcnkgdG8gY2hlY2sgZm9yIHBhZ2UgZXhpc3RlbmNl
IGhlcmUgc2luY2UgZHVyaW5nIGEgd2luZG93Lm9wZW4oKSAob3IgdGFyZ2V0ZWQKICAgICAvLyBs
aW5rKSB0aGUgV2ViUGFnZSBnZXRzIGNyZWF0ZWQgYm90aCBpbiB0aGUgc3luY2hyb25vdXMgaGFu
ZGxlciBhbmQgdGhyb3VnaCB0aGUgbm9ybWFsIHdheS4gCiAgICAgYXV0byByZXN1bHQgPSBtX3Bh
Z2VNYXAuYWRkKHBhZ2VJRCwgbnVsbHB0cik7Ci0gICAgYXV0byBvbGRQYWdlSUQgPSBwYXJhbWV0
ZXJzLm9sZFBhZ2VJRCA/IHBhcmFtZXRlcnMub2xkUGFnZUlELnZhbHVlKCkgOiBwYWdlSUQ7CiAg
ICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KSB7CiAgICAgICAgIEFTU0VSVCghcmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZSk7CiAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBXZWJQYWdlOjpj
cmVhdGUocGFnZUlELCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKQEAgLTY4OCw4ICs2ODcsNiBAQCB2
b2lkIFdlYlByb2Nlc3M6OmNyZWF0ZVdlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzJgogICAgIH0gZWxzZQogICAgICAgICByZXN1bHQuaXRlcmF0
b3ItPnZhbHVlLT5yZWluaXRpYWxpemVXZWJQYWdlKFdURk1vdmUocGFyYW1ldGVycykpOwogCi0g
ICAgZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpXZWJQYWdlV2FzQWRkZWQocmVz
dWx0Lml0ZXJhdG9yLT52YWx1ZS0+c2Vzc2lvbklEKCksIHBhZ2VJRCwgb2xkUGFnZUlEKSwgMCk7
Ci0KICAgICBBU1NFUlQocmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSk7CiB9CiAKQEAgLTY5Nyw3ICs2
OTQsNiBAQCB2b2lkIFdlYlByb2Nlc3M6OnJlbW92ZVdlYlBhZ2UoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgQVNTRVJUKG1fcGFnZU1hcC5j
b250YWlucyhwYWdlSUQpKTsKIAotICAgIGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigp
LmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6V2ViUGFnZVdhc1JlbW92ZWQoc2Vzc2lvbklELCBwYWdlSUQpLCAwKTsKICAgICBwYWdlV2ls
bExlYXZlV2luZG93KHBhZ2VJRCk7CiAgICAgbV9wYWdlTWFwLnJlbW92ZShwYWdlSUQpOwogCkBA
IC0xMjQ2LDE2ICsxMjQyLDYgQEAgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uJiBXZWJQcm9jZXNz
OjplbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKQogICAgICAgICAgICAgQ1JBU0goKTsK
IAogICAgICAgICBtX25ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiA9IE5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbjo6Y3JlYXRlKGNvbm5lY3Rpb25JZGVudGlmaWVyKTsKLQotICAgICAgICAvLyBUbyBy
ZWNvdmVyIHdlYiBzdG9yYWdlLCBuZXR3b3JrIHByb2Nlc3MgbmVlZHMgdG8ga25vdyBhY3RpdmUg
d2VicGFnZXMgdG8gcHJlcGFyZSBzZXNzaW9uIHN0b3JhZ2UuCi0gICAgICAgIC8vIEZJWE1FOiBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4MDUxLgotICAgICAgICAv
LyBXZWJwYWdlIHNob3VsZCBiZSBhZGRlZCB3aGVuIFN0b3JhZ2UgaXMgdXNlZCwgbm90IHdoZW4g
Y29ubmVjdGlvbiBpcyByZS1lc3RhYmxpc2hlZC4KLSAgICAgICAgZm9yIChhdXRvJiBwYWdlIDog
bV9wYWdlTWFwKSB7Ci0gICAgICAgICAgICBpZiAoIXBhZ2UudmFsdWUpCi0gICAgICAgICAgICAg
ICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLT5j
b25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OldlYlBhZ2VXYXNBZGRlZChwYWdlLnZhbHVlLT5zZXNzaW9uSUQoKSwgcGFnZS5rZXksIHBhZ2Uu
a2V5KSwgMCk7Ci0gICAgICAgIH0KICAgICB9CiAgICAgCiAgICAgcmV0dXJuICptX25ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbjsKQEAgLTEyODYsNyArMTI3Miw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6
bmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uQ2xvc2VkKE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiog
Y29ubmVjCiAgICAgQVNTRVJUKG1fbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKTsKICAgICBBU1NF
UlRfVU5VU0VEKGNvbm5lY3Rpb24sIG1fbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uID09IGNvbm5l
Y3Rpb24pOwogCi0gICAgZm9yIChhdXRvKiBzdG9yYWdlQXJlYU1hcCA6IG1fc3RvcmFnZUFyZWFN
YXBzLnZhbHVlcygpKQorICAgIGZvciAoYXV0byogc3RvcmFnZUFyZWFNYXAgOiBjb3B5VG9WZWN0
b3IobV9zdG9yYWdlQXJlYU1hcHMudmFsdWVzKCkpKQogICAgICAgICBzdG9yYWdlQXJlYU1hcC0+
ZGlzY29ubmVjdCgpOwogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCkBAIC0xNjg3LDI1
ICsxNjczLDkgQEAgdm9pZCBXZWJQcm9jZXNzOjp1bnJlZ2lzdGVyU3RvcmFnZUFyZWFNYXAoU3Rv
cmFnZUFyZWFNYXAmIHN0b3JhZ2VBcmVhTWFwKQogCiBTdG9yYWdlQXJlYU1hcCogV2ViUHJvY2Vz
czo6c3RvcmFnZUFyZWFNYXAodWludDY0X3QgaWRlbnRpZmllcikgY29uc3QKIHsKLSAgICBBU1NF
UlQobV9zdG9yYWdlQXJlYU1hcHMuY29udGFpbnMoaWRlbnRpZmllcikpOwogICAgIHJldHVybiBt
X3N0b3JhZ2VBcmVhTWFwcy5nZXQoaWRlbnRpZmllcik7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzczo6
ZW5hYmxlUHJpdmF0ZUJyb3dzaW5nRm9yVGVzdGluZyhib29sIGVuYWJsZSkKLXsKLSAgICBpZiAo
ZW5hYmxlKQotICAgICAgICBlbnN1cmVMZWdhY3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uSW5OZXR3
b3JrUHJvY2VzcygpOwotCi0gICAgVmVjdG9yPFBhZ2VJZGVudGlmaWVyPiBwYWdlSURzOwotICAg
IGZvciAoYXV0byYgcGFnZSA6IG1fcGFnZU1hcCkgewotICAgICAgICBpZiAocGFnZS52YWx1ZSkK
LSAgICAgICAgICAgIHBhZ2VJRHMuYXBwZW5kKHBhZ2Uua2V5KTsKLSAgICB9Ci0KLSAgICBpZiAo
IXBhZ2VJRHMuaXNFbXB0eSgpKQotICAgICAgICBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OldlYlByb2Nlc3NTZXNzaW9uQ2hhbmdlZChlbmFibGUgPyBQQUw6OlNlc3Npb25JRDo6
bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpIDogUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9u
SUQoKSwgcGFnZUlEcyksIDApOwotfQotCiB2b2lkIFdlYlByb2Nlc3M6OnNldFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKICAgICBXZWJDb3JlOjpEZXByZWNh
dGVkR2xvYmFsU2V0dGluZ3M6OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGVuYWJs
ZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggZDRjMDFiYWIxZjkz
ZGE5MDg1YjBmMjE5NGNkMzI3ZDQ3MTg2NTBiMi4uNjYxMWU5MjMwNThkMTIzNzBlNjY1ZDhjYWM2
NzJhZmQyYzE3MzllMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC0y
MTQsOCArMjE0LDYgQEAgcHVibGljOgogICAgIHZvaWQgdW5yZWdpc3RlclN0b3JhZ2VBcmVhTWFw
KFN0b3JhZ2VBcmVhTWFwJik7CiAgICAgU3RvcmFnZUFyZWFNYXAqIHN0b3JhZ2VBcmVhTWFwKHVp
bnQ2NF90IGlkZW50aWZpZXIpIGNvbnN0OwogCi0gICAgdm9pZCBlbmFibGVQcml2YXRlQnJvd3Np
bmdGb3JUZXN0aW5nKGJvb2wpOwotCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgUmV0YWluUHRy
PENGRGF0YVJlZj4gc291cmNlQXBwbGljYXRpb25BdWRpdERhdGEoKSBjb25zdDsKICAgICB2b2lk
IGRlc3Ryb3lSZW5kZXJpbmdSZXNvdXJjZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwCmluZGV4IDc0MGMwZGJj
MDdjYTdkNTVlMTNjZTJiMTkwMjMzM2MwZGUwYTYyNjMuLmVjZDJiOTM1ZDQzM2JlODM3YzRjNGJi
YWRmM2U1NWFjNDY2ZTQxZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2lu
Y2x1ZGUgPFdlYkNvcmUvU2NoZW1lUmVnaXN0cnkuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3Vy
aXR5T3JpZ2luRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1N0b3JhZ2VUeXBlLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CkBAIC01MCw3ICs1MSw3IEBAIFJlZjxTdG9yYWdlQXJlYUltcGw+IFN0
b3JhZ2VBcmVhSW1wbDo6Y3JlYXRlKFJlZjxTdG9yYWdlQXJlYU1hcD4mJiBzdG9yYWdlQXJlYU1h
CiAKIFN0b3JhZ2VBcmVhSW1wbDo6U3RvcmFnZUFyZWFJbXBsKFJlZjxTdG9yYWdlQXJlYU1hcD4m
JiBzdG9yYWdlQXJlYU1hcCkKICAgICA6IG1fc3RvcmFnZUFyZWFJRChnZW5lcmF0ZVN0b3JhZ2VB
cmVhSUQoKSkKLSAgICAsIG1fc3RvcmFnZUFyZWFNYXAoV1RGTW92ZShzdG9yYWdlQXJlYU1hcCkp
CisgICAgLCBtX3N0b3JhZ2VBcmVhTWFwKG1ha2VXZWFrUHRyKHN0b3JhZ2VBcmVhTWFwLmdldCgp
KSkKIHsKIH0KIApAQCAtNjAsNDkgKzYxLDU0IEBAIFN0b3JhZ2VBcmVhSW1wbDo6flN0b3JhZ2VB
cmVhSW1wbCgpCiAKIHVuc2lnbmVkIFN0b3JhZ2VBcmVhSW1wbDo6bGVuZ3RoKCkKIHsKLSAgICBy
ZXR1cm4gbV9zdG9yYWdlQXJlYU1hcC0+bGVuZ3RoKCk7CisgICAgcmV0dXJuIG1fc3RvcmFnZUFy
ZWFNYXAgPyBtX3N0b3JhZ2VBcmVhTWFwLT5sZW5ndGgoKSA6IDA7CiB9CiAKIFN0cmluZyBTdG9y
YWdlQXJlYUltcGw6OmtleSh1bnNpZ25lZCBpbmRleCkKIHsKLSAgICByZXR1cm4gbV9zdG9yYWdl
QXJlYU1hcC0+a2V5KGluZGV4KTsKKyAgICByZXR1cm4gbV9zdG9yYWdlQXJlYU1hcCA/IG1fc3Rv
cmFnZUFyZWFNYXAtPmtleShpbmRleCkgOiBudWxsU3RyaW5nKCk7CiB9CiAKIFN0cmluZyBTdG9y
YWdlQXJlYUltcGw6Oml0ZW0oY29uc3QgU3RyaW5nJiBrZXkpCiB7Ci0gICAgcmV0dXJuIG1fc3Rv
cmFnZUFyZWFNYXAtPml0ZW0oa2V5KTsKLX0KLQotYm9vbCBTdG9yYWdlQXJlYUltcGw6OnByZXdh
cm0oKQotewotICAgIHJldHVybiBtX3N0b3JhZ2VBcmVhTWFwLT5wcmV3YXJtKCk7CisgICAgcmV0
dXJuIG1fc3RvcmFnZUFyZWFNYXAgPyBtX3N0b3JhZ2VBcmVhTWFwLT5pdGVtKGtleSkgOiBudWxs
U3RyaW5nKCk7CiB9CiAKIHZvaWQgU3RvcmFnZUFyZWFJbXBsOjpzZXRJdGVtKEZyYW1lKiBzb3Vy
Y2VGcmFtZSwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wmIHF1
b3RhRXhjZXB0aW9uKQogewogICAgIEFTU0VSVCghdmFsdWUuaXNOdWxsKCkpOwogCi0gICAgbV9z
dG9yYWdlQXJlYU1hcC0+c2V0SXRlbShzb3VyY2VGcmFtZSwgdGhpcywga2V5LCB2YWx1ZSwgcXVv
dGFFeGNlcHRpb24pOworICAgIGlmIChtX3N0b3JhZ2VBcmVhTWFwKQorICAgICAgICBtX3N0b3Jh
Z2VBcmVhTWFwLT5zZXRJdGVtKHNvdXJjZUZyYW1lLCB0aGlzLCBrZXksIHZhbHVlLCBxdW90YUV4
Y2VwdGlvbik7CiB9CiAKIHZvaWQgU3RvcmFnZUFyZWFJbXBsOjpyZW1vdmVJdGVtKEZyYW1lKiBz
b3VyY2VGcmFtZSwgY29uc3QgU3RyaW5nJiBrZXkpCiB7Ci0gICAgbV9zdG9yYWdlQXJlYU1hcC0+
cmVtb3ZlSXRlbShzb3VyY2VGcmFtZSwgdGhpcywga2V5KTsKKyAgICBpZiAobV9zdG9yYWdlQXJl
YU1hcCkKKyAgICAgICAgbV9zdG9yYWdlQXJlYU1hcC0+cmVtb3ZlSXRlbShzb3VyY2VGcmFtZSwg
dGhpcywga2V5KTsKIH0KIAogdm9pZCBTdG9yYWdlQXJlYUltcGw6OmNsZWFyKEZyYW1lKiBzb3Vy
Y2VGcmFtZSkKIHsKLSAgICBtX3N0b3JhZ2VBcmVhTWFwLT5jbGVhcihzb3VyY2VGcmFtZSwgdGhp
cyk7CisgICAgaWYgKG1fc3RvcmFnZUFyZWFNYXApCisgICAgICAgIG1fc3RvcmFnZUFyZWFNYXAt
PmNsZWFyKHNvdXJjZUZyYW1lLCB0aGlzKTsKIH0KIAogYm9vbCBTdG9yYWdlQXJlYUltcGw6OmNv
bnRhaW5zKGNvbnN0IFN0cmluZyYga2V5KQogewotICAgIHJldHVybiBtX3N0b3JhZ2VBcmVhTWFw
LT5jb250YWlucyhrZXkpOworICAgIGlmIChtX3N0b3JhZ2VBcmVhTWFwKQorICAgICAgICByZXR1
cm4gbV9zdG9yYWdlQXJlYU1hcC0+Y29udGFpbnMoa2V5KTsKKworICAgIHJldHVybiBmYWxzZTsK
IH0KIAogU3RvcmFnZVR5cGUgU3RvcmFnZUFyZWFJbXBsOjpzdG9yYWdlVHlwZSgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIG1fc3RvcmFnZUFyZWFNYXAtPnN0b3JhZ2VUeXBlKCk7CisgICAgaWYgKG1f
c3RvcmFnZUFyZWFNYXApCisgICAgICAgIHJldHVybiBtX3N0b3JhZ2VBcmVhTWFwLT5zdG9yYWdl
VHlwZSgpOworCisgICAgLy8gV2UgcHJvYmFibHkgbmVlZCBhbiBJbnZhbGlkIHR5cGUuCisgICAg
cmV0dXJuIFN0b3JhZ2VUeXBlOjpMb2NhbDsKIH0KIAogc2l6ZV90IFN0b3JhZ2VBcmVhSW1wbDo6
bWVtb3J5Qnl0ZXNVc2VkQnlDYWNoZSgpCkBAIC0xMTIsMTIgKzExOCwxMiBAQCBzaXplX3QgU3Rv
cmFnZUFyZWFJbXBsOjptZW1vcnlCeXRlc1VzZWRCeUNhY2hlKCkKIAogdm9pZCBTdG9yYWdlQXJl
YUltcGw6OmluY3JlbWVudEFjY2Vzc0NvdW50KCkKIHsKLSAgICAvLyBTdG9yYWdlIGFjY2VzcyBp
cyBoYW5kbGVkIGluIHRoZSBVSSBwcm9jZXNzLCBzbyB0aGVyZSdzIG5vdGhpbmcgdG8gZG8gaGVy
ZS4KKyAgICAvLyBTdG9yYWdlIGFjY2VzcyBpcyBoYW5kbGVkIGluIHRoZSBuZXR3b3JrIHByb2Nl
c3MsIHNvIHRoZXJlJ3Mgbm90aGluZyB0byBkbyBoZXJlLgogfQogCiB2b2lkIFN0b3JhZ2VBcmVh
SW1wbDo6ZGVjcmVtZW50QWNjZXNzQ291bnQoKQogewotICAgIC8vIFN0b3JhZ2UgYWNjZXNzIGlz
IGhhbmRsZWQgaW4gdGhlIFVJIHByb2Nlc3MsIHNvIHRoZXJlJ3Mgbm90aGluZyB0byBkbyBoZXJl
LgorICAgIC8vIFN0b3JhZ2UgYWNjZXNzIGlzIGhhbmRsZWQgaW4gdGhlIG5ldHdvcmsgcHJvY2Vz
cywgc28gdGhlcmUncyBub3RoaW5nIHRvIGRvIGhlcmUuCiB9CiAKIHZvaWQgU3RvcmFnZUFyZWFJ
bXBsOjpjbG9zZURhdGFiYXNlSWZJZGxlKCkKQEAgLTEyNiw5ICsxMzIsNCBAQCB2b2lkIFN0b3Jh
Z2VBcmVhSW1wbDo6Y2xvc2VEYXRhYmFzZUlmSWRsZSgpCiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiB9CiAKLWNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgU3RvcmFnZUFyZWFJbXBsOjpzZWN1
cml0eU9yaWdpbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc3RvcmFnZUFyZWFNYXAtPnNlY3Vy
aXR5T3JpZ2luKCkuZGF0YSgpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmgK
aW5kZXggYjhmMTZmMmVhYTVhOWVhYzA2NjQ1YjM4ZTVmMGZmMTQ0ZGRkNTgyNC4uYjJhOGQ1MGJl
MTg3MDFkOTFkMzExMTE2OWMxMzJiZjdmYzkxOTk5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmgKQEAgLTI4LDYgKzI4
LDcgQEAKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1N0
b3JhZ2VBcmVhLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvV2Vh
a1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKQEAg
LTYwLDExICs2MSw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbmNyZW1lbnRBY2Nlc3NDb3VudCgp
IG92ZXJyaWRlOwogICAgIHZvaWQgZGVjcmVtZW50QWNjZXNzQ291bnQoKSBvdmVycmlkZTsKICAg
ICB2b2lkIGNsb3NlRGF0YWJhc2VJZklkbGUoKSBvdmVycmlkZTsKLSAgICBjb25zdCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKCkgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgYm9vbCBwcmV3YXJtKCkgZmluYWw7CiAKICAgICB1aW50NjRfdCBtX3N0b3JhZ2VBcmVhSUQ7
Ci0gICAgUmVmPFN0b3JhZ2VBcmVhTWFwPiBtX3N0b3JhZ2VBcmVhTWFwOworICAgIFdlYWtQdHI8
U3RvcmFnZUFyZWFNYXA+IG1fc3RvcmFnZUFyZWFNYXA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0
b3JhZ2VBcmVhTWFwLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0
b3JhZ2VBcmVhTWFwLmNwcAppbmRleCAzZTA1MGRmMTc4YTQ0OGJjOTMyY2E0YmFlYzEwMzFhNzJm
OTM4MGU2Li42NjY1YjNmOWNkZmQ2ZmFmZTZiNmRlMjM5YzE2NDYzZmI4Zjc4NWFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFN
YXAuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFyZWFJbXBsLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFy
ZWFNYXBNZXNzYWdlcy5oIgotI2luY2x1ZGUgIlN0b3JhZ2VNYW5hZ2VyTWVzc2FnZXMuaCIKKyNp
bmNsdWRlICJTdG9yYWdlTWFuYWdlclNldE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiU3RvcmFnZU5h
bWVzcGFjZUltcGwuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZUdy
b3VwUHJveHkuaCIKQEAgLTQ4LDQwICs0OCwyNiBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlU3RvcmFnZU1h
cElEKCkKLXsKLSAgICBzdGF0aWMgdWludDY0X3Qgc3RvcmFnZU1hcElEOwotICAgIHJldHVybiAr
K3N0b3JhZ2VNYXBJRDsKLX0KLQogUmVmPFN0b3JhZ2VBcmVhTWFwPiBTdG9yYWdlQXJlYU1hcDo6
Y3JlYXRlKFN0b3JhZ2VOYW1lc3BhY2VJbXBsKiBzdG9yYWdlTmFtZXNwYWNlLCBSZWY8V2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW4+JiYgc2VjdXJpdHlPcmlnaW4pCiB7CiAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU3RvcmFnZUFyZWFNYXAoc3RvcmFnZU5hbWVzcGFjZSwgV1RGTW92ZShzZWN1cml0
eU9yaWdpbikpKTsKIH0KIAogU3RvcmFnZUFyZWFNYXA6OlN0b3JhZ2VBcmVhTWFwKFN0b3JhZ2VO
YW1lc3BhY2VJbXBsKiBzdG9yYWdlTmFtZXNwYWNlLCBSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmln
aW4+JiYgc2VjdXJpdHlPcmlnaW4pCi0gICAgOiBtX3N0b3JhZ2VOYW1lc3BhY2UoKnN0b3JhZ2VO
YW1lc3BhY2UpCi0gICAgLCBtX3N0b3JhZ2VNYXBJRChnZW5lcmF0ZVN0b3JhZ2VNYXBJRCgpKQor
ICAgIDogbV9zdG9yYWdlTmFtZXNwYWNlKHN0b3JhZ2VOYW1lc3BhY2UpCisgICAgLCBtX3N0b3Jh
Z2VNYXBJRCgwKQogICAgICwgbV9zdG9yYWdlVHlwZShzdG9yYWdlTmFtZXNwYWNlLT5zdG9yYWdl
VHlwZSgpKQotICAgICwgbV9zdG9yYWdlTmFtZXNwYWNlSUQoc3RvcmFnZU5hbWVzcGFjZS0+c3Rv
cmFnZU5hbWVzcGFjZUlEKCkpCiAgICAgLCBtX3F1b3RhSW5CeXRlcyhzdG9yYWdlTmFtZXNwYWNl
LT5xdW90YUluQnl0ZXMoKSkKICAgICAsIG1fc2VjdXJpdHlPcmlnaW4oV1RGTW92ZShzZWN1cml0
eU9yaWdpbikpCiAgICAgLCBtX2N1cnJlbnRTZWVkKDApCiAgICAgLCBtX2hhc1BlbmRpbmdDbGVh
cihmYWxzZSkKLSAgICAsIG1faGFzUGVuZGluZ0dldFZhbHVlcyhmYWxzZSkKIHsKLSAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5yZWdpc3RlclN0b3JhZ2VBcmVhTWFwKCp0aGlzKTsKICAgICBj
b25uZWN0KCk7CiB9CiAKIFN0b3JhZ2VBcmVhTWFwOjp+U3RvcmFnZUFyZWFNYXAoKQogewotICAg
IGlmIChtX3N0b3JhZ2VUeXBlICE9IFN0b3JhZ2VUeXBlOjpFcGhlbWVyYWxMb2NhbCkKLSAgICAg
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
KCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VNYW5hZ2VyOjpEZXN0cm95U3Rv
cmFnZU1hcChtX3N0b3JhZ2VNYXBJRCksIDApOwotCi0gICAgbV9zdG9yYWdlTmFtZXNwYWNlLT5k
aWREZXN0cm95U3RvcmFnZUFyZWFNYXAoKnRoaXMpOwotCi0gICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkudW5yZWdpc3RlclN0b3JhZ2VBcmVhTWFwKCp0aGlzKTsKKyAgICBkaXNjb25uZWN0KCk7
CiB9CiAKIHVuc2lnbmVkIFN0b3JhZ2VBcmVhTWFwOjpsZW5ndGgoKQpAQCAtMTIyLDcgKzEwOCw3
IEBAIHZvaWQgU3RvcmFnZUFyZWFNYXA6OnNldEl0ZW0oRnJhbWUqIHNvdXJjZUZyYW1lLCBTdG9y
YWdlQXJlYUltcGwqIHNvdXJjZUFyZWEsIGNvCiAKICAgICBtX3BlbmRpbmdWYWx1ZUNoYW5nZXMu
YWRkKGtleSk7CiAKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6U3RvcmFnZU1hbmFn
ZXI6OlNldEl0ZW0obV9zZWN1cml0eU9yaWdpbi0+ZGF0YSgpLCBtX3N0b3JhZ2VNYXBJRCwgc291
cmNlQXJlYS0+c3RvcmFnZUFyZWFJRCgpLCBtX2N1cnJlbnRTZWVkLCBrZXksIHZhbHVlLCBzb3Vy
Y2VGcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChN
ZXNzYWdlczo6U3RvcmFnZU1hbmFnZXJTZXQ6OlNldEl0ZW0obV9zdG9yYWdlTWFwSUQsIHNvdXJj
ZUFyZWEtPnN0b3JhZ2VBcmVhSUQoKSwgbV9jdXJyZW50U2VlZCwga2V5LCB2YWx1ZSwgc291cmNl
RnJhbWUtPmRvY3VtZW50KCktPnVybCgpKSwgMCk7CiB9CiAKIHZvaWQgU3RvcmFnZUFyZWFNYXA6
OnJlbW92ZUl0ZW0oV2ViQ29yZTo6RnJhbWUqIHNvdXJjZUZyYW1lLCBTdG9yYWdlQXJlYUltcGwq
IHNvdXJjZUFyZWEsIGNvbnN0IFN0cmluZyYga2V5KQpAQCAtMTM4LDE2ICsxMjQsMTggQEAgdm9p
ZCBTdG9yYWdlQXJlYU1hcDo6cmVtb3ZlSXRlbShXZWJDb3JlOjpGcmFtZSogc291cmNlRnJhbWUs
IFN0b3JhZ2VBcmVhSW1wbCogc28KIAogICAgIG1fcGVuZGluZ1ZhbHVlQ2hhbmdlcy5hZGQoa2V5
KTsKIAotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdlcjo6UmVt
b3ZlSXRlbShtX3NlY3VyaXR5T3JpZ2luLT5kYXRhKCksIG1fc3RvcmFnZU1hcElELCBzb3VyY2VB
cmVhLT5zdG9yYWdlQXJlYUlEKCksIG1fY3VycmVudFNlZWQsIGtleSwgc291cmNlRnJhbWUtPmRv
Y3VtZW50KCktPnVybCgpKSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJl
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlN0
b3JhZ2VNYW5hZ2VyU2V0OjpSZW1vdmVJdGVtKG1fc3RvcmFnZU1hcElELCBzb3VyY2VBcmVhLT5z
dG9yYWdlQXJlYUlEKCksIG1fY3VycmVudFNlZWQsIGtleSwgc291cmNlRnJhbWUtPmRvY3VtZW50
KCktPnVybCgpKSwgMCk7CiB9CiAKIHZvaWQgU3RvcmFnZUFyZWFNYXA6OmNsZWFyKFdlYkNvcmU6
OkZyYW1lKiBzb3VyY2VGcmFtZSwgU3RvcmFnZUFyZWFJbXBsKiBzb3VyY2VBcmVhKQogeworICAg
IGNvbm5lY3QoKTsKKwogICAgIHJlc2V0VmFsdWVzKCk7CiAKICAgICBtX2hhc1BlbmRpbmdDbGVh
ciA9IHRydWU7CiAgICAgbV9zdG9yYWdlTWFwID0gU3RvcmFnZU1hcDo6Y3JlYXRlKG1fcXVvdGFJ
bkJ5dGVzKTsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXI6
OkNsZWFyKG1fc2VjdXJpdHlPcmlnaW4tPmRhdGEoKSwgbV9zdG9yYWdlTWFwSUQsIHNvdXJjZUFy
ZWEtPnN0b3JhZ2VBcmVhSUQoKSwgbV9jdXJyZW50U2VlZCwgc291cmNlRnJhbWUtPmRvY3VtZW50
KCktPnVybCgpKSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VN
YW5hZ2VyU2V0OjpDbGVhcihtX3N0b3JhZ2VNYXBJRCwgc291cmNlQXJlYS0+c3RvcmFnZUFyZWFJ
RCgpLCBtX2N1cnJlbnRTZWVkLCBzb3VyY2VGcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkpLCAwKTsK
IH0KIAogYm9vbCBTdG9yYWdlQXJlYU1hcDo6Y29udGFpbnMoY29uc3QgU3RyaW5nJiBrZXkpCkBA
IC0xNjMsNyArMTUxLDYgQEAgdm9pZCBTdG9yYWdlQXJlYU1hcDo6cmVzZXRWYWx1ZXMoKQogCiAg
ICAgbV9wZW5kaW5nVmFsdWVDaGFuZ2VzLmNsZWFyKCk7CiAgICAgbV9oYXNQZW5kaW5nQ2xlYXIg
PSBmYWxzZTsKLSAgICBtX2hhc1BlbmRpbmdHZXRWYWx1ZXMgPSBmYWxzZTsKICAgICBtX2N1cnJl
bnRTZWVkKys7CiB9CiAKQEAgLTE3OCwzMyArMTY1LDEwIEBAIHZvaWQgU3RvcmFnZUFyZWFNYXA6
OmxvYWRWYWx1ZXNJZk5lZWRlZCgpCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHVzZSBhIHNw
ZWNpYWwgc2VuZFN5bmMgZmxhZyB0byBpbmRpY2F0ZSB0aGF0IHdlIGRvbid0IHdhbnQgdG8gcHJv
Y2VzcyBpbmNvbWluZyBtZXNzYWdlcyB3aGlsZSB3YWl0aW5nIGZvciBhIHJlcGx5LgogICAgIC8v
IChUaGlzIGZsYWcgZG9lcyBub3QgeWV0IGV4aXN0KS4gU2luY2UgbG9hZFZhbHVlc0lmTmVlZGVk
KCkgZW5kcyB1cCBiZWluZyBjYWxsZWQgZnJvbSB3aXRoaW4gSmF2YVNjcmlwdCBjb2RlLCBwcm9j
ZXNzaW5nIGluY29taW5nIHN5bmNocm9ub3VzIG1lc3NhZ2VzCiAgICAgLy8gY291bGQgbGVhZCB0
byB3ZWlyZCByZWVudHJlbmN5IGJ1Z3Mgb3RoZXJ3aXNlLgotICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5k
U3luYyhNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXI6OkdldFZhbHVlcyhtX3N0b3JhZ2VNYXBJRCwg
bV9jdXJyZW50U2VlZCksIE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdlcjo6R2V0VmFsdWVzOjpSZXBs
eSh2YWx1ZXMpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlN0b3Jh
Z2VNYW5hZ2VyU2V0OjpHZXRWYWx1ZXMobV9zdG9yYWdlTWFwSUQpLCBNZXNzYWdlczo6U3RvcmFn
ZU1hbmFnZXJTZXQ6OkdldFZhbHVlczo6UmVwbHkodmFsdWVzKSwgMCk7CiAKICAgICBtX3N0b3Jh
Z2VNYXAgPSBTdG9yYWdlTWFwOjpjcmVhdGUobV9xdW90YUluQnl0ZXMpOwogICAgIG1fc3RvcmFn
ZU1hcC0+aW1wb3J0SXRlbXMoV1RGTW92ZSh2YWx1ZXMpKTsKLQotICAgIC8vIFdlIHdhbnQgdG8g
aWdub3JlIGFsbCBjaGFuZ2VzIHVudGlsIHdlIGdldCB0aGUgRGlkR2V0VmFsdWVzIG1lc3NhZ2Uu
Ci0gICAgbV9oYXNQZW5kaW5nR2V0VmFsdWVzID0gdHJ1ZTsKLX0KLQotYm9vbCBTdG9yYWdlQXJl
YU1hcDo6cHJld2FybSgpCi17Ci0gICAgaWYgKG1fZGlkUHJld2FybSB8fCBtX3N0b3JhZ2VNYXAp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBtX2RpZFByZXdhcm0gPSB0cnVlOwotCi0gICAg
Y29ubmVjdCgpOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdl
cjo6UHJld2FybShtX3N0b3JhZ2VNYXBJRCksIDApOwotICAgIHJldHVybiB0cnVlOwotfQotCi12
b2lkIFN0b3JhZ2VBcmVhTWFwOjpkaWRHZXRWYWx1ZXModWludDY0X3Qgc3RvcmFnZU1hcFNlZWQp
Ci17Ci0gICAgaWYgKG1fY3VycmVudFNlZWQgIT0gc3RvcmFnZU1hcFNlZWQpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIEFTU0VSVChtX2hhc1BlbmRpbmdHZXRWYWx1ZXMpOwotICAgIG1faGFzUGVu
ZGluZ0dldFZhbHVlcyA9IGZhbHNlOwogfQogCiB2b2lkIFN0b3JhZ2VBcmVhTWFwOjpkaWRTZXRJ
dGVtKHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkLCBjb25zdCBTdHJpbmcmIGtleSwgYm9vbCBxdW90
YUVycm9yKQpAQCAtMjU5LDggKzIyMyw4IEBAIHZvaWQgU3RvcmFnZUFyZWFNYXA6OmFwcGx5Q2hh
bmdlKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlKQogewogICAgIEFT
U0VSVCghbV9zdG9yYWdlTWFwIHx8IG1fc3RvcmFnZU1hcC0+aGFzT25lUmVmKCkpOwogCi0gICAg
Ly8gVGhlcmUncyBhIGNsZWFyIHBlbmRpbmcgb3IgZ2V0VmFsdWVzIHBlbmRpbmcgd2UgZG9uJ3Qg
d2FudCB0byBhcHBseSBhbnkgY2hhbmdlcyB1bnRpbCB3ZSBnZXQgdGhlIGNvcnJlc3BvbmRpbmcg
RGlkQ2xlYXIvRGlkR2V0VmFsdWVzIG1lc3NhZ2VzLgotICAgIGlmIChtX2hhc1BlbmRpbmdDbGVh
ciB8fCBtX2hhc1BlbmRpbmdHZXRWYWx1ZXMpCisgICAgLy8gVGhlcmUgaXMgYXQgbGVhc3Qgb25l
IGNsZWFyIHBlbmRpbmcgd2UgZG9uJ3Qgd2FudCB0byBhcHBseSBhbnkgY2hhbmdlcyB1bnRpbCB3
ZSBnZXQgdGhlIGNvcnJlc3BvbmRpbmcgRGlkQ2xlYXIgbWVzc2FnZXMuCisgICAgaWYgKG1faGFz
UGVuZGluZ0NsZWFyKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIWtleSkgewpAQCAtMzA1
LDcgKzI2OSw3IEBAIHZvaWQgU3RvcmFnZUFyZWFNYXA6OmRpc3BhdGNoU3RvcmFnZUV2ZW50KHVp
bnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIGNvbnN0IFN0CiAgICAgICAgIGFwcGx5Q2hhbmdl
KGtleSwgbmV3VmFsdWUpOwogICAgIH0KIAotICAgIGlmIChzdG9yYWdlVHlwZSgpID09IFN0b3Jh
Z2VUeXBlOjpTZXNzaW9uIHx8IHN0b3JhZ2VUeXBlKCkgPT0gU3RvcmFnZVR5cGU6OkVwaGVtZXJh
bExvY2FsKQorICAgIGlmIChzdG9yYWdlVHlwZSgpID09IFN0b3JhZ2VUeXBlOjpTZXNzaW9uKQog
ICAgICAgICBkaXNwYXRjaFNlc3Npb25TdG9yYWdlRXZlbnQoc291cmNlU3RvcmFnZUFyZWFJRCwg
a2V5LCBvbGRWYWx1ZSwgbmV3VmFsdWUsIHVybFN0cmluZyk7CiAgICAgZWxzZQogICAgICAgICBk
aXNwYXRjaExvY2FsU3RvcmFnZUV2ZW50KHNvdXJjZVN0b3JhZ2VBcmVhSUQsIGtleSwgb2xkVmFs
dWUsIG5ld1ZhbHVlLCB1cmxTdHJpbmcpOwpAQCAtMzE4LDkgKzI4Miw5IEBAIHZvaWQgU3RvcmFn
ZUFyZWFNYXA6OmNsZWFyQ2FjaGUoKQogCiB2b2lkIFN0b3JhZ2VBcmVhTWFwOjpkaXNwYXRjaFNl
c3Npb25TdG9yYWdlRXZlbnQodWludDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwgY29uc3QgU3Ry
aW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUs
IGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQogewotICAgIC8vIE5hbWVzcGFjZSBJRHMgZm9yIHNl
c3Npb24gc3RvcmFnZSBuYW1lc3BhY2VzIGFuZCBlcGhlbWVyYWwgbG9jYWwgc3RvcmFnZSBuYW1l
c3BhY2VzIGFyZSBlcXVpdmFsZW50IHRvIHdlYiBwYWdlIElEcworICAgIC8vIE5hbWVzcGFjZSBJ
RHMgZm9yIHNlc3Npb24gc3RvcmFnZSBuYW1lc3BhY2VzIGFyZSBlcXVpdmFsZW50IHRvIHdlYiBw
YWdlIElEcwogICAgIC8vIHNvIHdlIGNhbiBnZXQgdGhlIHJpZ2h0IHBhZ2UgaGVyZS4KLSAgICBX
ZWJQYWdlKiB3ZWJQYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShtYWtlT2Jq
ZWN0SWRlbnRpZmllcjxQYWdlSWRlbnRpZmllclR5cGU+KG1fc3RvcmFnZU5hbWVzcGFjZUlEKSk7
CisgICAgV2ViUGFnZSogd2ViUGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2Uo
bWFrZU9iamVjdElkZW50aWZpZXI8UGFnZUlkZW50aWZpZXJUeXBlPihtX3N0b3JhZ2VOYW1lc3Bh
Y2UtPnN0b3JhZ2VOYW1lc3BhY2VJRCgpKSk7CiAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICBy
ZXR1cm47CiAKQEAgLTM1NCw3ICszMTgsOCBAQCB2b2lkIFN0b3JhZ2VBcmVhTWFwOjpkaXNwYXRj
aExvY2FsU3RvcmFnZUV2ZW50KHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIGNvbgogCiAg
ICAgVmVjdG9yPFJlZlB0cjxGcmFtZT4+IGZyYW1lczsKIAotICAgIFBhZ2VHcm91cCYgcGFnZUdy
b3VwID0gKldlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2VHcm91cChtX3N0b3JhZ2VOYW1l
c3BhY2VJRCktPmNvcmVQYWdlR3JvdXAoKTsKKyAgICAvLyBOYW1lc3BhY2UgSURzIGZvciBsb2Nh
bCBzdG9yYWdlIG5hbWVzcGFjZXMgYXJlIGVxdWl2YWxlbnQgdG8gd2ViIHBhZ2UgZ3JvdXAgSURz
LgorICAgIFBhZ2VHcm91cCYgcGFnZUdyb3VwID0gKldlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndl
YlBhZ2VHcm91cChtX3N0b3JhZ2VOYW1lc3BhY2UtPnN0b3JhZ2VOYW1lc3BhY2VJRCgpKS0+Y29y
ZVBhZ2VHcm91cCgpOwogICAgIGNvbnN0IEhhc2hTZXQ8UGFnZSo+JiBwYWdlcyA9IHBhZ2VHcm91
cC5wYWdlcygpOwogICAgIGZvciAoSGFzaFNldDxQYWdlKj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0g
cGFnZXMuYmVnaW4oKSwgZW5kID0gcGFnZXMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAg
ICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICYoKml0KS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFt
ZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKQEAgLTM4MSwzNSArMzQ2LDM3IEBA
IHZvaWQgU3RvcmFnZUFyZWFNYXA6OmRpc3BhdGNoTG9jYWxTdG9yYWdlRXZlbnQodWludDY0X3Qg
c291cmNlU3RvcmFnZUFyZWFJRCwgY29uCiAKIHZvaWQgU3RvcmFnZUFyZWFNYXA6OmNvbm5lY3Qo
KQogewotICAgIGlmICghbV9pc0Rpc2Nvbm5lY3RlZCkKKyAgICBpZiAobV9zdG9yYWdlTWFwSUQp
CiAgICAgICAgIHJldHVybjsKIAogICAgIHN3aXRjaCAobV9zdG9yYWdlVHlwZSkgewogICAgIGNh
c2UgU3RvcmFnZVR5cGU6OkxvY2FsOgotICAgIGNhc2UgU3RvcmFnZVR5cGU6OkVwaGVtZXJhbExv
Y2FsOgogICAgIGNhc2UgU3RvcmFnZVR5cGU6OlRyYW5zaWVudExvY2FsOgogICAgICAgICBpZiAo
U2VjdXJpdHlPcmlnaW4qIHRvcExldmVsT3JpZ2luID0gbV9zdG9yYWdlTmFtZXNwYWNlLT50b3BM
ZXZlbE9yaWdpbigpKQotICAgICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJl
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlN0
b3JhZ2VNYW5hZ2VyOjpDcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VNYXAobV9zdG9yYWdlTWFw
SUQsIG1fc3RvcmFnZU5hbWVzcGFjZS0+c3RvcmFnZU5hbWVzcGFjZUlEKCksIHRvcExldmVsT3Jp
Z2luLT5kYXRhKCksIG1fc2VjdXJpdHlPcmlnaW4tPmRhdGEoKSksIDApOworICAgICAgICAgICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCku
Y29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdlclNldDo6Q29ubmVj
dFRvVHJhbnNpZW50TG9jYWxTdG9yYWdlQXJlYShtX3N0b3JhZ2VOYW1lc3BhY2UtPnNlc3Npb25J
RCgpLCBtX3N0b3JhZ2VOYW1lc3BhY2UtPnN0b3JhZ2VOYW1lc3BhY2VJRCgpLCB0b3BMZXZlbE9y
aWdpbi0+ZGF0YSgpLCBtX3NlY3VyaXR5T3JpZ2luLT5kYXRhKCkpLCBNZXNzYWdlczo6U3RvcmFn
ZU1hbmFnZXJTZXQ6OkNvbm5lY3RUb1RyYW5zaWVudExvY2FsU3RvcmFnZUFyZWE6OlJlcGx5KG1f
c3RvcmFnZU1hcElEKSwgMCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24o
KS5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdlcjo6Q3JlYXRlTG9jYWxTdG9yYWdlTWFwKG1f
c3RvcmFnZU1hcElELCBtX3N0b3JhZ2VOYW1lc3BhY2UtPnN0b3JhZ2VOYW1lc3BhY2VJRCgpLCBt
X3NlY3VyaXR5T3JpZ2luLT5kYXRhKCkpLCAwKTsKKyAgICAgICAgICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5z
ZW5kU3luYyhNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXJTZXQ6OkNvbm5lY3RUb0xvY2FsU3RvcmFn
ZUFyZWEobV9zdG9yYWdlTmFtZXNwYWNlLT5zZXNzaW9uSUQoKSwgbV9zdG9yYWdlTmFtZXNwYWNl
LT5zdG9yYWdlTmFtZXNwYWNlSUQoKSwgbV9zZWN1cml0eU9yaWdpbi0+ZGF0YSgpKSwgTWVzc2Fn
ZXM6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpDb25uZWN0VG9Mb2NhbFN0b3JhZ2VBcmVhOjpSZXBseSht
X3N0b3JhZ2VNYXBJRCksIDApOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFN0b3JhZ2VUeXBl
OjpTZXNzaW9uOgotICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6U3RvcmFnZU1h
bmFnZXI6OkNyZWF0ZVNlc3Npb25TdG9yYWdlTWFwKG1fc3RvcmFnZU1hcElELCBtX3N0b3JhZ2VO
YW1lc3BhY2UtPnN0b3JhZ2VOYW1lc3BhY2VJRCgpLCBtX3NlY3VyaXR5T3JpZ2luLT5kYXRhKCkp
LCAwKTsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpTdG9yYWdlTWFu
YWdlclNldDo6Q29ubmVjdFRvU2Vzc2lvblN0b3JhZ2VBcmVhKG1fc3RvcmFnZU5hbWVzcGFjZS0+
c2Vzc2lvbklEKCksIG1fc3RvcmFnZU5hbWVzcGFjZS0+c3RvcmFnZU5hbWVzcGFjZUlEKCksIG1f
c2VjdXJpdHlPcmlnaW4tPmRhdGEoKSksIE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdlclNldDo6Q29u
bmVjdFRvU2Vzc2lvblN0b3JhZ2VBcmVhOjpSZXBseShtX3N0b3JhZ2VNYXBJRCksIDApOwogICAg
IH0KIAotICAgIGlmIChtX3N0b3JhZ2VNYXApCi0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1l
c3NhZ2VzOjpTdG9yYWdlTWFuYWdlcjo6U2V0SXRlbXMobV9zdG9yYWdlTWFwSUQsIG1fc3RvcmFn
ZU1hcC0+aXRlbXMoKSksIDApOwotICAgIG1faXNEaXNjb25uZWN0ZWQgPSBmYWxzZTsKKyAgICBp
ZiAobV9zdG9yYWdlTWFwSUQpCisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnJlZ2lz
dGVyU3RvcmFnZUFyZWFNYXAoKnRoaXMpOwogfQogCiB2b2lkIFN0b3JhZ2VBcmVhTWFwOjpkaXNj
b25uZWN0KCkKIHsKLSAgICBtX2lzRGlzY29ubmVjdGVkID0gdHJ1ZTsKLSAgICBpZiAobV9zdG9y
YWdlVHlwZSA9PSBTdG9yYWdlVHlwZTo6U2Vzc2lvbiAmJiBtX3N0b3JhZ2VNYXApIHsKLSAgICAg
ICAgbV9wZW5kaW5nVmFsdWVDaGFuZ2VzLmNsZWFyKCk7Ci0gICAgICAgIG1faGFzUGVuZGluZ0Ns
ZWFyID0gZmFsc2U7Ci0gICAgfSBlbHNlCi0gICAgICAgIHJlc2V0VmFsdWVzKCk7CisgICAgaWYg
KCFtX3N0b3JhZ2VNYXBJRCkKKyAgICAgICAgcmV0dXJuOworCisgICAgcmVzZXRWYWx1ZXMoKTsK
KyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS51bnJlZ2lzdGVyU3RvcmFnZUFyZWFNYXAoKnRo
aXMpOworCisgICAgaWYgKGF1dG8gbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uID0gV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkuZXhpc3RpbmdOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKSkKKyAgICAg
ICAgbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6
U3RvcmFnZU1hbmFnZXJTZXQ6OkRpc2Nvbm5lY3RGcm9tU3RvcmFnZUFyZWEobV9zdG9yYWdlTWFw
SUQpLCAwKTsKKworICAgIG1fc3RvcmFnZU1hcElEID0gMDsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9T
dG9yYWdlQXJlYU1hcC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3Rv
cmFnZUFyZWFNYXAuaAppbmRleCBmYjkxYmM5MDU0MjVmYzgxYzZhNDgzNTI3NGFiY2MwYzE3ZGE0
OWM2Li40NGFkMDZmOTFiNTVjN2Y0MWU2ZDBmMjg4N2M5ZWMxN2Q1MmE3NDFkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmgK
QEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlIDx3dGYvSGFzaENvdW50ZWRTZXQuaD4KICNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRl
IDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTZWN1cml0eU9y
aWdpbjsKQEAgLTQzLDcgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBTdG9yYWdl
QXJlYUltcGw7CiBjbGFzcyBTdG9yYWdlTmFtZXNwYWNlSW1wbDsKIAotY2xhc3MgU3RvcmFnZUFy
ZWFNYXAgOiBwdWJsaWMgUmVmQ291bnRlZDxTdG9yYWdlQXJlYU1hcD4sIHByaXZhdGUgSVBDOjpN
ZXNzYWdlUmVjZWl2ZXIgeworY2xhc3MgU3RvcmFnZUFyZWFNYXAgOiBwdWJsaWMgUmVmQ291bnRl
ZDxTdG9yYWdlQXJlYU1hcD4sIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHB1YmxpYyBD
YW5NYWtlV2Vha1B0cjxTdG9yYWdlQXJlYU1hcD4gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8
U3RvcmFnZUFyZWFNYXA+IGNyZWF0ZShTdG9yYWdlTmFtZXNwYWNlSW1wbCosIFJlZjxXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbj4mJik7CiAgICAgflN0b3JhZ2VBcmVhTWFwKCk7CkBAIC01Nyw3ICs1
OCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZUl0ZW0oV2ViQ29yZTo6RnJhbWUqIHNvdXJj
ZUZyYW1lLCBTdG9yYWdlQXJlYUltcGwqIHNvdXJjZUFyZWEsIGNvbnN0IFN0cmluZyYga2V5KTsK
ICAgICB2b2lkIGNsZWFyKFdlYkNvcmU6OkZyYW1lKiBzb3VyY2VGcmFtZSwgU3RvcmFnZUFyZWFJ
bXBsKiBzb3VyY2VBcmVhKTsKICAgICBib29sIGNvbnRhaW5zKGNvbnN0IFN0cmluZyYga2V5KTsK
LSAgICBib29sIHByZXdhcm0oKTsKIAogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAg
dm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBv
dmVycmlkZTsKQEAgLTcxLDcgKzcxLDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBTdG9yYWdl
QXJlYU1hcChTdG9yYWdlTmFtZXNwYWNlSW1wbCosIFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bj4mJik7CiAKLSAgICB2b2lkIGRpZEdldFZhbHVlcyh1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCk7
CiAgICAgdm9pZCBkaWRTZXRJdGVtKHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkLCBjb25zdCBTdHJp
bmcmIGtleSwgYm9vbCBxdW90YUVycm9yKTsKICAgICB2b2lkIGRpZFJlbW92ZUl0ZW0odWludDY0
X3Qgc3RvcmFnZU1hcFNlZWQsIGNvbnN0IFN0cmluZyYga2V5KTsKICAgICB2b2lkIGRpZENsZWFy
KHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkKTsKQEAgLTg4LDEyICs4NywxMSBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50KHVpbnQ2NF90IHNvdXJjZVN0b3Jh
Z2VBcmVhSUQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25z
dCBTdHJpbmcmIG5ld1ZhbHVlLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZyk7CiAgICAgdm9pZCBk
aXNwYXRjaExvY2FsU3RvcmFnZUV2ZW50KHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIGNv
bnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5l
d1ZhbHVlLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZyk7CiAKLSAgICBSZWY8U3RvcmFnZU5hbWVz
cGFjZUltcGw+IG1fc3RvcmFnZU5hbWVzcGFjZTsKKyAgICBTdG9yYWdlTmFtZXNwYWNlSW1wbCog
bV9zdG9yYWdlTmFtZXNwYWNlOwogCiAgICAgdWludDY0X3QgbV9zdG9yYWdlTWFwSUQ7CiAKICAg
ICBXZWJDb3JlOjpTdG9yYWdlVHlwZSBtX3N0b3JhZ2VUeXBlOwotICAgIHVpbnQ2NF90IG1fc3Rv
cmFnZU5hbWVzcGFjZUlEOwogICAgIHVuc2lnbmVkIG1fcXVvdGFJbkJ5dGVzOwogICAgIFJlZjxX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4gbV9zZWN1cml0eU9yaWdpbjsKIApAQCAtMTAxLDExICs5
OSw3IEBAIHByaXZhdGU6CiAKICAgICB1aW50NjRfdCBtX2N1cnJlbnRTZWVkOwogICAgIGJvb2wg
bV9oYXNQZW5kaW5nQ2xlYXI7Ci0gICAgYm9vbCBtX2hhc1BlbmRpbmdHZXRWYWx1ZXM7CiAgICAg
SGFzaENvdW50ZWRTZXQ8U3RyaW5nPiBtX3BlbmRpbmdWYWx1ZUNoYW5nZXM7Ci0KLSAgICBib29s
IG1faXNEaXNjb25uZWN0ZWQgeyB0cnVlIH07Ci0gICAgYm9vbCBtX2RpZFByZXdhcm0geyBmYWxz
ZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLm1lc3NhZ2Vz
LmluCmluZGV4IGIxNTkwNGYxNmJlYzE0MmIxMGI0ODAwZDEwNjQ1MDA5MzM4MzAwZDUuLjdhNzVk
MjEwZmQ4MzI1ZjJiNTFhODljZTNlNTQyZDQ4MDM5MDk2YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLm1l
c3NhZ2VzLmluCkBAIC0yMSw3ICsyMSw2IEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIG1lc3NhZ2VzIC0+
IFN0b3JhZ2VBcmVhTWFwIHsKLSAgICBEaWRHZXRWYWx1ZXModWludDY0X3Qgc3RvcmFnZU1hcFNl
ZWQpCiAgICAgRGlkU2V0SXRlbSh1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCwgU3RyaW5nIGtleSwg
Ym9vbCBxdW90YUV4Y2VwdGlvbikKICAgICBEaWRSZW1vdmVJdGVtKHVpbnQ2NF90IHN0b3JhZ2VN
YXBTZWVkLCBTdHJpbmcga2V5KQogICAgIERpZENsZWFyKHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVk
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFn
ZU5hbWVzcGFjZUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2Uv
U3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCmluZGV4IGY1OWM3OWI3ZmEyYmUyZmM5YTcyMDUyYzFi
OWU1M2NiNmEzMjNmZDAuLjc0Mjk2MTg5MzI4ODRlZTI1NDI5OGZiMzM1YzBlOGMzMjQwOTc2ZWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VO
YW1lc3BhY2VJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFn
ZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUg
IlN0b3JhZ2VBcmVhSW1wbC5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhTWFwLmgiCisjaW5jbHVk
ZSAiU3RvcmFnZU1hbmFnZXJTZXRNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNp
bmNsdWRlICJXZWJQYWdlR3JvdXBQcm94eS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKQEAg
LTQwLDMxICs0MSwyNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAotUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6
Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgdW5zaWdu
ZWQgcXVvdGFJbkJ5dGVzKQorUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNw
YWNlSW1wbDo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmll
ciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7Ci0g
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5cGU6
OlNlc3Npb24sIGlkZW50aWZpZXIsIG51bGxwdHIsIHF1b3RhSW5CeXRlcykpOworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0b3JhZ2VUeXBlOjpTZXNzaW9u
LCBpZGVudGlmaWVyLCBudWxscHRyLCBxdW90YUluQnl0ZXMsIHNlc3Npb25JRCkpOwogfQogCi1S
ZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVFcGhl
bWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgdW5zaWduZWQg
cXVvdGFJbkJ5dGVzKQorUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNl
SW1wbDo6Y3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVu
c2lnbmVkIHF1b3RhSW5CeXRlcywgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogewotICAgIHJl
dHVybiBjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoaWRlbnRpZmllciwgcXVvdGFJbkJ5dGVz
LCBJc0VwaGVtZXJhbDo6WWVzKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9yYWdlTmFt
ZXNwYWNlSW1wbChTdG9yYWdlVHlwZTo6TG9jYWwsIGlkZW50aWZpZXIsIG51bGxwdHIsIHF1b3Rh
SW5CeXRlcywgc2Vzc2lvbklEKSk7CiB9CiAKLVJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3Rv
cmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBp
ZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMsIElzRXBoZW1lcmFsIGlzRXBoZW1lcmFs
KQorUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRl
VHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luJiB0b3BMZXZlbE9yaWdpbiwgdWludDY0X3QgcXVvdGFJbkJ5dGVz
LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U3RvcmFnZU5hbWVzcGFjZUltcGwoaXNFcGhlbWVyYWwgPT0gSXNFcGhlbWVyYWw6OlllcyA/IFN0
b3JhZ2VUeXBlOjpFcGhlbWVyYWxMb2NhbCA6IFN0b3JhZ2VUeXBlOjpMb2NhbCwgaWRlbnRpZmll
ciwgbnVsbHB0ciwgcXVvdGFJbkJ5dGVzKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3Rv
cmFnZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5cGU6OlRyYW5zaWVudExvY2FsLCBpZGVudGlmaWVy
LCAmdG9wTGV2ZWxPcmlnaW4sIHF1b3RhSW5CeXRlcywgc2Vzc2lvbklEKSk7CiB9CiAKLVJlZjxT
dG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVRyYW5zaWVu
dExvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbiYgdG9wTGV2ZWxPcmlnaW4sIHVpbnQ2NF90IHF1b3RhSW5CeXRlcykKLXsKLSAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChTdG9yYWdlVHlwZTo6
VHJhbnNpZW50TG9jYWwsIGlkZW50aWZpZXIsICZ0b3BMZXZlbE9yaWdpbiwgcXVvdGFJbkJ5dGVz
KSk7Ci19Ci0KLVN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpTdG9yYWdlTmFtZXNwYWNlSW1wbChXZWJD
b3JlOjpTdG9yYWdlVHlwZSBzdG9yYWdlVHlwZSwgdWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlE
LCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiogdG9wTGV2ZWxPcmlnaW4sIHVuc2lnbmVkIHF1b3Rh
SW5CeXRlcykKK1N0b3JhZ2VOYW1lc3BhY2VJbXBsOjpTdG9yYWdlTmFtZXNwYWNlSW1wbChXZWJD
b3JlOjpTdG9yYWdlVHlwZSBzdG9yYWdlVHlwZSwgdWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlE
LCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiogdG9wTGV2ZWxPcmlnaW4sIHVuc2lnbmVkIHF1b3Rh
SW5CeXRlcywgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgIDogbV9zdG9yYWdlVHlwZShz
dG9yYWdlVHlwZSkKICAgICAsIG1fc3RvcmFnZU5hbWVzcGFjZUlEKHN0b3JhZ2VOYW1lc3BhY2VJ
RCkKICAgICAsIG1fdG9wTGV2ZWxPcmlnaW4odG9wTGV2ZWxPcmlnaW4pCiAgICAgLCBtX3F1b3Rh
SW5CeXRlcyhxdW90YUluQnl0ZXMpCisgICAgLCBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCiB7CiB9
CiAKQEAgLTc3LDEzICs3NCwxNCBAQCB2b2lkIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpkaWREZXN0
cm95U3RvcmFnZUFyZWFNYXAoU3RvcmFnZUFyZWFNYXAmIG1hcCkKICAgICBtX3N0b3JhZ2VBcmVh
TWFwcy5yZW1vdmUobWFwLnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpKTsKIH0KIAotUmVmPFN0b3Jh
Z2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6c3RvcmFnZUFyZWEoY29uc3QgU2VjdXJpdHlP
cmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbikKK1JlZjxTdG9yYWdlQXJlYT4gU3RvcmFnZU5hbWVz
cGFjZUltcGw6OnN0b3JhZ2VBcmVhKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlP
cmlnaW5EYXRhKQogewogICAgIFJlZlB0cjxTdG9yYWdlQXJlYU1hcD4gbWFwOwogCi0gICAgYXV0
byYgc2xvdCA9IG1fc3RvcmFnZUFyZWFNYXBzLmFkZChzZWN1cml0eU9yaWdpbiwgbnVsbHB0ciku
aXRlcmF0b3ItPnZhbHVlOworICAgIGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBzZWN1cml0eU9yaWdp
bkRhdGEuc2VjdXJpdHlPcmlnaW4oKTsKKyAgICBhdXRvJiBzbG90ID0gbV9zdG9yYWdlQXJlYU1h
cHMuYWRkKHNlY3VyaXR5T3JpZ2luLT5kYXRhKCksIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsK
ICAgICBpZiAoIXNsb3QpIHsKLSAgICAgICAgbWFwID0gU3RvcmFnZUFyZWFNYXA6OmNyZWF0ZSh0
aGlzLCBzZWN1cml0eU9yaWdpbi5zZWN1cml0eU9yaWdpbigpKTsKKyAgICAgICAgbWFwID0gU3Rv
cmFnZUFyZWFNYXA6OmNyZWF0ZSh0aGlzLCBXVEZNb3ZlKHNlY3VyaXR5T3JpZ2luKSk7CiAgICAg
ICAgIHNsb3QgPSBtYXAuZ2V0KCk7CiAgICAgfSBlbHNlCiAgICAgICAgIG1hcCA9IHNsb3Q7CkBA
IC05NSwxMyArOTMsMTcgQEAgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IFN0b3JhZ2VOYW1lc3BhY2VJ
bXBsOjpjb3B5KFBhZ2UqIG5ld1BhZ2UpCiB7CiAgICAgQVNTRVJUKG1fc3RvcmFnZU5hbWVzcGFj
ZUlEKTsKIAotICAgIGlmIChtX3N0b3JhZ2VUeXBlID09IFN0b3JhZ2VUeXBlOjpTZXNzaW9uKQot
ICAgICAgICByZXR1cm4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoV2ViUGFnZTo6ZnJv
bUNvcmVQYWdlKG5ld1BhZ2UpLT5wYWdlSUQoKS50b1VJbnQ2NCgpLCBtX3F1b3RhSW5CeXRlcyk7
CisgICAgaWYgKGF1dG8gbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uID0gV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuZXhpc3RpbmdOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKSkKKyAgICAgICAgbmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6U3RvcmFn
ZU1hbmFnZXJTZXQ6OkNsb25lU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UobmV3UGFnZS0+c2Vzc2lv
bklEKCksIG1fc3RvcmFnZU5hbWVzcGFjZUlELCBXZWJQYWdlOjpmcm9tQ29yZVBhZ2UobmV3UGFn
ZSktPnBhZ2VJRCgpLnRvVUludDY0KCkpLCAwKTsKIAotICAgIEFTU0VSVChtX3N0b3JhZ2VUeXBl
ID09IFN0b3JhZ2VUeXBlOjpFcGhlbWVyYWxMb2NhbCk7Ci0gICAgYXV0byBuZXdOYW1lc3BhY2Ug
PSBhZG9wdFJlZigqbmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKG1fc3RvcmFnZVR5cGUsIG1fc3Rv
cmFnZU5hbWVzcGFjZUlELCBtX3RvcExldmVsT3JpZ2luLmdldCgpLCBtX3F1b3RhSW5CeXRlcykp
OworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKG1fc3RvcmFn
ZVR5cGUsIFdlYlBhZ2U6OmZyb21Db3JlUGFnZShuZXdQYWdlKS0+cGFnZUlEKCkudG9VSW50NjQo
KSwgbV90b3BMZXZlbE9yaWdpbi5nZXQoKSwgbV9xdW90YUluQnl0ZXMsIG5ld1BhZ2UtPnNlc3Np
b25JRCgpKSk7Cit9CiAKLSAgICByZXR1cm4gbmV3TmFtZXNwYWNlOwordm9pZCBTdG9yYWdlTmFt
ZXNwYWNlSW1wbDo6c2V0U2Vzc2lvbklERm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQpCit7CisgICAgbV9zZXNzaW9uSUQgPSBzZXNzaW9uSUQ7CisgICAgZm9yIChhdXRvIHN0b3Jh
Z2VBcmVhTWFwIDogbV9zdG9yYWdlQXJlYU1hcHMudmFsdWVzKCkpCisgICAgICAgIHN0b3JhZ2VB
cmVhTWFwLT5kaXNjb25uZWN0KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFj
ZUltcGwuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1l
c3BhY2VJbXBsLmgKaW5kZXggZWE2ZDU1MThjZGZjOTlkYzNhMDFkODU3ZTM2NjM2NTBmOWI2NjZh
Mi4uNWVlODllN2E5OTAxZWRiYTg4OTUzNDU2NDUyYjYyNWZlZWQ3NmJjZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNw
YWNlSW1wbC5oCkBAIC0zOSwxMiArMzksOSBAQCBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBTdG9y
YWdlTmFtZXNwYWNlSW1wbCA6IHB1YmxpYyBXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlIHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVTZXNzaW9u
U3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0
ZXMpOwotICAgIHN0YXRpYyBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZUVwaGVtZXJh
bExvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90
YUluQnl0ZXMpOwotCi0gICAgZW51bSBjbGFzcyBJc0VwaGVtZXJhbCA6IGJvb2wgeyBObywgWWVz
IH07Ci0gICAgc3RhdGljIFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRlTG9jYWxTdG9y
YWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcywg
SXNFcGhlbWVyYWwgaXNFcGhlbWVyYWwpOwotICAgIHN0YXRpYyBSZWY8U3RvcmFnZU5hbWVzcGFj
ZUltcGw+IGNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVu
dGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgdG9wTGV2ZWxPcmlnaW4sIHVpbnQ2NF90
IHF1b3RhSW5CeXRlcyk7CisgICAgc3RhdGljIFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3Jl
YXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgdW5zaWduZWQg
cXVvdGFJbkJ5dGVzLCBQQUw6OlNlc3Npb25JRCk7CisgICAgc3RhdGljIFJlZjxTdG9yYWdlTmFt
ZXNwYWNlSW1wbD4gY3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZp
ZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcywgUEFMOjpTZXNzaW9uSUQpOworICAgIHN0YXRpYyBS
ZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVz
cGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgdG9wTGV2
ZWxPcmlnaW4sIHVpbnQ2NF90IHF1b3RhSW5CeXRlcywgUEFMOjpTZXNzaW9uSUQpOwogCiAgICAg
dmlydHVhbCB+U3RvcmFnZU5hbWVzcGFjZUltcGwoKTsKIApAQCAtNTIsMTEgKzQ5LDE0IEBAIHB1
YmxpYzoKICAgICB1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQoKSBjb25zdCB7IHJldHVybiBt
X3N0b3JhZ2VOYW1lc3BhY2VJRDsgfQogICAgIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiB0b3BM
ZXZlbE9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fdG9wTGV2ZWxPcmlnaW4uZ2V0KCk7IH0KICAg
ICB1bnNpZ25lZCBxdW90YUluQnl0ZXMoKSBjb25zdCB7IHJldHVybiBtX3F1b3RhSW5CeXRlczsg
fQorICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1fc2Vzc2lvbklEOyB9CiAKICAgICB2b2lkIGRpZERlc3Ryb3lTdG9yYWdlQXJlYU1hcChTdG9y
YWdlQXJlYU1hcCYpOwogCisgICAgdm9pZCBzZXRTZXNzaW9uSURGb3JUZXN0aW5nKFBBTDo6U2Vz
c2lvbklEKSBvdmVycmlkZTsKKwogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBTdG9yYWdlTmFtZXNw
YWNlSW1wbChXZWJDb3JlOjpTdG9yYWdlVHlwZSwgdWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlE
LCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiogdG9wTGV2ZWxPcmlnaW4sIHVuc2lnbmVkIHF1b3Rh
SW5CeXRlcyk7CisgICAgZXhwbGljaXQgU3RvcmFnZU5hbWVzcGFjZUltcGwoV2ViQ29yZTo6U3Rv
cmFnZVR5cGUsIHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW4qIHRvcExldmVsT3JpZ2luLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMsIFBBTDo6U2Vzc2lv
bklEKTsKIAogICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlQXJlYT4gc3RvcmFnZUFyZWEoY29uc3Qg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJikgb3ZlcnJpZGU7CiAgICAgUmVmPFdlYkNvcmU6
OlN0b3JhZ2VOYW1lc3BhY2U+IGNvcHkoV2ViQ29yZTo6UGFnZSopIG92ZXJyaWRlOwpAQCAtNjks
NyArNjksOSBAQCBwcml2YXRlOgogCiAgICAgY29uc3QgdW5zaWduZWQgbV9xdW90YUluQnl0ZXM7
CiAKLSAgICBIYXNoTWFwPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSwgU3RvcmFnZUFyZWFN
YXAqPiBtX3N0b3JhZ2VBcmVhTWFwczsKKyAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsK
KworICAgIEhhc2hNYXA8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhLCBSZWZQdHI8U3RvcmFn
ZUFyZWFNYXA+PiBtX3N0b3JhZ2VBcmVhTWFwczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3Rv
cmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJT
dG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKaW5kZXggODhhOTNjNWQ1MDQy
YTEyNjM0MTFjNjg0YmVkYmQ1MDZlMzRiNWEwZS4uOWU3MjE2MzFiM2I0YmQ3MmVjMDMzZTc5YmFl
MGQzNzUyNTRiYWMwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0
b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCkBA
IC02NywyMiArNjcsMTcgQEAgV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjp+V2ViU3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyKCkKIAogUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IFdl
YlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2Uo
UGFnZSYgcGFnZSwgdW5zaWduZWQgcXVvdGEpCiB7Ci0gICAgcmV0dXJuIFN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShXZWJQYWdlOjpmcm9tQ29yZVBh
Z2UoJnBhZ2UpLT5wYWdlSUQoKS50b1VJbnQ2NCgpLCBxdW90YSk7CisgICAgcmV0dXJuIFN0b3Jh
Z2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShXZWJQYWdlOjpm
cm9tQ29yZVBhZ2UoJnBhZ2UpLT5wYWdlSUQoKS50b1VJbnQ2NCgpLCBxdW90YSwgcGFnZS5zZXNz
aW9uSUQoKSk7CiB9CiAKLVJlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdl
TmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShQ
YWdlJiBwYWdlLCB1bnNpZ25lZCBxdW90YSkKK1JlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNl
PiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFj
ZSh1bnNpZ25lZCBxdW90YSwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogewotICAgIHJldHVy
biBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNw
YWNlKFdlYlBhZ2U6OmZyb21Db3JlUGFnZSgmcGFnZSktPnBhZ2VJRCgpLnRvVUludDY0KCksIHF1
b3RhKTsKKyAgICByZXR1cm4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZUxvY2FsU3RvcmFn
ZU5hbWVzcGFjZShtX2lkZW50aWZpZXIsIHF1b3RhLCBzZXNzaW9uSUQpOwogfQogCi1SZWY8V2Vi
Q29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVh
dGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEpCitSZWY8V2ViQ29yZTo6U3Rv
cmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVUcmFuc2ll
bnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHRvcExldmVs
T3JpZ2luLCB1bnNpZ25lZCBxdW90YSwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogewotICAg
IHJldHVybiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNl
KG1faWRlbnRpZmllciwgcXVvdGEsIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpJc0VwaGVtZXJhbDo6
Tm8pOwotfQotCi1SZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyOjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW4mIHRvcExldmVsT3JpZ2luLCB1bnNpZ25lZCBxdW90YSkKLXsKLSAg
ICByZXR1cm4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFn
ZU5hbWVzcGFjZShtX2lkZW50aWZpZXIsIHRvcExldmVsT3JpZ2luLCBxdW90YSk7CisgICAgcmV0
dXJuIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1l
c3BhY2UobV9pZGVudGlmaWVyLCB0b3BMZXZlbE9yaWdpbiwgcXVvdGEsIHNlc3Npb25JRCk7CiB9
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1dl
YlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmgKaW5kZXggM2NlNmRiOWYwNjhl
ODAzODk2ODExNGVmOTlhYzI1YWNlMDQxMWYzNC4uMmFmOWJmNmUzMjVkNDFlOTdiMzcxMDkyYzQx
NzQ1ZjE2ZjlmNDZjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0
b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmgKQEAgLTM4
LDkgKzM4LDggQEAgcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJTdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXIodWludDY0X3QgaWRlbnRpZmllcik7CiAKICAgICBSZWY8V2ViQ29yZTo6U3RvcmFnZU5h
bWVzcGFjZT4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6UGFnZSYsIHVu
c2lnbmVkIHF1b3RhKSBvdmVycmlkZTsKLSAgICBSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFj
ZT4gY3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlBhZ2UmLCB1
bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7Ci0gICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3Bh
Y2U+IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7
Ci0gICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVRyYW5zaWVudExvY2Fs
U3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkIHF1b3Rh
KSBvdmVycmlkZTsKKyAgICBSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlTG9j
YWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkIHF1b3RhLCBQQUw6OlNlc3Npb25JRCkgb3ZlcnJp
ZGU7CisJUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVRyYW5zaWVudExvY2Fs
U3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkIHF1b3Rh
LCBQQUw6OlNlc3Npb25JRCkgb3ZlcnJpZGU7CiAKICAgICBjb25zdCB1aW50NjRfdCBtX2lkZW50
aWZpZXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3Jh
Z2VBcmVhSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFJ
bXBsLmNwcAppbmRleCA3ZGE1YzcyZTU4ZWY3M2QxOTZkMTY3MzA3NzVhMzdiYWE1NDc0Y2FkLi40
MmNjNGRiZDAzOWVjNzM1OTJjNDc2MGZjYWUxYmI4ZDY4M2RjOTk0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNwcApAQCAtMjkyLDQgKzI5Miwy
MiBAQCB2b2lkIFN0b3JhZ2VBcmVhSW1wbDo6ZGlzcGF0Y2hTdG9yYWdlRXZlbnQoY29uc3QgU3Ry
aW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVgogICAgICAgICBTdG9yYWdlRXZlbnREaXNwYXRj
aGVyOjpkaXNwYXRjaFNlc3Npb25TdG9yYWdlRXZlbnRzKGtleSwgb2xkVmFsdWUsIG5ld1ZhbHVl
LCBtX3NlY3VyaXR5T3JpZ2luLCBzb3VyY2VGcmFtZSk7CiB9CiAKK3ZvaWQgU3RvcmFnZUFyZWFJ
bXBsOjpzZXNzaW9uQ2hhbmdlZChib29sIGlzTmV3U2Vzc2lvblBlcnNpc3RlbnQpCit7CisgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIHVuc2lnbmVkIHF1b3RhID0gbV9zdG9yYWdl
TWFwLT5xdW90YSgpOworICAgIG1fc3RvcmFnZU1hcCA9IFN0b3JhZ2VNYXA6OmNyZWF0ZShxdW90
YSk7CisKKyAgICBpZiAoaXNOZXdTZXNzaW9uUGVyc2lzdGVudCAmJiAhbV9zdG9yYWdlQXJlYVN5
bmMgJiYgbV9zdG9yYWdlU3luY01hbmFnZXIpIHsKKyAgICAgICAgbV9zdG9yYWdlQXJlYVN5bmMg
PSBTdG9yYWdlQXJlYVN5bmM6OmNyZWF0ZShtX3N0b3JhZ2VTeW5jTWFuYWdlci5nZXQoKSwgKnRo
aXMsIG1fc2VjdXJpdHlPcmlnaW4uZGF0YWJhc2VJZGVudGlmaWVyKCkpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgaWYgKCFpc05ld1Nlc3Npb25QZXJzaXN0ZW50ICYmIG1fc3RvcmFn
ZUFyZWFTeW5jKSB7CisgICAgICAgIG1fc3RvcmFnZUFyZWFTeW5jLT5zY2hlZHVsZUZpbmFsU3lu
YygpOworICAgICAgICBtX3N0b3JhZ2VBcmVhU3luYyA9IG51bGxwdHI7CisgICAgfQorfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0
b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3Rv
cmFnZUFyZWFJbXBsLmgKaW5kZXggNThmY2JhMDM1MDA0YmE2M2NjODg4YThkYjI5MTAwMTliYzhl
N2Q5MS4uYjIwYmVmOTUzMzdkODQ0ZGIzYzIzZjgwMWQwZGI5MzY1NDUwZTI5ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuaApAQCAtNjEsOCArNjEs
NiBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZWNyZW1lbnRBY2Nlc3NDb3VudCgpIG92ZXJyaWRlOwog
ICAgIHZvaWQgY2xvc2VEYXRhYmFzZUlmSWRsZSgpIG92ZXJyaWRlOwogCi0gICAgY29uc3QgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbigpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fc2VjdXJpdHlPcmlnaW47IH0KLQogICAgIFJlZjxTdG9yYWdlQXJlYUltcGw+
IGNvcHkoKTsKICAgICB2b2lkIGNsb3NlKCk7CiAKQEAgLTc0LDYgKzcyLDggQEAgcHVibGljOgog
CiAgICAgdm9pZCBzeW5jKCk7CiAKKyAgICB2b2lkIHNlc3Npb25DaGFuZ2VkKGJvb2wgaXNOZXdT
ZXNzaW9uUGVyc2lzdGVudCk7CisKIHByaXZhdGU6CiAgICAgU3RvcmFnZUFyZWFJbXBsKFdlYkNv
cmU6OlN0b3JhZ2VUeXBlLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBSZWZQ
dHI8V2ViQ29yZTo6U3RvcmFnZVN5bmNNYW5hZ2VyPiYmLCB1bnNpZ25lZCBxdW90YSk7CiAgICAg
ZXhwbGljaXQgU3RvcmFnZUFyZWFJbXBsKGNvbnN0IFN0b3JhZ2VBcmVhSW1wbCYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5oIGIvU291
cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5oCmluZGV4IGMwMDg3NTNm
MzQ0OWRhMzRjNTYzZGNiMTY1YTQyNTQ2MzcwMDdhMjcuLjEwOWM3Y2YzNDZjMzVmZDBjZDAxNzg2
YmI0OTBkZTA4YmQzMDk2ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFn
ZS9TdG9yYWdlQXJlYVN5bmMuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3Rv
cmFnZUFyZWFTeW5jLmgKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNs
YXNzIFN0b3JhZ2VBcmVhSW1wbDsKIAotY2xhc3MgU3RvcmFnZUFyZWFTeW5jIDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPFN0b3JhZ2VBcmVhU3luYz4geworY2xhc3MgU3RvcmFnZUFyZWFT
eW5jIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFN0b3JhZ2VBcmVhU3luYywgV1RGOjpE
ZXN0cnVjdGlvblRocmVhZDo6TWFpbj4gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8U3RvcmFn
ZUFyZWFTeW5jPiBjcmVhdGUoUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VTeW5jTWFuYWdlcj4mJiwg
UmVmPFN0b3JhZ2VBcmVhSW1wbD4mJiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkZW50aWZpZXIp
OwogICAgIH5TdG9yYWdlQXJlYVN5bmMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCmluZGV4IDRhOTRhMWQ4NWNlY2ExZTNj
NjNiYzcyYTg2YWIwNmFmMGUxODZkNWQuLjczN2Y1YzA5NzIxZDJiYmRiYzg2NTc2MWM5ZDExOGM4
MWRmNjEzNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdl
TmFtZXNwYWNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3Jh
Z2VOYW1lc3BhY2VJbXBsLmNwcApAQCAtNDUsMTcgKzQ1LDEyIEBAIHN0YXRpYyBIYXNoTWFwPFN0
cmluZywgU3RvcmFnZU5hbWVzcGFjZUltcGwqPiYgbG9jYWxTdG9yYWdlTmFtZXNwYWNlTWFwKCkK
ICAgICByZXR1cm4gbG9jYWxTdG9yYWdlTmFtZXNwYWNlTWFwOwogfQogCi1SZWY8U3RvcmFnZU5h
bWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5h
bWVzcGFjZSh1bnNpZ25lZCBxdW90YSkKK1JlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFn
ZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkIHF1
b3RhLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5cGU6OlNlc3Npb24sIFN0cmluZygpLCBx
dW90YSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0
b3JhZ2VUeXBlOjpTZXNzaW9uLCBTdHJpbmcoKSwgcXVvdGEsIHNlc3Npb25JRCkpOwogfQogCi1S
ZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVFcGhl
bWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEpCi17Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5cGU6OkVwaGVtZXJh
bExvY2FsLCBTdHJpbmcoKSwgcXVvdGEpKTsKLX0KLQotUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBs
PiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Z2V0T3JDcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2Uo
Y29uc3QgU3RyaW5nJiBkYXRhYmFzZVBhdGgsIHVuc2lnbmVkIHF1b3RhKQorUmVmPFN0b3JhZ2VO
YW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Z2V0T3JDcmVhdGVMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UoY29uc3QgU3RyaW5nJiBkYXRhYmFzZVBhdGgsIHVuc2lnbmVkIHF1b3RhLCBQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7CiAgICAgQVNTRVJUKCFkYXRhYmFzZVBhdGguaXNO
dWxsKCkpOwogCkBAIC02MywxOCArNTgsMTkgQEAgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBT
dG9yYWdlTmFtZXNwYWNlSW1wbDo6Z2V0T3JDcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UKICAg
ICBpZiAoc2xvdCkKICAgICAgICAgcmV0dXJuICpzbG90OwogCi0gICAgUmVmPFN0b3JhZ2VOYW1l
c3BhY2VJbXBsPiBzdG9yYWdlTmFtZXNwYWNlID0gYWRvcHRSZWYoKm5ldyBTdG9yYWdlTmFtZXNw
YWNlSW1wbChTdG9yYWdlVHlwZTo6TG9jYWwsIGRhdGFiYXNlUGF0aCwgcXVvdGEpKTsKKyAgICBS
ZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IHN0b3JhZ2VOYW1lc3BhY2UgPSBhZG9wdFJlZigqbmV3
IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0b3JhZ2VUeXBlOjpMb2NhbCwgZGF0YWJhc2VQYXRoLCBx
dW90YSwgc2Vzc2lvbklEKSk7CiAgICAgc2xvdCA9IHN0b3JhZ2VOYW1lc3BhY2UucHRyKCk7CiAK
ICAgICByZXR1cm4gc3RvcmFnZU5hbWVzcGFjZTsKIH0KIAotU3RvcmFnZU5hbWVzcGFjZUltcGw6
OlN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlLCBjb25zdCBTdHJp
bmcmIHBhdGgsIHVuc2lnbmVkIHF1b3RhKQorU3RvcmFnZU5hbWVzcGFjZUltcGw6OlN0b3JhZ2VO
YW1lc3BhY2VJbXBsKFN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlLCBjb25zdCBTdHJpbmcmIHBhdGgs
IHVuc2lnbmVkIHF1b3RhLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAgOiBtX3N0b3Jh
Z2VUeXBlKHN0b3JhZ2VUeXBlKQogICAgICwgbV9wYXRoKHBhdGguaXNvbGF0ZWRDb3B5KCkpCiAg
ICAgLCBtX3N5bmNNYW5hZ2VyKDApCiAgICAgLCBtX3F1b3RhKHF1b3RhKQogICAgICwgbV9pc1No
dXRkb3duKGZhbHNlKQorICAgICwgbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQogewogICAgIGlmIChp
c1BlcnNpc3RlbnRMb2NhbFN0b3JhZ2UobV9zdG9yYWdlVHlwZSkgJiYgIW1fcGF0aC5pc0VtcHR5
KCkpCiAgICAgICAgIG1fc3luY01hbmFnZXIgPSBTdG9yYWdlU3luY01hbmFnZXI6OmNyZWF0ZSht
X3BhdGgpOwpAQCAtOTcsOSArOTMsOSBAQCBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gU3RvcmFnZU5h
bWVzcGFjZUltcGw6OmNvcHkoUGFnZSopCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
ICAgICBBU1NFUlQoIW1faXNTaHV0ZG93bik7Ci0gICAgQVNTRVJUKG1fc3RvcmFnZVR5cGUgPT0g
U3RvcmFnZVR5cGU6OlNlc3Npb24gfHwgbV9zdG9yYWdlVHlwZSA9PSBTdG9yYWdlVHlwZTo6RXBo
ZW1lcmFsTG9jYWwpOworICAgIEFTU0VSVChtX3N0b3JhZ2VUeXBlID09IFN0b3JhZ2VUeXBlOjpT
ZXNzaW9uKTsKIAotICAgIGF1dG8gbmV3TmFtZXNwYWNlID0gYWRvcHRSZWYoKm5ldyBTdG9yYWdl
TmFtZXNwYWNlSW1wbChtX3N0b3JhZ2VUeXBlLCBtX3BhdGgsIG1fcXVvdGEpKTsKKyAgICBhdXRv
IG5ld05hbWVzcGFjZSA9IGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwobV9zdG9y
YWdlVHlwZSwgbV9wYXRoLCBtX3F1b3RhLCBtX3Nlc3Npb25JRCkpOwogICAgIGZvciAoYXV0byYg
aXRlciA6IG1fc3RvcmFnZUFyZWFNYXApCiAgICAgICAgIG5ld05hbWVzcGFjZS0+bV9zdG9yYWdl
QXJlYU1hcC5zZXQoaXRlci5rZXksIGl0ZXIudmFsdWUtPmNvcHkoKSk7CiAKQEAgLTEyNyw3ICsx
MjMsNyBAQCB2b2lkIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjbG9zZSgpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIC8vIElmIHdlJ3JlIG5vdCBhIHBlcnNpc3RlbnQgc3RvcmFnZSwgd2Ugc2hvdWxk
bid0IG5lZWQgdG8gZG8gYW55IHdvcmsgaGVyZS4KLSAgICBpZiAobV9zdG9yYWdlVHlwZSA9PSBT
dG9yYWdlVHlwZTo6U2Vzc2lvbiB8fCBtX3N0b3JhZ2VUeXBlID09IFN0b3JhZ2VUeXBlOjpFcGhl
bWVyYWxMb2NhbCkgeworICAgIGlmIChtX3N0b3JhZ2VUeXBlID09IFN0b3JhZ2VUeXBlOjpTZXNz
aW9uKSB7CiAgICAgICAgIEFTU0VSVCghbV9zeW5jTWFuYWdlcik7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC0xNzYsNCArMTcyLDExIEBAIHZvaWQgU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNs
b3NlSWRsZUxvY2FsU3RvcmFnZURhdGFiYXNlcygpCiAgICAgICAgIGl0LT52YWx1ZS0+Y2xvc2VE
YXRhYmFzZUlmSWRsZSgpOwogfQogCit2b2lkIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpzZXRTZXNz
aW9uSURGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKK3sKKyAgICBtX3Nlc3Np
b25JRCA9IHNlc3Npb25JRDsKKyAgICBmb3IgKGF1dG8gc3RvcmFnZUFyZWFNYXAgOiBtX3N0b3Jh
Z2VBcmVhTWFwLnZhbHVlcygpKQorICAgICAgICBzdG9yYWdlQXJlYU1hcC0+c2Vzc2lvbkNoYW5n
ZWQoIXNlc3Npb25JRC5pc0VwaGVtZXJhbCgpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VOYW1lc3Bh
Y2VJbXBsLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUlt
cGwuaAppbmRleCBjODhmMDYxZWY1ZTUwYzliMTYzNWVjM2Y4ZDZiYTBlZDc3MDVjYWE3Li4xMjAz
MjUyZDg0NjlkOGIzMGVhMDQwMDc1ZDk2ZjcxNTdmZmVlY2YwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaApAQCAtMjgsNiArMjgs
NyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TdG9yYWdlQXJlYS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3RvcmFnZU5hbWVzcGFj
ZS5oPgorI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KQEAgLTM4LDkgKzM5LDggQEAgY2xhc3MgU3RvcmFnZUFyZWFJbXBsOwogCiBjbGFzcyBTdG9y
YWdlTmFtZXNwYWNlSW1wbCA6IHB1YmxpYyBXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlIHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVTZXNzaW9u
U3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSk7Ci0gICAgc3RhdGljIFJlZjxTdG9yYWdl
TmFtZXNwYWNlSW1wbD4gY3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVuc2ln
bmVkIHF1b3RhKTsKLSAgICBzdGF0aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBnZXRPckNy
ZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZShjb25zdCBTdHJpbmcmIGRhdGFiYXNlUGF0aCwgdW5z
aWduZWQgcXVvdGEpOworICAgIHN0YXRpYyBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0
ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkIHF1b3RhLCBQQUw6OlNlc3Npb25JRCk7
CisgICAgc3RhdGljIFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gZ2V0T3JDcmVhdGVMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UoY29uc3QgU3RyaW5nJiBkYXRhYmFzZVBhdGgsIHVuc2lnbmVkIHF1b3Rh
LCBQQUw6OlNlc3Npb25JRCk7CiAgICAgdmlydHVhbCB+U3RvcmFnZU5hbWVzcGFjZUltcGwoKTsK
IAogICAgIHZvaWQgY2xvc2UoKTsKQEAgLTU0LDggKzU0LDExIEBAIHB1YmxpYzoKICAgICB2b2lk
IHN5bmMoKTsKICAgICB2b2lkIGNsb3NlSWRsZUxvY2FsU3RvcmFnZURhdGFiYXNlcygpOwogCisg
ICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9z
ZXNzaW9uSUQ7IH0KKyAgICB2b2lkIHNldFNlc3Npb25JREZvclRlc3RpbmcoUEFMOjpTZXNzaW9u
SUQpIG92ZXJyaWRlOworCiBwcml2YXRlOgotICAgIFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFdlYkNv
cmU6OlN0b3JhZ2VUeXBlLCBjb25zdCBTdHJpbmcmIHBhdGgsIHVuc2lnbmVkIHF1b3RhKTsKKyAg
ICBTdG9yYWdlTmFtZXNwYWNlSW1wbChXZWJDb3JlOjpTdG9yYWdlVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXRoLCB1bnNpZ25lZCBxdW90YSwgUEFMOjpTZXNzaW9uSUQpOwogCiAgICAgUmVmPFdlYkNv
cmU6OlN0b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYShjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEmKSBvdmVycmlkZTsKICAgICBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gY29weShXZWJDb3Jl
OjpQYWdlKiBuZXdQYWdlKSBvdmVycmlkZTsKQEAgLTczLDYgKzc2LDggQEAgcHJpdmF0ZToKICAg
ICB1bnNpZ25lZCBtX3F1b3RhOwogCiAgICAgYm9vbCBtX2lzU2h1dGRvd247CisKKyAgICBQQUw6
OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1dlYlN0b3JhZ2VOYW1l
c3BhY2VQcm92aWRlci5jcHAKaW5kZXggODM2MjA1N2ZmZDc0ZjZkMmRhMWFhNDdkNzc4MDA0OTFj
OWRhMTFkYy4uZDA5NDY5MTI1ZmMyZjQ4NjY1OGE3M2E2Yjk1MGIyNDM0YjA3MDc5ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92
aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1dlYlN0b3JhZ2VOYW1l
c3BhY2VQcm92aWRlci5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJXZWJTdG9yYWdl
TmFtZXNwYWNlUHJvdmlkZXIuaCIKIAogI2luY2x1ZGUgIlN0b3JhZ2VOYW1lc3BhY2VJbXBsLmgi
CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVk
Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtOTYsMjYgKzk3LDIxIEBAIHZvaWQg
V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpzeW5jTG9jYWxTdG9yYWdlKCkKICAgICB9CiB9
CiAKLVJlZjxTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNy
ZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCBxdW90YSkKK1JlZjxT
dG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVNlc3Np
b25TdG9yYWdlTmFtZXNwYWNlKFBhZ2UmIHBhZ2UsIHVuc2lnbmVkIHF1b3RhKQogewotICAgIHJl
dHVybiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2Uo
cXVvdGEpOworICAgIHJldHVybiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlU2Vzc2lvblN0
b3JhZ2VOYW1lc3BhY2UocXVvdGEsIHBhZ2Uuc2Vzc2lvbklEKCkpOwogfQogCi1SZWY8U3RvcmFn
ZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVFcGhlbWVyYWxM
b2NhbFN0b3JhZ2VOYW1lc3BhY2UoUGFnZSYsIHVuc2lnbmVkIHF1b3RhKQorUmVmPFN0b3JhZ2VO
YW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlTG9jYWxTdG9yYWdl
TmFtZXNwYWNlKHVuc2lnbmVkIHF1b3RhLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7Ci0g
ICAgcmV0dXJuIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UocXVvdGEpOworICAgIHJldHVybiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Z2V0
T3JDcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UobV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgs
IHF1b3RhLCBzZXNzaW9uSUQpOwogfQogCi1SZWY8U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQg
cXVvdGEpCi17Ci0gICAgcmV0dXJuIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpnZXRPckNyZWF0ZUxv
Y2FsU3RvcmFnZU5hbWVzcGFjZShtX2xvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCwgcXVvdGEpOwot
fQotCi1SZWY8U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpj
cmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoU2VjdXJpdHlPcmlnaW4mLCB1bnNp
Z25lZCBxdW90YSkKK1JlZjxTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdp
biYsIHVuc2lnbmVkIHF1b3RhLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7CiAgICAgLy8g
RklYTUU6IEEgc21hcnRlciBpbXBsZW1lbnRhdGlvbiB3b3VsZCBjcmVhdGUgYSBzcGVjaWFsIG5h
bWVzcGFjZSB0eXBlIGluc3RlYWQgb2YganVzdCBwaWdneS1iYWNraW5nIG9mZgogICAgIC8vIFNl
c3Npb25TdG9yYWdlTmFtZXNwYWNlIGhlcmUuCi0gICAgcmV0dXJuIFN0b3JhZ2VOYW1lc3BhY2VJ
bXBsOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShxdW90YSk7CisgICAgcmV0dXJuIFN0
b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShxdW90YSwg
c2Vzc2lvbklEKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9y
YWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9T
dG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oCmluZGV4IGU1ODlmZWU3YTVjNmM5
MWNmOTRiN2QyM2I0ODYxNDgxNzliOGNmZjYuLjZkYmM1YzkwOWJmYjc5ZTFhMzViMDhiNDg5NTM5
YTBmM2Y3MGE3MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9XZWJT
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3Jh
Z2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmgKQEAgLTUwLDkgKzUwLDggQEAgcHJpdmF0
ZToKICAgICBleHBsaWNpdCBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIoY29uc3QgU3RyaW5n
JiBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpOwogCiAgICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VO
YW1lc3BhY2U+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlBhZ2UmLCB1
bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7Ci0gICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3Bh
Y2U+IGNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpQYWdlJiwg
dW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOwotICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNw
YWNlPiBjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEpIG92ZXJyaWRl
OwotICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVUcmFuc2llbnRMb2Nh
bFN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCB1bnNpZ25lZCBxdW90
YSkgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUxv
Y2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSwgUEFMOjpTZXNzaW9uSUQpIG92ZXJy
aWRlOworICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVUcmFuc2llbnRM
b2NhbFN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCB1bnNpZ25lZCBx
dW90YSwgUEFMOjpTZXNzaW9uSUQpIG92ZXJyaWRlOwogCiAgICAgY29uc3QgU3RyaW5nIG1fbG9j
YWxTdG9yYWdlRGF0YWJhc2VQYXRoOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViVmlldy5tbQppbmRleCBiOGQ5NzExZTcwZDc3NDVkN2QzOWIxZjlmNTQxYTE2NTRkNjU5
YzgyLi4wMzRmMGVjNzEwZjg3ZmUzZmZiNGJmOTQzNTE1YjQ4YzUwMWQ5MWFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC0yODg4LDYgKzI4ODgsNyBA
QCAtICh2b2lkKV9wcmVmZXJlbmNlc0NoYW5nZWQ6KFdlYlByZWZlcmVuY2VzICopcHJlZmVyZW5j
ZXMKICAgICBzZXR0aW5ncy5zZXRMb2NhbFN0b3JhZ2VFbmFibGVkKFtwcmVmZXJlbmNlcyBsb2Nh
bFN0b3JhZ2VFbmFibGVkXSk7CiAKICAgICBfcHJpdmF0ZS0+cGFnZS0+ZW5hYmxlTGVnYWN5UHJp
dmF0ZUJyb3dzaW5nKFtwcmVmZXJlbmNlcyBwcml2YXRlQnJvd3NpbmdFbmFibGVkXSk7CisgICAg
X3ByaXZhdGUtPmdyb3VwLT5zdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIoKS5lbmFibGVMZWdhY3lQ
cml2YXRlQnJvd3NpbmdGb3JUZXN0aW5nKFtwcmVmZXJlbmNlcyBwcml2YXRlQnJvd3NpbmdFbmFi
bGVkXSk7CiAgICAgc2V0dGluZ3Muc2V0U2Fuc1NlcmlmRm9udEZhbWlseShbcHJlZmVyZW5jZXMg
c2Fuc1NlcmlmRm9udEZhbWlseV0pOwogICAgIHNldHRpbmdzLnNldFNlcmlmRm9udEZhbWlseShb
cHJlZmVyZW5jZXMgc2VyaWZGb250RmFtaWx5XSk7CiAgICAgc2V0dGluZ3Muc2V0U3RhbmRhcmRG
b250RmFtaWx5KFtwcmVmZXJlbmNlcyBzdGFuZGFyZEZvbnRGYW1pbHldKTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAyYTU5YTcyNWEwZDcxY2U3
MGMwMWIxYTA4Nzg2YmZhMjJmZjg0MzE3Li4yYTRjYWUyNWJmNzc3ZWFjZDQwOGYzOTg0YWE3NDJl
NmRlZmM0YjA0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTktMDgtMTUgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBh
cHBsZS5jb20+CisKKyAgICAgICAgU29tZSBpbXByb3ZlbWVudHMgb24gd2ViIHN0b3JhZ2UKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDM3MworCisg
ICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgorCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Mb2NhbFN0b3JhZ2VQZXJzaXN0ZW5jZS5tbToKKyAgICAg
ICAgKFRFU1QpOiB1cGRhdGUgZXhwZWN0YXRpb24gZm9yIGJlaGF2aW9yIGNoYW5nZS4KKworICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5l
ci5pZGw6IG5ldyBTUEkgdG8gc3luY2hyb25vdXNseSBmbHVzaCBsb2NhbFN0b3JhZ2UgdG8gCisg
ICAgICAgIGRhdGFiYXNlIGZpbGUuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6c3luY0xv
Y2FsU3RvcmFnZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9U
ZXN0UnVubmVyLmg6CisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmNwcDogY2xlYXIgbG9jYWwgc3RvcmFnZSBiZXR3ZWVuIHRlc3QgcnVucyB0byBtYWtlIGVhY2gg
dGVzdCBpc29sYXRlZC4KKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVU
b0NvbnNpc3RlbnRWYWx1ZXMpOgorICAgICAgICAoV1RSOjpTdG9yYWdlVm9pZENhbGxiYWNrQ29u
dGV4dDo6U3RvcmFnZVZvaWRDYWxsYmFja0NvbnRleHQpOgorICAgICAgICAoV1RSOjpTdG9yYWdl
Vm9pZENhbGxiYWNrKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmNsZWFySW5kZXhl
ZERhdGFiYXNlcyk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpjbGVhckxvY2FsU3Rv
cmFnZSk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpzeW5jTG9jYWxTdG9yYWdlKToK
KyAgICAgICAgKFdUUjo6UmVtb3ZlQWxsSW5kZXhlZERhdGFiYXNlc0NhbGxiYWNrQ29udGV4dDo6
UmVtb3ZlQWxsSW5kZXhlZERhdGFiYXNlc0NhbGxiYWNrQ29udGV4dCk6IERlbGV0ZWQuIFJlcGxh
Y2VkCisgICAgICAgIHdpdGggU3RvcmFnZVZvaWRDYWxsYmFja0NvbnRleHQgZm9yIGdlbmVyYWwg
dXNhZ2UuCisgICAgICAgIChXVFI6OlJlbW92ZUFsbEluZGV4ZWREYXRhYmFzZXNDYWxsYmFjayk6
IERlbGV0ZWQuIFJlcGxhY2VkIHdpdGggU3RvcmFnZVZvaWRDYWxsYmFjay4KKyAgICAgICAgKFdU
Ujo6VGVzdENvbnRyb2xsZXI6OkNsZWFySW5kZXhlZERhdGFiYXNlcyk6IERlbGV0ZWQuIFVzZSBs
b3dlcmNhc2UgZm9yIGNvbnNpc3RlbnQgc3R5bGUuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5oOgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52
b2NhdGlvbi5jcHA6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlU3lu
Y2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKTogYWRkIGhhbmRsZXIgZm9yIG5ldyBt
ZXNzYWdlIAorICAgICAgICBTeW5jTG9jYWxTdG9yYWdlLgorCiAyMDE5LTA4LTE0ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10oUkVH
UkVTU0lPTjogcjIwMDQ4Nyk6IFdlYktpdC5SZXF1ZXN0QWN0aXZhdGVkRWxlbWVudEluZm9Gb3JS
b3RhdGVkSW1hZ2UgZmFpbHMgb24gaU9TIDEzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0xvY2FsU3RvcmFnZVBlcnNpc3RlbmNlLm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Mb2NhbFN0b3JhZ2VQZXJzaXN0ZW5jZS5t
bQppbmRleCAxMTU2MmJiNTY5MzRmNTRkNjNmOTc3YTdiZGUwOWQ5NDM1NDlhYjI3Li41OTJiYzI5
ZDExNjY3MzFhYWYwZGY1ZWY1MjdmZmI3OTk3YTY0OWRjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0xvY2FsU3RvcmFnZVBlcnNpc3RlbmNlLm1tCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTG9jYWxTdG9yYWdlUGVy
c2lzdGVuY2UubW0KQEAgLTEwNCw5ICsxMDQsMTAgQEAgVEVTVChXS1dlYlZpZXcsIExvY2FsU3Rv
cmFnZVByb2Nlc3NDcmFzaGVzKQogICAgIH1dOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmcmVhZHlUb0NvbnRpbnVlKTsKIAorICAgIC8vIElmIG5ldHdvcmsgcHJvY2VzcyBjcmFzaGVz
LCBzZXNzaW9uU3RvcmFnZSB3b3VsZCBiZSBsb3N0LgogICAgIHJlYWR5VG9Db250aW51ZSA9IGZh
bHNlOwogICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpAIndpbmRvdy5zZXNzaW9uU3Rv
cmFnZS5nZXRJdGVtKCdzZXNzaW9uJykiIGNvbXBsZXRpb25IYW5kbGVyOl4oaWQgcmVzdWx0LCBO
U0Vycm9yICopIHsKLSAgICAgICAgRVhQRUNUX1RSVUUoW0Aic3RvcmFnZSIgaXNFcXVhbFRvU3Ry
aW5nOnJlc3VsdF0pOworICAgICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzRXF1YWw6TlNOdWxs
Lm51bGxdKTsKICAgICAgICAgcmVhZHlUb0NvbnRpbnVlID0gdHJ1ZTsKICAgICB9XTsKICAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlYWR5VG9Db250aW51ZSk7CmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIu
aWRsIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0
UnVubmVyLmlkbAppbmRleCAxNThkMmY2ZTExMTFhOWNkYzFiNGQzMGVmNzk0YzJmMTliNWVjMTAx
Li40MzI5ZWMxNDQzMGY5MTMwYWFkOWI1ZWRiNWY2Y2Q2YjM2ZTgxNjczIDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIu
aWRsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3Mv
VGVzdFJ1bm5lci5pZGwKQEAgLTE0Miw2ICsxNDIsNyBAQCBpbnRlcmZhY2UgVGVzdFJ1bm5lciB7
CiAgICAgdm9pZCBjbGVhckFsbERhdGFiYXNlcygpOwogICAgIHZvaWQgc2V0RGF0YWJhc2VRdW90
YSh1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGEpOwogICAgIERPTVN0cmluZyBwYXRoVG9Mb2NhbFJl
c291cmNlKERPTVN0cmluZyB1cmwpOworICAgIHZvaWQgc3luY0xvY2FsU3RvcmFnZSgpOwogCiAg
ICAgYXR0cmlidXRlIGRvdWJsZSBkYXRhYmFzZURlZmF1bHRRdW90YTsKICAgICBhdHRyaWJ1dGUg
ZG91YmxlIGRhdGFiYXNlTWF4UXVvdGE7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRleCAxODYwZjE2OWU1MmFjMTI1OTNm
YWVlMGU0NmUyZDA1MDQ4ZGExNmJkLi41Mjc1NjZkYzNmODRhN2RiNDIyMzM0N2ZkNjFjM2IyNTM4
NmU0ZjczIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGVzdFJ1bm5lci5jcHAKQEAgLTM0Miw2ICszNDIsMTMgQEAgdm9pZCBUZXN0UnVubmVyOjpz
ZXREYXRhYmFzZVF1b3RhKHVpbnQ2NF90IHF1b3RhKQogICAgIHJldHVybiBXS0J1bmRsZVNldERh
dGFiYXNlUXVvdGEoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRsZSgpLCBxdW90YSk7
CiB9CiAKK3ZvaWQgVGVzdFJ1bm5lcjo6c3luY0xvY2FsU3RvcmFnZSgpCit7CisgICAgV0tSZXRh
aW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZygiU3luY0xvY2FsU3RvcmFnZSIpKTsKKyAgICBXS1JldGFpblB0cjxXS0Jv
b2xlYW5SZWY+IG1lc3NhZ2VCb2R5ID0gYWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUodHJ1ZSkpOwor
ICAgIFdLQnVuZGxlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xl
dG9uKCkuYnVuZGxlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSwgbnVs
bHB0cik7Cit9CisKIHZvaWQgVGVzdFJ1bm5lcjo6Y2xlYXJBbGxBcHBsaWNhdGlvbkNhY2hlcygp
CiB7CiAgICAgV0tCdW5kbGVQYWdlQ2xlYXJBcHBsaWNhdGlvbkNhY2hlKEluamVjdGVkQnVuZGxl
OjpzaW5nbGV0b24oKS5wYWdlKCktPnBhZ2UoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCmluZGV4IDc1MDkzZDA5MGY0Y2M4ODYw
ZTkzNTQ3MGQ3NGUyM2UxOWRkNmQwMDMuLmY1NzM2ZWFhYThhMzNiZTcxNzhkODczYjljN2IxZTI1
MWEzOTExZGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGVzdFJ1bm5lci5oCkBAIC0xNTksNiArMTU5LDcgQEAgcHVibGljOgogICAgIHZvaWQgY2xl
YXJBbGxEYXRhYmFzZXMoKTsKICAgICB2b2lkIHNldERhdGFiYXNlUXVvdGEodWludDY0X3QpOwog
ICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBwYXRoVG9Mb2NhbFJlc291cmNlKEpTU3RyaW5n
UmVmKTsKKyAgICB2b2lkIHN5bmNMb2NhbFN0b3JhZ2UoKTsKIAogICAgIC8vIEFwcGxpY2F0aW9u
IENhY2hlCiAgICAgdm9pZCBjbGVhckFsbEFwcGxpY2F0aW9uQ2FjaGVzKCk7CmRpZmYgLS1naXQg
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDhlNzMzYmVlZDgwZDRhMDVlMzVl
M2MwZWYzMTJjMzllZjRkZDMzNTMuLjVmNzI2ZGY4NGMxNTk3MzRlYTI1ODJkN2ZhOTczYzZkNDFh
NDU5YzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIu
Y3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC05
NDIsNiArOTQyLDkgQEAgYm9vbCBUZXN0Q29udHJvbGxlcjo6cmVzZXRTdGF0ZVRvQ29uc2lzdGVu
dFZhbHVlcyhjb25zdCBUZXN0T3B0aW9ucyYgb3B0aW9ucywgUmUKICAgICBDbGVhckluZGV4ZWRE
YXRhYmFzZXMoKTsKICAgICBzZXRJREJQZXJPcmlnaW5RdW90YSg1MCAqIE1CKTsKIAorICAgIGNs
ZWFySW5kZXhlZERhdGFiYXNlcygpOworICAgIGNsZWFyTG9jYWxTdG9yYWdlKCk7CisKICAgICBj
bGVhclNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zKCk7CiAgICAgY2xlYXJET01DYWNoZXMoKTsK
IApAQCAtMzA2OSw4ICszMDcyLDggQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0SURCUGVyT3Jp
Z2luUXVvdGEodWludDY0X3QgcXVvdGEpCiAgICAgV0tDb250ZXh0U2V0SURCUGVyT3JpZ2luUXVv
dGEocGxhdGZvcm1Db250ZXh0KCksIHF1b3RhKTsKIH0KIAotc3RydWN0IFJlbW92ZUFsbEluZGV4
ZWREYXRhYmFzZXNDYWxsYmFja0NvbnRleHQgewotICAgIGV4cGxpY2l0IFJlbW92ZUFsbEluZGV4
ZWREYXRhYmFzZXNDYWxsYmFja0NvbnRleHQoVGVzdENvbnRyb2xsZXImIGNvbnRyb2xsZXIpCitz
dHJ1Y3QgU3RvcmFnZVZvaWRDYWxsYmFja0NvbnRleHQgeworICAgIGV4cGxpY2l0IFN0b3JhZ2VW
b2lkQ2FsbGJhY2tDb250ZXh0KFRlc3RDb250cm9sbGVyJiBjb250cm9sbGVyKQogICAgICAgICA6
IHRlc3RDb250cm9sbGVyKGNvbnRyb2xsZXIpCiAgICAgewogICAgIH0KQEAgLTMwNzksMTggKzMw
ODIsMzcgQEAgc3RydWN0IFJlbW92ZUFsbEluZGV4ZWREYXRhYmFzZXNDYWxsYmFja0NvbnRleHQg
ewogICAgIGJvb2wgZG9uZSB7IGZhbHNlIH07CiB9OwogCi1zdGF0aWMgdm9pZCBSZW1vdmVBbGxJ
bmRleGVkRGF0YWJhc2VzQ2FsbGJhY2sodm9pZCogdXNlckRhdGEpCitzdGF0aWMgdm9pZCBTdG9y
YWdlVm9pZENhbGxiYWNrKHZvaWQqIHVzZXJEYXRhKQogewotICAgIGF1dG8qIGNvbnRleHQgPSBz
dGF0aWNfY2FzdDxSZW1vdmVBbGxJbmRleGVkRGF0YWJhc2VzQ2FsbGJhY2tDb250ZXh0Kj4odXNl
ckRhdGEpOworICAgIGF1dG8qIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxTdG9yYWdlVm9pZENhbGxi
YWNrQ29udGV4dCo+KHVzZXJEYXRhKTsKICAgICBjb250ZXh0LT5kb25lID0gdHJ1ZTsKICAgICBj
b250ZXh0LT50ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CiB9CiAKLXZvaWQgVGVzdENvbnRy
b2xsZXI6OkNsZWFySW5kZXhlZERhdGFiYXNlcygpCit2b2lkIFRlc3RDb250cm9sbGVyOjpjbGVh
ckluZGV4ZWREYXRhYmFzZXMoKQoreworICAgIGF1dG8gd2Vic2l0ZURhdGFTdG9yZSA9IFdLQ29u
dGV4dEdldFdlYnNpdGVEYXRhU3RvcmUocGxhdGZvcm1Db250ZXh0KCkpOworICAgIFN0b3JhZ2VW
b2lkQ2FsbGJhY2tDb250ZXh0IGNvbnRleHQoKnRoaXMpOworICAgIFdLV2Vic2l0ZURhdGFTdG9y
ZVJlbW92ZUFsbEluZGV4ZWREYXRhYmFzZXMod2Vic2l0ZURhdGFTdG9yZSwgJmNvbnRleHQsIFN0
b3JhZ2VWb2lkQ2FsbGJhY2spOworICAgIHJ1blVudGlsKGNvbnRleHQuZG9uZSwgbm9UaW1lb3V0
KTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6Y2xlYXJMb2NhbFN0b3JhZ2UoKQogewogICAg
IGF1dG8gd2Vic2l0ZURhdGFTdG9yZSA9IFdLQ29udGV4dEdldFdlYnNpdGVEYXRhU3RvcmUocGxh
dGZvcm1Db250ZXh0KCkpOwotICAgIFJlbW92ZUFsbEluZGV4ZWREYXRhYmFzZXNDYWxsYmFja0Nv
bnRleHQgY29udGV4dCgqdGhpcyk7Ci0gICAgV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlQWxsSW5k
ZXhlZERhdGFiYXNlcyh3ZWJzaXRlRGF0YVN0b3JlLCAmY29udGV4dCwgUmVtb3ZlQWxsSW5kZXhl
ZERhdGFiYXNlc0NhbGxiYWNrKTsKKyAgICBTdG9yYWdlVm9pZENhbGxiYWNrQ29udGV4dCBjb250
ZXh0KCp0aGlzKTsKKyAgICBXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVMb2NhbFN0b3JhZ2Uod2Vi
c2l0ZURhdGFTdG9yZSwgJmNvbnRleHQsIFN0b3JhZ2VWb2lkQ2FsbGJhY2spOworICAgIHJ1blVu
dGlsKGNvbnRleHQuZG9uZSwgbm9UaW1lb3V0KTsKKworICAgIFN0b3JhZ2VWb2lkQ2FsbGJhY2tD
b250ZXh0IGxlZ2FjeUNvbnRleHQoKnRoaXMpOworICAgIFdLQ29udGV4dENsZWFyTGVnYWN5UHJp
dmF0ZUJyb3dzaW5nTG9jYWxTdG9yYWdlKHBsYXRmb3JtQ29udGV4dCgpLCAmbGVnYWN5Q29udGV4
dCwgU3RvcmFnZVZvaWRDYWxsYmFjayk7CisgICAgcnVuVW50aWwobGVnYWN5Q29udGV4dC5kb25l
LCBub1RpbWVvdXQpOworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpzeW5jTG9jYWxTdG9yYWdl
KCkKK3sKKyAgICBTdG9yYWdlVm9pZENhbGxiYWNrQ29udGV4dCBjb250ZXh0KCp0aGlzKTsKKyAg
ICBXS0NvbnRleHRTeW5jTG9jYWxTdG9yYWdlKHBsYXRmb3JtQ29udGV4dCgpLCAmY29udGV4dCwg
U3RvcmFnZVZvaWRDYWxsYmFjayk7CiAgICAgcnVuVW50aWwoY29udGV4dC5kb25lLCBub1RpbWVv
dXQpOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKaW5kZXggYjk1
Y2VhMzU0NTZlZTJjOTkwMzdmZjhmZmE0MWVkNDBkY2MyYWFkYi4uYTVhZTU2ZWQ2ODk3NTc4OGRi
MWQwM2Y5NWRhMDY2OTFlNDk5MTUzNiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuaApAQCAtMjYyLDcgKzI2Miw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVtb3ZlQWxs
U2Vzc2lvbkNyZWRlbnRpYWxzKCk7CiAKLSAgICB2b2lkIENsZWFySW5kZXhlZERhdGFiYXNlcygp
OworICAgIHZvaWQgY2xlYXJJbmRleGVkRGF0YWJhc2VzKCk7CisgICAgdm9pZCBjbGVhckxvY2Fs
U3RvcmFnZSgpOworICAgIHZvaWQgc3luY0xvY2FsU3RvcmFnZSgpOwogCiAgICAgdm9pZCBjbGVh
clNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zKCk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0SW52b2NhdGlvbi5jcHAKaW5kZXggMjhhZDFlZDg4YTYzZjdiZDZhZjFkZDU5OWFiZjIwMDYz
NDg2ZWZmYi4uYTVhZWEyMWMwOTAwMDU5ZTc5ZmE3ZDEyYmZhMTVmZDgxOWQxNmI2YSAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKQEAgLTE2NjYsNiArMTY2Niwx
MSBAQCBXS1JldGFpblB0cjxXS1R5cGVSZWY+IFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlU3lu
Y2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CiAKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwg
IlN5bmNMb2NhbFN0b3JhZ2UiKSkgeworICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9u
KCkuc3luY0xvY2FsU3RvcmFnZSgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisK
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCA2YTZkYzE5MWJkYWVhMWRiYzIzN2E5NmQ4NTNkNmI4OTZmMjFlNTM3Li4yZTViNzA2NGI1MzA3
OGMxMDg1MjgwMTU4ZjRjNWE3YTkwMjlmNDQxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTkt
MDgtMTUgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgU29tZSBp
bXByb3ZlbWVudHMgb24gd2ViIHN0b3JhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwMDM3MworCisgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5
IEdhcmVuLgorIAorICAgICAgICBNb2RpZnkgdGVzdHMgZm9yIGEgYmVoYXZpb3IgY2hhbmdlOiBz
ZXNzaW9uU3RvcmFnZSB3aWxsIGJlIGxvc3Qgd2hlbiBuZXR3b3JrIHByb2Nlc3MgY3Jhc2hlcy4K
KworICAgICAgICBGb3IgdGVzdHMgd2hpY2ggdXNlIHNlc3Npb25TdG9yYWdlIHRvIHN0b3JlIGl0
ZW1zLCBjcmFzaCBuZXR3b3JrIHByb2Nlc3MsIHRoZW4gcmVhZCBmcm9tIHNlc3Npb25TdG9yYWdl
IGFuZCAKKyAgICAgICAgZXhwZWN0IGl0ZW1zIHRvIGJlIGluIHNlc3Npb25TdG9yYWdlLCByZXBs
YWNlIHNlc3Npb25TdG9yYWdlIHdpdGggbG9jYWxTdG9yYWdlLiBBbHNvLCB0byBtYWtlIHN1cmUg
bG9jYWxTdG9yYWdlCisgICAgICAgIGlzIHN0b3JlZCBwZXJzaXN0ZW50bHkgYmVmb3JlIG5ldHdv
cmsgcHJvY2VzcyBnZXRzIHRlcm1pbmF0ZWQsIGFkb3B0IGEgbmV3bHkgaW50cm9kdWNlZCBTUEkg
dG8gCisgICAgICAgIHN5bmNocm9ub3VzbHkgZmx1c2ggbG9jYWxTdG9yYWdlIGNvbnRlbnQgdG8g
ZGlzayBiZWZvcmUgdGVybWluYXRpbmcgbmV0d29yayBwcm9jZXNzLgorCisgICAgICAgICogcGxh
dGZvcm0vaW9zLXNpbXVsYXRvci13azIvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogc3RvcmFnZS9kb21zdG9y
YWdlL2xvY2Fsc3RvcmFnZS9wcml2YXRlLWJyb3dzaW5nLWFmZmVjdHMtc3RvcmFnZS1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvSURCT2JqZWN0LWxlYWsuaHRtbDoK
KyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vb3BlbmRhdGFiYXNlLWFmdGVyLXN0
b3JhZ2UtY3Jhc2gtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21v
ZGVybi9vcGVuZGF0YWJhc2UtYWZ0ZXItc3RvcmFnZS1jcmFzaC5odG1sOgorCiAyMDE5LTA4LTE0
ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW1dI
TFNMXSBWYXJpYWJsZXMgc2hvdWxkbid0IGJlIGFibGUgdG8gaGF2ZSB2b2lkIHR5cGUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy1zaW11bGF0b3Itd2syL1Rlc3RFeHBlY3Rh
dGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yLXdrMi9UZXN0RXhwZWN0
YXRpb25zCmluZGV4IDllODY2NmFjZWYxNjgzODI1ZDc1Mzg2MjFjMWM5Zjg5NGUwYjUxM2YuLjk3
NDk3N2EyNWZjZjFmZDllNTc3ZTMzZjg1ZmE1YWZkMDRiYWZjYTIgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2lvcy1zaW11bGF0b3Itd2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXNpbXVsYXRvci13azIvVGVzdEV4cGVjdGF0aW9ucwpA
QCAtNjYsNyArNjYsNyBAQCBodHRwL3dwdC9jYWNoZS1zdG9yYWdlL2NhY2hlLXB1dC1rZXlzLmh0
dHBzLmFueS53b3JrZXIuaHRtbCBbIFNsb3cgXQogaHR0cC93cHQvY2FjaGUtc3RvcmFnZS9hLWNh
Y2hlLW9wZW4uaHR0cHMuaHRtbCBbIFNsb3cgXQogaHR0cC93cHQvY2FjaGUtc3RvcmFnZS9jYWNo
ZS1xdW90YS1hZGQuYW55Lmh0bWwgWyBTbG93IF0KIAotd2Via2l0Lm9yZy9iLzE5NjM3NiBbIERl
YnVnIF0gc3RvcmFnZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFnZS9wcml2YXRlLWJyb3dzaW5nLWFm
ZmVjdHMtc3RvcmFnZS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8xOTYzNzYg
WyBEZWJ1ZyBdIHN0b3JhZ2UvZG9tc3RvcmFnZS9sb2NhbHN0b3JhZ2UvcHJpdmF0ZS1icm93c2lu
Zy1hZmZlY3RzLXN0b3JhZ2UuaHRtbCBbIFBhc3MgXQogCiB3ZWJraXQub3JnL2IvMTk2NDAzIGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWFjYXB0dXJlLXJlY29yZC9NZWRpYVJl
Y29yZGVyLXN0b3AuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA2YTgyNzBmN2U5OWEwYWI0NGI1NDM5
MjIxNDQ4MmI3ZmE3NTVlZjYxLi5kMjJkNzg3ZDg4NGE1OTY0MDRiMWQzZTBjZmQwMTczZjIyNGM0
YTQ4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3Rh
dGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25z
CkBAIC05MjIsNyArOTIyLDcgQEAgd2Via2l0Lm9yZy9iLzE5NDgyNiBodHRwL3Rlc3RzL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3MvZG8tbm90LWJsb2NrLXRvcC1sZXZlbC1uYXYKIAogd2Via2l0Lm9y
Zy9iLzE5NDkxNiBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLXZpZGVvLWVsZW1lbnQuaHRt
bCBbIFBhc3MgRmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8xOTYzNzYgc3RvcmFnZS9kb21zdG9y
YWdlL2xvY2Fsc3RvcmFnZS9wcml2YXRlLWJyb3dzaW5nLWFmZmVjdHMtc3RvcmFnZS5odG1sIFsg
UGFzcyBGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8xOTYzNzYgc3RvcmFnZS9kb21zdG9yYWdlL2xv
Y2Fsc3RvcmFnZS9wcml2YXRlLWJyb3dzaW5nLWFmZmVjdHMtc3RvcmFnZS5odG1sIFsgUGFzcyBd
CiAKIHdlYmtpdC5vcmcvYi8xOTY0MDAgZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNr
LWdldFNldHRpbmdzLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2RvbXN0b3JhZ2UvbG9jYWxzdG9yYWdlL3ByaXZhdGUtYnJvd3NpbmctYWZm
ZWN0cy1zdG9yYWdlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvZG9tc3RvcmFn
ZS9sb2NhbHN0b3JhZ2UvcHJpdmF0ZS1icm93c2luZy1hZmZlY3RzLXN0b3JhZ2UtZXhwZWN0ZWQu
dHh0CmluZGV4IDJjYTk1NTc1MDI3ZmFiODlhYmViNDY3YjM4MDVjMjA2MDVkZmZiZDEuLmY5ODQw
ZGViNTMwYmUxYzE1NWFkOGRlZjVhNThjODBmYzY2MWQwMjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvZG9tc3RvcmFnZS9sb2NhbHN0b3JhZ2UvcHJpdmF0ZS1icm93c2luZy1hZmZl
Y3RzLXN0b3JhZ2UtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvZG9tc3Rv
cmFnZS9sb2NhbHN0b3JhZ2UvcHJpdmF0ZS1icm93c2luZy1hZmZlY3RzLXN0b3JhZ2UtZXhwZWN0
ZWQudHh0CkBAIC04LDcgKzgsNyBAQCBBTEVSVDogbG9jYWxTdG9yYWdlJ3MgbGVuZ3RoIGlzOiAx
CiBBTEVSVDogVGhlIGl0ZW0gaW4gbmV3IHdpbmRvdyBzdGFydHMgb3V0IGFzOiBDaGFuZ2VkVmFs
dWUKIEFMRVJUOiBUaGUgaXRlbSBpbiBuZXcgd2luZG93IGlzIG5vdzogTmV3V2luZG93VmFsdWUK
IEFMRVJUOiBCYWNrIGluIHBhcmVudCB3aW5kb3csIGxvY2FsU3RvcmFnZSdzIGxlbmd0aCBpczog
MQotQUxFUlQ6IEJhY2sgaW4gcGFyZW50IHdpbmRvdywgdGVzdEl0ZW0gaXM6IENoYW5nZWRWYWx1
ZQorQUxFUlQ6IEJhY2sgaW4gcGFyZW50IHdpbmRvdywgdGVzdEl0ZW0gaXM6IE5ld1dpbmRvd1Zh
bHVlCiBBTEVSVDogRmluYWwgd2luZG93LCBsb2NhbFN0b3JhZ2UncyBsZW5ndGggaXM6IDEKIEFM
RVJUOiBGaW5hbCB3aW5kb3csIGl0ZW0gaXM6IFBlcnNpc3RlbnQgaXRlbSEKIApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvSURCT2JqZWN0LWxlYWsuaHRtbCBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL0lEQk9iamVjdC1sZWFrLmh0bWwKaW5kZXggZTE4
YjY4YjkxYWM3ZjYxOTVhMWUxZTExMWFmNGNhZDAzYjg2M2M1Ny4uNmFhOGFiNjEwMzgyM2I3Yzk3
YmZhNzdlZjU1NmQ4MTljOWFhYTBjYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvSURCT2JqZWN0LWxlYWsuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9JREJPYmplY3QtbGVhay5odG1sCkBAIC0xMyw3ICsxMyw3IEBAIGZ1bmN0aW9uIHRl
c3QoKSB7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoc2Vzc2lvblN0b3JhZ2Uu
ZG9uZUZpcnN0TG9hZCkgeworICAgIGlmIChsb2NhbFN0b3JhZ2UuZG9uZUZpcnN0TG9hZCkgewog
ICAgICAgICBnYygpOwogICAgICAgICBzaG91bGRCZUVxdWFsVG9OdW1iZXIoImludGVybmFscy5u
dW1iZXJPZklEQlRyYW5zYWN0aW9ucygpIiwgMCk7CiAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwpA
QCAtMjMsMTYgKzIzLDIxIEBAIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgdmFyIGRibmFtZSA9IHNl
dERCTmFtZUZyb21QYXRoKCkgKyBEYXRlKCk7CiAgICAgdmFyIHJlcXVlc3QgPSAgd2luZG93Lmlu
ZGV4ZWREQi5vcGVuKGRibmFtZSk7CiAgICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5j
dGlvbihldnQpIHsKLSAgICAgICAgc2Vzc2lvblN0b3JhZ2UuZG9uZUZpcnN0TG9hZCA9IHRydWU7
CisgICAgICAgIGxvY2FsU3RvcmFnZS5kb25lRmlyc3RMb2FkID0gdHJ1ZTsKICAgICAgICAgaWYg
KCF3aW5kb3cudGVzdFJ1bm5lciB8fCAhdGVzdFJ1bm5lci50ZXJtaW5hdGVOZXR3b3JrUHJvY2Vz
cykgewogICAgICAgICAgICAgdGVzdEZhaWxlZCgnVGhpcyB0ZXN0IHJlcXVpcmVzIGFjY2VzcyB0
byB0aGUgVGVzdFJ1bm5lciBvYmplY3QgYW5kIHRlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzKCkgZnVu
Y3Rpb24nKTsKICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9IAorCisgICAgICAgIC8vIE1ha2Ugc3VyZSBsb2NhbFN0b3JhZ2UgaXMgZmx1
c2hlZCB0byBkaXNrIGJlZm9yZSBjcmFzaGluZyBuZXR3b3JrIHByb2Nlc3MuCisgICAgICAgIHRl
c3RSdW5uZXIuc3luY0xvY2FsU3RvcmFnZSgpOwogICAgICAgICB0ZXN0UnVubmVyLnRlcm1pbmF0
ZU5ldHdvcmtQcm9jZXNzKCk7Ci0gICAgICAgIHNldFRpbWVvdXQoKCgpPT4gewotICAgICAgICAg
ICAgbG9jYXRpb24ucmVsb2FkKCk7Ci0gICAgICAgIH0pLCAwKTsKKyAgICAgICAgZXZ0LnRhcmdl
dC5yZXN1bHQub25lcnJvciA9IGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgICAgIHNldFRpbWVvdXQo
KCgpPT4geworICAgICAgICAgICAgICAgIGxvY2F0aW9uLnJlbG9hZCgpOworICAgICAgICAgICAg
fSksIDApOworICAgICAgICB9CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vb3BlbmRhdGFiYXNlLWFmdGVyLXN0b3JhZ2UtY3Jhc2gt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL29wZW5k
YXRhYmFzZS1hZnRlci1zdG9yYWdlLWNyYXNoLWV4cGVjdGVkLnR4dAppbmRleCA0N2I4NzI3YTkz
OTViNWQzYzRhM2QzZjFhNmEwZGUxZTgxNjU5NDliLi5mOTk3OGEwMjQ0ZjFkMGE2N2I0ZGMxZjU4
ZGQyMWMxZWQxNThjZjRjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9tb2Rlcm4vb3BlbmRhdGFiYXNlLWFmdGVyLXN0b3JhZ2UtY3Jhc2gtZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9vcGVuZGF0YWJhc2UtYWZ0
ZXItc3RvcmFnZS1jcmFzaC1leHBlY3RlZC50eHQKQEAgLTEsMiArMSwyIEBACi1QQVNTIHNlc3Np
b25TdG9yYWdlW3N0b3JhZ2VLZXldIGlzICJNYWRlIGl0IgorUEFTUyBsb2NhbFN0b3JhZ2Vbc3Rv
cmFnZUtleV0gaXMgIk1hZGUgaXQiCiBTdWNjZXNzZnVsbHkgb3BlbmVkIGRhdGFiYXNlIHdpdGgg
dmVyc2lvbiAzLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9k
ZXJuL29wZW5kYXRhYmFzZS1hZnRlci1zdG9yYWdlLWNyYXNoLmh0bWwgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vb3BlbmRhdGFiYXNlLWFmdGVyLXN0b3JhZ2UtY3Jhc2gu
aHRtbAppbmRleCBkMjQ1OGY2YTI5OGIzNDEwN2E0YjhkMGVmNjdiYzY0MjNkMmRhMGRmLi45YTA5
MTJlZjE1YzdiODQ3ZTlmM2Q5MDEzM2UyMDdhMmQzMTEyNThiIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vb3BlbmRhdGFiYXNlLWFmdGVyLXN0b3JhZ2Ut
Y3Jhc2guaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vb3Bl
bmRhdGFiYXNlLWFmdGVyLXN0b3JhZ2UtY3Jhc2guaHRtbApAQCAtMjAsMzEgKzIwLDMxIEBAIGZ1
bmN0aW9uIGNvbnRpbnVlVGVzdCgpCiAJcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24oZSkgewog
CQkvLyBHb29kLCB3ZSByZWNlaXZlZCBhbiBleHBlY3RlZCBlcnJvci4KIAkJLy8gTm93IHJlbG9h
ZCB0byBzZWUgaWYgYSBuZXcgZG9jdW1lbnQgY29ubmVjdHMgc3VjY2Vzc2Z1bGx5Ci0JCWlmIChz
ZXNzaW9uU3RvcmFnZVtzdG9yYWdlS2V5XSkgeworCQlpZiAobG9jYWxTdG9yYWdlW3N0b3JhZ2VL
ZXldKSB7CiAJCQlkb2N1bWVudC5ib2R5LmlubmVySFRNTCA9ICJSZWNlaXZlZCBlcnJvciBtb3Jl
IHRoYW4gb25jZSB1bmV4cGVjdGVkbHkuIERhdGFiYXNlOiBuYW1lICIgKyBkYm5hbWUgKyAiLCB2
ZXJzaW9uIDIuIjsKIAkJCWlmICh3aW5kb3cudGVzdFJ1bm5lcikKIAkJCQl0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKIAkJCXJldHVybjsKIAkJfQogCi0JCXNlc3Npb25TdG9yYWdlW3N0b3JhZ2VL
ZXldID0gIk1hZGUgaXQiOworCQlsb2NhbFN0b3JhZ2Vbc3RvcmFnZUtleV0gPSAiTWFkZSBpdCI7
CiAJCWxvY2F0aW9uLnJlbG9hZCgpOwogCX0KIAogCXJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rp
b24oZSkgewotCQlkb2N1bWVudC5ib2R5LmlubmVySFRNTCA9ICJVbmV4cGVjdGVkIHVwZ3JhZGVu
ZWVkZWQgYWZ0ZXIgc3RvcmFnZSBwcm9jZXNzIHRlcm1pbmF0aW9uLiBEYXRhYmFzZTogbmFtZSAi
ICsgZGJuYW1lICsgIiwgdmVyc2lvbiAyLiBTZXNzaW9uU3RvcmFnZSB2YWx1ZTogIiArIHNlc3Np
b25TdG9yYWdlW3N0b3JhZ2VLZXldICsgIi4iOworCQlkb2N1bWVudC5ib2R5LmlubmVySFRNTCA9
ICJVbmV4cGVjdGVkIHVwZ3JhZGVuZWVkZWQgYWZ0ZXIgc3RvcmFnZSBwcm9jZXNzIHRlcm1pbmF0
aW9uLiBEYXRhYmFzZTogbmFtZSAiICsgZGJuYW1lICsgIiwgdmVyc2lvbiAyLiBsb2NhbFN0b3Jh
Z2UgdmFsdWU6ICIgKyBzZXNzaW9uU3RvcmFnZVtzdG9yYWdlS2V5XSArICIuIjsKIAkJaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQogCQkJdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAJfQogfQogCi12
YXIgdmVyc2lvblRvT3BlbiA9IHNlc3Npb25TdG9yYWdlLmRvbmVGaXJzdExvYWQgPyAzIDogMTsK
K3ZhciB2ZXJzaW9uVG9PcGVuID0gbG9jYWxTdG9yYWdlLmRvbmVGaXJzdExvYWQgPyAzIDogMTsK
IHZhciByZXF1ZXN0ID0gd2luZG93LmluZGV4ZWREQi5vcGVuKGRibmFtZSwgdmVyc2lvblRvT3Bl
bik7CiAKIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZSkgewotCWlmIChzZXNz
aW9uU3RvcmFnZS5kb25lRmlyc3RMb2FkKSB7CisJaWYgKGxvY2FsU3RvcmFnZS5kb25lRmlyc3RM
b2FkKSB7CiAJCWRvY3VtZW50LmJvZHkuaW5uZXJIVE1MID0gIlN1Y2Nlc3NmdWxseSBvcGVuZWQg
ZGF0YWJhc2Ugd2l0aCB2ZXJzaW9uICIgKyB2ZXJzaW9uVG9PcGVuICsgIi4iOwotCQlzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoJ3Nlc3Npb25TdG9yYWdlW3N0b3JhZ2VLZXldJywgJ01hZGUgaXQnKTsK
KwkJc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdsb2NhbFN0b3JhZ2Vbc3RvcmFnZUtleV0nLCAnTWFk
ZSBpdCcpOwogCiAJCWlmICh3aW5kb3cudGVzdFJ1bm5lcikgewogCQkJdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7CkBAIC01Miw3ICs1Miw3IEBAIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVu
Y3Rpb24oZSkgewogCQl9CiAJfQogCi0Jc2Vzc2lvblN0b3JhZ2UuZG9uZUZpcnN0TG9hZCA9IHRy
dWU7CisJbG9jYWxTdG9yYWdlLmRvbmVGaXJzdExvYWQgPSB0cnVlOwogCiAJLy8gU2V0IGFuIGVy
cm9yIGhhbmRsZXIgb24gdGhlIGRhdGFiYXNlIGNvbm5lY3Rpb24gc28gb25jZSB0aGUgc3RvcmFn
ZSBwcm9jZXNzIHRlcm1pbmF0ZXMgd2Uga25vdyB0byBjb250aW51ZSB0aGUgdGVzdAogCWUudGFy
Z2V0LnJlc3VsdC5vbmVycm9yID0gZnVuY3Rpb24oZSkgewpAQCAtNjEsNiArNjEsOCBAQCByZXF1
ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGUpIHsKIAogCWlmICh3aW5kb3cudGVzdFJ1
bm5lcikgewogCQl0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKwkJLy8gTWFrZSBzdXJlIGxv
Y2FsU3RvcmFnZSBpcyBmbHVzaGVkIHRvIGRpc2sgYmVmb3JlIGNyYXNoaW5nIG5ldHdvcmsgcHJv
Y2Vzcy4KKwkJdGVzdFJ1bm5lci5zeW5jTG9jYWxTdG9yYWdlKCk7CiAJCXRlc3RSdW5uZXIudGVy
bWluYXRlTmV0d29ya1Byb2Nlc3MoKTsKIAl9CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376382</attachid>
            <date>2019-08-15 09:05:39 -0700</date>
            <delta_ts>2019-08-15 11:03:06 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-200373-20190815090538.patch</filename>
            <type>text/plain</type>
            <size>253861</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4NzEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzY0ZmYzODZkMjExYTFh
Yjk3OTNlZDlkNGQxNjY4MzFkZWFjMzNjNS4uMzk4YWQ4MGI2NTA1ZDUyODJmYjlkY2ZlZmE0ZTZm
ZDA0YTAxNmQ2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDE5LTA4LTE1ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIFNvbWUgaW1wcm92ZW1lbnRz
IG9uIHdlYiBzdG9yYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDAzNzMKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKwor
ICAgICAgICBSZW1vdmUgc3RvcmFnZSB0eXBlIEVwaGVtZXJhbExvY2FsU3RvcmFnZSwgd2hpY2gg
aXMgdXNlZCBmb3IgbG9jYWxTdG9yYWdlIGluIGVwaGVtZXJhbCBzZXNzaW9uLCBhbmQgdXNlIAor
ICAgICAgICBMb2NhbFN0b3JhZ2UgaW5zdGVhZC4KKworICAgICAgICBBZGQgU2Vzc2lvbklEIHRv
IFN0b3JhZ2VOYW1lc3BhY2UgdG8gbWFrZSBTdG9yYWdlTmFtZXNwYWNlIHNlc3Npb24tc3BlY2lm
aWMuCisKKyAgICAgICAgTm8gbmV3IHRlc3QsIHVwZGF0aW5nIGV4aXN0aW5nIHRlc3RzIGZvciBu
ZXcgYmVoYXZpb3IuCisKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlTdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAg
IChXZWJDb3JlOjpFbXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlRXBoZW1lcmFs
TG9jYWxTdG9yYWdlTmFtZXNwYWNlKTogRGVsZXRlZC4KKworICAgICAgICAqIHBhZ2UvQ2hyb21l
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6Y3JlYXRlV2luZG93IGNvbnN0KTogZXBo
ZW1lcmFsIGxvY2FsU3RvcmFnZSBvZiBkaWZmZXJlbnQgd2luZG93cyB3aWxsIGNvbm5lY3QgdG8g
dGhlIHNhbWUgCisgICAgICAgIFN0b3JhZ2VBcmVhIGluIG5ldHdvcmsgcHJvY2Vzcywgc28gbm8g
bmVlZCB0byBjb3B5IGZyb20gcGFyZW50IHdpbmRvdyB0byBjaGlsZCB3aW5kb3cuCisKKyAgICAg
ICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OnBy
ZXdhcm1Mb2NhbFN0b3JhZ2VJZk5lY2Vzc2FyeSk6IGxvY2FsU3RvcmFnZSB3aWxsIGJlIHByZXdh
cm1lZCBpbiBuZXR3b3JrIHByb2Nlc3MgaW4gdGhlCisgICAgICAgIGluaXRpYWxpemF0aW9uIG9m
IFN0b3JhZ2VBcmVhTWFwLgorCisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Om1fYXBwbGljYXRpb25NYW5pZmVzdCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjp+
UGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzZXRTZXNzaW9uSUQpOgorICAgICAgICAo
V2ViQ29yZTo6UGFnZTo6ZXBoZW1lcmFsTG9jYWxTdG9yYWdlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlBhZ2U6OnNldEVwaGVtZXJhbExvY2FsU3RvcmFnZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpQYWdlOjpzZXRTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIpOiBEZWxldGVk
LgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyKToKKyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U3RvcmFnZTo6cHJld2FybSk6IERlbGV0ZWQuCisgICAgICAgICogc3Rv
cmFnZS9TdG9yYWdlLmg6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlQXJlYS5oOgorICAgICAg
ICAoV2ViQ29yZTo6U3RvcmFnZUFyZWE6OmNsb3NlRGF0YWJhc2VJZklkbGUpOgorICAgICAgICAo
V2ViQ29yZTo6U3RvcmFnZUFyZWE6OnByZXdhcm0pOiBEZWxldGVkLgorICAgICAgICAqIHN0b3Jh
Z2UvU3RvcmFnZU5hbWVzcGFjZS5oOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
cjo6flN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcik6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdl
TmFtZXNwYWNlUHJvdmlkZXI6OmxvY2FsU3RvcmFnZUFyZWEpOgorICAgICAgICAoV2ViQ29yZTo6
U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpsb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjp0cmFuc2llbnRMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVy
OjplbmFibGVMZWdhY3lQcml2YXRlQnJvd3NpbmdGb3JUZXN0aW5nKTogY2hhbmdlIFNlc3Npb25J
RCBvZiBzdG9yYWdlTmFtZXNwYWNlCisgICAgICAgIGFuZCB1cGRhdGUgZXZlcnkgU3RvcmFnZUFy
ZWEgaW4gdGhpcyBuYW1lc3BhY2UuCisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXI6OmFkZFBhZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyOjpyZW1vdmVQYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdG9yYWdl
L1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZVR5
cGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OmlzTG9jYWxTdG9yYWdlKToKKwogMjAxOS0wOC0xNSAg
VGhpYmF1bHQgU2F1bmllciAgPHRzYXVuaWVyQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dTdHJl
YW1lcl1bV2ViUlRDXTogb3BlbmgyNjQgZW5jb2RlciBiaXRyYXRlIGlzIGluIGJpdHMgcGVyIHNl
Y29uZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCA3MDlmNWMzNjI1MTQyODY4OTQ3M2M5OThiMzhmZGFhYmI1NGE2MGNk
Li4yNTRmY2VlODY1NDE2MzhhY2I3N2JhYTY1ZDAwOTM0ZjIxZGJkY2U3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDMwMyBAQAorMjAxOS0wOC0xNSAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNv
bT4KKworICAgICAgICBTb21lIGltcHJvdmVtZW50cyBvbiB3ZWIgc3RvcmFnZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwMzczCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAgICAgICAgRml4IHNvbWUgaXNzdWVzIGlu
IHdlYiBzdG9yYWdlIGFyY2hpdGVjdHVyZS4gRm9yIGV4YW1wbGUsIHNlc3Npb25TdG9yYWdlTmFt
ZVNwYWNlIGZvciB3ZWIgcGFnZSBpcyBwcmVwYXJlZCBhbmQgCisgICAgICAgIGRlc3Ryb3llZCBp
biB0aGUgbmV0d29yayBwcm9jZXNzIHdoZW4gdGhlIHBhZ2UgY29tZXMgYW5kIGdvZXMsIGV2ZW4g
dGhvdWdoIHRoZSBwYWdlIG1heSBub3QgdXNlIHNlc3Npb25TdG9yYWdlIAorICAgICAgICBhdCBh
bGwuIFRoZSBtZXNzYWdlcyBhYm91dCBwYWdlIHN0YXRlIHNlbnQgZnJvbSB3ZWIgcHJvY2VzcyB0
byBuZXR3b3JrIHByb2Nlc3MgY2FuIGJlIHdhc3RlLgorCisgICAgICAgIEhlcmUgYXJlIHNvbWUg
Z2VuZXJhbCBpZGVhcyBvZiB0aGlzIHBhdGNoOgorICAgICAgICAxLiBOZXR3b3JrIHByb2Nlc3Mg
b3ducyB0aGUgd2ViIHN0b3JhZ2UsIGFuZCB3ZWIgcHJvY2VzcyBrZWVwcyBhIHNtYWxsIGxvY2Fs
IGNvcHkgKGJhc2VkIG9uIHNlc3Npb24gYW5kIAorICAgICAgICBvcmlnaW5zIHRoYXQgYXJlIHZp
c2l0ZWQpLiBUaGVyZSBpcyBhIHZpcnR1YWwgY29ubmVjdGlvbiBmcm9tIHRoZSBsb2NhbCBjb3B5
IGluIHRoZSB3ZWIgcHJvY2VzcyB0byB0aGUgb3JpZ2luYWwKKyAgICAgICAgY29weSBpbiB0aGUg
bmV0d29yayBwcm9jZXNzLiBUaGUgY29ubmVjdGlvbiBpcyBjcmVhdGVkIGJ5IHdlYiBwcm9jZXNz
IHdoZW4gc29tZSBwYWdlIGFza3MgZm9yIHdlYiBzdG9yYWdlLgorICAgICAgICAyLiBJZiBjb25u
ZWN0aW9uIGlzIGxvc3QgYmVjYXVzZSBuZXR3b3JrIHByb2Nlc3MgaXMgZ29uZSwgc3RvcmFnZSBp
biBtZW1vcnkgd2lsbCBiZSBsb3N0LiBUaGUgbG9jYWwgY29weSBpbiB3ZWIKKyAgICAgICAgcHJv
Y2Vzc3Mgd2lsbCBiZSBkaXNjYXJkZWQuCisgICAgICAgIDMuIChTZXNzaW9uSUQsIFN0b3JhZ2VO
YW1lc3BhY2VJRCwgU2VjdXJpdHlPcmlnaW4pIGlzIHVzZWQgdG8gaWRlbnRpZnkgYSBzdG9yYWdl
IGFyZWEuIElmIHNlc3Npb24gaXMgY2hhbmdlZCBpbgorICAgICAgICB3ZWIgcHJvY2VzcyAobGlr
ZSBlbmFibGluZyBwcml2YXRlIGJyb3dzaW5nIGluIGxheW91dCB0ZXN0IG5vdyksIGEgcmUtY29u
bmVjdGlvbiB3aXRoIGRpZmZlcmVudCBzZXNzaW9uSUQgd291bGQgCisgICAgICAgIHN1ZmZpY2Ug
dG8gbG9hZCBhbm90aGVyIGNvcHkgb2Ygc3RvcmFnZS4KKyAgICAgICAgNC4gbG9jYWxTdG9yYWdl
IGluIGVwaGVtZXJhbCBzZXNzaW9uIGhhcyB0aGUgc2FtZSBiZWhhdmlvciBhcyBsb2NhbFN0b3Jh
Z2UgaW5zdGVhZCBvZiBzZXNzaW9uU3RvcmFnZSwgd2hpY2gKKyAgICAgICAgbWVhbnMgZGlmZmVy
ZW50IHBhZ2VzIGluIHRoZSBzYW1lIGVwaGVtZXJhbCBzZXNzaW9uIHNoYXJlIHRoZSBzYW1lIGxv
Y2FsU3RvcmFnZS4KKworICAgICAgICBBbHNvLCB0aGlzIHBhdGNoIGludHJvZHVjZXMgU3RvcmFn
ZU1hbmFnZXJTZXQgdG8gbmV0d29yayBwcm9jZXNzLiBJdCBoYW5kbGVzIHdlYiBzdG9yYWdlIHN0
dWZmLCBpbmNsdWRpbmcKKyAgICAgICAgcmVjZWl2aW5nIHN0b3JhZ2UgbWVzc2FnZXMgZnJvbSB3
ZWIgcHJvY2Vzcywgb24gb25lIGJhY2tncm91bmQgdGhyZWFkLiBQcmV2aW91c2x5IGVhY2ggc2Vz
c2lvbiBoYXMgaXRzIG93bgorICAgICAgICBTdG9yYWdlTWFuYWdlciBhbmQgZWFjaCBTdG9yYWdl
TWFuYWdlciBoYXMgaXRzIG93biBXb3JrUXVldWUuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAq
IERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3Vy
Y2VzLm1ha2U6CisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5jcHA6IHJlbW92ZSBtZXNzYWdlIGhhbmRsZXJzIHRoYXQgYXJlIG5vIGxvbmdl
ciBuZWVkZWQuIE5ldHdvcmsKKyAgICAgICAgcHJvY2VzcyBubyBsb25nZXIgbmVlZHMgdG8ga25v
dyBwYWdlIHN0YXRlcyBmcm9tIHdlYiBwcm9jZXNzLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6d2ViUGFnZVdhc0FkZGVkKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OndlYlBhZ2VXYXNS
ZW1vdmVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OndlYlByb2Nlc3NTZXNzaW9uQ2hhbmdlZCk6IERlbGV0ZWQuCisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5p
bjoKKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDogTmV0d29y
a1Byb2Nlc3MgdXNlcyBTdG9yYWdlTWFuYWdlclNldCBpbnN0ZWFkIG9mIFN0b3JhZ2VNYW5hZ2Vy
IGZyb20gCisgICAgICAgIGRpZmZlcmVudCBzZXNzaW9ucyB0byBkZWFsIHdpdGggd2ViIHN0b3Jh
Z2UuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpOZXR3b3JrUHJvY2Vzcyk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplTmV0d29ya1Byb2Nlc3Mp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MpOiBTdG9yYWdlTWFuYWdlclNldCBzdGFydHMgaGFuZGxpbmcgCisgICAg
ICAgIFN0b3JhZ2VNYW5hZ2VyU2V0IG1lc3NhZ2VzIGZyb20gdGhlIG5ldyBjb25uZWN0aW9uLgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6YWRkV2Vic2l0ZURhdGFTdG9yZSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZXN0cm95U2Vzc2lvbik6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpoYXNMb2NhbFN0b3JhZ2UpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFp
bnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6YWN0dWFsUHJlcGFyZVRvU3Vz
cGVuZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZXN1bWUpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c3luY0xvY2FsU3RvcmFnZSk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpjbGVhckxlZ2FjeVByaXZhdGVCcm93c2luZ0xvY2FsU3Rv
cmFnZSk6IGFkZGVkIGZvciBjbGVhcmluZyBpbi1tZW1vcnkgZXBoZW1lcmFsCisgICAgICAgIGxv
Y2FsU3RvcmFnZS4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmdldExvY2FsU3Rv
cmFnZU9yaWdpbkRldGFpbHMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y29u
bmVjdGlvblRvV2ViUHJvY2Vzc0Nsb3NlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzOjp3ZWJQYWdlV2FzQWRkZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzczo6d2ViUGFnZVdhc1JlbW92ZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6d2ViUHJvY2Vzc1dhc0Rpc2Nvbm5lY3RlZCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjp3ZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQpOiBE
ZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHA6IFN0b3JhZ2VNYW5hZ2VyIGlz
IG1vdmVkIG91dCBvZiBOZXR3b3JrU2Vzc2lvbi4gSXQgaXMgbm93IG1hbmFnZWQgYnkgCisgICAg
ICAgIFN0b3JhZ2VNYW5hZ2VyU2V0LgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6
TmV0d29ya1Nlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6fk5ldHdv
cmtTZXNzaW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6c3RvcmFnZU1hbmFnZXIpOiBEZWxldGVk
LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFt
ZXRlcnMuY3BwOiBjcmVhdGlvbiBwYXJhbWV0ZXJzIG9mIFN0b3JhZ2VNYW5hZ2VyIGlzIG1vdmVk
IG91dCBvZgorICAgICAgICBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy4KKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM6OnByaXZhdGVTZXNz
aW9uUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ3JlYXRpb25Q
YXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lv
bkNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5oOgorCisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkxvY2FsU3RvcmFnZURhdGFiYXNlOjp1cGRhdGVEYXRhYmFzZSk6IHJlbW92ZSBhbiBhc3Nl
cnRpb24gdGhhdCBpcyBubyBsb25nZXIgdHJ1ZSBhcyB3ZSBjYW4gZm9yY2UgYW4KKyAgICAgICAg
dXBkYXRlIHdpdGggc3luY0xvY2FsU3RvcmFnZSBub3cuCisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5oOiBtYWtlIHVwZGF0ZURhdGFiYXNl
IHB1YmxpYyBmb3Igc3luY0xvY2FsU3RvcmFnZS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNwcDogTG9jYWxTdG9yYWdl
RGF0YWJhc2VUcmFja2VyIGlzIGNyZWF0ZWQgb24gdGhlCisgICAgICAgIGJhY2tncm91bmQgdGhy
ZWFkIG5vdywgc28gaXQgZG9lcyBub3QgaG9sZCBXb3JrUXVldWUgdG8gZG8gdGhlIGZpbGUgb3Bl
cmF0aW9uLgorICAgICAgICAoV2ViS2l0OjpMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6TG9j
YWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyKToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxTdG9yYWdl
RGF0YWJhc2VUcmFja2VyOjp+TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlTmFtZXNw
YWNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TG9jYWxTdG9yYWdlTmFtZXNwYWNlOjpnZXRPckNy
ZWF0ZVN0b3JhZ2VBcmVhKToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxTdG9yYWdlTmFtZXNwYWNl
OjpjbG9uZVRvKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdl
L0xvY2FsU3RvcmFnZU5hbWVzcGFjZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0
b3JhZ2UvU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpTZXNz
aW9uU3RvcmFnZU5hbWVzcGFjZTo6Z2V0T3JDcmVhdGVTdG9yYWdlQXJlYSk6CisgICAgICAgIChX
ZWJLaXQ6OlNlc3Npb25TdG9yYWdlTmFtZXNwYWNlOjphZGRBbGxvd2VkQ29ubmVjdGlvbik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlNlc3Npb25TdG9yYWdlTmFtZXNwYWNlOjpyZW1vdmVB
bGxvd2VkQ29ubmVjdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvV2Vi
U3RvcmFnZS9TZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS5oOgorICAgICAgICAoV2ViS2l0OjpTZXNz
aW9uU3RvcmFnZU5hbWVzcGFjZTo6YWxsb3dlZENvbm5lY3Rpb25zIGNvbnN0KTogRGVsZXRlZC4K
KworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWEuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpnZW5lcmF0ZVN0b3JhZ2VBcmVhSWRlbnRpZmllcik6IGVhY2ggU3Rv
cmFnZUFyZWEgaGFzIGFuIGlkZW50aWZpZXIuIFN0b3JhZ2VBcmVhTWFwIGluIHdlYiBwcm9jZXNz
IHVzZXMKKyAgICAgICAgdGhpcyBpZGVudGlmaWVyIHRvIGluZGljYXRlIHdoaWNoIFN0b3JhZ2VB
cmVhIGl0IGlzIGNvbm5lY3RpbmcgdG8uCisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhOjpT
dG9yYWdlQXJlYSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhOjp+U3RvcmFnZUFyZWEp
OiBTdG9yYWdlQXJlYSBtYXkgc3RpbGwgaGF2ZSBsaXN0ZW5lcnMgYmVjYXVzZSBTdG9yYWdlQXJl
YSBzaG91bGQgYmUgCisgICAgICAgIGRlc3Ryb3llZCBieSByZXF1ZXN0cyBmcm9tIFVJIHByb2Nl
c3MsIGFuZCBsaXN0ZW5lcnMgYXJlIGNvbm5lY3Rpb25zIHRvIHdlYiBwcm9jZXNzc2VzLgorICAg
ICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYTo6YWRkTGlzdGVuZXIpOiBsb2FkIGxvY2FsU3RvcmFn
ZURhdGFiYXNlIGluIGFkdmFuY2UgaWYgdGhlcmUgaXMgc29tZSBjb25uZWN0aW9uIHRvIHRoaXMg
CisgICAgICAgIExvY2FsU3RvcmFnZSBhcmVhLgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJl
YTo6cmVtb3ZlTGlzdGVuZXIpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYTo6aGFzTGlz
dGVuZXIgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYTo6Y2xlYXIpOgorICAg
ICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYTo6b3BlbkRhdGFiYXNlQW5kSW1wb3J0SXRlbXNJZk5l
ZWRlZCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhOjpkaXNwYXRjaEV2ZW50
cyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhOjpzeW5jVG9EYXRhYmFzZSk6
CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhOjpzZXRJdGVtcyk6IERlbGV0ZWQuIFN0b3Ag
c3luY2luZyBmcm9tIHdlYiBwcm9jZXNzIHRvIG5ldHdvcmsgcHJvY2VzcyBhZnRlciBuZXR3b3Jr
IHByb2Nlc3MKKyAgICAgICAgaXMgcmVsYXVuY2hlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhLmg6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVh
OjppZGVudGlmaWVyKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWE6OnNldFdvcmtRdWV1
ZSk6CisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2Vy
LmNwcDogU3RvcmFnZU1hbmFnZXIgc2hvdWxkIGJlIGFjY2Vzc2VkIGJ5IG9ubHkgYmFja2dyb3Vu
ZCB0aHJlYWQgbm93LgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6U3RvcmFnZU1h
bmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6flN0b3JhZ2VNYW5hZ2Vy
KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdl
TmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmRlc3Ryb3lTZXNz
aW9uU3RvcmFnZU5hbWVzcGFjZSk6IHRoaXMgaXMgbm90IHVzZWQgbm93IGJ1dCBrZWVwIGl0IGZv
ciBmdXR1cmUgCisgICAgICAgIGltcHJvdmVtZW50IHRvIHJlbW92ZSBpbi1tZW1vcnkgc2Vzc2lv
blN0b3JhZ2UgaW4gbmV0d29yayBwcm9jZXNzIGlmIHdlIGtub3cgc29tZSB3ZWIgcGFnZSBpcyBn
b25lIGZvcmV2ZXIuCisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpjbG9uZVNlc3Np
b25TdG9yYWdlTmFtZXNwYWNlKTogcHJldmlvdXNseSBlYWNoIHBhZ2UgaGFkIGl0cyBvd24gZXBo
ZW1lcmFsIAorICAgICAgICBsb2NhbFN0b3JhZ2VOYW1lc3BhY2UgYW5kIG5vdyBhbGwgcGFnZXMg
aW4gdGhlIHNhbWUgc2Vzc2lvbiBzaGFyZSBvbmUgbG9jYWxTdG9yYWdlLCBzbyB3ZSBkb24ndCBu
ZWVkIHRvIGNsb25lCisgICAgICAgIGxvY2FsU3RvcmFnZU5hbWVzcGFjZS4KKyAgICAgICAgKFdl
YktpdDo6U3RvcmFnZU1hbmFnZXI6OmdldFNlc3Npb25TdG9yYWdlT3JpZ2lucyk6CisgICAgICAg
IChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVTZXNzaW9uU3RvcmFnZU9yaWdpbnMpOgor
ICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlU2Vzc2lvblN0b3JhZ2VFbnRy
aWVzRm9yT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpnZXRMb2Nh
bFN0b3JhZ2VPcmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmdldExv
Y2FsU3RvcmFnZU9yaWdpbkRldGFpbHMpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdl
cjo6ZGVsZXRlTG9jYWxTdG9yYWdlT3JpZ2luc01vZGlmaWVkU2luY2UpOgorICAgICAgICAoV2Vi
S2l0OjpTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlTG9jYWxTdG9yYWdlRW50cmllc0Zvck9yaWdpbnMp
OgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlTG9jYWxTdG9yYWdlQXJl
YSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVUcmFuc2llbnRMb2Nh
bFN0b3JhZ2VBcmVhKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmNyZWF0ZVNl
c3Npb25TdG9yYWdlQXJlYSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpnZXRP
ckNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VN
YW5hZ2VyOjpnZXRPckNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAg
ICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpnZXRPckNyZWF0ZVNlc3Npb25TdG9yYWdlTmFt
ZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmNsZWFyU3RvcmFnZU5h
bWVzcGFjZXMpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6YWRkQWxsb3dlZFNl
c3Npb25TdG9yYWdlTmFtZXNwYWNlQ29ubmVjdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OlN0b3JhZ2VNYW5hZ2VyOjpyZW1vdmVBbGxvd2VkU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VD
b25uZWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OnBy
b2Nlc3NEaWRDbG9zZUNvbm5lY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTdG9y
YWdlTWFuYWdlcjo6ZGVsZXRlTG9jYWxTdG9yYWdlRW50cmllc0Zvck9yaWdpbik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVMb2NhbFN0b3JhZ2VNYXAp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlVHJhbnNp
ZW50TG9jYWxTdG9yYWdlTWFwKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1h
bmFnZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTWFwKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6U3RvcmFnZU1hbmFnZXI6OmRlc3Ryb3lTdG9yYWdlTWFwKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OnByZXdhcm0pOiBEZWxldGVkLgorICAgICAgICAoV2Vi
S2l0OjpTdG9yYWdlTWFuYWdlcjo6Z2V0VmFsdWVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6U3RvcmFnZU1hbmFnZXI6OnNldEl0ZW0pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpT
dG9yYWdlTWFuYWdlcjo6c2V0SXRlbXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTdG9y
YWdlTWFuYWdlcjo6cmVtb3ZlSXRlbSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlN0b3Jh
Z2VNYW5hZ2VyOjpjbGVhcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5h
Z2VyOjp3YWl0VW50aWxUYXNrc0ZpbmlzaGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
U3RvcmFnZU1hbmFnZXI6OnN1c3BlbmQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTdG9y
YWdlTWFuYWdlcjo6cmVzdW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1h
bmFnZXI6OmZpbmRTdG9yYWdlQXJlYSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5oOgorICAgICAgICAoV2ViS2l0OjpT
dG9yYWdlTWFuYWdlcjo6d29ya1F1ZXVlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKCk6IERl
bGV0ZWQuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5h
Z2VyLm1lc3NhZ2VzLmluOiBSZW1vdmVkLiBNb3ZlZCB0byBTdG9yYWdlTWFuYWdlclNldC5tZXNz
YWdlcy5pbi4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1h
bmFnZXJTZXQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXJTZXQ6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpTdG9yYWdlTWFu
YWdlclNldCk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0Ojp+U3RvcmFnZU1h
bmFnZXJTZXQpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlclNldDo6YWRkKToKKyAg
ICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXJTZXQ6OnJlbW92ZSk6CisgICAgICAgIChXZWJL
aXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0Ojpjb250YWlucyk6CisgICAgICAgIChXZWJLaXQ6OlN0b3Jh
Z2VNYW5hZ2VyU2V0OjphZGRDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1h
bmFnZXJTZXQ6OnJlbW92ZUNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFu
YWdlclNldDo6d2FpdFVudGlsVGFza3NGaW5pc2hlZCk6CisgICAgICAgIChXZWJLaXQ6OlN0b3Jh
Z2VNYW5hZ2VyU2V0Ojp3YWl0VW50aWxTeW5jaW5nTG9jYWxTdG9yYWdlRmluaXNoZWQpOgorICAg
ICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlclNldDo6c3VzcGVuZCk6CisgICAgICAgIChXZWJL
aXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpyZXN1bWUpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdl
TWFuYWdlclNldDo6Z2V0U2Vzc2lvblN0b3JhZ2VPcmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6
U3RvcmFnZU1hbmFnZXJTZXQ6OmRlbGV0ZVNlc3Npb25TdG9yYWdlKToKKyAgICAgICAgKFdlYktp
dDo6U3RvcmFnZU1hbmFnZXJTZXQ6OmRlbGV0ZVNlc3Npb25TdG9yYWdlRm9yT3JpZ2lucyk6Cisg
ICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpnZXRMb2NhbFN0b3JhZ2VPcmlnaW5z
KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXJTZXQ6OmRlbGV0ZUxvY2FsU3RvcmFn
ZU1vZGlmaWVkU2luY2UpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlclNldDo6ZGVs
ZXRlTG9jYWxTdG9yYWdlRm9yT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5h
Z2VyU2V0OjpnZXRMb2NhbFN0b3JhZ2VPcmlnaW5EZXRhaWxzKToKKyAgICAgICAgKFdlYktpdDo6
U3RvcmFnZU1hbmFnZXJTZXQ6OmNvbm5lY3RUb0xvY2FsU3RvcmFnZUFyZWEpOgorICAgICAgICAo
V2ViS2l0OjpTdG9yYWdlTWFuYWdlclNldDo6Y29ubmVjdFRvVHJhbnNpZW50TG9jYWxTdG9yYWdl
QXJlYSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0Ojpjb25uZWN0VG9TZXNz
aW9uU3RvcmFnZUFyZWEpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlclNldDo6ZGlz
Y29ubmVjdEZyb21TdG9yYWdlQXJlYSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2Vy
U2V0OjpnZXRWYWx1ZXMpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlclNldDo6c2V0
SXRlbSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpyZW1vdmVJdGVtKToK
KyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXJTZXQ6OmNsZWFyKToKKyAgICAgICAgKFdl
YktpdDo6U3RvcmFnZU1hbmFnZXJTZXQ6OmNsb25lU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQuaDog
QWRkZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdl
clNldC5tZXNzYWdlcy5pbjogQWRkZWQuCisKKyAgICAgICAgKiBTaGFyZWQvV2Vic2l0ZURhdGFT
dG9yZVBhcmFtZXRlcnMuY3BwOiBjcmVhdGlvbiBwYXJhbWV0ZXJzIG9mIFN0b3JhZ2VNYW5hZ2Vy
IGFyZSBtb3ZlZCB0byAKKyAgICAgICAgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuCisgICAg
ICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAg
ICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM6OnByaXZhdGVTZXNzaW9u
UGFyYW1ldGVycyk6CisgICAgICAgICogU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJz
Lmg6CisgICAgICAgICogU291cmNlcy50eHQ6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mv
V0tDb250ZXh0LmNwcDogYWRkIFNQSSBmb3IgdGVzdHMuCisgICAgICAgIChXS0NvbnRleHRTeW5j
TG9jYWxTdG9yYWdlKToKKyAgICAgICAgKFdLQ29udGV4dENsZWFyTGVnYWN5UHJpdmF0ZUJyb3dz
aW5nTG9jYWxTdG9yYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0UHJp
dmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYu
Y3BwOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlTG9jYWxTdG9yYWdlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc1Bvb2w6OnN5bmNMb2NhbFN0b3JhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbDo6Y2xlYXJMZWdhY3lQcml2YXRlQnJvd3NpbmdMb2NhbFN0b3JhZ2UpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZTo6cGFyYW1ldGVycyk6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlLmNwcDogc2Vzc2lvbiBjaGFuZ2Ugb2Ygd2ViIHN0b3JhZ2UgaXMgZG9uZSB2aWEgCisgICAg
ICAgIFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciBpbnN0ZWFkIG9mIFdlYlByb2Nlc3Mgbm93
LgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6c2V0UHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDogd2ViIHByb2Nlc3Mg
bm8gbG9uZ2VyIHNlbmRzIG1lc3NzYWdlcyBhYm91dCBwYWdlIHN0YXRlIHRvIG5ldHdvcmsgcHJv
Y2Vzcy4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6Y3JlYXRlV2ViUGFnZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnJlbW92ZVdlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzOjplbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzOjpuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25DbG9zZWQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzdG9yYWdlQXJlYU1hcCBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3M6OmVuYWJsZVByaXZhdGVCcm93c2luZ0ZvclRlc3RpbmcpOiBE
ZWxldGVkLiBUaGlzIHdhcyB1c2VkIGZvciBjaGFuZ2luZyBzZXNzaW9uIHZpYSAKKyAgICAgICAg
V2ViUHJvY2Vzcy4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6U3RvcmFnZUFyZWFJbXBsOjpTdG9yYWdlQXJlYUltcGwpOgorICAgICAgICAoV2ViS2l0
OjpTdG9yYWdlQXJlYUltcGw6Omxlbmd0aCk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVh
SW1wbDo6a2V5KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFJbXBsOjppdGVtKToKKyAg
ICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFJbXBsOjpzZXRJdGVtKToKKyAgICAgICAgKFdlYktp
dDo6U3RvcmFnZUFyZWFJbXBsOjpyZW1vdmVJdGVtKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFn
ZUFyZWFJbXBsOjpjbGVhcik6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1wbDo6Y29u
dGFpbnMpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYUltcGw6OnN0b3JhZ2VUeXBlIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFJbXBsOjppbmNyZW1lbnRBY2Nlc3ND
b3VudCk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1wbDo6ZGVjcmVtZW50QWNjZXNz
Q291bnQpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYUltcGw6OnByZXdhcm0pOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYUltcGw6OnNlY3VyaXR5T3JpZ2luIGNv
bnN0KTogRGVsZXRlZC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdl
QXJlYUltcGwuaDogbWFrZSBTdG9yYWdlQXJlYUltcGwgaG9sZCBhIHdlYWsgcmVmZXJlbmNlIHRv
IFN0b3JhZ2VBcmVhTWFwIGFuZCAKKyAgICAgICAgU3RvcmFnZU5hbWVzcGFjZUltcGwgaG9sZCBh
IHN0cm9uZyByZWZlcmVuY2UuIEluIHRoaXMgd2F5IGxpZmVpbWUgb2YgbG9jYWxTdG9yYWdlIFN0
b3JhZ2VBcmVyYU1hcCBzdGF5cyBhbGlnbiAKKyAgICAgICAgd2l0aCBTdG9yYWdlTmFtZVNwYWNl
UHJvdmlkZXIgYW5kIFBhZ2UuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3Rv
cmFnZUFyZWFNYXAuY3BwOiBpZGVudGlmaWVyIG9mIFN0b3JhZ2VBcmVhTWFwIGlzIHRoZSBzYW1l
IGFzIGlkZW50aWZpZXIgb2YgCisgICAgICAgIFN0b3JhZ2VBcmVhIGl0IGNvbm5lY3RzIHRvLiBJ
ZiB0aGUgaWRlbnRpZmllciBpcyAwLCBpdCBtZWFucyB0aGUgU3RvcmFnZUFyZWFNYXAgaXMgZGlz
Y29ubmVjdGVkLgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6U3RvcmFnZUFyZWFN
YXApOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6flN0b3JhZ2VBcmVhTWFwKToK
KyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OnNldEl0ZW0pOgorICAgICAgICAoV2Vi
S2l0OjpTdG9yYWdlQXJlYU1hcDo6cmVtb3ZlSXRlbSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3Jh
Z2VBcmVhTWFwOjpjbGVhcik6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwOjpyZXNl
dFZhbHVlcyk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwOjpsb2FkVmFsdWVzSWZO
ZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6YXBwbHlDaGFuZ2UpOgor
ICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6ZGlzcGF0Y2hTdG9yYWdlRXZlbnQpOgor
ICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6ZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2
ZW50KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OmRpc3BhdGNoTG9jYWxTdG9y
YWdlRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6Y29ubmVjdCk6Cisg
ICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwOjpkaXNjb25uZWN0KToKKyAgICAgICAgKFdl
YktpdDo6Z2VuZXJhdGVTdG9yYWdlTWFwSUQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpT
dG9yYWdlQXJlYU1hcDo6cHJld2FybSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlN0b3Jh
Z2VBcmVhTWFwOjpkaWRHZXRWYWx1ZXMpOiBEZWxldGVkLiBUaGlzIGlzIHVzZWxlc3MgYXMgR2V0
VmFsdWVzIGlzIGEgc3luY2hyb25vdXMgb3BlcmF0aW9uLgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5oOgorICAgICAgICAoKTogRGVsZXRlZC4KKworICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5tZXNzYWdlcy5pbjog
dGhlcmUgYXJlIHR3byBzeW5jaHJvbm91cyBtZXNzYWdlcywgb25lIGZvciBjb25uZWN0aW9uIGFu
ZCAKKyAgICAgICAgb25lIGZvciBnZXR0aW5nIHZhbHVlcy4gV2UgbWF5IG1lcmdlIHRoZW0gaW50
byBvbmUgaW4gZnV0dXJlIGltcHJvdmVtZW50LgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViU3Rv
cmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VO
YW1lc3BhY2VJbXBsOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChX
ZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2Up
OgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlVHJhbnNpZW50
TG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVzcGFj
ZUltcGw6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5h
bWVzcGFjZUltcGw6OnN0b3JhZ2VBcmVhKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVz
cGFjZUltcGw6OmNvcHkpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6
c2V0U2Vzc2lvbklERm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOiBEZWxldGVkLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNy
ZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVRyYW5zaWVudExv
Y2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlN0b3JhZ2VOYW1lc3Bh
Y2VQcm92aWRlcjo6Y3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVBy
b3ZpZGVyLmg6CisKIDIwMTktMDgtMTQgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIG1fYmxvY2tSZWN0Rm9yVGV4dFNlbGVjdGlvbiAoYWxv
bmcgd2l0aCByZWxhdGVkIGNvZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCmluZGV4IGQ3YmZmY2JkMzdi
ZmUyMjcxNzA4YTYzMmEzMWY5NDdiZmJjM2MxMWYuLjY2ZTVmYTNhMmJjZDAwODRmZWUwODQzYTYz
NTYwNzU4ZWYxZjI1ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIw
MTktMDgtMTUgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgU29t
ZSBpbXByb3ZlbWVudHMgb24gd2ViIHN0b3JhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDM3MworCisgICAgICAgIFJldmlld2VkIGJ5IEdlb2Zm
cmV5IEdhcmVuLgorCisgICAgICAgIERvIHNvbWUgY2xlYW4tdXAgYW5kIGFkZCBzdXBwb3J0IGZv
ciBzZXNzaW9uIGNoYW5nZSBvZiB3ZWIgc3RvcmFnZSBpbiBsYXlvdXQgdGVzdHMuCisKKyAgICAg
ICAgKiBTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3Jh
Z2VBcmVhSW1wbDo6c2Vzc2lvbkNoYW5nZWQpOgorICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZUFy
ZWFJbXBsLmg6CisgICAgICAgICgpOiBEZWxldGVkLgorCisgICAgICAgICogU3RvcmFnZS9TdG9y
YWdlQXJlYVN5bmMuaDogbWFrZSBzdXJlIFN0b3JhZ2VBcmVhU3luYyBpcyBkZXN0cnVjdGVkIG9u
IHRoZSBtYWluIHRocmVhZCwgYXMgaXQgY2FuIGJlIAorICAgICAgICBkZXJlZmVyZW5jZWQgaW4g
U3RvcmFnZUFyZWFJbXBsOjpzZXNzaW9uQ2hhbmdlZCBhbmQgaXRzIGxhc3QgcmVmZXJlbmNlIGZv
ciBmaW5hbCBzeW5jIGNvdWxkIGJlIHJlbGVhc2VkIG9uIHRoZSAKKyAgICAgICAgYmFja2dyb3Vu
ZCB0aHJlYWQuCisKKyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcDog
cmVwbGFjZSBFcGhlbWVyYWxMb2NhbFN0b3JhZ2Ugd2l0aCBMb2NhbFN0b3JhZ2UsIGFuZCBzdG9y
ZSBTZXNzaW9uSUQgaW4gCisgICAgICAgIFN0b3JhZ2VOYW1lc3BhY2UuCisgICAgICAgIChXZWJL
aXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSk6
CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpnZXRPckNyZWF0ZUxvY2Fs
U3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBs
OjpTdG9yYWdlTmFtZXNwYWNlSW1wbCk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsOjpjb3B5KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUltcGw6OmNs
b3NlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUltcGw6OnNldFNlc3Npb25J
REZvclRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3Jl
YXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBT
dG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmg6CisgICAgICAgICogU3RvcmFnZS9XZWJTdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTdG9yYWdlTmFt
ZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVMb2NhbFN0b3JhZ2VO
YW1lc3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6
OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdl
TmFtZXNwYWNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3Bh
Y2VQcm92aWRlci5oOgorCiAyMDE5LTA4LTE0ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBw
bGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyNDg1MjYuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggMDJhMWNlN2JhNjhlYmRkMmU3ZmIzYWJmODRjM2Ri
NjhkNzQ4NWU2ZS4uYmExNjBjZGM0NmQ2MDljN2ZkODJiYzg1ZWY0MGQ4ZjdiMmI3OWU3YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE5LTA4LTE1ICBT
aWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIFNvbWUgaW1wcm92ZW1l
bnRzIG9uIHdlYiBzdG9yYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDAzNzMKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4K
KworICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBfcHJl
ZmVyZW5jZXNDaGFuZ2VkOl0pOiBub3RpZnkgc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyIGFib3V0
IHNlc3Npb24gY2hhbmdlLgorCiAyMDE5LTA4LTE0ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRA
YXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyNDg1MjYuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IGM0NTBjMDg3MGMwZGI5MDAy
YjkwNGM3YjZjYmNlNGM5NjkwMmM2ZGMuLjA0NTNkN2U2ZDllMzY1NjAyYWM5YWJkOTk5YjRlMmZh
YjEzMmFkYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC0zOTAs
MTggKzM5MCwxOSBAQCBjbGFzcyBFbXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciBmaW5hbCA6
IHB1YmxpYyBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgewogICAgICAgICBib29sIGNvbnRhaW5z
KGNvbnN0IFN0cmluZyYpIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIFN0b3JhZ2VU
eXBlIHN0b3JhZ2VUeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gU3RvcmFnZVR5cGU6OkxvY2Fs
OyB9CiAgICAgICAgIHNpemVfdCBtZW1vcnlCeXRlc1VzZWRCeUNhY2hlKCkgZmluYWwgeyByZXR1
cm4gMDsgfQotICAgICAgICBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2lu
KCkgY29uc3QgZmluYWwgeyBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2VjdXJpdHlPcmlnaW5EYXRh
PiBvcmlnaW47IHJldHVybiBvcmlnaW4uZ2V0KCk7IH0KICAgICB9OwogCiAgICAgc3RydWN0IEVt
cHR5U3RvcmFnZU5hbWVzcGFjZSBmaW5hbCA6IHB1YmxpYyBTdG9yYWdlTmFtZXNwYWNlIHsKICAg
ICAgICAgUmVmPFN0b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYShjb25zdCBTZWN1cml0eU9yaWdpbkRh
dGEmKSBmaW5hbCB7IHJldHVybiBhZG9wdFJlZigqbmV3IEVtcHR5U3RvcmFnZUFyZWEpOyB9CiAg
ICAgICAgIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjb3B5KFBhZ2UqKSBmaW5hbCB7IHJldHVybiBh
ZG9wdFJlZigqbmV3IEVtcHR5U3RvcmFnZU5hbWVzcGFjZSk7IH0KKyAgICAgICAgUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklEKCkgY29uc3QgeyByZXR1cm4gUEFMOjpTZXNzaW9uSUQ6OmVtcHR5U2Vz
c2lvbklEKCk7IH0KKyAgICAgICAgdm9pZCBzZXRTZXNzaW9uSURGb3JUZXN0aW5nKFBBTDo6U2Vz
c2lvbklEKSB7IH07CiAgICAgfTsKIAogICAgIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVT
ZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQpIGZpbmFsOwotICAgIFJlZjxT
dG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQpIGZp
bmFsOwotICAgIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UoUGFnZSYsIHVuc2lnbmVkKSBmaW5hbDsKLSAgICBSZWY8U3RvcmFnZU5hbWVz
cGFjZT4gY3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFNlY3VyaXR5T3JpZ2lu
JiwgdW5zaWduZWQpIGZpbmFsOworICAgIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVMb2Nh
bFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQsIFBBTDo6U2Vzc2lvbklEKSBmaW5hbDsKKyAgICBS
ZWY8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNl
KFNlY3VyaXR5T3JpZ2luJiwgdW5zaWduZWQsIFBBTDo6U2Vzc2lvbklEKSBmaW5hbDsKKwogfTsK
IAogY2xhc3MgRW1wdHlVc2VyQ29udGVudFByb3ZpZGVyIGZpbmFsIDogcHVibGljIFVzZXJDb250
ZW50UHJvdmlkZXIgewpAQCAtNTI1LDE3ICs1MjYsMTIgQEAgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+
IEVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVz
cGEKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBFbXB0eVN0b3JhZ2VOYW1lc3BhY2UpOwogfQog
Ci1SZWY8U3RvcmFnZU5hbWVzcGFjZT4gRW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNy
ZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCkKLXsKLSAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBFbXB0eVN0b3JhZ2VOYW1lc3BhY2UpOwotfQotCi1SZWY8U3RvcmFnZU5hbWVzcGFj
ZT4gRW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3Rv
cmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQpCitSZWY8U3RvcmFnZU5hbWVzcGFjZT4gRW1w
dHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1
bnNpZ25lZCwgUEFMOjpTZXNzaW9uSUQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRW1w
dHlTdG9yYWdlTmFtZXNwYWNlKTsKIH0KIAotUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IEVtcHR5U3Rv
cmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2UoU2VjdXJpdHlPcmlnaW4mLCB1bnNpZ25lZCkKK1JlZjxTdG9yYWdlTmFtZXNwYWNlPiBFbXB0
eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFt
ZXNwYWNlKFNlY3VyaXR5T3JpZ2luJiwgdW5zaWduZWQsIFBBTDo6U2Vzc2lvbklEKQogewogICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IEVtcHR5U3RvcmFnZU5hbWVzcGFjZSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0Nocm9tZS5jcHAKaW5kZXggOTc1ODMyOWJhOTA5Y2Q5MTNjYWI0Njg1ZDcxYWU5ZGE0ZmMzNWNh
Ni4uNzNmZWUwN2Q5YTE1NDkyNWE1MWE2N2UyNGM1MzUxOWUxMzcyNjcwZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q2hyb21lLmNwcApAQCAtMTg5LDggKzE4OSw2IEBAIFBhZ2UqIENocm9tZTo6Y3JlYXRlV2luZG93
KEZyYW1lJiBmcmFtZSwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QKIAog
ICAgIGlmIChhdXRvKiBvbGRTZXNzaW9uU3RvcmFnZSA9IG1fcGFnZS5zZXNzaW9uU3RvcmFnZShm
YWxzZSkpCiAgICAgICAgIG5ld1BhZ2UtPnNldFNlc3Npb25TdG9yYWdlKG9sZFNlc3Npb25TdG9y
YWdlLT5jb3B5KG5ld1BhZ2UpKTsKLSAgICBpZiAoYXV0byogb2xkRXBoZW1lcmFsTG9jYWxTdG9y
YWdlID0gbV9wYWdlLmVwaGVtZXJhbExvY2FsU3RvcmFnZShmYWxzZSkpCi0gICAgICAgIG5ld1Bh
Z2UtPnNldEVwaGVtZXJhbExvY2FsU3RvcmFnZShvbGRFcGhlbWVyYWxMb2NhbFN0b3JhZ2UtPmNv
cHkobmV3UGFnZSkpOwogCiAgICAgcmV0dXJuIG5ld1BhZ2U7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdp
bmRvdy5jcHAKaW5kZXggMTdjYmE1ZTRmZjRlMmI1YmM4ODgxYTI3MGE0MzhjZDhhNTQzNTY3Mi4u
MzA3NGIxOGVlMzZlNDEwNjBkYzIyZTlhNDNkNTE4OGVkNDI4M2JjNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RE9NV2luZG93LmNwcApAQCAtNDQyLDggKzQ0Miw3IEBAIHZvaWQgRE9NV2luZG93OjpwcmV3YXJt
TG9jYWxTdG9yYWdlSWZOZWNlc3NhcnkoKQogICAgIGlmICghbG9jYWxTdG9yYWdlKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBpZiAobG9jYWxTdG9yYWdlLT5wcmV3YXJtKCkpCi0gICAgICAgIHBh
Z2UtPm1haW5GcmFtZSgpLmRpZFByZXdhcm1Mb2NhbFN0b3JhZ2UoKTsKKyAgICBwYWdlLT5tYWlu
RnJhbWUoKS5kaWRQcmV3YXJtTG9jYWxTdG9yYWdlKCk7CiB9CiAKIERPTVdpbmRvdzo6fkRPTVdp
bmRvdygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCA0ZDRhNDljNzMxYTRjYWY0NmVkZTYxMTU3N2Ni
MzllNmJmZmYwYTIyLi4zOTVkMmYwMTIzM2NiOTg5ZTdlZjU1NWNjNzE4YmU5NDg5NjcxMmQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTI4OSw3ICsyODksNiBAQCBQYWdlOjpQYWdlKFBhZ2VDb25m
aWd1cmF0aW9uJiYgcGFnZUNvbmZpZ3VyYXRpb24pCiAgICAgdXBkYXRlVGltZXJUaHJvdHRsaW5n
U3RhdGUoKTsKIAogICAgIG1fcGx1Z2luSW5mb1Byb3ZpZGVyLT5hZGRQYWdlKCp0aGlzKTsKLSAg
ICBtX3N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci0+YWRkUGFnZSgqdGhpcyk7CiAgICAgbV91c2Vy
Q29udGVudFByb3ZpZGVyLT5hZGRQYWdlKCp0aGlzKTsKICAgICBtX3Zpc2l0ZWRMaW5rU3RvcmUt
PmFkZFBhZ2UoKnRoaXMpOwogCkBAIC0zNjcsNyArMzY2LDYgQEAgUGFnZTo6flBhZ2UoKQogI2Vu
ZGlmCiAKICAgICBtX3BsdWdpbkluZm9Qcm92aWRlci0+cmVtb3ZlUGFnZSgqdGhpcyk7Ci0gICAg
bV9zdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXItPnJlbW92ZVBhZ2UoKnRoaXMpOwogICAgIG1fdXNl
ckNvbnRlbnRQcm92aWRlci0+cmVtb3ZlUGFnZSgqdGhpcyk7CiAgICAgbV92aXNpdGVkTGlua1N0
b3JlLT5yZW1vdmVQYWdlKCp0aGlzKTsKIH0KQEAgLTE1MTAsMTkgKzE1MDgsNiBAQCB2b2lkIFBh
Z2U6OnNldFNlc3Npb25TdG9yYWdlKFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiYmIG5ld1N0b3Jh
Z2UpCiAgICAgbV9zZXNzaW9uU3RvcmFnZSA9IFdURk1vdmUobmV3U3RvcmFnZSk7CiB9CiAKLVN0
b3JhZ2VOYW1lc3BhY2UqIFBhZ2U6OmVwaGVtZXJhbExvY2FsU3RvcmFnZShib29sIG9wdGlvbmFs
Q3JlYXRlKQotewotICAgIGlmICghbV9lcGhlbWVyYWxMb2NhbFN0b3JhZ2UgJiYgb3B0aW9uYWxD
cmVhdGUpCi0gICAgICAgIG1fZXBoZW1lcmFsTG9jYWxTdG9yYWdlID0gbV9zdG9yYWdlTmFtZXNw
YWNlUHJvdmlkZXItPmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZSgqdGhpcywg
bV9zZXR0aW5ncy0+c2Vzc2lvblN0b3JhZ2VRdW90YSgpKTsKLQotICAgIHJldHVybiBtX2VwaGVt
ZXJhbExvY2FsU3RvcmFnZS5nZXQoKTsKLX0KLQotdm9pZCBQYWdlOjpzZXRFcGhlbWVyYWxMb2Nh
bFN0b3JhZ2UoUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+JiYgbmV3U3RvcmFnZSkKLXsKLSAgICBt
X2VwaGVtZXJhbExvY2FsU3RvcmFnZSA9IFdURk1vdmUobmV3U3RvcmFnZSk7Ci19Ci0KIGJvb2wg
UGFnZTo6aGFzQ3VzdG9tSFRNTFRva2VuaXplclRpbWVEZWxheSgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIG1fc2V0dGluZ3MtPm1heFBhcnNlRHVyYXRpb24oKSAhPSAtMTsKQEAgLTI0NzAsMTUgKzI0
NTUsNiBAQCB2b2lkIFBhZ2U6OnNldFVzZXJDb250ZW50UHJvdmlkZXIoUmVmPFVzZXJDb250ZW50
UHJvdmlkZXI+JiYgdXNlckNvbnRlbnRQcm92aWRlcgogICAgIGludmFsaWRhdGVJbmplY3RlZFN0
eWxlU2hlZXRDYWNoZUluQWxsRnJhbWVzKCk7CiB9CiAKLXZvaWQgUGFnZTo6c2V0U3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyKFJlZjxTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI+JiYgc3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyKQotewotICAgIG1fc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLT5yZW1v
dmVQYWdlKCp0aGlzKTsKLSAgICBtX3N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciA9IFdURk1vdmUo
c3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKTsKLSAgICBtX3N0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
ci0+YWRkUGFnZSgqdGhpcyk7Ci0KLSAgICAvLyBUaGlzIG5lZWRzIHRvIHJlc2V0IGFsbCB0aGUg
bG9jYWwgc3RvcmFnZSBuYW1lc3BhY2VzIG9mIGFsbCB0aGUgcGFnZXMuCi19Ci0KIFZpc2l0ZWRM
aW5rU3RvcmUmIFBhZ2U6OnZpc2l0ZWRMaW5rU3RvcmUoKQogewogICAgIHJldHVybiBtX3Zpc2l0
ZWRMaW5rU3RvcmU7CkBAIC0yNTA3LDYgKzI0ODMsOSBAQCB2b2lkIFBhZ2U6OnNldFNlc3Npb25J
RChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAgICAgIG1faWRiQ29ubmVjdGlvblRvU2Vy
dmVyID0gbnVsbHB0cjsKICNlbmRpZgogCisgICAgaWYgKHNlc3Npb25JRCAhPSBtX3Nlc3Npb25J
RCAmJiBtX3Nlc3Npb25TdG9yYWdlKQorICAgICAgICBtX3Nlc3Npb25TdG9yYWdlLT5zZXRTZXNz
aW9uSURGb3JUZXN0aW5nKHNlc3Npb25JRCk7CisKICAgICBib29sIHByaXZhdGVCcm93c2luZ1N0
YXRlQ2hhbmdlZCA9IChzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSAhPSBtX3Nlc3Npb25JRC5pc0Vw
aGVtZXJhbCgpKTsKIAogICAgIG1fc2Vzc2lvbklEID0gc2Vzc2lvbklEOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApp
bmRleCBjNDQwMjM0NDNjODU2ZGEyMmIwZTQxOWY4ZmM1ZjI2NTJmODYyZmU3Li43Yzg2NTAyMzEw
ZjExZGQzYWEwYzlkNjE2OWUzODU4ZTkzMmVhOTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtNTA3LDkg
KzUwNyw2IEBAIHB1YmxpYzoKICAgICBTdG9yYWdlTmFtZXNwYWNlKiBzZXNzaW9uU3RvcmFnZShi
b29sIG9wdGlvbmFsQ3JlYXRlID0gdHJ1ZSk7CiAgICAgdm9pZCBzZXRTZXNzaW9uU3RvcmFnZShS
ZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4mJik7CiAKLSAgICBTdG9yYWdlTmFtZXNwYWNlKiBlcGhl
bWVyYWxMb2NhbFN0b3JhZ2UoYm9vbCBvcHRpb25hbENyZWF0ZSA9IHRydWUpOwotICAgIHZvaWQg
c2V0RXBoZW1lcmFsTG9jYWxTdG9yYWdlKFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiYmKTsKLQog
ICAgIGJvb2wgaGFzQ3VzdG9tSFRNTFRva2VuaXplclRpbWVEZWxheSgpIGNvbnN0OwogICAgIGRv
dWJsZSBjdXN0b21IVE1MVG9rZW5pemVyVGltZURlbGF5KCkgY29uc3Q7CiAKQEAgLTU5OSw3ICs1
OTYsNiBAQCBwdWJsaWM6CiAgICAgQ29va2llSmFyJiBjb29raWVKYXIoKSB7IHJldHVybiBtX2Nv
b2tpZUphci5nZXQoKTsgfQogCiAgICAgU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyJiBzdG9yYWdl
TmFtZXNwYWNlUHJvdmlkZXIoKSB7IHJldHVybiBtX3N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5n
ZXQoKTsgfQotICAgIHZvaWQgc2V0U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKFJlZjxTdG9yYWdl
TmFtZXNwYWNlUHJvdmlkZXI+JiYpOwogCiAgICAgUGx1Z2luSW5mb1Byb3ZpZGVyJiBwbHVnaW5J
bmZvUHJvdmlkZXIoKTsKIApAQCAtODc3LDcgKzg3Myw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBt
X2NhblN0YXJ0TWVkaWEgeyB0cnVlIH07CiAKICAgICBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4g
bV9zZXNzaW9uU3RvcmFnZTsKLSAgICBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gbV9lcGhlbWVy
YWxMb2NhbFN0b3JhZ2U7CiAKICAgICBUaW1lclRocm90dGxpbmdTdGF0ZSBtX3RpbWVyVGhyb3R0
bGluZ1N0YXRlIHsgVGltZXJUaHJvdHRsaW5nU3RhdGU6OkRpc2FibGVkIH07CiAgICAgTW9ub3Rv
bmljVGltZSBtX3RpbWVyVGhyb3R0bGluZ1N0YXRlTGFzdENoYW5nZWRUaW1lOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvU3RvcmFnZS5jcHAKaW5kZXggOTE5N2I2MGU3ZTZhMTU1YzQ0NjhkNTI5NGZhYjI1MGM4
Njc5ODdmZi4uNDdkYmIxN2Q5YWU2ZDI2OWMxNDcwM2ExYTYyYTQ5MmVlNjZkZjQxNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL1N0b3JhZ2UuY3BwCkBAIC05NywxMSArOTcsNiBAQCBFeGNlcHRpb25Pcjx2
b2lkPiBTdG9yYWdlOjpyZW1vdmVJdGVtKGNvbnN0IFN0cmluZyYga2V5KQogICAgIHJldHVybiB7
IH07CiB9CiAKLWJvb2wgU3RvcmFnZTo6cHJld2FybSgpCi17Ci0gICAgcmV0dXJuIG1fc3RvcmFn
ZUFyZWEtPnByZXdhcm0oKTsKLX0KLQogRXhjZXB0aW9uT3I8dm9pZD4gU3RvcmFnZTo6Y2xlYXIo
KQogewogICAgIGF1dG8qIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9y
YWdlLmgKaW5kZXggNTIxNWY0N2MzNzdmZjc1NjRkYWExZTQ2ZWVmNzk0NGQzMDg1ZjYxMS4uMjhh
YTlhYjE0ZTFiMjJhY2M1YmM1YjRmNmUxYzg0YzFhOTc0ZjY2MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9T
dG9yYWdlLmgKQEAgLTQ2LDcgKzQ2LDYgQEAgcHVibGljOgogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+
IHJlbW92ZUl0ZW0oY29uc3QgU3RyaW5nJiBrZXkpOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGNs
ZWFyKCk7CiAgICAgYm9vbCBjb250YWlucyhjb25zdCBTdHJpbmcmIGtleSkgY29uc3Q7Ci0gICAg
Ym9vbCBwcmV3YXJtKCk7CiAKICAgICAvLyBCaW5kaW5ncyBzdXBwb3J0IGZ1bmN0aW9ucy4KICAg
ICBib29sIGlzU3VwcG9ydGVkUHJvcGVydHlOYW1lKGNvbnN0IFN0cmluZyYpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYS5oIGIvU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYS5oCmluZGV4IGYzOWNjZDdlNmRhY2RmZjU2YWU3ZGY2
NjBkZDk3YjVmZjUyNjQ2ZDQuLjVhOWZmZmY5YTYyNjA4Nzg1MDdlZDkxZDcyNTJmNjRmZTFmYjRi
M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWEuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhLmgKQEAgLTU4LDkgKzU4LDYgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBpbmNyZW1lbnRBY2Nlc3NDb3VudCgpIHsgfQogICAg
IHZpcnR1YWwgdm9pZCBkZWNyZW1lbnRBY2Nlc3NDb3VudCgpIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCBjbG9zZURhdGFiYXNlSWZJZGxlKCkgeyB9Ci0gICAgdmlydHVhbCBib29sIHByZXdhcm0oKSB7
IHJldHVybiBmYWxzZTsgfQotCi0gICAgdmlydHVhbCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEm
IHNlY3VyaXR5T3JpZ2luKCkgY29uc3QgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2UuaAppbmRleCA1NWM2NjI4
MmI4YmQ2OGJjMDQ3ODJkZjQ3Y2FkZWQwYzIxMjk0YjQ4Li4xM2MyMTI1YTk4ZTExNzdkMjViZDQz
Njk5OWI5YTUwMGU5ZDg2ZTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0
b3JhZ2VOYW1lc3BhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1l
c3BhY2UuaApAQCAtMjgsNiArMjgsMTAgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKK25hbWVzcGFjZSBQQUwgeworY2xhc3MgU2Vzc2lv
bklEOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFBhZ2U7CkBAIC0zOSw2ICs0
Myw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5TdG9yYWdlTmFtZXNwYWNlKCkgPSBkZWZhdWx0
OwogICAgIHZpcnR1YWwgUmVmPFN0b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYShjb25zdCBTZWN1cml0
eU9yaWdpbkRhdGEmKSA9IDA7CiAgICAgdmlydHVhbCBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gY29w
eShQYWdlKiBuZXdQYWdlKSA9IDA7CisKKyAgICB2aXJ0dWFsIFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCgpIGNvbnN0ID0gMDsKKwl2aXJ0dWFsIHZvaWQgc2V0U2Vzc2lvbklERm9yVGVzdGluZyhQ
QUw6OlNlc3Npb25JRCkgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCmlu
ZGV4IDU5MzlhZmZkM2ViMmY4ZWVkNDZiZjYyYmFiNGIxNWFlYjVlOTVlZGYuLjZjNWE4ZGUwNTI0
YzYwYWQ3YjFiMWE2MTVlNDY2OTUzYjAwZWVhNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKQEAgLTQzLDIxICs0Myw2IEBA
IFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKCkKIAog
U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjp+U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKCkKIHsK
LSAgICBBU1NFUlQobV9wYWdlcy5pc0VtcHR5KCkpOwotfQotCi12b2lkIFN0b3JhZ2VOYW1lc3Bh
Y2VQcm92aWRlcjo6YWRkUGFnZShQYWdlJiBwYWdlKQotewotICAgIEFTU0VSVCghbV9wYWdlcy5j
b250YWlucygmcGFnZSkpOwotCi0gICAgbV9wYWdlcy5hZGQoJnBhZ2UpOwotfQotCi12b2lkIFN0
b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6cmVtb3ZlUGFnZShQYWdlJiBwYWdlKQotewotICAgIEFT
U0VSVChtX3BhZ2VzLmNvbnRhaW5zKCZwYWdlKSk7Ci0KLSAgICBtX3BhZ2VzLnJlbW92ZSgmcGFn
ZSk7CiB9CiAKIFJlZjxTdG9yYWdlQXJlYT4gU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpsb2Nh
bFN0b3JhZ2VBcmVhKERvY3VtZW50JiBkb2N1bWVudCkKQEAgLTY2LDM2ICs1MSw0NyBAQCBSZWY8
U3RvcmFnZUFyZWE+IFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6bG9jYWxTdG9yYWdlQXJlYShE
b2N1bWVudCYgZG9jdW1lbnQpCiAgICAgLy8gc28gdGhlIERvY3VtZW50IGhhZCBiZXR0ZXIgc3Rp
bGwgYWN0dWFsbHkgaGF2ZSBhIFBhZ2UuCiAgICAgQVNTRVJUKGRvY3VtZW50LnBhZ2UoKSk7CiAK
LSAgICBib29sIGVwaGVtZXJhbCA9IGRvY3VtZW50LnBhZ2UoKS0+dXNlc0VwaGVtZXJhbFNlc3Np
b24oKTsKICAgICBib29sIHRyYW5zaWVudCA9ICFkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpLmNh
bkFjY2Vzc0xvY2FsU3RvcmFnZSgmZG9jdW1lbnQudG9wT3JpZ2luKCkpOwogCiAgICAgUmVmUHRy
PFN0b3JhZ2VOYW1lc3BhY2U+IHN0b3JhZ2VOYW1lc3BhY2U7CiAKICAgICBpZiAodHJhbnNpZW50
KQotICAgICAgICBzdG9yYWdlTmFtZXNwYWNlID0gJnRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVz
cGFjZShkb2N1bWVudC50b3BPcmlnaW4oKSk7Ci0gICAgZWxzZSBpZiAoZXBoZW1lcmFsKQotICAg
ICAgICBzdG9yYWdlTmFtZXNwYWNlID0gZG9jdW1lbnQucGFnZSgpLT5lcGhlbWVyYWxMb2NhbFN0
b3JhZ2UoKTsKKyAgICAgICAgc3RvcmFnZU5hbWVzcGFjZSA9ICZ0cmFuc2llbnRMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UoZG9jdW1lbnQudG9wT3JpZ2luKCksIGRvY3VtZW50LnBhZ2UoKS0+c2Vzc2lv
bklEKCkpOwogICAgIGVsc2UKLSAgICAgICAgc3RvcmFnZU5hbWVzcGFjZSA9ICZsb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UoKTsKKyAgICAgICAgc3RvcmFnZU5hbWVzcGFjZSA9ICZsb2NhbFN0b3JhZ2VO
YW1lc3BhY2UoZG9jdW1lbnQucGFnZSgpLT5zZXNzaW9uSUQoKSk7CiAKICAgICByZXR1cm4gc3Rv
cmFnZU5hbWVzcGFjZS0+c3RvcmFnZUFyZWEoZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKS5kYXRh
KCkpOwogfQogCi1TdG9yYWdlTmFtZXNwYWNlJiBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6Omxv
Y2FsU3RvcmFnZU5hbWVzcGFjZSgpCitTdG9yYWdlTmFtZXNwYWNlJiBTdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXI6OmxvY2FsU3RvcmFnZU5hbWVzcGFjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQp
CiB7CiAgICAgaWYgKCFtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZSkKLSAgICAgICAgbV9sb2NhbFN0
b3JhZ2VOYW1lc3BhY2UgPSBjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UobG9jYWxTdG9yYWdl
RGF0YWJhc2VRdW90YUluQnl0ZXMpOworICAgICAgICBtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZSA9
IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZShsb2NhbFN0b3JhZ2VEYXRhYmFzZVF1b3RhSW5C
eXRlcywgc2Vzc2lvbklEKTsKIAorICAgIEFTU0VSVChtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZS0+
c2Vzc2lvbklEKCkgPT0gc2Vzc2lvbklEKTsKICAgICByZXR1cm4gKm1fbG9jYWxTdG9yYWdlTmFt
ZXNwYWNlOwogfQogCi1TdG9yYWdlTmFtZXNwYWNlJiBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6
OnRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlP
cmlnaW4pCitTdG9yYWdlTmFtZXNwYWNlJiBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OnRyYW5z
aWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4s
IFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKLSAgICBhdXRvJiBzbG90ID0gbV90cmFuc2ll
bnRMb2NhbFN0b3JhZ2VNYXAuYWRkKCZzZWN1cml0eU9yaWdpbiwgbnVsbHB0cikuaXRlcmF0b3It
PnZhbHVlOworICAgIGF1dG8mIHNsb3QgPSBtX3RyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFj
ZXMuYWRkKHNlY3VyaXR5T3JpZ2luLmRhdGEoKSwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwog
ICAgIGlmICghc2xvdCkKLSAgICAgICAgc2xvdCA9IGNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFn
ZU5hbWVzcGFjZShzZWN1cml0eU9yaWdpbiwgbG9jYWxTdG9yYWdlRGF0YWJhc2VRdW90YUluQnl0
ZXMpOworICAgICAgICBzbG90ID0gY3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNl
KHNlY3VyaXR5T3JpZ2luLCBsb2NhbFN0b3JhZ2VEYXRhYmFzZVF1b3RhSW5CeXRlcywgc2Vzc2lv
bklEKTsKIAorICAgIEFTU0VSVChzbG90LT5zZXNzaW9uSUQoKSA9PSBzZXNzaW9uSUQpOwogICAg
IHJldHVybiAqc2xvdDsKIH0KIAordm9pZCBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmVuYWJs
ZUxlZ2FjeVByaXZhdGVCcm93c2luZ0ZvclRlc3RpbmcoYm9vbCBlbmFibGVkKQoreworICAgIGF1
dG8gbmV3U2Vzc2lvbklEID0gZW5hYmxlZCA/IFBBTDo6U2Vzc2lvbklEOjpsZWdhY3lQcml2YXRl
U2Vzc2lvbklEKCkgOiBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpOworICAgIGlm
IChtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZSAmJiBuZXdTZXNzaW9uSUQgIT0gbV9sb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UtPnNlc3Npb25JRCgpKQorICAgICAgICBtX2xvY2FsU3RvcmFnZU5hbWVzcGFj
ZS0+c2V0U2Vzc2lvbklERm9yVGVzdGluZyhuZXdTZXNzaW9uSUQpOworICAgIAorICAgIGZvciAo
YXV0byYgdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlIDogbV90cmFuc2llbnRMb2NhbFN0
b3JhZ2VOYW1lc3BhY2VzLnZhbHVlcygpKSB7CisgICAgICAgIGlmIChuZXdTZXNzaW9uSUQgIT0g
dHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlLT5zZXNzaW9uSUQoKSkKKyAgICAgICAgICAg
IG1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlLT5zZXRTZXNzaW9uSURGb3JUZXN0aW5nKG5ld1Nlc3Np
b25JRCk7CisgICAgfQorfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdl
L1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXIuaAppbmRleCBkZDdmOWE0NmJkODQ3OTI0OWM3NGQyYTRjMjI0
NTI5NjRlNjdhZWNkLi4wMWQwNjRiNGE2MWQwNjc2MGRjODdhZmU3MWM4MzllYTAyZjc4ODdmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVy
LmgKQEAgLTMxLDYgKzMxLDEwIEBACiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgogCituYW1lc3BhY2UgUEFMIHsKK2NsYXNzIFNlc3Npb25JRDsK
K30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEb2N1bWVudDsKQEAgLTQ1LDI3ICs0
OSwyMyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+U3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyKCk7CiAKICAgICB2aXJ0dWFsIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVh
dGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQgcXVvdGEpID0gMDsKLSAg
ICB2aXJ0dWFsIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UoUGFnZSYsIHVuc2lnbmVkIHF1b3RhKSA9IDA7CiAKICAgICBSZWY8U3RvcmFn
ZUFyZWE+IGxvY2FsU3RvcmFnZUFyZWEoRG9jdW1lbnQmKTsKIAotICAgIHZvaWQgYWRkUGFnZShQ
YWdlJik7Ci0gICAgdm9pZCByZW1vdmVQYWdlKFBhZ2UmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGVuYWJsZUxlZ2FjeVByaXZhdGVCcm93c2luZ0ZvclRlc3RpbmcoYm9vbCBlbmFibGVkKTsK
IAogcHJvdGVjdGVkOgogICAgIFN0b3JhZ2VOYW1lc3BhY2UqIG9wdGlvbmFsTG9jYWxTdG9yYWdl
TmFtZXNwYWNlKCkgeyByZXR1cm4gbV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2UuZ2V0KCk7IH0KIAog
cHJpdmF0ZToKLSAgICBTdG9yYWdlTmFtZXNwYWNlJiBsb2NhbFN0b3JhZ2VOYW1lc3BhY2UoKTsK
LSAgICBTdG9yYWdlTmFtZXNwYWNlJiB0cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoU2Vj
dXJpdHlPcmlnaW4mKTsKLQotICAgIHZpcnR1YWwgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0
ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSkgPSAwOwotICAgIHZpcnR1YWwg
UmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFj
ZShTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkIHF1b3RhKSA9IDA7CisgICAgU3RvcmFnZU5hbWVz
cGFjZSYgbG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBBTDo6U2Vzc2lvbklEKTsKKyAgICBTdG9yYWdl
TmFtZXNwYWNlJiB0cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoU2VjdXJpdHlPcmlnaW4m
LCBQQUw6OlNlc3Npb25JRCk7CiAKLSAgICBIYXNoU2V0PFBhZ2UqPiBtX3BhZ2VzOworICAgIHZp
cnR1YWwgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1
bnNpZ25lZCBxdW90YSwgUEFMOjpTZXNzaW9uSUQpID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxTdG9y
YWdlTmFtZXNwYWNlPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoU2VjdXJp
dHlPcmlnaW4mLCB1bnNpZ25lZCBxdW90YSwgUEFMOjpTZXNzaW9uSUQpID0gMDsKIAogICAgIFJl
ZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZTsKLSAgICBIYXNo
TWFwPFJlZlB0cjxTZWN1cml0eU9yaWdpbj4sIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPj4gbV90
cmFuc2llbnRMb2NhbFN0b3JhZ2VNYXA7CisgICAgSGFzaE1hcDxTZWN1cml0eU9yaWdpbkRhdGEs
IFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPj4gbV90cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2VzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9TdG9yYWdlVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9y
YWdlVHlwZS5oCmluZGV4IDU4MTMzZjg5Y2NhNzFkYzM1MGVmNzI4NWE3MGE3MzBhMjk2MmE2ZTIu
LmZlNzAwMjU3YmFjYjQ5YWZkZGZmNDU2NDJhNjNkNDI4ZDc0MGY4OWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZVR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL1N0b3JhZ2VUeXBlLmgKQEAgLTMwLDEzICszMCwxMiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBlbnVtIGNsYXNzIFN0b3JhZ2VUeXBlIHsKICAgICBTZXNzaW9uLAogICAgIExvY2FsLAot
ICAgIEVwaGVtZXJhbExvY2FsLAogICAgIFRyYW5zaWVudExvY2FsLAogfTsKIAogaW5saW5lIGJv
b2wgaXNMb2NhbFN0b3JhZ2UoU3RvcmFnZVR5cGUgc3RvcmFnZVR5cGUpCiB7Ci0gICAgcmV0dXJu
IHN0b3JhZ2VUeXBlID09IFN0b3JhZ2VUeXBlOjpMb2NhbCB8fCBzdG9yYWdlVHlwZSA9PSBTdG9y
YWdlVHlwZTo6VHJhbnNpZW50TG9jYWwgfHwgc3RvcmFnZVR5cGUgPT0gU3RvcmFnZVR5cGU6OkVw
aGVtZXJhbExvY2FsOworICAgIHJldHVybiBzdG9yYWdlVHlwZSA9PSBTdG9yYWdlVHlwZTo6TG9j
YWwgfHwgc3RvcmFnZVR5cGUgPT0gU3RvcmFnZVR5cGU6OlRyYW5zaWVudExvY2FsOwogfQogCiBp
bmxpbmUgYm9vbCBpc1BlcnNpc3RlbnRMb2NhbFN0b3JhZ2UoU3RvcmFnZVR5cGUgc3RvcmFnZVR5
cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dl
YktpdC9DTWFrZUxpc3RzLnR4dAppbmRleCA2Zjc5Yzg2NDdhNjEyZGMwNGEwMmFhYzgyM2Q3NDk1
ODQ0ZDRjOTIxLi5kODhhYTgzYjJhNTRmZjJhODQyYTJhNWZjNTQ2ZDg3MTQ4NTUyYWI5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQv
Q01ha2VMaXN0cy50eHQKQEAgLTExOCw3ICsxMTgsNyBAQCBzZXQoV2ViS2l0X01FU1NBR0VTX0lO
X0ZJTEVTCiAgICAgTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5l
Y3Rpb24ubWVzc2FnZXMuaW4KICAgICBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgogCi0gICAgTmV0d29ya1Byb2Nl
c3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5tZXNzYWdlcy5pbgorICAgIE5ldHdvcmtQcm9j
ZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQubWVzc2FnZXMuaW4KIAogICAgIE5ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVs
aXN0IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CmluZGV4
IDBmYjg0MjNiNWNjY2Y3ZDI2MzM5NDI1Y2Q3YTczZjRiMmMwZDJlODkuLjJlNDc2NjA4NTQwM2Q0
MjA3ZjJiZjE3MmU5OWM3ODQ2OTBhOWNjZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVy
aXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRT
b3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKQEAgLTI1LDcgKzI1LDcgQEAgJChQUk9KRUNUX0RJUikv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5tZXNzYWdlcy5pbgogJChQUk9KRUNU
X0RJUikvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1dlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVz
c2FnZXMuaW4KLSQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFn
ZU1hbmFnZXIubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL1dlYlN0
b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL05ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4K
ICQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL21hYy9jb20uYXBwbGUuV2ViS2l0Lk5ldHdv
cmtQcm9jZXNzLnNiLmluCiAkKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0
d29ya01ETlNSZWdpc3Rlci5tZXNzYWdlcy5pbgpAQCAtODMsNyArODMsNiBAQCAkKFBST0pFQ1Rf
RElSKS9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9V
SVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KLSQoUFJPSkVDVF9ESVIpL1VJUHJvY2Vz
cy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9V
SVByb2Nlc3MvaW9zL0VkaXRhYmxlSW1hZ2VDb250cm9sbGVyLm1lc3NhZ2VzLmluCiAkKFBST0pF
Q1RfRElSKS9VSVByb2Nlc3MvaW9zL1NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIubWVzc2Fn
ZXMuaW4KICQoUFJPSkVDVF9ESVIpL1VJUHJvY2Vzcy9tYWMvU2VjSXRlbVNoaW1Qcm94eS5tZXNz
YWdlcy5pbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQu
eGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxp
c3QKaW5kZXggZmUwYTZjMDA0MDJjNTM1NTQwNTQ1MTQ5MWQ0ZDhkZjc0NDczYzc5My4uYmQ5ZGQ3
ZjYzM2MxN2JjZjI5OTA4NzdmMWRlM2FhZTRhOGZiNDdhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0
L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC04OCw4ICs4OCw4IEBAICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1NtYXJ0TWFnbmlmaWNhdGlv
bkNvbnRyb2xsZXJNZXNzYWdlCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi9TbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZXMuaAogJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvU3RvcmFnZUFyZWFNYXBNZXNzYWdl
UmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi9TdG9yYWdlQXJlYU1hcE1lc3NhZ2VzLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyL1N0b3JhZ2VNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcAotJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvU3RvcmFnZU1hbmFnZXJNZXNz
YWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9TdG9y
YWdlTWFuYWdlclNldE1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQyL1N0b3JhZ2VNYW5hZ2VyU2V0TWVzc2FnZXMuaAogJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvVGV4dENoZWNraW5nQ29udHJv
bGxlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdDIvVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5TWVzc2FnZXMuaAog
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvVXNlck1lZGlhQ2Fw
dHVyZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UK
aW5kZXggNTM5M2M1YmQ3ZjA5Nzk0NTAwMmYxMDMyMmVmY2UwNTMxNjMyYzNmZi4uOWRlNzA0MjY2
YWZlZTUxMzZlNjVlODQ3ODFiNWEwMjUyNTE1N2FjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMu
bWFrZQpAQCAtMTM2LDcgKzEzNiw3IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogICAgIFNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2sgXAogICAgIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIgXAog
ICAgIFN0b3JhZ2VBcmVhTWFwIFwKLSAgICBTdG9yYWdlTWFuYWdlciBcCisgICAgU3RvcmFnZU1h
bmFnZXJTZXQgXAogICAgIFRleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eSBcCiAgICAgVXNlck1l
ZGlhQ2FwdHVyZU1hbmFnZXIgXAogICAgIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkgXApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCAxZjEwMDRlMWI1YmNkMzlkOGIxMjJkZjhj
NmRhNDhkMTM3YzRiZTYxLi4xZmE4ZDllZmY1MjNkNDBmMDg3OTAyOTgwYTY5NmFlOTZhMGFiZjA3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtNDksNyArNDksNiBAQAogI2luY2x1
ZGUgIlBpbmdMb2FkLmgiCiAjaW5jbHVkZSAiUHJlY29ubmVjdFRhc2suaCIKICNpbmNsdWRlICJT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrTWVzc2FnZXMuaCIKLSNpbmNsdWRlICJTdG9yYWdlTWFuYWdl
ci5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYkVy
cm9ycy5oIgogI2luY2x1ZGUgIldlYklEQkNvbm5lY3Rpb25Ub0NsaWVudC5oIgpAQCAtMjk5LDcg
KzI5OCw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZENsb3NlKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKICAgICAvLyByb290IGFjdGl2aXR5IHRyYWNrZXJz
LgogICAgIHN0b3BBbGxOZXR3b3JrQWN0aXZpdHlUcmFja2luZygpOwogCi0gICAgbV9uZXR3b3Jr
UHJvY2Vzcy0+d2ViUHJvY2Vzc1dhc0Rpc2Nvbm5lY3RlZChjb25uZWN0aW9uKTsKKyAgICBtX25l
dHdvcmtQcm9jZXNzLT5jb25uZWN0aW9uVG9XZWJQcm9jZXNzQ2xvc2VkKGNvbm5lY3Rpb24pOwog
CiAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+cmVtb3ZlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MoKnRoaXMpOwogCkBAIC05MTUsMTkgKzkxNCw0IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbihQQUw6OlNlc3Npb25JRCBz
CiB9CiAjZW5kaWYKIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6d2ViUGFn
ZVdhc0FkZGVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlE
LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBvbGRQYWdlSUQpCi17Ci0gICAgbV9uZXR3b3JrUHJv
Y2Vzcy0+d2ViUGFnZVdhc0FkZGVkKG1fY29ubmVjdGlvbi5nZXQoKSwgc2Vzc2lvbklELCBwYWdl
SUQsIG9sZFBhZ2VJRCk7Ci19Ci0KLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OndlYlBhZ2VXYXNSZW1vdmVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUGFnZUlkZW50aWZp
ZXIgcGFnZUlEKQotewotICAgIG1fbmV0d29ya1Byb2Nlc3MtPndlYlBhZ2VXYXNSZW1vdmVkKG1f
Y29ubmVjdGlvbi5nZXQoKSwgc2Vzc2lvbklELCBwYWdlSUQpOwotfQotCi12b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjp3ZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQoUEFMOjpTZXNz
aW9uSUQgbmV3U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8UGFnZUlkZW50aWZpZXI+JiBwYWdlcykK
LXsKLSAgICBtX25ldHdvcmtQcm9jZXNzLT53ZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQobV9jb25u
ZWN0aW9uLmdldCgpLCBuZXdTZXNzaW9uSUQsIHBhZ2VzKTsKLX0KLQogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggOTI4NjczM2M0YjdjNzUxMmMyOWM1
MzI0MzgyMWQwZWUxZWM3MTMwOS4uZDQwNGE1NjkyYjMxYmE4YjYzZjYxNThmNTUzMzNmZjRjYjRi
Nzk2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtMTQwLDEwICsxNDAsNiBAQCBwdWJs
aWM6CiAKICAgICBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+
IHJlc29sdmVCbG9iUmVmZXJlbmNlcyhjb25zdCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVy
cyYpOwogCi0gICAgdm9pZCB3ZWJQYWdlV2FzQWRkZWQoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBvbGRQYWdlSUQpOwotICAg
IHZvaWQgd2ViUGFnZVdhc1JlbW92ZWQoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyKTsKLSAgICB2b2lkIHdlYlByb2Nlc3NTZXNzaW9uQ2hhbmdlZChQQUw6OlNlc3Npb25J
RCBuZXdTZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4mIHBh
Z2VzKTsKLQogICAgIHZvaWQgcmVtb3ZlU29ja2V0Q2hhbm5lbCh1aW50NjRfdCBpZGVudGlmaWVy
KTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmlu
CmluZGV4IDRiMTE4OWIzOWNjZWJjOGZiMjI2ZjhmZWUwMzQyOGM2Yzg1YWQ3YTMuLmZhOTc5MzNj
NGE5MTlhMDYwMTc2YzlmNjllZDEzZjRmMzk5MmViYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtODYsOCArODYsNCBAQCBtZXNzYWdlcyAtPiBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAjaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQogICAgIEVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbihQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQpIC0+IChXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKSBTeW5jaHJvbm91cwogI2VuZGlmCi0KLSAgICBX
ZWJQYWdlV2FzQWRkZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciBwYWdlSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG9sZFBhZ2VJRCkKLSAgICBX
ZWJQYWdlV2FzUmVtb3ZlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCkKLSAgICBXZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQoUEFMOjpTZXNz
aW9uSUQgbmV3U2Vzc2lvbklELCBWZWN0b3I8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2Vz
KQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNw
cAppbmRleCBlODIwYjI5YzIwZjUxOWZiNWUzZGQ4OGE4YmVmNjQ2NTQwNjg2YjBiLi5mYmU4ZTY4
YWZlODI4ZTg1ZjA1OTAxM2U2NzFkMWYwZDdjNDlkOTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtNTMsOCArNTMsNyBAQAogI2lu
Y2x1ZGUgIlNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcy5oIgogI2luY2x1ZGUgIlN0YXRpc3Rp
Y3NEYXRhLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFjY2Vzc1N0YXR1cy5oIgotI2luY2x1ZGUgIlN0
b3JhZ2VNYW5hZ2VyLmgiCi0jaW5jbHVkZSAiU3RvcmFnZU1hbmFnZXJNZXNzYWdlcy5oIgorI2lu
Y2x1ZGUgIlN0b3JhZ2VNYW5hZ2VyU2V0LmgiCiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlci5o
IgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vz
c1Bvb2xNZXNzYWdlcy5oIgpAQCAtMTMzLDYgKzEzMiw3IEBAIHN0YXRpYyB2b2lkIGNhbGxFeGl0
U29vbihJUEM6OkNvbm5lY3Rpb24qKQogCiBOZXR3b3JrUHJvY2Vzczo6TmV0d29ya1Byb2Nlc3Mo
QXV4aWxpYXJ5UHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAg
ICAgOiBtX2Rvd25sb2FkTWFuYWdlcigqdGhpcykKKyAgICAsIG1fc3RvcmFnZU1hbmFnZXJTZXQo
U3RvcmFnZU1hbmFnZXJTZXQ6OmNyZWF0ZSgpKQogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lP
TlMpCiAgICAgLCBtX25ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyKCp0aGlzKQogI2VuZGlm
CkBAIC0zMzYsNiArMzM2LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZU5ldHdv
cmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYKICNlbmRpZgogICAg
IGluaXRpYWxpemVTdG9yYWdlUXVvdGEocGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1l
dGVycyk7CiAKKyAgICBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5hZGQoc2Vzc2lvbklELCBwYXJhbWV0
ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeSwgcGFy
YW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnlF
eHRlbnNpb25IYW5kbGUpOworCiAgICAgYXV0byogZGVmYXVsdFNlc3Npb24gPSBuZXR3b3JrU2Vz
c2lvbihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKICAgICBhdXRvKiBkZWZh
dWx0U3RvcmFnZVNlc3Npb24gPSBkZWZhdWx0U2Vzc2lvbi0+bmV0d29ya1N0b3JhZ2VTZXNzaW9u
KCk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBjb29raWUgOiBwYXJhbWV0ZXJzLmRlZmF1bHREYXRh
U3RvcmVQYXJhbWV0ZXJzLnBlbmRpbmdDb29raWVzKQpAQCAtNDQ3LDYgKzQ0OSw4IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKGJvb2wg
aXNTZXJ2aWNlV29ya2VyUHJvCiAgICAgVU5VU0VEX1BBUkFNKGlzU2VydmljZVdvcmtlclByb2Nl
c3MpOwogICAgIFVOVVNFRF9QQVJBTShyZWdpc3RyYWJsZURvbWFpbik7CiAjZW5kaWYKKworICAg
IG1fc3RvcmFnZU1hbmFnZXJTZXQtPmFkZENvbm5lY3Rpb24obV93ZWJQcm9jZXNzQ29ubmVjdGlv
bnMubGFzdCgpLT5jb25uZWN0aW9uKCkpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVh
ckNhY2hlZENyZWRlbnRpYWxzKCkKQEAgLTQ2OSw2ICs0NzMsOCBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjphZGRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJiYgcGFy
YW1ldGVycwogICAgICAgICBhZGRTZXJ2aWNlV29ya2VyU2Vzc2lvbihwYXJhbWV0ZXJzLm5ldHdv
cmtTZXNzaW9uUGFyYW1ldGVycy5zZXNzaW9uSUQsIHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbkRpcmVjdG9yeSwgcGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
RGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKICNlbmRpZgogCisgICAgbV9zdG9yYWdlTWFuYWdl
clNldC0+YWRkKHBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnNlc3Npb25JRCwg
cGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnksIHBhcmFtZXRlcnMubG9jYWxTdG9yYWdl
RGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKKwogICAgIGluaXRpYWxpemVTdG9yYWdlUXVvdGEo
cGFyYW1ldGVycyk7CiAKICAgICBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlV2Vic2l0
ZURhdGFTdG9yZVNlc3Npb24oKnRoaXMsIFdURk1vdmUocGFyYW1ldGVycykpOwpAQCAtNjA5LDYg
KzYxNSw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlc3Ryb3lTZXNzaW9uKGNvbnN0IFBBTDo6
U2Vzc2lvbklEJiBzZXNzaW9uSUQpCiAgICAgbV9zd0RhdGFiYXNlUGF0aHMucmVtb3ZlKHNlc3Np
b25JRCk7CiAjZW5kaWYKIAorICAgIG1fc3RvcmFnZU1hbmFnZXJTZXQtPnJlbW92ZShzZXNzaW9u
SUQpOworCiAgICAgbV9zdG9yYWdlUXVvdGFNYW5hZ2Vycy5yZW1vdmUoc2Vzc2lvbklEKTsKIH0K
IApAQCAtMTA1MCw4ICsxMDU4LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2xlYXJVc2VySW50
ZXJhY3Rpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3QKIAogdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6aGFzTG9jYWxTdG9yYWdlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5l
dHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKLSAgICAgICAgc2Vzc2lvbi0+c3RvcmFnZU1hbmFn
ZXIoKS5nZXRMb2NhbFN0b3JhZ2VPcmlnaW5zKFtkb21haW4sIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1dG8mJiBvcmlnaW5zKSBtdXRhYmxlIHsKKyAg
ICBpZiAobV9zdG9yYWdlTWFuYWdlclNldC0+Y29udGFpbnMoc2Vzc2lvbklEKSkgeworICAgICAg
ICBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5nZXRMb2NhbFN0b3JhZ2VPcmlnaW5zKHNlc3Npb25JRCwg
W2RvbWFpbiwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0o
YXV0byYmIG9yaWdpbnMpIG11dGFibGUgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
V1RGOjphbnlPZihvcmlnaW5zLCBbJmRvbWFpbl0oYXV0byYgb3JpZ2luKSB7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGRvbWFpbi5tYXRjaGVzKG9yaWdpbik7CiAgICAgICAgICAgICB9KSk7CkBA
IC0xMzQwLDE2ICsxMzQ4LDE1IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmZldGNoV2Vic2l0ZURh
dGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0CiAgICAgICAgIH0p
OwogICAgIH0KIAotICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQp
OwotICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6U2Vz
c2lvblN0b3JhZ2UpICYmIHNlc3Npb24pIHsKLSAgICAgICAgc2Vzc2lvbi0+c3RvcmFnZU1hbmFn
ZXIoKS5nZXRTZXNzaW9uU3RvcmFnZU9yaWdpbnMoW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxi
YWNrQWdncmVnYXRvci5jb3B5UmVmKCldKGF1dG8mJiBvcmlnaW5zKSB7CisgICAgaWYgKHdlYnNp
dGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpTZXNzaW9uU3RvcmFnZSkgJiYg
bV9zdG9yYWdlTWFuYWdlclNldC0+Y29udGFpbnMoc2Vzc2lvbklEKSkgeworICAgICAgICBtX3N0
b3JhZ2VNYW5hZ2VyU2V0LT5nZXRTZXNzaW9uU3RvcmFnZU9yaWdpbnMoc2Vzc2lvbklELCBbY2Fs
bGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0oYXV0byYmIG9y
aWdpbnMpIHsKICAgICAgICAgICAgIHdoaWxlICghb3JpZ2lucy5pc0VtcHR5KCkpCiAgICAgICAg
ICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX3dlYnNpdGVEYXRhLmVudHJpZXMuYXBwZW5k
KFdlYnNpdGVEYXRhOjpFbnRyeSB7IG9yaWdpbnMudGFrZUFueSgpLCBXZWJzaXRlRGF0YVR5cGU6
OlNlc3Npb25TdG9yYWdlLCAwIH0pOwogICAgICAgICB9KTsKICAgICB9CiAKLSAgICBpZiAod2Vi
c2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkxvY2FsU3RvcmFnZSkgJiYg
c2Vzc2lvbikgewotICAgICAgICBzZXNzaW9uLT5zdG9yYWdlTWFuYWdlcigpLmdldExvY2FsU3Rv
cmFnZU9yaWdpbnMoW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5
UmVmKCldKGF1dG8mJiBvcmlnaW5zKSB7CisgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFp
bnMoV2Vic2l0ZURhdGFUeXBlOjpMb2NhbFN0b3JhZ2UpICYmIG1fc3RvcmFnZU1hbmFnZXJTZXQt
PmNvbnRhaW5zKHNlc3Npb25JRCkpIHsKKyAgICAgICAgbV9zdG9yYWdlTWFuYWdlclNldC0+Z2V0
TG9jYWxTdG9yYWdlT3JpZ2lucyhzZXNzaW9uSUQsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxs
YmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXShhdXRvJiYgb3JpZ2lucykgewogICAgICAgICAgICAg
d2hpbGUgKCFvcmlnaW5zLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3Jl
Z2F0b3ItPm1fd2Vic2l0ZURhdGEuZW50cmllcy5hcHBlbmQoV2Vic2l0ZURhdGE6OkVudHJ5IHsg
b3JpZ2lucy50YWtlQW55KCksIFdlYnNpdGVEYXRhVHlwZTo6TG9jYWxTdG9yYWdlLCAwIH0pOwog
ICAgICAgICB9KTsKQEAgLTE0MjQsMTIgKzE0MzEsMTEgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
ZGVsZXRlV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vi
c2kKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkRP
TUNhY2hlKSkKICAgICAgICAgQ2FjaGVTdG9yYWdlOjpFbmdpbmU6OmNsZWFyQWxsQ2FjaGVzKCp0
aGlzLCBzZXNzaW9uSUQsIFtjbGVhclRhc2tzSGFuZGxlciA9IGNsZWFyVGFza3NIYW5kbGVyLmNv
cHlSZWYoKV0geyB9KTsKIAotICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNz
aW9uSUQpOwotICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlw
ZTo6U2Vzc2lvblN0b3JhZ2UpICYmIHNlc3Npb24pCi0gICAgICAgIHNlc3Npb24tPnN0b3JhZ2VN
YW5hZ2VyKCkuZGVsZXRlU2Vzc2lvblN0b3JhZ2VPcmlnaW5zKFtjbGVhclRhc2tzSGFuZGxlciA9
IGNsZWFyVGFza3NIYW5kbGVyLmNvcHlSZWYoKV0geyB9KTsKKyAgICBpZiAod2Vic2l0ZURhdGFU
eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlNlc3Npb25TdG9yYWdlKSAmJiBtX3N0b3Jh
Z2VNYW5hZ2VyU2V0LT5jb250YWlucyhzZXNzaW9uSUQpKQorICAgICAgICBtX3N0b3JhZ2VNYW5h
Z2VyU2V0LT5kZWxldGVTZXNzaW9uU3RvcmFnZShzZXNzaW9uSUQsIFtjbGVhclRhc2tzSGFuZGxl
ciA9IGNsZWFyVGFza3NIYW5kbGVyLmNvcHlSZWYoKV0geyB9KTsKIAotICAgIGlmICh3ZWJzaXRl
RGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6TG9jYWxTdG9yYWdlKSAmJiBzZXNz
aW9uKQotICAgICAgICBzZXNzaW9uLT5zdG9yYWdlTWFuYWdlcigpLmRlbGV0ZUxvY2FsU3RvcmFn
ZU9yaWdpbnNNb2RpZmllZFNpbmNlKG1vZGlmaWVkU2luY2UsIFtjbGVhclRhc2tzSGFuZGxlciA9
IGNsZWFyVGFza3NIYW5kbGVyLmNvcHlSZWYoKV0geyB9KTsKKyAgICBpZiAod2Vic2l0ZURhdGFU
eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkxvY2FsU3RvcmFnZSkgJiYgbV9zdG9yYWdl
TWFuYWdlclNldC0+Y29udGFpbnMoc2Vzc2lvbklEKSkKKyAgICAgICAgbV9zdG9yYWdlTWFuYWdl
clNldC0+ZGVsZXRlTG9jYWxTdG9yYWdlTW9kaWZpZWRTaW5jZShzZXNzaW9uSUQsIG1vZGlmaWVk
U2luY2UsIFtjbGVhclRhc2tzSGFuZGxlciA9IGNsZWFyVGFza3NIYW5kbGVyLmNvcHlSZWYoKV0g
eyB9KTsKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogICAgIGlmICh3ZWJzaXRlRGF0
YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKSAmJiAh
c2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCkBAIC0xNTI0LDEyICsxNTMwLDExIEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIE9wdGlvCiAgICAgICAgICAgICBDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6Y2xlYXJD
YWNoZXNGb3JPcmlnaW4oKnRoaXMsIHNlc3Npb25JRCwgU2VjdXJpdHlPcmlnaW5EYXRhIHsgb3Jp
Z2luRGF0YSB9LCBbY2xlYXJUYXNrc0hhbmRsZXIgPSBjbGVhclRhc2tzSGFuZGxlci5jb3B5UmVm
KCldIHsgfSk7CiAgICAgfQogCi0gICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNl
c3Npb25JRCk7Ci0gICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFU
eXBlOjpTZXNzaW9uU3RvcmFnZSkgJiYgc2Vzc2lvbikKLSAgICAgICAgc2Vzc2lvbi0+c3RvcmFn
ZU1hbmFnZXIoKS5kZWxldGVTZXNzaW9uU3RvcmFnZUVudHJpZXNGb3JPcmlnaW5zKG9yaWdpbkRh
dGFzLCBbY2xlYXJUYXNrc0hhbmRsZXIgPSBjbGVhclRhc2tzSGFuZGxlci5jb3B5UmVmKCldIHsg
fSk7CisgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpT
ZXNzaW9uU3RvcmFnZSkgJiYgbV9zdG9yYWdlTWFuYWdlclNldC0+Y29udGFpbnMoc2Vzc2lvbklE
KSkKKyAgICAgICAgbV9zdG9yYWdlTWFuYWdlclNldC0+ZGVsZXRlU2Vzc2lvblN0b3JhZ2VGb3JP
cmlnaW5zKHNlc3Npb25JRCwgb3JpZ2luRGF0YXMsIFtjbGVhclRhc2tzSGFuZGxlciA9IGNsZWFy
VGFza3NIYW5kbGVyLmNvcHlSZWYoKV0geyB9KTsKIAotICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVz
LmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6TG9jYWxTdG9yYWdlKSAmJiBzZXNzaW9uKQotICAg
ICAgICBzZXNzaW9uLT5zdG9yYWdlTWFuYWdlcigpLmRlbGV0ZUxvY2FsU3RvcmFnZUVudHJpZXNG
b3JPcmlnaW5zKG9yaWdpbkRhdGFzLCBbY2xlYXJUYXNrc0hhbmRsZXIgPSBjbGVhclRhc2tzSGFu
ZGxlci5jb3B5UmVmKCldIHsgfSk7CisgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMo
V2Vic2l0ZURhdGFUeXBlOjpMb2NhbFN0b3JhZ2UpICYmIG1fc3RvcmFnZU1hbmFnZXJTZXQtPmNv
bnRhaW5zKHNlc3Npb25JRCkpCisgICAgICAgIG1fc3RvcmFnZU1hbmFnZXJTZXQtPmRlbGV0ZUxv
Y2FsU3RvcmFnZUZvck9yaWdpbnMoc2Vzc2lvbklELCBvcmlnaW5EYXRhcywgW2NsZWFyVGFza3NI
YW5kbGVyID0gY2xlYXJUYXNrc0hhbmRsZXIuY29weVJlZigpXSB7IH0pOwogCiAjaWYgRU5BQkxF
KElOREVYRURfREFUQUJBU0UpCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vi
c2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpICYmICFzZXNzaW9uSUQuaXNFcGhlbWVy
YWwoKSkKQEAgLTE3MjYsMjAgKzE3MzEsMTggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRl
V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2kKICAg
ICAgICAgfSk7CiAgICAgfQogCi0gICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNl
c3Npb25JRCk7Ci0gICAgaWYgKHNlc3Npb24pIHsKLSAgICAgICAgYXV0byYgc3RvcmFnZU1hbmFn
ZXIgPSBzZXNzaW9uLT5zdG9yYWdlTWFuYWdlcigpOworICAgIGlmIChtX3N0b3JhZ2VNYW5hZ2Vy
U2V0LT5jb250YWlucyhzZXNzaW9uSUQpKSB7CiAgICAgICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVz
LmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6U2Vzc2lvblN0b3JhZ2UpKSB7Ci0gICAgICAgICAg
ICBzdG9yYWdlTWFuYWdlci5nZXRTZXNzaW9uU3RvcmFnZU9yaWdpbnMoW3N0b3JhZ2VNYW5hZ2Vy
ID0gbWFrZVJlZlB0cihzdG9yYWdlTWFuYWdlciksIGNhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxi
YWNrQWdncmVnYXRvci5jb3B5UmVmKCksIGRvbWFpbnNUb0RlbGV0ZUFsbEJ1dENvb2tpZXNGb3Jd
KGF1dG8mJiBvcmlnaW5zKSB7CisgICAgICAgICAgICBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5nZXRT
ZXNzaW9uU3RvcmFnZU9yaWdpbnMoc2Vzc2lvbklELCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCB0aGlzLCBzZXNzaW9uSUQsIGNhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdn
cmVnYXRvci5jb3B5UmVmKCksIGRvbWFpbnNUb0RlbGV0ZUFsbEJ1dENvb2tpZXNGb3JdKGF1dG8m
JiBvcmlnaW5zKSB7CiAgICAgICAgICAgICAgICAgYXV0byBvcmlnaW5zVG9EZWxldGUgPSBmaWx0
ZXJGb3JSZWdpc3RyYWJsZURvbWFpbnMob3JpZ2lucywgZG9tYWluc1RvRGVsZXRlQWxsQnV0Q29v
a2llc0ZvciwgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX2RvbWFpbnMpOwotICAgICAgICAgICAgICAg
IHN0b3JhZ2VNYW5hZ2VyLT5kZWxldGVTZXNzaW9uU3RvcmFnZUVudHJpZXNGb3JPcmlnaW5zKG9y
aWdpbnNUb0RlbGV0ZSwgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5j
b3B5UmVmKCldIHsgfSk7CisgICAgICAgICAgICAgICAgbV9zdG9yYWdlTWFuYWdlclNldC0+ZGVs
ZXRlU2Vzc2lvblN0b3JhZ2VGb3JPcmlnaW5zKHNlc3Npb25JRCwgb3JpZ2luc1RvRGVsZXRlLCBb
Y2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsK
ICAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKHdlYnNpdGVEYXRhVHlw
ZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpMb2NhbFN0b3JhZ2UpKSB7Ci0gICAgICAgICAg
ICBzdG9yYWdlTWFuYWdlci5nZXRMb2NhbFN0b3JhZ2VPcmlnaW5zKFtzdG9yYWdlTWFuYWdlciA9
IG1ha2VSZWZQdHIoc3RvcmFnZU1hbmFnZXIpLCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFj
a0FnZ3JlZ2F0b3IuY29weVJlZigpLCBkb21haW5zVG9EZWxldGVBbGxCdXRDb29raWVzRm9yXShh
dXRvJiYgb3JpZ2lucykgeworICAgICAgICAgICAgbV9zdG9yYWdlTWFuYWdlclNldC0+Z2V0TG9j
YWxTdG9yYWdlT3JpZ2lucyhzZXNzaW9uSUQsIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIHRoaXMsIHNlc3Npb25JRCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdh
dG9yLmNvcHlSZWYoKSwgZG9tYWluc1RvRGVsZXRlQWxsQnV0Q29va2llc0Zvcl0oYXV0byYmIG9y
aWdpbnMpIHsKICAgICAgICAgICAgICAgICBhdXRvIG9yaWdpbnNUb0RlbGV0ZSA9IGZpbHRlckZv
clJlZ2lzdHJhYmxlRG9tYWlucyhvcmlnaW5zLCBkb21haW5zVG9EZWxldGVBbGxCdXRDb29raWVz
Rm9yLCBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fZG9tYWlucyk7Ci0gICAgICAgICAgICAgICAgc3Rv
cmFnZU1hbmFnZXItPmRlbGV0ZUxvY2FsU3RvcmFnZUVudHJpZXNGb3JPcmlnaW5zKG9yaWdpbnNU
b0RlbGV0ZSwgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVm
KCldIHsgfSk7CisgICAgICAgICAgICAgICAgbV9zdG9yYWdlTWFuYWdlclNldC0+ZGVsZXRlTG9j
YWxTdG9yYWdlRm9yT3JpZ2lucyhzZXNzaW9uSUQsIG9yaWdpbnNUb0RlbGV0ZSwgW2NhbGxiYWNr
QWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CiAgICAgICAg
ICAgICB9KTsKICAgICAgICAgfQogICAgIH0KQEAgLTIxMTEsOSArMjExNCw3IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OmFjdHVhbFByZXBhcmVUb1N1c3BlbmQoU2hvdWxkQWNrbm93bGVkZ2VXaGVu
UmVhZHlUb1N1c3BlbmQKICAgICB9CiAjZW5kaWYKIAotICAgIGZvckVhY2hOZXR3b3JrU2Vzc2lv
bihbJmNhbGxiYWNrQWdncmVnYXRvcl0oYXV0byYgc2Vzc2lvbikgewotICAgICAgICBzZXNzaW9u
LnN0b3JhZ2VNYW5hZ2VyKCkuc3VzcGVuZChbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwotICAg
IH0pOworICAgIG1fc3RvcmFnZU1hbmFnZXJTZXQtPnN1c3BlbmQoW2NhbGxiYWNrQWdncmVnYXRv
cl0geyB9KTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJvY2Vzc1dpbGxTdXNwZW5kSW1t
aW5lbnRseSgpCkBAIC0yMTg5LDkgKzIxOTAsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZXN1
bWUoKQogICAgICAgICBzZXJ2ZXItPnJlc3VtZSgpOwogI2VuZGlmCiAKLSAgICBmb3JFYWNoTmV0
d29ya1Nlc3Npb24oW10oYXV0byYgc2Vzc2lvbikgewotICAgICAgICBzZXNzaW9uLnN0b3JhZ2VN
YW5hZ2VyKCkucmVzdW1lKCk7Ci0gICAgfSk7CisgICAgbV9zdG9yYWdlTWFuYWdlclNldC0+cmVz
dW1lKCk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnByZWZldGNoRE5TKGNvbnN0IFN0cmlu
ZyYgaG9zdG5hbWUpCkBAIC0yMzk2LDYgKzIzOTUsMTggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
c2V0SURCUGVyT3JpZ2luUXVvdGEodWludDY0X3QgcXVvdGEpCiB9CiAjZW5kaWYgLy8gRU5BQkxF
KElOREVYRURfREFUQUJBU0UpCiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnN5bmNMb2NhbFN0b3Jh
Z2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAg
IG1fc3RvcmFnZU1hbmFnZXJTZXQtPndhaXRVbnRpbFN5bmNpbmdMb2NhbFN0b3JhZ2VGaW5pc2hl
ZCgpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6
OmNsZWFyTGVnYWN5UHJpdmF0ZUJyb3dzaW5nTG9jYWxTdG9yYWdlKCkKK3sKKyAgICBpZiAobV9z
dG9yYWdlTWFuYWdlclNldC0+Y29udGFpbnMoUEFMOjpTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVT
ZXNzaW9uSUQoKSkpCisgICAgICAgIG1fc3RvcmFnZU1hbmFnZXJTZXQtPmRlbGV0ZUxvY2FsU3Rv
cmFnZU1vZGlmaWVkU2luY2UoUEFMOjpTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQo
KSwgLVdhbGxUaW1lOjppbmZpbml0eSgpLCBbXSgpIHsgfSk7Cit9CisKIHZvaWQgTmV0d29ya1By
b2Nlc3M6OnVwZGF0ZVF1b3RhQmFzZWRPblNwYWNlVXNhZ2VGb3JUZXN0aW5nKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4pCiB7CiAgICAgYXV0byYg
bWFuYWdlciA9IHN0b3JhZ2VRdW90YU1hbmFnZXIoc2Vzc2lvbklELCBvcmlnaW4pOwpAQCAtMjcw
Myw4MCArMjcxNCwyMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZW1vdmVLZXB0QWxpdmVMb2Fk
KE5ldHdvcmtSZXNvdXJjZUxvYWRlciYgbG9hZGVyKQogICAgICAgICBzZXNzaW9uLT5yZW1vdmVL
ZXB0QWxpdmVMb2FkKGxvYWRlcik7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OndlYlBhZ2VX
YXNBZGRlZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBQYWdlSWRlbnRpZmllciBvbGRQYWdlSUQpCi17
Ci0gICAgaWYgKCFwYWdlSUQgfHwgIW9sZFBhZ2VJRCkgewotICAgICAgICBMT0dfRVJST1IoIkNh
bm5vdCBhZGQgcGFnZSB3aXRoIGludmFsaWQgaWQiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOwotICAgIGlm
ICghc2Vzc2lvbikgewotICAgICAgICBMT0dfRVJST1IoIkNhbm5vdCBhZGQgcGFnZSB0byBhbiB1
bmtub3duIHNlc3Npb24iKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBhdXRvJiBzdG9y
YWdlTWFuYWdlciA9IHNlc3Npb24tPnN0b3JhZ2VNYW5hZ2VyKCk7Ci0KLSAgICBhdXRvIGFkZFJl
c3VsdCA9IG1fc2Vzc2lvbkJ5Q29ubmVjdGlvbi5hZGQoY29ubmVjdGlvbi51bmlxdWVJRCgpLCBz
ZXNzaW9uSUQpOwotICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXRlcmF0
b3ItPnZhbHVlID09IHNlc3Npb25JRCk7Ci0KLSAgICBzdG9yYWdlTWFuYWdlci5jcmVhdGVTZXNz
aW9uU3RvcmFnZU5hbWVzcGFjZShwYWdlSUQudG9VSW50NjQoKSwgc3RkOjpudW1lcmljX2xpbWl0
czx1bnNpZ25lZD46Om1heCgpKTsKLSAgICBzdG9yYWdlTWFuYWdlci5hZGRBbGxvd2VkU2Vzc2lv
blN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0aW9uKHBhZ2VJRC50b1VJbnQ2NCgpLCBjb25uZWN0aW9u
KTsKLSAgICBpZiAocGFnZUlEICE9IG9sZFBhZ2VJRCkKLSAgICAgICAgc3RvcmFnZU1hbmFnZXIu
Y2xvbmVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShvbGRQYWdlSUQudG9VSW50NjQoKSwgcGFnZUlE
LnRvVUludDY0KCkpOwotfQotCi12b2lkIE5ldHdvcmtQcm9jZXNzOjp3ZWJQYWdlV2FzUmVtb3Zl
ZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
UGFnZUlkZW50aWZpZXIgcGFnZUlEKQotewotICAgIGlmICghcGFnZUlEKSB7Ci0gICAgICAgIExP
R19FUlJPUigiQ2Fubm90IHJlbW92ZSBwYWdlIHdpdGggaW52YWxpZCBpZCIpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Np
b25JRCk7Ci0gICAgLy8gU2Vzc2lvbiBjYW4gYmUgZGVzdHJveWVkIGJlZm9yZSBwYWdlIGdldHMg
cmVtb3ZlZC4KLSAgICBpZiAoIXNlc3Npb24pCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8m
IHN0b3JhZ2VNYW5hZ2VyID0gc2Vzc2lvbi0+c3RvcmFnZU1hbmFnZXIoKTsKLSAgICBzdG9yYWdl
TWFuYWdlci5yZW1vdmVBbGxvd2VkU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0aW9uKHBh
Z2VJRC50b1VJbnQ2NCgpLCBjb25uZWN0aW9uKTsKLSAgICBzdG9yYWdlTWFuYWdlci5kZXN0cm95
U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UocGFnZUlELnRvVUludDY0KCkpOwotfQotCi12b2lkIE5l
dHdvcmtQcm9jZXNzOjp3ZWJQcm9jZXNzV2FzRGlzY29ubmVjdGVkKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbikKLXsKLSAgICBhdXRvIHNlc3Npb25JRCA9IG1fc2Vzc2lvbkJ5Q29ubmVjdGlv
bi50YWtlKGNvbm5lY3Rpb24udW5pcXVlSUQoKSk7Ci0gICAgaWYgKCFzZXNzaW9uSUQuaXNWYWxp
ZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtT
ZXNzaW9uKHNlc3Npb25JRCkpCi0gICAgICAgIHNlc3Npb24tPnN0b3JhZ2VNYW5hZ2VyKCkucHJv
Y2Vzc0RpZENsb3NlQ29ubmVjdGlvbihjb25uZWN0aW9uKTsKLX0KLQotdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6d2ViUHJvY2Vzc1Nlc3Npb25DaGFuZ2VkKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgUEFMOjpTZXNzaW9uSUQgbmV3U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8UGFnZUlkZW50aWZp
ZXI+JiBwYWdlSURzKQotewotICAgIGF1dG8gY29ubmVjdGlvbklEID0gY29ubmVjdGlvbi51bmlx
dWVJRCgpOwotICAgIEFTU0VSVChtX3Nlc3Npb25CeUNvbm5lY3Rpb24uY29udGFpbnMoY29ubmVj
dGlvbklEKSk7Ci0gICAgaWYgKG1fc2Vzc2lvbkJ5Q29ubmVjdGlvbi5nZXQoY29ubmVjdGlvbklE
KSA9PSBuZXdTZXNzaW9uSUQpCi0gICAgICAgIHJldHVybjsKLQotICAgIHdlYlByb2Nlc3NXYXNE
aXNjb25uZWN0ZWQoY29ubmVjdGlvbik7Ci0gICAgZm9yIChhdXRvJiBwYWdlSUQgOiBwYWdlSURz
KQotICAgICAgICB3ZWJQYWdlV2FzQWRkZWQoY29ubmVjdGlvbiwgbmV3U2Vzc2lvbklELCBwYWdl
SUQsIHBhZ2VJRCk7Ci19Ci0KIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmdldExvY2FsU3RvcmFnZU9y
aWdpbkRldGFpbHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFZlY3RvcjxMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6Ok9yaWdpbkRldGFpbHM+JiYp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vz
c2lvbihzZXNzaW9uSUQpOwotICAgIGlmICghc2Vzc2lvbikgeworICAgIGlmICghbV9zdG9yYWdl
TWFuYWdlclNldC0+Y29udGFpbnMoc2Vzc2lvbklEKSkgewogICAgICAgICBMT0dfRVJST1IoIkNh
bm5vdCBnZXQgbG9jYWwgc3RvcmFnZSBpbmZvcm1hdGlvbiBmb3IgYW4gdW5rbm93biBzZXNzaW9u
Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvJiBzdG9yYWdlTWFuYWdlciA9
IHNlc3Npb24tPnN0b3JhZ2VNYW5hZ2VyKCk7Ci0gICAgc3RvcmFnZU1hbmFnZXIuZ2V0TG9jYWxT
dG9yYWdlT3JpZ2luRGV0YWlscyhbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0oYXV0byYmIGRldGFpbHMpIG11dGFibGUgeworICAgIG1fc3RvcmFnZU1hbmFn
ZXJTZXQtPmdldExvY2FsU3RvcmFnZU9yaWdpbkRldGFpbHMoc2Vzc2lvbklELCBbY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byYmIGRldGFpbHMpIG11
dGFibGUgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGRldGFpbHMpKTsKICAg
ICB9KTsKIH0KIAordm9pZCBOZXR3b3JrUHJvY2Vzczo6Y29ubmVjdGlvblRvV2ViUHJvY2Vzc0Ns
b3NlZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCit7CisgICAgbV9zdG9yYWdlTWFuYWdl
clNldC0+cmVtb3ZlQ29ubmVjdGlvbihjb25uZWN0aW9uKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgK
aW5kZXggMWJlYjdiNjVkYjYzMGMzYjMyOGJiMTVjZmMzYjMxMTZiNGI5OTRkNi4uZmMwZjUzYzZm
ODA3MTRhMmUwYjUyOGVlYzM1MjQwODJjNzU4ZWE0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtOTcsNiArOTcsNyBAQCBjbGFzcyBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKIGNsYXNzIE5ldHdvcmtQcm9jZXNzU3VwcGxlbWVu
dDsKIGNsYXNzIE5ldHdvcmtQcm94aW1pdHlNYW5hZ2VyOwogY2xhc3MgTmV0d29ya1Jlc291cmNl
TG9hZGVyOworY2xhc3MgU3RvcmFnZU1hbmFnZXJTZXQ7CiBjbGFzcyBXZWJTV1NlcnZlckNvbm5l
Y3Rpb247CiBjbGFzcyBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb247CiBlbnVtIGNsYXNz
IFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcyA6IGJvb2w7CkBAIC0yNzAsMTAgKzI3MSw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldFNlc3Npb25Jc0NvbnRyb2xsZWRCeUF1dG9tYXRpb24oUEFM
OjpTZXNzaW9uSUQsIGJvb2wpOwogICAgIGJvb2wgc2Vzc2lvbklzQ29udHJvbGxlZEJ5QXV0b21h
dGlvbihQQUw6OlNlc3Npb25JRCkgY29uc3Q7CiAKLSAgICB2b2lkIHdlYlBhZ2VXYXNBZGRlZChJ
UEM6OkNvbm5lY3Rpb24mLCBQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIs
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKLSAgICB2b2lkIHdlYlBhZ2VXYXNSZW1vdmVkKElQ
Qzo6Q29ubmVjdGlvbiYsIFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7
Ci0gICAgdm9pZCB3ZWJQcm9jZXNzV2FzRGlzY29ubmVjdGVkKElQQzo6Q29ubmVjdGlvbiYpOwot
ICAgIHZvaWQgd2ViUHJvY2Vzc1Nlc3Npb25DaGFuZ2VkKElQQzo6Q29ubmVjdGlvbiYsIFBBTDo6
U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+Jik7CisgICAg
dm9pZCBjb25uZWN0aW9uVG9XZWJQcm9jZXNzQ2xvc2VkKElQQzo6Q29ubmVjdGlvbiYpOwogICAg
IHZvaWQgZ2V0TG9jYWxTdG9yYWdlT3JpZ2luRGV0YWlscyhQQUw6OlNlc3Npb25JRCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpPcmln
aW5EZXRhaWxzPiYmKT4mJik7CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpAQCAt
Mjg2LDYgKzI4NCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhY2Nlc3NUb1RlbXBvcmFyeUZpbGVD
b21wbGV0ZShjb25zdCBTdHJpbmcmIHBhdGgpIGZpbmFsOwogICAgIHZvaWQgc2V0SURCUGVyT3Jp
Z2luUXVvdGEodWludDY0X3QpOwogI2VuZGlmCisKKyAgICB2b2lkIHN5bmNMb2NhbFN0b3JhZ2Uo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGNsZWFyTGVnYWN5UHJpdmF0
ZUJyb3dzaW5nTG9jYWxTdG9yYWdlKCk7CisKICAgICB2b2lkIHVwZGF0ZVF1b3RhQmFzZWRPblNw
YWNlVXNhZ2VGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpDbGllbnRP
cmlnaW4mKTsKIAogI2lmIEVOQUJMRShTQU5EQk9YX0VYVEVOU0lPTlMpCkBAIC01MDAsNiArNTAy
LDggQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBzdGQ6OnVuaXF1ZV9w
dHI8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPj4gbV9uZXR3b3JrU3RvcmFnZVNlc3Np
b25zOwogICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdl
U2Vzc2lvbj4gbV9kZWZhdWx0TmV0d29ya1N0b3JhZ2VTZXNzaW9uOwogCisgICAgUmVmUHRyPFN0
b3JhZ2VNYW5hZ2VyU2V0PiBtX3N0b3JhZ2VNYW5hZ2VyU2V0OworCiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2Vzc0NvY29hKGNvbnN0
IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAgICAgdm9pZCBzZXRTdG9yYWdl
QWNjZXNzQVBJRW5hYmxlZChib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGI3NmRhYTFlZmJhZjQ5
ZmJmZTg0NjRlMzRjMjE1YmM4MDBiNDY2ZDEuLmM1NTNhODg5YTZlMjA4YzQ4ZDNkMzZmYzU5N2Ey
ZTkxYjdlNTM0MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTYzLDYgKzE2MywxMCBAQCBtZXNzYWdl
cyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAjaWYgRU5BQkxFKElOREVYRURf
REFUQUJBU0UpCiAgICAgU2V0SURCUGVyT3JpZ2luUXVvdGEodWludDY0X3QgcXVvdGEpCiAjZW5k
aWYKKworICAgIFN5bmNMb2NhbFN0b3JhZ2UoKSAtPiAoKSBTeW5jaHJvbm91cworICAgIENsZWFy
TGVnYWN5UHJpdmF0ZUJyb3dzaW5nTG9jYWxTdG9yYWdlKCkKKwogICAgIFVwZGF0ZVF1b3RhQmFz
ZWRPblNwYWNlVXNhZ2VGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RydWN0
IFdlYkNvcmU6OkNsaWVudE9yaWdpbiBvcmlnaW4pCiAKICAgICBTdG9yZUFkQ2xpY2tBdHRyaWJ1
dGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OkFkQ2xpY2tBdHRyaWJ1dGlv
biBhZENsaWNrQXR0cmlidXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Nlc3Npb24uY3BwCmluZGV4IDQ4OGI5Mjk4MGFlZDFhZGM2NGFiM2QzY2FmYzNmOGQ4
ZmEyNzYyYmQuLjFhMTM5NjI5MTZhOTkyNDA0MDA4YTJlZjIxYTQxOTNlNmMxNzY2ZWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCkBAIC0z
Myw3ICszMyw2IEBACiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaCIK
ICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJQaW5nTG9hZC5o
IgotI2luY2x1ZGUgIlN0b3JhZ2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5Lmgi
CiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNz
UHJveHkuaCIKQEAgLTg1LDcgKzg0LDYgQEAgTmV0d29ya1Nlc3Npb246Ok5ldHdvcmtTZXNzaW9u
KE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgY29uc3QgTmV0d29ya1Nlc3MKICAgICAs
IG1fZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0xvZ1Rlc3RpbmdFdmVudChwYXJhbWV0ZXJz
LmVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NMb2dUZXN0aW5nRXZlbnQpCiAjZW5kaWYKICAg
ICAsIG1fYWRDbGlja0F0dHJpYnV0aW9uKG1ha2VVbmlxdWVSZWY8QWRDbGlja0F0dHJpYnV0aW9u
TWFuYWdlcj4ocGFyYW1ldGVycy5zZXNzaW9uSUQpKQotICAgICwgbV9zdG9yYWdlTWFuYWdlcihT
dG9yYWdlTWFuYWdlcjo6Y3JlYXRlKFN0cmluZyhwYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVj
dG9yeSkpKQogewogICAgIGlmICghbV9zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkgewogICAgICAg
ICBTdHJpbmcgbmV0d29ya0NhY2hlRGlyZWN0b3J5ID0gcGFyYW1ldGVycy5uZXR3b3JrQ2FjaGVE
aXJlY3Rvcnk7CkBAIC05OSw3ICs5Nyw2IEBAIE5ldHdvcmtTZXNzaW9uOjpOZXR3b3JrU2Vzc2lv
bihOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIGNvbnN0IE5ldHdvcmtTZXNzCiAgICAg
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrQ2FjaGUsICJGYWlsZWQgdG8gaW5pdGlh
bGl6ZSB0aGUgV2ViS2l0IG5ldHdvcmsgZGlzayBjYWNoZSIpOwogICAgIH0KIAotICAgIFNhbmRi
b3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShwYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURp
cmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAgICAgbV9hZENsaWNrQXR0cmlidXRpb24tPnNldFBp
bmdMb2FkRnVuY3Rpb24oW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldKE5ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYgbG9hZFBhcmFtZXRlcnMsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgewogICAgICAgICBpZiAoIXdl
YWtUaGlzKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTEzLDkgKzExMCw2IEBAIE5ldHdvcmtT
ZXNzaW9uOjp+TmV0d29ya1Nlc3Npb24oKQogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCiAgICAgZGVzdHJveVJlc291cmNlTG9hZFN0YXRpc3RpY3MoKTsKICNlbmRpZgotCi0g
ICAgbV9zdG9yYWdlTWFuYWdlci0+cmVzdW1lKCk7Ci0gICAgbV9zdG9yYWdlTWFuYWdlci0+d2Fp
dFVudGlsVGFza3NGaW5pc2hlZCgpOwogfQogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RB
VElTVElDUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Nlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24u
aAppbmRleCA1MDZlN2ZmMDhmYmM5YTc2NGVhODMwMzA5NGI2ZDMwNjc0YTNmM2E0Li42ODQ5YjMw
ZjhkNDZjOTU3NGNhZWQxNDE0NTYyZGVlNTc0Yjk5YmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCkBAIC01Miw3ICs1Miw2IEBAIGNsYXNzIEFk
Q2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXI7CiBjbGFzcyBOZXR3b3JrRGF0YVRhc2s7CiBjbGFzcyBO
ZXR3b3JrUHJvY2VzczsKIGNsYXNzIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjsKLWNsYXNzIFN0b3Jh
Z2VNYW5hZ2VyOwogY2xhc3MgTmV0d29ya1NvY2tldENoYW5uZWw7CiBjbGFzcyBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU7CiBjbGFzcyBXZWJTb2NrZXRUYXNrOwpAQCAtODEsOCArODAs
NiBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWdpc3Rlck5ldHdvcmtEYXRhVGFzayhOZXR3b3JrRGF0
YVRhc2smIHRhc2spIHsgbV9kYXRhVGFza1NldC5hZGQoJnRhc2spOyB9CiAgICAgdm9pZCB1bnJl
Z2lzdGVyTmV0d29ya0RhdGFUYXNrKE5ldHdvcmtEYXRhVGFzayYgdGFzaykgeyBtX2RhdGFUYXNr
U2V0LnJlbW92ZSgmdGFzayk7IH0KIAotICAgIFN0b3JhZ2VNYW5hZ2VyJiBzdG9yYWdlTWFuYWdl
cigpIHsgcmV0dXJuIG1fc3RvcmFnZU1hbmFnZXIuZ2V0KCk7IH0KLQogI2lmIEVOQUJMRShSRVNP
VVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
KiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzLmdldCgpOyB9CiAgICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5h
YmxlZChib29sKTsKQEAgLTE0NSw3ICsxNDIsNiBAQCBwcm90ZWN0ZWQ6CiAKICAgICBQcmVmZXRj
aENhY2hlIG1fcHJlZmV0Y2hDYWNoZTsKIAotICAgIFJlZjxTdG9yYWdlTWFuYWdlcj4gbV9zdG9y
YWdlTWFuYWdlcjsKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgYm9vbCBtX2lzSW52YWxpZGF0
ZWQgeyBmYWxzZSB9OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuY3BwCmlu
ZGV4IGMxYjk3N2NjMWQyYmM3YTgzMDUxYjI2MjEyZjJkMWRlMGU4NTc5ODQuLmIyOWY0OTMzOWYw
M2QxMzNhNWNmNTBhOTA3ZDEyMTM5MDM0MTgxZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFt
ZXRlcnMuY3BwCkBAIC01MCw3ICs1MCw3IEBAIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0
ZXJzIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzOjpwcml2YXRlU2Vzc2lvCiAjaWYg
VVNFKENVUkwpCiAgICAgICAgICwgeyB9LCB7IH0KICNlbmRpZgotICAgICAgICAsIHsgfSwgeyB9
LCBmYWxzZSwgZmFsc2UsIHsgfSwgeyB9LCB7IH0sIHsgfSwgeyB9LCB7IH0sIHsgfSwgeyB9LCB7
IH0sIHsgfQorICAgICAgICAsIHsgfSwgeyB9LCBmYWxzZSwgZmFsc2UsIHsgfSwgeyB9LCB7IH0s
IHsgfSwgeyB9LCB7IH0sIHsgfSwgeyB9CiAgICAgfTsKIH0KIApAQCAtODYsNyArODYsNiBAQCB2
b2lkIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgcmVzb3VyY2VMb2FkU3RhdGlzdGljc01h
bnVhbFByZXZhbGVudFJlc291cmNlOwogICAgIGVuY29kZXIgPDwgZW5hYmxlUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc05TVVJMU2Vzc2lvblN3aXRjaGluZzsKIAotICAgIGVuY29kZXIgPDwgbG9jYWxT
dG9yYWdlRGlyZWN0b3J5IDw8IGxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsK
ICAgICBlbmNvZGVyIDw8IG5ldHdvcmtDYWNoZURpcmVjdG9yeSA8PCBuZXR3b3JrQ2FjaGVEaXJl
Y3RvcnlFeHRlbnNpb25IYW5kbGU7CiAKICAgICBlbmNvZGVyIDw8IGRldmljZU1hbmFnZW1lbnRS
ZXN0cmljdGlvbnNFbmFibGVkOwpAQCAtMjE0LDE2ICsyMTMsNiBAQCBPcHRpb25hbDxOZXR3b3Jr
U2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycz4gTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRl
cnM6OmRlYwogICAgIGRlY29kZXIgPj4gZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc05TVVJM
U2Vzc2lvblN3aXRjaGluZzsKICAgICBpZiAoIWVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NO
U1VSTFNlc3Npb25Td2l0Y2hpbmcpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAg
Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiBsb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7Ci0gICAgZGVjb2Rl
ciA+PiBsb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7Ci0gICAgaWYgKCFsb2NhbFN0b3JhZ2VEaXJlY3Rv
cnkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBPcHRpb25hbDxTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGU+IGxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsK
LSAgICBkZWNvZGVyID4+IGxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKLSAg
ICBpZiAoIWxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFN0cmluZz4gbmV0d29ya0NhY2hlRGly
ZWN0b3J5OwogICAgIGRlY29kZXIgPj4gbmV0d29ya0NhY2hlRGlyZWN0b3J5OwpAQCAtMjc3LDgg
KzI2Niw2IEBAIE9wdGlvbmFsPE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzPiBOZXR3
b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjCiAgICAgICAgICwgV1RGTW92ZSgqZGV2
aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0VuYWJsZWQpCiAgICAgICAgICwgV1RGTW92ZSgqYWxs
TG9hZHNCbG9ja2VkQnlEZXZpY2VNYW5hZ2VtZW50UmVzdHJpY3Rpb25zRm9yVGVzdGluZykKICAg
ICAgICAgLCBXVEZNb3ZlKCpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFudWFsUHJldmFsZW50UmVz
b3VyY2UpCi0gICAgICAgICwgV1RGTW92ZSgqbG9jYWxTdG9yYWdlRGlyZWN0b3J5KQotICAgICAg
ICAsIFdURk1vdmUoKmxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSkKICAgICAg
ICAgLCBXVEZNb3ZlKCpuZXR3b3JrQ2FjaGVEaXJlY3RvcnkpCiAgICAgICAgICwgV1RGTW92ZSgq
bmV0d29ya0NhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKQogICAgIH19OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFy
YW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNy
ZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IDE4MzNlNDY3ZmY2YzUyZDI0MzhhNjcwMmJkMTc4ZTU3
YzUyYjY2YTMuLjUwYmUzMGU4YjZmZmUwZGIxMTlmZTEwMjcwZDFjMWUyZDg3YTlmY2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlv
blBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtT
ZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTkyLDggKzkyLDYgQEAgc3RydWN0IE5ldHdv
cmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICAgICBib29sIGFsbExvYWRzQmxvY2tlZEJ5
RGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0ZvclRlc3RpbmcgeyBmYWxzZSB9OwogICAgIFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW51YWxQcmV2
YWxlbnRSZXNvdXJjZSB7IH07CiAKLSAgICBTdHJpbmcgbG9jYWxTdG9yYWdlRGlyZWN0b3J5Owot
ICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBsb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNp
b25IYW5kbGU7CiAgICAgU3RyaW5nIG5ldHdvcmtDYWNoZURpcmVjdG9yeTsKICAgICBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGUgbmV0d29ya0NhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9M
b2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dl
YlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwCmluZGV4IGJmNTE1NzhmYjE0N2RkZGM4
N2U2NmQ5MGE1ZWRkMDJhNGNkNzI2OTMuLjhmNDc2M2M5ZGM4NmFiNGE0MmQ5NDZmMjZkYjI4YmNj
NjkwMjljYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3Rv
cmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcApAQCAtMjU5LDcgKzI1
OSw2IEBAIHZvaWQgTG9jYWxTdG9yYWdlRGF0YWJhc2U6OnVwZGF0ZURhdGFiYXNlKCkKICAgICBp
ZiAobV9pc0Nsb3NlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJUKG1fZGlkU2NoZWR1
bGVEYXRhYmFzZVVwZGF0ZSk7CiAgICAgbV9kaWRTY2hlZHVsZURhdGFiYXNlVXBkYXRlID0gZmFs
c2U7CiAKICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBjaGFuZ2VkSXRlbXM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdl
RGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2Nh
bFN0b3JhZ2VEYXRhYmFzZS5oCmluZGV4IDRkNjg3NmIxNzEzZmUxNDdjOWVlNzFhZTliNmQ2OTQ2
MjM5N2FlZmQuLjhjZmIyNGIyMWYzYTBhNDI2YmRiMjJkNDVjYWI0MjA5NTIzZWM4MTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3Jh
Z2VEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFn
ZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5oCkBAIC01NSw2ICs1NSw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIHJlbW92ZUl0ZW0oY29uc3QgU3RyaW5nJiBrZXkpOwogICAgIHZvaWQgY2xlYXIoKTsKIAor
ICAgIHZvaWQgdXBkYXRlRGF0YWJhc2UoKTsKKwogICAgIC8vIFdpbGwgYmxvY2sgdW50aWwgYWxs
IHBlbmRpbmcgY2hhbmdlcyBoYXZlIGJlZW4gd3JpdHRlbiB0byBkaXNrLgogICAgIHZvaWQgY2xv
c2UoKTsKIApAQCAtNzMsNyArNzUsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgaXRlbURpZENoYW5n
ZShjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAKICAgICB2b2lkIHNj
aGVkdWxlRGF0YWJhc2VVcGRhdGUoKTsKLSAgICB2b2lkIHVwZGF0ZURhdGFiYXNlKCk7CiAgICAg
dm9pZCB1cGRhdGVEYXRhYmFzZVdpdGhDaGFuZ2VkSXRlbXMoY29uc3QgSGFzaE1hcDxTdHJpbmcs
IFN0cmluZz4mKTsKIAogICAgIGJvb2wgZGF0YWJhc2VJc0VtcHR5KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJh
c2VUcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9M
b2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3BwCmluZGV4IDA3YTYzM2ZiZmU5YmU1OWVkYmVk
NTM5Yzk2ZTE5ZTRiMWJiZDI1ODMuLjY3MzI3MDk0MzJmM2E2ZTc1MjUxMTdmZWVlNzlmYjVjOGE2
MTY5MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFn
ZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3BwCkBA
IC0zOSwyNCArMzksMTcgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKLVJlZjxMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI+IExvY2FsU3RvcmFnZURh
dGFiYXNlVHJhY2tlcjo6Y3JlYXRlKFJlZjxXb3JrUXVldWU+JiYgcXVldWUsIFN0cmluZyYmIGxv
Y2FsU3RvcmFnZURpcmVjdG9yeSkKK1JlZjxMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI+IExv
Y2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6Y3JlYXRlKFN0cmluZyYmIGxvY2FsU3RvcmFnZURp
cmVjdG9yeSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBMb2NhbFN0b3JhZ2VEYXRhYmFz
ZVRyYWNrZXIoV1RGTW92ZShxdWV1ZSksIFdURk1vdmUobG9jYWxTdG9yYWdlRGlyZWN0b3J5KSkp
OworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcihX
VEZNb3ZlKGxvY2FsU3RvcmFnZURpcmVjdG9yeSkpKTsKIH0KIAotTG9jYWxTdG9yYWdlRGF0YWJh
c2VUcmFja2VyOjpMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIoUmVmPFdvcmtRdWV1ZT4mJiBx
dWV1ZSwgU3RyaW5nJiYgbG9jYWxTdG9yYWdlRGlyZWN0b3J5KQotICAgIDogbV9xdWV1ZShXVEZN
b3ZlKHF1ZXVlKSkKLSAgICAsIG1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5KFdURk1vdmUobG9jYWxT
dG9yYWdlRGlyZWN0b3J5KSkKK0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6TG9jYWxTdG9y
YWdlRGF0YWJhc2VUcmFja2VyKFN0cmluZyYmIGxvY2FsU3RvcmFnZURpcmVjdG9yeSkKKyAgICA6
IG1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5KFdURk1vdmUobG9jYWxTdG9yYWdlRGlyZWN0b3J5KSkK
IHsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIEFTU0VSVCghUnVuTG9vcDo6
aXNNYWluKCkpOwogCi0gICAgLy8gTWFrZSBzdXJlIHRoZSBlbmNvZGluZyBpcyBpbml0aWFsaXpl
ZCBiZWZvcmUgd2Ugc3RhcnQgZGlzcGF0Y2hpbmcgdGhpbmdzIHRvIHRoZSBxdWV1ZS4KLSAgICBV
VEY4RW5jb2RpbmcoKTsKLQotICAgIG1fcXVldWUtPmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyldKCkgbXV0YWJsZSB7Ci0gICAgICAgIC8vIERlbGV0ZSBsZWdhY3kgc3Rv
cmFnZVRyYWNrZXIgZGF0YWJhc2UgZmlsZS4KLSAgICAgICAgU1FMaXRlRmlsZVN5c3RlbTo6ZGVs
ZXRlRGF0YWJhc2VGaWxlKHByb3RlY3RlZFRoaXMtPmRhdGFiYXNlUGF0aCgiU3RvcmFnZVRyYWNr
ZXIuZGIiKSk7Ci0gICAgfSk7CisgICAgU1FMaXRlRmlsZVN5c3RlbTo6ZGVsZXRlRGF0YWJhc2VG
aWxlKGRhdGFiYXNlUGF0aCgiU3RvcmFnZVRyYWNrZXIuZGIiKSk7CiB9CiAKIFN0cmluZyBMb2Nh
bFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OmxvY2FsU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0CkBA
IC02Niw3ICs1OSw3IEBAIFN0cmluZyBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OmxvY2Fs
U3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0CiAKIExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6
fkxvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcigpCiB7Ci0gICAgQVNTRVJUKFJ1bkxvb3A6Omlz
TWFpbigpKTsKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIH0KIAogU3RyaW5nIExv
Y2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6ZGF0YWJhc2VQYXRoKGNvbnN0IFNlY3VyaXR5T3Jp
Z2luRGF0YSYgc2VjdXJpdHlPcmlnaW4pIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0
YWJhc2VUcmFja2VyLmgKaW5kZXggNWQ5ZDJjMmE0YzdkYTAxM2Y2MGYxMWViNDM2ZjE4ZTQ3NTgw
MjA5MS4uODViNDllZTI1YjhhY2NjOWRhZjk5OTM0ZGU3ODhjMjM1ZmQ1YWJmMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURh
dGFiYXNlVHJhY2tlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3Rv
cmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuaApAQCAtMzUsOSArMzUsOSBAQAogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlciwg
V1RGOjpEZXN0cnVjdGlvblRocmVhZDo6TWFpblJ1bkxvb3A+IHsKK2NsYXNzIExvY2FsU3RvcmFn
ZURhdGFiYXNlVHJhY2tlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxMb2NhbFN0b3Jh
Z2VEYXRhYmFzZVRyYWNrZXI+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPExvY2FsU3RvcmFn
ZURhdGFiYXNlVHJhY2tlcj4gY3JlYXRlKFJlZjxXb3JrUXVldWU+JiYsIFN0cmluZyYmIGxvY2Fs
U3RvcmFnZURpcmVjdG9yeSk7CisgICAgc3RhdGljIFJlZjxMb2NhbFN0b3JhZ2VEYXRhYmFzZVRy
YWNrZXI+IGNyZWF0ZShTdHJpbmcmJiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpOwogICAgIH5Mb2Nh
bFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIoKTsKIAogICAgIFN0cmluZyBkYXRhYmFzZVBhdGgoY29u
c3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJikgY29uc3Q7CkBAIC02NCw3ICs2NCw3IEBA
IHB1YmxpYzoKICAgICBWZWN0b3I8T3JpZ2luRGV0YWlscz4gb3JpZ2luRGV0YWlscygpOwogCiBw
cml2YXRlOgotICAgIExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcihSZWY8V29ya1F1ZXVlPiYm
LCBTdHJpbmcmJiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpOworICAgIExvY2FsU3RvcmFnZURhdGFi
YXNlVHJhY2tlcihTdHJpbmcmJiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpOwogCiAgICAgU3RyaW5n
IGRhdGFiYXNlUGF0aChjb25zdCBTdHJpbmcmIGZpbGVuYW1lKSBjb25zdDsKICAgICBTdHJpbmcg
bG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3Q7CkBAIC03Myw4ICs3Myw2IEBAIHByaXZhdGU6
CiAgICAgICAgIENyZWF0ZUlmTm9uRXhpc3RlbnQsCiAgICAgICAgIFNraXBJZk5vbkV4aXN0ZW50
CiAgICAgfTsKLQotICAgIFJlZjxXb3JrUXVldWU+IG1fcXVldWU7CiAgICAgCiAgICAgLy8gSXQg
aXMgbm90IHNhZmUgdG8gdXNlIHRoaXMgbWVtYmVyIGZyb20gYSBiYWNrZ3JvdW5kIHRocmVhZCwg
Y2FsbCBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSBpbnN0ZWFkLgogICAgIGNvbnN0IFN0cmluZyBt
X2xvY2FsU3RvcmFnZURpcmVjdG9yeTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VOYW1lc3BhY2UuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZU5hbWVzcGFjZS5jcHAK
aW5kZXggNTRkYzc5OTQyOGNkYThiMzA3MDY1ZDlhN2Q2N2U3MGIzODJiYjQ0Mi4uM2FlYzY2OGRm
MTBiYzVjNTFlZTM2NGY5ZmVmZWRjNTBkZDQ5NDQxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZU5hbWVzcGFjZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZU5h
bWVzcGFjZS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgTG9jYWxTdG9yYWdlTmFtZXNwYWNlOjp+TG9j
YWxTdG9yYWdlTmFtZXNwYWNlKCkKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIH0K
IAotYXV0byBMb2NhbFN0b3JhZ2VOYW1lc3BhY2U6OmdldE9yQ3JlYXRlU3RvcmFnZUFyZWEoU2Vj
dXJpdHlPcmlnaW5EYXRhJiYgc2VjdXJpdHlPcmlnaW4sIElzRXBoZW1lcmFsIGlzRXBoZW1lcmFs
KSAtPiBSZWY8U3RvcmFnZUFyZWE+CitSZWY8U3RvcmFnZUFyZWE+IExvY2FsU3RvcmFnZU5hbWVz
cGFjZTo6Z2V0T3JDcmVhdGVTdG9yYWdlQXJlYShTZWN1cml0eU9yaWdpbkRhdGEmJiBzZWN1cml0
eU9yaWdpbiwgSXNFcGhlbWVyYWwgaXNFcGhlbWVyYWwpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29w
Ojppc01haW4oKSk7CiAgICAgcmV0dXJuICptX3N0b3JhZ2VBcmVhTWFwLmVuc3VyZShzZWN1cml0
eU9yaWdpbiwgWyZdKCkgbXV0YWJsZSB7CkBAIC04MSwxMSArODEsNCBAQCBWZWN0b3I8U2VjdXJp
dHlPcmlnaW5EYXRhPiBMb2NhbFN0b3JhZ2VOYW1lc3BhY2U6OmVwaGVtZXJhbE9yaWdpbnMoKSBj
b25zdAogICAgIHJldHVybiBvcmlnaW5zOwogfQogCi12b2lkIExvY2FsU3RvcmFnZU5hbWVzcGFj
ZTo6Y2xvbmVUbyhMb2NhbFN0b3JhZ2VOYW1lc3BhY2UmIG5ld0xvY2FsU3RvcmFnZU5hbWVzcGFj
ZSkKLXsKLSAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBmb3IgKGF1dG8mIHBh
aXIgOiBtX3N0b3JhZ2VBcmVhTWFwKQotICAgICAgICBuZXdMb2NhbFN0b3JhZ2VOYW1lc3BhY2Uu
bV9zdG9yYWdlQXJlYU1hcC5hZGQocGFpci5rZXksIHBhaXIudmFsdWUtPmNsb25lKCkpOwotfQot
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VOYW1lc3BhY2UuaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VOYW1lc3BhY2UuaAppbmRl
eCA0NzE5MGNjNmNiNDUwMzk3MmMyNzJkMGNjZjQ5Njc3OGE5MDljODhmLi45YTc2ZTFjNjM4ZGI0
MzI2MGZmODI0NDU2N2M5NGU3ZDAzYjNiZGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlTmFtZXNwYWNlLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZU5hbWVzcGFj
ZS5oCkBAIC01NCw3ICs1NCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyQWxsU3RvcmFnZUFy
ZWFzKCk7CiAKICAgICBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBlcGhlbWVy
YWxPcmlnaW5zKCkgY29uc3Q7Ci0gICAgdm9pZCBjbG9uZVRvKExvY2FsU3RvcmFnZU5hbWVzcGFj
ZSYgbmV3TG9jYWxTdG9yYWdlTmFtZXNwYWNlKTsKIAogcHJpdmF0ZToKICAgICBMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UoU3RvcmFnZU1hbmFnZXImLCB1aW50NjRfdCBzdG9yYWdlTWFuYWdlcklEKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TZXNz
aW9uU3RvcmFnZU5hbWVzcGFjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dl
YlN0b3JhZ2UvU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UuY3BwCmluZGV4IDU4MGE4ZTYyZWFmMDQ0
ZTZjNDU1NjQzMmE2MDE2OWYyMWZkNzE2YzEuLmRkZjgyMTJhNDljMzdkNWNmN2VhM2I4MmMxMjJi
MmVkZWJiN2RkN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2Vi
U3RvcmFnZS9TZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlLmNwcApAQCAt
NDMsMjAgKzQzLDcgQEAgU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2U6On5TZXNzaW9uU3RvcmFnZU5h
bWVzcGFjZSgpCiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiB9CiAKLXZvaWQgU2Vz
c2lvblN0b3JhZ2VOYW1lc3BhY2U6OmFkZEFsbG93ZWRDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlv
bjo6VW5pcXVlSUQgYWxsb3dlZENvbm5lY3Rpb24pCi17Ci0gICAgQVNTRVJUKCFSdW5Mb29wOjpp
c01haW4oKSk7Ci0gICAgbV9hbGxvd2VkQ29ubmVjdGlvbnMuYWRkKGFsbG93ZWRDb25uZWN0aW9u
KTsKLX0KLQotCi12b2lkIFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlOjpyZW1vdmVBbGxvd2VkQ29u
bmVjdGlvbihJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGFsbG93ZWRDb25uZWN0aW9uKQotewot
ICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIEFTU0VSVChtX2FsbG93ZWRDb25u
ZWN0aW9ucy5jb250YWlucyhhbGxvd2VkQ29ubmVjdGlvbikpOwotICAgIG1fYWxsb3dlZENvbm5l
Y3Rpb25zLnJlbW92ZShhbGxvd2VkQ29ubmVjdGlvbik7Ci19Ci1hdXRvIFNlc3Npb25TdG9yYWdl
TmFtZXNwYWNlOjpnZXRPckNyZWF0ZVN0b3JhZ2VBcmVhKFNlY3VyaXR5T3JpZ2luRGF0YSYmIHNl
Y3VyaXR5T3JpZ2luKSAtPiBSZWY8U3RvcmFnZUFyZWE+CitSZWY8U3RvcmFnZUFyZWE+IFNlc3Np
b25TdG9yYWdlTmFtZXNwYWNlOjpnZXRPckNyZWF0ZVN0b3JhZ2VBcmVhKFNlY3VyaXR5T3JpZ2lu
RGF0YSYmIHNlY3VyaXR5T3JpZ2luKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkp
OwogICAgIHJldHVybiAqbV9zdG9yYWdlQXJlYU1hcC5lbnN1cmUoc2VjdXJpdHlPcmlnaW4sIFt0
aGlzLCAmc2VjdXJpdHlPcmlnaW5dKCkgbXV0YWJsZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TZXNzaW9uU3RvcmFnZU5h
bWVzcGFjZS5oCmluZGV4IDcyMDc0OGY2Nzg2ODA2YjBlYzEwZDJiMGMyN2NlZjAzMmEyZjUzMGYu
LjE4ZjBmMDliODAyMTE4NGEwNDhkM2Y1MzhmY2VlNDYzYzM5MzQ3ZmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TZXNzaW9uU3RvcmFnZU5hbWVz
cGFjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TZXNz
aW9uU3RvcmFnZU5hbWVzcGFjZS5oCkBAIC00NSwxMCArNDUsNiBAQCBwdWJsaWM6CiAKICAgICBi
b29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX3N0b3JhZ2VBcmVhTWFwLmlzRW1wdHkoKTsg
fQogCi0gICAgY29uc3QgSGFzaFNldDxJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEPiYgYWxsb3dl
ZENvbm5lY3Rpb25zKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd2VkQ29ubmVjdGlvbnM7IH0KLSAg
ICB2b2lkIGFkZEFsbG93ZWRDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQpOwot
ICAgIHZvaWQgcmVtb3ZlQWxsb3dlZENvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJ
RCk7Ci0KICAgICBSZWY8U3RvcmFnZUFyZWE+IGdldE9yQ3JlYXRlU3RvcmFnZUFyZWEoV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYpOwogCiAgICAgdm9pZCBjbG9uZVRvKFNlc3Npb25TdG9y
YWdlTmFtZXNwYWNlJiBuZXdTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSk7CkBAIC02MSw3ICs1Nyw2
IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgU2Vzc2lvblN0b3JhZ2VOYW1lc3Bh
Y2UodW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKIAotICAgIEhhc2hTZXQ8SVBDOjpDb25uZWN0aW9u
OjpVbmlxdWVJRD4gbV9hbGxvd2VkQ29ubmVjdGlvbnM7CiAgICAgdW5zaWduZWQgbV9xdW90YUlu
Qnl0ZXMgeyAwIH07CiAKICAgICBIYXNoTWFwPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSwg
UmVmUHRyPFN0b3JhZ2VBcmVhPj4gbV9zdG9yYWdlQXJlYU1hcDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWEuY3BwCmluZGV4
IDM0OTQzMWZlYTU2YzQ3YWI4MTQ2MGNiODNmNTU2ZTcyNGRjYTJkNGQuLjJkMTI1ODM1Y2JjOGI1
MjJjMzNhYWU1ODAxNGRiZmNhMGE2ODkxNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhLmNwcApAQCAtMzYsMTEgKzM2
LDE4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAor
c3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlU3RvcmFnZUFyZWFJZGVudGlmaWVyKCkKK3sKKyAgICBz
dGF0aWMgdWludDY0X3QgaWRlbnRpZmllcjsKKyAgICByZXR1cm4gKytpZGVudGlmaWVyOworfQor
CiBTdG9yYWdlQXJlYTo6U3RvcmFnZUFyZWEoTG9jYWxTdG9yYWdlTmFtZXNwYWNlKiBsb2NhbFN0
b3JhZ2VOYW1lc3BhY2UsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4s
IHVuc2lnbmVkIHF1b3RhSW5CeXRlcykKICAgICA6IG1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlKG1h
a2VXZWFrUHRyKGxvY2FsU3RvcmFnZU5hbWVzcGFjZSkpCiAgICAgLCBtX3NlY3VyaXR5T3JpZ2lu
KHNlY3VyaXR5T3JpZ2luKQogICAgICwgbV9xdW90YUluQnl0ZXMocXVvdGFJbkJ5dGVzKQogICAg
ICwgbV9zdG9yYWdlTWFwKFN0b3JhZ2VNYXA6OmNyZWF0ZShtX3F1b3RhSW5CeXRlcykpCisgICAg
LCBtX2lkZW50aWZpZXIoZ2VuZXJhdGVTdG9yYWdlQXJlYUlkZW50aWZpZXIoKSkKIHsKICAgICBB
U1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIH0KQEAgLTQ4LDMwICs1NSwzMiBAQCBTdG9yYWdl
QXJlYTo6U3RvcmFnZUFyZWEoTG9jYWxTdG9yYWdlTmFtZXNwYWNlKiBsb2NhbFN0b3JhZ2VOYW1l
c3BhY2UsIGNvbnN0IFNlYwogU3RvcmFnZUFyZWE6On5TdG9yYWdlQXJlYSgpCiB7CiAgICAgQVNT
RVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgQVNTRVJUKG1fZXZlbnRMaXN0ZW5lcnMuaXNF
bXB0eSgpKTsKIAogICAgIGlmIChtX2xvY2FsU3RvcmFnZURhdGFiYXNlKQogICAgICAgICBtX2xv
Y2FsU3RvcmFnZURhdGFiYXNlLT5jbG9zZSgpOwogfQogCi12b2lkIFN0b3JhZ2VBcmVhOjphZGRM
aXN0ZW5lcihJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGNvbm5lY3Rpb25JRCwgdWludDY0X3Qg
c3RvcmFnZU1hcElEKQordm9pZCBTdG9yYWdlQXJlYTo6YWRkTGlzdGVuZXIoSVBDOjpDb25uZWN0
aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uSUQpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01h
aW4oKSk7Ci0gICAgQVNTRVJUKCFtX2V2ZW50TGlzdGVuZXJzLmNvbnRhaW5zKHN0ZDo6bWFrZV9w
YWlyKGNvbm5lY3Rpb25JRCwgc3RvcmFnZU1hcElEKSkpOwotICAgIG1fZXZlbnRMaXN0ZW5lcnMu
YWRkKHN0ZDo6bWFrZV9wYWlyKGNvbm5lY3Rpb25JRCwgc3RvcmFnZU1hcElEKSk7CisgICAgQVNT
RVJUKCFtX2V2ZW50TGlzdGVuZXJzLmNvbnRhaW5zKGNvbm5lY3Rpb25JRCkpOworCisgICAgaWYg
KG1fZXZlbnRMaXN0ZW5lcnMuaXNFbXB0eSgpICYmICFpc0VwaGVtZXJhbCgpKQorICAgICAgICBv
cGVuRGF0YWJhc2VBbmRJbXBvcnRJdGVtc0lmTmVlZGVkKCk7CisKKyAgICBtX2V2ZW50TGlzdGVu
ZXJzLmFkZChjb25uZWN0aW9uSUQpOwogfQogCi12b2lkIFN0b3JhZ2VBcmVhOjpyZW1vdmVMaXN0
ZW5lcihJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGNvbm5lY3Rpb25JRCwgdWludDY0X3Qgc3Rv
cmFnZU1hcElEKQordm9pZCBTdG9yYWdlQXJlYTo6cmVtb3ZlTGlzdGVuZXIoSVBDOjpDb25uZWN0
aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uSUQpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01h
aW4oKSk7Ci0gICAgQVNTRVJUKGlzRXBoZW1lcmFsKCkgfHwgbV9ldmVudExpc3RlbmVycy5jb250
YWlucyhzdGQ6Om1ha2VfcGFpcihjb25uZWN0aW9uSUQsIHN0b3JhZ2VNYXBJRCkpKTsKLSAgICBt
X2V2ZW50TGlzdGVuZXJzLnJlbW92ZShzdGQ6Om1ha2VfcGFpcihjb25uZWN0aW9uSUQsIHN0b3Jh
Z2VNYXBJRCkpOworICAgIG1fZXZlbnRMaXN0ZW5lcnMucmVtb3ZlKGNvbm5lY3Rpb25JRCk7CiB9
CiAKLWJvb2wgU3RvcmFnZUFyZWE6Omhhc0xpc3RlbmVyKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVl
SUQgY29ubmVjdGlvbklELCB1aW50NjRfdCBzdG9yYWdlTWFwSUQpIGNvbnN0Citib29sIFN0b3Jh
Z2VBcmVhOjpoYXNMaXN0ZW5lcihJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGNvbm5lY3Rpb25J
RCkgY29uc3QKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICByZXR1cm4g
bV9ldmVudExpc3RlbmVycy5jb250YWlucyhzdGQ6Om1ha2VfcGFpcihjb25uZWN0aW9uSUQsIHN0
b3JhZ2VNYXBJRCkpOworICAgIHJldHVybiBtX2V2ZW50TGlzdGVuZXJzLmNvbnRhaW5zKGNvbm5l
Y3Rpb25JRCk7CiB9CiAKIFJlZjxTdG9yYWdlQXJlYT4gU3RvcmFnZUFyZWE6OmNsb25lKCkgY29u
c3QKQEAgLTEwNSwyNSArMTE0LDYgQEAgdm9pZCBTdG9yYWdlQXJlYTo6c2V0SXRlbShJUEM6OkNv
bm5lY3Rpb246OlVuaXF1ZUlEIHNvdXJjZUNvbm5lY3Rpb24sIHVpbnQ2NF90IHMKICAgICBkaXNw
YXRjaEV2ZW50cyhzb3VyY2VDb25uZWN0aW9uLCBzb3VyY2VTdG9yYWdlQXJlYUlELCBrZXksIG9s
ZFZhbHVlLCB2YWx1ZSwgdXJsU3RyaW5nKTsKIH0KIAotdm9pZCBTdG9yYWdlQXJlYTo6c2V0SXRl
bXMoY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIGl0ZW1zKQotewotICAgIEFTU0VSVCgh
UnVuTG9vcDo6aXNNYWluKCkpOwotICAgIC8vIEltcG9ydCBpdGVtcyBmcm9tIHdlYiBwcm9jZXNz
IGlmIGl0ZW1zIGFyZSBub3Qgc3RvcmVkIG9uIGRpc2suCi0gICAgaWYgKCFpc0VwaGVtZXJhbCgp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBmb3IgKGF1dG8mIGl0ZW0gOiBpdGVtcykgewotICAg
ICAgICBTdHJpbmcgb2xkVmFsdWU7Ci0gICAgICAgIGJvb2wgcXVvdGFFeGNlcHRpb247Ci0gICAg
ICAgIGF1dG8gbmV3U3RvcmFnZU1hcCA9IG1fc3RvcmFnZU1hcC0+c2V0SXRlbShpdGVtLmtleSwg
aXRlbS52YWx1ZSwgb2xkVmFsdWUsIHF1b3RhRXhjZXB0aW9uKTsKLSAgICAgICAgaWYgKG5ld1N0
b3JhZ2VNYXApCi0gICAgICAgICAgICBtX3N0b3JhZ2VNYXAgPSBXVEZNb3ZlKG5ld1N0b3JhZ2VN
YXApOwotICAgICAgICAKLSAgICAgICAgaWYgKHF1b3RhRXhjZXB0aW9uKQotICAgICAgICAgICAg
cmV0dXJuOwotICAgIH0KLX0KLQogdm9pZCBTdG9yYWdlQXJlYTo6cmVtb3ZlSXRlbShJUEM6OkNv
bm5lY3Rpb246OlVuaXF1ZUlEIHNvdXJjZUNvbm5lY3Rpb24sIHVpbnQ2NF90IHNvdXJjZVN0b3Jh
Z2VBcmVhSUQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHVybFN0cmluZykKIHsK
ICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKQEAgLTE3OCw3ICsxNjgsNyBAQCB2b2lk
IFN0b3JhZ2VBcmVhOjpjbGVhcigpCiAgICAgfQogCiAgICAgZm9yIChhdXRvIGl0ID0gbV9ldmVu
dExpc3RlbmVycy5iZWdpbigpLCBlbmQgPSBtX2V2ZW50TGlzdGVuZXJzLmVuZCgpOyBpdCAhPSBl
bmQ7ICsraXQpIHsKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb25uZWN0aW9u
SUQgPSBpdC0+Zmlyc3QsIGRlc3RpbmF0aW9uU3RvcmFnZUFyZWFJRCA9IGl0LT5zZWNvbmRdIHsK
KyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb25uZWN0aW9uSUQgPSAqaXQsIGRl
c3RpbmF0aW9uU3RvcmFnZUFyZWFJRCA9IG1faWRlbnRpZmllcl0gewogICAgICAgICAgICAgaWYg
KGF1dG8qIGNvbm5lY3Rpb24gPSBJUEM6OkNvbm5lY3Rpb246OmNvbm5lY3Rpb24oY29ubmVjdGlv
bklEKSkKICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdl
QXJlYU1hcDo6Q2xlYXJDYWNoZSgpLCBkZXN0aW5hdGlvblN0b3JhZ2VBcmVhSUQpOwogICAgICAg
ICB9KTsKQEAgLTE5Miw5ICsxODIsMTAgQEAgdm9pZCBTdG9yYWdlQXJlYTo6b3BlbkRhdGFiYXNl
QW5kSW1wb3J0SXRlbXNJZk5lZWRlZCgpIGNvbnN0CiAgICAgICAgIHJldHVybjsKIAogICAgIEFT
U0VSVChtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZS0+c3RvcmFnZU1hbmFnZXIoKS0+bG9jYWxTdG9y
YWdlRGF0YWJhc2VUcmFja2VyKCkpOworICAgIEFTU0VSVChtX3F1ZXVlKTsKICAgICAvLyBXZSBv
cGVuIHRoZSBkYXRhYmFzZSBoZXJlIGV2ZW4gaWYgd2UndmUgYWxyZWFkeSBpbXBvcnRlZCBvdXIg
aXRlbXMgdG8gZW5zdXJlIHRoYXQgdGhlIGRhdGFiYXNlIGlzIG9wZW4gaWYgd2UgbmVlZCB0byB3
cml0ZSB0byBpdC4KICAgICBpZiAoIW1fbG9jYWxTdG9yYWdlRGF0YWJhc2UpCi0gICAgICAgIG1f
bG9jYWxTdG9yYWdlRGF0YWJhc2UgPSBMb2NhbFN0b3JhZ2VEYXRhYmFzZTo6Y3JlYXRlKG1fbG9j
YWxTdG9yYWdlTmFtZXNwYWNlLT5zdG9yYWdlTWFuYWdlcigpLT53b3JrUXVldWUoKSwgKm1fbG9j
YWxTdG9yYWdlTmFtZXNwYWNlLT5zdG9yYWdlTWFuYWdlcigpLT5sb2NhbFN0b3JhZ2VEYXRhYmFz
ZVRyYWNrZXIoKSwgbV9zZWN1cml0eU9yaWdpbik7CisgICAgICAgIG1fbG9jYWxTdG9yYWdlRGF0
YWJhc2UgPSBMb2NhbFN0b3JhZ2VEYXRhYmFzZTo6Y3JlYXRlKCptX3F1ZXVlLCAqbV9sb2NhbFN0
b3JhZ2VOYW1lc3BhY2UtPnN0b3JhZ2VNYW5hZ2VyKCktPmxvY2FsU3RvcmFnZURhdGFiYXNlVHJh
Y2tlcigpLCBtX3NlY3VyaXR5T3JpZ2luKTsKIAogICAgIGlmIChtX2RpZEltcG9ydEl0ZW1zRnJv
bURhdGFiYXNlKQogICAgICAgICByZXR1cm47CkBAIC0yMDcsMTMgKzE5OCwyMSBAQCB2b2lkIFN0
b3JhZ2VBcmVhOjpkaXNwYXRjaEV2ZW50cyhJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIHNvdXJj
ZUNvbm5lY3Rpb24sIHVpbgogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAg
IGZvciAoYXV0byBpdCA9IG1fZXZlbnRMaXN0ZW5lcnMuYmVnaW4oKSwgZW5kID0gbV9ldmVudExp
c3RlbmVycy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIHNvdXJjZVN0b3JhZ2VB
cmVhSUQgPSBpdC0+Zmlyc3QgPT0gc291cmNlQ29ubmVjdGlvbiA/IHNvdXJjZVN0b3JhZ2VBcmVh
SUQgOiAwOworICAgICAgICBzb3VyY2VTdG9yYWdlQXJlYUlEID0gKml0ID09IHNvdXJjZUNvbm5l
Y3Rpb24gPyBzb3VyY2VTdG9yYWdlQXJlYUlEIDogMDsKIAotICAgICAgICBSdW5Mb29wOjptYWlu
KCkuZGlzcGF0Y2goW2Nvbm5lY3Rpb25JRCA9IGl0LT5maXJzdCwgc291cmNlU3RvcmFnZUFyZWFJ
RCwgZGVzdGluYXRpb25TdG9yYWdlQXJlYUlEID0gaXQtPnNlY29uZCwga2V5ID0ga2V5Lmlzb2xh
dGVkQ29weSgpLCBvbGRWYWx1ZSA9IG9sZFZhbHVlLmlzb2xhdGVkQ29weSgpLCBuZXdWYWx1ZSA9
IG5ld1ZhbHVlLmlzb2xhdGVkQ29weSgpLCB1cmxTdHJpbmcgPSB1cmxTdHJpbmcuaXNvbGF0ZWRD
b3B5KCldIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb25uZWN0aW9uSUQg
PSAqaXQsIHNvdXJjZVN0b3JhZ2VBcmVhSUQsIGRlc3RpbmF0aW9uU3RvcmFnZUFyZWFJRCA9IG1f
aWRlbnRpZmllciwga2V5ID0ga2V5Lmlzb2xhdGVkQ29weSgpLCBvbGRWYWx1ZSA9IG9sZFZhbHVl
Lmlzb2xhdGVkQ29weSgpLCBuZXdWYWx1ZSA9IG5ld1ZhbHVlLmlzb2xhdGVkQ29weSgpLCB1cmxT
dHJpbmcgPSB1cmxTdHJpbmcuaXNvbGF0ZWRDb3B5KCldIHsKICAgICAgICAgICAgIGlmIChhdXRv
KiBjb25uZWN0aW9uID0gSVBDOjpDb25uZWN0aW9uOjpjb25uZWN0aW9uKGNvbm5lY3Rpb25JRCkp
CiAgICAgICAgICAgICAgICAgY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U3RvcmFnZUFyZWFN
YXA6OkRpc3BhdGNoU3RvcmFnZUV2ZW50KHNvdXJjZVN0b3JhZ2VBcmVhSUQsIGtleSwgb2xkVmFs
dWUsIG5ld1ZhbHVlLCB1cmxTdHJpbmcpLCBkZXN0aW5hdGlvblN0b3JhZ2VBcmVhSUQpOwogICAg
ICAgICB9KTsKICAgICB9CiB9CiAKK3ZvaWQgU3RvcmFnZUFyZWE6OnN5bmNUb0RhdGFiYXNlKCkK
K3sKKyAgICBpZiAoIW1fbG9jYWxTdG9yYWdlRGF0YWJhc2UpCisgICAgICAgIHJldHVybjsKKwor
ICAgIG1fbG9jYWxTdG9yYWdlRGF0YWJhc2UtPnVwZGF0ZURhdGFiYXNlKCk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWEuaAppbmRleCAwMDAxMDc1NGM3ZjQxYTI2OTJlODMxN2M1
Njc5ODVjYTcwMDIyNzc1Li40ZDMzYzRhMjYzZWIxNjVjYzY2ODMxNWY5ZGY5MGQ2YTIwMGYwMWZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3Rv
cmFnZUFyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2Uv
U3RvcmFnZUFyZWEuaApAQCAtNDksMTUgKzQ5LDE1IEBAIHB1YmxpYzoKICAgICB+U3RvcmFnZUFy
ZWEoKTsKIAogICAgIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlP
cmlnaW4oKSBjb25zdCB7IHJldHVybiBtX3NlY3VyaXR5T3JpZ2luOyB9CisgICAgdWludDY0X3Qg
aWRlbnRpZmllcigpIHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogCi0gICAgdm9pZCBhZGRMaXN0
ZW5lcihJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCB1aW50NjRfdCBzdG9yYWdlTWFwSUQpOwot
ICAgIHZvaWQgcmVtb3ZlTGlzdGVuZXIoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCwgdWludDY0
X3Qgc3RvcmFnZU1hcElEKTsKLSAgICBib29sIGhhc0xpc3RlbmVyKElQQzo6Q29ubmVjdGlvbjo6
VW5pcXVlSUQsIHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCkgY29uc3Q7CisgICAgdm9pZCBhZGRMaXN0
ZW5lcihJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEKTsKKyAgICB2b2lkIHJlbW92ZUxpc3RlbmVy
KElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQpOworICAgIGJvb2wgaGFzTGlzdGVuZXIoSVBDOjpD
b25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uSUQpIGNvbnN0OwogCiAgICAgUmVmPFN0b3Jh
Z2VBcmVhPiBjbG9uZSgpIGNvbnN0OwogCiAgICAgdm9pZCBzZXRJdGVtKElQQzo6Q29ubmVjdGlv
bjo6VW5pcXVlSUQgc291cmNlQ29ubmVjdGlvbiwgdWludDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJ
RCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUsIGNvbnN0IFN0cmluZyYg
dXJsU3RyaW5nLCBib29sJiBxdW90YUV4Y2VwdGlvbik7Ci0gICAgdm9pZCBzZXRJdGVtcyhjb25z
dCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYpOwogICAgIHZvaWQgcmVtb3ZlSXRlbShJUEM6OkNv
bm5lY3Rpb246OlVuaXF1ZUlEIHNvdXJjZUNvbm5lY3Rpb24sIHVpbnQ2NF90IHNvdXJjZVN0b3Jh
Z2VBcmVhSUQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHVybFN0cmluZyk7CiAg
ICAgdm9pZCBjbGVhcihJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIHNvdXJjZUNvbm5lY3Rpb24s
IHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKTsK
IApAQCAtNjgsNiArNjgsMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCBvcGVuRGF0YWJhc2VBbmRJ
bXBvcnRJdGVtc0lmTmVlZGVkKCkgY29uc3Q7CiAKKyAgICB2b2lkIHNldFdvcmtRdWV1ZShSZWZQ
dHI8V29ya1F1ZXVlPiYmIHF1ZXVlKSB7IG1fcXVldWUgPSBXVEZNb3ZlKHF1ZXVlKTsgfQorCisg
ICAgdm9pZCBzeW5jVG9EYXRhYmFzZSgpOworCiBwcml2YXRlOgogICAgIFN0b3JhZ2VBcmVhKExv
Y2FsU3RvcmFnZU5hbWVzcGFjZSosIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYs
IHVuc2lnbmVkIHF1b3RhSW5CeXRlcyk7CiAKQEAgLTgyLDcgKzg2LDEwIEBAIHByaXZhdGU6CiAg
ICAgdW5zaWduZWQgbV9xdW90YUluQnl0ZXMgeyAwIH07CiAKICAgICBSZWZQdHI8V2ViQ29yZTo6
U3RvcmFnZU1hcD4gbV9zdG9yYWdlTWFwOwotICAgIEhhc2hTZXQ8c3RkOjpwYWlyPElQQzo6Q29u
bmVjdGlvbjo6VW5pcXVlSUQsIHVpbnQ2NF90Pj4gbV9ldmVudExpc3RlbmVyczsKKyAgICBIYXNo
U2V0PElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQ+IG1fZXZlbnRMaXN0ZW5lcnM7CisKKyAgICB1
aW50NjRfdCBtX2lkZW50aWZpZXI7CisgICAgUmVmUHRyPFdvcmtRdWV1ZT4gbV9xdWV1ZTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAKaW5kZXggM2UzZTBi
NDY1OGUyMjhmMTIyNTk1NzI4MjEzMTVjOTc0NWNiNjYwZC4uM2I1YjMzYmU1NmFkY2I1ODQ2NTNl
NDhhNTQ3NDMwOWIxZGFkNDY5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwCkBAIC0zMiw3ICszMiw2
IEBACiAjaW5jbHVkZSAiU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UuaCIKICNpbmNsdWRlICJTdG9y
YWdlQXJlYS5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhTWFwTWVzc2FnZXMuaCIKLSNpbmNsdWRl
ICJTdG9yYWdlTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiVHJhbnNpZW50TG9jYWxTdG9y
YWdlTmFtZXNwYWNlLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KQEAgLTQxLDcgKzQwLDYgQEAKICNpbmNsdWRl
IDxXZWJDb3JlL1RleHRFbmNvZGluZy5oPgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3
dGYvV29ya1F1ZXVlLmg+Ci0jaW5jbHVkZSA8d3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg+
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC01MCw1
NDAgKzQ4LDI0MiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIGNvbnN0IHVuc2lnbmVkIFN0
b3JhZ2VNYW5hZ2VyOjpsb2NhbFN0b3JhZ2VEYXRhYmFzZVF1b3RhSW5CeXRlcyA9IDUgKiAxMDI0
ICogMTAyNDsKIAogU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VNYW5hZ2VyKFN0cmluZyYmIGxvY2Fs
U3RvcmFnZURpcmVjdG9yeSkKLSAgICA6IG1fcXVldWUoV29ya1F1ZXVlOjpjcmVhdGUoImNvbS5h
cHBsZS5XZWJLaXQuU3RvcmFnZU1hbmFnZXIiKSkKIHsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNN
YWluKCkpOworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgLy8gTWFrZSBz
dXJlIHRoZSBlbmNvZGluZyBpcyBpbml0aWFsaXplZCBiZWZvcmUgd2Ugc3RhcnQgZGlzcGF0Y2hp
bmcgdGhpbmdzIHRvIHRoZSBxdWV1ZS4KLSAgICBVVEY4RW5jb2RpbmcoKTsKICAgICBpZiAoIWxv
Y2FsU3RvcmFnZURpcmVjdG9yeS5pc051bGwoKSkKLSAgICAgICAgbV9sb2NhbFN0b3JhZ2VEYXRh
YmFzZVRyYWNrZXIgPSBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OmNyZWF0ZShtX3F1ZXVl
LmNvcHlSZWYoKSwgV1RGTW92ZShsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpKTsKKyAgICAgICAgbV9s
b2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIgPSBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6
OmNyZWF0ZShXVEZNb3ZlKGxvY2FsU3RvcmFnZURpcmVjdG9yeSkpOwogfQogCiBTdG9yYWdlTWFu
YWdlcjo6flN0b3JhZ2VNYW5hZ2VyKCkKIHsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogfQogCiB2b2lkIFN0b3JhZ2VNYW5h
Z2VyOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBzdG9yYWdlTmFtZXNw
YWNlSUQsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcykKIHsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNN
YWluKCkpOwotICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIHN0b3JhZ2VOYW1lc3BhY2VJRCwgcXVvdGFJbkJ5dGVzXSgpIG11dGFibGUg
ewotICAgICAgICBtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlcy5lbnN1cmUoc3RvcmFnZU5hbWVz
cGFjZUlELCBbcXVvdGFJbkJ5dGVzXSB7Ci0gICAgICAgICAgICByZXR1cm4gU2Vzc2lvblN0b3Jh
Z2VOYW1lc3BhY2U6OmNyZWF0ZShxdW90YUluQnl0ZXMpOwotICAgICAgICB9KTsKLSAgICB9KTsK
LX0KKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotdm9pZCBTdG9yYWdlTWFuYWdl
cjo6ZGVzdHJveVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3Bh
Y2VJRCkKLXsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIG1fcXVldWUtPmRp
c3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHN0b3JhZ2VOYW1l
c3BhY2VJRF0gewotICAgICAgICBBU1NFUlQobV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMuY29u
dGFpbnMoc3RvcmFnZU5hbWVzcGFjZUlEKSk7Ci0gICAgICAgIGlmIChhdXRvKiBzZXNzaW9uU3Rv
cmFnZU5hbWVzcGFjZSA9IG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLmdldChzdG9yYWdlTmFt
ZXNwYWNlSUQpKSB7Ci0gICAgICAgICAgICBpZiAoc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UtPmFs
bG93ZWRDb25uZWN0aW9ucygpLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICBtX3Nlc3Npb25T
dG9yYWdlTmFtZXNwYWNlcy5yZW1vdmUoc3RvcmFnZU5hbWVzcGFjZUlEKTsKLSAgICAgICAgfQot
ICAgIH0pOworICAgIG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLmVuc3VyZShzdG9yYWdlTmFt
ZXNwYWNlSUQsIFtxdW90YUluQnl0ZXNdIHsKKyAgICAgICAgcmV0dXJuIFNlc3Npb25TdG9yYWdl
TmFtZXNwYWNlOjpjcmVhdGUocXVvdGFJbkJ5dGVzKTsKKyAgICAgfSk7CiB9CiAKLXZvaWQgU3Rv
cmFnZU1hbmFnZXI6OmFkZEFsbG93ZWRTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZUNvbm5lY3Rpb24o
dWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBJUEM6OkNvbm5lY3Rpb24mIGFsbG93ZWRDb25u
ZWN0aW9uKQordm9pZCBTdG9yYWdlTWFuYWdlcjo6ZGVzdHJveVNlc3Npb25TdG9yYWdlTmFtZXNw
YWNlKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCkKIHsKLSAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOwotICAgIGF1dG8gYWxsb3dlZENvbm5lY3Rpb25JRCA9IGFsbG93ZWRDb25uZWN0
aW9uLnVuaXF1ZUlEKCk7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX2Nvbm5lY3Rpb25zLmFkZChh
bGxvd2VkQ29ubmVjdGlvbklEKTsKLSAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpCi0gICAg
ICAgIGFsbG93ZWRDb25uZWN0aW9uLmFkZFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdl
czo6U3RvcmFnZU1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9xdWV1ZS5nZXQoKSwg
dGhpcyk7Ci0KLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCBhbGxvd2VkQ29ubmVjdGlvbklELCBzdG9yYWdlTmFtZXNwYWNlSURdKCkg
bXV0YWJsZSB7Ci0gICAgICAgIEFTU0VSVChtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlcy5jb250
YWlucyhzdG9yYWdlTmFtZXNwYWNlSUQpKTsKLQotICAgICAgICBtX3Nlc3Npb25TdG9yYWdlTmFt
ZXNwYWNlcy5nZXQoc3RvcmFnZU5hbWVzcGFjZUlEKS0+YWRkQWxsb3dlZENvbm5lY3Rpb24oYWxs
b3dlZENvbm5lY3Rpb25JRCk7Ci0gICAgfSk7Ci19CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01h
aW4oKSk7CiAKLXZvaWQgU3RvcmFnZU1hbmFnZXI6OnJlbW92ZUFsbG93ZWRTZXNzaW9uU3RvcmFn
ZU5hbWVzcGFjZUNvbm5lY3Rpb24odWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBJUEM6OkNv
bm5lY3Rpb24mIGFsbG93ZWRDb25uZWN0aW9uKQotewotICAgIEFTU0VSVChSdW5Mb29wOjppc01h
aW4oKSk7Ci0gICAgYXV0byBhbGxvd2VkQ29ubmVjdGlvbklEID0gYWxsb3dlZENvbm5lY3Rpb24u
dW5pcXVlSUQoKTsKLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBhbGxvd2VkQ29ubmVjdGlvbklELCBzdG9yYWdlTmFtZXNwYWNlSURd
KCkgbXV0YWJsZSB7Ci0gICAgICAgIEFTU0VSVChtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlcy5j
b250YWlucyhzdG9yYWdlTmFtZXNwYWNlSUQpKTsKLSAgICAgICAgaWYgKGF1dG8qIHNlc3Npb25T
dG9yYWdlTmFtZXNwYWNlID0gbV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMuZ2V0KHN0b3JhZ2VO
YW1lc3BhY2VJRCkpCi0gICAgICAgICAgICBzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS0+cmVtb3Zl
QWxsb3dlZENvbm5lY3Rpb24oYWxsb3dlZENvbm5lY3Rpb25JRCk7Ci0gICAgfSk7CisgICAgQVNT
RVJUKG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLmNvbnRhaW5zKHN0b3JhZ2VOYW1lc3BhY2VJ
RCkpOworICAgIGlmIChhdXRvKiBzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSA9IG1fc2Vzc2lvblN0
b3JhZ2VOYW1lc3BhY2VzLmdldChzdG9yYWdlTmFtZXNwYWNlSUQpKQorICAgICAgICBtX3Nlc3Np
b25TdG9yYWdlTmFtZXNwYWNlcy5yZW1vdmUoc3RvcmFnZU5hbWVzcGFjZUlEKTsKIH0KIAogdm9p
ZCBTdG9yYWdlTWFuYWdlcjo6Y2xvbmVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBz
dG9yYWdlTmFtZXNwYWNlSUQsIHVpbnQ2NF90IG5ld1N0b3JhZ2VOYW1lc3BhY2VJRCkKIHsKLSAg
ICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHN0b3JhZ2VOYW1lc3BhY2VJRCwgbmV3
U3RvcmFnZU5hbWVzcGFjZUlEXSB7Ci0gICAgICAgIFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKiBz
ZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSA9IG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLmdldChz
dG9yYWdlTmFtZXNwYWNlSUQpOwotICAgICAgICBpZiAoIXNlc3Npb25TdG9yYWdlTmFtZXNwYWNl
KSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogV2UgY2FuIGdldCBpbnRvIHRoaXMgc2l0dWF0aW9u
IGlmIHNvbWVvbmUgY2xvc2VzIHRoZSBvcmlnaW5hdGluZyBwYWdlIGZyb20gd2l0aGluIGEKLSAg
ICAgICAgICAgIC8vIGNyZWF0ZU5ld1BhZ2UgY2FsbGJhY2suIFdlIGJhaWwgZm9yIG5vdywgYnV0
IHdlIHNob3VsZCByZWFsbHkgZmluZCBhIHdheSB0byBrZWVwIHRoZSBzZXNzaW9uIHN0b3JhZ2Ug
YWxpdmUKLSAgICAgICAgICAgIC8vIHNvIHdlIHdlJ2xsIGNsb25lIHRoZSBzZXNzaW9uIHN0b3Jh
Z2UgY29ycmVjdGx5LgotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAg
U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UqIG5ld1Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlID0gbV9z
ZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMuZ2V0KG5ld1N0b3JhZ2VOYW1lc3BhY2VJRCk7Ci0gICAg
ICAgIEFTU0VSVChuZXdTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSk7CisgICAgQVNTRVJUKCFSdW5M
b29wOjppc01haW4oKSk7CiAKLSAgICAgICAgc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UtPmNsb25l
VG8oKm5ld1Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlKTsKKyAgICBTZXNzaW9uU3RvcmFnZU5hbWVz
cGFjZSogc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UgPSBtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNl
cy5nZXQoc3RvcmFnZU5hbWVzcGFjZUlEKTsKKyAgICBpZiAoIXNlc3Npb25TdG9yYWdlTmFtZXNw
YWNlKQorICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKCFtX2xvY2FsU3RvcmFnZURhdGFi
YXNlVHJhY2tlcikgewotICAgICAgICAgICAgaWYgKGF1dG8qIGxvY2FsU3RvcmFnZU5hbWVzcGFj
ZSA9IG1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlcy5nZXQoc3RvcmFnZU5hbWVzcGFjZUlEKSkgewot
ICAgICAgICAgICAgICAgIExvY2FsU3RvcmFnZU5hbWVzcGFjZSogbmV3bG9jYWxTdG9yYWdlTmFt
ZXNwYWNlID0gZ2V0T3JDcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UobmV3U3RvcmFnZU5hbWVz
cGFjZUlEKTsKLSAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPmNsb25lVG8o
Km5ld2xvY2FsU3RvcmFnZU5hbWVzcGFjZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICB9KTsKLX0KKyAgICBTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSogbmV3U2Vzc2lvblN0b3JhZ2VO
YW1lc3BhY2UgPSBnZXRPckNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKG5ld1N0b3JhZ2VO
YW1lc3BhY2VJRCk7CisgICAgQVNTRVJUKG5ld1Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlKTsKIAot
dm9pZCBTdG9yYWdlTWFuYWdlcjo6cHJvY2Vzc0RpZENsb3NlQ29ubmVjdGlvbihJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24pCi17Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAg
ICBpZiAobV9jb25uZWN0aW9ucy5yZW1vdmUoY29ubmVjdGlvbi51bmlxdWVJRCgpKSkKLSAgICAg
ICAgY29ubmVjdGlvbi5yZW1vdmVXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlN0
b3JhZ2VNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOwotCi0gICAgbV9xdWV1ZS0+ZGlz
cGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29ubmVjdGlvbklE
ID0gY29ubmVjdGlvbi51bmlxdWVJRCgpXSgpIG11dGFibGUgewotICAgICAgICBWZWN0b3I8c3Rk
OjpwYWlyPElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIHVpbnQ2NF90Pj4gY29ubmVjdGlvbkFu
ZFN0b3JhZ2VNYXBJRFBhaXJzVG9SZW1vdmU7Ci0gICAgICAgIGZvciAoYXV0byYgc3RvcmFnZUFy
ZWEgOiBtX3N0b3JhZ2VBcmVhc0J5Q29ubmVjdGlvbikgewotICAgICAgICAgICAgaWYgKHN0b3Jh
Z2VBcmVhLmtleS5maXJzdCAhPSBjb25uZWN0aW9uSUQpCi0gICAgICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHN0b3JhZ2VBcmVhLnZhbHVlLT5yZW1vdmVM
aXN0ZW5lcihzdG9yYWdlQXJlYS5rZXkuZmlyc3QsIHN0b3JhZ2VBcmVhLmtleS5zZWNvbmQpOwot
ICAgICAgICAgICAgY29ubmVjdGlvbkFuZFN0b3JhZ2VNYXBJRFBhaXJzVG9SZW1vdmUuYXBwZW5k
KHN0b3JhZ2VBcmVhLmtleSk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGZvciAoYXV0
byYgcGFpciA6IGNvbm5lY3Rpb25BbmRTdG9yYWdlTWFwSURQYWlyc1RvUmVtb3ZlKQotICAgICAg
ICAgICAgbV9zdG9yYWdlQXJlYXNCeUNvbm5lY3Rpb24ucmVtb3ZlKHBhaXIpOwotCi0gICAgICAg
IFZlY3Rvcjx1aW50NjRfdD4gc2Vzc2lvblN0b3JhZ2VOYW1lU3BhY2VJRHNUb1JlbW92ZTsKLSAg
ICAgICAgZm9yIChhdXRvJiBzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSA6IG1fc2Vzc2lvblN0b3Jh
Z2VOYW1lc3BhY2VzKSB7Ci0gICAgICAgICAgICBpZiAoc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2Uu
dmFsdWUtPmFsbG93ZWRDb25uZWN0aW9ucygpLmNvbnRhaW5zKGNvbm5lY3Rpb25JRCkpCi0gICAg
ICAgICAgICAgICAgc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UudmFsdWUtPnJlbW92ZUFsbG93ZWRD
b25uZWN0aW9uKGNvbm5lY3Rpb25JRCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChz
ZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS52YWx1ZS0+YWxsb3dlZENvbm5lY3Rpb25zKCkuaXNFbXB0
eSgpKQotICAgICAgICAgICAgICAgIHNlc3Npb25TdG9yYWdlTmFtZVNwYWNlSURzVG9SZW1vdmUu
YXBwZW5kKHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlLmtleSk7Ci0gICAgICAgIH0KLSAgICAgICAg
Ci0gICAgICAgIGZvciAoYXV0byBpZCA6IHNlc3Npb25TdG9yYWdlTmFtZVNwYWNlSURzVG9SZW1v
dmUpCi0gICAgICAgICAgICBtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlcy5yZW1vdmUoaWQpOwot
ICAgIH0pOworICAgIHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlLT5jbG9uZVRvKCpuZXdTZXNzaW9u
U3RvcmFnZU5hbWVzcGFjZSk7CiB9CiAKIHZvaWQgU3RvcmFnZU1hbmFnZXI6OmdldFNlc3Npb25T
dG9yYWdlT3JpZ2lucyhGdW5jdGlvbjx2b2lkKEhhc2hTZXQ8V2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOwotICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgIEhhc2hTZXQ8U2VjdXJpdHlPcmlnaW5EYXRhPiBv
cmlnaW5zOworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgICAgIGZvciAo
Y29uc3QgYXV0byYgc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UgOiBtX3Nlc3Npb25TdG9yYWdlTmFt
ZXNwYWNlcy52YWx1ZXMoKSkgewotICAgICAgICAgICAgZm9yIChhdXRvJiBvcmlnaW4gOiBzZXNz
aW9uU3RvcmFnZU5hbWVzcGFjZS0+b3JpZ2lucygpKQotICAgICAgICAgICAgICAgIG9yaWdpbnMu
YWRkKGNyb3NzVGhyZWFkQ29weShvcmlnaW4pKTsKLSAgICAgICAgfQorICAgIEhhc2hTZXQ8U2Vj
dXJpdHlPcmlnaW5EYXRhPiBvcmlnaW5zOworICAgIGZvciAoY29uc3QgYXV0byYgc2Vzc2lvblN0
b3JhZ2VOYW1lc3BhY2UgOiBtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkgewor
ICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlLT5vcmln
aW5zKCkpCisgICAgICAgIG9yaWdpbnMuYWRkKGNyb3NzVGhyZWFkQ29weShvcmlnaW4pKTsKKyAg
ICB9CiAKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtvcmlnaW5zID0gV1RGTW92
ZShvcmlnaW5zKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUob3Jp
Z2lucykpOwotICAgICAgICB9KTsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW29yaWdp
bnMgPSBXVEZNb3ZlKG9yaWdpbnMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZN
b3ZlKG9yaWdpbnMpKTsKICAgICB9KTsKIH0KIAogdm9pZCBTdG9yYWdlTWFuYWdlcjo6ZGVsZXRl
U2Vzc2lvblN0b3JhZ2VPcmlnaW5zKEZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIG1fcXVldWUtPmRpc3Bh
dGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgIGZv
ciAoYXV0byYgc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UgOiBtX3Nlc3Npb25TdG9yYWdlTmFtZXNw
YWNlcy52YWx1ZXMoKSkKLSAgICAgICAgICAgIHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlLT5jbGVh
ckFsbFN0b3JhZ2VBcmVhcygpOworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0g
ICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7Ci0gICAgfSk7CisgICAgZm9yIChhdXRvJiBzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSA6IG1f
c2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLnZhbHVlcygpKQorICAgICAgICBzZXNzaW9uU3RvcmFn
ZU5hbWVzcGFjZS0+Y2xlYXJBbGxTdG9yYWdlQXJlYXMoKTsKKworICAgIFJ1bkxvb3A6Om1haW4o
KS5kaXNwYXRjaChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgU3RvcmFn
ZU1hbmFnZXI6OmRlbGV0ZVNlc3Npb25TdG9yYWdlRW50cmllc0Zvck9yaWdpbnMoY29uc3QgVmVj
dG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mIG9yaWdpbnMsIEZ1bmN0aW9uPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OwotICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIGNvcGllZE9yaWdpbnMgPSBjcm9zc1RocmVhZENvcHkob3JpZ2lucyksIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAg
ICAgIGZvciAoYXV0byYgb3JpZ2luIDogY29waWVkT3JpZ2lucykgewotICAgICAgICAgICAgZm9y
IChhdXRvJiBzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSA6IG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3Bh
Y2VzLnZhbHVlcygpKQotICAgICAgICAgICAgICAgIHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlLT5j
bGVhclN0b3JhZ2VBcmVhc01hdGNoaW5nT3JpZ2luKG9yaWdpbik7Ci0gICAgICAgIH0KKyAgICBB
U1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlz
cGF0Y2goV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgIH0pOworICAgIGZvciAoYXV0
byYgb3JpZ2luIDogb3JpZ2lucykgeworICAgICAgICBmb3IgKGF1dG8mIHNlc3Npb25TdG9yYWdl
TmFtZXNwYWNlIDogbV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMudmFsdWVzKCkpCisgICAgICAg
ICAgICBzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS0+Y2xlYXJTdG9yYWdlQXJlYXNNYXRjaGluZ09y
aWdpbihvcmlnaW4pOworICAgIH0KKworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgU3RvcmFnZU1hbmFnZXI6OmdldExv
Y2FsU3RvcmFnZU9yaWdpbnMoRnVuY3Rpb248dm9pZChIYXNoU2V0PFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgQVNTRVJUKFJ1bkxv
b3A6OmlzTWFpbigpKTsKLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICBIYXNoU2V0PFNlY3VyaXR5T3JpZ2luRGF0
YT4gb3JpZ2luczsKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgICAgICBp
ZiAobV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIpIHsKLSAgICAgICAgICAgIGZvciAoYXV0
byYgb3JpZ2luIDogbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXItPm9yaWdpbnMoKSkKKyAg
ICBIYXNoU2V0PFNlY3VyaXR5T3JpZ2luRGF0YT4gb3JpZ2luczsKKyAgICBpZiAobV9sb2NhbFN0
b3JhZ2VEYXRhYmFzZVRyYWNrZXIpIHsKKyAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IG1fbG9jYWxT
dG9yYWdlRGF0YWJhc2VUcmFja2VyLT5vcmlnaW5zKCkpCisgICAgICAgIG9yaWdpbnMuYWRkKG9y
aWdpbi5pc29sYXRlZENvcHkoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZm9yIChjb25zdCBh
dXRvJiBsb2NhbFN0b3JhZ2VOYW1lU3BhY2UgOiBtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZXMudmFs
dWVzKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byYgb3JpZ2luIDogbG9jYWxTdG9yYWdlTmFt
ZVNwYWNlLT5lcGhlbWVyYWxPcmlnaW5zKCkpCiAgICAgICAgICAgICAgICAgb3JpZ2lucy5hZGQo
b3JpZ2luLmlzb2xhdGVkQ29weSgpKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGZv
ciAoY29uc3QgYXV0byYgbG9jYWxTdG9yYWdlTmFtZVNwYWNlIDogbV9sb2NhbFN0b3JhZ2VOYW1l
c3BhY2VzLnZhbHVlcygpKSB7Ci0gICAgICAgICAgICAgICAgZm9yIChhdXRvJiBvcmlnaW4gOiBs
b2NhbFN0b3JhZ2VOYW1lU3BhY2UtPmVwaGVtZXJhbE9yaWdpbnMoKSkKLSAgICAgICAgICAgICAg
ICAgICAgb3JpZ2lucy5hZGQob3JpZ2luLmlzb2xhdGVkQ29weSgpKTsKLSAgICAgICAgICAgIH0K
ICAgICAgICAgfQorICAgIH0KIAotICAgICAgICBmb3IgKGF1dG8mIHRyYW5zaWVudExvY2FsU3Rv
cmFnZU5hbWVzcGFjZSA6IG1fdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMo
KSkgewotICAgICAgICAgICAgZm9yIChhdXRvJiBvcmlnaW4gOiB0cmFuc2llbnRMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UtPm9yaWdpbnMoKSkKLSAgICAgICAgICAgICAgICBvcmlnaW5zLmFkZChvcmln
aW4uaXNvbGF0ZWRDb3B5KCkpOwotICAgICAgICB9CisgICAgZm9yIChhdXRvJiB0cmFuc2llbnRM
b2NhbFN0b3JhZ2VOYW1lc3BhY2UgOiBtX3RyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZXMu
dmFsdWVzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvJiBvcmlnaW4gOiB0cmFuc2llbnRMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UtPm9yaWdpbnMoKSkKKyAgICAgICAgICAgIG9yaWdpbnMuYWRkKG9yaWdp
bi5pc29sYXRlZENvcHkoKSk7CisgICAgfQogCi0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNw
YXRjaChbb3JpZ2lucyA9IFdURk1vdmUob3JpZ2lucyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihXVEZNb3ZlKG9yaWdpbnMpKTsKLSAgICAgICAgfSk7CisgICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFtvcmlnaW5zID0gV1RGTW92ZShvcmlnaW5zKSwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShvcmlnaW5zKSk7CiAgICAgfSk7CiB9CiAKIHZvaWQg
U3RvcmFnZU1hbmFnZXI6OmdldExvY2FsU3RvcmFnZU9yaWdpbkRldGFpbHMoRnVuY3Rpb248dm9p
ZChWZWN0b3I8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpPcmlnaW5EZXRhaWxzPiYmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwot
ICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0
YWJsZSB7Ci0gICAgICAgIFZlY3RvcjxMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6Ok9yaWdp
bkRldGFpbHM+IG9yaWdpbkRldGFpbHM7Ci0gICAgICAgIGlmIChtX2xvY2FsU3RvcmFnZURhdGFi
YXNlVHJhY2tlcikKLSAgICAgICAgICAgIG9yaWdpbkRldGFpbHMgPSBtX2xvY2FsU3RvcmFnZURh
dGFiYXNlVHJhY2tlci0+b3JpZ2luRGV0YWlscygpLmlzb2xhdGVkQ29weSgpOwotCi0gICAgICAg
IFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbb3JpZ2luRGV0YWlscyA9IFdURk1vdmUob3JpZ2lu
RGV0YWlscyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
KCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKG9yaWdp
bkRldGFpbHMpKTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgU3RvcmFnZU1hbmFn
ZXI6OmRlbGV0ZUxvY2FsU3RvcmFnZUVudHJpZXNGb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmln
aW5EYXRhJiBzZWN1cml0eU9yaWdpbikKLXsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OwotICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIGNvcGllZE9yaWdpbiA9IHNlY3VyaXR5T3JpZ2luLmlzb2xhdGVkQ29weSgpXSgpIG11
dGFibGUgewotICAgICAgICBmb3IgKGF1dG8mIGxvY2FsU3RvcmFnZU5hbWVzcGFjZSA6IG1fbG9j
YWxTdG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkKLSAgICAgICAgICAgIGxvY2FsU3RvcmFnZU5h
bWVzcGFjZS0+Y2xlYXJTdG9yYWdlQXJlYXNNYXRjaGluZ09yaWdpbihjb3BpZWRPcmlnaW4pOwor
ICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgICAgIGZvciAoYXV0byYgdHJh
bnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlIDogbV90cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1l
c3BhY2VzLnZhbHVlcygpKQotICAgICAgICAgICAgdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNw
YWNlLT5jbGVhclN0b3JhZ2VBcmVhc01hdGNoaW5nT3JpZ2luKGNvcGllZE9yaWdpbik7CisgICAg
VmVjdG9yPExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6T3JpZ2luRGV0YWlscz4gb3JpZ2lu
RGV0YWlsczsKKyAgICBpZiAobV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIpCisgICAgICAg
IG9yaWdpbkRldGFpbHMgPSBjcm9zc1RocmVhZENvcHkobV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRy
YWNrZXItPm9yaWdpbkRldGFpbHMoKSk7CiAKLSAgICAgICAgaWYgKG1fbG9jYWxTdG9yYWdlRGF0
YWJhc2VUcmFja2VyKQotICAgICAgICAgICAgbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIt
PmRlbGV0ZURhdGFiYXNlV2l0aE9yaWdpbihjb3BpZWRPcmlnaW4pOworICAgIFJ1bkxvb3A6Om1h
aW4oKS5kaXNwYXRjaChbb3JpZ2luRGV0YWlscyA9IFdURk1vdmUob3JpZ2luRGV0YWlscyksIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUob3JpZ2luRGV0YWlscykpOwogICAg
IH0pOwogfQogCiB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVMb2NhbFN0b3JhZ2VPcmlnaW5z
TW9kaWZpZWRTaW5jZShXYWxsVGltZSB0aW1lLCBGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBtX3F1ZXVl
LT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB0aW1lLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUg
ewotICAgICAgICBpZiAobV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIpIHsKLSAgICAgICAg
ICAgIGF1dG8gb3JpZ2luc1RvRGVsZXRlID0gbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIt
PmRhdGFiYXNlc01vZGlmaWVkU2luY2UodGltZSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAg
IGZvciAoYXV0byYgdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlIDogbV90cmFuc2llbnRM
b2NhbFN0b3JhZ2VOYW1lc3BhY2VzLnZhbHVlcygpKQotICAgICAgICAgICAgICAgIHRyYW5zaWVu
dExvY2FsU3RvcmFnZU5hbWVzcGFjZS0+Y2xlYXJBbGxTdG9yYWdlQXJlYXMoKTsKLQotICAgICAg
ICAgICAgZm9yIChjb25zdCBhdXRvJiBvcmlnaW4gOiBvcmlnaW5zVG9EZWxldGUpIHsKLSAgICAg
ICAgICAgICAgICBmb3IgKGF1dG8mIGxvY2FsU3RvcmFnZU5hbWVzcGFjZSA6IG1fbG9jYWxTdG9y
YWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkKLSAgICAgICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdl
TmFtZXNwYWNlLT5jbGVhclN0b3JhZ2VBcmVhc01hdGNoaW5nT3JpZ2luKG9yaWdpbik7Ci0gICAg
ICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNr
ZXItPmRlbGV0ZURhdGFiYXNlV2l0aE9yaWdpbihvcmlnaW4pOwotICAgICAgICAgICAgfQotICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgZm9yIChhdXRvJiBsb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2UgOiBtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZXMudmFsdWVzKCkpCi0gICAgICAgICAgICAgICAg
bG9jYWxTdG9yYWdlTmFtZXNwYWNlLT5jbGVhckFsbFN0b3JhZ2VBcmVhcygpOwotICAgICAgICB9
CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICAgICAgUnVuTG9vcDo6bWFp
bigpLmRpc3BhdGNoKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICB9KTsKLX0KKyAg
ICBpZiAobV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIpIHsKKyAgICAgICAgYXV0byBvcmln
aW5zVG9EZWxldGUgPSBtX2xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci0+ZGF0YWJhc2VzTW9k
aWZpZWRTaW5jZSh0aW1lKTsKIAotdm9pZCBTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlTG9jYWxTdG9y
YWdlRW50cmllc0Zvck9yaWdpbnMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YT4mIG9yaWdpbnMsIEZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsK
LSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvcGllZE9yaWdpbnMgPSBjcm9z
c1RocmVhZENvcHkob3JpZ2lucyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgIGZvciAoYXV0byYgb3JpZ2luIDogY29w
aWVkT3JpZ2lucykgeworICAgICAgICBmb3IgKGF1dG8mIHRyYW5zaWVudExvY2FsU3RvcmFnZU5h
bWVzcGFjZSA6IG1fdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkKKyAg
ICAgICAgICAgIHRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZS0+Y2xlYXJBbGxTdG9yYWdl
QXJlYXMoKTsKKworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIG9yaWdpbiA6IG9yaWdpbnNUb0Rl
bGV0ZSkgewogICAgICAgICAgICAgZm9yIChhdXRvJiBsb2NhbFN0b3JhZ2VOYW1lc3BhY2UgOiBt
X2xvY2FsU3RvcmFnZU5hbWVzcGFjZXMudmFsdWVzKCkpCiAgICAgICAgICAgICAgICAgbG9jYWxT
dG9yYWdlTmFtZXNwYWNlLT5jbGVhclN0b3JhZ2VBcmVhc01hdGNoaW5nT3JpZ2luKG9yaWdpbik7
Ci0KLSAgICAgICAgICAgIGZvciAoYXV0byYgdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNl
IDogbV90cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2VzLnZhbHVlcygpKQotICAgICAgICAg
ICAgICAgIHRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZS0+Y2xlYXJTdG9yYWdlQXJlYXNN
YXRjaGluZ09yaWdpbihvcmlnaW4pOwotCi0gICAgICAgICAgICBpZiAobV9sb2NhbFN0b3JhZ2VE
YXRhYmFzZVRyYWNrZXIpCi0gICAgICAgICAgICAgICAgbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRy
YWNrZXItPmRlbGV0ZURhdGFiYXNlV2l0aE9yaWdpbihvcmlnaW4pOworICAgICAgICAgICAgbV9s
b2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXItPmRlbGV0ZURhdGFiYXNlV2l0aE9yaWdpbihvcmln
aW4pOwogICAgICAgICB9Ci0KLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICB9KTsKLX0KLQotdm9pZCBTdG9yYWdlTWFuYWdl
cjo6Y3JlYXRlTG9jYWxTdG9yYWdlTWFwKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgdWlu
dDY0X3Qgc3RvcmFnZU1hcElELCB1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIFNlY3VyaXR5
T3JpZ2luRGF0YSYmIHNlY3VyaXR5T3JpZ2luRGF0YSkKLXsKLSAgICBBU1NFUlQoIVJ1bkxvb3A6
OmlzTWFpbigpKTsKLSAgICBhdXRvIGNvbm5lY3Rpb25JRCA9IGNvbm5lY3Rpb24udW5pcXVlSUQo
KTsKLSAgICBzdGQ6OnBhaXI8SVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCwgdWludDY0X3Q+IGNv
bm5lY3Rpb25BbmRTdG9yYWdlTWFwSURQYWlyKGNvbm5lY3Rpb25JRCwgc3RvcmFnZU1hcElEKTsK
LQotICAgIEFTU0VSVCgoSGFzaE1hcDxzdGQ6OnBhaXI8SVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJ
RCwgdWludDY0X3Q+LCBSZWZQdHI8U3RvcmFnZUFyZWE+Pjo6aXNWYWxpZEtleShjb25uZWN0aW9u
QW5kU3RvcmFnZU1hcElEUGFpcikpKTsKLQotICAgIGF1dG8gcmVzdWx0ID0gbV9zdG9yYWdlQXJl
YXNCeUNvbm5lY3Rpb24uYWRkKGNvbm5lY3Rpb25BbmRTdG9yYWdlTWFwSURQYWlyLCBudWxscHRy
KTsKLSAgICBBU1NFUlQocmVzdWx0LmlzTmV3RW50cnkpOwotICAgIEFTU0VSVCgoSGFzaE1hcDx1
aW50NjRfdCwgUmVmUHRyPExvY2FsU3RvcmFnZU5hbWVzcGFjZT4+Ojppc1ZhbGlkS2V5KHN0b3Jh
Z2VOYW1lc3BhY2VJRCkpKTsKLQotICAgIExvY2FsU3RvcmFnZU5hbWVzcGFjZSogbG9jYWxTdG9y
YWdlTmFtZXNwYWNlID0gZ2V0T3JDcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2Uoc3RvcmFnZU5h
bWVzcGFjZUlEKTsKLSAgICBBU1NFUlQobG9jYWxTdG9yYWdlTmFtZXNwYWNlKTsKLQotICAgIGF1
dG8gc3RvcmFnZUFyZWEgPSBsb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPmdldE9yQ3JlYXRlU3RvcmFn
ZUFyZWEoV1RGTW92ZShzZWN1cml0eU9yaWdpbkRhdGEpLCBtX2xvY2FsU3RvcmFnZURhdGFiYXNl
VHJhY2tlciA/IExvY2FsU3RvcmFnZU5hbWVzcGFjZTo6SXNFcGhlbWVyYWw6Ok5vIDogTG9jYWxT
dG9yYWdlTmFtZXNwYWNlOjpJc0VwaGVtZXJhbDo6WWVzKTsKLSAgICBzdG9yYWdlQXJlYS0+YWRk
TGlzdGVuZXIoY29ubmVjdGlvbklELCBzdG9yYWdlTWFwSUQpOwotCi0gICAgcmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZSA9IFdURk1vdmUoc3RvcmFnZUFyZWEpOwotfQotCi12b2lkIFN0b3JhZ2VNYW5h
Z2VyOjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VNYXAoSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCB1aW50NjRfdCBzdG9yYWdlTWFwSUQsIHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJ
RCwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wTGV2ZWxPcmlnaW5EYXRhLCBTZWN1cml0eU9yaWdp
bkRhdGEmJiBvcmlnaW4pCi17Ci0gICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0gICAg
YXV0byBjb25uZWN0aW9uSUQgPSBjb25uZWN0aW9uLnVuaXF1ZUlEKCk7Ci0KLSAgICBBU1NFUlQo
bV9zdG9yYWdlQXJlYXNCeUNvbm5lY3Rpb24uaXNWYWxpZEtleSh7IGNvbm5lY3Rpb25JRCwgc3Rv
cmFnZU1hcElEIH0pKTsKLQotICAgIC8vIFNlZSBpZiB3ZSBhbHJlYWR5IGhhdmUgc2Vzc2lvbiBz
dG9yYWdlIGZvciB0aGlzIGNvbm5lY3Rpb24vb3JpZ2luIGNvbWJvLgotICAgIC8vIElmIHNvLCB1
cGRhdGUgdGhlIG1hcCB3aXRoIHRoZSBuZXcgSUQsIG90aGVyd2lzZSBrZWVwIG9uIHRydWNraW5n
LgotICAgIGZvciAoYXV0byBpdCA9IG1fc3RvcmFnZUFyZWFzQnlDb25uZWN0aW9uLmJlZ2luKCks
IGVuZCA9IG1fc3RvcmFnZUFyZWFzQnlDb25uZWN0aW9uLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQp
IHsKLSAgICAgICAgaWYgKGl0LT5rZXkuZmlyc3QgIT0gY29ubmVjdGlvbklEKQotICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgIFJlZjxTdG9yYWdlQXJlYT4gYXJlYSA9ICppdC0+dmFsdWU7
Ci0gICAgICAgIGlmICghYXJlYS0+aXNFcGhlbWVyYWwoKSkKLSAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICBpZiAoIW9yaWdpbi5zZWN1cml0eU9yaWdpbigpLT5pc1NhbWVTY2hlbWVIb3N0
UG9ydChhcmVhLT5zZWN1cml0eU9yaWdpbigpLnNlY3VyaXR5T3JpZ2luKCkuZ2V0KCkpKQotICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGFyZWEtPmFkZExpc3RlbmVyKGNvbm5lY3Rpb25J
RCwgc3RvcmFnZU1hcElEKTsKLSAgICAgICAgLy8gSWYgdGhlIHN0b3JhZ2VNYXBJRCB1c2VkIGFz
IGtleSBpbiBtX3N0b3JhZ2VBcmVhc0J5Q29ubmVjdGlvbiBpcyBubyBsb25nZXIgb25lIG9mIHRo
ZSBTdG9yYWdlQXJlYSdzIGxpc3RlbmVycywgdGhlbiB0aGlzIG1lYW5zCi0gICAgICAgIC8vIHRo
YXQgZGVzdHJveVN0b3JhZ2VNYXAoKSB3YXMgYWxyZWFkeSBjYWxsZWQgZm9yIHRoYXQgc3RvcmFn
ZU1hcElEIGJ1dCBpdCBkZWNpZGVkIG5vdCB0byByZW1vdmUgaXQgZnJvbSBtX3N0b3JhZ2VBcmVh
c0J5Q29ubmVjdGlvbgotICAgICAgICAvLyBzbyB0aGF0IHdlIGNvdWxkIHJldXNlIGl0IGxhdGVy
IG9uIGZvciB0aGUgc2FtZSBjb25uZWN0aW9uL29yaWdpbiBjb21iby4gSW4gdGhpcyBjYXNlLCBp
dCBpcyBzYWZlIHRvIHJlbW92ZSB0aGUgcHJldmlvdXMKLSAgICAgICAgLy8gc3RvcmFnZU1hcElE
IGZyb20gbV9zdG9yYWdlQXJlYXNCeUNvbm5lY3Rpb24uCi0gICAgICAgIGlmICghYXJlYS0+aGFz
TGlzdGVuZXIoY29ubmVjdGlvbklELCBpdC0+a2V5LnNlY29uZCkpCi0gICAgICAgICAgICBtX3N0
b3JhZ2VBcmVhc0J5Q29ubmVjdGlvbi5yZW1vdmUoaXQpOwotICAgICAgICBtX3N0b3JhZ2VBcmVh
c0J5Q29ubmVjdGlvbi5hZGQoeyBjb25uZWN0aW9uSUQsIHN0b3JhZ2VNYXBJRCB9LCBXVEZNb3Zl
KGFyZWEpKTsKLSAgICAgICAgcmV0dXJuOworICAgIH0gZWxzZSB7CisgICAgICAgIGZvciAoYXV0
byYgbG9jYWxTdG9yYWdlTmFtZXNwYWNlIDogbV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2VzLnZhbHVl
cygpKQorICAgICAgICAgICAgbG9jYWxTdG9yYWdlTmFtZXNwYWNlLT5jbGVhckFsbFN0b3JhZ2VB
cmVhcygpOwogICAgIH0KIAotICAgIGF1dG8mIHNsb3QgPSBtX3N0b3JhZ2VBcmVhc0J5Q29ubmVj
dGlvbi5hZGQoeyBjb25uZWN0aW9uSUQsIHN0b3JhZ2VNYXBJRCB9LCBudWxscHRyKS5pdGVyYXRv
ci0+dmFsdWU7Ci0gICAgQVNTRVJUKCFzbG90KTsKLQotICAgIGF1dG8qIHRyYW5zaWVudExvY2Fs
U3RvcmFnZU5hbWVzcGFjZSA9IGdldE9yQ3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNw
YWNlKHN0b3JhZ2VOYW1lc3BhY2VJRCwgV1RGTW92ZSh0b3BMZXZlbE9yaWdpbkRhdGEpKTsKLQot
ICAgIGF1dG8gc3RvcmFnZUFyZWEgPSB0cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPmdl
dE9yQ3JlYXRlU3RvcmFnZUFyZWEoV1RGTW92ZShvcmlnaW4pKTsKLSAgICBzdG9yYWdlQXJlYS0+
YWRkTGlzdGVuZXIoY29ubmVjdGlvbklELCBzdG9yYWdlTWFwSUQpOwotCi0gICAgc2xvdCA9IFdU
Rk1vdmUoc3RvcmFnZUFyZWEpOworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZVNl
c3Npb25TdG9yYWdlTWFwKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgdWludDY0X3Qgc3Rv
cmFnZU1hcElELCB1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIFNlY3VyaXR5T3JpZ2luRGF0
YSYmIHNlY3VyaXR5T3JpZ2luRGF0YSkKK3ZvaWQgU3RvcmFnZU1hbmFnZXI6OmRlbGV0ZUxvY2Fs
U3RvcmFnZUVudHJpZXNGb3JPcmlnaW5zKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGE+JiBvcmlnaW5zLCBGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgYXV0byBjb25uZWN0aW9u
SUQgPSBjb25uZWN0aW9uLnVuaXF1ZUlEKCk7Ci0gICAgQVNTRVJUKG1fc2Vzc2lvblN0b3JhZ2VO
YW1lc3BhY2VzLmlzVmFsaWRLZXkoc3RvcmFnZU5hbWVzcGFjZUlEKSk7Ci0KLSAgICBTZXNzaW9u
U3RvcmFnZU5hbWVzcGFjZSogc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UgPSBtX3Nlc3Npb25TdG9y
YWdlTmFtZXNwYWNlcy5nZXQoc3RvcmFnZU5hbWVzcGFjZUlEKTsKLSAgICBpZiAoIXNlc3Npb25T
dG9yYWdlTmFtZXNwYWNlKSB7Ci0gICAgICAgIC8vIFdlJ3JlIGdldHRpbmcgYW4gaW5jb21pbmcg
bWVzc2FnZSBmcm9tIHRoZSB3ZWIgcHJvY2VzcyB0aGF0J3MgZm9yIHNlc3Npb24gc3RvcmFnZSBm
b3IgYSB3ZWIgcGFnZQotICAgICAgICAvLyB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gY2xvc2VkLCBq
dXN0IGlnbm9yZSBpdC4KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVChtX3N0
b3JhZ2VBcmVhc0J5Q29ubmVjdGlvbi5pc1ZhbGlkS2V5KHsgY29ubmVjdGlvbklELCBzdG9yYWdl
TWFwSUQgfSkpOwogCi0gICAgYXV0byYgc2xvdCA9IG1fc3RvcmFnZUFyZWFzQnlDb25uZWN0aW9u
LmFkZCh7IGNvbm5lY3Rpb25JRCwgc3RvcmFnZU1hcElEIH0sIG51bGxwdHIpLml0ZXJhdG9yLT52
YWx1ZTsKLSAgICBBU1NFUlQoIXNsb3QpOwotICAgIEFTU0VSVChzZXNzaW9uU3RvcmFnZU5hbWVz
cGFjZS0+YWxsb3dlZENvbm5lY3Rpb25zKCkuY29udGFpbnMoY29ubmVjdGlvbklEKSk7Ci0KLSAg
ICBhdXRvIHN0b3JhZ2VBcmVhID0gc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UtPmdldE9yQ3JlYXRl
U3RvcmFnZUFyZWEoV1RGTW92ZShzZWN1cml0eU9yaWdpbkRhdGEpKTsKLSAgICBzdG9yYWdlQXJl
YS0+YWRkTGlzdGVuZXIoY29ubmVjdGlvbklELCBzdG9yYWdlTWFwSUQpOwotCi0gICAgc2xvdCA9
IFdURk1vdmUoc3RvcmFnZUFyZWEpOwotfQotCi12b2lkIFN0b3JhZ2VNYW5hZ2VyOjpkZXN0cm95
U3RvcmFnZU1hcChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVpbnQ2NF90IHN0b3JhZ2VN
YXBJRCkKLXsKLSAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBhdXRvIGNvbm5l
Y3Rpb25JRCA9IGNvbm5lY3Rpb24udW5pcXVlSUQoKTsKKyAgICBmb3IgKGF1dG8mIG9yaWdpbiA6
IG9yaWdpbnMpIHsKKyAgICAgICAgZm9yIChhdXRvJiBsb2NhbFN0b3JhZ2VOYW1lc3BhY2UgOiBt
X2xvY2FsU3RvcmFnZU5hbWVzcGFjZXMudmFsdWVzKCkpCisgICAgICAgICAgICBsb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UtPmNsZWFyU3RvcmFnZUFyZWFzTWF0Y2hpbmdPcmlnaW4ob3JpZ2luKTsKIAot
ICAgIHN0ZDo6cGFpcjxJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCB1aW50NjRfdD4gY29ubmVj
dGlvbkFuZFN0b3JhZ2VNYXBJRFBhaXIoY29ubmVjdGlvbklELCBzdG9yYWdlTWFwSUQpOwotICAg
IEFTU0VSVChtX3N0b3JhZ2VBcmVhc0J5Q29ubmVjdGlvbi5pc1ZhbGlkS2V5KGNvbm5lY3Rpb25B
bmRTdG9yYWdlTWFwSURQYWlyKSk7CisgICAgICAgIGZvciAoYXV0byYgdHJhbnNpZW50TG9jYWxT
dG9yYWdlTmFtZXNwYWNlIDogbV90cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2VzLnZhbHVl
cygpKQorICAgICAgICAgICAgdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlLT5jbGVhclN0
b3JhZ2VBcmVhc01hdGNoaW5nT3JpZ2luKG9yaWdpbik7CiAKLSAgICBhdXRvIGl0ID0gbV9zdG9y
YWdlQXJlYXNCeUNvbm5lY3Rpb24uZmluZChjb25uZWN0aW9uQW5kU3RvcmFnZU1hcElEUGFpcik7
Ci0gICAgaWYgKGl0ID09IG1fc3RvcmFnZUFyZWFzQnlDb25uZWN0aW9uLmVuZCgpKSB7Ci0gICAg
ICAgIC8vIFRoZSBjb25uZWN0aW9uIGhhcyBiZWVuIHJlbW92ZWQgYmVjYXVzZSB0aGUgbGFzdCBw
YWdlIHdhcyBjbG9zZWQuCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKG1fbG9jYWxTdG9y
YWdlRGF0YWJhc2VUcmFja2VyKQorICAgICAgICAgICAgbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRy
YWNrZXItPmRlbGV0ZURhdGFiYXNlV2l0aE9yaWdpbihvcmlnaW4pOwogICAgIH0KIAotICAgIGl0
LT52YWx1ZS0+cmVtb3ZlTGlzdGVuZXIoY29ubmVjdGlvbklELCBzdG9yYWdlTWFwSUQpOwotCi0g
ICAgLy8gRG9uJ3QgcmVtb3ZlIHNlc3Npb24gc3RvcmFnZSBtYXBzLiBUaGUgd2ViIHByb2Nlc3Mg
bWF5IHJlY29ubmVjdCBhbmQgZXhwZWN0IHRoZSBkYXRhIHRvIHN0aWxsIGJlIGFyb3VuZC4KLSAg
ICBpZiAoaXQtPnZhbHVlLT5pc0VwaGVtZXJhbCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBt
X3N0b3JhZ2VBcmVhc0J5Q29ubmVjdGlvbi5yZW1vdmUoY29ubmVjdGlvbkFuZFN0b3JhZ2VNYXBJ
RFBhaXIpOworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CiB9CiAKLXZvaWQgU3RvcmFnZU1hbmFnZXI6OnByZXdhcm0oSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCB1aW50NjRfdCBzdG9yYWdlTWFwSUQpCitTdG9yYWdlQXJlYSogU3Rv
cmFnZU1hbmFnZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZUFyZWEodWludDY0X3Qgc3RvcmFnZU5hbWVz
cGFjZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBvcmlnaW4pCiB7CiAgICAgQVNT
RVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgaWYgKGF1dG8qIHN0b3JhZ2VBcmVhID0gZmlu
ZFN0b3JhZ2VBcmVhKGNvbm5lY3Rpb24sIHN0b3JhZ2VNYXBJRCkpCi0gICAgICAgIHN0b3JhZ2VB
cmVhLT5vcGVuRGF0YWJhc2VBbmRJbXBvcnRJdGVtc0lmTmVlZGVkKCk7Ci19CiAKLXZvaWQgU3Rv
cmFnZU1hbmFnZXI6OmdldFZhbHVlcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVpbnQ2
NF90IHN0b3JhZ2VNYXBJRCwgdWludDY0X3Qgc3RvcmFnZU1hcFNlZWQsIEdldFZhbHVlc0NhbGxi
YWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4o
KSk7Ci0gICAgYXV0byogc3RvcmFnZUFyZWEgPSBmaW5kU3RvcmFnZUFyZWEoY29ubmVjdGlvbiwg
c3RvcmFnZU1hcElEKTsKKyAgICBpZiAoYXV0byogbG9jYWxTdG9yYWdlTmFtZXNwYWNlID0gZ2V0
T3JDcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2Uoc3RvcmFnZU5hbWVzcGFjZUlEKSkKKyAgICAg
ICAgcmV0dXJuIGxvY2FsU3RvcmFnZU5hbWVzcGFjZS0+Z2V0T3JDcmVhdGVTdG9yYWdlQXJlYShX
VEZNb3ZlKG9yaWdpbiksIG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyID8gTG9jYWxTdG9y
YWdlTmFtZXNwYWNlOjpJc0VwaGVtZXJhbDo6Tm8gOiBMb2NhbFN0b3JhZ2VOYW1lc3BhY2U6Oklz
RXBoZW1lcmFsOjpZZXMpLnB0cigpOwogCi0gICAgLy8gVGhpcyBpcyBhIHNlc3Npb24gc3RvcmFn
ZSBhcmVhIGZvciBhIHBhZ2UgdGhhdCBoYXMgYWxyZWFkeSBiZWVuIGNsb3NlZC4gSWdub3JlIGl0
LgotICAgIGlmICghc3RvcmFnZUFyZWEpCi0gICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxl
cih7IH0pOwotCi0gICAgY29tcGxldGlvbkhhbmRsZXIoc3RvcmFnZUFyZWEtPml0ZW1zKCkpOwot
ICAgIGNvbm5lY3Rpb24uc2VuZChNZXNzYWdlczo6U3RvcmFnZUFyZWFNYXA6OkRpZEdldFZhbHVl
cyhzdG9yYWdlTWFwU2VlZCksIHN0b3JhZ2VNYXBJRCk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKLXZvaWQgU3RvcmFnZU1hbmFnZXI6OnNldEl0ZW0oSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBzZWN1cml0eU9yaWdpbkRhdGEsIHVp
bnQ2NF90IHN0b3JhZ2VNYXBJRCwgdWludDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwgdWludDY0
X3Qgc3RvcmFnZU1hcFNlZWQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVl
LCBjb25zdCBTdHJpbmcmIHVybFN0cmluZykKK1N0b3JhZ2VBcmVhKiBTdG9yYWdlTWFuYWdlcjo6
Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlQXJlYSh1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNl
SUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIHRvcExldmVsT3JpZ2luLCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEmJiBvcmlnaW4pCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjpp
c01haW4oKSk7Ci0gICAgYXV0byogc3RvcmFnZUFyZWEgPSBmaW5kU3RvcmFnZUFyZWEoY29ubmVj
dGlvbiwgc3RvcmFnZU1hcElEKTsKLQotICAgIC8vIFRoaXMgaXMgYSBzZXNzaW9uIHN0b3JhZ2Ug
YXJlYSBmb3IgYSBwYWdlIHRoYXQgaGFzIGFscmVhZHkgYmVlbiBjbG9zZWQuIElnbm9yZSBpdC4K
LSAgICBpZiAoIXN0b3JhZ2VBcmVhKQotICAgICAgICByZXR1cm47CisgICAgQVNTRVJUKChIYXNo
TWFwPHVpbnQ2NF90LCBSZWZQdHI8VHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlPj46Omlz
VmFsaWRLZXkoc3RvcmFnZU5hbWVzcGFjZUlEKSkpOwogCi0gICAgYm9vbCBxdW90YUVycm9yOwot
ICAgIHN0b3JhZ2VBcmVhLT5zZXRJdGVtKGNvbm5lY3Rpb24udW5pcXVlSUQoKSwgc291cmNlU3Rv
cmFnZUFyZWFJRCwga2V5LCB2YWx1ZSwgdXJsU3RyaW5nLCBxdW90YUVycm9yKTsKLSAgICBjb25u
ZWN0aW9uLnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VBcmVhTWFwOjpEaWRTZXRJdGVtKHN0b3JhZ2VN
YXBTZWVkLCBrZXksIHF1b3RhRXJyb3IpLCBzdG9yYWdlTWFwSUQpOworICAgIGlmIChhdXRvKiB0
cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UgPSBnZXRPckNyZWF0ZVRyYW5zaWVudExvY2Fs
U3RvcmFnZU5hbWVzcGFjZShzdG9yYWdlTmFtZXNwYWNlSUQsIFdURk1vdmUodG9wTGV2ZWxPcmln
aW4pKSkKKyAgICAgICAgcmV0dXJuIHRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZS0+Z2V0
T3JDcmVhdGVTdG9yYWdlQXJlYShXVEZNb3ZlKG9yaWdpbikpLnB0cigpOworICAgIAorICAgIHJl
dHVybiBudWxscHRyOwogfQogCi12b2lkIFN0b3JhZ2VNYW5hZ2VyOjpzZXRJdGVtcyhJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCwgY29uc3QgSGFzaE1h
cDxTdHJpbmcsIFN0cmluZz4mIGl0ZW1zKQorU3RvcmFnZUFyZWEqIFN0b3JhZ2VNYW5hZ2VyOjpj
cmVhdGVTZXNzaW9uU3RvcmFnZUFyZWEodWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBvcmlnaW4pCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29w
Ojppc01haW4oKSk7Ci0gICAgaWYgKGF1dG8qIHN0b3JhZ2VBcmVhID0gZmluZFN0b3JhZ2VBcmVh
KGNvbm5lY3Rpb24sIHN0b3JhZ2VNYXBJRCkpCi0gICAgICAgIHN0b3JhZ2VBcmVhLT5zZXRJdGVt
cyhpdGVtcyk7Ci19CisgICAgQVNTRVJUKChIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8U2Vzc2lv
blN0b3JhZ2VOYW1lc3BhY2U+Pjo6aXNWYWxpZEtleShzdG9yYWdlTmFtZXNwYWNlSUQpKSk7CiAK
LXZvaWQgU3RvcmFnZU1hbmFnZXI6OnJlbW92ZUl0ZW0oSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBzZWN1cml0eU9yaWdpbkRhdGEsIHVp
bnQ2NF90IHN0b3JhZ2VNYXBJRCwgdWludDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwgdWludDY0
X3Qgc3RvcmFnZU1hcFNlZWQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHVybFN0
cmluZykKLXsKLSAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBhdXRvKiBzdG9y
YWdlQXJlYSA9IGZpbmRTdG9yYWdlQXJlYShjb25uZWN0aW9uLCBzdG9yYWdlTWFwSUQpOwotCi0g
ICAgLy8gVGhpcyBpcyBhIHNlc3Npb24gc3RvcmFnZSBhcmVhIGZvciBhIHBhZ2UgdGhhdCBoYXMg
YWxyZWFkeSBiZWVuIGNsb3NlZC4gSWdub3JlIGl0LgotICAgIGlmICghc3RvcmFnZUFyZWEpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIHN0b3JhZ2VBcmVhLT5yZW1vdmVJdGVtKGNvbm5lY3Rpb24u
dW5pcXVlSUQoKSwgc291cmNlU3RvcmFnZUFyZWFJRCwga2V5LCB1cmxTdHJpbmcpOwotICAgIGNv
bm5lY3Rpb24uc2VuZChNZXNzYWdlczo6U3RvcmFnZUFyZWFNYXA6OkRpZFJlbW92ZUl0ZW0oc3Rv
cmFnZU1hcFNlZWQsIGtleSksIHN0b3JhZ2VNYXBJRCk7CisgICAgaWYgKGF1dG8qIHNlc3Npb25T
dG9yYWdlTmFtZXNwYWNlID0gZ2V0T3JDcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShzdG9y
YWdlTmFtZXNwYWNlSUQpKQorICAgICAgICByZXR1cm4gc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2Ut
PmdldE9yQ3JlYXRlU3RvcmFnZUFyZWEoV1RGTW92ZShvcmlnaW4pKS5wdHIoKTsKKyAgICAKKyAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KIAotdm9pZCBTdG9yYWdlTWFuYWdlcjo6Y2xlYXIoSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBzZWN1
cml0eU9yaWdpbkRhdGEsIHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCwgdWludDY0X3Qgc291cmNlU3Rv
cmFnZUFyZWFJRCwgdWludDY0X3Qgc3RvcmFnZU1hcFNlZWQsIGNvbnN0IFN0cmluZyYgdXJsU3Ry
aW5nKQorTG9jYWxTdG9yYWdlTmFtZXNwYWNlKiBTdG9yYWdlTWFuYWdlcjo6Z2V0T3JDcmVhdGVM
b2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlEKQogewogICAg
IEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIGF1dG8qIHN0b3JhZ2VBcmVhID0gZmlu
ZFN0b3JhZ2VBcmVhKGNvbm5lY3Rpb24sIHN0b3JhZ2VNYXBJRCk7CiAKLSAgICAvLyBUaGlzIGlz
IGEgc2Vzc2lvbiBzdG9yYWdlIGFyZWEgZm9yIGEgcGFnZSB0aGF0IGhhcyBhbHJlYWR5IGJlZW4g
Y2xvc2VkLiBJZ25vcmUgaXQuCi0gICAgaWYgKCFzdG9yYWdlQXJlYSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgc3RvcmFnZUFyZWEtPmNsZWFyKGNvbm5lY3Rpb24udW5pcXVlSUQoKSwgc291cmNl
U3RvcmFnZUFyZWFJRCwgdXJsU3RyaW5nKTsKLSAgICBjb25uZWN0aW9uLnNlbmQoTWVzc2FnZXM6
OlN0b3JhZ2VBcmVhTWFwOjpEaWRDbGVhcihzdG9yYWdlTWFwU2VlZCksIHN0b3JhZ2VNYXBJRCk7
Ci19Ci0KLXZvaWQgU3RvcmFnZU1hbmFnZXI6OndhaXRVbnRpbFRhc2tzRmluaXNoZWQoKQotewot
ICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgQmluYXJ5U2VtYXBob3JlIHNlbWFw
aG9yZTsKLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgJnNlbWFwaG9yZV0gewotICAgICAg
ICBWZWN0b3I8c3RkOjpwYWlyPElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIHVpbnQ2NF90Pj4g
Y29ubmVjdGlvbkFuZFN0b3JhZ2VNYXBJRFBhaXJzVG9SZW1vdmU7Ci0gICAgICAgIGZvciAoYXV0
byYgY29ubmVjdGlvblN0b3JhZ2VBcmVhUGFpciA6IG1fc3RvcmFnZUFyZWFzQnlDb25uZWN0aW9u
KSB7Ci0gICAgICAgICAgICBjb25uZWN0aW9uU3RvcmFnZUFyZWFQYWlyLnZhbHVlLT5yZW1vdmVM
aXN0ZW5lcihjb25uZWN0aW9uU3RvcmFnZUFyZWFQYWlyLmtleS5maXJzdCwgY29ubmVjdGlvblN0
b3JhZ2VBcmVhUGFpci5rZXkuc2Vjb25kKTsKLSAgICAgICAgICAgIGNvbm5lY3Rpb25BbmRTdG9y
YWdlTWFwSURQYWlyc1RvUmVtb3ZlLmFwcGVuZChjb25uZWN0aW9uU3RvcmFnZUFyZWFQYWlyLmtl
eSk7Ci0gICAgICAgIH0KLQotICAgICAgICBmb3IgKGF1dG8mIGNvbm5lY3Rpb25TdG9yYWdlQXJl
YVBhaXIgOiBjb25uZWN0aW9uQW5kU3RvcmFnZU1hcElEUGFpcnNUb1JlbW92ZSkKLSAgICAgICAg
ICAgIG1fc3RvcmFnZUFyZWFzQnlDb25uZWN0aW9uLnJlbW92ZShjb25uZWN0aW9uU3RvcmFnZUFy
ZWFQYWlyKTsKLQotICAgICAgICBtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlcy5jbGVhcigpOwot
ICAgICAgICBtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZXMuY2xlYXIoKTsKLQotICAgICAgICBzZW1h
cGhvcmUuc2lnbmFsKCk7Ci0gICAgfSk7Ci0gICAgc2VtYXBob3JlLndhaXQoKTsKLX0KLQotdm9p
ZCBTdG9yYWdlTWFuYWdlcjo6c3VzcGVuZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCi17Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBD
b21wbGV0aW9uSGFuZGxlckNhbGxpbmdTY29wZSBjb21wbGV0aW9uSGFuZGxlckNhbGxlcihXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgaWYgKCFtX2xvY2FsU3RvcmFnZURhdGFiYXNl
VHJhY2tlcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgTG9ja2VyPExvY2s+IHN0YXRlTG9ja2Vy
KG1fc3RhdGVMb2NrKTsKLSAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6UnVubmluZykKLSAgICAg
ICAgcmV0dXJuOwotICAgIG1fc3RhdGUgPSBTdGF0ZTo6V2lsbFN1c3BlbmQ7Ci0KLSAgICBtX3F1
ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21w
bGV0aW9uSGFuZGxlciA9IGNvbXBsZXRpb25IYW5kbGVyQ2FsbGVyLnJlbGVhc2UoKV0gKCkgbXV0
YWJsZSB7Ci0gICAgICAgIExvY2tlcjxMb2NrPiBzdGF0ZUxvY2tlcihtX3N0YXRlTG9jayk7Ci0g
ICAgICAgIEFTU0VSVChtX3N0YXRlICE9IFN0YXRlOjpTdXNwZW5kZWQpOwotCi0gICAgICAgIGlm
IChtX3N0YXRlICE9IFN0YXRlOjpXaWxsU3VzcGVuZCkgewotICAgICAgICAgICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6U3VzcGVuZGVk
OwotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOwotICAgICAgICAKLSAgICAgICAgd2hpbGUgKG1fc3RhdGUgPT0gU3RhdGU6OlN1c3Bl
bmRlZCkKLSAgICAgICAgICAgIG1fc3RhdGVDaGFuZ2VDb25kaXRpb24ud2FpdChtX3N0YXRlTG9j
ayk7Ci0gICAgICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpSdW5uaW5nKTsKLSAgICB9KTsK
LX0KLQotdm9pZCBTdG9yYWdlTWFuYWdlcjo6cmVzdW1lKCkKLXsKLSAgICBBU1NFUlQoUnVuTG9v
cDo6aXNNYWluKCkpOwotICAgIGlmICghbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIpCi0g
ICAgICAgIHJldHVybjsKKyAgICBpZiAoIW1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlcy5pc1ZhbGlk
S2V5KHN0b3JhZ2VOYW1lc3BhY2VJRCkpCisgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
TG9ja2VyPExvY2s+IHN0YXRlTG9ja2VyKG1fc3RhdGVMb2NrKTsKLSAgICBhdXRvIHByZXZpb3Vz
U3RhdGUgPSBtX3N0YXRlOwotICAgIG1fc3RhdGUgPSBTdGF0ZTo6UnVubmluZzsKLSAgICBpZiAo
cHJldmlvdXNTdGF0ZSA9PSBTdGF0ZTo6U3VzcGVuZGVkKQotICAgICAgICBtX3N0YXRlQ2hhbmdl
Q29uZGl0aW9uLm5vdGlmeU9uZSgpOworICAgIHJldHVybiBtX2xvY2FsU3RvcmFnZU5hbWVzcGFj
ZXMuZW5zdXJlKHN0b3JhZ2VOYW1lc3BhY2VJRCwgW3RoaXMsIHN0b3JhZ2VOYW1lc3BhY2VJRF0o
KSB7CisgICAgICAgIHJldHVybiBMb2NhbFN0b3JhZ2VOYW1lc3BhY2U6OmNyZWF0ZSgqdGhpcywg
c3RvcmFnZU5hbWVzcGFjZUlEKTsKKyAgICB9KS5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CiB9CiAK
LVN0b3JhZ2VBcmVhKiBTdG9yYWdlTWFuYWdlcjo6ZmluZFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgdWludDY0X3Qgc3RvcmFnZU1hcElEKSBjb25zdAorVHJhbnNpZW50
TG9jYWxTdG9yYWdlTmFtZXNwYWNlKiBTdG9yYWdlTWFuYWdlcjo6Z2V0T3JDcmVhdGVUcmFuc2ll
bnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiB0b3BMZXZlbE9yaWdpbikKIHsKICAgICBBU1NFUlQo
IVJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBzdGQ6OnBhaXI8SVBDOjpDb25uZWN0aW9uOjpVbmlx
dWVJRCwgdWludDY0X3Q+IGNvbm5lY3Rpb25BbmRTdG9yYWdlTWFwSURQYWlyKGNvbm5lY3Rpb24u
dW5pcXVlSUQoKSwgc3RvcmFnZU1hcElEKTsKIAotICAgIGlmICghbV9zdG9yYWdlQXJlYXNCeUNv
bm5lY3Rpb24uaXNWYWxpZEtleShjb25uZWN0aW9uQW5kU3RvcmFnZU1hcElEUGFpcikpCisgICAg
aWYgKCFtX3RyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZXMuaXNWYWxpZEtleSh7IHN0b3Jh
Z2VOYW1lc3BhY2VJRCwgdG9wTGV2ZWxPcmlnaW4gfSkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCi0gICAgcmV0dXJuIG1fc3RvcmFnZUFyZWFzQnlDb25uZWN0aW9uLmdldChjb25uZWN0aW9u
QW5kU3RvcmFnZU1hcElEUGFpcik7CisgICAgcmV0dXJuIG1fdHJhbnNpZW50TG9jYWxTdG9yYWdl
TmFtZXNwYWNlcy5lbnN1cmUoeyBzdG9yYWdlTmFtZXNwYWNlSUQsIFdURk1vdmUodG9wTGV2ZWxP
cmlnaW4pIH0sIFtdKCl7CisgICAgICAgIHJldHVybiBUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1l
c3BhY2U6OmNyZWF0ZSgpOworICAgIH0pLml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKIH0KIAotTG9j
YWxTdG9yYWdlTmFtZXNwYWNlKiBTdG9yYWdlTWFuYWdlcjo6Z2V0T3JDcmVhdGVMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UodWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlEKQorU2Vzc2lvblN0b3JhZ2VO
YW1lc3BhY2UqIFN0b3JhZ2VNYW5hZ2VyOjpnZXRPckNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNw
YWNlKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6
OmlzTWFpbigpKTsKLSAgICBpZiAoIW1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlcy5pc1ZhbGlkS2V5
KHN0b3JhZ2VOYW1lc3BhY2VJRCkpCisKKyAgICBpZiAoIW1fc2Vzc2lvblN0b3JhZ2VOYW1lc3Bh
Y2VzLmlzVmFsaWRLZXkoc3RvcmFnZU5hbWVzcGFjZUlEKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKLSAgICByZXR1cm4gbV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2VzLmVuc3VyZShzdG9yYWdl
TmFtZXNwYWNlSUQsIFt0aGlzLCBzdG9yYWdlTmFtZXNwYWNlSURdKCkgewotICAgICAgICByZXR1
cm4gTG9jYWxTdG9yYWdlTmFtZXNwYWNlOjpjcmVhdGUoKnRoaXMsIHN0b3JhZ2VOYW1lc3BhY2VJ
RCk7CisgICAgcmV0dXJuIG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLmVuc3VyZShzdG9yYWdl
TmFtZXNwYWNlSUQsIFtdIHsKKyAgICAgICAgLy8gV2UgY3VycmVudGx5IGhhdmUgbm8gbGltaXQg
b24gc2Vzc2lvbiBzdG9yYWdlLgorICAgICAgICByZXR1cm4gU2Vzc2lvblN0b3JhZ2VOYW1lc3Bh
Y2U6OmNyZWF0ZShzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpOwogICAgIH0p
Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKIH0KIAotVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNw
YWNlKiBTdG9yYWdlTWFuYWdlcjo6Z2V0T3JDcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1l
c3BhY2UodWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEmJiB0b3BMZXZlbE9yaWdpbikKK3ZvaWQgU3RvcmFnZU1hbmFnZXI6OmNsZWFyU3RvcmFn
ZU5hbWVzcGFjZXMoKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIGlm
ICghbV90cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2VzLmlzVmFsaWRLZXkoeyBzdG9yYWdl
TmFtZXNwYWNlSUQsIHRvcExldmVsT3JpZ2luIH0pKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgIHJldHVybiBtX3RyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZXMuZW5zdXJlKHsg
c3RvcmFnZU5hbWVzcGFjZUlELCBXVEZNb3ZlKHRvcExldmVsT3JpZ2luKSB9LCBbXSgpewotICAg
ICAgICByZXR1cm4gVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlOjpjcmVhdGUoKTsKLSAg
ICB9KS5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CisgICAgbV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2Vz
LmNsZWFyKCk7CisgICAgbV90cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2VzLmNsZWFyKCk7
CisgICAgbV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMuY2xlYXIoKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dl
YlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
V2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5oCmluZGV4IDMxOTlhNDIwYThmZGJjYmIxZjc3ZDcy
ZDAxN2VhNmIzYzA4MDk1MGYuLjZiNTNlMWIyZTA0NDlmOWIzYzA0MDNiNTMyM2FlYWQwMGMzYTk2
MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9T
dG9yYWdlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3Rv
cmFnZS9TdG9yYWdlTWFuYWdlci5oCkBAIC00OSw3ICs0OSw3IEBAIGNsYXNzIFdlYlByb2Nlc3NQ
cm94eTsKIAogdXNpbmcgR2V0VmFsdWVzQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+Jik+OwogCi1jbGFzcyBTdG9yYWdlTWFuYWdl
ciA6IHB1YmxpYyBJUEM6OkNvbm5lY3Rpb246OldvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlciB7Citj
bGFzcyBTdG9yYWdlTWFuYWdlciA6IHB1YmxpYyBSZWZDb3VudGVkPFN0b3JhZ2VNYW5hZ2VyPiB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTdG9yYWdlTWFuYWdlcj4gY3JlYXRlKFN0cmluZyYm
IGxvY2FsU3RvcmFnZURpcmVjdG9yeSkKICAgICB7CkBAIC02MCw3OCArNjAsNDEgQEAgcHVibGlj
OgogCiAgICAgdm9pZCBjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBzdG9y
YWdlTmFtZXNwYWNlSUQsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcyk7CiAgICAgdm9pZCBkZXN0cm95
U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlEKTsKLSAg
ICB2b2lkIGFkZEFsbG93ZWRTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZUNvbm5lY3Rpb24odWludDY0
X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBJUEM6OkNvbm5lY3Rpb24mKTsKLSAgICB2b2lkIHJlbW92
ZUFsbG93ZWRTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZUNvbm5lY3Rpb24odWludDY0X3Qgc3RvcmFn
ZU5hbWVzcGFjZUlELCBJUEM6OkNvbm5lY3Rpb24mKTsKICAgICB2b2lkIGNsb25lU2Vzc2lvblN0
b3JhZ2VOYW1lc3BhY2UodWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCB1aW50NjRfdCBuZXdT
dG9yYWdlTmFtZXNwYWNlSUQpOwogCi0gICAgdm9pZCBwcm9jZXNzRGlkQ2xvc2VDb25uZWN0aW9u
KElQQzo6Q29ubmVjdGlvbiYpOwotICAgIHZvaWQgd2FpdFVudGlsVGFza3NGaW5pc2hlZCgpOwot
ICAgIHZvaWQgc3VzcGVuZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQg
cmVzdW1lKCk7Ci0KLSAgICB2b2lkIGdldFNlc3Npb25TdG9yYWdlT3JpZ2lucyhGdW5jdGlvbjx2
b2lkKEhhc2hTZXQ8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcik7CisgICAgdm9pZCBnZXRTZXNzaW9uU3RvcmFnZU9yaWdpbnMoRnVuY3Rpb248dm9p
ZChIYXNoU2V0PFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mJik+JiYpOwogICAgIHZvaWQg
ZGVsZXRlU2Vzc2lvblN0b3JhZ2VPcmlnaW5zKEZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcik7Ci0gICAgdm9pZCBkZWxldGVTZXNzaW9uU3RvcmFnZUVudHJpZXNGb3JPcmlnaW5z
KGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiwgRnVuY3Rpb248dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKLQotICAgIHZvaWQgZ2V0TG9jYWxTdG9yYWdlT3Jp
Z2lucyhGdW5jdGlvbjx2b2lkKEhhc2hTZXQ8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcik7Ci0gICAgdm9pZCBkZWxldGVMb2NhbFN0b3JhZ2VFbnRy
aWVzRm9yT3JpZ2luKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYpOworICAgIHZv
aWQgZGVsZXRlU2Vzc2lvblN0b3JhZ2VFbnRyaWVzRm9yT3JpZ2lucyhjb25zdCBWZWN0b3I8V2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYsIEZ1bmN0aW9uPHZvaWQoKT4mJik7CiAKLSAgICB2
b2lkIGRlbGV0ZUxvY2FsU3RvcmFnZU9yaWdpbnNNb2RpZmllZFNpbmNlKFdhbGxUaW1lLCBGdW5j
dGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwotICAgIHZvaWQgZGVsZXRlTG9jYWxT
dG9yYWdlRW50cmllc0Zvck9yaWdpbnMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YT4mLCBGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOworICAgIHZv
aWQgZ2V0TG9jYWxTdG9yYWdlT3JpZ2lucyhGdW5jdGlvbjx2b2lkKEhhc2hTZXQ8V2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhPiYmKT4mJik7CisgICAgdm9pZCBkZWxldGVMb2NhbFN0b3JhZ2VP
cmlnaW5zTW9kaWZpZWRTaW5jZShXYWxsVGltZSwgRnVuY3Rpb248dm9pZCgpPiYmKTsKKyAgICB2
b2lkIGRlbGV0ZUxvY2FsU3RvcmFnZUVudHJpZXNGb3JPcmlnaW5zKGNvbnN0IFZlY3RvcjxXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiwgRnVuY3Rpb248dm9pZCgpPiYmKTsKKyAgICB2b2lk
IGdldExvY2FsU3RvcmFnZU9yaWdpbkRldGFpbHMoRnVuY3Rpb248dm9pZChWZWN0b3I8TG9jYWxT
dG9yYWdlRGF0YWJhc2VUcmFja2VyOjpPcmlnaW5EZXRhaWxzPiYmKT4mJik7CiAKLSAgICB2b2lk
IGdldExvY2FsU3RvcmFnZU9yaWdpbkRldGFpbHMoRnVuY3Rpb248dm9pZChWZWN0b3I8TG9jYWxT
dG9yYWdlRGF0YWJhc2VUcmFja2VyOjpPcmlnaW5EZXRhaWxzPiYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcik7CisgICAgdm9pZCBjbGVhclN0b3JhZ2VOYW1lc3BhY2VzKCk7CiAKICAgICB2b2lkIGRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwogICAgIHZv
aWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYs
IHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpOwogICAgIAogICAg
IExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlciogbG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2Vy
KCkgY29uc3QgeyByZXR1cm4gbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuZ2V0KCk7IH0K
ICAgICAKLSAgICBXb3JrUXVldWUmIHdvcmtRdWV1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcXVldWUu
Z2V0KCk7IH0KLSAgICAKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbG9jYWxTdG9yYWdlRGF0
YWJhc2VRdW90YUluQnl0ZXM7CiAKKyAgICBTdG9yYWdlQXJlYSogY3JlYXRlTG9jYWxTdG9yYWdl
QXJlYSh1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSYmKTsKKyAgICBTdG9yYWdlQXJlYSogY3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlQXJl
YSh1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YSYmLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJik7CisgICAgU3RvcmFnZUFyZWEqIGNy
ZWF0ZVNlc3Npb25TdG9yYWdlQXJlYSh1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmKTsKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBTdG9y
YWdlTWFuYWdlcihTdHJpbmcmJiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpOwogCi0gICAgLy8gTWVz
c2FnZSBoYW5kbGVycy4KLSAgICB2b2lkIGNyZWF0ZUxvY2FsU3RvcmFnZU1hcChJUEM6OkNvbm5l
Y3Rpb24mLCB1aW50NjRfdCBzdG9yYWdlTWFwSUQsIHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJ
RCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYpOwotICAgIHZvaWQgY3JlYXRlVHJhbnNp
ZW50TG9jYWxTdG9yYWdlTWFwKElQQzo6Q29ubmVjdGlvbiYsIHVpbnQ2NF90IHN0b3JhZ2VNYXBJ
RCwgdWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEmJiB0b3BMZXZlbE9yaWdpbkRhdGEsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmKTsK
LSAgICB2b2lkIGNyZWF0ZVNlc3Npb25TdG9yYWdlTWFwKElQQzo6Q29ubmVjdGlvbiYsIHVpbnQ2
NF90IHN0b3JhZ2VNYXBJRCwgdWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEmJik7Ci0gICAgdm9pZCBkZXN0cm95U3RvcmFnZU1hcChJUEM6OkNv
bm5lY3Rpb24mLCB1aW50NjRfdCBzdG9yYWdlTWFwSUQpOwotCi0gICAgdm9pZCBnZXRWYWx1ZXMo
SVBDOjpDb25uZWN0aW9uJiwgdWludDY0X3Qgc3RvcmFnZU1hcElELCB1aW50NjRfdCBzdG9yYWdl
TWFwU2VlZCwgR2V0VmFsdWVzQ2FsbGJhY2smJik7Ci0gICAgdm9pZCBwcmV3YXJtKElQQzo6Q29u
bmVjdGlvbiYsIHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCk7Ci0gICAgdm9pZCBzZXRJdGVtKElQQzo6
Q29ubmVjdGlvbiYsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCB1aW50NjRfdCBzdG9y
YWdlTWFwSUQsIHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIHVpbnQ2NF90IHN0b3JhZ2VN
YXBTZWVkLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgY29uc3QgU3Ry
aW5nJiB1cmxTdHJpbmcpOwotICAgIHZvaWQgc2V0SXRlbXMoSVBDOjpDb25uZWN0aW9uJiwgdWlu
dDY0X3Qgc3RvcmFnZU1hcElELCBjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgaXRlbXMp
OwotICAgIHZvaWQgcmVtb3ZlSXRlbShJUEM6OkNvbm5lY3Rpb24mLCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGEmJiwgdWludDY0X3Qgc3RvcmFnZU1hcElELCB1aW50NjRfdCBzb3VyY2VTdG9y
YWdlQXJlYUlELCB1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCwgY29uc3QgU3RyaW5nJiBrZXksIGNv
bnN0IFN0cmluZyYgdXJsU3RyaW5nKTsKLSAgICB2b2lkIGNsZWFyKElQQzo6Q29ubmVjdGlvbiYs
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCB1aW50NjRfdCBzdG9yYWdlTWFwSUQsIHVp
bnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkLCBjb25z
dCBTdHJpbmcmIHVybFN0cmluZyk7Ci0KLSAgICBTdG9yYWdlQXJlYSogZmluZFN0b3JhZ2VBcmVh
KElQQzo6Q29ubmVjdGlvbiYsIHVpbnQ2NF90KSBjb25zdDsKLQogICAgIExvY2FsU3RvcmFnZU5h
bWVzcGFjZSogZ2V0T3JDcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3Qgc3RvcmFn
ZU5hbWVzcGFjZUlEKTsKLQogICAgIFRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSogZ2V0
T3JDcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3Qgc3RvcmFnZU5h
bWVzcGFjZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiB0b3BMZXZlbE9yaWdpbik7
Ci0KLSAgICBSZWY8V29ya1F1ZXVlPiBtX3F1ZXVlOworICAgIFNlc3Npb25TdG9yYWdlTmFtZXNw
YWNlKiBnZXRPckNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IHN0b3JhZ2VO
YW1lc3BhY2VJRCk7CiAKICAgICBSZWZQdHI8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyPiBt
X2xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQ
dHI8TG9jYWxTdG9yYWdlTmFtZXNwYWNlPj4gbV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2VzOwotCiAg
ICAgSGFzaE1hcDxzdGQ6OnBhaXI8dWludDY0X3QsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YT4sIFJlZlB0cjxUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2U+PiBtX3RyYW5zaWVudExv
Y2FsU3RvcmFnZU5hbWVzcGFjZXM7Ci0KICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8U2Vz
c2lvblN0b3JhZ2VOYW1lc3BhY2U+PiBtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlczsKLQotICAg
IEhhc2hNYXA8c3RkOjpwYWlyPElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIHVpbnQ2NF90Piwg
UmVmUHRyPFN0b3JhZ2VBcmVhPj4gbV9zdG9yYWdlQXJlYXNCeUNvbm5lY3Rpb247Ci0gICAgSGFz
aFNldDxJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEPiBtX2Nvbm5lY3Rpb25zOwotCi0gICAgZW51
bSBjbGFzcyBTdGF0ZSB7Ci0gICAgICAgIFJ1bm5pbmcsCi0gICAgICAgIFdpbGxTdXNwZW5kLAot
ICAgICAgICBTdXNwZW5kZWQKLSAgICB9OwotICAgIFN0YXRlIG1fc3RhdGUgeyBTdGF0ZTo6UnVu
bmluZyB9OwotICAgIExvY2sgbV9zdGF0ZUxvY2s7Ci0gICAgQ29uZGl0aW9uIG1fc3RhdGVDaGFu
Z2VDb25kaXRpb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdl
TWFuYWdlci5tZXNzYWdlcy5pbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzhiYjZh
YjI0MDI4YTI1M2FhMTE4NTQyMDFkNmExNWQyNWNlMmM2Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dl
YlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIubWVzc2FnZXMuaW4KKysrIC9kZXYvbnVsbApAQCAtMSwz
NiArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0j
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotIyBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQot
bWVzc2FnZXMgLT4gU3RvcmFnZU1hbmFnZXIgewotICAgIENyZWF0ZUxvY2FsU3RvcmFnZU1hcCh1
aW50NjRfdCBzdG9yYWdlTWFwSUQsIHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgc3RydWN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBzZWN1cml0eU9yaWdpbkRhdGEpIFdhbnRzQ29u
bmVjdGlvbgotICAgIENyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU1hcCh1aW50NjRfdCBzdG9y
YWdlTWFwSUQsIHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgc3RydWN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSB0b3BMZXZlbFNlY3VyaXR5T3JpZ2luRGF0YSwgc3RydWN0IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBzZWN1cml0eU9yaWdpbkRhdGEpIFdhbnRzQ29ubmVjdGlv
bgotICAgIENyZWF0ZVNlc3Npb25TdG9yYWdlTWFwKHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCwgdWlu
dDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhIHNlY3VyaXR5T3JpZ2luRGF0YSkgV2FudHNDb25uZWN0aW9uCi0gICAgRGVzdHJveVN0b3Jh
Z2VNYXAodWludDY0X3Qgc3RvcmFnZU1hcElEKSBXYW50c0Nvbm5lY3Rpb24KLQotICAgIFByZXdh
cm0odWludDY0X3Qgc3RvcmFnZU1hcElEKSBXYW50c0Nvbm5lY3Rpb24KLSAgICBHZXRWYWx1ZXMo
dWludDY0X3Qgc3RvcmFnZU1hcElELCB1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCkgLT4gKEhhc2hN
YXA8U3RyaW5nLCBTdHJpbmc+IHZhbHVlcykgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCi0K
LSAgICBTZXRJdGVtKHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgc2VjdXJpdHlP
cmlnaW5EYXRhLCB1aW50NjRfdCBzdG9yYWdlTWFwSUQsIHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VB
cmVhSUQsIHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkLCBTdHJpbmcga2V5LCBTdHJpbmcgdmFsdWUs
IFN0cmluZyB1cmxTdHJpbmcpIFdhbnRzQ29ubmVjdGlvbgotICAgIFNldEl0ZW1zKHVpbnQ2NF90
IHN0b3JhZ2VNYXBJRCwgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gaXRlbXMpIFdhbnRzQ29ubmVj
dGlvbgotICAgIFJlbW92ZUl0ZW0oc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBz
ZWN1cml0eU9yaWdpbkRhdGEsIHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCwgdWludDY0X3Qgc291cmNl
U3RvcmFnZUFyZWFJRCwgdWludDY0X3Qgc3RvcmFnZU1hcFNlZWQsIFN0cmluZyBrZXksIFN0cmlu
ZyB1cmxTdHJpbmcpIFdhbnRzQ29ubmVjdGlvbgotICAgIENsZWFyKHN0cnVjdCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEgc2VjdXJpdHlPcmlnaW5EYXRhLCB1aW50NjRfdCBzdG9yYWdlTWFw
SUQsIHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVk
LCBTdHJpbmcgdXJsU3RyaW5nKSBXYW50c0Nvbm5lY3Rpb24KLX0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJT
ZXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjgxYzdiNzFiZjQ1MzAzMTFmODk5OTZkZGY4ZDQ2ODBlOWJiMDky
NGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0
b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQuY3BwCkBAIC0wLDAgKzEsNDA5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlN0b3JhZ2VNYW5hZ2VyU2V0LmgiCisKKyNpbmNsdWRlICJTdG9yYWdlQXJlYU1h
cE1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiU3RvcmFnZU1hbmFnZXJTZXRNZXNzYWdlcy5oIgorI2lu
Y2x1ZGUgPHd0Zi90aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5oPgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworY29uc3QgdWludDY0X3QgaW52YWxpZFN0b3JhZ2VBcmVhSUQgPSAwOworCitSZWY8U3Rv
cmFnZU1hbmFnZXJTZXQ+IFN0b3JhZ2VNYW5hZ2VyU2V0OjpjcmVhdGUoKQoreworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFN0b3JhZ2VNYW5hZ2VyU2V0KTsKK30KKworU3RvcmFnZU1hbmFnZXJT
ZXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0KCkKKyAgICA6IG1fcXVldWUoV29ya1F1ZXVlOjpjcmVhdGUo
ImNvbS5hcHBsZS5XZWJLaXQuV2ViU3RvcmFnZSIpKQoreworICAgIEFTU0VSVChSdW5Mb29wOjpp
c01haW4oKSk7CisKKyAgICAvLyBNYWtlIHN1cmUgdGhlIGVuY29kaW5nIGlzIGluaXRpYWxpemVk
IGJlZm9yZSB3ZSBzdGFydCBkaXNwYXRjaGluZyB0aGluZ3MgdG8gdGhlIHF1ZXVlLgorICAgIFVU
RjhFbmNvZGluZygpOworfQorCitTdG9yYWdlTWFuYWdlclNldDo6flN0b3JhZ2VNYW5hZ2VyU2V0
KCkKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgd2FpdFVudGlsVGFz
a3NGaW5pc2hlZCgpOworfQorCit2b2lkIFN0b3JhZ2VNYW5hZ2VyU2V0OjphZGQoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZURpcmVjdG9yeSwgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnlIYW5kbGUpCit7Cisg
ICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIGF1dG9baXRlciwgaXNOZXdFbnRy
eV0gPSBtX3N0b3JhZ2VNYW5hZ2VyUGF0aHMuYWRkKHNlc3Npb25JRCwgbG9jYWxTdG9yYWdlRGly
ZWN0b3J5KTsKKyAgICBpZiAoaXNOZXdFbnRyeSkgeworICAgICAgICBpZiAoIXNlc3Npb25JRC5p
c0VwaGVtZXJhbCgpKQorICAgICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1h
bmVudGx5KGxvY2FsU3RvcmFnZURpcmVjdG9yeUhhbmRsZSk7CisKKyAgICAgICAgbV9xdWV1ZS0+
ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc2Vzc2lvbklE
LCBkaXJlY3RvcnkgPSBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkuaXNvbGF0ZWRDb3B5KCldKCkgbXV0
YWJsZSB7CisgICAgICAgICAgICBtX3N0b3JhZ2VNYW5hZ2Vycy5lbnN1cmUoc2Vzc2lvbklELCBb
ZGlyZWN0b3J5XSgpIG11dGFibGUgeworICAgICAgICAgICAgICAgIHJldHVybiBTdG9yYWdlTWFu
YWdlcjo6Y3JlYXRlKFdURk1vdmUoZGlyZWN0b3J5KSk7CisgICAgICAgICAgICB9KTsKKyAgICAg
ICAgfSk7CisgICAgfQorfQorCit2b2lkIFN0b3JhZ2VNYW5hZ2VyU2V0OjpyZW1vdmUoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklEKQoreworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisK
KyAgICBpZiAobV9zdG9yYWdlTWFuYWdlclBhdGhzLnJlbW92ZShzZXNzaW9uSUQpKSB7CisgICAg
ICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIHNlc3Npb25JRF0oKSB7CisgICAgICAgICAgICBtX3N0b3JhZ2VNYW5hZ2Vycy5yZW1vdmUo
c2Vzc2lvbklEKTsKKyAgICAgICAgfSk7CisgICAgfQorfQorCitib29sIFN0b3JhZ2VNYW5hZ2Vy
U2V0Ojpjb250YWlucyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCit7CisgICAgQVNTRVJUKFJ1
bkxvb3A6OmlzTWFpbigpKTsKKworICAgIHJldHVybiBtX3N0b3JhZ2VNYW5hZ2VyUGF0aHMuY29u
dGFpbnMoc2Vzc2lvbklEKTsKK30KKwordm9pZCBTdG9yYWdlTWFuYWdlclNldDo6YWRkQ29ubmVj
dGlvbihJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pIAoreworICAgIEFTU0VSVChSdW5Mb29w
Ojppc01haW4oKSk7CisKKyAgICBhdXRvIGNvbm5lY3Rpb25JRCA9IGNvbm5lY3Rpb24udW5pcXVl
SUQoKTsKKyAgICBBU1NFUlQoIW1fY29ubmVjdGlvbnMuY29udGFpbnMoY29ubmVjdGlvbklEKSk7
CisgICAgaWYgKG1fY29ubmVjdGlvbnMuYWRkKGNvbm5lY3Rpb25JRCkuaXNOZXdFbnRyeSkKKyAg
ICAgICAgY29ubmVjdGlvbi5hZGRXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlN0
b3JhZ2VNYW5hZ2VyU2V0OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcXVldWUuZ2V0KCksIHRo
aXMpOworfQorCit2b2lkIFN0b3JhZ2VNYW5hZ2VyU2V0OjpyZW1vdmVDb25uZWN0aW9uKElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OworCisgICAgYXV0byBjb25uZWN0aW9uSUQgPSBjb25uZWN0aW9uLnVuaXF1ZUlEKCk7CisgICAg
QVNTRVJUKG1fY29ubmVjdGlvbnMuY29udGFpbnMoY29ubmVjdGlvbklEKSk7CisgICAgbV9jb25u
ZWN0aW9ucy5yZW1vdmUoY29ubmVjdGlvbklEKTsKKyAgICBjb25uZWN0aW9uLnJlbW92ZVdvcmtR
dWV1ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXJTZXQ6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSk7CisKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb25uZWN0aW9uSURdKCkgeworICAgICAgICBmb3IgKGF1
dG8mIHN0b3JhZ2VBcmVhIDogbV9zdG9yYWdlQXJlYXMudmFsdWVzKCkpCisgICAgICAgICAgICBz
dG9yYWdlQXJlYS0+cmVtb3ZlTGlzdGVuZXIoY29ubmVjdGlvbklEKTsKKyAgICB9KTsKK30KKwor
dm9pZCBTdG9yYWdlTWFuYWdlclNldDo6d2FpdFVudGlsVGFza3NGaW5pc2hlZCgpCit7CisgICAg
QVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIEJpbmFyeVNlbWFwaG9yZSBzZW1hcGhv
cmU7CisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsICZzZW1hcGhvcmVdIHsKKyAgICAgICAg
Zm9yIChhdXRvJiBbc2Vzc2lvbklELCBzdG9yYWdlTWFuYWdlcl0gOiBtX3N0b3JhZ2VNYW5hZ2Vy
cykKKyAgICAgICAgICAgIHN0b3JhZ2VNYW5hZ2VyLT5jbGVhclN0b3JhZ2VOYW1lc3BhY2VzKCk7
CisKKyAgICAgICAgbV9zdG9yYWdlTWFuYWdlcnMuY2xlYXIoKTsKKyAgICAgICAgbV9zdG9yYWdl
QXJlYXMuY2xlYXIoKTsKKworICAgICAgICBzZW1hcGhvcmUuc2lnbmFsKCk7CisgICAgfSk7Cisg
ICAgc2VtYXBob3JlLndhaXQoKTsKK30KKwordm9pZCBTdG9yYWdlTWFuYWdlclNldDo6d2FpdFVu
dGlsU3luY2luZ0xvY2FsU3RvcmFnZUZpbmlzaGVkKCkKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOworCisgICAgQmluYXJ5U2VtYXBob3JlIHNlbWFwaG9yZTsKKyAgICBtX3F1ZXVl
LT5kaXNwYXRjaChbdGhpcywgJnNlbWFwaG9yZV0geworICAgICAgICBmb3IgKGF1dG8qIHN0b3Jh
Z2VBcmVhIDogbV9zdG9yYWdlQXJlYXMudmFsdWVzKCkpCisgICAgICAgICAgICBzdG9yYWdlQXJl
YS0+c3luY1RvRGF0YWJhc2UoKTsKKworICAgICAgICBzZW1hcGhvcmUuc2lnbmFsKCk7CisgICAg
fSk7CisgICAgc2VtYXBob3JlLndhaXQoKTsKK30KKwordm9pZCBTdG9yYWdlTWFuYWdlclNldDo6
c3VzcGVuZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7
CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIENvbXBsZXRpb25IYW5kbGVy
Q2FsbGluZ1Njb3BlIGNvbXBsZXRpb25IYW5kbGVyQ2FsbGVyKFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKKyAgICBMb2NrZXI8TG9jaz4gc3RhdGVMb2NrZXIobV9zdGF0ZUxvY2spOworICAg
IGlmIChtX3N0YXRlICE9IFN0YXRlOjpSdW5uaW5nKQorICAgICAgICByZXR1cm47CisgICAgbV9z
dGF0ZSA9IFN0YXRlOjpXaWxsU3VzcGVuZDsKKworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gY29t
cGxldGlvbkhhbmRsZXJDYWxsZXIucmVsZWFzZSgpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgTG9j
a2VyPExvY2s+IHN0YXRlTG9ja2VyKG1fc3RhdGVMb2NrKTsKKyAgICAgICAgQVNTRVJUKG1fc3Rh
dGUgIT0gU3RhdGU6OlN1c3BlbmRlZCk7CisKKyAgICAgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6
OldpbGxTdXNwZW5kKSB7CisgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKKyAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpTdXNwZW5kZWQ7CisgICAgICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisKKyAgICAgICAg
d2hpbGUgKG1fc3RhdGUgPT0gU3RhdGU6OlN1c3BlbmRlZCkKKyAgICAgICAgICAgIG1fc3RhdGVD
aGFuZ2VDb25kaXRpb24ud2FpdChtX3N0YXRlTG9jayk7CisgICAgICAgIEFTU0VSVChtX3N0YXRl
ID09IFN0YXRlOjpSdW5uaW5nKTsKKyAgICB9KTsKK30KKwordm9pZCBTdG9yYWdlTWFuYWdlclNl
dDo6cmVzdW1lKCkKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgTG9j
a2VyPExvY2s+IHN0YXRlTG9ja2VyKG1fc3RhdGVMb2NrKTsKKyAgICBhdXRvIHByZXZpb3VzU3Rh
dGUgPSBtX3N0YXRlOworICAgIG1fc3RhdGUgPSBTdGF0ZTo6UnVubmluZzsKKyAgICBpZiAocHJl
dmlvdXNTdGF0ZSA9PSBTdGF0ZTo6U3VzcGVuZGVkKQorICAgICAgICBtX3N0YXRlQ2hhbmdlQ29u
ZGl0aW9uLm5vdGlmeU9uZSgpOworfQorCit2b2lkIFN0b3JhZ2VNYW5hZ2VyU2V0OjpnZXRTZXNz
aW9uU3RvcmFnZU9yaWdpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKEhhc2hTZXQ8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYmKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3sKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzZXNzaW9uSUQsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8qIHN0b3Jh
Z2VNYW5hZ2VyID0gbV9zdG9yYWdlTWFuYWdlcnMuZ2V0KHNlc3Npb25JRCk7CisgICAgICAgIEFT
U0VSVChzdG9yYWdlTWFuYWdlcik7CisKKyAgICAgICAgc3RvcmFnZU1hbmFnZXItPmdldFNlc3Np
b25TdG9yYWdlT3JpZ2lucyhXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgfSk7Cit9
CisKK3ZvaWQgU3RvcmFnZU1hbmFnZXJTZXQ6OmRlbGV0ZVNlc3Npb25TdG9yYWdlKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQoreworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIHNlc3Npb25JRCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byogc3RvcmFnZU1hbmFn
ZXIgPSBtX3N0b3JhZ2VNYW5hZ2Vycy5nZXQoc2Vzc2lvbklEKTsKKyAgICAgICAgQVNTRVJUKHN0
b3JhZ2VNYW5hZ2VyKTsKKworICAgICAgICBzdG9yYWdlTWFuYWdlci0+ZGVsZXRlU2Vzc2lvblN0
b3JhZ2VPcmlnaW5zKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICB9KTsKK30KKwor
dm9pZCBTdG9yYWdlTWFuYWdlclNldDo6ZGVsZXRlU2Vzc2lvblN0b3JhZ2VGb3JPcmlnaW5zKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YT4mIG9yaWdpbkRhdGFzLCBEZWxldGVDYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVy
KQoreworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIHNlc3Npb25JRCwgY29waWVkT3JpZ2luRGF0YXMgPSBjcm9zc1RocmVhZENvcHko
b3JpZ2luRGF0YXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSgpIG11dGFibGUgeworICAgICAgICBhdXRvKiBzdG9yYWdlTWFuYWdlciA9IG1fc3RvcmFn
ZU1hbmFnZXJzLmdldChzZXNzaW9uSUQpOworICAgICAgICBBU1NFUlQoc3RvcmFnZU1hbmFnZXIp
OworCisgICAgICAgIHN0b3JhZ2VNYW5hZ2VyLT5kZWxldGVTZXNzaW9uU3RvcmFnZUVudHJpZXNG
b3JPcmlnaW5zKGNvcGllZE9yaWdpbkRhdGFzLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CisgICAgfSk7Cit9CisKK3ZvaWQgU3RvcmFnZU1hbmFnZXJTZXQ6OmdldExvY2FsU3RvcmFnZU9y
aWdpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBHZXRPcmlnaW5zQ2FsbGJhY2smJiBjb21w
bGV0aW9uSGFuZGxlcikKK3sKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzZXNzaW9uSUQsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8qIHN0b3Jh
Z2VNYW5hZ2VyID0gbV9zdG9yYWdlTWFuYWdlcnMuZ2V0KHNlc3Npb25JRCk7CisgICAgICAgIEFT
U0VSVChzdG9yYWdlTWFuYWdlcik7CisKKyAgICAgICAgc3RvcmFnZU1hbmFnZXItPmdldExvY2Fs
U3RvcmFnZU9yaWdpbnMoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIH0pOworfQor
Cit2b2lkIFN0b3JhZ2VNYW5hZ2VyU2V0OjpkZWxldGVMb2NhbFN0b3JhZ2VNb2RpZmllZFNpbmNl
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2FsbFRpbWUgdGltZSwgRGVsZXRlQ2FsbGJhY2sm
JiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzZXNzaW9uSUQsIHRpbWUsIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAg
IGF1dG8qIHN0b3JhZ2VNYW5hZ2VyID0gbV9zdG9yYWdlTWFuYWdlcnMuZ2V0KHNlc3Npb25JRCk7
CisgICAgICAgIEFTU0VSVChzdG9yYWdlTWFuYWdlcik7CisKKyAgICAgICAgc3RvcmFnZU1hbmFn
ZXItPmRlbGV0ZUxvY2FsU3RvcmFnZU9yaWdpbnNNb2RpZmllZFNpbmNlKHRpbWUsIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICB9KTsKK30KKwordm9pZCBTdG9yYWdlTWFuYWdlclNl
dDo6ZGVsZXRlTG9jYWxTdG9yYWdlRm9yT3JpZ2lucyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiBvcmlnaW5EYXRhcywg
RGVsZXRlQ2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBtX3F1ZXVlLT5kaXNw
YXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzZXNzaW9uSUQsIGNv
cGllZE9yaWdpbkRhdGFzID0gY3Jvc3NUaHJlYWRDb3B5KG9yaWdpbkRhdGFzKSwgY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAg
ICAgYXV0byogc3RvcmFnZU1hbmFnZXIgPSBtX3N0b3JhZ2VNYW5hZ2Vycy5nZXQoc2Vzc2lvbklE
KTsKKyAgICAgICAgQVNTRVJUKHN0b3JhZ2VNYW5hZ2VyKTsKKworICAgICAgICBzdG9yYWdlTWFu
YWdlci0+ZGVsZXRlTG9jYWxTdG9yYWdlRW50cmllc0Zvck9yaWdpbnMoY29waWVkT3JpZ2luRGF0
YXMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICB9KTsKK30KKwordm9pZCBTdG9y
YWdlTWFuYWdlclNldDo6Z2V0TG9jYWxTdG9yYWdlT3JpZ2luRGV0YWlscyhQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPExvY2FsU3RvcmFnZURh
dGFiYXNlVHJhY2tlcjo6T3JpZ2luRGV0YWlscz4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7
CisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgc2Vzc2lvbklELCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICBhdXRvKiBzdG9yYWdlTWFuYWdlciA9IG1fc3Rv
cmFnZU1hbmFnZXJzLmdldChzZXNzaW9uSUQpOworICAgICAgICBBU1NFUlQoc3RvcmFnZU1hbmFn
ZXIpOworCisgICAgICAgIHN0b3JhZ2VNYW5hZ2VyLT5nZXRMb2NhbFN0b3JhZ2VPcmlnaW5EZXRh
aWxzKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICB9KTsKK30KKwordm9pZCBTdG9y
YWdlTWFuYWdlclNldDo6Y29ubmVjdFRvTG9jYWxTdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3Qgc3RvcmFnZU5h
bWVzcGFjZUlELCBTZWN1cml0eU9yaWdpbkRhdGEmJiBvcmlnaW5EYXRhLCBDb25uZWN0VG9TdG9y
YWdlQXJlYUNhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJUKCFSdW5M
b29wOjppc01haW4oKSk7CisKKyAgICBhdXRvKiBzdG9yYWdlTWFuYWdlciA9IG1fc3RvcmFnZU1h
bmFnZXJzLmdldChzZXNzaW9uSUQpOworICAgIGlmICghc3RvcmFnZU1hbmFnZXIpIHsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoaW52YWxpZFN0b3JhZ2VBcmVhSUQpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgYXV0byogc3RvcmFnZUFyZWEgPSBzdG9yYWdlTWFuYWdlci0+Y3Jl
YXRlTG9jYWxTdG9yYWdlQXJlYShzdG9yYWdlTmFtZXNwYWNlSUQsIFdURk1vdmUob3JpZ2luRGF0
YSkpOworICAgIGlmICghc3RvcmFnZUFyZWEpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
aW52YWxpZFN0b3JhZ2VBcmVhSUQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0
byBzdG9yYWdlQXJlYUlEID0gc3RvcmFnZUFyZWEtPmlkZW50aWZpZXIoKTsKKyAgICBhdXRvW2l0
ZXIsIGlzTmV3RW50cnldID0gbV9zdG9yYWdlQXJlYXMuYWRkKHN0b3JhZ2VBcmVhSUQsIG51bGxw
dHIpOworICAgIGlmIChpc05ld0VudHJ5KSB7CisgICAgICAgIHN0b3JhZ2VBcmVhLT5zZXRXb3Jr
UXVldWUobV9xdWV1ZS5wdHIoKSk7CisgICAgICAgIGl0ZXItPnZhbHVlID0gc3RvcmFnZUFyZWE7
CisgICAgfSBlbHNlCisgICAgICAgIEFTU0VSVChzdG9yYWdlQXJlYSA9PSBpdGVyLT52YWx1ZSk7
CisKKyAgICBjb21wbGV0aW9uSGFuZGxlcihzdG9yYWdlQXJlYUlEKTsKKworICAgIHN0b3JhZ2VB
cmVhLT5hZGRMaXN0ZW5lcihjb25uZWN0aW9uLnVuaXF1ZUlEKCkpOworfQorCit2b2lkIFN0b3Jh
Z2VNYW5hZ2VyU2V0Ojpjb25uZWN0VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBz
dG9yYWdlTmFtZXNwYWNlSUQsIFNlY3VyaXR5T3JpZ2luRGF0YSYmIHRvcExldmVsT3JpZ2luRGF0
YSwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgb3JpZ2luRGF0YSwgQ29ubmVjdFRvU3RvcmFnZUFyZWFD
YWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNN
YWluKCkpOworCisgICAgYXV0byogc3RvcmFnZU1hbmFnZXIgPSBtX3N0b3JhZ2VNYW5hZ2Vycy5n
ZXQoc2Vzc2lvbklEKTsKKyAgICBpZiAoIXN0b3JhZ2VNYW5hZ2VyKSB7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKGludmFsaWRTdG9yYWdlQXJlYUlEKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGF1dG8qIHN0b3JhZ2VBcmVhID0gc3RvcmFnZU1hbmFnZXItPmNyZWF0ZVRyYW5z
aWVudExvY2FsU3RvcmFnZUFyZWEoc3RvcmFnZU5hbWVzcGFjZUlELCBXVEZNb3ZlKHRvcExldmVs
T3JpZ2luRGF0YSksIFdURk1vdmUob3JpZ2luRGF0YSkpOworICAgIGlmICghc3RvcmFnZUFyZWEp
IHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoaW52YWxpZFN0b3JhZ2VBcmVhSUQpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBzdG9yYWdlQXJlYUlEID0gc3RvcmFnZUFy
ZWEtPmlkZW50aWZpZXIoKTsKKyAgICBhdXRvW2l0ZXIsIGlzTmV3RW50cnldID0gbV9zdG9yYWdl
QXJlYXMuYWRkKHN0b3JhZ2VBcmVhSUQsIG51bGxwdHIpOworICAgIGlmIChpc05ld0VudHJ5KQor
ICAgICAgICBpdGVyLT52YWx1ZSA9IHN0b3JhZ2VBcmVhOworICAgIGVsc2UKKyAgICAgICAgQVNT
RVJUKHN0b3JhZ2VBcmVhID09IGl0ZXItPnZhbHVlKTsKKworICAgIGNvbXBsZXRpb25IYW5kbGVy
KHN0b3JhZ2VBcmVhSUQpOworCisgICAgc3RvcmFnZUFyZWEtPmFkZExpc3RlbmVyKGNvbm5lY3Rp
b24udW5pcXVlSUQoKSk7Cit9CisKK3ZvaWQgU3RvcmFnZU1hbmFnZXJTZXQ6OmNvbm5lY3RUb1Nl
c3Npb25TdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgdWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBTZWN1cml0eU9yaWdp
bkRhdGEmJiBvcmlnaW5EYXRhLCBDb25uZWN0VG9TdG9yYWdlQXJlYUNhbGxiYWNrJiYgY29tcGxl
dGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBh
dXRvKiBzdG9yYWdlTWFuYWdlciA9IG1fc3RvcmFnZU1hbmFnZXJzLmdldChzZXNzaW9uSUQpOwor
ICAgIGlmICghc3RvcmFnZU1hbmFnZXIpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoaW52
YWxpZFN0b3JhZ2VBcmVhSUQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byog
c3RvcmFnZUFyZWEgPSBzdG9yYWdlTWFuYWdlci0+Y3JlYXRlU2Vzc2lvblN0b3JhZ2VBcmVhKHN0
b3JhZ2VOYW1lc3BhY2VJRCwgV1RGTW92ZShvcmlnaW5EYXRhKSk7CisgICAgaWYgKCFzdG9yYWdl
QXJlYSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihpbnZhbGlkU3RvcmFnZUFyZWFJRCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIHN0b3JhZ2VBcmVhSUQgPSBzdG9y
YWdlQXJlYS0+aWRlbnRpZmllcigpOworICAgIGF1dG9baXRlciwgaXNOZXdFbnRyeV0gPSBtX3N0
b3JhZ2VBcmVhcy5hZGQoc3RvcmFnZUFyZWFJRCwgbnVsbHB0cik7CisgICAgaWYgKGlzTmV3RW50
cnkpCisgICAgICAgIGl0ZXItPnZhbHVlID0gc3RvcmFnZUFyZWE7CisgICAgZWxzZQorICAgICAg
ICBBU1NFUlQoc3RvcmFnZUFyZWEgPT0gaXRlci0+dmFsdWUpOworCisgICAgY29tcGxldGlvbkhh
bmRsZXIoc3RvcmFnZUFyZWFJRCk7CisgICAgCisgICAgc3RvcmFnZUFyZWEtPmFkZExpc3RlbmVy
KGNvbm5lY3Rpb24udW5pcXVlSUQoKSk7Cit9CisKK3ZvaWQgU3RvcmFnZU1hbmFnZXJTZXQ6OmRp
c2Nvbm5lY3RGcm9tU3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCB1aW50
NjRfdCBzdG9yYWdlQXJlYUlEKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwor
CisgICAgYXV0byogc3RvcmFnZUFyZWEgPSBtX3N0b3JhZ2VBcmVhcy5nZXQoc3RvcmFnZUFyZWFJ
RCk7CisgICAgQVNTRVJUKHN0b3JhZ2VBcmVhKTsKKyAgICBBU1NFUlQoc3RvcmFnZUFyZWEtPmhh
c0xpc3RlbmVyKGNvbm5lY3Rpb24udW5pcXVlSUQoKSkpOworCisgICAgc3RvcmFnZUFyZWEtPnJl
bW92ZUxpc3RlbmVyKGNvbm5lY3Rpb24udW5pcXVlSUQoKSk7Cit9CisKK3ZvaWQgU3RvcmFnZU1h
bmFnZXJTZXQ6OmdldFZhbHVlcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVpbnQ2NF90
IHN0b3JhZ2VBcmVhSUQsIEdldFZhbHVlc0NhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCit7
CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBhdXRvKiBzdG9yYWdlQXJl
YSA9IG1fc3RvcmFnZUFyZWFzLmdldChzdG9yYWdlQXJlYUlEKTsKKyAgICBBU1NFUlQoIXN0b3Jh
Z2VBcmVhIHx8IHN0b3JhZ2VBcmVhLT5oYXNMaXN0ZW5lcihjb25uZWN0aW9uLnVuaXF1ZUlEKCkp
KTsKKworICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0b3JhZ2VBcmVhID8gc3RvcmFnZUFyZWEtPml0
ZW1zKCkgOiBIYXNoTWFwPFN0cmluZywgU3RyaW5nPigpKTsKK30KKwordm9pZCBTdG9yYWdlTWFu
YWdlclNldDo6c2V0SXRlbShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVpbnQ2NF90IHN0
b3JhZ2VBcmVhSUQsIHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIHVpbnQ2NF90IHN0b3Jh
Z2VNYXBTZWVkLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgY29uc3Qg
U3RyaW5nJiB1cmxTdHJpbmcpCit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisK
KyAgICBhdXRvKiBzdG9yYWdlQXJlYSA9IG1fc3RvcmFnZUFyZWFzLmdldChzdG9yYWdlQXJlYUlE
KTsKKyAgICBBU1NFUlQoc3RvcmFnZUFyZWEpOworCisgICAgYm9vbCBxdW90YUVycm9yOworICAg
IHN0b3JhZ2VBcmVhLT5zZXRJdGVtKGNvbm5lY3Rpb24udW5pcXVlSUQoKSwgc291cmNlU3RvcmFn
ZUFyZWFJRCwga2V5LCB2YWx1ZSwgdXJsU3RyaW5nLCBxdW90YUVycm9yKTsKKworICAgIGNvbm5l
Y3Rpb24uc2VuZChNZXNzYWdlczo6U3RvcmFnZUFyZWFNYXA6OkRpZFNldEl0ZW0oc3RvcmFnZU1h
cFNlZWQsIGtleSwgcXVvdGFFcnJvciksIHN0b3JhZ2VBcmVhSUQpOworfSAKKwordm9pZCBTdG9y
YWdlTWFuYWdlclNldDo6cmVtb3ZlSXRlbShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVp
bnQ2NF90IHN0b3JhZ2VBcmVhSUQsIHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIHVpbnQ2
NF90IHN0b3JhZ2VNYXBTZWVkLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB1cmxT
dHJpbmcpCit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBhdXRvKiBz
dG9yYWdlQXJlYSA9IG1fc3RvcmFnZUFyZWFzLmdldChzdG9yYWdlQXJlYUlEKTsKKyAgICBBU1NF
UlQoc3RvcmFnZUFyZWEpOworCisgICAgc3RvcmFnZUFyZWEtPnJlbW92ZUl0ZW0oY29ubmVjdGlv
bi51bmlxdWVJRCgpLCBzb3VyY2VTdG9yYWdlQXJlYUlELCBrZXksIHVybFN0cmluZyk7CisKKyAg
ICBjb25uZWN0aW9uLnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VBcmVhTWFwOjpEaWRSZW1vdmVJdGVt
KHN0b3JhZ2VNYXBTZWVkLCBrZXkpLCBzdG9yYWdlQXJlYUlEKTsKK30KKwordm9pZCBTdG9yYWdl
TWFuYWdlclNldDo6Y2xlYXIoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCB1aW50NjRfdCBz
dG9yYWdlQXJlYUlELCB1aW50NjRfdCBzb3VyY2VTdG9yYWdlQXJlYUlELCB1aW50NjRfdCBzdG9y
YWdlTWFwU2VlZCwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCit7CisgICAgQVNTRVJUKCFSdW5M
b29wOjppc01haW4oKSk7CisKKyAgICBhdXRvKiBzdG9yYWdlQXJlYSA9IG1fc3RvcmFnZUFyZWFz
LmdldChzdG9yYWdlQXJlYUlEKTsKKyAgICBBU1NFUlQoc3RvcmFnZUFyZWEpOworCisgICAgc3Rv
cmFnZUFyZWEtPmNsZWFyKGNvbm5lY3Rpb24udW5pcXVlSUQoKSwgc291cmNlU3RvcmFnZUFyZWFJ
RCwgdXJsU3RyaW5nKTsKKworICAgIGNvbm5lY3Rpb24uc2VuZChNZXNzYWdlczo6U3RvcmFnZUFy
ZWFNYXA6OkRpZENsZWFyKHN0b3JhZ2VNYXBTZWVkKSwgc3RvcmFnZUFyZWFJRCk7Cit9CisKK3Zv
aWQgU3RvcmFnZU1hbmFnZXJTZXQ6OmNsb25lU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoSVBDOjpD
b25uZWN0aW9uJiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBmcm9tU3RvcmFn
ZU5hbWVzcGFjZUlELCB1aW50NjRfdCB0b1N0b3JhZ2VOYW1lc3BhY2VJRCkKK3sKKyAgICBBU1NF
UlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIGlmIChhdXRvKiBzdG9yYWdlTWFuYWdlciA9
IG1fc3RvcmFnZU1hbmFnZXJzLmdldChzZXNzaW9uSUQpKQorICAgICAgICBzdG9yYWdlTWFuYWdl
ci0+Y2xvbmVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShmcm9tU3RvcmFnZU5hbWVzcGFjZUlELCB0
b1N0b3JhZ2VOYW1lc3BhY2VJRCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5h
Z2VyU2V0LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFn
ZU1hbmFnZXJTZXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NzAzMmFjM2UyYWM4NmY5OGM5MDkwYzI2ZTk4ZjVj
YTA3ODBlMWIyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0LmgKQEAgLTAsMCArMSwxMDMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKKyNpbmNsdWRlICJTdG9yYWdlTWFuYWdlci5o
IgorI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+CisjaW5jbHVkZSA8cGFs
L1Nlc3Npb25JRC5oPgorCit1c2luZyBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE7CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBTYW5kYm94RXh0ZW5zaW9uOworCit1c2luZyBDb25u
ZWN0VG9TdG9yYWdlQXJlYUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRf
dCk+OwordXNpbmcgR2V0VmFsdWVzQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+Jik+OwordXNpbmcgR2V0T3JpZ2luc0NhbGxiYWNr
ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0PFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YT4mJik+OwordXNpbmcgR2V0T3JpZ2luRGV0YWlsc0NhbGxiYWNrID0gQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChWZWN0b3I8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpPcmlnaW5EZXRh
aWxzPiYmKT47Cit1c2luZyBEZWxldGVDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT47CisKK2NsYXNzIFN0b3JhZ2VNYW5hZ2VyU2V0IDogcHVibGljIElQQzo6Q29ubmVjdGlvbjo6
V29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFN0b3Jh
Z2VNYW5hZ2VyU2V0PiBjcmVhdGUoKTsKKyAgICBTdG9yYWdlTWFuYWdlclNldCgpOworICAgIH5T
dG9yYWdlTWFuYWdlclNldCgpOworCisgICAgdm9pZCBhZGQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFN0cmluZyYgbG9jYWxTdG9yYWdlRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUm
IGxvY2FsU3RvcmFnZURpcmVjdG9yeUhhbmRsZSk7CisgICAgdm9pZCByZW1vdmUoUEFMOjpTZXNz
aW9uSUQpOworICAgIGJvb2wgY29udGFpbnMoUEFMOjpTZXNzaW9uSUQpOworCisgICAgdm9pZCBh
ZGRDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiYpOworICAgIHZvaWQgcmVtb3ZlQ29ubmVjdGlv
bihJUEM6OkNvbm5lY3Rpb24mKTsKKworICAgIHZvaWQgd2FpdFVudGlsVGFza3NGaW5pc2hlZCgp
OworICAgIHZvaWQgd2FpdFVudGlsU3luY2luZ0xvY2FsU3RvcmFnZUZpbmlzaGVkKCk7CisgICAg
dm9pZCBzdXNwZW5kKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCByZXN1
bWUoKTsKKworICAgIHZvaWQgZ2V0U2Vzc2lvblN0b3JhZ2VPcmlnaW5zKFBBTDo6U2Vzc2lvbklE
LCBHZXRPcmlnaW5zQ2FsbGJhY2smJik7CisgICAgdm9pZCBkZWxldGVTZXNzaW9uU3RvcmFnZShQ
QUw6OlNlc3Npb25JRCwgRGVsZXRlQ2FsbGJhY2smJik7CisgICAgdm9pZCBkZWxldGVTZXNzaW9u
U3RvcmFnZUZvck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGE+JiwgRGVsZXRlQ2FsbGJhY2smJik7CisgICAgdm9pZCBnZXRMb2Nh
bFN0b3JhZ2VPcmlnaW5zKFBBTDo6U2Vzc2lvbklELCBHZXRPcmlnaW5zQ2FsbGJhY2smJik7Cisg
ICAgdm9pZCBkZWxldGVMb2NhbFN0b3JhZ2VNb2RpZmllZFNpbmNlKFBBTDo6U2Vzc2lvbklELCBX
YWxsVGltZSwgRGVsZXRlQ2FsbGJhY2smJik7CisgICAgdm9pZCBkZWxldGVMb2NhbFN0b3JhZ2VG
b3JPcmlnaW5zKFBBTDo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhPiYsIERlbGV0ZUNhbGxiYWNrJiYpOworICAgIHZvaWQgZ2V0TG9jYWxTdG9yYWdl
T3JpZ2luRGV0YWlscyhQQUw6OlNlc3Npb25JRCwgR2V0T3JpZ2luRGV0YWlsc0NhbGxiYWNrJiYp
OworCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRl
Y29kZXImKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNv
ZGVyKTsKKworcHJpdmF0ZToKKyAgICAvLyBNZXNzYWdlIEhhbmRsZXJzCisgICAgdm9pZCBjb25u
ZWN0VG9Mb2NhbFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbiYsIFBBTDo6U2Vzc2lvbklEICwg
dWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBTZWN1cml0eU9yaWdpbkRhdGEmJiwgQ29ubmVj
dFRvU3RvcmFnZUFyZWFDYWxsYmFjayYmKTsKKyAgICB2b2lkIGNvbm5lY3RUb1RyYW5zaWVudExv
Y2FsU3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uJiwgUEFMOjpTZXNzaW9uSUQgLCB1aW50NjRf
dCBzdG9yYWdlTmFtZXNwYWNlSUQsIFNlY3VyaXR5T3JpZ2luRGF0YSYmLCBTZWN1cml0eU9yaWdp
bkRhdGEmJiwgQ29ubmVjdFRvU3RvcmFnZUFyZWFDYWxsYmFjayYmKTsKKyAgICB2b2lkIGNvbm5l
Y3RUb1Nlc3Npb25TdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb24mLCBQQUw6OlNlc3Npb25JRCwg
dWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBTZWN1cml0eU9yaWdpbkRhdGEmJiwgQ29ubmVj
dFRvU3RvcmFnZUFyZWFDYWxsYmFjayYmKTsKKyAgICB2b2lkIGRpc2Nvbm5lY3RGcm9tU3RvcmFn
ZUFyZWEoSVBDOjpDb25uZWN0aW9uJiwgdWludDY0X3Qgc3RvcmFnZUFyZWFJRCk7CisgICAgdm9p
ZCBnZXRWYWx1ZXMoSVBDOjpDb25uZWN0aW9uJiwgdWludDY0X3Qgc3RvcmFnZUFyZWFJRCwgR2V0
VmFsdWVzQ2FsbGJhY2smJik7CisgICAgdm9pZCBzZXRJdGVtKElQQzo6Q29ubmVjdGlvbiYsIHVp
bnQ2NF90IHN0b3JhZ2VBcmVhSUQsIHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIHVpbnQ2
NF90IHN0b3JhZ2VNYXBTZWVkLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1
ZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpOworICAgIHZvaWQgcmVtb3ZlSXRlbShJUEM6OkNv
bm5lY3Rpb24mLCB1aW50NjRfdCBzdG9yYWdlQXJlYUlELCB1aW50NjRfdCBzb3VyY2VTdG9yYWdl
QXJlYUlELCB1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0
IFN0cmluZyYgdXJsU3RyaW5nKTsKKyAgICB2b2lkIGNsZWFyKElQQzo6Q29ubmVjdGlvbiYsIHVp
bnQ2NF90IHN0b3JhZ2VBcmVhSUQsIHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIHVpbnQ2
NF90IHN0b3JhZ2VNYXBTZWVkLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZyk7CisgICAgdm9pZCBj
bG9uZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKElQQzo6Q29ubmVjdGlvbiYsIFBBTDo6U2Vzc2lv
bklELCB1aW50NjRfdCBmcm9tU3RvcmFnZU5hbWVzcGFjZUlELCB1aW50NjRfdCB0b1N0b3JhZ2VO
YW1lc3BhY2VJRCk7CisKKyAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBSZWZQdHI8U3RvcmFn
ZU1hbmFnZXI+PiBtX3N0b3JhZ2VNYW5hZ2VyczsKKyAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklE
LCBTdHJpbmc+IG1fc3RvcmFnZU1hbmFnZXJQYXRoczsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBT
dG9yYWdlQXJlYSo+IG1fc3RvcmFnZUFyZWFzOworCisgICAgSGFzaFNldDxJUEM6OkNvbm5lY3Rp
b246OlVuaXF1ZUlEPiBtX2Nvbm5lY3Rpb25zOworICAgIFJlZjxXb3JrUXVldWU+IG1fcXVldWU7
CisKKyAgICBlbnVtIGNsYXNzIFN0YXRlIHsKKyAgICAgICAgUnVubmluZywKKyAgICAgICAgV2ls
bFN1c3BlbmQsCisgICAgICAgIFN1c3BlbmRlZAorICAgIH07CisgICAgU3RhdGUgbV9zdGF0ZSB7
IFN0YXRlOjpSdW5uaW5nIH07CisgICAgTG9jayBtX3N0YXRlTG9jazsKKyAgICBDb25kaXRpb24g
bV9zdGF0ZUNoYW5nZUNvbmRpdGlvbjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VN
YW5hZ2VyU2V0Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJT
dG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0Lm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUwYzEzYTAw
YmMzNWI5MTVmZWFkODQwMDVkYTM0N2QyN2M3ZDE3ZDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQubWVz
c2FnZXMuaW4KQEAgLTAsMCArMSwzNCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFy
ZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IK
KyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCittZXNzYWdlcyAtPiBTdG9yYWdlTWFuYWdlclNldCB7CisgICAgQ29ubmVjdFRv
TG9jYWxTdG9yYWdlQXJlYShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHN0b3Jh
Z2VOYW1lc3BhY2VJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBzZWN1cml0
eU9yaWdpbkRhdGEpIC0+ICh1aW50NjRfdCBzdG9yYWdlQXJlYUlEKSBTeW5jaHJvbm91cyBXYW50
c0Nvbm5lY3Rpb24KKyAgICBDb25uZWN0VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBzdHJ1Y3Qg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHRvcExldmVsU2VjdXJpdHlPcmlnaW5EYXRhLCBz
dHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHNlY3VyaXR5T3JpZ2luRGF0YSkgLT4g
KHVpbnQ2NF90IHN0b3JhZ2VBcmVhSUQpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgorICAg
IENvbm5lY3RUb1Nlc3Npb25TdG9yYWdlQXJlYShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVp
bnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSBzZWN1cml0eU9yaWdpbkRhdGEpIC0+ICh1aW50NjRfdCBzdG9yYWdlQXJlYUlEKSBTeW5j
aHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KKyAgICBEaXNjb25uZWN0RnJvbVN0b3JhZ2VBcmVhKHVp
bnQ2NF90IHN0b3JhZ2VBcmVhSUQpIFdhbnRzQ29ubmVjdGlvbgorICAgIEdldFZhbHVlcyh1aW50
NjRfdCBzdG9yYWdlQXJlYUlEKSAtPiAoSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gdmFsdWVzKSBT
eW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KKyAgICBDbG9uZVNlc3Npb25TdG9yYWdlTmFtZXNw
YWNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgZnJvbVN0b3JhZ2VOYW1lc3Bh
Y2VJRCwgdWludDY0X3QgdG9TdG9yYWdlTmFtZXNwYWNlSUQpIFdhbnRzQ29ubmVjdGlvbgorCisg
ICAgU2V0SXRlbSh1aW50NjRfdCBzdG9yYWdlQXJlYUlELCB1aW50NjRfdCBzb3VyY2VTdG9yYWdl
QXJlYUlELCB1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCwgU3RyaW5nIGtleSwgU3RyaW5nIHZhbHVl
LCBTdHJpbmcgdXJsU3RyaW5nKSBXYW50c0Nvbm5lY3Rpb24KKyAgICBSZW1vdmVJdGVtKHVpbnQ2
NF90IHN0b3JhZ2VBcmVhSUQsIHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIHVpbnQ2NF90
IHN0b3JhZ2VNYXBTZWVkLCBTdHJpbmcga2V5LCBTdHJpbmcgdXJsU3RyaW5nKSBXYW50c0Nvbm5l
Y3Rpb24KKyAgICBDbGVhcih1aW50NjRfdCBzdG9yYWdlQXJlYUlELCB1aW50NjRfdCBzb3VyY2VT
dG9yYWdlQXJlYUlELCB1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCwgU3RyaW5nIHVybFN0cmluZykg
V2FudHNDb25uZWN0aW9uCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJz
aXRlRGF0YVN0b3JlUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRl
RGF0YVN0b3JlUGFyYW1ldGVycy5jcHAKaW5kZXggZDkxYTM0ZjZhOTI3MjVjMTQxNzczZjA4YWI0
MjllN2U4ZTU4NjNjMy4uZjE4ZGQxNmJlMjZhNzhmZjBlODYyMzk2OTk0MzY2MjY1YjFhODJkNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRl
cnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0
ZXJzLmNwcApAQCAtNTMsNiArNTMsOCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJz
OjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgc2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSA8PCBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogI2VuZGlmCiAKKyAgICBlbmNvZGVyIDw8IGxv
Y2FsU3RvcmFnZURpcmVjdG9yeSA8PCBsb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5k
bGU7CisKICAgICBlbmNvZGVyIDw8IHBlck9yaWdpblN0b3JhZ2VRdW90YTsKICAgICBlbmNvZGVy
IDw8IHBlclRoaXJkUGFydHlPcmlnaW5TdG9yYWdlUXVvdGE7CiB9CkBAIC0xMjEsNiArMTIzLDE4
IEBAIE9wdGlvbmFsPFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzPiBXZWJzaXRlRGF0YVN0b3Jl
UGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjCiAgICAgcGFyYW1ldGVycy5zZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgqc2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAjZW5kaWYKIAorICAg
IE9wdGlvbmFsPFN0cmluZz4gbG9jYWxTdG9yYWdlRGlyZWN0b3J5OworICAgIGRlY29kZXIgPj4g
bG9jYWxTdG9yYWdlRGlyZWN0b3J5OworICAgIGlmICghbG9jYWxTdG9yYWdlRGlyZWN0b3J5KQor
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHBhcmFtZXRlcnMubG9jYWxTdG9yYWdl
RGlyZWN0b3J5ID0gV1RGTW92ZSgqbG9jYWxTdG9yYWdlRGlyZWN0b3J5KTsKKworICAgIE9wdGlv
bmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gbG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5z
aW9uSGFuZGxlOworICAgIGRlY29kZXIgPj4gbG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9u
SGFuZGxlOworICAgIGlmICghbG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKQor
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHBhcmFtZXRlcnMubG9jYWxTdG9yYWdl
RGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgqbG9jYWxTdG9yYWdlRGlyZWN0b3J5
RXh0ZW5zaW9uSGFuZGxlKTsKKwogICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwZXJPcmlnaW5TdG9y
YWdlUXVvdGE7CiAgICAgZGVjb2RlciA+PiBwZXJPcmlnaW5TdG9yYWdlUXVvdGE7CiAgICAgaWYg
KCFwZXJPcmlnaW5TdG9yYWdlUXVvdGEpCkBAIC0xNDksNiArMTYzLDcgQEAgV2Vic2l0ZURhdGFT
dG9yZVBhcmFtZXRlcnMgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM6OnByaXZhdGVTZXNzaW9u
UGFyYW1ldGVycygKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgICAgICwgeyB9LCB7
IH0KICNlbmRpZgorICAgICAgICAsIHsgfSwgeyB9CiAgICAgfTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmgKaW5kZXggOTkyZmVl
OTdkMDk5NzRjOWYzNDdmNmM3MGRhYTFjZWJmM2UyZjI0Zi4uNmZlY2UzZjE1NGZlOWQ3ZmI5OGJm
Yzk3ZDliMWI3YmZmNDI0ZjM5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
c2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJz
aXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oCkBAIC03MCw2ICs3MCw5IEBAIHN0cnVjdCBXZWJzaXRl
RGF0YVN0b3JlUGFyYW1ldGVycyB7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAjZW5kaWYKIAor
ICAgIFN0cmluZyBsb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7CisgICAgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlIGxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKKwogICAgIHVpbnQ2
NF90IHBlck9yaWdpblN0b3JhZ2VRdW90YSB7IFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6
OmRlZmF1bHRRdW90YSgpIH07CiAgICAgdWludDY0X3QgcGVyVGhpcmRQYXJ0eU9yaWdpblN0b3Jh
Z2VRdW90YSB7IFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6OmRlZmF1bHRUaGlyZFBhcnR5
UXVvdGEoKSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9T
b3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDRiYzIwZmQ1MzE2Y2MwM2YyOTdkOTRlYjIx
YTRlNjJjNWFjYzI0MmQuLmI0NjZkMmM3NDg5ZTYyZDU3ZjA3ODRjZDk3NmUyMTg1NjQ1MTY0NDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktp
dC9Tb3VyY2VzLnR4dApAQCAtNzAsNiArNzAsNyBAQCBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdl
L0xvY2FsU3RvcmFnZU5hbWVzcGFjZS5jcHAKIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU2Vz
c2lvblN0b3JhZ2VOYW1lc3BhY2UuY3BwCiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3Jh
Z2VBcmVhLmNwcAogTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAK
K05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQuY3BwCiBOZXR3b3Jr
UHJvY2Vzcy9XZWJTdG9yYWdlL1RyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZS5jcHAKIAog
TmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKaW5kZXggZDBlYjMxYWUxNjkwMDU3NzJh
NmJlYzE0MzdjMmI0MzBkMGNiNGU2ZC4uZDgzYzZiOGY5ODA2OTYwMzYyNzZjYmFlZmQ1NDJkOGE2
ZmQwY2QwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3Bw
CkBAIC02NjksMyArNjY5LDE5IEBAIHZvaWQgV0tDb250ZXh0Q2xlYXJDdXJyZW50TW9kaWZpZXJT
dGF0ZUZvclRlc3RpbmcoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYpCiB7CiAgICAgV2ViS2l0Ojp0
b0ltcGwoY29udGV4dFJlZiktPmNsZWFyQ3VycmVudE1vZGlmaWVyU3RhdGVGb3JUZXN0aW5nKCk7
CiB9CisKK3ZvaWQgV0tDb250ZXh0U3luY0xvY2FsU3RvcmFnZShXS0NvbnRleHRSZWYgY29udGV4
dFJlZiwgdm9pZCogY29udGV4dCwgV0tDb250ZXh0U3luY0xvY2FsU3RvcmFnZUNhbGxiYWNrIGNh
bGxiYWNrKQoreworICAgIFdlYktpdDo6dG9JbXBsKGNvbnRleHRSZWYpLT5zeW5jTG9jYWxTdG9y
YWdlKFtjb250ZXh0LCBjYWxsYmFja10geworICAgICAgICBpZiAoY2FsbGJhY2spCisgICAgICAg
ICAgICBjYWxsYmFjayhjb250ZXh0KTsKKyAgICB9KTsKK30KKwordm9pZCBXS0NvbnRleHRDbGVh
ckxlZ2FjeVByaXZhdGVCcm93c2luZ0xvY2FsU3RvcmFnZShXS0NvbnRleHRSZWYgY29udGV4dFJl
Ziwgdm9pZCogY29udGV4dCwgV0tDb250ZXh0Q2xlYXJMZWdhY3lQcml2YXRlQnJvd3NpbmdMb2Nh
bFN0b3JhZ2VDYWxsYmFjayBjYWxsYmFjaykKK3sKKyAgICBXZWJLaXQ6OnRvSW1wbChjb250ZXh0
UmVmKS0+Y2xlYXJMZWdhY3lQcml2YXRlQnJvd3NpbmdMb2NhbFN0b3JhZ2UoW2NvbnRleHQsIGNh
bGxiYWNrXSB7CisgICAgICAgIGlmIChjYWxsYmFjaykKKyAgICAgICAgICAgIGNhbGxiYWNrKGNv
bnRleHQpOworICAgIH0pOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tDb250ZXh0UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tDb250ZXh0UHJpdmF0ZS5oCmluZGV4IGY5YzdkMzI5NmU1YzBjZDdmMzM2N2RlMzlhMDMxZDI4
M2ZiZTY2NjYuLjU4ZjFhOTIwOTkxMzU0ZjA3MGY2NWI5ZDNkYTFiYTA3YmY4MzVjMjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dFByaXZhdGUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRQcml2YXRlLmgKQEAg
LTEyMCw2ICsxMjAsMTIgQEAgV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0SURCUGVyT3JpZ2lu
UXVvdGEoV0tDb250ZXh0UmVmIGNvbnRleHQsIHVpbnQ2NF90IHF1b3QKIAogV0tfRVhQT1JUIHZv
aWQgV0tDb250ZXh0Q2xlYXJDdXJyZW50TW9kaWZpZXJTdGF0ZUZvclRlc3RpbmcoV0tDb250ZXh0
UmVmIGNvbnRleHQpOwogCit0eXBlZGVmIHZvaWQgKCpXS0NvbnRleHRTeW5jTG9jYWxTdG9yYWdl
Q2FsbGJhY2spKHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7CitXS19FWFBPUlQgdm9pZCBXS0NvbnRl
eHRTeW5jTG9jYWxTdG9yYWdlKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCB2b2lkKiBjb250ZXh0
LCBXS0NvbnRleHRTeW5jTG9jYWxTdG9yYWdlQ2FsbGJhY2sgY2FsbGJhY2spOworCit0eXBlZGVm
IHZvaWQgKCpXS0NvbnRleHRDbGVhckxlZ2FjeVByaXZhdGVCcm93c2luZ0xvY2FsU3RvcmFnZUNh
bGxiYWNrKSh2b2lkKiBmdW5jdGlvbkNvbnRleHQpOworV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0
Q2xlYXJMZWdhY3lQcml2YXRlQnJvd3NpbmdMb2NhbFN0b3JhZ2UoV0tDb250ZXh0UmVmIGNvbnRl
eHRSZWYsIHZvaWQqIGNvbnRleHQsIFdLQ29udGV4dENsZWFyTGVnYWN5UHJpdmF0ZUJyb3dzaW5n
TG9jYWxTdG9yYWdlQ2FsbGJhY2sgY2FsbGJhY2spOworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0K
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJz
aXRlRGF0YVN0b3JlUmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vi
c2l0ZURhdGFTdG9yZVJlZi5jcHAKaW5kZXggOTZiMjMzNzQyYzA5YWI2MzNkZWVkNDM5NDc5MGZl
MWE0MzZiMmRjYy4uOGZhYTc2ZjNhNDhhYzhiZTkzZjdiZjM3ODBjYzQ0MzRjNjA2OTU2ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRh
U3RvcmVSZWYuY3BwCkBAIC01MzEsNiArNTMxLDE1IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3Jl
UmVtb3ZlQWxsSW5kZXhlZERhdGFiYXNlcyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3Jl
CiAgICAgfSk7CiB9CiAKK3ZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlTG9jYWxTdG9yYWdl
KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vi
c2l0ZURhdGFTdG9yZVJlbW92ZUxvY2FsU3RvcmFnZUNhbGxiYWNrIGNhbGxiYWNrKQoreworICAg
IE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzID0gV2ViS2l0OjpX
ZWJzaXRlRGF0YVR5cGU6OkxvY2FsU3RvcmFnZTsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3Rv
cmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVtb3ZlRGF0YShkYXRhVHlwZXMsIC1XYWxsVGlt
ZTo6aW5maW5pdHkoKSwgW2NvbnRleHQsIGNhbGxiYWNrXSB7CisgICAgICAgIGlmIChjYWxsYmFj
aykKKyAgICAgICAgICAgIGNhbGxiYWNrKGNvbnRleHQpOworICAgIH0pOworfQorCiB2b2lkIFdL
V2Vic2l0ZURhdGFTdG9yZVJlbW92ZUFsbFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zKFdLV2Vi
c2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURh
dGFTdG9yZVJlbW92ZUFsbFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zQ2FsbGJhY2sgY2FsbGJh
Y2spCiB7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAppbmRleCBjZGUxNGNh
ODY3ZTA3YzI3NDU4YWEyNjUwMTdmNzFhYWM5ZDBmYzViLi43ZGVjOTJhMmIxN2M2ZWRjNzkzOTAz
Y2Q4M2E4OGNmMTc1ZGMzYmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaApAQCAtMTIxLDYgKzEyMSw5IEBAIFdLX0VY
UE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUFsbEluZGV4ZWREYXRhYmFzZXMoV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmCiB0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVHZXRG
ZXRjaENhY2hlT3JpZ2luc0Z1bmN0aW9uKShXS0FycmF5UmVmLCB2b2lkKik7CiBXS19FWFBPUlQg
dm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVHZXRGZXRjaENhY2hlT3JpZ2lucyhXS1dlYnNpdGVEYXRh
U3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVH
ZXRGZXRjaENhY2hlT3JpZ2luc0Z1bmN0aW9uIGZ1bmN0aW9uKTsKIAordHlwZWRlZiB2b2lkICgq
V0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlTG9jYWxTdG9yYWdlQ2FsbGJhY2spKHZvaWQqIGZ1bmN0
aW9uQ29udGV4dCk7CitXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVMb2Nh
bFN0b3JhZ2UoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCogY29udGV4
dCwgV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlTG9jYWxTdG9yYWdlQ2FsbGJhY2sgY2FsbGJhY2sp
OworCiB0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVHZXRGZXRjaENhY2hlU2l6ZUZv
ck9yaWdpbkZ1bmN0aW9uKSh1aW50NjRfdCwgdm9pZCopOwogV0tfRVhQT1JUIHZvaWQgV0tXZWJz
aXRlRGF0YVN0b3JlR2V0RmV0Y2hDYWNoZVNpemVGb3JPcmlnaW4oV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgb3JpZ2luLCB2b2lkKiBjb250ZXh0LCBXS1dl
YnNpdGVEYXRhU3RvcmVHZXRGZXRjaENhY2hlU2l6ZUZvck9yaWdpbkZ1bmN0aW9uIGZ1bmN0aW9u
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDM2
MzY3ZjAwNGNmMWUyMTY1ZDI3YjZhZThlNmZjYjVkYzZmOTEzOGMuLmI5NzY3OTEwNTRiODI5NGQ5
Zjc5ZTlmMGFhNGI5NmFiYTExNDM3YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5jcHAKQEAgLTU4Myw4ICs1ODMsOCBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBX
ZWJQcm9jZXNzUG9vbDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSogd2l0
aAogICAgIGF1dG8gbG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gbV93ZWJzaXRlRGF0YVN0b3JlID8g
bV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVzb2x2ZWRMb2NhbFN0b3Jh
Z2VEaXJlY3RvcnkoKSA6IG51bGxTdHJpbmcoKTsKICAgICBpZiAoIWxvY2FsU3RvcmFnZURpcmVj
dG9yeSkKICAgICAgICAgbG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gQVBJOjpXZWJzaXRlRGF0YVN0
b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAgcGFyYW1ldGVycy5kZWZh
dWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMubG9jYWxTdG9y
YWdlRGlyZWN0b3J5ID0gbG9jYWxTdG9yYWdlRGlyZWN0b3J5OwotICAgIFNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShsb2NhbFN0b3JhZ2VEaXJlY3Rv
cnksIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25Q
YXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CisgICAgcGFy
YW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3Rvcnkg
PSBsb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7CisgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFu
ZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KGxvY2FsU3RvcmFnZURpcmVjdG9yeSwgcGFyYW1ldGVy
cy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNp
b25IYW5kbGUpOwogCiAgICAgaWYgKG1fd2Vic2l0ZURhdGFTdG9yZSkKICAgICAgICAgcGFyYW1l
dGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMu
cmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+d2Vi
c2l0ZURhdGFTdG9yZSgpLnJlc29sdmVkUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgp
OwpAQCAtMTgwOSw2ICsxODA5LDE5IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldElEQlBlck9y
aWdpblF1b3RhKHVpbnQ2NF90IHF1b3RhKQogI2VuZGlmCiB9CiAKK3ZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OnN5bmNMb2NhbFN0b3JhZ2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQoreworICAgIHNlbmRTeW5jVG9OZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6
TmV0d29ya1Byb2Nlc3M6OlN5bmNMb2NhbFN0b3JhZ2UoKSwgTWVzc2FnZXM6Ok5ldHdvcmtQcm9j
ZXNzOjpTeW5jTG9jYWxTdG9yYWdlOjpSZXBseSgpKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcigp
OworfQorCit2b2lkIFdlYlByb2Nlc3NQb29sOjpjbGVhckxlZ2FjeVByaXZhdGVCcm93c2luZ0xv
Y2FsU3RvcmFnZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit7CisgICAgaWYgKG1fbmV0d29ya1Byb2Nlc3MpCisgICAgICAgIG1fbmV0d29ya1Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpDbGVhckxlZ2FjeVByaXZhdGVCcm93c2lu
Z0xvY2FsU3RvcmFnZSgpLCAwKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOworfQorCiB2b2lk
IFdlYlByb2Nlc3NQb29sOjphbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QoY29u
c3QgV2ViQ2VydGlmaWNhdGVJbmZvKiBjZXJ0aWZpY2F0ZSwgY29uc3QgU3RyaW5nJiBob3N0KQog
ewogICAgIGVuc3VyZU5ldHdvcmtQcm9jZXNzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuaAppbmRleCAyY2NiNDdmMWFlNjRmYWUzNmFmYzExYTNjMTU1OTBiNzcwNTM2
MzUxLi5lZDZjMjlmZjMyODM4OTY3NjkxMGE4ZmZmZmZhNDJkYWNmNDQxMjhmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTMxNyw2ICszMTcsOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBkaXNhYmxlU2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5
KCk7CiAKICAgICB2b2lkIHN5bmNOZXR3b3JrUHJvY2Vzc0Nvb2tpZXMoKTsKKyAgICB2b2lkIHN5
bmNMb2NhbFN0b3JhZ2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrKTsKKyAg
ICB2b2lkIGNsZWFyTGVnYWN5UHJpdmF0ZUJyb3dzaW5nTG9jYWxTdG9yYWdlKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFjayk7CiAKICAgICB2b2lkIHNldElEQlBlck9yaWdpblF1
b3RhKHVpbnQ2NF90KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCmluZGV4
IGJhOWZjY2ViOTgzZDVhYzJiY2RkMWMyYWQ4MzQ2YmNkMTQ1ZDg1YTEuLmEwNTQ0ZDA1YTc3NDYw
MmEwMGNkOTJkMjQ0ZmQzNWY3ZjY0Y2JmMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3Jl
Q29jb2EubW0KQEAgLTEwOSwxMSArMTA5LDYgQEAgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMg
V2Vic2l0ZURhdGFTdG9yZTo6cGFyYW1ldGVycygpCiAgICAgaWYgKCFyZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJl
Y3RvcnksIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnlIYW5kbGUpOwogCi0gICAgYXV0
byBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSByZXNvbHZlZExvY2FsU3RvcmFnZURpcmVjdG9yeSgp
OwotICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBsb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRl
bnNpb25IYW5kbGU7Ci0gICAgaWYgKCFsb2NhbFN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKQot
ICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3Rv
cnkobG9jYWxTdG9yYWdlRGlyZWN0b3J5LCBsb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25I
YW5kbGUpOwotCiAgICAgYXV0byBuZXR3b3JrQ2FjaGVEaXJlY3RvcnkgPSByZXNvbHZlZE5ldHdv
cmtDYWNoZURpcmVjdG9yeSgpOwogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBuZXR3b3Jr
Q2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgaWYgKCFuZXR3b3JrQ2FjaGVEaXJl
Y3RvcnkuaXNFbXB0eSgpKQpAQCAtMTQzLDggKzEzOCw2IEBAIFdlYnNpdGVEYXRhU3RvcmVQYXJh
bWV0ZXJzIFdlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMoKQogICAgICAgICBtX2NvbmZpZ3Vy
YXRpb24tPmRldmljZU1hbmFnZW1lbnRSZXN0cmljdGlvbnNFbmFibGVkKCksCiAgICAgICAgIG1f
Y29uZmlndXJhdGlvbi0+YWxsTG9hZHNCbG9ja2VkQnlEZXZpY2VNYW5hZ2VtZW50UmVzdHJpY3Rp
b25zRm9yVGVzdGluZygpLAogICAgICAgICBXVEZNb3ZlKHJlc291cmNlTG9hZFN0YXRpc3RpY3NN
YW51YWxQcmV2YWxlbnRSZXNvdXJjZSksCi0gICAgICAgIFdURk1vdmUobG9jYWxTdG9yYWdlRGly
ZWN0b3J5KSwKLSAgICAgICAgV1RGTW92ZShsb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25I
YW5kbGUpLAogICAgICAgICBXVEZNb3ZlKG5ldHdvcmtDYWNoZURpcmVjdG9yeSksCiAgICAgICAg
IFdURk1vdmUobmV0d29ya0NhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKSwKICAgICB9OwpA
QCAtMTgwLDYgKzE3MywxMCBAQCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0
YVN0b3JlOjpwYXJhbWV0ZXJzKCkKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFu
ZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbkRpcmVjdG9yeSwgcGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5RXh0ZW5zaW9uSGFuZGxlKTsKICNlbmRpZgogCisgICAgcGFyYW1ldGVycy5sb2NhbFN0b3Jh
Z2VEaXJlY3RvcnkgPSByZXNvbHZlZExvY2FsU3RvcmFnZURpcmVjdG9yeSgpOworICAgIGlmICgh
cGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKQorICAgICAgICBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkocGFyYW1ldGVy
cy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnksIHBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5
RXh0ZW5zaW9uSGFuZGxlKTsKKwogICAgIHBhcmFtZXRlcnMucGVyT3JpZ2luU3RvcmFnZVF1b3Rh
ID0gcGVyT3JpZ2luU3RvcmFnZVF1b3RhKCk7CiAgICAgcGFyYW1ldGVycy5wZXJUaGlyZFBhcnR5
T3JpZ2luU3RvcmFnZVF1b3RhID0gcGVyVGhpcmRQYXJ0eU9yaWdpblN0b3JhZ2VRdW90YSgpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuY3BwCmluZGV4IDAyNTg3YjE5ZTE5NGU2MWRmMzFlMzExYzg2MmFkYjFjZmJj
MWNiZDUuLjZmZjFiY2QxYTZjZWZkYjA4MzNkYzJjNjRhNTkzNGI1M2E1ZDlhODEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmUuY3BwCkBAIC0xOTY5LDggKzE5NjksOCBAQCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVy
cyBXZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0ZXJzKCkKIAogICAgIGF1dG8gbG9jYWxTdG9yYWdl
RGlyZWN0b3J5ID0gcmVzb2x2ZWRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKTsKICAgICBpZiAoIWxv
Y2FsU3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpIHsKLSAgICAgICAgcGFyYW1ldGVycy5uZXR3
b3JrU2Vzc2lvblBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gbG9jYWxTdG9yYWdl
RGlyZWN0b3J5OwotICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFk
V3JpdGVEaXJlY3RvcnkobG9jYWxTdG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLm5ldHdvcmtT
ZXNzaW9uUGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwor
ICAgICAgICBwYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeSA9IGxvY2FsU3RvcmFnZURp
cmVjdG9yeTsKKyAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdy
aXRlRGlyZWN0b3J5KGxvY2FsU3RvcmFnZURpcmVjdG9yeSwgcGFyYW1ldGVycy5sb2NhbFN0b3Jh
Z2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogICAgIH0KIAogI2lmIEVOQUJMRShJTkRFWEVE
X0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggYjEzZTMzZGFjMTllYzNjZDRhM2QyNDkyYWU4ZThlZTRjZWEzYWVkZi4uOTY5
NDQ4MmY1NjYyYTNjZmYwNGFjNWY4YzMzNGYwOWVkNWI3NjJmMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yOTMsOCArMjkzLDYgQEAK
IAkJMUFCMUY3OTcxRDFCMzYxMzAwN0M5QkQxIC8qIFdlYlBheW1lbnRDb29yZGluYXRvck1lc3Nh
Z2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUIx
Rjc5MzFEMUIzNjEzMDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yTWVzc2FnZXMuaCAq
LzsgfTsKIAkJMUFCMUY3OTgxRDFCMzYxMzAwN0M5QkQxIC8qIFdlYlBheW1lbnRDb29yZGluYXRv
clByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFBQjFGNzk0MUQxQjM2MTMwMDdDOUJEMSAvKiBXZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTFBQjFGNzk5MUQxQjM2
MTMwMDdDOUJEMSAvKiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1lc3NhZ2VzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUIxRjc5NTFEMUIzNjEz
MDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNZXNzYWdlcy5oICovOyB9Owot
CQkxQUIzMUE5NjE2QkM2ODgxMDBGNkRCQzkgLyogU3RvcmFnZU1hbmFnZXJNZXNzYWdlUmVjZWl2
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFC
MzFBOTQxNkJDNjg4MTAwRjZEQkM5IC8qIFN0b3JhZ2VNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNw
cCAqLzsgfTsKLQkJMUFCMzFBOTcxNkJDNjg4MTAwRjZEQkM5IC8qIFN0b3JhZ2VNYW5hZ2VyTWVz
c2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFB
QjMxQTk1MTZCQzY4ODEwMEY2REJDOSAvKiBTdG9yYWdlTWFuYWdlck1lc3NhZ2VzLmggKi87IH07
CiAJCTFBQjQwRUU2MUJGNjc3RTMwMEJBODFCRSAvKiBXS01lbnVJdGVtSWRlbnRpZmllcnNQcml2
YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUI0
MEVFNDFCRjY3N0UzMDBCQTgxQkUgLyogV0tNZW51SXRlbUlkZW50aWZpZXJzUHJpdmF0ZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFBQjQ3NEQ4
MTg0RDQzRkQwMDUxQjYyMiAvKiBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjQ3NEQ3MTg0RDQzRkQwMDUx
QjYyMiAvKiBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxQUI0NzREQTE4NEQ0NDI1MDA1MUI2MjIgLyog
V0tCdW5kbGVQYWdlUmVzb3VyY2VMb2FkQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUI0NzREOTE4NEQ0NDI1MDA1MUI2MjIgLyogV0tCdW5k
bGVQYWdlUmVzb3VyY2VMb2FkQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEyNzUsNiArMTI3Myw5IEBACiAJCTkzNTZGMkUxMjE1MkI3
NjYwMEU2RDVERiAvKiBXZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCQTA0RTEyMTUxQURGNDAwN0Y0NTVGIC8q
IFdlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAgKi87IH07CiAJCTkzNUVFQjlCMTI3NzYxN0MwMDMz
MjJCOCAvKiBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNUVFQjk4MTI3NzYxNkQwMDMzMjJCOCAvKiBX
S0J1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk5MzVFRUI5RjEyNzc2MUFDMDAzMzIyQjggLyogV0tCdW5k
bGVCYWNrRm9yd2FyZExpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDkzNUVFQjk2MTI3NzYxNkQwMDMzMjJCOCAvKiBXS0J1bmRsZUJhY2tGb3J3YXJk
TGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTkzNjhFRURFMjMwM0E5MDIwMEJEQjExQSAvKiBTdG9yYWdlTWFuYWdlclNldE1lc3NhZ2VSZWNl
aXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
MzY4RUVEQzIzMDNBOEQ4MDBCREIxMUEgLyogU3RvcmFnZU1hbmFnZXJTZXRNZXNzYWdlUmVjZWl2
ZXIuY3BwICovOyB9OworCQk5MzY4RUVERjIzMDNBOUVEMDBCREIxMUEgLyogU3RvcmFnZU1hbmFn
ZXJTZXRNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTM2OEVFREQyMzAzQThEODAwQkRCMTFBIC8qIFN0b3JhZ2VNYW5hZ2VyU2V0TWVzc2Fn
ZXMuaCAqLzsgfTsKKwkJOTM2QjA1OTgyMzAzOTA5NzAwMkZDMDZCIC8qIFN0b3JhZ2VNYW5hZ2Vy
U2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzZC
MDU5NTIzMDM5MDBCMDAyRkMwNkIgLyogU3RvcmFnZU1hbmFnZXJTZXQuaCAqLzsgfTsKIAkJOTM3
MzVFQkIxQzkyOTg2MzAwMzM2RkE3IC8qIFdLUHJldmlld0FjdGlvbkl0ZW1JbnRlcm5hbC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM3MzVFQkExQzky
OTg2MzAwMzM2RkE3IC8qIFdLUHJldmlld0FjdGlvbkl0ZW1JbnRlcm5hbC5oICovOyB9OwogCQk5
MzkxMDc0RjFCRjZCQzY1MDA4QzE3QUQgLyogV0tQcmV2aWV3RWxlbWVudEluZm9JbnRlcm5hbC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM5MTA3NEUx
QkY2QkM2NTAwOEMxN0FEIC8qIFdLUHJldmlld0VsZW1lbnRJbmZvSW50ZXJuYWwuaCAqLzsgfTsK
IAkJOTM5MUYyQ0IxMjFCNjdBRDAwRUJGN0U4IC8qIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzOTFGMjgz
MTIxQjM4RjUwMEVCRjdFOCAvKiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmggKi87IH07CkBA
IC0xNzA3LDYgKzE3MDgsOCBAQAogCQkJY29tcGlsZXJTcGVjID0gY29tLmFwcGxlLmNvbXBpbGVy
cy5wcm94eS5zY3JpcHQ7CiAJCQlmaWxlUGF0dGVybnMgPSAiKi5oIjsKIAkJCWZpbGVUeXBlID0g
cGF0dGVybi5wcm94eTsKKwkJCWlucHV0RmlsZXMgPSAoCisJCQkpOwogCQkJaXNFZGl0YWJsZSA9
IDE7CiAJCQlvdXRwdXRGaWxlcyA9ICgKIAkJCQkiJChIRUFERVJfT1VUUFVUX0RJUikvJChJTlBV
VF9GSUxFX05BTUUpIiwKQEAgLTIzMDcsOCArMjMxMCw2IEBACiAJCTFBQjFGNzkzMUQxQjM2MTMw
MDdDOUJEMSAvKiBXZWJQYXltZW50Q29vcmRpbmF0b3JNZXNzYWdlcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJQYXltZW50Q29vcmRpbmF0b3JNZXNzYWdlcy5oOyBwYXRo
ID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJQYXltZW50Q29vcmRpbmF0b3JNZXNzYWdlcy5o
OyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQkxQUIxRjc5NDFEMUIzNjEz
MDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRy
ZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTFBQjFGNzk1MUQxQjM2MTMwMDdDOUJEMSAv
KiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWVzc2FnZXMuaDsgcGF0
aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNZXNz
YWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwotCQkxQUIzMUE5NDE2
QkM2ODgxMDBGNkRCQzkgLyogU3RvcmFnZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU3RvcmFnZU1hbmFnZXJNZXNzYWdlUmVj
ZWl2ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9TdG9yYWdlTWFuYWdlck1l
c3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07Ci0J
CTFBQjMxQTk1MTZCQzY4ODEwMEY2REJDOSAvKiBTdG9yYWdlTWFuYWdlck1lc3NhZ2VzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFN0b3JhZ2VNYW5hZ2VyTWVzc2FnZXMuaDsg
cGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvU3RvcmFnZU1hbmFnZXJNZXNzYWdlcy5oOyBz
b3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQkxQUI0MEVFMzFCRjY3N0UzMDBC
QTgxQkUgLyogV0tNZW51SXRlbUlkZW50aWZpZXJzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gV0tNZW51SXRlbUlkZW50aWZpZXJzLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxQUI0MEVFNDFCRjY3N0UzMDBCQTgxQkUgLyogV0tNZW51SXRlbUlk
ZW50aWZpZXJzUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS01l
bnVJdGVtSWRlbnRpZmllcnNQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTFBQjQ3NEQ3MTg0RDQzRkQwMDUxQjYyMiAvKiBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zODk3LDYgKzM4OTgsMTEgQEAKIAkJ
OTM1RUVCOTYxMjc3NjE2RDAwMzMyMkI4IC8qIFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNUVFQjk3MTI3NzYxNkQwMDMzMjJCOCAv
KiBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV0tCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM1RUVCOTgxMjc3NjE2RDAwMzMyMkI4IC8qIFdLQnVuZGxl
QmFja0ZvcndhcmRMaXN0SXRlbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
S0J1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJOTM2OEVFREMyMzAzQThEODAwQkRCMTFBIC8qIFN0b3JhZ2VNYW5hZ2VyU2V0TWVzc2FnZVJl
Y2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBmaWxlRW5jb2RpbmcgPSA0OyBuYW1lID0gU3RvcmFnZU1h
bmFnZXJTZXRNZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi9TdG9yYWdlTWFuYWdlclNldE1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlM
VF9QUk9EVUNUU19ESVI7IH07CisJCTkzNjhFRUREMjMwM0E4RDgwMEJEQjExQSAvKiBTdG9yYWdl
TWFuYWdlclNldE1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFN0
b3JhZ2VNYW5hZ2VyU2V0TWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIv
U3RvcmFnZU1hbmFnZXJTZXRNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNf
RElSOyB9OworCQk5MzZCMDU5NTIzMDM5MDBCMDAyRkMwNkIgLyogU3RvcmFnZU1hbmFnZXJTZXQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RvcmFnZU1hbmFnZXJTZXQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTM2QjA1OTYyMzAzOTAwQjAwMkZDMDZCIC8q
IFN0b3JhZ2VNYW5hZ2VyU2V0Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFN0
b3JhZ2VNYW5hZ2VyU2V0Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk5MzZCMDU5NzIzMDM5MDBCMDAyRkMwNkIgLyogU3RvcmFnZU1hbmFnZXJTZXQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RvcmFnZU1hbmFnZXJTZXQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzczNUVCQTFDOTI5ODYzMDAzMzZGQTcgLyog
V0tQcmV2aWV3QWN0aW9uSXRlbUludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdLUHJldmlld0FjdGlvbkl0ZW1JbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5MzkxMDc0RTFCRjZCQzY1MDA4QzE3QUQgLyogV0tQcmV2aWV3RWxlbWVudElu
Zm9JbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1ByZXZpZXdF
bGVtZW50SW5mb0ludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzOTFG
MjgzMTIxQjM4RjUwMEVCRjdFOCAvKiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM5MjYsNyArMzkzMiw2IEBACiAJCTkzQjI2
MTQ4MjI3RDE0NzEwMEI5N0E3NiAvKiBpb3MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBmb2xkZXI7IHBhdGggPSBpb3M7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkzQjI2MTQ5MjI3RDE0NzIwMEI5N0E3NiAvKiBTdG9yYWdlTWFuYWdlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdG9yYWdlTWFuYWdlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0IyNjE0QTIyN0QxNDcyMDBCOTdBNzYgLyogU3Rv
cmFnZU1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3Rv
cmFnZU1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5M0IyNjE0QjIy
N0QxNDcyMDBCOTdBNzYgLyogU3RvcmFnZU1hbmFnZXIubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gU3RvcmFnZU1hbmFnZXIubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkzQjI2MTRDMjI3RDE0NzIwMEI5N0E3NiAvKiBMb2NhbFN0b3JhZ2VEYXRh
YmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMb2NhbFN0b3Jh
Z2VEYXRhYmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQkEwNERBMjE1
MUFERjMwMDdGNDU1RiAvKiBXZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0JBMDREQjIxNTFBREYzMDA3RjQ1NUYgLyogV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNzI5MSw2ICs3Mjk2LDkgQEAKIAkJOTNCMjYxNDMyMjdEMTQzMTAwQjk3
QTc2IC8qIFdlYlN0b3JhZ2UgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAorCQkJCTkzNkIwNTk3MjMwMzkwMEIwMDJGQzA2QiAvKiBTdG9yYWdlTWFuYWdlclNldC5j
cHAgKi8sCisJCQkJOTM2QjA1OTUyMzAzOTAwQjAwMkZDMDZCIC8qIFN0b3JhZ2VNYW5hZ2VyU2V0
LmggKi8sCisJCQkJOTM2QjA1OTYyMzAzOTAwQjAwMkZDMDZCIC8qIFN0b3JhZ2VNYW5hZ2VyU2V0
Lm1lc3NhZ2VzLmluICovLAogCQkJCTkzQjI2MTQ4MjI3RDE0NzEwMEI5N0E3NiAvKiBpb3MgKi8s
CiAJCQkJOTNCMjYxNEMyMjdEMTQ3MjAwQjk3QTc2IC8qIExvY2FsU3RvcmFnZURhdGFiYXNlLmNw
cCAqLywKIAkJCQk5M0IyNjE0NTIyN0QxNDcwMDBCOTdBNzYgLyogTG9jYWxTdG9yYWdlRGF0YWJh
c2UuaCAqLywKQEAgLTczMDQsNyArNzMxMiw2IEBACiAJCQkJNDZCRUI2RDUyMkZCOUJENjAwMjY5
ODY3IC8qIFN0b3JhZ2VBcmVhLmggKi8sCiAJCQkJOTNCMjYxNEEyMjdEMTQ3MjAwQjk3QTc2IC8q
IFN0b3JhZ2VNYW5hZ2VyLmNwcCAqLywKIAkJCQk5M0IyNjE0OTIyN0QxNDcyMDBCOTdBNzYgLyog
U3RvcmFnZU1hbmFnZXIuaCAqLywKLQkJCQk5M0IyNjE0QjIyN0QxNDcyMDBCOTdBNzYgLyogU3Rv
cmFnZU1hbmFnZXIubWVzc2FnZXMuaW4gKi8sCiAJCQkJNDZCRUI2RTIyMkZCQjIxQTAwMjY5ODY3
IC8qIFRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZS5jcHAgKi8sCiAJCQkJNDZCRUI2RTEy
MkZCQjIxQTAwMjY5ODY3IC8qIFRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZS5oICovLAog
CQkJKTsKQEAgLTg2ODUsNiArODY5Miw4IEBACiAJCUMwQ0U3MjlEMTI0N0U3MUQwMEJDMEVDNCAv
KiBEZXJpdmVkIFNvdXJjZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAorCQkJCTkzNjhFRURDMjMwM0E4RDgwMEJEQjExQSAvKiBTdG9yYWdlTWFuYWdlclNldE1l
c3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJCQkJOTM2OEVFREQyMzAzQThEODAwQkRCMTFBIC8qIFN0
b3JhZ2VNYW5hZ2VyU2V0TWVzc2FnZXMuaCAqLywKIAkJCQkyRDdERUJFMjIxMjY5RTRCMDBCOUY3
M0MgLyogdW5pZmllZC1zb3VyY2VzICovLAogCQkJCTUxMkY1OEEwMTJBODgzQUQwMDYyOTUzMCAv
KiBBdXRoZW50aWNhdGlvbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTUxMkY1
OEExMTJBODgzQUQwMDYyOTUzMCAvKiBBdXRoZW50aWNhdGlvbk1hbmFnZXJNZXNzYWdlcy5oICov
LApAQCAtODc2Niw4ICs4Nzc1LDYgQEAKIAkJCQkyREU2OTQzQzE4QkQyQTY4MDA1QzE1RTUgLyog
U21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VzLmggKi8sCiAJCQkJMUEzMzRERUIx
NkRFOEY4ODAwNkE4RTM4IC8qIFN0b3JhZ2VBcmVhTWFwTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywK
IAkJCQkxQTMzNERFQzE2REU4Rjg4MDA2QThFMzggLyogU3RvcmFnZUFyZWFNYXBNZXNzYWdlcy5o
ICovLAotCQkJCTFBQjMxQTk0MTZCQzY4ODEwMEY2REJDOSAvKiBTdG9yYWdlTWFuYWdlck1lc3Nh
Z2VSZWNlaXZlci5jcHAgKi8sCi0JCQkJMUFCMzFBOTUxNkJDNjg4MTAwRjZEQkM5IC8qIFN0b3Jh
Z2VNYW5hZ2VyTWVzc2FnZXMuaCAqLywKIAkJCQk1MTE4RTlBNTFGMjk1OTYzMDAzRUY5RjUgLyog
U3RvcmFnZVByb2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTUxMThFOUE2MUYyOTU5
NjMwMDNFRjlGNSAvKiBTdG9yYWdlUHJvY2Vzc01lc3NhZ2VzLmggKi8sCiAJCQkJNTExOEU5QTcx
RjI5NTk2MzAwM0VGOUY1IC8qIFN0b3JhZ2VQcm9jZXNzUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3Bw
ICovLApAQCAtOTQ3Niw2ICs5NDgzLDggQEAKIAkJCQlFNDlENDBENzFBRDNGQjE3MDA2NkI3Qjkg
LyogTmV0d29ya0NhY2hlQmxvYlN0b3JhZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0ODlEMjhD
MUEwQTJEQjgwMDc4QzA2QSAvKiBOZXR3b3JrQ2FjaGVDb2RlcnMuaCBpbiBIZWFkZXJzICovLAog
CQkJCUU0MkUwNjEyMUFBNzVBQkQwMEIxMTY5OSAvKiBOZXR3b3JrQ2FjaGVEYXRhLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk5MzY4RUVERjIzMDNBOUVEMDBCREIxMUEgLyogU3RvcmFnZU1hbmFnZXJT
ZXRNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTM2QjA1OTgyMzAzOTA5NzAwMkZDMDZC
IC8qIFN0b3JhZ2VNYW5hZ2VyU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDEzRjU5RDFBQzFB
REM0MDAzNDUzNjAgLyogTmV0d29ya0NhY2hlRW50cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTgz
NEIyNTBGMUE4MzFBOEQwMENGQjE1MCAvKiBOZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlFNDJFMDYxMDFBQTc1MjNCMDBCMTE2OTkgLyogTmV0d29ya0NhY2hlSU9D
aGFubmVsLmggaW4gSGVhZGVycyAqLywKQEAgLTk2NzAsNyArOTY3OSw2IEBACiAJCQkJMUFDRUNE
MjUxNzE2MkRCMTAwMUZDOUVGIC8qIFN0b3JhZ2VBcmVhTWFwLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQTMzNERFRTE2REU4Rjg4MDA2QThFMzggLyogU3RvcmFnZUFyZWFNYXBNZXNzYWdlcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTNCMjYxNEQyMjdEMTQ5RTAwQjk3QTc2IC8qIFN0b3JhZ2VNYW5h
Z2VyLmggaW4gSGVhZGVycyAqLywKLQkJCQkxQUIzMUE5NzE2QkM2ODgxMDBGNkRCQzkgLyogU3Rv
cmFnZU1hbmFnZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFMDBENkMxODMyN0Mx
MjAwMDg3REQ3IC8qIFN0cmluZ1JlZmVyZW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjk2QkQ4
NUQxNTAxOUJDMzAwNzFGNDI0IC8qIFN0cmluZ1V0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTdGRDMxODYyMkIzNTE2QzAwOEQwRThCIC8qIFN1YkZyYW1lU09BdXRob3JpemF0aW9uU2Vz
c2lvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMTE4NCw3ICsxMTE5Miw2IEBACiAJCQkJMkQ5MkE3
ODcyMTJCNkFCMTAwRjQ5M0ZEIC8qIFNoYXJlYWJsZUJpdG1hcC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkyREU2OTQzRDE4QkQyQTY4MDA1QzE1RTUgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJv
bGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTMzNERFRDE2REU4
Rjg4MDA2QThFMzggLyogU3RvcmFnZUFyZWFNYXBNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCi0JCQkJMUFCMzFBOTYxNkJDNjg4MTAwRjZEQkM5IC8qIFN0b3JhZ2VNYW5hZ2VyTWVz
c2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTJBNzgzMjEyQjZBNzEwMEY0
OTNGRCAvKiBTdHJpbmdSZWZlcmVuY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQxMUI3NTEy
MTI2QTI4MjAwNkY4ODc4IC8qIFVuaWZpZWRTb3VyY2UxLW1tLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMkQxMUI3NTIyMTI2QTI4MjAwNkY4ODc4IC8qIFVuaWZpZWRTb3VyY2UxLmNwcCBpbiBTb3Vy
Y2VzICovLApAQCAtMTEyNTEsNiArMTEyNTgsNyBAQAogCQkJCTJEMTFCNzhGMjEyNkEyODMwMDZG
ODg3OCAvKiBVbmlmaWVkU291cmNlMzItbW0ubW0gaW4gU291cmNlcyAqLywKIAkJCQkyRDExQjc5
MDIxMjZBMjgzMDA2Rjg4NzggLyogVW5pZmllZFNvdXJjZTMyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTJEMTFCNzkxMjEyNkEyODMwMDZGODg3OCAvKiBVbmlmaWVkU291cmNlMzMtbW0ubW0gaW4g
U291cmNlcyAqLywKKwkJCQk5MzY4RUVERTIzMDNBOTAyMDBCREIxMUEgLyogU3RvcmFnZU1hbmFn
ZXJTZXRNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQxMUI3OTIyMTI2
QTI4MzAwNkY4ODc4IC8qIFVuaWZpZWRTb3VyY2UzMy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQky
RDExQjc5NDIxMjZBMjgzMDA2Rjg4NzggLyogVW5pZmllZFNvdXJjZTM0LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTJEMTFCNzkzMjEyNkEyODMwMDZGODg3OCAvKiBVbmlmaWVkU291cmNlMzQtbW0u
bW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCmluZGV4IDIwY2U1NTkxMWQ3MDY1
MWMzMzVhNzBhY2YyNGU1YmRmYzIxYmQ2MzEuLmIwZGNiOTAwMGJlOTE1MjhjN2MwNzFmNjZkN2U4
YzMwMWNlOTVhNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcApAQCAtNDYsNiArNDYsNyBAQAogI2lu
Y2x1ZGUgIldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJXZWJQcm9j
ZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbE1lc3NhZ2VzLmgiCisjaW5j
bHVkZSAiV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMu
aCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+CkBAIC0zNDgsOSArMzQ5LDEz
IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnNldEphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQo
V2ViUGFnZUdyb3VwUHJveHkqIHBhZ2VHcm91CiB2b2lkIEluamVjdGVkQnVuZGxlOjpzZXRQcml2
YXRlQnJvd3NpbmdFbmFibGVkKFdlYlBhZ2VHcm91cFByb3h5KiBwYWdlR3JvdXAsIGJvb2wgZW5h
YmxlZCkKIHsKICAgICBBU1NFUlQoIWhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVn
ZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVu
YWJsZVByaXZhdGVCcm93c2luZ0ZvclRlc3RpbmcoZW5hYmxlZCk7CisgICAgaWYgKGVuYWJsZWQp
CisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUxlZ2FjeVByaXZhdGVCcm93
c2luZ1Nlc3Npb25Jbk5ldHdvcmtQcm9jZXNzKCk7CiAKICAgICBQYWdlR3JvdXA6OnBhZ2VHcm91
cChwYWdlR3JvdXAtPmlkZW50aWZpZXIoKSktPmVuYWJsZUxlZ2FjeVByaXZhdGVCcm93c2luZ0Zv
clRlc3RpbmcoZW5hYmxlZCk7CisKKyAgICBhdXRvIHdlYlN0b3JhZ2VOYW1lU3BhY2VQcm92aWRl
ciA9IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Z2V0T3JDcmVhdGUocGFnZUdyb3VwLT5w
YWdlR3JvdXBJRCgpKTsKKyAgICB3ZWJTdG9yYWdlTmFtZVNwYWNlUHJvdmlkZXItPmVuYWJsZUxl
Z2FjeVByaXZhdGVCcm93c2luZ0ZvclRlc3RpbmcoZW5hYmxlZCk7CiB9CiAKIHZvaWQgSW5qZWN0
ZWRCdW5kbGU6OnNldFBvcHVwQmxvY2tpbmdFbmFibGVkKFdlYlBhZ2VHcm91cFByb3h5KiBwYWdl
R3JvdXAsIGJvb2wgZW5hYmxlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cAppbmRleCA3YjQ4YTBmNzI0NjJmZmU1N2ZlOTIwNmNiY2MwY2YzMzFjMzIxMWUxLi5hZjc5MjU2
MDRhNTEzMTFmNDVmNWMwZGYxOTk5OWRiZjE3OTNkOWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC02NzcsNyArNjc3LDYgQEAgdm9pZCBXZWJQcm9jZXNzOjpj
cmVhdGVXZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycyYKICAgICAvLyBJdCBpcyBuZWNlc3NhcnkgdG8gY2hlY2sgZm9yIHBhZ2UgZXhpc3RlbmNl
IGhlcmUgc2luY2UgZHVyaW5nIGEgd2luZG93Lm9wZW4oKSAob3IgdGFyZ2V0ZWQKICAgICAvLyBs
aW5rKSB0aGUgV2ViUGFnZSBnZXRzIGNyZWF0ZWQgYm90aCBpbiB0aGUgc3luY2hyb25vdXMgaGFu
ZGxlciBhbmQgdGhyb3VnaCB0aGUgbm9ybWFsIHdheS4gCiAgICAgYXV0byByZXN1bHQgPSBtX3Bh
Z2VNYXAuYWRkKHBhZ2VJRCwgbnVsbHB0cik7Ci0gICAgYXV0byBvbGRQYWdlSUQgPSBwYXJhbWV0
ZXJzLm9sZFBhZ2VJRCA/IHBhcmFtZXRlcnMub2xkUGFnZUlELnZhbHVlKCkgOiBwYWdlSUQ7CiAg
ICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KSB7CiAgICAgICAgIEFTU0VSVCghcmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZSk7CiAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBXZWJQYWdlOjpj
cmVhdGUocGFnZUlELCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKQEAgLTY4OCw4ICs2ODcsNiBAQCB2
b2lkIFdlYlByb2Nlc3M6OmNyZWF0ZVdlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzJgogICAgIH0gZWxzZQogICAgICAgICByZXN1bHQuaXRlcmF0
b3ItPnZhbHVlLT5yZWluaXRpYWxpemVXZWJQYWdlKFdURk1vdmUocGFyYW1ldGVycykpOwogCi0g
ICAgZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpXZWJQYWdlV2FzQWRkZWQocmVz
dWx0Lml0ZXJhdG9yLT52YWx1ZS0+c2Vzc2lvbklEKCksIHBhZ2VJRCwgb2xkUGFnZUlEKSwgMCk7
Ci0KICAgICBBU1NFUlQocmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSk7CiB9CiAKQEAgLTY5Nyw3ICs2
OTQsNiBAQCB2b2lkIFdlYlByb2Nlc3M6OnJlbW92ZVdlYlBhZ2UoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgQVNTRVJUKG1fcGFnZU1hcC5j
b250YWlucyhwYWdlSUQpKTsKIAotICAgIGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigp
LmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6V2ViUGFnZVdhc1JlbW92ZWQoc2Vzc2lvbklELCBwYWdlSUQpLCAwKTsKICAgICBwYWdlV2ls
bExlYXZlV2luZG93KHBhZ2VJRCk7CiAgICAgbV9wYWdlTWFwLnJlbW92ZShwYWdlSUQpOwogCkBA
IC0xMjQ2LDE2ICsxMjQyLDYgQEAgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uJiBXZWJQcm9jZXNz
OjplbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKQogICAgICAgICAgICAgQ1JBU0goKTsK
IAogICAgICAgICBtX25ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiA9IE5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbjo6Y3JlYXRlKGNvbm5lY3Rpb25JZGVudGlmaWVyKTsKLQotICAgICAgICAvLyBUbyBy
ZWNvdmVyIHdlYiBzdG9yYWdlLCBuZXR3b3JrIHByb2Nlc3MgbmVlZHMgdG8ga25vdyBhY3RpdmUg
d2VicGFnZXMgdG8gcHJlcGFyZSBzZXNzaW9uIHN0b3JhZ2UuCi0gICAgICAgIC8vIEZJWE1FOiBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4MDUxLgotICAgICAgICAv
LyBXZWJwYWdlIHNob3VsZCBiZSBhZGRlZCB3aGVuIFN0b3JhZ2UgaXMgdXNlZCwgbm90IHdoZW4g
Y29ubmVjdGlvbiBpcyByZS1lc3RhYmxpc2hlZC4KLSAgICAgICAgZm9yIChhdXRvJiBwYWdlIDog
bV9wYWdlTWFwKSB7Ci0gICAgICAgICAgICBpZiAoIXBhZ2UudmFsdWUpCi0gICAgICAgICAgICAg
ICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLT5j
b25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OldlYlBhZ2VXYXNBZGRlZChwYWdlLnZhbHVlLT5zZXNzaW9uSUQoKSwgcGFnZS5rZXksIHBhZ2Uu
a2V5KSwgMCk7Ci0gICAgICAgIH0KICAgICB9CiAgICAgCiAgICAgcmV0dXJuICptX25ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbjsKQEAgLTEyODYsNyArMTI3Miw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6
bmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uQ2xvc2VkKE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiog
Y29ubmVjCiAgICAgQVNTRVJUKG1fbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKTsKICAgICBBU1NF
UlRfVU5VU0VEKGNvbm5lY3Rpb24sIG1fbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uID09IGNvbm5l
Y3Rpb24pOwogCi0gICAgZm9yIChhdXRvKiBzdG9yYWdlQXJlYU1hcCA6IG1fc3RvcmFnZUFyZWFN
YXBzLnZhbHVlcygpKQorICAgIGZvciAoYXV0byogc3RvcmFnZUFyZWFNYXAgOiBjb3B5VG9WZWN0
b3IobV9zdG9yYWdlQXJlYU1hcHMudmFsdWVzKCkpKQogICAgICAgICBzdG9yYWdlQXJlYU1hcC0+
ZGlzY29ubmVjdCgpOwogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCkBAIC0xNjg3LDI1
ICsxNjczLDkgQEAgdm9pZCBXZWJQcm9jZXNzOjp1bnJlZ2lzdGVyU3RvcmFnZUFyZWFNYXAoU3Rv
cmFnZUFyZWFNYXAmIHN0b3JhZ2VBcmVhTWFwKQogCiBTdG9yYWdlQXJlYU1hcCogV2ViUHJvY2Vz
czo6c3RvcmFnZUFyZWFNYXAodWludDY0X3QgaWRlbnRpZmllcikgY29uc3QKIHsKLSAgICBBU1NF
UlQobV9zdG9yYWdlQXJlYU1hcHMuY29udGFpbnMoaWRlbnRpZmllcikpOwogICAgIHJldHVybiBt
X3N0b3JhZ2VBcmVhTWFwcy5nZXQoaWRlbnRpZmllcik7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzczo6
ZW5hYmxlUHJpdmF0ZUJyb3dzaW5nRm9yVGVzdGluZyhib29sIGVuYWJsZSkKLXsKLSAgICBpZiAo
ZW5hYmxlKQotICAgICAgICBlbnN1cmVMZWdhY3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uSW5OZXR3
b3JrUHJvY2VzcygpOwotCi0gICAgVmVjdG9yPFBhZ2VJZGVudGlmaWVyPiBwYWdlSURzOwotICAg
IGZvciAoYXV0byYgcGFnZSA6IG1fcGFnZU1hcCkgewotICAgICAgICBpZiAocGFnZS52YWx1ZSkK
LSAgICAgICAgICAgIHBhZ2VJRHMuYXBwZW5kKHBhZ2Uua2V5KTsKLSAgICB9Ci0KLSAgICBpZiAo
IXBhZ2VJRHMuaXNFbXB0eSgpKQotICAgICAgICBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OldlYlByb2Nlc3NTZXNzaW9uQ2hhbmdlZChlbmFibGUgPyBQQUw6OlNlc3Npb25JRDo6
bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpIDogUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9u
SUQoKSwgcGFnZUlEcyksIDApOwotfQotCiB2b2lkIFdlYlByb2Nlc3M6OnNldFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKICAgICBXZWJDb3JlOjpEZXByZWNh
dGVkR2xvYmFsU2V0dGluZ3M6OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGVuYWJs
ZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggZDRjMDFiYWIxZjkz
ZGE5MDg1YjBmMjE5NGNkMzI3ZDQ3MTg2NTBiMi4uNjYxMWU5MjMwNThkMTIzNzBlNjY1ZDhjYWM2
NzJhZmQyYzE3MzllMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC0y
MTQsOCArMjE0LDYgQEAgcHVibGljOgogICAgIHZvaWQgdW5yZWdpc3RlclN0b3JhZ2VBcmVhTWFw
KFN0b3JhZ2VBcmVhTWFwJik7CiAgICAgU3RvcmFnZUFyZWFNYXAqIHN0b3JhZ2VBcmVhTWFwKHVp
bnQ2NF90IGlkZW50aWZpZXIpIGNvbnN0OwogCi0gICAgdm9pZCBlbmFibGVQcml2YXRlQnJvd3Np
bmdGb3JUZXN0aW5nKGJvb2wpOwotCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgUmV0YWluUHRy
PENGRGF0YVJlZj4gc291cmNlQXBwbGljYXRpb25BdWRpdERhdGEoKSBjb25zdDsKICAgICB2b2lk
IGRlc3Ryb3lSZW5kZXJpbmdSZXNvdXJjZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwCmluZGV4IDc0MGMwZGJj
MDdjYTdkNTVlMTNjZTJiMTkwMjMzM2MwZGUwYTYyNjMuLmVjZDJiOTM1ZDQzM2JlODM3YzRjNGJi
YWRmM2U1NWFjNDY2ZTQxZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2lu
Y2x1ZGUgPFdlYkNvcmUvU2NoZW1lUmVnaXN0cnkuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3Vy
aXR5T3JpZ2luRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1N0b3JhZ2VUeXBlLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CkBAIC01MCw3ICs1MSw3IEBAIFJlZjxTdG9yYWdlQXJlYUltcGw+IFN0
b3JhZ2VBcmVhSW1wbDo6Y3JlYXRlKFJlZjxTdG9yYWdlQXJlYU1hcD4mJiBzdG9yYWdlQXJlYU1h
CiAKIFN0b3JhZ2VBcmVhSW1wbDo6U3RvcmFnZUFyZWFJbXBsKFJlZjxTdG9yYWdlQXJlYU1hcD4m
JiBzdG9yYWdlQXJlYU1hcCkKICAgICA6IG1fc3RvcmFnZUFyZWFJRChnZW5lcmF0ZVN0b3JhZ2VB
cmVhSUQoKSkKLSAgICAsIG1fc3RvcmFnZUFyZWFNYXAoV1RGTW92ZShzdG9yYWdlQXJlYU1hcCkp
CisgICAgLCBtX3N0b3JhZ2VBcmVhTWFwKG1ha2VXZWFrUHRyKHN0b3JhZ2VBcmVhTWFwLmdldCgp
KSkKIHsKIH0KIApAQCAtNjAsNDkgKzYxLDU0IEBAIFN0b3JhZ2VBcmVhSW1wbDo6flN0b3JhZ2VB
cmVhSW1wbCgpCiAKIHVuc2lnbmVkIFN0b3JhZ2VBcmVhSW1wbDo6bGVuZ3RoKCkKIHsKLSAgICBy
ZXR1cm4gbV9zdG9yYWdlQXJlYU1hcC0+bGVuZ3RoKCk7CisgICAgcmV0dXJuIG1fc3RvcmFnZUFy
ZWFNYXAgPyBtX3N0b3JhZ2VBcmVhTWFwLT5sZW5ndGgoKSA6IDA7CiB9CiAKIFN0cmluZyBTdG9y
YWdlQXJlYUltcGw6OmtleSh1bnNpZ25lZCBpbmRleCkKIHsKLSAgICByZXR1cm4gbV9zdG9yYWdl
QXJlYU1hcC0+a2V5KGluZGV4KTsKKyAgICByZXR1cm4gbV9zdG9yYWdlQXJlYU1hcCA/IG1fc3Rv
cmFnZUFyZWFNYXAtPmtleShpbmRleCkgOiBudWxsU3RyaW5nKCk7CiB9CiAKIFN0cmluZyBTdG9y
YWdlQXJlYUltcGw6Oml0ZW0oY29uc3QgU3RyaW5nJiBrZXkpCiB7Ci0gICAgcmV0dXJuIG1fc3Rv
cmFnZUFyZWFNYXAtPml0ZW0oa2V5KTsKLX0KLQotYm9vbCBTdG9yYWdlQXJlYUltcGw6OnByZXdh
cm0oKQotewotICAgIHJldHVybiBtX3N0b3JhZ2VBcmVhTWFwLT5wcmV3YXJtKCk7CisgICAgcmV0
dXJuIG1fc3RvcmFnZUFyZWFNYXAgPyBtX3N0b3JhZ2VBcmVhTWFwLT5pdGVtKGtleSkgOiBudWxs
U3RyaW5nKCk7CiB9CiAKIHZvaWQgU3RvcmFnZUFyZWFJbXBsOjpzZXRJdGVtKEZyYW1lKiBzb3Vy
Y2VGcmFtZSwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wmIHF1
b3RhRXhjZXB0aW9uKQogewogICAgIEFTU0VSVCghdmFsdWUuaXNOdWxsKCkpOwogCi0gICAgbV9z
dG9yYWdlQXJlYU1hcC0+c2V0SXRlbShzb3VyY2VGcmFtZSwgdGhpcywga2V5LCB2YWx1ZSwgcXVv
dGFFeGNlcHRpb24pOworICAgIGlmIChtX3N0b3JhZ2VBcmVhTWFwKQorICAgICAgICBtX3N0b3Jh
Z2VBcmVhTWFwLT5zZXRJdGVtKHNvdXJjZUZyYW1lLCB0aGlzLCBrZXksIHZhbHVlLCBxdW90YUV4
Y2VwdGlvbik7CiB9CiAKIHZvaWQgU3RvcmFnZUFyZWFJbXBsOjpyZW1vdmVJdGVtKEZyYW1lKiBz
b3VyY2VGcmFtZSwgY29uc3QgU3RyaW5nJiBrZXkpCiB7Ci0gICAgbV9zdG9yYWdlQXJlYU1hcC0+
cmVtb3ZlSXRlbShzb3VyY2VGcmFtZSwgdGhpcywga2V5KTsKKyAgICBpZiAobV9zdG9yYWdlQXJl
YU1hcCkKKyAgICAgICAgbV9zdG9yYWdlQXJlYU1hcC0+cmVtb3ZlSXRlbShzb3VyY2VGcmFtZSwg
dGhpcywga2V5KTsKIH0KIAogdm9pZCBTdG9yYWdlQXJlYUltcGw6OmNsZWFyKEZyYW1lKiBzb3Vy
Y2VGcmFtZSkKIHsKLSAgICBtX3N0b3JhZ2VBcmVhTWFwLT5jbGVhcihzb3VyY2VGcmFtZSwgdGhp
cyk7CisgICAgaWYgKG1fc3RvcmFnZUFyZWFNYXApCisgICAgICAgIG1fc3RvcmFnZUFyZWFNYXAt
PmNsZWFyKHNvdXJjZUZyYW1lLCB0aGlzKTsKIH0KIAogYm9vbCBTdG9yYWdlQXJlYUltcGw6OmNv
bnRhaW5zKGNvbnN0IFN0cmluZyYga2V5KQogewotICAgIHJldHVybiBtX3N0b3JhZ2VBcmVhTWFw
LT5jb250YWlucyhrZXkpOworICAgIGlmIChtX3N0b3JhZ2VBcmVhTWFwKQorICAgICAgICByZXR1
cm4gbV9zdG9yYWdlQXJlYU1hcC0+Y29udGFpbnMoa2V5KTsKKworICAgIHJldHVybiBmYWxzZTsK
IH0KIAogU3RvcmFnZVR5cGUgU3RvcmFnZUFyZWFJbXBsOjpzdG9yYWdlVHlwZSgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIG1fc3RvcmFnZUFyZWFNYXAtPnN0b3JhZ2VUeXBlKCk7CisgICAgaWYgKG1f
c3RvcmFnZUFyZWFNYXApCisgICAgICAgIHJldHVybiBtX3N0b3JhZ2VBcmVhTWFwLT5zdG9yYWdl
VHlwZSgpOworCisgICAgLy8gV2UgcHJvYmFibHkgbmVlZCBhbiBJbnZhbGlkIHR5cGUuCisgICAg
cmV0dXJuIFN0b3JhZ2VUeXBlOjpMb2NhbDsKIH0KIAogc2l6ZV90IFN0b3JhZ2VBcmVhSW1wbDo6
bWVtb3J5Qnl0ZXNVc2VkQnlDYWNoZSgpCkBAIC0xMTIsMTIgKzExOCwxMiBAQCBzaXplX3QgU3Rv
cmFnZUFyZWFJbXBsOjptZW1vcnlCeXRlc1VzZWRCeUNhY2hlKCkKIAogdm9pZCBTdG9yYWdlQXJl
YUltcGw6OmluY3JlbWVudEFjY2Vzc0NvdW50KCkKIHsKLSAgICAvLyBTdG9yYWdlIGFjY2VzcyBp
cyBoYW5kbGVkIGluIHRoZSBVSSBwcm9jZXNzLCBzbyB0aGVyZSdzIG5vdGhpbmcgdG8gZG8gaGVy
ZS4KKyAgICAvLyBTdG9yYWdlIGFjY2VzcyBpcyBoYW5kbGVkIGluIHRoZSBuZXR3b3JrIHByb2Nl
c3MsIHNvIHRoZXJlJ3Mgbm90aGluZyB0byBkbyBoZXJlLgogfQogCiB2b2lkIFN0b3JhZ2VBcmVh
SW1wbDo6ZGVjcmVtZW50QWNjZXNzQ291bnQoKQogewotICAgIC8vIFN0b3JhZ2UgYWNjZXNzIGlz
IGhhbmRsZWQgaW4gdGhlIFVJIHByb2Nlc3MsIHNvIHRoZXJlJ3Mgbm90aGluZyB0byBkbyBoZXJl
LgorICAgIC8vIFN0b3JhZ2UgYWNjZXNzIGlzIGhhbmRsZWQgaW4gdGhlIG5ldHdvcmsgcHJvY2Vz
cywgc28gdGhlcmUncyBub3RoaW5nIHRvIGRvIGhlcmUuCiB9CiAKIHZvaWQgU3RvcmFnZUFyZWFJ
bXBsOjpjbG9zZURhdGFiYXNlSWZJZGxlKCkKQEAgLTEyNiw5ICsxMzIsNCBAQCB2b2lkIFN0b3Jh
Z2VBcmVhSW1wbDo6Y2xvc2VEYXRhYmFzZUlmSWRsZSgpCiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiB9CiAKLWNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgU3RvcmFnZUFyZWFJbXBsOjpzZWN1
cml0eU9yaWdpbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc3RvcmFnZUFyZWFNYXAtPnNlY3Vy
aXR5T3JpZ2luKCkuZGF0YSgpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmgK
aW5kZXggYjhmMTZmMmVhYTVhOWVhYzA2NjQ1YjM4ZTVmMGZmMTQ0ZGRkNTgyNC4uYjJhOGQ1MGJl
MTg3MDFkOTFkMzExMTE2OWMxMzJiZjdmYzkxOTk5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmgKQEAgLTI4LDYgKzI4
LDcgQEAKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1N0
b3JhZ2VBcmVhLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvV2Vh
a1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKQEAg
LTYwLDExICs2MSw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbmNyZW1lbnRBY2Nlc3NDb3VudCgp
IG92ZXJyaWRlOwogICAgIHZvaWQgZGVjcmVtZW50QWNjZXNzQ291bnQoKSBvdmVycmlkZTsKICAg
ICB2b2lkIGNsb3NlRGF0YWJhc2VJZklkbGUoKSBvdmVycmlkZTsKLSAgICBjb25zdCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKCkgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgYm9vbCBwcmV3YXJtKCkgZmluYWw7CiAKICAgICB1aW50NjRfdCBtX3N0b3JhZ2VBcmVhSUQ7
Ci0gICAgUmVmPFN0b3JhZ2VBcmVhTWFwPiBtX3N0b3JhZ2VBcmVhTWFwOworICAgIFdlYWtQdHI8
U3RvcmFnZUFyZWFNYXA+IG1fc3RvcmFnZUFyZWFNYXA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0
b3JhZ2VBcmVhTWFwLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0
b3JhZ2VBcmVhTWFwLmNwcAppbmRleCAzZTA1MGRmMTc4YTQ0OGJjOTMyY2E0YmFlYzEwMzFhNzJm
OTM4MGU2Li42NjY1YjNmOWNkZmQ2ZmFmZTZiNmRlMjM5YzE2NDYzZmI4Zjc4NWFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFN
YXAuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFyZWFJbXBsLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFy
ZWFNYXBNZXNzYWdlcy5oIgotI2luY2x1ZGUgIlN0b3JhZ2VNYW5hZ2VyTWVzc2FnZXMuaCIKKyNp
bmNsdWRlICJTdG9yYWdlTWFuYWdlclNldE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiU3RvcmFnZU5h
bWVzcGFjZUltcGwuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZUdy
b3VwUHJveHkuaCIKQEAgLTQ4LDQwICs0OCwyNiBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlU3RvcmFnZU1h
cElEKCkKLXsKLSAgICBzdGF0aWMgdWludDY0X3Qgc3RvcmFnZU1hcElEOwotICAgIHJldHVybiAr
K3N0b3JhZ2VNYXBJRDsKLX0KLQogUmVmPFN0b3JhZ2VBcmVhTWFwPiBTdG9yYWdlQXJlYU1hcDo6
Y3JlYXRlKFN0b3JhZ2VOYW1lc3BhY2VJbXBsKiBzdG9yYWdlTmFtZXNwYWNlLCBSZWY8V2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW4+JiYgc2VjdXJpdHlPcmlnaW4pCiB7CiAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU3RvcmFnZUFyZWFNYXAoc3RvcmFnZU5hbWVzcGFjZSwgV1RGTW92ZShzZWN1cml0
eU9yaWdpbikpKTsKIH0KIAogU3RvcmFnZUFyZWFNYXA6OlN0b3JhZ2VBcmVhTWFwKFN0b3JhZ2VO
YW1lc3BhY2VJbXBsKiBzdG9yYWdlTmFtZXNwYWNlLCBSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmln
aW4+JiYgc2VjdXJpdHlPcmlnaW4pCi0gICAgOiBtX3N0b3JhZ2VOYW1lc3BhY2UoKnN0b3JhZ2VO
YW1lc3BhY2UpCi0gICAgLCBtX3N0b3JhZ2VNYXBJRChnZW5lcmF0ZVN0b3JhZ2VNYXBJRCgpKQor
ICAgIDogbV9zdG9yYWdlTmFtZXNwYWNlKHN0b3JhZ2VOYW1lc3BhY2UpCisgICAgLCBtX3N0b3Jh
Z2VNYXBJRCgwKQogICAgICwgbV9zdG9yYWdlVHlwZShzdG9yYWdlTmFtZXNwYWNlLT5zdG9yYWdl
VHlwZSgpKQotICAgICwgbV9zdG9yYWdlTmFtZXNwYWNlSUQoc3RvcmFnZU5hbWVzcGFjZS0+c3Rv
cmFnZU5hbWVzcGFjZUlEKCkpCiAgICAgLCBtX3F1b3RhSW5CeXRlcyhzdG9yYWdlTmFtZXNwYWNl
LT5xdW90YUluQnl0ZXMoKSkKICAgICAsIG1fc2VjdXJpdHlPcmlnaW4oV1RGTW92ZShzZWN1cml0
eU9yaWdpbikpCiAgICAgLCBtX2N1cnJlbnRTZWVkKDApCiAgICAgLCBtX2hhc1BlbmRpbmdDbGVh
cihmYWxzZSkKLSAgICAsIG1faGFzUGVuZGluZ0dldFZhbHVlcyhmYWxzZSkKIHsKLSAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5yZWdpc3RlclN0b3JhZ2VBcmVhTWFwKCp0aGlzKTsKICAgICBj
b25uZWN0KCk7CiB9CiAKIFN0b3JhZ2VBcmVhTWFwOjp+U3RvcmFnZUFyZWFNYXAoKQogewotICAg
IGlmIChtX3N0b3JhZ2VUeXBlICE9IFN0b3JhZ2VUeXBlOjpFcGhlbWVyYWxMb2NhbCkKLSAgICAg
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
KCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VNYW5hZ2VyOjpEZXN0cm95U3Rv
cmFnZU1hcChtX3N0b3JhZ2VNYXBJRCksIDApOwotCi0gICAgbV9zdG9yYWdlTmFtZXNwYWNlLT5k
aWREZXN0cm95U3RvcmFnZUFyZWFNYXAoKnRoaXMpOwotCi0gICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkudW5yZWdpc3RlclN0b3JhZ2VBcmVhTWFwKCp0aGlzKTsKKyAgICBkaXNjb25uZWN0KCk7
CiB9CiAKIHVuc2lnbmVkIFN0b3JhZ2VBcmVhTWFwOjpsZW5ndGgoKQpAQCAtMTIyLDcgKzEwOCw3
IEBAIHZvaWQgU3RvcmFnZUFyZWFNYXA6OnNldEl0ZW0oRnJhbWUqIHNvdXJjZUZyYW1lLCBTdG9y
YWdlQXJlYUltcGwqIHNvdXJjZUFyZWEsIGNvCiAKICAgICBtX3BlbmRpbmdWYWx1ZUNoYW5nZXMu
YWRkKGtleSk7CiAKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6U3RvcmFnZU1hbmFn
ZXI6OlNldEl0ZW0obV9zZWN1cml0eU9yaWdpbi0+ZGF0YSgpLCBtX3N0b3JhZ2VNYXBJRCwgc291
cmNlQXJlYS0+c3RvcmFnZUFyZWFJRCgpLCBtX2N1cnJlbnRTZWVkLCBrZXksIHZhbHVlLCBzb3Vy
Y2VGcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChN
ZXNzYWdlczo6U3RvcmFnZU1hbmFnZXJTZXQ6OlNldEl0ZW0obV9zdG9yYWdlTWFwSUQsIHNvdXJj
ZUFyZWEtPnN0b3JhZ2VBcmVhSUQoKSwgbV9jdXJyZW50U2VlZCwga2V5LCB2YWx1ZSwgc291cmNl
RnJhbWUtPmRvY3VtZW50KCktPnVybCgpKSwgMCk7CiB9CiAKIHZvaWQgU3RvcmFnZUFyZWFNYXA6
OnJlbW92ZUl0ZW0oV2ViQ29yZTo6RnJhbWUqIHNvdXJjZUZyYW1lLCBTdG9yYWdlQXJlYUltcGwq
IHNvdXJjZUFyZWEsIGNvbnN0IFN0cmluZyYga2V5KQpAQCAtMTM4LDE2ICsxMjQsMTggQEAgdm9p
ZCBTdG9yYWdlQXJlYU1hcDo6cmVtb3ZlSXRlbShXZWJDb3JlOjpGcmFtZSogc291cmNlRnJhbWUs
IFN0b3JhZ2VBcmVhSW1wbCogc28KIAogICAgIG1fcGVuZGluZ1ZhbHVlQ2hhbmdlcy5hZGQoa2V5
KTsKIAotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdlcjo6UmVt
b3ZlSXRlbShtX3NlY3VyaXR5T3JpZ2luLT5kYXRhKCksIG1fc3RvcmFnZU1hcElELCBzb3VyY2VB
cmVhLT5zdG9yYWdlQXJlYUlEKCksIG1fY3VycmVudFNlZWQsIGtleSwgc291cmNlRnJhbWUtPmRv
Y3VtZW50KCktPnVybCgpKSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJl
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlN0
b3JhZ2VNYW5hZ2VyU2V0OjpSZW1vdmVJdGVtKG1fc3RvcmFnZU1hcElELCBzb3VyY2VBcmVhLT5z
dG9yYWdlQXJlYUlEKCksIG1fY3VycmVudFNlZWQsIGtleSwgc291cmNlRnJhbWUtPmRvY3VtZW50
KCktPnVybCgpKSwgMCk7CiB9CiAKIHZvaWQgU3RvcmFnZUFyZWFNYXA6OmNsZWFyKFdlYkNvcmU6
OkZyYW1lKiBzb3VyY2VGcmFtZSwgU3RvcmFnZUFyZWFJbXBsKiBzb3VyY2VBcmVhKQogeworICAg
IGNvbm5lY3QoKTsKKwogICAgIHJlc2V0VmFsdWVzKCk7CiAKICAgICBtX2hhc1BlbmRpbmdDbGVh
ciA9IHRydWU7CiAgICAgbV9zdG9yYWdlTWFwID0gU3RvcmFnZU1hcDo6Y3JlYXRlKG1fcXVvdGFJ
bkJ5dGVzKTsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXI6
OkNsZWFyKG1fc2VjdXJpdHlPcmlnaW4tPmRhdGEoKSwgbV9zdG9yYWdlTWFwSUQsIHNvdXJjZUFy
ZWEtPnN0b3JhZ2VBcmVhSUQoKSwgbV9jdXJyZW50U2VlZCwgc291cmNlRnJhbWUtPmRvY3VtZW50
KCktPnVybCgpKSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VN
YW5hZ2VyU2V0OjpDbGVhcihtX3N0b3JhZ2VNYXBJRCwgc291cmNlQXJlYS0+c3RvcmFnZUFyZWFJ
RCgpLCBtX2N1cnJlbnRTZWVkLCBzb3VyY2VGcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkpLCAwKTsK
IH0KIAogYm9vbCBTdG9yYWdlQXJlYU1hcDo6Y29udGFpbnMoY29uc3QgU3RyaW5nJiBrZXkpCkBA
IC0xNjMsNyArMTUxLDYgQEAgdm9pZCBTdG9yYWdlQXJlYU1hcDo6cmVzZXRWYWx1ZXMoKQogCiAg
ICAgbV9wZW5kaW5nVmFsdWVDaGFuZ2VzLmNsZWFyKCk7CiAgICAgbV9oYXNQZW5kaW5nQ2xlYXIg
PSBmYWxzZTsKLSAgICBtX2hhc1BlbmRpbmdHZXRWYWx1ZXMgPSBmYWxzZTsKICAgICBtX2N1cnJl
bnRTZWVkKys7CiB9CiAKQEAgLTE3OCwzMyArMTY1LDEwIEBAIHZvaWQgU3RvcmFnZUFyZWFNYXA6
OmxvYWRWYWx1ZXNJZk5lZWRlZCgpCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHVzZSBhIHNw
ZWNpYWwgc2VuZFN5bmMgZmxhZyB0byBpbmRpY2F0ZSB0aGF0IHdlIGRvbid0IHdhbnQgdG8gcHJv
Y2VzcyBpbmNvbWluZyBtZXNzYWdlcyB3aGlsZSB3YWl0aW5nIGZvciBhIHJlcGx5LgogICAgIC8v
IChUaGlzIGZsYWcgZG9lcyBub3QgeWV0IGV4aXN0KS4gU2luY2UgbG9hZFZhbHVlc0lmTmVlZGVk
KCkgZW5kcyB1cCBiZWluZyBjYWxsZWQgZnJvbSB3aXRoaW4gSmF2YVNjcmlwdCBjb2RlLCBwcm9j
ZXNzaW5nIGluY29taW5nIHN5bmNocm9ub3VzIG1lc3NhZ2VzCiAgICAgLy8gY291bGQgbGVhZCB0
byB3ZWlyZCByZWVudHJlbmN5IGJ1Z3Mgb3RoZXJ3aXNlLgotICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5k
U3luYyhNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXI6OkdldFZhbHVlcyhtX3N0b3JhZ2VNYXBJRCwg
bV9jdXJyZW50U2VlZCksIE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdlcjo6R2V0VmFsdWVzOjpSZXBs
eSh2YWx1ZXMpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlN0b3Jh
Z2VNYW5hZ2VyU2V0OjpHZXRWYWx1ZXMobV9zdG9yYWdlTWFwSUQpLCBNZXNzYWdlczo6U3RvcmFn
ZU1hbmFnZXJTZXQ6OkdldFZhbHVlczo6UmVwbHkodmFsdWVzKSwgMCk7CiAKICAgICBtX3N0b3Jh
Z2VNYXAgPSBTdG9yYWdlTWFwOjpjcmVhdGUobV9xdW90YUluQnl0ZXMpOwogICAgIG1fc3RvcmFn
ZU1hcC0+aW1wb3J0SXRlbXMoV1RGTW92ZSh2YWx1ZXMpKTsKLQotICAgIC8vIFdlIHdhbnQgdG8g
aWdub3JlIGFsbCBjaGFuZ2VzIHVudGlsIHdlIGdldCB0aGUgRGlkR2V0VmFsdWVzIG1lc3NhZ2Uu
Ci0gICAgbV9oYXNQZW5kaW5nR2V0VmFsdWVzID0gdHJ1ZTsKLX0KLQotYm9vbCBTdG9yYWdlQXJl
YU1hcDo6cHJld2FybSgpCi17Ci0gICAgaWYgKG1fZGlkUHJld2FybSB8fCBtX3N0b3JhZ2VNYXAp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBtX2RpZFByZXdhcm0gPSB0cnVlOwotCi0gICAg
Y29ubmVjdCgpOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdl
cjo6UHJld2FybShtX3N0b3JhZ2VNYXBJRCksIDApOwotICAgIHJldHVybiB0cnVlOwotfQotCi12
b2lkIFN0b3JhZ2VBcmVhTWFwOjpkaWRHZXRWYWx1ZXModWludDY0X3Qgc3RvcmFnZU1hcFNlZWQp
Ci17Ci0gICAgaWYgKG1fY3VycmVudFNlZWQgIT0gc3RvcmFnZU1hcFNlZWQpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIEFTU0VSVChtX2hhc1BlbmRpbmdHZXRWYWx1ZXMpOwotICAgIG1faGFzUGVu
ZGluZ0dldFZhbHVlcyA9IGZhbHNlOwogfQogCiB2b2lkIFN0b3JhZ2VBcmVhTWFwOjpkaWRTZXRJ
dGVtKHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkLCBjb25zdCBTdHJpbmcmIGtleSwgYm9vbCBxdW90
YUVycm9yKQpAQCAtMjU5LDggKzIyMyw4IEBAIHZvaWQgU3RvcmFnZUFyZWFNYXA6OmFwcGx5Q2hh
bmdlKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlKQogewogICAgIEFT
U0VSVCghbV9zdG9yYWdlTWFwIHx8IG1fc3RvcmFnZU1hcC0+aGFzT25lUmVmKCkpOwogCi0gICAg
Ly8gVGhlcmUncyBhIGNsZWFyIHBlbmRpbmcgb3IgZ2V0VmFsdWVzIHBlbmRpbmcgd2UgZG9uJ3Qg
d2FudCB0byBhcHBseSBhbnkgY2hhbmdlcyB1bnRpbCB3ZSBnZXQgdGhlIGNvcnJlc3BvbmRpbmcg
RGlkQ2xlYXIvRGlkR2V0VmFsdWVzIG1lc3NhZ2VzLgotICAgIGlmIChtX2hhc1BlbmRpbmdDbGVh
ciB8fCBtX2hhc1BlbmRpbmdHZXRWYWx1ZXMpCisgICAgLy8gVGhlcmUgaXMgYXQgbGVhc3Qgb25l
IGNsZWFyIHBlbmRpbmcgd2UgZG9uJ3Qgd2FudCB0byBhcHBseSBhbnkgY2hhbmdlcyB1bnRpbCB3
ZSBnZXQgdGhlIGNvcnJlc3BvbmRpbmcgRGlkQ2xlYXIgbWVzc2FnZXMuCisgICAgaWYgKG1faGFz
UGVuZGluZ0NsZWFyKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIWtleSkgewpAQCAtMzA1
LDcgKzI2OSw3IEBAIHZvaWQgU3RvcmFnZUFyZWFNYXA6OmRpc3BhdGNoU3RvcmFnZUV2ZW50KHVp
bnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIGNvbnN0IFN0CiAgICAgICAgIGFwcGx5Q2hhbmdl
KGtleSwgbmV3VmFsdWUpOwogICAgIH0KIAotICAgIGlmIChzdG9yYWdlVHlwZSgpID09IFN0b3Jh
Z2VUeXBlOjpTZXNzaW9uIHx8IHN0b3JhZ2VUeXBlKCkgPT0gU3RvcmFnZVR5cGU6OkVwaGVtZXJh
bExvY2FsKQorICAgIGlmIChzdG9yYWdlVHlwZSgpID09IFN0b3JhZ2VUeXBlOjpTZXNzaW9uKQog
ICAgICAgICBkaXNwYXRjaFNlc3Npb25TdG9yYWdlRXZlbnQoc291cmNlU3RvcmFnZUFyZWFJRCwg
a2V5LCBvbGRWYWx1ZSwgbmV3VmFsdWUsIHVybFN0cmluZyk7CiAgICAgZWxzZQogICAgICAgICBk
aXNwYXRjaExvY2FsU3RvcmFnZUV2ZW50KHNvdXJjZVN0b3JhZ2VBcmVhSUQsIGtleSwgb2xkVmFs
dWUsIG5ld1ZhbHVlLCB1cmxTdHJpbmcpOwpAQCAtMzE4LDkgKzI4Miw5IEBAIHZvaWQgU3RvcmFn
ZUFyZWFNYXA6OmNsZWFyQ2FjaGUoKQogCiB2b2lkIFN0b3JhZ2VBcmVhTWFwOjpkaXNwYXRjaFNl
c3Npb25TdG9yYWdlRXZlbnQodWludDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwgY29uc3QgU3Ry
aW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUs
IGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQogewotICAgIC8vIE5hbWVzcGFjZSBJRHMgZm9yIHNl
c3Npb24gc3RvcmFnZSBuYW1lc3BhY2VzIGFuZCBlcGhlbWVyYWwgbG9jYWwgc3RvcmFnZSBuYW1l
c3BhY2VzIGFyZSBlcXVpdmFsZW50IHRvIHdlYiBwYWdlIElEcworICAgIC8vIE5hbWVzcGFjZSBJ
RHMgZm9yIHNlc3Npb24gc3RvcmFnZSBuYW1lc3BhY2VzIGFyZSBlcXVpdmFsZW50IHRvIHdlYiBw
YWdlIElEcwogICAgIC8vIHNvIHdlIGNhbiBnZXQgdGhlIHJpZ2h0IHBhZ2UgaGVyZS4KLSAgICBX
ZWJQYWdlKiB3ZWJQYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShtYWtlT2Jq
ZWN0SWRlbnRpZmllcjxQYWdlSWRlbnRpZmllclR5cGU+KG1fc3RvcmFnZU5hbWVzcGFjZUlEKSk7
CisgICAgV2ViUGFnZSogd2ViUGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2Uo
bWFrZU9iamVjdElkZW50aWZpZXI8UGFnZUlkZW50aWZpZXJUeXBlPihtX3N0b3JhZ2VOYW1lc3Bh
Y2UtPnN0b3JhZ2VOYW1lc3BhY2VJRCgpKSk7CiAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICBy
ZXR1cm47CiAKQEAgLTM1NCw3ICszMTgsOCBAQCB2b2lkIFN0b3JhZ2VBcmVhTWFwOjpkaXNwYXRj
aExvY2FsU3RvcmFnZUV2ZW50KHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIGNvbgogCiAg
ICAgVmVjdG9yPFJlZlB0cjxGcmFtZT4+IGZyYW1lczsKIAotICAgIFBhZ2VHcm91cCYgcGFnZUdy
b3VwID0gKldlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2VHcm91cChtX3N0b3JhZ2VOYW1l
c3BhY2VJRCktPmNvcmVQYWdlR3JvdXAoKTsKKyAgICAvLyBOYW1lc3BhY2UgSURzIGZvciBsb2Nh
bCBzdG9yYWdlIG5hbWVzcGFjZXMgYXJlIGVxdWl2YWxlbnQgdG8gd2ViIHBhZ2UgZ3JvdXAgSURz
LgorICAgIFBhZ2VHcm91cCYgcGFnZUdyb3VwID0gKldlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndl
YlBhZ2VHcm91cChtX3N0b3JhZ2VOYW1lc3BhY2UtPnN0b3JhZ2VOYW1lc3BhY2VJRCgpKS0+Y29y
ZVBhZ2VHcm91cCgpOwogICAgIGNvbnN0IEhhc2hTZXQ8UGFnZSo+JiBwYWdlcyA9IHBhZ2VHcm91
cC5wYWdlcygpOwogICAgIGZvciAoSGFzaFNldDxQYWdlKj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0g
cGFnZXMuYmVnaW4oKSwgZW5kID0gcGFnZXMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAg
ICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICYoKml0KS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFt
ZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKQEAgLTM4MSwzNSArMzQ2LDM3IEBA
IHZvaWQgU3RvcmFnZUFyZWFNYXA6OmRpc3BhdGNoTG9jYWxTdG9yYWdlRXZlbnQodWludDY0X3Qg
c291cmNlU3RvcmFnZUFyZWFJRCwgY29uCiAKIHZvaWQgU3RvcmFnZUFyZWFNYXA6OmNvbm5lY3Qo
KQogewotICAgIGlmICghbV9pc0Rpc2Nvbm5lY3RlZCkKKyAgICBpZiAobV9zdG9yYWdlTWFwSUQp
CiAgICAgICAgIHJldHVybjsKIAogICAgIHN3aXRjaCAobV9zdG9yYWdlVHlwZSkgewogICAgIGNh
c2UgU3RvcmFnZVR5cGU6OkxvY2FsOgotICAgIGNhc2UgU3RvcmFnZVR5cGU6OkVwaGVtZXJhbExv
Y2FsOgogICAgIGNhc2UgU3RvcmFnZVR5cGU6OlRyYW5zaWVudExvY2FsOgogICAgICAgICBpZiAo
U2VjdXJpdHlPcmlnaW4qIHRvcExldmVsT3JpZ2luID0gbV9zdG9yYWdlTmFtZXNwYWNlLT50b3BM
ZXZlbE9yaWdpbigpKQotICAgICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJl
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlN0
b3JhZ2VNYW5hZ2VyOjpDcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VNYXAobV9zdG9yYWdlTWFw
SUQsIG1fc3RvcmFnZU5hbWVzcGFjZS0+c3RvcmFnZU5hbWVzcGFjZUlEKCksIHRvcExldmVsT3Jp
Z2luLT5kYXRhKCksIG1fc2VjdXJpdHlPcmlnaW4tPmRhdGEoKSksIDApOworICAgICAgICAgICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCku
Y29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdlclNldDo6Q29ubmVj
dFRvVHJhbnNpZW50TG9jYWxTdG9yYWdlQXJlYShtX3N0b3JhZ2VOYW1lc3BhY2UtPnNlc3Npb25J
RCgpLCBtX3N0b3JhZ2VOYW1lc3BhY2UtPnN0b3JhZ2VOYW1lc3BhY2VJRCgpLCB0b3BMZXZlbE9y
aWdpbi0+ZGF0YSgpLCBtX3NlY3VyaXR5T3JpZ2luLT5kYXRhKCkpLCBNZXNzYWdlczo6U3RvcmFn
ZU1hbmFnZXJTZXQ6OkNvbm5lY3RUb1RyYW5zaWVudExvY2FsU3RvcmFnZUFyZWE6OlJlcGx5KG1f
c3RvcmFnZU1hcElEKSwgMCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24o
KS5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdlcjo6Q3JlYXRlTG9jYWxTdG9yYWdlTWFwKG1f
c3RvcmFnZU1hcElELCBtX3N0b3JhZ2VOYW1lc3BhY2UtPnN0b3JhZ2VOYW1lc3BhY2VJRCgpLCBt
X3NlY3VyaXR5T3JpZ2luLT5kYXRhKCkpLCAwKTsKKyAgICAgICAgICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5z
ZW5kU3luYyhNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXJTZXQ6OkNvbm5lY3RUb0xvY2FsU3RvcmFn
ZUFyZWEobV9zdG9yYWdlTmFtZXNwYWNlLT5zZXNzaW9uSUQoKSwgbV9zdG9yYWdlTmFtZXNwYWNl
LT5zdG9yYWdlTmFtZXNwYWNlSUQoKSwgbV9zZWN1cml0eU9yaWdpbi0+ZGF0YSgpKSwgTWVzc2Fn
ZXM6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpDb25uZWN0VG9Mb2NhbFN0b3JhZ2VBcmVhOjpSZXBseSht
X3N0b3JhZ2VNYXBJRCksIDApOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFN0b3JhZ2VUeXBl
OjpTZXNzaW9uOgotICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6U3RvcmFnZU1h
bmFnZXI6OkNyZWF0ZVNlc3Npb25TdG9yYWdlTWFwKG1fc3RvcmFnZU1hcElELCBtX3N0b3JhZ2VO
YW1lc3BhY2UtPnN0b3JhZ2VOYW1lc3BhY2VJRCgpLCBtX3NlY3VyaXR5T3JpZ2luLT5kYXRhKCkp
LCAwKTsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpTdG9yYWdlTWFu
YWdlclNldDo6Q29ubmVjdFRvU2Vzc2lvblN0b3JhZ2VBcmVhKG1fc3RvcmFnZU5hbWVzcGFjZS0+
c2Vzc2lvbklEKCksIG1fc3RvcmFnZU5hbWVzcGFjZS0+c3RvcmFnZU5hbWVzcGFjZUlEKCksIG1f
c2VjdXJpdHlPcmlnaW4tPmRhdGEoKSksIE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdlclNldDo6Q29u
bmVjdFRvU2Vzc2lvblN0b3JhZ2VBcmVhOjpSZXBseShtX3N0b3JhZ2VNYXBJRCksIDApOwogICAg
IH0KIAotICAgIGlmIChtX3N0b3JhZ2VNYXApCi0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1l
c3NhZ2VzOjpTdG9yYWdlTWFuYWdlcjo6U2V0SXRlbXMobV9zdG9yYWdlTWFwSUQsIG1fc3RvcmFn
ZU1hcC0+aXRlbXMoKSksIDApOwotICAgIG1faXNEaXNjb25uZWN0ZWQgPSBmYWxzZTsKKyAgICBp
ZiAobV9zdG9yYWdlTWFwSUQpCisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnJlZ2lz
dGVyU3RvcmFnZUFyZWFNYXAoKnRoaXMpOwogfQogCiB2b2lkIFN0b3JhZ2VBcmVhTWFwOjpkaXNj
b25uZWN0KCkKIHsKLSAgICBtX2lzRGlzY29ubmVjdGVkID0gdHJ1ZTsKLSAgICBpZiAobV9zdG9y
YWdlVHlwZSA9PSBTdG9yYWdlVHlwZTo6U2Vzc2lvbiAmJiBtX3N0b3JhZ2VNYXApIHsKLSAgICAg
ICAgbV9wZW5kaW5nVmFsdWVDaGFuZ2VzLmNsZWFyKCk7Ci0gICAgICAgIG1faGFzUGVuZGluZ0Ns
ZWFyID0gZmFsc2U7Ci0gICAgfSBlbHNlCi0gICAgICAgIHJlc2V0VmFsdWVzKCk7CisgICAgaWYg
KCFtX3N0b3JhZ2VNYXBJRCkKKyAgICAgICAgcmV0dXJuOworCisgICAgcmVzZXRWYWx1ZXMoKTsK
KyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS51bnJlZ2lzdGVyU3RvcmFnZUFyZWFNYXAoKnRo
aXMpOworCisgICAgaWYgKGF1dG8gbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uID0gV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkuZXhpc3RpbmdOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKSkKKyAgICAg
ICAgbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6
U3RvcmFnZU1hbmFnZXJTZXQ6OkRpc2Nvbm5lY3RGcm9tU3RvcmFnZUFyZWEobV9zdG9yYWdlTWFw
SUQpLCAwKTsKKworICAgIG1fc3RvcmFnZU1hcElEID0gMDsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9T
dG9yYWdlQXJlYU1hcC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3Rv
cmFnZUFyZWFNYXAuaAppbmRleCBmYjkxYmM5MDU0MjVmYzgxYzZhNDgzNTI3NGFiY2MwYzE3ZGE0
OWM2Li40NGFkMDZmOTFiNTVjN2Y0MWU2ZDBmMjg4N2M5ZWMxN2Q1MmE3NDFkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmgK
QEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlIDx3dGYvSGFzaENvdW50ZWRTZXQuaD4KICNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRl
IDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTZWN1cml0eU9y
aWdpbjsKQEAgLTQzLDcgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBTdG9yYWdl
QXJlYUltcGw7CiBjbGFzcyBTdG9yYWdlTmFtZXNwYWNlSW1wbDsKIAotY2xhc3MgU3RvcmFnZUFy
ZWFNYXAgOiBwdWJsaWMgUmVmQ291bnRlZDxTdG9yYWdlQXJlYU1hcD4sIHByaXZhdGUgSVBDOjpN
ZXNzYWdlUmVjZWl2ZXIgeworY2xhc3MgU3RvcmFnZUFyZWFNYXAgOiBwdWJsaWMgUmVmQ291bnRl
ZDxTdG9yYWdlQXJlYU1hcD4sIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHB1YmxpYyBD
YW5NYWtlV2Vha1B0cjxTdG9yYWdlQXJlYU1hcD4gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8
U3RvcmFnZUFyZWFNYXA+IGNyZWF0ZShTdG9yYWdlTmFtZXNwYWNlSW1wbCosIFJlZjxXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbj4mJik7CiAgICAgflN0b3JhZ2VBcmVhTWFwKCk7CkBAIC01Nyw3ICs1
OCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZUl0ZW0oV2ViQ29yZTo6RnJhbWUqIHNvdXJj
ZUZyYW1lLCBTdG9yYWdlQXJlYUltcGwqIHNvdXJjZUFyZWEsIGNvbnN0IFN0cmluZyYga2V5KTsK
ICAgICB2b2lkIGNsZWFyKFdlYkNvcmU6OkZyYW1lKiBzb3VyY2VGcmFtZSwgU3RvcmFnZUFyZWFJ
bXBsKiBzb3VyY2VBcmVhKTsKICAgICBib29sIGNvbnRhaW5zKGNvbnN0IFN0cmluZyYga2V5KTsK
LSAgICBib29sIHByZXdhcm0oKTsKIAogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAg
dm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBv
dmVycmlkZTsKQEAgLTcxLDcgKzcxLDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBTdG9yYWdl
QXJlYU1hcChTdG9yYWdlTmFtZXNwYWNlSW1wbCosIFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bj4mJik7CiAKLSAgICB2b2lkIGRpZEdldFZhbHVlcyh1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCk7
CiAgICAgdm9pZCBkaWRTZXRJdGVtKHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkLCBjb25zdCBTdHJp
bmcmIGtleSwgYm9vbCBxdW90YUVycm9yKTsKICAgICB2b2lkIGRpZFJlbW92ZUl0ZW0odWludDY0
X3Qgc3RvcmFnZU1hcFNlZWQsIGNvbnN0IFN0cmluZyYga2V5KTsKICAgICB2b2lkIGRpZENsZWFy
KHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkKTsKQEAgLTg4LDEyICs4NywxMSBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50KHVpbnQ2NF90IHNvdXJjZVN0b3Jh
Z2VBcmVhSUQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25z
dCBTdHJpbmcmIG5ld1ZhbHVlLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZyk7CiAgICAgdm9pZCBk
aXNwYXRjaExvY2FsU3RvcmFnZUV2ZW50KHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIGNv
bnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5l
d1ZhbHVlLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZyk7CiAKLSAgICBSZWY8U3RvcmFnZU5hbWVz
cGFjZUltcGw+IG1fc3RvcmFnZU5hbWVzcGFjZTsKKyAgICBTdG9yYWdlTmFtZXNwYWNlSW1wbCog
bV9zdG9yYWdlTmFtZXNwYWNlOwogCiAgICAgdWludDY0X3QgbV9zdG9yYWdlTWFwSUQ7CiAKICAg
ICBXZWJDb3JlOjpTdG9yYWdlVHlwZSBtX3N0b3JhZ2VUeXBlOwotICAgIHVpbnQ2NF90IG1fc3Rv
cmFnZU5hbWVzcGFjZUlEOwogICAgIHVuc2lnbmVkIG1fcXVvdGFJbkJ5dGVzOwogICAgIFJlZjxX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4gbV9zZWN1cml0eU9yaWdpbjsKIApAQCAtMTAxLDExICs5
OSw3IEBAIHByaXZhdGU6CiAKICAgICB1aW50NjRfdCBtX2N1cnJlbnRTZWVkOwogICAgIGJvb2wg
bV9oYXNQZW5kaW5nQ2xlYXI7Ci0gICAgYm9vbCBtX2hhc1BlbmRpbmdHZXRWYWx1ZXM7CiAgICAg
SGFzaENvdW50ZWRTZXQ8U3RyaW5nPiBtX3BlbmRpbmdWYWx1ZUNoYW5nZXM7Ci0KLSAgICBib29s
IG1faXNEaXNjb25uZWN0ZWQgeyB0cnVlIH07Ci0gICAgYm9vbCBtX2RpZFByZXdhcm0geyBmYWxz
ZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLm1lc3NhZ2Vz
LmluCmluZGV4IGIxNTkwNGYxNmJlYzE0MmIxMGI0ODAwZDEwNjQ1MDA5MzM4MzAwZDUuLjdhNzVk
MjEwZmQ4MzI1ZjJiNTFhODljZTNlNTQyZDQ4MDM5MDk2YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLm1l
c3NhZ2VzLmluCkBAIC0yMSw3ICsyMSw2IEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIG1lc3NhZ2VzIC0+
IFN0b3JhZ2VBcmVhTWFwIHsKLSAgICBEaWRHZXRWYWx1ZXModWludDY0X3Qgc3RvcmFnZU1hcFNl
ZWQpCiAgICAgRGlkU2V0SXRlbSh1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCwgU3RyaW5nIGtleSwg
Ym9vbCBxdW90YUV4Y2VwdGlvbikKICAgICBEaWRSZW1vdmVJdGVtKHVpbnQ2NF90IHN0b3JhZ2VN
YXBTZWVkLCBTdHJpbmcga2V5KQogICAgIERpZENsZWFyKHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVk
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFn
ZU5hbWVzcGFjZUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2Uv
U3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCmluZGV4IGY1OWM3OWI3ZmEyYmUyZmM5YTcyMDUyYzFi
OWU1M2NiNmEzMjNmZDAuLjc0Mjk2MTg5MzI4ODRlZTI1NDI5OGZiMzM1YzBlOGMzMjQwOTc2ZWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VO
YW1lc3BhY2VJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFn
ZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUg
IlN0b3JhZ2VBcmVhSW1wbC5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhTWFwLmgiCisjaW5jbHVk
ZSAiU3RvcmFnZU1hbmFnZXJTZXRNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNp
bmNsdWRlICJXZWJQYWdlR3JvdXBQcm94eS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKQEAg
LTQwLDMxICs0MSwyNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAotUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6
Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgdW5zaWdu
ZWQgcXVvdGFJbkJ5dGVzKQorUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNw
YWNlSW1wbDo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmll
ciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7Ci0g
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5cGU6
OlNlc3Npb24sIGlkZW50aWZpZXIsIG51bGxwdHIsIHF1b3RhSW5CeXRlcykpOworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0b3JhZ2VUeXBlOjpTZXNzaW9u
LCBpZGVudGlmaWVyLCBudWxscHRyLCBxdW90YUluQnl0ZXMsIHNlc3Npb25JRCkpOwogfQogCi1S
ZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVFcGhl
bWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgdW5zaWduZWQg
cXVvdGFJbkJ5dGVzKQorUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNl
SW1wbDo6Y3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVu
c2lnbmVkIHF1b3RhSW5CeXRlcywgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogewotICAgIHJl
dHVybiBjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoaWRlbnRpZmllciwgcXVvdGFJbkJ5dGVz
LCBJc0VwaGVtZXJhbDo6WWVzKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9yYWdlTmFt
ZXNwYWNlSW1wbChTdG9yYWdlVHlwZTo6TG9jYWwsIGlkZW50aWZpZXIsIG51bGxwdHIsIHF1b3Rh
SW5CeXRlcywgc2Vzc2lvbklEKSk7CiB9CiAKLVJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3Rv
cmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBp
ZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMsIElzRXBoZW1lcmFsIGlzRXBoZW1lcmFs
KQorUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRl
VHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luJiB0b3BMZXZlbE9yaWdpbiwgdWludDY0X3QgcXVvdGFJbkJ5dGVz
LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U3RvcmFnZU5hbWVzcGFjZUltcGwoaXNFcGhlbWVyYWwgPT0gSXNFcGhlbWVyYWw6OlllcyA/IFN0
b3JhZ2VUeXBlOjpFcGhlbWVyYWxMb2NhbCA6IFN0b3JhZ2VUeXBlOjpMb2NhbCwgaWRlbnRpZmll
ciwgbnVsbHB0ciwgcXVvdGFJbkJ5dGVzKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3Rv
cmFnZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5cGU6OlRyYW5zaWVudExvY2FsLCBpZGVudGlmaWVy
LCAmdG9wTGV2ZWxPcmlnaW4sIHF1b3RhSW5CeXRlcywgc2Vzc2lvbklEKSk7CiB9CiAKLVJlZjxT
dG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVRyYW5zaWVu
dExvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbiYgdG9wTGV2ZWxPcmlnaW4sIHVpbnQ2NF90IHF1b3RhSW5CeXRlcykKLXsKLSAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChTdG9yYWdlVHlwZTo6
VHJhbnNpZW50TG9jYWwsIGlkZW50aWZpZXIsICZ0b3BMZXZlbE9yaWdpbiwgcXVvdGFJbkJ5dGVz
KSk7Ci19Ci0KLVN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpTdG9yYWdlTmFtZXNwYWNlSW1wbChXZWJD
b3JlOjpTdG9yYWdlVHlwZSBzdG9yYWdlVHlwZSwgdWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlE
LCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiogdG9wTGV2ZWxPcmlnaW4sIHVuc2lnbmVkIHF1b3Rh
SW5CeXRlcykKK1N0b3JhZ2VOYW1lc3BhY2VJbXBsOjpTdG9yYWdlTmFtZXNwYWNlSW1wbChXZWJD
b3JlOjpTdG9yYWdlVHlwZSBzdG9yYWdlVHlwZSwgdWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlE
LCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiogdG9wTGV2ZWxPcmlnaW4sIHVuc2lnbmVkIHF1b3Rh
SW5CeXRlcywgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgIDogbV9zdG9yYWdlVHlwZShz
dG9yYWdlVHlwZSkKICAgICAsIG1fc3RvcmFnZU5hbWVzcGFjZUlEKHN0b3JhZ2VOYW1lc3BhY2VJ
RCkKICAgICAsIG1fdG9wTGV2ZWxPcmlnaW4odG9wTGV2ZWxPcmlnaW4pCiAgICAgLCBtX3F1b3Rh
SW5CeXRlcyhxdW90YUluQnl0ZXMpCisgICAgLCBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCiB7CiB9
CiAKQEAgLTc3LDEzICs3NCwxNCBAQCB2b2lkIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpkaWREZXN0
cm95U3RvcmFnZUFyZWFNYXAoU3RvcmFnZUFyZWFNYXAmIG1hcCkKICAgICBtX3N0b3JhZ2VBcmVh
TWFwcy5yZW1vdmUobWFwLnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpKTsKIH0KIAotUmVmPFN0b3Jh
Z2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6c3RvcmFnZUFyZWEoY29uc3QgU2VjdXJpdHlP
cmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbikKK1JlZjxTdG9yYWdlQXJlYT4gU3RvcmFnZU5hbWVz
cGFjZUltcGw6OnN0b3JhZ2VBcmVhKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlP
cmlnaW5EYXRhKQogewogICAgIFJlZlB0cjxTdG9yYWdlQXJlYU1hcD4gbWFwOwogCi0gICAgYXV0
byYgc2xvdCA9IG1fc3RvcmFnZUFyZWFNYXBzLmFkZChzZWN1cml0eU9yaWdpbiwgbnVsbHB0ciku
aXRlcmF0b3ItPnZhbHVlOworICAgIGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBzZWN1cml0eU9yaWdp
bkRhdGEuc2VjdXJpdHlPcmlnaW4oKTsKKyAgICBhdXRvJiBzbG90ID0gbV9zdG9yYWdlQXJlYU1h
cHMuYWRkKHNlY3VyaXR5T3JpZ2luLT5kYXRhKCksIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsK
ICAgICBpZiAoIXNsb3QpIHsKLSAgICAgICAgbWFwID0gU3RvcmFnZUFyZWFNYXA6OmNyZWF0ZSh0
aGlzLCBzZWN1cml0eU9yaWdpbi5zZWN1cml0eU9yaWdpbigpKTsKKyAgICAgICAgbWFwID0gU3Rv
cmFnZUFyZWFNYXA6OmNyZWF0ZSh0aGlzLCBXVEZNb3ZlKHNlY3VyaXR5T3JpZ2luKSk7CiAgICAg
ICAgIHNsb3QgPSBtYXAuZ2V0KCk7CiAgICAgfSBlbHNlCiAgICAgICAgIG1hcCA9IHNsb3Q7CkBA
IC05NSwxMyArOTMsMTcgQEAgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IFN0b3JhZ2VOYW1lc3BhY2VJ
bXBsOjpjb3B5KFBhZ2UqIG5ld1BhZ2UpCiB7CiAgICAgQVNTRVJUKG1fc3RvcmFnZU5hbWVzcGFj
ZUlEKTsKIAotICAgIGlmIChtX3N0b3JhZ2VUeXBlID09IFN0b3JhZ2VUeXBlOjpTZXNzaW9uKQot
ICAgICAgICByZXR1cm4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoV2ViUGFnZTo6ZnJv
bUNvcmVQYWdlKG5ld1BhZ2UpLT5wYWdlSUQoKS50b1VJbnQ2NCgpLCBtX3F1b3RhSW5CeXRlcyk7
CisgICAgaWYgKGF1dG8gbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uID0gV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuZXhpc3RpbmdOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKSkKKyAgICAgICAgbmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6U3RvcmFn
ZU1hbmFnZXJTZXQ6OkNsb25lU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UobmV3UGFnZS0+c2Vzc2lv
bklEKCksIG1fc3RvcmFnZU5hbWVzcGFjZUlELCBXZWJQYWdlOjpmcm9tQ29yZVBhZ2UobmV3UGFn
ZSktPnBhZ2VJRCgpLnRvVUludDY0KCkpLCAwKTsKIAotICAgIEFTU0VSVChtX3N0b3JhZ2VUeXBl
ID09IFN0b3JhZ2VUeXBlOjpFcGhlbWVyYWxMb2NhbCk7Ci0gICAgYXV0byBuZXdOYW1lc3BhY2Ug
PSBhZG9wdFJlZigqbmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKG1fc3RvcmFnZVR5cGUsIG1fc3Rv
cmFnZU5hbWVzcGFjZUlELCBtX3RvcExldmVsT3JpZ2luLmdldCgpLCBtX3F1b3RhSW5CeXRlcykp
OworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKG1fc3RvcmFn
ZVR5cGUsIFdlYlBhZ2U6OmZyb21Db3JlUGFnZShuZXdQYWdlKS0+cGFnZUlEKCkudG9VSW50NjQo
KSwgbV90b3BMZXZlbE9yaWdpbi5nZXQoKSwgbV9xdW90YUluQnl0ZXMsIG5ld1BhZ2UtPnNlc3Np
b25JRCgpKSk7Cit9CiAKLSAgICByZXR1cm4gbmV3TmFtZXNwYWNlOwordm9pZCBTdG9yYWdlTmFt
ZXNwYWNlSW1wbDo6c2V0U2Vzc2lvbklERm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQpCit7CisgICAgbV9zZXNzaW9uSUQgPSBzZXNzaW9uSUQ7CisgICAgZm9yIChhdXRvIHN0b3Jh
Z2VBcmVhTWFwIDogbV9zdG9yYWdlQXJlYU1hcHMudmFsdWVzKCkpCisgICAgICAgIHN0b3JhZ2VB
cmVhTWFwLT5kaXNjb25uZWN0KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFj
ZUltcGwuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1l
c3BhY2VJbXBsLmgKaW5kZXggZWE2ZDU1MThjZGZjOTlkYzNhMDFkODU3ZTM2NjM2NTBmOWI2NjZh
Mi4uNWVlODllN2E5OTAxZWRiYTg4OTUzNDU2NDUyYjYyNWZlZWQ3NmJjZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNw
YWNlSW1wbC5oCkBAIC0zOSwxMiArMzksOSBAQCBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBTdG9y
YWdlTmFtZXNwYWNlSW1wbCA6IHB1YmxpYyBXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlIHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVTZXNzaW9u
U3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0
ZXMpOwotICAgIHN0YXRpYyBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZUVwaGVtZXJh
bExvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90
YUluQnl0ZXMpOwotCi0gICAgZW51bSBjbGFzcyBJc0VwaGVtZXJhbCA6IGJvb2wgeyBObywgWWVz
IH07Ci0gICAgc3RhdGljIFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRlTG9jYWxTdG9y
YWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcywg
SXNFcGhlbWVyYWwgaXNFcGhlbWVyYWwpOwotICAgIHN0YXRpYyBSZWY8U3RvcmFnZU5hbWVzcGFj
ZUltcGw+IGNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVu
dGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgdG9wTGV2ZWxPcmlnaW4sIHVpbnQ2NF90
IHF1b3RhSW5CeXRlcyk7CisgICAgc3RhdGljIFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3Jl
YXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgdW5zaWduZWQg
cXVvdGFJbkJ5dGVzLCBQQUw6OlNlc3Npb25JRCk7CisgICAgc3RhdGljIFJlZjxTdG9yYWdlTmFt
ZXNwYWNlSW1wbD4gY3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZp
ZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcywgUEFMOjpTZXNzaW9uSUQpOworICAgIHN0YXRpYyBS
ZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVz
cGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgdG9wTGV2
ZWxPcmlnaW4sIHVpbnQ2NF90IHF1b3RhSW5CeXRlcywgUEFMOjpTZXNzaW9uSUQpOwogCiAgICAg
dmlydHVhbCB+U3RvcmFnZU5hbWVzcGFjZUltcGwoKTsKIApAQCAtNTIsMTEgKzQ5LDE0IEBAIHB1
YmxpYzoKICAgICB1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQoKSBjb25zdCB7IHJldHVybiBt
X3N0b3JhZ2VOYW1lc3BhY2VJRDsgfQogICAgIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiB0b3BM
ZXZlbE9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fdG9wTGV2ZWxPcmlnaW4uZ2V0KCk7IH0KICAg
ICB1bnNpZ25lZCBxdW90YUluQnl0ZXMoKSBjb25zdCB7IHJldHVybiBtX3F1b3RhSW5CeXRlczsg
fQorICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1fc2Vzc2lvbklEOyB9CiAKICAgICB2b2lkIGRpZERlc3Ryb3lTdG9yYWdlQXJlYU1hcChTdG9y
YWdlQXJlYU1hcCYpOwogCisgICAgdm9pZCBzZXRTZXNzaW9uSURGb3JUZXN0aW5nKFBBTDo6U2Vz
c2lvbklEKSBvdmVycmlkZTsKKwogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBTdG9yYWdlTmFtZXNw
YWNlSW1wbChXZWJDb3JlOjpTdG9yYWdlVHlwZSwgdWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlE
LCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiogdG9wTGV2ZWxPcmlnaW4sIHVuc2lnbmVkIHF1b3Rh
SW5CeXRlcyk7CisgICAgZXhwbGljaXQgU3RvcmFnZU5hbWVzcGFjZUltcGwoV2ViQ29yZTo6U3Rv
cmFnZVR5cGUsIHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW4qIHRvcExldmVsT3JpZ2luLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMsIFBBTDo6U2Vzc2lv
bklEKTsKIAogICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlQXJlYT4gc3RvcmFnZUFyZWEoY29uc3Qg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJikgb3ZlcnJpZGU7CiAgICAgUmVmPFdlYkNvcmU6
OlN0b3JhZ2VOYW1lc3BhY2U+IGNvcHkoV2ViQ29yZTo6UGFnZSopIG92ZXJyaWRlOwpAQCAtNjks
NyArNjksOSBAQCBwcml2YXRlOgogCiAgICAgY29uc3QgdW5zaWduZWQgbV9xdW90YUluQnl0ZXM7
CiAKLSAgICBIYXNoTWFwPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSwgU3RvcmFnZUFyZWFN
YXAqPiBtX3N0b3JhZ2VBcmVhTWFwczsKKyAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsK
KworICAgIEhhc2hNYXA8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhLCBSZWZQdHI8U3RvcmFn
ZUFyZWFNYXA+PiBtX3N0b3JhZ2VBcmVhTWFwczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3Rv
cmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJT
dG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKaW5kZXggODhhOTNjNWQ1MDQy
YTEyNjM0MTFjNjg0YmVkYmQ1MDZlMzRiNWEwZS4uOWU3MjE2MzFiM2I0YmQ3MmVjMDMzZTc5YmFl
MGQzNzUyNTRiYWMwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0
b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCkBA
IC02NywyMiArNjcsMTcgQEAgV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjp+V2ViU3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyKCkKIAogUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IFdl
YlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2Uo
UGFnZSYgcGFnZSwgdW5zaWduZWQgcXVvdGEpCiB7Ci0gICAgcmV0dXJuIFN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShXZWJQYWdlOjpmcm9tQ29yZVBh
Z2UoJnBhZ2UpLT5wYWdlSUQoKS50b1VJbnQ2NCgpLCBxdW90YSk7CisgICAgcmV0dXJuIFN0b3Jh
Z2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShXZWJQYWdlOjpm
cm9tQ29yZVBhZ2UoJnBhZ2UpLT5wYWdlSUQoKS50b1VJbnQ2NCgpLCBxdW90YSwgcGFnZS5zZXNz
aW9uSUQoKSk7CiB9CiAKLVJlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdl
TmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShQ
YWdlJiBwYWdlLCB1bnNpZ25lZCBxdW90YSkKK1JlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNl
PiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFj
ZSh1bnNpZ25lZCBxdW90YSwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogewotICAgIHJldHVy
biBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNw
YWNlKFdlYlBhZ2U6OmZyb21Db3JlUGFnZSgmcGFnZSktPnBhZ2VJRCgpLnRvVUludDY0KCksIHF1
b3RhKTsKKyAgICByZXR1cm4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZUxvY2FsU3RvcmFn
ZU5hbWVzcGFjZShtX2lkZW50aWZpZXIsIHF1b3RhLCBzZXNzaW9uSUQpOwogfQogCi1SZWY8V2Vi
Q29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVh
dGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEpCitSZWY8V2ViQ29yZTo6U3Rv
cmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVUcmFuc2ll
bnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHRvcExldmVs
T3JpZ2luLCB1bnNpZ25lZCBxdW90YSwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogewotICAg
IHJldHVybiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNl
KG1faWRlbnRpZmllciwgcXVvdGEsIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpJc0VwaGVtZXJhbDo6
Tm8pOwotfQotCi1SZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyOjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW4mIHRvcExldmVsT3JpZ2luLCB1bnNpZ25lZCBxdW90YSkKLXsKLSAg
ICByZXR1cm4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFn
ZU5hbWVzcGFjZShtX2lkZW50aWZpZXIsIHRvcExldmVsT3JpZ2luLCBxdW90YSk7CisgICAgcmV0
dXJuIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1l
c3BhY2UobV9pZGVudGlmaWVyLCB0b3BMZXZlbE9yaWdpbiwgcXVvdGEsIHNlc3Npb25JRCk7CiB9
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1dl
YlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmgKaW5kZXggM2NlNmRiOWYwNjhl
ODAzODk2ODExNGVmOTlhYzI1YWNlMDQxMWYzNC4uMmFmOWJmNmUzMjVkNDFlOTdiMzcxMDkyYzQx
NzQ1ZjE2ZjlmNDZjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0
b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmgKQEAgLTM4
LDkgKzM4LDggQEAgcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJTdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXIodWludDY0X3QgaWRlbnRpZmllcik7CiAKICAgICBSZWY8V2ViQ29yZTo6U3RvcmFnZU5h
bWVzcGFjZT4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6UGFnZSYsIHVu
c2lnbmVkIHF1b3RhKSBvdmVycmlkZTsKLSAgICBSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFj
ZT4gY3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlBhZ2UmLCB1
bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7Ci0gICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3Bh
Y2U+IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7
Ci0gICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVRyYW5zaWVudExvY2Fs
U3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkIHF1b3Rh
KSBvdmVycmlkZTsKKyAgICBSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlTG9j
YWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkIHF1b3RhLCBQQUw6OlNlc3Npb25JRCkgb3ZlcnJp
ZGU7CisJUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVRyYW5zaWVudExvY2Fs
U3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkIHF1b3Rh
LCBQQUw6OlNlc3Npb25JRCkgb3ZlcnJpZGU7CiAKICAgICBjb25zdCB1aW50NjRfdCBtX2lkZW50
aWZpZXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3Jh
Z2VBcmVhSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFJ
bXBsLmNwcAppbmRleCA3ZGE1YzcyZTU4ZWY3M2QxOTZkMTY3MzA3NzVhMzdiYWE1NDc0Y2FkLi40
MmNjNGRiZDAzOWVjNzM1OTJjNDc2MGZjYWUxYmI4ZDY4M2RjOTk0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNwcApAQCAtMjkyLDQgKzI5Miwy
MiBAQCB2b2lkIFN0b3JhZ2VBcmVhSW1wbDo6ZGlzcGF0Y2hTdG9yYWdlRXZlbnQoY29uc3QgU3Ry
aW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVgogICAgICAgICBTdG9yYWdlRXZlbnREaXNwYXRj
aGVyOjpkaXNwYXRjaFNlc3Npb25TdG9yYWdlRXZlbnRzKGtleSwgb2xkVmFsdWUsIG5ld1ZhbHVl
LCBtX3NlY3VyaXR5T3JpZ2luLCBzb3VyY2VGcmFtZSk7CiB9CiAKK3ZvaWQgU3RvcmFnZUFyZWFJ
bXBsOjpzZXNzaW9uQ2hhbmdlZChib29sIGlzTmV3U2Vzc2lvblBlcnNpc3RlbnQpCit7CisgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIHVuc2lnbmVkIHF1b3RhID0gbV9zdG9yYWdl
TWFwLT5xdW90YSgpOworICAgIG1fc3RvcmFnZU1hcCA9IFN0b3JhZ2VNYXA6OmNyZWF0ZShxdW90
YSk7CisKKyAgICBpZiAoaXNOZXdTZXNzaW9uUGVyc2lzdGVudCAmJiAhbV9zdG9yYWdlQXJlYVN5
bmMgJiYgbV9zdG9yYWdlU3luY01hbmFnZXIpIHsKKyAgICAgICAgbV9zdG9yYWdlQXJlYVN5bmMg
PSBTdG9yYWdlQXJlYVN5bmM6OmNyZWF0ZShtX3N0b3JhZ2VTeW5jTWFuYWdlci5nZXQoKSwgKnRo
aXMsIG1fc2VjdXJpdHlPcmlnaW4uZGF0YWJhc2VJZGVudGlmaWVyKCkpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgaWYgKCFpc05ld1Nlc3Npb25QZXJzaXN0ZW50ICYmIG1fc3RvcmFn
ZUFyZWFTeW5jKSB7CisgICAgICAgIG1fc3RvcmFnZUFyZWFTeW5jLT5zY2hlZHVsZUZpbmFsU3lu
YygpOworICAgICAgICBtX3N0b3JhZ2VBcmVhU3luYyA9IG51bGxwdHI7CisgICAgfQorfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0
b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3Rv
cmFnZUFyZWFJbXBsLmgKaW5kZXggNThmY2JhMDM1MDA0YmE2M2NjODg4YThkYjI5MTAwMTliYzhl
N2Q5MS4uYjIwYmVmOTUzMzdkODQ0ZGIzYzIzZjgwMWQwZGI5MzY1NDUwZTI5ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuaApAQCAtNjEsOCArNjEs
NiBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZWNyZW1lbnRBY2Nlc3NDb3VudCgpIG92ZXJyaWRlOwog
ICAgIHZvaWQgY2xvc2VEYXRhYmFzZUlmSWRsZSgpIG92ZXJyaWRlOwogCi0gICAgY29uc3QgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbigpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fc2VjdXJpdHlPcmlnaW47IH0KLQogICAgIFJlZjxTdG9yYWdlQXJlYUltcGw+
IGNvcHkoKTsKICAgICB2b2lkIGNsb3NlKCk7CiAKQEAgLTc0LDYgKzcyLDggQEAgcHVibGljOgog
CiAgICAgdm9pZCBzeW5jKCk7CiAKKyAgICB2b2lkIHNlc3Npb25DaGFuZ2VkKGJvb2wgaXNOZXdT
ZXNzaW9uUGVyc2lzdGVudCk7CisKIHByaXZhdGU6CiAgICAgU3RvcmFnZUFyZWFJbXBsKFdlYkNv
cmU6OlN0b3JhZ2VUeXBlLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBSZWZQ
dHI8V2ViQ29yZTo6U3RvcmFnZVN5bmNNYW5hZ2VyPiYmLCB1bnNpZ25lZCBxdW90YSk7CiAgICAg
ZXhwbGljaXQgU3RvcmFnZUFyZWFJbXBsKGNvbnN0IFN0b3JhZ2VBcmVhSW1wbCYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5oIGIvU291
cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5oCmluZGV4IGMwMDg3NTNm
MzQ0OWRhMzRjNTYzZGNiMTY1YTQyNTQ2MzcwMDdhMjcuLjEwOWM3Y2YzNDZjMzVmZDBjZDAxNzg2
YmI0OTBkZTA4YmQzMDk2ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFn
ZS9TdG9yYWdlQXJlYVN5bmMuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3Rv
cmFnZUFyZWFTeW5jLmgKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNs
YXNzIFN0b3JhZ2VBcmVhSW1wbDsKIAotY2xhc3MgU3RvcmFnZUFyZWFTeW5jIDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPFN0b3JhZ2VBcmVhU3luYz4geworY2xhc3MgU3RvcmFnZUFyZWFT
eW5jIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFN0b3JhZ2VBcmVhU3luYywgV1RGOjpE
ZXN0cnVjdGlvblRocmVhZDo6TWFpbj4gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8U3RvcmFn
ZUFyZWFTeW5jPiBjcmVhdGUoUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VTeW5jTWFuYWdlcj4mJiwg
UmVmPFN0b3JhZ2VBcmVhSW1wbD4mJiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkZW50aWZpZXIp
OwogICAgIH5TdG9yYWdlQXJlYVN5bmMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCmluZGV4IDRhOTRhMWQ4NWNlY2ExZTNj
NjNiYzcyYTg2YWIwNmFmMGUxODZkNWQuLjczN2Y1YzA5NzIxZDJiYmRiYzg2NTc2MWM5ZDExOGM4
MWRmNjEzNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdl
TmFtZXNwYWNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3Jh
Z2VOYW1lc3BhY2VJbXBsLmNwcApAQCAtNDUsMTcgKzQ1LDEyIEBAIHN0YXRpYyBIYXNoTWFwPFN0
cmluZywgU3RvcmFnZU5hbWVzcGFjZUltcGwqPiYgbG9jYWxTdG9yYWdlTmFtZXNwYWNlTWFwKCkK
ICAgICByZXR1cm4gbG9jYWxTdG9yYWdlTmFtZXNwYWNlTWFwOwogfQogCi1SZWY8U3RvcmFnZU5h
bWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5h
bWVzcGFjZSh1bnNpZ25lZCBxdW90YSkKK1JlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFn
ZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkIHF1
b3RhLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5cGU6OlNlc3Npb24sIFN0cmluZygpLCBx
dW90YSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0
b3JhZ2VUeXBlOjpTZXNzaW9uLCBTdHJpbmcoKSwgcXVvdGEsIHNlc3Npb25JRCkpOwogfQogCi1S
ZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVFcGhl
bWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEpCi17Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5cGU6OkVwaGVtZXJh
bExvY2FsLCBTdHJpbmcoKSwgcXVvdGEpKTsKLX0KLQotUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBs
PiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Z2V0T3JDcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2Uo
Y29uc3QgU3RyaW5nJiBkYXRhYmFzZVBhdGgsIHVuc2lnbmVkIHF1b3RhKQorUmVmPFN0b3JhZ2VO
YW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Z2V0T3JDcmVhdGVMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UoY29uc3QgU3RyaW5nJiBkYXRhYmFzZVBhdGgsIHVuc2lnbmVkIHF1b3RhLCBQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7CiAgICAgQVNTRVJUKCFkYXRhYmFzZVBhdGguaXNO
dWxsKCkpOwogCkBAIC02MywxOCArNTgsMTkgQEAgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBT
dG9yYWdlTmFtZXNwYWNlSW1wbDo6Z2V0T3JDcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UKICAg
ICBpZiAoc2xvdCkKICAgICAgICAgcmV0dXJuICpzbG90OwogCi0gICAgUmVmPFN0b3JhZ2VOYW1l
c3BhY2VJbXBsPiBzdG9yYWdlTmFtZXNwYWNlID0gYWRvcHRSZWYoKm5ldyBTdG9yYWdlTmFtZXNw
YWNlSW1wbChTdG9yYWdlVHlwZTo6TG9jYWwsIGRhdGFiYXNlUGF0aCwgcXVvdGEpKTsKKyAgICBS
ZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IHN0b3JhZ2VOYW1lc3BhY2UgPSBhZG9wdFJlZigqbmV3
IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0b3JhZ2VUeXBlOjpMb2NhbCwgZGF0YWJhc2VQYXRoLCBx
dW90YSwgc2Vzc2lvbklEKSk7CiAgICAgc2xvdCA9IHN0b3JhZ2VOYW1lc3BhY2UucHRyKCk7CiAK
ICAgICByZXR1cm4gc3RvcmFnZU5hbWVzcGFjZTsKIH0KIAotU3RvcmFnZU5hbWVzcGFjZUltcGw6
OlN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlLCBjb25zdCBTdHJp
bmcmIHBhdGgsIHVuc2lnbmVkIHF1b3RhKQorU3RvcmFnZU5hbWVzcGFjZUltcGw6OlN0b3JhZ2VO
YW1lc3BhY2VJbXBsKFN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlLCBjb25zdCBTdHJpbmcmIHBhdGgs
IHVuc2lnbmVkIHF1b3RhLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAgOiBtX3N0b3Jh
Z2VUeXBlKHN0b3JhZ2VUeXBlKQogICAgICwgbV9wYXRoKHBhdGguaXNvbGF0ZWRDb3B5KCkpCiAg
ICAgLCBtX3N5bmNNYW5hZ2VyKDApCiAgICAgLCBtX3F1b3RhKHF1b3RhKQogICAgICwgbV9pc1No
dXRkb3duKGZhbHNlKQorICAgICwgbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQogewogICAgIGlmIChp
c1BlcnNpc3RlbnRMb2NhbFN0b3JhZ2UobV9zdG9yYWdlVHlwZSkgJiYgIW1fcGF0aC5pc0VtcHR5
KCkpCiAgICAgICAgIG1fc3luY01hbmFnZXIgPSBTdG9yYWdlU3luY01hbmFnZXI6OmNyZWF0ZSht
X3BhdGgpOwpAQCAtOTcsOSArOTMsOSBAQCBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gU3RvcmFnZU5h
bWVzcGFjZUltcGw6OmNvcHkoUGFnZSopCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
ICAgICBBU1NFUlQoIW1faXNTaHV0ZG93bik7Ci0gICAgQVNTRVJUKG1fc3RvcmFnZVR5cGUgPT0g
U3RvcmFnZVR5cGU6OlNlc3Npb24gfHwgbV9zdG9yYWdlVHlwZSA9PSBTdG9yYWdlVHlwZTo6RXBo
ZW1lcmFsTG9jYWwpOworICAgIEFTU0VSVChtX3N0b3JhZ2VUeXBlID09IFN0b3JhZ2VUeXBlOjpT
ZXNzaW9uKTsKIAotICAgIGF1dG8gbmV3TmFtZXNwYWNlID0gYWRvcHRSZWYoKm5ldyBTdG9yYWdl
TmFtZXNwYWNlSW1wbChtX3N0b3JhZ2VUeXBlLCBtX3BhdGgsIG1fcXVvdGEpKTsKKyAgICBhdXRv
IG5ld05hbWVzcGFjZSA9IGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwobV9zdG9y
YWdlVHlwZSwgbV9wYXRoLCBtX3F1b3RhLCBtX3Nlc3Npb25JRCkpOwogICAgIGZvciAoYXV0byYg
aXRlciA6IG1fc3RvcmFnZUFyZWFNYXApCiAgICAgICAgIG5ld05hbWVzcGFjZS0+bV9zdG9yYWdl
QXJlYU1hcC5zZXQoaXRlci5rZXksIGl0ZXIudmFsdWUtPmNvcHkoKSk7CiAKQEAgLTEyNyw3ICsx
MjMsNyBAQCB2b2lkIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjbG9zZSgpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIC8vIElmIHdlJ3JlIG5vdCBhIHBlcnNpc3RlbnQgc3RvcmFnZSwgd2Ugc2hvdWxk
bid0IG5lZWQgdG8gZG8gYW55IHdvcmsgaGVyZS4KLSAgICBpZiAobV9zdG9yYWdlVHlwZSA9PSBT
dG9yYWdlVHlwZTo6U2Vzc2lvbiB8fCBtX3N0b3JhZ2VUeXBlID09IFN0b3JhZ2VUeXBlOjpFcGhl
bWVyYWxMb2NhbCkgeworICAgIGlmIChtX3N0b3JhZ2VUeXBlID09IFN0b3JhZ2VUeXBlOjpTZXNz
aW9uKSB7CiAgICAgICAgIEFTU0VSVCghbV9zeW5jTWFuYWdlcik7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC0xNzYsNCArMTcyLDExIEBAIHZvaWQgU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNs
b3NlSWRsZUxvY2FsU3RvcmFnZURhdGFiYXNlcygpCiAgICAgICAgIGl0LT52YWx1ZS0+Y2xvc2VE
YXRhYmFzZUlmSWRsZSgpOwogfQogCit2b2lkIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpzZXRTZXNz
aW9uSURGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKK3sKKyAgICBtX3Nlc3Np
b25JRCA9IHNlc3Npb25JRDsKKyAgICBmb3IgKGF1dG8gc3RvcmFnZUFyZWFNYXAgOiBtX3N0b3Jh
Z2VBcmVhTWFwLnZhbHVlcygpKQorICAgICAgICBzdG9yYWdlQXJlYU1hcC0+c2Vzc2lvbkNoYW5n
ZWQoIXNlc3Npb25JRC5pc0VwaGVtZXJhbCgpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VOYW1lc3Bh
Y2VJbXBsLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUlt
cGwuaAppbmRleCBjODhmMDYxZWY1ZTUwYzliMTYzNWVjM2Y4ZDZiYTBlZDc3MDVjYWE3Li4xMjAz
MjUyZDg0NjlkOGIzMGVhMDQwMDc1ZDk2ZjcxNTdmZmVlY2YwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaApAQCAtMjgsNiArMjgs
NyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TdG9yYWdlQXJlYS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3RvcmFnZU5hbWVzcGFj
ZS5oPgorI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KQEAgLTM4LDkgKzM5LDggQEAgY2xhc3MgU3RvcmFnZUFyZWFJbXBsOwogCiBjbGFzcyBTdG9y
YWdlTmFtZXNwYWNlSW1wbCA6IHB1YmxpYyBXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlIHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVTZXNzaW9u
U3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSk7Ci0gICAgc3RhdGljIFJlZjxTdG9yYWdl
TmFtZXNwYWNlSW1wbD4gY3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVuc2ln
bmVkIHF1b3RhKTsKLSAgICBzdGF0aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBnZXRPckNy
ZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZShjb25zdCBTdHJpbmcmIGRhdGFiYXNlUGF0aCwgdW5z
aWduZWQgcXVvdGEpOworICAgIHN0YXRpYyBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0
ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkIHF1b3RhLCBQQUw6OlNlc3Npb25JRCk7
CisgICAgc3RhdGljIFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gZ2V0T3JDcmVhdGVMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UoY29uc3QgU3RyaW5nJiBkYXRhYmFzZVBhdGgsIHVuc2lnbmVkIHF1b3Rh
LCBQQUw6OlNlc3Npb25JRCk7CiAgICAgdmlydHVhbCB+U3RvcmFnZU5hbWVzcGFjZUltcGwoKTsK
IAogICAgIHZvaWQgY2xvc2UoKTsKQEAgLTU0LDggKzU0LDExIEBAIHB1YmxpYzoKICAgICB2b2lk
IHN5bmMoKTsKICAgICB2b2lkIGNsb3NlSWRsZUxvY2FsU3RvcmFnZURhdGFiYXNlcygpOwogCisg
ICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9z
ZXNzaW9uSUQ7IH0KKyAgICB2b2lkIHNldFNlc3Npb25JREZvclRlc3RpbmcoUEFMOjpTZXNzaW9u
SUQpIG92ZXJyaWRlOworCiBwcml2YXRlOgotICAgIFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFdlYkNv
cmU6OlN0b3JhZ2VUeXBlLCBjb25zdCBTdHJpbmcmIHBhdGgsIHVuc2lnbmVkIHF1b3RhKTsKKyAg
ICBTdG9yYWdlTmFtZXNwYWNlSW1wbChXZWJDb3JlOjpTdG9yYWdlVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXRoLCB1bnNpZ25lZCBxdW90YSwgUEFMOjpTZXNzaW9uSUQpOwogCiAgICAgUmVmPFdlYkNv
cmU6OlN0b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYShjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEmKSBvdmVycmlkZTsKICAgICBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gY29weShXZWJDb3Jl
OjpQYWdlKiBuZXdQYWdlKSBvdmVycmlkZTsKQEAgLTczLDYgKzc2LDggQEAgcHJpdmF0ZToKICAg
ICB1bnNpZ25lZCBtX3F1b3RhOwogCiAgICAgYm9vbCBtX2lzU2h1dGRvd247CisKKyAgICBQQUw6
OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1dlYlN0b3JhZ2VOYW1l
c3BhY2VQcm92aWRlci5jcHAKaW5kZXggODM2MjA1N2ZmZDc0ZjZkMmRhMWFhNDdkNzc4MDA0OTFj
OWRhMTFkYy4uZDA5NDY5MTI1ZmMyZjQ4NjY1OGE3M2E2Yjk1MGIyNDM0YjA3MDc5ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92
aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1dlYlN0b3JhZ2VOYW1l
c3BhY2VQcm92aWRlci5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJXZWJTdG9yYWdl
TmFtZXNwYWNlUHJvdmlkZXIuaCIKIAogI2luY2x1ZGUgIlN0b3JhZ2VOYW1lc3BhY2VJbXBsLmgi
CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVk
Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtOTYsMjYgKzk3LDIxIEBAIHZvaWQg
V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpzeW5jTG9jYWxTdG9yYWdlKCkKICAgICB9CiB9
CiAKLVJlZjxTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNy
ZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCBxdW90YSkKK1JlZjxT
dG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVNlc3Np
b25TdG9yYWdlTmFtZXNwYWNlKFBhZ2UmIHBhZ2UsIHVuc2lnbmVkIHF1b3RhKQogewotICAgIHJl
dHVybiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2Uo
cXVvdGEpOworICAgIHJldHVybiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlU2Vzc2lvblN0
b3JhZ2VOYW1lc3BhY2UocXVvdGEsIHBhZ2Uuc2Vzc2lvbklEKCkpOwogfQogCi1SZWY8U3RvcmFn
ZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVFcGhlbWVyYWxM
b2NhbFN0b3JhZ2VOYW1lc3BhY2UoUGFnZSYsIHVuc2lnbmVkIHF1b3RhKQorUmVmPFN0b3JhZ2VO
YW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlTG9jYWxTdG9yYWdl
TmFtZXNwYWNlKHVuc2lnbmVkIHF1b3RhLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7Ci0g
ICAgcmV0dXJuIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UocXVvdGEpOworICAgIHJldHVybiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Z2V0
T3JDcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UobV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgs
IHF1b3RhLCBzZXNzaW9uSUQpOwogfQogCi1SZWY8U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQg
cXVvdGEpCi17Ci0gICAgcmV0dXJuIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpnZXRPckNyZWF0ZUxv
Y2FsU3RvcmFnZU5hbWVzcGFjZShtX2xvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCwgcXVvdGEpOwot
fQotCi1SZWY8U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpj
cmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoU2VjdXJpdHlPcmlnaW4mLCB1bnNp
Z25lZCBxdW90YSkKK1JlZjxTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdp
biYsIHVuc2lnbmVkIHF1b3RhLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7CiAgICAgLy8g
RklYTUU6IEEgc21hcnRlciBpbXBsZW1lbnRhdGlvbiB3b3VsZCBjcmVhdGUgYSBzcGVjaWFsIG5h
bWVzcGFjZSB0eXBlIGluc3RlYWQgb2YganVzdCBwaWdneS1iYWNraW5nIG9mZgogICAgIC8vIFNl
c3Npb25TdG9yYWdlTmFtZXNwYWNlIGhlcmUuCi0gICAgcmV0dXJuIFN0b3JhZ2VOYW1lc3BhY2VJ
bXBsOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShxdW90YSk7CisgICAgcmV0dXJuIFN0
b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShxdW90YSwg
c2Vzc2lvbklEKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9y
YWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9T
dG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oCmluZGV4IGU1ODlmZWU3YTVjNmM5
MWNmOTRiN2QyM2I0ODYxNDgxNzliOGNmZjYuLjZkYmM1YzkwOWJmYjc5ZTFhMzViMDhiNDg5NTM5
YTBmM2Y3MGE3MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9XZWJT
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3Jh
Z2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmgKQEAgLTUwLDkgKzUwLDggQEAgcHJpdmF0
ZToKICAgICBleHBsaWNpdCBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIoY29uc3QgU3RyaW5n
JiBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpOwogCiAgICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VO
YW1lc3BhY2U+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlBhZ2UmLCB1
bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7Ci0gICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3Bh
Y2U+IGNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpQYWdlJiwg
dW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOwotICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNw
YWNlPiBjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEpIG92ZXJyaWRl
OwotICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVUcmFuc2llbnRMb2Nh
bFN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCB1bnNpZ25lZCBxdW90
YSkgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUxv
Y2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSwgUEFMOjpTZXNzaW9uSUQpIG92ZXJy
aWRlOworICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVUcmFuc2llbnRM
b2NhbFN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCB1bnNpZ25lZCBx
dW90YSwgUEFMOjpTZXNzaW9uSUQpIG92ZXJyaWRlOwogCiAgICAgY29uc3QgU3RyaW5nIG1fbG9j
YWxTdG9yYWdlRGF0YWJhc2VQYXRoOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViVmlldy5tbQppbmRleCBiOGQ5NzExZTcwZDc3NDVkN2QzOWIxZjlmNTQxYTE2NTRkNjU5
YzgyLi4wMzRmMGVjNzEwZjg3ZmUzZmZiNGJmOTQzNTE1YjQ4YzUwMWQ5MWFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC0yODg4LDYgKzI4ODgsNyBA
QCAtICh2b2lkKV9wcmVmZXJlbmNlc0NoYW5nZWQ6KFdlYlByZWZlcmVuY2VzICopcHJlZmVyZW5j
ZXMKICAgICBzZXR0aW5ncy5zZXRMb2NhbFN0b3JhZ2VFbmFibGVkKFtwcmVmZXJlbmNlcyBsb2Nh
bFN0b3JhZ2VFbmFibGVkXSk7CiAKICAgICBfcHJpdmF0ZS0+cGFnZS0+ZW5hYmxlTGVnYWN5UHJp
dmF0ZUJyb3dzaW5nKFtwcmVmZXJlbmNlcyBwcml2YXRlQnJvd3NpbmdFbmFibGVkXSk7CisgICAg
X3ByaXZhdGUtPmdyb3VwLT5zdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIoKS5lbmFibGVMZWdhY3lQ
cml2YXRlQnJvd3NpbmdGb3JUZXN0aW5nKFtwcmVmZXJlbmNlcyBwcml2YXRlQnJvd3NpbmdFbmFi
bGVkXSk7CiAgICAgc2V0dGluZ3Muc2V0U2Fuc1NlcmlmRm9udEZhbWlseShbcHJlZmVyZW5jZXMg
c2Fuc1NlcmlmRm9udEZhbWlseV0pOwogICAgIHNldHRpbmdzLnNldFNlcmlmRm9udEZhbWlseShb
cHJlZmVyZW5jZXMgc2VyaWZGb250RmFtaWx5XSk7CiAgICAgc2V0dGluZ3Muc2V0U3RhbmRhcmRG
b250RmFtaWx5KFtwcmVmZXJlbmNlcyBzdGFuZGFyZEZvbnRGYW1pbHldKTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAyYTU5YTcyNWEwZDcxY2U3
MGMwMWIxYTA4Nzg2YmZhMjJmZjg0MzE3Li4yYTRjYWUyNWJmNzc3ZWFjZDQwOGYzOTg0YWE3NDJl
NmRlZmM0YjA0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTktMDgtMTUgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBh
cHBsZS5jb20+CisKKyAgICAgICAgU29tZSBpbXByb3ZlbWVudHMgb24gd2ViIHN0b3JhZ2UKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDM3MworCisg
ICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgorCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Mb2NhbFN0b3JhZ2VQZXJzaXN0ZW5jZS5tbToKKyAgICAg
ICAgKFRFU1QpOiB1cGRhdGUgZXhwZWN0YXRpb24gZm9yIGJlaGF2aW9yIGNoYW5nZS4KKworICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5l
ci5pZGw6IG5ldyBTUEkgdG8gc3luY2hyb25vdXNseSBmbHVzaCBsb2NhbFN0b3JhZ2UgdG8gCisg
ICAgICAgIGRhdGFiYXNlIGZpbGUuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6c3luY0xv
Y2FsU3RvcmFnZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9U
ZXN0UnVubmVyLmg6CisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmNwcDogY2xlYXIgbG9jYWwgc3RvcmFnZSBiZXR3ZWVuIHRlc3QgcnVucyB0byBtYWtlIGVhY2gg
dGVzdCBpc29sYXRlZC4KKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVU
b0NvbnNpc3RlbnRWYWx1ZXMpOgorICAgICAgICAoV1RSOjpTdG9yYWdlVm9pZENhbGxiYWNrQ29u
dGV4dDo6U3RvcmFnZVZvaWRDYWxsYmFja0NvbnRleHQpOgorICAgICAgICAoV1RSOjpTdG9yYWdl
Vm9pZENhbGxiYWNrKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmNsZWFySW5kZXhl
ZERhdGFiYXNlcyk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpjbGVhckxvY2FsU3Rv
cmFnZSk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpzeW5jTG9jYWxTdG9yYWdlKToK
KyAgICAgICAgKFdUUjo6UmVtb3ZlQWxsSW5kZXhlZERhdGFiYXNlc0NhbGxiYWNrQ29udGV4dDo6
UmVtb3ZlQWxsSW5kZXhlZERhdGFiYXNlc0NhbGxiYWNrQ29udGV4dCk6IERlbGV0ZWQuIFJlcGxh
Y2VkCisgICAgICAgIHdpdGggU3RvcmFnZVZvaWRDYWxsYmFja0NvbnRleHQgZm9yIGdlbmVyYWwg
dXNhZ2UuCisgICAgICAgIChXVFI6OlJlbW92ZUFsbEluZGV4ZWREYXRhYmFzZXNDYWxsYmFjayk6
IERlbGV0ZWQuIFJlcGxhY2VkIHdpdGggU3RvcmFnZVZvaWRDYWxsYmFjay4KKyAgICAgICAgKFdU
Ujo6VGVzdENvbnRyb2xsZXI6OkNsZWFySW5kZXhlZERhdGFiYXNlcyk6IERlbGV0ZWQuIFVzZSBs
b3dlcmNhc2UgZm9yIGNvbnNpc3RlbnQgc3R5bGUuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5oOgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52
b2NhdGlvbi5jcHA6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlU3lu
Y2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKTogYWRkIGhhbmRsZXIgZm9yIG5ldyBt
ZXNzYWdlIAorICAgICAgICBTeW5jTG9jYWxTdG9yYWdlLgorCiAyMDE5LTA4LTE0ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10oUkVH
UkVTU0lPTjogcjIwMDQ4Nyk6IFdlYktpdC5SZXF1ZXN0QWN0aXZhdGVkRWxlbWVudEluZm9Gb3JS
b3RhdGVkSW1hZ2UgZmFpbHMgb24gaU9TIDEzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0xvY2FsU3RvcmFnZVBlcnNpc3RlbmNlLm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Mb2NhbFN0b3JhZ2VQZXJzaXN0ZW5jZS5t
bQppbmRleCAxMTU2MmJiNTY5MzRmNTRkNjNmOTc3YTdiZGUwOWQ5NDM1NDlhYjI3Li41OTJiYzI5
ZDExNjY3MzFhYWYwZGY1ZWY1MjdmZmI3OTk3YTY0OWRjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0xvY2FsU3RvcmFnZVBlcnNpc3RlbmNlLm1tCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTG9jYWxTdG9yYWdlUGVy
c2lzdGVuY2UubW0KQEAgLTEwNCw5ICsxMDQsMTAgQEAgVEVTVChXS1dlYlZpZXcsIExvY2FsU3Rv
cmFnZVByb2Nlc3NDcmFzaGVzKQogICAgIH1dOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmcmVhZHlUb0NvbnRpbnVlKTsKIAorICAgIC8vIElmIG5ldHdvcmsgcHJvY2VzcyBjcmFzaGVz
LCBzZXNzaW9uU3RvcmFnZSB3b3VsZCBiZSBsb3N0LgogICAgIHJlYWR5VG9Db250aW51ZSA9IGZh
bHNlOwogICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpAIndpbmRvdy5zZXNzaW9uU3Rv
cmFnZS5nZXRJdGVtKCdzZXNzaW9uJykiIGNvbXBsZXRpb25IYW5kbGVyOl4oaWQgcmVzdWx0LCBO
U0Vycm9yICopIHsKLSAgICAgICAgRVhQRUNUX1RSVUUoW0Aic3RvcmFnZSIgaXNFcXVhbFRvU3Ry
aW5nOnJlc3VsdF0pOworICAgICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzRXF1YWw6TlNOdWxs
Lm51bGxdKTsKICAgICAgICAgcmVhZHlUb0NvbnRpbnVlID0gdHJ1ZTsKICAgICB9XTsKICAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlYWR5VG9Db250aW51ZSk7CmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIu
aWRsIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0
UnVubmVyLmlkbAppbmRleCAxNThkMmY2ZTExMTFhOWNkYzFiNGQzMGVmNzk0YzJmMTliNWVjMTAx
Li40MzI5ZWMxNDQzMGY5MTMwYWFkOWI1ZWRiNWY2Y2Q2YjM2ZTgxNjczIDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIu
aWRsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3Mv
VGVzdFJ1bm5lci5pZGwKQEAgLTE0Miw2ICsxNDIsNyBAQCBpbnRlcmZhY2UgVGVzdFJ1bm5lciB7
CiAgICAgdm9pZCBjbGVhckFsbERhdGFiYXNlcygpOwogICAgIHZvaWQgc2V0RGF0YWJhc2VRdW90
YSh1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGEpOwogICAgIERPTVN0cmluZyBwYXRoVG9Mb2NhbFJl
c291cmNlKERPTVN0cmluZyB1cmwpOworICAgIHZvaWQgc3luY0xvY2FsU3RvcmFnZSgpOwogCiAg
ICAgYXR0cmlidXRlIGRvdWJsZSBkYXRhYmFzZURlZmF1bHRRdW90YTsKICAgICBhdHRyaWJ1dGUg
ZG91YmxlIGRhdGFiYXNlTWF4UXVvdGE7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRleCAxODYwZjE2OWU1MmFjMTI1OTNm
YWVlMGU0NmUyZDA1MDQ4ZGExNmJkLi41Mjc1NjZkYzNmODRhN2RiNDIyMzM0N2ZkNjFjM2IyNTM4
NmU0ZjczIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGVzdFJ1bm5lci5jcHAKQEAgLTM0Miw2ICszNDIsMTMgQEAgdm9pZCBUZXN0UnVubmVyOjpz
ZXREYXRhYmFzZVF1b3RhKHVpbnQ2NF90IHF1b3RhKQogICAgIHJldHVybiBXS0J1bmRsZVNldERh
dGFiYXNlUXVvdGEoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRsZSgpLCBxdW90YSk7
CiB9CiAKK3ZvaWQgVGVzdFJ1bm5lcjo6c3luY0xvY2FsU3RvcmFnZSgpCit7CisgICAgV0tSZXRh
aW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZygiU3luY0xvY2FsU3RvcmFnZSIpKTsKKyAgICBXS1JldGFpblB0cjxXS0Jv
b2xlYW5SZWY+IG1lc3NhZ2VCb2R5ID0gYWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUodHJ1ZSkpOwor
ICAgIFdLQnVuZGxlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xl
dG9uKCkuYnVuZGxlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSwgbnVs
bHB0cik7Cit9CisKIHZvaWQgVGVzdFJ1bm5lcjo6Y2xlYXJBbGxBcHBsaWNhdGlvbkNhY2hlcygp
CiB7CiAgICAgV0tCdW5kbGVQYWdlQ2xlYXJBcHBsaWNhdGlvbkNhY2hlKEluamVjdGVkQnVuZGxl
OjpzaW5nbGV0b24oKS5wYWdlKCktPnBhZ2UoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCmluZGV4IDc1MDkzZDA5MGY0Y2M4ODYw
ZTkzNTQ3MGQ3NGUyM2UxOWRkNmQwMDMuLmY1NzM2ZWFhYThhMzNiZTcxNzhkODczYjljN2IxZTI1
MWEzOTExZGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGVzdFJ1bm5lci5oCkBAIC0xNTksNiArMTU5LDcgQEAgcHVibGljOgogICAgIHZvaWQgY2xl
YXJBbGxEYXRhYmFzZXMoKTsKICAgICB2b2lkIHNldERhdGFiYXNlUXVvdGEodWludDY0X3QpOwog
ICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBwYXRoVG9Mb2NhbFJlc291cmNlKEpTU3RyaW5n
UmVmKTsKKyAgICB2b2lkIHN5bmNMb2NhbFN0b3JhZ2UoKTsKIAogICAgIC8vIEFwcGxpY2F0aW9u
IENhY2hlCiAgICAgdm9pZCBjbGVhckFsbEFwcGxpY2F0aW9uQ2FjaGVzKCk7CmRpZmYgLS1naXQg
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDhlNzMzYmVlZDgwZDRhMDVlMzVl
M2MwZWYzMTJjMzllZjRkZDMzNTMuLmVhOGFmYjVmNGVmODRlNGEyZGRmMjg2NGExYWU5Zjc3NWZj
ZTM3NDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIu
Y3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC05
MzksOSArOTM5LDExIEBAIGJvb2wgVGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3Rl
bnRWYWx1ZXMoY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMsIFJlCiAgICAgYXV0byB3ZWJzaXRl
RGF0YVN0b3JlID0gV0tDb250ZXh0R2V0V2Vic2l0ZURhdGFTdG9yZShUZXN0Q29udHJvbGxlcjo6
c2luZ2xldG9uKCkuY29udGV4dCgpKTsKICAgICBXS1dlYnNpdGVEYXRhU3RvcmVDbGVhckFsbERl
dmljZU9yaWVudGF0aW9uUGVybWlzc2lvbnMod2Vic2l0ZURhdGFTdG9yZSk7CiAKLSAgICBDbGVh
ckluZGV4ZWREYXRhYmFzZXMoKTsKICAgICBzZXRJREJQZXJPcmlnaW5RdW90YSg1MCAqIE1CKTsK
IAorICAgIGNsZWFySW5kZXhlZERhdGFiYXNlcygpOworICAgIGNsZWFyTG9jYWxTdG9yYWdlKCk7
CisKICAgICBjbGVhclNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zKCk7CiAgICAgY2xlYXJET01D
YWNoZXMoKTsKIApAQCAtMzA2OSw4ICszMDcxLDggQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0
SURCUGVyT3JpZ2luUXVvdGEodWludDY0X3QgcXVvdGEpCiAgICAgV0tDb250ZXh0U2V0SURCUGVy
T3JpZ2luUXVvdGEocGxhdGZvcm1Db250ZXh0KCksIHF1b3RhKTsKIH0KIAotc3RydWN0IFJlbW92
ZUFsbEluZGV4ZWREYXRhYmFzZXNDYWxsYmFja0NvbnRleHQgewotICAgIGV4cGxpY2l0IFJlbW92
ZUFsbEluZGV4ZWREYXRhYmFzZXNDYWxsYmFja0NvbnRleHQoVGVzdENvbnRyb2xsZXImIGNvbnRy
b2xsZXIpCitzdHJ1Y3QgU3RvcmFnZVZvaWRDYWxsYmFja0NvbnRleHQgeworICAgIGV4cGxpY2l0
IFN0b3JhZ2VWb2lkQ2FsbGJhY2tDb250ZXh0KFRlc3RDb250cm9sbGVyJiBjb250cm9sbGVyKQog
ICAgICAgICA6IHRlc3RDb250cm9sbGVyKGNvbnRyb2xsZXIpCiAgICAgewogICAgIH0KQEAgLTMw
NzksMTggKzMwODEsMzcgQEAgc3RydWN0IFJlbW92ZUFsbEluZGV4ZWREYXRhYmFzZXNDYWxsYmFj
a0NvbnRleHQgewogICAgIGJvb2wgZG9uZSB7IGZhbHNlIH07CiB9OwogCi1zdGF0aWMgdm9pZCBS
ZW1vdmVBbGxJbmRleGVkRGF0YWJhc2VzQ2FsbGJhY2sodm9pZCogdXNlckRhdGEpCitzdGF0aWMg
dm9pZCBTdG9yYWdlVm9pZENhbGxiYWNrKHZvaWQqIHVzZXJEYXRhKQogewotICAgIGF1dG8qIGNv
bnRleHQgPSBzdGF0aWNfY2FzdDxSZW1vdmVBbGxJbmRleGVkRGF0YWJhc2VzQ2FsbGJhY2tDb250
ZXh0Kj4odXNlckRhdGEpOworICAgIGF1dG8qIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxTdG9yYWdl
Vm9pZENhbGxiYWNrQ29udGV4dCo+KHVzZXJEYXRhKTsKICAgICBjb250ZXh0LT5kb25lID0gdHJ1
ZTsKICAgICBjb250ZXh0LT50ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CiB9CiAKLXZvaWQg
VGVzdENvbnRyb2xsZXI6OkNsZWFySW5kZXhlZERhdGFiYXNlcygpCit2b2lkIFRlc3RDb250cm9s
bGVyOjpjbGVhckluZGV4ZWREYXRhYmFzZXMoKQoreworICAgIGF1dG8gd2Vic2l0ZURhdGFTdG9y
ZSA9IFdLQ29udGV4dEdldFdlYnNpdGVEYXRhU3RvcmUocGxhdGZvcm1Db250ZXh0KCkpOworICAg
IFN0b3JhZ2VWb2lkQ2FsbGJhY2tDb250ZXh0IGNvbnRleHQoKnRoaXMpOworICAgIFdLV2Vic2l0
ZURhdGFTdG9yZVJlbW92ZUFsbEluZGV4ZWREYXRhYmFzZXMod2Vic2l0ZURhdGFTdG9yZSwgJmNv
bnRleHQsIFN0b3JhZ2VWb2lkQ2FsbGJhY2spOworICAgIHJ1blVudGlsKGNvbnRleHQuZG9uZSwg
bm9UaW1lb3V0KTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6Y2xlYXJMb2NhbFN0b3JhZ2Uo
KQogewogICAgIGF1dG8gd2Vic2l0ZURhdGFTdG9yZSA9IFdLQ29udGV4dEdldFdlYnNpdGVEYXRh
U3RvcmUocGxhdGZvcm1Db250ZXh0KCkpOwotICAgIFJlbW92ZUFsbEluZGV4ZWREYXRhYmFzZXND
YWxsYmFja0NvbnRleHQgY29udGV4dCgqdGhpcyk7Ci0gICAgV0tXZWJzaXRlRGF0YVN0b3JlUmVt
b3ZlQWxsSW5kZXhlZERhdGFiYXNlcyh3ZWJzaXRlRGF0YVN0b3JlLCAmY29udGV4dCwgUmVtb3Zl
QWxsSW5kZXhlZERhdGFiYXNlc0NhbGxiYWNrKTsKKyAgICBTdG9yYWdlVm9pZENhbGxiYWNrQ29u
dGV4dCBjb250ZXh0KCp0aGlzKTsKKyAgICBXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVMb2NhbFN0
b3JhZ2Uod2Vic2l0ZURhdGFTdG9yZSwgJmNvbnRleHQsIFN0b3JhZ2VWb2lkQ2FsbGJhY2spOwor
ICAgIHJ1blVudGlsKGNvbnRleHQuZG9uZSwgbm9UaW1lb3V0KTsKKworICAgIFN0b3JhZ2VWb2lk
Q2FsbGJhY2tDb250ZXh0IGxlZ2FjeUNvbnRleHQoKnRoaXMpOworICAgIFdLQ29udGV4dENsZWFy
TGVnYWN5UHJpdmF0ZUJyb3dzaW5nTG9jYWxTdG9yYWdlKHBsYXRmb3JtQ29udGV4dCgpLCAmbGVn
YWN5Q29udGV4dCwgU3RvcmFnZVZvaWRDYWxsYmFjayk7CisgICAgcnVuVW50aWwobGVnYWN5Q29u
dGV4dC5kb25lLCBub1RpbWVvdXQpOworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpzeW5jTG9j
YWxTdG9yYWdlKCkKK3sKKyAgICBTdG9yYWdlVm9pZENhbGxiYWNrQ29udGV4dCBjb250ZXh0KCp0
aGlzKTsKKyAgICBXS0NvbnRleHRTeW5jTG9jYWxTdG9yYWdlKHBsYXRmb3JtQ29udGV4dCgpLCAm
Y29udGV4dCwgU3RvcmFnZVZvaWRDYWxsYmFjayk7CiAgICAgcnVuVW50aWwoY29udGV4dC5kb25l
LCBub1RpbWVvdXQpOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgK
aW5kZXggYjk1Y2VhMzU0NTZlZTJjOTkwMzdmZjhmZmE0MWVkNDBkY2MyYWFkYi4uYTVhZTU2ZWQ2
ODk3NTc4OGRiMWQwM2Y5NWRhMDY2OTFlNDk5MTUzNiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuaApAQCAtMjYyLDcgKzI2Miw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
cmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKCk7CiAKLSAgICB2b2lkIENsZWFySW5kZXhlZERh
dGFiYXNlcygpOworICAgIHZvaWQgY2xlYXJJbmRleGVkRGF0YWJhc2VzKCk7CisgICAgdm9pZCBj
bGVhckxvY2FsU3RvcmFnZSgpOworICAgIHZvaWQgc3luY0xvY2FsU3RvcmFnZSgpOwogCiAgICAg
dm9pZCBjbGVhclNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zKCk7CiAKZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKaW5kZXggMjhhZDFlZDg4YTYzZjdiZDZhZjFkZDU5
OWFiZjIwMDYzNDg2ZWZmYi4uYTVhZWEyMWMwOTAwMDU5ZTc5ZmE3ZDEyYmZhMTVmZDgxOWQxNmI2
YSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAK
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKQEAgLTE2NjYs
NiArMTY2NiwxMSBAQCBXS1JldGFpblB0cjxXS1R5cGVSZWY+IFRlc3RJbnZvY2F0aW9uOjpkaWRS
ZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQgogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9CiAKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNz
YWdlTmFtZSwgIlN5bmNMb2NhbFN0b3JhZ2UiKSkgeworICAgICAgICBUZXN0Q29udHJvbGxlcjo6
c2luZ2xldG9uKCkuc3luY0xvY2FsU3RvcmFnZSgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICB9CisKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsK
IH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCA2YTZkYzE5MWJkYWVhMWRiYzIzN2E5NmQ4NTNkNmI4OTZmMjFlNTM3Li4yZTVi
NzA2NGI1MzA3OGMxMDg1MjgwMTU4ZjRjNWE3YTkwMjlmNDQxIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQg
QEAKKzIwMTktMDgtMTUgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAg
ICAgU29tZSBpbXByb3ZlbWVudHMgb24gd2ViIHN0b3JhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDM3MworCisgICAgICAgIFJldmlld2VkIGJ5
IEdlb2ZmcmV5IEdhcmVuLgorIAorICAgICAgICBNb2RpZnkgdGVzdHMgZm9yIGEgYmVoYXZpb3Ig
Y2hhbmdlOiBzZXNzaW9uU3RvcmFnZSB3aWxsIGJlIGxvc3Qgd2hlbiBuZXR3b3JrIHByb2Nlc3Mg
Y3Jhc2hlcy4KKworICAgICAgICBGb3IgdGVzdHMgd2hpY2ggdXNlIHNlc3Npb25TdG9yYWdlIHRv
IHN0b3JlIGl0ZW1zLCBjcmFzaCBuZXR3b3JrIHByb2Nlc3MsIHRoZW4gcmVhZCBmcm9tIHNlc3Np
b25TdG9yYWdlIGFuZCAKKyAgICAgICAgZXhwZWN0IGl0ZW1zIHRvIGJlIGluIHNlc3Npb25TdG9y
YWdlLCByZXBsYWNlIHNlc3Npb25TdG9yYWdlIHdpdGggbG9jYWxTdG9yYWdlLiBBbHNvLCB0byBt
YWtlIHN1cmUgbG9jYWxTdG9yYWdlCisgICAgICAgIGlzIHN0b3JlZCBwZXJzaXN0ZW50bHkgYmVm
b3JlIG5ldHdvcmsgcHJvY2VzcyBnZXRzIHRlcm1pbmF0ZWQsIGFkb3B0IGEgbmV3bHkgaW50cm9k
dWNlZCBTUEkgdG8gCisgICAgICAgIHN5bmNocm9ub3VzbHkgZmx1c2ggbG9jYWxTdG9yYWdlIGNv
bnRlbnQgdG8gZGlzayBiZWZvcmUgdGVybWluYXRpbmcgbmV0d29yayBwcm9jZXNzLgorCisgICAg
ICAgICogcGxhdGZvcm0vaW9zLXNpbXVsYXRvci13azIvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogc3RvcmFn
ZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFnZS9wcml2YXRlLWJyb3dzaW5nLWFmZmVjdHMtc3RvcmFn
ZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvSURCT2JqZWN0LWxl
YWsuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vb3BlbmRhdGFiYXNl
LWFmdGVyLXN0b3JhZ2UtY3Jhc2gtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0b3JhZ2UvaW5k
ZXhlZGRiL21vZGVybi9vcGVuZGF0YWJhc2UtYWZ0ZXItc3RvcmFnZS1jcmFzaC5odG1sOgorCiAy
MDE5LTA4LTE0ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAg
ICAgICAgW1dITFNMXSBWYXJpYWJsZXMgc2hvdWxkbid0IGJlIGFibGUgdG8gaGF2ZSB2b2lkIHR5
cGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy1zaW11bGF0b3Itd2syL1Rl
c3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yLXdrMi9U
ZXN0RXhwZWN0YXRpb25zCmluZGV4IDllODY2NmFjZWYxNjgzODI1ZDc1Mzg2MjFjMWM5Zjg5NGUw
YjUxM2YuLjk3NDk3N2EyNWZjZjFmZDllNTc3ZTMzZjg1ZmE1YWZkMDRiYWZjYTIgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy1zaW11bGF0b3Itd2syL1Rlc3RFeHBlY3RhdGlv
bnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXNpbXVsYXRvci13azIvVGVzdEV4cGVj
dGF0aW9ucwpAQCAtNjYsNyArNjYsNyBAQCBodHRwL3dwdC9jYWNoZS1zdG9yYWdlL2NhY2hlLXB1
dC1rZXlzLmh0dHBzLmFueS53b3JrZXIuaHRtbCBbIFNsb3cgXQogaHR0cC93cHQvY2FjaGUtc3Rv
cmFnZS9hLWNhY2hlLW9wZW4uaHR0cHMuaHRtbCBbIFNsb3cgXQogaHR0cC93cHQvY2FjaGUtc3Rv
cmFnZS9jYWNoZS1xdW90YS1hZGQuYW55Lmh0bWwgWyBTbG93IF0KIAotd2Via2l0Lm9yZy9iLzE5
NjM3NiBbIERlYnVnIF0gc3RvcmFnZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFnZS9wcml2YXRlLWJy
b3dzaW5nLWFmZmVjdHMtc3RvcmFnZS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KK3dlYmtpdC5vcmcv
Yi8xOTYzNzYgWyBEZWJ1ZyBdIHN0b3JhZ2UvZG9tc3RvcmFnZS9sb2NhbHN0b3JhZ2UvcHJpdmF0
ZS1icm93c2luZy1hZmZlY3RzLXN0b3JhZ2UuaHRtbCBbIFBhc3MgXQogCiB3ZWJraXQub3JnL2Iv
MTk2NDAzIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWFjYXB0dXJlLXJlY29y
ZC9NZWRpYVJlY29yZGVyLXN0b3AuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA2YTgyNzBmN2U5OWEw
YWI0NGI1NDM5MjIxNDQ4MmI3ZmE3NTVlZjYxLi5kMjJkNzg3ZDg4NGE1OTY0MDRiMWQzZTBjZmQw
MTczZjIyNGM0YTQ4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rl
c3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhw
ZWN0YXRpb25zCkBAIC05MjIsNyArOTIyLDcgQEAgd2Via2l0Lm9yZy9iLzE5NDgyNiBodHRwL3Rl
c3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZG8tbm90LWJsb2NrLXRvcC1sZXZlbC1uYXYKIAog
d2Via2l0Lm9yZy9iLzE5NDkxNiBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLXZpZGVvLWVs
ZW1lbnQuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8xOTYzNzYgc3RvcmFn
ZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFnZS9wcml2YXRlLWJyb3dzaW5nLWFmZmVjdHMtc3RvcmFn
ZS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8xOTYzNzYgc3RvcmFnZS9kb21z
dG9yYWdlL2xvY2Fsc3RvcmFnZS9wcml2YXRlLWJyb3dzaW5nLWFmZmVjdHMtc3RvcmFnZS5odG1s
IFsgUGFzcyBdCiAKIHdlYmtpdC5vcmcvYi8xOTY0MDAgZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbVRyYWNrLWdldFNldHRpbmdzLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2RvbXN0b3JhZ2UvbG9jYWxzdG9yYWdlL3ByaXZhdGUtYnJv
d3NpbmctYWZmZWN0cy1zdG9yYWdlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
ZG9tc3RvcmFnZS9sb2NhbHN0b3JhZ2UvcHJpdmF0ZS1icm93c2luZy1hZmZlY3RzLXN0b3JhZ2Ut
ZXhwZWN0ZWQudHh0CmluZGV4IDJjYTk1NTc1MDI3ZmFiODlhYmViNDY3YjM4MDVjMjA2MDVkZmZi
ZDEuLmY5ODQwZGViNTMwYmUxYzE1NWFkOGRlZjVhNThjODBmYzY2MWQwMjcgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvZG9tc3RvcmFnZS9sb2NhbHN0b3JhZ2UvcHJpdmF0ZS1icm93
c2luZy1hZmZlY3RzLXN0b3JhZ2UtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvZG9tc3RvcmFnZS9sb2NhbHN0b3JhZ2UvcHJpdmF0ZS1icm93c2luZy1hZmZlY3RzLXN0b3Jh
Z2UtZXhwZWN0ZWQudHh0CkBAIC04LDcgKzgsNyBAQCBBTEVSVDogbG9jYWxTdG9yYWdlJ3MgbGVu
Z3RoIGlzOiAxCiBBTEVSVDogVGhlIGl0ZW0gaW4gbmV3IHdpbmRvdyBzdGFydHMgb3V0IGFzOiBD
aGFuZ2VkVmFsdWUKIEFMRVJUOiBUaGUgaXRlbSBpbiBuZXcgd2luZG93IGlzIG5vdzogTmV3V2lu
ZG93VmFsdWUKIEFMRVJUOiBCYWNrIGluIHBhcmVudCB3aW5kb3csIGxvY2FsU3RvcmFnZSdzIGxl
bmd0aCBpczogMQotQUxFUlQ6IEJhY2sgaW4gcGFyZW50IHdpbmRvdywgdGVzdEl0ZW0gaXM6IENo
YW5nZWRWYWx1ZQorQUxFUlQ6IEJhY2sgaW4gcGFyZW50IHdpbmRvdywgdGVzdEl0ZW0gaXM6IE5l
d1dpbmRvd1ZhbHVlCiBBTEVSVDogRmluYWwgd2luZG93LCBsb2NhbFN0b3JhZ2UncyBsZW5ndGgg
aXM6IDEKIEFMRVJUOiBGaW5hbCB3aW5kb3csIGl0ZW0gaXM6IFBlcnNpc3RlbnQgaXRlbSEKIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvSURCT2JqZWN0LWxlYWsu
aHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL0lEQk9iamVjdC1sZWFrLmh0bWwK
aW5kZXggZTE4YjY4YjkxYWM3ZjYxOTVhMWUxZTExMWFmNGNhZDAzYjg2M2M1Ny4uNmFhOGFiNjEw
MzgyM2I3Yzk3YmZhNzdlZjU1NmQ4MTljOWFhYTBjYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvSURCT2JqZWN0LWxlYWsuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9JREJPYmplY3QtbGVhay5odG1sCkBAIC0xMyw3ICsxMyw3IEBAIGZ1
bmN0aW9uIHRlc3QoKSB7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoc2Vzc2lv
blN0b3JhZ2UuZG9uZUZpcnN0TG9hZCkgeworICAgIGlmIChsb2NhbFN0b3JhZ2UuZG9uZUZpcnN0
TG9hZCkgewogICAgICAgICBnYygpOwogICAgICAgICBzaG91bGRCZUVxdWFsVG9OdW1iZXIoImlu
dGVybmFscy5udW1iZXJPZklEQlRyYW5zYWN0aW9ucygpIiwgMCk7CiAgICAgICAgIGZpbmlzaEpT
VGVzdCgpOwpAQCAtMjMsMTYgKzIzLDIxIEBAIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgdmFyIGRi
bmFtZSA9IHNldERCTmFtZUZyb21QYXRoKCkgKyBEYXRlKCk7CiAgICAgdmFyIHJlcXVlc3QgPSAg
d2luZG93LmluZGV4ZWREQi5vcGVuKGRibmFtZSk7CiAgICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVk
ZWQgPSBmdW5jdGlvbihldnQpIHsKLSAgICAgICAgc2Vzc2lvblN0b3JhZ2UuZG9uZUZpcnN0TG9h
ZCA9IHRydWU7CisgICAgICAgIGxvY2FsU3RvcmFnZS5kb25lRmlyc3RMb2FkID0gdHJ1ZTsKICAg
ICAgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lciB8fCAhdGVzdFJ1bm5lci50ZXJtaW5hdGVOZXR3
b3JrUHJvY2VzcykgewogICAgICAgICAgICAgdGVzdEZhaWxlZCgnVGhpcyB0ZXN0IHJlcXVpcmVz
IGFjY2VzcyB0byB0aGUgVGVzdFJ1bm5lciBvYmplY3QgYW5kIHRlcm1pbmF0ZU5ldHdvcmtQcm9j
ZXNzKCkgZnVuY3Rpb24nKTsKICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9IAorCisgICAgICAgIC8vIE1ha2Ugc3VyZSBsb2NhbFN0b3Jh
Z2UgaXMgZmx1c2hlZCB0byBkaXNrIGJlZm9yZSBjcmFzaGluZyBuZXR3b3JrIHByb2Nlc3MuCisg
ICAgICAgIHRlc3RSdW5uZXIuc3luY0xvY2FsU3RvcmFnZSgpOwogICAgICAgICB0ZXN0UnVubmVy
LnRlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzKCk7Ci0gICAgICAgIHNldFRpbWVvdXQoKCgpPT4gewot
ICAgICAgICAgICAgbG9jYXRpb24ucmVsb2FkKCk7Ci0gICAgICAgIH0pLCAwKTsKKyAgICAgICAg
ZXZ0LnRhcmdldC5yZXN1bHQub25lcnJvciA9IGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgICAgIHNl
dFRpbWVvdXQoKCgpPT4geworICAgICAgICAgICAgICAgIGxvY2F0aW9uLnJlbG9hZCgpOworICAg
ICAgICAgICAgfSksIDApOworICAgICAgICB9CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vb3BlbmRhdGFiYXNlLWFmdGVyLXN0b3Jh
Z2UtY3Jhc2gtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9k
ZXJuL29wZW5kYXRhYmFzZS1hZnRlci1zdG9yYWdlLWNyYXNoLWV4cGVjdGVkLnR4dAppbmRleCA0
N2I4NzI3YTkzOTViNWQzYzRhM2QzZjFhNmEwZGUxZTgxNjU5NDliLi5mOTk3OGEwMjQ0ZjFkMGE2
N2I0ZGMxZjU4ZGQyMWMxZWQxNThjZjRjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9tb2Rlcm4vb3BlbmRhdGFiYXNlLWFmdGVyLXN0b3JhZ2UtY3Jhc2gtZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9vcGVuZGF0
YWJhc2UtYWZ0ZXItc3RvcmFnZS1jcmFzaC1leHBlY3RlZC50eHQKQEAgLTEsMiArMSwyIEBACi1Q
QVNTIHNlc3Npb25TdG9yYWdlW3N0b3JhZ2VLZXldIGlzICJNYWRlIGl0IgorUEFTUyBsb2NhbFN0
b3JhZ2Vbc3RvcmFnZUtleV0gaXMgIk1hZGUgaXQiCiBTdWNjZXNzZnVsbHkgb3BlbmVkIGRhdGFi
YXNlIHdpdGggdmVyc2lvbiAzLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbW9kZXJuL29wZW5kYXRhYmFzZS1hZnRlci1zdG9yYWdlLWNyYXNoLmh0bWwgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vb3BlbmRhdGFiYXNlLWFmdGVyLXN0b3Jh
Z2UtY3Jhc2guaHRtbAppbmRleCBkMjQ1OGY2YTI5OGIzNDEwN2E0YjhkMGVmNjdiYzY0MjNkMmRh
MGRmLi45YTA5MTJlZjE1YzdiODQ3ZTlmM2Q5MDEzM2UyMDdhMmQzMTEyNThiIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vb3BlbmRhdGFiYXNlLWFmdGVy
LXN0b3JhZ2UtY3Jhc2guaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
b2Rlcm4vb3BlbmRhdGFiYXNlLWFmdGVyLXN0b3JhZ2UtY3Jhc2guaHRtbApAQCAtMjAsMzEgKzIw
LDMxIEBAIGZ1bmN0aW9uIGNvbnRpbnVlVGVzdCgpCiAJcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rp
b24oZSkgewogCQkvLyBHb29kLCB3ZSByZWNlaXZlZCBhbiBleHBlY3RlZCBlcnJvci4KIAkJLy8g
Tm93IHJlbG9hZCB0byBzZWUgaWYgYSBuZXcgZG9jdW1lbnQgY29ubmVjdHMgc3VjY2Vzc2Z1bGx5
Ci0JCWlmIChzZXNzaW9uU3RvcmFnZVtzdG9yYWdlS2V5XSkgeworCQlpZiAobG9jYWxTdG9yYWdl
W3N0b3JhZ2VLZXldKSB7CiAJCQlkb2N1bWVudC5ib2R5LmlubmVySFRNTCA9ICJSZWNlaXZlZCBl
cnJvciBtb3JlIHRoYW4gb25jZSB1bmV4cGVjdGVkbHkuIERhdGFiYXNlOiBuYW1lICIgKyBkYm5h
bWUgKyAiLCB2ZXJzaW9uIDIuIjsKIAkJCWlmICh3aW5kb3cudGVzdFJ1bm5lcikKIAkJCQl0ZXN0
UnVubmVyLm5vdGlmeURvbmUoKTsKIAkJCXJldHVybjsKIAkJfQogCi0JCXNlc3Npb25TdG9yYWdl
W3N0b3JhZ2VLZXldID0gIk1hZGUgaXQiOworCQlsb2NhbFN0b3JhZ2Vbc3RvcmFnZUtleV0gPSAi
TWFkZSBpdCI7CiAJCWxvY2F0aW9uLnJlbG9hZCgpOwogCX0KIAogCXJlcXVlc3Qub25zdWNjZXNz
ID0gZnVuY3Rpb24oZSkgewotCQlkb2N1bWVudC5ib2R5LmlubmVySFRNTCA9ICJVbmV4cGVjdGVk
IHVwZ3JhZGVuZWVkZWQgYWZ0ZXIgc3RvcmFnZSBwcm9jZXNzIHRlcm1pbmF0aW9uLiBEYXRhYmFz
ZTogbmFtZSAiICsgZGJuYW1lICsgIiwgdmVyc2lvbiAyLiBTZXNzaW9uU3RvcmFnZSB2YWx1ZTog
IiArIHNlc3Npb25TdG9yYWdlW3N0b3JhZ2VLZXldICsgIi4iOworCQlkb2N1bWVudC5ib2R5Lmlu
bmVySFRNTCA9ICJVbmV4cGVjdGVkIHVwZ3JhZGVuZWVkZWQgYWZ0ZXIgc3RvcmFnZSBwcm9jZXNz
IHRlcm1pbmF0aW9uLiBEYXRhYmFzZTogbmFtZSAiICsgZGJuYW1lICsgIiwgdmVyc2lvbiAyLiBs
b2NhbFN0b3JhZ2UgdmFsdWU6ICIgKyBzZXNzaW9uU3RvcmFnZVtzdG9yYWdlS2V5XSArICIuIjsK
IAkJaWYgKHdpbmRvdy50ZXN0UnVubmVyKQogCQkJdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAJ
fQogfQogCi12YXIgdmVyc2lvblRvT3BlbiA9IHNlc3Npb25TdG9yYWdlLmRvbmVGaXJzdExvYWQg
PyAzIDogMTsKK3ZhciB2ZXJzaW9uVG9PcGVuID0gbG9jYWxTdG9yYWdlLmRvbmVGaXJzdExvYWQg
PyAzIDogMTsKIHZhciByZXF1ZXN0ID0gd2luZG93LmluZGV4ZWREQi5vcGVuKGRibmFtZSwgdmVy
c2lvblRvT3Blbik7CiAKIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZSkgewot
CWlmIChzZXNzaW9uU3RvcmFnZS5kb25lRmlyc3RMb2FkKSB7CisJaWYgKGxvY2FsU3RvcmFnZS5k
b25lRmlyc3RMb2FkKSB7CiAJCWRvY3VtZW50LmJvZHkuaW5uZXJIVE1MID0gIlN1Y2Nlc3NmdWxs
eSBvcGVuZWQgZGF0YWJhc2Ugd2l0aCB2ZXJzaW9uICIgKyB2ZXJzaW9uVG9PcGVuICsgIi4iOwot
CQlzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Nlc3Npb25TdG9yYWdlW3N0b3JhZ2VLZXldJywgJ01h
ZGUgaXQnKTsKKwkJc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdsb2NhbFN0b3JhZ2Vbc3RvcmFnZUtl
eV0nLCAnTWFkZSBpdCcpOwogCiAJCWlmICh3aW5kb3cudGVzdFJ1bm5lcikgewogCQkJdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7CkBAIC01Miw3ICs1Miw3IEBAIHJlcXVlc3Qub251cGdyYWRlbmVl
ZGVkID0gZnVuY3Rpb24oZSkgewogCQl9CiAJfQogCi0Jc2Vzc2lvblN0b3JhZ2UuZG9uZUZpcnN0
TG9hZCA9IHRydWU7CisJbG9jYWxTdG9yYWdlLmRvbmVGaXJzdExvYWQgPSB0cnVlOwogCiAJLy8g
U2V0IGFuIGVycm9yIGhhbmRsZXIgb24gdGhlIGRhdGFiYXNlIGNvbm5lY3Rpb24gc28gb25jZSB0
aGUgc3RvcmFnZSBwcm9jZXNzIHRlcm1pbmF0ZXMgd2Uga25vdyB0byBjb250aW51ZSB0aGUgdGVz
dAogCWUudGFyZ2V0LnJlc3VsdC5vbmVycm9yID0gZnVuY3Rpb24oZSkgewpAQCAtNjEsNiArNjEs
OCBAQCByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGUpIHsKIAogCWlmICh3aW5k
b3cudGVzdFJ1bm5lcikgewogCQl0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKwkJLy8gTWFr
ZSBzdXJlIGxvY2FsU3RvcmFnZSBpcyBmbHVzaGVkIHRvIGRpc2sgYmVmb3JlIGNyYXNoaW5nIG5l
dHdvcmsgcHJvY2Vzcy4KKwkJdGVzdFJ1bm5lci5zeW5jTG9jYWxTdG9yYWdlKCk7CiAJCXRlc3RS
dW5uZXIudGVybWluYXRlTmV0d29ya1Byb2Nlc3MoKTsKIAl9CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376395</attachid>
            <date>2019-08-15 11:03:30 -0700</date>
            <delta_ts>2019-08-15 11:42:02 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-200373-20190815110329.patch</filename>
            <type>text/plain</type>
            <size>252444</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4NzI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODYzMDY1ZGUwZDMyZjA1
N2UyYzI5Zjc1NGEwMjQ0MTNlZWU4YWM4Yi4uYmY3MzA3YmE3MDI4ZDUyODEzNjViMDFmMmM4NWU4
OTcyNjNkYmIzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDE5LTA4LTE1ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIFNvbWUgaW1wcm92ZW1lbnRz
IG9uIHdlYiBzdG9yYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDAzNzMKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKwor
ICAgICAgICBSZW1vdmUgc3RvcmFnZSB0eXBlIEVwaGVtZXJhbExvY2FsU3RvcmFnZSwgd2hpY2gg
aXMgdXNlZCBmb3IgbG9jYWxTdG9yYWdlIGluIGVwaGVtZXJhbCBzZXNzaW9uLCBhbmQgdXNlIAor
ICAgICAgICBMb2NhbFN0b3JhZ2UgaW5zdGVhZC4KKworICAgICAgICBBZGQgU2Vzc2lvbklEIHRv
IFN0b3JhZ2VOYW1lc3BhY2UgdG8gbWFrZSBTdG9yYWdlTmFtZXNwYWNlIHNlc3Npb24tc3BlY2lm
aWMuCisKKyAgICAgICAgTm8gbmV3IHRlc3QsIHVwZGF0aW5nIGV4aXN0aW5nIHRlc3RzIGZvciBu
ZXcgYmVoYXZpb3IuCisKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlTdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAg
IChXZWJDb3JlOjpFbXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlRXBoZW1lcmFs
TG9jYWxTdG9yYWdlTmFtZXNwYWNlKTogRGVsZXRlZC4KKworICAgICAgICAqIHBhZ2UvQ2hyb21l
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6Y3JlYXRlV2luZG93IGNvbnN0KTogZXBo
ZW1lcmFsIGxvY2FsU3RvcmFnZSBvZiBkaWZmZXJlbnQgd2luZG93cyB3aWxsIGNvbm5lY3QgdG8g
dGhlIHNhbWUgCisgICAgICAgIFN0b3JhZ2VBcmVhIGluIG5ldHdvcmsgcHJvY2Vzcywgc28gbm8g
bmVlZCB0byBjb3B5IGZyb20gcGFyZW50IHdpbmRvdyB0byBjaGlsZCB3aW5kb3cuCisKKyAgICAg
ICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OnBy
ZXdhcm1Mb2NhbFN0b3JhZ2VJZk5lY2Vzc2FyeSk6IGxvY2FsU3RvcmFnZSB3aWxsIGJlIHByZXdh
cm1lZCBpbiBuZXR3b3JrIHByb2Nlc3MgaW4gdGhlCisgICAgICAgIGluaXRpYWxpemF0aW9uIG9m
IFN0b3JhZ2VBcmVhTWFwLgorCisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Om1fYXBwbGljYXRpb25NYW5pZmVzdCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjp+
UGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzZXRTZXNzaW9uSUQpOgorICAgICAgICAo
V2ViQ29yZTo6UGFnZTo6ZXBoZW1lcmFsTG9jYWxTdG9yYWdlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlBhZ2U6OnNldEVwaGVtZXJhbExvY2FsU3RvcmFnZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpQYWdlOjpzZXRTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIpOiBEZWxldGVk
LgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyKToKKyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U3RvcmFnZTo6cHJld2FybSk6IERlbGV0ZWQuCisgICAgICAgICogc3Rv
cmFnZS9TdG9yYWdlLmg6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlQXJlYS5oOgorICAgICAg
ICAoV2ViQ29yZTo6U3RvcmFnZUFyZWE6OmNsb3NlRGF0YWJhc2VJZklkbGUpOgorICAgICAgICAo
V2ViQ29yZTo6U3RvcmFnZUFyZWE6OnByZXdhcm0pOiBEZWxldGVkLgorICAgICAgICAqIHN0b3Jh
Z2UvU3RvcmFnZU5hbWVzcGFjZS5oOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
cjo6flN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcik6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdl
TmFtZXNwYWNlUHJvdmlkZXI6OmxvY2FsU3RvcmFnZUFyZWEpOgorICAgICAgICAoV2ViQ29yZTo6
U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpsb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjp0cmFuc2llbnRMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVy
OjplbmFibGVMZWdhY3lQcml2YXRlQnJvd3NpbmdGb3JUZXN0aW5nKTogY2hhbmdlIFNlc3Npb25J
RCBvZiBzdG9yYWdlTmFtZXNwYWNlCisgICAgICAgIGFuZCB1cGRhdGUgZXZlcnkgU3RvcmFnZUFy
ZWEgaW4gdGhpcyBuYW1lc3BhY2UuCisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXI6OmFkZFBhZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyOjpyZW1vdmVQYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdG9yYWdl
L1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZVR5
cGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OmlzTG9jYWxTdG9yYWdlKToKKwogMjAxOS0wOC0xNSAg
QW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgTmVnYXRpdmUgc2l6
ZSBib3ggd2l0aCBib3JkZXIgcmFkaXVzIGNhdXNlcyBoYW5nIHVuZGVyIFdlYkNvcmU6OmFwcHJv
eGltYXRlQXNSZWdpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZDE0ZGMzOTEzNTllMTM5NGY2MTdiMTdhYjc2M2I5
MjE4ZWYwMmQ4OS4uOWYxZDA5ZjFhZjMzNWUwZGI3YmE5YWQ5NzA0YjdjMjY1YTRkN2M1MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzMDMgQEAKKzIwMTktMDgtMTUgIFNpaHVpIExpdSAgPHNpaHVpX2xp
dUBhcHBsZS5jb20+CisKKyAgICAgICAgU29tZSBpbXByb3ZlbWVudHMgb24gd2ViIHN0b3JhZ2UK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDM3Mwor
CisgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgorCisgICAgICAgIEZpeCBzb21l
IGlzc3VlcyBpbiB3ZWIgc3RvcmFnZSBhcmNoaXRlY3R1cmUuIEZvciBleGFtcGxlLCBzZXNzaW9u
U3RvcmFnZU5hbWVTcGFjZSBmb3Igd2ViIHBhZ2UgaXMgcHJlcGFyZWQgYW5kIAorICAgICAgICBk
ZXN0cm95ZWQgaW4gdGhlIG5ldHdvcmsgcHJvY2VzcyB3aGVuIHRoZSBwYWdlIGNvbWVzIGFuZCBn
b2VzLCBldmVuIHRob3VnaCB0aGUgcGFnZSBtYXkgbm90IHVzZSBzZXNzaW9uU3RvcmFnZSAKKyAg
ICAgICAgYXQgYWxsLiBUaGUgbWVzc2FnZXMgYWJvdXQgcGFnZSBzdGF0ZSBzZW50IGZyb20gd2Vi
IHByb2Nlc3MgdG8gbmV0d29yayBwcm9jZXNzIGNhbiBiZSB3YXN0ZS4KKworICAgICAgICBIZXJl
IGFyZSBzb21lIGdlbmVyYWwgaWRlYXMgb2YgdGhpcyBwYXRjaDoKKyAgICAgICAgMS4gTmV0d29y
ayBwcm9jZXNzIG93bnMgdGhlIHdlYiBzdG9yYWdlLCBhbmQgd2ViIHByb2Nlc3Mga2VlcHMgYSBz
bWFsbCBsb2NhbCBjb3B5IChiYXNlZCBvbiBzZXNzaW9uIGFuZCAKKyAgICAgICAgb3JpZ2lucyB0
aGF0IGFyZSB2aXNpdGVkKS4gVGhlcmUgaXMgYSB2aXJ0dWFsIGNvbm5lY3Rpb24gZnJvbSB0aGUg
bG9jYWwgY29weSBpbiB0aGUgd2ViIHByb2Nlc3MgdG8gdGhlIG9yaWdpbmFsCisgICAgICAgIGNv
cHkgaW4gdGhlIG5ldHdvcmsgcHJvY2Vzcy4gVGhlIGNvbm5lY3Rpb24gaXMgY3JlYXRlZCBieSB3
ZWIgcHJvY2VzcyB3aGVuIHNvbWUgcGFnZSBhc2tzIGZvciB3ZWIgc3RvcmFnZS4KKyAgICAgICAg
Mi4gSWYgY29ubmVjdGlvbiBpcyBsb3N0IGJlY2F1c2UgbmV0d29yayBwcm9jZXNzIGlzIGdvbmUs
IHN0b3JhZ2UgaW4gbWVtb3J5IHdpbGwgYmUgbG9zdC4gVGhlIGxvY2FsIGNvcHkgaW4gd2ViCisg
ICAgICAgIHByb2Nlc3NzIHdpbGwgYmUgZGlzY2FyZGVkLgorICAgICAgICAzLiAoU2Vzc2lvbklE
LCBTdG9yYWdlTmFtZXNwYWNlSUQsIFNlY3VyaXR5T3JpZ2luKSBpcyB1c2VkIHRvIGlkZW50aWZ5
IGEgc3RvcmFnZSBhcmVhLiBJZiBzZXNzaW9uIGlzIGNoYW5nZWQgaW4KKyAgICAgICAgd2ViIHBy
b2Nlc3MgKGxpa2UgZW5hYmxpbmcgcHJpdmF0ZSBicm93c2luZyBpbiBsYXlvdXQgdGVzdCBub3cp
LCBhIHJlLWNvbm5lY3Rpb24gd2l0aCBkaWZmZXJlbnQgc2Vzc2lvbklEIHdvdWxkIAorICAgICAg
ICBzdWZmaWNlIHRvIGxvYWQgYW5vdGhlciBjb3B5IG9mIHN0b3JhZ2UuCisgICAgICAgIDQuIGxv
Y2FsU3RvcmFnZSBpbiBlcGhlbWVyYWwgc2Vzc2lvbiBoYXMgdGhlIHNhbWUgYmVoYXZpb3IgYXMg
bG9jYWxTdG9yYWdlIGluc3RlYWQgb2Ygc2Vzc2lvblN0b3JhZ2UsIHdoaWNoCisgICAgICAgIG1l
YW5zIGRpZmZlcmVudCBwYWdlcyBpbiB0aGUgc2FtZSBlcGhlbWVyYWwgc2Vzc2lvbiBzaGFyZSB0
aGUgc2FtZSBsb2NhbFN0b3JhZ2UuCisKKyAgICAgICAgQWxzbywgdGhpcyBwYXRjaCBpbnRyb2R1
Y2VzIFN0b3JhZ2VNYW5hZ2VyU2V0IHRvIG5ldHdvcmsgcHJvY2Vzcy4gSXQgaGFuZGxlcyB3ZWIg
c3RvcmFnZSBzdHVmZiwgaW5jbHVkaW5nCisgICAgICAgIHJlY2VpdmluZyBzdG9yYWdlIG1lc3Nh
Z2VzIGZyb20gd2ViIHByb2Nlc3MsIG9uIG9uZSBiYWNrZ3JvdW5kIHRocmVhZC4gUHJldmlvdXNs
eSBlYWNoIHNlc3Npb24gaGFzIGl0cyBvd24KKyAgICAgICAgU3RvcmFnZU1hbmFnZXIgYW5kIGVh
Y2ggU3RvcmFnZU1hbmFnZXIgaGFzIGl0cyBvd24gV29ya1F1ZXVlLgorCisgICAgICAgICogQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdDoK
KyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBE
ZXJpdmVkU291cmNlcy5tYWtlOgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOiByZW1vdmUgbWVzc2FnZSBoYW5kbGVycyB0aGF0IGFy
ZSBubyBsb25nZXIgbmVlZGVkLiBOZXR3b3JrCisgICAgICAgIHByb2Nlc3Mgbm8gbG9uZ2VyIG5l
ZWRzIHRvIGtub3cgcGFnZSBzdGF0ZXMgZnJvbSB3ZWIgcHJvY2Vzcy4KKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZENsb3NlKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OndlYlBhZ2VXYXNBZGRlZCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp3
ZWJQYWdlV2FzUmVtb3ZlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjp3ZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQpOiBEZWxldGVkLgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW46CisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHA6IE5ldHdvcmtQcm9jZXNzIHVzZXMgU3RvcmFnZU1hbmFnZXJTZXQgaW5zdGVhZCBvZiBTdG9y
YWdlTWFuYWdlciBmcm9tIAorICAgICAgICBkaWZmZXJlbnQgc2Vzc2lvbnMgdG8gZGVhbCB3aXRo
IHdlYiBzdG9yYWdlLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6TmV0d29ya1By
b2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZU5ldHdv
cmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKTogU3RvcmFnZU1hbmFnZXJTZXQgc3RhcnRzIGhhbmRs
aW5nIAorICAgICAgICBTdG9yYWdlTWFuYWdlclNldCBtZXNzYWdlcyBmcm9tIHRoZSBuZXcgY29u
bmVjdGlvbi4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmFkZFdlYnNpdGVEYXRh
U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVzdHJveVNlc3Npb24p
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6aGFzTG9jYWxTdG9yYWdlKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmZldGNoV2Vic2l0ZURhdGEpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGEpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yUmVnaXN0
cmFibGVEb21haW5zKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmFjdHVhbFBy
ZXBhcmVUb1N1c3BlbmQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVzdW1l
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnN5bmNMb2NhbFN0b3JhZ2UpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y2xlYXJMZWdhY3lQcml2YXRlQnJvd3Np
bmdMb2NhbFN0b3JhZ2UpOiBhZGRlZCBmb3IgY2xlYXJpbmcgaW4tbWVtb3J5IGVwaGVtZXJhbAor
ICAgICAgICBsb2NhbFN0b3JhZ2UuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpn
ZXRMb2NhbFN0b3JhZ2VPcmlnaW5EZXRhaWxzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3M6OmNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NDbG9zZWQpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6d2ViUGFnZVdhc0FkZGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3M6OndlYlBhZ2VXYXNSZW1vdmVkKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OndlYlByb2Nlc3NXYXNEaXNjb25uZWN0ZWQpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6d2ViUHJvY2Vzc1Nlc3Npb25D
aGFuZ2VkKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmlu
OgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwOiBTdG9yYWdl
TWFuYWdlciBpcyBtb3ZlZCBvdXQgb2YgTmV0d29ya1Nlc3Npb24uIEl0IGlzIG5vdyBtYW5hZ2Vk
IGJ5IAorICAgICAgICBTdG9yYWdlTWFuYWdlclNldC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Nlc3Npb246Ok5ldHdvcmtTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Np
b246On5OZXR3b3JrU2Vzc2lvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nl
c3Npb24uaDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OnN0b3JhZ2VNYW5hZ2Vy
KTogRGVsZXRlZC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3Jl
YXRpb25QYXJhbWV0ZXJzLmNwcDogY3JlYXRpb24gcGFyYW1ldGVycyBvZiBTdG9yYWdlTWFuYWdl
ciBpcyBtb3ZlZCBvdXQgb2YKKyAgICAgICAgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRl
cnMuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzOjpw
cml2YXRlU2Vzc2lvblBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lv
bkNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuaDoKKworICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpMb2NhbFN0b3JhZ2VEYXRhYmFzZTo6dXBkYXRlRGF0YWJhc2UpOiByZW1v
dmUgYW4gYXNzZXJ0aW9uIHRoYXQgaXMgbm8gbG9uZ2VyIHRydWUgYXMgd2UgY2FuIGZvcmNlIGFu
CisgICAgICAgIHVwZGF0ZSB3aXRoIHN5bmNMb2NhbFN0b3JhZ2Ugbm93LgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuaDogbWFrZSB1cGRh
dGVEYXRhYmFzZSBwdWJsaWMgZm9yIHN5bmNMb2NhbFN0b3JhZ2UuCisKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5jcHA6IExv
Y2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlciBpcyBjcmVhdGVkIG9uIHRoZQorICAgICAgICBiYWNr
Z3JvdW5kIHRocmVhZCBub3csIHNvIGl0IGRvZXMgbm90IGhvbGQgV29ya1F1ZXVlIHRvIGRvIHRo
ZSBmaWxlIG9wZXJhdGlvbi4KKyAgICAgICAgKFdlYktpdDo6TG9jYWxTdG9yYWdlRGF0YWJhc2VU
cmFja2VyOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpMb2NhbFN0b3JhZ2VEYXRhYmFzZVRy
YWNrZXI6OkxvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcik6CisgICAgICAgIChXZWJLaXQ6Okxv
Y2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6fkxvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcik6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFz
ZVRyYWNrZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3Rv
cmFnZU5hbWVzcGFjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsU3RvcmFnZU5hbWVzcGFj
ZTo6Z2V0T3JDcmVhdGVTdG9yYWdlQXJlYSk6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsU3RvcmFn
ZU5hbWVzcGFjZTo6Y2xvbmVUbyk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
V2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VOYW1lc3BhY2UuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9XZWJTdG9yYWdlL1Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2U6OmdldE9yQ3JlYXRlU3RvcmFnZUFyZWEpOgor
ICAgICAgICAoV2ViS2l0OjpTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZTo6YWRkQWxsb3dlZENvbm5l
Y3Rpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTZXNzaW9uU3RvcmFnZU5hbWVzcGFj
ZTo6cmVtb3ZlQWxsb3dlZENvbm5lY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL1dlYlN0b3JhZ2UvU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UuaDoKKyAgICAgICAgKFdl
YktpdDo6U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2U6OmFsbG93ZWRDb25uZWN0aW9ucyBjb25zdCk6
IERlbGV0ZWQuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VB
cmVhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Z2VuZXJhdGVTdG9yYWdlQXJlYUlkZW50aWZpZXIp
OiBlYWNoIFN0b3JhZ2VBcmVhIGhhcyBhbiBpZGVudGlmaWVyLiBTdG9yYWdlQXJlYU1hcCBpbiB3
ZWIgcHJvY2VzcyB1c2VzCisgICAgICAgIHRoaXMgaWRlbnRpZmllciB0byBpbmRpY2F0ZSB3aGlj
aCBTdG9yYWdlQXJlYSBpdCBpcyBjb25uZWN0aW5nIHRvLgorICAgICAgICAoV2ViS2l0OjpTdG9y
YWdlQXJlYTo6U3RvcmFnZUFyZWEpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYTo6flN0
b3JhZ2VBcmVhKTogU3RvcmFnZUFyZWEgbWF5IHN0aWxsIGhhdmUgbGlzdGVuZXJzIGJlY2F1c2Ug
U3RvcmFnZUFyZWEgc2hvdWxkIGJlIAorICAgICAgICBkZXN0cm95ZWQgYnkgcmVxdWVzdHMgZnJv
bSBVSSBwcm9jZXNzLCBhbmQgbGlzdGVuZXJzIGFyZSBjb25uZWN0aW9ucyB0byB3ZWIgcHJvY2Vz
c3Nlcy4KKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWE6OmFkZExpc3RlbmVyKTogbG9hZCBs
b2NhbFN0b3JhZ2VEYXRhYmFzZSBpbiBhZHZhbmNlIGlmIHRoZXJlIGlzIHNvbWUgY29ubmVjdGlv
biB0byB0aGlzIAorICAgICAgICBMb2NhbFN0b3JhZ2UgYXJlYS4KKyAgICAgICAgKFdlYktpdDo6
U3RvcmFnZUFyZWE6OnJlbW92ZUxpc3RlbmVyKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFy
ZWE6Omhhc0xpc3RlbmVyIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWE6OmNs
ZWFyKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWE6Om9wZW5EYXRhYmFzZUFuZEltcG9y
dEl0ZW1zSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYTo6ZGlz
cGF0Y2hFdmVudHMgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYTo6c3luY1Rv
RGF0YWJhc2UpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYTo6c2V0SXRlbXMpOiBEZWxl
dGVkLiBTdG9wIHN5bmNpbmcgZnJvbSB3ZWIgcHJvY2VzcyB0byBuZXR3b3JrIHByb2Nlc3MgYWZ0
ZXIgbmV0d29yayBwcm9jZXNzCisgICAgICAgIGlzIHJlbGF1bmNoZWQuCisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYS5oOgorICAgICAgICAoV2ViS2l0OjpT
dG9yYWdlQXJlYTo6aWRlbnRpZmllcik6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhOjpz
ZXRXb3JrUXVldWUpOgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9y
YWdlTWFuYWdlci5jcHA6IFN0b3JhZ2VNYW5hZ2VyIHNob3VsZCBiZSBhY2Nlc3NlZCBieSBvbmx5
IGJhY2tncm91bmQgdGhyZWFkIG5vdy4KKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6
OlN0b3JhZ2VNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6On5TdG9y
YWdlTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVTZXNz
aW9uU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpk
ZXN0cm95U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UpOiB0aGlzIGlzIG5vdCB1c2VkIG5vdyBidXQg
a2VlcCBpdCBmb3IgZnV0dXJlIAorICAgICAgICBpbXByb3ZlbWVudCB0byByZW1vdmUgaW4tbWVt
b3J5IHNlc3Npb25TdG9yYWdlIGluIG5ldHdvcmsgcHJvY2VzcyBpZiB3ZSBrbm93IHNvbWUgd2Vi
IHBhZ2UgaXMgZ29uZSBmb3JldmVyLgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6
Y2xvbmVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSk6IHByZXZpb3VzbHkgZWFjaCBwYWdlIGhhZCBp
dHMgb3duIGVwaGVtZXJhbCAKKyAgICAgICAgbG9jYWxTdG9yYWdlTmFtZXNwYWNlIGFuZCBub3cg
YWxsIHBhZ2VzIGluIHRoZSBzYW1lIHNlc3Npb24gc2hhcmUgb25lIGxvY2FsU3RvcmFnZSwgc28g
d2UgZG9uJ3QgbmVlZCB0byBjbG9uZQorICAgICAgICBsb2NhbFN0b3JhZ2VOYW1lc3BhY2UuCisg
ICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpnZXRTZXNzaW9uU3RvcmFnZU9yaWdpbnMp
OgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlU2Vzc2lvblN0b3JhZ2VP
cmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmRlbGV0ZVNlc3Npb25T
dG9yYWdlRW50cmllc0Zvck9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdl
cjo6Z2V0TG9jYWxTdG9yYWdlT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5h
Z2VyOjpnZXRMb2NhbFN0b3JhZ2VPcmlnaW5EZXRhaWxzKToKKyAgICAgICAgKFdlYktpdDo6U3Rv
cmFnZU1hbmFnZXI6OmRlbGV0ZUxvY2FsU3RvcmFnZU9yaWdpbnNNb2RpZmllZFNpbmNlKToKKyAg
ICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmRlbGV0ZUxvY2FsU3RvcmFnZUVudHJpZXNG
b3JPcmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmNyZWF0ZUxvY2Fs
U3RvcmFnZUFyZWEpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlVHJh
bnNpZW50TG9jYWxTdG9yYWdlQXJlYSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2Vy
OjpjcmVhdGVTZXNzaW9uU3RvcmFnZUFyZWEpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFu
YWdlcjo6Z2V0T3JDcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViS2l0
OjpTdG9yYWdlTWFuYWdlcjo6Z2V0T3JDcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2UpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6Z2V0T3JDcmVhdGVTZXNzaW9u
U3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpjbGVh
clN0b3JhZ2VOYW1lc3BhY2VzKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmFk
ZEFsbG93ZWRTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZUNvbm5lY3Rpb24pOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6cmVtb3ZlQWxsb3dlZFNlc3Npb25TdG9yYWdl
TmFtZXNwYWNlQ29ubmVjdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VN
YW5hZ2VyOjpwcm9jZXNzRGlkQ2xvc2VDb25uZWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6U3RvcmFnZU1hbmFnZXI6OmRlbGV0ZUxvY2FsU3RvcmFnZUVudHJpZXNGb3JPcmlnaW4p
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlTG9jYWxT
dG9yYWdlTWFwKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmNy
ZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU1hcCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6
OlN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU1hcCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpkZXN0cm95U3RvcmFnZU1hcCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpwcmV3YXJtKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmdldFZhbHVlcyk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpzZXRJdGVtKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OnNldEl0ZW1zKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6U3RvcmFnZU1hbmFnZXI6OnJlbW92ZUl0ZW0pOiBEZWxldGVkLgorICAgICAgICAoV2Vi
S2l0OjpTdG9yYWdlTWFuYWdlcjo6Y2xlYXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpT
dG9yYWdlTWFuYWdlcjo6d2FpdFVudGlsVGFza3NGaW5pc2hlZCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpzdXNwZW5kKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6U3RvcmFnZU1hbmFnZXI6OnJlc3VtZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6
OlN0b3JhZ2VNYW5hZ2VyOjpmaW5kU3RvcmFnZUFyZWEgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuaDoKKyAgICAgICAg
KFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OndvcmtRdWV1ZSBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgICgpOiBEZWxldGVkLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9T
dG9yYWdlTWFuYWdlci5tZXNzYWdlcy5pbjogUmVtb3ZlZC4gTW92ZWQgdG8gU3RvcmFnZU1hbmFn
ZXJTZXQubWVzc2FnZXMuaW4uCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdl
L1N0b3JhZ2VNYW5hZ2VyU2V0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VN
YW5hZ2VyU2V0OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlclNldDo6
U3RvcmFnZU1hbmFnZXJTZXQpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlclNldDo6
flN0b3JhZ2VNYW5hZ2VyU2V0KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXJTZXQ6
OmFkZCk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpyZW1vdmUpOgorICAg
ICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlclNldDo6Y29udGFpbnMpOgorICAgICAgICAoV2Vi
S2l0OjpTdG9yYWdlTWFuYWdlclNldDo6YWRkQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OlN0b3JhZ2VNYW5hZ2VyU2V0OjpyZW1vdmVDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
U3RvcmFnZU1hbmFnZXJTZXQ6OndhaXRVbnRpbFRhc2tzRmluaXNoZWQpOgorICAgICAgICAoV2Vi
S2l0OjpTdG9yYWdlTWFuYWdlclNldDo6d2FpdFVudGlsU3luY2luZ0xvY2FsU3RvcmFnZUZpbmlz
aGVkKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXJTZXQ6OnN1c3BlbmQpOgorICAg
ICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlclNldDo6cmVzdW1lKToKKyAgICAgICAgKFdlYktp
dDo6U3RvcmFnZU1hbmFnZXJTZXQ6OmdldFNlc3Npb25TdG9yYWdlT3JpZ2lucyk6CisgICAgICAg
IChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpkZWxldGVTZXNzaW9uU3RvcmFnZSk6CisgICAg
ICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpkZWxldGVTZXNzaW9uU3RvcmFnZUZvck9y
aWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlclNldDo6Z2V0TG9jYWxTdG9y
YWdlT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpkZWxldGVM
b2NhbFN0b3JhZ2VNb2RpZmllZFNpbmNlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFn
ZXJTZXQ6OmRlbGV0ZUxvY2FsU3RvcmFnZUZvck9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpT
dG9yYWdlTWFuYWdlclNldDo6Z2V0TG9jYWxTdG9yYWdlT3JpZ2luRGV0YWlscyk6CisgICAgICAg
IChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0Ojpjb25uZWN0VG9Mb2NhbFN0b3JhZ2VBcmVhKToK
KyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXJTZXQ6OmNvbm5lY3RUb1RyYW5zaWVudExv
Y2FsU3RvcmFnZUFyZWEpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlclNldDo6Y29u
bmVjdFRvU2Vzc2lvblN0b3JhZ2VBcmVhKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFn
ZXJTZXQ6OmRpc2Nvbm5lY3RGcm9tU3RvcmFnZUFyZWEpOgorICAgICAgICAoV2ViS2l0OjpTdG9y
YWdlTWFuYWdlclNldDo6Z2V0VmFsdWVzKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFn
ZXJTZXQ6OnNldEl0ZW0pOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlclNldDo6cmVt
b3ZlSXRlbSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpjbGVhcik6Cisg
ICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpjbG9uZVNlc3Npb25TdG9yYWdlTmFt
ZXNwYWNlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5h
Z2VyU2V0Lmg6IEFkZGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3Rv
cmFnZU1hbmFnZXJTZXQubWVzc2FnZXMuaW46IEFkZGVkLgorCisgICAgICAgICogU2hhcmVkL1dl
YnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmNwcDogY3JlYXRpb24gcGFyYW1ldGVycyBvZiBTdG9y
YWdlTWFuYWdlciBhcmUgbW92ZWQgdG8gCisgICAgICAgIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0
ZXJzLgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM6OmRl
Y29kZSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOjpwcml2
YXRlU2Vzc2lvblBhcmFtZXRlcnMpOgorICAgICAgICAqIFNoYXJlZC9XZWJzaXRlRGF0YVN0b3Jl
UGFyYW1ldGVycy5oOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLQ29udGV4dC5jcHA6IGFkZCBTUEkgZm9yIHRlc3RzLgorICAgICAgICAoV0tD
b250ZXh0U3luY0xvY2FsU3RvcmFnZSk6CisgICAgICAgIChXS0NvbnRleHRDbGVhckxlZ2FjeVBy
aXZhdGVCcm93c2luZ0xvY2FsU3RvcmFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dL
Q29udGV4dFByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0
YVN0b3JlUmVmLmNwcDoKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUxvY2FsU3Rv
cmFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQb29sOjplbnN1cmVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQb29sOjpzeW5jTG9jYWxTdG9yYWdlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2w6OmNsZWFyTGVnYWN5UHJpdmF0ZUJyb3dzaW5nTG9jYWxTdG9yYWdlKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0ZXJzKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMpOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZS5jcHA6IHNlc3Npb24gY2hhbmdlIG9mIHdlYiBzdG9yYWdlIGlzIGRvbmUg
dmlhIAorICAgICAgICBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgaW5zdGVhZCBvZiBXZWJQ
cm9jZXNzIG5vdy4KKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6OnNldFByaXZhdGVC
cm93c2luZ0VuYWJsZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6IHdl
YiBwcm9jZXNzIG5vIGxvbmdlciBzZW5kcyBtZXNzc2FnZXMgYWJvdXQgcGFnZSBzdGF0ZSB0byBu
ZXR3b3JrIHByb2Nlc3MuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmNyZWF0ZVdlYlBh
Z2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpyZW1vdmVXZWJQYWdlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6bmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uQ2xv
c2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6c3RvcmFnZUFyZWFNYXAgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjplbmFibGVQcml2YXRlQnJvd3NpbmdGb3JU
ZXN0aW5nKTogRGVsZXRlZC4gVGhpcyB3YXMgdXNlZCBmb3IgY2hhbmdpbmcgc2Vzc2lvbiB2aWEg
CisgICAgICAgIFdlYlByb2Nlc3MuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1wbDo6U3RvcmFnZUFyZWFJbXBsKToKKyAgICAg
ICAgKFdlYktpdDo6U3RvcmFnZUFyZWFJbXBsOjpsZW5ndGgpOgorICAgICAgICAoV2ViS2l0OjpT
dG9yYWdlQXJlYUltcGw6OmtleSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1wbDo6
aXRlbSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1wbDo6c2V0SXRlbSk6CisgICAg
ICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1wbDo6cmVtb3ZlSXRlbSk6CisgICAgICAgIChXZWJL
aXQ6OlN0b3JhZ2VBcmVhSW1wbDo6Y2xlYXIpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJl
YUltcGw6OmNvbnRhaW5zKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFJbXBsOjpzdG9y
YWdlVHlwZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1wbDo6aW5jcmVt
ZW50QWNjZXNzQ291bnQpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYUltcGw6OmRlY3Jl
bWVudEFjY2Vzc0NvdW50KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFJbXBsOjpwcmV3
YXJtKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFJbXBsOjpzZWN1cml0
eU9yaWdpbiBjb25zdCk6IERlbGV0ZWQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlN0b3Jh
Z2UvU3RvcmFnZUFyZWFJbXBsLmg6IG1ha2UgU3RvcmFnZUFyZWFJbXBsIGhvbGQgYSB3ZWFrIHJl
ZmVyZW5jZSB0byBTdG9yYWdlQXJlYU1hcCBhbmQgCisgICAgICAgIFN0b3JhZ2VOYW1lc3BhY2VJ
bXBsIGhvbGQgYSBzdHJvbmcgcmVmZXJlbmNlLiBJbiB0aGlzIHdheSBsaWZlaW1lIG9mIGxvY2Fs
U3RvcmFnZSBTdG9yYWdlQXJlcmFNYXAgc3RheXMgYWxpZ24gCisgICAgICAgIHdpdGggU3RvcmFn
ZU5hbWVTcGFjZVByb3ZpZGVyIGFuZCBQYWdlLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJT
dG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcDogaWRlbnRpZmllciBvZiBTdG9yYWdlQXJlYU1hcCBp
cyB0aGUgc2FtZSBhcyBpZGVudGlmaWVyIG9mIAorICAgICAgICBTdG9yYWdlQXJlYSBpdCBjb25u
ZWN0cyB0by4gSWYgdGhlIGlkZW50aWZpZXIgaXMgMCwgaXQgbWVhbnMgdGhlIFN0b3JhZ2VBcmVh
TWFwIGlzIGRpc2Nvbm5lY3RlZC4KKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OlN0
b3JhZ2VBcmVhTWFwKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6On5TdG9yYWdl
QXJlYU1hcCk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwOjpzZXRJdGVtKToKKyAg
ICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OnJlbW92ZUl0ZW0pOgorICAgICAgICAoV2Vi
S2l0OjpTdG9yYWdlQXJlYU1hcDo6Y2xlYXIpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJl
YU1hcDo6cmVzZXRWYWx1ZXMpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6bG9h
ZFZhbHVlc0lmTmVlZGVkKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OmFwcGx5
Q2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OmRpc3BhdGNoU3RvcmFn
ZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OmRpc3BhdGNoU2Vzc2lv
blN0b3JhZ2VFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwOjpkaXNwYXRj
aExvY2FsU3RvcmFnZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OmNv
bm5lY3QpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6ZGlzY29ubmVjdCk6Cisg
ICAgICAgIChXZWJLaXQ6OmdlbmVyYXRlU3RvcmFnZU1hcElEKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OnByZXdhcm0pOiBEZWxldGVkLgorICAgICAgICAoV2Vi
S2l0OjpTdG9yYWdlQXJlYU1hcDo6ZGlkR2V0VmFsdWVzKTogRGVsZXRlZC4gVGhpcyBpcyB1c2Vs
ZXNzIGFzIEdldFZhbHVlcyBpcyBhIHN5bmNocm9ub3VzIG9wZXJhdGlvbi4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuaDoKKyAgICAgICAgKCk6IERlbGV0
ZWQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAubWVz
c2FnZXMuaW46IHRoZXJlIGFyZSB0d28gc3luY2hyb25vdXMgbWVzc2FnZXMsIG9uZSBmb3IgY29u
bmVjdGlvbiBhbmQgCisgICAgICAgIG9uZSBmb3IgZ2V0dGluZyB2YWx1ZXMuIFdlIG1heSBtZXJn
ZSB0aGVtIGludG8gb25lIGluIGZ1dHVyZSBpbXByb3ZlbWVudC4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0
OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UpOgor
ICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlTG9jYWxTdG9yYWdl
TmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0
ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3Jh
Z2VOYW1lc3BhY2VJbXBsOjpTdG9yYWdlTmFtZXNwYWNlSW1wbCk6CisgICAgICAgIChXZWJLaXQ6
OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpzdG9yYWdlQXJlYSk6CisgICAgICAgIChXZWJLaXQ6OlN0
b3JhZ2VOYW1lc3BhY2VJbXBsOjpjb3B5KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVz
cGFjZUltcGw6OnNldFNlc3Npb25JREZvclRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpTdG9y
YWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKTog
RGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFj
ZUltcGwuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFnZU5hbWVzcGFjZVBy
b3ZpZGVyOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVU
cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFj
ZSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VO
YW1lc3BhY2VQcm92aWRlci5oOgorCiAyMDE5LTA4LTE1ICBBbGV4IENocmlzdGVuc2VuICA8YWNo
cmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgV0tVSURlbGVnYXRlJ3Mgd2ViVmlldzpj
b250ZXh0TWVudURpZEVuZEZvckVsZW1lbnQ6IHNob3VsZCBiZSBjYWxsZWQgd2hlbiBjb250ZXh0
IG1lbnVzIGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwppbmRleCBkN2JmZmNiZDM3YmZlMjI3MTcwOGE2
MzJhMzFmOTQ3YmZiYzNjMTFmLi42NmU1ZmEzYTJiY2QwMDg0ZmVlMDg0M2E2MzU2MDc1OGVmMWYy
NTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE5LTA4LTE1ICBT
aWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIFNvbWUgaW1wcm92ZW1l
bnRzIG9uIHdlYiBzdG9yYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDAzNzMKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4K
KworICAgICAgICBEbyBzb21lIGNsZWFuLXVwIGFuZCBhZGQgc3VwcG9ydCBmb3Igc2Vzc2lvbiBj
aGFuZ2Ugb2Ygd2ViIHN0b3JhZ2UgaW4gbGF5b3V0IHRlc3RzLgorCisgICAgICAgICogU3RvcmFn
ZS9TdG9yYWdlQXJlYUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYUltcGw6
OnNlc3Npb25DaGFuZ2VkKToKKyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oOgor
ICAgICAgICAoKTogRGVsZXRlZC4KKworICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZUFyZWFTeW5j
Lmg6IG1ha2Ugc3VyZSBTdG9yYWdlQXJlYVN5bmMgaXMgZGVzdHJ1Y3RlZCBvbiB0aGUgbWFpbiB0
aHJlYWQsIGFzIGl0IGNhbiBiZSAKKyAgICAgICAgZGVyZWZlcmVuY2VkIGluIFN0b3JhZ2VBcmVh
SW1wbDo6c2Vzc2lvbkNoYW5nZWQgYW5kIGl0cyBsYXN0IHJlZmVyZW5jZSBmb3IgZmluYWwgc3lu
YyBjb3VsZCBiZSByZWxlYXNlZCBvbiB0aGUgCisgICAgICAgIGJhY2tncm91bmQgdGhyZWFkLgor
CisgICAgICAgICogU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHA6IHJlcGxhY2UgRXBo
ZW1lcmFsTG9jYWxTdG9yYWdlIHdpdGggTG9jYWxTdG9yYWdlLCBhbmQgc3RvcmUgU2Vzc2lvbklE
IGluIAorICAgICAgICBTdG9yYWdlTmFtZXNwYWNlLgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdl
TmFtZXNwYWNlSW1wbDo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAo
V2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Z2V0T3JDcmVhdGVMb2NhbFN0b3JhZ2VOYW1l
c3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6U3RvcmFnZU5h
bWVzcGFjZUltcGwpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y29w
eSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjbG9zZSk6CisgICAg
ICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpzZXRTZXNzaW9uSURGb3JUZXN0aW5n
KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZUVwaGVtZXJh
bExvY2FsU3RvcmFnZU5hbWVzcGFjZSk6IERlbGV0ZWQuCisgICAgICAgICogU3RvcmFnZS9TdG9y
YWdlTmFtZXNwYWNlSW1wbC5oOgorICAgICAgICAqIFN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVUcmFu
c2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTdG9yYWdl
TmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZSk6
IERlbGV0ZWQuCisgICAgICAgICogU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIu
aDoKKwogMjAxOS0wOC0xNCAgUnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjQ4NTI2LgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCmluZGV4IGE3MzEzNzdmMGQxMTM4NDUwMjNiOGIyNzU3ZTJhNmQyZjFiNDFkYjIu
LjA5YjFjMjNmMWEyY2ExZjJkZWNjYWE5MmMyYjZiMjE1MTkzNDRmYWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxOS0wOC0xNSAgU2lodWkgTGl1ICA8
c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBTb21lIGltcHJvdmVtZW50cyBvbiB3ZWIg
c3RvcmFnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjAwMzczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAgICAgICAg
KiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgX3ByZWZlcmVuY2VzQ2hh
bmdlZDpdKTogbm90aWZ5IHN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciBhYm91dCBzZXNzaW9uIGNo
YW5nZS4KKwogMjAxOS0wOC0xNSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNv
bT4KIAogICAgICAgICBVc2UgT2JqZWN0SWRlbnRpZmllcjxGcmFtZUlkZW50aWZpZXJUeXBlPiBm
b3IgZnJhbWVJRHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVu
dHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKaW5kZXggYzQ1
MGMwODcwYzBkYjkwMDJiOTA0YzdiNmNiY2U0Yzk2OTAyYzZkYy4uMDQ1M2Q3ZTZkOWUzNjU2MDJh
YzlhYmQ5OTliNGUyZmFiMTMyYWRiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50
cy5jcHAKQEAgLTM5MCwxOCArMzkwLDE5IEBAIGNsYXNzIEVtcHR5U3RvcmFnZU5hbWVzcGFjZVBy
b3ZpZGVyIGZpbmFsIDogcHVibGljIFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciB7CiAgICAgICAg
IGJvb2wgY29udGFpbnMoY29uc3QgU3RyaW5nJikgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICAgICAgU3RvcmFnZVR5cGUgc3RvcmFnZVR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBTdG9y
YWdlVHlwZTo6TG9jYWw7IH0KICAgICAgICAgc2l6ZV90IG1lbW9yeUJ5dGVzVXNlZEJ5Q2FjaGUo
KSBmaW5hbCB7IHJldHVybiAwOyB9Ci0gICAgICAgIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYg
c2VjdXJpdHlPcmlnaW4oKSBjb25zdCBmaW5hbCB7IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTZWN1
cml0eU9yaWdpbkRhdGE+IG9yaWdpbjsgcmV0dXJuIG9yaWdpbi5nZXQoKTsgfQogICAgIH07CiAK
ICAgICBzdHJ1Y3QgRW1wdHlTdG9yYWdlTmFtZXNwYWNlIGZpbmFsIDogcHVibGljIFN0b3JhZ2VO
YW1lc3BhY2UgewogICAgICAgICBSZWY8U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhKGNvbnN0IFNl
Y3VyaXR5T3JpZ2luRGF0YSYpIGZpbmFsIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRW1wdHlTdG9y
YWdlQXJlYSk7IH0KICAgICAgICAgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNvcHkoUGFnZSopIGZp
bmFsIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRW1wdHlTdG9yYWdlTmFtZXNwYWNlKTsgfQorICAg
ICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCB7IHJldHVybiBQQUw6OlNlc3Np
b25JRDo6ZW1wdHlTZXNzaW9uSUQoKTsgfQorICAgICAgICB2b2lkIHNldFNlc3Npb25JREZvclRl
c3RpbmcoUEFMOjpTZXNzaW9uSUQpIHsgfTsKICAgICB9OwogCiAgICAgUmVmPFN0b3JhZ2VOYW1l
c3BhY2U+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCkgZmlu
YWw7Ci0gICAgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFj
ZSh1bnNpZ25lZCkgZmluYWw7Ci0gICAgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUVwaGVt
ZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQpIGZpbmFsOwotICAgIFJl
ZjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2Uo
U2VjdXJpdHlPcmlnaW4mLCB1bnNpZ25lZCkgZmluYWw7CisgICAgUmVmPFN0b3JhZ2VOYW1lc3Bh
Y2U+IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCwgUEFMOjpTZXNzaW9uSUQp
IGZpbmFsOworICAgIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UoU2VjdXJpdHlPcmlnaW4mLCB1bnNpZ25lZCwgUEFMOjpTZXNzaW9uSUQp
IGZpbmFsOworCiB9OwogCiBjbGFzcyBFbXB0eVVzZXJDb250ZW50UHJvdmlkZXIgZmluYWwgOiBw
dWJsaWMgVXNlckNvbnRlbnRQcm92aWRlciB7CkBAIC01MjUsMTcgKzUyNiwxMiBAQCBSZWY8U3Rv
cmFnZU5hbWVzcGFjZT4gRW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVNlc3Np
b25TdG9yYWdlTmFtZXNwYQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEVtcHR5U3RvcmFnZU5h
bWVzcGFjZSk7CiB9CiAKLVJlZjxTdG9yYWdlTmFtZXNwYWNlPiBFbXB0eVN0b3JhZ2VOYW1lc3Bh
Y2VQcm92aWRlcjo6Y3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkKQotewotICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IEVtcHR5U3RvcmFnZU5hbWVzcGFjZSk7Ci19Ci0KLVJlZjxT
dG9yYWdlTmFtZXNwYWNlPiBFbXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlRXBo
ZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCkKK1JlZjxTdG9yYWdl
TmFtZXNwYWNlPiBFbXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlTG9jYWxTdG9y
YWdlTmFtZXNwYWNlKHVuc2lnbmVkLCBQQUw6OlNlc3Npb25JRCkKIHsKICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBFbXB0eVN0b3JhZ2VOYW1lc3BhY2UpOwogfQogCi1SZWY8U3RvcmFnZU5hbWVz
cGFjZT4gRW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVRyYW5zaWVudExvY2Fs
U3RvcmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkKQorUmVmPFN0b3JhZ2VO
YW1lc3BhY2U+IEVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVUcmFuc2llbnRM
b2NhbFN0b3JhZ2VOYW1lc3BhY2UoU2VjdXJpdHlPcmlnaW4mLCB1bnNpZ25lZCwgUEFMOjpTZXNz
aW9uSUQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRW1wdHlTdG9yYWdlTmFtZXNwYWNl
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAppbmRleCA5NzU4MzI5YmE5MDljZDkxM2NhYjQ2ODVk
NzFhZTlkYTRmYzM1Y2E2Li43M2ZlZTA3ZDlhMTU0OTI1YTUxYTY3ZTI0YzUzNTE5ZTEzNzI2NzBl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCkBAIC0xODksOCArMTg5LDYgQEAgUGFnZSogQ2hyb21l
OjpjcmVhdGVXaW5kb3coRnJhbWUmIGZyYW1lLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiByZXF1
ZXN0LCBjb25zdAogCiAgICAgaWYgKGF1dG8qIG9sZFNlc3Npb25TdG9yYWdlID0gbV9wYWdlLnNl
c3Npb25TdG9yYWdlKGZhbHNlKSkKICAgICAgICAgbmV3UGFnZS0+c2V0U2Vzc2lvblN0b3JhZ2Uo
b2xkU2Vzc2lvblN0b3JhZ2UtPmNvcHkobmV3UGFnZSkpOwotICAgIGlmIChhdXRvKiBvbGRFcGhl
bWVyYWxMb2NhbFN0b3JhZ2UgPSBtX3BhZ2UuZXBoZW1lcmFsTG9jYWxTdG9yYWdlKGZhbHNlKSkK
LSAgICAgICAgbmV3UGFnZS0+c2V0RXBoZW1lcmFsTG9jYWxTdG9yYWdlKG9sZEVwaGVtZXJhbExv
Y2FsU3RvcmFnZS0+Y29weShuZXdQYWdlKSk7CiAKICAgICByZXR1cm4gbmV3UGFnZTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCAxN2NiYTVlNGZmNGUyYjViYzg4ODFhMjcwYTQz
OGNkOGE1NDM1NjcyLi4zMDc0YjE4ZWUzNmU0MTA2MGRjMjJlOWE0M2Q1MTg4ZWQ0MjgzYmM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC00NDIsOCArNDQyLDcgQEAgdm9pZCBET01X
aW5kb3c6OnByZXdhcm1Mb2NhbFN0b3JhZ2VJZk5lY2Vzc2FyeSgpCiAgICAgaWYgKCFsb2NhbFN0
b3JhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChsb2NhbFN0b3JhZ2UtPnByZXdhcm0o
KSkKLSAgICAgICAgcGFnZS0+bWFpbkZyYW1lKCkuZGlkUHJld2FybUxvY2FsU3RvcmFnZSgpOwor
ICAgIHBhZ2UtPm1haW5GcmFtZSgpLmRpZFByZXdhcm1Mb2NhbFN0b3JhZ2UoKTsKIH0KIAogRE9N
V2luZG93Ojp+RE9NV2luZG93KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDRkNGE0OWM3MzFhNGNh
ZjQ2ZWRlNjExNTc3Y2IzOWU2YmZmZjBhMjIuLjM5NWQyZjAxMjMzY2I5ODllN2VmNTU1Y2M3MThi
ZTk0ODk2NzEyZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMjg5LDcgKzI4OSw2IEBAIFBhZ2U6
OlBhZ2UoUGFnZUNvbmZpZ3VyYXRpb24mJiBwYWdlQ29uZmlndXJhdGlvbikKICAgICB1cGRhdGVU
aW1lclRocm90dGxpbmdTdGF0ZSgpOwogCiAgICAgbV9wbHVnaW5JbmZvUHJvdmlkZXItPmFkZFBh
Z2UoKnRoaXMpOwotICAgIG1fc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLT5hZGRQYWdlKCp0aGlz
KTsKICAgICBtX3VzZXJDb250ZW50UHJvdmlkZXItPmFkZFBhZ2UoKnRoaXMpOwogICAgIG1fdmlz
aXRlZExpbmtTdG9yZS0+YWRkUGFnZSgqdGhpcyk7CiAKQEAgLTM2Nyw3ICszNjYsNiBAQCBQYWdl
Ojp+UGFnZSgpCiAjZW5kaWYKIAogICAgIG1fcGx1Z2luSW5mb1Byb3ZpZGVyLT5yZW1vdmVQYWdl
KCp0aGlzKTsKLSAgICBtX3N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci0+cmVtb3ZlUGFnZSgqdGhp
cyk7CiAgICAgbV91c2VyQ29udGVudFByb3ZpZGVyLT5yZW1vdmVQYWdlKCp0aGlzKTsKICAgICBt
X3Zpc2l0ZWRMaW5rU3RvcmUtPnJlbW92ZVBhZ2UoKnRoaXMpOwogfQpAQCAtMTUxMCwxOSArMTUw
OCw2IEBAIHZvaWQgUGFnZTo6c2V0U2Vzc2lvblN0b3JhZ2UoUmVmUHRyPFN0b3JhZ2VOYW1lc3Bh
Y2U+JiYgbmV3U3RvcmFnZSkKICAgICBtX3Nlc3Npb25TdG9yYWdlID0gV1RGTW92ZShuZXdTdG9y
YWdlKTsKIH0KIAotU3RvcmFnZU5hbWVzcGFjZSogUGFnZTo6ZXBoZW1lcmFsTG9jYWxTdG9yYWdl
KGJvb2wgb3B0aW9uYWxDcmVhdGUpCi17Ci0gICAgaWYgKCFtX2VwaGVtZXJhbExvY2FsU3RvcmFn
ZSAmJiBvcHRpb25hbENyZWF0ZSkKLSAgICAgICAgbV9lcGhlbWVyYWxMb2NhbFN0b3JhZ2UgPSBt
X3N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci0+Y3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFt
ZXNwYWNlKCp0aGlzLCBtX3NldHRpbmdzLT5zZXNzaW9uU3RvcmFnZVF1b3RhKCkpOwotCi0gICAg
cmV0dXJuIG1fZXBoZW1lcmFsTG9jYWxTdG9yYWdlLmdldCgpOwotfQotCi12b2lkIFBhZ2U6OnNl
dEVwaGVtZXJhbExvY2FsU3RvcmFnZShSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4mJiBuZXdTdG9y
YWdlKQotewotICAgIG1fZXBoZW1lcmFsTG9jYWxTdG9yYWdlID0gV1RGTW92ZShuZXdTdG9yYWdl
KTsKLX0KLQogYm9vbCBQYWdlOjpoYXNDdXN0b21IVE1MVG9rZW5pemVyVGltZURlbGF5KCkgY29u
c3QKIHsKICAgICByZXR1cm4gbV9zZXR0aW5ncy0+bWF4UGFyc2VEdXJhdGlvbigpICE9IC0xOwpA
QCAtMjQ3MCwxNSArMjQ1NSw2IEBAIHZvaWQgUGFnZTo6c2V0VXNlckNvbnRlbnRQcm92aWRlcihS
ZWY8VXNlckNvbnRlbnRQcm92aWRlcj4mJiB1c2VyQ29udGVudFByb3ZpZGVyCiAgICAgaW52YWxp
ZGF0ZUluamVjdGVkU3R5bGVTaGVldENhY2hlSW5BbGxGcmFtZXMoKTsKIH0KIAotdm9pZCBQYWdl
OjpzZXRTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIoUmVmPFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
cj4mJiBzdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIpCi17Ci0gICAgbV9zdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXItPnJlbW92ZVBhZ2UoKnRoaXMpOwotICAgIG1fc3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyID0gV1RGTW92ZShzdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIpOwotICAgIG1fc3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyLT5hZGRQYWdlKCp0aGlzKTsKLQotICAgIC8vIFRoaXMgbmVlZHMgdG8g
cmVzZXQgYWxsIHRoZSBsb2NhbCBzdG9yYWdlIG5hbWVzcGFjZXMgb2YgYWxsIHRoZSBwYWdlcy4K
LX0KLQogVmlzaXRlZExpbmtTdG9yZSYgUGFnZTo6dmlzaXRlZExpbmtTdG9yZSgpCiB7CiAgICAg
cmV0dXJuIG1fdmlzaXRlZExpbmtTdG9yZTsKQEAgLTI1MDcsNiArMjQ4Myw5IEBAIHZvaWQgUGFn
ZTo6c2V0U2Vzc2lvbklEKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKICAgICAgICAgbV9pZGJD
b25uZWN0aW9uVG9TZXJ2ZXIgPSBudWxscHRyOwogI2VuZGlmCiAKKyAgICBpZiAoc2Vzc2lvbklE
ICE9IG1fc2Vzc2lvbklEICYmIG1fc2Vzc2lvblN0b3JhZ2UpCisgICAgICAgIG1fc2Vzc2lvblN0
b3JhZ2UtPnNldFNlc3Npb25JREZvclRlc3Rpbmcoc2Vzc2lvbklEKTsKKwogICAgIGJvb2wgcHJp
dmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkID0gKHNlc3Npb25JRC5pc0VwaGVtZXJhbCgpICE9IG1f
c2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpOwogCiAgICAgbV9zZXNzaW9uSUQgPSBzZXNzaW9uSUQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5oCmluZGV4IGM0NDAyMzQ0M2M4NTZkYTIyYjBlNDE5ZjhmYzVmMjY1MmY4NjJm
ZTcuLjdjODY1MDIzMTBmMTFkZDNhYTBjOWQ2MTY5ZTM4NThlOTMyZWE5NGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5oCkBAIC01MDcsOSArNTA3LDYgQEAgcHVibGljOgogICAgIFN0b3JhZ2VOYW1lc3BhY2UqIHNl
c3Npb25TdG9yYWdlKGJvb2wgb3B0aW9uYWxDcmVhdGUgPSB0cnVlKTsKICAgICB2b2lkIHNldFNl
c3Npb25TdG9yYWdlKFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiYmKTsKIAotICAgIFN0b3JhZ2VO
YW1lc3BhY2UqIGVwaGVtZXJhbExvY2FsU3RvcmFnZShib29sIG9wdGlvbmFsQ3JlYXRlID0gdHJ1
ZSk7Ci0gICAgdm9pZCBzZXRFcGhlbWVyYWxMb2NhbFN0b3JhZ2UoUmVmUHRyPFN0b3JhZ2VOYW1l
c3BhY2U+JiYpOwotCiAgICAgYm9vbCBoYXNDdXN0b21IVE1MVG9rZW5pemVyVGltZURlbGF5KCkg
Y29uc3Q7CiAgICAgZG91YmxlIGN1c3RvbUhUTUxUb2tlbml6ZXJUaW1lRGVsYXkoKSBjb25zdDsK
IApAQCAtNTk5LDcgKzU5Niw2IEBAIHB1YmxpYzoKICAgICBDb29raWVKYXImIGNvb2tpZUphcigp
IHsgcmV0dXJuIG1fY29va2llSmFyLmdldCgpOyB9CiAKICAgICBTdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXImIHN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcigpIHsgcmV0dXJuIG1fc3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBzZXRTdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXIoUmVmPFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcj4mJik7CiAKICAgICBQbHVnaW5JbmZvUHJv
dmlkZXImIHBsdWdpbkluZm9Qcm92aWRlcigpOwogCkBAIC04NzcsNyArODczLDYgQEAgcHJpdmF0
ZToKICAgICBib29sIG1fY2FuU3RhcnRNZWRpYSB7IHRydWUgfTsKIAogICAgIFJlZlB0cjxTdG9y
YWdlTmFtZXNwYWNlPiBtX3Nlc3Npb25TdG9yYWdlOwotICAgIFJlZlB0cjxTdG9yYWdlTmFtZXNw
YWNlPiBtX2VwaGVtZXJhbExvY2FsU3RvcmFnZTsKIAogICAgIFRpbWVyVGhyb3R0bGluZ1N0YXRl
IG1fdGltZXJUaHJvdHRsaW5nU3RhdGUgeyBUaW1lclRocm90dGxpbmdTdGF0ZTo6RGlzYWJsZWQg
fTsKICAgICBNb25vdG9uaWNUaW1lIG1fdGltZXJUaHJvdHRsaW5nU3RhdGVMYXN0Q2hhbmdlZFRp
bWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmNwcAppbmRleCA5MTk3YjYwZTdlNmExNTVjNDQ2
OGQ1Mjk0ZmFiMjUwYzg2Nzk4N2ZmLi40N2RiYjE3ZDlhZTZkMjY5YzE0NzAzYTFhNjJhNDkyZWU2
NmRmNDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5jcHAKQEAgLTk3LDExICs5Nyw2IEBA
IEV4Y2VwdGlvbk9yPHZvaWQ+IFN0b3JhZ2U6OnJlbW92ZUl0ZW0oY29uc3QgU3RyaW5nJiBrZXkp
CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotYm9vbCBTdG9yYWdlOjpwcmV3YXJtKCkKLXsKLSAgICBy
ZXR1cm4gbV9zdG9yYWdlQXJlYS0+cHJld2FybSgpOwotfQotCiBFeGNlcHRpb25Pcjx2b2lkPiBT
dG9yYWdlOjpjbGVhcigpCiB7CiAgICAgYXV0byogZnJhbWUgPSB0aGlzLT5mcmFtZSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL1N0b3JhZ2UuaAppbmRleCA1MjE1ZjQ3YzM3N2ZmNzU2NGRhYTFlNDZlZWY3OTQ0
ZDMwODVmNjExLi4yOGFhOWFiMTRlMWIyMmFjYzViYzViNGY2ZTFjODRjMWE5NzRmNjYwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL1N0b3JhZ2UuaApAQCAtNDYsNyArNDYsNiBAQCBwdWJsaWM6CiAgICAgRXhj
ZXB0aW9uT3I8dm9pZD4gcmVtb3ZlSXRlbShjb25zdCBTdHJpbmcmIGtleSk7CiAgICAgRXhjZXB0
aW9uT3I8dm9pZD4gY2xlYXIoKTsKICAgICBib29sIGNvbnRhaW5zKGNvbnN0IFN0cmluZyYga2V5
KSBjb25zdDsKLSAgICBib29sIHByZXdhcm0oKTsKIAogICAgIC8vIEJpbmRpbmdzIHN1cHBvcnQg
ZnVuY3Rpb25zLgogICAgIGJvb2wgaXNTdXBwb3J0ZWRQcm9wZXJ0eU5hbWUoY29uc3QgU3RyaW5n
JikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVh
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhLmgKaW5kZXggZjM5Y2NkN2U2
ZGFjZGZmNTZhZTdkZjY2MGRkOTdiNWZmNTI2NDZkNC4uNWE5ZmZmZjlhNjI2MDg3ODUwN2VkOTFk
NzI1MmY2NGZlMWZiNGIzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9y
YWdlQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWEuaApAQCAt
NTgsOSArNTgsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGluY3JlbWVudEFjY2Vzc0Nv
dW50KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRlY3JlbWVudEFjY2Vzc0NvdW50KCkgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIGNsb3NlRGF0YWJhc2VJZklkbGUoKSB7IH0KLSAgICB2aXJ0dWFsIGJv
b2wgcHJld2FybSgpIHsgcmV0dXJuIGZhbHNlOyB9Ci0KLSAgICB2aXJ0dWFsIGNvbnN0IFNlY3Vy
aXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4oKSBjb25zdCA9IDA7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3Jh
Z2VOYW1lc3BhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZS5o
CmluZGV4IDU1YzY2MjgyYjhiZDY4YmMwNDc4MmRmNDdjYWRlZDBjMjEyOTRiNDguLjc1YjhiMDVh
YzEwNGJhYjM4YjVhMjQzOWMzNGM2OTFiMzZkNzBiYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvU3RvcmFnZU5hbWVzcGFjZS5oCkBAIC0yOCw2ICsyOCwxMCBAQAogI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAorbmFtZXNwYWNlIFBBTCB7
CitjbGFzcyBTZXNzaW9uSUQ7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUGFn
ZTsKQEAgLTM5LDYgKzQzLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflN0b3JhZ2VOYW1lc3Bh
Y2UoKSA9IGRlZmF1bHQ7CiAgICAgdmlydHVhbCBSZWY8U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVh
KGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYpID0gMDsKICAgICB2aXJ0dWFsIFJlZjxTdG9yYWdl
TmFtZXNwYWNlPiBjb3B5KFBhZ2UqIG5ld1BhZ2UpID0gMDsKKworICAgIHZpcnR1YWwgUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRTZXNz
aW9uSURGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1l
c3BhY2VQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3Bh
Y2VQcm92aWRlci5jcHAKaW5kZXggNTkzOWFmZmQzZWIyZjhlZWQ0NmJmNjJiYWI0YjE1YWViNWU5
NWVkZi4uNmM1YThkZTA1MjRjNjBhZDdiMWIxYTYxNWU0NjY5NTNiMDBlZWE2NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcApA
QCAtNDMsMjEgKzQzLDYgQEAgU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpTdG9yYWdlTmFtZXNw
YWNlUHJvdmlkZXIoKQogCiBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6On5TdG9yYWdlTmFtZXNw
YWNlUHJvdmlkZXIoKQogewotICAgIEFTU0VSVChtX3BhZ2VzLmlzRW1wdHkoKSk7Ci19Ci0KLXZv
aWQgU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjphZGRQYWdlKFBhZ2UmIHBhZ2UpCi17Ci0gICAg
QVNTRVJUKCFtX3BhZ2VzLmNvbnRhaW5zKCZwYWdlKSk7Ci0KLSAgICBtX3BhZ2VzLmFkZCgmcGFn
ZSk7Ci19Ci0KLXZvaWQgU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpyZW1vdmVQYWdlKFBhZ2Um
IHBhZ2UpCi17Ci0gICAgQVNTRVJUKG1fcGFnZXMuY29udGFpbnMoJnBhZ2UpKTsKLQotICAgIG1f
cGFnZXMucmVtb3ZlKCZwYWdlKTsKIH0KIAogUmVmPFN0b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNw
YWNlUHJvdmlkZXI6OmxvY2FsU3RvcmFnZUFyZWEoRG9jdW1lbnQmIGRvY3VtZW50KQpAQCAtNjYs
MzYgKzUxLDQ3IEBAIFJlZjxTdG9yYWdlQXJlYT4gU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjps
b2NhbFN0b3JhZ2VBcmVhKERvY3VtZW50JiBkb2N1bWVudCkKICAgICAvLyBzbyB0aGUgRG9jdW1l
bnQgaGFkIGJldHRlciBzdGlsbCBhY3R1YWxseSBoYXZlIGEgUGFnZS4KICAgICBBU1NFUlQoZG9j
dW1lbnQucGFnZSgpKTsKIAotICAgIGJvb2wgZXBoZW1lcmFsID0gZG9jdW1lbnQucGFnZSgpLT51
c2VzRXBoZW1lcmFsU2Vzc2lvbigpOwogICAgIGJvb2wgdHJhbnNpZW50ID0gIWRvY3VtZW50LnNl
Y3VyaXR5T3JpZ2luKCkuY2FuQWNjZXNzTG9jYWxTdG9yYWdlKCZkb2N1bWVudC50b3BPcmlnaW4o
KSk7CiAKICAgICBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gc3RvcmFnZU5hbWVzcGFjZTsKIAog
ICAgIGlmICh0cmFuc2llbnQpCi0gICAgICAgIHN0b3JhZ2VOYW1lc3BhY2UgPSAmdHJhbnNpZW50
TG9jYWxTdG9yYWdlTmFtZXNwYWNlKGRvY3VtZW50LnRvcE9yaWdpbigpKTsKLSAgICBlbHNlIGlm
IChlcGhlbWVyYWwpCi0gICAgICAgIHN0b3JhZ2VOYW1lc3BhY2UgPSBkb2N1bWVudC5wYWdlKCkt
PmVwaGVtZXJhbExvY2FsU3RvcmFnZSgpOworICAgICAgICBzdG9yYWdlTmFtZXNwYWNlID0gJnRy
YW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShkb2N1bWVudC50b3BPcmlnaW4oKSwgZG9jdW1l
bnQucGFnZSgpLT5zZXNzaW9uSUQoKSk7CiAgICAgZWxzZQotICAgICAgICBzdG9yYWdlTmFtZXNw
YWNlID0gJmxvY2FsU3RvcmFnZU5hbWVzcGFjZSgpOworICAgICAgICBzdG9yYWdlTmFtZXNwYWNl
ID0gJmxvY2FsU3RvcmFnZU5hbWVzcGFjZShkb2N1bWVudC5wYWdlKCktPnNlc3Npb25JRCgpKTsK
IAogICAgIHJldHVybiBzdG9yYWdlTmFtZXNwYWNlLT5zdG9yYWdlQXJlYShkb2N1bWVudC5zZWN1
cml0eU9yaWdpbigpLmRhdGEoKSk7CiB9CiAKLVN0b3JhZ2VOYW1lc3BhY2UmIFN0b3JhZ2VOYW1l
c3BhY2VQcm92aWRlcjo6bG9jYWxTdG9yYWdlTmFtZXNwYWNlKCkKK1N0b3JhZ2VOYW1lc3BhY2Um
IFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6bG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCkKIHsKICAgICBpZiAoIW1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlKQot
ICAgICAgICBtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZSA9IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVz
cGFjZShsb2NhbFN0b3JhZ2VEYXRhYmFzZVF1b3RhSW5CeXRlcyk7CisgICAgICAgIG1fbG9jYWxT
dG9yYWdlTmFtZXNwYWNlID0gY3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKGxvY2FsU3RvcmFn
ZURhdGFiYXNlUXVvdGFJbkJ5dGVzLCBzZXNzaW9uSUQpOwogCisgICAgQVNTRVJUKG1fbG9jYWxT
dG9yYWdlTmFtZXNwYWNlLT5zZXNzaW9uSUQoKSA9PSBzZXNzaW9uSUQpOwogICAgIHJldHVybiAq
bV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2U7CiB9CiAKLVN0b3JhZ2VOYW1lc3BhY2UmIFN0b3JhZ2VO
YW1lc3BhY2VQcm92aWRlcjo6dHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFNlY3VyaXR5
T3JpZ2luJiBzZWN1cml0eU9yaWdpbikKK1N0b3JhZ2VOYW1lc3BhY2UmIFN0b3JhZ2VOYW1lc3Bh
Y2VQcm92aWRlcjo6dHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFNlY3VyaXR5T3JpZ2lu
JiBzZWN1cml0eU9yaWdpbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogewotICAgIGF1dG8m
IHNsb3QgPSBtX3RyYW5zaWVudExvY2FsU3RvcmFnZU1hcC5hZGQoJnNlY3VyaXR5T3JpZ2luLCBu
dWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CisgICAgYXV0byYgc2xvdCA9IG1fdHJhbnNpZW50TG9j
YWxTdG9yYWdlTmFtZXNwYWNlcy5hZGQoc2VjdXJpdHlPcmlnaW4uZGF0YSgpLCBudWxscHRyKS5p
dGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKCFzbG90KQotICAgICAgICBzbG90ID0gY3JlYXRlVHJh
bnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKHNlY3VyaXR5T3JpZ2luLCBsb2NhbFN0b3JhZ2VE
YXRhYmFzZVF1b3RhSW5CeXRlcyk7CisgICAgICAgIHNsb3QgPSBjcmVhdGVUcmFuc2llbnRMb2Nh
bFN0b3JhZ2VOYW1lc3BhY2Uoc2VjdXJpdHlPcmlnaW4sIGxvY2FsU3RvcmFnZURhdGFiYXNlUXVv
dGFJbkJ5dGVzLCBzZXNzaW9uSUQpOwogCisgICAgQVNTRVJUKHNsb3QtPnNlc3Npb25JRCgpID09
IHNlc3Npb25JRCk7CiAgICAgcmV0dXJuICpzbG90OwogfQogCit2b2lkIFN0b3JhZ2VOYW1lc3Bh
Y2VQcm92aWRlcjo6ZW5hYmxlTGVnYWN5UHJpdmF0ZUJyb3dzaW5nRm9yVGVzdGluZyhib29sIGVu
YWJsZWQpCit7CisgICAgYXV0byBuZXdTZXNzaW9uSUQgPSBlbmFibGVkID8gUEFMOjpTZXNzaW9u
SUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSA6IFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vz
c2lvbklEKCk7CisgICAgaWYgKG1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlICYmIG5ld1Nlc3Npb25J
RCAhPSBtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZS0+c2Vzc2lvbklEKCkpCisgICAgICAgIG1fbG9j
YWxTdG9yYWdlTmFtZXNwYWNlLT5zZXRTZXNzaW9uSURGb3JUZXN0aW5nKG5ld1Nlc3Npb25JRCk7
CisgICAgCisgICAgZm9yIChhdXRvJiB0cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UgOiBt
X3RyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZXMudmFsdWVzKCkpIHsKKyAgICAgICAgaWYg
KG5ld1Nlc3Npb25JRCAhPSB0cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPnNlc3Npb25J
RCgpKQorICAgICAgICAgICAgbV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPnNldFNlc3Npb25JREZv
clRlc3RpbmcobmV3U2Vzc2lvbklEKTsKKyAgICB9Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oCmluZGV4IGRkN2Y5YTQ2YmQ4
NDc5MjQ5Yzc0ZDJhNGMyMjQ1Mjk2NGU2N2FlY2QuLjAxZDA2NGI0YTYxZDA2NzYwZGM4N2FmZTcx
YzgzOWVhMDJmNzg4N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdl
TmFtZXNwYWNlUHJvdmlkZXIuaApAQCAtMzEsNiArMzEsMTAgQEAKICNpbmNsdWRlIDx3dGYvSGFz
aFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKK25hbWVzcGFjZSBQQUwgewor
Y2xhc3MgU2Vzc2lvbklEOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERvY3Vt
ZW50OwpAQCAtNDUsMjcgKzQ5LDIzIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0
dWFsIH5TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIoKTsKIAogICAgIHZpcnR1YWwgUmVmPFN0b3Jh
Z2VOYW1lc3BhY2U+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25l
ZCBxdW90YSkgPSAwOwotICAgIHZpcnR1YWwgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUVw
aGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQgcXVvdGEpID0gMDsK
IAogICAgIFJlZjxTdG9yYWdlQXJlYT4gbG9jYWxTdG9yYWdlQXJlYShEb2N1bWVudCYpOwogCi0g
ICAgdm9pZCBhZGRQYWdlKFBhZ2UmKTsKLSAgICB2b2lkIHJlbW92ZVBhZ2UoUGFnZSYpOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZW5hYmxlTGVnYWN5UHJpdmF0ZUJyb3dzaW5nRm9yVGVzdGlu
Zyhib29sIGVuYWJsZWQpOwogCiBwcm90ZWN0ZWQ6CiAgICAgU3RvcmFnZU5hbWVzcGFjZSogb3B0
aW9uYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoKSB7IHJldHVybiBtX2xvY2FsU3RvcmFnZU5hbWVz
cGFjZS5nZXQoKTsgfQogCiBwcml2YXRlOgotICAgIFN0b3JhZ2VOYW1lc3BhY2UmIGxvY2FsU3Rv
cmFnZU5hbWVzcGFjZSgpOwotICAgIFN0b3JhZ2VOYW1lc3BhY2UmIHRyYW5zaWVudExvY2FsU3Rv
cmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYpOwotCi0gICAgdmlydHVhbCBSZWY8U3RvcmFn
ZU5hbWVzcGFjZT4gY3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkIHF1b3RhKSA9
IDA7Ci0gICAgdmlydHVhbCBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlVHJhbnNpZW50TG9j
YWxTdG9yYWdlTmFtZXNwYWNlKFNlY3VyaXR5T3JpZ2luJiwgdW5zaWduZWQgcXVvdGEpID0gMDsK
KyAgICBTdG9yYWdlTmFtZXNwYWNlJiBsb2NhbFN0b3JhZ2VOYW1lc3BhY2UoUEFMOjpTZXNzaW9u
SUQpOworICAgIFN0b3JhZ2VOYW1lc3BhY2UmIHRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFj
ZShTZWN1cml0eU9yaWdpbiYsIFBBTDo6U2Vzc2lvbklEKTsKIAotICAgIEhhc2hTZXQ8UGFnZSo+
IG1fcGFnZXM7CisgICAgdmlydHVhbCBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlTG9jYWxT
dG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkIHF1b3RhLCBQQUw6OlNlc3Npb25JRCkgPSAwOworICAg
IHZpcnR1YWwgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFn
ZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkIHF1b3RhLCBQQUw6OlNlc3Npb25J
RCkgPSAwOwogCiAgICAgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IG1fbG9jYWxTdG9yYWdlTmFt
ZXNwYWNlOwotICAgIEhhc2hNYXA8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgUmVmUHRyPFN0b3Jh
Z2VOYW1lc3BhY2U+PiBtX3RyYW5zaWVudExvY2FsU3RvcmFnZU1hcDsKKyAgICBIYXNoTWFwPFNl
Y3VyaXR5T3JpZ2luRGF0YSwgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+PiBtX3RyYW5zaWVudExv
Y2FsU3RvcmFnZU5hbWVzcGFjZXM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VUeXBlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL1N0b3JhZ2VUeXBlLmgKaW5kZXggNTgxMzNmODljY2E3MWRjMzUwZWY3Mjg1
YTcwYTczMGEyOTYyYTZlMi4uZmU3MDAyNTdiYWNiNDlhZmRkZmY0NTY0MmE2M2Q0MjhkNzQwZjg5
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlVHlwZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZVR5cGUuaApAQCAtMzAsMTMgKzMwLDEyIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGVudW0gY2xhc3MgU3RvcmFnZVR5cGUgewogICAgIFNlc3Np
b24sCiAgICAgTG9jYWwsCi0gICAgRXBoZW1lcmFsTG9jYWwsCiAgICAgVHJhbnNpZW50TG9jYWws
CiB9OwogCiBpbmxpbmUgYm9vbCBpc0xvY2FsU3RvcmFnZShTdG9yYWdlVHlwZSBzdG9yYWdlVHlw
ZSkKIHsKLSAgICByZXR1cm4gc3RvcmFnZVR5cGUgPT0gU3RvcmFnZVR5cGU6OkxvY2FsIHx8IHN0
b3JhZ2VUeXBlID09IFN0b3JhZ2VUeXBlOjpUcmFuc2llbnRMb2NhbCB8fCBzdG9yYWdlVHlwZSA9
PSBTdG9yYWdlVHlwZTo6RXBoZW1lcmFsTG9jYWw7CisgICAgcmV0dXJuIHN0b3JhZ2VUeXBlID09
IFN0b3JhZ2VUeXBlOjpMb2NhbCB8fCBzdG9yYWdlVHlwZSA9PSBTdG9yYWdlVHlwZTo6VHJhbnNp
ZW50TG9jYWw7CiB9CiAKIGlubGluZSBib29sIGlzUGVyc2lzdGVudExvY2FsU3RvcmFnZShTdG9y
YWdlVHlwZSBzdG9yYWdlVHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CmluZGV4IDZmNzljODY0N2E2MTJk
YzA0YTAyYWFjODIzZDc0OTU4NDRkNGM5MjEuLmQ4OGFhODNiMmE1NGZmMmE4NDJhMmE1ZmM1NDZk
ODcxNDg1NTJhYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKKysr
IGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dApAQCAtMTE4LDcgKzExOCw3IEBAIHNldChX
ZWJLaXRfTUVTU0FHRVNfSU5fRklMRVMKICAgICBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1dlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgogICAgIE5ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAK
LSAgICBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLm1lc3NhZ2VzLmlu
CisgICAgTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldC5tZXNzYWdl
cy5pbgogCiAgICAgTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVj
dGlvbi5tZXNzYWdlcy5pbgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3Vy
Y2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0
LnhjZmlsZWxpc3QKaW5kZXggMGZiODQyM2I1Y2NjZjdkMjYzMzk0MjVjZDdhNzNmNGIyYzBkMmU4
OS4uMmU0NzY2MDg1NDAzZDQyMDdmMmJmMTcyZTk5Yzc4NDY5MGE5Y2NlMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJj
ZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMjUsNyArMjUsNyBA
QCAkKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLm1lc3Nh
Z2VzLmluCiAkKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZp
Y2VXb3JrZXJGZXRjaFRhc2subWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAkKFBS
T0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgotJChQUk9KRUNUX0RJUikvTmV0d29ya1Byb2Nlc3Mv
V2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvTmV0
d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldC5tZXNzYWdlcy5pbgogJChQ
Uk9KRUNUX0RJUikvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVj
dGlvbi5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvTmV0d29ya1Byb2Nlc3MvbWFjL2NvbS5h
cHBsZS5XZWJLaXQuTmV0d29ya1Byb2Nlc3Muc2IuaW4KICQoUFJPSkVDVF9ESVIpL05ldHdvcmtQ
cm9jZXNzL3dlYnJ0Yy9OZXR3b3JrTUROU1JlZ2lzdGVyLm1lc3NhZ2VzLmluCkBAIC04Myw3ICs4
Myw2IEBAICQoUFJPSkVDVF9ESVIpL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4K
ICQoUFJPSkVDVF9ESVIpL1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkubWVzc2FnZXMuaW4K
ICQoUFJPSkVDVF9ESVIpL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5tZXNzYWdlcy5pbgogJChQ
Uk9KRUNUX0RJUikvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgotJChQUk9K
RUNUX0RJUikvVUlQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIubWVzc2FnZXMuaW4K
ICQoUFJPSkVDVF9ESVIpL1VJUHJvY2Vzcy9pb3MvRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIubWVz
c2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1VJUHJvY2Vzcy9pb3MvU21hcnRNYWduaWZpY2F0aW9u
Q29udHJvbGxlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvVUlQcm9jZXNzL21hYy9TZWNJ
dGVtU2hpbVByb3h5Lm1lc3NhZ2VzLmluCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2
ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNl
cy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCBmZTBhNmMwMDQwMmM1MzU1NDA1NDUxNDkxZDRkOGRm
NzQ0NzNjNzkzLi5iZDlkZDdmNjMzYzE3YmNmMjk5MDg3N2YxZGUzYWFlNGE4ZmI0N2FjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0Cisr
KyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTg4
LDggKzg4LDggQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIv
U21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2UKICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNz
YWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9TdG9y
YWdlQXJlYU1hcE1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQyL1N0b3JhZ2VBcmVhTWFwTWVzc2FnZXMuaAotJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvU3RvcmFnZU1hbmFnZXJNZXNzYWdlUmVj
ZWl2ZXIuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9T
dG9yYWdlTWFuYWdlck1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQyL1N0b3JhZ2VNYW5hZ2VyU2V0TWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvU3RvcmFnZU1hbmFnZXJTZXRN
ZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9U
ZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9UZXh0Q2hlY2tpbmdDb250cm9sbGVy
UHJveHlNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0Mi9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQvRGVy
aXZlZFNvdXJjZXMubWFrZQppbmRleCA1MzkzYzViZDdmMDk3OTQ1MDAyZjEwMzIyZWZjZTA1MzE2
MzJjM2ZmLi45ZGU3MDQyNjZhZmVlNTEzNmU2NWU4NDc4MWI1YTAyNTI1MTU3YWM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYktp
dC9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0xMzYsNyArMTM2LDcgQEAgTUVTU0FHRV9SRUNFSVZF
UlMgPSBcCiAgICAgU2VydmljZVdvcmtlckZldGNoVGFzayBcCiAgICAgU21hcnRNYWduaWZpY2F0
aW9uQ29udHJvbGxlciBcCiAgICAgU3RvcmFnZUFyZWFNYXAgXAotICAgIFN0b3JhZ2VNYW5hZ2Vy
IFwKKyAgICBTdG9yYWdlTWFuYWdlclNldCBcCiAgICAgVGV4dENoZWNraW5nQ29udHJvbGxlclBy
b3h5IFwKICAgICBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlciBcCiAgICAgVXNlck1lZGlhQ2FwdHVy
ZU1hbmFnZXJQcm94eSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDBjMmM5NzZm
ZWUyMGQzMjliNDA3ZTA0ZGI5NjJmYjY3OTlhZjQzMTguLmJiZTlhOWFhNDZhOTYzNDAyODJmNzBk
MmQzZDRmYzJkZDNjNGU4MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC00OSw3
ICs0OSw2IEBACiAjaW5jbHVkZSAiUGluZ0xvYWQuaCIKICNpbmNsdWRlICJQcmVjb25uZWN0VGFz
ay5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tNZXNzYWdlcy5oIgotI2luY2x1
ZGUgIlN0b3JhZ2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgi
CiAjaW5jbHVkZSAiV2ViRXJyb3JzLmgiCiAjaW5jbHVkZSAiV2ViSURCQ29ubmVjdGlvblRvQ2xp
ZW50LmgiCkBAIC0yOTksNyArMjk4LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogICAgIC8vIHJvb3Qg
YWN0aXZpdHkgdHJhY2tlcnMuCiAgICAgc3RvcEFsbE5ldHdvcmtBY3Rpdml0eVRyYWNraW5nKCk7
CiAKLSAgICBtX25ldHdvcmtQcm9jZXNzLT53ZWJQcm9jZXNzV2FzRGlzY29ubmVjdGVkKGNvbm5l
Y3Rpb24pOworICAgIG1fbmV0d29ya1Byb2Nlc3MtPmNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NDbG9z
ZWQoY29ubmVjdGlvbik7CiAKICAgICBtX25ldHdvcmtQcm9jZXNzLT5yZW1vdmVOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2VzcygqdGhpcyk7CiAKQEAgLTkxNSwxOSArOTE0LDQgQEAgdm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9u
KFBBTDo6U2Vzc2lvbklEIHMKIH0KICNlbmRpZgogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjp3ZWJQYWdlV2FzQWRkZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBQYWdl
SWRlbnRpZmllciBwYWdlSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG9sZFBhZ2VJRCkKLXsK
LSAgICBtX25ldHdvcmtQcm9jZXNzLT53ZWJQYWdlV2FzQWRkZWQobV9jb25uZWN0aW9uLmdldCgp
LCBzZXNzaW9uSUQsIHBhZ2VJRCwgb2xkUGFnZUlEKTsKLX0KLQotdm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6d2ViUGFnZVdhc1JlbW92ZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBQYWdlSWRlbnRpZmllciBwYWdlSUQpCi17Ci0gICAgbV9uZXR3b3JrUHJvY2Vzcy0+d2Vi
UGFnZVdhc1JlbW92ZWQobV9jb25uZWN0aW9uLmdldCgpLCBzZXNzaW9uSUQsIHBhZ2VJRCk7Ci19
Ci0KLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OndlYlByb2Nlc3NTZXNzaW9u
Q2hhbmdlZChQQUw6OlNlc3Npb25JRCBuZXdTZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxQYWdlSWRl
bnRpZmllcj4mIHBhZ2VzKQotewotICAgIG1fbmV0d29ya1Byb2Nlc3MtPndlYlByb2Nlc3NTZXNz
aW9uQ2hhbmdlZChtX2Nvbm5lY3Rpb24uZ2V0KCksIG5ld1Nlc3Npb25JRCwgcGFnZXMpOwotfQot
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCAyNTUw
ODRmOTIzMWZlYTgzMDgwMDk4ZDM1OTMwNTdhMWJkOTA3YzUzLi4wYWEwMmQzMjgyZGMxNzk3MTZj
YjJiZjZkNmNkNzk2NzgyYWZkNDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0xNDEs
MTAgKzE0MSw2IEBAIHB1YmxpYzoKIAogICAgIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6QmxvYkRh
dGFGaWxlUmVmZXJlbmNlPj4gcmVzb2x2ZUJsb2JSZWZlcmVuY2VzKGNvbnN0IE5ldHdvcmtSZXNv
dXJjZUxvYWRQYXJhbWV0ZXJzJik7CiAKLSAgICB2b2lkIHdlYlBhZ2VXYXNBZGRlZChQQUw6OlNl
c3Npb25JRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
IG9sZFBhZ2VJRCk7Ci0gICAgdm9pZCB3ZWJQYWdlV2FzUmVtb3ZlZChQQUw6OlNlc3Npb25JRCwg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwotICAgIHZvaWQgd2ViUHJvY2Vzc1Nlc3Npb25DaGFu
Z2VkKFBBTDo6U2Vzc2lvbklEIG5ld1Nlc3Npb25JRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyPiYgcGFnZXMpOwotCiAgICAgdm9pZCByZW1vdmVTb2NrZXRDaGFubmVsKHVp
bnQ2NF90IGlkZW50aWZpZXIpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggOTlhYmQwNzhmYjE0YzlmMzBiZTljODc2MDNhMTNkOTFi
ZDc5YTljZi4uZmQ0YjI0OGM0N2U2NjhhNzdlZmNkNzIwZWFkMmQ2ZjU2NGFjYWEzNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC04Niw4ICs4Niw0IEBA
IG1lc3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVy
IHsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgRXN0YWJsaXNoU1dTZXJ2ZXJDb25u
ZWN0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKFdlYkNvcmU6OlNXU2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpIFN5bmNocm9ub3Vz
CiAjZW5kaWYKLQotICAgIFdlYlBhZ2VXYXNBZGRlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIg
b2xkUGFnZUlEKQotICAgIFdlYlBhZ2VXYXNSZW1vdmVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKQotICAgIFdlYlByb2Nlc3NTZXNzaW9u
Q2hhbmdlZChQQUw6OlNlc3Npb25JRCBuZXdTZXNzaW9uSUQsIFZlY3RvcjxXZWJDb3JlOjpQYWdl
SWRlbnRpZmllcj4gcGFnZXMpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IGU4MjBiMjljMjBmNTE5ZmI1ZTNkZDg4YThiZWY2NDY1
NDA2ODZiMGIuLmZiZThlNjhhZmU4MjhlODVmMDU5MDEzZTY3MWQxZjBkN2M0OWQ5MGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC01
Myw4ICs1Myw3IEBACiAjaW5jbHVkZSAiU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLmgiCiAj
aW5jbHVkZSAiU3RhdGlzdGljc0RhdGEuaCIKICNpbmNsdWRlICJTdG9yYWdlQWNjZXNzU3RhdHVz
LmgiCi0jaW5jbHVkZSAiU3RvcmFnZU1hbmFnZXIuaCIKLSNpbmNsdWRlICJTdG9yYWdlTWFuYWdl
ck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiU3RvcmFnZU1hbmFnZXJTZXQuaCIKICNpbmNsdWRlICJX
ZWJDb29raWVNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKICNp
bmNsdWRlICJXZWJQcm9jZXNzUG9vbE1lc3NhZ2VzLmgiCkBAIC0xMzMsNiArMTMyLDcgQEAgc3Rh
dGljIHZvaWQgY2FsbEV4aXRTb29uKElQQzo6Q29ubmVjdGlvbiopCiAKIE5ldHdvcmtQcm9jZXNz
OjpOZXR3b3JrUHJvY2VzcyhBdXhpbGlhcnlQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJz
JiYgcGFyYW1ldGVycykKICAgICA6IG1fZG93bmxvYWRNYW5hZ2VyKCp0aGlzKQorICAgICwgbV9z
dG9yYWdlTWFuYWdlclNldChTdG9yYWdlTWFuYWdlclNldDo6Y3JlYXRlKCkpCiAjaWYgRU5BQkxF
KENPTlRFTlRfRVhURU5TSU9OUykKICAgICAsIG1fbmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFn
ZXIoKnRoaXMpCiAjZW5kaWYKQEAgLTMzNiw2ICszMzYsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
Ojppbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMmJgogI2VuZGlmCiAgICAgaW5pdGlhbGl6ZVN0b3JhZ2VRdW90YShwYXJhbWV0ZXJzLmRlZmF1
bHREYXRhU3RvcmVQYXJhbWV0ZXJzKTsKIAorICAgIG1fc3RvcmFnZU1hbmFnZXJTZXQtPmFkZChz
ZXNzaW9uSUQsIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubG9jYWxTdG9y
YWdlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLmxvY2Fs
U3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CisKICAgICBhdXRvKiBkZWZhdWx0U2Vz
c2lvbiA9IG5ldHdvcmtTZXNzaW9uKFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkp
OwogICAgIGF1dG8qIGRlZmF1bHRTdG9yYWdlU2Vzc2lvbiA9IGRlZmF1bHRTZXNzaW9uLT5uZXR3
b3JrU3RvcmFnZVNlc3Npb24oKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGNvb2tpZSA6IHBhcmFt
ZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMucGVuZGluZ0Nvb2tpZXMpCkBAIC00NDcs
NiArNDQ5LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MoYm9vbCBpc1NlcnZpY2VXb3JrZXJQcm8KICAgICBVTlVTRURfUEFSQU0oaXNT
ZXJ2aWNlV29ya2VyUHJvY2Vzcyk7CiAgICAgVU5VU0VEX1BBUkFNKHJlZ2lzdHJhYmxlRG9tYWlu
KTsKICNlbmRpZgorCisgICAgbV9zdG9yYWdlTWFuYWdlclNldC0+YWRkQ29ubmVjdGlvbihtX3dl
YlByb2Nlc3NDb25uZWN0aW9ucy5sYXN0KCktPmNvbm5lY3Rpb24oKSk7CiB9CiAKIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OmNsZWFyQ2FjaGVkQ3JlZGVudGlhbHMoKQpAQCAtNDY5LDYgKzQ3Myw4IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OmFkZFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9y
ZVBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzCiAgICAgICAgIGFkZFNlcnZpY2VXb3JrZXJTZXNzaW9u
KHBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnNlc3Npb25JRCwgcGFyYW1ldGVy
cy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLnNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogI2VuZGlmCiAKKyAg
ICBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5hZGQocGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFt
ZXRlcnMuc2Vzc2lvbklELCBwYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeSwgcGFyYW1l
dGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOworCiAgICAgaW5pdGlh
bGl6ZVN0b3JhZ2VRdW90YShwYXJhbWV0ZXJzKTsKIAogICAgIFJlbW90ZU5ldHdvcmtpbmdDb250
ZXh0OjplbnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbigqdGhpcywgV1RGTW92ZShwYXJhbWV0
ZXJzKSk7CkBAIC02MDksNiArNjE1LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVzdHJveVNl
c3Npb24oY29uc3QgUEFMOjpTZXNzaW9uSUQmIHNlc3Npb25JRCkKICAgICBtX3N3RGF0YWJhc2VQ
YXRocy5yZW1vdmUoc2Vzc2lvbklEKTsKICNlbmRpZgogCisgICAgbV9zdG9yYWdlTWFuYWdlclNl
dC0+cmVtb3ZlKHNlc3Npb25JRCk7CisKICAgICBtX3N0b3JhZ2VRdW90YU1hbmFnZXJzLnJlbW92
ZShzZXNzaW9uSUQpOwogfQogCkBAIC0xMDUwLDggKzEwNTgsOCBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpjbGVhclVzZXJJbnRlcmFjdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IFJlZ2lzdAogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpoYXNMb2NhbFN0b3JhZ2UoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmIChh
dXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICBzZXNz
aW9uLT5zdG9yYWdlTWFuYWdlcigpLmdldExvY2FsU3RvcmFnZU9yaWdpbnMoW2RvbWFpbiwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byYmIG9yaWdp
bnMpIG11dGFibGUgeworICAgIGlmIChtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5jb250YWlucyhzZXNz
aW9uSUQpKSB7CisgICAgICAgIG1fc3RvcmFnZU1hbmFnZXJTZXQtPmdldExvY2FsU3RvcmFnZU9y
aWdpbnMoc2Vzc2lvbklELCBbZG9tYWluLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXShhdXRvJiYgb3JpZ2lucykgbXV0YWJsZSB7CiAgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihXVEY6OmFueU9mKG9yaWdpbnMsIFsmZG9tYWluXShhdXRvJiBvcmln
aW4pIHsKICAgICAgICAgICAgICAgICByZXR1cm4gZG9tYWluLm1hdGNoZXMob3JpZ2luKTsKICAg
ICAgICAgICAgIH0pKTsKQEAgLTEzNDAsMTYgKzEzNDgsMTUgQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
czo6ZmV0Y2hXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxX
ZWJzaXQKICAgICAgICAgfSk7CiAgICAgfQogCi0gICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtT
ZXNzaW9uKHNlc3Npb25JRCk7Ci0gICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vi
c2l0ZURhdGFUeXBlOjpTZXNzaW9uU3RvcmFnZSkgJiYgc2Vzc2lvbikgewotICAgICAgICBzZXNz
aW9uLT5zdG9yYWdlTWFuYWdlcigpLmdldFNlc3Npb25TdG9yYWdlT3JpZ2lucyhbY2FsbGJhY2tB
Z2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0oYXV0byYmIG9yaWdpbnMp
IHsKKyAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlNl
c3Npb25TdG9yYWdlKSAmJiBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5jb250YWlucyhzZXNzaW9uSUQp
KSB7CisgICAgICAgIG1fc3RvcmFnZU1hbmFnZXJTZXQtPmdldFNlc3Npb25TdG9yYWdlT3JpZ2lu
cyhzZXNzaW9uSUQsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29w
eVJlZigpXShhdXRvJiYgb3JpZ2lucykgewogICAgICAgICAgICAgd2hpbGUgKCFvcmlnaW5zLmlz
RW1wdHkoKSkKICAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fd2Vic2l0ZURh
dGEuZW50cmllcy5hcHBlbmQoV2Vic2l0ZURhdGE6OkVudHJ5IHsgb3JpZ2lucy50YWtlQW55KCks
IFdlYnNpdGVEYXRhVHlwZTo6U2Vzc2lvblN0b3JhZ2UsIDAgfSk7CiAgICAgICAgIH0pOwogICAg
IH0KIAotICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6
TG9jYWxTdG9yYWdlKSAmJiBzZXNzaW9uKSB7Ci0gICAgICAgIHNlc3Npb24tPnN0b3JhZ2VNYW5h
Z2VyKCkuZ2V0TG9jYWxTdG9yYWdlT3JpZ2lucyhbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJh
Y2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0oYXV0byYmIG9yaWdpbnMpIHsKKyAgICBpZiAod2Vic2l0
ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkxvY2FsU3RvcmFnZSkgJiYgbV9z
dG9yYWdlTWFuYWdlclNldC0+Y29udGFpbnMoc2Vzc2lvbklEKSkgeworICAgICAgICBtX3N0b3Jh
Z2VNYW5hZ2VyU2V0LT5nZXRMb2NhbFN0b3JhZ2VPcmlnaW5zKHNlc3Npb25JRCwgW2NhbGxiYWNr
QWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldKGF1dG8mJiBvcmlnaW5z
KSB7CiAgICAgICAgICAgICB3aGlsZSAoIW9yaWdpbnMuaXNFbXB0eSgpKQogICAgICAgICAgICAg
ICAgIGNhbGxiYWNrQWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVuZChXZWJz
aXRlRGF0YTo6RW50cnkgeyBvcmlnaW5zLnRha2VBbnkoKSwgV2Vic2l0ZURhdGFUeXBlOjpMb2Nh
bFN0b3JhZ2UsIDAgfSk7CiAgICAgICAgIH0pOwpAQCAtMTQyNCwxMiArMTQzMSwxMSBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIE9wdGlvblNldDxXZWJzaQogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdl
YnNpdGVEYXRhVHlwZTo6RE9NQ2FjaGUpKQogICAgICAgICBDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6
Y2xlYXJBbGxDYWNoZXMoKnRoaXMsIHNlc3Npb25JRCwgW2NsZWFyVGFza3NIYW5kbGVyID0gY2xl
YXJUYXNrc0hhbmRsZXIuY29weVJlZigpXSB7IH0pOwogCi0gICAgYXV0byogc2Vzc2lvbiA9IG5l
dHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7Ci0gICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFp
bnMoV2Vic2l0ZURhdGFUeXBlOjpTZXNzaW9uU3RvcmFnZSkgJiYgc2Vzc2lvbikKLSAgICAgICAg
c2Vzc2lvbi0+c3RvcmFnZU1hbmFnZXIoKS5kZWxldGVTZXNzaW9uU3RvcmFnZU9yaWdpbnMoW2Ns
ZWFyVGFza3NIYW5kbGVyID0gY2xlYXJUYXNrc0hhbmRsZXIuY29weVJlZigpXSB7IH0pOworICAg
IGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6U2Vzc2lvblN0
b3JhZ2UpICYmIG1fc3RvcmFnZU1hbmFnZXJTZXQtPmNvbnRhaW5zKHNlc3Npb25JRCkpCisgICAg
ICAgIG1fc3RvcmFnZU1hbmFnZXJTZXQtPmRlbGV0ZVNlc3Npb25TdG9yYWdlKHNlc3Npb25JRCwg
W2NsZWFyVGFza3NIYW5kbGVyID0gY2xlYXJUYXNrc0hhbmRsZXIuY29weVJlZigpXSB7IH0pOwog
Ci0gICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpMb2Nh
bFN0b3JhZ2UpICYmIHNlc3Npb24pCi0gICAgICAgIHNlc3Npb24tPnN0b3JhZ2VNYW5hZ2VyKCku
ZGVsZXRlTG9jYWxTdG9yYWdlT3JpZ2luc01vZGlmaWVkU2luY2UobW9kaWZpZWRTaW5jZSwgW2Ns
ZWFyVGFza3NIYW5kbGVyID0gY2xlYXJUYXNrc0hhbmRsZXIuY29weVJlZigpXSB7IH0pOworICAg
IGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6TG9jYWxTdG9y
YWdlKSAmJiBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5jb250YWlucyhzZXNzaW9uSUQpKQorICAgICAg
ICBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5kZWxldGVMb2NhbFN0b3JhZ2VNb2RpZmllZFNpbmNlKHNl
c3Npb25JRCwgbW9kaWZpZWRTaW5jZSwgW2NsZWFyVGFza3NIYW5kbGVyID0gY2xlYXJUYXNrc0hh
bmRsZXIuY29weVJlZigpXSB7IH0pOwogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAg
ICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVk
REJEYXRhYmFzZXMpICYmICFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKQEAgLTE1MjQsMTIgKzE1
MzAsMTEgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5z
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW8KICAgICAgICAgICAgIENhY2hlU3RvcmFn
ZTo6RW5naW5lOjpjbGVhckNhY2hlc0Zvck9yaWdpbigqdGhpcywgc2Vzc2lvbklELCBTZWN1cml0
eU9yaWdpbkRhdGEgeyBvcmlnaW5EYXRhIH0sIFtjbGVhclRhc2tzSGFuZGxlciA9IGNsZWFyVGFz
a3NIYW5kbGVyLmNvcHlSZWYoKV0geyB9KTsKICAgICB9CiAKLSAgICBhdXRvKiBzZXNzaW9uID0g
bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKLSAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250
YWlucyhXZWJzaXRlRGF0YVR5cGU6OlNlc3Npb25TdG9yYWdlKSAmJiBzZXNzaW9uKQotICAgICAg
ICBzZXNzaW9uLT5zdG9yYWdlTWFuYWdlcigpLmRlbGV0ZVNlc3Npb25TdG9yYWdlRW50cmllc0Zv
ck9yaWdpbnMob3JpZ2luRGF0YXMsIFtjbGVhclRhc2tzSGFuZGxlciA9IGNsZWFyVGFza3NIYW5k
bGVyLmNvcHlSZWYoKV0geyB9KTsKKyAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhX
ZWJzaXRlRGF0YVR5cGU6OlNlc3Npb25TdG9yYWdlKSAmJiBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5j
b250YWlucyhzZXNzaW9uSUQpKQorICAgICAgICBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5kZWxldGVT
ZXNzaW9uU3RvcmFnZUZvck9yaWdpbnMoc2Vzc2lvbklELCBvcmlnaW5EYXRhcywgW2NsZWFyVGFz
a3NIYW5kbGVyID0gY2xlYXJUYXNrc0hhbmRsZXIuY29weVJlZigpXSB7IH0pOwogCi0gICAgaWYg
KHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpMb2NhbFN0b3JhZ2Up
ICYmIHNlc3Npb24pCi0gICAgICAgIHNlc3Npb24tPnN0b3JhZ2VNYW5hZ2VyKCkuZGVsZXRlTG9j
YWxTdG9yYWdlRW50cmllc0Zvck9yaWdpbnMob3JpZ2luRGF0YXMsIFtjbGVhclRhc2tzSGFuZGxl
ciA9IGNsZWFyVGFza3NIYW5kbGVyLmNvcHlSZWYoKV0geyB9KTsKKyAgICBpZiAod2Vic2l0ZURh
dGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkxvY2FsU3RvcmFnZSkgJiYgbV9zdG9y
YWdlTWFuYWdlclNldC0+Y29udGFpbnMoc2Vzc2lvbklEKSkKKyAgICAgICAgbV9zdG9yYWdlTWFu
YWdlclNldC0+ZGVsZXRlTG9jYWxTdG9yYWdlRm9yT3JpZ2lucyhzZXNzaW9uSUQsIG9yaWdpbkRh
dGFzLCBbY2xlYXJUYXNrc0hhbmRsZXIgPSBjbGVhclRhc2tzSGFuZGxlci5jb3B5UmVmKCldIHsg
fSk7CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICBpZiAod2Vic2l0ZURhdGFU
eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykgJiYgIXNl
c3Npb25JRC5pc0VwaGVtZXJhbCgpKQpAQCAtMTcyNiwyMCArMTczMSwxOCBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhQQUw6OlNl
c3Npb25JRCBzZXNzaQogICAgICAgICB9KTsKICAgICB9CiAKLSAgICBhdXRvKiBzZXNzaW9uID0g
bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKLSAgICBpZiAoc2Vzc2lvbikgewotICAgICAgICBh
dXRvJiBzdG9yYWdlTWFuYWdlciA9IHNlc3Npb24tPnN0b3JhZ2VNYW5hZ2VyKCk7CisgICAgaWYg
KG1fc3RvcmFnZU1hbmFnZXJTZXQtPmNvbnRhaW5zKHNlc3Npb25JRCkpIHsKICAgICAgICAgaWYg
KHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpTZXNzaW9uU3RvcmFn
ZSkpIHsKLSAgICAgICAgICAgIHN0b3JhZ2VNYW5hZ2VyLmdldFNlc3Npb25TdG9yYWdlT3JpZ2lu
cyhbc3RvcmFnZU1hbmFnZXIgPSBtYWtlUmVmUHRyKHN0b3JhZ2VNYW5hZ2VyKSwgY2FsbGJhY2tB
Z2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKSwgZG9tYWluc1RvRGVsZXRl
QWxsQnV0Q29va2llc0Zvcl0oYXV0byYmIG9yaWdpbnMpIHsKKyAgICAgICAgICAgIG1fc3RvcmFn
ZU1hbmFnZXJTZXQtPmdldFNlc3Npb25TdG9yYWdlT3JpZ2lucyhzZXNzaW9uSUQsIFtwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHRoaXMsIHNlc3Npb25JRCwgY2FsbGJhY2tBZ2dyZWdh
dG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKSwgZG9tYWluc1RvRGVsZXRlQWxsQnV0
Q29va2llc0Zvcl0oYXV0byYmIG9yaWdpbnMpIHsKICAgICAgICAgICAgICAgICBhdXRvIG9yaWdp
bnNUb0RlbGV0ZSA9IGZpbHRlckZvclJlZ2lzdHJhYmxlRG9tYWlucyhvcmlnaW5zLCBkb21haW5z
VG9EZWxldGVBbGxCdXRDb29raWVzRm9yLCBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fZG9tYWlucyk7
Ci0gICAgICAgICAgICAgICAgc3RvcmFnZU1hbmFnZXItPmRlbGV0ZVNlc3Npb25TdG9yYWdlRW50
cmllc0Zvck9yaWdpbnMob3JpZ2luc1RvRGVsZXRlLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2Fs
bGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKKyAgICAgICAgICAgICAgICBtX3N0b3Jh
Z2VNYW5hZ2VyU2V0LT5kZWxldGVTZXNzaW9uU3RvcmFnZUZvck9yaWdpbnMoc2Vzc2lvbklELCBv
cmlnaW5zVG9EZWxldGUsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3Iu
Y29weVJlZigpXSB7IH0pOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KIAogICAgICAgICBp
ZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkxvY2FsU3RvcmFn
ZSkpIHsKLSAgICAgICAgICAgIHN0b3JhZ2VNYW5hZ2VyLmdldExvY2FsU3RvcmFnZU9yaWdpbnMo
W3N0b3JhZ2VNYW5hZ2VyID0gbWFrZVJlZlB0cihzdG9yYWdlTWFuYWdlciksIGNhbGxiYWNrQWdn
cmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCksIGRvbWFpbnNUb0RlbGV0ZUFs
bEJ1dENvb2tpZXNGb3JdKGF1dG8mJiBvcmlnaW5zKSB7CisgICAgICAgICAgICBtX3N0b3JhZ2VN
YW5hZ2VyU2V0LT5nZXRMb2NhbFN0b3JhZ2VPcmlnaW5zKHNlc3Npb25JRCwgW3Byb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgdGhpcywgc2Vzc2lvbklELCBjYWxsYmFja0FnZ3JlZ2F0b3Ig
PSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpLCBkb21haW5zVG9EZWxldGVBbGxCdXRDb29r
aWVzRm9yXShhdXRvJiYgb3JpZ2lucykgewogICAgICAgICAgICAgICAgIGF1dG8gb3JpZ2luc1Rv
RGVsZXRlID0gZmlsdGVyRm9yUmVnaXN0cmFibGVEb21haW5zKG9yaWdpbnMsIGRvbWFpbnNUb0Rl
bGV0ZUFsbEJ1dENvb2tpZXNGb3IsIGNhbGxiYWNrQWdncmVnYXRvci0+bV9kb21haW5zKTsKLSAg
ICAgICAgICAgICAgICBzdG9yYWdlTWFuYWdlci0+ZGVsZXRlTG9jYWxTdG9yYWdlRW50cmllc0Zv
ck9yaWdpbnMob3JpZ2luc1RvRGVsZXRlLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tB
Z2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKKyAgICAgICAgICAgICAgICBtX3N0b3JhZ2VNYW5h
Z2VyU2V0LT5kZWxldGVMb2NhbFN0b3JhZ2VGb3JPcmlnaW5zKHNlc3Npb25JRCwgb3JpZ2luc1Rv
RGVsZXRlLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYo
KV0geyB9KTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAgICAgfQpAQCAtMjExMSw5ICsy
MTE0LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6YWN0dWFsUHJlcGFyZVRvU3VzcGVuZChTaG91
bGRBY2tub3dsZWRnZVdoZW5SZWFkeVRvU3VzcGVuZAogICAgIH0KICNlbmRpZgogCi0gICAgZm9y
RWFjaE5ldHdvcmtTZXNzaW9uKFsmY2FsbGJhY2tBZ2dyZWdhdG9yXShhdXRvJiBzZXNzaW9uKSB7
Ci0gICAgICAgIHNlc3Npb24uc3RvcmFnZU1hbmFnZXIoKS5zdXNwZW5kKFtjYWxsYmFja0FnZ3Jl
Z2F0b3JdIHsgfSk7Ci0gICAgfSk7CisgICAgbV9zdG9yYWdlTWFuYWdlclNldC0+c3VzcGVuZChb
Y2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwcm9j
ZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5KCkKQEAgLTIxODksOSArMjE5MCw3IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OnJlc3VtZSgpCiAgICAgICAgIHNlcnZlci0+cmVzdW1lKCk7CiAjZW5kaWYK
IAotICAgIGZvckVhY2hOZXR3b3JrU2Vzc2lvbihbXShhdXRvJiBzZXNzaW9uKSB7Ci0gICAgICAg
IHNlc3Npb24uc3RvcmFnZU1hbmFnZXIoKS5yZXN1bWUoKTsKLSAgICB9KTsKKyAgICBtX3N0b3Jh
Z2VNYW5hZ2VyU2V0LT5yZXN1bWUoKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlZmV0
Y2hETlMoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKQEAgLTIzOTYsNiArMjM5NSwxOCBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpzZXRJREJQZXJPcmlnaW5RdW90YSh1aW50NjRfdCBxdW90YSkKIH0K
ICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAordm9pZCBOZXR3b3JrUHJvY2Vz
czo6c3luY0xvY2FsU3RvcmFnZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit7CisgICAgbV9zdG9yYWdlTWFuYWdlclNldC0+d2FpdFVudGlsU3luY2luZ0xv
Y2FsU3RvcmFnZUZpbmlzaGVkKCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKK30KKwordm9p
ZCBOZXR3b3JrUHJvY2Vzczo6Y2xlYXJMZWdhY3lQcml2YXRlQnJvd3NpbmdMb2NhbFN0b3JhZ2Uo
KQoreworICAgIGlmIChtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5jb250YWlucyhQQUw6OlNlc3Npb25J
RDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpKSkKKyAgICAgICAgbV9zdG9yYWdlTWFuYWdlclNl
dC0+ZGVsZXRlTG9jYWxTdG9yYWdlTW9kaWZpZWRTaW5jZShQQUw6OlNlc3Npb25JRDo6bGVnYWN5
UHJpdmF0ZVNlc3Npb25JRCgpLCAtV2FsbFRpbWU6OmluZmluaXR5KCksIFtdKCkgeyB9KTsKK30K
Kwogdm9pZCBOZXR3b3JrUHJvY2Vzczo6dXBkYXRlUXVvdGFCYXNlZE9uU3BhY2VVc2FnZUZvclRl
c3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdp
bikKIHsKICAgICBhdXRvJiBtYW5hZ2VyID0gc3RvcmFnZVF1b3RhTWFuYWdlcihzZXNzaW9uSUQs
IG9yaWdpbik7CkBAIC0yNzAzLDgwICsyNzE0LDIxIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJl
bW92ZUtlcHRBbGl2ZUxvYWQoTmV0d29ya1Jlc291cmNlTG9hZGVyJiBsb2FkZXIpCiAgICAgICAg
IHNlc3Npb24tPnJlbW92ZUtlcHRBbGl2ZUxvYWQobG9hZGVyKTsKIH0KIAotdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6d2ViUGFnZVdhc0FkZGVkKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIFBhZ2VJZGVudGlm
aWVyIG9sZFBhZ2VJRCkKLXsKLSAgICBpZiAoIXBhZ2VJRCB8fCAhb2xkUGFnZUlEKSB7Ci0gICAg
ICAgIExPR19FUlJPUigiQ2Fubm90IGFkZCBwYWdlIHdpdGggaW52YWxpZCBpZCIpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNl
c3Npb25JRCk7Ci0gICAgaWYgKCFzZXNzaW9uKSB7Ci0gICAgICAgIExPR19FUlJPUigiQ2Fubm90
IGFkZCBwYWdlIHRvIGFuIHVua25vd24gc2Vzc2lvbiIpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotICAgIGF1dG8mIHN0b3JhZ2VNYW5hZ2VyID0gc2Vzc2lvbi0+c3RvcmFnZU1hbmFnZXIoKTsK
LQotICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9zZXNzaW9uQnlDb25uZWN0aW9uLmFkZChjb25uZWN0
aW9uLnVuaXF1ZUlEKCksIHNlc3Npb25JRCk7Ci0gICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQs
IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPT0gc2Vzc2lvbklEKTsKLQotICAgIHN0b3JhZ2VN
YW5hZ2VyLmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHBhZ2VJRC50b1VJbnQ2NCgpLCBz
dGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpOwotICAgIHN0b3JhZ2VNYW5hZ2Vy
LmFkZEFsbG93ZWRTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZUNvbm5lY3Rpb24ocGFnZUlELnRvVUlu
dDY0KCksIGNvbm5lY3Rpb24pOwotICAgIGlmIChwYWdlSUQgIT0gb2xkUGFnZUlEKQotICAgICAg
ICBzdG9yYWdlTWFuYWdlci5jbG9uZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKG9sZFBhZ2VJRC50
b1VJbnQ2NCgpLCBwYWdlSUQudG9VSW50NjQoKSk7Ci19Ci0KLXZvaWQgTmV0d29ya1Byb2Nlc3M6
OndlYlBhZ2VXYXNSZW1vdmVkKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBQYWdlSWRlbnRpZmllciBwYWdlSUQpCi17Ci0gICAgaWYgKCFwYWdl
SUQpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJDYW5ub3QgcmVtb3ZlIHBhZ2Ugd2l0aCBpbnZhbGlk
IGlkIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBhdXRvKiBzZXNzaW9uID0gbmV0
d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKLSAgICAvLyBTZXNzaW9uIGNhbiBiZSBkZXN0cm95ZWQg
YmVmb3JlIHBhZ2UgZ2V0cyByZW1vdmVkLgotICAgIGlmICghc2Vzc2lvbikKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgYXV0byYgc3RvcmFnZU1hbmFnZXIgPSBzZXNzaW9uLT5zdG9yYWdlTWFuYWdl
cigpOwotICAgIHN0b3JhZ2VNYW5hZ2VyLnJlbW92ZUFsbG93ZWRTZXNzaW9uU3RvcmFnZU5hbWVz
cGFjZUNvbm5lY3Rpb24ocGFnZUlELnRvVUludDY0KCksIGNvbm5lY3Rpb24pOwotICAgIHN0b3Jh
Z2VNYW5hZ2VyLmRlc3Ryb3lTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShwYWdlSUQudG9VSW50NjQo
KSk7Ci19Ci0KLXZvaWQgTmV0d29ya1Byb2Nlc3M6OndlYlByb2Nlc3NXYXNEaXNjb25uZWN0ZWQo
SVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQotewotICAgIGF1dG8gc2Vzc2lvbklEID0gbV9z
ZXNzaW9uQnlDb25uZWN0aW9uLnRha2UoY29ubmVjdGlvbi51bmlxdWVJRCgpKTsKLSAgICBpZiAo
IXNlc3Npb25JRC5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChhdXRvKiBz
ZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkKLSAgICAgICAgc2Vzc2lvbi0+c3Rv
cmFnZU1hbmFnZXIoKS5wcm9jZXNzRGlkQ2xvc2VDb25uZWN0aW9uKGNvbm5lY3Rpb24pOwotfQot
Ci12b2lkIE5ldHdvcmtQcm9jZXNzOjp3ZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQoSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBQQUw6OlNlc3Npb25JRCBuZXdTZXNzaW9uSUQsIGNvbnN0IFZl
Y3RvcjxQYWdlSWRlbnRpZmllcj4mIHBhZ2VJRHMpCi17Ci0gICAgYXV0byBjb25uZWN0aW9uSUQg
PSBjb25uZWN0aW9uLnVuaXF1ZUlEKCk7Ci0gICAgQVNTRVJUKG1fc2Vzc2lvbkJ5Q29ubmVjdGlv
bi5jb250YWlucyhjb25uZWN0aW9uSUQpKTsKLSAgICBpZiAobV9zZXNzaW9uQnlDb25uZWN0aW9u
LmdldChjb25uZWN0aW9uSUQpID09IG5ld1Nlc3Npb25JRCkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgd2ViUHJvY2Vzc1dhc0Rpc2Nvbm5lY3RlZChjb25uZWN0aW9uKTsKLSAgICBmb3IgKGF1dG8m
IHBhZ2VJRCA6IHBhZ2VJRHMpCi0gICAgICAgIHdlYlBhZ2VXYXNBZGRlZChjb25uZWN0aW9uLCBu
ZXdTZXNzaW9uSUQsIHBhZ2VJRCwgcGFnZUlEKTsKLX0KLQogdm9pZCBOZXR3b3JrUHJvY2Vzczo6
Z2V0TG9jYWxTdG9yYWdlT3JpZ2luRGV0YWlscyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6
T3JpZ2luRGV0YWlscz4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgYXV0byogc2Vz
c2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7Ci0gICAgaWYgKCFzZXNzaW9uKSB7Cisg
ICAgaWYgKCFtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5jb250YWlucyhzZXNzaW9uSUQpKSB7CiAgICAg
ICAgIExPR19FUlJPUigiQ2Fubm90IGdldCBsb2NhbCBzdG9yYWdlIGluZm9ybWF0aW9uIGZvciBh
biB1bmtub3duIHNlc3Npb24iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8m
IHN0b3JhZ2VNYW5hZ2VyID0gc2Vzc2lvbi0+c3RvcmFnZU1hbmFnZXIoKTsKLSAgICBzdG9yYWdl
TWFuYWdlci5nZXRMb2NhbFN0b3JhZ2VPcmlnaW5EZXRhaWxzKFtjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvJiYgZGV0YWlscykgbXV0YWJsZSB7Cisg
ICAgbV9zdG9yYWdlTWFuYWdlclNldC0+Z2V0TG9jYWxTdG9yYWdlT3JpZ2luRGV0YWlscyhzZXNz
aW9uSUQsIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShh
dXRvJiYgZGV0YWlscykgbXV0YWJsZSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1v
dmUoZGV0YWlscykpOwogICAgIH0pOwogfQogCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpjb25uZWN0
aW9uVG9XZWJQcm9jZXNzQ2xvc2VkKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKK3sKKyAg
ICBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5yZW1vdmVDb25uZWN0aW9uKGNvbm5lY3Rpb24pOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuaAppbmRleCA2MTIxYmFkYmEzZmU0OWFmMDg3M2I4NTczMmVjODAyMDU2
ZmZlODAwLi4zMjExZTkwZjY1MTgzNmEzYjA3NmMzMjJhYWI4NjM0ODE3ZDRjNzNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC05Nyw2ICs5
Nyw3IEBAIGNsYXNzIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwogY2xhc3MgTmV0d29y
a1Byb2Nlc3NTdXBwbGVtZW50OwogY2xhc3MgTmV0d29ya1Byb3hpbWl0eU1hbmFnZXI7CiBjbGFz
cyBOZXR3b3JrUmVzb3VyY2VMb2FkZXI7CitjbGFzcyBTdG9yYWdlTWFuYWdlclNldDsKIGNsYXNz
IFdlYlNXU2VydmVyQ29ubmVjdGlvbjsKIGNsYXNzIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbjsKIGVudW0gY2xhc3MgU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzIDogYm9vbDsKQEAg
LTI2OSwxMCArMjcwLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U2Vzc2lvbklzQ29udHJvbGxl
ZEJ5QXV0b21hdGlvbihQQUw6OlNlc3Npb25JRCwgYm9vbCk7CiAgICAgYm9vbCBzZXNzaW9uSXND
b250cm9sbGVkQnlBdXRvbWF0aW9uKFBBTDo6U2Vzc2lvbklEKSBjb25zdDsKIAotICAgIHZvaWQg
d2ViUGFnZVdhc0FkZGVkKElQQzo6Q29ubmVjdGlvbiYsIFBBTDo6U2Vzc2lvbklELCBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwotICAgIHZvaWQgd2Vi
UGFnZVdhc1JlbW92ZWQoSVBDOjpDb25uZWN0aW9uJiwgUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyKTsKLSAgICB2b2lkIHdlYlByb2Nlc3NXYXNEaXNjb25uZWN0ZWQoSVBD
OjpDb25uZWN0aW9uJik7Ci0gICAgdm9pZCB3ZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQoSVBDOjpD
b25uZWN0aW9uJiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpQYWdlSWRl
bnRpZmllcj4mKTsKKyAgICB2b2lkIGNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NDbG9zZWQoSVBDOjpD
b25uZWN0aW9uJik7CiAgICAgdm9pZCBnZXRMb2NhbFN0b3JhZ2VPcmlnaW5EZXRhaWxzKFBBTDo6
U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxMb2NhbFN0b3JhZ2VEYXRh
YmFzZVRyYWNrZXI6Ok9yaWdpbkRldGFpbHM+JiYpPiYmKTsKIAogI2lmIEVOQUJMRShDT05URU5U
X0VYVEVOU0lPTlMpCkBAIC0yODUsNiArMjgzLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGFjY2Vz
c1RvVGVtcG9yYXJ5RmlsZUNvbXBsZXRlKGNvbnN0IFN0cmluZyYgcGF0aCkgZmluYWw7CiAgICAg
dm9pZCBzZXRJREJQZXJPcmlnaW5RdW90YSh1aW50NjRfdCk7CiAjZW5kaWYKKworICAgIHZvaWQg
c3luY0xvY2FsU3RvcmFnZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQg
Y2xlYXJMZWdhY3lQcml2YXRlQnJvd3NpbmdMb2NhbFN0b3JhZ2UoKTsKKwogICAgIHZvaWQgdXBk
YXRlUXVvdGFCYXNlZE9uU3BhY2VVc2FnZUZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYpOwogCiAjaWYgRU5BQkxFKFNBTkRCT1hfRVhURU5TSU9O
UykKQEAgLTQ5OSw2ICs1MDEsOCBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8UEFMOjpTZXNzaW9u
SUQsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+PiBtX25l
dHdvcmtTdG9yYWdlU2Vzc2lvbnM7CiAgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiBtX2RlZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Npb247
CiAKKyAgICBSZWZQdHI8U3RvcmFnZU1hbmFnZXJTZXQ+IG1fc3RvcmFnZU1hbmFnZXJTZXQ7CisK
ICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQ
cm9jZXNzQ29jb2EoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKTsKICAg
ICB2b2lkIHNldFN0b3JhZ2VBY2Nlc3NBUElFbmFibGVkKGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5k
ZXggYjc2ZGFhMWVmYmFmNDlmYmZlODQ2NGUzNGMyMTViYzgwMGI0NjZkMS4uYzU1M2E4ODlhNmUy
MDhjNDhkM2QzNmZjNTk3YTJlOTFiN2U1MzQwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0xNjMsNiAr
MTYzLDEwIEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICNp
ZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICBTZXRJREJQZXJPcmlnaW5RdW90YSh1aW50
NjRfdCBxdW90YSkKICNlbmRpZgorCisgICAgU3luY0xvY2FsU3RvcmFnZSgpIC0+ICgpIFN5bmNo
cm9ub3VzCisgICAgQ2xlYXJMZWdhY3lQcml2YXRlQnJvd3NpbmdMb2NhbFN0b3JhZ2UoKQorCiAg
ICAgVXBkYXRlUXVvdGFCYXNlZE9uU3BhY2VVc2FnZUZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBzdHJ1Y3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbikKIAogICAgIFN0
b3JlQWRDbGlja0F0dHJpYnV0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6
QWRDbGlja0F0dHJpYnV0aW9uIGFkQ2xpY2tBdHRyaWJ1dGlvbikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKaW5kZXggNDg4YjkyOTgwYWVkMWFk
YzY0YWIzZDNjYWZjM2Y4ZDhmYTI3NjJiZC4uMWExMzk2MjkxNmE5OTI0MDQwMDhhMmVmMjFhNDE5
M2U2YzE3NjZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U2Vzc2lvbi5jcHAKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VM
b2FkUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRlci5oIgogI2lu
Y2x1ZGUgIlBpbmdMb2FkLmgiCi0jaW5jbHVkZSAiU3RvcmFnZU1hbmFnZXIuaCIKICNpbmNsdWRl
ICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgogI2lu
Y2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgpAQCAtODUsNyArODQsNiBAQCBOZXR3b3JrU2Vzc2lv
bjo6TmV0d29ya1Nlc3Npb24oTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBjb25zdCBO
ZXR3b3JrU2VzcwogICAgICwgbV9lbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTG9nVGVzdGlu
Z0V2ZW50KHBhcmFtZXRlcnMuZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0xvZ1Rlc3RpbmdF
dmVudCkKICNlbmRpZgogICAgICwgbV9hZENsaWNrQXR0cmlidXRpb24obWFrZVVuaXF1ZVJlZjxB
ZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyPihwYXJhbWV0ZXJzLnNlc3Npb25JRCkpCi0gICAgLCBt
X3N0b3JhZ2VNYW5hZ2VyKFN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGUoU3RyaW5nKHBhcmFtZXRlcnMu
bG9jYWxTdG9yYWdlRGlyZWN0b3J5KSkpCiB7CiAgICAgaWYgKCFtX3Nlc3Npb25JRC5pc0VwaGVt
ZXJhbCgpKSB7CiAgICAgICAgIFN0cmluZyBuZXR3b3JrQ2FjaGVEaXJlY3RvcnkgPSBwYXJhbWV0
ZXJzLm5ldHdvcmtDYWNoZURpcmVjdG9yeTsKQEAgLTk5LDcgKzk3LDYgQEAgTmV0d29ya1Nlc3Np
b246Ok5ldHdvcmtTZXNzaW9uKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgY29uc3Qg
TmV0d29ya1Nlc3MKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmtDYWNoZSwg
IkZhaWxlZCB0byBpbml0aWFsaXplIHRoZSBXZWJLaXQgbmV0d29yayBkaXNrIGNhY2hlIik7CiAg
ICAgfQogCi0gICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KHBhcmFtZXRl
cnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKICAgICBtX2FkQ2xpY2tB
dHRyaWJ1dGlvbi0+c2V0UGluZ0xvYWRGdW5jdGlvbihbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vh
a1B0cih0aGlzKV0oTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiBsb2FkUGFyYW1ldGVy
cywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7
CiAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMTMsOSAr
MTEwLDYgQEAgTmV0d29ya1Nlc3Npb246On5OZXR3b3JrU2Vzc2lvbigpCiAjaWYgRU5BQkxFKFJF
U09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBkZXN0cm95UmVzb3VyY2VMb2FkU3RhdGlzdGlj
cygpOwogI2VuZGlmCi0KLSAgICBtX3N0b3JhZ2VNYW5hZ2VyLT5yZXN1bWUoKTsKLSAgICBtX3N0
b3JhZ2VNYW5hZ2VyLT53YWl0VW50aWxUYXNrc0ZpbmlzaGVkKCk7CiB9CiAKICNpZiBFTkFCTEUo
UkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU2Vzc2lvbi5oCmluZGV4IDUwNmU3ZmYwOGZiYzlhNzY0ZWE4MzAzMDk0YjZkMzA2
NzRhM2YzYTQuLjY4NDliMzBmOGQ0NmM5NTc0Y2FlZDE0MTQ1NjJkZWU1NzRiOTliZjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKQEAgLTUyLDcg
KzUyLDYgQEAgY2xhc3MgQWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlcjsKIGNsYXNzIE5ldHdvcmtE
YXRhVGFzazsKIGNsYXNzIE5ldHdvcmtQcm9jZXNzOwogY2xhc3MgTmV0d29ya1Jlc291cmNlTG9h
ZGVyOwotY2xhc3MgU3RvcmFnZU1hbmFnZXI7CiBjbGFzcyBOZXR3b3JrU29ja2V0Q2hhbm5lbDsK
IGNsYXNzIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTsKIGNsYXNzIFdlYlNvY2tldFRh
c2s7CkBAIC04MSw4ICs4MCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZ2lzdGVyTmV0d29ya0Rh
dGFUYXNrKE5ldHdvcmtEYXRhVGFzayYgdGFzaykgeyBtX2RhdGFUYXNrU2V0LmFkZCgmdGFzayk7
IH0KICAgICB2b2lkIHVucmVnaXN0ZXJOZXR3b3JrRGF0YVRhc2soTmV0d29ya0RhdGFUYXNrJiB0
YXNrKSB7IG1fZGF0YVRhc2tTZXQucmVtb3ZlKCZ0YXNrKTsgfQogCi0gICAgU3RvcmFnZU1hbmFn
ZXImIHN0b3JhZ2VNYW5hZ2VyKCkgeyByZXR1cm4gbV9zdG9yYWdlTWFuYWdlci5nZXQoKTsgfQot
CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUqIHJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSBjb25zdCB7IHJldHVy
biBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MuZ2V0KCk7IH0KICAgICB2b2lkIHNldFJlc291cmNl
TG9hZFN0YXRpc3RpY3NFbmFibGVkKGJvb2wpOwpAQCAtMTQ1LDcgKzE0Miw2IEBAIHByb3RlY3Rl
ZDoKIAogICAgIFByZWZldGNoQ2FjaGUgbV9wcmVmZXRjaENhY2hlOwogCi0gICAgUmVmPFN0b3Jh
Z2VNYW5hZ2VyPiBtX3N0b3JhZ2VNYW5hZ2VyOwogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICBi
b29sIG1faXNJbnZhbGlkYXRlZCB7IGZhbHNlIH07CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9u
UGFyYW1ldGVycy5jcHAKaW5kZXggYzFiOTc3Y2MxZDJiYzdhODMwNTFiMjYyMTJmMmQxZGUwZTg1
Nzk4NC4uYjI5ZjQ5MzM5ZjAzZDEzM2E1Y2Y1MGE5MDdkMTIxMzkwMzQxODFkYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFy
YW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vz
c2lvbkNyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgTmV0d29ya1Nlc3Np
b25DcmVhdGlvblBhcmFtZXRlcnMgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM6OnBy
aXZhdGVTZXNzaW8KICNpZiBVU0UoQ1VSTCkKICAgICAgICAgLCB7IH0sIHsgfQogI2VuZGlmCi0g
ICAgICAgICwgeyB9LCB7IH0sIGZhbHNlLCBmYWxzZSwgeyB9LCB7IH0sIHsgfSwgeyB9LCB7IH0s
IHsgfSwgeyB9LCB7IH0sIHsgfSwgeyB9CisgICAgICAgICwgeyB9LCB7IH0sIGZhbHNlLCBmYWxz
ZSwgeyB9LCB7IH0sIHsgfSwgeyB9LCB7IH0sIHsgfSwgeyB9LCB7IH0KICAgICB9OwogfQogCkBA
IC04Niw3ICs4Niw2IEBAIHZvaWQgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM6OmVu
Y29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCByZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWFudWFsUHJldmFsZW50UmVzb3VyY2U7CiAgICAgZW5jb2RlciA8PCBl
bmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTlNVUkxTZXNzaW9uU3dpdGNoaW5nOwogCi0gICAg
ZW5jb2RlciA8PCBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPDwgbG9jYWxTdG9yYWdlRGlyZWN0b3J5
RXh0ZW5zaW9uSGFuZGxlOwogICAgIGVuY29kZXIgPDwgbmV0d29ya0NhY2hlRGlyZWN0b3J5IDw8
IG5ldHdvcmtDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKIAogICAgIGVuY29kZXIgPDwg
ZGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0VuYWJsZWQ7CkBAIC0yMTQsMTYgKzIxMyw2IEBA
IE9wdGlvbmFsPE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzPiBOZXR3b3JrU2Vzc2lv
bkNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjCiAgICAgZGVjb2RlciA+PiBlbmFibGVSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTlNVUkxTZXNzaW9uU3dpdGNoaW5nOwogICAgIGlmICghZW5hYmxlUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc05TVVJMU2Vzc2lvblN3aXRjaGluZykKICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKLSAgICAKLSAgICBPcHRpb25hbDxTdHJpbmc+IGxvY2FsU3RvcmFnZURpcmVj
dG9yeTsKLSAgICBkZWNvZGVyID4+IGxvY2FsU3RvcmFnZURpcmVjdG9yeTsKLSAgICBpZiAoIWxv
Y2FsU3RvcmFnZURpcmVjdG9yeSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAg
IE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gbG9jYWxTdG9yYWdlRGlyZWN0b3J5
RXh0ZW5zaW9uSGFuZGxlOwotICAgIGRlY29kZXIgPj4gbG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0
ZW5zaW9uSGFuZGxlOwotICAgIGlmICghbG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFu
ZGxlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8U3RyaW5n
PiBuZXR3b3JrQ2FjaGVEaXJlY3Rvcnk7CiAgICAgZGVjb2RlciA+PiBuZXR3b3JrQ2FjaGVEaXJl
Y3Rvcnk7CkBAIC0yNzcsOCArMjY2LDYgQEAgT3B0aW9uYWw8TmV0d29ya1Nlc3Npb25DcmVhdGlv
blBhcmFtZXRlcnM+IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWMKICAgICAg
ICAgLCBXVEZNb3ZlKCpkZXZpY2VNYW5hZ2VtZW50UmVzdHJpY3Rpb25zRW5hYmxlZCkKICAgICAg
ICAgLCBXVEZNb3ZlKCphbGxMb2Fkc0Jsb2NrZWRCeURldmljZU1hbmFnZW1lbnRSZXN0cmljdGlv
bnNGb3JUZXN0aW5nKQogICAgICAgICAsIFdURk1vdmUoKnJlc291cmNlTG9hZFN0YXRpc3RpY3NN
YW51YWxQcmV2YWxlbnRSZXNvdXJjZSkKLSAgICAgICAgLCBXVEZNb3ZlKCpsb2NhbFN0b3JhZ2VE
aXJlY3RvcnkpCi0gICAgICAgICwgV1RGTW92ZSgqbG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5z
aW9uSGFuZGxlKQogICAgICAgICAsIFdURk1vdmUoKm5ldHdvcmtDYWNoZURpcmVjdG9yeSkKICAg
ICAgICAgLCBXVEZNb3ZlKCpuZXR3b3JrQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpCiAg
ICAgfX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtT
ZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggMTgzM2U0NjdmZjZjNTJk
MjQzOGE2NzAyYmQxNzhlNTdjNTJiNjZhMy4uNTBiZTMwZThiNmZmZTBkYjExOWZlMTAyNzBkMWMx
ZTJkODdhOWZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtOTIsOCArOTIs
NiBAQCBzdHJ1Y3QgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMgewogICAgIGJvb2wg
YWxsTG9hZHNCbG9ja2VkQnlEZXZpY2VNYW5hZ2VtZW50UmVzdHJpY3Rpb25zRm9yVGVzdGluZyB7
IGZhbHNlIH07CiAgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01hbnVhbFByZXZhbGVudFJlc291cmNlIHsgfTsKIAotICAgIFN0cmluZyBsb2NhbFN0
b3JhZ2VEaXJlY3Rvcnk7Ci0gICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGxvY2FsU3RvcmFn
ZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBTdHJpbmcgbmV0d29ya0NhY2hlRGlyZWN0
b3J5OwogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBuZXR3b3JrQ2FjaGVEaXJlY3RvcnlF
eHRlbnNpb25IYW5kbGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAKaW5kZXgg
YmY1MTU3OGZiMTQ3ZGRkYzg3ZTY2ZDkwYTVlZGQwMmE0Y2Q3MjY5My4uOGY0NzYzYzlkYzg2YWI0
YTQyZDk0NmYyNmRiMjhiY2M2OTAyOWNiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2Uu
Y3BwCkBAIC0yNTksNyArMjU5LDYgQEAgdm9pZCBMb2NhbFN0b3JhZ2VEYXRhYmFzZTo6dXBkYXRl
RGF0YWJhc2UoKQogICAgIGlmIChtX2lzQ2xvc2VkKQogICAgICAgICByZXR1cm47CiAKLSAgICBB
U1NFUlQobV9kaWRTY2hlZHVsZURhdGFiYXNlVXBkYXRlKTsKICAgICBtX2RpZFNjaGVkdWxlRGF0
YWJhc2VVcGRhdGUgPSBmYWxzZTsKIAogICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IGNoYW5n
ZWRJdGVtczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3Rv
cmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmgKaW5kZXggNGQ2ODc2YjE3MTNmZTE0
N2M5ZWU3MWFlOWI2ZDY5NDYyMzk3YWVmZC4uOGNmYjI0YjIxZjNhMGE0MjZiZGIyMmQ0NWNhYjQy
MDk1MjNlYzgxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJT
dG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmgKQEAgLTU1LDYgKzU1LDgg
QEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlSXRlbShjb25zdCBTdHJpbmcmIGtleSk7CiAgICAg
dm9pZCBjbGVhcigpOwogCisgICAgdm9pZCB1cGRhdGVEYXRhYmFzZSgpOworCiAgICAgLy8gV2ls
bCBibG9jayB1bnRpbCBhbGwgcGVuZGluZyBjaGFuZ2VzIGhhdmUgYmVlbiB3cml0dGVuIHRvIGRp
c2suCiAgICAgdm9pZCBjbG9zZSgpOwogCkBAIC03Myw3ICs3NSw2IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBpdGVtRGlkQ2hhbmdlKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVl
KTsKIAogICAgIHZvaWQgc2NoZWR1bGVEYXRhYmFzZVVwZGF0ZSgpOwotICAgIHZvaWQgdXBkYXRl
RGF0YWJhc2UoKTsKICAgICB2b2lkIHVwZGF0ZURhdGFiYXNlV2l0aENoYW5nZWRJdGVtcyhjb25z
dCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYpOwogCiAgICAgYm9vbCBkYXRhYmFzZUlzRW1wdHko
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9M
b2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5jcHAKaW5kZXggMDdh
NjMzZmJmZTliZTU5ZWRiZWQ1MzljOTZlMTllNGIxYmJkMjU4My4uNjczMjcwOTQzMmYzYTZlNzUy
NTExN2ZlZWU3OWZiNWM4YTYxNjkyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFi
YXNlVHJhY2tlci5jcHAKQEAgLTM5LDI0ICszOSwxNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotUmVmPExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tl
cj4gTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpjcmVhdGUoUmVmPFdvcmtRdWV1ZT4mJiBx
dWV1ZSwgU3RyaW5nJiYgbG9jYWxTdG9yYWdlRGlyZWN0b3J5KQorUmVmPExvY2FsU3RvcmFnZURh
dGFiYXNlVHJhY2tlcj4gTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpjcmVhdGUoU3RyaW5n
JiYgbG9jYWxTdG9yYWdlRGlyZWN0b3J5KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IExv
Y2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcihXVEZNb3ZlKHF1ZXVlKSwgV1RGTW92ZShsb2NhbFN0
b3JhZ2VEaXJlY3RvcnkpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTG9jYWxTdG9yYWdl
RGF0YWJhc2VUcmFja2VyKFdURk1vdmUobG9jYWxTdG9yYWdlRGlyZWN0b3J5KSkpOwogfQogCi1M
b2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OkxvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcihS
ZWY8V29ya1F1ZXVlPiYmIHF1ZXVlLCBTdHJpbmcmJiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpCi0g
ICAgOiBtX3F1ZXVlKFdURk1vdmUocXVldWUpKQotICAgICwgbV9sb2NhbFN0b3JhZ2VEaXJlY3Rv
cnkoV1RGTW92ZShsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpKQorTG9jYWxTdG9yYWdlRGF0YWJhc2VU
cmFja2VyOjpMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIoU3RyaW5nJiYgbG9jYWxTdG9yYWdl
RGlyZWN0b3J5KQorICAgIDogbV9sb2NhbFN0b3JhZ2VEaXJlY3RvcnkoV1RGTW92ZShsb2NhbFN0
b3JhZ2VEaXJlY3RvcnkpKQogewotICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAg
QVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICAvLyBNYWtlIHN1cmUgdGhlIGVuY29k
aW5nIGlzIGluaXRpYWxpemVkIGJlZm9yZSB3ZSBzdGFydCBkaXNwYXRjaGluZyB0aGluZ3MgdG8g
dGhlIHF1ZXVlLgotICAgIFVURjhFbmNvZGluZygpOwotCi0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2go
W3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgLy8g
RGVsZXRlIGxlZ2FjeSBzdG9yYWdlVHJhY2tlciBkYXRhYmFzZSBmaWxlLgotICAgICAgICBTUUxp
dGVGaWxlU3lzdGVtOjpkZWxldGVEYXRhYmFzZUZpbGUocHJvdGVjdGVkVGhpcy0+ZGF0YWJhc2VQ
YXRoKCJTdG9yYWdlVHJhY2tlci5kYiIpKTsKLSAgICB9KTsKKyAgICBTUUxpdGVGaWxlU3lzdGVt
OjpkZWxldGVEYXRhYmFzZUZpbGUoZGF0YWJhc2VQYXRoKCJTdG9yYWdlVHJhY2tlci5kYiIpKTsK
IH0KIAogU3RyaW5nIExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6bG9jYWxTdG9yYWdlRGly
ZWN0b3J5KCkgY29uc3QKQEAgLTY2LDcgKzU5LDcgQEAgU3RyaW5nIExvY2FsU3RvcmFnZURhdGFi
YXNlVHJhY2tlcjo6bG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QKIAogTG9jYWxTdG9yYWdl
RGF0YWJhc2VUcmFja2VyOjp+TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyKCkKIHsKLSAgICBB
U1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkp
OwogfQogCiBTdHJpbmcgTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpkYXRhYmFzZVBhdGgo
Y29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbikgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VE
YXRhYmFzZVRyYWNrZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFn
ZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuaAppbmRleCA1ZDlkMmMyYTRjN2RhMDEzZjYw
ZjExZWI0MzZmMThlNDc1ODAyMDkxLi44NWI0OWVlMjViOGFjY2M5ZGFmOTk5MzRkZTc4OGMyMzVm
ZDVhYmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3Jh
Z2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5oCkBAIC0z
NSw5ICszNSw5IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBMb2NhbFN0b3JhZ2VE
YXRhYmFzZVRyYWNrZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8TG9jYWxTdG9yYWdl
RGF0YWJhc2VUcmFja2VyLCBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpNYWluUnVuTG9vcD4gewor
Y2xhc3MgTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcj4gewogcHVibGljOgotICAgIHN0YXRp
YyBSZWY8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyPiBjcmVhdGUoUmVmPFdvcmtRdWV1ZT4m
JiwgU3RyaW5nJiYgbG9jYWxTdG9yYWdlRGlyZWN0b3J5KTsKKyAgICBzdGF0aWMgUmVmPExvY2Fs
U3RvcmFnZURhdGFiYXNlVHJhY2tlcj4gY3JlYXRlKFN0cmluZyYmIGxvY2FsU3RvcmFnZURpcmVj
dG9yeSk7CiAgICAgfkxvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcigpOwogCiAgICAgU3RyaW5n
IGRhdGFiYXNlUGF0aChjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmKSBjb25zdDsK
QEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgogICAgIFZlY3RvcjxPcmlnaW5EZXRhaWxzPiBvcmln
aW5EZXRhaWxzKCk7CiAKIHByaXZhdGU6Ci0gICAgTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2Vy
KFJlZjxXb3JrUXVldWU+JiYsIFN0cmluZyYmIGxvY2FsU3RvcmFnZURpcmVjdG9yeSk7CisgICAg
TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyKFN0cmluZyYmIGxvY2FsU3RvcmFnZURpcmVjdG9y
eSk7CiAKICAgICBTdHJpbmcgZGF0YWJhc2VQYXRoKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpIGNv
bnN0OwogICAgIFN0cmluZyBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdDsKQEAgLTczLDgg
KzczLDYgQEAgcHJpdmF0ZToKICAgICAgICAgQ3JlYXRlSWZOb25FeGlzdGVudCwKICAgICAgICAg
U2tpcElmTm9uRXhpc3RlbnQKICAgICB9OwotCi0gICAgUmVmPFdvcmtRdWV1ZT4gbV9xdWV1ZTsK
ICAgICAKICAgICAvLyBJdCBpcyBub3Qgc2FmZSB0byB1c2UgdGhpcyBtZW1iZXIgZnJvbSBhIGJh
Y2tncm91bmQgdGhyZWFkLCBjYWxsIGxvY2FsU3RvcmFnZURpcmVjdG9yeSgpIGluc3RlYWQuCiAg
ICAgY29uc3QgU3RyaW5nIG1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZU5hbWVzcGFj
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9y
YWdlTmFtZXNwYWNlLmNwcAppbmRleCA1NGRjNzk5NDI4Y2RhOGIzMDcwNjVkOWE3ZDY3ZTcwYjM4
MmJiNDQyLi4zYWVjNjY4ZGYxMGJjNWM1MWVlMzY0ZjlmZWZlZGM1MGRkNDk0NDFlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdl
TmFtZXNwYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3Jh
Z2UvTG9jYWxTdG9yYWdlTmFtZXNwYWNlLmNwcApAQCAtNDcsNyArNDcsNyBAQCBMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2U6On5Mb2NhbFN0b3JhZ2VOYW1lc3BhY2UoKQogICAgIEFTU0VSVCghUnVuTG9v
cDo6aXNNYWluKCkpOwogfQogCi1hdXRvIExvY2FsU3RvcmFnZU5hbWVzcGFjZTo6Z2V0T3JDcmVh
dGVTdG9yYWdlQXJlYShTZWN1cml0eU9yaWdpbkRhdGEmJiBzZWN1cml0eU9yaWdpbiwgSXNFcGhl
bWVyYWwgaXNFcGhlbWVyYWwpIC0+IFJlZjxTdG9yYWdlQXJlYT4KK1JlZjxTdG9yYWdlQXJlYT4g
TG9jYWxTdG9yYWdlTmFtZXNwYWNlOjpnZXRPckNyZWF0ZVN0b3JhZ2VBcmVhKFNlY3VyaXR5T3Jp
Z2luRGF0YSYmIHNlY3VyaXR5T3JpZ2luLCBJc0VwaGVtZXJhbCBpc0VwaGVtZXJhbCkKIHsKICAg
ICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICByZXR1cm4gKm1fc3RvcmFnZUFyZWFN
YXAuZW5zdXJlKHNlY3VyaXR5T3JpZ2luLCBbJl0oKSBtdXRhYmxlIHsKQEAgLTgxLDExICs4MSw0
IEBAIFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+IExvY2FsU3RvcmFnZU5hbWVzcGFjZTo6ZXBo
ZW1lcmFsT3JpZ2lucygpIGNvbnN0CiAgICAgcmV0dXJuIG9yaWdpbnM7CiB9CiAKLXZvaWQgTG9j
YWxTdG9yYWdlTmFtZXNwYWNlOjpjbG9uZVRvKExvY2FsU3RvcmFnZU5hbWVzcGFjZSYgbmV3TG9j
YWxTdG9yYWdlTmFtZXNwYWNlKQotewotICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwot
ICAgIGZvciAoYXV0byYgcGFpciA6IG1fc3RvcmFnZUFyZWFNYXApCi0gICAgICAgIG5ld0xvY2Fs
U3RvcmFnZU5hbWVzcGFjZS5tX3N0b3JhZ2VBcmVhTWFwLmFkZChwYWlyLmtleSwgcGFpci52YWx1
ZS0+Y2xvbmUoKSk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZU5hbWVzcGFj
ZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFn
ZU5hbWVzcGFjZS5oCmluZGV4IDQ3MTkwY2M2Y2I0NTAzOTcyYzI3MmQwY2NmNDk2Nzc4YTkwOWM4
OGYuLjlhNzZlMWM2MzhkYjQzMjYwZmY4MjQ0NTY3Yzk0ZTdkMDNiM2JkZTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VOYW1l
c3BhY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9j
YWxTdG9yYWdlTmFtZXNwYWNlLmgKQEAgLTU0LDcgKzU0LDYgQEAgcHVibGljOgogICAgIHZvaWQg
Y2xlYXJBbGxTdG9yYWdlQXJlYXMoKTsKIAogICAgIFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGE+IGVwaGVtZXJhbE9yaWdpbnMoKSBjb25zdDsKLSAgICB2b2lkIGNsb25lVG8oTG9j
YWxTdG9yYWdlTmFtZXNwYWNlJiBuZXdMb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOwogCiBwcml2YXRl
OgogICAgIExvY2FsU3RvcmFnZU5hbWVzcGFjZShTdG9yYWdlTWFuYWdlciYsIHVpbnQ2NF90IHN0
b3JhZ2VNYW5hZ2VySUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9XZWJTdG9yYWdlL1Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS5jcHAKaW5k
ZXggNTgwYThlNjJlYWYwNDRlNmM0NTU2NDMyYTYwMTY5ZjIxZmQ3MTZjMS4uZGRmODIxMmE0OWMz
N2Q1Y2Y3ZWEzYjgyYzEyMmIyZWRlYmI3ZGQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU2Vzc2lvblN0b3JhZ2VO
YW1lc3BhY2UuY3BwCkBAIC00MywyMCArNDMsNyBAQCBTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZTo6
flNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKCkKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigp
KTsKIH0KIAotdm9pZCBTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZTo6YWRkQWxsb3dlZENvbm5lY3Rp
b24oSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBhbGxvd2VkQ29ubmVjdGlvbikKLXsKLSAgICBB
U1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBtX2FsbG93ZWRDb25uZWN0aW9ucy5hZGQo
YWxsb3dlZENvbm5lY3Rpb24pOwotfQotCi0KLXZvaWQgU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2U6
OnJlbW92ZUFsbG93ZWRDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgYWxsb3dl
ZENvbm5lY3Rpb24pCi17Ci0gICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgQVNT
RVJUKG1fYWxsb3dlZENvbm5lY3Rpb25zLmNvbnRhaW5zKGFsbG93ZWRDb25uZWN0aW9uKSk7Ci0g
ICAgbV9hbGxvd2VkQ29ubmVjdGlvbnMucmVtb3ZlKGFsbG93ZWRDb25uZWN0aW9uKTsKLX0KLWF1
dG8gU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2U6OmdldE9yQ3JlYXRlU3RvcmFnZUFyZWEoU2VjdXJp
dHlPcmlnaW5EYXRhJiYgc2VjdXJpdHlPcmlnaW4pIC0+IFJlZjxTdG9yYWdlQXJlYT4KK1JlZjxT
dG9yYWdlQXJlYT4gU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2U6OmdldE9yQ3JlYXRlU3RvcmFnZUFy
ZWEoU2VjdXJpdHlPcmlnaW5EYXRhJiYgc2VjdXJpdHlPcmlnaW4pCiB7CiAgICAgQVNTRVJUKCFS
dW5Mb29wOjppc01haW4oKSk7CiAgICAgcmV0dXJuICptX3N0b3JhZ2VBcmVhTWFwLmVuc3VyZShz
ZWN1cml0eU9yaWdpbiwgW3RoaXMsICZzZWN1cml0eU9yaWdpbl0oKSBtdXRhYmxlIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TZXNzaW9uU3Rv
cmFnZU5hbWVzcGFjZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdl
L1Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlLmgKaW5kZXggNzIwNzQ4ZjY3ODY4MDZiMGVjMTBkMmIw
YzI3Y2VmMDMyYTJmNTMwZi4uMThmMGYwOWI4MDIxMTg0YTA0OGQzZjUzOGZjZWU0NjNjMzkzNDdm
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1Nl
c3Npb25TdG9yYWdlTmFtZXNwYWNlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9XZWJTdG9yYWdlL1Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlLmgKQEAgLTQ1LDEwICs0NSw2IEBA
IHB1YmxpYzoKIAogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFnZUFy
ZWFNYXAuaXNFbXB0eSgpOyB9CiAKLSAgICBjb25zdCBIYXNoU2V0PElQQzo6Q29ubmVjdGlvbjo6
VW5pcXVlSUQ+JiBhbGxvd2VkQ29ubmVjdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX2FsbG93ZWRD
b25uZWN0aW9uczsgfQotICAgIHZvaWQgYWRkQWxsb3dlZENvbm5lY3Rpb24oSVBDOjpDb25uZWN0
aW9uOjpVbmlxdWVJRCk7Ci0gICAgdm9pZCByZW1vdmVBbGxvd2VkQ29ubmVjdGlvbihJUEM6OkNv
bm5lY3Rpb246OlVuaXF1ZUlEKTsKLQogICAgIFJlZjxTdG9yYWdlQXJlYT4gZ2V0T3JDcmVhdGVT
dG9yYWdlQXJlYShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJik7CiAKICAgICB2b2lkIGNs
b25lVG8oU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UmIG5ld1Nlc3Npb25TdG9yYWdlTmFtZXNwYWNl
KTsKQEAgLTYxLDcgKzU3LDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBleHBsaWNpdCBTZXNz
aW9uU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YUluQnl0ZXMpOwogCi0gICAgSGFzaFNl
dDxJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEPiBtX2FsbG93ZWRDb25uZWN0aW9uczsKICAgICB1
bnNpZ25lZCBtX3F1b3RhSW5CeXRlcyB7IDAgfTsKIAogICAgIEhhc2hNYXA8V2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhLCBSZWZQdHI8U3RvcmFnZUFyZWE+PiBtX3N0b3JhZ2VBcmVhTWFwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3Jh
Z2VBcmVhLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9y
YWdlQXJlYS5jcHAKaW5kZXggMzQ5NDMxZmVhNTZjNDdhYjgxNDYwY2I4M2Y1NTZlNzI0ZGNhMmQ0
ZC4uMmQxMjU4MzVjYmM4YjUyMmMzM2FhZTU4MDE0ZGJmY2EwYTY4OTE2YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWEu
Y3BwCkBAIC0zNiwxMSArMzYsMTggQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCitzdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVTdG9yYWdlQXJlYUlkZW50
aWZpZXIoKQoreworICAgIHN0YXRpYyB1aW50NjRfdCBpZGVudGlmaWVyOworICAgIHJldHVybiAr
K2lkZW50aWZpZXI7Cit9CisKIFN0b3JhZ2VBcmVhOjpTdG9yYWdlQXJlYShMb2NhbFN0b3JhZ2VO
YW1lc3BhY2UqIGxvY2FsU3RvcmFnZU5hbWVzcGFjZSwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRh
JiBzZWN1cml0eU9yaWdpbiwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKQogICAgIDogbV9sb2NhbFN0
b3JhZ2VOYW1lc3BhY2UobWFrZVdlYWtQdHIobG9jYWxTdG9yYWdlTmFtZXNwYWNlKSkKICAgICAs
IG1fc2VjdXJpdHlPcmlnaW4oc2VjdXJpdHlPcmlnaW4pCiAgICAgLCBtX3F1b3RhSW5CeXRlcyhx
dW90YUluQnl0ZXMpCiAgICAgLCBtX3N0b3JhZ2VNYXAoU3RvcmFnZU1hcDo6Y3JlYXRlKG1fcXVv
dGFJbkJ5dGVzKSkKKyAgICAsIG1faWRlbnRpZmllcihnZW5lcmF0ZVN0b3JhZ2VBcmVhSWRlbnRp
ZmllcigpKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogfQpAQCAtNDgsMzAg
KzU1LDMyIEBAIFN0b3JhZ2VBcmVhOjpTdG9yYWdlQXJlYShMb2NhbFN0b3JhZ2VOYW1lc3BhY2Uq
IGxvY2FsU3RvcmFnZU5hbWVzcGFjZSwgY29uc3QgU2VjCiBTdG9yYWdlQXJlYTo6flN0b3JhZ2VB
cmVhKCkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBBU1NFUlQobV9l
dmVudExpc3RlbmVycy5pc0VtcHR5KCkpOwogCiAgICAgaWYgKG1fbG9jYWxTdG9yYWdlRGF0YWJh
c2UpCiAgICAgICAgIG1fbG9jYWxTdG9yYWdlRGF0YWJhc2UtPmNsb3NlKCk7CiB9CiAKLXZvaWQg
U3RvcmFnZUFyZWE6OmFkZExpc3RlbmVyKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgY29ubmVj
dGlvbklELCB1aW50NjRfdCBzdG9yYWdlTWFwSUQpCit2b2lkIFN0b3JhZ2VBcmVhOjphZGRMaXN0
ZW5lcihJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGNvbm5lY3Rpb25JRCkKIHsKICAgICBBU1NF
UlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBBU1NFUlQoIW1fZXZlbnRMaXN0ZW5lcnMuY29u
dGFpbnMoc3RkOjptYWtlX3BhaXIoY29ubmVjdGlvbklELCBzdG9yYWdlTWFwSUQpKSk7Ci0gICAg
bV9ldmVudExpc3RlbmVycy5hZGQoc3RkOjptYWtlX3BhaXIoY29ubmVjdGlvbklELCBzdG9yYWdl
TWFwSUQpKTsKKyAgICBBU1NFUlQoIW1fZXZlbnRMaXN0ZW5lcnMuY29udGFpbnMoY29ubmVjdGlv
bklEKSk7CisKKyAgICBpZiAobV9ldmVudExpc3RlbmVycy5pc0VtcHR5KCkgJiYgIWlzRXBoZW1l
cmFsKCkpCisgICAgICAgIG9wZW5EYXRhYmFzZUFuZEltcG9ydEl0ZW1zSWZOZWVkZWQoKTsKKwor
ICAgIG1fZXZlbnRMaXN0ZW5lcnMuYWRkKGNvbm5lY3Rpb25JRCk7CiB9CiAKLXZvaWQgU3RvcmFn
ZUFyZWE6OnJlbW92ZUxpc3RlbmVyKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgY29ubmVjdGlv
bklELCB1aW50NjRfdCBzdG9yYWdlTWFwSUQpCit2b2lkIFN0b3JhZ2VBcmVhOjpyZW1vdmVMaXN0
ZW5lcihJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGNvbm5lY3Rpb25JRCkKIHsKICAgICBBU1NF
UlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBBU1NFUlQoaXNFcGhlbWVyYWwoKSB8fCBtX2V2
ZW50TGlzdGVuZXJzLmNvbnRhaW5zKHN0ZDo6bWFrZV9wYWlyKGNvbm5lY3Rpb25JRCwgc3RvcmFn
ZU1hcElEKSkpOwotICAgIG1fZXZlbnRMaXN0ZW5lcnMucmVtb3ZlKHN0ZDo6bWFrZV9wYWlyKGNv
bm5lY3Rpb25JRCwgc3RvcmFnZU1hcElEKSk7CisgICAgbV9ldmVudExpc3RlbmVycy5yZW1vdmUo
Y29ubmVjdGlvbklEKTsKIH0KIAotYm9vbCBTdG9yYWdlQXJlYTo6aGFzTGlzdGVuZXIoSVBDOjpD
b25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uSUQsIHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCkg
Y29uc3QKK2Jvb2wgU3RvcmFnZUFyZWE6Omhhc0xpc3RlbmVyKElQQzo6Q29ubmVjdGlvbjo6VW5p
cXVlSUQgY29ubmVjdGlvbklEKSBjb25zdAogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWlu
KCkpOwotICAgIHJldHVybiBtX2V2ZW50TGlzdGVuZXJzLmNvbnRhaW5zKHN0ZDo6bWFrZV9wYWly
KGNvbm5lY3Rpb25JRCwgc3RvcmFnZU1hcElEKSk7CisgICAgcmV0dXJuIG1fZXZlbnRMaXN0ZW5l
cnMuY29udGFpbnMoY29ubmVjdGlvbklEKTsKIH0KIAogUmVmPFN0b3JhZ2VBcmVhPiBTdG9yYWdl
QXJlYTo6Y2xvbmUoKSBjb25zdApAQCAtMTA1LDI1ICsxMTQsNiBAQCB2b2lkIFN0b3JhZ2VBcmVh
OjpzZXRJdGVtKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgc291cmNlQ29ubmVjdGlvbiwgdWlu
dDY0X3QgcwogICAgIGRpc3BhdGNoRXZlbnRzKHNvdXJjZUNvbm5lY3Rpb24sIHNvdXJjZVN0b3Jh
Z2VBcmVhSUQsIGtleSwgb2xkVmFsdWUsIHZhbHVlLCB1cmxTdHJpbmcpOwogfQogCi12b2lkIFN0
b3JhZ2VBcmVhOjpzZXRJdGVtcyhjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgaXRlbXMp
Ci17Ci0gICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgLy8gSW1wb3J0IGl0ZW1z
IGZyb20gd2ViIHByb2Nlc3MgaWYgaXRlbXMgYXJlIG5vdCBzdG9yZWQgb24gZGlzay4KLSAgICBp
ZiAoIWlzRXBoZW1lcmFsKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGZvciAoYXV0byYgaXRl
bSA6IGl0ZW1zKSB7Ci0gICAgICAgIFN0cmluZyBvbGRWYWx1ZTsKLSAgICAgICAgYm9vbCBxdW90
YUV4Y2VwdGlvbjsKLSAgICAgICAgYXV0byBuZXdTdG9yYWdlTWFwID0gbV9zdG9yYWdlTWFwLT5z
ZXRJdGVtKGl0ZW0ua2V5LCBpdGVtLnZhbHVlLCBvbGRWYWx1ZSwgcXVvdGFFeGNlcHRpb24pOwot
ICAgICAgICBpZiAobmV3U3RvcmFnZU1hcCkKLSAgICAgICAgICAgIG1fc3RvcmFnZU1hcCA9IFdU
Rk1vdmUobmV3U3RvcmFnZU1hcCk7Ci0gICAgICAgIAotICAgICAgICBpZiAocXVvdGFFeGNlcHRp
b24pCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgfQotfQotCiB2b2lkIFN0b3JhZ2VBcmVhOjpy
ZW1vdmVJdGVtKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgc291cmNlQ29ubmVjdGlvbiwgdWlu
dDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmlu
ZyYgdXJsU3RyaW5nKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAtMTc4
LDcgKzE2OCw3IEBAIHZvaWQgU3RvcmFnZUFyZWE6OmNsZWFyKCkKICAgICB9CiAKICAgICBmb3Ig
KGF1dG8gaXQgPSBtX2V2ZW50TGlzdGVuZXJzLmJlZ2luKCksIGVuZCA9IG1fZXZlbnRMaXN0ZW5l
cnMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlz
cGF0Y2goW2Nvbm5lY3Rpb25JRCA9IGl0LT5maXJzdCwgZGVzdGluYXRpb25TdG9yYWdlQXJlYUlE
ID0gaXQtPnNlY29uZF0geworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2Nvbm5l
Y3Rpb25JRCA9ICppdCwgZGVzdGluYXRpb25TdG9yYWdlQXJlYUlEID0gbV9pZGVudGlmaWVyXSB7
CiAgICAgICAgICAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IElQQzo6Q29ubmVjdGlvbjo6Y29u
bmVjdGlvbihjb25uZWN0aW9uSUQpKQogICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24tPnNlbmQo
TWVzc2FnZXM6OlN0b3JhZ2VBcmVhTWFwOjpDbGVhckNhY2hlKCksIGRlc3RpbmF0aW9uU3RvcmFn
ZUFyZWFJRCk7CiAgICAgICAgIH0pOwpAQCAtMTkyLDkgKzE4MiwxMCBAQCB2b2lkIFN0b3JhZ2VB
cmVhOjpvcGVuRGF0YWJhc2VBbmRJbXBvcnRJdGVtc0lmTmVlZGVkKCkgY29uc3QKICAgICAgICAg
cmV0dXJuOwogCiAgICAgQVNTRVJUKG1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlLT5zdG9yYWdlTWFu
YWdlcigpLT5sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIoKSk7CisgICAgQVNTRVJUKG1fcXVl
dWUpOwogICAgIC8vIFdlIG9wZW4gdGhlIGRhdGFiYXNlIGhlcmUgZXZlbiBpZiB3ZSd2ZSBhbHJl
YWR5IGltcG9ydGVkIG91ciBpdGVtcyB0byBlbnN1cmUgdGhhdCB0aGUgZGF0YWJhc2UgaXMgb3Bl
biBpZiB3ZSBuZWVkIHRvIHdyaXRlIHRvIGl0LgogICAgIGlmICghbV9sb2NhbFN0b3JhZ2VEYXRh
YmFzZSkKLSAgICAgICAgbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZSA9IExvY2FsU3RvcmFnZURhdGFi
YXNlOjpjcmVhdGUobV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPnN0b3JhZ2VNYW5hZ2VyKCktPndv
cmtRdWV1ZSgpLCAqbV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPnN0b3JhZ2VNYW5hZ2VyKCktPmxv
Y2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcigpLCBtX3NlY3VyaXR5T3JpZ2luKTsKKyAgICAgICAg
bV9sb2NhbFN0b3JhZ2VEYXRhYmFzZSA9IExvY2FsU3RvcmFnZURhdGFiYXNlOjpjcmVhdGUoKm1f
cXVldWUsICptX2xvY2FsU3RvcmFnZU5hbWVzcGFjZS0+c3RvcmFnZU1hbmFnZXIoKS0+bG9jYWxT
dG9yYWdlRGF0YWJhc2VUcmFja2VyKCksIG1fc2VjdXJpdHlPcmlnaW4pOwogCiAgICAgaWYgKG1f
ZGlkSW1wb3J0SXRlbXNGcm9tRGF0YWJhc2UpCiAgICAgICAgIHJldHVybjsKQEAgLTIwNywxMyAr
MTk4LDIxIEBAIHZvaWQgU3RvcmFnZUFyZWE6OmRpc3BhdGNoRXZlbnRzKElQQzo6Q29ubmVjdGlv
bjo6VW5pcXVlSUQgc291cmNlQ29ubmVjdGlvbiwgdWluCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29w
Ojppc01haW4oKSk7CiAgICAgZm9yIChhdXRvIGl0ID0gbV9ldmVudExpc3RlbmVycy5iZWdpbigp
LCBlbmQgPSBtX2V2ZW50TGlzdGVuZXJzLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAg
ICAgc291cmNlU3RvcmFnZUFyZWFJRCA9IGl0LT5maXJzdCA9PSBzb3VyY2VDb25uZWN0aW9uID8g
c291cmNlU3RvcmFnZUFyZWFJRCA6IDA7CisgICAgICAgIHNvdXJjZVN0b3JhZ2VBcmVhSUQgPSAq
aXQgPT0gc291cmNlQ29ubmVjdGlvbiA/IHNvdXJjZVN0b3JhZ2VBcmVhSUQgOiAwOwogCi0gICAg
ICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY29ubmVjdGlvbklEID0gaXQtPmZpcnN0LCBz
b3VyY2VTdG9yYWdlQXJlYUlELCBkZXN0aW5hdGlvblN0b3JhZ2VBcmVhSUQgPSBpdC0+c2Vjb25k
LCBrZXkgPSBrZXkuaXNvbGF0ZWRDb3B5KCksIG9sZFZhbHVlID0gb2xkVmFsdWUuaXNvbGF0ZWRD
b3B5KCksIG5ld1ZhbHVlID0gbmV3VmFsdWUuaXNvbGF0ZWRDb3B5KCksIHVybFN0cmluZyA9IHVy
bFN0cmluZy5pc29sYXRlZENvcHkoKV0geworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0
Y2goW2Nvbm5lY3Rpb25JRCA9ICppdCwgc291cmNlU3RvcmFnZUFyZWFJRCwgZGVzdGluYXRpb25T
dG9yYWdlQXJlYUlEID0gbV9pZGVudGlmaWVyLCBrZXkgPSBrZXkuaXNvbGF0ZWRDb3B5KCksIG9s
ZFZhbHVlID0gb2xkVmFsdWUuaXNvbGF0ZWRDb3B5KCksIG5ld1ZhbHVlID0gbmV3VmFsdWUuaXNv
bGF0ZWRDb3B5KCksIHVybFN0cmluZyA9IHVybFN0cmluZy5pc29sYXRlZENvcHkoKV0gewogICAg
ICAgICAgICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBJUEM6OkNvbm5lY3Rpb246OmNvbm5lY3Rp
b24oY29ubmVjdGlvbklEKSkKICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLT5zZW5kKE1lc3Nh
Z2VzOjpTdG9yYWdlQXJlYU1hcDo6RGlzcGF0Y2hTdG9yYWdlRXZlbnQoc291cmNlU3RvcmFnZUFy
ZWFJRCwga2V5LCBvbGRWYWx1ZSwgbmV3VmFsdWUsIHVybFN0cmluZyksIGRlc3RpbmF0aW9uU3Rv
cmFnZUFyZWFJRCk7CiAgICAgICAgIH0pOwogICAgIH0KIH0KIAordm9pZCBTdG9yYWdlQXJlYTo6
c3luY1RvRGF0YWJhc2UoKQoreworICAgIGlmICghbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZS0+dXBkYXRlRGF0YWJh
c2UoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWEuaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYS5oCmluZGV4IDAwMDEwNzU0
YzdmNDFhMjY5MmU4MzE3YzU2Nzk4NWNhNzAwMjI3NzUuLjRkMzNjNGEyNjNlYjE2NWNjNjY4MzE1
ZjlkZjkwZDZhMjAwZjAxZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYS5oCkBAIC00OSwxNSArNDksMTUgQEAgcHVibGlj
OgogICAgIH5TdG9yYWdlQXJlYSgpOwogCiAgICAgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhJiBzZWN1cml0eU9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fc2VjdXJpdHlPcmlnaW47
IH0KKyAgICB1aW50NjRfdCBpZGVudGlmaWVyKCkgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAK
LSAgICB2b2lkIGFkZExpc3RlbmVyKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIHVpbnQ2NF90
IHN0b3JhZ2VNYXBJRCk7Ci0gICAgdm9pZCByZW1vdmVMaXN0ZW5lcihJUEM6OkNvbm5lY3Rpb246
OlVuaXF1ZUlELCB1aW50NjRfdCBzdG9yYWdlTWFwSUQpOwotICAgIGJvb2wgaGFzTGlzdGVuZXIo
SVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCwgdWludDY0X3Qgc3RvcmFnZU1hcElEKSBjb25zdDsK
KyAgICB2b2lkIGFkZExpc3RlbmVyKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQpOworICAgIHZv
aWQgcmVtb3ZlTGlzdGVuZXIoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCk7CisgICAgYm9vbCBo
YXNMaXN0ZW5lcihJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGNvbm5lY3Rpb25JRCkgY29uc3Q7
CiAKICAgICBSZWY8U3RvcmFnZUFyZWE+IGNsb25lKCkgY29uc3Q7CiAKICAgICB2b2lkIHNldEl0
ZW0oSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBzb3VyY2VDb25uZWN0aW9uLCB1aW50NjRfdCBz
b3VyY2VTdG9yYWdlQXJlYUlELCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1
ZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGJvb2wmIHF1b3RhRXhjZXB0aW9uKTsKLSAgICB2
b2lkIHNldEl0ZW1zKGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+Jik7CiAgICAgdm9pZCBy
ZW1vdmVJdGVtKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgc291cmNlQ29ubmVjdGlvbiwgdWlu
dDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmlu
ZyYgdXJsU3RyaW5nKTsKICAgICB2b2lkIGNsZWFyKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQg
c291cmNlQ29ubmVjdGlvbiwgdWludDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwgY29uc3QgU3Ry
aW5nJiB1cmxTdHJpbmcpOwogCkBAIC02OCw2ICs2OCwxMCBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IG9wZW5EYXRhYmFzZUFuZEltcG9ydEl0ZW1zSWZOZWVkZWQoKSBjb25zdDsKIAorICAgIHZvaWQg
c2V0V29ya1F1ZXVlKFJlZlB0cjxXb3JrUXVldWU+JiYgcXVldWUpIHsgbV9xdWV1ZSA9IFdURk1v
dmUocXVldWUpOyB9CisKKyAgICB2b2lkIHN5bmNUb0RhdGFiYXNlKCk7CisKIHByaXZhdGU6CiAg
ICAgU3RvcmFnZUFyZWEoTG9jYWxTdG9yYWdlTmFtZXNwYWNlKiwgY29uc3QgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhJiwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKIApAQCAtODIsNyArODYs
MTAgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX3F1b3RhSW5CeXRlcyB7IDAgfTsKIAogICAg
IFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlTWFwPiBtX3N0b3JhZ2VNYXA7Ci0gICAgSGFzaFNldDxz
dGQ6OnBhaXI8SVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCwgdWludDY0X3Q+PiBtX2V2ZW50TGlz
dGVuZXJzOworICAgIEhhc2hTZXQ8SVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRD4gbV9ldmVudExp
c3RlbmVyczsKKworICAgIHVpbnQ2NF90IG1faWRlbnRpZmllcjsKKyAgICBSZWZQdHI8V29ya1F1
ZXVlPiBtX3F1ZXVlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2Vy
LmNwcAppbmRleCAzZTNlMGI0NjU4ZTIyOGYxMjI1OTU3MjgyMTMxNWM5NzQ1Y2I2NjBkLi42NGRi
NDk0YmFmMGExNzBmMDBmNGE0ZDdmOWZmMjcxZTVmMjY1YTZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5j
cHAKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS5o
IgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFyZWFNYXBNZXNz
YWdlcy5oIgotI2luY2x1ZGUgIlN0b3JhZ2VNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJU
cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJv
eHkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgpAQCAtNDEsNyAr
NDAsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dEVuY29kaW5nLmg+CiAjaW5jbHVkZSA8bWVt
b3J5PgogI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KLSNpbmNsdWRlIDx3dGYvdGhyZWFkcy9C
aW5hcnlTZW1hcGhvcmUuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKQEAgLTUwLDU0MCArNDgsMjQyIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
Y29uc3QgdW5zaWduZWQgU3RvcmFnZU1hbmFnZXI6OmxvY2FsU3RvcmFnZURhdGFiYXNlUXVvdGFJ
bkJ5dGVzID0gNSAqIDEwMjQgKiAxMDI0OwogCiBTdG9yYWdlTWFuYWdlcjo6U3RvcmFnZU1hbmFn
ZXIoU3RyaW5nJiYgbG9jYWxTdG9yYWdlRGlyZWN0b3J5KQotICAgIDogbV9xdWV1ZShXb3JrUXVl
dWU6OmNyZWF0ZSgiY29tLmFwcGxlLldlYktpdC5TdG9yYWdlTWFuYWdlciIpKQogewotICAgIEFT
U0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7
CiAKLSAgICAvLyBNYWtlIHN1cmUgdGhlIGVuY29kaW5nIGlzIGluaXRpYWxpemVkIGJlZm9yZSB3
ZSBzdGFydCBkaXNwYXRjaGluZyB0aGluZ3MgdG8gdGhlIHF1ZXVlLgotICAgIFVURjhFbmNvZGlu
ZygpOwogICAgIGlmICghbG9jYWxTdG9yYWdlRGlyZWN0b3J5LmlzTnVsbCgpKQotICAgICAgICBt
X2xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlciA9IExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tl
cjo6Y3JlYXRlKG1fcXVldWUuY29weVJlZigpLCBXVEZNb3ZlKGxvY2FsU3RvcmFnZURpcmVjdG9y
eSkpOworICAgICAgICBtX2xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlciA9IExvY2FsU3RvcmFn
ZURhdGFiYXNlVHJhY2tlcjo6Y3JlYXRlKFdURk1vdmUobG9jYWxTdG9yYWdlRGlyZWN0b3J5KSk7
CiB9CiAKIFN0b3JhZ2VNYW5hZ2VyOjp+U3RvcmFnZU1hbmFnZXIoKQogewotICAgIEFTU0VSVChS
dW5Mb29wOjppc01haW4oKSk7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiB9CiAK
IHZvaWQgU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2
NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKQogewotICAgIEFT
U0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc3RvcmFnZU5hbWVzcGFjZUlELCBxdW90YUlu
Qnl0ZXNdKCkgbXV0YWJsZSB7Ci0gICAgICAgIG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLmVu
c3VyZShzdG9yYWdlTmFtZXNwYWNlSUQsIFtxdW90YUluQnl0ZXNdIHsKLSAgICAgICAgICAgIHJl
dHVybiBTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZTo6Y3JlYXRlKHF1b3RhSW5CeXRlcyk7Ci0gICAg
ICAgIH0pOwotICAgIH0pOwotfQorICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi12
b2lkIFN0b3JhZ2VNYW5hZ2VyOjpkZXN0cm95U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodWludDY0
X3Qgc3RvcmFnZU5hbWVzcGFjZUlEKQotewotICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7
Ci0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgc3RvcmFnZU5hbWVzcGFjZUlEXSB7Ci0gICAgICAgIEFTU0VSVChtX3Nlc3Npb25TdG9y
YWdlTmFtZXNwYWNlcy5jb250YWlucyhzdG9yYWdlTmFtZXNwYWNlSUQpKTsKLSAgICAgICAgaWYg
KGF1dG8qIHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlID0gbV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFj
ZXMuZ2V0KHN0b3JhZ2VOYW1lc3BhY2VJRCkpIHsKLSAgICAgICAgICAgIGlmIChzZXNzaW9uU3Rv
cmFnZU5hbWVzcGFjZS0+YWxsb3dlZENvbm5lY3Rpb25zKCkuaXNFbXB0eSgpKQotICAgICAgICAg
ICAgICAgIG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLnJlbW92ZShzdG9yYWdlTmFtZXNwYWNl
SUQpOwotICAgICAgICB9CisgICAgbV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMuZW5zdXJlKHN0
b3JhZ2VOYW1lc3BhY2VJRCwgW3F1b3RhSW5CeXRlc10geworICAgICAgICByZXR1cm4gU2Vzc2lv
blN0b3JhZ2VOYW1lc3BhY2U6OmNyZWF0ZShxdW90YUluQnl0ZXMpOwogICAgIH0pOwogfQogCi12
b2lkIFN0b3JhZ2VNYW5hZ2VyOjphZGRBbGxvd2VkU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VDb25u
ZWN0aW9uKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgSVBDOjpDb25uZWN0aW9uJiBhbGxv
d2VkQ29ubmVjdGlvbikKK3ZvaWQgU3RvcmFnZU1hbmFnZXI6OmRlc3Ryb3lTZXNzaW9uU3RvcmFn
ZU5hbWVzcGFjZSh1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQpCiB7Ci0gICAgQVNTRVJUKFJ1
bkxvb3A6OmlzTWFpbigpKTsKLSAgICBhdXRvIGFsbG93ZWRDb25uZWN0aW9uSUQgPSBhbGxvd2Vk
Q29ubmVjdGlvbi51bmlxdWVJRCgpOwotICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9jb25uZWN0aW9u
cy5hZGQoYWxsb3dlZENvbm5lY3Rpb25JRCk7Ci0gICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5
KQotICAgICAgICBhbGxvd2VkQ29ubmVjdGlvbi5hZGRXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIo
TWVzc2FnZXM6OlN0b3JhZ2VNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcXVldWUu
Z2V0KCksIHRoaXMpOwotCi0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgYWxsb3dlZENvbm5lY3Rpb25JRCwgc3RvcmFnZU5hbWVzcGFj
ZUlEXSgpIG11dGFibGUgewotICAgICAgICBBU1NFUlQobV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFj
ZXMuY29udGFpbnMoc3RvcmFnZU5hbWVzcGFjZUlEKSk7Ci0KLSAgICAgICAgbV9zZXNzaW9uU3Rv
cmFnZU5hbWVzcGFjZXMuZ2V0KHN0b3JhZ2VOYW1lc3BhY2VJRCktPmFkZEFsbG93ZWRDb25uZWN0
aW9uKGFsbG93ZWRDb25uZWN0aW9uSUQpOwotICAgIH0pOwotfQorICAgIEFTU0VSVCghUnVuTG9v
cDo6aXNNYWluKCkpOwogCi12b2lkIFN0b3JhZ2VNYW5hZ2VyOjpyZW1vdmVBbGxvd2VkU2Vzc2lv
blN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0aW9uKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwg
SVBDOjpDb25uZWN0aW9uJiBhbGxvd2VkQ29ubmVjdGlvbikKLXsKLSAgICBBU1NFUlQoUnVuTG9v
cDo6aXNNYWluKCkpOwotICAgIGF1dG8gYWxsb3dlZENvbm5lY3Rpb25JRCA9IGFsbG93ZWRDb25u
ZWN0aW9uLnVuaXF1ZUlEKCk7Ci0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgYWxsb3dlZENvbm5lY3Rpb25JRCwgc3RvcmFnZU5hbWVz
cGFjZUlEXSgpIG11dGFibGUgewotICAgICAgICBBU1NFUlQobV9zZXNzaW9uU3RvcmFnZU5hbWVz
cGFjZXMuY29udGFpbnMoc3RvcmFnZU5hbWVzcGFjZUlEKSk7Ci0gICAgICAgIGlmIChhdXRvKiBz
ZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSA9IG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLmdldChz
dG9yYWdlTmFtZXNwYWNlSUQpKQotICAgICAgICAgICAgc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2Ut
PnJlbW92ZUFsbG93ZWRDb25uZWN0aW9uKGFsbG93ZWRDb25uZWN0aW9uSUQpOwotICAgIH0pOwor
ICAgIEFTU0VSVChtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlcy5jb250YWlucyhzdG9yYWdlTmFt
ZXNwYWNlSUQpKTsKKyAgICBpZiAoYXV0byogc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UgPSBtX3Nl
c3Npb25TdG9yYWdlTmFtZXNwYWNlcy5nZXQoc3RvcmFnZU5hbWVzcGFjZUlEKSkKKyAgICAgICAg
bV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMucmVtb3ZlKHN0b3JhZ2VOYW1lc3BhY2VJRCk7CiB9
CiAKIHZvaWQgU3RvcmFnZU1hbmFnZXI6OmNsb25lU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodWlu
dDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCB1aW50NjRfdCBuZXdTdG9yYWdlTmFtZXNwYWNlSUQp
CiB7Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBtX3F1ZXVlLT5kaXNwYXRj
aChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzdG9yYWdlTmFtZXNwYWNl
SUQsIG5ld1N0b3JhZ2VOYW1lc3BhY2VJRF0gewotICAgICAgICBTZXNzaW9uU3RvcmFnZU5hbWVz
cGFjZSogc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UgPSBtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNl
cy5nZXQoc3RvcmFnZU5hbWVzcGFjZUlEKTsKLSAgICAgICAgaWYgKCFzZXNzaW9uU3RvcmFnZU5h
bWVzcGFjZSkgewotICAgICAgICAgICAgLy8gRklYTUU6IFdlIGNhbiBnZXQgaW50byB0aGlzIHNp
dHVhdGlvbiBpZiBzb21lb25lIGNsb3NlcyB0aGUgb3JpZ2luYXRpbmcgcGFnZSBmcm9tIHdpdGhp
biBhCi0gICAgICAgICAgICAvLyBjcmVhdGVOZXdQYWdlIGNhbGxiYWNrLiBXZSBiYWlsIGZvciBu
b3csIGJ1dCB3ZSBzaG91bGQgcmVhbGx5IGZpbmQgYSB3YXkgdG8ga2VlcCB0aGUgc2Vzc2lvbiBz
dG9yYWdlIGFsaXZlCi0gICAgICAgICAgICAvLyBzbyB3ZSB3ZSdsbCBjbG9uZSB0aGUgc2Vzc2lv
biBzdG9yYWdlIGNvcnJlY3RseS4KLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQorICAg
IEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgICAgIFNlc3Npb25TdG9yYWdlTmFt
ZXNwYWNlKiBuZXdTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSA9IG1fc2Vzc2lvblN0b3JhZ2VOYW1l
c3BhY2VzLmdldChuZXdTdG9yYWdlTmFtZXNwYWNlSUQpOwotICAgICAgICBBU1NFUlQobmV3U2Vz
c2lvblN0b3JhZ2VOYW1lc3BhY2UpOworICAgIFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKiBzZXNz
aW9uU3RvcmFnZU5hbWVzcGFjZSA9IG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLmdldChzdG9y
YWdlTmFtZXNwYWNlSUQpOworICAgIGlmICghc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UpCisgICAg
ICAgIHJldHVybjsKIAotICAgICAgICBzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS0+Y2xvbmVUbygq
bmV3U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UpOworICAgIFNlc3Npb25TdG9yYWdlTmFtZXNwYWNl
KiBuZXdTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSA9IGdldE9yQ3JlYXRlU2Vzc2lvblN0b3JhZ2VO
YW1lc3BhY2UobmV3U3RvcmFnZU5hbWVzcGFjZUlEKTsKKyAgICBBU1NFUlQobmV3U2Vzc2lvblN0
b3JhZ2VOYW1lc3BhY2UpOwogCi0gICAgICAgIGlmICghbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRy
YWNrZXIpIHsKLSAgICAgICAgICAgIGlmIChhdXRvKiBsb2NhbFN0b3JhZ2VOYW1lc3BhY2UgPSBt
X2xvY2FsU3RvcmFnZU5hbWVzcGFjZXMuZ2V0KHN0b3JhZ2VOYW1lc3BhY2VJRCkpIHsKLSAgICAg
ICAgICAgICAgICBMb2NhbFN0b3JhZ2VOYW1lc3BhY2UqIG5ld2xvY2FsU3RvcmFnZU5hbWVzcGFj
ZSA9IGdldE9yQ3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKG5ld1N0b3JhZ2VOYW1lc3BhY2VJ
RCk7Ci0gICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlTmFtZXNwYWNlLT5jbG9uZVRvKCpuZXds
b2NhbFN0b3JhZ2VOYW1lc3BhY2UpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfSk7
Ci19Ci0KLXZvaWQgU3RvcmFnZU1hbmFnZXI6OnByb2Nlc3NEaWRDbG9zZUNvbm5lY3Rpb24oSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQotewotICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4o
KSk7Ci0gICAgaWYgKG1fY29ubmVjdGlvbnMucmVtb3ZlKGNvbm5lY3Rpb24udW5pcXVlSUQoKSkp
Ci0gICAgICAgIGNvbm5lY3Rpb24ucmVtb3ZlV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKE1lc3Nh
Z2VzOjpTdG9yYWdlTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKLQotICAgIG1fcXVl
dWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbm5l
Y3Rpb25JRCA9IGNvbm5lY3Rpb24udW5pcXVlSUQoKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgVmVj
dG9yPHN0ZDo6cGFpcjxJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCB1aW50NjRfdD4+IGNvbm5l
Y3Rpb25BbmRTdG9yYWdlTWFwSURQYWlyc1RvUmVtb3ZlOwotICAgICAgICBmb3IgKGF1dG8mIHN0
b3JhZ2VBcmVhIDogbV9zdG9yYWdlQXJlYXNCeUNvbm5lY3Rpb24pIHsKLSAgICAgICAgICAgIGlm
IChzdG9yYWdlQXJlYS5rZXkuZmlyc3QgIT0gY29ubmVjdGlvbklEKQotICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBzdG9yYWdlQXJlYS52YWx1ZS0+
cmVtb3ZlTGlzdGVuZXIoc3RvcmFnZUFyZWEua2V5LmZpcnN0LCBzdG9yYWdlQXJlYS5rZXkuc2Vj
b25kKTsKLSAgICAgICAgICAgIGNvbm5lY3Rpb25BbmRTdG9yYWdlTWFwSURQYWlyc1RvUmVtb3Zl
LmFwcGVuZChzdG9yYWdlQXJlYS5rZXkpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBm
b3IgKGF1dG8mIHBhaXIgOiBjb25uZWN0aW9uQW5kU3RvcmFnZU1hcElEUGFpcnNUb1JlbW92ZSkK
LSAgICAgICAgICAgIG1fc3RvcmFnZUFyZWFzQnlDb25uZWN0aW9uLnJlbW92ZShwYWlyKTsKLQot
ICAgICAgICBWZWN0b3I8dWludDY0X3Q+IHNlc3Npb25TdG9yYWdlTmFtZVNwYWNlSURzVG9SZW1v
dmU7Ci0gICAgICAgIGZvciAoYXV0byYgc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UgOiBtX3Nlc3Np
b25TdG9yYWdlTmFtZXNwYWNlcykgewotICAgICAgICAgICAgaWYgKHNlc3Npb25TdG9yYWdlTmFt
ZXNwYWNlLnZhbHVlLT5hbGxvd2VkQ29ubmVjdGlvbnMoKS5jb250YWlucyhjb25uZWN0aW9uSUQp
KQotICAgICAgICAgICAgICAgIHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlLnZhbHVlLT5yZW1vdmVB
bGxvd2VkQ29ubmVjdGlvbihjb25uZWN0aW9uSUQpOwotICAgICAgICAgICAgCi0gICAgICAgICAg
ICBpZiAoc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UudmFsdWUtPmFsbG93ZWRDb25uZWN0aW9ucygp
LmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICBzZXNzaW9uU3RvcmFnZU5hbWVTcGFjZUlEc1Rv
UmVtb3ZlLmFwcGVuZChzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS5rZXkpOwotICAgICAgICB9Ci0g
ICAgICAgIAotICAgICAgICBmb3IgKGF1dG8gaWQgOiBzZXNzaW9uU3RvcmFnZU5hbWVTcGFjZUlE
c1RvUmVtb3ZlKQotICAgICAgICAgICAgbV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMucmVtb3Zl
KGlkKTsKLSAgICB9KTsKKyAgICBzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS0+Y2xvbmVUbygqbmV3
U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UpOwogfQogCiB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpnZXRT
ZXNzaW9uU3RvcmFnZU9yaWdpbnMoRnVuY3Rpb248dm9pZChIYXNoU2V0PFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgQVNTRVJUKFJ1
bkxvb3A6OmlzTWFpbigpKTsKLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICBIYXNoU2V0PFNlY3VyaXR5T3JpZ2lu
RGF0YT4gb3JpZ2luczsKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgICAg
ICBmb3IgKGNvbnN0IGF1dG8mIHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlIDogbV9zZXNzaW9uU3Rv
cmFnZU5hbWVzcGFjZXMudmFsdWVzKCkpIHsKLSAgICAgICAgICAgIGZvciAoYXV0byYgb3JpZ2lu
IDogc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UtPm9yaWdpbnMoKSkKLSAgICAgICAgICAgICAgICBv
cmlnaW5zLmFkZChjcm9zc1RocmVhZENvcHkob3JpZ2luKSk7Ci0gICAgICAgIH0KKyAgICBIYXNo
U2V0PFNlY3VyaXR5T3JpZ2luRGF0YT4gb3JpZ2luczsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHNl
c3Npb25TdG9yYWdlTmFtZXNwYWNlIDogbV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMudmFsdWVz
KCkpIHsKKyAgICAgICAgZm9yIChhdXRvJiBvcmlnaW4gOiBzZXNzaW9uU3RvcmFnZU5hbWVzcGFj
ZS0+b3JpZ2lucygpKQorICAgICAgICBvcmlnaW5zLmFkZChjcm9zc1RocmVhZENvcHkob3JpZ2lu
KSk7CisgICAgfQogCi0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbb3JpZ2lucyA9
IFdURk1vdmUob3JpZ2lucyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZN
b3ZlKG9yaWdpbnMpKTsKLSAgICAgICAgfSk7CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNo
KFtvcmlnaW5zID0gV1RGTW92ZShvcmlnaW5zKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZShvcmlnaW5zKSk7CiAgICAgfSk7CiB9CiAKIHZvaWQgU3RvcmFnZU1hbmFnZXI6
OmRlbGV0ZVNlc3Npb25TdG9yYWdlT3JpZ2lucyhGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBtX3F1ZXVl
LT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewotICAg
ICAgICBmb3IgKGF1dG8mIHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlIDogbV9zZXNzaW9uU3RvcmFn
ZU5hbWVzcGFjZXMudmFsdWVzKCkpCi0gICAgICAgICAgICBzZXNzaW9uU3RvcmFnZU5hbWVzcGFj
ZS0+Y2xlYXJBbGxTdG9yYWdlQXJlYXMoKTsKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigp
KTsKIAotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwotICAgIH0pOworICAgIGZvciAoYXV0byYgc2Vzc2lvblN0b3JhZ2VOYW1lc3Bh
Y2UgOiBtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkKKyAgICAgICAgc2Vzc2lv
blN0b3JhZ2VOYW1lc3BhY2UtPmNsZWFyQWxsU3RvcmFnZUFyZWFzKCk7CisKKyAgICBSdW5Mb29w
OjptYWluKCkuZGlzcGF0Y2goV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lk
IFN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVTZXNzaW9uU3RvcmFnZUVudHJpZXNGb3JPcmlnaW5zKGNv
bnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiBvcmlnaW5zLCBGdW5jdGlv
bjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgQVNTRVJUKFJ1bkxvb3A6Omlz
TWFpbigpKTsKLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCBjb3BpZWRPcmlnaW5zID0gY3Jvc3NUaHJlYWRDb3B5KG9yaWdpbnMpLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUg
ewotICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IGNvcGllZE9yaWdpbnMpIHsKLSAgICAgICAg
ICAgIGZvciAoYXV0byYgc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UgOiBtX3Nlc3Npb25TdG9yYWdl
TmFtZXNwYWNlcy52YWx1ZXMoKSkKLSAgICAgICAgICAgICAgICBzZXNzaW9uU3RvcmFnZU5hbWVz
cGFjZS0+Y2xlYXJTdG9yYWdlQXJlYXNNYXRjaGluZ09yaWdpbihvcmlnaW4pOwotICAgICAgICB9
CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICAgICAgUnVuTG9vcDo6bWFp
bigpLmRpc3BhdGNoKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICB9KTsKKyAgICBm
b3IgKGF1dG8mIG9yaWdpbiA6IG9yaWdpbnMpIHsKKyAgICAgICAgZm9yIChhdXRvJiBzZXNzaW9u
U3RvcmFnZU5hbWVzcGFjZSA6IG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLnZhbHVlcygpKQor
ICAgICAgICAgICAgc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UtPmNsZWFyU3RvcmFnZUFyZWFzTWF0
Y2hpbmdPcmlnaW4ob3JpZ2luKTsKKyAgICB9CisKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0
Y2goV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIFN0b3JhZ2VNYW5hZ2Vy
OjpnZXRMb2NhbFN0b3JhZ2VPcmlnaW5zKEZ1bmN0aW9uPHZvaWQoSGFzaFNldDxXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGE+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIEFTU0VS
VChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgSGFzaFNldDxTZWN1cml0eU9y
aWdpbkRhdGE+IG9yaWdpbnM7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAg
ICAgICAgaWYgKG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyKSB7Ci0gICAgICAgICAgICBm
b3IgKGF1dG8mIG9yaWdpbiA6IG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLT5vcmlnaW5z
KCkpCisgICAgSGFzaFNldDxTZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdpbnM7CisgICAgaWYgKG1f
bG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyKSB7CisgICAgZm9yIChhdXRvJiBvcmlnaW4gOiBt
X2xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci0+b3JpZ2lucygpKQorICAgICAgICBvcmlnaW5z
LmFkZChvcmlnaW4uaXNvbGF0ZWRDb3B5KCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIGZvciAo
Y29uc3QgYXV0byYgbG9jYWxTdG9yYWdlTmFtZVNwYWNlIDogbV9sb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2VzLnZhbHVlcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IGxvY2FsU3Rv
cmFnZU5hbWVTcGFjZS0+ZXBoZW1lcmFsT3JpZ2lucygpKQogICAgICAgICAgICAgICAgIG9yaWdp
bnMuYWRkKG9yaWdpbi5pc29sYXRlZENvcHkoKSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICBmb3IgKGNvbnN0IGF1dG8mIGxvY2FsU3RvcmFnZU5hbWVTcGFjZSA6IG1fbG9jYWxTdG9y
YWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkgewotICAgICAgICAgICAgICAgIGZvciAoYXV0byYgb3Jp
Z2luIDogbG9jYWxTdG9yYWdlTmFtZVNwYWNlLT5lcGhlbWVyYWxPcmlnaW5zKCkpCi0gICAgICAg
ICAgICAgICAgICAgIG9yaWdpbnMuYWRkKG9yaWdpbi5pc29sYXRlZENvcHkoKSk7Ci0gICAgICAg
ICAgICB9CiAgICAgICAgIH0KKyAgICB9CiAKLSAgICAgICAgZm9yIChhdXRvJiB0cmFuc2llbnRM
b2NhbFN0b3JhZ2VOYW1lc3BhY2UgOiBtX3RyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZXMu
dmFsdWVzKCkpIHsKLSAgICAgICAgICAgIGZvciAoYXV0byYgb3JpZ2luIDogdHJhbnNpZW50TG9j
YWxTdG9yYWdlTmFtZXNwYWNlLT5vcmlnaW5zKCkpCi0gICAgICAgICAgICAgICAgb3JpZ2lucy5h
ZGQob3JpZ2luLmlzb2xhdGVkQ29weSgpKTsKLSAgICAgICAgfQorICAgIGZvciAoYXV0byYgdHJh
bnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlIDogbV90cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1l
c3BhY2VzLnZhbHVlcygpKSB7CisgICAgICAgIGZvciAoYXV0byYgb3JpZ2luIDogdHJhbnNpZW50
TG9jYWxTdG9yYWdlTmFtZXNwYWNlLT5vcmlnaW5zKCkpCisgICAgICAgICAgICBvcmlnaW5zLmFk
ZChvcmlnaW4uaXNvbGF0ZWRDb3B5KCkpOworICAgIH0KIAotICAgICAgICBSdW5Mb29wOjptYWlu
KCkuZGlzcGF0Y2goW29yaWdpbnMgPSBXVEZNb3ZlKG9yaWdpbnMpLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShvcmlnaW5zKSk7Ci0gICAgICAgIH0pOworICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbb3JpZ2lucyA9IFdURk1vdmUob3JpZ2lucyksIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Cisg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUob3JpZ2lucykpOwogICAgIH0pOwogfQog
CiB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpnZXRMb2NhbFN0b3JhZ2VPcmlnaW5EZXRhaWxzKEZ1bmN0
aW9uPHZvaWQoVmVjdG9yPExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6T3JpZ2luRGV0YWls
cz4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFp
bigpKTsKLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XSgpIG11dGFibGUgewotICAgICAgICBWZWN0b3I8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2Vy
OjpPcmlnaW5EZXRhaWxzPiBvcmlnaW5EZXRhaWxzOwotICAgICAgICBpZiAobV9sb2NhbFN0b3Jh
Z2VEYXRhYmFzZVRyYWNrZXIpCi0gICAgICAgICAgICBvcmlnaW5EZXRhaWxzID0gbV9sb2NhbFN0
b3JhZ2VEYXRhYmFzZVRyYWNrZXItPm9yaWdpbkRldGFpbHMoKS5pc29sYXRlZENvcHkoKTsKLQot
ICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW29yaWdpbkRldGFpbHMgPSBXVEZNb3Zl
KG9yaWdpbkRldGFpbHMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92
ZShvcmlnaW5EZXRhaWxzKSk7Ci0gICAgICAgIH0pOwotICAgIH0pOwotfQotCi12b2lkIFN0b3Jh
Z2VNYW5hZ2VyOjpkZWxldGVMb2NhbFN0b3JhZ2VFbnRyaWVzRm9yT3JpZ2luKGNvbnN0IFNlY3Vy
aXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4pCi17Ci0gICAgQVNTRVJUKFJ1bkxvb3A6Omlz
TWFpbigpKTsKLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCBjb3BpZWRPcmlnaW4gPSBzZWN1cml0eU9yaWdpbi5pc29sYXRlZENvcHko
KV0oKSBtdXRhYmxlIHsKLSAgICAgICAgZm9yIChhdXRvJiBsb2NhbFN0b3JhZ2VOYW1lc3BhY2Ug
OiBtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZXMudmFsdWVzKCkpCi0gICAgICAgICAgICBsb2NhbFN0
b3JhZ2VOYW1lc3BhY2UtPmNsZWFyU3RvcmFnZUFyZWFzTWF0Y2hpbmdPcmlnaW4oY29waWVkT3Jp
Z2luKTsKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgICAgICBmb3IgKGF1
dG8mIHRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSA6IG1fdHJhbnNpZW50TG9jYWxTdG9y
YWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkKLSAgICAgICAgICAgIHRyYW5zaWVudExvY2FsU3RvcmFn
ZU5hbWVzcGFjZS0+Y2xlYXJTdG9yYWdlQXJlYXNNYXRjaGluZ09yaWdpbihjb3BpZWRPcmlnaW4p
OworICAgIFZlY3RvcjxMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6Ok9yaWdpbkRldGFpbHM+
IG9yaWdpbkRldGFpbHM7CisgICAgaWYgKG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyKQor
ICAgICAgICBvcmlnaW5EZXRhaWxzID0gY3Jvc3NUaHJlYWRDb3B5KG1fbG9jYWxTdG9yYWdlRGF0
YWJhc2VUcmFja2VyLT5vcmlnaW5EZXRhaWxzKCkpOwogCi0gICAgICAgIGlmIChtX2xvY2FsU3Rv
cmFnZURhdGFiYXNlVHJhY2tlcikKLSAgICAgICAgICAgIG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VU
cmFja2VyLT5kZWxldGVEYXRhYmFzZVdpdGhPcmlnaW4oY29waWVkT3JpZ2luKTsKKyAgICBSdW5M
b29wOjptYWluKCkuZGlzcGF0Y2goW29yaWdpbkRldGFpbHMgPSBXVEZNb3ZlKG9yaWdpbkRldGFp
bHMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11
dGFibGUgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKG9yaWdpbkRldGFpbHMp
KTsKICAgICB9KTsKIH0KIAogdm9pZCBTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlTG9jYWxTdG9yYWdl
T3JpZ2luc01vZGlmaWVkU2luY2UoV2FsbFRpbWUgdGltZSwgRnVuY3Rpb248dm9pZCgpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewotICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAg
bV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
dGltZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBt
dXRhYmxlIHsKLSAgICAgICAgaWYgKG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyKSB7Ci0g
ICAgICAgICAgICBhdXRvIG9yaWdpbnNUb0RlbGV0ZSA9IG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VU
cmFja2VyLT5kYXRhYmFzZXNNb2RpZmllZFNpbmNlKHRpbWUpOwotICAgICAgICAgICAgCi0gICAg
ICAgICAgICBmb3IgKGF1dG8mIHRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSA6IG1fdHJh
bnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkKLSAgICAgICAgICAgICAgICB0
cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPmNsZWFyQWxsU3RvcmFnZUFyZWFzKCk7Ci0K
LSAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgb3JpZ2luIDogb3JpZ2luc1RvRGVsZXRlKSB7
Ci0gICAgICAgICAgICAgICAgZm9yIChhdXRvJiBsb2NhbFN0b3JhZ2VOYW1lc3BhY2UgOiBtX2xv
Y2FsU3RvcmFnZU5hbWVzcGFjZXMudmFsdWVzKCkpCi0gICAgICAgICAgICAgICAgICAgIGxvY2Fs
U3RvcmFnZU5hbWVzcGFjZS0+Y2xlYXJTdG9yYWdlQXJlYXNNYXRjaGluZ09yaWdpbihvcmlnaW4p
OwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIG1fbG9jYWxTdG9yYWdlRGF0YWJh
c2VUcmFja2VyLT5kZWxldGVEYXRhYmFzZVdpdGhPcmlnaW4ob3JpZ2luKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGZvciAoYXV0byYgbG9jYWxTdG9yYWdl
TmFtZXNwYWNlIDogbV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2VzLnZhbHVlcygpKQotICAgICAgICAg
ICAgICAgIGxvY2FsU3RvcmFnZU5hbWVzcGFjZS0+Y2xlYXJBbGxTdG9yYWdlQXJlYXMoKTsKLSAg
ICAgICAgfQorICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgICAgIFJ1bkxv
b3A6Om1haW4oKS5kaXNwYXRjaChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgfSk7
Ci19CisgICAgaWYgKG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyKSB7CisgICAgICAgIGF1
dG8gb3JpZ2luc1RvRGVsZXRlID0gbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXItPmRhdGFi
YXNlc01vZGlmaWVkU2luY2UodGltZSk7CiAKLXZvaWQgU3RvcmFnZU1hbmFnZXI6OmRlbGV0ZUxv
Y2FsU3RvcmFnZUVudHJpZXNGb3JPcmlnaW5zKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGE+JiBvcmlnaW5zLCBGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCi17Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBtX3F1ZXVlLT5kaXNw
YXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb3BpZWRPcmlnaW5z
ID0gY3Jvc3NUaHJlYWRDb3B5KG9yaWdpbnMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICBmb3IgKGF1dG8mIG9yaWdp
biA6IGNvcGllZE9yaWdpbnMpIHsKKyAgICAgICAgZm9yIChhdXRvJiB0cmFuc2llbnRMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UgOiBtX3RyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZXMudmFsdWVz
KCkpCisgICAgICAgICAgICB0cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPmNsZWFyQWxs
U3RvcmFnZUFyZWFzKCk7CisKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBvcmlnaW4gOiBvcmln
aW5zVG9EZWxldGUpIHsKICAgICAgICAgICAgIGZvciAoYXV0byYgbG9jYWxTdG9yYWdlTmFtZXNw
YWNlIDogbV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2VzLnZhbHVlcygpKQogICAgICAgICAgICAgICAg
IGxvY2FsU3RvcmFnZU5hbWVzcGFjZS0+Y2xlYXJTdG9yYWdlQXJlYXNNYXRjaGluZ09yaWdpbihv
cmlnaW4pOwotCi0gICAgICAgICAgICBmb3IgKGF1dG8mIHRyYW5zaWVudExvY2FsU3RvcmFnZU5h
bWVzcGFjZSA6IG1fdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkKLSAg
ICAgICAgICAgICAgICB0cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPmNsZWFyU3RvcmFn
ZUFyZWFzTWF0Y2hpbmdPcmlnaW4ob3JpZ2luKTsKLQotICAgICAgICAgICAgaWYgKG1fbG9jYWxT
dG9yYWdlRGF0YWJhc2VUcmFja2VyKQotICAgICAgICAgICAgICAgIG1fbG9jYWxTdG9yYWdlRGF0
YWJhc2VUcmFja2VyLT5kZWxldGVEYXRhYmFzZVdpdGhPcmlnaW4ob3JpZ2luKTsKKyAgICAgICAg
ICAgIG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLT5kZWxldGVEYXRhYmFzZVdpdGhPcmln
aW4ob3JpZ2luKTsKICAgICAgICAgfQotCi0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRj
aChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgU3RvcmFn
ZU1hbmFnZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU1hcChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCwgdWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBT
ZWN1cml0eU9yaWdpbkRhdGEmJiBzZWN1cml0eU9yaWdpbkRhdGEpCi17Ci0gICAgQVNTRVJUKCFS
dW5Mb29wOjppc01haW4oKSk7Ci0gICAgYXV0byBjb25uZWN0aW9uSUQgPSBjb25uZWN0aW9uLnVu
aXF1ZUlEKCk7Ci0gICAgc3RkOjpwYWlyPElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIHVpbnQ2
NF90PiBjb25uZWN0aW9uQW5kU3RvcmFnZU1hcElEUGFpcihjb25uZWN0aW9uSUQsIHN0b3JhZ2VN
YXBJRCk7Ci0KLSAgICBBU1NFUlQoKEhhc2hNYXA8c3RkOjpwYWlyPElQQzo6Q29ubmVjdGlvbjo6
VW5pcXVlSUQsIHVpbnQ2NF90PiwgUmVmUHRyPFN0b3JhZ2VBcmVhPj46OmlzVmFsaWRLZXkoY29u
bmVjdGlvbkFuZFN0b3JhZ2VNYXBJRFBhaXIpKSk7Ci0KLSAgICBhdXRvIHJlc3VsdCA9IG1fc3Rv
cmFnZUFyZWFzQnlDb25uZWN0aW9uLmFkZChjb25uZWN0aW9uQW5kU3RvcmFnZU1hcElEUGFpciwg
bnVsbHB0cik7Ci0gICAgQVNTRVJUKHJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICBBU1NFUlQoKEhh
c2hNYXA8dWludDY0X3QsIFJlZlB0cjxMb2NhbFN0b3JhZ2VOYW1lc3BhY2U+Pjo6aXNWYWxpZEtl
eShzdG9yYWdlTmFtZXNwYWNlSUQpKSk7Ci0KLSAgICBMb2NhbFN0b3JhZ2VOYW1lc3BhY2UqIGxv
Y2FsU3RvcmFnZU5hbWVzcGFjZSA9IGdldE9yQ3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHN0
b3JhZ2VOYW1lc3BhY2VJRCk7Ci0gICAgQVNTRVJUKGxvY2FsU3RvcmFnZU5hbWVzcGFjZSk7Ci0K
LSAgICBhdXRvIHN0b3JhZ2VBcmVhID0gbG9jYWxTdG9yYWdlTmFtZXNwYWNlLT5nZXRPckNyZWF0
ZVN0b3JhZ2VBcmVhKFdURk1vdmUoc2VjdXJpdHlPcmlnaW5EYXRhKSwgbV9sb2NhbFN0b3JhZ2VE
YXRhYmFzZVRyYWNrZXIgPyBMb2NhbFN0b3JhZ2VOYW1lc3BhY2U6OklzRXBoZW1lcmFsOjpObyA6
IExvY2FsU3RvcmFnZU5hbWVzcGFjZTo6SXNFcGhlbWVyYWw6Olllcyk7Ci0gICAgc3RvcmFnZUFy
ZWEtPmFkZExpc3RlbmVyKGNvbm5lY3Rpb25JRCwgc3RvcmFnZU1hcElEKTsKLQotICAgIHJlc3Vs
dC5pdGVyYXRvci0+dmFsdWUgPSBXVEZNb3ZlKHN0b3JhZ2VBcmVhKTsKLX0KLQotdm9pZCBTdG9y
YWdlTWFuYWdlcjo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTWFwKElQQzo6Q29ubmVjdGlv
biYgY29ubmVjdGlvbiwgdWludDY0X3Qgc3RvcmFnZU1hcElELCB1aW50NjRfdCBzdG9yYWdlTmFt
ZXNwYWNlSUQsIFNlY3VyaXR5T3JpZ2luRGF0YSYmIHRvcExldmVsT3JpZ2luRGF0YSwgU2VjdXJp
dHlPcmlnaW5EYXRhJiYgb3JpZ2luKQotewotICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkp
OwotICAgIGF1dG8gY29ubmVjdGlvbklEID0gY29ubmVjdGlvbi51bmlxdWVJRCgpOwotCi0gICAg
QVNTRVJUKG1fc3RvcmFnZUFyZWFzQnlDb25uZWN0aW9uLmlzVmFsaWRLZXkoeyBjb25uZWN0aW9u
SUQsIHN0b3JhZ2VNYXBJRCB9KSk7Ci0KLSAgICAvLyBTZWUgaWYgd2UgYWxyZWFkeSBoYXZlIHNl
c3Npb24gc3RvcmFnZSBmb3IgdGhpcyBjb25uZWN0aW9uL29yaWdpbiBjb21iby4KLSAgICAvLyBJ
ZiBzbywgdXBkYXRlIHRoZSBtYXAgd2l0aCB0aGUgbmV3IElELCBvdGhlcndpc2Uga2VlcCBvbiB0
cnVja2luZy4KLSAgICBmb3IgKGF1dG8gaXQgPSBtX3N0b3JhZ2VBcmVhc0J5Q29ubmVjdGlvbi5i
ZWdpbigpLCBlbmQgPSBtX3N0b3JhZ2VBcmVhc0J5Q29ubmVjdGlvbi5lbmQoKTsgaXQgIT0gZW5k
OyArK2l0KSB7Ci0gICAgICAgIGlmIChpdC0+a2V5LmZpcnN0ICE9IGNvbm5lY3Rpb25JRCkKLSAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBSZWY8U3RvcmFnZUFyZWE+IGFyZWEgPSAqaXQt
PnZhbHVlOwotICAgICAgICBpZiAoIWFyZWEtPmlzRXBoZW1lcmFsKCkpCi0gICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgaWYgKCFvcmlnaW4uc2VjdXJpdHlPcmlnaW4oKS0+aXNTYW1lU2No
ZW1lSG9zdFBvcnQoYXJlYS0+c2VjdXJpdHlPcmlnaW4oKS5zZWN1cml0eU9yaWdpbigpLmdldCgp
KSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBhcmVhLT5hZGRMaXN0ZW5lcihjb25u
ZWN0aW9uSUQsIHN0b3JhZ2VNYXBJRCk7Ci0gICAgICAgIC8vIElmIHRoZSBzdG9yYWdlTWFwSUQg
dXNlZCBhcyBrZXkgaW4gbV9zdG9yYWdlQXJlYXNCeUNvbm5lY3Rpb24gaXMgbm8gbG9uZ2VyIG9u
ZSBvZiB0aGUgU3RvcmFnZUFyZWEncyBsaXN0ZW5lcnMsIHRoZW4gdGhpcyBtZWFucwotICAgICAg
ICAvLyB0aGF0IGRlc3Ryb3lTdG9yYWdlTWFwKCkgd2FzIGFscmVhZHkgY2FsbGVkIGZvciB0aGF0
IHN0b3JhZ2VNYXBJRCBidXQgaXQgZGVjaWRlZCBub3QgdG8gcmVtb3ZlIGl0IGZyb20gbV9zdG9y
YWdlQXJlYXNCeUNvbm5lY3Rpb24KLSAgICAgICAgLy8gc28gdGhhdCB3ZSBjb3VsZCByZXVzZSBp
dCBsYXRlciBvbiBmb3IgdGhlIHNhbWUgY29ubmVjdGlvbi9vcmlnaW4gY29tYm8uIEluIHRoaXMg
Y2FzZSwgaXQgaXMgc2FmZSB0byByZW1vdmUgdGhlIHByZXZpb3VzCi0gICAgICAgIC8vIHN0b3Jh
Z2VNYXBJRCBmcm9tIG1fc3RvcmFnZUFyZWFzQnlDb25uZWN0aW9uLgotICAgICAgICBpZiAoIWFy
ZWEtPmhhc0xpc3RlbmVyKGNvbm5lY3Rpb25JRCwgaXQtPmtleS5zZWNvbmQpKQotICAgICAgICAg
ICAgbV9zdG9yYWdlQXJlYXNCeUNvbm5lY3Rpb24ucmVtb3ZlKGl0KTsKLSAgICAgICAgbV9zdG9y
YWdlQXJlYXNCeUNvbm5lY3Rpb24uYWRkKHsgY29ubmVjdGlvbklELCBzdG9yYWdlTWFwSUQgfSwg
V1RGTW92ZShhcmVhKSk7Ci0gICAgICAgIHJldHVybjsKKyAgICB9IGVsc2UgeworICAgICAgICBm
b3IgKGF1dG8mIGxvY2FsU3RvcmFnZU5hbWVzcGFjZSA6IG1fbG9jYWxTdG9yYWdlTmFtZXNwYWNl
cy52YWx1ZXMoKSkKKyAgICAgICAgICAgIGxvY2FsU3RvcmFnZU5hbWVzcGFjZS0+Y2xlYXJBbGxT
dG9yYWdlQXJlYXMoKTsKICAgICB9CiAKLSAgICBhdXRvJiBzbG90ID0gbV9zdG9yYWdlQXJlYXNC
eUNvbm5lY3Rpb24uYWRkKHsgY29ubmVjdGlvbklELCBzdG9yYWdlTWFwSUQgfSwgbnVsbHB0ciku
aXRlcmF0b3ItPnZhbHVlOwotICAgIEFTU0VSVCghc2xvdCk7Ci0KLSAgICBhdXRvKiB0cmFuc2ll
bnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UgPSBnZXRPckNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFn
ZU5hbWVzcGFjZShzdG9yYWdlTmFtZXNwYWNlSUQsIFdURk1vdmUodG9wTGV2ZWxPcmlnaW5EYXRh
KSk7Ci0KLSAgICBhdXRvIHN0b3JhZ2VBcmVhID0gdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNw
YWNlLT5nZXRPckNyZWF0ZVN0b3JhZ2VBcmVhKFdURk1vdmUob3JpZ2luKSk7Ci0gICAgc3RvcmFn
ZUFyZWEtPmFkZExpc3RlbmVyKGNvbm5lY3Rpb25JRCwgc3RvcmFnZU1hcElEKTsKLQotICAgIHNs
b3QgPSBXVEZNb3ZlKHN0b3JhZ2VBcmVhKTsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2go
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIFN0b3JhZ2VNYW5hZ2VyOjpj
cmVhdGVTZXNzaW9uU3RvcmFnZU1hcChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVpbnQ2
NF90IHN0b3JhZ2VNYXBJRCwgdWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBTZWN1cml0eU9y
aWdpbkRhdGEmJiBzZWN1cml0eU9yaWdpbkRhdGEpCit2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpkZWxl
dGVMb2NhbFN0b3JhZ2VFbnRyaWVzRm9yT3JpZ2lucyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhPiYgb3JpZ2lucywgRnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIGF1dG8gY29u
bmVjdGlvbklEID0gY29ubmVjdGlvbi51bmlxdWVJRCgpOwotICAgIEFTU0VSVChtX3Nlc3Npb25T
dG9yYWdlTmFtZXNwYWNlcy5pc1ZhbGlkS2V5KHN0b3JhZ2VOYW1lc3BhY2VJRCkpOwotCi0gICAg
U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UqIHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlID0gbV9zZXNz
aW9uU3RvcmFnZU5hbWVzcGFjZXMuZ2V0KHN0b3JhZ2VOYW1lc3BhY2VJRCk7Ci0gICAgaWYgKCFz
ZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSkgewotICAgICAgICAvLyBXZSdyZSBnZXR0aW5nIGFuIGlu
Y29taW5nIG1lc3NhZ2UgZnJvbSB0aGUgd2ViIHByb2Nlc3MgdGhhdCdzIGZvciBzZXNzaW9uIHN0
b3JhZ2UgZm9yIGEgd2ViIHBhZ2UKLSAgICAgICAgLy8gdGhhdCBoYXMgYWxyZWFkeSBiZWVuIGNs
b3NlZCwganVzdCBpZ25vcmUgaXQuCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NF
UlQobV9zdG9yYWdlQXJlYXNCeUNvbm5lY3Rpb24uaXNWYWxpZEtleSh7IGNvbm5lY3Rpb25JRCwg
c3RvcmFnZU1hcElEIH0pKTsKIAotICAgIGF1dG8mIHNsb3QgPSBtX3N0b3JhZ2VBcmVhc0J5Q29u
bmVjdGlvbi5hZGQoeyBjb25uZWN0aW9uSUQsIHN0b3JhZ2VNYXBJRCB9LCBudWxscHRyKS5pdGVy
YXRvci0+dmFsdWU7Ci0gICAgQVNTRVJUKCFzbG90KTsKLSAgICBBU1NFUlQoc2Vzc2lvblN0b3Jh
Z2VOYW1lc3BhY2UtPmFsbG93ZWRDb25uZWN0aW9ucygpLmNvbnRhaW5zKGNvbm5lY3Rpb25JRCkp
OwotCi0gICAgYXV0byBzdG9yYWdlQXJlYSA9IHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlLT5nZXRP
ckNyZWF0ZVN0b3JhZ2VBcmVhKFdURk1vdmUoc2VjdXJpdHlPcmlnaW5EYXRhKSk7Ci0gICAgc3Rv
cmFnZUFyZWEtPmFkZExpc3RlbmVyKGNvbm5lY3Rpb25JRCwgc3RvcmFnZU1hcElEKTsKLQotICAg
IHNsb3QgPSBXVEZNb3ZlKHN0b3JhZ2VBcmVhKTsKLX0KLQotdm9pZCBTdG9yYWdlTWFuYWdlcjo6
ZGVzdHJveVN0b3JhZ2VNYXAoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCB1aW50NjRfdCBz
dG9yYWdlTWFwSUQpCi17Ci0gICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgYXV0
byBjb25uZWN0aW9uSUQgPSBjb25uZWN0aW9uLnVuaXF1ZUlEKCk7CisgICAgZm9yIChhdXRvJiBv
cmlnaW4gOiBvcmlnaW5zKSB7CisgICAgICAgIGZvciAoYXV0byYgbG9jYWxTdG9yYWdlTmFtZXNw
YWNlIDogbV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2VzLnZhbHVlcygpKQorICAgICAgICAgICAgbG9j
YWxTdG9yYWdlTmFtZXNwYWNlLT5jbGVhclN0b3JhZ2VBcmVhc01hdGNoaW5nT3JpZ2luKG9yaWdp
bik7CiAKLSAgICBzdGQ6OnBhaXI8SVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCwgdWludDY0X3Q+
IGNvbm5lY3Rpb25BbmRTdG9yYWdlTWFwSURQYWlyKGNvbm5lY3Rpb25JRCwgc3RvcmFnZU1hcElE
KTsKLSAgICBBU1NFUlQobV9zdG9yYWdlQXJlYXNCeUNvbm5lY3Rpb24uaXNWYWxpZEtleShjb25u
ZWN0aW9uQW5kU3RvcmFnZU1hcElEUGFpcikpOworICAgICAgICBmb3IgKGF1dG8mIHRyYW5zaWVu
dExvY2FsU3RvcmFnZU5hbWVzcGFjZSA6IG1fdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNl
cy52YWx1ZXMoKSkKKyAgICAgICAgICAgIHRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZS0+
Y2xlYXJTdG9yYWdlQXJlYXNNYXRjaGluZ09yaWdpbihvcmlnaW4pOwogCi0gICAgYXV0byBpdCA9
IG1fc3RvcmFnZUFyZWFzQnlDb25uZWN0aW9uLmZpbmQoY29ubmVjdGlvbkFuZFN0b3JhZ2VNYXBJ
RFBhaXIpOwotICAgIGlmIChpdCA9PSBtX3N0b3JhZ2VBcmVhc0J5Q29ubmVjdGlvbi5lbmQoKSkg
ewotICAgICAgICAvLyBUaGUgY29ubmVjdGlvbiBoYXMgYmVlbiByZW1vdmVkIGJlY2F1c2UgdGhl
IGxhc3QgcGFnZSB3YXMgY2xvc2VkLgotICAgICAgICByZXR1cm47CisgICAgICAgIGlmIChtX2xv
Y2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcikKKyAgICAgICAgICAgIG1fbG9jYWxTdG9yYWdlRGF0
YWJhc2VUcmFja2VyLT5kZWxldGVEYXRhYmFzZVdpdGhPcmlnaW4ob3JpZ2luKTsKICAgICB9CiAK
LSAgICBpdC0+dmFsdWUtPnJlbW92ZUxpc3RlbmVyKGNvbm5lY3Rpb25JRCwgc3RvcmFnZU1hcElE
KTsKLQotICAgIC8vIERvbid0IHJlbW92ZSBzZXNzaW9uIHN0b3JhZ2UgbWFwcy4gVGhlIHdlYiBw
cm9jZXNzIG1heSByZWNvbm5lY3QgYW5kIGV4cGVjdCB0aGUgZGF0YSB0byBzdGlsbCBiZSBhcm91
bmQuCi0gICAgaWYgKGl0LT52YWx1ZS0+aXNFcGhlbWVyYWwoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgbV9zdG9yYWdlQXJlYXNCeUNvbm5lY3Rpb24ucmVtb3ZlKGNvbm5lY3Rpb25BbmRTdG9y
YWdlTWFwSURQYWlyKTsKLX0KLQotdm9pZCBTdG9yYWdlTWFuYWdlcjo6cHJld2FybShJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCkKLXsKLSAgICBBU1NF
UlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBpZiAoYXV0byogc3RvcmFnZUFyZWEgPSBmaW5k
U3RvcmFnZUFyZWEoY29ubmVjdGlvbiwgc3RvcmFnZU1hcElEKSkKLSAgICAgICAgc3RvcmFnZUFy
ZWEtPm9wZW5EYXRhYmFzZUFuZEltcG9ydEl0ZW1zSWZOZWVkZWQoKTsKKyAgICBSdW5Mb29wOjpt
YWluKCkuZGlzcGF0Y2goV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIFN0
b3JhZ2VNYW5hZ2VyOjpnZXRWYWx1ZXMoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCB1aW50
NjRfdCBzdG9yYWdlTWFwSUQsIHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkLCBHZXRWYWx1ZXNDYWxs
YmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKQorU3RvcmFnZUFyZWEqIFN0b3JhZ2VNYW5hZ2VyOjpj
cmVhdGVMb2NhbFN0b3JhZ2VBcmVhKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgb3JpZ2luKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6
aXNNYWluKCkpOwotICAgIGF1dG8qIHN0b3JhZ2VBcmVhID0gZmluZFN0b3JhZ2VBcmVhKGNvbm5l
Y3Rpb24sIHN0b3JhZ2VNYXBJRCk7CiAKLSAgICAvLyBUaGlzIGlzIGEgc2Vzc2lvbiBzdG9yYWdl
IGFyZWEgZm9yIGEgcGFnZSB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gY2xvc2VkLiBJZ25vcmUgaXQu
Ci0gICAgaWYgKCFzdG9yYWdlQXJlYSkKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVy
KHsgfSk7CisgICAgaWYgKGF1dG8qIGxvY2FsU3RvcmFnZU5hbWVzcGFjZSA9IGdldE9yQ3JlYXRl
TG9jYWxTdG9yYWdlTmFtZXNwYWNlKHN0b3JhZ2VOYW1lc3BhY2VJRCkpCisgICAgICAgIHJldHVy
biBsb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPmdldE9yQ3JlYXRlU3RvcmFnZUFyZWEoV1RGTW92ZShv
cmlnaW4pLCBtX2xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlciA/IExvY2FsU3RvcmFnZU5hbWVz
cGFjZTo6SXNFcGhlbWVyYWw6Ok5vIDogTG9jYWxTdG9yYWdlTmFtZXNwYWNlOjpJc0VwaGVtZXJh
bDo6WWVzKS5wdHIoKTsKIAotICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0b3JhZ2VBcmVhLT5pdGVt
cygpKTsKLSAgICBjb25uZWN0aW9uLnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VBcmVhTWFwOjpEaWRH
ZXRWYWx1ZXMoc3RvcmFnZU1hcFNlZWQpLCBzdG9yYWdlTWFwSUQpOworICAgIHJldHVybiBudWxs
cHRyOwogfQogCi12b2lkIFN0b3JhZ2VNYW5hZ2VyOjpzZXRJdGVtKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgc2VjdXJpdHlPcmlnaW5E
YXRhLCB1aW50NjRfdCBzdG9yYWdlTWFwSUQsIHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQs
IHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5n
JiB2YWx1ZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCitTdG9yYWdlQXJlYSogU3RvcmFnZU1h
bmFnZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZUFyZWEodWludDY0X3Qgc3RvcmFnZU5h
bWVzcGFjZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiB0b3BMZXZlbE9yaWdpbiwg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgb3JpZ2luKQogewogICAgIEFTU0VSVCghUnVu
TG9vcDo6aXNNYWluKCkpOwotICAgIGF1dG8qIHN0b3JhZ2VBcmVhID0gZmluZFN0b3JhZ2VBcmVh
KGNvbm5lY3Rpb24sIHN0b3JhZ2VNYXBJRCk7Ci0KLSAgICAvLyBUaGlzIGlzIGEgc2Vzc2lvbiBz
dG9yYWdlIGFyZWEgZm9yIGEgcGFnZSB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gY2xvc2VkLiBJZ25v
cmUgaXQuCi0gICAgaWYgKCFzdG9yYWdlQXJlYSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYm9v
bCBxdW90YUVycm9yOwotICAgIHN0b3JhZ2VBcmVhLT5zZXRJdGVtKGNvbm5lY3Rpb24udW5pcXVl
SUQoKSwgc291cmNlU3RvcmFnZUFyZWFJRCwga2V5LCB2YWx1ZSwgdXJsU3RyaW5nLCBxdW90YUVy
cm9yKTsKLSAgICBjb25uZWN0aW9uLnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VBcmVhTWFwOjpEaWRT
ZXRJdGVtKHN0b3JhZ2VNYXBTZWVkLCBrZXksIHF1b3RhRXJyb3IpLCBzdG9yYWdlTWFwSUQpOwot
fQorICAgIEFTU0VSVCgoSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFRyYW5zaWVudExvY2FsU3Rv
cmFnZU5hbWVzcGFjZT4+Ojppc1ZhbGlkS2V5KHN0b3JhZ2VOYW1lc3BhY2VJRCkpKTsKIAotdm9p
ZCBTdG9yYWdlTWFuYWdlcjo6c2V0SXRlbXMoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCB1
aW50NjRfdCBzdG9yYWdlTWFwSUQsIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBpdGVt
cykKLXsKLSAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBpZiAoYXV0byogc3Rv
cmFnZUFyZWEgPSBmaW5kU3RvcmFnZUFyZWEoY29ubmVjdGlvbiwgc3RvcmFnZU1hcElEKSkKLSAg
ICAgICAgc3RvcmFnZUFyZWEtPnNldEl0ZW1zKGl0ZW1zKTsKKyAgICBpZiAoYXV0byogdHJhbnNp
ZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlID0gZ2V0T3JDcmVhdGVUcmFuc2llbnRMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2Uoc3RvcmFnZU5hbWVzcGFjZUlELCBXVEZNb3ZlKHRvcExldmVsT3JpZ2luKSkp
CisgICAgICAgIHJldHVybiB0cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPmdldE9yQ3Jl
YXRlU3RvcmFnZUFyZWEoV1RGTW92ZShvcmlnaW4pKS5wdHIoKTsKKyAgICAKKyAgICByZXR1cm4g
bnVsbHB0cjsKIH0KIAotdm9pZCBTdG9yYWdlTWFuYWdlcjo6cmVtb3ZlSXRlbShJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIHNlY3VyaXR5
T3JpZ2luRGF0YSwgdWludDY0X3Qgc3RvcmFnZU1hcElELCB1aW50NjRfdCBzb3VyY2VTdG9yYWdl
QXJlYUlELCB1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0
IFN0cmluZyYgdXJsU3RyaW5nKQorU3RvcmFnZUFyZWEqIFN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVT
ZXNzaW9uU3RvcmFnZUFyZWEodWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEmJiBvcmlnaW4pCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01h
aW4oKSk7Ci0gICAgYXV0byogc3RvcmFnZUFyZWEgPSBmaW5kU3RvcmFnZUFyZWEoY29ubmVjdGlv
biwgc3RvcmFnZU1hcElEKTsKLQotICAgIC8vIFRoaXMgaXMgYSBzZXNzaW9uIHN0b3JhZ2UgYXJl
YSBmb3IgYSBwYWdlIHRoYXQgaGFzIGFscmVhZHkgYmVlbiBjbG9zZWQuIElnbm9yZSBpdC4KLSAg
ICBpZiAoIXN0b3JhZ2VBcmVhKQotICAgICAgICByZXR1cm47CisgICAgQVNTRVJUKChIYXNoTWFw
PHVpbnQ2NF90LCBSZWZQdHI8U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2U+Pjo6aXNWYWxpZEtleShz
dG9yYWdlTmFtZXNwYWNlSUQpKSk7CiAKLSAgICBzdG9yYWdlQXJlYS0+cmVtb3ZlSXRlbShjb25u
ZWN0aW9uLnVuaXF1ZUlEKCksIHNvdXJjZVN0b3JhZ2VBcmVhSUQsIGtleSwgdXJsU3RyaW5nKTsK
LSAgICBjb25uZWN0aW9uLnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VBcmVhTWFwOjpEaWRSZW1vdmVJ
dGVtKHN0b3JhZ2VNYXBTZWVkLCBrZXkpLCBzdG9yYWdlTWFwSUQpOworICAgIGlmIChhdXRvKiBz
ZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSA9IGdldE9yQ3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3Bh
Y2Uoc3RvcmFnZU5hbWVzcGFjZUlEKSkKKyAgICAgICAgcmV0dXJuIHNlc3Npb25TdG9yYWdlTmFt
ZXNwYWNlLT5nZXRPckNyZWF0ZVN0b3JhZ2VBcmVhKFdURk1vdmUob3JpZ2luKSkucHRyKCk7Cisg
ICAgCisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXZvaWQgU3RvcmFnZU1hbmFnZXI6OmNsZWFy
KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
JiYgc2VjdXJpdHlPcmlnaW5EYXRhLCB1aW50NjRfdCBzdG9yYWdlTWFwSUQsIHVpbnQ2NF90IHNv
dXJjZVN0b3JhZ2VBcmVhSUQsIHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkLCBjb25zdCBTdHJpbmcm
IHVybFN0cmluZykKK0xvY2FsU3RvcmFnZU5hbWVzcGFjZSogU3RvcmFnZU1hbmFnZXI6OmdldE9y
Q3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCkK
IHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBhdXRvKiBzdG9yYWdlQXJl
YSA9IGZpbmRTdG9yYWdlQXJlYShjb25uZWN0aW9uLCBzdG9yYWdlTWFwSUQpOwotCi0gICAgLy8g
VGhpcyBpcyBhIHNlc3Npb24gc3RvcmFnZSBhcmVhIGZvciBhIHBhZ2UgdGhhdCBoYXMgYWxyZWFk
eSBiZWVuIGNsb3NlZC4gSWdub3JlIGl0LgotICAgIGlmICghc3RvcmFnZUFyZWEpCi0gICAgICAg
IHJldHVybjsKLQotICAgIHN0b3JhZ2VBcmVhLT5jbGVhcihjb25uZWN0aW9uLnVuaXF1ZUlEKCks
IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIHVybFN0cmluZyk7Ci0gICAgY29ubmVjdGlvbi5zZW5kKE1l
c3NhZ2VzOjpTdG9yYWdlQXJlYU1hcDo6RGlkQ2xlYXIoc3RvcmFnZU1hcFNlZWQpLCBzdG9yYWdl
TWFwSUQpOwotfQogCi12b2lkIFN0b3JhZ2VNYW5hZ2VyOjp3YWl0VW50aWxUYXNrc0ZpbmlzaGVk
KCkKLXsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIEJpbmFyeVNlbWFwaG9y
ZSBzZW1hcGhvcmU7Ci0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsICZzZW1hcGhvcmVdIHsK
LSAgICAgICAgVmVjdG9yPHN0ZDo6cGFpcjxJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCB1aW50
NjRfdD4+IGNvbm5lY3Rpb25BbmRTdG9yYWdlTWFwSURQYWlyc1RvUmVtb3ZlOwotICAgICAgICBm
b3IgKGF1dG8mIGNvbm5lY3Rpb25TdG9yYWdlQXJlYVBhaXIgOiBtX3N0b3JhZ2VBcmVhc0J5Q29u
bmVjdGlvbikgewotICAgICAgICAgICAgY29ubmVjdGlvblN0b3JhZ2VBcmVhUGFpci52YWx1ZS0+
cmVtb3ZlTGlzdGVuZXIoY29ubmVjdGlvblN0b3JhZ2VBcmVhUGFpci5rZXkuZmlyc3QsIGNvbm5l
Y3Rpb25TdG9yYWdlQXJlYVBhaXIua2V5LnNlY29uZCk7Ci0gICAgICAgICAgICBjb25uZWN0aW9u
QW5kU3RvcmFnZU1hcElEUGFpcnNUb1JlbW92ZS5hcHBlbmQoY29ubmVjdGlvblN0b3JhZ2VBcmVh
UGFpci5rZXkpOwotICAgICAgICB9Ci0KLSAgICAgICAgZm9yIChhdXRvJiBjb25uZWN0aW9uU3Rv
cmFnZUFyZWFQYWlyIDogY29ubmVjdGlvbkFuZFN0b3JhZ2VNYXBJRFBhaXJzVG9SZW1vdmUpCi0g
ICAgICAgICAgICBtX3N0b3JhZ2VBcmVhc0J5Q29ubmVjdGlvbi5yZW1vdmUoY29ubmVjdGlvblN0
b3JhZ2VBcmVhUGFpcik7Ci0KLSAgICAgICAgbV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMuY2xl
YXIoKTsKLSAgICAgICAgbV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2VzLmNsZWFyKCk7Ci0KLSAgICAg
ICAgc2VtYXBob3JlLnNpZ25hbCgpOwotICAgIH0pOwotICAgIHNlbWFwaG9yZS53YWl0KCk7Ci19
Ci0KLXZvaWQgU3RvcmFnZU1hbmFnZXI6OnN1c3BlbmQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7
Ci0gICAgQ29tcGxldGlvbkhhbmRsZXJDYWxsaW5nU2NvcGUgY29tcGxldGlvbkhhbmRsZXJDYWxs
ZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgIGlmICghbV9sb2NhbFN0b3JhZ2VE
YXRhYmFzZVRyYWNrZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIExvY2tlcjxMb2NrPiBzdGF0
ZUxvY2tlcihtX3N0YXRlTG9jayk7Ci0gICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OlJ1bm5pbmcp
Ci0gICAgICAgIHJldHVybjsKLSAgICBtX3N0YXRlID0gU3RhdGU6OldpbGxTdXNwZW5kOwotCi0g
ICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgY29tcGxldGlvbkhhbmRsZXIgPSBjb21wbGV0aW9uSGFuZGxlckNhbGxlci5yZWxlYXNlKCld
ICgpIG11dGFibGUgewotICAgICAgICBMb2NrZXI8TG9jaz4gc3RhdGVMb2NrZXIobV9zdGF0ZUxv
Y2spOwotICAgICAgICBBU1NFUlQobV9zdGF0ZSAhPSBTdGF0ZTo6U3VzcGVuZGVkKTsKLQotICAg
ICAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6V2lsbFN1c3BlbmQpIHsKLSAgICAgICAgICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBtX3N0YXRlID0gU3RhdGU6OlN1
c3BlbmRlZDsKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKLSAgICAgICAgCi0gICAgICAgIHdoaWxlIChtX3N0YXRlID09IFN0YXRl
OjpTdXNwZW5kZWQpCi0gICAgICAgICAgICBtX3N0YXRlQ2hhbmdlQ29uZGl0aW9uLndhaXQobV9z
dGF0ZUxvY2spOwotICAgICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6UnVubmluZyk7Ci0g
ICAgfSk7Ci19Ci0KLXZvaWQgU3RvcmFnZU1hbmFnZXI6OnJlc3VtZSgpCi17Ci0gICAgQVNTRVJU
KFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBpZiAoIW1fbG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFj
a2VyKQotICAgICAgICByZXR1cm47CisgICAgaWYgKCFtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZXMu
aXNWYWxpZEtleShzdG9yYWdlTmFtZXNwYWNlSUQpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgIExvY2tlcjxMb2NrPiBzdGF0ZUxvY2tlcihtX3N0YXRlTG9jayk7Ci0gICAgYXV0byBw
cmV2aW91c1N0YXRlID0gbV9zdGF0ZTsKLSAgICBtX3N0YXRlID0gU3RhdGU6OlJ1bm5pbmc7Ci0g
ICAgaWYgKHByZXZpb3VzU3RhdGUgPT0gU3RhdGU6OlN1c3BlbmRlZCkKLSAgICAgICAgbV9zdGF0
ZUNoYW5nZUNvbmRpdGlvbi5ub3RpZnlPbmUoKTsKKyAgICByZXR1cm4gbV9sb2NhbFN0b3JhZ2VO
YW1lc3BhY2VzLmVuc3VyZShzdG9yYWdlTmFtZXNwYWNlSUQsIFt0aGlzLCBzdG9yYWdlTmFtZXNw
YWNlSURdKCkgeworICAgICAgICByZXR1cm4gTG9jYWxTdG9yYWdlTmFtZXNwYWNlOjpjcmVhdGUo
KnRoaXMsIHN0b3JhZ2VOYW1lc3BhY2VJRCk7CisgICAgfSkuaXRlcmF0b3ItPnZhbHVlLmdldCgp
OwogfQogCi1TdG9yYWdlQXJlYSogU3RvcmFnZU1hbmFnZXI6OmZpbmRTdG9yYWdlQXJlYShJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCkgY29uc3QKK1Ry
YW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSogU3RvcmFnZU1hbmFnZXI6OmdldE9yQ3JlYXRl
VHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJ
RCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wTGV2ZWxPcmlnaW4pCiB7CiAgICAg
QVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgc3RkOjpwYWlyPElQQzo6Q29ubmVjdGlv
bjo6VW5pcXVlSUQsIHVpbnQ2NF90PiBjb25uZWN0aW9uQW5kU3RvcmFnZU1hcElEUGFpcihjb25u
ZWN0aW9uLnVuaXF1ZUlEKCksIHN0b3JhZ2VNYXBJRCk7CiAKLSAgICBpZiAoIW1fc3RvcmFnZUFy
ZWFzQnlDb25uZWN0aW9uLmlzVmFsaWRLZXkoY29ubmVjdGlvbkFuZFN0b3JhZ2VNYXBJRFBhaXIp
KQorICAgIGlmICghbV90cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2VzLmlzVmFsaWRLZXko
eyBzdG9yYWdlTmFtZXNwYWNlSUQsIHRvcExldmVsT3JpZ2luIH0pKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIHJldHVybiBtX3N0b3JhZ2VBcmVhc0J5Q29ubmVjdGlvbi5nZXQoY29u
bmVjdGlvbkFuZFN0b3JhZ2VNYXBJRFBhaXIpOworICAgIHJldHVybiBtX3RyYW5zaWVudExvY2Fs
U3RvcmFnZU5hbWVzcGFjZXMuZW5zdXJlKHsgc3RvcmFnZU5hbWVzcGFjZUlELCBXVEZNb3ZlKHRv
cExldmVsT3JpZ2luKSB9LCBbXSB7CisgICAgICAgIHJldHVybiBUcmFuc2llbnRMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2U6OmNyZWF0ZSgpOworICAgIH0pLml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKIH0K
IAotTG9jYWxTdG9yYWdlTmFtZXNwYWNlKiBTdG9yYWdlTWFuYWdlcjo6Z2V0T3JDcmVhdGVMb2Nh
bFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlEKQorU2Vzc2lvblN0
b3JhZ2VOYW1lc3BhY2UqIFN0b3JhZ2VNYW5hZ2VyOjpnZXRPckNyZWF0ZVNlc3Npb25TdG9yYWdl
TmFtZXNwYWNlKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCkKIHsKICAgICBBU1NFUlQoIVJ1
bkxvb3A6OmlzTWFpbigpKTsKLSAgICBpZiAoIW1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlcy5pc1Zh
bGlkS2V5KHN0b3JhZ2VOYW1lc3BhY2VJRCkpCisKKyAgICBpZiAoIW1fc2Vzc2lvblN0b3JhZ2VO
YW1lc3BhY2VzLmlzVmFsaWRLZXkoc3RvcmFnZU5hbWVzcGFjZUlEKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICByZXR1cm4gbV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2VzLmVuc3VyZShz
dG9yYWdlTmFtZXNwYWNlSUQsIFt0aGlzLCBzdG9yYWdlTmFtZXNwYWNlSURdKCkgewotICAgICAg
ICByZXR1cm4gTG9jYWxTdG9yYWdlTmFtZXNwYWNlOjpjcmVhdGUoKnRoaXMsIHN0b3JhZ2VOYW1l
c3BhY2VJRCk7CisgICAgcmV0dXJuIG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLmVuc3VyZShz
dG9yYWdlTmFtZXNwYWNlSUQsIFtdIHsKKyAgICAgICAgLy8gV2UgY3VycmVudGx5IGhhdmUgbm8g
bGltaXQgb24gc2Vzc2lvbiBzdG9yYWdlLgorICAgICAgICByZXR1cm4gU2Vzc2lvblN0b3JhZ2VO
YW1lc3BhY2U6OmNyZWF0ZShzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpOwog
ICAgIH0pLml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKIH0KIAotVHJhbnNpZW50TG9jYWxTdG9yYWdl
TmFtZXNwYWNlKiBTdG9yYWdlTWFuYWdlcjo6Z2V0T3JDcmVhdGVUcmFuc2llbnRMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UodWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGEmJiB0b3BMZXZlbE9yaWdpbikKK3ZvaWQgU3RvcmFnZU1hbmFnZXI6OmNsZWFy
U3RvcmFnZU5hbWVzcGFjZXMoKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwot
ICAgIGlmICghbV90cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2VzLmlzVmFsaWRLZXkoeyBz
dG9yYWdlTmFtZXNwYWNlSUQsIHRvcExldmVsT3JpZ2luIH0pKQotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAotICAgIHJldHVybiBtX3RyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZXMuZW5z
dXJlKHsgc3RvcmFnZU5hbWVzcGFjZUlELCBXVEZNb3ZlKHRvcExldmVsT3JpZ2luKSB9LCBbXSgp
ewotICAgICAgICByZXR1cm4gVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlOjpjcmVhdGUo
KTsKLSAgICB9KS5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CisgICAgbV9sb2NhbFN0b3JhZ2VOYW1l
c3BhY2VzLmNsZWFyKCk7CisgICAgbV90cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2VzLmNs
ZWFyKCk7CisgICAgbV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMuY2xlYXIoKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5oCmluZGV4IDMxOTlhNDIwYThmZGJjYmIx
Zjc3ZDcyZDAxN2VhNmIzYzA4MDk1MGYuLjZiNTNlMWIyZTA0NDlmOWIzYzA0MDNiNTMyM2FlYWQw
MGMzYTk2MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3Rv
cmFnZS9TdG9yYWdlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
V2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5oCkBAIC00OSw3ICs0OSw3IEBAIGNsYXNzIFdlYlBy
b2Nlc3NQcm94eTsKIAogdXNpbmcgR2V0VmFsdWVzQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+Jik+OwogCi1jbGFzcyBTdG9yYWdl
TWFuYWdlciA6IHB1YmxpYyBJUEM6OkNvbm5lY3Rpb246OldvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZl
ciB7CitjbGFzcyBTdG9yYWdlTWFuYWdlciA6IHB1YmxpYyBSZWZDb3VudGVkPFN0b3JhZ2VNYW5h
Z2VyPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTdG9yYWdlTWFuYWdlcj4gY3JlYXRlKFN0
cmluZyYmIGxvY2FsU3RvcmFnZURpcmVjdG9yeSkKICAgICB7CkBAIC02MCw3OCArNjAsNDEgQEAg
cHVibGljOgogCiAgICAgdm9pZCBjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRf
dCBzdG9yYWdlTmFtZXNwYWNlSUQsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcyk7CiAgICAgdm9pZCBk
ZXN0cm95U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlE
KTsKLSAgICB2b2lkIGFkZEFsbG93ZWRTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZUNvbm5lY3Rpb24o
dWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBJUEM6OkNvbm5lY3Rpb24mKTsKLSAgICB2b2lk
IHJlbW92ZUFsbG93ZWRTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZUNvbm5lY3Rpb24odWludDY0X3Qg
c3RvcmFnZU5hbWVzcGFjZUlELCBJUEM6OkNvbm5lY3Rpb24mKTsKICAgICB2b2lkIGNsb25lU2Vz
c2lvblN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCB1aW50NjRf
dCBuZXdTdG9yYWdlTmFtZXNwYWNlSUQpOwogCi0gICAgdm9pZCBwcm9jZXNzRGlkQ2xvc2VDb25u
ZWN0aW9uKElQQzo6Q29ubmVjdGlvbiYpOwotICAgIHZvaWQgd2FpdFVudGlsVGFza3NGaW5pc2hl
ZCgpOwotICAgIHZvaWQgc3VzcGVuZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAg
IHZvaWQgcmVzdW1lKCk7Ci0KLSAgICB2b2lkIGdldFNlc3Npb25TdG9yYWdlT3JpZ2lucyhGdW5j
dGlvbjx2b2lkKEhhc2hTZXQ8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYmKT4mJiBjb21w
bGV0aW9uSGFuZGxlcik7CisgICAgdm9pZCBnZXRTZXNzaW9uU3RvcmFnZU9yaWdpbnMoRnVuY3Rp
b248dm9pZChIYXNoU2V0PFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mJik+JiYpOwogICAg
IHZvaWQgZGVsZXRlU2Vzc2lvblN0b3JhZ2VPcmlnaW5zKEZ1bmN0aW9uPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcik7Ci0gICAgdm9pZCBkZWxldGVTZXNzaW9uU3RvcmFnZUVudHJpZXNGb3JP
cmlnaW5zKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiwgRnVuY3Rp
b248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKLQotICAgIHZvaWQgZ2V0TG9jYWxTdG9y
YWdlT3JpZ2lucyhGdW5jdGlvbjx2b2lkKEhhc2hTZXQ8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7Ci0gICAgdm9pZCBkZWxldGVMb2NhbFN0b3Jh
Z2VFbnRyaWVzRm9yT3JpZ2luKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYpOwor
ICAgIHZvaWQgZGVsZXRlU2Vzc2lvblN0b3JhZ2VFbnRyaWVzRm9yT3JpZ2lucyhjb25zdCBWZWN0
b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYsIEZ1bmN0aW9uPHZvaWQoKT4mJik7CiAK
LSAgICB2b2lkIGRlbGV0ZUxvY2FsU3RvcmFnZU9yaWdpbnNNb2RpZmllZFNpbmNlKFdhbGxUaW1l
LCBGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwotICAgIHZvaWQgZGVsZXRl
TG9jYWxTdG9yYWdlRW50cmllc0Zvck9yaWdpbnMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YT4mLCBGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwor
ICAgIHZvaWQgZ2V0TG9jYWxTdG9yYWdlT3JpZ2lucyhGdW5jdGlvbjx2b2lkKEhhc2hTZXQ8V2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYmKT4mJik7CisgICAgdm9pZCBkZWxldGVMb2NhbFN0
b3JhZ2VPcmlnaW5zTW9kaWZpZWRTaW5jZShXYWxsVGltZSwgRnVuY3Rpb248dm9pZCgpPiYmKTsK
KyAgICB2b2lkIGRlbGV0ZUxvY2FsU3RvcmFnZUVudHJpZXNGb3JPcmlnaW5zKGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiwgRnVuY3Rpb248dm9pZCgpPiYmKTsKKyAg
ICB2b2lkIGdldExvY2FsU3RvcmFnZU9yaWdpbkRldGFpbHMoRnVuY3Rpb248dm9pZChWZWN0b3I8
TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpPcmlnaW5EZXRhaWxzPiYmKT4mJik7CiAKLSAg
ICB2b2lkIGdldExvY2FsU3RvcmFnZU9yaWdpbkRldGFpbHMoRnVuY3Rpb248dm9pZChWZWN0b3I8
TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpPcmlnaW5EZXRhaWxzPiYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcik7CisgICAgdm9pZCBjbGVhclN0b3JhZ2VOYW1lc3BhY2VzKCk7CiAKICAgICB2
b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwog
ICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpOwogICAg
IAogICAgIExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlciogbG9jYWxTdG9yYWdlRGF0YWJhc2VU
cmFja2VyKCkgY29uc3QgeyByZXR1cm4gbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuZ2V0
KCk7IH0KICAgICAKLSAgICBXb3JrUXVldWUmIHdvcmtRdWV1ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cXVldWUuZ2V0KCk7IH0KLSAgICAKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbG9jYWxTdG9y
YWdlRGF0YWJhc2VRdW90YUluQnl0ZXM7CiAKKyAgICBTdG9yYWdlQXJlYSogY3JlYXRlTG9jYWxT
dG9yYWdlQXJlYSh1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYmKTsKKyAgICBTdG9yYWdlQXJlYSogY3JlYXRlVHJhbnNpZW50TG9jYWxTdG9y
YWdlQXJlYSh1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSYmLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJik7CisgICAgU3RvcmFnZUFy
ZWEqIGNyZWF0ZVNlc3Npb25TdG9yYWdlQXJlYSh1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQs
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmKTsKKwogcHJpdmF0ZToKICAgICBleHBsaWNp
dCBTdG9yYWdlTWFuYWdlcihTdHJpbmcmJiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpOwogCi0gICAg
Ly8gTWVzc2FnZSBoYW5kbGVycy4KLSAgICB2b2lkIGNyZWF0ZUxvY2FsU3RvcmFnZU1hcChJUEM6
OkNvbm5lY3Rpb24mLCB1aW50NjRfdCBzdG9yYWdlTWFwSUQsIHVpbnQ2NF90IHN0b3JhZ2VOYW1l
c3BhY2VJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYpOwotICAgIHZvaWQgY3JlYXRl
VHJhbnNpZW50TG9jYWxTdG9yYWdlTWFwKElQQzo6Q29ubmVjdGlvbiYsIHVpbnQ2NF90IHN0b3Jh
Z2VNYXBJRCwgdWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmJiB0b3BMZXZlbE9yaWdpbkRhdGEsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YSYmKTsKLSAgICB2b2lkIGNyZWF0ZVNlc3Npb25TdG9yYWdlTWFwKElQQzo6Q29ubmVjdGlvbiYs
IHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCwgdWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJik7Ci0gICAgdm9pZCBkZXN0cm95U3RvcmFnZU1hcChJ
UEM6OkNvbm5lY3Rpb24mLCB1aW50NjRfdCBzdG9yYWdlTWFwSUQpOwotCi0gICAgdm9pZCBnZXRW
YWx1ZXMoSVBDOjpDb25uZWN0aW9uJiwgdWludDY0X3Qgc3RvcmFnZU1hcElELCB1aW50NjRfdCBz
dG9yYWdlTWFwU2VlZCwgR2V0VmFsdWVzQ2FsbGJhY2smJik7Ci0gICAgdm9pZCBwcmV3YXJtKElQ
Qzo6Q29ubmVjdGlvbiYsIHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCk7Ci0gICAgdm9pZCBzZXRJdGVt
KElQQzo6Q29ubmVjdGlvbiYsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCB1aW50NjRf
dCBzdG9yYWdlTWFwSUQsIHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIHVpbnQ2NF90IHN0
b3JhZ2VNYXBTZWVkLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgY29u
c3QgU3RyaW5nJiB1cmxTdHJpbmcpOwotICAgIHZvaWQgc2V0SXRlbXMoSVBDOjpDb25uZWN0aW9u
JiwgdWludDY0X3Qgc3RvcmFnZU1hcElELCBjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYg
aXRlbXMpOwotICAgIHZvaWQgcmVtb3ZlSXRlbShJUEM6OkNvbm5lY3Rpb24mLCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEmJiwgdWludDY0X3Qgc3RvcmFnZU1hcElELCB1aW50NjRfdCBzb3Vy
Y2VTdG9yYWdlQXJlYUlELCB1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCwgY29uc3QgU3RyaW5nJiBr
ZXksIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKTsKLSAgICB2b2lkIGNsZWFyKElQQzo6Q29ubmVj
dGlvbiYsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCB1aW50NjRfdCBzdG9yYWdlTWFw
SUQsIHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVk
LCBjb25zdCBTdHJpbmcmIHVybFN0cmluZyk7Ci0KLSAgICBTdG9yYWdlQXJlYSogZmluZFN0b3Jh
Z2VBcmVhKElQQzo6Q29ubmVjdGlvbiYsIHVpbnQ2NF90KSBjb25zdDsKLQogICAgIExvY2FsU3Rv
cmFnZU5hbWVzcGFjZSogZ2V0T3JDcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3Qg
c3RvcmFnZU5hbWVzcGFjZUlEKTsKLQogICAgIFRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFj
ZSogZ2V0T3JDcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3Qgc3Rv
cmFnZU5hbWVzcGFjZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiB0b3BMZXZlbE9y
aWdpbik7Ci0KLSAgICBSZWY8V29ya1F1ZXVlPiBtX3F1ZXVlOworICAgIFNlc3Npb25TdG9yYWdl
TmFtZXNwYWNlKiBnZXRPckNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IHN0
b3JhZ2VOYW1lc3BhY2VJRCk7CiAKICAgICBSZWZQdHI8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFj
a2VyPiBtX2xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjsKICAgICBIYXNoTWFwPHVpbnQ2NF90
LCBSZWZQdHI8TG9jYWxTdG9yYWdlTmFtZXNwYWNlPj4gbV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2Vz
OwotCiAgICAgSGFzaE1hcDxzdGQ6OnBhaXI8dWludDY0X3QsIFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YT4sIFJlZlB0cjxUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2U+PiBtX3RyYW5z
aWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZXM7Ci0KICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQ
dHI8U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2U+PiBtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlczsK
LQotICAgIEhhc2hNYXA8c3RkOjpwYWlyPElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIHVpbnQ2
NF90PiwgUmVmUHRyPFN0b3JhZ2VBcmVhPj4gbV9zdG9yYWdlQXJlYXNCeUNvbm5lY3Rpb247Ci0g
ICAgSGFzaFNldDxJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEPiBtX2Nvbm5lY3Rpb25zOwotCi0g
ICAgZW51bSBjbGFzcyBTdGF0ZSB7Ci0gICAgICAgIFJ1bm5pbmcsCi0gICAgICAgIFdpbGxTdXNw
ZW5kLAotICAgICAgICBTdXNwZW5kZWQKLSAgICB9OwotICAgIFN0YXRlIG1fc3RhdGUgeyBTdGF0
ZTo6UnVubmluZyB9OwotICAgIExvY2sgbV9zdGF0ZUxvY2s7Ci0gICAgQ29uZGl0aW9uIG1fc3Rh
dGVDaGFuZ2VDb25kaXRpb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdl
ci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9T
dG9yYWdlTWFuYWdlci5tZXNzYWdlcy5pbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NzhiYjZhYjI0MDI4YTI1M2FhMTE4NTQyMDFkNmExNWQyNWNlMmM2Zi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIubWVzc2FnZXMuaW4KKysrIC9kZXYvbnVsbApA
QCAtMSwzNiArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxMy0yMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0
OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotIyBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSMg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLQotbWVzc2FnZXMgLT4gU3RvcmFnZU1hbmFnZXIgewotICAgIENyZWF0ZUxvY2FsU3RvcmFn
ZU1hcCh1aW50NjRfdCBzdG9yYWdlTWFwSUQsIHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwg
c3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBzZWN1cml0eU9yaWdpbkRhdGEpIFdh
bnRzQ29ubmVjdGlvbgotICAgIENyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU1hcCh1aW50NjRf
dCBzdG9yYWdlTWFwSUQsIHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgc3RydWN0IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSB0b3BMZXZlbFNlY3VyaXR5T3JpZ2luRGF0YSwgc3RydWN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBzZWN1cml0eU9yaWdpbkRhdGEpIFdhbnRzQ29u
bmVjdGlvbgotICAgIENyZWF0ZVNlc3Npb25TdG9yYWdlTWFwKHVpbnQ2NF90IHN0b3JhZ2VNYXBJ
RCwgdWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhIHNlY3VyaXR5T3JpZ2luRGF0YSkgV2FudHNDb25uZWN0aW9uCi0gICAgRGVzdHJv
eVN0b3JhZ2VNYXAodWludDY0X3Qgc3RvcmFnZU1hcElEKSBXYW50c0Nvbm5lY3Rpb24KLQotICAg
IFByZXdhcm0odWludDY0X3Qgc3RvcmFnZU1hcElEKSBXYW50c0Nvbm5lY3Rpb24KLSAgICBHZXRW
YWx1ZXModWludDY0X3Qgc3RvcmFnZU1hcElELCB1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCkgLT4g
KEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IHZhbHVlcykgU3luY2hyb25vdXMgV2FudHNDb25uZWN0
aW9uCi0KLSAgICBTZXRJdGVtKHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgc2Vj
dXJpdHlPcmlnaW5EYXRhLCB1aW50NjRfdCBzdG9yYWdlTWFwSUQsIHVpbnQ2NF90IHNvdXJjZVN0
b3JhZ2VBcmVhSUQsIHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkLCBTdHJpbmcga2V5LCBTdHJpbmcg
dmFsdWUsIFN0cmluZyB1cmxTdHJpbmcpIFdhbnRzQ29ubmVjdGlvbgotICAgIFNldEl0ZW1zKHVp
bnQ2NF90IHN0b3JhZ2VNYXBJRCwgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gaXRlbXMpIFdhbnRz
Q29ubmVjdGlvbgotICAgIFJlbW92ZUl0ZW0oc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSBzZWN1cml0eU9yaWdpbkRhdGEsIHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCwgdWludDY0X3Qg
c291cmNlU3RvcmFnZUFyZWFJRCwgdWludDY0X3Qgc3RvcmFnZU1hcFNlZWQsIFN0cmluZyBrZXks
IFN0cmluZyB1cmxTdHJpbmcpIFdhbnRzQ29ubmVjdGlvbgotICAgIENsZWFyKHN0cnVjdCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgc2VjdXJpdHlPcmlnaW5EYXRhLCB1aW50NjRfdCBzdG9y
YWdlTWFwSUQsIHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIHVpbnQ2NF90IHN0b3JhZ2VN
YXBTZWVkLCBTdHJpbmcgdXJsU3RyaW5nKSBXYW50c0Nvbm5lY3Rpb24KLX0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNl
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1h
bmFnZXJTZXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgxYzdiNzFiZjQ1MzAzMTFmODk5OTZkZGY4ZDQ2ODBl
OWJiMDkyNGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQuY3BwCkBAIC0wLDAgKzEsNDA5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlN0b3JhZ2VNYW5hZ2VyU2V0LmgiCisKKyNpbmNsdWRlICJTdG9yYWdl
QXJlYU1hcE1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiU3RvcmFnZU1hbmFnZXJTZXRNZXNzYWdlcy5o
IgorI2luY2x1ZGUgPHd0Zi90aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5oPgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworY29uc3QgdWludDY0X3QgaW52YWxpZFN0b3JhZ2VBcmVhSUQgPSAwOworCitS
ZWY8U3RvcmFnZU1hbmFnZXJTZXQ+IFN0b3JhZ2VNYW5hZ2VyU2V0OjpjcmVhdGUoKQoreworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFN0b3JhZ2VNYW5hZ2VyU2V0KTsKK30KKworU3RvcmFnZU1h
bmFnZXJTZXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0KCkKKyAgICA6IG1fcXVldWUoV29ya1F1ZXVlOjpj
cmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuV2ViU3RvcmFnZSIpKQoreworICAgIEFTU0VSVChSdW5M
b29wOjppc01haW4oKSk7CisKKyAgICAvLyBNYWtlIHN1cmUgdGhlIGVuY29kaW5nIGlzIGluaXRp
YWxpemVkIGJlZm9yZSB3ZSBzdGFydCBkaXNwYXRjaGluZyB0aGluZ3MgdG8gdGhlIHF1ZXVlLgor
ICAgIFVURjhFbmNvZGluZygpOworfQorCitTdG9yYWdlTWFuYWdlclNldDo6flN0b3JhZ2VNYW5h
Z2VyU2V0KCkKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgd2FpdFVu
dGlsVGFza3NGaW5pc2hlZCgpOworfQorCit2b2lkIFN0b3JhZ2VNYW5hZ2VyU2V0OjphZGQoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZURpcmVjdG9y
eSwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnlIYW5kbGUp
Cit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIGF1dG9baXRlciwgaXNO
ZXdFbnRyeV0gPSBtX3N0b3JhZ2VNYW5hZ2VyUGF0aHMuYWRkKHNlc3Npb25JRCwgbG9jYWxTdG9y
YWdlRGlyZWN0b3J5KTsKKyAgICBpZiAoaXNOZXdFbnRyeSkgeworICAgICAgICBpZiAoIXNlc3Np
b25JRC5pc0VwaGVtZXJhbCgpKQorICAgICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3Vt
ZVBlcm1hbmVudGx5KGxvY2FsU3RvcmFnZURpcmVjdG9yeUhhbmRsZSk7CisKKyAgICAgICAgbV9x
dWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc2Vz
c2lvbklELCBkaXJlY3RvcnkgPSBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkuaXNvbGF0ZWRDb3B5KCld
KCkgbXV0YWJsZSB7CisgICAgICAgICAgICBtX3N0b3JhZ2VNYW5hZ2Vycy5lbnN1cmUoc2Vzc2lv
bklELCBbZGlyZWN0b3J5XSgpIG11dGFibGUgeworICAgICAgICAgICAgICAgIHJldHVybiBTdG9y
YWdlTWFuYWdlcjo6Y3JlYXRlKFdURk1vdmUoZGlyZWN0b3J5KSk7CisgICAgICAgICAgICB9KTsK
KyAgICAgICAgfSk7CisgICAgfQorfQorCit2b2lkIFN0b3JhZ2VNYW5hZ2VyU2V0OjpyZW1vdmUo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQoreworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4o
KSk7CisKKyAgICBpZiAobV9zdG9yYWdlTWFuYWdlclBhdGhzLnJlbW92ZShzZXNzaW9uSUQpKSB7
CisgICAgICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIHNlc3Npb25JRF0oKSB7CisgICAgICAgICAgICBtX3N0b3JhZ2VNYW5hZ2Vycy5y
ZW1vdmUoc2Vzc2lvbklEKTsKKyAgICAgICAgfSk7CisgICAgfQorfQorCitib29sIFN0b3JhZ2VN
YW5hZ2VyU2V0Ojpjb250YWlucyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCit7CisgICAgQVNT
RVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIHJldHVybiBtX3N0b3JhZ2VNYW5hZ2VyUGF0
aHMuY29udGFpbnMoc2Vzc2lvbklEKTsKK30KKwordm9pZCBTdG9yYWdlTWFuYWdlclNldDo6YWRk
Q29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pIAoreworICAgIEFTU0VSVChS
dW5Mb29wOjppc01haW4oKSk7CisKKyAgICBhdXRvIGNvbm5lY3Rpb25JRCA9IGNvbm5lY3Rpb24u
dW5pcXVlSUQoKTsKKyAgICBBU1NFUlQoIW1fY29ubmVjdGlvbnMuY29udGFpbnMoY29ubmVjdGlv
bklEKSk7CisgICAgaWYgKG1fY29ubmVjdGlvbnMuYWRkKGNvbm5lY3Rpb25JRCkuaXNOZXdFbnRy
eSkKKyAgICAgICAgY29ubmVjdGlvbi5hZGRXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoTWVzc2Fn
ZXM6OlN0b3JhZ2VNYW5hZ2VyU2V0OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcXVldWUuZ2V0
KCksIHRoaXMpOworfQorCit2b2lkIFN0b3JhZ2VNYW5hZ2VyU2V0OjpyZW1vdmVDb25uZWN0aW9u
KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNN
YWluKCkpOworCisgICAgYXV0byBjb25uZWN0aW9uSUQgPSBjb25uZWN0aW9uLnVuaXF1ZUlEKCk7
CisgICAgQVNTRVJUKG1fY29ubmVjdGlvbnMuY29udGFpbnMoY29ubmVjdGlvbklEKSk7CisgICAg
bV9jb25uZWN0aW9ucy5yZW1vdmUoY29ubmVjdGlvbklEKTsKKyAgICBjb25uZWN0aW9uLnJlbW92
ZVdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXJTZXQ6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSk7CisKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb25uZWN0aW9uSURdKCkgeworICAgICAgICBm
b3IgKGF1dG8mIHN0b3JhZ2VBcmVhIDogbV9zdG9yYWdlQXJlYXMudmFsdWVzKCkpCisgICAgICAg
ICAgICBzdG9yYWdlQXJlYS0+cmVtb3ZlTGlzdGVuZXIoY29ubmVjdGlvbklEKTsKKyAgICB9KTsK
K30KKwordm9pZCBTdG9yYWdlTWFuYWdlclNldDo6d2FpdFVudGlsVGFza3NGaW5pc2hlZCgpCit7
CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIEJpbmFyeVNlbWFwaG9yZSBz
ZW1hcGhvcmU7CisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsICZzZW1hcGhvcmVdIHsKKyAg
ICAgICAgZm9yIChhdXRvJiBbc2Vzc2lvbklELCBzdG9yYWdlTWFuYWdlcl0gOiBtX3N0b3JhZ2VN
YW5hZ2VycykKKyAgICAgICAgICAgIHN0b3JhZ2VNYW5hZ2VyLT5jbGVhclN0b3JhZ2VOYW1lc3Bh
Y2VzKCk7CisKKyAgICAgICAgbV9zdG9yYWdlTWFuYWdlcnMuY2xlYXIoKTsKKyAgICAgICAgbV9z
dG9yYWdlQXJlYXMuY2xlYXIoKTsKKworICAgICAgICBzZW1hcGhvcmUuc2lnbmFsKCk7CisgICAg
fSk7CisgICAgc2VtYXBob3JlLndhaXQoKTsKK30KKwordm9pZCBTdG9yYWdlTWFuYWdlclNldDo6
d2FpdFVudGlsU3luY2luZ0xvY2FsU3RvcmFnZUZpbmlzaGVkKCkKK3sKKyAgICBBU1NFUlQoUnVu
TG9vcDo6aXNNYWluKCkpOworCisgICAgQmluYXJ5U2VtYXBob3JlIHNlbWFwaG9yZTsKKyAgICBt
X3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgJnNlbWFwaG9yZV0geworICAgICAgICBmb3IgKGF1dG8q
IHN0b3JhZ2VBcmVhIDogbV9zdG9yYWdlQXJlYXMudmFsdWVzKCkpCisgICAgICAgICAgICBzdG9y
YWdlQXJlYS0+c3luY1RvRGF0YWJhc2UoKTsKKworICAgICAgICBzZW1hcGhvcmUuc2lnbmFsKCk7
CisgICAgfSk7CisgICAgc2VtYXBob3JlLndhaXQoKTsKK30KKwordm9pZCBTdG9yYWdlTWFuYWdl
clNldDo6c3VzcGVuZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIENvbXBsZXRpb25I
YW5kbGVyQ2FsbGluZ1Njb3BlIGNvbXBsZXRpb25IYW5kbGVyQ2FsbGVyKFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKKyAgICBMb2NrZXI8TG9jaz4gc3RhdGVMb2NrZXIobV9zdGF0ZUxvY2sp
OworICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpSdW5uaW5nKQorICAgICAgICByZXR1cm47Cisg
ICAgbV9zdGF0ZSA9IFN0YXRlOjpXaWxsU3VzcGVuZDsKKworICAgIG1fcXVldWUtPmRpc3BhdGNo
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVy
ID0gY29tcGxldGlvbkhhbmRsZXJDYWxsZXIucmVsZWFzZSgpXSAoKSBtdXRhYmxlIHsKKyAgICAg
ICAgTG9ja2VyPExvY2s+IHN0YXRlTG9ja2VyKG1fc3RhdGVMb2NrKTsKKyAgICAgICAgQVNTRVJU
KG1fc3RhdGUgIT0gU3RhdGU6OlN1c3BlbmRlZCk7CisKKyAgICAgICAgaWYgKG1fc3RhdGUgIT0g
U3RhdGU6OldpbGxTdXNwZW5kKSB7CisgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0
Y2goV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpTdXNwZW5kZWQ7CisgICAgICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisKKyAg
ICAgICAgd2hpbGUgKG1fc3RhdGUgPT0gU3RhdGU6OlN1c3BlbmRlZCkKKyAgICAgICAgICAgIG1f
c3RhdGVDaGFuZ2VDb25kaXRpb24ud2FpdChtX3N0YXRlTG9jayk7CisgICAgICAgIEFTU0VSVCht
X3N0YXRlID09IFN0YXRlOjpSdW5uaW5nKTsKKyAgICB9KTsKK30KKwordm9pZCBTdG9yYWdlTWFu
YWdlclNldDo6cmVzdW1lKCkKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworCisg
ICAgTG9ja2VyPExvY2s+IHN0YXRlTG9ja2VyKG1fc3RhdGVMb2NrKTsKKyAgICBhdXRvIHByZXZp
b3VzU3RhdGUgPSBtX3N0YXRlOworICAgIG1fc3RhdGUgPSBTdGF0ZTo6UnVubmluZzsKKyAgICBp
ZiAocHJldmlvdXNTdGF0ZSA9PSBTdGF0ZTo6U3VzcGVuZGVkKQorICAgICAgICBtX3N0YXRlQ2hh
bmdlQ29uZGl0aW9uLm5vdGlmeU9uZSgpOworfQorCit2b2lkIFN0b3JhZ2VNYW5hZ2VyU2V0Ojpn
ZXRTZXNzaW9uU3RvcmFnZU9yaWdpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKEhhc2hTZXQ8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzZXNzaW9uSUQsIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8q
IHN0b3JhZ2VNYW5hZ2VyID0gbV9zdG9yYWdlTWFuYWdlcnMuZ2V0KHNlc3Npb25JRCk7CisgICAg
ICAgIEFTU0VSVChzdG9yYWdlTWFuYWdlcik7CisKKyAgICAgICAgc3RvcmFnZU1hbmFnZXItPmdl
dFNlc3Npb25TdG9yYWdlT3JpZ2lucyhXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAg
fSk7Cit9CisKK3ZvaWQgU3RvcmFnZU1hbmFnZXJTZXQ6OmRlbGV0ZVNlc3Npb25TdG9yYWdlKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQoreworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIHNlc3Npb25JRCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byogc3RvcmFn
ZU1hbmFnZXIgPSBtX3N0b3JhZ2VNYW5hZ2Vycy5nZXQoc2Vzc2lvbklEKTsKKyAgICAgICAgQVNT
RVJUKHN0b3JhZ2VNYW5hZ2VyKTsKKworICAgICAgICBzdG9yYWdlTWFuYWdlci0+ZGVsZXRlU2Vz
c2lvblN0b3JhZ2VPcmlnaW5zKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICB9KTsK
K30KKwordm9pZCBTdG9yYWdlTWFuYWdlclNldDo6ZGVsZXRlU2Vzc2lvblN0b3JhZ2VGb3JPcmln
aW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YT4mIG9yaWdpbkRhdGFzLCBEZWxldGVDYWxsYmFjayYmIGNvbXBsZXRpb25I
YW5kbGVyKQoreworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIHNlc3Npb25JRCwgY29waWVkT3JpZ2luRGF0YXMgPSBjcm9zc1RocmVh
ZENvcHkob3JpZ2luRGF0YXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICBhdXRvKiBzdG9yYWdlTWFuYWdlciA9IG1f
c3RvcmFnZU1hbmFnZXJzLmdldChzZXNzaW9uSUQpOworICAgICAgICBBU1NFUlQoc3RvcmFnZU1h
bmFnZXIpOworCisgICAgICAgIHN0b3JhZ2VNYW5hZ2VyLT5kZWxldGVTZXNzaW9uU3RvcmFnZUVu
dHJpZXNGb3JPcmlnaW5zKGNvcGllZE9yaWdpbkRhdGFzLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CisgICAgfSk7Cit9CisKK3ZvaWQgU3RvcmFnZU1hbmFnZXJTZXQ6OmdldExvY2FsU3Rv
cmFnZU9yaWdpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBHZXRPcmlnaW5zQ2FsbGJhY2sm
JiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzZXNzaW9uSUQsIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8q
IHN0b3JhZ2VNYW5hZ2VyID0gbV9zdG9yYWdlTWFuYWdlcnMuZ2V0KHNlc3Npb25JRCk7CisgICAg
ICAgIEFTU0VSVChzdG9yYWdlTWFuYWdlcik7CisKKyAgICAgICAgc3RvcmFnZU1hbmFnZXItPmdl
dExvY2FsU3RvcmFnZU9yaWdpbnMoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIH0p
OworfQorCit2b2lkIFN0b3JhZ2VNYW5hZ2VyU2V0OjpkZWxldGVMb2NhbFN0b3JhZ2VNb2RpZmll
ZFNpbmNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2FsbFRpbWUgdGltZSwgRGVsZXRlQ2Fs
bGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzZXNzaW9uSUQsIHRpbWUsIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Cisg
ICAgICAgIGF1dG8qIHN0b3JhZ2VNYW5hZ2VyID0gbV9zdG9yYWdlTWFuYWdlcnMuZ2V0KHNlc3Np
b25JRCk7CisgICAgICAgIEFTU0VSVChzdG9yYWdlTWFuYWdlcik7CisKKyAgICAgICAgc3RvcmFn
ZU1hbmFnZXItPmRlbGV0ZUxvY2FsU3RvcmFnZU9yaWdpbnNNb2RpZmllZFNpbmNlKHRpbWUsIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICB9KTsKK30KKwordm9pZCBTdG9yYWdlTWFu
YWdlclNldDo6ZGVsZXRlTG9jYWxTdG9yYWdlRm9yT3JpZ2lucyhQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiBvcmlnaW5E
YXRhcywgRGVsZXRlQ2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBtX3F1ZXVl
LT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzZXNzaW9u
SUQsIGNvcGllZE9yaWdpbkRhdGFzID0gY3Jvc3NUaHJlYWRDb3B5KG9yaWdpbkRhdGFzKSwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsK
KyAgICAgICAgYXV0byogc3RvcmFnZU1hbmFnZXIgPSBtX3N0b3JhZ2VNYW5hZ2Vycy5nZXQoc2Vz
c2lvbklEKTsKKyAgICAgICAgQVNTRVJUKHN0b3JhZ2VNYW5hZ2VyKTsKKworICAgICAgICBzdG9y
YWdlTWFuYWdlci0+ZGVsZXRlTG9jYWxTdG9yYWdlRW50cmllc0Zvck9yaWdpbnMoY29waWVkT3Jp
Z2luRGF0YXMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICB9KTsKK30KKwordm9p
ZCBTdG9yYWdlTWFuYWdlclNldDo6Z2V0TG9jYWxTdG9yYWdlT3JpZ2luRGV0YWlscyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPExvY2FsU3Rv
cmFnZURhdGFiYXNlVHJhY2tlcjo6T3JpZ2luRGV0YWlscz4mJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit7CisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgc2Vzc2lvbklELCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICBhdXRvKiBzdG9yYWdlTWFuYWdlciA9
IG1fc3RvcmFnZU1hbmFnZXJzLmdldChzZXNzaW9uSUQpOworICAgICAgICBBU1NFUlQoc3RvcmFn
ZU1hbmFnZXIpOworCisgICAgICAgIHN0b3JhZ2VNYW5hZ2VyLT5nZXRMb2NhbFN0b3JhZ2VPcmln
aW5EZXRhaWxzKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICB9KTsKK30KKwordm9p
ZCBTdG9yYWdlTWFuYWdlclNldDo6Y29ubmVjdFRvTG9jYWxTdG9yYWdlQXJlYShJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3Qgc3Rv
cmFnZU5hbWVzcGFjZUlELCBTZWN1cml0eU9yaWdpbkRhdGEmJiBvcmlnaW5EYXRhLCBDb25uZWN0
VG9TdG9yYWdlQXJlYUNhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJU
KCFSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBhdXRvKiBzdG9yYWdlTWFuYWdlciA9IG1fc3Rv
cmFnZU1hbmFnZXJzLmdldChzZXNzaW9uSUQpOworICAgIGlmICghc3RvcmFnZU1hbmFnZXIpIHsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoaW52YWxpZFN0b3JhZ2VBcmVhSUQpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgYXV0byogc3RvcmFnZUFyZWEgPSBzdG9yYWdlTWFuYWdl
ci0+Y3JlYXRlTG9jYWxTdG9yYWdlQXJlYShzdG9yYWdlTmFtZXNwYWNlSUQsIFdURk1vdmUob3Jp
Z2luRGF0YSkpOworICAgIGlmICghc3RvcmFnZUFyZWEpIHsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoaW52YWxpZFN0b3JhZ2VBcmVhSUQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgYXV0byBzdG9yYWdlQXJlYUlEID0gc3RvcmFnZUFyZWEtPmlkZW50aWZpZXIoKTsKKyAgICBh
dXRvW2l0ZXIsIGlzTmV3RW50cnldID0gbV9zdG9yYWdlQXJlYXMuYWRkKHN0b3JhZ2VBcmVhSUQs
IG51bGxwdHIpOworICAgIGlmIChpc05ld0VudHJ5KSB7CisgICAgICAgIHN0b3JhZ2VBcmVhLT5z
ZXRXb3JrUXVldWUobV9xdWV1ZS5wdHIoKSk7CisgICAgICAgIGl0ZXItPnZhbHVlID0gc3RvcmFn
ZUFyZWE7CisgICAgfSBlbHNlCisgICAgICAgIEFTU0VSVChzdG9yYWdlQXJlYSA9PSBpdGVyLT52
YWx1ZSk7CisKKyAgICBjb21wbGV0aW9uSGFuZGxlcihzdG9yYWdlQXJlYUlEKTsKKworICAgIHN0
b3JhZ2VBcmVhLT5hZGRMaXN0ZW5lcihjb25uZWN0aW9uLnVuaXF1ZUlEKCkpOworfQorCit2b2lk
IFN0b3JhZ2VNYW5hZ2VyU2V0Ojpjb25uZWN0VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50
NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIFNlY3VyaXR5T3JpZ2luRGF0YSYmIHRvcExldmVsT3Jp
Z2luRGF0YSwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgb3JpZ2luRGF0YSwgQ29ubmVjdFRvU3RvcmFn
ZUFyZWFDYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIEFTU0VSVCghUnVuTG9v
cDo6aXNNYWluKCkpOworCisgICAgYXV0byogc3RvcmFnZU1hbmFnZXIgPSBtX3N0b3JhZ2VNYW5h
Z2Vycy5nZXQoc2Vzc2lvbklEKTsKKyAgICBpZiAoIXN0b3JhZ2VNYW5hZ2VyKSB7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKGludmFsaWRTdG9yYWdlQXJlYUlEKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGF1dG8qIHN0b3JhZ2VBcmVhID0gc3RvcmFnZU1hbmFnZXItPmNyZWF0
ZVRyYW5zaWVudExvY2FsU3RvcmFnZUFyZWEoc3RvcmFnZU5hbWVzcGFjZUlELCBXVEZNb3ZlKHRv
cExldmVsT3JpZ2luRGF0YSksIFdURk1vdmUob3JpZ2luRGF0YSkpOworICAgIGlmICghc3RvcmFn
ZUFyZWEpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoaW52YWxpZFN0b3JhZ2VBcmVhSUQp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBzdG9yYWdlQXJlYUlEID0gc3Rv
cmFnZUFyZWEtPmlkZW50aWZpZXIoKTsKKyAgICBhdXRvW2l0ZXIsIGlzTmV3RW50cnldID0gbV9z
dG9yYWdlQXJlYXMuYWRkKHN0b3JhZ2VBcmVhSUQsIG51bGxwdHIpOworICAgIGlmIChpc05ld0Vu
dHJ5KQorICAgICAgICBpdGVyLT52YWx1ZSA9IHN0b3JhZ2VBcmVhOworICAgIGVsc2UKKyAgICAg
ICAgQVNTRVJUKHN0b3JhZ2VBcmVhID09IGl0ZXItPnZhbHVlKTsKKworICAgIGNvbXBsZXRpb25I
YW5kbGVyKHN0b3JhZ2VBcmVhSUQpOworCisgICAgc3RvcmFnZUFyZWEtPmFkZExpc3RlbmVyKGNv
bm5lY3Rpb24udW5pcXVlSUQoKSk7Cit9CisKK3ZvaWQgU3RvcmFnZU1hbmFnZXJTZXQ6OmNvbm5l
Y3RUb1Nlc3Npb25TdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBTZWN1cml0
eU9yaWdpbkRhdGEmJiBvcmlnaW5EYXRhLCBDb25uZWN0VG9TdG9yYWdlQXJlYUNhbGxiYWNrJiYg
Y29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisK
KyAgICBhdXRvKiBzdG9yYWdlTWFuYWdlciA9IG1fc3RvcmFnZU1hbmFnZXJzLmdldChzZXNzaW9u
SUQpOworICAgIGlmICghc3RvcmFnZU1hbmFnZXIpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoaW52YWxpZFN0b3JhZ2VBcmVhSUQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
YXV0byogc3RvcmFnZUFyZWEgPSBzdG9yYWdlTWFuYWdlci0+Y3JlYXRlU2Vzc2lvblN0b3JhZ2VB
cmVhKHN0b3JhZ2VOYW1lc3BhY2VJRCwgV1RGTW92ZShvcmlnaW5EYXRhKSk7CisgICAgaWYgKCFz
dG9yYWdlQXJlYSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihpbnZhbGlkU3RvcmFnZUFy
ZWFJRCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIHN0b3JhZ2VBcmVhSUQg
PSBzdG9yYWdlQXJlYS0+aWRlbnRpZmllcigpOworICAgIGF1dG9baXRlciwgaXNOZXdFbnRyeV0g
PSBtX3N0b3JhZ2VBcmVhcy5hZGQoc3RvcmFnZUFyZWFJRCwgbnVsbHB0cik7CisgICAgaWYgKGlz
TmV3RW50cnkpCisgICAgICAgIGl0ZXItPnZhbHVlID0gc3RvcmFnZUFyZWE7CisgICAgZWxzZQor
ICAgICAgICBBU1NFUlQoc3RvcmFnZUFyZWEgPT0gaXRlci0+dmFsdWUpOworCisgICAgY29tcGxl
dGlvbkhhbmRsZXIoc3RvcmFnZUFyZWFJRCk7CisgICAgCisgICAgc3RvcmFnZUFyZWEtPmFkZExp
c3RlbmVyKGNvbm5lY3Rpb24udW5pcXVlSUQoKSk7Cit9CisKK3ZvaWQgU3RvcmFnZU1hbmFnZXJT
ZXQ6OmRpc2Nvbm5lY3RGcm9tU3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
LCB1aW50NjRfdCBzdG9yYWdlQXJlYUlEKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWlu
KCkpOworCisgICAgYXV0byogc3RvcmFnZUFyZWEgPSBtX3N0b3JhZ2VBcmVhcy5nZXQoc3RvcmFn
ZUFyZWFJRCk7CisgICAgQVNTRVJUKHN0b3JhZ2VBcmVhKTsKKyAgICBBU1NFUlQoc3RvcmFnZUFy
ZWEtPmhhc0xpc3RlbmVyKGNvbm5lY3Rpb24udW5pcXVlSUQoKSkpOworCisgICAgc3RvcmFnZUFy
ZWEtPnJlbW92ZUxpc3RlbmVyKGNvbm5lY3Rpb24udW5pcXVlSUQoKSk7Cit9CisKK3ZvaWQgU3Rv
cmFnZU1hbmFnZXJTZXQ6OmdldFZhbHVlcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVp
bnQ2NF90IHN0b3JhZ2VBcmVhSUQsIEdldFZhbHVlc0NhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRs
ZXIpCit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBhdXRvKiBzdG9y
YWdlQXJlYSA9IG1fc3RvcmFnZUFyZWFzLmdldChzdG9yYWdlQXJlYUlEKTsKKyAgICBBU1NFUlQo
IXN0b3JhZ2VBcmVhIHx8IHN0b3JhZ2VBcmVhLT5oYXNMaXN0ZW5lcihjb25uZWN0aW9uLnVuaXF1
ZUlEKCkpKTsKKworICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0b3JhZ2VBcmVhID8gc3RvcmFnZUFy
ZWEtPml0ZW1zKCkgOiBIYXNoTWFwPFN0cmluZywgU3RyaW5nPigpKTsKK30KKwordm9pZCBTdG9y
YWdlTWFuYWdlclNldDo6c2V0SXRlbShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVpbnQ2
NF90IHN0b3JhZ2VBcmVhSUQsIHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIHVpbnQ2NF90
IHN0b3JhZ2VNYXBTZWVkLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwg
Y29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4o
KSk7CisKKyAgICBhdXRvKiBzdG9yYWdlQXJlYSA9IG1fc3RvcmFnZUFyZWFzLmdldChzdG9yYWdl
QXJlYUlEKTsKKyAgICBBU1NFUlQoc3RvcmFnZUFyZWEpOworCisgICAgYm9vbCBxdW90YUVycm9y
OworICAgIHN0b3JhZ2VBcmVhLT5zZXRJdGVtKGNvbm5lY3Rpb24udW5pcXVlSUQoKSwgc291cmNl
U3RvcmFnZUFyZWFJRCwga2V5LCB2YWx1ZSwgdXJsU3RyaW5nLCBxdW90YUVycm9yKTsKKworICAg
IGNvbm5lY3Rpb24uc2VuZChNZXNzYWdlczo6U3RvcmFnZUFyZWFNYXA6OkRpZFNldEl0ZW0oc3Rv
cmFnZU1hcFNlZWQsIGtleSwgcXVvdGFFcnJvciksIHN0b3JhZ2VBcmVhSUQpOworfSAKKwordm9p
ZCBTdG9yYWdlTWFuYWdlclNldDo6cmVtb3ZlSXRlbShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIHVpbnQ2NF90IHN0b3JhZ2VBcmVhSUQsIHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQs
IHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5n
JiB1cmxTdHJpbmcpCit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBh
dXRvKiBzdG9yYWdlQXJlYSA9IG1fc3RvcmFnZUFyZWFzLmdldChzdG9yYWdlQXJlYUlEKTsKKyAg
ICBBU1NFUlQoc3RvcmFnZUFyZWEpOworCisgICAgc3RvcmFnZUFyZWEtPnJlbW92ZUl0ZW0oY29u
bmVjdGlvbi51bmlxdWVJRCgpLCBzb3VyY2VTdG9yYWdlQXJlYUlELCBrZXksIHVybFN0cmluZyk7
CisKKyAgICBjb25uZWN0aW9uLnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VBcmVhTWFwOjpEaWRSZW1v
dmVJdGVtKHN0b3JhZ2VNYXBTZWVkLCBrZXkpLCBzdG9yYWdlQXJlYUlEKTsKK30KKwordm9pZCBT
dG9yYWdlTWFuYWdlclNldDo6Y2xlYXIoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCB1aW50
NjRfdCBzdG9yYWdlQXJlYUlELCB1aW50NjRfdCBzb3VyY2VTdG9yYWdlQXJlYUlELCB1aW50NjRf
dCBzdG9yYWdlTWFwU2VlZCwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCit7CisgICAgQVNTRVJU
KCFSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBhdXRvKiBzdG9yYWdlQXJlYSA9IG1fc3RvcmFn
ZUFyZWFzLmdldChzdG9yYWdlQXJlYUlEKTsKKyAgICBBU1NFUlQoc3RvcmFnZUFyZWEpOworCisg
ICAgc3RvcmFnZUFyZWEtPmNsZWFyKGNvbm5lY3Rpb24udW5pcXVlSUQoKSwgc291cmNlU3RvcmFn
ZUFyZWFJRCwgdXJsU3RyaW5nKTsKKworICAgIGNvbm5lY3Rpb24uc2VuZChNZXNzYWdlczo6U3Rv
cmFnZUFyZWFNYXA6OkRpZENsZWFyKHN0b3JhZ2VNYXBTZWVkKSwgc3RvcmFnZUFyZWFJRCk7Cit9
CisKK3ZvaWQgU3RvcmFnZU1hbmFnZXJTZXQ6OmNsb25lU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2Uo
SVBDOjpDb25uZWN0aW9uJiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBmcm9t
U3RvcmFnZU5hbWVzcGFjZUlELCB1aW50NjRfdCB0b1N0b3JhZ2VOYW1lc3BhY2VJRCkKK3sKKyAg
ICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIGlmIChhdXRvKiBzdG9yYWdlTWFu
YWdlciA9IG1fc3RvcmFnZU1hbmFnZXJzLmdldChzZXNzaW9uSUQpKQorICAgICAgICBzdG9yYWdl
TWFuYWdlci0+Y2xvbmVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShmcm9tU3RvcmFnZU5hbWVzcGFj
ZUlELCB0b1N0b3JhZ2VOYW1lc3BhY2VJRCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3Jh
Z2VNYW5hZ2VyU2V0LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2Uv
U3RvcmFnZU1hbmFnZXJTZXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NzAzMmFjM2UyYWM4NmY5OGM5MDkwYzI2
ZTk4ZjVjYTA3ODBlMWIyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0LmgKQEAgLTAsMCArMSwxMDMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKKyNpbmNsdWRlICJTdG9yYWdlTWFu
YWdlci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+CisjaW5jbHVk
ZSA8cGFsL1Nlc3Npb25JRC5oPgorCit1c2luZyBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE7
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBTYW5kYm94RXh0ZW5zaW9uOworCit1c2lu
ZyBDb25uZWN0VG9TdG9yYWdlQXJlYUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1
aW50NjRfdCk+OwordXNpbmcgR2V0VmFsdWVzQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+Jik+OwordXNpbmcgR2V0T3JpZ2luc0Nh
bGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0PFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YT4mJik+OwordXNpbmcgR2V0T3JpZ2luRGV0YWlsc0NhbGxiYWNrID0gQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpPcmln
aW5EZXRhaWxzPiYmKT47Cit1c2luZyBEZWxldGVDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT47CisKK2NsYXNzIFN0b3JhZ2VNYW5hZ2VyU2V0IDogcHVibGljIElQQzo6Q29ubmVj
dGlvbjo6V29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVm
PFN0b3JhZ2VNYW5hZ2VyU2V0PiBjcmVhdGUoKTsKKyAgICBTdG9yYWdlTWFuYWdlclNldCgpOwor
ICAgIH5TdG9yYWdlTWFuYWdlclNldCgpOworCisgICAgdm9pZCBhZGQoUEFMOjpTZXNzaW9uSUQs
IGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGUmIGxvY2FsU3RvcmFnZURpcmVjdG9yeUhhbmRsZSk7CisgICAgdm9pZCByZW1vdmUoUEFM
OjpTZXNzaW9uSUQpOworICAgIGJvb2wgY29udGFpbnMoUEFMOjpTZXNzaW9uSUQpOworCisgICAg
dm9pZCBhZGRDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiYpOworICAgIHZvaWQgcmVtb3ZlQ29u
bmVjdGlvbihJUEM6OkNvbm5lY3Rpb24mKTsKKworICAgIHZvaWQgd2FpdFVudGlsVGFza3NGaW5p
c2hlZCgpOworICAgIHZvaWQgd2FpdFVudGlsU3luY2luZ0xvY2FsU3RvcmFnZUZpbmlzaGVkKCk7
CisgICAgdm9pZCBzdXNwZW5kKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9p
ZCByZXN1bWUoKTsKKworICAgIHZvaWQgZ2V0U2Vzc2lvblN0b3JhZ2VPcmlnaW5zKFBBTDo6U2Vz
c2lvbklELCBHZXRPcmlnaW5zQ2FsbGJhY2smJik7CisgICAgdm9pZCBkZWxldGVTZXNzaW9uU3Rv
cmFnZShQQUw6OlNlc3Npb25JRCwgRGVsZXRlQ2FsbGJhY2smJik7CisgICAgdm9pZCBkZWxldGVT
ZXNzaW9uU3RvcmFnZUZvck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiwgRGVsZXRlQ2FsbGJhY2smJik7CisgICAgdm9pZCBn
ZXRMb2NhbFN0b3JhZ2VPcmlnaW5zKFBBTDo6U2Vzc2lvbklELCBHZXRPcmlnaW5zQ2FsbGJhY2sm
Jik7CisgICAgdm9pZCBkZWxldGVMb2NhbFN0b3JhZ2VNb2RpZmllZFNpbmNlKFBBTDo6U2Vzc2lv
bklELCBXYWxsVGltZSwgRGVsZXRlQ2FsbGJhY2smJik7CisgICAgdm9pZCBkZWxldGVMb2NhbFN0
b3JhZ2VGb3JPcmlnaW5zKFBBTDo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhPiYsIERlbGV0ZUNhbGxiYWNrJiYpOworICAgIHZvaWQgZ2V0TG9jYWxT
dG9yYWdlT3JpZ2luRGV0YWlscyhQQUw6OlNlc3Npb25JRCwgR2V0T3JpZ2luRGV0YWlsc0NhbGxi
YWNrJiYpOworCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6OkRlY29kZXImKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgcmVw
bHlFbmNvZGVyKTsKKworcHJpdmF0ZToKKyAgICAvLyBNZXNzYWdlIEhhbmRsZXJzCisgICAgdm9p
ZCBjb25uZWN0VG9Mb2NhbFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbiYsIFBBTDo6U2Vzc2lv
bklEICwgdWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBTZWN1cml0eU9yaWdpbkRhdGEmJiwg
Q29ubmVjdFRvU3RvcmFnZUFyZWFDYWxsYmFjayYmKTsKKyAgICB2b2lkIGNvbm5lY3RUb1RyYW5z
aWVudExvY2FsU3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uJiwgUEFMOjpTZXNzaW9uSUQgLCB1
aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIFNlY3VyaXR5T3JpZ2luRGF0YSYmLCBTZWN1cml0
eU9yaWdpbkRhdGEmJiwgQ29ubmVjdFRvU3RvcmFnZUFyZWFDYWxsYmFjayYmKTsKKyAgICB2b2lk
IGNvbm5lY3RUb1Nlc3Npb25TdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb24mLCBQQUw6OlNlc3Np
b25JRCwgdWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBTZWN1cml0eU9yaWdpbkRhdGEmJiwg
Q29ubmVjdFRvU3RvcmFnZUFyZWFDYWxsYmFjayYmKTsKKyAgICB2b2lkIGRpc2Nvbm5lY3RGcm9t
U3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uJiwgdWludDY0X3Qgc3RvcmFnZUFyZWFJRCk7Cisg
ICAgdm9pZCBnZXRWYWx1ZXMoSVBDOjpDb25uZWN0aW9uJiwgdWludDY0X3Qgc3RvcmFnZUFyZWFJ
RCwgR2V0VmFsdWVzQ2FsbGJhY2smJik7CisgICAgdm9pZCBzZXRJdGVtKElQQzo6Q29ubmVjdGlv
biYsIHVpbnQ2NF90IHN0b3JhZ2VBcmVhSUQsIHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQs
IHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5n
JiB2YWx1ZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpOworICAgIHZvaWQgcmVtb3ZlSXRlbShJ
UEM6OkNvbm5lY3Rpb24mLCB1aW50NjRfdCBzdG9yYWdlQXJlYUlELCB1aW50NjRfdCBzb3VyY2VT
dG9yYWdlQXJlYUlELCB1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCwgY29uc3QgU3RyaW5nJiBrZXks
IGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKTsKKyAgICB2b2lkIGNsZWFyKElQQzo6Q29ubmVjdGlv
biYsIHVpbnQ2NF90IHN0b3JhZ2VBcmVhSUQsIHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQs
IHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZyk7CisgICAg
dm9pZCBjbG9uZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKElQQzo6Q29ubmVjdGlvbiYsIFBBTDo6
U2Vzc2lvbklELCB1aW50NjRfdCBmcm9tU3RvcmFnZU5hbWVzcGFjZUlELCB1aW50NjRfdCB0b1N0
b3JhZ2VOYW1lc3BhY2VJRCk7CisKKyAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBSZWZQdHI8
U3RvcmFnZU1hbmFnZXI+PiBtX3N0b3JhZ2VNYW5hZ2VyczsKKyAgICBIYXNoTWFwPFBBTDo6U2Vz
c2lvbklELCBTdHJpbmc+IG1fc3RvcmFnZU1hbmFnZXJQYXRoczsKKyAgICBIYXNoTWFwPHVpbnQ2
NF90LCBTdG9yYWdlQXJlYSo+IG1fc3RvcmFnZUFyZWFzOworCisgICAgSGFzaFNldDxJUEM6OkNv
bm5lY3Rpb246OlVuaXF1ZUlEPiBtX2Nvbm5lY3Rpb25zOworICAgIFJlZjxXb3JrUXVldWU+IG1f
cXVldWU7CisKKyAgICBlbnVtIGNsYXNzIFN0YXRlIHsKKyAgICAgICAgUnVubmluZywKKyAgICAg
ICAgV2lsbFN1c3BlbmQsCisgICAgICAgIFN1c3BlbmRlZAorICAgIH07CisgICAgU3RhdGUgbV9z
dGF0ZSB7IFN0YXRlOjpSdW5uaW5nIH07CisgICAgTG9jayBtX3N0YXRlTG9jazsKKyAgICBDb25k
aXRpb24gbV9zdGF0ZUNoYW5nZUNvbmRpdGlvbjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0
b3JhZ2VNYW5hZ2VyU2V0Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0Lm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUw
YzEzYTAwYmMzNWI5MTVmZWFkODQwMDVkYTM0N2QyN2M3ZDE3ZDYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJT
ZXQubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwzNCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5E
CisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCittZXNzYWdlcyAtPiBTdG9yYWdlTWFuYWdlclNldCB7CisgICAgQ29u
bmVjdFRvTG9jYWxTdG9yYWdlQXJlYShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90
IHN0b3JhZ2VOYW1lc3BhY2VJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBz
ZWN1cml0eU9yaWdpbkRhdGEpIC0+ICh1aW50NjRfdCBzdG9yYWdlQXJlYUlEKSBTeW5jaHJvbm91
cyBXYW50c0Nvbm5lY3Rpb24KKyAgICBDb25uZWN0VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVh
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBz
dHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHRvcExldmVsU2VjdXJpdHlPcmlnaW5E
YXRhLCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHNlY3VyaXR5T3JpZ2luRGF0
YSkgLT4gKHVpbnQ2NF90IHN0b3JhZ2VBcmVhSUQpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlv
bgorICAgIENvbm5lY3RUb1Nlc3Npb25TdG9yYWdlQXJlYShQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSBzZWN1cml0eU9yaWdpbkRhdGEpIC0+ICh1aW50NjRfdCBzdG9yYWdlQXJlYUlE
KSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KKyAgICBEaXNjb25uZWN0RnJvbVN0b3JhZ2VB
cmVhKHVpbnQ2NF90IHN0b3JhZ2VBcmVhSUQpIFdhbnRzQ29ubmVjdGlvbgorICAgIEdldFZhbHVl
cyh1aW50NjRfdCBzdG9yYWdlQXJlYUlEKSAtPiAoSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gdmFs
dWVzKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KKyAgICBDbG9uZVNlc3Npb25TdG9yYWdl
TmFtZXNwYWNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgZnJvbVN0b3JhZ2VO
YW1lc3BhY2VJRCwgdWludDY0X3QgdG9TdG9yYWdlTmFtZXNwYWNlSUQpIFdhbnRzQ29ubmVjdGlv
bgorCisgICAgU2V0SXRlbSh1aW50NjRfdCBzdG9yYWdlQXJlYUlELCB1aW50NjRfdCBzb3VyY2VT
dG9yYWdlQXJlYUlELCB1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCwgU3RyaW5nIGtleSwgU3RyaW5n
IHZhbHVlLCBTdHJpbmcgdXJsU3RyaW5nKSBXYW50c0Nvbm5lY3Rpb24KKyAgICBSZW1vdmVJdGVt
KHVpbnQ2NF90IHN0b3JhZ2VBcmVhSUQsIHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIHVp
bnQ2NF90IHN0b3JhZ2VNYXBTZWVkLCBTdHJpbmcga2V5LCBTdHJpbmcgdXJsU3RyaW5nKSBXYW50
c0Nvbm5lY3Rpb24KKyAgICBDbGVhcih1aW50NjRfdCBzdG9yYWdlQXJlYUlELCB1aW50NjRfdCBz
b3VyY2VTdG9yYWdlQXJlYUlELCB1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCwgU3RyaW5nIHVybFN0
cmluZykgV2FudHNDb25uZWN0aW9uCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5jcHAKaW5kZXggZDkxYTM0ZjZhOTI3MjVjMTQxNzcz
ZjA4YWI0MjllN2U4ZTU4NjNjMy4uZjE4ZGQxNmJlMjZhNzhmZjBlODYyMzk2OTk0MzY2MjY1YjFh
ODJkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBh
cmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQ
YXJhbWV0ZXJzLmNwcApAQCAtNTMsNiArNTMsOCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmVQYXJh
bWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIg
PDwgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSA8PCBzZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogI2VuZGlmCiAKKyAgICBlbmNvZGVy
IDw8IGxvY2FsU3RvcmFnZURpcmVjdG9yeSA8PCBsb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNp
b25IYW5kbGU7CisKICAgICBlbmNvZGVyIDw8IHBlck9yaWdpblN0b3JhZ2VRdW90YTsKICAgICBl
bmNvZGVyIDw8IHBlclRoaXJkUGFydHlPcmlnaW5TdG9yYWdlUXVvdGE7CiB9CkBAIC0xMjEsNiAr
MTIzLDE4IEBAIE9wdGlvbmFsPFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzPiBXZWJzaXRlRGF0
YVN0b3JlUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjCiAgICAgcGFyYW1ldGVycy5zZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgqc2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAjZW5kaWYK
IAorICAgIE9wdGlvbmFsPFN0cmluZz4gbG9jYWxTdG9yYWdlRGlyZWN0b3J5OworICAgIGRlY29k
ZXIgPj4gbG9jYWxTdG9yYWdlRGlyZWN0b3J5OworICAgIGlmICghbG9jYWxTdG9yYWdlRGlyZWN0
b3J5KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHBhcmFtZXRlcnMubG9jYWxT
dG9yYWdlRGlyZWN0b3J5ID0gV1RGTW92ZSgqbG9jYWxTdG9yYWdlRGlyZWN0b3J5KTsKKworICAg
IE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gbG9jYWxTdG9yYWdlRGlyZWN0b3J5
RXh0ZW5zaW9uSGFuZGxlOworICAgIGRlY29kZXIgPj4gbG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0
ZW5zaW9uSGFuZGxlOworICAgIGlmICghbG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFu
ZGxlKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHBhcmFtZXRlcnMubG9jYWxT
dG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgqbG9jYWxTdG9yYWdlRGly
ZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKKwogICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwZXJPcmln
aW5TdG9yYWdlUXVvdGE7CiAgICAgZGVjb2RlciA+PiBwZXJPcmlnaW5TdG9yYWdlUXVvdGE7CiAg
ICAgaWYgKCFwZXJPcmlnaW5TdG9yYWdlUXVvdGEpCkBAIC0xNDksNiArMTYzLDcgQEAgV2Vic2l0
ZURhdGFTdG9yZVBhcmFtZXRlcnMgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM6OnByaXZhdGVT
ZXNzaW9uUGFyYW1ldGVycygKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgICAgICwg
eyB9LCB7IH0KICNlbmRpZgorICAgICAgICAsIHsgfSwgeyB9CiAgICAgfTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmgKaW5kZXgg
OTkyZmVlOTdkMDk5NzRjOWYzNDdmNmM3MGRhYTFjZWJmM2UyZjI0Zi4uNmZlY2UzZjE1NGZlOWQ3
ZmI5OGJmYzk3ZDliMWI3YmZmNDI0ZjM5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oCkBAIC03MCw2ICs3MCw5IEBAIHN0cnVjdCBX
ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyB7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAjZW5k
aWYKIAorICAgIFN0cmluZyBsb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7CisgICAgU2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlIGxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKKwogICAg
IHVpbnQ2NF90IHBlck9yaWdpblN0b3JhZ2VRdW90YSB7IFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1h
bmFnZXI6OmRlZmF1bHRRdW90YSgpIH07CiAgICAgdWludDY0X3QgcGVyVGhpcmRQYXJ0eU9yaWdp
blN0b3JhZ2VRdW90YSB7IFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6OmRlZmF1bHRUaGly
ZFBhcnR5UXVvdGEoKSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50
eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDRiYzIwZmQ1MzE2Y2MwM2YyOTdk
OTRlYjIxYTRlNjJjNWFjYzI0MmQuLmI0NjZkMmM3NDg5ZTYyZDU3ZjA3ODRjZDk3NmUyMTg1NjQ1
MTY0NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNl
L1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtNzAsNiArNzAsNyBAQCBOZXR3b3JrUHJvY2Vzcy9XZWJT
dG9yYWdlL0xvY2FsU3RvcmFnZU5hbWVzcGFjZS5jcHAKIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3Jh
Z2UvU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UuY3BwCiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdl
L1N0b3JhZ2VBcmVhLmNwcAogTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdl
ci5jcHAKK05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQuY3BwCiBO
ZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1RyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZS5j
cHAKIAogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKaW5kZXggZDBlYjMxYWUxNjkw
MDU3NzJhNmJlYzE0MzdjMmI0MzBkMGNiNGU2ZC4uZDgzYzZiOGY5ODA2OTYwMzYyNzZjYmFlZmQ1
NDJkOGE2ZmQwY2QwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRl
eHQuY3BwCkBAIC02NjksMyArNjY5LDE5IEBAIHZvaWQgV0tDb250ZXh0Q2xlYXJDdXJyZW50TW9k
aWZpZXJTdGF0ZUZvclRlc3RpbmcoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYpCiB7CiAgICAgV2Vi
S2l0Ojp0b0ltcGwoY29udGV4dFJlZiktPmNsZWFyQ3VycmVudE1vZGlmaWVyU3RhdGVGb3JUZXN0
aW5nKCk7CiB9CisKK3ZvaWQgV0tDb250ZXh0U3luY0xvY2FsU3RvcmFnZShXS0NvbnRleHRSZWYg
Y29udGV4dFJlZiwgdm9pZCogY29udGV4dCwgV0tDb250ZXh0U3luY0xvY2FsU3RvcmFnZUNhbGxi
YWNrIGNhbGxiYWNrKQoreworICAgIFdlYktpdDo6dG9JbXBsKGNvbnRleHRSZWYpLT5zeW5jTG9j
YWxTdG9yYWdlKFtjb250ZXh0LCBjYWxsYmFja10geworICAgICAgICBpZiAoY2FsbGJhY2spCisg
ICAgICAgICAgICBjYWxsYmFjayhjb250ZXh0KTsKKyAgICB9KTsKK30KKwordm9pZCBXS0NvbnRl
eHRDbGVhckxlZ2FjeVByaXZhdGVCcm93c2luZ0xvY2FsU3RvcmFnZShXS0NvbnRleHRSZWYgY29u
dGV4dFJlZiwgdm9pZCogY29udGV4dCwgV0tDb250ZXh0Q2xlYXJMZWdhY3lQcml2YXRlQnJvd3Np
bmdMb2NhbFN0b3JhZ2VDYWxsYmFjayBjYWxsYmFjaykKK3sKKyAgICBXZWJLaXQ6OnRvSW1wbChj
b250ZXh0UmVmKS0+Y2xlYXJMZWdhY3lQcml2YXRlQnJvd3NpbmdMb2NhbFN0b3JhZ2UoW2NvbnRl
eHQsIGNhbGxiYWNrXSB7CisgICAgICAgIGlmIChjYWxsYmFjaykKKyAgICAgICAgICAgIGNhbGxi
YWNrKGNvbnRleHQpOworICAgIH0pOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tDb250ZXh0UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tDb250ZXh0UHJpdmF0ZS5oCmluZGV4IGY5YzdkMzI5NmU1YzBjZDdmMzM2N2RlMzlh
MDMxZDI4M2ZiZTY2NjYuLjU4ZjFhOTIwOTkxMzU0ZjA3MGY2NWI5ZDNkYTFiYTA3YmY4MzVjMjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dFByaXZh
dGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRQcml2YXRl
LmgKQEAgLTEyMCw2ICsxMjAsMTIgQEAgV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0SURCUGVy
T3JpZ2luUXVvdGEoV0tDb250ZXh0UmVmIGNvbnRleHQsIHVpbnQ2NF90IHF1b3QKIAogV0tfRVhQ
T1JUIHZvaWQgV0tDb250ZXh0Q2xlYXJDdXJyZW50TW9kaWZpZXJTdGF0ZUZvclRlc3RpbmcoV0tD
b250ZXh0UmVmIGNvbnRleHQpOwogCit0eXBlZGVmIHZvaWQgKCpXS0NvbnRleHRTeW5jTG9jYWxT
dG9yYWdlQ2FsbGJhY2spKHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7CitXS19FWFBPUlQgdm9pZCBX
S0NvbnRleHRTeW5jTG9jYWxTdG9yYWdlKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCB2b2lkKiBj
b250ZXh0LCBXS0NvbnRleHRTeW5jTG9jYWxTdG9yYWdlQ2FsbGJhY2sgY2FsbGJhY2spOworCit0
eXBlZGVmIHZvaWQgKCpXS0NvbnRleHRDbGVhckxlZ2FjeVByaXZhdGVCcm93c2luZ0xvY2FsU3Rv
cmFnZUNhbGxiYWNrKSh2b2lkKiBmdW5jdGlvbkNvbnRleHQpOworV0tfRVhQT1JUIHZvaWQgV0tD
b250ZXh0Q2xlYXJMZWdhY3lQcml2YXRlQnJvd3NpbmdMb2NhbFN0b3JhZ2UoV0tDb250ZXh0UmVm
IGNvbnRleHRSZWYsIHZvaWQqIGNvbnRleHQsIFdLQ29udGV4dENsZWFyTGVnYWN5UHJpdmF0ZUJy
b3dzaW5nTG9jYWxTdG9yYWdlQ2FsbGJhY2sgY2FsbGJhY2spOworCiAjaWZkZWYgX19jcGx1c3Bs
dXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKaW5kZXggOTZiMjMzNzQyYzA5YWI2MzNkZWVkNDM5
NDc5MGZlMWE0MzZiMmRjYy4uOGZhYTc2ZjNhNDhhYzhiZTkzZjdiZjM3ODBjYzQ0MzRjNjA2OTU2
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0
YVN0b3JlUmVmLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNp
dGVEYXRhU3RvcmVSZWYuY3BwCkBAIC01MzEsNiArNTMxLDE1IEBAIHZvaWQgV0tXZWJzaXRlRGF0
YVN0b3JlUmVtb3ZlQWxsSW5kZXhlZERhdGFiYXNlcyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0
YVN0b3JlCiAgICAgfSk7CiB9CiAKK3ZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlTG9jYWxT
dG9yYWdlKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQqIGNvbnRleHQs
IFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUxvY2FsU3RvcmFnZUNhbGxiYWNrIGNhbGxiYWNrKQor
eworICAgIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzID0gV2Vi
S2l0OjpXZWJzaXRlRGF0YVR5cGU6OkxvY2FsU3RvcmFnZTsKKyAgICBXZWJLaXQ6OnRvSW1wbChk
YXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVtb3ZlRGF0YShkYXRhVHlwZXMsIC1X
YWxsVGltZTo6aW5maW5pdHkoKSwgW2NvbnRleHQsIGNhbGxiYWNrXSB7CisgICAgICAgIGlmIChj
YWxsYmFjaykKKyAgICAgICAgICAgIGNhbGxiYWNrKGNvbnRleHQpOworICAgIH0pOworfQorCiB2
b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUFsbFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25z
KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vi
c2l0ZURhdGFTdG9yZVJlbW92ZUFsbFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zQ2FsbGJhY2sg
Y2FsbGJhY2spCiB7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAppbmRleCBj
ZGUxNGNhODY3ZTA3YzI3NDU4YWEyNjUwMTdmNzFhYWM5ZDBmYzViLi43ZGVjOTJhMmIxN2M2ZWRj
NzkzOTAzY2Q4M2E4OGNmMTc1ZGMzYmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaApAQCAtMTIxLDYgKzEyMSw5IEBA
IFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUFsbEluZGV4ZWREYXRhYmFz
ZXMoV0tXZWJzaXRlRGF0YVN0b3JlUmVmCiB0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3Rv
cmVHZXRGZXRjaENhY2hlT3JpZ2luc0Z1bmN0aW9uKShXS0FycmF5UmVmLCB2b2lkKik7CiBXS19F
WFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVHZXRGZXRjaENhY2hlT3JpZ2lucyhXS1dlYnNp
dGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRh
U3RvcmVHZXRGZXRjaENhY2hlT3JpZ2luc0Z1bmN0aW9uIGZ1bmN0aW9uKTsKIAordHlwZWRlZiB2
b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlTG9jYWxTdG9yYWdlQ2FsbGJhY2spKHZvaWQq
IGZ1bmN0aW9uQ29udGV4dCk7CitXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVSZW1v
dmVMb2NhbFN0b3JhZ2UoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCog
Y29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlTG9jYWxTdG9yYWdlQ2FsbGJhY2sgY2Fs
bGJhY2spOworCiB0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVHZXRGZXRjaENhY2hl
U2l6ZUZvck9yaWdpbkZ1bmN0aW9uKSh1aW50NjRfdCwgdm9pZCopOwogV0tfRVhQT1JUIHZvaWQg
V0tXZWJzaXRlRGF0YVN0b3JlR2V0RmV0Y2hDYWNoZVNpemVGb3JPcmlnaW4oV0tXZWJzaXRlRGF0
YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgb3JpZ2luLCB2b2lkKiBjb250ZXh0
LCBXS1dlYnNpdGVEYXRhU3RvcmVHZXRGZXRjaENhY2hlU2l6ZUZvck9yaWdpbkZ1bmN0aW9uIGZ1
bmN0aW9uKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmlu
ZGV4IDM2MzY3ZjAwNGNmMWUyMTY1ZDI3YjZhZThlNmZjYjVkYzZmOTEzOGMuLmI5NzY3OTEwNTRi
ODI5NGQ5Zjc5ZTlmMGFhNGI5NmFiYTExNDM3YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTU4Myw4ICs1ODMsOCBAQCBOZXR3b3JrUHJvY2Vzc1By
b3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MoV2Vic2l0ZURhdGFTdG9y
ZSogd2l0aAogICAgIGF1dG8gbG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gbV93ZWJzaXRlRGF0YVN0
b3JlID8gbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVzb2x2ZWRMb2Nh
bFN0b3JhZ2VEaXJlY3RvcnkoKSA6IG51bGxTdHJpbmcoKTsKICAgICBpZiAoIWxvY2FsU3RvcmFn
ZURpcmVjdG9yeSkKICAgICAgICAgbG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gQVBJOjpXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAgcGFyYW1ldGVy
cy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMubG9j
YWxTdG9yYWdlRGlyZWN0b3J5ID0gbG9jYWxTdG9yYWdlRGlyZWN0b3J5OwotICAgIFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShsb2NhbFN0b3JhZ2VE
aXJlY3RvcnksIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nl
c3Npb25QYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7Cisg
ICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJl
Y3RvcnkgPSBsb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7CisgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KGxvY2FsU3RvcmFnZURpcmVjdG9yeSwgcGFy
YW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnlF
eHRlbnNpb25IYW5kbGUpOwogCiAgICAgaWYgKG1fd2Vic2l0ZURhdGFTdG9yZSkKICAgICAgICAg
cGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFt
ZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IG1fd2Vic2l0ZURhdGFTdG9y
ZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlc29sdmVkUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVj
dG9yeSgpOwpAQCAtMTgwOSw2ICsxODA5LDE5IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldElE
QlBlck9yaWdpblF1b3RhKHVpbnQ2NF90IHF1b3RhKQogI2VuZGlmCiB9CiAKK3ZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OnN5bmNMb2NhbFN0b3JhZ2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQoreworICAgIHNlbmRTeW5jVG9OZXR3b3JraW5nUHJvY2VzcyhNZXNz
YWdlczo6TmV0d29ya1Byb2Nlc3M6OlN5bmNMb2NhbFN0b3JhZ2UoKSwgTWVzc2FnZXM6Ok5ldHdv
cmtQcm9jZXNzOjpTeW5jTG9jYWxTdG9yYWdlOjpSZXBseSgpKTsKKyAgICBjb21wbGV0aW9uSGFu
ZGxlcigpOworfQorCit2b2lkIFdlYlByb2Nlc3NQb29sOjpjbGVhckxlZ2FjeVByaXZhdGVCcm93
c2luZ0xvY2FsU3RvcmFnZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit7CisgICAgaWYgKG1fbmV0d29ya1Byb2Nlc3MpCisgICAgICAgIG1fbmV0d29ya1By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpDbGVhckxlZ2FjeVByaXZhdGVC
cm93c2luZ0xvY2FsU3RvcmFnZSgpLCAwKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOworfQor
CiB2b2lkIFdlYlByb2Nlc3NQb29sOjphbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhv
c3QoY29uc3QgV2ViQ2VydGlmaWNhdGVJbmZvKiBjZXJ0aWZpY2F0ZSwgY29uc3QgU3RyaW5nJiBo
b3N0KQogewogICAgIGVuc3VyZU5ldHdvcmtQcm9jZXNzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCAyY2NiNDdmMWFlNjRmYWUzNmFmYzExYTNjMTU1OTBi
NzcwNTM2MzUxLi5lZDZjMjlmZjMyODM4OTY3NjkxMGE4ZmZmZmZhNDJkYWNmNDQxMjhmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTMxNyw2ICszMTcsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBkaXNhYmxlU2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlv
bkRlbGF5KCk7CiAKICAgICB2b2lkIHN5bmNOZXR3b3JrUHJvY2Vzc0Nvb2tpZXMoKTsKKyAgICB2
b2lkIHN5bmNMb2NhbFN0b3JhZ2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNr
KTsKKyAgICB2b2lkIGNsZWFyTGVnYWN5UHJpdmF0ZUJyb3dzaW5nTG9jYWxTdG9yYWdlKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFjayk7CiAKICAgICB2b2lkIHNldElEQlBlck9y
aWdpblF1b3RhKHVpbnQ2NF90KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1t
CmluZGV4IGJhOWZjY2ViOTgzZDVhYzJiY2RkMWMyYWQ4MzQ2YmNkMTQ1ZDg1YTEuLmEwNTQ0ZDA1
YTc3NDYwMmEwMGNkOTJkMjQ0ZmQzNWY3ZjY0Y2JmMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0
YVN0b3JlQ29jb2EubW0KQEAgLTEwOSwxMSArMTA5LDYgQEAgV2Vic2l0ZURhdGFTdG9yZVBhcmFt
ZXRlcnMgV2Vic2l0ZURhdGFTdG9yZTo6cGFyYW1ldGVycygpCiAgICAgaWYgKCFyZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAgU2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KHJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEaXJlY3RvcnksIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnlIYW5kbGUpOwogCi0g
ICAgYXV0byBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSByZXNvbHZlZExvY2FsU3RvcmFnZURpcmVj
dG9yeSgpOwotICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBsb2NhbFN0b3JhZ2VEaXJlY3Rv
cnlFeHRlbnNpb25IYW5kbGU7Ci0gICAgaWYgKCFsb2NhbFN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0
eSgpKQotICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVE
aXJlY3RvcnkobG9jYWxTdG9yYWdlRGlyZWN0b3J5LCBsb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRl
bnNpb25IYW5kbGUpOwotCiAgICAgYXV0byBuZXR3b3JrQ2FjaGVEaXJlY3RvcnkgPSByZXNvbHZl
ZE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpOwogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBu
ZXR3b3JrQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgaWYgKCFuZXR3b3JrQ2Fj
aGVEaXJlY3RvcnkuaXNFbXB0eSgpKQpAQCAtMTQzLDggKzEzOCw2IEBAIFdlYnNpdGVEYXRhU3Rv
cmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMoKQogICAgICAgICBtX2Nv
bmZpZ3VyYXRpb24tPmRldmljZU1hbmFnZW1lbnRSZXN0cmljdGlvbnNFbmFibGVkKCksCiAgICAg
ICAgIG1fY29uZmlndXJhdGlvbi0+YWxsTG9hZHNCbG9ja2VkQnlEZXZpY2VNYW5hZ2VtZW50UmVz
dHJpY3Rpb25zRm9yVGVzdGluZygpLAogICAgICAgICBXVEZNb3ZlKHJlc291cmNlTG9hZFN0YXRp
c3RpY3NNYW51YWxQcmV2YWxlbnRSZXNvdXJjZSksCi0gICAgICAgIFdURk1vdmUobG9jYWxTdG9y
YWdlRGlyZWN0b3J5KSwKLSAgICAgICAgV1RGTW92ZShsb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRl
bnNpb25IYW5kbGUpLAogICAgICAgICBXVEZNb3ZlKG5ldHdvcmtDYWNoZURpcmVjdG9yeSksCiAg
ICAgICAgIFdURk1vdmUobmV0d29ya0NhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKSwKICAg
ICB9OwpAQCAtMTgwLDYgKzE3MywxMCBAQCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJz
aXRlRGF0YVN0b3JlOjpwYXJhbWV0ZXJzKCkKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbkRpcmVjdG9yeSwgcGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
RGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKICNlbmRpZgogCisgICAgcGFyYW1ldGVycy5sb2Nh
bFN0b3JhZ2VEaXJlY3RvcnkgPSByZXNvbHZlZExvY2FsU3RvcmFnZURpcmVjdG9yeSgpOworICAg
IGlmICghcGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKQorICAgICAg
ICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkocGFy
YW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnksIHBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGly
ZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKKwogICAgIHBhcmFtZXRlcnMucGVyT3JpZ2luU3RvcmFn
ZVF1b3RhID0gcGVyT3JpZ2luU3RvcmFnZVF1b3RhKCk7CiAgICAgcGFyYW1ldGVycy5wZXJUaGly
ZFBhcnR5T3JpZ2luU3RvcmFnZVF1b3RhID0gcGVyVGhpcmRQYXJ0eU9yaWdpblN0b3JhZ2VRdW90
YSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IDAyNTg3YjE5ZTE5NGU2MWRmMzFlMzExYzg2MmFk
YjFjZmJjMWNiZDUuLjZmZjFiY2QxYTZjZWZkYjA4MzNkYzJjNjRhNTkzNGI1M2E1ZDlhODEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuY3BwCkBAIC0xOTY5LDggKzE5NjksOCBAQCBXZWJzaXRlRGF0YVN0b3JlUGFy
YW1ldGVycyBXZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0ZXJzKCkKIAogICAgIGF1dG8gbG9jYWxT
dG9yYWdlRGlyZWN0b3J5ID0gcmVzb2x2ZWRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKTsKICAgICBp
ZiAoIWxvY2FsU3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpIHsKLSAgICAgICAgcGFyYW1ldGVy
cy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gbG9jYWxT
dG9yYWdlRGlyZWN0b3J5OwotICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVG
b3JSZWFkV3JpdGVEaXJlY3RvcnkobG9jYWxTdG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLm5l
dHdvcmtTZXNzaW9uUGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5k
bGUpOworICAgICAgICBwYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeSA9IGxvY2FsU3Rv
cmFnZURpcmVjdG9yeTsKKyAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9y
UmVhZFdyaXRlRGlyZWN0b3J5KGxvY2FsU3RvcmFnZURpcmVjdG9yeSwgcGFyYW1ldGVycy5sb2Nh
bFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogICAgIH0KIAogI2lmIEVOQUJMRShJ
TkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggYjEzZTMzZGFjMTllYzNjZDRhM2QyNDkyYWU4ZThlZTRjZWEzYWVk
Zi4uN2U5ZTllMjczYWM0ZmNlNDgwY2ZjMDAyYTFmYmVkNDNmOWYxYjIzZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yOTMsOCArMjkz
LDYgQEAKIAkJMUFCMUY3OTcxRDFCMzYxMzAwN0M5QkQxIC8qIFdlYlBheW1lbnRDb29yZGluYXRv
ck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQUIxRjc5MzFEMUIzNjEzMDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yTWVzc2Fn
ZXMuaCAqLzsgfTsKIAkJMUFCMUY3OTgxRDFCMzYxMzAwN0M5QkQxIC8qIFdlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjFGNzk0MUQxQjM2MTMwMDdDOUJEMSAvKiBXZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTFBQjFGNzk5
MUQxQjM2MTMwMDdDOUJEMSAvKiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1lc3NhZ2VzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUIxRjc5NTFE
MUIzNjEzMDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNZXNzYWdlcy5oICov
OyB9OwotCQkxQUIzMUE5NjE2QkM2ODgxMDBGNkRCQzkgLyogU3RvcmFnZU1hbmFnZXJNZXNzYWdl
UmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUFCMzFBOTQxNkJDNjg4MTAwRjZEQkM5IC8qIFN0b3JhZ2VNYW5hZ2VyTWVzc2FnZVJlY2Vp
dmVyLmNwcCAqLzsgfTsKLQkJMUFCMzFBOTcxNkJDNjg4MTAwRjZEQkM5IC8qIFN0b3JhZ2VNYW5h
Z2VyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFBQjMxQTk1MTZCQzY4ODEwMEY2REJDOSAvKiBTdG9yYWdlTWFuYWdlck1lc3NhZ2VzLmgg
Ki87IH07CiAJCTFBQjQwRUU2MUJGNjc3RTMwMEJBODFCRSAvKiBXS01lbnVJdGVtSWRlbnRpZmll
cnNQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQUI0MEVFNDFCRjY3N0UzMDBCQTgxQkUgLyogV0tNZW51SXRlbUlkZW50aWZpZXJzUHJpdmF0
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFB
QjQ3NEQ4MTg0RDQzRkQwMDUxQjYyMiAvKiBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjQ3NEQ3MTg0RDQz
RkQwMDUxQjYyMiAvKiBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxQUI0NzREQTE4NEQ0NDI1MDA1MUI2
MjIgLyogV0tCdW5kbGVQYWdlUmVzb3VyY2VMb2FkQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUI0NzREOTE4NEQ0NDI1MDA1MUI2MjIgLyog
V0tCdW5kbGVQYWdlUmVzb3VyY2VMb2FkQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEyNzUsNiArMTI3Myw5IEBACiAJCTkzNTZGMkUx
MjE1MkI3NjYwMEU2RDVERiAvKiBXZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCQTA0RTEyMTUxQURGNDAwN0Y0
NTVGIC8qIFdlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAgKi87IH07CiAJCTkzNUVFQjlCMTI3NzYx
N0MwMDMzMjJCOCAvKiBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNUVFQjk4MTI3NzYxNkQwMDMzMjJC
OCAvKiBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5MzVFRUI5RjEyNzc2MUFDMDAzMzIyQjggLyog
V0tCdW5kbGVCYWNrRm9yd2FyZExpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzNUVFQjk2MTI3NzYxNkQwMDMzMjJCOCAvKiBXS0J1bmRsZUJhY2tG
b3J3YXJkTGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTkzNjhFRURFMjMwM0E5MDIwMEJEQjExQSAvKiBTdG9yYWdlTWFuYWdlclNldE1lc3Nh
Z2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5MzY4RUVEQzIzMDNBOEQ4MDBCREIxMUEgLyogU3RvcmFnZU1hbmFnZXJTZXRNZXNzYWdl
UmVjZWl2ZXIuY3BwICovOyB9OworCQk5MzY4RUVERjIzMDNBOUVEMDBCREIxMUEgLyogU3RvcmFn
ZU1hbmFnZXJTZXRNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTM2OEVFREQyMzAzQThEODAwQkRCMTFBIC8qIFN0b3JhZ2VNYW5hZ2VyU2V0
TWVzc2FnZXMuaCAqLzsgfTsKKwkJOTM2QjA1OTgyMzAzOTA5NzAwMkZDMDZCIC8qIFN0b3JhZ2VN
YW5hZ2VyU2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5MzZCMDU5NTIzMDM5MDBCMDAyRkMwNkIgLyogU3RvcmFnZU1hbmFnZXJTZXQuaCAqLzsgfTsK
IAkJOTM3MzVFQkIxQzkyOTg2MzAwMzM2RkE3IC8qIFdLUHJldmlld0FjdGlvbkl0ZW1JbnRlcm5h
bC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM3MzVF
QkExQzkyOTg2MzAwMzM2RkE3IC8qIFdLUHJldmlld0FjdGlvbkl0ZW1JbnRlcm5hbC5oICovOyB9
OwogCQk5MzkxMDc0RjFCRjZCQzY1MDA4QzE3QUQgLyogV0tQcmV2aWV3RWxlbWVudEluZm9JbnRl
cm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM5
MTA3NEUxQkY2QkM2NTAwOEMxN0FEIC8qIFdLUHJldmlld0VsZW1lbnRJbmZvSW50ZXJuYWwuaCAq
LzsgfTsKIAkJOTM5MUYyQ0IxMjFCNjdBRDAwRUJGN0U4IC8qIFdlYkZyYW1lTmV0d29ya2luZ0Nv
bnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkz
OTFGMjgzMTIxQjM4RjUwMEVCRjdFOCAvKiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmggKi87
IH07CkBAIC0xNzA3LDYgKzE3MDgsOCBAQAogCQkJY29tcGlsZXJTcGVjID0gY29tLmFwcGxlLmNv
bXBpbGVycy5wcm94eS5zY3JpcHQ7CiAJCQlmaWxlUGF0dGVybnMgPSAiKi5oIjsKIAkJCWZpbGVU
eXBlID0gcGF0dGVybi5wcm94eTsKKwkJCWlucHV0RmlsZXMgPSAoCisJCQkpOwogCQkJaXNFZGl0
YWJsZSA9IDE7CiAJCQlvdXRwdXRGaWxlcyA9ICgKIAkJCQkiJChIRUFERVJfT1VUUFVUX0RJUikv
JChJTlBVVF9GSUxFX05BTUUpIiwKQEAgLTIzMDcsOCArMjMxMCw2IEBACiAJCTFBQjFGNzkzMUQx
QjM2MTMwMDdDOUJEMSAvKiBXZWJQYXltZW50Q29vcmRpbmF0b3JNZXNzYWdlcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJQYXltZW50Q29vcmRpbmF0b3JNZXNzYWdlcy5o
OyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJQYXltZW50Q29vcmRpbmF0b3JNZXNz
YWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQkxQUIxRjc5NDFE
MUIzNjEzMDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNZXNzYWdlUmVjZWl2
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNv
dXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTFBQjFGNzk1MUQxQjM2MTMwMDdD
OUJEMSAvKiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWVzc2FnZXMu
aDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwotCQkxQUIz
MUE5NDE2QkM2ODgxMDBGNkRCQzkgLyogU3RvcmFnZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU3RvcmFnZU1hbmFnZXJNZXNz
YWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9TdG9yYWdlTWFu
YWdlck1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7
IH07Ci0JCTFBQjMxQTk1MTZCQzY4ODEwMEY2REJDOSAvKiBTdG9yYWdlTWFuYWdlck1lc3NhZ2Vz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFN0b3JhZ2VNYW5hZ2VyTWVzc2Fn
ZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvU3RvcmFnZU1hbmFnZXJNZXNzYWdl
cy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQkxQUI0MEVFMzFCRjY3
N0UzMDBCQTgxQkUgLyogV0tNZW51SXRlbUlkZW50aWZpZXJzLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tNZW51SXRlbUlkZW50aWZpZXJzLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkxQUI0MEVFNDFCRjY3N0UzMDBCQTgxQkUgLyogV0tNZW51
SXRlbUlkZW50aWZpZXJzUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXS01lbnVJdGVtSWRlbnRpZmllcnNQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFBQjQ3NEQ3MTg0RDQzRkQwMDUxQjYyMiAvKiBXS0J1bmRsZVBhZ2VMb2FkZXJDbGll
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tCdW5kbGVQYWdlTG9hZGVy
Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zODk3LDYgKzM4OTgsMTEg
QEAKIAkJOTM1RUVCOTYxMjc3NjE2RDAwMzMyMkI4IC8qIFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQnVuZGxlQmFja0ZvcndhcmRM
aXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNUVFQjk3MTI3NzYxNkQwMDMz
MjJCOCAvKiBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV0tCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM1RUVCOTgxMjc3NjE2RDAwMzMyMkI4IC8qIFdL
QnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOTM2OEVFREMyMzAzQThEODAwQkRCMTFBIC8qIFN0b3JhZ2VNYW5hZ2VyU2V0TWVz
c2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBmaWxlRW5jb2RpbmcgPSA0OyBuYW1lID0gU3Rv
cmFnZU1hbmFnZXJTZXRNZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi9TdG9yYWdlTWFuYWdlclNldE1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUg
PSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTkzNjhFRUREMjMwM0E4RDgwMEJEQjExQSAvKiBT
dG9yYWdlTWFuYWdlclNldE1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IFN0b3JhZ2VNYW5hZ2VyU2V0TWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dl
YktpdDIvU3RvcmFnZU1hbmFnZXJTZXRNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJP
RFVDVFNfRElSOyB9OworCQk5MzZCMDU5NTIzMDM5MDBCMDAyRkMwNkIgLyogU3RvcmFnZU1hbmFn
ZXJTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RvcmFnZU1hbmFnZXJT
ZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTM2QjA1OTYyMzAzOTAwQjAwMkZD
MDZCIC8qIFN0b3JhZ2VNYW5hZ2VyU2V0Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IFN0b3JhZ2VNYW5hZ2VyU2V0Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk5MzZCMDU5NzIzMDM5MDBCMDAyRkMwNkIgLyogU3RvcmFnZU1hbmFnZXJTZXQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RvcmFnZU1hbmFnZXJTZXQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzczNUVCQTFDOTI5ODYzMDAzMzZG
QTcgLyogV0tQcmV2aWV3QWN0aW9uSXRlbUludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdLUHJldmlld0FjdGlvbkl0ZW1JbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5MzkxMDc0RTFCRjZCQzY1MDA4QzE3QUQgLyogV0tQcmV2aWV3RWxl
bWVudEluZm9JbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1By
ZXZpZXdFbGVtZW50SW5mb0ludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTkzOTFGMjgzMTIxQjM4RjUwMEVCRjdFOCAvKiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkZyYW1lTmV0d29ya2luZ0NvbnRl
eHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM5MjYsNyArMzkzMiw2IEBACiAJ
CTkzQjI2MTQ4MjI3RDE0NzEwMEI5N0E3NiAvKiBpb3MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmb2xkZXI7IHBhdGggPSBpb3M7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTkzQjI2MTQ5MjI3RDE0NzIwMEI5N0E3NiAvKiBTdG9yYWdlTWFu
YWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdG9yYWdlTWFuYWdlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0IyNjE0QTIyN0QxNDcyMDBCOTdBNzYg
LyogU3RvcmFnZU1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gU3RvcmFnZU1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5M0Iy
NjE0QjIyN0QxNDcyMDBCOTdBNzYgLyogU3RvcmFnZU1hbmFnZXIubWVzc2FnZXMuaW4gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gU3RvcmFnZU1hbmFnZXIubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTkzQjI2MTRDMjI3RDE0NzIwMEI5N0E3NiAvKiBMb2NhbFN0b3Jh
Z2VEYXRhYmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMb2Nh
bFN0b3JhZ2VEYXRhYmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQkEw
NERBMjE1MUFERjMwMDdGNDU1RiAvKiBXZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmlu
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0JBMDREQjIxNTFBREYzMDA3RjQ1NUYg
LyogV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNzMwNCw3ICs3MzA5LDkgQEAKIAkJCQk0NkJFQjZENTIyRkI5
QkQ2MDAyNjk4NjcgLyogU3RvcmFnZUFyZWEuaCAqLywKIAkJCQk5M0IyNjE0QTIyN0QxNDcyMDBC
OTdBNzYgLyogU3RvcmFnZU1hbmFnZXIuY3BwICovLAogCQkJCTkzQjI2MTQ5MjI3RDE0NzIwMEI5
N0E3NiAvKiBTdG9yYWdlTWFuYWdlci5oICovLAotCQkJCTkzQjI2MTRCMjI3RDE0NzIwMEI5N0E3
NiAvKiBTdG9yYWdlTWFuYWdlci5tZXNzYWdlcy5pbiAqLywKKwkJCQk5MzZCMDU5NzIzMDM5MDBC
MDAyRkMwNkIgLyogU3RvcmFnZU1hbmFnZXJTZXQuY3BwICovLAorCQkJCTkzNkIwNTk1MjMwMzkw
MEIwMDJGQzA2QiAvKiBTdG9yYWdlTWFuYWdlclNldC5oICovLAorCQkJCTkzNkIwNTk2MjMwMzkw
MEIwMDJGQzA2QiAvKiBTdG9yYWdlTWFuYWdlclNldC5tZXNzYWdlcy5pbiAqLywKIAkJCQk0NkJF
QjZFMjIyRkJCMjFBMDAyNjk4NjcgLyogVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlLmNw
cCAqLywKIAkJCQk0NkJFQjZFMTIyRkJCMjFBMDAyNjk4NjcgLyogVHJhbnNpZW50TG9jYWxTdG9y
YWdlTmFtZXNwYWNlLmggKi8sCiAJCQkpOwpAQCAtODc2Niw4ICs4NzczLDggQEAKIAkJCQkyREU2
OTQzQzE4QkQyQTY4MDA1QzE1RTUgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3Nh
Z2VzLmggKi8sCiAJCQkJMUEzMzRERUIxNkRFOEY4ODAwNkE4RTM4IC8qIFN0b3JhZ2VBcmVhTWFw
TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkxQTMzNERFQzE2REU4Rjg4MDA2QThFMzggLyog
U3RvcmFnZUFyZWFNYXBNZXNzYWdlcy5oICovLAotCQkJCTFBQjMxQTk0MTZCQzY4ODEwMEY2REJD
OSAvKiBTdG9yYWdlTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCi0JCQkJMUFCMzFBOTUx
NkJDNjg4MTAwRjZEQkM5IC8qIFN0b3JhZ2VNYW5hZ2VyTWVzc2FnZXMuaCAqLywKKwkJCQk5MzY4
RUVEQzIzMDNBOEQ4MDBCREIxMUEgLyogU3RvcmFnZU1hbmFnZXJTZXRNZXNzYWdlUmVjZWl2ZXIu
Y3BwICovLAorCQkJCTkzNjhFRUREMjMwM0E4RDgwMEJEQjExQSAvKiBTdG9yYWdlTWFuYWdlclNl
dE1lc3NhZ2VzLmggKi8sCiAJCQkJNTExOEU5QTUxRjI5NTk2MzAwM0VGOUY1IC8qIFN0b3JhZ2VQ
cm9jZXNzTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQk1MTE4RTlBNjFGMjk1OTYzMDAzRUY5
RjUgLyogU3RvcmFnZVByb2Nlc3NNZXNzYWdlcy5oICovLAogCQkJCTUxMThFOUE3MUYyOTU5NjMw
MDNFRjlGNSAvKiBTdG9yYWdlUHJvY2Vzc1Byb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKQEAg
LTk2NzAsNyArOTY3Nyw4IEBACiAJCQkJMUFDRUNEMjUxNzE2MkRCMTAwMUZDOUVGIC8qIFN0b3Jh
Z2VBcmVhTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTMzNERFRTE2REU4Rjg4MDA2QThFMzgg
LyogU3RvcmFnZUFyZWFNYXBNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNCMjYxNEQy
MjdEMTQ5RTAwQjk3QTc2IC8qIFN0b3JhZ2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKLQkJCQkx
QUIzMUE5NzE2QkM2ODgxMDBGNkRCQzkgLyogU3RvcmFnZU1hbmFnZXJNZXNzYWdlcy5oIGluIEhl
YWRlcnMgKi8sCisJCQkJOTM2QjA1OTgyMzAzOTA5NzAwMkZDMDZCIC8qIFN0b3JhZ2VNYW5hZ2Vy
U2V0LmggaW4gSGVhZGVycyAqLywKKwkJCQk5MzY4RUVERjIzMDNBOUVEMDBCREIxMUEgLyogU3Rv
cmFnZU1hbmFnZXJTZXRNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFMDBENkMxODMy
N0MxMjAwMDg3REQ3IC8qIFN0cmluZ1JlZmVyZW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjk2
QkQ4NUQxNTAxOUJDMzAwNzFGNDI0IC8qIFN0cmluZ1V0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTdGRDMxODYyMkIzNTE2QzAwOEQwRThCIC8qIFN1YkZyYW1lU09BdXRob3JpemF0aW9u
U2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMTE4NCw3ICsxMTE5Miw3IEBACiAJCQkJMkQ5
MkE3ODcyMTJCNkFCMTAwRjQ5M0ZEIC8qIFNoYXJlYWJsZUJpdG1hcC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkyREU2OTQzRDE4QkQyQTY4MDA1QzE1RTUgLyogU21hcnRNYWduaWZpY2F0aW9uQ29u
dHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTMzNERFRDE2
REU4Rjg4MDA2QThFMzggLyogU3RvcmFnZUFyZWFNYXBNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNv
dXJjZXMgKi8sCi0JCQkJMUFCMzFBOTYxNkJDNjg4MTAwRjZEQkM5IC8qIFN0b3JhZ2VNYW5hZ2Vy
TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTkzNjhFRURFMjMwM0E5MDIw
MEJEQjExQSAvKiBTdG9yYWdlTWFuYWdlclNldE1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkyRDkyQTc4MzIxMkI2QTcxMDBGNDkzRkQgLyogU3RyaW5nUmVmZXJlbmNlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTJEMTFCNzUxMjEyNkEyODIwMDZGODg3OCAvKiBVbmlmaWVk
U291cmNlMS1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJEMTFCNzUyMjEyNkEyODIwMDZGODg3
OCAvKiBVbmlmaWVkU291cmNlMS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3Bw
CmluZGV4IDIwY2U1NTkxMWQ3MDY1MWMzMzVhNzBhY2YyNGU1YmRmYzIxYmQ2MzEuLmIwZGNiOTAw
MGJlOTE1MjhjN2MwNzFmNjZkN2U4YzMwMWNlOTVhNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcApA
QCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
aCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNz
UG9vbE1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmgi
CiAjaW5jbHVkZSAiV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiV2Vic2l0
ZURhdGFTdG9yZVBhcmFtZXRlcnMuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0
Lmg+CkBAIC0zNDgsOSArMzQ5LDEzIEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnNldEphdmFTY3Jp
cHRDYW5BY2Nlc3NDbGlwYm9hcmQoV2ViUGFnZUdyb3VwUHJveHkqIHBhZ2VHcm91CiB2b2lkIElu
amVjdGVkQnVuZGxlOjpzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKFdlYlBhZ2VHcm91cFByb3h5
KiBwYWdlR3JvdXAsIGJvb2wgZW5hYmxlZCkKIHsKICAgICBBU1NFUlQoIWhhc1Byb2Nlc3NQcml2
aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOwotICAgIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLmVuYWJsZVByaXZhdGVCcm93c2luZ0ZvclRlc3RpbmcoZW5hYmxl
ZCk7CisgICAgaWYgKGVuYWJsZWQpCisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVu
c3VyZUxlZ2FjeVByaXZhdGVCcm93c2luZ1Nlc3Npb25Jbk5ldHdvcmtQcm9jZXNzKCk7CiAKICAg
ICBQYWdlR3JvdXA6OnBhZ2VHcm91cChwYWdlR3JvdXAtPmlkZW50aWZpZXIoKSktPmVuYWJsZUxl
Z2FjeVByaXZhdGVCcm93c2luZ0ZvclRlc3RpbmcoZW5hYmxlZCk7CisKKyAgICBhdXRvIHdlYlN0
b3JhZ2VOYW1lU3BhY2VQcm92aWRlciA9IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Z2V0
T3JDcmVhdGUocGFnZUdyb3VwLT5wYWdlR3JvdXBJRCgpKTsKKyAgICB3ZWJTdG9yYWdlTmFtZVNw
YWNlUHJvdmlkZXItPmVuYWJsZUxlZ2FjeVByaXZhdGVCcm93c2luZ0ZvclRlc3RpbmcoZW5hYmxl
ZCk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnNldFBvcHVwQmxvY2tpbmdFbmFibGVkKFdl
YlBhZ2VHcm91cFByb3h5KiBwYWdlR3JvdXAsIGJvb2wgZW5hYmxlZCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCA0ZWI2ZGVmMmRkMTBjYjhhYjM5MGZhMDIzN2U3
YjkwMjQzNTVlOTcyLi43NjAwNTUwYzVjYTg4NjBkNmU3NmNmZTdiZjk0NjQ2N2I3YWRhMjEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC02NzcsNyArNjc3LDYg
QEAgdm9pZCBXZWJQcm9jZXNzOjpjcmVhdGVXZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYKICAgICAvLyBJdCBpcyBuZWNlc3NhcnkgdG8gY2hl
Y2sgZm9yIHBhZ2UgZXhpc3RlbmNlIGhlcmUgc2luY2UgZHVyaW5nIGEgd2luZG93Lm9wZW4oKSAo
b3IgdGFyZ2V0ZWQKICAgICAvLyBsaW5rKSB0aGUgV2ViUGFnZSBnZXRzIGNyZWF0ZWQgYm90aCBp
biB0aGUgc3luY2hyb25vdXMgaGFuZGxlciBhbmQgdGhyb3VnaCB0aGUgbm9ybWFsIHdheS4gCiAg
ICAgYXV0byByZXN1bHQgPSBtX3BhZ2VNYXAuYWRkKHBhZ2VJRCwgbnVsbHB0cik7Ci0gICAgYXV0
byBvbGRQYWdlSUQgPSBwYXJhbWV0ZXJzLm9sZFBhZ2VJRCA/IHBhcmFtZXRlcnMub2xkUGFnZUlE
LnZhbHVlKCkgOiBwYWdlSUQ7CiAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KSB7CiAgICAgICAg
IEFTU0VSVCghcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSk7CiAgICAgICAgIHJlc3VsdC5pdGVyYXRv
ci0+dmFsdWUgPSBXZWJQYWdlOjpjcmVhdGUocGFnZUlELCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsK
QEAgLTY4OCw4ICs2ODcsNiBAQCB2b2lkIFdlYlByb2Nlc3M6OmNyZWF0ZVdlYlBhZ2UoUGFnZUlk
ZW50aWZpZXIgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJgogICAgIH0gZWxzZQog
ICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5yZWluaXRpYWxpemVXZWJQYWdlKFdURk1v
dmUocGFyYW1ldGVycykpOwogCi0gICAgZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCku
Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpXZWJQYWdlV2FzQWRkZWQocmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+c2Vzc2lvbklEKCksIHBh
Z2VJRCwgb2xkUGFnZUlEKSwgMCk7Ci0KICAgICBBU1NFUlQocmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZSk7CiB9CiAKQEAgLTY5Nyw3ICs2OTQsNiBAQCB2b2lkIFdlYlByb2Nlc3M6OnJlbW92ZVdlYlBh
Z2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAg
ICAgQVNTRVJUKG1fcGFnZU1hcC5jb250YWlucyhwYWdlSUQpKTsKIAotICAgIGVuc3VyZU5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6V2ViUGFnZVdhc1JlbW92ZWQoc2Vzc2lvbklELCBwYWdl
SUQpLCAwKTsKICAgICBwYWdlV2lsbExlYXZlV2luZG93KHBhZ2VJRCk7CiAgICAgbV9wYWdlTWFw
LnJlbW92ZShwYWdlSUQpOwogCkBAIC0xMjQ2LDE2ICsxMjQyLDYgQEAgTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uJiBXZWJQcm9jZXNzOjplbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKQog
ICAgICAgICAgICAgQ1JBU0goKTsKIAogICAgICAgICBtX25ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
biA9IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlKGNvbm5lY3Rpb25JZGVudGlmaWVy
KTsKLQotICAgICAgICAvLyBUbyByZWNvdmVyIHdlYiBzdG9yYWdlLCBuZXR3b3JrIHByb2Nlc3Mg
bmVlZHMgdG8ga25vdyBhY3RpdmUgd2VicGFnZXMgdG8gcHJlcGFyZSBzZXNzaW9uIHN0b3JhZ2Uu
Ci0gICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTk4MDUxLgotICAgICAgICAvLyBXZWJwYWdlIHNob3VsZCBiZSBhZGRlZCB3aGVuIFN0b3Jh
Z2UgaXMgdXNlZCwgbm90IHdoZW4gY29ubmVjdGlvbiBpcyByZS1lc3RhYmxpc2hlZC4KLSAgICAg
ICAgZm9yIChhdXRvJiBwYWdlIDogbV9wYWdlTWFwKSB7Ci0gICAgICAgICAgICBpZiAoIXBhZ2Uu
dmFsdWUpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIG1fbmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OldlYlBhZ2VXYXNBZGRlZChwYWdlLnZhbHVlLT5zZXNzaW9u
SUQoKSwgcGFnZS5rZXksIHBhZ2Uua2V5KSwgMCk7Ci0gICAgICAgIH0KICAgICB9CiAgICAgCiAg
ICAgcmV0dXJuICptX25ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjsKQEAgLTEyODYsNyArMTI3Miw3
IEBAIHZvaWQgV2ViUHJvY2Vzczo6bmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uQ2xvc2VkKE5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbiogY29ubmVjCiAgICAgQVNTRVJUKG1fbmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uKTsKICAgICBBU1NFUlRfVU5VU0VEKGNvbm5lY3Rpb24sIG1fbmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uID09IGNvbm5lY3Rpb24pOwogCi0gICAgZm9yIChhdXRvKiBzdG9yYWdlQXJl
YU1hcCA6IG1fc3RvcmFnZUFyZWFNYXBzLnZhbHVlcygpKQorICAgIGZvciAoYXV0byogc3RvcmFn
ZUFyZWFNYXAgOiBjb3B5VG9WZWN0b3IobV9zdG9yYWdlQXJlYU1hcHMudmFsdWVzKCkpKQogICAg
ICAgICBzdG9yYWdlQXJlYU1hcC0+ZGlzY29ubmVjdCgpOwogCiAjaWYgRU5BQkxFKElOREVYRURf
REFUQUJBU0UpCkBAIC0xNjg3LDI1ICsxNjczLDkgQEAgdm9pZCBXZWJQcm9jZXNzOjp1bnJlZ2lz
dGVyU3RvcmFnZUFyZWFNYXAoU3RvcmFnZUFyZWFNYXAmIHN0b3JhZ2VBcmVhTWFwKQogCiBTdG9y
YWdlQXJlYU1hcCogV2ViUHJvY2Vzczo6c3RvcmFnZUFyZWFNYXAodWludDY0X3QgaWRlbnRpZmll
cikgY29uc3QKIHsKLSAgICBBU1NFUlQobV9zdG9yYWdlQXJlYU1hcHMuY29udGFpbnMoaWRlbnRp
ZmllcikpOwogICAgIHJldHVybiBtX3N0b3JhZ2VBcmVhTWFwcy5nZXQoaWRlbnRpZmllcik7CiB9
CiAKLXZvaWQgV2ViUHJvY2Vzczo6ZW5hYmxlUHJpdmF0ZUJyb3dzaW5nRm9yVGVzdGluZyhib29s
IGVuYWJsZSkKLXsKLSAgICBpZiAoZW5hYmxlKQotICAgICAgICBlbnN1cmVMZWdhY3lQcml2YXRl
QnJvd3NpbmdTZXNzaW9uSW5OZXR3b3JrUHJvY2VzcygpOwotCi0gICAgVmVjdG9yPFBhZ2VJZGVu
dGlmaWVyPiBwYWdlSURzOwotICAgIGZvciAoYXV0byYgcGFnZSA6IG1fcGFnZU1hcCkgewotICAg
ICAgICBpZiAocGFnZS52YWx1ZSkKLSAgICAgICAgICAgIHBhZ2VJRHMuYXBwZW5kKHBhZ2Uua2V5
KTsKLSAgICB9Ci0KLSAgICBpZiAoIXBhZ2VJRHMuaXNFbXB0eSgpKQotICAgICAgICBlbnN1cmVO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OldlYlByb2Nlc3NTZXNzaW9uQ2hhbmdlZChlbmFi
bGUgPyBQQUw6OlNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpIDogUEFMOjpTZXNz
aW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwgcGFnZUlEcyksIDApOwotfQotCiB2b2lkIFdlYlBy
b2Nlc3M6OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsK
ICAgICBXZWJDb3JlOjpEZXByZWNhdGVkR2xvYmFsU2V0dGluZ3M6OnNldFJlc291cmNlTG9hZFN0
YXRpc3RpY3NFbmFibGVkKGVuYWJsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmgKaW5kZXggM2NiMmM0OTY5NDk5ODg3YjMyYjUzYjNhNjZkMGJiZjY4NWEzMjE4ZC4uYzU5MTU1
OWIwYzdjMjVmMzIyZTg0OTUwMDM5YTk4Yzc5MjY5YTQ5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5oCkBAIC0yMTUsOCArMjE1LDYgQEAgcHVibGljOgogICAgIHZvaWQgdW5y
ZWdpc3RlclN0b3JhZ2VBcmVhTWFwKFN0b3JhZ2VBcmVhTWFwJik7CiAgICAgU3RvcmFnZUFyZWFN
YXAqIHN0b3JhZ2VBcmVhTWFwKHVpbnQ2NF90IGlkZW50aWZpZXIpIGNvbnN0OwogCi0gICAgdm9p
ZCBlbmFibGVQcml2YXRlQnJvd3NpbmdGb3JUZXN0aW5nKGJvb2wpOwotCiAjaWYgUExBVEZPUk0o
Q09DT0EpCiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gc291cmNlQXBwbGljYXRpb25BdWRpdERh
dGEoKSBjb25zdDsKICAgICB2b2lkIGRlc3Ryb3lSZW5kZXJpbmdSZXNvdXJjZXMoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhSW1w
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUlt
cGwuY3BwCmluZGV4IDc0MGMwZGJjMDdjYTdkNTVlMTNjZTJiMTkwMjMzM2MwZGUwYTYyNjMuLmVj
ZDJiOTM1ZDQzM2JlODM3YzRjNGJiYWRmM2U1NWFjNDY2ZTQxZjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNwcApA
QCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU2NoZW1lUmVnaXN0cnkuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U2V0dGluZ3MuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1N0b3JhZ2VUeXBlLmg+CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC01MCw3ICs1MSw3IEBAIFJl
ZjxTdG9yYWdlQXJlYUltcGw+IFN0b3JhZ2VBcmVhSW1wbDo6Y3JlYXRlKFJlZjxTdG9yYWdlQXJl
YU1hcD4mJiBzdG9yYWdlQXJlYU1hCiAKIFN0b3JhZ2VBcmVhSW1wbDo6U3RvcmFnZUFyZWFJbXBs
KFJlZjxTdG9yYWdlQXJlYU1hcD4mJiBzdG9yYWdlQXJlYU1hcCkKICAgICA6IG1fc3RvcmFnZUFy
ZWFJRChnZW5lcmF0ZVN0b3JhZ2VBcmVhSUQoKSkKLSAgICAsIG1fc3RvcmFnZUFyZWFNYXAoV1RG
TW92ZShzdG9yYWdlQXJlYU1hcCkpCisgICAgLCBtX3N0b3JhZ2VBcmVhTWFwKG1ha2VXZWFrUHRy
KHN0b3JhZ2VBcmVhTWFwLmdldCgpKSkKIHsKIH0KIApAQCAtNjAsNDkgKzYxLDU0IEBAIFN0b3Jh
Z2VBcmVhSW1wbDo6flN0b3JhZ2VBcmVhSW1wbCgpCiAKIHVuc2lnbmVkIFN0b3JhZ2VBcmVhSW1w
bDo6bGVuZ3RoKCkKIHsKLSAgICByZXR1cm4gbV9zdG9yYWdlQXJlYU1hcC0+bGVuZ3RoKCk7Cisg
ICAgcmV0dXJuIG1fc3RvcmFnZUFyZWFNYXAgPyBtX3N0b3JhZ2VBcmVhTWFwLT5sZW5ndGgoKSA6
IDA7CiB9CiAKIFN0cmluZyBTdG9yYWdlQXJlYUltcGw6OmtleSh1bnNpZ25lZCBpbmRleCkKIHsK
LSAgICByZXR1cm4gbV9zdG9yYWdlQXJlYU1hcC0+a2V5KGluZGV4KTsKKyAgICByZXR1cm4gbV9z
dG9yYWdlQXJlYU1hcCA/IG1fc3RvcmFnZUFyZWFNYXAtPmtleShpbmRleCkgOiBudWxsU3RyaW5n
KCk7CiB9CiAKIFN0cmluZyBTdG9yYWdlQXJlYUltcGw6Oml0ZW0oY29uc3QgU3RyaW5nJiBrZXkp
CiB7Ci0gICAgcmV0dXJuIG1fc3RvcmFnZUFyZWFNYXAtPml0ZW0oa2V5KTsKLX0KLQotYm9vbCBT
dG9yYWdlQXJlYUltcGw6OnByZXdhcm0oKQotewotICAgIHJldHVybiBtX3N0b3JhZ2VBcmVhTWFw
LT5wcmV3YXJtKCk7CisgICAgcmV0dXJuIG1fc3RvcmFnZUFyZWFNYXAgPyBtX3N0b3JhZ2VBcmVh
TWFwLT5pdGVtKGtleSkgOiBudWxsU3RyaW5nKCk7CiB9CiAKIHZvaWQgU3RvcmFnZUFyZWFJbXBs
OjpzZXRJdGVtKEZyYW1lKiBzb3VyY2VGcmFtZSwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0
cmluZyYgdmFsdWUsIGJvb2wmIHF1b3RhRXhjZXB0aW9uKQogewogICAgIEFTU0VSVCghdmFsdWUu
aXNOdWxsKCkpOwogCi0gICAgbV9zdG9yYWdlQXJlYU1hcC0+c2V0SXRlbShzb3VyY2VGcmFtZSwg
dGhpcywga2V5LCB2YWx1ZSwgcXVvdGFFeGNlcHRpb24pOworICAgIGlmIChtX3N0b3JhZ2VBcmVh
TWFwKQorICAgICAgICBtX3N0b3JhZ2VBcmVhTWFwLT5zZXRJdGVtKHNvdXJjZUZyYW1lLCB0aGlz
LCBrZXksIHZhbHVlLCBxdW90YUV4Y2VwdGlvbik7CiB9CiAKIHZvaWQgU3RvcmFnZUFyZWFJbXBs
OjpyZW1vdmVJdGVtKEZyYW1lKiBzb3VyY2VGcmFtZSwgY29uc3QgU3RyaW5nJiBrZXkpCiB7Ci0g
ICAgbV9zdG9yYWdlQXJlYU1hcC0+cmVtb3ZlSXRlbShzb3VyY2VGcmFtZSwgdGhpcywga2V5KTsK
KyAgICBpZiAobV9zdG9yYWdlQXJlYU1hcCkKKyAgICAgICAgbV9zdG9yYWdlQXJlYU1hcC0+cmVt
b3ZlSXRlbShzb3VyY2VGcmFtZSwgdGhpcywga2V5KTsKIH0KIAogdm9pZCBTdG9yYWdlQXJlYUlt
cGw6OmNsZWFyKEZyYW1lKiBzb3VyY2VGcmFtZSkKIHsKLSAgICBtX3N0b3JhZ2VBcmVhTWFwLT5j
bGVhcihzb3VyY2VGcmFtZSwgdGhpcyk7CisgICAgaWYgKG1fc3RvcmFnZUFyZWFNYXApCisgICAg
ICAgIG1fc3RvcmFnZUFyZWFNYXAtPmNsZWFyKHNvdXJjZUZyYW1lLCB0aGlzKTsKIH0KIAogYm9v
bCBTdG9yYWdlQXJlYUltcGw6OmNvbnRhaW5zKGNvbnN0IFN0cmluZyYga2V5KQogewotICAgIHJl
dHVybiBtX3N0b3JhZ2VBcmVhTWFwLT5jb250YWlucyhrZXkpOworICAgIGlmIChtX3N0b3JhZ2VB
cmVhTWFwKQorICAgICAgICByZXR1cm4gbV9zdG9yYWdlQXJlYU1hcC0+Y29udGFpbnMoa2V5KTsK
KworICAgIHJldHVybiBmYWxzZTsKIH0KIAogU3RvcmFnZVR5cGUgU3RvcmFnZUFyZWFJbXBsOjpz
dG9yYWdlVHlwZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc3RvcmFnZUFyZWFNYXAtPnN0b3Jh
Z2VUeXBlKCk7CisgICAgaWYgKG1fc3RvcmFnZUFyZWFNYXApCisgICAgICAgIHJldHVybiBtX3N0
b3JhZ2VBcmVhTWFwLT5zdG9yYWdlVHlwZSgpOworCisgICAgLy8gV2UgcHJvYmFibHkgbmVlZCBh
biBJbnZhbGlkIHR5cGUuCisgICAgcmV0dXJuIFN0b3JhZ2VUeXBlOjpMb2NhbDsKIH0KIAogc2l6
ZV90IFN0b3JhZ2VBcmVhSW1wbDo6bWVtb3J5Qnl0ZXNVc2VkQnlDYWNoZSgpCkBAIC0xMTIsMTIg
KzExOCwxMiBAQCBzaXplX3QgU3RvcmFnZUFyZWFJbXBsOjptZW1vcnlCeXRlc1VzZWRCeUNhY2hl
KCkKIAogdm9pZCBTdG9yYWdlQXJlYUltcGw6OmluY3JlbWVudEFjY2Vzc0NvdW50KCkKIHsKLSAg
ICAvLyBTdG9yYWdlIGFjY2VzcyBpcyBoYW5kbGVkIGluIHRoZSBVSSBwcm9jZXNzLCBzbyB0aGVy
ZSdzIG5vdGhpbmcgdG8gZG8gaGVyZS4KKyAgICAvLyBTdG9yYWdlIGFjY2VzcyBpcyBoYW5kbGVk
IGluIHRoZSBuZXR3b3JrIHByb2Nlc3MsIHNvIHRoZXJlJ3Mgbm90aGluZyB0byBkbyBoZXJlLgog
fQogCiB2b2lkIFN0b3JhZ2VBcmVhSW1wbDo6ZGVjcmVtZW50QWNjZXNzQ291bnQoKQogewotICAg
IC8vIFN0b3JhZ2UgYWNjZXNzIGlzIGhhbmRsZWQgaW4gdGhlIFVJIHByb2Nlc3MsIHNvIHRoZXJl
J3Mgbm90aGluZyB0byBkbyBoZXJlLgorICAgIC8vIFN0b3JhZ2UgYWNjZXNzIGlzIGhhbmRsZWQg
aW4gdGhlIG5ldHdvcmsgcHJvY2Vzcywgc28gdGhlcmUncyBub3RoaW5nIHRvIGRvIGhlcmUuCiB9
CiAKIHZvaWQgU3RvcmFnZUFyZWFJbXBsOjpjbG9zZURhdGFiYXNlSWZJZGxlKCkKQEAgLTEyNiw5
ICsxMzIsNCBAQCB2b2lkIFN0b3JhZ2VBcmVhSW1wbDo6Y2xvc2VEYXRhYmFzZUlmSWRsZSgpCiAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLWNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYg
U3RvcmFnZUFyZWFJbXBsOjpzZWN1cml0eU9yaWdpbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1f
c3RvcmFnZUFyZWFNYXAtPnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpOwotfQotCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VBcmVhSW1wbC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3Jh
Z2UvU3RvcmFnZUFyZWFJbXBsLmgKaW5kZXggYjhmMTZmMmVhYTVhOWVhYzA2NjQ1YjM4ZTVmMGZm
MTQ0ZGRkNTgyNC4uYjJhOGQ1MGJlMTg3MDFkOTFkMzExMTE2OWMxMzJiZjdmYzkxOTk5YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJ
bXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFy
ZWFJbXBsLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL1N0b3JhZ2VBcmVhLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBTZWN1cml0eU9yaWdpbjsKQEAgLTYwLDExICs2MSw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBp
bmNyZW1lbnRBY2Nlc3NDb3VudCgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGVjcmVtZW50QWNjZXNz
Q291bnQoKSBvdmVycmlkZTsKICAgICB2b2lkIGNsb3NlRGF0YWJhc2VJZklkbGUoKSBvdmVycmlk
ZTsKLSAgICBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2lu
KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBwcmV3YXJtKCkgZmluYWw7CiAKICAgICB1aW50
NjRfdCBtX3N0b3JhZ2VBcmVhSUQ7Ci0gICAgUmVmPFN0b3JhZ2VBcmVhTWFwPiBtX3N0b3JhZ2VB
cmVhTWFwOworICAgIFdlYWtQdHI8U3RvcmFnZUFyZWFNYXA+IG1fc3RvcmFnZUFyZWFNYXA7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcAppbmRleCAzZTA1MGRmMTc4YTQ0
OGJjOTMyY2E0YmFlYzEwMzFhNzJmOTM4MGU2Li42NjY1YjNmOWNkZmQ2ZmFmZTZiNmRlMjM5YzE2
NDYzZmI4Zjc4NWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3Rv
cmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAi
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFyZWFJbXBsLmgi
CiAjaW5jbHVkZSAiU3RvcmFnZUFyZWFNYXBNZXNzYWdlcy5oIgotI2luY2x1ZGUgIlN0b3JhZ2VN
YW5hZ2VyTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJTdG9yYWdlTWFuYWdlclNldE1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiU3RvcmFnZU5hbWVzcGFjZUltcGwuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgi
CiAjaW5jbHVkZSAiV2ViUGFnZUdyb3VwUHJveHkuaCIKQEAgLTQ4LDQwICs0OCwyNiBAQAogbmFt
ZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotc3RhdGljIHVpbnQ2
NF90IGdlbmVyYXRlU3RvcmFnZU1hcElEKCkKLXsKLSAgICBzdGF0aWMgdWludDY0X3Qgc3RvcmFn
ZU1hcElEOwotICAgIHJldHVybiArK3N0b3JhZ2VNYXBJRDsKLX0KLQogUmVmPFN0b3JhZ2VBcmVh
TWFwPiBTdG9yYWdlQXJlYU1hcDo6Y3JlYXRlKFN0b3JhZ2VOYW1lc3BhY2VJbXBsKiBzdG9yYWdl
TmFtZXNwYWNlLCBSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYgc2VjdXJpdHlPcmlnaW4p
CiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmFnZUFyZWFNYXAoc3RvcmFnZU5hbWVz
cGFjZSwgV1RGTW92ZShzZWN1cml0eU9yaWdpbikpKTsKIH0KIAogU3RvcmFnZUFyZWFNYXA6OlN0
b3JhZ2VBcmVhTWFwKFN0b3JhZ2VOYW1lc3BhY2VJbXBsKiBzdG9yYWdlTmFtZXNwYWNlLCBSZWY8
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYgc2VjdXJpdHlPcmlnaW4pCi0gICAgOiBtX3N0b3Jh
Z2VOYW1lc3BhY2UoKnN0b3JhZ2VOYW1lc3BhY2UpCi0gICAgLCBtX3N0b3JhZ2VNYXBJRChnZW5l
cmF0ZVN0b3JhZ2VNYXBJRCgpKQorICAgIDogbV9zdG9yYWdlTmFtZXNwYWNlKHN0b3JhZ2VOYW1l
c3BhY2UpCisgICAgLCBtX3N0b3JhZ2VNYXBJRCgwKQogICAgICwgbV9zdG9yYWdlVHlwZShzdG9y
YWdlTmFtZXNwYWNlLT5zdG9yYWdlVHlwZSgpKQotICAgICwgbV9zdG9yYWdlTmFtZXNwYWNlSUQo
c3RvcmFnZU5hbWVzcGFjZS0+c3RvcmFnZU5hbWVzcGFjZUlEKCkpCiAgICAgLCBtX3F1b3RhSW5C
eXRlcyhzdG9yYWdlTmFtZXNwYWNlLT5xdW90YUluQnl0ZXMoKSkKICAgICAsIG1fc2VjdXJpdHlP
cmlnaW4oV1RGTW92ZShzZWN1cml0eU9yaWdpbikpCiAgICAgLCBtX2N1cnJlbnRTZWVkKDApCiAg
ICAgLCBtX2hhc1BlbmRpbmdDbGVhcihmYWxzZSkKLSAgICAsIG1faGFzUGVuZGluZ0dldFZhbHVl
cyhmYWxzZSkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5yZWdpc3RlclN0b3JhZ2VB
cmVhTWFwKCp0aGlzKTsKICAgICBjb25uZWN0KCk7CiB9CiAKIFN0b3JhZ2VBcmVhTWFwOjp+U3Rv
cmFnZUFyZWFNYXAoKQogewotICAgIGlmIChtX3N0b3JhZ2VUeXBlICE9IFN0b3JhZ2VUeXBlOjpF
cGhlbWVyYWxMb2NhbCkKLSAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlN0b3Jh
Z2VNYW5hZ2VyOjpEZXN0cm95U3RvcmFnZU1hcChtX3N0b3JhZ2VNYXBJRCksIDApOwotCi0gICAg
bV9zdG9yYWdlTmFtZXNwYWNlLT5kaWREZXN0cm95U3RvcmFnZUFyZWFNYXAoKnRoaXMpOwotCi0g
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudW5yZWdpc3RlclN0b3JhZ2VBcmVhTWFwKCp0aGlz
KTsKKyAgICBkaXNjb25uZWN0KCk7CiB9CiAKIHVuc2lnbmVkIFN0b3JhZ2VBcmVhTWFwOjpsZW5n
dGgoKQpAQCAtMTIyLDcgKzEwOCw3IEBAIHZvaWQgU3RvcmFnZUFyZWFNYXA6OnNldEl0ZW0oRnJh
bWUqIHNvdXJjZUZyYW1lLCBTdG9yYWdlQXJlYUltcGwqIHNvdXJjZUFyZWEsIGNvCiAKICAgICBt
X3BlbmRpbmdWYWx1ZUNoYW5nZXMuYWRkKGtleSk7CiAKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChN
ZXNzYWdlczo6U3RvcmFnZU1hbmFnZXI6OlNldEl0ZW0obV9zZWN1cml0eU9yaWdpbi0+ZGF0YSgp
LCBtX3N0b3JhZ2VNYXBJRCwgc291cmNlQXJlYS0+c3RvcmFnZUFyZWFJRCgpLCBtX2N1cnJlbnRT
ZWVkLCBrZXksIHZhbHVlLCBzb3VyY2VGcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkpLCAwKTsKKyAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24o
KS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXJTZXQ6OlNldEl0ZW0o
bV9zdG9yYWdlTWFwSUQsIHNvdXJjZUFyZWEtPnN0b3JhZ2VBcmVhSUQoKSwgbV9jdXJyZW50U2Vl
ZCwga2V5LCB2YWx1ZSwgc291cmNlRnJhbWUtPmRvY3VtZW50KCktPnVybCgpKSwgMCk7CiB9CiAK
IHZvaWQgU3RvcmFnZUFyZWFNYXA6OnJlbW92ZUl0ZW0oV2ViQ29yZTo6RnJhbWUqIHNvdXJjZUZy
YW1lLCBTdG9yYWdlQXJlYUltcGwqIHNvdXJjZUFyZWEsIGNvbnN0IFN0cmluZyYga2V5KQpAQCAt
MTM4LDE2ICsxMjQsMTggQEAgdm9pZCBTdG9yYWdlQXJlYU1hcDo6cmVtb3ZlSXRlbShXZWJDb3Jl
OjpGcmFtZSogc291cmNlRnJhbWUsIFN0b3JhZ2VBcmVhSW1wbCogc28KIAogICAgIG1fcGVuZGlu
Z1ZhbHVlQ2hhbmdlcy5hZGQoa2V5KTsKIAotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVu
c3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2Vz
OjpTdG9yYWdlTWFuYWdlcjo6UmVtb3ZlSXRlbShtX3NlY3VyaXR5T3JpZ2luLT5kYXRhKCksIG1f
c3RvcmFnZU1hcElELCBzb3VyY2VBcmVhLT5zdG9yYWdlQXJlYUlEKCksIG1fY3VycmVudFNlZWQs
IGtleSwgc291cmNlRnJhbWUtPmRvY3VtZW50KCktPnVybCgpKSwgMCk7CisgICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlv
bigpLnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpSZW1vdmVJdGVtKG1fc3RvcmFn
ZU1hcElELCBzb3VyY2VBcmVhLT5zdG9yYWdlQXJlYUlEKCksIG1fY3VycmVudFNlZWQsIGtleSwg
c291cmNlRnJhbWUtPmRvY3VtZW50KCktPnVybCgpKSwgMCk7CiB9CiAKIHZvaWQgU3RvcmFnZUFy
ZWFNYXA6OmNsZWFyKFdlYkNvcmU6OkZyYW1lKiBzb3VyY2VGcmFtZSwgU3RvcmFnZUFyZWFJbXBs
KiBzb3VyY2VBcmVhKQogeworICAgIGNvbm5lY3QoKTsKKwogICAgIHJlc2V0VmFsdWVzKCk7CiAK
ICAgICBtX2hhc1BlbmRpbmdDbGVhciA9IHRydWU7CiAgICAgbV9zdG9yYWdlTWFwID0gU3RvcmFn
ZU1hcDo6Y3JlYXRlKG1fcXVvdGFJbkJ5dGVzKTsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNz
YWdlczo6U3RvcmFnZU1hbmFnZXI6OkNsZWFyKG1fc2VjdXJpdHlPcmlnaW4tPmRhdGEoKSwgbV9z
dG9yYWdlTWFwSUQsIHNvdXJjZUFyZWEtPnN0b3JhZ2VBcmVhSUQoKSwgbV9jdXJyZW50U2VlZCwg
c291cmNlRnJhbWUtPmRvY3VtZW50KCktPnVybCgpKSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNl
bmQoTWVzc2FnZXM6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpDbGVhcihtX3N0b3JhZ2VNYXBJRCwgc291
cmNlQXJlYS0+c3RvcmFnZUFyZWFJRCgpLCBtX2N1cnJlbnRTZWVkLCBzb3VyY2VGcmFtZS0+ZG9j
dW1lbnQoKS0+dXJsKCkpLCAwKTsKIH0KIAogYm9vbCBTdG9yYWdlQXJlYU1hcDo6Y29udGFpbnMo
Y29uc3QgU3RyaW5nJiBrZXkpCkBAIC0xNjMsNyArMTUxLDYgQEAgdm9pZCBTdG9yYWdlQXJlYU1h
cDo6cmVzZXRWYWx1ZXMoKQogCiAgICAgbV9wZW5kaW5nVmFsdWVDaGFuZ2VzLmNsZWFyKCk7CiAg
ICAgbV9oYXNQZW5kaW5nQ2xlYXIgPSBmYWxzZTsKLSAgICBtX2hhc1BlbmRpbmdHZXRWYWx1ZXMg
PSBmYWxzZTsKICAgICBtX2N1cnJlbnRTZWVkKys7CiB9CiAKQEAgLTE3OCwzMyArMTY1LDEwIEBA
IHZvaWQgU3RvcmFnZUFyZWFNYXA6OmxvYWRWYWx1ZXNJZk5lZWRlZCgpCiAgICAgLy8gRklYTUU6
IFRoaXMgc2hvdWxkIHVzZSBhIHNwZWNpYWwgc2VuZFN5bmMgZmxhZyB0byBpbmRpY2F0ZSB0aGF0
IHdlIGRvbid0IHdhbnQgdG8gcHJvY2VzcyBpbmNvbWluZyBtZXNzYWdlcyB3aGlsZSB3YWl0aW5n
IGZvciBhIHJlcGx5LgogICAgIC8vIChUaGlzIGZsYWcgZG9lcyBub3QgeWV0IGV4aXN0KS4gU2lu
Y2UgbG9hZFZhbHVlc0lmTmVlZGVkKCkgZW5kcyB1cCBiZWluZyBjYWxsZWQgZnJvbSB3aXRoaW4g
SmF2YVNjcmlwdCBjb2RlLCBwcm9jZXNzaW5nIGluY29taW5nIHN5bmNocm9ub3VzIG1lc3NhZ2Vz
CiAgICAgLy8gY291bGQgbGVhZCB0byB3ZWlyZCByZWVudHJlbmN5IGJ1Z3Mgb3RoZXJ3aXNlLgot
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXI6OkdldFZh
bHVlcyhtX3N0b3JhZ2VNYXBJRCwgbV9jdXJyZW50U2VlZCksIE1lc3NhZ2VzOjpTdG9yYWdlTWFu
YWdlcjo6R2V0VmFsdWVzOjpSZXBseSh2YWx1ZXMpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2Vu
ZFN5bmMoTWVzc2FnZXM6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpHZXRWYWx1ZXMobV9zdG9yYWdlTWFw
SUQpLCBNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXJTZXQ6OkdldFZhbHVlczo6UmVwbHkodmFsdWVz
KSwgMCk7CiAKICAgICBtX3N0b3JhZ2VNYXAgPSBTdG9yYWdlTWFwOjpjcmVhdGUobV9xdW90YUlu
Qnl0ZXMpOwogICAgIG1fc3RvcmFnZU1hcC0+aW1wb3J0SXRlbXMoV1RGTW92ZSh2YWx1ZXMpKTsK
LQotICAgIC8vIFdlIHdhbnQgdG8gaWdub3JlIGFsbCBjaGFuZ2VzIHVudGlsIHdlIGdldCB0aGUg
RGlkR2V0VmFsdWVzIG1lc3NhZ2UuCi0gICAgbV9oYXNQZW5kaW5nR2V0VmFsdWVzID0gdHJ1ZTsK
LX0KLQotYm9vbCBTdG9yYWdlQXJlYU1hcDo6cHJld2FybSgpCi17Ci0gICAgaWYgKG1fZGlkUHJl
d2FybSB8fCBtX3N0b3JhZ2VNYXApCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBtX2RpZFBy
ZXdhcm0gPSB0cnVlOwotCi0gICAgY29ubmVjdCgpOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1l
c3NhZ2VzOjpTdG9yYWdlTWFuYWdlcjo6UHJld2FybShtX3N0b3JhZ2VNYXBJRCksIDApOwotICAg
IHJldHVybiB0cnVlOwotfQotCi12b2lkIFN0b3JhZ2VBcmVhTWFwOjpkaWRHZXRWYWx1ZXModWlu
dDY0X3Qgc3RvcmFnZU1hcFNlZWQpCi17Ci0gICAgaWYgKG1fY3VycmVudFNlZWQgIT0gc3RvcmFn
ZU1hcFNlZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIEFTU0VSVChtX2hhc1BlbmRpbmdHZXRW
YWx1ZXMpOwotICAgIG1faGFzUGVuZGluZ0dldFZhbHVlcyA9IGZhbHNlOwogfQogCiB2b2lkIFN0
b3JhZ2VBcmVhTWFwOjpkaWRTZXRJdGVtKHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkLCBjb25zdCBT
dHJpbmcmIGtleSwgYm9vbCBxdW90YUVycm9yKQpAQCAtMjU5LDggKzIyMyw4IEBAIHZvaWQgU3Rv
cmFnZUFyZWFNYXA6OmFwcGx5Q2hhbmdlKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcm
IG5ld1ZhbHVlKQogewogICAgIEFTU0VSVCghbV9zdG9yYWdlTWFwIHx8IG1fc3RvcmFnZU1hcC0+
aGFzT25lUmVmKCkpOwogCi0gICAgLy8gVGhlcmUncyBhIGNsZWFyIHBlbmRpbmcgb3IgZ2V0VmFs
dWVzIHBlbmRpbmcgd2UgZG9uJ3Qgd2FudCB0byBhcHBseSBhbnkgY2hhbmdlcyB1bnRpbCB3ZSBn
ZXQgdGhlIGNvcnJlc3BvbmRpbmcgRGlkQ2xlYXIvRGlkR2V0VmFsdWVzIG1lc3NhZ2VzLgotICAg
IGlmIChtX2hhc1BlbmRpbmdDbGVhciB8fCBtX2hhc1BlbmRpbmdHZXRWYWx1ZXMpCisgICAgLy8g
VGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNsZWFyIHBlbmRpbmcgd2UgZG9uJ3Qgd2FudCB0byBhcHBs
eSBhbnkgY2hhbmdlcyB1bnRpbCB3ZSBnZXQgdGhlIGNvcnJlc3BvbmRpbmcgRGlkQ2xlYXIgbWVz
c2FnZXMuCisgICAgaWYgKG1faGFzUGVuZGluZ0NsZWFyKQogICAgICAgICByZXR1cm47CiAKICAg
ICBpZiAoIWtleSkgewpAQCAtMzA1LDcgKzI2OSw3IEBAIHZvaWQgU3RvcmFnZUFyZWFNYXA6OmRp
c3BhdGNoU3RvcmFnZUV2ZW50KHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIGNvbnN0IFN0
CiAgICAgICAgIGFwcGx5Q2hhbmdlKGtleSwgbmV3VmFsdWUpOwogICAgIH0KIAotICAgIGlmIChz
dG9yYWdlVHlwZSgpID09IFN0b3JhZ2VUeXBlOjpTZXNzaW9uIHx8IHN0b3JhZ2VUeXBlKCkgPT0g
U3RvcmFnZVR5cGU6OkVwaGVtZXJhbExvY2FsKQorICAgIGlmIChzdG9yYWdlVHlwZSgpID09IFN0
b3JhZ2VUeXBlOjpTZXNzaW9uKQogICAgICAgICBkaXNwYXRjaFNlc3Npb25TdG9yYWdlRXZlbnQo
c291cmNlU3RvcmFnZUFyZWFJRCwga2V5LCBvbGRWYWx1ZSwgbmV3VmFsdWUsIHVybFN0cmluZyk7
CiAgICAgZWxzZQogICAgICAgICBkaXNwYXRjaExvY2FsU3RvcmFnZUV2ZW50KHNvdXJjZVN0b3Jh
Z2VBcmVhSUQsIGtleSwgb2xkVmFsdWUsIG5ld1ZhbHVlLCB1cmxTdHJpbmcpOwpAQCAtMzE4LDkg
KzI4Miw5IEBAIHZvaWQgU3RvcmFnZUFyZWFNYXA6OmNsZWFyQ2FjaGUoKQogCiB2b2lkIFN0b3Jh
Z2VBcmVhTWFwOjpkaXNwYXRjaFNlc3Npb25TdG9yYWdlRXZlbnQodWludDY0X3Qgc291cmNlU3Rv
cmFnZUFyZWFJRCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNv
bnN0IFN0cmluZyYgbmV3VmFsdWUsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQogewotICAgIC8v
IE5hbWVzcGFjZSBJRHMgZm9yIHNlc3Npb24gc3RvcmFnZSBuYW1lc3BhY2VzIGFuZCBlcGhlbWVy
YWwgbG9jYWwgc3RvcmFnZSBuYW1lc3BhY2VzIGFyZSBlcXVpdmFsZW50IHRvIHdlYiBwYWdlIElE
cworICAgIC8vIE5hbWVzcGFjZSBJRHMgZm9yIHNlc3Npb24gc3RvcmFnZSBuYW1lc3BhY2VzIGFy
ZSBlcXVpdmFsZW50IHRvIHdlYiBwYWdlIElEcwogICAgIC8vIHNvIHdlIGNhbiBnZXQgdGhlIHJp
Z2h0IHBhZ2UgaGVyZS4KLSAgICBXZWJQYWdlKiB3ZWJQYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkud2ViUGFnZShtYWtlT2JqZWN0SWRlbnRpZmllcjxQYWdlSWRlbnRpZmllclR5cGU+KG1f
c3RvcmFnZU5hbWVzcGFjZUlEKSk7CisgICAgV2ViUGFnZSogd2ViUGFnZSA9IFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLndlYlBhZ2UobWFrZU9iamVjdElkZW50aWZpZXI8UGFnZUlkZW50aWZpZXJU
eXBlPihtX3N0b3JhZ2VOYW1lc3BhY2UtPnN0b3JhZ2VOYW1lc3BhY2VJRCgpKSk7CiAgICAgaWYg
KCF3ZWJQYWdlKQogICAgICAgICByZXR1cm47CiAKQEAgLTM1NCw3ICszMTgsOCBAQCB2b2lkIFN0
b3JhZ2VBcmVhTWFwOjpkaXNwYXRjaExvY2FsU3RvcmFnZUV2ZW50KHVpbnQ2NF90IHNvdXJjZVN0
b3JhZ2VBcmVhSUQsIGNvbgogCiAgICAgVmVjdG9yPFJlZlB0cjxGcmFtZT4+IGZyYW1lczsKIAot
ICAgIFBhZ2VHcm91cCYgcGFnZUdyb3VwID0gKldlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBh
Z2VHcm91cChtX3N0b3JhZ2VOYW1lc3BhY2VJRCktPmNvcmVQYWdlR3JvdXAoKTsKKyAgICAvLyBO
YW1lc3BhY2UgSURzIGZvciBsb2NhbCBzdG9yYWdlIG5hbWVzcGFjZXMgYXJlIGVxdWl2YWxlbnQg
dG8gd2ViIHBhZ2UgZ3JvdXAgSURzLgorICAgIFBhZ2VHcm91cCYgcGFnZUdyb3VwID0gKldlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2VHcm91cChtX3N0b3JhZ2VOYW1lc3BhY2UtPnN0b3Jh
Z2VOYW1lc3BhY2VJRCgpKS0+Y29yZVBhZ2VHcm91cCgpOwogICAgIGNvbnN0IEhhc2hTZXQ8UGFn
ZSo+JiBwYWdlcyA9IHBhZ2VHcm91cC5wYWdlcygpOwogICAgIGZvciAoSGFzaFNldDxQYWdlKj46
OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcGFnZXMuYmVnaW4oKSwgZW5kID0gcGFnZXMuZW5kKCk7IGl0
ICE9IGVuZDsgKytpdCkgewogICAgICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICYoKml0KS0+bWFp
bkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsK
QEAgLTM4MSwzNSArMzQ2LDM3IEBAIHZvaWQgU3RvcmFnZUFyZWFNYXA6OmRpc3BhdGNoTG9jYWxT
dG9yYWdlRXZlbnQodWludDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwgY29uCiAKIHZvaWQgU3Rv
cmFnZUFyZWFNYXA6OmNvbm5lY3QoKQogewotICAgIGlmICghbV9pc0Rpc2Nvbm5lY3RlZCkKKyAg
ICBpZiAobV9zdG9yYWdlTWFwSUQpCiAgICAgICAgIHJldHVybjsKIAogICAgIHN3aXRjaCAobV9z
dG9yYWdlVHlwZSkgewogICAgIGNhc2UgU3RvcmFnZVR5cGU6OkxvY2FsOgotICAgIGNhc2UgU3Rv
cmFnZVR5cGU6OkVwaGVtZXJhbExvY2FsOgogICAgIGNhc2UgU3RvcmFnZVR5cGU6OlRyYW5zaWVu
dExvY2FsOgogICAgICAgICBpZiAoU2VjdXJpdHlPcmlnaW4qIHRvcExldmVsT3JpZ2luID0gbV9z
dG9yYWdlTmFtZXNwYWNlLT50b3BMZXZlbE9yaWdpbigpKQotICAgICAgICAgICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlv
bigpLnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VNYW5hZ2VyOjpDcmVhdGVUcmFuc2llbnRMb2NhbFN0
b3JhZ2VNYXAobV9zdG9yYWdlTWFwSUQsIG1fc3RvcmFnZU5hbWVzcGFjZS0+c3RvcmFnZU5hbWVz
cGFjZUlEKCksIHRvcExldmVsT3JpZ2luLT5kYXRhKCksIG1fc2VjdXJpdHlPcmlnaW4tPmRhdGEo
KSksIDApOworICAgICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpTdG9y
YWdlTWFuYWdlclNldDo6Q29ubmVjdFRvVHJhbnNpZW50TG9jYWxTdG9yYWdlQXJlYShtX3N0b3Jh
Z2VOYW1lc3BhY2UtPnNlc3Npb25JRCgpLCBtX3N0b3JhZ2VOYW1lc3BhY2UtPnN0b3JhZ2VOYW1l
c3BhY2VJRCgpLCB0b3BMZXZlbE9yaWdpbi0+ZGF0YSgpLCBtX3NlY3VyaXR5T3JpZ2luLT5kYXRh
KCkpLCBNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXJTZXQ6OkNvbm5lY3RUb1RyYW5zaWVudExvY2Fs
U3RvcmFnZUFyZWE6OlJlcGx5KG1fc3RvcmFnZU1hcElEKSwgMCk7CiAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdlcjo6Q3Jl
YXRlTG9jYWxTdG9yYWdlTWFwKG1fc3RvcmFnZU1hcElELCBtX3N0b3JhZ2VOYW1lc3BhY2UtPnN0
b3JhZ2VOYW1lc3BhY2VJRCgpLCBtX3NlY3VyaXR5T3JpZ2luLT5kYXRhKCkpLCAwKTsKKyAgICAg
ICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXJTZXQ6
OkNvbm5lY3RUb0xvY2FsU3RvcmFnZUFyZWEobV9zdG9yYWdlTmFtZXNwYWNlLT5zZXNzaW9uSUQo
KSwgbV9zdG9yYWdlTmFtZXNwYWNlLT5zdG9yYWdlTmFtZXNwYWNlSUQoKSwgbV9zZWN1cml0eU9y
aWdpbi0+ZGF0YSgpKSwgTWVzc2FnZXM6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpDb25uZWN0VG9Mb2Nh
bFN0b3JhZ2VBcmVhOjpSZXBseShtX3N0b3JhZ2VNYXBJRCksIDApOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIFN0b3JhZ2VUeXBlOjpTZXNzaW9uOgotICAgICAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2Vu
ZChNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXI6OkNyZWF0ZVNlc3Npb25TdG9yYWdlTWFwKG1fc3Rv
cmFnZU1hcElELCBtX3N0b3JhZ2VOYW1lc3BhY2UtPnN0b3JhZ2VOYW1lc3BhY2VJRCgpLCBtX3Nl
Y3VyaXR5T3JpZ2luLT5kYXRhKCkpLCAwKTsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5j
KE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdlclNldDo6Q29ubmVjdFRvU2Vzc2lvblN0b3JhZ2VBcmVh
KG1fc3RvcmFnZU5hbWVzcGFjZS0+c2Vzc2lvbklEKCksIG1fc3RvcmFnZU5hbWVzcGFjZS0+c3Rv
cmFnZU5hbWVzcGFjZUlEKCksIG1fc2VjdXJpdHlPcmlnaW4tPmRhdGEoKSksIE1lc3NhZ2VzOjpT
dG9yYWdlTWFuYWdlclNldDo6Q29ubmVjdFRvU2Vzc2lvblN0b3JhZ2VBcmVhOjpSZXBseShtX3N0
b3JhZ2VNYXBJRCksIDApOwogICAgIH0KIAotICAgIGlmIChtX3N0b3JhZ2VNYXApCi0gICAgICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigp
LmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdlcjo6U2V0SXRlbXMobV9z
dG9yYWdlTWFwSUQsIG1fc3RvcmFnZU1hcC0+aXRlbXMoKSksIDApOwotICAgIG1faXNEaXNjb25u
ZWN0ZWQgPSBmYWxzZTsKKyAgICBpZiAobV9zdG9yYWdlTWFwSUQpCisgICAgICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLnJlZ2lzdGVyU3RvcmFnZUFyZWFNYXAoKnRoaXMpOwogfQogCiB2b2lk
IFN0b3JhZ2VBcmVhTWFwOjpkaXNjb25uZWN0KCkKIHsKLSAgICBtX2lzRGlzY29ubmVjdGVkID0g
dHJ1ZTsKLSAgICBpZiAobV9zdG9yYWdlVHlwZSA9PSBTdG9yYWdlVHlwZTo6U2Vzc2lvbiAmJiBt
X3N0b3JhZ2VNYXApIHsKLSAgICAgICAgbV9wZW5kaW5nVmFsdWVDaGFuZ2VzLmNsZWFyKCk7Ci0g
ICAgICAgIG1faGFzUGVuZGluZ0NsZWFyID0gZmFsc2U7Ci0gICAgfSBlbHNlCi0gICAgICAgIHJl
c2V0VmFsdWVzKCk7CisgICAgaWYgKCFtX3N0b3JhZ2VNYXBJRCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgcmVzZXRWYWx1ZXMoKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS51bnJlZ2lz
dGVyU3RvcmFnZUFyZWFNYXAoKnRoaXMpOworCisgICAgaWYgKGF1dG8gbmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZXhpc3RpbmdOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24oKSkKKyAgICAgICAgbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLT5jb25uZWN0
aW9uKCkuc2VuZChNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXJTZXQ6OkRpc2Nvbm5lY3RGcm9tU3Rv
cmFnZUFyZWEobV9zdG9yYWdlTWFwSUQpLCAwKTsKKworICAgIG1fc3RvcmFnZU1hcElEID0gMDsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuaAppbmRleCBmYjkxYmM5MDU0MjVmYzgx
YzZhNDgzNTI3NGFiY2MwYzE3ZGE0OWM2Li40NGFkMDZmOTFiNTVjN2Y0MWU2ZDBmMjg4N2M5ZWMx
N2Q1MmE3NDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFn
ZS9TdG9yYWdlQXJlYU1hcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VBcmVhTWFwLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlIDx3dGYvSGFz
aENvdW50ZWRTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKQEAgLTQzLDcgKzQ0LDcgQEAgbmFtZXNwYWNlIFdl
YktpdCB7CiBjbGFzcyBTdG9yYWdlQXJlYUltcGw7CiBjbGFzcyBTdG9yYWdlTmFtZXNwYWNlSW1w
bDsKIAotY2xhc3MgU3RvcmFnZUFyZWFNYXAgOiBwdWJsaWMgUmVmQ291bnRlZDxTdG9yYWdlQXJl
YU1hcD4sIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworY2xhc3MgU3RvcmFnZUFyZWFN
YXAgOiBwdWJsaWMgUmVmQ291bnRlZDxTdG9yYWdlQXJlYU1hcD4sIHByaXZhdGUgSVBDOjpNZXNz
YWdlUmVjZWl2ZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxTdG9yYWdlQXJlYU1hcD4gewogcHVi
bGljOgogICAgIHN0YXRpYyBSZWY8U3RvcmFnZUFyZWFNYXA+IGNyZWF0ZShTdG9yYWdlTmFtZXNw
YWNlSW1wbCosIFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJik7CiAgICAgflN0b3JhZ2VB
cmVhTWFwKCk7CkBAIC01Nyw3ICs1OCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZUl0ZW0o
V2ViQ29yZTo6RnJhbWUqIHNvdXJjZUZyYW1lLCBTdG9yYWdlQXJlYUltcGwqIHNvdXJjZUFyZWEs
IGNvbnN0IFN0cmluZyYga2V5KTsKICAgICB2b2lkIGNsZWFyKFdlYkNvcmU6OkZyYW1lKiBzb3Vy
Y2VGcmFtZSwgU3RvcmFnZUFyZWFJbXBsKiBzb3VyY2VBcmVhKTsKICAgICBib29sIGNvbnRhaW5z
KGNvbnN0IFN0cmluZyYga2V5KTsKLSAgICBib29sIHByZXdhcm0oKTsKIAogICAgIC8vIElQQzo6
TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKQEAgLTcxLDcgKzcxLDYgQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICBTdG9yYWdlQXJlYU1hcChTdG9yYWdlTmFtZXNwYWNlSW1wbCosIFJlZjxX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJik7CiAKLSAgICB2b2lkIGRpZEdldFZhbHVlcyh1aW50
NjRfdCBzdG9yYWdlTWFwU2VlZCk7CiAgICAgdm9pZCBkaWRTZXRJdGVtKHVpbnQ2NF90IHN0b3Jh
Z2VNYXBTZWVkLCBjb25zdCBTdHJpbmcmIGtleSwgYm9vbCBxdW90YUVycm9yKTsKICAgICB2b2lk
IGRpZFJlbW92ZUl0ZW0odWludDY0X3Qgc3RvcmFnZU1hcFNlZWQsIGNvbnN0IFN0cmluZyYga2V5
KTsKICAgICB2b2lkIGRpZENsZWFyKHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkKTsKQEAgLTg4LDEy
ICs4NywxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50
KHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBT
dHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBjb25zdCBTdHJpbmcmIHVy
bFN0cmluZyk7CiAgICAgdm9pZCBkaXNwYXRjaExvY2FsU3RvcmFnZUV2ZW50KHVpbnQ2NF90IHNv
dXJjZVN0b3JhZ2VBcmVhSUQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZh
bHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZyk7CiAK
LSAgICBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IG1fc3RvcmFnZU5hbWVzcGFjZTsKKyAgICBT
dG9yYWdlTmFtZXNwYWNlSW1wbCogbV9zdG9yYWdlTmFtZXNwYWNlOwogCiAgICAgdWludDY0X3Qg
bV9zdG9yYWdlTWFwSUQ7CiAKICAgICBXZWJDb3JlOjpTdG9yYWdlVHlwZSBtX3N0b3JhZ2VUeXBl
OwotICAgIHVpbnQ2NF90IG1fc3RvcmFnZU5hbWVzcGFjZUlEOwogICAgIHVuc2lnbmVkIG1fcXVv
dGFJbkJ5dGVzOwogICAgIFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4gbV9zZWN1cml0eU9y
aWdpbjsKIApAQCAtMTAxLDExICs5OSw3IEBAIHByaXZhdGU6CiAKICAgICB1aW50NjRfdCBtX2N1
cnJlbnRTZWVkOwogICAgIGJvb2wgbV9oYXNQZW5kaW5nQ2xlYXI7Ci0gICAgYm9vbCBtX2hhc1Bl
bmRpbmdHZXRWYWx1ZXM7CiAgICAgSGFzaENvdW50ZWRTZXQ8U3RyaW5nPiBtX3BlbmRpbmdWYWx1
ZUNoYW5nZXM7Ci0KLSAgICBib29sIG1faXNEaXNjb25uZWN0ZWQgeyB0cnVlIH07Ci0gICAgYm9v
bCBtX2RpZFByZXdhcm0geyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJl
YU1hcC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0
b3JhZ2VBcmVhTWFwLm1lc3NhZ2VzLmluCmluZGV4IGIxNTkwNGYxNmJlYzE0MmIxMGI0ODAwZDEw
NjQ1MDA5MzM4MzAwZDUuLjdhNzVkMjEwZmQ4MzI1ZjJiNTFhODljZTNlNTQyZDQ4MDM5MDk2YTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VB
cmVhTWFwLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VBcmVhTWFwLm1lc3NhZ2VzLmluCkBAIC0yMSw3ICsyMSw2IEBACiAjIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAKIG1lc3NhZ2VzIC0+IFN0b3JhZ2VBcmVhTWFwIHsKLSAgICBEaWRHZXRWYWx1ZXMo
dWludDY0X3Qgc3RvcmFnZU1hcFNlZWQpCiAgICAgRGlkU2V0SXRlbSh1aW50NjRfdCBzdG9yYWdl
TWFwU2VlZCwgU3RyaW5nIGtleSwgYm9vbCBxdW90YUV4Y2VwdGlvbikKICAgICBEaWRSZW1vdmVJ
dGVtKHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkLCBTdHJpbmcga2V5KQogICAgIERpZENsZWFyKHVp
bnQ2NF90IHN0b3JhZ2VNYXBTZWVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCmluZGV4IGY1OWM3
OWI3ZmEyYmUyZmM5YTcyMDUyYzFiOWU1M2NiNmEzMjNmZDAuLjc0Mjk2MTg5MzI4ODRlZTI1NDI5
OGZiMzM1YzBlOGMzMjQwOTc2ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKQEAgLTI4LDYg
KzI4LDcgQEAKIAogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhSW1wbC5oIgogI2luY2x1ZGUgIlN0b3Jh
Z2VBcmVhTWFwLmgiCisjaW5jbHVkZSAiU3RvcmFnZU1hbmFnZXJTZXRNZXNzYWdlcy5oIgogI2lu
Y2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlICJXZWJQYWdlR3JvdXBQcm94eS5oIgogI2luY2x1
ZGUgIldlYlByb2Nlc3MuaCIKQEAgLTQwLDMxICs0MSwyNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBT
dG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodWludDY0
X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKQorUmVmPFN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3Bh
Y2UodWludDY0X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzLCBQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVz
cGFjZUltcGwoU3RvcmFnZVR5cGU6OlNlc3Npb24sIGlkZW50aWZpZXIsIG51bGxwdHIsIHF1b3Rh
SW5CeXRlcykpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBs
KFN0b3JhZ2VUeXBlOjpTZXNzaW9uLCBpZGVudGlmaWVyLCBudWxscHRyLCBxdW90YUluQnl0ZXMs
IHNlc3Npb25JRCkpOwogfQogCi1SZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1l
c3BhY2VJbXBsOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3Qg
aWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKQorUmVmPFN0b3JhZ2VOYW1lc3BhY2VJ
bXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVp
bnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcywgUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklEKQogewotICAgIHJldHVybiBjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoaWRl
bnRpZmllciwgcXVvdGFJbkJ5dGVzLCBJc0VwaGVtZXJhbDo6WWVzKTsKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChTdG9yYWdlVHlwZTo6TG9jYWwsIGlkZW50
aWZpZXIsIG51bGxwdHIsIHF1b3RhSW5CeXRlcywgc2Vzc2lvbklEKSk7CiB9CiAKLVJlZjxTdG9y
YWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZUxvY2FsU3RvcmFn
ZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMsIElz
RXBoZW1lcmFsIGlzRXBoZW1lcmFsKQorUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdl
TmFtZXNwYWNlSW1wbDo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2
NF90IGlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiB0b3BMZXZlbE9yaWdpbiwg
dWludDY0X3QgcXVvdGFJbkJ5dGVzLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7Ci0gICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwoaXNFcGhlbWVyYWwgPT0g
SXNFcGhlbWVyYWw6OlllcyA/IFN0b3JhZ2VUeXBlOjpFcGhlbWVyYWxMb2NhbCA6IFN0b3JhZ2VU
eXBlOjpMb2NhbCwgaWRlbnRpZmllciwgbnVsbHB0ciwgcXVvdGFJbkJ5dGVzKSk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5cGU6OlRyYW5z
aWVudExvY2FsLCBpZGVudGlmaWVyLCAmdG9wTGV2ZWxPcmlnaW4sIHF1b3RhSW5CeXRlcywgc2Vz
c2lvbklEKSk7CiB9CiAKLVJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFj
ZUltcGw6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVu
dGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgdG9wTGV2ZWxPcmlnaW4sIHVpbnQ2NF90
IHF1b3RhSW5CeXRlcykKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9yYWdlTmFtZXNw
YWNlSW1wbChTdG9yYWdlVHlwZTo6VHJhbnNpZW50TG9jYWwsIGlkZW50aWZpZXIsICZ0b3BMZXZl
bE9yaWdpbiwgcXVvdGFJbkJ5dGVzKSk7Ci19Ci0KLVN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpTdG9y
YWdlTmFtZXNwYWNlSW1wbChXZWJDb3JlOjpTdG9yYWdlVHlwZSBzdG9yYWdlVHlwZSwgdWludDY0
X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiogdG9wTGV2ZWxP
cmlnaW4sIHVuc2lnbmVkIHF1b3RhSW5CeXRlcykKK1N0b3JhZ2VOYW1lc3BhY2VJbXBsOjpTdG9y
YWdlTmFtZXNwYWNlSW1wbChXZWJDb3JlOjpTdG9yYWdlVHlwZSBzdG9yYWdlVHlwZSwgdWludDY0
X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiogdG9wTGV2ZWxP
cmlnaW4sIHVuc2lnbmVkIHF1b3RhSW5CeXRlcywgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQog
ICAgIDogbV9zdG9yYWdlVHlwZShzdG9yYWdlVHlwZSkKICAgICAsIG1fc3RvcmFnZU5hbWVzcGFj
ZUlEKHN0b3JhZ2VOYW1lc3BhY2VJRCkKICAgICAsIG1fdG9wTGV2ZWxPcmlnaW4odG9wTGV2ZWxP
cmlnaW4pCiAgICAgLCBtX3F1b3RhSW5CeXRlcyhxdW90YUluQnl0ZXMpCisgICAgLCBtX3Nlc3Np
b25JRChzZXNzaW9uSUQpCiB7CiB9CiAKQEAgLTc3LDEzICs3NCwxNCBAQCB2b2lkIFN0b3JhZ2VO
YW1lc3BhY2VJbXBsOjpkaWREZXN0cm95U3RvcmFnZUFyZWFNYXAoU3RvcmFnZUFyZWFNYXAmIG1h
cCkKICAgICBtX3N0b3JhZ2VBcmVhTWFwcy5yZW1vdmUobWFwLnNlY3VyaXR5T3JpZ2luKCkuZGF0
YSgpKTsKIH0KIAotUmVmPFN0b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6c3RvcmFn
ZUFyZWEoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbikKK1JlZjxTdG9y
YWdlQXJlYT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OnN0b3JhZ2VBcmVhKGNvbnN0IFNlY3VyaXR5
T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW5EYXRhKQogewogICAgIFJlZlB0cjxTdG9yYWdlQXJl
YU1hcD4gbWFwOwogCi0gICAgYXV0byYgc2xvdCA9IG1fc3RvcmFnZUFyZWFNYXBzLmFkZChzZWN1
cml0eU9yaWdpbiwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOworICAgIGF1dG8gc2VjdXJpdHlP
cmlnaW4gPSBzZWN1cml0eU9yaWdpbkRhdGEuc2VjdXJpdHlPcmlnaW4oKTsKKyAgICBhdXRvJiBz
bG90ID0gbV9zdG9yYWdlQXJlYU1hcHMuYWRkKHNlY3VyaXR5T3JpZ2luLT5kYXRhKCksIG51bGxw
dHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAoIXNsb3QpIHsKLSAgICAgICAgbWFwID0gU3Rv
cmFnZUFyZWFNYXA6OmNyZWF0ZSh0aGlzLCBzZWN1cml0eU9yaWdpbi5zZWN1cml0eU9yaWdpbigp
KTsKKyAgICAgICAgbWFwID0gU3RvcmFnZUFyZWFNYXA6OmNyZWF0ZSh0aGlzLCBXVEZNb3ZlKHNl
Y3VyaXR5T3JpZ2luKSk7CiAgICAgICAgIHNsb3QgPSBtYXAuZ2V0KCk7CiAgICAgfSBlbHNlCiAg
ICAgICAgIG1hcCA9IHNsb3Q7CkBAIC05NSwxMyArOTMsMTcgQEAgUmVmPFN0b3JhZ2VOYW1lc3Bh
Y2U+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjb3B5KFBhZ2UqIG5ld1BhZ2UpCiB7CiAgICAgQVNT
RVJUKG1fc3RvcmFnZU5hbWVzcGFjZUlEKTsKIAotICAgIGlmIChtX3N0b3JhZ2VUeXBlID09IFN0
b3JhZ2VUeXBlOjpTZXNzaW9uKQotICAgICAgICByZXR1cm4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VO
YW1lc3BhY2UoV2ViUGFnZTo6ZnJvbUNvcmVQYWdlKG5ld1BhZ2UpLT5wYWdlSUQoKS50b1VJbnQ2
NCgpLCBtX3F1b3RhSW5CeXRlcyk7CisgICAgaWYgKGF1dG8gbmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZXhpc3RpbmdOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24oKSkKKyAgICAgICAgbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLT5jb25uZWN0aW9uKCku
c2VuZChNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXJTZXQ6OkNsb25lU2Vzc2lvblN0b3JhZ2VOYW1l
c3BhY2UobmV3UGFnZS0+c2Vzc2lvbklEKCksIG1fc3RvcmFnZU5hbWVzcGFjZUlELCBXZWJQYWdl
Ojpmcm9tQ29yZVBhZ2UobmV3UGFnZSktPnBhZ2VJRCgpLnRvVUludDY0KCkpLCAwKTsKIAotICAg
IEFTU0VSVChtX3N0b3JhZ2VUeXBlID09IFN0b3JhZ2VUeXBlOjpFcGhlbWVyYWxMb2NhbCk7Ci0g
ICAgYXV0byBuZXdOYW1lc3BhY2UgPSBhZG9wdFJlZigqbmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBs
KG1fc3RvcmFnZVR5cGUsIG1fc3RvcmFnZU5hbWVzcGFjZUlELCBtX3RvcExldmVsT3JpZ2luLmdl
dCgpLCBtX3F1b3RhSW5CeXRlcykpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0b3JhZ2VO
YW1lc3BhY2VJbXBsKG1fc3RvcmFnZVR5cGUsIFdlYlBhZ2U6OmZyb21Db3JlUGFnZShuZXdQYWdl
KS0+cGFnZUlEKCkudG9VSW50NjQoKSwgbV90b3BMZXZlbE9yaWdpbi5nZXQoKSwgbV9xdW90YUlu
Qnl0ZXMsIG5ld1BhZ2UtPnNlc3Npb25JRCgpKSk7Cit9CiAKLSAgICByZXR1cm4gbmV3TmFtZXNw
YWNlOwordm9pZCBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6c2V0U2Vzc2lvbklERm9yVGVzdGluZyhQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCit7CisgICAgbV9zZXNzaW9uSUQgPSBzZXNzaW9uSUQ7
CisgICAgZm9yIChhdXRvIHN0b3JhZ2VBcmVhTWFwIDogbV9zdG9yYWdlQXJlYU1hcHMudmFsdWVz
KCkpCisgICAgICAgIHN0b3JhZ2VBcmVhTWFwLT5kaXNjb25uZWN0KCk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0
b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmgKaW5kZXggZWE2ZDU1MThjZGZjOTlkYzNh
MDFkODU3ZTM2NjM2NTBmOWI2NjZhMi4uNWVlODllN2E5OTAxZWRiYTg4OTUzNDU2NDUyYjYyNWZl
ZWQ3NmJjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2Uv
U3RvcmFnZU5hbWVzcGFjZUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
U3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oCkBAIC0zOSwxMiArMzksOSBAQCBjbGFzcyBX
ZWJQYWdlOwogCiBjbGFzcyBTdG9yYWdlTmFtZXNwYWNlSW1wbCA6IHB1YmxpYyBXZWJDb3JlOjpT
dG9yYWdlTmFtZXNwYWNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsPiBjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVy
LCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpOwotICAgIHN0YXRpYyBSZWY8U3RvcmFnZU5hbWVzcGFj
ZUltcGw+IGNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVu
dGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpOwotCi0gICAgZW51bSBjbGFzcyBJc0VwaGVt
ZXJhbCA6IGJvb2wgeyBObywgWWVzIH07Ci0gICAgc3RhdGljIFJlZjxTdG9yYWdlTmFtZXNwYWNl
SW1wbD4gY3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVu
c2lnbmVkIHF1b3RhSW5CeXRlcywgSXNFcGhlbWVyYWwgaXNFcGhlbWVyYWwpOwotICAgIHN0YXRp
YyBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5h
bWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgdG9w
TGV2ZWxPcmlnaW4sIHVpbnQ2NF90IHF1b3RhSW5CeXRlcyk7CisgICAgc3RhdGljIFJlZjxTdG9y
YWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3Qg
aWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzLCBQQUw6OlNlc3Npb25JRCk7CisgICAg
c3RhdGljIFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNw
YWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcywgUEFMOjpTZXNz
aW9uSUQpOworICAgIHN0YXRpYyBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZVRyYW5z
aWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbiYgdG9wTGV2ZWxPcmlnaW4sIHVpbnQ2NF90IHF1b3RhSW5CeXRlcywgUEFM
OjpTZXNzaW9uSUQpOwogCiAgICAgdmlydHVhbCB+U3RvcmFnZU5hbWVzcGFjZUltcGwoKTsKIApA
QCAtNTIsMTEgKzQ5LDE0IEBAIHB1YmxpYzoKICAgICB1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNl
SUQoKSBjb25zdCB7IHJldHVybiBtX3N0b3JhZ2VOYW1lc3BhY2VJRDsgfQogICAgIFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luKiB0b3BMZXZlbE9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fdG9wTGV2
ZWxPcmlnaW4uZ2V0KCk7IH0KICAgICB1bnNpZ25lZCBxdW90YUluQnl0ZXMoKSBjb25zdCB7IHJl
dHVybiBtX3F1b3RhSW5CeXRlczsgfQorICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fc2Vzc2lvbklEOyB9CiAKICAgICB2b2lkIGRpZERlc3Ry
b3lTdG9yYWdlQXJlYU1hcChTdG9yYWdlQXJlYU1hcCYpOwogCisgICAgdm9pZCBzZXRTZXNzaW9u
SURGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEKSBvdmVycmlkZTsKKwogcHJpdmF0ZToKLSAgICBl
eHBsaWNpdCBTdG9yYWdlTmFtZXNwYWNlSW1wbChXZWJDb3JlOjpTdG9yYWdlVHlwZSwgdWludDY0
X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiogdG9wTGV2ZWxP
cmlnaW4sIHVuc2lnbmVkIHF1b3RhSW5CeXRlcyk7CisgICAgZXhwbGljaXQgU3RvcmFnZU5hbWVz
cGFjZUltcGwoV2ViQ29yZTo6U3RvcmFnZVR5cGUsIHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJ
RCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qIHRvcExldmVsT3JpZ2luLCB1bnNpZ25lZCBxdW90
YUluQnl0ZXMsIFBBTDo6U2Vzc2lvbklEKTsKIAogICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlQXJl
YT4gc3RvcmFnZUFyZWEoY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJikgb3ZlcnJp
ZGU7CiAgICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNvcHkoV2ViQ29yZTo6UGFn
ZSopIG92ZXJyaWRlOwpAQCAtNjksNyArNjksOSBAQCBwcml2YXRlOgogCiAgICAgY29uc3QgdW5z
aWduZWQgbV9xdW90YUluQnl0ZXM7CiAKLSAgICBIYXNoTWFwPFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSwgU3RvcmFnZUFyZWFNYXAqPiBtX3N0b3JhZ2VBcmVhTWFwczsKKyAgICBQQUw6OlNl
c3Npb25JRCBtX3Nlc3Npb25JRDsKKworICAgIEhhc2hNYXA8V2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhLCBSZWZQdHI8U3RvcmFnZUFyZWFNYXA+PiBtX3N0b3JhZ2VBcmVhTWFwczsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5j
cHAKaW5kZXggODhhOTNjNWQ1MDQyYTEyNjM0MTFjNjg0YmVkYmQ1MDZlMzRiNWEwZS4uOWU3MjE2
MzFiM2I0YmQ3MmVjMDMzZTc5YmFlMGQzNzUyNTRiYWMwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFt
ZXNwYWNlUHJvdmlkZXIuY3BwCkBAIC02NywyMiArNjcsMTcgQEAgV2ViU3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyOjp+V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKCkKIAogUmVmPFdlYkNvcmU6
OlN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlU2Vz
c2lvblN0b3JhZ2VOYW1lc3BhY2UoUGFnZSYgcGFnZSwgdW5zaWduZWQgcXVvdGEpCiB7Ci0gICAg
cmV0dXJuIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFj
ZShXZWJQYWdlOjpmcm9tQ29yZVBhZ2UoJnBhZ2UpLT5wYWdlSUQoKS50b1VJbnQ2NCgpLCBxdW90
YSk7CisgICAgcmV0dXJuIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVTZXNzaW9uU3RvcmFn
ZU5hbWVzcGFjZShXZWJQYWdlOjpmcm9tQ29yZVBhZ2UoJnBhZ2UpLT5wYWdlSUQoKS50b1VJbnQ2
NCgpLCBxdW90YSwgcGFnZS5zZXNzaW9uSUQoKSk7CiB9CiAKLVJlZjxXZWJDb3JlOjpTdG9yYWdl
TmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUVwaGVtZXJhbExv
Y2FsU3RvcmFnZU5hbWVzcGFjZShQYWdlJiBwYWdlLCB1bnNpZ25lZCBxdW90YSkKK1JlZjxXZWJD
b3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0
ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSwgUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklEKQogewotICAgIHJldHVybiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlRXBoZW1l
cmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFdlYlBhZ2U6OmZyb21Db3JlUGFnZSgmcGFnZSktPnBh
Z2VJRCgpLnRvVUludDY0KCksIHF1b3RhKTsKKyAgICByZXR1cm4gU3RvcmFnZU5hbWVzcGFjZUlt
cGw6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZShtX2lkZW50aWZpZXIsIHF1b3RhLCBzZXNz
aW9uSUQpOwogfQogCi1SZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVv
dGEpCitSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVBy
b3ZpZGVyOjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW4mIHRvcExldmVsT3JpZ2luLCB1bnNpZ25lZCBxdW90YSwgUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklEKQogewotICAgIHJldHVybiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRl
TG9jYWxTdG9yYWdlTmFtZXNwYWNlKG1faWRlbnRpZmllciwgcXVvdGEsIFN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsOjpJc0VwaGVtZXJhbDo6Tm8pOwotfQotCi1SZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVz
cGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHRvcExldmVsT3JpZ2luLCB1
bnNpZ25lZCBxdW90YSkKLXsKLSAgICByZXR1cm4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0
ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShtX2lkZW50aWZpZXIsIHRvcExldmVsT3Jp
Z2luLCBxdW90YSk7CisgICAgcmV0dXJuIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVUcmFu
c2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UobV9pZGVudGlmaWVyLCB0b3BMZXZlbE9yaWdpbiwg
cXVvdGEsIHNlc3Npb25JRCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVy
LmgKaW5kZXggM2NlNmRiOWYwNjhlODAzODk2ODExNGVmOTlhYzI1YWNlMDQxMWYzNC4uMjJlNDJm
NTIwZGFjYTNkZjY5YzVhODYwNTY2ZmY0YTc3MDFkZjZjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyLmgKQEAgLTM4LDkgKzM4LDggQEAgcHJpdmF0ZToKICAgICBleHBsaWNpdCBX
ZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIodWludDY0X3QgaWRlbnRpZmllcik7CiAKICAgICBS
ZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3Bh
Y2UoV2ViQ29yZTo6UGFnZSYsIHVuc2lnbmVkIHF1b3RhKSBvdmVycmlkZTsKLSAgICBSZWY8V2Vi
Q29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNw
YWNlKFdlYkNvcmU6OlBhZ2UmLCB1bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7Ci0gICAgUmVmPFdl
YkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNp
Z25lZCBxdW90YSkgb3ZlcnJpZGU7Ci0gICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+
IGNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbiYsIHVuc2lnbmVkIHF1b3RhKSBvdmVycmlkZTsKKyAgICBSZWY8V2ViQ29yZTo6U3RvcmFn
ZU5hbWVzcGFjZT4gY3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkIHF1b3RhLCBQ
QUw6OlNlc3Npb25JRCkgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3Bh
Y2U+IGNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbiYsIHVuc2lnbmVkIHF1b3RhLCBQQUw6OlNlc3Npb25JRCkgb3ZlcnJpZGU7CiAKICAg
ICBjb25zdCB1aW50NjRfdCBtX2lkZW50aWZpZXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNwcAppbmRleCA3ZGE1YzcyZTU4ZWY3M2QxOTZk
MTY3MzA3NzVhMzdiYWE1NDc0Y2FkLi40MmNjNGRiZDAzOWVjNzM1OTJjNDc2MGZjYWUxYmI4ZDY4
M2RjOTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFy
ZWFJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFJ
bXBsLmNwcApAQCAtMjkyLDQgKzI5MiwyMiBAQCB2b2lkIFN0b3JhZ2VBcmVhSW1wbDo6ZGlzcGF0
Y2hTdG9yYWdlRXZlbnQoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVgogICAg
ICAgICBTdG9yYWdlRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaFNlc3Npb25TdG9yYWdlRXZlbnRz
KGtleSwgb2xkVmFsdWUsIG5ld1ZhbHVlLCBtX3NlY3VyaXR5T3JpZ2luLCBzb3VyY2VGcmFtZSk7
CiB9CiAKK3ZvaWQgU3RvcmFnZUFyZWFJbXBsOjpzZXNzaW9uQ2hhbmdlZChib29sIGlzTmV3U2Vz
c2lvblBlcnNpc3RlbnQpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIHVu
c2lnbmVkIHF1b3RhID0gbV9zdG9yYWdlTWFwLT5xdW90YSgpOworICAgIG1fc3RvcmFnZU1hcCA9
IFN0b3JhZ2VNYXA6OmNyZWF0ZShxdW90YSk7CisKKyAgICBpZiAoaXNOZXdTZXNzaW9uUGVyc2lz
dGVudCAmJiAhbV9zdG9yYWdlQXJlYVN5bmMgJiYgbV9zdG9yYWdlU3luY01hbmFnZXIpIHsKKyAg
ICAgICAgbV9zdG9yYWdlQXJlYVN5bmMgPSBTdG9yYWdlQXJlYVN5bmM6OmNyZWF0ZShtX3N0b3Jh
Z2VTeW5jTWFuYWdlci5nZXQoKSwgKnRoaXMsIG1fc2VjdXJpdHlPcmlnaW4uZGF0YWJhc2VJZGVu
dGlmaWVyKCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFpc05ld1Nlc3Np
b25QZXJzaXN0ZW50ICYmIG1fc3RvcmFnZUFyZWFTeW5jKSB7CisgICAgICAgIG1fc3RvcmFnZUFy
ZWFTeW5jLT5zY2hlZHVsZUZpbmFsU3luYygpOworICAgICAgICBtX3N0b3JhZ2VBcmVhU3luYyA9
IG51bGxwdHI7CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmggYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmgKaW5kZXggNThmY2JhMDM1MDA0
YmE2M2NjODg4YThkYjI5MTAwMTliYzhlN2Q5MS4uYjIwYmVmOTUzMzdkODQ0ZGIzYzIzZjgwMWQw
ZGI5MzY1NDUwZTI5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0
b3JhZ2VBcmVhSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdl
QXJlYUltcGwuaApAQCAtNjEsOCArNjEsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZWNyZW1lbnRB
Y2Nlc3NDb3VudCgpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xvc2VEYXRhYmFzZUlmSWRsZSgpIG92
ZXJyaWRlOwogCi0gICAgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0
eU9yaWdpbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fc2VjdXJpdHlPcmlnaW47IH0KLQog
ICAgIFJlZjxTdG9yYWdlQXJlYUltcGw+IGNvcHkoKTsKICAgICB2b2lkIGNsb3NlKCk7CiAKQEAg
LTc0LDYgKzcyLDggQEAgcHVibGljOgogCiAgICAgdm9pZCBzeW5jKCk7CiAKKyAgICB2b2lkIHNl
c3Npb25DaGFuZ2VkKGJvb2wgaXNOZXdTZXNzaW9uUGVyc2lzdGVudCk7CisKIHByaXZhdGU6CiAg
ICAgU3RvcmFnZUFyZWFJbXBsKFdlYkNvcmU6OlN0b3JhZ2VUeXBlLCBjb25zdCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEmLCBSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZVN5bmNNYW5hZ2VyPiYm
LCB1bnNpZ25lZCBxdW90YSk7CiAgICAgZXhwbGljaXQgU3RvcmFnZUFyZWFJbXBsKGNvbnN0IFN0
b3JhZ2VBcmVhSW1wbCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdl
L1N0b3JhZ2VBcmVhU3luYy5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VB
cmVhU3luYy5oCmluZGV4IGMwMDg3NTNmMzQ0OWRhMzRjNTYzZGNiMTY1YTQyNTQ2MzcwMDdhMjcu
LjEwOWM3Y2YzNDZjMzVmZDBjZDAxNzg2YmI0OTBkZTA4YmQzMDk2ZjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmgKQEAgLTM5LDcgKzM5LDcgQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFN0b3JhZ2VBcmVhSW1wbDsKIAotY2xhc3MgU3Rv
cmFnZUFyZWFTeW5jIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFN0b3JhZ2VBcmVhU3lu
Yz4geworY2xhc3MgU3RvcmFnZUFyZWFTeW5jIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PFN0b3JhZ2VBcmVhU3luYywgV1RGOjpEZXN0cnVjdGlvblRocmVhZDo6TWFpbj4gewogcHVibGlj
OgogICAgIHN0YXRpYyBSZWY8U3RvcmFnZUFyZWFTeW5jPiBjcmVhdGUoUmVmUHRyPFdlYkNvcmU6
OlN0b3JhZ2VTeW5jTWFuYWdlcj4mJiwgUmVmPFN0b3JhZ2VBcmVhSW1wbD4mJiwgY29uc3QgU3Ry
aW5nJiBkYXRhYmFzZUlkZW50aWZpZXIpOwogICAgIH5TdG9yYWdlQXJlYVN5bmMoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3Bw
CmluZGV4IDRhOTRhMWQ4NWNlY2ExZTNjNjNiYzcyYTg2YWIwNmFmMGUxODZkNWQuLjczN2Y1YzA5
NzIxZDJiYmRiYzg2NTc2MWM5ZDExOGM4MWRmNjEzNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcApAQCAtNDUsMTcgKzQ1
LDEyIEBAIHN0YXRpYyBIYXNoTWFwPFN0cmluZywgU3RvcmFnZU5hbWVzcGFjZUltcGwqPiYgbG9j
YWxTdG9yYWdlTmFtZXNwYWNlTWFwKCkKICAgICByZXR1cm4gbG9jYWxTdG9yYWdlTmFtZXNwYWNl
TWFwOwogfQogCi1SZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBs
OjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSkKK1JlZjxTdG9y
YWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVNlc3Npb25TdG9y
YWdlTmFtZXNwYWNlKHVuc2lnbmVkIHF1b3RhLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5
cGU6OlNlc3Npb24sIFN0cmluZygpLCBxdW90YSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0b3JhZ2VUeXBlOjpTZXNzaW9uLCBTdHJpbmcoKSwgcXVv
dGEsIHNlc3Npb25JRCkpOwogfQogCi1SZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VO
YW1lc3BhY2VJbXBsOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWdu
ZWQgcXVvdGEpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFjZUlt
cGwoU3RvcmFnZVR5cGU6OkVwaGVtZXJhbExvY2FsLCBTdHJpbmcoKSwgcXVvdGEpKTsKLX0KLQot
UmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Z2V0T3JDcmVh
dGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoY29uc3QgU3RyaW5nJiBkYXRhYmFzZVBhdGgsIHVuc2ln
bmVkIHF1b3RhKQorUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1w
bDo6Z2V0T3JDcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoY29uc3QgU3RyaW5nJiBkYXRhYmFz
ZVBhdGgsIHVuc2lnbmVkIHF1b3RhLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7CiAgICAg
QVNTRVJUKCFkYXRhYmFzZVBhdGguaXNOdWxsKCkpOwogCkBAIC02MywxOCArNTgsMTkgQEAgUmVm
PFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Z2V0T3JDcmVhdGVM
b2NhbFN0b3JhZ2VOYW1lc3BhY2UKICAgICBpZiAoc2xvdCkKICAgICAgICAgcmV0dXJuICpzbG90
OwogCi0gICAgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBzdG9yYWdlTmFtZXNwYWNlID0gYWRv
cHRSZWYoKm5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChTdG9yYWdlVHlwZTo6TG9jYWwsIGRhdGFi
YXNlUGF0aCwgcXVvdGEpKTsKKyAgICBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IHN0b3JhZ2VO
YW1lc3BhY2UgPSBhZG9wdFJlZigqbmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0b3JhZ2VUeXBl
OjpMb2NhbCwgZGF0YWJhc2VQYXRoLCBxdW90YSwgc2Vzc2lvbklEKSk7CiAgICAgc2xvdCA9IHN0
b3JhZ2VOYW1lc3BhY2UucHRyKCk7CiAKICAgICByZXR1cm4gc3RvcmFnZU5hbWVzcGFjZTsKIH0K
IAotU3RvcmFnZU5hbWVzcGFjZUltcGw6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0b3JhZ2VUeXBl
IHN0b3JhZ2VUeXBlLCBjb25zdCBTdHJpbmcmIHBhdGgsIHVuc2lnbmVkIHF1b3RhKQorU3RvcmFn
ZU5hbWVzcGFjZUltcGw6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0b3JhZ2VUeXBlIHN0b3JhZ2VU
eXBlLCBjb25zdCBTdHJpbmcmIHBhdGgsIHVuc2lnbmVkIHF1b3RhLCBQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQpCiAgICAgOiBtX3N0b3JhZ2VUeXBlKHN0b3JhZ2VUeXBlKQogICAgICwgbV9wYXRo
KHBhdGguaXNvbGF0ZWRDb3B5KCkpCiAgICAgLCBtX3N5bmNNYW5hZ2VyKDApCiAgICAgLCBtX3F1
b3RhKHF1b3RhKQogICAgICwgbV9pc1NodXRkb3duKGZhbHNlKQorICAgICwgbV9zZXNzaW9uSUQo
c2Vzc2lvbklEKQogewogICAgIGlmIChpc1BlcnNpc3RlbnRMb2NhbFN0b3JhZ2UobV9zdG9yYWdl
VHlwZSkgJiYgIW1fcGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIG1fc3luY01hbmFnZXIgPSBTdG9y
YWdlU3luY01hbmFnZXI6OmNyZWF0ZShtX3BhdGgpOwpAQCAtOTcsOSArOTMsOSBAQCBSZWY8U3Rv
cmFnZU5hbWVzcGFjZT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNvcHkoUGFnZSopCiB7CiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQoIW1faXNTaHV0ZG93bik7Ci0gICAg
QVNTRVJUKG1fc3RvcmFnZVR5cGUgPT0gU3RvcmFnZVR5cGU6OlNlc3Npb24gfHwgbV9zdG9yYWdl
VHlwZSA9PSBTdG9yYWdlVHlwZTo6RXBoZW1lcmFsTG9jYWwpOworICAgIEFTU0VSVChtX3N0b3Jh
Z2VUeXBlID09IFN0b3JhZ2VUeXBlOjpTZXNzaW9uKTsKIAotICAgIGF1dG8gbmV3TmFtZXNwYWNl
ID0gYWRvcHRSZWYoKm5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChtX3N0b3JhZ2VUeXBlLCBtX3Bh
dGgsIG1fcXVvdGEpKTsKKyAgICBhdXRvIG5ld05hbWVzcGFjZSA9IGFkb3B0UmVmKCpuZXcgU3Rv
cmFnZU5hbWVzcGFjZUltcGwobV9zdG9yYWdlVHlwZSwgbV9wYXRoLCBtX3F1b3RhLCBtX3Nlc3Np
b25JRCkpOwogICAgIGZvciAoYXV0byYgaXRlciA6IG1fc3RvcmFnZUFyZWFNYXApCiAgICAgICAg
IG5ld05hbWVzcGFjZS0+bV9zdG9yYWdlQXJlYU1hcC5zZXQoaXRlci5rZXksIGl0ZXIudmFsdWUt
PmNvcHkoKSk7CiAKQEAgLTEyNyw3ICsxMjMsNyBAQCB2b2lkIFN0b3JhZ2VOYW1lc3BhY2VJbXBs
OjpjbG9zZSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIElmIHdlJ3JlIG5vdCBhIHBlcnNp
c3RlbnQgc3RvcmFnZSwgd2Ugc2hvdWxkbid0IG5lZWQgdG8gZG8gYW55IHdvcmsgaGVyZS4KLSAg
ICBpZiAobV9zdG9yYWdlVHlwZSA9PSBTdG9yYWdlVHlwZTo6U2Vzc2lvbiB8fCBtX3N0b3JhZ2VU
eXBlID09IFN0b3JhZ2VUeXBlOjpFcGhlbWVyYWxMb2NhbCkgeworICAgIGlmIChtX3N0b3JhZ2VU
eXBlID09IFN0b3JhZ2VUeXBlOjpTZXNzaW9uKSB7CiAgICAgICAgIEFTU0VSVCghbV9zeW5jTWFu
YWdlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xNzYsNCArMTcyLDExIEBAIHZvaWQg
U3RvcmFnZU5hbWVzcGFjZUltcGw6OmNsb3NlSWRsZUxvY2FsU3RvcmFnZURhdGFiYXNlcygpCiAg
ICAgICAgIGl0LT52YWx1ZS0+Y2xvc2VEYXRhYmFzZUlmSWRsZSgpOwogfQogCit2b2lkIFN0b3Jh
Z2VOYW1lc3BhY2VJbXBsOjpzZXRTZXNzaW9uSURGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCkKK3sKKyAgICBtX3Nlc3Npb25JRCA9IHNlc3Npb25JRDsKKyAgICBmb3IgKGF1dG8g
c3RvcmFnZUFyZWFNYXAgOiBtX3N0b3JhZ2VBcmVhTWFwLnZhbHVlcygpKQorICAgICAgICBzdG9y
YWdlQXJlYU1hcC0+c2Vzc2lvbkNoYW5nZWQoIXNlc3Npb25JRC5pc0VwaGVtZXJhbCgpKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0
b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaAppbmRleCBjODhmMDYxZWY1ZTUwYzliMTYzNWVj
M2Y4ZDZiYTBlZDc3MDVjYWE3Li4xMjAzMjUyZDg0NjlkOGIzMGVhMDQwMDc1ZDk2ZjcxNTdmZmVl
Y2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZU5hbWVz
cGFjZUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZU5hbWVz
cGFjZUltcGwuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlP
cmlnaW5EYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TdG9yYWdlQXJlYS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU3RvcmFnZU5hbWVzcGFjZS5oPgorI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4K
ICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTM4LDkgKzM5LDggQEAgY2xhc3MgU3RvcmFn
ZUFyZWFJbXBsOwogCiBjbGFzcyBTdG9yYWdlTmFtZXNwYWNlSW1wbCA6IHB1YmxpYyBXZWJDb3Jl
OjpTdG9yYWdlTmFtZXNwYWNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFN0b3JhZ2VOYW1l
c3BhY2VJbXBsPiBjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSk7
Ci0gICAgc3RhdGljIFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRlRXBoZW1lcmFsTG9j
YWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkIHF1b3RhKTsKLSAgICBzdGF0aWMgUmVmPFN0b3Jh
Z2VOYW1lc3BhY2VJbXBsPiBnZXRPckNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZShjb25zdCBT
dHJpbmcmIGRhdGFiYXNlUGF0aCwgdW5zaWduZWQgcXVvdGEpOworICAgIHN0YXRpYyBSZWY8U3Rv
cmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVk
IHF1b3RhLCBQQUw6OlNlc3Npb25JRCk7CisgICAgc3RhdGljIFJlZjxTdG9yYWdlTmFtZXNwYWNl
SW1wbD4gZ2V0T3JDcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoY29uc3QgU3RyaW5nJiBkYXRh
YmFzZVBhdGgsIHVuc2lnbmVkIHF1b3RhLCBQQUw6OlNlc3Npb25JRCk7CiAgICAgdmlydHVhbCB+
U3RvcmFnZU5hbWVzcGFjZUltcGwoKTsKIAogICAgIHZvaWQgY2xvc2UoKTsKQEAgLTU0LDggKzU0
LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHN5bmMoKTsKICAgICB2b2lkIGNsb3NlSWRsZUxvY2Fs
U3RvcmFnZURhdGFiYXNlcygpOwogCisgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KKyAgICB2b2lkIHNldFNlc3Npb25J
REZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQpIG92ZXJyaWRlOworCiBwcml2YXRlOgotICAgIFN0
b3JhZ2VOYW1lc3BhY2VJbXBsKFdlYkNvcmU6OlN0b3JhZ2VUeXBlLCBjb25zdCBTdHJpbmcmIHBh
dGgsIHVuc2lnbmVkIHF1b3RhKTsKKyAgICBTdG9yYWdlTmFtZXNwYWNlSW1wbChXZWJDb3JlOjpT
dG9yYWdlVHlwZSwgY29uc3QgU3RyaW5nJiBwYXRoLCB1bnNpZ25lZCBxdW90YSwgUEFMOjpTZXNz
aW9uSUQpOwogCiAgICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYShjb25z
dCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmKSBvdmVycmlkZTsKICAgICBSZWY8U3RvcmFn
ZU5hbWVzcGFjZT4gY29weShXZWJDb3JlOjpQYWdlKiBuZXdQYWdlKSBvdmVycmlkZTsKQEAgLTcz
LDYgKzc2LDggQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX3F1b3RhOwogCiAgICAgYm9vbCBt
X2lzU2h1dGRvd247CisKKyAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3Rv
cmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9TdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKaW5kZXggODM2MjA1N2Zm
ZDc0ZjZkMmRhMWFhNDdkNzc4MDA0OTFjOWRhMTFkYy4uZDA5NDY5MTI1ZmMyZjQ4NjY1OGE3M2E2
Yjk1MGIyNDM0YjA3MDc5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdl
L1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9TdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKQEAgLTI2LDYgKzI2LDcg
QEAKICNpbmNsdWRlICJXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaCIKIAogI2luY2x1ZGUg
IlN0b3JhZ2VOYW1lc3BhY2VJbXBsLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CiAjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpA
QCAtOTYsMjYgKzk3LDIxIEBAIHZvaWQgV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpzeW5j
TG9jYWxTdG9yYWdlKCkKICAgICB9CiB9CiAKLVJlZjxTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFBhZ2Um
LCB1bnNpZ25lZCBxdW90YSkKK1JlZjxTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNw
YWNlUHJvdmlkZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFBhZ2UmIHBhZ2UsIHVu
c2lnbmVkIHF1b3RhKQogewotICAgIHJldHVybiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRl
U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UocXVvdGEpOworICAgIHJldHVybiBTdG9yYWdlTmFtZXNw
YWNlSW1wbDo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UocXVvdGEsIHBhZ2Uuc2Vzc2lv
bklEKCkpOwogfQogCi1SZWY8U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVBy
b3ZpZGVyOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoUGFnZSYsIHVuc2ln
bmVkIHF1b3RhKQorUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92
aWRlcjo6Y3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkIHF1b3RhLCBQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQpCiB7Ci0gICAgcmV0dXJuIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpj
cmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UocXVvdGEpOworICAgIHJldHVybiBT
dG9yYWdlTmFtZXNwYWNlSW1wbDo6Z2V0T3JDcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UobV9s
b2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgsIHF1b3RhLCBzZXNzaW9uSUQpOwogfQogCi1SZWY8U3Rv
cmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEpCi17Ci0gICAgcmV0dXJuIFN0b3JhZ2VOYW1l
c3BhY2VJbXBsOjpnZXRPckNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZShtX2xvY2FsU3RvcmFn
ZURhdGFiYXNlUGF0aCwgcXVvdGEpOwotfQotCi1SZWY8U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3Rv
cmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2UoU2VjdXJpdHlPcmlnaW4mLCB1bnNpZ25lZCBxdW90YSkKK1JlZjxTdG9yYWdlTmFtZXNwYWNl
PiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFn
ZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkIHF1b3RhLCBQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQpCiB7CiAgICAgLy8gRklYTUU6IEEgc21hcnRlciBpbXBsZW1lbnRhdGlvbiB3
b3VsZCBjcmVhdGUgYSBzcGVjaWFsIG5hbWVzcGFjZSB0eXBlIGluc3RlYWQgb2YganVzdCBwaWdn
eS1iYWNraW5nIG9mZgogICAgIC8vIFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlIGhlcmUuCi0gICAg
cmV0dXJuIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFj
ZShxdW90YSk7CisgICAgcmV0dXJuIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVTZXNzaW9u
U3RvcmFnZU5hbWVzcGFjZShxdW90YSwgc2Vzc2lvbklEKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5o
IGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
ci5oCmluZGV4IGU1ODlmZWU3YTVjNmM5MWNmOTRiN2QyM2I0ODYxNDgxNzliOGNmZjYuLjZkYmM1
YzkwOWJmYjc5ZTFhMzViMDhiNDg5NTM5YTBmM2Y3MGE3MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmgK
QEAgLTUwLDkgKzUwLDggQEAgcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJTdG9yYWdlTmFtZXNw
YWNlUHJvdmlkZXIoY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpOwogCiAg
ICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFt
ZXNwYWNlKFdlYkNvcmU6OlBhZ2UmLCB1bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7Ci0gICAgUmVm
PFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5h
bWVzcGFjZShXZWJDb3JlOjpQYWdlJiwgdW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOwotICAgIFJl
ZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2Uo
dW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOwotICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNw
YWNlPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW4mLCB1bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OlN0
b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90
YSwgUEFMOjpTZXNzaW9uSUQpIG92ZXJyaWRlOworICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlTmFt
ZXNwYWNlPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW4mLCB1bnNpZ25lZCBxdW90YSwgUEFMOjpTZXNzaW9uSUQpIG92ZXJyaWRlOwog
CiAgICAgY29uc3QgU3RyaW5nIG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoOwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCBiOGQ5NzExZTcwZDc3
NDVkN2QzOWIxZjlmNTQxYTE2NTRkNjU5YzgyLi4wMzRmMGVjNzEwZjg3ZmUzZmZiNGJmOTQzNTE1
YjQ4YzUwMWQ5MWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tCkBAIC0yODg4LDYgKzI4ODgsNyBAQCAtICh2b2lkKV9wcmVmZXJlbmNlc0NoYW5nZWQ6KFdl
YlByZWZlcmVuY2VzICopcHJlZmVyZW5jZXMKICAgICBzZXR0aW5ncy5zZXRMb2NhbFN0b3JhZ2VF
bmFibGVkKFtwcmVmZXJlbmNlcyBsb2NhbFN0b3JhZ2VFbmFibGVkXSk7CiAKICAgICBfcHJpdmF0
ZS0+cGFnZS0+ZW5hYmxlTGVnYWN5UHJpdmF0ZUJyb3dzaW5nKFtwcmVmZXJlbmNlcyBwcml2YXRl
QnJvd3NpbmdFbmFibGVkXSk7CisgICAgX3ByaXZhdGUtPmdyb3VwLT5zdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXIoKS5lbmFibGVMZWdhY3lQcml2YXRlQnJvd3NpbmdGb3JUZXN0aW5nKFtwcmVmZXJl
bmNlcyBwcml2YXRlQnJvd3NpbmdFbmFibGVkXSk7CiAgICAgc2V0dGluZ3Muc2V0U2Fuc1Nlcmlm
Rm9udEZhbWlseShbcHJlZmVyZW5jZXMgc2Fuc1NlcmlmRm9udEZhbWlseV0pOwogICAgIHNldHRp
bmdzLnNldFNlcmlmRm9udEZhbWlseShbcHJlZmVyZW5jZXMgc2VyaWZGb250RmFtaWx5XSk7CiAg
ICAgc2V0dGluZ3Muc2V0U3RhbmRhcmRGb250RmFtaWx5KFtwcmVmZXJlbmNlcyBzdGFuZGFyZEZv
bnRGYW1pbHldKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCBiMTY1MDk5ZGU2YzEyNmIzMDBlNTJiNzVmNjZiYWVlOGM2N2Y1Y2QyLi5lN2ZiYjZh
Mjc5ODhkYjk4ZmM4MTgxNWYwZTZiY2EzZWNkMTIzMTA0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTktMDgtMTUg
IFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgU29tZSBpbXByb3Zl
bWVudHMgb24gd2ViIHN0b3JhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwMDM3MworCisgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVu
LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Mb2NhbFN0b3Jh
Z2VQZXJzaXN0ZW5jZS5tbToKKyAgICAgICAgKFRFU1QpOiB1cGRhdGUgZXhwZWN0YXRpb24gZm9y
IGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGw6IG5ldyBTUEkgdG8gc3luY2hyb25vdXNseSBm
bHVzaCBsb2NhbFN0b3JhZ2UgdG8gCisgICAgICAgIGRhdGFiYXNlIGZpbGUuCisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAg
KFdUUjo6VGVzdFJ1bm5lcjo6c3luY0xvY2FsU3RvcmFnZSk6CisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmg6CisKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDogY2xlYXIgbG9jYWwgc3RvcmFnZSBiZXR3ZWVu
IHRlc3QgcnVucyB0byBtYWtlIGVhY2ggdGVzdCBpc29sYXRlZC4KKyAgICAgICAgKFdUUjo6VGVz
dENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMpOgorICAgICAgICAoV1RS
OjpTdG9yYWdlVm9pZENhbGxiYWNrQ29udGV4dDo6U3RvcmFnZVZvaWRDYWxsYmFja0NvbnRleHQp
OgorICAgICAgICAoV1RSOjpTdG9yYWdlVm9pZENhbGxiYWNrKToKKyAgICAgICAgKFdUUjo6VGVz
dENvbnRyb2xsZXI6OmNsZWFySW5kZXhlZERhdGFiYXNlcyk6CisgICAgICAgIChXVFI6OlRlc3RD
b250cm9sbGVyOjpjbGVhckxvY2FsU3RvcmFnZSk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9s
bGVyOjpzeW5jTG9jYWxTdG9yYWdlKToKKyAgICAgICAgKFdUUjo6UmVtb3ZlQWxsSW5kZXhlZERh
dGFiYXNlc0NhbGxiYWNrQ29udGV4dDo6UmVtb3ZlQWxsSW5kZXhlZERhdGFiYXNlc0NhbGxiYWNr
Q29udGV4dCk6IERlbGV0ZWQuIFJlcGxhY2VkCisgICAgICAgIHdpdGggU3RvcmFnZVZvaWRDYWxs
YmFja0NvbnRleHQgZm9yIGdlbmVyYWwgdXNhZ2UuCisgICAgICAgIChXVFI6OlJlbW92ZUFsbElu
ZGV4ZWREYXRhYmFzZXNDYWxsYmFjayk6IERlbGV0ZWQuIFJlcGxhY2VkIHdpdGggU3RvcmFnZVZv
aWRDYWxsYmFjay4KKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OkNsZWFySW5kZXhlZERh
dGFiYXNlcyk6IERlbGV0ZWQuIFVzZSBsb3dlcmNhc2UgZm9yIGNvbnNpc3RlbnQgc3R5bGUuCisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oOgorCisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHA6CisgICAgICAgIChXVFI6OlRlc3RJ
bnZvY2F0aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxl
KTogYWRkIGhhbmRsZXIgZm9yIG5ldyBtZXNzYWdlIAorICAgICAgICBTeW5jTG9jYWxTdG9yYWdl
LgorCiAyMDE5LTA4LTE1ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAog
ICAgICAgICByZXN1bHRzLndlYmtpdC5vcmc6IEFkZCBjb250ZW50IGhvb2sgdG8gRmxhc2tSZXF1
ZXN0c1Jlc3BvbnNlCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0xvY2FsU3RvcmFnZVBlcnNpc3RlbmNlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9Mb2NhbFN0b3JhZ2VQZXJzaXN0ZW5jZS5tbQppbmRleCAxMTU2MmJi
NTY5MzRmNTRkNjNmOTc3YTdiZGUwOWQ5NDM1NDlhYjI3Li41OTJiYzI5ZDExNjY3MzFhYWYwZGY1
ZWY1MjdmZmI3OTk3YTY0OWRjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0xvY2FsU3RvcmFnZVBlcnNpc3RlbmNlLm1tCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTG9jYWxTdG9yYWdlUGVyc2lzdGVuY2UubW0KQEAg
LTEwNCw5ICsxMDQsMTAgQEAgVEVTVChXS1dlYlZpZXcsIExvY2FsU3RvcmFnZVByb2Nlc3NDcmFz
aGVzKQogICAgIH1dOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVhZHlUb0NvbnRp
bnVlKTsKIAorICAgIC8vIElmIG5ldHdvcmsgcHJvY2VzcyBjcmFzaGVzLCBzZXNzaW9uU3RvcmFn
ZSB3b3VsZCBiZSBsb3N0LgogICAgIHJlYWR5VG9Db250aW51ZSA9IGZhbHNlOwogICAgIFt3ZWJW
aWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpAIndpbmRvdy5zZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdz
ZXNzaW9uJykiIGNvbXBsZXRpb25IYW5kbGVyOl4oaWQgcmVzdWx0LCBOU0Vycm9yICopIHsKLSAg
ICAgICAgRVhQRUNUX1RSVUUoW0Aic3RvcmFnZSIgaXNFcXVhbFRvU3RyaW5nOnJlc3VsdF0pOwor
ICAgICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzRXF1YWw6TlNOdWxsLm51bGxdKTsKICAgICAg
ICAgcmVhZHlUb0NvbnRpbnVlID0gdHJ1ZTsKICAgICB9XTsKICAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJnJlYWR5VG9Db250aW51ZSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAppbmRl
eCAxNThkMmY2ZTExMTFhOWNkYzFiNGQzMGVmNzk0YzJmMTliNWVjMTAxLi40MzI5ZWMxNDQzMGY5
MTMwYWFkOWI1ZWRiNWY2Y2Q2YjM2ZTgxNjczIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwK
QEAgLTE0Miw2ICsxNDIsNyBAQCBpbnRlcmZhY2UgVGVzdFJ1bm5lciB7CiAgICAgdm9pZCBjbGVh
ckFsbERhdGFiYXNlcygpOwogICAgIHZvaWQgc2V0RGF0YWJhc2VRdW90YSh1bnNpZ25lZCBsb25n
IGxvbmcgcXVvdGEpOwogICAgIERPTVN0cmluZyBwYXRoVG9Mb2NhbFJlc291cmNlKERPTVN0cmlu
ZyB1cmwpOworICAgIHZvaWQgc3luY0xvY2FsU3RvcmFnZSgpOwogCiAgICAgYXR0cmlidXRlIGRv
dWJsZSBkYXRhYmFzZURlZmF1bHRRdW90YTsKICAgICBhdHRyaWJ1dGUgZG91YmxlIGRhdGFiYXNl
TWF4UXVvdGE7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9UZXN0UnVubmVyLmNwcAppbmRleCAxODYwZjE2OWU1MmFjMTI1OTNmYWVlMGU0NmUyZDA1MDQ4
ZGExNmJkLi41Mjc1NjZkYzNmODRhN2RiNDIyMzM0N2ZkNjFjM2IyNTM4NmU0ZjczIDEwMDY0NAot
LS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3Bw
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5j
cHAKQEAgLTM0Miw2ICszNDIsMTMgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXREYXRhYmFzZVF1b3Rh
KHVpbnQ2NF90IHF1b3RhKQogICAgIHJldHVybiBXS0J1bmRsZVNldERhdGFiYXNlUXVvdGEoSW5q
ZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRsZSgpLCBxdW90YSk7CiB9CiAKK3ZvaWQgVGVz
dFJ1bm5lcjo6c3luY0xvY2FsU3RvcmFnZSgpCit7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdS
ZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygi
U3luY0xvY2FsU3RvcmFnZSIpKTsKKyAgICBXS1JldGFpblB0cjxXS0Jvb2xlYW5SZWY+IG1lc3Nh
Z2VCb2R5ID0gYWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUodHJ1ZSkpOworICAgIFdLQnVuZGxlUG9z
dFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxlKCks
IG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSwgbnVsbHB0cik7Cit9CisKIHZv
aWQgVGVzdFJ1bm5lcjo6Y2xlYXJBbGxBcHBsaWNhdGlvbkNhY2hlcygpCiB7CiAgICAgV0tCdW5k
bGVQYWdlQ2xlYXJBcHBsaWNhdGlvbkNhY2hlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5w
YWdlKCktPnBhZ2UoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvVGVzdFJ1bm5lci5oCmluZGV4IDc1MDkzZDA5MGY0Y2M4ODYwZTkzNTQ3MGQ3NGUyM2Ux
OWRkNmQwMDMuLmY1NzM2ZWFhYThhMzNiZTcxNzhkODczYjljN2IxZTI1MWEzOTExZGMgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5o
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5o
CkBAIC0xNTksNiArMTU5LDcgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJBbGxEYXRhYmFzZXMo
KTsKICAgICB2b2lkIHNldERhdGFiYXNlUXVvdGEodWludDY0X3QpOwogICAgIEpTUmV0YWluUHRy
PEpTU3RyaW5nUmVmPiBwYXRoVG9Mb2NhbFJlc291cmNlKEpTU3RyaW5nUmVmKTsKKyAgICB2b2lk
IHN5bmNMb2NhbFN0b3JhZ2UoKTsKIAogICAgIC8vIEFwcGxpY2F0aW9uIENhY2hlCiAgICAgdm9p
ZCBjbGVhckFsbEFwcGxpY2F0aW9uQ2FjaGVzKCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dENvbnRyb2xsZXIuY3BwCmluZGV4IDhlNzMzYmVlZDgwZDRhMDVlMzVlM2MwZWYzMTJjMzllZjRk
ZDMzNTMuLmVhOGFmYjVmNGVmODRlNGEyZGRmMjg2NGExYWU5Zjc3NWZjZTM3NDcgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC05MzksOSArOTM5LDExIEBA
IGJvb2wgVGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMoY29uc3Qg
VGVzdE9wdGlvbnMmIG9wdGlvbnMsIFJlCiAgICAgYXV0byB3ZWJzaXRlRGF0YVN0b3JlID0gV0tD
b250ZXh0R2V0V2Vic2l0ZURhdGFTdG9yZShUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuY29u
dGV4dCgpKTsKICAgICBXS1dlYnNpdGVEYXRhU3RvcmVDbGVhckFsbERldmljZU9yaWVudGF0aW9u
UGVybWlzc2lvbnMod2Vic2l0ZURhdGFTdG9yZSk7CiAKLSAgICBDbGVhckluZGV4ZWREYXRhYmFz
ZXMoKTsKICAgICBzZXRJREJQZXJPcmlnaW5RdW90YSg1MCAqIE1CKTsKIAorICAgIGNsZWFySW5k
ZXhlZERhdGFiYXNlcygpOworICAgIGNsZWFyTG9jYWxTdG9yYWdlKCk7CisKICAgICBjbGVhclNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zKCk7CiAgICAgY2xlYXJET01DYWNoZXMoKTsKIApAQCAt
MzA2OSw4ICszMDcxLDggQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0SURCUGVyT3JpZ2luUXVv
dGEodWludDY0X3QgcXVvdGEpCiAgICAgV0tDb250ZXh0U2V0SURCUGVyT3JpZ2luUXVvdGEocGxh
dGZvcm1Db250ZXh0KCksIHF1b3RhKTsKIH0KIAotc3RydWN0IFJlbW92ZUFsbEluZGV4ZWREYXRh
YmFzZXNDYWxsYmFja0NvbnRleHQgewotICAgIGV4cGxpY2l0IFJlbW92ZUFsbEluZGV4ZWREYXRh
YmFzZXNDYWxsYmFja0NvbnRleHQoVGVzdENvbnRyb2xsZXImIGNvbnRyb2xsZXIpCitzdHJ1Y3Qg
U3RvcmFnZVZvaWRDYWxsYmFja0NvbnRleHQgeworICAgIGV4cGxpY2l0IFN0b3JhZ2VWb2lkQ2Fs
bGJhY2tDb250ZXh0KFRlc3RDb250cm9sbGVyJiBjb250cm9sbGVyKQogICAgICAgICA6IHRlc3RD
b250cm9sbGVyKGNvbnRyb2xsZXIpCiAgICAgewogICAgIH0KQEAgLTMwNzksMTggKzMwODEsMzcg
QEAgc3RydWN0IFJlbW92ZUFsbEluZGV4ZWREYXRhYmFzZXNDYWxsYmFja0NvbnRleHQgewogICAg
IGJvb2wgZG9uZSB7IGZhbHNlIH07CiB9OwogCi1zdGF0aWMgdm9pZCBSZW1vdmVBbGxJbmRleGVk
RGF0YWJhc2VzQ2FsbGJhY2sodm9pZCogdXNlckRhdGEpCitzdGF0aWMgdm9pZCBTdG9yYWdlVm9p
ZENhbGxiYWNrKHZvaWQqIHVzZXJEYXRhKQogewotICAgIGF1dG8qIGNvbnRleHQgPSBzdGF0aWNf
Y2FzdDxSZW1vdmVBbGxJbmRleGVkRGF0YWJhc2VzQ2FsbGJhY2tDb250ZXh0Kj4odXNlckRhdGEp
OworICAgIGF1dG8qIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxTdG9yYWdlVm9pZENhbGxiYWNrQ29u
dGV4dCo+KHVzZXJEYXRhKTsKICAgICBjb250ZXh0LT5kb25lID0gdHJ1ZTsKICAgICBjb250ZXh0
LT50ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6
OkNsZWFySW5kZXhlZERhdGFiYXNlcygpCit2b2lkIFRlc3RDb250cm9sbGVyOjpjbGVhckluZGV4
ZWREYXRhYmFzZXMoKQoreworICAgIGF1dG8gd2Vic2l0ZURhdGFTdG9yZSA9IFdLQ29udGV4dEdl
dFdlYnNpdGVEYXRhU3RvcmUocGxhdGZvcm1Db250ZXh0KCkpOworICAgIFN0b3JhZ2VWb2lkQ2Fs
bGJhY2tDb250ZXh0IGNvbnRleHQoKnRoaXMpOworICAgIFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92
ZUFsbEluZGV4ZWREYXRhYmFzZXMod2Vic2l0ZURhdGFTdG9yZSwgJmNvbnRleHQsIFN0b3JhZ2VW
b2lkQ2FsbGJhY2spOworICAgIHJ1blVudGlsKGNvbnRleHQuZG9uZSwgbm9UaW1lb3V0KTsKK30K
Kwordm9pZCBUZXN0Q29udHJvbGxlcjo6Y2xlYXJMb2NhbFN0b3JhZ2UoKQogewogICAgIGF1dG8g
d2Vic2l0ZURhdGFTdG9yZSA9IFdLQ29udGV4dEdldFdlYnNpdGVEYXRhU3RvcmUocGxhdGZvcm1D
b250ZXh0KCkpOwotICAgIFJlbW92ZUFsbEluZGV4ZWREYXRhYmFzZXNDYWxsYmFja0NvbnRleHQg
Y29udGV4dCgqdGhpcyk7Ci0gICAgV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlQWxsSW5kZXhlZERh
dGFiYXNlcyh3ZWJzaXRlRGF0YVN0b3JlLCAmY29udGV4dCwgUmVtb3ZlQWxsSW5kZXhlZERhdGFi
YXNlc0NhbGxiYWNrKTsKKyAgICBTdG9yYWdlVm9pZENhbGxiYWNrQ29udGV4dCBjb250ZXh0KCp0
aGlzKTsKKyAgICBXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVMb2NhbFN0b3JhZ2Uod2Vic2l0ZURh
dGFTdG9yZSwgJmNvbnRleHQsIFN0b3JhZ2VWb2lkQ2FsbGJhY2spOworICAgIHJ1blVudGlsKGNv
bnRleHQuZG9uZSwgbm9UaW1lb3V0KTsKKworICAgIFN0b3JhZ2VWb2lkQ2FsbGJhY2tDb250ZXh0
IGxlZ2FjeUNvbnRleHQoKnRoaXMpOworICAgIFdLQ29udGV4dENsZWFyTGVnYWN5UHJpdmF0ZUJy
b3dzaW5nTG9jYWxTdG9yYWdlKHBsYXRmb3JtQ29udGV4dCgpLCAmbGVnYWN5Q29udGV4dCwgU3Rv
cmFnZVZvaWRDYWxsYmFjayk7CisgICAgcnVuVW50aWwobGVnYWN5Q29udGV4dC5kb25lLCBub1Rp
bWVvdXQpOworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpzeW5jTG9jYWxTdG9yYWdlKCkKK3sK
KyAgICBTdG9yYWdlVm9pZENhbGxiYWNrQ29udGV4dCBjb250ZXh0KCp0aGlzKTsKKyAgICBXS0Nv
bnRleHRTeW5jTG9jYWxTdG9yYWdlKHBsYXRmb3JtQ29udGV4dCgpLCAmY29udGV4dCwgU3RvcmFn
ZVZvaWRDYWxsYmFjayk7CiAgICAgcnVuVW50aWwoY29udGV4dC5kb25lLCBub1RpbWVvdXQpOwog
fQogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKaW5kZXggYjk1Y2VhMzU0
NTZlZTJjOTkwMzdmZjhmZmE0MWVkNDBkY2MyYWFkYi4uYTVhZTU2ZWQ2ODk3NTc4OGRiMWQwM2Y5
NWRhMDY2OTFlNDk5MTUzNiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIu
aApAQCAtMjYyLDcgKzI2Miw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVtb3ZlQWxsU2Vzc2lv
bkNyZWRlbnRpYWxzKCk7CiAKLSAgICB2b2lkIENsZWFySW5kZXhlZERhdGFiYXNlcygpOworICAg
IHZvaWQgY2xlYXJJbmRleGVkRGF0YWJhc2VzKCk7CisgICAgdm9pZCBjbGVhckxvY2FsU3RvcmFn
ZSgpOworICAgIHZvaWQgc3luY0xvY2FsU3RvcmFnZSgpOwogCiAgICAgdm9pZCBjbGVhclNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25zKCk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdEludm9jYXRpb24uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52
b2NhdGlvbi5jcHAKaW5kZXggMjhhZDFlZDg4YTYzZjdiZDZhZjFkZDU5OWFiZjIwMDYzNDg2ZWZm
Yi4uYTVhZWEyMWMwOTAwMDU5ZTc5ZmE3ZDEyYmZhMTVmZDgxOWQxNmI2YSAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKQEAgLTE2NjYsNiArMTY2NiwxMSBAQCBX
S1JldGFpblB0cjxXS1R5cGVSZWY+IFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlU3luY2hyb25v
dXNNZXNzYWdlRnJvbUluamVjdGVkQgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAK
KyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlN5bmNM
b2NhbFN0b3JhZ2UiKSkgeworICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuc3lu
Y0xvY2FsU3RvcmFnZSgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyNTIz
NGM1NTMxZjAxYTVkZjkyMTJjYzNkZDM3MDlhZTRhZTk1NmZhLi45ZDdjM2VhODBjZTM3Y2UxOWVi
N2FhMWJkYWJkZWQyMDQ5ZmIzN2JjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTktMDgtMTUg
IFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgU29tZSBpbXByb3Zl
bWVudHMgb24gd2ViIHN0b3JhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwMDM3MworCisgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVu
LgorIAorICAgICAgICBNb2RpZnkgdGVzdHMgZm9yIGEgYmVoYXZpb3IgY2hhbmdlOiBzZXNzaW9u
U3RvcmFnZSB3aWxsIGJlIGxvc3Qgd2hlbiBuZXR3b3JrIHByb2Nlc3MgY3Jhc2hlcy4KKworICAg
ICAgICBGb3IgdGVzdHMgd2hpY2ggdXNlIHNlc3Npb25TdG9yYWdlIHRvIHN0b3JlIGl0ZW1zLCBj
cmFzaCBuZXR3b3JrIHByb2Nlc3MsIHRoZW4gcmVhZCBmcm9tIHNlc3Npb25TdG9yYWdlIGFuZCAK
KyAgICAgICAgZXhwZWN0IGl0ZW1zIHRvIGJlIGluIHNlc3Npb25TdG9yYWdlLCByZXBsYWNlIHNl
c3Npb25TdG9yYWdlIHdpdGggbG9jYWxTdG9yYWdlLiBBbHNvLCB0byBtYWtlIHN1cmUgbG9jYWxT
dG9yYWdlCisgICAgICAgIGlzIHN0b3JlZCBwZXJzaXN0ZW50bHkgYmVmb3JlIG5ldHdvcmsgcHJv
Y2VzcyBnZXRzIHRlcm1pbmF0ZWQsIGFkb3B0IGEgbmV3bHkgaW50cm9kdWNlZCBTUEkgdG8gCisg
ICAgICAgIHN5bmNocm9ub3VzbHkgZmx1c2ggbG9jYWxTdG9yYWdlIGNvbnRlbnQgdG8gZGlzayBi
ZWZvcmUgdGVybWluYXRpbmcgbmV0d29yayBwcm9jZXNzLgorCisgICAgICAgICogcGxhdGZvcm0v
aW9zLXNpbXVsYXRvci13azIvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS9t
YWMtd2syL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogc3RvcmFnZS9kb21zdG9yYWdlL2xv
Y2Fsc3RvcmFnZS9wcml2YXRlLWJyb3dzaW5nLWFmZmVjdHMtc3RvcmFnZS1leHBlY3RlZC50eHQ6
CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvSURCT2JqZWN0LWxlYWsuaHRtbDoKKyAgICAg
ICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vb3BlbmRhdGFiYXNlLWFmdGVyLXN0b3JhZ2Ut
Y3Jhc2gtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9v
cGVuZGF0YWJhc2UtYWZ0ZXItc3RvcmFnZS1jcmFzaC5odG1sOgorCiAyMDE5LTA4LTE1ICBBbnR0
aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBOZWdhdGl2ZSBzaXplIGJv
eCB3aXRoIGJvcmRlciByYWRpdXMgY2F1c2VzIGhhbmcgdW5kZXIgV2ViQ29yZTo6YXBwcm94aW1h
dGVBc1JlZ2lvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXNpbXVsYXRv
ci13azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy1zaW11bGF0
b3Itd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggOWU4NjY2YWNlZjE2ODM4MjVkNzUzODYyMWMx
YzlmODk0ZTBiNTEzZi4uOTc0OTc3YTI1ZmNmMWZkOWU1NzdlMzNmODVmYTVhZmQwNGJhZmNhMiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXNpbXVsYXRvci13azIvVGVzdEV4
cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yLXdrMi9U
ZXN0RXhwZWN0YXRpb25zCkBAIC02Niw3ICs2Niw3IEBAIGh0dHAvd3B0L2NhY2hlLXN0b3JhZ2Uv
Y2FjaGUtcHV0LWtleXMuaHR0cHMuYW55Lndvcmtlci5odG1sIFsgU2xvdyBdCiBodHRwL3dwdC9j
YWNoZS1zdG9yYWdlL2EtY2FjaGUtb3Blbi5odHRwcy5odG1sIFsgU2xvdyBdCiBodHRwL3dwdC9j
YWNoZS1zdG9yYWdlL2NhY2hlLXF1b3RhLWFkZC5hbnkuaHRtbCBbIFNsb3cgXQogCi13ZWJraXQu
b3JnL2IvMTk2Mzc2IFsgRGVidWcgXSBzdG9yYWdlL2RvbXN0b3JhZ2UvbG9jYWxzdG9yYWdlL3By
aXZhdGUtYnJvd3NpbmctYWZmZWN0cy1zdG9yYWdlLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQord2Vi
a2l0Lm9yZy9iLzE5NjM3NiBbIERlYnVnIF0gc3RvcmFnZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFn
ZS9wcml2YXRlLWJyb3dzaW5nLWFmZmVjdHMtc3RvcmFnZS5odG1sIFsgUGFzcyBdCiAKIHdlYmtp
dC5vcmcvYi8xOTY0MDMgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYWNhcHR1
cmUtcmVjb3JkL01lZGlhUmVjb3JkZXItc3RvcC5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDZhODI3
MGY3ZTk5YTBhYjQ0YjU0MzkyMjE0NDgyYjdmYTc1NWVmNjEuLmQyMmQ3ODdkODg0YTU5NjQwNGIx
ZDNlMGNmZDAxNzNmMjI0YzRhNDggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy13azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sy
L1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTkyMiw3ICs5MjIsNyBAQCB3ZWJraXQub3JnL2IvMTk0ODI2
IGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9kby1ub3QtYmxvY2stdG9wLWxldmVs
LW5hdgogCiB3ZWJraXQub3JnL2IvMTk0OTE2IGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0t
dmlkZW8tZWxlbWVudC5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzE5NjM3
NiBzdG9yYWdlL2RvbXN0b3JhZ2UvbG9jYWxzdG9yYWdlL3ByaXZhdGUtYnJvd3NpbmctYWZmZWN0
cy1zdG9yYWdlLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzE5NjM3NiBzdG9y
YWdlL2RvbXN0b3JhZ2UvbG9jYWxzdG9yYWdlL3ByaXZhdGUtYnJvd3NpbmctYWZmZWN0cy1zdG9y
YWdlLmh0bWwgWyBQYXNzIF0KIAogd2Via2l0Lm9yZy9iLzE5NjQwMCBmYXN0L21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtVHJhY2stZ2V0U2V0dGluZ3MuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvZG9tc3RvcmFnZS9sb2NhbHN0b3JhZ2UvcHJp
dmF0ZS1icm93c2luZy1hZmZlY3RzLXN0b3JhZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFnZS9wcml2YXRlLWJyb3dzaW5nLWFmZmVjdHMt
c3RvcmFnZS1leHBlY3RlZC50eHQKaW5kZXggMmNhOTU1NzUwMjdmYWI4OWFiZWI0NjdiMzgwNWMy
MDYwNWRmZmJkMS4uZjk4NDBkZWI1MzBiZTFjMTU1YWQ4ZGVmNWE1OGM4MGZjNjYxZDAyNyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFnZS9wcml2
YXRlLWJyb3dzaW5nLWFmZmVjdHMtc3RvcmFnZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFnZS9wcml2YXRlLWJyb3dzaW5nLWFmZmVj
dHMtc3RvcmFnZS1leHBlY3RlZC50eHQKQEAgLTgsNyArOCw3IEBAIEFMRVJUOiBsb2NhbFN0b3Jh
Z2UncyBsZW5ndGggaXM6IDEKIEFMRVJUOiBUaGUgaXRlbSBpbiBuZXcgd2luZG93IHN0YXJ0cyBv
dXQgYXM6IENoYW5nZWRWYWx1ZQogQUxFUlQ6IFRoZSBpdGVtIGluIG5ldyB3aW5kb3cgaXMgbm93
OiBOZXdXaW5kb3dWYWx1ZQogQUxFUlQ6IEJhY2sgaW4gcGFyZW50IHdpbmRvdywgbG9jYWxTdG9y
YWdlJ3MgbGVuZ3RoIGlzOiAxCi1BTEVSVDogQmFjayBpbiBwYXJlbnQgd2luZG93LCB0ZXN0SXRl
bSBpczogQ2hhbmdlZFZhbHVlCitBTEVSVDogQmFjayBpbiBwYXJlbnQgd2luZG93LCB0ZXN0SXRl
bSBpczogTmV3V2luZG93VmFsdWUKIEFMRVJUOiBGaW5hbCB3aW5kb3csIGxvY2FsU3RvcmFnZSdz
IGxlbmd0aCBpczogMQogQUxFUlQ6IEZpbmFsIHdpbmRvdywgaXRlbSBpczogUGVyc2lzdGVudCBp
dGVtIQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9JREJPYmpl
Y3QtbGVhay5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvSURCT2JqZWN0LWxl
YWsuaHRtbAppbmRleCBlMThiNjhiOTFhYzdmNjE5NWExZTFlMTExYWY0Y2FkMDNiODYzYzU3Li42
YWE4YWI2MTAzODIzYjdjOTdiZmE3N2VmNTU2ZDgxOWM5YWFhMGNjIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9JREJPYmplY3QtbGVhay5odG1sCisrKyBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL0lEQk9iamVjdC1sZWFrLmh0bWwKQEAgLTEzLDcgKzEz
LDcgQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlm
IChzZXNzaW9uU3RvcmFnZS5kb25lRmlyc3RMb2FkKSB7CisgICAgaWYgKGxvY2FsU3RvcmFnZS5k
b25lRmlyc3RMb2FkKSB7CiAgICAgICAgIGdjKCk7CiAgICAgICAgIHNob3VsZEJlRXF1YWxUb051
bWJlcigiaW50ZXJuYWxzLm51bWJlck9mSURCVHJhbnNhY3Rpb25zKCkiLCAwKTsKICAgICAgICAg
ZmluaXNoSlNUZXN0KCk7CkBAIC0yMywxNiArMjMsMjEgQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAg
ICB2YXIgZGJuYW1lID0gc2V0REJOYW1lRnJvbVBhdGgoKSArIERhdGUoKTsKICAgICB2YXIgcmVx
dWVzdCA9ICB3aW5kb3cuaW5kZXhlZERCLm9wZW4oZGJuYW1lKTsKICAgICByZXF1ZXN0Lm9udXBn
cmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2dCkgewotICAgICAgICBzZXNzaW9uU3RvcmFnZS5kb25l
Rmlyc3RMb2FkID0gdHJ1ZTsKKyAgICAgICAgbG9jYWxTdG9yYWdlLmRvbmVGaXJzdExvYWQgPSB0
cnVlOwogICAgICAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyIHx8ICF0ZXN0UnVubmVyLnRlcm1p
bmF0ZU5ldHdvcmtQcm9jZXNzKSB7CiAgICAgICAgICAgICB0ZXN0RmFpbGVkKCdUaGlzIHRlc3Qg
cmVxdWlyZXMgYWNjZXNzIHRvIHRoZSBUZXN0UnVubmVyIG9iamVjdCBhbmQgdGVybWluYXRlTmV0
d29ya1Byb2Nlc3MoKSBmdW5jdGlvbicpOwogICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0gCisKKyAgICAgICAgLy8gTWFrZSBzdXJlIGxv
Y2FsU3RvcmFnZSBpcyBmbHVzaGVkIHRvIGRpc2sgYmVmb3JlIGNyYXNoaW5nIG5ldHdvcmsgcHJv
Y2Vzcy4KKyAgICAgICAgdGVzdFJ1bm5lci5zeW5jTG9jYWxTdG9yYWdlKCk7CiAgICAgICAgIHRl
c3RSdW5uZXIudGVybWluYXRlTmV0d29ya1Byb2Nlc3MoKTsKLSAgICAgICAgc2V0VGltZW91dCgo
KCk9PiB7Ci0gICAgICAgICAgICBsb2NhdGlvbi5yZWxvYWQoKTsKLSAgICAgICAgfSksIDApOwor
ICAgICAgICBldnQudGFyZ2V0LnJlc3VsdC5vbmVycm9yID0gZnVuY3Rpb24oZSkgeworICAgICAg
ICAgICAgc2V0VGltZW91dCgoKCk9PiB7CisgICAgICAgICAgICAgICAgbG9jYXRpb24ucmVsb2Fk
KCk7CisgICAgICAgICAgICB9KSwgMCk7CisgICAgICAgIH0KICAgICB9CiB9CiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9vcGVuZGF0YWJhc2UtYWZ0
ZXItc3RvcmFnZS1jcmFzaC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9tb2Rlcm4vb3BlbmRhdGFiYXNlLWFmdGVyLXN0b3JhZ2UtY3Jhc2gtZXhwZWN0ZWQudHh0
CmluZGV4IDQ3Yjg3MjdhOTM5NWI1ZDNjNGEzZDNmMWE2YTBkZTFlODE2NTk0OWIuLmY5OTc4YTAy
NDRmMWQwYTY3YjRkYzFmNThkZDIxYzFlZDE1OGNmNGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9vcGVuZGF0YWJhc2UtYWZ0ZXItc3RvcmFnZS1jcmFz
aC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJu
L29wZW5kYXRhYmFzZS1hZnRlci1zdG9yYWdlLWNyYXNoLWV4cGVjdGVkLnR4dApAQCAtMSwyICsx
LDIgQEAKLVBBU1Mgc2Vzc2lvblN0b3JhZ2Vbc3RvcmFnZUtleV0gaXMgIk1hZGUgaXQiCitQQVNT
IGxvY2FsU3RvcmFnZVtzdG9yYWdlS2V5XSBpcyAiTWFkZSBpdCIKIFN1Y2Nlc3NmdWxseSBvcGVu
ZWQgZGF0YWJhc2Ugd2l0aCB2ZXJzaW9uIDMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9tb2Rlcm4vb3BlbmRhdGFiYXNlLWFmdGVyLXN0b3JhZ2UtY3Jhc2guaHRt
bCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9vcGVuZGF0YWJhc2UtYWZ0
ZXItc3RvcmFnZS1jcmFzaC5odG1sCmluZGV4IGQyNDU4ZjZhMjk4YjM0MTA3YTRiOGQwZWY2N2Jj
NjQyM2QyZGEwZGYuLjlhMDkxMmVmMTVjN2I4NDdlOWYzZDkwMTMzZTIwN2EyZDMxMTI1OGIgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9vcGVuZGF0YWJh
c2UtYWZ0ZXItc3RvcmFnZS1jcmFzaC5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL21vZGVybi9vcGVuZGF0YWJhc2UtYWZ0ZXItc3RvcmFnZS1jcmFzaC5odG1sCkBAIC0y
MCwzMSArMjAsMzEgQEAgZnVuY3Rpb24gY29udGludWVUZXN0KCkKIAlyZXF1ZXN0Lm9uZXJyb3Ig
PSBmdW5jdGlvbihlKSB7CiAJCS8vIEdvb2QsIHdlIHJlY2VpdmVkIGFuIGV4cGVjdGVkIGVycm9y
LgogCQkvLyBOb3cgcmVsb2FkIHRvIHNlZSBpZiBhIG5ldyBkb2N1bWVudCBjb25uZWN0cyBzdWNj
ZXNzZnVsbHkKLQkJaWYgKHNlc3Npb25TdG9yYWdlW3N0b3JhZ2VLZXldKSB7CisJCWlmIChsb2Nh
bFN0b3JhZ2Vbc3RvcmFnZUtleV0pIHsKIAkJCWRvY3VtZW50LmJvZHkuaW5uZXJIVE1MID0gIlJl
Y2VpdmVkIGVycm9yIG1vcmUgdGhhbiBvbmNlIHVuZXhwZWN0ZWRseS4gRGF0YWJhc2U6IG5hbWUg
IiArIGRibmFtZSArICIsIHZlcnNpb24gMi4iOwogCQkJaWYgKHdpbmRvdy50ZXN0UnVubmVyKQog
CQkJCXRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogCQkJcmV0dXJuOwogCQl9CiAKLQkJc2Vzc2lv
blN0b3JhZ2Vbc3RvcmFnZUtleV0gPSAiTWFkZSBpdCI7CisJCWxvY2FsU3RvcmFnZVtzdG9yYWdl
S2V5XSA9ICJNYWRlIGl0IjsKIAkJbG9jYXRpb24ucmVsb2FkKCk7CiAJfQogCiAJcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBmdW5jdGlvbihlKSB7Ci0JCWRvY3VtZW50LmJvZHkuaW5uZXJIVE1MID0gIlVu
ZXhwZWN0ZWQgdXBncmFkZW5lZWRlZCBhZnRlciBzdG9yYWdlIHByb2Nlc3MgdGVybWluYXRpb24u
IERhdGFiYXNlOiBuYW1lICIgKyBkYm5hbWUgKyAiLCB2ZXJzaW9uIDIuIFNlc3Npb25TdG9yYWdl
IHZhbHVlOiAiICsgc2Vzc2lvblN0b3JhZ2Vbc3RvcmFnZUtleV0gKyAiLiI7CisJCWRvY3VtZW50
LmJvZHkuaW5uZXJIVE1MID0gIlVuZXhwZWN0ZWQgdXBncmFkZW5lZWRlZCBhZnRlciBzdG9yYWdl
IHByb2Nlc3MgdGVybWluYXRpb24uIERhdGFiYXNlOiBuYW1lICIgKyBkYm5hbWUgKyAiLCB2ZXJz
aW9uIDIuIGxvY2FsU3RvcmFnZSB2YWx1ZTogIiArIHNlc3Npb25TdG9yYWdlW3N0b3JhZ2VLZXld
ICsgIi4iOwogCQlpZiAod2luZG93LnRlc3RSdW5uZXIpCiAJCQl0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKIAl9CiB9CiAKLXZhciB2ZXJzaW9uVG9PcGVuID0gc2Vzc2lvblN0b3JhZ2UuZG9uZUZp
cnN0TG9hZCA/IDMgOiAxOwordmFyIHZlcnNpb25Ub09wZW4gPSBsb2NhbFN0b3JhZ2UuZG9uZUZp
cnN0TG9hZCA/IDMgOiAxOwogdmFyIHJlcXVlc3QgPSB3aW5kb3cuaW5kZXhlZERCLm9wZW4oZGJu
YW1lLCB2ZXJzaW9uVG9PcGVuKTsKIAogcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlv
bihlKSB7Ci0JaWYgKHNlc3Npb25TdG9yYWdlLmRvbmVGaXJzdExvYWQpIHsKKwlpZiAobG9jYWxT
dG9yYWdlLmRvbmVGaXJzdExvYWQpIHsKIAkJZG9jdW1lbnQuYm9keS5pbm5lckhUTUwgPSAiU3Vj
Y2Vzc2Z1bGx5IG9wZW5lZCBkYXRhYmFzZSB3aXRoIHZlcnNpb24gIiArIHZlcnNpb25Ub09wZW4g
KyAiLiI7Ci0JCXNob3VsZEJlRXF1YWxUb1N0cmluZygnc2Vzc2lvblN0b3JhZ2Vbc3RvcmFnZUtl
eV0nLCAnTWFkZSBpdCcpOworCQlzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2xvY2FsU3RvcmFnZVtz
dG9yYWdlS2V5XScsICdNYWRlIGl0Jyk7CiAKIAkJaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiAJ
CQl0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKQEAgLTUyLDcgKzUyLDcgQEAgcmVxdWVzdC5vbnVw
Z3JhZGVuZWVkZWQgPSBmdW5jdGlvbihlKSB7CiAJCX0KIAl9CiAKLQlzZXNzaW9uU3RvcmFnZS5k
b25lRmlyc3RMb2FkID0gdHJ1ZTsKKwlsb2NhbFN0b3JhZ2UuZG9uZUZpcnN0TG9hZCA9IHRydWU7
CiAKIAkvLyBTZXQgYW4gZXJyb3IgaGFuZGxlciBvbiB0aGUgZGF0YWJhc2UgY29ubmVjdGlvbiBz
byBvbmNlIHRoZSBzdG9yYWdlIHByb2Nlc3MgdGVybWluYXRlcyB3ZSBrbm93IHRvIGNvbnRpbnVl
IHRoZSB0ZXN0CiAJZS50YXJnZXQucmVzdWx0Lm9uZXJyb3IgPSBmdW5jdGlvbihlKSB7CkBAIC02
MSw2ICs2MSw4IEBAIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZSkgewogCiAJ
aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiAJCXRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwor
CQkvLyBNYWtlIHN1cmUgbG9jYWxTdG9yYWdlIGlzIGZsdXNoZWQgdG8gZGlzayBiZWZvcmUgY3Jh
c2hpbmcgbmV0d29yayBwcm9jZXNzLgorCQl0ZXN0UnVubmVyLnN5bmNMb2NhbFN0b3JhZ2UoKTsK
IAkJdGVzdFJ1bm5lci50ZXJtaW5hdGVOZXR3b3JrUHJvY2VzcygpOwogCX0KIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>